RSA-PlugIn und -Chat

    • Offizieller Beitrag

    Hallo Leute!

    Es gibt mal wieder etwas neues von mir. Im Rahmen meiner Facharbeit habe ich mich mit der RSA-Verschlüsselung beschäftigt. Wen die Grundlagen interessieren, kann sich dazu bei Wikipedia ganz gut informieren.
    Ich habe in C++ eine Umsetzung dieser Verschlüsselung programmiert. Es ist zwar noch langsam (für C++-Verhältnisse und daran will ich noch arbeiten), dafür ist es in der Größe der Zahlen nicht beschränkt (dafür danke an William A. Rossi und Alex Vinokur für ihre entsprechende Bibliothek).
    Dieses C++-Programm habe ich in ein AutoIt-PlugIn umgebaut, sodass man nun in jeder AutoIt-Anwendung darauf zurückgreifen kann. Dabei gilt mein besonderer Dank "JSThePatriot" aus dem englischen Forum, der mir das PlugIn-SDK als C++-Projekt zur Verfügung gestellt und bei Problemen geholfen hat.
    Als erstes Beispiel mit dieser Technologie hat GtaSpider (danke an ihn!) einen einfachen Chat entwickelt, der aber alle nötigen Funktionen zur Verfügung stellt, um verschlüsselt zu kommunizieren.

    Die DLL bietet folgende Funktionen:
    RSA_GenerateKeys (bitlength, keyfolder, keyname)
    RSA_Encrypt (string, keyfile)
    RSA_Decrypt (string, keyfile)

    Ich würde euch bitten, den Chat kurz zu testen und uns Feedback zu geben, ob es soweit funktioniert. Die Veröffentlichung hier ist zunächst quasi exklusiv, ich plane, es erst im englischen Forum zu veröffentlichen, wenn mögliche Bugs beseitigt und evtl. ein Teil der Verbesserungen eingebaut sind.
    Deshalb fehlt auch noch ein Großteil der Fehlerbehandlung sowohl im PlugIn als auch im Skript. Es ist beispielsweise nicht möglich, ASCII-Zeichen > 127 zu verwenden (u.a. äöü).

    Ich freue mich auf euer Feedback,
    peethebee

    Edit: neue Version.
    Edit: neue Version mit Fixes von Gta und mir.
    Edit: neue Version "hybrid", die deutlich schneller ist und nur zur Schlüsselverhandlung RSA einsetzt.

  • hehe :)

    die funktion selbst geht super :klatschen:

    eine kleinigkeit habe ich bemerkt.

    wenn der chat von irgend einer seite mal geschlossen wird, müssen beide seiten ihn erneut starten.

    Doktore

  • test mit der version 3 vom "RSA-PlugIn und -Chat"

    also von der server seite geht es jetzt einfach super :)
    wenn man das jetzt auch noch client seitig so einbauen kann, wäre noch mal ein grosser schritt getan :)

    und als "i" düpfelchen wäre noch, das man mit mehreren client's auf den server connecten kann.

    das aber nicht all zu leicht sein wird, da ja beim schreiben der server nicht weis an wenn es senden soll.

    dazu hätte ich den zwei vorschläge:

    1:

    Code
    das er dann an alle sendet (sollte einfacher gehen)

    2:

    Code
    das man mit der maus im linken fenster die IP anklickt und das dann der send an dieser IP geht  ;-)

    Doktore

    Einmal editiert, zuletzt von Dr.Galvany (28. Januar 2007 um 09:52)

  • Bekomme den Client nicht zum laufen

    Fehler Meldung in den Zeilen:

    \Client.au3(32,166) : ERROR: RSA_GenerateKeys(): undefined function.
    If (Not FileExists("C:\client.privkey")) Or (Not FileExists("C:\client.pubkey")) Then RSA_GenerateKeys (InputBox("Bitlength", "Key bitlength", "50"), "C:\", "client")

    \Client.au3(149,76) : ERROR: RSA_Encrypt(): undefined function.
    $sBuf &= RSA_Encrypt (StringMid($sText, $i, 4), $sKeyFileName & ".pubkey")

    \Client.au3(164,67) : ERROR: RSA_Decrypt(): undefined function.
    $sBuf &= RSA_Decrypt ($sSs[$i] & "#", $sKeyFileName & ".privkey")

    Einmal editiert, zuletzt von mausilein (28. Januar 2007 um 12:50)

    • Offizieller Beitrag

    Hi!

    Füge oben folgende Zeile ein:

    [autoit]

    #compiler_plugin_funcs = RSA_GenerateKeys, RSA_Encrypt, RSA_Decrypt

    [/autoit]


    Wird in der nächsten Version drin sein. Du kannst aber auch einfach Continue machen, das sollte auch gehen.

    peethebee

    • Offizieller Beitrag

    Das sind Anweiseungen an den Au3Wraper. Der steuert den Syntaxcheck, das Ausführen und das Kompilieren der Skripte.
    In diesem Fall wird für den Syntaxcheck mitgeteilt, dass die Funktionen aus dem PlugIn kommen, was der Wrapper nicht wissen bzw. herausfinden kann. Somit verschwinden die unberechtigten Fehlermeldungen.

    Funktioniert es jetzt bei dir?

    peethebee

  • danke

    ein weitere Frage

    für was ist die ResHacker.exe notwendig. ohne diese läst es sich das Script nicht benutzten ansonsten funktioniert alles.

    sehr gutes Beispiel damit lassen sich sehr viele Informationen für andere Projekte gewinnen.

    Sehr gute Arbeit von allen Beteiligten.

  • Tag Leute


    Also das teil was ihr geschrieben habt gefällt mir.

    Gut gemacht [Blockierte Grafik: http://www.comicguide.net/images/smilies/tatschel.gif]

    man könnte doch jetzt praktisch ein Programm entwickeln (natürlich ihr weil ichs ni kann :D) das Dateien oder Zeichen oda so verschlüsselt übers Inet übermittelt?!

    Wie hoch is da jetzt die Wahrscheinlichkeit, dass man das einsehen und entschlüsseln kann von aussen?

    Carsten

    Flensburg ist wie Payback - wenn man 18 Punkte hat bekommt man ein Fahrrad.

    • Offizieller Beitrag

    Hi!

    Zeichen werden ja schon verschlüsselt übermittelt.
    Dateien müsste auch gehen, da muss ich mich in C++ mal drum kümmern.

    Sicherheit ... nun:
    RSA ist eines der sichersten bekannte Verschlüsselungsverfahren. Es muss zu keinem Zeitpunkt der Schlüssel über die Leitung übertragen werden.
    Je größer man den Schlüssel wählt, desto schwerer wird das Knacken. Bei Schlüsseln von > 1024 Bit ist es im Moment praktisch unmöglich, an die Nachricht zu kommen. Theoretisch geht das mit meinem PlugIn schon, aber im Moment reicht die Performance nur für ~256 Bit (was auf meinem Laptop schon 15 Stunden Entschlüsselung benötigte). Ich versuche das noch zu verbessern.
    Es kann natürlich sein, dass ich in der Implementierung Fehler gemacht habe. Das Problem, dass meine Zufallszahlen aus einem zu engen Bereich waren, sollte behoben sein, das werde ich noch mal checken. Auch meinen Primzahltest muss ich noch mal überarbeiten, weil ich gerne Solovay-Strassen oder Miller-Rabin statt Fermat hätte, es aber noch nicht hinbekommen habe bisher.

    peethebee

  • Hallo, ich beschäftige mich momentan mit RSA, OpenSSL, Verschlüsselung etc. und bin dabei, ein Programm was alle möglichen Aktionen ausführen kann in AutoIt zu schreiben(hoffe das ich es bald hier - zumindest schon in teilen - veröffentlichen kann). Momentan bastel ich dafür die Befehle mit OpenSSL zusammen, aber mit so einem Plugin ginge es natürlich viel leichter. Meine Fragen:

    1. Kann man das PlugIn auch zum signieren benutzen?
    2. Könntest du den Quellcode zur Verfügung stellen?