יום שישי, 25 באפריל 2014

ביטקוין. מה זה, אבל באמת

CuriousInventor, screen capture, YouTube


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


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

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

לצורך הכנת הרשומה (פוסט) נשענתי רבות על הוידאו המשובח של Curious Inventor, שגם מובא כאן בסוף.

נתחיל

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

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

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



יש גם תצוגות יותר פואטיות, כמו באתר Listen to Bitcoin, שמאפשר לכם לראות בועיות של פעולות ביטקוין , תוך השמעת מוסיקה ממסטלת.

מתוך האתר Listen to Bitcoin
תצוגות גרפיות אחרות תמצאו בביטקוין מוניטור, ביטקוין טיקר, ביטקוין צ'ארטס והאחרון - פיאטליק, שמציג כסף מדינתי מרחבי העולם הופך לביטקוין (חזק בסין. סינים רבים בורחים לביטקוין ומבכרים אותו על המטבע שלהם, המפוחת באופן מלאכותי על ידי הממשלה). 


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

מהלך מעבר הכסף

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

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


CuriousInventor, screen capture, YouTube

חשבו על על המפתח האישי בתור החותמת האמיתית ועל המפתח הציבורי בתור ההוכחה לכך שיש לכם מפתח אישי ואם להמשיך את האנלוגיה של הדגל הקודמת, זהו דגל + אישור שהייה או חותמת כשרות (תלוי לאיזה עולם דימויים אתם מתחברים:)), מבלי שתצטרכו להוכיח מה עומד מאחורי האישורים האלה (=החותמת האמיתית).

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

אם אתם ממש בענין של המתמטיקה העומדת מאחורי כל זה, בוודאי תשמחו לקרוא על Elliptic Curve Cryptography המתבססת על חיבור שני מספרים בעלי גורמים ראשונים גדולים ועל Mathematical Trapdoor, העושה שימוש בפונקציות הקלות לחישוב בכיוון אחד אך קשות לחישוב בכיוון ההפוך (חשבו על מנעול פתוח, שניתן לנעילה בקליק פשוט, אבל מצריך מפתח או קוד כדי לפתוח אותו מחדש).

ממשיכים

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

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

ביטקוין ואנונימיות

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

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

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






אין תגובות:

הוסף רשומת תגובה