茅 磊
(江苏建筑职业技术学院 信电工程学院,江苏 徐州 221116)
智慧家居又称为智慧住宅[1](Smart Home System),是人工智能、物联网、云计算以及建筑设计、建筑装饰等相关学科的综合交叉研究领域。在智慧家居系统中,使用先进的计算机与通信、智慧云端控制、综合布线等技术,将人们日常生活各个子领域系统,如安防、信息家电、室内灯光控制、地板采暖、居家健康保健、卫生防疫等有机结合在一起,通过网络化的综合智慧控制和管理,实现更舒适、方便且更安全、环保的全新家居生活体验[2]。
随着智慧家居产业的逐步发展,有关智慧家居的安全保障问题越来越引起人们的重视。智慧家居系统中存储在云端的数据经常会受到各种威胁,包括用户隐私泄漏、重要数据的非法滥用,以及采集的用户数据完整性被破坏等[3]。对于用户信息的泄漏、滥用可采用访问控制和加密技术进行预防,在此方面已有不少研究成果。林珊珊等[4]分析了物联网环境中智慧家居存在的安全隐患,指出智慧家居中存在窃听、流量分析等被动攻击方式以及重放攻击、信息篡改等8 种主动攻击方式;严寒等[5]围绕智慧家居终端设备、云平台、移动应用程序及通信4 个方面,综述智慧家居中存在的攻击方法和防御措施,最后讨论了目前学术界及工业界关注的研究热点与难点;冯承文等[6]分析了智慧家居系统与智慧社区、智慧城市之间的关系,指出智能分析算法的应用会造成智慧家居系统存在相应的安全风险,并分别从法律和技术层面论述了智慧家居安全标准体系框架的通用标准和专用标准;张国亮[7]从家居安防智能化、家电设备智能化、家居医疗智能化等方面,针对智慧家居系统中的物联网构架安全威胁和通信安全威胁给出了可行性建议和实施方案;王宇成[8]针对物联网智能家居系统设备攻击检测展开研究,设计了一个基于传感器上下文特征的敏感指令入侵检测框架,实现了对窗户(以及智能门锁)、空调(以及恒温器)、灯、窗帘(以及百叶窗)、电视音响等娱乐类电器(以及厨房类电器)的决策树模型构建。但目前关于智慧家居系统中,对各终端无线传感器收集的相关数据在云端完整性的有效保护方案目前尚不多见,因此本文将针对此问题展开研究。
智慧家居系统在部署时所有功能均以互联网为基础,建立在物联网和云计算之上。智慧家居系统终端一般是各种无线传感设备,其负责收集、更新各种家居生活中的环境数据。由于云计算服务商往往拥有强大的算力以及海量的存储空间,因此可将各终端设备采集的数据传送至云端,通过云计算大数据的分析为智慧家居系统提供各种决策服务,如图1所示。
由图1 可以看出,保证各终端传感器采集数据的完整性,是智慧家居系统正常工作的基本要求。密码学中的数字签名技术可以同时为物联网终端采集的数据提供真实性、完整性和不可否认性的验证服务,尤其是在数据完整性公开验证、数字取证及不可否认性认证等方面发挥着难以替代的作用。本文针对具有特殊性质的同态聚合数字签名技术展开研究,并将其应用于保障智慧家居系统存储在云端数据的完整性。数字签名技术基于公钥密码学理论,公钥密码体制自1976 年由Diffie 等[9]提出以后,按照发展过程出现了传统公钥密码体制、基于身份的公钥密码体制、无证书密码体制和基于证书的密码体制等几类公钥密码体制[10]。传统公钥密码体制部署时需要设置用户公钥证书管理中心,用于颁发、管理用户证书并验证其合法性,无形中增加了系统证书管理的负担;基于身份的公钥密码体制在使用与部署时,虽然可直接采用用户的标识信息(例如邮箱地址、公民身份证号与电话号码等)作为公钥,减少了传统公钥密码系统中颁发、验证、维护公钥证书等环节,但是用户私钥全部存储在密钥生成中心(Key Generation Center,KGC)。换而言之,基于身份的密码体制中的密钥生成中心(KGC)掌控系统中的所有用户私钥,所以使用时必须假定上述KGC 是完全诚实可信的,这强制性假设往往与现实中的某些客观环境不符,不适合应用于智慧家居这样商业性的云存储平台中,会存在密钥托管问题。
基于证书的公钥密码体制[11-12]与以上两种公钥密码体制相比具有明显优势。在基于证书的公钥密码体制中,每个用户拥有自己选择的公私钥对和权威认证机构颁发的证书。当加密或签名时,需要同时使用自己的私钥和证书。由于私钥是用户自己选择的,因此避免了基于身份的密码体制的密钥托管问题,同时在一定程度上降低了传统公钥体制中公钥证书存储效验和计算等方面的开销。在智慧家居系统中可以非常方便地部署基于证书的密码系统:系统云服务商可以扮演证书生成中心,用户注册时,证书生成中心为每个用户生成各自的证书,用户则根据云服务商公开的系统参数随机选择自己的公私钥对。如图2所示,在智慧家居系统中部署基于证书的公钥密码体制不仅可以抵御外部恶意攻击者,而且可以抵抗不诚实云服务商的伪造,因此是最佳选择。
智慧家居边缘系统中的无线传感器每时每刻都在收集用户室内外环境的相关数据,通过网络上传至云平台中进行大数据分析与处理。如果这些收集到的数据在互联网中传输或在云端存储时,受到有意无意的破坏,那么错误的数据就会直接影响到智慧家居系统的正常工作,所以保障智慧家居系统中云端数据的完整性是非常必要的。对于智慧家居系统中无线传感器收集的数据,若采用普通的数字签名来保证采集数据的完整性,需要对每个采集的数据块签名进行验证。该方式不但会增加网络中传输的代价,而且当需要检验存储在云端数据的完整性时,还要逐一下载验证每个数据块对应的签名,因此不实用。
同态签名[13-16]是一种特殊的数字签名,假设M为待签名的数据集空间,该空间中的运算为#,签名空间为Θ,对应空间中的运算为*,对于来自M和Θ 上的消息签名对(m1,λ1)和(m2,λ2)(其中λ1=f(m1),λ2=f(m2)),若签名算法f是 代数 系统(M,#)到(Θ,*)上 的同 态映 射,则f(m1#m2)=f(m1)*f(m2)=λ1*λ2成立。可以看出,在同一数据集空间M中,数据签名可由同态组合算法直接生成。聚合签名[17-19]与同态签名不同,聚合签名中包含以下3 类实体:签名 者User1,User2,…,Userq(Useri的 公私 钥对为(PKi,xi))、签名聚合者(Aggregater)和聚合签名的验证者(Verifier)。聚合者A以User1,User2,…,Userq各自产生的消息—签名对(m1,σ1)、(m2,σ2)、…、(mq,σq)作为输入,通过聚合算法输出聚合后的签名σA,然后A把{(m1,PK1)、(m2,PK2)、…、(mq,PKq),σA}传送给验证者V,验证者通过聚合验证算法鉴别聚合签名σA的有效性。如果σA是合法签名,那么可以确定上述q个用户的单个签名是合法的。在需要把多个不同实体产生的多个签名同时传送给一个验证者进行验证时,聚合签名非常方便实用。
在智慧家居系统中,使用同态签名和聚合签名不仅可有效节省对传送方的通信带宽需求,而且可以降低验证多个签名人签名时的计算代价,同时降低云平台中存储多个签名所需的存储代价。当智慧家居无线传感网络收集的各用户数据存放在云平台时,可按时间间隔适当分块,将分成的块看作一个数据集,采用同态签名进行签名,并把数据集标签和各块的签名上传云端,如图3所示。
Fig.3 Data acquisition process in smart home system图3 智慧家居系统中的数据采集过程
验证者在验证数据的完整性时,可随机指定若干数据块和一个同态函数,向云平台服务器挑战。云平台服务器使用同态组合算法,通过同态运算把用户挑战块和对应签名进行压缩,最后将压缩后的结果返回数据的验证者,验证者使用对应的验证算法验证云服务器返回的结果是否正确,如图4所示。
Fig.4 Process of using homomorphic algorithms to challenge cloud servers图4 使用同态算法向云服务器挑战的过程
在进行多用户数据块完整性批量验证时,云服务器需将验证者所指定各用户分块的同态函数签名进行聚合,把各数据分块的同态函数值以及这些值的签名聚合结果返回给验证者。验证者通过对聚合签名的验证,便可获知多个不同用户的家居信息数据的完整性,如图5 所示。由此可见,在同一用户数据集中的数据块签名可先用同态组合算法进行压缩,而不同用户的数据块(即不同数据集中的数据块)签名用聚合算法进行压缩。该方式既减少了智慧家居云服务器需要传输的信息量,又减少了验证者验证签名的计算量,大大提高了数据签名验签时的效率。
Fig.5 Batch validation of multi-user data using aggregation signature algorithm图5 使用聚合签名算法实现多用户数据的批验证
基于证书的同态聚合签名在智慧家居系统中的部署方案包括以下几种算法:
(1)系统初始化算法。智慧家居系统云平台服务中心作为证书生成中心,输入安全参数1k,算法输出基于证书系统的公私钥对(CB-P0,CB-msk)和系统公开参数CBparams。其中,系统私钥CB-msk需要严格保密。
(2)用户密钥生成算法。用户在智慧家居系统注册时运行该算法,用户输入自己的身份信息ID和系统公开参数CB-params,算法输出用户的公私钥对(CB-xID,CB-PKID)。
(3)证书生成算法。在智慧家居系统云服务中心运行该算法,算法输入系统的主私钥CB-msk、系统公钥CBP0、系统公开参数CB-params、用户ID 及该用户的公钥CB-PKID,算法输出由该云服务中心签署的用户证书CertID。
(4)签名算法。该算法由智慧家居系统的各用户终端运行,对系统中边缘传感器收集的数据进行签名。算法输入用户身份ID、系统公开参数CB-params、系统的公钥CB-P0、数据集标签τ、待签名的数据块用户证书CertID、用户私钥CB-xID,算法输出在身份ID 下数据块m的签名σ。
(5)同态组合算法。由智慧家居系统云服务中心运行,数据验证者验证时,随机指定某一数据集τ中的若干数据块以及同态函数的系数,向云服务器发出挑战。云服务器运行该算法,输入挑战用户身份ID、公钥PKID、数据集标签τ和,算法输出同态算法组合后的签名σ。
(6)验证算法。该算法由数据验证者执行,输入系统的公开参数CB-params、系统的公钥CB-P0、用户身份ID、用户的公钥PKID、数据集标签τ、消息向量m和签名σ,算法输出true或false。
(7)聚合算法。在进行多用户数据块的批量验证时执行本算法。若存在q个不同用户users={u1,u2,…,uq}(其中用户ui的身份为IDi,公钥为PKi),设聚合签名验证者的公私钥对为(pkver,skver),输入系统公开参数CBparams、聚合签名验证者的公钥pkver、q个用户在对应数据集中数据块向量mi的合法签名σi(其中i=1,2,…,q),算法输出这些用户在消息—签名对上的聚合签名σAgg。
(8)聚合验证算法。输入系统公开参数CB-params、聚合签名验证者的私钥skver、在上的聚合签名σAgg,算法输出true或false。
(1)系统初始化算法。该算法由云平台服务中心运行,输入安全参数1k,云服务中心生成p阶的乘法循环群G1,GT,其中p为素数,g是G1的生成元,双线性映射e:G1×G1→GT。随机选择,设置系统主私钥s,系统公钥P0=gs。选择以下4 个密码Hash 函数:H1:{0,1}*→G1,H5:{0,1}*→G1,公开系统的公开参数(G1,GT,e,p,g,P0,H1,H2,H3,H4,H5)。系统参数公开后,聚合签名验证者需随机选取验证私钥ε∈,并对私钥严格保密,设置公开聚合签名的验证公钥为ξ=gε。
(2)用户密钥生成算法。该算法由智慧家居系统中的终端用户运行,算法以系统公共参数和用户身份ID∈{0,1}*作为输入。算法随机选择x∈,计 算PK=gx。(PK,x)即为该用户的公私钥对。
(3)证书生成算法。该算法由云平台服务中心运行,用户注册该系统时,向云平台服务中心提交身份ID∈{0,1}*,云平台服务中心输入系统公共参数、主私钥s,计算D=(H1(ID))s,将其作为用户证书,并传递给用户。
(6)验证算法。该算法由数据块验证者运行,算法的输入为系统公开参数、用户身份ID、公钥PK、数据块向量y=(y1,y2,…,yn)∈和签名W,算法分两个阶段进行:
首先,从W中提取数据集标签τ=(R,β,Y),计算Q=H1(ID),u=H2(M‖R‖PK‖β),v=H3(M‖R‖PK‖β),并验证式(1)是否成立:
如果上式不成立,则输出false。否则进入下一步验证,计算Ti=H4(ID‖τ‖i),验证下面的等式是否成立:
如果上式不成立,则输出false,说明数据块发生损坏;否则输出true,说明被验证的数据块没有被损坏。
如果有φ=φ'且μ=μ'成立,则该算法输出true,说明验证的数据块没有发生损坏;否则输出false,说明验证的数据块中存在损坏。
(1)签名算法输出的数据集标签(τ=(R,β,Y))的正确性验证。
(2)签名算法输出同态签名部分的正确性验证。
(4)聚合签名算法的正确性验证。
成立。
基于证书的同态聚合签名安全模型描述包含两部分:基于证书的同态签名方案的安全性和聚合算法的安全性。
按照基于证书的密码体制的特点,只有当攻击者同时掌握该用户证书CertID和用户私钥CB-xID时,才能生成用户公钥CB-PKID下的合法签名。如果攻击者只掌握用户证书CertID或用户私钥CB-xID的其中一个,则不能伪造合法签名。由于在基于证书的签名系统中不要求签名的验证者验证用户公钥的合法性,所以在该系统中存在“替换公钥”攻击。因此,可将基于证书签名的攻击者划分为以下两类:第一类攻击者CB-AⅠ可以替换任意用户的公钥CB-PKID,但不能获得目标用户的证书CertID;第二类攻击者也被称为“诚实而又好奇”的证书颁发机构,此类攻击者可以产生用户的证书CertID,但不能替换攻击目标用户的公钥CB-PKID。
同态签名算法中引入数据集概念,即在同一数据集中数据签名可由同态算法直接生成,而不同数据集之间的数据签名则不再满足上述性质。因此,同态签名应满足在适应性选择数据集下存在性不可伪造(Existentially Unforgeable Against Adaptive Chosen Dataset Attacks,EUF-CDA)的安全性要求。综上,基于证书的同态签名方案在适应性选择身份、适应性选择数据集下存在性不可伪造的安全模型可通过以下挑战者C 和攻击者(AⅠ或AⅡ)之间的游戏来刻画。
对于第一类攻击者AⅠ,构建模型如下:
(1)系统建立。C 生成公开参数params和系统主私钥msk、保密主私钥msk,将公开参数params发送给攻击者AⅠ。
(2)询问。攻击者AⅠ可向挑战者进行创建用户询问、用户密钥提取询问、用户证书提取询问、替换用户公钥询问与签名询问,挑战者需要模拟随机谕言器给予正确的回答。在签名询问时,挑战者要模拟签名谕言器,输出在攻击者要求身份公钥下的合法签名。
文献[19]中按照签名谕言器的能力,将签名谕言器分成普通、强力和超级3 类:①普通签名谕言器:该类签名谕言器只能回答用户身份为ID,在公钥CB-PKID下消息向量m的签名,其中公钥CB-PKID没有被攻击者替换过,否则终止游戏;②强力签名谕言器:该类签名谕言器在回答攻击者签名询问时可分成两种情况:被询问身份ID 的公钥没有被攻击者替换过,则可以直接通过查询用户密钥表,查询对应的公私钥对,输出合法签名;如果被询问身份ID的公钥被替换过,则先向攻击者询问替换后公钥对应的私钥,再输出合法签名;③超级签名谕言器:该类谕言器能在被询问身份ID 的公钥被替换过时,即使攻击者不提供对应的私钥,也能输出合法签名。即攻击者只提供用户身份ID和消息向量m,而不提供替换公钥后对应的私钥,挑战者也要产生合法签名σ。在本文所述算法的安全证明中,挑战者要模拟超级签名谕言器输出合法签名。
(3)伪造输出。最后攻击者输出一个伪造(ID*,PK*,τ*,m*,σ*)。当以下情况成立时,称攻击者AⅠ在上述游戏中获胜:①σ*是在挑战身份ID*和对应公钥PK*下,由τ*标记的数据集中消息m*的合法签名;②攻击者没有询问过挑战身份ID*的证书;③τ*≠τi,即AⅠ没有询问过身份为ID*、公钥为PK*,并由τ*标记的数据集m*中的消息签名。
对于第二类攻击者AⅡ,构建模型如下:
(1)系统建立。C 生成公开参数params和系统主私钥msk,将其发送给攻击者AⅡ。
(2)询问。攻击者AⅡ可向挑战者进行创建用户询问、用户密钥提取询问、用户证书提取询问、替换用户公钥询问与签名询问,挑战者需要模拟随机谕言器给予正确的回答。在签名询问时,仍然可将签名谕言器分成普通、强力、超级3 种,其能力如游戏1 中所述。本文所述算法的安全证明,仍要模拟超级签名谕言器输出合法签名。
(3)伪造 。最后 AⅡ输出一个伪造(ID*,PK*,τ*,m*,σ*)。当以下情况成立时,称攻击者AⅡ在游戏中获胜:①σ*是在挑战身份ID*、公钥PK*下,由τ*标记的数据集中消息m*的合法签名;②τ*≠τi,即AⅡ没有询问过身份为ID*、公钥PK*下,由τ*标记的数据集m*上消息的签名;③AⅡ没有询问过挑战身份ID*对应的私钥;④AⅡ没有替换过挑战身份ID*对应的公钥。
定义1 把攻击者在上述两个游戏中获胜的概率称为攻击者优势,一个基于证书的同态签名方案在适应性选择身份、适应性选择数据集下是存在性不可伪造的(EUFCBHS-ID-CDA),当且仅当,任何概率多项式时间内的超级攻击者在上述两个游戏中获胜的优势是可忽略的。
聚合签名的作用是将若干签名者生成的单个签名压缩成一个签名。在文献[20]中给出了一种来自于聚合签名者内部的合谋攻击,并重新定义了聚合签名安全模型中攻击者的能力:攻击者使用一系列单个签名伪造一个合法的聚合签名,而在这些单个签名中至少包含了一个非法签名。换句话说,只有当参与聚合的单个签名都是合法签名时,通过聚合算法生成的聚合签名才是合法的。对于基于证书的同态聚合签名而言,只有当每个参与聚合的基于证书的同态签名都是合法签名时,生成的基于证书的同态聚合签名才是合法的。其安全模型描述如下:
(1)系统建立。挑战者获得安全参数后生成系统的各项参数params,C生成验证聚合签名的公私钥对,然后C将公钥PK和参数发送给攻击者A。
(2)询问。私钥询问,攻击者给出待询问的用户ID,挑战者运行用户密钥生成算法,将用户ID 的公私钥对返回给攻击者;聚合验证询问,攻击者给出聚合后的签名,挑战者通过运行聚合签名验证算法,回答该签名是否合法。
(3)伪造。最后攻击者A 输出一个伪造的聚合签名,如果满足下列条件,称攻击者A 在上述游戏中获胜:①攻击者A 输出的最后聚合签名是合法的;②在攻击者进行聚合的单个签名序列中,至少有一个签名是非法的,即攻击者使用了若干不完全合法的单个签名产生了一个合法的聚合签名。
定义2 一个基于证书的同态聚合签名方案对于上述攻击者是安全的,当且仅当,在任何概率多项式时间t内,能够伪造最多q个聚合签名的超级攻击者,在上述游戏中获胜的优势是可忽略的。
定理1 在随机谕言模型下,若存在一个EUFCBHS-ID-CDA的第一类攻击者AⅠ,能在多项式时间t内最多进行NC次创建用户询问、N1次H1询问、N2次H2询问、N3次H3询问、N4次H4询问、NK次密钥提取询问、Ns次签名询问,以ϵ 的优势成功攻破上述方案,则存在一个算法C 能够在t'≤t+(2NC+4Ns+3)t*时间内,以优势解决CDH 问题,t*为每次回答询问消耗的时间。
证明:CDH 问题实例:设G1是p阶乘法循环群,g是生成 元,已 知P1=ga,P2=gb∈G1,a,b∈(其 中a、b未知),求解gab∈G1。挑战者C 与第一类攻击者AI交互,利用攻击者AI的能力来解决上述CDH 问题。
(1)系统建立。给定安全参数1k和一个整数n,挑战者C 建立如下系统:生成另一个素数p阶的乘法循环群GT,g是CDH 实例中乘法循环群G1的生成元,双线性映射e:G1×G1→GT,设 置P0=gb。C 将系统的公开参数(G1,GT,e,g,p,P0)发送给攻击者AⅠ。H1、H2、H3、H4是C 控制的随机谕言器。
(2)询问。创建用户询问:C 维护表Userlist,表中的各项为(IDi,Di,xi,PKi),即用户身份、用户证书、私钥、公钥,初始为空。设AⅠ进行qc次创建用户询问,C 随机选择t∈{1,2,…,qc},将身份IDt作为攻击者的挑战身份。运行时AⅠ提交身份IDi,C 进行如下运算:如果询问身份不是挑战身份(即IDi≠IDt),C 随机选择xi∈,计算PKi=,对身份IDi运行H1询问,在H1-List取出Qi=H1(IDi)=和wi,设置;如果询问身份是挑战身份(即IDi=IDt),C 随机选择xt∈,计算PKt=,对身份IDi运行H1询问,从H1-List中取出Qt=H1(IDt)=P1,设置Dt=⊥。C将(IDi,Di,xi,PKi)加入表Userlist中。
H1询问:C维护H1-List表,每一项为 (IDi,wi,Qi),初始为空。AⅠ提交待询问用户的身份IDi,挑战者C 进行如下回答:如果询问身份不是挑战身份(即IDi≠IDt),C 随机选择wi∈,设置Qi=H1(IDi)=;如果询问身份是挑战身份,(即IDi=IDt),C 设置wt=⊥,Qt=H1(IDt)=ga。C 将Qi的值返回给攻击者。
证书提取询问:AⅠ向证书提取谕言器提交待询问用户的身份IDi,挑战者 C 进行如下回答:若IDi≠IDt,C 查询表Userlist,返回身份IDi对应的Di;否则IDi=IDt,C 终止,因为AⅠ不能询问挑战身份的证书。
用户密钥询问:AⅠ提交用户的身份IDi,询问对应的公私钥对,C查询表Userlist,返回(xi,PKi)。
公钥替换询问:AⅠ可以向替换公钥谕言器提交一个身份为IDi用户的新公钥,C 用替换表Userlist中IDi对应的原公钥PKi。
H2、H3询问:C 维护表H2-List和表H3-List,两个表中每一项分别为一个五元组 (M,R,PKi,β,u) 和(M,R,PKi,β,v),初始时均为空。AⅠ提交询问(M,R,PKi,β),挑战者C 进行如下回答:随机选择u,v∈设置H2(M‖R‖PKi‖β)=u,H3(M‖R‖PKi‖β)=v。
H4询问:C 维护表H4-List,表中各项为(IDi,τ,s,(g1,g2,…,gn)),初始为空。AⅠ可以向H4谕言器提交询问(IDi,τ,k),C 随机选择s1,s2,…,sn←。记s=(s1,s2,…,sn),设 置gk=H4(IDi‖τ‖k)=,(k=1,2,…,n),将gk返回给攻击者。
设t为AⅠ运行时间,t'为C 运行时间,t*为每次回答询问消耗的时间,若AⅠ最多进行NC次创建用户询问,则H2、H3、H4询问 的次数为N2=N3=N4=Ns+1,所以可得t'≤t+2NC·t*+N2t*+N3t*+N4t*+Nst*=t+(2NC+4Ns+3)t*。证毕。
定理2 在随机谕言模型下,若存在一个EUFCBHS-ID-CDA的第二类攻击者AⅡ,能在多项式时间t内最多进行NC次创建用户询问、N1次H1询问、N2次H2询问、N3次H3询问、N4次H4询问、NK次用户密钥提取询问、NS次签名询问,以ϵ的优势成功攻破上述方案,则存在一个算法C 能够在t'≤t+(2NC+4Ns+3)t*时间内,以优势ϵ'≥解决CDH 问题,其中t*为每次回答询问所用时间。
证明:针对CDH 问题实例,设G1是p阶乘法循环群,g是生成元,已知P1=ga,P2=gb∈G1,a,b∈(其中a、b未知),求解gab∈G1。挑战者C 与第二类攻击者AⅡ交互,利用攻击者AⅡ的能力来解决上述CDH 问题。
(1)系统建立。输入安全参数1k和整数n,C 建立交互系统:选择另一个p阶乘法循环群GT,双线性映射e:G1×G1→GT。随机选择s∈,设置系统主私钥msk=s,P0=gs,最后将系统的公开参数params=(G1,GT,e,g,p,P0)和主私 钥发 送给 攻击 者。H1、H2、H3、H4是C 控制 的随 机谕言器。
(2)询问。创建用户询问:C 维护表Userlist,表中的各项为(IDi,Di,xi,PKi),即用户身份、用户证书、用户私钥、用户公钥,初始为空。设AII进行qc次创建用户询问,C 随机选择t∈{1,2,…,qc},将身份IDt作为攻击者的挑战身份。运行时AII提交身份IDi,C 进行如下操作:如果询问身份不是挑战身份(即IDi≠IDt),C 随机选择xi∈,计算PKi=gxi,对身份IDi运行H1询问,从H1-List中取出Qi=H1(IDi)=,并设置Di=
如果询问身份是挑战身份(即IDi=IDt),C 设置xt=⊥,PKt=P2,对身份IDi运行H1询问,从H1-List中取出Qt=H1(IDt)=P1,并 设置Dt=(P1)s。C 将(IDi,Di,xi,PKi)加入表Userlist中。
H1询问:C维护H1-List表,每一项为 (IDi,wi,Qi),初始为空。AII提交询问用户的身份IDi,挑战者C 进行如下操作:如果询问身份不是挑战身份(即IDi≠IDt),C 随机选择wi∈,设置Qi=H1(IDi)=gwi;如果询问身份是挑战身份(即IDi=IDt),C 设置wt=⊥,Qt=H1(IDt)=P1。C 将Qi的值返回给攻击者。
用户密钥询问:AⅡ提交用户的身份IDi,询问对应的公私钥对,挑战者C进行如下回答:若IDi≠IDt且用户IDi对应的公钥没有被替换过,C 以IDi为索引查询表Userlist,返回(xi,PKi);若IDi=IDt,则C 终止。攻击者AII不能询问挑战身份的私钥。
公钥替换询问:AⅡ可以向替换公钥谕言器提交一个身份为IDi用户的新公钥,用来替换身份为IDi用户原来的公钥PKi。若IDi≠IDt,则C 用PK'i替换原来表中IDi对应的公钥PKi;若IDi=IDt,则C 终止。攻击者AII不能替换挑战身份的公钥。
H2、H3询问:C 维护表H2-List和表H3-List,在这两个表中每一项分别为一个五元组(M,R,PKi,β,u) 和(M,R,PKi,β,v),初始时为空。AⅡ提交询问(M,R,PKi,β),挑战者C 进行如下回答:随机选择u,v∈,设置H2(M‖R‖PKi‖β)=u,H3(M‖R‖PKi‖β)=v。
H4询问:C 维护一张表H4-List,表中各项为(IDi,τ,s,(g1,g2,…,gn)),初始为空。AⅡ可以向H4谕言器提交询问(IDi,τ,k),C 随机选择s1,s2,…,sn←,记s=(s1,s2,…,sn),并分别计算gk=H4(IDi‖τ‖k)=,(k=1,2,…,n),将gk返回给攻击者。
定理3 设哈希函数H是抗碰撞的,当且仅当在聚合签名中每个用户的签名是合法的,则由聚合算法产生的聚合签名是合法的。
证明:
所以,聚合签名是合法的。
(2)另一方面,如果聚合签名是合法的,则有φ=φ'。即:
(4)由μ=μ'成立,可得:
本节针对上述设计的基于证书的同态聚合签名方案,使用Java 语言编程进行了仿真实验,实验中使用斯坦福大学开发的JPBC 库(The Java Pairing-Based Cryptography Library)。测试环境的硬件配置为:CPU 为Intel Core i7 @2.2 GHz,内存为16 GB,操作系统为Windows 10(x64)。
仿真实验中选取的每个数据块大小为5MB,分别使用本文设计的基于证书的同态聚合签名方案、文献[21]中基于证书的聚合签名方案和文献[22]中基于证书的签名方案。如表1 所示,依次对10 个数据块(包含2 个数据集,每个数据集中有5 个数据块)、30 个数据块(包含5 个数据集,每个数据集中有6 个数据块)、50 个数据块(包含5 个数据集,每个数据集中有10 个数据块)、70 个数据块(包含7 个数据集,每个数据集中的数据块个数依次为8 个、5 个、11个、15 个、9 个、10 个、12 个)、100 个数据块(包含10 个数据集,每个数据集中的数据块个数依次为5 个、7 个、15 个、14个、18 个、15 个、5 个、2 个、13 个、6 个)进行签名和验证。3种基于证书的签名方案验签时的性能比较如图6所示。
Table 1 Number of test data blocks表1 测试数据块个数
Fig.6 Comparison of the performance of three certificate-based signature schemes图6 3种基于证书的签名方案验签时性能比较
从实验结果可以看出,使用普通基于证书的数字签名方案在验证实验数据块时,随着数据块数量的增加,签名的验签时间也随之明显增长。使用基于证书的聚合签名时,虽然验签耗时曲线已经降低并趋于平缓,但由于每个用户包含的数据块数量很多,所以仍需消耗很多时间。最后使用本文设计的基于证书的同态聚合签名方案进行验签时,消耗的时间最少。这是因为针对同一用户数据集中的数据块签名可以使用同态签名算法进行组合,对于来自不同用户数据集的数据块签名可以使用聚合签名算法进行压缩。因此,使用基于证书的同态聚合签名算法可以减少对各数据块进行完整性检测的验证签名时间,进一步提高了验签效率和网络带宽利用率。
本文提出一种基于证书的同态聚合签名算法,并将其应用于智慧家居系统中各种无线传感器收集数据的完整性检测中。算法可以在复杂的云存储环境中,针对多用户智慧家居传感器收集到数据块的完整性进行批量验证,使用同态组合算法可压缩同一用户数据集中的数据块签名,而聚合算法可以对不同用户数据集中数据块的签名作进一步聚合压缩。通过仿真模拟实验,可看出基于证书的同态聚合签名在一定程度上提高了数据块签名的验签效率,节约了传输带宽。但是,在智慧家居系统中还有很多问题值得探讨。例如,如果证书中用户的相关信息发生变更,或者证书被要求终止使用,都需要进一步探讨用户证书撤销问题。此外,智慧家居无线传感器收集的数据往往会包含一些用户隐私及敏感数据,所以系统中数据的机密性保护也有待深入探究。