RSA算法简述

RSA算法简述52tangzongb+TR/9sbreGJhbKT5U5rQCTUebfRngB0uhNMnvMClf0f/IpPTsM5+7zWJyT9drzVKzV4oR0J8lyMSWepKvv3BR/3Ab6vC8dmo7NDbzuDtLaDLYhYG+bggQNVvuA5C3TolntxdL4+mGZwfd86WoznJM+Y5TO/0C5MSxvaAMTMZuga7yyBKTH4Wl+7GFHDDZqAXmvPHW/Dz0i45vlToz/+E/RnznY5dBhkw3nnNoNsJIutAUDm4T18J

大家好,又见面了,我是你们的朋友全栈君。

简述

RSA公开密钥密码体制是一种使用不同的加密密钥与解密密钥,“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制 [2] 。
在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的。加密算法E和解密算法D也都是公开的。虽然解密密钥SK是由公开密钥PK决定的,但却不能根据PK计算出SK 。

正是基于这种理论,1978年出现了著名的RSA算法,它通常是先生成一对RSA密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册。为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。这就使加密的计算量很大。为减少计算量,在传送信息时,常采用传统加密方法与公开密钥加密方法相结合的方式,即信息采用改进的DES或IDEA对话密钥加密,然后使用RSA密钥加密对话密钥和信息摘要。对方收到信息后,用不同的密钥解密并可核对信息摘要 。

RSA是被研究得最广泛的公钥算法,从提出到现在已近三十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。1983年麻省理工学院在美国为RSA算法申请了专利 [3] 。
RSA允许你选择公钥的大小。512位的密钥被视为不安全的;768位的密钥不用担心受到除了国家安全管理(NSA)外的其他事物的危害;1024位的密钥几乎是安全的。RSA在一些主要产品内部都有嵌入,像 Windows、网景 Navigator、 Quicken和 Lotus Notes 。

安全性编辑

RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,也并没有从理论上证明破译。RSA的难度与大数分解难度等价。因为没有证明激活成功教程RSA就一定需要做大数分解。假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法,即RSA的重大缺陷是无法从理论上把握它的保密性能如何,而且密码学界多数人士倾向于因子分解不是NPC问题 。

目前,RSA的一些变种算法已被证明等价于大数分解。不管怎样,分解n是最显然的攻击方法。现在,人们已能分解140多个十进制位的大素数。因此,模数n必须选大些,视具体适用情况而定 。
RSA算法的保密强度随其密钥的长度增加而增强。但是,密钥越长,其加解密所耗用的时间也越长。因此,要根据所保护信息的敏感程度与攻击者激活成功教程所要花费的代价值不值得以及系统所要求的反应时间来综合考虑,尤其对于商业信息领域更是如此 。

52tangzong Pz8vVBFCMUbhm50VQK8sokGldOhIB08oxAhF/gIHgOZWj4N+NkKxDbyaDYwhCKulxaeeJxh6cgen0NWwqzM2ThND4PWEXaQUfG0EO4Jp8/WrMioMQZ+b/hi8BQzZqrumyUDo0AqfhgFWIprn1FkrJyGEuNtSJKUG8abXa+e1hW17NvTyWj+BSn/Qv+LSaKEuwbL0oTwOFPVMj2QslAc/LGOMBS7h+uwe/zyLKp1yaalkVOV/7k4SY/t7HmJE/ie/5XOj7NmnNY9oXApyyTJYxiKuA6LlU7eBbu6GEaztdTqJH8gamtmVg8XipFVanSD4nifaMlUdD6BRfQlFRA545g==
52tangzong

算法攻击编辑

迄今为止,对RSA的攻击已经很多,但都没有对它构成真正的威胁。在这里,我们讨论一些典型的攻击方法 。

RSA的选择密码攻击

RSA在选择密码攻击面前显得很脆弱。一般攻击者是将某一信息进行下伪装,让拥有私钥的实体签名;然后,经过计算就可得到它所想要的信息。实际上,攻击利用的都是同一个弱点,即存在这样一个事实:乘幂保留了输入的乘法结构。前面已经提到,这个固有的问题来自于公钥密码系统的最基本的特征,即每个人都能使用公钥加密信息。从算法上无法解决这一问题,改进措施有两条:是采用好的公钥协议保证工作过程中实体不对其他实体任意产生的信息解密,不对自己一无所知的信息签名;二是决不对陌生人送来的随机文档签名,或签名时首先对文档作Hash处理,或同时使用不同的签名算法 [8] 。

RSA的小指数攻击

当公钥e取较小的值,虽然会使加密变得易于实现,速度有所提高,但这样做也是不安全的。最简单的办法就是e和d都取较大的值 。
因为密钥的产生受素数产生技术的限制,所以也有它的局限性 。
(1)密钥的产生受素数产生技术的限制,因而难以做到一次一密 ;
(2)分组长度太大,为保证安全性,n至少也要600比特以上,使运算代价很高,尤其是速度较慢,比对称密码算法慢几个数量级;随着大整数素因数分解算法的改进和计算机计算能力的提高,对n的长度在不断增加,不利于实现数据格式的标准化 。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/150320.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java小型图书馆管理系统

    java小型图书馆管理系统根据需求,建立了一个BookMgr类,该类为实现小型图书馆的各个需求。为了和用户有一个良好的交互,根据需求且满足要求中的隐藏条件,先命名了交互的菜单函数printMenu1(),代码如下:publicvoidprintMenu1(){          System.out.println(“欢迎使用图书馆管理系统”);          Syst

    2022年7月8日
    21
  • 靠!我被项目经理和同事嘲笑了,因为不会远程debug调试…「建议收藏」

    大家好,我是曹尼玛,刚从培训机构毕业,去一家单位上班一周了…这一周项目经理让我熟悉了项目业务,架构和设计,不算难,凭借我培训机构第一名的成绩,还是很顺溜。今天项目经理把同事们叫到一起,说线上438×6项目出现奇葩问题,但是开发环境初步测试没问题,需要配合测试部的小姐姐们在测试环境远程debug跟踪下,排查下问题,以及正式环境日志也会提供,重现下问题,解决下bug;项目经理见我这几天比较悠闲所以就对我说,“曹尼玛,这个小任务就交给你了”“我,我,我,我不会远程debug,没听过什么是远程d.

    2022年4月6日
    46
  • 计算机二级python备考经验_计算机基础知识点

    计算机二级python备考经验_计算机基础知识点计算机二级于18年新增了Python栏目,我正好在上学期自学了Python语言。说实话,Python语言正的简洁强大,也是因为它让我改变了对编程的理解,当然还得感谢一位老师:北京理工的嵩天老师,他的网课很nice,也是他的讲解让我喜欢上了Python,喜欢上了编程,虽然之前有学过C/C++,web设计等语言,但有许多还是不够理解的。下面介绍正题:二级Python整体来说难度不大:20道选择…

    2022年10月8日
    0
  • js文件上传的几种方式_java执行js文件

    js文件上传的几种方式_java执行js文件工作中用到了Ajax上传文件的情景之前自己不知道ajax可以传通过文档发现XHR2.0已经支持了但需要集合ForData目录结构test一级files二级index.html二级saveFiles.php二级示例(根据上传文件的进度生成进度条)代码如下HTML部分

    2025年7月4日
    0
  • Java中的substring截取字符串方法「建议收藏」

    Java中的substring截取字符串方法「建议收藏」1.在处理字符串的过程中有很多情况下会遇到需要截取字符串的情况,这个时候使用Java中提供的substring方法来截取就非常方便了2.其中比较经常使用到的方法有两个:①publicStringsubstring(intbeginIndex)这个方法截取的字符串是从索引beginIndex开始的,到整个字符串的末尾,例如:字符串Strings=”abcdef”;调…

    2022年5月24日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号