密钥分配
我们上面所介绍到的很多加密机制和加密算法都是公开的,所以不存在网络安不安全的问题,公开的就意味着不安全,因此对于安全性来说就体现在密钥的安全保护上了,所以密钥管理就成为一个非常重要且不可忽视的问题。密钥管理主要包括密钥的产生和分配、验证以及使用问题。
密钥分配是网络安全中一个很重要的问题,在计算机网络中,密钥应该通过一个安全的链路进行分配。之前早期的互联网多采用网外分配的方式,外网分配就是由信使把密钥分配给相互通信的用户;但是随着用户的增多和流量的增大,这种方式不再适用,因为每次需要更换密钥都需要派信使更换一遍。现在更多采用的是网内分配方式,也即密钥自动分配。
对称密钥的自动分配
我们上面说到了,对称密钥的一种分配方式是设立 密钥分配中心 kdc(key distribution center) ,kdc 是一个权威的密钥分配中心,他能解决密钥数量日趋增大的问题,也能解决共享密钥之间的安全性问题。
kdc 的主要作用就是给需要通信的用户临时分配一个会话密钥,这个会话密钥的生命周期在会话开始时结束,会话结束时失效。
比如下面这个 kdc 的分配示例:
a 和 b 都是 kdc 的登记用户,a 和 b 在 kdc 登记时就已经在 kdc 的服务器上安装了各自和 kdc 进行通信的主密钥(master key) 的 ka 和 kb,下面统称主密钥为密钥。
首先,用户 a 向密钥中心 kdc 发送时用明文,来表明自己想要和主机 b 建立通信,明文中包含了 a 和 b 在 kdc 登记的身份(此时 a 是知道 b 的登记信息的)。
kdc 用随机数产生一次一密的会话密钥 kab 来让 a 和 b 这次会话使用(这个密钥 kab 就是给通信用户分配的临时密钥),然后向 a 发送回答报文,回答报文用 a 的密钥 ka 加密,除此之外,这个报文中还包含这次会话使用的密钥 kab 和请 a 转给 b 的一条消息,这条消息用 b 的密钥 kb 加密,因为 a 并没有持有 kb,所以 a 并不知道这条消息的内容。
a 收到这条消息后会把 kb 加密的消息发送给 b,在 b 收到消息后就知道 a 想要和他通信,同时也知道了会话密钥 kab ,于是 a 和 b 就可以安全的对话了。这就是这个会话密钥 kab 的作用。
那可能有同学有疑惑了,假如此时还有一个 c 来冒充了 a ,把 a 发给 b 的报文截获,然后伪造成 b 与 c 进行通信呢?
由于 c 并不知道 a 的登记密钥 ka,所以就算截获了报文也不知道 kab 会话密钥,其次 kdc 还可以在报文中增加时间戳,来防止 c 使用之前截获的报文进行攻击,除此之外 kdc 中的 ka 和 kb 登记信息也要定期更换才行。
目前业界比较出名的密钥分配协议就是 kerberos v5,它是一种基于 ticket 的身份验证协议,而且也是 kdc,它已经变得很普及,现在是互联网标准。kerberos 使用比 des 更加安全的高级加密 aes 进行加密,下面会介绍 kerberos v4 的工作原理,v5 和 v4 的原理是一样的, v4 还稍微简单些。
这里首先先认识 kerberos 的两个服务器,一个是鉴别服务器(authentication server)as,一个是票据授予服务器(ticket-granting server)tgs。
鉴别服务器 as:进行用户信息验证,为客户端提供 ticket granting tickets(tgt)。
票据授予服务器 tgs:验证 tgt 和身份,为客户端提供 service tickets。
在上图中,a 是请求服务的客户,b 是被请求的服务器,a 通过 kerberos 向 b 请求服务,kerberos 需要通过下面几个步骤鉴别的确是 a 在向 b 请求服务,而不是冒充 a 的冒充者,请求服务后,才向 a 和 b 分配会话使用的密钥。
a 通过明文(包括登记的身份)向鉴别服务器 as 表明自己的身份。as 就是 kdc 的一种,它掌握着实体登记的身份和相应的口令。当 a 向 as 表明身份后,as 会对 a 进行身份验证,验证正确后才会走到下一步。
as 验证完成后,as 会向 a 发送用 a 的对称密钥 ka 加密的报文,这个报文包含 a 和 tgs 通信的会话密钥 ks 以及 as 要发送给 tgs 的 ticket 票据,这个 ticket 是用 tgs 的对称密钥 ktg 加密的。当报文到达 请求者 a 时,a 就会根据口令和适当的算法生成 ka 密钥,密钥 ka 会对 as 发送过来的报文进行解密(a 并不会保存 ka 密钥),解密过后就提取出会话密钥 ks(这是 a 和 tgs 通信要使用的)以及要转发给 tgs 的 ticket (这是用 ktg 加密的)。总的来说这一步就是 as 把消息发送给 a,a 根据口令生成解密密钥 ka,然后解密报文提取 ktg 加密报文的过程。
此后 a 需要向票据服务器 tgs 发送报文,包括上一步 a 提取的会话密钥 ks,还有 as 发给 a 的 ktg 加密报文,还有 a 需要告诉 tgs 通信的目标 b ,还有能预防重放攻击的 ks 加密的时间戳 t。
tgs 发送两个 ticket,每一个都包含 a 和 b 通信的会话密钥 kab。给 a 的 ticket 用 ks 加密,发给 b 的票据用 kb 加密。
然后 a 向 b 转发 tgs 发给 a 的 ticket,同时发送用会话密钥 kab 加密的时间戳 t。
b 把时间戳 t + 1 来证实收到了 ticket,同时这个时间戳也会用 kab 加密。
在这之后,a 和 b 就可以使用 tgs 给出的会话密钥 kab 进行对话了。
公钥的分配问题
公钥分配的问题主要谈论的就是公钥分配的权威性问题,如果用户 a 拥有 b 的公钥,就可以实现安全通信,这就好像用户 a 假如拥有攻击者 c 的公钥也就能实现安全通信了,其实不然,这个公钥需要有权威机构认证的,这个权威认证机构就是ca(certification authority) ,它由政府出资建立,每个实体都需要有 ca 发来的证书,ca 包含公钥和标识拥有者的信息,证书会由 ca 数字签名,拥有 ca 颁发的证书后才能够实现安全通信。
逆变器需要制动电阻吗,瞬间加速
plc编程中硬件校准和软件校准相关介绍
景区空气负氧离子监测系统特点
哈夫曼编码怎么算 哈夫曼编码左边是0还是1
苹果为Windows用户发布Safari浏览器
你真的懂网络安全吗?密钥的分配解析
国产施密特触发器AiP74LVC2G14可原位替代TI的SN74LVC2G14
光纤HDMI连接器的质量对画质影响有多大
人工智能时代 智能安防场景爆发机遇
高压灯条、高压灯带高压线性恒流芯片方案LK2085的设计
环保手电筒:用手掌热量维持发光
光电传感器是如何实现智能洗车的
经久不衰的魅力来自辉光数码管丰富多彩的历史
VR眼镜创新应用 让奶牛心情愉悦以提升产奶量
基于BQ76930+STM32F103的BMS方案
什么是LED倒装芯片?LED倒装芯片制备流程
个人食品计算机可以免费获得设备规格和代码
全球公有云带头大哥AWS不断重塑价值
贸博士看财报观趋势--要靠汽车电子续命了?
物联网:嵌入式和安全