text: 【AutoCS】浅析汽车芯片信息安全之安全启动
  作者 | Cassie Ren 复睿微首席架构专家。一、汽车芯片信息安全发展现状汽车的安全机制实际上主要包括功能安全（Safety）和信息安全（Security）两个方面。功能安全是涉及人身安全的保护机制，而信息安全则是保护我们的汽车系统里的信息不被恶意窃取和破坏。早期的汽车芯片和软件系统设计中，由于汽车较少与外界有网络互联，所以并未考虑过多的信息安全性。随着科技的发展、汽车行业的发展，汽车也加入了万物互联的行列。由于汽车的智能化、网联化的提升，信息安全正在占据着越来越重要的地位。信息安全不仅关系着用户的隐私，更关系着人的生命安全。一旦系统被非法入侵，汽车系统可能被恶意操控，从而可能造成汽车被盗取甚至车辆事故。目前世界各国已经开始制定相关法规来保障汽车的信息安全。2021年初，联合国世界车辆法规协调论坛（简称UN/WP.29）发布了两个信息安全相关的重要法规R155/R156，即信息安全（Cybersecurity）/软件升级（Software updates）。据悉，中国也在制定相应的信息安全法规《汽车整车信息安全技术要求》（中国版R155），《汽车软件升级通用技术要求》（中国版R156）。同年8月，国际标准组织ISO也公布了汽车网络安全标准ISO/SAE21434，规定了汽车系统、子系统和零部件应具备更强的安全性能以抵御网络攻击。由此可见，汽车芯片作为汽车零部件里最核心的关键组件，其信息安全已成为汽车芯片设计的必备要素和重要考量。二、安全启动的重要性安全启动是典型的芯片信息安全方案中的一环，也是信息安全认证的重要一环。通过信息安全认证也会给产品带来更多的竞争力。目前市面上考虑到安全的芯片基本都会选择支持安全启动功能。安全启动是通过启动时对镜像进行验证来保证启动时的软件是合法且未经篡改的，是在启动阶段保证信息安全的一种方式。三、安全启动信任根首先，安全启动需要一个信任根。信任根是密码系统中始终可以相信的来源。我们都知道ROM存储是只读的，基于此特性，我们可以将程序的第一段代码固化在ROM里作为安全启动的起点。这段代码无法被轻易替换，从而可保证每次启动第一段代码的可信性。四、安全启动信任链安全启动会对每一级镜像进行逐级验证，以保证下一级的镜像的合法性。镜像验证必须保证其连续性，否则则无法保证其验证的可信性。像汽车芯片这种大型的SoC一般是多核系统，多核系统的启动可由BootROM校验下一级bootloader并由该bootloader加载不同核的一级bootloader，再由一级bootloader开始连续校验下面的镜像内容。由于不同的SoC的设计不同，这里只是为了举例表明安全启动的信任链，每级镜像的名字可由开发者自己定义，其框图如下图所示：五、安全启动实现加密算法在安全领域，使用加密算法来对通信过程进行加密是一种常见的安全手段。通过加密算法可实现对数据的保护以防止数据被泄露，同时也可防止数据被篡改。常用的加密算法一般分为对称加密算法和非对称加密算法。对称加密算法的加密和解密使用同一个密钥，而非对称算法则使用公钥和私钥两种密钥来进行加解密。公钥私钥成对存在，如用公钥加密需用私钥解密，反之亦然。AES是最常用的对称加密算法，其拥有运算速度快，内存需求低，分组长度和密钥长度设计灵活等优点。对于非对称加密算法来说，典型的有RSA和ECC两种加密算法。RSA加密算法常被选择用于镜像的签名与验签。签名与验签由于非对称加密的速度远低于对称加密，故非对称加密算法不适用于数据量大的场景。我们一般使用SHA-1/SHA-2等算法计算得到Hash值以用来校验的数据完整性，并基于其进行加密计算得到镜像的签名。RSA算法用来签名与验签是业界常见的做法。一般采用私钥加密得到签名，公钥解密来验证签名以保证信息来源的可信性。与此同时，也会采用填充技术来增加加密算法的破解难度。常见的RSA填充算法有PCK1.5填充，OAEP填充，PSS填充等。对称加密的应用签名与验签的过程保证了镜像内容的完整性与来源的可信性，但数据仍处于明文状态。若黑客可以读到数据的存储空间，仍面临信息泄露的危险。为了解决这个问题，我们可以通过使用对称加密算法来对数据进行加密。如此一来，就算数据被读走，没有正确的密钥也是无法解析其信息。密钥的分配与保护密钥的保护也是信息安全中的一个议题。如果密钥被窃取，一样会面临信息被泄露与篡改的危险。所以在芯片设计的过程中，如何生成、保存、载入密钥是一个要认真考虑的问题。对于验签过程而言，必须保护好RSA算法的公钥以防止黑客将其替换伪造签名。由于RSA加密算法的公钥比较长，可选择将其Hash值固化在ROM里或者写在efuse上，在安全启动的过程中对公钥的Hash进行比对以保证公钥来源的可信性。对于对称加密而言，必须保护好用于加解密的秘钥。可将其写在OTP或者efuse里，也可采用多级加密的方式来保护密钥以防止被入侵者窃取。六、结语本文简单介绍了一下汽车芯片安全启动的关键技术及其实现，简而言之，就是要保证启动镜像的可信性和完整性，以及尽量增加黑客窃取破坏的难度。对于汽车芯片的信息安全而言，安全启动只是其中的第一步。我们还需要将严密的信息安全考量贯彻整个芯片的设计过程，以满足全球汽车市场对信息安全日益严格的需求。