Das SSN-Format gehört zu jenen kleinen Wissensstücken, die still darüber entscheiden, ob eine Prüfregel im Formular korrekt ist. Die Nummer ist neun Ziffern lang, sie wird üblicherweise in drei Gruppen geschrieben, und einige der möglichen Kombinationen darin werden nie an jemanden ausgegeben — Tatsachen, die schnell gesagt und überraschend leicht falsch umgesetzt sind, wenn sie in eine Prüfroutine gegossen werden.
Dieser Artikel behandelt den Aufbau der Nummer, die zurückgehaltenen Bereiche, das, was die Ziffern seit 2011 nicht mehr bedeuten, und warum die Nummer nie ein Identitätsnachweis war und es weiterhin nicht ist.
Die Gestalt der Nummer
Die neun Ziffern werden als drei Blöcke gelesen: drei Ziffern, dann zwei, dann vier. Ausgeschrieben trennt man die Blöcke üblicherweise mit Bindestrichen, doch die Bindestriche sind eine Formatierungskonvention und nicht Teil der Nummer; viele Systeme speichern und drucken sie als einen ununterbrochenen Lauf.
Jeder Block hat einen Namen. Die ersten drei Ziffern sind die Bereichsnummer, die mittleren zwei die Gruppennummer, die letzten vier die Seriennummer. Die Namen zu kennen ist vor allem deshalb nützlich, weil die gesperrten Werte je Block definiert sind.
Behandeln Sie das Ganze als Text. Eine führende Null innerhalb eines Blocks ist völlig normal und vollkommen zulässig, und jede Speicherentscheidung, die den Wert in eine ganze Zahl verwandelt, zerstört sie still — ein Fehlermuster, das im Lauf der Jahre sehr viele Formulare ruiniert hat.
Welche Bereiche werden nie ausgegeben?
Die Verwaltung, die die Nummer ausgibt, hat öffentlich erklärt, dass bestimmte Werte nicht verwendet werden. Im Bereichsblock wird der Wert aus lauter Nullen nicht ausgegeben, der Wert aus drei Sechsen nicht, und der Block der Werte ab neunhundert aufwärts nicht. Im Gruppenblock wird das Paar aus lauter Nullen nicht ausgegeben. Im Serienblock wird die Menge aus lauter Nullen nicht ausgegeben.
Das Muster ist beachtenswert: In jedem Fall ist der zurückgehaltene Wert einer der entarteten, das äußerste untere Ende oder eine bewusst ausgeschlossene Besonderheit. Für jeden, der eine Prüfung schreibt, ist das eine nützliche Eigenschaft, denn sie bedeutet, dass eine Handvoll billiger Bereichsprüfungen eine ganze Klasse offensichtlich erfundener oder vertippter Nummern abfängt.
Es heißt nicht, dass die Prüfungen ausreichen. Sie zu bestehen belegt lediglich, dass eine Nummer nicht in einem bekannt unmöglichen Bereich liegt; es sagt nichts darüber, ob die Nummer je ausgegeben wurde, und überhaupt nichts darüber, wer sie hält.
Sagt der erste Block, wo jemand geboren wurde?
Früher stand er in Zusammenhang mit dem Bundesstaat, in dem die Nummer beantragt wurde, und die Folklore, die um diesen Zusammenhang wuchs, hat die tatsächliche Praxis um Jahrzehnte überlebt. Seit 2011 werden die Nummern auf zufälliger Grundlage zugeteilt, sodass die Ziffern keinen Antragsort mehr verschlüsseln und nie ein Geburtsdatum verschlüsselt haben.
Praktisch heißt das: Jede Regel, die aus den ersten Ziffern eine Region, ein Geburtsjahr oder ein Ausgabedatum ableitet, ist heute falsch und war schon vor der Änderung unzuverlässig, weil die Zuordnung regional und nicht persönlich war. Prüfcode, der aus einer Tabelle mit Bundesstaatspräfixen geschrieben wurde, ist der häufigste Weg, auf dem dieser Fehler die Produktion erreicht.
Ist eine SSN ein Identitätsdokument?
Nein. Sie ist eine Nummer, die für einen bestimmten Verwaltungszweck ausgegeben wird, und sie ist kein allgemeiner Personalausweis, kein Nachweis der Staatsangehörigkeit und kein Beleg dafür, wer jemand ist. Eine Nummer vorzulegen stellt die Identität einer Person nicht fest, und ein System, das die Nummer allein als ausreichenden Nachweis behandelt, verlässt sich auf ein Geheimnis, das nie geheim war: Die Nummer wird von Arbeitgebern, Vermietern, Kliniken und Versorgungsunternehmen verlangt, sie wird also breit erfasst und breit geleakt.
Das ist die ehrliche Einordnung des ganzen Themas, und es ist der Grund, warum diese Nummer so schlecht zu Tests passt, an denen echte Menschen beteiligt sind. Ein korrekt geformter Wert ist in Ordnung, um zu prüfen, dass ein Formular neun Ziffern in drei Gruppen annimmt. Ein echter Wert in einer Testdatenbank ist eine Last: Er gehört jemandem, er lässt sich nicht ungeschehen machen, und keine Zugangskontrolle einer Staging-Umgebung macht diese Kopie sicher.
Wie sollte ein Formular die Nummer behandeln?
Erheben Sie sie nur, wenn es einen echten Grund gibt, speichern Sie sie an so wenigen Stellen, wie die Aufgabe erlaubt, maskieren Sie sie in jeder Oberfläche, die den vollen Wert nicht zwingend braucht, und drucken Sie sie nie in eine Protokollzeile. Das sind Entscheidungen zum Umgang mit Daten, und sie gelten, ob das System eine Lohnplattform oder ein Nebenprojekt ist.
Auf der Prüfseite widerstehen Sie der Versuchung, besonders klug zu sein. Einen Wert abzulehnen, weil die ersten drei Ziffern nicht in einer Liste anerkannter Präfixe stehen, weist legitime Nummern zurück, denn die Liste gültiger Präfixe ist keine feste Geografie und die Bereiche aus lauter Nullen, aus drei Sechsen und die hohen Bereiche sind die einzigen Werte mit einer öffentlichen Regel. Prüfen Sie die Form, prüfen Sie die gesperrten Bereiche, und lassen Sie den Rest in Ruhe.
Teams, die das Feld durchspielen müssen, ohne jemandes echte Nummer zu berühren, verwenden einen synthetischen Wert. Datensätze aus dem Identitätsdatensatz-Erzeuger fallen in diese Kategorie: Sie erfüllen das Format und meiden die gesperrten Bereiche, und sie sind für Tests erfunden, nicht dazu brauchbar, sich als jemand auszugeben oder eine Prüfung zu bestehen, die die Nummer gegen einen ausstellenden Eintrag verifiziert.
Was sollte eine Prüfung kontrollieren, und in welcher Reihenfolge?
Sechs Kontrollen decken fast alles ab, und ihre Reihenfolge zählt nur, weil die billigste zuerst laufen sollte.
- Der Wert ist vorhanden und besteht, nach Entfernen der Formatierungszeichen, ausschließlich aus Ziffern.
- Nach Entfernen der Trennzeichen ist er genau neun Ziffern lang.
- Der Bereichsblock ist nicht aus lauter Nullen, nicht der ausgeschlossene Wert aus drei Sechsen und liegt unter neunhundert.
- Der Gruppenblock ist nicht aus lauter Nullen.
- Der Serienblock ist nicht aus lauter Nullen.
- Das Feld wird als Text gespeichert und verglichen, damit führende Nullen überleben.
Nichts auf dieser Liste prüft, ob die Nummer zu einer Person gehört. Braucht ein Prozess diese Garantie, braucht er eine Quelle der Wahrheit außerhalb des Formulars, und das Formular kann sie nicht liefern.
Für Entwickler: Was in die Prüfregel gehört
Schreiben Sie die Regel als Format plus gesperrte Bereiche und hören Sie dort auf. Ein Kommentar, der festhält, dass die Ziffern keine geografische Bedeutung tragen, ist mehr wert als ein zusätzlicher Zweig, weil die nächste Person, die die Datei bearbeitet, sonst die Präfixtabelle wieder einführt, an die sie sich aus einem alten Projekt erinnert.
Halten Sie auch die Fixture ehrlich. Verwenden Sie einen erzeugten Wert, kennzeichnen Sie die Zeile im Datensatz selbst als synthetisch, damit ein geleakter Screenshot sich selbst erklärt, und stellen Sie sicher, dass niemand bequem eine echte Nummer hineinkopiert hat. Die Nummer ist keine allgemeine Kennung, und eine Testsuite, die sie als eine behandelt, lehrt alle, die sie lesen, das Falsche. Datensätze, die für Tests gebaut werden, sind genau das — Testartefakte, die nie die Identität einer echten Person vertreten und nirgends als solche vorgelegt werden dürfen.
Nächste Schritte
Öffnen Sie Ihre Prüfroutine und löschen Sie jeden Zweig, der aus den ersten drei Ziffern einen Ort oder ein Jahr ableitet; schon diese Änderung beseitigt eine wiederkehrende Quelle falscher Ablehnungen. Erzeugen Sie dann im Identitätsdatensatz-Erzeuger eine Reihe von Datensätzen für die Vereinigten Staaten und lassen Sie sie durch das Feld laufen, darunter einen, dessen Serienblock bewusst nur Nullen enthält, um zu bestätigen, dass die Bereichsprüfung tatsächlich auslöst. Für das größere Bild, wie sich Identifikationsnummern zwischen Ländern unterscheiden, ist der Leitfaden zur Länge nationaler Identifikationsnummern die natürliche Fortsetzung.