PKI - Utilisation du champ SAN par Chrome

Google vient de procéder à deux changements importants dans son navigateur Chrome.

CN vs SAN

L’utilisation du champ « Common Name » dans les certificats est déprécié depuis plus de 2 ans et remplacé par le champ « Subject Alternative Name » ou « SAN », mais tout le monde continue d’utiliser les deux champs 😉.
La majorité des autorités de certification font les 2 depuis des années, mais il faut être vigilant, car cela peut causer un problème pour les utilisateurs.
Par contre, cela ne concerne évidemment que les certificats ayant pour vocation d'être utilisés avec le navigateur Chrome, donc prouvablement des sites web.
Google a donc décidé de supprimer le support de champ dans les certificats à partir de Chrome 58.
Il est possible de réactiver la fonctionnalité mais est-ce raisonnable ? Sachant que cela sera supprimé complètement à partir de Chrome 65...

Le PunyCode est puni

Autre changement important, l’affichage du PunyCode dans la barre d’adresse du navigateur Chrome.
Google se positionnant comme le sauveur de l'humanité (et de l’univers ?), ils ont fait ce changement pour des raisons de sécurité.
Ils souhaitent se prémunir des astuces consistant à écrire un nom de domaine normal avec des caractères internationalisés. Ces attaques sont aussi appelées « homographes ».
Bien qu’assez ancienne, l’astuce a été remise au gout du jour avec un article expliquant comment usurper epic.com et apple.com.

L'exemple le plus simple est celui d'Apple, dont le domaine peut être écrit en caractères cyrilliques car certaines lettres sont visuellement proches.
Pour Apple écrit en cyrillique, le navigateur affichera https://www.аррӏе.com mais techniquement, le navigateur utilisera la version PunyCode ou ACE suivante : https://www.аррӏе.com

Cela fonctionne car nous utilisons :

  • le « а » Russe qui ressemble à un « a » latin ;
  • le « r » Russe qui s’écrit « р » et ressemble à un « p » latin ;

L’attaque consiste ensuite à créer un faux site aux couleurs d’une cible mais avec un nom de domaine en cyrillique, grec ou autre, afin de tromper sa victime. Voici un exemple avec NetXP, même si c’est moins discret : www.петхр.com

Google a donc décidé de ne plus afficher le nom en caractères internationalisés pour les domaines dont l'extension ou TLD (Top Level Domain) n'est pas lui-même internationalisé (IDN / Internationalized Domain Name). Je sais que ce n’est pas hyper clair dit comme cela 😉.

Nous aurons donc 3 cas :

  • Un domaine en latin, avec une extension (TLD) en latin et Chrome ne changera pas son comportement, comme pour le vrai https://www.apple.com
  • Un domaine en PunyCode, avec une extension (TLD) en latin et là, Chrome n’affichera plus la version internationalisée mais le vrai nom technique ou PunyCode suivant : https://www.аррӏе.com
  • Un domaine en PunyCode, avec une extension internationalisée comme .рф pour la Russie et là, Chrome ne changera pas son comportement en affichant la version internationalisée : https:// www.аррӏе.рф au lieu de la version technique ou PunyCode suivant https://www.аррӏе.рф