2 Einführung in Verschlüsselungsverfahren

Werbung
Verschlüsselungsverfahren
IT-Systeme
Kryptologie - Verschlüsselungsverfahren
Inhalt
1
Problemstellung ..........................................................................................3
2
Einführung in Verschlüsselungsverfahren..................................................6
3
4
5
6
2.1.
Symmetrische Verschlüsselung ..........................................................6
2.2.
Asymmetrische Verschlüsselung ........................................................7
Kryptographische Grundlagen....................................................................8
3.1.
Verschlüsselung ..................................................................................8
3.2.
Digitale Signatur ..................................................................................8
3.3.
Hashfunktion........................................................................................9
Mathematische Grundlagen .................................................................... 11
4.1.
Primzahlen........................................................................................ 11
4.2.
Modulo Operator .............................................................................. 11
4.3.
Diskrete Exponentialfunktion............................................................ 12
4.4.
Diskreter Logarithmus ...................................................................... 12
4.5.
Schnelles Exponentieren ................................................................. 13
Das RSA-Verfahren................................................................................. 14
5.1.
Einführung ........................................................................................ 14
5.2.
Schlüsselgenerierung....................................................................... 15
5.3.
Verschlüsseln einer Nachricht.......................................................... 15
5.4.
Entschlüsseln einer Nachricht.......................................................... 16
5.5.
Beispiel ............................................................................................. 18
Quellen .................................................................................................... 19
Seite 2
IT-Systeme
Kryptologie - Verschlüsselungsverfahren
1 Problemstellung
Die Authentifizierung wird im Umfeld stetig weiter um sich greifender ITInfrastrukturen immer wichtiger.
Um dies zu verdeutlichen sollte den Schülern zunächst ein Authentifizierungsproblem gestellt werden für das dann direkt eine Lösung gefunden werden soll. Gleich im Anschluss wird jedoch die Schwäche des eben gefundenen Lösungsansatzes verdeutlicht und versucht, darauf basierend ein verbessertes Verfahren zu finden.
1. Problem
Es besteht der Bedarf der Authentifikation, um Daten zu schützen oder Ressourcen zu verwalten. Deshalb soll ein einfaches Verfahren gefunden werden,
mit dem sich ein Benutzer beim System authentifizieren kann.
1. Lösung
Jeder Benutzer erhält ein Passwort, das nur er kennt. Wenn er sich beim System anmeldet, gibt er sein Passwort an, das vom System als richtig akzeptiert
oder als falsch abgelehnt wird. Da das Passwort nur seinem Besitzer bekannt
ist, garantiert es die individuelle Authentifikation eines jeden Benutzers. Die
meisten Computersysteme sind durch die jeweiligen Betriebssysteme auf diese Weise geschützt.
Abstrakt betrachtet teilen das System und der Benutzer ein Geheimnis, das
sonst niemand kennt. Dieses Geheimnis muss direkt übertragen werden.
2. Problem
Da das Passwort bei jeder Anmeldung benötigt wird, ist die Frequenz, mit der
es benutzt wird, relativ hoch. Wenn es zusätzlich über unsichere Kanäle übertragen wird, ist es sehr leicht, es auszuspähen und unerlaubt zu verwenden.
Dadurch wird die Authentifikation durch Passwörter unsicher.
2. Lösung
Wenn man das Passwort regelmäßig ändert, ist das Verfahren immer maximal bis zum nächsten Wechsel unsicher. Wenn man diese Idee weiterführt,
gelangt man zur Idee der Einmalpasswörter. Dabei kann jedes Passwort nur
einmal verwendet werden, danach ist es nutzlos. Es kann beliebig abgehört
werden, denn niemand kann einen Nutzen daraus ziehen.
Dieses Verfahren kommt in Form von Transaktionsnummern (TAN) beim Online-Banking zum Einsatz. Auch bei diesem Verfahren teilen System und Benutzer Geheimnisse. Die Identifikation erfolgt durch wieder durch die Übertragung dieser Geheimnisse.
3. Problem
Da man für jede Anmeldung bzw. Transaktion ein neues Passwort benötigt,
sind umfangreiche Listen mit Einmalpasswörtern erforderlich, die regelmäßig
auf beiden Seiten ergänzt werden müssen. Dadurch können diese Passwörter
wieder ausgespäht werden, diesmal allerdings vor Ihrer Verwendung. Außerdem können Einmalpasswörter abgefangen und gleichzeitig die Verbindung
Seite 3
IT-Systeme
Kryptologie - Verschlüsselungsverfahren
zum Server gestört werden. Danach kann ein Angreifer das ausgespähte
Einmalpasswort selbst verwenden.
3. Lösung
Es wird ein Verfahren benötigt, das alle vorangegangenen Probleme löst und
die vorangegangen Lösungen verbindet. Beide Seiten sollen ein Geheimnis
teilen, einmal verwendeten Passwörter sollen ungültig sein und es sollen keine umfangreichen Listen ausgetauscht werden müssen.
Das Challenge-Response-Verfahren erfüllt alle diese Bedingungen, indem es
das Geheimnis von den Passwörtern trennt. Dazu verwendet es im einfachsten Fall ein symmetrisches Verschlüsselungsverfahren. Beide Parteien (System und Benutzer) tauschen einmal einen für dieses Verfahren passenden
Schlüssel aus.
Wenn der Benutzer sich beim System anmelden will, schickt ihm dieses eine
Zufallszahl und stellt ihm die Herausforderung (Challenge), diese Zahl mit
dem richtigen Schlüssel zu verschlüsseln und als Antwort (Response) zurückzuschicken. Das System entschlüsselt die Antwort und vergleicht sie mit der
Zufallszahl.
Nur wer im Besitz des richtigen Schlüssels ist, kann die Zufallszahl so verschlüsseln, das sie vom System wieder richtig entschlüsselt werden kann.
Wie bei den vorangegangenen Verfahren teilen beide Seiten ein Geheimnis.
Durch den Einsatz des Verschlüsselungsverfahrens wird das „Passwort“ (die
Antwort) erst im Augenblick der Authentifikation klar.
4. Problem
Auf Dauer ergibt sich ein organisatorisches Problem. Wenn man sich auf diese Weise bei vielen verschiedenen Servern authentifizieren will, muss man
sich für eine der beiden folgenden Wege entscheiden.
Entweder wird für alle Server der gleiche Schlüssel verwendet. Dann wird ein
unsicherer Server zur Sicherheitslücke für alle. Oder es werden für jeden Benutzer für alle Server jeweils verschiedene Schlüssel verwendet. Dann müssen die anfallenden Mengen von Schlüsseln sicher verwahrt werden. Wenn
der Benutzer seine Schlüsselsammlung verliert (Festplattendefekt, Verlust der
Smartcard), muss er mit jedem Server einen neuen Schlüssel vereinbaren
und sich gegebenenfalls auch noch persönlich authentifizieren (Vorlage des
Personalausweises o.ä.)
4. Lösung
Diese Probleme können ähnlich wie bei der Schlüsselverwaltung für den Emailverkehr mit asymmetrischen Verschlüsselungsverfahren gelöst werden.
Die Server kennen nur den öffentlichen Schlüssel des Clients zum Entschlüsseln der Antwort bzw. können den Schlüssel von einer Zertifizierungsstelle
sicher beziehen. Nur der Client kennt den geheimen Schlüssel zum Verschlüsseln der Antwort. Auf diese Weise kann die Schlüsselverwaltung erleichtert werden.
Seite 4
IT-Systeme
Kryptologie - Verschlüsselungsverfahren
5. Problem
(Man-In-The-Middle-Angriff) Trotzdem ist ein Angreifer möglicherweise immer
noch in der Lage, sich gegenüber dem Server als der Client auszugeben und
akzeptiert zu werden.
Dies geschieht, indem er sich bei einer Verbindung zwischen Server und
Client als Router betätigt. Wenn der Client die Challenge anfordert, gibt er
sich gegenüber dem Client als Server und gegenüber dem Server als Client
aus. Er schickt statt der Anforderung des Clients eine eigene Anforderung an
den Server, der ihm darauf hin eine Challenge schickt. Diese schickt er wiederum an den Client und lässt sie von ihm richtig beantworten, um dann die
Antwort gegenüber dem Server als seine eigene auszugeben. Der Server akzeptiert ihn und der Angreifer kann jetzt den echten Client mit einer Fehlermeldung abhängen oder dessen Pakete einfach durchleiten und seine eigenen dazwischen verstecken.
5. Lösung
Das oben gezeigte Problem lässt sich darauf reduzieren, dass der Client nicht
weiß, ob er mit dem richtigen Server redet. Deshalb wäre es wünschenswert,
dass sich der Server ebenfalls beim Client authentifiziert.
Wenn man diese Authentifikation vorher durchführt, kann sich der Angreifer
allerdings wieder dazwischen hängen. Deshalb müssen beide Authentifikationsvorgänge gleichzeitig ausgeführt werden: Der Client schickt seine Anforderung los und erhält eine Challenge. Er beantwortet sie und schickt mit der
Antwort eine eigene Challenge los. Der Server prüft die Antwort des Clients
und beantwortet seinerseits die Challenge des Clients. Nachdem dieser die
Antwort geprüft hat, können beide Seiten sicher sein, dass sie mit dem richtigen Partner reden.
Hinweise
Durch den oben geschilderten Ablauf ergibt sich eine Schwierigkeit:
Es wird erkannt dass das Challenge-Response-Verfahren wechselseitig sicher ist. Das könnte den Benutzer aber in einer falsche Sicherheit wiegen.
Wenn beispielsweise der Client nach der Authentifikation abgehängt wird und
der Angreifer seine IP-Adresse übernimmt, versagen alle oben genannten
Protokolle. Die Lösung dafür ist jedoch wesentlich schwieriger als das, was im
Rahmen dieser Unterlagen behandelt werden soll.
An dieser Stelle soll also zumindest der Hinweis gegeben werden, dass die
Protokolle nicht gänzlich von den darunter liegenden Software- und Hardwareschichten zu trennen sind.
Ein weiterer zu vermittelnder Aspekt ist, dass die Challenge-ResponseProtokolle auf Verschlüsselungsverfahren basieren. Wenn diese zu schwach
sind, können die Protokolle natürlich auch auf dieser Ebene angegriffen werden.
Seite 5
IT-Systeme
Kryptologie - Verschlüsselungsverfahren
2 Einführung in Verschlüsselungsverfahren
2.1. Symmetrische Verschlüsselung
Bei der symmetrischen Verschlüsselung werden die Daten mittels eines geheimen Schlüssels ver- bzw. entschlüsselt. Der Schlüssel muss dabei sowohl
Sender und Empfänger bekannt sein und zu diesem Zweck vorher persönlich
ausgetauscht werden.
Vorteil: Benötigt eine relativ geringe Rechenleistung und ist schnell.
Nachteil: Der direkte Austausch der geheimen Schlüssel was seine Anwendung in einer Kunde-Händler Beziehung erschwert.
Gängige Verfahren:
-
DES (Data Encryption Standard):
Anfang der 70er von IBM entwickelt
-
IDEA (International Data Encryption Algorithm)
1990 von den Schweizern Lai und Massey veröffentlicht
Prinzip der Verschlüsselung:
Seite 6
IT-Systeme
Kryptologie - Verschlüsselungsverfahren
2.2. Asymmetrische Verschlüsselung
Sie basiert auf der Verwendung eines zusammengehörenden Schlüsselpaares, wobei ein Schlüssel zur Ver- und einer zur Entschlüsselung genutzt wird.
Beim Public Key Verfahren wird nun einer der Schlüssel veröffentlicht und
kann von jedem Sender dazu genutzt werden, eine Nachricht an den Empfänger zu verschlüsseln. Nur der Empfänger, welcher in Besitz des zweiten
privaten Schlüssels ist, kann die Nachricht dann entschlüsseln.
Vorteil: Einfacher Schlüsselaustausch möglich.
Nachteil: Langsamer als symmetrische Verfahren.
Gängiges Verfahren:
-
RSA (nach den Entwicklern Rivest, Shamir, Adleman):
Entwickelt 1977 in den USA.
Prinzip der Verschlüsselung:
Prinzip der Signatur und der Authentifizierung:
Seite 7
IT-Systeme
Kryptologie - Verschlüsselungsverfahren
3 Kryptographische Grundlagen
3.1. Verschlüsselung
Ziel der Verschlüsselung ist die Kommunikation zwischen zwei Partnern ohne
dass ein Angreifer die übertragenen Daten mitbekommt. Dazu kommen so
genannte Einwegfunktionen mit Falltürfunktion zum Einsatz.
Eine Einwegfunktion (engl. one way function) ist eine Funktion x a y bei der
zu einem gegebenen x-Wert sehr effizient der zugehörige y-Wert berechnet
werden kann. Die zugehörige Umkehrfunktion y a x kann jedoch nur mit extrem hohem Rechenaufwand - also praktisch gar nicht - durchgeführt werden.
Ein eingängiges Beispiel stammt aus dem Alltag: gibt man jemandem ein Telefonbuch in gedruckter Form so kann er recht einfach und schnell zu einem
gegebenem Namen die zugehörige Nummer heraussuchen. Die Umkehrung
zu einer gegebenen Nummer den Teilnehmer zu finden ist jedoch nur mit extrem hohem Aufwand - also praktisch gar nicht - möglich.
Gibt es nun jedoch eine Zusatzinformation, mit deren Hilfe auch die Umkehrfunktion in adäquater Zeit zu berechnen ist, so nennt man diese Information
eine Falltür bzw. die zugehörige Umkehrfunktion eine Falltürfunktion (engl.
trap door function). In obigem Beispiel könnte man beispielsweise zur Telefonnummer die Seitennummer im Telefonbuch angeben auf welcher der zugehörige Teilnehmer gefunden werden kann.
Wann ist eine Funktion jedoch „einfach“ zu berechnen? Man geht davon aus
dass Probleme die in polynomialer Zeit als Funktion der Länge der Eingabe
lösbar sind als einfach zu bezeichnen sind. Beträgt die Länge der Eingabe einer Funktion n Bits so ist die Zeit zur Berechnung einer einfachen Funktion
proportional zu na, wobei a eine Konstante ist.
Ist die Zeit, welche zur Lösung eines Problems benötigt wird nicht mehr polynomial sondern exponentiell zur Länge der Eingabe proportional - z. B. zu 2n so ist die Funktion ab einer bestimmten Bitlänge n praktisch nicht mehr lösbar.
Gegenwärtig geht man davon aus dass Funktionen mit einer Eingabe von
n>80 Bit nicht zu berechnen sind.
Moderne kryptographische Verfahren beruhen vor allem auf der einfachen Berechnung von Exponentialfunktionen und der nur mit hohem Aufwand zu lösenden Umkehrfunktion, dem Logarithmus.
3.2. Digitale Signatur
Ziel der digitalen Signatur ist die Gewährleistung folgender zwei Punkte:
• Benutzerauthentizität:
Es kann überprüft werden ob eine Nachricht tatsächlich von einer bestimmten Person stammt.
• Nachrichtenintegrität:
Es kann überprüft werden ob eine Nachricht verändert wurde.
Seite 8
IT-Systeme
Kryptologie - Verschlüsselungsverfahren
Für die digitale Funktion greift man auf asymmetrische Verfahren zurück. Ein
Teilnehmer, der eine digitale Signatur für ein Dokument erzeugen will muss
also ein entsprechendes Schlüsselpaar (siehe auch Kapitel 5.2
„Schlüsselgenerierung“) besitzen.
Der Absender berechnet aus seiner Nachricht und seinem geheimen Schlüssel die digitale Signatur (eine Art digitaler Fingerabdruck) der Nachricht. Im
Vergleich zur handschriftlichen Unterschrift hat die digitale Signatur also den
Vorteil, dass die Unterschrift auch vom unterschriebenen Dokument abhängt.
Die Unterschriften ein und desselben Teilnehmers sind verschieden, sofern
die unterzeichneten Dokumente nicht absolut übereinstimmen.
Das Dokument wird zusammen mit der Signatur an den Empfänger geschickt.
Dieser kann mit Hilfe des öffentlichen Schlüssels des Absenders, des Dokumentes und der Signatur feststellen ob die Signatur korrekt ist.
3.3. Hashfunktion
In der Praxis hat das im Kapitel 3.2 beschriebene Verfahren den großen
Nachteil dass die Signatur etwa genauso lang ist wie das eigentliche Dokument. Damit dauert die Erstellung der Signatur relativ lange und das zu übertragene Datenvolumen ist ca. doppelt so groß wie die Nutzdaten.
Abhilfe schafft hier die sogenannte Hashfunktion. Eine Hashfunktion (eng.: "to
hash": zerhacken, dt. Bezeichnung: Streuwertfunktion) ist eine nicht umkehrbare Funktion die eine umfangreiche Quellmenge (i.d.R. Texte) auf eine wesentlich kleinere Zielmenge (Hash-Werte, i.d.R. natürliche Zahlen und Buchstaben) abbildet.
Die Anforderungen an eine Hashfunktion lauten:
• Datenreduktion:
Der Speicherbedarf des Hash-Wertes soll deutlich kleiner sein als der
der Nachricht.
• Zufälligkeit:
Ähnliche Quellen müssen völlig verschiedene Hash-Werte liefern.
• Eindeutigkeit:
Die Funktion muss eindeutig von der Quellmenge auf die Zielmenge
abbilden. Wiederholtes Berechnen des Hash-Wertes desselben
Quellelements muss dasselbe Ergebnis liefern.
• Effizienz:
Die Funktion muss schnell berechenbar sein.
• Kollisionsfreiheit:
Es darf nicht effizient möglich sein, zwei Quellelemente mit demselben Hash-Wert zu finden. Andererseits sind Kollisionen bei der Adressberechnung in Datenbanken nicht zu vermeiden, so dass eine
entsprechende Behandlungs-Strategie verfügbar sein muss.
• Unumkehrbarkeit:
Zu der Funktion gibt es keine effizient berechenbare inverse Funktion, mit der es möglich wäre, für ein gegebenes Zielelement ein passendes Quellelement zu finden.
Seite 9
IT-Systeme
Kryptologie - Verschlüsselungsverfahren
Ein weit verbreiteter Hash-Algorithmus ist MD5 (Message Digest Algorithm 5)
von Ronald L. Rivest.
MD5 erzeugt auf Grundlage eines beliebig langen Dokumentes stets einen
Hashwert von 128 Bit Länge. Dieser Hashwert wird üblicherweise als 32stellige Hexadezimalzahl notiert, die dann beispielsweise so aussehen kann:
34048ce4cd069b624f6e021ba63ecde5
Bereits 1994 wurden Pseudo-Kollisionen in MD5 entdeckt. Seit der Veröffentlichung eines theoretischen Angriffsszenarios wird dieser Algorithmus als
nicht mehr sicher erachtet. Zwischenzeitlich war es gelungen, eine in den Parametern modifizierte Version von MD5 zu brechen, ein erfolgreicher Angriff
auf die "echte" MD5-Funktion wurde bis heute jedoch nicht entwickelt. Stattdessen wird empfohlen, den SHA-1-Algorithmus zu benutzen.
Der "Secure Hash Algorithm" (SHA) erzeugt Hashwerte der Länge 160 Bit für
Nachrichten mit einer Größe von bis zu 264 Bit (dies entspricht etwa 1,4 Billiarden, also 1,4 · 1015, Seiten ASCII-Text mit 1620 Zeichen pro Seite).
Seite 10
IT-Systeme
Kryptologie - Verschlüsselungsverfahren
4 Mathematische Grundlagen
4.1. Primzahlen
Eine Primzahl p ist eine natürliche Zahl größer als 1, die nur die Zahlen 1 und
p als positive Teiler hat. D. h. eine Primzahl p ist eine natürliche Zahl, die genau zwei natürliche Teiler hat.
Eine natürliche Zahl, die größer als 1 und nicht Primzahl ist, nennt man zusammengesetzte Zahl. Die Zahlen 0 und 1 sind weder prim noch zusammengesetzt.
Die ersten Primzahlen sind
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, ...
Mit Ausnahme der 2 sind alle Primzahlen ungerade, denn alle geraden Zahlen
lassen sich ja durch 2 teilen. Zwei aufeinander folgende ungerade Zahlen, die
beide Primzahlen sind, heißen Primzahlzwillinge, z. B. 11 und 13.
Es gilt der Fundamentalsatz der Arithmetik: Jede positive natürliche Zahl lässt
sich eindeutig als Produkt von Primzahlen darstellen, die in dieser Darstellung
auftretenden Primzahlen nennt man die Primfaktoren der Zahl.
Primzahlen spielen eine wichtige Rolle in der Kryptologie: Einige Verschlüsselungssysteme basieren darauf, dass man zwar relativ schnell große Primzahlen erzeugen und mit ihnen rechnen kann, dass es aber (noch) kein schnelles
Faktorisierungsverfahren gibt, um große Zahlen in ihre Primfaktoren zu zerlegen (große Zahlen sind hier Zahlen mit mehr als hundert Stellen).
4.2. Modulo Operator
In der Mathematik und Informatik steht mod für den Modulo-Operator bzw.
die Modulo-Funktion. Sie liefert den Rest bei der Ganzzahl-Division.
So ist 5 : 3 = 1 Rest 2, als Äquivalenz geschrieben: 5 ≡ 2 mod 3
(gesprochen: "5 ist kongruent zur 2 in Bezug auf mod 3").
Beispiele:
9 ≡ 1 mod 2
18 ≡ 4 mod 7
8 ≡ 8 mod 11
da
da
da
9:2
18 : 7
8 : 11
= 4
= 2
= 0
Rest 1
Rest 4
Rest 8
Seite 11
IT-Systeme
Kryptologie - Verschlüsselungsverfahren
4.3. Diskrete Exponentialfunktion
Die diskrete Exponentialfunktion ba mod p liefert den Rest bei Divison von
ba durch p. Synonyme Bezeichnungen sind modulare Exponentiation oder
modulares Potenzieren. Die diskrete Exponentialfunktion ist auch für große
Exponenten effizient berechenbar.
Für die Umkehrung (diskreter Logarithmus genannt), also die Berechnung des
Exponenten x, bei gegebener Basis b, Modul m und gewünschtem Ergebnis,
ist allerdings bis heute kein schneller Algorithmus bekannt.
Beispiele:
24 mod 3 = 16 mod 3 = 5
42 mod 5 = 16 mod 9 = 1
33 mod 13 = 9 mod 13 = 0
Rest 1
Rest 7
Rest 9
4.4. Diskreter Logarithmus
Die Lösung x der Gleichung ax = m mod p bei gegebenen natürlichen Zahlen
m, a und p nennt man diskreter Logarithmus modulo p von m zur Basis a.
Der diskrete Logarithmus ist für hinreichend große Zahlen praktisch nicht berechenbar, für die Potenzierung ax modulo p gibt es dagegen effiziente Algorithmen (im Sinne der Komplexitätstheorie).
Die modulare Potenzierung kann daher als Einwegfunktion benutzt werden
und findet deshalb Anwendung in der Kryptographie.
Beispiele:
3x = 2 mod 7
5x = 9 mod 11
7x = 8 mod 11
-->
-->
-->
x=2
x=4
x=9
oder
oder
oder
x = 8 oder
x = 9 oder
x = 19 oder
Seite 12
x = 14
x = 14
x = 29
oder ....
oder ...
oder ...
IT-Systeme
Kryptologie - Verschlüsselungsverfahren
4.5. Schnelles Exponentieren
Bei der Einführung der diskreten Exponentialfunktion hieß es dass diese auch
für große Exponenten effizient berechenbar sei. Eine Möglichkeit dafür sei
hier vorgestellt.
Es soll der Ausdruck 12037 mod 3713 berechnet werden. Wollte man dies
ganz blauäugig berechnen, so geht man folgendermaßen vor:
-
Man berechnet 12037 und speichert das Ergebnis im Taschenrechner
-
Nun teilt man das Ergebnis durch 3713 und merkt sich den ganzzahligen Teil des Ergebnisses
-
Man multipliziert den ganzzahligen Teil der vorherigen Divison mit 3713
und zieht das Ergebnis von dem im ersten Schritt gespeicherten Ergebnis ab.
Damit musste der Taschenrechner 120 Multiplikationen, eine Division und
eine Subtraktion, also in der Summe 122 Operationen durchführen.
Bei der effektiveren Vorgehensweise wird der Exponent zunächst als Dualzahl
angeschrieben. Damit lautet der gewünschte Ausdruck 120100101 mod 3713.
Nun wird die Berechnung folgendermaßen durchgeführt, wobei der Exponent
von links nach rechts abgearbeitet wird:
1. Für den ganz linken 1er im Exponent die Basis einmal anschreibt und
den Modul berechnet.
2. a) Ist die nächste Stelle im Exponent eine Null, so wird das Ergebnis
aus (1) quadriert und der Modul berechnet.
b) Ist die nächste Stelle im Exponent eine Eins, so wird das Ergebnis
aus (1) quadriert, der Modul berechnet, dieses Ergebnis noch
einmal mit der ursprünglichen Basis multipliziert und erneut der
Modul bestimmt.
3. Punkt (2) wird so lange wiederholt bis der Exponent vollständig von
links nach rechts abgearbeitet wurde.
Am Beispiel 120100101 mod 3713 sieht die Berechnung folgendermaßen aus:
Ziffer im Exponent
1:
0:
0:
1:
0:
1:
Berechnung
120 ≡ 120 mod 3713
120 2 ≡ 3261 mod 3713
32612 ≡ 89 mod 3713
89 2 ≡ 495 mod 3713
3705 2 ≡ 64 mod 3713
64 2 ≡ 383 mod 3713
Damit gilt: 12037 ≡ 1404 mod 3713.
Seite 13
495 ⋅ 120 ≡ 3705 mod 3713
383 ⋅ 120 ≡ 1404 mod 3713
IT-Systeme
Kryptologie - Verschlüsselungsverfahren
5 Das RSA-Verfahren
5.1. Einführung
Das RSA-Kryptosystem ist ein asymmetrisches Kryptosystem, d.h. es verwendet verschiedene Schlüssel zum Ver- und Entschlüsseln. Es ist nach seinen Erfindern Ronald L. Rivest, Adi Shamir und Leonard Adleman benannt.
Nachdem Whitfield Diffie und Martin Hellman eine Theorie zur Public-KeyKryptografie veröffentlicht hatten, setzten sich die drei Mathematiker hin und
versuchten, die Annahmen von Diffie und Hellmann zu widerlegen. Nachdem
sie den Beweis bei verschiedenen Verfahren durchführen konnten, stießen sie
schließlich auf eines, wo sie keinerlei Angriffspunkte fanden. Hieraus entstand
dann RSA.
Das Verfahren wurde 1977 entwickelt und basiert auf der Idee, dass die Faktorisierung einer grossen Zahl1, also ihre Zerlegung in (mindestens zwei) Faktoren, eine sehr aufwändige Angelegenheit ist, während das Erzeugen einer
Zahl durch Multiplikation zweier Primzahlen trivial ist.
Wenn nun eine Nachricht einem Empfänger verschlüsselt zugeleitet werden
soll, generiert dieser einen öffentlichen Schlüssel. Der Nachrichtenabsender
verwendet diesen öffentlich bekanntgemachten Schlüssel, indem er damit
seine Botschaft verschlüsselt. Nur der Empfänger kann diese "dekodieren",
da nur er die "Zusammensetzung" des von ihm erzeugten (öffentlichen)
Schlüssels kennt.
Da die Verschlüsselung mit Hilfe des öffentlichen Schlüssels sehr einfach, die
Entschlüsselung ohne Kenntnis des geheimen Schlüssels (der „Falltür“) jedoch extrem schwierig ist handelt es sich um eine Einwegfunktion mit Falltür.
RSA wird u.a. zur Authentisierung französischer Telefonkarten angewendet.
1
Der beim RSA-Verfahren entscheidende Modul n wird als Dualzahl angegeben und hat üblicherweise eine Länge von etwa 600 Bit.
Seite 14
IT-Systeme
Kryptologie - Verschlüsselungsverfahren
5.2. Schlüsselgenerierung
1. Wähle zufällig und stochastisch unabhängig zwei Primzahlen p ≠ q, die
etwa gleich lang sein sollten und berechne deren Produkt (Modul genannt) n = p·q.2
In der Praxis werden diese Primzahlen durch Raten einer Zahl und
darauffolgendes Anwenden eines Primzahltests bestimmt.
2. Berechne die Euler-Funktion3 J(n) = (p-1) · (q-1).
3. Wähle eine zufällige Zahl e mit 2<e<n-1, die teilerfremd zu J(n) ist.
4. Berechne die Zahl d so, dass das Produkt e·d kongruent 1 bezüglich
des Moduls J(n) ist, dass also e·d ≡ 1 mod J(n) gilt4.
Damit ist die Schlüsselgenerierung abgeschlossen:
• (n, e) ist der öffentliche Schlüssel P (public key)
• (n, d) ist der geheime Schlüssel S (secret key) 5
• Die Zahlen p, q und damit auch J(n) können „weggeworfen“ werden.
Die Bezeichnungen e und d sind kennzeichnen bereits den späteren Einsatzzweck der beiden Zahlen. Für das verschlüsseln (engl.: encryption) wird e, für
das entschlüsseln (engl: decryption) dagegen d benötigt.
Jeder kann nun eine beliebige Nachricht mit dem öffentlichen Schlüssel e
chiffrieren, aber nur der gewünschte Adressat kann als alleiniger Besitzer des
geheimen Schlüssels d die Nachricht wieder dechiffrieren.
5.3. Verschlüsseln einer Nachricht
Zum Verschlüsseln wird die als Zahl dargestellte Nachricht in Teile aufgebrochen, so dass jede Teilzahl kleiner als n ist.
Das chiffrieren einer Nachricht erfolgt stets nach folgender Vorschrift:
C = E((n, e); M) := Me mod n
Zu den bereits bekannten Größen n und e gelten folgende Bezeichnungen:
-
C: Geheimtext (Cipher Text)
-
E: Verschlüsselungsfunktion (Encryption)
-
M: Klartext (Message)
2
Das BSI (Bundesamt für Sicherheit in der Informationstechnik empfiehlt, die Primfaktoren p
und q ungefähr gleich groß, aber nicht zu dicht beieinander zu wählen, d. h. konkret etwa
0,5 < | log2(p) – log2(q) | < 30
3
Bei vorgegebenem n ist die Anzahl der Zahlen aus der Menge {1, ..., n-1}, die zu n teilerfremd sind, gleich dem Wert der Euler-Funktion J(n), manchmal auch Φ(n) geschrieben.
Für eine Primzahl p gilt: J(p) = p-1 Ist n dagegen das Produkt zweier Primzahlen p und q so
gilt: J(n) = (p-1) · (q-1).
4
Man berechnet mit d also die multiplikativ Inverse zu e modulo J(n)
5
Vom geheimen Schlüssel S bestehend aus (n, d) ist jedoch nur d geheim zu halten.
Seite 15
IT-Systeme
Kryptologie - Verschlüsselungsverfahren
Beispiel:
a. Für die beiden Primzahlen p und q werden die Zahlen p = 11 und q = 13
gewählt. Damit wird n = p·q = 143.
b. Berechnung der Euler-Funktion: J(n) = J(143) = (p-1) · (q-1) = 120.
c. Für die zu J(143) = 120 teilerfremde neue Zahl e sei e = 23 gewählt.
d. Mit diesen Werten erhält man die Bedingung: 23·d ≡ 1 mod 120. Das
heisst: Das Produkt soll bei Division durch 120 den Rest 1 lassen. Man
kann damit die Kongruenz als Gleichung schreiben: 23·d = k·120 + 1. Dabei ist k eine ganze Zahl. Als eine Lösung dieser diophantischen Gleichung 120·k - 23·d = -1 ergibt sich d = 47 und k = 9.
Damit erhält man das Schlüsselpaar:
•
Öffentlicher Schlüssel P bestehend aus n = 143 und e = 23
•
Geheimer Schlüssel S bestehend aus n = 143 und d = 47, wobei
nur d geheim zu halten ist.
e. Es soll der Klartext M := 7 verschlüsselt werden. Damit gilt:
C = E((143, 23);7) := 723 mod 143
Exponent wird in Dualzahl umgeschrieben: 723 mod 143 = 710111 mod 143
Ziffer im Exponent
1:
0:
1:
1:
1:
Berechnung
7 ≡ 7 mod 143
7 2 ≡ 49 mod 143
492 ≡ 113 mod 143
762 ≡ 56 mod 143
1062 ≡ 82 mod 143
113 ⋅ 7 ≡ 76 mod 143
56 ⋅ 7 ≡ 106 mod 143
82 ⋅ 7 ≡ 2 mod 143
Damit wurde der Klartext M = 7 in den Geheimtext C = 2 codiert.
5.4. Entschlüsseln einer Nachricht
Auch zum entschlüsseln wird das als Zahl dargestellte Chiffrat zunächst in
Teile aufgebrochen, so dass jede Teilzahl kleiner als n ist.
Das dechiffrieren erfolgt nun nach folgender Vorschrift:
M = D((n, d); C) := Cd mod n
Für die verwendeten Abkürzungen gelte hier:
-
M: Klartext (Message)
-
D: Entschlüsselungsfunktion (Decryption)
-
C: Geheimtext (Cipher Text)
Seite 16
IT-Systeme
Kryptologie - Verschlüsselungsverfahren
Die Entschlüsselung gelingt nur, weil gilt:
M = Cd mod n
= (Me mod n)d mod n
= (Me)d mod n
= Me·d mod n
= M1 mod n
da e·d ≡ 1 mod n gilt:
=M
Beispiel:
Damit kann der auf Seite 16 aus der Nachricht M = 7 generierte Geheimtext
C = 2 wieder entschlüsselt werden.
Dazu wird neben dem Geheimtext noch der geheime Schlüssel S bestehend
aus n = 143 und d = 47 des dort generierten Schlüsselpaares benötigt.
Damit erfolgt die Dekodierung folgendermaßen
M = D((143, 47); 2) := 247 mod 143
Exponent wird in Dualzahl umgeschrieben: 747 mod 143 = 7101111 mod 143
Ziffer im Exponent
1:
0:
1:
1:
1:
1:
Berechnung
2 ≡ 2 mod 143
22 ≡ 4 mod 143
42 ≡ 16 mod 143
322 ≡ 23 mod 143
462 ≡ 114 mod 143
852 ≡ 75 mod 143
16 ⋅ 2 ≡ 32 mod 143
23 ⋅ 2 ≡ 46 mod 143
114 ⋅ 2 ≡ 85 mod 143
75 ⋅ 2 ≡ 7 mod 143
Damit wurde aus dem Geheimtext C = 2 wieder der Klartext M = 7 gewonnen.
Seite 17
IT-Systeme
Kryptologie - Verschlüsselungsverfahren
5.5. Beispiel
Der Nachricht soll das ASCII-Alphabet zugrunde liegen, womit jedes Einzelzeichen der Nachricht in 8-Bit lange Zahlen codiert wird.
Es soll der Text „RSA works!“ verschlüsselt werden. Zunächst erfolgt die Umcodierung in ASCII-Code (Darstellung in Dezimalschreibweise):
Text
Zahl
R
82
S
83
A
65
32
w
119
o
111
r
114
k
107
s
115
!
32
Schlüsselerzeugung:
1. p = 509, q = 503
2. e = 65.537
→ n = p·q = 256.027
→ J(n) = (p-1)·(q-1) = 255.016
(soll zwischen 509 und 255.016 liegen und muss teilerfremd zu 255.016 sein)
3. d = 231.953 (denn e·d ≡ 1 mod J(n))
Variante 1: Ver- / Entschlüsselung ohne Blockbildung
Jeder Buchstabe wird einzeln mit nachfolgender Vorschrift verschlüsselt:
C ≡ M65.537 mod 256.027
Daraus ergibt sich das Chiffrat:
212984
100412
025546
054196
104529
100184
031692
058179
248407
227433
Die Entschlüsselung erfolgt mit
M ≡ C231.953 mod 256.027
Variante 2: Ver- / Entschlüsselung mit Blockbildung
Jeweils zwei ASCII-Zeichen werden zu einem Block zusammengefasst indem
die ASCII-Zahlen als 3-stellige Dezimalzahlen (evtl. mit führender Null) hintereinandergeschrieben und dann verschlüsselt werden.
Damit ergibt sich der folgende zusammengefasste Klartext:
082083
065032
119111
114107
115033
115318
014251
Die Verschlüsselung pro Block ergibt mit
C ≡ M65.537 mod 256.027
folgenden Geheimtext:
198967
051405
254571
Seite 18
IT-Systeme
Kryptologie - Verschlüsselungsverfahren
6 Quellen
• Didaktik der Informatik der Universität Potsdam:
http://ddi.cs.uni-potsdam.de/Lehre/e-commerce/elBez2-5/page04.html
• Studienarbeit im Fachbereich Informatik der TU Darmstadt von Christian Binder:
http://www.sec.informatik.tu-darmstadt.de/lang_neutral/diplomarbeiten/docs/binder_studien.pdf
• Skript zum CrypTool der TU Darmstadt, Universität Siegen und der
Deutschen Bank:
http://www.cryptool.de
• Freie Online-Enzyklopädie:
http://www.wikipedia.de
Seite 19
Herunterladen