3 Asymmetrische Algorithmen

3.1 RSA
3.2 Diffie-Hellmann Schlüsselaustausch
3.3 Elliptische Kurven (EC)

3.1 RSA

Beim RSA-Algorithmus handelt es sich um das bekannteste asymmetrische Kryptoverfahren, benannt nach seinen Erfindern RIVEST-SHAMIR-ADLEMAN [56, 1].20 Die mathematische Grundlage bilden Restklassenkörper, verbunden mit der Schwierigkeit große Zahlen zu faktorisieren.

3.1.1 Schlüsselgenerierung

Betrachten wir in der Voraussetzung zuerst die Schlüsselerzeugung, welche im Wesen folgendermaßen abläuft:21

  1. Wähle zwei große Primzahlen 𝑝,𝑞 > 2, mit 𝑝 𝑞, welche das öffentliche Modul 𝑛 = 𝑝𝑞 bestimmen.

    Zahlentheoretische Erläuterungen:

  2. Nun wird eine Zufallszahl 1 < 𝑒 < 𝜑 erzeugt, die keinen gemeinsamen Faktor mit 𝜑 hat. Diese (auch als öffentlicher Exponent bezeichnete) Zahl bildet die Basis des öffentlichen Schlüssels (𝑛,𝑒).

    Zahlentheoretische Erläuterungen:

  3. Für den privaten Schlüssel (𝑛,𝑑) wird jetzt eine weitere Zahl 𝑑 so berechnet,23 daß 𝑑𝑒1 ohne Rest durch 𝜑 teilbar ist.

    Zahlentheoretische Erläuterungen:

3.1.2 Algorithmus

Für die Verschlüsselung wird folgende Operation auf dem Plaintext-Block 𝑚 ausgeführt, wobei dieser als Zahl 𝑚 Z𝑛 interpretiert wird:

pict

Die inverse Operation der Entschlüsselung wird in gleicher Art und Weise vorgenommen:

pict

Für den Beweis 𝑚= 𝑚 wendet man zuerst Gleichung 6 an und bezieht dann die Restklassendarstellung 𝑑𝑒 = 1 +𝑘𝜑 (𝑘 N) ein.

pict

Die weitere Argumentation beruht darauf, daß 𝑚𝜑 mod 𝑛 = 1 gilt und so:

pict

Besitzen 𝑚 und 𝑛 keinen gemeinsamen Teiler (gcd(𝑚,𝑛) = 1, 𝑚 Z𝑛), dann kann man auf 𝑚𝜑 mod 𝑛 einfach EULER’s Satz (nach Formel ??) anwenden und ist fertig.

Hat 𝑚 allerdings gemeinsame Teiler mit 𝑛, dann gilt gcd(𝑚,𝑛) 1 und deshalb 𝑚 Z𝑛. Betrachtet man aber die Faktorisierung von 𝑛, dann muß 𝑚 ein Vielfaches von 𝑝 oder 𝑞 sein (wegen 𝑚 < 𝑛 jedoch nicht von 𝑝𝑞). Unter dieser Voraussetzung wäre die Zerlegung 𝑚 = 𝑚𝑝 oder 𝑚 = 𝑚𝑞 möglich, wobei jeweils gcd(𝑚,𝑛) = 1 gilt. Im Fall 𝑚 = 𝑚𝑝 (für 𝑚 = 𝑚𝑞 ganz genauso) läßt sich die Modulo-Division 𝑚𝜑 mod 𝑛 durch Kürzen von 𝑝 und unter Berücksichtigung von 𝑚 < 𝑞 folgendermaßen vereinfachen:

pict

Wegen 𝑚 Z𝑞 kann nun wieder der Satz von EULER zur Anwendung kommen, was den Beweis vervollständigt.

3.1.3 Optimierung

Eine Beschleunigung des Verfahrens läßt sich (algorithmisch) vor allem beim Entschlüsseln erzielen.24 Geht man dazu von

pict

aus, dann lassen sich (durch Modulo-Division nach 𝑝 und 𝑞) die folgenden zwei Kongruenzen formulieren:

pict

Diese legen eine Anwendung des Chinesischen Restsatzes entsprechend Anhang ?? nahe [20, 62].25

pict

Als Voraussetzung benötigt man die Koeffizienten 𝛼 und 𝛽 in der ZOUT-Darstellung des größten gemeinsamen Teilers (vgl. Formel ?? in Anhang ??)

gcd(𝑝,𝑞)= 𝛼 𝑝+ 𝛽𝑞 = 1,

welche z. B. mit Hilfe des erweiterten euklidischen Algorithmus berechnet werden können.26 Sie stellen, wenn man vorangegangene Gleichung nach 𝑝 und 𝑞 modulo-dividiert, gleichzeitig die Inversen

pict

im Körper Z𝑞 und Z𝑝 dar. Durch Anwendung des Chinesischen Restsatzes für zwei Kongruenzen kann man nun 𝑚berechnen:

𝑚′ = (𝛼𝑚𝑞𝑝 + 𝛽𝑚𝑝 𝑞)mod 𝑛 .
(8)

Der Vorteil liegt darin, daß die modulare Exponentiation modulo 𝑛, welche die Komplexität O(log 3𝑛) hat,27 auf zwei Operationen gleicher Art, aber mit verringerter Anzahl von Stellen verteilt.

Die weitere Optimierung kann in drei Schritten erfolgen:

  1. Wendet man den Chinesischen Restsatz in der Variante nach H. L. GARNER an, so werden weitere Vereinfachungen möglich [19]. Denn aus der Restklassendarstellung

    pict

    läßt sich eine lineare diophantische Gleichung ableiten (siehe auch Anhang ??):

    pict

    welche die Lösungsmenge

    pict

    besitzt. Üblicherweise benutzt man zur Berechnung von 𝑚die Lösungen für 𝑥𝑘 und erhält in geschlossener Darstellung:28

    pict

    Unter der Voraussetzung 𝑚= 𝑚mod 𝑛 kann man vorangegangene Gleichung noch weiter reduzieren, wenn die allgemeingültige Beziehung (𝑟𝑞) mod (𝑝𝑞) = 𝑞(𝑟 mod 𝑝) berücksichtigt wird.

    pict

    Die Vorteile dieser Darstellung liegen vor allem darin, daß

  2. Man kann aber noch weitergehen, indem die Berechnung von 𝑚𝑝 und 𝑚𝑞 vereinfacht wird. Eine wesentliche Zeitersparnis kommt zustande, wenn man 𝑐 vor dessen Potenzierung in der Länge reduziert.

    pict
  3. Eine letzte Optimierung bezieht sich auf den Exponenten 𝑑, welcher ebenfalls reduziert werden kann. Dazu muß man sich nur klarmachen, daß durch die Reduktion von 𝑐 in Punkt 2 das Ergebnis der Potenzierung jeweils in Z𝑝 oder Z𝑞 und insbesondere in der zugehörigen multiplikativen Gruppe liegt. Da diese zyklisch ist, wiederholen sich beim Potenzieren die Werte mit der Gruppenordnung |Z𝑝| = 𝑝1 bzw. |Z𝑞| = 𝑞1. Aus diesem Grund kann man 𝑑 auf die Gruppenordnung reduzieren (vgl. auch Anhang ??).

    pict

Zu der privaten Schlüsseldarstellung (𝑛,𝑑) gibt es deshalb zwei Optionen:

Wegen der signifikanten Geschwindigkeitsvorteile wird fast immer die Quintupel-Variante verwendet [23, 28, 58].29

3.1.4 Verschlüsselung nach PKCS #1

Um den RSA-Algorithmus praktisch auf die Verschlüsselung von Daten anzuwenden, müssen diese zuerst geeignet aufbereitet werden. Der Prozeß dieser Formatierung wird in [23, 58] als Message Encoding Operation bezeichnet, in [59] hingegen als Encryption Block Formatting.

PKCS #1 v1.5 Mit der Methode nach [59, 35] gestaltet sich die Formatierung noch relativ einfach.30 Der Datenblock D wird entsprechend Abbildung 15 in die Struktur des sogenannten Encryption Block EB eingebunden. Auf den Encryption Block EB wird letztlich der RSA-Algorithmus nach Formel 6 angewendet.31

PIC

Abbildung 15: Blockformatierung nach PKCS #1 v1.5

Die weiteren Elemente im Encryption Block haben folgende Bedeutung:

BT

Der Block Type zeigt die Verwendung des privaten oder öffentlichen Schlüssels (im anschließenden RSA-Algorithmus) an.

00H
Signieren (Verwendung des privaten Schlüssels);
01H
genauso wie 00H (der Unterschied liegt im Element PS);
02H
Verschlüsseln (Verwendung des öffentlichen Schlüssels).

PS

Ein Padding String dient der Anpassung an die Länge des Moduls 𝑘 = ∥𝑛∥ so, daß ∥PS∥+∥𝐷∥+3 = 𝑘 gewährleistet ist. Die Länge von PS soll mindestens 8 Byte sein, was im Umkehrschluß die von D auf 𝑘11 Bytes beschränkt. Das Padding selbst hängt vom Typ des Blocks (BT) ab:

00H
alle Bytes sind 00H;
01H
alle Bytes sind FFH;
02H
alle Bytes sind zufällig, aber ungleich 00H.

Der Inhalt von PS ist beim Entschlüsseln (Byte für Byte) auf konforme Kodierung zu prüfen [59, S. 9.4]. Für die Blocktypen 01H und 02H kann der Anfang (und damit auch die Länge) des Datenblocks D ermittelt werden, indem das 00H-Byte zwischen PS und D gesucht wird. Für den Blocktyp 00H ist dieses Verfahren nur geeignet, wenn das erste Byte in D immer ungleich 00H ist. Kann dies nicht vorausgesetzt werden, dann muß die Länge ∥D∥ a priori bekannt sein.32

PKCS #1 v2.1 Nicht zuletzt wegen des sehr erfolgreiche Angriffs nach [11] wird die PKCS #1 v1.5 Formatierung heute nicht mehr empfohlen. Statt dessen sollte grundsätzlich Version 2.1 nach [58, 34, 23, 28] zum Einsatz kommen, welche Optimal Asymmetric Encryption Padding (OAEP) verwendet [9].33

Den Kern der Blockformatierung nach Abbildung 16 macht eine sogenannte Mask Generation Function (MGF, in Abbildung 16 mit F bezeichnet) aus, welche selbst wiederum eine Hash-Funktion H verwendet. Die MGF kann dasselbe leisten wie die Hash-Funktion, nämlich eine große Eingangsmenge auf eine kleine Ausgangsmenge abbilden (mit ∥H ∥ soll im folgenden die Breite eines Hash-Wertes bezeichnet sein). Sie kann aber auch das Umgekehrte – eine kleine Eingangsmenge auf eine größere Ausgangsmenge „zerstreuen”. PKCS #1 v2.1 legt sich zwar in der Hash-Funktion nicht fest, definiert aber in [58, B.2.1] eine konkrete Mask Generation Function, genannt MGF1.34

PIC

Abbildung 16: Blockformatierung nach PKCS #1 v2.1

Die einzelnen Kodierungsschritte können folgendermaßen beschrieben werden:

  1. Ergänze die Nachricht M zuerst (und grundsätzlich) durch ein vorangestelltes Byte mit Wert 01H.
  2. Füge weitere 00H-Byte’s hinzu (Padding), so daß ein Datenblock DB der Länge 𝑘∥H∥1 entsteht.35
  3. Bilde den Hash über ein vereinbartes, konstantes Label 𝐿 und stelle das Ergebnis als lHash = H(𝐿) an den Anfang des Datenblocks.36
  4. Erzeuge einen Zufallsstrom Seed der Länge ∥H∥.
  5. Berechne maskedDB = DB MGF(Seed) als Teil der Encoded Message (EM).
  6. Berechne maskedSeed = Seed MGF(maskedDB), als höherwertigen Teil von EM.
  7. Stelle ein führendes 00H-Byte an den Anfang von EM (gewährleistet auch hier wieder EM < 𝑛).

Im Gegensatz zu PKCS #1 v1.5 geht in die RSA-Verschlüsselung 𝑐 = EM𝑒 mod 𝑛 hier nun ein Wert EM ein, der keinerlei Rückschlüsse auf den Datenblock DB zuläßt.37

3.2 Diffie-Hellmann Schlüsselaustausch

Das Verfahren von DIffiE und HELLMANN [15] nutzt das Problem des diskreten Logarithmus’38 um einen Schlüsselaustausch zu realisieren [23, 30, 7, 54, 48, 13, 53]. Voraussetzung dafür ist eine große Primzahl 𝑝 (öffentliches Modul) und ein Generator 𝑔 mit 0 < 𝑔 < 𝑝, welche beiden Kommunikationspartnern bekannt sind. Der Austausch der Session Keys erfolgt folgendermaßen:

  1. Zuerst erzeugt der Initiator des Protokolls ein (geheimes) Element 𝑎 mit 0 < 𝑎 < 𝑝 1 und berechnet damit seine öffentlichen Schlüssel 𝐴 = 𝑔𝑎 mod 𝑝.
  2. Dieser Schlüssel 𝐴 wird im Klartext zum Empfänger (Responder) übertragen.39
  3. Der Empfänger erzeugt ebenfalls eine Zufallszahl 𝑏 und berechnet 𝐵 = 𝑔𝑏 mod 𝑝.
  4. Anschließend überträgt er 𝐵 = 𝑔𝑏 mod 𝑝 als (unverschlüsselte) Antwort zum Initiator.
  5. Beide Partner berechnen dann mit Hilfe von 𝐴 bzw. 𝐵 den Sitzungsschlüssel 𝑔𝑎𝑏 mod 𝑝.

3.3 Elliptische Kurven (EC)

3.3.1 Elliptische Kurven über reellen Zahlen R

Elliptische Kurven E(R) werden in der Normalform nach WEIERSTRASS durch Gleichungen der Form

𝑦2 = 𝑥3 + 𝑎 𝑥 + 𝑏, mit 𝑥,𝑦,𝑎,𝑏 ∈ R
(10)

beschrieben. Wegen der (nur) zwei freien Parameter 𝑎 und 𝑏 ist jede elliptische Kurve durch zwei Punkte 𝑃1,𝑃2 eindeutig definiert. Insofern ist jeder weitere Punkt durch die Kenntnis von 𝑃1 und 𝑃2 festgelegt.

pict

Für 𝑎 ergibt die Differenz beider Gleichungen

pict

was dann zur Berechnung von 𝑏 verwendet werden kann.

pict

PIC

Abbildung 17: Prinzip der Elliptische Kurve

Zieht man entsprechend Abbildung 17) durch 𝑃1 und 𝑃2 eine Gerade, so berechnet sich ein dritter (Schnitt-) Punkt 𝑃3= (𝑥3,𝑦3′) nach der Geradengleichung:

pict

mit dem Anstieg:

    𝑦2 −-𝑦1  𝑦′3 −-𝑦1  𝑦′3 −-𝑦2
𝜆 = 𝑥2 − 𝑥1 = 𝑥3 − 𝑥1 = 𝑥3 − 𝑥2 .
(11)

Den Schnittpunkt 𝑃3mit der elliptischen Kurve

pict

findet man (unter Zuhilfenahme von 𝛼3 𝛽3 = (𝛼 𝛽)(𝛼2 +𝛼𝛽 +𝛽2)) durch Gleichsetzen:

pict

Aus der Geradengleichung ist nun 𝑦3berechenbar:

pict

und so für den Kurvenpunkt 𝑃3 = (𝑥3,𝑦3) = (𝑥3,𝑦3′):

       2
𝑃3 = (𝜆  − 𝑥2 − 𝑥1,𝜆[𝑥1 − 𝑥3]+ 𝑦1).
(14)

3.3.2 Elliptische Kurven über endlichen Körpern F𝑞

Der kryptographische Anwendungsfall sind elliptische Kurven über endlichen (Restklassen-) Körpern F𝑞, welche selbst entweder Primzahlenkörper F𝑝 oder auch Binärkörper F2𝑚 sind [22, 57, 52, 13].40 Dafür definiert man die Addition zweier Punkte 𝑃1,𝑃2 zu 𝑃3 = 𝑃1 +𝑃2 so, daß 𝑃3 (wie in Abbildung  17 dargestellt) wieder auf der elliptischen Kurve liegt. Die Menge aller dieser Punkte 𝑃3 soll eine ABELsche Gruppe (𝐺,+) bilden, d. h. es müssen folgende Bedingungen erfüllt sein:

  1. Die Addition von 𝑃1,𝑃2 𝐺 führt zu 𝑃3 𝐺. Für die Kurve E(F𝑝) ergeben sich folgende Formeln:41

    1. Punktaddition:

                         ′      2
𝑃3 = (𝑥3,𝑦3)= (𝑥3,−𝑦3)=  (𝜆  − 𝑥2 − 𝑥1,𝜆[𝑥1 − 𝑥3]− 𝑦1)
      (15)

    2. Punktverdoppelung:

      Für 𝑃1 = 𝑃2 = 𝑃 = (𝑥,𝑦) wird die Tangente angelegt (denn 𝜆 kann nicht nach Formel 11 berechnet werden), d. h. der Anstieg 𝜆 entspricht der ersten Ableitung im Punkt 𝑃.

      pict

      Mit 𝑥 = 𝑥1 = 𝑥2 ergibt sich aus Additionsformel 15 direkt das Ergebnis:

      𝑃  = (𝑥 ,𝑦 )=  (𝜆2 − 2𝑥,𝜆[𝑥 − 𝑥 ]− 𝑦).
  3    3  3                 3
      (16)

    3. Im Fall 𝑥1 = 𝑥2 und 𝑦2 = 𝑦1 wird 𝑃3 = (0,0) definiert.
  2. Die Addition sei assoziativ: 𝑃1 +(𝑃2 +𝑃3) = (𝑃1 +𝑃2) +𝑃3 für 𝑃1,𝑃2,𝑃3 𝐺.
  3. Es gibt das neutrale Element 𝑂 𝐺 mit 𝑃+𝑂 = 𝑂+𝑃 = 𝑃 für 𝑃 𝐺 . Nimmt man an, daß 𝑂 = (𝑥1,𝑦1) ist, dann muß die Forderung 𝑃3 = 𝑃2 gestellt werden, um (𝑥1,𝑦1) zu ermitteln. Dazu verwendet man 𝑥3 = 𝜆2 𝑥2 𝑥1 mit 𝜆 → ∞, was zu 𝑥1 = lim 𝜆→∞𝜆2 2𝑥2 = und 𝑦1 = lim 𝜆,𝑥1→∞𝜆(𝑥1 𝑥2)−𝑦2 = führt. Das neutrale Element ist somit 𝑂 = (∞,∞), was auch geometrisch einleuchtet.
  4. Zu jedem beliebigen Element 𝑃 𝐺 findet man 𝑃 𝐺, so daß wieder (−𝑃)+𝑃 = 𝑂 gilt. Als Folge der Betrachtungen zum neutralen Element (siehe voriger Punkt) ergibt sich: 𝑃 = (𝑥,𝑦)

Elliptische Kurven über F2𝑚 verwenden die Form 𝑦2 + 𝑥𝑦 = 𝑥3 + 𝑎𝑥2 + 𝑏, funktionieren aber grundsätzlich nach demselben Prinzip. Ohne weiteren Beweis sei hier angegeben (vgl. zum Beispiel [22, S. 3.1.2], zu den Algorithmen siehe auch [21, 12, 17, 4]):

Zur Verifikation eines Kurvenpunktes substituiert man 𝑧 = 𝑦/𝑥 und erhält eine quadratische Gleichung in F2𝑚 .42

pict

Die beiden Lösungen sind wegen 𝑧2 +𝑧 = 𝑧(𝑧+1) dann 𝑧 und 𝑧+1, unterscheiden sich also nur im niederwertigsten Bit [23, A.12.9].

Für die kryptographische Anwendung, insbesondere für Verfahren, die auf dem diskreten Algorithmus basieren, wird zuerst die Gruppenpotenz definiert zu 𝑦 = 𝑥𝑛 = 𝑥 𝑥 𝑥···𝑥 𝑥. Das diskrete Logarithmus Problem besteht nun bekanntermaßen darin die Zahl 𝑛 zu finden, was bei einer Gruppenaddition per elliptischer Kurve ziemlich schwierig ist. Eines der bekanntesten Beispiele ist die Umsetzung des Diffie-Hellman Schlüsselaustausches (vgl. Abschnitt 3.2) auf elliptische Kurven [6, 57]. Aber auch Signatur- und Public-Key Verfahren können damit realisiert werden [8, 24].