מתקדם שיעור 3 4 דקות קריאה

מפתחות חלשים וארנקים דיגיטליים: כסף שאבד בגלל סיסמה גרועה

מי שיצר את המפתח מתוך משפט איבד את הכסף למי שחשב על אותו משפט.

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

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

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

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

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

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

הקרס כבר היה במים לפני שהדג הגיע.

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

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

ההגרלה שאדם עושה נכנסת לכף יד. זו של המכונה לא נכנסת בעולם.

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

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

נותר לראות את הכלים האמיתיים, עם שם וכתובת: מה כל אחד עושה, על איזה חומרה הוא פועל ואיפה כל אחד הוא הבחירה הנכונה. בשיעור הבא.