ECU软件文件的数字签名
随着OTA方式升级ECU软件越来越普遍,为了保证ECU的安全性,在释放刷写到ECU中的软件时,必须采取某种机制来保证非法的软件无法刷写进ECU。最常用的一种方式就是对软件文件进行“数字签名”。它的形式简单来说如下图所示:

用于数字签名的最常用的一种方法叫做RSA算法,它是以发明该算法的三位科学家Rivest、Shamir 和 Adleman命名的。
关于这个算法的原理,网上有很多详细讲解,感兴趣的同学可以自行搜索。
简单来说,RSA算法的大概原理如下所述:

这里最关键的东西就是生成一对密钥:

RSA算法的保密原理是,知道一个key值,无法逆推出另一个key值。
如果我们对释放的文件使用公钥加密,则只有持有匹配私钥的人才能够将密文恢复成明文,即其他人不可以看到文件内容。这是RSA算法对文件保密的应用。
如果我们对释放的文件内容(全部内容或部分摘要)使用私钥加密生成一段附着在文件内容后面的密文(即“签名”),然后由持有公钥的人将该部分内容进行解密,从而确定恢复出的明文是否与文件摘要相同,这就是RSA算法在数字签名中的应用。
RSA在内容加密与签名方面的应用对比:

软件内容通常非常多,为了减轻计算量使得RSA算法可行,在实际中通常使用Hash算法对软件内容进行摘要。

将软件写入ECU之后,ECU首先需要使用RSA算法对数字签名进行解密得到摘要A,然后采用Hash算法从软件内容中得到摘要B,如果A=B,则说明软件是合法的。

如果想具体了解RSA算法,可以参考下面这位大神的文章。
https://zhuanlan.zhihu.com/p/44185847?utm_source=wechat_session
夜雨聆风
