Skip to main content

[Debian] OpenSSL

Introduction

Openssl est une bibliothèque standard de chiffrement disponible sur les systèmes Unix.

image.png

Chiffrement de fichier

Vous pouvez chiffrer un fichier en AES-256-CBC avec un mot de passe grâce à la commande suivante :

openssl enc -aes-256-cbc -salt -pbkdf2 -in <INPUT_FILE> -out <OUTPUT_FILE> -base64 -k <PASSPHRASE>

Et pour déchiffrer :

openssl enc -d -aes-256-cbc -pbkdf2 -in <INPUT_FILE> -out <OUTPUT_FILE> -base64 -k <PASSPHRASE>

Pour créer une paire de clés publique/privée RSA puis chiffrer un fichier avec, on peut utiliser openssl.

Tout d'abord, générez la paire de clés :

  • Clé privée :
openssl genpkey -algorithm RSA -out priv.pem -aes-256-cbc -pass pass:mypass
  • Clé publique :
openssl rsa -pubout -in key.pem -out pub.pem -passin pass:mypass

Puis chiffrez un fichier avec la clé publique :

openssl pkeyutl -encrypt -inkey pub.pem -pubin -in plain.txt -out cypher.enc && openssl base64 -in cypher.enc -out cypher.enc.base64

Puis pour déchiffrer avec la clé privée :

openssl base64 -d -in cypher.enc.base64 -out cypher.enc && openssl pkeyutl -decrypt -inkey priv.pem -in cypher.enc -out plain_decrypted.txt

Échange de clé

On peut utiliser Diffie Hellman pour échanger des clés.

Pour cela, commencez par créer un paramètre DH :

openssl genpkey -genparam -algorithm DH -out dhp.prem

Puis on peut générer une première clé :

openssl genpkey -paramfile dhp.pem -out dhkey1.pem

On peut afficher les informations de cette clé :

openssl pkey -in dhkey1.pem -text -noout

Et on peut créer une deuxième clé :

openssl pkey -in dhkey1.pem -pubout -out dhpub1.pem

On peut afficher les informations de cette clé :

openssl pkey -pubin -in dhpub1.pem -text

On peut ensuite créer une dérivation de ces clés :

openssl pkeyutil -derive -inkey dhkey1.pem -peerkey dhpub1.pem -out secret1.bin
openssl pkeyutil -derive -inkey dhkey2.pem -peerkey dhpub2.pem -out secret2.bin

On peut ensuite comparer les deux secrets et s'apercevoir qu'ils sont identiques :

cmp secret1.bin secret2.bin

Génération de clés ECC

Les clés ECC suivent les courbes elliptiques ce qui permet une taille de clé réduite en conservant un bon niveau de sécurité.

Création d'une clé ECC

openssl ecparam -genkey -name prime256v1 -out ecc.key

Demande de certificat

openssl req -new -sha256 -key ecc.key -nodes -out ecc.csr

Signer le certificat

Ici nous allons auto-signer le certificat, si vous utilisez une autorité de certification (CA), utilisez la clé privée du CA :

openssl req -x509 -sha256 -days 365 -key ecc.key -in ecc.csr -out ecc.crt

Extraire la clé publique

openssl ec -in net-sec.key -pubout