![cover](https://img-blog.csdnimg.cn/img_convert/329355995843b892386ff8657a9702b3.png)
[XJTU计算机网络安全与管理]——第八讲密钥管理和分发
[XJTU计算机网络安全与管理]——第八讲密钥管理和分发
文章目录
[XJTU计算机网络安全与管理]——第八讲密钥管理和分发
一、密钥管理概述
如何对密钥进行分发与管理是制约密码应用的重要因素
密钥分为两类:
短期密钥:数据加密
长期密钥:用于认证,签名,访问控制,保护短期密钥等
对于中介的需要:可信第三方
对称加密:密钥分发中心(KTC,KDC)
证书中心:CA
密钥管理结构解决的问题
密钥的生成与分发
密钥的可靠存储
若发生密钥泄露,能够及时撤销或更新
二、利用对称加密的第三方密钥分发
**密钥转换中心(KTC)**为两个实体中间的未来通信传输对称密钥,其中至少有一个实体具有自行生成或获取的。
KDC生成并分发会话密钥
KTC:密钥是A生成的,交给KTC,KTC转发
KDC:密钥由KDC生成的
判断题
KDC
KDC生成并分发会话密钥
会话密钥
临时的密钥
适用于两用户间的加密
一次逻辑会话后抛弃
主密钥
加密会话密钥
由用户与KDC共享
密钥的层次
对称加密的密钥是分级的.有普通密钥、长期密钥、短期密钥等.
密钥分配
典型的两类自动密钥分配途径:
集中式分配方案:利用网络中的密钥分配中心(key distribution center,KDC)来集中管理系统中的密钥,密钥分配中心接收系统中用户的请求,为用户提供安全地分配密钥的服务。
分布式分配方案:分布式分配方案是指网络中各主机具有相同的地位,它们之间的密钥分配取决于它们自己的协商,不受任何其他方面的限制。
通常采取两种方案的混合:主机采用分布式方式分配密钥,而主机对于终端或它所属的通信子网中的密钥可采用集中方式分配。
对称密钥分配的基本方法
①密钥由A选取并通过物理手段发送给B;
②密钥由第三方选取并通过物理手段发送给A和B;
③如果A、B事先已有一密钥,则其中一方选取新密钥后,用已有的密钥加密新密钥并发送给另一方;
④如果A和B与第三方C分别有一保密信道,则C为A、B选取密钥后,分别在两个保密信道上发送给A、B。
密钥分配实例——重点
假定两个用户A、B分别与密钥分配中心有一个共享的主密钥KA和KB,A希望与B建立一个逻辑连接,并希望有一个一次性会话密钥来保护该连接上的数据传送,分配过程见下图:
可通过以下几步来完成:
1️⃣ A向KDC发出会话密钥请求
表示请求的消息由两个数据项组成:Request||N1
Request是A和B的身份,
N1是这次业务的惟一识别,N1是一次性随机数,可以是时间戳、计数器或随机数
每次请求所用的N1都应不同,且为防止假冒,应使敌手对N1难以猜测,因此用随机数作为这个识别符最为合适。
2️⃣ KDC为A的请求发出应答
应答是由KA加密的消息,因此只有A才能成功地对这一消息解密,并且A可相信这一消息的确是由KDC发出的。消息中包括A希望得到的两项:
①一次性会话密钥Ks
② A在第1步中发出的请求,包括一次性随机数,目的是使A将收到的应答与发出的请求相比较,看是否匹配。
因此A能验证自己发出的请求在被KDC收到之前,未被他人篡改。而且A还能根据一次性随机数相信自己收到的应答不是重放的对过去的应答。
此外,消息中还有B希望得到的两项:
①一次性会话密钥;
② A的身份(例如A的网络地址)IDA
这两项由 K B K_B KB加密,将由A转发给B,以建立起A、B之间的连接,并向B证明A的身份
3️⃣ A存储密钥并向B转发 E K B [ K S ∣ ∣ I D A ] E_{KB}[K_S||ID_A] EKB[KS∣∣IDA]
因为转发的是加密后的密文,所以转发过程不会被窃听。B收到后,可得到会话密钥Ks,并从IDA可知另一方是A,而且还从EKB知道的确来自KDC。
这一步完成后,会话密钥就安全地分配给了A、B。然而还能继续以下两步。
4️⃣ B用会话密钥KS加密另一个一次性随机数N2,并将加密结果发送给A。
5️⃣ A以 f ( N 2 ) f(N_2) f(N2)作为对B的应答,其中 f f f是对 N 2 N_2 N2进行某种变换(例如:加1)的函数,并将应答用会话密钥加密后发送给B。
这两步可使B相信第3步收到的消息不是一个重放消息。
⚠️ 第3️⃣ 步已经完成了密钥分配,第4️⃣ 、5️⃣ 步结合第3️⃣ 步执行的是认证功能
KDC的分层
如果网络中的用户数目非常多且地域分布非常广,可采用分层结构:
在每个小范围(如一个LAN或一个建筑物)内建立一个本地KDC,负责该范围内的密钥分配;
如果两个不同范围的用户想获得共享密钥,需要通过各自的本地KDC,并由两个本地KDC经过一个全局KDC完成密钥分配。这样就建立了两层KDC结构。
好处:
可减少主密钥的分布,因为大多数主密钥是在本地KDC和本地用户之间共享;
可将虚假KDC的危害限制到一个局部区域内。
分布式密钥分配
不借助第三方,两个人必须认识
过程有如下三步:
1️⃣ A向B发出建立会话密钥的请求和一个一次性随机数N1。
2️⃣ B用与A共享的主密钥MKm对应答的消息加密,并发送给A。应答的消息中有B 选取的会话密钥、B的身份IDB、 f ( N 1 ) f(N_1) f(N1)和另一个一次性随机数N2
3️⃣ A使用新建立的会话密钥KS对 f ( N 2 ) f(N_2) f(N2)加密后返回给B。
三、公钥加密体制的密钥分配
包括两方面内容:
公钥密码体制所用的公钥的分配;
如何用公钥体制来分配对称密钥密码体制中使用的密钥。
简单密钥分发——重点
如果A想要和B通信,需要以下几步:
1️⃣ A生成公钥对 { P U a , P R a } \{PU_a,PR_a\} {PUa,PRa},然后发送包含 P U a PU_a PUa和A的标识i符 I D A ID_A IDA的消息给B
2️⃣ B生成 K s Ks Ks,并用A的公钥加密后发给A。
3️⃣ A计算
D
(
P
R
a
,
E
(
P
U
a
,
K
S
)
)
D(PR_a,E(PU_a,K_S))
D(PRa,E(PUa,KS))从而恢复密钥,因为只有A能解密该信息,所以只有A和B
知道
K
s
K_s
Ks。
4️⃣ A丢弃 P U a PU_a PUa和 P R a PR_a PRa,B丢弃 P U a PU_a PUa
在对手控制了中间的通信信道时,协议是不安全的,可能受到中间人攻击.
确保保密性和认证的密钥分发——重点
1️⃣ A 用B 的公钥加密包含A 的标识符IDA 和一个临时交互号N1 的消息并发给B,其中临时交互号被用来唯一的标识该次消息传递;
2️⃣ B 用PUa 加密包含A 的临时交互号N1及B 产生的新的临时交互号N2的消息发送给A.因为只有 B 可以解密消息(1),故N1 在消息(2)中出现可以使A 确定该消息来自于B.
3️⃣ A 使用的B 的公钥加密后返回N2,使B 确定消息来自于A.
4️⃣ A 选择密钥KS 后发送 M = E ( P U B , E ( P R A , K S ) ) M=E(PU_B,E(PR_A,K_S)) M=E(PUB,E(PRA,KS))给B。用B 的公钥加密确保只有B 可以读取该消息,用A 的私钥加密保证只有A 可以发送该消息.
5️⃣ B 计算 D ( P U A , D ( P R B , M ) ) D(P U_A, D(P R_B , M )) D(PUA,D(PRB,M))从而恢复密钥KS .
该方案可以保证交换密钥过程中的保密性和身份验证.
四、公钥的分配
人们已经提出了集中公钥分配方法,所有这些方法本质上都可以归结为以下几种方法:
1️⃣ 公开发布。
2️⃣ 公用目录表。
3️⃣ 公钥管理机构。
4️⃣ 公钥证书。
公开发布
指用户将自己的公钥发给每一其他用户,或向某一团体广播;
比较简单;
缺陷:任何人都可伪造这种公开发布,即发布伪造的公钥 。
公用目录表
建立一个公用的公钥动态目录表,目录表的建立、维护以及公钥的分布由某个可信的实体或组织承担。
公用目录表的建立过程如下:
1)管理员为每个用户都在目录表中建立一个目录,目录中有两个数据项,一是用户名,二是用户的公开钥。
2)每个用户都亲自或以某种安全的认证通信在管理者那里注册自己的公开钥。
3)用户如果由于自己的公开钥用过的次数太多或由于与公开钥相关的秘密钥己被泄露,则可随时用新公开钥替换现有的公开钥。
4)管理员定期公布或定期更新目录表。例如,像电话号码本一样公布目录表或在发行量很大的报纸上公布目录表的更新。
5)用户可通过电子手段访问目录表,这时从管理员到用户必须有安全的认证通信
公钥授权
在公钥目录表的基础上,由一个公钥管理机构对公钥的分配进行更严密的控制。该方案假定中心管理员负责维护通信各方公钥的动态目录 。此外每个通信方都可靠的知道该目录管理员的公钥并只有管理员知道相应的私钥。
公钥证书
上述方案存在的问题在于公钥管理员成为了系统的瓶颈
公钥证书包含公钥和公钥拥有者的ID,整个数据块由可信第三方签名。用户以可靠方式将公钥提交给可信第三方,获得证书并公布,需要公钥的人可以借由证书获得公钥
CA
在公钥体系中,关键问题是要保证公钥要与拥有公钥的实体绑定起来。我们把这样的绑定关系信息称为证书
对证书进行管理的机构成为证书机构(CA)
公钥证书产生过程
CA的功能
保证证书拥有实体与证书的对应关系
生成证书
管理维护证书
撤销证书
证书的表示——了解
CA给A颁发的证书:
五、X.509——认证服务框架
X.509是X.500系列中定义目录服务的一部分。这里目录指管理用户信息数据库的服务器,用户信息包括从用户名到网络地址的映射和其他属性
X.509定义了用户目录的一个认证服务框架,这个目录可作为公钥证书的存取库,另外
X.509还定义了基于公钥证书的一个认证协议:X.509是关于证书结构和认证协议的一个重要标准。
证书
CA生成的证书具有以下的特点
任何可以访问CA公钥的用户均可获得证书中的用户公钥
只有CA可以修改证书而不被发现。(可以被直接存在目录中而不需要保护)
用户很多时更可取的方法时设置多个CA(互相间能安全交换公钥比如X1给X2签发的证书)——掌握
现在,假设A获得了签证机构X1的证书,而B获得了签证机构X2的证书,如果A无法安全地获得X2的公钥,则由X2发放的B的证书对A而言就无法使用,A只能读取B的证书,但无法验证其签名,然而,如果两个CA之间能安全地交换它们的公钥,则A可以通过下述过程获得B的公钥:
1️⃣ A从目录中获得由X1签名的X2的证书,由于A知道X1的公钥,A可从证书中获得X2的公钥,并用X1的签名来验证证书。
2️⃣ A再到目录中获 取由 X2颁发的B的证书,由于A已经得到了 X2的公钥,A即可利用它验证签名,从而安全地获得B的公钥。
A使用了一个证书链来获得B的公钥,在X.509,该链表示如下:
X
1
<
<
X
2
>
>
X
2
<
<
B
>
>
X_1<<X_2>>X_2<<B>>
X1<<X2>>X2<<B>>
B可以逆向获得A的公钥
X
2
<
<
X
1
>
>
X
1
<
<
A
>
>
X_2<<X_1>>X_1<<A>>
X2<<X1>>X1<<A>>
CA链可以任意长
X
1
<
<
X
2
>
>
X
2
<
<
X
3
>
>
.
.
.
X
N
<
<
B
>
>
X_1<<X_2>>X_2<<X_3>>...X_N<<B>>
X1<<X2>>X2<<X3>>...XN<<B>>
在这种情况下,链中的每对CA(Xi,Xi+1)必须互相发放证书
证书的获取
CA为用户产生的证书应有以下特性:
(1) 其他任一用户只要得到CA的公开密钥,就能由此得到CA为该用户签署的公开密钥。
(2) 除CA以外,任何其它人都不能以不被察觉的方式修改证书的内容。
因为证书是不可伪造的,因此无需对存放证书的目录施加特别的保护。
证书的吊销
有些证书还未到截止日期就会被发放该证书的CA吊销
用户的秘密密钥已被泄漏;
该用户不再由该CA来认证;
CA为该用户签署证书的秘密密钥已经泄露。
每一CA还必须维护一个证书吊销列表CRL(Certificate Revocation List),其中存放所有未到期而被提前吊销的证书,包括该CA发放给用户和发放给其它CA的证书。CRL还必须由该CA签字,然后存放于目录中以供他人查询。
X.509的层次结构
前向证书:其它CA生成的X的证书
后向证书:X生成其它CA的证书
例如,用户A可以通过创建一条到B的路径获得相关证书
X < < W > > W < < V > > V < < Y > > Y < < Z > > Z < < B > > X<<W>>W<<V>>V<<Y>>Y<<Z>>Z<<B>> X<<W>>W<<V>>V<<Y>>Y<<Z>>Z<<B>>
当A获得相关证书后,可以通过顺序展开证书路径来获得B的公钥,用该公钥,A可将加密消息送往B,如果A想得到B返回的加密消息或对发往B的消息签名,则B需要按照下述证书路径来获得A的公钥
Z < < Y > > Y < < V > > V < < W > > W < < X > > X < < A > > Z<<Y>>Y<<V>>V<<W>>W<<X>>X<<A>> Z<<Y>>Y<<V>>V<<W>>W<<X>>X<<A>>
B可以获得目录中的证书集,或A可在它发给B的初始消息中将其包含进去。
主要内容
X.509主要内容
简单认证(Simple Authentication)程序
强认证(Strong Authentication)程序
密钥及证书管理
证书扩充及证书吊销列表扩充(Certificate and CRL Extensions)
认证协议——简单认证过程
根据每位用户所提供的用户名以及一个只有收、发双方知道的用户密码来实现安全程度较低的认证程序的。
三种运行方式——记住
1️⃣ 用户将其口令及用户ID未做任何加密保护,直接以明文方式传送给接收端。
2️⃣ 用户将其个人口令、用户ID、一个随机数和/或时间戳在经过一单向函数保护后,传送至接收瑞。
3️⃣ 用户用上面第(2)种方式所述的方法,先经一次单向函数保护所有数据,然后再连同另一组随机数和/或时间戳,再经过第二次的单向函数保护后,传送至接收端。
![image-20220605221244771](https://i-blog.csdnimg.cn/blog_migrate/304809b381f93ef66b76158290438438.png)
方式一的主要缺陷在于明文传输用户代号和口令。在第二及第三两种认证方式中,发方A送至收方B的信息内容都经过单向函数运算的杂凑值,将此杂凑值经网络传给对方,密码的明文不会出现在网络上,如图所示。
![image-20220605221307441](https://i-blog.csdnimg.cn/blog_migrate/a626ee6e8ef3c2cddaa3a919b2e2917f.png)
在第二及第三两种认证方法中,因为用户的口令并不直接送到网络上,而是经单向函数f1及f2的运算后,再送到网络,所以即使在网络上被攻击者拦截到,因为有单向函数的保护,仍然很难反推出用户口令。且在以单向函数保护的运算过程中,又加入了时间戳和随机数一起运算,所以攻击者若将信息重发,虽然可以通过验证,但因“时间戳”是记录送方送出的时间,若是与收方收到的时间相差得太多,可以确定是攻击者的重发,欲假冒合法用户,应该予以拒绝,如此可以防止重放攻击。
第三种方法中使用两次单向函数运算,是用以增加秘密信息的隐蔽度和增加攻击者破解的困难度的。
简单认证程序在安全性的考虑上比较简单,只可以让收方B认证发方A为合法用户,无法让发方A也可以认证收方B,达到收发双方相互认证的安全程度。
认证协议——强认证程序
X.509以公开密钥密码的技术能够让通信双方容易共享密钥的特点,并利用公钥密码系统中数字签名的功能,强化网络上远程认证的能力,定义出强认证程序,以达到所谓“强认证”的目的。
X.509中定义的“强认证”程序包含了三种不同信赖程度的认证
1️⃣ “单向认证”(One-way Authentication)
2️⃣ “双向认证”(Two-way Authentication)
3️⃣ “三向认证”(Three-way Authentication)
单向认证:A 给B 发送一个证书;
![image-20220605222142808](https://i-blog.csdnimg.cn/blog_migrate/25add59e7c846b1091cec261a7297d73.png)
双向认证:除了前述“单向认证”的发送方送出的信息之外, 收方还需产生一道回复信息给发方;
![image-20220605222151254](https://i-blog.csdnimg.cn/blog_migrate/ba98de55324c28f6bd4c8ddb0df5ab34.png)
三向认证:除了前述“双向认证”的信息之外,发方还需要再发送一道应答信息给收方
![image-20220605222215636](https://i-blog.csdnimg.cn/blog_migrate/d0eda7fd293a0128699c25812d8a0b8c.png)
六、公钥基础设施PKI
公钥基础设施PKI(public key Infrastructure)定义为一组用于管理证书和公私钥对的策略、流程、服务器平台、软件和工作站、功能包括颁发、维护和撤销公钥证书。开发的目的在于确保安全,方便和有效的获取公钥
要求
任何参与者都可以阅读证书以确定证书所有者的名称和公钥
任何参与者都可以验证证书源自证书颁发机构而不是伪造的
只有证书颁发机构可以创建和更新证书
任何参与者都可以验证证书的时效性
构成
CA
RA(证书注册机构)
终端实体
证书存储库
信赖方
PKI的结构
层次化的
非层次化的
在应用程序中装入不同的CA的证书
CA彼此做交叉认证
CA系统结构
🔑 LDAP 与数据库的区别在于: LDAP 真正存储证书, 数据库存储管理日志
参考资料
[1] 西安交通大学计算机网络安全与管理2022年春PPT 田暄
[2] 密码编码学与网络安全(第七版),William Stallings著,王后珍等译
![Logo](https://devpress.csdnimg.cn/79de2bf0b7994defa4242ef90d5513fa.jpg)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)