Privacy

惡意付款人可以在 Zcash 中對收款人進行去匿名化嗎?

  • June 18, 2018

從 Zcash原始論文和更新後的 Zcash協議規範來看,似乎在 Alice 支付 Bob 之後,她可以向世界透露她這樣做了。

Alice 可以通過揭示她生成的新硬幣承諾的隨機性來做到這一點,其中之一包含 Bob 的 PK 和數量。例如,在下圖中,Alice 顯示了以紅色(即 Alice 的隨機性)和紫色(即 Bob 的 PK 和值)突出顯示的元素,而黃色的元素已經公開。

來自奧克蘭紙的 Zcash Pour TXN 描述

同樣的攻擊在更新的 Zcash 提案中起作用(參見v2018-beta2.0中第 19 頁的第 4.4 節,以及下圖)。

來自其協議規範的 Zcash 代幣承諾

我只想確認(1)我沒有遺漏任何東西,這是可能的,(2)它可能存在問題。例如,如果愛麗絲向鮑勃支付了一些非法商品或服務,她可以稍後透露她這樣做了。

歡迎提出想法!

*tl;*愛麗絲博士可以透露她向鮑勃支付的款項。她不能透露其他人向 Bob 支付的款項,也不能透露 Bob 對 Alice 發送的 ZEC 做了什麼(如果有的話)。


揭示票據承諾的原像僅證明 Alice 知道原像。它不能證明 Alice 發送了交易,因為證明是可重放的:一旦被披露,任何人都可以獲取隨機性和筆記數據,並將其展示給其他人。

為了讓 Alice 向某人證明她發送了交易,她可以執行以下操作:

  • 編寫包含以下內容的消息:

    • esk用於向 Bob 加密票據(隨機性和價值)的私鑰。
    • Bob 的付款地址。
    • 由 Alice 選擇的挑戰字元串令人信服。
  • 使用與最初用於簽署交易的私鑰joinSplitPrivKey對應的私鑰對消息進行簽名。joinsplitPubKey

簽名消息是 Alice 目前有權訪問的證明joinSplitPrivKey(因為挑戰字元串是新的)。假設joinSplitPrivKey永遠不會透露,Alice 與創建交易的人沒有區別(即她或擁有她的支出密鑰的人進行了付款)。這就是我們所說的付款披露,也是您如何向交易所(或第三方爭議解決服務機構)證明您確實向他們付款的方式。

您所描述的與消息傳遞應用程序在端到端加密方面存在的問題基本相同:有意訪問數據的人可能會意外或故意洩露數據。從定義上講,消除這種潛在的隱私洩露意味著 Alice 看不到她自己的傳出交易的部分或全部細節,這要麼是矛盾的(在 Zcash 模型中,Alice 需要能夠從其原像計算承諾,以便創建有效交易),或完全無法使用的支付系統!

但是請注意,即使 Alice 可以證明她向 Bob 發送了一筆交易,她也無法透露Bob 對收到的票據了什麼(因為她沒有 Bob 的支出密鑰,因此無法計算將在花費時間顯示)。愛麗絲透露資訊的能力僅限於她曾經能夠查看的資訊。

引用自:https://bitcoin.stackexchange.com/questions/76275