Seminar zur Zahlentheorie (Osnabrück 2008/09)/Public-Key-Kryptographie

Einführung Bearbeiten

Motivation Bearbeiten

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.

Kryptosysteme Bearbeiten

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:

Definition (Schlüssel) Bearbeiten

Ein 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) Bearbeiten

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   gilt  .

Definition (Kryptosystem) Bearbeiten

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.

Definition (symmetrisches Verfahren) Bearbeiten

Ein Kryptoverfahren heißt symmetrisch , wenn   gilt. Man spricht dann kurz vom Schlüssel   und identifiziert   mit  .

Beispiel (Caesar-Chiffre) Bearbeiten

Das 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 Bearbeiten

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.

Bestandteile des Kryptosystems Bearbeiten

Alphabet und Schlüssel Bearbeiten

Fü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 Bearbeiten

Bevor die Korrektheit von RSA nachgewiesen werden kann, seien noch einmal einige grundlegende Begriffe für den kommutativen Ring   wiederholt:

Satz (Einheit in  ) Bearbeiten

Eine Zahl   ist genau dann Einheit in  , wenn   und   teilerfremd sind.

Beweis Bearbeiten

Der 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) Bearbeiten

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   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 Bearbeiten

Sei   eine natürliche Zahl. Dann gilt für jede zu   teilerfremde Zahl   die Beziehung

 .

Beweis Bearbeiten

Die 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 Bearbeiten

Gilt   für zwei Primzahlen   und  , so folgt

  und  .


Bemerkung Bearbeiten

Auf   kann nun wiederum der Satz von Euler angewandt werden. Es ergeben sich die folgenden beiden Kongruenzen:

  •   für ein  
  •  

Beweis Bearbeiten

Die 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 Bearbeiten

Seien   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 Bearbeiten

Da 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

  für alle  .

Mit dem eben erhaltenen Isomorphismus ist die Korrektheit des RSA-Verfahrens bewiesen.

Erzeugung von RSA-Schlüsselpaaren Bearbeiten

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  ,   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 Bearbeiten

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.

Bestimmung des RSA-Moduls   Bearbeiten

Zu 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) Bearbeiten

Der 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 Bearbeiten

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   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 Bearbeiten

Angela 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   Bearbeiten

Nach 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 Bearbeiten

Angela sucht also ein   mit   und  .
Sie berechnet   und wählt als dazu teilerfremdes   die Zahl  .

Bestimmung des Entschlüsselungs-Exponenten   Bearbeiten

Ist   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) Bearbeiten

Zwei 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 Bearbeiten

Sei   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:

  für ein  .

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 Bearbeiten

Seien 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) Bearbeiten

Seien zwei Elemente   eines euklidischen Bereichs   mit euklidischer Funktion   gegeben. Dann besitzt die Folge   der euklidischen Reste folgende Eigenschaften:

  1. Es ist  .
  2. Es gibt ein (minimales)   mit  .
  3. Es ist  .
  4. Sei   der erste Index derart, dass   ist. Dann ist  .

Beweis Bearbeiten

  1. Ist eine direkte Folgerung aus der Definition der Division mit Rest.
  2. Folgt direkt aus 1., da   immer kleiner wird, also null erreichen muss.
  3. 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.
  4. 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] Bearbeiten

Es seien  ,   und   wie eben. Man setze

 ,  ,  ,  .

Für   gelte:

 
 

Ist   der erste Index, so dass  , dann ist

 

Beweis Bearbeiten

Es 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 Bearbeiten

Angela 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 Bearbeiten

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:

  1. Umwandlung der Nachricht in eine Zahlenfolge
  2. Berechnung der Chiffre-Folge
  3. Datenübertragung
  4. Dechiffrierung der Chiffre
  5. 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 Bearbeiten

Um 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 Bearbeiten

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  , 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   Bearbeiten

Der 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 Bearbeiten

Sei   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 Bearbeiten

Gegeben 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 Bearbeiten

Barack 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   Bearbeiten

Grundsä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] Bearbeiten

Gegeben 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 Bearbeiten

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  , Multiplikation mit   ergibt  . Umstellen liefert  , wobei   äquivalent zu   ist und   äquivalent zu   ist.  

Beispiel Bearbeiten

Angie 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 Bearbeiten

Faktorisierungsalgorithmen Bearbeiten

Wie 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   Bearbeiten

Es 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

  und  ,

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 Bearbeiten

Sei   eine natürliche Zahl mit den ungeraden Primfaktoren   und   eine nicht triviale Lösung von  . Dann sind

  und  

die beiden Primfaktoren von n.

Beweis Bearbeiten

Es 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 Bearbeiten

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   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 Bearbeiten

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.

Quellen und Weiterführendes Bearbeiten

  1. Müller-Stach, Piontkowski: Elementare und algebraische Zahlentheorie, vieweg, 2006, S. 16, ISBN 978-3834802118
  2. R.-H. Schulz: Codierungstheorie: Eine Einführung, vieweg, 2003, ISBN 978-3528164195
  3. Müller-Stach, Piontkowski: Elementare und algebraische Zahlentheorie, vieweg, 2006, S. 22f, ISBN 978-3834802118
  4. M.J. Wiener: Cryptanalysis of short RSA secret exponents, IEEE Transaction on Information Theory, Vol. 36, 1990
  5. Paul C. Kocher: Timing Attacks on Implementations of Diffie-Hellman, RSA, DSS, and Other Systems, CRYPTO 1996, S.104ff.