פרטיות בביטקוין – מה ניתן ללמוד עליכם מניתוח הבלוקצ'יין?

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

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

לפני הכול – מה זה UTXO?

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

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

שטר ביטקוין כזה נקרא Unspent Transaction Output ובקצרה – UTXO. כל Output (פלט) חתום קריפטוגרפית בצורה כזו שרק שמי שיש לו גישה למפתח הפרטי, יכול להזיז אותו ליעד חדש. כלומר, רק אני יכול להזיז את ה"שטר" שהעבירו לבעלותי. בפלטים האלו שבשליטתנו, אנחנו משתמשים ממש כמו שטרות כסף. כל פעולה של העברה כסף כזו נרשמת כטרנסקציה בבלוקצ'יין

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

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

כשאנחנו שולחים תשלום למישהו אחר, אנחנו צריכים לבחור מהשטרות שבשליטתנו שנמצאים ברשימת השטרות הקיימים – UTXOs – כדי לשלם במדויק את הסכום. אבל בביטקוין לא ניתן לשלוח סכום ללא קשר לשטרות שאנחנו מחזיקים בהם ולכן אנחנו נאלצים להשתמש בשטרות הקיימים, שטר של 5, שטר של 10 וכדומה. 

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

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

כתובות ביטקוין

שומרים על ההיסטוריה

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

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

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

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

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

קיימות מספר חברות מוכרות בתחום, Whitestream, Elliptic, Scorechain הישראלית וכמובן הידועה מכולן, Chainalysis. חברת Scorechain אף מספקת פרזנטציה מפורטת של כלי הניתוח שלה לציבור הרחב. 

היוריסטיקות שימושיות לבניית קלאסטר

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

Multi Input Transaction Heuristic

היוריסטיקה שמזהה טרנסקציה ששולחת תשלום ממספר UTXOs. בדרך כלל  אנחנו יכולים להסיק שה-UTXOs המשתתפים בתשלום שייכים לאותו הארנק ולכן אנחנו יכולים לשייך אותן לקלאסטר (להוציא טרנסקציות PayJoin\ CoinJoin אשר לא ניכנס אליהן במאמר זה).

UTXO

Shadow / Consumer / Wallet Fee Pattern Heuristics

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

  • אם שלחנו לגוף שאפשר לסמן אותו כגוף מוכר (הכתובת שלו כבר ידועה לנו, למשל כתובת של עסק ידוע), אז הכתובת יעד השניה היא כנראה כתובת העודף שלנו וניתן להכניסה לקלאסטר (Shadow Heuristic).
  • אם הגוף לא מוכר לנו אבל הכתובת נמצאת בבלוקצ'יין בשימוש יותר מפעם אחת, והכתובת השניה חדשה ולא קיימת בבלוקצ'יין, ניתן להניח כי הכתובת השניה היא העודף (Consumer Heuristic). 
  • אפשר לנסות לזהות את העודף גם לפי תבניות העמלה של הארנק. אם יש לנו תבנית חוזרת, אנחנו יכולים לזהות שהכתובת שייכת לארנק (Wallet fee pattern Heuristic) ולהבין איזו כתובת היא כתובת העודף.

UTXO

Optimal Change Heuristic

 

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

לדוגמא, אם אנחנו שולחים 4 ביטקוין משני UTXO, באחד יש 2 ביטקוין ובשני 3 ביטקוין. העודף שלנו הוא 1. אנחנו יכולים להניח די בוודאות שהעודף הוא 1 והתשלום הוא 4, כיוון שאם התשלום היה 1, יכולנו להשתמש בUTXO אחד מביניהם, כל אחד מהם מספיק כדי לשלם 1 ביטקוין.

UTXO

Round Amounts Heuristic 

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

UTXO

Diff script or address formats Heuristic

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

כשאנחנו שולחים מכתובת שנגזרה ממפתח ציבורי p2pkh (מתחילה בתו 1) לכתובת שנגזרה מסקריפט p2sh למשל (מתחילה בתו 3), ומקבלים את העודף בחזרה לכתובת p2pkh או כשאנחנו שולחים לכתובת מסוימת שנגזרה מסקריפט מסוג אחד אבל מקבלים בחזרה את העודף לכתובת סקריפט מסוג שונה (multisig 2 of 2 vs multisig 2 of 3), ההנחה היא שהארנק משתמש באותה סוג הכתובת / סקריפט כדי להחזיר את העודף, ולכן ניתן לזהות מה כתובת התשלום ומה כתובת העודף לפי אבחנה זו. 

בדקו את עצמכם

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

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

כלים אלו עלולים לאסוף מידע על החיפושים שלכם ולקשר כתובות הביטקוין לכתובת ה-IP שלכם ולכן מומלץ להכנס אליהם עם דפדפן Tor או לבדוק כתובות שלא קשורות אליכם למטרות לימוד בלבד.

המקביל ביותר לתוכנות המסחריות הוא WalletExplorer, כלי חינמי שפותח ע"י Aleš Janda לפני שהוא עבר לעבוד בחברת Chainalysis. 

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

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

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

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

OTX

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

KYCP

לסיכום – האם ביטקוין Fungible?

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

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

איך בכל זאת ניתן לשמור על פרטיות?

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

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

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

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

שתפו:

Share on email
Share on facebook
Share on whatsapp

עוד מאמרים שיכולים לעניין אותך:

1 מחשבה על “פרטיות בביטקוין – מה ניתן ללמוד עליכם מניתוח הבלוקצ'יין?”

לתגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

שתפו את הפוסט עם חברים