Bei der Übertragung von Daten spielen die garantierte Vertraulichkeit (Confidentiality), Unversehrtheit (Integrity) und Authentizität (Authenticity) eine wichtige Rolle.
Um bei einer Datenübertragung über ein nicht vertrauenswürdiges Medium wie das Internet die Vertraulichkeit zu garantieren, müssen die Daten verschlüsselt übertragen werden.
Geheime Nachricht: 135
Geheimes Verfahren: Die Bibel, Ausgabe xyz.
Man sucht ein Auftreten der Ziffer 1, notiert sich diese Seite, die Zeile und die Stelle in dieser Zeile: Seite1-Zeile1-Stelle1
und geht dann für 3 bzw. 5 analog vor und übermittelt dann
Seite1-Zeile1-Stelle1:
Seite2-Zeile2-Stelle2:
Seite3-Zeile3-Stelle3
Der Empfänger nimmt seine Bibelausgabe, schlägt Seite1
auf, sucht in Zeile1 die Stelle1 und notiert sich die
gefundene „1“ usw.
Wenn man das Verfahren nicht kennt bzw. nicht weiss, welches Buch zum
Einsatz kommt, ist der Code i. Allg. unmöglich zu knacken, wenn
man nicht immer wieder die gleichen Seiten nimmt und durch eine
Häufigkeitsanalyse etc. doch Attacken möglich sind.
Selbst wenn man das Verfahren (Addition) kennt, kann man ohne den Schlüssel (899) 1034 nicht zu 135 „entschlüsseln“ (man beachte oben den Hinweis auf Häufigkeitsanalysen etc.), kennt man jedoch den Schlüssel, ist das Entschlüsseln sehr einfach, da die inverse Funktion zur Addition - die Subtraktion - einfach umzusetzen ist.
ROT13 ist eine bekannte Variante, in der die Buchstaben A, B, C, … durch N, O, P, … ersetzt werden.
Wenn beim asymmetrischen Verfahren ein Teil des Geheimnisses geteilt werden kann, spricht man von Public-Key-Verschlüsselungsverfahren.
Die Faktorisierung von 899 dauert (durch Probieren) ziemlich lange, wenn man den geheimen Schlüssel (29) aber kennt, lässt sich der 2. Faktor sehr schnell aus dem öffentlichen Schlüssel berechnen: 899 / 29 = 31 und daraus die geheime Nachricht: 4185 / 31 = 135.
Ein etwas komplexeres Beispiel:
Diese Entschlüsselung würde sehr viel Zeit in Anspruch nehmen, allerdings gilt (was geheim gehalten wird): 899 = 29 * 31. Und damit gilt 899√x = 29√31√x.
Wenn man davon ausgeht, dass 2 „kleine“ Wurzeln deutlich schneller zu ziehen sind als eine „große“, kann jemand, der weiss, dass 899 das Produkt von 29 und 31 ist (geheimer Schlüssel; Primfaktorenzerlegung sehr großer Zahlen ist sehr aufwendig), das Problem im Vergleich relativ schnell lösen.
Diese Beispiele sind jetzt rein fiktiv, da die zu übermittelnden Zahlen
bei entsprechend großen Primzahlen dann unglaublich groß
würden und es nicht mehr möglich wäre, damit zu rechnen.
Tatsächlich zum Einsatz kommt aber u. a. ein sehr ähnliches
Verfahren, wobei aber mit der Modulo-Funktion gearbeitet wird, wodurch
die Werte, mit denen gearbeitet wird, viel kleiner bleiben
(RSA-Verfahren).
Die Sicherheit der Methoden in den Beispielen 1.2.2.a und b hängt also auch von der Leistungsfähigkeit von Computern (Stichwort Quantencomputer) und vom Stand des (mathematischen) Wissens ab! |
Das asymmetrische Verfahren kann auch verwendet werden um eine Nachricht zu
signieren (d. h. seine Unversehrtheit zu
garantieren):
Dazu wird aus der Nachricht ein „Fingerabdruck“ (kollissionsfreier
Hash-Wert) erstellt, dieser wird dann mit dem privaten geheimen Schlüssel
verschlüsselt (eigentlich ja entschlüsselt) und zusammen mit der
Nachricht übertragen. Zur Verfizierung entschlüsselt (eigentlich
verschlüsselt) der Empfänger dann die Signatur mit dem
öffentlichen Schlüssel des Absenders und vergleicht das Ergebnis
mit dem selbst errechneten Fingerabdruck der Nachricht. Wenn das Ergebnis
übereinstimmt, wurde die Nachricht nicht verändert.
Wenn wir uns am fiktiven Beispiel 1.2.2.b orientieren, würden wir zuerst
den zu übertragenden Text nach einem definierten Verfahren (z. B.
SHA-256) in
einen Fingerabdruck umwandeln. Um beim Beispiel zu bleiben:
Der SHA-256-Fingerabdruck für „135“ ist die Hexadezimalzahl
13671077b66a29874a2578b5240319092ef2a1043228e433e9b006b5e53e7513. Dezimal
ist das ca. 1035.
Der private Schlüssel des Absenders sei 17 * 37 = 629.
Wir ziehen daher die 37. und dann die 17. Wurzel (= geheimer Schlüssel)
und bekommen als Signatur ca. 18√10.
Wir übermitteln dann diese Signatur zusammen mit dem Originaltext
(135).
Der Empfänger nimmt diese Signatur und wendet den öffentlichen
Schlüssel an (potenziert die Signatur also mit 629), das Ergebnis ist
ca. (18√10)629 = 10629/18 ~ 1035.
Wenn der Empfänger nun selbst den Fingerabdruck der Nachricht erstellt
und mit diesem Wert vergleicht, sieht er, ob die Nachricht verändert
wurde oder nicht.
Wenn man nun die Vertraulichkeit mit der Integrität kombinieren möchte, signiert man die Nachricht mit dem eigenen privaten Schlüsel und verschlüsselt dann das Ergebnis mit dem öffentlichen Schlüssel des Empängers. Der Empfänger entschlüsselt die Nachricht dann mit seinem privaten Schlüssel und überprüft die Datei dann, indem er die Signatur mit dem öffentlichen Schlüssel des Absenders entschlüsselt. Ein moderner E-Mail-Client macht das ganz automatisch und quasi unsichtbar, er zeigt nur an, ob die E-Mail gültig signiert und ob sie verschlüsselt ist.
Beispiel für 1.2.2.b:
Öffentlicher Schlüssel des Absenders: 629.
Öffentlicher Schlüssel des Empfängers: 899.
Absender (geheim: 629 = 17 * 37):
Verschlüsselt die Nachricht: 135899 ~ 1,5 * 101900
Berechnet die Signatur: SHA-256(135) ~ 1035.
Entschlüsselt die Signatur: 17√37√1035
~ 18√10
Empfänger (geheim: 899 = 29 * 31):
Entschlüsselt die Nachricht: 29√31√1,5 * 101900 = 135
Verschlüsselt die (entschlüsselt übermittelte) Signatur: (18√10)629 ~ 1035.
Berechnet die Signatur der entschlüsselten Nachricht: SHA-256(135) ~ 1035
und vergleicht die beiden Werte.
Kann man den öffentlichen Schlüssel in einem (vertrauenswürdigen) Verzeichnisdienst einer Person zuordnen oder ist der Schlüssel selbst durch einen vertrauenswürdigen Dienst (Certificate Authorityi) signiert, ist auch die Authentizität der Nachricht gesichert.
Auch für Laien interessant:
Geheime Botschaften von Simon Singh.
Cryptography For Dummies von Chey Cobb.
Das Verfahren sei das aus Beispiel 1.2.2.b, aber mit noch händisch
berechenbaren Zahlen:
Mein öffentlicher Schlüssel sei 6,
Ihr geheimer Schlüssel sei 10 = 2 * 5.
Die geheime Nachricht sei 7 und der Fingerabdruck dieser Nachricht
sei e6a9.
Wie schaut dann die verschlüsselte Nachricht aus und wie die Signatur, wenn Sie mir diese Nachricht verschlüsselt und signiert schicken wollen?