Page 271 - 《软件学报》2021年第9期
P. 271

康步荣  等:抗随机数后门攻击的密码算法                                                             2895


         against chosen-distribution attack);并且他们指出,IND-CDA2 安全性比 IND-CDA 安全性更强.IND-CDA2 安全性
         要求 nonce-based 公钥加密算法中对冲提取器 HE 的种子密钥、被加密明文消息以及随机数的联合分布有高的
         最小熵.对冲的 nonce-based 公钥加密算法需要同时满足 IND-CDA2,NBP1,NBP2 这 3 种安全性.除此之外,文献
         [3]中还分析证明了 IND-CDA2 与 NBP1/NBP2 之间的关系,他们的证明结论表示,NBP1/NBP2iIND-CDA2,
         IND-CDA2iNBP1/NBP2.Huang 等人表示,第 3.1 节介绍的 nonce-based 公钥加密算法即可视作在随机预言模
         型下 HN-PKE 的算法构造.他们着重研究了 nonce-based 公钥加密算法的对冲安全性质,证明结果表明,nonce-
         based 公钥加密算法在随机预言机模型下满足 IND-CDA2 安全性.
             另外,Huang 等人考虑了 HN-PKE 在标准模型下的算法构造,并提出了一个具体的 NtD(nonce-then-
                           [3]
         deterministic)加密算法 .所谓的 NtD 算法是指:先用 nonce-based 公钥加密算法 N-PKE(详见第 3.1 节)对明文消
         息 m 进行加密生成 m′,再选择一个确定性加密算法 D-PKE 对 m′进行加密,生成最终密文 C.具体的 NtD 算法包
         含 4 个基本算法,分别是密钥生成算法 NDKg、种子生成算法 NDSKg、加密算法 NDEnc、解密算法 NDDec,我
         们将其记为 NtD=(NDKg,NDSKg,NDEnc,NDDec).为方便起见,我们将 N-PKE 算法记为 NPKE=(NKg,NSKg,NEnc,
         NDec),将 D-PKE 算法记为 DPKE=(DKg,DEnc,DDec).具体的 NtD 加密算法介绍如下.
                                  k
                                                                                       k
                                                 k
             •   密钥生成算法 NDKg(1 ):输入安全参数 1 ,首先运行 N-PKE 算法的密钥生成算法 NKg(1 )→(pk n ,sk n ),
                                                                             k
                生成 N-PKE 算法的公私钥对;其次运行 D-PKE 算法的密钥生成算法 DKg(1 )→(pk d ,sk d ),生成 D-PKE
                算法的公私钥对;最后输出 NtD 算法的公钥 pk=(pk n ,pk d ),私钥 sk=(sk n ,sk d );
                                                  k
                                                                                    k
                                   k
             •   种子生成算法 NDSKg(1 ):输入安全参数 1 ,运行 N-PKE 算法的种子生成算法 NSKg(1 )→xk,输出种子
                密钥 xk;
             •   加密算法 NDEnc pk (M,n,xk):输入公钥 pk=(pk n ,pk d )、消息 M、一个 nonce 值 n,先运行 N-PKE 算法的加
                密算法 NEnc(pk n ,xk,M,n)→y,再运行 D-PKE 算法的加密算法 DEnc(pk d ,y)→C,输出密文 C,其中,nonce
                由 NG 产生;
             •   解密算法 NDDec sk (C):输入私钥 sk=(sk n ,sk d )和密文 C,先运行 D-PKE 算法的解密算法 DDec(sk d ,C)→y,
                再运行 N-PKE 算法的解密算法 NDec(sk n ,y)→M,输出消息 M.
             证明结果表明:当确定性加密算法 DPKE=(DKg,DEnc,DDec)在标模下满足适应性 CCA 安全性时,NtD 算法
         在标模下满足 NBP1,NBP2,IND-CDA2 安全性.
         3.3   Dodis随机数生成算法
             在文献[5]中,Dodis 等人详细介绍了 Dual EC PRNG 中后门攻击的原理.同时,他们表示,可以用密钥封装算
         法和公钥加密算法来构造 BPRNG.即,将密钥封装算法和公钥加密算法的输出看作 BPRNG 生成的随机数.
             除此之外,他们还提出了一种用于增强 PRNG  输出随机性的函数,将该函数定义为“免疫”函数,用 f seed 表
         示.“免疫”函数的工作原理是:将可能存在后门的 PRNG 生成的可能不安全的可预测随机数做为“免疫”函数 f seed
         的输入,将函数 f seed 的输出作为最终的随机数.
             这种情况下,如何判断“免疫”函数作用的有效性是个重要问题.文献[5]中给出了一种验证方法:存在一个攻
         击者 A,他试图构造一个带有后门的 PRNG,然后使用“免疫”函数 f seed 对该 PRNG 进行免疫.如果 A 能成功构造一
         个带有后门的 PRNG,并绕过 f seed ,则表明函数 f seed 为无效免疫;否则,表明 f seed 有效免疫.在这个验证过程中,根据
         攻击者已知“免疫”函数 f seed 相关信息的程度不同,Dodis 等人将免疫模型分为 3 种:公开免疫模型、半隐私免疫
         模型和隐私免疫模型.其中:公开免疫模型是指攻击者 A 构造带有后门的 PRNG 之前就已知函数 f seed 的 seed 值,
         也就是说,攻击者已知函数 f seed ;半隐私免疫模型是指 A 构造带有后门的 PRNG 之后才已知 seed;隐私免疫模型
         是指 A 构造带有后门的 PRNG 前后都未知 seed.Dodis 等人的研究结果表明:在公开免疫模型下,存在后门的
         PRNG 是不能被免疫的,即不存在免疫函数 f seed .在半隐私免疫模型下,Dodis 等人分别考虑了针对随机预言模型
         和标准模型的免疫函数.他们指出:在随机预言模型下,可将随机预言机 RO(random oracle)看作免疫函数,即
         f seed =RO;在标准模型下,可用通用计算萃取器 UCE(universal computational extractor)作为免疫函数,即 f seed =UCE;
         在隐私免疫模型下,Dodis 等人指出:可将伪随机函数 PRF 作为免疫函数,即 f seed =PRF.
   266   267   268   269   270   271   272   273   274   275   276