CN116910819A - 远程确认要检查计算单元中计算机程序的完整性的方法和系统 - Google Patents

远程确认要检查计算单元中计算机程序的完整性的方法和系统 Download PDF

Info

Publication number
CN116910819A
CN116910819A CN202310390091.3A CN202310390091A CN116910819A CN 116910819 A CN116910819 A CN 116910819A CN 202310390091 A CN202310390091 A CN 202310390091A CN 116910819 A CN116910819 A CN 116910819A
Authority
CN
China
Prior art keywords
unit
check value
program code
integrity
computing unit
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
CN202310390091.3A
Other languages
English (en)
Inventor
M·科内布
F·维默尔
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.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
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 Robert Bosch GmbH filed Critical Robert Bosch GmbH
Publication of CN116910819A publication Critical patent/CN116910819A/zh
Pending legal-status Critical Current

Links

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60WCONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
    • B60W50/00Details of control systems for road vehicle drive control not related to the control of a particular sub-unit, e.g. process diagnostic or vehicle driver interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0736Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in functional embedded systems, i.e. in a data processing system designed as a combination of hardware and software dedicated to performing a certain function
    • G06F11/0739Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in functional embedded systems, i.e. in a data processing system designed as a combination of hardware and software dedicated to performing a certain function in a data processing system embedded in automotive or aircraft systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60WCONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
    • B60W50/00Details of control systems for road vehicle drive control not related to the control of a particular sub-unit, e.g. process diagnostic or vehicle driver interfaces
    • B60W50/02Ensuring safety in case of control system failures, e.g. by diagnosing, circumventing or fixing failures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • 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
    • 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/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Automation & Control Theory (AREA)
  • Human Computer Interaction (AREA)
  • Transportation (AREA)
  • Mechanical Engineering (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

本发明涉及使用确认单元来远程确认要检查的计算单元中计算机程序的完整性的方法,其中计算机程序通过参考程序代码来规范且以存储的程序代码形式存在于要检查的计算单元中,方法包括:通过确认单元:从对列表中选择一对,列表中每一对包括随机字符串和参考校验值,其基于该对的随机字符串和参考程序代码借助校验值函数来计算;将该对的随机字符串传送给验证单元;接收比较校验值,其基于传送的随机字符串和存储的程序代码借助校验值函数来计算;将接收的比较校验值与选择的对的参考校验值比较,如果接收的比较校验值等于参考校验值,则存储的程序代码的完整性被确认,如果接收的比较校验值不等于参考校验值,则存储的程序代码的完整性未被确认。

Description

远程确认要检查计算单元中计算机程序的完整性的方法和 系统
技术领域
本发明涉及一种用于远程确认所要检查的计算单元中的计算机程序的完整性的方法以及一种用于执行该方法的系统和一种确认单元和一种验证单元。
背景技术
在机器和车辆中使用可编程控制设备,以便控制这些机器和车辆或者还有这些机器和车辆的组件。例如,机动车可包含用于发动机控制、用于制动系统等等的控制设备。这些控制设备通常包括至少一个处理器,该处理器具有一个或多个处理器内核。在这些处理器内核中执行控制软件,即执行存储在存储器中的计算机程序,以便实现控制设备的控制功能。出于安全原因,可以规定:通过控制设备在比如使用硬件安全模块的情况下检查计算机程序的完整性,以便防止执行受操纵的计算机程序、即该计算机程序的所存储的程序代码。为此,尤其可以使用密码函数。
发明内容
按照本发明,提出了具有专利独立权利要求的特征的一种用于远程确认所要检查的计算单元中的计算机程序的完整性的方法以及一种用于执行该方法的系统和一种确认单元和一种验证单元。有利的设计方案是从属权利要求以及随后的描述的主题。
在本发明的框架内,使用确认单元。在此,该确认单元从对列表中选择一对,在该对列表中,每一对都包括随机字符串和参考校验值,而且该确认单元将所选择的对的随机字符串传送给验证单元。该确认单元接收比较校验值并且将该比较校验值与所选择的对的参考校验值进行比较,并且当该比较校验值和所述参考校验值相同时确认所存储的程序代码的完整性,其中该比较校验值是基于(由计算单元)所传送的随机字符串和所存储的程序代码借助于校验值函数来计算的。使用相同的校验函数来计算参考校验值和比较校验值。不需要将参考校验值或机密密钥存储在所要检查的计算单元中。这是有利的,因为这样可以执行和确认对所要检查的计算单元的计算机程序的完整性检查,这些计算单元没有信任锚、诸如硬件安全模块(HSM)或可信平台模块(Trusted Platform Modul,TPM)或者在这些计算单元中该信任锚由于硬件或软件故障而被破坏。
如果比较校验值不等于参考校验值,则所存储的程序代码的完整性未被确认。同样,优选地,如果没有接收到比较校验值,则所存储的程序代码的完整性未被确认。即,优选地,该方法,尤其是作为接收比较校验值的步骤的一部分,包括:在传送之后等待,直至接收到比较校验值或者度过预定的最大时间段为止(即等待直至满足两者之一为止),其中如果没有在预定的最大时间段之内接收到比较校验值,则所存储的程序代码的完整性未被确认。
在此,应该确认其完整性的计算机程序以程序代码或程序数据的形式存在,其中术语“程序代码”应该不仅包括可执行的计算机指令而且包括在执行时所需的数据。在此,“参考程序代码”是正确的、未被操纵的程序代码。“所存储的程序代码”是存储在计算单元(称为“所要检查的计算单元”)中的程序代码,该程序代码可能被操纵或者相对于参考程序代码发生变化。
该确认单元和在下文所提到的验证单元可以被实现为在计算单元中的硬件(处理器内核、存储器......)或硬件模块和/或被实现为在计算单元中执行的软件模块(计算机程序模块)。该确认单元被实施为与所要检查的计算单元无关的计算单元。该确认单元可以包括在与所要检查的计算单元相同的车辆中或者包括在与所要检查的计算单元相同的机器中。该确认单元尤其也可以实现在与验证单元不同的计算机系统(例如服务器、云服务器等等)中。优选地,验证单元在所要检查的计算单元内实现。但是,验证单元也可以独立于所要检查的计算单元,例如如果所要检查的计算单元是车辆的控制设备,则该验证单元例如可以在车辆中在另一控制设备中实现。
借助于校验函数,基于字符串和程序代码来计算校验值。校验函数通常可以被视为映射,该映射将这两个输入值(字符串、程序代码)映射到一个输出值(校验值);校验值=f(字符串,程序代码),其中f是校验函数。替代地或特别地,校验函数可以被视为映射,该映射将由字符串和程序代码所形成的输入值例如通过彼此连接来映射到一个输出值(校验值);例如校验值=f(字符串II程序代码)。术语“校验函数”应在一般意义上来理解,使得包括两种可能性,其中当然也可设想其它可能性并且应该一并包括术语“校验函数”。由于字符串和程序代码的长度通常是不确定的,所以无论如何校验函数都应该能够评估任意国家的输入值(例如通过块评估或块计算)。
可以使用哈希函数、尤其是密码哈希函数,作为用于计算校验值的校验函数,于是可以将这些校验值视为哈希值。进一步,校验函数可以包括对至少一个哈希函数、尤其是至少一个密码哈希函数的一次或多次应用。
所使用的密码哈希函数应该具有如下特性中的一个或多个:
-每个所计算的哈希值都应该具有特定的固定长度,与所输入的字符串的长度无关;
-抗冲突性:即找到得出相同哈希值的两个不同的输入值是不切实际的;
-实际上不可逆;
-雪崩效应:仅略微不同、例如有一位不同的两个输入的哈希值应该非常不同。
“不切实际”应该意味着:需要非常高的时间和/或计算技术花费。适合的密码哈希函数例如是按照SHA-1或SHA-2的哈希函数,即SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224和SHA-512/256,这些哈希函数比如从NIST(美国国家标准与技术研究院(NationalInstitute of Standards and Technology))的文献FIPS PUB 180-4(http://dx.doi.org/10.6028/NIST.FIPS.180-4)中公知或者也从RFC 6234中公知。对于SHA-1,哈希值的长度为160位,对于SHA-2系列的哈希函数,哈希值的长度为224、256、384或512位。同样,还能够使用MD5(消息摘要算法5(Message-Digest Algorithm 5),RFC1321),长度为128位,或者使用SHA-3(FIPS PUB 202,http://dx.doi.org/10.6028/NIST.FIPS.202),长度视版本而定为224、256、384、512位或者任意。
包括应用密码哈希函数的校验函数的示例是HMAC(hash-based messageauthentication code;基于Hash的消息认证码),对应于RFC2104或FIPS PUB 198(http://csrc.nist.gov/publications/fips/fips198-1/FIPS-198-1_final.pdf)。HMAC包括多次应用哈希函数,尤其是上述密码哈希函数之一。更一般地,还可以使用另一消息认证码(MAC),在该另一消息认证码的映射中加入密钥(随机字符串)和消息(程序代码)。相对应地,密钥(随机字符串)和消息(程序代码)到认证码(校验值)的HMAC映射或MAC映射表示校验函数。
每个随机字符串(也简称为字符串)是任意字符序列或字符串(比如多个位或还有相对应的十进制、十六进制表示等等)。该列表的随机字符串应该彼此独立,例如不应该是连续的数字。即,根据对该列表或列表的对的随机字符串的了解,无法推断出在该列表中包括哪些其它随机字符串。这旨在通过术语“随机”来表示。通常,每个字符串的字符都是随机选择的。
对列表应该只有该确认单元才知道或者通过该确认单元来存储。在此,应该确保:该列表除了该确认单元之外是未知的,使得尤其操纵所存储的计算机代码的攻击者不知道该列表。验证单元和所要检查的计算单元同样不知道该列表。
优选地,通过该确认单元,将所选择的对标记为不再可选择或者从该列表中划掉,和/或在多次执行(开始于选择直至包括比较为止的完整性检查)时,每一对被该确认单元最多选择一次。显然,在参考校验值被评估之后,例如直至该比较被暂存之后,或者在该比较之后,才应该将该对从该列表中划掉。通过该设计方案,可以防止所谓的重播攻击,原因在于在每次远程确认时使用另一随机字符串,并且因此,优选地使用适合的校验值函数(具有雪崩效应的哈希函数)来计算校验值,每次都出现不同的校验值。进一步优选地,将所选择的对标记为不再可选择,或者在传送随机字符串之后立即从该列表中划掉。在划掉的情况下,将参考校验值暂存,直至接收到了比较校验值为止,其中指定等待接收的最大时间跨度。同样进一步优选地,在多次执行时,其随机字符串已被传送过一次的每一对最多被该确认单元选择一次,即一旦在对中所包括的随机字符串已被传送过一次,就阻止对该对的再次选择。
优选地,通过编程单元来生成对列表并且将该对列表传送给该确认单元,该编程单元将参考计算机程序存储在计算单元中或者将参考计算机程序传输给计算单元并且引起对该参考计算机程序的存储。由于该编程单元具有参考程序代码,所以该编程单元可以适宜地在将程序代码存储在所要检查的计算单元中时防操纵地生成对列表。
优选地,该方法包括:通过该确认单元,将完整性是否被确认的结果传送给数据通信单元,该数据通信单元被设立用于与所要检查的计算单元进行数据通信(即发送具有如下内容的消息,该内容表明完整性是否被确认);而且通过该数据通信单元,根据该结果将数据发送给所要检查的计算单元;和/或通过该数据通信单元,根据该结果来使用从所要检查的计算单元中接收到的数据。例如在假定有操纵(就远程确认而言)时,该数据通信单元可以出于安全原因丢弃来自所要检查的计算单元的数据,以便避免故障。可以进一步规定:如果数据通信单元(例如在最大时间跨度内)没有从该确认单元接收到结果,则结果是,该数据通信单元确定或假定完整性未被确认作为结果(根据该结果来发送或使用数据)。
优选地,该方法包括:通过验证单元,接收随机字符串,该随机字符串是由该确认单元来传送或发送的;通过验证单元,基于所接收到的随机字符串和所存储的程序代码借助于校验值函数来计算比较校验值;而且通过验证单元,将比较校验值传送或发送给该确认单元。该设计方案对于确定比较校验值是适宜的。
优选地,如果完整性未被确认,则通过确认单元向验证单元传送:完整性未被确认,而且通过验证单元来阻止执行所存储的程序代码或者引起对执行所存储的程序代码的阻止,和/或通过验证单元来阻止使用计算单元的特定功能或者引起对使用计算单元的特定功能的阻止,和/或通过验证单元和/或确认单元来将报错消息存储在日志中和/或发送给远程监控单元。只要验证单元阻止执行所存储的程序代码或者引起对执行所存储的程序代码的阻止,验证单元和/或所要检查的计算单元就应该拥有相对应的功能。比如通过安全模块(例如HSM)等等来实现。如果例如验证单元不是所要检查的计算单元的一部分,则所要检查的计算单元可以包括这种安全模块,而且验证单元可以向该安全模块发送阻止执行所存储的程序代码的指令,即验证单元引起该阻止。如果例如验证单元是所要检查的计算单元的一部分,尤其是如果验证单元包括这种安全模块,则验证单元可以直接阻止执行所存储的程序代码。阻止使用计算单元的特定功能是指:如果完整性未被确认,则只使用该计算单元的有限的功能范围。
优选地,验证单元被设立为:读取所存储的程序代码在所要检查的计算单元中所存储的存储区;和/或所要检查的计算单元被设立为:响应于验证单元的相对应的请求,将所存储的程序代码在所要检查的计算单元中所存储的存储区的内容传送给验证单元。这一点尤其是在验证单元不在所要检查的计算单元中实现时是适宜的。
优选地,该方法包括:给该列表补充至少一个新对,其中通过确认单元,将针对该列表生成至少一个新对的请求传送给验证单元;通过验证单元,基于至少一个新的随机字符串和所存储的程序代码借助于校验值函数来计算至少一个新的参考校验和;通过验证单元,将该至少一个新对传送给确认单元,该至少一个新对包括该至少一个新的随机字符串和该至少一个新的参考校验和;而且通过确认单元,给该列表补充所传送的至少一个新对,其中该至少一个新的随机字符串通过确认单元来生成并且与该请求一起被传送给验证单元或者通过验证单元来生成,其中尤其是该至少一个新的随机字符串作为至少一串随机选择的字符来生成。术语“补充”还包括给空列表补充条目或对。例如当每一对只容许使用一次并且所有对都“用完”、即已被使用过时,可能存在空列表。也可能在编程、即将程序代码写入所要检查的计算单元的存储器中之后立即出现这种情况,比如在生产车辆或其中使用所要检查的计算单元的机器时,或者在安装所要检查的计算单元时。在编程时,可以认为:所存储的程序代码未被操纵,原因在于这是在安全环境中发生的。
更优选地,当完整性被确认时(或者在其之后)执行对列表的补充;和/或当完整性未被确认时不执行对列表的补充。如果每一对只容许使用一次,则可能出现的情况是在该列表中只还有一对或少数几对仍未被使用过。相对应地,在所有对都被使用过之前,可以提供补充,其中由于这一点只有在完整性已得到确认时才发生,所以确保了对新的参考校验值的计算所基于的所存储的程序代码未被操纵。生成新对的请求应该在确认完整性之后在尽可能短的时间段内进行,使得在这么短的时间段内的操纵不太可能或者甚至被排除,比如当该时间段短于对于写新的程序代码所需的时长时。如果所要检查的计算单元拥有安全模块等等,该安全模块具有相对应的功能,则可以规定:所要检查的计算单元被置于安全状态(存储器保护),在该安全状态下,如果或一旦完整性被确认,或者在有请求的情况下,阻止在所要检查的计算单元中写程序代码或对程序代码进行重新编程,并且在计算出至少一个新的参考校验和之后才再次允许在所要检查的计算单元中写程序代码或对程序代码进行重新编程。
按照本发明的系统被设立为执行按照本发明的方法。按照本发明的确认单元或验证单元(尤其是以程序技术方式)被设立为:执行按照本发明的方法的步骤,这些步骤被设置为由确认单元或验证单元来执行。
尤其是当执行的计算单元还被用于其它任务时,按照本发明的方法的以具有用于执行所有方法步骤的程序代码的计算机程序或计算机程序模块或计算机程序产品的形式的实现方案也是有利的,因为这造成了特别低的成本。最后,提供了一种机器可读存储介质,其具有存储在其上的如上所述的计算机程序或计算机程序模块。尤其是,适合于提供该计算机程序的存储介质或数据载体是磁存储器、光存储器和电存储器,诸如硬盘、闪速存储器、EEPROM、DVD以及其它等等。通过计算机网络(因特网、内联网等等)来下载程序也是可行的。在此,这种下载可以以有线方式或以线缆方式或者以无线方式(例如经由WLAN网络,3G、4G、5G或6G连接,等等)实现。
本发明的其它优点和设计方案从说明书以及附图中得出。
本发明依据实施例在附图中示意性示出并且在下文参考附图予以描述。
附图说明
图1示出了按照本发明的优选实施方式的流程图。
图2A、2B示意性示出了具有确认单元和验证单元的系统,该确认单元和该验证单元被用于对存储在所要检查的计算单元中的计算机程序进行完整性检查。
具体实施方式
图1示出了按照本发明的优选实施方式的流程图。
在可选的步骤100中,比如通过编程单元,在利用计算机程序或对计算机程序的参考程序代码进行存储/写来对计算单元(在下文所要检查的计算单元)进行编程时,生成具有分别包括字符串和参考校验值(或者由这些字符串和参考校验值组成)的对的列表,而且通过确认单元来存储该列表(即将该列表存储在确认单元的存储器中和/或存储在确认单元所访问的存储器中)。在此,每一对的参考校验值都通过拥有参考程序代码的编程单元基于参考程序代码和相应的对的随机字符串借助于校验函数(尤其是哈希函数)来计算。随机字符串是随机选择的。在该列表中的对的数量例如可以根据所要检查的计算单元的所计划的使用时长和/或完整性检查频率来选择。该列表例如可以包括几对至几百对或几千对。接下来的步骤涉及在所要检查的计算单元中正常使用计算机程序期间的完整性确认。
在步骤110中,通过确认单元,例如随机或按照列表条目的顺序来选择对列表中的对中的一对。优选地,在多次执行时,每一对最多被选择一次。在步骤120中,包含在所选择的对中的字符串借助于数据连接(例如移动无线电连接)被传送或发送给接收字符串的验证单元。
在优选的步骤130中,验证单元借助于校验函数基于所传送或所接收的字符串和存储在所要检查的计算单元中的程序代码来计算比较校验值。为此,验证单元应该直接或间接访问所要检查的计算单元的其中存储有该程序代码的存储区。如果验证单元包括在所要检查的计算单元中或者如果存在直接存储器访问(DMA:Direct Memory Access),则可以存在直接访问。例如通过所要检查的计算单元被设立为响应于相对应的请求(存储区查询)将该存储区的内容传送给验证单元,可以存在间接访问。
在优选的步骤140中,将所计算出的比较校验值从验证单元传送或发送给确认单元,该确认单元接收该比较校验值。
在步骤150中,确认单元执行在所传送的或所接收到的比较校验值与在步骤110中所选择的对的参考校验值之间的比较。如果比较校验值等于参考校验值,则认为所存储的程序代码未发生变化或未被操纵,即所存储的程序代码的完整性被确认。否则,即如果比较校验值不等于参考校验值,则所存储的程序代码的完整性未被确认。这种确认或未确认就校验函数而言进行,即校验函数应该具有不同输入引起不同输出的特性,使得当所存储的程序代码相对于参考程序代码而言被改变了时,这些校验值不一致。由于附加地加入对于不同完整性检查而言不同的字符串,所以确保了:尤其是在该列表的每一对最多被使用一次的情况下,识别出已经确定的(在操纵之前、正确的)比较校验值被攻击者记录并且稍后(在操纵之后)被再现(所谓的重播攻击)。如果在传送随机字符串之后的最大时间段内没有接收到比较校验值,则完整性同样没有得到确认,即认为有操纵。
如果完整性未被确认,则在优选的步骤160中可以生成报错消息等等,该报错消息例如被记录或者被发送给监控单元。尤其是,在这种情况下,也可以阻止执行所存储的程序代码(比如当在所要检查的计算单元中提供具有适合的功能的安全模块)。
另一方面,如果完整性被确认,则在优选的步骤170中容许执行所存储的程序代码。可选地,在步骤170之后可以规定:该方法、即完整性确认被再次执行,即可以跳回到步骤110(箭头175)。这例如可以在定期或随机选择的时间点进行。
在这两种情况下(步骤160、170),附加地或替代地,还可以规定:具有完整性检查的结果的消息被传送或发送给另一计算单元(比如图2A或图2B中的数据通信单元)。
在优选的步骤180中,可以给该列表补充一个或多个新对(具有新的字符串和新的参考校验值)。这里假定:存在所要检查的计算单元的未被操纵的状态(比如在所存储的程序代码的完整性被确认之后)。新的字符串例如由确认单元或验证单元随机选择。验证单元借助于校验函数基于新的字符串和所存储的程序代码来计算新的参考校验值。然后,将新对传送给确认单元,并且由该确认单元来给该列表补充新对,即生成新的列表条目。在步骤110中或者替代在那里所描述的用于生成该列表的方法,在那里同样可能会使用在步骤180之后的方法。
图2A示意性示出了具有(远程)确认单元2和验证单元4的系统,该确认单元和该验证单元被用于对存储在所要检查的计算单元6中的计算机程序进行完整性检查。确认单元2、验证单元4或所要检查的计算单元6被设立为:执行用于远程确认计算机程序的完整性的方法的分别与它们相关的那些方法步骤。
所要检查的计算单元6示例性地是车辆8的控制设备。验证单元4同样设置在车辆8中,并且可以与验证单元4通过有线或无线连接来交换数据(箭头12)。例如,验证单元4和所要检查的计算单元6可以通过以太网或CAN总线来连接(CAN:Controller Area Network(控制器局域网络))。验证单元4可以是专门设置用于实现按照本发明的方法的验证单元,或者包括在还被用于其它功能的计算单元中。验证单元4尤其可能会包括在所要检查的计算单元6中。当所要检查的计算单元没有能够自身充当验证单元的足够资源(计算能力、存储器),尤其是所拥有的资源太少不足以借助于校验函数来计算比较校验值时,所示出的将验证单元4与所要检查的计算单元6分开的实施方案是适宜的。在如所示出的那样分开的实施方案中,验证单元4应该能够读取所要检查的计算单元6的其中存储有程序代码的存储区,或者所要检查的计算单元6应该能够将该存储区(或存储在其中的数据)传送给验证单元4。不同于所示出的情况,原则上也可能的是:验证单元4不在车辆8中,或更一般地,不在通过所要检查的计算单元6来控制的机器中。
确认单元2、例如计算机系统或服务器远离所要检查的计算单元6和验证单元4。确认单元2与验证单元4连接,以进行数据交换(箭头14)。为此,优选地使用无线连接,例如移动无线电连接。
还示出了数据通信单元10,该数据通信单元被设立为与所要检查的计算单元6进行数据通信。这些数据可以是由数据通信单元10向所要检查的计算单元6发送以便被该计算单元使用的数据,和/或是由所要检查的计算单元6向数据通信单元10发送以便被该数据通信单元使用的数据。数据通信单元10可以根据完整性检查的结果来执行与所要检查的计算单元的数据通信(箭头18)。为此,完整性是否已被确认的结果由确认单元10发送给数据通信单元10(箭头16)。尤其可以规定:只有当完整性已被确认时,才将特定数据从数据通信单元10发送给所要检查的计算单元6(否则不发送数据或者发送其它数据)。同样可以规定:由所要检查的计算单元6发送给数据通信单元10的数据不被数据通信单元使用或者只在有限范围内(即特定计算机程序)使用。
如所示出的那样,如果所要检查的计算单元6在车辆8中被用作控制设备,则例如数据通信单元10可能会是另一车辆的控制设备或者计算系统,该控制设备或该计算系统对与特定地理区域相关(所谓的边缘服务器)的数据进行处理。在这种情况下,这些数据可能会涉及例如协同执行的自主驾驶功能,其中只有当完整性已被确认时,数据通信单元10才使用由所要检查的计算单元6所传送的数据,原因在于否则可能会存在操纵,该操纵可能会结合自主驾驶功能导致危险。
在图2A中,确认单元2和数据通信单元10处在车辆8之外。该确认单元和该数据通信单元也可以彼此独立地处在车辆8中。在图2B中,示出了两者都处在车辆8中的情况。附加地,在图2B中,验证单元4示例性地包括在(所要检查的)计算单元6中,例如作为计算单元6的安全模块或硬件安全模块。
确认单元2可以被视为在车辆8中的中央确认计算单元,例如当所要检查的计算单元不满足自己执行完整性检查的硬件前提条件时,该中央确认计算单元对在所要检查的计算单元中的程序代码的完整性进行确认。数据通信单元10例如可能会是车辆8的控制设备,该控制设备与所要检查的计算单元6交换数据,该所要检查的计算单元同样可以是车辆的控制设备。在图2B的设计方案中,用于在确认单元2、验证单元4或所要检查的计算单元6(验证单元4尤其是使用其通信接口作为所要检查的计算单元6的组件)与数据通信单元10之间进行数据交换的连接优选地以有线方式来实施,例如通过以太网或CAN总线。
除了确认单元2、数据通信单元10和验证单元4的布置及其数据交换连接之外,还适用关于图2A的实施方案,使得这里不重复描述,而是参阅对图2A的描述。

Claims (16)

1.一种用于在使用确认单元(2)的情况下远程确认所要检查的计算单元(6)中的计算机程序的完整性的方法,其中所述计算机程序通过参考程序代码来规范并且以所存储的程序代码的形式存在于所述所要检查的计算单元中,所述方法包括:
通过所述确认单元(2),从对列表中选择(110)一对,在所述对列表中,每一对都包括随机字符串和参考校验值,所述参考校验值是基于相应的对的随机字符串和所述参考程序代码借助于校验值函数来计算的;
通过所述确认单元(2),将所选择的对的随机字符串传送(120)给验证单元(4);
通过所述确认单元(2),接收比较校验值,所述比较校验值是基于所传送的随机字符串和所存储的程序代码借助于所述校验值函数来计算的;
通过所述确认单元(2),将所接收到的比较校验值与所选择的对的参考校验值进行比较(150),其中如果所接收到的比较校验值等于所选择的对的参考校验值,则所存储的程序代码的完整性被确认,而且如果所接收到的比较校验值不等于所选择的对的参考校验值,则所存储的程序代码的完整性未被确认。
2.根据权利要求1所述的方法,其中通过所述确认单元(2),将所选择的对标记为不再可选择或者从所述列表中划掉;和/或其中在多次执行时,每一对被所述确认单元最多选择一次。
3.根据上述权利要求中任一项所述的方法,所述方法包括:
在传送所述随机字符串之后等待,直至接收到所述比较校验值或者度过预定的最大时间段为止,其中如果没有在所述预定的最大时间段之内接收到所述比较校验值,则所存储的程序代码的完整性未被确议。
4.根据上述权利要求中任一项所述的方法,其中通过编程单元来生成所述对列表并且将所述对列表传送给所述确认单元(100),所述编程单元将参考计算机程序存储在所述计算单元中或者将所述参考计算机程序传输给所述计算单元并且引起对所述参考计算机程序的存储。
5.根据上述权利要求中任一项所述的方法,所述方法包括:
通过所述确认单元(2),将所述完整性是否被确认的结果传送给数据通信单元(10),所述数据通信单元被设立用于与所述所要检查的计算单元进行数据通信;
通过所述数据通信单元(10),根据所述结果来将数据发送给所述所要检查的计算单元(2);和/或通过所述数据通信单元,根据所述结果来使用从所述所要检查的计算单元接收到的数据。
6.根据上述权利要求中任一项所述的方法,
通过所述验证单元(4),接收所述随机字符串,所述随机字符串是由所述确认单元来传送或发送的;
通过所述确认单元(4),基于所接收到的随机字符串和所存储的程序代码借助于所述校验值函数来计算(130)比较校验值;
通过所述验证单元(4),将所述比较校验值传送或发送(140)给所述确认单元(2)。
7.根据上述权利要求中任一项所述的方法,
其中所述校验值函数被应用于通过将所述随机字符串和所述参考程序代码或所存储的程序代码彼此连接来获得的字符串;和/或
其中所述校验值函数是或包括密码哈希函数;和/或
其中所述校验值函数被实现为消息认证码。
8.根据上述权利要求中任一项所述的方法,其中如果所述完整性未被确认,则
通过所述确认单元(2)向所述验证单元(4)传送所述完整性未被确认,而且通过所述验证单元(4)来阻止(160)执行所存储的程序代码或者引起对执行所存储的程序代码的阻止,和/或通过所述验证单元来阻止使用所述计算单元的特定功能或引起对使用所述计算单元的特定功能的阻止;和/或
通过所述验证单元(4)和/或所述确认单元(2),将报错消息存储在日志中和/或发送给远程监控单元。
9.根据上述权利要求中任一项所述的方法,其中所述验证单元(4)被实现为在所述所要检查的计算单元(6)中的硬件模块和/或被实现为在所述所要检查的计算单元中执行的软件模块。
10.根据权利要求1至8中任一项所述的方法,其中所述验证单元(4)被实现为在验证计算单元中的硬件模块和/或被实现为在所述验证计算单元中执行的软件模块;其中所述验证计算单元不同于所述所要检查的计算单元。
11.根据上述权利要求中任一项所述的方法,
其中所述验证单元(4)被设立为读取所存储的程序代码在所述所要检查的计算单元(6)中所存储的存储区;和/或
其中所述所要检查的计算单元(6)被设立为:响应于所述验证单元(4)的相对应的请求,将所存储的程序代码在所述所要检查的计算单元中所存储的存储区的内容传送给所述验证单元。
12.根据上述权利要求中任一项所述的方法,所述方法包括:给所述列表补充(180)至少一个新对,其中
通过所述确认单元(2),将针对所述列表生成所述至少一个新对的请求传送给所述验证单元(4);
通过所述验证单元(4),基于至少一个新的随机字符串和所存储的程序代码借助于所述校验值函数来计算至少一个新的参考校验和;
通过所述验证单元(4),将所述至少一个新对传送给所述确认单元(2),所述至少一个新对包括所述至少一个新的随机字符串和所述至少一个新的参考校验和;而且
通过所述确认单元(2),给所述列表补充所传送的至少一个新对,
其中所述至少一个新的随机字符串通过所述确认单元来生成并且与所述请求一起被传送给所述验证单元或者通过所述验证单元来生成,其中尤其是所述至少一个新的随机字符串作为至少一串随机选择的字符来生成。
13.根据权利要求12所述的方法,其中当所述完整性被确认时执行对所述列表的补充(180);和/或当所述完整性未被确认时不执行对所述列表的补充。
14.一种用于远程确认所要检查的计算单元(6)中的计算机程序的完整性的确认单元(2),其中所述计算机程序通过参考程序代码来规范并且以所存储的程序代码的形式存在于所述所要检查的计算单元中,其中所述确认单元被设立为:
从对列表中选择(100)一对,其中在所述对列表中,每一对都包括随机字符串和参考校验值,所述参考校验值是基于相应的对的随机字符串和所述参考程序代码借助于校验值函数来计算的;
将所选择的对的随机字符串传送(120)给验证单元(4);
从所述验证单元接收比较校验值;
将所接收到的比较校验值与所选择的对的参考校验值进行比较(150);
如果所传送的比较校验值等于所选择的对的参考校验值,则确认所存储的程序代码的完整性,而且如果所传送的比较校验值不等于所选择的对的参考校验值,则不确认所存储的程序代码的完整性。
15.一种用于远程确认所要检查的计算单元(6)中的计算机程序的完整性的验证单元(4),其中所述计算机程序通过参考程序代码来规范并且以所存储的程序代码的形式存在于所述所要检查的计算单元中,其中所述验证单元被设立为:
从确认单元接收随机字符串;
基于所接收到的随机字符串和所存储的程序代码,借助于校验值函数来计算(130)比较校验值;
将所述比较校验值传送(140)给所述确认单元。
16.一种用于远程确认所要检查的计算单元(2)中的计算机程序的完整性的系统,其中所述计算机程序通过参考程序代码来规范并且以所存储的程序代码的形式存在于所述所要检查的计算单元中,其中所述系统包括确认单元(2)和验证单元(4)而且被设立为:执行根据权利要求1至13中任一项所述的方法。
CN202310390091.3A 2022-04-13 2023-04-12 远程确认要检查计算单元中计算机程序的完整性的方法和系统 Pending CN116910819A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102022203720.0A DE102022203720A1 (de) 2022-04-13 2022-04-13 Verfahren und System zur Fernbestätigung der Integrität eines Computerprogramms in einer zu prüfenden Recheneinheit
DE102022203720.0 2022-04-13

Publications (1)

Publication Number Publication Date
CN116910819A true CN116910819A (zh) 2023-10-20

Family

ID=88191864

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310390091.3A Pending CN116910819A (zh) 2022-04-13 2023-04-12 远程确认要检查计算单元中计算机程序的完整性的方法和系统

Country Status (3)

Country Link
US (1) US20230333964A1 (zh)
CN (1) CN116910819A (zh)
DE (1) DE102022203720A1 (zh)

Also Published As

Publication number Publication date
US20230333964A1 (en) 2023-10-19
DE102022203720A1 (de) 2023-10-19

Similar Documents

Publication Publication Date Title
JP7139424B2 (ja) 車両搭載機器アップグレード方法および関連機器
US10474823B2 (en) Controlled secure code authentication
US9705678B1 (en) Fast CAN message authentication for vehicular systems
CN103679005B (zh) 启用安全电子控制单元的开发模式的方法
EP3883208B1 (en) Validation of software residing on remote computing devices
KR20190033716A (ko) 블록체인을 이용한 메시지 히스토리 기반의 보안 키를 이용하는 통신 장치 및 방법
US11847224B2 (en) Passive monitoring and prevention of unauthorized firmware or software upgrades between computing devices
US20210248239A1 (en) Verification of a provisioned state of a platform
US11361067B2 (en) Cross authentication method for computer system security
WO2019161674A1 (zh) 电池识别方法、无人机及电池
WO2018203045A1 (en) Continuous hash verification
RU2408071C2 (ru) Защищенные загрузка и хранение данных в устройстве обработки данных
CN116910819A (zh) 远程确认要检查计算单元中计算机程序的完整性的方法和系统
CN116208353A (zh) 一种校验固件的方法、装置、网卡、芯片系统及服务器
KR102176115B1 (ko) 적은 자원을 활용한 무결성 자체 검증 방안
CN113835924A (zh) 远程重置出厂默认设置的方法和装置
JP2022109024A (ja) 車両制御システム
US20220035924A1 (en) Service trust status
CN114245183B (zh) 推流数据鉴权方法及装置
CN116781432B (zh) 一种情报数据的更新方法、装置、计算机设备及存储介质
KR102205779B1 (ko) 적은 자원을 활용한 무결성 상호 검증 방법 및 시스템
CN116055111A (zh) 递进式ota系统、实现方法、介质及设备
CN117041048A (zh) 车辆系统升级方法、ota升级文件云端处理方法及电子设备
CN116467755A (zh) 用于在计算单元中安全提供所要保护的计算机程序的方法
JP2023135547A (ja) 通信装置、通信方法、車両及びプログラム

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication