目录
一、什么是HTTPS?
HTTPS 协议(超文本传输安全协议)是由 HTTP 加上 TLS/SSL 协议构建的可进行加密传输、身份认证的网络协议,主要通过数字证书、加密算法、非对称密钥等技术完成互联网数据传输加密,实现互联网传输安全保护。
HTTPS涉及到了很多概念,我们要搞清楚 SSL/TLS协议,对称加密,非对称加密,数字证书、数字签名,认证等
二、为什么需要HTTPS呢?
HTTP协议由于是明文传送,所以存在三大风险:
- 被窃听的风险:第三方可以截获并查看你的内容
- 被篡改的危险:第三方可以截获并修改你的内容
- 被冒充的风险:第三方可以伪装成通信方与你通信
三、什么是TLS和SSL?
SSL及其继任者TLS是为网络通信提供安全及数据完整性的一种安全协议。
- SSL (Secure Socket Layer),译为安全套接层。SSL是Netscape公司在1994开发的,广泛应用于基于万维网的各种网络应用
- TLS (Transport Layer Security),译为传输层安全。TLS是1995年IETF在SSL 基础上设计的。
我们需要知道的是:
- TLS(传输层安全)是更为安全的升级版 SSL(安全套接层)
- TLS与SSL位于传输层和应用层之间的协议。在传输层对网络连接进行加密。
- 在发送方,SSL 接收应用层的数据(如 HTTP报文),对数据进行加密,然后把加了密的数据送往 TCP 套接字。在接收方,SSL 从 TCP 套接字读取数据,解密后把数据交给应用层。
四、什么是对称加密和非对称加密?
对称加密 | 1、加密和解密时使用的是同一个秘钥。 2、算法公开,计算量小,加密速度快,加密效率高 ,但是使用相同密钥,安全性不高。 3、经典的三种加密算法: DES、3DES、AES |
非对称加密 | 1、公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。 2、算法强度复杂,安全性依赖于算法与密钥。 加密解密速度慢。 3、RSA加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。 |
1、人物张大胖给人物Bill发送消息时,由于在网络上通信是明文的,所以就有了对称加密算法。但是双方怎么约定这个密钥呢?如果这个密钥在网络上传输也是有可能被黑客截获。一旦黑客截获就可以佯装不知,静静等双方通信,截获消息查看。
2、于是就有了非对称加密算法RSA。比如,人物张大胖给人物Bill发送消息时,用Bill的公钥去加密(Bill的公钥是公开的),等消息被Bill收到后,他用自己的私钥解密(只有Bill才能解开,因为私钥是保密的)
3、但是你能确定网络那边就是Bill嘛?于是产生了中间人攻击的问题
什么是中间人攻击?
中间人截获了Bill 和 张大胖的公钥冒充他们两个和对方通信。
当Bill给张大胖发公钥的时候, 有个中间人,截取了Bill的公钥, 然后将自己的公钥发给了张大胖,冒充Bill 。张大胖发的消息就用了中间人的公钥加了密,那么中间人就可以解密看到消息。中间人解密后还可以用Bill的公钥加密,发给Bill。然而双方都意识不到。
4、为了解决中间人攻击的问题,证明这个公钥是Bill的而不是别人的,于是就需要第三方权威部门颁发证书。这个证书里有最重要的公钥,证书的所有者,证书的颁发机构和证书的有效期。证书的生成需要发起请求,将这个请求发给一个权威机构去认证。这个权威机构称CA(Certifcate Authority)。但是证书如何安全传输呢?于是有了数字签名和数字证书。
什么是数字签名、数字证书?
5、数字签名:就是将Bill的公钥和个人信息用一个Hash算法生成一个 消息摘要,Hash算法具有不可逆性,而且只要输入数据有一点点变化,那生成的消息摘要就会有巨变,这样就可以防止别人修改原始内容。然后CA用自己的私钥对消息摘要进行加密,形成数字签名。
6、这还不算,还把原始信息和数据签名进行合并,形成 “数字证书”
7、当张大胖收到Bill的数字证书时,用同样的Hash算法,再次生成消息摘要;再用CA的公钥对数字签名进行解密,得到CA创建的消息摘要,二者一对比就知道消息有没有篡改。获取了Bill的公钥就可以进行接下来的通信了。这样中间人攻击的问题就解决了。
8、但是新问题又来了,想要验证证书,就需要CA的公钥,但是怎么保证CA的公钥就是对的呢?所以,CA 的公钥也需要更牛的 CA 给它签名,然后形成 CA 的证书。要想知道某个CA 的证书 是否可靠,要看 CA 的上级证书的公钥,能不能解开这个 CA 的签名。而操作系统/浏览器中会内置一些顶层的CA的证书,相当于你自动信任了他们。
HTTPS 的工作模式
由于非对称加密算法RSA加密解密速度慢。于是把对称加密算法的密钥,通过非对称加密算法RSA的方式发送给对方,以后就不用RSA,而采用对称加密算法进行通信。
下面就是 HTTPS 协议的总体思路。
小结:
- 加密分对称加密和非对称加密。对称加密效率高,但是解决不了密钥传输问题;非对称加密 可以解决这个问题,但是效率不高。
- 非对称加密需要通过证书和权威机构来验证公钥的合法性。
- HTTPS 是综合了对称加密和非对称加密算法的 HTTP 协议。既保证传输安全,也保证传输效率
HTTPS和HTTP有什么区别呢?
1. 安全性不同
- HTTP协议位于TCP之上,明文传输,通信双方无法验证对方身份;
- HTTPS协议是在HTTP和TCP之间添加了SSL协议构建的可进行**加密传输**、**身份认证**的网络协议
2. 端口不同。
- HTTP端口是80;
- HTTPS是443
3. 消耗资源不同
和HTTP通信相比,HTTPS通信会由于加密解密密会消耗更多的CPU和内存资源;
4. 开销不同
HTTPS通信需要证书,而证书一般需要向认证机构购买
参考:
推荐《码农翻身》中的一个故事讲完https
《趣谈网络协议》中的 HTTPS协议:点外卖的过程原来这么复杂