Seminar zur Zahlentheorie (Osnabrück 2008/09)/Public-Key-Kryptographie
Aus Wikiversity
Inhaltsverzeichnis
|
[Bearbeiten] Einführung
[Bearbeiten] Motivation
Schon seit dem Altertum bestehen Wunsch und Notwendigkeit, Nachrichten vor dem Zugriff unbefugter Dritter zu schützen. Schon die Spartaner und später auch Cäsar sollen bei ihren Feldzügen Mitteilungen mit einfachen Chiffren vor dem Feind verborgen haben.
Lag das Hauptanwendungsgebiet kryptographischer Algorithmen noch vor 60 Jahren in der Hauptsache beim Militär und vielleicht vereinzeilt bei heimlichen Liebespaaren, ist eine sichere Datenübertragung nicht zuletzt mit der Verbreitung des Internets auch im täglichen Leben ein entscheidender Faktor geworden. Vom Einkauf bis zum Bankgeschäft werden heute viele Dinge online erledigt, ohne dass man sich Gedanken darüber macht, wer Zugriff auf die versendeten Daten hat. Dabei steigt mit wachsender Internetnutzung und der damit verbundenen, vermehrten Übertragung sensibler Daten die Gefahr, dass Kriminelle private Kommunikation abhören und gesammelte Informationen für ihre Zwecke missbrauchen. Mit Hilfe kryptographischer Verfahren verschlüsselte Kommunikation ist daher im Bereich sicherheitskritischen Informationsaustausches unerlässlich.
[Bearbeiten] Kryptosysteme
Das Prinzip kryptographischer Verfahren ist denkbar einfach: Person A möchte eine wichtige Nachricht an Person B schicken, ohne dass eine andere Person an den Inhalt gelangen kann. Dazu verschlüsselt Person A den Text mit einem Schlüssel und sendet den Geheimtext an Person B, die als einzige in der Lage ist, den Text mit dem passenden Schlüssel wieder zu entschlüsseln.
Solche Verfahren zur sicheren Datenübertragung lassen sich auf verschiedenste Arten umsetzen. Um diese näher beschreiben zu können, werden einige Definitionen benötigt:
[Bearbeiten] Definition (Schlüssel)
Ein Schlüsselpaar K = (KE,KD) besteht aus dem Chiffrierungsschlüssel
und dem Dechiffrierungsschlüssel
, wobei
die Menge aller De-,
die Menge aller Chiffrierungsschlüssel beschreibt. Die Mächtigkeit des Schlüsselraums
ist ein wichtiges Indiz für die Sicherheit eines Verfahrens. Die Menge der Schlüssel muss notwendigerweise so groß, sein, dass ein Angreifer nicht durch einfaches Ausprobieren den Klartext zurückgewinnen kann.
[Bearbeiten] Definition (Verschlüsselungsfunktion)
Eine Verschlüsselungsfunktion
beschreibt die Abbildung aus der Menge
der Klartexte in die Menge
der Chiffren, die Entschlüsselungsfunktion
die Abbildung der Geheimtexte auf die Klartexte.
Für ein gegebenes Schlüsselpaar K gilt P = D(E(P,KE),KD).
[Bearbeiten] Definition (Kryptosystem)
Ein Kryptosystem ist ein 5-Tupel
bestehend aus den Mengen aller Klar- und Geheimtexte, dem Schlüsselraum, sowie der Verschlüsselungs- und der Entschlüsselungsfunktion.
Im Allgemeinen lassen sich die kryptographischen Verfahren in zwei Gruppen einteilen: Die so genannten symmetrischen Verfahren , bei denen sowohl für die Ver- als auch die Entschlüsselung der gleiche, geheim zu haltende Schlüssel genutzt wird, und die asymmetrischen Verfahren , die zur Dechiffrierung einen anderen Schlüssel nutzen als bei der Chiffrierung.
[Bearbeiten] Definition (symmetrisches Verfahren)
Ein Kryptoverfahren heißt symmetrisch , wenn KE = KD gilt. Man spricht dann kurz vom Schlüssel K und identifiziert K mit KE.
[Bearbeiten] Beispiel (Caesar-Chiffre)
Das einfachste symmetrische Verschlüsselungsverfahren ist die so genannte Caesar-Chiffre, die auf monoalphabetischer Substitution beruht. Die Klartexte P bestehen aus einer endlichen Folge
. Für den Schlüssel K wählt man
. n ist hierbei die Mächtigkeit des verwendeten Alphabets. Es gilt
und
, womit das Verfahren vollständig beschrieben ist.
Dass das Caesar-Verfahren sehr unsicher ist, springt sofort ins Auge. Die Größe des Alphabets übersteigt selten 100 Buchstaben, so dass sogar ein ungeübter Taschenrechner schnell alle möglichen Schlüssel testen und den Geheimtext so entschlüsseln kann. Das ist natürlich nur der Einfachheit des Beispiels geschuldet und kein generelles Problem der symmetrischen Verfahren.
Symmetrische Verfahren haben bei der Kommunikation über das Internet dennoch entscheidende Nachteile:
- Beide Kommunikationspartner müssen den geheimen Schlüssel kennen, der für die Verschlüsselung genutzt wird. Will also zum Beispiel eine Person eine sichere Bestellung bei einem Internet-Händler aufgeben, muss der Händler zunächst den Schlüssel sicher zum Kunden übertragen, ein sich selbst bedingendes Vorhaben.
- Zudem muss der Empfänger für jeden Kommunikationspartner einen eigenen Schlüssel generieren, da ansonsten jede andere Person (insbesondere ein Angreifer) die Nachrichten anderer Teilnehmer mitlesen könnte.
Um diese Probleme zu umgehen, werden die so genannten asymmetrischen Verfahren genutzt. Sie verwenden für Ver- und Entschlüsselung jeweils eigene Schlüssel KE und KD. Der Chiffrierungs-Schlüssel KE soll hierbei sogar öffentlich bekannt gegeben werden, damit er von allen Beteiligten, die dem Schlüsseleigner eine Nachricht senden wollen, zur Chiffrierung verwendet werden kann. Diese Verfahren werden aus diesem Grund auch Public-Key-Verfahren genannt. Um Sicherheit und Anwendbarkeit gewährleisten zu können, werden einige Forderungen an die Verfahren gestellt:
- Die Funktionen D und E müssen effizient berechenbar sein.
- KE und KD müssen mit angemessenem Aufwand erzeugbar sein.
- Aus einem gegebenen Geheimtext und dem Schlüssel KE darf sich nicht der ursprüngliche Klartext ermitteln lassen.
- Die Bestimmung von KD aus KE darf bei gegebenem, frei gewählten Klartext nicht möglich sein.
Die Funktionen für Ver- und Entschlüsselung sind bei den asymmetrischen Verfahren so genannte Einwegfunktionen mit Falltür . Darunter versteht man injektive Funktionen
, für die y = f(x) leicht zu bestimmen ist, x = f − 1(y) jedoch schwer, solange keine weiteren Parameter bekannt sind.
[Bearbeiten] Das RSA-Verfahren
Eines der ersten Public-Key-Verfahren ist RSA , dessen Algortihmus 1977 von Ron Rivest, Adi Shamir und Leonard Adleman vorgestellt und zum Patent angemeldet wurde. RSA verwendet als Verschlüsselungsfunktion das Potenzieren in Restklassen. Seine Sicherheit bezieht das Verfahren dabei aus der Tatsache, dass derzeit kein Verfahren existiert, mit dem man die Primfaktorzerlegung einer Zahl mit geringem Aufwand bestimmen kann.
Im Folgenden soll nun zunächst ein Blick darauf geworfen werden, wie das RSA-Verfahren funktioniert und wie RSA-Schlüssel erzeugt werden. Anschließend wird das eigentliche Verfahren der Chiffrierung und Dechiffrierung betrachtet und zum Schluss noch einmal auf die Sicherheit des Verfahrens eingangen.
[Bearbeiten] Bestandteile des Kryptosystems
[Bearbeiten] Alphabet und Schlüssel
Für die Beschreibung des Kryptosystems RSA wird zuallererst eine natürliche Zahl n = pq benötigt, deren einzige aus Sicherheitsgründen verschiedenen Primfaktoren p und q sind. Sie legt alle wichtigen Eigenschaften von RSA fest.
n bestimmt die Mächtigkeit des Alphabets, aus dem die Klar- und Geheimtexte bestehen. Es gilt wie schon bei der Caesar-Chiffre gesehen, dass die Klartexte P aus einer endlichen Folge bestehen, wobei

gilt. Speziell könnte man noch 0 und 1 aus dem Definitionsbereich ausschließen, da diese identisch abgebildet werden. Die Wahrscheinlichkeit, dass sie auftreten, ist in der Praxis jedoch so gering, dass darauf auch verzichtet werden kann.
Die Geheimtexte C sind ebenfalls endliche Folgen über dem gleichen Alphabet, es gilt also

.
Zur Verschlüsselung wird die Funktion
mit

verwendet.
Die Entschlüsselungsfunktion
bildet wie folgt ab:

Der Schlüssel für die Chiffrierung muss also offensichtlich aus zwei Bestandteilen bestehen, nämlich e und n. Für D benötigt man neben dem Geheimtext die Bestandteile d und n. Zusammenfassend lässt sich also sagen:
[Bearbeiten] Korrektheit des Verfahrens
Bevor die Korrektheit von RSA nachgewiesen werden kann, seien noch einmal einige grundlegende Begriffe für den kommutativen Ring
wiederholt:
[Bearbeiten] Satz (Einheit in
)
Eine Zahl a ist genau dann Einheit in
, wenn a und n teilerfremd sind.
[Bearbeiten] Beweis
Der Beweis folgt direkt aus dem Lemma von Bézout . Sind a und n teilerfremd, so gibt es eine Darstellung xa + yn = 1 und damit
und a Einheit. Ist a umgekehrt Einheit, so existiert ein
mit
und somit wiederum eine Vielfachendarstellung ga + hn = 1.
[Bearbeiten] Definition (Einheitengruppe)
Die Einheiten von
bilden die Einheitengruppe
. Die Anzahl der Elemente in
wird gegeben durch die Eulersche
-Funktion:
. Es gilt im Falle von RSA
,da
als zahlentheoretische Funktion multiplikativ ist und p und q als Primzahlen zweifelsohne teilerfremd sind.
Damit D und E wirklich kryptographische Funktionen sind, also P = D(E(P,KE),KD) gilt, ist die Wahl von e und d nicht frei. Folgende Forderungen werden an die beiden Exponenten gestellt:
- Wähle e,
teilerfremd zu 
- Bestimme d so, dass

Der wichtigste Bestandteil im Beweis, dass RSA auf die so definierte Weise korrekt arbeitet, ist der
[Bearbeiten] Satz von Euler
Sei n eine natürliche Zahl. Dann gilt für jede zu n teilerfremde Zahl a die Beziehung
.[Bearbeiten] Beweis
Die zu n teilerfremden Zahlen bilden die Einheitengruppe von
. Der Satz von Lagrange sagt nun gerade aus, dass die Ordnung jedes Elements ein Teiler der Gruppenordnung ist. Diese ist
, also gilt für alle Elemente a:am = 1. 
Die Anforderung an d und e war nun gerade, dass
ist, oder anders ausgedrückt
, wobei k eindeutig bestimmt ist. Setzt man diese Formel ein, so ergibt sich ohne Umschweife
.Nun gilt der Satz von Euler nur bei zu n teilerfremden Zahlen. Zusätzlich müssen also auch noch die Nullteiler betrachtet werden. O.B.d.A gelte
, denn der Fall, dass a von q geteilt wird, läuft vollkommen analog ab.
Die multiplikative Eigenschaft der eulerschen
-Funktion liefert schnell folgende
[Bearbeiten] Bemerkung
Gilt
für zwei Primzahlen p und q, so folgt
und
.[Bearbeiten] Bemerkung
Auf a kann nun wiederum der Satz von Euler angewandt werden. Es ergeben sich die folgenden beiden Kongruenzen:
für ein 

[Bearbeiten] Beweis
Die erste Kongruenz gilt offensichtlich, da
teilerfremd zu q ist und die Voraussetzungen des Satzes von Euler erfüllt sind. Ebenso trivial ist auch 2., weil a ein Vielfaches von p ist. Es ergibt sich
.
Um von hier aus zum Ziel zu kommen, wird der chinesische Restsatz benötigt, der die Beziehung zwischen
,
und
herstellt.
Die folgende Version des chinesischen Restsatzes ist in allgemeiner Version bereits bekannt:
[Bearbeiten] Chinesischer Restsatz
Seien
verschiedene Primzahlen und n = pq. Dann induzieren die kanonischen Ringhomomorphismen
und
einen Isomorphismus
.
Insbesondere gibt es zu gegebenen ganzen Zahlen ap,aq also genau eine natürliche Zahl a < n, die die simultanen Kongruenzen
löst.
[Bearbeiten] Beweis
Da die endlichen Ringe
und
die gleiche Anzahl von Elementen haben, nämlich n, genügt es, die Injektivität der induzierten Abbildung zu zeigen. Sei x eine natürliche Zahl, die in
zu null wird, also modulo pq den Rest null hat. Dann ist x ein Vielfaches von pq, d.h., in der Primfaktorzerlegung von x muss p und q vorkommen. Also muss x nach Teilbarkeitskriterium ein Vielfaches des Produktes sein, also ein Vielfaches von n. Damit ist
und die Abbildung ist injektiv. 
Auf Grundlage der ersten Bemerkung gilt
für alle
.Mit dem eben erhaltenen Isomorphismus ist die Korrektheit des RSA-Verfahrens bewiesen.
[Bearbeiten] Erzeugung von RSA-Schlüsselpaaren
Mit der Definition einer gültigen Chiffrierfunktion ist ein wichtiger Schritt zum praktikablen Kryptoverfahren getan. Im Folgenden soll nun darauf eingegangen werden, wie die Schlüsselparameter d, e und n bestimmt werden.
Es ist nachvollziehbar, dass dabei auch ein Auge darauf geworfen werden sollte, inwiefern sich der Aufwand für die Schlüsselerzeugung in einem akzeptablen Rahmen bewegt.
Um neben den notwendigen mathematischen Grundlagen und Algorithmen auch die Anwendung vorzuführen, wird nach jedem Abschnitt ein kurzes Beispiel folgen.
[Bearbeiten] Beispiel
Angela hat vor Kurzem Barack kennen gelernt. Weil sie nicht möchte, dass ihre Kommunikation von anderen Personen mitgehört werden kann, plant sie, sich ein RSA-Schlüsselpaar zu generieren, mit dem Barack ihr Nachrichten zukommen lassen kann. Angelas Bemühungen werden im weiteren Verlauf als durchgehendes Beispiel dienen, um den Weg von zwei Primzahlen bis zur ersten Nachricht von Barack an Angela zu verfolgen.
[Bearbeiten] Bestimmung des RSA-Moduls n
Zu Beginn der RSA-Schlüsselerzeugung wird zunächst der Modul bestimmt, der die Restklassen festlegt. Dazu wählt man zwei große Primzahlen p,q bestimmter Länge und setzt
.Mit n ist gleichzeitig der Raum der Klar- und Geheimtexte festgelegt: Er wird, wie schon erwähnt, repräsentiert durch die Menge der Elemente im Restklassenring
.
Da RSA ein Kryptoverfahren ist, das aufgrund seiner Komplexität die Verwendung von Computern verlangt, wird die Länge der Primzahl in Bit angegeben. p und q haben im Binärsystem eine feste Anzahl Ziffern, üblicherweise 29 = 512 Bit, in besonders sicherheitskritischen Bereichen häufig auch 1024 oder sogar 2048 Bit.
Was in der Theorie einfach klingt, stellt in der Praxis ein relativ großes Problem dar. Wie aus der Zahlentheorie-Vorlesung bekannt ist, besagt das Betrandsche Postulat , dass sich in Intervallen
immer eine Primzahl finden lässt. Ein nicht triviales Verfahren zur Bestimmung dieser Primzahl existiert hingegen nicht.
[Bearbeiten] Lemma (Aufwand der Primzahlbestimmung)
Der Aufwand, eine Primzahl p der Länge k = log2(p) in einem gegebenem Intervall
zu finden, ist in der Komplexitätsklasse
, wobei R der Aufwand ist, eine Zahl auf Primalität zu testen.
[Bearbeiten] Beweis
Der Primzahlsatz von Hadamard und de la Vallée Pousin liefert eine grobe Abschätzung für die Anzahl der Primzahlen, die kleiner als eine gegebene Zahl n sind. Für die die Primzahlfunktion π(n): = | {x < n:x prim} | gilt demnach die Abschätzung
.Für Zahlen der festen Länge k aus dem Intervall [2k − 1,2k) ergibt sich aus dieser Formel durch Einsetzen:
.
Der Anteil der Primzahlen unter den 2k − 1 Binärzahlen der Länge k liegt also etwa bei
.Zum Finden einer solchen Primzahl benötigt man also durchschnittlich etwa

Versuche.
[Bearbeiten] Beispiel
Angela entscheidet sich der Übersichtlichkeit wegen für Zahlen der Länge 8 im Binärsystem. Die Primzahlen p = 151 und q = 251 entnimmt sie einer Primzahltabelle. Ihr RSA-Modul ist also
.
[Bearbeiten] Bestimmung des Verschlüsselungs-Exponenten e
Nach der Bestimmung des Moduls erfolgt als nächstes die Wahl des Verschlüsselungsexponenten e. Dieser muss teilerfremd zur Mächtigkeit von
und kleiner als dieselbe sein.
Da sich e innerhalb der gegebenen Beschränkungen frei wählen lässt, wird in der Praxis häufig e = 216 + 1 = 65537 verwendet.
Ist das e relativ klein, hat dies den Vorteil, dass die Verschlüsselung schneller ist, da weniger Zeit zum Potenzieren aufgewendet werden muss. Zudem wird bei größerem e der Aufwand größer, die Teilerfremdheit von e und
sicherzustellen.
[Bearbeiten] Beispiel
Angela sucht also ein
mit
und
.
Sie berechnet
und wählt als dazu teilerfremdes e die Zahl e = 91.
[Bearbeiten] Bestimmung des Entschlüsselungs-Exponenten d
Ist e bestimmt, kann der Dechiffrier-Exponent d berechnet werden. Während n und e wegen der wenigen Anforderungen, die an sie gestellt wurden, noch recht einfach zu bestimmen waren, ist die Bestimmung von d ungleich aufwendiger und benötigt einige Vorbereitung.
Der Entschlüsselungs-Exponent soll das Inverse von e in
sein. Um d zu ermitteln, wird wieder das bereits erwähnte Lemma von Bézout benötigt.
Die allgemeine Version wurde in der Vorlesung behandelt. Im Speziellen wird die Aussage für zwei teilerfremde Elemente in
benötigt.
[Bearbeiten] Lemma (Lemma von Bézout)
Zwei Elemente
besitzen stets einen größten gemeinsamen Teiler g, und dieser lässt sich als Linearkombination von a1 und a2 darstellen, d.h. es gibt Elemente
mit r1a1 + r2a2 = g.
Insbesondere besitzen teilerfremde Elemente a1,a2 eine Darstellung der 1.
[Bearbeiten] Beweis
Sei I = (a1,a2) das von den Elementen erzeugte Ideal. Da
ein Hauptidealring ist, handelt es sich um ein Hauptideal. Es gibt also ein Element g mit I = (g). Wir behaupten, dass g ein größter gemeinsamer Teiler von a1 und a2 ist. Weil sowohl
als auch
ist, muss g beide teilen. Sei nun h ein weiterer gemeinsamer Teiler von a1 und a2. h teilt dann alle Elemente in I, speziell also auch
. Aus
folgt unmittelbar auch die Existenz der gesuchten Darstellung.
Im teilerfremden Fall ist
wegen g = 1.
Da
und e teilerfremd gewählt wurden, muss für das gesuchte d gelten:
für ein
.Um d und k zu bestimmen, wird der erweiterte euklidische Algorithmus verwendet. Dazu wird zunächst ein Blick auf die euklidische Restfolge und ihre Eigenschaften geworfen:
[Bearbeiten] Definition
Seien zwei Elemente
eines euklidischen Bereichs R mit euklidischer Funktion δ gegeben. Dann nennt man die durch die Anfangsbedingungen a0 = a und a1 = b und die mittels der Division mit Rest ai = qiai + 1 + ai + 2 rekursiv bestimmte Folge (ai) die Folge der euklidischen Reste.
[Bearbeiten] Satz (Eigenschaften der euklidischen Restfolge)
Seien zwei Elemente
eines euklidischen Bereichs R mit euklidischer Funktion δ gegeben. Dann besitzt die Folge
der euklidischen Reste folgende Eigenschaften:
- Es ist
. - Es gibt ein (minimales)
mit ak = 0. - Es ist ggT(ai + 1,ai) = ggT(ai,ai − 1).
- Sei
der erste Index derart, dass ak = 0 ist. Dann ist ggT(a,b) = ak − 1.
[Bearbeiten] Beweis
- Ist eine direkte Folgerung aus der Definition der Division mit Rest.
- Folgt direkt aus 1., da δ(ai) immer kleiner wird, also null erreichen muss.
- Wenn g ein gemeinsamer Teiler von ai + 1 und ai + 2 ist, so ist g wegen ai = qiai + 1 + ai + 2 auch ein Teiler von ai und damit ein gemeinsamer Teiler von ai + 1 und ai. Entsprechend folgt auch die Umkehrung.
- Folgt aus 3. durch die Verkettung
.
Um nun zu a und b die passenden Koeffizienten nach Bézout zu ermitteln, werden zwei weitere Folgen
und
benötigt:
[Bearbeiten] Satz (Erweiterter euklidischer Algorithmus)[1]
Es seien a, b und
wie eben. Man setze
Für
gelte:
yi = qiyi + 1 + yi + 2
Ist k + 1 der erste Index, so dass ak + 1 = 0, dann ist

[Bearbeiten] Beweis
Es reicht, per Induktion zeigen, dass für alle Glieder der euklidischen Restfolge
gilt ai = xia + yib.
Die getroffene Wahl von ai,xi,yi für
ergibt die Induktionsverankerung:
b = a1 = x1a + y1b = 0a + 1b = b
Der Induktionsschritt für ai + 2 folgt durch wiederholtes Einsetzen:

[Bearbeiten] Beispiel
Angela hatte
berechnet und e = 91 bestimmt. Jetzt muss sie also mit
das d bestimmen:

Der Effizienz wegen wählt sie a0 = 37500,a1 = 91. Die qi ergeben sich aus
. So nähert sich Angela Schritt für Schritt ihrem gesuchten d an:
| i | ai | qi | xi | yi |
|---|---|---|---|---|
| 0 | 37500 | 412 | 1 | 0 |
| 1 | 91 | 11 | 0 | 1 |
| 2 | 8 | 2 | 1 | -412 |
| 3 | 3 | 1 | -11 | 4533 |
| 4 | 2 | 2 | 23 | -9478 |
| 5 | 1 | - | -34 | 14011 |
| 6 | 0 | - | - | - |
Da xi der Koeffizient von
war und yi der von e, folgt also d = y5 = 14011. Angelas Proberechnung ergibt
, das d ist also tatsächlich das multiplikative Inverse von
.
Mit der Berechnung von d ist die Schlüsselerzeugung abgeschlossen. Nun kann der öffentliche Schlüssel KE = (e,n) bekannt gegeben werden, so dass andere Personen dem Schlüsseleigner verschlüsselte Nachrichten zukommen lassen können.
Es ist essentiell wichtig, dass kein anderer der zuvor verwendeten Parameter bekannt wird, da sonst problemlos ein Angriff auf das Kryptosystem möglich ist. Diese Restriktion gilt nicht nur für d, sondern in gleichem Maße auch für
und natürlich für p und q, wie im Abschnitt über die Sicherheit noch einmal kurz beleuchtet wird.
[Bearbeiten] Kommunikation mit RSA
Ist der RSA-Schlüssel veröffentlich worden, kann die eigentliche Kommunikation mittels RSA erfolgen. Diese zerfällt im Wesentlichen in fünf einzelne Schritte:
- Umwandlung der Nachricht in eine Zahlenfolge
- Berechnung der Chiffre-Folge
- Datenübertragung
- Dechiffrierung der Chiffre
- Rückgewinnung der Nachricht aus der Zahlenfolge
Besonderes Augenmerk wird hier auf die Chiffrierung und Dechiffrierung gelegt, da diese noch zum Kernbereich des RSA-Systems gehören.
Die Erzeugung gut gewählter Zahlenfolgen und die Übertragung der Daten ist zwar ebenfalls ein interessantes Teilgebiet der Algebra und algebraischen Zahlentheorie, allerdings ist sie unabhängig vom RSA-Algorithmus und würde den Rahmen dieser Arbeit bei weitem sprengen. Daher soll im weiteren Verlauf davon ausgegangen werden, dass die fehlerfreie Übermittlung einer verschlüsselten Nachricht sichergestellt ist und der Empfänger eines Chiffretextes diesen so erhält, wie ihn der Absender losgeschickt hat. Eine Einführung in das Thema Kodierungstheorie bietet zum Beispiel R.-H. Schulz[2].
[Bearbeiten] Abbildung einer Nachricht auf eine Zahlenfolge
Um eine Nachricht mit RSA verschlüsseln zu können, muss sie als Folge
von natürlichen Zahlen aus dem Intervall [0,n − 1] vorliegen. Dieses Problem ist mehr theoretischer Natur als eine echte Hürde in der Praxis.
Da in der elektronischen Datenverarbeitung ohnehin alle Daten in einer Binärkodierung vorliegen, kann (pi) ohne zusätzlichen Aufwand gebildet werden. Man unterteilt die Bitsequenz schlicht sukzessive von vorne nach hinten, so dass jeder Abschnitt pi kleiner ist als n.
Selbstverständlich muss diese Zuordnung aus der Menge der Texte nach [0,n − 1] injektiv sein, damit der Empfänger der Nachricht diese am Ende wieder eindeutig in den originalen Klartext übersetzen kann. Andererseits sollte sie den Bildraum möglichst gut ausschöpfen, um keinen Angriffspunkt zu bieten.
[Bearbeiten] Beispiel
Angela und Barack wollen ihre Nachrichten einfach halten. Sie beschränken sich auf die Kleinbuchstaben a bis z, die sie mit 1 bis 26 durchnummerieren, dazu ein \glqq,\grqq (27), den \glqq.\grqq (28) und das Leerzeichen (29). Ein schnelles Nachrechnen ergibt 303 = 27000, die einzelnen Folgenglieder ki bestehen daher aus drei Buchstabenwerten ki,1,ki,2,ki,3 und die beiden setzen
.
So vorbereitet kann Barack seine erste Nachricht an Angela vorbereiten: hello angie, it works. love, barack
| Abschnitt | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| Text | hel | lo | ang | ie, | it | wo |
| pi | 10958 | 26562 | 6721 | 24459 | 18299 | 14219 |
| Abschnitt | 7 | 8 | 9 | 10 | 11 | 12 |
| Text | rks | . l | ove | , b | ara | ck |
| pi | 17448 | 11698 | 5175 | 2697 | 1441 | 333 |
[Bearbeiten] Verschlüsseln von Texten mit e und n
Der Ersteller einer verschlüsselten Nachricht verfügt über die Kenntnis des Schlüssels KE = (e,n). Wie bereits erwähnt bildet man die Chiffre c eines Klartextes p durch
.
Es steht außer Frage, dass diese Berechnung bei einem Exponenten im Bereich von e = 2512 auf den ersten Blick jeden Rahmen sprengt. Selbst modernste Rechner können nur etwa 240 Operationen in der Sekunde durchführen, e-maliges Multiplizieren von p führt also nicht zum Ziel.
Um die Berechnung zu beschleunigen, verwendet man daher einen optimierten Algorithmus zur Potenzierung, den Square-and-Multiply -Algorithmus. Dieser nutzt aus, dass jede Zahl eindeutig als Summe von Zweierpotenzen darstellbar ist:
[Bearbeiten] Bemerkung
Sei e eine natürliche Zahl und
. Dann gibt es eine Darstellung von e wie folgt:
.Dabei ist
die Charakteristik, die angibt, ob die Potenz 2i in der Summendarstellung von e vorkommt.
Diese Bemerkung ist lediglich eine Verklausulierung der Binärdarstellung einer Zahl.
[Bearbeiten] Square-and-Multiply
Gegeben seien natürliche Zahlen p und e. Gesucht ist c = pe. Bestimme c rekursiv durch

Benutzt man für die Darstellung von e die Form aus der vorhergehenden Bemerkung, ergibt sich

und durch Ausklammern folgt
,was der Beschreibung des Algorithmus entspricht, weil
ist, wenn ei = 1, und
ist, wenn ei = 0.
Es ist schnell zu erkennen, dass auf diese Weise l Quadrierungen und zusätzlich
Multiplikationen durchgeführt werden müssen, was in etwa log2e Operationen entspricht. Bei Anwendung in RSA erfolgt nach jedem Schritt noch die Modulo-Berechnung zum Modul n, so dass sich eine Laufzeit von
ergibt.
[Bearbeiten] Beispiel
Barack hat Angelas Chiffrier-Schlüssel
erhalten und bestimmt als erstes die Darstellung von e als Binärzahl, was ihm die Folge von ei gibt. e = 9110 = 10110112, wobei das höchstwertige Bit an erster Stelle für i = l steht. Nun kann er die Potenzierungen vornehmen:









So sendet Barack schließlich seinen Geheimtext, der aus der Folge seiner ci besteht, an Angela:
[Bearbeiten] Entschlüsseln von Nachrichten mit d und n
Grundsätzlich funktioniert die Entschlüsselung einer Nachricht ebenso wie die Verschlüsselung. Die einzelnen Folgeglieder ci werden mit d potenziert und am Ende erhalten wir
. Da die Korrektheit des Verfahrens bereits bewiesen wurde und von einer fehlerfreien Übertragung ausgegangen wird, ist
.
Mit kleinen Modifikationen kann die Berechnung von
allerdings noch spürbar verbessert werden. Da die entschlüsselnde Person Kenntnis von den Primzahlen p und q hat, die dem RSA-Modul n zugrunde liegen, kann die Potenzierung auf die Restklassen modulo p und modulo q zurückgeführt werden. Statt also
zu berechnen, bestimmt sie
und
.
Um daraus das korrekte pi zu bestimmen, wird die Folgerung des chinesischen Restsatzes benutzt, dass ein System simultaner Kongruenzen teilerfremder Moduln eine eindeutige Lösung modulo des Produkts besitzt:
[Bearbeiten] Chinesischer Restsatz[3]
Gegeben seien
und
verschieden. Sei n = pq und
so, dass yp + zq = 1.
Zu den simultanen Kongruenzen
und
gibt es genau eine Lösung. Diese ist äquivalent zu der einfachen Kongruenz
.[Bearbeiten] Beweis
Die Existenz und Eindeutigkeit der Lösung wurde bereits an früherer Stelle durch den induzierten Isomorphismus
nachgewiesen. Auch die sich ergebende Formel sei noch schnell motiviert:
Es gilt yp + zq = 1, Multiplikation mit (a − b) ergibt yp(a − b) + zq(a − b) = (a − b). Umstellen liefert x: = b + zq(a − b) = a − yp(a − b), wobei
äquivalent zu a ist und
äquivalent zu b ist. 
[Bearbeiten] Beispiel
Angie hat Baracks Geheimtext C erhalten. Nun muss sie nur noch jedes Folgenglied mit ihrem Entschlüsselungsexponenten potenzieren und weiß, was ihr neuer Bekannter geschrieben hat. Zuerst bestimmt sie mit dem erweiterten euklidischen Algorithmus
, so dass yp + zq = 1. Sie erhält y = − 123 und z = 74.

Aus Freude über die netten Worte beschließt sie, von nun an in engem Kontakt zu Barack zu bleiben und wartet darauf, dass auch er einen RSA-Schlüssel veröffentlicht.
[Bearbeiten] Sicherheit
[Bearbeiten] Faktorisierungsalgorithmen
Wie man bei der Konstruktion der RSA-Schlüssel gesehen hat, ist das Wissen über die Primzahlen p und q eine wesentliche Voraussetzung, um den Entschlüsselungsexponenten d zu ermitteln. Die Sicherheit von RSA beruht darauf, dass derzeit kein Algorithmus bekannt ist, mit dem man in akzeptabler (das heißt polynomieller) Laufzeit die Primfaktorzerlegung einer gegebenen Zahl n finden kann. Ob ein solcher Algorithmus allerdings wirklich nicht existieren kann, ist eine unbewiesene Annahme.
Auch wenn derzeit kein Algorithmus bekannt ist, der eine natürliche Zahl effizient faktorisieren kann, wurden in den letzten Jahrzehnten große Fortschritte auf dem Gebiet der Faktorisierungsalgorithmen erzielt. Viele dieser Erfolge sind auf John M. Pollard zurückzuführen, von dem unter anderem der Pollard-p-1-Algorithmus auf Grundlage des kleinen Satzes von Fermat stammt. Auch das so genannte Zahlkörpersieb stammt von Pollard. Mit dieser Methode wurde unter anderem 1992 die Fermat-Zahl F9 komplett faktorisiert, die einen 49- und einen 99-stelligen Primfaktor besitzt. Ebenfalls wurde mit einer Version des Zahlkörpersiebs im Jahre 2005 ein 200-stelliger RSA-Modul faktorisiert. Aus diesem Grund gelten heute nur noch RSA-Schlüssel als sicher, deren zu Grunde liegenden Primzahlen eine Länge von mindestens 512 Bit besitzen.
[Bearbeiten] Angriffe auf
und d
Es liegt auf der Hand anzunehmen, dass man statt der Faktorisierung von n einen direkten Angriff auf
oder d starten könnte. Es lässt sich allerdings recht einfach zeigen, dass aus der Kenntnis von
oder d mit wenig Aufwand auch die Primfaktorzerlegung von n folgt, die Bestimmung von
oder d also nicht leichter sein kann als die Faktorisierung.
Der einfache Fall ist die Kenntnis von
. Es ergeben sich die beiden Gleichungen
,wobei sowohl n als auch
bekannt sind. Es ergibt sich nach der Substitution
die quadratische Gleichung
,deren Lösung schnell bestimmt werden kann. Die Bestimmung von
ist also nicht leichter als die Zerlegung von n in Primfaktoren.
Ebenfalls leicht einzusehen ist der Fall von bekanntem d. Der Beweis ist allerdings um einiges komplizierter, daher soll hier nur eine kurze Idee angeführt werden. Grundlage ist ein probalistischer Algorithmus, der eine Menge von Zahlen aus
testet, ob für sie oder eine ihrer Potenzen die Kongruenz
erfüllt ist.
[Bearbeiten] Lemma
Sei n = pq eine natürliche Zahl mit den ungeraden Primfaktoren
und 1 < x < n − 1 eine nicht triviale Lösung von
. Dann sind
die beiden Primfaktoren von n.
[Bearbeiten] Beweis
Es gilt
sowie
. Es folgt direkt
, oder anders ausgedrückt kn = (x + 1)(x − 1) für ein
. Da x − 1 < x + 1 < n, müssen echte Teiler von n existieren, so dass 1 < ggT(x − 1),n) < n und 1 < ggT < n. Der größte gemeinsame Teiler von x − 1 und x + 1 kann maximal 2 sein, also teilt jeder der Faktoren p,q genau einen der Faktoren (x − 1),(x + 1). 
Für den Faktorisierungsalgorithmus muss nun noch eine Faktorzerlegung von de − 1 der Form 2st erzeugt werden, so dass t eine ungerade Zahl ist. Der Algorithmus wählt nun zufällig eine Zahl 1 < w < n aus und bestimmt den größten gemeinsamen Teiler von w und n. Ist dieser ungleich 1, wurde bereits ein Primfaktor gefunden und der Algorithmus war erfolgreich. Ansonsten wird
berechnet. Solange das folgende Zahl Ergebnis ungleich 1 ist, wird es quadriert. Gilt
und
, so war der Algorithmus ebenfalls erfolgreich, da nun das vorangegangene Lemma angewendet werden kann. Ansonsten bestimmt er ein neues w und beginnt erneut.Die Erfolgswahrscheinlichkeit des Algorithmus liegt bei 50%.
Ein weiteres Risiko ist die Festlegung eines zu kleinen d, speziell
. In diesem Fall existiert ein auf Kettenbrüchen basierender Angriffsalgorithmus, den Michael J. Wiener beschrieben hat[4]. Es wird hier noch einmal deutlich, dass die Wahl von e (und damit auch von d) nicht völlig willkürlich erfolgen sollte.
[Bearbeiten] Andere Angriffe auf RSA
Die Public-Key-Kryptosysteme haben auch vollkommen neue Arten von Angriffen auf die Algorithmen hervorgebracht. So ist es möglich, eine grobe Abschätzung der Größe von d vorzunehmen, wenn ein Angreifer in der Lage ist, die aufgewendete Zeit für eine Entschlüsselung zu bestimmen.
Da die Geschwindigkeit des Square-and-Multiply-Verfahrens von der Länge des Exponenten abhängig ist, lässt sich leicht erkennen, dass die Dechiffrierung bei kleinem d weniger Zeit in Anspruch nimmt als bei einem d, dessen Länge in der Nähe des RSA-Moduls liegt. Solche Timing attacks , die zuerst von Paul C. Kocher beschrieben wurden[5], sind im Allgemeinen allerdings schwer zu kontrollieren, da sie nicht ausschließlich von d abhängen, sondern auch von der eigentlichen Implementation der Algorithmen und der genutzten Hardware.
Andere Angriffe entfernen sich von der Idee, RSA an sich zu brechen, und wenden sich der umgebenden Architektur zu. Der bekannteste unter ihnen ist der Man-in-the-middle-Angriff, der sich die Problematik zunutze macht, zum Beispiel im Internet eine eindeutige Identifizierung des Gegenübers vorzunehmen.
So ist es zum Beispiel denkbar, dass Barack, der mit Angie kommunizieren möchte, in Wirklichkeit Hugos öffentlichen Schlüssel untergeschoben bekommt, da sich Hugo Barack gegenüber als Angie ausgibt und umgekehrt. So kann Hugo die eigentlich für Angie bestimmten Nachrichten mit seinem eigenen Schlüssel dechiffrieren, nach Belieben verändern und dann erst an Angie weiterleiten.
[Bearbeiten] Nachteile und Grenzen von Public-Key-Systemen
Public-Key-Kryptosysteme wie RSA haben in der Praxis zwei entscheidende Nachteile:
- Die Berechnung der Geheim- und Klartexte ist extrem langsam
- Es muss zweifelsfrei sichergestellt werden, dass der Besitzer eines Schlüssels die Person ist, die er vorgibt zu sein
Aktuelle, in der Praxis eingesetzte Verfahren, die symmetrisch arbeiten, sind etwa um den Faktor 1000 schneller als RSA, weil die dort meistens eingesetzten nichtlinearen Substitutionen und Permutationen effizienter umzusetzen sind als Potenz- und Modulo-Operationen. Entsprechend ist es praktisch unmöglich, RSA in zeitkritischen Anwendungen einzusetzen, zum Beispiel bei der Telekommunikation. Abhörsichere Telefonleitungen sind in der Regel also nicht durch asymmetrische Verschlüsselung zu schützen.
Es ist häufig so, dass die Kommunikation über einen asymmetrisch gesicherten Kanal so kurz wie möglich ausfallen soll. In der Praxis ist es üblich, für den eigentlichen Datenaustausch ein symmetrisches Verfahren wie AES oder RC4 zu verwenden und Public-Key-Verfahren wie RSA lediglich zum Austausch der genutzten Schlüssel einzusetzen.
Es wird also eine sichere Verbindung mit RSA aufgebaut, der geheime Schlüssel für das symmetrische Verfahren übertragen und die weitere Kommunikation dann darüber abgewickelt.
Noch schwieriger ist das Problem der Authentifizierung des Schlüsselinhabers. Im Internet kann man nur selten davon ausgehen, dass es sich beim Gegenüber wirklich um die Person handelt, die sie zu sein vorgibt.
Entsprechend reicht es nicht aus, mit ihr sicher zu kommunizieren, man muss zuallererst klären, mit wem man es eigentlich zu tun hat. Dafür gibt es so genannte Trust Center, die mit der Verwaltung der öffentlichen Schlüssel betraut sind. Ein vertrauenswürdiger Kommunikationspartner authentifiziert sich dort und hinterlegt dann seinen persönlichen Schlüssel, womit sichergestellt ist, dass seine Identität geklärt ist.
[Bearbeiten] Quellen und Weiterführendes
- ↑ Müller-Stach, Piontkowski: Elementare und algebraische Zahlentheorie, vieweg, 2006, S. 16, ISBN 978-3834802118
- ↑ R.-H. Schulz: Codierungstheorie: Eine Einführung, vieweg, 2003, ISBN 978-3528164195
- ↑ Müller-Stach, Piontkowski: Elementare und algebraische Zahlentheorie, vieweg, 2006, S. 22f, ISBN 978-3834802118
- ↑ M.J. Wiener: Cryptanalysis of short RSA secret exponents, IEEE Transaction on Information Theory, Vol. 36, 1990
- ↑ Paul C. Kocher: Timing Attacks on Implementations of Diffie-Hellman, RSA, DSS, and Other Systems, CRYPTO 1996, S.104ff.