Kleine Einfürung in Kryptographie

Werbung
Kleine Einfürung in Kryptographie
Johannes Blömer, Jonas Schrieb, Universität Paderborn
17. März 2009
Kryptographie (vom griechischen κρυπτ oς verborgen“, und γραϕιν, schrei”
”
ben“) ist im ursprünglichen Sinne die Wissenschaft der Verschlüsselung von Informationen (Geheimschriften). War die Kryptographie früher fast ausschließlich
eine Domäne von Diplomaten, Militärs und Geheimdiensten, so ist die Kryptographie heute ein wichtiger Baustein der Informations- und Kommunikationstechnik. Deshalb gehen die Aufgabe und Ziele moderner Kryptographie auch
weit über die Verschlüsselung von Informationen hinaus. Die Kryptographie
versucht Informationen zu schützen. Dabei verfolgt sie vier Hauptziele:
Vertraulichkeit Nur dazu berechtigte Personen sollen in der Lage sein, Daten
oder Nachricht zu lesen oder Informationen über ihren Inhalt zu erlangen.
Integrität Empfänger von Nachrichten sollen feststellen können, ob Nachrichten nach ihrer Erzeugung verändert wurden.
Authentizität Absender von Nachrichten sollen eindeutig identifizierbar sein.
Urheberschaft von Nachrichten soll nachprüfbar sein.
Verbindlichkeit Absender von Nachrichten sollen nicht in der Lage sein, ihre
Urheberschaft zu bestreiten.
Bei ihren Untersuchungen betrachten Kryptographen dabei häufig Probleme, die
zunächst scheinbar nichts mit diesen Zielen zu tun haben und eher wie nutzlose
Spielereien aussehen. Bei genauerem Hinsehen entpuppen sich diese Spielereien
dann aber doch als sehr nützlich für die Kryptographie. Wir wollen nur drei
Beispiele nennen.
1. Wie kann man über das Internet pokern, so dass keiner der Teilnehmer
betrügen oder sich einen unfairen Vorteil verschaffen kann?
2. Wie können zwei Millionäre feststellen, wer von ihnen reicher ist, ohne
dass am Ende einer der beiden Millionäre weiß, wie viele Millionen der
andere besitzt?
3. Wie kann ein Geheimnis auf 20 Personen verteilt werden, so dass alle 20
Personen zusammen das Geheimnis rekonstruieren können, aber weniger
als die 20 Personen nichts über das Geheimnis erfahren?
1
Man kann sich sicherlich vorstellen, dass zur Lösung des ersten Problems (Pokern über das Internet) Authentizität und Integrität von Nachrichten eine wichtige Rolle spielen. Wenn Internetpokerspieler Informationen über ihre Blätter
austauschen, so sollten sie sicher sein können, von wem welche Informationen
kommen (Authentizität). Außerdem sollten die Informationen über die Blätter
auch nicht geändert werden können (Integrität). Schließlich muss beim Pokern
über das Internet sicher gestellt sein, dass kein Spieler sich irgendein Blatt (z.B.
vier Asse) ausdenken kann, um dann dieses als seine Karten auszugeben. Dieses
berührt das Ziel der Verbindlichkeit. Ähnlich erfordert auch das Millionärsproblem Lösungen für die Integrität, Authentizität und Verbindlichkeit von Nachrichten. Bereits bekannte Lösungen zur Geheimnisteilung andererseits sind ein
wichtiger Baustein vieler kryptographischer Verfahren.
Wir wollen uns in dieser Einführung auf die Verschlüsselung von Informationen konzentrieren. Verschlüsselung soll die Vertraulichkeit von Informationen
sicher stellen und war schon das Ziel der ersten Kryptographen vor über 4000
Jahren. Wir werden dabei zunächst sehen, was genau man unter Verschlüsselung
von Informationen versteht. Dann betrachten wir zwei konkrete Verfahren und
werden eine wichtige Methode zum Angriff dieser Verfahren kennen lernen. Dieser Angriff gibt uns erste Hinweise, worauf beim Entwurf von Verschlüsselungsverfahren zu achten ist. Wir werden dann sehen, dass der so genannte Schlüsselaustausch bei den Verfahren, die wir betrachten, ein Problem ist. Um dieses
Problem zu umgehen, werden wir die Prinzipien der asymmetrischen Kryptographie vorstellen und das wichtigste Verfahren der asymmetrischen Kryptographie, das RSA-Verfahren, eingehend diskutieren. Mit RSA kennen Sie dann
eines der wichtigsten und am häufigsten eingesetzten Verfahren der modernen
Kryptographie.
1
Verschlüsselung von Informationen
Verschlüsselung nennt man den Vorgang, bei dem ein Klartext mit Hilfe eines
Verschlüsselungsverfahrens (Algorithmus) in einen Geheimtext oder Chiffretext
umgewandelt wird. Dabei benutzen Verschlüsselungsverfahren einen oder mehrere Schlüssel. Den umgekehrten Vorgang, also die Verwandlung des Geheimtextes zurück in den Klartext, nennt man Entschlüsselung. Wir beschäftigen
uns zunächst mit der so genannten symmetrischen Verschlüsselung. Dabei soll
die Entschlüsselung mit Hilfe der zur Verschlüsselung benutzten Schlüssel leicht
möglich sein. Ohne Kenntnis der benutzten Schlüssel sollte es andererseits sehr
schwer sein, einen Chiffretext zu entschlüsseln. Damit ist klar, dass die Schlüssel
nur denjenigen Personen bekannt sein dürfen, für die die Klartexte gedacht sind.
Um dies konkreter zu machen, betrachten wir drei Personen, die alle Kryptographen der Welt unter den Namen Alice, Bob und Eve kennen. Alice und Bob
möchten miteinander Nachrichten austauschen, ohne dass die etwas zu neugierige Eve diese lesen kann. Alice und Bob wollen per E-Mail miteinander kommunizieren und wissen genau, dass Eve in der Lage ist, ihre E-Mails abzufangen
und zu lesen. Damit Eve trotzdem nicht weiß, was Alice und Bob einander zu
2
sagen haben, verschlüsseln sie ihre Nachrichten mit einem geheimen Schlüssel.
Auf diesen Schlüssel haben sie sich bei einem persönlichen Treffen vor einiger
Zeit geeinigt. Alice und Bob schicken einander nur die Chiffretetxte. Benutzen
dann Alice und Bob ein Verschlüsselungsverfahren, in dem ohne Kenntnis des
benutzten Schlüssels eine Entschlüsselung nur sehr schwer möglich ist, so wird
Eve mit den abgefangenen E-Mails wenig anfangen können. Denn diese enthalten ja nur die Chiffretexte und Eve kennt den von Alice und Bob benutzten
Schlüssel nicht. Man kann sich eine Verschlüsselung vorstellen wie das Einschließen der Nachricht in einen Safe, für den Alice und Bob beide einen Schlüssel
besitzen, Eve jedoch nicht. Somit kann dann Eve nicht an die im Safe eingeschlossenen Klartexte heran. Schematisch ist dieses in Abbildung 1 dargestellt.
Abbildung 1: Alice und Bob kommunizieren, Eve versteht nichts
2
Die Caesar-Chiffre
Eines der einfachsten Verschlüsselungsverfahren geht auf Julius Caesar (100-44
v.Chr.) zurück und wird deshalb auch Caesar-Chiffre genannt. Dem Historiker
Sueton zufolge benutzte Caesar dieses Verfahren, um von seinen Feldzügen Briefe an Freunde in Rom zu senden. Um einen Text mit Hilfe der Caesar-Chiffre zu
verschlüsseln, ignorieren wir Groß- und Kleinschreibung, Umlaute sowie Satzund andere Sonderzeichen. Damit haben wir die 26 Buchstaben a, b, c, . . . , x, y, z.
3
In der Caesar-Chiffre wählen wir nun als geheimen Schlüssel eine Zahl k zwischen 0 und 25. Die Verschlüsselung erfolgt, indem wir jeden Buchstaben des
Alphabets durch den im Alphabet k Positionen weiter rechts stehenden Buchstaben ersetzen. Ist also z.B. k = 3, so wird jedes a durch ein d ersetzt. Genauso
wird b durch e und m durch p ersetzt. Was passiert mit den Buchstaben x, y, z?
Für diese existieren ja keine Buchstaben 3 Positionen weiter rechts im Alphabet.
Ganz einfach, wir fangen dann im Alphabet wieder vorne an, der Buchstabe x
wird durch a, der Buchstabe y wird durch b und z wird durch c ersetzt.
Wenden wir diese Methode mit k = 3 auf das Wort
kryptographie“
”
an, so erhalten wir das Wort
nubswrjudsklh“.
”
Als zweites Beispiel betrachten wir einen englischen Text und zwar
a good glass in the bishops hostel in the devils seat“.
”
Zugegebenermaßen ist dieses eine merkwürdige Formulierung. Aber es ist der
Anfang der Entschlüsselung eines Chiffretextes aus der Erzählung Der Goldkäfer“
”
von E. A. Poe (1809-1845). Allerdings hat E. A. Poe eine etwas andere Form
der Verschlüsselung als die Caesar-Chiffre verwandt. Verschlüsseln wir nun den
Anfang des Textes von Poe mit der Caesar-Chiffre und mit Wahl des Schlüssels
k = 5 so erhalten wir
f litti lqfxx ns ymj gnxmtux mtxyjq ns ymj ijanqx xjfy “.
”
Kennt man den geheimen Schlüssel der Caesar-Chiffe, ist es sehr einfach, aus
einem Chiffretext den Klartext zu bestimmen. Denn werden bei der Verschlüsselung mit Schlüssel k alle Buchstaben um k Positionen nach rechts verschoben,
so müssen zur Entschlüsselung alle Buchstaben um k Positionen nach links verschoben werden.
Wir wollen die Caesar-Chiffre mathematisch etwas eleganter beschreiben.
Dabei identifizieren wir die Buchstaben a, b, c, . . . , x, y, z mit den Zahlen von 0
bis 25, der Buchstabe a entspricht dabei 0, der Buchstabe b entspricht 1, usw.
bis zum Buchstaben z, der der Zahl 25 entspricht. Das Wort
kryptographie“
”
entspricht dann der Zahlenkombination
10 17 24 15 19 14 6 17 0 15 7 8 4.
Wenn wir nun Kryptographie“ mit dem Schlüssel k = 3 verschlüsseln wollen, so
”
addieren wir zu allen Zahlen in der Kryptographie“ entsprechenden Zahlenfolge
”
die 3 hinzu. Außerdem ziehen wir von den dann entstehen Zahlen, die größer
als 25 sind noch 26 ab, um so wieder eine Zahlenfolge mit Zahlen zwischen 0
und 25 zu erhalten. Bei Kryptographie“ liefert dieses
”
4
13 20 1 18 22 17 9 20 3 18 10 11 7.
Wieder umgewandelt in Buchstaben liefert dieses wie auch vorher nubswrjuds”
klh“.
In dieser alternativen Beschreibung nutzen wir die so genannte modulare
Arithmetik aus, was nichts anderes ist als ein etwas hochtrabender Name für das
Rechnen bei Division mit Rest. Dabei ist in unserer Beschreibung der CaesarChiffre 26 die Zahl mit der wir die Division durchführen. Die modulare Arithmetik ist für die Kryptographie wichtig, da sich viele Verschlüsselungsverfahren
eigentlich nur mit ihrer Hilfe beschreiben lassen.
3
Häufigkeitsanalyse
Ist es denn für Eve wirklich so schwer, die Klartexte zu bestimmen, wenn Alice
und Bob ihre Nachrichten mit der Caesar-Chiffre verschlüsseln? Offensichtlich
ist die Antwort nein“, denn es gibt ja nur 26 mögliche Schlüssel, die Alice und
”
Bob verwenden können. Diese 26 Schlüssel kann Eve problemlos ausprobieren.
Es ist dabei sehr unwahrscheinlich, dass sie bei einem anderen als dem richtigen Schlüssel sinnvolle deutsche (oder englische) Texte erhält. Den richtigen
Schlüssel wird Eve daher leicht erkennen können. Es gibt aber noch eine andere wichtige Methode, die Häufigkeitsanalyse, um die Caesar-Chiffre zu brechen.
Diese Methode kann bei vielen anderen Verfahren ebenfalls eingesetzt werden
und ist eine der Standardtechniken, der so genannten Kryptanalyse oder Kryptoanalyse. Die Kryptanalyse studiert Methoden und Techniken, aus verschlüsselten Nachrichten Informationen über die Nachrichten selbst zu gelangen.
Die Anwendung der Häufigkeitsanalyse auf die Caesar-Chiffre ist die einfachste Anwendung dieser Methode der Kryptanalye. Die Häufigkeitsanalyse auf die
Caesar-Chiffre beruht auf drei einfachen Beobachtungen
1. Bei der Caesar-Chiffre werden identische Buchstaben im Klartext auf identische Buchstaben des Chiffretextes abgebildet.
2. In der Caesar-Chiffre wird jeder Buchstabe um dieselbe Anzahl von Positionen nach rechts verschoben. Ist daher in der Caesar-Chiffre für einen
Buchstaben bekannt, auf welchen Buchstaben er durch die Caesar-Chiffre
abgebildet wird, so ist der geheime Schlüssel bekannt.
3. Die Häufigkeit einzelner Buchstaben in deutschen oder englischen Texten
ist sehr unterschiedlich, zumindest wenn die Texte lang genug. In den meisten deutschen und englischen Texten z.B. ist e der häufigste Buchstabe.
Eine Tabelle mit den Verteilungen der einzelnen Buchstaben im Deutschen
und Englischen ist in Abbildung 2 gegeben.
Diese beiden Beobachtungen lassen sich leicht kombinieren, um die CaesarChiffre anzugreifen. Wir gehen dabei in zwei Schritten vor.
1. Bestimme die häufigsten Buchstaben in einem Chiffretext.
5
Abbildung 2: Buchstabenhäufigkeit in Deutsch und Englisch
2. Für jeden dieser häufigen Buchstaben bestimme den geheimen Schlüssel
unter der Annahme, dass der Buchstabe e auf diesen Buchstaben abgebildet wird. Bestimme dann den Klartext, der bei der Entschlüsselung mit
dem so bestimmten Schlüssel entsteht.
Den richtigen Schlüssel, und dann auch den korrekten Klartext, erkennt man
wiederum daran, dass dieser nach der Entschlüsselung einen sinnvollen Text
liefert.
Unser Beispiel kryptographie“ ist zu klein, um mit der Häufigkeitsanalyse
”
weit zu kommen. Unser zweites Beispiel ist schon besser. Der Chiffretext war f
”
litti lqfxx ns ymj gnxmtux mtxyjq ns ymj ijanqx xjfy “. Die beiden häufigsten
Buchstaben dieses Chiffretextes sind x und j. Wäre das e auf x abgebildet
worden, müsste der Schlüssel k = 19 sein. Die Entschlüsselung des Chiffretextes
mit diesem Schlüssel liefert den Klartext
m saap sxmee uz ftq nuetabe taefqx uz ftq pqhuxe eqmf“.
”
Offensichtlich kann 19 nicht der richtige Schlüssel sein. Nehmen wir an, dass e
auf j abgebildet wird, so ist der geheime Schlüssel 5. Wie wir wissen, ist dieses
der korrekte Schlüssel und die Entschlüsselung des Chiffretextes wird dieses
auch klar machen. Mit nur zwei Versuchen haben wir also in diesem Fall die
Caesar-Chiffre gebrochen.
4
Die Vigenère-Chiffre
Wie wir gesehen haben, ist ein wesentlicher Grund für die Schwäche der CaesarChiffre gegenüber einer Häufigkeitsanalyse die Tatsache, dass identische Buch6
staben des Klartextes auf identische Buchstaben im Chiffretext abgebildet werden. Es gibt mehrere Möglichkeiten diese Schwäche zu beheben. Eine dieser
Möglichkeiten wird durch die Vigenère-Chiffre 1 realisiert. Wieder beschränken
wir uns auf die 26 Buchstaben von a bis z. Diesmal allerdings bestehen die geheimen Schlüssel aus s Zahlen k1 , . . . , ks zwischen 0 und 25. Dabei bleibt auch
der Wert s, die Schlüssel- oder Blocklänge geheim. Um einen Klartext mit dem
geheimen Schlüssel k = (k1 , . . . , ks ) zu verschlüsseln, gehen wir in zwei Schritten
vor:
1. Wir unterteilen den Klartext in Blöcke von Buchstaben. Alle Blöcke bis
auf den letzten bestehen dabei aus genau s Buchstaben.
2. In jedem der Blöcke des ersten Schritts ersetzen wir die ersten Buchstaben
durch den k1 Positionen weiter rechts im Alphabet stehenden Buchstaben,
den zweiten Buchstaben jedes Blocks ersetzen wir durch den k2 Positionen
weiter rechts im Alphabet stehenden Buchstaben und so weiter, bis wir
schließlich den s-ten Buchstaben jedes Blocks durch den ks Positionen
weiter rechts im Alphabet stehenden Buchstaben ersetzen. Dabei fangen
wir wie bei der Caesar-Chiffre wieder vorne im Alphabet an zu zählen,
falls wir das Ende des Alphabets erreicht haben, d.h. ist ki = 3, so werden
x, y, z wieder durch a, b bzw. c ersetzt.
Betrachten wir als Beispiel wieder den Text von E. A. Poe. Als Schlüssel wählen
wir (3, 17, 4, 21, 13). Die Blocklänge ist dann 5. Wir teilen zunächst den Text in
Blöcke der Länge 5, wobei wir Leer- und Sonderzeichen ignorieren, und erhalten
a good | glass | in the | bisho | ps hos | tel in | the de | vils s | eat“.
”
Verschlüsselung mit dem Schlüssel (3, 17, 4, 21, 13) liefert:
d xsjq jcenf le xcr ezwcbsj ljfwvp da wyi yryzpn fhrx“.
”
Ist der geheime Schlüssel der Vigenère-Chiffre bekannt, ist die Entschlüsselung
eines Chiffretextes einfach. Man geht dann in jeder Position eines Blocks wie bei
der Entschlüsselung der Caesar-Chiffre vor, d.h. statt Buchstaben nach rechts
im Alphabet zu verschieben, werden sie nach links verschoben.
Bei der Vigenère-Chiffre werden identische Buchstaben des Klartextes nicht
mehr unbedingt auf identische Buchstaben im Chiffretext abgebildet. Auf welchen Buchstabe ein Buchstabe des Klartext abgebildet wird, hängt bei der Vigenère-Chiffre auch von der Position des Buchstabens im Klartext, genauer in
einem Block des Klartextes, ab. Daher wird eine einfache Häufigkeitsanalyse wie
bei der Caesar-Chiffre eine Vigenère-Chiffre nicht brechen können. Wir werden
aber sehen, dass wir die Häufigkeitsanalyse so verfeinern können, dass sie auch
die Vigenère-Chiffre brechen kann. Wobei eine Vigenère-Chiffre umso einfacher
zu brechen ist, je kürzer der Schlüssel gewählt wurde. Dazu gibt es mehr am
Schüler-Kryptotag.
1 Blaise
de Vigenère (1523-1596), französischer Diplomat, Schriftsteller und Kryptologe
7
5
Asymmetrische Verschlüsselung und RSA
Am Schüler-Kryptotag werden wir dann auch einiges über moderne als sicher
geltende Verschlüsselungsverfahren kennen lernen. Weiter werden wir nicht nur
symmetrische Verschlüsselungsverfahren sondern auch so genannte asymmetrische Verschlüsselungsverfahren wie RSA kennen lernen.
Wollen sich Alice und Bob mit Hilfe eines symmetrischen Verschlüsselungsverfahrens verschlüsselte Nachrichten senden, so müssen sie sich vorher einmal
persönlich getroffen haben, um einen geheimen Schlüssel zu verabreden. Was
machen die beiden, wenn sie hierzu keine Gelegenheit hatten? Hier genau helfen
asymmetrische Verschlüsselungsverfahren. In solchen Verfahren gibt es neben
dem geheimen Schlüssel zum Entschlüsseln von Chiffretexten auch einen so genannten öffentlichen Schlüssel zum Verschlüsseln von Klartexten, der allen Beteiligten bekannt sein darf. Möchte Bob verschlüsselte Nachrichten empfangen,
so wählt er für sich alleine ein Paar aus öffentlichem und geheimem Schlüssel
und schickt nur den öffentlichen Teil an Alice. Diesen benutzt dann Alice in einem asymmetrischen Verfahren, um ihre Nachrichten an Bob zu verschlüsseln.
Nun kennt auch die neugierige Eve den öffentlichen Schlüssel, aber in guten
asymmetrischen Verschlüsselungsverfahren wie RSA wird Eve dieser öffentliche
Schlüssel nicht bei der Entschlüsselung helfen.
Die Grundidee der asymmetrischen Verschlüsselung kann man dabei wieder
mit Hilfe eines Safes gut erklären. Symmetrischen Verfahren hatten wir uns
vorgestellt als einen Safe, für den sowohl Alice und Bob nicht aber Eve einen
Schlüssel besitzen. Bei asymmetrischen Verfahren können wir uns einen Safe
mit Geheimzahl vorstellen. Nur Bob kennt die Geheimzahl. Will Alice an Bob
eine Nachricht senden, die Eve nicht lesen soll, fordert Alice Bob zunächst auf,
ihr den geöffneten Safe zu senden. Nachdem Alice den Safe erhalten hat, legt
sie ihre Nachricht in den Safe, verschließt diesen. Dabei gehen wir davon aus,
dass das Verschließen für Alice auch ohne Kenntnis der Geheimzahl möglich ist.
Schließlich sendet sie den Safe an Bob, der ihn mit seiner Geheimzahl öffnet und
die Nachricht entnimmt.
Modulare Arithmetik: Bevor wir RSA selbst kennen lernen, müssen wir
die modulare Arithmetik noch einmal etwas näher beleuchten. Es wurde bei
der Caesar-Chiffre bereits angedeutet, dass dies ein nützliches Hilfsmittel zur
Beschreibung von kryptographischen Verfahren ist. Während man die CaesarChiffre allerdings auch ohne modulare Arithmetik noch gut beschreiben und
analysieren kann, ist sie für RSA unverzichtbar.
Die grundlegende Eigenschaft von ganzen Zahlen, die in der modularen
Arithmetik verwendet wird, ist die Möglichkeit eine Division mit Rest durchzuführen. Zu jeder Zahl x und jedem N 6= 0 existieren auf eindeutige Weise zwei
Zahlen k, r, so dass gilt:
x = k·N + r
und
0≤r<N
In Worten: N passt k-mal in x hinein und es bleibt noch ein kleinerer Wert
r übrig, in den N kein weiteres mal hinein passt. Das bedeutet nichts anderes
8
als, dass x bei Division durch N den Rest r lässt. Man spricht dies auch als “x
modulo N ist r” und schreibt kurz:
(x mod N ) = r
So gilt zum Beispiel:
(337265 mod 4711) = 2784,
da 337265 = 71 · 4711 + 2784
(200646 mod 4711) = 2784,
da 200646 = 42 · 4711 + 2784
Sehr vereinfacht gesprochen2 ist das Besondere bei der modularen Arithmetik nun, dass man nur mit den Zahlen 0 bis N − 1 rechnet und nach jeder
Rechenoperation das Ergebnis modulo N verkleinert, also eine Division mit Rest
durchführt und nur mit diesem Rest weiter rechnet.
Wir werden im Folgenden öfters Gleichungen betrachten, in denen alle Werte
immer modulo N verkleinert werden müssen. Damit es nicht zu unübersichtlich
wird, schreiben wir dann nur einmal “mod N ” ans Ende. So ist mit der Gleichung
3372653 = 2006463 = 27843 = 27 mod N
das selbe gemeint wie mit
(3372653 mod 4711) = (2006463 mod 4711) = (27843 mod 4711) = 27
Zwei Rechenregeln für die Division mit Rest werden wir im Folgenden oft
stillschweigend benutzen:
Aus x = a mod N und y = b mod N folgt:
x · y = a · b mod N
und
xi = ai mod N
Diese Regeln besagen, dass man Zahlen, die den selben Rest ergeben, in modularen Gleichungen beliebig durcheinander ersetzen kann. Ein Beispiel ist oben stehende modulare Gleichung. Da wir uns vorher überzeugt haben, dass 337265 =
200646 = 2784 mod 4711 gilt, wissen wir aufgrund der Rechenregel auch, dass
ihre dritten Potenzen gleich sind.
Achtung: Für den Exponenten gilt diese Regel nicht! So gilt zum Beispiel
für 9 = 2 mod 7:
39 = 19683 = 6
mod 7
aber
32 = 9 = 2
mod 7
Wir dürfen also nicht 9 durch 2 im Exponenten ersetzen, obwohl sie modulo
7 den selben Rest ergeben. Wir werden später darauf zurückkommen und eine
ähnlich aussehende Regel für den Exponenten erhalten.
2 Es steckt noch einiges mehr dahinter (Stichworte: Kongruenzen und Restklassen), allerdings reicht uns an dieser Stelle die Division mit Rest völlig aus.
9
Verschlüsselung bei RSA: Nun haben wir das Rüstzeug zusammen, um
mit der Verschlüsselung bei RSA zu beginnen: Der öffentliche Schlüssel besteht
aus einem Modul N und einem Exponenten e. Dabei lassen wir zunächst offen, welche Werte für N und e zulässig sind und wie der zugehörige geheime
Schlüssel aussieht. Dies wird im Weiteren dann Stück für Stück ergänzt. Die zu
verschlüsselnde Nachricht darf eine beliebige Zahl m ∈ {0, . . . , N − 1} sein3 . Die
Verschlüsselung von m ist:
c = EncN,e (m) := me
mod N
Wir wollen uns das einmal für N = 19 und e = 7 anschauen. So ist von m = 3
die Verschlüsselung c = 2, da Enc19,7 (3) = 37 = 2187 = 2 mod 19. Die anderen
Zahlen werden wie folgt verschlüsselt:
m 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
c 0 1 14 2 6 16 9 7 8 4 15 11 12 10 3 13 17 5 18
Wir sehen sofort: jede Zahl kommt nur einmal als Chiffretext c vor. Das ist sehr
gut, denn nur so besteht überhaupt die Möglichkeit, die Chiffretexte wieder
zu entschlüsseln. Gäbe es zwei Nachrichten, die zum selben Chiffretext verschlüsselt werden, könnte Bob niemals wissen, welche der beiden Nachrichten
von Alice gesendet wurde. Die Wahl e = 2 hätte zum Beispiel nicht funktioniert, da Enc19,2 (5) = 52 = 25 = 6 mod 19 aber auch Enc19,2 (14) = 142 = 196 = 6
mod 19.
Entschlüsselung bei RSA: Die Eigenschaft, dass jede Nachricht auf einen
eigenen Chiffretext abgebildet wird, reicht alleine aber noch nicht aus. Sie bedeutet zwar, dass eine Entschlüsselung prinzipiell möglich sein kann, aber klärt
noch nicht, wie Bob konkret Nachrichten entschlüsseln kann. Um die Antwort
vorweg zu nehmen: Mit dem geheimen Schlüssel (N, d) = (19, 17) kann Bob aus
allen Chiffretexten c die Nachrichten m wie folgt wiederherstellen:
m = DecN,d (c) := cd
mod N
Für c = 2 liefert das beispielsweise wie erhofft m = 3, da Dec19,13 (2) = 213 =
8192 = 3 mod 19. Aber warum gilt das? Gibt es für alle Wahlen von e so ein
d? Und wie kann man d berechnen? Um diese Fragen zu klären, müssen wir
noch etwas mehr über bestimmte Strukturen innerhalb der Potenzfunktion der
modularen Arithmetik erfahren.
3 Natürlich möchten sich Alice und Bob lieber Briefe statt Zahlen zuschicken. Dazu muss
man sich Methoden ausdenken, um eine Buchstabenfolge als Zahl zu kodieren. Bei der CaesarChiffre haben wir die Buchstaben A-Z als Zahlen 0-25 kodiert. Für größere N sollte man
mehrere Buchstaben zu einer Zahl zusammenfassen:
“text”
19, 4, 23, 19
19 · 263 + 4 · 262 + 23 · 261 + 19 · 260 = 337265
10
Perioden in der modularen Potenzfunktion: Schauen wir uns einmal die
Potenzen einiger Zahlen (modulo 19) an:
i
2i
3i
6i
18i
1
2
3
6
18
2
4
9
17
1
3
8
8
7
18
4
16
5
4
1
5
13
15
5
18
6
7
7
11
1
7
14
2
9
18
8
9
6
16
1
9
18
18
1
18
10
17
16
6
1
11
15
10
17
18
12
11
11
7
1
13
3
14
4
18
14
6
4
5
1
15
12
12
11
18
16
5
17
9
1
17
10
13
16
18
18
1
1
1
1
19
2
3
6
18
20
4
9
17
1
21
8
8
7
18
...
...
...
...
...
Es fällt auf, dass bei jedem dieser Beispiele die Potenz irgendwann den Wert
1 erreicht. Für x = 2 und x = 3 passiert dies erstmals bei i = 18, für x = 6
bei i = 9 und für x = 18 bei i = 2. Man kann allgemein zeigen, dass für jedes
zu N teilerfremde x – also jedes x, das mit N nur den gemeinsamen Teiler 1
hat – die Potenz irgendwann 1 wird. Wir nennen für solches x den kleinsten
Exponenten Mx > 0 mit xMx = 1 mod N die Periode der Zahl x modulo N .
Der Ursprung dieses Namens ist auch direkt in der Tabelle ersichtlich: Nach
der ersten 1 wiederholen sich die Werte der Potenzen periodisch im Abstand
Mx . Allgemein formuliert: Geht der Exponent i aus j durch eine Verschiebung
um ein Vielfaches der Periode Mx hervor, also i = k · Mx + j, dann sind die
Werte der Potenzen beide gleich, also xi = xj mod N , denn es gilt, dass xi =
xk·Mx +j = (xMx )k · xj = 1k · xj = xj mod N .
Insbesondere muss dies also auch für i = k · Mx und j = Mx gelten, das
heißt, für alle Vielfachen der Periode gilt xk·Mx = 1 mod N . Definieren wir
also M als das kleinste gemeinsame Vielfache aller Mx , so gilt
xM = 1
mod N
für jedes zu N teilerfremde x
Wir nennen dieses M die Periode von N , da es nicht mehr von den einzelnen x
sondern ausschließlich von N abhängt. Für N = 19 ist die Periode M = 18 (denn
auch bei den nicht in der Tabelle aufgelisteten x sind die jeweiligen Perioden
immer 1, 2, 9 oder 18). Wie oben kann man nun für i = k · M + j zeigen, dass
xi = xj mod N . Setzt man zu gegebenem i den Exponenten j := (i mod N ),
so liefert dies:
xi = xi
mod M
mod N
für jedes zu N teilerfremde x
Nun kennen wir die anfangs angekündigte Rechenregel für modulare Potenzen.
Korrektheit der Entschlüsselung und die richtige Wahl von e und d:
Kehren wir zu unserem Beispiel zur Ver- und Entschlüsselung von RSA zurück.
Als Erinnerung: im Beispiel wird der Modul N = 19 mit Periode M = 18 sowie
die öffentlichen und geheimen Exponenten e = 7 bzw. d = 13 verwendet. Die
Verschlüsselung von m = 3 ist c = Enc19,7 (3) = 37 = 2 mod 19. Die Frage ist,
11
warum die Entschlüsselung funktioniert, also Dec19,13 (2) = 3. Es gilt:
Dec19,13 (2) = 213
= (37 )13
denn 2 = Enc19,7 (3) = 37
mod 19
7·13
=3
= 37·13
=3
mod 18
mod 19
wegen der Rechenregel für modulare Potenzen
da 7 · 13 = 91 = 5 · 18 + 1 = 1
mod 18
Ganz wesentlich ist hierbei die Tatsache, dass e · d = 7 · 13 = 1 mod 18 gilt.
Dies liefert ein allgemeines Kriterium für die korrekte Entschlüsselung:
falls e · d = 1 mod M
DecN,d (EncN,e (m)) = m,
Für alle Nachrichten m die zum Modul N teilerfremd sind, können wir dies mit
Hilfe der Rechenregel für modulare Potenzen beweisen, denn es gilt
DecN,d (EncN,e (m)) = (me )d = me·d = me·d
mod N
= m1 = m
mod N
Für alle anderen m kann man auf andere Weise zeigen, dass die Entschlüsselung
funktioniert. Wir wollen allerdings darauf verzichten, da wir dazu noch weitere
mathematische Hilfsmittel benötigen würden.
Halten wir also fest: e und d müssen so gewählt werden, dass e · d = 1
mod M gilt. Kann man solche Zahlen immer finden? Zum Glück ja: Wenn e
teilerfremd zu M ist, dann findet man mit Hilfe des Euklidischen Algorithmus
bei Eingabe e, N und M ein passendes d in sehr kurzer Zeit. Wie das genau
geht, würde für diese kurze Einleitung allerdings zu weit führen.
Sicherheit von RSA und die richtige Wahl von N : Bis jetzt haben wir
uns nur darum gekümmert, wie Alice mit Hilfe des öffentlichen Schlüssels (N, e)
verschlüsseln kann, und Bob mit Hilfe des geheimen Schlüssels (N, d) wieder
entschlüsseln kann. Was ist aber mit Eve? Kann sie Chiffretexte, die an Bob
gerichtet sind, entschlüsseln?
Eve kennt den öffentlichen Schlüssel (N, e). Es wäre sehr schlecht, wenn sie
mit Hilfe dieser Zahlen den geheimen Exponenten d berechnen könnte. Damit
könnte sie jede an Bob gerichtete Nachricht entschlüsseln. Im letzten Abschnitt
haben wir erfahren, dass es einen Algorithmus gibt, der aus N, e und der Periode
M das geheime d berechnet. Da Eve N und e kennt, hängt alles an der Periode
M . Bob muss den Modul N so wählen, dass er selbst zwar M berechnen kann,
Eve aber nicht.
Schauen wir uns zuerst nochmal obiges Beispiel an. Hier ist N = 19 eine
Primzahl, was für Bob leider sehr ungünstig ist. Der kleine Satz von Fermat
besagt, dass für jede Primzahl N die Periode M = N − 1 ist. Eve kann sich zu
jedem öffentlichen Schlüssel (N, e) also die Periode M selbst berechnen – und
damit auch den geheimen Exponenten d. Demnach sind Primzahlen also keine
gute Wahl für N . Die Lösung ist folgende: Bob wählt zwei zufällige p und q und
setzt N := p · q. Der Satz von Euler besagt, dass die Periode M = (p − 1) · (q − 1)
12
ist. Dies ist eine Zahl, die Bob einfach berechnen kann, da er p und q kennt.
Andererseits ist es für Eve sehr schwer M (und damit auch d) zu berechnen,
wenn sie p und q nicht kennt. Die vollständige Beschreibung von RSA sieht nun
wie folgt aus:
Schlüsselerzeugung:
Schlüsselerzeugung:
• wähle zufällige Primzahlen p und q
• der Modul ist N := p · q
• p = 5, q = 11
• N = 5 · 11 = 55
• die Periode ist M := (p − 1) · (q − 1)
• finde e und d, so dass e · d = 1 mod M
• öffentlicher Schlüssel: (N, e)
• geheimer Schlüssel: (N, d)
Verschlüsselung einer Zahl 0 ≤ m ≤ N − 1:
• M = 4 · 10 = 40
• e = 7, d = 23, denn
7 · 23 = 161
= 4 · 40 + 1
= 1 mod 40
Verschlüsselung von m = 17:
• c = 177 = 8 mod 55
• c := me mod N
Entschlüsselung einer Zahl 0 ≤ c ≤ N − 1:
Entschlüsselung von c = 8:
• m = 823 = 17 mod 55
• m := cd mod N
Das RSA-Kryptosystem
Beispiel
Man kann sich nun Fragen, wie schwer es für Eve wirklich ist, Bobs geheimen Exponenten d herauszufinden. Der bestbekannte Angriff ist es, N in seine
Primfaktoren N zu zerlegen, also p und q zu bestimmen, und daraus dann M
und d zu berechnen. Allerdings ist es sehr zeitraubend, die Faktorisierung einer
großen Zahl zu berechnen. Wenn Bob N groß genug wählt, kann Eve dieses N
selbst mit allen Computern der Welt nicht in akzeptabler Zeit faktorisieren. Eine
ungefähre Einschätzung für den Aufwand, den die Faktorisierung großer Zahlen
macht, liefert die sogenannte RSA-Challenge. Dies ist ein Wettstreit zwischen
Experten der ganzen Welt, wer die größten RSA-Schlüssel faktorisieren kann.
Folgende Ergebnisse konnten dabei bisher erzielt werden:
Größe von N
(Dezimalstellen)
geknackt in
Laufzeit auf einem
1GHz Pentium PC
120
1993
1/3 Jahr
160
2003
3 Jahre
200
2005
erwartet
für 2009
170 Jahre
232
13
3000 Jahre
Man sieht, dass die Laufzeit der Faktorisierungsalgorithmen nicht in gleichem
Maße wie die Größe von N steigt, sondern sehr viel schneller. Scheint die Faktorisierung von Zahlen bestimmter Größe in näherer Zukunft möglich zu sein, so
muss Bob seine Schlüssellänge nur verdoppeln und schon rückt die Möglichkeit
der Faktorisierung für Eve wieder in weite Ferne. Aktuell sind in der Praxis
Schlüssellängen von 308 oder gar 616 Stellen üblich.
Am Schüler-Kryptotag werden wir uns noch genauer mit RSA und den Zusammenhängen zwischen dem Knacken von RSA und dem Faktorisieren von
N beschäftigen. Außerdem werden wir einige Beispiele kennen lernen, in denen
RSA auf eine “falsche” Art verwendet wird und dies in völlig unsicherer Kommunikation resultiert. Das zeigt, dass hinter Sicherheit im Internet noch weit
mehr steckt als einfach nur gute Verschlüsselungsverfahren.
14
Herunterladen