Skripte DHBW

Vorlesungsskripte aus dem DHBW-Studium

Kryptosysteme für die digitale Signatur

aus der Vorlesung Kryptographie vom 14.03.2018


ÜBUNG

Verschlüsseln Sie mit dem RSA-Algorithmus den Klartext M=10M = 10 mit den Parametern p=29,q=31p = 29, q = 31 und e=13e = 13. Führen Sie auch eine artgerechte Entschlüsselung durch.

Berechnung des Totienten von nn und dd:
n=pq=2931=899n = p \cdot q = 29 \cdot 31 = 899
Totient: ϕ(n)=(p1)(q1)=2830=840\phi (n) = (p - 1)(q - 1) = 28 \cdot 30 = 840
ed1modϕ(n)e \cdot d \equiv 1 \mod{\phi (n)}
13d1mod84013 \cdot d \equiv 1 \mod{840}
d=131mod840d = 13^{-1} \mod{840}

Berechnung des multiplikativen Inversen mit dem Erweiterten Euklidischen Algorithmus:
a=13,b=840a = 13, b = 840

x11y10x_1 \leftarrow 1 \quad \qquad y_1 \leftarrow 0
x20y21x_2 \leftarrow 0 \quad \qquad y_2 \leftarrow 1
x3840y313x_3 \leftarrow 840 \qquad y_3 \leftarrow 13

Q=x3y3=84013=64Q = \lfloor \frac{x_3}{y_3} \rfloor = \lfloor \frac{840}{13} \rfloor = 64

T1x1Qy1=1T_1 \leftarrow x_1 - Q \cdot y_1 = 1
T2x2Qy2=64T_2 \leftarrow x_2 - Q \cdot y_2 = -64
T3x3Qy3=8T_3 \leftarrow x_3 - Q \cdot y_3 = 8

x10y11x_1 \leftarrow 0 \quad \qquad y_1 \leftarrow 1
x21y264x_2 \leftarrow 1 \quad \qquad y_2 \leftarrow -64
x313  y38x_3 \leftarrow 13 \ \ \qquad y_3 \leftarrow 8

Q=138=1Q = \lfloor \frac{13}{8} \rfloor = 1

T1x1Qy1=1T_1 \leftarrow x_1 - Q \cdot y_1 = -1
T2x2Qy2=65T_2 \leftarrow x_2 - Q \cdot y_2 = 65
T3x3Qy3=5T_3 \leftarrow x_3 - Q \cdot y_3 = 5

x11 y11x_1 \leftarrow 1 \ \quad \qquad y_1 \leftarrow -1
x264y265x_2 \leftarrow -64 \quad \quad y_2 \leftarrow 65
x38 y35x_3 \leftarrow 8 \ \quad \qquad y_3 \leftarrow 5

Q=85=1Q = \lfloor \frac{8}{5} \rfloor = 1

T1x1Qy1=2T_1 \leftarrow x_1 - Q \cdot y_1 = 2
T2x2Qy2=129T_2 \leftarrow x_2 - Q \cdot y_2 = -129
T3x3Qy3=3T_3 \leftarrow x_3 - Q \cdot y_3 = 3

x11y12x_1 \leftarrow -1 \quad \quad y_1 \leftarrow -2
x265 y2129x_2 \leftarrow 65 \ \quad \quad y_2 \leftarrow -129
x35   y33x_3 \leftarrow 5 \ \ \ \quad \quad y_3 \leftarrow 3

Q=53=1Q = \lfloor \frac{5}{3} \rfloor = 1

T1x1Qy1=3T_1 \leftarrow x_1 - Q \cdot y_1 = -3
T2x2Qy2=194T_2 \leftarrow x_2 - Q \cdot y_2 = 194
T3x3Qy3=2T_3 \leftarrow x_3 - Q \cdot y_3 = 2

x12   y13x_1 \leftarrow 2 \ \ \ \qquad y_1 \leftarrow -3
x2129y2194x_2 \leftarrow -129 \quad y_2 \leftarrow 194
x33   y32x_3 \leftarrow 3 \ \ \ \qquad y_3 \leftarrow 2

Q=32=1Q = \lfloor \frac{3}{2} \rfloor = 1

T1x1Qy1=1T_1 \leftarrow x_1 - Q \cdot y_1 = 1
T2x2Qy2=323T_2 \leftarrow x_2 - Q \cdot y_2 = -323
T3x3Qy3=1T_3 \leftarrow x_3 - Q \cdot y_3 = 1

x13  y11x_1 \leftarrow -3 \ \ \quad y_1 \leftarrow 1
x2194 y2323x_2 \leftarrow 194 \ \quad y_2 \leftarrow -323
x32 y31x_3 \leftarrow 2 \ \qquad y_3 \leftarrow 1

STOP: y3=1y_3 = 1
d323mod840d \equiv -323 \mod{840}
   517mod840\ \ \ \equiv 517 \mod{840}

Check: 13517=672113 \cdot 517 = 6721
 =8840+1\qquad \qquad \qquad \ = 8 \cdot 840 + 1
 1mod840\qquad \qquad \qquad \ \equiv 1 \mod{840}

Kpub=(e,n)=(13,899)K_{\text{pub}} = (e, n) = (13, 899)
Kpriv=(d,n)=(517,899)K_{\text{priv}} = (d, n) = (517, 899)

Verschlüsselung:
Cdmodn=640517mod840 C^d \mod{n} = 640^{517} \mod{840}

M=10,n=899:M = 10, n = 899:
C=1013mod899C = 10^{13} \mod{899}
    =[(108mod899)(104mod899)(10mod899)]mod899\ \ \ \ = [(10^8 \mod{899}) (10^4 \mod{899}) (10 \mod{899})] \mod{899}
    =(63411110)mod899\ \ \ \ = (634 \cdot 111 \cdot 10) \mod{899}
    =722\ \ \ \ = \underline{722}

Entschlüsselung:
Klartext=722517mod899 \text{Klartext} = 722^{517} \mod{899}

Berechnung der Potenz mit dem fastexp\text{fastexp} Algorithmus:
7222mod899=763722^2 \mod{899} = 763
7224mod899=7632mod899=516722^4 \mod{899} = 763^2 \mod{899} = 516
7228mod899=5162mod899=152722^8 \mod{899} = 516^2 \mod{899} = 152
72216mod899=1522mod899=629722^{16} \mod{899} = 152^2 \mod{899} = 629
72232mod899=6292mod899=81722^{32} \mod{899} = 629^2 \mod{899} = 81
72264mod899=812mod899=268722^{64} \mod{899} = 81^2 \mod{899} = 268
722128mod899=2682mod899=803722^{128} \mod{899} = 268^2 \mod{899} = 803
722256mod899=8032mod899=226722^{256} \mod{899} = 803^2 \mod{899} = 226
722512mod899=2262mod899=732722^{512} \mod{899} = 226^2 \mod{899} = 732

Klartext=722517mod899\text{Klartext} = 722^{517} \mod{899}
=[(722512mod899)(7224mod899)\qquad \qquad = [(722^{512} \mod{899}) (722^4 \mod{899})
(722mod899)]mod899\qquad \qquad \quad (722 \mod{899})] \mod{899}
=(732516722)mod899\qquad \qquad = (732 \cdot 516 \cdot 722) \mod{899}
=10\qquad \qquad = \underline{10}

Das DIFFIE-HELLMAN Key-Exchange Verfahren

Dieses Verfahren wurde in der Arbeit “New Directions in Cryptography” vorgestellt und zählt zu den Public-Key Verfahren, erlaubt aber

Generell nutzen Public-Key Verfahren immer sogenannte Trapdoor-Funktionen; das sind Funktionen, die in der einen Richtung einfach sind, die Umkehrung jedoch schwierig bis unmöglich.

RSA: pqschwierigeinfachn=pqp \cdot q \xrightleftharpoons[\text{schwierig}]{\text{einfach}} n = p \cdot q

Eine andere Trapdoor-Funktion ist z.B.
\rightarrow Berechne i=111(xi)=(x1)(x2)(x3)(x11)\displaystyle \prod_{i = 1}^{11} \; (x - i ) = (x - 1) (x - 2) (x - 3) \ldots (x - 11)
  =x1166x10+1925x932670x8\quad \qquad \qquad \qquad \qquad \ \ \, = x^{11} - 66x^{10} + 1925x^9 - 32670x^8
  +35742x739916800x6\quad \qquad \qquad \qquad \qquad \ \ \, \quad + 35742x^7 - 39916800x^6

Das DH-Key-Exchange-Verfahren nutzt den diskreten Logarithmus als Trapdoor-Funktion; d.h. die Sicherheit des DH-Verfahrens hängt davon ab, dass es sehr schwierig (bis unmöglich) ist, diskrete Logarithmen zu berechnen.

Betrachte wieder die Menge Zp={0,1,,p1}\mathbb{Z}_p = \{ 0, 1, \ldots, p - 1 \}. Eine primitive Wurzel einer Primzahl pp ist eine Zahl in Zp\{0}\mathbb{Z}_p \backslash \{ 0 \}, deren Potenzen alle Zahlen von 11 bis p1p - 1 generiert. Ist aa eine primitive Wurzel, dann sind

amodp,a2modp,a3modp,,ap1modp a \mod{p}, a^2 \mod{p}, a^3 \mod{p}, \ldots, a^{p - 1} \mod{p}

alle unterschiedlich und bestehen aus den Zahlen 11 bis p1p - 1 in irgendeiner (wilden!) Reihenfolge.

Beispiel: p=7,a=3p = 7, a = 3
31mod7=33^1 \mod{7} = 3
32mod7=23^2 \mod{7} = 2
33mod7=63^3 \mod{7} = 6
34mod7=43^4 \mod{7} = 4
35mod7=53^5 \mod{7} = 5
36mod7=13^6 \mod{7} = 1

p=71,2,3,4,5,6=Zp\{0}.p = 7 \Rightarrow 1, 2, 3, 4, 5, 6 = \mathbb{Z}_p \backslash \{ 0 \}.

Das diskrete Logarithmusproblem lautet:
Finde ii mit
b=aimodp0ip1 b = a^i \mod{p} \qquad 0 \le i \le p - 1

ii heißt diskreter Logarithmus oder Index von bb für die Basis amodba \mod{b}:
i=inda,p(b) i = \text{ind}_{a, p} (b)

Das DH-Key-Exchange Kryptosystem

  1. Szenario: Alice und Bob wollen einen gemeinsamen Schlüssel erzeugen, den nur sie kennen, ohne sich zuvor begegnet zu sein.
  2. Alice und Bob einigen sich (öffentlich) auf eine Primzahl qq und eine primitive Wurzel aa ((q,a)(q, a) ist eine Art Public Key).
  3. Geheimer Schlüssel Alice
    Alice wählt eine Zahl XAX_A (XA<qX_A < q) und wird Alice benannt. Alice berechnet
    YA=aXAmodq Y_A = a^{X_A} \mod{q}
    YAY_A geht an Bob.
  4. Geheimer Schlüssel Bob
    Bob wählt eine Zahl XBX_B (XB<qX_B < q) und wird Bob benannt. Bob berechnet
    YB=aXBmodq Y_B = a^{X_B} \mod{q}
    YBY_B geht an Alice.
  5. Alice berechnet K=(YB)XAmodqK = (Y_B)^{X_A} \mod{q}.
  6. Bob berechnet K=(YA)XBmodqK' = (Y_A)^{X_B} \mod{q}.

\rightarrow Da K=KK = K' (gleich), haben Bob und Alice einen gemeinsamen Sitzungsschlüssel.

Key-Exchange Method

Es gilt:
K=YBXAmodqK = Y_B^{X_A} \mod{q} (Alice)
=(aXBmodq)XAmodq\quad \, = (a^{X_B} \mod{q})^{X_A} \mod{q}
=(aXB)XAmodq\quad \, = (a^{X_B})^{X_A} \mod{q}
=aXBXAmodq\quad \, = a^{X_B \cdot X_A} \mod{q}
=(aXA)XBmodq\quad \, = (a^{X_A})^{X_B} \mod{q}
=YAXBmodq=K\quad \, = Y_A^{X_B} \mod{q} = K' von Bob

Also öffentlich: q,a,YA,YBq, a, Y_A, Y_B

Ein Angreifer, der den Schlüssel KK erhalten will, muss XAX_A oder XBX_B berechnen aus

YA=aXAmodq\qquad \qquad Y_A = a^{X_A} \mod{q}
oderYB=aXBmodq\text{oder} \qquad \, Y_B = a^{X_B} \mod{q}
oderXB=inda,q(YB).\text{oder} \quad \quad X_B = \text{ind}_{a, q} (Y_B).

Das DH-Verfahren macht nur Sinn, wenn beide Parteien online sind, denn Alice und Bob müssen eine Reihe von Informationen austauschen (q,a,YA,YBq, a, Y_A, Y_B), damit besser kommuniziert wird.

Beispiel: Alice und Bob einigen sich auf
q=479,a=11. q = 479, a = 11.

Alice wählt XA=102mit1XA478X_A = 102 \quad \text{mit} \; 1 \le X_A \le 478
Bob wählt XB=110mit1XB478\; X_B = 110 \quad \text{mit} \; 1 \le X_B \le 478

Alice berechnet YA=aXAmodqY_A = a^{X_A} \mod{q}
=11102mod479\qquad \qquad \qquad \quad \, \, = 11^{102} \mod{479}
fastexp   =218\text{fastexp} \rightarrow \quad \quad \ \ \ \, = \underline{218}

YA=218Y_A = 218 wird an Bob gesendet.

Bob berechnet YB=aXBmodqY_B = a^{X_B} \mod{q}
=11110mod479\qquad \qquad \qquad \quad = 11^{110} \mod{479}
fastexp=42\text{fastexp} \rightarrow \quad \quad \, \, \; = \underline{42}

YB=42Y_B = 42 wird an Alice gesendet.

Dann berechnet Alice K=YBXAmodqK = Y_B^{X_A} \mod{q}
 =42102mod479\qquad \qquad \qquad \qquad \quad \ = 42^{102} \mod{479}
fastexp=242\text{fastexp} \rightarrow \qquad \qquad \; \; \; = \underline{242}

Bob berechnet K=YAXBmodqK' = Y_A^{X_B} \mod{q}
=218110mod479\qquad \qquad \qquad \quad = 218^{110} \mod{479}
fastexp=242\text{fastexp} \rightarrow \qquad \; \; = \underline{242}

Daher ist der Sitzungsschlüssel K=242K = 242.

ELGAMAL-Kryptosysteme (TAHER ELGAMAL, 1985)

Digitale Signatur

Schlüssel: Wähle eine Primzahl pp mit zwei Zufallszahlen g,xg, x mit g,x<pg, x < p.
Berechne y=gxmodpy = g^x \mod{p}

Kpub=[y,g,p]K_{\text{pub}} = [y, g, p]
Kpriv=[x]K_{\text{priv}} = [x]

Signatur: MM soll signiert werden.
Wähle eine zufällige Zahl kk, so dass kk und p1p - 1 coprim sind, d.h.
ggT(k,p1)=1. \text{ggT}(k, p - 1) = 1.

Berechne
a=gkmodp. a = g^k \mod{p}.

Berechne bb aus
M(xa+kb)mod(p1) M \equiv (xa + kb) \mod{(p - 1)}

Signatur: (a,b)(a, b), kk bleibt geheim.

Bob verifiziert die Signatur wie folgt:
Es muss gelten:
yaabmodp=!gMmodp y^a \cdot a^b \mod{p} \overset{!}{=} g^M \mod{p}

Beispiel:

  1. p=13,g=7p = 13, g = 7 öffentliche Zahlen
  2. Alice wählt als geheimen Kprivx=3K_{\text{priv}} \rightarrow x = 3
  3. y=gxmodp=73mod13=5y = g^x \mod{p} = 7^3 \mod{13} = 5
    KpubA=[p,g,y]=[13,7,5]K_{\overset{A}{\text{pub}}} = [p, g, y] = [13, 7, 5]
    KprivA=[x]=[3]K_{\overset{A}{\text{priv}}} = [x] = [3]

Klartext, der von Alice signiert wird, ist M=10M = 10.
Zum Signieren muss Alice die Zahlen a,ba, b bestimmen:

  1. Alice wählt zufällige Zahl k=5k = 5, ist ok: ggT(5,12)=1\text{ggT}(5, 12) = 1
  2. a=gkmodpa = g^k \mod{p}
       =75mod1311mod13\ \ \ = 7^5 \mod{13} \equiv 11 \mod{13}
  3. Berechne bb aus
    M=(xa+kb)mod(p1)M = (xa + kb) \mod{(p - 1)}
    10=(311+5b)mod1210 = (3 \cdot 11 + 5 \cdot b) \mod{12}
     =(9+5b)mod12\quad \ = (9 + 5 \cdot b) \mod{12}
    15bmod12\iff 1 \equiv 5 \cdot b \mod{12}
    b=5\qquad \rightarrow \underline{b = 5}

An Bob wird gesendet:

Verifikation:
(yaab)modp=!gMmodp\qquad \qquad (y^a \cdot a^b) \mod{p} \overset{!}{=} g^M \mod{p}
links:  (511115)mod13=4mod13\text{links:} \quad \ \ \, (5^{11} \cdot 11^5) \mod{13} = 4 \mod{13}
rechts: 710mod13=4mod13\text{rechts:} \quad \ 7^{10} \mod{13} = 4 \mod{13}
\Rightarrow Beide Terme sind gleich.