1.初步认识
https和http一样都属于应用层协议,https是在http协议的基础上引入了一个加密层
1.1 HTTPS加密的目的
主要概括为以下三点:
- 保密性:通过加密,确保用户与网站之间传输的数据(如密码、信用卡号、聊天内容)不会被第三方窃听和窃取。
- 完整性:通过校验机制,防止数据在传输过程中被第三方(如黑客)篡改或破坏。
- 身份认证:通过SSL证书,验证你所访问的网站就是其声称的那个真实、合法的网站,而不是一个伪造的钓鱼网站
加密防的是中间人的攻击,在数据传输的过程中,中间人可能会获取到数据并对数据进行篡改从而造成安全影响
1.2 与HTTP的区别
特性 |
HTTP |
HTTPS |
---|---|---|
协议基础 |
应用层协议(直接工作在TCP之上) |
HTTP over SSL/TLS(工作在SSL/TLS安全协议之上) |
安全性 |
无:明文传输,数据完全暴露 |
有:加密传输,防止窃听、篡改和冒充 |
默认端口 |
80 |
443 |
连接建立 |
TCP三次握手后直接传输数据 |
TCP握手后,还需进行复杂的TLS握手(交换证书、协商密钥等) |
身份认证 |
无:无法验证对方服务器身份,容易遭遇钓鱼网站 |
有:通过SSL证书验证网站的真实性和合法性 |
对SEO的影响 |
负面影响:搜索引擎(如谷歌)会降低其排名或标记为“不安全” |
正面影响:是搜索引擎排名算法的正面权重因子 |
浏览器表现 |
地址栏显示不安全警告(如“🔴 Not secure”) |
地址栏显示安全锁图标(如“🔒”) |
功能支持 |
受限:许多现代Web API(如地理位置、Service Worker等)无法使用 |
完整:可以调用所有需要安全上下文的现代浏览器API |
2.加密的过程
2.1 加密的方法
对称加密:
采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法被称为对称加密
特征:加密和解密所用的密钥是相同的
常见的对称加密算法(只做了解):DES,3DES,Blowfish
特点:算法公开,计算量小,加密速度快,加密效率高
非对称加密:
需要两个密钥进行加密和解密,这两个密钥是公开密钥和私有密钥
特征:算法强度复杂,但加密速度比较慢
非对称加密一共有两种形式:
(1)公钥加密,私钥解密
(2)私钥加密,公钥解密
2.2 证书认证
服务端在使用HTTPS前,需要向CA机构申领一份数字证书,这份证书里面含有证书申领者信息,公钥信息等
2.3数据摘要
基本原理就是利用单向散列函数对信息进行运算从而生成一串固定长度的数字摘要,根据这个数字从而判断数据有没有进行篡改过,不同与加密,因为这个无法进行解密,但对于加密的过程至关重要,摘要经过加密就变成了数字签名这是属于数字证书的一部分
2.4 加密的方案
2.4.1 方案一(只采用对称加密)
这种方案不可行,因为第一次客户端和服务端进行数据传输时,服务端无法得知对方密钥
2.4.2 方案二(只采用非对称加密)
如果是采用公钥封装,私钥解析的话,那么服务器就会把自己的公钥发送给客户端
如果是采用私钥封装,公钥解析的话,那么客户端就会把自己的公钥发给服务端
采用这个方案有两个缺点:
1.通信的速度非常慢
2.公钥在发送的过程中可能会受到中间人的篡改,从而造成安全隐患
2.4.3 方案三(双方都使用非对称加密)
此方案就是不同于方案二的地方就在于方案二是单向通信,而这里是双向通信,客户端和服务端双方交换自己的公钥后,客户端用公钥封装,服务端用私钥解析,然后服务端再用公钥封装信息,客户端用私钥解析信息,反之即反、
该方案相对于方案二只是通信速度快了一点,安全问题依旧没解决
2.4.4 方案四(非对称加密+对称加密)
该过程就是服务端一开始具有非对称公钥S和私钥S~,把公钥发送给客户端,客户端在本地生成对称密钥C,通过公钥S加密发送给服务端,服务端用私钥S~解密,还原出客户端发送的对称密钥C,并用这个对称密钥加密发送给客户端,后续客户端和服务端通信就只需要使用密钥C进行对称加密即可
优点:显著提高了效率问题,相较于前三个方案安全系数也更高了
缺点:依然有安全隐患,在第一步的时候服务端给客户端的公钥也许就被中间人劫持了,后续的操作也就在中间人的掌握中了
2.4.5 方案五(非对称加密+对称加密+证书认证)
方案五就是HTTPS加密的最终方案
相较于方案四,方案五加入了证书认证,这样就能充分保证了在第一步服务端发送给客户端的公钥是安全的,因为客户端可以根据数字签名来判断自己获得的公钥是否有问题