Crypt.au3 RSA

  • Hi, habe erstmal eine allgemeine Frage zur Crypt include.

    Läuft die verschlüsslung über eine dll, und kann sie 4 kerne ausnutzen?

    Dann interessiere ich mich für RSA, und da gibt es für mich ein Problem.
    Es gibt 2 variablen die mich interessieren:
    $PROV_RSA_FULL
    $PROV_RSA_AES

    Ich schätze mal, dass FULL langsamer ist.
    Ist RSA_AES dann viel unsicherer?
    Wieviel Bit haben die Schlüssel für die beiden?

    Dann zur ausführung:
    Muss ich immer vorher mit _Crypt_DeriveKey einen Schlüssel erstellen, oder passiert das automatisch wenn ich _Crypt_EncryptData nehme?

    Was ich überhaupt nicht verstehe ist folgendes:
    Bei verschlüsslungen ist es ja so, dass man beim encrypten einen schlüssel verwendet, und diesen dann auch zum Netschlüsseln braucht. Den sucht man sich ja aus und fügt ihn bei $vCryptKey ein.

    _Crypt_EncryptData($vData, $vCryptKey, $iALG_ID, $fFinal = True) erlaubt auch nur einen schlüssel, soweit ich weiß muss man sich aber schon vor der VERschlüsslung BEIDE Keys ausdenken.
    Wie macht man das da? Habe im Internet nichts gefunden.

    MfG, MAB_Commander

  • Die Crpyt.au3 kann kein RSA.

    Die zwei Variablen die du meinst sind nur dazu da das ganze zu Windows 2000 kopatiebel zu machen:

    Zitat

    To provide backwards compatibility with Windows 2000 it will use the PROV_RSA_FULL provider for Win2000 and PROV_RSA_AES for windows xp and higher

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Achso, das ist mist.
    Gibt es vielleicht irgendeine andere methode, nach RSA zu verschlüsseln?
    Habe schon das halbe internet durchforstet.

  • ^^
    Danke, aber das hatte ich bereits gefunden.
    1. Die Dll ist uralt, und funktioniert nicht richtig
    2. peethebee sagt, dass diese dll langsam und nicht gut ist.

  • I know, aber das ist das einzige was aktuell existiert.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Die Crpyt.au3 kann kein RSA.

    Die zwei Variablen die du meinst sind nur dazu da das ganze zu Windows 2000 kopatiebel zu machen:


    Die Crypt.au3l kann RSA (zumindest die Windows-APIs, de verwendet werden). Das was du zitierst, bedeutet, dass AES nicht von Windows 2000 unterstützt wird. Neuere Versionen wie XP oder Vista unterstützen aber auch das.
    Oder irre ich mich da?

    Edit: Das könnte hilfreich sein: http://www.codeproject.com/KB/security/En…nCryptoAPI.aspx

    2 Mal editiert, zuletzt von progandy (2. März 2010 um 17:51)

  • Habe es jetzt nach vielen Stunden geschafft, selbst eine RSA-Verschlüsslung in AutoIt zu schreiben.
    Leider ist diese noch langsamer als ich vermutet habe.
    Für nen 1-Stelligen Text dauert das Entschlüsseln mit 3 Bit Codes mehrere Minuten...
    Kann man also vergessen.

    @ progandy: Genau so interpretiere ich das auch. Allerdingsw weiß ich immer noch nicht wie man es benutzt.
    Ich weiß mittlerweile, dass nach der Schlüsselerstellung der Private Key ausgegeben werden müsste.
    So wie ich das sehe, wird bei dieser Funktion aber nichts zurückgegeben.

    Danke für den Link, sieht interessant aus, weiß aber nicht, wie ich das was nutzen kann?!
    Ist das ne DLL die ich über AutoIt steuern kann?

    MfG, MAB_Commander

  • @progandy Crypt.au3 kann kein RSA. Gut möglich das die Verwendeten dlls das ermöglichen, aber Crypt.au3 an sich, bietet diese Funktion definitiv nicht. Zum Punkt AES und RSA, wenn das so wäre wie du das intepretierst könnte Windows 2000 nur eine komplexe Verschlüsselung also RSA und eine einfache wie AES nicht. Die zwei Variablen enhalten schlicht zwei unterschiedliche Addressierungen da Windows 2000 scheinbar eine andere DLL verwendet als die Windows Versionen darüber.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

    Einmal editiert, zuletzt von chip (3. März 2010 um 12:17)

  • Es ist aber so. Win2000 kann kein AES, RSA sollte aber möglich sein. Die Crypt.au3 kann dabei sehr wohl mit RSA verschlüsseln, nur der Schlüssel kann nicht direkt gelesen werden, da muss man die Funktionen selbst schreiben. (mit $CALG_USERKEY kann man diesen an z.B. _Crypt_EncryptData übergeben.)
    Das unterstützt Win2000: http://msdn.microsoft.com/en-us/library/…28VS.85%29.aspx
    und das ist ab XP möglich: http://msdn.microsoft.com/en-us/library/…28VS.85%29.aspx

  • Okay, der letzte Link sieht für mich sehr gut aus.
    AES verschlüsslung, und das passwort wird dann mit rsa verschlüsselt oder?

    Aber wie nutze ich das jetzt?
    Ist das in windows (ich habe 7) schon implementiert? Oder muss ich da was downloaden?
    Wie benutze ich das ganze über AutoIt?

  • @progandy steht doch groß dort in deinem Link, dass mit RSA nur signiert und nicht Verschlüsselt werden kann.

    Zitat

    Signature
    RSA

    Encryption
    RC2
    RC4
    Advanced Encryption Standard (AES)

    Und einen AES-Key dann mit RSA zu verschlüsseln ist ja mal sehr unsinnig, da dadurch die Datei an sich noch immer "nur" mit AES verschlüsselt ist.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Und einen AES-Key dann mit RSA zu verschlüsseln ist ja mal sehr unsinnig, da dadurch die Datei an sich noch immer "nur" mit AES verschlüsselt ist.


    Ansich ist das sehr sinnig ^^ RSA ist richtig langsam, sodass meist ein sichereer AES-Key geneeriert wird, der dann mit RSA verschlüsselt zu den verschlüsselten Daten dazugepackt wird

    Zitat

    @progandy steht doch groß dort in deinem Link, dass mit RSA nur signiert und nicht Verschlüsselt werden kann.


    Hab ich irgendwie übersehen. Ich blick noch nicht richtig durch, aber es sollte schon irgendwie möglich sein:
    http://www.derkeiler.com/Newsgroups/mic…04-04/0191.html
    http://www.derkeiler.com/Newsgroups/mic…6/msg00008.html
    http://www.niris.co.uk/crypt.html

  • Also danke für die vielen links, aber irgendwie bin ich zu blöd dafür???
    Ich suche in den ganzen dateien immer nach funktionen wie _rsa_encrypt, finde aber meistens überhaupt keine Funktionen, sondern nur deklarationen von variablen usw.
    Habe mir code::blocks runtergeladen, um mir die dateien anzusehen.
    Dann habe ich den quellcode vom letzten link (http://www.niris.co.uk/crypt.html) in code::blocks eingefügt, und auf erstellen geklickt.
    Daraufhin öffnete sich die wincrypt.h (ka wo die auf einmal herkommt) und es wurden 50 Fehler angezeigt (es gibt mehr als angezeigt werden können).

    Was ist das denn? Gibt es nicht eine einfache Datei, wo alles drin ist?
    Oder was muss ich machen?

  • @MAB_Commander bevor dich damit noch länger beschäftigst solltest folgendes wissen. Mit Autoit ist es nicht mögliche einen auch nur anähernd sicheren RSA-Key zu generieren da autoit nur maximal 32 Bit verarbeiten kannn. Da zur Berechnung erstmal wesentlich höhere Werte genommen werden wirst nur eine ca. 24 Bit Schlüssel erreichen können den jeder in recht kurzer Zeit knacken kann. Für eine dauerhafte verschlüsselung von Daten also nicht brauchbar.

    @progandy beim Aufbau von VPN wird RSA benutzt um den Sessionkey für die weiter Kommunikation auszuhandeln. Dieser ist aber nur temporär für die Zeit der Session. Von daher ist es relativ egal ob ihn jemand paar Wochen geknackt hat weil er dann eh ungültig ist. Mit AES verschlüsselte Daten sind aber unbegrenz "Unsicher" und man braucht nicht den RSA zu knacken um an den AES-Key zu kommen weil man ja gleiche den wesentlich einfacher zu knackenden AES-Key rausbekommen kann.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Ja, das weiß ich (siehe mein erster Beitrag).
    wusste nicht, dass 32 bit geht, so große hab ich nicht hinbekommen^^

    Aber die Keys will ich ja auch garnicht mit AutoIt generieren.

    Deshalb suche ich ja nach einer Dll, oder irgendetwas anderem, was ich einfach nur über AutoIt steuern kann.
    Die Dll sollte natürtlich eine "key generieren" Funktion beinhalten.

    Aber wie gesagt, ich finde bei den vielen Links nichts, was ich benutzen kann, bzw. ich weiß nicht, WIE ich den Inhalt der Links benutzen kann.

  • Hab den code in code::blocks eingefügt und erstellt und war sehr erfreut: mal keine Fehler^^
    Wollte mir jetzt schon erklären lassen, wie ich daraus ne dll mache, die ich mit autoit verwenden kann, da ist mir beim rumprobieren was aufgefallen.

    Der Code verkraftet kaum größere Zahlen als AutoIt, und wenn ich andere Primzahlen verwende als vorgegeben, wird ERROR zurückgegeben.
    Allerdings schreibt der Threadersteller auch unten drunter, dass man
    noch irgendeine Probe machen muss. Vielleicht liegt der fehler ja da.
    Aber wie richte ich den code so ein, dass ich 1024 stellige zahlen verwenden kann?

  • Dann hatten deine Variablen d und e unzulässige werte:

    Zitat

    'd' als auch 'e' müssen relativ prim zu (p-1)*(q-1)

    Oder anderes gesagt 'e' muss teilerfremd zum Ergebniss von (p-1)*(q-1) sein woraus dann die Funktion extended_euclid den wert 'd' berechnet der dann automatisch relativ prim zu (p-1)*(q-1) ist.
    Teilerfremdheit

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

    2 Mal editiert, zuletzt von chip (4. März 2010 um 10:13)