這項研究是以太坊研究員的共同努力: @Mason-Mind @georgesheth @dennis @AshelyYan
一、簡介
隱形地址 (SA) 可防止區塊鏈交易與接收者的錢包地址公開關聯。 SA有效地隱藏了交易的實際目標地址。保護接收者的隱私並切斷對交易流程的社會工程攻擊至關重要。
@vbuterin @Nerolation提出EIP-5564 1作為第一個 SA 設計,並利用 Secp256k1 橢圓曲線(EC)開發了BasedSAP作為以太坊上 SA 的實現。然而, @vbuterin也強調了開放問題中當前的局限性:改進隱形地址以要求(完全同態加密)FHE 解決方案:
基於BaseSAP,我們進一步提出了FHE-DKSAP :一種具有完全同態加密(FHE)的SA協議。 FHE-DKSAP具有以下主要優點:
- FHE-DKSAP用FHE替代EC,提高安全級別。 FHE構建了格密碼學,為裝備FHE-DKSAP而生,以防止量子計算攻擊。
- 因此,FHE-DKSAP中的SA可以保證被重用,不需要生成大量的SA,降低了SA採用的複雜度和難度。
- 與 EIP-5564 中的雙密鑰設計相比,我們在 FHE-DKSAP 中的設計可以幫助接收者外包檢查整個鏈中包含資產的 SA 的計算,而無需透露其查看密鑰。
2. 背景
以太坊隱私保護的重點之一是切斷收據地址的公共關聯。 SA建議要求發送方代表接收方為每筆交易創建一個隨機的一次性地址,以便對同一收款人進行的不同支付不可關聯。
我們系統地研究了之前的出版物,發現雙密鑰隱形地址協議(Courtois, NT, & Mercer, R. 2017)是最受歡迎的設計。然而,它仍然容易受到密鑰洩漏攻擊和量子計算攻擊。為了防止這些攻擊,我們建議使用格的應用 FHE 來實現 SA。
其他研究可總結如下:
- 隱形地址(SA)技術的發展始於 2011 年 4 月 17 日比特幣論壇上一位名為“bytecoin”的用戶的最初發明。該技術引入了能夠承載安全消息的不可追踪交易的概念,為增強安全性鋪平了道路。區塊鏈系統中的隱私和安全。
- 2013 年,Nicolas van Saberhagen 在 CryptoNote 白皮書中進一步闡述了這一概念,提供了有關隱形地址技術的更多見解和進步。他的貢獻擴展了對如何將隱形地址集成到加密協議中的理解。接下來的幾年裡,一些研究人員在隱形地址技術領域取得了長足的進步。
- 2017年,Nicolas T. Courtois和Rebekah Mercer推出了魯棒多密鑰隱形地址,增強了SA技術的穩健性和安全性。
- 2018 年,範欣欣和他的團隊提出了更快的雙密鑰隱形地址協議,專為基於區塊鏈的物聯網 (IoT) 系統而設計。他們的協議引入了一個遞增計數器,可以更快地解析並提高整體效率。
- 2019年,賈帆和他的團隊利用雙線性映射解決了Stealth Addresses中的密鑰長度問題,從而在增強協議的安全性和實用性方面取得了重大進展。
- 同年,研究人員推出了支持隱形地址的基於格子的可鏈接環簽名。這項創新旨在對抗對手選擇的密鑰攻擊,進一步增強安全性。然而,本文並未利用多鍵。
- 隨著技術的進步,EIP-5564被提出在以太坊上實現SA,2023年6月25日,論文BasedSAP作為一個完全開放且可重用的Stealth Address協議出現。
據我們所知,所有研究都未能滿足以下總體要求:1)保護以太坊隱私,2)防止量子計算攻擊,3)重用 SA 而不是創建許多 SA。
3. 我們的設計:FHE-DKSAP
我們通過在 DKSAP 中採用 FHE 來解決挑戰,並將我們的新設計命名為 FHE-DKSAP:
我們介紹 FHE-DKSAP 的詳細信息如下。需要具備 DKSAP 和 FHE 的初步知識,您可以先閱讀第 6 章以準備好這些知識:
Bob(接收者)創建兩個密鑰對: (sk_2, PK_2) ( s k 2 , P K 2 )和(sk_b, PK_b) ( s k b , P K b ) 。
1.1. sk_2 s k 2是隨機生成的以太坊錢包私鑰,用於 SA 支出目的。使用前不需要在以太坊上註冊,也不是Bob的錢包私鑰。
1.2. SA支出錢包地址公鑰PK_2 P K 2使用sk_2 s k 2生成。它遵循從sk_2 s k 2到PK_2 P K 2的標準以太坊地址轉換。如前所述, PK_2 P K 2最終的錢包地址不需要在以太坊上註冊即可使用。
1.3. sk_b s k b為SA加解密的FHE私鑰。
1.4. PK_b P K b用於對sk_2 s k 2的值進行加密,得到密文C_2 C 2 。由於 FHE 可以防止量子計算攻擊,因此將sk_2 s k 2加密為C_2 C 2是安全的。
1.5. Bob公開共享PK_2 P K 2 、 PK_b P K b和密文C_2 C 2 。Alice(發送者)為每個 SA 交易隨機生成密鑰對(sk_1, PK_1) ( s k 1 , P K 1 ) 。
2.1. sk_1 s k 1是以太坊臨時的,公鑰或錢包地址在使用前不需要在以太坊上註冊。
2.2.她將生成以太坊錢包的兩個公鑰PK_1 P K 1和PK_b P K b組合起來,得到PK_z P K z 。
2.3.隱形地址(SA)是根據PK_z P K z通過標準以太坊地址轉換生成的。
2.4. Alice 使用 Bob 的 FHE 公鑰PK_b P K b加密秘密密鑰sk_1 s k 1 ,得到密文C_1 C 1 。然後Alice廣播C1,這樣Bob就能夠以不可追踪的方式獲取它。
2.5. Alice 無法知道 SA 的私鑰,因為沒有人可以從公鑰PK_z P K z猜出私鑰。這意味著Alice只知道向哪裡發送SA交易,但永遠無法登錄到這個SA錢包。Bob收到密文C_1 C 1並將兩個密文( C_1 C 1 , C_2 C 2 )相加得到C C 。
3.1 利用加性同態,他可以用他的 FHE 私鑰sk_b s k b解密密文C C 。 FHE解密結果是接收Alice發送的錢包的私鑰sk_z s k z 。
3.3.然後,他可以使用sk_z s k z生成隱形地址,並使用只有 bob 擁有的私鑰對其進行解密。因此,Bob 能夠使用私鑰sk_z s k z將其餘額轉移到 SA 錢包。
基於BasedSAP,FHE-DKSAP有以下改進:
- 它通過密文計算來保護隱形地址的隱私。
- 與DKSAP和BasedSAP相比,我們的設計消除了密鑰和個人信息洩露的風險。
- 同時,它還可以防止量子計算攻擊。
4. 我們的實施:FHE-DKSAP
我們已經用 Python 實現了 FHE-DKSAP,我們很快就會在這裡提供代碼。
5. 我們的評估:FHE-DKSAP
我們已經測試了 FHE-DKSAP 並與 BaseSAP 進行了比較,我們將很快在這裡提供評估。
6.其他閱讀
6.1 雙密鑰隱形地址協議 (DKSAP) 回顧
DKSAP 建立在橢圓曲線 (EC) 中的 Diffie-Hellman (DH) 密鑰交換協議之上。當發送方(A)想要以隱秘模式向接收方(B)發送交易時,DKSAP 的工作方式如下:
定義:
“隱形元地址”是一組一個或兩個公鑰,可用於計算給定收件人的隱形地址。
“支出密鑰”是一種私鑰,可用於支出發送到隱形地址的資金。 “支出公鑰”是相應的公鑰。
“查看密鑰”是一種私鑰,可用於確定發送到隱形地址的資金是否屬於控制相應支出密鑰的接收者。 “查看公鑰”是對應的公鑰。
- 接收方 B 有一對私鑰/公鑰(v_B, V_B) ( v B , V B )和(s_B, S_B) ( s B , S B ) ,其中v_B v B和s_B s B稱為 B 的“查看”分別為“私鑰”和“支出私鑰”,而V_B = v_BG V B = v B G和S_B = s_BG S B = s B G是相應的公鑰。請注意, V_B V B和S_B S B都不會出現在區塊鏈中,只有發送者 A 和接收者 B 知道這些密鑰。
- 發送方 A 生成臨時密鑰對(r_A, R_A) ( r A , R A ) ,其中R_A = r_AG R A = r A G且 0 < r_A r A < n,並將R_A R A發送到接收方 B。
- 發送方 A 和接收方 B 都可以執行 ECDH 協議來計算共享密鑰: c_{AB} = H(r_A*v_BG) = H(r_A*V_B) = H(v_B*R_A) c A B = H ( r A * v B G ) = H ( r A * V B ) = H ( v B * R A ) ,其中H(·) H ( · )是加密哈希函數。
- 發送方 A 現在可以生成 A 應向其發送付款的接收方 B 的目標地址: T_A = c_{AB}G + S_B T A = c A B G + S B 。請注意,一次性目標地址 TA 是公開可見的,並出現在區塊鏈上。
- 根據錢包是否加密,接收方 B 可以通過兩種不同的方式計算相同的目標地址: T_A = c_{AB}G + S_B = (c_{AB} + s_B)G T A = c A B G + S B = ( c A B + s B ) G 。相應的臨時私鑰為t_A = c_{AB} + s_B t A = c A B + s B ,該私鑰只能由接收者 B 計算,從而使 B 能夠稍後花掉從 A 收到的付款。
6.2 全同態加密
同態加密 (HE) 是一種特殊類型的加密技術,允許對加密數據進行計算,而無需訪問秘密(解密)密鑰。計算結果保持加密狀態,並且只能由密鑰所有者透露。同態有加法同態和乘法同態,如下:
加性同態: E(m_1) + E(m_2) = E(m_1+m_2) E ( m 1 ) + E ( m 2 ) = E ( m 1 + m 2 )
乘法同態: E(m_1) * E(m_2) = E(m_1*m_2) E ( m 1 ) ∗ E ( m 2 ) = E ( m 1 ∗ m 2 )
同態加密方案由四個過程組成, E = ( KeyGen , Encrypt , Decrypt , Evaluate ) E = ( KeyGen , Enc ry p t , Dec y p t , E v a l你a t e ) :
(sk, pk) ← KeyGen (1^λ, 1 ^ τ ) ( sk , p k ) ← Key Gen ( 1 λ , 1 τ ) 。採用安全參數λ λ和另一個參數τ τ並輸出秘密/公鑰對。
c ← 加密(pk , b ) c ←加密p t ( p k , b ) 。給定公鑰和明文位,輸出密文。
b ← 解密( sk , c ) b ←解密p t ( sk , c ) 。給定密鑰和密文,輸出明文位。
c ← 評估( pk , Π , c ) c ←評估( p k , Π , c ) 。採用公鑰 pk、電路Π Π 、密文向量(一個對應於Π Π的每個輸入位),並輸出另一個密文向量(對應於Π Π的每個輸出位)。
目前,存在多種完全同態加密(FHE)算法。 Gentry 是提出能夠執行乘法和加法運算的同態加密算法的先驅。然而,其實際實施受到了限制。另一個重大進步是BGV方案,它引入了一種新穎的同態加密構造技術。
七、結論
在 DKSAP 和 BaseSAP 的推動下,我們提出了 FHE-DKSAP 來幫助接收者外包檢查整個鍊是否包含資產的隱形地址的計算,而無需透露他的查看密鑰,並防止量子計算攻擊。

