Key

各种不同的密钥

  • 对称密码的密钥与公钥密码的密钥

  • 消息认证码的密钥与数字签名的密钥

  • 用于确保机密性的密钥与用于认证的密钥:对称密钥和公钥密码的密钥都是用于确保机密性的密钥,消息认证码和数字签名所使用的密钥则是用于认证的密钥。

  • 会话密钥与主密钥:通信中所使用的密钥仅限于本次通信的一次性密钥下次通信就不能使用,这样的密钥称为会话密钥。相对于会话密钥一直被重复使用的密钥称为主密钥。

  • 用于加密内容的密钥与用于加密密钥的密钥:加密的对象是用户直接使用的信息这样情况下所使用的密钥称为CEK(内容加密密钥),用于加密密钥的密钥称为KEK(密钥加密密钥)。CEK与KEK

密钥的管理

  1. 生成密钥
    • 用随机数生成密钥
    • 用口令生成密钥
  2. 配送密钥
  3. 更新密钥
  4. 保存密钥
  5. 作废密钥

Diffie-Hellman密钥交换

Diffie-Hellman密钥交换用这种算法通信双方仅通过交换一些可以公开的信息就能够生成出共享的秘密数字,而这一秘密数字就可以被用作对称密码的密钥。

Diffie-Hellman密钥交换的步骤: Diffie-Hellman密钥交换

基于口令的密码(PBE)

基于口令的密码就是一种根据口令生成密钥并用该密钥进行加密的方法。

PBE的意义:

想要确保重要消息的机密性→ 将消息直接保存在磁盘上的话可能会被别人看到→ 用密钥(CEK)对消息进行加密吧→ 但是这次又需要确保密钥(CEK)的机密性了→ 将密钥(CEK)直接保存在磁盘上好像很危险→ 用另一个密钥(KEK)对密钥(CEK)进行加密吧→ 这次又需要确保密钥(KEK)的机密性了。进入了死循环→ 这样就用口令来生成密钥(KEK)吧→ 但只用口令容易遭到字典攻击→ 那么就用口令和盐共同生成密钥(KEK)→ 盐可以和加密后的密钥(CEK)一起保存在磁盘上,而密钥(KEK)可以直接丢弃→ 口令就记在自己脑子里

PBE加密过程

PBE加密过程

PBE解密过程

PBE解密过程

盐的作用:盐是由伪随机数生成器生成的随机数,用来防御字典攻击。字典攻击是一种事先进行计算并准备好候选密钥列表的方法。

口令的作用:通过口令生成密钥(KEK),再用这个密钥来加密会话密钥(CEK),由于通过口令生成的密钥(KEK)强度不如伪随机数生成器生成的会话密钥(CEK),因此在使用基于口令的密码(PBE)时需要将盐和加密后的CEK通过物理方式进行保护。