杨珍娜,范九伦,祝 剑,韩 刚
(1.西安邮电大学 网络空间安全学院,陕西 西安 710121;2.西安邮电大学 学报编辑部,陕西 西安 710121)
通用串行总线(Universal Serial Bus,USB)是一种流行的串行总线标准[1],用于设备与主机的连接,以取代多种串行和并行端口。USB支持即插即用和热插拔,其单一、标准化、易于使用的方式可将设备与工业互联网系统相连接[2]。当前使用范围最广的USB设备是USB闪存驱动器。USB设备的技术基础是USB大容量存储类规范(Universal Mass Storage,UMS),其定义了大容量存储设备在USB总线上的通信方式。在UMS支持的各类协议中,主要是USB闪存驱动器及移动设备等支持的USB单批量传输协议[3]。除批量传输外,其他较少使用的UMS协议还使用中断传输方式。
在工业互联网环境中,工业联网设备可以识别USB存储设备并实现交互操作,当联网设备通过USB存储设备连接时,此类存储设备默认用作大容量存储设备。然而,若USB存储设备中包含病毒、特洛伊木马或其他恶意程序,可能会导致数据丢失、窃取和服务中断等风险[4],对工业互联网系统用户造成威胁。因此,对于工业互联网中存储设备用户身份的认证以及明文数据的保护至关重要,很多相应的保护方案被提出。2004年Ku等[5]提出了一种利用口令的认证方案,但该方案对于预防平行会话攻击非常脆弱。为此,Yoon等[6]提出了一个增强版的认证方案。为了平衡USB大容量存储设备的便捷性和安全风险,2010年,Yang等[7]提出了一种YWC协议,其有效管理了通过USB端口的文件传输,实现了合法用户验证和密钥协议。在YWC协议中,用户U获取用于实现与认证服务器(Authentication Server,AS)相互验证的密码,验证成功后将生成加密密钥,用于加密/解密通过USB端口传输的文件,在通信信道上传输的数据和存储在USB设备中的文件都可受到密钥保护。2010年,Yang等[8]提出了一种利用指纹、虹膜等人的生物特征生成口令的方案,用于提升安全性。2013年Lee等[9]基于生物特征以及第三方认证中心实现了一种认证协议。但2014年,He等[10]发现Lee等人的方案不能有效抵抗口令猜测攻击、拒绝服务攻击以及重放攻击等,于是又提出了一种基于三方认证的安全协议。2015年,Giri等[11]为实现用户身份认证以及保护大规模存储设备(Mass Storage Device,MSD)中的数据安全,提出了一种基于口令、生物特征以及第三方认证的安全协议。2018年,韩刚等[12]利用属性权限控制技术,实现了对 USB 设备用户的安全认证及隐私数据细粒度控制。2021年,刘忻等[13]设计了一种工业物联网身份认证协议,在实现合法性验证的基础上,引入用户的权限分离机制和参与实体的在线注册机制提高了协议的安全性和可用性。
考虑到YWC协议只有通过合法性验证的用户才可访问USB存储设备,即使USB存储设备上的文件被盗,若无解密密钥,也无法解密加密文件[7],在合法用户验证和用户隐私保护方面还存在缺陷,拟提出一种用于工业互联网场景中USB大容量存储设备的增强型安全协议(Control Protocol for USB,CPFU),用于在不牺牲计算和通信性能的前提下,有效提升YWC的安全性,以期满足工业互联网存储设备安全需求,实现相互认证、用户隐私保护、防止密钥恢复攻击、防止离线口令猜测攻击、防止重放攻击和防止被盗验证者攻击等安全属性。
为了防止通过USB存储设备窃取信息和泄漏敏感信息,YWC协议可提供用户身份验证和密钥协商。该协议由两个阶段组成,第一阶段是注册阶段,第二阶段是验证和数据加密阶段,这两个阶段分别在安全信道和不安全信道上执行。YWC协议中USB存储设备的控制协议如图1所示。
图1 YWC中USB存储设备的控制协议
在注册阶段,用户U首先选择自己的密码KU并连接USB存储设备,然后向认证服务器AS发送消息R1[Uid,hKU]。其中,Uid是用户标识,hKU是KU的散列函数值。
r=hKUk(modp)
e=h(Uid‖r‖r1)
s=k-ex(modq)
其中,r1=gk(modp)。将消息R2[r,e,s]保存至用户U的USB存储设备中,用户U验证e=h{Uid‖r‖[gsye(modp)]}确认注册成功。
e=h[Uid‖r‖gsye(modp)]
(1)
YWC协议可以为USB存储设备提供安全控制[7]。安全控制是指用户和服务器间的交互,例如相互认证和密钥协商。在YWC协议保护下,即使用户文件被攻击者获取,攻击者也无法获得文件的明文。即便文件所有者将文件分发给其他人,也要等到认证服务器对其账户进行验证后才能获得相应的协议密钥进行解密。虽然YWC协议能够一定程度上保证安全性,但仍存在以下3种安全缺陷。
1.2.1 恢复加密密钥
密钥恢复攻击是指攻击者试图恢复加密方案中使用的加密密钥[14]。攻击者能够恢复由特定用户U和AS之间的YWC协议生成的密钥。事实上,如果攻击者注册为系统的合法用户或合谋任何其他合法用户,就可以发起攻击。对于YWC协议,任何攻击者都可以恢复出用户的加密密钥。
YWC协议的验证和数据加密阶段均是在公共信道上执行的,因此,身份为Aid的攻击者A可以获得用户U和认证服务器AS之间交互的身份验证消息。假设A获取由U发送到AS的消息R3[Fn,Uid,s,e,u,w],则A执行以下攻击。
1)A与AS交互完成注册阶段,获取自己合法且包含e′、r′和s′等消息的USB存储设备。
3)从服务器接收到Ek[n],z=grs(modp)和OMAC=h(hKA‖Aid‖n‖v′‖w′),v′=zrA(modp),解密Ek[n]获得n,并恢复加密密钥K′=ya(modp)。
在上述攻击中,AS由预定验证程序e′=h[Aid‖(u′/w′x)s′+e′x(mod q)(modp)‖gs′ye′(modp)]认为A是真实用户,因此A攻击成功。
YWC协议关于“即使USB存储设备上的机密文件被盗,该文件也无法解密”的论点是错误的,且攻击者可以在身份验证服务器注册另一个帐户,其结论“即使文件合法所有者试图恶意将机密数据存储在存储设备上并分发给其他人,只要身份验证服务器暂停该用户帐户,攻击者就无法获得相应协议密钥进行解密”也是存在缺陷的。
1.2.2 合法用户验证中的缺陷
用户与服务器之间需要进行身份的双向验证,因此,系统形成了一个双向通信模型,服务器不仅能收集设备数据,还能控制数据从服务器传输到设备。在实际应用中,单方面检查所收集信息是否从合法设备传输,或者简单地验证服务器以防止对设备进行非法控制是不行的,必须通过相互验证检查设备和服务器的有效性。
从技术上讲,相互认证指的是服务器与设备之间的相互认证并在其之间建立安全通道,这样双方都能确保对方身份的真实性[15-17]。Yang等人认为,用于USB存储设备的YWC协议提供了服务器与设备之间的相互认证。然而,YWC协议并没有实现此功能。任何攻击者均可冒充用户,使服务器将其认作真实用户。
AS在收到消息R6[Fn,Uid,s,e,u″,w″]后,重新计算hKU=u″/w″x(modp)、k及r,由此得出式(1)成立,AS将认为攻击者A是真实用户U。
1.2.3 用户隐私问题
在多数用户工程应用程序中,用户隐私已成为一个重要问题。保护用户信息的隐私性是公共网络上通信协议最重要的安全目标之一[19]。
在YWC协议中,验证和数据加密阶段的第一步消息包含文件名Fn,文件所有者的身份Uid以及存储在USB存储设备中应被保密的消息e和s。在这一步中,用户身份和文件名称均通过公共信道传输,并没有受到加密保护,所以说YWC协议不能实现用户隐私。
工业互联网存储设备安全需求包括相互认证、用户隐私保护、防止密钥恢复攻击、防止离线口令猜测攻击、防止重放攻击和防止被盗验证者攻击等属性。
CPFU在YWC协议的基础上,引入散列函数H′:{0,1}*→{0,1}l进行加密,确保攻击者A在得到部分信息的情况下,不能冒充合法用户。其中,l=|hKU|+|Fn|+|Uid|+|e|+|s|。在注册阶段,用户U和服务器分别执行与YWC协议相同的程序,使得用户U拥有秘密密码KU和一个包含r、e和s等消息的USB大容量存储设备。在验证和数据加密阶段,基于Bellare-Rogaway不可区分性模型[20],将用户和服务器密钥进行交换,验证两者身份的合法性。CPFU中USB存储设备的控制协议如图2所示。
图2 CPFU中USB存储设备的控制协议
CPFU的具体详细过程说明如下。
w=gru(modp)
uc=H′[yru(modp)]⊕(hKU‖Fn‖Uid‖e‖s)
发送至AS。
w′=gr′u(modp)
u′c=H′[yr′u(modp)]⊕(hKU‖Fn‖Uid‖e‖s)
冒充真实用户。
2)AS→U。在接收到消息w′和uc后,AS分别计算
(hKU‖Fn‖Uid‖e‖s)=uc⊕H′[w′x(modp)]
k=s+ex(modq)
r=hKUkmodp
并检查
z=grs(modp)
v=wrs(modp)
n=h(x‖Fn‖Uid)
Cn=Ek[n]
OMAC=h(Cn‖z‖Uid‖n‖v‖w)
发送给用户消息R6[Cn,z,OMAC]。
3)在接收到消息R6[Cn,z,OMAC]之后,用户U计算v=zru(modp),n=Dk[Cn],并检查OMAC=h(Cn‖z‖Uid‖n‖v‖w)是否成立。若成立,U认为服务器是真实的。随后,用户计算a=h(Uid‖n),K=ya(modp)。
当用户试图通过USB端口访问存储设备,使用密钥K进行加密操作,即Ek[F],其中F是要加密的文件。为了访问USB设备上的文件,用户需要通过相同的验证步骤并获得相同的密钥K以执行解密操作,即Dk[Ek[F]]。
由CPFU的相关描述可知,CPFU从以下5个方面有效地改进了YWC协议。1)提供用户和服务器之间的相互认证,检查、提升设备和服务器的有效性及安全性。2)在离线口令猜测攻击下是安全的,攻击者无法获取用户的密码。3)在重放攻击下是安全的,攻击者无法获取加密密钥并进一步读取受限文件。4)攻击者无法在校验值丢失攻击下解密USB存储设备上的受限文件。5)用户发送的信息不会暴露用户的隐私信息,为用户提供隐私保护。
在随机Oracle模型下,将攻击者建模为概率多项式时间(Probabilistic Polynomial Time,PPT)图灵机,证明基于Bellare-Rogaway不可区分性模型下通过身份验证的密钥交换属性。攻击者完全控制各方之间的所有通信通道,包括激活控制会话,从而截获、读取所有消息,并对消息进行任意删除、修改和增加。通过分析用户隐私保护、防止密钥恢复攻击、防止离线口令猜测攻击、防止重放攻击和防止被盗验证者攻击等安全属性,证明CPFU具有相互认证、用户隐私保护、防密钥恢复攻击、防离线口令猜测攻击、防重放攻击和防效验值丢失攻击等功能,满足工业互联网场景下USB存储设备安全要求。此外,通过实现文件所有者的匿名性以及存储在USB设备上或通过USB端口传输文件的匿名性,证明CPFU可以为用户提供隐私保护。
CPFU在随机Oracle模型中提供用户和服务器之间的相互认证。相互认证的目标是在用户U和服务器AS交互后建立一个约定的加密密钥K。通常,对于具有验证功能和密钥协商的协议,服务器具有一对静态密钥,即一个静态密钥和一个相应的静态公钥。静态公钥使用公钥或基于身份证标识的基础结构证明静态公钥属于其所有者。协议每次执行时,相关方生成临时密钥,并使用临时密钥生成交换的临时公钥。随后将所有密钥与会话文本一起用于创建共享会话状态,然后将共享会话状态传递给密钥派生函数,获得最终会话密钥。即若攻击者不能够从公开交换的消息中提取关于会话密钥的任何信息,则协议是安全的。Bellare-Rogaway不可区分性模型保证了协商会话密钥的密钥认证和机密性。
Bellare-Rogaway不可区分性模型[20]仅限于双通道协议的情况。通常存在许多参与方和认证服务器,参与方将正整数N固定为使用该协议的诚实方最大量,每个认证服务器都有一个静态密钥对,由静态密钥xj和静态公钥yj组成,由证书颁发机构 (Certificate Authority,CA) 签名,i和j为参与方的标识符,协议的一次运行称为会话。会话在一方由形式为(∑,I,i,j)或形式为(∑,R,j,i,Xi)的传入消息激活,其中:∑为协议标识符;I和R为角色标识符;参与方i收到形式为(∑,I,i,j)的消息,则称i是会话发起人,然后i输出针对参与方j的响应消息Xi。如果j方收到形式为(∑,R,j,i,Xi)的消息,则称j是会话响应者,随后j向i输出响应消息Yj。交换消息后,双方都计算会话密钥。
如果会话在i方激活,i是发起人,其将与会话标识符sid=(∑,I,i,j,Xi)或sid=(∑,I,i,j,Xi,Yj)相关联。类似地,若会话在j方被激活,j是响应者,会话标识符的形式为sid=(∑,R,j,i,Xi,Yj)。当会话所有者计算出会话密钥时,表示会话已完成。
将攻击者A建模为PPT图灵机,完全控制各方之间的所有通信信道,包括控制会话激活并可截获、读取所有消息,以及删除、修改、增加任何所需消息。在USB大容量存储设备访问过程中,还需要假设身份验证服务器和用户之间存在共享秘密信息,即密码上的密钥派生函数。向A提供以下3种谕言机send(send0,send1,send2)查询形式化攻击者的攻击[14]。
1)send0(∑,I,i,j):A作为发起者激活i。随机Oracle模型返回给j方消息Xi。
2)send1(∑,R,j,i,Xi):A作为响应者使用消息Xi激活j,随机Oracle模型返回给i方消息Yj。
3)send2(∑,R,i,j,Xi,Yj):A发送消息Yj,以完成先前由send0(∑,I,i,j)返回Xi激活的会话。
在谕言机send查询之后,返回会话密钥,执行以下操作。
•SessionKeyReveal(sid):若会话sid已生成,随机Oracle模型将返回与会话sid关联的会话密钥。
•Corrupt(j):随机Oracle模型返回属于j方的静态密钥。以这种方式将密钥交给客户的一方被称为不诚实,不以这种方式妥协的一方称为诚实。需要注意的是,对随机Oracle模型增加了一个固有的限制,即不应透露用户密码(第一方)上的密钥派生功能。否则,最终会与模拟USB大容量存储设备访问环境相矛盾。
•Test(sid):随机Oracle模型随机选择一位字符b←{0,1}。如果b=0,则返回随机均匀选择的密钥;如果b=1,则返回与sid关联的会话密钥。
双通道协议的安全性游戏定义为攻击者A对随机Oracle模型进行任意顺序查询。当A输出b的猜测b′时,游戏结束。如果A的猜测是正确的,A赢得游戏,故b′=b。A的优势Adv∑,A定义为Pr[b′=b]-1/2。若Adv∑,A对于任何PPT攻击者A都可以忽略,则双通道协议是安全的。
对于随机Oracle模型查询,攻击者A可随时查询模拟哈希函数的随机OracleH。为了响应以上3种send查询,维护两个列表
Hlist1
列表最初是空的,当A在
同样,攻击者A可随时模拟查询散列函数H′的随机谕言查询列表H′list。
•Oracle send0(∑,I,i,j):若用户i被激活为发起者,则i在随机Oracle的帮助下返回u=H′[yru(modp)]⊕(hKU‖Fn‖Uid‖e‖s),w=yru(modp),即Xi=(w,u)是为j准备的消息。
•Oracle send1(∑,R,j,i,Xi):若j通过消息Xi被激活为响应者,则j将Xi解析为(w,u)并检查Xi的一致性。若不是,Oracle将输出符号⊥,游戏结束。否则j返回Cn=Ek[n],z=grs(modp)随机Oracle查询下的OMAC。
•Oracle send2(∑,R,i,j,Xi,Yj):若攻击者向i发送消息Yj,则i在检查先前使用返回Xi的send0(∑,I,i,j)查询激活的会话后完成会话。
•Oracle SessionKeyReveal(sid):若会话sid已生成,则将返回会话中确定的会话密钥K。否则,输出符号⊥,游戏结束。但是,双通道协议生成的所有会话密钥都是从每个会话的一次性参数和随机谕言中派生,因此,在信息理论保证下,攻击者能够以可忽略的概率将给定的会话密钥与随机字符串区分开。
•Oracle Corrupt(j):Oracle返回属于某个认证服务器j的静态密钥。在公钥基础设施的保证下,即使攻击者已知一台认证服务器j的Corrupt(j)也无法获得正在被攻击的服务器的秘密信息。
攻击者可多次多项式自适应地进行上述查询并可查询任何序列。从Oracle模型的模拟来看,攻击者的所有观点都被模拟为真实的环境。假设所涉及的模块均为安全的(例如对称加密密码和离散对数问题等),随着每次会话参数的新鲜性,攻击者能以不超过1/2+negl(·)(可忽略)的概率输出正确猜测,从而以较小优势赢得游戏。
密码破解是从公开传输的数据中恢复密码的过程,常见的方法是离线口令猜测攻击。
考虑攻击者A在公共信道上看到消息u、w和(Cn,z,OMAC),并尝试使用离线口令猜测攻击获得用户的密码KU。
对于消息u和w,给定一个A猜测的备选密码K′,因为A在x未知的情况下面临计算yru(modp)的困难,A无法确认K′是否正确。
对于包含验证消息OMAC的消息(Cn,z,OMAC),给定一个A猜测的备选密码K′,因为A在高熵随机数ru未知情况下面临计算v=grurs(modp)的困难,A无法确认K′是否正确。
因此,A无法执行离线口令猜测攻击获取用户的密码,CPFU在离线口令猜测攻击下安全。
重放攻击是一种攻击形式,其中有效的数据传输是恶意的,这是由截获数据并重新传输数据的攻击者执行。
考虑攻击者A在公共通道上获得消息(u,w)和(Cn,z,OMAC)并试图获取加密密钥并进一步读取受限文件。因此,要得到加密密钥A首先需要得到n。为了从Cn算出n,A还需要进一步求v。然而,在计算v=zrs(modp)时,A面临着计算高熵随机数rs的困难,这由服务器自己完成的。因此,A不能执行重放攻击获取加密文件,CPFU在重放攻击下安全。
校验值丢失攻击是指攻击者在获取USB存储设备后试图破坏控制协议的行为[7]。在CPFU中,攻击者A获得USB存储设备中的消息(e,r,s)。一方面,A无法从其捕获的消息中猜出用户的正确密码,正如在抵御离线口令猜测攻击的安全性中分析的那样。另一方面,由于加密哈希函数的安全性,A无法生成有效元组u=H′(yru(modp))⊕(hKU‖Fn‖Uid‖e‖s)和w=yru(modp)通过服务器的验证过程,且不知道哈希标签hKU。
因此,A无法在校验值丢失攻击下解密USB存储设备上的受限文件,CPFU在效验值丢失攻击下安全。
匿名性通常是指个人身份或个人识别信息处于公开未知状态。在YWC的验证和数据加密阶段,由于文件名Fn和身份标识Uid以明文形式传输,用户发送的消息暴露了用户的隐私信息。在CPFU中,相应的消息是密文形式,即Fn和Uid通过服务器的公钥y和随机ru加密。在私钥x未知情况下,由于计算Diffie-Hellman问题的困难,任何人都无法从消息(u,w)中恢复用户的隐私信息。
对于从AS发送到U的消息(Cn,z,OMAC),由于v是由AS根据随机数rs生成的,攻击者A无法计算可视为随机的v,没有v,A就无法计算n。考虑到攻击者A只能从n中获得解密密钥K,因此,A无法获得受限文件,CPFU可以为用户提供隐私保护。
为了验证CPFU协议的安全性,分别对比YWC协议和CPFU协议的安全属性,如表1所示。可以看出,CPFU在与YWC协议通信开销一致的情况下,满足相互认证、用户隐私保护、防密钥恢复攻击、防离线口令猜测攻击、防重放攻击和防效验值丢失攻击,且在不牺牲性能效率的情况下具有更多的安全特性。
表1 两种协议安全属性对比
在多媒体服务设置中安全有效的会话启动协议(Session Initiation Protocol,SIP)相互认证方案[17]从远程服务器执行身份验证过程后,合法用户可访问SIP服务,也增强了USB大容量存储设备的安全控制机制,因此,分别将CPFU、YWC和SIP等3种协议的通信开销进行对比,如表2所示。对于通信开销,CPFU协议和YWC协议均需在服务器端使用1个密文、1个元素(modp)和1个哈希,在用户端使用1个元素(modp)和1个哈希,而SIP协议在用户端使用1个点和3个哈希,在服务器端使用1个点和1个哈希。表2中E表示取幂,P表示点乘法。在考虑通信开销时,忽略轻量级的开销,只考虑认证阶段重量级的幂和点乘。
表2 3种协议通信开销对比
由表2可知,YWC协议和CPFU协议通信开销相同,但CPFU协议的安全性高于YWC协议。SIP协议的通信开销虽然比CPFU协议低,但是在认证过程中,CPFU协议在用户和服务器之间需要两次认证过程,而SIP协议需要3次认证过程,认证过程越多可能遭受的威胁也越大。因此,CPFU的安全性高于SIP协议。
通过分析现有USB存储设备YWC协议在合法用户验证和用户隐私保护方面的缺陷,提出了一种用于工业互联网场景中USB大容量存储设备的增强型安全协议CPFU。在YWC协议的基础上,引入散列函数进行加密,确保攻击者在得到部分信息的情况下,不能冒充合法用户。基于Bellare-Rogaway不可区分性模型,用户和服务器进行密钥交换与协商,以此验证两者身份的合法性。安全性分析证明了该协议满足工业互联网场景下USB存储设备的安全需求,并在不牺牲计算和通信性能的前提下改善了现有安全及控制机制的问题。安全性及性能对比分析结果表明,CPFU协议的安全性高于YWC协议和SIP协议。