背包密码体制
背包密码体制

背包密码体制作者: 指导老师:摘要背包公钥加密是第一个具体实现了的公钥加密的方案.本文主要分析背包公钥加密算法的数学理论基础,描述背包公钥加密算法的体制,讨论背包公钥加密算法的加密算法与解密算法的过程和原理。
采用MH法通过掩盖超递增背包序列,进而对背包公钥加密算法加以该进,用实例加以实现,并对它的安全性进行讨论和分析.关键字模逆; 同余式; 欧几里德算法; 超递增序列;掩盖超递增序列1 引言加密技术是一门古老而深奥的学科,它对一般人来说是陌生而神秘的,因为长期依赖,它只在很少的范围内,如军事、外交、情报等部门使用.计算机机密技术是研究计算机信息加密、解密及其变换科学,是数学和计算机的交叉学科,也是一门新兴的学科,但它已成为计算机安全主要的研究方向,也是计算机安全课程教学中主要内容.密码学(Cryptology)一词源自希腊语“krypto’s”及“logos”两词,意思为“隐藏”及“消息”.它是研究信息系统安全保密的科学.其目的为两人在不安全的信道上进行通信而不被破译者理解他们通信的内容.密码学根据其研究的范围可分为密码编码学和密码分析学.密码编码学研究密码体制的设计,对信息进行编码实现隐蔽信息的一门学问,密码分析学是研究如何破译被加密信息或信息伪造的学问.它们是相互对立、相互依存、相互促进并发展的.密码学的发展大致可以分为3个阶段:第一阶段是从几千年前到1949年.这一时期密码学还没有成为一门真正的科学,而是一门艺术.密码学专家常常是凭自己的直觉和信念来进行密码设计,而对密码的分析也多给予密码分析者(即破译者)的直觉和经验来进行的.第二阶段是从1949年到1975年.1949年,美国数学家、信息论的创始人Shannon,Claude Elwood发表了《保密系统的信息理论》一文,它标志这密码学阶段的开始.同时以这篇文章为标志的信息论为对称密钥密码系统建立了理论基础,从此密码学成为一门科学.由于保密的需要,这时人们基本上看不到关于密码学的文献和资料,平常人们是接触不到密码的.1976年Kahn出版了一本叫做《破译者》的小说,使人们知道了密码学.20世纪70年代初期,IBM发表了有关密码学的几篇技术报告,从而使更多的人了解了密码学的存在,但科学理论的产生并没有使密码学失去艺术的一面,如今,密码学仍是一门具有艺术性的科学.第三阶段为1976年至今.1976年,Diffie和Hellman发表了《密码学的新方向》一文,他们首次证明了在发送端和接受端不需要传输密码的保密通信的可能性,从而开创了公钥密码学的新纪元.该文章也成了区分古典密码和现代密码的标志.1977年,美国的数据加密标准(DES)公布.这两件事情导致了对密码学的空前研究.从这时候起,开始对密码在民用方面进行研究,密码才开始充分发挥它的商用价值和社会价值,人们才开始能够接触到密码学.这种转变也促使了密码学的空前发展.密码学发展至今,已有两大类密码系统:第一类为对称密钥(Symmetric Key)密码系统,第二类为非对称密钥(Public Key)密码系统.和RSA公钥体制一起,背包公钥体制被认为是两个著名的公钥体制之一.1978年Merkle 和Hellman首先提出了一个现在称为MH背包体制的密码体制,虽然它和其几个变形在20世纪80年代初被Shamir等人破译了,但是,它的思想和有关理论首先解释了公钥密码算法的本质,所以仍然具有深刻的理论研究价值.自从Merkle和Hellman提出第一个背包型公钥密码以来,许多陷门背包被提了出来.背包型公钥密码的设计极大地丰富了公钥密码,在陷门背包的发展过程中,人们使用了各种各样的技术来设计陷门背包.比如,使用加法背包的公钥加密,使用紧凑背包的公钥加密,使用二次背包即矩阵覆盖的公钥加密,使用模背包的公钥加密,使用丢翻图方程的公钥密码等.背包型公钥加密由于其加解速度快而备受关注,然而,现有的背包型公钥密码几乎都被证明是不安全的.陷门背包的设计思想是从一个简单的背包问题出发来进行构造:把易解的背包问题伪装成一个看似困难的背包问题,这易伪装的方法就是陷门信息.合法的接受者Alice由于掌握了陷门信息因而能够把该问题恢复成一个易解背包问题,通过求解该易解背包问题,Alice能够重构明文,而对于非法的接受者Eve来说,他从密文恢复明文就意味着求解一个困难的背包问题.2 背包公钥加密算法的数学理论2.1 素数与因式分解定义1:如果一个自然数m可以被另一个自然数n除尽,则称m整除n,记为:n|m.定义2:除1外,只能被1和其本身整除的自然数称为素数,不是1,且非素数的正整数称为合数.2.2 欧几里德算法2.2.1欧几里德算法的概述欧几里德(Euclid)算法是数论中的一个基本技术,是求两个正整数的最大公因子的简化过程。
一种确定的背包公钥密码体制的破译方法

同样 , 许多破译背包系统地方法也被提了出来 ¨ ] [ 。本文利用密钥的超可达性 , 提 出了一个新的确定的
破 解 背包 公钥 密码 体制 的方 法 。 所谓 背包 问题 : 即给定 重量 分别 为 0 , , …, o 的 n个物 品 , 现 在能 否把 这 n个 物 品 中 的几 件 放入 一 个 背包 中使 之等 于一 个 给定 的重量 £ ?
n
这个 问题也就是求 = 0或 1 , i = 1 , 2 , …, n 使满足 ∑ i 口 = L , 其中 0 , 0 , …, o 和 都是正整数 。 显然, 背 包 问题 的求解 是 N P完 全 问题 , 如果 直接对 其 求解 , 以 n=1 0 0为 例 , 用 每秒 搜 索1 0 种 的计 算 机 进行 穷举 , 一 年 只能完 成 3 . 1 5 3 6×1 0 H 次, 而完成 所 有 的搜 索 , 共需 2 ÷( 3 . 1 5 3 6×1 0 ¨ )
长
春
大
学
学
报
第2 4卷
பைடு நூலகம்
加密密钥加密信息, 但只有相应的解密密钥才能解密信息。 在背包公钥密码体制中, 解密密钥为超递增增 向量 , 但加密密钥却不是超递增增 向量, 利用求解一般背 包问题的复杂性 , 使得只有持有有解密密钥的合法用户才可以解密得到明文 , 而其他持有加密密钥的人无法 解 密得 到 明文 。
1 背 包 问题
1 . 1 背 包 问题定 义
公钥 密码 系统 一直 是 密码学 研究 的重要 领域 之一 。1 9 7 9年 ,M e r k l e和 H e l l m a n … 提 出背包 公 钥密 码 体 制 ,由于背 包序 列在 转 换 机 制 上 有 弱 点 ,1 9 8 3年 S h a mi r _ 2 完 全 破译 了 Me r k l e - He l l m a n的背 包 公 钥 密 码 体 制 。但 由于基 于 背包 问题 的公钥 密 码 系统 加 解 密 速度 快 ,许 多更 加 复 杂 的公 钥 密码 系 统被 提 了出来 ] 。
基于背包问题的MC矩阵覆盖密码体制

基于背包问题的MC矩阵覆盖密码体制学术研究Academ1cRe5ear-ch基于背包问题的MC矩阵覆盖密码体制徐猛(华东师范大学网络信息安全研究所,上海20062)【摘要】设A是整数环上的阶非负方阵,是一非负整数,求解X∈{0,1},1≤i≤,使得XAXr=,其中(,:,…,,),是向量的转置,是一个公认的NP完全问题….论文就这此问题,利用整数位数及其整数位数上的数字是否为零这一特征建立了一个公钥密码算法.【关键词】动态超递增序列;动态的背包向量;【中图分类号】TP393【文献标识码】A整数位数;公钥密码体制【文章编号】l009—8054(2006)l0—0156—03 MCMatrixCoverCryptosystemBasedonKnapsackProblemXuMengfInstituteofNetworkInfarinationSecurity,ECNShanghai200062,China)[Abstract]LetAbeanon—negativen×nmatrixdefinedovertheringofintegersandSisanon—negativei nteger.tosolveX∈{0,1}for1≤f≤n,suchthat(X】,X一,Xn)A(I,X2,…,,)’-,where(X】,一,Xn)丁isthetranspositionofthevector(X】,X:,…,,),isknowntobeaNPcompleteproblem.Inthiscorrespondencewewilldesignapubli c.keycryptosystem basedonthepropertywhethertherelatingnumbersontheintegerfiguresarezeros.[Keywords]dynamicsuper—increasingsequence;dynamicknapsackvector;integerfigures;apublic —keycryptosystem.相关记号:记Ic]为整数C的整数位数,如f2189]=4.名词解释:——动态超递增序列:设A是一个n阶非负整数矩阵,对任意一个n维非零向量,其分量x.{0,l},l,…,,使得n维向量XA=(A一,A)的元素构成的序列一,,,是超递增序列,其中表示向量与矩阵的第列元素相乘的结果,则称序列A,…,A为动态超递增序列.——动态的背包向量:动态超递增序列A,…,A中的每个元素通过相同的模乘变换后,按原有的先后次序构成的n维向量称为动态的背包向量.1引言背包密码体制是基于一个组合问题有一个能承受已收稿日期:2006—1—10作者简介:徐猛,1977年生,男,贵州省沿河县人,土家族,上海华东师范大学数学系硕士研究生,研究方向:信息安全. 156I凹衄衄c.ism矗g.④①口0[]④田l知重量b的背包,问题为从重量分别为a.,…,a的物品中选取多少个使其重量恰好等于背包的承受重量b.用数学表达式来描述上述问题:如果第i个物品被选取,则取=l,否则Xi=0,从而有alx】+…+anx:”.从计算复杂性的角度来说,背包问题是一个NP完全类,这类问题还没有有效的算法I21.l978年Merkle和Hellman利用超递增背包序列口】,口2,…,口,即aj>(a+…+口),j=2,…,n,选取非负整数P和(£),使得P>2a,且gcd((£),P)=l,进行模乘变换b,兰(£)ai(modP),f=l,…,n.设向量口=(口,…,a),6=(6,…,b),则背包密码的私钥为(口,P,(£),(£)),(£)(£)兰(£)l(modP),公钥为b.对每一明文块M=m,…,rn,m∈{0,l},l,…,n,通过加密运算得到的密文为C=b脚+62+…+6m.设T三C(£)~(modP),若T≥a,则m=l,否则m=0;若71一(口』+川+…+nm≥),则l,否则mj=O,_,一l,…,l,从而解密出明文m,…,m.如若不知道P和cc,,则上面的解密问题将导致解一个困难的背包问题.但由于序列a.,a,…,a,具有超递增这一特性,以及向量b是公开的,使得Merkle—Hellman背包密码体制的安全性受到了影响.l980年该密码体制被Shamir~ll用满足一定条件的整数尸和,使得用尸和(注:满足gcd(P,)=1)对公开的背包向量6=(6.,b,…,6,)的元素作变换a三b,03(modP),只要序列a.,a,,…,a,是超递增的序列即可实现算法的破解.1.1有关Shamir的攻击算法”Shamir利用作为公钥的背包向量6=(6.,b,,…,b),寻找一个解密密钥对(03,尸),使其满足:(1)gcd(03,尸)=l且l<03<尸,03,尸都是整数.(2)比值03/尸与03/尸无限接近.(3)d,三03(6,(modP)),l,…,,l,是超递增序列且尸满足尸>2a.因此,若能通过公钥背包向量6=(6.,b,,…,b),求出03/尸满足上面三个条件的取值范围(显然这样的取值范围是存在的,因为以03/尸为中心的充分小的邻域就是其中之一),就能对解密密钥对(03/P)的取值进行估计.若超递增序列a.,a,…,a的每一项满足ai’<2P,则由于a.三b.03(modP)且a,<2尸知’,/P.属于区间(k/b.,k+2/6.)的并集,而且对于每个b,/尸属于区间(k/b,k+2/b,)的并集,k=0,…,6.一l,f=l,…,,l.取这些并集的交,即得/尸的取值范围.从上述Shamir攻击方法的分析可知,对Merkle和Hellman设计的背包密码体制的攻击主要利用属于私钥中的超递增序列这一特性和作为公钥的背包向量b=(b., b,…,b)来实现对该密码体制的破解.基于背包问题的MC矩阵覆盖密码体制克服了上述安全方面的不足,采用动态的超递增序列和动态的背包向量,且在这一密码体制中,动态的超递增序列和动态的背包向量都不属于公开信息,使得攻击者无法用上面有关Shamir攻击算法来破解基于背包问题的MC矩阵覆盖密码体制.又由于上述矩阵求解问题是公认的NP完全类,从而有效地增强了该密码体制的安全性能.2算法设计记非负整数矩阵=(a)…,设Si=a.,+…+a即S是矩阵A的第i列元素的和,设通过矩阵的列置换,使得A的元素满足:ak~i~1)为10.的正整数倍数,=1,2,…,学术研究ACademtCRese叠fC扮,l,m1a+.≥【】+l>【,】=【l+?+】.设明文=(I,,…,),∈{0,l:,i=l,2,…,加密:C=MBMr=(B.,…,B)为明文的密文.因为若【力≥min{[aIlk=1,…,,l}时,=0,则【71=mlAl+…+A】<【lAI+…+一lA一I】<【l+…+一l】INN,若【71_<min{[aIlk=l,…,,l}时,=l,~q[Tl=m.A.+??+,】≥【】≥【口h】≥mini【口hIlk=l,…,,l},f从T的右边第一位向左开始计算整数位数?在T中t若位于J’min([a】』=1,,.1;k=1,,)位至【S,】位上的数不全为0时, m:’【从T的右边第一位向左开始计算整数位数t在T中.若位于”min([a~】l』=1,,.1;k=1,,】位至【.】位上的数全为0时.中,若位于min{[a11/=l,…,,l—l;=l,…,,l}位至【位上的数不全为0时,有m,=0,则从(++)式知T=m.A.+…+A卜l+,+.A『+l+…+A,因为【lAl+…+A】<min』【a,】【,=l,…,,l—l;k=l,…,,l;,而整数…A+…【刚位上的数全为0,从而在,中位于mini【a】I,=l,…,,l—l;kl,…,,l}位至【刚位上的数全为0,与前提条件矛盾,即有m.=l.于min{【a,11/”=l,…,,l—l;=l,…,,l}位至【刚位上的数中有m,(a..+…+)/10[S.】≥a~S10[S一.】,不全为I信息安全与通信保密?2006.10I157j学术研究Academ1cResearch5基于背包问题的MC矩阵覆盖密码体制的安全分析在设计基于背包问题的MC矩阵覆盖密码体制的算法时,采用只有私钥持有者知道的动态超递增序列A,,…, A,以及只有加密者和私钥持有者知道的动态背包向量6=(,…,.).因此,基于背包问题的MC矩阵覆盖密码体制的安全性可以从以下几个方面来分析:~—因为攻击者不知道动态的背包向量b,从而无法利用动态的背包向量来构造新的超递增序列,这就阻止了攻击者直接利用Shamir背包破解方法来破解基于背包问题的MC矩阵覆盖密码体制算法.——因为作为私钥部分的非负整数矩阵A的每一行部是超递增序列,若攻击者采用Shamir的背包破解方法从作为公钥的矩阵的每一行人手构造一个非负整数矩阵A,使得A的每一行部是超递增序列,则攻击者必须设计一个解密密钥对(ct,,Jp),使得用解密密钥(ct,,Jp)对矩阵的每一行作模乘变换后,都能产生超递增序列.按照这样的攻击算法,攻击者会面ll缶以下问题:(1)在计算比值ct,/Jp的取值范围时,ct,/Jp的取值范围必须是由矩阵的每一行元素所确定的取值范围的交集.这样攻击者至少得利用矩阵的其中一行元素来确定/P的取值范围,从而增加了计算上的时间开销.(2)即使攻击者计算出比值ct,/尸的取值范围,从该取值范围设计出一个解密密钥对((t,,Jp).如果由ct,B三A(modP)得到的非负矩阵A的元素不具有a为lo[s】的整数倍这一特性,=l,…,n,l,…,n—l,其中【.】仍表示非负矩阵A的第i列的列和.的整数位数, 那么,利用(ct,,Jp)对密文作模乘变换后,攻击者在构造动态的超递增序列A,,…,A.,并进行解密时,相当于对2”个不同的明文的可能取值进行搜索,因此,恢复明文相当于解一个困难的背包问题.(3)如果要通过上述第(2)步变换所得的非负矩阵A的元素具有a为l0【,】的整数倍,则由变换ct,B三A(modP)知,存在整数,使得ct,bk>0,∈{l,…,};=l,…,,且当f≥时,ct,j-6x一PJp是i2l0IS】的整数倍.若从整数右边的第一位向左开始计算整数位数,则考察上面每一个i和每一个的取值,都有ct,b和Jp这两个整数的第一位至第1S,.】位上的数字必须相同,从而要选取到这样的~个解密密钥对(ct,,Jp)也是~件困难的事情.l01581晒唧喇cls哪aq@④衄@圃I4基于背包问题的Mc矩阵覆盖密码体制的效率分妖该密码体制的加密应用了整数乘l或0以及整数的加法;解密应用了模乘运算,整数位上的数字与0比较大小的运算,算法很容易利用计算仉来实现.参考文献【l】朱文余,孙琦编着.计算机密码应用基础【M】.北京:科学出版社,2000:98一l05,l5l_l53.【2】MerkleR,HellmanM.Hidinginformation andsignaturesintrapdoorknapsacks[M].IEEE TransactionsonInformationTheory,l978,24(5525—530.【3】杨波编着.现代密码学【M】.北京:清华大学出版社,2003.【4】LagariasJC.PerformanceanalysisofShamir?sattack0nthebasicMerkleHel1manknapsack.ICALPl984.AutomataLanguagesand Programming,EleventhColloquium,Antwerp,Belgium.l|ectureNotesinComputerScienceNo. 172,NewY ork:Springer—V erlag.1984:3l2~323, [5】卢开澄编着.计算机密码学【M】,北京:清华大学出版社,l998:l14一l16,更正由于编辑疏忽,第7期93页《数据仓库的教学质量评估支持系统初探》一文作者的单位”贵州大学财经学院”应为:贵州财经学院和贵州大学两个单位.我们对此深表歉意.特此更正《信息安全与通信保密》杂志社2006年9月l9日。
现代密码学 第9讲背包Rabin

背包密码体制
公开钥:一般背包向量 公开钥:一般背包向量B =(b1,b2,…,bn),满足 , bi≡tai mod k, ≡ 私钥:超递增背包向量A 私钥:超递增背包向量 =(a1,a2,…,an) ,t, k k>∑ai,gcd(t,k)=1 加密: 为明文x二进制串 加密: c=Bx(x为明文 二进制串 为明文 二进制串) t-1 c mod k≡t-1tAx mod k≡Ax mod k,k>∑ai, 知Ax<k,所以t-1c mod k=Ax 解密: t-1c mod k=Ax 解密:
2010-10-9
7
背包问题应用
背包问题是著名的NPC问题 , 至今还没有好的 问题, 背包问题是著名的 问题 求解方法, 求解方法 , 这为其在密码体制上的应用奠定了 理论数学基础 背包问题的公钥系统在陷门设计中还存在不足, 背包问题的公钥系统在陷门设计中还存在不足 , 故在加解密方面没能得到应用 但零知识证明无需设计陷门,利用背包可以设计 但零知识证明无需设计陷门 利用背包可以设计 出安全的认证和签名系统
p +1 x ≡ c 4 mod p q +1 x ≡ c 4 mod q p+1 x ≡ c 4 mod p q +1 x ≡ c 4 mod q p +1 x ≡ c 4 mod p q +1 x ≡ c 4 mod q p+1 x ≡ c 4 mod p q +1 x ≡ c 4 mod q
2010-10-9
9
中国剩余定理
k 定理(中国剩余定理 : 定理 中国剩余定理): 中国剩余定理 M = ∏ mi = mi M i i =1 是两两互素的正整数, 设m1,m2,…,mk是两两互素的正整数, ′ M i M i ≡ 1 mod mi 则一次同余方程组
背包密码体制

背包密码体制背包问题介绍:给定⼀些物体,每个物体有不同的重量,是否有可能将这些物体放⼊⼀个背包,使背包的重量等于⼀个给定的值。
背包算法为第⼀个推⼴的公开密钥加密算法。
虽然后来发现这个算法不安全,但仍值得研究,因为它表⽰了如何将NP完全问题⽤于公开密钥算法(好吧,这个我不知道是什么意思~)。
举例:这些物体的重量分别为1,5,6,11,14,20,则可将重5,6,11的物体放⼊,装成⼀个重22的背包。
但是⽆法装成⼀个重24的背包。
背包问题:等于⼀个给定的值。
解为选择物品装⼊的情况,装⼊⽤1,未装⼊⽤0.例⼦中对给定值22的解为{0,1,1,1,0,0}这个问题需要的时间随物体的数量的增加成指数时间。
基本原理⾸先,背包算法⽤于信息安全(密码法),我们总得搞清楚什么是明⽂,密⽂,密钥吧?!举例:明⽂: 1 1 1 0 0 1 0 1 0 1 1 0 0 1 1 0 0 0密钥: 1 5 6 11 14 20 1 5 6 11 14 20 1 5 6 11 14 20密⽂: 1+5+6+20=32 5+11+14=30 5+6=11从上⾯可以总结:明⽂为物品的装⼊情况,是1/0的序列,⽽且明⽂长度等于物体的个数,表⽰从中选取物体装⼊背包密⽂为选取物体的质量和密钥为背包问题中物品重量序列算法安全性体现为:若攻击者获得密⽂、密钥,也⽆法在线性时间内求明⽂(物品的装⼊情况)算法的关键算法的关键是有两个不同的背包重量序列,这两个重量序列对于给定的相同的值,解相同(物品的装⼊情况相同)前者物品的重量列表是递增的,后者则是⽆序的前者可以解密,看下⾯~~1、构造递增序列背包易解的背包问题:若物品的重量列表为⼀个超递增序列,则该背包问题很容易解的。
⽐如递增序列:1 3 6 13 27 52举例:⾮递增背包是⼀个难问题背包算法先找到⼀个递增背包的重量序列作为私钥,再由此构造⼀个序列(有相同解的⼀般背包问题的序列)作为公钥(重要!)如何构造公钥呢?2、从私钥构造公钥经过上⾯的计算,序列为:{62 93 81 88 102 37}作为公钥3、加密4、解密解密这⾥我遇到⼀个问题:如何求n-1,即如何求n关于模m的逆元??(注意:这⾥必须搞懂,不然下⼀篇博客RSA算法就肯定不懂的!)为了⽅便我整理,我把求逆元相关的过程截图出来,⼤家也可以点链接去看~ ending~。
背包原理

i?1i?1
这一定义对有限序列也适用。通俗地说,每一项都大于它前面各项之和的正整数序列叫超递增序列。
对于超递增序列A而言,如果给定了一个正整数a.是很容易判断a是否能表示为A中的若 干个项之和的。比如序列A ,a=52。因为n>41,41必须被选中,否则其它各项全选也不 够41,从而更达不到52。然后算出52—41:11。因为11恰大于A中的9,9必须被选中, 否则前面各项加起来也不到9,更达不到11。同理,算出11—9=2正好是A中的项,这样就 得到52=41+9+2。
老师在课上介绍了RSA
它能够抵抗到目前为止已知的绝大多数密码攻击。课下我查阅了有关资料简单地了解了背包原理在密码学中应用,但不幸的是这种加密方式的绝大部分已经能被有效破解。
1.背包原理:设想有一个长方体形状的背包,里面恰好装满一组大小不等、形状各 异的积木块。又,旁边还有一堆积木块。如果把背包里的积木块倒在这一堆积木块里搅匀,那么再从中挑出一组积木块使它们恰好装满背包是十分困难的。类似的数学问题可表述为 :
设A?(a1,a2,a3...an),n是正整数,an也是正整数。问是否存在
i1,i2,...ik(1?ij?n,j?1,2,...k)使
a??aij,其中A称为背包矢量或背包序列。 j?1k
这里A就像那一大堆积木块,a是背包,能不能从A中挑出 ai1,ai2...aik恰好
装满n是很难判断的。 不过对于某些背包矢量A,上述问题是容易解决的,这就是矢量A构成超递增数列的情形。
2.背包系统的加密和解密方法
加密方法:选取一个超递增序列A?(a1,a2,...an)比如
第5章[第2部分]公钥密码及背包公钥密码算法
![第5章[第2部分]公钥密码及背包公钥密码算法](https://img.taocdn.com/s3/m/c9f9e2956bec0975f465e2b9.png)
如果总质量大于这个数则它在背包中用背包质量减去这个数转向考查序列下一个最大的数重复直到结束如果总质量变为零那么有一个解否则无解
第5章 公钥密码体制(2) 章 公钥密码体制( )
网络工程学院
背包公钥密码算法
由Merkle和Hellman提出一个基于组合数学中背包问 题的公钥密码系统。这个背包系统称为MH背包问题。 背包问题是这样的:已知有n个物品,它们的重量分 别为a1,a2,…,an 。现在有一个重量为b的背包,装有其 … 中某些物品,问装的是哪些物品? 即为求xi=0或1,i=1,2,…, n,使满足:
网络工程学院
MH背包加密体制的证明
假定已知:d=d1d2…dn,其中d1,d2,…,dn是n位的0,1符号 串,令 c =a1d1+a2d2+…+andn c即为由背包序列a1,a2,...,an 加密明文 d=d1d2…dn 的密 文,则: t-1c= t-1 a1d1+ w-1 a2d2+…+ w-1 andn 因为ak=tbk(modk),k=1,2,...,n. 故t-1c=t-1 tb1d1 + t-1 tb2 d2+ …+ w-1 tbn dn =b1d1 + b2 d2+ …+ bndn 这是一个超递增背包问题,易解。
浅析几种公钥密码体制

浅析几种公钥密码体制摘要:论述了RSA、Merkle-Hellman背包加密体制和椭圆曲线密码体制的基本原理,以及它们的优缺点,通过对比指出椭圆曲线密码体制的明显优点。
关键词:RSA;Merkle-Hellman背包加密体制;ECC;优缺点1引言公钥密码体制于1976年由W.DIffie和M.Hellman提出,同时R.Merkle在1978年也独立的提出这一体制[2]。
该密码体制就是针对私钥密码体制的缺陷被提出来的。
在公钥加密系统中,加密和解密是相对独立的,加密和解密会使用两把不同的密钥。
加密密钥向公众公开,谁都可以使用。
解密密钥只有解密人自己知道,非法使用者根据公开的加密密钥无法推算出解密密钥。
故其可称为公钥密码体制。
自从公钥密码体制被提出以来,出现了许多公钥密码方案如RSA、ELGamal 密码体制、背包算法和ECC、XTR、NTRU等。
下面就介绍一下各种密码体制的优缺点,并进行比较。
2RSA在Diffie和Hellman提出公钥系统观点以后,1977年麻省理工大学的Rivest、Shamir和Adleman提出了第一个比较完善的公钥密码算法,即RSA算法[2]。
RSA系统是公钥系统的最具有典型意义的方法,大多数使用公钥密码进行加密和数字签名的产品和标准使用的都是RSA算法。
RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。
RSA是被研究得最广泛的公钥算法,从提出到现在已经二十多年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。
RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价,即RSA的重大缺陷是无法从理论上把握它的保密性能如何,而且密码学界多数人士倾向于因子分解不是NP问题。
RSA的缺点主要有:(1)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。
(2)分组长度太大,为保证安全性,至少也要600bits以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级,且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化[6]。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
背包密码体制作者: 指导老师:摘要背包公钥加密是第一个具体实现了的公钥加密的方案.本文主要分析背包公钥加密算法的数学理论基础,描述背包公钥加密算法的体制,讨论背包公钥加密算法的加密算法与解密算法的过程和原理。
采用MH法通过掩盖超递增背包序列,进而对背包公钥加密算法加以该进,用实例加以实现,并对它的安全性进行讨论和分析.关键字模逆; 同余式; 欧几里德算法; 超递增序列;掩盖超递增序列1 引言加密技术是一门古老而深奥的学科,它对一般人来说是陌生而神秘的,因为长期依赖,它只在很少的范围内,如军事、外交、情报等部门使用.计算机机密技术是研究计算机信息加密、解密及其变换科学,是数学和计算机的交叉学科,也是一门新兴的学科,但它已成为计算机安全主要的研究方向,也是计算机安全课程教学中主要内容.密码学(Cryptology)一词源自希腊语“krypto’s”及“logos”两词,意思为“隐藏”及“消息”.它是研究信息系统安全保密的科学.其目的为两人在不安全的信道上进行通信而不被破译者理解他们通信的内容.密码学根据其研究的范围可分为密码编码学和密码分析学.密码编码学研究密码体制的设计,对信息进行编码实现隐蔽信息的一门学问,密码分析学是研究如何破译被加密信息或信息伪造的学问.它们是相互对立、相互依存、相互促进并发展的.密码学的发展大致可以分为3个阶段:第一阶段是从几千年前到1949年.这一时期密码学还没有成为一门真正的科学,而是一门艺术.密码学专家常常是凭自己的直觉和信念来进行密码设计,而对密码的分析也多给予密码分析者(即破译者)的直觉和经验来进行的.第二阶段是从1949年到1975年.1949年,美国数学家、信息论的创始人Shannon,Claude Elwood发表了《保密系统的信息理论》一文,它标志这密码学阶段的开始.同时以这篇文章为标志的信息论为对称密钥密码系统建立了理论基础,从此密码学成为一门科学.由于保密的需要,这时人们基本上看不到关于密码学的文献和资料,平常人们是接触不到密码的.1976年Kahn出版了一本叫做《破译者》的小说,使人们知道了密码学.20世纪70年代初期,IBM发表了有关密码学的几篇技术报告,从而使更多的人了解了密码学的存在,但科学理论的产生并没有使密码学失去艺术的一面,如今,密码学仍是一门具有艺术性的科学.第三阶段为1976年至今.1976年,Diffie和Hellman发表了《密码学的新方向》一文,他们首次证明了在发送端和接受端不需要传输密码的保密通信的可能性,从而开创了公钥密码学的新纪元.该文章也成了区分古典密码和现代密码的标志.1977年,美国的数据加密标准(DES)公布.这两件事情导致了对密码学的空前研究.从这时候起,开始对密码在民用方面进行研究,密码才开始充分发挥它的商用价值和社会价值,人们才开始能够接触到密码学.这种转变也促使了密码学的空前发展.密码学发展至今,已有两大类密码系统:第一类为对称密钥(Symmetric Key)密码系统,第二类为非对称密钥(Public Key)密码系统.和RSA公钥体制一起,背包公钥体制被认为是两个著名的公钥体制之一.1978年Merkle 和Hellman首先提出了一个现在称为MH背包体制的密码体制,虽然它和其几个变形在20世纪80年代初被Shamir等人破译了,但是,它的思想和有关理论首先解释了公钥密码算法的本质,所以仍然具有深刻的理论研究价值.自从Merkle和Hellman提出第一个背包型公钥密码以来,许多陷门背包被提了出来.背包型公钥密码的设计极大地丰富了公钥密码,在陷门背包的发展过程中,人们使用了各种各样的技术来设计陷门背包.比如,使用加法背包的公钥加密,使用紧凑背包的公钥加密,使用二次背包即矩阵覆盖的公钥加密,使用模背包的公钥加密,使用丢翻图方程的公钥密码等.背包型公钥加密由于其加解速度快而备受关注,然而,现有的背包型公钥密码几乎都被证明是不安全的.陷门背包的设计思想是从一个简单的背包问题出发来进行构造:把易解的背包问题伪装成一个看似困难的背包问题,这易伪装的方法就是陷门信息.合法的接受者Alice由于掌握了陷门信息因而能够把该问题恢复成一个易解背包问题,通过求解该易解背包问题,Alice能够重构明文,而对于非法的接受者Eve来说,他从密文恢复明文就意味着求解一个困难的背包问题.2 背包公钥加密算法的数学理论2.1 素数与因式分解定义1:如果一个自然数m可以被另一个自然数n除尽,则称m整除n,记为:n|m.定义2:除1外,只能被1和其本身整除的自然数称为素数,不是1,且非素数的正整数称为合数.2.2 欧几里德算法2.2.1欧几里德算法的概述欧几里德(Euclid)算法是数论中的一个基本技术,是求两个正整数的最大公因子的简化过程。
而推广的欧几里德算法不仅可求两个正整数的最大公因子,而且当两个正整数互素时,还可以求出一个数关于另一个数的乘法逆元。
欧几里德算法是基于下面的一个基本理论:引理:对于任意的非负整数a和正整数b,有gcd(a,b)=gcd(b,a mod b)。
证明:b是正整数,因此可将a表示为a=kb+r,a mod b=r,其中k为一整数,所以有a mod b=a-kb.设d是的a,b的公因子,即d|a和d|b,所以d|kb。
由d|a和d|kb得d|(a mod b),因此d 是b和a mod b的公因子。
所以得出a,b的公因子集合与的b,a mod b公因子集合相等,两个集合的最大值也相等。
2.2.2欧几里得算法设计欧几里算法设计如下:由于gcd(a,b)=gcd(|a|,|b|),且假定算法中输入的两个正整数分别为f,d 且f>d。
欧几里德算法如下:int Euclid(int f, int d){int x=f; int y=d; int r;while(y!=0 || y!=1){if(y==0) then return x=gcd(f,d);if(y==1) then return y=gcd(f,d);r=x mod y;x=y;y=r;}}其中函数gcd是求两正整数的最大公因子。
设输入的两正整数为a,b,算法如下:int gcd(int a,int b){int m,n,k;if(a==b) return a;else if(a>b) return gcd (a-b,b);else return gcd (a,b-a);}2.3 求逆元2.3.1相关概念及定理乘法逆元定义:如果gcd(a,b)=1,则若b在mod a下有乘法逆元(不妨设b<a),即存在一数值x(x<a),使得b *x=1mod a 恒成立。
此时即有x为b在mod a下的逆元。
将上述推广到欧几里德算法有先求出gcd(a,b),当gcd(a,b)=1时,则可以返回b的逆元。
2.3.2模逆算法由推广的欧几里德算法,有类C加以实现,求乘法逆元:Extended Euclid(int f , int d){int x1=1,x2=0,x3=f;int y1=0,y2=1,y3=d;int t1,t2,t3;int q;while(y3!=0||y3!=1){if (y3==0) x3=gcd(f,d); return 0;if (y3==1) y3=gcd(f,d); return y2;q=x3/y3;t1=x1-q*y1;t2=x2-q*y2;t3=x3-q*y3;x1=y1;x2=y2;x3=y3;y1=t1;y2=t2;y3=t3;}}据以上过程,不难给出模逆算法的流程图:3 背包公钥加密算法背包问题也称为子集和问题,已证明是一个NP完全问题,没有有效的算法.1979年,R.Schroeppel和A.Shamir提出了一种求解一般背包问题的算法,算法的时间复杂性为O(2n/2),空间复杂性为O(2n/4).一般情况下,问题不能在多项式时间内来求解,但是,在某些特殊情况下,仍然可能在多项式时间内求解。
3.1 背包问题的引入背包问题:可通俗的举例描述为:设有物件的重量分别为:1,2,4,8,16,32kg,背包的载重为23kg,问背包中载有哪几件物品,这是一个易解得背包问题,由二进制表示式:23=1+2+4+16,立即可知,背包载的重量分别为:1,2,4,16kg物品。
一般的背包问题的数学描述为:给定的背包向量a=(a1,a2,a3,a4,...,an),背包载重重量S,求向量X=(x1,x2,...xn)使得S =a1*x1+a2*x2+a3*x3+...+an*xn问方程是否有二进制解xi=0或1(其中i为自然数:1,2,3,...,n)如有二进制解,则求其解.对于某些特殊的背包问题很容易解决,如上述的例子是递增背包问题,ai>∑aj,简称易解背包问题,若ai是随机性分布的背包问题,则很难解决,称为难背包问题。
3.2易解背包问题超递增背包问题是一个易解得背包问题,假设已知ai (其中有i为1,2,3,4,...,n),并且有a>∑aj。
为了满足低密度子集和攻击的条件我们令一横不等式:k^n> ai,其中k表示进制,即表示k进制,此处我们置k恒为2,即在本文中恒用二进制。
已知S为背包容积,对A从右向左检查每一元素,以确定是否在解中。
若s>=an,则an 在解中,令xn=1,若s<an ,则an 不在解中xn=0。
下面令:S S<an S=S-an S>=an 对an-1重复上述过程,一直下去,知道检查出ai 是否在解中。
检查结束后得到x=(x1,x2,x3,...xn),即为密文.3.3 MH 法及简单背包密码算法的改进美国斯坦福大学的R.C.Merkle 和M.E.Hellman 在1978年提出了一个背包陷门背包公开密钥的方法,简称为MH 法。
MH 法的基本思想是先选择一个简易的背包,然后选择了陷门信息,使易解得背包转为难解背包问题,如果知道了陷门信息,这难解背包又成为易解背包问题,因此MH法又称为陷门背包密码方法。
陷门背包的设计思想几乎总是从一个简单的背包问题出发来进行构造:把易解的背包问题伪装成一个看似困难的背包问题,这一伪装的方法就是陷门信息。
合法的接收者Alice 由于掌握了陷门信息因而能够把该问题恢复成一个易解背包问题,通过求解该易解背包问题,Alice 能够重构明文;而对于非法的接收者Eve 来说,他从密文恢复明文就意味着求解一个困难的背包问题。
首先,建立陷门背包(1) 选择简单超递增背包序列向量 a=(a1,a2,a3,...,an),构成一个易解得背包:求得二进制解集,即xi 取0或1,使得对给的S>0,有等式S =a1*x1+a2*x2+a3*x3+...+an*xn ,其中S 是明文,例如选择 a=(171,196 ,457,1191,2410)。