传感器网络加密协议(SNEP)的安全属性验证
引言
随着微机电系统(MEMS)技术和低成本智能传感器的普及,无线传感器网络(WSN)已成为一种广泛部署的技术,用于从环境中收集数据。近年来,无线传感器网络在成本、有限的处理和计算资源以及较短的电池寿命等方面的诸多局限性已得到显著改善[1]。因此,正在设计各种微型传感器——机械、热、生物、化学、光学和磁传感器——以执行不同的任务[2]。由于传感器节点用途广泛,无线传感器网络的应用遍及军事监视、家庭医疗护理和环境科学领域[3]。
通常,一个节点包含一个或多个传感器,能够读取其周围环境的数据。所读取的数据随后被传输到基站,基站比节点拥有更多的计算和存储资源。一般来说,节点与基站之间以及节点与节点之间的连接均为无线连接,因此是公开可访问的。由于任何无线链路都容易受到攻击,无线传感器网络本质上容易受到外部攻击。传感器网络面临诸多安全挑战,包括安全路由、密钥建立、保密性、认证、隐私、鲁棒性以及拒绝服务(DoS)攻击[4,5]。由于网络内聚合需要中间路由器访问消息内容[6],传统的端到端安全机制(如SSH或SSL)无法在无线传感器网络中部署。此外,传感器节点因其有限的计算和存储资源,无法处理非对称加密算法(例如,典型的RSA密钥长度为1024至2048位[7])。
大多数传感器网络的路由协议都容易受到某种攻击,因为这些协议在设计时并未将安全作为目标[6]。其中一个例外是传感器网络安全协议(SPINS)[8],它被设计用于满足一组安全要求。SPINS旨在为无线传感器网络提供安全通信,同时也适用于有限资源环境。SPINS是一套安全协议,包含两个基本构件:安全网络加密协议(SNEP)和一种“微型”版本的定时高效流式容错认证(TESLA)[9],称为µTESLA。SPINS协议的安全要求总结如下:
- 数据机密性 确保传感器网络的信息(尤其是传感器的读数)对其他网络保密。加密是提供数据机密性最常用的技术。
- 数据认证 确认数据确实由声称的发送方发送。基于对称密钥(由发送方和接收方共享)的消息认证码(MAC)可确保数据的真实性。
- 数据完整性 验证数据在传输过程中未被任何攻击者篡改。基于MAC的数据认证包含数据完整性。
- 数据新鲜性 确保数据是最新的且未被攻击者重放。随机数和计数器是提供新鲜性的两种方式。
- 重放保护 防止攻击者重用旧消息。
- 低通信开销 是由任何无线传感器网络安全协议都应保证的基本安全属性。
- 语义安全 确认了任意两条消息都不相同。这可以通过在每条消息中发送一个每次都会更改的计数器或时间戳来实现。
本文中,我们通过使用互联网安全协议与应用自动化验证(AVISPA)对SNEP协议进行建模,验证了SNEP的安全属性[10]。AVISPA是一种采用工业级技术的一键式工具,用于分析不同的互联网安全协议与应用。它被多种安全协议的开发者以及学术研究人员广泛使用[11]。此前,我们曾使用AVISPA验证了轻量级双向认证协议(LMAP)——一种射频识别标签认证协议——的安全属性[12]。在本次验证中,尽管AVISPA报告SNEP协议不受任何攻击影响,但我们通过在AVISPA中建模发现了一种拒绝服务攻击的威胁,并对此进行了演示。
本文的其余部分组织如下:第2节介绍不同的SNEP子协议。第3节简要说明AVISPA工具:如何开发安全协议的模型以及如何验证安全目标。第4节阐述我们如何构建SNEP的AVISPA模型:模型的假设与局限性、安全目标以及我们如何建模这些目标和验证结果。第5节解释潜在的拒绝服务攻击:攻击的模拟以及如何防止此类攻击。下一节总结相关工作,最后,第7节对全文进行总结,并说明基于本文贡献可开展的未来工作。
安全网络加密协议
SPINS旨在为基站与节点之间的两种通信类型提供安全保障:
- 单播通信 :节点到基站(例如,传感器读数)以及基站到节点(例如,特定请求)是基站与特定节点之间的单播通信。SNEP已被设计用于保护所有这些单播通信。
- 多播通信 :基站到所有节点(例如,路由信标、查询或整个网络的重新编程)需要一对多多播通信。注意,TESLA协议[9]最初是为保护多播数据传输而开发的。然而,TESLA并未针对无线传感器网络中常见的计算资源受限环境进行设计。为了在无线传感器网络中保护多播通信,已提出一种微型且精简版本的TESLA协议,称为µTESLA。
请注意,在本文中,我们仅对SNEP的安全属性进行建模和验证。表1列出了SNEP规范中所使用的符号。为了保护从方向A到B的通信,分别使用了两个不同的密钥用于加密(即,对称密钥KAB)和消息认证码(MAC)生成(即,共享密钥K′AB)。类似地,从方向B到A的通信也使用了两个不同的密钥。因此,A和B需要两对密钥(总共四个密钥)来保障它们之间的双向通信安全。这些密钥要么是从χAB与A和B之间共享的主密钥派生而来,要么由可信服务器分发。SNEP由多个子协议组成,以下将对其进行说明。
表1. SNEP中使用的符号
| 符号 | 含义 |
|---|---|
| A, B | 主体,例如通信节点 |
| NA | 由A生成的随机数 |
| CA | 由A生成并更新的计数器 |
| χAB | A和B之间共享的主密钥 |
| KAB | A和B之间的对称密钥,用于加密消息。该密钥由χAB派生 |
| K′AB | A和B之间的MAC密钥,用于MAC计算。该密钥由χAB派生 |
| {M}KAB | 使用加密密钥KAB对消息M进行加密 |
| {M}〈KAB,IV〉 | 使用加密密钥KAB对消息M进行加密和初始化向量IV |
| MAC(K′AB, M) | 消息认证码(MAC)的计算,使用密钥K′AB对消息M |
2.1. 具有弱新鲜性的数据传输
具有弱新鲜性的数据传输协议已在图1中给出。通过该协议的唯一消息,任意节点A可向另一节点D发送数据B,其中D使用共享秘密KAB和计数器CA进行加密。此外,使用MAC密钥K′AB计算加密数据和计数器的MAC。该协议提供了前一节中提到的所有安全属性,但仅提供弱新鲜性。接收方通过检查递增的计数器值,可验证该消息是在前一条消息之后发送的。
2.2. 具有强新鲜性的数据传输
对于强新鲜性,会交换两条消息,如图2所示。在此协议中,A首先向B发送一个新鲜的随机数NA以及请求消息RA。当B返回其响应(即,此处传输实际数据)时,会在计算MAC的同时包含NA。包含该随机数可确保B是针对A的请求而发送此消息的。这通过请求-响应对确保了全序,在SNEP中被称为强新鲜性。此外,这完成了质询-响应交换,并实现了B向A的身份认证。
2.3. 计数器交换子协议
图3中所示的计数器交换子协议初始化了初始计数器值CA和CB。在前两条消息中,A发送其计数器CA和B将其计数器CB互相发送。注意,计数器以未加密形式发送,因为它们不是秘密值。在这些消息中,计数器被用作随机数以确保强新鲜性。在第二和第三条消息中,B和A分别被A和B经过认证。
2.4. 节点到节点密钥协商子协议
节点到节点密钥协商子协议如图4所示,当一个节点希望与另一个节点通信且它们之间没有共享的秘密密钥时,将使用该协议。在基站(此处为可信第三方S)的帮助下,两个节点可以建立一个共享秘密密钥SKAB。注意,通过S,A和B分别与秘密χAS和χBS共享。
该协议预期满足以下安全属性:
- 由于使用了NA和NB,保证了两个性质:(i)对A和B的强密钥新鲜性;(ii)在第三条消息结束时S对A的认证,以及在第四条消息结束时S对B的认证。
- 通过加密实现SKAB的机密性。
- 通过密钥MAC确保SKAB的数据真实性和完整性,以确认其由基站生成。
- 通过第二条消息中的MAC防御基站免受拒绝服务攻击;因此,基站确认该请求来自合法节点。
- 通过让基站执行主要任务(例如密钥生成和分发)来节省节点的能量。
AVISPA
AVISPA正被不同安全协议的开发者和学术研究人员使用,此外[13]。AVISPA社区已经对许多互联网工程任务组(IETF)安全协议进行了建模,其中一些协议被发现存在缺陷。一种模块化且具有表达力的形式化语言被用于指定协议及其安全属性。AVISPA依赖于其后端工具,这些工具使用自动分析技术来检测是否存在任何缺陷。
3.1. 架构
AVISPA的架构如图5[10]所示。在AVISPA中,协议角色使用高级协议规范语言(HLPSL)建模为状态转换系统。HLPSL2IF工具将HLPSL规范转换为中间格式(IF),即一个无限状态的转换系统。该IF规范由四个后端工具中的任意一个进行分析:即时模型检测器(OFMC)、基于约束求解的攻击搜索器(CL-AtSe)、基于SAT的模型检测器(SATMC)和基于树自动机的协议分析器(TA4SP)。
3.2. 安全目标规范
使用AVISPA的后端工具,可以验证保密性和不同形式的认证目标。AVISPA支持四种类型的目标谓词:witness、wrequest(用于弱认证)、request(用于强认证)和secret。下文将解释如何使用这些目标谓词来指定安全目标:保密性和认证。
保密性通过目标谓词secret(E, id, S)进行验证,该谓词确认秘密信息E只能被集合S中的代理所知晓。标签id(类型为protocol_id)用于标识该目标。在HLPSL目标部分中,应给出语句secrecy_of id以引用它。入侵者试图破坏秘密时会发起不同的攻击。在成功攻击的情况下,入侵者获知了一个被视为秘密且他不允许知道的值,因此保密属性被破坏。
认证通过不同的目标谓词来验证:witness(A, B, id, E)、request(B, A, id, E)(用于强认证)和wrequest(B, A, id, E)(用于弱认证)。witness谓词用于B对A在E上的(弱)认证,表示A是信息E的见证者。request谓词用于描述B对A在E上的强认证属性(类似地,wrequest用于弱认证),表明B请求对值E进行验证。认证属性在HLPSL目标部分中表示,写作authentication_on id(类似地,弱认证写作weak_authentication_on id)。在此表达式中,id是用于标记目标的标签(类型为protocol_id)。如果任一后端工具发现请求事件之前存在由非A代理发起的见证事件,则会报告一次攻击;此外,若未能为某个请求找到有效的见证,则也会报告一条攻击踪迹。
在AVISPA中开发SNEP模型
在解释我们如何开发模型之前,我们想先说明对SNEP协议引入的简化。
4.1. SNEP协议的简化
4.1.1. 密钥数量
在原始SNEP协议中,当A和B通信时,它们在相反方向上分别使用独立的密钥进行加密和MAC计算。因此,从主密钥χAB派生出一组四个密钥(即KAB、KBA、K′AB和K′BA),从而实现密码学原语的分离。然而,AVISPA不区分对称密钥,因此为了保持模型简单且不偏离原始规范,我们将A和B之间的密钥数量减少为一个。由于AVISPA不允许密钥派生,我们直接将相同的对称密钥传递给A和B。
4.1.2. 用哈希函数替换MAC
在SNEP中,带密钥的MAC函数用于消息认证。AVISPA提供哈希函数,该函数也可通过在哈希计算中添加对称密钥来用作密钥哈希函数。因此,在AVISPA模型中,我们使用h(K’ab.M)代替MAC(K′AB, M),其中h()是哈希函数,K’ab.M表示K’ab与M的连接。
4.1.3. 使用常规加密对{M}〈KAB,IV〉进行建模
AVISPA不支持使用初始化向量的加密。因此,我们使用{M}_(Kab.IV),其中初始化向量(IV)与对称密钥Kab连接,该连接后的密钥用于加密消息M。在加密中引入初始化向量与对称密钥的目的是确保即使发送相同的消息M,其加密后的消息也会不同,由于IV的改变,从而提供了语义安全。因此,此修改确保了安全属性与原始SNEP协议保持一致。
4.2. 具有强新鲜性的节点到节点密钥协商
在开发AVISPA模型时,我们构建了两个子协议的组合模型:节点到节点密钥协商和具有强新鲜性的数据传输。我们建模的协议消息如图6所示。
接下来,我们将简要解释每条消息:我们假设节点A向节点B发送一个包含随机数Na的请求Ra,但它们之间没有共享密钥。然而,A和B分别与可信第三方S共享主密钥χAS和χBS,并由此导出对称密钥Kas和Kbs。
- B请求S在A和B之间建立一个对称密钥。在发送此请求时,B将一个新鲜的随机数Nb与Na一起发送。请注意,第一部分的密钥哈希,即h(Kbs.Na.Nb.A.B),已包含在内以实现消息认证。
- 接下来,S生成一个新的对称密钥SKAB,并通过两条独立的消息分别发送给A和B。在向A(B)发送时,该密钥使用Kas(Kbs)进行加密。此外,使用Kas(Kbs)计算密钥哈希,其中还包含随机数Na(Nb)。
- 现在,B将Rb用SKAB加密后作为对A在第一条消息中所发请求的响应发送给A。随该消息一起发送的密钥哈希是使用包含NA的SKAB计算得出的。
在我们开发的AVISPA模型中,有三个代理角色:server代表可信第三方(S),alice代表节点A和bob代表另一个节点(B)。图7展示了我们开发的用于建模这三个角色的部分HLPSL规范。前面提到了具有强新鲜性的节点到节点密钥协商协议和数据传输协议的安全目标。然而,AVISPA无法验证所有这些属性。以下安全属性可以使用AVISPA进行验证:
(1) 对称密钥SKab的保密性,通过HLPSL目标secrecy_of及相应的秘密事实secret(SKab, skab, {A, S, B})进行验证。其中,标签skab用于标识该目标,{A, S, B}是被允许获知SKab值的代理集合。
(2) 在接收到第三条消息后,A通过随机数Na对服务器S进行认证。我们使用标签alice_server_na来标识该目标。为验证此安全目标,我们在S和A的角色中分别添加witness(S, A, alice_server_na, Na’)和request(A, S, alice_server_na, Na)语句。
(3) 收到第四条消息后,B通过随机数Nb对S进行认证。我们使用标签bob_server_nb来标识该目标。为了验证此安全目标,我们在S和B的角色中分别添加witness(S, B, bob_server_nb, Nb’)和request(B, S, bob_server_nb, Nb)语句。
(4) 收到第五条消息后,A通过随机数Na对B进行认证。我们使用标签alice_bob_na来标识该目标。为了验证此安全目标,我们在B和A的角色中分别添加witness(B, A, alice_bob_na, Na)和request(A, B, alice_bob_na, Na)语句。
(5) 响应B发往A的消息(即Rb)的保密性通过事实secret(Rb, rb, {A, B, S})进行验证。此处,标签rb标识了该目标,{A, B, S}是被允许获知值Rb的代理集合。
4.3. 具有强新鲜性的计数器交换协议
如果A和B没有对方的更新的计数值,则在A和B之间执行计数器交换协议。这是一种引导协议。在AVISPA中建模时,我们设计了一个计数器交换协议,随后进行使用更新的计数值的数据传输。图8展示了我们在AVISPA中建模的消息。正如我们之前提到的,我们不使用密钥MAC,而是使用密钥哈希函数。类似地,我们使用{D}_(Kab.Ca)来代替带初始化向量的加密(即{D}〈KAB,CA〉),其中Ca是初始化向量。请注意,我们在两个方向(即从A到B和从B到A)使用了两个不同的密钥Kab和Kba。这里,计数器Ca和Cb被用作随机数,可被视为用于认证的挑战。
在我们开发的AVISPA模型中,存在两个代理角色:alice代表节点A和bob代表另一个节点B。图9展示了我们为建模这两个角色而开发的部分HLPSL规范。以下安全属性可以使用AVISPA进行验证。
(1) 接收到第二条消息后,A通过计数器(随机数)Ca对B进行认证。我们使用标签alice_bob_ca来标识该目标。为了验证此安全目标,我们在B和A的角色中分别添加witness(B, A, alice_bob_ca, CA’)和request(A, B, alice_bob_ca, CA)语句。
(2) 接收到第三条消息后,B通过计数器(随机数)Cb对A进行认证。我们使用标签bob_alice_cb来标识该目标。为了验证此安全目标,我们在A和B的角色中分别添加witness(A, B, bob_alice_cb, CB’)和request(B, A, bob_alice_cb, CB)语句。
(3) 从A发送到B的数据D的机密性。该目标通过事实secret(D’, d, {A, B}))进行验证。此处,标签d标识了该目标,{A, B}是被允许获知值D的代理集合。
4.4. 新鲜性、重放和中间人攻击
AVISPA支持一个new()函数,该函数在运行时生成一个新鲜值。为了确保随机数(在图6中表示为Na和Nb)以及计数器(在图8中表示为Ca和Cb)的新鲜性,我们在生成随机数/计数器的角色中使用new()函数。
图10展示了我们在具有强新鲜性的节点到节点密钥协商中开发的session()和environment()角色的HLPSL定义。类似的角色也正在为计数器交换模型进行开发。在这些模型中,为了检测重放攻击的存在,我们并行地在session()中调用两个相同的模型实例,并与environment()角色协同工作。
此外,引入了一个主动入侵者,该入侵者可以同时扮演任何通信节点的角色。由于服务器被视为可信实体,因此不允许入侵者扮演服务器的角色。如果存在此类攻击,这还将检测中间人(MitM)或连接劫持攻击。图10显示,在environment()角色中,我们引入了一个主动入侵者,其扮演代理A和B的角色。
4.5. 模型验证与分析
完成使用HLPSL开发AVISPA模型后,我们使用安全协议动画器SPAN[14],它符号执行HLPSL协议规范。在编写HLPSL规范时,SPAN非常有用,因为它能更好地帮助理解并确认规范是否可执行。我们使用SPAN的协议仿真功能来生成与我们的HLPSL规范对应的消息序列图(MSC)。在协议仿真过程中,未引入入侵者的角色。图11和图12展示了我们构建的AVISPA模型的MSC,用于验证具有强新鲜性的节点到节点密钥协商和计数器交换协议。这些图表明,模型执行期间交换的消息数量等于我们所建模的消息数量。
我们使用了AVISPA的四个后端工具(OFMC、CL-AtSe、SATMC和TA4SP)对模型进行分析。所有后端工具均报告模型是安全的(SAFE),未发现任何攻击踪迹。例如,图13展示了OFMC后端的验证输出,结果显示协议在设定的安全目标下是安全的。
5. 针对节点到节点密钥协商协议的拒绝服务攻击
尽管AVISPA未能找到对我们所构建模型的任何攻击,但通过分析节点到节点密钥协商协议,可能会发现一种潜在的拒绝服务(DoS)攻击。拒绝服务攻击始终被视为各种无线网络的一种威胁,因为使用强信号干扰网络始终是可能的。特别是,在传感器网络中,这种情况可能尤为严重,因其被用于生命攸关的应用[16]。图14展示了针对节点到节点密钥协商协议的一种可能的拒绝服务攻击,其中入侵者伪装成节点A的角色。通过假装处于A的角色,入侵者触发密钥协商协议,从而迫使节点B和服务器S生成并交换其余三条消息。因此,入侵者可能使服务器S及网络中的其他节点陷入大量消息的生成与交换之中。这显然构成了潜在的拒绝服务攻击威胁,即服务器被卷入无意义的消息生成和交换中。因此,服务器拒绝向合法节点提供其所请求的服务,即,密钥生成与分发。
5.1. 在AVISPA中模拟拒绝服务攻击
为了模拟拒绝服务攻击,我们开发了一个节点到节点密钥协商协议的AVISPA模型(不包含任何数据传输)。我们通过添加一个代理darth来引入攻击者,该代理冒充节点角色NA, A向B发送第一条消息。图15显示了SPAN执行我们开发的AVISPA模型所生成的协议仿真,用于模拟节点到节点密钥协商协议。该消息序列图表明,入侵者(darth)能够轻易说服服务器(S)和另一个节点(B)生成并传输接下来的三条消息。
5.2. 防止拒绝服务攻击的建议修改
为了防止此类攻击,我们提出了一种修改方案:在第一条消息中加入由节点A生成的MAC,以证明其身份合法性。修改后的协议流程如图16所示。通过在初始请求中加入MAC(K′AS, NA||A),节点B可以在转发请求前验证A的身份,从而阻止非法节点滥用密钥协商机制。
该修改确保只有拥有合法密钥的节点才能发起密钥协商请求,从而有效抵御伪装攻击。我们在AVISPA中对该修改后的模型进行重新验证,结果显示该版本不再存在拒绝服务漏洞,所有安全目标均得以满足。
6. 相关工作
自SNEP协议开发以来,已开展了多项安全分析。安全协议的形式化建模与验证主要有两种流行方法:通过自动化工具和代数规范技术。这两种方法均已应用于验证SNEP的安全属性。
在[17]中,AVISPA模型已开发用于验证SNEP消息组件的两个安全属性:真实性和机密性。已分别建立了两个独立的模型来验证以下场景:从基站向普通节点请求信息以及两个节点之间的密钥分发。在此分析中,发现了一种攻击,即入侵者伪装成基站的角色向节点请求信息。有观点声称,利用此攻击,入侵者可能从节点获取机密数据。然而,这一说法缺乏依据,因为节点以加密格式向基站发送数据(请注意,节点到基站的数据传输协议在第2.2节中有说明),且入侵者无法泄露加密密钥。本文所提出的模型与[17]中的模型在多个方面有所不同,具体解释如下:
(1) 我们建立了具有强新鲜性的计数器交换协议的模型,而他们没有。
(2) 他们开发了节点到节点的密钥分发,随后进行数据传输(总共交换六条消息),而我们开发了一个集成模型(总共交换五条消息)。
(3) 最后,我们发现的攻击未被先前的模型报告。
一种流行的开源软件验证工具Spin[18]已被用于验证SNEP的机密性和认证性[19]。在本研究中,首先建立了基于有限状态机的SNEP模型。接着,使用线性时序逻辑(LTL)表达了安全属性(即真实性与机密性)。最后,利用Spin对这些属性进行了验证。需要注意的是,他们所使用的模型检测工具(即Spin)并非专门针对安全属性验证而开发。因此,本文的重点在于展示如何将Spin应用于安全属性验证。此处仅对密钥分发协议SNEP进行了建模。
正如我们前面提到的,模态逻辑和代数规范技术已被用于验证协议的安全属性。在这里,我们介绍两项此类工作([20,21]),其中分别采用自动化工具对SNEP的安全属性进行了数学证明。
在[20]中,科菲-赛达-纽模态逻辑(CSN)已被用于验证SNEP的密钥协商子协议。CSN[22]结合了协议执行过程中的信念与知识逻辑,因此能够验证安全性和信任性。分析未发现密钥协商协议存在任何弱点,并且由于使用了随机数,确认了其强安全性。另一种基于观测迁移系统(OTS)/CafeOBJ方法的代数规范技术已被用于形式化分析SNEP的数据传输和节点到节点密钥协商协议[23]。在[21]的研究中,采用了广义化的戈里耶里和马蒂内利的定时广义组合不可推导性(tGNDC)模式,对无线传感器网络(WSN)中一些著名的密钥管理协议进行了形式化验证,包括µTESLA、本地加密和认证协议(LEAP)+以及轻量级安全协议(LiSP)。
与作为网络层协议的SPINS不同,TinySec是一种链路层安全架构,首次为无线传感器网络完全实现[24]。TinySec是一种轻量级协议,包含一个通用安全包,旨在对性能产生最小影响。TinySec协议的安全目标包括访问控制、消息完整性和机密性。在[25]中,通过构建AVISPA模型验证了这些安全属性。验证过程确认TinySec满足所有这些安全目标。然而,AVISPA报告了一种重放攻击,其中入侵者扮演基站的角色。这是可预期的,因为重放保护在TinySec中被有意排除,留待高层协议栈处理。
通过利用TinySec的优点,MiniSec被设计为提供更高安全性与低能耗,如[26]所示。通过略微增加内存大小实现了更低的能耗。它具有两种操作模式:单源通信和多源广播通信。其所满足的安全目标包括机密性、数据认证、重放保护和弱消息新鲜性。在[27]中,已开发出一个AVISPA模型以验证MiniSec协议的真实性与机密性。该验证未报告任何可能的攻击。
7. 结论
由于传感器节点的资源限制,广泛部署的密码学原语(例如SSL、SSH),特别是基于公钥的身份认证协议,在传感器网络中难以应用。因此,在传感器网络中设计安全通信协议是一项具有挑战性的任务。像AVISPA这样的工业级自动化工具,有助于减轻对安全协议进行严格分析的艰巨任务。我们建立的模型明确验证了SNEP的安全属性。此外,我们发现的拒绝服务攻击可通过我们提出的修改方案加以最小化。未来,我们将验证µTESLA以及其他重要的传感器网络协议(包括TinySec、MiniSec等)的安全属性。
6832

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



