SM2 密码算法密钥渗漏分析*

2021-09-14 07:35黄欣沂陈荣茂邢倩倩
密码学报 2021年4期
关键词:私钥公钥数字签名

黄欣沂, 陈荣茂, 王 毅, 邢倩倩

1. 福建师范大学 计算机与网络空间安全学院, 福州350117

2. 福建师范大学 福建省网络安全与密码技术重点实验室, 福州350117

3. 国防科技大学 计算机学院, 长沙410073

1 引言

可证明安全理论为现代密码学提供了严谨的安全性分析方法, 主要思想是基于计算复杂性理论, 将敌手攻击密码算法的过程与破解公认困难性数学问题建立近似等价联系, 证明密码算法的安全性. 可证明安全已被广泛用于密码算法的设计与安全性分析, 为促进密码技术在现实生活中的应用提供了理论上的安全保障. 然而, 越来越多的安全事件表明, 理论上已被证明安全的密码算法在实际应用中仍然可能失效. 这是因为可证明安全主要针对密码算法的规范(specification) 进行理论分析, 而密码算法在实际部署(implementation)应用时因为各种原因可能没有严格遵守相应的规范,导致算法的安全性无法达到理论上已证明的安全级别, 甚至遭到彻底破坏.

2013 年著名的“斯诺登事件” 披露, 以美国国家安全局为代表的安全机构为了能够对互联网用户实施大规模监听, 控制密码算法标准的制定, 篡改密码产品中相关算法的软硬件部署, 通过植入密码后门获取用户私钥, 破坏用户的通讯隐私[1,2]. 因为密码后门设计巧妙, 具有极强的隐蔽性, 所以直到“斯诺登事件”所披露的相关文档公开之后才被公众所知. “斯诺登事件” 在国际密码学界迅速引起广泛关注, 研究人员开始从技术层面研究美国政府大规模监听背后的技术手段, 逐渐形成以研究密码算法后门嵌入形式、工作原理和防范技术为核心的“后斯诺登密码学”[3].

在2014 年的美密会上, Bellare 等提出“算法替代攻击” (algorithm substitution attack, ASA)[4],用于刻画对称加密算法在实际部署时被篡改导致密钥渗漏的一种特殊攻击方法. 该种攻击假设敌手可以控制加密算法的实际部署, 在算法中植入特定的后门, 使得算法在保持原有加密功能的情况下, 将用户密钥信息嵌入到可以正常解密的密文中. 攻击者在捕获到密文之后, 就可以利用后门信息从密文中分析还原用户密钥信息, 从而解密密文得到明文信息. 这种攻击的雏形最早可以追溯到上世纪90 年代由Young 等提出的“盗码学” (kleptography) 概念[5–7]. 该攻击技术主要考虑在黑盒密码体制中秘密嵌入后门(secretly embedded trapdoor with universal protection, SETUP) 破坏密码算法安全性的情况. 与Bellare 等提出的ASA 攻击不同, SETUP 攻击主要考虑的是非对称方式嵌入的后门, 即被嵌入后门与攻击者还原密钥所用的后门信息是公私钥的关系. 从攻击者的角度来讲, 这种攻击方式可以更好地保持攻击专有性(exclusivity), 即使内嵌的后门信息被发现, 也无法攻击其他被嵌入相同后门的密码系统.

在Bellare 等的工作之后,国内外学者围绕对称加密[8,9]、数字签名[10–12]、格上公钥加密[13]、消息验证码[14]等不同密码算法开展了深入的后门攻击评估. 本文将在1.3 节对这些工作进行总结阐述. 虽然这些攻击在具体的定义上不完全相同, 但都是通过篡改算法部署, 将密钥信息嵌入算法的输出中, 达到密钥渗漏的目的. 因此, 为了后面叙述的一致性, 本文将这类攻击统一称之为“密钥渗漏攻击” (key exfiltration attack, KEA). KEA 也可以用于隐蔽传输其他秘密信息, 比如加密的明文和加密过程产生的随机数等敏感信息. 这一点和以实现隐蔽传输为目标的隐写术(steganography) 是类似的. 文献[15] 已经从理论上严

谨论证了该种攻击和传统隐写术之间存在近似等价的相互转换关系, 即对于输出具有一定最小熵值的加密算法, 存在和算法内部运行细节无关的通用后门攻击.

1.1 研究动机

我国自主设计的国产商用密码是实现信息系统安全可控的核心保障, 在使用过程中也将遭受一系列不同动机的安全分析和恶意攻击. 由于国产商用密码在设计之初没有考虑密钥渗漏攻击, 目前也未见公开发表的针对国产商用密码的密钥渗漏攻击分析(下面简称KEA), 所以本文重点评估国产商用密码SM2 数字签名算法和公钥加密算法面临的KEA 威胁, 并提出相应的防范技术. 虽然Bellare 等提出的“偏密文攻击”(biased-ciphertext attack)[4]和Ateniese 等提出的“偏随机数攻击”(biased randomness attack)[10]具有通用性, 也同样适用于SM2 算法, 但这些KEA 攻击方式有两个不足:

(1) 采取“逐比特渗漏” 方式进行密钥渗漏. 该方式具有很强的通用性, 但渗漏效率比较低. 其核心思路是通过“拒绝采样” (rejection sampling) 的方式生成随机数, 直到算法的输出满足预设的条件(如在某个特定函数下表示某一比特密钥信息).

(2) 采用“对称方式” 植入后门密钥, 即算法内嵌后门信息和攻击者提取密钥所用的后门信息相同. 该种形式后门简单通用, 但某种程度上会弱化密钥渗漏攻击能力的专有性. 一旦用户发现算法内嵌的后门信息, 就可以获得和攻击者同样的攻击能力.

因此, 本文旨在探索SM2 算法是否面临比“逐比特渗漏” 方式更加高效且基于非对称后门(和SETUP 类似[5–7]) 的密钥渗漏攻击威胁.

1.2 本文贡献

针对上述问题, 本文首先给出适用于数字签名算法和公钥加密算法的KEA 模型, 主要刻画KEA 攻击的两个性质: “攻击不可检测性” 和“密钥可还原性”. 前者用于刻画攻击的隐蔽性, 即用户通过观察算法的输入输出无法辨别算法是否被篡改. 后者用于描述该种攻击的危害性, 即攻击者通过捕获分析算法的输出可以提取密钥. 在给出攻击模型的基础上, 本文针对SM2 数字签名算法和公钥加密算法进行KEA 威胁评估, 具体结果如下:

(1) 提出针对SM2 数字签名算法的对称密钥渗漏攻击. 该攻击使得攻击者通过2 个连续的签名就能提取签名密钥. 和Ateniese 等提出的“偏随机数攻击”[10]相比, 本文提出的攻击将完整还原密钥所需的签名数量从与密钥长度线性相关降低到常数.

(2) 提出针对SM2 公钥加密算法的非对称密钥渗漏攻击.与对称加密算法不一样,公钥加密算法的运行没有用户私钥的参与. 本文提出了一种能够高效渗漏SM2 公钥加密会话密钥(session key) 的攻击. 该攻击使得攻击者通过当前密文能够成功预测下一次会话使用的加密密钥, 从而具备解密能力.

此外, 本文还对现有相关的抗KEA 技术进行分类总结, 并结合SM2 数字签名算法和公钥加密算法的构造特点选取具有可行性的防范技术进行讨论.

1.3 相关工作

目前国际密码学界在后斯诺登密码学领域取得了一定的进展, 主要体现在对一系列密码算法的后门威胁评估和基于各种假设条件的防范方法设计两个方面. 文献[16] 已经做了比较全面的总结, 下面按照不同的密码算法分类介绍与KEA 威胁评估相关的工作.

对称加密算法: Bellare 等针对密文中包含IV 等公开随机数的对称加密算法, 在文献[4] 中提出了IV-replacement attack. 主要思路是在算法输出的密文中将包含用户密钥的密文作为IV 直接输出, 因此比“偏密文攻击” 更加高效. 随后, Bellare 等[8]提出了一种改进的攻击方法, 避免“偏密文攻击” 需要维护内部状态、记录所渗漏密钥比特位置信息的不足. 主要思路是通过采用特殊的评估函数, 不仅可以根据每次密文提取密钥比特信息, 还可以获取该比特所在的位置信息. 该种攻击由于采用coupon collection 的原理,因此比“逐比特渗漏”的效率更低. Degabriele 等[9]提出了“输入触发攻击”(input-trigger attack).该种攻击只有在加密算法接收到特定输入信息的时候才会被触发, 而且可以直接将密钥输出, 因此效率很高.

数字签名算法: Ateniese 等[10]则针对签名体制开展了KEA 探索, 提出了两种攻击方式: “随机数可提取攻击” (coin-extractable attack) 和“偏随机数攻击” (biased randomness attack). 前种攻击与Bellare 等提出的IV-replacement attack 类似, 主要是将渗漏密钥的密文作为算法输出中的公开随机数,第二种攻击则和“偏密文攻击” 类似, 也是通过“拒绝采样” 的方式, 产生特定的合法签名输出. Teseleanu等[11]针对基于离散对数困难性假设的数字签名方案提出了门限SETUP 攻击方式. 柳驰等在文献[12]中针对“可分割数字签名方案” 提出了一种高效的KEA. 该攻击方式类似于SETUP 攻击, 采用非对称方式在算法中嵌入后门, 且仅需要2 个连续签名就能渗漏整个密钥.

公钥加密算法: 陈荣茂等[17]对采用混合式加密(hybrid encryption) 的公钥加密方案进行了严谨的论证分析, 发现现有大部分采用该结构的公钥加密方案面临一种非常高效的加密会话密钥渗漏攻击. 攻击者通过上一个密文能够成功预测下一个会话中的加密密钥. 事实上, 文中针对公钥加密方案的密钥渗漏攻击可以看做是陈荣茂等攻击框架在SM2 公钥加密方案下的一种实例化, 因此进一步证实了该种攻击的广泛存在性. 在具体方案攻击方面, 杨智超等[13]针对格上公钥加密方案提出了具体的KEA 攻击. Russell等在[18] 中也针对公钥加密方案提出了一种通用的攻击, 其主要思路是采用Bellare 等[4]提出的“偏密文攻击” 方法.

其他密码算法: 除了上述主流的密码体制, Armour 等[14]也分析了MAC 所面临的密钥渗漏威胁.吕佳宪等[19]则对云数据审计协议中挑战因子的可信问题进行研究, 提出了一种通过挑战信息渗漏签名密钥的具体攻击. 此外, 还有一些工作[20,21]针对密码算法的参数安全问题进行了研究.

1.4 本文结构

本文组织结构如下: 第2 节介绍相关预备知识. 第3 节形式化定义针对数字签名方案和公钥加密方案的KEA 模型. 第4 节提出针对SM2 数字签名算法的具体KEA 攻击以及形式化分析. 第5 节提出针对SM2 公钥加密算法的具体KEA 攻击以及形式化分析. 第6 节讨论适用于SM2 密码算法的抗KEA 技术.

2 预备知识

本节介绍后续章节使用的主要符号表示和涉及的密码基础概念.

2.1 符号表示

对于任意非空集合X,x ←$X表示从X中随机选取元素x. 对于任意随机算法F(·),y ←$F(x)表示算法F的随机输出. poly(n) 表示n的多项式函数; 如果某n的函数比n的任何多项式函数的倒数衰减得更快, 则称其为可忽略函数, 使用negl(n) 表示. 如果对于任何长度为n的输入, 算法A最多在poly(n) 步内结束, 则称A为概率多项式时间(PPT) 算法. 对于任意整数i,j满足i

2.2 困难性问题

定义1 (计算性Diffie-Hellman (CDH) 困难性假设) 令正整数n为安全参数, G 为一个阶为素数p的群,g为群G 的生成元. 计算性Diffie-Hellman 困难性假设指的是对于所有的PPT 算法A,

2.3 密码杂凑函数

定义2 (熵平滑的密码杂凑函数簇) 令正整数n为安全参数,F={Fκ}κ∈K表示一个具有密钥的密码杂凑函数簇, 其中K为密钥空间. 假设该函数簇中的每个密码杂凑函数Fκ将群G 中的元素映射到集合{0,1}ℓ中. 我们称该函数簇是熵平滑的, 当且仅当对于所有的PPT 算法D,

2.4 数字签名方案

数字签名方案主要由4 个算法组成: 分别是初始化算法、密钥生成算法、签名算法和验证算法.

• 初始化算法Setup: 输入安全参数1n, 输出系统参数pp;

• 密钥生成算法KGen: 输入系统参数pp, 输出签名私钥sk 和验证公钥vk;

• 签名算法Sign: 输入签名私钥sk 和消息M, 输出签名σ;

• 验证算法Vrfy: 输入验证公钥vk, 消息M和签名σ, 若σ是M的合法签名, 输出1; 否则输出0.

简洁起见, 本文将系统参数pp 从签名算法Sign 和验签算法Vrfy 的输入中省略.

令M为消息空间, 数字签名方案的正确性要求对于任意的系统参数pp←$Setup(1n), 任意的签名私钥和验证公钥(vk,sk)←$KGen(pp) 和任意消息M ∈M,

2.5 公钥加密方案

公钥加密方案主要由4 个算法组成: 分别是初始化算法、密钥生成算法、加密算法和解密算法.

• 初始化算法Setup: 输入安全参数1n, 输出系统参数pp;

• 密钥生成算法KGen: 输入系统参数pp, 输出公私钥对(pk,sk);

• 加密算法Enc: 输入公钥pk 和明文M, 输出密文C;

• 解密算法Dec: 输入私钥sk 和密文C, 输出明文M或者特殊符号⊥.

简洁起见, 本文将系统参数pp 从加密算法Enc 和解密算法Dec 的输入中省略.

令M为明文空间, 公钥加密方案的正确性要求对于任意的系统参数pp←$Setup(1n), 任意的公私钥对(pk,sk)←$KGen(pp) 和任意的明文M ∈M,

3 密钥渗漏攻击模型

本节将分别介绍针对数字签名算法和公钥加密算法的KEA 模型及其性质.

3.1 数字签名算法KEA 模型

• 初始化阶段: 运行Setup(1n) 生成系统参数pp, 运行KGen(pp) 生成签名私钥sk 和验证公钥vk,运行SKGen(pp) 生成后门密钥ssk, 并将(pp,sk,vk) 发送给检测者D;

• 挑战阶段: 随机选取b ←${0,1}. 令SignProc(·) 为如下签名询问应答机, 假设询问输入为消息M:

检测者D向SignProc(·) 发起q(n) 次询问, 其中q(n) 为关于n的任意多项式;

• 猜测阶段: 在询问阶段结束后, 检测者D输出b′. 当b=b′时, 该游戏输出1, 否则输出0.

3.2 公钥加密算法KEA 模型

4 针对SM2 数字签名算法的对称密钥渗漏攻击

本节将首先对SM2 数字签名方案进行简要介绍, 然后给出针对SM2 数字签名算法的具体KEA 方案, 最后证明该KEA 具有不可检测性和签名私钥可还原性.

4.1 SM2 数字签名方案

SM2 数字签名方案的系统参数pp 包括: 有限域Fq, 椭圆曲线E(Fq) 及该曲线上的无穷远点O, 任意选取的基点G= (xG,yG)(G ̸=O), 基点G的阶n及其余因子h, 消息摘要长度为v比特的密码杂凑函数Hv, 部分椭圆曲线系统参数. 假设系统参数pp 还包括用户A的可辨别标识, 和用户A公钥的杂凑值为ZA. SM2 数字签名方案中的密钥生成算法、签名算法和验证算法分别如算法1—算法3 所示.

算法1 SM2 签名密钥生成算法Input: 系统参数pp Output: 签名私钥及验证公钥对(sk,vk)1 dA ←$ [1,n −1]2 PA = [dA]G 3 (sk,vk) = (dA,PA)4 return (sk,vk)算法2 SM2 签名算法Input: 系统参数pp, 签名私钥dA, 消息M Output: 签名σ 1 ^M = ZA||M 2 e = Hv(^M)3 k ←$ [1,n −1]4 (x1,y1) = [k]G 5 r = (e+x1) mod n 6 s = ((1+dA)−1 ·(k −r·dA)) mod n 7 σ = (r,s)8 return σ

算法3 SM2 验证算法Input: 系统参数pp, 验证公钥dA, 消息M′,签名σ′Output: 1 或0 1 (r′,s′) = σ′2 if r′ /∈[1,n −1]∨s′ /∈[1,n −1] then 3 return 0 4 end 5 ^M′ = ZA||M′6 e′ = Hv(^M′)7 t = (r′ +s′) mod n 8 (x′1,y′1) = [s′]G+[t]PA 9 R = (e′ +x′1) mod n 10 if R ̸= r′ then 11 return 0 12 end 13 return 1

4.2 具体KEA 方案及理论分析

在进行攻击前, 攻击者需要运行算法SKGen 生成后门密钥ssk: 攻击者首先从G 中随机选取生成元PS, 然后从密码杂凑函数簇F={Fκ}κ∈K中随机选择密码杂凑函数Fκ:G→[1,n −1], 其中G 为椭圆曲线E(Fq) 上所有点的集合. 因此, ssk=(PS,Fκ).

根据引理1,G0和G1对于任意PPT 算法而言不可区分. 综上所述, 上述攻击是不可检测的.定理2 上述攻击是签名私钥可还原的.

根据上述步骤, 攻击者A可以还原出签名私钥.

5 针对SM2 公钥加密算法的非对称密钥渗漏攻击

本节将首先简要介绍SM2 公钥加密方案, 然后给出针对SM2 公钥加密算法的具体KEA 方案, 最后证明该KEA 具有不可检测性和明文可还原性.

5.1 SM2 公钥加密方案

SM2 公钥加密方案的系统参数pp 包括: 有限域Fq, 椭圆曲线E(Fq) 及该曲线上的无穷远点O, 任意选取的基点G= (xG,yG)(G ̸=O), 基点G的阶n及其余因子h, 密钥派生函数KDF 和密码杂凑函数H, 其中密钥派生函数KDF 输入比特串Z和整数ℓ, 输出长度为ℓ的密钥数据比特串K. 和数字签名方案的密钥生成算法类似, SM2 公钥加密方案的密钥生成算法首先从[1,n −1] 中随机选取一个整数dB作为私钥, 然后计算公钥PB= [dB]G. SM2 公钥加密方案中的加密算法和解密算法分别如算法4 和算法5 所示.

算法4 SM2 加密算法Input: 系统参数pp, 公钥PB, 明文M Output: 密文C 1 k ←$ [1,n −1]2 C1 = [k]G 3 S = [h]PB 4 if S = O then 5 return ⊥6 end 7 (x2,y2) = [k]PB 8 klen = |M|9 t = KDF(x2||y2,klen)10 C2 = M ⊕t 11 C3 = H(x2||M||y2)12 C = C1||C2||C3 13 return C

算法5 SM2 解密算法Input: 系统参数pp, 私钥dB, 密文C Output: 明文M 或特殊符号⊥1 S = [h]C1 2 if S = O then 3 return ⊥4 end 5 (x2,y2) = [dB]C1 6 klen = |C2|7 t = KDF(x2||y2,klen)8 M = C2 ⊕t 9 u = H(x2||M′||y2)10 if u ̸= C3 then 11 return ⊥12 end 13 return M

5.2 具体KEA 方案及理论分析

下面形式化分析该攻击具备不可检测性和签名私钥可还原性.

定理3 在随机预言机模型下, 令q(n) 为检测者D发起EncProc 询问的次数,q′(n) 为检测者D发起H′询问的次数, 若任意PPT 算法解决计算性Diffie-Hellman 问题的优势为θ(n), 那么上述攻击是(q(n)−1)·q′(n)·θ(n)-不可检测的.

证明: 我们将通过设计一系列游戏来证明上述非对称攻击的不可检测性. 令Ei表示事件b=b′在游戏Gi中发生.

• 游戏G3与游戏G2相同, 除了在游戏G3中加密询问应答机EncProc(·) 的实现与游戏G2中的略有不同. 具体来说, 游戏G3中的加密询问应答机EncProc(·) 在b= 1 时也输出C ←$Enc(pk,M). 显然, 此时在游戏G3中Pr[E3]=1/2.

综上所述,ϵ(n)≤(q(n)−1)·q′(n)·θ(n). 该定理成立.定理4 上述攻击是明文可还原的.

根据上述攻击的描述, 攻击者A可以还原出除密文C1以外的所有密文的明文.

6 抗密钥渗漏攻击技术讨论

由于KEA 具有很强的破坏性且不在传统安全性分析的考虑范畴, 因此需要研究设计新的技术手段来抵御这种攻击. 目前学术界已有若干研究工作尝试提出具备一定可行性的防范技术. 本文将介绍部分具有代表性的研究工作, 并结合SM2 密码算法方案进行讨论. 更具体详细的总结可以参考国内学者李耕等的综述工作[16].

现有提出的KEA 虽然在具体实施细节上各有不同, 但本质上都是因为密码算法输出的不确定性所造成的. 由于密码算法输出的不确定性与其运行时临时生成的随机数直接相关, 因此有一部分学者建议采用不依赖于随机数的密码机制[4,9,10,22]来抵抗KEA. 特别地, Bellare 等[4]提出了具备唯一密文(unique ciphertext) 性质的对称加密算法, 即给定一个明文, 加密算法所输出的合法密文只有一个. 类似的, Ateniese 等[10]提出了具备唯一签名(unique signature) 性质的数字签名算法. 文献[4,10] 通过形式化分析证明, 在KEA 具备不可检测性的情况下, 上述类型的密码算法可以实现抵抗KEA 的安全性.

上述方法具备一定的可行性. 然而随机数是密码算法常规情况下实现特定安全性(如选择明文攻击不可区分性) 的必备条件. 因此放弃随机数的使用从实现密码算法安全性的角度来讲不是一种很理想的选择.针对这个问题, 另外一些学者尝试在使用随机数情况下设计抵抗密钥渗漏攻击的可行技术. 然而文献[15]从理论上证明了所有随机化算法均面临KEA 威胁, 因此需要基于新的假设性条件(如可信第三方), 否则无法实现抗KEA 安全性. 需要指出的是, 由于假设条件的不同, 现有提出的防范技术之间不具备可比性.下面我们将根据假设条件分类阐述, 并结合SM2 密码算法进行讨论.

6.1 密码逆向防火墙技术

密码逆向防火墙技术是Mironov 等[23]在2015 年首次提出的概念. 类似于传统的网络防火墙, 逆向防火墙部署在密码算法所运行机器的网络边界, 负责对被保护算法所有发送和收到的消息进行处理从而实现抵抗KEA 的目的. 实际上, 密码逆向防火墙可以看做是一段运行在可信机器上的重随机化算法代码, 其工作的主要原理是在不破坏协议功能性的情况下重随机化算法所输出的消息, 从而消除被篡改密码算法在其输出消息中所嵌入的密钥比特信息. 密码逆向防火墙技术已被证明可以用于实现很强的抗KEA 安全性, 在某些特定的情况下甚至可以防范任意的密钥渗漏攻击行为, 因此得到了若干工作[10,24–27]的进一步拓展研究. 然而该技术要求被保护密码算法具备可重随机化的性质, 因此无法直接适用于不具备这种性质的SM2 密码算法. 一个具有潜在可行性的解决思路是弱化对于密码逆向防火墙透明性的要求, 使其与终端机器进行交互获得辅助信息, 从而具备重随机化签名和密文的能力, 但如何降低密码逆向防火墙对原有算法安全性的影响是需要考虑的主要问题.

6.2 基于监视犬的防范技术

Russell 等[18]从体系结构设计的角度提出了程序分割(split-program) 模型. 该模型假设密码算法由若干个独立的模块构成. 而这些模块在实际部署的时候会由一个拥有各个模块对应标准规范(specification) 的可信“监视犬” (watchdog) 逐个进行比对检测. 只有通过检测的模块才能被组装成完整的密码算法投入使用. 基于这种模块化设计思想, 文献[18] 从理论上证明, 通过watchdog 检测模块所组装成的密码算法可以实现抗KEA 安全性. 其核心思路是将密码算法分成确定性模块和随机数生成模块. 前者可以通过比对检测保证与相关规范的一致性, 而后者通过特殊的构造可以生成可信的随机数. 这种“分割-融合” (decomposition and amalgamation) 的思想具有较强的通用性, 已被应用于构造随机数生成器[18]、数字签名算法[18,28]、公钥加密方案[29,30]以及随机预言机[31]等. 由于SM2 数字签名算法和公钥加密算法是随机化算法, 因此上述技术同样适用.

6.3 自我防护技术

Fischlin 等[32]提出了基于“自我防护” (self-guarding) 思想的密码算法构造技术. 其假设密码算法部署在某个时期(如早期阶段) 没有遭到篡改. 在这种假设条件下, 通过收集该阶段算法执行所产生的消息流, 并用这些“干净” 的样本对后期可能被攻击的密码算法输出进行修改, 可以实现抵抗KEA 的安全性.该技术和密码逆向防火墙的本质思想是一样的, 都是依赖可信的随机数对可能内嵌密钥信息的算法输出进行处理从而抵抗KEA. 不同的是, 该技术不需要依赖可信的第三方而需要假设算法存在没有被攻击的阶段. 自我防护技术可以作为解决密码逆向防火墙无法适用不具备可重随机化性质密码算法时的一种可行思路. 不足的地方是, 这种技术需要修改原有密码方案的设计, 而且只能防范某个时间段发起的密钥渗漏攻击类型(如时间炸弹攻击), 并依赖于算法安全阶段所收集的样本数量. 文献[32] 分别给出了抗KEA 的公钥加密、对称加密和数字签名方案构造. 其中数字签名算法的构造同样适用于SM2 数字签名. 而公钥加密算法构造由于要求具有同态性质, 因此并不直接适用于SM2 公钥加密方案.

7 总结

针对密码算法开展密钥渗漏攻击评估是“后斯诺登密码学” 领域的重要研究问题之一. 本文定义了评估密钥渗漏攻击的两个性质: 不可检测性和密钥/明文可还原性. 在此基础上, 针对国产商用密码SM2 数字签名算法和公钥加密算法, 分别提出两种高效的密钥渗漏攻击. 通过理论分析, 证明提出的密钥渗漏攻击满足上述两个性质. 本文的研究结果表明, SM2 数字签名算法和公钥加密算法面临的密钥渗漏攻击威胁比已知的通用攻击更加严重, 在实际部署时应采取相应的防范技术.

需要指出的是, 我们暂时还没有发现针对SM2 数字签名算法的具有非对称形式的密钥渗漏攻击. 柳驰等的工作[12]实现的非对称方式的密钥渗透攻击仅针对特定的数字签名类型, 即“可分割数字签名方案”. 而SM2 数字签名算法并不属于这一类别, 因此无法将现有攻击方式应用到该签名算法.

本文提出的高效密钥渗漏攻击并不能适用于SM2 密码算法中的密钥交换协议. 主要原因是SM2 密钥交换协议采用单轮交互, 协议双方在执行过程中只交换临时随机数, 并没有公开传输与用户私钥相关的信息. 因此, 虽然本文提出的攻击方法可以完整渗漏双方密钥协商时所生成的内部随机数, 却无法用于高效还原用户私钥. 此外, 由于双方协商的会话密钥由用户私钥和临时随机数共同决定, 因此攻击者在只获得随机数的情况下也仍然无法还原会话密钥.

猜你喜欢
私钥公钥数字签名
比特币的安全性到底有多高
Spatially defined single-cell transcriptional profiling characterizes diverse chondrocyte subtypes and nucleus pulposus progenitors in human intervertebral discs
程序员把7500枚比特币扔掉损失巨大
交通运输行业数字签名系统的设计与实现分析
神奇的公钥密码
数字签名技术在计算机安全防护中的应用
国密SM2密码算法的C语言实现
关于电子商务中安全数字签名的研究
基于身份的聚合签名体制研究
掌握方法用好数字签名