没有合适的资源?快使用搜索试试~ 我知道了~
面向ECDSA的低复杂度多标量乘算法设计.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 139 浏览量
2022-11-28
20:27:17
上传
评论
收藏 185KB DOCX 举报
温馨提示
试读
14页
面向ECDSA的低复杂度多标量乘算法设计.docx
资源推荐
资源详情
资源评论
数字签名往往是通过公钥密码来进行的,与物理签名相比,具有不能被他人
更改的特性,通过身份认证和密钥协商可以保证通信安全
[1]
。在数字签名体系中,
与 同 为 公 钥 密 码 体 制 的 RSA 算 法 相 比 , 椭 圆 曲 线 密 码 (Elliptic Curve
Cryptography,ECC)的加密和解密使用的密 钥 长 度较短,可以 减少存储空间和
功耗,适合在有限的硬件资源上体现
[2]
。根据椭圆曲线密码应用或密码协议所规
定的运算规程,现有的协议常见的有椭圆曲线密码数字签名算法(Elliptic Curve
Cryptography Signature Algorithm,ECCSA), 椭 圆 曲 线 密 码 密 钥 交 换 协 议
(Elliptic Curve cryptography Diffie-Hellman,ECDH)和加密解密机制。椭圆曲线
密码算法性能依赖于标量乘算法运算性能,标量乘又可分解为点加(计算 P+G,
计算量用 A 表示)、倍点(计算 2P,计算量用 D 表示)、三倍点(计算 3P,计算量
用 T 表示)和五倍点(计算 5P,计算量用 Q 表示)等运算。
在生成公钥时,ECDSA 签名过程和 ECDH 密钥交换过程中使用的是单标
量乘算法,在 ECDSA 验签过程中使用的是多标量乘算法
[3]
。单标量乘主流算法
有倍点——点加二进制方法(Doubling and Addition method,D&A)
[4]
,非邻接表
示 形 (Non-Adjacent-ForM,NAF)
[5]
和 带 窗 口 的 非 邻 接 表 示 形 (window width-
Non-Adjacent-Form,wNAF)
[6]
等 算 法 , 标 量 非 ‘0' 概 率 分 别 为 1/2 、 1/3 和
1/(w+1)。这些算法核心思想是通过额外的预处理,来扩大标量 k 中的 0 的位数
减少点加的次数,来加速标量乘。然而,窗口 w 扩大不仅使汉明权重下降,也导致
预处理的计算复杂度大幅度增长。目前,文献[7]所提出的多基链思想因其独特
的运算优势也成为了标量乘讨论的热点之一。根据基的个数,可以分成双基链
(Double-Base Chain,DBC)和多基链(Multi-Base Chain,MBC),多基链的宗旨是
将标量生成如下形式:
k= ∑i=1m∑i=1ms
i
2
bin
3
tri
5
qui
。
(1)
以多基链为优化方向的算法存在一个构建多基链时间长短的问题。根据贪
心法生成的思想,若构建的链过大,则会导致标量乘运行变慢;若构建一个最优的
链,则又会导致用在构建的时间上过长。文献[8]优化了三基链并提出了优化的
5P 运算,重新排序了基底有关{2.3.5}的运算顺序。文献[9]通过设计一个基于伪
四维投射坐标的多基链算法来优化构建多基链的方式,从而使得整体开销相对
于常规算法降低了 8.7%,文献[10]对双基链进行优化后可以保证相对比 wNAF
优化了超过 60%。文献[11]设计了一种基于 2,3 的双基链保证比 NAF 优化超
过 45%。
对于 多 标 量 乘算 法,主 流 的算 法有 Shamir
[12]
,联合 稀 疏 形 式(Joint Sparse
Form,JSF)
[13]
,联合双基链算法(Joint Double-Base Chain,JDBC)和联合多基链
算法(Joint Multi-Base Chain,JMBC )。Shamir 和 JSF 的汉明权重分别为 3/4
和 2/3。JMBC 在 MBC 的基础上,将两个标量联合表示为
(k1k2)k1k2= ∑i=1m(cidi)∑i=1mcidi2
bin
3
tri
5
qui
。
(2)
文献[14]提出了一种高效的转换联合三基方式。该方法设计很简单,使用的
硬件较少。文献[15]对 JSF 算法和 JMBC 进行了分析比对,并在三基链的基础
上进一步优化,大大提高了 ECDSA 的速度。文献[16]对 JMBC 的算法思想进行
了详细的描述和分析。文献[17]指出 A、D、T 和 Q 在雅克比坐标下的花费分
别为 12M+4S,4M+6S,6M+10S 和 15M+10S,其中 M 和 S 分别表示模乘和模平
方,模乘和模平方本质上都是模乘,这里可以近似将模乘和模平方视为同一运算
(模乘和模平方的计算比例约为 0.8M=1S
[18]
)。只需通过统计上述操作的模乘次
数即可评估复杂度。ECC 的整体运算是在有限域上运行的,其模乘等操作均有
取模运算,可以保证数据不会出现数据越界情况。并且,多基链所出现的非 0 位
和 0 位的概率并不固定,无法通过分析获得私钥值,可以保证其私钥的安全性。
由于在 ECC 系统既要用到单标量乘算法也要用到多标量乘算法,且为了追求效
率常常采用不同的多标量乘算法和单标量乘算法分别进行运算处理,这意味着
未考虑其他情况下重新进行标量乘算法的调用会导致计算复杂度的提升。
目前关于上述问题的解决方法,文献[19]在 KSS 曲线下提出了一种倾斜的
Frobenius 映射技术,并在其基础上设计了一个快速算法。文献[20]设计了一种
基于“平行点倍(点加和倍点平行)”的适用于单标量乘算法和多标量乘算法的并
行结构,并保证所用的时间和 NAF 算法几乎相同。文献[21]通过基于窗口的方
法进行了加速,使其相对于 shamir 和 NAF 优化了至少 7.9%。文献[22]使用了
GLV 方法来进行多标量乘算法的优化,保证在三维或四维 GLV 方法性能最好。
文献[23]利用三维 GLV 方法探索了在 r 坐标系上的快速标量乘法。构造并实现
了 两 种 三 维 微 分 加 成 链 ,比 使 用 DJB 链 的 双 标 量 乘 法 快 约 6%。 文 献 [24]以
2,3,7 为基底的多基链整数表示形式及两种多标量乘快速算法,在素数域上,至
少比传统算法优化 3.1%。文献[25]使用了双基分解方法并进行对 Montgomery
曲线和 Edwards 曲线混合来进行加速。
笔者通过整除基底{2,3}并对二者不能整除的部分取模 3
x
2
y
的方式来构建
JDBC 表示形式,同时对余数进行预处理来进一步降低计算复杂度,从而保证了
在减少预处理的前提下避免了因分别运算处理导致的计算复杂度提升的问题。
1 低计 算复杂度多 标量乘 算法设 计
无论在 ECDSA 的签名过程,ECDH 密钥交换和 ECC 的密钥生成过程使用
的 private_keyG 单 标 量 乘 算 法 , 还 是 在 ECDSA 验 签 过 程 中 使 用 到
k
1
G+k
2
public_key 多标量乘算法(G 是椭圆曲线上的一个公共点,private_key 是
私钥,public_key 是对应 private_key 的公钥),都存在着对 k
1
G 进行计算。
因此在构建以{2,3}为基底进行转化 JDBC 的形式中,对两个标量进行整除
基底 2 和 3 的操作时,不能整除基底的部分则对两个标量进行同时取模 3
x
2
y
,并
对余数有关 G 和 P+G 的多倍点操作进行预处理,使得两个标量可以同时处理标
量 k
2
和 k
1
的共同部分。当在调用单标量乘的过程中 k
2
是 0 的情况下,直接对 G
的预处理进行相应的计算,从而保证了单标量乘和多标量乘算法的正确性。计
算形如 mG+nP 的多标量转换则如下所示:
mG+nP→,b
1
(m1Gn1(P+G)+b2(m2Gn2(P+G)+...bi(miGni(P+G))))m1Gn1
(P+G)+b2m2Gn2(P+G)+...bimiGni(P+G),⎛⎝⎜m1n1b1⎞⎠⎟m1n1b1=⎧⎩⎨⎪⎪
⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎛⎝⎜m1=0n1=0b1=3
⎞⎠⎟
若
m≡0⎛⎝⎜mod3⎞⎠⎟
且
n≡0⎛⎝⎜mod3⎞⎠⎟
,⎛⎝⎜m1=0n1=0b1=2⎞⎠⎟
若
m≡0⎛⎝⎜mod2⎞⎠⎟
且
n≡0⎛⎝⎜mod2⎞⎠⎟
,⎛⎝⎜m1=mmod3x2y−n1,n1=nmod3x2yb1=2⎞⎠
⎟
若
m
和
n
不能整除
2
或
3
,m1=0n1=0b1=3 若 m≡0(mod3)且
n≡0(mod3) ,m1=0n1=0b1=2 若 m≡0(mod2)且
n≡0(mod2) ,m1=mmod3x2y-n1,n1=nmod3x2yb1=2 若 m 和 n 不能整除 2 或
3 ,m=(m-m
1
-n
1
)//b
1
,n=(n-
剩余13页未读,继续阅读
资源评论
罗伯特之技术屋
- 粉丝: 3542
- 资源: 1万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功