| Skript-Anfang | Skript – Seite 36 |
|---|---|
| Skript-Ende | Skript – Seite 37 |
Wiederholung
- Diskretes Logarithmusproblem (Siehe Mitschrift vom 04.06.2011)
- Symmetrische Schlüssel zum Erreichen des gleichen Sicherheitsniveaus sind kürzer als asymmetrische Schlüssel
Beispiele für Gruppen zum DL
- ℤp* = {1, … , p-1}
Eigenschaften
- Zyklisch:
- Es gibt ein g ∈ ℤp* mit {1, … , p-1} = {gn, n ∈ ℕ}
- Gruppe ℤ5* = {1, 2, 3, 4}
- 3 ist ein Erzeuger (Das Verfahren zum Herausfinden folgt später)
- 4 ist kein Erzeuger (Nicht jede Zahl in der Gruppe ist auch ein Erzeuger für diese Gruppe)
- Ist g ∈ ℤp* ein Erzeuger, dann existiert für alle h ∈ ℤp* ein x ∈ ℕ mit gx = h
- Dies bedeutet, dass loggh = x existiert
- Daran lassen sich dann Schlüssel ableiten, z.B. für Secure Messaging (verschlüsselte und authentisierte Kommunikation)
- KE = Hashwert H (gxy || 0x00) Verschlüsselungsschlüssel
- KE = Hashwert H (gxy || 0x01) Schlüssel für Authentisierung
Angriff
- Angreifer kennt g, gx, gy
- Ziel ist es das gemeinsame Geheimnis gxy heraus zu finden
- Derzeitig einzige Möglichkeit:
- Bestimme x oder y, d.h. berechne logg(gx) = y oder logg(gy) = x
- Erster Ansatz über Probepotenzieren (Brute Force):
- Wähle x‘, berechne gx‘ und vergleiche mit gx‘ = gx
- Für p > 2100 ist |ℤp*| > 2100
- D.h. Wahrscheinlichkeit für Gleichheit kleiner als 2-100 bzw. 1/2100
- Man braucht also ca. 2100 Versuche x zu finden (Sicherheitsniveau ist 100 Bit)
- Schnellster Algorithmus für das DLP (Diskretes Logarithmusproblem) O(esqrt(log10(p) * log10(log10p)))
- p ≈ 24000 gilt log10(24000) ≈ 1200
- log10(log10 (24000) ≈ 3
- sqrt(1200*3) = e60 = 290
Erfolgreicher Angriff – Man in the middle

- Also: Das Verfahren muss mit Instanzauthentisierung einher gehen, um gx / gy den Kommunikationspartner zuordnen zu können
Secret Sharing
- Ziel: Durchsetzung eines Mehr-Augen-Prinzips
- Aufteilen eines Geheimnisses K (z.B. kryptographischer Schlüssel) in n Teilgeheimnisse so, dass
- t ≤ n Teilgeheimnisse notwendig sind um K zu erhalten
- t-1 Teile aber keinerlei Informationen über K liefern
(t, n) – Schwellwert – Schema
- (4,10) = Ich brauche 4 von 10 Teilen
Einfaches und unsicheres Verfahren:
- 128 bit Schlüssel in z.B. 4 Teile aufteilen
- K = {K1, … , K22 , … , K128}
- K1 bis K22 = Teilschlüssel 1, usw.
- Mit 3 Teilen des Schlüssels ließen sich z.B. schon 96 Bit wieder herstellen, d.h. es werden Informationen über K geliefert
Einfaches und sicheres Verfahren
- Wähle zufällig n-1 Werte TK1, … , TKn-1 = {0,1}128
- Setze T,Kn = TK1 ⊕ … ⊕ TKn-1 ⊕ K
- Dann gilt TK1 ⊕ … ⊕ TKn = K
- Kennt man weniger als n Teilgeheimnisse erhält man keine Informationen über den Schlüssel K
- Vergleichbar zum One-time-pad
Shamirs Secret Sharing (RSA) – (t,n)
- Idee: Verstecke K in einem Polyom
- Betrachte k ∈ {0,1}128 als natürliche Zahl \( k = \sum_{i=1}^{128} * K_i * 2^{i-1}\)
- Wähle k-1 zufällig Werte a1, … , at-1
- Betrachte f(x) = K + a1 x1 + a2x2 + … + at-1 xt-1
- Dann gilt f(0) = K
- Erzeugen der Geheimnisse:
- Pers 1 → (1,f(1))
- Pers 2 → (2,f(2))
- …
- Pers n → (n,f(n))
- Lösche a1 bis at-1
- Rekonstruktion des Polynoms:
- Fundamentalsatz der Algebra: Polynom (t-1) Grades wird durch t Punkte (xi, f(xi)) ist eindeutig festgelegt
- Es werden also t der n zuvor berechneten Werte benötigt
- \( f(x) = \sum_{i=1}^{t}f(x_i) * \prod_{j=1 \wedge y\neq i }^{t}\frac{x-x_j}{x_i-x_j} \) (Lagrange-Formel)
- t-1 (und weniger) Teile liefern keinerlei Informationen über k
- Angreifer kennt t-1 Werte (1,f(1)) , … , (t-1, f(t-1))
- \( K=f(0)=\sum_{i=1}^{t}f(i)*\prod_{j=1 \wedge j\neq i}^{t}\frac{0-j}{i-j} \)
- \( K=f(0)=\sum_{i=1}^{t-1}f(i)*\prod_{j=1 \wedge j\neq i}^{t-1}\frac{0-j}{i-j} + f(t)*\prod_{j=1 \wedge j\neq i}^{t}\frac{0-j}{t-j} \)
- Nur f(t) ist nicht bekannt
- f(t) kann alle möglichen Werte annehmen, damit auch f(0) = K
- D.h. Angreifer hat keinerlei Informationen über K