基于半陷门单向函数的公钥密码
赵博1, 秦贵和1, 赵永哲1, 杨文迪2
1.吉林大学 计算机科学与技术学院,长春 130012
2.华东师范大学 计算机科学与软件工程学院,上海 200062
通讯作者:赵永哲(1961-),男,教授,博士. 研究方向:信息安全. E-mail:yongzhe@jlu.edu.cn

作者简介:赵博(1988-),男,博士研究生.研究方向:图像处理,信息安全. E-mail:wolfers509@126.com

摘要

通过引入“半陷门单向函数”的概念来构造公钥密码,与陷门单向函数不同,由于半陷门单向函数是“半可逆”的,所以不能单独用来构造公钥密码。为此本文提出了一种基于半陷门单向函数的公钥密码构造方法。并结合SSP(子集和问题)的难解性和易解性,构造了“半超递增背包向量”,并基于半超递增背包向量对半陷门单向函数进行了具体实现。在此基础上,给出了一种新的公钥密码方案STOF_PKC。该方案在分类上属于背包密码,因而具有抗量子计算的潜力。

关键词: 计算机系统结构; 半陷门单向函数; 半超递增背包向量; 抗量子计算的公钥密码; 背包公钥密码
中图分类号:TP309.7 文献标志码:A 文章编号:1671-5497(2018)01-0259-09
Public key cryptosystem based on semi-trapdoor one-way function
ZHAO Bo1, QIN Gui-He1, ZHAO Yong-Zhe1, YANG Wen-Di2
1.College of Computer Science and Technology, Jilin University. Changchun 130012, China
2.College of Computer Science and Software Engineering, East China Normal University, Shanghai 200062, China
Abstract

In this paper, we introduce the concept of Semi-trapdoor One-way Function (STOF) to implement the Public Key Cryptosystem (PKC), which is different from the One-way Function. STOF is semi-invertible, so it can be directly used to implement the PKC. For this characteristic we develop a method to construct a PKC based on the STOF. Combined with the difficulty and solvability of the Subset Sum Problem (SSP), we can construct a Semi-supper Increasing Knapsack (SSIK). Based on SSIK a scheme of STOF is designed and realized. ON this basis, we propose two new knapsack public key schemes, STOF_PKC. STOF_PKC belongs to knapsack cryptosystem, thus has the potential to resist quantum attack.

Keyword: computer system organization; semi-trapdoor one-way function; semi-super increasing knapsack; quantum resistant public key cryptography; knapsack public key cryptosystem.
0 引 言

1976年, Diffie和Hellman[1]发表了著名文章《密码学的新方向” , 文章引入了“ 公钥密码” 的概念, 并提出基于“ 陷门单向函数(Trapdoor one-way function)” 来构造公钥密码的思想。不久, 第一批公钥密码方案便被提了出来, 它们分别是Merkle和Hellman基于背包问题的MH密码体制[2]以及Rivest、Shamir和Adelman基于整数分解问题的RSA密码体制[3]。随后Rabin、ElGamal、ECC等公钥密码体制也相继问世。

进入到21世纪, 现有公钥密码(RSA、ElGamal、ECC等)日益受到量子计算的威胁[4, 5], 为了应对挑战, 国际密码学界提出了“ 后量子密码学(Post-quantum cryptography, PQC)” 的新学科方向。PQC的主要目标便是研究能抵抗量子计算的公钥密码(Quantum resistant public key cryptography), 目前主要基于量子计算机不擅长计算的数学难题(比如NPC问题)来设计密码, 该类密码主要有如下几个研究方向:基于格上困难问题的密码[6]、基于纠错码译码问题的密码[7]、基于多变量的密码[8]、基于辫子群(Braid Group)的密码[9]以及基于背包问题的密码[2, 10]

但目前所提出的抗量子计算公钥密码方案中的绝大多数都已被证明是不安全的。尽管不断有新方案被提出, 但从构造方法来看, 这些方案不外乎两大类:其一是基于“ 陷门单向函数” , 这类公钥密码占绝大多数, 其关键在于如何设计陷门。其二则是基于“ 非对称密钥交换” , 其关键在于如何实现非对称的密钥交换, 这往往要用到“ 单向函数” 。一般说来, 寻找单向函数要比寻找陷门单向函数容易得多, 但单向函数不可逆, 故不能直接用来实现公钥密码。而利用陷门单向函数虽可直接实现公钥密码, 但由于“ 陷门性” 和“ 单向性” 的固有矛盾, 使得二者很难兼顾。为了构造陷门, 就必然要牺牲单向性; 反之亦然。

本文重点研究了如何设计实现半陷门单向函数, 以及如何基于半陷门单向函数来构造公钥密码。

1 半陷门单向函数的设计与实现

为了同时兼顾陷门性和单向性, 本文引入了“ 半陷门单向函数(Semi-trapdoor one-way function, STOF)” 的概念, 其定义如下:

定义1 “ 半陷门单向函数” 是一族“ 半可逆” 的陷门函数:ft:XY, 满足:

(1)已知ftxX, 计算y=ft(x)是容易的。

(2)已知fty=ft(x), 计算x= ft-1(y)和x'是困难的(其中x'x的“ 一半” , 比如可令x'x的后半段或x的所有偶数位)。

(3)已知fty=ft(x)、t(陷门), 计算x= ft-1(y)是困难的, 但计算x'却是容易的(为了便于表示, 特记x'= ft-1/2(y))。

由于半陷门单向函数分别涉及单向性和陷门性, 所以在设计时要同时对二者进行构思, 这就需要选择合适的困难问题。为便于描述, 文中常用的术语和基本符号如表1所示。

表1 基本符号
1.1 子集和问题与背包密码

“ 子集和问题(Subset sum problem, SSP, )” 是“ 0-1背包问题” 的一个特例。其定义如下:

定义2(SSP) 给定A=(a1, a2, …, an)∈ N+n, CN+; 求解x∈ {0, 1}n, 使C= i=1nxiai

SSP是著名的NPC问题。大多数背包密码都是基于SSP来构造的。为了保证解密的唯一性, 公钥背包向量还必须满足USS(Unique Subset Sum), 即唯一子集和条件。但已有的的背包密码通常无法抵御“ 低密度攻击” , 背包向量的“ 密度” 定义如下:

定义3 A=(a1, a2, …, an)∈ N+n的密度定义为:DA= nlog2max(A)。其中max(A)是A中最大者。

由文献[11-13], 若DA> 1, 则A通常不满足USS条件。事实上, 很多USS背包向量的密度都≪1。早期算法[14]可破解密度小于0.6463的背包密码, 改进后算法[15]则可破解密度小于0.9408的背包密码。故为了抵御低密度攻击, 公钥背包除应满足USS条件外, 还应具有高密度(大于0.9408), 但这二者往往很难兼顾, 这也是设计背包密码的难点所在。

DA< 1∧ DA≈ 1, 则A中SSP通常有唯一解。而若DA> 1∧ DA≈ 1, 则A中SSP通常有多解。这两种情形均易受到基于格的攻击[16, 17]。只有当DA≈ 1时, 对A中SSP无有效的解法。Impagliazzo和Naor亦证明, 当DA=1时, 求解A中SSP是最困难的[18]。多年来, 对SSP最快的通用解法仍是Schroeppel和Shamir在1981年提出的[19], 算法的时空复杂度分别为O(n· 2n/2)和O(n· 2n/4)。最近才有人对其进行了优化[20], 但改进算法仍是指数级的, 只是将时间复杂度降为O(n· 2n/3)。

若在[1, 2n]中均匀随机选择A=(a1, …, an), 则A通常是难解的。实验发现, 如此得到的A通常不满足USS条件。实际上, 当DA≈ 1时, 判定A是否满足USS条件亦是NPC问题[21]

1.2 基于SSP的半陷门单向函数

可基于SSP的难解和易解性来设计半陷门单向函数。为此引入“ 半超递增背包向量” 的定义如下:

定义4 若A=(a1, a2, …, a2n)∈ N+2n满足:A[1, n]不是超递增的(A[i, j]=(ai, …, aj))。 i=1j-1ai< aj (n+1≤ j≤ 2n)。则称A为半超递增背包向量。

显然, 对于半超递增背包向量, 可快速求出其SSP解的后半部, 且易证如下定理:

定理1 若A=(a1, …, a2n)∈ N+2n是半超递增背包向量, 则有:

(1)A中SSP易解当且仅当A 1, n中SSP易解。

(2)A为USS背包当且仅当A 1, n为USS背包。

(3)若A 1, n中SSP是难解的, 则求解A中SSP的前半部亦是困难的。

基于半超递增背包向量, 可得半陷门单向函数ft:{0, 1}2n→ N的设计方案如下:

(1)选择安全参数n;

(2)在[1, 2n]中均匀随机选择(a1, …, an)∈ N+n, 且使 D(a1, a2, , an)≈ 1;

(3)随机选取rj1, i=1nai, 并令aj= i=1j-1ai+rj (j=n+1, n+2, …, 2n), 得到A=(a1, a2, …, a2n);

(4)随机选取M, W∈ N+, 其中:

i=12nai< M< 2 i=12naiWZM∧ gcd(M, W)=1;

(5)随机选取(1, 2, …, 2n)的置换π , 并用(π , M, W)对A模乘变换得B=(b1, b2, …, b2n), 其中 bπ (i)=Wai(modM);

(6)以t=(A, π , M, W-1)为陷门(A不用全保存, 仅保存A[n+1, 2n]即可), 并将B公开;

(7)对于x∈ {0, 1}2n, 定义ft(x)= i=12nxibi

A 1, n的难解性, 可知由(B, y=ft(x))无法求出x= ft-1(y), 但由(y=ft(x), t)却可快速求出 ft-1/2(y)=(xπ (n+1), …, xπ (2n))。

1.3 ft的安全性分析

ft的安全性取决于两种攻击的难度:其一是由(B, ft(x)= i=12nxibi)求解x∈ {0, 1}2n的一半比特, 其二是由B破解陷门t=(A, π , M, W-1)。

首先分析对ft的第一种攻击:这与DB密切相关, 由于(a1, a2, …, an)是在[1, 2n]中均匀随机选择, 将[1, 2n]分成等长的n1, 2nn, 2nn+1, 2·2nn, …, (n-1)·2nn+1, 2n, 则可认为(a1, a2, …, an)均匀分布在这n段中, 即每一段平均有一个, 由此推出(n-1)· 2n-1< i=1nai≤ (n+1)· 2n-1, 又由A n+1, 2n的构造方法得:

i=12nai=2n·i=1nai+2n-1·rn+1+2n-2·rn+2+  +22·r2n-2+2·r2n-1+r2n  2n·i=1nai< i=12nai< 2n+1·i=1nai  (n-1)·22n-1< i=12nai< (n+1)·22n(1)

由此推出MW的阶(Order)均为O(n· 22n), 即有估值公式:DB2n2n+log2n。例如, 当n=128时, 则有DB> 0.97, 故当n足够大时, 无法对B实施低密度攻击。

对于第二种攻击:其主要目标是由B破解(M', U), 然后由(B, M', U)求出A'( ai'=U· bimodM'), 将A'各分量从小到大排序得A″, 若 UM'足够接近 W-1M, 则A″必做成半超递增背包向量, 由此可求出与t等价的陷门t'=(A″, π ', M', U), 从而彻底破解ft

例如, 令A=(13, 9, 4, 29, 78, 147), π = 123456531264, M=307, W=128, 则B=(205, 28, 231, 89, 129, 160), W-1=12。选取 UM'= 120130700, 则有:

A'=(605, 2928, 1131, 14789, 1429, 7960)A″=(605, 1131, 1429, 2928, 7960, 14789)(2)

虽然A″非半超递增背包向量, 但却做成了“ 26-超递增背包向量” , 所谓“ mn-超递增背包向量” , 其定义如下:

定义5 A=(a1, a2, …, an)∈ N+n称为“ mn-超递增背包向量” , 若其满足:

i=1j-1ai< aj, n-m< jn

式中:m为满足1< m< n和式(1)的最大者。

由(2), 可得π '= 123456135264, 令t'=(A″, π ', M', U), 则由(t', ft(x))可快速求出x的2位(x4x6), 这离完全破解ft只差一步。而若选取 UM'= 12001307005, 则有:

A'=(4165, 29023, 9186, 147074, 13104, 78130)A″=(4165, 9186, 13104, 29023, 78130, 147074)(3)

由式(3)可得等价的陷门t'=(A″, π ', M', U), 从而完全破解ft, 其中:

π '= 123456135264

由于B是直接由A经模乘变换所得, 故可基于Lenstra关于固定变元数量的整数规划问题可在多项式时间内求解, 以及A的“ 半超递增” 性来破解(M', U)[14, 22]。而ft在该攻击下是不安全的。

1.4 ft的改进方案

改进思路是使(xπ (n+1), …, xπ (2n))不是由(xπ (n+1), …, xπ (2n))∈ {0, 1}n直接经模乘变换得到, 而是由无明显特征的背包向量经模乘变换得到, 如此可使上述攻击无效, 改进方案如下:

(1)选择安全参数n

(2)在[1, 2n]中均匀随机地选择(a1, a2, …, an)∈ N+n, 且使 D(a1, a2, , an)≈ 1。

(3)随机选取rj1, i=1nai, 并令aj= i=1j-1ai+rj (j=n+1, …, 2n), 得到A=(a1, a2, …, a2n)。

(4)随机选取M, W∈ N+, 其中M为奇数, 且 i=12nai< M< 2 i=12naiWZM∧ gcd(M, W)=1。

(5)随机选取Δ =(δ 1, δ 2, …, δ 2n)∈ {-1, 0, 1}2n, ω ZM; 并用(M, Δ , ω )对A进行变换得C=(c1, c2, …, c2n)=A+Δ · ω (modM), 即:

ci=(aiiω )(modM)(i=1, 2, …, 2n)。

(6)随机选取(1, 2, …, 2n)的置换π , 并用(π , M, W)对C模乘变换得B=(b1, b2, …, b2n), 即:bπ (i)=Wci(modM) (i=1, 2, …, 2n)。

(7)以t=(A, Δ , ω , π , M, W)为陷门(仅需保留A n+1, 2ni=1nai), 并将B公开。

(8)对于x∈ {0, 1}2n, 定义ft(x)= i=12nxibi

选择奇数模M, 是为不暴露ci(i=1, 2, …, 2n)的奇偶性。对于x=(x1, x2, …, x2n)∈ {0, 1}2n, 令SC= i=12nxiciSA= i=12nxiaik= i=12nxiδ i, 则有SC=SA+kω SA=(SC-kω )(modM), 令Δ 中1和-1的个数为n1n2, 则-n2kn1, 由此可得求解 ft-1/2(y)(y=ft(x))的算法如下:

(1)计算SC=W-1y(modM)= i=12nxπ(i)ci(modM);

(2)For k=-n2 To n1 Do

S:=(SC-kω )(modM);

For i=2n Downto (n+1) Do

If(Sai) Then

xπ (i):=1;

S:=S-ai;

Else

xπ (i):=0;

EndIf

EndFor

Xk:=(xπ (n+1), …, xπ (2n));

If(Si=1nai) Then /* 一次过滤* /

输出Xk;

EndIf

EndFor

(3)所输出者即为 ft-1/2(y)的所有候选解。

上述算法所输出的候选解至多有(n1+n2+1)组, 且 ft-1/2(y)的合法解必为其中之一。令Xk=(xπ (n+1), …, xπ (2n))(-n2kn1)是一个候选解, 则由k= i=12nxπ (i)δ i, 可知k- i=n+12nxπ (i)δ i= i=1nxπ (i)δ i, 其中ki=n+12nxπ (i)δ i已知, i=1nxπ (i)δ i未知, 令(δ 1, δ 2, …, δ n)中1和-1的个数为K1K2, 则有:

-K2k- i=n+12nxπ (i)δ iK1(4)

实验表明, 虽然无法唯一确定 ft-1/2(y)的合法解, 但经两次过滤, 候选解的数量已大为减少。

下面再来分析改进后ft的安全性, 由于DB的取值并未受改进的影响, 所以对ft的第一种攻击与改进前类似, 不再赘述。而对ft的第二种攻击, 则要面临两种不确定性:其一, π 的存在使得攻击者只能对BA各分量之间的对应关系进行猜测。其二, 由于在模乘变换之前先对A做了不确定变换C=(A+Δ · ω )(modM), 其中Δ ω 分别有32nM种可能取值, 故C是不确定的, 且不再具有半超递增属性, 这使得针对模乘变换背包密码的攻击方法不再奏效。但这种改进则是以牺牲对 ft-1/2(y)求逆的“ 唯一性” 为代价的, 不过下面将会看到, ft并非单独使用, 而是要与函数g合用, 所以可通过两者之间的“ 交叉验证” 来确定 ft-1/2(y)。

2 基于半陷门单向函数的公钥密码
2.1 方案构思

由于半陷门单向函数不能单独用来构造公钥密码。所以我们的方案构思是:以(ft, g)为公钥, t为私钥。这里ft:XY是半陷门单向函数, 而函数g:XZ则应满足:

(1)由gxX, 计算z=g(x)是容易的。

(2)由(ft, g, y=ft(x), z=g(x)), 计算xX使x= ft-1(y)=g-1(z)是困难的。

(3)由(ft, g, y=ft(x), z=g(x), x'= ft-12(y)), 计算xX使x= ft-1(y)=g-1(z)是容易的。

问题的关键是:对于给定的半陷门单向函数ft, 如何构造满足上述条件的函数g

2.2 方案实现

基于上述思路, 本文给出了一种新的公钥密码方案, 即STOF_PKC。STOF_PKC是基于第1节所构造的半陷门单向函数ft, 以及F2上一个2n矩阵G来实现的, 方案由密钥生成、加密、解密三个算法构成, 具体如下:

2.2.1 密钥生成算法:

(1)选择安全参数n;

(2)构造半陷门单向函数ft, 其陷门t=(A, Δ , ω , π , M, W), 输出参数为B;

(3)由B计算向量(g1, 1, …, g1, 2n)∈ F22n, 其中g1, i=bi(mod2)(i=1, 2, …, 2n), 再随机选n-1个向量(g2, 1, …, g2, 2n), …, (gn, 1, …, gn, 2n)∈ F22n, 且这n个向量使如下矩阵G1, G2F2n×n非奇异:

G1= g1, π(1)g1, π(2)g1, π(n)g2, π(1)g2, π(2)g2, π(n)gn, π(1)gn, π(2)gn, π(n);

G2= g1, π(n+1)g1, π(n+2)g1, π(2n)g2, π(n+1)g2, π(n+2)g2, π(2n)gn, π(n+1)gn, π(n+2)gn, π(2n);

(4)令G= g1, 1g1, 2g1, 2ng2, 1g2, 2g2, 2ngn, 1gn, 2gn, 2n

(5)以t为私钥, (B, G)为公钥。

2.2.2 加密算法:

明文消息为x=(x1, x2, …, x2n)∈ {0, 1}2n\{0}, 发送方对x加密过程如下:

(1)获得接收方的公钥(B, G);

(2)计算y=ft(x)= i=12nxibi,

z= z1zn=G· x1x2n

(3)将密文(y, z)发送给接收方。

2.2.3 解密算法:

(1)接收方求出 ft-1/2(y)的候选解集{X1, …, Xm}。

(2)For i:=1 To m Do

Xi代入方程组:G1· Xi'+G2· Xi=z, 可唯一解出Xi'F2n; X:=Merge(Xi, Xi'); If(y=ft(x)) 输出;

EndFor

(3)算法结束, 所输出者即为候选明文(集)。

其中X:=Merge(Xi, Xi')表示将两个n位候选解XiXi'合并为一个2n位候选解XF22n

3 分析验证
3.1 STOF_PKC解密的正确性和唯一性分析

由STOF_PKC的解密算法, 易知:

(1)若明密文之间是一对一的, 则密文经解密后可唯一确定明文。

(2)若明密文之间是多对一的, 则密文经解密后能得到一个明文集合, 且该集合恰好包含与给定密文对应的所有明文。

(3)若密文不对应任何明文, 则密文解密后得空集。

理想情形是每一个密文都仅对应唯一的明文, 此时不仅可提高解密效率, 还可保证解密的唯一性。令明文空间P={0, 1}2n\{0}, 则STOF_PKC满足解密唯一性的充要条件是:不存在x, x'P(xx')使ft(x)=ft(x')∧ G· x=G· x'

B的所有22n-1种非零子集和共有n_ss种取值, 其中只与唯一子集和对应的取值共有n_uss种, 则n_uss≤ n_ss, 且B满足USS条件当且仅当n_uss=n_ss。显然, 若B满足USS条件, 则STOF_PKC必满足解密唯一性。但这是NPC问题, 无有效的判定算法。所以通过实验来对此进行分析, 实验对不同的n, 独立生成10 000个ft实例, 然后对DBn_ssn_uss计算平均值, 并统计B满足USS条件的出现数量, 结果见表2

表2 实验结果

由实验结果, 可以看出:

(1)随着n的增大, B满足USS条件的概率迅速减小, 但B中满足USS的子集和所占比例 n_uss22n-1则呈稳定及小幅增长的趋势。

(2)DB均值与估值公式DB2n2n+log2n非常吻合。

Bn_ss和n_uss取值可知, 密文空间V=ft(P)中共有n_uss个密文, 按明密之间的对应关系, 可将V划分为 V1, V2, 其中 V1=n_uss, V2=n_ss-n_uss, 且V1中每个密文均对应唯一的明文, 而V2中每个密文则至少对应2个明文。相应的, 亦可将P划分为 P1=ft-1(V1), P2=ft-1(V2), 且 P1=n_uss, P2=22n-1-n_uss。

z∈ {0, 1}n, 定义Gz={ xxF22nG· x=z}为方程组G· x=z的解集合。则由G· x=G1· (xπ(1), , xπ(n))T+G2· (xπ(n+1), , xπ(2n))T=z, 以及G1G2非奇异, 可知(xπ (1), …, xπ (n))由(xπ (n+1), …, xπ (2n))唯一确定, 且(xπ (n+1), …, xπ (2n))∈ {0, 1}n取不同值, 则(xπ (1), …, xπ (n))亦取不同值。即对每个z∈ {0, 1}n, 均有 Gz=2n。易证, 全部2n个解集合{G(0, …, 0), G(0, …, 1), …, G(1, …, 1)}做成{0, 1}2n的一个划分, 且G· x=G· x'当且仅当xx'同属一个解集合。

若明文xP1, 则密文(y, z)=(ft(x), G· x)必满足解密唯一性。反之, 若xP2, 则还要看是否有( ft-1(y)∩ Gz)\{x}, 若是, 则密文(y, z)满足解密唯一性, 否则不满足。

ft-1(y)=k, 则k≥ 2, 且 ft-1(y)中任意2个明文均不在同一解集合的概率为:

y= 2n·(2n-1)··(2n-k+1)(2n)k=

i=1k-1(2n-i)2(k-1)·n(5)

由此得( ft-1(y)∩ Gz)\{x}≠ φ 的概率≤ 1-y, 即x的密文不满足解密唯一性的概率≤ 1-y。实验发现, V2中绝大多数的密文(> 95%)都刚好对应2个明文, 这可由 P2V2= 22n-1-n_ussn_ss-n_uss≈ 2来间接印证(见表2), 这意味着对于绝大多数的xP2, 其密文(y, z)不满足解密唯一性的概率≤ 2-n。因此, STOF_PKC可保证对绝大多数密文的解密唯一性。

3.2 STOF_PKC的安全性分析

首先给出Semi-SSP(半子集和问题)的定义:

定义6 给定A=(a1, …, a2n)∈ N+2n, CN+; 求解( xi1, …, xin)∈ {0, 1}n, 且( xi1, …, xin)满足:

(1)1≤ i1< i2< < in≤ 2n

(2)令{j1, …, jn}={1, …, 2n}\{i1, …, in}, 则存在( xj1, …, xjn)∈ {0, 1}n, 使C= k=1nxikaik+ k=1nxjkajk

SSP和Semi-SSP的区别在于, 前者对每个背包分量都要精确判定其是否属于给定的“ 子集和” , 而后者只需对一半背包分量进行精确判定。若SSP可解, 则Semi-SSP必可解, 反之亦然。即Semi-SSP也是NPC问题。关于STOF_PKC的安全性, 有:

定理2 破解STOF_PKC等价于求解B中的Semi-SSP。

证明:若能求解B中的Semi-SSP, 则必能破解STOF_PKC。反之, 若不能求解B中的Semi-SSP, 则对x∈ {0, 1}2n的密文(y)= i=12nxibi, z=G· x, 不妨设由(B, y)只能精确求出xk个分量( xi1, …, xik)∈ {0, 1}k(0≤ k< n, 1≤ i1< i2< < ik≤ 2n), 令{ xj1, …, xj2n-k}={x1, …, x2n}\{ xi1, …, xik}, 则破译x等价于求解( xj1, …, xj2n-k)∈ {0, 1}2n-k。而这仅由(B, y)已无法做到, 必须借助(G, z)才行, 又由(G, z)只能确定x的取值范围Gz, 其中哪些才是正确的x必须通过(B, y)判定。由于n足够大、 Gz=2n、且绝大多数密文都对应唯一明文, 故仅凭(G, z)来求解x不可行。因此, 由密文(y, z)求解明文x只能首先由(B, y)入手确定明文x的部分分量, 然后再将之代入方程组z=G· x求出x的候选解, 最后再通过(B, y)对所有候选解逐一判定。现( xi1, …, xik)已确定, 故可将Gz中与( xi1, …, xik)不符的明文全部排除, 令余下的明文所构成的集合为G'z, 则G'z即为x的候选解集合, 而其规模 Gz'便决定了破译x的难度。将( xi1, …, xik)代入z=G· x, 可得F2上的方程组:

g1, j1g1, j2g1, j2n-kg2, j1g2, j2g2, j2n-kgn, j1gn, j2gn, j2n-kxj1xj2xj2n-k=z+g1, i1g1, i2g1, ikg2, i1g2, i2g2, ikgn, i1gn, i2gn, ikxi1xi2xik(6)

式(6)的解( xj1, …, xj2n-k)∈ {0, 1}2n-k之数量即为 G'z, 令(6)关于( xj1, …, xj2n-k)的系数矩阵为G'F2n×(2n-k), 则 G'z=2n-k当且仅当Rank(G')=n(Rank(G')为G'的秩)。从G'中任选n列共可得到 F2n×nC2n-kn= (n+1)·(n+2)··(n+n-k)(n-k)!个矩阵, 这些矩阵中只要有一个非奇异, 即有Rank(G')=n。又 Fqn×n中共有 i=0n-1(qn-qi)个非奇异矩阵, 令 Fqn×n中非奇异矩阵所占比率为Δ ( Fqn×n), 则有:

Δ ( Fqn×n)= i=0n-1(qn-qi)qn2=

(qn-1)·(qn-q)··(qn-qn-1)qn2=

(q-1)·(q2-1)··(qn-1)q·q2··qn

Δ ( Fq(n+1)×(n+1))( Fqn×n(qn+1-1)qn+1(7)

下式为对部分Δ ( F2n×n)的计算结果:

Δ(F22×2)=0.375Δ(F23×3)=0.328125Δ(F24×4)=0.3076171875  Δ(F216×16)=0.28879250168805531183021874034606(8)

对于n> 16, 由

Δ ( F2k×k)-Δ ( F2(k+1)×(k+1))= Δ(F2k×k)2(k+1)(9)

k=16, …, n-1

可得:

Δ ( F216×16)-Δ ( F2n×n)= i=16n-1Δ(F2i×i)2i+1<

Δ ( F216×16i=16n-112i+1< Δ ( F216×16i=1612i+1=Δ ( F216×161216

Δ ( F2n×n)> 216-1216· Δ ( F216×16)> 28.87%(10)

GF2n×2n是随机选择, 所以Rank(G')≠ n的概率Pr(Rank(G')≠ n)为:

(1-Δ ( F2n×n)) C2n-kn< 0.7113 C2n-kn(11)

nk相差足够大(否则最多2n-k次猜测便可破解B中的Semi-SSP), 故在现实中可认为恒有Rank(G')=n, 即有 Gz'=2n-k, 这意味着即使在已知( xi1, …, xik)的情形下, 破译x仍需对G'中2n-k个候选解逐个进行判定。这与通过蛮力试探来求解B中的Semi-SSP并无本质区别, 定理证毕。

4 结束语

本文引入了“ 半陷门单向函数” 的概念, 并给出了基于半陷门单向函数来构造公钥密码的思路。在此基础上, 给出了一种新的背包密码方案STOF_PKC, 并证明了破解STOF_PKC等价于求解B中的Semi-SSP。因此, 若B中的Semi-SSP是难解的, 则STOF_PKC便是安全的。但尚有一些新问题有待解决, 比如是否存在其他实现半陷门单向函数的方法、是否存在其他基于半陷门单向函数的公实现签名等, 需要进行更深入的探索。

The authors have declared that no competing interests exist.

参考文献
[1] Diffie W, Hellman M E. New directions in cryptography[J]. IEEE Transactions on Information Theory, 1976, 22: 644-654. [本文引用:1]
[2] Merkle R C, Hellman M E. Hiding information and signatures in trapdoor knapsacks[J]. IEEE Transactions on Information Theory, 1978, 24: 525-530. [本文引用:2]
[3] Rivest R L. A method for obtaining digital signatures and public-key cryptosystems[J]. Communications of the Acm, 1983, 26: 96-99. [本文引用:1]
[4] Shor P W. In algorithms for quantum computation: Discrete logarithms and factoring, foundations of computer Science[C]∥Proceedings on Symposium, Murray Hill, NJ, USA, 1994: 124-134. [本文引用:1]
[5] Grover L K. A fast quantum mechanical algorithm for database search[C]∥Proceedings of the Twenty-eighth Annual ACM Symposium on Theory of Computing, Philade lphia, PA, USA, 1996: 212-219. [本文引用:1]
[6] Poulakis D. On the cryptographic long term security[J]. Journal of Applied Mathematics & Bioinformatics, 2013, 3(1): 1-15. [本文引用:1]
[7] Courtois N, Finiasz M, Sendrier N. In how to achieve a mceliece-based digital signature scheme[C]∥ International Conference on the Theory and Application of Cryptology and Information Security, Gold Coast, Australia, 2001: 157-174. [本文引用:1]
[8] Porras J, Baena J, Ding J Zhfe. A new multivariate public key encryption scheme[Z]. Post-Quantum Cryptogaphy, 2014: 229-245. [本文引用:1]
[9] Dehornoy P. Using shifted conjugacy in braid-based cryptography[J]. Computer Science, 2006, 418: 65-73. [本文引用:1]
[10] Okamoto T, Tanaka K, Uchiyama S. Quantum public-key cryptosystems[J]. International Journal of Theoretical Physics, 2011, 51: 912-924. [本文引用:1]
[11] Elkies N D. An improved lower bound on the greatest element of a sum-distinct set of fixed order[J]. Journal of Combinatorial Theory, 1986, 41: 89-94. [本文引用:1]
[12] Guy R K. Unsolved Problems in Number Theory[M]. New York-Berlin: Springer-Verlag, 2001: 17-35. [本文引用:1]
[13] Kate A, Goldberg I. Generalizing cryptosystems based on the subset sum problem[J]. International Journal of Information Security, 2011, 10: 189-199. [本文引用:1]
[14] Brickell E F. Breaking iterated knapsacks[C]∥Advances in Cryptology, Proceedings of CRYPTO’84, Santa Barbara, California, USA, 1984: 342-358. [本文引用:2]
[15] Coster M J, Joux A, Lamacchia B A, et al. Improved low-density subset sum algorithms[J]. Computational Complexity 1999, 2: 111-128. [本文引用:1]
[16] Joux A. A practical Attack Against Knapsack based Hash Functions (Extended )[M]. Berlin Heidelberg: Springer, 1994: 58-66. [本文引用:1]
[17] Nguyẽn P Q, Stern J. Adapting density attacks to low-weight knapsacks[J]. Lecture Notes in Computer Science, 2005, 3788: 41-58. [本文引用:1]
[18] Impagliazzo R, Naor M. Efficient cryptographic schemes provably as secure as subset sum[J]. Journal of Cryptology, 1996, 9: 199-216. [本文引用:1]
[19] Schroeppel R, Shamir A. A T=O(2n/2), S=O(2n/4) algorithm for certain NP-complete problems[J]. Siam Journal on Computing, 1981, 10(3): 456-464. [本文引用:1]
[20] Li Qing-hua, Li Ken-li, Jiang Sheng-yi, et al. An optimal parallel algorithm for the knapsack problem[J]. Journal of Software, 2003, 14(14): 891-896. [本文引用:1]
[21] Christos H Papadimitriou. On the complexity of unique solutions[J]. Journal of the ACM, 1984, 31(2): 392-400. [本文引用:1]
[22] Shamir A. A polynomial time algorithm for breaking the basic Merkle-Hellman cryptosystem[J]. IEEE Transactions on Information Theory, 1984, 30(5): 699-704. [本文引用:1]