背包密码体制

合集下载

背包密码体制

背包密码体制

背包密码体制作者: 指导老师:摘要背包公钥加密是第一个具体实现了的公钥加密的方案.本文主要分析背包公钥加密算法的数学理论基础,描述背包公钥加密算法的体制,讨论背包公钥加密算法的加密算法与解密算法的过程和原理。

采用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个 物 品 中 的几 件 放入 一 个 背包 中使 之等 于一 个 给定 的重量 £ ?

这个 问题也就是求 = 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矩阵覆盖密码体制

基于背包问题的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

现代密码学 第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~。

背包原理

背包原理
超递增序列 :正整数序列 a1,a2....叫超递增序列,如果ai??aj,i?2,3,....
i?1i?1
这一定义对有限序列也适用。通俗地说,每一项都大于它前面各项之和的正整数序列叫超递增序列。
对于超递增序列A而言,如果给定了一个正整数a.是很容易判断a是否能表示为A中的若 干个项之和的。比如序列A ,a=52。因为n&gt;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部分]公钥密码及背包公钥密码算法
质量为70kg的一个背包,质量序列为: 2,3,6,13,27,52。 解:(1)最大的质量为52kg,小于70kg,所以52kg在背包中。 (2)用70kg减掉52kg剩18kg,下一个质量27kg比18kg大, 所以27kg不在背包中。 (3)再下一个质量13kg小于18kg,所以13kg在背包中。 (4)从18kg中减去13kg剩5kg,再下一个质量6kg比5kg大, 所以6kg不在背包中。 (5)继续这个过程将得出2kg和3kg都在背包中。 因此,我们得到的解是110101。
如果总质量大于这个数则它在背包中用背包质量减去这个数转向考查序列下一个最大的数重复直到结束如果总质量变为零那么有一个解否则无解
第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]。

两种背包型的公钥密码算法的安全性分析

两种背包型的公钥密码算法的安全性分析
析 cn−3,cn−4,… 的取值。实验数据表明只需分析几个
就可以求出并验证正确的 M 。知道 M 后,计算
w = bn 21−n mod M 得到 w 。从而破解了整个密码算
法。
设计者提出为了提高安全性,先对公钥 B 进行
随机置换后公开。设bi' = π(bi ) 是置换后的公钥,攻 击者只需对公钥集合 {bi' } 搜索O(n2) 次就可以找到 对应的bn 和bn−1 ,然后按照前面所述方法进行分析。
设计与分析抵抗 Shamir 攻击和低密度攻击的 背包型密码体制成为密码学家研究背包密码体制的 的主要目的。近年来,出现了许多抵抗 Shamir 攻击 和低密度攻击新的背包体制的设计与分析的文
2009-10-19 收到,2010-03-03 改回 国家重点基础研究发展计划(2007CB807903)和国家自然科学基金 (60525201)资助课题 通信作者:韩立东 hanlidong@
引理 1 设 A = (a1, ,an ) 为背包向量,记d1 = a1 ,di = gcd(ai ,di−1) ,dn = gcd(an ,dn−1) = 1 ,D =
(d1, ,dn = 1) 。如果 k ≤ di−1 /di ,i = 2, 义背包问题:
∑n i =1
ai
xi
= s,
0 ≤ xi ≤ k −1
250100)
摘 要:背包型公钥密码体制是几个最早的公钥密码体制之一,分析其安全性十分重要。该文对两种抵抗 Shamir 攻击和低密度攻击的背包型公钥密码体制进行了安全性分析,提出一种新的攻击方法,指出可以利用多项式时间算
法以很大的概率找到私钥,从而破解了它们。
关键词:公钥密码体制;陷门背包;密码分析

一种基于RSA算法的背包密码体制

一种基于RSA算法的背包密码体制

一种基于RSA算法的背包密码体制
王瑜;李天增;付磊
【期刊名称】《周口师范学院学报》
【年(卷),期】2009(026)005
【摘要】详述了背包密码体制,并提出了一种基于大数难解问题的背包公钥密码体制.它用RSA算法生成RSA公钥和私钥,用RSA公钥把背包公钥密码体制的原始公钥变换成普通的背包序列作为背包公钥公布,构造出了新背包公钥密码体制.该密码体制增强了系统的安全性,提高了工作效率.
【总页数】3页(P99-101)
【作者】王瑜;李天增;付磊
【作者单位】四川理工学院,理学院,四川,自贡,643000;四川理工学院,理学院,四川,自贡,643000;四川理工学院,理学院,四川,自贡,643000
【正文语种】中文
【中图分类】TP309
【相关文献】
1.公开密钥密码体制RSA算法的一种实现 [J], 张海蓉;黄艳新;付燕宁;王明德
2.一种基于大数难解问题的背包公钥密码体制 [J], 李沛;王天芹;韩松
3.一种确定的背包公钥密码体制的破译方法 [J], 陈成钢
4.一种新的背包公钥密码体制 [J], 王衍波
5.一种Fibonacci型背包公钥密码体制 [J], 韩桂琴;王永茂
因版权原因,仅展示原文概要,查看原文内容请购买。

背包公钥密码系统

背包公钥密码系统

Merkle-Hellman背包公钥算法
接收方: 得到密文732后,乘以=28mod 523得: c=732 28=20496=99 mod 523 解超递增序列背包问题:
m1 3m2 7 m3 13m4 26m5 65m6 119m7 267 m8 c=99 m1 m3 m5 m6 1 m2 m4 m6 m7 0 即得明文: 10101100
Merkle-Hellman背包公钥算法
变换后得到的序列 (467,355,131,318,113, 21,135, 215) 作为公钥予以公布
=28作为私钥保密
Merkle-Hellman背包公钥算法
发送方: 对于明文m=10101100 加密得到密文: c=a1 a3 a5 a6 732
信息安全基础理论体系
Introduction of Information Security Fundamental Theory Architecture
电子科技大学计算机科学与工程学院 School of Computer Science And Technology, UESTC 2010
背包公钥密码系统
分别加密得到密文: c1=28+11+8+51+43=141 c2=28+32+71+47=198
Merkle-Hellman背包公钥算法
问题:
如何解密?
Merkle-Hellman背包公钥算法

MH背包公钥算法是由超递增序列进行变换 得到得:
(1)设序列b1 ,b2 ,...,bn是超递增序列: bi b j (i 2,3,..., n)
背包问题

背包问题与公开密钥

背包问题与公开密钥

数学建模普及讲座背包问题与公开密钥100037 首都师范大学 周春荔 宁国然 例1 给出如下10个自然数,6907,73,769, 3043,19,1480,373,41321,21768,178.请你说出25758是其中哪几个数之和?用观察、心算凑数的方法很容易找出问题的答案:21768+3043+769+178之和恰等于25758.这是第五届华罗庚金杯少年数学邀请赛的一道口试题.是由中国科学技术大学研究生院的裴定一教授提供的.他说:这个问题的实际背景是“背包问题”.背包问题在公开密钥密码体制中是很有用的.那么,什么是背包问题呢?我们先从一个更为简单的实际例子谈起.例2 有6块矿石标本和一个背包,这6件标本的重量分别是1kg、3kg、5kg、10kg、21kg、41kg.背包最多能装总重量为35kg的标本,你能从中选出若干件标本恰装满总重量可容35kg的背包吗?因为标本个数不多,只须观察就可找到答案:取1kg、3kg、10kg、21kg四块标本装入背包就恰好满足要求.显然,如果背包总容量可装36kg的标本,要从其中找出若干块标本,使其总重量恰为36kg,是办不到的.就一般情况来说,问题可以如下提出:一只背包最多能装总重量为M kg的标本,现共有n件标本,每件的重量均为正整数kg,它们是a1, a2,…,a n(kg),而且a1+a2+…+a n>M.试问:能否从n件标本中选出若干件,使得被选出的标本的总重量恰为M kg?如果被选出的标本记为1,未被选中的记为0,也就相当于判定是否存在取值为0,1的二值数组(m1, m2,…,m n),使得 m1a1+m2a2+…+m n a n=M.因此,上述背包问题的数学模型是:若n个正整数a1,a2,…,a n和另一已知正整数M,满足a1+a2+…+a n>M.问:是否存在一个二值数组(m1,m2,…,m n)(其中m i=0或1,i=1,2,…,n),使得恰有m1a1+m2a2+…+m n a n=M?背包问题可能有解,也可能无解.虽然这个问题看来似乎很简单,可是当n很大时,(m1,m2,…,m n)的各种选法有2n个,要确定是否有解,一般必需检验每种(m1,m2,…,m n)所取的对应值m1a1+m2a2+…+m n a n是否等于M.而2n是随n指数增大的,当n相当大时,就是用最快的电子计算机去算也难以完成!于是,人们选择了背包问题中的一种特殊情况加以研究,也就是当所给的n个正整数a1,a2,…,a n满足条件(3): a1<a2,a1+a2<a3,a1+a2+a3<a4,…,a1+a2+…+a n-1<a n 时,有一种快速寻求背包问题解答的程序.于是人们把满足条件(3)的背包问题,称为简单背包问题.简单背包问题的解法程序是:设所给n个正整数不妨由小到大排序就是a1<a2<a3<…<a n-1<a n.对所给正整数M,先求适合a k≤M<a k+1的最大下标k1,再求适合条件a k2≤M-a k1<a k2+1的最大下标k2,如此继续下去,通过有限步之后,或者找到一个k l,使a kl=M-a k1-a k2-…-a kl-1,或者没有这样的k l.如果是前者,问题有解,取m k1=m k2=…=m kl=1,其余的m k=0,这就找到了二值数组(m1,m2,…,m n).如果是后者,则问题无解.按上述求解程序我们先解例2.例2中,a1=1,a2=3,a3=5,a4=10,a5=21, a6=41,显然 a1=1<3=a2, a1+a2=1+3=4<5=a3, a1+a2+a3=1+3+5=9<10=a4, a1+a2+a3+a4=1+3+5+10=19<21=a5, a1+a2+a3+a4+a5=1+3+5+10+21=40<41=a6.可见例2是个简单背包问题.对于所给M=35kg,有 21<35<41.又 35-21=14,而10<14<21 ] 10<35-21<21.又 35-21-10=4,而62中学数学 2000年第1期3<4<5 ] 3<35-21-10<5.但 35-21-10-3=1=a1,所以 35=1+3+10+21.这样就找到了二元数组(1,1,0,1,1,0).使得 1×1+1×3+0×5+1×10+1×21+0×41=35.对于例1,我们先将10个自然数由小到大排列,19, (a1)73,(a2)178,(a3)373,(a4)769,(a5)1480,(a6)3043,(a7)6907,(a8)21768, (a9)41321 (a10)显然19<73,19+73=92<178,19+73+178=270<373,19+73+178+373=643<769,19+73+178+373+769=1412<1480,…, 19+73+…+6907+21768=34610<41321.例1也是个简单背包问题.可以快速求解:M=25758.显然a9=21768<25758<41321=a10.而 25758-21768=3990>3043=a7,而 25758-21768-3043=947>769=a5,而 25758-21768-3043-769=178=a3,∴ 25758=178+769+3043+21768.也就是找到了二元数组(0,0,1,0,1,0,1,0,1,0),使得 0×19+0×73+1×178+0×373+ 1×769+0×1480+1×3043+0×6907+ 1×21768+0×41321=25758.背包问题如何在公开密钥密码通讯体制中应用呢?设通讯的明文是一个长度为n的二元数组(即不是英文字母,而是已翻译成只有0,1二值的数码序列).这个n一般是很大的,少则上百,多则上万.太多时可以分段处理:以公开密钥a的长度为单位分段拍发,我们记为 P=(p1,p2,…,p n),其中p i=0或1.由于简单背包问题易解,而普通背包问题当n相当大时用高速的电子计算机解起来也很困难,很费时间,只要在保密时间段内别人解不出来,这样公开密钥仍能保证电文的机密性.所以只要我们能将一个简单的背包问题通过一种变换转换为一种非简单背包问题,将非简单背包问题的序列n个数公布为公开密钥,发报方从公开密钥发报,收报方收到后再将它转换为自己掌握的那个简单背包问题求解,即可翻译出明文.我们以一个简单例子说明这个过程.例3 设X是发报方,Y是收报方,Y方取一个简单的背包问题数列B=(1,3,5,10,21,41).由于1+3+5+10+21+41=81,Y可取一个大于81的自然数为u,比如取u=89.另取一个小于89且与89互质的自然数w,比如取w=9.u=89,w=9作为绝对机密,Y方记在心中.这时,通过寻求一个小于89的自然数w-1,使得w-1×w被89除的余数恰为1,容易求得w-1=10. (因为10×9=90,恰被89除余1)写出 (1, 3, 5, 10, 21, 41)乘以w(1×9,3×9,5×9,10×9,21×9,41×9),即 (9,27,45,90,189,369).取被89除的余数,可得n元数组AA=(9,27,45,1,11,13).这时A是一个非简单的背包问题.Y将A=(9,27,45,1,11,13)作公开密钥公布, X收到这个公开密钥,就可以向Y发信息了.比如X想向Y发送的信息译为二元0,1数组是密文P=(1,1,0,1,0,1).X利用A计算得:1×9+1×27+0×45+1×1+0×11+ 1×13=50.X将50发送给Y,Y收到50后,由w-1×50=10×50=500,而500被89除余55.这时,Y对B=(1,3,5,10,21,41)解M=55时的简单背包问题. b6=41<55, 55-41=14>10=b4, 55-41-10=4>3=b2, 55-41-10-3=1=b1,∴ 55=1+3+10+41=b1+b2+b4+b5.所以(1,1,0,1,0,1)即为所求.这样,Y就知道了X发出的信息P=(1,1,0,1,0,1).例3只是为了说明道理的一个简单模拟例题,一般情况如下:Y取一个简单背包B=(b1,b2,…,b n)作为解密时间,Y设法从B搞出一个非简单背包A=(a1,a2,…,a n)作为公开密钥.其办法是,选取两个整数(w,u)作为解密参数,使b1+b2+…+b n<u,w<u,且(w,u)=1.当然w、u两个参数选定后要严格保密.然后令a i≡w b i(mod u)(i=1,2,…,n),得722000年第1期 中学数学计算机辅助教学《几何画板》辅助轨迹教学的尝试222200 江苏省灌云县中学 李平龙 探索动点的运动规律既是解析几何教学的重点,又是高考考查的热点.然而,传统的“粉笔加黑板”的教学手段,由于难以进行“动态”处理,“动点”只能用黑板上的一个静态的“定点”来表示,导致学生难以形成良好的运动观.加之多数情况下只有在求出动点的轨迹方程后,才能知道轨迹的真实形状,因而学习过程更觉抽象乏味.数学软件《几何画板》中的动画、追踪、轨迹等功能恰好填补了传统教学的空白,为轨迹教学提供了广阔的前景.本文结合实践谈谈其在辅助轨迹教学中的作用.1 发现轨迹形状利用画板创设轨迹发现的情境可有效地化解难点.例1 已知圆x 2+y 2=4与y 轴正半轴交于点A .Q 是圆上的动点,过点A 和点Q 分别作圆的切线,它们相交于点P .试求三角形A PQ 垂心M 的轨迹方程.图1本题条件复杂、关系隐蔽,传统的以静代动教学由于难以使学生看出M 是怎样运动的,因而在解决问题的过程中稍不留意便会误入歧途.然而,利用画板将Q 设置为圆上的动点,M 设置为轨迹跟踪点,便可创设如图1所示的发现情境:启动动画或拖动点Q ,就可发现点M 的运动规律.在CA I 课件的帮助下,“形”已如此简单,那么“数”到底是何种形式?至此,学生兴趣盎然,积极思维、主动探究,发现了多种解题途径.令人赏心悦目的解法是,由OA 平行且等于QM 直接将Q 点上移2个单位便产生M 点的轨迹.优美解得益于画板的直觉形象功能和调整暗示功能,尤其是它能动态地保持“几何关系”.计算机辅助教学在激发学生的学习热情,扭转被动学习的不良习惯,最大限度地挖掘学习潜能方面的功能是不可估量的.此外,利用其辅助教学在突出重点、突破难点上功不可没!笔者曾以1995年全国高考压轴题为例,设计了点动、线动等多种引起轨迹的情境(如图2),引导学生准确地求出了轨迹方程.2 探索轨迹变式对由字母常数作为已知条件的轨迹题,当动点的轨迹方程确定后,其轨迹形状往往随字母常数(实为A =(a 1,a 2,…,a n )是一个非简单背包,这样一个背包体制就完成了.Y 方将A 作公开密钥向世界公布,X 收到后,可依A 向Y 发送信息.设X 发送信息P 给Y ,P =(p 1,p 2,…,p n ).第一步 X 用Y 的公开加密密钥E Y =A =(a 1,a 2,…,a n )进行加密,得密文为 C 是p 1a 1+p 2a 2+…+p n a n .C 是一个位数相当多的正整数.第二步 X 将C 发给Y .第三步 Y 收到C 后,用(w ,u )从C 求出对应的简单背包(b 1,b 2,…,b n )的M 值.设自然数w -1,使得 w -1 w ≡1(mod u ),则 w -1C ≡M (mod u ).这样M 可由C 确定.这时解对M ,(b 1,b 2,…,b n )的简单背包问题,求得二元0,1数组(p 1,p 2,…,p n ),使得p 1b 1+p 2b 2+…+p n b n =M .则 (p 1,p 2,…,p n )就是X 发给Y 的信息明文.由于n 相当大时,就是他方截获密文C ,也知道公开密钥,但要破译密文,即解一个n 非常大的非简单背包问题,则是难以做到的.(收稿日期:1999211210)82中学数学 2000年第1期。

其他公钥密码体制

其他公钥密码体制

背包密码体制
例4 超递增向量A=(2,3,6,13,27,52), s=70,s=52+13+3+2
背包密码体制
已知s为背包容积,对A从右向左检查每一元素, 以确定是否在解中。若s≥an,则an在解中,令 xn=1;若s<an,则an不在解中,令 xn=0。 下面令
s, s an s s an , s an
背包密码体制
设A=(a1,a2,…,an)是由n个不同的正整数 构成的n元组,s是另一已知的正整数。背 包问题就是从A中求出所有的ai,使其和 等于 s。其中A称为背包向量,s是背包的 容积。
背包密码体制
例1:A=(1,5,6,11,14,20),s=26 s=1+11+14=26 s=1+5+20=26 s=6+20=26 s=1+5+6+14=26 …………
背包密码体制
例2:A=(1,5,6,11,14,20), 明文:111001,010110 f(111001)=1+5+6+20=32 f(010110)=5+11+14=30
背包密码体制
定义背包向量A=(a1,a2,…,an)称为超 递增的,如果
a j ai j 2, , n
i 1 j 1
ElGamal
• 准备
– 素数p,Zp*中本原元g,公开参数 – 私钥a,公钥b=ga mod p
• 加密
– 对明文1<=m<=p-1,选随机数k – 密文(c1, c2) c1=gk mod p, c2=mbk mod p k=(gk)a, 关键是 b • 解密 k掩盖, 而 m 被 b – c2 (c1a)-1=mbk ((gk)a)-1 要去掉bk得用到a; =m(ga)k (g-ka) =m mod p

现代密码学 第9讲背包Rabin

现代密码学 第9讲背包Rabin

例题— 例题 解密
超递增背包向量A=(1, 3, 5, 11, 21, 44, 87, 175, 349, 701) 超递增背包向量 k=1590,t=43, gcd(43, 1590)=1 , ,
密文C=( 密文 (2942,3584,903,3326,215,2817,2629,819) , , , , , , , )
2010-10-9 4
例题— 例题 加密
超递增背包向量A=(1, 3, 5, 11, 21, 44, 87, 175, 349, 701) 超递增背包向量 k=1590,t=43, gcd(43, 1590)=1 , , 计算一般背包B=(43, 129, 215, 473, 903, 302, 561, 1165, 计算一般背包 697, 1523)。 。 设待加密的明文是 明文是SAUNA AND HEALTH。 设待加密的明文是 。 P113表4-7转化为数字。 转化为数字。 表 转化为数字 背包向量有10个元素,明文 位二进制一组 位二进制一组; 背包向量有 个元素,明文10位二进制一组; 个元素 如果一个字母对应5个二进制位 个二进制位, 个字母一组。 如果一个字母对应 个二进制位,则2个字母一组。 个字母一组
′ ′ ′ x ≡ ( M 1 M 1 a1 + M 2 M 2 a2 + + M K M k ak ) mod M
对模M有唯一解 对模 有唯一解
2010-10-9
10
当p≡q≡3 mod 4,两个方程 2≡c mod p,x2≡c ≡ ≡ ,两个方程x mod q的平方根都可容易地求出。 的平方根都可容易地求出。 的平方根都可容易地求出 是模p的平方剩余 因c是模 的平方剩余,故 是模 的平方剩余,

Merkle-Hellman背包算法

Merkle-Hellman背包算法

张国良编辑Merkle-Hellman背包算法版本1.01977年,Merkle与Hellman合作设计了使用背包问题实现信息加密的方法。

其工作原理是:假定甲想加密,则先产生一个较易求解的背包问题,并用它的解作为专用密钥;然后从这个问题出发,生成另一个难解的背包问题,并作为公共密钥。

如果乙想向甲发送报文,乙就可以使用难解的背包问题对报文进行加密,由于这个问题十分难解,所以一般没有人能够破译密文;甲收到密文后,可以使用易解的专用密钥解密。

但是,在它发表几年后,就找到了攻破它的方法。

即使如此,它仍然代表着一类很难问题的算法。

分类背包加密分为加法背包和乘法背包。

1、加法背包:我们知道,1<2,1+2<4,1+2+4<8,1+2+4+8<16,……,那么如果我们选择这样一些数,这些数从小到大排列,如果前面所有的数加起来的值总小于后面的数,那么这些数就可以构成一个背包,我们给一个这个背包里面的某些数的和,这个数就是被加密的数,由这个背包组成这个数只有一种组合方式,这个方式就是秘密了,例如给大家一个封包(2,3,6,12,24,48),由这个背包里的某些数构成的数:86,你知道86怎么来的吗?当然,你看着背包里面的内容,可以知道是由2+12+24+48得到的,如果你没有这个背包,而是直接得到这个86,你知道组成这个86的最小的数是多少吗?你无法知道,因为加起来等于86的数非常多:85+1=86,82+2=86等等,你是无法知道的,所以,背包加密非常难破。

2、乘法背包:乘法背包比加法背包更复杂,不仅是运算量大了很多,更重要的是你得到的一个被加密了的数据更大,一般都是上亿的,而且在许多机密的机关里面,背包的数据都不是有这个单位,而是用位。

我们知道,1<2,1+2<3,1*2*3<7,1*2*3*7<43,1*2*3*7*42<1683, 数字的增长还是很快的,之所以复杂,就是因为数字很大啊!背包的特点是:如果背包里面的数据按小到大排列,那么,前面所有数据的乘积小于后面的任何一个元素,这个就是背包的特点,是不是很简单,但是要知道乘积的数字的增长是非常快的!破解方法背包加密是一中相当高级的加密方式,不容易破解,而且还原也相对容易,因此采用这种加密方式加密游戏数据也是非常好的,只要知道背包,就可以轻易算出来。

浅谈背包公钥密码体制全解

浅谈背包公钥密码体制全解
背包密码体制之背包算法
姓名:张全英
学号:20143967
专业:信息与计算科学1班
学院:数学与信息科学
摘要:网络和信息安全正在成为一个国家政治、军事、经济以及社会生活正常运行的基础,它将是一个国家综合实力的重要体现。而密码学是信息安全的核心。公钥密码又是将加密、解密密钥甚至加密、解密函数分开,用户只保留解密密钥,而将加密密钥和加密函数一起公之于众,是密码学的重要组成部分。背包公钥和RSA一样是著名的公钥体制之一,特别是背包公钥的安全基础是背包问题,这是一个NP难问题。虽然在提出不久就遭到破解,但是在提出的背包公钥系统的改进方案中依然有几个被证明是安全的。背包公钥是首个把NP问题用于公钥密码的密码体制,而其他现阶段应用的公钥密码体制都是基于因式分解或离散对数问题的,他们都不是NP问题构造的,因此背包公钥体制的研究是十分有意义的。本文从背包体制的常用攻击方法入手,寻找被破解的原因,并针对这些原因提出了新的构造思路,利用非超递增序列构造背包体制。利用非超递增序列构造背包公钥有2个必须解决的问题是加密结果的不唯一性和解密的困难性。本文对一种同余多模背包序列进行分析,并利用得出的性质构造一种新的L序列,并证明了L序列能解决以上2个问题,并提出了利用L序列构造背包公钥体制的方案。为了加快加解密速度,还提出了模M和W-1的逆向构造算法。然后给出了非超递增背包公钥体制的模拟实现。
显然,对称密码和公钥密码都需要保证密钥的安全,不同之处在于密钥的管理和分发上面。在对称密码中,必须要有一种可靠的手段将加密密钥(同时也是解密密钥)告诉给解密方;而在公钥密码体制中,这是不需要的。解密方只需要保证自己的私钥的保密性即可,对于公钥,无论是对加密方而言还是对密码分析者而言都是公开的,故无需考虑采用可靠的通道进行密码分发。这使得密钥管理和密钥分发的难度大大降低了。

一种Fibonacci型背包公钥密码体制

一种Fibonacci型背包公钥密码体制

一种Fibonacci型背包公钥密码体制
韩桂琴;王永茂
【期刊名称】《东北重型机械学院学报》
【年(卷),期】1995(019)003
【摘要】在Fibonacci型序列的基础上构造了一种背包公钥密码体制。

在对明文进行加密的运算中,除了采用两次模变换之外,又对通常作为密文进行传递的信息做了再次加密。

【总页数】6页(P270-275)
【作者】韩桂琴;王永茂
【作者单位】不详;不详
【正文语种】中文
【中图分类】TN918.1
【相关文献】
1.一种基于大数难解问题的背包公钥密码体制 [J], 李沛;王天芹;韩松
2.高密度背包型公钥密码体制的设计 [J], 王保仓;胡予濮
3.一种确定的背包公钥密码体制的破译方法 [J], 陈成钢
4.一种新的背包公钥密码体制 [J], 王衍波
5.一种级联式背包公钥密码体制 [J], 朱赋;刘凤华
因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)。

相关文档
最新文档