Menu

Règles de validation des pièces d'identité nationales par pays et pourquoi elles diffèrent

Les règles de validation des pièces d'identité nationales varient selon les pays, d'un algorithme publié complet à une simple description de format, voire rien du tout — et une même chaîne peut satisfaire plusieurs pays.

Publié le

  • validation
  • identité
  • chiffre de contrôle

Demandez à dix pays à quoi ressemble un numéro d’identité national et vous obtiendrez dix réponses différentes, non parce que les numéros sont secrets, mais parce que chaque registre a été conçu de son côté. Certains États publient l’arithmétique qui termine le numéro, d’autres ne publient qu’une description de sa forme, et d’autres encore ne publient rien d’autre que le fait que le numéro existe.

Cette irrégularité est le trait distinctif de ce domaine, et c’est la raison pour laquelle un validateur international générique ne peut pas être écrit. Ce qui peut être écrit, c’est un validateur qui sait, pour chaque pays qu’il prend en charge, jusqu’où il est en droit de vérifier — et qui le dit clairement dans le verdict.

Pourquoi les numéros d’identité nationaux ne peuvent-ils pas être validés de la même façon ?

Parce qu’il n’existe aucune autorité internationale qui émet des numéros d’identité nationaux. Chacun appartient à un registre national avec sa propre législation, ses propres conventions et sa propre histoire, et rien n’oblige un pays à documenter sa numérotation pour les étrangers.

Là où une documentation existe, elle varie aussi par sa nature. Un algorithme de chiffre de contrôle publié est une spécification complète : étant donné une chaîne candidate, l’arithmétique peut trancher. Un format publié est une spécification partielle : il peut rejeter une chaîne mal formée mais ne pourra jamais approuver une chaîne bien formée comme authentique. Un registre qui ne publie ni l’un ni l’autre ne laisse au monde extérieur rien à implémenter, quelle que puisse être la logique interne du numéro.

Concevoir autour de cette variété signifie traiter la couverture comme une matrice plutôt que comme un booléen. Pour chaque pays que votre produit touche, consignez lequel des trois niveaux s’applique, et laissez le verdict découler du niveau au lieu de prétendre que chaque pays offre la même garantie.

Toutes les valeurs d’identité évoquées ici sont des descriptions illustratives de règles publiées plutôt que des reproductions. Aucun numéro d’identité réel n’apparaît dans cet article, et le fait de décrire une règle n’implique pas qu’une chaîne particulière ait déjà été émise.

Les pays qui publient leur algorithme de chiffre de contrôle

Certains registres spécifient complètement le caractère final : les poids, le modulo et la règle du chiffre final figurent tous dans la documentation publique. Ce sont les cas les plus faciles, et c’est aussi là qu’un validateur apporte le plus de valeur, car un seul caractère mal saisi est intercepté avant que le numéro n’atteigne un registre.

La famille d’arithmétique concernée est celle fondée sur un modulo, étudiée dans les algorithmes de chiffre de contrôle, et un schéma national est généralement un ensemble de paramètres précis à l’intérieur de celle-ci. Une poignée de pays appliquent le membre de doublement et d’addition de la famille mod-10 ; d’autres utilisent une disposition mod-11, ce qui explique pourquoi la correspondance entre reste et caractère varie d’un cas à l’autre.

Même ici, la précision compte. Savoir qu’un pays utilise un contrôle modulaire n’est pas la même chose que connaître ses paramètres, et implémenter une approximation plausible produit une routine qui accepte la plupart des valeurs et diverge discrètement de la norme sur les autres.

Les pays qui publient un format mais aucun algorithme

Le niveau intermédiaire est le plus vaste et le plus délicat. Le registre documente le nombre de caractères que contient un numéro, lesquels sont des chiffres, et souvent quelle composante identifie une région ou une période de naissance, mais il ne publie jamais de règle arithmétique. Le numéro de sécurité sociale des États-Unis et le permanent account number de l’Inde appartiennent tous deux à ce niveau — largement utilisés, minutieusement documentés dans leur forme, et dépourvus de tout algorithme public de chiffre de contrôle.

Un validateur confronté à un schéma uniquement formel peut tout de même faire un travail utile. Il peut rejeter les chaînes de mauvaise taille, celles contenant des caractères interdits et celles qui contredisent la structure documentée des composantes. Ce qu’il ne peut pas faire, c’est calculer quoi que ce soit à partir du corps et comparer, car il n’y a rien de publié à calculer.

Le verdict doit refléter cela. Un schéma uniquement formel produit un résultat uniquement formel, et le libellé doit dire que la forme est confirmée alors que la validité, elle, ne peut pas l’être. Présenter une telle valeur comme valide est une affirmation fausse, exactement du type que le vocabulaire à quatre verdicts existe pour prévenir.

Que se passe-t-il lorsqu’un numéro correspond à plusieurs pays ?

Deux pays peuvent s’accorder par accident. Si tous deux utilisent une longueur similaire et un jeu de caractères similaire, une seule chaîne peut satisfaire complètement les deux ensembles de règles — et si les deux schémas utilisent aussi une arithmétique comparable, la même chaîne peut même passer les deux chiffres de contrôle. Rien ne va mal ; des spécifications qui se chevauchent produisent simplement une appartenance qui se chevauche.

La tentation est de deviner. Un formulaire qui suppose silencieusement le pays le plus probable, ou le pays de la locale du navigateur de l’utilisateur, invente une information que l’entrée ne contenait pas. Déduire une nationalité à partir d’une chaîne est à la fois peu fiable et une activité catégoriquement différente de la validation d’un format.

La présentation honnête est une liste. Montrez chaque schéma que la chaîne satisfait, dans un ordre stable, et laissez l’utilisateur — ou le système en aval mieux informé — choisir. Quand rien ne correspond, signalez un schéma non reconnu plutôt qu’un numéro invalide, car la seconde affirmation est une chose que le validateur n’est pas en mesure de dire.

Longueur et jeu de caractères ne sont qu’un point de départ

Les deux contrôles sont peu coûteux, et tous deux sont fréquemment pris pour l’intégralité de la tâche. La longueur seule intercepte les caractères perdus et répétés ; le jeu de caractères seul intercepte le mauvais alphabet. Ni l’un ni l’autre ne dit quoi que ce soit sur la relation entre les caractères.

Or cette relation est précisément ce qu’un véritable numéro national possède et qu’une chaîne aléatoire n’a pas. Là où le registre publie la relation, un validateur peut la tester ; là où le registre la garde privée, aucune astuce ne la récupère. Tenter de reconstituer une règle non publiée à partir d’un échantillon de numéros réels est à la fois peu fiable et un mauvais usage du temps de quiconque, puisque le résultat est une supposition présentée avec l’autorité d’une spécification.

Gardez les couches ordonnées et les messages précis. Un utilisateur dont l’entrée a échoué sur la longueur veut entendre parler de la longueur, et celui dont l’entrée a tout passé sauf le caractère final veut entendre parler du caractère final.

Pour les développeurs : traiter les règles par pays comme des données

La conséquence pratique de toute cette variété est que les règles ne doivent pas être compilées dans le chemin de code qui décide du verdict.

  1. Stockez un enregistrement par schéma : le pays, le jeu de caractères autorisé, la forme et le niveau de couverture — algorithme, format uniquement, ou aucun.
  2. Stockez les paramètres des schémas qui publient une arithmétique, et laissez le champ vide plutôt que de deviner pour les autres.
  3. Faites passer chaque entrée par les enregistrements qu’elle correspond et renvoyez une liste, pas un unique vainqueur.
  4. Gardez les quatre verdicts distincts dans vos types, afin qu’un appelant ne puisse pas accidentellement traiter un résultat uniquement formel comme une approbation.
  5. Datez l’ensemble de règles et faites de sa mise à jour une modification de données, car les conventions nationales changent et une table codée en dur devient fausse sans bruit.

Lorsqu’un produit gère des valeurs d’identité de plusieurs pays, la question de la confidentialité mérite le même soin que l’arithmétique. Le guide des chiffres de contrôle des pièces d’identité nationales traite de la façon dont ces schémas se comparent entre registres, et la validation CPF CNPJ est un exemple concret d’un pays dont les deux numéros fiscaux suivent des règles internes différentes.

Étapes suivantes

Listez les pays dont votre produit accepte des numéros d’identité, et marquez chacun comme algorithme, format uniquement ou non publié. Confirmez ensuite que votre interface dit quelque chose de différent pour chacun de ces trois cas ; l’outil de validation de numéros illustre le libellé pour chaque niveau de couverture, et il vaut la peine de vérifier qu’aucun message ne présente un résultat uniquement formel comme une approbation.

Continuer la lecture

Articles sur Validateur de numéros de carte et d'identité