关于IEEE 802.15.6标准中安全关联的漏洞
摘要
无线体域网(WBAN)支持多种实时健康监测和消费电子应用。WBAN的最新国际标准是IEEE 802.15.6。该标准中的安全关联包含四个基于椭圆曲线的密钥协商协议,用于生成主密钥。在本文中,我们通过揭示这四个协议对多种攻击存在的漏洞,挑战了IEEE 802.15.6标准的安全性。我们对这些协议进行了安全分析,结果表明它们均存在安全问题,并易受不同类型的攻击。
关键词 :可穿戴设备安全 · Cryptographic协议 · Authenti-已分类密钥交换 · Elliptic曲线 · Attacks
1 引言
无线通信和嵌入式计算技术的进步,例如可穿戴和植入式生物传感器,使得体域网络(BAN)[1]的设计、开发和实施成为可能。BAN也被称为无线体域网(WBAN)或体感传感器网络(BSN),是一种可穿戴计算设备的无线网络。BAN设备可以嵌入体内(植入物),可以佩戴在身体上(可穿戴技术),也可以是人类可携带在衣服口袋中、手持或各种包中的伴随设备。WBAN可用于军事、普遍医疗保健、体育和娱乐等多种应用[1,2]。无线体域网具有巨大潜力,可通过诊断许多危及生命的疾病并提供实时患者监测,彻底改变未来医疗监护方式[2]。无线体域网可以与互联网和其他现有无线技术进行交互。
无线体域网最新的标准化是IEEE 802.15.6标准[3],其目标是为人体周围区域内的低功耗、短距离和极高可靠性的无线通信提供国际标准,支持不同应用的广泛数据速率。
网络拓扑由节点和集线器组成。节点是包含介质访问控制(MAC)子层和物理(PHY)层的实体,并可选择性地提供安全服务。集线器是具有节点功能的实体功能,并协调节点的介质访问和电源管理。节点可以根据其功能(个人设备、传感器、执行器)、实现方式(植入式节点、体表节点、外部节点)和角色(协调器、终端节点、中继节点)分为不同的组[2]。
尽管安全性在大多数网络中都是高度优先考虑的,但对于无线体域网(WBAN)这方面的研究却很少。由于无线体域网在功耗、内存、通信速率和计算能力方面资源受限,因此为其他网络提出的安 全解决方案可能不适用于无线体域网。保密性、认证、完整性、数据新鲜性以及可用性和安全管理是无线体域网[2]中的安全需求。安全关联是IEEE 802.15.6标准中用于节点与中心节点相互识别、建立两者之间共享的新主密钥(MK),或激活两者之间已有的MK预共享密钥的过程。IEEE 802.15.6标准中的安全关联基于该标准[3]中提出的四种密钥协商协议。
认证密钥交换(AKE)和口令认证密钥交换(PAKE)协议旨在使合法实体之间以认证的方式交换加密会话密钥。AKE和PAKE协议必须满足多种安全属性,并且显然应能抵御已知的攻击。文献中已提出许多协议,但其中一些已被证明存在安全问题[4–6]。理想的AKE协议应具备已知密钥安全性、前向保密、密钥控制,并能够抵抗诸如密钥泄露伪装(KCI)及其变种、未知密钥共享(UKS)、重放和Denning-Sacco等著名攻击。PAKE协议还必须能够抵抗字典攻击[7,8]。
本文对IEEE 802.15.6标准的安全关联过程中使用的四种密钥协商协议进行了安全分析[3]。我们通过揭示这四种协议在多种攻击下的漏洞,对IEEE 802.15.6标准的安全性提出质疑。除第一个协议对冒充攻击的漏洞已在标准中有所提及外,标准或文献中尚未报道过其他任何攻击或安全漏洞。所有这些协议均出现在最新版本的IEEE 802.15.6标准中。本文其余部分组织如下:我们在第2节回顾IEEE 802.15.6标准的安全结构,在第3节介绍这些密钥协商协议,并在第4节报告它们的安全问题。
2 IEEE802.15.6标准的安全结构
IEEE 802.15.6标准的安全层次结构如图1所示。所有节点和中心节点必须选择三种安全等级:非安全通信(0级)、认证但无加密(1级)以及认证和加密(2级)。在安全关联过程中,节点与中心节点需要共同选择一个合适的安全等级。在单播通信中,将启用一个预共享的或新的MK,然后生成一个成对临时密钥(Pairwise Temporal Key,PTK),该密钥每会话仅使用一次。在多播通信中,一个临时组密钥(GTK)被生成并与相应的组[3]共享。
在无线体域网中,所有节点和集线器在数据交换之前都必须经过MAC层的特定阶段。IEEE 802.15.6标准中安全通信与非安全通信的安全状态图如图2所示。在安全通信中,一个节点可以处于以下状态之一[3]:
- 孤立状态 :节点与中心节点之间尚无任何用于安全通信的关系的初始状态。节点应激活一个预共享MK或与中心节点共享一个新的MK。如果未能成功激活或建立共享的MK,则无法进入关联状态。
- 关联状态 :节点与中心节点持有共享的MK,用于PTK的创建。节点和中心节点可相互交换PTK帧,以确认共享MK的存在,创建PTK,并过渡到安全状态。如果在PTK创建过程中MK无效或缺失,则将返回至孤立状态。
- 安全状态 :节点与中心节点持有PTK。节点和中心节点可以交换安全解关联帧、连接分配安全帧、连接请求以及控制非安全帧。节点可通过与中心节点交换连接请求和连接分配帧来建立连接,并进入已连接状态。
- 已连接 :该节点拥有一个已分配的已连接NID、唤醒安排,以及可选的一个或多个与中心节点之间的调度和非调度分配,用于简化的节点寻址、期望的唤醒,以及可选的调度和非调度访问。节点与中心节点之间不允许发送任何未加密帧,除非在关联过程中未选择控制类型帧的认证,则允许发送未加密的控制帧。
3 IEEE802.15.6标准中的3种密钥协商协议
802.15.6标准中的安全关联涉及一个主密钥(MK),该密钥通过标准中提出的四种双方密钥协商协议之一生成。本文中将这四种协议称为协议I-IV,如图3、4、5和6所示。其目标是在节点与中心节点之间建立一个新的MK。节点和中心节点分别用A和B表示。为简化起见,我们采用了比标准[3]更简单的符号表示。我们删除了即时致谢(I-Ack)消息,即B在从A接收到每一帧后发送给A的I-Ack消息。I-Ack是一种控制类型帧,包含当前分配时隙编号(8位)和当前分配时隙偏移(16位)。我们删除了I-Ack,因为它们以明文形式发送。任何以明文发送的信息均可从安全分析中剔除。协议I-IV相似,但在细节和要求上有所不同。协议I是未经认证的,没有任何特殊要求。协议II要求通过带外方式预共享节点的公钥并将其传输至中心节点。假设中心节点通过一个独立的受保护通道获取节点的公钥,并且中心节点需要存储各个节点的公钥。协议III要求节点与中心节点预共享一个密码(PW)。协议IV要求A和B各自具有显示十进制数的显示屏,并且在人工用户接受新的MK之前,需确认两个显示屏显示的数字相同。
协议I-IV基于椭圆曲线公钥密码学。域参数包括一条形如 y² = x³ + ax + b 的魏尔斯特拉斯方程定义的椭圆曲线,该曲线定义在有限域GF(p)上,其中p是一个素数。为了确保椭圆曲线是非奇异的,a, b ∈ GF(p)应满足4a³ + 27b² ≠ 0。此外,还需满足其他条件以避免已知的针对椭圆曲线方案的攻击[9]。椭圆曲线上的基点G的阶为n,其中n×G = O,O表示无穷远点。IEEE 802.15.6标准建议使用FIPS Pub 186-3中的P-256曲线。a, b, p, n和G的值是公开的,并在[3]中给出。
私钥应为256位随机整数,从整数集{1,…, n − 1}中独立选取。A和B的私钥分别表示为SKA和SKB。相应的公钥生成为PKA=(PKAX, PKAY) = SKA×G和PKB=(PKBX, PKBY) = SKB×G。
IEEE 802.15.6标准未包含为公钥提供数字证书。公钥由相关各方自行生成,并且不论
.)
- 图拉尼
.)
论802.15.6标准
251
中安全关联的漏洞
.)
- 图拉尼
.)
4 安全问题
在本节中,我们指出协议I-IV容易受到多种攻击。所有这些协议都易受KCI攻击,且均不提供前向保密。此外,协议I、III和IV易受到冒充攻击。协议III还易受到离线字典攻击。除协议I对冒充攻击的脆弱性已在IEEE 802.15.6标准中有所暗示外,尚未有针对这些协议的其他攻击被报道,这些协议目前仍保留在IEEE 802.15.6标准中。
由于节点的资源限制,公钥由参与方自行生成,并且没有数字证书的支持,因此冒充攻击是可行的。尽管标准不推荐这样做,但如果能够使用经过认证的公钥,或者我们能有一个轻量级PKI[11,14],这就可以防止冒充攻击。然而,所有协议仍将容易受到KCI攻击。KCI攻击是冒充攻击的一种变体,在AKE协议的eCK安全模型中已被考虑[12]。对KCI攻击的抵御能力是AKE协议的一个重要安全属性。如果某个实体的私钥A被泄露,攻击者M可以冒充A在单因素认证协议中。但是,这种泄露不应使M能够在与A通信时冒充其他诚实的实体。为了简洁起见,我们省略了对协议I、III和IV的KCI攻击描述,因为它们已经容易受到比KCI攻击更强的冒充攻击。
前向保密是AKE协议中一个重要的安全属性。如果某个实体的私钥被泄露,则不应影响在此之前已建立的会话密钥的安全性。我们还有完美前向保密(PFS)的概念,它比前向保密更强一些。PFS意味着即使所有参与协议的实体的私钥都被泄露,已建立的会话密钥仍应保持安全。我们还有弱-PFS的概念,它仅允许在所有相关私钥被泄露后进行被动攻击。
协议I-IV使用椭圆曲线密码学。因此,公钥验证至关重要。接收方实体在收到临时或静态公钥后,必须对其进行验证。否则,该协议将容易受到攻击以进一步发起攻击。在IEEE 802.15.6标准中对协议I-IV的描述中,已提到应验证公钥。然而,在该标准对应的图示中却缺少此类验证。如果按照标准中的图示实现协议,且不考虑公钥验证,则将产生额外的安全漏洞。这将导致更多针对协议的冒充攻击场景。此外,所有协议都将容易受到无效曲线攻击[13],攻击者可通过该攻击提取另一实体的私钥。我们不考虑这些额外的漏洞,并强烈建议进行公钥验证。
在本文其余部分,E表示被动攻击中的攻击者,而M表示主动攻击中的攻击者。协议和攻击的顺序并不意味着任何优先级或重要性。编号依据标准给出,并将在协议执行期间包含在SSS中。
4.1 协议I
协议I是一种无认证密钥交换协议。它显然容易受到冒充攻击,但我们仅为了安全分析的完整性而考虑该协议。这种漏洞在标准中仅针对此协议有所提及,其中该协议被描述为“无法防止第三方发起冒充攻击”的协议[3]。协议I不提供前向保密。
冒充攻击 :以下是对协议I的一种冒充攻击,其中M冒充A:
- M选择一个私钥SKM,并生成相应的公钥为PKM=(PKMX, PKMY) = SKM × G。M选择一个128位随机数NM,并发送{IDB||IDA||SSS||AC||NM||PKMX||PKMY ||XX}到B。
- B选择一个128位随机数NB,并发送{IDA||IDB||SSS||AC||NB ||PKBX||PKBY ||XX}到M。
- B计算DHKey= X(SKB × PKM),T′1= RMB128(DHKey),T′2=CMAC(T′1, IDA||IDB||NM||NB||SSS, 64),以及T′3= CMAC(T′1, IDB||IDA||NB||NM||SSS, 64)。B发送{IDA||IDB||SSS||AC||NB||PKBX||PKBY ||T′2}到M。
- M计算DHKey = X(SKM × PKB),T1= RMB128(DHKey),T2=CMAC(T1, IDA||IDB||NM||NB||SSS, 64),以及T3= CMAC(T1, IDB||IDA ||NB||NM||SSS, 64)。M发送{IDB||IDA||SSS||AC||NM||PKMX||PKMY||T3}到B。M计算T4= LMB128(DHKey),并生成主密钥MK= CMAC(T4, NM||NB, 128)。
- B验证T3= T′3,计算T′4 = LMB128(DHKey),并生成主密钥MK= CMAC(T′4, NM||NB, 128)。
M和B最终得到相同的MK。攻击者E能够成功冒充A。类似的冒充攻击场景可描述为:在与A的通信中,攻击者M冒充B。
缺乏前向保密性 :此处我们证明协议I未提供前向保密性,因此也无法提供弱-PFS或PFS:
- 假设SKB已被攻破。曾窃听并保存了此前协议运行期间交换的所有消息的攻击者E,已知PKA、NA和NB。攻击者E计算DHKey= X(SKB×PKA)、T4′= LMB128(DHKey),并获得所建立的密钥MK= CMAC(T4′, NA||NB, 128)。
- 如果SKA已被攻破,攻击者M计算DHKey= X(SKA × PKB)、T4= LMB128(DHKey),并获得MK= CMAC(T4, NA||NB,128)。
4.2 协议II
协议II需要通过银行外传输方式将节点的公钥发送给中心节点。该协议易受KCI攻击,且缺乏前向保密性。
密钥泄露伪装攻击 :协议II容易受到KCI攻击。以下是攻击场景,其中M拥有SKA并冒充B。由于B的公钥是以明文形式发送的,我们可以假设M通过窃听之前的协议运行已获取了PKB。
- A选择一个128位随机数NA,并发送{IDB||IDA||SSS||AC||NA ||0||0||XX}给B。M劫持会话,并试图冒充B。
- M选择一个128位随机数NM,并发送{IDA||IDB||SSS||AC||NM||PKBX||PKBY ||XX}给A。
- M拥有SKA。M计算DHKey= X(SKA × PKB)、T′1= RMB128(DHKey)、T′2= CMAC(T′1, IDA||IDB||NA||NM||SSS, 64)以及T′3=CMAC(T′1, IDB||IDA||NM||NA||SSS, 64)。M发送{IDA||IDB||SSS||AC||NM||PKBX||PKBY ||T′2}给A。
- A计算DHKey= X(SKA × PKB)、T1= RMB128(DHKey)以及T2= CMAC(T1, IDA||IDB||NA||NM||SSS, 64)。A验证T2= T′2,并计算T3= CMAC(T1, IDB||IDA||NM||NA||SSS, 64)。A发送{IDB||IDA||SSS||AC||NA||0||0||T3}给M。
- A计算T4= LMB128(DHKey),并生成主密钥MK=CMAC(T4, NA||NM, 128)。
- M计算T′4= LMB128(DHKey),并生成主密钥MK= CMAC(T′4, NA||NM, 128)。
M和A计算出相同的MK。M可以成功冒充B。
缺乏前向保密性 :协议II未提供前向保密。假设PKA已与B安全共享,我们仅考虑SKA已被泄露的情况。我们展示攻击者E如何从窃听的消息中提取先前建立的MK,从而证明该协议缺乏前向保密性和完全前向保密:由于PKB、NA和NB以明文形式发送,我们可以认为它们已被攻击者M窃听并保存。攻击者E计算DHKey = X(SKA×PKB)、T4= LMB128(DHKey),并获得MK= CMAC(T4, NA||NB,128)。
4.3 协议III
协议III是一种PAKE协议。它容易受到冒充和离线字典攻击,且不提供前向保密。
冒充攻击 :为了对协议III实施冒充攻击,M首先窃听消息A和B在一次协议运行期间的通信。M随后从协议的消息(1)和(4)中获取PKA′和PKA。M计算Q′= PKA−PKA′,并使用Q′进行冒充攻击。注意我们有Q′= Q(PW)。以下是对协议III的冒充攻击,其中M冒充A:
- M选择一个私钥SKM,并生成相应的公钥为PKM=(PKMX, PKMY) = SKM × G。M计算PK′M= PKM − Q′。如果PK′M = O,M选择新的私钥和公钥,并继续该过程直到PK′M ≠ O。M选择一个128位随机数NM,并向B发送{IDB||IDA||SSS||AC||NM||PK′MX||PK′MY ||XX}。
- B选择一个128位随机数NB,并向M发送{IDA||IDB||SSS||AC||NB ||PKBX||PKBY ||XX}。
- B计算PKM= PK′M+ Q(PW),并计算DHKey= X(SKB ×PKM)、T′1= RMB128(DHKey)、T′2= CMAC(T′1, IDA||IDB||NM||NB||SSS, 64)以及T′3= CMAC(T′1, IDB||IDA||NB||NM||SSS, 64)。B向M发送{IDA||IDB ||SSS||AC||NB||PKBX||PKBY ||T′2}。
- M计算DHKey= X(SKM × PKB)、T1= RMB128(DHKey)、T2=CMAC(T1, IDA||IDB||NM||NB||SSS, 64)以及T3= CMAC(T1, IDB||IDA ||NB||NM||SSS, 64)。M向B发送{IDB||IDA||SSS||AC||NM||PKMX||PKMY||T3}。M计算T4= LMB128(DHKey),并生成主密钥MK= CMAC(T4, NM||NB, 128)。
- B验证T3= T′3,计算T′4= LMB128(DHKey),并生成主密钥MK= CMAC(T′4, NM||NB, 128)。
M和B最终得到相同的MK。M可以成功冒充A。类似地,在冒充攻击场景中,M可以在与A通信时冒充B。
离线字典攻击 :协议III是一种具有双因素认证的PAKE协议。它需要公钥和共享密码。对于PAKE协议而言,抵御离线字典攻击至关重要。如果攻击者能够猜测密码,则不应允许其在离线情况下验证猜测。为了对协议III实施字典攻击,攻击者E只需在一次协议运行中窃听消息A和B之间的通信。随后,攻击者E从协议的消息(1)和(4)中获取PK′A和PKA。攻击者E计算PKA−PK′A =Q(PW)=(QX, QY)。由于QX= 232PW+ MX和QX是已知的,因此该结果可用作验证值。之后,攻击者E可以尝试使用常见密码字典中的可能密码进行验证可能的密码,并检查哪个密码PW会映射到QX。这可以非常快速地完成,且E能够找到在A和B之间共享的密码PW。
缺乏前向保密 :协议III未提供前向保密性。由于PKB、NA和NB以明文形式发送,我们可以假设它们被E窃听并保存。如果SKA被攻破,E可计算DHKey=X(SKA × PKB)、T4= LMB128(DHKey),进而获得主密钥MK=CMAC(T4, NA||NB, 128)。
4.4 协议IV
协议IV容易受到冒充攻击,且缺乏前向保密性。
冒充攻击 :以下是针对协议IV的冒充攻击,其中M冒充A:
- M选择一个私钥SKM,并生成相应的公钥为PKM=(PKMX, PKMY) = SKM × G。M选择一个128位随机数NM,并计算WM= CMAC(NM, IDA||IDB||PKMX||PKMY, 128)。M将{IDB||IDA||SSS||AC||WM||PKMX||PKMY ||XX}发送给B。
- B选择一个128位随机数NB,并将{IDA||IDB||SSS||AC||NB ||PKBX||PKBY ||XX}发送给M。
- B计算DHKey= X(SKB × PKM)、T′1= RMB128(DHKey)、T′2= CMAC(T′1, IDA||IDB||WM||NB||SSS, 64)以及T′3= CMAC(T′1, IDB||IDA ||NB||WM||SSS, 64)。B将{IDA||IDB||SSS||AC||NB||PKBX||PKBY ||T′2}发送给M。
- M计算DHKey= X(SKM × PKB)、T1= RMB128(DHKey)、T2=CMAC(T1, IDA||IDB||WM||NB||SSS, 64)以及T3= CMAC(T1, IDB||IDA ||NB||WM||SSS, 64)。M将{IDB||IDA||SSS||AC||NM||PKMX||PKMY||T3}发送给B。
- DisplayM将显示BS2DI(D),其中D= CMAC(NM||NB, NB||NM||T1, 16)。
- B验证T3= T′3,计算W′M= CMAC(NM, IDA||IDB||PKMX||PKMY, 128),并验证WM= W′M。DisplayB将显示BS2DI(D′),其中D′= CMAC(NM||NB, NB||NM||T1, 16)。
- 由于DisplayM= DisplayB,B计算T′4= LMB128(DHKey)和MK=CMAC(T′4, NM||NB, 128)。M计算T4= LMB128(DHKey) 和MK=CMAC(T4, NM||NB, 128)。
M和B计算出相同的MK。攻击者E能够成功冒充A。类似的情形可描述为一种冒充攻击,其中攻击者M在与A通信时冒充B。
缺乏前向保密 :协议IV未提供前向保密。由于PKA、PKB、NA和NB以明文形式发送,我们可以假设它们被攻击者E窃听并保存。
- 如果SKB已被泄露,E计算DHKey= X(SKB × PKA),T4′= LMB128(DHKey),并获得MK= CMAC(T4′, NA||NB,128)。
- 如果SKA已被泄露,E计算DHKey= X(SKA × PKB),T4= LMB128(DHKey),并获得MK= CMAC(T4, NA||NB,128)。
5 结论
本文对IEEE 802.15.6标准在无线体域网(WBAN)中的安全性提出了挑战[3]。我们分析了该标准在安全关联过程中用于建立主密钥的四种密钥协商协议的安全性。结果表明,这四种协议均存在安全问题。它们易受到KCI攻击,且缺乏前向保密性。此外,第一、第三和第四种协议易受到冒充攻击。第三种协议还容易受到离线字典攻击。如果未验证公钥,则可能引发进一步的攻击。该标准旨在提供机密性、认证、完整性、隐私保护和重放防御。然而,我们的攻击表明,当前标准中的安全机制未能实现机密性和认证。
58

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



