ביטקוין אינו אנונימי אלא פסאודונימי: כל העברה נרשמת בפנקס פומבי שאלפי צמתים ברחבי העולם מחזיקים ממנו עותק מלא, והדבר היחיד שחסר ברישום הוא השם – לא המידע. לכן השאלה המדויקת אינה אם התנועה גלויה, אלא באילו נקודות מחוץ לשרשרת נוצר הקישור בין מחרוזת כתובת לבין אדם מסוים.
פסאודונימיות מול אנונימיות: שני מושגים שמתערבבים
אנונימיות פירושה שאין מזהה קבוע שנשאר אחרי הפעולה. פסאודונימיות פירושה שיש מזהה קבוע, אלא שהוא אינו שם אזרחי כי אם כינוי. בביטקוין הכינוי הוא מחרוזת הכתובת ביטקוין – ערך שנגזר ממפתח ציבורי באמצעות פונקציות גיבוב, ובראשן SHA-256. הכתובת אינה מכילה שם, מספר זהות או פרט מזהה אחר, אך היא מזהה יציב לחלוטין: כל פעולה שנעשתה באמצעותה מחוברת אליה לצמיתות.
ההבדל הזה יוצר תכונה מהותית. במערכת אנונימית באמת, חשיפה של פרט מזהה היום אינה מלמדת דבר על פעולות שנעשו אתמול. במערכת פסאודונימית, ברגע שכינוי נקשר לזהות, כל ההיסטוריה שנצברה תחתיו נקראת לאחור. הקישור פועל רטרואקטיבית: הרישום שנוצר לפני שנים אינו משתנה בעקבותיו, הוא רק מקבל משמעות חדשה. זו הסיבה שהמונח "כסף אנונימי" מתאר את ביטקוין באופן שגוי, ולעיתים באופן הפוך ממש – מזומן פיזי אינו מותיר רישום קבוע, ואילו ביטקוין מותיר רישום שאינו נמחק לעולם.
מה בדיוק נרשם בשרשרת – ומה אינו נרשם בה
עסקה בביטקוין היא מבנה נתונים ובו רשימת קלטים ורשימת פלטים. כל קלט מצביע על פלט קודם שטרם הוצא, וכל פלט מגדיר סכום בסאטושי – היחידה הקטנה, שממנה יש 100,000,000 בביטקוין אחד – יחד עם תנאי ההוצאה שלו. אל תוך הבלוק נכנסים גם חותמת הזמן של הבלוק, גובהו בשרשרת והחתימות שמאמתות כל קלט. העמלה אינה נרשמת כשדה נפרד; היא ההפרש בין סך הקלטים לסך הפלטים, וכל צומת מחשב אותה מחדש.
מה שאינו נרשם ברור לא פחות: אין שדה לשם, אין שדה לכתובת דואר אלקטרוני, אין מספר זהות ואין כתובת IP. תיאור מדויק של מבנה הרישום מופיע בהסבר על איך עובד בלוקצ'יין, אך העיקרון הרלוונטי לפרטיות פשוט: השרשרת מתעדת תנועה של ערך בין מזהים, ולא מיהם בעלי המזהים.
נקודה שנוטים להחמיץ היא משך החיים של הרישום. בלוק חדש נוצר בממוצע כל עשר דקות, ואין בפרוטוקול מנגנון מחיקה, תפוגה או ארכוב. צומת שמריץ מצב מקוצר חוסך שטח אחסון מקומי בלבד – עותקים מלאים של ההיסטוריה מאז 2009 ממשיכים להתקיים אצל צמתים אחרים. כלומר, ניתוח שאינו אפשרי טכנית היום עשוי להיות אפשרי בעוד עשור על אותם נתונים בדיוק.
מה נחשף מכתובת פומבית אחת
| פרט | גלוי לכל | אינו רשום בשרשרת |
|---|---|---|
| יתרה נוכחית | כן | – |
| כל ההעברות הנכנסות והיוצאות | כן | – |
| סכומים וחותמות זמן | כן | – |
| כתובות שקיבלו עודף מאותה עסקה | כן | – |
| שם או מספר זהות | – | כן |
| כתובת דוא"ל או טלפון | – | כן |
| כתובת IP של השולח | – | כן |
הקישור בין כתובת לזהות אינו נוצר בשרשרת אלא מחוצה לה – ברגע שכתובת מפורסמת לצד שם, או נמסרת לגורם שמנהל הליך זיהוי לקוח.
ההדגמה מבוססת על נתונים פומביים לדוגמה, אינה מנתחת כתובת אמיתית ואינה המלצה לפעולה.
היוריסטיקות של ניתוח שרשרת
ניתוח שרשרת אינו פענוח הצפנה. הוא עבודה סטטיסטית על גרף פומבי: כל עסקה היא צומת שמחבר בין פלטים קודמים לפלטים חדשים, והמנתח מנסה לקבץ כתובות לאשכולות שסביר שהן שייכות לאותה ישות. הכלים לכך נקראים היוריסטיקות – הנחות שאינן נכונות תמיד, אך נכונות מספיק פעמים כדי לייצר מפה שימושית.
היוריסטיקת הקלט המשותף
זו ההנחה הבסיסית והחזקה ביותר בתחום. כאשר עסקה מכילה כמה קלטים, כל אחד מהם חייב להיחתם בנפרד במפתח הפרטי המתאים לו. מכאן ההנחה שכל הקלטים בעסקה שייכים לאותה ישות, שכן רק היא מחזיקה בכל המפתחות. בפועל ארנקים אכן מצרפים אוטומטית כמה פלטים קטנים כדי לכסות תשלום גדול, ולכן ההנחה מתקיימת כמעט תמיד, למעט מקרים מוגדרים היטב. התוצאה מצטברת: אם כתובת א' וכתובת ב' הופיעו יחד כקלטים, ובעסקה אחרת כתובת ב' הופיעה לצד כתובת ג', שלוש הכתובות משויכות לאותו אשכול.
זיהוי עודף
רוב העסקאות יוצרות שני פלטים: התשלום עצמו והעודף שחוזר לשולח. הסיבה מבנית – פלט מוצא במלואו או לא מוצא כלל, ולכן הפרש חייב לחזור בפלט נפרד. עבור מנתח, זיהוי הפלט שהוא העודף שווה ערך להמשך המעקב אחרי אותה ישות לעסקה הבאה. הזיהוי נשען על סימנים כמו הבדל בפורמט הכתובת בין שני הפלטים, סכום שנראה כמו תשלום מעוגל לעומת שארית לא עגולה, או כתובת שמעולם לא הופיעה קודם.
| היוריסטיקה | ההנחה שבבסיסה | הסימן בשרשרת | מתי ההנחה נחלשת |
|---|---|---|---|
| קלט משותף | כל הקלטים בעסקה בידי ישות אחת | כמה קלטים חתומים באותה עסקה | עסקה שנבנתה במשותף בידי כמה משתתפים |
| עודף לפי פורמט | הפלט שפורמט הכתובת שלו זהה לקלט הוא העודף | שילוב פורמטים שונים בין הפלטים | כאשר שני הפלטים באותו פורמט |
| עודף לפי סכום | סכום מעוגל הוא התשלום, השארית היא העודף | הפרש בין שני סכומי הפלט | סכומים שנגזרו משער רגעי ואינם עגולים |
| שימוש חוזר בכתובת | כתובת שחוזרת שייכת לאותה ישות | אותה מחרוזת מופיעה בכמה עסקאות | כתובת חדשה לכל קבלה, כברירת מחדל בארנקי HD |
| קיבוץ לפי זמנים | דפוס שעות קבוע מרמז על אזור זמן | חותמות הזמן של הבלוקים | פעולות שתזמונן אינו תלוי באדם |
חשוב להבין את מעמד ההיוריסטיקות: הן מייצרות הסתברות, לא הוכחה. אשכול שנבנה מהן עשוי לאחד בטעות שתי ישויות נפרדות, או לפצל ישות אחת לשניים. עם זאת, ככל שהגרף גדל, טעויות בודדות נבלעות בתוך מסה של קשרים עקביים, והדיוק הכולל עולה.
איפה באמת נוצר הקישור לזהות
השרשרת עצמה אינה מכירה זהויות. הקישור נוצר תמיד בשכבה שמעליה, ובעיקר בנקודות המפגש בין הרשת לעולם המוסדר. גורם שמנהל הליך זיהוי לקוח מחזיק את שני חצאי המידע – מסמכי הזהות מצד אחד, וכתובות ההפקדה והמשיכה מהצד השני. ברגע שהחצאים מחוברים אצל גורם אחד, האשכול כולו מקבל שם.
נקודות מפגש נוספות פשוטות אף יותר. כתובת שפורסמה בגלוי לצד שם או כינוי מקוון מקשרת את עצמה. משלוח פיזי מצרף לעסקה כתובת מגורים. חשבונית מצרפת פרטי לקוח. גם צד שלישי טכני יכול לייצר קישור: כאשר ארנק קל שולח שאילתה לשרת חיצוני כדי לדעת מה יתרתו, השרת רואה גם את הכתובות שנשאלו עליהן וגם את כתובת ה-IP של השואל. מסיבה זו נבדלים סוגי הארנק ביטקוין זה מזה לא רק בשמירת המפתחות אלא גם באופן שבו הם משיגים מידע על מצב השרשרת.
CoinJoin ו-Taproot: מה הם משנים במה שנראה בשרשרת
שני המושגים האלה מוזכרים תדיר בהקשר פרטיות, ולרוב מתוארים באופן לא מדויק. שניהם אינם מוחקים מידע ואינם מסתירים סכומים; הם משנים את מה שאפשר להסיק מן הרישום הפומבי.
CoinJoin הוא שם למבנה עסקה שבו כמה משתתפים תורמים קלטים לעסקה אחת, ומתקבלים ממנה כמה פלטים. המשמעות התיאורטית ברורה: היוריסטיקת הקלט המשותף מניחה שכל הקלטים בעסקה בידי ישות אחת, ובמבנה כזה ההנחה פשוט אינה נכונה. העסקה עצמה גלויה לחלוטין – הסכומים, הכתובות והמועד מופיעים בשרשרת ככל עסקה אחרת – אך הקישור בין קלט מסוים לפלט מסוים אינו נגזר ישירות מן הרישום. מן הצד השני, מבנה כזה בעל חתימה ויזואלית מובהקת בגרף, ומנתחים מזהים אותו בקלות ככזה.
Taproot הוא שדרוג פרוטוקול שהופעל בגובה בלוק 709,632 בשנת 2021, והוא נשען על שלושה מסמכי BIP: 340 לחתימות Schnorr, 341 למבנה Taproot ו-342 לשפת הסקריפט. הרלוונטיות שלו לפרטיות נובעת ממאפיין אחד: תנאי הוצאה מורכבים נשמרים כעץ גיבוב, וכאשר הפלט מוצא במסלול המפתח, מופיעה בשרשרת חתימה בודדת ותו לא. ענפים שלא מומשו אינם מתפרסמים לעולם. התוצאה היא שהוצאה של פלט הכפוף להסדר מורכב יכולה להיראות זהה להוצאה פשוטה. Taproot אינו מצפין סכומים ואינו מסתיר את גרף התנועה.
| סוג הפלט | מה מתפרסם בעת ההוצאה | מה נשאר מחוץ לרישום |
|---|---|---|
| P2PKH | מפתח ציבורי מלא וחתימת ECDSA | אין תנאים נוספים מלכתחילה |
| P2SH | הסקריפט כולו, על כל תנאיו | – |
| P2WPKH | מפתח ציבורי וחתימה בשדה העד | אין תנאים נוספים מלכתחילה |
| P2TR – מסלול מפתח | חתימת Schnorr אחת | כל ענפי הסקריפט שבעץ |
| P2TR – מסלול סקריפט | הענף שמומש ונתיב האימות שלו | יתר הענפים בעץ |
שכבת הרשת: מה קורה לפני שהעסקה נכנסת לבלוק
לפני שעסקה נרשמת, היא מופצת ברשת עמית-לעמית. בשלב הזה קיים ערוץ מידע שאינו חלק מהשרשרת כלל: צומת שמקבל עסקה רואה את כתובת ה-IP של הצומת ששלח לו אותה. אילו ההפצה הייתה מיידית ואחידה, מאזין שמחובר לצמתים רבים היה יכול להסיק מי היה המקור לפי סדר ההגעה. לכן תוכנת הצומת מפיצה עסקאות בהשהיות אקראיות ולא אחידות לכל עמית בנפרד, כך שסדר ההגעה מאבד את משמעותו.
גם צד הלקוח משפיע. פרוטוקול מסנני בלום שהוגדר ב-BIP 37 גרם לכך שהלקוח מוסר לשרת רמז על הכתובות שמעניינות אותו. הגישה שהוגדרה ב-BIP 157 וב-BIP 158 הפוכה: השרת מפרסם מסנן תמציתי לכל בלוק, והלקוח בודק מקומית אם הבלוק נוגע לו. ההבדל אינו בהיקף המידע שנרשם בשרשרת – הוא זהה בשני המקרים – אלא בשאלה למי נחשף מה בזמן אמת.
פרטיות ואבטחה אינן אותו דבר
בלבול נפוץ נוסף הוא בין שני המושגים. אבטחה עונה על השאלה מי מסוגל להזיז את היחידות: היא נשענת על שמירת המפתח הפרטי, על מנגנון החתימה ועל שרשרת הזרעים שממנה נגזרים המפתחות. פרטיות עונה על שאלה אחרת לגמרי – מי מסוגל לראות מה קרה. שני המאפיינים בלתי תלויים.
אפשר להמחיש זאת בשני מקרי קצה. ארנק שמפתחותיו שמורים במכשיר ייעודי ואינם עוזבים אותו הוא מאובטח מאוד, ובכל זאת כל תנועותיו גלויות לחלוטין. לעומת זאת, סידור שמקשה על שיוך תנועה לישות אינו מגן במאומה על המפתח עצמו. מי שמערבב בין השניים עלול להסיק מסקנה שגויה בשני הכיוונים: להניח שרישום פומבי מעיד על חולשה טכנית, או להניח ששקיפות נמוכה מעידה על חוסן.
שאלות נפוצות
האם ביטקוין אנונימי?
לא. ביטקוין פסאודונימי. כל העברה נרשמת בפנקס פומבי הכולל סכומים, חותמות זמן וקישור מלא בין קלטים לפלטים, ומה שחסר בו הוא שם בלבד. מכיוון שהמזהה קבוע, קישור יחיד בין כתובת לזהות חושף לאחור את כל ההיסטוריה שנצברה תחתיה.
האם אפשר למחוק או לשנות רישום בשרשרת?
לא. אין בפרוטוקול פעולת מחיקה, ולכל בלוק יש מצביע גיבוב לבלוק שלפניו. שינוי רישום ישן מחייב חישוב מחדש של כל הבלוקים שאחריו תוך התמודדות עם קצב העבודה של יתר הרשת, ולכן נחשב בלתי מעשי ככל שהבלוק עמוק יותר.
האם כתובת חדשה מנתקת את הקשר להיסטוריה הקודמת?
לא בהכרח. כתובת חדשה אינה מכילה מידע על קודמותיה, אך ברגע שפלט ישן משמש כקלט בעסקה שיוצרת פלט חדש, העסקה עצמה מקשרת ביניהם בגלוי. הקשר נוצר מתנועת הערך ולא ממחרוזת הכתובת.
מה ההבדל בין פנקס פומבי לבין מסד נתונים של בנק?
ההבדל הוא בחלוקת הידע. בבנק הזהות ידועה למוסד ולרשויות, אך התנועות סמויות מן הציבור. בביטקוין התנועות גלויות לכל, בעוד הזהות אינה נרשמת כלל. מדובר בשתי נקודות שונות על אותו ציר, לא בדרגות שונות של אותה תכונה.
החומר במאמר זה הסברי-טכני בלבד. הוא נועד להבהיר כיצד נרשם מידע ברשת ביטקוין וכיצד נהוג לנתח אותו, ואינו המלצה לפעולה מכל סוג.
להרחבה בנושאים קרובים: מדריך ביטקוין המלא · כתובת ביטקוין · ארנק ביטקוין · איך עובד בלוקצ'יין