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

כלים: keyhunt, VanitySearch ודומיהם

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

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

בפנים זה אותו מנוע. מה שמשתנה זה המרכב.

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

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

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

BitCrack הוא ישן יותר וישיר יותר: כוח גס על טווחים, בכרטיס מסך, מחפש כתובות. הוא ממשיך בשימוש כי הוא פשוט לתפעול.

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

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

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

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

הכלי שמישהו כבר קימפל עבורך עשוי להיות מקומפל עבורו.

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

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