130 likes | 322 Views
7.3 密钥协商 公钥密码系统不需要使用安全通道交换私钥。但公钥密码系统比私钥密码系统要慢很多,所以交换私钥是需要的。所谓密钥协商是指参与的各方提供消息共同相成密钥,而任何一方都不能事先预定所产生的密钥值。 7.3.1 密钥预分配 密钥预分配方案的特点是以尽量小的传输量和存贮量,完成每对网络上的用户 U 和 V 安全地计算密钥 在实施中,首先用户与可信中心交互取得必要信息。在用户间通信是利用这些信息构造双方的会话密钥。. Blom 密钥分配方案
E N D
7.3 密钥协商 公钥密码系统不需要使用安全通道交换私钥。但公钥密码系统比私钥密码系统要慢很多,所以交换私钥是需要的。所谓密钥协商是指参与的各方提供消息共同相成密钥,而任何一方都不能事先预定所产生的密钥值。 7.3.1 密钥预分配 密钥预分配方案的特点是以尽量小的传输量和存贮量,完成每对网络上的用户U和V安全地计算密钥 在实施中,首先用户与可信中心交互取得必要信息。在用户间通信是利用这些信息构造双方的会话密钥。
Blom密钥分配方案 • 可信中心公开一个素数p,每个用户公开一个不同的元素 。可信中心选取三个秘密元素 ,形成 • 可信中心计算 在安全信道上将 和 传送给用户U • 当用户U和V要通信时,U计算 ,V计算 。(显然, ).
可以证明没有一个用户能确定另外两个用户共有密钥的任何信息。但面对两个合伙用户,Blom方案是不安全的。因为用户掌握 : 由 ,系数行列式不等于0,可 以解出 。U与V很容易利用任何一对用户的公开信息计算他们的会话密钥。
Diffie-Hellman 密钥预分配方案 本方案中可信中心TA的任务是为网中用户颁发公钥证书,并将所有用户的公钥证书建立数据库。TA公开选定的素数p, 的本原元素 及自己的公钥。 当用户U加入到网中,由用户U自己选择私钥 并计算公钥 使得 。用户向TA提交公开的身份信息ID(U) 和公钥 (自己保存私钥 )。TA为每个用户构造公钥证书C(U) 并将所有用户的证书存入数据库。证书中的TA签名任何人都可以验证。TA在用户公钥证书中的签名能有效地防止敌手修改他人的身份信息,无须担心被动攻击。
当用户U想与V通信时,先从用户V公钥 证书中得到 ,计算相互通信使用的会话 密钥 。对方同样可 以得到此密钥。
Diffie-Hellman问题 已知 ,是否容易计算出 定理 攻破EIGamal 公钥密码系统等价于解Diffie- Hellman问题。 证明: EIGamal 加密和解密算法分别为
令解Diffie-Hellman问题算法 A , 那么 执行EIGamal 解密的算法 对于Diffie-Hellman问题输入 , 容易看出
7.3.2 Diffie-Hellman及相关的密钥协商 Diffie-Hellman密钥交换 (Key Exchange) p是素数, 是 的本原元素,它们是公开的。这里与Diffie-Hellman密钥预分配方案的不同之处是用户U的秘密指数 随机选取并不断变化. 1) 用户U随机选择 ,计算 送 给用户V; 2) 用户V随机选择 ,计算 送 给用户U; 3) 用户U计算 ; 4) 用户V计算 。
上述方案易受主动攻击者W中间入侵(Intruder In The Middle), W截获U, V的消息并用自己的消息代替,最后: U和W建立的密钥是 W和V建立的密钥是 U加密并送往V的信息,W能解密但是V不能解密,V加密并送往U的信息,W能解密但是U不能解密。这里关键是用户U与V要能保证“是他们自己在交换信息”,而不是与第三者。
MTI 密钥协商协议 T.Matsumoto, Y. Takashima & H. Imai 于1986年提出这个两遍(two-pass)协议,即在协议中传输两次。它的特点是用户不需要计算任何签名。 P是素数, 是本原元素,p和 是公开的。每个用户U有身份信息ID(U)、密钥 、公钥 、TA发放的证书 1) U随机选择 ,计算 并 发送 给V.
2) V随机选择 ,计算 并发送 给U 3) U从C(V)中获得 ,计算 V从C(U)中获得 , 计算 主动敌手可能改变U和V之间传送的信息,由于不知道U和V的密钥 ,所以得不到密钥K。该协议使U和V双方确信在网络中除了自己只有对方能够计算出密钥K,这种性质称为隐式密钥认证。
端—端协议(Station-to-Station Protocol) W.Diffie, P.C.van Oorschot & M.J. Wiener在1992年提出端—端协议。该协议在建立密钥的同时认证对方的身份。下面只介绍它的简单形式。 p 是素数, 是本原元素,p和 公开。每个用户U有身份信息ID(U)、签名方案和验证方案、 TA签发用户U的公钥证书 1) U选择随机数 ,计算 并发 送给V.
2) V选择随机数 ,计算 和 ,并发送 给U. 3) U计算 ,使用 验证 ,使用 验证C(V)。计算 ,并将 发送给V. 4) V使用 验证 ,使用 验证C(U). 由于签名 和 能抵抗中间入侵攻击。本协议没有提供密钥确认,可以通过把这两个签名再用K加密即可达到目的。