Mir ist gerade die Idee für folgendes Verschlüsselungsverfahren gekommen:
Man nehme einen Text und wandle ihn zunächst in eine Zahlenfolge um (z.B. in ASCII-Code).
Die Zahlen werden in eine n×n-Matrix M geschrieben, wobei in zufälligen Abständen Lücken gelassen werden.
Die Lücken werden so mit sinnlosen Zahlen gefüllt, dass det(M):=0 gilt. „Sinnlos“ heißt dabei, dass die Zahlen keinen kodierbaren Zeichen entsprechen (eventuell unter Berücksichtigung eines bestimmten Vertrauensintervalls, um Rundungsfehler auszugleichen).
Es wird eine zufällige n×n-Matrix A mit det(A)0 erzeugt.
Das Produkt A·M wird an den Empfänger geschickt.
Der Empfänger erzeugt eine zufällige n×n-Matrix B mit det(B)0.
Das Produkt A·M·B wird an den Sender zurück geschickt.
Der Sender entfernt seinen Schlüssel mittels A-1·A·M·B und schickt das Ergebnis M·B wieder zum Empfänger.
Der Empfänger entfernt seinen Schlüssel mittels M·B·B-1 und ist nun im Besitz der unverschlüsselten Matrix M.
Die sinnlosen Zahlen werden entfernt.
Die Zahlenfolge wird wieder in Text verwandelt.
Dazu habe ich zwei Fragen:
Gibt es das schon?
Kann eine dritte Person, die außer dem oben beschriebenen Verfahren ledigilich die verschlüsselten Matrizen A·M, A·M·B und M·B kennt, mit vertretbarem Aufwand (also nicht mittels Brute-Force) die unverschlüsselte Matrix M ermitteln? Und wenn ja, wie?
Aus den abgefangenen Botschaften A*M und A*M*B kann man B^(-1)
also die Inverse zu B berechnen.
Wie? (Beachte dabei den Hinweis von Timo Waechtler)
Durch Ausprobieren bin ich jetzt selbst auf eine Lösung gekommen. Wenn man die Matritzen A·M, A·M·B und M·B durch Addition mit einer geeigneten Marix C (z.B. einem kleinen Bruchteil der Einheitsmatrix) invertierbar macht, kann man die ursprüngliche Matrix M mittels
M ≈ [(A·M·B+C)·(M·B+C)-1]-1·(A·M+C)
oder
M ≈ (M·B+C)·[(A·M+C)-1·(A·M·B+C)]-1
mit so geringen Fehlern zurückgewinnen, dass eine Dekodierung des Textes möglich ist. Schade, aber irgend einen Haken musste die Sache ja haben.
Ja, die Chiffre gibt es schon, ist eine der ersten die man in der Kryptographievorlesung hört.
In der Kryptographievorlesung macht man das lediglich mit einer Streamchiffre statt mit einer Blockchiffre, wie Du sie verwendest.
Problem der Chiffre ist halt, dass 3Kommunikationen statt finden müssen für einen einzigen Nachrichtenaustausch. Dies kann man zB machen um einen Schlüssel für eine synchrone Verschlüsselung aus zu machen(gemeinsames Geheimnis).
Der Algorithmus ist jedoch hochgradig anfällig für Man-in-the-middle-attacks.