CN115793507A - 在车辆的微控制器中使用多级安全验证来执行安全引导程序的方法和系统 - Google Patents

在车辆的微控制器中使用多级安全验证来执行安全引导程序的方法和系统 Download PDF

Info

Publication number
CN115793507A
CN115793507A CN202211059426.5A CN202211059426A CN115793507A CN 115793507 A CN115793507 A CN 115793507A CN 202211059426 A CN202211059426 A CN 202211059426A CN 115793507 A CN115793507 A CN 115793507A
Authority
CN
China
Prior art keywords
microcontroller
authenticity
memory region
defined memory
verifying
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211059426.5A
Other languages
English (en)
Inventor
B·法瑞尔
T·M·福尔斯特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
GM Global Technology Operations LLC
Original Assignee
GM Global Technology Operations LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by GM Global Technology Operations LLC filed Critical GM Global Technology Operations LLC
Publication of CN115793507A publication Critical patent/CN115793507A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/107License processing; Key processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

提供了一种使用多级安全验证来执行安全引导程序的方法。该程序包括,在微控制器内,参考表以识别第一定义的存储器区域,该第一定义的存储器区域包括对启动微控制器的应用编程有用的代码,其中,应用编程可操作以向车辆提供微控制器的功能,以及第二定义的存储器区域,该第二定义的存储器区域包括对微控制器的应用编程的操作有用的编程和数据。该程序进一步包括,在第一级内,验证第一区域的内容的真实性以及基于验证第一区域的内容的真实性启动微控制器的应用编程。该程序进一步包括,在第二级内,验证第二区域的内容的真实性以及操作应用编程以基于验证第二区域的内容的真实性来提供所述功能。

Description

在车辆的微控制器中使用多级安全验证来执行安全引导程序 的方法和系统
技术领域
本公开大体上涉及一种在车辆的微控制器中使用多级安全验证来执行安全引导程序的方法和系统。
背景技术
微控制器是一种器件,包括可用于操作编程的计算机化处理器。计算机化处理器操作存储在数字存储器中的编程或编程后的指令。在某些情况下,应用、软件应用或数据可以存储在代码闪存或数据闪存中。操作安全协议以检查存储在存储器中的应用和/或数据的真实性。
发明内容
提供了一种在车辆的微控制器中使用多级安全验证来执行安全引导程序的方法。该方法包括在微控制器内操作安全引导程序。安全引导程序包括参考安全引导信息表以识别包括对启动微控制器的应用编程有用的初始化代码的第一定义的存储器区域和包括对微控制器的应用编程的操作有用的编程和数据的第二定义的存储器区域。应用编程可操作以向车辆提供微控制器的功能。该程序进一步包括,在多级安全验证的第一级内,验证第一定义的存储器区域的内容的真实性以及基于验证第一定义的存储器区域的内容的真实性来启动微控制器的应用编程。该程序进一步包括,在多级安全验证的第二级内,验证第二定义的存储器区域的内容的真实性以及基于验证第二定义的存储器区域的内容的真实性来操作应用编程以向车辆提供微控制器的功能。
在一些实施例中,该方法进一步包括基于验证第二定义的存储器区域的内容的真实性而选择性地向微控制器提供密钥信息。
在一些实施例中,第二定义的存储器区域进一步包括对应用编程有用的校准数据。
在一些实施例中,该方法进一步包括参考安全引导信息表以识别未使用的第三定义的存储器区域,并且在多级安全验证的第三级内,验证第三定义的存储器区域的内容的真实性。
在一些实施例中,验证第二定义的存储器区域的内容的真实性包括激活应用编程的一部分以产生输出消息,将输出消息与存储的验证数据表值进行比较,以及基于比较验证第二定义的存储器区域的内容的真实性。
在一些实施例中,验证第二定义的存储器区域的内容的真实性包括激活应用编程的一部分以产生包括计算的消息摘要的多个输出消息,将多个输出消息中的每一个与对应的存储的验证数据进行比较,并且基于比较验证第二定义的存储器区域的内容的真实性。
在一些实施例中,该方法进一步包括激活应用编程的一部分以产生输出消息并监控用于产生输出消息的时间段。验证第二定义的存储器区域的内容的真实性包括确认用于产生输出消息的时间段小于阈值时间段。
在一些实施例中,第一定义的存储器区域和第二定义的存储器区域在微控制器的代码闪存器件内。
在一些实施例中,安全引导信息表存储在代码闪存器件内。
在一些实施例中,该方法进一步包括接收更新的应用编程,该更新的应用编程包括包含验证消息摘要的应用带签名的报头(application signed header),以及将更新的应用编程存储在微控制器内。在一些实施例中,该方法进一步包括激活更新的应用编程的一部分以产生包括计算的消息摘要的多个输出消息,将计算的消息摘要与验证消息摘要进行比较,以及将多个输出消息的一部分存储为微控制器内的验证数据表中的值。
在一些实施例中,在微控制器内存储更新的应用编程包括在更新的编程内引用应用带签名的报头,将应用带签名的报头与存储在微控制器内的签名验证数据进行比较,以及基于应用带签名的报头与签名验证数据匹配在微控制器内存储更新的应用编程。
在一些实施例中,参考安全引导信息表来识别第二定义的存储器区域包括识别第二定义的存储器区域的起始地址以及区域长度。
根据一个替代实施例,提供了一种在车辆的微控制器中使用多级安全验证来执行安全引导程序的方法。该方法包括在微控制器内操作安全引导程序。安全引导程序包括参考安全引导信息表以识别包括对启动微控制器的应用编程有用的初始化代码的第一定义的存储器区域和包括对微控制器的应用编程的操作有用的编程和数据的第二定义的存储器区域。应用编程可操作以向车辆提供微控制器的功能。该程序进一步包括,在多级安全验证的第一级内,验证第一定义的存储器区域的内容的真实性以及基于验证第一定义的存储器区域的内容的真实性来启动微控制器的应用编程。该程序进一步包括在多级安全验证的第二级内,尝试验证第二定义的存储器区域的内容的真实性。当验证了第二定义的存储器区域的内容的真实性时,该方法进一步包括基于验证第二定义的存储器区域的内容的真实性来操作应用编程以向车辆提供微控制器的功能。当第二定义的存储器区域的内容的真实性未被验证时,该方法进一步包括重置微控制器。
在一些实施例中,该方法进一步包括,当第二定义的存储器区域的内容的真实性未被验证时,隔离微控制器。
在一些实施例中,该方法进一步包括,当第二定义的存储器区域的内容的真实性未被验证时,通知车辆的操作者。
在一些实施例中,该方法进一步包括,当第二定义的存储器区域的内容的真实性未被验证时,激活车辆中的冗余微控制器。
根据一个替代实施例,提供了一种在车辆的微控制器中使用多级安全验证来执行安全引导程序的系统。该系统包括微控制器,该微控制器包括可操作以执行微控制器的应用编程的应用处理器。应用编程可操作以向车辆提供微控制器的功能。微控制器进一步包括存储应用编程的代码闪存器件、操作安全引导程序的硬件安全模块处理器。安全引导程序包括参考安全引导信息表以识别代码闪存器件内的第一定义的存储器区域,包括用于启动微控制器的应用编程的初始化代码和代码闪存器件内的第二定义的存储器区域,包括对微控制器的应用编程的操作有用的编程和数据。该安全引导程序进一步包括,在多级安全验证的第一级内,验证第一定义的存储器区域的内容的真实性以及基于验证第一定义的存储器区域的内容的真实性来启动微控制器的应用编程。该安全引导程序进一步包括,在多级安全验证的第二级内,验证第二定义的存储器区域的内容的真实性以及基于验证第二定义的存储器区域的内容的真实性来操作应用编程以向车辆提供微控制器的功能。
在一些实施例中,安全引导信息表存储在代码闪存器件上。
本发明还包括如下方案:
方案1. 一种在车辆的微控制器中使用多级安全验证来执行安全引导程序的方法,包括:
在所述微控制器内操作所述安全引导程序,包括:
参考安全引导信息表以识别:
第一定义的存储器区域,包括用于启动所述微控制器的应用编程的初始化代码,其中,所述应用编程可操作用于向所述车辆提供所述微控制器的功能;以及
第二定义的存储器区域,包括对所述微控制器的应用编程的操作有用的编程和数据;
在所述多级安全验证的第一级内,验证所述第一定义的存储器区域的内容的真实性;
基于验证所述第一定义的存储器区域的所述内容的真实性启动所述微控制器的所述应用编程;
在所述多级安全验证的第二级内,验证所述第二定义的存储器区域的内容的真实性;以及
基于验证所述第二定义的存储器区域的所述内容的所述真实性,操作所述应用编程以向所述车辆提供所述微控制器的所述功能。
方案2. 根据方案1所述的方法,进一步包括:
基于验证所述第二定义的存储器区域的所述内容的所述真实性,选择性地向所述微控制器提供密钥信息。
方案3. 根据方案1所述的方法,其中,所述第二定义的存储器区域进一步包括对所述应用编程有用的校准数据。
方案4. 根据方案1所述的方法,进一步包括:
参考所述安全引导信息表以识别未使用的第三定义的存储器区域;以及
在所述多级安全验证的第三级内,验证所述第三定义的存储器区域的内容的真实性。
方案5. 根据方案1所述的方法,其中,验证所述第二定义的存储器区域的所述内容的真实性包括:
激活所述应用编程的一部分以产生输出消息;
将所述输出消息与存储的验证数据表值进行比较;以及
基于所述比较验证所述第二定义的存储器区域的所述内容的所述真实性。
方案6. 根据方案1所述的方法,其中,验证所述第二定义的存储器区域的所述内容的真实性包括:
激活所述应用编程的一部分以产生包括计算的消息摘要的多个输出消息;
将所述多个输出消息中的每一个与对应存储的验证数据进行比较;以及
基于所述比较验证所述第二定义的存储器区域的所述内容的所述真实性。
方案7. 根据方案1所述的方法,进一步包括:
激活所述应用编程的一部分以产生输出消息;以及
监控用于产生所述输出消息的时间段;并且
其中,验证所述第二定义的存储器区域的内容的所述真实性包括确认用于产生所述输出消息的所述时间段小于阈值时间段。
方案8. 根据方案1所述的方法,其中,所述第一定义的存储器区域和所述第二定义的存储器区域在所述微控制器的代码闪存器件内。
方案9. 根据方案8所述的方法,其中,所述安全引导信息表存储在所述代码闪存器件内。
方案10. 根据方案1所述的方法,进一步包括:
接收更新的应用编程,包括应用带签名的报头,所述报头包括验证消息摘要;
在所述微控制器内存储所述更新的应用编程;
激活所述更新的应用编程的一部分以产生包括计算的消息摘要的多个输出消息;
将所述计算的消息摘要与所述验证消息摘要进行比较;以及
将所述多个输出消息的一部分作为值存储在所述微控制器内的验证数据表中。
方案11. 根据方案10所述的方法,其中,在所述微控制器内存储所述更新的应用编程包括:
在所述更新的编程内引用所述应用带签名的报头;
将所述应用带签名的报头与存储在所述微控制器内的签名验证数据进行比较;以及
基于所述应用带签名的报头与所述签名验证数据匹配,将所述更新的应用编程存储在所述微控制器内。
方案12. 根据方案1所述的方法,其中,参考所述安全引导信息表来识别所述第二定义的存储器区域包括识别所述第二定义的存储器区域的起始地址以及区域长度。
方案13. 一种在车辆的微控制器中使用多级安全验证来执行安全引导程序的方法,包括:
在所述微控制器内操作所述安全引导程序,包括:
参考安全引导信息表以识别:
第一定义的存储器区域,包括用于启动所述微控制器的应用编程的初始化代码,其中,所述应用编程可操作用于向所述车辆提供所述微控制器的功能;以及
第二定义的存储器区域,包括对所述微控制器的应用编程的操作有用的编程和数据;
在所述多级安全验证的第一级内,验证所述第一定义的存储器区域的内容的真实性;
基于验证所述第一定义的存储器区域的所述内容的真实性启动所述微控制器的所述应用编程;
在所述多级安全验证的第二级内,尝试验证所述第二定义的存储器区域的内容的真实性;
当验证了所述第二定义的存储器区域的所述内容的所述真实性时,基于验证所述第二定义的存储器区域的所述内容的所述真实性来操作所述应用编程以向所述车辆提供所述微控制器的功能;以及
当所述第二定义的存储器区域的所述内容的所述真实性未被验证时,重置所述微控制器。
方案14. 根据方案13所述的方法,进一步包括,当所述第二定义的存储器区域的所述内容的所述真实性未被验证时,隔离所述微控制器。
方案15. 根据方案13所述的方法,进一步包括,当所述第二定义的存储器区域的所述内容的所述真实性未被验证时,通知所述车辆的操作者。
方案16. 根据方案13所述的方法,进一步包括,当所述第二定义的存储器区域的所述内容的所述真实性未被验证时,激活所述车辆中的冗余微控制器。
方案17. 一种在车辆的微控制器中使用多级安全验证来执行安全引导程序的系统,包括:
所述微控制器,包括:
应用处理器,其可操作以执行所述微控制器的应用编程,其中,所述应用编程可操作以将所述微控制器的功能提供给所述车辆;
存储所述应用编程的代码闪存器件;
操作所述安全引导程序的硬件安全模块处理器,包括:
参考安全引导信息表以识别:
所述代码闪存器件内的第一定义的存储器区域,包括用于启动所述微控制器的所述应用编程的初始化代码;以及
所述代码闪存器件内的第二定义的存储器区域,包括对所述微控制器的所述应用编程操作有用的编程和数据;
在所述多级安全验证的第一级内,验证所述第一定义的存储器区域的内容的真实性;
基于验证所述第一定义的存储器区域的所述内容的真实性启动所述微控制器的所述应用编程;
在所述多级安全验证的第二级内,验证所述第二定义的存储器区域的内容的真实性;以及
基于验证所述第二定义的存储器区域的所述内容的所述真实性,操作所述应用编程以向所述车辆提供所述微控制器的所述功能。
方案18. 根据方案17所述的系统,其中,所述安全引导信息表存储在所述代码闪存器件内。
通过在结合附图考虑时的以下对实施本公开的最佳方式的详细描述,本公开的上述特征和优点以及其他特征和优点将显而易见。
附图说明
图1示意性地图示了根据本公开的计算机化微控制器,包括应用部分和硬件安全模块部分;
图2示意性地图示了根据本公开的图1的应用部分的存储器件,包括代码闪存器件和数据闪存器件;
图3示意性地图示了根据本公开的图2的存储器部分中的一个,其中存储器部分被划分为存储器模块;
图4示意性地图示了根据本公开的代码闪存器件的示例性实施例,所述代码闪存器件包括主机引导管理器软件和可用于操作车辆的一部分的应用,并且另外图示了由用于检查应用的真实性的应用生成的多个消息;
图5示意性地图示了根据本公开的存储在安全引导配置中的启动操作的序列;
图6示意性地图示了根据本公开的分解为子操作的图5的序列步骤中的第一个;
图7示意性地图示了根据本公开的分解为子操作的图5的序列步骤中的第二个;
图8示意性地图示了根据本公开的分解为子操作的图5的序列步骤中的第三个;
图9示意性地图示了根据本公开的分解为子操作的图5的序列步骤中的第四个;
图10是图示根据本公开的用于执行示例性验证操作的方法的流程图;
图11是图示根据本公开的将启动序列分类为确认存储的应用和/或数据的真实性或质询其真实性中的一者的方法的流程图;
图12示意性地图示了根据本公开的用于更新和验证计算机化应用的更新的真实性的系统配置;
图13是图示了根据本公开的可用于更新和验证计算机化应用的更新的真实性的动作的流程图;以及
图14示意性地图示了根据本公开的包括多个计算机化微控制器的车辆,每个微控制器利用所公开的方法和系统。
具体实施方式
计算机化处理器操作存储在数字存储器中的编程或编程后的指令。存在安全威胁,并且敌对方可能编写可能用于邪恶目的的编程。可以使用安全外围设备来识别已经加载到车辆内的微控制器上的这种编程。在一个实施例中,安全外围设备可以包括硬件安全模块,该硬件安全模块包括与应用处理器件并行操作的安全处理器件,其中硬件安全模块检查应用处理器件及其可用部件的真实性。
应用处理器件存在于车辆中的目的是在车辆内执行软件应用。在一种情况下,应用处理器件可以是可用于控制车辆中的一个或多个电动马达的马达控制器。在另一种情况下,应用处理器件可以是电池控制器,其控制车辆中一个或多个电池组的充电和放电循环。在另一情况下,应用处理器件可以是导航控制器,其或者向车辆的操作者提供导航信息或者自主地控制车辆的导航。
各种形式的存储器件可用于存储数字信息。闪存或固态存储器件可用于在以毫秒为单位测量的时间段内快速提供对数据的访问。在某些情况下,应用、软件应用或数据可以存储在代码闪存或数据闪存中。代码闪存和数据闪存可以包括相似或相同的物理结构,并且可以基于如何使用存储器来定义。在一个实施例中,代码闪存可用于存储应用代码和/或常量数据,而数据闪存可用于存储应用或仿真数据。
操作安全协议以检查存储在存储器中的应用和/或数据的真实性。安全协议可以检查存储器区域内的内容并确保内容包括预期的代码或数据。安全协议可以检查由应用生成的消息,并确保该消息与预期的消息或预期的输出相匹配。安全协议可以检查应该为空的存储器的区域并确保这些区域实际上是空的。安全协议可以跟踪验证特定区域的时间,并确保验证该区域的时间不超过阈值时间段。安全协议可以保护某些类型的信息,例如,可用于在各种车辆系统中启动反应的密钥或秘密数据密钥。在一个实施例中,安全外围设备可以保存密钥,例如用于车辆中的自动制动操作,直到自动制动控制器内的编程被验证。
在处于一般设置中的计算机化微控制器中,包括安全外围设备协议的启动协议需要相对较长的时间段,例如几秒钟,是可以接受的。在这样的一般设置中,可以遵循一操作序列。然而,在车辆系统中,计算机化的控制器可能会被提示启动并在以毫秒为单位测量的相对较短的时间内做出响应。在一个实施例中,车辆中的计算机化控制器可用于启动并在50至60毫秒内提供响应。
提供了一种在车辆的微控制器中使用多级安全验证来执行安全引导程序的方法。安全引导程序可以在车辆的微控制器内操作。该方法和系统提供了安全引导信息表(SBIT),从而能够对微控制器的存储器件的内容进行分优先顺序的多级安全验证。SBIT可包含对安全外围设备有用的信息,以快速识别在安全引导操作的特定阶段要验证哪些存储器区域。多级验证能够验证相对大量的代码闪存内容,同时保持微控制器的引导时序优先级。可以操作第一级,在该第一级中包括对启动微控制器的应用有用的编程的代码闪存内容优先于其他数据被验证。
在一个实施例中,多级安全验证使安全外围设备能够操作第一级,在该第一级中存储器件中的多个存储器区域中的至少一个存储器区域包括对启动微控制器的应用软件有用的编程和数据,并且该存储器区域被验证。多级安全验证可以进一步使安全外围设备能够操作第二级,在该第二级中验证了多个存储器区域的其余存储器区域。
在另一实施例中,多级安全验证可以进一步使安全外围设备能够操作第二级,在该第二级中多个存储器区域中的至少一个存储器区域包括对使应用软件能够操作和生成输出有用的编程和数据,并且所述至少一个存储器区域被验证。多级安全验证可以进一步操作第三级,在该第三级中验证多个存储器区域中的应该为空的至少一个存储器区域。
在另一实施例中,多级安全验证可以进一步使安全外围设备能够操作第二级,在该第二级中多个存储器区域中的至少一个存储器区域包括对启用需要使用密钥的应用软件的操作有用的编程和数据,所述至少一个存储器区域被验证。当第二级验证至少一个存储器区域时,多级验证可以允许使用密钥。多级安全验证可以进一步操作第三级,在该第三级中验证多个存储器区域中的应该为空的至少一个存储器区域。
如果安全外围设备在一时刻未能验证代码闪存器件的内容,则安全外围设备可以重置微控制器以拒绝入侵软件执行的时间窗口。安全外围设备可以执行命令以擦除未验证的代码闪存内容的内容并命令更新代码闪存器件。安全外围设备可以命令隔绝或隔离未经验证的代码闪存器件或包括未经验证的代码闪存器件的微控制器,以防止车辆的意外操作并防止未经验证的代码被传输或复制到车辆内的其他微控制器。安全外围设备可以向车辆的用户或操作者通知错误状态。安全外围设备可以允许使用车辆内的备用或冗余微控制器或系统来补偿未经验证的代码和被隔离的微控制器。如果没有冗余微控制器或系统可用于继续车辆操作,则安全外围设备可以命令车辆熄火。
主机引导管理器可以存储在代码闪存器件上。主机引导管理器可以操作编程以在微控制器的应用处理器件上启动微控制器的应用。诸如操作安全处理器件的硬件安全模块的安全外围设备可以与应用处理器件并行操作。
在微控制器内,代码闪存器件可用于存储与由微控制器操作的应用相关的编程。安全外围设备可以利用存储在经过验证的SBIT上的信息来验证用于存储应用的代码闪存器件的内容。提供对安全外围设备操作存储器件的多级安全验证有用的信息的SBIT可以存储在代码闪存器件或数据闪存器件上。在一个实施例中,将SBIT存储在代码闪存器件上可以提供相对更快的处理,因为与从存储应用的代码闪存器件访问数据相比,从数据闪存器件访问数据的延迟是固有的。
在一个实施例中,提供对安全外围设备操作代码闪存器件的多级安全验证有用的信息的SBIT可以存储在代码闪存器件的与应用相同的存储器区域内。在一个实施例中,SBIT可以作为应用的编程的一部分来存储。
现在参考附图,其中,相同的附图标记在几个视图中指代相同的特征,图1示意性地图示了计算机化的微控制器100,包括应用部分110和硬件安全模块部分120。微控制器100还包括通信器件130,其可操作以允许微控制器100与整个车辆中的电子器件通信。应用部分110包括应用处理器器件112、对应用处理器器件112有用的随机存取存储器114和对应用处理器器件112有用的存储器件116。硬件安全模块部分120包括安全处理器器件122、对安全处理器器件122有用的随机存取存储器124和对安全处理器器件122有用的存储器件126。应用部分110可操作以通过引导操作启动应用并且操作该应用以提供微控制器100的功能。例如,在微控制器100是车辆的制动系统控制器的情况下,应用部分110可以操作一应用来监控诸如制动踏板位置的输入并且向多个制动致动器提供诸如命令的输出。
根据本文公开的方法和系统,硬件安全模块部分120可操作以充当安全外围设备。硬件安全模块部分120可以访问来自存储在存储器件116内的SBIT的信息并且对存储器件116的内容进行分优先顺序的多级安全验证。
图2示意性地图示了存储器件116,包括代码闪存器件200和数据闪存器件210。图1的存储器件126可以与存储器件116相同。代码闪存器件200包括与图1的微控制器100的应用相关的编程和与可用于启动应用的主机引导管理器相关的编程。数据闪存器件210包括附加数据。
图3示意性地图示了图2的代码闪存器件200的示例性实施例。代码闪存器件200被图示为包括存储器模块302、存储器模块304、存储器模块306、存储器模块308、存储器模块310和存储器模块312。在另一实施例中,代码闪存器件可以包括附加的存储器模块,例如,包括主机引导管理器程序。存储器模块302被示为存储与应用程序相关的编程。存储器模块302进一步被示出包括存储的SBIT 314。存储器模块304被示为包括对应用程序的操作有用但对应用程序的启动无用的编程和/或数据。存储器模块304可以包括不作为应用软件的初始化的一部分执行的软件。在一个示例性实施例中,初始化一应用可能涉及存储在存储器模块302中的初始化代码,该初始化代码利用某一周期,例如30毫秒,来执行。存储器模块306被示为空的或未使用的存储器区域。存储器模块308和存储器模块310被示为包括对应用程序的操作有用但对应用程序的启动无用的校准数据。存储器模块312被示为空的或未使用的存储器区域。
存储器模块302、存储器模块304、存储器模块306、存储器模块308、存储器模块310和存储器模块312可以是电路板上物理上不同的结构或芯片,或者它们可以是统一存储器件的指定存储器区域。可以在存储器模块内定义存储器区域,例如,通过定义存储器区域起始地址和存储器区域长度。这种定义的存储器区域可以与存储器件或存储器模块内的其他存储器区域隔离地处理。例如,如果已知应用程序在特定定义的存储器区域内,则可以在所公开的方法和系统的第一级内分析该定义的存储器区域,以便在应用编程被启动或被授予对密钥的访问权之前验证该定义的存储器区域的内容。
SBIT 314可以包括操作多级安全验证的指令,其中,第一级被定义为包括对存储器模块302的验证,该存储器模块302包括应用程序和对启动或引导应用程序有用的编程和数据。第二级被定义为包括存储器模块304、存储器模块308和存储器模块310,包括对操作应用程序有用的编程和数据。第三级被定义为包括存储器模块306和存储器模块312,包括两个应该是空的并且没有编程或数据的存储器区域。
图4示意性地图示了代码闪存器件400的第二示例性实施例,包括主机引导管理器软件和可用于操作车辆的一部分的应用,并且另外图示了由用于检查应用的真实性的应用生成的多个消息。代码闪存器件400包括存储主机引导管理器的存储器区域430,存储根公钥(RPK)信息、电子控制单元标识符(ECU ID)、消息认证码(MAC)的存储器区域440,存储主机引导加载程序MAC的存储器区域450,以及存储主机引导加载程序的存储器区域460。主机引导管理器包括应用处理器在启动时执行的代码。它可以被存储在一次性可编程存储器(OTP)中,从而避免验证主机引导管理器代码。RPK信息是用于验证软件和校准更新的数据。ECU ID是每个电子控制单元(ECU)的唯一标识符。MAC是由硬件安全模块使用密钥创建的消息验证码。MAC与数据一起存储,以便图1的硬件安全模块部分120可以验证其真实性。使用MAC的替代方法是将RPK信息和ECU ID与引导管理器一起存储在OTP中,这样就无法更改。代码闪存器件400进一步包括存储应用软件信息(其可以包括应用带签名的报头)的存储器区域401,存储与应用程序和SBIT 314相关的编程的存储器模块302,包括对应用程序的操作有用但对应用程序的启动无用的编程和/或数据的存储器模块304,以及存储对应用程序的操作有用的校准数据的存储器模块308和存储器模块310。存储器模块302、存储器模块304、存储器模块308和存储器模块310的内容可以在示例性的两级安全验证中被验证,其中存储器模块302的内容在第一级被分析,从而使存储在其中的应用编程能够快速启动,并且其中存储器模块304、存储器模块308和存储器模块310的内容,包括对应用程序的操作有用的编程和数据,在第二级被分析。
验证包含应用程序以及对应用程序的操作有用的编程和数据的存储器模块或存储器区域的内容的一种方法可以包括分析由应用编程和相关编程生成的输出或消息以验证应用编程正在按预期操作。消息471作为存储器模块304内的应用软件的输出由图1的硬件安全模块部分120使用存储在硬件安全模块部分120内的密钥生成,消息472作为存储器模块308内的编程和校准数据的输出由图1的硬件安全模块部分120使用存储在硬件安全模块部分120内的密钥生成,并且消息473作为存储器模块310和存储器模块304内的编程和校准数据的输出由图1的硬件安全模块部分120使用存储在硬件安全模块部分120内的密钥来生成。输出消息471、输出消息472和输出消息473是消息验证码,它们是使用允许该数据的真实性得到验证的密钥在其他数据片段(通常相对较大)上创建的相对较小的数据片段。将输出消息471与图1的硬件安全模块部分120中存储的预期输出消息477进行比较,并且可以基于该比较来验证输出消息471和应用编程的对应操作。将输出消息472与图1的硬件安全模块部分120中存储的预期输出消息478进行比较,并且可以基于该比较来验证输出消息472以及应用编程和相关编程的对应操作。将输出消息473与图1的硬件安全模块部分120中存储的预期输出消息479进行比较,并且可以基于该比较来验证输出消息473以及与应用编程相关的编程的对应操作。基于通过检查由应用编程和相关编程生成的输出消息是否被验证而确定的存储器区域或存储器模块的内容是否被验证,由图1的硬件安全模块部分120操作的安全外围设备可以验证或质询是否图1的应用部分110已被未经授权的编程所损坏。
图5示意性地图示了存储在SBIT 314内的示例性启动操作序列。图示的SBIT 314包括序列步骤502,该序列步骤502定义级1信息偏移,定义一进程可以跳到SBIT 314的哪个序列步骤以获取与要在多级安全验证的第一级中分析的一个或多个定义的存储器区域相关的信息。序列步骤502可以指示一进程跳到序列步骤526,序列步骤526提供在级1中要验证的一个或多个定义的存储器区域的位置。图示了序列步骤504,序列步骤504定义级2信息偏移,定义了一进程可以跳到SBIT 314的哪个序列步骤以获取与要在多级安全验证的第二级中分析的一个或多个定义的存储器区域相关的信息。序列步骤504可以指示进程跳到序列步骤528,序列步骤528提供在级2中要验证的一个或多个定义的存储器区域的位置。图示了序列步骤506,序列步骤506定义级3信息偏移,定义了一进程可以跳到SBIT 314的哪个序列步骤以获取与要在多级安全验证的第三级中分析的一个或多个定义的存储器区域相关的信息。序列步骤506可以指示一进程跳到序列步骤530,序列步骤530提供在级3中要验证的一个或多个定义的存储器区域的位置。
图示了序列步骤508,序列步骤508提供了在多级安全验证的第二和第三级中被分析的代码闪存器件中存在的多个存储器模块编组,在所示示例中包括四个存储器模块编组。序列步骤510定义并提供用于包括存储器模块的第一存储器模块编组的参考名称,该存储器模块包括对应用程序的操作有用的编程和数据(例如,图3的存储器模块304)。序列步骤512为第一存储器模块编组提供偏移或位置。序列步骤514定义并提供用于包括第一存储器模块(例如,图3的存储器模块308)的第二存储器模块编组的参考名称,该第一存储器模块包括对应用程序的操作有用的校准数据。序列步骤516为第二存储器模块编组提供偏移或位置。序列步骤518定义并提供用于包括第二存储器模块(例如,图3的存储器模块310)的第三存储器模块编组的参考名称,该第二存储器模块包括对应用程序的操作有用的校准数据。序列步骤520为第三存储器模块编组提供偏移或位置。序列步骤522定义并提供用于包括一存储器模块的第四存储器模块编组的参考名称,该存储器模块包括未使用或空的模块(例如,图3的存储器模块306和存储器模块312)。序列步骤524为第四存储器模块编组提供偏移或位置。各种存储器模块的定义及其内容可能随着编程的更新和SBIT 314的更新而改变,例如,随着编程和数据参数的添加、删除或修改。
序列步骤526提供存储器模块的位置或要在级1中验证的一个或多个定义的存储器区域。序列步骤526可以提供对存储应用编程的存储器模块或存储器区域的引用。序列步骤528提供要在级2中验证的一个或多个定义的存储器区域的位置。要分析的存储器模块或存储器区域可以通过存储器模块(该级中要分析的整个模块)或通过一个或多个定义的存储器区域(包括要分析的存储器的起始地址和长度)来标识。在图5的实施例中,在级2中要验证的定义的存储器区域包括分别在序列步骤510、序列步骤514和序列步骤518中定义的第一存储器模块编组、第二存储器模块编组和第三存储器模块编组。序列步骤528可以提供对序列步骤532、序列步骤534和序列步骤536的引用,序列步骤532、序列步骤534和序列步骤536可以分别提供与第一存储器模块编组、第二存储器模块编组和第三存储器模块编组的起始地址和长度相关的要在2级中进行分析的信息。序列步骤530提供要在级3中验证的一个或多个定义的存储器区域的位置。在图5的实施例中,在级3中要验证的定义的存储器区域包括在序列步骤522中定义的第四存储器模块编组。序列步骤530可以提供对序列步骤538的参考,序列步骤538可以提供与要在级3中分析的两个不同存储器模块或存储器区域的起始地址和长度有关的信息。其中关于SBIT 314说明的在其中的序列步骤和数据是示例性的。设想了许多附加的或可替代的序列步骤来传达相同或相似的细节,并且本公开不旨在限于本文提供的示例。
序列步骤528提供在示例性多步骤安全验证的级2中要验证的一个或多个定义的存储器区域的位置。图6示意性地图示了分解为子操作的图5的序列步骤528。图示了序列步骤528,包括子操作602,该子操作602定义了要在级2中分析的多个定义的存储器区域(或者在这种情况下,存储器模块编组),在示例性图示中,多个定义的存储器区域等于三个定义的存储器区域。提供了子操作604,其提供数据的位置或向定义第一定义的存储器区域(第一存储器模块编组)的数据提供偏移。在图5的实施例中,在序列步骤532中提供了第一定义的存储器区域。子操作604可以提供偏移以访问或进行到序列步骤532。提供了子操作606,其提供数据的位置或向定义第二定义的存储器区域(第二存储器模块编组)的数据提供偏移。在图5的实施例中,在序列步骤534中提供了第二定义的存储器区域。子操作606可以提供偏移以访问或进行到序列步骤534。提供了子操作608,其提供数据的位置或向定义第三定义的存储器区域(第三存储器模块编组)的数据提供偏移。在图5的实施例中,在序列步骤536中提供了第三定义的存储器区域。子操作608可以提供偏移以访问或进行到序列步骤536。
图7示意性地图示了分解为子操作的图5的序列步骤532。图示了序列步骤532,包括子操作702,子操作702定义了多个子区域,这些子区域组合以创建在图6的子操作604中引用的第一定义的存储器区域(即,在图5的序列步骤510中定义的第一存储器模块编组)。在图7的实施例中,定义了两个子区域。在子操作704中,提供了子区域1起始地址。在子操作706中,定义了子区域1的长度。通过提供子区域的起始地址和长度,可以定义子区域的内容或与待分析的子区域相关联的存储器的部分。在子操作708处,提供了图1的存储器件126内的验证数据表或位置,在该验证数据表或位置中提供用于确认子区域1的内容的验证数据。在子操作710中,提供了子区域2起始地址。在子操作712中,定义了子区域2的长度。通过提供子区域的起始地址和长度,可以定义子区域的内容或与待分析的子区域相关联的存储器的部分。在子操作714处,提供了图1的存储器件126内的验证数据表或位置,在该验证数据表或位置中提供用于确认子区域2的内容的验证数据。子区域1和子区域2组合形成第一定义的存储器区域,或者在这种情况下,形成第一存储器模块编组。
图8示意性地图示了分解为子操作的图5的序列步骤534。图示了序列步骤534,包括子操作802,子操作802定义了多个子区域,这些子区域组合以创建在图6的子操作606中引用的第二定义的存储器区域(即,在图5的序列步骤514中定义的第二存储器模块编组)。在图8的实施例中,定义了一个子区域。在子操作804中,提供了子区域起始地址。在子操作806中,定义了子区域的长度。通过提供子区域的起始地址和长度,可以定义子区域的内容或与待分析的子区域相关联的存储器的部分。在子操作808处,提供了图1的存储器件126内的验证数据表或位置,在该验证数据表或位置中提供用于确认子区域的内容的验证数据。
图9示意性地图示了分解为子操作的图5的序列步骤536。图示了序列步骤536,包括子操作902,子操作902定义了多个子区域,这些子区域组合以创建在图6的子操作608中引用的第三定义的存储器区域(即,在图5的序列步骤518中定义的第三存储器模块编组)。在图9的实施例中,定义了一个子区域。在子操作904中,提供了子区域起始地址。在子操作906中,定义了子区域的长度。通过提供子区域的起始地址和长度,可以定义子区域的内容或与待分析的子区域相关联的存储器的部分。在子操作908处,提供了图1的存储器件126内的验证数据表或位置,在该验证数据表或位置中提供用于确认子区域的内容的验证数据。
图10是图示用于执行图5中描述的示例性多级安全验证操作的级2的方法1000的流程图。方法1000开始于步骤1002。在步骤1004处,来自SBIT 314的级2偏移数据被访问并用于定位要在级2中分析的定义的存储器区域。在步骤1006处,由在图7的序列步骤532中定义的子区域1和子区域2生成的输出消息被生成并且与各自的验证数据表值进行比较。在步骤1008处,由在图8的序列步骤534中定义的子区域生成的输出消息被生成并且与相应的验证数据表值进行比较。在步骤1010处,由在图9的序列步骤536中定义的子区域生成的输出消息被生成并且与相应的验证数据表值进行比较。方法1000在步骤1012处结束。方法1000可以是更大方法的一部分并且可以提供用于验证或质询微控制器的操作和软件内容的真实性的验证信息。方法1100是示例性的,并且本公开不旨在限于本文提供的示例。
图11是图示将启动序列分类为验证真实性或质询微控制器的操作和软件内容的真实性中的一者的方法1100的流程图。方法1100开始于步骤1102。在步骤1104处,SBIT首先被验证然后被引用,并且定义的存储器区域被识别用于验证。在步骤1106处,启动一启动进程,并且在多个级中执行定义的存储器区域的验证。在步骤1108和步骤1110中并行分析验证进程的结果。在步骤1108中,执行验证结果,例如,通过将输出消息与验证数据表值进行比较来检查定义的存储器区域的内容。如果验证方法肯定地确认微控制器的存储器内容被验证为具有真实性,则进程前进到步骤1112,在步骤1112中可以批准软件和相关联的微控制器以供车辆完全使用。如果验证方法未能验证存储器内容具有真实性,则进程前进到步骤1114,在步骤1114中可以重置微控制器并且可以执行包括本文描述的隔离在内的其他动作。在步骤1110处,检查验证进程,并且如果用于验证定义的存储器区域中的一者的真实性的时间比阈值时间段长,则可以假定缺乏真实性。如果验证进程在阈值时间段之前完成,则方法1100前进到步骤1116,在该步骤中验证进程的结果可以被赋予权重并且用于验证微控制器的存储器内容具有真实性并且没有受到损害。如果验证进程在阈值时间段之前没有完成,则方法1100前进到步骤1118,在该步骤中可以重置微控制器并且可以执行包括本文所述的隔离在内的其他动作。方法1100在步骤1120处结束。方法1100是示例性的,并且本公开不旨在限于本文提供的示例。
图12示意性地图示了用于更新和验证计算机化应用的更新的真实性的系统配置。图示的代码闪存器件包括存储器模块302、存储器模块304、存储器模块306、存储器模块308、存储器模块310和存储器模块312。存储器模块302进一步被示出包括存储的SBIT 314。代码闪存器件与图3的代码闪存器件200类似地操作。提供了更新设备1200,其存储并可以传输更新的软件,包括应用带签名的报头1210和更新的应用编程1220。应用带签名的报头1210可以包括关于更新的应用编程1220的信息,以确认针对特定代码闪存器件正确的应用正在被更新。如果使用代码闪存器件存储的签名验证数据正确验证了签名数据,则应用带签名的报头1210可以另外包括用于允许更新的签名数据。
可以根据本文公开的方法和系统来验证更新的软件。消息1232作为存储器模块302内的应用软件的输出由图1的硬件安全模块部分120使用存储在硬件安全模块部分120内的密钥生成,消息1236作为存储器模块304内的编程的输出由图1的硬件安全模块部分120使用存储在硬件安全模块部分120内的密钥生成,并且消息1234作为存储器模块302和存储器模块304内的编程的输出而生成。消息1232和消息1236是消息验证码,它们是使用允许该数据的真实性得到验证的密钥在其他数据片段(通常相对较大)上创建的相对较小的数据片段。
消息1234可以包括计算的消息摘要。验证消息摘要1239可在应用带签名的报头1210内提供并用于与消息1234进行比较。基于通过检查由应用编程和相关编程生成的输出消息是否被验证而确定的存储器区域或存储器模块的内容是否被验证,如本文所述操作的安全外围设备可以验证或质询操作图12的代码闪存器件的微控制器是否已被未经授权的编程所损坏。如果消息1234与验证消息摘要1239的比较确认了图12的代码闪存器件的内容,则可以使用包括输出消息1232 的值的验证值1242和包括输出消息1236的值的验证值1244来生成或更新验证数据表1240。以此方式,通过利用验证消息摘要1239来验证消息1234,验证数据表1240可以被验证数据填充并且用于多级安全验证的后续迭代,诸如关于图4所描述的。
图13是图示用于更新和验证计算机化应用的更新的真实性的方法1300的流程图。方法1300开始于步骤1302。在步骤1304处,接收包括应用带签名的报头的微控制器的更新,该报头包括验证消息摘要和更新的应用,并且将应用带签名的报头的签名与存储的签名数据进行比较以确认更新的真实性。一旦确认更新是真实的,则使用该更新将新存储的编程和数据写入代码闪存器件上。在步骤1306处,来自更新内提供的SBIT的信息被访问并用于识别代码闪存内可操作以产生输出消息的定义的存储器区域。在步骤1308处,激活第一定义的存储器区域(例如,存储应用软件的模块)以产生相关联的输出消息。在步骤1310处,计算并存储消息摘要信息。在步骤1312处,激活第二定义的存储器区域以产生相关联的输出消息。在步骤1314处,继续计算和存储消息摘要信息。在步骤1316处,将计算的消息摘要信息与验证消息摘要信息进行比较。如果计算的消息摘要信息与验证消息摘要信息匹配,则在步骤1308和步骤1312处产生的输出消息用于在微控制器的硬件安全模块部分内的存储的验证数据表中创建验证数据值。在步骤1318处,方法1300结束。方法1300是示例性的,并且本公开不旨在限于本文提供的示例。
图14示意性地图示了包括多个计算机化微控制器的车辆1400,每个微控制器利用所公开的方法和系统。图示的车辆1400包括示例性导航控制器1410、示例性电池系统控制器1420和示例性马达控制器1430。导航控制器1410包括带有编程以导航车辆的应用,例如,根据本领域中的方法确定道路上的导航路径。根据本领域的方法,电池系统控制器1420包括带有编程以管理电池系统1450内的能量存储(包括充电循环和放电循环)的应用。马达控制器1430包括带有编程的应用以控制推进马达1440产生输出扭矩,该输出扭矩有效地根据本领域中的方法推进车辆。导航控制器1410、电池系统控制器1420和马达控制器1430每个都可以包括为每个控制器操作相应应用的应用处理器,并且每个可以另外包括硬件安全模块处理器,该硬件安全模块处理器针对相应的控制器操作所公开的包括多级安全验证在内的方法和系统。车辆1400可以进一步包括无线通信系统1460,无线通信系统1460可操作以接收更新的软件以便更新控制器的应用编程,如本文所描述的。
车辆安全性是车辆中的重要考虑因素,特别是包括自主和半自主功能的车辆。防止不道德的行为者对车辆的功能施加未授权的控制是有用的。所公开的方法和系统的特征提高了车辆安全性并使车辆操作者更安全。在一个实施例中,提供了一种使用多级安全验证来执行安全引导程序的方法。该程序包括,在微控制器内,参考表以识别第一定义的存储器区域和第二定义的存储器区域,所述第一定义的存储器区域包括对启动微控制器的应用编程有用的代码,其中应用编程可操作以向车辆提供微控制器的功能,所述第二定义的存储器区域包括对微控制器的应用编程的操作有用的编程和数据。该程序还包括,在第一级内,验证第一区域的内容的真实性,并基于验证第一区域的内容的真实性来启动微控制器的应用编程。该程序还包括,在第二级内,验证第二区域的内容的真实性,并且操作应用程序以基于验证第二区域的内容的真实性来提供功能。在这样执行时,所公开的方法允许检查用于初始化应用软件的编程,应用软件开始初始化,然后随着初始化的进行,检查应用软件的编程的剩余部分。以这种方式,可以平衡和保持车辆安全性和初始化速度,从而解决车辆操作者的迫切技术问题。
尽管已经详细描述了用于执行本公开的最佳模式,但是熟悉与本公开相关的领域的技术人员将认识到,用于实践本公开的各种替代设计和实施例在所附权利要求的范围内。

Claims (10)

1.一种在车辆的微控制器中使用多级安全验证来执行安全引导程序的方法,包括:
在所述微控制器内操作所述安全引导程序,包括:
参考安全引导信息表以识别:
第一定义的存储器区域,包括用于启动所述微控制器的应用编程的初始化代码,其中,所述应用编程可操作用于向所述车辆提供所述微控制器的功能;以及
第二定义的存储器区域,包括对所述微控制器的应用编程的操作有用的编程和数据;
在所述多级安全验证的第一级内,验证所述第一定义的存储器区域的内容的真实性;
基于验证所述第一定义的存储器区域的所述内容的真实性启动所述微控制器的所述应用编程;
在所述多级安全验证的第二级内,验证所述第二定义的存储器区域的内容的真实性;以及
基于验证所述第二定义的存储器区域的所述内容的所述真实性,操作所述应用编程以向所述车辆提供所述微控制器的所述功能。
2.根据权利要求1所述的方法,进一步包括:
基于验证所述第二定义的存储器区域的所述内容的所述真实性,选择性地向所述微控制器提供密钥信息。
3.根据权利要求1所述的方法,其中,所述第二定义的存储器区域进一步包括对所述应用编程有用的校准数据。
4.根据权利要求1所述的方法,进一步包括:
参考所述安全引导信息表以识别未使用的第三定义的存储器区域;以及
在所述多级安全验证的第三级内,验证所述第三定义的存储器区域的内容的真实性。
5.根据权利要求1所述的方法,其中,验证所述第二定义的存储器区域的所述内容的真实性包括:
激活所述应用编程的一部分以产生输出消息;
将所述输出消息与存储的验证数据表值进行比较;以及
基于所述比较验证所述第二定义的存储器区域的所述内容的所述真实性。
6.根据权利要求1所述的方法,其中,验证所述第二定义的存储器区域的所述内容的真实性包括:
激活所述应用编程的一部分以产生包括计算的消息摘要的多个输出消息;
将所述多个输出消息中的每一个与对应存储的验证数据进行比较;以及
基于所述比较验证所述第二定义的存储器区域的所述内容的所述真实性。
7.根据权利要求1所述的方法,进一步包括:
激活所述应用编程的一部分以产生输出消息;以及
监控用于产生所述输出消息的时间段;并且
其中,验证所述第二定义的存储器区域的内容的所述真实性包括确认用于产生所述输出消息的所述时间段小于阈值时间段。
8.根据权利要求1所述的方法,其中,所述第一定义的存储器区域和所述第二定义的存储器区域在所述微控制器的代码闪存器件内。
9.根据权利要求8所述的方法,其中,所述安全引导信息表存储在所述代码闪存器件内。
10.根据权利要求1所述的方法,进一步包括:
接收更新的应用编程,包括应用带签名的报头,所述报头包括验证消息摘要;
在所述微控制器内存储所述更新的应用编程;
激活所述更新的应用编程的一部分以产生包括计算的消息摘要的多个输出消息;
将所述计算的消息摘要与所述验证消息摘要进行比较;以及
将所述多个输出消息的一部分作为值存储在所述微控制器内的验证数据表中。
CN202211059426.5A 2021-09-09 2022-08-31 在车辆的微控制器中使用多级安全验证来执行安全引导程序的方法和系统 Pending CN115793507A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/470295 2021-09-09
US17/470,295 US20230073884A1 (en) 2021-09-09 2021-09-09 Method and system to perform a secure boot procedure using a multi-stage security verification in a microcontroller of a vehicle

Publications (1)

Publication Number Publication Date
CN115793507A true CN115793507A (zh) 2023-03-14

Family

ID=85226423

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211059426.5A Pending CN115793507A (zh) 2021-09-09 2022-08-31 在车辆的微控制器中使用多级安全验证来执行安全引导程序的方法和系统

Country Status (3)

Country Link
US (1) US20230073884A1 (zh)
CN (1) CN115793507A (zh)
DE (1) DE102022119774A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102020211346A1 (de) * 2020-09-10 2022-03-10 Robert Bosch Gesellschaft mit beschränkter Haftung Verfahren zum Booten einer elektronischen Vorrichtung

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2579034B (en) * 2018-11-15 2021-05-05 Trustonic Ltd Software installation method
US11625459B2 (en) * 2019-02-08 2023-04-11 Raytheon Technologies Corporation Embedded processing system with multi-stage authentication
EP3798886A1 (en) * 2019-09-26 2021-03-31 General Electric Company Devices, systems, and methods for securely initializing an embedded system
GB201914047D0 (en) * 2019-09-30 2019-11-13 Nordic Semiconductor Asa Bootloader updating
US11720683B2 (en) * 2021-03-04 2023-08-08 Arm Limited Secure boot process for a computer system
KR20220154879A (ko) * 2021-05-14 2022-11-22 현대자동차주식회사 차량 제어 장치 및 방법

Also Published As

Publication number Publication date
DE102022119774A1 (de) 2023-03-09
US20230073884A1 (en) 2023-03-09

Similar Documents

Publication Publication Date Title
US7711944B2 (en) Method and apparatus for securely updating and booting code image
US20060101310A1 (en) Device, system and method for verifying integrity of software programs
WO2012139026A2 (en) System and method for processing requests to alter system security databases and firmware stores in a unified extensible firmware interface-compliant computing device
US20210397441A1 (en) Firmware updating system and method
US7437218B2 (en) Method and device for controlling the functional unit of a motor vehicle
JP2022136052A (ja) セキュア不揮発性メモリのためのシステム、方法およびデバイス
US11270003B2 (en) Semiconductor device including secure patchable ROM and patch method thereof
CN109814934B (zh) 数据处理方法、装置、可读介质和系统
CN106612178A (zh) 保护Android adb数据传输安全的方法及装置
KR101806719B1 (ko) 보안 부팅에 따른 메모리 영역 자동 설정이 가능한 전자 제어유닛 및 이를 이용한 보안 부팅 방법
CN115793507A (zh) 在车辆的微控制器中使用多级安全验证来执行安全引导程序的方法和系统
CN111284450B (zh) 用于增强车辆控制器的安全性的方法和设备
CN113486360B (zh) 基于risc-v的安全启动方法及系统
EP3706387A1 (en) Vehicle control device, vehicle control device start-up method, and recording medium
JP4833417B2 (ja) マイクロコンピュータシステムの保護方法,メモリ装置,マイクロコンピュータシステム
EP4287054A1 (en) Computer implemented method for updating a safety software code, computer hardware device, computer program and a computer-readable medium
CN116208353A (zh) 一种校验固件的方法、装置、网卡、芯片系统及服务器
CN113935011A (zh) 用于执行控制设备的安全启动序列的方法
CN111079194A (zh) 计算装置和用于该计算装置的运行方法
US20230418591A1 (en) Firmware update method of a flash bootloader in a micro controller unit for a vehicle
US20230244789A1 (en) Method for booting an electronic device
US11822661B2 (en) Method for carrying out a secured startup sequence of a control unit
US11500993B2 (en) Contingent authenticated boot of an electronic control unit
CN114091008A (zh) 用于对控制设备进行安全更新的方法
CN111914222B (zh) 保护电子控制单元的方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination