|
JavaEE
HTTP —— HTTP 协议中的细节(超详细!!)
HTTP —— HTTP 响应详解, 构造 HTTP 请求
目录
- HTTPS
- "加密"
- 对称加密
- 非对称加密
- 证书
- 总结
HTTPS
“加密”
-
明文
: 要传递的原始信息 -
密文
: 经过加密后的信息 -
密钥
: 将明文加密的方法 (在加密和解密中起到至关重要的作用) -
加密
: 使用密钥把铭文变成密文 -
解密
: 使用密钥把密码还原成明文
加密就是把 明文 (要传输的信息)进行一系列变换, 生成 密文 .
解密就是把 密文 再进行一系列变换, 还原成 明文 .
在这个加密和解密的过程中, 往往需要一个或者多个中间的数据, 辅助进行这个过程, 这样的数据称为 密钥 .
对称加密
加密和解密使用同一个密钥. 最简单的对称加密, 就是按位异或: a ^ b ^ b => a.
一个服务器, 要给多个客户端提供服务. 这些客户端, 使用不同的密钥
.
典型的做法, 就是每个客户端, 在建立链接之初, 先生成密钥, 然后进行通信的时候, 先把自己的密钥发给服务器.
为了解决上述问题, 就需要引入非对称加密
非对称加密
加密和解密使用不同密钥.
-
加密一个密钥
-
解密一个密钥
-
这两个是成对的, 知道一个, 无法推出另一个
可以使用密钥 A 来加密, 配对的 密钥B 解密
也可以使用 密钥B 来加密, 配对的 密钥A 解密
可以让服务器, 生成一对非对称密钥
-
一个是公开出来的, 任何人都能获取到的 公钥
-
另一个是私密的, 只有服务器自己知道的 私钥
客户端就可以先从服务器拿到服务器的公钥, 然后使用公钥对自己生成的对称密钥进行加密.
此时由于外界只有公钥
, 私钥只是服务器自己所有 (黑客拿不到)
只有服务器可以使用私钥
对上述的请求进行解密了.
既然已经引入了非对称加密, 为什么还要对称加密呢?
对称加密开销成本较低. 非对称加密开销成本大.
针对上述情况, 黑客还是有办法进行入侵
中间人攻击
为了解决上述问题, 引入证书
证书
中间人攻击的关键, 就是要能够证明
当前这个公钥, 是服务器自己的公钥.
上面介绍的这套 HTTPS
的对称加密/ 非对称加密/ 证书流程 不是 HTTPS 独有的
这套机制属于一个专门的协议 SSL/ TLS
HTTPS = HTTP + SSL
(很多加密的场景都会用到这个)
总结
HTTPS
工作过程中涉及到的密钥有三组.
第一组(非对称加密): 用于校验证书是否被篡改. 服务器持有私钥(私钥在注册证书时获得), 客户端持有公钥(操作系统包含了可信任的 CA
认证机构有哪些, 同时持有对应的公钥). 服务器使用这个私钥对证书的签名进行加密. 客户端通过这个公钥解密获取到证书的签名, 从而校验证书内容是否是篡改过.
第二组(非对称加密): 用于协商生成对称加密的密钥. 服务器生成这组 私钥-公钥
对, 然后通过证书把公钥传递给客户端. 然后客户端用这个公钥给生成的对称加密的密钥加密, 传输给服务器, 服务器通过私钥解密获取到对称加密密钥.
第三组(对称加密): 客户端和服务器后续传输的数据都通过这个对称密钥加密解密.
其实一切的关键都是围绕这个对称加密的密钥. 其他的机制都是辅助这个密钥工作的.
第二组非对称加密的密钥是为了让客户端把这个对称密钥传给服务器.
第一组非对称加密的密钥是为了让客户端拿到第二组非对称加密的公钥
|
以上就是今天要讲的内容了,希望对大家有所帮助,如果有问题欢迎评论指出,会积极改正!!