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

程石 等: 基于两种新标量表示的安全高效标量乘算法                                                       4549


                 测试. 生成  NAF  序列的长度比对结果如图         1  所示. OWNAF  算法相较于   RWNAF  算法在寄存器相对充足的情况下
                 能够在保证安全的前提下减少标量乘算法的计算开销. 数值实验的结果显示                          OWNAF  算法的生成序列平均长度
                 约比  RWNAF  算法生成的序列的平均长度小          w.
                               145    OWNAF
                              NAF 序列长度  140  RWNAF

                               135
                               130
                               125
                                  2      3       4      5      6      7      8      9      10
                                                            窗口宽度
                                                            (a) 128 位
                               270
                              NAF 序列长度  265  OWNAF
                                      RWNAF
                               260
                               255
                                  2      3       4      5      6      7      8      9      10
                                                            窗口宽度
                                                            (b) 256 位
                               530
                              NAF 序列长度  525  OWNAF
                                      RWNAF
                               520
                               515
                               510
                                  2      3       4      5      6      7      8      9      10
                                                            窗口宽度
                                                            (c) 512 位
                                                   图 1 NAF  序列长度比较

                  2.2   随机密钥分割阶段
                    在各种   DPA  对策中, 随机密钥分割是抵抗         DPA  的高效方法   [21] . 下面考虑在  OWNAF  算法计算   kP 的过程中
                 引入随机数    r, 考虑  k  的随机密钥分割方式为:

                                                     k = ⌊k/r⌋r +k mod r                              (4)

                                                  [k]P = [⌊k/r⌋r]P+[k mod r]P                         (5)
                    在算法   7  的基础上进行调整, 输入标量        k 后生成等长的两组      NAF  随机分割序列    K 1 ,K 2 , 随后通过这个序列组
                 合实现标量乘算法, 如算法        8.
                 算法  8. 标量  k 的  OWNAF  随机分割算法.

                 输入: 标量  k, 窗口值  w;
                           n 的两组  NAF     NAF ow (K 1 ) NAF ow (K 2 ).
                                                   ,
                 输出: 长度为              序列
                       ,
                 1.  a ← 0 i ← 0 r ← RandomInt();
                            ,
                 2.  x ← ⌊k/r⌋r y = k mod r;
                           ,
                 3. while  x ⩾ 1 or  y ⩾ 1 do
                          (        )     (        )
                 4.   T 1 [i] = x mod 2 w+1  ; T 2 [i] = y mod 2 w+1  ;
                 5.  for   j = 1,2 do
                            (            (   ))
                                                   w
                                  w
                 6.    T j [i] = T j [i]−2 ·MSB w T j [i] mod 2 ; /*  MSB w (k) 表示取标量  k 的二进制表示的第  w 位 */
   147   148   149   150   151   152   153   154   155   156   157