工作需要,研究了一下安全相关理论知识和名词

非对称加密中的公钥和私钥

在加解密的过程中,加密密钥和解密密钥不同的加密方式,就是非对称加密。例如:

在上图中,加密密钥和解密密钥是不同的,并且两个密钥成对出现,替换掉任意一个密钥,这个加解密过程就不成立,这就是一种非对称加密的形式。

在非对称加密过程中,由于密钥是成对的,两个密钥公开其中一个,只要保存好另一个密钥,这个过程仍然是安全的,这个被公开的密钥就被称为公钥,自己保留的密钥就是私钥。因为非对称加密的这种特性,该加密过程可用于安全通信、文件校验等场景。

需要注意的是,理论上非对称加密中的两个密钥,使用任意一个做公钥都是可以的,但在RSA算法中,私钥和公钥生成的规范不同,二者并不能互换角色。

签名

在非对称加密的基础上,考虑如下场景:

现有A和B两个人,A在自己的电脑上生成了一对密钥,并把公钥发给了B

A准备向B发送一个文件,为了确保这个文件在发送过程中不被篡改,并且让B能够确定是A发出的,A采用了这样的方式:将文件先计算哈希和,得到一个文件摘要,然后使用私钥对这个文件摘要进行加密,生成了数字签名,然后把这个签名和文件一起发送给B。

这样B收到文件后,对数字签名部分使用公钥进行解密,解密成功说明该文件是由A发出的;再对文件部分计算哈希和,并跟解密之后的摘要进行对比,如果哈希和与摘要相同,说明文件未被篡改过。

证书

在上面的场景中,如果出现了一个黑客C,C自己生成了一对密钥,然后在A将公钥发给B的过程中截获了公钥A,并替换成自己的公钥C

但B并不知道此事,B仍然以为自己接收的是公钥A;此时C向B发送一个经过签名的恶意文件,B虽然能够完成对该文件的验证,但是B仍以为该文件是A发出的。

为了解决这种情况,需要一个可信的第三方机构D,并同时引入证书的概念。D生成一对密钥,并把自己的个人信息和公钥打包成一个文件交给B,B相信D,所以把这个文件存了下来,这个文件就是CA证书

A把自己的公钥和个人信息也打包成一个文件,交给D进行认证。D在确认这个文件中的公钥跟信息一致(均属于A)的时候,就使用自己的私钥对这个文件进行签名,这样这个文件就是一个经过认证的数字证书

当B需要和A通信时,D会把证书A使用自己的私钥D进行签名,并附带上自己的机构信息,然后将这个文件发送给B。

B拿到包含公钥A的证书后,使用CA证书中包含的公钥D进行验证,确认可信后拿到公钥A,然后就可以跟A安全的通信了。