Меню

Формат номера SSN: три части и диапазоны, которые не выдают

Формат номера SSN — девять цифр, которые принято записывать тремя группами. Разбираем структуру, никогда не выдаваемые диапазоны, смену правил и границы честной проверки.

Опубликовано

  • США
  • номер документа
  • проверка

Формат номера SSN знаком почти всем, кто хоть раз заполнял американскую форму: девять цифр, разделённых на три группы, которые принято писать через дефисы. Простота обманчива сразу в двух местах: часть сочетаний не выдаётся никогда, а с определённого момента цифры перестали означать хоть что-то, кроме самих себя. Ниже разберём, как устроен номер, какие диапазоны закрыты, почему его не стоит считать удостоверением личности и что реально может проверить форма.

Из каких частей состоит номер

Номер состоит из девяти цифр и делится на три смысловые группы: первая из трёх цифр, вторая из двух, третья из четырёх. Это деление придумано для удобства чтения и диктовки, а не для вычислений: ценность номера от расстановки дефисов не меняется.

Долгое время каждой группе приписывали значение. Первая группа якобы указывала на регион, где номер запросили, вторая — на порядок выдачи внутри региона, третья — на последовательный счётчик. Такое прочтение до сих пор встречается в старых инструкциях и в унаследованных системах, и именно оно порождает типичные ошибки: форму, которая пытается определить штат по первым цифрам, или отчёт, где записи сортируются по мнимой дате выдачи.

В какой-то момент правило изменилось: распределение стало случайным, и цифры перестали указывать и на место, и на время. Система, написанная до этой перемены, может продолжать работать по совпадению, но опирается она на предположение, от которого отказался сам источник номеров. Это ровно та категория допущений, которая не проявляется в тестах и всплывает годами позже.

Какие диапазоны не выдаются никогда

Даже при случайном распределении часть сочетаний остаётся вне обращения. Орган, отвечающий за номера в США, прямо перечисляет значения, которые не выдаются, и это единственная структурная информация, на которую может опираться проверка:

  • Первая группа никогда не состоит из трёх нулей.
  • Первая группа никогда не равна шести, шести и шести.
  • Первая группа никогда не начинается с девятки, то есть вся область от девятки с двумя нулями до тройки девяток закрыта.
  • Вторая группа никогда не состоит из двух нулей.
  • Третья группа никогда не состоит из четырёх нулей.

Смысл этих правил узкий: они отсекают значения, которых не выдал бы никто, — номер, набранный в спешке, поле, оставленное пустым, или подстановку вроде нулей вместо ответа. Они ничего не сообщают о том, существует ли человек с таким номером.

Группа Сколько знаков Что закрыто
Первая три три нуля, шесть, шесть, шесть, вся область с девятки
Вторая два два нуля
Третья четыре четыре нуля

SSN — это удостоверение личности?

Нет, и разница серьёзнее, чем кажется. Удостоверение личности выдают, чтобы человек мог подтвердить, кто он, и обычно в нём есть фотография, подпись и срок действия. Номер SSN — это учётный номер для налоговых и социальных процедур, и его собственная служба выдачи предупреждает, что он не должен служить доказательством личности.

Карточка с этим номером не заменяет документ с фотографией. Поэтому система, которая принимает такой номер как единственное подтверждение, строит хрупкую проверку: любой, кто знает девять цифр другого человека, может представиться им. Для того кто просто заполняет форму, совет обычный: если поле запрашивает этот номер без понятной причины, стоит уточнить, зачем он нужен и как будет храниться.

Что из номера уже нельзя узнать?

Практически ничего, кроме самого номера. Из него нельзя вывести штат проживания, год выдачи или дату рождения — после перехода на случайное распределение эти связи исчезли. Нельзя вывести и возраст: в номере нет даты, а попытка сопоставить группы цифр с годом рождения даёт ошибки у всех, кто получил номер не сразу после рождения.

Отсюда практическое следствие для тех, кто переносит старые базы. Если в системе хранится признак региона, выведенный из первых цифр когда-то давно, он мог быть верным для номеров, выданных до перемены, и почти наверняка неверен для выданных после. Такое поле честнее пометить как историческое и не использовать в новых проверках, чем поддерживать иллюзию, что оно что-то значит.

Стоит отдельно сказать про онлайн-проверки. Сервисы, которые обещают подтвердить номер и рассказать о его владельце, опираются на утечки и коммерческие базы, а не на официальный реестр. Для тестирования они бесполезны и опасны: настоящий номер, найденный в таком сервисе, нельзя вносить ни в один тестовый набор.

Как получить тестовый номер для формы

В генераторе данных личности выберите США, и вместе с именем, датой рождения и адресом вы получите номер документа в правильном для этой страны формате. Все поля берутся из одной записи, поэтому адрес не окажется в другом штате, а телефон будет с американским кодом. Отдельно можно посмотреть, как выглядят данные для США в целом.

Сгенерированные номера синтетические: они не принадлежат ни одному человеку и предназначены только для тестирования. Их нельзя использовать, чтобы выдать себя за реального человека, и они не проходят настоящую проверку личности.

Что важно разработчику: границы проверки

Проверка номера должна уметь ровно три вещи: убрать разделители и убедиться, что осталось девять знаков; отклонить закрытые диапазоны; обращаться с номером как с текстовым идентификатором, не пытаясь вывести из него штат, возраст или дату. Всё, что сверх этого, — выдумка.

Что проверяем Можно ли Почему
Количество знаков да структура номера неизменна
Закрытые диапазоны да они объявлены официально
Контрольную цифру нет её в этом номере не существует
Штат по первым цифрам нет распределение случайное
Год выдачи по цифрам нет в номере нет даты

Отдельно стоит развести сообщения об ошибках. Значение с буквами или неверным количеством знаков — это опечатка, и сообщение должно объяснять ожидаемый формат. Попадание в закрытый диапазон — другая ситуация, и говорить о ней нужно иначе. Если свести оба случая в одну фразу, пользователь не поймёт, что именно исправить.

И ещё одна мелочь, которая обходится дорого: храните номер как текст, а не как число. Ведущие нули в первой группе значат ровно столько же, сколько любые другие цифры, а числовой тип молча теряет их при сохранении и выводе.

И последнее: хранить такие номера в тестовой базе можно только в виде синтетических значений. Настоящий номер — это идентификатор, привязанный к человеку, и если система действительно его собирает, стоит ограничить доступ, маскировать вывод и не переносить данные в контуры, где защита слабее. Если цель — просто заполнить экран, корректный по формату сгенерированный номер решает задачу и не создаёт обязательств. Похожая логика действует и для других стран: о том, насколько разными бывают национальные номера, рассказано в статье про длину идентификаторов по странам.

Что делать дальше

Проверьте сегодня два сценария: принимает ли ваша форма номер и с разделителями, и без них, и отклоняет ли она закрытые диапазоны. Для набора примеров сгенерируйте записи в генераторе и пометьте их как тестовые, а если в форме есть поле номера, посмотрите, как вести себя с похожими записями в других странах.

Читать дальше

Статьи: Генератор данных личности и тестовых данных онлайн