Principaux algorithmes de cryptographie et leurs usages dans TLS#
Algorithmes de chiffrement symétrique (AES, ChaCha20)#
AES (Advanced Encryption Standard)#
- Remplace DES et 3DES
- Chiffrement par bloc
- Tailles de clé : 128, 192, 256 bits
- Modes de fonctionnement : CBC, GCM, CTR
- Utilisé dans TLS pour chiffrer les données
- Commandes OpenSSL :
- Chiffrer avec AES:
openssl enc -aes-256-cbc -in file.txt -out file.aes
- Déchiffrer avec AES :
openssl enc -aes-256-cbc -d -in file.aes -out file.txt
- Chiffrer avec AES:
ChaCha20#
- Alternative rapide à AES, conçu par Daniel J. Bernstein
- Chiffrement de flux pour améliorer les performances
- Utilisé avec Poly1305 pour l'authentification et l'intégrité
- Pris en charge dans TLS 1.3
- Commandes OpenSSL
- Chiffrer avec ChaCha20:
openssl enc -chacha20 -in file.txt -out file.chacha20
- Déchiffrer avec ChaCha20 :
openssl enc -chacha20 -d -in file.chacha20 -out file.txt
- Chiffrer avec ChaCha20:
Algorithmes de chiffrement asymétrique (RSA, ECC)#
RSA (Rivest-Shamir-Adleman)#
- Algorithme de chiffrement asymétrique le plus répandu
- Cryptosystème largement utilisé depuis les années 1970
- Utilisé pour l'échange de clés et la signature numérique
- Tailles de clé recommandées : 2048, 3072, 4096 bits
- Commandes OpenSSL
- générer une clé privée RSA (ancien) :
openssl genrsa -out private_key.pem 2048
- générer une clé privée RSA (nouveau) :
openssl genpkey -algorithm RSA -out private_key.pem
- extraire une clef publique RSA :
openssl rsa -pubout -in private_key.pem -out public_key.pem
- générer une clé privée RSA (ancien) :
ECC (Elliptic Curve Cryptography)#
- Alternative plus rapide et plus sécurisée à RSA
- Courbes recommandées : P-256 (secp256r1), P-384 (secp384r1), P-521 (secp521r1)
- Utilisé pour l'échange de clés (ECDHE) et la signature numérique (ECDSA) dans TLS
- Commandes OpenSSL
- Générer une clé ECC:
openssl ecparam -genkey -name prime256v1 -out private_key.pem
- Générer une clé ECC:
openssl ecparam -genkey -name prime256v1 -noout -out private_key.pem
- Générer une clé ECC:
Attention, avec l'option -noout, les parametres de la courbe ne sont pas inclus dans le fichier final (peut être nécessaire pour certains utils utilisant la clef générée).
Algorithmes d'échange de clés (Diffie-Hellman, ECDHE)#
Diffie-Hellman (DH)#
- Permet l'établissement d'une clé secrète partagée entre deux parties
- Utilisé dans TLS pour sécuriser l'échange de clés
- Commandes OpenSSL :
- Générer des paramètres DH:
openssl dhparam -out dhparams.pem 2048
- Générer des paramètres DH:
ECDHE (Elliptic Curve Diffie-Hellman Ephemeral)#
- Variante de DH utilisant l'ECC
- Plus rapide et plus sécurisé que DH
- Utilisé dans TLS pour assurer la confidentialité persistante (PFS)
- Utilisé dans TLS pour l'échange de clés avec les certificats ECC
- Commandes OpenSSL
- Générer des paramètres ECDH:
openssl ecparam -name prime256v1 -out ecparams.pem
- Générer des paramètres ECDH:
Algorithmes de signature numérique (DSA, ECDSA, EdDSA)#
DSA (Digital Signature Algorithm)#
- Algorithme de signature numérique basé sur le problème du logarithme discret
- Utilisé dans TLS pour l'authentification et l'intégrité
ECDSA (Elliptic Curve Digital Signature Algorithm)#
- Version ECC de DSA
- Plus rapide et plus sécurisé que DSA
- Utilisé dans TLS avec les certificats ECC pour l'authentification des parties
- Courbes recommandées : P-256 (secp256r1), P-384 (secp384r1), P-521 (secp521r1)
- Commandes OpenSSL :
- Générer une clé privée ECDSA:
openssl ecparam -genkey -name secp256r1 -out private_key.pem
- Extraire la clé publique ECDSA:
openssl ec -in private_key.pem -pubout -out public_key.pem
- Générer une clé privée ECDSA:
EdDSA (Edwards-curve Digital Signature Algorithm)#
- Variante d'ECDSA utilisant des courbes de Edwards basé sur les courbes de Schnorr et les courbes elliptiques,
- Offre de meilleures performances et une sécurité renforcée
- Ed25519 et Ed448 sont les courbes couramment utilisées
- Supporté dans TLS 1.3 pour l'authentification des parties
- Commandes OpenSSL :
- Générer une clé EdDSA:
openssl genpkey -algorithm ed25519 -out private_key.pem
- Générer une clé EdDSA:
- Voir aussi : libsodium (https://doc.libsodium.org/)