Page 345 - 《软件学报》2026年第7期
P. 345

3030                                                       软件学报  2026  年第  37  卷第  7  期


                 更优的性能, 提供了高达        26  倍的吞吐量. Kyber 是  LWE  路线的代表性格基密钥封装方案, 目前已被              NIST  标准
                 化, 其底层代数结构为分圆环. 素阶数域使得             CTRU-Prime 能够抵御子域攻击等针对分圆环的攻击, 也引入了额
                 外的性能开销, 例如多项式求逆无法被转移到子环上进行, 这使得无法有效提升最为耗时的多项式求逆的运算
                 速度, 因此, 同  RTX 3080  平台上实现的    Kyber-768  相比, 具有相当安全性且基于        RTX 3060  平台实现的   CTRU-
                 Prime-761  的密钥生成吞吐量较低. 除此之外, 在密钥封装和密钥解封装上同样展现出更优的性能, 与                         Kyber-768
                 的  GPU  实现相比, 密钥封装吞吐量达到        1.46  倍, 密钥解封装达到    1.74  倍.

                                 表 7 CTRU-Prime 的多平台实现对比和相关工作的吞吐量对比                (kOP/s)

                                                                       吞吐量
                                方案         测试平台
                                                       密钥生成           密钥封装          密钥解封装
                           CTRU-Prime-653 [12]  CPU      0.924         61.614         30.764
                           CTRU-Prime-761 [12]  CPU      0.681         58.954         29.401
                          CTRU-Prime-1277 [12]  CPU      0.243         34.204         16.883
                            CTRU-Prime-653  RTX 3060  63.639 (68.849×)  635.590 (10.316×)  351.532 (11.427×)
                            CTRU-Prime-761  RTX 3060  54.359 (79.779×)  2 745.392 (46.569×)  2 622.441 (89.197×)
                           CTRU-Prime-1277  RTX 3060  16.236 (66.843×)  1 601.174 (46.812×)  1 524.825 (90.317×)
                             Kyber-768 [20]  RTX 3080    2 036         1 880          1 501
                            NTRUEncrypt [26]  GTX 1080    -             -              508
                            NTRU-HRSS [35]  RTX 2080      -             105            114
                          注: 括号内的数值为吞吐量相较于CPU平台基线的倍数

                  6   总 结

                    本文提出了一种基于        CUDA Core 和  Tensor Core 的  CTRU-Prime 高吞吐量实现. 针对素阶数域的非       NTT  友
                 好性导致的    GPU  设计挑战, 本文提出两种素阶数域上多项式乘法的                GPU  实现方案. 基于   CUDA Core 的伪梅森数
                 不完整   NTT  多项式乘法使用层融合技术优化访存模式, 在             n=653, 761, 1277  的  3  组参数下, 分别实现了  1.09–11.08
                 倍、2.02–256.13  倍和  2.86–256.98  倍的吞吐量提升; 基于  Tensor Core 的教科书式多项式乘法将多项式乘法转化
                 为矩阵操作, 利用低精度       wmma 操作实现, 分别达到了        1.19–2.04  倍和  10.36–177.24  倍的吞吐量提升. 此外, 本文
                 结合批量模式和单一模式、多流技术和多线程技术, 给出了                   GPU  平台上面向吞吐量的       CTRU-Prime 总体架构, 并
                 通过融合内核、合并全局内存访问、优化访存模式等优化策略, 显著加快了各核函数的访存和计算速度. 实验结
                 果表明, 基于   RTX 3060  平台, CTRU-Prime-653、CTRU-Prime-761、CTRU-Prime-1277  每秒可以分别进行密钥生
                 成  6.3  万、5.4  万、1.6  万次, 密钥封装  63.5  万、274.5  万、160.1  万次, 密钥解封装  35.1  万、262.2  万、152.4  万次,
                 分别是   C  实现版密钥生成吞吐量的        68.85、79.78、66.84  倍, 密钥封装吞吐量的    10.32、46.57、46.81  倍, 密钥解
                 封装吞吐量的     11.43、89.19、90.32  倍. 与最新  Kyber 的  GPU  实现相比, 密钥封装吞吐量达到     1.46  倍, 密钥解封装
                 达到  1.74  倍, 是其他  NTRU  格基  GPU  高吞吐量实现的  26  倍.

                 References
                  [1]   Shor PW. Polynomial-time algorithms for prime factorization and discrete logarithms on a quantum computer. SIAM Review, 1999,
                     41(2): 303–332. [doi: 10.1137/S0036144598347011]
                  [2]   Hoffstein J, Pipher J, Silverman JH. NTRU: A ring-based public key cryptosystem. In: Proc. of the 3rd Int’l Algorithmic Number Theory
                     Symposium. Berlin: Springer, 1998. 267–288. [doi: 10.1007/BFB0054868]
                  [3]   Liang ZC, Fang BY, Zheng JY, Zhao YL. Compact and efficient KEMs over NTRU lattices. Computer Standards & Interfaces, 2024, 89:
                     103828. [doi: 10.1016/J.CSI.2023.103828]
                  [4]   IEEE standard specification for public key cryptographic techniques based on hard problems over lattices. IEEE Std 1363.1-2008, 2009.
                     [doi: 10.1109/IEEESTD.2009.4800404]
                  [5]   NTRUEncrypt history. 2011. https://en.wikipedia.org/wiki/NTRUEncrypt
   340   341   342   343   344   345   346   347   348   349   350