Chiffrer une image
Chiffrer une image • Déchiffrer une image • Mises en garde sur le chiffrement et le déchiffrement
La plupart des images sont, par conception, faites pour être vues souvent et par de nombreuses personnes. Les images Web, par exemple, peuvent être consultées des centaines de fois par jour par une multitude de visiteurs. Cependant, dans certains cas, vous pouvez vouloir garder une image particulière privée afin que seuls vous, ou peut-être un groupe restreint d'amis ou de visiteurs Web, puissiez la voir. ImageMagick vous permet de brouiller vos images de telle sorte que, à moins de connaître votre phrase de passe, personne ne puisse voir le contenu original.
Vous pourriez utiliser un utilitaire de chiffrement pour brouiller votre image, mais ces utilitaires brouillent généralement le fichier entier, le rendant méconnaissable en tant que format d'image. Avec ImageMagick, seuls les pixels sont brouillés. L'image brouillée continue d'être reconnue comme une image et s'affichera même dans votre page Web. Cependant, le contenu apparaît comme du charabia, sans aucun rapport avec le contenu original.
Chiffrer une image
Utilisez l'option -encipher pour brouiller votre image afin qu'elle soit méconnaissable. L'option nécessite un nom de fichier contenant votre phrase de passe. Dans cet exemple, nous brouillons une image et l'enregistrons au format PNG :
magick rose.jpg -encipher passphrase.txt rose.png
Ici, nous chiffrons une image en utilisant une autre image comme phrase de passe :
magick rose.jpg -encipher smiley.gif rose.png
Déchiffrer une image
Utilisez l'option -decipher pour rétablir votre image afin qu'elle soit de nouveau reconnaissable. L'option nécessite un nom de fichier contenant votre phrase de passe. Dans cet exemple, nous rétablissons une image et l'enregistrons au format JPEG :
magick rose.png -decipher passphrase.txt rose.jpg
Mises en garde sur le chiffrement et le déchiffrement
Certains formats ne prennent pas en charge les pixels chiffrés — le format JPEG ou GIF, par exemple. Pour vous assurer que votre format d'image est pris en charge, chiffrez une image de test et vérifiez que vous pouvez en restaurer le contenu original avant de chiffrer d'autres images dans ce format.
Le format d'image peut ne prendre en charge que le 8 bits et le RVB (TrueColor). Vous pouvez donc inclure les options "-depth 8 -type TrueColor" avant le nom du fichier de sortie.
La phrase de passe peut être n'importe quelle combinaison de lettres et de symboles. Elle devrait comporter au minimum 12 caractères combinés pour aider à garantir que votre image reste privée. Veillez également à ce que les permissions du fichier de phrase de passe empêchent les autres de le lire, sinon des utilisateurs non souhaités pourraient être en mesure de voir le contenu original de l'image.
Vous ne pouvez restaurer le contenu original de l'image que si vous connaissez votre phrase de passe. Si vous la perdez ou l'oubliez, le contenu original de votre image est perdu à jamais.
ImageMagick ne brouille que les pixels de l'image. Les métadonnées de l'image restent intactes et lisibles par quiconque a accès au fichier image.
ImageMagick utilise l'AES en mode Compteur (CTR) pour brouiller les données de pixels d'une image. L'implémentation actuelle dérive de manière déterministe à la fois la clé AES et l'IV (compteur initial) à partir de la phrase de passe fournie par l'utilisateur : la première moitié de la phrase de passe devient la clé AES, et la seconde moitié est hachée avec les dimensions de l'image pour produire l'IV. Comme cet IV est dérivé uniquement de la phrase de passe et de la largeur et de la hauteur de l'image, chiffrer plusieurs images avec la même phrase de passe et les mêmes dimensions produit le même IV et donc le même flux de clés.
Le mode CTR exige un IV unique et non répété pour chaque chiffrement sous la même clé. Réutiliser un IV en mode CTR provoque la réutilisation du flux de clés, ce qui permet aux attaquants de récupérer des informations sur les textes en clair en effectuant un XOR des textes chiffrés. Pour cette raison, la construction déterministe actuelle de l'IV ne fournit pas une confidentialité cryptographiquement forte.
Pour éviter la réutilisation du flux de clés et les fuites d'informations qui en résultent, les utilisateurs devraient fournir une phrase de passe différente pour chaque image, ce qui est peu pratique et ne répond toujours pas aux attentes cryptographiques modernes. La fonction de chiffrement d'ImageMagick ne convient donc qu'à une obfuscation occasionnelle, et non à un chiffrement sensible en matière de sécurité.
Actuellement, seul ImageMagick peut restaurer le contenu de votre image chiffrée. Nous utilisons un chiffrement et un mode standard afin que d'autres fournisseurs puissent prendre en charge le contenu d'image chiffré.
Quelques petits exemples pratiques de chiffrement d'images se trouvent dans IM Examples Encrypting Image Data.