APP下载

基于群体认证的远程证明方案研究

2022-11-10

信息安全研究 2022年11期
关键词:度量远程证明

王 冠 高 壮

(北京工业大学信息学部 北京 100124) (可信计算北京市重点实验室(北京工业大学) 北京 100124)

近年来,远程证明(remote attestation, RA)技术在物联网系统中的应用已成为国内外安全领域研究的热点[1].由于物联网技术自身的特性,导致现有技术在实际应用于物联网系统时会存在问题.首先,现有的应用于物联网的远程证明方案中,由于感知层节点计算能力不足,往往无法对终端服务器进行有效的远程证明;其次,现有的远程证明方案往往都是被动远程证明,这种证明方式会打断设备的主要任务,对设备造成关键性数据损失.基于以上的原因,本文提出了一种基于群体认证的远程证明方案.本文方案利用感知层的聚合节点,分别验证终端服务器不同部分的内容,最后通过一致性协议完成各个节点对终端服务器认证状态的统一,以解决感知层节点计算能力不足的问题.同时,在度量方式上,本文采取随机时间节点上的自我度量,解决了传统被动证明方式导致设备运行时数据损失的问题.最终完成物联网感知层对终端服务器的群体远程证明.

1 相关工作

远程证明是一个广泛的研究领域,包括依赖于不同设备架构、安全要求和对抗性假设的各种方法.远程证明的总体目标是使验证方能够通过质询响应机制确定证明方是否处于可接受状态.换言之,远程证明过程可以定义为验证方和证明方之间的交互.当证明方被验证方质询时,将生成与其当前状态对应的响应,然后将其发回.认证通过后,验证方可以确定证明方的可信度[2-4].远程证明主要分为静态远程证明和动态远程证明2种形式.

1.1 静态远程证明

要在远程证明期间建立信任,评估者需要识别远程系统,并请求和验证有关其硬件和软件配置的证据[5-6].许多远程证明的方法提供的证据仅衡量机器和运行软件的静态属性.Sailer等人[7]的完整性度量架构(integrity measurement architecture, IMA)是可信计算组织度量引导证明过程的最早实例之一.通过使用目标计算机上的可信根[8]度量每个组件,这些组件在系统引导期间进行计算.每个软件利用度量算法计算出各自的度量值,以创建信任链,该信任链用于存储启动时的特定软件组件的顺序.但是,由于它只度量了代码加载时的状态,忽略了设备运行时代码的变化,所以它仍然无法证明目标计算机运行时的状态.为了解决这些问题,Jaeger等人[9]提出了PRIMA方案,通过利用程序或进程之间的信息流控制机制进一步提高安全性.但是,该方案同样是对程序的二进制代码进行度量,同时只捕捉了数据完整性流动方向这种简单的设备行为.所以,PRIMA方案依然不能完整度量设备的动态行为特征.

1.2 动态远程证明

在对静态远程证明技术研究的过程中,研究人员发现静态远程证明技术仅能保证设备上代码的完整性,而不能保证设备运行中的行为可信.为此,研究人员提出了动态远程证明方案,通过对程序运行时的实时证明,完成动态的可信验证.

Seshadri等人[10-11]提出了基于无争议代码执行的认证协议,分别用于检测受损节点和建立安全密钥.Zhang等人[12]提出了一种证明技术,该技术使用数据保护来包围程序数据,并在证明中包含这些数据保护的校验和,但它无法检测对象的溢出攻击块或数组元素,也无法有效抵御字符串格式攻击.除此之外还有一些文献提出了其他方案,如基于属性和基于语义的认证,通过对属性以及语义的度量检查程序行为.文献[13]研究了行为特征;文献[14]研究了Java字节码级别规范,根据对字节码的识别来实施不同的本地策略.虽然这些实例一定程度上保证了安全,但它们都无法在二进制级别检测到控制流攻击.

2 基于群体认证的远程证明方案架构

2.1 方法框架

大多数物联网应用领域(如智能建筑等)的网状网络都是由各种低端嵌入式设备构成的,其网络应该是静态或准静态的.所以,本文提出的方案建立在一个静态拓扑的网络中.

如图1所示,方案主要由2个实体成员组成:汇聚节点(sink node, SN)和终端服务器(terminal server, TS).SN根据配置划分为普通节点和协调者.方案分为测量和验证2个阶段.在测量阶段,根据设定的自我度量计划,TS从内核、进程等不同方面进行自我度量,并将度量结果进行存储.在验证阶段,各SN首先根据配置好的时间表,同时对TS进行验证请求;然后,SN根据收集到的度量结果,分别进行自身的可信评估;最后,SN在其通信范围内定期广播其当前已经认证的TS部分状态,同时,从邻居接收信息,更新其认证状态,并将新状态广播给邻居.经过一定的步骤后,所有网络节点的状态将收敛到相同的一致性,完成针对TS的远程证明.

根据以上描述,度量阶段主要流程如下:

步骤1. 根据设备环境配置SN的认证计划时间表以及预期结果收集时间.同时,配置节点ID最大者为协调者.

步骤2. 在配置的时间表中,每个SN对TS进行验证请求.TS根据不同的SN返回自身不同结构的可信度量值.

步骤3. 每个SN分别根据自身的可信基准库完成对TS的部分认证,并将自己的认证结果广播至相邻设备.

步骤4. 同时,SN保存针对TS各部分认证的结果,将其保存在自己的受保护的内存中.

步骤5. SN根据接收到的认证结果对针对TS的认证状态进行更新.

步骤6. 在预期结果收集时间结束后,根据结果收集情况进行设备可信评估,形成每个SN针对TS的可信值.若SN中的协调者发现缺少某部分内容的评估结果,则再次向该结果对应的生成节点请求结果.若请求3次无响应,则将该节点的度量任务分配到协调者周围的随机节点,等待完成度量任务,并收集结果.同时认为上述缺失结果的节点发生故障.

步骤7. 在预期的可信值计算时间结束后,所有的SN将自身计算的可信结果签名并进行广播,当收集到一定数量的相同结果后,完成针对TS的综合可信度评估,完成对TS的可信证明.若该阶段以及该阶段结束后,某个节点无法得到综合可信度评估结果,则向协调者进行请求,获取对TS的综合可信度评估结果.至此,完成远程证明过程.

本文方案将TS需要度量的任务负担划分为每个SN能够计算的大小,以此来实现感知层节点针对终端服务器的部分认证,减少了感知层单个节点的计算开销.随后各SN对TS的可信认证结果进行综合,利用一致性协议完成整个感知层对终端服务器的可信认证,解决了感知层因计算能力不足而无法对终端服务器进行远程证明的问题.同时,TS根据预定好的时间节点进行自我度量,将度量的结果进行存储.此时感知层发送远程证明请求并不会打断TS正在进行的主要任务,并且在证据收集阶段非常快,不需要终端服务器进行任何计算.因此解决了被动远程证明对设备关键性任务数据造成损失的问题,并减少了远程证明过程中的计算开销.

下面具体分析方案中自我度量、可信认证以及协调者选举3个关键性技术.

2.2 自我度量

2.2.1 随机时间节点

为了完成TS的自我度量,需要配置特定的时间表计划TS的度量任务.然而,度量的时间间隔会影响度量结果的准确性.在物联网设备中,最难检测的恶意软件类型之一是漫游恶意软件[15].图2示出了2个恶意软件入侵的示例.入侵1表示未被检测到的,入侵2是已被检测到的.整个设备随着时间自左向右运行,每个块表示每次自我度量的时间间隔Tm,Tv是每次验证的时间间隔;c表示每次验证的时效性.在入侵1中,恶意软件在进行任何度量之前覆盖其踪迹并离开.在入侵2的情况下,恶意软件持续存在于证明方.虽然可能在感染后不久进行测量,但是只有在验证阶段后才能采取纠正措施.

通过以上示例,说明了TS在定期的自我度量过程中有2个参数很重要:1)TS的2次连续测量之间的时间Tm;2)感知层连续2次对TS执行验证阶段时收集测量值之间的时间Tv.Tv与Tm的差距不能过大,如果Tv≤Tm,SN就会收到多次同样的度量值,这样的参数没有意义,所以,在大多数验证过程中,Tv>Tm.

为了解决漫游恶意软件的问题,本文方案将在设备上使用随机时间节点进行度量.利用终端服务器拥有的TCM的随机数发生器,通过随机时间生成函数获得一个随机时间,然后,终端服务器根据该随机时间进行接下来的自我度量.为了确保终端服务器上的恶意软件不知道度量发生的时间节点,随机数发生器以及随机时间函数必须受到保护.因为随机数发生器属于可信的TCM芯片中,所以只需将随机时间生成函数放到受保护的内存中调用随机数发生器来获取随机时间节点即可.

2.2.2 度量值存储

由于存储多个度量值会过多无意义地消耗存储空间,同时也会占用TS的资源,所以采取循环存储法来存储度量值.TS将度量值存储在一个固定位置,并将其划分为k个测量窗口,第i个测量值存储在位置Limodk,每次存储针对内核的测量值、针对软件的测量值以及针对行为的测量值.同样,为了保证运行过程中的TS是可信的,SN会经常进行验证,即经常收集度量值,因此,TS不会过度写入度量值.所以,连续验证之间的时间最多应为Tv≤k·Tm.

2.3 可信认证

在度量阶段中步骤6的预期收集时间结束后, SN需要对TS进行可信度评估.TS根据可信值等级划分为完全可信、可接受可信、部分接收可信以及不可信.当最终认证结果为部分可接受可信时,全体SN会再次对终端服务器进行校验,以确认其可信性.

2.4 协调者选举

为了防止协调者故障,协调者会周期性向全部节点发送心跳信息,普通节点根据是否收到心跳信息来确定协调者是否存活.

当普通节点发现协调者死亡时,首先向比自己ID大的节点发送确认消息,当超过半数的节点确认协调者死亡时,该普通节点则会发起选举.

选举流程如下:

1) 节点i向所有比自己ID大的节点发送选举消息;

2) 如果节点i得不到任何回复(回复为alive消息),那么节点i成为协调者,并向所有的其他节点宣布自己是协调者(宣布为Victory消息);

3) 如果节点i得到了任何回复,则节点i无法成为协调者,同时等待Victory消息,如果等待超时则重新发起选举.

为了避免出现脑裂的情况,在协调者向普通节点发送心跳信息时,如果收到了其他协调者的心跳信息,则会与该协调者比较ID大小,若自身ID较小,则主动降级为普通节点.同时,当普通节点收到2个不同ID的协调者发送的心跳信息时,会自动认为ID较大的节点为网络中的协调者.

3 方案分析

3.1 安全性分析

3.1.1 软件攻击

本文方案通过针对终端服务器的内存内容定期校验,同时针对其行为进行定期可信性评估来校验其可信性.若攻击方试图入侵终端服务器,则可以根据汇聚节点群针对终端服务器的定期分散性度量完成针对攻击方的入侵检测.

3.1.2 TOCTOU攻击

终端服务器通过使用随机时间节点进行自我度量的方式可以抵御此类攻击.同时,通过引入设备可信度量结果的新鲜度来进一步增强安全保障.

3.1.3 DDoS攻击

本文针对物联网终端的验证方案采取的是主动验证,即先进行自我度量,在度量之后证明方会在随机的时间节点去收集度量值.这个过程中由于针对终端服务器的验证请求不会导致其进行自我度量,所以攻击方的DDoS攻击无法对设备产生消耗,从而防御DDoS攻击.而针对传感器节点的验证方式也是一种主动度量的方式,即传感器节点在与终端服务器的交互中主动进行自我度量报告.这种方式同样可以防止攻击方的DDoS攻击.

3.1.4 伪装攻击

针对伪装汇聚节点的行为,当攻击方伪装成汇聚节点多次进行验证请求时,终端服务器只需发送自己存储的度量值,并没有计算开销.因此不会对终端服务器造成影响.

3.1.5 重放攻击

针对终端服务器的重放攻击可以理解为汇聚节点不断要求对终端服务器发出远程证明请求.在本文方案中,终端服务器采取自我度量的方式,即当其接收到验证请求后,只发送其已经计算好的度量值,不再次进行自身度量值的计算,所以能很好地抵抗针对终端服务器度量请求的重放攻击.

3.2 安全性对比

为了进一步分析本文方案的安全性,将本文方案与现有方案进行多方面的对比,结果如表1所示.现有方案将重点放在抗软件攻击和TOCTOU攻击上,因此多数可以满足设备的动态安全性.本文方案可以有效地抵抗DDoS攻击和重放攻击,SARA,ESDRA,DO-RA方案均不能避免这2种攻击.本文方案综合了现有远程证明方案的优点,并对现存的不足进行了完善,可满足以上所列的安全特性,对于上述几个方面的安全性都有显著提高.

表1 远程证明方案安全性对比

3.3 仿真实验

本文采用Net Logo 6.2.2仿真物联网环境搭建网络模型.仿真实验主要从方案的正确性、有效性和性能3个方面验证.

如表2所示,将可信节点的类型按照如下范围划分.其中:完全可信节点表示其完全可信;可接受节点表示其属于系统可接受范围;部分接受类型节点表示需要根据其每次的可信度决定是否接受其数据;不可信节点表示其为恶意节点.

表2 设备可信评估等级划分

针对本文方案,模拟了不同自我度量次数下的可信评估等级变化趋势.如图3所示,分别对4个可信评估等级的终端服务器进行基于汇聚节点群的远程证明.结果表明,在终端服务器的自我度量次数不同时,方案的可信度评估结果变化处于可接受范围内,进一步证明了方案的有效性.

为了分析性能开销,本文参考文献[20]中对各种算法的时间开销的测量数据,利用时间延迟仿真各种算法的时间开销.

如图5所示,n代表终端服务器已经自我度量并存储到内存窗口的次数.当n=1时,代表终端服务器进行了1次自我度量.随着汇聚节点的增多,对终端服务器的验证负担逐渐分散,验证过程的时间开销逐渐减少.当n=4时,代表终端进行了4次自我度量.由于需要验证的度量值增多,方案所花费的时间开销增加.当n=7时,代表终端服务器进行了7次自我度量.与之前一样,方案的时间开销增加.

从图5的时间变化趋势可以看出,汇聚节点的增加大幅减少了验证所需的时间开销,这是因为本文方案是一种集体验证方案.通过将验证的压力分散到各个设备来减少时间开销.另外,随着未验证的自我度量次数n的增长,汇聚节点验证的时间开销也逐渐增多.但是从图5中可以看出,当汇聚节点数量从32增加到64时,其时间开销减少的趋势不明显,这是因为当设备数量增多时,设备间的一致性协议开销也增大.导致了虽然设备数量增多,但是效率提升并不明显.由此可以看出,一个适当的度量次数可以极大地提升验证效率.因此,根据设备的运行环境配置一个合理的验证计划是非常必要的.

4 结 论

随着物联网技术的发展,物联网设备的安全成为热点问题.远程证明技术作为物联网系统的安全保障仍然需要深入的研究.针对物联网中的远程证明技术存在的问题,本文以建立安全的物联网系统为目标,以终端服务器可信为核心,对终端服务器与感知层交互过程进行研究,提出了一种基于群体认证的远程证明方案.该方案利用化整为零的思想,将终端服务器需要度量的内容进行划分,由各汇聚节点分别进行度量,最后采用一致性协议统一汇聚节点的度量结果,完成感知层对终端服务器的远程证明.同时,利用终端服务器的自我度量去除以往被动远程证明可能造成的关键性数据损失.该方案很好地解决了物联网感知层节点计算能力不足的问题,同时也保证了在远程证明过程中不打断设备的主要任务,提高了设备认证的效率,保障了物联网系统的安全.

猜你喜欢

度量远程证明
鲍文慧《度量空间之一》
远程求助
远程工作狂综合征
突出知识本质 关注知识结构提升思维能力
度 量
远程诈骗
三参数射影平坦芬斯勒度量的构造
证明我们的存在
Nesbitt不等式的十七种证明
证明