背包密码体制
- 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;
}
}