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é :
|
|
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