n:=p·q ϕ(n) = (p−1)(q−1) c=wemodn w=cdmodn Eingabe:xemodn
1.Orakel:xgerade: xe7→(x/2)emodn: 2.Orakel:xgerade: xe7→(x/2)emodn: 3.Orakel:xungerade: xe7→(n−x)emodn: xe7→((n−x)/2)emodn: 4.Orakel:xgerade: xe7→(n/2)emodn: 5.Orakel:xungerade: xe7→(n−x)emodn: xe7→((n−x)/2)emodn: 6.Orakel:xgerade: xe7→((n−x)/2)emodn: 7.Orakel:xgerade:
Einleitung Hilfsfunktionen Weitere Angriffe Bit-Sicherheit Bestimmung von Primzahlen
3:30 Sicherheit des LSB 2/17 Walter Unger 12.12.2015 15:58 WS2015/16 Z
Idee Orakel für x ist gerade
n:=p·q ϕ(n) = (p−1)(q−1) c=wemodn w=cdmodn Eingabe:xemodn
1.Orakel:xgerade:
xe7→(x/2)emodn: 2.Orakel:xgerade: xe7→(x/2)emodn: 3.Orakel:xungerade: xe7→(n−x)emodn: xe7→((n−x)/2)emodn: 4.Orakel:xgerade: xe7→(n/2)emodn: 5.Orakel:xungerade: xe7→(n−x)emodn: xe7→((n−x)/2)emodn: 6.Orakel:xgerade: xe7→((n−x)/2)emodn: 7.Orakel:xgerade:
Einleitung Hilfsfunktionen Weitere Angriffe Bit-Sicherheit Bestimmung von Primzahlen
3:30 Sicherheit des LSB 3/17 Walter Unger 12.12.2015 15:58 WS2015/16 Z
Idee Orakel für x ist gerade
n:=p·q ϕ(n) = (p−1)(q−1) c=wemodn w=cdmodn Eingabe:xemodn
1.Orakel:xgerade:
xe7→(x/2)emodn:
2.Orakel:xgerade: xe7→(x/2)emodn: 3.Orakel:xungerade: xe7→(n−x)emodn: xe7→((n−x)/2)emodn: 4.Orakel:xgerade: xe7→(n/2)emodn: 5.Orakel:xungerade: xe7→(n−x)emodn: xe7→((n−x)/2)emodn: 6.Orakel:xgerade: xe7→((n−x)/2)emodn: 7.Orakel:xgerade:
Einleitung Hilfsfunktionen Weitere Angriffe Bit-Sicherheit Bestimmung von Primzahlen
3:30 Sicherheit des LSB 4/17 Walter Unger 12.12.2015 15:58 WS2015/16 Z
Idee Orakel für x ist gerade
n:=p·q ϕ(n) = (p−1)(q−1) c=wemodn w=cdmodn Eingabe:xemodn
1.Orakel:xgerade:
xe7→(x/2)emodn:
2.Orakel:xgerade:
xe7→(x/2)emodn: 3.Orakel:xungerade: xe7→(n−x)emodn: xe7→((n−x)/2)emodn: 4.Orakel:xgerade: xe7→(n/2)emodn: 5.Orakel:xungerade: xe7→(n−x)emodn: xe7→((n−x)/2)emodn: 6.Orakel:xgerade: xe7→((n−x)/2)emodn: 7.Orakel:xgerade:
Einleitung Hilfsfunktionen Weitere Angriffe Bit-Sicherheit Bestimmung von Primzahlen
3:30 Sicherheit des LSB 5/17 Walter Unger 12.12.2015 15:58 WS2015/16 Z
Idee Orakel für x ist gerade
n:=p·q ϕ(n) = (p−1)(q−1) c=wemodn w=cdmodn Eingabe:xemodn
1.Orakel:xgerade:
xe7→(x/2)emodn:
2.Orakel:xgerade:
xe7→(x/2)emodn:
3.Orakel:xungerade: xe7→(n−x)emodn: xe7→((n−x)/2)emodn: 4.Orakel:xgerade: xe7→(n/2)emodn: 5.Orakel:xungerade: xe7→(n−x)emodn: xe7→((n−x)/2)emodn: 6.Orakel:xgerade: xe7→((n−x)/2)emodn: 7.Orakel:xgerade:
Einleitung Hilfsfunktionen Weitere Angriffe Bit-Sicherheit Bestimmung von Primzahlen
3:30 Sicherheit des LSB 6/17 Walter Unger 12.12.2015 15:58 WS2015/16 Z
Idee Orakel für x ist gerade
n:=p·q ϕ(n) = (p−1)(q−1) c=wemodn w=cdmodn Eingabe:xemodn
1.Orakel:xgerade:
xe7→(x/2)emodn:
2.Orakel:xgerade:
xe7→(x/2)emodn:
3.Orakel:xungerade:
xe7→(n−x)emodn: xe7→((n−x)/2)emodn: 4.Orakel:xgerade: xe7→(n/2)emodn: 5.Orakel:xungerade: xe7→(n−x)emodn: xe7→((n−x)/2)emodn: 6.Orakel:xgerade: xe7→((n−x)/2)emodn: 7.Orakel:xgerade:
Einleitung Hilfsfunktionen Weitere Angriffe Bit-Sicherheit Bestimmung von Primzahlen
3:30 Sicherheit des LSB 7/17 Walter Unger 12.12.2015 15:58 WS2015/16 Z
Idee Orakel für x ist gerade
n:=p·q ϕ(n) = (p−1)(q−1) c=wemodn w=cdmodn Eingabe:xemodn
1.Orakel:xgerade:
xe7→(x/2)emodn:
2.Orakel:xgerade:
xe7→(x/2)emodn:
3.Orakel:xungerade:
xe7→(n−x)emodn:
xe7→((n−x)/2)emodn: 4.Orakel:xgerade: xe7→(n/2)emodn: 5.Orakel:xungerade: xe7→(n−x)emodn: xe7→((n−x)/2)emodn: 6.Orakel:xgerade: xe7→((n−x)/2)emodn: 7.Orakel:xgerade:
Einleitung Hilfsfunktionen Weitere Angriffe Bit-Sicherheit Bestimmung von Primzahlen
3:30 Sicherheit des LSB 8/17 Walter Unger 12.12.2015 15:58 WS2015/16 Z
Idee Orakel für x ist gerade
n:=p·q ϕ(n) = (p−1)(q−1) c=wemodn w=cdmodn Eingabe:xemodn
1.Orakel:xgerade:
xe7→(x/2)emodn:
2.Orakel:xgerade:
xe7→(x/2)emodn:
3.Orakel:xungerade:
xe7→(n−x)emodn:
xe7→((n−x)/2)emodn:
4.Orakel:xgerade: xe7→(n/2)emodn: 5.Orakel:xungerade: xe7→(n−x)emodn: xe7→((n−x)/2)emodn: 6.Orakel:xgerade: xe7→((n−x)/2)emodn: 7.Orakel:xgerade:
Einleitung Hilfsfunktionen Weitere Angriffe Bit-Sicherheit Bestimmung von Primzahlen
3:30 Sicherheit des LSB 9/17 Walter Unger 12.12.2015 15:58 WS2015/16 Z
Idee Orakel für x ist gerade
n:=p·q ϕ(n) = (p−1)(q−1) c=wemodn w=cdmodn Eingabe:xemodn
1.Orakel:xgerade:
xe7→(x/2)emodn:
2.Orakel:xgerade:
xe7→(x/2)emodn:
3.Orakel:xungerade:
xe7→(n−x)emodn:
xe7→((n−x)/2)emodn:
4.Orakel:xgerade:
xe7→(n/2)emodn: 5.Orakel:xungerade: xe7→(n−x)emodn: xe7→((n−x)/2)emodn: 6.Orakel:xgerade: xe7→((n−x)/2)emodn: 7.Orakel:xgerade:
Einleitung Hilfsfunktionen Weitere Angriffe Bit-Sicherheit Bestimmung von Primzahlen
3:30 Sicherheit des LSB 10/17 Walter Unger 12.12.2015 15:58 WS2015/16 Z
Idee Orakel für x ist gerade
n:=p·q ϕ(n) = (p−1)(q−1) c=wemodn w=cdmodn Eingabe:xemodn
1.Orakel:xgerade:
xe7→(x/2)emodn:
2.Orakel:xgerade:
xe7→(x/2)emodn:
3.Orakel:xungerade:
xe7→(n−x)emodn:
xe7→((n−x)/2)emodn:
4.Orakel:xgerade:
xe7→(n/2)emodn:
5.Orakel:xungerade: xe7→(n−x)emodn: xe7→((n−x)/2)emodn: 6.Orakel:xgerade: xe7→((n−x)/2)emodn: 7.Orakel:xgerade:
Einleitung Hilfsfunktionen Weitere Angriffe Bit-Sicherheit Bestimmung von Primzahlen
3:30 Sicherheit des LSB 11/17 Walter Unger 12.12.2015 15:58 WS2015/16 Z
Idee Orakel für x ist gerade
n:=p·q ϕ(n) = (p−1)(q−1) c=wemodn w=cdmodn Eingabe:xemodn
1.Orakel:xgerade:
xe7→(x/2)emodn:
2.Orakel:xgerade:
xe7→(x/2)emodn:
3.Orakel:xungerade:
xe7→(n−x)emodn:
xe7→((n−x)/2)emodn:
4.Orakel:xgerade:
xe7→(n/2)emodn:
5.Orakel:xungerade:
xe7→(n−x)emodn: xe7→((n−x)/2)emodn: 6.Orakel:xgerade: xe7→((n−x)/2)emodn: 7.Orakel:xgerade:
Einleitung Hilfsfunktionen Weitere Angriffe Bit-Sicherheit Bestimmung von Primzahlen
3:30 Sicherheit des LSB 12/17 Walter Unger 12.12.2015 15:58 WS2015/16 Z
Idee Orakel für x ist gerade
n:=p·q ϕ(n) = (p−1)(q−1) c=wemodn w=cdmodn Eingabe:xemodn
1.Orakel:xgerade:
xe7→(x/2)emodn:
2.Orakel:xgerade:
xe7→(x/2)emodn:
3.Orakel:xungerade:
xe7→(n−x)emodn:
xe7→((n−x)/2)emodn:
4.Orakel:xgerade:
xe7→(n/2)emodn:
5.Orakel:xungerade:
xe7→(n−x)emodn:
xe7→((n−x)/2)emodn: 6.Orakel:xgerade: xe7→((n−x)/2)emodn: 7.Orakel:xgerade:
Einleitung Hilfsfunktionen Weitere Angriffe Bit-Sicherheit Bestimmung von Primzahlen
3:30 Sicherheit des LSB 13/17 Walter Unger 12.12.2015 15:58 WS2015/16 Z
Idee Orakel für x ist gerade
n:=p·q ϕ(n) = (p−1)(q−1) c=wemodn w=cdmodn Eingabe:xemodn
1.Orakel:xgerade:
xe7→(x/2)emodn:
2.Orakel:xgerade:
xe7→(x/2)emodn:
3.Orakel:xungerade:
xe7→(n−x)emodn:
xe7→((n−x)/2)emodn:
4.Orakel:xgerade:
xe7→(n/2)emodn:
5.Orakel:xungerade:
xe7→(n−x)emodn:
xe7→((n−x)/2)emodn:
6.Orakel:xgerade: xe7→((n−x)/2)emodn: 7.Orakel:xgerade:
Einleitung Hilfsfunktionen Weitere Angriffe Bit-Sicherheit Bestimmung von Primzahlen
3:30 Sicherheit des LSB 14/17 Walter Unger 12.12.2015 15:58 WS2015/16 Z
Idee Orakel für x ist gerade
n:=p·q ϕ(n) = (p−1)(q−1) c=wemodn w=cdmodn Eingabe:xemodn
1.Orakel:xgerade:
xe7→(x/2)emodn:
2.Orakel:xgerade:
xe7→(x/2)emodn:
3.Orakel:xungerade:
xe7→(n−x)emodn:
xe7→((n−x)/2)emodn:
4.Orakel:xgerade:
xe7→(n/2)emodn:
5.Orakel:xungerade:
xe7→(n−x)emodn:
xe7→((n−x)/2)emodn:
6.Orakel:xgerade:
xe7→((n−x)/2)emodn: 7.Orakel:xgerade:
Einleitung Hilfsfunktionen Weitere Angriffe Bit-Sicherheit Bestimmung von Primzahlen
3:30 Sicherheit des LSB 15/17 Walter Unger 12.12.2015 15:58 WS2015/16 Z
Idee Orakel für x ist gerade
n:=p·q ϕ(n) = (p−1)(q−1) c=wemodn w=cdmodn Eingabe:xemodn
1.Orakel:xgerade:
xe7→(x/2)emodn:
2.Orakel:xgerade:
xe7→(x/2)emodn:
3.Orakel:xungerade:
xe7→(n−x)emodn:
xe7→((n−x)/2)emodn:
4.Orakel:xgerade:
xe7→(n/2)emodn:
5.Orakel:xungerade:
xe7→(n−x)emodn:
xe7→((n−x)/2)emodn:
6.Orakel:xgerade:
xe7→((n−x)/2)emodn:
7.Orakel:xgerade:
Einleitung Hilfsfunktionen Weitere Angriffe Bit-Sicherheit Bestimmung von Primzahlen
3:30 Sicherheit des LSB 16/17 Walter Unger 12.12.2015 15:58 WS2015/16 Z
Idee Orakel für x ist gerade
n:=p·q ϕ(n) = (p−1)(q−1) c=wemodn w=cdmodn Eingabe:xemodn
1.Orakel:xgerade:
xe7→(x/2)emodn:
2.Orakel:xgerade:
xe7→(x/2)emodn:
3.Orakel:xungerade:
xe7→(n−x)emodn:
xe7→((n−x)/2)emodn:
4.Orakel:xgerade:
xe7→(n/2)emodn:
5.Orakel:xungerade:
xe7→(n−x)emodn:
xe7→((n−x)/2)emodn:
6.Orakel:xgerade:
xe7→((n−x)/2)emodn:
7.Orakel:xgerade:
Einleitung Hilfsfunktionen Weitere Angriffe Bit-Sicherheit Bestimmung von Primzahlen
3:30 Sicherheit des LSB 17/17 Walter Unger 12.12.2015 15:58 WS2015/16 Z
Idee Orakel für x ist gerade
n:=p·q ϕ(n) = (p−1)(q−1) c=wemodn w=cdmodn Eingabe:xemodn
1.Orakel:xgerade:
xe7→(x/2)emodn:
2.Orakel:xgerade:
xe7→(x/2)emodn:
3.Orakel:xungerade:
xe7→(n−x)emodn:
xe7→((n−x)/2)emodn:
4.Orakel:xgerade:
xe7→(n/2)emodn:
5.Orakel:xungerade:
xe7→(n−x)emodn:
xe7→((n−x)/2)emodn:
6.Orakel:xgerade:
xe7→((n−x)/2)emodn:
7.Orakel:xgerade:
Einleitung Hilfsfunktionen Weitere Angriffe Bit-Sicherheit Bestimmung von Primzahlen
3:31 Sicherheit des LSB Walter Unger 12.12.2015 15:58 WS2015/16 Z
Notationen
n:=p·q ϕ(n) = (p−1)(q−1) c=wemodn w=cdmodn
nbestehe ausNBits.
bin(x)ist die Binärdarstellung vonx mit führender 1.
int(w)ist die Zahl mit der Binärdarstellungw.
|w|ist die Länge vonw (Anzahl der Bits).
Fallsint(t)>int(u), dann sind
Last(t−u)die letzten|u|Bits vonbin(int(t)−int(u)).
Beispiel:
Last(1011011−1010111) =0000100 undLast(1011011−111) =100.
Einleitung Hilfsfunktionen Weitere Angriffe Bit-Sicherheit Bestimmung von Primzahlen
3:32 Sicherheit des LSB Walter Unger 12.12.2015 15:58 WS2015/16 Z
Notationen
n:=p·q ϕ(n) = (p−1)(q−1) c=wemodn w=cdmodn
Folgende Werte werden im Algorithmus verwendet:
r(i) :Folge vonw0e modn(Anfragen) ans(i) :Antwort des Orakels aufr(i).
t(i) :Folge vonw0, diew =x ergeben.
Diese Zielfolge konvergiert gegen die Lösung.
r(i)wird ausr(i−1)bestimmt.
t(i−1)wird aust(i)undans(i−1)bestimmt.
Einleitung Hilfsfunktionen Weitere Angriffe Bit-Sicherheit Bestimmung von Primzahlen
3:33 Sicherheit des LSB Walter Unger 12.12.2015 15:58 WS2015/16 Z
Algorithmus
r(i) ˆ=w0emodnAnfragen ans(i) ˆ=Antworten des Orakels t(i) ˆ=Zielfolge
r(1) =xe modn(Krypttext).
ans(1) =Antwort des Orakels aufr(1).
Fallsr(i−1)undans(i−1)gegeben sind:
r(i) =
r(i−1)kmodn fallsans(i−1) =0 (n−r(i−1))kmodn fallsans(i−1) =1
Es gilt für 16i 6N:ans(i)ist Antwort des Orakels auf Anfrager(i).
Einleitung Hilfsfunktionen Weitere Angriffe Bit-Sicherheit Bestimmung von Primzahlen
3:34 Sicherheit des LSB Walter Unger 12.12.2015 15:58 WS2015/16 Z
Beispiel
r(i) =
r(i−1)kmodn ; fallsans(i−1) =0 (n−r(i−1))kmodn fallsans(i−1) =1
n=55,e=7,N=6 undbin(n) =110111,k=52,xe =49 Man erhält folgende Werte:
i r(i) ans(i)
1 49 0
2 49·52≡18 0
3 18·52≡1 1
4 (55−1)·52≡54·52≡3 1 5 (55−3)·52≡52·52≡9 0
6 9·52≡28 1
Einleitung Hilfsfunktionen Weitere Angriffe Bit-Sicherheit Bestimmung von Primzahlen
3:35 Sicherheit des LSB Walter Unger 12.12.2015 15:58 WS2015/16 Z
Algorithmus (2.Teil)
r(i) =
r(i−1)kmodn ; fallsans(i−1) =0 (n−r(i−1))kmodn fallsans(i−1) =1
Die Zielfolge wird wie folgt aufgebaut:
t(N) =ans(N)
Fallst(i)gegeben ist, dann ergibt sicht(i−1)nach t(i−1) =
t(i)0 ans(i−1) =0
Last(bin(n)−t(i)0) ans(i−1) =1∧int(t(i)0)<n Last(t(i)0−bin(n)) ans(i−1) =1∧int(t(i)0)>n
Einleitung Hilfsfunktionen Weitere Angriffe Bit-Sicherheit Bestimmung von Primzahlen
3:36 Sicherheit des LSB Walter Unger 12.12.2015 15:58 WS2015/16 Z
Beispiel
t(i−1) =
t(i)0 ;ans(i−1) =0
Last(bin(n)−t(i)0) ans(i−1) =1∧int(t(i)0)<n Last(t(i)0−bin(n)) ans(i−1) =1∧int(t(i)0)>n
n=55,e=7,N=6 undbin(n) =110111,k=52,xe =49 Man erhält folgende Werte:
i r(i) ans(i) t(i)
6 9·52≡28 1 1
5 52·52≡9 0 10
4 54·52≡3 1 Last(110111−100) =011 3 18·52≡1 1 Last(110111−0110) =0001 2 49·52≡18 0 00010
1 49 0 000100
Es gilt:bin(000100) =4und47≡49 modn.
Einleitung Hilfsfunktionen Weitere Angriffe Bit-Sicherheit Bestimmung von Primzahlen
3:37 Überblick und Beweisidee Walter Unger 12.12.2015 15:58 WS2015/16 Z
Zusammenfassung
r(1) =xe modn(Krypttext).
ans(1) =Antwort des Orakels aufr(1).
Fallsr(i−1)undans(i−1)gegeben sind:
r(i) =
r(i−1)kmodn fallsans(i−1) =0 (n−r(i−1))kmodn fallsans(i−1) =1
Es gilt für 16i 6N:ans(i)ist Antwort des Orakels auf Anfrager(i).
t(N) =ans(N)
Fallst(i)gegeben ist, dann ergibt sicht(i−1)nach t(i−1) =
t(i)0 ans(i−1) =0
Last(bin(n)−t(i)0) ans(i−1) =1∧int(t(i)0)<n Last(t(i)0−bin(n)) ans(i−1) =1∧int(t(i)0)>n
Einleitung Hilfsfunktionen Weitere Angriffe Bit-Sicherheit Bestimmung von Primzahlen
3:38 Überblick und Beweisidee Walter Unger 12.12.2015 15:58 WS2015/16 Z
Ergebnis
Satz
Es gilt:int(t(1)) =x.
Beweisidee:
Untersuche die Folge von Verschlüsselungen, die den Anfragent(i) entsprechen.
Bestimme dann bei dieser Folge, wie die Bits immer weiter bestimmt werden.
Einleitung Hilfsfunktionen Weitere Angriffe Bit-Sicherheit Bestimmung von Primzahlen
3:39 Überblick und Beweisidee Walter Unger 12.12.2015 15:58 WS2015/16 Z
Notationen
r(i) =
r(i−1)kmodn fallsans(i−1) =0 (n−r(i−1))kmodn fallsans(i−1) =1 t(i−1) =
t(i)0 ;ans(i−1) =0
Last(bin(n)−t(i)0) ;ans(i−1) =1∧int(t(i)0)<n Last(t(i)0−bin(n)) ;ans(i−1) =1∧int(t(i)0)>n
Für 16i6N setzeu(i)durch:
u(i)e≡r(i)modn,0<u(i)<n Beachte:u(i)existiert und kann konstruiert werden:
u(1) ≡ r(1) =xemodn⇒u(1) =x und 2er(i)≡ ±r(i−1)modn
Weiter setzen wir:
v(i) =0jbin(u(i))mitj=N− |bin(u(i))|
Damit giltj>0, dau(i)<nund weiter gilt|v(i)|=N.
Wir zeigen nun induktiv fürN>i>1:
∃w(i)mitv(i) =w(i)t(i)
Einleitung Hilfsfunktionen Weitere Angriffe Bit-Sicherheit Bestimmung von Primzahlen
3:40 Beweis Walter Unger 12.12.2015 15:58 WS2015/16 Z
Beweis
r(i) =
r(i−1)kmodn fallsans(i−1) =0 (n−r(i−1))kmodn fallsans(i−1) =1 t(i−1) =
t(i)0 ;ans(i−1) =0
Last(bin(n)−t(i)0) ;ans(i−1) =1∧int(t(i)0)<n Last(t(i)0−bin(n)) ;ans(i−1) =1∧int(t(i)0)>n u(i)e≡r(i)modn
v(i) =0jbin(u(i)) Zeigen:∃w(i)mitv(i) =w(i)t(i)
Induktionsanfang:i =N
Da|t(N)|=1, untersuchen wir das letzte Bit.
Letztes Bit vonv(N)ist gleich letztes Bit vonbin(u(N)).
Damit erhalten wir:t(N) =ans(N).
Induktionsschritt:i →i−1 füri >2 1.Fall: ans(i−1) =0 2.Fall: ans(i−1) =1
Einleitung Hilfsfunktionen Weitere Angriffe Bit-Sicherheit Bestimmung von Primzahlen
3:41 Beweis Walter Unger 12.12.2015 15:58 WS2015/16 Z