走向实用的量子安全的stealth addresses

news/2025/2/11 8:29:02/

1. 引言

stealth addresses为用于cryptocurrency交易中的隐私加强技术,用户可在 不将其public地址暴露在public ledger的情况下,完成cryptocurrency收发。

典型的cryptocurrency交易中,sender必须将其public地址暴露给接收方,同时,也暴露给了任何监听链的人。这将泄露用户隐私和安全性,因为其他人可关联其交易并跟踪其资金。

借助stealth addresses,sender可为每笔交易生成唯一的、一次性的公钥地址,该地址不会关联到其链上的permanent public地址。接收方会将资金存入其permanent public地址中,但接收方仅可关联到发送方的stealth address,并获得相应的资金。

stealth addresses为cryptocurrency交易提供了额外的隐私和安全层,使得第三方更难跟踪和监控链上用户行为。详细也可参看Vitalik 2023年1月博客:An incomplete guide to stealth addresses。

本文探索基于Commutative Supersingular isogenies (CSIDH) 构建Post Quantum版本的stealth addresses。【本解决方案不受 SIDH的新的破坏性攻击 的影响。因为这些攻击主要依赖于 CSIDH的解决方案中不存在的扭点(torsion point)信息。】

关于椭圆曲线密码学的知识可参看:

  • Silverman的书本The Arithmetic of Elliptic Curves

关于Isogeny密码学的知识可参看:

  • De Feo的2017年论文The Arithmetic of Elliptic Curves

1.1 Commutative Supersingular isogenies (CSIDH)

CSIDH发表于Asiacrypt 2018,其基于某efficient commutative group action,为基于isogeny的post quantum 密钥交换。基于isogenies的group actions以1997年Couveignes的Hard Homogeneous Spaces 论文而闻名。大约10年后,Rostovtsev 和 Stolbunov 重新发现了该思想 PUBLIC-KEY CRYPTOSYSTEM BASED ON ISOGENIES。

Couveignes在其开创性工作中引入了Very Hard Homogeneous Spaces(VHHS)的概念。VHHS是循环群的推广,其computational Diffie-Hellman难题和decisional Diffie-Hellman 难题均是hard的。群中的幂运算(或标量乘法,若使用加法表示法)被集合上的group action所取代。基于isogenies的底层group action的主要hardness假设是,很难颠倒group action:

  • Group Action Inverse Problem(GAIP):已知某曲线 E E E,具有 E n d ( E ) = O End(E)=O End(E)=O,找到某ideal a ⊂ O a\subset O aO,使得 E = [ a ] E 0 E=[a]E_0 E=[a]E0

GAIP(也称为矢量化vectorization)可能有点类似于离散对数问题,在本文中,利用这种类比将stealth addresses转换为CSIDH setting。

2. 基于椭圆曲线密码学的stealth addresses

Vitalik 2023年1月博客:An incomplete guide to stealth addresses 中提出了基于椭圆曲线密码学的stealth addresses方案:

  • Bob生成某密钥 m m m,计算 M = m G M=mG M=mG,其中 G G G为某椭圆曲线的generator point。stealth meta-address为 M M M的编码。
  • Alice生成一次性密钥 r r r,并发布相应的一次性公钥 R = r G R=rG R=rG
  • Alice计算某共享秘密 S = r M S=rM S=rM,Bob计算相同的共享秘密 S = m R S=mR S=mR
  • 为计算stealth address公钥,Alice或Bob可计算 P = M + h a s h ( S ) G P=M+hash(S)G P=M+hash(S)G
  • 为计算该stealth address的私钥,Bob(仅Bob)可计算 p = m + h a s h ( S ) p=m+hash(S) p=m+hash(S)

相应的sage脚本为:

#Alice#private
r = ZZ.random_element(n)
#publish
R = r*G
Sa = r * M
s = ''
s+=str(R[0])
s+=str(R[1])
s+=str(Sa[0])
s+=str(Sa[1])
h.update(s.encode())hashS = (int(h.hexdigest(), 16)) % n
Pa  = M + hashS*G #Bob
Sb = m*R
Pb = M + hashS*G 
p = m+hashSassert Sa == Sb
assert Pa == Pb == p*G

3. 基于CSIDH的stealth addreses

本文几乎1:1地将stealth addresses由DLOG setting 转换为 VHHS setting:

  • Bob生成某密钥 m m m,计算 E m = [ m ] E 0 E_m=[m]E_0 Em=[m]E0,其中 E 0 E_0 E0为某starting椭圆曲线。stealth meta-address为 M M M的编码。
  • Alice生成一次性密钥 r r r,并发布相应的一次性公钥 E r = [ r ] E 0 E_r=[r]E_0 Er=[r]E0
  • Alice计算某共享秘密 E S = [ r ] E m E_S=[r]E_m ES=[r]Em,Bob计算相同的共享秘密 E S = [ m ] E r E_S=[m]E_r ES=[m]Er
  • 为计算stealth address公钥,Alice或Bob可计算 P = [ h a s h ( E S ) ] E m P=[hash(E_S)]E_m P=[hash(ES)]Em
  • 为计算该stealth address的私钥,Bob(仅Bob)可计算 p = [ m + h a s h ( S ) ] p=[m+hash(S)] p=[m+hash(S)]

相应的sage脚本为:

#Bob
#private
m = private()
#public
M = action(base, m)#private
r =private()
#publish
R = action(base, r)
Sa = action(M, r)s = ''
s += str(R)
s += str(Sa)
h.update(s.encode())
hashS = (int(h.hexdigest(), 16)) % class_number
hashS_reduced = reduce(hashS,A,B)P = action(M,hashS_reduced)#Bob
Sb = action(R, m)
pv = []
for i,_ in enumerate(m):pv.append(m[i]+hashS_reduced[i])assert Sa == Sb
assert P == action(base,pv)

参考资料

[1] 2023年4月 以太坊research Towards practical post quantum stealth addresses


http://www.ppmy.cn/news/76733.html

相关文章

Elasticsearch 集群部署插件管理及副本分片概念介绍

Elasticsearch 集群配置版本均为8以上 安装前准备 CPU 2C 内存4G或更多 操作系统: Ubuntu20.04,Ubuntu18.04,Rocky8.X,Centos 7.X 操作系统盘50G 主机名设置规则为nodeX.qingtong.org 生产环境建议准备单独的数据磁盘主机名 #各自服务器配置自己的主机名 hostnamectl set-ho…

【交换机路由命令】常用的交换机配置命令及路由器配置命令(软考常考知识点)

【写在前面】在做网络管理员软考历年真题时,不难发现,下午的应用技术,总有那么几道配置的题目,而且分值还挺高的,所以我专门花了几个晚上整理了一下有关命令配置的常见知识点,希望能够给大家带来一些帮助。…

大学生就业工资低,想转行IT?0基础培训班学习半年云计算出来可以就业吗?挑战高薪职业!

大学生就业工资低,想转行IT?0基础学习云计算可以就业吗? 大学生就业工资低,想转行IT?0基础培训班学习半年云计算出来可以就业吗?这是一个很常见的问题,也是很多大学毕业生关心的话题。根据我了解…

子网掩码计算方法

子网掩码是用来划分网络的一种方式,它是一个32位的二进制数,用于将IP地址分成网络地址和主机地址两部分。子网掩码中的1表示网络地址,0表示主机地址。计算子网掩码的方式取决于需要划分的网络数量和主机数量。 以下是一些计算子网掩码的示例…

shell编程--变量

变量 在shell中用户可以建立变量来存储数据,但不支持数据类型,变量名命名规则:数字、字母、下划线,不能以数字开头。 环境变量 当前shell的环境设置的一些变量 ​ export—设置新的环境变量 ​ env—显示所有环境变量 ​ set—…

开放集学习 Open Set Learning

Open Set Learning Open Set Learning是一种机器学习的问题设置,它主要关注在实际应用中,测试阶段可能会出现训练阶段未见过的类别的情况。 相比于传统的监督学习,Open Set Learning更接近现实世界的情况,因为现实世界中总是有可…

【华为OD机试真题2023B卷 JAVA】响应报文时间

华为OD2023(B卷)机试题库全覆盖,刷题指南点这里 响应报文时间 知识点报文 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: IGMP 协议中, 有一个字段称作最大响应时间(Max Response Time), HOST收到查询报文, 解析出 MaxResponseTime 字段后, 需要在 (0, Ma…

西门子PLC如何实现1主多从网口无线通讯

常规来说,多台plc要实现以太网无线连接,首先要先确定以太网线必须正确连接,并建立物理连接。然后需要在PLC端设置好IP地址,以使不同PLC以相同协议可以实现通信交流。最后是建立PLC端数据采集及交换系统,要求在PLC端设置…