Seminar zur Zahlentheorie (Osnabrück 2008/09)/Public-Key-Kryptographie
Einführung
BearbeitenMotivation
BearbeitenSchon 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.
Kryptosysteme
BearbeitenDas 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:
Definition (Schlüssel)
BearbeitenEin Schlüsselpaar 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.
Definition (Verschlüsselungsfunktion)
BearbeitenEine 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 gilt .
Definition (Kryptosystem)
BearbeitenEin 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.
Definition (symmetrisches Verfahren)
BearbeitenEin Kryptoverfahren heißt symmetrisch , wenn gilt. Man spricht dann kurz vom Schlüssel und identifiziert mit .
Beispiel (Caesar-Chiffre)
BearbeitenDas einfachste symmetrische Verschlüsselungsverfahren ist die so genannte Caesar-Chiffre, die auf monoalphabetischer Substitution beruht. Die Klartexte bestehen aus einer endlichen Folge . Für den Schlüssel wählt man . 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 und . Der Chiffrierungs-Schlüssel 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 und müssen effizient berechenbar sein.
- und müssen mit angemessenem Aufwand erzeugbar sein.
- Aus einem gegebenen Geheimtext und dem Schlüssel darf sich nicht der ursprüngliche Klartext ermitteln lassen.
- Die Bestimmung von aus 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 leicht zu bestimmen ist, jedoch schwer, solange keine weiteren Parameter bekannt sind.
Das RSA-Verfahren
BearbeitenEines 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.
Bestandteile des Kryptosystems
BearbeitenAlphabet und Schlüssel
BearbeitenFür die Beschreibung des Kryptosystems RSA wird zuallererst eine natürliche Zahl benötigt, deren einzige aus Sicherheitsgründen verschiedenen Primfaktoren und sind. Sie legt alle wichtigen Eigenschaften von RSA fest.
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 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 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 und . Für benötigt man neben dem Geheimtext die Bestandteile und . Zusammenfassend lässt sich also sagen:
Korrektheit des Verfahrens
BearbeitenBevor die Korrektheit von RSA nachgewiesen werden kann, seien noch einmal einige grundlegende Begriffe für den kommutativen Ring wiederholt:
Satz (Einheit in )
BearbeitenEine Zahl ist genau dann Einheit in , wenn und teilerfremd sind.
Beweis
BearbeitenDer Beweis folgt direkt aus dem Lemma von Bézout . Sind und teilerfremd, so gibt es eine Darstellung und damit und Einheit. Ist umgekehrt Einheit, so existiert ein mit und somit wiederum eine Vielfachendarstellung .
Definition (Einheitengruppe)
BearbeitenDie 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 und als Primzahlen zweifelsohne teilerfremd sind.
Damit und wirklich kryptographische Funktionen sind, also gilt, ist die Wahl von und nicht frei. Folgende Forderungen werden an die beiden Exponenten gestellt:
- Wähle , teilerfremd zu
- Bestimme so, dass
Der wichtigste Bestandteil im Beweis, dass RSA auf die so definierte Weise korrekt arbeitet, ist der
Satz von Euler
BearbeitenSei eine natürliche Zahl. Dann gilt für jede zu teilerfremde Zahl die Beziehung
Beweis
BearbeitenDie zu 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 .
Die Anforderung an und war nun gerade, dass ist, oder anders ausgedrückt , wobei eindeutig bestimmt ist. Setzt man diese Formel ein, so ergibt sich ohne Umschweife
Nun gilt der Satz von Euler nur bei zu teilerfremden Zahlen. Zusätzlich müssen also auch noch die Nullteiler betrachtet werden. O.B.d.A gelte , denn der Fall, dass von geteilt wird, läuft vollkommen analog ab.
Die multiplikative Eigenschaft der eulerschen -Funktion liefert schnell folgende
Bemerkung
BearbeitenGilt für zwei Primzahlen und , so folgt
Bemerkung
BearbeitenAuf kann nun wiederum der Satz von Euler angewandt werden. Es ergeben sich die folgenden beiden Kongruenzen:
- für ein
Beweis
BearbeitenDie erste Kongruenz gilt offensichtlich, da teilerfremd zu ist und die Voraussetzungen des Satzes von Euler erfüllt sind. Ebenso trivial ist auch 2., weil ein Vielfaches von 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:
Chinesischer Restsatz
BearbeitenSeien verschiedene Primzahlen und . Dann induzieren die kanonischen Ringhomomorphismen und einen Isomorphismus .
Insbesondere gibt es zu gegebenen ganzen Zahlen also genau eine natürliche Zahl , die die simultanen Kongruenzen löst.
Beweis
BearbeitenDa die endlichen Ringe und die gleiche Anzahl von Elementen haben, nämlich , genügt es, die Injektivität der induzierten Abbildung zu zeigen. Sei eine natürliche Zahl, die in zu null wird, also modulo den Rest null hat. Dann ist ein Vielfaches von , d.h., in der Primfaktorzerlegung von muss und vorkommen. Also muss nach Teilbarkeitskriterium ein Vielfaches des Produktes sein, also ein Vielfaches von . Damit ist und die Abbildung ist injektiv.
Auf Grundlage der ersten Bemerkung gilt
Mit dem eben erhaltenen Isomorphismus ist die Korrektheit des RSA-Verfahrens bewiesen.
Erzeugung von RSA-Schlüsselpaaren
BearbeitenMit 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 , und 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.
Beispiel
BearbeitenAngela 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.
Bestimmung des RSA-Moduls
BearbeitenZu Beginn der RSA-Schlüsselerzeugung wird zunächst der Modul bestimmt, der die Restklassen festlegt. Dazu wählt man zwei große Primzahlen bestimmter Länge und setzt
Mit 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. und haben im Binärsystem eine feste Anzahl Ziffern, üblicherweise 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.
Lemma (Aufwand der Primzahlbestimmung)
BearbeitenDer Aufwand, eine Primzahl der Länge in einem gegebenem Intervall zu finden, ist in der Komplexitätsklasse , wobei der Aufwand ist, eine Zahl auf Primalität zu testen.
Beweis
BearbeitenDer 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 sind. Für die die Primzahlfunktion prim gilt demnach die Abschätzung
Für Zahlen der festen Länge aus dem Intervall ergibt sich aus dieser Formel durch Einsetzen:
Der Anteil der Primzahlen unter den Binärzahlen der Länge liegt also etwa bei
Zum Finden einer solchen Primzahl benötigt man also durchschnittlich etwa
Versuche.
Beispiel
BearbeitenAngela entscheidet sich der Übersichtlichkeit wegen für Zahlen der Länge 8 im Binärsystem. Die Primzahlen und entnimmt sie einer Primzahltabelle. Ihr RSA-Modul ist also .
Bestimmung des Verschlüsselungs-Exponenten
BearbeitenNach der Bestimmung des Moduls erfolgt als nächstes die Wahl des Verschlüsselungsexponenten . Dieser muss teilerfremd zur Mächtigkeit von und kleiner als dieselbe sein.
Da sich innerhalb der gegebenen Beschränkungen frei wählen lässt, wird in der Praxis häufig verwendet.
Ist das 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 der Aufwand größer, die Teilerfremdheit von und sicherzustellen.
Beispiel
BearbeitenAngela sucht also ein mit und .
Sie berechnet und wählt als dazu teilerfremdes die Zahl .
Bestimmung des Entschlüsselungs-Exponenten
BearbeitenIst bestimmt, kann der Dechiffrier-Exponent berechnet werden. Während und wegen der wenigen Anforderungen, die an sie gestellt wurden, noch recht einfach zu bestimmen waren, ist die Bestimmung von ungleich aufwendiger und benötigt einige Vorbereitung.
Der Entschlüsselungs-Exponent soll das Inverse von in sein. Um 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.
Lemma (Lemma von Bézout)
BearbeitenZwei Elemente besitzen stets einen größten gemeinsamen Teiler , und dieser lässt sich als Linearkombination von und darstellen, d.h. es gibt Elemente mit .
Insbesondere besitzen teilerfremde Elemente eine Darstellung der 1.
Beweis
BearbeitenSei das von den Elementen erzeugte Ideal. Da ein Hauptidealring ist, handelt es sich um ein Hauptideal. Es gibt also ein Element mit . Wir behaupten, dass ein größter gemeinsamer Teiler von und ist. Weil sowohl als auch ist, muss beide teilen. Sei nun ein weiterer gemeinsamer Teiler von und . teilt dann alle Elemente in , speziell also auch . Aus folgt unmittelbar auch die Existenz der gesuchten Darstellung.
Im teilerfremden Fall ist wegen .
Da und teilerfremd gewählt wurden, muss für das gesuchte gelten:
Um und zu bestimmen, wird der erweiterte euklidische Algorithmus verwendet. Dazu wird zunächst ein Blick auf die euklidische Restfolge und ihre Eigenschaften geworfen:
Definition
BearbeitenSeien zwei Elemente eines euklidischen Bereichs mit euklidischer Funktion gegeben. Dann nennt man die durch die Anfangsbedingungen und und die mittels der Division mit Rest rekursiv bestimmte Folge die Folge der euklidischen Reste.
Satz (Eigenschaften der euklidischen Restfolge)
BearbeitenSeien zwei Elemente eines euklidischen Bereichs mit euklidischer Funktion gegeben. Dann besitzt die Folge der euklidischen Reste folgende Eigenschaften:
- Es ist .
- Es gibt ein (minimales) mit .
- Es ist .
- Sei der erste Index derart, dass ist. Dann ist .
Beweis
Bearbeiten- Ist eine direkte Folgerung aus der Definition der Division mit Rest.
- Folgt direkt aus 1., da immer kleiner wird, also null erreichen muss.
- Wenn ein gemeinsamer Teiler von und ist, so ist wegen auch ein Teiler von und damit ein gemeinsamer Teiler von und . Entsprechend folgt auch die Umkehrung.
- Folgt aus 3. durch die Verkettung
Um nun zu und die passenden Koeffizienten nach Bézout zu ermitteln, werden zwei weitere Folgen und benötigt:
Satz (Erweiterter euklidischer Algorithmus)[1]
BearbeitenEs seien , und wie eben. Man setze
Für gelte:
Ist der erste Index, so dass , dann ist
Beweis
BearbeitenEs reicht, per Induktion zeigen, dass für alle Glieder der euklidischen Restfolge gilt .
Die getroffene Wahl von für ergibt die Induktionsverankerung:
Der Induktionsschritt für folgt durch wiederholtes Einsetzen:
Beispiel
BearbeitenAngela hatte berechnet und bestimmt. Jetzt muss sie also mit das bestimmen:
Der Effizienz wegen wählt sie . Die ergeben sich aus . So nähert sich Angela Schritt für Schritt ihrem gesuchten an:
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 der Koeffizient von war und der von , folgt also . Angelas Proberechnung ergibt , das ist also tatsächlich das multiplikative Inverse von .
Mit der Berechnung von ist die Schlüsselerzeugung abgeschlossen. Nun kann der öffentliche Schlüssel 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 , sondern in gleichem Maße auch für und natürlich für und , wie im Abschnitt über die Sicherheit noch einmal kurz beleuchtet wird.
Kommunikation mit RSA
BearbeitenIst 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].
Abbildung einer Nachricht auf eine Zahlenfolge
BearbeitenUm eine Nachricht mit RSA verschlüsseln zu können, muss sie als Folge von natürlichen Zahlen aus dem Intervall 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 ohne zusätzlichen Aufwand gebildet werden. Man unterteilt die Bitsequenz schlicht sukzessive von vorne nach hinten, so dass jeder Abschnitt kleiner ist als .
Selbstverständlich muss diese Zuordnung aus der Menge der Texte nach 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.
Beispiel
BearbeitenAngela 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 , die einzelnen Folgenglieder bestehen daher aus drei Buchstabenwerten 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 |
10958 | 26562 | 6721 | 24459 | 18299 | 14219 | |
Abschnitt | 7 | 8 | 9 | 10 | 11 | 12 |
Text | rks | . l | ove | , b | ara | ck |
17448 | 11698 | 5175 | 2697 | 1441 | 333 |
Verschlüsseln von Texten mit und
BearbeitenDer Ersteller einer verschlüsselten Nachricht verfügt über die Kenntnis des Schlüssels . Wie bereits erwähnt bildet man die Chiffre eines Klartextes durch .
Es steht außer Frage, dass diese Berechnung bei einem Exponenten im Bereich von auf den ersten Blick jeden Rahmen sprengt. Selbst modernste Rechner können nur etwa Operationen in der Sekunde durchführen, -maliges Multiplizieren von 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:
Bemerkung
BearbeitenSei eine natürliche Zahl und . Dann gibt es eine Darstellung von wie folgt:
Dabei ist die Charakteristik, die angibt, ob die Potenz in der Summendarstellung von vorkommt.
Diese Bemerkung ist lediglich eine Verklausulierung der Binärdarstellung einer Zahl.
Square-and-Multiply
BearbeitenGegeben seien natürliche Zahlen und . Gesucht ist . Bestimme rekursiv durch
Benutzt man für die Darstellung von die Form aus der vorhergehenden Bemerkung, ergibt sich
und durch Ausklammern folgt
was der Beschreibung des Algorithmus entspricht, weil ist, wenn , und ist, wenn .
Es ist schnell zu erkennen, dass auf diese Weise Quadrierungen und zusätzlich Multiplikationen durchgeführt werden müssen, was in etwa Operationen entspricht. Bei Anwendung in RSA erfolgt nach jedem Schritt noch die Modulo-Berechnung zum Modul , so dass sich eine Laufzeit von ergibt.
Beispiel
BearbeitenBarack hat Angelas Chiffrier-Schlüssel erhalten und bestimmt als erstes die Darstellung von als Binärzahl, was ihm die Folge von gibt. , wobei das höchstwertige Bit an erster Stelle für steht. Nun kann er die Potenzierungen vornehmen:
So sendet Barack schließlich seinen Geheimtext, der aus der Folge seiner besteht, an Angela:
Entschlüsseln von Nachrichten mit und
BearbeitenGrundsätzlich funktioniert die Entschlüsselung einer Nachricht ebenso wie die Verschlüsselung. Die einzelnen Folgeglieder werden mit 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 und hat, die dem RSA-Modul zugrunde liegen, kann die Potenzierung auf die Restklassen modulo und modulo zurückgeführt werden. Statt also zu berechnen, bestimmt sie und .
Um daraus das korrekte zu bestimmen, wird die Folgerung des chinesischen Restsatzes benutzt, dass ein System simultaner Kongruenzen teilerfremder Moduln eine eindeutige Lösung modulo des Produkts besitzt:
Chinesischer Restsatz[3]
BearbeitenGegeben seien und verschieden. Sei und so, dass .
Zu den simultanen Kongruenzen und gibt es genau eine Lösung. Diese ist äquivalent zu der einfachen Kongruenz
Beweis
BearbeitenDie 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 , Multiplikation mit ergibt . Umstellen liefert , wobei äquivalent zu ist und äquivalent zu ist.
Beispiel
BearbeitenAngie hat Baracks Geheimtext 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 . Sie erhält und .
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.
Sicherheit
BearbeitenFaktorisierungsalgorithmen
BearbeitenWie man bei der Konstruktion der RSA-Schlüssel gesehen hat, ist das Wissen über die Primzahlen und eine wesentliche Voraussetzung, um den Entschlüsselungsexponenten 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 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 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.
Angriffe auf und
BearbeitenEs liegt auf der Hand anzunehmen, dass man statt der Faktorisierung von einen direkten Angriff auf oder starten könnte. Es lässt sich allerdings recht einfach zeigen, dass aus der Kenntnis von oder mit wenig Aufwand auch die Primfaktorzerlegung von folgt, die Bestimmung von oder also nicht leichter sein kann als die Faktorisierung.
Der einfache Fall ist die Kenntnis von . Es ergeben sich die beiden Gleichungen
wobei sowohl 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 in Primfaktoren.
Ebenfalls leicht einzusehen ist der Fall von bekanntem . 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.
Lemma
BearbeitenSei eine natürliche Zahl mit den ungeraden Primfaktoren und eine nicht triviale Lösung von . Dann sind
die beiden Primfaktoren von n.
Beweis
BearbeitenEs gilt sowie . Es folgt direkt , oder anders ausgedrückt für ein . Da , müssen echte Teiler von existieren, so dass und . Der größte gemeinsame Teiler von und kann maximal 2 sein, also teilt jeder der Faktoren genau einen der Faktoren .
Für den Faktorisierungsalgorithmus muss nun noch eine Faktorzerlegung von der Form erzeugt werden, so dass eine ungerade Zahl ist. Der Algorithmus wählt nun zufällig eine Zahl aus und bestimmt den größten gemeinsamen Teiler von und . 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 und beginnt erneut.Die Erfolgswahrscheinlichkeit des Algorithmus liegt bei 50%.
Ein weiteres Risiko ist die Festlegung eines zu kleinen , 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 (und damit auch von ) nicht völlig willkürlich erfolgen sollte.
Andere Angriffe auf RSA
BearbeitenDie 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 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 weniger Zeit in Anspruch nimmt als bei einem , 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 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.
Nachteile und Grenzen von Public-Key-Systemen
BearbeitenPublic-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.
Quellen und Weiterführendes
Bearbeiten- ↑ 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.