Certificats à Courbes Elliptiques

Mais qu’est-ce donc ?

La cryptographie à courbe elliptique utilise un chiffrement dit asymétrique.
C’est à dire que la clé de chiffrement et de déchiffrement sont différentes (Utilisation de clés privées et de clés publiques)

Mais pourquoi utiliser des courbes elliptiques ?

La sécurisation en utilisant des certificats RSA se fait de nos jours par des clés de taille au minimum de 2048 bits (Recommandation de l’ANSSI)
Le fait d’utiliser des clés aussi grosse provoque plusieurs inconvénients :

  • Les temps de calcul des algorithmes sont augmentés
  • Les serveurs demandent plus de CPU / RAM
  • La taille des échanges de paquets sur internet augmente

En utilisant les algorithmes à Courbes Elliptiques, la taille de clé recommandée par l’ANSSI est de 256 bits.
Il en ressort plusieurs avantage :

  • Les temps de calculs sont réduits (taille de clé beaucoup plus petites)
  • les paquets sont plus petits donc la navigation est plus rapide
  • Les serveurs sont plus disponibles pour effectuer d’autres actions
  • La consommation de batterie est réduite. (Intéressant pour les smartphones par exemple)

L’ANSSI recommande, lorsque les clients et serveurs supportent les algorithmes à courbes elliptiques, de les utiliser.

Équivalence

Ci-dessous un tableau comparatif entre les différents algorithmes de chiffrement et les tailles de clé :


Taille de clé RSA (en bits)


Taille de clé des Courbes Elliptiques (en bits)

1024

160

2048

224

3072

256

7680

384

15360

521

Les chiffres en gras sont les recommandations de l’ANSSI

Génération de certificat à Courbes Elliptiques

Liste de tous les types gérés par OpenSSL

Dans le but de savoir quel type de courbes elliptiques utiliser, il est possible de lister tous les types avec cette commande:
openssl ecparam -list_curves

Génération de la clé privée

openssl ecparam -genkey -name secp521r1 -out ClePrivee.pem
secp521r1 : NIST/SECG curve over a 521 bit prime field

Confirmation du type de clé générée

openssl ecparam -in ClePrivee.pem -text -noout

Visualisation du détail de la clé privée

openssl ecparam -in ClePrivee.pem -text -param_enc explicit -noout

Génération de la request

openssl req -new ClePrivee.pem -sha256 -out Request.csr
(Répondre aux différentes questions)

Génération du certificat (auto-signé)

openssl req -x509 -days 365 -sha256 -key ClePrivee.pem -in Request.csr -out Certificat.crt

Exemple d’utilisation dans un apache par exemple !

Il est possible d’intégrer ces certificats en utilisant les commandes suivantes dans un Apache.
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/Certificat.crt
SSLCertificateKeyFile /etc/apache2/ssl/ClePrivee.pem

Il est bien sûr nécessaire d’avoir le module SSL activé :
a2enmod ssl

Sébastien

Manager