28、强安全无证书密钥协商协议详解

强安全无证书密钥协商协议详解

安全属性要求

在密钥协商协议中,有几个关键的安全属性需要满足:
1. 会话密钥不可区分性 :对于一个完整会话的会话密钥,在会话对等方未被破坏且会话及其匹配会话(如果存在)是干净的情况下,敌手应无法将其与随机值区分开来。
2. 临时秘密抵抗泄露 :协议应能抵抗临时秘密的泄露。临时秘密的泄露不应危及未使用该临时秘密的会话的安全性。
3. KGC前向保密性(基于ID的协议) :密钥生成中心(KGC)在知道所有公开信息的情况下,应无法计算会话密钥。
4. 抵抗临时秘密泄露给KGC(无证书协议) :如果恶意的KGC获取了任何会话的临时秘密,它也不应能够计算会话密钥。

安全模型的形式化定义

我们提出了一个强化版的安全模型,它基于Swanson的模型,而Swanson的模型又基于LaMacchia、Lauter和Mityagin的扩展Canetti - Krawczyk(eCK)模型。
- 参与方和密钥 :设 $U = {U_1, \ldots, U_n}$ 是一组参与方。每个参与方有一个基于身份的公钥,可从其标识符推导得出。KGC通过安全通道向参与方颁发基于身份的私钥,同时参与方自己生成秘密值和无证书公钥。
- 敌手能力 :敌手控制协议消息交换的网络,可替换用于计算会话密钥的无证书公钥,且无需向相应参与方披露与替换后的无证书公钥匹配的私钥。
- 会话状态 :会话 $\Pi_{i,j}^t$ 在计算出会话密钥 $SK_{i,j}^t$ 时进入接受状态。会话可能在未进入接受状态时终止,会话是否接受的信息是公开的。会话 $\Pi_{i,j}^t$ 被分配一个伙伴ID $pid = (ID_i, ID_j)$,其会话ID $sid$ 是与伙伴在会话期间交换消息的记录。两个会话 $\Pi_{i,j}^t$ 和 $\Pi_{j,i}^u$ 若具有相同的 $pid$ 和 $sid$,则被认为是匹配的。

游戏流程

游戏分为两个阶段:
1. 第一阶段 :敌手 $M$ 可以按任意顺序发出以下查询:
- Send($\Pi_{i,j}^t$, $x$) :如果会话 $\Pi_{i,j}^t$ 不存在,若 $x = \lambda$,则在参与方 $i$ 作为发起方创建会话;否则在参与方 $j$ 作为响应方创建会话。若参与方之前未初始化,则创建相应的公私钥。收到消息 $x$ 后执行协议,参与方 $i$ 发送和接收协议指定的最后一组消息后,输出接受或拒绝会话的决策。对于一轮协议,参与方 $i$ 的行为如下:
- 若 $x = \lambda$,参与方 $i$ 生成临时值并仅回复一条外出消息。
- 若 $x \neq \lambda$,若参与方 $i$ 是响应方,它为会话生成临时值,回复外出消息 $m$ 和接受或拒绝会话的决策;若参与方 $i$ 是发起方,它回复接受或拒绝会话的决策。
- Reveal master key :敌手获得主秘密密钥。
- Session key reveal($\Pi_{i,j}^t$) :若会话未接受,返回 $\perp$;否则揭示已接受的会话密钥。
- Reveal ID - based secret($i$) :参与方 $i$ 回复其基于身份的私钥,如 $sH_1(ID_i)$。
- Reveal secret value($i$) :参与方 $i$ 回复与其无证书公钥对应的秘密值 $x_i$。若之前被要求替换公钥查询,则回复 $\perp$。
- Replace public key($i$, $pk$) :参与方 $i$ 的无证书公钥被替换为敌手选择的 $pk$,参与方 $i$ 将使用新公钥进行所有通信和计算。
- Reveal ephemeral key($\Pi_{i,j}^t$) :参与方 $i$ 回复会话 $\Pi_{i,j}^t$ 中使用的临时秘密。

这些密钥揭示查询可分为三类:揭示主密钥和基于身份的秘密查询试图破坏方案中基于身份部分的安全性;揭示秘密值和替换公钥查询试图破坏方案中基于公钥部分的安全性;揭示临时密钥查询试图破坏特定会话的安全性。我们定义完全破坏状态为一个会话被询问了所有三类揭示查询。
  1. 第二阶段 :敌手 $M$ 选择一个新鲜会话 $\Pi_{i,j}^t$ 并发出 Test($\Pi_{i,j}^t$) 查询。

    • 新鲜会话定义 :会话 $\Pi_{i,j}^t$ 是新鲜的,需满足:
      • $\Pi_{i,j}^t$ 已接受。
      • $\Pi_{i,j}^t$ 未被发出会话密钥揭示查询。
      • 参与此会话的任何一方的会话状态都未完全破坏。
      • 不存在与 $\Pi_{i,j}^t$ 有匹配对话的已打开会话 $\Pi_{j,i}^u$。
    • Test($\Pi_{i,j}^t$) :输入的会话 $\Pi_{i,j}^t$ 必须是新鲜的。随机选择一个比特 $b \in {0, 1}$,若 $b = 0$,敌手获得会话密钥;否则从有效会话密钥的分布中随机采样一个会话密钥并返回给敌手。

    发出 Test 查询后,敌手可继续查询,但测试会话 $\Pi_{i,j}^t$ 应保持新鲜。允许部分破坏,测试会话完成后可对任何参与方发出替换公钥查询。游戏结束时,敌手输出对 $b$ 的猜测 $\hat{b}$,若 $\hat{b} = b$,则敌手获胜,敌手获胜的优势定义为 $Adv_M(k) = \left|\Pr[M \text{ wins}] - \frac{1}{2}\right|$。

强安全类型定义
  • 强类型 I 安全密钥协商方案 :一个无证书密钥协商方案是强类型 I 安全的,如果每个概率多项式时间敌手 $M$ 在满足以下约束的情况下,在上述游戏中获胜的优势可忽略不计:
    • $M$ 对参与测试会话的每个参与方最多破坏三种类型秘密中的两种。
    • $M$ 可以替换任何参与方的公钥,但这算作破坏一种秘密。
    • $M$ 不能揭示已替换无证书公钥的任何身份的秘密值。
    • $M$ 可以询问即使是由其替换了公钥的身份计算出的会话密钥的揭示查询。
    • $M$ 可以在发出测试查询后替换任何参与方的公钥。
  • 强类型 II 安全密钥协商方案 :一个无证书密钥协商方案是强类型 II 安全的,如果每个概率多项式时间敌手 $M$ 在满足以下约束的情况下,在上述游戏中获胜的优势可忽略不计:
    • 游戏开始时,$M$ 获得主秘密密钥 $s$。
    • $M$ 对参与测试查询的每个参与方最多额外破坏一种类型的秘密。
    • $M$ 可以替换任何参与方的公钥,但这算作破坏一种秘密。
    • $M$ 不能揭示已替换无证书公钥的任何身份的秘密值。
    • $M$ 可以询问即使是由其替换了公钥的身份计算出的会话密钥的揭示查询。
    • $M$ 可以在发出测试查询后替换任何参与方的公钥。
与现有安全概念的关系
  • 与Swanson模型的比较 :Swanson的替换公钥查询假设被替换密钥的参与方继续使用其原始公钥(及其匹配私钥)进行计算,且在检查匹配对话时省略无证书公钥。我们的模型给予敌手更多权力,因此强安全的方案更可取。
  • 与LaMacchia等人模型的比较 :与LaMacchia等人的模型相比,无证书协议中有六种秘密信息,而不是四种。我们要求无证书认证密钥交换(AKE)在每个参与方至少持有一个未受损秘密时是安全的。
无法自然组合ID - AKE和PK - AKE得到CL - AKE的原因

在我们的安全模型中,会话只有在每个参与方至少有一个未受损秘密时才是新鲜的。自然地将ID - AKE和PK - AKE并行运行并通过公开已知函数从两个组件会话密钥推导出整体会话密钥的组合方式,无法提供所需的安全级别。因为当一方在PK - AKE中有未受损密钥,另一方在ID - AKE中有未受损密钥时,两个AKE方案都可能被破坏,没有安全保证。这可能解释了为什么之前没有发表过有安全证明的CL - AKE方案。

无证书密钥协商方案的描述

我们的无证书认证密钥交换协议包括三个阶段:
1. 设置阶段
- KGC发布一个生成元 $P \in \mathbb{G}$ 和一个可接受的双线性配对映射 $e : \mathbb{G} \times \mathbb{G} \to \mathbb{G}_T$,该映射满足双线性、非退化和可计算的性质。合适的配对组是Type 1和Type 4配对。
- KGC选择一个随机的 $s \in \mathbb{Z}_p$ 作为主秘密密钥,并将其公钥设置为 $sP$。
- KGC选择三个密码哈希函数:
- $H_1 : {0, 1}^ \to \mathbb{G}$
- $H_2 : {0, 1}^
\times {0, 1}^ \times \mathbb{G}^8 \times \mathbb{G}_T^6 \to {0, 1}^n$($n > 0$)
- $H_3 : \mathbb{G} \to \mathbb{G}$
- 每个用户 $U$ 生成一个秘密值 $x_U \stackrel{\$}{\leftarrow} \mathbb{Z}_p$ 和一个公钥 $x_UP \in \mathbb{G}$,并从KGC获得基于身份的私钥 ${sH_1(ID_U), sH_3(H_1(ID_U))} \in \mathbb{G}^2$。
2.
消息交换阶段 :用户 $A$ 生成临时秘密 $r_A \stackrel{\$}{\leftarrow} \mathbb{Z}_p$,用户 $B$ 生成临时秘密 $r_B \stackrel{\$}{\leftarrow} \mathbb{Z}_p$,他们交换以下消息:
- $A \to B : E_A = (r_A P, x_A P)$
- $B \to A : E_B = (r_B P, x_B P)$
若无证书公钥发布在公共在线目录中,可从消息中剥离,这能节省带宽,但可能使方案更容易受到类似无证书加密中拒绝解密攻击的影响。
3.
密钥计算阶段 *:每个用户计算以下值:
- $K_A = e(H_1(ID_B), sP)^{r_A} e(sH_1(ID_A), r_B P) = e(H_1(ID_B), P)^{r_A s} e(H_1(ID_A), P)^{r_B s} = K_B = K$
- $K_A’ = e(H_3(H_1(ID_B)), sP)^{r_A} e(sH_3(H_1(ID_A)), r_B P) = e(H_3(H_1(ID_B)), P)^{r_A s} \cdot e(H_3(H_1(ID_A)), P)^{r_B s} = K_B’ = K’$
- $L_A = e(H_1(ID_B), sP)^{x_A} e(sH_1(ID_A), x_B P) = e(H_1(ID_B), P)^{x_A s} e(H_1(ID_A), P)^{x_B s} = L_B = L$
- $L_A’ = e(H_3(H_1(ID_B)), sP)^{x_A} e(sH_3(H_1(ID_A)), x_B P) = e(H_3(H_1(ID_B)), P)^{x_A s} e(H_3(H_1(ID_A)), P)^{x_B s} = L_B’ = L’$
- $N_A = e(H_1(ID_B), sH_1(ID_A)) = e(H_1(ID_B), H_1(ID_A))^s = N_B = N$
- $N_A’ = e(H_3(H_1(ID_B)), sH_3(H_1(ID_A))) = e(H_3(H_1(ID_B)), H_3(H_1(ID_A)))^s = N_B’ = N’$
会话密钥计算为 $SK = H_2(A, B, E_A, E_B, r_A r_B P, x_A x_B P, r_A x_B P, x_A r_B P, K, K’, L, L’, N, N’)$。

效率考虑

虽然协议是一轮的,但参与方的计算开销相当高,每个参与方需要计算5次 $\mathbb{G}$ 中的指数运算和10次配对运算。我们需要 $H_3$ 哈希函数来实现完整的计算双线性Diffie - Hellman安全性。

以下是一个mermaid流程图,展示无证书密钥协商方案的流程:

graph TD;
    A[设置阶段] --> B[消息交换阶段];
    B --> C[密钥计算阶段];

以下是一个表格总结协议的各个阶段和主要操作:
| 阶段 | 主要操作 |
| ---- | ---- |
| 设置阶段 | KGC发布生成元、双线性配对映射,选择主秘密密钥和哈希函数,参与方生成秘密值和公钥,获取基于身份的私钥 |
| 消息交换阶段 | 参与方生成临时秘密,交换消息 |
| 密钥计算阶段 | 参与方计算多个中间值,最终计算会话密钥 |

强安全无证书密钥协商协议详解(续)

协议安全性分析

在前面我们已经介绍了无证书密钥协商协议的安全模型、游戏流程以及协议本身的各个阶段。接下来,我们深入分析该协议是如何抵御各种攻击,以及其安全性是如何在游戏中体现的。

抵御临时秘密泄露攻击

协议要求抵抗临时秘密的泄露,即临时秘密的泄露不应危及未使用该临时秘密的会话的安全性。在游戏中,敌手可以通过 Reveal ephemeral key 查询来获取某个会话的临时秘密。但由于协议在密钥计算阶段使用了多个中间值,如 $K$、$K’$、$L$、$L’$、$N$、$N’$ 等,这些值相互关联且依赖于不同的密钥信息,即使敌手获取了某个会话的临时秘密,也无法通过该临时秘密推导出其他会话的密钥。

例如,$K$ 是由基于身份的哈希值和临时秘密共同计算得到的,$L$ 则与参与方的秘密值和基于身份的公钥有关。这种多因素的计算方式使得单个临时秘密的泄露不会导致整个协议的安全性被破坏。

抵御KGC攻击

对于无证书协议,我们额外要求抵抗临时秘密泄露给KGC的情况。在游戏中,若恶意的KGC获取了会话的临时秘密,它也不应能够计算会话密钥。这是因为协议在设计上,会话密钥的计算不仅仅依赖于临时秘密和基于身份的信息,还涉及到参与方自己生成的秘密值和公钥。

即使KGC知道主秘密密钥 $s$ 和临时秘密,它也无法获取参与方的秘密值 $x_U$,而这些秘密值在密钥计算中起到了关键作用。例如,$L$ 和 $L’$ 的计算就依赖于参与方的秘密值,使得KGC无法在仅知道临时秘密的情况下计算出会话密钥。

强类型 I 和强类型 II 安全

强类型 I 和强类型 II 安全的定义为协议的安全性提供了不同级别的保障。在强类型 I 安全中,敌手对参与测试会话的每个参与方最多破坏三种类型秘密中的两种,并且可以替换公钥但有相应的限制。这意味着即使敌手有一定的破坏能力,协议仍然能够保持安全性。

而强类型 II 安全则在敌手一开始就获得主秘密密钥的情况下,要求敌手对每个参与方最多额外破坏一种类型的秘密。这种更严格的安全要求确保了协议在更恶劣的攻击环境下仍然能够正常工作。

协议在游戏中的安全性体现

在游戏的第一阶段,敌手可以发出各种查询来尝试获取协议的关键信息。但协议通过设置不同的查询类型和限制,有效地抵御了敌手的攻击。例如,Reveal secret value 查询在参与方被要求替换公钥后会返回 $\perp$,这防止了敌手通过替换公钥来获取参与方的秘密值。

在第二阶段,敌手选择一个新鲜会话进行 Test 查询。新鲜会话的定义确保了测试会话的安全性和有效性。只有满足一定条件的会话才能被视为新鲜会话,这使得敌手无法通过破坏会话的状态来获取优势。

当敌手发出 Test 查询后,随机选择的比特 $b$ 决定了敌手获得的是真实的会话密钥还是随机采样的会话密钥。敌手需要猜测 $b$ 的值来获胜,而协议的安全性保证了敌手的获胜优势是可忽略不计的。

与现有方案的对比优势

与Swanson模型相比,我们的模型给予了敌手更多的权力,例如在替换公钥时允许参与方使用新的公钥进行计算,并且在检查匹配对话时考虑了无证书公钥。这使得我们的模型更加严格,强安全的方案在这种模型下更能抵御各种攻击。

与LaMacchia等人的模型相比,无证书协议中的六种秘密信息增加了协议的安全性。我们要求每个参与方至少持有一个未受损的秘密,这使得协议在部分秘密被破坏的情况下仍然能够保持安全。

应用场景和潜在挑战
应用场景

无证书密钥协商协议在许多领域都有应用前景。例如,在物联网(IoT)环境中,设备之间需要进行安全的通信,无证书协议可以避免证书管理的复杂性。设备可以直接使用基于身份的信息和自己生成的公钥进行密钥协商,减少了证书的存储和验证开销。

在移动网络中,用户设备和服务器之间的通信也可以使用无证书密钥协商协议。由于移动设备的资源有限,无证书协议的一轮性和相对简单的计算方式可以减少设备的计算负担,提高通信效率。

潜在挑战

尽管协议具有较高的安全性,但也面临一些潜在挑战。首先,协议的计算开销较大,每个参与方需要进行5次 $\mathbb{G}$ 中的指数运算和10次配对运算。在资源受限的设备上,这种计算开销可能会影响设备的性能和电池寿命。

其次,协议依赖于双线性配对映射和哈希函数的安全性。如果这些密码学原语被发现存在漏洞,协议的安全性将受到威胁。因此,需要不断关注密码学领域的研究进展,及时更新协议中使用的原语。

总结

本文详细介绍了一种强安全无证书密钥协商协议。我们首先阐述了协议的安全属性要求,包括会话密钥不可区分性、抵抗临时秘密泄露等。然后,我们给出了安全模型的形式化定义和游戏流程,通过敌手与挑战者之间的交互来评估协议的安全性。

接着,我们描述了协议的三个阶段:设置阶段、消息交换阶段和密钥计算阶段,并分析了协议的效率。最后,我们探讨了协议的安全性分析、与现有方案的对比优势以及应用场景和潜在挑战。

总的来说,该协议在安全性和实用性之间取得了一定的平衡,但在实际应用中还需要考虑计算开销和密码学原语的安全性等问题。未来的研究可以致力于优化协议的计算效率,提高其在资源受限环境中的适用性。

以下是一个mermaid流程图,展示协议在游戏中的主要流程:

graph TD;
    A[游戏开始] --> B[第一阶段:敌手发出各种查询];
    B --> C[敌手选择新鲜会话发出Test查询];
    C --> D[第二阶段:敌手继续查询,测试会话保持新鲜];
    D --> E[游戏结束,敌手输出猜测值];
    E --> F{猜测是否正确};
    F -- 是 --> G[敌手获胜];
    F -- 否 --> H[敌手失败];

以下是一个表格总结协议在不同方面的特点:
| 方面 | 特点 |
| ---- | ---- |
| 安全性 | 满足强类型 I 和强类型 II 安全,抵抗多种攻击 |
| 计算开销 | 较高,每个参与方需进行5次 $\mathbb{G}$ 中的指数运算和10次配对运算 |
| 应用场景 | 适用于物联网、移动网络等 |
| 潜在挑战 | 计算开销大,依赖密码学原语安全性 |

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值