CCC3.0学习笔记_SCP03安全通道

1. 在安全通道建立的情况下,数据安全交互的应答流程图如下所示,具体步骤解释如下:

        1> 避免SCP03安全通道协议中的CMAC与C-MAC的混淆,CMAC是计算C-MAC校验值的一         种机制,比如 图示中的 NIST SP 800-38B,而C-MAC则是附加在发送命令后面的,主要 是            用于接收方对接收到的命令做数据完整性教验的。

        2> 关于 MAC chaining value 的使用,它的初始值为16字节的0x00, 然后每一次发送方在发            送APDU 指令之前计算C-MAC的时候就生成一个新的MAC chaining value,这个新的                      MAC chaining value既作为反馈数据的头部,同时也作为下一条命令的起始段(只有首条指令          的初始值为0x00, 后续的指令则是依次进行链接的),因此这个数值可以将连续的APDU指令            进行链接从而保证命令的时序,例如进行一次车主配对就会有很多命令和反馈,此时可以使            用MAC chaining value将命令链接起来,将这一连串的操作称之为车主配对操作,然后分享            数字钥匙或者删除数字钥匙等操作也是一堆APDU指令的集合,都可用此                                        MAC chaining value 来确保操作时序。

        3> Lc+8 (Lc 是APDU指令的数据长度,8是CMAC计算机制所需要的,并非在后面添加                    Padding Data), 另外SCP03协议明确说明了在计算C-MAC的时候是不需要包含Le的。

        4> 附加在发送的APDU命令之后的C-MAC每次都是提取计算出来的MAC chaining value的              高8字节的数据,其实下面的图示是缺少了一步,在实际项目实施的过程中,接收方也是需            要使用对称密钥 S-MAC对接收到的命令数据部分也进行一次CMAC操作,将自身计算的与             命令中附加的C-MAC进行比对就可校验发送命令的完整性。

        5> 接收方完成C-MAC的完整性比对之后,则使用对称密钥S-RMAC计算出R-MAC并附加在           反馈数据后面,紧随在R-MAC后面的则是状态字,这里要注意的是如果是错误状态字则只回           错误状态(如6985/6800等) ,其他正响应9000或者警告类状态字(62XX/63XX)则严格按照下             图所示。 

        6> 可以看到流程中的S-MAC和 S-RMAC都是用于校验双方数据完整性的,还有一个S-ENC            则是对数据包进行加密的,假定是密文传输的情况下,先将命令或者反馈数据使用对称密钥            S-ENC进行加密,然后才按照下图操作即为密文传输方式。

        7> 本图示是基于发送和接收方已完成身份验证并建立了安全通道和双端都保存了三个对称的          安全通道密钥(S-ENC/S-RMAC/S-MAC),有了安全通道密钥以后,就可以执行下图所示的数          据安全交互的流程了。

2. 下面是密文数据传输的APDU命令指令示意图(APDU Command Data Field Encryption)

1> 先对数据按照AES padding填充规则对数据进行填充                                                                    2> 填充数据后对数据部分执行AES-CBC算法得到加密的数据                                                          3> 对整个密文的APDU指令执行CMAC操作计算出 C-MAC                                                              4> 将C-MAC附加在密文后面则为密文传输的APDU指令                                                                    5> 因此接收方则需要先校验C-MAC,校验通过之后则执行AES-CBC解密操作即可获取明文数据

3. 下面是密文数据传输的APDU反馈指令示意图(APDU Response Data Field Encryption)

1> 先对反馈数据按照AES padding填充规则对数据进行填充                                                            2> 填充数据后对数据部分执行AES-CBC算法得到加密的数据                                                          3> 对整个密文的APDU指令执行CMAC操作计算出 R-MAC                                                              4> 将R-MAC附加在密文后面则为密文传输的APDU指令                                                                    5> 因此发送方则需要先校验R-MAC,校验通过之后则执行AES-CBC解密操作即可获取明文数据

4. 下面是发送方计算C-MAC示意图(APDU C-MAC Generation) 参照文章第一点的描述,此处不再赘述了。

5. 下面是接收方计算R-MAC的示意图(APDU R-MAC Generation) 参考本文章第一点的描述,此处将不再赘述了。

总结来说SCP03是分成两大部分的,第一部分,对S-MAC,S-RMAC,S-ENC的生成和通讯双方双向认证的过程做出一种规范并说明(这部分可以去参考CCC3.0车辆与手机之间的标准交易流程);  SCP03第二部分则说明了安全通道建立后如何利用这三个对称密钥(S-MAC,S-RMAC,S-ENC)进行安全通道通信的框架和流程,SCP03的第二部分的框架可以应用于各种场合,关于安全通道的三个对称密钥可能不同的安全体系有不同的生成方式,比如汽车电子数字钥匙,就是在标准交易的过程中完成身份验证和安全通道密钥的产生,但是一旦安全通道建立,都会按SCP03第二部分所描述的框架进行安全通信。本文主要针对的SCP03第二部分的安全交互流程进行讲解,如果需要了解安全通道对称密钥如何产生可参靠先前车辆与手机进行标准交易的流程讲解!


版权声明:本文为u010674359原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。