车辆模块的安全编程的制作方法

文档序号:6338287阅读:322来源:国知局
专利名称:车辆模块的安全编程的制作方法
技术领域
本发明总体上涉及车辆模块编程,且更具体地涉及车辆模块的安全编程的方法。
背景技术
当用独特识别参数编程多个车辆模块(例如,数千个或数百万的这种模块)时,总 是可能用相同参数编程一个或多个模块。例如,在由于系统故障引起编程系统停止之后,编 程器可无意地用先前编程车辆模块参数来重新启动下一个车辆模块的编程或者至少可能 不会识别编程系统停止在哪一阶段。此外,总是需要最小化或防止车辆模块的欺骗性编程。

发明内容
根据本发明的一个方面,提供一种用于编程车辆模块的方法。所述方法包括以下 步骤(a)提供包含多个安全证书的证书介质;(b)在证书编程器中使用证书介质来编程多 个车辆模块;(c)在证书介质中记录车辆模块编程的状态;以及(d)在编程失败的情况下, 在第二证书编程器中使用证书介质来编程车辆模块。根据本发明的另一方面,提供一种用于编程车辆模块的方法。所述方法包括以下 步骤(a)提供包含多个安全证书的证书介质;(b)在证书编程器中使用证书介质来编程多 个车辆模块;(c)每当车辆模块用一个证书编程时,更新车辆模块编程的状态;以及(d)在 编程失败的情况下,在第二证书编程器中使用证书介质来编程车辆模块。方案1. 一种用于编程车辆模块的方法,包括以下步骤
(a)提供包含多个安全证书的证书介质;
(b)在证书编程器中使用证书介质来编程多个车辆模块;
(c)在证书介质中记录车辆模块编程的状态;以及
(d)在编程失败的情况下,在第二证书编程器中使用证书介质来编程车辆模块。方案2.根据方案1所述的方法,其中,安全证书包括独特序列号。方案3.根据方案1所述的方法,其中,安全证书包括蜂窝电话号码。方案4.根据方案1所述的方法,其中,证书介质是光盘存储介质,包括数字通用 光盘(DVD)、压密盘(⑶)、或高分辨率光盘。方案5.根据方案1所述的方法,其中,证书介质是通用串行总线(USB)存储介质, 包括闪存驱动器或硬盘驱动器。方案6.根据方案1所述的方法,其中,证书编程器是被编程执行至少步骤(b)和 (c)的计算机。方案7.根据方案1所述的方法,其中,步骤(b)和(C) 一起还包括以下步骤i)通 过证书编程器从证书介质读取一些选定证书;ii)验证选定证书;iii)在应答选定证书被 使用时更新证书介质;iv)将选定证书发送到辅助编程器;ν)使用辅助编程器用选定证书 来编程车辆模块;vi)将车辆模块编程状态发送到证书编程器;以及vii)通过用表示选定 证书是否成功编程的确认来更新证书介质而记录所述状态。
方案8.根据方案7所述的方法,其中,辅助编程器是被编程执行步骤(b)的至少 一部分的计算机。方案9.根据方案7所述的方法,其中,编程车辆模块的状态包括成功或失败。方案10.根据方案7所述的方法,其中,步骤(iii)还包括步骤安全地签名证书 介质的应答更新,且其中步骤(vii)还包括步骤安全地签名证书介质的确认更新。方案11.根据方案1所述的方法,其中,步骤(C)还包括每当车辆模块用一个证 书编程时,更新所述状态。方案12.根据方案1所述的方法,其中,步骤(d)还包括确定编程失败次数是否 超过预先选定的值,如果是,使用第二证书编程器。方案13.根据方案1所述的方法,其中,步骤(b)还包括使用辅助编程器来对车 辆模块进行编程。方案14. 一种用于编程车辆模块的方法和系统,包括以下步骤
(a)提供包含多个安全证书的证书介质;
(b)在证书编程器中使用证书介质来编程多个车辆模块;
(c)每当车辆模块用一个证书编程时,更新车辆模块编程的状态;以及
(d)在编程失败的情况下,在第二证书编程器中使用证书介质来编程车辆模块。方案15.根据方案14所述的方法,其中,安全证书包括独特序列号。方案16.根据方案14所述的方法,其中,安全证书包括蜂窝电话号码。方案17.根据方案14所述的方法,其中,证书介质是光盘存储介质,包括数字通 用光盘(DVD)、压密盘(⑶)、或高分辨率光盘。方案18.根据方案14所述的方法,其中,证书介质是通用串行总线(USB)存储介 质,包括闪存驱动器或硬盘驱动器。方案19.根据方案14所述的方法,其中,证书编程器是被编程执行至少步骤(b) 和(c)的计算机。方案20.根据方案14所述的方法,其中,步骤(c)还包括在证书介质中记录车辆 模块编程的状态。


本发明的优选示例性实施例将在下文结合附图描述,在附图中,相同的附图标记 表示相同的元件,其中
图1是示出了能够使用本文公开的方法的编程系统的示例性实施例的框图; 图2是示出了能够使用本文公开的方法的编程系统的第二示例性实施例的框图;和 图3是示出了安全编程车辆模块的方法的一个实施例的流程图。
具体实施例方式下文所述的系统和方法涉及用于编程车辆模块的方法的不同实施例。所公开的方 法提供了包括提供包含多个安全证书的证书介质的编程机制。随后,证书编程器使用证书 介质编程多个车辆模块。在车辆模块编程的每个阶段期间,编程状态在证书介质中安全地 更新。在编程失败的情况下,在第二证书编程器中使用证书介质来编程车辆模块。该方法允许系统安全地跟踪车辆模块编程的状态,从而如果存在需要使用不同编程计算机的故障, 证书介质可以容易地移动到另一个计算机,以继续编程而没有跳过或复制来自于介质的任 何具体证书组的风险。参考图1,示出了可以用于实施本文公开的方法的示例性编程系统10。编程系统 10总体上包括证书生成器20、证书介质30、证书编程器40、一个或多个辅助编程器50、一 个或多个车辆模块60、以及第二编程器70。应当理解的是,所公开方法可以与任何数量的 不同系统一起使用且并不具体限于本文所示的操作环境。而且,系统10及其各个部件的架 构、结构、设置和操作是本领域公知的。因而,以下段落简单地提供一种这样的示例性系统 10的简要概述;然而,本文未示出的其它系统也可以采用所公开方法。证书生成器20可以是能经由专用网络或公共网络(如,互联网)访问的多个计算机 之一。该证书生成器可用于一个或多个目的,例如生成证书介质30。该证书生成器可以使 用任何合适类型的计算机(例如,台式计算机或便携式计算机)实施,其存储包括加密应用 编程界面的任何加密工具。除了计算机之外,可以使用其它类型的证书生成器20。例如,第 三方证书授权可以用于生成证书介质30。证书介质30是计算机可读介质且可以是任何多个不同存储介质。其主要用途是 存储和能够由证书编程器40等更新。可能的证书介质30的列表包括数字通用光盘(DVD) (例如,DVD-RW、DVD+RW、DVD-RAM)、高分辨率介质(例如,蓝光光盘、HD DVD)、压密盘(CD)(例 如,⑶-RW)、通用串行总线(USB)(例如,USB闪存驱动器)、存储卡(例如,安全卡)、外部硬盘、 数据磁带、软盘等。上述列表绝不是所有可能证书介质30的穷举性列表,而是简单地提供 证书介质30的几个示例,其它对于技术人员来说更加是显而易见的。证书编程器40可以是能够读取和更新介质30且处理电子指令的任何类型的装 置,包括计算机、微处理器、微控制器、主处理器、控制器、以及专用集成电路(ASIC)。其还可 以称为喷射器,因为其用于将证书喷射到系统中,以用于编程车辆模块。证书编程器40可 以是仅用于车辆模块60的专用编程器或者可以与其它车辆系统一起使用。证书编程器40 执行各种类型的数字存储指令,如其中存储的软件或固件程序,这使得车辆模块60能够被 编程。例如,证书编程器40可以与辅助编程器50通信且可以执行程序或过程数据以实现 本文所述方法的至少一部分。辅助编程器50可以是能够编程车辆模块60的任何类型的装置。辅助编程器50 可以通过证书编程器40、通过编程器50内的数字存储指令等自动地操作。辅助编程器50 还可以通过操作者操作,在这种情况下可以采用例如运行编程应用的计算机端子或界面的 形式。辅助编程器50可以通过通信缆线(例如,串行、USB、以太网等)或无线地连接到模块 60。其它选择是可能的,例如在一个实施例中,模块60在被编程时可以容纳在辅助编程器 50内。车辆模块60包括位于车辆内的任何车辆模块。作为示例,一个车辆模块可以是允 许经过无线运营系统且经由无线网络的无线语音和/或数据通信的远程信息处理单元,从 而车辆可以与呼叫中心、其它支持远程信息处理的车辆、或一些其它实体或装置通信。另 一个车辆模块可以是发动机控制模块(ECM),其控制发动机操作的各个方面,例如燃料点火 和点火定时。另一个车辆模块可以是动力系控制模块,其调节车辆动力系的一个或多个部 件的操作,另一个车辆模块可以是管理位于车辆内的各个电气部件(如,车辆电动门锁和前灯)的车身控制模块。如本领域技术人员理解的,上述车辆模块仅仅是可以用于系统10或 100中的一些模块的示例,因为许多其它模块也是可能的。此外,应当理解的是,前述模块中 的至少一些能够以在车辆(未示出)内保存的软件指令的形式实施,它们可以是位于车辆内 的硬件部件或车辆模块(例如,芯片、EEPR0M、闪存、PAL等)等等。图2示出了可以用于实施本文公开的方法的第二示例性编程系统100。编程系统 100总体上包括证书生成器20、证书介质30、证书编程器140、一个或多个车辆模块60、以及 第二编程器170。除了系统100的编程器140结合了系统10的编程器40和50两者之外, 系统100与系统10类似。类似地,系统100的第二编程器170结合了系统10的编程器50 和70两者。因而,模块60通过系统100中的编程器140或170直接编程。现在转向图3,示出了用于编程车辆模块的方法200。方法200在步骤202启动且 通过生成安全证书介质30开始。存在生成证书介质30的多种选择,包括内部生成、第三方 生成或者这些的任何组合。在一个实施例中,介质30通过原始设备制造商(OEM)汽车公司 或供应商使用任何合适的加密工具(包括加密应用编程界面)内部生成。在第二实施例中, 介质30通过第三方(包括,应用服务提供商、管理服务提供商等)生成。在任一情况下,可 以使用一种或多种加密技术,包括公共密钥加密(例如,不对称公共密钥-私人密钥、对称 私人密钥等)、强认证、一个或多个因素认证(即,来自于“你知道什么”、“你具有什么”和“你 是什么”的至少一个因素或组合)(例如,单因素、双因素认证(T-FA)等)等。可以使用的因 素列表包括标志(例如,虚拟和/或物理标志)、智能卡、USB、生物测定、磁卡、电话、SMS、密码 等。因而,除了在有/没有其自身嵌入安全因素的情况下生成介质30之外,也可以生成一个 或多个附加因素。在一个实施例中,介质30用促使用户输入密码或使用生物测定数据的软 件或固件生成。在另一个实施例中,介质30与USB驱动器结合生成,USB驱动器对于操作介 质30来说是必要的。技术人员将理解,可以使用其它技术。生成的证书包括数字证书、一个 或多个密钥(例如,私人密钥、公共密钥等)、电话号码(例如,蜂窝电话号码)、标识符(例如, 模型序列码、车辆识别码(VIN))等。证书的该集合能在包含在一个或多个文件中且合并在 一个或多个数据库中的一个或多个表格或任何其它格式中逻辑相关和分组。例如,在一个 实施例中,数据可以作为用于每个独立模块的一组独立证书(例如,数字证书、安全密钥、电 话号码、VIN等)相关。在第二实施例中,数据可以作为多组类似数据类型(例如,第一组数 字证书列表、第二组安全密钥列表、第三组电话号码列表、第四组VIN列表等)相关。一旦生成,证书介质30插入到主喷射器40中,如步骤203所示。接下来,主喷射 器40按照步骤204从证书介质30读取(下一个)选定证书组。证书组包括要在车辆模块 60中编程的任何数据。此外,证书组可包括保持过程的安全方面的所需安全数据。在一个 实施例中,证书组包括密钥证书(例如,X. 509)、私人密钥、共享密钥、电话号码和序列号。在 方法200中,在下一次过程循环回到步骤204时,从证书介质读取下一个证书组(204 )。在步骤206,检查选定证书的有效性。在一个实施例中,主喷射器40可检查证书的 有效性。本文可以执行一个或多个检查,包括完整性(即,该组是否包括所有证书?)、准确 性(例如,每个证书是完整的且具有所有其字母数字数码?)、独特性(例如,合适的证书是 独特的且之前未被使用?)、和/或其它检查。这可以包括使用一个或多个数字证书以确保 证书的置信度和/或真实性。在证书有效的情况下,方法200前进到步骤208。然而,如果 证书无效,那么方法200前进到步骤216。两个步骤都将在下文描述。
如果选定证书有效,在步骤208,主喷射器40更新证书介质30。在该步骤,方法 200保持跟踪哪个证书组在使用。因而,如果过程在该步骤停止,用户将有效地且以及时的 方式认识到接下来使用哪个证书组。此外,跟踪哪个证书组在使用将提供过程及其性能的 透明性。当前证书的这种跟踪可以经由写到证书介质30上的应答完成;例如,通过将当前 被使用的选定证书组(或其独特标识符)写到介质30上(例如,在独立文件中)。该应答也 可以包括迄今使用的所有证书列表。主喷射器40还可以使用消息验证码(MAC)来数字签 名该应答,包括加密散列消息验证码(HMAC或KHMAC),如HMAC-MD (例如,MD4、MD5等), HMAC-SHA (例如,SHA-0、SHA-l、SHA-2、SHA-3等)等。在一个实施例中,主喷射器40使用 HMAC-SHA-256来对选定证书组被使用的应答进行数字签名。本领域技术人员将认识到,可 以使用其它消息验证码。随后,主喷射器40将选定证书发送到辅助编程器50(步骤210)。证书可以从喷射 器40通过网络自动地发送到辅助编程器50,或者操作者可借助于通过喷射器40提供指令 来执行该任务,以将证书发送到辅助编程器50。然后,辅助编程器50按照步骤212用选定 证书编程模块60。在该步骤和任何其它步骤期间,尽管该讨论仅仅涉及一个模块和一个辅 助编程器,然而,可以使用多个模块和辅助编程器。在一个实施例中,使用多个辅助编程器, 然而,每个辅助编程器一次仅对一个模块编程。在第二实施例中,每个辅助编程器一次对多 个模块编程。仅仅给出几个选择,因为其它是可能的。存在可以采用的多种编程策略。在 一个实施例中,辅助编程器50尝试编程模块60 —次且不取决于模块60编程状态的结果, 然后,随后方法200前进到下一步骤214。在另一个实施例中,如果在方法200前进到下一 步骤214之前通知编程失败(例如,一个或多个证书未被编程),辅助编程器50可尝试多次 编程模块60。编程时段可受到在编程失败的情况下执行多次尝试的时间段的限制,直到经 过某一时间段。在另一个实施例中,编程时段受到在编程失败的情况下编程尝试次数的限 制。仅仅给出了几个示例,因为其它是可能的,例如,可以使用尝试次数和最大编程时间段 的组合。接下来,辅助编程器50按照步骤214将编程状态发送到主喷射器40。该状态可 以是合格或失败状态。如果模块60编程成功,那么可以建立合格状态。如果模块60编程 被确定为不成功,那么可以建立失败状态。除了其它之外,该步骤给方法200提供过程透明 性,从而用户等可以容易地监测、评估、校正和/或改进系统10。在步骤216,主喷射器40记录和计数模块60编程状态。在该阶段,喷射器40记录 和计数从辅助编程器50接收的模块60编程状态(例如,合格次数、失败次数等)。此外,其 按照步骤206记录和计数证书无效状态。成功编程(合格状态)的记录可以通过将刚刚成功 编程的实际证书或其独特标识符、和/或迄今成功编程的所有证书的列表安全地写到证书 介质30来完成。而且,该确认可以针对真实性和/或置信度的数字签名。在步骤218,检查主喷射器40失败状态。该状态可以是失败或未失败(成功)。失 败可以通过一个或多个因素来确定,包括由主喷射器40返回的无效选定证书的一个计数、 由主喷射器40返回的无效选定证书的预定数量计数、主喷射器40不能与编程器50、介质 30等通信、等等。失败状态还可以包括前文所述的一个或多个辅助编程器50的失败状态。 在失败的情况下,方法200前进到步骤220,其中,证书介质30用于不同喷射器中,如喷射 器70,其将变为主喷射器且方法200循环回到步骤204,其中,喷射器70从证书介质30读取下一个选定证书组。然而,如果存在未失败状态,那么喷射器40将证书介质更新为模块 60被成功编程且安全地签名通信。然后,方法200循环回到步骤204,其中,喷射器40从证 书介质30读取下一个选定证书组。在步骤220,当系统切换到第二编程器70时,证书介质30通过第二喷射器访问,第 二喷射器确定主喷射器成功编程停止的点。然后,第二喷射器可以用第一喷射器未成功编 程的第一个证书组来继续。该过程可以通过第二喷射器70的合适编程来自动实现。因而, 例如,第二喷射器可以从介质30读取识别使用的最后证书的数字签名文件,且基于此使用 来自于介质30的第一未使用证书来进行步骤204。具有若干变化的方法200可以与图2所示系统100 —起使用,系统100示出了能 够对车辆模块编程的编程系统的第二示例性实施例。在这种情况下,除了读取和更新证书 30之外,主喷射器140还对车辆模块60编程。因而,省去步骤210和214,且步骤212由主 喷射器140执行。在失败的情况下,第二喷射器170将取代喷射器140。应当理解的是,前述说明不是本发明的限定,而是本发明的一个或多个优选示例 性实施例的说明。本发明并不限于本文公开的具体实施例,而相反仅仅由所附权利要求限 定。此外,前述说明中包含的陈述涉及具体实施例且不理解为对本发明范围或权利要求中 使用的术语定义的限制,除非术语或措词在上文明确定义。所公开实施例的各种其它实施 例和各种变化和修改对本领域技术人员来说将是显而易见的。所有这种其它实施例、变化 和修改旨在落入所附权利要求范围内。如该说明书和权利要求中使用的那样,用词“例如”、“如”、“诸如”和“如同”以及 动词“包括”、“具有”、“包含”及其其它动词形式,在与一个或多个部件或其它项的列表结合 使用时,均应当被理解为开放式的,意味着列表不认为是排除其它附加部件或项。其它用词 应当使用其最广泛的合适涵义理解,除非它们在需要不同解释的上下文中使用。
权利要求
1.一种用于编程车辆模块的方法,包括以下步骤(a)提供包含多个安全证书的证书介质;(b)在证书编程器中使用证书介质来编程多个车辆模块;(c)在证书介质中记录车辆模块编程的状态;以及(d)在编程失败的情况下,在第二证书编程器中使用证书介质来编程车辆模块。
2.根据权利要求1所述的方法,其中,安全证书包括独特序列号。
3.根据权利要求1所述的方法,其中,安全证书包括蜂窝电话号码。
4.根据权利要求1所述的方法,其中,证书介质是光盘存储介质,包括数字通用光盘 (DVD)、压密盘(⑶)、或高分辨率光盘。
5.根据权利要求1所述的方法,其中,证书介质是通用串行总线(USB)存储介质,包括 闪存驱动器或硬盘驱动器。
6.根据权利要求1所述的方法,其中,证书编程器是被编程执行至少步骤(b)和(c)的 计算机。
7.根据权利要求1所述的方法,其中,步骤(b)和(c)一起还包括以下步骤i)通过证 书编程器从证书介质读取一些选定证书;ii)验证选定证书;iii)在应答选定证书被使用 时更新证书介质;iv)将选定证书发送到辅助编程器;V)使用辅助编程器用选定证书来编 程车辆模块;Vi)将车辆模块编程状态发送到证书编程器;以及Vii)通过用表示选定证书 是否成功编程的确认来更新证书介质而记录所述状态。
8.根据权利要求7所述的方法,其中,辅助编程器是被编程执行步骤(b)的至少一部分 的计算机。
9.根据权利要求7所述的方法,其中,编程车辆模块的状态包括成功或失败。
10.一种用于编程车辆模块的方法和系统,包括以下步骤(a)提供包含多个安全证书的证书介质;(b)在证书编程器中使用证书介质来编程多个车辆模块;(c)每当车辆模块用一个证书编程时,更新车辆模块编程的状态;以及(d)在编程失败的情况下,在第二证书编程器中使用证书介质来编程车辆模块。
全文摘要
本发明涉及车辆模块的安全编程。一种用于经由安全编程系统对车辆模块编程的方法。由该系统执行的方法包括生成包含一个或多个安全证书的证书介质。然后,证书编程器使用证书介质来编程一个或多个车辆模块。在车辆模块编程的每个阶段期间,在证书介质中安全地更新编程状态。在编程失败的情况下,在第二证书编程器中使用证书介质来编程车辆模块。
文档编号G06F9/44GK102096777SQ20101058374
公开日2011年6月15日 申请日期2010年12月10日 优先权日2009年12月11日
发明者K.L.皮尔斯 申请人:通用汽车有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1