Car Connectivity Consortium Digital Key Technical Specification 学习笔记(3)SPAKE2+算法

Car Connectivity Consortium Digital Key Release2 Technical Specification 中配对的过程即手机和车辆的配对的过程,也是用户手机成为车辆的数字钥匙的过程,所谓安装汽车电子钥匙其实也就是安装相应的密钥证书,但是在用户手机都没有安装相应的密钥证书的情况下,如何建立信任,形成安全通道呢?

Car Connectivity Consortium Digital Key Release2 标准的手机钥匙配对流程采用了SPAKE2+算法用于生成共享密钥,建立安全通道。

一个实际的典型的使用场景如下:

  1. 用户下载汽车电子钥匙APP,并通过安全的方式得到一个开通密码,然后在手机上输入密码;
  2. 用户将手机放在汽车的中控台的NFC读卡器上,汽车对手机进行认证,认证通过后则执行手机密钥证书安装工作,安装成功后,手机成为汽车电子钥匙,可执行标准交易和快速交易。

以上的使用场景包括了SPAKE2+的应用,SPAKE2+是一种增强型的密钥共享(PAKE,Password Authenticated Key Exchange )的方法,它的算法和流程如下图所示:

Car Connectivity Consortium Digital Key Technical Specification 学习笔记(3)SPAKE2+算法_第1张图片

如上图所示,可同时参考CCC Digital Key R2标准18章和附录D的内容。标准所采用的SPAKE2+算法的应用可以分成三个大步骤,分别是:共享密钥前的生成预处理、共享密钥的生成和共享密钥生成完成后的后续处理:

首先、共享密钥生成前的预处理,包括上图中的Step1-1和Step2-1 :

Step1-1和Step2-1是一个基于密码password生成共享密文(w0,w1)的过程,这个计算过程本质是基于预设的参数的哈希计算,计算细节参见标准18章和附录D,w0和w1长度是32个字节,且不相等;基于同样的计算过程,后台服务器和手机端都计算得出w0,w1,同时后台服务器基于G(选定的ECC参数)和w1生成L,后台服务器将L,w0传输给车辆端。

其次、共享密钥生成的流程,包括上图中的 Step1-2,Step2-1Step1-3,Step2-3, Step1-4,Step2-4,Step1-5,Step2-5的前一部分:

  1. Step1-2,Step2-1: 车辆和手机端各生成一个随机数x,y;
  2. Step1-3,Step2-3:则是通过x,y分别计算得出X,Y然后交换,第三方无法从X和Y中获取x,y;
  3. Step1-4,Step2-4: 车辆和手机双方按图中计算步骤结合选定ECC参数(G,M,N),分别得出Z,V;
  4. Step1-5,Step2-5的前一部分, 车辆和手机都利用Z,V生成K,K就是双方的共享密钥,到这里,这种DH(Diffie-Hellman algorithm)共享密钥生成过程已经完成。

最后、共享密钥生成完成后的后续处理,指双向认证和安全通道建立流程,包括上图中的Step1-5,Step2-5的后一部分:

  1. 双向认证,由K派生出K1和K2,其中车辆端用K1加密X生成M[1]传送给手机端,手机端验证,手机端用K2加密Y生成M[2]传送给车辆,车辆端验证,双向认证完成,
  2. 安全通道:K可分成CK和SK两部分,如标准Listing 18-9所述方法分散密钥SK得到kenc Kmac Krmac,利用这三个密钥形成安全通道。

一旦双向认证成功,安全通道建立,基于此安全通道,车辆端即可以开始向手机端写入密钥证书。个人认为以上算法的应用有以下两个优点:首先,后台服务器仅向车辆传递L和w0,并不直接传递w1; 其次,车辆端和手机端都分别生成随机数,仅用于此次安全通道,即使后续password泄露,这个通讯过程仍然不能被解密得出,即前向安全。

你可能感兴趣的:(CCC学习笔记,安全)