SSN प्रारूप ऐसी छोटी जानकारी है जो चुपचाप तय कर देती है कि किसी फ़ॉर्म का सत्यापन नियम सही है या नहीं। यह संख्या नौ अंकों की होती है, परंपरागत रूप से तीन हिस्सों में लिखी जाती है, और इसके भीतर कुछ संयोजन ऐसे हैं जो कभी किसी को जारी नहीं किए जाते — बातें कहने में सरल, पर सत्यापन कोड में उतारते समय आश्चर्यजनक रूप से आसानी से गलत हो जाती हैं।
यह लेख संख्या की बनावट, रोकी गई रेंज, 2011 में अंकों का मतलब क्या बदला, और यह संख्या क्यों कभी पहचान का प्रमाण नहीं थी और आज भी नहीं है — इन सबको समझाता है।
संख्या का आकार
नौ अंकों को तीन खंडों में पढ़ा जाता है: पहले तीन अंक, फिर दो, फिर चार। लिखते समय खंडों के बीच आम तौर पर हाइफ़न लगाया जाता है, हालांकि हाइफ़न केवल लेखन की परंपरा है, संख्या का हिस्सा नहीं, और बहुत से सिस्टम इसे बिना किसी विभाजक के एक लगातार श्रृंखला के रूप में सहेजते और छापते हैं।
हर खंड का अपना नाम है। पहले तीन अंक एरिया नंबर हैं, बीच के दो ग्रुप नंबर हैं, और आख़िरी चार सीरियल नंबर हैं। इन नामों को जानने का असली फ़ायदा यह है कि आरक्षित मान हर खंड के लिए अलग तय किए गए हैं।
पूरी संख्या को टेक्स्ट की तरह मानिए। किसी खंड के भीतर शुरू में आने वाला शून्य बिल्कुल सामान्य और पूरी तरह वैध है, और कोई भी ऐसा निर्णय जो इस मान को पूर्णांक बना दे, उस शून्य को चुपचाप मिटा देगा — यह ऐसी खामी है जिसने वर्षों में बहुत से फ़ॉर्म तोड़े हैं।
कौन सी रेंज कभी जारी नहीं होती?
जो प्रशासन यह संख्या जारी करता है उसने सार्वजनिक रूप से बताया है कि कुछ मान उपयोग नहीं किए जाते। एरिया खंड में सिर्फ़ शून्य वाला मान जारी नहीं होता, तीन छक्कों से बना मान जारी नहीं होता, और नौ सौ से ऊपर का पूरा खंड जारी नहीं होता। ग्रुप खंड में सिर्फ़ शून्य वाली जोड़ी जारी नहीं होती। सीरियल खंड में सिर्फ़ शून्य वाला समूह जारी नहीं होता।
इस पैटर्न पर ध्यान देना ज़रूरी है: हर बार रोका गया मान कोई प्रतिभंगी यानी गिरा हुआ रूप है, या चरम निचला सिरा, या जानबूझकर छोड़ा गया कोई विशेष मान। यह गुण उस हर व्यक्ति के लिए उपयोगी है जो वैलिडेटर लिख रहा है, क्योंकि इसका मतलब है कि कुछ सस्ती रेंज जांचें ही स्पष्ट रूप से मनगढ़ंत या गलत टाइप की गई संख्याओं की पूरी श्रेणी पकड़ लेती हैं।
लेकिन इसका यह अर्थ नहीं कि ये जांचें काफ़ी हैं। इन्हें पार कर लेने से सिर्फ़ इतना सिद्ध होता है कि संख्या किसी ज्ञात-असंभव रेंज में नहीं है; इससे यह नहीं पता चलता कि वह संख्या कभी जारी हुई थी या नहीं, और उसके धारक कौन है इस बारे में तो कुछ भी नहीं।
क्या पहला हिस्सा बताता है कि व्यक्ति कहां पैदा हुआ?
पहले यह उस राज्य से जुड़ा माना जाता था जहां संख्या के लिए आवेदन किया गया था, और उस जोड़ पर बनी लोककथा असली प्रथा से दशकों ज़्यादा जीवित रही। सन 2011 से संख्याएं रैंडम आधार पर दी जाती हैं, इसलिए अंक अब आवेदन का स्थान नहीं बताते, और जन्म तिथि तो इनमें कभी निहित थी ही नहीं।
इसका व्यावहारिक नतीजा यह है कि पहले तीन अंकों से किसी क्षेत्र, जन्म वर्ष या जारी होने की तारीख़ का अनुमान लगाने वाला कोई भी नियम अब गलत है, और वह बदलाव से पहले भी अविश्वसनीय था क्योंकि वह जोड़ व्यक्ति का नहीं, क्षेत्र का था। राज्य-प्रीफ़िक्स की तालिका से लिखा गया सत्यापन कोड इसी गलती के प्रोडक्शन तक पहुंचने का सबसे आम रास्ता है।
क्या SSN पहचान पत्र है?
नहीं। यह किसी विशेष प्रशासनिक उद्देश्य के लिए जारी की गई संख्या है, यह सामान्य उद्देश्य वाला राष्ट्रीय पहचान पत्र नहीं, नागरिकता का प्रमाण नहीं, और किसी के कौन होने का सबूत नहीं है। संख्या बता देना किसी व्यक्ति की पहचान सिद्ध नहीं करता, और जो सिस्टम केवल इस संख्या को पर्याप्त प्रमाण मान लेता है वह ऐसे रहस्य पर भरोसा कर रहा है जो कभी रहस्य था ही नहीं — यह संख्या नियोक्ता, मकान मालिक, क्लिनिक और उपयोगिता कंपनियां मांगती हैं, यानी यह बड़े पैमाने पर दर्ज भी होती है और बड़े पैमाने पर लीक भी।
यही पूरे विषय की ईमानदार समझ है, और यही कारण है कि जिन टेस्ट में असली लोग शामिल होते हैं उनके लिए यह संख्या बहुत बुरी बैठती है। सही आकार का काल्पनिक मान यह जांचने के लिए ठीक है कि फ़ॉर्म तीन खंडों में नौ अंक स्वीकार करता है या नहीं। टेस्ट डेटाबेस में रखा असली मान जोखिम है: वह किसी का है, उसे लीक हो चुकने के बाद वापस नहीं किया जा सकता, और स्टेजिंग एनवायरनमेंट पर कितना भी एक्सेस नियंत्रण लगा दीजिए, वह प्रतिलिपि सुरक्षित नहीं हो जाती।
फ़ॉर्म को इस संख्या के साथ कैसा व्यवहार करना चाहिए?
इसे केवल तब इकट्ठा कीजिए जब सचमुच कोई ठोस कारण हो, जितनी कम जगहों पर हो सके उतनी ही जगहों पर सहेजिए, हर ऐसी सतह पर छिपाइए जिसे पूरा मान ज़रूरी न हो, और इसे कभी लॉग पंक्ति में न छापिए। ये डेटा संभालने के फ़ैसले हैं, और ये उतने ही लागू होते हैं चाहे सिस्टम कोई पेरोल प्लेटफ़ॉर्म हो या कोई साइड प्रोजेक्ट।
सत्यापन के मामले में चतुर बनने की इच्छा रोकिए। किसी मान को इसलिए अस्वीकार करना कि उसके पहले तीन अंक मान्य प्रीफ़िक्स की सूची में नहीं हैं, वैध संख्याएं भी अस्वीकार कर देगा, क्योंकि वैध प्रीफ़िक्स की सूची कोई स्थिर भूगोल नहीं है और सार्वजनिक नियम केवल सिर्फ़-शून्य, तीन-छक्के और ऊपरी रेंज के लिए मौजूद है। आकार जांचिए, आरक्षित रेंज जांचिए, और बाकी छेड़िए मत।
जिन टीमों को किसी की असली संख्या छुए बिना इस फ़ील्ड का अभ्यास करना है वे काल्पनिक मान इस्तेमाल करती हैं। पहचान और टेस्ट डेटा जनरेटर से बने रिकॉर्ड इसी श्रेणी में आते हैं: वे प्रारूप पूरा करते हैं और आरक्षित रेंज से बचते हैं, वे टेस्टिंग के लिए बनाए गए हैं, और न किसी का रूप धारण करने के लिए उपयोगी हैं न उस जांच को पास करने के लिए जो संख्या को जारी करने वाले रिकॉर्ड से मिलाती है।
वैलिडेटर को क्या और किस क्रम में जांचना चाहिए?
छह जांचें लगभग सब कुछ कवर कर लेती हैं, और उनका क्रम केवल इसलिए मायने रखता है कि सबसे सस्ती जांच पहले चलनी चाहिए।
- मान मौजूद है और फ़ॉर्मैटिंग अक्षर हटाने के बाद केवल अंकों का बना है।
- विभाजक हटाने के बाद वह ठीक नौ अंकों का है।
- एरिया खंड सिर्फ़ शून्य नहीं है, वह बहिष्कृत तीन-छक्का मान नहीं है, और नौ सौ से नीचे है।
- ग्रुप खंड सिर्फ़ शून्य नहीं है।
- सीरियल खंड सिर्फ़ शून्य नहीं है।
- फ़ील्ड को टेक्स्ट के रूप में सहेजा और तुलना किया जाता है, ताकि शुरुआती शून्य बचे रहें।
इस सूची में एक भी जांच ऐसी नहीं है जो यह बताए कि संख्या किसी व्यक्ति से जुड़ी है। अगर किसी प्रोसेस को यह भरोसा चाहिए, तो उसे फ़ॉर्म के बाहर कोई सत्य का स्रोत चाहिए, और फ़ॉर्म वह दे ही नहीं सकता।
डेवलपर्स के लिए: सत्यापन नियम में क्या होना चाहिए
नियम को प्रारूप और आरक्षित रेंज तक सीमित रखिए, और वहीं रोक दीजिए। यह टिप्पणी कि इन अंकों में कोई भौगोलिक अर्थ नहीं है, एक अतिरिक्त शाखा से ज़्यादा मूल्यवान है, क्योंकि वरना फ़ाइल संपादित करने वाला अगला व्यक्ति अपने पुराने प्रोजेक्ट से याद प्रीफ़िक्स तालिका फिर से जोड़ देगा।
फिक्स्चर को भी ईमानदार रखिए। बनाया गया मान इस्तेमाल कीजिए, डेटासेट में ही उस पंक्ति को काल्पनिक के रूप में चिह्नित कीजिए ताकि लीक हुआ स्क्रीनशॉट खुद अपनी व्याख्या कर सके, और यह सुनिश्चित कीजिए कि किसी ने सुविधा के लिए चुपचाप कोई असली संख्या चिपका न दी हो। यह संख्या कोई सामान्य पहचानकर्ता नहीं है, और जो टेस्ट सूट इसे वैसा मान लेता है वह हर पढ़ने वाले को गलत सबक सिखाता है। टेस्टिंग के लिए बनाए गए रिकॉर्ड बस वही हैं — टेस्टिंग की चीज़ें, जिन्हें कभी किसी असली व्यक्ति की पहचान की जगह नहीं रखा जाना चाहिए और न कहीं पहचान के रूप में प्रस्तुत किया जाना चाहिए।
अगले कदम
अपनी सत्यापन दिनचर्या खोलिए और पहले तीन अंकों से स्थान या वर्ष निकालने वाली हर शाखा हटा दीजिए; अकेला यह बदलाव झूठे अस्वीकरण का एक बार-बार लौटने वाला स्रोत खत्म कर देता है। फिर पहचान जनरेटर में अमेरिकी रिकॉर्ड का एक बैच बनाइए और उन्हें उस फ़ील्ड से गुज़ारिए, जिसमें एक ऐसा रिकॉर्ड भी शामिल हो जिसका सीरियल खंड जानबूझकर सिर्फ़ शून्य हो, ताकि आरक्षित रेंज की जांच वाकई चलती है यह पक्का हो सके। देशों के बीच पहचान संख्याओं का व्यापक चित्र देखने के लिए राष्ट्रीय पहचान संख्या की लंबाई वाला लेख स्वाभाविक अगला कदम है, और फ़ील्ड स्तर की निर्भरताओं के लिए पहचान फ़ील्ड की सुसंगतता पढ़िए।