上节回顾~
HTTPS=HTTP+SSL(加密协议)
1.引入对称密钥:
- 客户端生成对称密钥
- 通过网络把密钥传输给服务器
- 双方使用对称密钥对数据进行加密解密
- 缺陷:对称密钥是明文传输的
2.引入非对称密钥,把对称密钥进行加密传输
- 注意私钥是服务器才有
- 非对称加密,成本是非常高的,不太适合加密大量数据
- 对称加密,成本低,适合对大量数据进行加密
当前场景有三个密钥
- 一个是用户端生成的对称密钥(可以理解为用户密码)
- 一个是服务器生成的公钥,可以公示出来告诉所有设备
- 一个是服务器生成的私钥,只有服务器自己知道
上述这样的流程存在重大安全隐患,黑客可以通过特殊手段来获取到对称密钥,破坏后续传输的安全性中间人入侵
中间人入侵过程
校验机制---证书
引入校验机制,中间人攻击的关键,在于客户端无法区分收到的公钥是不是真正的 来自服务器的公钥还是被黑客篡改过的公钥->想办法对公钥进行校验
于是引入了证书->证明公钥是合法的
这就是为什么使用Fidder时,需要安装证书
->fidder的工作原理就是中间人攻击,只不过是咱们授权的(你安装了fidder证书,就相当于授权了)
1.服务器向第三方公证机构申请证书
2.客户端询问证书
3.客户端校验证书
4.完整流程
问题一:客户端如何确保拿到的pub2是公证机构的pub2,而不是黑客伪造的pub2?
- pub2不是通过网络传输的,而是用户操作系统中内置的(安装好系统,系统就内置了一系列知名公证机构的公钥)
- 只要安装正版系统,而不是搞黑客的盗版系统,就可以信任pub2是正确合法的
问题二:客户端收到的证书 "服务器的公钥"可能被黑客篡改呀?
- 但是改后的数,算出的校验和,与服务器中的原始校验和就对不上了
- 此时客户端就会报错
- 浏览器就会弹出一个红色的页面,告诉你网站不安全,是否要继续访问(证书的校验失败)
问题三:黑客能否自己申请一个证书,用自己的证书,替换整个服务器的证书呢?
- 证书中包含服务器的域名
- 黑客申请的证书的域名 和 正经服务器证书的域名肯定是不同的
- 浏览器这边还是可以验证,输入的URL的域名和 得到证书的域名是不匹配的
- 不匹配->浏览器就会弹出一个红色的页面,告诉你网站不安全,是否要继续访问(证书的校验失败)
问题四:那如果黑客把整个证书给换了,再把域名给伪造了呢?
- 证书是要在公证机构这边申请的,每一个公司/组织申请的域名是不一样的
问题五:若黑客修改证书,同时修改服务器的公钥和数字签名呢?
- 修改公钥,就要重新计算校验和,还需要对校验和重新加密
- 如果黑客使用自己的私钥加密,就会导致客户端系统内置的公证机构公钥 和 黑客的私钥匹配不上
- 不匹配->浏览器就会弹出一个红色的页面,告诉你网站不安全,是否要继续访问(证书的校验失败)
- 那使用公证机构的私钥来加密吗(不然和系统内置的公钥就匹配不上了呀)->黑客能拿到公证机构的私钥吗?[狗头]
问题五:那黑客本地系统不是也能看到公钥和证书吗?
- 引入证书,是防止黑客修改 服务器的公钥
- 黑客看到 系统内置的公证机构的公钥是啥->无所谓(公钥本身就是公开的)
- 黑客看到校验和->也无所谓->校验和本身就是用来校验数据的,本身并没有什么含义
- 整个过程只是为了保证客户端可以验证 服务器的公钥是合法的
- 只要服务器的公钥合法了 就可以使用服务器的公钥对 "客户端产生的对称密钥" 进行加密
- 后续继续使用对称密钥进行加密交流
- 业务数据,黑客是看不到一点的
上述流程是面试的高频考点
1.引入对称加密
2.引入非对称加密
3.中间人攻击
4.引入证书&数字签名
想知后续如何,且听下回分解~
END✿✿ヽ(°▽°)ノ✿