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