מה זה מולטיסיג?
ביטקוין נותן לכל אחת את הכוח להיות הבנק של עצמה. במקום להזדקק לגורם אחר שינהל עבורנו את הכספים, כל אחד יכול להחזיק את הכספים שלו באופן עצמאי. כל מה שדרוש לשם כך הוא "מפתח פרטי", פיסת מידע דיגיטלי שרק מי שמחזיק בה מקבל גישה למטבעות.
ההעצמה האישית שעיקרון זה מקנה רבה, אבל כידוע, עם כוח רב באה אחריות גדולה, ולא תמיד קל לעמוד באחריות הזו. חובה לשמור על גיבוי במספר עותקים למפתח (או, למעשה, ל"סיד", צירוף מילים שממנו ניתן לשחזר את המפתחות), כי אם אנחנו מאבדים את המפתח, הכסף אבוד לעד. ומצד שני, חשוב לוודא שאף גורם זדוני אינו מקבל גישה למפתח, כי אז הוא יוכל לקחת את המטבעות לעצמו.
במובן מסוים, שני הסיכונים האלה מנוגדים זה לזה. ככל ששומרים גיבוי ביותר עותקים, ובצורה יותר נגישה, כך גדל הסיכוי שגנב משיג גישה לאחד מהם. לכן, קשה למצוא סידור בו גם הסיכוי לאובדן וגם הסיכוי לגניבה נמוכים.
עם זאת, קיים מנגנון חזק מאד שמשפר את היכולת שלנו למצוא סידור כזה, לקדם פיתרון ולהנות מכל העולמות. הכירו את מולטיסיג.
אוקיי, אז מה זה מולטיסיג?
מולטיסיג – באנגלית multisig, קיצור של multiple signatures, ובחזרה לעברית ריבוי חתימות – כשמו כן הוא. זהו ארנק ביטקוין, שבשביל להשתמש בכספים הנמצאים בו, דרושות מספר חתימות דיגיטליות ממספר מפתחות שונים. זאת בניגוד לארנק ביטקוין רגיל, בו כל כתובת מקושרת עם מפתח בודד, ומספיקה חתימה מאותו מפתח בשביל לשחרר את הכספים בכתובת.
הסידור הבסיסי הוא מה שקרוי “m מתוך n”. קיימים n מפתחות שונים, ובכל פעם שרוצים להשתמש בכסף הנמצא בארנק, דרושות חתימות מ-m מפתחות מתוכם. המקרה הקלאסי הוא 2 מתוך 3, כלומר – 3 מפתחות שונים, ודרושים בכל פעולה 2 מהם.
השיפור שסידור זה נותן בהגנה בפני גניבה ואובדן הוא עצום. כעת, לא מספיק שגנב יקבל גישה למפתח אחד – הוא צריך גישה ל-2 מפתחות. אם המפתחות שמורים במקומות שונים ובדרכים שונות, זה מגדיל בסדרי גודל את המורכבות של ההתקפה.
ואת זה אנחנו מקבלים גם בלי לפגוע בהגנה מפני אובדן, כי גם אם אחד המפתחות אובדים, עדיין ניתן לגשת לכספים באמצעות ה-2 הנותרים.
הגדלת m ו-n יכולה להגדיל עוד יותר את האבטחה, אבל מגדילה גם את מורכבות ההקמה ואת השימוש השוטף.
למי כדאי להשתמש במולטיסיג?
צורת השימוש הבסיסית ביותר במולטיסיג היא כאמצעי אבטחה עבור אנשים פרטיים. מישהי שרוצה להחזיק את כספיה בעצמה, אך חוששת מסיכוני הגניבה והאובדן בכתובת יחידת-מפתח, יכולה ליצור ארנק מולטיסיג בשליטתה המוחלטת. את המפתחות השונים היא יכולה לפזר במספר מקומות ואופנים.
זה יכול להיות כלי מצוין עבור ארגונים. ארגון גדול לא ירצה שהכסף שלו יוחזק בארנק שלאדם יחיד יש שליטה בו (ועבור סוגים מסוימים של ארגונים, כגון עמותות, זה אינו חוקי). הוא יכול ליצור ארנק מולטיסיג עבור הארגון, ולחלק מפתחות למספר גורמים בתוך הארגון.
האפשרות שאולי היא המעניינת ביותר, היא פתרונות אבטחה המשלב שליטה של בעלי הכסף עם נותני שירות חיצוניים. משתמש יכול ליצור ארנק מולטיסיג 2 מ-3, בו המפתחות מוחזקים בצורה הבאה:
1. מפתח אחד נמצא על המחשב/מכשיר (אולי מוגן עם סיסמא), באופן נגיש למדי.
2. מפתח אחד נשמר באופן מוגן ביותר, למשל – נוצר על מחשב שמעולם לא היה מחובר לאינטרנט, נכתב על דף מנוליין, וננעל בתוך כספת.
3. מפתח אחד נשמר אצל נותן שירות חיצוני, שמחויב חוזית לשמור על האבטחה שלו. השירות הנ”ל ישתמש במפתח בשביל לחתום על פעולות לבקשת המשתמש, לאחר זיהוי כלשהו (למשל זיהוי עם סיסמא, או זיהוי קולי, או ביומטרי) ולאחר שווידא שהפעולה הגיונית, ואינה חשודה כניסיון לגנוב את הכספים, הכל בהתאם להנחיות שנתן המשתמש לנותן השירות.
כך ניתן להשתמש בארנק באופן שוטף בצורה מאובטחת ונוחה. אבל מצד שני – נותן השירות לא יכול לגנוב את הכספים בעצמו (או להיפרץ ולהוביל לגניבה), כי יש לו רק מפתח אחד, ודרושים שנים. וגם אם נותן השירות מאבד את המפתח (או מסרב לתת שירות כחלק מניסיון צנזורה), עדיין ניתן לגשת אל הכספים, ע”י הוצאת המפתח השלישי מהכספת (שזה מסורבל מדי בשביל שימוש שוטף, אבל נותן מענה למקרה חירום). לכן, המשתמש הוא עדיין הבנק של עצמו, וכל עוד הוא אינו עושה טעויות, הוא אינו חשוף לטעויות של צד שלישי.
מצד שני, האחריות שמוטלת על המשתמש פוחתת בהרבה – גם אם אחד המפתחות המוחזקים אצל המשתמש נגנב, זה לא יוביל לגניבת כספים. וגם אם המשתמש מאבד את אחד המפתחות, הוא עדיין יכול לחלץ את הכספים עם עזרה מנותן השירות. לכן, הסיכונים פוחתים גם אם המשתמש כן עושה טעויות.
סידורים מסוג זה יהיו כנראה המפתח (משחק מילים מכוון) לעתיד בו אנשים יוכלו להשתמש בביטקוין בלי הישענות מוחלטת על צדדים שלישיים, ובלי האתגרים המעשיים באחריות בלעדית על הכספים.
כיצד ניתן לזהות מולטיסיג?
מולטיסיג הוא דוגמא אחת מבין רבות לשימוש מתקדם בביטקוין, כזה שאינו מתאים לתבנית הרגילה “כתובת המקושרת למפתח, וחתימה מהמפתח משחררת את המטבעות בכתובת”. שימושים מתקדמים כאלה קרויים באופן כללי “סקריפט”.
סוג הכתובות הנפוץ ביותר, המוכר ביותר, והותיק ביותר שעדיין בשימוש, הוא כתובות השייכות למפתח בודד. כתובות כאלה קרויות Pay to Public Key Hash, ובקיצור P2PKH, וניתן לזהות אותו לפי זה שהן מתחילות בספרה 1.
סוג מתקדם יותר מאפשר שימוש בסקריפט, הן מכונות Pay to Script Hash ובקיצור P2SH, וניתן לזהות אותן לפי זה שהן מתחילות בספרה 3.
השימושים לסקריפט רבים ומגוונים, אבל עד לא מזמן, השימוש הנפוץ ביותר בפער משמעותי היה עבור מולטיסיג. לכן, אם היינו רואים כתובת המתחילה ב-3, היה ניתן להבין שמדובר בכתובת מולטיסיג.
זה השתנה מעט עם הופעתו של סגוויט (נושא לפוסט אחר, שכבר נכתב). אחת הדרכים להשתמש בסגוויט הוא מה שקרוי “סגוויט עטוף“, כלומר להשתמש בסקריפט בשביל ללכת עם סגוויט ולהרגיש בלי. כעת, כתובת המתחילה ב-3 עשויה להיות סגוויט עטוף, ולא מולטיסיג. וכמובן, קיימת גם האפשרות הנדירה שכתובת כזו משמשת לסקריפט אחר, שאינו אף אחד מהנ”ל.
עם זאת, המגמה היא לעבור לתקן חדש המבוסס כולו על סגוויט. בתקן זה יש 2 סוגי כתובות חדשות – כתובת P2WPKH, המקושרת למפתח בודד, ומתחילה בתוים bc1qw; וכתובת P2WSH, המשמשת לסקריפט (שכמעט בכל המקרים יהיה מולטיסיג) ומתחילה בתוים bc1qr.
איך משתמשים במולטיסיג?
קיימים ארנקים רבים התומכים במולטיסיג. המומלץ ביותר מביניהם הוא אלקטרום.
הסבר מפורט על אופן השימוש באלקטרום בכלל, ובמולטיסיג בפרט, הוא נושא למדריך העומד בפני עצמו. למתעניינות, ניתן לצפות בסרטון מההרצאה להלן על שימוש באלקטרום, שבו מולטיסיג היה אחד מהנושאים הנידונים: https://youtu.be/ysqt6nhYyBA.