Teil III ASYMMETRISCHE KRYPTOGRAPHIE

Größe: px
Ab Seite anzeigen:

Download "Teil III ASYMMETRISCHE KRYPTOGRAPHIE"

Transkript

1 Teil III ASYMMETRISCHE KRYPTOGRAPHIE

2

3 KAPITEL 10 EINFÜHRUNG Die Entdeckung der asymmetrischen Kryptographie in den 1970er Jahren kam einer Sensation gleich. Bis zu diesem Zeitpunkt galt das Dilemma, dass zum Mitteilen eines Geheimnisses (die Nachricht) zuerst ein anderes Geheimnis (der Schlüssel) mitgeteilt werden muss, als unlösbares Problem. Für die Kryptographie war es somit ein historischer Schritt, ohne den die Errungenschaften der modernen Kryptographie undenkbar wären. Lange Zeit dachte man, dass das erste asymmetrische Verfahren von Whitfield Diffie, Martin Hellman und Ralph Merkle 1976 entwickelt wurde [DH76], doch später erfuhr man, dass Malcolm Williamson vom britischen Geheimdienst das genau gleiche Verfahren bereits ein paar Jahre zuvor entdeckte, dies aber geheim halten musste. Trotzdem gilt noch heute der sogenannte Diffie-Hellman-Merkle-Schlüsseltausch als das erste asymmetrische kryptographische Verfahren. Wie der Name es sagt, handelt es sich dabei noch nicht um eine Verschlüsselung im eigentlichen Sinne, sondern nur um eine Methode, mit der ein geheimer Schlüssel vereinbart werden kann. Die erste echte asymmetrische Verschlüsselungsmethode wurde 1977 unter dem Namen RSA vorgestellt, benannt nach den Erfindern Ron Rivest, Adi Shamir und Leonard Adleman [RSA78]. Seither wurden viele weitere asymmetrische Verfahren entdeckt, aber RSA gilt auch heute noch als das wichtigste GRUNDLAGEN In der asymmetrischen Kryptographie geht man davon aus, dass jede Entität in einem Kommunikationsnetzwerk ein eigenes Schlüsselpaar (e, d) besitzt, wobei sowohl e wie d Elemente des Schlüsselraums K sind. Ein Verfahren gilt aber erst dann als asymmetrisch, Einführung in diekryptographie. c by Prof. Rolf Haenni 77

4 78 EINFÜHRUNG wenn es für die meisten solcher Schlüsselpaare schwierig ist, den Schlüssel d aus e herzuleiten (siehe Teil I, Kapitel 3). Für die Sicherheit eines Verfahrens ist es zudem entscheidend, dass der private Schlüssel d von dessen Besitzer geheim gehalten wird. Der öffentliche Schlüssel e hingegen ist nicht geheim und darf somit über unsichere Kanäle verbreitet werden. Wenn also Alice einen vertraulichen Klartext m an Bob schicken möchte, dann muss Alice im Besitz von des öffentlichen Schlüssels von Bob sein. Unter der Annahme, dass (e, d) das zu Bob gehörige Schlüsselpaar ist, verschlüsselt also Alice den Klartext mit Hilfe der Verschlüsselungsfunktion E e, währendem Bob D d für die Entschlüsselung benötigt. Konkret heisst dies, dass Alice den Chiffretext c = E e (m) berechnet, diesen an Bob über einen unsicheren Kanal übermittelt, worauf Bob m = D d (c) berechnet, und somit an den Klartext herankommt. Voraussetzung dafür ist natürlich, dass die beiden Funktionen E e und D d für alle möglichen Schlüsselpaare (e, d) K 2 und alle möglichen Klartexte m M die Gleichung m = D d (E e (m)) erfüllen. In einem solchen Fall ist E e eine Einweg-Funktion mit Falltür, wobei d die Rolle der Falltür-Information spielt, die notwendig ist, um die Umkehrfunktion D d = Ee 1 zu finden. Ein entsprechendes Schema für eine asymmetrische Zweiparteien-Kommunkation zeigt Abb (siehe Teil I, Kapitel 3). Sind mehr als zwei Personen beteiligt, gilt das in Abb gezeigte Mehrparteien-Kommunkationsschema. Die Existenz von derart aufeinander abgestimmten Funkionen E e und D d wurde bis zur Entdeckung des RSA-Verfahrens angezweifelt. Bei RSA ist es aber noch immer ungewiss, ob es sich dabei um eine echte Einweg-Funktion mit Falltür handelt, denn dies gilt nur solange, wie es kein effizientes Verfahren gibt, den privaten Schlüssel d aus e herzuleiten. Und gerade dies ist bei RSA noch immer unklar. Damit ein asymmetrisches Verfahren für die praktische Anwendung in Frage kommt, müssen weitere Anforderungen erfüllt sein. Die folgende Liste gibt einen Überblick, wobei die verwendeten Attribute einfach und schwierig auch hier in einem komplexitätstheoretischen Sinn zu verstehen sind: Es muss einfach sein, ein zufälliges Schlüsselpaar (e, d) zu finden, dass die obige Gleichung für alle möglichen Klartexte m erfüllt; Es muss einfach sein, einen Klartext mit Hilfe der Funktion E e zu verschlüsseln; Es muss einfach sein, einen Chiffretext mit Hilfe der Funktion D d zu entschlüsseln; Es muss schwierig sein, aus einem Chiffretext mit Hilfe des öffentlichen Schlüssels e den Klartext herzuleiten. Zusätzlich besteht eine wünschenswerte Anforderung darin, dass die gleiche Funktion sowohl für die Ver- wie auch die Entschlüsselung verwendet werden kann. Konkret heisst dies, dass nur eine Funktionsklasse E benötigt wird, welche die Gleichung m = E d (E e (m)) erfüllt (für alle möglichen Schlüsselpaare (e, d) und Klartexte m). In einem solchen Fall ist es oft so, dass man die Schlüssel auch vertauscht anwenden kann, d.h. den privaten Schlüssel d also für die Verschlüsselung und den öffentlichen Schlüssel e für die Entschlüsselung. RSA zum Beispiel besitzt diese Eigenschaft. Auf die Bedeutung einer solchen Private-Key- Verschlüsselung wird in Abschnitt 10.4 eingegangen.

5 MAN-IN-THE-MIDDLE ATTACKE MAN-IN-THE-MIDDLE ATTACKE Da die öffentlichen Schlüssel in einem asymmetrischen Verschlüsselungsschema nicht geheim gehalten werden müssen, können diese über unsichere Kanäle ausgetauscht werden. In der Praxis werden öffentliche Schlüssel oft auf sogenannte Key Server gelegt, die in der Regel frei zugänglich sind (siehe Abschnitt 10.5). Auf den ersten Blick scheint also das Schlüsselverteil-Problem gelöst, doch genau genommen trifft dies nur bezüglich passiven Attacken zu. Mit einer aktiven Attacke könnte ein Angreifer nämlich versuchen, den öffentlichen Schlüssel bei dessen Verbreitung abzufangen und durch einen eigenen zu ersetzten. Konkret könnte zum Beispiel der auf einem Key Server liegende öffentliche Schlüssel e mit e vertauscht werden. Gelingt dies dem Angreifer, dann wird er sämtliche verschlüsselten Nachrichten entschlüsseln können, denn er ist ja im Besitz des entsprechenden privaten Schlüssels d. Da der Angreifer zudem den echten öffentlichen Schlüssel e des Empfängers kennt, kann er die Nachricht damit verschlüsseln und ans eigentliche Ziel weiterleiten, um so den Angriff zu verschleiern. Ein solcher Angriff wird auch Man-in-the- Middle-Attacke genannt. Ein Schema dazu ist in Abb abgebildet. A e e B E e c c D d m D e /E e m O Abbildung Die Man-in-the-Middle-Attacke. Gemäss dem oben geschilderten Szenario bleibt eine Man-in-the-Middle-Attacke unbemerkt. In dem Sinne handelt es sich um einen Angriff auf die Vertraulichkeit der Information. Das Hauptziel bezüglich Informationssicherheit wird also auch bei einem asymmetrischen Verfahren nicht vollumfänglich erreicht. Das gleiche gilt aber auch bezüglich den anderen drei Sicherheitszielen, denn gemäss dem obigen Schema könnte der Angreifer ebenso eine veränderte oder selbst generierte Nachricht m verschlüsseln und an den Empfänger weiterschicken, ohne dass dies bemerkt würde. Zusammenfassend kann man sagen, dass asymmetrische Verfahren das Schlüsselverteilproblem vereinfachen, es aber nicht lösen. In der Praxis sollte also ein öffentlicher Schlüssel vor dem Gebrauch immer auf dessen Echtheit überprüft werden, zum Beispiel mit Hilfe von digitalen Fingerabdrücken oder Zertifikaten (siehe Teil IV, Kapitel 15 und 16) HYBRIDE SYSTEME Im Vergleich zu symmetrischen Systemen wie DES oder AES sind die meisten heute bekannten asymmetrischen Verfahren relativ ineffizient (siehe Teil I, Abschnitt 3.4). Somit ist in vielen Fällen das Verschlüsseln von grossen Datenmengen nicht in akzeptabler Zeit durchführbar, was die praktische Umsetzung dieser Techniken auf den ersten Blick in Frage stellt. Immerhin wird sich dieses Problem unter der Annahme, dass die Rechenleistung

6 80 EINFÜHRUNG moderner Computer auch in Zukunft stetig weitersteigt, automatisch abschwächen. Heute aber umgeht man das Problem, indem man symmetrische und asymmetrische Verfahren miteinander kombiniert. Man spricht in einem solchen Fall von einem hybriden System. Fast sämtliche heute im Einsatz stehenden kryptographischen Systeme sind hybrid. Genau genommen besteht die Idee eines hybriden Systems darin, asymmetrische Verfahren lediglich dazu zu benutzen, einen geheimen Sessionsschlüssel (session key) k auszutauschen, mit dem anschliessend symmetrisch verschlüsselt wird. Bei einem solchen Schlüssel handelt es sich um eine sehr kleine Datenmenge (z.b. 56 Bits bei DES oder 128 Bits bei AES), was für einen modernen Rechenprozessor problemlos in kürzester Zeit zu bewältigen ist. Der Sessionschlüssel wird in der Regel nur einmal verwendet, entweder für eine einzige Nachricht oder für eine zeitlich beschränkte Zweiparteien-Kommunikation. Da in einem hybriden System sowohl symmetrische wie auch asymmetrische Ver- und Entschlüsselungen durchzuführen sind, unterscheidet man zwischen den symmetrischen Funktionen SE k und SD k und den asymmetrischen Funktionen AE e und AD d. Das Grundprinzip einer hybriden Zweiparteien-Kommunikation zwischen Alice und Bob ist in Abb abgebildet. Es wird vorausgesetzt, dass Alice im Besitz von Bobs öffentlichen Schlüssels e ist. k AE e c k AD d A SE k c m SD k B m m Abbildung Das Prinzip eines hybriden Verschlüsselungssystems. Bei der Übertragung eines Klartextes m von Alice zu Bob generiert Alice also einen zufälligen Sessionsschlüssel k, mit dessen Hilfe sie den Chiffretext c m = SE k (m) generiert. Dieser Schlüssel muss zudem asymmetrisch verschlüsselt werden, woraus c k = AE e (k) entsteht. Das Paar c = (c m, c k ) wird dann über den unsicheren Kanal an Bob übertragen, worauf dieser zuerst durch k = AD d (c k ) an den geheimen Schlüssel k gelangt, den er dann für die Entschlüsselung m = SD k (c m ) verwendet. Wichtig für die praktische Umsetzung eines hybriden Systems ist die Tatsache, dass das Generieren des geheimen Schlüssels sowie die symmetrische Ver- und Entschlüsselung automatisiert werden können. Die beiden Parteien müssen also darüber gar nichts wissen, d.h. es genügt, wenn sie sich das hybride System als einfaches asymmetrisches Verfahren vorstellen. Diese Abstrahierung führt dazu, dass die Bedeutung der modernen symmetrischen Verfahren oft unterschätzt wird.

7 PRIVATE-KEY-VERSCHLÜSSELUNG PRIVATE-KEY-VERSCHLÜSSELUNG Eine besondere Anwendungsart eines asymmetrischen Verfahrens ist die sogenannte Private- Key-Verschlüsselung. Die Idee dabei ist, nicht mit dem Schlüsselpaar des Empfängers sondern mit demjenigen des Senders zu operieren. Verschlüsselt wir dann mit dem privaten Schlüssel d und entschlüsselt mit dem öffentlichen Schlüssel e des Senders. Dies ist natürlich nur möglich, wenn beim verwendeten Verfahren nicht nur m = D d (E e (m)) für alle möglichen Schlüsselpaare und Klartexte gilt, sondern auch m = D e (E d (m)). Viele der bekannten asymmetrischen Verfahren erfüllen diese Eigenschaft, bei einigen sind E und D sogar identisch. Gegenüber einer passiven Attacke garantiert ein solches System die Sicherheitsziele Authentizität, Integrität und Nicht-Abstreitbarkeit, nicht aber die Vertraulichkeit (siehe Teil I, Abschnitt 2.3). Dass die Vertraulichkeit nicht gegeben ist, ist offensichtlich, denn der für die Entschlüsselung notwendige öffentliche Schlüssel des Senders ist für jedermann zugänglich, insbesondere einem möglichen Angreifer. Die durch die beiden möglichen Anwendungsformen eines asymmetrischen Verfahrens, d.h. Public-Key-Verschlüsselung oder Private-Key-Verschlüsselung, erreichten Sicherheitsziele sind also komplementär. Um alle vier Sicherheitsziele zu erreichen, muss eine Nachricht somit doppelt verschlüsselt werden, d.h. (a) mit dem öffentlichen Schlüssel des Empfängers, (b) mit dem privaten Schlüssel des Senders, oder umgekehrt. Die Entschlüsselung muss dann in der genau umgekehrten Reihenfolge erfolgen, d.h. (a) mit dem öffentlichen Schlüssel des Senders, (b) mit dem privaten Schlüssel des Empfängers, oder umgekehrt. Falls (e A, d A ) das Schlüsselpaar des Senders und (e B, d B ) das Schlüsselpaar des Empfängers bezeichnen, dann lässt sich eine solche doppelte asymmetrische Verund Entschlüsselung mathematisch wie folgt beschreiben: c = E da (E eb (m)), m = D ea (D db (c)). Ein entsprechendes Schema ist in Abb abgebildet. Wegen der Man-in-the-Middle- Attacke gilt für das Erreichen der Sicherheitsziele auch hier die Voraussetzung, dass die beiden Parteien im Besitz des jeweils anderen öffentlichen Schlüssels sind, bzw. diese auf ihre Echtheit überprüft haben. Wegen der doppelten asymmetrischen Ver- und Entschlüsselung ist ein solches System aus Effizienzgründen in der Praxis nicht oder nur beschränkt einsetzbar. Eine Erweiterung zu einem hybriden System (siehe Abschnitt 10.3) ist zwar denkbar, allerdings geht dabei die Nicht-Abstreitbarkeit verloren. Ein anderes grundsätzliches Problem besteht darin, dass die Integrität der Nachricht und die Authentizität des Senders nicht automatisch bewiesen werden können (im Sinne einer digitalen Unterschrift, siehe Teil IV). In der Praxis spielen solche doppelt asymmetrischen Systeme deshalb keine wichtige Rolle. Die Grundidee beim Einsatz von Hash-Funktionen und digitalen Unterschriften ist aber dieselbe (siehe Teil IV).

8 82 EINFÜHRUNG A E E c da eb D db D ea B m m Abbildung Die doppelte asymmetrische Ver- und Entschlüsselung DAS SCHLÜSSEL-VERTEILPROBLEM Wie bereits erwähnt, kann die asymmetrische Kryptographie das bereits erwähnte Schlüsselverteil-Problem (siehe Teil II, Abschnitt 4.2) wesentlich vereinfachen, jedoch nicht vollumfänglich lösen. Immerhin ist das Austauschen der öffentlichen Schlüssel gegenüber einer passiven Attacke sicher. Dies führt dazu, dass es für das Verteilen der öffentlichen Schlüssel eine Reihe von Möglichkeiten gibt, die bei einem symmetrischen System nicht funktionieren würden. Die angestrebte Sicherheit erreicht man aber in all diesen Fällen nur durch den Gebrauch von sicheren Kanälen, über welche die Echtheit der verwendeten öffentlichen Schlüssel überprüft wird. Im folgenden werden vier verschiedene Möglichkeit vorgestellt, wobei immer davon ausgegangen wird, dass Alice (A) eine Nachricht an Bob (B) schicken will. a) Individuelle Ankündigung Bei dieser Methode ist jeder Benutzer für das Verteilen seines öffentlichen Schlüssels selber zuständig. Dies geschieht zum Beispiel durch das Versenden des Schlüssels per . Eine andere Möglichkeit besteht darin, den Schlüssel auf die persönliche Web-Seite zu legen, von wo er von jedermann heruntergeladen werden kann. Ein schematische Darstellung der individuellen Ankündigung zeigt Abb e B e B e B A e B B e B e B e B e B Abbildung Schlüsselverteilung durch individuelle Ankündigung.

9 DAS SCHLÜSSEL-VERTEILPROBLEM 83 b) Öffentliche Ankündigung Hier wird der öffentliche Schlüssel in einem zentralen Verzeichnis (key server, public-key directory) abgelegt, welches ähnlich wie ein Telefonbuch allgemein zugänglich ist. Wer mit jemandem kommunizieren möchte, sucht dann im Verzeichnis nach dessen öffentlichen Schlüssel und lädt ihn herunter. Diese Grundidee ist in Abb dargestellt. e B e B e B A e B Public-Key Directory e B B e B e B e B Abbildung Schlüsselverteilung durch öffentliche Ankündigung. Man unterscheidet zwischen passiven und aktiven öffentlichen Verzeichnissen. Bei einem passiven Verzeichnis wird die Echtheit der abgelegten öffentlichen Schlüssel nicht überprüft. Ein Angreifer kann also problemlos einen Schlüssel unter einem falschen Namen ablegen, und muss dann nur darauf warten, bis dieser tatsächlich benutzt wird. Eine bessere Sicherheit bieten aktive Verzeichnisse, welchen von sogenannten Trusted Third Party (TTP) geführt werden. Bevor ein Schlüssel im Verzeichnis abgelegt wird, überprüft die TTP dessen Echtheit. Aber auch hier ist beim Herunterladen eine Man-in-the-Middle-Attacke möglich. Ein anderes Problem ist, dass bei einer Störung des zentralen Verzeichnisses das ganze System ausfällt. c) Public-Key Authority Dies ist eine Variante einer aktiven öffentlichen Ankündigung, d.h. es wird ebenfalls ein zentrales Verzeichnis geführt und die abgelegten Schlüssel werden überprüft. Der Betreiber des Verzeichnisses besitzt aber selber ein Schlüsselpaar, weshalb man auch von einer Public- Key Authority (PKA) spricht. Der öffentliche Schlüssel e Aut der PKA wird meist durch eine individuelle Ankündigung (z.b. auf der Web-Seite des Verzeichnisses) zur Verfügung gestellt. Bevor ein öffentlicher Schlüssel e B des Benutzers Bob im Verzeichnis abgelegt wird, verschlüsselt die PKA diesen mit dem eigenen privaten Schlüssel. Damit dies möglich ist, muss die dem Abschnitt 10.4 zugrunde liegende Bedingung erfüllt sein. Wenn nun Alice den verschlüsselten Schlüssel C B = E daut (e B ) aus dem Verzeichnis herunterlädt, erhält sie den echten öffentlichen Schlüssel von Bob, indem sie eine Entschlüsselung von C B mit e Aut durchführt. Ein entsprechendes Schema zeigt die Abb Die Sicherheit eines solchen Systems hängt von zwei Faktoren ab. Erstens muss jeder Teilnehmer die Echtheit des öffentlichen Schlüssels e Aut überprüfen, und zweitens muss die PKA beim Überprüfen der abgelegten Schlüssel sehr sorgfältig sein. In beiden Fällen muss ein sicherer Kanal herbeigezogen werden. Da sich die Sorgfalt der PKA aus Sicht eines Benutzers nicht beeinflussen lässt, muss man ihr grosses Vertrauen entgegen bringen. Einige PKAs bieten verschiedene Sicherheitsstufen an, je nachdem wie viel Aufwand beim Überprüfen der Schlüssel betrieben wird.

10 84 EINFÜHRUNG E daut (e B ) E daut (e B ) E daut (e B ) A E daut (e B ) Public-Key Authority e B B e Aut E daut (e B ) E daut (e B ) E daut (e B ) Abbildung Schlüsselverteilung mit Hilfe einer zentralen Instanz. d) Public-Key Zertifikate Die Idee bei Public-Key Zertifikaten ist ähnlich wie vorher, allerdings muss kein zentrales Verzeichnis geführt werden. Das Verfahren wurde 1978 von Loren M. Kohnfelder in einer Bachelor-Arbeit (!) vorgestellt [Koh78]. Viele praktische Lösungen gehen heute in diese Richtung. Die zentrale Stelle nennt man Certificate Authority (CA), die ebenfalls einen eigenen öffentlichen Schlüsssel e Aut zur Verfügung stellt. Mit dem entsprechenden privaten Schlüssel d Aut generiert die CA sogenannte Public-Key Zertifikate. Wenn Bob ein solches beantragt, überprüft die CA Bobs öffentlichen Schlüssel e B. Dieser wird dann asymmetrisch verschlüsselt, woraus Bobs Zertifikat C B = E daut (e B ) entsteht. Für das Verteilen der Zertifikate sind die Benutzer selber zuständig. Falls Alice so in den Besitz von Bobs Zertifikat kommt, kann sie dieses mit Hilfe des öffentlichen Schlüssel e Aut entschlüsseln und erhält dadurch Bobs öffentlichen Schlüssel, den sie dann für die Kommunikation mit Bob benutzen kann. Dieses Vorgehen ist in Abb dargestellt. C B C B C B A C B B e B Certificate Authority e Aut C B = E daut (e B ) C B C B C B Abbildung Schlüsselverteilung mit Hilfe von Zertifikaten. Auch hier ist es wichtig, dass die CA ihre Aufgabe sorgfältig durchführt, und die Benutzer ihr entsprechendes Vertrauen entgegen bringen. Wie bei einem PKA-System liegt der entscheidende Vorteil darin, dass die Benutzer genau einen Schlüssel, nämlich denjenigen der CA, über einen sicheren Kanal überprüfen müssen. Auf die Schlüsselverteilung mit Hilfe von Zertifikaten wird in Teil IV, Kapitel 16 näher eingegangen.

11 KAPITEL 11 ZAHLENTHEORIE Alle heute bekannten asymmetrischen Chiffren beruhen auf Einweg-Funktionen mit Falltür (siehe Teil I, Abschnitt 3.2). Genau genommen handelt es sich um Kandidaten für Einweg- Funktionen mit Falltür, denn deren Existenz ist mathematisch noch immer nicht bewiesen. Sämtliche dieser Kandidaten basieren auf Erkenntnissen der Zahlentheorie (number theory), eine mathematische Disziplin mit einer relativ langen Geschichte. Zwei der für die moderne Kryptographie wichtigsten Sätze stammen von Fermat und Euler aus dem 18. Jh., also lange bevor an eine Anwendung in der Kryptographie gedacht wurde. In dieser Hinsicht ist dies ein gutes Beispiel, wie sich Grundlagenforschung langfristig auszahlen kann. Grundsätzlich handelt es sich bei den bekannten asymmetrische Verfahren um binäre Block-Chiffren, wobei Blöcke der Länge k als Zahlen x {0,..., 2 k 1} = Z 2 k interpretiert werden. Wir wir sehen werden, arbeitet man meistens mit einer leicht grösseren Menge Z n = {0,..., n 1}, wobei die Zahl n im Bereich 2 k n 2 k+1 liegt. Dies führt dazu, dass die Ver- und Entschlüsselung als Funktionen der Form E e : Z + n Z + n, D d : Z + n Z + n, angesehen werden. Natürlich muss das Schlüsselpaar (e, d) auch hier so gewählt werden muss, dass D d (E e (x)) = x für alle x Z n gilt. In gewissen Fällen schränkt man sich dabei auf die Menge Z + n = {1,..., n 1} der positiven Zahlen ein. In diesem Kapitel werden die zahlentheoretischen Grundlagen eingeführt, die für das Verständnis der wichtigsten asymmetrischen Verfahren benötigt werden. In den ansch- Einführung in diekryptographie. c by Prof. Rolf Haenni 85

12 86 ZAHLENTHEORIE liessenden Kapiteln erfolgt dann eine genauere Beschreibung der Verfahren von Diffie- Hellman-Merkle, RSA, Rabin und El Gamal PRIMZAHLEN Eine zentraler Stellung in der Zahlentheorie haben die Primzahlen. Dies sind die natürlichen Zahlen p 2, die nur durch sich selbst und durch 1 ganzzahlig teilbar sind. Bei den Zahlen 2, 3, 5, 7, 11, 13, 17, 19, 23,... handelt es sich zum Beipiel um Primzahlen, wobei 1, 4, 6, 8, 9, 10, 12, 14, 15, 16,... keine Primzahlen sind. Seit kurzem weiss man, dass der Test, ob eine Zahl eine Primzahl ist oder nicht, in polynomialer Zeit durchführbar ist [AKS04], allerdings benutzt man in der Praxis meistens effizientere Approximationsmethoden (siehe Kapitel 13). In der modernen Kryptographie arbeitet man mit Primzahlen mit bis zu 617 Dezimalstellen (2048 Bits). Wie leicht einzusehen ist, lässt sich jede natürliche Zahl n 2 in eindeutiger Weise entweder als Produkt n = p 1 p s von s beliebigen Primzahlen p 1 bis p s oder als Produkt n = p r1 1 prt t von t unterschiedlichen Primzahlen p 1 bis p t, den sogenannten Primfaktoren, schreiben. Die Zahl 2800 kann so zum Beispiel als = = geschrieben werden. Man spricht dabei auch von der Primfaktor-Zerlegung oder dem Faktorisierungsproblem. Bei kleinen Zahlen ist dies kein besonders schwieriges Problem, bei grossen Zahlen jedoch schon. Man vermutet, dass die Primfaktor-Zerlegung allgemein, d.h. in einem komplexitätstheoretischen Sinn, ein schwieriges Problem ist. Allerdings ist dies eine unbewiesene These. Wie wir später sehen werden, ist dies gleichzeitig auch der Grund, warum die Existenz von Einweg-Funktionen mit Falltür noch immer unklar ist. Da demzufolge die Sicherheit von vielen asymmetrischen Verfahren von der Schwierigkeit der Primfaktor-Zerlegung abhängt, ist diese mit Vorsicht zu geniessen GRÖSSTER GEMEINSAMER TEILER UND TEILERFREMDHEIT Ein weiteres wichtiges Grundkonzept der Zahlentheorie ist der grösste gemeinsame Teiler (greatest common divisor) zweier Zahlen. Falls n 0 eine nicht-negative ganze Zahl ist, dann ist eine natürliche Zahl q 1 ein Teiler von n, wenn n q eine ganze Zahl ist, bzw. wenn bei der ganzzahligen Division von n durch q kein Rest übrig bleibt, was durch n mod q = 0 ausgedrückt wird. Im speziellen ist jede natürliche Zahl q 1 ein Teiler von 0. Zudem ist jedes Teilprodukt der Faktorzerlegung von n ein Teiler von n, d.h. 20 = ist zum Beispiel ein Teiler von Formal bezeichnet man eine solche Situation mit q n. Sind n 1 und n 2 zwei nicht-negative ganze Zahlen, dann ist deren grösster gemeinsamer Teiler durch gcd(n 1, n 2 ) = max{x Z : x n 1, x n 2 }

13 GRÖSSTER GEMEINSAMER TEILER UND TEILERFREMDHEIT 87 definiert. Zum Beispiel gilt gcd(2800, 90) = 10. Falls p 1 p 2 unterschiedliche Primzahlen sind, dann gilt gcd(p 1, p 2 ) = 1. Allgemeine Gültigkeit haben die folgenden Aussagen: gcd(n, 0) = gcd(n, n) = n; gcd(n 1, n 2 ) = gcd(n 2, n 1 ); gcd(n 1, n 2 ) = gcd(n 1 mod n 2, n 2 ). Die letzte der oben aufgeführten Aussagen erlaubt es, die Funktion gcd effizient zu berechnen. Dies führt zum sogenannten Algorithmus von Euklid, der als rekursive Funktion wie folgt geschrieben werden kann: Function gcd(n 1, n 2 ); if n 2 = 0 then return n 1 ; else return gcd(n 2, n 1 mod n 2 ); end Algorithmus 11.1 : Grösster gemeinsamer Teiler (Euklid) Da bei jedem Schritt die eine durch die andere Zahl dividiert und danach der Rest rekursiv weitergegeben wird, terminiert der Euklidsche Algorithmus selbst bei grossen Zahlen sehr schnell. Genau genommen beträgt die Laufzeit-Komplexität O(log n 1 log n 2 ). Die Startwerte n 1 = 1406 und n 2 = 3864 zum Beispiel führen zu den folgenden rekursiven Aufrufen: gcd(1406, 3864) 1406 = gcd(3864, 1406) 3458 = gcd(1406, 646) 1406 = gcd(646, 114) 646 = gcd(114, 76) 114 = gcd(76, 38) 76 = gcd(38, 0) = 38 Zwei nicht-negative ganze Zahlen n 1 0 und n 1 0 heissen teilerfremd (relatively prime), falls gcd(n 1, n 2 ) = 1 ist. Dies ist genau dann der Fall, wenn die entsprechenden Primfaktor-Mengen disjunkt sind. Die beiden Zahlen 8 = und 15 = 3 5 sind zum Beispiel teilerfremd, weil die Mengen {2} und {3, 5} disjunkt sind. Ist p eine Primzahl, dann ist jede kleinere positive Zahl q < p teilerfremd zu p. Das Konzept der Teilerfremdheit ist die Grundlage für die sogenannte Euler-Funktion φ(n) = Anzahl der positiven ganzen Zahlen q < n, die teilerfremd zu n sind. Die Zahl 8 zum Beispiel führt zu φ(8) = 4, denn von den Zahlen im Bereich sind genau 4 teilerfremd zu 8, nämlich die ungeraden Zahlen 1, 3, 5 und 7. Da Primzahlen nicht ganzzahlig teilbar sind, gilt φ(p) = p 1 für alle Primzahlen p. Die folgende Tabelle zeigt die ersten 13 Werte der Euler-Funktion. Das Berechnen der Euler-Funktion ist im allgemeinen ein schwieriges Problem. In speziellen Fällen aber ist der Funktionswert leicht zu finden. Wenn zum Beispiel n = p q das

14 88 ZAHLENTHEORIE n φ(n) Tabelle Die ersten 13 Werte der Euler-Funktion. Produkt von zwei unterschiedlichen Primzahlen p q ist, und die beiden Primfaktoren p und q bekannt sind, dann kann φ(n) durch φ(n) = φ(p q) = (p 1)(q 1). effizient berechnet werden. Wie wir sehen werden, ist diese Formel bei der RSA-Verschlüsselung von grosser Bedeutung (siehe Abschnitt 12.2). Die Menge der Zahlen x Z n, die zu n teilerfremd sind, wird oft mit Z n bezeichnet. Die Euler-Funktion ist somit durch φ(n) = Z n definiert. Falls n eine Primzahl ist, gilt Z n = Z + n MODULARE ARITHMETIK Modulare Arithmetik ist grob gesagt das Rechnen mit dem Rest einer Division. Konkret heisst dies, dass die arithmetischen Grundoperationen wie Addition, Multiplikation, usw. auf dem diskreten Zahlenbereich Z n = {0,..., n 1}, n 1, durchgeführt werden. Intuitiv kann man sich das so vorstellen, dass wenn die obere Grenze des Zahlenbereichs erreicht wird, man wieder bei null beginnt. Auf n 1 folgt also 0, ähnlich wie bei einer Uhr, dessen 13. Stunde der ersten entspricht. Man spricht deshalb auch von der Clock-Arithmetik. Jede nicht-negative Zahl x 0 lässt sich bezüglich der natürlichen Zahl n, d.h. der Grösse des Zahlenbereichs, als x = q n + r schreiben, so dass r eine nicht-negative ganze Zahl ist, für die r < n gilt. In einem solchen Fall bezeichnet man r als den Rest der ganzzahligen Division von x durch n, und die Zahl q wird Quotient genannt. Für den Rest verwendet man oft die Schreibweise r = x mod n. Zwei natürliche Zahlen x und y werden kongruent modulo n genannt, falls sie bezüglich der ganzzahligen Division durch n den gleichen Rest besitzen, d.h. falls (x mod n) = (y mod n) gilt. In einem solchen Fall benutzt man oft die abgekürzte Schreibweise x y mod n. Es gilt also zum Beispiel mod 7 oder 16 4 mod 12, wobei man letzteres als Beispiel von gleichen Uhrzeiten interpretieren kann. Werden zwei natürliche Zahlen x und y modular addiert, heisst dies, dass der Rest der ganzzahligen Division der Summe x + y durch n berechnet werden muss. Wenn also das Resultat dieser modularen Addition mit z bezeichnet wird, dann gilt (x + y) mod n = z,

15 MODULARE ARITHMETIK 89 was oft auch als (x + y) z mod n geschrieben wird. Es gilt zum Beispiel (4 + 11) mod 6 = 3. Analog werden zwei natürliche Zahlen x und y modular multipliziert, indem der Rest der ganzzahligen Division des Produkts x y durch n berechnet wird. Dies führt zum Resultat (x y) mod n = z, das sich entsprechend als (xy) z mod n schreiben lässt. Ein Beispiel einer modularen Multiplikation ist (4 11) mod 6 = 2. Die meisten Eigenschaften der gewöhnlichen Addition und Multiplikation übertragen sich auf die modulare Addition und Multiplikation. So sind diese zum Beispiel kommutativ, assoziativ und distributiv. Zudem sind die Zahlen 0 und 1 die entsprechenden neutralen Elemente. Weiter wichtige Eigenschaften sind die folgenden: (x + y) ((x mod n) + (y mod n)) mod n, (xy) ((x mod n)(y mod n)) mod n. Diese beiden Eigenschaften erlauben es, modulare Additionen und Multiplikationen zwischen sehr grossen Zahlen auf Zahlen zu reduzieren, die kleiner sind als n. Dies ist vor allem dann wichtig, wenn es darum geht, das modulare Potenzieren effizient zu implementieren (siehe Alg. 11.2). Bezüglich der modularen Arithmetik besitzt jede Zahl x Z n in eindeutiger Weise ein inverses Element ( x), für welches (x + ( x)) mod n = 0 gilt. Die Zahl ( x) wird demnach additiv Inverses von x bezüglich n genannt. Für n = 7 und x = 3 erhalten wir zum Beispiel ( x) = 4. In analoger Weise spricht man bezüglich einer Zahl x Z n vom multiplikativ Inversen x 1, falls (x x 1 ) mod n = 1 gilt. Für n = 7 und x = 3 erhalten wir zum Beispiel x 1 = 5, da 3 5 = 15 1 mod 7. Wichtig zu wissen ist, dass das multiplikativ Inverse nicht für alle x Z n existiert, sondern nur für jene, welche teilerfremd zu n sind. Dies bedeutet, dass falls n eine Primzahl ist, sämtliche natürlichen Zahlen x Z n = Z + n ein multiplikativ Inverses besitzen. Dies wird aus den folgenden beiden Tabellen ersichtlich, welche bezüglich n = 6 (links) und n = 7 (rechts) die modularen Produkte sämtlicher möglichen Zahlenpaare auflisten. Da 6 keine Primzahl ist, besitzen von den Zahlen 1 bis 5 nicht alle ein multiplikativ Inverses, sondern nur die Zahlen 1 und 5 (ersichtlich durch eine 1 im entsprechenden Tabelleneintrag). Bezüglich der Primzahl 7 hingegen besitzen alle Zahlen von 1 bis 6 ein multiplikativ Inverses n = n = 7 Multiplikativ Inverse können mit dem erweiterten Algorithmus von Euklid effizient berechnet werden. Dieser berechnet für zwei nicht-negative ganze Zahlen n 1 und n 2 drei ganze Zahlen x, y und gcd(n 1, n 2 ), für welche die folgende Bedingung gilt: x n 1 + y n 2 = gcd(n 1, n 2 ).

16 90 ZAHLENTHEORIE Aus dieser Bedingung folgt, falls n 1 und n 2 teilerfremd sind und n 1 < n 2, dass x das multiplikativ Inverse von n 1 bezüglich n 2 ist. Dies ist ein Satz, der wie folgt hergeleitet werden kann: x n 1 + y n 2 = gcd(n 1, n 2 ), x n 1 + y n 2 = 1, (x n 1 + y n 2 ) mod n 2 = 1 mod n 2, ((x n 1 mod n 2 ) + (y n 2 mod n 2 )) mod n 2 = 1, (x n 1 mod n 2 ) mod n 2 = 1, (x n 1 ) mod n 2 = 1. Die rekursive Version des erweiterten Algorithmus von Euklid entspricht, was die Abbruch- Bedingung und den rekursiven Aufruf betrifft, dem einfachen Algorithmus von Euklid zum Berechnen des grössten gemeinsamen Teilers. Hinzu kommt, dass in jedem Schritt die Zahlen x und y neu bestimmt werden müssen. Dabei nimmt x den Wert von y an, und y wird durch x q y ersetzt, wobei q der Quotient der ganzzahligen Division von n 1 durch n 2 ist. Function extended- gcd(n 1, n 2 ); if n 2 = 0 then return (n 1, 1, 0); else r n 1 mod n 2 ; q (n 1 r)/n 2 ; (g, x, y) extended- gcd(n 2, r); return (g, y, x q y); end Algorithmus 11.2 : Erweiterter Algorithmus von Euklid. Die Korrektheit des Algorithmus kann leicht durch einen Induktionsbeweis gezeigt werden. Die Parameter n 1 = 23 und n 2 = 120 führen zum Beispiel zu den folgenden rekursiven Aufrufen und entsprechenden Rückgabewerten. extended- gcd(23, 120) (1, 47, 9) q = 0 r = 23 extended- gcd(120, 23) (1, 9, 47) q = 5 r = 5 extended- gcd(23, 5) (1, 2, 9) q = 4 r = 3 extended- gcd(5, 3) (1, 1, 2) q = 1 r = 2 extended- gcd(3, 2) (1, 1, 1) q = 1 r = 1 extended- gcd(2, 1) (1, 0, 1) q = 2 r = 0 extended- gcd(1, 0) (1, 1, 0) Wir erhalten somit gcd(23, 120) = 1, x = 47 und y = 9. Wie leicht zu überprüfen ist, ist die geforderte Bedingung erfüllt: ( 9) = = 1. Die Zahl 47 ist somit das multiplikativ Inverse von 23 bezüglich 120, und somit gilt: = mod 120.

17 MODULARE ARITHMETIK 91 Da die rekursiven Aufrufe beim erweiterten Algorithmus von Euklid denjenigen einer gcd- Berechnung entsprechen, beträgt die Laufzeit-Komplexität ebenfalls O(log n 1 log n 2 ). Das gleiche gilt in der rekursiven Version für die Speicherplatz-Komplexität, da die rekursiven Aufrufe keine End-Rekursionen sind. Allerdings lässt sich der erweiterte Algorithmus von Euklid auch als iterative Version mit konstantem Speicherplatz schreiben. Diese ist oft in Lehrbüchern anzutreffen, ist insgesamt aber schwieriger zu verstehen. Ein weiteres wichtiges Element der modularen Arithmetik ist das modulare Potenzieren, d.h. das Berechnen der Zahl z = x y mod n. Für x = 2, y = 5 und n = 14 erhält man zum Beispiel 2 5 mod 14 = 4. Eigentlich lässt sich diese Operation auf y 1 modulare Multiplikationen zurückführen, was zu einer konstanten Laufzeit-Komplexität führt. Man muss jedoch beachten, dass die Multiplikationen bei grossen Zahlen n relativ schwerfällig sind. Wenn gleichzeitig der Exponent y eine grosse Zahl ist, dann kann dies zu einem enormen Rechenaufwand führen, der praktisch nicht durchführbar ist. Es gibt jedoch eine Möglichkeit, das modulare Potenzieren effizient, d.h. mit einer Laufzeit-Komplexität von O(log y) durchzuführen. Dieses Verfahren funktioniert auch beim nicht-modularen Potenzieren und beruht auf der Tatsache, dass x y im Falle eines geraden Exponenten y als x y = (x y/2 ) 2 geschrieben werden kann. Falls y ungerade ist, erhält man mit x y = x x y 1 wieder einen geraden Exponenten. Die Problemgrösse wird somit mindestens in jedem zweiten Schritt halbiert, was zu der oben erwähnten Laufzeit-Komplexität führt. Die rekursive Version des modularen Potenzierens sieht wie folgt aus: Function mod-exp(x, y, n); if y = 0 then return 1; else if y mod 2 = 0 then z mod-exp(x, y/2, n); return z 2 mod n; else z mod-exp(x, y 1, n); return x z mod n; end end Algorithmus 11.3 : Effizientes modulares Potenzieren. In ähnlicher Weise kann das modulare Quadrieren oder allgemein das modulare Multiplizieren auf das Verdoppeln bzw. Addieren von Zahlen reduziert werden. Beides lässt sich effizient implementieren, das Verdoppeln zum Beispiel in Form einer einfachen Bit- Verschiebung. Zusammenfassend können die folgenden zahlentheoretischen Grössen und Operationen effizient berechnet werden: Verdoppeln, Addieren, Quadrieren, Multiplizieren, Potenzieren, grösster gemeinsamer Teiler (und somit Teilerfremdheit), multiplikativ Inverses, Euler- Funktion (gilt nur für Produkte von Primzahlen). Dies ist das algorithmische Grundgerüst für die meisten asymmetrischen Verschlüsselungsverfahren.

18 92 ZAHLENTHEORIE 11.4 DIE SÄTZE VON FERMAT UND EULER Grundsätzlich gibt es zwei Möglichkeiten, das modulare Potenzieren umzukehren, je nachdem ob die Umkehrung bezüglich der Basis oder des Exponenten erfolgen soll. Man spricht dabei von der Modulo-Wurzel bzw. vom Modulo-Logarithmus. Beim modularen Wurzelziehen geht es also darum, die Gleichung z = x y mod n bei gegebenen Werten y und z nach x aufzulösen, d.h. die y-te Wurzel von z zu ziehen. Hierzu gibt es zwei relevante Sätze. Der erste ist der (kleine) Satz von Fermat aus dem 17. Jahrhundert: Satz 1 (Pierre de Fermat). Ist n eine Primzahl und x Z n = Z + n, dann gilt x n 1 mod n = 1. Am Beispiel der Primzahl n = 7 lässt sich der Satz von Fermat leicht überprüfen, denn es gilt mod 7. Eine Verallgemeinerung des (kleinen) Satzes von Fermat ist der Satz von Euler aus dem 18. Jahrhundert. Satz 2 (Leonhard Euler). Falls n eine beliebige natürliche Zahl ist, dann gilt für jede Zahl x Z n, die zu n teilerfremd ist, x φ(n) mod n = 1. Die Zahl n = 8 zum Beispiel besitzt im Bereich Z 8 vier teilerfremde Zahlen, nämlich 1, 3, 5 und 7. Dies wird durch Z n = {1, 3, 5, 7} oder φ(8) = 4 ausgedrückt, und somit gilt mod 8. Ein Folgesatz des Satzes von Euler besagt, dass für eine beliebige natürliche Zahl k das Folgende gilt: x k φ(n)+1 mod n = x. Mit Hilfe dieses Folgesatzes kann das Problem des modularen Wurzelziehens gelöst werden. Dies wird durch die folgenden einfachen Schritte verdeutlicht: x y z mod n (x y ) s z s mod n x s y z s mod n x z s mod n, falls s y = k φ(n) + 1 x z s mod n, falls s y mod φ(n) = 1 x z y 1 mod φ(n) mod n, falls gcd(y, φ(n)) = 1. Konkret heisst dies, dass zuerst φ(n) berechnet werden muss, um dann daraus das multiplikativ Inverse von y bezüglich φ(n) zu bestimmen. Am Schluss erhält man den gesuchten Wert für x, indem die entsprechende Modulo-Potenz von z bezüglich y 1 mod φ(n) berechnet wird. Man beachte, dass dies nur dann möglich ist, wenn erstens y kleiner als φ(n) ist und zweitens y und φ(n) teilerfremd sind, denn nur dann existiert das entsprechende multiplikativ Inverse. Wenn beispielsweise von den Zahlen n = 11, y = 7 und z = 5 ausgegangen wird, dann gilt es die siebte Modulo-Wurzel von 5 bezüglich 11 zu ziehen. Da 11 eine Primzahl ist, folgt φ(11) = 10. Damit sind die Bedingungen für das modulare Wurzelziehen gegeben, denn es gilt 7 < 10 und gcd(7, 10) = 1. Die Zahl 3 ist das entsprechende multiplikativ Inverse, was zu x = 5 3 mod 11 = 4 führt. Wie leicht nachzuprüfen ist, ist das die gesuchte Lösung.

19 DER DISKRETE LOGARITHMUS 93 Wenn n sehr gross ist, ist das Verfahren nur dann effizient durchführbar, wenn das Berechnen von φ(n) kein schwieriges Problem ist. Dies ist aber nur bei Primzahlen der Fall. Ist n = p q das Produkt zweier Primzahlen p und q, dann gilt zwar φ(p q) = (p 1)(q 1), was leicht zu berechnen ist, aber im allgemeinen kann man nicht davon ausgehen, dass die Faktoren p und q bekannt sind. Das Zerlegen einer solchen Zahl n in ihre Primfaktoren gilt selbst wieder als schwieriges Problem (unbewiesene Vermutung). Das modulare Potenzieren im Fall einer grossen Zahl n = p q und für bestimmte Exponenten y ist somit ein Kandidat für eine Einweg-Funktion f : Z n Z n mit Falltür (siehe Teil I, Abschnitt 3.2): f(x) = x y mod n, x Z n. Die Rolle der Falltür-Information spielen die beiden Primfaktoren p und q. Modulares Potenzieren ist einfach. Ohne die Kenntnis von p und q aber ist die Umkehrung (modulares Wurzelziehen) für die meisten x Z n schwierig. Sind jedoch p und q bekannt, wird das modulare Wurzelziehen ebenfalls einfach DER DISKRETE LOGARITHMUS Die zweite Möglichkeit, modulares Potenzieren umzukehren, besteht darin, bei gegebenen Zahlen x und z die Gleichung z = x y mod n nach y aufzulösen. Es geht also darum, den Modulo-logarithmus oder diskreten Logarithmus von z zur Basis x zu berechnen. Ist n eine sehr grosse Zahl, und wählt man eine geschickte Basis x, dann ist das Berechnen des diskreten Logarithmus nach heutigem Stand der Erkenntnisse ein schwieriges Problem. Auch dies ist eine unbewiesene These. Man weiss aber, dass der diskrete Logarithmus mindestens so schwierig ist wie die Primfaktor-Zerlegung. Beim diskreten Logarithmus schränkt man sich auf positive Zahlen ein, d.h. man betrachtet Funktionen f : Z + n Z + n mit f(y) = x y mod n, y Z + n. Bei bestimmten Werten x und n handelt es sich dabei um eine Kandidatin für eine Einwegfunktion ohne bekannte Falltür. Die Werte x und n müssen so gewählt werden, dass f eine Bijektion über Z + n wird. Dies ist immer dann der Fall, wenn n eine Primzahl ist, und x eine sogenannter Generator (primitive root) von n ist. Dies bedeutet, dass die Zahlen x, x 2 mod n, x 3 mod n,..., x n 1 mod n für alle Exponenten y Z + n unterschiedlich sein müssen. Es gibt einen Satz, der besagt, dass es für eine Primzahl n genau φ(n 1) Generatoren gibt. Bei n = 11 gibt es also φ(10) = 4 Generatoren. Dies wird in Tab ersichtlich, welche die Modulo-Potenzen für sämtliche Basen x Z + 11 und Exponenten y Z+ 11 zeigt. Die vier Generatoren 2, 6, 7 und 8 sind durch Pfeile markiert. Es gibt auch Generatoren, falls n keine Primzahl ist, allerdings nicht so viele und nicht immer. Falls ein Generator g existiert, dann ist die Menge G(n) aller Generatoren für n durch G(n) = {g k mod n : 1 k φ(n), gcd(k, φ(n)) = 1} = {g k mod n : k Z φ(n) }. bestimmt. Es genügt somit, einen Generator zu kennen, zum Beispiel den kleinsten. Alle anderen Generatoren können dann daraus abgeleitet werden. Die Gesamtzahl der Generatoren beträgt in einem solchen Fall φ(φ(n)).

20 94 ZAHLENTHEORIE y = 1 y = 2 y = 3 y = 4 y = 5 y = 6 y = 7 y = 8 y = 9 y = 10 x = x = x = x = x = x = x = x = x = x = Tabelle Die Modulo-Potenzen und Generatoren bezüglich Z 11. Tabelle zeigt die kleinsten Generatoren für n {2,..., 23}. Im Fall von n = 11 ist g min = 2 der kleinste der vier Generatoren. Da 11 eine Primzahl ist, und daher φ(11) = 10 gilt, sind die anderen drei Generatoren in der Menge {1,..., 10} zu suchen. Davon kommen diejenigen Zahlen in Frage, die teilerfremd zu 10 sind, d.h. k Z 10 = {1, 3, 7, 9}. Daraus folgt G(11) = {2 1 mod 11, 2 3 mod 11, 2 7 mod 11, 2 9 mod 11} = {2, 8, 7, 6}, was dem Resultat aus Tab entspricht. n g min Tabelle Die kleinsten Generatoren für n {2,..., 23}. Das Finden von (kleinsten) Generatoren für grosse Zahlen n ist ein schwieriges Problem. Allerdings existieren verschiedene probabilistische Algorithmen, mit deren Hilfe effizient Kandidaten bestimmt werden können, die mit einer beliebig genauen Wahrscheinlichkeit Generatoren von n sind. In der Praxis genügt es, ein bestimmtes geeignetes Paar (g, n) zu kennen, wobei n genügend gross und g ein Generator von n ist.

21 KAPITEL 12 DIE WICHTIGSTEN ASYMMETRISCHEN VERFAHREN Nach der Entdeckung des Diffie-Hellman-Merkle-Schlüsseltausches in den 1970er Jahren dauerte es nicht lange, bis weitere asymmetrische Verfahren gefunden wurden. Ende der 1970er Jahre kamen zuerst RSA und kurz darauf die Rabin-Verschlüsselung hinzu. Aus den frühen 1980er Jahren stammt das Verfahren von El Gamal. Diese vier sind noch heute die prominentesten asymmetrischen Verfahren. Sie beruhen allesamt auf der im vorherigen Kapitel beschriebenen Zahlentheorie und somit auf den (vermutlich) schwierigen Problemen der Primfaktor-Zerlegung und des diskreten Logarithmus. In der Zwischenzeit wurden weitere Verfahren entdeckt, die auf anderen schwierigen Problemen (z.t. ausserhalb der Zahlentheorie) beruhen und eine vergleichbar gute Sicherheit bieten. Dieses Kapitel gibt einen Überblick, wobei das Schwergewicht auf den vier zuerst genannten zahlentheoretischen Verfahren liegt DIFFIE-HELLMAN-MERKLE-SCHLÜSSELTAUSCH Der Diffie-Hellman-Merkle-Schlüsseltausch, wie der Name es sagt, kein eigentliches Verschlüsselungsverfahren, sondern dient lediglich dem Austauschen bzw. Vereinbaren eines geheimen Schlüssels. Dieser kann dann für ein symmetrisches Verfahren wie DES oder AES eingesetzt werden kann. Trotzdem spricht man von einem asymmetrischen Verfahren, denn bei einer Zweiparteien-Kommunikation müssen beide Seiten je einen privaten und öffentlichen Schlüssel besitzen, was für andere asymmetrische Verfahren charakteristisch ist. Einführung in diekryptographie. c by Prof. Rolf Haenni 95

22 96 DIE WICHTIGSTEN ASYMMETRISCHEN VERFAHREN Die Sicherheit des Diffie-Hellman-Merkle-Schlüsseltausches basiert auf der Schwierigkeit des diskreten Logarithmus. Genau genommen handelt es sich um ein Protokoll, das im Fall einer Kommunikation zwischen Alice und Bob aus den folgenden Schritten besteht: 1. Alice und Bob einigen sich über einen unsicheren Kanal auf eine Zahl n (oft eine Primzahl) und einen entsprechenden Generator g. 2. Alice bestimmt eine Zufallszahl a < n, berechnet x = g a mod n, und übermittelt x über einen unsicheren Kanal an Bob. 3. Bob bestimmt eine Zufallszahl b < n, berechnet y = g b mod n, und übermittelt y über einen unsicheren Kanal an Alice. 4. Alice berechnet den geheimen Schlüssel k = y a mod n. 5. Bob berechnet den geheimen Schlüssel k = x b mod n = g a b mod n. Es ist leicht zu zeigen, dass auf diese Alice und Bon den gleichen Schlüssel erhalten, denn Alice berechnet y a mod n = (g b mod n) a mod n = (g b ) a mod n = g a b mod n, was genau Bobs Berechnung x b mod n = (g a mod n) b mod n = (g a ) b mod n = g a b mod n entspricht. Ausgehend von n = 11, g = 2, a = 4 und b = 8 berechnet Alice zum Beispiel x = 2 4 mod 11 = 5 und Bob y = 2 8 mod 11 = 3. Dies sind die beiden auszutauschenen Zahlen, die dann auf der Seite von Alice zu k = 3 4 mod 11 = 4 und auf der Seite von Bob zu k = 5 8 mod 11 = 4 führen. In der Praxis ist es oft so, dass man sich auf ein globales Zahlenpaar (n, g) einigt, dass von allen Entitäten benutzt wird. Dann genügt es, dass eine Entität wie zum Beispiel Alice genau einmal eine Zufallszahl a bestimmt und daraus x = g a mod n berechnet. Die Zahl a dient dann als privater Schlüssel, der geheim gehalten werden muss, währendem x der entsprechende öffentliche Schlüssel ist. Ein möglicher Angriff auf dieses Protokoll wäre der Versuch, aus den beiden beteiligten öffentlichen Schlüssel x und y die privaten Schlüssel a und b zu bestimmen. Dies erfordert aber das Berechnen von diskreten Logarithmen, was für grosse Zahlen n ein schwieriges Problem ist. In der Praxis arbeitet man üblicherweise mit Dualzahlen der Länge 512, 1024 oder 2048 Bits. Nach dem heutigen Stand der Forschung gelten 1028 Bits als genügend sicher. Im Vergleich zu anderen asymmetrischen Verfahren besitzt der Diffie-Hellman-Merkle- Schlüsseltausch verschiedene Vor- und Nachteile. Ein grosser Vorteil ist die Einfachheit jedes einzelnen Schrittes des Protokolls. Nachteilig ist die Tatsache, dass wenn Alice an Bob eine Nachricht schicken will, nicht nur Alice den öffentlichen Schlüssel von Bob kennen muss, sondern auch Bob denjenigen von Alice. Dafür werden bei einer Übertragung drei der vier Sicherheitsziele erreicht, nämlich die Vertraulichkeit, die Authentizität des Senders, und die Integrität der Nachricht. Die Nicht-Abstreitbarkeit jedoch kann nicht erreicht werden, da keine eigentliche Private-Key-Verschlüsselung stattfindet. Am einfachsten versteht man den Zusammenhang zu den erreichten Sicherheitszielen, wenn der Diffie-Hellman-Merkle- Schlüsseltausch als vorbereitender Schritt einer symmetrischen Verschlüsselung verstanden wird.

23 RSA RSA RSA ist das älteste echte asymmetrische Verfahren und verdankt seinen Namen seinen Erfindern Ron Rivest, Adi Shamir und Leonard Adleman. Der nur kurz nach dem Diffie-Hellman- Merkle-Schlüsseltausch veröffentlichte Artikel erwies sich als die bis heute einflussreichste Publikation in der Geschichte der Kryptographie. RSA ist wie der Diffie-Hellman-Merkle- Schlüsseltausch sehr einfach zu verstehen und implementieren, basiert jedoch auf dem Problem des modularen Wurzelziehens und somit der Primfaktor-Zerlegung. Die Sicherheit von RSA ist somit so hoch, wie es schwierig ist, eine grosse Zahl in ihre Primfaktoren zu zerlegen. Bei einer RSA-Verschlüsselung wird eine Nachricht in Blöcke der Länge k Bits aufgeteilt, wobei effektiv mit k + 1 Bits gearbeitet wird. Der Grund dafür ist, dass man mit einem Zahlenbereich Z n betrachtet, der sämtliche 2 k Klartext-Blöcke umfassen muss. Die Zahl n wird somit so gewählt, dass 2 k n 2 k+1 gilt, und dadurch aus k + 1 Bits besteht. Demzufolge erweitert man auch sämtliche Blöcke der Länge k auf k + 1 Bits, indem eine 0 vorangestellt wird. Die möglichen Klar- und Chiffretext-Blöcke sind dann also Zahlen x Z n. Die beiden Schlüssel eines RSA-Schlüsselpaars (e, d) bestehen aus jeweils zwei Zahlen e = (ε, n) und d = (δ, n). Wie diese Zahlen ε, δ und n genau zu wählen sind, werden wir später sehen. Die Ver- und Entschlüsselung eines Klartext-Blockes m Z n ist dann wie folgt definiert: c = E e (m) = m ε mod n, m = D d (c) = c δ mod n. Bei RSA handelt es sich also im wesentlichen um das Problem des modularen Potenzierens, dass mit Hilfe des im vorherigen Kapitel vorgestellten Algorithmus effizient durchgeführt werden kann. Für n = 22, ε = 3, δ = 7 wird zum Beispiel die Nachricht m = 20 wie folgt ver- und entschlüsselt: c = 4 3 mod 22 = 64 mod 22 = 20, m = 20 7 mod 22 = mod 22 = 4. Die folgenden beiden Tabellen zeigen die Ver- und Entschlüsselungsfunktionen für sämtliche Werte x Z 22. m m 3 mod c c 7 mod Tabelle Ver- und Entschlüsselung bei n = 22, ε = 3, δ = 7. Was die Wahl der Werte ε, δ und n betrifft, so muss natürlich die Bedingung D d (E e (m)) = m berücksichtigt werden. Bei RSA führt dies zu: D d (E e (m)) = (m ε mod n) δ mod n = (m ε ) δ mod n = m εδ mod n = m.

24 98 DIE WICHTIGSTEN ASYMMETRISCHEN VERFAHREN Gemäss dem Satz von Euler müssen somit ε und δ multiplikativ Inverse bezüglich φ(n) sein. Damit dies möglich ist, müssen ε und δ teilerfremd zu φ(n) sein. Zudem muss φ(n) einfach zu berechnen sein. Dazu wählt man n = pq als Produkt zweier Primzahlen p und q, was bekannterweise zu φ(pq) = (p 1)(q 1) führt. Die RSA-Schlüsselgenerierung besteht somit aus den folgenden sechs Schritten: 1. Selektiere zwei grosse Primzahlen p und q. 2. Berechne n = pq. 3. Berechne φ(n) = (p 1)(q 1). 4. Bestimme eine Zufallszahl ε Z φ(n). Generiere hierfür wiederholt Zufallszahlen in Bereich Z φ(n), und überprüfe ob diese teilerfremd zu φ(n) sind. 5. Bestimme das multiplikativ Inverse δ = ε 1 mod φ(n). 6. Gib e = (ε, n) und d = (δ, n) zurück. Ausgehend von den Primzahlen p = 2 und q = 11 erhalten wir zum Beispiel n = 22 und φ(22) = 10. Im Bereich Z 10 gibt es genau vier verschiedene zu 10 teilerfremde Zahlen, nämlich 1, 3, 7, und 9. Fällt die Wahl zum Beispiel auf ɛ = 3, dann ist δ = 7 das entsprechende multiplikativ Inverse bezüglich 10. Somit erhalten wir e = (3, 22) und δ = (7, 22), was dem Beispiel weiter oben entspricht. Für die erfolgreiche Implementierung von RSA benötigt man also einen effizienten Primzahlen-Generator zur Bestimmung der Zahlen p und q, eine effiziente Multiplikation zur Bestimmung der Zahlen n = pq und φ(n) = (p 1)(q 1), den gcd-algorithmus von Euklid zur Bestimmung der Teilerfremdheit der Zahl ε bezüglich φ(n), den erweiterten Algorithmus von Euklid für das Berechnen des multiplikativ Inversen δ = ε 1 mod φ(n), und eine effiziente Methode für das modulare Potenzieren bei der Ver- und Entschlüsselung. Primzahlen-Generatoren bestimmen eine Zufallszahl der gewünschten Grösse, und testen ob diese eine Primzahl ist oder nicht. Dieser Vorgang wird solange wiederholt, bis eine Primzahl gefunden wird. Bei den Zahlen der erforderlichen Grösse ist etwa eine aus 350 Zahlen eine Primzahl. Primzahlen-Generatoren werden im folgenden Kapitel näher betrachtet. Der naheliegenste Angriff auf RSA besteht darin, aus dem öffentlichen Schlüssel e = (ε, n) den privaten Schlüssel d = (δ, n) herzuleiten. Dazu braucht der Angreifer die Zahl φ(n), um das multiplikativ Inverse von ɛ bezüglich φ(n) zu berechnen. Hierzu braucht er aber die Primfaktoren p und q, was für ein grosses n schwierig zu bestimmen ist. Mit heutigen Techniken können Zahlen mit ungefähr d = 150 Dezimalstellen oder k = 512 Bits in einigermassen vernünftiger Zeit faktorisiert werden. Die folgende Tabelle zeigt den Fortschritt der Forschung in diesem Bereich. d Jahr MIPS-Jahre Algorithmus Qudratic Sieve Qudratic Sieve Qudratic Sieve Qudratic Sieve General Number Field Sieve General Number Field Sieve Tabelle Fortschritt bei der Primfaktor-Zerlegung.