system: [SYSTEM]

user: 4. 基于不可约多项式的PK-RSA公钥密码算法 在设计算法之前，在这儿先给出其中要用到的两个定义，第一个是拟明文：将所有形式的明文数字都转化成0、1序列后，异或一个0、1序列得到的序列就成为拟明文。例如，明文数字化后的序列是 ( 1 ， 0 ) ，选择异或的序列是 ( 0 ， 1 ) ，那么可以得到拟明文序列是 ( 1 ， 0 ) ⊕ ( 0 ， 1 ) = ( 1 ， 1 ) 。第二个是相伴多项式：在 F p 有限域上，任意多项式都可以化为首项系数是1，其余的各项系数都是正数的相伴多项式。例如，多项式 ( − 2 x 2 − 1 ) 经过一系列变换， ( − 2 x 2 − 1 ) → 3 ∗ ( − 2 x 2 − 1 ) → ( − 6 x 2 − 3 ) → ( x 2 + 4 ) ，就变成了有限域 F 7 上的相伴多项式为 ( x 2 + 4 ) 。 4.1. 密钥生成 1) 假设p和q都是大素数，并且其能够满足 p < q ， r = p q ，选择 F p 上的一个首项系数是1的m次多项式为 g ( x ) ，使其在 F p 上满足分解式 ，其中的 g i ( 1 ) ( x ) 是 F p 上的 m i ( 1 ) 次不可约多项式 ( i = 1 ， 2 ， ⋯ ， k 1 ) ，同时 g ( x ) 在 F q 上满足分解式 g ( x ) = g 1 ( 2 ) ( x ) g 2 ( 2 ) ( x ) ⋯ g k 2 ( 2 ) ( x ) ， g i ( 2 ) ( x ) 为 F q 上的 m i ( 2 ) 次不可约多项式 ( i = 1 ， 2 ， ⋯ ， k 2 ) ； 2) 计算 ϕ r ( g ( x ) ) = ϕ p ( g p ( x ) ) ϕ q ( g q ( x ) ) = r m ∏ i = 1 k 1 ( 1 − 1 p m i ( 1 ) ) ∏ i = 1 k 2 ( 1 − 1 p m i ( 2 ) ) 和 ϕ p ( g p ( x ) ) = r m ∏ i = 1 k 1 ( 1 − 1 p m i ( 1 ) ) ； 3) 恰当的因子，则 ϕ p ( g p ( x ) ) 的一个大因子是k； 4) 在有限域 上计算方程 x k ≡ 1 ( mod g p ( x ) ) 的k次本原根 h ( x ) ，并且满足 h ( x ) ∈ F p [ x ] ， h ( x ) 的全体解记作 S p k ( g ( x ) ) ； 5) 选择一个和k互素的e，并且有 ( e > 1 ) ； 6) 计算d，使得它满足 e d ≡ 1 ( mod k ) ，那么公钥 ( e ， r ， g ( x ) ) ，私钥 ( d ， r ， g ( x ) ) ； 7) 严格的保密 p ， q ， k ，使得它不能被销毁，为的是系统能够继续利用。 4.2. 加密算法 1) 将计算明文m数字化成0、1序列，根据解空间 S p k ( g ( x ) ) 中的某个特定解 h ( x ) 经一个异或序列 r ( x ) ，将明文序列 m ( x ) 异或此序列得到一个拟明文序列 m ′ ( x ) ，即满足 m ( x ) ⊕ r ( x ) = m ′ ( x ) ； 2) 计算明文 〈 m ′ ( x ) e 〉 g ( x ) = c ( x ) ，其中的 〈 f ( x ) 〉 g ( x ) 表示多项式 f ( x ) 模 g ( x ) 的余式，系数模p，那么将 c ( x ) 作为密文。 4.3. 解密算法 已知 c ( x ) ∈ S p k ( g ( x ) ) ， 1) 计算拟明文： 〈 c ( x ) d 〉 g ( x ) = m ′ ( x ) ，并且 m ′ ( x ) ∈ S p k ( g ( x ) ) ； 2) 恢复明文： m ′ ( x ) ⊕ r ( x ) = m ( x ) 。 4.4. 算法分析 首先，改算法保证了 p ， q ， e ， d ， k 和 g ( x ) 具有一定的数量级。其次，在选取的 g ( x ) 在 F p 和 F q 上的分解式也是可行的。另外，多项式的乘幂运算实际上就将是不可约多项式相乘，就是求有限域 F p 上的序列卷积，它可用快速数论变换来实现。在此基础上，可通过计算机程序来求解 x k ≡ 1 ( mod g ( x ) ) 的k次本原根 h ( x ) ，即将有限域 F p 上所有的不可约多项式代入方程进行求模， h ( x ) 的最高次可以取 ，每项的系数可以取 ，即可得出解空间的计算是非常容易的。PK-RSA算法的每一步都是可行的，而且计算量和保密度都优于前面两种RSA新模拟。下面对PK-RSA新公钥体制的实例进行验证。 4.5. 算法验证 1) 密钥的生成 a) 首先，选择两个保密的大素数比如 p = 7 ， q = 5 ， r q = 35 ，接下来选择一个多项式是 g ( x ) = x 4 + 2 x 2 + 1 ，那么根据多项式分解定理，一方面可 g ( x ) = x 4 + 2 x 2 + 1 分解成为 ，使得 ( x 2 + 1 ) 成为 F 7 ( x ) 上的2次不可约多项式，另一方面可将 g ( x ) = x 4 + 2 x 2 + 1 分解成 g 5 ( x ) = ( x + 2 ) 2 ( x + 3 ) 2 ，使得 ( x + 2 ) ， ( x + 3 ) 为 F 5 ( x ) 中的一次不可约多项式。 b) 然后计算： ϕ 35 ( g ( x ) ) = ϕ 7 ( ( x 2 + 1 ) 2 ) ϕ 5 ( ( x + 2 ) 2 ( x + 3 ) 2 ) = 35 4 ( 1 − 1 7 2 ) ( 1 − 1 5 ) ( 1 − 1 5 ) ，进而有： ϕ 35 ( g ( x ) ) = 940800 = 2352 × 400 = ( 2 4 × 3 × 7 2 ) × ( 2 4 × 5 2 ) = 3 × 2 8 × 5 2 × 7 2 。 c) 选择 ϕ 7 ( g 7 ( x ) ) 中的一个恰当的大因子为7。 d) 计算方程 x 7 ≡ 1 ( mod ( ( x 2 + 1 ) 2 ) ) 的7次本原根 h ( x ) ，因为7为 ϕ 7 ( g 7 ( x ) ) 的因子，那么根据模理论可知，模 g 7 ( x ) 的7次本原根 h ( x ) 就一定存在，而且其中的一个是 x 2 + 2 ，并且它的解空间是 ( x 2 + 2 ) 4 ， ( x 2 + 2 ) 5 ， ( x 2 + 2 ) 6 ，可知这些都为 S 7 7 ( ( x 2 + 1 ) 2 ) 中的元素，除了这些可能还有其他元素，其中的 ( x 2 + 2 ) 0 = 1 是平凡的本原根。 e) 选择一个和7互素的e，令 e = 2 。 f) 计算d，满足 2 d ≡ 1 mod 7 (因为2和7互素，其中的d一定存在，并且有 d = 4 ，那么就有拟明文和密文空间都是 S 7 7 ( ( x 2 + 1 ) 2 ) 。 g) 于是公钥是 ( 2 ， 35 ， x 4 + 2 x 2 + 1 ) ，私钥是 。 h) 要求严格的保密7、5、7，但是不能销毁。 2) 加密算法 a) 将任意明文m数字化成0、1序列 ( 1 ， 1 ， 1 ， 0 ) ； b) 根据解空间中的某个特定解 h ( x ) = ( 1 ， 0 ， 10 ) ，经一个异或序列 r ( x ) = ( 0 ， 1 ， 00 ) ，将明文序列 (在这儿根据 h ( x ) 的形式已经将任意明文进行了分段，使得明文和 h ( x ) 的形式相同)异或者次序列得到一个拟明文序列 m ′ ( x ) = ( 1 ， 0 ， 10 ) ，并且 ( 1 ， 0 ， 10 ) ∈ S 7 7 ( ( x 2 + 1 ) 2 ) (其中的拟明文不是真正明文，而是被适当异或的明文)，即计算 m ( x ) ⊕ r ( x ) = m ′ ( x ) ，可得 ( 1 ， 1 ， 10 ) ⊕ ( 0 ， 1 ， 00 ) = ( 1 ， 0 ， 10 ) 。 c) 计算密文 〈 ( x 2 + 2 ) 2 〉 ( x 2 + 1 ) 2 = x 2 + 5 ，并选择 S 7 7 ( ( x 2 + 1 ) 2 ) 中的一个元素 x 2 + 2 作为拟明文 m ′ ( x ) ，那么就有 m ′ ( x ) = ( 1 ， 0 ， 2 ) ，进行下面的加密操作 〈 ( x 2 + 2 ) 2 〉 ( x 2 + 1 ) 2 = x 2 + 5 ，这里 〈 ( x 2 + 2 ) 2 〉 ( x 2 + 1 ) 2 表示多项式 模 ( x 2 + 1 ) 2 的余式，系数模为7。于是可以将 ( 1 ， 0 ， 5 ) 作为密文。 3) 解密算法 已知 ( 1 ， 0 ， 5 ) ∈ S 7 7 ( ( x 2 + 1 ) 2 ) a) 计算 〈 ( x 2 + 5 ) 4 〉 ( x 2 + 1 ) 2 = x 2 + 2 ，这样就得到了拟明文 ( 1 ， 0 ， 2 ) ∈ S 7 7 ( ( x 2 + 1 ) 2 ) 。 b) 恢复明文： m ′ ( x ) ⊕ r ( x ) = m ( x ) ，即得 ( 1 ， 0 ， 10 ) ⊕ ( 0 ， 1 ， 00 ) = ( 1 ， 1 ， 10 ) 。