1、1安全背包公钥密码的要点和设计费向东 1,潘郁(南京工业大学经济与管理学院,南京 210009)摘要:为提高背包密码的安全性,本文依据背包密码以往失败的原因,列举安全背包公钥的要点:运用混乱和扩散技术充分隐藏初始序列及其冗余度;提高背包密度;模数保密;基于超递增序列的背包密码的安全性不依赖初始序列的保密。提出了一个背包密码的可证明安全性的启发性方法。据此,设计了一个新型背包密码,该密码由模乘运算实现混乱,由基于二元一次不定方程的难解函数实现扩散,充分隐藏初始序列及其冗余度,攻击者破译该背包密码的难度规约为求解此难解函数,同时能达到较高的背包密度,常规的破译方法无效。关键词:背包公钥密码;安全要
2、点;可证明安全性;模乘运算;二元一次不定方程;难解函数中图分类号:TP309.7;TN918.4 The Outline and Design of Secure Knapsack Public-key CryptosystemsFEI Xiang-dong ,DING Yan-yan,PAN Yu(College of Economics and Management, Nanjing University of Technology, 210009)Abstract:In order to boost the security of knapsack public-key cryptosy
3、stem(KPC for short),this paper listed the security outline of KPC according to the causes that they had failed,that is,concealin g the redundancy of initial sequence adequately by confusion and diffusion;improving the density of KPC;keeping the modulus secret;the super-increasing KPC security indepe
4、ndent of the confidentiality of initial sequence. A heuristic provable security method of KPC was proposed. Accordingly,a new KPC was designed. Modular multiplication was adopted for confusion,and a difficult solution function based on linear indifinite equation in two unknowns for diffusion,thus th
5、e redundancy of the initial sequence was concealed adequately. The 基金项目:江苏省软科学研究计划项目(BR2010080)费向东( 1966.11-) , 男,江苏无锡人,高级工程师,工学硕士,研 究 方 向 为 密 码 算 法 与 安 全 议 ,潘郁(1955.3-) ,男,江苏南通人,教授,博士,研究方向为计算管理与商务智能。2difficulty for an adversary to break it is reduced to that of breaking the difficult solution funct
6、ion.Meanwhile,a higher knapsack density was reached. Conventional attacks were avoided.Key words: knapsack public-key cryptosystem ;security outline ;provable security ;modular multiplication ;linear indifinite equation in two unknowns ; difficult solution function0 引言目前在用的公钥密码都是基于因子分解或离散对数问题的,存在着如下
7、不足:一是Shor证明量子计算机能有效地进行因子分解和求解离散对数 1,一旦量子计算机面世,则目前的公钥密码全部无法使用。今年3月,IBM公司宣布在量子计算机的研究方面取得重大突破,已开发出可达到“实用量子计算机”最低标准的设备 2;二是目前在用的公钥密码计算量大,运算速度慢,难以适应资源受限的场合。背包公钥密码以背包问题的NPC(N P-complete,NP完全性) 性 质 和 快速加解密优势成为 解决以上不足的优选方案。因为Bennett等人证明量子计算机上也不存在求解 NPC问题的有效算法 3。一个安全的背包密码在量子计算环境下同样是安全的。但背包密码屡被破译,安全性令人担忧,其生存和
8、发展的前提解决安全性评价问题。目前评价公钥密码的安全性有两种方法,一是枚举安全性,把密码算法公布,一段时间后没有被破译,就认为该密码算法暂时是安全的;二是可证明安全性理论,就是把密码算法的安全性规约到一个公认的数学难题,可证明安全性已成为公钥密码学领域的热点 4。然而当前可证明安全的公钥密码大都是基于因子分解或离散对数问题的,学界对背包密码等快速公钥密码的安全性评价依然采用枚举安全性的方法,即讨论该密码能否抵抗已知或潜在的攻击。因此,总结了以往背包密码失败的原因,根据攻击手段,概括安全背包公钥密码的要点,是目前评价和设计安全背包密码的主要方法。1 安全背包公钥密码要点1.1 初试序列及冗余度背
9、包密码的设计思想通常是把一个易解背包问题通过陷门变换成一个看似困难的背包问题,陷门信息作为私钥仅被合法接收者掌握,运用它可以把该问题恢复成一个易解背包问题,通过解该易解背包重构明文;而对非法接收者来说,从密文恢复明文就相当于解一个困难的背包问题。初始序列代表易解背包,具有一定规律和特性,如初始序列项之间的互素关系或超递增性,这些规律和特性形成初始序列的冗余度,背包公钥序列作为初始序列变换的最终3结果,看似难解,但残留着这些冗余度。文献5指出利用初始序列或其冗余度是破译成功的必要条件。因此,加强背包密码安全性的方法为:在初始序列到公钥序列的变换过程中,运用混乱和扩散技术充分隐藏初始序列及冗余度,
10、使得初始序列、公钥序列和密码之间的关系尽可能复杂,以至攻击者难以将三者联系起来而进行破译。1.2 背包密度0-1背包密码的密度定义为:公钥序列 ,n位长的二进制明文aA, .1被加密为 ,其中 为0或1,背包密度为: 12.inmnmac.1i,/(x)iDensitylbi .,Coster等人证明背包密度小于0.9408的背包密码都易遭受低密度子集和攻击 6,而若背包密度大于1,又造成解密不唯一 7。因此,安全的背包公钥密码密度必须在0.9408和1之间。并且,如果一个背包公钥密码的密度只是稍大于0.9408,也不能确保其能够抵御低密度子集和攻击 8 14,背包公钥密码的密度应尽量接近1。
11、1.3 背包密码的模初始序列转换到公钥序列,一般要用到模运算。有些算法为了降低密文的膨胀率,将模数作为公钥的一部分予以公布,以往的经验表明,这样的背包密码几乎注定是要被破译的,模数将成为攻击成功的突破口,或被格攻击 9,10或被代数攻击 11,12破译。模数应该作为私钥的一部分予以保密。1.4 超递增初试序列对于基于超递增初始序列的背包密码,超递增初始序列的起始项数值较小,攻击者可根据序列维数和序列项的位长度进行猜测。因此,基于超递增背包密码的安全性不应该依赖初始序列的保密,初始序列即使公开也不影响其安全性。2 安全背包公钥密码的设计2.1 简单性原则如上所述,背包密码是将易解背包通过陷门,变
12、换成一看似难解的背包。囿于背包密码的快速加解密性质和背包密度,其设计适用简单性原则,包括规范的简单性和分析的简单性。规范的简单性,指密码算法仅采用有限个运算,这些运算是容易解释的,简单规范的优点是便于正确实现,不易隐藏错误。分析的简单性,指在密码的设计阶段就考虑其安全要点,以4便密码的使用者易于理解密码算法如何抵御已知攻击,使得密码算法具有一定程度的可信度。2.2 可证明安全性的构造公钥密码就是一种陷门单向函数。对于背包公钥密码,其安全性首先规约为破解其中的陷门,如果陷门是牢不可破的,则该背包密码等价于真正的背包问题。据此,本文提出一种构造背包密码可证明安全性的启发性方法。设一背包公钥密码,其
13、初始序列 经k个陷门函数变换后得到公钥序列 ,即:BA1()YFB21(1)(1)(2)kkkYFY()A各函数中的参数组成陷门信息,作为私钥保存。 的函数值作为公钥序列 。kFA如果函数 满足以下条件,则称为是难解函数:一,函数 的反函数 难以表kF k1kF示,即 无法用公钥序列 及函数 中的陷门信息表达; 二,攻击者仅依靠函数值(1)YAk而不掌握函数 中的陷门信息,难以求解自变量 的值。k (1)kY如攻击者从公钥序列 出发,初始序列及其冗余度被难解函数 掩盖,由于反函数kF难以表达,此时,攻击者无法将公钥序列、密钥和初始序列联系起来,背包密码的安1kF全性规约为破解该难解函数从而获得
14、 。(1)kY如攻击者从初始序列出发,假设 可以用初始序列和函数 、 中() 1F2(1)k的陷门信息表示,由于攻击者不掌握陷门信息, 的值对攻击者而言是未知数,此时(1)k公钥序列、密钥和初始序列之间的关系由函数 表达,背包密码的安全性依然规约为破解F该难解函数而获得 。(1)kY如果 、 不是难解函数,其反函数容易表达,则公钥序列、密钥和初始kF()5序列之间的关系可以由 的反函数表示,如果该关系是较为简单的线性关系,可能是可以1F破译的 13,14 。3 新型背包公钥密码算法根据上述设计方法,提出一种新型背包公钥密码。3.1 基于二元一次不定方程的难解函数二元一次整系数不定方程是初等数论
15、 15中最基本的不定方程,形式如下:,其中, 、 和 是已知整数, 和 是待解的未知数。afveuefauv若该方程有解 和 ,则其它一切解具有以下形式:0UV01ftve其中, , , 为 和 的最大公因子, 为任意整数。1(,)f1(,)fe(,)feft如果 和 为正整数,并且 , ,易见 和 是该方程的唯一正整数0UV10fU10V0解。设陷门函数 由以下方式形成:()Fx2()jxuvef其中, 为固定值, 为自变量, 和 为陷门信息。自变量 分组后,代入二元一jxefx次整系数不定方程生成函数值。为难解函数:一是其反函数无法表示,即 无法用函数值和陷门信息 、()Fx 2jxuve
16、表达;二是从目前的数学方法看,攻击者仅依赖函数值而不掌握陷门信息 、 ,无法f ef求解 和 。uv3.2 算法描述(1) 选超递增初始序列 , ,),.(1nibB)max(1ibn .,1 (2) 选互素的正整数 和 ,满足wmi16(3) 运用乘数 ,对 序列项 进行模乘运算,将 转换 序列:wBibBD;,.1 modnibii ,设 =h,则 =h,nD,.1|max(|)idni .,1 表示 的比特位长度,下同。|(4) 对 序列项 进行对称分组: 的长度以h= 位计(如高位不足,以0计),左idi|起第 位分为左、右长度相等两部分,形成 和 , ,其中2hjiuiv|iiv;
17、ijii vu(5) 选互素的正整数 和 ,满足 ,ef1niev1nifu令 ,iiiaufv .,公钥为:序列 ;私钥为: , , ,naA.,1ef1wm超递增初始序列 作为固定值嵌入算法中。B加密:二进制明文 , 或1,被加密为 。12.inxx0in1 .xac解密(1) 解不定方程 ,方法为:eufvc运用扩展欧几里德算法,计算X 和Y ,使得 ;易见 和 是方程1eXfYXCY的一组解,以此计算出该不定方程的正整数解 和 ;uv(2) 计算 ;vudj2(3) 计算 )(mod1wz(4) 运用超递增初始序列 计算得明文xB3.3 安全性分析初始序列通过两个陷门函数变换到公钥序列
18、:模乘运算函数和基于二元一次方程的难解函数。前者为混乱技术,后者为扩散技术。第(3)步模乘运算为乘法群运算,即在一个整数域中,用一个整数代替另一整数。其优点是雪崩效应明显, 、 及初始序列项 的微小变化,将引起模乘结果 的剧烈变化,尤wmibid7其当乘数 较大时。缺点是变换为线性,不足以隐藏初始序列及冗余度,有多种方法可破译w之 13,16 。第(4)和第(5)步将 序列项 分为长度相等的两部分 和 ,分别扩展 倍和 倍Didiuivef后叠加, 和 所残留的冗余度扩散到整个公钥序列项 中,同时进一步加大雪崩效应。iuiv ia对背包公钥密码的攻击主要有明文恢复攻击和密钥恢复攻击。前者是指从
19、密文出发求解明文,后者是指重构密钥的构造过程,现分别讨论之。3.3.1 明文恢复攻击如1.2节所述,背包密度应远大于0.9408、接近1才能保证安全。以n=512为例说明本密码算法的密度。(1) 选超递增初始序列 ),.(5121bBi(2) 选互素的正整数w和m ,设 =514 |m(3) 运用w和m,对初始序列 进行模乘运算,得到 序列D;其中 =514512,. odibii ax(|)id(4) 对 序列项 进行对称分组:以514 b长度计,左起第257 b的位置分为左、右两部Di分,形成 和 ,其中iuiviii vu257(5) 选整数 和 ,满足 , , 和 可取长度为266 b
20、的正整数,ef512iev1ifef由此,公钥序列 中 =266+257+1=524 b ,Amax(|)i ni .,背包密度 =512/524=0.9771 。Density从公钥膨胀效果看,运用二元一次整系数不定方程生成公钥序列,相当于一次模乘运算,而如文献53.1 节算法,用中国剩余定理生成公钥序列,则相当于两次模乘运算,显然前者有利于背包密度的提高。3.3.2 密钥恢复攻击初始序列变换到公钥序列所运用的函数如下:(1)模乘运算函数 1F,1()iibwkm1,2.in8令 , 1()iidFb,2.n(2)基于二元一次不定方程的难解函数 :2F*2 1,.()jiiiiiiuvnFd
21、ef令公钥序列项 ,2()iiaFd,2.在 函数中,由于 是公开的,攻击者可通过构造一个联立丢番图逼近问题,再运用1ib格基规约算法求出 ,具体步骤参见文献17 。但攻击者不掌握陷门信息 和 ,所以 对k wmid攻击者来说是未知的。如2.2所述,攻击者无论从公钥序列 出发,还是从初始序列 出发,AB算法的安全性都规约为破解难解函数 。2F在本算法中, 序列是关键。攻击者只要获得 序列,即使不掌握初始序列 ,只要DD利用其超递增性质再运用Shamir 破译法 16就能解得 、 和初始序列 ,或它们的等价值。wm从这个角度看,初始超递增序列也没保密的必要。3.3.3 关于安全性的进一步讨论本文
22、3.2节所提出的算法为基本型背包公钥密码,类似于RSA基本型,都是确定型加密算法,不满足有关公钥加密体制的安全性定义 18,19 。如:两者都不满足密文不可区分性(Indistinguishability,IND);RSA基本型不是CCA2(适应性选择密文攻击,Adaptive Chosen Ciphertext Attack)安全的,由于基本型背包公钥密码是线性加密机制,即若,则 , 其中 为明文 对应的密文,该密码同样不是CCA212m12ccm安全的。目前,对公钥密码的安全性要求达成的共识为IND-CCA2。为此,需要在加密前对明文填充随机信息,或对密文填充随机信息,使之成为一个概率加密
23、算法,同时要求算法具备密文合法性测试(又称“明文感知性”,Plaintext Awareness,PA)功能,以满足IND-CCA2安全性。具体实现方案有待进一步深入研究。4 举例选超递增序列为:=(58037,29018,14510,7253,3627,1813,907,453,227,113,57,28,15,B7,3,2)取模m=965613 ,w=724210,w 模m 的逆w -1=4,计算得:d1=738719=(10110100010110011111 )2 d2=490061=(01110111101001001101)29d3=486434=(0111011011000010
24、0010)2d4=726023=(10110001010000000111)2d5=242310=(00111011001010000110)2d6=724663=(10110000111010110111)2d7=241630=(00111010111111011110)2d8=724323=(10110000110101100011)2d9=241460=(00111010111100110100)2d10=724238=(10110000110100001110)2d11=724224=(10110000110100000000)2d12=7=(00000000000000000111)
25、2d13=241407=(00111010111011111111)2d14=241405=(00111010111011111101)2d15=241404=(00111010111011111100)2d16=482807=(01110101110111110111)2其中,d12=7,数值太小,令d12= d12+m=7+965613=965620=(11101011101111110100 )2在d i 中间位置,即第10 b处分割d i,形成U 序列和V序列:U=(721 ,478,475,709,236,707,235,707,235,707,707,942,235,235,235
26、,471)V=(415 ,589,34,7,646,695,990,355,820,270,256,1012,767,765,764,503), ;取e=8987,f=8135 ;其中, (e,f)=1168035iu168iv计算 ,得公钥序列 :iiiaefA=(9855652,9087301,4545415,6428728,7376142,6934134,10165595,9241734,87A82645, 8550259,8436369,16698374,8351490,8335220,8327085,8324782)设需加密的明文为x=1010100100100101计算得密文c=
27、a 1+ a3+ a5+ a8+ a11+ a14+ a16=56115314解密运算:10解不定方程 897135614uv得 u=3552 v=2974d=u*210+v=3640222b= w-1d mod m=4*3640222 mod 965613=76693解超递增背包得:x=1010100100100101从本例中得出以下结论:乘数w 应尽可能接近模数m,使初始序列B中相临项的模乘结果显著不同,以加强雪崩效应;如果模乘结果 序列项的值太小或汉明重量太低,可以加上模D数m掩盖;初始序列 中相邻项之间的倍数关系不应相同,否则倍数关系可能传递到模乘结B果 序列中。D选择一个理想的初始序
28、列有一定难度,所以在本算法的设计中,将一个精选的初始序列嵌入算法,而不必由每个用户自行选择。5 结语本文总结了以往背包密码失败的原因,列举出安全背包公钥的要点,提出一种背包密码的可证明安全性的启发性方法。据此,设计了一个新型背包密码,该密码由模乘运算实现混乱,运用基于二元一次不定方程的难解函数实现扩散,充分隐藏初始序列及其冗余度。攻击者无论是从公钥序列出发,还是从初始序列出发,该算法的破译难度都规约为破解该难解函数,同时能达到较高的背包密度,常规的破译方法不再有效。参考文献:1 Shor P W Polynomialtime Algorithms for Prime Factorization
29、 and Discrete Logarithms on a Quantum ComputerJSIAM Journal of Computing,1997,26(5):1484-1509 2 IBM Research Advances Device Performance for Quantum ComputingEB/OL.2012-3-9. http:/ Bennett C H,Bernstein E,Brassard G,et a1 Strengths and Weaknesses of Quantum ComputingJSIAM Journal on Computing,1997,2
30、6(5):1510-1523 4 陈杰. 公钥密码体制安全性证明关键技术及应用研究D.上海交通大学博士学位论,20085 丁燕艳,费向东,潘郁.重新认识背包公钥密码的安全性J.计算机应用,2012,32(3):694-6986 Coster M J, Joux A, LaMacchia B A, et al Improved low-density subset sum algorithmsJ. Computational Complexity, 1992, 2(2): 111-128.117 Kunihiro N New Definition of Density on Knapsack C
31、ryptosystemsC/Advances in Cryptology-Africacrypt 2008:LNCS 5023Berlin:Springer,2008:156-1738 王保仓.几类快速公钥密码的设计与分析D. 西安电子科技大学博士学位论文,20069 章照止.破译一个新的背包公钥密码系统J. 系统科学与数学, 1991,11(1):91-96.10 于志强,罗世新,徐树民等.对一个公钥密码体制的格攻击 J.信息安全与通信保密,2008, (10):105-10711 王保仓,刘辉,胡予濮 . 对一个公钥密码体制的连分式攻击算法J.计算机工程,2010,36(4):150-15
32、412 Vaudenay S. Cryptanalysis of the Chor-Rivest cryptosystemJ. Journal of Cryptology, 2001, 14(2): 87-100. 13 J. C. Lagarias. Knapsack public key cryptosystems and diophantine approximationJ. Advances in Cryptology- Proceedings of Crypto , 1984,83:3-23.14 Baocang Wang, Hui Liu, Yupu Hu. Cryptanalys
33、is of a Knapsack Public Key CryptosystemEB/OL.2012-3-9.http:/ 15 于秀源,瞿维建.初等数论M. 济南:山东教育出版社,2004:105-11316 Shamir AA Polynomial-Time Algorithm for Breaking the Basic Merkle-Hellman CryptosystemJ.IEEE Trans on Information Theory,1984,30(5):699-704.17 王保仓,巨春飞. 对一个背包公钥密码的格攻击J.计算机应用研究,2010,27(4) :1466-1492.18 任伟.可证明安全公钥密码学探究J.信息网络安全,2011,(11)19 许春香.现代密码学M .成都:电子科技大学出版社, 2008:124-128