Ich interessiere mich sehr für Kryptographie und besonders für die Verschlüsselung und Signierung von Daten im alltäglich Leben. Daher will ich versuchen, im Folgenden ein bißchen das grundlegende Konzept und den politischen Hintergrund zu diesem Thema zu beleuchten.
Dies soll keine erschöpfende mathematische Behandlung der Theorie der
Kryptographie darstellen (dazu gibt es in Internet viel bessere Quellen),
sondern lediglich die Grundzüge darstellen...
Für die meisten aktuellen Anwendungen werden sogenannte asymmetrische
Verfahren zur Verschlüsselung eingesetzt. Dabei besteht jeder Schlüssel
aus einem privaten und einem öffentlichen Schlüssel. Dazu bestehen
beide Schlüssel im Allgemeinen aus zwei großen Primzahlen (Ich meine wirklich
groß, wenn man beide miteinander multipliziert, bekommt man eine Zahl, die
mehr als 200 Stellen besitzt!), mit deren Hilfe eine dritte Zahl über ein
bestimmtes Verfahren berechnet wird. Diese dritte Zahl und das Produkt der
beiden Ausgangszahlen wird dann bekannt gegeben. Die ganze Sicherheit des
Verfahrens beruht jetzt darauf, dass es mit sehr viel Rechenaufwand verbunden
ist, aus den beiden Zahlen des öffentlichen Schlüssels wieder die beiden
Ausgangszahlen zu berechnen. Es ist nicht unmöglich, jedoch würden aktuelle
Computer für diese Aufgabe mehrere Jahrzehnte benötigen und danach wäre auch
nur dieser eine Schlüssel bekannt.
Der private Schlüssel ist (wie der Name schon andeutet) vor anderen
unzugänglich aufzubewahren, wohingegen der öffentliche Gegenpart öffentlich
verfügbar sein sollte. Angenommen, Alice hat jetzt ein solches Paar erstellt
und Bob den öffentlichen Schlüssel zukommen lassen, dann kann Bob eine
Nachricht mit dem öffentlichen Schlüssel so verschlüsseln, dass sie nur noch
von Alice dechiffriert werden kann - daher auch der Name: Asymmetrisches
Verfahren. Also kann jeder, der in Besitz des öffentlichen Schlüssels ist, eine
Nachricht für Alice verschlüsseln.
Jedoch kann Alice noch nicht feststellen, ob die Nachricht auch wirklich von
Bob kam, der Nachricht fehlt noch die "Unterschrift". Dazu kann jetzt auch Bob
ein eigenes Schlüsselpaar erzeugen, von dem er den öffentlichen Schlüssel an
Alice gibt. Jetzt kann Bob mit seinem privaten Schlüssel die Nachricht
signieren. Diese Signatur gibt Aufschluss darüber, dass auch wirklich Bob die
Nachricht signiert hat (denn nur er hat ja seinen privaten Schlüssel), und
dass der Text der Nachricht während der Übertragung an Alice nicht durch
Dritte verändert wurde. Die Gültigkeit dieser Unterschrift kann von Alice
durch Bob's öffentlichen Schlüssel überprüft werden.
Also noch einmal zusammenfassend: Der öffentliche Teil des Schlüssels dient
dazu, Nachrichten so zu verschlüsseln, dass nur der Besitzer des privaten
Gegenstücks den Text lesen kann. Mit dem privaten Schlüssel kann sein Besitzer
eine digitale Signatur unter ein Dokument setzen, welches danach aber noch im
Klartext für alle leserlich vorliegt. Deshalb lassen sich beide Verfahren nach
Bedarf kombinieren, d.h. hintereinander Anwenden.
Das große Problem bei dieser Methode ist das sichere Austauschen der öffentlichen Schlüssel. Wenn Alice aus dem Internet den öffentlichen Schlüssel eines Bob holt kann sie sich ja noch nicht sicher sein, dass mit Bob auch wirklich ihr Bob gemeint ist, sich also nicht ein anderer, nennen wir ihn Eve, einfach nur als Bob ausgibt und somit alle vermeintlich nur für Bob verschlüsselte Dokumente plötzlich von Eve gelesen werden können. Dazu kann man von den Schlüsseln sog. Prüfsummen bilden, die dann über sichere Kanäle, z.B. ein persönliches Treffen oder per Telefon, von beiden Seiten abgeglichen werden müssen.
Da die im letzten Abschnitt angesprochene Überprüfung der öffentlichen
Schlüssel auf ihre Authentizität in der Praxis ziemlich umständlich werden
kann, sehen aktuelle Ansätze weitere Möglichkeiten vor: Das Web of Trust.
Es können nicht nur allgemeine Nachrichten signiert werden, sondern auch
öffentliche Schlüssel. Somit könnte Alice, nachdem sie sich zweifelsfrei davon
überzeugt hat, dass der Bob auf dem Schlüssel auch wirklich der richtige Bob
ist, seinen öffentlichen Schlüssel mit ihrem eigenen Schlüssel signieren.
Diesen signierten Schlüssel von Bob kann sie dann an einen sog. Keyserver weitergeben. Dies ist eine
Sammelstelle im Internet, an dem viele öffentliche Schlüssel zentral gesammelt
werden und jeder dort nach Schlüsseln suchen kann. Wenn ich jetzt also Bob's
öffentlichen Schlüssel brauche, kann ich den Keyserver befragen und die Version
mit der Unterschrift von Alice finden. Wenn ich jetzt Alice kenne und weiß,
dass ich ihrer Unterschrift vertrauen kann, dann kann ich auch Bob's Schlüssel
ohne weitere Überprüfung vertrauen.
Für diesen Zweck gibt es auch offizielle Certification Authorities
(CA), die öffentliche Schlüssel mit ihrem Schlüssel professionell beglaubigen.
Diese Unternehmen unterliegen sehr strengen Sicherheitsauflagen und müssen
sich wirklich ganz sicher sein, dass Bob's Schlüssel auch Bob ist, bevor sie
ihre eigene Unterschrift unter den Schlüssel setzen.
In Deutschland gibt es seit 1997 ein Signaturgesetz (SigG), welches den rechtlichen Rahmen für die digitale Signatur festlegt. Es wurde Ende 2000 durch das "Gesetz über Rahmenbedingungen für elektronische Signaturen (Signaturgesetz - SigG)" novelliert, welches europäische Richtlinien zu diesem Thema in nationales Recht umsetzte. Es schafft die Grundlage dafür, dass diese Form der Signatur zwar nicht der handschriftlichen gleich gesetzt wird (Bits und Bytes sind halt keine Tinte), jedoch vor Gericht genauso anerkannt werden kann. Somit bietet die digitale Signatur faktisch für den Privatmann und die Geschäftswelt eine rechtlich gesichterte Alternative zur herkömmlichen Unterschrift. Dazu noch ein Auszug aus dem Vorwort zum Gesetzentwurf:
... Die im Gesetzentwurf vorgesehene Sicherheitsinfrastruktur für qualifizierte elektronische Signaturen ermöglicht es, im elektronischen Rechts- und Geschäftsverkehr den Urheber und die Integrität von Daten zuverlässig festzustellen. Dies ist die notwendige Voraussetzung dafür, dass die elektronische Signatur ein Substitut zur handschriftlichen Unterschrift darstellen und hierdurch eine entsprechende Rechtswirkung entfalten kann. ...
Den gesamten Gesetzentwurf, der dann später mit nur geringen Abänderungen in geltendes Recht umgesetzt wurde, gibt es hier (238 kB).
Auf der Softwareseite gibt es praktisch nur zwei Programme, die für den Privatmann interessant sind: GnuPG (GNU Privacy Guard) und PGP (Pretty Good Privacy). Dabei ist GnuPG der freie Partner (Stichwort Open Source) des altbekannten, aber mit Patenten versehenen PGP. Diese Programme (zumindest GnuPG) gibt es für die meisten Computerplattformen und Betriebssysteme und sind für die Erstellung von Schlüsselpaaren, die Verwaltung aller privaten und der gesammelten öffentlichen Schlüssel, des damit zusammenhängenden Web of Trusts und natürlich für die Ver- und Entschlüsselung und für das Erstellen und Überprüfen von Signaturen verantwortlich.
Am Beispiel von GnuPG werde ich kurz erläutern, wie dies in der Praxis funktionieren kann (ich beziehe mich hier auf die Linux Kommandozeilen-Version). Natürlich gibt es noch viel mehr Varianten und Optionen, doch das hier sollte eine erste Vorstellung davon liefern:
gpg --gen-keygpg --recv-keys Schlüssel-IDgpg --recipient Empfänger-ID --encrypt Dateigpg --sign Dateigpg --decode Dateigpg --verify DateiHierbei bezieht sich Datei immer auf die Datei, welche die zu bearbeitende Nachricht enthält. Als Schlüssel-ID kann man wahlweise die Nummer des Schlüssels (bei mir z.B. D8B53A85) oder einfach nur den Namen, bzw. die enthaltene eMail-Adresse angeben. Zu beachten ist jedoch jeweils, dass die Zuordnung zum Schlüssel auch eindeutig ist. Alternativ gibt es natürlich auch noch Frontends, die das alles hinter einer grafischen Oberfläche "verstecken". Für Windows kann man hier WinPT und für Linux GPA empfehlen, jedoch bieten auch viele Mailprogramme bereits integrierte Frontends an.
Zur Speicherung des privaten Schlüssels gibt es prinzipiell zwei
Möglichkeiten: Entweder wird der Schlüssel lokal auf der eigenen Festplatte,
oder einer Diskette gespeichert (dies ist die von GnuPG und PGP standardmäßig
unterstützte Variante), was allerdings nur einen mäßigen Schutz vor einem
möglichen Ausspionieren des Schlüssels bietet. Alternativ kann der Schlüssel
aber auch auf einer sog. Signaturkarte, wie sie von mehreren Stellen ausgegeben
wird, gespeichert werden. Diese wird dann über ein spezielles Lesegerät vom
Computer ausgelesen und bietet einen optimalen Schutz des privaten
Schlüssels.
Egal für welche Variante man sich entscheidet ist der Schlüssel jeweils noch
einmal über ein Passwort bzw. eine PIN-Nummer vor unfebugter Benutzung
geschützt.
Zu guter letzt folgt natürlich noch mein eigener öffentlicher Schlüssel. Er wurde leider (noch) nicht von einer "offiziellen" Seite her signiert, sondern "nur" von Privatleuten. Wenn Du also ganz sicher gehen willst, dass ich auch ich bin, kannst Du Dich gerne bei mir per mail melden, dann kann man das per Telefon o.ä. regeln.
Meinen Schlüssel kannst Du über einen öffentlichen Keyserver hier bekommen. Als einen ersten Anhaltspunkt kann man die Daten des Schlüssels mit diesen hier vergleichen:
pub 1024D/D8B53A85 2000-09-05 Florian Schaefer <florian@!well, remove this!netego.de>
Key fingerprint = A6BB 9504 7EE2 6582 F3A0 ECDF FB69 71A1 D8B5 3A85
Na dann bleibt nur noch zu hoffen, dass sich diese Form der elektronischen Signatur, die meiner Meinung nach richtig angewandt mehr Sicherheit als die handschriftlich gesetzte und unter Umständen sogar noch durch die Gegend gefaxte Unterschrift bietet, sich in nächster Zeit auch wirklich durchsetzen kann.