欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

探究公钥、私钥、对称加密、非对称加密、hash加密、数字签名、数字证书、CA认证、https它们究竟是什么,它们分别解决了通信过程的哪些问题。

程序员文章站 2022-06-23 22:39:12
探究公钥、私钥、对称加密、非对称加密、hash加密、数字签名、数字证书、CA认证、https是什么,它们又解决了通信过程的哪些问题。 ......

一、准备

  1. 角色:小白、美美、小黑。

  2. 剧情:小白和美美在谈恋爱;小黑对美美求而不得、心生怨念,所以从中作梗。

  3. 需求:小白要与美美需通过网络进行通信,联络感情,所以必须保证通信的安全性。

 

二、由通信过程中可能出现的问题来引出公钥、私钥、对称加密、非对称加密、hash加密、数字签名、数字证书、ca认证、https的相关知识

  1. 场景1: 小白和美美在 http 协议下进行通信。

    1.1 能否完成通信:能。

    1.2 还可能出现其他问题:容易受到网络中间人攻击:在http协议下进行通信,信息是没有进行加密的,在透明的网络环境中,一旦信息被小黑截获,小黑可以查看、篡改信息内容,难以保证信息的安全。—— 问题所在:信息没加密。

    1.3 解决办法:引入“公钥、私钥”对信息进行加密,详情见“场景2”。

  2. 场景2: 小白和美美依旧是在 http 协议下进行通信,但小白先准备了一对秘钥(公钥+私钥),私钥由小白自己保管,公钥则交给了美美。通信时,小白先用“小白的私钥”对信息进行加密,然后再发送给美美;美美收到信息后,用“小白的公钥”进行解密,得到明文。美美要给小白发信息时,先用“小白的公钥”对信息进行加密,然后再发送给小白;小白收到回复后,用“小白的私钥”进行解密,得到明文。

    2.1 公钥、私钥

    (1)what:公钥(public key)与私钥(private key)是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),公钥是密钥对中公开的部分,私钥则是非公开的部分。

    (2)特性:通过这种算法得到的密钥对能保证在世界范围内是独一的。

    (3)作用:对信息进行加密。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密,比如:用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功。

    2.2 能否解决“网络中间人攻击”问题:能。因为信息是用“小白的私钥/公钥”进行加密了,小黑即使截获了信息,但手上没有“小白的秘钥”来对信息进行解密,所以无法查看到明文。

    2.3 还可能出现其他问题:美美都无法保证自己收到的信息是否是完整的。—— 问题所在:信息完整性无法保证。

    2.4 解决办法:采用“数字签名”的方式来对信息的完整性进行确认,详情见“场景3”。

  3. 场景3: 小白和美美依旧是在 http 协议下进行通信;小白依旧持有“小白的私钥”,美美则持有“小白的公钥”。小白每发出一封信件,都会先用hash函数生成信件的摘要,再用“小白的私钥”对摘要进行加密得到数字签名,最后将数字签名附在已加密的信件后面一同发给美美。美美收到信息后用“小白的公钥”对信件和数字签名进行解密,得到信件明文和摘要,再将信件明文通过hash函数得到的摘要,最后将这个摘要和上一步得到的摘要进行对比,如果两者一致,就证明这封信未被修改过,收到的信息是完整的。

    3.1 数字签名

    (1)what:用hash函数生成信件的摘要,再用用户的私钥进行加密;

    (2)作用: 确保信息的完整性和不可抵赖性;

    3.2 hash加密:是一种不可逆的加密方法,将一段明文进行加密, 对方得到密文后不可以得到明文。

    3.2 能否解决“信息完整性”问题:能。

    3.3 还可能出现其他问题:即使保证了收到的信息是完整的,但难以保证用户的身份:小黑可以冒充小白,去和美美进行通信。小黑自己生成了一对秘钥(小黑的公钥+小黑的私钥),再偷偷把美美电脑中保存的“小白的公钥”替换成“小黑的公钥”,并冒充小白的身份和美美进行通信。美美并不知道自己电脑中保存的公钥已经被人掉包了,所以一如既往地通过该公钥和“小白”通着信。——问题所在:用户的身份难以保证。

    2.4 解决办法:引入“ca认证”,对小白的身份进行确认,详情见“场景4”。

  4. 场景4: 小白和美美依旧是在 http 协议下进行通信,小白的那对秘钥,私钥依旧由自己保管,把公钥交给美美。除此之外,小白还把自己的公钥和一些必要信息打包后交由ca进行管理,ca会将小白提交的信息通过“ca的私钥”加密后形成数字证书。(ca有它自己的一对秘钥,且“ca的私钥”由ca自己管理,"ca的公钥"则发放给用户。)

    4.1 什么是ca认证ca认证,即电子认证服务,是指为电子签名相关各方提供真实性、可靠性验证的活动。证书颁发机构(ca, certificate authority)即颁发数字证书的机构。是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。

    4.2 数字证书

    (1)what:ca的私钥对客户端的公钥和信息进行加密后得到的文件;

    (2)作用:① 证明用户身份;② 拿到用户的公钥;

    4.3  能否解决“用户身份认证”问题:能。小白用“小白的私钥”对信息进行加密后发给美美,美美先通过ca获得“小白的公钥”,并用“小白的公钥”对小白发来的密文进行解密。因为ca是受信任的第三方,所以通过ca获得的“小白的公钥”也是可以信任的。既然能够通过从ca获得的“小白的公钥”来对小白发来的密文进行解密,那么自然小白的身份也得以确认了。

    4.4 还可能出现其他问题:美美可以通过ca拿到小白的数字证书,小黑也可以通过ca获取到小白的数字证书(这里要引出“非对称加密的概念”),这样一来小白发出的信息依旧是不安全的。—— 问题所在:采用非对称加密时,只要持有公钥就能对 同一对秘钥中的私钥加密的信息 进行解密。

    4.5 非对称加密:小白持有私钥,美美和小黑都持有公钥, 持有公钥的一方用公钥进行加密,那么这个内容就只有持有私钥的那一方可以看见。但是如果是用私钥进行加密,那么持有公钥的每一方都可以看见。

    4.6 解决办法:采用“对称加密”的方式来保证信息的安全,详情见“场景5”。

  5. 场景5: 小白和美美依旧是在 http 协议下进行通信,小白只生成一个对称加密的私钥(单钥),并将这个“小白的私钥”复制了一份给美美,小白和美美都用这把“小白的私钥”对信件进行加密和解密。

    5.1 对称加密:通信双方都持有同一把私钥, 双方都是用私钥进行加密和解密。也就是说在网络间传输的都是密文,然后拿到密文后用私钥进行解密就能得到明文。

    5.2 能否解决“采用非对称加密时,加密信息多人可见”问题:能。只要小白和美美手中持有的“小白的私钥”不外泄,那么他们之间的通信就能保证只有他们可见。

    5.3 还可能出现其他问题:小白如何把“小白的私钥”给美美?如果通过网络发给美美,就有可能被小黑截获(“私钥的保存、传输”就基本决定了这个保密的安全性)。

    5.4 解决办法:①当面交换; ②通过“非对称加密”的方式,详情见“场景6”。

  6. 场景6:小白和美美在 https 协议下进行通信。

    6.1 https

    (1)what:用的是“对称加密”和“非对称加密”这两种方法混合,目的在于建立一条加密的、安全的通信通道。

    (2)https协议有关“通过 非对称加密 实现对 对称加密的秘钥 的安全传输”的实现步骤:

      ①服务端有一对秘钥(私钥+公钥),私钥由服务端自行持有,公钥则发给各个客户端;

      ②客户端只生成一只对称加密的私钥(单钥);

      ③客户端用“服务端的公钥”对“客户端的私钥”进行加密,然后发送给服务端;

      ④服务端收到客服端发来的信息,用“服务端的私钥”对信息进行解密,得到“客户端的私钥”;

      ⑤服务端和客服端往后的通信过程中,信息都可以用“客户端的私钥”对来加、解密,只要这把“客户端的私钥”不泄露出去,别人即使截获了某一方发出的密文也无法进行解密。

    (3)图解 https

      探究公钥、私钥、对称加密、非对称加密、hash加密、数字签名、数字证书、CA认证、https它们究竟是什么,它们分别解决了通信过程的哪些问题。

    (4)https 的作用:①内容加密;②身份认证;③信息完整性。

    (5)效率:“对称加密”比“非对称加密”快1000倍。

  至此,小白和美美的通信安全问题得以解决,可以安心谈他们的恋爱了,撒花~