主页

索引

模块索引

搜索页面

常用

说明:

信息的机密性不应该依赖于密码算法本身
而应该依赖于妥善保管的密钥

各种不同的密钥:

密钥的用途
 确保机密性的密钥
* 对称密码
* 公钥密码
 用于认证的密钥
* 消息认证码
* 数字签名
密钥的使用次数
 会话密钥(session key)
 主密钥(master key)
加密的对象
 CEK(Contents Encrypting Key, 内容加密密钥)
 KEK(Key Encrypting Key, 密钥加密密钥)
 KEK 是为了减少密钥数量

密钥的管理:

生成密钥
 生成密钥最好的方法是随机数
* 密码学用途的伪随机数生成器必须是专门针对密码学设计的
 用口令生成密钥
* 基于口令的密码(Password Based Encryption, PBE)
配送密钥
 1. 事先共享密码
 2. 密钥分配中心
 3. Diffie-Hellman 密钥交换
 4. 公钥密码
更新密钥(key updating)
 时间点: 定期(如每发送1000字节)改变密钥
 方法: 用当前密钥的散列值作为下一个密钥
 好处: 前向安全(forward security)
 原因: 借助单向散列函数的单向性, 防止破译过去的通信内容的机制
保存密钥
 KEK: 减少需保管的密钥数量
作废密钥
 作废与生成密钥同等重要

Diffie-Hellman:

定义
 Diffie-Hellman 密钥交换(Diffie-Hellman key exchange)
 Diffie-Hellman 密钥协商(Diffie-Hellman key aggreement)
 基于:「离散对数」
椭圆曲线Diffie-Hellman
 基于: 「椭圆曲线上的离散对数问题」

PBE:

基于口令的密码(Password Based Encryption, PBE)
 加密步骤
 1. 生成 KEK
 2. 生成会话密钥(CEK)并加密
 3. 加密消息
解密步骤
 1. 重建 KEK
 2. 解密会话密钥
 3. 解密消息
作用
 盐的作用: 防御字典攻击
 口令作用: 全球人脑记忆
 改良PBE: 多次迭代散列函数来「拉伸 stretching」

现代加密算法的典型组件包括:

加解密算法、加密密钥、解密密钥。
其中:
加解密算法自身是固定不变的,一般是公开可见的;
密钥则往往每次不同,并且需要保护起来,
一般来说,对同一种算法,密钥长度越长,则加密强度越大。

主页

索引

模块索引

搜索页面