数学杂志  2024, Vol. 44 Issue (3): 212-224   PDF    
扩展功能
加入收藏夹
复制引文信息
加入引用管理器
Email Alert
RSS
本文作者相关文章
刘紫瑶
陈建华
韦永霜
多服务器环境下基于椭圆曲线密码的认证协议
刘紫瑶1, 陈建华1, 韦永霜2    
1. 武汉大学数学与统计学院, 湖北 武汉 430072;
2. 工业和信息化部电子第五研究所, 广东 广州 510000
摘要:本文研究了多服务器环境下的认证密钥协商协议.通过对Andola等人方案的分析, 利用椭圆曲线密码和随机数设计了一种改进的认证密钥协商协议.使用BAN逻辑和非形式化分析方法, 对协议进行安全性分析.实验结果表明, 所提协议具有更好的安全性和实用性.
关键词多服务器    椭圆曲线密码    口令    密钥协商    
AN ELLIPTIC CURVE CRYPTOGRAPHY BASED AUTHENTICATION SCHEME FOR MULTI-SERVER ENVIRONMENT
LIU Zi-yao1, CHEN Jian-hua1, WEI Yong-shuang2    
1. School of Mathematics and Statistics, Wuhan University, Wuhan 430072, China;
2. The Fifth Electronic Research Institute of Ministry of Industry and Information Technology, Guangzhou 510000, China
Abstract: In this paper, we study the authentication and key agreement protocol for multi-server environment. Through the analysis of the scheme of Andola et al, an improved authentication and key agreement protocol is proposed by using the elliptic curve cryptography and random number. Besides, the security of the improved scheme is proved by BAN logic and the informal security analysis. Experimental results show that the proposed protocol has better security and practicability.
Keywords: multi-server     elliptic curve cryptography     password     key agreement    
1 引言

随着互联网和无线通信技术的快速发展, 用户对网络服务的需求也不断增长. 然而, 开放的互联网环境存在着巨大的安全隐患, 敌手通过篡改、窃听、重放等可以获取用户的个人信息. 因此, 身份认证和密钥协商对于安全通信至关重要. 传统的认证协议大多基于单服务器架构, 用户需要注册每个服务器并记住多个身份凭证, 这种方式效率低, 容易造成用户身份信息的泄露. 为解决这个问题, 研究者们提出了基于多服务器架构的认证协议. 在多服务器环境下, 用户仅需在注册中心注册一次, 就可以访问所有应用服务器. 但多服务器系统也会带来新的问题, 用户面临的攻击不仅有来自外部的, 还有来自内部的攻击. 因此, 在多服务器环境下设计一个安全高效的认证协议具有重大意义.

2001年, Li等人[1]首次提出一种基于神经网络的多服务器认证方案, 该方案计算量大, 存储成本高, 且不提供口令更新功能. 接着, Lin等人[2], Juang等人[3], Chang和Lee[4], Tsai[5]提出了他们自己的多服务器认证方案. 然而, 这些方案在登录阶段用户使用的ID是静态的, 无法实现用户身份的不可追踪性. 2009年, Liao和Wang [6]提出了一种基于哈希函数和动态ID的认证方案, 实现了用户的匿名性, 但容易遭受服务器欺骗攻击, 内部攻击和伪装攻击. 为解决这一问题, Hsiang和Shih[7]提出了一个改进方案. 很快Sood等人[8]和Lee等人[9]指出Hsiang和Shih的方案无法抵抗口令猜测攻击和重放攻击. 随后, 针对不同的应用环境, 提出了几种轻量级的认证协议[10-15], 这些协议中仅涉及哈希和对称加密运算, 计算成本低, 但不能提供一些重要的安全属性, 如前向安全性和双因素安全性. 为了提高安全性, 公钥密码被广泛用于多服务器架构下认证协议的设计. 2013年, Wang和Ma[16]提出一种基于椭圆曲线离散对数问题的认证协议, 但该协议无法抵抗服务器欺骗攻击和离线口令猜测攻击[17]. Truong等人[18]提出一种新方案, 该方案由注册中心选择一个随机数作为用户的口令. 然而, 该方案不能抵抗离线口令猜测攻击和假冒攻击. Kumari和Om[19]利用RSA签名设计了一个认证方案. Irshad等人[20]提出了一种基于椭圆曲线密码和对称加密的认证方案, 并使用GNY逻辑进行形式化安全分析. 随后, Ying和Nayak [21]提出了一种基于5G网络的椭圆曲线密码认证协议. 但Haq等人[22]发现该协议不能真正实现用户身份的不可追踪性, 提出了一个改进方案, 改进方案在认证和密钥协商阶段中, 参与者不传输任何静态参数.

最近, Andola等人[23]提出了一种基于智能卡和动态身份的匿名认证方案, 宣称所提出的方案可以抵抗各类已知的攻击. 然而, 经过分析发现该方案容易遭受离线口令猜测攻击, 服务器欺骗攻击, 同时无法实现用户匿名性以及前向安全性. 为解决上述问题, 本文设计了一个基于椭圆曲线密码的认证密钥协商协议.

2 预备工作
2.1 椭圆曲线密码

给定两个大素数$ p $$ q $, $ F_p $是一个有限域, $ E $是定义在$ F_p $上的椭圆曲线, $ G $$ E $上的$ q $阶子群. 那么, 我们可以给出椭圆曲线上的两个困难问题[24]:

(1) 椭圆曲线离散对数问题(Elliptic curve discrete logarithm problem, ECDLP): 给定两个点$ P\in G $, $ Q\in G $, 求整数$ a\in Z_q^* $, 使得$ Q=aP $ 成立.

(2) 椭圆曲线计算性Diffie–Hellman问题(Elliptic curve computational Diffie–Hellman problem, ECDHP): 给定$ P\in G $, $ aP\in G $, $ bP\in G $ ($ a, b\in Z_q^* $是随机数), 计算$ abP \in G $.

2.2 模糊验证器

在基于智能卡和口令的认证协议中, 为实现口令本地自由更新, 通常需要在智能卡中存储有关口令的安全参数, 来检测用户输入口令是否正确. 然而, 这种方法带来了新的安全问题, 如果智能卡丢失, 协议容易遭受离线口令猜测攻击. 为解决这一问题, 可以采用模糊验证器(fuzzy-verifier)[25].

假设$ A_i $是口令验证参数, 将$ A_i $修改为$ A_i \ mod \ n $, 其中$ 2^4 \leq n \leq 2^8 $. 如果敌手想要从$ A_i $中猜测口令, 将会得到$ \dfrac{{\lvert {\mathscr D}_{ID} \rvert}*{\lvert {\mathscr D}_{PW} \rvert}}{n} $个可能的$ ({ID}_i^*, {PW}_i^*) $, 他们都满足$ A_i^*=A_i $, 其中$ \lvert {\mathscr D}_{ID} \rvert $, $ \lvert {\mathscr D}_{PW} \rvert $分别表示用户身份和口令的空间规模. 因此, 敌手无法确定真正的$ ({ID}_i, {PW}_i) $, 可以有效抵抗离线口令猜测攻击.

3 Andola等人协议的回顾

Andola等人[23]的协议涉及三个参与方: 注册中心$ RC $, 服务器$ S_j $和用户$ U_i $. $ RC $选取系统主密钥$ x $和秘密参数$ y $, 计算$ h(y) $, $ h(x||y) $, 然后将这两个参数通过安全信道发送给$ S_j $, $ S_j $ 将其秘密保存.

协议由4个阶段组成: 注册阶段, 登录阶段, 认证阶段和口令更新阶段. 具体步骤如下:

3.1 注册阶段

用户$ U_i $通过安全信道向注册中心$ RC $申请注册, 过程如下:

步骤1. 用户$ U_i $选择身份$ {ID}_i $, 口令$ {PW}_i $, 以及随机数$ b $. 计算$ {RPW}_i=h(b\oplus{PW}_i) $, 然后将消息$ \{{ID}_i, {RPW}_i\} $通过安全信道发送给$ RC $.

步骤2. 注册中心$ RC $收到消息后, 选择一个随机数$ Z_i $, 计算$ A_i=h(x||{ID}_i) $, $ B_i=Z_i\oplus{ID}_i\oplus{RPW}_i $, $ C_i=h({RPW}_i||{ID}_i||Z_i)\oplus B_i $, $ E_i=h(h(x||y)||A_i)\oplus Z_i. $$ \{A_i, B_i, C_i, E_i, h(y), h(\cdot)\} $写入智能卡$ {SC}_i $中, 并将$ {SC}_i $通过安全信道发送给$ U_i $.

步骤3. $ U_i $$ b $存储到智能卡中.

3.2 登录阶段

登录阶段分为如下3个步骤:

步骤1. 当用户$ U_i $登录服务器$ S_j $时, 将智能卡$ {SC}_i $插入读卡机并输入$ {ID}_i $, $ {PW}_i $, 以及$ S_j $的身份$ {SID}_j $.

步骤2. $ {SC}_i $计算$ Z_i={ID}_i\oplus h(b\oplus {PW}_i)\oplus B_i $, $ C_i^{\prime}=h(h(b\oplus {PW}_i)||{ID}_i||Z_i)\oplus B_i $, 然后判断$ C_i^{\prime}\overset {\text{?}}{=} C_i $. 如果不相等, 会话终止.

步骤3. $ {SC}_i $选择随机数$ N_i $, 计算$ P_{ij}=h(N_i||h(y)||{SID}_j)\oplus A_i $, $ {CID}_i=E_i\oplus h(N_i||{SID}_j||A_i) $, $ M_1=h(Z_i||N_i||E_i) $, $ M_2=N_i\oplus h({SID}_j||h(y)) $. 然后通过公共信道将消息$ \{P_{ij}, {CID}_i, M_1, M_2\} $发送给服务器$ S_j $.

3.3 认证阶段

认证阶段分为如下4个步骤:

步骤1. 当收到登录请求$ \{P_{ij}, {CID}_i, M_1, M_2\} $后, $ S_j $计算$ N_i=M_2\oplus h({SID}_j||h(y)) $, $ A_i=h(N_i||h(y)||{SID}_j)\oplus P_{ij} $, $ E_i={CID}_i\oplus h(N_i||{SID}_j||A_i) $, $ Z_i^{\prime }=h(h(x||y)||A_i)\oplus E_i $, $ M_1^{\prime}=h(Z_i^{\prime}||N_i||E_i) $, 然后判断$ M_1^{\prime}\overset {\text{?}}{=}M_1 $. 如果不相等, 会话终止.

步骤2. $ S_j $选择随机数$ N_j $, 计算$ M_3=h(Z_i^{\prime}||N_i||{SID}_j||{CID}_i) $, $ M_4=N_i\oplus N_j\oplus A_i $. 然后通过公共信道将消息$ \{M_3, M_4\} $发送给用户$ U_i $.

步骤3. $ U_i $收到消息$ \{M_3, M_4\} $后, 计算$ N_j=M_4\oplus A_i\oplus N_i $, $ M_3^{\prime}=h(Z_i||N_i||{SID}_j||{CID}_i) $, 然后判断$ M_3^{\prime}\overset {\text{?}}{=} M_3 $. 如果不相等, 会话终止. 如果相等, 计算$ M_5=h(Z_i||N_j||{SID}_j||{CID}_i) $, 会话密钥$ SK=h(Z_i||{SID}_j||N_i||N_j||{CID}_i) $, 然后通过公共信道将消息$ \{M_5\} $发送给$ S_j $.

步骤4. $ S_j $收到消息$ \{M_5\} $后, 计算$ M_5^{\prime }=h(Z_i^{\prime }||N_j||{SID}_j||{CID}_i) $, 然后判断$ M_5^{\prime }\overset {\text{?}}{=} M_5 $. 如果不相等, 会话终止. 如果相等, $ S_j $$ U_i $实现了相互认证并协商出共同的会话密钥$ SK=h(Z_i^{\prime}||{SID}_j||N_i||N_j||{CID}_i) $.

3.4 口令更新阶段

如果用户$ U_i $想要将口令$ {PW}_i $修改为$ {PW}_i^{new} $时, 执行如下过程:

步骤1. 用户将智能卡$ {SC}_i $插入读卡机, 输入$ {ID}_i $, $ {PW}_i $.

步骤2. $ {SC}_i $计算$ Z_i={ID}_i\oplus h(b\oplus {PW}_i)\oplus B_i $, $ C_i^*=h(h(b\oplus {PW}_i)||{ID}_i||Z_i)\oplus B_i $, 然后判断$ C_i^*\overset {\text{?}}{=} C_i $. 如果相等, 提示用户输入新口令$ {PW}_i^{new} $.

步骤3. $ {SC}_i $选择一个新的随机数$ b^{new} $, 计算$ {RPW}_i^{new}=h(b^{new}\oplus {PW}_i^{new}) $, $ B_i^{new}=Z_i\oplus{ID}_i\oplus{RPW}_i^{new} $, $ C_i^{new}=h({RPW}_i^{new}||{ID}_i||Z_i)\oplus B_i^{new} $. 然后, $ {SC}_i $$ B_i^{new} $, $ C_i^{new} $, $ b^{new} $ 替换卡内的$ B_i, C_i, b $.

4 Andola等人协议的安全缺陷
4.1 离线口令猜测攻击

假设敌手$ \mathscr A $拿到了用户$ U_i $的智能卡, 通过边信道技术可以提取卡内的秘密信息$ \{B_i, C_i, h(\cdot), b\} $. 那么$ \mathscr A $可以发起离线口令猜测攻击, 得到用户的口令$ {PW}_i $, 具体过程如下:

步骤1. $ \mathscr A $从用户身份空间$ {\mathscr D}_{ID} $和口令空间$ {\mathscr D}_{PW} $中猜测$ ({ID}_i^*, {PW}_i^*) $.

步骤2. $ \mathscr A $计算$ {RPW}_i^*=h(b\oplus {PW}_i^*) $, $ Z_i^*=B_i\oplus {ID}_i^*\oplus {RPW}_i^* $, $ C_i^*=h({RPW}_i^*||{ID}_i^*||Z_i^*)\oplus B_i $.

步骤3. $ \mathscr A $检查$ C_i^*\overset {\text{?}}{=} C_i $. 若相等, 则$ \mathscr A $猜测的$ ({ID}_i^*, {PW}_i^*) $正确. 否则, 跳转步骤1.

4.2 服务器欺骗攻击

假设敌手$ \mathscr A $拿到了用户$ U_i $的智能卡并提取卡内的秘密信息$ \{A_i, B_i, C_i, h(y), h(\cdot), b\} $, 同时, $ \mathscr A $拦截$ U_i $发送给服务器$ S_j $的登录信息$ \{{CID}_i, M_2\} $. 那么$ \mathscr A $可以发起服务器欺骗攻击, 假冒一个合法的服务器. 具体过程如下:

步骤1. 由4.1节可知, $ \mathscr A $可以通过离线口令猜测攻击得到用户的身份和口令$ ({ID}_i, {PW}_i) $, 从而可以计算出$ {RPW}_i=h(b\oplus {PW}_i) $, $ Z_i=B_i\oplus {ID}_i\oplus {RPW}_i $.

步骤2. $ \mathscr A $选取随机数$ N_j^* $, 计算$ N_i=M_2\oplus h({SID}_j||h(y)) $, $ M_3^*=h(Z_i||N_i||{SID}_j||{CID}_i) $, $ M_4^*=N_i\oplus N_j^*\oplus A_i $. 然后$ \mathscr A $将消息$ \{M_3^*, M_4^*\} $发送给用户$ U_i $.

步骤3. $ U_i $计算$ M_3^{\prime} $, 将会得到$ M_3^{\prime}=M_3^* $. 因此, $ U_i $$ \mathscr A $协商出一个共同的会话密钥$ SK= h(Z_i||{SID}_j||N_i||N_j^*||{CID}_i) $.

4.3 匿名性失效

假设敌手$ \mathscr A $是一个恶意用户, 可以提取自己智能卡中的参数$ h(y) $. 同时$ \mathscr A $可以窃听到用户$ U_i $发送给服务器$ S_j $的登录信息$ \{P_{ij}, M_2\} $. 所以, 可以计算出$ N_i=M_2\oplus h({SID}_j||h(y)) $, $ A_i=h(N_i||h(y)||{SID}_j)\oplus P_{ij} $. 因为$ A_i=h(x||{ID}_i) $, 是一个与用户身份$ {ID} _i $相关的固定参数, 可以追踪$ U_i $的访问行为. 因此, 用户匿名性失效.

4.4 前向安全性问题

假设敌手$ \mathscr A $可以从恶意服务器中获得长期私钥$ h(y) $$ h(x||y) $, 同时$ \mathscr A $可以窃听到用户$ U_i $发送给服务器$ S_j $的登录信息$ \{P_{ij}, {CID}_i, M_2\} $以及$ S_j $发送给$ U_i $的响应消息$ \{M_4\} $. 那么, $ \mathscr A $可以计算出$ N_i=M_2\oplus h({SID}_j||h(y)) $, $ A_i=h(N_i||h(y)||{SID}_j)\oplus P_{ij} $, $ E_i={CID}_i\oplus h(N_i||{SID}_j||A_i) $, $ Z_i=h(h(x||y)||A_i)\oplus E_i $, $ N_j=M_4\oplus A_i\oplus N_i $. 因此, $ \mathscr A $可以获得会话密钥$ SK=h(Z_i||{SID}_j||N_i||N_j||{CID}_i) $. 因此, 无法实现前向安全性.

5 改进方案

针对文献[23]的安全缺陷, 本文设计了一种基于椭圆曲线密码的认证密钥协商协议, 包括注册中心$ RC $, 服务器$ S_j $, 用户$ U_i $三个参与方. 以下是详细步骤:

5.1 系统初始化阶段

$ RC $在素域$ F_p $上选择一个椭圆曲线$ E $, $ P $$ E $上阶为$ q $的生成元. $ RC $选取私钥$ x $, 单向哈希函数$ h: {\{a, b\}^{*}}\to{Z_q^*} $, 和整数$ n $, 其中$ 2^4 \leq n \leq 2^8 $. $ RC $将参数$ \{E, P, h(\cdot), n\} $公开.

5.2 服务器注册阶段

服务器$ S_j $通过安全信道向注册中心$ RC $申请注册, 其过程如图 1所示.

图 1 所提出方案的服务器注册阶段

步骤1. 服务器$ S_j $选择身份$ {SID}_j $, 然后将消息$ \{{SID}_j\} $通过安全信道发送给$ RC $.

步骤2. 注册中心$ RC $收到消息后, 检查$ h({SID}_j||x) $是否存在于身份验证表$ {\Gamma }_1 $中. 如果存在, $ RC $拒绝$ S_j $的注册请求, 要求$ S_j $提供新的身份标识. 否则, $ RC $选择一个随机数$ r_j $, 计算$ S_j $的私钥$ x_j=h({SID}_j||x||r_j) $, 公钥$ Q_j=x_jP $. 然后, 把$ \{h({SID}_j||x) \} $存储到服务器身份验证表$ {\Gamma }_1 $中, 公开参数$ \{{SID}_j, Q_j \} $. 最后, 将$ \{x_j \} $通过安全信道发送给$ S_j $.

步骤3. $ S_j $秘密保存$ x_j $.

5.3 用户注册阶段

用户$ U_i $通过安全信道向注册中心$ RC $申请注册, 其过程如图 2所示.

图 2 所提出方案的用户注册阶段

步骤1. 用户$ U_i $选择身份$ {ID}_i $, 口令$ {PW}_i $, 以及随机数$ b $. 计算$ {RPW}_i=h({PW}_i||b) $, 然后将消息$ \{{ID}_i, {RPW}_i\} $通过安全信道发送给$ RC $.

步骤2. 注册中心$ RC $收到消息后, 检查$ h({ID}_i||x) $是否存在于身份验证表$ {\Gamma }_2 $中. 如果存在, $ RC $拒绝$ U_i $的注册请求, 要求$ U_i $提供新的身份标识. 否则, $ RC $选择一个随机数$ r_i $, 计算$ U_i $的私钥$ x_i=h({ID}_i||x||r_i) $, 公钥$ Q_i=x_iP $, $ A_i=h((h(ID_i)\oplus {{RPW}_i})\ mod \ n) $, $ B_i=x_i\oplus {RPW}_i $. $ RC $$ \{h({ID}_i||x), T_i=1\} $存储到用户身份验证表$ {\Gamma }_2 $中, 其中$ T_i=1 $意味着用户$ U_i $只注册过一次并且智能卡处于激活状态. 然后, $ RC $公开参数$ \{{ID}_i, Q_i \} $, 将$ \{A_i, B_i, n, h(\cdot)\} $写入智能卡$ {SC}_i $中, 并将$ {SC}_i $通过安全信道发送给$ U_i $.

步骤3. $ U_i $收到智能卡$ {SC}_i $后, 计算$ \tilde{b}=b\oplus(h({ID}_i||{PW}_i)\ mod\ n) $, 然后将$ \tilde{b} $存储到智能卡$ {SC}_i $中.

5.4 登录阶段

图 3描述了方案的登录与认证阶段. 登录阶段分为如下3个步骤:

图 3 所提出方案的登录与认证阶段

步骤1. 当用户$ U_i $登录服务器$ S_j $时, 将智能卡$ {SC}_i $插入读卡机并输入$ {ID}_i $, $ {PW}_i $$ {SID}_j $.

步骤2. $ {SC}_i $计算$ b=\tilde{b} \oplus(h({ID}_i||{PW}_i)\ mod\ n) $, $ {RPW}_i^*=h({PW}_i||b) $, $ A_i^*=h((h(ID_i)\oplus {{RPW}_i^*})\ mod \ n) $, 然后判断$ A_i^*\overset {\text{?}}{=} A_i $. 如果不相等, 会话终止.

步骤3. $ {SC}_i $选择两个随机数$ a_i $, $ b_i $, 计算$ x_i=B_i\oplus {RPW}_i $, $ C_i=a_iP=(C_x, C_y) $, $ D_{ij}=a_iQ_j $, $ E_i=x_ih({ID}_i)+a_iC_x\ mod\ q $, $ F_i=b_iP $, $ {CID}_i=({ID}_i||E_i)\oplus h(D_{ij}) $. 然后通过公共信道将消息$ \{C_i, F_i, {CID}_i\} $发送给服务器$ S_j $.

5.5 认证阶段

认证阶段分为如下4个步骤:

步骤1. 当收到登录请求$ \{C_i, F_i, {CID}_i\} $后, $ S_j $计算$ D_{ji}=x_jC_i $, $ (C_x, C_y)=C_i $, $ {ID}_i||E_i={CID}_i \oplus h(D_{ji}) $, 然后判断$ E_iP\overset {\text{?}}{=}Q_ih({ID}_i)+C_xC_i $. 如果不相等, 会话终止.

步骤2. $ S_j $选择随机数$ d_j $, 计算$ H_j=d_jP $, $ K_{ji}=d_jF_i $, 会话密钥$ SK=h(K_{ji}||E_i) $, $ L_j=h(SK||D_{ji}||F_i) $. 然后通过公共信道将消息$ \{H_j, L_j\} $发送给用户$ U_i $.

步骤3. $ U_i $收到消息$ \{H_j, L_j\} $后, 计算$ K_{ij}=b_iH_j $, $ SK=h(K_{ij}||E_i) $, $ L_j^*=h(SK||D_{ij}||F_i) $, 然后判断$ L_j^*\overset {\text{?}}{=} L_j $. 如果不相等, 会话终止. 如果相等, 计算$ N_i=h(D_{ij}||SK||H_j) $, 然后通过公共信道将消息$ \{N_i\} $发送给服务器$ S_j $.

步骤4. $ S_j $收到消息$ \{N_i\} $后, 计算$ N_i^*=h(D_{ji}||SK||H_j) $, 然后判断$ N_i^*\overset {\text{?}}{=} N_i $. 如果不相等, 会话终止. 如果相等, $ S_j $$ U_i $实现了相互认证并协商出共同的会话密钥$ SK $.

5.6 口令更新阶段

如果用户$ U_i $想要将口令$ {PW}_i $修改为$ {PW}_i^{new} $时, 执行如下过程:

步骤1. 用户将智能卡$ {SC}_i $插入读卡机, 输入$ {ID}_i $, $ {PW}_i $.

步骤2. $ {SC}_i $计算$ b^*=\tilde{b} \oplus(h({ID}_i||{PW}_i)\ mod\ n) $, $ {RPW}_i^*=h({PW}_i||b^*) $, $ A_i^*=h((h(ID_i)\oplus {{RPW}_i^*})\ mod \ n) $, 然后判断$ A_i^*\overset {\text{?}}{=} A_i $. 如果相等, 提示用户输入新口令$ {PW}_i^{new} $.

步骤3. $ {SC}_i $选择一个新的随机数$ b^{new} $, 计算$ {RPW}_i^{new}=h({PW}_i^{new}|| b^{new}) $, $ A_i^{new}=h((h(ID_i)\oplus {{RPW}_i^{new}})\ mod \ n) $, $ B_i^{new}=B_i\oplus {RPW}_i^*\oplus {RPW}_i^{new} $, $ {\tilde{b}}^{new}=b^{new}\oplus(h({ID}_i||{RPW}_i^{new}mod\ n) $. 然后, $ {SC}_i $$ A_i^{new} $, $ B_i^{new} $, $ {\tilde{b}}^{new} $ 替换卡内的$ A_i, B_i, \tilde{b} $.

5.7 智能卡撤销和重新注册阶段

当用户$ U_i $的智能卡丢失或被盗时, $ U_i $可以撤销智能卡并使用同一身份$ {ID}_i $ 重新进行注册.

在智能卡撤销阶段, 用户需要向注册中心$ RC $提交注销申请和身份凭证. $ RC $收到申请后, 更新验证表$ {\Gamma }_2 $中的数据$ \{h({ID}_i||x), T_i=0\} $, 其中$ T_i=0 $ 意味着用户$ U_i $被撤销, 智能卡处于未激活状态.

如果$ U_i $想要使用身份$ {ID}_i $重新注册, 需要向注册中心$ RC $提交重新注册申请和身份凭证. $ RC $收到申请后, 按照用户注册阶段的步骤进行注册, 更新验证表$ {\Gamma }_2 $中的数据$ \{h({ID}_i||x), T_i=T_i+1\} $, 公开用户新的公钥信息$ \{{ID}_i, Q_i^{new} \} $, 并且给$ U_i $颁发一个新的智能卡.

6 协议的安全性分析及性能分析
6.1 BAN逻辑验证

本文利用$ BAN $逻辑[26]对协议进行形式化安全分析. 表 1$ BAN $逻辑的基本符号与含义, 表 2$ BAN $逻辑的推理规则.

表 1 BAN逻辑的基本符号与含义

表 2 BAN逻辑的推理规则

本文方案的具体分析过程如下所示:

(1) 协议模型的理想化

消息1. $ U_i \to S_j $: $ {\{{ID}_i, {\{{ID}_i, a_i, C_i\}}_{x_i}\}}_{U_i\stackrel{D_{ij}}\longleftrightarrow S_j} $, $ C_i $, $ F_i $

消息2. $ S_j \to U_i $: $ {\{U_i\stackrel{SK}\longleftrightarrow S_j, F_i\}}_{U_i\stackrel{D_{ij}}\longleftrightarrow S_j} $, $ H_j $

消息3. $ U_i \to S_j $: $ {\{U_i\stackrel{SK}\longleftrightarrow S_j, H_j\}}_{U_i\stackrel{D_{ij}}\longleftrightarrow S_j} $

(2) 安全目标

目标1. $ U_i|\equiv S_j | \equiv (U_i\stackrel{SK}\longleftrightarrow S_j) $

目标2. $ U_i | \equiv (U_i\stackrel{SK}\longleftrightarrow S_j) $

目标3. $ S_j|\equiv U_i| \equiv (U_i\stackrel{SK}\longleftrightarrow S_j) $

目标4. $ S_j|\equiv (U_i\stackrel{SK}\longleftrightarrow S_j) $

(3) 初始化假设

假设1. $ U_i|\equiv \sharp (b_i) $

假设2. $ S_j|\equiv \sharp (d_j) $

假设3. $ U_i | \equiv (U_i\stackrel{D_{ij}}\longleftrightarrow S_j) $

假设4. $ S_j | \equiv (U_i\stackrel{D_{ij}}\longleftrightarrow S_j) $

假设5. $ U_i|\equiv S_j |\Rightarrow (U_i\stackrel{SK}\longleftrightarrow S_j) $

假设6. $ S_j|\equiv U_i |\Rightarrow (U_i\stackrel{SK}\longleftrightarrow S_j) $

(4) 证明过程

步骤1. 根据消息2有: $ U_i\triangleleft {\{U_i\stackrel{SK}\longleftrightarrow S_j, F_i\}}_{U_i\stackrel{D_{ij}}\longleftrightarrow S_j} $.

步骤2. 根据步骤1, 假设3和消息含义规则有: $ U_i|\equiv S_j |\sim (U_i\stackrel{SK}\longleftrightarrow S_j, F_i) $.

步骤3. 根据假设1和新鲜性规则有: $ U_i|\equiv \sharp (U_i\stackrel{SK}\longleftrightarrow S_j, F_i) $.

步骤4. 根据步骤2, 步骤3和临时值校验规则有: $ U_i|\equiv S_j |\equiv (U_i\stackrel{SK}\longleftrightarrow S_j, F_i) $.

步骤5. 根据步骤4和信念规则有: $ U_i|\equiv S_j |\equiv (U_i\stackrel{SK}\longleftrightarrow S_j) $, 从而目标1得证.

步骤6. 根据步骤5, 假设5和管辖权规则有: $ U_i|\equiv (U_i\stackrel{SK}\longleftrightarrow S_j) $, 从而目标2得证.

步骤7. 根据消息3有: $ S_j \triangleleft {\{U_i\stackrel{SK}\longleftrightarrow S_j, H_j\}}_{U_i\stackrel{D_{ij}}\longleftrightarrow S_j} $.

步骤8. 根据步骤7, 假设4和消息含义规则有: $ S_j|\equiv U_i |\sim (U_i\stackrel{SK}\longleftrightarrow S_j, H_j) $.

步骤9. 根据假设2和新鲜性规则有: $ S_j|\equiv \sharp (U_i\stackrel{SK}\longleftrightarrow S_j, H_j) $.

步骤10. 根据步骤8, 步骤9和临时值校验规则有: $ S_j|\equiv U_i |\equiv (U_i\stackrel{SK}\longleftrightarrow S_j, H_j) $.

步骤11. 根据步骤10和信念规则有: $ S_j |\equiv U_i |\equiv (U_i\stackrel{SK}\longleftrightarrow S_j) $, 从而目标3得证.

步骤12. 根据步骤11, 假设6和管辖权规则有: $ S_j|\equiv (U_i\stackrel{SK}\longleftrightarrow S_j) $, 从而目标4得证.

6.2 非形式化安全分析

(1) 相互认证与密钥协商

在认证过程中, 服务器$ S_j $通过检查$ E_iP\overset {\text{?}}{=}Q_ih({ID}_i)+C_xC_i $, 来验证用户$ U_i $身份的合法性. 由于$ E_i $ 是由$ U_i $的私钥$ x_i $生成的签名, 基于ECDLP问题是不可解的, 只有合法用户才能生成正确签名通过服务器的认证. 用户$ U_i $通过检查$ L_j^*\overset {\text{?}}{=} L_j $, 来验证$ S_j $身份的合法性. 事实上, $ L_j=h(SK||a_ix_jP||F_i) $, 只有用户$ U_i $和拥有私钥$ x_j $的服务器才能计算出合法的验证消息$ L_j $. 因此, 本文方案实现了用户和服务器的相互认证. 另一方面, $ U_i $$ S_j $共同协商出一个会话密钥$ SK=h(K_{ij}||E_i) $. 由于$ K_{ij}=b_iH_j=d_jF_i $, 基于ECDHP问题是不可解的, 保证会话密钥的正确性.

(2) 用户匿名性

在登录和认证阶段, 敌手可以窃听会话信息, 其中, 与用户身份相关的消息有: $ {CID}_i $, $ L_j $, $ N_i $. $ L_j $$ N_i $受到单向哈希函数的保护, 无法从中得到$ {ID}_i $. 而$ {CID}_i=({ID}_i||E_i)\oplus h(D_{ij}) $$ D_{ij}=a_ix_jP $, 由于ECDHP问题是不可解的, 敌手无法通过$ a_iP $$ x_jP $计算出$ D_{ij} $. 因此, 不能解密$ {ID}_i $. 另一方面, $ {CID}_i $, $ L_j $$ N_i $中有随机数$ a_i $, $ b_i $, $ d_j $ 参与运算, 具有动态性, 无法判断两次会话是否由同一用户发起, 可以实现用户身份的不可追踪.

(3) 前向安全性

用户$ U_i $和服务器$ S_j $通过相互认证协商出会话密钥$ SK=h(b_id_jP||E_i) $, 而敌手只能通过窃听公共信道中的消息得到$ F_i=b_iP $, $ H_j=d_jP $, 由于ECDHP问题是不可解的, 敌手无法计算出$ b_id_jP $, 可以实现前向安全性.

(4) 抗离线口令猜测攻击

假设敌手可以获取用户智能卡, 并通过侧信道技术提取卡内存储的秘密信息$ \{A_i, B_i, n, h(\cdot), \tilde{b}\} $. 同时, 敌手可以窃听公共信道中传输的消息$ \{C_i, F_i, {CID}_i\} $. 我们从以下两个方面阐述本文方案可以抵抗离线口令猜测攻击.

一方面, 如果敌手利用$ A_i $来进行离线口令猜测攻击, 需要计算$ b=\tilde{b} \oplus(h({ID}_i^*||{PW}_i^*) mod\ n) $, $ {RPW}_i^*=h({PW}_i^*||b) $, $ A_i^*=h((h(ID_i^*)\oplus {{RPW}_i^*})\ mod \ n) $, 通过$ A_i^* $是否等于$ A_i $来判断$ ({ID}_i^*, {PW}_i^*) $的正确性. 根据2.2节, 由于模糊验证因子的存在, 满足等式成立的$ ({ID}_i^*, {PW}_i^*) $ 有很多, 无法通过猜测得到正确的口令.

另一方面, 如果敌手利用$ {CID}_i=({ID}_i||E_i)\oplus h(D_{ij}) $来进行离线口令猜测攻击, 需要计算出$ D_{ij}=a_ix_jP $, 这对敌手来说相当于解决ECDHP问题. 因此, 这种方式也是不可行的.

因此, 本文方案可以抵抗离线口令猜测攻击.

(5) 抗重放攻击

敌手截获合法用户$ U_i $发给服务器$ S_j $的登录消息$ \{C_i, F_i, {CID}_i\} $, 将同样的消息发送给$ S_j $, 可以通过$ S_j $的认证. 但只有知道该会话中的随机数$ a_i $, $ d_j $, 才能计算出会话密钥$ SK $以及验证值$ M_i $. 因而, 敌手无法完成后续流程, 会话终止. 另一方面, 敌手重放$ S_j $的响应消息$ \{H_j, L_j\} $也是不可行的, 因为该消息依赖于之前用户选择的随机数$ a_i $$ b_i $, 而随机数在每个会话中都不一样, 此消息无法通过当前用户的认证. 因此, 本文方案可以抵抗重放攻击.

(6) 抗服务器欺骗攻击

敌手可以截获用户发送给合法服务器$ S_j $的登录消息, 由于敌手不知道$ S_j $的私钥$ x_j $或者随机数$ a_i $, 无法计算出$ D_{ij}=a_ix_jP $, 也就不能伪造出合法的响应消息$ \{H_j, L_j\} $. 因此, 可以抵抗服务器欺骗攻击.

6.3 性能分析

在本节中, 从安全性能, 计算成本两个方面将本文方案与近年来提出的5个方案进行比较, 即Jangirala等人的方案[14], Kumari等人的方案[19], Irshad等人的方案[20], Haq等人的方案[22], Andola等人的方案[23].

表 3安全性能对比可以看出, 本文方案可以满足列出的所有安全属性, 而其他方案或多或少存在着一些安全缺陷. 比如, 方案[14, 19, 20, 22, 23]不能提供相互认证, 也不能抵抗服务器欺骗攻击. 方案[14, 19, 22, 23]不能实现用户匿名性. 方案[19, 20, 22, 23]不能抵抗离线口令猜测攻击. 方案[14, 22]不能抵抗重放攻击. 方案[23]不能实现前向安全性. 因此, 本文方案拥有更高的安全性.

表 3 安全性能对比

表 4, 表 5分别展示了本文与相关方案在计算量和运行时间上的对比结果. 由于用户和服务器仅需注册一次, 且口令更新操作不会频繁发生, 我们只考虑了登录与认证阶段的计算成本. 下面给出所用到的符号——$ T_e $: 模幂运算的时间复杂度; $ T_m $: 椭圆曲线点乘运算的时间复杂度; $ T_a $: 椭圆曲线点加运算的时间复杂度; $ T_s $: 对称加密/解密的时间复杂度; $ T_h $: 单向哈希函数的时间复杂度. 为了便于评估计算成本, 本文采用了文献[27]中的实验数据: $ T_e\approx 3.85\ ms $, $ T_m\approx2.226\ ms $, $ T_a\approx0.0288\ ms $, $ T_s\approx0.0046\ ms $, $ T_h\approx0.0023\ ms $. 相比于这些运算, 异或运算和连接运算可以忽略不计[25].

表 4 计算量对比

表 5 运行时间对比

表 4可以看出, 本文方案和方案[20, 22]使用椭圆曲线点乘运算, 方案[19]使用模幂运算, 方案[14, 23]使用哈希运算. 表 5显示, 基于哈希的方案(即[14, 23])拥有更低的计算成本. 在其他基于公钥密码的方案中(即[19, 20, 22]), 本文方案的计算成本最低.

7 结论

本文分析了Andola等人[23]提出的认证协议, 并指出该协议的安全漏洞: 无法抵抗离线口令猜测攻击, 服务器欺骗攻击, 缺乏用户匿名性以及前向安全性. 本文利用椭圆曲线离散对数问题和计算性Diffie–Hellman问题, 提出一个改进方案, 克服了上述缺陷. 通过对比分析, 本文方案满足各类安全属性, 具有更好的安全性能, 其计算效率也比同类型的协议有所提升, 更加适用于多服务器环境.

参考文献
[1] Li L H, Lin L C, Hwang M S. A remote password authentication scheme for multiserver architecture using neural networks[J]. IEEE Transactions on Neural Networks, 2001, 12(6): 1498–1504. DOI:10.1109/72.963786
[2] Lin I C, Hwang M S, Li L H. A new remote user authentication scheme for multi-server architecture[J]. Future Generation Computer Systems, 2003, 19(1): 13–22. DOI:10.1016/S0167-739X(02)00093-6
[3] Juang W S. An efficient and secure multi-server password authentication scheme using smart cards[J]. IEEE Transactions on Consumer Electronics, 2004, 50(1): 251–255. DOI:10.1109/TCE.2004.1277870
[4] Chang C C, Lee J S. An efficient and secure multi-server password authentication scheme using smart cards[C]. Tokyo: IEEE, 2004.
[5] Tsai J L. Efficient multi-server authentication scheme based on one-way hash function without verification table[J]. Computers & Security, 2008, 27(3-4): 115–121.
[6] Liao Y P, Wang S S. A secure dynamic ID based remote user authentication scheme for multi-server environment[J]. Computer Standards & Interfaces, 2009, 31(1): 24–29.
[7] Hsiang H, Shih W. Improvement of the secure dynamic ID based remote user authentication scheme for multi-server environment[J]. Computer Standards & Interfaces, 2009, 31(6): 1118–1123.
[8] Sood S K, Sarje A K, Singh K. A secure dynamic identity based authentication protocol for multi-server architecture[J]. Journal of Network and Computer Applications, 2011, 34(2): 609–618. DOI:10.1016/j.jnca.2010.11.011
[9] Lee C C, Lin T H, Chang R X. A secure dynamic ID based remote user authentication scheme for multi-server environment using smart cards[J]. Expert Systems with Applications, 2011, 38(11): 13863–13870.
[10] Tsaur W J, Li J H, Lee W B. An efficient and secure multi-server authentication scheme with key agreement[J]. Journal of Systems and Software, 2012, 85(4): 876–882. DOI:10.1016/j.jss.2011.10.049
[11] Li Xiong, Ma Jian, Wang Wendong, et al. A novel smart card and dynamic ID based remote user authentication scheme for multi-server environments[J]. Mathematical and Computer Modelling, 2013, 58(1-2): 85–95. DOI:10.1016/j.mcm.2012.06.033
[12] Chen C T, Lee C C. A two-factor authentication scheme with anonymity for multi-server environments[J]. Security and Communication Networks, 2015, 8(8): 1608–1625. DOI:10.1002/sec.1109
[13] Shunmuganathan S, Saravanan R D, Palanichamy Y. Secure and efficient smartcard-based remote user authentication scheme for multiserver environment[J]. Canadian Journal of Electrical and Computer Engineering, 2015, 38(1): 20–30. DOI:10.1109/CJECE.2014.2344447
[14] Janglrala S, Mukhopadhyay S, Das A K. A multi-server environment with secure and efficient remote user authentication scheme based on dynamic ID using smart cards[J]. Wireless Personal Communications, 2017, 95(3): 2735–2767. DOI:10.1007/s11277-017-3956-2
[15] Sahoo S S, Mohanty S, Majhi B. An improved and secure two-factor dynamic ID based authenticated key agreement scheme for multiserver environment[J]. Wireless Personal Communications, 2018, 101(3): 1307–1333. DOI:10.1007/s11277-018-5764-8
[16] Wang Bin, Ma Maode. A smart card based efficient and secured multi-server authentication scheme[J]. Wireless Personal Communications, 2013, 68(2): 361–378. DOI:10.1007/s11277-011-0456-7
[17] Pippal R S, Jaidhar C, Tapaswi S. Robust smart card authentication scheme for multi-server architecture[J]. Wireless Personal Communications, 2013, 72(1): 729–745. DOI:10.1007/s11277-013-1039-6
[18] Truong T T, Tran M T, Duong A D, et al. Provable identity based user authentication scheme on ECC in multi-server environment[J]. Wireless Personal Communications, 2017, 95(3): 2785–2801. DOI:10.1007/s11277-017-3961-5
[19] Kumari S, Om H. Cryptanalysis and improvement of an anonymous multi-server authenticated key agreement scheme[J]. Wireless Personal Communications, 2017, 96(2): 2513–2537. DOI:10.1007/s11277-017-4310-4
[20] Irshad A, Sher M, Chaudhry S A, et al. A secure mutual authenticated key agreement of user with multiple servers for critical systems[J]. Multimedia Tools and Applications, 2018, 77(9): 11067–11099. DOI:10.1007/s11042-017-5078-y
[21] Ying B, Nayak A. Lightweight remote user authentication protocol for multi-server 5G networks using self-certified public key cryptography[J]. Journal of Network and Computer Applications, 2019, 131: 66–74. DOI:10.1016/j.jnca.2019.01.017
[22] Ul Haq I, Wang J, Zhu Y. Secure two-factor lightweight authentication protocol using selfcertified public key cryptography for multi-server 5G networks[J]. Journal of Network and Computer Applications, 2020, 161: 102660. DOI:10.1016/j.jnca.2020.102660
[23] Andola N, Prakash S, Gahlot R, et al. An enhanced smart card and dynamic ID based remote multi-server user authentication scheme[J]. Cluster Computing, 2022, 25(5): 3699–3717. DOI:10.1007/s10586-022-03585-4
[24] Koblitz N. Elliptic curve cryptosystems[J]. Mathematics of Computation, 1987, 48(177): 203–209. DOI:10.1090/S0025-5718-1987-0866109-5
[25] Wang Ding, Wang Ping. Two birds with one stone: Two-factor authentication with security beyond conventional bound[J]. IEEE Transactions on Dependable and Secure Computing, 2016, 15(4): 708–722.
[26] Burrows M, Abadi M, Needham R. A logic of authentication[J]. ACM Transactions on Computer Systems (TOCS), 1990, 8(1): 18–36. DOI:10.1145/77648.77649
[27] Kilinc H H, Yanik T. A survey of sip authentication and key agreement schemes[J]. IEEE Communications Surveys & Tutorials, 2013, 16(2): 1005–1023.