Aller au contenu

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

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

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

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

ℹ️ 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

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

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

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
  • Voir aussi : libsodium (https://doc.libsodium.org/)