AES vs Blowfish für die Dateiverschlüsselung

106

Ich möchte eine Binärdatei verschlüsseln. Mein Ziel ist es, zu verhindern, dass jemand die Datei liest, der nicht über das Passwort verfügt.

Welches ist die bessere Lösung, AES oder Blowfish mit der gleichen Schlüssellänge? Wir können davon ausgehen, dass der Angreifer über große Ressourcen (Software, Wissen, Geld) verfügt, um die Datei zu knacken.

Mimrock
quelle
4
Blowfish ist mehr als ein Jahrzehnt alt, ich denke du meinst aes vs twofish ...
Turm
Sie haben Recht, das hätte ich fragen können. Glücklicherweise fasste Jerry das Thema großartig für mich zusammen.
Mimrock
@Rook Je älter, desto besser ist die Faustregel für Sicherheitsalgorithmen. Neue Algorithmen sind für Menschen gedacht, die mehr Wert auf Leistung als auf Sicherheit legen.
Ceving

Antworten:

187

Wahrscheinlich AES. Blowfish war der direkte Vorgänger von Twofish. Twofish war Bruce Schneiers Einstieg in den Wettbewerb, der AES hervorbrachte. Es wurde als minderwertig gegenüber einem Eintrag namens Rijndael beurteilt, der zu AES wurde.

Interessant beiseite: An einem Punkt des Wettbewerbs wurden alle Teilnehmer gebeten, ihre Meinung zur Rangfolge der Chiffren abzugeben. Es ist wahrscheinlich keine Überraschung, dass jedes Team seinen eigenen Beitrag als den besten ausgewählt hat - aber jedes andere Team hat Rijndael als den zweitbesten ausgewählt.

Trotzdem gibt es einige grundlegende Unterschiede in den grundlegenden Zielen von Blowfish gegenüber AES, die Blowfish in Bezug auf die absolute Sicherheit (wohl) begünstigen können. Insbesondere versucht Blowfish, einen Brute-Force-Angriff (Schlüsselerschöpfung) zu erschweren, indem die anfängliche Tastenkonfiguration relativ langsam ausgeführt wird. Für einen normalen Benutzer ist dies von geringer Bedeutung (es ist immer noch weniger als eine Millisekunde), aber wenn Sie Millionen von Schlüsseln pro Sekunde ausprobieren, um es zu brechen, ist der Unterschied ziemlich groß.

Letztendlich sehe ich das jedoch nicht als großen Vorteil. Ich würde generell AES empfehlen. Meine nächsten Entscheidungen wären wahrscheinlich Serpent, MARS und Twofish in dieser Reihenfolge. Blowfish würde irgendwo danach kommen (obwohl es ein paar andere gibt, die ich wahrscheinlich vor Blowfish empfehlen würde).

Jerry Sarg
quelle
11
Ich denke, andere Algorithmen galten als sicherer als Rijndael, aber sie boten eine sehr gute Leistung, während die Sicherheit als gut genug beurteilt wurde. Das Entwerfen eines Chiffrieralgorithmus ist immer ein Kompromiss zwischen Sicherheit und Leistung.
CodesInChaos
10
@CodeInChaos: Abhängig von Ihrer Sichtweise ist das zumindest irgendwie wahr - Serpent war wahrscheinlich das konservativste Design. Insbesondere dachten sie, dass eine 16-Runden-Version ausreichen würde - also verdoppelten sie diese auf 32 Runden. Der derzeit beste bekannte Angriff ist gegen nur 11 Runden wirksam. Wenn die ursprüngliche Frage die Auswahl nicht speziell auf AES und Blowfish beschränkt hätte und einfach nach der sichersten, einigermaßen bekannten Chiffre gefragt hätte, hätte ich wahrscheinlich Serpent gesagt ...
Jerry Coffin
Außerdem ist dieses "Interessante beiseite" in mehreren Fragen und Quellen aufgetaucht, als ich für meine CompTIA Security + -Prüfung studiert habe. Die kleinen Dinge könnten doch nicht so nutzlos sein!
Everlight
Blowfishist der schnellste
user924
22

Es ist eine nicht oft anerkannte Tatsache, dass die Blockgröße einer Blockverschlüsselung ebenfalls ein wichtiger Sicherheitsaspekt ist (wenn auch bei weitem nicht so wichtig wie die Schlüsselgröße).

Blowfish (und die meisten anderen Blockchiffren der gleichen Zeit wie 3DES und IDEA) haben eine 64-Bit-Blockgröße, die für die heutzutage üblichen großen Dateigrößen (je größer die Datei und je kleiner die Blockgröße) als unzureichend angesehen wird , je höher die Wahrscheinlichkeit eines wiederholten Blocks im Chiffretext ist - und solche wiederholten Blöcke sind bei der Kryptoanalyse äußerst nützlich).

AES hingegen hat eine Blockgröße von 128 Bit. Diese Überlegung allein ist eine Rechtfertigung für die Verwendung von AES anstelle von Blowfish.

caf
quelle
2
Der Vorteil einer 64-Bit-Blockgröße besteht darin, dass es einfacher ist, den neuen Algorithmus als Ersatz für (3-) DES in eine alte Anwendung zu kopieren.
Dajames
Die Blockgröße ist ein interessantes Argument. Ich habe vor einigen Monaten einen Artikel geschrieben, der theoretisiert, dass die Blockgröße einer symmetrischen Chiffre auf eine beliebige Länge erweitert werden kann: cubicspot.blogspot.com/2013/02/…
CubicleSoft
16

In Bezug auf die Algorithmen selbst würde ich mich für AES entscheiden, aus dem einfachen Grund, dass es von NIST akzeptiert wurde und jahrelang von Experten begutachtet und kryptografiert wird. Ich würde jedoch vorschlagen, dass in praktischen Anwendungen, sofern Sie keine Datei speichern, die die Regierung geheim halten möchte (in diesem Fall würde die NSA Ihnen wahrscheinlich einen besseren Algorithmus als AES und Blowfish liefern), einer dieser gewonnenen Algorithmen verwendet wird Es macht keinen großen Unterschied. Die gesamte Sicherheit sollte im Schlüssel enthalten sein, und beide Algorithmen sind gegen Brute-Force-Angriffe resistent. Blowfish hat sich nur bei Implementierungen als schwach erwiesen, bei denen die vollen 16 Runden nicht genutzt werden. Und während AES neuer ist, sollte diese Tatsache dazu führen, dass Sie sich mehr zu BlowFish neigen (wenn Sie nur das Alter berücksichtigen). Denk darüber so,

Folgendes würde ich Ihnen vorstellen ... Anstatt diese beiden Algorithmen zu betrachten und zu versuchen, zwischen den Algorithmen zu wählen, sollten Sie sich Ihr Schlüsselgenerierungsschema ansehen. Ein potenzieller Angreifer, der Ihre Datei entschlüsseln möchte, wird nicht dort sitzen und sich einen theoretischen Schlüsselsatz ausdenken, der verwendet werden kann, und dann einen Brute-Force-Angriff ausführen, der Monate dauern kann. Stattdessen wird er etwas anderes ausnutzen, z. B. Ihre Serverhardware angreifen, Ihre Assembly rückentwickeln, um den Schlüssel zu sehen, versuchen, eine Konfigurationsdatei mit dem Schlüssel zu finden, oder Ihren Freund erpressen, um eine Datei von Ihrem Computer zu kopieren . Diese werden dort sein, wo Sie am anfälligsten sind, nicht der Algorithmus.

Nerdybeardo
quelle
4
AES wurde kürzlich in die Liste der "kaputten Chiffren" auf Wikipedia aufgenommen, aber der schlimmste Angriff gegen Blowfish ist gegen vier Runden und fehlt deutlich in der Liste der kaputten Chiffren. Bruce 'Kommentar über die Überraschung, dass die Leute immer noch Blowfish verwenden, ist das, was Implementierer davon abhält. Es ist jedoch nicht defekt, unterstützt variable Schlüsselgrößen, unterstützt größere Schlüsselgrößen als AES und ist aus Programmiersicht im Vergleich zu den meisten anderen symmetrischen Blockchiffren einfach zu implementieren. Blowfish hat den Test der Zeit überstanden, der die größte Bedrohung für jede symmetrische Chiffre darstellt.
CubicleSoft
Ich bin damit einverstanden, dass AES bei weitem nicht kaputt ist. In den nächsten 10 Jahren brauchen wir jedoch einen neuen Standard. Auch jeder der AES-Finalisten war eine fantastische Chiffre. Die Schlange wird von vielen als die am schwersten zu brechende angesehen, aber AES war die eleganteste. (Und ja, wenn Sie sich ansehen, wie Sie die Ver- und Entschlüsselung durchführen, ist dies definitiv elegant.)
Nerdybeardo
8

AES.

(Ich gehe auch davon aus, dass Sie Twofish meinen, nicht den viel älteren und schwächeren Blowfish)

Beide (AES & Twofish) sind gute Algorithmen. Aber selbst wenn sie gleich wären oder zwei Fische aus technischen Gründen etwas voraus wären, würde ich mich immer noch für AES entscheiden.

Warum? Werbung. AES ist DER Standard für die staatliche Verschlüsselung, und daher verwenden ihn auch Millionen anderer Unternehmen. Ein talentierter Kryptoanalytiker bekommt einfach mehr "Bang for the Buck", wenn er einen Fehler in AES findet, als für die viel weniger bekannten und verwendeten Twofish.

Dunkelheit bietet keinen Schutz bei der Verschlüsselung. Es ist immer besser, wenn mehr Körper einen Algorithmus suchen, studieren, untersuchen oder angreifen. Sie möchten den bestmöglichen "geprüften" Algorithmus, und im Moment ist das AES. Wenn ein Algorithmus keiner intensiven und kontinuierlichen Prüfung unterzogen wird, sollten Sie ein geringeres Vertrauen in seine Stärke setzen. Sicher, Twofish wurde nicht kompromittiert. Liegt das an der Stärke der Chiffre oder einfach daran, dass nicht genug Leute genau hingeschaut haben ... NOCH

Gerald Davis
quelle
5

Die Wahl des Algorithmus spielt wahrscheinlich keine Rolle. Ich würde AES verwenden, da es besser erforscht wurde. Was viel wichtiger ist , die richtige Betriebsart und Auswahl Schlüsselableitungsfunktion .

Wenn Sie einen schnellen Direktzugriff wünschen, sollten Sie sich die TrueCrypt-Formatspezifikation ansehen, um sich inspirieren zu lassen. Wenn Sie keinen wahlfreien Zugriff benötigen, ist XTS nicht der optimale Modus, da es Schwächen aufweist, die andere Modi nicht haben. Möglicherweise möchten Sie auch eine Art Integritätsprüfung (oder einen Nachrichtenauthentifizierungscode) hinzufügen.

CodesInChaos
quelle
1
Absolut - es ist von entscheidender Bedeutung, eine gute Funktion zur Schlüsselableitung wie PBKDF2 zu verwenden.
Café
3

Ich weiß, dass diese Antwort gegen die Bestimmungen Ihrer Frage verstößt, aber ich denke, die richtige Antwort auf Ihre Absicht lautet einfach: Verwenden Sie den Algorithmus, der Ihnen die längste Schlüssellänge ermöglicht, und wählen Sie dann einen wirklich guten Schlüssel. Kleinere Unterschiede in der Leistung der bekanntesten Algorithmen (kryptografisch und chronologisch) werden durch einige zusätzliche Schlüsselbits überfordert.

Mike Jones
quelle
7
Ich kann nicht zustimmen. IBMs Lucifer-Chiffre (Vorgänger von DES), die als 128-Bit-Schlüssel verwendet wurde - DES (mit nur einem 56-Bit-Schlüssel) erwies sich jedoch als viel sicherer, als die differenzielle Kryptoanalyse (erneut) entdeckt wurde.
Jerry Coffin
3
Nur die Schlüssellänge zu betrachten, ist eine sehr schlechte Metrik.
Gerald Davis
2
Deshalb habe ich "am meisten angesehene Algorithmen" gesagt. Wenn Sie Blowfish 128bit als AES 128bit unterlegen betrachten, müssen Sie zustimmen, dass Blowfish 256bit AES 128bit aus dem Wasser bläst. Ebenso wichtig ist die Generierung und Verwaltung von Schlüsseln. Wenn Ihr Schlüssel "Passwort" ist, spielt es keine Rolle, welchen Algorithmus Sie verwenden. Was ich sage ist, dass das OP wahrscheinlich das Falsche betrachtet.
Mike Jones
2
In der Frage wird angegeben, dass die Schlüssel von Passwörtern abgeleitet werden. Das System durch brutales Erzwingen des Kennworts zu beschädigen, ist wahrscheinlich sehr viel einfacher als das Angreifen eines der hier genannten Algorithmen. Die Schlüssellänge spielt keine Rolle, wenn der Schlüssel von einem Passwort abgeleitet wird.
Dajames
Sie notieren meine Antwort, obwohl Sie genau das sagen, was ich getan habe? Ich sagte Schlüssellänge und wählte einen wirklich guten Schlüssel. Nach welcher Definition von "gut" würden Sie einen Schlüssel als gut betrachten, wenn er nicht alle Teile des Schlüssels ausfüllen würde?
Mike Jones
3

Beide Algorithmen (AES und Twofish) gelten als sehr sicher. Dies wurde in anderen Antworten ausführlich behandelt.

Da AES 2016 jedoch weit verbreitet ist, wurde es auf mehreren Plattformen wie ARM und x86 speziell hardwarebeschleunigt. Während AES vor der Hardwarebeschleunigung nicht wesentlich schneller als zwei Fische ist, ist es dank der dedizierten CPU-Anweisungen jetzt viel schneller.

Galinette
quelle