密钥烧录方法、装置、电子设备及可读存储介质与流程
1.本公开涉及密钥安全存储技术领域,具体涉及一种密钥烧录方法、装置、电子设备及可读存储介质。
背景技术:
2.随着通信技术发展,用户可以利用计算机与其他设备、服务器等进行数据传输。为了防止数据内容泄露,需要使用密钥对待传输数据进行加密,从而使用加密后的数据进行数据传输。在数据传输过程中,即使攻击者可以获得完整的数据,只要攻击者没有密钥,就无法解密密文,因此,密钥的安全存储尤为重要。
3.相关技术中,通常使用编译器对包括密钥值的程序源代码进行编译得到二进制机器码,从而将源代码中的密钥值嵌入到编译生成的二进制机器码中。
4.然而,采用上述嵌入密钥值的方案量产烧录密钥时,通常只能使用已编译好的程序固件,而对于每台设备不同的密钥需求,需要工作人员使用每台设备的程序源代码当场编译以得到程序固件,并将程序固件烧录于对应的设备,而通常工作人员重新编译程序源代码存在风险,导致程序源代码泄露的几率较高。
技术实现要素:
5.为了解决相关技术中的问题,本公开实施例提供一种密钥烧录方法、装置、电子设备及可读存储介质。
6.第一方面,本公开实施例中提供了一种密钥烧录方法。
7.具体的,所述密钥烧录方法包括:获取嵌入有预设密钥值的第一机器码;对所述第一机器码进行解析,得到多条数据传送指令,所述多条数据传送指令中每条数据传送指令包括所述预设密钥值中的至少部分预设密钥值;将所述多条数据传送指令中每条数据传送指令中的所述至少部分预设密钥值,替换为目标密钥值中对应位置的密钥值,得到第二机器码;将所述第二机器码烧录至仅可执行存储器。
8.本公开实施例的一种实现方式中,所述第一机器码包括第一定位标记和第二定位标记,所述第一定位标记用于指示所述第一机器码中包括预设密钥值的第一条数据传送指令,所述第二定位标记用于指示所述第一机器码中包括预设密钥值的最后一条数据传送指令的结束位置。
9.本公开实施例的一种实现方式中,所述对所述第一机器码进行解析,得到多条数据传送指令,包括:获取所述第一机器码中位于所述第一定位标记和所述第二定位标记之间的多条机器码;对所述第一机器码中位于所述第一定位标记和所述第二定位标记之间的多条机
器码进行逐条解析,得到多条数据解析指令;将所述多条数据解析指令中均包括至少部分预设密钥值的数据解析指令,确定为所述多条数据传送指令。
10.本公开实施例的一种实现方式中,所述将所述第二机器码烧录至仅可执行存储器之后,所述方法还包括:执行所述仅可执行存储器中的所述第二机器码,以获取所述目标密钥值,并将所述目标密钥值写入缓冲区。
11.本公开实施例的一种实现方式中,所述第二机器码包括第三定位标记和第四定位标记,所述第三定位标记用于指示所述第二机器码中包括目标密钥值的第一条数据传送指令的起始位置,所述第四定位标记用于指示所述第二机器码中包括目标密钥值的最后一条数据传送指令的结束位置。
12.本公开实施例的一种实现方式中,所述第一定位标记、所述第二定位标记、所述第三定位标记和所述第四定位标记分别为无用的、不产生任何副作用的指令。
13.本公开实施例的一种实现方式中,所述第二机器码包括第三定位标记和第四定位标记;所述执行所述仅可执行存储器中的所述第二机器码,以获取所述目标密钥值,并将所述目标密钥值写入缓冲区,包括:获取所述第二机器码中位于所述第三定位标记和所述第四定位标记之间的多条目标机器码;依次执行所述多条目标机器码中的每条目标机器码,以获取每条所述目标机器码的数据传送指令中的目标密钥值;将每条所述目标机器码的数据传送指令中的目标密钥值依次写入所述缓冲区。
14.本公开实施例的一种实现方式中,所述第二机器码还包括多条调用指令机器码,一条调用指令机器码与所述多条目标机器码中的一条目标机器码对应,每条调用指令机器码为用于调用一条目标机器码的调用指令的机器码。
15.本公开实施例的一种实现方式中,所述依次执行所述多条目标机器码中的每条目标机器码,以获取每条所述目标机器码的数据传送指令中的部分目标密钥值之前,所述方法还包括:执行所述多条调用指令机器码中的第i条调用指令机器码,以判断所述调用指令的地址合法性;所述依次执行所述多条目标机器码中的每条目标机器码,以获取每条所述目标机器码的数据传送指令中的部分目标密钥值,包括:在确定所述调用指令的地址合法的情况下,执行与所述第i条调用指令机器码对应的所述多条目标机器码中的第i条目标机器码,以获取所述第i条目标机器码的数据传送指令中的目标密钥值。
16.本公开实施例的一种实现方式中,所述将所述目标密钥值写入缓冲区之前,所述方法还包括:在内存中设置所述缓冲区,所述缓冲区的大小大于或等于所述目标密钥值的长度;
所述将所述目标密钥值写入缓冲区,包括:获取第一参数和第二参数,所述第一参数用于指示所述缓冲区的起始位置地址,所述第二参数用于指示所述缓冲区的大小;根据所述第一参数和所述第二参数,将所述目标密钥值对应写入所述缓冲区。
17.本公开实施例的一种实现方式中,所述将所述目标密钥值写入缓冲区之后,所述方法还包括:清空所述缓冲区中的所有数据。
18.本公开实施例的一种实现方式中,所述执行所述仅可执行存储器中的所述第二机器码,以获取所述目标密钥值之后,所述方法还包括:根据所述目标密钥值,执行目标操作;其中,所述执行目标操作包括以下至少一项:分散密钥、加密数据、解密数据。
19.第二方面,本公开实施例中提供了一种密钥烧录装置。
20.具体的,所述密钥烧录装置包括:第一获取模块,被配置为获取嵌入有预设密钥值的第一机器码;第二获取模块,被配置为对所述第一机器码进行解析,得到多条数据传送指令,所述多条数据传送指令中每条数据传送指令包括所述预设密钥值中的至少部分预设密钥值;替换模块,被配置为将所述多条数据传送指令中每条数据传送指令中的所述至少部分预设密钥值,替换为目标密钥值中对应位置的密钥值,得到第二机器码;第一处理模块,被配置为将所述第二机器码烧录至仅可执行存储器。
21.本公开实施例的一种实现方式中,所述第一机器码包括第一定位标记和第二定位标记,所述第一定位标记用于指示所述第一机器码中包括预设密钥值的第一条数据传送指令,所述第二定位标记用于指示所述第一机器码中包括预设密钥值的最后一条数据传送指令的结束位置。
22.本公开实施例的一种实现方式中,所述第二获取模块被配置为:获取所述第一机器码中位于所述第一定位标记和所述第二定位标记之间的多条机器码;对所述第一机器码中位于所述第一定位标记和所述第二定位标记之间的多条机器码进行逐条解析,得到多条数据解析指令;将所述多条数据解析指令中均包括至少部分预设密钥值的数据解析指令,确定为所述多条数据传送指令。
23.本公开实施例的一种实现方式中,所述密钥烧录装置还包括:第一执行模块,被配置为执行所述仅可执行存储器中的所述第二机器码,以获取所述目标密钥值;第二处理模块,被配置为将所述目标密钥值写入缓冲区。
24.本公开实施例的一种实现方式中,所述第二机器码包括第三定位标记和第四定位标记,所述第三定位标记用于指示所述第二机器码中包括目标密钥值的第一条数据传送指令的起始位置,所述第四定位标记用于指示所述第二机器码中包括目标密钥值的最后一条数据传送指令的结束位置。
25.本公开实施例的一种实现方式中,所述第一定位标记、所述第二定位标记、所述第
三定位标记和所述第四定位标记分别为无用的、不产生任何副作用的指令。
26.本公开实施例的一种实现方式中,所述第二机器码包括第三定位标记和第四定位标记;所述第一执行模块,被配置为:获取所述第二机器码中位于所述第三定位标记和所述第四定位标记之间的多条目标机器码;依次执行所述多条目标机器码中的每条目标机器码,以获取每条所述目标机器码的数据传送指令中的目标密钥值;所述第二处理模块,被配置为:将每条所述目标机器码的数据传送指令中的目标密钥值依次写入所述缓冲区。
27.本公开实施例的一种实现方式中,所述第二机器码还包括多条调用指令机器码,一条调用指令机器码与所述多条目标机器码中的一条目标机器码对应,每条调用指令机器码为用于调用一条目标机器码的调用指令的机器码。
28.本公开实施例的一种实现方式中,所述密钥烧录装置还包括:第二执行模块,被配置为执行所述多条调用指令机器码中的第i条调用指令机器码,以判断所述调用指令的地址合法性;所述第一执行模块,被配置为:在确定所述调用指令的地址合法的情况下,执行与所述第i条调用指令机器码对应的所述多条目标机器码中的第i条目标机器码,以获取所述第i条目标机器码的数据传送指令中的目标密钥值。
29.本公开实施例的一种实现方式中,所述密钥烧录装置还包括:第三处理模块,被配置为在内存中设置所述缓冲区,所述缓冲区的大小大于或等于所述目标密钥值的长度;所述第二处理模块,具体被配置为:获取第一参数和第二参数,所述第一参数用于指示所述缓冲区的起始位置地址,所述第二参数用于指示所述缓冲区的大小;根据所述第一参数和所述第二参数,将所述目标密钥值对应写入所述缓冲区。
30.本公开实施例的一种实现方式中,所述密钥烧录装置还包括:第四处理模块,被配置为清空所述缓冲区中的所有数据。
31.本公开实施例的一种实现方式中,所述密钥烧录装置还包括:第三执行模块,被配置为根据所述目标密钥值,执行目标操作;其中,所述执行目标操作包括以下至少一项:分散密钥、加密数据、解密数据。
32.第三方面,本公开实施例提供了一种电子设备,包括存储器和处理器,其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现如第一方面及所述第一方面的实现方式中任一项所述的方法。
33.第四方面,本公开实施例中提供了一种计算机可读存储介质,其上存储有计算机指令,该计算机指令被处理器执行时实现如第一方面及所述第一方面的实现方式中任一项所述的方法。
34.根据本公开实施例提供的技术方案,可以获取嵌入有预设密钥值的第一机器码;并对所述第一机器码进行解析,得到多条数据传送指令,所述n条数据传送指令中每条数据传送指令包括所述预设密钥值中的至少部分预设密钥值;以及将所述多条数据传送指令中每条数据传送指令中的预设密钥值,替换为目标密钥值中对应位置的密钥值,得到第二机
器码;将所述第二机器码烧录至仅可执行存储器。通过该技术方案,在无需编译程序源代码的前提下,可以直接将二进制机器码中已嵌入的预设密钥值替换为不同设备的目标密钥值,即通过直接修改仅可执行存储器固件的二进制数据的方式,确保满足一机一密的需求,从而降低了程序源代码的泄露风险,提高了密钥烧录的安全性。
35.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
36.结合附图,通过以下非限制性实施方式的详细描述,本公开的其它特征、目的和优点将变得更加明显。在附图中。
37.图1示出根据本公开实施例的密钥烧录方法的流程图。
38.图2示出根据本公开的实施例的数据传送指令的结构示意图。
39.图3示出根据本公开的实施例的密钥烧录装置的结构框图。
40.图4示出根据本公开的实施例的电子设备的结构框图。
41.图5示出适于用来实现根据本公开实施例的方法的计算机系统的结构示意图。
具体实施方式
42.下文中,将参考附图详细描述本公开的示例性实施例,以使本领域技术人员可容易地实现它们。此外,为了清楚起见,在附图中省略了与描述示例性实施例无关的部分。
43.在本公开中,应理解,诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不欲排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在或被添加的可能性。
44.另外还需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开。
45.在本公开中,如涉及对用户信息或用户数据的获取操作或向他人展示用户信息或用户数据的操作,则所述操作均为经用户授权、确认,或由用户主动选择的操作。
46.上文中提及,随着通信技术发展,用户可以利用计算机与其他设备、服务器等进行数据传输。为了防止数据内容泄露,需要使用密钥对待传输数据进行加密,从而使用加密后的数据进行数据传输。在数据传输过程中,即使攻击者可以获得完整的数据,只要攻击者没有密钥,就无法解密密文,因此,密钥的安全存储尤为重要。
47.相关技术中,通常使用编译器对包括密钥值的程序源代码进行编译得到二进制机器码,从而将源代码中的密钥值嵌入到编译生成的二进制机器码中。
48.然而,采用上述嵌入密钥值的方案量产烧录密钥时,通常只能使用已编译好的程序固件,而在有一机一密要求的场景下,却需要工作人员使用程序源代码当场编译,而通常工作人员并没有程序源代码,且重新编译程序源代码存在风险,从而使得嵌入密钥值的方案不便于量产,且使用不安全。
49.考虑到上述技术问题,本公开实施例中提供了一种密钥烧录方法,可以获取嵌入有预设密钥值的第一机器码;并对所述第一机器码进行解析,得到多条数据传送指令,所述n条数据传送指令中每条数据传送指令包括所述预设密钥值中的至少部分预设密钥值;以
及将所述多条数据传送指令中每条数据传送指令中的预设密钥值,替换为目标密钥值中对应位置的密钥值,得到第二机器码;将所述第二机器码烧录至仅可执行存储器。
50.根据本公开实施例提供的技术方案,在无需编译程序源代码的前提下,可以直接将二进制机器码中已嵌入的预设密钥值替换为不同设备的目标密钥值,即通过直接修改仅可执行存储器固件的二进制数据的方式,确保满足一机一密的需求,从而降低了程序源代码的泄露风险,提高了密钥烧录的安全性。
51.图1示出根据本公开的实施例的密钥烧录方法的流程图。如图1所示,所述密钥烧录方法包括以下步骤s101
ꢀ‑ꢀ
s104:在步骤s101中,获取嵌入有预设密钥值的第一机器码。
52.在步骤s102中,对所述第一机器码进行解析,得到多条数据传送指令。
53.其中,所述多条数据传送指令中每条数据传送指令包括所述预设密钥值中的至少部分预设密钥值。
54.在步骤s103中,将所述多条数据传送指令中每条数据传送指令中的所述至少部分预设密钥值,替换为目标密钥值中对应位置的密钥值,得到第二机器码。
55.在步骤s104中,将所述第二机器码烧录至仅可执行存储器。
56.在本公开一实施方式中,所述密钥烧录方法可适用于对于密钥进行烧录或存储的计算机、计算设备、电子设备等。
57.在本公开一实施方式中,所述第一机器码可以理解为是存储在计算机中由开发人员直接编写的一段机器码,或者为程序源代码通过编译器生成的机器码。具体根据实际使用情况确定,本公开实施例对此不作限定。
58.在本公开一实施方式中,所述第一机器码可以理解为是由多条机器码组成。其中,该多条机器码可以包括嵌入有至少部分预设密钥值的数据传送指令的机器码,还可以包括用于作为定位标记的机器码。对于所述第一机器码的结构可以参照下述对所述第二机器码的详细说明,本公开实施例在此不予赘述。
59.本公开一实施方式中,所述预设密钥值可以为技术人员编写程序代码时自定义设置的。
60.在本公开一实施方式中,所述预设密钥值中的至少部分密钥值,可以以立即数的形式完全包含于所述多条数据传送指令中的每条数据传送指令中。当然,所述预设密钥值中的至少部分密钥值,还可以以其他的形式存在于数据传送指令中,本公开实施例对此不作限定。
61.在本公开一实施方式中,所述多条数据传送指令的指令类型可以根据所用处理器架构的不同而不同。例如,对于armv8-m架构的处理器(如arm cortex-m23系列处理器),数据传送指令可以为mov(immediate)或movt指令。
62.示例性地,对于armv8-m的处理器,数据传送指令为mov (immediate)指令,其结构如图2所示,其中的imm8即为8位二进制数据的立即数,即预设密钥值。
63.在本公开一实施方式中,将所述第二机器码烧录至仅可执行存储器,可以理解为是借助烧录器将第二机器码烧录至处理器芯片的仅可执行存储器中。
64.在本公开一实施方式中,仅可执行存储器(execute only memory,xom)是一个安全的只读存储器rom区域,用于存储二进制机器码的指令,这些指令所在的内存地址禁止被
系统总线进行任何数据存取,仅可被处理器执行。用户能够使用标准程序内存的程序指令进行呼叫函数 (apis)的动作,执行xom区域中存储的二进制程序代码,但无法透过任何的途径得知其内容,即xom通过使程序代码不可读来防止泄漏。如此,当所述第二机器码烧录于仅可执行存储器之后,可以确保目标密钥值的安全存储。
65.在本公开一实施方式中,所述第一机器码包括第一定位标记和第二定位标记,所述第一定位标记用于指示所述第一机器码中包括预设密钥值的第一条数据传送指令,所述第二定位标记用于指示所述第一机器码中包括预设密钥值的最后一条数据传送指令的结束位置。
66.在本公开一实施方式中,所述第一定位标记和所述第二定位标记可以理解是一条或多条无用指令,执行该无用指令是不会产生任何副作用的。
67.在该实施方式中,由于第一机器码中存在所述第一定位标记和第二定位标记,因此使得可以更快地查询到包含预设密钥值的数据传送指令,从而便于量产时修改密钥值,实现一机一密。
68.在本公开一实施方式中,所述第一机器码和所述第二机器码可以理解为是一段函数代码,且所述第一机器码和所述第二机器码均可以为二进制机器码。
69.在本公开一实施方式中,当所述第一机器码包括所述第一定位标记和所述第二定位标记时,上述步骤s102,即所述对所述第一机器码进行解析,得到多条数据传送指令,具体可以包括下述步骤:获取所述第一机器码中位于所述第一定位标记和所述第二定位标记之间的多条机器码;对所述第一机器码中位于所述第一定位标记和所述第二定位标记之间的多条机器码进行逐条解析,得到多条数据解析指令;将所述多条数据解析指令中均包括至少部分预设密钥值的数据解析指令,确定为所述多条数据传送指令。
70.在本公开一实施方式中,所述多条数据解析指令中每条数据解析指令可以理解是对二进制机器码进行解析后得到的数据指令。
71.在本公开一实施方式中,一种可能的情况,所述多条数据解析指令中的一部分数据解析指令中包括至少部分预设密钥值,且所述多条数据解析指令中的另一部分数据解析指令中不包括至少部分预设密钥值;另一种可能的情况,所述多条数据解析指令中每条数据解析指令均包括至少部分预设密钥值。
72.在本公开一实施方式中,所述第一机器码可以包括多条机器码,在从所述第一机器码中获取到位于第一定位标记和所述第二定位标记之间的多条机器码之后,可以对位于第一定位标记和所述第二定位标记之间的多条机器码进行逐条解析,得到与所述多条机器码中每条机器码对应的数据解析指令,即所述多条数据解析指令。从所述多条数据解析指令中排除掉不包括密钥值的数据解析指令,和所包括的密钥值与所述预设密钥值不同的数据解析指令,从而可以将所述多条数据解析指令中均包括至少部分预设密钥值的数据解析指令,确定为所述多条数据传送指令。
73.本公开实施例提供一种密钥烧录方法,在无需编译程序源代码的前提下,可以直接将二进制机器码中已嵌入的预设密钥值替换为不同设备的目标密钥值,即通过直接修改
仅可执行存储器固件的二进制数据的方式,确保满足一机一密的需求,从而降低了程序源代码的泄露风险,提高了密钥烧录的安全性。
74.在本公开一实施方式中,所述步骤s104,即所述将所述第二机器码烧录至仅可执行存储器的步骤之后,所述方法还可包括下述步骤:执行所述仅可执行存储器中的所述第二机器码,以获取所述目标密钥值,并将所述目标密钥值写入缓冲区。
75.在本公开一实施方式中,执行所述仅可执行存储器中的所述第二机器码,即开始执行函数代码。当执行所述第二机器码时,传入参数可以包括缓冲区的起始位置地址和缓冲区的大小。
76.在本公开一实施例中,所述缓冲区可以用于存储所述目标密钥值。
77.在本公开一实施方式中,所述将所述目标密钥值写入缓冲区的步骤之前,本公开实施例提供的密钥烧录方法还可以包括:在内存中设置缓冲区。其中,所述缓冲区的大小可以大于或等于所述目标密钥值的长度。
78.进一步,所述将所述目标密钥值写入缓冲区的步骤,具体可以通过下述步骤实现:获取第一参数和第二参数,所述第一参数用于指示所述缓冲区的起始位置地址,所述第二参数用于指示所述缓冲区的大小;根据所述第一参数和所述第二参数,将所述目标密钥值对应写入所述缓冲区。
79.在该实施方式中,预先在内存中设置缓冲区之后,由于在执行第二机器码的过程中,可以获取到第一参数和第二参数,因此可以根据所述第一参数和所述第二参数,将所述目标密钥值对应写入预先设置好的所述缓冲区,从而避免目标密钥值暴露在其他内存地址空间中。
80.在本公开一实施方式中,所述将所述目标密钥值写入缓冲区的步骤之后,本公开实施例提供的密钥烧录方法还可以包括:清空所述缓冲区中的所有数据。如此,可以尽量减少密钥值在内存中存留的时间,防止所述密钥值的泄露以确保其安全性。
81.在该实施方式中,只有通过处理器执行仅可执行存储器中的所述第二机器码,才可以获取所述目标密钥值,从而防止所述目标密钥值的泄露。
82.在本公开一实施方式中,所述第二机器码包括第三定位标记和第四定位标记,所述第三定位标记用于指示所述第二机器码中包括目标密钥值的第一条数据传送指令的起始位置,所述第四定位标记用于指示所述第二机器码中包括目标密钥值的最后一条数据传送指令的结束位置。
83.在本公开一实施方式中,所述第一定位标记、所述第二定位标记、所述第三定位标记和所述第四定位标记分别为无用的、不产生任何副作用的指令。即所述第一定位标记、所述第二定位标记、所述第三定位标记和所述第四定位标记可以理解成是一条或多条无用指令,执行该无用指令是不会产生任何副作用的。如此,在执行第二机器码的过程中,所述第三定位标记和所述第四定位标记不对会获取目标密钥值产生任何影响。
84.另外,所述第三定位标记和所述第一定位标记可以相同或不同,所述第四定位标记和所述第二定位标记可以相同或不同,具体根据实际使用情况确定,本公开实施例对此不作限定。
85.在该实施方式中,由于第二机器码中存在所述第三定位标记和所述第四定位标
记,因此可以通过所述第三定位标记和所述第四定位标记,更快速地从第二机器码中查到所有嵌入有部分目标密钥值的机器码,以获取到完整的所述目标密钥值,从而提高了效率。
86.在本公开一实施方式中,所述第二机器码包括第三定位标记和第四定位标记;所述执行所述仅可执行存储器中的所述第二机器码,以获取所述目标密钥值,并将所述目标密钥值写入缓冲区的步骤,具体可以包括下述步骤:获取所述第二机器码中位于所述第三定位标记和所述第四定位标记之间的多条目标机器码;依次执行所述多条目标机器码中的每条目标机器码,以获取每条所述目标机器码的数据传送指令中的部分目标密钥值;将每条所述目标机器码的数据传送指令中的部分目标密钥值依次写入所述缓冲区。
87.在本公开一实施方式中,依次执行所述多条目标机器码中的每条目标机器码,以获取每条所述目标机器码的数据传送指令中的部分目标密钥值,即是每执行一条目标机器码,就获取该一条目标机器码的数据传送指令中包括的部分目标密钥值,并将该目标密钥值写入缓冲区中,如此循环执行,以将完整的目标密钥值写入缓冲区中。
88.在该实施方式中,由于第二机器码中存在所述第三定位标记和所述第四定位标记,因此可以通过所述第三定位标记和所述第四定位标记,更快速地从第二机器码中查到所有嵌入有部分目标密钥值的多条目标机器码,进而依次执行每条目标机器码,以获取到完整的所述目标密钥值并写入缓冲区中,从而既提高了效率,也确保了向缓冲区中写入目标密钥值的安全性。
89.在本公开一实施方式中,所述第二机器码可以理解为是由多条目标机器码组成。其中,该多条目标机器码中可以包括:用于作为定位标记的机器码、包括至少部分目标密钥值的数据传送指令的机器码。
90.在本公开一实施方式中,所述第二机器码还包括多条调用指令机器码,一条调用指令机器码与所述多条目标机器码中的一条目标机器码对应,每条调用指令机器码为用于调用一条目标机器码的调用指令的机器码。如此,可以根据调用指令机器码以判断调用指令的地址合法性。
91.在本公开一实施方式中,在所述第二机器码还包括多条调用指令机器码的情况下,所述依次执行所述多条目标机器码中的每条目标机器码,以获取每条所述目标机器码的数据传送指令中的部分目标密钥值的步骤之前,所述方法还可以包括下述步骤:执行所述多条调用指令机器码中的第i条调用指令机器码,以判断所述调用指令的地址合法性;所述依次执行所述多条目标机器码中的每条目标机器码,以获取每条所述目标机器码的数据传送指令中的部分目标密钥值的步骤,具体可以包括如下步骤:在确定所述调用指令的地址合法的情况下,执行与所述第i条调用指令机器码对应的所述多条目标机器码中的第i条目标机器码,以获取所述第i条目标机器码的数据传送指令中的目标密钥值。
92.示例性地,嵌入有目标密钥值的第二机器码的组成结构如下所示:
一条或多条无用指令的机器码,即作为第三定位标记(a1);检查调用指令的地址是否合法的机器码;嵌入有目标密钥值第1部分的第一条数据传送指令的机器码(b1)检查调用指令的地址是否合法的机器码;嵌入有目标密钥值第2部分的第二条数据传送指令的机器码(b2);
…
检查调用指令的地址是否合法的机器码;嵌入有目标密钥值最后一部分的最后一条数据传送指令的机器码(bn);一条或多条无用指令的机器码,即作为第四定位标记(a2)返回指令的机器码。
93.执行上述嵌入有目标密钥值的所述第二机器码的步骤具体如下:(1)开始执行所述第二机器码(即函数代码),传入参数:所述缓冲区的起始位置地址,所述缓冲区的大小。
94.(2)执行不产生任何副作用的一条或多条无用指令a1。
95.(3)检查调用方地址是否合法,即判断调用所述第二机器码的指令地址是否合法。如果合法,继续执行下述步骤(4);如果不合法,跳转到步骤(8)。
96.(4)执行嵌入有目标密钥值第1部分的第一条数据传送指令的机器码b1。在执行b1之后,获取到目标密钥值的第1部分,并向缓冲区中写入目标密钥值的第1部分。
97.(5)检查调用方地址是否合法。如果合法,继续执行下述步骤(6);如果不合法,跳转到步骤(8)。该步骤(5)所执行的操作和步骤(3)相同,通过多次、重复的判断是为了避免有非法代码跳转到所述函数代码的中间部分开始执行,从而跳过起始位置的检查。
98.(6)重复上述步骤(4)和(5)的内容,以依次获取到目标密钥值的第2部分、第3部分直到最后一部分,并分别向缓冲区中写入目标密钥值的第2部分、第3部分直到最后一部分。
99.(7)执行不产生任何副作用的一条或多条无用指令b2。
100.(8)所述第二机器码执行完成,返回值为密钥值的长度。
101.在该实施方式中,在依次执行所述多条目标机器码中的每条目标机器码,以获取每条所述目标机器码的数据传送指令中的部分目标密钥值之前,可以执行所述调用指令机器码,以判断所述调用指令的地址合法性,并在确定所述调用指令的地址合法的情况下,才执行与所述调用指令机器码对应的目标机器码,以获取所述目标机器码的数据传送指令中的目标密钥值,从而通过重复判断调用指令的地址的合法性,可以避免有非法代码跳过起始位置的检查而直接跳转到第二机器码的中间部分开始执行,即防止非法代码调用第二机器码。
102.本公开一实施方式中,在所述执行所述仅可执行存储器中的所述第二机器码,以获取所述目标密钥值的步骤之后,所述方法还可包括下述步骤:根据所述目标密钥值,执行目标操作;其中,所述执行目标操作包括以下至少一项:分散密钥、加密数据、解密数据。
103.需要说明的是,上述实施方式中所述执行目标操作包括的内容仅为示例性的说明,当然,还可以包括其他可能的操作,本公开实施例对此不作限定。
104.在该实施方式中,若根据目标密钥值,分散密钥,则可以防止密钥被破解,提高密
钥存储的安全性;若根据目标密钥值加密数据,则可以提高数据传输的安全性,防止攻击者解密密文,达到保护数据不被非法窃取、阅读的目的;若根据目标密钥值解密数据,则可以完成安全认证,将密文变成明文,便于被认证用户获取数据,使信息只对允许可读的接收者可读,以防止私有化信息在网络中被拦截和窃取。
105.图3示出根据本公开的实施例的密钥烧录装置的结构框图。其中,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。
106.如图3所示,所述密钥烧录装置200包括第一获取模块201、第二获取模块202、替换模块203和第一处理模块204。
107.所述第一获取模块201,被配置为获取嵌入有预设密钥值的第一机器码;所述第二获取模块202,被配置为对所述第一机器码进行解析,得到多条数据传送指令,所述多条数据传送指令中每条数据传送指令包括所述预设密钥值中的至少部分预设密钥值;所述替换模块203,被配置为将所述多条数据传送指令中每条数据传送指令中的所述至少部分预设密钥值,替换为目标密钥值中对应位置的密钥值,得到第二机器码;所述第一处理模块204,被配置为将所述第二机器码烧录至仅可执行存储器。
108.本公开实施例的一种实现方式中,所述第一机器码包括第一定位标记和第二定位标记,所述第一定位标记用于指示所述第一机器码中包括预设密钥值的第一条数据传送指令,所述第二定位标记用于指示所述第一机器码中包括预设密钥值的最后一条数据传送指令的结束位置。
109.本公开实施例的一种实现方式中,所述第二获取模块202被配置为:获取所述第一机器码中位于所述第一定位标记和所述第二定位标记之间的多条机器码;对所述第一机器码中位于所述第一定位标记和所述第二定位标记之间的多条机器码进行逐条解析,得到多条数据解析指令;将所述多条数据解析指令中均包括至少部分预设密钥值的数据解析指令,确定为所述多条数据传送指令。
110.本公开实施例的一种实现方式中,所述密钥烧录装置200还包括:第一执行模块,被配置为执行所述仅可执行存储器中的所述第二机器码,以获取所述目标密钥值;第二处理模块,被配置为将所述目标密钥值写入缓冲区。
111.本公开实施例的一种实现方式中,所述第二机器码包括第三定位标记和第四定位标记,所述第三定位标记用于指示所述第二机器码中包括目标密钥值的第一条数据传送指令的起始位置,所述第四定位标记用于指示所述第二机器码中包括目标密钥值的最后一条数据传送指令的结束位置。
112.本公开实施例的一种实现方式中,所述第一定位标记、所述第二定位标记、所述第三定位标记和所述第四定位标记分别为无用的、不产生任何副作用的指令。
113.本公开实施例的一种实现方式中,所述第二机器码包括第三定位标记和第四定位标记;所述第一执行模块,被配置为:获取所述第二机器码中位于所述第三定位标记和所述第四定位标记之间的多条
目标机器码;依次执行所述多条目标机器码中的每条目标机器码,以获取每条所述目标机器码的数据传送指令中的目标密钥值;所述第二处理模块,被配置为:将每条所述目标机器码的数据传送指令中的目标密钥值依次写入所述缓冲区。
114.本公开实施例的一种实现方式中,所述第二机器码还包括多条调用指令机器码,一条调用指令机器码与所述多条目标机器码中的一条目标机器码对应,每条调用指令机器码为用于调用一条目标机器码的调用指令的机器码。
115.本公开实施例的一种实现方式中,所述密钥烧录装置200还包括:第二执行模块,被配置为执行所述多条调用指令机器码中的第i条调用指令机器码,以判断所述调用指令的地址合法性;所述第一执行模块,被配置为:在确定所述调用指令的地址合法的情况下,执行与所述第i条调用指令机器码对应的所述多条目标机器码中的第i条目标机器码,以获取所述第i条目标机器码的数据传送指令中的目标密钥值。
116.本公开实施例的一种实现方式中,所述密钥烧录装置200还包括:第三处理模块,被配置为在内存中设置所述缓冲区,所述缓冲区的大小大于或等于所述目标密钥值的长度;所述第二处理模块,具体被配置为:获取第一参数和第二参数,所述第一参数用于指示所述缓冲区的起始位置地址,所述第二参数用于指示所述缓冲区的大小;根据所述第一参数和所述第二参数,将所述目标密钥值对应写入所述缓冲区。
117.本公开实施例的一种实现方式中,所述密钥烧录装置200还包括:第四处理模块,被配置为清空所述缓冲区中的所有数据。
118.本公开实施例的一种实现方式中,所述密钥烧录装置200还包括:第三执行模块,被配置为根据所述目标密钥值,执行目标操作;其中,所述执行目标操作包括以下至少一项:分散密钥、加密数据、解密数据。
119.本公开实施例提供一种密钥烧录装置,在无需编译程序源代码的前提下,可以直接将二进制机器码中已嵌入的预设密钥值替换为不同设备的目标密钥值,即通过直接修改仅可执行存储器固件的二进制数据的方式,确保满足一机一密的需求,从而降低了程序源代码的泄露风险,提高了密钥烧录的安全性。
120.本公开还公开了一种电子设备,图4示出根据本公开的实施例的电子设备的结构框图。
121.如图4所示,所述电子设备包括存储器和处理器,其中,存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现根据本公开的实施例的方法。
122.图5示出适于用来实现根据本公开实施例的方法的计算机系统的结构示意图。
123.如图5所示,计算机系统包括处理单元,其可以根据存储在只读存储器(rom)中的程序或者从存储部分加载到随机访问存储器(ram)中的程序而执行上述实施例中的各种方法。在ram中,还存储有计算机系统操作所需的各种程序和数据。处理单元、rom以及ram通过总线彼此相连。输入/输出(i/o)接口也连接至总线。
124.以下部件连接至i/o接口:包括键盘、鼠标等的输入部分;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分;包括硬盘等的存储部分;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分。通信部分经由诸如因特网的网络执行通信过程。驱动器也根据需要连接至i/o接口。可拆卸介质,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器上,以便于从其上读出的计算机程序根据需要被安装入存储部分。其中,所述处理单元可实现为cpu、gpu、tpu、fpga、npu等处理单元。
125.特别地,根据本公开的实施例,上文描述的方法可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行上述方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。
126.附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
127.描述于本公开实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过可编程硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
128.作为另一方面,本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中电子设备或计算机系统中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本公开的方法。
129.以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
技术特征:
1.一种密钥烧录方法,其特征在于,所述方法包括:获取嵌入有预设密钥值的第一机器码;对所述第一机器码进行解析,得到多条数据传送指令,所述多条数据传送指令中每条数据传送指令包括所述预设密钥值中的至少部分预设密钥值;将所述多条数据传送指令中每条数据传送指令中的所述至少部分预设密钥值,替换为目标密钥值中对应位置的密钥值,得到第二机器码;将所述第二机器码烧录至仅可执行存储器。2.根据权利要求1中所述的方法,其特征在于,所述第一机器码包括第一定位标记和第二定位标记,所述第一定位标记用于指示所述第一机器码中包括预设密钥值的第一条数据传送指令,所述第二定位标记用于指示所述第一机器码中包括预设密钥值的最后一条数据传送指令的结束位置。3.根据权利要求2中所述的方法,其特征在于,所述对所述第一机器码进行解析,得到多条数据传送指令,包括:获取所述第一机器码中位于所述第一定位标记和所述第二定位标记之间的多条机器码;对所述第一机器码中位于所述第一定位标记和所述第二定位标记之间的多条机器码进行逐条解析,得到多条数据解析指令;将所述多条数据解析指令中均包括至少部分预设密钥值的数据解析指令,确定为所述多条数据传送指令。4.根据权利要求1中所述的方法,其特征在于,所述将所述第二机器码烧录至仅可执行存储器之后,所述方法还包括:执行所述仅可执行存储器中的所述第二机器码,以获取所述目标密钥值,并将所述目标密钥值写入缓冲区。5.根据权利要求2中所述的方法,其特征在于,所述第二机器码包括第三定位标记和第四定位标记,所述第三定位标记用于指示所述第二机器码中包括目标密钥值的第一条数据传送指令的起始位置,所述第四定位标记用于指示所述第二机器码中包括目标密钥值的最后一条数据传送指令的结束位置。6.根据权利要求5中所述的方法,其特征在于,所述第一定位标记、所述第二定位标记、所述第三定位标记和所述第四定位标记分别为无用的、不产生任何副作用的指令。7.根据权利要求4中所述的方法,其特征在于,所述第二机器码包括第三定位标记和第四定位标记;所述执行所述仅可执行存储器中的所述第二机器码,以获取所述目标密钥值,并将所述目标密钥值写入缓冲区,包括:获取所述第二机器码中位于所述第三定位标记和所述第四定位标记之间的多条目标机器码;依次执行所述多条目标机器码中的每条目标机器码,以获取每条所述目标机器码的数据传送指令中的目标密钥值;将每条所述目标机器码的数据传送指令中的目标密钥值依次写入所述缓冲区。8.根据权利要求7中所述的方法,其特征在于,所述第二机器码还包括多条调用指令机
器码,一条调用指令机器码与所述多条目标机器码中的一条目标机器码对应,每条调用指令机器码为用于调用一条目标机器码的调用指令的机器码。9.根据权利要求8中所述的方法,其特征在于,所述依次执行所述多条目标机器码中的每条目标机器码,以获取每条所述目标机器码的数据传送指令中的部分目标密钥值之前,所述方法还包括:执行所述多条调用指令机器码中的第i条调用指令机器码,以判断所述调用指令的地址合法性;所述依次执行所述多条目标机器码中的每条目标机器码,以获取每条所述目标机器码的数据传送指令中的部分目标密钥值,包括:在确定所述调用指令的地址合法的情况下,执行与所述第i条调用指令机器码对应的所述多条目标机器码中的第i条目标机器码,以获取所述第i条目标机器码的数据传送指令中的目标密钥值。10.根据权利要求4中所述的方法,其特征在于,所述将所述目标密钥值写入缓冲区之前,所述方法还包括:在内存中设置所述缓冲区,所述缓冲区的大小大于或等于所述目标密钥值的长度;所述将所述目标密钥值写入缓冲区,包括:获取第一参数和第二参数,所述第一参数用于指示所述缓冲区的起始位置地址,所述第二参数用于指示所述缓冲区的大小;根据所述第一参数和所述第二参数,将所述目标密钥值对应写入所述缓冲区。11.根据权利要求4或10中所述的方法,其特征在于,所述将所述目标密钥值写入缓冲区之后,所述方法还包括:清空所述缓冲区中的所有数据。12.根据权利要求4中所述的方法,其特征在于,所述执行所述仅可执行存储器中的所述第二机器码,以获取所述目标密钥值之后,所述方法还包括:根据所述目标密钥值,执行目标操作;其中,所述执行目标操作包括以下至少一项:分散密钥、加密数据、解密数据。13.一种密钥烧录装置,其特征在于,所述密钥烧录装置包括:第一获取模块,被配置为获取嵌入有预设密钥值的第一机器码;第二获取模块,被配置为对所述第一机器码进行解析,得到多条数据传送指令,所述多条数据传送指令中每条数据传送指令包括所述预设密钥值中的至少部分预设密钥值;替换模块,被配置为将所述多条数据传送指令中每条数据传送指令中的所述至少部分预设密钥值,替换为目标密钥值中对应位置的密钥值,得到第二机器码;第一处理模块,被配置为将所述第二机器码烧录至仅可执行存储器。14.根据权利要求13中所述的装置,其特征在于,所述第一机器码包括第一定位标记和第二定位标记,所述第一定位标记用于指示所述第一机器码中包括预设密钥值的第一条数据传送指令,所述第二定位标记用于指示所述第一机器码中包括预设密钥值的最后一条数据传送指令的结束位置。15.根据权利要求14中所述的装置,其特征在于,所述第二获取模块被配置为:获取所述第一机器码中位于所述第一定位标记和所述第二定位标记之间的多条机器
码;对所述第一机器码中位于所述第一定位标记和所述第二定位标记之间的多条机器码进行逐条解析,得到多条数据解析指令;将所述多条数据解析指令中均包括至少部分预设密钥值的数据解析指令,确定为所述多条数据传送指令。16.根据权利要求13中所述的装置,其特征在于,所述密钥烧录装置还包括:第一执行模块,被配置为执行所述仅可执行存储器中的所述第二机器码,以获取所述目标密钥值;第二处理模块,被配置为将所述目标密钥值写入缓冲区。17.根据权利要求14中所述的装置,其特征在于,所述第二机器码包括第三定位标记和第四定位标记,所述第三定位标记用于指示所述第二机器码中包括目标密钥值的第一条数据传送指令的起始位置,所述第四定位标记用于指示所述第二机器码中包括目标密钥值的最后一条数据传送指令的结束位置。18.根据权利要求17中所述的装置,其特征在于,所述第一定位标记、所述第二定位标记、所述第三定位标记和所述第四定位标记分别为无用的、不产生任何副作用的指令。19.根据权利要求16中所述的装置,其特征在于,所述第二机器码包括第三定位标记和第四定位标记;所述第一执行模块,被配置为:获取所述第二机器码中位于所述第三定位标记和所述第四定位标记之间的多条目标机器码;依次执行所述多条目标机器码中的每条目标机器码,以获取每条所述目标机器码的数据传送指令中的目标密钥值;所述第二处理模块,被配置为:将每条所述目标机器码的数据传送指令中的目标密钥值依次写入所述缓冲区。20.根据权利要求19中所述的装置,其特征在于,所述第二机器码还包括多条调用指令机器码,一条调用指令机器码与所述多条目标机器码中的一条目标机器码对应,每条调用指令机器码为用于调用一条目标机器码的调用指令的机器码。21.根据权利要求20中所述的装置,其特征在于,所述密钥烧录装置还包括:第二执行模块,被配置为执行所述多条调用指令机器码中的第i条调用指令机器码,以判断所述调用指令的地址合法性;所述第一执行模块,被配置为:在确定所述调用指令的地址合法的情况下,执行与所述第i条调用指令机器码对应的所述多条目标机器码中的第i条目标机器码,以获取所述第i条目标机器码的数据传送指令中的目标密钥值。22.根据权利要求16中所述的装置,其特征在于,所述密钥烧录装置还包括:第三处理模块,被配置为在内存中设置所述缓冲区,所述缓冲区的大小大于或等于所述目标密钥值的长度;所述第二处理模块,具体被配置为:获取第一参数和第二参数,所述第一参数用于指示所述缓冲区的起始位置地址,所述第二参数用于指示所述缓冲区的大小;根据所述第一参数和所述第二参数,将所述目标密钥值对应写入所述缓冲区。23.根据权利要求16或22中所述的装置,其特征在于,所述密钥烧录装置还包括:
第四处理模块,被配置为清空所述缓冲区中的所有数据。24.根据权利要求16中所述的装置,其特征在于,所述密钥烧录装置还包括:第三执行模块,被配置为根据所述目标密钥值,执行目标操作;其中,所述执行目标操作包括以下至少一项:分散密钥、加密数据、解密数据。25.一种电子设备,其特征在于,包括存储器和处理器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现权利要求1至12中任一项所述的方法步骤。26.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,该计算机指令被处理器执行时实现权利要求1至12中任一项所述的方法步骤。
技术总结
本公开涉及密钥安全存储技术领域,具体涉及一种密钥烧录方法、装置、电子设备及可读存储介质,所述密钥烧录包括:获取嵌入有预设密钥值的第一机器码;对所述第一机器码进行解析,得到多条数据传送指令;将所述多条数据传送指令中每条数据传送指令中的至少部分预设密钥值,替换为目标密钥值中对应位置的密钥值,得到第二机器码;将所述第二机器码烧录至仅可执行存储器。该方案能够在无需编译程序源代码的前提下,可以直接将二进制机器码中已嵌入的预设密钥值替换为不同设备的目标密钥值,即通过直接修改仅可执行存储器固件的二进制数据的方式,确保满足一机一密的需求,从而降低了程序源代码的泄露风险,提高了密钥烧录的安全性。安全性。安全性。