IDEA™ soll hier stellvertretend für die symmetrischen Verschlüsselungsalgorithmen behandelt werden. Weitere Algorithmen finden Sie in [Sti95,Sch95]. IDEA basiert auf der Kombination einfacher Rechenoperationen. Verwendet werden:
Diese drei Operationen wurden nicht absolut willkürlich gewählt, sondern aufgrund einer ganz speziellen mathematischen Eigenschaft: Sie bilden zwei 16-Bit-Zahlen a,b auf eine 16-Bit-Zahl c ab und sind sowohl in b invertierbar. Das heißt: Zu jedem b gibt es ein b', so daß für alle a gilt. Das ist die entscheidende Eigenschaft, die das Entschlüsseln (bei bekanntem Schlüssel) erlaubt. Nebenbei sind die Operationen auch in ainvertierbar (und überhaupt kommutativ), was nahelegt, daß ihr Ausgabewert wünschenswert stark vom Schlüssel abhängt.
Aus dem 128-Bit-Schlüssel werden Teilschlüssel berechnet, und zwar S1,1 bis S8,6 und S9,1 bis S9,4. Hierfür wird der Schlüssel in acht 16 Bit große Teile geteilt, diese ergeben S1,1 bis S1,6, S2,1 und S2,2. Anschließend wird der gesamte 128-Bit-Schlüssel um 25 Bit nach links rotiert und wieder in acht Blöcke zu je 16 Bit unterteilt, die dann S2,3bis S2,6 und S3,1 bis S3,4 werden. Dann wird wieder rotiert und so weiter.
Die eigentliche Verschlüsselung läuft so ab, daß ein Klartextblock von 64 Bit Länge in vier Blöcke zu je 16 Bit eingeteilt wird, die anschließend dem Verfahren in Abb. E.1 unterworfen werden. Dargestellt ist nur der erste Durchlauf, das Verfahren wird achtmal angewendet.
Zum Entschlüsseln kann dasselbe Verfahren verwendet werden. Damit dabei der ursprüngliche Klartext erhalten bleibt, müssen leicht andere Teilschlüssel verwendet werden.
RSA, das wohl berühmteste asymmetrische Verschlüsselungsverfahren, ist benannt worden nach Rivest, Shamir und Adleman, seinen Entwicklern. Als sie es 1977 veröffentlichten, war es das einzige öffentlich bekannte Verfahren, daß die 1976 von Diffie und Hellman publizierte Idee öffentlicher Schlüssel tatsächlich einsetzen konnte.
Das System basiert auf Rechnungen im Ring der ganzen Zahlen modulo
pq, wobei p und q zwei verschiedene Primzahlen sind. In diesem
System zu rechnen, geht ebenso vor sich wie gewohnt, nur, daß vom
Ergebnis nur der Rest bei Division durch pq behalten wird. Als
Zeichen, daß wir diese Art der Rechnung durchführen, verwenden wir das
anstelle des üblichen = und schreiben den "Modulus", also
das pq, hinter die Rechnung. Wenn wir als Beispiel pq = 15 setzen,
dann sind folgende Rechnungen korrekt:
Von besonderem Interesse sind hier die Exponentialfunktionen:
denn es ist kein effizientes Verfahren bekannt, diese Rechnung
umzukehren, d.h. es ist keine Möglichkeit bekannt, in annehmbarer
Zeit Probleme wie
zu lösen. (Auf der Schwierigkeit des
diskreten Logarithmus, also der Lösung von
etc.,
beruhen andere Verfahren, beispielsweise ElGamal.) Weiterhin
interessant ist eine Beziehung, die schon Euler bekannt war:
Hier sind a und x beliebig, davon abgesehen, daß sie keinen
gemeinsamen Teiler größer als 1 haben.
ist das Zeichen für
das oben erwähnte Modulo-Rechnen, und zwar modulo x. Ein weiteres
neues Zeichen steht in dieser Formel:
ist die "Eulersche
Phi-Funktion". Für uns wichtig ist nur, daß
gilt, wiederum für die Primzahlen p und q. Eine kurze
Rechnung ergibt für eine beliebige ganze Zahl k:
Wenn wir nun zwei ganze Zahlen d und e einführen, von denen wir
verlangen, daß
gelten soll, dann erhalten wir:
Wobei die Kenntnis von b und d nicht ausreicht, um a zu berechnen. RSA funktioniert nun so, daß als öffentlicher Schlüssel d und das Produkt pq veröffentlicht werden und die Nachrichten adamit wie eben beschrieben verschlüsselt werden. Die verschlüsselten Nachrichten (b) können dann bedenkenlos versandt werden, da sie ohne e nicht entschlüsselt werden können.
Um einen ElGamal-Schlüssel zu berechnen, wählt man zufällig eine
Primzahl p (diese Zahl sollte recht groß sein, z.B. 1024 Bit) und
zwei Zahlen g und x, die kleiner als p-1 sind. Dann berechnet
man
ElGamal-Unterschriften werden wie folgt erzeugt: Zunächst wähle ein
zufälliges k, das keinen gemeinsamen Teiler mit p-1 hat und
berechne h, den Hash-Wert der Nachricht. Dann berechne man a und
b, so daß
Eine Nachricht M mit ElGamal zu verschlüsseln, funktioniert so:
Zunächst wähle man wiederum ein zufälliges k ohne gemeinsame Teiler
mit p-1. Dann berechne man
Das Paar (a,b) ist die verschlüsselte Nachricht. Man beachte, daß
die Länge der Nachricht hierbei mindestens verdoppelt wird. Zum
Dekodieren braucht der Empfänger nur