用于远程车辆的安全固件更新

文档序号:1246616 发布日期:2020-08-18 浏览:17次 >En<

阅读说明:本技术 用于远程车辆的安全固件更新 (Secure firmware update for remote vehicles ) 是由 苏奥詹 于 2018-12-29 设计创作,主要内容包括:提供了远程车辆上的安全固件更新的系统和方法。所述系统从所述车辆接收用于所述车辆固件的更新的请求,并且识别所述车辆的区块链地址。所述系统生成会话标识并标识所述固件更新文件。所述系统基于所述会话标识和所述固件更新文件的第一散列值的组合生成数字签名。所述系统提供所述数字签名以存储在区块链地址处的区块中。系统将所述会话标识发送到车辆。所述系统将所述固件更新文件传输到所述车辆。所述车辆使用从所述区块链地址处的区块检索的所述数字签名、从所述数据处理系统接收的所述固件更新文件的所述第二散列值、以及从所述数据处理系统接收的所述会话标识来验证所述固件更新文件。(Systems and methods for secure firmware updates on remote vehicles are provided. The system receives a request from the vehicle for an update of the vehicle firmware and identifies a blockchain address of the vehicle. The system generates a session identification and identifies the firmware update file. The system generates a digital signature based on a combination of the session identification and the first hash value of the firmware update file. The system provides the digital signature for storage in a block at a block chain address. The system sends the session identification to the vehicle. The system transmits the firmware update file to the vehicle. The vehicle verifies the firmware update file using the digital signature retrieved from the block at the blockchain address, the second hash value of the firmware update file received from the data processing system, and the session identification received from the data processing system.)

用于远程车辆的安全固件更新

相关申请的交叉引用

本申请要求保护于2018年6月22日提交的,名称为“SECURE FIRMWARE UPDATESFOR REMOTE VEHICLES”、申请号为16/016379美国专利申请的权益和优先权,所述申请通过引用整体并入到本文中。

背景技术

车辆,例如汽车,可以包括电子部件。电子部件可以在车辆上或为车辆执行功能。车辆可以使用电子部件来促进与车辆相关的功能,例如驾驶。

发明内容

本公开涉及用于远程车辆的安全固件更新的系统和方法。车辆可以包括运行或执行固件的多个数字硬件部件。由数字硬件部件运行的固件可以周期性地更新以改进数字硬件部件的功能。由于网络拓扑问题、网络安全威胁或攻击、或者可能导致固件改变的其他意外或恶意问题,安全地传送固件更新文件可能是具有挑战性的。此外,在没有昂贵或难以扩展的基础设施的情况下高效安全地传输固件更新文件可能是具有挑战性的。

本技术方案的系统和方法提供了远程车辆上的安全固件更新。本技术方案可以提供一种用于将固件更新安全地传输到远程车辆的高效、可扩展的系统。例如,本技术方案可以组合密码散列(例如:SHA256)、会话管理标识并生成存储在不可改变的区块链事务(transaction)中的数字签名。数字签名可以确保在空中下载软件更新过程期间从服务器下载到车辆的固件的数据完整性。车辆可以通过将从区块链接收的固件更新文件和会话标识的散列值与从服务器接收的固件更新文件和会话标识的散列值进行比较来验证固件更新。在确定匹配时,车辆可以继续安装固件更新文件。

至少一个方面涉及一种在远程车辆上执行安全固件更新的系统。所述系统可以包括数据处理系统。所述数据处理系统可以包括一个或多个处理器和存储器。所述数据处理系统可以包括一个或多个车辆识别部件、会话处理器部件、固件控制器部件、散列部件和签名生成部件。所述数据处理系统可以通过车辆接口接收请求。所述请求可以是用于由车辆的部件执行的固件的更新。所述数据处理系统可以基于请求识别车辆的区块链地址。所述数据处理系统可以响应于所述请求而生成用于所述请求的会话标识。数据处理系统可以响应于所述请求识别固件更新文件。数据处理系统可以基于会话标识和通过对固件更新文件应用散列函数而生成的第一散列值的组合来生成数字签名。数据处理系统可以提供数字签名以存储在区块链地址处的区块中。数据处理系统可以将会话标识传输到车辆。数据处理系统可以将固件更新文件传送到车辆。由车辆接收固件更新文件可以使车辆在安装之前验证固件更新文件。车辆可以基于从区块链地址处的区块检索的数字签名与第二散列值的比较来验证固件更新文件,所述第二散列值是通过将散列函数应用于从数据处理系统接收的固件更新文件和从数据处理系统接收的会话标识而生成的。

至少一个方面涉及一种在远程车辆上执行安全固件更新的方法。所述方法可以由数据处理系统执行。所述方法可以包括数据处理系统通过车辆接口接收请求。所述请求可以是用于由车辆的部件执行的固件的更新。所述方法可以包括数据处理系统基于请求识别车辆的区块链地址。所述方法可以包括数据处理系统响应于所述请求而生成用于所述请求的会话标识。所述方法可以包括数据处理系统响应于所述请求而识别固件更新文件。所述方法可以包括数据处理系统基于会话标识和通过对固件更新文件应用散列函数而生成的第一散列值的组合来生成数字签名。所述方法可以包括数据处理系统提供数字签名以存储在区块链地址处的区块中。所述方法可以包括数据处理系统将会话标识传输到车辆。所述方法可以包括数据处理系统将固件更新文件传送到车辆。由车辆接收固件更新文件可以使车辆在安装之前验证固件更新文件。车辆可以基于从区块链地址处的区块检索的数字签名与第二散列值的比较来验证固件更新文件,所述第二散列值是通过将散列函数应用于从数据处理系统接收的固件更新文件和从数据处理系统接收的会话标识而生成的。

至少一个方面涉及一种在远程车辆上执行安全固件更新的系统。所述系统可以包括具有一个或多个处理器和存储器的车辆接口系统。车辆接口系统可以包括验证部件、区块链接口部件和散列部件中的一个或多个。车辆接口系统可以向数据处理系统发送用于由车辆的部件执行的固件进行更新的请求。所述请求可以指示车辆的区块链地址。车辆接口系统可以从数据处理系统接收针对所述请求生成的会话标识。车辆接口系统可以响应于会话标识的接收而向数据处理系统发送下载固件更新文件的请求。车辆接口系统可以从数据处理系统接收固件更新文件。车辆接口系统可以从区块链系统请求存储在区块链地址处的数字签名。数字签名可以存储或包括基于对固件更新文件应用散列函数而生成的第一散列值,以及会话标识。车辆接口系统可以响应于请求从区块链系统接收数字签名。车辆接口系统可以基于散列函数对固件更新文件的应用来确定第二散列值。车辆接口系统可以基于第一散列值与第二散列值的比较以及数字签名的会话标识与从数据处理系统接收的会话标识的比较来执行固件更新文件的验证。

这些和其它方面和实施例将在下面详细讨论。前述信息和以下详细描述包括各个方面和实施例的说明性示例,并且提供了用于理解所要求保护的方面和实施例的性质和特征的概览或框架。附图提供了对各个方面和实施例的说明和进一步理解,并且被并入本说明书中并构成本说明书的一部分。

附图说明

附图不是按比例绘制的。在各个附图中,相同的附图标记和名称表示相同的元件。为了清楚起见,不是每个元件都标记在每幅图中。在附图中:

图1描绘了示出根据实施例用于在远程车辆上执行安全固件更新的示例性系统的框图;

图2描绘了根据实施例的用于在远程车辆上执行安全固件更新的系统的示例性操作图;

图3描绘了根据实施例的在远程车辆上执行安全固件更新的示例性流程图;

图4描绘了根据实施例的由系统执行以在远程车辆上执行安全固件更新的示例性流程图;

图5描绘了根据实施例的在远程车辆上执行安全固件更新的示例性方法;

图6是示出了可以用于实现这里描述和示出的系统、流程和方法的元件的计算机系统的体系结构的框图,该系统、流程和方法包括例如图1中示出的系统、图2-4中示出的操作、流程或例子以及图5中示出的方法。

具体实施方式

以下是与用于车辆控制器的基于网络的路径生成的方法、装置和系统相关的各种概念的更详细描述和实施例。以上介绍并在下面更详细讨论的各种概念可以以多种方式中的任何一种来实现。

本公开涉及用于远程车辆的安全固件更新的系统和方法。车辆,例如汽车,可以包括运行或执行固件的多个数字硬件部件。数字硬件部件可以执行车辆的关键功能或者集成到关键车辆系统。由数字硬件部件运行的固件可以周期性地更新以改进数字硬件部件的功能。当识别出硬件部件的错误、故障、问题或改进时,服务器可以传送所述部件的固件更新。然而,由于车辆远离服务器以及与网络拓扑或恶意网络攻击相关联的问题,文件传输可能被破坏或以其他方式改变。将损坏或改变的固件更新安装到数字硬件部件可能导致关键车辆系统或功能的故障或其他非期望的操作。因此,由于固件更新的频率随着越来越多的远程车辆的越来越多的数字硬件部件而增加,使用网络向远程车辆安全地提供固件更新文件可能是具有挑战性的。由于网络拓扑问题、网络安全威胁或攻击、或者可能导致固件被改变的其他意外或恶意问题,安全地传送固件更新文件可能是具有挑战性的。此外,在没有昂贵或难以扩展计算基础设施的情况下高效安全地传输固件更新文件可能是具有挑战性的。

例如,车辆(例如智能车辆、计算机化车辆、自主车辆、电动车辆、混合动力车辆、部分自主车辆、具有驾驶员辅助功能的车辆、轿车、卡车、船或摩托车)可以包括多个(例如,5、10、15、20、25、30、50、100或更多个)数字硬件部件,例如控制单元、系统、模块或控制器。这些数字硬件部件可以执行或运行固件,例如软件程序,其可以被周期性地更新以确保车辆的最佳操作。服务器可以执行空中下载固件更新,其可以包括通过计算机网络传送固件更新文件。服务器可以使用虚拟专用网(VPN)隧道或RSA密钥对(例如,公钥加密技术)来加密和解密固件,从而执行空中下载更新。这些网络安全措施可以防止车辆固件在通过因特网传输文件时被改变(偶然或恶意)。然而,VPN隧道可以包括对等连接,对等连接利用昂贵的和难以扩展的计算或网络基础设施。例如,使用、扩展或构建VPN网络运营载体以执行车辆制造商销售的每百万辆汽车的单个软件更新可能花费车辆制造商数百万美元。公钥/私钥技术具有车辆制造商的私钥可能被可以访问文件系统的雇员或数据中心操作员偷窃或非法侵入的弱点。一旦私钥被利用,车辆制造商将难以或具有挑战性地召回所有已经在路上的车辆以更新存储在车辆内的车辆制造商的公钥。

本技术方案的系统和方法提供了远程车辆上的安全固件更新。本技术方案可以提供一种用于将固件更新安全地传输到远程车辆的高效、可扩展且较不易受攻击的系统。例如,本技术方案可以组合密码散列(例如:SHA256)、会话管理标识并生成存储在不可改变的区块链事务中的数字签名。数字签名可以确保在空中软件更新过程期间从服务器下载到车辆的固件的数据完整性。车辆可以通过将从区块链接收的固件更新文件和会话标识的散列值与从服务器接收的固件更新文件和会话标识的散列值进行比较来验证固件更新。在确定匹配时,车辆可以继续安装固件更新文件。

软件空中下载更新可以包括事务,所述事务包括通过网络下载软件的副本。包括软件的事务可以被保护以防止网络安全攻击,所述网络安全攻击可以影响与软件更新相关联的车辆的安全。因此,本技术方案的系统和方法可以提供固件空中下载更新,固件空中下载更新可以防止或阻止车辆使用改变的固件执行固件更新。

例如,当车辆从数据处理系统(例如,车辆制造商或固件的其他提供商的服务器)请求新固件时,车辆可以首先将请求发送到包括车辆的内置区块链地址的数据处理系统。所述数据处理系统可以执行或包括更新服务或被配置为执行更新服务的一个或多个部件。所述数据处理系统可以为所述事务生成会话标识(“ID”)。数据处理系统可以标识或生成所请求的固件的SHA256散列。所述数据处理系统可以组合会话ID与sha256散列以生成用于所述事务的唯一数字签名。数据处理系统可以将数字签名传输到车辆的区块链地址,以使数字签名被存储在事务记录(例如,不可改变的事务记录)中。数据处理系统可以向车辆发送具有会话ID的响应。数据处理系统可以向车辆发送具有区块链的事务ID的响应。数据处理系统可以向车辆发送具有会话ID和区块链的事务ID的响应。

车辆可以从数据处理系统接收响应,并从数据处理系统下载固件。车辆可以通过向区块链系统查询其从数据处理系统接收的事务ID来获得数字签名。在车辆完成下载固件之后,车辆可以确定所下载的固件的SHA256散列,并利用存储在从区块链系统检索的数字签名中的相同散列来验证它。如果车辆确定这两个SHA256散列匹配,则车辆可以确定数据在传输过程期间未被修改,并且车辆利用下载的文件执行固件更新是安全的。如果车辆确定SHA256散列不匹配,则车辆可以确定固件被更改,然后丢弃下载的文件。

本技术方案提供了各种技术优点,包括例如:1)本技术方案可以不需要部署难以扩展的VPN基础设施;2)本技术方案可以不依赖于能够被侵入数据处理系统的恶意用户利用的预先建立的私钥/公钥对;以及3)本技术方案可以利用存储在区块链中的数字签名来保护整个事务,所述数字签名在由数据处理系统创建之后是不可变的并且被保护以免受任何更改。

因此,本技术方案的系统和方法可以保证整个空中下载软件更新会话的安全。所述系统是可扩展的,并且可以支持多个(例如,数百万辆)汽车同时执行空中下载(“OTA”)更新。所述系统没有容易被恶意用户(例如,前雇员或数据中心操作员)攻击的预先建立的RSA密钥对。例如,系统可以使用不包括敏感数据并且不能用于对数据处理系统的网络安全攻击的车辆的区块链地址。

所公开的系统和方法可以并入到车辆中或与车辆一起使用,例如汽油动力车辆、混合动力车辆、电动车辆(EV)或自主驾驶车辆。车辆可以包括汽车、轿车、摩托车、小型摩托车、客车、载客或商用卡车、以及其它车辆,例如海上或空中运输车辆、飞机、直升机、潜艇、船或无人机。车辆可以是完全自主的、部分自主的或无人驾驶的。完全自主、部分自主或无人驾驶的车辆可以包括非电动车辆,例如基于内燃机或非电动引擎的车辆。

图1描绘了根据实施例的示出用于在远程车辆上执行安全固件更新的示例性系统的框图。系统100可以包括至少一个数据处理系统102,用于在远程车辆上执行安全固件更新。数据处理系统102可以包括至少一个车辆识别部件104、至少一个会话处理器部件106、至少一个固件控制器部件108、至少一个散列部件110、至少一个签名生成部件112、以及至少一个数据存储库114。数据处理系统102可以包括硬件或硬件和软件的组合,例如通信总线、电路、处理器、通信接口等。数据处理系统102可以设在车辆制造设施上或车辆制造设施内。数据处理系统102可以由车辆的制造商或其他提供商提供。数据处理系统102可以包括一个或多个服务器,例如第一服务器和第二服务器。一个或多个服务器可以位于数据中心、一个或多个数据中心中,或者在地理上分散。

数据存储库114可以包括或存储会话ID数据结构116、区块链映射数据结构118、固件数据120或地理区域122。会话ID数据结构116可以包括或存储会话标识。会话标识可以指由数据处理系统102提供或生成的唯一会话标识。会话可以指用于更新车辆138的部件(例如控制单元136)上的固件或其它软件程序的固件更新会话。可以响应于从车辆138接收的固件更新请求而启动会话。会话可以由数据处理系统102发起。例如,数据处理系统102可以响应于确定固件更新可用于车辆138而将固件更新推送到车辆138。

区块链映射数据结构118可以包括或存储分配给车辆的区块链地址。区块链地址可以指或包括安全标识。区块链地址可以被分配给车辆138。例如,当在车辆制造设施处制造车辆时,数据处理系统102可以将唯一的区块链地址分配给或以其他方式关联到每个车辆。数据处理系统102可以在配置或设置车辆以用于安全固件更新时将唯一的区块链地址分配给或以其他方式关联到每个车辆。区块链映射数据结构118可以包括车辆138的唯一标识。区块链映射数据结构118可以将车辆138的唯一标识与分配给车辆的区块链地址进行映射、链接或以其他方式相关联。唯一标识可以指或包括分配给车辆的字母数字标识,例如车辆识别号码(“VIN”)。车辆VIN可以是特定车辆的识别码。VIN可以作为车辆的指纹,因此,没有两个运行中的车辆具有相同的VIN。VIN可以包括用作车辆的唯一标识的17个字符(数字和大写字母)。VIN可以显示车辆的特征、规格和制造商。VIN能够用于跟踪召回、登记、保修索赔、盗窃和保险覆盖。VIN可以由政府机构或团体分配。区块链映射数据结构118可以将车辆的VIN或其它唯一标识与分配给车辆的相应区块链地址进行映射。

固件数据120可以包括一个或多个软件程序或数据文件。固件数据120可以包括与软件程序相关联的元数据。固件数据120可以包括(例如)固件数据文件、可执行文件、与固件文件的创建相关联的时间及数据戳、兼容性信息、固件数据文件的提供者或与固件数据文件相关联的状态信息。固件数据120可以包括固件数据文件的散列值或校验和信息。固件数据120可以包括关于哪些车辆或控制单元156或其部件要接收固件更新的指令。固件数据120可以包括关于固件数据大小、带宽要求、处理器要求或下载或安装固件更新的时间的信息。固件数据120可以包括何时下载或安装固件更新的标准,例如在夜间、当车辆不运行时、或车辆的地理位置。固件数据120可以包括接收固件更新的车辆的历史以及固件更新是否成功。

地理区域数据结构122可以包括关于授权哪些地理区域接收固件更新的信息。地理区域数据结构122可以包括关于成功或不成功的固件更新文件传输的历史信息。地理区域可以包括当车辆138请求固件更新或下载固件更新文件时车辆138的地理位置。地理位置(例如,纬度、经度或街道地址)可以映射到较大的地理区域(例如,地理瓦片、城市、城镇、县、邮政编码、州、国家或其它地区)。例如,如果第一地理区域与可能导致将改变的固件更新文件传送到车辆138的恶意活动相关联,则数据处理系统102可以将所述信息存储在地理区域数据结构122中,以便在车辆位于所述地理区域中时阻止或防止其他车辆下载固件更新文件。地理区域数据结构122可以包括关于成功地将固件更新文件传送到车辆的信息,以便将这样的地理区域标记或标识为被授权或批准执行安全固件更新。

地理区域数据结构122可以包括关于与成功或不成功的固件更新文件传输相关联的服务器或数据中心的信息。地理区域数据结构122还可以包括与服务器或数据中心相关联的网络地址(例如,IP地址)。例如,数据处理系统102可以使用第一服务器将固件更新文件传输到车辆138,这可能导致传输改变的固件更新文件。数据处理系统102可以将第一服务器标记或标识为被黑客攻击或易受恶意活动攻击,并且阻止或防止第一服务器传送固件更新文件,直到问题已经解决。在这期间,数据处理系统102可以使用可以与成功的或有效的固件更新文件传输相关联的第二服务器。

数据处理系统102的每个部件可以使用硬件或软件和硬件的组合来实施。数据处理系统102的每个部件可以包括逻辑电路(例如,中央处理单元或CPU),所述逻辑电路响应于从存储器单元(例如,存储器615或存储设备625)取回的指令并且处理从存储器单元取回的指令。数据处理系统102的每个部件可以包括或使用微处理器或多核处理器。多核处理器可以包括单个计算部件上的两个或多个处理单元。数据处理系统102的每个部件可以基于这些处理器中的任何一个,或者能够进行这里所述操作的任何其它处理器。每个处理器可以利用指令级并行性、线程级并行性、不同级别的高速缓存等。例如,数据处理系统102可以包括至少一个逻辑设备,例如具有至少一个处理器以通过网络101通信的计算设备或服务器。数据处理系统102可以与一个或多个数据中心、服务器、机器场或分布式计算基础设施通信。

数据处理系统102的部件和元件可以是单独的部件、单个部件或数据处理系统102的一部分。例如,车辆识别部件104、会话处理器部件106、固件控制器部件108、散列部件110、签名生成部件112(以及数据处理系统102的其他元件)可以包括硬件和软件的组合,例如被配置为在车辆上执行安全固件更新的一个或多个处理器。数据处理系统102的部件可以被托管在一个或多个服务器或数据中心上或其内部。数据处理系统102的部件可以彼此连接或通信地联接。数据处理系统102的各种部件之间的连接可以是有线的或无线的,或者其任意组合。对应系统或部件可以被托管在其他车辆或系统上,以使得能够在这样的系统之间进行通信或协调。

系统100可以包括、对接、与其通信或以其他方式使用车辆接口系统140。车辆接口系统140可以包括至少一个验证部件142、至少一个区块链接口部件144、至少一个散列部件110和至少一个车辆数据存储库148。车辆数据存储库148可以包括或存储唯一ID 150、会话ID 152和固件154。唯一ID可以指车辆唯一标识,例如分配给车辆的字母数字标识、VIN、或分配给车辆的区块链地址。会话ID 152可以指或包括分配给车辆138和数据处理系统102之间的固件更新会话或其它类型回话的会话标识。会话ID可以由数据处理系统102提供或生成,并且存储在车辆数据存储库148中以用于进一步处理以执行安全固件更新。固件154可以指或包括与由车辆138的部件(例如控制单元156)运行或执行的固件相关联的软件程序或元数据。控制单元156可以指或包括车辆138的任何数字硬件部件或系统,所述数字硬件部件或系统可以运行或执行可以接收更新的固件或其他软件程序。数字硬件部件可以包括例如电子控制单元(ECU)、发动机控制模块(ECM)、发动机控制模块(ECM)、动力系控制模块(PCM)、变速器控制模块(TCM)、制动控制模块(BCM或EBCM)、中央控制模块(CCM)、中央定时模块(CTM)、通用电子模块(GEM)、车身控制模块(BCM)、悬架控制模块(SCM)、控制单元或控制模块。数字硬件部件可以包括用于提供驾驶员辅助功能或各种级别的自主驾驶功能的系统或部件。另外类型的数字硬件部件可以包括例如门控制单元(DCU)、发动机控制单元、电动助力转向控制单元(PSCU)、人机接口(HMI)、动力系控制模块(PCM)、座椅控制单元、速度控制单元(SCU)、远程信息处理控制单元(TCU)、变速器控制单元(TCU)、制动控制模块(BCM;ABS或ESC)、电池管理系统(BMS)或导航系统。

车辆接口系统140的每个部件可以使用硬件或软件和硬件的组合来实现。车辆接口系统140的每个部件可以包括逻辑电路(例如,中央处理单元或CPU),所述逻辑电路响应并处理从存储器单元(例如,存储器615或存储设备625)获取的指令。车辆接口系统140的每个部件可以包括或使用微处理器或多核处理器。多核处理器可以包括单个计算部件上的两个或多个处理单元。车辆接口系统140的每个部件可以基于这些处理器中的任何一个,或者能够进行这里所述操作的任何其它处理器。每个处理器可以利用指令级并行性、线程级并行性、不同级别的高速缓存等。例如,车辆接口系统140可以包括至少一个逻辑设备,例如具有至少一个处理器以通过网络101通信的计算设备或服务器。车辆138的车辆接口系统140可以与一个或多个数据中心、服务器、机器场或分布式计算基础设施通信。

车辆接口系统140的部件和元件可以是单独的部件、单个部件或车辆接口系统140的一部分。例如,验证部件142、区块链接口部件144和散列部件110(以及车辆接口系统140的其他元件)可以包括硬件和软件的组合,例如被配置为执行车辆上的安全固件更新的一个或多个处理器。车辆接口系统140的部件可以被托管在一个或多个计算系统上或计算系统内。车辆接口系统140的部件可以彼此连接或通信地联接。车辆接口系统140的各种部件之间的连接可以是有线的或无线的,或者是其任意组合。对应系统或部件可以被托管在其他车辆或系统上,以使得能够在这样的系统之间进行通信或协调。

数据处理系统102或车辆接口系统140可以与区块链系统124对接、访问、通信或以其他方式利用区块链系统来执行车辆138上的安全固件更新。区块链系统124可以包括多个计算节点126、由多个计算节点126组成或以其他方式利用多个计算节点126。计算节点126可以包括图6中所示的计算设备600的一个或多个部件或功能。区块链系统124可以生成、存储或维护区块链记录128。区块链记录128可以对应于区块链地址,例如分配给车辆138的区块链地址。区块链记录128可以包括一个或多个区块130、132、134和136。区块链中的区块可以指或对应于区块链事务。区块链系统124可以包括节点126(例如,计算系统或计算装置)的分布式网络,其存储具有分配给车辆138的区块链地址的区块链128。区块链地址128处的每个区块(例如,130、132、134或136)可以包括区块链地址128中的前一个区块的密码散列。

区块链(或区块链(block chain))可以指使用密码术链接和保护的记录(或区块)的增长列表。每个区块(例如,130、132、134或136)可以包括前一区块的密码散列以及包含内容或其他数据。例如,区块136可以包括区块134的密码散列;区块134可以包括区块132的密码散列;区块132可以包括区块132的密码散列;并且区块132可以包括区块130的密码散列。区块链可以抵抗存储在区块中的数据的修改。区块链可以是电子事务的开放的、分布式记录。区块链记录128可以在计算节点126之间分布。例如,每个计算节点126可以存储区块链记录128的副本。计算节点126可以指或形成共同遵守用于节点间通信和验证区块链记录128的新区块的协议的计算节点的对等网络。一旦被记录,任何给定区块(例如,130、132、134或136)中的数据不能在不改变所有后续区块的情况下被追溯地改变,这需要计算节点126的大部分的串通。

通过在由计算节点126形成的网络上以分散的、分布式的方式维护区块链记录128,在没有所有后续区块的更改和网络串通的情况下,记录不能追溯地更改。可以使用由计算节点126和分布式时间戳服务器形成的对等网络来自主地管理区块链数据库(例如,区块链记录128)。

区块链记录128中的每个区块130、132、134或136可以保存被散列并编码到散列树中的有效事务。每个区块包括区块链中的前一区块的密码散列,链接这两个区块。链接的区块130、132、134和136形成区块链记录128。所述迭代过程可以确认前一区块的完整性,直到回到原始起源区块(例如,区块130)。

网络101可以提供数据处理系统102、车辆接口系统140和区块链系统124之间的通信或连接。网络101可以包括计算机网络,例如因特网、局域网、广域网、近场通信网络、城域网或其他区域网络,以及卫星网络或其他计算机网络,例如语音或数据移动电话通信网络,以及它们的组合。网络101可以包括或构成车辆间通信网络,例如,包括数据处理系统102及其用于车辆间数据传输的部件的部件子集。网络101可以包括例如点对点网络、广播网络、电信网络、异步传输模式网络、同步光网络或同步数字分层网络。网络101可以包括至少一个无线链路,例如红外通道或卫星频带。网络101的拓扑可以包括总线型、星型或环型网络拓扑。网络101可以包括使用任何协议或多种协议在车辆或其他设备之间进行通信的移动电话或数据网络,包括高级移动协议、时分或码分多址协议、全球移动通信系统协议、通用分组无线服务协议或通用移动电信系统协议,并且相同类型的数据可以通过不同协议来传输。

数据处理系统102可以包括被设计、配置、构造或操作以接收和发送信息的接口158。接口158可以使用例如网络协议之类的一个或多个协议来接收和发送信息。接口158可以包括硬件接口、软件接口、有线接口或无线接口。接口158可以利于将数据从一种格式转换或格式化为另一种格式。例如,接口158可以包括应用编程接口,所述应用编程接口包括用于在例如软件部件的各种部件之间通信的定义。接口158可以被设计、构造或操作以与一个或多个车辆接口系统140通信以执行安全固件更新。接口158可以被设计、构造或操作为与一个或多个区块链系统158通信,以进行区块链事务或将信息存储在区块链记录124中。接口158可以通过区块链API与区块链系统124通信。

接口158可以从车辆接口系统140接收请求。所述请求可以包括信息,例如请求什么、时间戳、车辆识别信息或其他信息。所述请求可以包括执行车辆的数字硬件部件156的固件更新的请求。接口158可以通过网络101接收请求。

数据处理系统102可以包括车辆识别部件104,车辆识别部件104被设计、构造或操作为识别做出请求的车辆138。车辆识别部件104可以接收与请求相关联的唯一标识。唯一标识可以是车辆138的VIN或车辆的其他字母数字标识。车辆识别部件104可以接收与车辆相关联的其他识别信息,例如用户名、牌照号、地址或注册号。

车辆识别部件104可以识别分配给车辆104的区块链地址。例如,请求可以包括车辆138的唯一标识。车辆识别部件104可以使用唯一标识在区块链映射数据结构118中执行查找,以检索、获得或以其他方式识别分配给车辆138的区块链地址。

车辆识别部件104可以确定与请求一起接收的唯一标识不与区块链地址相关联。然后车辆识别部件104可以提示车辆接口系统140另一个唯一标识,例如可以与车辆138相关联的VIN或用户名或登录标识。然后车辆识别部件104可以利用区块链映射数据结构118中的第二唯一标识执行第二查找,以识别分配给车辆138的区块链地址。

如果车辆识别部件104未识别分配给车辆138的区块链地址,则数据处理系统102可以确定车辆138未被配置为使用区块链系统124执行安全固件更新。然后数据处理系统102可以通知车辆138所述车辆未被配置为执行安全固件更新。数据处理系统还可以指示、命令或以其他方式使车辆138生成对新区块链地址的请求。车辆138可以使用所述区块链地址的私钥来请求新的区块链地址。车辆138可以通过安全连接,例如物理硬连线连接,发送具有私钥的请求,以提高安全性并防止或减轻私钥在传输期间被泄密或被盗。响应于数据处理系统102向车辆138指示车辆138未被配置用于安全固件更新,车辆138可以使用私钥来请求区块链地址。数据处理系统102可以将区块链地址分配给车辆138,并将与请求一起接收的唯一标识(例如,VIN)链接或关联到区块链映射数据结构118中的区块链地址。

数据处理系统102可以包括被设计、构造和操作以生成会话标识的会话处理器部件106。会话标识可以对应于空中下载固件更新会话。会话可以指或包括通信会话、电子事务、请求、固件更新请求、固件更新会话或其他会话。会话可以基于来自车辆138的请求而发起以执行固件更新。例如,车辆接口系统140可以发起会话。车辆接口系统140可以确定要更新数字硬件部件156的固件。车辆接口系统140可以确定发起与数据处理系统102的会话以检查固件更新是否可用于车辆138的一个或多个数字硬件部件156。

数据处理系统102可以响应于检测到或确定新的固件更新可用于车辆138而确定执行固件更新,并且自动发起会话以执行固件更新。数据处理系统102可以周期性地(例如,每24小时、12小时、72小时、7天、30天或一些其他时间间隔)执行固件更新或检查固件更新是否可用于车辆。

响应于与车辆138的会话的发起或建立,数据处理系统102(例如,通过会话处理器部件106)可以生成用于会话的唯一会话标识。会话标识可以包括字母数字标识。会话标识可以是会话的唯一标识。会话处理器部件106可以基于车辆138的唯一标识(例如,VIN或区块链地址)和所述会话的时间和日期戳的组合来生成会话标识。例如,会话处理器部件106可以将一个或多个值输入到散列函数(例如,由散列部件110提供)中,以生成用于会话的唯一会话ID。会话处理器部件106可以将车辆的唯一标识附加到时间和日期戳,或者以其他方式组合两个或更多输入以生成会话ID。会话处理器部件106可以使用随机数发生器、散列函数、加密函数、计数器、或者可以为会话提供唯一标识的其它技术来确定会话ID。会话处理器部件106可以生成会话ID作为基于会话的日期和时间戳生成的随机数。会话ID可以是通用唯一标识(“UUID”)或全局唯一标识(“GUID”)的版本(例如,版本1、2、3或4),其可以是用于识别会话的128位的数字。例如,文本表示中的会话ID的格式可以是UUID的十六个八位字节,并且被表示为32个十六进制(以16为基数)数字,以由连字符分隔的五组显示,以8-4-4-4-12的形式,总共36个字符(32个字母数字字符和四个连字符)。

会话处理器部件106可以将会话ID发送到请求空中下载固件更新的车辆138。会话处理器部件106可以通过接口158和网络101发送会话ID。

数据处理系统102可以包括固件控制器部件108,固件控制器部件108被设计、构造和操作为响应于请求来识别固件更新文件,并将固件更新文件传送到车辆接口系统140。固件控制器部件108可以访问固件数据120以识别由车辆接口系统140请求的固件更新文件。例如,请求可以包括运行固件的数字硬件部件156的类型的指示,或者当前固件版本或文件名。固件数据120可以包括关于由车辆138运行的固件的信息。固件控制器部件108可以选择固件更新文件以提供给车辆138。固件控制器部件108可以基于数字硬件部件156的版本或由数字硬件部件156运行的固件的版本、基于与其他部件或数字硬件部件156或车辆接口系统140的兼容性信息来选择提供固件更新文件。固件控制器部件108可以基于车辆138的地理信息,例如车辆138被配置的地理区域或车辆138本身的位置,来选择固件更新文件。

固件控制器部件108可以在数据存储库114中执行查找以识别文件名、文件路径、深度链接、或不被索引或不可搜索的深度网络链接、或对固件更新文件的其他指针或引用。固件控制器部件108可以将指向固件更新文件的指针传输到车辆接口系统140。固件控制器部件108可以将固件更新文件传输、传送或下载到车辆138。固件控制器部件108可以使用引用或指针来检索固件更新文件。

固件控制器部件108可以执行被配置为发送数据文件的文件服务器或网络服务器的功能。固件控制器部件108可以在将固件更新文件传输到车辆138之前加密、压缩或以其他方式打包或封装固件更新数据文件。固件控制器部件108可以提供固件更新文件作为空中下载更新。固件控制器部件108可以通过网络101将固件更新文件传送到车辆138。

数据处理系统102可以包括被设计、构造或操作来基于所选择的固件更新文件生成值的散列部件110。散列部件110可以被配置有一个或多个散列函数或密码函数,散列函数或密码函数可以基于所选固件更新文件生成唯一值。例如,所选择的固件更新文件可以输入到散列函数或密码函数中,以便生成唯一的输出值。如果固件更新文件被更改,则散列函数或密码函数将生成不同的输出值。不同的输出值可以指示固件更新文件是不同的或不相同的。

散列函数或密码函数可以包括例如消息摘要函数,例如可以产生128位散列值的MD5散列函数。MD5散列函数可以用作校验和以验证固件更新文件的数据完整性。例如,固件更新文件可以是由散列函数使用以生成输出值的初始化矢量。

散列函数可以包括安全散列算法2(“SHA-2”),例如对应于224、256、384或512位的SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256。散列函数可以包括安全散列算法3(“SHA-3”)或其它类型的散列函数。

固件控制器部件108调用或使用散列部件110来生成固件更新文件的散列值,并将所述散列值存储到固件数据120中以供进一步处理或促进在车辆138上执行安全固件更新,所述固件数据120存储于数据存储库114中。为了减少与空中下载固件更新会话相关联的延迟或等待时间,数据处理系统102可以在离线过程中为每个固件更新文件计算散列值,并将散列值存储在固件数据120中。固件控制器部件108可以调用或使用散列部件110来实时生成散列值,例如在发起与车辆138的会话并选择固件更新文件之后。

数据处理系统102可以包括签名生成部件112,签名生成部件112被设计、构造或操作为基于会话标识和通过对固件更新文件应用散列函数而生成的第一散列值的组合来生成数字签名。第一散列值可以指由数据处理系统102的散列部件110生成的散列值。签名生成部件112可以从数据存储库114或从散列部件110(或数据处理系统102的某个其他部件)获得第一散列值。签名生成部件112可以从数据存储库114(例如,会话ID数据结构116)或者从会话处理器部件106(或者数据处理系统102的某个其它部件)获得会话ID。签名生成部件112可以将会话ID与第一散列值组合。签名生成部件112可以通过例如将会话ID与第一散列值彼此追加来彼此组合。会话ID与第一散列值的组合可以创建事务的数字签名,其中事务可以指空中下载固件更新会话。所述组合可以基于增加值、卷积值、值相乘或值相除、将值输入到函数中以生成唯一输出、或者将值彼此追加。签名生成部件112可以通过使用双向加密函数将散列值与会话ID组合来生成数字签名。数字签名可以是预定格式,其中第一组比特或字节对应于散列值,而第二组比特或字节对应于会话ID。

数据处理系统102可以提供数字签名以存储在区块136中或记录在区块链地址128处。数据处理系统102可以向区块链系统124提供数字签名,其具有对应于车辆138的区块链地址的指示。区块链系统124可以在区块链128中生成新的区块(例如,区块136)并将数字签名存储在新的区块136中。区块链系统124可以向数据处理系统102提供成功创建了新的区块136的指示,并且存储由数据处理系统102生成的数字签名。

数据处理系统102(例如,接口158)可以接收数字签名被存储在区块链地址128处的区块136中的指示。数据处理系统102可以响应于数字签名被存储在区块链地址128处的区块136中的指示,将会话标识传输到车辆138。

数据处理系统102可以在向车辆138发送会话标识之后从车辆138接收下载固件更新文件的请求。例如,响应于车辆接口系统140从数据处理系统102接收到会话标识(其可以响应于数据处理系统102从区块链系统124接收到数字签名存储在区块136中的指示),车辆接口系统140可以向数据处理系统102发送请求。所述请求可以包括下载固件更新文件的请求。数据处理系统102可以响应于从车辆138接收的下载固件更新文件的请求而将固件更新文件传送到车辆138。

当车辆138的车辆接口系统140通过网络101从数据处理系统102接收固件更新文件时,车辆可以在安装固件更新文件或用固件更新文件闪速存储(flashing)数字硬件部件156之前执行验证过程或确认过程。例如,车辆接口系统140可以包括被设计、构造和操作以验证或确认固件更新文件的验证部件142、区块链接口部件144和散列部件110。响应于固件更新文件的接收并且在固件更新文件的安装之前,验证部件142可以基于从区块链地址128处的区块136检索的数字签名与通过对从数据处理系统102接收的固件更新文件应用散列函数而生成的第二散列值和从数据处理系统102接收的会话标识的比较来验证固件更新文件。

为此,验证部件142可以启用、启动、访问、执行、调用或以其他方式与车辆接口系统140的散列部件110通信,以生成从数据处理系统102接收的固件更新文件的散列值。车辆接口系统140的散列部件110可以包括作为数据处理系统102的散列部件110的一个或多个部件或功能。车辆接口系统140可以使用由数据处理系统102使用的相同散列函数,以生成从数据处理系统102接收的固件更新文件的散列值。车辆接口部件110可以将所生成的散列值存储在车辆数据存储库148中(例如,在固件数据结构154中)以用于进一步处理以在车辆上执行安全固件更新。

验证部件142可以启用、启动、访问、执行、调用区块链接口部件144或以其他方式与区块链接口部件144通信以查询区块链系统124。区块链接口部件144可以包括用于与区块链系统124对接的接口158的一个或多个部件或功能,例如区块链API。区块链接口部件144可以使用存储在车辆数据存储库148的唯一ID数据结构150中的车辆的区块链地址来构建查询。

例如,车辆接口系统140的区块链接口部件144可以被配置有查询语言或RESTAPI,其被配置为查询区块链以获得例如区块(例如,区块136)中的事务数据(例如,数字签名)的信息。区块链接口部件144可以与区块链系统124中的一个或多个节点126通信,以获得在块136中存储的数字签名。例如,区块链接口部件144可以响应于区块链系统124中的节点126的特定百分比(例如,25%、30%、40%、50%、51%、60%、70%或更多)验证存储在相应节点126中的每一个上的区块136中的数据而获得存储在区块136中的数字签名。

区块链接口部件144可以从区块链系统124(或其节点124)接收响应,所述响应包括来自区块136的数字签名,所述数字签名先前由数据处理系统102存储在区块136中。验证部件142可以通过区块链接口部件144接收数字签名。验证部件142可以解析数字签名以识别会话ID和第一散列值。例如,如果使用双向加密函数生成数字签名,则验证部件142可以使用与加密函数相对应的解密函数,以便解密数字签名并识别其中存储的会话ID和散列值。由数据处理系统102使用来生成数字签名的示例性双向加密函数(或双向加密函数或可逆加密函数)可以包括对称密钥加密。会话ID可以由数据处理系统102存储在数字签名中。第一散列值可以对应于由数据处理系统102使用固件更新文件生成的散列值。

验证部件142可以将从区块136接收的数字签名接收的会话ID与从数据处理系统102的会话处理器部件106接收的会话ID进行比较。如果会话ID匹配(例如,对应于相同的空中下载更新会话),则验证部件142可以继续比较散列值以确定散列值是否也匹配。验证部件142可以将从区块136获得的数字签名中接收的第一散列值与由车辆接口系统140的散列部件110从接收自数据处理系统102的固件数据文件中计算的第二散列值进行比较。如果验证部件142确定第一和第二散列值匹配,则验证部件142可以确定从数据处理系统102接收的固件数据文件与由数据处理系统102发送的固件更新文件相同(例如,未被更改),并且授权将固件更新文件安装或闪速存储到数字硬件部件156。

如果会话ID与第一和第二散列值匹配(例如,等同或相同),则验证部件142可以将固件更新文件存储在车辆数据存储库148中,以便以后安装在数字硬件部件156上。车辆接口系统140可以例如在车辆138不操作、被存储在家中或基地位置、被插入电源、或以利于数字硬件部件156的安全和安全闪存更新的方式以其他方式被定位或配置时安排稍后的时间或日期的安装。

验证部件142可以使用一种或多种技术来确定匹配。例如,验证部件142可以组合会话ID和散列值以生成第二数字签名,并且将第二数字签名与从区块链系统124获得的数字签名(例如,第一数字签名)进行比较。验证部件142可以使用与签名生成部件112生成存储在区块链128中的第一数字签名所使用的双向加密函数相同的双向加密函数来生成第二数字签名。

如果验证部件142确定会话ID或数字签名不匹配,则车辆接口系统140可以阻止或防止用所接收的固件更新文件闪速存储数字硬件部件156。验证部件142可以响应于会话ID不匹配的确定而丢弃、删除或移除所接收的固件更新。车辆接口系统140可以响应于会话ID不匹配的确定而向数据处理系统102发送新的请求以发起新的空中下载固件更新会话。

如果验证部件142确定第一和第二散列值或数字签名不匹配,则车辆接口系统140可以阻止或防止用所接收的固件更新文件闪速存储数字硬件部件156。车辆接口系统140可以基于第一散列值不同于第二散列值,或者来自数字签名的会话标识不同于从数据处理系统接收的会话标识而无效固件更新文件。验证部件142可以响应于第一和第二散列值不匹配的确定而丢弃、删除或移除所接收的固件更新。车辆接口系统140可以响应于第一和第二散列值不匹配而的确定向数据处理系统102发送新的请求以发起新的空中下载固件更新会话。

因此,如果第一和第二散列值不匹配,则验证部件142可以确定接收到的固件更新文件被意外或恶意破坏或更改,并可以防止固件更新文件在数字硬件部件156上的安装。验证部件142还可以向数据处理系统102提供关于检测到的损坏或改变的通知或警报。验证部件142可以提供信息以及警报,例如时间和日期戳、车辆138的位置、用于下载固件更新文件的网络类型(例如,WIFI、蜂窝网络、短程无线通信、网状网络)、车辆138的配置或数字硬件部件156的类型。

数据处理系统102可以在车辆138无效固件更新文件之后从车辆接口系统140接收第二请求。第二请求可以是对由车辆138的数字硬件部件156执行的固件的相同更新的请求。数据处理系统102可以执行相同的处理以建立新的会话ID、数字签名、阻止和传送固件更新文件。

数据处理系统102可以改变所述过程的参数或其他方面以便规避攻击,从而在没有改变的固件更新文件的情况下对车辆执行安全固件更新。例如,如果车辆接口系统140重复地无效从数据处理系统102接收的用于相同更新的固件更新文件,并且将相同的指示提供给数据处理系统102,则数据处理系统102可以确定改变空中下载更新会话的方面。如果对于相同更新的无效的数量大于或等于阈值数量(例如,3、4、5、6、7、8或更多),则数据处理系统102可以确定改变、修改或以其他方式更改空中下载更新会话的方面。

数据处理系统102的方面可以包括例如数据处理系统102的哪个服务器传送固件更新文件、传送固件更新文件的时间、用于传送固件更新文件的网络类型、加密协议或网络协议。例如,数据处理系统102可以包括多个服务器,例如第一服务器和第二服务器。数据处理系统102可以确定当第一服务器将固件更新文件传送到车辆138时发生了无效。数据处理系统102可以响应于第一服务器传送了被无效的固件更新文件的确定,切换到或选择第二服务器来传送固件更新文件,并且指示第二服务器执行文件传送。第一和第二服务器可以位于相同或不同的数据中心中。第一和第二服务器可以位于不同的地理位置。

数据处理系统102可以从车辆接收固件更新文件无效的指示,并且识别当车辆138下载固件更新文件时车辆138的第一地理位置。当车辆位于第一地理位置时,数据处理系统102可以确定阻止车辆138的文件传输。数据处理系统102可以识别包括所述地理位置的较大地理区域,并且进一步阻止位于所述地理区域中的任何车辆138的文件传输。数据处理系统102可以响应于接收到大于或等于无效的阈值数量的地理区域的多个固件无效的指示,来阻止向地理区域中的车辆138的文件传送。

数据处理系统102可以响应于接收到车辆138处于第一地理区域之外的第二地理位置的指示而传送固件更新文件。例如,数据处理系统102或车辆接口系统140可以设置对应于第一地理区域的地理围栏或边界触发器。当车辆138在地理围栏之外行进时,可以触发到数据处理系统102的通知,所述通知指示车辆138已经离开了被阻挡的第一地理位置并且进入了被授权用于文件下载的第二地理位置。数据处理系统102可以响应于车辆处于第二地理区域中的第二地理位置的指示,将固件更新文件传送到车辆。

例如,车辆138可以基于第一散列值不同于第二散列值;或者从数据处理系统102接收的会话ID不同于存储在从区块链接收的数字签名中的会话ID;或者基于从区块链接收的数字签名不同于由车辆通过组合从数据处理系统接收的会话ID和从数据处理系统下载的固件的计算的散列而生成的车辆生成数字签名,来无效固件更新文件。然后车辆138可以发送对固件更新文件的第二请求,以便重新开始空中下载更新。车辆138可以响应于第二请求从数据处理系统102接收第二会话标识和第二固件更新文件。车辆138可以从区块链系统接收第二数字签名。第二数字签名可以由数据处理系统102响应于来自车辆138的第二请求而生成。车辆138可以基于将散列函数应用于响应于第二请求而接收的第二固件更新文件来确定第三散列值。车辆138可以基于第一散列值与第三散列值的比较,以及第二数字签名的第二会话标识与从数据处理系统接收的第二会话标识的比较,验证从数据处理系统102接收的第二固件更新文件。车辆138可以基于从区块链接收的第二数字签名与第二车辆生成的数字签名的比较来验证从数据处理系统102接收的第二固件更新文件,第二车辆生成的数字签名是基于组合从数据处理系统接收的第二会话ID和从数据处理系统102下载的固件的散列而生成的。响应于验证,车辆138可以利用第二固件更新文件来闪速存储车辆138的部件156。

图2描绘了在远程车辆上执行安全固件更新的系统的示例性操作图。操作200可以由图1和图6中描述的一个或多个系统、部件或功能执行,例如,操作200可以由数据处理系统、固件控制器部件和车辆接口系统执行。在动作202,车辆138向数据处理系统102发送更新请求。更新请求可以用于空中下载固件更新。更新请求可以用于固件204。数据处理系统102可以生成或识别固件204的散列值206。数据处理系统102可以识别或生成用于空中下载固件更新请求的会话ID 208。数据处理系统102可以组合散列206与会话ID 208,以在动作210生成数字签名212。数据处理系统102可以将数字签名212传输到具有分配给车辆138的区块链地址的区块链128。区块链128可以在区块136中存储数字签名212。区块链128可以生成用于存储数字签名212的新区块136。在动作214,车辆138可以从数据处理系统102检索固件204。车辆138可以通过网络从数据处理系统102下载固件204。在动作216,车辆可以检索存储在具有分配给车辆138的区块链地址的区块链128中的区块136中的数字签名212。

在决策框218,车辆可以确定在动作214处从数据处理系统102下载的固件文件是否被验证为与存储在数据处理系统102上的固件文件204等同(例如,验证在动作214处的传输或下载过程期间固件未被改变)。车辆138可以通过将所检索的固件的散列值与存储在从区块链128检索的数字签名中的散列值进行比较来验证固件。如果固件被验证,则车辆138前进至动作220并用所检索的固件来闪速存储数字硬件部件。然而,如果在区块218处固件未被验证,则车辆138可以继续通过动作222向数据处理系统102发送第二或后续更新请求,以重新进行空中下载固件更新。

图3描绘了根据实施例的在远程车辆上执行安全固件更新的示例性流程图。过程300可以由图1、图2和图6中描述的一个或多个系统、部件或功能执行,例如,过程300可以由数据处理系统、固件控制器部件和车辆接口系统执行。在动作302,车辆可以请求更新。车辆可以使用分配给车辆的区块链地址来请求更新。在动作304,数据处理系统(“DPS”)可以对应于请求的空中下载固件更新会话生成会话标识。在动作306,数据处理系统可以组合从固件生成的散列值与会话ID以生成数字签名。数字签名可以是唯一的,并且对应于与车辆的空中下载更新会话。

在动作308,数据处理系统可以将数字签名传输至与分配给车辆的区块链地址相对应的区块链。区块链可以将数字签名存储在区块链中的新区块中。在动作310,车辆可以从数据处理系统下载固件。车辆可以使用区块链地址来查询区块链以检索存储在区块链中的新区块中的数字签名。在动作312,车辆可以确定在传输、下载或检索过程中从数据处理系统检索的固件是否被更改或破坏。如果车辆确定固件被更改或破坏(例如,基于检索的固件的散列值不同于存储在从区块链检索的数字签名中的散列值),则车辆可以返回到动作302并重新开始空中下载固件更新会话。如果车辆确定在动作312固件没有被更改(例如,验证固件),则车辆可以前进至动作314并执行固件更新。

图4描绘了根据实施例的由系统执行以在远程车辆上执行安全固件更新的示例性流程图。过程400可以由图1、图2和图6中所示的一个或多个系统、部件或功能执行。在动作402,车辆138可以发送具有车辆138的唯一标识的固件更新请求。唯一标识可以包括VIN、区块链地址或与车辆138相关联的其它唯一标识。在动作404,数据处理系统102可以识别车辆的区块链地址。如果区块链地址与请求一起被接收,则数据处理系统102可以识别区块链地址,或使用与请求一起接收的唯一标识在区块链映射中执行查找以识别车辆的区块链地址。

在动作406,数据处理系统102可以生成(例如,通过会话处理器部件)用于请求的会话标识。会话标识可以是唯一的会话标识。会话标识可以唯一地识别由动作402处的请求发起的与车辆138的空中下载固件更新会话。在动作408,数据处理系统102可以组合会话标识和固件的散列值以创建数字签名。数据处理系统102可以使用双向加密函数或者以其它方式将会话标识加入或组合到固件散列值,来将会话标识与固件散列值组合。例如,数字签名可以是具有用于会话标识的第一字段和用于散列值的第二字段的数字签名数据结构。数据处理系统102可以在相应字段中利用会话标识和散列值来填充数据结构。

在动作410,数据处理系统102可以将数字签名发送到区块链系统124,以使区块链系统124将数字签名存储在区块链中具有与车辆138对应的区块链地址的新区块中。在动作412,区块链系统124可以创建新区块并将数字签名存储在新区块中。在动作414,区块链系统124可以向数据处理系统102传输区块链事务已完成的指示(例如,数字签名被存储在区块链中的新区块中)。

在动作416,数据处理系统102可以将在动作406生成的会话ID提供给车辆138。数据处理系统102可以响应于在动作414处接收到事务完成指示而提供会话ID。在动作418,车辆可以向数据处理系统102发送下载固件请求。车辆可以响应于在动作416处接收到会话ID而发送下载固件请求。下载固件请求可以包括会话ID,数据处理系统102可以使用所述会话ID来选择固件或在传送固件之前确认为会话ID创建了新区块。在动作420,数据处理系统102可以将固件传送到车辆138。数据处理系统102可以通过网络传送固件。

在动作422,车辆138可以从车辆的区块链地址请求数字签名。车辆138可以向区块链系统124查询存储在具有分配给车辆138的区块链地址的区块链中的数据。车辆138可以在动作424处从区块链接收数字签名。在动作426,车辆138可以计算从动作420下载的固件的散列。

在动作428,车辆138可以验证固件散列和会话ID是否与从区块链418获取的数字签名相匹配。例如,车辆138可以组合从数据处理系统102接收的会话ID与在动作420处下载的固件文件的散列以生成第二数字签名。车辆138可以将所述第二数字签名与从区块链系统124检索的数字签名(例如,第一数字签名)进行比较。如果车辆138确定第二数字签名与第一数字签名匹配(例如,等同匹配),则车辆138可以确定下载的固件未被更改或未被破坏,然后在动作430使用下载的固件来闪速存储车辆的部件。

如果车辆138确定第一和第二数字签名不匹配,则车辆138可以确定下载的固件文件被更改或破坏,然后丢弃下载的固件。车辆138可以返回到动作402,并发送新的固件更新请求。

图5描绘了根据实施例的在远程车辆上执行安全固件更新的示例性方法。方法500可以由图1、图2和图6中描述的一个或多个系统、部件或功能来执行。在动作502,数据处理系统可以接收请求。数据处理系统可以通过由车辆执行或运行的车辆接口(或车辆接口系统)接收请求。所述请求可以是用于由车辆的部件执行的固件的空中下载更新。所述请求可以包括利于执行空中下载更新的信息,例如车辆的唯一标识、VIN、区块链地址、固件版本、车辆的位置或可用网络。

在动作504,数据处理系统可以识别车辆的区块链地址。如果请求包括区块链地址,则数据处理系统可以从请求中识别车辆的区块链地址。如果请求不包括区块链地址,而是包括车辆的另一个唯一标识,例如VIN,则数据处理系统可以在区块链映射数据结构中执行查找,以识别与车辆的唯一标识相关联的区块链地址。区块链地址可以是安全的唯一标识。区块链地址可以是字母数字的。可以在请求之前将区块链地址分配给车辆。可以在车辆制造时分配区块链地址。

在动作506,数据处理系统可以生成会话标识。数据处理系统可以生成用于由来自车辆的请求发起的空中下载固件更新会话的会话标识。数据处理系统可以使用一种或多种技术来生成会话标识。会话标识可以是UUID。可以基于与请求相关联的时间和日期戳来生成会话ID。

在动作508,数据处理系统可以识别固件。数据处理系统可以响应于来自车辆的请求而识别固件更新文件。数据处理系统可以在数据存储库中执行查找以识别固件更新文件。数据处理系统可以识别固件的文件名或文件路径。数据处理系统可以识别用于固件的可执行文件或其它数据文件。数据处理系统可以基于与请求相关联的信息或存储在数据存储库中的关于车辆的信息来选择或识别固件文件,所述信息例如车辆的车辆制造、型号、年份、部件、固件版本、地理位置或车辆被配置来操作的地理区域。

在动作510,数据处理系统可以生成数字签名。数据处理系统可以基于会话标识和通过对固件更新文件应用散列函数而生成的第一散列值的组合来生成数字签名。数据处理系统可以使用双向加密函数来生成数字签名。

在动作512,数据处理系统可以向区块链提供数字签名。数据处理系统可以使区块链将数字签名存储在区块链处的区块中。区块链可以具有与车辆相对应的区块链地址。区块链可以创建新的区块来存储数字签名。

在动作514,数据处理系统可以将会话标识传输到车辆。数据处理系统可以在向区块链提供数字签名之前或之后向车辆传输会话标识。数据处理系统可以响应于从区块链接收到数字签名被存储在新区块中的指示而发送会话标识。

在动作516,数据处理系统可以传送固件。数据处理系统可以将固件传送到车辆。数据处理系统可以响应于车辆发送对固件的下载请求而将固件传送到车辆。车辆可以接收固件更新文件,并且在安装之前基于从区块链地址处的区块检索的数字签名与第二散列值的比较来验证固件更新文件,第二散列值通过将散列函数应用于从数据处理系统接收的固件更新文件和从数据处理系统接收的会话标识而生成。

图6是示例性计算机系统600的框图。计算机系统或计算设备600可以包括或被用于实施数据处理系统102或其部件,例如数据处理系统102。计算系统600包括至少一个总线605或用于传送信息的其它通信部件以及联接到总线605以用于处理信息的至少一个处理器610或处理电路。计算系统600还可以包括联接到总线以用于处理信息的一个或多个处理器610或处理电路。计算系统600还包括至少一个主存储器615,例如随机存取存储器(RAM)或其它动态存储设备,联接到总线605以用于存储信息和由处理器610执行的指令。主存储器615可以是或者包括存储器112。主存储器615还可以用于存储位置信息、车辆信息、命令指令、车辆状态信息、车辆内部或外部的环境信息、道路状态或道路状况信息、或在处理器610执行指令期间的其他信息。计算系统600还可以包括联接到总线605的至少一个只读存储器(ROM)620或其他静态存储设备,用于存储用于处理器610的静态信息和指令。存储设备625,例如固态设备、磁盘或光盘,可以联接到总线605以持久地存储信息和指令。存储设备625可以包括存储器112或者是存储器112一部分。

计算系统600可以通过总线605联接到显示器635,例如液晶显示器或有源矩阵显示器,用于向用户,例如第一车辆138或第二车辆102的驾驶员,显示信息。输入设备630,例如键盘或语音接口,可以联接到总线605以向处理器610传达信息和命令。输入设备630可以包括触摸屏显示器635。输入设备630还可以包括光标控制,例如鼠标、轨迹球或光标方向键,用于向处理器610传达方向信息和命令选择,并且用于控制显示器635上的光标移动。显示器635(例如,在车辆仪表板上)可以是数据处理系统102、传感器142或图1的其他部件的一部分,以及例如数据处理系统102外部的车辆的一部分。

本文描述的过程、系统和方法可以由计算系统600响应于处理器610执行包含在主存储器615中的指令的布置而实施。这些指令可以从另一计算机可读介质,例如存储设备625,读入主存储器615。执行包含在主存储器615中的指令的布置使得计算系统600执行本文描述的示例性过程。还可以采用多处理配置中的一个或多个处理器来执行包含在主存储器615中的指令。可以使用硬连线电路来代替软件指令或与软件指令结合,以及与这里描述的系统和方法结合。本文描述的系统和方法不限于硬件电路和软件的任何特定组合。

尽管在图6中描述了示例性计算系统,但是包括本说明书中描述的操作的主题可以在其他类型的数字电子电路中实施,或者在计算机软件、固件或硬件中实施,包括本说明书中公开的结构及其结构等同方式,或者在它们中的一个或多个的组合中实现。

本文的一些描述强调系统部件(例如,固件控制器部件108和散列部件110)的各方面的结构独立性,示出了这些系统部件的一组操作和责任。执行类似的总体操作的其它分组被理解为在本申请的范围内。模块可以用硬件实施,或者实施为非瞬态计算机可读存储介质上的计算机指令,并且模块可以分布在各种硬件或基于计算机的部件上。

上述系统可以提供这些部件中的任何部件或每一个部件中的多个,并且这些部件可以提供在独立系统上或在分布式系统中的多个实例上。另外,上述系统和方法可以提供为包含在一个或多个制品上或一个或多个制造产品中的一个或多个计算机可读程序或可执行指令。所述制品可以是云存储、硬盘、CD-ROM、闪存卡、PROM、RAM、ROM或磁带。通常,计算机可读程序可以以任何编程语言实施,例如LISP、PERL、C、C++、C#、PROLOG,或者以任何字节代码语言实现,例如JAVA。软件程序或可执行指令可以作为目标代码存储在一个或多个制品上或一个或多个制品中。

示例性和非限制性模块实现元件包括提供本文确定的任何值的传感器、提供作为本文确定的值的前身的任何值的传感器、包括通信芯片的数据链路或网络硬件、振荡晶体、通信链路、电缆、双绞线、同轴布线、屏蔽布线、发射器、接收器或收发器、逻辑电路、硬布线逻辑电路、根据模块规范配置的特定非瞬态中的可重新配置逻辑电路、至少包括电、液压或气动致动器的任何致动器、螺线管、运算放大器、模拟控制元件(弹簧、滤波器、积分器、加法器、除法器、增益元件)或数字控制元件。

本说明书中描述的主题和操作可以在数字电子电路中实施,或者在计算机软件、固件或硬件中实施,包括本说明书中公开的结构及其结构等效方式,或者在它们中的一个或多个的组合中实施。本说明书中描述的主题可以被实施为一个或多个计算机程序,例如,计算机程序指令的一个或多个电路,其被编码在一个或多个计算机存储介质上以供数据处理装置执行或控制数据处理装置的操作。可替换地或另外地,程序指令可以被编码在人工生成的传播信号上,例如,机器生成的电、光或电磁信号,其被生成以编码信息以用于传输到合适的接收器装置以供数据处理装置执行。计算机存储介质可以是或者包括在计算机可读存储设备、计算机可读存储基板、随机或串行存取存储器阵列或设备、或者它们中的一个或多个的组合。虽然计算机存储介质不是传播信号,但是计算机存储介质可以是编码在人工生成的传播信号中的计算机程序指令的源或目的地。计算机存储介质也可以是或包括在一个或多个单独的部件或介质(例如,多个CD、盘或包括云存储的其它存储设备)。本说明书中描述的操作可以被实施为由数据处理装置对存储在一个或多个计算机可读存储设备上或从其他源接收的数据执行的操作。

术语“计算设备”、“部件”或“数据处理装置”等涵盖用于处理数据的各种装置、设备和机器,包括例如可编程处理器、计算机、片上系统或多个、或前述的组合。所述装置可以包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,所述装置还可以包括创建用于所讨论的计算机程序的执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行时环境、虚拟机或它们中的一个或多个的组合的代码。所述装置和执行环境可以实现各种不同的计算模型基础设施,例如网络服务、分布式计算和网格计算基础设施。

计算机程序(也称为程序、软件应用、应用、脚本或代码)可以以任何形式的编程语言编写,包括编译或解释语言、声明或过程语言,并且可以以任何形式部署,包括作为独立程序或作为模块、部件、子例程、对象或适合于在计算环境中使用的其它单元。计算机程序可以对应于文件系统中的文件。计算机程序可以存储在保存其他程序或数据的文件的一部分中(例如,存储在标记语言文档中的一个或多个脚本)、存储在专用于所讨论的程序的单个文件中、或者存储在多个协同文件中(例如,存储一个或多个模块、子程序或代码部分的文件)。计算机程序可以被部署为在一个计算机上执行,或者在位于一个地点或分布在多个地点并通过通信网络互连的多个计算机上执行。

本说明书中描述的过程和逻辑流程可以由一个或多个可编程处理器执行,所述可编程处理器执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行动作。过程和逻辑流程还可以由专用逻辑电路执行,并且装置还可以被实施为专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。适于存储计算机程序指令和数据的设备可以包括非易失性存储器、介质和存储器设备,作为示例包括半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及CD ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。

本文描述的主题可以在计算系统中实施,所述计算系统包括后端部件,例如作为数据服务器,或者包括中间件部件,例如应用服务器,或者包括前端部件,例如具有图形用户界面或网络浏览器的客户端计算机,通过图形用户界面或网络浏览器用户可以与本说明书中描述的主题的实施进行交互,或者包括一个或多个这样的后端、中间件或前端部件的组合。系统的部件可以通过任何形式或介质的数字数据通信(例如通信网络)互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”)、互联网(例如,因特网)以及对等网络(例如,自组织对等网络)。

尽管在附图中以特定顺序描绘了操作,但是这样的操作不需要以所示的特定顺序或以次序执行,并且不需要执行所有示出的操作。可以以不同的顺序执行这里描述的动作。

现在已经描述了一些说明性的实施例,很明显,前述内容是说明性的而非限制性的,已经通过示例的方式呈现。特别地,尽管本文呈现的多个示例涉及方法动作或系统元件的特定组合,但是那些动作和那些元件可以以其他方式组合以实现相同的目的。结合一个实施例讨论的动作、元件和特征不旨在被排除在其他实施例或实施例中的类似角色之外。

这里使用的措辞和术语是为了描述的目的,而不应被认为是限制。在此使用的“包括”、“包含”、“具有”、“含有”、“涉及”、“特征在于”及其变化,意味着包括其后列出的项目、其等价方式和附加项目,以及由其后列出的项目专门组成的替代实施例。在一个实施例中,本文描述的系统和方法由一个、多于一个的每个组合、或所有描述的元件、动作或部件组成。

对本文中以单数形式提及的系统和方法的实施例或元件或动作的任何引用可以包括包含多个这些元件的实施例,并且对本文中任何实施例或元件或动作的任何复数引用可以包括仅包含单个元件的实施例。单数或复数形式的引用不旨在将本公开的系统或方法、其组件、动作或元件限制为单个或复数配置。对基于任何信息、动作或元件的任何动作或元件的引用可以包括其中动作或元件至少部分地基于任何信息、动作或元件的实施。

本文公开的任何实施例可以与任何其他实施例或实施方式组合,并且对“实施例”、“一些实施例”、“一个实施例”"实施例"、"一些实施例"、"一个实施例"等的引用不一定是相互排斥的,并且旨在指示结合实施例描述的特定特征、结构或特性可以被包括在至少一个实施例或实施方式中。这里使用的这些术语不一定全部指相同的实施例。任何实施例可以以与本文公开的方面和实施例一致的任何方式包括地或排他地与任何其他实施例组合。

对“或”的引用可以被解释为包括性的,使得使用“或”描述的任何术语可以指示单个、多于一个、以及所有所描述的术语中的任何一个。对术语的连接列表中的至少一个的引用可以被解释为包括性的或,以指示单个、多于一个和所有所描述的术语中的任何一个。例如,对“‘A’和‘B’中的至少一个”的引用可以仅包括“A”、仅包括“B”、以及包括“A”和“B”。结合“包括”或其它开放术语使用的这些引用可以包括附加项目。

在附图、详细描述或任何权利要求中的技术特征之后跟随有附图标记的情况下,包括附图标记以增加附图、详细描述和权利要求的可理解性。因此,参考标记或它们的不存在对任何权利要求要素的范围都没有任何限制作用。

在本质上不脱离本文公开的主题的教导和优点的情况下,可以发生所述元件和动作的修改,例如各种元件的大小、尺寸、结构、形状和比例、参数值、安装布置、材料的使用、颜色、取向的变化。例如,显示为整体形成的元件可以由多个部分或元件构成,元件的位置可颠倒或以其它方式改变,且离散元件的性质或数目或位置可改变或变化。在不脱离本公开的范围的情况下,还可以在所公开的元件和操作的设计、操作条件和布置中进行其它替换、修改、改变和省略。

在不脱离本发明的特征的情况下,本文所述的系统和方法可以以其它特定形式来实施。因此,本文所述的系统和方法的范围由所附权利要求而不是前述说明书来指示,并且在权利要求的等同方案的含义和范围内的变化被包含在其中。

31页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:方向盘

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!