תפריט

מחולל מספרי זהות: מזהים בתבנית נכונה לבדיקות KYC

מחולל מספרי זהות מפיק מזהים לפי כללי התבנית וספרת הביקורת של כל מדינה, לבדיקת זרימות זיהוי לקוח. כאן מפורטים המבנים, הבדיקות והגבולות.

פורסם

  • נתוני בדיקה
  • זהות
  • בדיקות KYC

מחולל מספרי זהות מפיק מזהים שמתאימים לתבנית שכל מדינה מנפיקה בפועל, כולל האורך, מערכת התווים, מקומה של ספרת הביקורת והכללים הפנימיים שהופכים מספר אחד לתקין ואחר לפסול. ההבדל בין כלי שימושי לבין מחרוזת ספרות אקראית מסתכם בכללים האלה, כי כל מסלול אימות רציני בודק אותם.

המדריך הזה בוחן כיצד מספרי זיהוי נבדלים בין מדינות, מדוע ערך מציין מקום כמו 123456789 נכשל בכל בדיקה ולכן אינו בודק דבר, מדוע יש להגדיר את האורך לכל מדינה בנפרד במקום להניח אותו, ומהו הגבול הישר של רשומה בדיונית בתהליך זיהוי לקוח. בסופו של דבר אפשר לדעת אילו תכונות דרושות לזהות בדיקה כדי להפעיל באמת תהליך קליטה אמיתי.

מדוע מספרי זיהוי אינם תבנית אחת באורכים שונים?

ההנחה הנפוצה שכל מדינה מנפיקה מזהה שהוא בעצם מספר ארוך עם סכום ביקורת שגויה בדרכים שמפילות מערכות אמיתיות. מדינות נבדלות בשאלה אם המזהה בכלל מספרי, בשאלה אם הוא מונפק בלידה או בהרשמה, בשאלה אם הוא מקודד תאריך, ובשאלה אם הוא מופיע על כרטיס או רק במרשם מרכזי.

מספר ה-SSN האמריקאי הוא תשע ספרות בשלוש קבוצות, והתבנית היא הדבר היחיד שהמספר הגלוי נושא. המאמר על תבנית מספר ביטוח לאומי מסביר אילו טווחים אינם מונפקים לעולם ומדוע מאמת שמקבל כל מחרוזת בת תשע ספרות מקבל מספרים שלא יכולים להתקיים.

סין מנפיקה מספר זהות תושב בן שמונה עשרה תווים שמתחיל בקוד כתובת, ממשיך בתאריך לידה, ומסתיים בתו ביקורת שיכול להיות האות X. ברזיל מנפיקה את ה-CPF כאחת עשרה ספרות ששתיים מהן האחרונות הן ספרות ביקורת המחושבות מתשע הספרות שקדמו להן, ולעיתים קרובות הוא נכתב עם סימני פיסוק שמפענח חייב לטפל בהם. טורקיה מנפיקה את מזהה הזהות שלה כאחת עשרה ספרות שהספרה הראשונה בהן אינה אפס ושתי הספרות האחרונות נגזרות מהאחרות.

ספרד מנפיקה את ה-DNI כשמונה ספרות בתוספת אות ביקורת המחושבת לפי מודולוס, וה-NIE לתושבים זרים הולך באותה סכמה עם אות מובילה אחרת. אינדונזיה מנפיקה מספר NIK בן שש עשרה ספרות שמטמיע קוד נפה ותאריך. וייטנאם מנפיקה מספר זהות אזרח בן שתים עשרה ספרות. רוסיה מנפיקה את ה-INN כעשר או שתים עשרה ספרות בהתאם לישות, ואת ה-SNILS כאחת עשרה ספרות בתבנית ממוספרת. המאמר על אורך מספר זהות לפי מדינה מרכז את האורכים במקום אחד.

מדוע ספרת הביקורת היא כל העניין?

ספרת ביקורת הופכת מחרוזת ספרות לערך שאפשר לבדוק את עקביותו הפנימית. בלעדיה, כל מספר באורך הנכון תקף באותה מידה, ושדה שפשוט סופר תווים יקבל שגיאת הקלדה, הדבקה קטועה ומספר מומצא באותה מידת התלהבות.

איתה, מאמת יכול לדחות את הרוב המכריע של ערכים שהוקלדו בטעות עוד לפני שמשהו בהמשך השרשרת רואה אותם. זה כל הרווח, וזו הסיבה שמחולל שאינו מחשב ספרות ביקורת מייצר נתונים שלא יכולים להפעיל את מסלול האימות שהוא אמור לבדוק.

ההשלכות של ויתור עליהן קלות לראייה. רשומת בדיקה שמלאה בערכי מציין מקום תעבור בדיקת אורך ותיכשל בכל סכום ביקורת, ולכן הבדיקה תפעיל רק את ענף הדחייה. תקלות בענף הקבלה, כלומר הענף שרץ בייצור, יישארו בלתי מבוקרות, והמערך ידווח על הצלחה בעוד הוא אינו מכסה דבר.

זו הסיבה שהחשבון חשוב יותר מהמראה. המאמר על ספרות ביקורת במספרי זהות עובר על שיטות המודולוס שנהוגות במספר מדינות, והמאמר על סקירת אלגוריתמים לספרת ביקורת ממקם אותן במשפחה רחבה יותר של בדיקות שכוללת מספרי חשבון בנק וברקודים. כשנבחר מחולל, השאלה שיש לשאול היא אילו אלגוריתמים של מדינות הוא מיישם ואם הפלט עובר מאמת בלתי תלוי. מאמת כזה שווה לכתוב פעם אחת ולתחזק לצד המחולל, מפני שהוא משמש גם כתיעוד של הכללים שמומשו: מי שמוסיף בהמשך מדינה חדשה רואה מיד אילו תבניות כבר טופלו ואילו עדיין חסרות.

מדוע יש להגדיר את האורך בנפרד לכל מדינה

שום דבר בשדה זיהוי לא אמור להיות קבוע בקוד. סכימה ששומרת כל מזהה בעמודה ברוחב אחיד תחתוך את הארוכים ותשאיר מקום ריק לקצרים, ומאמת שמניח אורך יחיד ידחה כל מדינה שלא נכתבה עבורו. בדיקות שרצות על מזהה בודד נוטות לפספס את הקצוות של השדה, ולכן כדאי להריץ כל סכימה מול קבוצה קטנה של ערכים קצרים וארוכים ולא רק מול ערך אחד תקין.

התכנון המעשי הוא שדה מדינה שבוחר מערכת כללים, ומערכת כללים שנושאת את האורך, את התווים המותרים, את אלגוריתם הביקורת ואת אופן ההצגה של הערך. הערך הנשמר והערך המוצג הם בדרך כלל שונים, כי מדינות רבות מדפיסות סימני פיסוק שאינם חלק מהמזהה עצמו.

ההגדרה חייבת גם לטפל במדינות שאינן מנפיקות מזהה כזה כלל. במקרים האלה השדה אמור להיות נעדר באופן לגיטימי ולא ממולא במחרוזת שנראית סבירה. ערך נעדר וערך שגוי נכשלים באופן שונה בהמשך השרשרת, וסכימה שאינה מסוגלת לבטא היעדרות תאחסן בסופו של דבר מזהה מומצא ברשומה שלא היה בו מזהה מעולם.

כשקיימים כמה מזהים באותה מדינה, המודל צריך להבדיל ביניהם. מספר מס, מספר ביטוח סוציאלי ומספר זהות לאומית יכולים כולם להיות בני אחת עשרה ספרות באותו תחום שיפוט, והתייחסות אליהם כשדה אחד מבטיחה שהבדיקה תבדוק בסופו של דבר את הלא נכון. מתן שם לכל מזהה לפי מהותו ולא לפי מקומו בטופס הוא הדרך הזולה ביותר להפריד ביניהם, והיא גם הופכת ייצוא ממדינה אחת לקריא במדינה אחרת.

כיצד מתנהג מזהה בדיוני בתהליך זיהוי לקוח

תהליך זיהוי לקוח עושה בדרך כלל כמה דברים עם מזהה. הוא בודק את התבנית, מחשב את ספרת הביקורת, שולח את הערך לשירות אימות חיצוני, שומר את התוצאה, ולעיתים שומר גם תמונה של מסמך. מספר מחולל יספק את שני השלבים הראשונים וייכשל בשלישי, וזו ההתנהגות הנכונה עבור נתונים בדיוניים. המעבר בין המישור המקומי לבין המישור החיצוני הוא בדרך כלל נקודת הכשל של מערך בדיקות: מסלול שמתחיל לעבוד עם שירות אמיתי מפסיק להיות דטרמיניסטי, ותוצאה שמשתנה בין הרצות אינה יכולה לשמש כבדיקת רגרסיה מהימנה.

הכשל בשלב השלישי הוא מה שהופך את הרשומה לבטוחה. מכיוון שאף רשות מנפיקה אינה יודעת על קיומו של המספר, שום שירות אימות אינו יכול לאשר אותו, ושום חשבון אינו יכול להיפתח על בסיסו. אם מספר מחולל היה מספק אי פעם אימות חיצוני, פירושו של דבר שהמספר שייך למישהו, וזו תהיה תקלה חמורה במחולל ולא תכונה.

פירושו של דבר שבדיקות זיהוי לקוח עם מזהים בדיוניים מתקיימות בשני מישורים. המישור המקומי בודק את האימות, העיצוב, הטיפול בשגיאות והשמירה של המערכת שנמצאת בבעלות הבודק, וערכים בדיוניים אידיאליים עבורו. המישור של האינטגרציה דורש סביבת ניסוי שמספק ספק האימות, וסביבות כאלה מגיעות בדרך כלל עם זהויות בדיקה קבועות משלהן. ערבוב בין השניים, כלומר רדיפה אחרי מספר בדיוני דרך נקודת אימות חיה, אינו מייצר דבר מלבד רעש.

כדאי גם להיזהר לגבי מה שנבדק בשלב החיצוני. בדיקה שמצפה לקוד דחייה מסוים מספק אמיתי בודקת את ההתנהגות הנוכחית של הספק, והיא משתנה בלי הודעה מוקדמת. בדיקה שמצפה שהאפליקציה תטפל בדחייה באופן מנומס בודקת את התוכנה של מי שמריץ את הבדיקה, וזה הדבר שנמצא בבעלותו. אותו היגיון חל על תזמון הבדיקה: אם התהליך מאמת באופן א-סינכרוני, המקרים המעניינים הם תשובה איטית, פסק זמן ותשובה שמגיעה פעמיים, ואלה זולים יותר להפקה עם מדמה שנמצא בשליטה עצמית מאשר עם סביבת ניסוי של ספק שעונה באופן קבוע.

מהם גבולות הציות בבדיקות זהות

הגבול הראשון הוא שרשומה בדיונית אינה אדם. יכול להיות שיש בה שם, תאריך לידה, כתובת ומזהה, ואף אחד מאלה אינו שייך לאיש. הצגתה כזהות של מישהו, או שימוש בה כדי להתחזות לאדם אמיתי, הם ניצול לרעה ללא קשר לאופן שבו הופקה הרשומה.

הגבול השני נוגע לנתונים אמיתיים. רשומה שמשלבת שם אמיתי עם מזהה אמיתי היא זהות אמיתית בכל הגדרה מעשית, והעתקת רשומות כאלה לסביבת בדיקות היא חשיפה של מידע. המאמר על נתוני זהות לבדיקה מסביר מדוע העתקת שורות מייצור לסביבה נמוכה יותר היא בעיה גם רגולטורית וגם תפעולית, והמאמר על GDPR ונתוני זהות לבדיקה מכסה את המסגרת המשפטית.

הגבול השלישי הוא התכלית. מזהה מחולל קיים כדי להפעיל תהליך שנמצא בהפעלה של מי שמריץ את הבדיקה, ואסור להשתמש בו כדי לפתוח חשבון אמיתי, לעבור שלב אימות, לתבוע זכות, להשיג מסמך, או לעבור בקרה שקיימת כדי להגן על מישהו. זה נכון בין אם התהליך שייך לבודק ובין אם הוא שייך לצד שלישי.

הגבול הרביעי הוא שמירת הנתונים. גם רשומות בדיוניות מצטברות, ומסד נתונים של מיליון זהויות מחוללות אינו מסוכן כשלעצמו אבל אינו ניתן להבחנה במבט חטוף מאחד שכן מסוכן. סימון שורות מחוללות, שמירת פרמטרי ההפקה ומחיקת רשומות שאין בהן עוד שימוש שומרים על ההבחנה גלויה.

גבול חמישי הוא הצגה ישרה. אם רשומה בדיונית צריכה אי פעם לצאת מסביבת הבדיקות, בהדגמה, בצילום מסך או בקורס הדרכה, יש לסמן אותה כמחוללת בכל מקום שבו קורא עלול לטעות ולחשוב שמדובר בנתונים של אדם אמיתי. הסימון אינו עולה דבר ומסיר עמימות שלקורא אין כל דרך לפתור בכוחות עצמו.

מה צריכה להכיל רשומת זהות לבדיקה

רשומה שימושית נושאת קבוצה קוהרנטית של שדות ולא מזהה בלבד. שמות פרטיים ושם משפחה המתאימים למדינה, תאריך לידה שעולה בקנה אחד עם טווח גילאים סביר, כתובת בתוך אותו תחום שיפוט, מספר טלפון שנושא את קידומת החיוג של המדינה, והמזהים שהמדינה הזו מנפיקה בפועל. כל זוג בקבוצה הזו מגביל את החבר האחר שלו, וזו התכונה שהופכת את הרשומה לשמישה.

כדאי לספק גם רשומה קבועה עבור בדיקות חוזרות וגם רשומה מחוללת עבור חקירה. הרשומה הקבועה הופכת בדיקת רגרסיה למשמעותית, והרשומה המחוללת מוצאת מקרים שאיש לא רשם. מחולל הזהויות באתר הזה בנוי כך שאותו זרע עם אותה מדינה מחזיר את אותה רשומה, וכך רשומת בדיקה נשארת יציבה בין הרצות בעוד רשומות אחרות חוקרות את המרחב.

לאחר מכן יש לאמת את הפלט באופן בלתי תלוי. לוקחים מזהה מחולל, מריצים אותו דרך מאמת שנכתב בעצמאות מהאלגוריתם המפורסם, ומאשרים שספרת הביקורת עוברת. הרגל בודד כזה תופס סוג שלם של הגדרה שגויה שבה נבחרת מדינה אחת אבל מוחלים הכללים של מדינה שכנה. המאמר על עקביות שדות זהות מתאר את הבדיקות החוצות שדות שכדאי להוסיף לצידו.

כל מזהה שמופק בדרך הזו הוא נתוני בדיקה בדיוניים. התבנית, האורך וספרת הביקורת הולכים אחר הכללים המפורסמים כדי שאפשר יהיה להפעיל תוכנה, אבל המספר אינו שייך לאף אדם, הוא מעולם לא הונפק על ידי רשות כלשהי, ואסור להשתמש בו כדי להתחזות למישהו, כדי לפתוח או לרשום חשבון אמיתי, כדי לעבור אימות זהות אמיתי, או כדי להשיג זכות או מסמך כלשהם.

המשך קריאה

כלים פופולריים ומדריכי שימוש