图解密码技术笔记(八)密钥——秘密的精华

来源:互联网 发布:淘宝名不虚传 生意参谋 编辑:程序博客网 时间:2024/06/10 07:26

密钥(key)

密钥

在使用对称密码,公钥密码,消息认证码,数字签名等密码技术时,都需要一个称为密码(key)的巨大数字。
然而,数字大小的本身并不重要,重要的是密钥空间的大小,也就是可以出现的密钥的总数量。密钥空间的大小是由密钥长度决定的

各种不同的密钥

  • 对称密码的密钥:加密和解密使用同一个密钥,发送者和接收者之间需要共享密钥,因此对称密码又称共享密钥密码
  • 公钥密码的密钥:加密和解密使用不同的密钥,用于加密的密钥称为公钥,它可以被公开的;用于解密的密钥称为私钥,只有需要解密的接受者才有私钥,私钥也称为秘密密钥
  • 消息认证码的密钥:发送者和接受者使用共享的密钥来认证,消息认证码只能由持合法密钥的人计算出来。消息认证码附在通信报文后面,就可以识别通信内容是否被篡改或伪装。消息认证码的密钥必须对发送者和接受者以外的人保密
  • 数字签名的密钥:签名的生成和验证使用不同的密钥,只有持私钥的本人才能签名,由于验证签名使用的是公钥,因此任何人都能够验证签名
  • 会话密钥:密钥是仅限于本次通话的一次性密钥,下次通信就不能使用
  • 主密钥:一直被重复使用的密钥
  • 内容加密密钥(CEK):加密的对象是用户直接使用的消息
  • 密钥加密密钥(KEK):加密的对象是密钥

密钥的管理

生成密钥

1 用随机数生成密钥
2 用口令生成密钥(PBE)

配送密钥

1 事先共享密钥
2 使用密钥分配中心
3 使用公钥密码
4 Diffie-Hellman密钥交换

更新密钥

  • 更新密钥(key updating),使用共享密钥进行通信时,定期(例如每发送1000个字)改变密钥,发送者和接受者必须同时用同样的方法来改变密钥
  • 更新密钥时,接受者和发送者用当前密钥的散列值作为下一个密钥
  • 因为单向散列函数具有单向性,密钥被窃听者获取时,这种方法可以防止破译过去的内容。这种防止破译过去的内容的机制称为后向安全(backward security)

保存密钥

将密钥加密后保存,用一个密钥来代替多个密钥进行保管,这样我们就不需要确保多个密钥(CEK)的机密性,而只需要确保一个密钥(KEK)的机密性就可以了

作废密钥

作废密钥和生成密钥是同等重要的,这是因为密钥和明文是等价的


Diffie-Hellman密钥交换

Diffie-Hellman密钥交换算法是通信双方通过交换一些可以公开的消息就能生成共享的秘密数字,而这一秘密数字就可以被用作对称秘密的密钥。IPSec中就使用了经过改良的Diffie-Hellman密钥交换算法

Diffie-Hellman密钥交换的步骤

Diffie-Hellman密钥交换

基于口令的密码(PBE)

基于口令的密码(PBE),就是一种根据口令生成密钥并用该密钥进行加密的方法。其中加密和解密使用同一个密钥

PBE的意义可以按照下面逻辑理解

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

PBE加密流程

PBR加密流程

0 0