[关闭]
@devilogic 2019-04-12T03:44:37.000000Z 字数 2628 阅读 948

小鹏汽车MCU解决方案

方案


注意

此方案的前提是4G模块本身是一个白箱。即可被黑客夺取控制权的前提下。设立在这个前提下,即没有硬件TEE类似的方案,所有数据都使用软存储的方式进行。

安全防护需求

4G模块敏感信息安全存储模块

此模块的目的是为了解决,4G模块内敏感信息的存储安全。在4G模块中当接收到一些敏感数据。将通过一个重编码+加密的方式进行存储。

  1. 对指定的数据进行重编码。
  2. 对重编码后的数据进行加密。

重编码模块

重编码模块有三个子模块组成:

  1. 编码生成器
  2. 编码器
  3. 解码器

在每次潜入到4G模块之前,可使用编码生成器生成一份编码映射表。编码器/解码器会依据此表对数据进行编码解码。可为每个4G模块独立生成对应的编码映射表。即便黑客破解一份表,也不能依照规则复制破解其他的4G模块。

编码映射表又由两部分组成,一个是数据表,一个是函数表。前者即随机生成的ASCII/UNICODE的编码映射。后者是映射编码表的函数规则,此函数规则由一组虚拟OPCODE组成。这组OPCODE在编码形成时随机生成。这组OPCODE是一组非线可逆函数。这样在编码时,通过此非线函数进行映射,在解码时,通过此函数的逆函数,进行解码。

在此之后,通过加密算法对重编码后的数据进行加密。此加密过程也可与4G模块的白箱安全算法做结合。

4G模块白箱安全算法

对于小鹏汽车的4G模块白箱安全算法,本方案采用三次加密原则:
1. 使用密钥对明文加密
2. 使用被保护程序体代码HASH对密钥进行保护
3. 使用多态加密引擎对目标对加密后的密钥进行加密

加密原则

  1. 封闭运算
    所有数据通过SDK接口转为虚拟机指令存储在虚拟机空间,返回安全句柄,所有数据操作通过安全句柄进行。
    数据传入后转为对等虚拟机指令,操作数据时传入句柄,通过安全SDK接口传达指令给虚拟机,并由虚拟机完成操作,并将结果以虚拟机指令形式存放。
    比如变量等效,SDK转换为代码,然后将转换为虚拟机指令,
    变量等效.
    当作运算时实际是对应虚拟机指令运算,并再次转为虚拟机代码保存,所有数据都转换为代码只在虚拟机中可运算。
    所有虚拟机指令被随机分组加密,防篡改,不可调试,自定义,只能通过虚拟机执行,实现封闭运算。
  2. 算法随机
    数据被转换为代码后,分组加密,多副本,每组副本加密算法随机。
    加密算法可由网络传输下发,联网情况下,可由服务端下发更新加密算
  3. 模板随机
    模板指虚拟机指令模块,每次数据被转换为代码不固定,比如上面举例代码,实际运行时会比这个转换代码复杂倍。并且随机生成。
  4. 动态校验
    虚拟机代码被分段加密,假设部份被修改,由于每段虚拟机代码加密算法唯一,且加密算法具有动态性,代码检验动态化。
  5. 防篡改
    虚拟机每次运算对代码校验,防止代码错误或者被修改,同时多副随机检验,防止被修改
  6. 安全编译器nvm
    自主研发安全编译器,对目标保护代码进行代码乱序、逻辑流程平坦化、代码线性拼图等。

密钥保存原则

娜迦采用的是程序代码与输入的密钥密钥关联的方法,依托被保护的程序代码体对要保护的密钥进行加密。

娜迦壳保护公私钥生成

  1. 使用娜迦保护文件的所有HASH值做累积直到这个值达到1023
  2. 如果是素数则直接使用它,如果不是找到以它开始的下一个素数,然后通过这个素数,根据索非日耳曼素数生成下一个素数
  3. 随意选取一个1024位的大素数,这个数字称为
  4. 根据欧拉函数计算
  5. 随机选取一个随机数。根据欧拉定理计算,则为所求的公钥。
  6. 为私钥。

娜迦加密原则

娜迦加密任何数据以及代码,使用相互验证原则,例如:加密A文件必将用B文件的HASH进行加密,这样当黑客修改了B文件那么A文件将不能得到正确的解密结果。

加密

  1. 随机取一个KEY,随后计算B文件的HASH然后使用KEY对其进行加密生成DKEY
  2. 使用DKEYA进行加密。
  3. 使用公钥对KEY进行加密生成EDKEY并写入到指定的文件中。
  4. 也一同写入。

解密

  1. 获取EDKEY,以及
  2. 然后按照娜迦壳保护公钥生成的流程,计算出,推到出私钥
  3. 使用私钥对EDKEY进行解密得到KEY
  4. 核算B文件的HASH,随后使用KEY对其进行加密生成DKEY
  5. 使用DKEY进行对A文件的解密。

多态加密算法引擎

多态加密引擎由一个虚拟机控制,在加密时动态随机的生成对应的加解密算法。每次加密算法都不同。这些算法是一个三方自定义虚拟机来控制执行。

TLS安全增强需求

4G模块SSL/TLS证书及私钥安全存储

这里应该有两个文件需要保护:一、服务器的公钥证书;二、4G模块本身的私钥证书。
这里应该有两个目的:一、存储;二、加密。

存储

  1. 对SSL/TLS证书格式进行拆解,将算法信息密钥数据进行分离。
  2. 对流程1中的分离出的信息进行证书格式的转换,私有证书格式。
  3. 在使用证书的过程中,通过私有证书格式进行恢复成正常格式。
  4. 在存储过程中进行分离存储,算法信息密钥数据分开进行存储。
  5. 证书文件不单独进行存放
  6. 证书文件在写入到4G模块中时,直接写入到当前安全存储模块的程序文件中。

以上存储是直接存储到程序文件中,这就涉及了程序文件格式分析。我们可按照小鹏汽车指定的4G模块的提供的芯片的OS系统去拆解其上的文件格式并实现动态程序文件全局变量存储技术。

加密

加密证书本身可通过指定国标加密算法进行或通过白箱安全加密算法进行。

4G模块SSL/TLS证书安全校验

本方案使用国密算法SM2(ECC)或RSA进行网络安全校验。在整个网络传输过程中,使用双向验证+加密的方式进行。

网络传输

  1. 双方交换自定义的格式证书。
  2. 双方验证证书格式,因为是私有格式。所以格式不通过则退出。
  3. 服务器发送使用客户端的公钥加密session number
  4. 客户端接收并使用自己的私钥解密session number的密文。
  5. 客户段使用服务器的公钥加密session number+1并发送给服务器。
  6. 服务器接收到session number+1密文后验证。验证不通过退出。
  7. 服务器生成会话密钥key,并使用客户端的公钥加密。
  8. 客户端接收到会话密钥key的密文,使用自己的私钥解密。
  9. 双方通过此key进行加密通讯。

数据格式:[会话ID+内容+随机数据] = C
传输格式:

再次之上还可以加上key使用周期作为增强通讯安全手段。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注