Zip mit Passwort

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

Kann man mit Python-Mitteln (keine externen Programme) auch ein Zipfile mit Passwort erstellen... und natürlich ein solches auch wieder entpacken?

Ich hab das bislang nur ohne gemacht und bin auch nicht über eine Passwort-Funktion gestolpert. Ein Beispiel wäre cool.

Achja: Wie gut ist eigentlich so ein Zip-Passwort? In 7-Zip-Dateien (.7z) soll der Verschlüsselungs-Algo wohl sehr gut sein. Angeblich ist das nur mit BruteForce zu knacken... Weiß aber nicht wie's beim "normalen" Zip ist. Und da hab ich auch schon die nächste Frage: Wie lang kann ein Zip-Passwort maximal sein? Das bestimmt ja wie lange BruteForce bräuchte und ob das dann noch Sinn macht :)
lunar

droptix hat geschrieben:Achja: Wie gut ist eigentlich so ein Zip-Passwort? In 7-Zip-Dateien (.7z) soll der Verschlüsselungs-Algo wohl sehr gut sein. Angeblich ist das nur mit BruteForce zu knacken... Weiß aber nicht wie's beim "normalen" Zip ist.
Tja, wie wäre es mit einem Abstecher zur Wikipedia

Da erfährst du alles was du brauchst...
Und da hab ich auch schon die nächste Frage: Wie lang kann ein Zip-Passwort maximal sein? Das bestimmt ja wie lange BruteForce bräuchte und ob das dann noch Sinn macht :)
Ich würde vermuten, dass es dort keine Limitierungen gibt, da Passwörter zur Verwendung als Schlüssel in der Regel gehasht werden und Hashing-Algorithmen in der Regel mit unendlich langen Eingabedaten zurecht kommen.
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

Wie ich das verstehe hat das standardmäßige Zip-Format einen extrem schlechten Passwortschutz, der einfach ausgehebelt werden kann.

Die AES-Verschlüsselung wurde von WinZip eingeführt und gilt als relativ neu, weil sie bei 7-Zip z.B. noch nicht integriert wurde (die Entwickler sind gerade dabei). Bei AES-Verschlüsselung kann man maximal 16 Byte (256 Bit) lange Passwörter für ein Zip-Archiv verwenden, also gar nicht all zu lang...

Aber mal abgesehen davon, was das Format hergibt -> Python unterstützt von Haus aus nur Deflate, also den "alten" Zip-Standard, richtig? Also kann man mit Python aktuell kein passwortgeschütztes Zip-Archiv entpacken und v.a. auch keins erstellen.

Und wenn es doch ginge, wäre der Passwortschutz wohl leicht auszuhebeln. Habe ich das richtig verstanden?
lunar

droptix hat geschrieben:Die AES-Verschlüsselung wurde von WinZip eingeführt und gilt als relativ neu, weil sie bei 7-Zip z.B. noch nicht integriert wurde (die Entwickler sind gerade dabei).
Wikipedia sieht das anders:
WinZip developed AES based standard is used also by 7-Zip but some vendors use other formats.
Auch die 7-Zip Entwickler selbst scheinen da anderer Meinung zu sein (http://www.7-zip.org/7z.html):
7-Zip supports encryption with the AES-256 algorithm. This algorithm uses a cipher key with a length of 256 bits. To create that key, 7-Zip runs a derivation function based on a SHA-256 hash algorithm. A key derivation function produces a derived key from the text password entered by the user. To increase the cost of an exhaustive search to crack a password, 7-Zip uses a large number of iterations when it produces a cipher key from a password.
Außerdem hat Winzip die Spezifikationen der AES-Verschlüsselung freigegeben.
Bei AES-Verschlüsselung kann man maximal 16 Byte (256 Bit) lange Passwörter für ein Zip-Archiv verwenden, also gar nicht all zu lang...
Das ist nonsense! Passwörter werden nie direkt als Schlüssel für Algorithmen verwendet. Man bildet vorher Hashes, und diese können von beliebig langen Eingabedaten errechnet werden. Siehe auch das Zitat von der 7-zip Website.
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

Da ich nicht der Crypt-Profi bin, frag ich ja hier nach. Trotzdem haben sich mir jetzt noch nicht die Antworten meiner Fragen erschlossen:

1) Wie sicher ist ein Zip-Archiv mit gutem Passwort?

2) Kann man mit Python-Mitteln (ohne externe Programme) sichere Zip-Archive herstellen und entpacken?
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

droptix hat geschrieben:Da ich nicht der Crypt-Profi bin, frag ich ja hier nach.
Offensichtlich ;) Aber dann formuliere deine Fragen im Interesse aller Mitlesenden auch bitte als solche und so, dass sie fälschlicherweise leicht als "...das ist der Wahrheit!" aufgefasst werden können.
droptix hat geschrieben:1) Wie sicher ist ein Zip-Archiv mit gutem Passwort?
Der ursprüngliche Ansatz ist in der Tat unlängst überwunden und stellt keinen weitreichenden Schutz dar. AES ist dagegen (nach aktuellem Wissen) mathematisch sehr sicher. Wenn die Integration in ZIP-Archive keine sonstigen Schwächen aufweist und die verwendeten Passwörter hinreichend lang und gut sind, um Dictionary- sowie nicht ewig lang ausgeführten Bruteforce-Angriffen stand zu halten, sehe ich derart verschlüsselte Archive als "sicher" an, ja.
droptix hat geschrieben:2) Kann man mit Python-Mitteln (ohne externe Programme) sichere Zip-Archive herstellen und entpacken?
Der Dokumentation des Zip-Moduls nach kann dieses das nicht. Selbst vom alten Verfahren ist da nichts zu finden (aber das ist ja eh nicht zu empfehlen). Das heißt aber nicht, dass man mit einer AES-Implementierung selbst in Pure-Python so ein Archiv erstellen kann. Eine Out-of-the-Box-Lösung ist mir jedoch nicht bekannt.
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

Ist eigentlich AES unter Python abhängig von externen Bibliotheken oder ist das fest integriert?

Hat jemand Ansätze oder eine konkrete Idee zur Realisierung zum Packen und Entpacken von Zip-Archiven mit Python und AES?

Oder aber: Hat Python noch andere Packer-Wrapper auf Lager, mit denen sich ein geschütztes, komprimiertes Archiv erzeugen lässt?
lunar

droptix hat geschrieben:Ist eigentlich AES unter Python abhängig von externen Bibliotheken oder ist das fest integriert?
Eine AES Implementierung ist nicht Bestandteil der Standardbibliothek. Man muss auf externe Pakete wie z.B. pycrypto zurückgreifen.
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

Gut, das Modul könnte ich mir einfach mit in den Ordner meines Python-(Ent)Packers legen. Aber trotzdem braucht man noch ein betriebssystemspezifisches Binary, richtig?

Den Algorithmus selbst in Python umzusetzen ist sicher ein totaler Performanceverlust, oder? Ich glaub ich bin schonmal über sowas gestolpert...
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Ich meine dass solche Algorithmen bevorzugt als C-Implementierungen für Python existieren, weil es da einfach auf die Geschwindigkeit ankommt. Möglicherweise kannst du diese aber in Form von (an die Python-Version angepassten) Eggs mitliefern oder aber eine Implementierung in Python nutzen, die es auch geben sollte. Ob das noch schnell genug ist, hängt von deinem genauen Vorhaben bzw. den Anforderungen ab. Für recht kleine Archive fällt das vielleicht gar nicht auf.
Benutzeravatar
Windtommyhoff
User
Beiträge: 32
Registriert: Donnerstag 15. März 2007, 13:01
Kontaktdaten:

Wie ist das denn? Kann man zip/rar Dateien mit Passswort über Python entpacken?!
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Binde doch die Text Version von 7zip per subprocess ein. ;)
Antworten