1 对称加密

对数据进行 可逆 的加密过程称为对称加密。

对称加密=私有秘钥+公开算法

2 逐位加密、分块加密

根据加密过程中对目标数据单元划分的不同分为 逐位加密跟分块加密

2.1 逐位加密(stream ciphers)

对每个byte进行加密。

2.2 分块加密

如以8Byte为单位进行加密, 这里被加密的块称为 cipher blocks

可以想象, 逐位加密币分块加密消耗更多的资源。因此通常

  1. 逐位加密通过硬件实现。
  2. 分块加密使用软件实现。

3 填充

分块加密时,如以56Byte为单位,如果最后剩余的数据 小于56Byte 那么就需要把不足的部分进行填充。填充有多种算法。

4 模式(mode)

可以控制对称加密算法执行的具体过程,这称为模式。

5 非对称加密

非对称加密在数据交互过程中使用两套钥匙,公钥和秘钥。公钥公开、秘钥私有。

5.1 交互过程

  • 假设A和B进行交互,A使用B的 公钥 对数据进行 加密 , 发送。
  • B接收数据,使用 秘钥 对数据进行 解密
  • B接受A的 公钥 对数据进行 加密 , 发送。
  • A接收数据,使用自己的 秘钥 对数据进行 解密

这样的交互过程存在问题。 如果A与B之前插入另一个C,那么C可以随意截获数据,之后把自己的数据利用对应的公钥加密后发送出去。
而接收者会无条件的接收数据。

因此加入 消息签名 一种消息签名的机制- 数字签名

5.2 数字签名

如上的问题可以通过这种方式来解决。A在发送数据时,除了数据本身,还要发送一个信息摘要,并且使用自己的私钥加密。

这样,即便C截获数据,篡改并发送给B,因为B接收数据后,首先会 使用A的公钥 得到A发送的信息摘要 ,
之后通过对比就可以知道数据是否被篡改,所以就可以 保证数据传输过程中不会被篡改

5.3 数字证书

上面过程中,B会保存 A 和其公钥映射关系 . 正常情况下, 这样没有问题, 但是如果C通过一些不法手段把B所持有的 A的公钥换成了自己的公钥 ,那么数字签名也无法保证安全。可以看到, 这里的关键问题是 B 自己不加保护的保存了 A与其公钥的映射信息, 因此这个问题可以通过如下方式解决:

  1. A 拿着自己的公钥到大家都信任的D那里,让他使用自己的秘钥对A的公钥进行加密。
  2. A发送数据时,除了以上几项,再加上一个自己的公钥证书。
  3. B接收到数据后,使用 D的公钥解密证书得到A的公钥
  4. 再进行后续操作。

这样就可以保证B得到数据的确是A发送的数据, 即 通过数字证书验证了A的身份

步骤4中B 最终仍然需要保存 D 与其公钥的映射信息, 这样跟直接保存 C 的映射信息有什么区别呢?

区别在于直接保存 C, 那么还有 E,F,G,H,I…, 这样需要保护映射信息会非常困难, 而如果使用 D, 那么只需要保护 D 的映射信息.

5.3.1 证书链

上面数字证书的流程中, D扮演的是一个大家都信任的角色 , 因此所有的想要能够证明自己身份的人都要到D那里去。 这样如果 人非常多 的情况下,D就不太可能一个人来完成所有这些工作。

因此, D首先找到一个他信任的E,然后 利用自己的私钥把E的公钥加密 ,之后允许E去为需要证明身份的人颁布证书。
这样,E就可以为需要证书的人颁布证书了。

颁布证书时,E在使用自己的私钥为申请人加密的同事之后,
把加密后的数据以及自己从D处得到的证书一同交给申请人。

这样就实现了一个链结构。

接受了带有证书的加密信息的人,验证证书的过程如下:
5054gLx.png

5.4 结论

通过如上过程得出:

5.4.1 数字签名

可以保证

数据在两端交互过程中不被破坏

不能保证

数据发送方的真实身份

5.4.2 数字证书

可以解决数字签名的问题:它能够验证数据发送方的身份。