Thread Dateien und Ordner mit Blowfish verschlüsseln... Crypt::Blowfish? (10 answers)
Opened by Nordlicht at 2012-03-21 05:03

murphy
 2012-03-21 15:11
#156974 #156974
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Du kannst eine Datei einfach in einen String einlesen, selbigen verschlüsseln und dann wieder in eine Datei schreiben. Wenn Du mehrere Dateien verschlüsseln willst, kannst Du sie in ein Archiv verpacken und dieses verschlüsseln.

Generell ist zur Verschlüsselung von Dateien oder anderen größeren strukturierten Datenmengen folgendes anzumerken:

Zum einen sollte man die Daten unbedingt komprimieren, bevor man sie verschlüsselt, denn das vergrößert die anscheinende Entropie des Klartextes und erschwert Angriffe, die bekannte Klartextbestandteile auszunutzen versuchen, was bei Dateien, die oft gleichbleibende Strukturen wie Kopfdaten enthalten, besonders wichtig ist.

Zum anderen darf man auf gar keinen Fall den gleichen Schlüssel mehrfach für verschiedene Daten verwenden, damit macht man jedes Verschlüsselungsverfahren deutlich unsicherer. Den gleichen Schlüssel für zu große Datenmengen zu verwenden ist auch problematisch. Daher ist es wichtig, für eine Blockverschlüsselung den richtigen Betriebsmodus zur Verschlüsselung großer Datenmengen zu wählen. Wenn man nicht Teile des verschlüsselten Datensatzes getrennt vom Rest austauschen können muss, wie das zum Beispiel bei einem verschlüsselten Dateisystem der Fall wäre, sondern nur den gesamten Datensatz wieder entschlüsseln können muss, wie es bei einem verschlüsselten Archiv möglich wäre, dann ist z.B. der CBC-Modus eine bewährte Alternative.

Schließlich sollte man für eine symmetrische Verschlüsselung wie Blowfish natürlich einen möglichst zufälligen Schlüssel wählen, das heißt z.B., dass es eine ganz blöde Idee ist, irgendein Passwort direkt als Schlüssel zu verwenden, ohne es zunächst durch einen Schlüsselableitungsalgorithmus zu schicken. Und wenn es auch nur eine gewisse Wahrscheinlichkeit gibt, dass man jemals das gleiche Passwort wiederverwendet, dann sollte man den Schlüsselableitungsalgorithmus oder den Verschlüsselungsalgorithmus (je nachdem welches der Verfahren dafür ausgelegt ist) mit einem Initialisierungsvektor aus echten Zufallsdaten salzen.

Übrigens empfiehlt der Erfinder von Blowfish ja, diesen Algorithmus nicht mehr zu verwenden. Ich persönlich würde, wenn ich ein ähnliches Design aber doch einen moderneren Algorithmus haben wollte, Twofish hernehmen. Man kann aber natürlich auch einen der anderen AES-Finalisten nutzen, zum Beispiel wäre Serpent wegen seiner hohen Geschwindigkeit bei einer Implementation in Software interessant.
When C++ is your hammer, every problem looks like your thumb.

View full thread Dateien und Ordner mit Blowfish verschlüsseln... Crypt::Blowfish?