Wenn ein Verschlüsselungsalgorithmus eine Zeichenfolge in eine andere Zeichenfolge konvertieren soll, die dann wieder in das Original entschlüsselt werden kann, wie könnte dieser Prozess eine Zufälligkeit beinhalten?
Sicherlich muss es deterministisch sein, sonst wie könnte die Entschlüsselungsfunktion wissen, welche Faktoren bei der Erstellung der verschlüsselten Zeichenfolge beteiligt waren?
Antworten:
Es kann mehr als einen Chiffretext geben, der demselben Klartext zugeordnet ist. In mathematischen Begriffen muss der Verschlüsselungsalgorithmus injektiv sein, damit Sie den Klartext für den Chiffretext wiederherstellen können. Dies hindert den Chiffretext jedoch nicht daran, mehr Informationen als den Klartext zu codieren.
Betrachten Sie als konkretes Beispiel Modi der Blockverschlüsselungsoperation wie CBC , CTR oder OFB . Alle diese Modi beinhalten zusätzlich zum Klartext, dem Blockverschlüsselungsalgorithmus und seinem Schlüssel eine IV (Initialisierungsvektor). (Für die Klickrate wird die IV als Nonce bezeichnet, spielt jedoch eine ähnliche Rolle.) Die Verschlüsselungsfunktion ist für eine bestimmte IV deterministisch. Die IV kann andererseits zufällig ausgewählt werden (für die Klickrate muss sie zufällig ausgewählt werden). Sofern das Protokoll keine deterministische Methode zur Auswahl der IV angibt (z. B. eine vereinbarte Konstante), wird die IV zusammen mit dem Chiffretext gesendet. Tatsächlich besteht die Ausgabe der Verschlüsselungssoftware häufig aus der IV, gefolgt vom streng sensiblen Chiffretext. Die IV selbst wird im Klartext gesendet; Es enthält (darf) keine vertraulichen Informationen.
Betrachten Sie als weiteres Beispiel den PKCS1.5-Modus („Auffüllschema“) von RSA (definiert in PKCS # 1 Version 1.5 - siehe S.22–25 von PKCS # 1 v2.1 ). Dieser Modus vereinfacht ein Bit und besteht darin, eine zufällige Zeichenfolge mit der Nachricht zu verketten und dann die Exponentiationsoperation anzuwenden. Der Chiffretext ist wobei die Verkettung ist, die Nachricht ist und eine Füllzeichenfolge ist, deren Bits größtenteils zufällig sind. Um die Nachricht aus dem Chiffretext wiederherzustellen , wenden Sie die Rohentschlüsselungsoperation und teilen Sie in Auffüllung (die verworfen wird) und Nachricht auf.(P∥M)emodn ∥ M P C Cdmodn C
quelle
Nicht nur können Verschlüsselungsverfahren haben Zufälligkeit, aber in einigen Fällen (zB Public-Key - Verschlüsselung), sie müssen randomisiert werden. Dies ist kein Problem, da ein korrektes Verschlüsselungsschema erforderlich ist, dh für jede Nachricht und jeden Schlüssel , der über die Zufälligkeit .m k
Der Grund , dass die öffentliche Schlüsselschemata zufällig sein muss ergibt sich aus der Art , wie wir Sicherheit definieren: Wir haben nicht den Geheimtext wünschen Leck jegliche Informationen über die verschlüsselte Nachricht. Das klassische Beispiel ist das folgende. Angenommen, ist der öffentliche bzw. der geheime Schlüssel, und der Gegner fängt eine verschlüsselte Nachricht die an eine Einheit im Feld gesendet wird. Der Gegner weiß, dass die Nachricht entweder "ATTACK" oder "RETREAT" ist, weiß aber nicht, welche. Eine Sache, die der Gegner tun kann, ist, beide Nachrichten mit dem öffentlichen zu verschlüsseln . Lassen Sie und . If(pk,sk) c pk cA=ENCpk("ATTACK ") cR=ENCpk("RETREAT") ENC ist deterministisch, kann der Gegner die Nachricht mit Sicherheit herausfinden, indem er mit und .c cA cR
Die Art und Weise, wie dieser Begriff formal definiert wird, wird als semantische Sicherheit bezeichnet :
(Ich lasse den Sicherheitsparameter weg, der für die Definition von "vernachlässigbar" oder "erkennbar" entscheidend ist. Wir müssen davon ausgehen, dass die Generierung der Schlüssel von abhängt und dass der Vorteil oben liegt ist in vernachlässigbar , dh kleiner als )κ κ A 1/2 κ κ−ω(1)
quelle
Sie haben nicht angegeben, um welche Art von Verschlüsselung es sich handelt, aber lassen Sie mich darauf hinweisen, was für die Sicherheit der kartografischen Protokolle wirklich erforderlich ist (zusätzlich zu den Angaben in anderen Antworten).
Was wir wirklich brauchen, ist Folgendes: Die Schlüssel sollten zufällig generiert werden (dies kann in Zusammenarbeit wie bei der Kryptografie mit öffentlichen Schlüsseln wie RSA oder von einer Entität wie bei der Kryptografie mit privaten Schlüsseln erfolgen). Die Zufälligkeit des Schlüssels stellt sicher, dass ein Gegner die Schlüssel nicht vorhersagen kann (und sie verwendet, um das Protokoll zu brechen). Solange die Schlüssel für den Gegner zufällig aussehen, ist das Protokoll sicher. Oft werden die Schlüssel durch einen zufälligen Algorithmus generiert und dann an die Parteien weitergegeben, während die Verschlüsselungs- und Entschlüsselungsalgorithmen nicht zufällig, sondern deterministisch sind.
Denken Sie auch daran, dass eine Randomisierung nicht bedeutet, dass der Prozess nicht invertierbar ist. Ein einfaches Beispiel ist das folgende: Wenn , wird zufällig generiert , ausgegeben . Zum Invertieren können wir den ersten Teil des Paares ausgeben.x r ⟨x,r⟩
quelle
Sowohl der Verschlüsselungs- als auch der Entschlüsselungsalgorithmus können randomisiert werden, solange Sie einen Satz beweisen können, dass die Verschlüsselung gefolgt von der Entschlüsselung die meiste Zeit die ursprüngliche Nachricht liefert .
Warum sollte jemand ein solches Verschlüsselungsschema wollen? Denn: 1) Situationen gibt es , wo wir nicht richtig sein wollen die ganze Zeit , aber nur 99999999 mal jeder von 100 Millionen und 2) ermöglicht so kleine Fehler verbessert oft etwas anderes (wie Effizienz) durch einen unverhältnismäßig hohen Anteil.
quelle
Um nur ein Beispiel zu nennen: Bei der RSA-Verschlüsselung müssen Sie zwei Primzahlen und und eine Ganzzahl generieren , mit der Ihre öffentlichen und privaten Schlüssel erstellt werden.p q e
Wenn Sie einen dieser Werte deterministisch generieren, kann seine Generierung reproduziert werden, wodurch möglicherweise Ihre Verschlüsselung beeinträchtigt wird. Wenn diese Zahlen zufällig generiert werden, ist dies kein Problem.
Aktualisieren
Als genaueres Beispiel für die Antwort von Ran G. können Sie sich die Kryptographie mit elliptischen Kurven ansehen , bei der der Algorithmus einen zufälligen Parameter (normalerweise als , oder ) zum Ver- und Entschlüsseln von Nachrichten benötigt. Wenn derselbe "zufällige" Parameter mehrmals verwendet wird, kann der Schlüssel aus zwei verschlüsselten Nachrichten berechnet werden. Dies war das Problem / die Prämisse des PlayStation 3-Hacks vom letzten Jahr .d k r
quelle