3 votes

Stockage de fichiers cryptés dans une base de données

J'utilise PyCrypto pour stocker des fichiers dans une base de données SQLITE.

J'utilise 4 champs :
le nom du fichier,
la longueur du fichier (en octets)
le hachage SHA512 du fichier
le fichier crypté (avec AES et ensuite base64 vers ASCII).

J'ai besoin que tous les champs affichent des informations sur le fichier sans le décrypter.

La question est la suivante : est-il sûr de stocker les données de cette manière ?
Par exemple, les premiers caractères d'un fichier ZIP, ou d'un fichier exécutable sont toujours les mêmes, et si vous connaissez déjà le hash et la longueur du fichier ... est-il possible de décrypter le fichier, peut-être partiellement ?

Si ce n'est pas sécurisé, comment puis-je stocker des informations sur le fichier pour indexer les fichiers sans les décrypter ? (informations telles que la longueur, le hachage, le nom, les balises, etc.)

(J'utilise python, mais vous pouvez donner des exemples dans n'importe quel langage)

3voto

Eli Bendersky Points 82298

Les données cryptées avec AES ont la même longueur que les données en clair (à quelques blocs près), de sorte que le fait de donner la longueur originale ne nuit pas à la sécurité. SHA512 est un hachage cryptographique puissant. conçu pour fournir des informations minimales sur le contenu original, donc je ne vois pas de problème ici non plus.

Par conséquent, je pense que votre plan est assez sûr. Toute information "exposée" par ce système est négligeable. La gestion des clés sera probablement une préoccupation bien plus importante de toute façon.

1voto

Demento Points 1704

Pour éviter tout problème lié au fait que les premiers octets sont identiques, vous devez utiliser AES en mode de chiffrement par blocs avec un IV aléatoire. Ainsi, même si le premier bloc (dont la longueur dépend de la taille de la clé) de deux fichiers chiffrés est exactement le même, le texte chiffré sera différent.

Si vous faites cela, je ne vois aucun problème avec votre approche.

1voto

Rook Points 34698

Tu ne peux pas juste dire "oah c'est AES-256 bien sûr que c'est sécurisé". Juste par votre post je peux voir que vous confondez les attaques contre les ciphers de flux et les ciphers de bloc, donc vous devriez probablement NO de mettre en œuvre cette mesure avant d'avoir réellement fait des recherches sur le sujet.

Ceci étant dit, vous devez lire modes de fonctionnement du cryptage par blocs . L'ensemble du CWE-310 famille. Ça ne ferait pas de mal de prendre une copie de cryptographie pirate. Après tout ça, il y a encore beaucoup de place pour que tu fasses tout foirer.

Une vraie solution : UTILISER L'IMPLÉMENTATION DE QUELQU'UN D'AUTRE .

0voto

MarkR Points 37178

Vous devez vraiment réfléchir aux attaques contre lesquelles vous voulez vous protéger, ainsi qu'aux ressources des attaquants potentiels.

En général, le stockage de certaines données cryptées n'est utile que s'il répond à vos besoins précis. En particulier, s'il existe un moyen pour un attaquant de compromettre la clé en même temps que les données, alors le cryptage est effectivement inutile.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X