【密码学】密码协议的分类:③认证的密钥建立协议

让我们来回顾一下三种密钥协议,第一种是认证协议,它的目的只是确认对方是不是合法身份;第二种是密钥建立协议,它的目的只是实现会话密钥的共享,没有考虑对方的身份是否合法。而本文要介绍的是第三种------认证的密钥建立协议。

一、什么是认证的密钥建立协议?

所谓认证的密钥建立协议,就是将认证和密钥建立结合在一起的协议,使得Alice和Bob确信他们正在与可信赖的对方进行保密通信。即验证了对方身份的合法性又建立了彼此用于通信的会话密钥。

所以在实际应用中,认证的密钥建立协议通常包含以下关键步骤:

  1. 身份验证:通信双方相互验证对方的身份。这可以通过数字证书、预共享密钥、公钥基础设施(PKI)或其他认证机制来实现。
  2. 密钥协商:在身份验证成功后,双方协商出一个会话密钥。这通常涉及随机数交换、密钥派生函数(KDF)或其他密钥协商算法。
  3. 密钥确认:双方确认协商出的会话密钥是一致的,并且没有被篡改。这可以通过消息认证码(MAC)、哈希函数或其他完整性保护机制来实现。

【注】密钥建立 = 密钥协商 + 密钥确认
认证的密钥建立协议中所采用的符号

二、具体有哪些认证的密钥建立协议?

协议各有特点,在不同的场景下有着不同的适用性和安全性考量。例如,Kerberos被广泛应用于企业网络环境中,而EKE则更适用于需要高度安全性的场景,尤其是在密码可能较弱的情况下。下面我们逐一介绍:

(1)大嘴青蛙协议(单钥)

步骤:

  1. 初始化 : Alice 和 Bob 分别与 TTP (可信第三方)交换密钥
  2. 请求会话 : Alice 请求与 Bob 建立连接,向 TTP 发送一个请求,包含 Alice 的身份标识A,使用加密Alice向对话的对象Bob的身份标识B和会话密钥K
  3. 转发 : TTP 用 Bob和他事先共享的密钥 进行加密,发送给Bob加密好的内容,包含期望与Bob建立会话的对象标识符A,双方的会话密钥K,以及时间戳
  4. 完成 : Bob 收到密文后,用他的密钥解密得到 K,现在 Alice 和 Bob 拥有相同的会话密钥 K

【注】大嘴青蛙协议有很多的安全隐患。

(2)Yahalom协议(单钥)

Yahalom 协议与大嘴青蛙协议非常相似,因此步骤基本相同,主要区别在于协议设计时的细节处理上。

步骤:

  1. 初始化 : Alice 和 Bob 分别与 TTP 交换密钥
  2. 发起挑战 : Alice 向 Bob 发送一个挑战值,同时附上 Alice 的身份标识A。
  3. 请求会话 : Bob向TTP发送请求会话信息,包含Bob的身份标识B,用与 Bob与TTP的会话密钥加密Bob请求对话的对象Alice的身份标识A,和先前Alice发来的挑战值,以及Bob自己生成的挑战值
  4. 生成密钥 : TTP 生成一个临时密钥 K,并用与 Alice 的会话密钥加密 K,和Bob的身份标识B,和双方的挑战值,发送给 Alice。再用与Bob的会话密钥加密K和Alice的身份标识A
  5. 确认 : Alice 使用 解密得到K,并验证与之前发给Bob的是否相同。然后将TTP发来的转发给Bob,并相应挑战
  6. 确认 : Bob 收到密文后,用他的解密得到 K,然后用 K 解密得到,并验证是否与自己生成的相同
  7. 完成: 现在 Alice 和 Bob 拥有相同的会话密钥 K

(3)Kerberos协议(单钥)

Kerberos协议引入了时间戳和有效期,实现了抗重放攻击。Kerberos协议非常常见,是重点理解对象。

步骤:

  1. 初始化 : Alice 和 Bob 分别与 TTP 交换密钥
  2. 请求密钥: Alice向TTP发送会话请求,包括会话双方的身份标识A,B
  3. 响应: TTP分别用双方实现共享给TTP的密钥生成两份密文,密文中包含会话密钥K和身份标识,和时间戳与有效期,把两份密文都发送给Alice
  4. 转发: Alice解密第一份消息得到K,然后向Bob发送用K加密附带时间戳的自己的身份A,第二份密文直接转发给Bob
  5. 确认:Bob对第二份收到的消息解密,得到会话密钥K和时间戳,然后Bob将时间戳加一,采用K加密后发给Alice
  6. 确认:Alice对收到的消息用K解密出运算后的时间戳,验证其正确性。

(4)EKE协议(单钥+双钥)

相关推荐
应长天5 小时前
密码学(斯坦福)
密码学
Turbo正则1 天前
量子计算基础概念以及八大分支
密码学·量子计算
网安INF12 天前
公钥加密与签名算法计算详解(含计算题例子)
网络·算法·网络安全·密码学
电院工程师13 天前
基于机器学习的侧信道分析(MLSCA)Python实现(带测试)
人工智能·python·嵌入式硬件·安全·机器学习·密码学
电院工程师14 天前
SM3算法C语言实现(无第三方库,带测试)
c语言·算法·安全·密码学
小七mod16 天前
【BTC】密码学原理
web3·区块链·密码学·比特币·btc·肖臻·北大区块链
电院工程师21 天前
轻量级密码算法PRESENT的C语言实现(无第三方库)
c语言·算法·安全·密码学
电院工程师21 天前
轻量级密码算法CHAM的python实现
python·嵌入式硬件·算法·安全·密码学
电院工程师22 天前
SM3算法Python实现(无第三方库)
开发语言·python·算法·安全·密码学
网安INF22 天前
SHA-1算法详解:原理、特点与应用
java·算法·密码学