非对称加密

目录

 

1 非对称加密

1.1 非对称加密简介

1.2 对称加密非对称加密图解

 1.3 非对称加密通信流程


1 非对称加密

 

1.1 非对称加密简介

  • 对称加密

"非对称加密也叫公钥密码: 使用公钥加密, 使用私钥解密"

  • 非对称加密

非对称加密算法需要两个**:公开**(publickey)和私有**(privatekey)。公开**与私有**是一对,如果用公开**对数据进行加密,只有用对应的私有**才能解密;如果用私有**对数据进行加密,那么只有用对应的公开**才能解密。因为加密和解密使用的是两个不同的**,所以这种算法叫作非对称加密算法。 非对称加密算法实现机密信息交换的基本过程是:甲方生成一对**并将其中的一把作为公用**向其它方公开;得到该公用**的乙方使用该**对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用**对加密后的信息进行解密。另一方面,甲方可以使用乙方的公钥对机密信息进行签名后再发送给乙方;乙方再用自己的私匙对数据进行验签。甲方只能用其专用**解密由其公用**加密后的任何信息。 非对称加密算法的保密性比较好,它消除了最终用户交换**的需要。

1.2 对称加密非对称加密图解

非对称加密

 1.3 非对称加密通信流程

服务器为了跟别人安全通信,去CA认证机构申请了数字证书。数字证书包括服务器的公钥,认证机构,指纹,指纹算法等信息。客户端向服务器请求通信,服务器把数字证书给了客户端。客户端需要一个可以信任的证书机构,所以客户端在windows系统中查找所获证书的颁发机构,找到后使用系统自带的证书公钥解开指纹和指纹算法,客户端使用获得的指纹算法对证书内容本身进行了计算,使用计算后的指纹和证书中的指纹对比,如果一致则认为证书没有被修改。此时就可确定证书中的公钥确实是服务器的公钥。

客户端用服务器的公钥加密了一个随机字符串发送给服务器,服务器收到后用对应私钥加密,然后将加密的字符串发送给客户端。客户端如果使用证书中得到的公钥成功解密,则认为证书的发送方确实是服务器。此时既确定了证书(实际就是公钥内容)没有被修改,也确定了证书发送方确实是服务器。此时客户端生成一个对称加***(对称加密无所谓公钥私钥),客户端使用服务端的公钥将对称加密算法和**发送给服务端,之后客户端和服务端使用该对称加***进行通讯。

  • 例子

公钥密码的通信流程。和以前一样、我们还是假设Alice要给Bob发送一条消息,Alice是发送者,Bob是接收者,而这一次窃听者Eve依然能够窃所到他们之间的通信内容。

注:在公非对称加密通信中,通信过程是由接收者Bob来启动的。

  1. Bob生成一个包含公钥和私钥的**对,私钥由Bob自行妥善保管。
  2. Bob将自己的公钥发送给Alicea ,Bob的公钥被窃听者Eve截获也没关系,将公钥发送给Alice,表示Bob请Alice用这个公钥对消息进行加密并发送给他。
  3. Alice用Bob的公钥对消息进行加密,加密后的消息只有用Bob的私钥才能够解密。虽然Alice拥有Bob的公钥,但用Bob的公钥是无法对密文进行解密的。
  4. Alice将密文发送给Bobo ,密文被窃听者Eve截获也没关系。Eve可能拥有Bob的公钥,但是用Bob的公钥是无法进行解密的。
  5. Bob用自己的私钥对密文进行解密。

窃听者Eve可能拥有Bob的公钥,但是Bob的公钥只是加***,而不是解***,因此窃听者Eve就无法完成解密操作。