HTTPS 基础概念
概述
本文从 HTTPS 是什么、为什么需要 HTTPS 的角度,基于 HTTP 协议认识 HTTPS,介绍加密原理,包括对称加密和非对称加密,引出五种不同的通信方加密方式及证书相关概念。

一、认识 HTTPS
HTTPS 也是一个应用层协议。它是在 HTTP 协议的基础上引入了一个加密层,可以理解为 SSL+TLS+HTTP 构成。
二、为何要加密

由于 HTTP 的内容是明文传输的,明文数据会经过路由器、WiFi 热点、通信服务运营商、代理服务器等多个物理节点。如果信息在传输过程中被劫持,传输的内容就完全暴露了。劫持者还可以篡改传输的信息且不被双方察觉,这就是中间人攻击。因此我们需要对信息进行加密。
早期的 HTTP 在网络中明文传递,是暴露的,能被修改。
其中:
- 加密就是把明文(要传输的信息)进行一系列变换,生成密文!
- 解密就是把密文再进行一系列变换,还原成明文!
在这个加密和解密的过程中,往往需要一个或者多个中间的数据辅助进行这个过程,这样的数据称为密钥(正确发音 yuè 四声,不过大家平时都读作 yào 四声)。
因此:
HTTPS 就是在 HTTP 的基础上进行了加密,进一步来保证用户的信息安全。
三、加密方式
3.1 对称加密
采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密。
常见对称加密算法(了解):DES、3DES、AES、TDEA、Blowfish、RC2 等。 特点:算法公开、计算量小、加密速度快、加密效率高。
因此:
我们只需要记住:加密密钥和解密密钥是同一把,这在某种意义上成为了它的缺点。
一个简单的对称加密:按位异或。
假设明文 a=1234,密钥 key = 8888,则加密 a ^ key 得到的密文 b 为 9834,然后针对密文 9834 再次进行运算 b ^ key,得到的就是原来的明文 1234。(对于字符串的对称加密也是同理,每一个字符都可以表示成一个数字)。当然,按位异或只是最简单的对称加密,HTTPS 中并不是使用按位异或。
3.2 非对称加密
需要两个密钥来进行加密和解密,这两个密钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。
常见非对称加密算法:RSA, DSA, ECDSA。 特点:算法强度复杂、安全性依赖于算法与密钥,但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。 最大的缺点就是运算速度非常慢,比对称加密要慢很多。
因此:
这里只需要记住:公钥加密只有私钥解开,私钥加密只有公钥解开。
3.3 数据摘要与数据指纹
数字指纹(数据摘要),其基本原理是利用单向散列函数(Hash 函数)对信息进行运算,生成一串固定长度的数字摘要。数字指纹并不是一种加密机制,但可以用来判断数据有没有被篡改。
摘要常见算法:有 MD5、SHA1、SHA256、SHA512 等,算法把无限的映射成有限,因此可能会有碰撞(两个不同的信息,算出的摘要相同,但是概率非常低)。 摘要特征:和加密算法的区别是,摘要严格意义不是加密,因为没有解密,只不过从摘要很难反推原信息,通常用来进行数据对比,比如数据库管理使用摘要。
















