Menu

Format du SSN et plages réservées : ce que signifient les chiffres

Le format du SSN est composé de neuf chiffres écrits en trois groupes. Découvrez quelles plages d'aire, de groupe et de série ne sont jamais attribuées, et pourquoi ce numéro n'est pas un document d'identité.

Publié le

  • données de test
  • identité
  • États-Unis

Le format du SSN fait partie de ces petits savoirs qui décident discrètement si une règle de validation de formulaire est correcte. Le numéro comporte neuf chiffres, il s’écrit traditionnellement en trois groupes, et quelques-unes des combinaisons possibles qu’il contient ne sont jamais attribuées à quiconque — des faits simples à énoncer et étonnamment faciles à se représenter de travers lorsqu’on les encode dans une routine de validation.

Cet article couvre la structure du numéro, les plages qui sont retenues, ce que les chiffres ont cessé de signifier en 2011, et pourquoi ce numéro n’a jamais été et n’est toujours pas une preuve d’identité.

La forme du numéro

Les neuf chiffres se lisent en trois blocs : trois chiffres, puis deux, puis quatre. Une fois écrits, les blocs sont généralement séparés par des tirets, bien que les tirets relèvent d’une convention de mise en forme plutôt que du numéro lui-même, et de nombreux systèmes le stockent et l’impriment comme une seule suite ininterrompue.

Chaque bloc porte un nom. Les trois premiers chiffres sont le numéro d’aire, les deux du milieu sont le numéro de groupe, et les quatre derniers sont le numéro de série. Connaître ces noms est surtout utile parce que les valeurs réservées sont définies bloc par bloc.

Traitez l’ensemble comme du texte. Un zéro initial à l’intérieur d’un bloc est parfaitement normal et totalement licite, et toute décision de stockage qui transforme la valeur en entier le détruira silencieusement — un mode de défaillance qui a cassé un très grand nombre de formulaires au fil des ans.

Quelles plages ne sont jamais attribuées ?

L’administration qui délivre le numéro a publiquement déclaré que certaines valeurs ne sont pas utilisées. Dans le bloc d’aire, la valeur entièrement nulle n’est pas attribuée, la valeur composée de trois six n’est pas attribuée, et le bloc de valeurs à partir de neuf cents n’est pas attribué. Dans le bloc de groupe, la paire entièrement nulle n’est pas attribuée. Dans le bloc de série, l’ensemble entièrement nul n’est pas attribué.

Le schéma mérite d’être remarqué : dans chaque cas, la valeur retenue est l’une des dégénérées, l’extrémité basse ou un cas spécial délibérément exclu. C’est une propriété utile pour quiconque écrit un validateur, car elle signifie qu’une poignée de contrôles de plage peu coûteux intercepte toute une classe de numéros manifestement fabriqués ou mal saisis.

Cela ne signifie pas que ces contrôles soient suffisants. Les passer établit seulement qu’un numéro n’est pas dans une plage réputée impossible ; cela ne dit rien sur la question de savoir si le numéro a un jour été attribué, et absolument rien sur qui le détient.

Le premier bloc indique-t-il où quelqu’un est né ?

Il était autrefois corrélé à l’État où le numéro avait été demandé, et la légende qui a grandi autour de cette corrélation a survécu à la pratique réelle de plusieurs décennies. Depuis 2011, les numéros sont attribués de manière aléatoire, de sorte que les chiffres n’encodent plus un lieu de demande et n’ont jamais encodé une date de naissance.

La conséquence pratique est que toute règle qui déduit une région, une année de naissance ou une date de délivrance des premiers chiffres est désormais fausse, et était déjà peu fiable avant le changement, car la correspondance était régionale et non personnelle. Le code de validation écrit à partir d’une table de préfixes d’États est la manière la plus courante dont cette erreur atteint la production.

Un SSN est-il un document d’identité ?

Non. C’est un numéro délivré dans un but administratif précis, et ce n’est pas une carte nationale d’identité à usage général, ni une preuve de citoyenneté, ni une preuve de l’identité de quelqu’un. Présenter un numéro n’établit pas l’identité d’une personne, et un système qui traite le numéro seul comme une preuve suffisante s’appuie sur un secret qui n’a jamais été secret — le numéro est demandé par les employeurs, les bailleurs, les cliniques et les fournisseurs de services publics, il est donc largement enregistré et largement divulgué.

C’est là le cadrage honnête de tout le sujet, et c’est la raison pour laquelle ce numéro convient si mal aux tests impliquant de vraies personnes. Une valeur correctement formatée convient pour vérifier qu’un formulaire accepte neuf chiffres en trois groupes. Une valeur réelle dans une base de test est un passif : elle appartient à quelqu’un, sa divulgation est irréversible, et aucun contrôle d’accès sur un environnement de préproduction ne rend cette copie sûre.

Comment un formulaire doit-il traiter le numéro ?

Ne le collectez que lorsqu’il existe une raison réelle, stockez-le dans aussi peu d’endroits que la tâche le permet, masquez-le dans chaque interface qui n’a pas strictement besoin de la valeur complète, et ne l’imprimez jamais dans une ligne de journal. Ce sont des choix de traitement des données, et ils s’appliquent que le système soit une plateforme de paie ou un projet secondaire.

Du côté de la validation, résistez à l’envie de jouer au plus malin. Rejeter une valeur parce que les trois premiers chiffres ne figurent pas dans une liste de préfixes reconnus rejettera des numéros légitimes, car la liste des préfixes valides n’est pas une géographie figée et les plages entièrement nulles, entièrement composées de six et élevées sont les seules valeurs dotées d’une règle publique. Vérifiez la forme, vérifiez les plages réservées, et laissez le reste tranquille.

Les équipes qui ont besoin d’exercer le champ sans toucher au numéro réel de quiconque utilisent une valeur synthétique. Les enregistrements produits par le générateur d’identités et de données de test entrent dans cette catégorie : ils satisfont le format et évitent les plages réservées, et ils sont inventés pour les tests, et non utilisables pour usurper l’identité de quiconque ni pour satisfaire un contrôle qui vérifie le numéro auprès d’un registre émetteur.

Que doit vérifier un validateur, et dans quel ordre ?

Six contrôles couvrent presque tout, et leur ordre n’importe que parce que le moins coûteux doit s’exécuter en premier.

  • La valeur est présente et, une fois les caractères de mise en forme retirés, elle n’est composée que de chiffres.
  • Après suppression des séparateurs, elle comporte exactement neuf chiffres.
  • Le bloc d’aire n’est pas entièrement nul, n’est pas la valeur exclue composée de trois six, et est inférieur à neuf cents.
  • Le bloc de groupe n’est pas entièrement nul.
  • Le bloc de série n’est pas entièrement nul.
  • Le champ est stocké et comparé sous forme de texte, afin que les zéros initiaux survivent.

Rien dans cette liste ne vérifie que le numéro correspond à une personne. Si un processus a besoin de cette garantie, il lui faut une source de vérité extérieure au formulaire, et le formulaire ne peut pas la fournir.

Pour les développeurs : ce qui doit figurer dans la règle de validation

Écrivez la règle comme un format plus des plages réservées, et arrêtez-vous là. Un commentaire indiquant que les chiffres ne portent aucune signification géographique vaut mieux qu’une branche supplémentaire, car sinon la prochaine personne qui modifiera le fichier réintroduira la table de préfixes dont elle se souvient d’un ancien projet.

Gardez aussi la fixture honnête. Utilisez une valeur générée, étiquetez la ligne comme synthétique dans le jeu de données lui-même pour qu’une capture d’écran divulguée s’explique d’elle-même, et assurez-vous que personne n’a discrètement collé un numéro réel par commodité. Le numéro n’est pas un identifiant général, et une suite de tests qui le traite comme tel enseigne la mauvaise leçon à quiconque la lit. Les enregistrements conçus pour les tests sont exactement cela — des artefacts de test qui ne doivent jamais tenir lieu d’identité d’une personne réelle ni être présentés nulle part comme telle.

Étapes suivantes

Ouvrez votre routine de validation et supprimez toute branche qui déduit un lieu ou une année des trois premiers chiffres ; ce seul changement élimine une source récurrente de faux rejets. Générez ensuite un lot d’enregistrements américains dans le générateur d’identités et faites-les passer par le champ, y compris un dont le bloc de série est délibérément entièrement nul pour confirmer que le contrôle des plages réservées se déclenche bien. Pour une vue d’ensemble de la façon dont les numéros d’identification diffèrent d’un pays à l’autre, le guide sur la longueur des identifiants nationaux est la suite naturelle.

Continuer la lecture

Articles sur Générateur d'identités et de données de test