Recent Changes - Search:

Accueil

OpenSSL

SyncML

Apache Portable Runtime

Libxml2

Net-snmp

CUrl

Boost

Perl

ZLib

Samba

VPN

Serveurs de messagerie

edit

OpenSSL/Openssl-enc-aes

6. Le chiffrement par clef symétrique

Le chiffrement par clef symétrique est aujourd'hui le seul moyen efficace pour protéger de gros volumes de données.
Ce type de chiffrement est rapide et certains protocoles sont extrémement sûres à condition de savoir les utiliser (Why Word and Excel password protection isn't safe)

Je me concentrerai sur l'utilisation du protocole AES avec padding CBC qui est à ce jour le plus performant, la NSA préconise d'ailleur l'utilisation de clefs AES-192 pour ses documents classifiés TOP SECRET.

Chiffrement d'un fichier

Le chiffrement AES en mode CBC nécessite un vecteur d'initalisation, ce vecteur comme son nom l'indique initialise la chaîne de chiffrement CBC. Attention, ce vecteur doit être changé avant chaque cryptage !

openssl enc -e -a -aes-128-cbc -iv "0123" -in test.txt -out test.enc
enter aes-128-cbc encryption password:
Verifying - enter aes-128-cbc encryption password:

Le fichier c:\test.enc contient la version cryptée et encodée base64 du fichier source c:\test.txt. Son contenu ressemble à ceci :

U2FsdGVkX1+tuRoL2T/JwgAx+tW0L4TBllITKCUV5LS6bdfNRvXJL9+wHWdRhYHI
VFfc1+KDcDCi2Koxo+FmjgOpgj7gjUiNMGN0+laYXWqdSKlNz5Y4mfJdA1QdjQ9/

Déchiffrement du fichier

openssl enc -d -a -aes-128-cbc -iv "0123" -in test.enc
enter aes-128-cbc decryption password:
<Domains Timestamp="3"><Domain Name="DOIN7L9R" Timestamp="3"/></Domains>

Remarques

Le vecteur d'initialisation doit être obligatoirement joint avec les données chiffrées car sans lui impossible de les déchiffrer mais il n'est pas nécessaire de le protéger car il joue le rôle du Salt (utilisé par d'autres protocoles) et ne fait qu'ajouter de l'entropie au processus.

Pour conclure, les curieux remarqueront que deux itérations de chiffrement avec les mêmes paramètres ne donnent pas les mêmes résultats. L'explication est que la fonction enc d'Openssl est partagée avec d'autres protocoles et que la clef de chiffrement fournie est conjugée avec un salt différent à chaque itération de chiffrement.

openssl enc -d -a -aes-128-cbc -iv "0123" -v -in test2.enc -p
enter aes-128-cbc decryption password:
salt=CAACA451B7306B82
key=9FE59A376A87D5E6C049899E3697BC63
iv =01230000000000000000000000000000
<Domains Timestamp="3"><Domain Name="DOIN7L9R" Timestamp="3"/></Domains>
bytes read : 130
bytes written: 74

Il est possible de désactiver ce Salt (-nosalt) car cette fonctionnalité est couverte par l'IV qui doit changer à chaque itération mais cela n'est pas nécessaire car autant conserver ceinture et bretelles !

Edit - History - Print - Recent Changes - Search
Page last modified on March 05, 2009, at 03:05 PM