PKI技术
1.概述
名称:公钥基础设施技术Public Key Infrastructure
作用:保证信息安全,通过数字签名+加密技术
组成:公钥加密技术,数字证书,CA(证书办法机构),RA(相当于CA的分部)
这四个组成来完成加密和数字签名来完成公钥基础设计技术,保证信息安全
2.信息安全三要素
2.1 机密性
不被其他人知道内容
2.2 完整性
不被别人修改,破坏
2.3 身份验证
不被其他人伪装
哪些领域用到
3.常见使用 领域
- SSL/HTTPS
- VPN
4.公钥加密技术
作用:给信息加密、数字签名等做安全保障
4.1 加密算法
举例X+5=Y,这就是一个简单的算法,其中
X是原文
Y是密文
5就是密钥
简单说算法就是给了原文,密钥,可以得到密文的一种机算方法
1)对称加密算法
加解密的密钥一致(密钥容易丢失,加解密双方使用的是同一个密钥,在相互协定密钥值或者密钥传输时就可能被监听到密钥内容)
常见的有DES(基础加密算法),3DES,AES(高级加密算法)
2)非对称加密算法
需要四个密钥,
- 通信加解密双方各自需要(一对公私钥)
- 双方各自交换公钥
- 公钥和私钥为互相加解密的配对关系:用公钥加密的必须用私钥才能解开,用私钥加密的必须用公钥解开
- 公私钥虽然时一对的,但是不能互相逆推(好神奇,但是不知道为什么)
常见的有RSA(比如https就是),DH算法
5.非对称加密算法原理
5.1 只能保证机密性的方案
- 加解密双方互相持有对方的公钥。加密者用解密者公钥加密,并发送给解密者,解密者用自己的私钥解密即可
5.2 能保证完整性的方案
这里的加密信息传递流程如上图
1.AB互相交换公钥,且约定用RSA加解密
2.A想给B发送一个信息,用B的公钥加密,得到密文文件
3.不直接密文文件发给B,而是将密文文件进行hash,得到一个数字签名,再用自己的私钥对数字签名加密
4.将密文文件和数字签名密文一起发给B
5.B收到后解密,先拿到密文签名,发现可以用A发送给自己的公钥解开,证明这个人是可信的
6.解析密文,将密文hash,发现得到的hash与收到的hash(这个hash是a用私钥加密过再用a的公钥解开的)一致。说明这个密文文件没有被篡改过
7.B放心的用自己的私钥解密,得到了明文信息
5.3 补充:hash算法
hash算法可以将无论多大的数据得到一个唯一的值,比如一个100G的文件,用hash之后,就得到一串唯一的字符串。hash值也叫摘要,且是不可逆算法,所以hash的作用只有一个就是验证完整性。比如很多大型文件下载的最后会做校验,这样如果有数据损坏了,会提示出来
最常用的hash算法有md5,sha,sha-128,sha-256,后面的数字是不同的长度
用md5sum +文件名,可以查看文件的md5值,要确定同名文件是不是同一个文件,可以用md5值进行比较,相同,则是同一个文件
md5sum ~/.bashrc # linux查看文件md5值
certtuil -hashfile xxx.txt md5 # win查看文件的md5值
hash算法得到的值就是文件的数字签名,在加密内容里经常放在密文文件头里,做完整性校验
5.4 可能被拦截冒充
Q问题
如果在A,B交换公钥的时候,有一个人C,拦截了A的公钥,发送的是自己的公钥,那B就没办法知道了,这样就有了漏洞
等B收到信息的时候,发现用A的公钥yyy可以解密,他以为是A,因为信息是A的私钥加密的,殊不知,他最开始收到的就不是A的公钥,错误从一开始就埋下了!
5.5 CA机构辅助身份验证
为了解决这个问题,就需要有一个第三方来证明发送消息的的确是A,这个机构就是CA
流程如下:
1、A和B都信任CA这个证书颁发机构,在他们的电脑上有信任的机构列表
2、A要给B发信息了,先从CA注册申请一个证书,CA把A的信息,比如ip,公钥,姓名等收集起来,并且用自己的私钥999加密就得到了数字签名,把这个数字签名和信息放在一起,并且盖个章,说这个证书我公证过了,把证书颁发给A
3、A发送信息的时候,把公钥和这个证书一起发送给B,试图让B相信自己就是A,而不是别人冒充的
4、B收到信息之后,核对A的信息,拿到证书,去自己电脑看这个机构是不是合法的,然后用这个机构的公钥解开了信息,得到了 公钥,与A发过来的公钥一样,说明 A就是A,不是别人冒充,在AB双方信任的基础上,使用非对称加密的方式,再用公私钥,hash等保证数据的秘密性,完整性
5.6 补充:数字签名
数字签名简单理解就是用自己的私钥加密,拥有自己的独有气息
高亮部分就是签名的过程,就是用自己的私钥加密某个信息,对方可以用我发过去的公钥解开,那这个签名就没有问题,现在的数字签名一般都是对摘要签名,也就是hash值。因为如果对原文加密,可能会导致签名太大,摘要就很小了
5.7 补充:证书
证书就是保证公钥的合法性,数字证书必须由权威的第三方机构即CA颁发
证书格式遵循X.509标准,不论那个CA的证书,全球 标准统一
包含的信息:
- 使用者的公钥
- 使用者的标识信息(比如名称,email)
- 有效期
- 颁发者标识(CA的名字)
- 颁发者数字签名