RSA非对称加密过程
持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第5天,点击查看活动详情。
HTTPS采用的加密方式有哪些?是对称还是非对称?🧠
HTTPS采用混合的加密机制,使用非对称密钥加密用于传输,对称密钥来保证传输过程的安全性, 之后使用对称密钥加密进行通信来保证通信过程的效率。
如何确保传输安全过程?换句话说也就是RSA原理
- Client给出协议版本号、一个客户端生成的随机数(Client random),以及客户端支持的加 密方法
- Server确认双方使用的加密方法,并给出数字证书、以及一个服务器生成的随机数(Server random)
- Client确认数字证书有效,然后生成呀一个新的随机数(Premaster secret),并使用数字证 书中的公 钥,加密这个随机数,发给Server。
- Server使用自己的私钥,获取Client发来的随机数(Premaster secret)。
- Client和Server根据约定的加密方法,使用前面的三个随机数,生成”对话密钥”(session key),用来 加密接下来的整个对话过程。
RSA加密、签名区别㊙
加密和签名都是为了安全性考虑,但略有不同。常有人问加密和签名是用私钥还是公钥?其实都是对加密和签名的作用有所混淆。简单的说,加密是为了防止信息被泄露,而签名是为了防止信息被篡改。这里举2个例子说明。
第一个场景:在网络通信中,客户端要给服务器发送一条消息,内容为某一指令。
RSA的加密过程如下:
(1)服务器生成一对密钥(公钥和私钥),私钥不公开,服务器自己保留。公钥为公开的,任何人可以获取。
(2)服务器传递自己的公钥给客户端,客户端用服务器的公钥对消息进行加密。
(3)服务器接收到客户端加密的消息,利用服务器自己的私钥对消息进行解密。
在这个过程中,只有2次传递过程,第一次是服务器传递公钥给客户端,第二次是客户端传递加密消息给服务器,即使都被敌方截获,也没有危险性,因为只有服务器的私钥才能对消息进行解密,防止了消息内容的泄露。
第二个场景: 服务器端收到客户端发的消息后,需要进行回复“收到”。
RSA签名的过程如下:
(1)服务器端生成一对密钥(公钥和私钥),私钥不公开,服务器端自己保留。公钥为公开的,任何人可以获取。
(2)服务器端用自己的私钥对消息加签,形成签名,并将加签的消息和消息本身一起传递给客户端。
(3)客户端收到消息后,在获取服务器端的公钥进行验签,如果验签出来的内容与消息本身一致,证明消息是服务器端回复的。
在这个过程中,只有2次传递过程,第一次是服务器端传递加签的消息和消息本身给客户端,第二次是客户端获取服务端的公钥,即使都被敌方截获,也没有危险性,因为只有服务器端的私钥才能对消息进行签名,即使知道了消息内容,也无法伪造带签名的回复给客户端,防止了消息内容的篡改。
综合两个场景你会发现,第一个场景虽然被截获的消息没有泄露,但是可以利用截获的公钥,将假指令进行加密,然后传递给客户端。第二个场景虽然截获的消息不能被篡改,但是消息的内容可以利用公钥验签来获得,并不能防止泄露。所以在实际应用中,要根据情况使用,也可以同时使用加密和签名,比如客户端和服务器端都有一套自己的公钥和私钥,当客户端要给服务器端发送消息时,先用服务器端的公钥对消息加密,再对加密的消息使用客户端的私钥加签名,达到既不泄露也不被篡改,更能保证消息的安全性。
RSA劫持通信
后语
厂长写博客目的初衷很简单,希望大家在学习的过程中少走弯路,多学一些东西,对自己有帮助的留下你的赞赞👍或者关注➕都是对我最大的支持,你的关注和点赞给厂长每天更文的动力。
对文章其中一部分不理解,都可以评论区回复我,我们来一起讨论,共同学习,一起进步!