背景
在搭建ldap服务时了解到TSL加密认证,想起以前的https,只知道开启https 无法被破解,但是对于https为何无法被破解一点也不知道。
https发展历史
1.裸奔的http
为什么说是裸奔那? 因为在网络中能够被抓包,特别是公共wifi的,使用http协议去请求,那银行卡号,密码等关键信息都能够被窃听到。
比如这里的抓包
2、加密的https
2.1、加密协议的发展历史
1994年,NetScape公司设计了SSL协议(Secure Sockets Layer)的1.0版,但是未发布。
1995年,NetScape公司发布SSL 2.0版,很快发现有严重漏洞。
1996年,SSL 3.0版问世,得到大规模应用。
1999年,互联网标准化组织ISOC接替NetScape公司,发布了SSL的升级版TLS 1.0版。
2006年和2008年,TLS进行了两次升级,分别为TLS 1.1版和TLS 1.2版。最新的变动是2011年TLS 1.2的
3、加密过程
协议是一个规范,所有的实现都必须按照这个规范来实现。与java的接口类似。
3.1、对称加密
在对称加密是指加密与解密过程都使用同一个密钥。存在
这个过程存在一个问题,如何将密钥安全的送达
3.2、非对称加密
非对称加密主要特点是:
- 1、通过公钥加密,私钥解密;私钥加密,公钥解密
- 2、发送公钥过程完全暴露
- 3、加密效率低
因为需要通过公钥加密,第三方截获到没有私钥无法解密,所以密文对第三方是无用信息。但是数字非对称加密存在效率问题,为解决效率问题引入数字签名。
3.3、数字签名
因为非对称加密存在效率问题,对称加密容易被串改问题。从而引出数字签名
- 1.对明文hash算法得到数字摘要
- 2.用自己私钥加密数字摘要
- 3.对称加密加密明文(如果明文较短可以使用非对称,如果很长使用对称密钥)
- 4.对方公钥加密明文的密钥,hash算法的密钥,自己的公钥生成数字签名;
- 5.将密文,数字签名打包发送给对方
- 5.对方收到后用私有解密
如果接受方私钥泄露就可随意修改内容,但是对方不知道hash算法就算有密钥也无法串改内容。但是无法避免第三方信任问题
3.4、数字证书
为了解决第三方信任问题,引入是数字证书
数字证书主要组成:
- 申请证书组织信息
- 申请证书组织公钥
- 数字签名
上述加密过程都采用颁发证书组织的私钥进行加密,由根证书的公钥一层层的解密出需要证书的公钥,这样保证证书的可信任问题。这样获取到了目标服务器的公钥;
3.5、ssl/Tsl协议
ssl/Tsl协议协议是一个规范,是访问https时都需要实现这个逻辑。
主要解决两个问题:
- 1.加密效率问题
- 2.对称密钥传输问题
访问过程:
- 1.在访问https,浏览器去获取服务端数字证书,得到可信赖的服务端公钥
- 2.用公钥加密公钥
- 3.用client公钥加密对称密钥
- 4.用对称密钥加密信息交互
我们一直说https 是安全的、上述流程解释了为啥https是安全的
附:参考文章
https://juejin.cn/post/6844903764399243278
问题:数字证书加密连是用颁发私钥还是公钥?
我理解是用根证书私钥加密,只有用私钥加密才能保证证书一层一层的拿到公钥
数字签名 -- 阮一峰
问题:鲍勃给苏珊回信时为什么要用数字签名这样的方法?
知乎问题,有大佬回答,认为是因为非对称加密的效率问题导致要引入数字签名。比较赞同这一答案