作者 | 孙鲁毅(安霸半导体上海软件研发高级总监) 出品 | 焉知 “网络安全”这个词广义上指包含网络系统中的硬件,软件,数据的传输和存储的安全,信息系统的完整和保密等受到保护。因为现今绝大部分IOT设备和汽车ECU都以某种方式连到网络访问,所以网络安全的覆盖范围非常广泛,嵌入式系统即使不联到Internet,只要和外界有所信息交互,也会涉及到网络安全。网络安全有一套系统方法,其中芯片硬件支持的安全是基础。 网络安全市场现状 网络安全越来越受到重视,虽然各种安全芯片和算法不断被发明,可是“道高一尺,魔高一丈”,即使是大家公认的网络安全水平比较高的iPhone手机, Tesla汽车也有被黑客发现漏洞而利用的例子。这时,如果对于网络安全技术的发展过程不甚了解,有可能会陷入恐慌。特别是汽车自动驾驶域控制器,要在复杂的硬件软件体系上,不仅要和本地设备通信,也许还要在背景通过OTA做功能升级,这种场景需要控制器芯片从底层硬件和软件打好网络安全基础。 网络安全而是以几门相关学科做基础,加上大量工程实践叠加而成,是可循序渐进地了解,进行比较和参照的。以下我们来看看芯片相关的安全设计基本准则。 芯片网络安全设计的基本准则 网络安全设计是相关技术要素和方法的有机组合。这篇微软的论文:The Seven Properties of Highly Secure Devices (MSR-TR-2017-16)对此进行了很好的列举。基于这种准则和市场需求,并结合技术实现细节,我参与了安霸CV系列芯片的网络安全设计,经过团队几年的努力,这些CV2x系列芯片已经在安防和汽车行业成功量产,得到领先客户的认可。 这7条基本准则是: a. 芯片需要含有硬件保护的信任根 设备的机密信息的到硬件保护,并且这个信任根可以在硬件设计中抵御已知的旁路攻击。信任根通常是在不可修改的存储器上的一组或者多组密钥,而且不允许用户直接读出。这里通常采用的加密算法会使用基于公钥系统的比如RSA,ECC类的算法,其中公钥会在系统启动过程中,验证启动代码的各个环节是否被篡改。 b. 芯片含有安全执行环境 专用加密芯片通常有内建的安全执行环境比如苹果手机用的Secure Enclave;主流Android手机则使用ARM的TrustZone,汽车的ECU和域控制器可使用HSM。这些设计原理类似,但功能,性能和安全等级不同。 安全执行环境意味着内部的操作通常受限,并且和主要的应用程序执行环境间的信息交流也受限。一般说来,系统开放的功能越多,接口越丰富,潜在安全风险点越多,所以在能满足需求的情况下,”信息安全岛”需要尽可能小而且简单。 c. 芯片安全需要纵深防御 纵深防御是一种必要的安全策略。这种“洋葱皮”式的设计,使得单层系统的弱点如果被攻破以后,并不会导致系统安全的全面崩溃。比如,即使使用了TrustZone来保护生物信息验证,系统还是可以使用软件层面的SELinux来设置程序权限来阻止不希望打开的权限。而且系统的配置也可能要考虑到防止root用户远程登录,并且保护root用户的密码。 d. 芯片安全需要分区隔离 轮船的密封舱,图片来自网络 隔离就是一种“密封舱”的思想。安全的系统可以由硬件建立一个个屏障,让单个模块带来的安全风险,难以转移到别的模块。“分区隔离”的做法常采用把软件模块的内存地址空间进行分离。Linux系统设立了用户空间和内核空间,就已经对大部分应用程序做了一层隔离。ARM TrustZone的Secure World和Normal world之间也被隔离。使用虚拟机等技术等对整个操作系统进行隔离,也是分区隔离的一种例子。 而简单RTOS则没有进行内存隔离,不仅仅一个软件模块的地址越界错误可能影响整个系统并导致崩溃,而且一个软件模块中的安全漏洞也会传播到别的模块。 e. 基于证书链的安全认证 公钥体系(PKI = Public Key Infrastructure)极大地提升了系统认证的安全性。 旧有的方式,比如Windows默认的登录方式就是用户名/密码,这种如果用于远程登录,则一旦用户名和密码泄漏,则无法区分用户身份是否真实,一般的可以采用“两步验证”的方法加以改善,但依旧比较麻烦。 基于公钥系统的证书则是从机制上保证可靠。比如银行手机APP可以对用户的手机的唯一标识符做数字签名,并颁发证书保护这个数字签名,证书内包含着银行APP的公钥。这样在用户用网银时,服务器端收到用户发过来的加签名和证书的请求数据,进行校验即可确认这个数据是否被被篡改,并且这个业务请求的来源是否真实。 公钥机制需要安全芯片自带RSA/ECC等非对称加密算法引擎,或者支持在ARM的Secure world内运行,并且对相关的密钥进行可靠的保护。 f. 可以更新的安全密钥 为了对抗不断发现的新安全威胁,安全策略也需要不断被更新。对于已经发现的安全漏洞(CVE等),需要及时弥补,包括废止和更新密钥的机制。 为什么发现安全漏洞了还有机会升级更新呢?这就是因为前面已经说过的“纵深防御”和“分区隔离”,也许系统底层还尚未被黑客攻破。特别对于0-day安全漏洞,及时进行升级可消除安全隐患,这也是OTA的重要意义之一。 g. 汇报网络安全失效的机制 系统的任何和安全相关的失效或者潜在相关的异常,都需要汇报到后台管理。黑客往往不是通过单次攻击成功进入系统的,而是经过反复尝试。所以系统的。错误日志往往包含着有价值的信息,可用于增进防范的策略,改善安全措施。 “安全启动(Secure boot)“ 如果在启动过程中遇到错误,比如密钥校验错,通常是停下来,或者进入功能受限的“安全状态”以待维修。这项技术的一种发展趋势是走向“measured boot”,也叫“trusted boot”。 “Measured boot”字面的意思是“可量度的启动”,但目前我没看到有广泛接受的中文翻译。Measured boot要求启动并不中断,而是把参与启动的模块信息和状态记录下来,包括错误,以待后面再进行校验,通常measured boot这些记录要写入带有安全存储的硬件,比如TPM或者HSM。 网络安全在芯片内的具体实现 3.1 需要防范的风险 要做好安全防范,还要考虑黑客可能如何攻击系统,常见的黑客攻击方法包括: a. 通过测试/调试硬件接口攻击,比如USB,串口等 b. 通过软件调试接口攻击,比如有一些产品的bootloader留有调试命令 c. 利用系统已知漏洞攻击,比如Linux Kernel已知的CVE d. 利用应用层软件bug攻击,比如利用bug造成缓存区溢出攻击 e. 嗅探网络数据,盗取用户信息或者口令 f. 攻击系统登录口令,一般采用穷举或者字典法尝试登录口令 g. 通过替换硬件模块攻击,比如替换NAND/eMMC等系统存储 h. 通过硬件bus攻击,通过bus读取/篡改数据 i. 回滚攻击,攻击者将系统版本回滚,然后利用旧版本已知漏洞来攻击。 j. 回放攻击,攻击者记录“认证通过的回应”,用它来试图通过下一次认证 3.2 芯片的硬件安全设计 一个可靠的网络安全系统,要求芯片从源头上做好安全防范,由此我们列出芯片的硬件安全设计要点: a. 不可修改的SecureROM用于安全启动 b. 一次性写的存储器OTP用于存储安全启动公钥和其他密钥 c. 真随机数生成器(TRNG) d. 提供可信执行环境TEE (比如ARM TrustZone 或专用HSM独立引擎) e. 安全的总线设计,提供硬件接口的安全配置 f. DRAM scrambling(在LPDDR4总线上的数据全是加密的) g. DRAM硬件地址隔离,不同的主要内部控制器可配置DRAM访问范围 h. 可禁止JTAG,USB等调试接口访问系统,可进入永久安全启动状态 安霸在CV2x以后的系列芯片,均采用以上的硬件设计,并不断改进,符合ARM的TSBA规范(Trusted Base System Architecture for ARMv8-A),并且在安防行业的龙头企业包括Axis,以及中国国内,欧美日本等等诸多客户取得成功量产;在中国乘用车行业也和著名民族品牌合作并成功量产。 3.3 “磐石”网络安全架构与安霸CV2x芯片安全设计 通过安霸CV2x系列芯片安全设计和上层软件和工具设计,我们实现了“磐石”网络安全架构。 图为:实现了基于硬件的安全启动全流程 我们在底层实现了安全启动,通过上层软件协议实现了隐私保护,算法加密,安全存储,安全传输等功能,给用户一个完整的套件,核心算法对用户开源。 4. 基于HSM的汽车控制器芯片的网络安全设计 较为复杂的汽车域控制器芯片更多使用HSM实现网络安全,主要原因是HSM是系统层面的,不仅仅可以对CPU上的数据进行保护,也可以保护MCU,AI引擎,图像视频引擎等多个单元,其内部带有安全存储和加密计算单元,可以用于存储用户的保密数据如密钥和证书。2022年初安霸发布的大算力自动驾驶域控制器芯片CV3,不仅实现了高AI算力,并且也实现了先进的网络安全。 CV3内建HSM,并采用了全新设计,自带可编程的高性能加密引擎支持各种常见加密算法,内建了高速内存,自带OTP以及其他安全计算硬件。不仅可以实现对各个硬件单元的的数据安全保护,还可以做系统的安全启动,内存隔离,保存用户的重要信息,通过对神经网络算法全程加密保护知识产权,把网络安全以及用户信息保护提到了新高度。 注:安霸半导体将在年会上进行演讲分享、前沿产品展示,欢迎大家报名参与、现场互动交流! 本文来源【焉知新能源汽车】版权归原作者所有 |