密钥管理之公钥的分配(分析,论述)
(第几次回话,有什么缺陷)
一、引子
公钥分配方法:公开发布,公开可访问的目录,公钥授权,公钥证书
公钥的公开发布:电子邮件后面附上PGP密钥或者发布到邮件列表上
问题:任何人都可以伪造公钥的发布
二、公开可访问的目录
1、维护一个动态可访问的公钥目录可以获得更大程度的安全性
2、一个可信实体或组织负责公开目录的维护和分配
3、获取私钥可以伪造公钥
三、公钥授权过程
1、A 发送带有时间戳(防止重放攻击)的消息给公钥管理员(PKI)获取B的公钥
2、PKI用私钥加密(对称加密,共享的回话密钥)公钥B并发给A
3、A用B的公钥加密(带有序列号)并向B发消息
4-6、B 同A获取公钥,并向A发消息
7、A确定完成B的身份并向B发消息
四、公钥证书(CA)
封装了公钥,签名,id等等消息
五、利用公钥密码分配传统密码体质的密钥
公钥密码算法速度较慢,因此更适合作为传统的密钥交换
A 和 CA进行通信的时候由于每个人都有公钥所以不能用RSA协议,而是使用对称密码
然而A怎么和CA进行协商密钥分配呢?
具有保密性和真实性的密钥分配(三次握手)
利用公钥分发密钥
用B的公钥加密,在用A的私钥再次进行加密(相当于数字签名)
Diffie-Hellman密钥交换(考:计算,中间人攻击)
公钥分发机制,不能用于数据加密,
有限域的指数运算(RSA是有限域中的乘积运算)
交换的是对称密码的会话密钥
首先A和B共享一个素数q,一个整数a,其中a<q且a是q的本原根(见离散对数)
A B
随机整数,私钥XA,XA<q 随机整数,私钥XB,XB<q
计算公钥YA = a^XA mod q 计算公钥YB = a^XB mod q
收到公钥YB 收到公钥YA
计算共享密钥K=(YB)^XA mod q 计算共享密钥K=(YA)^XB mod q
安全性考虑:对于大素数,计算离散对数不可行。
都是可以受到中间人攻击:中间人截获YA,YB;并分别向A,B发送K1,K2;可以窃听甚至修改A,B互发的消息。
中间人攻击
ElGamal密码体制(考:数字加密解密,数字签名)
要求掌握计算
基于离散对数求解困难的概率系统
AB 共享大素数p,本原元素 a,明文m:0<= m <=p-1
1、A选取随机数XA作为私钥,其中0<= XA <=p-1
2、A求公钥,并发布
YA = a^XA mod p
公钥 = {YA,a,p}
3、B使用A的公钥加密
(1)首先算出加密密钥K
(2)B选取任意k( 0<= k <=p-1)
(3)K = YA^k mod p
(4)加密分别为加密密钥和加密明文
C1 = a^k mod p, C2 = MK mod p
4、A接收消息后解密
先求出密钥K = C1^XA mod p
再求出明文M = (C2*K^-1) mod p