Beweisarchiv: Kryptografie: Pseudozufall: Sicherheit des s2-mod-n-Generators

Aus testwiki
Zur Navigation springen Zur Suche springen

Beweisarchiv: Kryptografie: TOPNAV


Sicherheit des s2-mod-n-Generators

Einleitung

Der s2-mod-n-Generator (auch: Blum-Blum-Shub-Generator) erzeugt mittels eines zufälligen Schlüssels n und eines Startwertes s (engl. seed) durch Quadrieren eine zufällige Bitfolge b0b1bk.

Dazu werden zwei große Primzahlen p3(mod4) und q3(mod4) zufällig gewählt. Der im Folgenden verwendete Modulus n=pq kann für ein Kryptosystem als öffentlicher Schlüssel verwendet werden. Die Bitfolge wird aus dem Startwert s/n× wie folgt rekursiv berechnet:

s0:=s2(modn)b0:=s0(mod2)si:=si12(modn)bi:=si(mod2)

Behauptung

Der s2-mod-n-Generator ist genau dann kryptografisch sicher (auch: komplexitätstheoretisch sicher), wenn die folgende Behauptung bewiesen werden kann:

P   (polynomialer Vorhersagealgorithmus / Prädiktor)
δ, 0<δ<1   (Frequenz der unsicheren n)
t   (Grad der Polynome)

und wenn l=|n| genügend groß ist, gilt für alle Schlüssel n, ausgenommen den δ-Anteil:

W(P(n,b1,b2,,bk)=b0|s/n×random)<12+1lt

Zur Erklärung:

Mit der „Frequenz der unsicheren n” ist gemeint, für wie viele der Schlüssel der s2-mod-n-Generator keine „guten” Zufallsbitfolgen generiert.

W(P(n,b1,b2,,bk)=b0|s/n×random) ist die Wahrscheinlichkeit, dass der Prädiktor mit Kenntnis eines Teils der Bitkette b1b2bk und des Modulus n das vorangegangene Zufallsbit b0 richtig vorhersagt, obwohl der Startwert s zufällig gewählt wurde.

Beweis mit Quadratische-Reste-Annahme

Annahme: Wir nehmen an, es gebe solch einen Prädiktor, der b0 zu b1b2bk, n mit ϵ-Vorteil (also Wahrscheinlichkeit größer 12) richtig rät.

Es ist zu zeigen, dass die Annahme im Widerspruch zur Quadratischen-Reste-Annahme steht.

Widerspruchsbeweis:

Wir konstruieren aus P einen Prädiktor P, der zu gegebenem s1 das letzte Bit von s0, also b0 vorhersagt.

Prädiktor P:

P'(s[1], n){
  b[1] := s[1] (mod 2)
  for(1 < i <= k){
    s[i] := s[i-1] * s[i-1] (mod n)
    b[i] := s[i] (mod 2)
  }
  b[0] := P(b[·], n)
  return b[0]
}

Dieser verwendet P und rät damit ebenfalls mit ϵ-Vorteil richtig.

Unser Ziel ist es nun, aus P einen Algorithmus R zu entwickeln, der mit ϵ-Vorteil rät, ob ein beliebiges s/n× mit Jacobi-Symbol (sn)=1 quadratischer Rest ist.

R(s', n){
  s[1] := s' * s' (mod n)
  b[0] := P'(s[1], n)
  b' := letztesBit(s')   
  if(b[0] = b')
    return "s' ist quadratischer Rest"
  else
    return "s' ist nicht quadratischer Rest"
}

Wenn s=s0 gilt, dann ist s quadratischer Rest, da s0 als erste Wurzel von s1 quadratischer Rest ist. Andernfalls kann s nicht quadratischer Rest sein, da nur eine der vier Wurzeln quadratischer Rest ist.

Nun müssen wir noch zeigen, dass es reicht, das letzte Bit von s mit b0 zu vergleichen.

1.Fall: s=s0b=b0

2.Fall: ss0 und (sn)=(s0n)=1

ss0(modn)
s=ns0 und n ungerade
bb0

Damit ist der oben genannte Algorithmus R korrekt und sagt mit ϵ-Vorteil voraus, ob sQRn. Dies ist ein Widerspruch zur Quadratischen-Reste-Annahme. Folglich gilt die obige Annahme nicht.

Beweis mit Faktorisierungsannahme

Vorlage:Hauptautor wünscht Mitarbeit Anmerkung: Es wäre schön, wenn noch jemand ergänzen könnte, wie man die Sicherheit des Generators auf Faktorisierung zurückführt.

Wikipedia-Verweise

Vorlage:W
Vorlage:W
Vorlage:W
Vorlage:W
Vorlage:W


Beweisarchiv: Kryptografie: TOPNAV