2013-05-01 7 views
21

Ich verschlüssele Daten mit OpenSSL mit RSA-Verschlüsselung, die gut funktioniert. Mein Verständnis von RSA ist, dass das Verschlüsseln der gleichen Daten mit dem gleichen öffentlichen Schlüssel immer das gleiche Ergebnis liefert (as stated here oder here).Warum gibt RSA-verschlüsselten Text mir verschiedene Ergebnisse für den gleichen Text

Mit Openssl bekomme ich jedes Mal, wenn ich die Verschlüsselung wiederhole, unterschiedliche Ergebnisse. Zum Beispiel:

➜ ~ echo '30' | openssl rsautl -encrypt -inkey pub.pem -pubin | shasum 
     11b6e058273df1ebe0be5e0596e07a6c51724ca0 - 

➜ ~ echo '30' | openssl rsautl -encrypt -inkey pub.pem -pubin | shasum 
     05cb82595f7429ef196189f4e781088597d90eee - 

Warum ist der Ausgang nicht eindeutig? Liegt es daran, dass ich die RSA-Verschlüsselung falsch verstanden habe oder weil openssl zusätzliche Magie nutzt?

Eigentlich versuche ich eine Datenbank zu entwerfen, die nur RSA-verschlüsselte Daten speichert. Ich würde gerne auf den Hashsummen der verschlüsselten Informationen suchen, was unmöglich ist, wenn der Verschlüsselungsvorgang an sich nicht einzigartig ist.

+0

FWIW, rsautil wird zugunsten von [pkeyutil] abgeschrieben (http://www.openssl.org/docs/apps/pkeyutl.html) –

Antwort

38

Ein sichere Die RSA-Verschlüsselung wird mit einem geeigneten Padding-Schema implementiert, das einige Zufälligkeiten enthält. Weitere Informationen finden Sie unter PKCS#1 oder OAEP.

Die RSA-Verschlüsselung verschlüsselt Nachrichten, die mit '0's und einer zufälligen Bitfolge aufgefüllt sind. Dabei wird die Zufallsfolge im Chiffretext durch kryptographisches Hashing und XORing "versteckt". Bei der Entschlüsselung stellt die RSA-Entschlüsselung die zufällige Zeichenfolge aus dem verschlüsselten Text wieder her und verwendet sie, um die Nachricht wiederherzustellen. Aus diesem Grund erhalten Sie mit openssl rsautl für dieselbe Textnachricht ein anderes Ergebnis.

5

Ok, ich habe es. RSA selbst ist deterministisch. jedoch eine bessere Sicherheit zu erhalten und zu verhindern, dass Angreifer die verschlüsselten Informationen zu erraten, wird die Verschlüsselung erfolgt nicht auf den reinen „Daten“, sondern auf „Daten“ + „some-random-Muster“ (I should have read wikipedia more carefully)

+0

Es geht nicht nur darum, die verschlüsselten Informationen zu erraten. Selbst wenn die Information nicht aussprechbar ist (sagen wir einen 128-Bit-Schlüssel), führt das Nicht-Verwenden eines geeigneten Auffüll-Schemas zu schwerwiegenden Schwächen. Selbst das immer noch beliebte Schema PKCS # 1 v1.5 ist schwach. – CodesInChaos

Verwandte Themen