Tout sur les algorithmes de hachage SHA1, SHA2 et le SHA256
Le SHA256, proposé par TBS CERTIFICATS depuis 2008, remplacera dans les années à venir le SHA1. Mais qu'est-ce que le SHA ?
Le SHA
Le SHA - secure hash algorithm - est un algorithme de hachage utilisé par les autorités de certification pour signer certificats et CRL (certificate revocation list). Introduit en 1993 par la NSA avec le SHA0, il est utilisé pour générer des condensats uniques (donc pour "hacher") de fichiers.
Exemple : Un fichier haché en SHA1 pourrait donner :
752c14ea195c369bac3c3b7896975ee9fd15eeb7
Comme toute solution cryptographique, le SHA se doit d'évoluer en même temps que les capacités de calcul de nos ordinateurs et éviter de devenir vulnérable.
Il existe donc plusieurs versions de SHA : SHA0 (obsolète puisque totalement vulnérable), SHA1 (actuellement le plus utilisé), SHA2 (qui nous intéresse) et enfin le tout dernier SHA3 né en 2012.
Le SHA2
Le SHA2, encore peu répandu, est le successeur de SHA1 et comprend 4 types de hash : SHA224, SHA256, SHA384 et SHA512.
Il fonctionne sur le même principe que SHA1 mais est plus résistant aux attaques et donne un condensat plus long.
Les attaques hash, le SHA1 et le SHA2
Il existe 2 types d'attaques spécifiques à SHA :
- La collision : une collision se produit lorsque 2 fichiers différents produisent le même condensat. Dans ce cas il est alors possible de substituer un fichier à un autre. Dans notre secteur on pourrait dès lors imaginer remplacer un certificat officiel par un autre produisant les même valeurs de hash. SHA0 est vulnérable à la collision, c'est la raison pour laquelle il n'est plus utilisé aujourd'hui.
- la pré-image : Il faut distinguer la pré-image et la pré-image secondaire. La première consiste à déterminer la valeur d'un fichier à partir de son condensat. La seconde à utiliser un condensat pour produire une valeur différente de celle à l'origine du hash.
Où se placent SHA1 et SHA2 dans tout ça ?
Bien qu'aucune collision complète n'ai abouti avec SHA1, l'évolution des capacités de calculs rendra bientôt la chose possible. SHA2 est quant à lui totalement hermétique à la collision, il est donc temps de passer à SHA2 !
Les nouvelles normes / recommandations des autorités de certification / SHA1 déprécié
Sachez que le SHA1 est en cours de dépréciation par les navigateurs Internet (Internet Explorer, Google Chrome, ...) et que la date butoire prévue pour sa disparition est à ce jour le 31/12/2016. A ce titre, les autorités de certifications avec lesquelles nous travaillons n'émettent plus de certificats SHA1 qui expireraient après cette date.Pour aller plus loin
L’algorithme de hachage SHA256 n’intervient pas dans le processus de chiffrement / authentification, sinon que l’outil (navigateurs, clients messagerie, serveurs, …) doit savoir lire / déchiffrer ce type de hash inscrit dans le certificat lors du processus de connexion / authentification.- Si vous installez un certificat SHA256 sur un client (authentification forte par certificat),
il faut donc s’assurer que le client (navigateurs, webservices, ...) et le serveur sont compatibles,
même si le serveur continue à utiliser un certificat signé en SHA1 / MD5. - Si vous installez un certificat SHA256 sur le serveur, alors tous les clients qui se connectent (navigateurs, clients mails, webservices, ...) et le serveur doivent être compatibles avec l'algorithme de hashage SHA256.
- Si vous utilisez un certificat SHA256 pour la signature d'emails ou de documents seuls les outils de lecture du mail ou du document doivent être compatible.
- Certificats signés en SHA-256
- Notre offre de certificats SSL SHA-256
- Navigateurs supportant les certificats SHA-256
- Serveurs supportant les certificats SHA-256
- Les certificats SSL RGS*
OpenSSL et le SHA256
Par défaut, les outils open source de cryptographie OpenSSL sont configurés pour signer en SHA1.
Par exemple, si vous souhaitez générer une demande de certificat (CSR : Certificate Signing Request) signée en SHA256,
il vous suffit d'ajouter dans la ligne de commande -sha256, comme ceci :
Notez : Pour ce faire vous aurez besoin d'un OpenSSL version 0.9.8o minimum.
Décrypter un certificat SSL :
openssl x509 -text -in [chemin_vers_votre_fichier_certificat]Vérifiez alors le champ "Signature Algorithm" généralement il indiquera soit "sha1WithRSAEncryption" ou "sha256WithRSAEncryption".
Liens utiles
Vérifiez l'installation de votre certificat grâce à CO-PiBot :
Sur votre page statut du certificat, dans votre espace client chez TBS CERTIFICATS, vous y trouverez un bouton "Vérifier votre certificat" pour tester la bonne installation de votre certificat.- SHA1 : Dépréciation de l'algorithme SHA1 prévue en 2015, 2016, 2017 ?
- Racines SHA1 - cas des serveurs renvoyant la racine
- Disparition de SHA1 : quelle est la situation ?
- Navigateurs supportant les certificats SSL avec l'algorithme de hachage SHA256
- Serveurs supportant les certificats SSL avec l'algorithme de hachage SHA256
- Chaine de certification discordante avec l'algorithme de hashage du certificat
- Cas des servers renvoyant une racine SHA1
- Mettre plusieurs certificats SSL sur la même machine / IP : TLS SNI
- Générer un CSR en SHA256