1 密钥长度
对称密码体制的密钥长度
穷举攻击: 如果密钥长n位,则有2n种可能的密钥
悲观地看,至少应使用112位密钥。
其他方法:
- 使用网络的空闲时间
- 使用攻击病毒
密钥长度的确定取决于因数分解的时间
关于密钥长度的讨论:
所保存信息的价值
信息保密的时间
信息的攻击者及其使用的设备和资源情况
2 密钥管理
密钥传送
- 两类密钥:
密钥加密密钥:KEK
数据加密密钥:DK - 把密钥分成几个不同的部分,通过不同的信道(方式)发送密钥的各部分
密钥验证
- 验证密钥本身的特征:数字签名,KDC,电话验证
- 其他:
密钥传输期间错误的检测
解密期间密钥错误的检测
密钥使用
- 会期密钥
- 控制向量CV
密钥更新:
- 从旧密钥生成一个新密钥
- 使用一个单向哈希函数
密钥存储:记忆、磁卡、ROM密钥、智能卡
密钥备份
- 使用秘密共享协议
- 使用智能卡暂存密钥
密钥的生存期
- 会期密钥:每天更换一次
- KEK:数月或一年
- 存储文件的加密密钥:不常更换
- 至少每两年更换一次
密钥的废止
- 纸上:烧掉或撕碎
- EPROM或PROM:芯片粉碎到最碎的程度扔掉
- 硬盘:将存储密钥的实际位多次重写,或将磁盘粉碎
公开密钥密码系统的密钥管理
- 公钥证书
- 分布式密钥管理
3 算法类型与模式
密码模式:将基本密码、某些反馈和某些简单的操作组合起来的密码。
- 电子代码簿模式(ECB)
每组明文独立地进行加密,且不必连续加密一个文件 - 密码分组链接模式(CBC)
对分组密码加入反馈机制:前面一组的加密结果反馈到当前组的加密之中。
C i = E k ( M i ⊕ C i − 1 ) C_i=E_k(M_i\oplus C_{i-1}) Ci=Ek(Mi⊕Ci−1)
M i = C i − 1 ⊕ D k ( C i ) M_i=C_{i-1}\oplus D_k(C_i) Mi=Ci−1⊕Dk(Ci)
初始向量IV:随机数,作为第一组,不必保密;
填充:专门加密最后短块,密文挪用
错误传播
安全性:攻击者在被加密信息的尾部增加信息,攻击者能修改一组密文去控制后面信息的变化 - 密码反馈模式(CFB)
C i = M i ⊕ E k ( C i − 1 ) C_i=M_i\oplus E_k(C_{i-1}) Ci=Mi⊕Ek(Ci−1)
M i = C i ⊕ E k ( C i − 1 ) M_i=C_i\oplus E_k(C_{i-1}) Mi=Ci⊕Ek(Ci−1)
初始向量IV:惟一,不必保密 - 输出反馈模式(OFB)
C i = M i ⊕ S i C_i=M_i\oplus S_i Ci=Mi⊕Si
M i = C i ⊕ S i M_i=C_i\oplus S_i Mi=Ci⊕Si
S i = E k ( S i ) S_i=E_k(S_i) Si=Ek(Si)
初始向量S0:惟一,但不保密
错误传播:不扩散,需同步
安全问题:反馈位数与块大小相同时使用
OFB模式中的序列密码 - 计数器模式
C i = M i ⊕ S i C_i=M_i\oplus S_i Ci=Mi⊕Si
M i = C i ⊕ S i M_i=C_i\oplus S_i Mi=Ci⊕Si
S i = E k ( S 0 + i − 1 ) S_i=E_k(S_0+i-1) Si=Ek(S0+i−1) - 密码模式的选择
- 交叉存取技术