📜 [專欄新文章] [ZKP 讀書會] Tornado Cash
✍️ Jerry Ho
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
Disclaimer: 本人與Tornade Cash專案及其員工無任何利益往來。
Tornado Cash是一個Ethereum上的原生隱私轉帳解決方案,使用zk-SNARK+Merkle Tree的路徑證明作為其核心隱私保護機制。
你知我知,Ethereum上的交易記錄是公開的,這使得任何一個人只要知道你的address,便可以在https://etherscan.io/ 之類的網站上查出有多少人和這個位置進行過交易,你做過什麼消費行為或是交易行為等。
或許這聽來不像是個問題,而想要隱藏自己的交易記錄甚至聽起來反而像是不法分子的銷贓行為。
但試想下開情境:因為我曾經使用ethereum捐款給一個政治不正確的專案/組織,而我在接受dd/kyc/reference check的時候因為我的ethereum address就寫在自己的blog上而被查了個底朝天,因而被拒絕入職/拒絕開戶/拒絕服務。
這並不是一個很遙遠的情境…
Tl;dr
解決交易隱私問題分為兩個層次,Assuming你的目的是讓自己的金錢流向無法被追蹤。
層次一:我的錢「丟進了」Tornado Cash的contract,我要如何在不使用與轉入時同一個address的情況下— 若是同一個address就沒有隱私可言了 — 取出我的錢?contract如何知道我存過錢,餘額還夠,所以現在我來領錢了他讓我領?
層次二:就算層次一成立,我的隱私如何達成?到底有多隱私?到底有多不隱私?
技術上來說(細節下文詳談),層次一使用zero-knowledge的set-membership proof來證明,透過預先在Merkle Tree中「登記」一個自己的entry/leaf,tornado cash稱為note,爾後在提款時提出該leaf之zk proof,來解決這個提款時的認證問題。
層次二則是所謂的藏樹於林。既然轉出和轉入無法被連結在一起,那麼只要使用Tornado Cash的人數夠多,總轉出和總轉入的交易總筆數就會太多,以致無法輕易重新關聯轉入與轉出地址背後的真人。
使用界面
https://tornado.cash/
當然你也可以直接和合約地址互動啦
上圖左方紅框為存入幣種與金額大小,右方紅框為該額度對應之帳戶內有多少顆「樹」。
記得藏樹於林嗎?右方的 Anonymity set 就是告訴你現在森林的規模有多大。數量一大,跑資料分析試圖重新關聯某筆特定存款到某筆特定提款就變得更為困難。
提款界面如上。
值得注意的是,提款時的以上兩個選項(Wallet/Relayer),是在目前Account Abstraction尚未實現時的一個折衷方案。
這裡有個死循環:既然我提款的時候需要支付gas,那麼我的gas從哪裡來?是不是勢必得從交易所或是其他帳號來?簡言之,若是無法直接新建立一個地址然後直接將其作為Tornado Cash提款用,達到的隱私強度就大打折扣。
Relayer就是針對這個問題所設計的。透過付出一些手續費來提供社群架設relayer node的誘因,提款時該筆轉帳的gas費用,便可以讓relayer node來負責先出。relayer node收到使用者的zk proof後將其轉交給tornado cash的合約,合約就會會將應有的relayer手續費與扣除手續費+gas後的款項分別轉給relayer與使用者。
社群治理
Tornado Cash天生是一個比較沒有銅臭味的專案 — 社群治理和funded的味道相當強烈。
透過預先設計好的proxy contract與staking/locking機制,任何一個Tornado Cash的使用者都能夠提出對合約實行的改動建議,並交由社群來投票決定是否要執行該改動。
技術細節可以參照此篇,同時Tornado Cash的第一輪社群治理提案也剛投票過關,回顧可參考此處之討論。
誘因設計
本文作者比較任性不在意錢,請移駕此處閱讀官方如何設計Anonymity Mining來確保以下兩點:
機制能讓使用者願意加入存錢,提供流動性同時也讓樹林變大,增加隱私程度。
產生TORN(ERC20 token)與領取TORN的機制,透過在原本的tornado cash上面再加一層,來避免TORN激勵層錯誤的設計導致下一層之隱私洩漏(激勵層出事不影響核心隱私之意)。
技術細節
首先本文不打算解釋何為zero-knowledge proof,請接受以下描述:
若有一NP statement分類上是satisfiability problem(例:merkle tree中的hash chaining H(H(H(a,b),c),d) ),則我們可以設計出一個arithmetic circuit來確保能夠有效率的產生proof, 有效率的驗證, 無法產生假的且能說服人的proof…且其電路驗證的statement是我們想要的,像是此例中的merkle tree opening.
存款
存款者透過送出C = H(k, r) 以及存入之數額給tornado cash的合約來進行存款的動作。其中k在之後會成為存款者領錢的憑證,稱為nullifier,r則是增加randomness而已,此二值需要記下。此時合約端會將這個C(commitment)丟入Merkle Tree上其中一個空的leaf,並更新root hash。存款者還需要記下自己的C對應之leaf index。
產生proof,用此proof作為提款憑證
用一段話來概括,若是我
知道Merkle Tree上某個leaf的commitment的preimage, 代表我能在電路中證明我知道H(k, r) 中的 k, r, 同時不洩漏k, r到底是多少(zk特性, magic)。
我知道該leaf至root的路徑上會經過哪些點,我也提供了一個可以讓電路驗證root hash的hash chaining過程,代表我知道他是從哪個leaf開始走的。因而,這證明了我提出的1.中的commitment確實屬於某顆公開的、大家都知道的merkle tree中的特定leaf(就是我之前存款對應到的leaf)。
就可以在不需要提供像是原本存款地址的簽章之類的驗證機制情況下,透過zk proof,亦能正確做permission control讓unlinkable的提款能夠成真。
另,讀者可以看到在proof中已然預設了relayer的存在。這使得上開所提到之「使用者提款, 拜託relayer執行=>relayer預付gas發起transaction,將內容送給tornado cash合約=>合約處理proof並將款項拆成兩份給relayer與使用者」這個行為得以成立,且relayer無法得知或假造proof內容。
提款流程
基本上在上方的產生證明都講過一次了,這邊就是pseudo code順過一次提款流程而已,大家自己看啊。
值得一提的是,使用者除了需要提出上一部分提到的證明之外,還需要將k的部分額外拿出來再做一次H(k),將值一併傳給contract。
這裡的設計哲學,簡單來講是這樣的:zero-knowledge太強了,強到就算證明了我知道H(k, r)的k跟r, 收到的驗證者並沒有辦法知道H(k)是什麼東西。為了讓同一筆款項不會被提領兩次,在提款流程中合約會將「每一筆成功提款中的H(k)」記錄下來,另外開個表存著。爾後若是其他提款交易中的H(k)與表中的重複了,這就代表有人試圖想要騙合約重複提款,自然該提款嘗試就不會成立。
洗錢失敗例
工程師都知道使用者從來不看說明書,看了可能也不會懂。
Koh Wei Jie分析了Kucoin的駭客事件。Kucoin的駭客使用Tornado Cash來洗錢,但忽略了Tornado Cash官方一直三令五申的使用需知,因而讓款項在進入Tornado Cash跑了一輪之後還是能夠被追蹤,哈哈UCCU。
簡單來說,hacker為了節省多次使用relayer的手續費,而將大多數的提領過程都變成直接提領到wallet。雖然該wallet的位置是全新產生的沒有gas,但是透過只讓第一次的提款使用relayer,hacker便能從第一次提款中取得手續費並分發給其他全新產生的wallet address。
那問題在哪?還要問?
要達到隱私需要保持藏樹於林原則,同時使用者不應自己破壞tornado cash幫你達成的address unlinkability。這位hacker因為愛省手續費,所以違背了後者;同時他因為太心急又愛省手續費,太快、分太少次提領、每次提領的數額又太大了,所以side-channel去給他做簡單的traffic analysis就能夠用虛無假設推出:「綜觀歷史上所有的存款位置與數額,扣掉駭客存錢的那些位址之後,我們還需要14個unique address/user共謀,才能有能力一次提這麼多錢。」
這看起來可能嗎?自然是不可能的。
所以這位駭客就是錯誤的沒有遵守藏樹於林的原則,才導致自己的金流重新被和帳號聯繫在一起。
提供一些延伸閱讀,圈子內的”名人”對這種不看說明書的使用者的看法:
tornado * Gavin Andresen
如何避免洗錢失敗
我自己的投影片,我自己翻譯:
打開你的VPN 打開你的TOR 打開你的無痕瀏覽器分頁 用上你全新的VM PC VPS instance 最好連data-link layer安全都顧到 產生全新的地址不要懶惰 自己跑一個fullnode 乖乖用relayer付手續費提款 領錢之後記得把C(k,r)的記錄刪掉 不要急一次存或提領大額 時間拉長數目減少…..
簡而言之:要設計相對安全但又讓使用者可以直覺上手的安全系統真的很他媽難 - 使用者永遠會想辦法抄近路,然後系統的security assumption就爆炸了。
結論上來講,你想要多安全取決於你在臺大水源校區的腳踏車平常都上幾個大鎖=想付出多少成本。只要不要學Kucoin Hacker那樣連鎖都不鎖車還是新的,大部分時間都沒啥問題 lol。
參考資料與文中出現過的連結,不按先後順序:
https://tornado.cash/Tornado.cash_whitepaper_v1.4.pdf
https://tornado.cash/audits/TornadoCash_cryptographic_review_ABDK.pdf
https://tornado.cash/audits/TornadoCash_circuit_audit_ABDK.pdf
https://torn.community/t/whats-next-for-tornado-cash-governance/250
https://weijiek.medium.com/deanonymising-the-kucoin-hacker-418fa5e9911d
https://tornado-cash.medium.com/tornado-cash-governance-proposal-a55c5c7d0703#2084
https://eips.ethereum.org/EIPS/eip-2938
http://gavinandresen.ninja/private-thoughts
[ZKP 讀書會] Tornado Cash was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
同時也有10000部Youtube影片,追蹤數超過2,910的網紅コバにゃんチャンネル,也在其Youtube影片中提到,...
data mining技術 在 資策會 Facebook 的精選貼文
【Job Description/工作內容】
1.Research Problem dofine/研究問題定義
2.ML,DL Model Design/AI模組設計
3.ML,DL Algo. Design/AI演算法設計
4.ML,DL Model Development/AI模組開發
5.Feature,Data Engineering / 特徵、資料工程
【Required Qualifications/應具備程式語言能力】
Must Skills:Python, hadoop, Machine Learning
【Education/學歷要求】
Master/碩士
【Desired Qualifications/其他條件】
1.資安技術研發相關經驗(option)/Cyber security technology research and development related experience.(option)
2.其他具備專業能力Deep Learning、Data/Graph Mining/ Others:Deep Learning、Data/Graph Mining
data mining技術 在 詹太太的轉行日記 Facebook 的精選貼文
新世界法則已經影響了電視圈
第54屆金鐘獎,我坐在台下。然後我相信有一天,當我們再回頭看這份名單的時候,會覺得這是一個台灣影視產業新舊時代分水嶺的時刻。無論在軟體(人員、文體)或硬體(設備、器材)都是如此。
至少我真心這麼認為。猜想評審們是不是這樣認為呢?但我希望你也是。
網紅將是演藝圈源源不絕的人才庫
話說回顧2016年金鐘獎典禮,吳宗憲直接點名當時聲勢很強的5組網紅:蔡阿嘎、這群人、林進、小A辣、亞洲統神等人,還呼籲電視圈要團結。後來呢,到了隔年,2017第52屆電視金鐘獎頒獎典禮,場子裡的網紅YouTuber變成13組:黃大謙、阿滴滴妹、放火、千千進食中、小玉+笑笑、異鄉人、安啾+小安啾Venita、古娃娃+藏鏡喵、Meg今天穿什麼,啾啾鞋、壹加壹(ILLY and LEAN)、阿翰po影片等。
他們預錄的一系列bumper,作為金鐘獎廣告破口前的影片串場。這群網紅雖然沒有親自站上金鐘獎的舞台對著全國觀眾耍寶或展現才藝,但重要的是,在某種意義上,已經是象徵性地第一次踩入了傳產電視圈的場子。
兩年後,也就是2019年的今天,已經可以看到有越來越多網紅陸續進入傳產電視圈。網紅們主持或客串參與各類電視節目,從最大宗的綜藝類、戲劇、或是有特色的脫口秀與談話節目,甚至還有的成為新聞台的議題主角。或許這是金鐘獎有最多網紅活生生站在台上的第一次。先後登場的網紅包括:「這群人」茵聲、「眼球中央」視網膜、以及「一日系列」資深電視咖邰哥。他們或許與電視圈有些淵源,但這一刻,他們在這個場子的身份,是「大號網紅」。他們活生生地站在專屬於電視圈金鐘獎的舞台上,與主持人插科打諢。但其實,電視圈對這幾位網紅並不陌生:視網膜陳子見曾是華視的新聞主播;茵聲雖是於網路影片走紅,但坦言自己其實最早出道於電視選秀。
正處在風口上的網紅圈,將會是電視演藝圈源源不絕的人才寶庫。要成為網紅,得先自己在網路上練習,為自己凝聚聲量,給自己找到了支點與合適的社群標籤,養成垂直市場。其實這種「聲量」,某種程度上也是一種「收視率」的變體。我想,或許很老派的「網路收視率」稱之,也不算離譜吧。老實說,直到現在,當我在向一些傳產客戶說明網紅的時候,我有時也會脫口而出的說,「像這樣的rating就很不錯」。
至於網紅們呢?大號網紅挾帶著分眾市場的高知名度而獲得電視圈的邀約,錦上添花,更加提振全國知名度,影響力更因此打開。但特別的是,可想而知,當網紅踏入了電視圈,從「分眾市場」走向「大眾市場」的那刻起,他們專屬的垂直粉絲、社群標籤也將會因此而有了變化。換句話說,就是「貨就沒那麼純了」。
「分眾」與「大眾」,本來就是艱難的選擇,卻又是必經之路。
內容第一法則:互動,互動,互動
很早之前我有講過「17Q」。它最早是搶答型益智遊戲,特別之處就是玩問答互動。「聲林之王」最早的內容型態則是歌唱PK競賽,玩的也是互動,包括投票、戰況等互動環節。另外,還有同樣也是即時互動益智節目的「一呼百應」。姑且不論三者製作成本規模的差別,網路硬體技術的難易程度,以及獲得三個獎項評審觀點的差異,(17Q是導播獎,聲林之王是綜藝節目獎,一呼百應是益智及實境節目獎),但這其中是有共同點的一件事,就是「線上與線下互動」。對電視圈來說,是「能不能讓不愛看電視的人也能參與?」對數位圈來說,就是「把電視觀眾撈到平台上來」。而這三個得獎節目,反映出的正是電視圈的技術焦慮。
第一個技術焦慮,是製播。
金牌導播李麗芳因為17Q而獲得非戲劇類節目導播獎。如何能夠同時同步控好一個節目在網路上與電視機前的鏡頭語言與影音節奏,這是非常高難度的技法。如同先前講到過分眾與大眾的問題。在製播節奏上,網路節目與電視節目,兩者也有分眾與大眾的問題。
第二個技術焦慮,是硬體。
三個節目運用的互動技術硬體各不相同,花俏各異。當然這也直接與成本有關。貴的硬體不一定效果好,便宜的硬體也不一定做不到。但要能夠克服硬體技術問題,需要更多的是數位產品的知識做為技術創意的基底,但數位產品與技術都變化的太快。這麼多年來,顯然這一向不是傳產電視的長才。
第三個技術焦慮,是內容。
從腳本的設計,到節目的主持、來賓人選,都是內容的一部分。這些人與這些橋段,能同時在電視與網路上吸引觀眾來互動、炒板子嗎?線上的互動,能帶來現下傳產電視度量成敗的收視率嗎?線下收看的收視率,又能在線上帶來互動率與轉換率嗎?這可能是製作人最深的焦慮。
說到內容的技術焦慮,就不得不提「我們與惡的距離」。編劇與劇組運用文字data mining產生腳本的過程,開創首例。關於這個「大數據劇本」實驗,在過去這段時間以來,已經有許多報導,在此不贅述。但若以結果論,要做出叫好叫座還能引發網路社群聲量與互動的內容,或許得獎名單的啟發是:傳產電視不能再忽視數位內容的數據力量。但節目創作流程要從「找靈感」走到「爬數據」,也需要很多的技術基底汰舊換新,像是social listening 與data mining。然而這些都需要投資。
左右眼各8K的VR來了:台灣特有種
創新節目獎得主,是公視與Funique VR Studio合製的「台灣特有種」。 這是台灣電視史上首次結合VR 技術拍攝製作的兒少生態節目。
VR 這個議題,我之前也稍微提過一些。無論是Facebook Occulus的VR規格,或是其他主流廠牌的規格,各有高下。大廠一路車拚,製作方也是一路摸索。那麼台灣呢?從2016年起,市面上開始出現各種「兩眼HD」的行銷實驗活動,以及「左右兩眼各4K」的電玩產品,ㄧ直到今天,我們看到足以在金鐘獎舞台上領取影視專業獎項的「左右兩眼各8K」,台灣的這條路可說走了三年。
如同受獎者所說,VR專案與組建團隊的機會,是因為文化部與前瞻計畫而有的。但電視圈的創作者,期待著更多如「前瞻計畫」這樣充沛的資源,讓更多創意十足的年輕人,把先進的影視科技帶進台灣的電視圈。
結語:電視不會死。它只是換個樣子,換個方式。
這是我的老調,但也不是老調。
話說2016年, DMA報告指出數位媒體廣告量首次超越電視廣告量,黃金/死亡交叉首次出現。廣告投放板塊的移轉非常的清楚。但有趣的是,根據資誠2019-2023台灣娛樂暨媒體業產望報告:「2018年,台灣電視廣告量總收入年增率達到1.4%,中止連續三年下滑的態勢。付費電視可望協助台灣電視廣告總收入在未來五年,以1.7%年複合成長率走揚,並跨越10億美元大關。」
走過低谷的電視產業,總有一天會融入各種新的技術,新的表現方式,把更有互動感的內容,帶進觀眾的客廳。當電視產業結合了網紅、互動、VR,然後,或許這一天已經來了。這一點,對於曾經身為電視圈一份子的我,不管是不是太過樂觀,但必須樂觀。
必須樂觀。Because the show must go on.