Hallo,
soweit ich im Bilde bin, ist die Verschlüsselung mittels OTP so ziemlich
das sicherste, was man überhaupt machen kann, jedoch gibt es das
Problem, dass der Schlüssel zum einen auf beiden Seiten bekannt sein
muss, und zum anderen nur einmal verwendet werden kann.
Nun stelle ich mir die Frage, wie man das Problem lösen kann, einen
neuen sicheren Schlüssel zu übergeben.
Wenn der erste Schlüsselsatz zwischen dem Empfänger und dem Sender
bekannt sind, dann kann genau eine Botschaft verschlüsselt zwischen den
beiden Stellen ausgetauscht werden, genau einmal. Danach darf der alte
Schlüssel nicht nochmal verwendet werden.
Was passiert aber nun, wenn zwischen Sender und Empfänger vereinbart
ist, dass die entschlüsselte Nachricht als Schlüssel für die nächste
Nachricht verwendet wird? Die Entschlüsselte Botschaft kennen ja erneut
nur die beiden an der Kommunikation beteiligten Parteien und so würde
die eigentliche Nachricht der Schlüssel für die jeweils nächste
Verschlüsselungsstufe werden.
Ist dies dann immer noch per stochastischer Analyse zu knacken, nachdem
man mehrere Übertragungen mit gelauscht hat?
Beachte known-Plaintext-Attacken. Wenn ich weiss oder annehme, dass
deine N-te Nachricht "OK, bis gleich" war, weil Du so was gelegentlich
schreibst, dann kann ich sofort die (N+1)-te Nachricht und alle
folgenden entschluesseln.
Konrad schrieb:> Beachte known-Plaintext-Attacken. Wenn ich weiss oder annehme,> dass> deine N-te Nachricht "OK, bis gleich" war, weil Du so was gelegentlich> schreibst, dann kann ich sofort die (N+1)-te Nachricht und alle> folgenden entschluesseln.
Es war die Rede davon, das jedes OTP nur einmal genutzt wird.
Damit entfällt diese Möglichkeit
1. Ein Schlüssel aus Text ist nicht statistisch gleichmäßig verteilt und
nutzt nur ein Bruchteil der möglichen Codes.
2. Sobald du einen OTP Schlüssel wie auch immer elektronisch weitergibst
ist er nuir noch so sicher wie die Weitergabe, dann kannst du dir das
OTP Geraffel gleich sparen.
restmuell schrieb:> Es war die Rede davon, das jedes OTP nur einmal genutzt wird.> Damit entfällt diese Möglichkeit
Nei, er wollte einmal einen OTP benutzen, und als Folgeschlüssel dann
die entschlüsselten Texte. Die werden aber immer unsicherer, da man
immer mehr Daten hat um den OTP herauszufinden, ausserdem muss man
beachten, dass es dem Angreifer gerlingen könnte irgendeinen
entschlüsselten Text auf anderem Wege zu erhalten, ab dann ist alles
folgende praktisch unverschüsselt.
Sprich die Idee des TO sollte man ganz schnell vergessen.
Der Andere schrieb:> 1. Ein Schlüssel aus Text ist nicht statistisch gleichmäßig verteilt und> nutzt nur ein Bruchteil der möglichen Codes.
Das ist der Punkt. Die Tatsache, dass natürliche Sprachen hochgradig
redundant sind ermöglicht ja auch (trotz riesiger Schlüsselräume) die
Analyse monoalphabetischer Kryptosysteme durch Auswerten der
Buchstaben-Häufigkeiten.
Gruß
Dennis
Ok,
die Sache mit dem Plain-Text muss natürlich umgangen werden, indem z.B.
immer die gesamte Schlüssellänge ausgenutzt wird, das macht das Finden
von geläufigen Floskeln ev. etwas schwieriger.
Zweitens die Sache mit den Auftretens-Häufigkeiten von
"Normaltext-Schlüsseln"
Das erste "echte" OTP wird genutzt um eine Nachricht zu übertragen.
Die Nachricht dient später als erneute OTP. Leider hat sie zunächst das
Problem, dass z.b. in deutschen Texten das E überproportional häufig
vorkommt und somit statistische Fingerabdrücke hinterlassen würden.
Man könnte aber den Schlüssel wieder zu einem echten Pseudorandom-Code
machen, in dem zusätzlich ein Glättungsalgorithmus im Sender und
Empfänger hinterlegt sein könnte, der den statistisch ungleichmäßig
verteilten Text wieder so glattbügelt, dass häufiger vorkommende
Buchstaben nach einem Algorithmus so oft durch weniger häufig
vorkommende ersetzt werden, bis wieder eine Gleichverteilung entsteht,
oder aber z.b. bewußt eine falsche Ungleichverteilung herbeigeführt
wird...
Wäre das dann wieder sicher?
Wie wäre es, wenn man das Ganze gleich gescheit aufzieht?
1. Zufälligen Master-Schlüssel mittels TRNG oder CSPRNG erzeugen
2. Master-Schlüssel an Sender und Empfänger verteilen
3. Masterschlüssel mit geeignetem Seed/Context an eine kryptographisch
sichere KDF übergeben um weitere Schlüssel abzuleiten
4. Nachricht mit abgeleitetem Schlüssel verschlüsseln
Der Seed/Context müsste dabei so gewählt sein, dass er sich für jede
Nachricht ändert, möglich wäre beispielweise die Nachrichtennummer zu
wählen o.ä.
Nächste Stufe wären dann das Ganze per asymmetrischer Kryptographie,
also z.B. RSAES-OAEP umzusetzen, damit entfällt dann das Problem, dass
eine Kompromittierung des Master-Schlüssels alle Sender/Empfänger
kompromittiert.
OTP schrieb:> Was passiert aber nun, wenn zwischen Sender und Empfänger vereinbart> ist, dass die entschlüsselte Nachricht als Schlüssel für die nächste> Nachricht verwendet wird?
Dein Verschlüsselungsverfahren sieht also so aus:
1
V1 = A ^ K1
2
V2 = K1 ^ K2
3
V3 = K2 ^ K3
4
...
Dabei sind A der Anfangsschlüssel, Ki die Klartextnachrichten, Vi die
verschlüsselten Nachrichten und ^ der XOR-Operator.
Diese Gleichungen kann man durch Umstellen und und gegenseitiges
Einsetzen auch so schreiben:
1
V1 = A ^ K1
2
V1 ^ V2 = A ^ K2
3
V1 ^ V2 ^ V3 = A ^ K3
4
...
Substituiert man jeweils
1
V1 ^ V2 ^ ... ^ Vi = Si
ergibt sich
1
S1 = A ^ K1
2
S2 = A ^ K2
3
S3 = A ^ K3
4
...
V1, V2, ... und damit auch Si sind dem Angreifer bekannt. Die
Gleichungen sehen nun genauso aus, als ob der Absender jedesmal
denselben Schlüssel A verwendet hätte und die verschlüsselten
Nachrichten S1, S2, ... wären.
Dein Verschlüsselungsverfahren ist damit genauso viel (oder wenig) wert
wie ein OTP, das für jede übermittelte Nachricht denselben Schlüssel
verwendet, da der Angreifer exakt die gleichen Entschlüsselungsverfahren
anwenden kann.
OTP schrieb:> soweit ich im Bilde bin, ist die Verschlüsselung mittels OTP so ziemlich> das sicherste, was man überhaupt machen kann
Ähmm nein. OTP ist ebenso wenig ein Verschlüsselungsverfahren, wie
"Schrödingers Katze" ein physikalisches Experiment ist.
> jedoch gibt es das> Problem, dass der Schlüssel zum einen auf beiden Seiten bekannt sein> muss, und zum anderen nur einmal verwendet werden kann.
So ist das. Schon die Schlüsselübergabe ist vollkommen unrealistisch.
Denn wenn man einen sicheren Kanal hat auf dem man den Schlüssel
übertragen kann, dann kann man auf eben diesem Kanal auch gleich die
Nachricht übertragen. Das andere Problem besteht darin, überhaupt
erstmal einen echt zufälligen Schlüssel zu erzeugen. Das ist viel
schwieriger als gemeinhin angenommen.
OTP ist ein Gedankenexperiment wie man ein Verschlüsselungsverfahren
aufziehen müßte, bei dem wirklich keine Information an Unbeteiligte
Dritte abfließt. Außer natürlich der Tatsache daß kommuniziert wird
und in gewissem Maße auch die übertragene Datenmenge.
Der Knackpunkt beim OTP ist, daß wirklich jeder Schlüssel gleich
wahrscheinlich ist. Der Schlüssel kann z.B. auch komplett aus Nullen
bestehen (dann wird Klartext verschickt). Oder der Schlüssel ist gleich
dem Klartext (dann besteht der Geheimtext nur aus Nullen). Dadurch daß
der Schlüssel zufällig gleichverteilt ist, ist auch jede mögliche
Entschlüsselung gleich wahrscheinlich (sofern sie die richtige Länge
hat). Ohne den Schlüssel zu kennen, kann niemand sagen welche
Entschlüsselung die richtige ist.
Insbesondere könntest du nachher auch daher kommen und einen "Schlüssel"
präsentieren der "beweist" daß du nur ein Rezept für Käsekuchen
geschickt hast. Und niemand kann beweisen daß das gelogen ist.
> Wenn der erste Schlüsselsatz zwischen dem Empfänger und dem Sender> bekannt sind, dann kann genau eine Botschaft verschlüsselt zwischen den> beiden Stellen ausgetauscht werden, genau einmal. Danach darf der alte> Schlüssel nicht nochmal verwendet werden.
Ja. Das sind die 3 Grundvoraussetzungen für den OTP:
1. der Schlüssel ist echt zufällig.
2. der Schlüssel ist (mindestens) so lang wie die Nachricht.
3. der Schlüssel wird genau einmal verwendet.
Sobald auch nur eine dieser Voraussetzungen verletzt wird, ist es kein
OTP mehr und man verliert alle gewünschten Eigenschaften.
> Was passiert aber nun, wenn zwischen Sender und Empfänger vereinbart> ist, dass die entschlüsselte Nachricht als Schlüssel für die nächste> Nachricht verwendet wird?
Dann ist das kein OTP mehr. Und außerdem sofort anfällig für known
plaintext Angriffe. Siehe Yalu.
Axel S. schrieb:> Denn wenn man einen sicheren Kanal hat auf dem man den Schlüssel> übertragen kann, dann kann man auf eben diesem Kanal auch gleich die> Nachricht übertragen.
Nicht ganz: der große Vorteil ist, dass man, wenn die Schlüssel vorher
getauscht wurden, der Zeitpunkt der Nachrichtenübertragung frei gewählt
werden kann.
Gruß
Dennis
Axel S. schrieb:> Schon die Schlüsselübergabe ist vollkommen unrealistisch.> Denn wenn man einen sicheren Kanal hat auf dem man den Schlüssel> übertragen kann, dann kann man auf eben diesem Kanal auch gleich die> Nachricht übertragen.
Unsinn, man kann z.B. heute den Schlüssel persönlich übergeben, um
übermorgen verschlüsselt über einen unsicheren Kanal zu kommunizieren.
Axel S. schrieb:> Das andere Problem besteht darin, überhaupt> erstmal einen echt zufälligen Schlüssel zu erzeugen. Das ist viel> schwieriger als gemeinhin angenommen.
In der Praxis begnügt man sich mit hinreichend guten Zufallsgeneratoren.
Axel S. schrieb:> Ähmm nein. OTP ist ebenso wenig ein Verschlüsselungsverfahren, wie> "Schrödingers Katze" ein physikalisches Experiment ist.Axel S. schrieb:> OTP ist ein Gedankenexperiment
Unsinn, OTP wird/wurde auch in der Praxis verwendet.
ich würde mich mal auf eine fixe "textlänge" einigen
z.b. 16KByte
die ersten 8KByte Text
die zweiten 8KByte der neue Schlüssel
zum verschlüsseln verwendet man einfach den Schlüssel zweimal..
edit: ok, blöde idee, das versößt irgendwie gengen das "man darf den
schlüssel nur einmal verwenden" ..
Axel S. schrieb:> OTP ist ein Gedankenexperiment
Quark, OTP wurde durchaus real verwendet.
vn n. schrieb:> man kann z.B. heute den Schlüssel persönlich übergeben, um> übermorgen verschlüsselt über einen unsicheren Kanal zu kommunizieren.
Man muß auch gar keinen Schlüssel übergeben, man muß sich nur auf einen
Schlüssel einigen.
Zum Beispiel: Nimm Buch soundso, Ausgabe soundso, Seite soundso, der
Schlüssel ist jeder dritte Buchstabe aus dem Text. Diese Angabe darf
natürlich ebensowenig anderen in die Hände fallen wie ein persönlich
übergebener OTP.
Timm T. schrieb:> Axel S. schrieb:>> OTP ist ein Gedankenexperiment>> Quark, OTP wurde durchaus real verwendet.
Hast du dafür belastbare Quellen? Ich weiß dass das immer wieder
behauptet wird, aber STIMMT das auch?
> Zum Beispiel: Nimm Buch soundso, Ausgabe soundso, Seite soundso, der> Schlüssel ist jeder dritte Buchstabe aus dem Text. Diese Angabe darf> natürlich ebensowenig anderen in die Hände fallen wie ein persönlich> übergebener OTP.
Natürliche Sprache ist NICHT zufällig! [1] Das ändert sich doch auch
nicht wenn du nur jeden x-ten Buchstaben nimmst, oder?
Gruß
Dennis
[1]
https://de.wikipedia.org/wiki/Buchstabenh%C3%A4ufigkeit#Buchstabenh.C3.A4ufigkeit_in_ausgew.C3.A4hlten_Sprachen
Dennis S. schrieb:> Timm T. schrieb:>> Axel S. schrieb:>>> OTP ist ein Gedankenexperiment>> Quark, OTP wurde durchaus real verwendet.> Hast du dafür belastbare Quellen? Ich weiß dass das immer wieder> behauptet wird, aber STIMMT das auch?
In bestimmten Kreisen ist es durchaus üblich, dass ganze Konvolute
vorgenerierter OTPs mittels Boten ausgetauscht werden. Früher physisch,
auf Papier, heutzutage eher auf einem digitalen Träger. Man braucht
dazu natürlich einen sehr vertrauenswürdigen Boten, den kriegt man
aber in der Regel eher leicht. Noch dazu, wenn ggf. da noch ein Dritter
"mitreist", der dem Boten ziemlich genau auf die Finger schaut und weder
der Bote selbst noch der Aufpasser da direkt und unmittelbar physischen
Zugriff auf den Träger haben. Beispielsweise wird's schwierig, da mal
schnell am Klo eine Kopie des - nennen wir's mal USB-Sticks - zu
zu ziehen, wenn sich selbiger in einem versiegelten Aktenkoffer
befindet, den der "Aufpasser" immer im Blick hat. Normalerweise nimmt
man aber auch ein Team von mindestens zwei Boten (damit einer wirklich
mal auf's Klo gehen kann, ohne dass der Koffer verschwindet) und dann
sind auch mehrere "Aufpasser" im Spiel, wobei es günstig ist, wenn
der Bote die Aufpasser nicht auf Anhieb erkennt und im Idealfall
sogar die Aufpasser nicht wissen, wie viele sie sind und ob ihnen
nicht selbst noch einer im Nacken sitzt. Frueher wars zumindest so.
Ob dieser Aufwand in der zwischenzeit durch bessere technische
Möglichkeiten reduzert werden konnte weiss ich nicht, aber ich wuerd's
immer noch genau so machen.
>> Nimm Buch soundso, Ausgabe soundso, Seite soundso, der Schlüssel>> ist jeder dritte Buchstabe aus dem Text. Diese Angabe darf natürlich>> ebensowenig anderen in die Hände fallen wie ein persönlich>> übergebener OTP.> Natürliche Sprache ist NICHT zufällig! Das ändert sich doch auch> nicht wenn du nur jeden x-ten Buchstaben nimmst, oder?
Natürliche Sprache oder ähnliches Zeugs will man da schon gar nicht.
Die Leute, die wirklich OTP brauchen, und daher auch keine Kosten
und Mühen scheuen, den Austauschkanal durch entsprechende personelle
Massnahmen weitestgehend zu sichern, haben mit Sicherheit, und dafür
verbürge ich mich, auch entsprechende Random-Generatoren stehen. Und
das ist sicher kein Schieberegister, das mit einem Pseudo-Random-Gen
gefuettert wird, der irgendwo sein salt/seed aus /dev/urand0 abholt,
sondern das ist ein echter true-RNG. Hat auch den Vorteil, dass der
Zugang zum Generator nicht sonderlich sicher sein muss, eben weil er
stets "echten" Zufall erzeugt.
Generell will man aber, eben wegen dem Aufwand im Austausch, der
wirkungsvoll jedoch nur via Bote erfolgen kann, OTP-Einsatz eher
minimieren. Ich kenn's beispielsweise so, dass mit dem OTP ein Key
für ein synchrones Verfahren ausgetauscht wird, mit dem dann ueber
beispielsweise digitale Leitung kommuniziert werden kann.
Dass Mutti da bei Sohnemann anruft, damit er als OTP-Schluessel in
der Bibel nachschlaegt und Hiob 3, Vers 17 oder sowas raussucht
macht sich zwar im Hollywood-Kino Eindruck, fuehrt die Sache aber
generell ad absurdum, denn wenn die Leitung Mutti-Sohn sicher waere,
dann koennte man sich das OTP auch komplett sparen.
LG, MdB
Daniel H. schrieb:> Dennis S. schrieb:>> Hast du dafür belastbare Quellen? Ich weiß dass das immer wieder>> behauptet wird, aber STIMMT das auch?>> https://en.wikipedia.org/wiki/One-time_pad#Historical_uses
Gut die Hälfte davon ist Hörensagen. Und für einige der genannten Fälle
(Weimarer Republik) steht in meinen Kryptographie-Büchern daß die
Schlüssel richtig mies waren. Die haben da Leute an Schreibmaschinen
gesetzt und "zufällige" Texte tippen lassen. Einmal darfst du raten, wie
die Verteilung der Buchstaben ist, wenn die immer abwechselnd mit der
linken und der rechten Hand getippt haben.
Über die Verwendung irgendwelcher Bücher als Pad brauchen wir erst gar
nicht zu diskutieren. Die erfüllen schon Kriterium 1 nicht (Zufall). Aus
opsec-Gründen wird man den Pad nach der Verwendung auch vernichten
wollen. Auch da steht man ausgesprochen dumm da, wenn man etwa die Bibel
verwendet. Oder sonst ein Buch von dem es mehr als 2 Exemplare gibt.
Andererseits ist die anekdotische Nutzung in Einzelfällen kein
Widerspruch zu meinem Wissen. OTP ist kein Verschlüsselungsverfahren
mit irgend einer praktischen Relevanz. OTP hat ausschließlich
theoretische Bedeutung.
Axel S. schrieb:> Andererseits ist die anekdotische Nutzung in Einzelfällen kein> Widerspruch zu meinem Wissen. OTP ist kein Verschlüsselungsverfahren> mit irgend einer praktischen Relevanz. OTP hat ausschließlich> theoretische Bedeutung.
Ich wollte dir auf keinen Fall irgendwie auf die Füße treten! Aber es
hat den Anschein, dass die Nutzung vom OTP in der Vergangenheit immer
eher halbherzige Krücken waren, statt dem Ideal (mit hohem Aufwand)
möglichst nahe zu kommen. Dein letzter Satz bestätigt auch mein Wissen /
meine Meinung.
Gruß
Dennis
ebenso meine Meinung und Wissen!
Als Ergänzung: die Bibel als Grundlage für den OTP verletzt alle 3
Grundregeln eines OTPs und damit ist diese Vorgehensweise kein OTP.
1.) nicht zufällig
2.) nicht einmalig verwendet, das schließt auch die Zerstörung des OTPs
mit ein!
3.) nicht gleiche Länge zur Nachricht
Es gibt aber reale Anwendungen bei dem OTPs technisch benutzt werden.
Sehr oft findet man in verschiedenen kryptographischen Protokollen OTPs
die mit anderen Verfahren kombiniert werden. Zb. bei
Signaturen/Keyexchanges usw. Die Entwickler benutzen hier deshalb OTPs
um sich die Beweisführung einer einzelnen Komponente zu erleichtern.
Aber auch mit dem Wissen das dann nur diese eine OTP Komponente
beweisbar sicher zum theoretischen OTP ist. In Zusammenarbeit mit den
anderen Verfahren, in die der OTP eingebettet wurde, wird aber
wissentlich die theoretisch erreichbare Sicherheit des OTPs wieder
reduziert. Da immer der zufällig erzeugte Schlüssel durch schwächere
Verfahren geschützt wird.