G. Berendt: Pferdekauf im Internet / September 2002 Pferdekauf im Internet. G. Berendt, FU Berlin, FB Mathematik und Informatik (e-mail: [email protected]) Wenn ich vor einigen hundert Jahren gelebt und das Bedürfnis gespürt hätte, ein neues Pferd zu erwerben, dann wäre ich am Wochenende auf den hiesigen Pferdemarkt gegangen, hätte mir den am wenigsten schlitzohrig aussehenden Händler gegriffen, nach einigen Bemerkungen über das Wetter und die hohe Politik nach gemessener Zeit dem angepriesenen Roß in das Maul gegriffen und wäre mit Handschlag und Talern auf die Tatze schließlich handelseinig mit ihm geworden. Heute sieht das etwas anders aus: Zunächst würde ich via Internet – nach Ansehen des Prospektes – bei der Firma gaul.für.dich.com ein Pferd mit definierten Eigenschaften bestellen. Vorausgesetzt die Firma ist seriös, würde nach einigen Tagen der Postbote mit dem Pferdelaster vorfahren und mir das bestellte Stück gegen Empfangsbescheinigung (und Trinkgeld) in den Garten stellen. Wenn mir das gute Tier nicht zusagt, könnte ich es innerhalb von 14 Tagen – natürlich originalverpackt – zurückgeben; andernfalls würde ich einige Zeit später auf meinem Kontoauszug ein beträchtliches Minus – den Kaufpreis – registrieren. Weder im einen noch im anderen Fall bekäme ich meinen Vertragspartner dabei je zu Gesicht (und, wenn ich Glück habe, finde ich in meiner e-mail in den nächsten Monaten nicht Hunderte von Angeboten über Pferdefutter und Pferdepflege-Hardware). Kurz gesagt, die Tatsache, dass unsere Gesellschaft unvermeidlich zu einer Kommunikationsgesellschaft gerinnt, entpersönlicht Kommunikation in immer stärkerer Weise: Sie wird über Computernetze betrieben, die dem Benutzer immer weniger durchsichtig sind, und der eigentliche Kommunikationspartner wird dabei immer weniger erkennbar oder gar ansprechbar. Es wäre naiv anzunehmen, dass uns dieser Trend zu besseren Menschen macht oder das Vertrauen in die kommunikativen Beziehungen untereinander stärkt. Das Gegenteil ist der Fall: Die modernen Kommunikationsmethoden, sind sie denn einmal etabliert, verlangen in 1 G. Berendt: Pferdekauf im Internet / September 2002 bisher unbekanntem Umfang die gleichzeitige Einrichtung von Sicherungsmechanismen unterschiedlichster Art: Im Internet tummeln sich nicht nur seriöse Händler, sondern eine Unmenge von Schlitzohren und Gaunern, die es nur auf das gute Geld ihrer Mitmenschen angelegt haben. Betrachten wir dazu das Beispiel meines Pferdekaufs genauer: Um sich von meiner Seriosität zu überzeugen, erwartet gaul.für.dich.com bei meiner Bestellung von mir z.B. die Nummer meiner Kreditkarte – eine Information, die ich natürlich in keiner Weise öffentlich machen will. Meine gesamte Bestellung geht mithin verschlüsselt über das Netz. In der Regel besteht der Lieferant zudem auf einer – elektronischen – Signatur meiner Bestellung und ggf. will er auch noch Gewissheit darüber erhalten, dass die Bestellung unverfälscht bei ihm eintrifft. Ist er hanseatisch geprägt oder nur einfach vorsichtig, dann will er sich schließlich dessen versichern, dass ich nicht zu einem späteren Zeitpunkt behaupten kann, ich hätte – da ich allergisch gegen Pferde sei – überhaupt niemals ein Pferd bei ihm bestellt. Alle diese Sicherungen – die von dem Grundprinzip ausgehen, dass "gesichtslose" Kommunikationspartner einander zunächst einmal zutiefst misstrauen – bedürfen zu ihrem Funktionieren aufwendiger Überlegungen. Das adäquate Mittel hierzu sind kryptographische Protokolle. Was sind Protokolle ? Protokolle sind interaktive Abfolgen von Schritten, an denen mindestens zwei Teilnehmer mitwirken und die zu einem definierten Ergebnis führen sollen. Protokolle müssen gewisse Charakteristika erfüllen: (P1) Jeder am Protokoll Beteiligte muß das Protokoll als Ganzes und alle einer Stelle des Protokolls folgenden Schritte im voraus kennen. (P2) Jeder am Protokoll Beteiligte muß damit einverstanden sein, entsprechend dem Protokoll vorzugehen. (P3) Das Protokoll muß eindeutig sein; jeder Schritt muß wohldefiniert sein, und es darf keine Chance eines Mißverstehens existieren. (P4) Das Protokoll muß vollständig sein; für jede mögliche vorkommende Situation muß das Protokoll eine spezifizierte Handlungsanweisung enthalten. 2 G. Berendt: Pferdekauf im Internet / September 2002 Was sind kryptograhische Protokolle ? Ein kryptographisches Protokoll ist ein Protokoll, das kryptographische Elemente enthält. Um passive oder aktive Attacken auf die mit dem Protokoll vermittelten Informationen zu verhindern, muß ein kryptographisches Protokoll daher zusätzlich die Eigenschaft besitzen: (P5) Es sollte unmöglich sein, mehr zu tun oder zu erfahren, als das, was im Protokoll spezifiziert und mitgeteilt wird. Ein Beispiel für ein Protokoll ist etwa die Übermittlung einer Nachricht: (1) A und B einigen Verschlüsselungsmechanismus. sich auf einen (2) A und B einigen sich über einen Schlüssel. (3) A chiffriert eine Nachricht mit dem gemeinsamen Schlüssel entsprechend dem Algorithmus des vereinbarten Verschlüsselungsmechanismus. (4) A sendet die chiffrierte Nachricht an B. (5) B dechiffriert die Nachricht mit dem gleichen Schlüssel und dem inversen Algorithmus und liest sie. Dieses Protokoll ist nicht von vornherein kryptographisch, da ohne zusätzliche Angaben nicht zu erkennen ist, ob die Forderung (P5) erfüllt ist oder nicht. Betrachten wir nun etwa die folgende konkrete Situation: A möchte B eine codierte Nachricht zustellen, die aus Elementen (Zeichen oder Zeichenblöcken) eines Alphabets besteht, auf das sich beide Teilnehmer geeinigt haben (beispielsweise aus den Großbuchstaben A bis Z). Jedes Element der Nachricht soll durch dasjenige ersetzt werden, das um eine bestimmte Zahl modulo der Alphabetlänge verschoben ist; Schlüssel ist also für jedes Element eine natürliche Zahl modulo der Länge des Alphabets. 3 G. Berendt: Pferdekauf im Internet / September 2002 Die folgende Serie von Schritten, mit denen sich die Korrespondenzpartner A und B (etwa über das Telefon) auf eine solche gemeinsame natürliche Zahl als "Schlüssel" einigen können, definiert ein konkretes Protokoll: P 1: 1. Die Korrespondenzpartner A und B teilen sich gegenseitig (öffentlich) eine ganze positive "Basis" b mit. 2. Beide Partner wählen je eine positive ganze Zahl x bzw. y, die sie geheim halten. 3. A berechnet u = bx und sendet u (öffentlich) an B; B berechnet v = by und sendet v (öffentlich) an A. 4. A berechnet p = vx; B berechnet q = u y . 5. Die Zahl p = q = bx y wird als Schlüssel gewählt. Dieses Protokoll ist jedoch noch kein kryptographisches Protokoll; denn wenn auch die Zahl p = q von keinem der Partner öffentlich bekannt gegeben wurde, ist es für einen unbefugten Mithörer ohne große Mühe möglich, sie zu ermitteln, wenn er nur über die Information verfügt, dass die (ihm bekannte, da öffentlich ausgetauschte) Zahl b eine "Basis" ist: x ist gleich log b u , y ist gleich log b v, und damit ist p = q direkt berechenbar, da zur Berechnung eines Logarithmus einer reellen Zahl sehr schnelle Rechenverfahren existieren. Mit Hilfe des so ermittelten Schlüssels kann der Mithörer mithin (bei Kenntnis des Verschlüsselungs– Algorithmus) die codierte Nachricht ohne Mühe decodieren. Das vorliegende Protokoll kann jedoch durch einen einfachen Trick zu einem kryptographischen Protokoll gemacht werden. Dazu untersuchen wir den im Protokoll verwandten Verschlüsselungs–Algorithmus: In den Schritten 3. und 4. wurden ganze Zahlen potenziert; der Mithörer musste den Umkehralgorithmus, das Logarithmieren, anwenden. Beide Verfahren erfordern in der Menge der reellen Zahlen vergleichbaren und zumutbaren Aufwand. Betrachten wir das gleiche Protokoll jedoch nicht in R , sondern in der Menge Z / n der Restklasse der ganzen Zahlen modulo n mit n als einer positiven ganzen Zahl, dann ändert sich für genügend großes n die Situation signifikant: Während die Potenzierung modulo n sehr einfach zu bewerkstelligen ist, erweist es sich als nahezu hoffnungslos, den "diskreten 4 G. Berendt: Pferdekauf im Internet / September 2002 Logarithmus" in einer solchen Restklasse zu bestimmen. Wir modifizieren das Protokoll daher wie folgt: P 2 (Diffie-Hellmann): 1. Die Korrespondenzpartner A und B teilen sich (öffentlich) gegenseitig einen Primzahl-Modul n und eine Basis b<n mit. 2. Beide Partner wählen je eine Zahl x < n bzw. y < n aus, die sie geheim halten. 3. A berechnet u = bx mod n und sendet u (öffentlich) an B; B berechnet v = by mod n und sendet v (öffentlich) an A. 4. A berechnet p = vx mod n; B berechnet q = u y mod n. 5. Die Zahl p = q = bx y mod n wird als Schlüssel gewählt. (Dass n als Primzahl gewählt wird, ist an dieser Stelle erforderlich, damit Produkte von Null verschiedener Zahlen in der Restklasse nicht den Wert Null ergeben können: Durch diese Wahl ist sicher gestellt, dass der Restklassenring modulo n auch ein Körper ist.) Zahlenbeispiel: b = 7; n = 23 . Diese Zahlen werden (öffentlich) ausgetauscht. A wählt x = 13; B wählt y = 5. Diese Zahlen werden geheim gehalten. A berechnet u = 713 mod 23 = 20; B berechnet v = 75 mod 23 = 17. u = 20 und v = 17 werden (öffentlich) ausgetauscht. A berechnet den Schlüssel p = v x = 17 13 mod 23 = 10 ; B berechnet den Schlüssel q = u y = 20 5 mod 23 = 10 . Die modularen Funktionen f (n ) = 7 n mod 23 und f –1(n) = log 7 n mod 23 sind im folgenden graphisch dargestellt. Die bereits für einen so kleinen Modul leicht chaotisch aussehende Verteilung der Funktionswerte lässt plausibel erscheinen, dass für die Berechnung des "diskreten Logarithmus" bei "großen" Modulen bislang kein genügend schneller Algorithmus gefunden wurde (vgl. u.). 5 G. Berendt: Pferdekauf im Internet / September 2002 Werte für 7 n mod 23 25 20 15 10 5 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 Werte für Log7 n mod 23 25 20 15 10 5 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 6 G. Berendt: Pferdekauf im Internet / September 2002 Abschätzungen zum Rechenaufwand. Der Rechenaufwand zum modularen Exponentiieren ( b n mod m mit 0 < b, n < m ) ist B = O ( (log n ) (log 2 m ) , der Aufwand der besten derzeit bekannten Algorithmen für die Bestimmung des diskreten Logarithmus modulo m ist A = O ( exp(sqrt(log n * log log n))) . In der folgenden Tabelle sind einige Werte für A und B angegeben. In der ersten Spalte ist die Länge des Alphabets in Byte, in der zweiten und dritten Spalte sind die Werte der zugehörigen Abschätzungen für A und B notiert. Geht man beispielsweise davon aus, dass der für die vorkommenden Operationen verwendete Rechner 10 9 Operationen pro sec verarbeitet, dann wird für ca. 3 * 10 16 Operationen ein Jahr benötigt. Man erkennt, dass für Alphabetlängen von mehr als 32 Bytes (für ein ASCII-Alphabet also Textblöcke von mehr als 32 Zeichen) der Schlüsselaustausch noch immer problemlos in Sekundenbruchteilen verläuft, während die Berechnung des diskreten Logarithmus weitaus mehr als ein Lebensalter erfordert. Der Falltür-Charakter der Potenzierung vs. der Berechnung des diskreten Logarithmus macht sich ab Blocklänge von LA = 8 Bytes deutlich bemerkbar. einer 7 G. Berendt: Pferdekauf im Internet / September 2002 LA A B 2 2980.957987 4096 4 3.114863016·105 3.2768·104 6 1.29045921·107 1.10592·105 8 3.238911116·108 2.62144·105 12 8.305099203·1010 8.84736·105 16 9.996529454·1012 2.097152·10 6 24 3.744563834·1016 7.077888·10 6 32 4.507385298·1019 1.6777216·107 48 8.621045299·10 24 5.6623104·10 7 64 3.026126131·10 29 1.34217728·10 8 8.861589288·10 43 1.073741824·10 9 ..... ..... ..... 128 8