美國 SSN 格式看起來只是一串九位數字,實際上它的每一段都曾經承載特定意義,還有一些號段從頭到尾沒有發放過。以下拆解這個結構、說明保留號段的來源,以及為什麼它既不該被當成身份證件,也不能再拿來推測發給誰、什麼時候發的。
九位數字怎麼分成三段
這個號碼由九位數字組成,習慣上寫成三段:前面三位、中間兩位、最後四位。分段的目的是方便人工閱讀與複述,特別是透過電話或紙本抄寫時,分段可以降低漏字與順序顛倒的機會。
| 段落 | 位數 | 慣稱 | 過去的用途 |
|---|---|---|---|
| 第一段 | 三位 | 地區號 | 曾對應核發的辦公區域 |
| 第二段 | 兩位 | 分組號 | 內部排程用的編號 |
| 第三段 | 四位 | 序列號 | 同一組內的順序 |
書寫時有些人用連字號分隔,有些人只留空格,也有人整串連著寫。對系統來說,這三種寫法指的都是同一個號碼,因此比對之前應該先去掉分隔符號,再進行長度與內容的檢查。
值得一提的是,分段只是書寫慣例,號碼本身並沒有連字號。系統若把連字號當成號碼的一部分儲存,日後在比對、匯出與列印時就會出現兩種版本;比較穩定的做法是儲存去掉分隔符號的九位數字,顯示時再依慣例排成三段。
哪些號段永遠不會發放?
美國社會保障署說明過幾個不會發放的組合,它們算是保留範圍,不會出現在任何正式核發的號碼上:
- 地區號的 000、666,以及 900 到 999 這一整段。
- 分組號的 00。
- 序列號的 0000。
這些保留號段的價值在於它們可以安全地用於示範與測試。看到一筆資料落在保留範圍內,就能合理判斷它不是真實號碼;反過來說,驗證規則也應該主動擋下這些組合,因為它們在真實世界裡不該出現。
保留號段還有一個實際用途:需要一組確定不是真人的號碼來示範介面時,選用保留範圍內的組合比隨機挑一組安全得多。這種用法唯一的限制是不能拿它測試核發或查驗之類的功能,因為真實世界本來就不會出現這些值。
為什麼前三位不能再判斷出生地或年份?
在 2011 年之前,前三位確實與核發地區有關,中間兩位也反映排程順序,因此老舊的系統曾經靠號碼推測使用者所在的位置。2011 年起改為隨機分配之後,號碼裡的數字就不再表示發放地點,也不再表示發放時間。
這對維護舊程式的團隊是一個實際的陷阱:如果驗證邏輯還留著「用前三位推導地區」的假設,它不會報錯,只會安靜地給出錯誤的分類結果。測試資料若要覆蓋這條路徑,就刻意取幾組前三位相同、其他欄位卻屬於不同地區的樣本,看看系統會不會仍然照舊規則判斷。
美國 SSN 不是身份證件
它是一組行政編號,不是證件。它沒有照片、沒有生物特徵,也沒有任何印在卡片上的防偽設計,因此把它單獨當成身份憑證,等於只憑一組九位數字就相信對方是誰。在需要確認本人身分的場合,通行的做法是搭配其他文件或額外的驗證機制。
對一般讀者來說,實務上的結論很簡單:不要把它當成身分證明使用,也不要因為某個網站要求填寫就認為它可以用來驗證你。它是被設計來追蹤紀錄的,不是被設計來證明身分的。
為什麼測試樣本要同時準備合法與不合法兩種?
只準備合法樣本,測到的是流程走得通;要驗證規則真的有效,還需要一組刻意不合格的樣本。以這個號碼為例,值得準備的不合格情況包括落在保留號段的組合、只有八位或十位的值、含有字母的值,以及分隔符號位置錯誤的寫法。
兩類樣本放在一起還有個附加效果:它能證明系統不是什麼都接受。很多驗證程式在開發過程中被暫時放寬,卻沒有人記得改回來;一組永遠應該失敗的樣本,正好守住這條線。
給開發者:校驗做到格式與保留段就夠了
- 先正規化,去掉連字號與空白,再檢查是否為九位數字。
- 拒絕保留號段,並把「格式不對」與「落在保留範圍」分成兩種提示。
- 不要嘗試用前三位推導地區或出生資訊,隨機分配之後這條路已經不通。
- 不要把真實號碼放進任何測試檔、說明文件或範例資料。
- 需要測試合法路徑時用合成的號碼,需要測試拒絕邏輯時才放入保留號段的樣本。
- 同一組合成號碼不要在整個測試套件裡到處重複使用,避免它被誤認為真實資料。
要理解其他國家為什麼連長度都不一樣,可以接著讀各國身份證號長度;如果表單需要對應州與行政區代碼,國家與行政區代碼那篇整理了常見的處理方式。
準備美國測試資料時要注意什麼?
最常見的錯誤是從網路上的說明文件直接複製範例號碼。那些號碼即使標示為範例,也可能曾經屬於某個人,或與真實紀錄高度相似,放進測試環境就是把不確定性帶進來。安全的做法是自行合成,並在資料集名稱上明確標示。
另外,測試用的美國樣本常會附帶其他欄位:地址、州、郵遞區號、電話。這些欄位彼此的搭配同樣重要,若地址屬於一個州、電話的區碼與州對不上,測到的就是資料本身的矛盾,而不是你要驗證的功能。本站的身份產生器在產生美國資料時,各欄位取自同一筆紀錄;這些內容只供測試,不能用來冒充真人,也不具備任何真實證件的效力。想先看這個國家常見的欄位寫法,可以開美國國家頁對照。
批次匯入的情境另外要注意重複。同一批樣本裡若出現兩筆相同的號碼,系統可能把它們視為同一個人而合併;這在真實世界是會發生的情況,值得刻意設計成一組測試,而不是等上線後才發現。
下一步
把你的驗證規則攤開來看一遍:保留號段有沒有擋、正規化有沒有做、有沒有一條靠前三位推導地區的舊邏輯還留著。三件事都確認過之後,再拿幾筆合成的號碼跑一次完整流程,確認系統在合法輸入下走的是正常路徑,而不是繞進錯誤處理。
最後檢查一下文件與截圖。範例、教學與客服回覆裡若還留著看似真實的號碼,它會比程式碼更容易被複製出去,也更難回收。