Moin Moin!
Ich seh schon: wenn Du was verschluesselt, dann meinst Du's ernst :-)
Zumindest weiß ich, wie man Abhörern das Leben schwer machen kann.
Aber eins ist mir nicht ganz klar:
Der Empfänger dagagen hat es einfacher, sein Schlüssel paßt ohnehin nur zur echten Nachricht, alles andere kann er vollautomatisch aussortieren.
Was meinst Du damit genau? 'Vollautomatisch' heisst doch immer noch: alles entschluesseln (oder zumindest einen Teil jedes Nachrichteblocks) und dann entscheiden, ob es die Nachricht ist oder 'Rauschen', oder? Oder geht das effizienter?
Das sollte effizienter gehen, wenn man typische Public-Key-Verfahren benutzt. In der Regel läuft das so ab:
Der Sender erzeugt einen relativ großen, zufälligen, symmetrischen Schlüssel. Symmetrisch heißt: Der selbe Schlüssel kann die Nachricht ver- und entschlüsseln. Der Schlüssel selbst ist aber meistens wesentlich kleiner als die Nachricht.
Mit dem symmetrischen Schlüssel wird die Nachricht verschlüsselt.
Dann wird der Schlüssel selbst mit dem Public Key des Empfängers asymmetrisch verschlüsselt (d.h. man kann nur mit dem zum Public Key gehörenden Private Key wieder entschlüsseln) und der verschlüsselten Nachricht hinzugefügt.
Der Empfänger entschlüsselt dann den symmetrischen Schlüssel mit seinem Private Key, und mit dem symmetrischen Schlüssel die verschlüsselte Nachricht.
Wenn der Private Key nicht paßt, sollte das sehr viel schneller auffallen als wenn man versucht, mit brutaler Gewalt den symmetischen Schlüssel zu raten oder aus der asymmetrisch verschlüsselten Form herauszurechnen (siehe auch weiter unten).
Warum so ein umständliches Verfahren mit "doppelter" Verschlüsselung?
Die ganze aktuelle Verschlüsselungstechnik basiert darauf, dass Angreifern nicht unbegrenzt viel Rechenleistung zur Verfügung steht. Man sucht Klassen von Funktionen, die relativ leicht konstruieren lassen (z.B. Multiplikation von zwei großen Primzahlen), deren Umkehrfunktionen aber um mehrere Größenordnungen mehr Aufwand erfordern (z.B. Primfaktoren richtig großer Zahlen ermitteln).
Alice und Bob, den beiden Muster-Usern bei Verschlüsselungsaufgaben, steht leider auch nicht unbegrenzt Rechenleistung zur Verfügung. Genauer gesagt haben sie sogar weniger Rechenleistung als der Bösewicht. Die asymmetrische Verschlüsselung macht leider ungleich mehr Mühe als symmetrische Verfahren. Der einzige Haken bei den symmetrischen Verfahren ist ja "nur", dass man "irgendwie" den geheimen Schlüssel von Alice zu Bob bringen muß, ohne dass jemand erfolgreich den Schlüssel abgreifen kann. Der ist aber, verglichen mit der Nachricht, recht klein, da ist der Aufwand der asymmetrischen Verschlüsselung längst nicht so problematisch wie bei einer asymmetrischen Verschlüsselung der gesamten Nachricht. Und anders als bei einer rein symmetrischen Verschlüsselung, bei der man den Schlüssel fast zwangsläufig mehrfach benutzen muß, wird hier für jede einzelne Nachricht ein neuer Schlüssel generiert, der nur ein einziges Mal benutzt wird.
Selbst wenn der Bösewicht also erfolgreich einen symmetrischen Schlüssel aus einer Nachricht rausgefummelt hat, nützt ihm der für die nächste Nachricht exakt gar nicht, weil für die automatisch ein völlig anderer symmetrischer Schlüssel genutzt wird.
Er muß den Private Key des Empfängers bekommen oder aus den Nachrichten herausrechnen. Letzteres ist extrem viel Aufwand, der nach gängiger Therorie daran scheitert, dass vorher das Universum den Wärmetod stirbt oder wenigstens unsere Sonne zu einem weißen Zwerg zusammengefallen ist. Daher greift man gelegentlich zu Rubber-hose Cryptanalysis, Einbruch, Spyware und anderen Techniken. Oder man verbietet den Einsatz von Verschlüsselung komplett oder beschränkt ihn auf relativ leicht knackbare Varianten. Oder man sorgt dafür, dass die Crypto-Software eine Hintertür hat, quasi einen Master-Key, der ALLE Nachrichten entschlüsseln kann, bzw. einen guten Tip, wie der zur Entschlüsselung benötigte Schlüssel aussehen muß.
Genau deswegen reiten übrigens die Crypto-Experten so darauf herum, dass sie alle Sources sehen und prüfen wollen und am liebsten selbst aus den Sources compilieren. Ein fertiges Binary könnte irgendein Bösewicht so verändert haben, dass es für eine leichtere Entschlüsselbarkeit sorgt.
Gegenmaßnahme: Testsuite für das fertige Binary, die Eingabe und Sollwert für die Ausgabe mit der echten Ausgabe vergleicht. Gegen-Gegenmaßnahme: Sonderfall-Regelung, die die Testsuite erkennt und in dem Fall die Backdoor-Funktionen lahmlegt.
Wenn man das weiter treibt, muß man das gesamte Betriebssystem, Libraries und Compiler im Source sehen und prüfen können. Und natürlich auch die Firmware (BIOS) und den Bootloader.
Soweit sind wir schon.
Und auch die Hardware selbst, schließlich könnte man auch Backdoor-Funktionen in Silizium gießen.
Daran (Open Source Hardware) arbeitet man noch. Nicht zuletzt, weil nicht in jeder Garage eine Chip-Fabrik steht.
Irgendwo muß die Paranoia allerdings auch Grenzen haben. Ich möchte nicht vom antiken Microsoft-Code im MBR über Syslinux, Linux-Kernel, glibc/dietlibc/uclibc, Shell, gcc bis hin zur Krypto-Software jede einzelne Code-Zeile durchanalysieren müssen. Daher verlasse ich mich darauf, dass meine "Zulieferer" das schon erledigt haben.
Mit digitalen Signaturen könnte man zumindest einige Teile in der Kette als "überprüft und sauber" markieren, das geschieht auch schon teilweise.
MD5 ist dafür allerdings nicht geeignet, dafür war es auch nie gedacht. MD5 ist eine gute Sicherung gegen zufällig auftretende Bitfehler in der Übertragung, aber keine Signatur, die auf einen oder mehrere vertrauenswürdigen Menschen zurückführbar ist.
So, Schluß für dieses Posting, sonst nörgelt die Forumssoftware wieder rum, dass ich geschwätzig bin. Nur noch ein paar Stichworte: Digitale Signatur, Web of Trust, Plausible Deniability.
Alexander
--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".