2017-12-14 2 views
2

Als Teil einer Zuweisung muss ich einen Algorithmus machen, der 2 Dateien als Eingabe benötigt, eine mit einem Klartext und eine mit einem Chiffretext. Wenn man bedenkt, dass das Verschlüsselungsmodell fest codiert ist und eine symmetrische Verschlüsselung ist, gibt es eine Möglichkeit, openSSL zu verwenden, um den Schlüssel zu berechnen, der verwendet wird, um den bereitgestellten Klartext in den bereitgestellten Chiffretext zu verschlüsseln?Berechnen des Schlüssels einer symmetrischen Verschlüsselung mit dem Klartext und dem Chiffretext

Für die Bequemlichkeit habe ich 5 Absätze von Lorem Ipsum als Klartext und Blowfish als Chiffre verwendet.

Die OpenSSL-Dokumentation und Google haben sich als wenig nützlich erwiesen.

Vielen Dank!

+0

http://cryptopals.com/ –

+0

Die gewählte akzeptierte Antwort hat mehrere Probleme und sollte daher nicht die akzeptierte Antwort sein. Andere Antworten wie Rossum und SoronelHaetir sind korrekt. Bitte überlegen Sie, die akzeptierte Antwort auf eine dieser Antworten zu ändern. – zaph

Antwort

1

Nein, du kannst nicht.
Nicht für den Blowfish-Algorithmus.

Der Grund dafür ist jedoch nicht dass jedes Verschlüsselungsschema gebrochen werden würde, wenn es möglich wäre, den Schlüssel aus einem Paar von Klartext und Chiffre ableiten, auch wenn es einfach ist, dies zu tun.
Der Rest dieser Antwort soll das erklären.

Es gibt mindestens ein Verschlüsselungsschema, das trotz der Ableitung des Schlüssels sicher ist. Es ist das One-Time-Pad-Verschlüsselungsschema, das das einzige bekannte wirklich sichere Verschlüsselungsschema ist, da es sich als unschlagbar erweist.
Der Punkt ist, dass das Ableiten des Schlüssels einer Nachricht nur ein Verschlüsselungsschema durchbricht, wenn das Wissen des Schlüssels einer Nachricht die Entschlüsselung aller zukünftigen Nachrichten erlaubt. Dies ist wiederum nur anwendbar, wenn derselbe Schlüssel wiederverwendet wird.

Die Spezialität der One-Time-Pad-Verschlüsselung ist

a) jede Taste ist nur für eine einzige Nachricht verwendet und nie wieder
(das ist, warum es „pad“ genannt wird, auf einen Notizblock mit Bezug mit vielen Tasten, aus denen das Blatt mit einem benutzten Schlüssel einfach weggenommen und zerstört wird)
b) der Schlüssel ist so lang wie die Nachricht
(sonst leitet man den Schlüssel für einen Teil der Chiffre mit einem partiellen bekannten Klartext ab würde erlauben, den Rest der Nachricht zu entschlüsseln)

Mit diesen Attributen enc Das Rypten selbst mit dem bescheidenen XOR ist unzerbrechlich, wobei jedes Bit in der Nachricht seinem eigenen dedizierten Bit in dem Schlüssel entspricht. Dies ist auch so schnell wie de-/encryption bekommt und erhöht nie die Nachrichtenlänge.

Es gibt natürlich einen großen Nachteil der One-Time-Pad-Verschlüsselung, nämlich Schlüssellogistik. Die Verwendung dieser Verschlüsselung ist kaum anwendbar, da der Empfänger einer Nachricht mit vielen großen Schlüsseln (oder besser einem sehr langen Schlüssel, der teilweise für jede Nachrichtengröße verwendet werden kann) versehen wird, und zwar im Voraus.
Dies ist der Grund dafür, dass die One-Time-Pad-Verschlüsselung nicht verwendet wird, obwohl sie sicherer und schneller als alle anderen ist und mindestens so effizient ist.

Andere Verschlüsselungsschemata gelten als praktisch sicher, sonst würden sie natürlich nicht verwendet.
Es ist jedoch notwendig, die Schlüsselgrößen parallel zu jedem erkennbaren Fortschritt der Kryptoanalyse zu erhöhen. Es gibt keinen mathematischen Beweis, dass ein anderer Algorithmus nicht unterscheidbar ist (dh es ist unmöglich, den Schlüssel aus einem einfachen Chiffre-Paar abzuleiten). Kein Mathe-Experte akzeptiert "Ich kann mir keinen Weg vorstellen, das zu tun." Beweis dafür, dass etwas unmöglich ist. Darüber hinaus könnten neue Technologien die Zeit für die Schlüsselableitung oder für das Auffinden von Klartext ohne Schlüssel auf einen Bruchteil reduzieren, was plötzlichen Untergang zu den üblicherweise verwendeten Schlüssellängen bedeutet.

Die Symmetrie oder Asymmetrie des Algorithmus ist übrigens irrelevant. Beide Arten können ableitbar sein oder nicht.

Nur die Schlüssellänge in Bezug auf die Nachrichtenlänge ist wichtig. Auch bei der One-Time-Pad-Verschlüsselung muss ein kurzer Schlüssel (Nachrichtenlänge ist ein Vielfaches der Schlüssellänge) mehr als einmal verwendet werden. Wenn der erste Teil einer Chiffre einen bekannten Klartext hat und es erlaubt, den Schlüssel abzuleiten, ermöglicht es die Wiederverwendung, die unbekannte Ebene für den Rest der Nachricht zu finden.
Dies gilt auch für Blockchiffre-Schemata, die den Schlüssel für jeden Block ändern, aber dennoch ermöglichen, den neuen Schlüssel mit der Kenntnis des vorherigen Schlüssels zu finden, falls dieser identisch ist. Hybrid-Schemata, die einen (möglicherweise asymmetrischen) Hauptschlüssel verwenden, um mehrere (normalerweise symmetrische) Blockschlüssel zu erzeugen, die nicht voneinander abgeleitet werden können, werden aus Gründen dieser Antwort als ableitbar betrachtet, wenn der Hauptschlüssel abgeleitet werden kann. Es gibt natürlich keinen weitverbreiteten Algorithmus, für den das gilt.

Bei jedem Schema steigt das Risiko, ableitbar zu sein, mit dem Verhältnis der Anzahl der Bits im Schlüssel zur Anzahl der Bits in der Nachricht. Je mehr Paare von Ziffernbits und einfachen Bits sich auf jedes Schlüsselbit beziehen, desto mehr Informationen stehen für die Analyse zur Verfügung. Für eine Eins-zu-Eins-Beziehung ist es möglich, die Information eines einfachen Chiffrierpaars auf dieses einzelne Paar zu beschränken.

Aus diesem Grund erfordert jede ableitbare Verschlüsselung eine Schlüssellänge, die der Nachrichtenlänge entspricht.
Umgekehrt bedeutet dies, dass nur nicht-ableitbare Verschlüsselungen kurze Schlüssel haben können. Und kurze Schlüssel zu haben, ist natürlich ein Vorteil, insbesondere wenn die Schlüssellänge die Verarbeitungsdauer impliziert. Die meisten Verschlüsselungsschemata dauern länger mit längeren Schlüsseln. Das One-Time-Pad ist jedoch für jede Schlüssellänge gleich schnell.

So ist jeder Algorithmus mit einfacher Schlüssellogistik (keine Notwendigkeit, sich auf große Mengen von Keybits vorher zu einigen) nicht ableitbar. Auch jeder Algorithmus mit akzeptabler Geschwindigkeit ist nicht ableitbar.
Beides gilt für jeden weit verbreiteten Algorithmus, einschließlich Blowfish.

Dies gilt jedoch nicht für alle Algorithmen, insbesondere nicht für die einzig wirklich sichere, die One-Time-Pad-Verschlüsselung (XOR).

So die Antwort auf Ihre spezifische Frage ist in der Tat:
Sie können nicht mit Blowfish und die meisten Algorithmen, die Sie wahrscheinlich denken. Aber ...

+0

Danke! Das war genau das, was ich brauchte! –

+0

Stream-Chiffren ergeben den Schlüssel-Stream, wenn die Chiffre mit denselben Sicherheitsparametern betrieben wird. Ein einfaches XOR wird es tun. Es gibt keine Notwendigkeit für eine triviale oder schwache Chiffre. Alles, was Sie tun müssen, ist, die Chiffre falsch zu betreiben, indem Sie die Parameter wiederverwenden. – jww

+0

Diese Antwort bezieht sich nicht auf Blowfish als Chiffre. was in der Frage gesagt wurde. Die Antwort definiert nicht, was ein "großer Schlüssel" ist. Weiter "Es macht keinen Sinn, einen kleinen Schlüssel zu verwenden, wenn er mehrere Male für eine Nachricht verwendet wird, die ein Vielfaches der Schlüsselgröße ist. – zaph

4

Nein, die Fähigkeit, dies zu tun, würde den gesamten Zweck der Kryptographie ziemlich besiegen. Es kann Werkzeuge geben, die solche Dinge mit trivialen Systemen (Caesar-Chiffre zum Beispiel) tun können, aber wenn Schlüssel in vernünftigen Zeiten für gegenwärtige Kryptosysteme berechnet werden könnten, wären sie gebrochen.

+0

Hallo. Nicht einmal, wenn das Verschlüsselungsmodell symmetrisch ist? Ich habe das im Titel erwähnt, aber ich habe vergessen, es auch in der Frage zu erwähnen. Es tut uns leid.Ich habe die Frage ein wenig bearbeitet. –

+0

Nein, erinnern Sie sich, in symmetrischen Chiffren wird die gleiche Operation durchgeführt, nur die Anwendung des Schlüssels auf Klartext produziert den Chiffretext und die Anwendung auf den Chiffretext produziert den Klartext (offensichtlich) .Cipher, die den Schlüssel durch bekannte Klartext (sogar massive Zahlen von Klartexten) gelten als sehr schwach. – SoronelHaetir

+0

@RaresDima Symmetrische Verschlüsselung ist nicht schwach mit einer geeigneten Schlüssellänge, ein Beispiel ist AES. – zaph

2

Was Sie sehen, ist ein "Known Plaintext Attack": Wenn der Angreifer sowohl den Chiffretext als auch den Klartext kennt, kann der Schlüssel gefunden werden?

Alle guten modernen Chiffren, einschließlich Blowfish, sind entworfen, um diesem Angriff zu widerstehen. Wie gesagt, lautet die Antwort auf Ihre Frage: "Nein, Sie können den Schlüssel nicht finden."

Verwandte Themen