ios计算机网络程序员

HTTPS详解

2019-04-10  本文已影响16人  羞涩的老湿鸡

在了解HTTPS之前,有以下几个知识需要先去了解。


一、何为公私钥?

1、在密码学中,分为两大体制,一种为单钥体制,另一种为双钥体制。所谓的单钥是指,加密和解密的过程采用同一种密钥。而双钥加密则是加密与解密采用两种不同密钥。

2、单钥加密由于加密解密都采用同一密钥,因此密钥的存储十分关键,一旦密钥泄漏,密码也就被破解。

3、双钥加密分为公钥与私钥,公钥进行公开,而私钥是保密进行存储。公钥与私钥的生成虽然是一一对应的,但如果想通过公钥反向解出私钥,这种难度是几乎不可实现的。(这个难度就好比,将鸡蛋加热后再冷却成原来的样子)

二、双钥加密的安全问题

1、由于公钥是透明公开的,在数据的传输过程中,则可能造成数据的篡改。

如:张三与李四有一个共同好友王五。为了保证三人信件交流的保密性,制定了一套公私钥加密方式。王五持私钥,而张三与李四持有相同公钥。

某天张三与王五信件交流过程中被李四使坏,将张三所传递的信息进行拦截,并将新的消息通过所持有的公钥加密后发送给王五。因此造成了张三与王五的经济损失。

2、张三为了避免自己数据被篡改的惨剧再次发生,决定在数据的传输过程中加入信息摘要(Digest)来保证所传递的数据并未被非法篡改。

张三将要传递的内容通过特殊Hash进行摘要提取,并将所生成的摘要通过“自己的私钥”进行加密生成数字签名(signature)与信件一同发送给王五。

当王五收到此信件后,会先使用“张三公开的公钥”将数字签名(signature)进行解密。得到信息摘要(Digest),然后再将所传递的信息数据也通过Hash得到一份信息摘要(Digest),并进行比对,如果两分信息摘要相同,则数据没有发生篡改。

3、由于加入了数字签名(signature),使李四无法再通过数据篡改的手段来进行破坏,因此李四决定潜入张三的家里,将张三所持有王五的公钥替换成李四自己生成的公钥。

此时,由于张三并不知道自己的公钥已被替换,因此李四决定冒充王五,使用自己的私钥加密向张三发送信息。让张三使用假的公钥来解析该虚假信息进行诈骗。

三、Certificate Authority  (CA)

1、在经历了虚假公钥的诈骗,张三便开始考虑一个问题,如何证明王五的公钥是真正王五的公钥?

经过一系列的思考,张三决定让王五去将自己的公钥向证书中心(CA)进行一个认证。

事后证书中心(CA)又将王五的公钥和王五的相关信息采用自己的私钥一起加密生成生成数字证书(Digital Certificate)

王五拿到该数字证书后,每次发送消息便将该数字证书做为附件一起发送给张三。

而张三采用证书中心(CA)颁发的公钥先进行数字证书(Digital Certificate)的解密,就可以成功拿到真正王五的公钥。

四、HTTPS如何加密?


其实在HTTPS的实例应用中,使用的便是上文所讲,数字证书(Digital Certificate)这种校验方式。

HTTPS加密的核心理念可大致分为以下七步

1、首先客户端向服务器发起Request加密请求,同时将安全协议版本号、客户端支持的加密算法列表、随机数C一同发送。

2、服务器接收到请求后,会先校验是否支持客户端发送的加密算法列表。如校验通过,则分别采用对称加密与非对称加密两种加密算法,连同本身的数字证书,随机数S一起发送给客户端。

3、客户端收到该数字证书后,会在钥匙串访问中心(mac)查找该数字证书是否在受信任的列表之内。

4、如果该证书是可信任证书,则取出证书中的公钥用来生成一个“预主秘钥”,并通过该预主秘钥和随机数C和S通过一定算法合成“会话秘钥”,

5、客户端将通过公钥生成的“预主秘钥”发送给服务器

6、服务器通过私钥解析得到“预主秘钥”,并采用相同办法将预主秘钥和随便数C、S通过算法合成“会话秘钥”

7、双方都持有相同的会话秘钥,后续通信均采用会话秘钥进行传输。会话秘钥属于单钥加密。

五、为何HTTPS数据传输过程中采用单钥加密?


其实HTTPS建立连接的过程是采用非对程加密技术,而后续通信过程中采用对称加密。主要原因是因为非对程加密是很耗时的一种加密方式,而对称加密速度远远优于非对称加密。为了减少后续通讯速度,因此采用“会话秘钥”这种对称加密手段。

上一篇下一篇

猜你喜欢

热点阅读