קוד PIN בארנק קריפטו: היכן נשבר אישור עסקאות
אישור עסקה באפליקציה כמעט תמיד קשור לקוד PIN: המשתמש מקליד ארבע עד שש ספרות, האפליקציה משווה אותן לערך שנשמר במכשיר ושולחת את הפעולה לחתימה. נקודת התורפה של האישור היא בכך שבדיקת הזהות של המשתמש מתרחשת לפני יצירת הפעולה ואינה קשורה כלל לתוכן שלה. PIN מאשר "זה אני", אבל לא "אני מאשר בדיוק את הכתובת הזאת ואת הסכום הזה".
מכאן נגזר סוג הכשל היקר ביותר — החלפת נתונים בין המסך לחתימה. במסך האישור כתובת הנמען והסכום הם אחדים, אבל למטען החתימה נכנסת כתובת אחרת: המשתמש רואה פרטים נכונים, מקליד PIN נכון, ובעצמו מאשר את העברת הכספים החוצה מהארנק.
וריאציה שנייה מאותו סוג — שימוש חוזר בתגובה: אם результат ההקלדה אינו קשור לפעולה מסוימת ולמועד, די באישור מוצלח אחד כדי לבצע סדרת חיובים בלי מעורבות הבעלים.
לא פחות כואבת הצד השני — הזמינות. ביומטריה מפסיקה לעבוד אחרי עדכון מערכת, PIN נשכח, ואין תרחיש שחזור בלי התקנה מחדש של הארנק ובלי עבודה עם צירוף השחזור.
האדם לא יכול לשלוח פעולה, אבל גם לא מבין למה; התמיכה מקבלת שטף פניות שבהן צריך גם להוכיח זכות לחשבון וגם לא לתת סיבה לעקוף את הבדיקה.
הסיבה המשותפת לכל המקרים האלה אחת: ההגנה של ארנק קריפטו בנויה סביב סוד מקומי, לא סביב הפעולה. בהמשך נפרק איך זה נסגר — הצמדת PIN לפעולה מסוימת, בדיקה בצד השירות, מגבלות על ניסיונות הקלדה ותרחיש שחזור גישה צפוי.
מה נותן אישור פעולות מקומי באפליקציה
אישור פעולות מקומי בנוי כך: קוד PIN לא נשלח לשרת, אלא משחרר מפתח פרטי באחסון המאובטח של הפלטפורמה, והבדיקה מתבצעת בזיכרון האפליקציה. לכן זמן התגובה של האישור — שברירי שנייה והוא אינו תלוי באיכות הערוץ, ולשירות נשלחת רק הפעולה שכבר חתומה. סוג אחד של כשלי הגנה נעלם לחלוטין: אי אפשר יותר ליירט או לבקש קוד PIN בצד השירות.
עבור התמיכה וניתוח אירועים זה גם מורגש. שיעור העסקאות במחלוקת יורד — התרחיש "לא אני אישרתי" נסגר בחתימה ניתנת לבדיקה, והיומן מראה באיזה מכשיר שוחרר המפתח. נוחות האישור גדלה: פעולה אחת במקום המתנה לתגובת השירות.
עמידות לניחוש
מונה הניסיונות הכושלים נשמר באותו אחסון מאובטח ואינו מתאפס בהתקנה מחדש של האפליקציה. ההשהיה בין הניסיונות גדלה, ולאחר מיצוי המגבלה המפתח נמחק יחד עם העותק המקומי, והגישה חוזרת רק באמצעות צירוף השחזור. ניחוש קוד PIN נעשה יקר יותר ממה שהוא מגן עליו.
תרחישי שחזור
קוד PIN שנשכח אינו אומר אובדן גישה: הוא משוחזר מגיבוי של המפתח או מצירוף השחזור, והקוד עצמו מוחלף בלי להנפיק כתובת חדשה.
כניסה מהירה באמצעות ביומטריה של המכשיר (ב-Android ובמערכת iOS) מסירה חיכוך בפעולות יומיומיות, אבל אינה מחליפה את קוד PIN — הביומטריה רק משחררת את האחסון, בעוד הקוד עצמו נשאר קו ההגנה האחרון.
מצבי אישור עסקאות: מה להשוות לפני הבחירה
מצב אישור קושר את כוונת המשתמש לחתימה על הפעולה. העברה באמצעות קוד PIN באפליקציה והעברה באמצעות מפתח חומרה נראות ללקוח אותו דבר, אבל סוג הסיכון שלהן שונה: במקרה הראשון הסוד חי בזיכרון המכשיר, בשני — אינו עוזב את המודול המאובטח. לכן כדאי להשוות אפשרויות לא לפי נוחות, אלא לפי מה בדיוק נבדק לפני השליחה.
| אפשרות | מתי מתאימה | מגבלות |
|---|---|---|
| קוד PIN באפליקציה | פעולות קטנות ותכופות | הסוד חי במכשיר, הגנה חלשה מפני ניחוש |
| אישור ביומטרי | תשלומים יומיומיים, כניסות חוזרות | מוצמד למכשיר מסוים, אי אפשר לבטל טביעת אצבע |
| אישור בצד השרת | סכומים גדולים, החלפת פרטים | נדרש ערוץ קבוע, אי-זמינות רשת חוסמת את הפעולה |
| אחסון מפתחות בחומרה | ארנקים עם אחסון באחריות | תהליך נפרד של הנפקה ושחזור של אמצעי החומרה |
איך לבחור מצב לפי פרופיל סיכון
ככל שהמגבלה גבוהה יותר והפעולה בלתי הפיכה יותר, כך יש יותר חוליות בשרשרת האישור. קוד PIN מכסה הוצאות יומיומיות, ביומטריה מסירה חיכוך בפעולות חוזרות, ומשיכת כספים והחלפת כתובת הנמען דורשות אישור בצד השרת. אחסון מפתחות בחומרה מפעילים במקום שבו חשיפה של מכשיר אחד לא אמורה לפתוח גישה לכספים.
התאמת מצבים לגרסה הנוכחית
סכימת עבודה — לא שיטה אחת, אלא ספים: עד המגבלה מספיק אישור מקומי, מעליה — אישור שרת, עם השהיה לביטול. אמצעים עם אחסון חומרה כמו YubiKey תופסים את הרמה העליונה ואינם מתאימים לפעולות יומיומיות. כל הסט נבדק להתאמה עם גרסאות האפליקציה והחלק של השרת לפני שחרור.
איך אנחנו מטמיעים אישור פעולות: שלבי עבודת הנדסה
תרחיש אישור פעולה בארנק קריפטו הוא לא מסך הקלדת קוד PIN, אלא חיבור של "מי מבקש אישור, במה הוא נבדק ומה קורה במקרה של כשל". לכן מתחילים לא מהמקלדת, אלא מביקורת: בתוצאה נדרשת רצף שניתן להריץ על מכשירים אמיתיים ולהעביר לתמיכה בלעדינו.
ביקורת וסכימת אישור
- ביקורת הגנת האישור — מפרקים היכן קוד PIN נשמר ולמה הוא מושווה, מי יכול ליזום בקשה, מה נכנס ליומן ומה נשאר בלתי נראה. מתעדים נקודות תורפה: יירוט קלט, עקיפת ביומטריה, חזרה על פעולה שכבר אושרה.
- סכימת אישור פעולה — מתארים מסלולים נפרדים להעברה, לחתימה ולשינוי הגדרות, מפרידים בין אישור בקוד PIN לאישור ביומטרי, וקובעים מגבלות שמעליהן מתקבל רק קוד PIN.
- הגדרת ניסיונות וחסימות — קובעים מספר ניסיונות, זמן המתנה לקלט והתנהגות לאחר סדרת כישלונות: השהיה מצטברת, חסימה זמנית, מסלול שחרור ברור.
בדיקה וקבלה
- בדיקת תרחישי שחזור — קוד PIN שנשכח, מכשיר חדש, אובדן גישה לדואר ולמספר. כל מסלול חייב להוביל למצב צפוי, ולא ל"הכספים חסומים לתמיד".
- בדיקות קבלה — מריצים תרחישים על דגמי מכשירים אמיתיים, בודקים קטיעת פעולה, ביטול, חזרה והתנהגות בעת אובדן רשת.
- מסירת תיעוד — סכימות אישור, נוהלי הפעלה, תיאורי אלגוריתמים של חסימה ושחזור, כדי שהתמיכה תסגור פניות כאלה בעצמה.
סכימות, מסכים, כללי גישה ותיעוד לאישור
אחרי השחרור נשאר ללקוח לא רק אישור פעולות עובד בקוד PIN, אלא גם ערכת ארטיפקטים שלפיה מפתחים את המשימה בלי מחברי הקוד. התיעוד יושב ליד המאגר ומתעדכן באותו שינוי שבו מתעדכנת הלוגיקה: אחרת בעוד חצי שנה אף אחד לא יסביר למה מגבלת הניסיונות נבחרה דווקא כזאת.
- סכימות אינטראקציה. רצפים של קריאות בין האפליקציה, חלק השרת ושירות החתימה: היכן נוצרת הבקשה, היכן נבדק הקוד, היכן גדל מונה הניסיונות הכושלים. סכימה נפרדת — שחזור לאחר ניתוק קשר.
- הדמיות מסכי אישור. כל המצבים: הקלדת קוד, המתנה לתגובה, שגיאה, ניסיונות שמוצו, שחרור, החלפת PIN. עם טקסטים, זמן תגובה והתנהגות בעת מזעור האפליקציה.
- כללי גישה. מי בפאנל הניהול רואה את יומן הפעולות, מי מסיר חסימה, מי משנה את סף הניסיונות. מטריצת "תפקיד → פעולה → עקבה בביקורת".
- נוהל תגובה. פעולות בעת סדרת ניסיונות כושלים, חשד לחשיפה ודליפת מפתחות: מי מקבל החלטה, בתוך כמה זמן, איך מתבצעת רוטציה.
- מדריך לתמיכה. עץ החלטות לפניות טיפוסיות, פענוח קודי שגיאה, גבולות אחריות ונקודות הסלמה למהנדסים.
- יומן החלטות. למה נבחרו מגבלות, השהיות ושיטת אחסון חומר המפתח האלה — כדי שעריכות עתידיות לא ישברו את הלוגיקה שהונחה.
מעבירים ערכה עם הסבר לצוות שלכם: שינויים באישור פעולות בהמשך יכול לבצע כל מהנדס שמכיר את הפרויקט.
מקרה בוחן: איך צמצמנו את שיעור העסקאות במחלוקת פי ארבעה
ארנק עם עשרות אלפי משתמשים פעילים אישר כל עסקה בקוד חד-פעמי בהודעה: הקוד הגיע באיחור, אבד בעת החלפת מפעיל, ובניוד מספר הפעולה יכלה להיתקע בסטטוס "בטיפול" במשך שעות.
שיעור העסקאות במחלוקת הגיע עד 1.8% מהיקף האישורים, זמן האישור הממוצע — 45 שניות, והתמיכה קיבלה 3.2 פניות לכל אלף עסקאות.
מה שינו
את האישור העבירו לתוך האפליקציה: קוד PIN של ארנק קריפטו הוצמד למכשיר מסוים ולמפתח באחסון מאובטח, ובמודלים עם ביומטריה ברמת Face ID הוסיפו שחרור במקום הקלדה ידנית. PIN נבדק בצד הלקוח, לשרת נשלחת רק התוצאה החתומה — יירוט הקוד והחלפת המספר הפסיקו לתת גישה לפעולה.
ספי סכומים ומונה הניסיונות הוגדרו בנפרד: מעל המגבלה מופעלת בדיקה נוספת, מתחתיה — האישור תופס ניסיון אחד.
מה נהיה
| מדד | לפני | אחרי |
|---|---|---|
| שיעור העסקאות במחלוקת | 1.8% | 0.45% |
| זמן אישור ממוצע | 45 שנ׳ | 7 שנ׳ |
| פניות לתמיכה לכל 1000 עסקאות | 3.2 | 1.1 |
| עסקאות שבהן הקוד לא הגיע | 6.4% | 0.2% |
המדדים נלקחו על חתך תעבורה זהה שלושה חודשים לאחר ההשקה. האישור הפסיק להיות צוואר בקבוק: שיעור העסקאות במחלוקת ירד פי ארבעה, והעומס על התמיכה הצטמצם כמעט פי שלושה — המהנדסים שהתפנו עברו למשימות פיתוח, ולא לניתוח העברות תקועות.
במה שונה קוד PIN בארנק קריפטו מביומטריה?
קוד PIN וביומטריה סוגרים משימה אחת — לאשר שהפעולה יזומה על ידי הבעלים — אבל נשענים על מאפיינים שונים. PIN הוא ידע: הוא אינו מוצמד למכשיר מסוים ולכן עובד בעת שחזור גישה ובטלפון חדש. ביומטריה היא מאפיין בעלים: התבנית נשמרת במודול המאובטח של המכשיר, אינה יוצאת ממנו ואינה מועברת.
מכאן המגבלה המרכזית — כאשר התבנית נחשפת, אי אפשר לבטל אותה כמו קוד: מחליפים או את המכשיר עצמו או את שיטת האישור.
העמידות לניחוש נקבעת לא לפי אורך הקוד, אלא לפי המקום שבו נספרות הניסיונות. קוד ספרתי קצר ללא מונה וללא השהיה מצטברת ניתן לנחש באופן מקומי; מונה, חסימה לאחר סדרת שגיאות ובדיקה בצד השירות הופכים את הניחוש לחסר תוחלת. ביומטריה במובן הרגיל אינה ניתנת לניחוש — תוקפים בהחלפת תבנית או בעקיפת בדיקה במכשיר שנחשף.
גורם שני נדרש במקום שבו מחיר הטעות הוא המרבי: אישור סכומים גדולים, שליחה לכתובת נמען חדשה, החלפת מכשיר, שחזור גישה. סכימת עבודה — ביומטריה לפעולות יומיומיות מהירות, PIN כגיבוי חובה וכנסיגה המבוקרת היחידה אם הערוץ הביומטרי נחשף. לכן בפרויקט שתי השיטות חיות במקביל ונבדקות באופן בלתי תלוי, ולא מחליפות זו את זו.
ספקות טכניים נפוצים סביב אישור פעולות
אישור פעולה בקוד PIN הוא אזור שבו נפגשים דרישות של ספק תשלומים, התנהגות של צומת בלוקצ'יין והציפיות של המשתמש. להלן ניתוחים של ספקות שצפים לרוב בבדיקות הקבלה ובשבועות הראשונים אחרי השחרור.
המשתמש שכח קוד PIN — אפשר לשחזר אותו?
לא: הקוד אינו נשמר בטקסט גלוי לא באפליקציה ולא בשרת, ולכן אי אפשר "להזכיר" אותו. התרחיש העובד — איפוס באמצעות צירוף השחזור והקצאת קוד חדש. המפתחות והיתרה נשמרים, משתנה רק שיטת אישור העסקאות.
היכן בדיוק נשמר קוד PIN?
מן הקוד נגזר מפתח באמצעות פונקציה איטית עם salt, ובמכשיר נשמר רק ערך בדיקה — באחסון המאובטח של הפלטפורמה, שאינו נגיש לאפליקציות אחרות. לשרת נשלחת הפעולה החתומה, לא הקוד עצמו. לכן לא דליפת מסד נתונים ולא יירוט תעבורה חושפים את הערך.
כמה ניסיונות שגויים עד החסימה?
המונה מצטבר: לאחר כמה טעויות מופעלת השהיה, משך שלה גדל עם כל ניסיון נוסף, ובהמשך — חסימה זמנית. הארנק והכספים לא נמחקים. המונה נשמר מחוץ לאפליקציה, ולכן התקנה מחדש או מחיקת נתונים אינם מאפסים אותו.
איך משנים את המכניקה באפליקציה שכבר הושקה?
חלק מהבדיקות מתבצעות בצד הפלטפורמה, ולכן שינוי מדיניות האישור והמגבלות נפרס בלי לבנות מחדש. גרסה חדשה נדרשת רק אם משתנה סכימת האחסון או פורמט החתימה. את העדכון אנחנו עושים תואם לאחור: גרסאות ישנות ממשיכות לאשר עסקאות עד שחלקן יורד לאפס.
האם האישור עובד ללא רשת?
כן. הקוד נבדק מקומית, חתימת הפעולה נוצרת במכשיר — ללא אינטרנט האישור עובר, והשליחה ממתינה להופעת קשר. היוצא מן הכלל — פעולות שדורשות בדיקה מקוונת של מגבלות ומונה הניסיונות בצד השירות.
נדון במשימה ונחזור עם הערכה ותוכנית עבודה
שלחו את תרחיש אישור העסקה הנוכחי: היכן נשמר הסוד, מה קורה כאשר PIN שגוי, איך האפליקציה מתנהגת בעת החלפת ביומטריה, התקנה מחדש וחתימה לא מקוונת. אם אין עדיין אפליקציה, די בדרישות אבטחה, רשימת פלטפורמות והדמיות של מסכים מרכזיים. זה מספיק כדי לחזור עם הערכה ותוכנית, ולא עם מילים כלליות.
- תיאור התרחיש: הקלדת PIN, מגבלת ניסיונות, חסימה, שחזור גישה;
- מה כבר מוכן — קוד, עיצוב, אנליטיקת כשלים, פניות משתמשים;
- דרישות אבטחה ואחסון הסוד במכשיר;
- פלטפורמות יעד וגרסאות מערכת הפעלה מינימליות;
- תרחישים קריטיים: חתימה לא מקוונת, החלפת מכשיר, אובדן גישה;
- הרשאות גישה לצוות — מאגר, גרסאות בדיקה, ערוץ קשר.
את ההתחלה בונים כך: אדריכל תחום המובייל מפרק את זרימת האישור ואת גבולות האמון, אליו מצטרפים מהנדסי פלטפורמות, בודק תרחישי אבטחה ומהנדס שרת, אם נדרשת סנכרון. השלבים הולכים בקטעים קצרים: ניתוח ומודל איומים, אב-טיפוס לאישור בסביבת בדיקה, מימוש, בדיקה על מכשירים חיים.
התוצאה של כל קטע — גרסה עובדת ודוח: אילו תרחישים נסגרו, מה נשאר, אילו סיכונים פתוחים. נקודות בדיקה נתאם מראש: הדגמה על המכשיר, הרצת כשלים וחסימות, סקירת קוד ואחסון מאובטח. תארו את המשימה — נחזור עם הערכה, הרכב הצוות וסדר השלבים.







