1、本科生必修课本科生必修课 Matlab实验报告实验报告报告题目: RSA 加密工具的开发与研究 院 系: 实验学院 通信及电子信息工程 系 班 级: 实验二班(0636102) RSA 加密工具的开发与研究摘要: 本文详细介绍了目前行业中应用最为广泛的加密算法RSA 算法的历史背景,主要学术人物及所作工作和重要成果。对我们所开发的加密解密系统进行了详细的说明,附有运行实例图片,还分享了开发过程中的一些心得!关键词:Matlab 加密系统 RSA 一 综述1 背景RSA 算法是迄今为止理论上最为成熟、完善的公钥密码体制,他广泛应用于网络、银行系统、军事情报等许多领域。一个以 RSA 加密算法为业
2、务的公司他的市值就可以达到 5 亿美元。他极大的保证了我们的交易的安全性,一组以RSA 算法产生的密码是需要当前世界上所有电脑联机不断的工作 25 年才能够破解的,这个足以说明他的价值之大,用处之广泛。有一组资料说,以 RSA 加密算法进行的加密软件他的下载和使用量远远超过了 WINDOWS 软件、IE 浏览器等等著名软件。这个是进入未来网络生活中不可缺少的工具。1978 年就出现了这种算法,它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和 Leonard Adleman。计算两个大的素数
3、 p、q (可能约为 或更大)的乘积不难,但是将一个801大的整数(约为 )分解为其素数因子的乘积几乎是不可能的。RSA 体制的160三位发明者曾以两个素数相乘得到一个包含 129 位的数字 n,并用此方法将一段文字加密,于 1977 年发表在科学的美国人杂志上,悬赏 100 美元请求破译,他们预计破译这一密码需时四亿亿年。然而,这一工作尽管不易但并非如此困难,在贝尔公司的一位科研人员协作之下,利用因特网,五大洲 600 多人使用 1600 多台计算机,历时 8 个月,于 1994 年破译,破译明文是:“这些魔文是容易受惊的鱼鹰。 ”这一难题的破译,并不意味着 RSA 体制的实效,他只告诉我们
4、应该选取更大的 n。但想要获得很大的素数并不像想象的那么简单。尽管人类穷尽心智并借助于高速电子计算机不断寻找到一个又一个世界上最大的素数,1998 年的纪录是,2001 年的纪录是 ,写成十进制数有 400 万位,但从实30217-1346972-用角度这远远不够,目前似还没有给出 500bit 到 1000bit 的素数表;同时,尽管数论的研究成果汗牛充栋,但对于大于 1 的整数 n,给出 n 为素数的充分必要条件的定理屈指可数,他们是:(1) Wilson 定理及其推广:N 为素数的充分必要条件是:n|(n-1)!+1 ,k,n 1|(1)!()!()kknk(2) Boris stech
5、in 定理设#A 表示集合 A 元素的个数,S(n)= #m;2=m=n,m-1|n(m-1)/mn-1 为素数的充分必要条件是 S(n)=d(n) ,这里 d(n)表示 n 的因子个数n+1,n-1 同为素数(即为孪生素数)的充分必要条件是:S(n)+S (n+1)=2d(n)上述两个重要定理虽然给出了作为素数的判断准则,但是编成算法去判断一个数是否为素数,算法确是指数时间。除非应用于诸如“核武器”等特殊领域 n的素数性质一定要证明,才可能动用庞大的计算机资源,以 Wilson 定理为基本工具去验证其素性。比较常用的技术是素性检测技术(是否为素数的测试) 。其中用到伪素数的概念(为素数是指具
6、有素数某些性质的整数,可以使素数,也可以使合数)2 RSA 密的原理码利用当 n 为素数时,如 a 与 n 互素,即由费马(Fermat)定理:,n-1 可表示为 ,其中 2 不整除 L,将两端逐次1(mod)ak-1=2L开方, 研究 、 、(mod)n(n-)/ (mod)n2(n-1)/a可能上述 k 个值非 1,第一个值不等于 1 的数必等于-()k(n-1)/21,因为 n 为素数时, 。21()xRSA 加密及解密过程的实现:仅有两个解,也即仅为 1,-1 的平方数符合摸 n 为一,但有这种性质的整数 n 不一定为素数(即上述结论是必要条件而非充分条件) 1 生成两个大素数 p、q
7、 2 n=p*q , =(p-1)(q-1)n( ) 3 选取随机数 e 使得 1e 而且 gcd(e, )=1n( ) n( ) 4 计算 d 1MOD( ) 5 公钥为( n,e) ,密钥为(n ,d)加密时首先将明文比特串分组,使得每个分组对应的十进制数 n,即分组长度小于 ,然后对每个明文分组 m,做加密运算:2logncemMOD对密文分组的解密运算为ndRSA 的安全性是基于分解大整数的困难性假定,之所以这样假定是因为至今还未能证明分解大整数就是 NP 问题,也许有尚未发现的多项式时间分解算法。如果 RSA 的模数 n 被成功地分解为两个大素数 pq,即立即获得=(p-1) (q-
8、1) ,从而能够确定 e 模 的乘法逆元 d,因此攻击成功。n( ) n( )对于大整数的威胁除了人类的计算能力外,还有来自分解算法的进一步改进。分解算法过去都采用二次筛选法,如对 RSA-129 的分解。而对 RSA-130的分解则采用了一个新的算法,称为推广的数域筛选法,该算法在 RSA-130 时所作的计算比分解 RSA-129 多 10%。将来也可能有更好的分解算法,因此在使用 RSA 算法时对其密钥的选取要特别注意其大小。估计在未来一段比较长的时期,密钥长度介于 1024 比特至 2048 比特之间的 RSA 是安全的。二 在 RSA 体制中用到的群论知识 若 p,q 为相异素数,
9、n=p*q,整数 e 与 互素,另一整数 d 与 e 满足n( )ed=1( )MOD( )(MOD n)E,:enx是从 到自身的一个一一映射,其逆映射为0,12.nz(MOD n)Ed,:dnx 在加密和解密运算中都用到了以下计算公式:MOD(a*b,n)=MOD(a,n)*MOD(b, n)MOD n这个公式可以用来解决在编写加密和解密运算中的溢出问题,同时也提高了计算效率。事实上,在加密和解密算法中用这种及时求模的算法是十分必要的,因为 n 当然是越大越好,e、d 也可能上百位或上千位,如果直接计算 Me,或Md,很容易出错,而且会产生溢出等一系列错误。三 形统优点及使用方法的详尽说明
10、此 RSA 加密程序可实现句子的加密和解密功能,该系统的优点在于:1 每次点击“进入”按钮,后台都回随机产生不同的 p、q、e、d,这保证了每次加密的独立安全性!2 在进入界面后,口以重复进行语句加密、解密!3 本系统采用管理员验证制度,只有管理员才能获得密钥,其他人无法获取,增加了保密性!该系统功能简介:1 加密:在“请输入加密内容”方框中输入加密内容,然后按下“加密”按钮,会在“加密结果”方框中显示加密后的数字。2 获取密钥:根据界面的引导提示令,在口令框中输入管理员口令,如果正确,则可获得密钥,用于解密;如果错误,则会看到错误的提示,可以重复输入,直至验证通过方可获得密钥。3 解密:在“
11、请输入解密内容”方框中输入要解密的内容,并输入“密钥”然后按下“解密”按钮,会在“解密结果”方框中显示解密后内容,即原来在加密方框中输入的内容。4 退出:按“退出”按钮可以退出该界面。四 程序运行实例及运行结果分析1 系统封面,有帮助向导和进入向导。2 点击“帮助”后的界面。3 加密解密界面:4 输入“Hello , Math world!”点击“加密”钮后,显示出加密结果和公钥:5 输入错误的口令后,点击“获取密钥” ,显示“您的口令是错误的”:6 输入正确的口令后,才能得到“密钥”:(这里初始系统口令可任意设置!)7 将“密文”输入到指定框中,如果输入的“密钥”是错的,那么将得到“您得密钥
12、是错的,无法解密”的提示: 8 将“密文”输入到指定框中,再输入“密钥” ,点击“解密” ,即可在下面看到经解密后的内容,即原文!五 每部分工作的主要完成人资料的查找: 田野 孙向霞加密和解密功能及其它函数的实现: 田野界面的制作: 田野 孙向霞报告的撰写: 田野, 孙向霞六 对数学实验课程的意见及建议这门课程让我在遇到现实的问题时,学会了如何转化,用什么方法将其转化为数学问题进行研究,即数学建模。并且对数学在实际工作和工程中的应用有了更近一步的体会。通过学习,我对“线性代数” , “高等数学”和“ 概率统计”的知识掌握得更牢固;同时也让我了解到在计算机时代如何高效率地解决问题,寻求最优方法,
13、数学软件是很好的选择。并且初步掌握了 Matlab,对我以后科研学习都会有巨大的帮助。 ”这门课让我们积极发挥主观能动性,因为课时少,任务多,所以不得不在课外自己找书看,找计算机练习,培养了我们的综合应用能力,独立思考能力以及创造力。老师应该给同学更多的时间,在做大作业的时候,我有这种感触,时间根本不够用,只能完成书本上所留的问题,没有时间进行更多的研究和创新,如果时间再充裕些,我们可能有更大的发挥!如果条件允许的话希望能够增加教学课时及实验课时,这样各部分的内容能够学得更深更透。在上实验课时能有助教给予适当的指导会使做实验的效率更高。希望课堂气氛能够更加活跃,增加师生互动。如果有条件的话能在机房上课效果会更好。参考资料:1 数学实验 焦光虹 科学出版社2 密码学导引 (美)Paul Garrett3 密码学概论 (美)Wade Trappe Lswrence C.Washington4 现代密码学理论与实践 (英) Wendo Mao4现代密码学 杨波5应用密码学 孙淑玲6现代密码学与金融信息安全技术 王泽辉最后,谢谢老师,您辛苦了!