这项研究是以太坊研究员的共同努力: @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 来帮助接收者外包检查整个链是否包含资产的隐形地址的计算,而无需透露他的查看密钥,并防止量子计算攻击。





