-
密钥分配的基本方法(单钥体制)
-
密钥由双方用物理手段发送
-
密钥分配的代价大
-
但在整个网络的局部范围非常有用(图5-2)
-
-
密钥由第三方用物理手段发送
-
密钥分配的代价大
-
-
用已有密钥加密新密钥后发送
-
攻击者获得一个密钥,就能获得以后的密钥
-
初始分配时代价大
-
-
第三方通过保密信道发送给双方
-
每一用户有和密钥分配中心的共享密钥,称为主密钥(密钥加密密钥,物理上安全)
-
通过主密钥分配会话密钥(数据加密密钥),会话完成后销毁
-
主密钥可通过物理手段发送
-
-
-
一个实例(P136)
-
密钥的分层控制(单钥体制)
-
问题
-
一个KDC无法承担分配给全部用户的重任
-
需要所有用户信任KDC,同时对KDC加以保护
-
-
解决
-
建立本地KDC
-
同一范围的用户通过本地KDC获得密钥
-
不同范围的用户通过各自本地的KDC,再通过一个全局KDC获得密钥
-
-
作用
-
减少主密钥的分布,因为大多数主密钥都是在本地共享
-
将虚假KDC的危害限制到一个局部区域
-
-
-
会话密钥的有效期(单钥体制)
-
会话密钥更换越频繁,安全性越高
-
更换太频繁,会延迟客户之间的交换,造成网络负担
-
面向连接的协议
-
每次建立连接时,使用新的会话密钥
-
逻辑连接的时间很长时,定期更换会话密钥
-
-
无连接协议
-
优势:对每个业务都有最少的费用和最短的延迟
-
在某一固定周期内对一定数目的业务用同一会话密钥
-
-
-
密钥的控制使用(单钥体制)
-
密钥标签
-
如DES的64位比特密钥中的8个校验位,作为标签
-
含义为是否用于加密,是否用于解密等
-
-
标签和密钥一起被加密,对标签起到保护
-
问题
-
标签长度被限制
-
解密后才知道标签,限制了对密钥使用的控制方式
-
-
-
控制矢量
-
控制矢量分为若干子段,长度可变
-
在KDC产生密钥时,加在密钥中
-
先由哈希函数压缩到与加密密钥等长
-
和主密钥异或后作为加密密钥
-
-
KDC发送会话密钥时,同时以明文形式发送控制矢量
-
用户需保留会话密钥和其对应的控制矢量
-
优点
-
长度没有限制
-
可以在任一阶段对密钥的使用施加控制
-
-
-
-
密钥分配的基本方法(公钥体制)
-
公开发布
-
用户将自己的公钥发给每一其他的用户
-
问题
-
任何人都能伪造这种公开发布
-
-
-
公用目录表
-
搭建一个公用的密钥动态目录表,由可信实体维护
-
管理员为每个用户建立一个目录,目录包含用户名、公开钥
-
每一用户以可信方式注册公开钥
-
用户随时可用新的密钥
-
用户以安全的方式获得其他目录
-
问题
-
敌手可通过管理员的秘密钥来伪造公钥目录表
-
公钥目录表易受窜扰
-
-
-
公钥管理机构
-
公钥机构为用户建立、维护动态的公钥目录,每个用户都可靠地知道管理机构的公开钥
-
图5-4
-
问题
-
管理机构有可能成为系统的瓶颈
-
公钥目录表易受窜扰
-
-
-
公钥证书
-
证书管理机构为用户建立公钥证书
-
用户的公开钥
-
用户的身份
-
时间戳
-
保证证书的新鲜性,防止重放一个旧证书
-
-
-
数据项经管理机构私钥加密后形成证书
-
用户将公钥证书发送给另一用户
-
-
Diffile-Hellman密钥交换
-
使两个用户安全地交换密钥,得到一个共享的会话密钥
-
算法的安全性基于求离散对数的困难性
-
图5-8
-
-
-
用公钥加密【单钥密码体制的密钥】
-
公钥加密的速度过慢,但可以用来分配单钥密码体制的密钥(会话密钥)
-
简单分配
-
图5-6
-
简单,但密钥泄露的危险性最小
-
易受主动攻击
-
-
具有保密性和认证性的密钥分配
-
图5-7
-
-
-
随机数的产生
-
要求随机数序列满足随机性和不可预测性
-
作用
-
相互认证,防止重放攻击
-
作为会话密钥
-
作为公钥密码算法中的密钥
-
-
随机性
-
均匀分布
-
每个数出现的频率近似相等
-
通过检测得出
-
-
-
独立性
-
任意一个数不能由其他数推出
-
无法检测,但能从方面验证
-
-
-
-
不可预测性
-
数列以后的数是不可预测的
-
-
随机数源
-
采用随机性、精度足够、易于连接到网络系统中的随机数源
-
将高质量随机数编成书
-
数量有限
-
有随机性
-
难以保证不可预测性
-
-
借助安全地密码算法产生
-
算法是确定的,故数列不是随机的
-
-
-
伪随机数产生器
-
伪随机数:似乎是随机的数列
-
最广泛使用:线性同余算法
-
参数
-
模数m:为使随机数列的周期尽可能大,m尽可能大(接近)
-
乘数a(0≤a<m)
-
增量c(0≤c<m)
-
初始种子X0(0≤X0<m)
-
-
迭代公式:Xn+1=(aXn+c) mod m
-
评价标准
-
迭代函数是整周期的,即数列中的数在重复之前能产生0~m之间所有数(例如:m是素数且c=0,a是m的一个本原根)
-
看上去随机
-
有效地利用32位运算实现(m可取-1)
-
-
精心选取a,c,m
-
-
线性同余算法达到整周期的充要条件
-
gcd(c,m)=1
-
对所有素数p|m,a同余1 mod p
-
若4|m,则a同余1 mod4
-
-
线性同余算法本身不具有随机性
-
敌手知道算法的参数和一个数,就能得到以后所有数
-
敌手通过四个连续的数,就能够确定参数
-
-
改进
-
利用系统时钟修改随机数数列:每当产生N个数后,就用时钟值mod m作为新种子或将时钟值加到随机数上
-
随机数产生器的溢出问题
-
颠倒两个运算的顺序,则可以避免溢出
-
改进方式:P147
-
-
-
线性同余算法的常用变形
-
幂形式
-
RSA产生器:参数取为RSA的参数
-
平方产生器
-
-
离散指数形式
-
-
-
-
基于密码算法的随机数产生器
-
循环加密
-
每产生一个密钥,计数器加一
-
用主密钥给计数器的输出加密,得到输出序列
-
-
输出反馈OFB模式
-
用加密算法的一个个64比特输出,作为一个很好统计特性的伪随机数序列
-
-
ANSI X9.17伪随机数产生器
-
密码强度最高的伪随机数产生器之一
-
使用三重DES加密(图5-10)
-
-
-
秘密分割
-
秘密分割门限方案
-
将秘密s分成n个部分,由k个参与者持有部分可重构s
-
k为门限值
-
-
方案是完善的
-
少于k个参与者持有的信息得不到秘密s的任何信息
-
-
Shamir门限方案
-
基于多项式的lagrange插值(代数插值)公式
-
把密钥s取作f(0)
-
已知k-1个子密钥,得不到关于秘密s的任何信息
-
例5-4
-
-