信息安全:安全启动的信任链如何建立?

admin 2023年12月27日22:00:03评论22 views字数 2026阅读6分45秒阅读模式

点击上方蓝字谈思实验室

获取更多汽车网络安全资讯

信息安全:安全启动的信任链如何建立?

随着汽车智能化的发展,车辆已经成为万物互联的一部分。我们知道,不管何种终端设备,一旦联网,就存在着信息泄露的风险。自然,车辆也不例外,一旦车辆联网,那么,车辆就有被黑客或者第三方攻击、截获信息的风险。因此,车辆信息安全,已成为车企关注的焦点。本文,主要讨论MCU如何安全启动(Secure Boot),以及安全启动的信任链如何建立。

1、安全启动

讨论汽车信息安全的话题,绕不过"安全启动"的讨论。所谓安全启动就是确保每一个可执行程序都是可信的、没有被篡改的。目前,针对安全启动的方案有硬件(eg:HSM,Hardware Security Module)启动方案、软件启动两种方案。本文主要讨论基于HSM的硬件实现方案,不管哪种方案,"信任根"和"信任链"是所有安全启动设计中,不可规避的两个点。

(一)信任根

既然要安全启动,那么,启动总得有一个起点,而这个起点需要无条件信任,即:信任根。信任根必须具有不可攻破性,它可以是一段固化的程序或者硬件。以TC3xx为例,信任根是BootRom(也称为固件)。

(二)信任链

有了信任根以后,就可以从信任根开始,展开软件程序的逐级验证。工程中,常见的信任链验证方式如下:

信息安全:安全启动的信任链如何建立?

如上图,从芯片加电开始,程序从信任根开始执行,逐级的验证下一级程序,只有每级程序验证通过才能启动下一级程序,以此确保每个程序是安全的、可信的。

一般来说,程序可分为"安全启动程序"和"用户程序"。两者的CPU可以使用相同的内核架构,也可以使用不同的内核架构。一般,两者属于核间通信(Inter-Processor Communication)。

如上安全启动方式有一个不足:由于采用逐级验证方式,启动时间过长。如果OEM(Original Equipment Manufacturer)有严苛的启动时间要求,则这个方案很可能不能满足要求。

所以,工程上的另一种安全启动方案:"安全启动程序"和"用户程序"并行启动,如下所示:

信息安全:安全启动的信任链如何建立?

并行启动方案虽然可以缩短启动时间,但是,并行启动方案有被篡改用户入口程序地址的风险(如果用户程序入口存放在BootRom,几乎不可能修改)。所以,为了兼顾启动时间和安全性,工程上还有另一种方案:对程序采取部分校验的方式,缩短启动时间的同时,兼顾一定的安全性。

2、验证内容及验证方法

(一)公钥存储

信任链的校验自然脱离不了密码学的方法论,而密码学又和密钥紧密关联。工程上,不管程序刷写还是程序启动,均需要使用公钥验签,所以,加强公钥的保护,至关重要。如果公钥被第三方识别和替换,那么,第三方即可通过配对的私钥伪造签名信息,进而"为所欲为",信息安全也不复存在。

我们知道,在车辆下线时,OEM会在产线端分配根公钥(也就是产品公钥),产线刷写时,车辆不连接网络,也就不存在被网络攻击的风险,因此,根公钥的刷写是安全的(PS:不考虑异常断电场景)。一般来说,根公钥可以刷写到HSM专属的OTP(One Time Program)存储区,此区域,不允许Host端访问。如果根公钥对应的算法是RSA-2048、RSA-3072等,根公钥的长度较长,所以,工程上,常存储根公钥的哈希值,通过校验根公钥的哈希值,确认根公钥的完整性

(二)级联校验内容

级联校验内容及时序如下所示:

信息安全:安全启动的信任链如何建立?

首先,安全启动程序(eg:HSM)通过计算User Bootloader中的根公钥,得到根公钥的Hash Value,如果与HSM中的根公钥Hash Value比对一致,则校验通过,之后,HSM通过根公钥得到User Bootloader+App Public Key Hash Value签名信息,如果与User Bootloader中的签名信息一致,则校验通过,程序可以进入User Bootloader程序。

User Bootloader+App Public Key Hash Value验证通过,则说明User Bootloader中的App Public Key Hash Value完整。User Bootloader通过指定地址找到App Public Key,进一步计算Application程序中的Application Public Key Hash Value,如果一致,则Application Public Key可以用于验证User Application,如果两者的Application签名信息一致,则验证通过,程序完成安全启动。

拓展思考:程序第一次烧录时,HSM中没有根公钥的Hash Value怎么办?答:程序启动时,如果发现HSM没有根公钥Hash Value,则认为是首次启动,User Bootloader去指定地址获取Root Public Key,计算得到的Root Public Key Hash Value,并存储到HSM,之后,执行复位,重新启动程序,并进行验证。

 精品活动推荐 

信息安全:安全启动的信任链如何建立?
信息安全:安全启动的信任链如何建立?


原文始发于微信公众号(谈思实验室):信息安全:安全启动的信任链如何建立?

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月27日22:00:03
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   信息安全:安全启动的信任链如何建立?https://cn-sec.com/archives/2340802.html

发表评论

匿名网友 填写信息