有人可以一勞永逸地解釋比特幣的這種隱私問題嗎?
- 我在 Bitcoin Core 中有一個 wallet.dat。我生成一個新的接收地址。我把它給了一些知道我身份的隨機人。他們寄給我 1 satoshi 到那個地址。他們究竟如何“知道我的比特幣餘額以及我與誰做生意”?
- 我在 Bitcoin Core 中有一個 wallet.dat。有人給了我一個我一無所知的比特幣接收地址。它可以是新鮮的或重複使用的。我向該地址發送 1 個聰。他們究竟如何“知道我的比特幣餘額以及我與誰做生意”?
在這兩種情況下,我都不關心我能對他們的隱私做些什麼,而只關心他們能對我做些什麼。
我只是不明白這兩種情況如何讓他們了解我或了解我的比特幣餘額。
十年來,我一直試圖定期(以多種方式)問這個問題。我一次也沒有得到令人滿意或確鑿的答案。
我再次問的原因是我剛剛看了一個影片,一位比特幣專家再次說這就是它的工作原理。然而它並沒有加起來,這可能意味著我仍然不了解比特幣。
我將非常感謝一個清晰明確的答案!總是在過去,我帶著比以前更多的問題離開這種討論……
例如,假設 Alice 是一名攻擊者,試圖使用這種方法了解 Bob 的錢包。Alice 向 Bob 擁有的某個地址發送 1 個 satoshi。
此時,Alice 對 Bob 的錢包一無所知,只知道他有 1 個坐席是她發給他的。但問題是鮑勃何時想要發送比特幣。
現在 Bob 向商人 Carol 發送了一些比特幣。當他這樣做時,他的錢包將查看它可以花費的 UTXO,建構交易,簽名並發送。對於這個例子,假設他的錢包為 Alice 發送給他的 1 sat 選擇了 UTXO。當然,他向 Carol 支付的費用超過了 1 個星期六,而且他還必須支付交易費用。所以 Bob 的錢包選擇了其他幾個 UTXO 來支付花費的金額和交易費用。
當 Bob 廣播他的交易時,Alice 也可以看到它。這就是隱私的來源。Alice 可以看到她在 Bob 進行的這筆交易中發送給 Bob 的 1 個坐席。由於該交易包括 Bob 錢包中的其他 UTXO,Alice 得知 Bob 在他的錢包中擁有這些 UTXO。她現在可以檢查這些 UTXO 的地址並了解 Bob 錢包中的一些地址。如果 Bob 正在重用地址,她現在可以了解 Bob 錢包中金額的下限。
此外,因為她知道這些地址屬於 Bob,所以她可以監視使用這些地址的 UTXO 的其他交易。通過這些交易,她可以執行相同的過程來檢查輸入並了解 Bob 錢包中的其他地址。因為 Alice 可以看到 Bob 進行的許多交易,所以她可以看到 Bob 在支付誰以及誰在支付 Bob。
Bob 可以通過不重用地址來緩解這部分問題。如果 Bob 不重用地址,那麼 Alice 將學到更少的資訊,因為一旦她在交易中了解到 Bob 的一些地址,Bob 將永遠不會再使用這些地址,因此無法進行任何額外的跟踪。
然而,仍然存在 Bob 的錢包可能在他的交易中產生的零錢輸出。如果 Alice 能夠辨識 Bob 的任何交易中的零錢輸出,她也將能夠執行上述操作。
現在這種跟踪並不是垃圾郵件攻擊所獨有的。任何人都可以用任意數量的比特幣進行這種追踪。在完成正常的比特幣交易後,惡意的人可以做到這一點。
當 Alice 集體進行 1 satoshi 垃圾郵件攻擊時,它會變得更加有趣。如果 Alice 向數百萬個地址發送 1 個 satoshi,Alice 可以學到更多。
假設 Alice 查找每個曾經使用過的地址並向其中的每一個發送 1 sat。這將包括 Bob 的地址。她還將 1 sat 發送到
Bobs_addr
她知道屬於 Bob 的地址 , 。Bob 從未重複使用過地址。但是 Alice 現在強迫他重用地址,因為她已經向他的所有地址發送了 1 sat。當 Bob 進行交易時,他的錢包可能不知道這種攻擊,並且可能選擇在交易中包含幾個 Alice 的 1 sat UTXO,除了 1 sat at
Bobs_addr
現在,Alice 有一個
Bobs_addr
與 Bob 的其他幾個地址相關聯的交易。此外,由於 1 sat UTXO 屬於現在已被重用的地址,Alice 可以查找這些地址參與了哪些交易,並進行與我之前描述的地址重用問題相同的分析。這些隱私洩露攻擊有幾種緩解措施。這些隱私洩露攻擊都依賴於假設交易中的所有輸入都屬於同一個人。這被稱為通用輸入啟發式。為了打破這個假設,發件人可以與其他人一起匯款,他們一起創建交易。這被稱為 Coinjoin。Coinjoin 交易有多個人的輸入,以及多個人的輸出。所以這打破了常見的輸入啟發式。
也可以讓錢包知道這種垃圾郵件攻擊。如果錢包開發人員知道這是發生的事情,他們可以對錢包進行程式,使其永遠不會花費重複使用的地址,除非絕對必要。如果 Bob 從未重用地址並且他的錢包避免地址重用,他可以阻止 Alice 通過垃圾郵件攻擊了解更多關於他的錢包的資訊,因為他的錢包會選擇忽略 Alice 發送到他已經使用的地址的 1 sat UTXO。
除了避免重複使用,如果出現重複使用,錢包還可以選擇同時將所有 UTXO 花費到同一個地址。這可以防止將地址連結到其他事務,因為所有重用都是同時使用的。
為了防止 Alice 通過試圖找出他的找零地址來追踪 Bob 的錢包,Bob 的錢包也可以選擇不進行找零輸出。他的錢包可能正在使用一種硬幣選擇算法,該算法搜尋與 Bob 嘗試發送的金額完全匹配的輸入集。結合不重複使用地址、避免使用重複使用的地址以及一次性使用重複使用的地址,這可以有效地防止 Alice 了解 Bob 的任何資訊,因為她進入他錢包的唯一線索是那些硬幣永遠不會帶回 Bob 的地方。
如果您使用 payjoin/coinjoin 或類似方式來保護您的隱私,您會嘗試在交易之前和之後斷開您的地址之間的連結。這在短期內很容易,但從長期來看卻不是。讓我們以投幣混合交易為例。
- 交易前您的地址:1a, 1b, 1c
- 您將 1a 放入 coinjoin 交易中並獲得輸出 1d 和 1e
- 啟發式將地址 1b、1c 與其他地址聚集到錢包 A 中。
- 啟發式將地址 1d 和 1e 與其他地址聚集到錢包 B
- 如果你使用 tmw,在 2 週或 5 年內,來自錢包 A 的一個地址作為來自錢包 B 的地址的公共輸入,那麼 coinjoin 交易將毫無用處。跟踪通過coinjoin。我對其進行了測試,即使人們相互混合多次,我也能夠使用這種方法將 20% 的輸出地址連結到輸入。
因此,如果您破壞了分析,那麼您需要非常一致地進行分析。您需要確保這兩個錢包不再相互聯繫,即使經過數年或經過混合器 3 次後也不會。
如果你試圖通過來回兌換門羅幣和比特幣來打破分析,這也是有效的。