เมนู

เครื่องมือสร้างเลขบัตรประชาชน สำหรับงานทดสอบหลากประเทศ

เครื่องมือสร้างเลขบัตรประชาชนต้องรู้ว่าความยาวและหลักตรวจสอบของแต่ละประเทศไม่เหมือนกัน บทความนี้อธิบายรูปแบบของประเทศตัวอย่าง ห่วงโซ่ที่ทำให้ข้อมูลพังและขอบเขตของงานทดสอบยืนยันตัวตน

เผยแพร่เมื่อ

  • ข้อมูลทดสอบ
  • เลขประจำตัว

เครื่องมือสร้างเลขบัตรประชาชนคือเครื่องมือที่ให้หมายเลขประจำตัวที่ตรงตามรูปแบบของประเทศที่เลือก สำหรับใช้ทดสอบฟอร์มยืนยันตัวตน ระบบลงทะเบียน และขั้นตอนตรวจสอบลูกค้าของทีมเอง ปัญหาที่ทีมเจอบ่อยที่สุดไม่ใช่การสร้างตัวเลขขึ้นมาให้ได้ แต่คือการทำให้ตัวเลขนั้นผ่านการตรวจของระบบตัวเอง เพราะหมายเลขประจำตัวของแต่ละประเทศมีทั้งความยาว หลักตรวจสอบ และความหมายที่ฝังอยู่ในตัวเลข ซึ่งแตกต่างกันอย่างมาก บทความนี้จะอธิบายรูปแบบของประเทศตัวอย่างที่พบบ่อยว่าต่างกันอย่างไร ทำไมชุดตัวเลขที่พิมพ์ขึ้นลอย ๆ ใช้ทดสอบไม่ได้จริง เหตุใดความยาวจึงต้องผูกกับประเทศ ทำไมข้อมูลประจำตัวต้องสอดคล้องกับชื่อและวันเกิด และเส้นแบ่งของงานทดสอบยืนยันตัวตน เมื่ออ่านจบคุณจะตรวจชุดทดสอบของตัวเองได้ว่ายังมีช่องโหว่ตรงไหน

หมายเลขประจำตัวของแต่ละประเทศต่างกันอย่างไร?

ประเทศส่วนใหญ่มีหมายเลขประจำตัวที่ออกให้พลเมืองและผู้มีถิ่นพำนัก แต่ไม่มีมาตรฐานระหว่างประเทศที่บังคับให้ทุกประเทศใช้รูปแบบเดียวกัน ผลคือความยาว องค์ประกอบ และหลักตรวจสอบต่างกันราวกับเป็นคนละระบบ

ความต่างที่ทำให้ระบบพังมากที่สุดไม่ใช่จำนวนหลัก แต่คือชุดอักขระที่อนุญาต บางประเทศใช้ตัวเลขล้วน บางประเทศมีตัวอักษรนำหน้าหรือต่อท้าย บางแห่งมีเครื่องหมายคั่นในรูปแบบที่พิมพ์บนบัตรแต่ไม่เก็บในฐานข้อมูล และบางแห่งเปลี่ยนรูปแบบไปตามรุ่นของบัตรที่ออกในแต่ละช่วงเวลา ระบบที่สรุปว่าหมายเลขประจำตัวคือชุดตัวเลขล้วนจึงมักต้องแก้ไขภายหลังเมื่อขยายไปยังประเทศใหม่

ประเด็นที่ต้องเข้าใจคือความถูกต้องของรูปแบบเป็นเงื่อนไขจำเป็นแต่ไม่ใช่เงื่อนไขพอเพียงสำหรับการยืนยันตัวตน ระบบยืนยันตัวตนจริงต้องอาศัยการเทียบกับฐานข้อมูลของหน่วยงานผู้ออก ซึ่งงานทดสอบของทีมไม่ต้องไปถึงชั้นนั้น และไม่ควรพยายามไปถึงด้วยข้อมูลของใคร

ตัวอย่างที่คุ้นเคยที่สุดคือหมายเลขประกันสังคมของสหรัฐอเมริกา ซึ่งมีเก้าหลักและแบ่งเป็นสามกลุ่ม ระบบของประเทศนี้ตรวจเพียงรูปแบบและช่วงที่สงวนไว้ ไม่ได้ตรวจหลักท้ายด้วยวิธีคำนวณ ทำให้ตัวเลขที่พิมพ์ขึ้นลอย ๆ ผ่านการตรวจรูปแบบได้ง่ายกว่าที่คิด รายละเอียดของช่วงที่สงวนไว้อยู่ในบทความรูปแบบหมายเลขประกันสังคมของสหรัฐอเมริกาและช่วงที่สงวนไว้

ตัวอย่างที่ต่างออกไปคือเลขบัตรประชาชนของจีนซึ่งยาวสิบแปดหลักและประกอบด้วยรหัสพื้นที่ วันเกิด และหลักตรวจสอบท้ายอีกหนึ่งหลัก ประเทศบราซิลใช้ระบบที่มีหลักตรวจสอบสองหลักซึ่งคำนวณจากหลักอื่นทั้งหมด ประเทศตุรกีมีหมายเลขประจำตัวเก้าหลักที่ลงท้ายด้วยหลักตรวจสอบและมีข้อจำกัดเรื่องหลักแรก ประเทศสเปนใช้หมายเลขที่มีทั้งตัวอักษรและตัวเลขปนกัน ประเทศเวียดนามมีหมายเลขยาวสิบสองหลัก ส่วนประเทศอินโดนีเซียมีหมายเลขสิบหกหลักที่ฝังรหัสพื้นที่และวันเกิดไว้ภายใน

ความต่างเหล่านี้ไม่ได้เป็นรายละเอียดทางทฤษฎี แต่เป็นข้อเท็จจริงที่กำหนดว่าฟอร์มของทีมจะยอมรับข้อมูลของผู้ใช้จริงได้หรือไม่ ระบบที่ออกแบบจากตัวอย่างประเทศเดียวจะพังทันทีเมื่อเปิดให้ผู้ใช้ต่างประเทศใช้งาน ซึ่งเป็นปัญหาที่พบได้บ่อยในผลิตภัณฑ์ที่เริ่มจากตลาดเดียวแล้วขยายภายหลัง

ทำไมหมายเลขที่พิมพ์ขึ้นลอย ๆ ใช้ทดสอบไม่ได้?

ชุดตัวเลขอย่างหนึ่งสองสามสี่ห้าหกเจ็ดแปดเก้าเป็นตัวอย่างที่ทีมใช้กันบ่อยที่สุด และเป็นตัวอย่างที่ทำให้การทดสอบล้มเหลวเงียบที่สุด เพราะมันไม่ผ่านหลักตรวจสอบของแทบทุกประเทศ แต่ถ้าระบบของทีมไม่ได้ตรวจหลักท้าย ระบบจะยอมรับมันและทีมจะเข้าใจว่าฟอร์มทำงานถูกต้อง ทั้งที่ความจริงคือระบบขาดด่านตรวจที่สำคัญ

ผลลัพธ์ที่แย่กว่านั้นคือทีมทดสอบผ่าน แต่เมื่อนำระบบไปใช้จริง ระบบก็ยังตรวจอะไรไม่ได้อยู่ดี และเมื่อถึงเวลาต้องเชื่อมกับบริการตรวจสอบภายนอกที่ตรวจหลักท้ายจริง ข้อมูลจำนวนมากของทีมจะถูกปฏิเสธ ปรากฏการณ์นี้เรียกว่าการทดสอบที่ให้ความมั่นใจปลอม ซึ่งเป็นความเสี่ยงที่ทีมไม่รู้ตัวว่ากำลังแบกอยู่

ทางแก้คือใช้ชุดข้อมูลที่มีทั้งหมายเลขที่ควรผ่านและหมายเลขที่ควรถูกปฏิเสธ โดยหมายเลขที่ควรผ่านต้องผ่านหลักตรวจสอบจริงของประเทศนั้น และหมายเลขที่ควรถูกปฏิเสธต้องเป็นกรณีที่หลักท้ายผิด ไม่ใช่เพียงกรณีที่ความยาวผิด

วิธีตรวจสอบหลักท้ายที่ใช้กันทั่วไปในหลายประเทศมีภาพรวมอยู่ในบทความภาพรวมวิธีตรวจสอบหลักท้าย ซึ่งอธิบายว่าวิธีที่ต่างกันจับความผิดพลาดประเภทใดได้ และวิธีใดมีจุดอ่อนกับความผิดพลาดแบบใด

ทำไมความยาวของหมายเลขต้องผูกกับประเทศ?

ความยาวของหมายเลขประจำตัวไม่ใช่ค่าคงที่ ไม่มีค่าใดค่าหนึ่งที่ใช้ได้กับทุกประเทศ เพราะเหตุนี้ระบบที่กำหนดความยาวสูงสุดไว้ค่าหนึ่งเพื่อความสะดวกจะตัดข้อมูลของบางประเทศทิ้ง และระบบที่กำหนดความยาวตายตัวไว้ค่าหนึ่งจะปฏิเสธผู้ใช้ของประเทศอื่นทั้งหมด

วิธีที่ถูกคือกำหนดความยาวเป็นคุณสมบัติของแต่ละประเทศ แล้วให้ระบบเลือกกฎตรวจตามประเทศที่ผู้ใช้เลือก ในทางปฏิบัติหมายความว่าโครงสร้างของตัวตรวจสอบต้องมีตารางกฎต่อประเทศ ไม่ใช่ชุดเงื่อนไขที่เขียนไว้ในโค้ดตรง ๆ

ผลพลอยได้จากการทำแบบนี้คือระบบจะรองรับประเทศใหม่ได้โดยไม่ต้องแก้โค้ด แต่เพิ่มกฎเข้าไปในตาราง ซึ่งลดความเสี่ยงที่การเพิ่มประเทศใหม่จะทำให้ประเทศเดิมพัง บทความความยาวหมายเลขประจำตัวของแต่ละประเทศ รวบรวมค่าที่ใช้จริงไว้เป็นแนวทางตั้งต้น

อีกจุดที่ต้องคิดคือช่องสำหรับหมายเลขที่มีตัวอักษรปน บางประเทศใช้ตัวอักษรหนึ่งตัวรวมกับตัวเลข และบางแห่งมีทั้งแบบที่มีตัวอักษรและแบบที่ไม่มี ช่องที่กำหนดให้เก็บเฉพาะตัวเลขจะทำให้ผู้ใช้กรอกไม่ได้เลย และทำให้ทีมต้องหาทางหลบเลี่ยงซึ่งมักลงเอยด้วยการเก็บข้อมูลผิดรูปแบบ

ทำไมข้อมูลประจำตัวต้องสอดคล้องกับชื่อและวันเกิด?

หมายเลขประจำตัวไม่เคยเป็นข้อมูลลอยตัว มันผูกกับชื่อ วันเกิด และสัญชาติในระดับที่ระบบภายนอกใช้ยืนยันตัวตน เมื่อข้อมูลชุดหนึ่งไม่สอดคล้องกัน ระบบตรวจสอบจะปฏิเสธทันที และงานทดสอบที่ควรผ่านจะกลายเป็นว่าล้มเหลวโดยที่โค้ดไม่มีข้อบกพร่อง

ความสอดคล้องข้อแรกคือวันเกิด สำหรับประเทศที่มีวันเกิดฝังอยู่ในตัวหมายเลข ระบบที่ตรวจความสอดคล้องจะเทียบวันเกิดในหมายเลขกับวันเกิดในช่องวันเกิด ถ้าสองช่องไม่ตรงกัน ข้อมูลนั้นใช้ไม่ได้เลย แม้หมายเลขนั้นจะผ่านหลักตรวจสอบก็ตาม

ความสอดคล้องข้อที่สองคือสัญชาติและถิ่นพำนัก หมายเลขประจำตัวของแต่ละประเทศใช้ได้เฉพาะกับผู้ที่เกี่ยวข้องกับประเทศนั้น การนำหมายเลขของประเทศหนึ่งไปใส่ในระเบียนที่ระบุสัญชาติของอีกประเทศเป็นความผิดพลาดที่ระบบคุณภาพสูงตรวจเจอ

ความสอดคล้องข้อที่สามคือความสมเหตุสมผลเชิงภูมิศาสตร์ บางประเทศมีรหัสพื้นที่ฝังอยู่ในหมายเลข ถ้าระเบียนบอกว่าผู้ออกหมายเลขคือจังหวัดหนึ่งแต่รหัสในหมายเลขชี้ไปอีกจังหวัดหนึ่ง ข้อมูลนั้นก็ไม่สอดคล้องกันอีกเช่นเคย ภาพรวมของความผูกพันเหล่านี้อยู่ในบทความความสอดคล้องของช่องข้อมูลตัวตน

ควรออกแบบชุดทดสอบยืนยันตัวตนอย่างไร?

จุดเริ่มต้นคือแยกให้ชัดว่างานทดสอบยืนยันตัวตนมีสองชั้น ชั้นแรกคือรูปแบบและการตรวจภายใน ซึ่งทีมทดสอบเองได้ทั้งหมดด้วยข้อมูลสังเคราะห์ ชั้นที่สองคือการยืนยันกับแหล่งข้อมูลภายนอก ซึ่งทีมทดสอบไม่ได้ด้วยข้อมูลสังเคราะห์ และไม่ควรพยายามทดสอบด้วยข้อมูลจริงของใคร

สำหรับชั้นแรก ชุดทดสอบที่ควรมีคือหมายเลขที่ผ่านหลักตรวจสอบของแต่ละประเทศที่ทีมรองรับ หมายเลขที่หลักท้ายผิด หมายเลขที่ความยาวผิด และหมายเลขที่ช่วงตัวเลขถูกสงวนห้ามใช้ อย่างหลังนี้สำคัญเพราะมีระบบที่ปฏิเสธหมายเลขที่ขึ้นต้นด้วยศูนย์หรือที่อยู่ในช่วงที่สงวนไว้

สำหรับชั้นที่สอง สิ่งที่ทดสอบได้คือการจัดการผลลัพธ์ ไม่ว่าจะเป็นการตอบกลับว่าไม่พบข้อมูล การจัดการเมื่อบริการภายนอกไม่ตอบสนอง และการบันทึกเหตุการณ์เพื่อตรวจสอบภายหลัง ทั้งสามกรณีทดสอบได้โดยใช้ช่องทางจำลองแทนบริการจริง ซึ่งปลอดภัยและทำซ้ำได้

สิ่งที่ต้องระวังคืออย่าให้ชุดทดสอบยืนยันตัวตนกลายเป็นช่องทางเชื่อมข้อมูลจริง เมื่อมีการทดสอบที่ต้องใช้ข้อมูลจริง ต้องมีกระบวนการอนุมัติ ข้อจำกัดเวลา และการลบข้อมูลหลังทดสอบเสร็จ ซึ่งแตกต่างจากงานทดสอบปกติอย่างสิ้นเชิง

ขอบเขตของข้อมูลประจำตัวทดสอบคืออะไร?

ข้อมูลประจำตัวที่เครื่องมือสร้างให้เป็นข้อมูลที่สังเคราะห์ขึ้น ไม่ได้ออกโดยหน่วยงานใด ไม่ผูกกับบุคคลที่มีตัวตน และไม่สามารถผ่านการยืนยันกับแหล่งข้อมูลทางการได้ การที่รูปแบบและหลักตรวจสอบถูกต้องไม่ได้ทำให้มันกลายเป็นข้อมูลจริงแต่อย่างใด

ทีมจึงไม่ควรใช้ข้อมูลนี้เพื่อยืนยันอายุ เปิดบัญชี ขอสินเชื่อ หรือลงทะเบียนบริการใดที่เป็นการยืนยันตัวตนจริง และไม่ควรใช้แทนข้อมูลของบุคคลอื่นในทุกกรณี การใช้ข้อมูลของผู้อื่นไม่ว่าจะในรูปแบบใดเป็นเรื่องที่ผิดทั้งทางกฎหมายและทางจรรยาบรรณ

แนวปฏิบัติที่ปลอดภัยคือใช้ข้อมูลนี้กับระบบทดสอบของทีมเอง กับสภาพแวดล้อมที่ไม่เชื่อมกับฐานข้อมูลจริง และกำหนดให้ระเบียนทดสอบถูกทำเครื่องหมายไว้เพื่อให้ลบออกได้ในคราวเดียวเมื่อเลิกใช้ หลักการเรื่องความเป็นส่วนตัวในบริบทนี้มีอธิบายไว้ในบทความความเป็นส่วนตัวกับข้อมูลทดสอบตัวตน

ก้าวต่อไป

เริ่มจากเปิดตัวตรวจสอบหมายเลขประจำตัวของทีมแล้วดูว่ามีกี่ประเทศที่ตรวจหลักท้ายจริง และมีกี่ประเทศที่ตรวจแค่ความยาว ตัวเลขนี้จะบอกได้ทันทีว่าชุดข้อมูลทดสอบของคุณมีจุดบอดตรงไหน

ถ้าต้องการชุดข้อมูลสำหรับทดสอบ ลองใช้เครื่องมือสร้างข้อมูลตัวตน ของเว็บไซต์นี้ ซึ่งให้ชื่อ ที่อยู่ หมายเลขโทรศัพท์ และหมายเลขประจำตัวที่สอดคล้องกันภายในระเบียนเดียว และถ้าคุณต้องป้องกันไม่ให้ข้อมูลหลุดออกจากระเบียนทดสอบ มีหลักการที่ใช้ได้ทั่วไปอยู่ในบทความข้อมูลตัวตนในชุดทดสอบประจำ

หมายเลขประจำตัวทุกชุดที่เครื่องมือสร้างให้เป็นข้อมูลที่สังเคราะห์ขึ้นเพื่อการทดสอบ ไม่ตรงกับบุคคลจริงใด ไม่ได้ออกโดยหน่วยงานใด และไม่สามารถใช้ผ่านการยืนยันตัวตน เปิดบัญชี หรือขอใช้บริการใดที่ต้องอาศัยตัวตนจริงได้ การทดสอบต้องทำเฉพาะกับระบบของทีมเองหรือระบบที่ได้รับอนุญาตอย่างชัดเจนเท่านั้น

อ่านต่อ

เครื่องมือยอดนิยมและบทความวิธีใช้

เครื่องมือยอดนิยมและบทความวิธีใช้

บทความวิธีใช้ที่ถูกค้นหามากที่สุด หนึ่งบทความต่อหนึ่งเครื่องมือในเว็บไซต์