车辆防盗系统无证书加密方式的研究
2018-10-22黄昊旻宋景姚固文
黄昊旻,宋景,姚固文
(贵阳学院机械工程学院,贵州 贵阳 550000)
前言
当前市场上出现了只需缴纳较少押金或者不需要缴纳押金就可以获得车辆一定期限内的使用权的共享汽车,这在一定程度上对市民的出行提供了便利方式的选择。据统计截止2017年国内在运营的共享汽车已有4.5万辆,在共享经济理念的推动下,共享汽车近几年呈快速发展趋势[1]。
根据共享汽车的共享性,要求车钥匙要具备便利性,能实现租赁人随时随地可获得钥匙;也正因为共享性,为确保车辆财产的安全要求每次租赁人在使用完车辆后,钥匙应该失效。目前共享汽车普遍采用的方式是对车辆进行权限分级管理方式,即通过手机方式获取车辆进入权限,然后再通过短信告知车辆钥匙位置获取车辆启动权,或者部分车辆是直接通过一键启动方式启动车辆。可以看出这种方式对车辆的财产安全来说这是一种弱保护,因此如何提高共享汽车的保护强度,真正实现车辆钥匙的虚拟化,这对共享汽车的财产安全带来了思考。
为实现车辆钥匙的虚拟,可以考虑采用无证书验证的方式来实现,在无证书加密方式中椭圆曲线加密是一种较复杂的方式,对车辆保护带来了极大的保障,从破译角度来说也增加了许多难度,不过正由于椭圆曲线加密算法的复杂,也带来了在工程应用中实现比较难的问题,如何在车辆防盗系统中实现椭圆加密算法正是文章进行的思考。
1 椭圆曲线原理
椭圆曲线是域上光滑射影曲线,形为式1的方程。
在等式中(1)中有
即:
通过式(2)和(3)可以发现,如果已知λ与 a,根据加法法则求b相对而言比较轻松,但是如果知道的是b和a求λ则相对困难,因为这时候变成了乘法逆运算,相比加法而言除法运算具有了一定难度,加法的运算过程可以看作为加密过程,乘法的逆运算过程可以视为解密的过程[2]。正是这个困难的产生机制就正好成了椭圆曲线加密设计。
假设椭圆曲线上的两个点为P,Q则坐标为:P=(x1,y1),Q=(x2,y2)[2]。用直线将P,Q两点连接起来,延长线与椭圆曲线相交于另一点,记为R,那么R就是P,Q两点的点加值。如图1所示,R点坐标记为(x3,y3)。
如果x1=x2,则有两种情况,第一是假如y1=- y2,则曲线上每点值在x轴上;第二是假如y1=y2≠0,此时P=Q。
借用特征为2的有限域GF(2m),对实现椭圆曲线加密的硬件处理来说更为高效,表示二进制元素较为直观。
式中(am-1…a0)为元素的二进制串,用多项式基表示元素后,二进制域上元素基本运算规则是:
加法运算表达为:
乘法运算表达为:
求逆来说,对于有限域中的一个元素 e(x),如果可以找到一个元素r(x)使得式(13)成立则r(x)是元素e(x)的逆。
2 加密的流程设计
无证书身份的加密方案可由建立、密钥提取、加密、解密四步构成[3]。
第一,建立。输入可靠安全的参数λ,经过密钥发生器(PKG)输出可以公布公共参数(PK)和自己保留的主密钥(MSK)。
第二,密钥提取。把前步所得到的公共参数(PK),主密钥(MSK)和能表达自己身份信息的ID参数输入,经过密钥发生器(PKG)计算,输出得到自己身份信息所特有的密钥(SKID)。
第三,加密。把需要发送的明文(M)与公布的公共参数(PK)以及明文接收者的身份信息(ID)一同输入,仍然经过私钥发生器(PKG)计算得到了加密的密文(CT)。
第四,解密。当密文接收者需要阅读明文时,输入公共参数(PK)及自己特有的密钥(SKID),经过密钥发生器(PKG)计算则输入了发送的明文让接收者阅读。
3 车辆中实现方案的设计
为确保后续的工作能有序开展,预先对加密算法如何在车辆中实现进行方案设计,主要的构想方案与当前车辆采用的方案一致,以虚拟钥匙的方式作为车辆防盗启动与解除的方案,用户通过钥匙发送车辆状态信息,接收芯片对钥匙发出的信息进行解密配对,如果配对成功,车辆启动成功。详细见图2方案设计架构。在方案中,车辆的虚拟钥匙拟采用蓝牙传输的方式进行信号发送,当车辆钥匙发出信号时,实际上是通过钥匙发出自己特有的密钥向解密芯片提出解密请求,车辆内安装的芯片接收到相关信息后,通过解码模块完成身份的对比,如果身份验证成功则视为信号有效,完成对车辆防盗系统的启动或关闭,具体结构见图1硬件结构图。
图1 硬件架构图Fig.1 the structure of the hardware
图2 方案设计架构Fig.2 the structure of the design
从提出的设计方案来看,为实现车辆椭圆曲线加密算法,首要的工作在于对车辆内预先安装的芯片如何实现相关运算的进行设计。
4 芯片的结构设计
椭圆曲线加密算法,从实质上来说属于数学运算,这么一来,为实现椭圆曲线的加密运算,选用了主控、运算控制、运算、存储四个模块来完成[4]。
图3 芯片模块组成Fig.3 the structure of the chip
四个模块中,分别承担不同任务,确保在实现的运算过程中正常有序,详见结构图 3。首先,主控模块把加密运算中的每一个操作步骤进行编码并把每个运算动作细分传送给运算控制模块。然后运算控制模块根据主控模块的的指令,把信息转化为下一步运算模块能识别的信号,传给运算模块,让运算模块根据传递过来的运算时序完成运算并输出结果,这期间由于信息的步骤繁琐,就需要存储模块把相关信息进行存储,便于下一步操作时,数据的随时调用。通过运算模块的结构可以看到,运算模块由四个小模块组成[5],详见图4运算模块结构图。运算模块接收到的操作指令信号主要来于运算控制模块,运算模块根据信号完成相应的数学运算,当运算完毕后并向运算控制模块发送信息,使得运算控制模块发送下一步执行动作,在运算过程中运算模块所需的运算数据是通过对存储模块的读写操作来完成的数据传递。
完成模块的任务划分后,对相应模块进行端口信号的定义,以方便后期仿真的操作。对欲实现的Koblitz曲线的运算,曲线中点乘法的运算可以转为平方根来进行计算,故在运算模块中没有点乘的运算处理。
图4 运算模块结构Fig.4 structure of the computation
整个系统主要是由控制模块来进行控制,运算模块中,每完成一次的运算后,均会把每次计算出数据对存储模块进行读写,同时也会在控制模块指令下读取新数据。直到运算模块接收到了运算结束指令为至,运算任务才算完成。
5 结论
椭圆曲线加密和现在车辆上常见的加密方法相比,有着安全性高、占用存储空间小、密钥长度更短等优点。在车辆防盗的思路中,运用椭圆曲线的加密方法,首先可以确保车辆的门锁和解密器之间可靠的一一对应关系,其次椭圆曲线加密方法在公钥上是公开的但在解码过程中密钥是不可见的,所以保密性极高。因此在车辆防盗中引入这种加密方法可以极大提高车辆被盗的难度。
在硬件搭建过程中,文章有几点启示:
(1)通过对芯片运算过程的仿真基本实现了椭圆曲线加密和解密过程,过程中运用的是一个256位数据通过32位接收宽度的8周期数据传递完成仿真,因设计的主要对象是考虑在汽车防盗系统中进行应用,所以根据对车辆防盗系统的正常操作时间为参考样本,没有进行更高位数据传递加密解密的运算操作,不过可以明显看出就目前256位数据的传递相对当前车辆的防盗系统操作时间而言都具有一定差距,因此在运算过程中存储模块数据优化的程度,决定了到整个运算过程实现的快慢,所以存储模块要对数据进行较好的优化。
(2)在运算过程中,假如运算状态较为复杂时,因无法准确得知操作完成的周期数,要注意检测返回的运算结束信号是否有效。
(3)在本次的方案设计中,主要是以车辆防盗系统的角度进行考虑,故没有考虑多驱动的问题,但此类问题可以通过在运算模块和存储模块之间加入数据流的控制模块,确保数据的准确性来解决。