system: [SYSTEM]

user: 4. 抗量子安全 由于量子计算的并行特性是量子图灵机的内禀属性，经典计算中的难解问题可以通过量子计算化作可解问题。不过，从当前的情况来看，在量子计算中仍然存在难解问题。 当然，由于采用量子密钥分配的密码算法和采用Hash函数构建的单向函数签名算法的安全性来自量子物理特性和严格单向函数，不具备转化为求解广义离散傅里叶变换问题的条件，故不受量子计算的威胁 [ 9 ] 。不过上述算法本身有显著的应用局限使其难以取代优化计算复杂度的抗量子密码。 4.1. 计算复杂性与问题分类 一个要求给出解答的一般提问称作一个问题，记作 π ，它通常由具体实例与询问两个部分组成。问题 π 可以通过图灵机求解： 图灵机是一个三重组 M = { ∑ ， ψ ， δ } ，其中 ∑ = { ∅ ， 0 ， 1 ⋯ } 表示一个有限符号集， ∅ 为一个特殊的符号——空白； ψ = { s ， h } 表示机器状态的有限符集合，s和h分别表示初始态和最终态； δ 为一个跃迁函数，满足： δ : ψ × ∑ ↦ ψ × ∑ × { − 1 ， 0 ， 1 } 通过图灵机求解问题 π 时，时间 T 和空间 S 分别称为算法的时间复杂度和空间复杂度。假设 n 是输入规模，则 T 和 S 可以表示为 n 的函数： T ( n ) 和 S ( n ) 。由此可以将算法简单分为两类，多项式时间算法和指数时间算法。当算法的执行时间是 T ( n ) = O ( n t ) 的时候( t 为常量)，称算法为多项式时间算法或有效算法，反之亦然。通常把具有多项式时间的算法简称P问题，把找不到有效算法的问题称为难解问题。随着图灵机计算能力的大幅度提高，某些难解问题正渐渐转化为易解问题。当前，难解问题分NP问题、NPC问题(NP难题)、co-NP问题。 此外，从空间的角度定义的难解问题有PSPACE问题、NPSPACE问题、PSPACE-c问题等。PSPACE问题是指在多项式空间内可解的问题，包含NP问题和co-NP问题。 4.2. 子集和问题与OUT量子公钥密码算法 虽然量子计算机比电子计算机的计算能力和储存能力更强，能够将大整数因子分解、将离散对数等NP问题转化为QP问题。但是，子集和问题对量子图灵机来说依然是难解问题。 子集和问题描述： 给定 n 个正整数 a i ( i = 1 ， 2 ， ⋯ ， n ) 以及正整数 S ，求方程 a 1 x 1 + a 2 x 2 + ⋯ + a n x n = S 是否有满足 x i ∈ { 0 ， 1 } ( i = 1 ， 2 ， ⋯ ， n ) 的解。 日本NTT实验室的密码专家T. Okamoto、K. Tanaka和S. Uchiyama基于环上的子集和问题提出了量子公钥密码算法，这里简称OUT算法。 下面介绍该算法的密钥产生过程和加密方式。 4.2.1. 密钥产生 1) 确定适合系统的固定数域集和K，随机选取K中的一个数域 K ， O k 为 K 上的整数环， Z 为 K 上的有理数环参数 n ， k ∈ Q 。 2) 选取整数环 O k 的质理想 ρ ，并随机选取 O k 中的元素 g 使其为有限域 O k / ρ 上乘法的生成子。其中， O k / ρ 中的元素可以用基 { 1 ， ω 2 ， ⋯ ， ω l } 唯一地表示，即对于任意的整数 x ∈ O k ，都存有有理整数 x 1 ， x 2 ， ⋯ ， x l ∈ Q ( 0 ≤ x i ≤ e i ) ，使得 x = x 1 + x 2 ω 2 + ⋯ + x l ω l ( mod p ) 3) 选 n 取个整数 p 1 ， p 2 ， ⋯ ， p n ∈ O k / ρ ，满足： N ( p i ) ( i = 1 ， 2 ， ⋯ ， n ) 为联合质数(co-prime)。对于整数集合 { p 1 ， p 2 ， ⋯ ， p n } 中的任意子集 { p i 1 ， p i 2 ， ⋯ ， p i k ， } ，都存在有理数 a 1 ， a 2 ， ⋯ ， a l ( 0 ≤ a i < e i ) ，使得： ∏ j = 1 k p i j = a 1 + a 2 ω 2 + ⋯ + a l ω l 4) 利用Shor算法求解离散对数问题，得到 a 1 ， a 2 ， ⋯ ， a n ，使得 p i ≡ g a i ( mod p ) 式子中 b i ∈ Q / ( N ( ρ ) − 1 ) Z 。 5) 随机选取有理整数 d ∈ Z / ( N ( ρ ) − 1 ) Z 。 6) 计算 b i = a i + d mod ( N ( ρ ) − 1 ) ( i = 1 ， 2 ， ⋯ ， n ) 。 7) 公钥为 { K ， n ， k ， b 1 ， b 2 ， ⋯ ， b i } ，私钥为 { K ， g ， d ， p ， p 1 ， p 2 ， ⋯ ， p n } 。记 K p 和 K s 分别为公钥和私钥，则有： K p = { K ， n ， k ， b 1 ， b 2 ， ⋯ ， b i } K s = { K ， g ， d ， p ， p 1 ， p 2 ， ⋯ ， p n } 4.2.2. 加密过程 1) 固定明文 M 的长度为 [ log 2 ( n k ) ] 。 2) 将明文按照下列方式编码为二进制串 m = ( m 1 ， m 2 ， ⋯ ， m n ) ， m 的Hamming权重为设置为 l : l ← k 。对于 i 循环执行下面的过程 ( 1 ≤ i ≤ n ) ：如果 m ≥ ( n − i l ) ， M ← M − ( n − i l ) ， l ← l − 1 ；否则 m i ← 0 。其中 l ≥ 0 时， ( l 0 ) = 1 。 3) 计算密文 c = ∑ i = 1 n m i b i 4.2.3. 解密过程 1) 计算 r = c − k d mod ( N ( ρ ) − 1 ) 。 2) 计算 u ≡ g r ( mod p ) 。 3) 如果 p i | u ， m i ← 1 ，否则 m i ← 0 。对所有的 p i 的计算都完成后，设 m = ( m 1 ， m 2 ， ⋯ ， m n ) 。 4) 按下面过程将 m 解码为明文。 a) m ← 0 ， l ← k 。 b) 对于 i 循环这个过程 ( 1 ≤ i ≤ n ) ：如果 m i = 1 ， M ← M + ( n − i l ) ， l ← l − 1 。 4.2.4. 安全性分析 本质上，OUT算法建立在背包体制上，其安全性又是基于图灵机的，即能够抵御具有量子计算能力的攻击 [ 10 ] 。OUT密码算法是一个具有量子计算复杂度的公钥密码算法，即量子计算机并不能破解所有的公钥加密算法。 4.3. 最短格矢问题与NTRU公钥密码算法 NTRU算法是一种有效的公钥密码算法，已经被IEEE P1316工作组定为标准，其算法安全性的核心就是最短格矢问题(SVP) [ 11 ] 。在一定条件下，最短格矢问题是NPC问题，NTRU算法被认为是安全的。 最短矢格问题是指： 给定维正整数域上的格矢(lattice，子群) L = { ∑ i = 1 n a i b i | a i ∈ Z ， ≤ i ≤ n } 其中格基为 B = { b 1 ， b 2 ， ⋯ ， b n } ⊂ Z n ，寻找一个非零格矢 v ∈ L 使 ‖ v ‖ ≤ a λ 。 最短格矢问题是一个NP问题，可以用 L 3 算法求解最短矢格问题，该算法中 a = 2 ( n − 1 ) / 2 ，其时间复杂度为 O ( n 4 log 2 ξ ) ，其中实数 ξ ≥ 2 满足 ‖ b i ‖ 2 ≤ ξ ( 1 ≤ i ≤ n ) [ 12 ] 。 由于最短格矢问题是一个搜索问题，那么就可以用Grove搜索算法求解。与Koy的原始对偶方法所需的时间 T k 相比，量子搜索算法的运行时间大约为Koy方法的8次方根，也就是 T Q = T K 1 / 8 有一个实验采用了Shoup NTL图书馆的400 MHz PC机以BKZ方法求解，计算用时情况为 T B K Z ≥ 10 0.109   5 N − 12.640     2   M I P S − y e a l s 由此可以估计出采用量子搜索算法求解最短格矢问题的执行时间为 T Q ≥ 10 ( 0.109   5 N − 12.640     2 ) / 8   M I P S − y e a l s 几种情况下的运算用时对比如表1所示。 可见，借助量子搜索算法确实使求解最短格矢问题的计算用时急剧减少，但其绝对时间仍然很长。对于量子图灵机来说，求解最短格矢问题的时间复杂度依然满足指数关系 [ 13 ] 。即量子搜索算法也不能完全解决最短格矢问题。