HTTPS 的加密过程~
一、HTTP 与 HTTPS 的区别
HTTP 本身不加密,所有通信(用户名、密码、Cookie、内容)都是明文的
HTTPS 则是在 HTTP 外层加了一层 SSL/TLS 安全层,核心功能包括:
加密(防止窃听)
认证(防止伪造网站)
完整性(防止数据被篡改)
二、HTTPS 加密中涉及的基本概念和关键技术
- 明文:要传输的原始数据
- 密文:把明文进行一系列变换之后,得到了一个看不懂的内容
- 加-密:明文 -> 密文的过程
- 解密:密文 -> 明文的过程
- 密钥:用于加密和解密的特殊数据
- 对称加密:一个密钥,既可以加密,也可以解密(速度快,但密钥分发困难)
- 非对称加密:两个密钥K1和K2,用K1加密则用K2解密,用K2解密则用K1解密(速度慢,但能安全地交换对称密钥)
- 证书:由 CA(证书颁发机构) 签发,包括
浏览器内置根证书可以验证这些证书链,确保公钥确实属于该网站
三、加密流程
1.引入对称加密
客户端/服务器生成了一个密钥,让对方也持有这个密钥,客户端发送给服务器的数据,使用这个密钥加密,服务器用密钥解密
一个服务器是要和多个客户端进行交互,必须使用不同密钥
上图的风险是无论怎么对密钥加密,黑客都能获取密钥
2.引入非对称加密
只使用非对称加密针对客户端和服务器传输的数据进行密文可行???
理论上可行,但是服务器返回响应由于公钥是公开的,任何人(包括黑客)都能,所以服务器发出的加密数据谁都能解密出来!而且非对称加密的效率比较低,占用的系统资源多
上述的的方案一定安全吗???
3.中间人攻击
被黑客入侵的设备通过伪装服务器和客户端成功得到了密钥
4.应对中间人攻击
引入证书,字符串(结构化数据)
证书会先计算一个校验和,在对这个校验和进行加密,公证机构会自己生成pub3和pri3,使用pri3随校验和进行加密
客户端验证证书的真假
- 客户端使用相同的算法,计算校验和check1
- 客户端用公证机构的公钥,对签名进行解密,也得到校验和check2
- 对比check1 == check2,如果相等,说明证书有效
模拟黑客修改
- 修改证书的pub1为pub2,但计算校验和是用pub1计算的,check1 != check2
- 黑客修改数字签名,显然不可以,黑客最多计算出校验和
- 黑客对公证机构的pub3进行中间人攻击,不行,pub3就不是通过网络传输的,而是操作系统内置的
四、完整的加密流程图
本期内容到此为止,喜欢的话请点个赞,谢谢观看!!!