相比于http的明问传输,易被篡改的特点,提出了https。
https利用了对称加密和非对称加密,引入了第三方机构CA,证书权威机构
协议上讲它在应用层下面加了个SSL/TLS层。
首先服务端会向第三方机构申请证书,如何申请呢?服务端告诉认证中心自己的个人身份信息以及公钥,认证中心经过核实后发给服务端一个证书。证书包含了哪些内容呢?
- 证书颁发机构名称
- 证书本身的数字签名(先hash再用机构的私钥加密)
- 被机构私钥加密过的证书持有者的公钥
- 签名证书用到的hash算法
- 服务端网址
还有一个前提,就是现在的浏览器都默认内置了CA根证书,包含了CA的公钥。
有了这些东西后,客户端现在想和服务端通信,服务端把证书发给客户端,客户端根据自己的根证书里面的公钥,去
- 验证证书真假(先拿证书公钥把签名解密得到摘要A,然后根据相应hash算法对证书重新计算摘要得到摘要B,看两个是否相等)
- 证书是真的以后,用机构公钥解密证书持有者的公钥(注意证书持有者也就是服务端有一对密钥,证书也有一对)
- 然后拿解密出来的公钥加密后面真正通信时需要用到的对称加密的密钥进行加密,发给服务端,服务端拿自己的私钥解密得到密钥,开始通信。
总结:https思想上的创新点在哪里呢?引入了第三方机构和非对称加密,所以说如果这个第三方机构凉了那也就真凉了,反正这些做法都不能说从根本上解决安全问题,因为总有一个起始点是不安全的。据说量子密码可以突破这个起始点?