APP下载

基于SGX的车联网身份认证方案研究

2023-11-22张倩倩

计算机技术与发展 2023年11期
关键词:应用程序内存密钥

王 冠,张倩倩

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

0 引 言

随着物联网的成熟和普及,一种通过互联网连接车辆的特殊网络应运而生:车联网。车联网是物联网的一个子集,通过车对车(V2V)、车对基础设施(V2I)连接实现通信。车联网是一个复杂的综合网络系统,连接车内外的人、车载智能系统以及城市环境中的各种信息物理系统。通过将车辆、传感器和移动设备集成到一个全球网络中,车联网超越了远程信息处理、车辆自组织网络和智能交通,使各种服务能够交付给车辆和运输系统以及车上和车辆周围的人。车联网实时采集、处理和共享道路信息,缓解交通管控中的交通拥堵,通过预警减少交通事故,保障车辆安全[1]。传统的车联网环境主要由可信实体(TA)、路边基站单元(RSU)和车载移动单元(OBU)3个基本网络节点组成。TA执行车辆的注册、认证等功能,RSU设置在道路两侧或十字路口,利用专用短程通信协议通过无线信道与车辆通信,OBU用于采集上传的相关车辆信息[2]。

当前有大量车联网身份认证协议,它们用密码学方法结合区块链、云雾计算、边缘计算等手段,实现了车联网身份认证协议的安全高效[2-6]。

文献[3]针对多TA网络模型提出一种基于区块链的认证和密钥协议,将TA的计算负载卸载到RSU,提高认证效率,但该协议并没有抵抗内部攻击的手段。文献[4]设计了一种基于对称加密算法和雾计算的车联网认证协议,有4层架构,并应用了SGX抵抗特权攻击,但该协议并没有有效利用RSU。文献[5]提出一个基于边缘计算的的车联网身份认证隐私保护协议,该协议将车辆作为边缘节点参与认证,RSU不参与认证,但是没有抵抗特权用户攻击。文献[6]提出了一种基于密钥共享和动态代理机制的去中心化车辆身份验证方案,基于信任管理的区块链聚合子认证结果,实现协同认证,存储在防篡改区块链中的信誉较高的边缘计算节点可以将最终聚合的认证结果上传到中心服务器,实现去中心化认证,但是没有抵抗内部攻击。文献[7]设计了一种基于SGX技术的工业物联网认证协议,该协议采用SGX存储主密钥,同时借助SGX内存保密的特点实现机密计算,该协议可以有效抵抗特权用户攻击和终端节点的追踪攻击[7]。文献[2]设计了一种基于区块链和secGear统一机密计算框架的车联网认证协议,在满足抗抵赖要求的同时实现了跨区域认证,并采用secGear框架实现了认证表的机密计算,保护了认证表的安全。

但是随着网络中车辆的激增,区块链性能开销大,逐渐不能满足认证所需的安全高效。在车联网中应用边缘计算、雾计算等新兴技术手段提高了认证的高效,但是增加了网络节点,且没有最大程度地利用RSU。现存的大部分认证协议主要考虑了外部攻击,如重放攻击、窃听攻击、捕获攻击等。随着软件复杂性的增加,攻击者有可能会利用木马等恶意软件来获取系统内部的信息,窃取认证表,从而实现内部攻击,内部攻击危害相比于外部攻击更大,系统内部充满威胁[7]。基于此,该文设计了一种基于可信计算技术的安全高效的身份认证协议,抵抗了内部攻击,同时实现了计算的卸载。

该协议最大程度地利用RSU,RSU不再只是实现简单的转发功能,将身份认证过程中的主要计算工作卸载到RSU内完成。TA和RSU实现远程认证,TA将生成的主密钥通过远程认证实现的安全通道传输给可信的RSU。在身份认证与密钥协商阶段,OBU通过公共信道将信息发送给RSU后,RSU根据收到的信息,从中取出车辆离线注册时留在TA的认证标识,发送给TA,TA收到此标识后,从内存的OBU认证表中取出对应信息发送给RSU,在RSU内将TA发来的信息和OBU发来的信息进行计算对比,计算完成后,RSU将对应的信息分别转发给OBU和TA。

该协议利用SGX技术提供的安全机制来保证认证协议的安全性,利用SGX的密封机制来保存主密钥,内存隔离机制来实现机密计算,远程认证机制来安全地传输主密钥。

1 相关技术

IntelSGX(Intel Software Guard Extension)[8]是对Intel架构的一组扩展,旨在为计算机上执行的敏感计算提供完整性和机密性保护。SGX是一系列可信计算设计中的最新迭代,旨在通过利用远程计算机中的可信硬件来解决安全远程问题。可信硬件建立安全容器,远程计算服务用户将所需的计算和数据上传到安全容器中,可信硬件在执行计算时保护数据的机密性和完整性[9]。SGX技术主要包括隔离执行和远程认证两个核心机制[10]。

1.1 隔离执行

SGX技术允许应用程序在一个受保护的容器中执行,称为Enclave。Enclave是应用程序地址空间中的一个受保护区域,即使存在特权恶意软件,它也提供了机密性和完整性。如果Enclave外的软件试图访问Enclave内存区域,即使是特权软件,如虚拟机管理器、BIOS或操作系统,也会受到阻止。SGX阻止所有其他软件访问位于Enclave内的代码和数据,包括系统软件和来自其他Enclave的访问。检测到修改Enclave内容时,阻止或中止执行。

为了实现SGX内存保护,需要新的硬件结构。EPC(Enclave Page Cache)是用于存储Enclave页和SGX结构的保护内存,该内存受软硬件访问的保护。EPC内存储了许多不同Enclaves的代码和数据,当Enclave执行对EPC的内存访问时,处理器决定是否访问。处理器在称为EPCM(Enclave Page Cache Map)的硬件结构中维护EPC中每个页面的安全性和访问控制信息。EPC为系统中的Enclave提供受保护的内存区域。EPCM是附加到每个EPC页面的安全元数据。EPCM包含硬件保护Enclave内存访问所需的信息。EPC页面和EPCM条目之间存在1∶1的映射。内存加密引擎(MEE)是一个硬件单元,加密处理器包主存(DRAM)之间的通信数据。创建Enclave时,会将Enclave二进制文件加载到EPC中,并建立Enclave标识。Enclave创建过程分为多个阶段:初始化Enclave控制结构、分配EPC页并将Enclave内容加载到页中、测量Enclave内容并最终建立Enclave标识。加载完后,处理器会计算Enclave中所有内容的摘要(SHA-256) ,与开发者签名中的摘要进行对比。只有相匹配,才会通过完整性验证,然后执行相应应用代码。

1.2 远程认证

SGX架构提供了两种机制,一种用于在同一平台上运行的2个Enclave之间进行本地证明,另一种用于扩展本地证明以向平台外的第3方进行远程证明。

远程认证需要使用非对称加密。SGX启用了一个特殊的Enclave,称为Quoting Enclave,专门用于远程证明。SGX引入了EPID(Enhanced Privacy ID),EPID是一种组签名方案,它允许平台对对象进行签名,而无需唯一标识平台或链接不同的签名。Quoting Enclave创建用于签署平台证明的EPID密钥,然后由EPID后端基础设施认证。EPID密钥不仅代表平台,还代表底层硬件的可信度。当Enclave 系统运行时,只有Quoting Enclave可以访问EPID密钥,并且EPID密钥绑定到处理器固件的版本。因此,可以看到一个QUOTE是由处理器本身发出的。

首先,应用程序需要来自平台外部的服务,并与服务提供商建立通信。服务提供商向应用程序发出挑战,以证明它确实要在一个或多个Enclave内运行必要的组件;应用程序提供Quoting Enclave的Enclave身份,并将其与服务提供商的挑战一起传递给应用程序的Enclave;Enclave生成一个清单,其中包括对质询的响应和一个临时生成的公钥,以供挑战者用于将秘密传送回Enclave,然后它生成清单的哈希摘要,并将其作为EREPORT指令的用户数据包含在内,EREPORT指令将生成一个将清单绑定到Enclave的报告,然后Enclave将报告发送到应用程序;应用程序将REPORT转发给Quoting Enclave进行签名;Quoting Enclave使用EGETKEY指令检索其报告密钥并验证报告。Quoting Enclave创建QUOTE结构并使用EPID密钥对其进行签名。Quoting Enclave将QUOTE结构返回给应用程序;应用程序将QUOTE结构发送给服务挑战者;挑战者使用EPID公钥证书和撤销信息或认证服务来验证报价上的签名,并通过清单摘要验证清单的完整性。

2 身份认证协议设计

该系统包括3个实体:TA、RSU和OBU[11]。在这个模型中,TA知道部署了哪些RSU。车辆在接入车联网中要与TA进行认证,整体流程如图1所示。

图1 整体流程

针对车联网应用场景,该文提出一种基于SGX的身份认证协议,以确保车联网的数据传输和指令传输的安全高效。该协议主要包括初始化协议、注册阶段、远程认证阶段、身份认证及密钥协商阶段。

2.1 初始化协议

(1)超级管理员选取随机数(MK),将MK作为主密钥保存在TA中的SGX,TA生成全局随机数(IDT),RSU内也包含IDT。

(2)超级管理员将单向哈希函数h(),消息认证码对HMack(Mac,Ver)等写入所有的OBU和RSU的内存中。

2.2 车辆注册阶段

在车辆注册阶段,用户和车辆需要在TA进行注册,TA为车辆生成身份标识(IDi),该阶段在离线环境中进行,注册步骤如下:

(1)用户在TA中输入密码(PWi)和生物信息(BIOi),TA为车辆选择身份标识(IDi),创建智能卡(IDSC),计算(σi,τi)=Gen(BIOi),RPW=h(IDi‖PWi|σi),V=h(RPW‖IDSC)。

(2)TA生成随机数(rs,Ks),使用IDT计算Ni,VIDi和Fi,其中Ni=rs⊕h(IDi‖PWi‖σi‖IDSC),VIDi=h(rs‖IDi‖IDT),Fi=h(IDT‖VIDi)⊕rs。

(3)TA获取随机数(W),并将W、VIDi、Fi、Ks、IDi输入到SGX的安全接口,安全接口使用主密钥(MK)计算并返回PVIDi,PFi,SW,PKs,PIDi,其中PVIDi=VIDi⊕h(W‖MK),PFi=Fi⊕h(W‖MK),PKs=Ks⊕h(W‖MK),PIDi=IDi⊕h(W‖MK),SW=W⊕h(IDT‖MK)。

(4)TA将{W,PVIDi,PFi,PKs,PIDi}存储在自己内存中的认证表中,TA获取当前时间戳(t1),并将{Ni,V,VIDi,SW,Ks,τi,IDi,t1}通过安全信道发送给OBU,将智能卡交给用户。

(5)OBU接收到TA返回的信息后,判断时间戳(t1)的新鲜性,如果t1不新鲜,则拒绝该请求并要求重发;否则,OBU将{Ni,V,VIDi,SW,Ks,τi,IDi}保存在自己的内存中,并给TA返回一条确认消息。

2.3 远程认证阶段

在基于SGX的身份认证协议中,为了确保主密钥的安全性,主密钥的部署方式必须是可信的。TA首先需要通过认证建立与RSU的安全会话通道,然后将主密钥发送到RSU中。利用SGX提供的远程认证建立TA与RSU可信区的认证会话,同时通过密钥交换协议协商出双方的会话密钥。最终TA通过会话密钥加密主密钥并发送给RSU。通过远程认证,RSU中的Enclave可以证明自己的身份合法,未经篡改同时运行在启用了SGX的正版平台,这保证了主密钥的安全[12-14]。认证流程如图2所示。

图2 远程认证流程

认证过程如下:(1)TA向RSU发起挑战,RSU执行几个步骤来构造远程认证流的初始消息。RSU Enclave初始化后,RSU Application执行Ecall进入Enclave,RSU Enclave调用sgx_ra_init()并将结果和DHKE Context返回给RSU Application,sgx_ra_init()函数的参数为TA的公钥,该公钥应该硬编码到RSU Enclave,可确保最终用户无法更改密钥,从而Enclave只能与预期的远程服务通信。然后,RSU Enclave调用sgx_get_extended_epid_group_id()来检索EPID的扩展GID以生成msg0。

(2)RSU调用sgx_ra_get_msg1()来生成包含DHKE客户端公钥(Ga)的msg1,该方法的其他参数包括在上一步中获得的DHKE Context和一个指向用于计算客户端DHKE密钥的sgx_ra_get_ga()存根函数的指针。当RSU Enclave链接到sgx_tkey_exchange库并导入sgx_tkey_exchange时,该函数由SDK自动生成。将msg0和msg1一起发送给TA,msg0‖msg1=(ExGID‖Ga‖GID),其中“‖”表示连接。

(3)从RSU接收msg1后,TA检查请求中的值,生成自己的DHKE参数,并向Intel认证服务中心(IAS)发送查询用以检索客户端发送的Intel EPID GID的签名撤销列表(SigRL),Intel认证服务只支持扩展GID的值为0。TA使用P-256曲线生成一个随机的EC密钥(Gb),通过Ga和Gb派生出密钥(KDK),对KDK执行AES-128CMAC算法派生出SMK。TA将msg2=(Gb‖SPID‖Quote_Type‖KDF_ID‖SigSP(Ga,Gb))‖CMACSMK(Gb‖SPID‖Quote_Type‖KDF_ID‖SigSP(Ga,Gb))‖SigRL(GID)发给RSU。其中SPID为服务提供商ID,Quote_Type为客户端请求的Quote类型(0x0表示不可链接,0x1表示可链接)。KDF_ID通常为0x1,使用服务提供商的EC私钥计算ECDSA签名得到SigSP(Ga,Gb)。

(4)RSU接收到msg2后,应用程序调用sgx_ra_proc_msg2()函数来生成msg3。该调用执行以下任务。验证TA Enclave的签名、检查SigRL、返回msg3,其中包含用于验证特定Enclave的Quote,msg3=CMACSMK(Ga‖Ps_Security_Prop‖Quote)‖Ga‖Ps_Security_Prop‖Quote。

(5)TA接收到msg3后,需要做以下操作。验证msg3中的Ga是否与msg1中的Ga匹配;验证CMACSMK(M);验证Quote中的前32个字节是否匹配SHA-256摘要(Ga‖Gb‖VK),其中‖表示连接;验证RSU提供的认证证据,验证证据要求服务提供者向IAS提交QUOTE并获得认证报告。该报告由IAS报告签名私钥签名,服务提供者必须使用IAS报告签名公钥验证该签名。TA从KDK派生出128比特的会话密钥,用会话密钥通过该AES/GCM/NoPadding算法加密要传输的主密钥。TA将验证结果和加密的MK作为msg4发送给RSU[15]。

(6)RSU收到msg4后在Enclave中调用sgx_ra_get_keys()获取会话密钥,并调用SGX加密库提供的AES解密函数sgx_rijindael128GCM_decrypt()解密出MK,然后通过SGX密封函数sgx_seal_data()密封MK。

2.4 用户登录认证与密钥协商阶段

在该阶段中,用户首先进行登录,登录成功后进入身份认证阶段,TA、RSU和OBU三方都要进行认证,并协商出会话密钥,该阶段如图3所示。

(1)用户在车辆的设备终端输入登录需要的身份信息,登录验证通过后进入车辆身份认证与密钥协商阶段。车辆在进入车联网区域时,车辆的OBU通过不安全的网络信道将{Q1,M1,SW,t1}发送给RSU。

图3 三方身份认证阶段

3 安全性分析

3.1 重放攻击

协议使用时间戳(t1、t2)来抵抗重放攻击,在每次接收到消息时,会先检查时间戳的新鲜性,如果时间戳不新鲜,丢弃此消息要求重发。

3.2 特权内部攻击

该协议主密钥存储在SGX内,TA中的OBU认证表的内容都经过主密钥的加密,包括存储的会话密钥、OBU的ID等敏感信息,即使内部特权用户获得认证表,也无法获取有效消息。且RSU中的计算都是在SGX中进行,特权用户攻击者也无法窥得该机密计算的过程。

3.3 追踪攻击

该协议使用的变量在每个会话中都是动态变化的,其中的重要参数{Q1,M1,SW},在每一轮的认证过程中都是不同的,包括在TA和RSU之间传输的{W,PVIDi,PFi,PKs,PIDi}也是在认证过后实时更新的。不存在可以一直追踪的常量,因此攻击者无法追踪某个参数进而获取敏感信息。

3.4 窃听攻击

攻击者可以在网络中截获{Q1,Q2,M1,M2,SW,PVIDi,PFi,PKs,PIDi},其中攻击者要想从Q1,Q2中获得敏感信息,需要获取ri,VIDi,但这两个参数不在网络中传输。M1,M2已经被单向哈希函数加密,从中无法获取有效信息。SW经过主密钥的计算,PVIDi,PFi,PKs,PIDi均已经通过主密钥进行加密计算,因此也无法获取有效信息。

3.5 认证表泄露攻击

在该协议中,认证表存储在内存中,假设认证表泄露,认证表中的内容{W,PVIDi,PFi,PKs,PIDi}即使被攻击这获取,他也无法获取有效内容。因为W为随机数,在下一次认证时W也会更新,并且在此次认证后的会话过程中也无法通过W获取到会话密钥或者其他有效信息,{PVIDi,PFi,PKs,PIDi}都已经通过主密钥进行计算,因此也无法获取到有效信息。综上,该协议抵抗了认证表泄露攻击。

4 性能分析

在比较计算成本时,通过模拟实验估算协议中每个实体的计算时间,其中用安卓手机来模拟车辆,用联想笔记本电脑来模拟RSU和TA。两台设备的配置如表1所示,得出的运行时间如表2所示,其中定义th为哈希函数的运算时间,tsym为一次对称加解密的运算时间,te为一次模指数运算的时间。

表2 实验结果 ms

该协议将TA中的主要计算工作卸载到RSU内进行,实现了分布式计算,解决了可信中心(TA)负载过大的问题。在分析计算成本时,需要分别分析车辆(OBU)、路边单元(RSU)和可信中心(TA)的计算成本,其中简单的异或运算⊕小到忽略不计,HAMC签名所用时间与哈希函数所用时间相同。TA将主密钥通过Intel SGX远程认证建立的安全通道传输给RSU,这个操作只在系统远程认证时部署一次,不会在系统运行过程中带来时间消耗。系统中使用SGX主要带来模式切换开销和访存开销,在文献[12]中经过评测得到模式切换开销仅为8μs,访存开销为3μs,故在以下的计算分析中忽略SGX的计算开销。

4.1 计算开销分析

计算消耗的比较结果如表3所示。从表中可以看出,文中协议的计算消耗是最低的,并且实现了TA的计算卸载,因此文中协议在具备安全性的保证下计算耗能也更低,实现了分布式计算,具备车联网协议要求的高效及时性。

表3 计算开销对比

4.2 通信开销分析

在分析通信开销时,假设时间戳的长度为32 bit,随机数、密钥、身份标识的长度为160 bit,哈希函数和对称加解密的输出为256 bit,得出通信开销对比如表4所示。

表4 通信开销对比

在计算开销和通信开销在总成本中占比相等的情况下进行对比,文中协议的计算开销远小于文献[11]的计算开销,与文献[2]相比,文中的通信开销增加了21.59%,但计算开销减少了23.16%。由此得出文中协议优于以上两种协议。同时,文献[2]在模型中设置了多个TA,增加了网络节点。文中协议实现了分布式计算,将TA的计算负载卸载到RSU中完成,同时也没有在网络中增加节点,相较于其他协议降低了成本。

5 结束语

车联网的身份认证协议目前多数使用基于区块链的方式,或者使用复杂的加密运算方式,或是采用在网络中增加云雾节点等方式,使得计算通信开销过大。为了解决这个问题,文中协议在车联网中使用了可信计算(SGX)技术,将TA的计算负载卸载到RSU中完成,实现了分布式计算,大大地降低了TA的计算成本,实现了去中心化的身份认证,通过与现有的认证协议进行对比,该协议的计算开销有所减少。另外,该文采用了SGX技术,将主密钥保存在由可信硬件保护的环境中,并利用主密钥对TA中的车辆关系认证表进行加密,防止了认证表泄露攻击,同时抵御了内部特权用户的攻击。

猜你喜欢

应用程序内存密钥
探索企业创新密钥
外部高速缓存与非易失内存结合的混合内存体系结构特性评测
密码系统中密钥的状态与保护*
删除Win10中自带的应用程序
“春夏秋冬”的内存
谷歌禁止加密货币应用程序
一种对称密钥的密钥管理方法及系统
基于ECC的智能家居密钥管理机制的实现
基于内存的地理信息访问技术
三星电子将开设应用程序下载商店