验证驻留在远程计算设备上的软件
技术领域
本公开涉及用于验证驻留在远程计算设备中的软件的系统、方法和设备。
背景技术
计算设备可能执行从大量来源检索到的软件。若要计算设备可靠安全地操作,计算设备可结合确保执行真实授权软件的技术,而不执行例如因设备故障、事故、未授权用户等而替换、修改或以其他方式更改的软件。在某些实例中,计算设备可实施访问用于将系统配置为以特定方式操作的授权数据文件而不访问未授权数据文件的技术。传统上保护计算设备安全的方法包括安全启动或使用可信平台模块(Trusted Platform Module-TPM)。通过安全启动,可执行软件签有加密数字签名,微处理器在加载待执行的软件之前对其进行验证。诸如基于散列的消息认证码或“HMAC”等键控散列函数也可用作保护计算设备安全的安全启动方法。未授权用户或攻击者不具有创建签名或HMAC校验和的密钥,因此未授权用户无法更改软件并令签名/校验和还与修改后的代码相匹配。据此,微处理器将不会加载具有无效签名的软件,从而保护系统的完整性。关于保护计算设备安全的基于TPM的技术,TPM是一种验证(“证实”)主CPU正执行的可执行代码和静态数据的辅助芯片。在某些技术中,仅当验证代码后,TPM才会释放使得主CPU能够全操作的密钥或其他数据。
在某些实例中,安全启动和TPM技术可充当配备有实施安全启动或TPM芯片的微处理器的计算平台。但许多计算机平台使用的标准微处理器既不具备安全启动功能,也不具备TPM。这些系统在进入操作状态之前无法查验其软件是否已被更改,因此要执行未授权软件,这可能会损害计算机系统的保密性、安全性和/或可靠性。这些计算平台的实例包括老式计算机化设备、计算机化消费类设备、许多物联网(“IoT”)设备以及专用计算机化设备,例如用于控制交通工具操作的电子控制单元(“ECU”)。举例而言,因未能验证交通工具中所有安全关键性ECU中的软件和数据,就无法推定交通工具整体上处于已知的良好安全状态。
此外,在很多情况下(即使不是大多数情况),配备安全启动和配备TPM的计算机平台及设备也很少执行上电复位(调用安全启动)。譬如,交通工具中的一些ECU在其关闭时进入休眠模式,而仅当交通工具点火器开启时才从休眠唤醒。这样的ECU就鲜少掉电,因此它们无法定期执行安全启动。在这类ECU中,ECU软件存在未授权用户未经检测即被修改的风险。
发明内容
在各实施方案中,本公开提供一种用于验证远程计算设备上的软件的系统。所述系统包括一个或多个处理器以及存储器设备,该存储器设备的一个或多个计算机可读指令当由一个或多个处理器执行时促使该系统执行一些操作。这些操作包括:获取远程计算设备的软件的真实副本(Authentic Copy);向远程计算设备发送包括随机数据串的验证请求;从远程计算设备接收远程校验值,其中,该远程校验值是由远程计算设备基于随机数据串和远程计算设备上的软件而生成;基于远程计算设备用的软件的真实副本和随机数据串,计算本地校验值;以及基于所接收的远程校验值与本地校验值的比较,确定远程计算设备是否具有真实软件(Authentic Software)。
远程校验值可以由远程计算设备使用随机数据串作为用于产生远程校验值的密码校验和计算的加密密钥、附加输入或其组合而生成,并且计算本地校验值可以包括使用随机数据串作为用于产生本地校验值的密码校验和计算的加密密钥来计算本地校验值。
随机数据串可以是验证请求的唯一值。
所述操作可以进一步包括:从远程计算设备获取包括设备标识符的用户数据。
可以基于远程计算设备的软件、随机数据串和来自远程计算设备的用户数据的组合来生成远程校验值。
所述操作可以包括:基于远程计算设备的软件的副本、随机数据串以及从远程计算设备或曾获取用户数据的单独系统所获取的用户数据的副本的组合来计算本地校验值。
加密计算可以包括数字签名计算、基于分组密码的消息认证码计算或基于散列的消息认证码计算,其使用密码散列函数或分组密码以及密码密钥、随机数(Nonce)和静态数据中的一项或多项。
可以响应于远程计算系统从休眠状态转换为全功能状态来验证软件。
可以响应于系统事件或验证不超过预定阈值的时段或者响应于与用户输入相对应的外部信号来验证软件。
远程计算设备可以是电子控制单元。
所述操作可以包括:响应于由于远程校验值与本地校验值之差值而确定远程计算设备不具有真实软件,发起远程计算设备的恢复。
所述操作可以包括:发起第二远程计算设备的恢复,第二远程计算设备是包括不具有真实软件的远程计算设备的系统的一部分。
所述操作可以包括:响应于基于远程校验值与本地校验值之间的比较差异而确定远程计算设备不具有真实软件,发送使远程计算设备进入定义的错误响应状态的命令。
远程计算设备可以包括存储软件的真实副本的存储设备,其中,该存储设备未用于软件的真实副本的可用空间填充有至多预定阈值量或存储设备的预定容量的随机数据值。
所述操作进一步包括:存储指示远程计算设备计算远程校验值的时段的元数据,该时段是基于远程计算设备的一个或多个性能属性。
根据另一些实施例,本公开提供一种用于验证软件的系统。所述系统包括一个或多个处理器以及存储器设备,该存储器设备的一个或多个计算机可读指令当由一个或多个处理器执行时促使该系统执行一些操作。所述操作包括:从安全计算设备接收包括随机数据串的验证请求;响应于验证请求,基于随机数据串和软件来生成第一校验值;以及将第一校验值传送到安全计算设备,由此该安全计算设备将第一校验值与使用随机数据串和软件的真实副本来生成的第二校验值进行比较。
远程校验值可以由远程计算设备使用随机数据串作为用于产生远程校验值的密码校验和计算的加密密钥、附加输入或其组合而生成,并且计算本地校验值可以包括使用随机数据串作为用于产生本地校验值的密码校验和计算的加密密钥来计算本地校验值。
所述操作可以包括:向安全计算设备传送包括设备标识符的用户数据,并且生成第一校验值可以包括基于随机数据串、软件和用户数据来生成第一校验值,安全计算设备可以使用随机数据串、软件的真实副本和用户数据来生成第二校验值。
存储设备可以存储软件,并且存储设备未用于软件的可用空间可以填充有至多预定阈值量或存储设备的预定容量的随机数据值。
所述操作可以包括:将指示系统计算远程校验值的时段的元数据存储在安全计算设备中,该时段是基于系统的一个或多个性能属性。
根据又一些实施例,本公开提供一种用于验证软件的计算机实施的方法。所述方法包括:获取远程计算设备的软件的真实副本;向远程计算设备发送包括随机数据串的验证请求;从远程计算设备接收远程校验值,其中,该远程校验值是由远程计算设备基于随机数据串和远程计算设备上的软件而生成;基于远程计算设备用的软件的真实副本和随机数据串,计算本地校验值;以及基于所接收的远程校验值与本地校验值的比较,确定远程计算设备是否具有真实软件。
远程计算设备可以是电子控制单元。
所述方法可以包括:响应于由于远程校验值与本地校验值之差值而确定远程计算设备不具有真实软件,发起远程计算设备的恢复。
所述方法可以包括:响应于基于远程校验值与本地校验值之间的比较差异而确定远程计算设备不具有真实软件,发送使远程计算设备进入定义的错误响应状态的命令。
远程校验值可以由远程计算设备使用随机数据串作为用于产生远程校验值的密码校验和计算的密码密钥、附加输入或其组合而生成,并且计算本地校验值可以包括使用随机数据串作为用于产生本地校验值的密码校验和计算的密码密钥来计算本地校验值。
基于远程计算设备的软件、随机数据串和来自远程计算设备的用户数据的组合来生成远程校验值。
随机数据串可以是验证请求的唯一数据串。
所述操作可以包括:从远程计算设备获取包括设备标识符的用户数据。
根据还一些实施例,本公开提供一种用于验证软件的方法。所述方法包括:由远程计算设备,基于远程计算设备的数据串和软件来生成远程校验值;将远程校验值和数据串从远程计算设备输出到安全数据存储库;由安全计算设备,获取远程计算设备的软件的真实副本;从安全数据存储库中获取数据串和远程校验值;基于远程计算设备用的软件的真实副本和数据串,计算本地校验值;以及基于所获取的远程校验值与本地校验值的比较,确定远程计算设备是否具有真实软件。
生成远程校验值可以包括基于预定时间间隔来计算远程校验值。
根据再一些实施例,本公开提供一种用于验证远程计算设备上的现有软件的系统。所述系统包括一个或多个处理器以及存储器设备,该存储器设备的一个或多个计算机可读指令当由一个或多个处理器执行时促使该系统执行一些操作。所述操作包括:获取远程计算设备的软件的真实副本,其中,该真实副本是提供给远程计算设备的最近已知授权软件;向远程计算设备发送包括随机数据串的验证请求;从远程计算设备接收远程校验值,其中,该远程校验值是由远程计算设备基于随机数据串和远程计算设备上的现有软件而生成;基于软件的真实副本和随机数据串,计算本地校验值;以及基于所接收的远程校验值与本地校验值的比较,确定现有软件是否真实。
远程计算设备可以包括存储现有软件的存储设备,并且该存储设备未用于现有软件的可用空间包含至多预定阈值量或存储设备的预定容量的随机数据值。
根据更一些实施例,本公开提供一种用于验证远程计算设备上的现有软件的计算机实施的方法。所述方法包括:获取远程计算设备的软件的真实副本,其中,该真实副本是提供给远程计算设备的最近已知授权软件;向远程计算设备发送包括随机数据串的验证请求;从远程计算设备接收远程校验值,其中,该远程校验值是由远程计算设备基于随机数据串和现有软件而生成;基于真实副本和随机数据串,计算本地校验值;以及基于所接收的远程校验值与本地校验值的比较,确定现有软件是否真实。
远程计算设备的存储设备中未存储现有软件的可用空间包含至多预定阈值量或存储设备的预定容量的随机数据值。
可以在远程计算设备的初始化阶段期间获取真实副本,并将其存储在可信软件存储库中,以供后续验证期间进行访问。
附图说明
附图归并本说明书并构成其一部分,图中示出本公开主题的许多特征的实例。附图和说明书共同用来解释本文描述的各种技术的原理。
图1是根据本文所述示例性实施例的用于验证驻留在远程计算设备上的软件的示例系统的框图;
图2是根据本文所述示例性实施例的用于使用安全计算设备来验证驻留在远程计算设备上的软件的示例方法的过程流程图;
图3是根据本文所述示例性实施例的用于远程计算设备启用验证驻留在远程计算设备上的软件的示例方法的过程流程图;
图4是根据本文所述示例性实施例的示例设备的框图,其电子控制单元具有由安全计算设备验证的软件;
图5是根据本文所述示例实施例的用于远程计算设备启用验证驻留在远程计算设备上的软件的示例方法的过程流程图;以及
图6是可托管根据本文所述示例性实施例的系统和方法的计算系统实例的框图。
具体实施方式
现将结合附图来详述本发明技术的各种实施方案。简明起见,各附图中使用相同的附图标记指代相同或相似的部分。
本发明的技术、方法和设备可验证存储在任何合适的计算设备(诸如嵌入式计算设备)中的软件。例如,本发明的技术和设备包括安全计算设备,该安全计算设备对驻留在远程计算设备中的软件和静态数据执行远程验证。因此,在各实施例中,安全计算设备充当验证过程的控制器或管理器,并与通常与之不同位的计算设备(在本文中泛称为远程计算设备)进行交互。安全计算设备可实施本发明的技术,以确保远程计算设备正执行有效或授权的软件及相关数据,而不执行已更改或篡改(恶意或意外)或过时之类的软件和数据(例如,已被取代的旧软件版本)。对于许多远程部署的现有计算机化设备(例如IoT设备、计算机化医疗设备、交通工具中的ECU等),安全计算设备无法简单地请求远程计算设备执行远程计算设备程序空间的校验和或散列值并将该校验值(例如校验和)发送回安全计算设备,以与安全计算设备处所存储的本地已知有效值进行比较,因为未授权用户等可以更改驻留在远程计算设备中的软件以供给或重新计算远程计算设备中已有的先前查验过的校验值,之后未授权用户或软件可能破坏远程设备。另外,对于现有的计算机化设备,通常情况是在远程计算设备与试图查验或验证远程设备的软件的安全计算设备之间不存在安全通信信道。据此,在此情形下,无法推定在远程计算设备与安全计算设备之间发送的数据真实性,因为例如数据(如校验值、校验和等)可能来自正查验或验证的远程计算设备以外的位置。
本发明的技术利用单独的安全计算设备来验证存储在远程计算设备上的软件。例如,除了保留远程计算设备的软件和数据的校验值(诸如基于散列的消息认证码(“HMAC”)值),本发明技术的各实施方案包括使用安全计算设备来存储远程计算设备的软件和可选的静态数据的真实有效副本。在某些这样的实施方案中,为了验证远程计算设备上的软件和静态数据,安全计算设备可向远程计算设备发送验证请求,该验证请求可以包括唯一值,诸如随机数据串或以微秒为单位的当日时间值(例如,随机数)等。然后,响应于该请求,远程计算设备可使用所供给的随机数据串或值(例如,HMAC计算或基于分组密码的MAC,诸如CMAC)对其软件和静态数据执行校验值计算,也可创建其软件和静态数据的数字签名。
在某些实施例中,当远程计算设备接收到包括唯一值(诸如随机数)的验证请求时,远程计算设备可将所接收的随机数直接用作密钥或与远程计算设备可用的密钥组合使用,以对其软件和静态数据执行HMAC计算或基于密码的MAC计算(“校验值”)。
在各实施例中,远程计算设备将其计算出的校验值发送回发送请求的安全计算设备。安全计算设备可使用相同的随机数和共享密钥(若使用)来计算对远程计算设备的软件和驻留在安全计算设备上的静态数据的已查验副本的校验值(例如HMAC结果)。
如果安全计算设备从远程计算设备接收到的校验值与安全计算设备上本地生成的校验值相匹配,则可将远程计算设备的软件和静态数据视为已验证和正确,因为假定两个系统的计算中使用相同的随机数和/或密钥,如果远程计算设备中的有任何软件代码或静态数据不同于存储在安全计算设备中的已验证副本,则由远程设备完成的校验值计算将必然产生不同的校验值。在某些实施例中,如本文所用,校验值是基于任何合适密码技术的密码计算值。在某些实例中,利用诸如SHA-256等任何合适的密码技术来确定校验值,可防止未授权用户在未查验软件的情况下计算出相同的值。使用随机数(每个验证请求的唯一值)能够确保未授权用户无法重播或重用早先的校验值。
本发明的技术和设备包括各种实践应用和优于常规系统的技术改进。例如,安全计算设备可周期性请求验证远程计算设备的软件。因此,当远程计算设备从休眠状态或在任何其他时间唤醒时,可验证远程计算设备。本发明的技术可查验和确保在几乎永不经历上电复位的系统(诸如工业控制系统)中执行授权软件。附加地,本发明的技术可使远程计算设备能够在少干扰或不干扰其正常操作的情况下对其软件进行验证,其中通过在远程计算设备具有足够的可用资源(诸如CPU资源)时,调度在非活动时段期间发生验证。
在某些实施例中,本发明的技术和设备不要求远程计算设备具有专用的安全设备或执行影响性能但不影响远程计算设备成本的繁重处理。如本文所述,通过安全计算设备与远程计算设备之间的通信信道发送的数据最少(例如,包括随机数的验证请求以及包括校验值的响应),这会有利地减少通信带宽的利用率,并且能够经由有限带宽和性能有限信道的装备和基础设施(诸如控域网“CAN”总线或本地互联网“LIN”总线)进行通信。在某些实例中,安全计算设备与远程计算设备之间的通信信道可为WiFi通信信道、蓝牙通信信道、5G通信信道或以太网通信信道等。在某些实施例中,通信信道可为具有两个或更多个不同的印刷电路板或模块的设备外壳内的系统总线。在某些实例中,通信信道可包括在用于医疗保健应用、工业控制系统等的任何合适的物联网(IoT)系统内。例如,系统模块可以具有可执行安全启动的安全微处理器,但其他系统模块可以不具有安全微处理器。配备有安全微处理器的模块可周期性使用本发明的技术来验证不具有安全微处理器的其他模块中的软件。在某些实例中,外部系统可周期性验证配备有安全微处理器的模块的软件。
在某些实施例中,单个安全计算设备可验证多个包括复杂系统的远程计算设备。例如,交通工具可以配备有具有本文所述的安全计算设备功能的新颖性专用网关ECU,并且该网关ECU可验证交通工具中的一些或全部其他ECU,数目可达50个以上。在某些实例中,本文所述的验证技术可由中央安全计算设备来控制和督促,该中央安全计算设备可在任何距离和任何网络上与一个或多个远程计算设备进行通信。例如,位于中央数据中心的安全计算设备可通过因特网或任何合适的网络与部署在世界任何地方的远程计算设备进行通信。附加地,在某些实施方案中,如果安全计算设备检测到远程计算设备中的故障或问题,则安全计算设备可发起该远程计算设备中的恢复过程等;或者该安全计算设备可将整个复杂系统(诸如包含有问题远程计算设备(例如ECU)的交通工具)置于安全状态。
本发明的技术不仅涉及数据操作,而且还涉及改进的软件验证系统,该系统能够确定远程设备是否正执行真实软件,或未授权用户是否已修改远程设备的软件。附加地,本发明的技术采用了基于由远程设备生成远程校验值以及由安全计算设备生成本地校验值而验证由远程设备执行的软件的新颖方式。
图1是用于验证驻留在远程计算设备上的软件的示例系统的框图。系统100可包括一个或多个安全计算设备102以及一个或多个远程计算设备104、105和106。在某些实例中,安全计算设备102可以是任何合适的计算设备,诸如管理或网关电子控制单元、桌面型设备、膝上型设备、可穿戴设备、服务器或包含许多经由背板等连接的智能模块的系统模块。在某些实施例中,安全计算设备102可以是交通工具、水运工具(例如船舶)、飞行器、航天器、医疗设备、机器人、无人机、无线或有线通信模块以及IoT设备。在某些实施例中,安全计算设备102可以是主要执行本文所述的安全计算设备的功能的专用板载单元或可作为其一部分。在某些实例中,远程计算设备104、105和106可对应于任意数目的远程计算设备,诸如交通工具、水运工具、飞行器、航天器、机器人、无人机、医疗设备或IoT设备的板载单元(“OBU”)或ECU。例如,在交通工具实施例中,远程计算设备104、105和106可包括任意数目的ECU,它们存储可由安全计算设备102验证的软件和/或数据。例如,远程计算设备104、105和106可以是各种ECU,诸如引擎控制模块(ECM)、动力总成控制模块(PCM)、变速器控制模块(TCM)、制动控制模块(BCM或EBCM)、中央控制模块(CCM)、中央定时模块(CTM)、通用电子模块(GEM)、车身控制模块(BCM)、悬架控制模块(SCM)等。在某些交通有关的实施例中,远程计算设备104、105和106可以是交通控制设备(例如交通信号、交通灯或电子交通标志)的路边单元(RSU)、数字广告牌、行人预警系统、摩托车传感器、自行车传感器或电子标牌等,或与之对应。
在各实施方案中,安全计算设备102可包括一个或多个计算引擎107,其可验证远程计算设备104、105、106的软件;例如,可确定远程计算设备中的软件是否为真实、最新和/或未更改其原始形式。在某些实施例中,计算引擎107可以是或可以不是或包括硬件安全模块(“HSM”)(图中未示出)。HSM可增强本发明技术的安全性,并使安全计算设备102和远程计算设备104能够以更高的安全性来执行安全计算,以抵抗来自未授权用户等的威胁。在某些实施方案中,计算引擎107可以或可以设计为自身执行安全计算而无需嵌入式HSM。
在各实施方案中,可以在计算引擎107中使用不同的HSM版本。例如,HSM可以包括在计算引擎中的一个或多个内安装为插卡的嵌入式HSM。在这样的示例实施方式中,嵌入式HSM可以作为外围部件互连(PCI)HSM或PCI Express(PCIe)HSM安装在一个或多个计算引擎中。同样,例如计算引擎107中的HSM可以包括网络附接或网络连接的外置HSM,其与它们自己机箱中的计算引擎分离。在某些实施例中,HSM可以嵌入或集成到微处理器的密码处理器中。在某些实例中,微处理器可执行安全启动,以便利用能够计算密码校验和或验证数字签名的固件程序来验证由微处理器执行的软件。在某些实施例中,外部硬件模块可实施HSM功能。
在某些实施例中,安全计算设备102和远程计算设备104、105和106可通过诸如CAN总线或LIN总线等任何合适的数字信道108进行通信。在某些实例中,数字信道108可为安全或不安全的数字信道。例如,当验证由每个远程计算设备104、105和106执行或包含于其中的软件时,安全计算设备102和远程计算设备104、105和106可通过不安全的数字信道进行通信。下面结合图2和图3详述经由安全计算设备102验证驻留在远程计算设备104、105和106上的软件。在某些实例中,可信软件存储库110可经由数字信道108向远程计算设备104、105和106和/或安全计算设备102提供真实软件。例如,可信软件存储库110可存储应当存储在每个远程计算设备104、105和106中并由每个远程计算设备104、105和106执行的真实软件。如上所述,如果远程计算设备104、105和106互不相同(例如,如果设备104是PCM,设备105是TCM,设备106是EBCM),则可信软件存储库110存储这三个设备104-106中每一个的真实软件副本和相关联的静态数据(例如配置文件);例如,它存储三种不同的软件程序、图像等。
本领域普通技术人员应认识到,图1所示的部件和实施细节皆为解释简明清楚而呈现的实例。在不背离本发明技术原理的情况下,可使用其他部件、过程、实施细节和变型,因该实例并非旨在限制,而是可能存在许多变型。例如,系统100可包括任意合适数目的安全计算设备102和远程计算设备104,并且安全计算设备102和远程计算设备104可经由任意数目的数字信道108进行通信。在某些实例中,安全计算设备102可位于距远程计算设备104、105和106的任何合适距离处,使得数字信道108可以包括全局通信网络。例如,安全计算设备102可以不紧邻远程计算设备104、105和106。
图2是用于验证驻留在远程计算设备上的软件的示例方法的过程流程图。方法200可使用任何合适的计算设备来实施,诸如图1中的安全计算设备102和图4中的安全计算设备408。
在框202,安全计算设备可获取存储(或应存储)在远程计算设备内和/或由远程计算设备执行的软件的真实副本。在某些实施例中,安全计算设备可经由任何合适的网络连接、因特网等来获取软件的真实副本。在某些实例中,安全计算设备可在初始化时段期间(例如在制造和/或初始提供远程计算设备时,诸如在制造已有多个OBU的汽车过程中)从远程计算设备获取软件的真实副本。例如,可在初始化时段期间将软件存储或安装在安全计算设备和远程计算设备上。在某些情形下,安全计算设备和远程计算设备在初始化时段期间可能无法访问远程网络和/或在初始化时段期间可能未达成任何外部网络连接。在此情形下,安全计算设备和远程计算设备可以从诸如通用串行总线(“USB”)设备、CD-ROM、支持BluetoothTM的设备等任何合适的计算机可读介质获取真实软件。
在某些实施例中,安全计算设备还可以或替选地从存储设备(例如,实施可信软件存储库110的存储设备)获取远程设备的真实软件,该存储设备可在本地或通过诸如CAN或PCI总线等网络来访问。存储设备可以在初始化时段(诸如制造时段)期间进行下载或编程。存储设备可偶尔进行更新,以在远程设备上包含最新的真实软件。在某些实例中,对待安装在远程计算设备上的软件进行密码签名(或基于消息验证码进行查验),以使安全计算设备能够确定该软件是否为最新的真实软件。在某些实施例中,软件的副本可以存储在可信存储中和/或由数字签名或密码校验和来保护,以保护软件免遭未检测到的修改。
在某些实施例中,安全计算设备可获取任意数目的诸如电子控制单元等远程计算设备的任意数目的软件副本。一般而言,安全计算设备需要验证或评估远程设备的软件的真实副本。据此,安全计算设备可能无法从远程设备获取软件,因为远程计算设备上的软件可能已被有意或无意地更改或替换,使其不再真实。而安全计算设备应从可信设备下载、存储、编程或以其他方式获取真实的软件。例如,安全计算设备可在安全计算设备的制造期间从安全存储库等获取软件,并可经由来自可信来源的安全通信(例如,经由来自可信软件存储库110的安全空中更新)来周期性接收更新。在某些这样的实例中,安全计算设备可访问包含各个软件部件或部件总集的数字签名或消息认证代码(MAC)的可信存储库,使得未授权用户或未授权软件未经检测就不能替代或更改软件。
如前所述,在各种交通工具相关的实施例中,每个远程计算设备可以是电子控制单元,其存储并执行管理交通工具、路边单元等内部的不同部件或子系统的软件。如上关于图1所述,具有ECU的交通工具包括机动车、水运工具(例如船舶)、飞行器、航天器、无人机等。在某些实施例中,电子控制单元可驻留在路边单元(RSU)中,诸如交通控制设备(例如,交通信号、交通灯或电子交通标志)、数字广告牌、行人警告系统、摩托车传感器、自行车传感器或电子标牌等。此外,远程计算设备是或包括在许多非交通工具相关设备中,诸如医疗设备、机器人、无线或有线通信模块或IoT设备等。
在某些实例中,远程设备(例如,电子控制单元或路边单元)可经由CAN总线、LIN总线、以太网、网络连接或BluetoothTM连接等与安全计算设备进行通信。在各实施方案中,安全计算设备可从任意数目的远程计算设备中或在任意数目的远程计算设备中验证软件,如下关于框204-212详述。
在框204,安全计算设备可向远程计算设备发送包括随机数据串的验证请求。如本文所指,随机数据可包括每个验证请求唯一的任何时变数据,并包括足够的熵以防未授权用户预先计算或以其他方式确定随机数据值。在某些实施例中,验证请求可指示远程计算设备将提供安全计算设备用来查验或验证当前存储在远程计算设备中和/或由远程计算设备执行的软件的真实性的信息。在某些实施方案中,随机数据串(又可称为随机数)可用作密码校验和计算的数字密码密钥或用作验证过程期间数字签名中的变量。
在各实施方案中,安全计算设备可以任何合适的静态时间间隔或以随机时间间隔周期性发送针对特定远程设备的验证请求。例如,安全计算设备可在每日、每月或每年的固定时间将验证请求发送到远程计算设备。在某些其他实例中,安全计算设备可选择随机时间间隔,以基于预定数小时、数日或数月内事件等的随机时间发送验证请求。例如,安全计算设备可在一日内的任何随机选择的时间或一日中数小时内选择的随机时间将验证请求发送到远程计算设备。
在某些实施例中,当自上次验证(或自初始化)以来的时段超过预定阈值时,或响应于与用户输入相对应的外部信号,安全计算设备可验证远程计算设备的软件。例如,安全计算设备可在经过适当的预定数秒、数分钟、数小时、数日、数月、数年等还未验证(例如12小时、30日、6个月或1年)之后,验证远程计算设备的软件。在某些实施例中,可响应于系统事件,诸如每当远程计算设备从休眠状态转换为全功能状态等时,执行验证远程计算设备的软件。例如,安全计算设备可以从远程计算设备或从其他系统接收或以其他方式检测到远程计算设备已从任何合适的休眠状态、部分功率状态等转换为全功率且全功能状态的指示。安全计算设备可通过将验证请求传送到远程计算设备来响应于远程计算设备的功率状态变更的指示。在各实施例中,远程计算设备或远程计算设备所驻留的系统的功率状态的任何变更都可能触发将验证请求传送到远程计算设备。例如,远程计算设备从任何低功率状态转换为高功率状态都可能导致生成功率变更指示并将其传送到安全计算设备,这可发起验证驻留在远程计算设备上的软件。在某些实例中,安全计算设备可响应于由于起动交通工具等引起的功率状态变更的指示,其中起动交通工具变更其一个或多个嵌入式OBU远程计算设备的功率。安全计算设备也可在检测到功率状态变更与请求验证远程计算设备之间实施延时。
在框206,安全计算设备可从远程计算设备接收、获取或检测远程校验值,在各实施例中,该远程计算设备可以响应于框204的验证请求而创建并提供远程校验值。在各实施方案中,远程计算设备可以使用或基于随机数据串和远程计算设备上的软件来运算、计算或生成远程校验值。在某些实例中,可以使用随机数据串生成远程校验值,该随机数据串用作用于在远程计算设备内存储的软件上运行的加密计算的加密密钥。在各实例中,随机数据串可采取数字密钥、基于分组密码的消息认证码或任何合适的HMAC加密算法的随机数的形式。在某些实施例中,可以在对软件进行签名之前以某种方式将随机数据串附加到软件或以其他方式与软件组合,这样能够生成唯一数字签名。在使用固定密钥的某些实例中,随机数据串(例如随机数)强制每次计算产生不同的结果,从而确保新鲜度,这样防止未授权的设备或软件重放更早的计算。在某些实施例中,可以在无加密密钥的情况下利用散列函数来生成远程校验值。例如,可以通过对随机数值和软件执行散列算法来生成远程校验值。
在某些实施例中,使用存储在远程计算设备中的包括静态信息或只读信息等的软件,组合随机数据串和装置上的软件,运算、计算或生成远程校验值。例如,可通过应用于远程设备上的静态信息(诸如二进制可执行文件、目录等)的HMAC函数而生成远程校验值,但其中一个静态文件用作密钥。在某些实施例中,远程计算设备可标识并排除任何动态信息,诸如临时文件、用户输入数据、传感器数据、变量等。例如,远程计算设备可维护与静态信息相对应的文件列表以及与动态信息相对应的单独文件列表,这些列表可随时间进行修改或更改。可基于仅应用于静态信息文件的HMAC函数来生成远程校验值,而无需考虑动态信息文件。在某些实施例中,HMAC或CMAC功能可基于来自列表的静态信息组合其他随机数或数字签名等来生成远程校验值。例如,散列函数可基于具有固定密钥的密码和随机数与软件组合为明文来生成远程校验值。在某些实施例中,可使用其他适当的密码校验和计算技术来生成远程校验值。
在框208,安全计算设备可基于或使用远程计算设备中的软件的真实副本(来自框202)和随机数据串来生成或计算本地校验值。在某些实施例中,安全计算设备通过使用与远程计算设备用来生成远程校验值的算法或技术相同的算法或技术并且通过以与远程计算设备相同的方式使用随机数据串来生成本地校验值。相比之下,安全计算设备使用软件的真实副本来生成本地校验值,而远程计算设备使用软件的内部副本来生成远程校验值。在此条件下,如果远程计算设备的软件的内部副本与软件的真实副本相同,则远程校验值将与本地校验值相同;否则,这两个值将不同。
在某些实施方案中,可以通过使用随机数据串作为在软件的真实副本上运行的加密计算的加密密钥来计算或生成本地校验值。在这样的实施方案中,使用与应用、组合或使用随机数据字符串和驻留在远程计算设备中的软件相同的技术,应用、组合或使用随机数据串与驻留在远程计算设备中的软件;并且通过安全计算设备和远程计算设备皆使用相同的加密计算。在各实例中,加密计算可包括使用密码散列函数的基于散列的消息认证码以及用作加密密钥的随机Nonce等。在某些实例中,随机数据串可用作数字密钥,该数字密钥用于使用任何合适的基于密码的MAC算法来查验软件。在某些实例中,可使用应用于随机数值和软件的散列函数来进行无加密密钥的加密计算。
在框210,安全计算设备可基于远程校验值与本地校验值的比较来确定或查验远程计算设备是否正执行真实软件。例如,在各实施方案中,如果驻留在远程计算设备上的软件真实,例如,尚未更改并与在框202由安全计算设备获取的软件的已知真实副本相同,则远程校验值与本地校验值将是相同的值。如果远程校验值与本地校验值是相同的值,则安全计算设备可以确定远程计算设备确实在执行真实软件,并且安全计算设备无需执行附加操作,但在某些实施方案中,它可以保存令人满意的验证记录。类似地,如果驻留在远程计算设备上的软件已被修改、更改或以其他方式不同于在框202由安全计算设备获取的已知真实软件,则远程校验值与本地校验值将是不同的值。例如,如果对驻留在远程计算设备上的软件进行了未授权或无意的修改,则远程校验值将不同于由安全计算设备生成的本地校验值。如果远程校验值与本地校验值不同(这指示远程计算设备未使用真实软件),则安全计算设备可以采取附加动作,例如警告操作者,禁用或部分禁用远程计算设备,修正或恢复远程计算设备中的软件,或以其他方式解决问题。
作为附加动作的某一实例,在框212,安全计算设备可响应于确定或检测到远程校验值与本地校验值之差值来修改远程计算设备的操作;例如,根据框210的比较。例如,安全计算设备可禁用远程计算设备(例如,将其关闭)或部分禁用远程计算设备(例如,命令其进入安全模式等)。此外,本地安全计算设备可以生成警报等。在某些附加或替选的实施例中,安全计算设备可以修改包含远程计算设备的整个系统的操作,诸如修改包含具有非真实软件的ECU的乘用车的操作。
在某些实施例中,安全计算设备可响应于检测到远程校验值与本地校验值之差值而发起远程计算设备的恢复。在某些实例中,远程计算设备的恢复可包括将已知真实的软件加载或刷新到远程计算设备中,以替换在框210检测到的非真实软件。在各交通工具实施例中,远程计算设备的恢复也可以或替选地包括安全计算设备向交通工具的ECU发送进入安全状态或定义的错误响应状态的指令,诸如降低交通工具最高速度的“Limp Home(跛行模式)”。
在某些实例中,安全计算设备可响应于在整个系统中的单个远程计算设备中检测到远程校验值与本地校验值之差值(即,检测到非真实软件)而修改形成同一系统或作为同一系统的一部分(例如,同一交通工具中)的另一远程计算设备或多个其他远程计算设备的操作。例如,安全计算设备可响应于在任何单个电子控制单元中检测到非真实软件(其可能具有危险的意外损坏、未授权的修改、恶意的黑客攻击等)来发起交通工具中每个电子控制单元(或一个特定的其他ECU或全部ECU的特定子集)的恢复。在某些实施例中,安全计算设备可响应于检测到远程校验值与本地校验值之差值而请求或命令远程计算设备进入安全状态或安全模式。在某些实例中,安全状态可包括修改或禁用包括远程计算设备或由远程计算设备控制的系统或子系统的操作。例如,安全状态可包括防止焊接机器人的机械臂转动、将自动驾驶车辆引导到道路一侧或者限制一组车辆可用的速度和功能等。
图2中的过程流程图并非旨在指定方法200的操作将以任何特定顺序执行,或在每种情形下均将包括方法200的全部操作。附加地,方法200可包括任何合适数目的附加操作。例如,方法200还可包括从远程计算设备获取用户数据,其中,用户数据包括设备标识符、设备名称等。在某些实例中,设备标识符可包括硬件特定值,诸如微处理器的电子序列号等。在某些实施例中,方法200可包括基于远程计算设备的软件、随机数据串和来自远程计算设备的用户数据的组合来生成远程校验值。在某些实施例中,方法200可包括基于远程计算设备的软件的副本、随机数据串以及从远程计算设备或从能够接受用户输入并将其提供给远程计算设备和安全计算设备所获取的用户数据的副本的组合来计算本地校验值。
图3是用于远程计算设备启用验证驻留在远程计算设备上的软件的示例方法的过程流程图。方法300可利用诸如图1中的远程计算设备104或交通工具网关等任何合适的计算设备来执行。
在框302,远程计算设备可获取也提供给安全计算设备的所存储的软件的副本。在某些实施例中,在如上关于图2中的框202所述的初始化过程期间,远程计算设备可接收也在本地或内部存储到安全计算设备的软件的副本。例如,远程计算设备可经由任何合适的网络连接来接收软件的副本。在某些实施例中,远程计算设备可将软件的副本接收到任何合适的计算机可读介质,诸如通用串行总线(“USB”)设备、CD-ROM等。在某些实施例中,远程计算设备可从远程计算设备和安全计算设备可访问的可信软件存储库接收所存储软件的副本。在某些实例中,远程计算设备和安全计算设备可在不同的时间和位置获取所存储的软件的副本。例如,远程计算设备可在制造期间获取软件,而安全计算设备可在日后时间获取软件。
在某些实施例中,远程计算设备可配置为具有一定量的存储所接收的软件的副本的存储和/或存储器以及附加预定量的可用存储和/或存储器。例如,预定量的可用存储和/或存储器可以是10兆字节、100兆字节或任何其他合适值。在某些实例中,远程计算设备的可用存储可存储随机数据值。在某些实例中,随机数据值可共享或以其他方式传送到安全计算设备,以使安全计算设备能够计算其校验值的本地副本。然后,可在总可用存储上计算密码校验和,包括存储的程序软件和填充其余可用空间的随机数据。这种技术能够防止远程计算设备在其存储器中存储恶意软件和正版软件的副本,并使用该正版软件副本针对验证请求计算正确的答案或密码校验和值,然后执行其他未授权的存储软件。
在框304,远程计算设备可从安全计算设备接收包括随机数据串的验证请求。在某些实施例中,远程计算设备可促使安全计算设备生成验证请求并将验证请求传送到远程计算设备。例如,远程计算设备可向安全计算设备传送远程计算设备已从休眠状态转换为全功能状态的指示。在某些实施例中,当远程计算设备已从任何合适的休眠状态、部分功率状态等转换为全功率和全功能状态时,远程计算设备可生成指示。如上关于图2所述,安全计算设备可通过将验证请求传送到远程计算设备来响应于远程计算设备的功率状态变更的指示。在某些实施例中,远程计算设备的任何功率状态变更都可能触发生成指示符并将指示符传送到安全计算设备。例如,远程计算设备内从任何低功率状态转换为高功率状态可能导致生成发起验证驻留在远程计算设备上的软件的指示并将该指示传送到安全计算设备。在某些实施例中,远程计算设备可在任何合适的随机时段、静态时段等接收验证请求。
在某些实施例中,如下关于框306详述,验证请求可指示将计算或生成远程值的时段。在某些实例中,该时段是基于远程计算设备的处理器每秒或任何其他合适的时间帧可执行的指令数来确定。例如,验证请求可指示远程计算设备具有5秒、10秒或任何其他合适的时间量的时段来生成或计算远程校验值。在某些实例中,远程计算设备可配置为在接收到验证请求后立即执行软件校验或验证。安全计算设备可具有远程计算设备执行软件校验并将远程校验值发送到安全计算设备所需时间的本地时间估计。如果远程设备执行软件校验的速度太快或太慢,则安全计算设备可确定远程计算设备可能正执行未授权的软件。在某些实施例中,安全计算设备可存储指示远程计算设备计算远程校验值的时段的元数据,其中,该时段是基于远程计算设备的一个或多个性能属性。性能属性可包括处理器速度、存储器读/写速度等。这种技术能够防止远程计算设备为存储未授权的软件而压缩所存储的正版软件。在某些实例中,验证请求的时段能够防止远程计算设备为提供正确的远程校验值而解压缩正版软件。
在框306,远程计算设备可基于用作软件的加密计算的加密密钥的随机数据串或者基于不使用加密密钥而应用于随机数值和软件的散列函数来运算、计算或生成远程校验值。在某些实施例中,基于存储在远程计算设备中的静态信息或只读信息来生成远程校验值。例如,可通过应用于静态信息(诸如二进制可执行文件、目录等)的HMAC函数而生成远程校验值。在某些实施例中,远程计算设备可标识并排除任何动态信息,诸如临时文件、用户输入数据等。例如,远程计算设备可维护与静态信息相对应的文件列表以及与动态信息相对应的单独文件列表,可对这些列表进行修改。可基于应用于静态信息列表的散列函数来生成远程校验值,同时从密码校验和函数计算中忽略动态信息。例如,远程计算设备可标识一组静态可执行文件,并基于将任何合适的HMAC功能等应用于这些静态可执行文件的二进制表示来创建生成远程校验值。在某些实施例中,远程计算设备可标识与存储在远程计算设备上的软件相对应的静态元数据。例如,静态元数据可包括只读软件的安装时间、只读文件的文件大小等。在某些实施例中,远程计算设备可通过将任何合适的密码校验和函数应用于静态元数据和随机数或者随机数和数字签名来生成远程校验值。在某些实施例中,远程计算设备可通过将密码校验和应用于远程计算设备的存储或存储器中的所存储的软件和所存储的随机数据值两者来生成远程校验值。例如,远程计算设备可包括存储软件的真实副本和随机数据值的存储设备,该存储设备的可用存储容量低于预定阈值。例如,存储设备中未用于软件的真实副本的可用空间可填充有至多预定阈值量或存储设备的预定容量的随机数据值。在某些实施例中,预定阈值可以是5MB、10MB等。在某些实例中,远程计算设备可生成并存储随机数据值,直到存储设备中的可用存储空间低于预定阈值为止。这种技术能够防止远程计算设备存储未授权的软件。
在框308,远程计算设备可将远程校验值传送到安全计算设备。例如,远程计算设备可经由任何合适的CAN总线、LIN总线、网络连接、BluetoothTM连接、计算机可读介质等将远程校验值传送到安全计算设备。
在某些实施例中,软件的全部特征在远程计算设备上不可用,直到远程计算设备的软件经过安全计算设备验证为止。在某些实例中,远程计算设备可在确认正确地验证软件后接收关于软件全部操作的许可。例如,在验证了存储在远程计算设备上的软件之后,可启用该软件内的附加特征以供执行。
应当理解,图3是本发明技术的示例性实施方案,而在附加实施方案中,系统300可包括更少或附加的部件和设备。例如,方法300可包括由远程计算设备计算或生成随机数值和存储在远程计算设备上的静态代码的散列。在某些实例中,随机数的散列或随机数本身可用作对已知的明文消息进行加密的加密密钥。在某些实施例中,远程计算设备可将加密的明文消息发送到安全计算设备。如果安全计算设备不能解密加密后的明文消息或密文,则所述方法可包括确定存储在远程计算设备中的软件已被修改为包括未授权的软件或指令。
在某些实施例中,验证请求中的随机数值包括基于日期(或自预定年份以来的秒数等)的完整唯一时间。在某些实例中,可以不将随机数值从安全计算设备传送到远程计算设备。例如,所述方法可包括由安全计算设备向远程计算设备发出提供校验值的命令,然后远程计算设备可用校验值以及由远程计算设备处理验证请求的时间/日期做出响应。在某些实例中,安全计算设备可确认该时间/日期是在预期范围内,而不重复旧值。在某些实施例中,可以不提示远程计算设备提供校验值。例如,远程计算设备可以在日志文件或存储设备中的任何其他合适的位置中周期性输出带日期/时间的校验值。可以由安全计算设备在任何合适的时间验证存储在日志文件中的校验值。在某些实施例中,日志文件可以存储在任何合适的外部计算设备或外部存储设备内,并且日志文件可以包括由远程计算设备以预定时间间隔(诸如5秒、1分钟或5分钟等)运算出的校验值。在某些实例中,远程计算设备的存储设备中的任何其余可用空间可填充有随机数据值,以防存储预先计算的校验值。在某些实例中,如果时钟不可用,则可将计数值初始化并递增为未传送的随机数。
图4是根据本文所述示例性实施例的示例交通工具的框图,其电子控制单元具有由安全计算设备验证的软件。
在某些实施例中,交通工具400可包括电子控制单元(“ECU”)402、404、406,它们是可耦合到安全计算设备408、安全ECU或任何合适设备的远程计算设备。在某些实施例中,安全计算设备408可包括存储在每个ECU 402、404和406上的软件的副本。该软件的副本可包括存储在每个ECU 402、404和406中的只读文件和其他静态信息。在某些实例中,每个ECU402、404、406可响应于验证请求来运算、计算或生成单独的唯一远程校验值,并经由数字信道410和412将单独的远程校验值传送到安全计算设备408。然后,基于如上关于图3和图4所述的处理,安全计算设备408可基于随机数据串或随机数来验证存储在每个ECU 402、404和406上的静态软件是否尚未修改。
本领域普通技术人员应认识到,图4所示的部件和实施细节皆为解释简明清楚而呈现的实例。在不背离本发明技术原理的情况下,可使用其他部件、过程、实施细节和变型,因该实例并非旨在限制,而是可能存在许多变型。
图5是用于远程计算设备启用验证驻留在远程计算设备上的软件的示例方法的过程流程图。方法500可利用诸如图1中的远程计算设备104或交通工具网关等任何合适的计算设备来执行。
在框502,远程计算设备可基于数据串和存储在远程计算设备上的软件来运算、计算或生成远程校验值。数据串可以是任何合适的随机值、时间戳或递增计数等。在某些实施例中,基于存储在远程计算设备中的静态信息或只读信息来生成远程校验值。例如,如上关于图3中的框306所述,可通过应用于静态信息(诸如二进制可执行文件、目录等)的HMAC函数而生成远程校验值。在某些实施例中,可基于应用于静态信息列表的散列函数来生成远程校验值,同时从密码校验和函数计算中忽略动态信息。在某些实施例中,远程计算设备可通过将任何合适的密码校验和函数应用于静态元数据和数据串来生成远程校验值。在某些实例中,生成远程校验值可包括基于预定时间间隔(例如,任意数秒、数分钟、数小时或数日)来运算远程校验值。
在框504,远程计算设备可将远程校验值和数据串从远程计算设备输出到安全数据存储库。例如,远程计算设备可经由任何合适的CAN总线、LIN总线、网络连接、BluetoothTM连接、计算机可读介质等将远程校验值传送到安全数据存储库。在某些实施例中,安全数据库可以是任何合适的可接收和存储来自远程计算设备的远程校验值和数据串的存储设备、日志文件、计算设备、服务器等。
在某些实施例中,当安全计算设备不可用或离线时,远程计算设备可周期性验证软件。例如,远程计算设备可在未从安全计算设备接收到具有随机数值的验证请求或命令的情况下验证存储在远程计算设备上的软件。在某些实例中,安全计算设备可与安全数据存储库异步通信以访问远程校验值并验证远程计算设备的软件。
在框506,安全计算设备可获取也提供给远程计算设备的所存储软件的副本。在某些实施例中,安全计算设备可在如上关于图2中的框202所述的初始化过程中接收软件的副本。在某些实施例中,安全计算设备可从安全计算设备和远程计算设备可访问的可信软件存储库中接收所存储的软件的副本。在某些实例中,远程计算设备和安全计算设备可在不同的时间和位置获取所存储的软件的副本。
在框508,安全计算设备可从安全数据存储库获取数据串和远程校验值。例如,安全计算设备可使用任何合适的数字通信信道来访问安全数据存储库,以检索由远程计算设备运算出的数据串和远程校验值。
在框510,安全计算设备可基于或使用远程计算设备中的软件的真实副本(来自框508)和数据串来生成或计算本地校验值。在某些实施例中,安全计算设备通过使用与远程计算设备用来生成远程校验值的算法或技术相同的算法或技术并且通过以与远程计算设备相同的方式使用数据串来生成本地校验值。在某些实例中,安全计算设备使用软件的真实副本来生成本地校验值,而远程计算设备使用软件的内部副本来生成远程校验值。在此条件下,如果远程计算设备的软件的内部副本与软件的真实副本相同,则远程校验值将与本地校验值相同;否则,这两个值将不同。在某些实例中,可使用应用于数据串和软件的散列函数来进行无加密密钥的加密计算。
在框512,安全计算设备可基于远程校验值与本地校验值的比较来确定或查验远程计算设备是否正执行真实软件。例如,在各实施方案中,如果驻留在远程计算设备上的软件真实,例如,尚未更改并与在框506由安全计算设备获取的软件的已知真实副本相同,则远程校验值与本地校验值将是相同的值。如果远程校验值与本地校验值是相同的值,则安全计算设备可以确定远程计算设备确实在执行真实软件,并且安全计算设备无需执行附加操作,但在某些实施方案中,它可以保存令人满意的验证记录。类似地,如果驻留在远程计算设备上的软件已被修改、更改或以其他方式不同于在框506由安全计算设备获取的已知真实软件,则远程校验值与本地校验值将是不同的值。
应当理解,图5是本发明技术的示例性实施方案,而方法500可在附加实施方案中包括更少或附加的框。
图6是包括可用于实施根据本技术实施方案的系统和方法的计算系统602的计算环境600的示例框图。也可以使用其他部件和/或布置。在某些实施方案中,计算系统602可以用于至少部分地实施图1至图5中的各种部件,诸如安全计算设备102或图1中的远程计算设备104等。在某些实施方案中,类似于计算系统600的一系列计算系统可以均定制有专用硬件和/或编程为专用服务器以实施图1至图5中的部件之一,这些部件可以经由网络504彼此通信。
在图6所示的实例中,计算系统600包括数个部件,诸如中央处理单元(CPU)606、存储器608、输入/输出(I/O)设备610、硬件安全模块(HSM)612以及非易失性存储设备614。系统600可以采用各种方式来实施。例如,作为集成平台(诸如服务器、工作站、个人计算机、膝上型计算机等)的实施方案可以包括CPU 606、存储器608、非易失性存储设备614和I/O设备610。在这样的配置中,部件606、608、614和610可以通过本地数据总线连接和通信,并可以经由外部I/O连接来访问数据存储库616(例如实施为单独的数据库系统)。I/O部件610可以通过直接通信链路(例如硬接线或本地Wi-Fi连接)、通过诸如局域网(LAN)或广域网(WAN,诸如蜂窝电话网络或因特网)等网络和/或通过其他合适的连接而连接到外部设备。系统600可以是独立系统,或者可以是大型系统的子系统。
CPU 606可以是一个或多个已知的处理器或处理设备,诸如产自加利福尼亚州圣塔克拉拉IntelTM公司的CoreTM系列微处理器、包含HSM的安全微处理器(如NXP i.MX8)或者产自加利福尼亚州森尼韦尔AMDTM公司的AthlonTM系列微处理器。存储器608可以是一个或多个快闪存储设备,其配置为存储由CPU 606执行或使用以执行与本技术实施方案相关的某些功能、方法和过程的指令和信息。存储设备614可以是易失性或非易失性、磁性、半导体、磁带、光学或其他类型的存储设备或者计算机可读介质,包括诸如CD和DVD的设备以及旨在长期存储的固态设备。
在图示的实施方案中,存储器608包含从存储设备614加载的一个或多个程序或应用618,它们被CPU 606执行时执行根据本技术的各种操作、程序、过程或方法。替选地,CPU606可以执行位置远离系统600的一个或多个程序。例如,系统600可以经由网络604访问一个或多个远程程序,该程序被执行时执行与本技术实施方案相关的功能和过程。
在某一实施方案中,存储器608可以包括用于执行本文针对安全计算设备102和/或远程计算设备104描述的专用功能和操作的程序618。在某些实施方案中,存储器608还可以包括实施为本技术提供辅助功能的其他方法和过程的其他程序或应用。在某些实例中,存储器608可包括任何合适的非暂时性计算机可读介质。例如,非暂时性计算机可读介质可包括计算机可执行指令,它们指导CPU606根据本发明的技术来执行指令。
存储器608还可以配置有与本技术无关的其他程序(图中未示出)和/或被CPU 606执行时执行本领域公知的几种功能的操作系统(图中未示出)。举例而言,操作系统可以是Microsoft WindowsTM、UnixTM、LinuxTM、Apple ComputersTM操作系统或其他操作系统。选择操作系统乃至使用操作系统并非本技术的必要技术特征。
HSM 612可以是具有其自己处理器的设备,该处理器安全生成并存储数字安全资产和/或安全执行各种加密和敏感计算。HSM 612保护数字安全资产(诸如加密密钥)和其他敏感数据免遭攻击者可能访问。在某些实施方案中,HSM 612可以是直接附接到计算系统600的插卡或插板。HSM 612也可集成到单芯片微处理器中。
I/O设备610可以包括一个或多个允许系统600接收和/或发送数据的输入/输出设备。例如,I/O设备610可以包括一个或多个允许从用户输入数据的输入设备,诸如键盘、触摸屏、鼠标等。另外,I/O设备610可以包括一个或多个允许将数据输出或呈现给用户的输出设备,诸如显示屏、CRT监视器、LCD监视器、等离子显示器、打印机、扬声器设备等。I/O设备610还可包括一个或多个允许计算系统600例如与其他机器和设备进行数字通信的数字和/或模拟通信输入/输出设备。其他配置和/或数目的输入和/或输出设备可以合并到I/O设备610中。在某些实例中,I/O设备610可在单芯片微处理器上实施。
在所示的实施方案中,系统600连接到网络604(诸如因特网、专用网、虚拟专用网、蜂窝网或其他网络或者这些网络的组合),该网络604又可以连接到各种系统和计算机器,诸如服务器、个人计算机、膝上型计算机、客户端设备等。一般而言,系统600可以经由网络604从外部机器和设备输入数据并向外部机器和设备输出数据。
在图6所示的示例实施方案中,数据存储库或数据源616是系统600外置的独立数据库、文件系统或专用存储器。在其他实施方案中,数据源616可以由系统600托管。在各实施方案中,数据源616可以管理并存储用于实施根据本技术的系统和方法的数据。例如,数据源616可以由HSM 612或CPU 606来管理,并存储包含由系统100验证的每个远程计算设备104的软件和/在元数据等的数据结构。
数据源616可以包括一个或多个存储信息并可通过系统600访问和/或管理的数据库、文件系统或其他存储体。举例而言,数据库616可以是OracleTM数据库、SybaseTM数据库或其他关系数据库。然而,根据本技术的系统和方法不限于单独的数据结构或数据库,甚至不限于使用数据库或数据结构。在某些实例中,数据源616可包括文件系统或平面文件等。
本领域普通技术人员应认识到,图6中系统的部件和实施细节皆为解释简明清楚而呈现的实例。可以使用其他部件和实施细节。
尽管上述实例使用了诸如OBU、ECU和RSU的计算机化设备的特例,但为解释清楚起见,本技术不限于那些特例。根据本技术的各实施方案可以与多种计算机化设备配合使用,诸如医疗设备(例如透析机、输液泵等)、机器人、无人机、自动驾驶交通工具、无线通信模块(例如嵌入式通用集成电路卡(eUICC))等。
考虑到本公开技术的说明书及其实践,本领域技术人员将容易理解本技术的其他实施方案。本公开主题所属领域的技术人员将容易理解本公开主题的说明性实施例的各种修改以及其他实施例,皆视为归属本公开主题的保护范围内。