密码

图解密码技术学习-第十一章 密钥

2016-09-19  本文已影响112人  JMasche

什么是密钥

各种不同的密钥

按照使用场景分类

按照用途分类

按照使用次数分类

用于加密内容的密钥和用于加密密钥的密钥

用于加密内容的密钥称为CEK,用于加密密钥的密钥称为KEK。这样做的好处是可以减少保管的密钥数量。

密钥的管理

生成密钥

配送密钥

配送方法可以有几种:事先共享密钥使用密钥分配中心使用公钥密码Diffie-Hellma密钥交换

更新密钥

就是通过定期更换密钥来保证安全性。
书中提到使用密钥的散列值作为下一个密钥,这个可能不是必须的,需要根据实际情况来实现。

保存密钥

密钥保存需要针对密钥进行加密,就是之前提到的KEK。虽然还是需要保存好密钥,但是这样可以大大减少需要保存密钥的数量。

作废密钥

密钥需要作废,是因为有些使用一次就不再使用,也可能是已经泄漏。作废密钥就是要删除,但是需要夏新的是,计算机内一些被删除的密钥仍旧可以恢复,这些都是在作废密钥时需要考虑的。
相比作废密钥,其实密钥丢失更麻烦。

Diffie-Hellman密钥交换

什么是Diffie-Hellman密钥交换

Diffie-Helloman密钥交换的步骤

  1. A向B发送两个质数P和G。P和G是可以公开的,可以由任何一方生成。
  2. A生成一个随机数A1。A1是1~P-2之间的整数,这个数字不是公开的,只有A知道。
  3. B生成一个随机数B1。B1是1~P-2之间的整数,这个数字不是公开的,只有B知道。
  4. A将(G的A1次方 mod P)这个数发给B
  5. B将(G的B1次方 mod P)这个数发给A
  6. A用B发过来的数计算A1次方并求mod P,算出的数就是密钥。
  7. B用A发过来的数计算B1次方并求mod P,算出的数就是密钥。

基于口令的密码(PBE)

加密

  1. 伪随机数生成器生成一个称为salt的随机数。
  2. salt和口令一起做为单向散列函数的输入,得到的输出就是KEK,用来加密会话密钥
  3. 使用伪随机数生成器生成一个会话密钥,并用此密钥对消息进行加密
  4. 使用KEK对会话密钥进行加密,加密后的数据和salt保存在安全地方。KEK可以删除掉,因为有了salt和口令随时都能生成KEK

解密

  1. 用口令和salt生成散列值,也就是KEK
  2. 使用KEK解密会话密钥
  3. 使用会话密钥解密消息
上一篇下一篇

猜你喜欢

热点阅读