UTILITAIRE DE CRYPTAGE DE FICHIERS

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 - 25 juin 2012 à 19:02
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 - 27 juin 2012 à 08:41
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/54408-utilitaire-de-cryptage-de-fichiers

Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
27 juin 2012 à 08:41
*de VB excuse. Et le mode d'opération par défaut est apparemment CBC d'apres MSDN, ce qui est bon, mais il serait souhaitable de l'ajouter explicitement dans le code, au cas ou le défaut changerait.
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
27 juin 2012 à 08:34
Trois points importants:
- l'IV ne DOIT PAS etre dérivé du mot de passe, il doit etre aléatoire (et plus, dépendant du mode d'opération utilisé) - utilises le générateur pseudoaléatoire cryptographique offert par C#. Tout l'intéret d'un IV est qu'il permet de chiffrer différemment meme avec la meme clef, dans ton exemple le meme IV est toujours associé a la meme clef, ca ne sert donc a rien. Il faut générer un IV aléatoire a chaque fois et le stocker dans le fichier!!
- tu ne spécifies pas le mode d'opération utilisé pour AES - lequel est utilisé par défaut? ECB n'est pas sécure si la taille du fichier est plus grande que 16 octets.
- il faudrait ajouter un HMAC d'integrité a coté de l'IV dans le fichier pour garantir que le fichier ne soit pas modifié par un attaquant, pour obtenir ca il suffit de faire un HMAC du fichier chiffré en utilisant la clef de chiffrement comme clef (avec par exemple SHA256 ou SHA512)
alex_vino Messages postés 27 Date d'inscription jeudi 23 mars 2006 Statut Membre Dernière intervention 25 mars 2011
26 juin 2012 à 14:02
Entierement d'accord avec NHenry.

J'ai réalisé un peu pres la meme chose mais sous forme de bibliotheque facilement utilisable dans tout projet .Net,
je laissé le choix de différentes méthodes de crypto: DES, Triple DES et Rinjkaert.
De plus tu n'étais pas obligé d'enregistrer le résultat sous forme de fichier, tu pouvais faire: var secretString = CryptLib.EncryptContent("blablabla")

Par ailleurs ce serait bien de faire des tests unitaires sur ce type de projet. Par exemple si tu encrypte un fichier XML ce serait bien que le décryptage ne perde pas l'indentation et tout le tralala.
Par exemple suivant les méthodes de crypto tu es limité a un certain nombre de bits pour le mot de passse (64bits pour DES = 8 lettres).

Bonne continuation.
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
25 juin 2012 à 19:02
Bonsoir,

2 choses, je commence par la plus importante :

--------------------------------------
TU POURRAIS AU MOINS CITER TES SOURCES :
http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/1750a192-520b-4b75-b08f-48b24fd2209c/
http://stackoverflow.com/questions/9243034/how-secure-is-vb-net-rijndael-managed-encryption-or-aes
--------------------------------------

Ensuite, quitte à reprendre des codes tel quel, autant chercher à améliorer, par exemple en mettant les fonctions de cryptage dans un module pour pouvoir réutiliser facilement le code !!!

Sinon concernant le code :
Catch When Err.Number = 53

Utilises plutot le type d'erreur :
Catch Ex as Io.FileNotFoundException

Penses aussi à activer Option Strict et Option Explicit ainsi que de retirer l'import automatique de Microsoft.VisualBasic.
Rejoignez-nous