随着社会科技手段的快速进步, 社会步入了通信发展时代, 秘密通话在大家的生活中尤为重要. 身份验证和密钥协商协议作为通信安全的重要领域, 可以确保用户在不安全的信道上进行安全的信息验证和传输. 它不仅是加密通信的重要组成部分, 而且还允许两个或更多使用者通过敌手控制的非加密通信安全通话, 并产生出公共会话密钥以实现开放网络中的通信安全性. 然而对应的, 我们依然无法忽视恶意攻击者的各种手段, 因此众多学者在认证密钥协商协议上进行探讨与改进, 为密钥协商协议的研究发展做出重大贡献[1].
文献[2]针对临时秘钥泄露问题, 设计出解决此问题的eCK方案模型, 并给出一套针对此攻击的Naxos方案. 但是, eCK模型仅思考了协议将被哪些攻击手段攻击, 而没有思考协议的强前向安全性. 顾兆军等人则是考虑了协议的前向安全性, 并将双线性对方法引入到协议中形成新的方案, 使得协议安全强度更高[3]. 文献[4]在基于困难问题的DDA协议下设计了新的可信匿名方案协议, 使得通信双反实现可匿名并且安全通信. 曹阳等人在文献[5]中为了使得SIP协议的安全性进一步提升, 同样是基于椭圆曲线离散对数等困难操作下设计了新的AKA协议. 黄朝阳更是于文献[6]中更加具体的将困难问题函数结合到公钥密码协议的认证过程里, 提升运算复杂程度来增加可靠性. 曾继强等则是为了更高效地解决群组秘钥的生成, 基于三叉树方案提出了新的协议, 高效可靠地解决了群组会话通信问题[7]. 赵广强等人为了抵抗DDOS手段与薛峰等人协议方案中某一阶段存在的问题, 设计出基于双线性对计算的新方法, 使得协议更加安全可靠[8].
本文研究了匿名两方AKA协议, 发现其不能防御离线字典攻击, 于是将抗离线字典攻击安全属性引入设计的AKA协议同时, 还将椭圆曲线运算、双线性配对操作、D-H困难操作等与注册和认证方案过程结合, 再将智能卡与口令的协议方案相结合, 可以有效使得协议运行的安全性显著提升, 并将加密的密码存在服务器的身份验证表中, 同时在认证过程进行调整, 使得方案可以实现双方互相认证. 最后进行了安全性证明, 在安全与轻量化计算过程方面更有优势.
1 背景知识 1.1 椭圆曲线间隙假设(ECCDH假设)令
定义1. ECCDH假设(Elliptic Curve Computational Diffie-Hellman, ECCDH). 假如有秘密参数
$Adv_Z^{\rm{ECCDH}}(A) = Pr\left[ {A(G,P,aP,bP) = abP} \right] \le \varepsilon (k)$ | (1) |
则称循环加法群G满足ECCDH假设, 其中, 等式左边表示算法A解决椭圆曲线问题的优势,
协议参与者和初始化. 我们在系统中设置了3种类型的实体: 使用者U,敌手A和服务器S, Set Authentication和密钥协议P, P和操作协议称为协议P. 服务器跟使用者之间可以有很多实例. 我们用
Execute
Send
Corrupt (U, password): 这里对密码遗失攻击进行模拟, A可以使用此查询来得到U的密码.
Corrupt (U, smartcard): 这里对智能卡遗失攻击进行模拟, A可以使用此查询来得到智能卡里存放的秘密消息.
Reveal
Test
定义2. 假如A执行Test查询后得到的
$Adv_{p,d}^{ake}(A) = 2 \cdot pr\left[ {b = b'} \right] - 1$ | (2) |
如果:
$Adv_{p,d}^{ake}(A) = o({q_{{\text{send}}}})/|{D_{pw}}|$ | (3) |
则称协议P为语义安全. 其中,
Sun等人提出了基于SmartCard和密码的匿名PAKA协议, 该方案由于使智能卡的计算与存储成本大大降低, 因此在基于智能卡的AKA协议中被广泛应用, 该方案还指出其在智能卡遗失时攻击是没有威胁的[9]. 然而, 实验验证表明该方法在SmartCard遗失后没有办法防御离线字典的攻击, 也容易发生密码泄露和伪装. 本文模拟敌手使用口令猜测攻击进行攻击验证:
如果敌手A已经得到U的SmartCard, 此时A便能够掌握卡中全部秘密消息
$A:{r^B} \in \left[ {1,n} \right],{G_B} = {r_B} \cdot G$ |
$A \to S:\left\{ {IM,{G_B}} \right\}$ |
S验证U的身份后选择
$S:{K_{SU}} = {h_1}(h(I{D_U}\left\| {{K_S}} \right.)\left\| {{r_s} \times {G_B}} \right.)$ |
$S:{M_S} = {h_2}({K_{SU}}\left\| {{G_B}} \right.\left\| {{G_S}} \right.)$ |
$S \to U:\left\{ {{G_S},{M_S}} \right\}$ |
A: 敌手A截获信息
$ \begin{array}{l}A:{V}^{\prime }=V\oplus h(PW)| \text{, } {K}_{su}={h}_{1}({V}^{\prime }\Vert {r}_{B}\times {G}_{S})\\ {{K}^{\prime }}_{su}={h}_{1}({V}^{\prime }{\Vert {r}_{B}\times G}_{S}) \text{, } {{M}^{\prime }}_{s}={h}_{2}({K}_{su}\Vert {G}_{B}\Vert {G}_{S})\end{array}$ |
$A:{M'_s}? = {M_s}$ |
如果敌手A验证正确, 说明他选的
为了提升协议的安全属性, 本文进行设计, 将椭圆曲线运算、单向散列函数、D-H困难操作等结合到协议的注册与认证过程, 并添加密码加密后存放到服务器的身份验证表中. 协议分为两个部分: 注册阶段和认证阶段.
在注册阶段做出如下改进设计: 先由S选择一个大素数
在认证阶段做出如下改进设计: 用户A输入
得到信息M2后, 用户A计算
S接收来自使用者的消息后, 第一步检查
同样的, 针对智能卡丢失后不能防御敌手的离线密码猜测这一问题, 我们将身份认证和会话密钥相结合的双向认证方案改进到基于智能卡的协议方案中, 给协议增加了抗离线字典攻击安全属性. 协议分为两个部分: 注册阶段和认证阶段.
在注册阶段做出如下改进: 用户选择自己的标识
服务器计算
最后S把SC通过可信通道交给用户, 如图2.
在认证阶段做出如下改进:服务器S收到信息
在上面的协议基础上, 我们将智能卡与上面设计的匿名口令AKA协议注册过程相结合并在认证过程进行改进, 使得方案的安全可靠性进一步提升. 协议包括两个阶段: 用户注册阶段和用户认证阶段.
4.1 注册阶段由SC先选择一个大素数
用户A选择
S:
S: 利用私钥
A将随机数b和大素数p发送到SC. 此时, SC中的信息为
当A想要访问S, A和S之间开始相互认证.
A→Smart Card:
Smart Card:
Smart Card: 选随机数
$k = {H_1}({X^y},{V_A}),K = {g^k}$ |
Smart Card→S:
S: 验证
S: 利用私钥
S验证
S:
S:
S→A:
A: 验证A的秘密信息, 若通过, 则继续
Smart Card: 计算A与S会话密钥
Smart Card:
Smart Card→S:
S: 验证
S: 验证
S:
定理1. 在1.2节的模型下, 令
$\begin{split} & Adv_{{{g}},G}^{ake}(A) \le 2({q_{{\text{send}}}} + {q_{{\text{execute}}}})Adv_{{{g}},G}^{hddh} \\ & + 4\left( {\frac{{2{q_{{\text{send}}}} + {q_{{\text{execute}}}}}}{q}} \right) \\ & + 2\left( {\frac{{{q_{{\text{send}}}}}}{{\left| {{D_{pw}}} \right|}}} \right) + \frac{{q_{{\text{oracle}}}^2 + q_{{\text{send}}}^2 + q_{{\text{execute}}}^2}}{{(q - 1)}} \\ & + 2\min\{ ({q_{{\text{send}}}} + {q_{{\text{execute}}}}),{q_{{\text{reveal}}}}\} Adv_{{{g}},G}^{hddh} \end{split} $ | (4) |
证明. 在进行数次循环实例实验后(
$Adv_{{{g}},{{G}}}^{ake}(A) = 2 \cdot pr\left[ {b = b'} \right] - 1$ | (5) |
$\left| {pr[{{\textit{S}}_1}] - pr[{{\textit{S}}_0}]} \right| \le {q_{{\text{execute}}}}Adv_{g,G}^{ake}(A)$ | (6) |
$ \left|pr[{\textit{S}}_{2}]-pr[{\textit{S}}_{1}]\right|\le 1/2\left( {\frac{{{q}}_{{\text{execute}}}^{2}+{{q}}_{{\text{oracle}}}^{2}}{q-1}} \right)$ | (7) |
$\left| {pr[{{\textit{S}}_3}] - pr[{{\textit{S}}_2}]} \right| \le {q_{{\rm{send}}}}Adv_{g,G}^{{{hddh}}}(A)$ | (8) |
如果他验证密码一直不成功, 但是却执行了一个满足条件需求的新查询, 此时他没有一条和正确密码有关的消息, 他选定的秘密信息Y,K也被唯一的确定下来, 则此时的成功率为
$\left| {pr[{{\textit{S}}_4}] - pr[{{\textit{S}}_3}]} \right| \le \frac{{{q_{{\text{send}}}}}}{{\left| {{D_{pw}}} \right|}} + \frac{{2{q_{{\text{send}}}} + {q_{{\text{execute}}}}}}{q}$ | (9) |
$\left| {pr[{{\textit{S}}_5}] - pr[{{\textit{S}}_4}]} \right| \le \frac{1}{2} \cdot \frac{{q_{{\rm{oracle}}}^2 + q_{{\rm{send}}}^2}}{{q - 1}}$ | (10) |
$\left| {pr[{{\textit{S}}_6}] - pr[{{\textit{S}}_5}]} \right| \le \\ \min\{ ({q_{{\text{send}}}} + {q_{{\text{execute}}}}),{q_{{\text{reveal}}}}\} Adv_{{{g}},G}^{hddh}$ | (11) |
本次实例里, 敌手无法获得任何和密码相关的信息, 那么在执行Test时, 他可以正确预测模型硬币的概率是
$\begin{split} & Adv_{{{g}},G}^{ake}(A) \le 2({q_{{\text{send}}}} + {q_{{\text{execute}}}})Adv_{{\rm{g}},G}^{hddh} \\ & + 4\left( {\frac{{2{q_{{\text{send}}}} + {q_{{\text{execute}}}}}}{q}} \right) \\ & + 2\left( {\frac{{{q_{{\text{send}}}}}}{{\left| {{D_{pw}}} \right|}}} \right) +\frac{{q_{{\text{oracle}}}^2 + q_{{\text{send}}}^2 + q_{{\text{execute}}}^2}}{{(q - 1)}} \\ & + 2\min\{ ({q_{{\text{send}}}} + {q_{{\text{execute}}}}),{q_{{\text{reveal}}}}\} Adv_{{{g}},G}^{hddh} \end{split} $ | (12) |
由此, 可以得出定理1正确, 协议可证明安全.
6 性能分析由于安全性能的提升往往伴随着算法复杂度的提升, 这就意味着可能会牺牲小部分效率, 因此, 我们将本文所提方案与传统协议和最新的协议进行比较和性能分析.
我们以文献[9]作为传统协议的代表, 再以文献[3]作为最近的改进协议作为代表与本文方案进行对比, 完成一次哈希运算的效时为
由表1和表2可以看出, 本文方案在运行效率上明显略优于文献[3]和文献[9], 相比较而言文献[3]的数据交换次数略多, 并且从安全性上, 本文方案强度显然是高于文献[3]和文献[9]. 实际中, 我们将口令与智能卡相结合, 增加安全强度的同时, 用户的使用体验也会更加方便, 因此, 总体上我们的方案具有一定优势.
7 结束语
本文设计了一种基于口令的AKA协议方案. 并利用单向hash函数和椭圆曲线上的D-H问题来保证系统的安全与可靠. 针对基于SmartCard的AKA方案容易因为SmartCard被盗并无法防御离线密码猜测手段. 给出了一个将通信密钥和身份验证相结合的双向认证方案, 最后对协议进行了安全性证明. 该方案能防范多种攻击, 并且效率运行高、实际计算量较小、实际实用性强. 下一步将致力于在保证安全可用的基础下提出效率更高的认证方法.
[1] |
胡志言, 杜学绘, 曹利峰. 会话密钥协商协议研究进展. 计算机应用与软件, 2018, 35(5): 1-9, 72. DOI:10.3969/j.issn.1000-386x.2018.05.001 |
[2] |
LaMacchia B, Lauter K, Mityagin A. Stronger security of authenticated key exchange. Proceedings of the 1st International Conference on Provable Security. Wollongong: Springer-Verlag, 2007. 1–16.
|
[3] |
顾兆军, 刘东楠. 基于身份的无证书双线性对密钥协商方案. 中国民航大学学报, 2019, 37(1): 55-59. |
[4] |
关晨至, 石永革. 基于DAA的可信双向匿名认证密钥协商协议. 计算机系统应用, 2009, 18(12): 59-61. DOI:10.3969/j.issn.1003-3254.2009.12.014 |
[5] |
曹阳. 基于ECDLP的SIP认证密钥协商协议. 计算机系统应用, 2016, 25(3): 225-228. |
[6] |
黄朝阳. 无双线性对双向认证密钥协商协议. 计算机系统应用, 2016, 25(7): 192-195. DOI:10.15888/j.cnki.csa.005157 |
[7] |
曾继强, 史国振. 基于ECC的三叉树群组密钥协商方案. 计算机应用与软件, 2018, 35(9): 311-316. DOI:10.3969/j.issn.1000-386x.2018.09.055 |
[8] |
赵广强, 凌捷. 两个基于智能卡口令认证方案的改进. 计算机应用与软件, 2015, 32(5): 278-282. DOI:10.3969/j.issn.1000-386x.2015.05.068 |
[9] |
Sun DZ, Huai JP, Sun JZ, et al. Improvements of Juang’s password-authenticated key agreement scheme using smart cards. IEEE Transactions on Industrial Electronics, 2009, 56(6): 2284-2291. DOI:10.1109/TIE.2009.2016508 |