漫游服务认证方案及组密钥传输协议的改进与分析
一、改进的匿名认证方案
1.1 现有方案的问题
Youn 等人指出了 Chang 等人方案存在的安全漏洞,攻击者可以通过多种方式恢复移动用户的身份:
-
被动攻击
:被动攻击者窃听消息,利用 $V_2$ 和 $K_2$ 来恢复用户身份。攻击者选择候选身份 $ID’
{MN}$,计算 $SK’ = V_2 \oplus h(n
{HA} || ID’
{MN})$,并测试 $K’_2 = SK’ \oplus h(SK’ || n
{MN})$ 是否与 $K_2$ 相同。若相同,则猜测的身份即为真实身份。
-
恶意移动用户攻击
:恶意移动用户 $MN’$ 拥有有效智能卡,通过合法运行方案获取 $SID’ = ID_{MN’} \oplus h(h(x) || n’
{HA})$。它窃听消息,替换随机数,捕获 $SID$ 后可恢复用户身份。
-
已知会话密钥攻击
:若会话密钥 $SK$ 泄露,攻击者计算 $Flag = V_2 \oplus SK$,搜索满足 $Flag = h(n
{HA} || ID)$ 的身份。由于用户身份格式固定且较短,攻击者可在多项式时间内通过穷举搜索找到。
-
侧信道攻击
:若智能卡敏感信息泄露,攻击者提取 $h(x)$,结合通信消息中的 $SID$ 和 $n_{HA}$ 可恢复用户身份。
1.2 改进方案
改进方案包括注册、认证和会话密钥建立三个阶段。
1.2.1 注册阶段
移动用户 $MN$ 向归属代理 $HA$ 提交身份 $ID_{MN}$ 和密码 $WP_{MN}$。$HA$ 计算虚拟身份 $VID = h(ID_{MN} || r_{MN})$ 和参数 $R = VID \oplus WP_{MN}$,为用户生成随机参数 $r_{MN}$,并通过安全信道交付包含 ${ID_{MN}, ID_{HA}, VID, R, h(x_{MN}), h(x), h(.)}$ 的智能卡。
1.2.2 认证和会话密钥建立阶段
以下是具体步骤:
1. $MN$ 插入智能卡,输入密码 $WP^
_{MN}$,计算 $C = (R \oplus WP^
{MN}) \oplus n
{MN}$,发送消息 $m_1 = {Login req., n_{MN}, ID_{HA}}$ 给 $FA$。
2. $FA$ 记录 $n_{MN}$,生成随机数 $n_{FA}$,发送认证消息 $m_2 = {Authentication req., n_{FA}, ID_{FA}}$ 给 $HA$。
3. $HA$ 检查 $ID_{FA}$,若为盟友则生成随机数 $n_{HA}$,发送消息 $m_3 = {n_{HA}, ID_{HA}}$ 给 $FA$,$FA$ 再转发消息 $m_4 = {n_{HA}, n_{FA}, ID_{FA}}$ 给 $MN$。
4. $MN$ 收到 $m_4$ 后,计算 $SID = VID \oplus h(h(x) || n_{HA})$,$SK = h(h(x_{MN}) || ID_{MN} || ID_{FA} || n_{MN} || n_{FA})$,哈希值 $S_1 = h(n_{FA} || SID || V_1 || V_2 || n_{MN})$,并发送消息 $m_5 = {SID, V_1, V_2, n_{MN}, S_1, ID_{HA}}$ 给 $FA$。
5. $FA$ 收到 $m_5$ 后,计算 $S^
1 = h(n
{FA} || SID || V_1 || V_2 || n_{MN})$,若 $S^
1 = S_1$,则计算 $S_2 = h(K
{FH} || n_{HA} || SID || V_1 || V_2 || n_{MN})$,发送消息 $m_6 = {SID, V_1, V_2, n_{MN}, S_2, ID_{FA}}$ 给 $HA$。
6. $HA$ 收到 $m_6$ 后,检查 $ID_{FA}$,计算 $S^
2 = h(K
{FH} || n_{HA} || SID || V_1 || V_2 || n_{MN})$,若结果有效,继续检查 $VID$、$WP^
{MN}$ 和 $SK$ 的有效性:
- 计算虚拟身份 $VID^
= SID \oplus h(h(x) || n_{HA})$,检查 $VID^
= h(ID
{MN} || r_{MN})$。
- 若有效,计算 $C^
= n_{MN} \oplus VID$ 和 $V^
1 = h(n
{HA} || C^
)$,检查 $V^
1 = V_1$,这意味着 $WP^
{MN} = WP
{MN}$。
- 若相等,计算 $SK^
= h(h(x
{MN}) || ID_{MN} || ID_{FA} || n_{MN} || n_{FA})$ 和 $V^
_2 = h(SK^
|| n_{HA})$,检查 $V^
2$ 的有效性。
7. $HA$ 计算 $K_1 = SK \oplus h(K
{FH} || n_{FA})$,$V_3 = h(ID_{FA} || h(x_{MN}) || n_{MN})$,$S_3 = h(K_{FH} || n_{FA} || K_1 || V_3)$,发送消息 $m_7 = {K_1, V_3, S_3}$ 给 $FA$。
8. $FA$ 收到 $m_7$ 后,计算 $S^
3 = h(K
{FH} || n_{FA} || K_1 || V_3)$,若 $S^
3 = S_3$,计算 $SK = K_1 \oplus h(K
{FH} || n_{FA})$,$K_2 = SK \oplus h(SK || n_{MN})$,发送消息 $m_8 = {V_3, K_2}$ 给 $MN$。
9. $MN$ 收到 $m_8$ 后,计算 $V^
3 = h(ID
{FA} || h(x_{MN}) || n_{MN})$,检查 $V^
_3 = V_3$。若有效,计算 $SK^
= K_2 \oplus h(SK || n_{MN})$,若 $SK^* = SK$,则记录会话密钥 $SK$ 用于未来通信。
下面是认证和会话密钥建立阶段的 mermaid 流程图:
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;
A([开始]):::startend --> B(MN插入智能卡):::process
B --> C(MN计算C和m1并发送给FA):::process
C --> D(FA记录nMN,生成nFA,发送m2给HA):::process
D --> E(HA检查IDFA,生成nHA,发送m3给FA):::process
E --> F(FA转发m4给MN):::process
F --> G(MN计算SID、SK、S1,发送m5给FA):::process
G --> H(FA计算S1*,若相等计算S2,发送m6给HA):::process
H --> I(HA检查IDFA,计算S2*,若有效检查VID、WP*MN和SK):::process
I --> J(HA计算K1、V3、S3,发送m7给FA):::process
J --> K(FA计算S3*,若相等计算SK、K2,发送m8给MN):::process
K --> L(MN计算V3*、SK*,若相等记录SK):::process
L --> M([结束]):::startend
二、改进方案的安全分析
2.1 匿名性
- 对抗被动攻击者 :被动攻击者窃听消息,由于 $V_2$ 不包含 $ID_{MN}$,$K_2$ 不提供身份线索,$SID$ 是哈希值组合,攻击者无法恢复用户身份,方案提供用户匿名性。
- 对抗恶意移动用户 :恶意移动用户即使拥有有效智能卡,也只能获取虚拟身份,无法恢复其他用户的真实身份。
2.2 安全性
- 已知会话密钥攻击 :会话密钥 $SK$ 包含只有 $HA$ 知道的 $x_{MN}$,且用于计算 $V_2$。攻击者即使获得 $SK$,也难以通过 $V_2$ 和 $SK$ 穷举搜索找到 $ID_{MN}$,方案对已知会话密钥攻击具有抗性。
- 侧信道攻击 :攻击者从智能卡提取 $h(x)$ 并窃听消息,虽能获得虚拟身份,但由于 $SK$ 包含 $h(x_{MN})$,$ID_{MN}$ 与秘密参数 $r_{MN}$ 关联,攻击者无法恢复会话密钥和用户身份。
综上所述,改进方案通过增加额外秘密值和虚拟身份,克服了原有方案的安全漏洞,提供了更好的匿名性和安全性,且使用低成本函数,适用于移动环境。
三、认证组密钥传输协议的分析
3.1 组密钥传输协议概述
组密钥交换协议可分为密钥协商协议和密钥传输协议。密钥协商协议要求每个参与者为会话密钥贡献部分信息,而密钥传输协议允许一个可信实体生成会话密钥并传输给所有参与者。
Sun 等人提出了一种基于秘密共享而非加密算法的组密钥传输协议。该协议只需服务器在一轮分发中一次性广播 $n + 1$ 条消息,所有合法用户在所有会话中只需存储一个秘密份额。
3.2 Sun 等人协议的详细流程
3.2.1 用户注册
每个用户登录密钥生成中心(KGC)订阅组密钥分发服务。在注册过程中,KGC 与每个用户 $U_i$ 共享一个秘密 $s’_i$,并跟踪注册用户的行为,移除未订阅的用户。
3.2.2 组密钥生成和分发
- 组内指定的发起者向 KGC 发送包含当前会话中注册用户 $U_1, U_2, \ldots, U_n$ 身份的消息 ${u_1, u_2, \ldots, u_n}$,请求组密钥分发服务。
- KGC 根据收到的消息广播所有参与者的列表作为响应。
- 每个用户 $U_i$ 向 KGC 发送一个随机挑战 $r_i$。
-
KGC 随机选择 $S$ 生成当前服务的组密钥 $K = g^S$,并使用衍生秘密共享将 $S$ 分割成两部分 $n$ 次,即 $S = s_1 + s’_1 = s_2 + s’_2 = \cdots = s_n + s’_n$。然后计算:
- $M_i = {g^{s_i + r_i}, u_i, H(u_i, g^{s_i + r_i}, s’_i, r_i)}$,$i = 1, 2, \ldots, n$
-
$Auth = H(K, g^{s_1 + r_1}, \ldots, g^{s_n + r_n}, u_1, \ldots, u_n, r_1, \ldots, r_n)$
最后,KGC 一次性向用户广播 ${M_1, \ldots, M_n, Auth}$。
-
用户 $U_i$ 收到 $M_i$ 和 $Auth$ 后:
- 首先计算 $h = H(u_i, g^{s_i + r_i}, s’_i, r_i)$,检查 $h$ 是否与 $M_i$ 中的对应部分相等。若不相等则中止,否则继续。
- 计算 $K’ = g^{s’_i} * g^{s_i + r_i} / g^{r_i}$ 和 $Auth’ = H(K’, g^{s_1 + r_1}, \ldots, g^{s_n + r_n}, u_1, \ldots, u_n, r_1, \ldots, r_n)$,检查 $Auth’$ 是否与 $Auth$ 相同。若相同,则 $K’$ 即为 KGC 分发的组密钥 $K$。
- 每个用户 $U_i$ 向 KGC 返回一个值 $h’_i = H(s’_i, K’, u_1, \ldots, u_n, r_1, \ldots, r_n)$。KGC 计算 $h_i = H(s’_i, K, u_1, \ldots, u_n, r_1, \ldots, r_n)$,检查 $h’_i$ 是否与 $h_i$ 相等,以确保每个用户都获得了正确的组密钥。
以下是组密钥生成和分发阶段的表格总结:
|步骤|操作|
|----|----|
|1|发起者向 KGC 发送用户身份消息请求服务|
|2|KGC 广播参与者列表|
|3|每个用户 $U_i$ 向 KGC 发送随机挑战 $r_i$|
|4|KGC 生成组密钥 $K$,分割 $S$,计算 $M_i$ 和 $Auth$ 并广播|
|5|用户 $U_i$ 验证并计算组密钥 $K’$|
|6|用户 $U_i$ 向 KGC 返回 $h’_i$,KGC 验证|
3.3 Sun 等人协议的攻击分析
3.3.1 外部攻击
-
方法一
:
- 攻击者 $A$ 从 KGC 与授权用户 $U_i$ 之间的广播信道获取 $(M_1, \ldots, M_2, Auth)$。
- 由于 $A$ 知道 $M_i = {g^{s_i + r_i}, u_i, H(u_i, g^{s_i + r_i}, s’_i, r_i)}$,可获取 $H(u_i, g^{s_i + r_i}, s’_i, r_i)$。
- 已知 $(u_i, g^{s_i + r_i})$ 且 $r_i$ 为公共值,$A$ 可获取 $s’_i$。
- $A$ 通过计算 $K = g^{s’_i} * g^{s_i + r_i} / g^{r_i}$ 获得会话密钥 $K$。
-
方法二
:
- $A$ 从广播信道获取 $(M_1, \ldots, M_2, Auth)$。
- 从 $M_i$ 中获取 $u_i$ 和 $g^{s_i + r_i}$。
- 已知 $r_i$ 为公共值,$A$ 知道 $(Auth, g^{s_1 + r_1}, \ldots, g^{s_n + r_n}, u_1, \ldots, u_n, r_1, \ldots, r_n)$。
- $A$ 通过猜测攻击从 $Auth = H(K, g^{s_1 + r_1}, \ldots, g^{s_n + r_n}, u_1, \ldots, u_n, r_1, \ldots, r_n)$ 中获取会话密钥 $K$。
3.3.2 内部攻击
Sun 等人的协议中,每个内部用户都能重构组密钥,但没有额外的安全保障。虽然他们关注了每个参与者秘密份额的安全性,但协议仍无法抵御内部攻击。
下面是外部攻击方法一的 mermaid 流程图:
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A([开始]):::startend --> B(A获取(M1, ..., M2, Auth)):::process
B --> C(A获取H(ui, gsi+ri, si', ri)):::process
C --> D(A获取si'):::process
D --> E(A计算K = gsi' * gsi+ri / gri):::process
E --> F([结束]):::startend
四、总结
改进的匿名认证方案通过增加额外的秘密值和虚拟身份,克服了原有方案的安全漏洞,为移动用户提供了更好的匿名性和安全性。该方案使用低成本函数,如单向哈希函数和异或运算,适用于移动环境。
而 Sun 等人提出的基于秘密共享的组密钥传输协议存在安全漏洞,容易受到外部和内部攻击,无法提供协议所声称的相互认证和密钥保密性。在设计和使用密钥交换协议时,需要充分考虑各种安全威胁,确保协议的安全性和可靠性。
超级会员免费看
27

被折叠的 条评论
为什么被折叠?



