Sonntag, 7. September 2008

News

präsentiert von: entwickler.com
Donnerstag, 12. Oktober 2006

About Security #76: Kryptographie – Das RSA-Verfahren

Diesmal geht es um ein asymmetrisches Verschlüsselungsverfahren: RSA. RSA wurde nach den Initialen der Nachnamen seiner Erfinder Ronald L. Rivest, Adi Shamir und Leonard Adleman benannt, die das Verfahren 1978 in "A Method for Obtaining Digital Signatures and Public-Key Cryptosystems" PDF) vorstellten.

Die Sicherheit des RSA-Verfahrens basiert auf der sog. Faktorisierungsannahme: Es gibt keinen effizienten Algorithmus, um eine gegebene große Zahl in ihre Primfaktoren zu zerlegen. Der RSA-Algorithmus selbst ist sehr einfach.

N E U ! Security aktuell
Täglich aktuelle Security-Infos!

Schlüsselerzeugung

  1. Wähle zufällig und stochastisch unabhängig zwei Primzahlen p und q, pq
  2. Berechnen n = p * q und
  3. φ(n) = (p-1) * (q-1) (φ ist die Eulersche φ-Funktion)
  4. Wähle eine Zahl c, für die gilt 1 < c < φ(n), die teilerfremd zu
  5. φ(n) ist (d.h. der größte gemeinsame Teiler ggT(c,φ(n)) = 1)
  6. Berechne d aus p, q und c als multiplikatives Inverses von c modulo φ(n), also c * d ≡ 1 mod φ(n).
    Dazu wird der erweiterte euklidische Algorithmus verwendet, auf den hier nicht weiter eingegangen werden soll.

Der öffentliche Schlüssel (public key) besteht aus c und n, der private Schlüssel (private key) aus d und n. Meist werden auch die Faktoren p und q gespeichert, da sie bei der Entschlüsselung verwendet werden können.

Das RSA-Verfahren als Verschlüsselungssystem

Ein Zahlenbeispiel:

  1. Wir wählen p=3 und q=11
  2. n = p * q = 3 * 11 = 33, φ(n) = (p-1) * (q-1) = (3-1) * (11-1) = 2 * 10 = 20
  3. c muss teilerfremd zu 20 sein, wir wählen willkürlich 7.
  4. Berechnung der Inversen:
    Es gilt c * d ≡ 1 mod φ(n)
    also 7 * d ≡ 1 mod 20
    Wie man in diesem Fall mit bloßen Auge sieht, ist d=3.

Der öffentliche Schlüssel besteht also aus c=7 und n=33, der geheime Schlüssel aus d=3 und n=33.

About Security: Die komplette Serie

Ver- und Entschlüsselung
Klartexte werden als Zahlen m, 0 ≤ m ≤ n, dargestellt. Zu lange Klartexte müssen ggf. in passende Blöcke aufgespalten werden.

Die Verschlüsselung erfolgt durch modulare Exponentiation mit c, für den Klartextblock m also durch die Berechnung von
m^c mod n.

Die Entschlüsselung erfolgt durch modulare Exponentiation mit d, für den Geheimtextblock m^c also durch die Berechnung von
(m^c)^d mod n = m.

Im Zahlenbeispiel:
Verschlüsselt werden soll m=25, der öffentliche Schlüssel ist c=7 und n=33:

Geheimtext = 25^7 mod 33 = 6103515625 mod 33 = 31

Entschlüsselt wird mit dem geheimen Schlüssel d=3 und n=33:

Klartext = 31^3 mod 33 = 29791 mod 33 = 25

Da diese doch sehr kleinen Zahlen schon zu großen Zwischenergebnissen führen, kann man sich vorstellen, wie groß diese bei den für RSA tatsächlich verwendeten Zahlen mit einer Länge von 1.024 Bit und mehr werden. Doch es gibt eine "Abkürzung":

  • Mehrfaches Quadrieren führt sehr schnell zu hohen Potenzen:
    Z.B. x^17 = ((((x²)²)²)²) * x
  • Da nicht das Zwischenergebnis selbst, sondern nur der Rest benötigt wird, kann in jedem Schritt modulo n gerechnet werden:
    Z.B. x^17 mod n = ((((x² mod n)² mod n)² mod n)² mod n) * x mod n

Damit muss in jedem Schritt nur mit Werten gerechnet werden, die kleiner als n sind.

Sicherheit des Verfahrens
Bei der Kryptanalyse des RSA-Verfahrens gibt es zwei Ansätze:

  • Bekannt sind der öffentliche Schlüssel, bestehend aus c und n, und der Geheimtext G. Gesucht wird der dazugehörige Klartext K, für den gilt K^c ≡ G mod n. Die Schwierigkeit liegt darin, dass es schwer ist, Wurzeln modulo n zu berechnen.
  • Bekannt ist der öffentliche Schlüssel, bestehend aus c und n. Gesucht wird der geheime Schlüssel d mit c * d ≡ 1 mod φ(n). Die Schwierigkeit liegt hier darin, dass es schwer ist, φ(n) ohne Kenntnis von p und q zu berechnen und n nicht leicht zu faktorisieren ist.

Auf die mathematischen Grundlagen soll hier nicht weiter eingegangen werden. Das Problem dabei ist, dass bisher nicht bewiesen wurde, ob die Faktorisierung tatsächlich schwer ist oder nicht. Es spricht vieles dafür, ein endgültiger Beweis steht aber noch aus.

Von den RSA Laboratories wurde die RSA Factoring Challenge gestartet. Dabei sollen vorgegebene Zahlen mit einer Länge zwischen 576 und 2.048 Bits in ihre Primfaktoren zerlegt werden. Erfolgreich faktorisiert wurden bisher die Zahlen bis zu einer Länge von 640 Bit.

Erfolgreicher sind Angriffe auf schwache Schlüssel oder unsichere Implementierungen. Wird RSA z.B. wie oben beschrieben als Konzelationssystem verwendet, kann ein Angreifer ausnutzen, dass RSA ein deterministisches System ist: Gleiche Klartexte ergeben gleiche Geheimtexte. Er kann einen wahrscheinlichen Klartext(block) raten und mit dem öffentlichen Schlüssel verschlüsseln. Stimmt das Ergebnis mit einem belauschten Geheimtext(block) überein, kennt er den dazu gehörenden Klartext(block). Das Hinzufügen von Zufallswerten zum Klartext verhindert derartige Angriffe.

Dan Boneh hat 1999 einen zusammenfassenden Artikel über die Kryptanalyse von RSA veröffentlicht: "Twenty years of attacks on the RSA cryptosystem".

So lange kein effektiver Faktorisierungsalgorithmus bekannt ist, kann RSA mit ausreichend großen Schlüsseln (mindestens 1.024, besser mindestens 2.048 Bit Länge) als sicher betrachtet werden.

In der nächsten Folge geht es um die Anwendung von RSA.

Wenn Sie Fragen oder Themenvorschläge haben, können Sie diese gerne an die angegebene E-Mail-Adresse senden oder im Security-Forum einbringen!

Carsten Eilers



T. Hentmann schrieb am 6-.-0.2008, 12: 1 Uhr
Ich verstehe das Zahlenbeispiel zur Schlüsselerzeugung nicht ganz. Warum ist d=3 bei 7 * d ≡ 1 mod 20 ? 1 mod 20 ist doch 1 also muss doch d = 1/7 sein oder wie?



Carsten Eilers schrieb am 6-.-0.2008, 12: 1 Uhr
Das ganze wird mod 20 gerechnet, nicht nur der Teil hinter dem ?-Zeichen, und das ergibt dann ausgeschrieben für d=3: (7 * 3) mod 20 = 21 mod 20 = 1



Ihre Meinung ist uns wichtig!
Mobile Computing Heute & Morgen!
Nehmen Sie an unserer Umfrage zum Thema Mobile Computing in Deutschland teil und nutzen Sie die Chance eine Casio Exilim EX-Z1050-Digitalkamera zu gewinnen!

Konferenzen

BASTA! 2008

BASTA! 2008

22.-26. September 2008
Rheingoldhalle, Mainz

SQLCON 2008

SQLCON 2008

22.-26. September 2008
Rheingoldhalle, Mainz

IPC 2008

IPC 2008

27.-31. Oktober 2008
Rheingoldhalle, Mainz

AJAX IN ACTION 2008

AJAX IN ACTION 2008

28.-31. Oktober 2008
Rheingoldhalle, Mainz

EKON 12

EKON 12

28.-31. Oktober 2008
Congress Centrum, Mainz

W-JAX 2008

W-JAX 2008

3.- 7. November 2008
ArabellaSheraton Hotel München

SOACON 2008

SOACON 2008

3.- 7. November 2008
Arabella Sheraton Hotel, München

JAX Asia 2008

JAX Asia 2008

25.-28. November 2008
Singapore, Kuala Lumpur, Jakarta

Werbung
Top-Jobs

Gebit Solutions

Java Profis gesucht (m/w)

Software & Support Verlag GmbH

Volontär (w/m) Redaktion, Vollzeit

OLYMPUS EUROPA Holding GmbH

Web-Entwickler (m/w)

Hueber Verlag GmbH & Co. KG

Webdesigner/ Webprogrammierer (m/w)

Magazine

Entwickler Magazin - Enterprise Technologies & Business Solutions

Entwickler Magazin

Enterprise Technologies & Business Solutions

dot.net magazin - die unabhängige Quelle für .NET-Technologien

dot.net magazin

Die Quelle für .NET-Technologien

Eclipse Magazin

Eclipse Magazin

Weltweit erstes Magazin für Eclipse-Entwickler

Java Magazin - Internet & Enterprise Technology

Java Magazin

Internet & Enterprise Technology

CREATE OR DIE - Ein Leben für die Kreativität

CREATE OR DIE

Ein Leben für die Kreativität

Business Technology - Management Magazin

Business Technology

Management Magazin

PHP Magazin - Professional PHP Development

PHP Magazin

Professional PHP Development

Bücher


hosted by HostEurope