Kryptografie und Datensicherheit RSA
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung 1. Attacken auf Public – Key - Verfahren 2. Der Chinesische Restklassensatz 3. Faktorisierung des RSA - Moduls 4. Andere Angriffsmöglichkeiten 4.1. Berechnung von φ(n) 4.2. Low – Exponent - Attack 4.3. Multiplikation
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung 1. Attacken auf Public – Key - Verfahren
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung ● Schutz des geheimen Schlüssels: Die Ermittlung des geheimen Schlüssels kommt einem völligen Aufbruch der Verschlüsselung gleich ● Schutz des RSA-verschlüsselten Textes Die Ermittlung des Textes, ohne den private Key zu finden, ist eine weitere Möglichkeit ● Schutz des symmetrisch verschlüsselten Textes Der Schutz des symmetrisch verschlüsselten Teils ist im Allgemeinen gewährleistet
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Cyphertext – Only – Angriffe ● Bob gibt Eve den öffentlichen Schlüssel ● Eve verschlüsselt zwei selbstgewählte Texte ● Eve gibt Bob beide Texte ● Bob verschlüsselt einen der beiden Texte ● Bob gibt Eve den verschlüsselten Text ● Eve rät welcher der beiden Texte verschlüsselt wurde
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Adaptive - Chosen - Cyphertext – Angriffe ● Bob gibt Eve den öffentlichen Schlüssel ● Eve lässt sich von Bob beliebige verschlüsselte Texte entschlüsseln ● Eve verschlüsselt zwei selbstgewählte Texte ● Eve gibt Bob beide Texte ● Bob verschlüsselt einen der beiden Texte ● Bob gibt Eve den verschlüsselten Text ● Eve lässt sich von Bob beliebige verschlüsselte Texte entschlüsseln, außer dem, den Bob Eve gegeben hat ● Eve rät welcher der beiden Texte verschlüsselt wurde
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Reduktion von RSA auf bekannte mathematische Probleme ● Es gibt keine Reduktion auf bewiesenermaßen schwere oder unlösbare mathematische Probleme ● Es gibt jedoch eine Reduktion auf ein ungelöstes mathematisches Problem großer akademischer Aufmerksamkeit
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung 2. Der Chinesische Restklassensatz
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung ● Erstmals gelöst von Sun Zi (3. Jhd.) ● Erst 1247 von Ch'in Chiu-Shao wiederentdeckt
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Löst simultane Kongruenzen der Form: Mit als zueinander prime ganze Zahlen.
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Wir führen ein: Mit:
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Beispiel:
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Beispiel:
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Beispiel:
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Beispiel:
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Beispiel:
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Beispiel:
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Beispiel:
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Beispiel:
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Beispiel:
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Es gilt:
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Daraus folgt: Es gilt nun:
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung a_0 = a; b_0 = b; t_0 = 0; t = 1; q = cut(a_0 / b_0) r = a0 – q*b_0 while r > 0 if b_0 != 1 then b has no inverse else return(t) Ermittlung des multiplikativ Inversen - Pseudocode temp = (t_0 – q*t) % a; t_0 = t; t = temp; a_0 = b_0; b_0 = r; q = cut(a_0 / b_0) r = a_0 - q*b_0
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Daraus folgt: Nun definieren wir die Umkehrfunktion:
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung 3. Faktorisierung des RSA - Moduls
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Wiederholung: Ein RSA-Schlüsselpaar besteht aus: ● Der Primzahl p ● Der Primzahl q ● Dem RSA-Modul n ● Dem φ - Funktionswert φ(n) ● Dem Verschlüsselungsexponent a ● Dem Entschlüsselungsexponent b ● Dem öffentlichen Schlüssel (n,a) ● Und dem privaten Schlüssel (b)
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Wiederholung: Ermittelt werden diese: ● Primzahl p wird frei gewählt ● Primzahl q wird frei gewählt ● n = pq ● φ(n) = (p-1)*(q-1) ● a wird frei gewählt ● b ergibt sich aus: ab = 1 mod φ(n) RSA – Modul: n φ – Wert: φ(n) Verschlüsselungs- exponent: a Entschlüsselungs - exponent b öff.Schlüssel: (n,a) priv.Schlüssel: (b)
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Eve hat gegeben: ● Den verschlüsselten Text c (Cyphertext) ● Den öffentlichen Schlüssel aus a und n ● mit Hilfe dieser Daten muss Eve die Verschlüsselung knacken RSA – Modul: n φ – Wert: φ(n) Verschlüsselungs- exponent: a Entschlüsselungs - exponent b öff.Schlüssel: (n,a) priv.Schlüssel: (b)
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Eve möchte ermitteln: ● Den entschlüsselten Text m (Plaintext) ● Den privaten Schlüssel b RSA – Modul: n φ – Wert: φ(n) Verschlüsselungs- exponent: a Entschlüsselungs - exponent b öff.Schlüssel: (n,a) priv.Schlüssel: (b)
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Gesucht sind also Funktionen und Algorithmen, die leisten können: (c,(n,a)) → (b,m) Da mithilfe des Cyphertextes und dem Entschlüsselungsexponent der Plaintext ermittelt werden kann ergibt sich mit b auch m. RSA – Modul: n φ – Wert: φ(n) Verschlüsselungs- exponent: a Entschlüsselungs - exponent b öff.Schlüssel: (n,a) priv.Schlüssel: (b)
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung (c,(n,a)) → b: ● ab = 1 mod φ(n) ● ab = 1 mod (p-1)(q-1) ● Gesucht sind also p und q ● Da n =pq, mit p und q Primzahlen bietet sich eine Primfaktorzerlegung von n an RSA – Modul: n φ – Wert: φ(n) Verschlüsselungs- exponent: a Entschlüsselungs - exponent b öff.Schlüssel: (n,a) priv.Schlüssel: (b)
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Der Pollard – n-1 – Algorithmus ● Erwartet n zur Eingabe ● Ist n ungerade wende Pollard – n-1 – Algorithmus an ● Ist n gerade wende den Probedivision – Algorithmus an ● Erwartet weiterhin zur Eingabe B (Bound), so dass ● mit p als Primteiler von n und q | (p-1)
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung a = 2; for j = 2 to B do a = a^j % n; d = ggT(a-1, n); if 1 < d < n then return(d); else return(failure); Pollard – n-1 – Algorithmus - Pseudocode
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung a = 2; for j = 2 to B do a = a^j % n; d = ggT(a-1, n); if 1 < d < n then return(d); else return(failure); Es gilt: ● q | (p – 1) ● p < B Daraus folgt: ● p | B! → (q-1) | B! ● Am Ende der loop-Schleife gilt: ● Da p | n gilt: ● Nach Fermat gilt:
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Der kleine Satz von Fermat: Unter der Vorraussetzung a mit p teilerfremd:
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Es gilt: ● q | (p – 1) ● p < B Daraus folgt: ● p | B! → (q-1) | B! ● Am Ende der loop-Schleife gilt: ● Da p | n gilt: ● Nach Fermat gilt: ● Daraus folgt: p | a-1 a = 2; for j = 2 to B do a = a^j % n; d = ggT(a-1, n); if 1 < d < n then return(d); else return(failure);
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung ● (p-1) | B! ● Setze d = ggT(a-1, n) ● Es gilt nun: p | d, da p | (a-1) ● d ist nun ein Primfaktor von n ● Setze Algorithmus nun fort einmal mit d und einmal mit n/d, wenn d != n/d a = 2; for j = 2 to B do a = a^j % n; d = ggT(a-1, n); if 1 < d < n then return(d); else return(failure);
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung ● Das Ergebnis liefert die Primfaktor- zerlegung von p und q. ● Laufzeit: ● erhebliche Laufzeitverbesserung wenn p-1 nur in kleine Primfaktoren zerlegt wird ● Ergo muss der RSA-Algorithmus diesen Fall ausschließen a = 2; for j = 2 to B do a = a^j % n; d = ggT(a-1, n); if 1 < d < n then return(d); else return(failure);
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung 4. Andere Angriffsmöglichkeiten 4.1. Berechnung von φ(n) 4.2. Low – Exponent - Attack 4.3. Multiplikativität
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung 4.1. Berechnung von φ(n) ● n = pq ● φ<(n) = (p-1)(q-1) ● ● Die Beiden Wurzeln ergeben p und q ● Anschließend muss dennoch n faktorisiert werden
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung 4.2. Low – Exponent - Attack Wieners Low Decryption Exponent Attack (q1,..., qm; rm) = EA(b,n); c0 = 1; c1 = q1; d0 = 0; d1 = 1; for j = 2 to m do return(failure); c[j] = q[j] * c[j-1] + c[j-1] d[j] = q[j] * d[j-1] + d[j-2] N' = (d[j]*b -1) / c[j] If n' is an integer Thenp = sqrt((n – n' + 1)*x + n) If p and q integer and 0 < p < n and 0 < q < n Then return(p,q);
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung 4.3. Multiplikativität ● m1 und m² seien verschlüsselt zu c1 und c2 ● Es gilt:
Kryptografie und Datensicherheit RSA - Public-Key-Verschlüsselung Quellen und Referenzen: „Cryptography, Theory and Practice“ Douglas R. Stinson, Chapman and Hall 2006, Third Edition „Einführung in die Kryptographie“ Prof. Dr. Johannes Buchmann, Springer 2004, Dritte Auflage