Moin Moin!
[...]
Ich hab die Antwort mit Vergnuegen gelesen, aber meine Frage bezog sich eigentlich wirklich nur auf das, was in der Frage stand :-) Ich praezisire mal. Bitte sage mir, ob und wo ich falsch liege:
Szenario: Du schickst mir eine Million Datenpakete, eins davon ist die echte Nachricht, der Rest ist Muell, d.h. nicht mit meinem Public Key verschluesselt, und natuerlich darin auch nicht mit demselben symmetrischen Key, mit dem die echte Nachricht verschluesselt ist.
Damit der Zweck des Ganzen nicht verloren geht, darf das ganze Ding keine expliziten Informationen darueber preisgeben, wo die echte Nachricht steckt. D.h., ich muss jedes Datenpaket mit meinem private key (zumindest teilweise) entschluesseln, um den (vermeindlichen) symmetrischen Schluessel zu kriegen, dann die Nachricht dieses Paketes mit dem symmetrischen Schluessel (zumindest teilweise) entschluesseln, um entscheiden zu koennen, dass es nicht die echte Nachricht ist.
So ist die Theorie.
Ich denke aber (ohne es geprüft zu haben), dass die gängigen Implementationen nicht nur den nackten symmetrischen Schlüssel asymmetrisch verschlüsseln, sondern auch noch einige weitere Informationen. Zum Beispiel die Information, welcher der möglichen symmetrischen Algorithmen benutzt wurde.
Wenn Du mit dem falschen Private Key versuchst, dass wieder zu entschlüsseln, bekommst Du bestenfalls Müll, wo eigentlich eine Angabe zum Algorithmus stehen sollte.
Damit könnte nach dem Versuch, den symmetrischen Schlüssel zu entpacken, schon erkannt werden, dass der Schlüssel nicht paßt, und der ganze Vorgang abgebrochen werden.
Oder man erkennt bereits beim Entschlüsseln anhand der grundlegenden Mathematik, dass es für die Kombination aus Public Key und falschem Private Key keine Lösung geben kann; man also beim Crypto-Equivalent von x+1=x-1 landet.
Das heisst, der Aufwand des Entschluesselns wird auch erheblich hoeher. Nicht notwendigerweise um den Faktor 1Mio, das haengt von der Laenge der Teilnachricht ab, die ich brauche, um das jeweils entscheiden zu koennen, ob ich Muell habe oder nicht, und vom Algorithmus, genauer davon, wie komplex das Entschluesseln von Teilen der Nachricht ist - die Einsparung muesste da im allgemeinen sehr viel schlechter als linear sein. Aber dennoch um einen erheblichen Faktor.
Ich denke, die gängigen Crypto-Algorithmen sind so aufgebaut, dass sie relativ schnell bemerken, dass ein Schlüssel nicht paßt. Alles andere wäre für die Benutzer extrem unerfreulich. Wenn mir jemand z.B. eine verschlüsselte Mail mit 20 MByte Anhang schickt, will ich nicht erst anhand der zehntausend Seiten Binärdurchfall im Mail-Client erkennen, dass mein Schlüssel nicht paßt, sondern ich will "sofort" eine Meldung darüber haben.
Das klint natürlich erst einmal nach einem Angriffsvektor. Ich habe eine Box, in die werfe ich eine verschlüsselte Nachricht und einen geratenen Private Key rein und raus fällt nach relativ kurzer Bedenkzeit ein "paßt" oder "paßt nicht".
Der Haken ist die Anzahl der möglichen Private Keys. RSA beispielsweise benutzt 1024, 2048 oder 4096 Bits, d.h. es gibt 2^1024, 2^2048 oder 2^4096 mögliche Private Keys. Schafft man es, die Hälfte dieser Keys durch qualifiziertes Raten von vorne herein auszuschließen, muß man sich immer noch mit 2^1023, 2^2047, 2^4095 möglichen Keys herumschlagen. Um auf handhabbare Größen zu kommen, muß man 1000 bis über 4000 mal richtig gut qualifiziert raten.
RSA mit 1024 Bit gilt als "bald" geknackt. RSA mit 2048 und 4096 Bit gilt als auf absehbare Zeit sicher, so lange niemand RSA mit einem Quantencomputer auf die Pelle rückt, der dank der Quantenphysik alle Schlüssel gleichzeitig ausprobieren kann.
Wenn das bis hierhin stimmt, dann heisst das natuerlich nicht, dass das Prinzip nicht funktioniert - natuerlich ist der Mahraufwand gering gegenueber dem Mehraufwand des Angreifers fuer Brute-Force-Attacken. Aber es ist dennoch ein Aspekt. Und *ob* das stimmt, das war meine Frage :-)
Eine sehr berechtigte Frage. Ich habe so ein System noch nie aufgebaut oder auch nur geplant, weil es dazu noch nie die Notwendigkeit gab. Von daher habe ich keine endgültige Antwort.
Alexander
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".