Contexte et objectifs

Unicode regroupe plus de 150 000 caractères couvrant l’ensemble des systèmes d’écriture. Cette diversité crée des vecteurs d’attaque lorsqu’un programme accepte des chaînes Unicode sans contrôle. Le rapport UTS‑39, intitulé « Unicode Security Mechanisms », précise les mesures à appliquer pour réduire les risques d’ambiguïté et de spoofing, notamment dans les URL, les noms de domaine internationalisés (IDN) et les adresses e‑mail.

Profils de sécurité pour les identifiants

Le document introduit plusieurs profils : le General Security Profile for Identifiers (section 3.1), le IDN Security Profile (section 3.2) et le Email Security Profile (section 3.3). Chaque profil définit une liste de caractères autorisés. Une implémentation conforme doit soit appliquer la liste telle quelle (clauses UTS‑39‑C1‑1, C1.1‑1, C1.2‑1), soit publier une liste précise d’ajouts ou de suppressions (clauses C1‑2, C1.1‑2, C1.2‑2). Cette approche garantit que les développeurs savent exactement quels points de code peuvent introduire de nouveaux risques.

Détection de confusions et de scripts mixtes

Les sections 4 et 5 décrivent les fonctions de Confusable Detection (clause C2) et de Mixed‑Script Detection (clause C3). La fonction de détection de confusables compare un identifiant à une table de mappings Unicode qui associe des caractères visuellement similaires (par exemple, le latin « A » et le cyrillique « А »). Une implémentation conforme doit suivre la spécification exacte (C2‑1) ou fournir une table modifiée (C2‑2). La détection de scripts mixtes identifie les séquences contenant des caractères provenant de plusieurs scripts, ce qui empêche les attaques de type « homoglyph » où un nom de domaine combine latin et grec pour tromper l’utilisateur.

En complément, les clauses C4 et C5 imposent la détection des Restriction‑Levels (section 5.2) et des Mixed‑Number (section 5.3). Les niveaux de restriction classifient les caractères selon leur permissivité dans différents contextes (par ex. niveau 1 : uniquement caractères ASCII, niveau 2 : caractères de scripts uniques, etc.). La détection de nombres mixtes empêche l’injection de chiffres provenant de scripts différents qui pourraient être interprétés de façon inattendue par des parseurs numériques.

Conformité et mise en œuvre

Pour revendiquer la conformité, un produit doit déclarer son alignement avec chaque clause pertinente. Les variantes C‑1 à C‑5 offrent deux voies : adhérer strictement à la spécification ou publier une description détaillée des écarts. Cette double option facilite l’intégration dans des environnements où des caractères supplémentaires sont requis (par ex. langues minoritaires) tout en conservant une traçabilité des changements.

Le rapport souligne également que la conformité à Unicode ne suffit pas à garantir la conformité à UTS‑39 ; chaque implémentation doit être évaluée séparément. Les références à UTR‑36 et à l’annexe UAX‑31 indiquent que les profils de sécurité s’appuient sur les règles d’identification de base, mais les renforcent par des filtres supplémentaires adaptés aux menaces de spoofing. Ainsi, UTS‑39 fournit un cadre normatif qui peut être cité comme référence dans d’autres spécifications, assurant une cohérence inter‑projets dans la gestion sécurisée des identifiants Unicode.