Page 35 - 《软件学报》2025年第10期
P. 35

4432                                                      软件学报  2025  年第  36  卷第  10  期


                    Kyber-AKE  会话密钥的安全性可以在        Canetti-Krawczyk (CK) 模型下证明  [6] , 但是只能保证会话密钥的弱前向
                 安全性, 研究表明, 对于两轮的密钥交换, 难以达到完美前向安全性                   [6] . 前向安全性指的是即使会话参与方的长期
                 密钥遭到泄露, 也不会影响到泄露前生成的会话密钥的安全性. 弱前向安全性要求敌手不能主动参与会话                                 (完美前
                 向安全性游戏中敌手可以主动参与会话). 此外, Kyber-AKE             全部使用   IND-CCA  安全的密钥封装机制, 可能存在进
                 一步提升其计算性能的空间. 这是由于            Kyber-AKE  的会话密钥导出过程中, 对已经经过杂凑运算的会话密钥进行
                 了进一步杂凑运算, 该设计可能会导致冗余运算, 因此, 通过                IND-CPA  安全的  PKE  设计  AKE  可能会更加简洁. 采
                 用  IND-CPA  安全的  PKE  设计  3  轮  AKE  需要克服的主要难点在于: (1) IND-CPA  安全的   PKE  中存在一定的解密
                 错误概率, 需要解决由于解密错误导致的安全性问题. (2) 如何保证协议具有较强的安全性质, 如: 完美的前向安全
                 性, Kyber-AKE  并不具备该安全性质. (3) 如何让协议有较好的计算性能.
                    针对上述问题, 本文从       IND-CPA  安全的公钥加密     (PKE) 出发, 提出了一个安全、简洁且计算性能较高的后量
                 子  AKE, 并且在  eCK-PFS-PSK  模型  [7] 下给出了该协议的安全性证明. 由于       eCK-PFS-PSK  模型保证了当双方共享
                 一个没有被敌手窃取的预共享密钥, 或者至少有一方的长期或临时私钥没有被敌手窃取, 则会话密钥保持伪随机
                 性, 这意味着会话密钥拥有完美前向保密             (perfect forward secrecy, PFS) 性质. 该协议被命名为  Kyber-PFS-AKE, 并
                 具有更高的计算效率. Kyber-PFS-AKE      构造的主要思想如下.
                    (1) 从  IND-CPA  安全的  PKE  出发构造认证密钥交换: 认证密钥交换的会话密钥都是由一系列密钥材料                       (如
                 图  2  中  C 1 ,C 2 ,C 3 ,...) 按顺序链式产生. 以  Kyber-AKE  为例, 双方会按照协议流程产生  KEM  临时公钥、KEM  共享
                 密钥或   KEM  的密文等, 这些被统称为密钥材料          (keying material), 用于生成双方的会话密钥. 在握手过程中, 发起
                 者  (响应者) 将协议过程中每一步生成的密钥材料连同上一步密钥导出函数                       (key derivation function, KDF) 的输出
                 共同作为密钥导出函数的输入, 最终握手完成后, 密钥导出函数将用于生成传输消息的会话密钥.


                                   会话     KDF  C 1  KDF     C 2   KDF   C 3  KDF     ...
                                   密钥
                                                              m
                                                            ①            shk=H(pk,m)
                                                  T [PKE,G]
                                                                  ⊥
                                           IND-CPA        PKE′  ②  U m [PKE′,H]  IND-CCA
                                            PKE
                                                     Enc'(m)=Enc(pk,m;G(m))  KEM
                                                  图 2 会话密钥的派生过程

                    NIST  征集的  IND-CCA  安全的  KEM  都是对  IND-CPA  安全的  PKE  进行  Fujisaki-Okamoto  变换得到  (以下简
                 称  FO  变换). FO  变换由两个变换组成, 分别称为       U  变换和  T  变换, 记为  FO = U ◦T G 和  H  为密钥导出函数, 给定
                                                                                 .
                 公钥加密方案     PKE.  T  变换对  PKE  进行去随机化和重加密校验, 记作       PKE = T[PKE,G]. 具体来说,  PKE  的加密算
                                                                                                ′
                                                                          ′
                            ′   ′                        ′         ′   ′                   PKE.Dec(sk,ct)  将
                                                    .
                 法定义为    PKE .Enc (pk,m) := Enc(pk,m;G(m)) PKE  的解密  PKE .Dec (sk,ct)  定义为: 首先通过
                             ′      ′                      ′   ′                                     ′
                 密文   ct 解密为   m , 并对   m  进行重加密校验, 若  Enc(pk,m ;G(m )) , ct, 则拒绝该密文.  U  变换记作  KEM = U[PKE ,H],
                                                                                     ′
                                                                                 ′
                 其封装算法    KEM.Encaps(pk)  首先从消息空间均匀随机选择         m, 计算密文   ct ← PKE .Enc (pk,m), 并计算共享密钥
                 shk ← H(pk,m). 解封装算法首先进行解密, 计算       m := Dec(sk,ct) s ,   为私钥中保存的随机种子. 解封装过程为: 如果
                 m , ⊥, 则  KEM.Decaps(sk,c) = H(pk,m), 否则  KEM.Decaps(sk,c) = H(s,ct).
                    Kyber-AKE  直接将  IND-CCA  安全的密钥封装机制       (KEM) 的会话密钥输入链式密钥中, 链式会话密钥在这
                 一步骤中形如     KDF(H(pk,m)). 会话密钥的生成过程如图        2  中的②③所示. 实际上, 链式密钥派生过程中的密钥派
                 生函数   (KDF) 可以扮演与    U  变换中的密钥派生函数相同的作用. 因此, Kyber-PFS-AKE           的设计中, 从一个     IND-
                 CPA  安全的  PKE  出发, 对其进行   T  变换, 随后用链式密钥计算中的密钥派生函数代替              U  变换, 这样做的好处是简
                 化了协议设计, 提高了效率并减小了代码规模. Kyber-PFS-AKE             生成会话密钥的过程如图         2  中的①所示.
                    (2) 去除对完整公钥的杂凑运算: 为了进一步提升协议的计算性能, 在会话密钥导出过程中, 发起者与响应者
                 均需要使用对方的公钥计算          IND-CCA  安全的  KEM  的共享密钥, 并将共享密钥作为密钥派生函数的输入, 计算公
                 钥   pk 的杂凑值是为了提供多用户安全性, 即当存在多个拥有不同公钥接收者的情况下, 敌手可能将同一个消息                               m
   30   31   32   33   34   35   36   37   38   39   40