Schlüsselaustausch bei OTP - Wird die Sicherheit damit erhöht?
Guten Tag zusammen,
ich bin durch eine Frage hier, die heute morgen gestellt wurde, auf die OTP-Verschlüsselung gekommen und habe ein bisschen darüber nachgedacht und hätte deshalb jetzt eine Frage an die Mathemathiker oder Kryptologen unter euch (Vielleicht auch generell an alle die auf Logik stehen)
Mal außer acht gelassen, dass das Verfahren alleine durch die größe der Schlüssel und die sichere Übertragung der Schlüssel einige größere Hürden mit sich bringt, finde ich das Prinzip vorallem wegen seiner Einfachheit und der, bei richtiger Verwendung, erreichten Sichherheit einfach klasse.
Allerdings habe ich jetzt eine Frage. Und zwar habe ich ein wenig darüber nachdegacht wie das so im Alltag verwendbar wäre und die Hauptschwastelle wäre wohl die sichere Übertragung des Schlüssels (Benötigter Speicherplatz und Generierung von echten Zufallszahlen mal außer Acht gelassen).
Jetzt habe ich überlegt ob es nicht noch sicherer werden würde, wenn es folgender Maßen Abläuft:
- Max verschlüsselt eine Nachricht mit einem wirklich zufälligen Key
- Der Schlüssel wird ausgestauscht und die verschlüsselte Nachricht über einen anderen Kommunikationsweg übertragen
- Peter entschlüsselt die Nachricht und antwortet.
- Dazu wird wieder ein zufälliger key generiert, allerdings wird die Antwort nicht direkt mit dem neuen Key verschlüsselt.
- Der neue Key wird mit allen bisher ausgetauschten Keys nacheinander verschlüsselt und der verschlüsselte key wird dann zum verschlüsseln der Antwort benutzt.
- Der neue zufällig gefundene Key (Nicht der verschlüsselte) wird mit Max ausgetauscht.
- Max muss den neuen Key wieder mit allen alten Keys verschlüsseln und kann diesen dann für das entschlüsseln der Nachricht benutzen.
... usw.
Wenn man zusätzlich jeden neuen schlüssel auch über einen neuen Kommunikationsweg austauscht sollte es für den Angreifer ja eigentlich unmöglich sein die Verschlüsselte Nachricht zu entschlüsseln. Selbst wenn er einen austausch des Schlüssels mitbekommen hat?
Bin ich jetzt richtig mit meinen Überlegungen oder verschlechtere ich die eigentliche Verschlüsselung damit eher, da man ja sogesehen alte Schlüssel wiederverwendet...
was sagt ihr? Ist das sicherer oder unsicherer? (Prämisse: Der Angreifer hat keinen Zugriff auf die db der alten schlüssel)
1 Antwort
Interessanter Ansatz. Ich bin nicht wirklich im Thema drin, aber könnte mir folgendes Problem vorstellen:
Angenommen, Max und Peter gelingt der erste Schlüsselaustausch mit Schlüssel k1, ohne dass ich ihn belauschen kann. Dementsprechend kann ich die erste Nachricht m1 nicht entschlüsseln.
Den zweiten Schlüssel k2 lese ich aber mit. Ich weiß, dass die Nachricht m2 verschlüsselt wird zu k1 + k2 + m2. Da ich k2 kenne, kann ich sie in eine Nachricht transformieren, die aber nur durch k1 verschlüsselt ist. Indem ich hierauf nämlich noch einmal k2 addiere, erhalte ich:
(k1 + k2 + m2) + k2 = k1 + m2.
Nun habe ich zwei Chiffretexte, nämlich k1 + m1 und k1 + m2. Dies bricht die Sicherheit des OTP, da aus Sicht des Angreifers (meiner Sicht) k1 wiederverwendet wurde.
Jetzt entgegnest du vielleicht, dass es schon großes Glück wäre, wenn ich ausgerechnet k2 mitlesen kann. Aber nehmen wir an, ich kann stattdessen erst k5 mitlesen. Sei K := k1 + k2 + k3 + k4.
Dann habe ich die verschlüsselten Texte K + m4 und K + k5 + m5. Auf letzteren kann ich wieder k5 addieren und erhalte K + m5. Auch hier bricht das OTP, da K aus meiner Sicht wiederverwendet wurde.
Ich bin kein Experte in der Verschlüsselung, geht man aber davon aus, dass die Nachricht digital übertragen wird, dann dürftest du gar nicht an den Key für die Nachricht drankommen, da dieser sehr wahrscheinlich asymmetrisch ausgetauscht wird.
Gerne :)
Wenn du mich fragst, sollte man die Schwierigkeiten beim Schlüsselaustausch nicht mit dem symmetrischen Verschlüsselungsverfahren "ausbaden", sondern nach Möglichkeit mit einer Verbesserung des Schlüsselaustauschs selbst.
Tatsächlich gibt es bereits einen Ansatz, wie man (theoretisch) echte Zufallsbits generieren kann und diese zugleich sicher austauscht. Falls dich das Thema interessiert, kannst du dir mal den "Quantenschlüsselaustausch" angucken. Auch bei diesem gibt es Schwierigkeiten in der technischen Umsetzung, aber die Idee an sich ist sehr interessant ;)
Da hast du recht, das hat Skiddy ja auch schon angesprochen, dass der Schlüssel einfach in einem asymetrisch verschlüsselten Kommunikationskanal ausgetauscht wird. Scheint auch echt einfacher zu sein nicht den Schlüssel an sich sondern die Übertragung des selbigen sicherer zu machen.
Das mit dem Quantenschlüsselaustausch hatte ich mir schon mal reingezogen und hört sich wirklich krass an. Das einfach mit verschränkten Quanten zu lösen ist schon echt ausgefuchst. Nur echt schade, dass man dass nicht so einfach zuhause mal ausprobieren kann :D
Aber rein theoretisch müsste man ja "nur" etwas äquivalentes zu den verschränkten Quanten finden, sprich eine funktion oder ähnliches, die nur bei den Kommunikationspartnern mit selben Schlüssel ausgeführt, das selbe ergibt und nicht übertragen werden muss. Irgendwas bietet uns die Natur oder Physik da bestimmt noch was man ausnutzen könnte ohne gleich ein Riesen Labor und Physik Promotion zu benötigen :D ... irgendwas das bei den Partnern installiert und auch nur da , "zufälle" generiert die identisch sind (Sprich wie verschränkte Quanten funktioniert)
Aber wer weiß vielleicht ist das auch eher nur eine utopie von mir
Mal schauen, was uns die Naturwissenschaften in Zukunft noch so an Erkenntnissen liefern :D Mit reiner Mathematik kommen wir hier nämlich leider vermutlich wirklich nicht viel weiter
(k1 + k2 + m2) + k2 = k1 + m2
Müsstest du da nicht k2 subtrahieren um auf k1 + m2 zu kommen?
Joa, aber da die "Addition" hier das bitweise XOR ist (oder auch "Addition Modulo 2"), sind Addition und Subtraktion dasselbe.
OK, bei bitbasierter XOR-OTP-Implementierung ist es dasselbe, nur bei "klassischer" wird unterschieden.
Ich dachte immer, die XOR-Implementierung ist die klassische, weswegen ich die (meiner Ansicht nach implizit) vorausgesetzt hab 😅
Für eine Verallgemeinerung hätte ich vermutlich sowas wie
Enc_k1(m1) schreiben sollen, aber das war mir zu viel Aufwand :'D
Hey MagicalGrill,
danke für deine Antwort und die sehr gute Erklärung!
Ich musste zwar ein wenig darüber nachdenken aber du hast Recht... wenn man einen key mitlesen kann und die verschlüsselte nachricht damit entschlüsselt hat, hat man eine Nachricht, die mit dem selben Schlüssel, wie die Vorherige verschlüsselt wurde und so kann man wenn man beide verschlüsselte Nachrichten hat auf den gemeinsamen Schlüssel davon schließen. :/
Wahrscheinlich könnte man es dem Angreifer schwerer machen indem man Informationen, die nur beide Kommunikationspartner kennen und nicht ausgetauscht werden müssen, wie z.B. die gesamt Anzahl der schon ausgetrauschten Schlüssel etc., mit einbezieht aber es bleibt dabei, dass man die eigentliche Verschlüsselung damit unterwandert ...
Schade das wär ja zu schön und einfach gewesen :D
Du hast mir aber gezeigt, wie ich zukünftig deutlich schöner an solche Themen dran gehen kann. Danke!