Dieser Text wird eines der überarbeiteten Kapitel des Handbuchs zum Informationsschutz der Abteilung für Funktechnik und Steuerungssysteme sowie aus diesem Schulungscode der Abteilung für Informationsschutz des MIPT (GU) sein. Das vollständige Tutorial ist auf github verfügbar (siehe auch Release- Entwürfe ). Auf Habrir habe ich vor, neue "große" Stücke auszulegen, um erstens nützliche Kommentare und Beobachtungen zu sammeln und zweitens der Community mehr Überblicksmaterial zu nützlichen und interessanten Themen zu geben.Vorherige Themen:Wenn es einen Kommunikationskanal zwischen Alice und Bob gibt, auf den ein Angreifer nicht zugreifen kann (wenn also nur das passive Kryptoanalysemodell anwendbar ist), können Sie die zuvor in der Kryptografie mit öffentlichen Schlüsseln verwendeten Ideen auch ohne vorläufigen Austausch von geheimen Schlüsseln oder anderen Informationen verwenden. Nachdem Adi Shamir 1978 die RSA beschrieben hatte, schlug er 1980 die Verwendung von Kryptosystemen vor, die auf kommutativen Operationen beruhen, um Informationen zu übertragen, ohne zuvor geheime Schlüssel auszutauschen. Wenn wir annehmen, dass die übertragenen Informationen ein geheimer Sitzungsschlüssel sind, der von einer der Parteien generiert wurde, erhalten wir im Allgemeinen das folgende Protokoll mit drei Durchläufen.
Vorbemerkung:
- Alice und Bob sind über einen ungesicherten Kommunikationskanal verbunden, der von einem Angreifer abgehört (aber nicht geändert) werden kann.
- Jede Seite verfügt über ein Paar öffentlicher und privater Schlüssel KA , kA , KB , kB dementsprechend.
- Die Parteien haben die kommutative Verschlüsselungsfunktion ausgewählt und verwendet:
\ begin {array} {lll} D_ {A} \ left (E_ {A} \ left (X \ right) \ right) = X & \ forall X, \ left \ {K_A, k_a \ right \}; \\ E_ {A} \ left (E_ {B} \ left (X \ right) \ right) = E_B \ left (E_A \ left (X \ right) \ right) & \ forall ~ K_A, K_B, X. \ end {array}
\ begin {array} {lll} D_ {A} \ left (E_ {A} \ left (X \ right) \ right) = X & \ forall X, \ left \ {K_A, k_a \ right \}; \\ E_ {A} \ left (E_ {B} \ left (X \ right) \ right) = E_B \ left (E_A \ left (X \ right) \ right) & \ forall ~ K_A, K_B, X. \ end {array}
Das Protokoll besteht aus drei Durchläufen mit der Übertragung von Nachrichten (daher der Name) und einem letzten Durchlauf, bei dem Bob den Schlüssel erhält.
- Alice wählt einen neuen Sitzungsschlüssel K
Alice \ to \ left \ {E_A \ left (K \ right) \ right \} \ to BobAlice \ to \ left \ {E_A \ left (K \ right) \ right \} \ to Bob - Bob \ to \ left \ {E_B \ left (E_A \ left (K \ right) \ right) \ right \} \ to AliceBob \ to \ left \ {E_B \ left (E_A \ left (K \ right) \ right) \ right \} \ to Alice
- Alice, unter Verwendung der Kommutativität der Verschlüsselungsfunktion,
DA left(EB left(EA left(K right) right) right)=DA left(EA left(EB left(K right) right) right)=EB left(K rechts).
Alice \ to \ left \ {E_B \ left (K \ right) \ right \} \ to BobAlice \ to \ left \ {E_B \ left (K \ right) \ right \} \ to Bob - Bob entschlüsselt DB left(EB left(K right) right)=K
Als Ergebnis erhalten die Parteien einen gemeinsamen geheimen Schlüssel.
K .
Ein gemeinsamer Nachteil all solcher Protokolle ist die fehlende Authentifizierung der Parteien. Natürlich ist dies im Fall eines passiven Kryptoanalytikers nicht erforderlich, aber im wirklichen Leben müssen Sie immer noch alle möglichen Modelle (einschließlich eines aktiven Kryptoanalytikers) berücksichtigen und Protokolle verwenden, die die gegenseitige Authentifizierung der Parteien beinhalten. Im Gegensatz zum Diffie-Hellman-Schema wird der neue Schlüssel vom Initiator der Sitzung ausgewählt, sodass der Initiator den zweiten Teilnehmer nicht mit guten Absichten zur Verwendung des veralteten Sitzungsschlüssels zwingen kann.
In
Bezug auf die Sicherheitseigenschaften erklären dann alle Vertreter dieser Protokollklasse nur die Schlüsselauthentifizierung (G7). Im Gegensatz zum Diffie-Hellman-Schema erfordern Drei-Pass-Protokolle nicht die Auswahl neuer „Hauptschlüssel“ für jede Protokollsitzung, weshalb weder die perfekte direkte Geheimhaltung (G9) noch die Bildung neuer Schlüssel (G10) garantiert werden kann.
Triviale Option
Geben wir ein Beispiel für ein Protokoll, das auf der XOR-Funktion basiert (bitweise Addition Modulo 2). Obwohl diese Funktion als Grundlage für die Erstellung von Systemen mit perfekter kryptografischer Stärke verwendet werden kann, ist dies für ein Protokoll mit drei Durchläufen eine schlechte Wahl.
Vor dem Starten des Protokolls haben beide Parteien ihre geheimen Schlüssel.
KA und
KB Darstellung zufälliger binärer Sequenzen mit einer gleichmäßigen Verteilung der Zeichen. Die Verschlüsselungsfunktion ist definiert als
Ei(X)=X oplusKi wo
X diese Nachricht auch
Ki - Geheimschlüssel. Offensichtlich:
foralli,j,X:Ei left(Ej left(X right) right)=X oplusKj oplusKi=X oplusKi oplusKj=Ej left(Ei left(X right) right)
- Alice wählt einen neuen Sitzungsschlüssel K
Alice \ to \ left \ {E_A \ left (K \ right) = K \ oplus K_A \ right \} \ to BobAlice \ to \ left \ {E_A \ left (K \ right) = K \ oplus K_A \ right \} \ to Bob - Bob \ to \ left \ {E_B \ left (E_A \ left (K \ right) \ right) = K \ oplus K_A \ oplus K_B \ right \} \ to AliceBob \ to \ left \ {E_B \ left (E_A \ left (K \ right) \ right) = K \ oplus K_A \ oplus K_B \ right \} \ to Alice
- Alice, unter Verwendung der Kommutativität der Verschlüsselungsfunktion,
DA left(EB left(EA left(K right) right)=K oplusKA oplusKB oplusKA=K oplusKB=EB left(K right).
Alice \ to \ left \ {E_B \ left (K \ right) = K \ oplus K_B \ right \} \ to BobAlice \ to \ left \ {E_B \ left (K \ right) = K \ oplus K_B \ right \} \ to Bob - Bob entschlüsselt DB left(EB left(K right) right)=K oplusKB oplusKB=K
Am Ende der Protokollsitzung kennen Alice und Bob den gemeinsamen Sitzungsschlüssel
K .
Die vorgeschlagene Wahl der kommutativen Verschlüsselungsfunktion zur Geheimhaltung ist erfolglos, da es Situationen gibt, in denen ein Kryptoanalytiker den Schlüssel bestimmen kann
K . Angenommen, ein Kryptoanalytiker hat alle drei Nachrichten abgefangen:
K oplusKA, K oplusKA oplusKB, K oplusKB.
Modulo 2 Addition aller drei Meldungen ergibt den Schlüssel
K . Daher wird ein solches Verschlüsselungssystem nicht verwendet.
Jetzt präsentieren wir das Protokoll für die zuverlässige Übertragung des geheimen Schlüssels, basierend auf der exponentiellen (kommutativen) Verschlüsselungsfunktion. Die Stabilität dieses Protokolls hängt mit der Schwierigkeit der Aufgabe zusammen, den diskreten Logarithmus für bekannte Werte zu berechnen
y,g,p finden
x aus der Gleichung
y=gx bmodp .
Shamirs Keyless-Protokoll
Die Parteien einigen sich vorläufig auf eine große Spitze
p sim21024 . Jede der Parteien wählt einen geheimen Schlüssel.
a und
b . Diese Schlüssel sind kleiner und gegenseitig einfach.
p−1 . Auch die Parteien bereiteten sich nach einer besonderen Anzahl vor
a′ und
b′ Damit können sie eine mit ihrem Schlüssel verschlüsselte Nachricht entschlüsseln:
beginarrayla′=a−1 mod(p−1),a timesa′=1 mod(p−1), forallX:(Xa)a′=X. endarray
Der letzte Ausdruck ist wahr durch die Folgerung aus Fermats kleinem Theorem \ index {theorem! Die Farm ist klein. Ver- und Entschlüsselungsvorgänge sind wie folgt definiert:
\ begin {array} {lll} \ forall M <p: & C = E (M) = M ^ {a} & \ mod p, \\ & D (C) = C ^ {a '} & \ mod p, \\ & D_A (E_A (M)) = M ^ {aa '} = M & \ mod p. \\ \ end {array}
- Alice wählt einen neuen Sitzungsschlüssel K<p
Alice \ to \ left \ {E_A \ left (K \ right) = K ^ a \ bmod p \ right \} \ to Bob - Bob \ nach \ links \ {E_B \ links (E_A \ links (K \ rechts) \ rechts) = K ^ {ab} \ bmod p \ rechts \} \ nach Alice
- Alice, unter Verwendung der Kommutativität der Verschlüsselungsfunktion,
DA left(EB left(EA left(K right) right) right)=Kaba′=Kb=EB left(K right) modp.
Alice \ to \ left \ {E_B \ left (K \ right) = K ^ b \ right \} \ to Bob - Bob entschlüsselt DB left(EB left(K right) right)=Kbb′ bmodp=K
Am Ende der Protokollsitzung kennen Alice und Bob den gemeinsamen Sitzungsschlüssel
K .
Angenommen, ein Kryptoanalytiker hat drei Nachrichten abgefangen:
beginarrayly1=Ka bmodp,y2=Kab bmodp,y3=Kb bmodp. endarray
Den Schlüssel finden
K muss ein Kryptoanalytiker ein System dieser drei Gleichungen lösen, das einen sehr großen Rechenaufwand aufweist, der aus praktischer Sicht nicht akzeptabel ist, wenn alle drei
a,b,ab ziemlich groß. Nimm das an
a (oder
b ) ist nicht genug. Dann Berechnung aufeinanderfolgender Abschlüsse
y3 (oder
y1 ) gefunden werden
a (oder
b ) und vergleicht das Ergebnis mit
y2 . Wissen
a leicht zu finden
a−1 bmod(p−1) und
K=(y1)a−1 bmodp .
Massey-Omura-Kryptosystem
Im Jahr 1982 meldeten James Massey und Jim Omura ein Patent an (James Massey, Jim K. Omura) und verbesserten (ihrer Meinung nach) das schlüssellose Protokoll von Shamir. Als Verschlüsselungsoperation statt Exponentiation in einer multiplikativen Gruppe
mathbbZ∗p Sie schlugen vor, Exponentiation im Galois-Feld zu verwenden
mathbbGF2n . Geheimschlüssel jeder Party (für Alice -
a ) müssen die Bedingungen erfüllen:
beginarraylein in mathbbGF2n,gfd left(a,xn−1+xn−2+...+x+1 right)=1. endarray
Ansonsten sieht das Protokoll ähnlich aus.
Nachwort
Der Autor ist für sachliche und sonstige Kommentare zum Text dankbar.