|
Asymmetrische VerschlüsselungIn asymmetrischen Verschlüsselungsverfahren existieren zwei verschiedene,gleichlange Schlüssel, die mathematisch miteinanderzusammenhängen, der "Private Key" und der "Public Key":- Der Private Key verbleibtgrundsätzlich beim Eigentümer des Schlüssels undwird ausschließlich zum Entschlüsseln vonverschlüsselten Nachrichten verwendet, die mit demzusammengehörenden Public-Key verschlüsseltwurden.
- Der Public Key ist deröffentliche Schlüssel des Schlüsselpaares, den derEigentümer des Schlüssels zunächst an einen Absenderübergeben muß, damit dieser seine Nachrichten an denEigentümer mit ihm verschlüsseln kann. Dabei kann derPublic Key jedermann bekannt sein.
Beide Schlüssel stehen in einemkomplexen mathematischen Zusammenhang. AsymmetrischeVerschlüsselungsverfahren arbeiten deutlich langsamer alssymmetrische, sind jedoch auch in Mehrnutzerumgebungen (z. B.Netzwerke oder das Internet) sicher, da der Schlüssel zurEntschlüsselung immer beim Eigentümer verbleiben kann under niemandem bekannt sein muß. Den interessantesten Ansatz, der auchschon rege benutzt wird, stellt ein mathematisches Verfahren dar,das auf Verwendung von Methoden der Restklassenalgebra (auf
Primzahlen) basiert. Entwickelt wurde dieses Verfahren von den
Amerikanern Rivest, Shamir und Adleman, die auch ein Patent auf
einen entsprechenden Algorithmus haben
(RSA-Algorithmus).
Ein anderes Verfahren ist DSA (Digital
Signature Algorithm). Während RSA universell einsetzbar ist,
ist DSA nur für digitale Signaturen einsetzbar. Es gibt zwei
wesentliche Anwendungen:
- Verschlüsselung: Hier wird eine
Nachricht mit einem public key verschlüsselt, sie kann dann
mit Hilfe eines nur dem Empfänger bekannten private keys nur
von diesem Empfänger gelesen werden.
- Elektronische Signatur (z.B. in
Mailsystemen): Hier kann eine Nachricht mit Hilfe eines nur dem
Sender bekannten private keys signieren. Jeder mögliche
Empfänger kann dann mit Hilfe des Public Keys
überprüfen, ob die Nachricht auch wirklich authentisch
ist, d.h. ob sie wirklich vom angegebenen Sender
stammt.
In einer bestehenden Verbindung
können auch beide Verfahren gleichzeitig zur Anwendung kommen,
dann benötigen Sender und Empfänger zwei entsprechende
Schlüsselpaare. Basis für die Berechnung von
Schlüsseln sind möglichst große Primzahlen (100 bis
über 200 Bits), wobei das Produkt dieser Primzahlen Teil der
Schlüssel ist. Es wird vorausgesetzt, daß es genauso
schwierig ist, einen mit einem Public Key verschlüsselten Text
mit demselben Schlüssel wieder zu entschlüsseln, wie die
Zerlegung des Produkts zweier Primzahlen zu finden. Ein
Angriffspunkt ist jedoch die Verbreitung des öffentlichen
Schlüssels. Man kann seinen öffentlichen Schlüssel
in einer Datei speichern, die man dann an seine Freunde weitergeben
oder im Internet veröffentlichen kann. Was aber, wenn ein
Fremder einen öffentlichen Schlüssel unter Ihrem Namen
veröffentlicht? Eine mit diesem Schlüssel chiffrierte
Nachricht kann dann nur von dem Fremden gelesen werden und nicht
von Ihnen.
Im folgenden wird gezeigt, wie man
prinzipiell die Schlüssel berechnen kann: Wissen Sie aus Ihrer
Schulzeit noch, was Primzahlen sind? Das sind Zahlen, die nur durch
sich selbst und durch 1 teilbar sind. Also z. B. 2, 3, 5, 7, 11,
13, 17, 19, 23, 29, aber auch 28 + 1 = 257 und 216 + 1 = 65537.
Machen Sie es sich einfach und nehmen Sie die Primzahlen p=13 und
q=19. Damit ergibt sich das Produkt
n = p*q = 247
Um den Public Key zu finden, wird noch die Funktion
s = (p-1)*(q-1)
benötigt, hier ergibt sich s zu 12 * 18 = 216.
Nun wählt man einen Public Pey (e,n) so, daß e und s
keinen anderen gemeinsamen Teiler besitzen als die Zahl 1. Hier
könnte z.B. e = 5 zufällig gewählt werden. Der
Public Key ist in diesem Beispiel damit (5,247). Ein Private Key
(d,n) wird nun so gewählt, daß der Rest der ganzzahligen
Division von d*e/s den Wert 1 ergibt. Hier
kann z.B. d = 173 gewählt werden. Damit ist der Private Key
(173,247). Sind die Schlüssel generiert, werden p und q
vernichtet Verschlüsselt wird nun die Nachricht im Klartext, z. B. ein
ASCII-Zeichen mit dem Wert 12:
- Verschlüsselung:
125/247 = 248832/247 = 1007 Rest 103,
damit ist "103" nun der verschlüsselte Text
- Entschlüsselung:
103173/247 = 1663*10349/247 = xxxx Rest 12,
damit ist der entschlüsselte Text "12"
|
|
|