APP下载

V2X通信中基于椭圆曲线加密算法的身份认证研究*

2020-03-18章嘉彦李如翔李亚林宋佳琦周启扬

汽车工程 2020年1期
关键词:私钥公钥密钥

章嘉彦,李 飞,李如翔,李亚林,宋佳琦,周启扬

(成都信息工程大学网络空间安全学院,成都 610225)

前言

近年来,随着汽车行业的不断发展,汽车与互联网技术开始相结合,形成了车联网。车联网的构建,除了互联网技术,还须借助于各种传感器技术、无线通信技术和自动控制技术等。由于上述技术存在着不安全性,使车联网中的车辆节点比传统网络中的网络节点面临着更多不安全的因素,例如,Douceur提出的Sybil攻击[1],在这种攻击中由于实体缺少身份认证,使一个实体可表现出多重身份而可能对系统进行恶意控制,进而造成严重的交通事故。Thing等[2]提出的In-Vehicle Spoofing攻击,由于对相应设备缺乏身份认证,使对手可能通过用非法的模块组件来代替合法的车内模块组件以至于车辆在进行操作时通过注入恶意的信息从而达到对车辆整体的控制,导致重大事故的发生。2013年在拉斯维加斯的黑客大会上,著名的白帽黑客博士Miller和Valasek通过一定方式对一辆处于高速行驶状态下的丰田普锐斯发起攻击,使车辆在高速行驶时发生制动失灵或突然制动等异常行为[3]。2014年在黑帽子大会上Miller和Valasek公布了一份市场上针对20余款汽车车型的信息安全评估所提出的报告,同年国内的奇虎360车联安全评估小组也首次公布特斯拉汽车所对应的汽车应用程序所存在的响应安全漏洞,黑客可通过该漏洞对汽车执行远程控制并对车辆进行解锁、闪光和在车辆处于驾驶的状态下开启天窗等操作,同时360团队还通过毫米波雷达和超声波雷达来实现对自动驾驶汽车的欺骗操作[4-8],同样被世界公认为汽车安全元年的2015年也先后发生多起汽车被攻击的事件,如雪佛兰系列车型的车载诊断系统(OBD)漏洞使黑客能通过手机短信获得对应车型的最高权限以此来对汽车控制指令进行修改。Samy Kamkar也利用安吉星对4家车企的所对应的车联网APP进行控制,从而获得对应车辆网上所有用户的具体信息[3]。另外由于车联网是无中心节点网络且没有对应的体系架构,加上车辆自身的计算资源有限[9],也使成熟的传统网络防御方案不能应用在车联网当中[10]。

针对上面车联网所面临的威胁和其自身架构特殊问题,许多学者和研究人员提出了许多对应的安全解决方案,其中身份认证作为外来用户进行车联网的第一道“防火墙”,是整个车联网系统通过利用特定的加密体系对于操作实体进行身份有效性和合法性认证;从而确定其是否有权限访问对应的相关资源,最终能很好地实现对系统资源的访问控制和对应的权限管理,防止黑客冒充合法用户对整个网络系统发起攻击[11]。因此,身份认证方案对应加密体系的选择对于整个车联网系统的安全性扮演着至关重要的角色。目前普遍利用公钥基础设施(public key infrastructure,PKI)技术[12]来实现实体完整性和合法性的验证,借助于公钥基础设施技术,车联网中的车辆可方便地与通信运营服务商(telemetics service provider,TSP)和其他车联网的通信单元进行可信交互,防止双方身份假冒和通信信息篡改[13-16]。

RSA是目前使用最广泛的一种公钥加密算法,其常用密钥长度在1 024-4 096 bit之间,其计算对所需软硬件的能力提出了更高的要求;与RSA相似,另一种公钥加密算法,即数字签名算法(digital signature algorithm,DSA)密钥长度在512-2 048 bit之间,被视为是安全、可以接受的;椭圆曲线加密算法(elliptic curve cryptography,ECC),其密钥长度在106-210 bit之间。由于汽车自身计算能力和存储能力有限,使RSA和DSA算法在汽车身份认证领域中的应用变得不现实。现有研究中常见公钥加密体系对比如表1所示[17]。

表1 ECC、DSA和RSA安全等级的比较

近年来随着国内于2004年研制成功基于ECC的SM2国标加密算法,并于2012年3月将其规定为我国商用密码标准;与RSA相比,基于ECC的公钥加密体系密钥长度短、存储空间需求小、传输带宽低和所需逻辑门电路数量少[18],开始逐渐获得国人的关注和广泛的应用,其性能对比如表2所示。

表2 ECC、RSA加密体系的比较

由于汽车本身的计算资源较少,无法应付大计算量的计算,故本文中提出了一种基于ECC的公钥加密体系,并将其应用到智能网联车升级系统中,以期在升级过程中能很好地抵御攻击,并有效保证数据包的完整性和发送方的合法认证。

1 车联网概要介绍

车联网,其通信场景主要由车—车、车—路、车—人和车—云4部分组成,其具体通信场景如图1所示。

图1 车联网通信场景示意图

车联网中的汽车节点由于自身具有一定的计算与存储能力,所以车联网又可被称为车载自组织网络(vehicular ad-hoc network,VANET),车联网通信场景中的节点由于具有高速移动性和瞬时性,所以车联网的网络拓扑动态性较强。车联网的身份认证体系常由以下部分组成。

(1)认证机构(certificated authority,CA)

为确保车联网组织架构的正常运行,通常须引入第三方可信认证机构CA,该认证机构通过存储对应区域内所有用户的身份信息,并对其所属区域的路侧单元(road-side units,RSU)进行管理;能很好地实现对汽车与RSU交互真实性和完整性的保证。通常CA所须完成的是对区域内RSU的管理和车辆节点加入时对其进行分发/撤销证书的管理;CA通常保存有区域内所有经过认证车辆节点的具体信息,负责维护整个网络拓扑范围内的通信安全。

(2)路侧基础单元

该设备通过无线通信的方式与车辆节点或CA进行信息的交互;在汽车到CA处进行注册时,CA会将对应的公共参数和其自身的数字证书(如ID信息、公私钥对、身份信息和属性信息等)加载到RSU的存储模块中;RSU在接收到路面行驶车辆所发送来的认证或服务信息时,通过内部存储模块所存储的公私钥对和其计算模块来实现对汽车的身份信息进行对应的计算认证[19-20]。在通过合法性验证后,RSU则会向对应的汽车节点提供相应的服务。每个RSU都归属于区域内的CA进行管理。设定RSU,大大降低了CA的通信负载量。

(3)车载单元(on-board units,OBU)

每辆汽车上都装有一个OBU,用来存储其对应的数字证书(如ID信息、公私钥对、身份信息和属性信息等),然后汽车在行驶时利用OBU中存储每辆车的数字证书和对应的通信协议来实现与RSU的数据交换。目前基于车联网的通信协议通常是采用802.11p的专用短距离通信技术(dedicated short range communications,DSRC)和车间通信长期演进(long term evolution-vehicle,LTE-V)来实现。

2 V2X中基于ECC椭圆曲线算法的身份认证研究

2.1 公式符号定义

本文中所使用的公式参数和车辆相关详细参数定义如表3所示。

表3 方案中所用符号

2.2 CA初始化

CA负责生成系统参数,选定一个大素数p,Fp为阶为p的一个有限域;CA在有限域上定义一个椭圆曲线 c,其中曲线方程为 y2=x2+ax+b(mod p),选择参数 a,b,x,y∈Fp,且 a与 b要满足 4a3+27b2≠0(mod p);E为域Fp的所有有理点所构成的加法群,n为该加法群的阶数;G为椭圆曲线的基点,并选择两个安全的 Hash函数 H1{0,1}→Z*;H2{0,1}→Z*。CA会随机选取r∈[1,p-1]作为自己的私钥,并计算Ppub=r·G作为自己的公钥;最后,CA会公布自己的参数{E,n,Ppub,G,H1,H2},并将该参数分发至对应的路边单元RSU中。

2.3 RSU初始化

CA通过安全的通信协议为其管理区域的每个RSU分配对应的公私钥对:Sr=r·H1(IDr)和 Pr=r·G·H1(IDr),并以广播的形式对外公布其参数。

2.4 车辆的初始化及其与CA之间的身份认证

由于汽车在与RSU或其他汽车进行通信之前,须使用相应的公钥数字证书认证后才能完成相应的通信过程,而公钥数字证书是由CA颁发的,所以下面分别对汽车的参数初始化过程及其与CA之间的交互认证过程进行描述,如图2所示。

图2 汽车初始化认证

(1)汽车→CA

Engv||Pv-pub||IDEng||TS1:车辆在行驶之前需要到CA处进行注册;通过下载到对应CA的参数。在对应有限域Fp上随机的选取一个素数s∈[1,p-1]作为自己的私钥,并在有限域上Fp选择对应的一个基点G′,通过计算Pv-pub=s·G′来生成汽车对应的公钥,并计算IDEng=Es[H1(Engv)]。此时,汽车将自己的发动机号Engv、自己的公钥Pv-pub、临时汽车身份标识IDEng和一个时间戳TS1通过安全的信道发送给CA。

(2)CA→汽车

EPv[RIDv||Certv||Ksession||TS2]:CA首先验证Tsec-TS1<ΔT,其中 Tsec为消息接收到的时间,ΔT为对应车联网中最大的传输时延。若验证通过,CA利用H1对汽车的发动机号进行计算,若比较H1(Engv)与IDEng相等,则根据对汽车的发动机号进行计算 RIDv=H2(Pv-pub‖Engv),生成汽车的真实身份RIDv。CA生成对应的临时签名密钥z并用相应的参数进行签名运算Signv来生成对应汽车的数字证书,同时生成一个会话密钥Ksession,然后用自己的私钥r对证书进行加密,连同时间戳TS2发送给对应的汽车。

(3)汽车接收到CA消息并对消息进行验证

汽车在接收到来自CA的消息后,会使用自己的私钥对消息解密,并对消息中包含的时间戳TS2进行验证计算。通过验证后,汽车用CA的公钥对签名信息解密,获得会话密钥Ksession;并对签名消息进行有效性验证;验证通过后存储相应的证书、会话密钥Ksession和车辆的真实身份RIDv。

2.5 车辆与RSU之间的身份认证

汽车在进行对应RSU所属区域时,若需获得对应区域的服务时,须与区域内的RSU进行通信来进行消息的交互。在通信之前先需要与RSU进行如下的身份认证过程,如图3所示。

图3 汽车与RSU之间的认证过程

(1)汽车→RSU

RIDv||Pv-pub||Certv||TS1:汽车进行对应 RSU所管辖的区域内,先将由CA所颁发的RIDv、自己的公钥Pv-pub、相应的证书Certv和时间戳TS1发送给对应的RSU。

(2)RSU→CA

RIDv||Certv||Pv-pub||Pr||TS2:对应的 RSU在接收到对应汽车A所发送过来的认证消息后,首先验证时间戳TS1是否满足可接受时延以抵抗重放攻击,验证通过后,RSU会将汽车的RIDv、CA签发的证书Certv、汽车公钥Pv-pub、时间戳TS2和自己的公钥Pr发送给CA。

(3)CA→RSU

EPr[Pv-pub||Pr||Ksession||Certv||RIDv||TS3||EPv-pub(Pr||Ksession||Certv)]:CA接收到由 RSU所发送过来的数据包后,首先验证时间戳TS2是否满足可接受时延以抵抗重放攻击,验证通过后,CA会对汽车的身份RIDv和证书Certv的有效性进行验证,验证通过后,CA会产生一个会话密钥Ksession,生成对应的数据包:EPr[Pv-pub||Pr||Ksession||Certv||RIDv||TS3||EPv-pub(Pr||Psession||Certv)]发送给 RSU。

(4)RSU→汽车

EPv-pub(Pr||TS4||Ksession||Certv):RSU在接收到CA发来的消息后,用自己的私钥解密数据包,首先验证时间戳TS3是否满足可接受时延以抵抗重放攻击,通过验证后完成了RSU对于汽车的认证,并将对应的 Kv-pub、Ksession、RIDv和 Certv进行保存,并将EPv-pub(Pr||TS4||Ksession||Certv)转发给汽车。

(5)汽车接收到RSU消息并对消息进行验证

汽车接收到RSU发来的数据包后,首先验证时间戳TS4是否满足可接受时延以抵抗重放攻击,验证通过后用自己的私钥对数据包进行解密,获取到RSU的公钥 Pr和对应的会话密钥 Ksession,完成对RSU的认证。

2.6 车辆与车辆之间的安全通信

汽车之间的通信认证过程如图4所示。

图4 汽车之间的通信认证过程

(1)汽车A→汽车B

PA||TS1||Certv:汽车 A与 B之间进行通信时,首先需要到CA处下载对应的系统参数,通过选定一随机数sA做为自己的私钥,并计算PA=sA·G作为自己的公钥,而消息发送方的汽车A通过将自己的公钥PA、时间戳TS1和由CA所颁发的证书Certv发送给消息接收方的汽车B。

(2)汽车B→汽车A

PB||TS2||Certv:汽车 B同时也通过利用 CA获得对应的系统参数,在接收到来自汽车A所发来的信息时,首先验证是否满足Tsec-TS1<ΔT,验证通过后汽车B通过使用CA的公钥Ppub对证书的有效性进行验证。在通过验证后,汽车B将汽车A的公钥PA进行保存,同时按照步骤(1)生成自己的私钥sB和对应公钥PB,然后将自己的公钥PB、时间戳TS2和由CA所颁发的证书Certv发送给汽车A。

(3)汽车A→汽车B

Es-A[EPs(M)||K]||TS3:汽车 A接收到来自汽车B所发送的信息后,同样首先验证是否满足Tsec-TS2<ΔT,验证通过后使用CA的公钥Ppub对证书的有效性进行验证,通过验证后汽车A会将汽车B的公钥PB进行保存。在汽车A需要发送消息M给对应的车辆时,利用协商好的摘要函数和会话密钥生成算法分别计算消息M的摘要值和生成对应的会话密钥Ksession;本文中采用的是MD5算法计算其摘要值m:m=Hash(M),并用会话密钥对消息M进行加密,然后用自己的私钥对会话密钥和摘要值进行加密;最后将加密后的数据包和时间戳TS3发送给汽车B。

(4)汽车B→汽车A

Es-B[E||TS4]:汽车 B接收到来自汽车 A发送的消息后,先验证是否满足Tsec-TS3<ΔT,通过验证后,利用约定好的会话密钥生成算法生成对应的会话密钥Ksession,利用汽车A的公钥PA和会话密钥Ksession对消息进行解密,获取消息实体M和摘要值m,汽车B同样利用MD5算法对消息进行计算,将结果与摘要值m进行计算,若相等,则接受消息M并回复汽车A以一个答复E和时间戳TS4,其中E=Es-B[Ack]。

(5)汽车A接收到汽车B的消息并对消息进行验证

汽车A接收到汽车B发送的消息后,用汽车B的公钥PB解密消息,先验证是否满足Tsec-TS4<ΔT,通过验证后获得确认答复。完成消息的传输过程。

2.7 测试

综上所述,基于ECC的公钥加密体系利用完全指数级的运算实现了在密钥长度较短的情况下达到与当前所流行的RSA公钥加密体系同样的安全等级。为验证实验是否达到预期,在某汽车的车载远程信息处理器(telematics box,T-Box)中进行了相应的加密时间评估实验。

由实验结果可知,在RSA加密体系下要实现与ECC相同的安全等级,由于密钥长度过大,需要花费6 s的加密时间;而用ECC来实现对应同样安全等级由于所需的密钥长度较短,所以其加密时间仅为1.1 s;可知用ECC来实现加密认证时间比RSA公钥加密体系更容易被用户所接受。此外,通过利用信息摘要技术,能有效保证数据的完整性和有效性,并抵御篡改攻击和伪造攻击等;同时,为每条信息加上时间戳,能有效抵抗重返攻击等常见攻击。总之,将基于ECC的公钥加密体系应用于车联网中,能实现以较高的效率和速率完成身份认证过程,并能很好地应对车联网中常见的攻击。

3 结论

随着车联网的普及,它在给人们带来方便和舒适的同时,也给人们带来了极大的安全隐患。因此车联网用户的合法性越来越受到汽车使用者的关注,基于本文所提出的基于ECC的车联网身份认证技术,能以较高的安全性保证汽车通信双方的合法性,同时也能在一定程度上解决车联网中常见的假冒攻击和重放攻击等其他攻击。既保证了通信双方的合法性,又保障了汽车使用者的生命安全。

猜你喜欢

私钥公钥密钥
比特币的安全性到底有多高
幻中邂逅之金色密钥
幻中邂逅之金色密钥
Spatially defined single-cell transcriptional profiling characterizes diverse chondrocyte subtypes and nucleus pulposus progenitors in human intervertebral discs
程序员把7500枚比特币扔掉损失巨大
神奇的公钥密码
Android密钥库简析
国密SM2密码算法的C语言实现
基于身份的聚合签名体制研究
一种新的动态批密钥更新算法