卢 阳 刘书勇 李 嘉 田东博 王国栋
1(南瑞集团有限公司(国网电力科学研究院有限公司) 江苏 南京 211106)2(中国电力科学研究院有限公司 北京 100000)
近年来国家对新能源产业的大力推广促进了电动汽车的快速发展[1],并加快了充电桩等基础设施的建设。由于充电桩的运营方式在面向小区、地下停车、偏远地区等复杂环境下推广存在数据通信不兼容、通信设备成本高、用户体验不佳等问题,目前充电桩设备的离线通信大都采用蓝牙方式[2]。蓝牙规范中包括四种安全模式,分别提供不同方式、不同程度的保护措施[3]。由于在蓝牙通信过程中,只进行了设备认证,没有进行身份认证,蓝牙设备和传输通道存在被攻击的风险。如采用二维码方式进行蓝牙连接时,二维码扫描无法解决双向认证的问题,也无法实现动态密钥更新,更无法防止伪造(二维码与设备无法绑定,任意人都可以拍照打印再贴于别处)。身份认证是保障一个双方通信安全最根本的前提,通信各方必须通过相应的身份验证机制才能将明确自身的访问权限[4]。随着互联网技术的快速发展,物联网的应用越来越广泛,但同时伴随着一系列安全隐患。在物联网环境下,终端要进行正常的数据采集,首先要确保信息来源的真实性[5],这就对物联网控制系统的身份认证机制要求更为严格,以确保接入设备的合法性。身份认证其实就是通信双方都知道彼此的身份信息,能够建立起来可信关系,保证数据在起始点的可靠性。身份认证技术可以在提升物联网便捷性的同时保证数据通信安全。
近几年已有多种物联网相关的身份认证技术被提出[6-11]。朱炜玲等[6]提出使用对称加密算法进行身份认证,虽然其计算成本低,消耗资源少,但还是容易遭受到中间人攻击。基于椭圆曲线加密身份认证则需要大量的存储资源、通信资源和计算资源,对于计算能力受限的传感器网络来说不适合。朱鹏飞等[7]提出一种轻量化的消息认证码方案,具有开销小、防重放、可追溯等特性,但是需要适应多种类型的消息认证码生成设备,不易扩展。有学者进行物联网身份管理的技术研究[8],提出一种物联网身份管理框架,但需要多方的共同参与并针对目前的框架进行改造。而国外学者Gentry[9]在2003年给出了基于证书的认证体制,将公钥加密体制和基于身份的加密体制各自的优势进行结合,但是需要频繁的证书更新,计算量大,认证效率低下。文献[10]提出使用基于委托的机制,这种方式虽然计算成本低,但是不能轻易实现私有存储。文献[11]提出了一种全新的身份双向认证机制,通过加入ID身份信息和初始工作状态信息进行身份的合法性认证,但是需要定时更新工作状态信息,明显增加用户交互次数。基于标识密码体制IBC技术能够实现身份认证,将用户唯一标识作为公钥,并计算生成相应的私钥,简化与用户的交互次数,且无需证书管理。SM9算法则是基于标识密码体制IBC技术的,是我国商用密码行业公钥密码算法中的一种标准算法。
本文设计了一种基于SM9标识密码体制的智慧能源充电桩蓝牙安全防护方案,实现蓝牙通信中的身份认证。蓝牙安全中的安全是靠蓝牙的AES密钥保护,SM9可保护该AES密钥并且实现动态更新,还可以用于双向认证。本文利用蓝牙通信已有的安全机制,增加移动终端与能源路由器间双向认证,并协商生成随机的会话密钥,实现传输业务数据的加密保护。
在充电桩系统中,用户主要利用个人移动终端App通过4G/5G等网络连接到智慧能源服务系统获取有序充电、充电桩分享等业务服务。在网络信号较差的情况(离线)下,则通过蓝牙通信方式与能源路由器建立通信连接,将充放电等业务需求提交给能源路由器,然后送达给智慧能源服务系统。
本文主要分析离线场景下的智慧能源充电桩安全防护,其总体框架如图1所示。安全防护系统将以安全标识服务系统为中心,基于SM9标识密钥算法,为终端侧、智慧能源服务系统提供安全保障。
图1 智慧能源充电桩蓝牙安全总体框架
基于身份标识的密码系统(IBC)的密码学思想是由Shamir[12]在1984年提出的。在该体制中,公钥就是用户的身份信息,如主机的IP地址、用户的E-mail地址、手机号码和姓名等,可根据用户的唯一可标识的信息获得。密钥生成中心(KGC)根据用户的身份信息生成用户私钥,并通过安全通道将私钥发送给相应的用户。由于用户的公钥是通过身份信息直接计算得出,且用户标识具有唯一性,因此不需要第三方机构(CA)来保证用户公钥的真实性,可以解决传统公钥密码体制中CA机构带来的证书存储和管理问题,减轻系统的通信开销和存储开销。
2016年,中国标识密码SM9算法正式对外发布,它是一种基于双线性对的标识密码体制,采用实体的有效标识作为公钥进行加密[13],是我国商用密码行业公钥密码算法的一种标准算法,并已成为国际标准算法。由于IBC技术灵活易用和方便管理的特点,SM9算法的应用需求十分旺盛[14]。SM9算法不需要向CA机构申请数字证书,适用于互联网应用的各种新兴应用的安全保障。如电子邮件安全[15]、系统安全防护[16]、智能终端保护[17]、物联网安全[18]、云存储安全、区块链隐私保护[19]等。这些安全应用可采用手机号码或邮件地址等用户身份唯一标识作为公钥,实现数据加密、会话加密、通道加密、身份认证等安全应用,并具有使用方便,易于部署的特点,且终端侧不需要存储证书,减少终端存储。
安全防护系统的主要设计流程包括充电桩设备初始化,App用户注册以及蓝牙安全交互连接。其中充电桩设备的初始化是由安全标识服务系统给安全芯片/充电桩设备分发标识和私钥,包括配置系统公钥及参数,设置出厂配置等初始化的过程;App用户注册也是通过安全标识服务系统生成用户标识和用户私钥,并将密钥安全地存储于手机端本地;蓝牙安全交互连接则是在前两个流程的基础上,建立蓝牙安全连接通信,并使用SM9标识密钥算法进行充电桩设备与手机App之间的双向认证,最后生成会话密钥进行数据通信。
充电桩设备初始化分为三个部分:初始化安全芯片,充放电设备注册,充电桩设备出厂配置。其中安全芯片可嵌入到充放电设备中。
3.1.1初始安全芯片
安全芯片在提供给厂家的时候需要在安全芯片内部预置一些数据,如初始业务配置数据、IBC系统公钥、初始标识ID及其对应的SM9私钥等,私钥由标识管理系统生成。
安全芯片初始化流程如下:
1) 读取安全芯片的CID,获取芯片的唯一标识。
2) 调用标识管理平台,生成安全芯片应用初始标识ID、系统参数及SM9私钥。
3) 将安全芯片应用初始标识、系统参及私钥写入安全芯片。具体过程如图2所示。
图2 初始化安全芯片流程
3.1.2充放电设备注册
充放电设备第一次上线工作的注册过程需要和后台交互的各个流程,包含安全芯片的注册过程、数据封包/解包、更新等,更新记录完成以后,充放电设备即可进行业务数据的交互。其中充放电设备首先需要与标识管理平台建立可靠稳定的网络连接。注册流程如图3所示。
图3 充放电设备注册流程
1) 充放电设备端对设备信息进行签名,如IMEI、IMSI、CID、PointID(具体含义查看表1),并将信息和签名值S发送给认证平台进行验签。
表1 充电桩蓝牙安全防护字符含义
2) 认证平台验签通过后,机卡绑定,并通过标识管理平台,生成正式标识PointID及私钥。
3) 将PointID和私钥,使用系统公钥进行加密(保护密钥在传输过程中的安全),并发送给充放电设备。
4) 充放电设备解密后写入标识和密钥。
3.1.3充电桩设备出厂配置
充电桩设备出厂时,基于安全标识服务系统给每个设备分配交互标识和唯一标识,并生成充电桩设备的交互私钥和唯一私钥,并与设备中的蓝牙模块的连接地址、初始配对口令及其他敏感信息存储于该设备的安全芯片中;同时,以交互标识为公钥对蓝牙地址和充电桩设备的其他敏感业务信息进行加密,与交互标识共同存储于二维码中,并将二维码张贴于充电桩设备上。
手机App用户注册登录时,经过用户身份合法性校验之后,可将蓝牙默认口令及用户可连接的充电设备标识信息及其对应的交互私钥下发给手机App。同时,通过安全机制生成用户标识和用户私钥,并通过安全SDK技术进行手机端本地存储。
图4为App用户注册的流程图,具体过程如下:
1) 下载手机App,并预置初始数据:SM9系统参数,平台标识,生成SM2公私钥对。
2) 向用户中心发送短信验证请求。
3) App端提交短信验证,并将用户基本信息及系统参数等发送到用户中心。
4) 用户中心验证短信验证码,并将用户基本信息及系统参数发送至统一认证平台。
5) 统一认证平台进行验签,通过后根据手机号向标识管理平台生成用户的标识及私钥。
6) 将标识申请结果返回App,更新密钥状态。
7) 设置App用户密码,完成用户注册。
图4 App用户注册流程
蓝牙安全交互连接是整个安全防护系统中的主要部分,主要是在建立起蓝牙安全通信连接后,使用基于SM9标识密码算法进行移动终端与能源路由器间双向认证,认证过程中通过引入了双随机数的方法,大幅提升了每次会话内容的不可预见性,且采用时间戳保证数据的有效性。认证通过后协商生成随机的国密加密算法密钥,实现传输业务数据的国密加密保护。充电业务蓝牙安全交互连接流程如图5所示。
图5 充电业务蓝牙安全交互连接流程图
1) 手机App扫描充电设备上的二维码,获取二维码中的交互标识和充电设备蓝牙地址等敏感信息的密文。
2) 解密二维码数据,手机App基于交互标识所对应的私钥解密上述密文,获取蓝牙地址和初始配对口令;如解密失败则不予连接。
3) 解密二维码成功后,则确认二维码合法,进行蓝牙连接。若配对口令未更新,则输入初始配对口令并连接蓝牙;若充电设备的配对口令已更新且手机App也已更新,则由App完成配对口令自动填入并连接蓝牙;若充电设备的配对口令已安全更新但手机App未更新,则可通过传统通信方式询问系统或充电设备拥有者,再手动填入并连接蓝牙。
4) 蓝牙建立连接后,通过蓝牙通信建立安全通道,充电设备和手机App分别通过自身的唯一私钥进行服务签名,对方使用接收到的唯一标识进行验证,以完成双向认证,在此过程中同时完成一次性的传输密钥协商。认证流程:
(1) 手机SDK将参数(用户标识、时间戳t1、随机数r1、PointID)使用用户标识进行SM9签名。
(2) 手机SDK将(用户标识、时间戳t1、随机数r1、PointID)及其SM9签名值,并携带用户token,发送给充放电设备。
(3) 充电桩设备验证token;再验证时间戳t1;通过后,使用用户标识进行SM9验签;验证通过后,将(用户标识、时间戳t2、随机数r2、PointID)使用充电桩PointID进行SM9签名。
(4) 将(用户标识、时间戳t2、随机数r2、PointID)及其SM9签名值发送给手机SDK。
(5) 手机SDK使用PointID进行SM9验签;验证通过后,产生随机SM4密钥SeedKey,并使用PointID将密钥加密,发送给充放电设备。
(6) 充放电设备进行SM9解密,得到对称会话密钥。
5) 后续采用对称会话密钥进行数据的通信加密。
系统目前已完成Demo开发,相关概念已在国网电动车充放电项目中进行试验并测试。实验中,充电桩设备采用嵌入安全芯片的蓝牙通信开发板进行模拟,基于NB-eSAM体系架构,支持国密非对称算法SM2、国密对称算法SM4、基于身份标识的SM9算法;App及所需的SDK采用Android Studio环境进行开发模拟;而安全标识服务系统基于JAVA环境开发,采用微服务架构,并部署在linux环境下;智慧能源系统也是基于JAVA环境开发的,简单模拟实际的业务场景。实验结果将从响应时间和交互次数上分别进行比较。
表2为本交互方案标识生成、私钥下发、双向认证及业务数据加密上报下发的响应时间。可看出本文方案提出的基于SM9的标识密码体制在响应时间上要比文献[7]和文献[9]都快。
表2 响应时间对比 单位:s
在双向认证过程中即可实现用户身份鉴别。本文交互方案基于SM9的标识密码体制,在密钥协商过程中,与用户交互总次数为3,在交互次数上明显低于文献[7]和文献[9]。文献[7]提出的基于SM2的PKI体系方式进行身份鉴别,至少需要5次用户交互,其中至少需要2次公钥验证。而文献[9]需要定时更新工作状态信息,因此交互次数至少大于3次。
表3 交互次数对比
本文离线场景下的智慧能源充电桩蓝牙交互存在的安全风险,提出了基于SM9标识密码算法的蓝牙安全交互体系,使用用户唯一标识作为公钥,并计算生成相应的私钥,简化与用户的交互次数。在蓝牙已有的安全机制下,增加移动终端与能源路由器间双向认证,并协商生成随机的国密加密算法密钥,实现传输业务数据的国密加密保护,促进和提升蓝牙在智慧能源充电桩中的安全应用。