Il n'est pas conseillé de crypter un très gros fichier à l'aide de smime, car il se peut que vous puissiez crypter de gros fichiers à l'aide de l'option -stream, mais que vous ne puissiez pas décrypter le fichier résultant en raison de limitations matérielles. voir : problème de décryptage de gros fichiers
Comme indiqué plus haut, la cryptographie à clé publique ne permet pas de crypter des fichiers de longueur arbitraire. Par conséquent, les commandes suivantes vont générer une phrase de passe, crypter le fichier en utilisant le cryptage symétrique et ensuite crypter la phrase de passe en utilisant le cryptage asymétrique (clé publique). Remarque : le smime prévoit l'utilisation d'une clé publique primaire et d'une clé de secours pour chiffrer la phrase de passe. Il serait prudent de disposer d'une paire de clés publiques/privées de secours.
Génération de mots de passe aléatoires
Configurer la valeur RANDFILE à un fichier accessible par l'utilisateur actuel, générer le fichier passwd.txt et nettoyer les paramètres.
export OLD_RANDFILE=$RANDFILE
RANDFILE=~/rand1
openssl rand -base64 2048 > passwd.txt
rm ~/rand1
export RANDFILE=$OLD_RANDFILE
Cryptage
Utilisez les commandes ci-dessous pour chiffrer le fichier en utilisant le contenu de passwd.txt comme mot de passe et AES256 vers un fichier base64 (option -a). Cryptez le fichier passwd.txt en utilisant le cryptage asymétrique dans le fichier XXLarge.crypt.pass en utilisant une clé publique primaire et une clé de sauvegarde.
openssl enc -aes-256-cbc -a -salt -in XXLarge.data -out XXLarge.crypt -pass file:passwd.txt
openssl smime -encrypt -binary -in passwd.txt -out XXLarge.crypt.pass -aes256 PublicKey1.pem PublicBackupKey.pem
rm passwd.txt
Décryptage
Le décryptage décrypte simplement le XXLarge.crypt.pass en passwd.tmp, décrypte le XXLarge.crypt en XXLarge2.data, et supprime le fichier passwd.tmp.
openssl smime -decrypt -binary -in XXLarge.crypt.pass -out passwd.tmp -aes256 -recip PublicKey1.pem -inkey PublicKey1.key
openssl enc -d -aes-256-cbc -a -in XXLarge.crypt -out XXLarge2.data -pass file:passwd.tmp
rm passwd.tmp
Ceci a été testé contre des fichiers de plus de 5 Go
5365295400 Nov 17 10:07 XXLarge.data
7265504220 Nov 17 10:03 XXLarge.crypt
5673 Nov 17 10:03 XXLarge.crypt.pass
5365295400 Nov 17 10:07 XXLarge2.data