一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于执行控制设备的安全启动序列的方法与流程

2022-02-20 12:54:42 来源:中国专利 TAG:


1.本发明涉及一种用于执行控制设备的安全启动序列的方法以及一种用于执行该方法的计算单元和一种用于执行该方法的计算机程序。


背景技术:

2.在机器和车辆中使用可编程控制设备,以便控制这些机器和车辆或者还有这些机器和车辆的组件。例如,机动车可包含用于发动机控制、用于制动系统等等的控制设备。这些控制设备包括处理器,该处理器具有一个或者通常具有多个处理器内核(也简称为主机或主机系统),所述处理器内核执行存储在存储器中的程序,以便实现控制设备的功能。
3.出于安全原因,可以规定:在通过控制设备来执行程序之前,检查该程序的真实性,以便防止执行被篡改的程序。为此可以检查:其中存储有该程序的存储区是否未经更改。这由所谓的硬件安全模块hsm来执行,该硬件安全模块提供功能性,以便保护由控制设备执行的程序和通信以防篡改。为此,hsm使用加密功能、签名和(秘密)密钥。这些签名和密钥被hsm存储在数据存储器中,在启动控制设备时,该数据存储器被初始化。通常,在启动控制设备时,首先必须检查主机的加载程序的真实性,该加载程序尤其是加载应用程序。由于数据存储器的由hsm利用降低的时钟频率来执行的所需的初始化,这里可能发生延迟。


技术实现要素:

4.按照本发明,提出了具有专利独立权利要求的特征的一种用于执行控制设备的安全启动序列的方法以及一种用于执行该方法的计算单元和一种用于执行该方法的计算机程序。有利的设计方案是从属权利要求以及随后的描述的主题。
5.由于加载程序签名位于hsm的由hsm保护、也就是说防止篡改的程序存储器中,并且随着hsm的启动可以立即访问该程序存储器,而不必等待hsm的数据存储器的初始化,因而即使在hsm的可能还降低的时钟频率的情况下也能够执行安全且快速的启动序列,使得能够保护在时间关键的应用中使用的控制设备(例如发动机控制设备)。换言之,用于执行控制设备的安全启动序列的方法是安全的控制设备启动序列。
6.在这种情况下,术语“启动序列”或启动(hochlauf)表示由控制设备在启动之后最初执行的步骤,直至应用程序运行为止,这些应用程序实现控制设备的实际控制功能性。“安全”应该是指:不可能将启动序列篡改为使得执行如下程序,所述程序以未经允许的方式来更改控制设备的功能性、也就是说以其中使用该控制设备的装置(例如机器或车辆)的制造商和/或用户所不允许的方式来更改控制设备的功能性,或者所述程序能够使攻击者获得对控制设备的掌控以及借此至少部分地获得对由该控制设备所控制的装置的掌控。加载程序签名形成针对加载程序的参考签名。
7.主机或主机系统包括处理器(主机内核),该处理器被设立为执行软件或计算机程序(简称为程序),以便实现控制设备的功能。主机可包括其它元件,比如(易失性)工作存储器(例如随机存取存储器,random access memory,ram),非易失性主机存储器(例如闪速存
储器),通信接口,尤其是用于与主机存储器、hsm和外部设备通信的通信接口,和/或类似的元件。软件包含或存储在非易失性主机存储器、例如闪速存储器、硬盘或ssd(solid state disk(固态硬盘))中。主机存储器能重写。
8.程序可包括:一个或多个应用程序,所述一个或多个应用程序被设立为当所述一个或多个应用程序由主机执行时实现控制设备的控制功能;加载程序,该加载程序被设立为当该加载程序由主机执行时执行初始化并且调用所述应用程序中的至少一个应用程序;和更新程序(编程软件),该更新程序主要被设立为当该更新程序由主机执行时用软件(程序数据)或者数据来对主机存储器或该主机存储器的部分进行重写。借助于更新程序可以对控制设备进行更新或重新编程,该更新程序在某种程度上可以说是用于对控制设备进行重新编程的编程软件。更新可涉及:程序,所述程序的运行决定控制设备的功能;和/或对于控制设备的功能来说所需的数据,比如初始化参数或程序参数。在更新或重新编程时,主机存储器或该主机存储器的区域完全或部分地利用更新数据(新程序、也就是说软件,和/或其它新数据)来被重写。如有必要,更新程序也许可执行其它行动,例如确定哪些程序/数据必须被更新,或者在更新之后促使对控制设备的重启。
9.硬件安全模块,简称hsm,包括处理器(hsm内核)和hsm存储器,该hsm存储器包括程序存储器和数据存储器。hsm提供加密功能,这些加密功能可被主机使用,以便保护安全关键的功能、比如多个控制设备彼此间的通信。为此,hsm尤其是管理秘密密码(密文)、加密密钥和/或签名,并且优选地以硬件来实现加密方法。这些密码、密钥和/或签名由hsm来存储。hsm内核可以与主机分开地实施或者与主机或主机处理器以及存储器一起集成在芯片中(那么,hsm和主机例如通过该芯片上的不同的处理器内核来形成)。hsm尤其被设立为检查主机存储器的存储区的完整性,以便检查包含在相应的存储区中的计算机程序或软件和/或所包含的数据的真实性。
10.在完整性检查的情况下,确定所要检查的(主机存储器的)存储区的内容是否相对于已知正确的内容而言未经更改。这优选地通过对签名的比较来实现,其中将由hsm管理且存储在hsm存储器中的对应于存储区的从中知道该存储区正确(未被篡改)的(先前)状态的签名(也就是说参考签名)与该签名的新计算出的值进行比较,该值基于存储区的当前内容来被计算。如果新计算出的签名值与所存储的签名(参考签名)相同,则存储区的内容(就签名比较而言)未被更改,那么程序的真实性被确认。另一方面,如果新计算出的签名值与所存储的签名(参考签名)不相同,则存储区的内容(就签名比较而言)被更改,那么程序的真实性未被确认。
11.例如可以计算存储在存储区中的数据的校验值或哈希值,并且将该校验值或哈希值与在已知该存储区包含正确的、未被篡改的软件和/或数据的先前时间点所计算出的值进行比较。优选地,对于完整性检查来说,将mac、也就是说消息认证码(message authentication code)进行对照。在计算mac时,除了原始消息、这里是存储在存储区中的数据或这些数据的哈希值之外,加入hsm所管理的秘密密钥。由此,可以防止所谓的碰撞攻击(或这里是原像攻击)。优选地,使用所谓的cmac(基于密码的消息认证码(cipher-based message authentication code))。所提到的这些方法(校验值、哈希值、mac、cmac)是对于可能的签名方法来说优选的示例,然而也可以使用本领域技术人员公知的其它方法,例如公知的数字签名。
12.优选地,该方法可包括:在对加载程序进行认证之后,对hsm的数据存储器进行初始化。进一步优选地,该方法可包括:在该初始化之后,提高hsm的时钟频率。通过这些步骤,能够实现对存储在hsm的数据存储器中的应用程序签名和其它存储在那里的数据(密码
……
)的快速访问。
13.该方法在执行加载程序之后优选地进一步包括:通过hsm,借助于至少一个存储在hsm的数据存储器中的应用程序签名来对所述一个或多个应用程序中的至少一个应用程序进行认证;而且如果对该至少一个应用程序的认证成功,则通过主机来执行该至少一个应用程序。由此,防止了对被篡改的应用程序的执行。
14.该方法可以优选地包括:如果该至少一个应用程序是针对主机的加载程序的更新程序,则通过更新程序来对加载程序进行更新;确定或计算主机的被更新的加载程序的被更改的加载程序签名;将所述被更改的加载程序签名写到hsm的程序存储器中;而且优选地对控制设备进行重启。如果在更新时加载例如该加载程序的新版本,则借此保证了该新版本可以被正确认证。
15.优选地,对该加载程序和/或该至少一个应用程序的认证可包括:计算其中存储有该加载程序或该至少一个应用程序的存储区的签名、尤其是数字签名或消息认证码mac;并且将所计算出的签名与加载程序签名或应用程序签名进行比较,其中如果所计算出的签名与加载程序签名或应用程序签名相同,则该认证被定义为成功,而如果所计算出的签名与加载程序签名或应用程序签名不相同,则该认证被定义为不成功。在使用签名比较来对程序进行认证的情况下,该认证的可靠性最终取决于签名方法相对于攻击而言的强度。即,通过选择相对应的签名方法,可以确保高篡改安全性。
16.该方法可优选地包括:如果对该加载程序和/或该至少一个应用程序的认证不成功,则将控制设备停止和/或发送或输出错误报告。借此可以防止:可能被篡改的控制设备继续运行并且可能错误地实施安全关键的功能。该错误报告可以被输出给用户。同样可能的是:将该错误报告转交给一个或多个其它控制设备。例如,机动车具有多个控制设备,如果其中一个控制设备、比如用于制动系统的控制设备借助于不成功的认证查明有可能的篡改尝试,则该控制设备可以向其它控制设备输出或发送相对应的错误报告,使得所述其它控制设备可以对此做出反应,例如不启动或停下,比如,如果制动系统的控制设备报告了可能的篡改尝试,则发动机控制设备可能会将发动机停止。
17.该方法可以优选地包括:将加载程序签名写到hsm的程序存储器中。这(除了上述更新方法之外)尤其是在安全环境下对控制设备进行首次更新或编程时(例如在生产控制设备时或者在将控制设备安装到机器或车辆中)实现。由此,可以保证与原来上载的加载程序一致的加载程序签名。
18.按照本发明的计算单元、例如机动车的控制设备尤其是以程序技术方式被设立为执行按照本发明的方法。
19.尤其是当进行实施的控制设备还被用于其它任务并且因而总归存在时,按照本发明的方法的以具有用于执行所有方法步骤的程序代码的计算机程序或计算机程序产品的形式的实现方案也是有利的,因为这引起了特别低的成本。尤其是,适合于提供该计算机程序的数据载体是磁存储器、光存储器和电存储器,诸如硬盘、闪速存储器、eeprom、dvd以及其它等等。通过计算机网络(因特网、内联网等等)来下载程序也是可行的。
20.本发明的其它优点和设计方案从描述以及随附的附图中得到。
21.本发明依据实施例在附图中示意性示出并且在下文参考附图予以描述。
附图说明
22.图1示出了本发明可基于的控制设备的原理性构造。
23.图2示出了关于用于执行控制设备的安全启动序列的方法的优选的实施方式的原理性结构的概览图。
24.图3示出了按照本发明的方法的优选的实施方式的流程图。
具体实施方式
25.图1示出了本发明可基于的控制设备或包含在控制设备中的计算单元的原理性构造。在此,基本上只示出了对于理解本发明来说必要的那些组成部分。
26.控制设备1包括主机2和硬件安全模块(hsm)4。该主机和该硬件安全模块借助于一个或多个连接或线路3来彼此连接,用于进行数据交换。可涉及串行或并行连接。该连接可以是点对点连接或者也可以通过总线来实现。
27.主机2具有:主机内核6、也就是说处理器;和主机存储器8,程序、尤其是加载程序和应用程序以及数据被存储在该主机存储器中。主机内核2被设立为执行存储在主机存储器8中的程序。
28.hsm 4具有:hsm内核10、也就是说处理器;程序存储器12,用于要由hsm内核来执行的程序;和数据存储器14,尤其是用于签名和密钥。在程序存储器12中设置存储区16,在该存储区中存储有用于主机的加载程序的签名(或参考签名)(称作加载程序签名)。程序存储器12和数据存储器14的不同之处在于随着hsm 10的启动可以立即访问程序存储器12,而数据存储器14必须首先被初始化。即,数据存储器这里具有更慢的访问时间。
29.为了完整起见,还示出了通信接口18,该通信接口用于将控制设备1与其它装置连接。这尤其可以是要由该控制设备控制的装置和/或其它控制设备。应该用来更新该控制设备的编程设备同样可以经由通信接口18来与该控制设备进行通信。通信接口18除了其它接口之外例如可包括can总线接口。这里,通信接口18与主机2直接连接,但是例如也可以经由总线来连接。
30.各个部分(主机2、hsm 4、存储器8、12、14、通信接口18)中的多个部分或者甚至所有部分都可以集成在芯片中。不同于所示出的那样,存储器8、12、14也可以与相应的内核分开地(单独芯片)实现。这三个存储器(主机存储器8、hsm的程序存储器12和hsm的数据存储器14)也可以至少部分地彼此集成。通常设置公共存储器、尤其是闪速存储器,在该公共存储器中为主机存储器8、hsm的程序存储器12和hsm的数据存储器14提供不同的存储区。接着,通过硬件机制来为hsm保留对应于hsm的程序存储器12和数据存储器14的存储区,即主机不能访问这些存储区。公共存储器可以经由各个连接或者经由总线来与主机内核和hsm内核连接。公共存储器可以(例如作为闪存块(flashbank))与主机内核和hsm内核一起集成在芯片中。控制设备可包括其它未示出的组成部分。
31.在图2中,示出了关于用于执行控制设备的安全启动序列的方法的优选的实施方案的原理性结构的概览图。在此,在该附图左侧示出了在主机侧22进行的过程,而在该附图
右侧示出了在hsm侧24进行的过程。箭头表示各个要素之间的关系或相互作用,也就是说通常不是在流程图意义上的连续步骤的时间顺序。所绘制的要素沿该附图的垂直方向的布置大致对应于时间顺序,不过该布置不一定与实际的时间顺序准确对应,也就是说可能在不同时间点进行位于相同的垂直高度的过程或者同时或以相反的顺序进行位于不同高度的过程,只要这与该方法的逻辑顺序一致即可。
32.首先,随着控制设备的启动或接通,在步骤26中启动主机并且在步骤28中启动hsm。在此,主机通常执行固件,该固件执行或提供基本的初始化和功能。接着,由该固件来调用主机的加载程序30,该加载程序可执行接下来的初始化(例如这种涉及控制设备的特定使用的初始化)并且加载一个(或多个)应用程序、也就是说软件,该软件实现控制设备的实际的控制功能。
33.然而,加载程序30不是立即被执行,而是阻止该执行,直至hsm准许为止,该hsm首先检查加载程序的真实性。这可以通过如下方式来实现:检查其中存储有该加载程序的存储区的完整性,也就是说检查该存储区是否曾以未经允许的方式被更改。
34.为此,首先在步骤32中基于在该存储区中的数据来计算签名、比如数字签名或者消息认证码的所属值。在步骤34中,将基于存储区的当前内容的该签名值与在存储区的内容已知未曾被篡改的先前时间点所计算出的加载程序签名进行比较。被用于该比较的加载程序签名存储在hsm的程序存储器中,使得该加载程序签名在对hsm的数据存储器的初始化之前仍可以被读取。即,该过程包括如下未进一步示出的步骤:从hsm的程序存储器中读取加载程序签名。因而,对加载程序的认证即使在hsm的最初降低的时钟频率的情况下也可以立即被执行,并且控制设备的启动序列可以相对应地快速被遍历。
35.如果在步骤34中通过该比较确认了加载程序的真实性,也就是说如果当前所计算出的签名值与所存储的加载程序签名相同,则允许对加载程序的执行并且在步骤36中执行该加载程序。加载程序准许hsm继续它接下来的启动过程,尤其是对hsm数据存储器的初始化,该初始化在步骤38中被执行。
36.加载程序还加载至少一个应用程序40,该应用程序优选地不是立即由主机执行,而是在由hsm进行的真实性检查成功之后才由主机执行。在此,采取与在对加载程序的真实性检查的情况下类似的做法。首先,在步骤42中基于其中存储有应用程序的存储区的内容(也就是说程序数据)来计算所属的签名值(如上所述例如数字签名或消息认证码的值),并且接着在步骤44中将该签名值与先前计算出的应用程序签名进行比较,该应用程序签名属于存储区的内容的先前的已知正确的状态。如果当前所计算出的签名值与先前计算出的应用程序签名相同,则准许对应用程序的执行并且在步骤46中执行该应用程序。应用程序签名——一般来说存在多个应用程序,这些应用程序要么在控制设备启动期间由加载程序加载或调用要么稍后由其它应用程序调用——存储在hsm的数据存储器中,该数据存储器现在被初始化并且可以相对应地快速被访问。替选地,在hsm数据存储器的初始化之后也可以将其它参考签名立即加载到hsm-ram(也就是说hsm的易失性工作存储器)中。
37.图3示出了按照本发明的方法的优选的实施方式的流程图。原则上,安全的控制设备启动序列开始于步骤52,即启动主机和hsm,其中尤其是启动主机内核和hsm内核。还示出了上一步骤50,在该上一步骤中,计算加载程序签名、也就是说可用来检查加载程序的真实性的加密参考签名,并且将该加载程序签名存储在hsm的程序存储器中。这种加密签名例如
可以通过数字签名或者消息认证码(mac,message authentication code)来给出。该计算基于其中包含或存储有该加载程序的存储区。在此,根据包含在该存储区中的加载程序数据来计算签名。该签名的在参考时间点所计算出的与存储区的正确状态、也就是说未被篡改的状态相对应的值就是加载程序签名(也就是说加载程序参考签名),依据该加载程序签名可以检验存储区的完整性。该步骤50例如在制造控制设备或者对控制设备进行首次编程时被执行。
38.在步骤54中,基于加载程序的存储区的当前的、也就是说在初始时间点的内容,再次计算签名值。在步骤56中,将(新)计算出的该签名值与存储在hsm的程序存储器中的加载程序签名进行比较,以便检查存储区的完整性,也就是说检查存储区以及借此加载程序是否未被更改。为此,在一个未进一步示出的步骤中,从hsm的程序存储器中读取加载程序签名。这些计算和该比较可以由hsm来执行。
39.如果所计算出的签名值与加载程序签名不相同,则对加载程序的真实性的检查不成功,即箭头58。在这种情况下,在步骤60中将控制设备停止和/或发送错误报告(比如发送给其它控制设备)或输出错误报告(比如在控制设备的显示装置上输出)。
40.如果所计算出的签名值与加载程序签名相同,则对加载程序的真实性的检查成功,即箭头62。在这种情况下,在步骤64中执行加载程序。加载程序例如执行对控制设备的继续的初始化。加载程序尤其可以引起对数据存储器的初始化,该初始化在步骤66中被执行。在初始化之后,在步骤68中优选地提高hsm、尤其是hsm内核的时钟频率。优选地,加载程序在启动序列结束时加载至少一个应用程序,通过执行该至少一个应用程序来实现控制设备的至少一个控制功能。
41.在执行该(至少一个)应用程序之前,适宜地通过hsm来检验该应用程序的真实性。为此,在步骤70中,基于其中存储有该应用程序的存储区来计算签名值。在步骤72中,将签名值与先前计算出的、存储在hsm的数据存储器中的应用程序签名进行比较,其中即该应用程序签名基于该应用程序的存储区的已知未被篡改的状态。在计算签名值和应用程序签名时,可以再次应用上文结合加载程序签名所提到的方法之一。
42.如果所计算出的签名值与应用程序签名不相同,则对应用程序的真实性的检查不成功,即箭头74。在这种情况下,在步骤60中将控制设备停止和/或发送错误报告(比如发送给其它控制设备)或输出错误报告(比如在控制设备的显示装置上输出)。
43.如果所计算出的签名值与应用程序签名相同,则对应用程序的真实性的检查成功,即箭头76。在这种情况下,在步骤78中检查是否应该执行对加载程序的更新。
44.如果不应该执行对加载程序的更新,即箭头80,则继续对应用程序的执行,即箭头82。这里要指出的是:该应用程序也可能是针对应用程序的更新程序,这不同于针对加载程序的更新程序。后一种情况这里明确地被解释,因为该后一种情况与安全的控制设备启动序列有关。
45.如果应该执行对控制设备的更新,即箭头84,则在步骤86中执行针对加载程序的更新程序(该更新程序在步骤70、72中已被认证,在这些步骤那里通常仍被称作应用程序),该更新程序利用更新数据、例如加载程序的新版本来至少部分地覆盖其中存储有该加载程序的存储区。然后,在步骤90中,基于被重写的存储区来重新计算加载程序签名。在步骤92中,替代之前有效的加载程序签名,将新计算出的加载程序签名存储在hsm的程序存储器
中。然后,可以继续对应用程序的执行,即步骤82(该应用程序必要时应在执行之前被认证),或者如有必要则可以继续对启动设备(未示出)的重启。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献