前言
1) D(E(P))=P
解释是可逆的
2)很难从e推D。
解释钥匙的不对称
3)选择明文攻击不能破解d
知道明文和密文也很难暴力破解D
这三个条件缺一不可,而RSA正是因为这三个条件而被广泛使用。使用起来似乎也很简单:A向B发送需要保密的消息,然后A用B的公钥加密并发送给B,B用自己的私钥解密。条件2表明,即使中间人截获了密文,也不能用B的公钥破解B的私钥,所以信息是安全的。
目前,公钥算法RSA的这三个条件已经足够清晰,可以理解本文。我们(电脑学习微信微信官方账号:jsj_xx)后续会议会有另外一篇文章专门深入讲解RSA。
标志
开始我们虚拟世界的故事。这里每个人都有一张证件(就像我们的身份证一样),上面写着:
关于你自己的所有信息
自己的公钥
发证机构的签名
自己的私钥
A向B发送一个随机字符串,B收到后,用自己的私钥加密字符串,返回给A..a用B的公钥解密,通过判断是否一致来认证B。
模式1的分析,这里B使用B的私钥,相当于使用自己的签名。可以说认证B的目的已经达到了。A从B收到的回复消息肯定是B发的,这是不可否认的。
但是,这个地方可能会受到中间人H的攻击:
A) H向b发送假字符串暴力破解b的私钥,可以回头看看开头提到的公钥算法的条件3。
B)H之后可以发送B此时发送的消息,使用B的签名(使用类似的回放方式),这也是通信中使用随机字符串的原因。毕竟H知道很多明文和它对应的密文(用B的私钥加密),很容易破解B的密钥。
总之,B直接签署别人给他的明文是非常不安全的!
那我们来改进一下。改进的方法是避免B直接处理a发来的消息,先看认证方式2a
2a)B不直接处理A发送的原始随机字符串,而是对字符串进行抽象,用自己的私钥加密(从上面我们知道这是B的签名),然后返回给A,A收到后用B的公钥解密,然后和自己的预期结果(汇总原始字符串后的输出)进行比较,根据结果是否一致对B进行认证。
b直接给别人的消息签名而不是经过摘要处理才签名!相比模式1,中间人只能有你的摘要对应的明文和密文,大大降低了破解B的密钥的可能性!
可以看到,在模式1和模式2a中,A发送给B的消息都是明文。换成加密会更好吗?
2b)A发送一个随机问题(比如1+1)用B的公钥加密,B用自己的私钥解密并计算结果(比如1+1=2),然后用B的私钥加密返回给A..A收到后用B的私钥解密,并根据结果认证B。
确切的模式2b既保证了整个通信过程的加密,又让中间人H无事可做。但我们还要考虑另一个因素,就是RSA加解密时间比较耗时,所以要尽量少用。这样看模式2a比较好,因为
1)摘要的长度比报文的长度小很多,大大降低了加密(或签名)的耗时。
2) RSA加解密使用频率较低。
3)现实中这种场景很常见:信息被广泛披露,需要保证发布机构的真实性。也就是说,认证和加密是两个独立的过程,这里只考虑认证。因此,在不需要加密的情况下,这是一个优势。
既然认证模式2a是一个积极的解决方案,那么我们来仔细看看2a: A到B是明文,B到A是摘要后的加密信息。这不仅使B被认证,也增加了中间人H攻击B私钥的难度。
我们可以这样理解认证:A认证B的方式是看B是否真的使用了B告诉A的公钥!(后面我们会给证书一个理解:证书其实是在这个基础上添加的,这样才能保证B告诉A的公钥确实是B的公钥!)
我们可以这样理解签名:签名的广义概念应该是用B的私钥加密的消息的输出是B的签名,狭义的签名(接受)是先用摘要算法处理这个消息!
证书
以上讨论漏掉了一个问题,那就是A如何获取B的公钥?b直接告诉a是不可行的,因为中间人h可能会冒充b。
这里我们可以看到公钥算法不对称的魔力。a可以在对B一无所知的情况下偷偷和B交流!知道就是知道B的公钥,但是公钥是要公开的。由此可见,这就引出了一个问题,即如何确定B的公钥与真实B的关系,这个关系其实是通过证书来解决的。
我们来看看上面说的虚拟世界的证书。b的证书使用的是开封市公安局的签名(这里我们先假设签名是真的,其公钥众所周知,不能冒名顶替!)。
认证时,B向A发送自己的证书,此时A开始认证:A将此证书抽象化得到一个输出,用开封市公安局的公钥解密签名得到另一个输出(这是开封市公安局认可的真实摘要),通过比较两个输出是否一致来认证B。
中间人H如何攻击证书?比如你把证书里的明文换成自己,H很容易得到新明文的摘要,却得不到B的私钥加密的密文,因为你不知道B的私钥!当然,还有其他方法可以找到另一个明文。这个明文的摘要和B的证书上的明文的摘要是一样的,也是很难的(抽象算法的哈希冲突后面不容易)!
现在,我们可以这样理解证书:证书将公钥绑定到一个实体上!而认证是两个部分:
1)确保另一个实体确实在使用证书中的公钥
2)确保证书真实,即检查签名
第一部分我们已经分析过了,第二部分:如何证明xxx局的签名是真实的?如果是假的认证机构给的呢?待续。
本文来自:数字签名(www.shuziqianming.com)
1.《数字签名技术 数字签名和数字证书技术原理大解析》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《数字签名技术 数字签名和数字证书技术原理大解析》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/1007957.html