Menu

Formato SSN e intervalli riservati: cosa significano le cifre

Il formato SSN è di nove cifre scritte in tre gruppi. Scopri quali intervalli di area, gruppo e seriale non vengono mai emessi e perché il numero non è un documento d'identità.

Pubblicato

  • dati di test
  • identità
  • Stati Uniti

Il formato SSN è una di quelle piccole nozioni che decidono in silenzio se una regola di validazione di un modulo è corretta. Il numero è lungo nove cifre, è convenzionalmente scritto in tre gruppi e alcune delle possibili combinazioni al suo interno non vengono mai emesse a nessuno — fatti semplici da enunciare e sorprendentemente facili da sbagliare quando vengono codificati in una routine di validazione.

Questo articolo tratta la struttura del numero, gli intervalli tenuti da parte, ciò che le cifre hanno smesso di significare nel 2011 e perché il numero non è mai stato e non è tuttora una prova di identità.

La forma del numero

Le nove cifre si leggono come tre blocchi: tre cifre, poi due, poi quattro. Scritti per esteso, i blocchi sono di solito separati da trattini, sebbene i trattini siano una convenzione di formattazione e non facciano parte del numero, e molti sistemi lo memorizzano e lo stampano come una singola sequenza ininterrotta.

Ogni blocco ha un nome. Le prime tre cifre sono il numero di area, quelle centrali due sono il numero di gruppo e le ultime quattro sono il numero seriale. Conoscere i nomi è utile soprattutto perché i valori riservati sono definiti blocco per blocco.

Tratta l’intero valore come testo. Uno zero iniziale dentro un blocco è del tutto normale e perfettamente legale, e qualunque scelta di memorizzazione che converta il valore in un intero lo distruggerà in silenzio — una modalità di guasto che ha rotto moltissimi moduli nel corso degli anni.

Quali intervalli non vengono mai emessi?

L’amministrazione che rilascia il numero ha dichiarato pubblicamente che alcuni valori non vengono usati. Nel blocco di area non viene emesso il valore tutto zeri, non viene emesso il valore composto da tre sei e non viene emesso il blocco di valori da novecento in su. Nel blocco di gruppo non viene emessa la coppia tutta zeri. Nel blocco seriale non viene emesso l’insieme tutto zeri.

Vale la pena notare lo schema: in ogni caso il valore trattenuto è uno di quelli degenerati, l’estremo inferiore oppure uno speciale escluso di proposito. È una proprietà utile per chi scrive un validatore, perché significa che una manciata di controlli di intervallo economici intercetta un’intera classe di numeri evidentemente fabbricati o digitati male.

Non significa che i controlli siano sufficienti. Superarli stabilisce soltanto che un numero non si trova in un intervallo noto come impossibile; non dice nulla sul fatto che il numero sia mai stato emesso, e assolutamente nulla su chi lo possieda.

Il primo blocco dice dove è nato qualcuno?

Un tempo era correlato allo stato in cui il numero era stato richiesto, e la leggenda nata attorno a quella correlazione è sopravvissuta alla pratica effettiva per decenni. Dal 2011 i numeri sono stati assegnati su base randomizzata, quindi le cifre non codificano più un luogo di richiesta e non hanno mai codificato una data di nascita.

La conseguenza pratica è che qualunque regola che inferisca una regione, un anno di nascita o una data di emissione dalle prime cifre è ormai sbagliata, ed era già inaffidabile prima del cambiamento, perché la mappatura era regionale e non personale. Il codice di validazione scritto a partire da una tabella di prefissi statali è il modo più comune in cui questo errore raggiunge la produzione.

Un SSN è un documento d’identità?

No. È un numero emesso per uno scopo amministrativo specifico, e non è una carta d’identità nazionale di uso generale, non è una prova di cittadinanza e non è una prova di chi sia una persona. Mostrare un numero non stabilisce l’identità di una persona, e un sistema che tratta il numero da solo come prova sufficiente si affida a un segreto che non è mai stato segreto — il numero viene richiesto da datori di lavoro, proprietari di case, cliniche e aziende di servizi, quindi è ampiamente registrato e ampiamente divulgato.

Questa è la lettura onesta dell’intero argomento, ed è il motivo per cui questo numero è così poco adatto a test che coinvolgono persone reali. Un valore dalla forma corretta va benissimo per verificare che un modulo accetti nove cifre in tre gruppi. Uno reale in un database di test è una passività: appartiene a qualcuno, non può essere rimesso al segreto, e nessuna quantità di controllo degli accessi su un ambiente di staging rende sicura quella copia.

Come dovrebbe trattare il numero un modulo?

Raccoglilo solo quando c’è una ragione reale, conservalo nel minor numero di posti che il compito consente, mascheralo in ogni interfaccia che non abbia strettamente bisogno del valore completo e non stamparlo mai in una riga di log. Queste sono scelte di trattamento dei dati, e valgono sia che il sistema sia una piattaforma per le buste paga sia che sia un progetto secondario.

Sul versante della validazione, resisti alla tentazione di fare il furbo. Rifiutare un valore perché le prime tre cifre non figurano in un elenco di prefissi riconosciuti rifiuterà numeri legittimi, perché l’elenco dei prefissi validi non è una geografia fissa e gli intervalli tutto zeri, tutti sei e quelli alti sono gli unici valori con una regola pubblica. Controlla la forma, controlla gli intervalli riservati e lascia stare il resto.

I team che devono esercitare il campo senza toccare il numero reale di qualcuno usano un valore sintetico. I record generati dal generatore di identità e dati di test rientrano in quella categoria: soddisfano il formato ed evitano gli intervalli riservati, e sono inventati per i test, non utilizzabili per impersonare qualcuno né per soddisfare alcun controllo che verifichi il numero contro un record emesso.

Cosa dovrebbe controllare un validatore, e in quale ordine?

Sei controlli coprono quasi tutto, e il loro ordine conta solo perché quello più economico dovrebbe essere eseguito per primo.

  • Il valore è presente e, una volta rimossi i caratteri di formattazione, è composto solo da cifre.
  • Dopo aver rimosso i separatori, è lungo esattamente nove cifre.
  • Il blocco di area non è tutto zeri, non è il valore escluso dei tre sei ed è inferiore a novecento.
  • Il blocco di gruppo non è tutto zeri.
  • Il blocco seriale non è tutto zeri.
  • Il campo è memorizzato e confrontato come testo, così che gli zeri iniziali sopravvivano.

Nulla in quell’elenco è un controllo che il numero corrisponda a una persona. Se un processo ha bisogno di quella garanzia, ha bisogno di una fonte di verità esterna al modulo, e il modulo non può fornirla.

Per gli sviluppatori: cosa appartiene alla regola di validazione

Scrivi la regola come formato più intervalli riservati e fermati lì. Un commento che afferma che le cifre non hanno significato geografico vale più di un ramo in più, perché altrimenti la prossima persona che modifica il file reintrodurrà la tabella dei prefissi che ricorda da un vecchio progetto.

Mantieni onesta anche la fixture. Usa un valore generato, etichetta la riga come sintetica nel dataset stesso in modo che uno screenshot divulgato si spieghi da sé, e assicurati che nessuno abbia tranquillamente incollato un numero reale per comodità. Il numero non è un identificatore generale, e una suite di test che lo tratta come tale insegna la lezione sbagliata a chiunque la legga. I record costruiti per i test sono esattamente questo — artefatti di test che non devono mai sostituire l’identità di una persona reale né essere presentati da nessuna parte come tale.

Passi successivi

Apri la tua routine di validazione ed elimina qualunque ramo che inferisca una località o un anno dalle prime tre cifre; già solo quella modifica rimuove una ricorrente fonte di falsi rifiuti. Poi genera un lotto di record statunitensi nel generatore di identità e falli passare attraverso il campo, incluso uno il cui blocco seriale è deliberatamente tutto zeri per confermare che il controllo degli intervalli riservati scatti davvero. Per il quadro più ampio di come i numeri di identificazione differiscono tra paesi, la guida alla lunghezza del documento d’identità nazionale è il seguito naturale.

Continua a leggere

Guide su Generatore di identità e dati di test