HTTPS究竟是如何保证通信安全的

作者 : 开心源码 本文共1556个字,预计阅读时间需要4分钟 发布时间: 2022-05-11 共64人阅读

一直对https有个模糊的概念,只是知道https安全,信息是加密的,但是对于细节一直是不明白,特别是为什么要买个证书。今天看图灵图书的《图解HTTP》一书,看到https这一章节,终于知道个大概是咋回事了。

第一:https的概念

https就是把http协议包裹在SSL协议里,再加上少量证书的东西,就称为https。https就是躲在SSL协议之后的http协议。

http是把http请求或者者响应传给传输层,传输层把请求或者者响应包装之后发给http通信的另外一端。

https是SSL协议先把通信的两端加密方式协商好,http再把请求和响应传给SSL协议层,SSL层把请求和响应加密之后,再传给传输层,传给通信的另外一端,另外一端也是先由SSL层解密,再交给http层。

第二:SSL协议

SSL协议是介于传输层(tcp协议)和应使用层(http协议)之间的一个协议。

SSL协议之前是网景公司提出的,后来由另外一个标准制定组织接收了,又提出了基于SSL协议发展的TLS协议.

SSL协议就是使用于通信两端建立安全连接,完成加密传输,保证传输的完整性。

第三:https通信过程。

1、SSL协议层先握手建立连接,协商用的加密算法。

2、服务器先把公钥发给用户端。

3、这样用户端能用公钥加密发给服务器,服务器使用私钥解密。这组密钥一般不会使用于直接通信,服务器和用户端会协商出另外一组密钥进行后面的通信。比方用户端能生成临时密钥,使用公钥加密后发给服务器,从而实现共享密钥。

(备注;ssl协议不仅仅用非对称加密,还会混合用对称加密,由于非对称加密很耗CPU,性可以不好,ssl在建立连接之后,后面会协商一个共享秘钥进行内容通信。)

4、后面就开始正式的http通信,由于传输是通过共享密钥加密传输的,所以是安全的。

第四:证书

上面的通信过程建立链接之后是安全的,但是有一个漏洞。

第一:就是黑客能冒充服务器发送假的公钥,和用户端通信

第二:就是黑客能冒充假的用户端和服务器通信

先说第一个问题:

用户端如何证明是真的服务器发过来的真的公钥呢?这就出现了服务端的证书。

方法是通过第三方权威机构颁发的证书,所谓证书,就是第三方权威机构使用自己的私钥,对某服务器的公钥进行的数字签名。

服务器在把公钥发给用户端的时候,也要发送自己的证书(也就是第三方机构的数字签名)。

用户端使用第三方机构的公钥对数字签名进行验证,验证通过,就认为这个公钥是合法的。由于第三方权威机构的私钥是很安全的(我们暂且这么认为),所以伪造不了。

这就处理了第一个问题。

第三方权威机构必需是有信誉的公司,例如VeriSign公司是专门的证书颁发机构,当然假如这个公司靠不住,以上都不成立了。

有人会问,这个第三方机构的公钥也是假的呢? 这个第三方机构的公钥一定要以一种更安全的方式传给用户端。

那就是各大浏览器在发布的时候,已经把少量权威机构的公钥预置进去了,除非你下载了盗版的浏览器。

再说第二个问题,服务端如何识别用户端是真的用户端呢?

最安全的方式就是用户端也用证书,每个专门的使用户一个证书,但是这个代价比较高,由于申请证书要收费的。

目前大部分互联网企业做法是只对服务器端进行证书认证,只需确保用户端可以识别真的服务器即可以了。

至于对用户端的真伪,一般的做法是通过使用户名密码,只需使用户名密码对了,我就认为和服务器连得用户端就是那个我认为的用户端。

再安全一点的做法就是验证手机号,弄个不断变化的密令,宝令,usb密码狗之类的。

所以使用户千万不可以把你的密码告诉别人。

以上看来,https通信还是比较安全的,怪不得那么多互联网公司都在转向全网https,这是一个趋势。

对于https还有很多细节,我这里只是大概形容个https的概念,更专业的东西就让专业搞密码学的人去搞吧。

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » HTTPS究竟是如何保证通信安全的

发表回复