Page 332 - 《软件学报》2026年第7期
P. 332
胡晓雯 等: 基于 CUDA Core 和 Tensor Core 的 CTRU-Prime 高吞吐量实现 3017
CTRU-Prime 基于 NTRU 假设和 RLWR 假设, 在安全性、带宽、实现效率方面和 SNTRU-Prime 相比具有优势,
表 1 给出了 CTRU-Prime 的 3 组参数集.
表 1 CTRU-Prime 参数集
n q q 2 n' (Ψ 1 ,Ψ 2 ,Ψ 3 ) |pk| |ct| B.W. NTRU(C, Q) RLWR(C, Q) δ
11 −166
653 4 621 2 320 (B 3 , B 3 , B 3 ) 994 898 1 892 (152, 137) (151, 136) 2
10 −170
761 4 591 2 376 (B 3 , B 2 , B 3 ) 1 158 952 2 110 (178, 161) (181, 164) 2
10 −279
1 277 7 879 2 632 (B 2 , B 2 , B 2 ) 2 067 1 597 3 664 (299, 271) (297, 269) 2
CTRU-Prime 的公钥加密方案如算法 1–3 所示, 密钥封装方案如算法 4–6 所示.
算法 1. CTRU-Prime.PKE.KeyGen.
k
输入: 安全参数 1 ;
(pk, sk).
输出: 公钥加密公私钥对
1. g ← Ψ 1 , f ← Ψ 2
′
′
2. f = pf +1
3. h = g/ f
4. return (pk = h, sk = f)
算法 2. CTRU-Prime.PKE.Enc.
输入: 公钥 pk, 明文 m;
输出: 密文 c.
1. r ← Ψ 3
2. σ = hr
⌊ ⌉
q 2
3. c = (σ+PolyEncode(m)) mod q 2
q
4. return c
算法 3. CTRU-Prime.PKE.Dec.
输入: 私钥 sk, 密文 c;
输出: 明文 m.
±
1. m = c f mod q 2
′
2. m = PolyDecode(m )
′
3. return m
算法 4. CTRU-Prime.KEM.KeyGen.
k
输入: 安全参数 1 ;
′
′
输出: 密钥封装公私钥对 (pk , sk ).
k
1. (pk, sk) ← CTRU-Prime.PKE.KeyGen(1 )
2. z ← {0,1} ι
3. return (pk = pk, sk = (sk,z))
′
′

