Angenommen, ich bin ein Angreifer und stehe vor einem schwachen, aber unbekannten Verschlüsselungsalgorithmus, der von "Dave" entwickelt wurde. Wie würde ich es knacken? Ich würde nicht einmal wissen, wo ich anfangen soll. Es wäre eine scheinbar bedeutungslose Zeichenfolge.
Das ist richtig, würden Sie nicht. Hier sind einige verschlüsselte Daten (4587556841584465455874588). Hast du eine Ahnung, was das bedeutet? Absolut nicht.
Es fehlt Ihnen jedoch der grundlegende Schlüssel für das Universum, der die Kryptographie zusammenhält. Die Idee ist einfach:
der Schlüssel ist alles
Das war's. Das ist das Stück, das du schützen musst. Das Stück, das Sie mit Ihrem Leben schützen müssen und hoffen, dass niemand Sie mit einem Hammer schlagen wird, bis Sie ihnen sagen, was es ist.
Auf dieser Basis müssen Sie davon ausgehen, dass Ihr Algorithmus vom Angreifer gelesen werden kann . Sie wissen, wie es funktioniert. Sie können den Prozess dokumentieren. Wenn es Schwächen gibt, werden sie diese finden. Und sie werden sie ausbeuten. Wie dieser verärgerte CIA-Vater von Taken.
Es stellt sich heraus, dass dies weniger eine Annahme als vielmehr ein praktischer Fall ist. Dave, der selbstgebraute Kryptograf, möchte einen Verschlüsselungsalgorithmus in sein Programm aufnehmen. Er beschließt, all die Test- und Designarbeiten zu vermeiden, die Kryptographen im Laufe der Jahre kostenlos für ihn geleistet haben, schreibt etwas mit dem ungeraden xor, kompiliert sein Programm und gibt es hilfreich an Freunde weiter.
Dieser Algorithmus ist jetzt in ihre Hände. Spiel vorbei.
Nun könnten Sie fragen: "Kann ich den Algorithmus nicht einfach geheim halten? Das wird funktionieren, oder?" Oh Dave, bitte hör auf. Nein nein Nein. Das Problem mit geheimen Algorithmen ist, dass sie viel häufiger gestohlen werden. Schließlich ist der Schlüssel für jeden Benutzer unterschiedlich (eigentlich ist dies keine Voraussetzung, aber nehmen wir zur Vereinfachung einfach an), aber der Algorithmus bleibt unverändert. Sie benötigen also nur eine Ihrer Implementierungen, um einem Angreifer ausgesetzt zu sein, und das Spiel ist wieder von vorne.
Bearbeiten : Ok, als Antwort auf die aktualisierte Frage des OP. Nehmen wir für einen Moment an, dass der Algorithmus völlig unbekannt ist. Jeder der beiden Teilnehmer an einer verschlüsselten Konversation hat die perfekte Sicherheit für die Implementierung seines Algorithmus.
In diesem Fall müssen Sie Daten analysieren. Sie können eine der folgenden Aktionen ausführen:
- Analysieren Sie auf häufig bekannte Buchstaben. Auf diese Weise würden Sie eine typische Caesar-Shift-Chiffre brechen.
- Versuchen Sie, die Länge des Schlüssels zu erraten. Mit diesen Informationen können Sie nach wiederholten Chiffretextblöcken suchen, die möglicherweise demselben Klartext entsprechen.
- Versuchsindex und andere solche Maßnahmen, die zum Aufbrechen der Vigenere-Chiffre verwendet werden, da dies (möglicherweise) viele polyalphabetische Chiffren sind ) nur Varianten davon.
- Achten Sie auf Muster. Jedes Muster kann Ihnen den Schlüssel geben.
- Suchen Sie nach anderen Hinweisen. Entsprechen die Längen einem bestimmten Maß, sind sie beispielsweise Vielfache eines bestimmten Werts wie einer Bytegrenze und werden daher (möglicherweise) aufgefüllt?
- Versuchen Sie, mit einer der symmetrischen Chiffren zu analysieren Kryptoanalyse-Techniken. Diese hängen in vielen Fällen von der Kenntnis des Algorithmus ab und gelten hier möglicherweise nicht.
- Wenn Sie der Meinung sind, dass die fraglichen Daten einen Schlüsselaustausch darstellen, können Sie eine der vielen Techniken ausprobieren, um public zu brechen Schlüsselalgorithmen.
Tatsache ist, dass ein kurzes Datenelement eines unbekannten Algorithmus möglicherweise nicht entschlüsselt werden kann. Dies bedeutet jedoch nicht, dass Sie sich darauf verlassen sollten, dass dies der Fall ist. Je mehr Daten ein Kryptoanalytiker wiederherstellen kann, desto wahrscheinlicher ist es, dass er Ihren Algorithmus beschädigt. Ohne ernsthafte Kryptoanalyse wissen Sie wahrscheinlich nicht, was diese Grenze ist - es ist beispielsweise anzunehmen, dass man einen Caeser-Cipher-Algorithmus für Wörter mit drei Buchstaben brutal erzwingen könnte, da es nur wenige gibt, die Sinn machen.
Sie haben auch Probleme mit der Wiederverwendung. Im Zweiten Weltkrieg haben die Engima dieses Problem überwunden, indem sie programmierbare Einstellungen für ihren geheimen Algorithmus hatten, aber dies wurde auch gebrochen.
Es gibt auch das menschliche Element der Kryptographie zu berücksichtigen. Mir ist klar, dass auf dem Etikett auf der Dose "Einmal verwenden, nicht verdauen" usw. steht, aber Menschen sind Menschen und werden wahrscheinlich zweimal, dreimal usw. verwenden. Jedes derartige Verhalten spielt dem Kryptoanalytiker in die Hände.