2010-03-05 5 views
6

Nous avons une application basée sur le serveur client qui enregistre les données relatives à l'utilisateur dans un fichier zip et définit le passwd au fichier zip par programmation. Je me demandais simplement si cela pouvait être considéré comme sécurisé. Remerciements NFichier Zip avec sécurité passwd?

Répondre

13

Le chiffrement "classique" pour les fichiers Zip est considéré comme faible. Il est cassable, rapidement, par des méthodes connues. Voir: "A Known Plaintext Attack on the PKZIP Stream Cipher" pour l'article original, par Biham et Kocher, de 1994. Oui, il y a 16 ans.

Plus récemment, il y a eu d'autres exploits décrits, par exemple, le papier Yet another Plaintext Attack on ZIP's Encryption Scheme (WinZIP) dit qu'un fichier crypté-zip classique avec 3 entrées et créé par WinZip, peut être craqué en 2 heures sur un « pentium ». Cela était basé sur un exploit d'une faiblesse dans le générateur de nombres aléatoires alors en cours WinZip v9.0 outil. Je suis sûr que cela irait beaucoup plus vite maintenant, sur les processeurs actuels, mais en même temps, je suis assez sûr que WinZip, maintenant à la v12.0, a résolu ce problème dans leur générateur de nombres aléatoires. Néanmoins, même sans l'exploit spécifique à WinZip-v9, le cryptage ZIP classique reste faible.

Ce faible cryptage zip qui a été fissuré est également connu comme « le cryptage postal 2.0 » ou « chiffrement pkzip ».

De nombreuses boîtes à outils ZIP modernes prennent également en charge le cryptage AES des entrées ZIP. Ceci est considéré comme un cryptage fort, et est assez sécurisé (** Voir note). WinZip, XCeed et DotNetZip sont trois de ces outils qui prennent en charge la lecture et l'écriture de fichiers zip avec ce niveau de cryptage. Parmi les trois, DotNetZip est la seule option gratuite.

Vous n'avez pas mentionné la bibliothèque que vous utilisez pour produire le programme fichier zip. Si vous utilisez DotNetZip, la production d'un fichier ZIP AES-crypté en C# est aussi facile que cela:

using (var zip = new ZipFile()) 
{ 
    zip.AddFile("MySensitiveFile.doc"); 
    zip.Encryption = EncryptionAlgorithm.WinZipAes128; 
    zip.Password = "Very.Secret!"; 
    zip.Save("MyEncryptedArchive.zip"); 
} 

** Note: Yoshi a publié un document intitulé Attacking and Repairing the WinZip Encryption Scheme, décrivant les exploits de la cryptage AES de WinZip pour soutenir que le cryptage AES de WinZip n'est pas sécurisé.Cependant, les exploits qu'il décrit reposent sur l'ingénierie sociale ou sur des compromis antérieurs ou les deux. Par exemple, l'exploit principal décrit dans l'article implique un attaquant interceptant le fichier zip chiffré, le modifiant, envoyant la copie modifiée à son destinataire, demandant au destinataire de tenter de le décrypter , puis renvoie le résultat de ce chiffrement à l'attaquant, qui peut ensuite déchiffrer le fichier d'origine. Ce soi-disant «exploit» implique de nombreux sauts de foi, empilés sur le compromis précédent de la communication interceptée dans les deux sens. Personne n'a décrit d'exploits structurels de WinZip AES, à égalité avec les exploits de cryptage classique ZIP.

+0

J'ai la même situation de base l'OP a et nous voulons être sûr que l'utilisateur ne peut pas accéder au zip fichier sur la machine même si le logiciel fonctionne sur leur machine. Dans ce cas, ne peuvent-ils simplement décompiler l'exectuable pour obtenir le "Very.Secret!" mot de passe? Nous sommes actuellement seulement protégés par mot de passe avec le cryptage "classique" et voulons commencer à utiliser DotNetZip. – CincinnatiProgrammer

+1

@PaulBrown - eh oui, c'est un risque si vous codez le mot de passe dans le programme qui produit le zip. Normalement, ce n'est pas un problème. Dans le design typique, l'application de création de zip demanderait un mot de passe à un utilisateur, n'utiliserait ce mot de passe que lors de la création de la fermeture éclair, puis rejetterait le mot de passe par la suite. Dans ce cas, la décompilation de l'exe ne récupèrerait pas le mot de passe. Si vous ne pouvez pas demander le mot de passe à l'utilisateur, vous pouvez le remplacer par une autre étape analogue, par exemple "demander" un mot de passe distant, via une légende REST, pour un mot de passe, et l'utiliser. – Cheeso

+0

"nous voulons être sûrs que l'utilisateur ne peut pas accéder au fichier zip sur la machine même si le logiciel tourne sur sa machine" <- C'est impossible. Tant que le logiciel contient les informations requises pour déchiffrer le fichier, l'utilisateur peut déchiffrer le fichier. – Antimony

0

Secure à quel niveau? Il y a des programmes qui peuvent tracer très rapidement le cryptage du mot de passe sur un fichier zip, donc s'il doit supporter n'importe quel effort, alors non.

Si c'est juste une question de faire en sorte que quelqu'un avec un mot de passe peut l'ouvrir et de tenir à l'écart des regards indiscrets occasionnels, alors peut-être.

Si vous voulez avoir une certaine sécurité à mi-chemin raisonnable je regarderais en remonte la fermeture éclair les données et puis en cours d'exécution par le logiciel de cryptage approprié comme GPG.

0

Vous devriez vous poser quelques questions.

  • Où stockez-vous les fichiers zip?
  • Quelles sont les autorisations associées au fichier zip?
  • Est-ce le mot de passe d'un de mots de passe?

Habituellement, il est une bonne habitude de stocker des données de l'utilisateur dans un dossier qui est sur du Webroot, ne sont pas directement accessibles. Les générateurs de mot de passe sont également disponibles et ils devraient être utilisés.

2

utilisation 7zip, qui a une meilleure sécurité par mot de passe - et cochez également l'option Crypter les noms de fichiers '

+0

Est-ce que cela affaiblit l'archive si les noms de fichiers ne sont pas cryptés? (sauf que vous pouvez voir les noms) – ItsmeJulian

+0

@Julianemailde les noms de fichiers visibles peuvent donner des indices qui pourraient aider une attaque de style dictionnaire sur les fichiers eux-mêmes – SteelBytes

Questions connexes