Asymmetrische Verschlüsselungsverfahren

Schlösser ohne Schlüssel

Tam Hanna

Symmetrische Verschlüsselungsverfahren setzen voraus, dass Sender und Empfänger einen gemeinsamen geheimen Schlüssel kennen. Aber könnte man nicht, wenn man schon diesen Schlüssel austauschen muss, an seiner Stelle nicht auch gleich die vertrauliche Botschaft austauschen? Wozu also der ganze Schwachsinn?

Eine mögliche Lösung dieses Problems findet sich in der asymmetrischen Verschlüsselung. Dabei handelt es sich um eine Gruppe von Verschlüsselungsverfahren, die eben kein „gemeinsames Geheimnis“ voraussetzen.

Bevor wir uns aber mit diesen Verfahren im Detail befassen, eine Warnung: Das Implementieren derartiger Verschlüsselungssysteme erfordert enorme Fachkenntnis. Und das Lesen dieser Artikelserie macht aus Ihnen mit Sicherheit noch keinen Kryptoanalytiker.

Diese Lektion musste auch der bekannte österreichische Bombenbauer Franz Fuchs auf eine höchst peinliche Weise erfahren: Sein mit einer falsch parametrierten Form von RSA verschlüsselter Brief wurde vom Geheimdienst in einigen wenigen Tagen entschlüsselt.

Mathematische Grundlagen

Im Bereich der asymmetrischen Verschlüsselung spielen Primzahlen eine große Rolle. Als Primzahl werden dabei all jene Zahlen größer 1 bezeichnet, die sich nur durch 1 und sich selbst teilen lassen. So sind 2, 3 und 5 Primzahlen, 4 hingegen wäre durch 2 teilbar und somit keine Primzahl. Die „Teilung ohne Rest“ wird über den Modulo-Operator bewerkstelligt, der in der Literatur auch als mod bezeichnet wird. A mod B ergibt den Divisionsrest von A durch B – 5 mod 3 wäre beispielsweise 2.

Ein Hash-Algorithmus hat nichts mit der gleichnamigen Droge zu tun. Stattdessen hat man es hier mit einem Stück Software zu tun, das lange Daten „zusammenfasst“. Anders als bei einem Packer geht es hierbei aber nicht um das Verringern der zu übertragenden Datenmenge – die 1:1-Wiederherstellung der Ursprungsdaten aus dem Hash spielt absolut keine Rolle.

Die Idee ist vielmehr, die entstehende kürzere Datenfolge als „Schlüssel“ beispielsweise in einem Array zu verwenden. Dabei sind eventuelle Kollisionen weniger wichtig – viel wesentlicher ist es, dass kleine Veränderungen der Eingangsdaten zu möglichst großen Veränderungen der Ausgangsdaten führen.

Es gibt hunderte Hash-Algorithmen mit verschiedenen Eigenschaften. Hier als Beispiel eine primitive Hash-Funktion aus einem längst abgekündigten IRC-Client für Palm OS – sie ermittelt, an welcher Stelle im Array von 30 000 Linked Lists der eingegebene String „zu Hause“ ist (Listing 1).

Listing 1
static int hash(char*what)
{
int i, acc=0;
for(i=0;i
Der lustige Schlüsselhandel

An sich sind symmetrische Verschlüsselungsalgorithmen ja nicht schlecht: Sie arbeiten wesentlich schneller als ihre asymmetrischen Brüder, brauchen weniger Speicher und sind oft auch weniger komplex. Wäre da nur nicht das Problem mit dem Schlüssel.

Ein als „Diffie-Hellman Key Exchange“ bekanntes Verfahren setzt an dieser Stelle an. Es ermöglicht zwei Personen, einen gemeinsamen Schlüssel über eine unsichere Verbindung zu erstellen. Im ersten Schritt einigen sich die beiden (nennen wir sie Alice und Bob) auf eine Primzahl (fortan p) und eine kleinere, als Generator bekannte Zahl namens g. Die Zahl g muss eine so genannte Primitivwurzel g modulo p sein. Nach der öffentlichen Einigung auf diese beiden Werte ermittelt jeder für sich eine geheime Zufallszahl, die kleiner als p-2 sein muss. Diese Zufallszahl wird lokal gespeichert, und darf nicht übertragen werden. Stattdessen überträgt jeder an den anderen eine Zahl, die der folgenden Formel folgt:


A=g^a mod p

B=g^b mod p

Danach haben Bob und Alice gemeinsam Zugriff auf A, B, g und p. Zusätzlich besitzt Alice alleine die Zahl a, Bob alleine besitzt b. Anhand dieser Parameter können sowohl Alice als auch Bob den gleichen Schlüssel K errechnen – er folgt aus einer der beiden folgenden Formeln:


K = B^a mod p = A^b mod p

Der faszinierende Effekt dieser (zugegebenermaßen relativ komplexen) Berechnung ist die Zahl K, die fortan als Schlüssel für den symmetrischen Verschlüsselungsalgorithmus dienen kann. Ein den Kommunikationskanal überwachender Dritter bekommt nur A, B, g und p – und kann somit nicht ohne Weiteres auf K kommen.

Geschrieben von
Tam Hanna
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.