CN103677891B - 用于选择性软件回退的方法 - Google Patents

用于选择性软件回退的方法 Download PDF

Info

Publication number
CN103677891B
CN103677891B CN201310414325.XA CN201310414325A CN103677891B CN 103677891 B CN103677891 B CN 103677891B CN 201310414325 A CN201310414325 A CN 201310414325A CN 103677891 B CN103677891 B CN 103677891B
Authority
CN
China
Prior art keywords
software document
version code
secure version
controller
code
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.)
Active
Application number
CN201310414325.XA
Other languages
English (en)
Other versions
CN103677891A (zh
Inventor
A.I.阿尔拉巴迪
K.M.贝尔茨
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 CN103677891A publication Critical patent/CN103677891A/zh
Application granted granted Critical
Publication of CN103677891B publication Critical patent/CN103677891B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • 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/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/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • 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

Abstract

本发明涉及用于选择性软件回退的方法。用于验证将安装到控制器中的软件文件的系统和方法。该方法包括准备所述软件文件,包括将软件版本代码分配给软件文件,将安全版本代码分配给软件文件,以及用软件文件版本代码和安全版本代码对软件文件进行签名。签名的软件文件被提供至控制器以安装在控制器上,并且控制器验证软件文件签名以确定软件文件是否为有效的以及安全版本代码是否为有效的。如果签名的软件文件为有效的并且安全版本代码为有效的,则控制器允许将软件文件安装在控制器中。

Description

用于选择性软件回退的方法
技术领域
本发明大体上涉及用于防止软件文件的脆弱的旧版本在控制器中被刷写的系统和方法,并且更具体地涉及用于防止软件文件的脆弱的旧版本在车辆电子控制单元(ECU)中被刷写的系统和方法,这包括每次发布新软件文件时更新安全码以修正安全漏洞。
背景技术
大多数现代化车辆包括电子控制单元(ECU)或控制器,其控制诸如动力系、气候控制系统、信息娱乐系统、车身系统、底盘系统以其它的车辆系统的操作。此类控制器需要为专门用途设计的软件,以便执行控制功能。随着这些控制器的数量和复杂性的增加,以及由恶意软件开发者造成的威胁的不断增加,比以往更重要的是对加载到汽车控制器上的二进制文件的来源和内容进行认证。在车辆控制器中使用未正确认证的或坏的、恶意设计的软件的后果包括车辆或其系统的非预期行为、车辆上的防盗特征的丢失、对诸如里程计的部件的潜在篡改、以及其它车辆特征和功能的丢失。
一种已知的数字编码技术被称为非对称密钥加密,其使用数字签名来认证编程到控制器中的文件。如本领域的技术人员所充分理解的,非对称密钥加密使用称为私钥和公钥的一对与数学有关的密钥来加密和解密消息。为了创建数字签名,签名者使用他的仅其本人知道的私钥来加密消息。该数字签名可随后由另一方使用与签名者的私钥成对的公钥来解密。
刷写是一种用于将软件、校准文件和其它应用程序上传到车辆ECU或其它可编程装置的闪存中的熟知的方法。引导装载程序是一种加载到ECU上的嵌入式软件程序,该程序在ECU和正刷写软件的编程装置之间提供接口。引导装载程序可采用非对称密钥加密并存储在允许ECU执行软件或校准之前必须用来对由编程装置传输的数字签名进行解码的公钥。
与软件文件相关联的文件标题通常包括关于该文件的信息和包括模块ID、兼容ID、签名、地址范围等的与紧随文件标题的代码有关的信息。一旦软件文件已被发布、正确刷写和在ECU中运行,就可能发现软件文件具有一些安全漏洞,潜在的黑客可能通过该安全漏洞恶意访问ECU。当此类安全漏洞被识别时,车辆制造商可以修订软件文件,以便消除安全漏洞。然后将新软件文件刷写到ECU中以替换编程到ECU存储器中的脆弱软件。然而,ECU可能仍然是脆弱的,因为拥有带正确的可信签名的软件文件的脆弱旧版本的潜在黑客可以将该软件文件加载回ECU,然后利用安全漏洞。换言之,如果已用修正安全漏洞的修订过的软件文件刷写了ECU,潜在黑客可以访问已正确签名但包括安全漏洞的较旧版本的软件文件,将该软件文件加载回ECU,然后利用安全漏洞。
发明内容
根据本发明的教导,公开了用于验证将安装到控制器中的软件文件的系统和方法。该方法包括准备所述软件文件,包括将软件版本代码分配给软件文件,将安全版本代码分配给软件文件,以及用软件文件版本代码和安全版本代码对软件文件进行签名。签名的软件文件被提供至控制器以安装在控制器上,并且控制器验证软件文件签名以确定软件文件是否为有效的以及安全版本代码是否为有效的。如果签名为有效的且安全版本代码为有效的,并且满足其它所需条件,则控制器允许将软件文件安装在控制器中。
本发明提供下列技术方案。
1. 一种用于验证将安装到控制器中的软件文件的方法,所述方法包括:
准备所述软件文件;
将软件版本代码分配给所述软件文件;
将安全版本代码分配给所述软件文件;
用所述软件文件版本代码和所述安全版本代码对所述软件文件进行数字签名;
将所述签名的软件文件提供至所述控制器以安装在所述控制器上;
验证所述控制器中的所述软件文件签名以确定所述软件文件是否为有效的;
如果所述控制器确定所述签名的软件文件为有效的,则确定所述软件文件中的所述安全版本代码是否为有效的;以及
如果所述签名的软件文件为有效的且所述安全版本代码为有效的,则允许将所述软件文件安装在所述控制器中。
2. 根据技术方案1所述的方法,其中将安全版本代码分配给所述软件文件包括:如果所述软件文件未准备用于修正安全漏洞,则将所述安全版本代码保持相同;如果所述软件文件已准备好用于修正安全漏洞,则增加所述安全版本代码。
3. 根据技术方案2所述的方法,其中确定所述软件文件中的所述安全版本代码是否为有效的包括确定所述安全版本代码是否为存储在所述控制器中的较旧版本的安全版本代码,如果是这样,则不允许将所述软件文件加载到所述控制器中。
4. 根据技术方案2所述的方法,其中确定所述软件文件中的所述安全版本代码是否为有效的包括确定所述安全版本代码是否为存储在所述控制器中的相同或较新版本的所述安全版本代码,如果是这样,则允许将所述软件文件加载到所述控制器中。
5. 根据技术方案4所述的方法,还包括:如果分配给所述软件文件的所述安全版本代码大于所述存储的版本的所述安全版本代码,则将所述控制器中的所述存储的版本的所述安全版本代码变为分配给所述软件文件的所述安全版本代码。
6. 根据技术方案1所述的方法,其中对所述软件文件签名包括使用采用数字签名与公钥和私钥的非对称密钥加密,并且验证所述软件文件包括数字签名验证。
7. 根据技术方案1所述的方法,其中所述控制器为车辆上的电子控制单元(ECU)。
8. 一种用于验证将安装到车辆上的电子控制单元(ECU)中的软件文件的方法,所述方法包括:
准备所述软件文件;
将软件版本代码分配给所述软件文件;
将安全版本代码分配给所述软件文件,其中将安全版本代码分配给所述软件文件包括:如果所述软件文件未准备用于修正安全漏洞,则将所述安全版本代码保持相同;以及如果所述软件文件已准备好用于修正安全漏洞,则增加所述安全版本代码;
用所述软件文件版本代码和所述安全版本代码对所述软件文件进行数字签名;
将所述签名的软件文件提供至所述ECU以安装在所述控制器上;
验证所述ECU中的所述软件文件签名以确定所述软件文件是否为有效的;以及
如果所述ECU确定所述签名的软件文件为有效的,则确定所述软件文件中的所述安全版本代码是否为有效的,其中确定所述软件文件中的所述安全版本代码是否为有效的包括确定所述安全版本代码是否为存储在所述控制器上的较旧版本的所述安全版本代码,并且如果是这样,则不允许将所述软件文件安装在所述控制器中,如果不是这样,则允许将所述软件文件安装在所述控制器中。
9. 根据技术方案8所述的方法,还包括:如果分配给所述软件文件的所述安全版本代码大于所述存储的版本的所述安全版本代码,则将所述控制器中的所述存储的版本的所述安全版本代码变为分配给所述软件文件的所述安全版本代码。
10. 根据技术方案8所述的方法,其中对所述软件文件签名包括使用采用数字签名与公钥和私钥的非对称密钥加密,并且验证所述软件文件包括数字签名验证。
11. 一种用于验证将安装到控制器中的软件文件的系统,所述系统包括:
用于准备所述软件文件的装置;
用于将软件版本代码分配给所述软件文件的装置;
用于将安全版本代码分配给所述软件文件的装置;
用于用所述软件文件版本代码和所述安全版本代码对所述软件文件进行签名的装置;
用于将所述签名的软件文件提供至所述控制器以安装在所述控制器上的装置;
用于验证所述控制器中的所述软件文件签名以确定所述软件文件是否为有效的装置;
用于在所述控制器确定所述签名的软件文件为有效的时确定所述软件文件中的所述安全版本代码是否为有效的装置;以及
用于在所述软件文件为有效的且所述安全版本代码为有效的时允许将所述软件文件安装在所述控制器中的装置。
12. 根据技术方案11所述的系统,其中用于将安全版本代码分配给所述软件文件的装置在所述软件文件未准备用于修正安全漏洞时将所述安全版本代码保持相同,并且在所述软件文件已准备好用于修正安全漏洞时增加所述安全版本代码。
13. 根据技术方案12所述的系统,其中用于确定所述软件文件中的所述安全版本代码是否为有效的装置确定所述安全版本代码是否为存储在所述控制器上的较旧版本的所述安全版本代码,如果是这样,则不允许将所述软件文件加载到所述控制器中。
14. 根据技术方案12所述的系统,其中用于确定所述软件文件中的所述安全版本代码是否为有效的装置确定所述安全版本代码是否为存储在所述控制器上的相同或较新版本的所述安全版本代码,如果是这样,则允许将所述软件文件加载到所述控制器中。
15. 根据技术方案14所述的系统,还包括用于在分配给所述软件文件的所述安全版本代码大于所述存储的版本的所述安全版本代码时将所述控制器中的所述存储的版本的所述安全版本代码变为分配给所述软件文件的所述安全版本代码的装置。
16. 根据技术方案11所述的系统,其中,所述用于对所述软件文件签名的装置使用采用数字签名与公钥和私钥的非对称密钥加密,并且所述用于验证所述软件文件的装置采用数字签名验证。
17. 根据技术方案11所述的系统,其中所述控制器为车辆上的电子控制单元(ECU)。
根据结合附图的以下描述和所附权利要求,本发明的另外的特征将变得显而易见。
附图说明
图1是示出用于验证数字签名的过程的示意性框图;
图2是使用数字签名对电子内容进行签名和验证的方法的框图,包括将内容和签名文件从编程源传输至执行控制器;
图3是示出如何将电子内容和数字签名物理地传输至车辆中的控制器的方法的示意图;
图4是示出用于利用每个新软件版本和安全级别代码更新特定的软件文件的过程的流程图;
图5是示出将软件文件安装在ECU上的过程的流程图;以及
图6是示出用于确定是否应将新软件文件刷写到ECU中的过程的流程图。
具体实施方式
涉及用于防止脆弱的较旧版本的软件文件被刷写在ECU上的系统和方法的本发明的实施例的以下讨论在本质上仅仅是示例性的,而决不意图限制本发明或其应用或用途。例如,如本文所讨论的,用于防止刷写脆弱的较旧版本的软件文件的技术具有用于车辆ECU的应用。然而,本领域的技术人员可以理解,该技术可应用于其它控制器。
图1是用于使用非对称密钥数字签名来认证编程到控制器中的文件的已知方法的框图10。如本领域的技术人员所理解的,非对称密钥加密使用称为私钥和公钥的一对与数学有关的密钥来加密和解密消息。为了创建数字签名,签名者使用他的仅其本人知道的私钥来加密数字消息。随后可由另一方使用与签名者的私钥成对的公钥对数字签名进行解密,以认证文件或消息。
在签名步骤12中,提供内容文件14,其中内容文件14可以是一个软件、校准文件或将在控制器中使用的其它“软部分”内容。对内容文件14进行散列计算以产生内容文件14的散列值16。然后用签名者的私钥对散列值16加密,以产生数字签名18,其中数字签名18仅对特定内容文件是有用的。
然后在验证步骤20中使用数字签名18和内容文件14,在本文所讨论的应用中,该步骤将由ECU中的引导装载程序执行。数字签名18利用签名者的公钥被解密以产生解密的散列值22。同时,由验证器对内容文件14进行散列计算,以产生计算的散列值24。在框26处,将解密的散列值22与计算的散列值24相比较。如果解密的散列值22匹配计算的散列值24,则在椭圆28处发布有效的确定,并且使用内容文件14。如果解密的散列值22不匹配计算的散列值24,则在椭圆30处发布无效的确定,并且不使用内容文件14。
图2是示出使用数字签名对电子内容进行签名和验证的方法的框图40,包括将内容和签名文件从编程源传输至执行控制器。文件存储库42存储统称为内容文件44的可执行软件、校准文件或其它“软部分”文件”。内容文件44通常为二进制文件。期望获得数字签名46以用于内容文件44。为了对内容文件44进行数字签名,将内容文件44提供给签名服务器48。在签名服务器48上,对内容文件44执行散列计算以产生散列值52。使用存储在签名服务器48上的私钥对散列值52加密,其中加密产生数字签名46。然后,将数字签名46提供返回给文件存储库42。
此时,内容文件44和数字签名46均存在于存储库42中。挑战是之后通过由汽车制造商使用的各种商业系统来传输内容文件44和数字签名46,以及安装和验证在车辆中的控制器上的内容文件44。通常,汽车制造商将具有至少两个负责在车辆中的控制器上安装软件和校准文件的组织或部门,即制造和服务部门。图2示出制造数据库56,该数据库由汽车制造商的制造部门使用以管理安装为在生产车辆中的“部分”的电子文件。图2同样示出服务数据库62,该数据库由汽车制造商的服务部门使用以管理安装为在服务设施中起作用的在车辆中的“服务部分”的电子文件。如图2所示,制造数据库56和服务数据库62两者接收将被用于制造部门和服务部门的相应功能的内容文件44和数字签名46的副本。
为了实际上安装或刷写在车辆中的控制器上的内容文件44,使用了编程工具68。如图所示,编程工具68也接收内容文件44和数字签名46的副本。也就是说,制造部门可将来自制造数据库56的内容文件44和数字签名46提供至编程工具68以便安装在新的生产车辆上,或者服务部门可将来自服务数据库62的内容文件44和数字签名46提供至编程工具68以便安装在被提供服务的车辆上。
下一个步骤是用编程工具68将内容文件44安装在车辆中的控制器上。ECU 74是将实际上使用内容文件44的控制器。下面是ECU 74的架构的简要讨论。ECU 74上的软件由引导装载程序、可执行软件和一个或多个校准文件组成。出于该讨论的目的,假设ECU 74具有单个中央处理器(CPU)。在实际车辆中,ECU 74可具有多个CPU,并且每个CPU将具有引导装载程序、可执行软件和一个或多个校准文件。
ECU 74中的引导装载程序负责验证和安装新的可执行软件和校准文件。因此,在本段落中描述的功能由ECU 74中的引导装载程序执行。编程工具68将内容文件44和数字签名46提供给ECU 74。由引导装载程序使用存储库42的公钥来对数字签名46解密以产生解密的散列值78。公共签名密钥可驻留在ECU 74中或结合内容文件44和数字签名46提供给ECU 74。同时,由引导装载程序对内容文件44进行散列计算以产生计算的散列值84。在框80处,将解密的散列值78与计算的散列值84相比较。如果解密的散列值78匹配计算的散列值84,则发布有效的确定88,并且使用内容文件44。如果要使用的内容文件44为可执行软件,则引导装载程序将其作为新的可执行软件安装在ECU 74上。如果要使用的内容文件44为校准文件,则引导装载程序将其作为一个或多个校准文件之一安装在ECU 74上。如果解密的散列值78不匹配计算的散列值84,则发布无效的确定86,并且不在ECU 74上使用内容文件44。
图3是示出如何将电子内容和数字签名文件物理地传输至车辆控制器的方法的示意图。车辆36包括图2中示出和以上讨论的ECU 74。ECU 74可控制车辆36上的发动机、变速器、底盘、车身、信息娱乐系统或其它系统。内容文件44和数字签名46被提供至此处示出为制造数据库56的中央数据库。内容文件44和数字签名46向制造数据库56的传送可通过公司网络进行。制造数据库56将内容文件44和数字签名46提供给编程工具68,其中该传送可通过将编程工具68附接到可以访问数据库56的计算机来实现。编程工具68经由连接38与ECU 74通信,该连接可以是有线的或无线的。利用建立的连接38,内容文件44和数字签名46可从编程工具68下载至ECU 74,其中引导装载程序可执行先前讨论的安全验证功能。
本发明提出一种用于防止将软件文件的脆弱但真实的版本刷写到车辆ECU中的技术。特别地,除了诸如软件文件版本代码、模型模块ID、兼容ID等的软件文件的其它参数之外,识别软件文件的特定安全版本的安全版本(SECVER)代码被用作文件标题的一部分,以识别文件的安全级别。应当指出,安全版本代码包括在软件文件的编程部分中且包括在数字签名验证中。每次对软件文件的新版本进行发布准备时,文件的新版本可包括或不包括用于修正已识别的安全漏洞的代码。例如,软件文件的新版本可能由于许多原因而不涉及修正安全漏洞,例如,添加功能、提供用于不同车辆的文件等。如果软件文件的新版本不解决安全漏洞问题,则安全版本代码保持相同,但更新软件的版本识别号。如果软件文件更新确实包括用于修正安全漏洞的代码,则针对该新版本更新安全版本代码。因此,软件文件的任何此前版本将不包括该新的更新的安全版本代码。因此,将不允许拥有包括较早的安全版本代码的正确签名的较旧版本的软件文件的潜在黑客刷写到ECU中。特别地,引导装载程序在新软件文件被刷写之前将确认该软件文件的文件标题上的签名,并且还将验证安全版本代码等于或晚于已安装在ECU上的现有软件文件的所存储的安全版本代码。
以上讨论可由图4所示流程图90来表示。软件文件版本代码1限定在框92处且包括表示该软件的初始发布版本和在特定时间点的当前安全代码的安全版本代码1。如果该软件文件被更新至在框94处表示的不包括用于修正安全漏洞的代码的软件文件的第二版本,则识别更新的软件文件的发布代码被更新至例如软件文件版本代码2,但安全版本代码将与前一版本的安全版本代码1保持相同。如果在软件文件的第二版本代码2发布之后在其中识别到安全漏洞,则可以在框96处准备和发布新版本的软件文件以修正漏洞,其包括新的软件文件版本代码(例如,软件文件版本代码3)和用于补丁文件的更新的较晚的安全版本代码(例如,安全版本代码2)。
如果新版本的软件文件被发布以用于安装,则引导装载程序将仅当该版本被正确签名且包括与当前存储在ECU上的安全版本代码相同或更高的安全版本代码时允许该版本被刷写到ECU中。如果新版本的软件文件包括比当前存储的软件文件更高的安全版本代码,则引导装载程序将把其安全版本代码更新至新的安全版本代码,以使得包括较低级别的安全版本代码的任何软件文件将不被允许继续刷写。因此,如果ECU中的引导装载程序接收到刷写新软件文件的请求,则其将确定软件文件是否被正确签名以及当被正确签名时其是否具有正确的安全版本代码。如果正确签名的软件文件具有比当前存储在引导装载程序中的安全版本代码更低的安全版本代码,则引导装载程序将不允许刷写该软件文件。如果新软件文件上的安全版本代码包括与引导装载程序上存储的相同的安全版本代码,则引导装载程序将允许刷写软件文件并且将把该安全版本代码保持在引导装载程序中。如果正确签名的软件文件包括比当前存储在引导装载程序上的更高的安全版本代码,则引导装载程序将允许刷写软件文件并且将把其存储的安全版本代码更新至软件文件上设置的级别,这样,要刷写的任何更晚版本的软件文件将需要具有该级别或更高级别的安全版本代码。
图5是示出用于在每次发布新版本的软件文件时分配软件版本代码和安全版本代码的过程的流程图100。在框102处,新版本的软件文件被准备好了并且准备用于发布。在框104处,新版本的软件文件被分配了新的软件文件版本代码。在决策菱形106处,软件发布工程师确定新版本是否用于安全漏洞修补,如果是这样,则在框108处软件发布工程师将下一个更高的安全版本代码分配给软件文件。接着在框110处软件发布工程师对软件文件签名。如果在决策菱形106处新软件版本不是用于修正安全漏洞,则在框112处软件发布工程师保持相同的安全版本代码,并且继续到框110以对新版本的软件文件签名。然后在框114处发布签名的软件文件,并且该过程在框116处结束。
图6是示出ECU中的引导装载程序用来确定是否应将新软件文件刷写到ECU中的过程的流程图120。引导装载程序在框122处接收新软件文件并在框124处识别标题信息。引导装载程序在决策菱形126处确定软件文件是否具有有效签名,如果不是,则引导装载程序在框128处退出引导。如果算法在决策菱形126处确定软件文件的确具有有效签名,则算法在决策菱形130处确定安全版本代码是否有效。如果安全版本代码是比引导装载程序中当前存储的安全版本代码更旧的代码,则引导装载程序在框128处退出引导。如果分别在决策菱形126和130处签名是有效的且安全版本代码是有效的,则引导装载程序在框132处安装或刷写软件文件。引导装载程序接着在决策菱形134处确定是否已满足运行软件文件的所有剩余要求,并且在不满足时在框128处退出引导,而不运行软件文件。如果算法确定软件文件上的安全版本代码高于引导装载程序中先前存储的安全版本代码,则引导装载程序在框136处存储新版本的安全代码以用于下一次软件发布,并且在框138处退出引导。
如本领域的技术人员将充分理解的,本文讨论的描述本发明的若干和各种步骤和过程可能是指由计算机、处理器或其它电子计算装置执行的操作,该电子计算装置利用电气现象操纵和/或转化数据。这些计算机和电子装置可以采用各种易失性和/或非易失性存储器,包括其上储存有可执行程序的非暂时性计算机可读介质,这些程序包括能够由计算机或处理器执行的各种代码或可执行指令,其中存储器和/或计算机可读介质可包括所有形式和类型的存储器和其它计算机可读介质。
所公开的以上讨论仅描述了本发明的示例性实施例。本领域技术人员将容易从此类讨论和附图及权利要求认识到,在不脱离所附权利要求中限定的本发明的精神和范围的情况下,可以在其中做出各种更改、修改和变型。

Claims (15)

1.一种用于验证将安装到控制器中的软件文件的方法,所述方法包括:
准备所述软件文件;
将软件版本代码分配给所述软件文件;
将安全版本代码分配给所述软件文件;
用所述软件版本代码和所述安全版本代码对所述软件文件进行数字签名;
将签名的软件文件提供至所述控制器以安装在所述控制器上;
验证所述控制器中的所述软件文件签名以确定所述软件文件是否为有效的;
如果所述控制器确定所述签名的软件文件为有效的,则确定所述软件文件中的所述安全版本代码是否为有效的;以及
如果所述签名的软件文件为有效的且所述安全版本代码为有效的,则允许将所述软件文件安装在所述控制器中,
其中将安全版本代码分配给所述软件文件包括:如果所述软件文件未准备用于修正安全漏洞,则将所述安全版本代码保持相同;如果所述软件文件已准备好用于修正安全漏洞,则增加所述安全版本代码。
2.根据权利要求1所述的方法,其中确定所述软件文件中的所述安全版本代码是否为有效的包括确定所述安全版本代码是否为存储在所述控制器中的较旧版本的安全版本代码,如果是这样,则不允许将所述软件文件加载到所述控制器中。
3.根据权利要求1所述的方法,其中确定所述软件文件中的所述安全版本代码是否为有效的包括确定所述安全版本代码是否为存储在所述控制器中的相同或较新版本的所述安全版本代码,如果是这样,则允许将所述软件文件加载到所述控制器中。
4.根据权利要求3所述的方法,还包括:如果分配给所述软件文件的所述安全版本代码大于存储的版本的所述安全版本代码,则将所述控制器中的所述存储的版本的所述安全版本代码变为分配给所述软件文件的所述安全版本代码。
5.根据权利要求1所述的方法,其中对所述软件文件签名包括使用采用数字签名与公钥和私钥的非对称密钥加密,并且验证所述软件文件包括数字签名验证。
6.根据权利要求1所述的方法,其中所述控制器为车辆上的电子控制单元ECU。
7.一种用于验证将安装到车辆上的电子控制单元ECU中的软件文件的方法,所述方法包括:
准备所述软件文件;
将软件版本代码分配给所述软件文件;
将安全版本代码分配给所述软件文件,其中将安全版本代码分配给所述软件文件包括:如果所述软件文件未准备用于修正安全漏洞,则将所述安全版本代码保持相同;以及如果所述软件文件已准备好用于修正安全漏洞,则增加所述安全版本代码;
用所述软件版本代码和所述安全版本代码对所述软件文件进行数字签名;
将签名的软件文件提供至所述ECU以安装在控制器上;
验证所述ECU中的所述软件文件签名以确定所述软件文件是否为有效的;以及
如果所述ECU确定所述签名的软件文件为有效的,则确定所述软件文件中的所述安全版本代码是否为有效的,其中确定所述软件文件中的所述安全版本代码是否为有效的包括确定所述安全版本代码是否为存储在所述控制器上的较旧版本的所述安全版本代码,并且如果是这样,则不允许将所述软件文件安装在所述控制器中,如果不是这样,则允许将所述软件文件安装在所述控制器中。
8.根据权利要求7所述的方法,还包括:如果分配给所述软件文件的所述安全版本代码大于存储的版本的所述安全版本代码,则将所述控制器中的所述存储的版本的所述安全版本代码变为分配给所述软件文件的所述安全版本代码。
9.根据权利要求7所述的方法,其中对所述软件文件签名包括使用采用数字签名与公钥和私钥的非对称密钥加密,并且验证所述软件文件包括数字签名验证。
10.一种用于验证将安装到控制器中的软件文件的系统,所述系统包括:
用于准备所述软件文件的装置;
用于将软件版本代码分配给所述软件文件的装置;
用于将安全版本代码分配给所述软件文件的装置;
用于用所述软件版本代码和所述安全版本代码对所述软件文件进行签名的装置;
用于将签名的软件文件提供至所述控制器以安装在所述控制器上的装置;
用于验证所述控制器中的所述软件文件签名以确定所述软件文件是否为有效的装置;
用于在所述控制器确定所述签名的软件文件为有效的时确定所述软件文件中的所述安全版本代码是否为有效的装置;以及
用于在所述软件文件为有效的且所述安全版本代码为有效的时允许将所述软件文件安装在所述控制器中的装置,
其中用于将安全版本代码分配给所述软件文件的装置在所述软件文件未准备用于修正安全漏洞时将所述安全版本代码保持相同,并且在所述软件文件已准备好用于修正安全漏洞时增加所述安全版本代码。
11.根据权利要求10所述的系统,其中用于确定所述软件文件中的所述安全版本代码是否为有效的装置确定所述安全版本代码是否为存储在所述控制器上的较旧版本的所述安全版本代码,如果是这样,则不允许将所述软件文件加载到所述控制器中。
12.根据权利要求10所述的系统,其中用于确定所述软件文件中的所述安全版本代码是否为有效的装置确定所述安全版本代码是否为存储在所述控制器上的相同或较新版本的所述安全版本代码,如果是这样,则允许将所述软件文件加载到所述控制器中。
13.根据权利要求12所述的系统,还包括用于在分配给所述软件文件的所述安全版本代码大于存储的版本的所述安全版本代码时将所述控制器中的所述存储的版本的所述安全版本代码变为分配给所述软件文件的所述安全版本代码的装置。
14.根据权利要求10所述的系统,其中,用于对所述软件文件签名的装置使用采用数字签名与公钥和私钥的非对称密钥加密,并且用于验证所述软件文件的装置采用数字签名验证。
15.根据权利要求10所述的系统,其中所述控制器为车辆上的电子控制单元ECU。
CN201310414325.XA 2012-09-12 2013-09-12 用于选择性软件回退的方法 Active CN103677891B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/612,225 2012-09-12
US13/612,225 US8978160B2 (en) 2012-09-12 2012-09-12 Method for selective software rollback
US13/612225 2012-09-12

Publications (2)

Publication Number Publication Date
CN103677891A CN103677891A (zh) 2014-03-26
CN103677891B true CN103677891B (zh) 2017-01-11

Family

ID=50153435

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310414325.XA Active CN103677891B (zh) 2012-09-12 2013-09-12 用于选择性软件回退的方法

Country Status (3)

Country Link
US (1) US8978160B2 (zh)
CN (1) CN103677891B (zh)
DE (1) DE102013108021A1 (zh)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103927497B (zh) * 2014-04-25 2017-07-14 华为技术有限公司 Ndm文件保护方法及装置
US9430220B2 (en) 2014-07-22 2016-08-30 GM Global Technology Operations LLC Method, medium, and apparatus for re-programming flash memory of a computing device
US10031502B2 (en) 2015-03-27 2018-07-24 Rockwell Automation Germany Gmbh & Co. Kg I/O expansion for safety controller
US10025287B2 (en) * 2015-03-30 2018-07-17 Rockwell Automation Germany Gmbh & Co. Kg Method for assignment of verification numbers
CN104935639A (zh) * 2015-05-06 2015-09-23 上海斐讯数据通信技术有限公司 一种智能终端及其应用的分布式开发系统及方法
EP3101535B1 (en) 2015-06-01 2022-04-13 OpenSynergy GmbH Method for updating a control unit for an automotive vehicle, control unit for an automotive vehicle, and computer program product
JP6197000B2 (ja) * 2015-07-03 2017-09-13 Kddi株式会社 システム、車両及びソフトウェア配布処理方法
JP6595822B2 (ja) * 2015-07-07 2019-10-23 キヤノン株式会社 情報処理装置及びその制御方法
US10402561B2 (en) * 2015-10-01 2019-09-03 Samsung Electronics Co., Ltd. Apparatus and method for protection of critical embedded system components via hardware-isolated secure element-based monitor
US10197985B2 (en) 2015-10-29 2019-02-05 Rockwell Automation Germany Gmbh & Co. Kg Safety controller module
US10055909B2 (en) 2016-07-08 2018-08-21 Calamp Corp. Systems and methods for crash determination
US10395438B2 (en) 2016-08-19 2019-08-27 Calamp Corp. Systems and methods for crash determination with noise filtering
US10219117B2 (en) 2016-10-12 2019-02-26 Calamp Corp. Systems and methods for radio access interfaces
DE102016221108A1 (de) * 2016-10-26 2018-04-26 Volkswagen Aktiengesellschaft Verfahren zum Aktualisieren einer Software eines Steuergeräts eines Fahrzeugs
US11301347B2 (en) * 2016-10-31 2022-04-12 Harman Becker Automotive Systems Gmbh Software update mechanism for safety critical systems
US10473750B2 (en) 2016-12-08 2019-11-12 Calamp Corp. Systems and methods for tracking multiple collocated assets
US10599421B2 (en) * 2017-07-14 2020-03-24 Calamp Corp. Systems and methods for failsafe firmware upgrades
JP6915500B2 (ja) 2017-11-06 2021-08-04 トヨタ自動車株式会社 更新システム、電子制御装置、更新管理装置、及び更新管理方法
DE102017222387A1 (de) * 2017-12-11 2019-06-13 Bayerische Motoren Werke Aktiengesellschaft Verfahren und System zum Autorisieren einer älteren Applikation eines Steuergeräts eines Fahrzeugs
US10430178B2 (en) 2018-02-19 2019-10-01 GM Global Technology Operations LLC Automated delivery and installation of over the air updates in vehicles
JP7035635B2 (ja) * 2018-03-07 2022-03-15 トヨタ自動車株式会社 車両制御システム及び車両制御システムにおけるソフトウェアの整合性確認方法
IT201800006081A1 (it) * 2018-06-06 2019-12-06 Procedimento per caricare codice software, sistema corrispondente e veicolo equipaggiato con tale sistema
JP6930949B2 (ja) * 2018-08-02 2021-09-01 株式会社日立製作所 ソフトウェア配信システム、ソフトウェア配信サーバ、及びソフトウェア配信方法
US11822955B2 (en) * 2020-01-17 2023-11-21 Steering Solutions Ip Holding Corporation System and method for decentralized vehicle software management
US11610000B2 (en) 2020-10-07 2023-03-21 Bank Of America Corporation System and method for identifying unpermitted data in source code
US11271971B1 (en) * 2021-03-19 2022-03-08 King Saud University Device for facilitating managing cyber security health of a connected and autonomous vehicle (CAV)
JP7464013B2 (ja) * 2021-07-05 2024-04-09 トヨタ自動車株式会社 センタ、otaマスタ、方法、プログラム、及び車両

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6074434A (en) * 1996-06-07 2000-06-13 International Business Machines Corporation Selection of code updates, data updates or new data for client
US7721110B2 (en) * 2001-04-06 2010-05-18 Mcafee, Inc. System and method for secure and verified sharing of resources in a peer-to-peer network environment
JP2008181228A (ja) * 2007-01-23 2008-08-07 Sony Corp 管理システムおよび管理方法、端末装置、管理サーバ、並びにプログラム
US8788510B2 (en) * 2007-08-17 2014-07-22 Salesforce.Com, Inc. System, method, and computer program product for runtime invocation of an appropriate version of program instructions in an on-demand database
CN101287227B (zh) * 2008-05-22 2011-11-09 德信无线通讯科技(北京)有限公司 移动通信终端及其防止软件安全级别回退的方法
US9256728B2 (en) * 2008-11-26 2016-02-09 Nokia Technologies Oy Method, apparatus, and computer program product for managing software versions
US8499349B1 (en) * 2009-04-22 2013-07-30 Trend Micro, Inc. Detection and restoration of files patched by malware
US8930933B2 (en) * 2010-03-19 2015-01-06 Salesforce.Com, Inc. System, method and computer program product for associating a plurality of stored elements with a creation of a patch
US8806471B2 (en) * 2010-09-28 2014-08-12 Red Hat, Inc. Upgrade and downgrade in package update operations
US20120198234A1 (en) * 2011-01-31 2012-08-02 Intuit Inc. Method and apparatus for ensuring the integrity of a downloaded data set

Also Published As

Publication number Publication date
US20140075197A1 (en) 2014-03-13
CN103677891A (zh) 2014-03-26
US8978160B2 (en) 2015-03-10
DE102013108021A1 (de) 2014-03-13

Similar Documents

Publication Publication Date Title
CN103677891B (zh) 用于选择性软件回退的方法
CN103166759B (zh) 使用诊断链路连接器(dlc)和onstar系统的用于安全固件下载的方法和装置
US8856538B2 (en) Secured flash programming of secondary processor
US8881308B2 (en) Method to enable development mode of a secure electronic control unit
US9021246B2 (en) Method to replace bootloader public key
CN107113167B (zh) 管理装置、密钥生成装置、车辆、维护工具、管理系统、管理方法以及计算机程序
US20140075517A1 (en) Authorization scheme to enable special privilege mode in a secure electronic control unit
US8966248B2 (en) Secure software file transfer systems and methods for vehicle control modules
US20130111212A1 (en) Methods to provide digital signature to secure flash programming function
CN103460195B (zh) 用于安全软件更新的系统和方法
US20190028267A1 (en) In-vehicle computer system, vehicle, key generation device, management method, key generation method, and computer program
US8949611B1 (en) Methods, apparatus and computer program products for authenticating and determining integrity of a software part of an air vehicle
CN111066016A (zh) 应用证书
US20130111271A1 (en) Using a manifest to record presence of valid software and calibration
US20140058532A1 (en) Method for partial flashing of ecus
US20240126886A1 (en) Trusted Computing for Digital Devices
KR101982917B1 (ko) Ecu 보안 유지를 위한 인증서 기반 차량 보안 방법 및 장치
CN116827544B (zh) 一种用于更换车载obu信任根的方法及系统
CN114741100A (zh) 车辆固件的升级任务发布方法、装置、服务器及存储介质
JP6519060B2 (ja) 管理装置、車両、管理方法、及びコンピュータプログラム
CN115996375A (zh) 一种实现车辆空中下载的方法及系统
CN105790931A (zh) 一种密钥分发方法、网络设备、终端设备及系统
JP2022107288A (ja) 自動車用電子制御装置
JP2024049543A (ja) 鍵書込装置
CN114879980A (zh) 车载应用安装方法、装置、计算机设备、存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant