图说HTTPS协议

1,252 阅读4分钟

故事还要从月月给她老公亮亮发了一条消息说起。

晚上亮亮下班回到家,刚一进门 "给我跪下", "咋了,媳妇儿?",嘴上这样问着,可是亮亮的身体还是很诚实。 "你不是给我发消息说今晚不回家吗?"说着月月掏出了手机 "天地良心我没这么说过,我今天收到了你的消息还是你骂我呢",亮亮也掏出了自己的手机

"好神奇,我们收到的消息和发出去的消息不一样耶,难道是我们被黑客截取了信息"

亮亮起身拍了拍膝盖上的灰说到:“肯定是呀,不要让我看见他,不然我打得他妈都不认识他"

入夜了,小两口在床上躺着想到今天发生的事儿还是哭笑不得,决定想个办法来解决通信不安全的问题,不然这日子没法过了。

"亮亮,你说咋办呢?你是程序员,你说有什么办法即使是黑客截取到了我们的信息也没有办法知道是什么内容,就跟谍战片里面一样" "可以呀,你发送消息给我的时候用密钥加密,然后我收到消息用同样的算法,同样的密钥解密就行了,这有个专业术语叫做对称加密"

"听上去不错,可是你这个有问题呀,和你一个人通信这样倒是可以,但是和其他人通信怎么办呢?我和他们怎么协商密钥呢?"

"没事儿,这难不倒我,我们还可以使用非对称加密算法,它有两个密钥,一个叫公钥,一个叫私钥,公钥加密的数据只能被私钥解密,同样的,私钥加密的数据只能被公钥解密,私钥只能由你持有,公钥就由我持有(可以网络分发),以后你想和我聊天就把密钥用私钥加密,我这边用公钥解密得到密钥,然后我们还像之前讲的那样用密钥加密消息进行通信。别人想和你聊天,你就把公钥给他就行了"

“为什么我们不直接使用非对称加密算法来通信呢?"

"非对称加密不仅速度慢而且只支持少量数据的加密,说多了你也不懂"

"还存在一个问题耶,这个公钥就这样暴露出去了,黑客就可以将其替换成他的公钥,这样别人给我发送消息就相当于给这个黑客发送消息了"

"这个可以让第三方进行担保,让它给我保证公钥是正确的。这个第三方结构我们称它为CA" "它如何保证呀?" "CA其实也是使用了非对称加密算法,首先使用CA的私钥对我们的公钥加密,然后它会给你返回一个证书,里面包含了加密之后的公钥,然后你本地使用CA公钥解密这个证书就可以获取到我们的公钥了。你老公我是不是很聪明呀?"

"聪明?呵呵。我告诉你你还是太天真了,CA可以给你颁发证书也可以给黑客证书,你如何保证证书没有被掉包,我收到的证书不是黑客所持有的?" 亮亮嘀咕到:"一天想东想西的,黑客哪有那么多时间,天天守着你" "你说什么?" "我说,我们可以在本地通过证书的编号来验证证书是否是真实的呀?我们让证书根据一系列信息生成一个消息摘要,然后将这个消息摘要使用CA的密钥加密形成数字签名放到证书里面,然后我们本地根据同样的规则来生成消息摘要,然后将证书中的数字签名解密,它们两个进行两两对比就行呀。"

一系列代指签发者,证书用途,我们需要传输的公钥,加密算法,HASH算法,到期时间等,对于网站来说还有域名的信息

https_message_6.png

"听上去不错,可是这一切的前提是CA的公钥可信呀,万一内置在游览器和操作系统的证书不可信了怎么办呢?" "如果这两个都被攻破了,那就万事皆休了,而且世界上哪有绝对的安全呀,你要是在意信息泄露,那你就别上网好了" "算了,还是别想那么多了,睡觉吧,都2点钟,明天我肯定又有黑眼圈了,都怪你。"

NetScape相继开发了SSL1.0,SSL2.0,SSL3.0,由ISOC组织接手后,发布了TLS 1.0(和SSL3.0几乎没有差异,可以向下降级),TLS1.0也被称为SSL3.1,然后经过TLS1.1,TLS1.2,现在最新的是TLS1.3。大部分游览器基本都支持TLS1.2。 我们访问网络常用的协议是HTTP协议,但是它的通信过程并不安全,很容易被拦截,监听,篡改。而SSL/TLS可以保证信息安全,所以它们合并在一起就组成了我们今天要说的主角HTTPS(HTTPS=HTTP >+ SSL/TLS)。