1.一种车载虚拟钥匙实现及通信方法,其特征在于,包括以下步骤:
S1,首先在车载端与手机端之间构造基于准并矢纠错码的零知识身份认证协议,建立车载端与手机端之间的相互认证机制,并加入了计数器以防止重放攻击;
S2,接着车载端与手机端之间进行会话密钥协商,手机端利用ELGamal算法生成签名及公私钥对,双方进行交换公钥;
S3,最后同时采用蓄电池电压随机特性描述及其真随机数提取方法以建立基于密文属性的一次一密车载虚拟钥匙通信协议,并且在密钥中加入了滚码;
所述S1中,认证双方包括车载端与手机端,其中手机端生成公钥PKphone和私钥SKphone,它向车载端认证自己的身份,认证过程如下:步骤1.1:手机端选取随机矢量 和{1,2,...,n}上的置换函数σ,计算委托c1=h(σ)和c2=h(σ(uG)),设n为计数器,取n=1,把c1,c2和n发送给车载端,其中 为前n数里q个元素的有限域,其中h为哈希函数,G为纠错码C的生成矩阵;
步骤1.2:车载端验证n值,随机生成随机数 发送给手机端,并n计数加1后发送给手机端,其中 表示q个元素的有限域乘法群;
步骤1.3:手机端验证n值,使用α计算委托 n计数加1,将c3和n发送给
车载端;
步骤1.4:车载端验证n值,n计数加1并向手机端发起挑战b∈{0,1}和n;
步骤1.5:手机端验证n值,n计数加1,若b=0,手机端发送 和n,车载端验证委托c1,c3的合法性;若b=1,手机端发送Rsp=(σ(uG),σ(e))和n,车载端验证委托c2,c3和码重wt(σ(e))=w是否正确,e为矢量,w为纠错能力;若验证成功,则证明认证方是合法的手机端,并将手机端的身份、属性信息存储到车载端中,身份认证成功,其中Rsp表示回应消息,m表示随机选取矢量 其中 为前k数里q个元素的有限域;
所述S2中车载端与手机端之间进行会话密钥协商,包括两轮消息:
步骤2.1:由手机端首先发送给车载端消息Message1={IDphone,IDcar,Rand,CSij,n},其中:IDphone和IDcar分别表示手机端和车载端的身份信息;Rand表示由手机端选取的一次性随机数;CSij表示由手机端选取的密钥的密文(C,Sij,L),其中, 和加密用E表示, 即为用密钥k1加密,其中Sij表示
密钥k1,k2, 表示k2的哈希函数;
步骤2.2:当车载端收到手机端发送的消息Message1后,首先验证n值,接着计算密钥Sij=(k1,k2),然后判断等式 是否成立,如果不成立则丢弃该消息,如果成立,那么车载端知道手机端的身份是合法的;
步骤2.3:车载端验证n值后解密获得密钥Sij,计数n+1,构造消息Message2发送给手机端Message2={IDphone,IDcar,Rand,CSij,n};
步骤2.4:当手机端收到车载端发送的Message2后,首先验证n值,接着判断Rand是否为自己选取的随机数,如果不是,则丢弃该消息,否则导出会话密钥Sij,双方会话密钥协商成功;
S2中,手机端利用ELGamal算法生成签名及公私钥对,双方进行互换公钥的具体过程为:步骤3.1:车载端产生一个大素数p,α为 的一个生成元,手机端的私钥为SKphone,通过计算相应的签名公钥PKphone,并用之前的会话密钥加密PKphone发给车载端,其中, 表示模p的整数乘法群;
L
步骤3.2:车载端解密并获得PKphone,随机选择两个互异随机数R和L,通过γ=αmod p,Rλ=αmod p计算得到γ和λ,并将γ和λ保存下来;
步骤3.3:签名明文,利用前两步的结果以及扩展的Euclidean算法和模逆算法,通过式子m=(γ+Lλ+Rδ)mod(p‑1)求出δ,在多次取随机数签名的过程中必须避免取相同的随机数,也要避免随机数之间有简单的函数关系;
步骤3.4:手机端丢弃随机数R和L,得出所需公开的密钥为PKphone,私有密钥为SKphone,明文m的签名为(γ,λ,δ);
步骤3.5:车载端将(γ,λ,δ)分别发送给认证合法的手机端,手机端利用验证明文m数字签名的正确性:若相等,则签名无误,车载端用会话密钥和PKphone对PKcar进行加密发送给手机端;若不等,则签名有误或者传输过程错误;
在上述手机端生成签名以及公私钥对的过程中,同一个明文信息m,对于不同的随机数R和L会得到不同的数字签名(γ,λ,δ),并且都能通过签名方案的最后验证,也就是签名的不确定性,进一步提高了安全性;
S3的具体过程为:
步骤4.1:手机端发起临时会话请求
其中,MSG表示消息,request表示请求, 表示用车载端的公钥加密, 表示用手机端的私钥加密,即用自己的私钥加密后再用车载端的公钥加密发送给车载端,用车载端的公钥进行加密,只有车载端的私钥能解密,用手机端的私钥加密后,车载端用手机端的公钥解密,能确保消息是从手机端发送的,防止了假冒攻击,保证了消息的安全性;
步骤4.2:车载端收到MSG(request,PKphone,IDphone,IDcar),消息后,验证其真实性,若真,则在随机数池里获取n组56位的随机数r1和r2,并且产生与随机数相对应的8位序列号number,number是为了标识产生的随机数,然后用自己的私钥加密随机数和number再用对方的公钥加密发送给对方;
步骤4.3:手机端解密对方发送来的随机数和number,然后根据相同的序列号,通信双方将用随机数后8位用滚码替代,各自计算 因此得到了64位的临时会话密钥SessionK,SessionK前8位为序列号,后56位为加密密钥。
2.根据权利要求1所述的一种车载虚拟钥匙实现及通信方法,其特征在于,所述S1中,所述n值,为了防止假冒节点及重放攻击,加入计数器n,每次传输消息,都要使n+1,双方收到后需要验证n值是否正确,若n不正确,说明消息受到了攻击。
3.根据权利要求1所述的一种车载虚拟钥匙实现及通信方法,其特征在于,所述S1中,所述纠错码为C[n,k,w],码长n,维度k,纠错能力w,余维r=n‑k,码C的奇偶校验矩阵是准并矢矩阵,码C的生成矩阵记作 码重wt(e)≤w的矢量 计算mG+e得到矢量 生成私钥PKphone=(y,G,w),公钥SKphone=(m,e),其中 为前r*n数里q个元素的有限域,其中 为前k*n数里q个元素的有限域。
4.根据权利要求1所述的一种车载虚拟钥匙实现及通信方法,其特征在于,所述S1中,所述身份认证包括,认证协议的每一轮中,证明者手机端和验证者车载端需要进行五次交互;
所述五次交互,在每轮交互认证中验证者车载端可以根据证明者手机端的回答计算出两个委托,证明者手机端计算委托c1,c2的哈希值hc,在协议开始时将hc发送给验证者车载端,在回答阶段,证明者手机端将c1,c2中证明者手机端不能计算得到的委托ci,i∈{1,2}添加到回答中,并发送给验证者车载端;在验证阶段,验证者车载端通过计算和证明者手机端的回答得到两个委托,经过哈希运算后和hc进行比较,判断证明者手机端的回答是否正确;
在实际应用中,证明者手机端可以生成16轮的所有委托c11,c12,...,ci1,ci2,...,i∈{1,...,16},计算它们的哈希值并在第一轮协议开始前发送给验证者车载端;在每一轮的验证阶段,验证者车载端通过计算和证明者手机端的回答得到两个委托并记录下来,直到
16轮结束后计算所有的委托的哈希值,以判断手机端的回答是否正确。
5.根据权利要求1所述的一种车载虚拟钥匙实现及通信方法,其特征在于,所述滚码为一次一密中,随着密钥的替换,滚码也循环地随着替换下一个,i={0,1,2……255}。
6.根据权利要求1所述的一种车载虚拟钥匙实现及通信方法,其特征在于,得到临时会话密钥SessionK,就可以在手机端和车载端之间信息传输进行加密,在每次通信时,都需要向车载端请求下一次的真随机数,在一次通信结束后,临时会话密钥也将丢弃,下次通信时生成新的临时会话密钥。