https即http+SSL,是基于http的一种加密传输方式。
1. 理解 SSL
- 加密
- 非对称加密:SSL在握手的过程中使用非对称加密,确保握手过程的安全性,涉及到公钥与私钥
- 对称加密:在握手结束后,SSL双方采用对称加密通信
- 数字签名:简单来说,是通过Hash算法生成的“签名”来校验数据的一致性,本文就不介绍具体的Hash算法了,大家可以自行了解
- CA认证:通过第三方的认证证书来证明密钥来源的合法性,对于CA证书的具体内容,大家可以自行了解
2. 公钥与私钥
公钥与私钥是非对称加密算法中的两个重要概念,公钥是公开的,所有人都能获得,私钥是只有服务器才有的,能解密私钥加密的密文。SSL验证的终极目的是为了客户端安全的与服务端建立连接,所以要求私钥的加密过程很简单,但是在没有公钥的前提下,反推出原来的内容困难。
2.1 RSA 加密
- 选出两个质数p与q
- 两个质数相乘 N = p✖️q
- 欧拉函数 T = (p-1)✖️(q-1)
- 选出公钥E (质数;1<E<T;E不是T的因子)
- 计算私钥D (D✖️E)%T=1
E 是我们公开的公钥,D 是我们需要隐藏的私钥,从5.与3.两个公式可以看出,算出D还需要知道p与q两个指数,但是如果我们把这两个数设置的非常大,那么其解密过程就会异常复杂,详细的数学证明这里就不给出了,大家感兴趣的可以深入了解。
2.2 ECC椭圆曲线加密算法
ECC椭圆曲线加密的具体算法较为复杂,为了方案大家理解,这里只抽象出其两个我们需要使用到的特点:
- 解密的过程很困难:A=F.a,在知道A与F的前提下,很难反推出a
- 加密过程符合交换律:F.a.b = F.b.a
利用上面的两个特性,双方如果分别有一个自己私有的数字a和b,就能在完全加密,不被其他人破解的前提下将各自私有的数字进行传递。
3. 非对称加密过程
这部分是我们最常提及也是面试的过程中最常被问到的,这里进行一个较为详细的解读。
3.1 CA 证书的作用
防止有黑客全程拦截会话,将自己的公钥发送给客户端,客户端却不得而知
3.2 Hash函数的作用
生成数字签名,来校验通信报文的完整性。