Menu
picture of tbs certificates
picture of tbs certificates
Les certificats
Notre gamme
Partenaires
Support
Numéro vert
Focus


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.

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 :

openssl req -new -newkey rsa:2048 -nodes -sha256 -out www.mondomaine.fr.sha256.csr -keyout www.mondomaine.key -subj "/C=FR/ST=Calvados/L=CAEN/O=TBS INTERNET/CN=www.mondomaine.fr"

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.