一种使用区块链保护车联网数据隐私的方法

2021-07-01 14:25杨颜博张嘉伟马建峰
西安电子科技大学学报 2021年3期
关键词:敌手密文哈希

杨颜博,张嘉伟,马建峰

(1.内蒙古科技大学 信息工程学院,内蒙古自治区 包头 014040;2.西安电子科技大学 网络与信息安全学院,陕西 西安 710071)

当前,车辆Ad-Hoc网络是许多研究者关注的一个热点方向。通过无线网络将车辆组成一个Ad-Hoc网络,利用嵌入式设备感知的数据提升驾驶的安全性。随着电子信息技术的发展,在未来10~20年间,注册在案的车辆将达到20亿辆[1],即使只有一部分车辆与智能网络设备结合形成车联网,也不可避免地会产生海量的数据。为了应对海量数据产生的挑战,车辆云便由此而生[2]。基于IoT(Internet of Things)的车辆云将智能交通系统、无线传感器网络和移动云计算的特点结合起来,通过引入边缘计算或雾计算技术[3],使得依赖于V2X(Vehicle-to-Vehicle,Vehicle-to-Infrastructure)通信技术的自动驾驶和高级辅助应用成为可能[4]。车联网在带来许多便利的同时,其所产生的海量数据会极大地消耗云存储空间,而且敏感信息也极易从中心化的云泄露。

为解决中心化存储的问题,文献[5]引入分布式哈希表(Distributed Hash Tables,DHT)取代中心云存储车联网海量数据,同时使用区块链为分布式数据提供便捷的存储和保护。区块链取代了传统意义下的“受信任的第三方”[6],在设备将数据上传到分布式哈希表之前,首先发布“存储交易”到区块链,表明某设备的数据将存储在分布式哈希表的地址,区块链验证交易并记录设备的身份和存储地址[7-8]。而当设备从分布式哈希表请求数据时,发布区块链的“访问交易”,区块链将以“受信任的第三方”身份验证请求者。如果交易经过验证并写入一个块,存储数据的分布式哈希表节点将发送数据给请求者。因此,设备和用户的认证通过区块链可以避免可能被攻击的“受信任的”服务器[9]。然而,该方案使用的带有证书的公钥基础结构引入大量复杂性,尽管基于身份的加密可以节省证书管理开销,但其产生的密钥托管问题一直无法得到很好的解决。同时,数据的机密性和细粒度访问控制也是车联网数据存储中的关键问题。

针对这些挑战性问题,笔者提出一种基于区块链的车联网分布式数据存储和保护方案。使用分布式哈希表存储车联网大数据,并借助区块链技术完成数据的可信存取。引入无证书密码体制[10-11]完成车辆身份验证,并使用区块链作为共享公钥信息的平台来克服无证书加密方法中公钥信息需要预先进行广播的缺点,车联网设备可以将其公钥附加到他的数据访问请求,同时发送到区块链以及其他设备的身份验证。使用部分隐藏访问策略的密文策略属性基加密(Ciphertext-Policy Attribute-Based Encryption,CP-ABE)技术[12]实现车联网数据的机密性和细粒度访问控制。笔者的主要贡献如下:

(1) 提出了具有隐私保护的车联网大数据共享方案。该方案实现了高效的数据细粒度访问控制以及动态车辆撤销,并且通过部分隐藏访问策略实现隐私保护,同时基于区块链实现用户的数据存储、访问和撤销的信任机制。

(2) 通过使用边缘计算的方式将车联网设备的计算数据转发到分布式哈希表中进行存储。车联网用户使用区块链共同创造区块验证和记录交易的公共账本。分布式哈希表存储地址可以存储在区块链中。当用户或实体从分布式哈希表请求数据时,区块链将决定是否可以授予访问权限,即请求者的身份验证由分布式的区块链节点而不是受信任的集中式服务器处理。

(3) 提出了在基于区块链的无证书车联网系统,通过使用区块链中公共账本为车联网系统提供了一种便捷的方式来广播车辆节点的公钥,从而克服了无证书密码系统的缺点。同时,无证书加密大大减少了传统公钥证书的冗余,并提供了验证车联网设备的有效方法。

1 预备知识

1.1 区块链技术

在区块链中,用户共同创造区块验证和记录交易的公共账本[13-14]。区块链技术奠定了坚实的“信任”基础,创造了可靠的合作机制,具有广泛的应用前景[15-16]。其核心技术有:

(1) 去中心化

区块链是一种点对点网络上的分布式账本,每个节点也都存储着完整的账本信息。每个节点都备份完整的账本信息,可以避免单节点故障引起的数据丢失。区块链技术不依赖额外的第三方管理机构或硬件设施,没有中心管制,除了自成一体的区块链本身,通过分布式核算和存储,各个节点实现了信息自我验证、传递和管理。去中心化是区块链最本质的特征。

(2) 共识机制

共识机制是解决对某个提案达成一致意见的过程,在没有中心节点的情况下保证各个节点内容的一致性。它维护系统的运作顺序与公平性,使每一个互不相干的节点能够验证、确认网络中的数据,进而产生信任,达成共识。

(3) 加密算法

区块链应用中采用了很多现代密码学的经典算法,包括哈希算法、对称加密、非对称加密、数字签名等,加密算法为区块链的匿名性、不可篡改和不可伪造等特点保驾护航,是一个公链是否值得信赖、是否有基本的安全性底线的基础。

(4) 智能合约

智能合约是以数字形式定义的能够自动执行条款的合约。它将合同以代码的形式放到区块链上并在约定的条件下自动执行。智能合约放到区块链上,能有效地防止盗版和篡改。基于区块链技术的智能合约不仅可以发挥智能合约在成本效率方面的优势,而且可以避免恶意行为对合约正常执行的干扰。将智能合约以数字化的形式写入区块链中,由区块链技术的特性保障存储、读取、执行,整个过程透明,可跟踪,不可篡改。

1.2 密码学原语和复杂性问题假设

(3) 判定性线性假设。对于任意随机多项式算法,已知(g,gxi,gx2,gx1x3,gx2x4),则区分gx3+x4和随机元素Z∈G1是很困难的,其中,x1∈Zp,x2∈Zp,x3∈Zp,x4∈Zp。

2 系统概览

2.1 系统模型

图1展示了车联网数据分布式共享系统的架构。整个系统由6个模块组成:分布式存储哈希表(DHT),区块链网络(BC),密钥生成中心(KGC),边缘节点(MN),数据所有者(DO)和数据消费者(DP)。

图1 系统模型

车联网数据分布式共享系统具体描述如下:

(1) 密钥生成中心,用于初始化整个系统,生成系统公共参数和主密钥,并且为每个IoT用户设备生成和分发密钥。

(2) 分布式存储哈希表,用于为数据共享服务提供海量分布式的存储空间,可以方便地通过具体的存储地址进行数据存取。本文汇总的分布式存储哈希表中,特别设计了一个公共的存储区域,该区域维护一个用于存储所有用户的公共转换密钥的密钥池。

(3) 区块链网络,用于接受用户的数据存储和数据访问、用户撤销请求,并通过相应的交易和一致性共识协议来决定是否接受请求,同时区块链网络还记录用户加密数据的访问策略,并且保证访问策略不被篡改。

(4) 边缘节点,用于获取车联网终端设备的数据并聚集后,通过区块链网络申请存储到分布式存储哈希表中,同时在终端用户设备请求数据时,通过区块链网络从分布式存储哈希表中获取对应的共享数据以及公共区域中的相应用户的公共转换密钥,进行外包解密后,传递至对应的车联网终端用户设备中进行本地数据解密。

(5) 数据所有者,即车联网终端用户设备,包括用户设备(例如,用户手机,笔记本电脑等)和各种车载传感器设备(例如,车载计算机,轮胎传感器,车载智能仪表等),数据所有者用于生成各种数据,加密后经过边缘节点向区块链网络申请外包存储至分布式存储哈希表中。

(6) 数据消费者,也是车联网终端用户设备,在有需要的时候,通过边缘节点向区块链网络请求分享相应的数据并得到边缘节点返还的部分解密结果,通过验证该结果的正确性后在本地恢复共享数据明文。

2.2 威胁模型

在笔者提出的车联网数据分布式共享系统中,密钥生成中心是完全信任的实体;区块链网络被认为是可信的分布式第三方实体;分布式存储哈希表和边缘节点被认为是半可信实体,它们会忠实执行协议的流程,但是会对具体的数据信息产生好奇,可能会泄露敏感数据,包括数据以及访问策略中包含的隐私信息,以及对于边缘节点外包解密的懒惰操作或者返回之前的结果;数据所有者被认为是完全可信的实体,而数据消费者被认为存在恶意的数据消费者,通过串谋攻击等手段非法访问共享数据,并且泄露访问策略中的隐私信息。

2.3 安全模型

本节给出所提方案的机密性和隐私性安全模型,这两个模型描述如下。

(1) 机密性。该模型定义为一个敌手A和挑战者C之间的游戏,其中敌手可以多次询问用户属性密钥,转换密钥,解密和用户撤销。该安全游戏定义如下:

① 系统建立。挑战者C运行Setup算法生成系统公共参数和主密钥,并将系统公共参数发送给敌手A。同时,挑战者C建立一个列表L用于管理转换密钥。

② 询问1。敌手A适应性地发布用户属性密钥询问、转换密钥询问、解密询问和用户撤销询问、对于询问中的每一个属性集合Si,挑战者C生成对应的用户属性密钥AKi和转换密钥TKi,存入列表L。如果列表L存在敌手A查询的元组,则返回给敌手A;否则,返回空。对于解密询问,如果敌手A查询的元组不存在,挑战者C也返回空。对于用户撤销询问,挑战者C同时更新列表L。

③ 挑战者应答。敌手A输出两个等长消息m0,m1和一个挑战访问策略(M*,ρ*,{sρ*(i)}),该挑战访问策略与询问1中的所有属性集合Si都不匹配。接着,挑战者C随机选择b∈{0,1},并根据挑战访问策略(M*,ρ*,{sρ*(i)})产生消息mb的密文CT*且返回给敌手A。

④ 询问2。敌手A继续发布用户属性密钥询问和转换密钥询问,这些询问中的属性集合同样不满足挑战访问策略。之后,挑战者C的响应类似于询问1。

⑤ 猜测。敌手A输出对b的猜测b′,如果b=b′,则敌手A赢得该安全游戏。

(2) 隐私性。该模型也定义为一个敌手A和挑战者C之间的如下游戏:

① 系统建立。挑战者C运行Setup算法生成系统公共参数和主密钥,并将系统公共参数发送给敌手A。

② 询问1。敌手A适应性地发布用户属性密钥询问、转换密钥询问、解密询问和用户撤销询问。对于询问中的每一个属性集合Si,挑战者C生成对应的用户属性密钥AKi和转换密钥TKi,存入列表L。如果列表L存在敌手A查询的元组,则返回给敌手A;否则,返回空。对于解密询问,如果敌手A查询的元组不存在,挑战者C也返回空。对于用户撤销询问,挑战者C同时更新列表L。

③ 挑战者应答。敌手A输出一个消息m以及两个挑战访问策略(M*,ρ*,{sρ*(i)}0)和(M*,ρ*,{sρ*(i)}1),这两个挑战访问策略与询问1中的所有属性集合Si都不匹配。接着,挑战者C随机选择b∈{0,1},并根据挑战访问策略(M*,ρ*,{sρ*(i)}b′)产生消息m的密文CT*且返回给敌手A。

④ 询问2。敌手A继续发布用户属性密钥询问和转换密钥询问,这些询问中的属性集合同样不满足两个挑战访问策略。之后,挑战者C的响应类似于询问1。

⑤ 猜测。敌手A输出对b的猜测b′,如果b=b′,则敌手A赢得该安全游戏。

上述两个安全游戏中,敌手A的优势定义为AdvA=|Pr[b=b′]-1/2|,Pr表示概率。

定义1如果任意随机多项式时间的敌手最多以一个可忽略的优势赢得上述安全游戏,则笔者所提方案的机密性和隐私性在选择明文攻击下是不可区分性(INDistinguishability under Chose-Plaintext Attack,IND-CPA)安全的。

3 系统方案

3.1 方案原理

在笔者设计的车联网数据分布式共享系统中,车联网中的车辆中部署了大量的终端设备。这些设备会产生大量数据,其中包含大量敏感数据(例如,位置隐私数据,用户隐私数据,车辆状况数据,车辆信任数据等)。为了减轻本地存储负担以及完成数据共享,终端设备将这些数据加密并指定对应的访问策略以保证细粒度访问控制和机密性。接着,这些数据会被存储至分布式存储平台中进行共享,在有需要的时候,车辆终端设备会访问这些共享的数据。然而,访问策略中往往包含了许多隐私数据,例如用户隐私,位置隐私等。根据系统威胁模型,为了保护访问策略中的数据隐私,笔者采用了部分隐藏访问策略的数据细粒度访问控制方案来实现车联网数据共享。车联网中的每辆车被认为是一个移动的边缘节点,它收集车辆内部署的终端设备的数据,将这些数据汇集后,通过区块链网络存储至分布式存储哈希表中。而在终端设备有需要时,向区块链网络请求数据访问,并对这些加密数据进行外包解密,将部分解密的结果返回给对应的终端设备进行本地解密,以减轻资源受限的终端设备的计算负担。笔者使用了可验证的外包解密技术来实现该需求。另外,在系统初始化时,每个车辆终端设备需要进行注册,由密钥生成中心为每个终端设备产生密钥,以便其请求存储和访问数据时,对具体的区块链交易数据进行签名和验证。为了减轻对于密钥生成中心的信任依赖以防止密钥托管问题,本方案采用了文献[17]中的无证书公钥方法来为每个终端设备生成公钥和私钥对。说明:文中不涉及区块链具体实现细节,只是使用了抽象的形式化表示方法。

3.2 方案构造

3.2.1 系统初始化阶段

3.2.2 用户注册阶段

(2) 转换密钥生成TKeyGen(PK,AKu)。该算法由密钥生成中心执行。输入系统公共参数PK,用户的属性密钥AKu,该算法随机选择zu∈Zp作为该用户的秘密转换密钥TKs=zu,计算公共转换密钥TKp={K1=(D1)1/zu,K2=(D2)1/zu,Ki,1=(Di,1)1/zu,Ki,2=(Di,2)1/zu,Ki,3=(Di,3)1/zu,Ki,4=(Di,4)1/zu,Ki,5=(Di,5)1/zu}。最后,密钥生成中心将秘密转换密钥TKs通过安全通道传送给用户,将公共转换密钥TKp通过区块链传送给分布式存储哈希表的公共存储区域的用户密钥池KP=KP∪KPu,其中KPu={uid,S,TKp}。

(3) 用户公私钥对生成SKeyGen(PK,IDA)。该算法由用户和密钥生成中心一起执行。输入系统公共参数PK,用户身份标识IDA,密钥生成中心产生一个部分秘密密钥PSKA,并且将Rsp=IDA‖PSKA‖Sig(IDA‖PSKA,SKK)传递给用户IDA。用户使用密钥生成中心的公钥PKK验证该消息的正确性后接受PSKA。接着,用户IDA在本地生成自己的私钥LSKA和公钥PKA,并且根据PSKA,LSKA生成自己的私钥SKA。由于只有用户IDA自己知道LSKA,因此可以避免其私钥SKA的托管泄露问题。

3.2.3 数据加密阶段

其次,算法选择随机向量γ=(s,γ2,…,γn),其中γi∈RZp。对于访问策略矩阵中的每一行Mi,该算法计算τi=γ·Mi作为访问策略中每一个属性的秘密分享部分。该算法同时还为每一行随机选择ti,1,…,ti,l,t1,2,…,tl,2,r1,…,rl,它们均属于集合RZp,并计算:

最后,数据加密算法输出最终的访问策略部分隐藏的密文CT={(M,ρ),Cs,σ,C0,C1,{Ci,1,Ci,2,Ci,3,Ci,4,Ci,5,Ci,6}i∈[l]}。

(2) 该终端用户生成密文后,需要产生一个区块链交易作为数据存储请求,通过边缘节点发送给区块链网络。该交易的格式为TA={PKA,IDA,CT,Addr,SigA},其中PKA,IDA是用户的公钥和身份表示,CT是其产生的密文(包含访问策略和对称加密密文),Addr是申请存入的分布式存储哈希表的地址,SigA是用户对该交易信息的签名。之后,用户IDA将该交易广播到区块链网络中。区块链网络中的各节点验证用户IDA及其公钥PKA的一致性,同时验证签名SigA的正确性。根据区块链共识协议,区块链节点通过该交易后,交易信息会记录到新的区块中,同时将密文CT上传到指定地址的分布式存储哈希表中进行外包存储和数据共享。

3.2.4 数据访问阶段

(1) 当数据消费者IDB请求访问共享数据时,产生一个区块链交易TB={PKB,IDB,Addr,SigB},通过边缘节点广播至区块链网络中。区块链网络节点收到该交易并校验成功后,会从指定地址Addr获取密文CT,并从分布式存储哈希表的公共存储空间Addr0中获取对应用户IDB的公共转换密钥TKp,且判断TKp中的属性集合是否符合CT中的部分隐藏访问策略。如果符合,则将所有信息返回给IDB所在边缘节点进行外包解密;否则,流程中断。

计算出部分外包解密结果F后,边缘节点将该结果以及密文CT传递给终端用户进行本地解密。

(3) 用户数据解密Decryptlocal(PK,F,CT,TKs)。该算法由终端用户在本地终端设备执行。输入系统公共参数PK,部分解密结果F以及密文CT。

其次,用户验证公式σ=H2(R′‖Cs)是否成立。如果该等式不成立,则中断流程;如果等式成立,则外包解密正确执行,用户根据所得到的对称加密密钥k*解密Cs,从而恢复数据明文m=Decs(k*,Cs)。

3.2.5 用户撤销阶段

用户撤销UserRevoke(KP,uid)。当系统要撤销一个用户uid时,密钥生成中心产生一个交易信息TK=(PKK,IDK,uid,Addr0,SigK),其中Addr0表示分布式存储哈希表的公共存储区域。密钥生成中心然后将该交易作为撤销请求发布到区块链网络中。该交易通过后,会将被撤销用户uid发送到分布式存储哈希表的公共存储区域中的用户密钥存储池KP中,从KP中删除uid的相关记录,并且得到更新后的KP′。当被撤销用户再次申请访问数据时,边缘节点将无法得到公共转换密钥和属性集合,即无法进行安全外包解密,因此,被撤销用户无法再次访问之前和之后系统共享的数据,从而保证了前向和后向的安全。

4 安全分析

定理1如果双线性群上的(q-1)假设和判定性线性假设成立,则方案是不可区分性安全和隐私安全的。

证明 使用规约法,将本文方案(简记为Σ1)的安全性规约到文献[18]的方案(简记为Σ0)上。假设存在一个敌手A可以以不可忽略的优势ε在挑战访问策略(M*,ρ*,{sρ*(i)})下攻破Σ1,则可以构建一个模拟器B以同样的优势攻击Σ0。

(1) 初始化。模拟器B获取敌手A发来的挑战访问策略(M*,ρ*,{sρ*(i)}),并转发给Σ0的挑战者C。

(3) 询问1。敌手A适应性地发布用户属性密钥询问、转换密钥询问、解密询问和用户撤销询问。对于询问中的每一个不满足于挑战访问策略(M*,ρ*,{sρ*(i)})的属性集合Si,B将其发送到Σ0。随后,B根据收到的密钥AK*={K1*,K2*,{Kj,1*,Kj,2*,Kj,3*,Kj,4*,Kj,5*}j∈Si}生成对应的用户属性密钥AKi,并随机选择一个秘密转换秘钥TKs,i=z*,同时根据AKi计算对应的转换密钥TKp,i,将元组(S,AKi,TKs,i,TKp,i)存入列表L。如果列表L存在敌手A查询的元组,则返回给敌手A;否则,返回空。对于解密询问,如果敌手A查询的元组不存在,则B也返回空。对于用户撤销询问,B同时更新列表L。

(4) 挑战者应答。敌手A输出两个等长消息m0,m1和一个挑战访问策略(M*,ρ*,{sρ*(i)}),该挑战访问策略与询问1中的所有属性集合Si都不匹配。接着,B将其发送至C,得到一个挑战者密文CT*并返回给敌手A。

(5) 询问2。敌手A继续发布类似于询问1的请求给B。之后,B的响应类似于询问1。

(6) 猜测。敌手A输出对b的猜测bA,如果b=bA,则模拟器B输出器猜测为0,意味着C的输出是一个确定的q-1问题的输出,且猜测正确的概率为ε+1/2;否则,B输出1,即C返回的密文是随机数且猜测正确的概率为1/2。B能够猜测C的密文的优势为

AdvB=1/2×(ε+1/2)+1/2×1/2-1/2=ε/2。

因此,如果A能够以不可忽略的优势攻破方案Σ1,则B可以以优势ε/2攻破方案Σ0。如果(q-1)假设和判定性线性假设成立,则与之相矛盾。因此,笔者提出方案的机密性是IND-CPA安全的。该方案的隐私性安全证明类似于机密性证明。

5 性能分析

5.1 实验环境及参数设置

使用Java语言实现了方案原型,并且在一台安装有安卓操作系统版本10的华为P30手机仿真平台上作为用户端进行了测试。该实验中,使用JPBC的开发包实现双线性群的各种操作,以AES作为对称加密算法进行仿真实验,同时使用一台安装有Windows 10操作系统的惠普电脑作为服务器端,以一台安装有Windows 10操作系统的Thinkpad 翼480电脑作为边缘节点进行联网运行仿真测试。实验分别对不同个数的文件解密时间、不同用户数情况下的用户密钥产生时间以及用户密钥和密文的空间占用大小进行了实际测试和分析。

5.2 实验结果及对比分析

5.2.1 文件解密性能评估

图2描述了本文方案和文献[18]中的方案在不同文件个数情况下的文件解密时间消耗对比。

(a) 文件个数为1

(b) 文件个数为2 (c) 文件个数为3

(d) 文件个数为4

图2分别对应文件个数1到4的解密时间。从4幅图中,可以看到本方案中的文件解密时间基本保持平稳。4幅图中的方案[18]的解密时间,在文件个数保持一定的情况下,跟随访问策略中的复杂度的增大而增加;而且随着文件个数的增长,在同样的访问策略复杂度情况下,解密时间也在增长。因此,本方案的解密时间消耗远低于文献[18]的方案而且保持不变,原因在于笔者采用了外包解密方法,提升了解密效率。

5.2.2 密钥生成性能评估

图3刻画了本文方案和文献[18]方案的密钥生成时间消耗情况对比。在密钥生成实验中,对不同的用户个数下的密钥生成时间进行了测量。图3(a)和图3(b)分别对用户个数为1和2的密钥生成时间进行对比。可以看到,本文方案的时间消耗略高于文献[18]的方案,主要原因在于本文方案在用户密钥生成过程中,不仅仅对属性密钥进行分发,同时对无证书公私钥对进行分配,因此增加了额外的密钥生成时间,但是从图3中可以看出,这个额外时间消耗非常小。

(a) 用户个数为1

(b) 用户个数为2

(a) 用户密钥大小

(b) 用户密文大小

5.2.3 密钥和密文存储空间评估

对于用户侧持有的密钥和生成的密文所消耗的存储空间,图4进行了具体的描述。图4(a)刻画了两个方案的用户密钥大小随着用户属性集大小的变化情况。从图4(a)中可以很明显地看到,当用户属性集增大时,文献[18]方案中的密钥空间占用也在增大;而在文中方案中,由于使用了外包解密,用户只持有秘密转换密钥和无证书私钥,因此用户密钥大小是常数,而且远小于文献[18]方案的。图4(b)则刻画了两个方案的密文占用空间对比,可以很明显看到,文中方案的密文大小略大于文献[18]方案的。这是由于本方案在生成密文后,还需要生成区块链的签名,对于密文的大小有了额外的空间消耗,但是在固定的属性集大小情况下,文中方案的密文空间占用几乎与文献[18]方案的相同。

6 结束语

针对车联网中的隐私数据共享问题,笔者提出了一种基于区块链的具有隐私保护的高效车联网数据分布式共享方法。该方法基于区块链解决数据存储、访问和用户撤销中的信任问题,同时基于无证书密码体系实现区块链交易的签名和认证以及降低用户密钥泄露风险,而区块链又可以为车联网节点提供公钥广播,从而克服了无证书密码系统的缺点。该方法同时结合边缘计算设备提出了一种高效的部分隐藏访问策略的数据细粒度访问控制方案,不仅提供了高效数据访问机制,而且支持了大量车辆的动态加入和撤销。另外,通过将数据存储在分布式共享系统中,避免了集中式存储带来的问题。大量实验分析对比证明了该方法的高效性和实用性。

猜你喜欢
敌手密文哈希
一种支持动态更新的可排名密文搜索方案
与“敌”共舞
基于模糊数学的通信网络密文信息差错恢复
嵌入式异构物联网密文数据动态捕获方法
哈希值处理 功能全面更易用
Windows哈希值处理不犯难
文件哈希值处理一条龙
一种新的密文策略的属性基加密方案研究
不带着怒气做任何事
巧用哈希数值传递文件