硬件安全模块的刷写方法及系统与流程
1.本技术涉及自动驾驶技术领域,尤其是涉及一种硬件安全模块的刷写方法及系统。
背景技术:
2.随着现代汽车智能化、网联化的不断发展,虽然给人们带来了便利及驾驶体验感,但也为黑客提供了更多的网络攻击途径,攻击者能够通过突破车内网络或汽车电子组件实现对敏感数据获取、车辆远程控制等。影响汽车功能安全,对驾乘人员的生命安全构成威胁。因此在现有的ecu(electronic control unit,电子控制单元)中,为有效的保护资产的机密性、完整性等安全属性,通常会选择使用带有硬件安全模块(hardware security module,以下简称hsm)的ecu实现对相关资产的保护。hsm负责执行所有密码应用,包括基于对称密钥的加解密、完整性检查、基于非对称密钥的加解密、数字签名的生成及验证、安全启动以及用于安全应用的随机数生成功能等。
3.随着hsm的广泛应用,关于如何对hsm内部的软件进行升级引起工程师的注意。目前汽车行业内通常采用的方案是:1.将hsm的应用软件当作一种固件,量产阶段刷写后,永远不再进行更新;2.通过ecu中host侧的bootloader,直接对hsm侧的应用软件进行更新。
4.从便利性和安全性角度,现有的刷写方案主要存在以下几点问题:
5.(1)如果存在软件问题或安全漏洞,需要对ecu中的hsm应用软件进行更新时,方案一因不支持刷写功能导致无法完成hsm应用软件的升级,进而影响汽车功能安全,对驾乘人员的生命安全构成威胁。
6.(2)通过ecu中host侧bootloader虽然可以实现对hsm应用软件升级的目的,但是hsm软件必须以明文形式传输给host侧,这样违背了网络安全标准要求,会存在不安全的问题。
7.(3)采用方案二执行刷写时,如果在hsm应用软件刷写过程中,ecu出现异常掉电的情况,将导致hsm侧应用软件永不可用,进而hsm失去安全启动、加密、签名等网络安全所需要的功能。
技术实现要素:
8.本技术的目的在于提供一种硬件安全模块的刷写方法及系统,在hsm存在漏洞时,可以进行安全地软件刷写过程,在异常掉电后仍可进行再次刷写流程。
9.第一方面,本技术实施例提供一种硬件安全模块的刷写方法,方法应用于电子控制系统ecu中的主机端;主机端分别与刷写工具端、ecu中的硬件安全模块hsm端通信连接;主机端的第一缓存区存储有hsm升级文件;方法包括:接收到刷写工具端发送的开始刷写请求后,从第一缓存区中的hsm升级文件中提取目标密文和目标签名发送至hsm端,以使hsm端根据密文和第一签名进行签名校验;目标密文包括:header密文和hsm应用软件密文;在接收到hsm端返回的签名校验成功信息时,向hsm端发送升级刷写请求,以使hsm端执行升级刷
写操作。
10.在本技术较佳的实施方式中,上述在接收到刷写工具端发送的开始刷写请求后,从第一缓存区中的hsm升级文件中提取目标密文和目标签名发送至hsm端的步骤之前,方法还包括:接收到刷写工具端传输的hsm升级文件后,将hsm升级文件存储至第一缓存区。
11.在本技术较佳的实施方式中,上述以使hsm端根据目标密文和目标签名进行签名校验的步骤之后,方法还包括:在接收到hsm端返回的签名校验失败信息时,擦除第一缓存区中的hsm升级文件,并向刷写工具端发送hsm升级失败信息。
12.在本技术较佳的实施方式中,上述方法还包括:在接收到hsm端发送的升级刷写操作对应的刷写结果后,将刷写结果发送至刷写工具端。
13.第二方面,本技术实施例还提供一种硬件安全模块的刷写方法,方法应用于ecu中的hsm端;hsm端与ecu中的主机端通信连接;方法包括:在接收到主机端发送的目标密文和目标签名后,根据目标密文和目标签名进行签名校验,并向主机端发送签名校验信息,以使主机端根据签名校验信息确定是否触发hsm端进行刷写操作;签名校验信息包括:签名校验成功信息或签名校验失败信息;目标密文包括:header密文和hsm应用软件密文;在接收到主机端发送的升级刷写请求后,根据header密文进行预设检验;预设检验包括:cmac校验和header密文的信息检验;如果检验成功,进行刷写操作;如果检验失败,记录刷写失败原因,并向主机端返回hsm刷写失败信息。
14.在本技术较佳的实施方式中,上述根据目标密文和目标签名进行签名校验,并向主机端发送签名校验信息的步骤,包括:通过预设安全散列算法对目标密文中的header密文和hsm应用软件密文进行计算,得到第一哈希值;根据预设非对称算法和预设公钥对目标签名进行解密,得到第二哈希值;判断第二哈希值与第一哈希值是否一致;如果是,向主机端发送签名校验成功信息;如果否,向主机端发送签名校验失败信息。
15.在本技术较佳的实施方式中,上述根据header密文进行预设检验的步骤,包括:基于预设对称加密算法和预先存储的私钥对header密文进行解密,得到header明文;header明文中包括第一cmac校验码和升级相关数据;升级相关数据包括:hsm应用软件对应的数据、起始地址、软件大小、软件版本号中至少一项;根据私钥和预设对称加密算法对升级相关数据进行计算,得到第二cmac校验码;判断第二cmac校验码和第一cmac校验码是否一致;如果是,检查header明文中包含的数据是否满足预设数据要求;如果是,确定检验成功。
16.在本技术较佳的实施方式中,上述hsm端的第二缓存区域中存储有历史hsm应用软件;进行刷写操作的步骤,包括:执行对第二缓存区的擦除操作;基于预设对称加密算法和预先存储的私钥对hsm应用软件密文进行解密,将解密后的hsm应用软件刷写到第二缓存区中;对刷写到第二缓存区中的数据进行完整性校验;如果校验成功,在第二缓存区中写入应用软件有效标志位,同时记录刷写成功信息;如果校验失败,继续执行记录刷写失败原因,并向主机端返回hsm刷写失败信息的步骤。
17.第三方面,本技术实施例还提供一种硬件安全模块的刷写方法,方法应用于刷写工具端;刷写工具端与ecu中的主机端通信连接;方法包括:向主机端发送擦除内存指令,以使主机端对擦除地址及长度进行检查,对用于暂存hsm升级文件的第一缓存区进行擦除;分别通过请求下载、传输下载数据、请求传输退出服务,将hsm升级文件传输至主机端,以使主机端将hsm升级文件暂存于第一缓存区;向主机端发送开始刷写请求,以使主机端基于从第
一缓存区中的hsm升级文件中提取的目标密文和目标签名触发刷写流程;按照预设周期,向主机端发送刷写结果获取指令,以从主机端获取hsm应用软件的刷写结果。
18.第四方面,本技术实施例还提供一种硬件安全模块的刷写系统,系统包括:刷写工具端、电子控制系统ecu中的主机端和hsm端;主机端分别与刷写工具端、hsm端通信连接;主机端用于执行如第一方面所述的方法;hsm端用于执行如第二方面所述的方法;刷写工具端用于执行如第三方面所述的方法。
19.本技术实施例提供的硬件安全模块的刷写方法及系统中,方法应用于电子控制系统ecu中的主机端;主机端分别与刷写工具端、ecu中的硬件安全模块hsm端通信连接;主机端的第一缓存区存储有hsm升级文件;主机端在接收到刷写工具端发送的开始刷写请求后,从第一缓存区中的hsm升级文件中提取目标密文和目标签名发送至hsm端,以使hsm端根据目标密文和目标签名进行签名校验;目标密文包括:header密文和hsm应用软件密文;在接收到hsm端返回的签名校验成功信息时,向hsm端发送升级刷写请求,以使hsm端执行升级刷写操作。本技术实施例中,hsm应用软件存在问题或安全漏洞时,可以通过主机端基于第一缓存区存储的hsm升级文件,向hsm端发送目标密文和目标签名,以使hsm端进行后续签名校验和软件刷写操作,通过密文传输可保证hsm应用软件的机密性和安全性,另外,升级刷写过程中如果出现异常掉电的情况,当ecu重新上电后,由于第一缓存区域中仍然保存有上次存储的hsm升级文件,因此hsm端可再次执行刷写流程。
附图说明
20.为了更清楚地说明本技术具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
21.图1为本技术实施例提供的一种硬件安全模块的刷写系统的结构图;
22.图2为本技术实施例提供的一种硬件安全模块的刷写方法的流程图;
23.图3为本技术实施例提供的一种硬件安全模块的刷写方法的示意图;
24.图4为本技术实施例提供的另一种硬件安全模块的刷写方法的流程图;
25.图5为本技术实施例提供的另一种硬件安全模块的刷写方法的示意图;
26.图6为本技术实施例提供的一种header结构示意图;
27.图7为本技术实施例提供的另一种硬件安全模块的刷写方法的流程图;
28.图8为本技术实施例提供的另一种硬件安全模块的刷写方法的示意图。
具体实施方式
29.下面将结合实施例对本技术的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
30.目前,汽车行业内针对hsm的处理方案,通常有以下两种:1.将hsm的应用软件当作一种固件,量产阶段刷写后,永远不再进行更新;2.通过ecu中host侧的bootloader,直接对
hsm侧的应用软件进行更新。而这两种方式均存在一定的问题,如下:
31.(1)如果存在软件问题或安全漏洞,需要对ecu中的hsm应用软件进行更新时,方案一因不支持刷写功能导致无法完成hsm应用软件的升级,进而影响汽车功能安全,对驾乘人员的生命安全构成威胁。
32.(2)通过ecu中host侧bootloader虽然可以实现对hsm应用软件升级的目的,但是hsm软件必须以明文形式传输给host侧。根据网络安全要求,为确保hsm软件免于网络攻击和窃取,hsm应用软件必须以密文形式进行传输,同时其使用的flash存储区域仅限于hsm内核访问,其他内核(host内核)没有访问权限。方案二违背了网络安全标准要求。
33.(3)采用方案二执行刷写时,如果在hsm应用软件刷写过程中,ecu出现异常掉电的情况,将导致hsm侧应用软件永不可用,进而hsm失去安全启动、加密、签名等网络安全所需要的功能。
34.基于此,本技术实施例提供一种硬件安全模块的刷写方法及系统,在hsm存在漏洞时,可以进行安全地软件刷写过程,在异常掉电后仍可进行再次刷写流程。
35.为便于对本实施例进行理解,首先对本技术实施例所公开的一种硬件安全模块的刷写系统进行详细介绍。
36.参见图1所示,本技术实施例还提供一种硬件安全模块的刷写系统,该系统包括:刷写工具端11、电子控制系统ecu12中的主机端121(即host侧)和hsm端122;主机端121分别与刷写工具端11、hsm端122通信连接;主机端121、hsm端122和刷写工具端11通过交互可实现硬件安全模块的刷写过程。
37.刷写工具端11在获取到hsm升级文件后,发送给主机端121,主机端121将hsm升级文件存储于预留的第一缓存区,即flash缓存区,主机端121在接收到刷写工具端11下发的开始刷写请求后,基于第一缓存区中的hsm升级文件触发hsm端122间的交互,以使hsm122端完成软件刷写操作,并将刷写结果反馈给刷写工具端11。
38.下面对主机端121、hsm端122和刷写工具端11,三端分别对应的刷写方法进行详细地介绍。
39.图2为本技术实施例提供的一种硬件安全模块的刷写方法的流程图,该方法应用于电子控制系统ecu中的主机端;主机端分别与刷写工具端、ecu中的硬件安全模块hsm端通信连接;主机端的第一缓存区存储有hsm升级文件;该硬件安全模块的刷写方法具体包括以下步骤:
40.步骤s202,接收到刷写工具端发送的开始刷写请求后,从第一缓存区中的hsm升级文件中提取目标密文和目标签名发送至hsm端,以使hsm端根据目标密文和目标签名进行签名校验;其中,目标密文包括:header密文和hsm应用软件密文。
41.步骤s204,在接收到hsm端返回的签名校验成功信息时,向hsm端发送升级刷写请求,以使hsm端执行升级刷写操作。
42.本技术实施例中,hsm应用软件存在问题或安全漏洞时,可以通过主机端基于第一缓存区存储的hsm升级文件,向hsm端发送目标密文和目标签名,以使hsm端进行后续签名校验和软件刷写操作,通过密文传输可保证hsm应用软件的机密性和安全性,另外,升级刷写过程中如果出现异常掉电的情况,当ecu重新上电后,由于第一缓存区域中仍然保存有上次存储的hsm升级文件,因此hsm端可再次执行刷写流程。
43.本技术实施例还提供另一种硬件安全模块的刷写方法,该方法在上一实施例的基础上实现,上述在接收到刷写工具端发送的开始刷写请求后,从第一缓存区中的hsm升级文件中提取目标密文和目标签名发送至hsm端的步骤之前,方法还包括:接收到刷写工具端传输的hsm升级文件后,将hsm升级文件存储至第一缓存区。
44.以使hsm端根据目标密文和目标签名进行签名校验的步骤之后,还包括另一种情况:在接收到hsm端返回的签名校验失败信息时,擦除第一缓存区中的hsm升级文件,并向刷写工具端发送hsm升级失败信息。
45.以使hsm端执行升级刷写操作的步骤之后,还包括:在接收到hsm端发送的升级刷写操作对应的刷写结果后,将刷写结果发送至刷写工具端。
46.参见图3所示,ecu中主机端(host侧)与hsm端的交互过程如下:
47.ecu中host侧bootloader在接收外部刷写工具传输的hsm升级文件后,将其暂时存储到预留的flash区域内,即上述第一缓存区,同时在接收到外部刷写工具端发送的开始刷写请求后,host侧将触发hsm进行刷写操作。
48.(1)host侧bootloader软件接收刷写工具的开始刷写hsm请求后,将启动hsm的刷写流程。
49.(2)host侧将根据预定义协议,从flash区域的hsm升级文件中提取出header(密文)+hsm software(密文)和signature签名两部分,其中signature是结合非对称算法(如rsa-2048)和sha(secure hash algorithm,安全散列算法,如sha-256)对密文形式的header和hsm software进行操作而生成的,而密文形式的header和hsm software是结合对称加密算法(如aes-128)及secret key进行加密操作而生成的。
50.(3)host侧bootloader软件触发hsm侧应用软件执行signature校验。
51.(4)hsm侧接收signature校验请求后,将使用预先定义的sha(如sha-256)对header密文和hsm software密文进行计算,输出第一hash值。之后对输入的signature使用预先定义的rsa(rivest shamir adleman,非对称加密算法,如rsa-2048)以及public key进行解密处理,获取结果作为第二hash值,将二者进行比较,返回校验结果。
52.(5)host侧bootloader软件获取hsm侧返回的校验结果,如果signature校验成功,说明此升级文件已被成功授权,具有合法性,将触发hsm侧执行刷写流程。否则检验失败,将拒绝后续的hsm刷写过程,同时host侧bootloader软件将对存储升级文件的flash区域执行擦除,返回刷写工具升级失败。
53.本技术实施例提供的硬件安全模块的刷写方法,具有以下优点:
54.①
如果已量产的软件存在问题或安全漏洞,由于hsm中存在支持刷写应用程序的bootloader,可通过外部诊断仪或者远程升级技术实现hsm中应用软件的升级,可快速消除安全问题或漏洞,保证车辆运行安全。
55.②
考虑网络安全标准要求,保证hsm应用软件的机密性和安全性,hsm应用软件将以密文形式存储到host侧的flash区域,hsm侧bootloader软件完成相关校验后,将直接从host侧的flash区域获取密文数据,使用存储的密钥完成解密后,对hsm应用软件的flash区域进行刷写。
56.③
由于本发明专利中,将接收的hsm侧应用软件(密文形式)暂时存储到host侧预留的flash区域,之后触发hsm侧bootloader软件完成对应用软件的升级。即使在升级过程
中出现异常掉电的情况,当ecu重新上电后,由于预留的flash区域中仍然保存上次存储的升级文件,因此hsm侧bootloader可再次执行刷写流程。
57.基于上述方法实施例,本技术实施例还提供一种硬件安全模块的刷写方法,该方法应用于ecu中的hsm端;hsm端与ecu中的主机端通信连接;参见图4所示,该方法具体包括以下步骤:
58.步骤s402,在接收到主机端发送的目标密文和目标签名后,根据目标密文和目标签名进行签名校验,并向主机端发送签名校验信息,以使主机端根据签名校验信息确定是否触发hsm端进行刷写操作;
59.其中,签名校验信息包括:签名校验成功信息或签名校验失败信息。
60.上述根据目标密文和目标签名进行签名校验,并向主机端发送签名校验信息的步骤,包括:通过预设安全散列算法对目标密文中的header密文和hsm应用软件密文进行计算,得到第一哈希值;根据预设非对称算法和预设公钥对目标签名进行解密,得到第二哈希值;判断第二哈希值与第一哈希值是否一致;如果是,向主机端发送签名校验成功信息;如果否,向主机端发送签名校验失败信息。
61.步骤s404,在接收到主机端发送的升级刷写请求后,根据header密文进行预设检验;预设检验包括:cmac(cipher-based message authentication code,基于加密的消息验证码)校验和header密文的信息检验;
62.具体实施时,基于预设对称加密算法和预先存储的私钥对header密文进行解密,得到header明文;header明文中包括第一cmac校验码和升级相关数据;升级相关数据包括:hsm应用软件对应的数据、起始地址、软件大小、软件版本号中至少一项;根据私钥和预设对称加密算法对升级相关数据进行计算,得到第二cmac校验码;判断第二cmac校验码和第一cmac校验码是否一致;如果是,检查header明文中包含的数据是否满足预设数据要求;如果是,确定检验成功。
63.步骤s406,如果检验成功,进行刷写操作;如果检验失败,记录刷写失败原因,并向主机端返回hsm刷写失败信息。
64.上述hsm端的第二缓存区域中存储有历史hsm应用软件;进行刷写操作的步骤,包括:执行对第二缓存区的擦除操作;基于预设对称加密算法和预先存储的私钥对hsm应用软件密文进行解密,将解密后的hsm应用软件刷写到第二缓存区中;对刷写到第二缓存区中的数据进行完整性校验;如果校验成功,在第二缓存区中写入应用软件有效标志位,同时记录刷写成功信息;如果校验失败,继续执行记录刷写失败原因,并向主机端返回hsm刷写失败信息的步骤。
65.本技术实施例提供的硬件安全模块的刷写方法,能够快速修复hsm应用软件存在的问题或安全漏洞;保护hsm应用软件的机密性,避免传输过程中知识产权泄露;增加对升级文件的合法性校验,避免非授权实体对hsm应用软件的非法升级;避免hsm刷写过程中因异常掉电导致hsm侧功能不可用的情况;hsm记录升级日志,便于分析失败具体原因。
66.参见图5所示,hsm侧bootloader的具体刷写过程如下:
67.hsm侧应用软件接收host侧发送的hsm升级请求后,将跳转到bootloader软件中,借助bootloader软件完成对hsm应用软件的升级操作。
68.①
hsm侧接收host侧的升级请求后,将跳转到hsm侧的bootloader软件中。
69.②
hsm侧bootloader软件如果检测到刷写请求,则开始升级流程。
70.③
hsm侧bootloader软件首先从host侧的flash区域加载密文形式的header,使用预先存储的secret key以及aes(advanced encryption standard,对称加密算法,如aes-128)对密文数据进行解密,获取明文数据header,header的具体数据结构如图6所示。其中,pattern作为一种数据填充,address表示hsm应用软件的起始地址,size表示应用软件大小,version表示hsm版本号,cmac表示header数据的完整性校验码。注:header结构包括但不限于上述数据内容。
71.④
hsm侧bootloader软件执行cmac校验。结合预先定义的对称加密算法(如aes-128)和secret key对header结构中除了cmac以外的数据进行处理,生成cmac值,将此值与header中的cmac进行比较,如果一致,则进行下一步,否则记录刷写失败原因,并将结果返回host侧。
72.⑤
对header中的信息进行检查,包括但不限于如下内容:a)pattern数据是否符合预定义值;b)address地址是否在bootloader管理范围内;c)address+size是否超出hsm侧flash内存范围;d)version是否大于当前的软件版本。如果校验通过,则进行下一步,否则记录刷写失败原因,并将结果返回host侧。
73.⑥
hsm侧bootloader软件执行对hsm应用软件所在flash区域的擦除操作。
74.⑦
从host侧flash中获取已被加密的hsm应用软件,结合预定义的secret key和对称加密算法(aes-128),对加密数据进行解密,将解密后的hsm应用软件刷写到hsm侧的flash区域中。重复该过程,直到完成所有hsm应用软件的刷写。
75.⑧
上述过程完成后,确保软件的一致性,对刷写到flash区域中的数据进行crc计算,将该结果与升级文件中的crc进行比较,输出完整性校验结果。
76.⑨
如果校验结果一致,则在hsm侧flash区域的指定位置写入应用软件有效标志位,同时记录刷写成功,否则,记录刷写失败原因,并将结果返回host侧。
77.本技术实施例提供的硬件安全模块的刷写方法,针对ecu中hsm应用软件存在的问题或任何安全漏洞,可以完成对hsm应用软件漏洞的快速修复。本技术中涉及的hsm升级文件,在整个传输过程中均采用密文方式,可有效保证hsm软件的机密性。为避免在hsm刷写过程中,ecu出现异常掉电情况,导致hsm侧应用软件不可用问题,因此本技术提供了对应的策略,即在host侧预留一定大小的flash区间,将接收的hsm升级文件,缓存到该区域。因此当出现异常掉电时,ecu重新上电后可以再次执行hsm升级功能。为了有效验证升级文件的合法性及有效性,引入了签名signature校验机制,仅仅用于生成signature和校验signature的private key和public key匹配时,才会成功完成signature的校验,即说明升级文件来源的合法性,可以进行后续的hsm刷写操作。本技术实施例中图5所示的hsm刷写流程,无论在项目开发阶段或是量产阶段,均可以有效地实现对hsm应用软件的升级功能,同时保证软件的安全性和完整性。
78.基于上述方法实施例,本技术实施例还提供一种硬件安全模块的刷写方法,该方法应用于刷写工具端;刷写工具端与ecu中的主机端通信连接;参见图7所示,该方法包括以下步骤:
79.步骤s702,向主机端发送擦除内存指令,以使主机端对擦除地址及长度进行检查,对用于暂存hsm升级文件的第一缓存区进行擦除;
80.步骤s704,分别通过请求下载、传输下载数据、请求传输退出服务,将hsm升级文件传输至主机端,以使主机端将hsm升级文件暂存于第一缓存区;
81.步骤s706,向主机端发送开始刷写请求,以使主机端基于从第一缓存区中的hsm升级文件中提取的目标密文和目标签名触发刷写流程;
82.步骤s708,按照预设周期,向主机端发送刷写结果获取指令,以从主机端获取hsm应用软件的刷写结果。
83.参见图8所示,hsm升级文件传输过程如下:
84.刷写工具接收到hsm应用软件的升级文件后,采用uds(unified diagnostic services,统一诊断服务)标准服务及流程,将升级文件通过相关的通信协议传输给ecu中的host侧。
85.①
刷写工具请求ecu进行可编程会话,ecu软件进入host侧的bootloader中。
86.②
刷写工具进行安全访问,ecu完成身份校验,准备进入刷写阶段。
87.③
刷写工具发送擦除内存例程控制,host侧bootloader对擦除的地址及长度进行检查,
88.对用于暂存hsm升级文件的flash区域进行擦除。
89.④
分别通过请求下载、传输下载数据、请求传输退出服务,将所有数据传输给ecu中的host侧,host侧bootloader软件将接收的数据暂存到如上描述的flash区域中。
90.⑤
数据传输完成后,为保证数据一致性,刷写工具发送例程控制服务,对传输给ecu中的数据进行crc(cyclic redundancy check,循环冗余校验)完整性校验。
91.⑥
刷写工具发送例程控制服务,开始请求进行hsm应用软件刷写流程。
92.⑦
刷写工具周期发送例程控制服务,获取最终的刷写结果。
93.本技术实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令在被处理器调用和执行时,该计算机可执行指令促使处理器实现上述方法,具体实现可参见前述方法实施例,在此不再赘述。
94.本技术实施例所提供的方法、装置和电子设备的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
95.除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对步骤、数字表达式和数值并不限制本技术的范围。
96.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
97.在本技术的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了
便于描述本技术和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本技术的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
98.最后应说明的是:以上所述实施例,仅为本技术的具体实施方式,用以说明本技术的技术方案,而非对其限制,本技术的保护范围并不局限于此,尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本技术实施例技术方案的精神和范围,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应所述以权利要求的保护范围为准。
技术特征:
1.一种硬件安全模块的刷写方法,其特征在于,所述方法应用于电子控制系统ecu中的主机端;所述主机端分别与刷写工具端、所述ecu中的硬件安全模块hsm端通信连接;所述主机端的第一缓存区存储有hsm升级文件;所述方法包括:接收到所述刷写工具端发送的开始刷写请求后,从所述第一缓存区中的hsm升级文件中提取目标密文和目标签名发送至所述hsm端,以使所述hsm端根据所述目标密文和所述目标签名进行签名校验;所述目标密文包括:header密文和hsm应用软件密文;在接收到所述hsm端返回的签名校验成功信息时,向所述hsm端发送升级刷写请求,以使所述hsm端执行升级刷写操作。2.根据权利要求1所述的方法,其特征在于,在接收到所述刷写工具端发送的开始刷写请求后,从所述第一缓存区中的hsm升级文件中提取目标密文和目标签名发送至所述hsm端的步骤之前,所述方法还包括:接收到所述刷写工具端传输的hsm升级文件后,将所述hsm升级文件存储至所述第一缓存区。3.根据权利要求1所述的方法,其特征在于,以使所述hsm端根据所述目标密文和所述目标签名进行签名校验的步骤之后,所述方法还包括:在接收到所述hsm端返回的签名校验失败信息时,擦除所述第一缓存区中的hsm升级文件,并向所述刷写工具端发送hsm升级失败信息。4.根据权利要求1所述的方法,其特征在于,所述方法还包括:在接收到所述hsm端发送的升级刷写操作对应的刷写结果后,将所述刷写结果发送至所述刷写工具端。5.一种硬件安全模块的刷写方法,其特征在于,所述方法应用于所述ecu中的hsm端;所述hsm端与所述ecu中的主机端通信连接;所述方法包括:在接收到所述主机端发送的目标密文和目标签名后,根据所述目标密文和所述目标签名进行签名校验,并向所述主机端发送签名校验信息,以使所述主机端根据所述签名校验信息确定是否触发所述hsm端进行刷写操作;所述签名校验信息包括:签名校验成功信息或签名校验失败信息;所述目标密文包括:header密文和hsm应用软件密文;在接收到所述主机端发送的升级刷写请求后,根据所述header密文进行预设检验;所述预设检验包括:cmac校验和header密文的信息检验;如果检验成功,进行刷写操作;如果检验失败,记录刷写失败原因,并向所述主机端返回hsm刷写失败信息。6.根据权利要求5所述的方法,其特征在于,根据所述目标密文和所述目标签名进行签名校验,并向所述主机端发送签名校验信息的步骤,包括:通过预设安全散列算法对所述目标密文中的header密文和hsm应用软件密文进行计算,得到第一哈希值;根据预设非对称算法和预设公钥对所述目标签名进行解密,得到第二哈希值;判断所述第二哈希值与所述第一哈希值是否一致;如果是,向所述主机端发送签名校验成功信息;如果否,向所述主机端发送签名校验失败信息。7.根据权利要求5所述的方法,其特征在于,根据所述header密文进行预设检验的步
骤,包括:基于预设对称加密算法和预先存储的私钥对所述header密文进行解密,得到header明文;所述header明文中包括第一cmac校验码和升级相关数据;所述升级相关数据包括:hsm应用软件对应的数据、起始地址、软件大小、软件版本号中至少一项;根据所述私钥和所述预设对称加密算法对所述升级相关数据进行计算,得到第二cmac校验码;判断所述第二cmac校验码和所述第一cmac校验码是否一致;如果是,检查所述header明文中包含的数据是否满足预设数据要求;如果是,确定检验成功。8.根据权利要求5所述的方法,其特征在于,所述hsm端的第二缓存区域中存储有历史hsm应用软件;进行刷写操作的步骤,包括:执行对所述第二缓存区的擦除操作;基于预设对称加密算法和预先存储的私钥对所述hsm应用软件密文进行解密,将解密后的hsm应用软件刷写到所述第二缓存区中;对刷写到所述第二缓存区中的数据进行完整性校验;如果校验成功,在所述第二缓存区中写入应用软件有效标志位,同时记录刷写成功信息;如果校验失败,继续执行所述记录刷写失败原因,并向所述主机端返回hsm刷写失败信息的步骤。9.一种硬件安全模块的刷写方法,其特征在于,所述方法应用于刷写工具端;所述刷写工具端与所述ecu中的主机端通信连接;所述方法包括:向所述主机端发送擦除内存指令,以使所述主机端对擦除地址及长度进行检查,对用于暂存hsm升级文件的所述第一缓存区进行擦除;分别通过请求下载、传输下载数据、请求传输退出服务,将所述hsm升级文件传输至所述主机端,以使所述主机端将所述hsm升级文件暂存于所述第一缓存区;向所述主机端发送开始刷写请求,以使所述主机端基于从所述第一缓存区中的hsm升级文件中提取的目标密文和目标签名触发刷写流程;按照预设周期,向所述主机端发送刷写结果获取指令,以从所述主机端获取hsm应用软件的刷写结果。10.一种硬件安全模块的刷写系统,其特征在于,所述系统包括:刷写工具端、电子控制系统ecu中的主机端和hsm端;所述主机端分别与所述刷写工具端、所述hsm端通信连接;所述主机端用于执行如权利要求1-4任一项所述的方法;所述hsm端用于执行如权利要求5-8任一项所述的方法;所述刷写工具端用于执行如权利要求9所述的方法。
技术总结
本申请提供了一种硬件安全模块的刷写方法及系统,方法应用于电子控制系统ECU中的主机端;主机端分别与刷写工具端、ECU中的硬件安全模块HSM端通信连接;主机端的第一缓存区存储有HSM升级文件;方法包括:接收到刷写工具端发送的开始刷写请求后,从第一缓存区中的HSM升级文件中提取密文和第一签名发送至HSM端,以使HSM端根据密文和第一签名进行签名校验;密文包括:Header密文和HSM应用软件密文;在接收到HSM端返回的签名校验成功信息时,向HSM端发送升级刷写请求,以使HSM端执行升级刷写操作。本申请在HSM存在漏洞时,可以进行安全地软件刷写过程,在异常掉电后仍可进行再次刷写流程。程。程。
