终端及终端对光模块mcu的固件文件加密存储方法
技术领域
1.本技术涉及网络安全技术领域,尤其涉及一种终端及终端对光模块mcu的固件文件加密存储方法。
背景技术:2.固件(firmware)就是写入eprom(可擦写可编程只读存储器)或eeprom(电可擦可编程只读存储器)中的程序,固件是指设备内部保存的设备“驱动程序”,通过固件,操作系统才能按照标准的设备驱动实现特定机器的运行动作,比如光驱、刻录机等都有内部固件。
3.针对网络安全可信要求,研发用于mcu运行的固件文件传递给产线后需要经过可信验证,以保证传递的固件文件没有被篡改或丢失,从而需对固件文件的数据进行加密。由于mcu的固件文件一般为hex形式,hex文件是分段存储形式,加密后每一段数据都会增加,由此导致数据结构改变,不利于加密后数据的保存,甚至会导致加密数据的丢失,影响mcu固件文件的可信验证。
技术实现要素:4.本技术实施例提供了一种终端及终端对光模块mcu的固件文件加密存储方法,以解决固件文件中的分段数据加密后数据量变大,不利于加密后数据保存的问题。
5.第一方面,本技术提供了一种终端,包括:
6.cpu,被配置为,接收运行光模块mcu的固件文件,将所述固件文件中的数据段转换为字符串,对所述字符串进行加密,加密后的字符串超出一个存储地址存储的数据量;按照预设数据量对数据段对应的加密字符串进行分段,并为分段后的加密字符串分配与所述数据段对应的地址标识;
7.存储器,被配置为,存储分段后的加密字符串。
8.第二方面,本技术还提供了一种终端对光模块mcu的固件文件加密存储方法,所述方法包括:
9.接收运行光模块mcu的固件文件;
10.获取所述固件文件的数据段;
11.将所述数据段转换为字符串;
12.对所述字符串进行加密,加密后的字符串超出一个存储地址存储的数据量;
13.按照预设数据量对数据段对应的加密字符串进行分段,并为分段后的加密字符串分配与所述数据段对应的地址标识;
14.存储分段后的所述加密字符串。
15.本技术提供的终端包括cpu与存储器,cpu被配置为接收运行光模块mcu的固件文件,将固件文件中的数据段转换为字符串,对字符串进行加密,加密后的字符串超出一个存储地址存储的数据量;按照预设数据量对数据段对应的加密字符串进行分段,并为分段后的加密字符串分配与数据段对应的地址标识;存储器被配置为存储分段后的加密字符串。
用于mcu运行的固件文件一般为hex形式,hex文件是分段存储形式,将固件文件传递给产线后需要经过可信验证,因此需通过终端对固件文件中的数据进行加密。终端对固件文件中的数据进行加密时,将数据转换为字符串进行加密,字符串的数据量超过数据的数据量,如数据段需一个存储地址进行存储,字符串需至少两个存储地址进行存储,本技术将数据段对应的加密字符串进行分段,并为分段后的加密字符串分配与数据段对应的地址标识,以方便识别一段固件数据对应的加密字符串,以对再次分段后的加密字符串进行存储,能够避免传递的固件文件在加密时数据被篡改或丢失,且任何加密算法都适用,以保证传递的固件文件是可信的。
附图说明
16.图1为本技术实施例提供的一种终端的结构框图;
17.图2为根据一些实施例的光模块mcu的固件hex的文件格式示意图;
18.图3为根据一些实施例的光模块mcu的固件hex文件加密后的文件格式示意图;
19.图4为本技术实施例提供的一种终端对光模块mcu的固件文件加密存储方法的流程图。
具体实施方式
20.为便于对申请的技术方案进行描述,以下首先在对本技术所涉及到的一些概念进行说明。
21.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
22.华为要求的网络安全可信要求,研发用于mcu运行的固件文件传递给产线后需要经过可信验证,以保证传递的固件文件没有被篡改或丢失。海信的可信保证措施,通过研发提供某种加密算法,生成对应的加密文件,传递两份文件,通过解密对比确认生成的原固件文件是可信的。由于固件中的数据在加密后数据量增加了,本技术提出了一种终端,通过该终端对运行光模块mcu的固件文件中的数据进行加密,加密后的数据进行分段存储。
23.在一些实施例中,本技术提供的终端可为计算机、平板电脑、手机等,如将运行光模块mcu的固件文件传递至计算机中,通过计算机对固件文件中的数据段进行加密存储,并将加密后的固件文件传递至产线。
24.图1为本技术实施例提供的终端的结构框图。如图1所示,本技术实施例提供的终端包括cpu与存储器,cpu被配置为,接收运行光模块mcu的固件文件,将固件文件中的数据段转换为字符串,对字符串进行加密,加密后的字符串超出一个存储地址存储的数据量;按照预设数据量对数据段对应的加密字符串进行分段,并为分段后的加密字符串分配与数据段对应的地址标识;存储器,被配置为,存储分段后的加密字符串。
25.图2为根据一些实施例的光模块mcu的固件hex的文件格式示意图。如图2所示,用于mcu运行的固件文件一般为hex文件,hex文件是分段存储形式,数据段的存储地址最大可为0xffff,即将运行mcu的固件文件中的数据进行分段,数据段的存储地址最大为0xffff,
使得第一段数据seg1存储0x0000
‑
0xffff数据,并为第一段数据seg1分配地址addr1;第二段数据seg2存储0x0000
‑
0xffff数据,并为第二段数据seg2分配地址addr2;第三段数据seg3存储0x0000
‑
0xffff数据,并为第三段数据seg3分配地址addr3,依此类推。
26.在本技术实施例中,针对固件文件中的数据,地址指的是物理存储地址、寄存器的地址,该地址与固件文件中数据段是唯一对应的,重复读取会导致数据重复。
27.终端对固件文件的数据进行加密时,可按顺序逐段对固件数据进行加密。具体地,cpu还被配置为,获取固件文件中的多个数据段,将数据段转变为字符串,通过加密算法对字符串进行加密,得到一串加密字符串。即将原hex文件中每段的数据变成字符串(转变过程中可以进行数据进制的转变),如将数据通过十六进制转变成字符串,传递给加密算法,获得加密字符串。
28.在一些实施例中,加密算法没有限制,任何可以双向传递的加密算法都可以使用此方法。
29.由于固件文件是分段数据,一段数据经数据进制转换为字符串后,字符串的数据量会变大,如固件文件中数据段需一个存储地址进行存储,而数据段转换后的字符串可能需要至少两个存储地址进行存储,使得字符串超出0xffff地址,导致数据结构改变。如果直接将加密后的字符串存储至一个存储地址,会导致加密字符串丢失,使得用于mcu运行的固件文件无法通过可信验证。
30.图3为根据一些实施例的光模块mcu的固件hex文件加密后的文件格式示意图。如图3所示,为了避免加密后的字符串存储时被篡改或丢失,cpu还被配置为,按照预设数据量对一串加密字符串进行分段,并为分段后的加密字符串分配与数据段对应的地址标识。即对每段固件数据进行加密得到一串加密字符串后,按照预设数据量对一串加密字符串进行分段,以对每段固件数据对应的加密字符串进行分段存储。
31.具体地,获取一个存储地址的数据量,按照数据量对一串加密字符串进行分段,并为分段后的加密字符串分配与加密字符串对应数据段存储地址的地址标识。如第一段数据seg1转换为字符串、经加密算法进行加密后,数据0x0000
‑
0xffff转变成加密字符串0x0000
‑
0xhhhhh,加密后的字符串超出一个存储地址的最大数据量0xffff,因此可将加密字符串进行分段,每段加密字符串最大可为0xffff,即将一串加密字符串按照最大数据为0xffff进行分段,分为第一小段0x0000
‑
0xffff,第二小段0x0000
‑
0xffff,第三小段0x0000
‑
0xffff,第四小段0x0000
‑
0xffff等,直至将加密字符串按照预设数据量分段完成。
32.将加密字符串按照预设数据量进行分段时,按照加密字符串的排列顺序对分段后的加密字符串分配顺序标识,即将加密字符串0x0000
‑
0xffff的顺序标识分配为一,将下一段0x0000
‑
0xffff顺序标识分配为二,将再一段0x0000
‑
0xffff顺序标识分配为三,依此类推,以方便识别对分段后加密字符串的前后顺序。
33.将加密字符串进行分段后,对分段的加密字符串分配地址标识,因分段后的加密字符串对应同一个加密前的hex数据段,因此每小段加密字符串的地址标识是相同的。针对加密后的文件,地址指的是分组标识,原hex数据加密后形成一组数据,改组以地址命令。如一串加密字符串对应的hex数据段的存储地址为addr1,将一串加密字符串按照最大数据为0xffff进行分段,分为第一小段0x0000
‑
0xffff,为该小段加密字符串分配地址标识addr1;第二小段0x0000
‑
0xffff,为该小段加密字符串分配地址标识addr1;第三小段0x0000
‑
0xffff,为该小段加密字符串分配地址标识addr1;第四小段0x0000
‑
0xffff,为该小段加密字符串分配地址标识addr1等。
34.将运行mcu的固件文件中的分段数据进行加密后,将固件文件传递至产线进行可信验证,进行可信验证时需对加密后的固件数据进行解密,通过解密对比确认生成的原固件文件是可信的。此时,cpu还被配置为,将地址标识相同的加密字符串按照顺序标识进行拼接,通过相应的解密算法对拼接后的加密字符串进行解密,得到与地址标识对应的解密数据;将解密数据与对应的数据段依次进行对比,对数据段进行可信验证。
35.具体地,合并地址标识相同的数据,得到一段加密后的字符串,将加密后的字符串传递给解密函数,得到解密后的字符串,然后进行进制变化(可通过ascii转为十六进制),如将字符串每两个字符合成一个十六进制数据,通过进制变化将解密后的字符串转变成数据,此数据即为加密前对应段内的数据。
36.在合并地址标识相同的数据时,cpu还被配置为,检测分段后加密字符串中是否存在不合法字符,当加密字符串中存在不合法字符时,删除加密字符串中的不合法字符。具体地,地址标识相同的数据中,最后一段可能存在多余的0xff数据(0xff指示数据截止,当数据无法充满存储空间时,以该字符表示数据存储截止),这是不合法字符,需要剔除。
37.通过解密算法对加密字符串进行解密后,cpu还被配置为,将每段解密数据与对应的数据段依次进行对比,以对固件文件中的数据段进行可信验证。具体地,将地址标识相同的数据拼接成的字符串进行解密后得到一段解密数据,将该段解密数据与原hex文件中对应段的数据段依次对比,以对比确认生成的原固件文件是可信的。
38.本技术实施例提供的终端中,通过cpu将运行光模块mcu的固件文件中的数据段转换为字符串,对字符串进行加密,并将每段固件数据对应的加密字符串进行再次分段,并为分段后的加密字符串分配与数据段对应的地址标识,避免了固件文件传递时数据被篡改或丢失,实现了加密后数据的存储,且任何加密算法都适用。
39.针对上述实施例所述的终端,本技术实施例还提供了一种终端对光模块mcu的固件文件加密存储方法,该方法对运行光模块mcu的固件文件中的数据进行分段,分段的数据段转换为字符串进行加密,加密后的字符串再次分段存储。
40.图4为本技术实施例提供的一种终端对光模块mcu的固件文件加密存储方法的流程图。
41.如图4所示,本技术实施例提供的终端对光模块mcu的固件文件加密存储方法包括:
42.s100:接收运行光模块mcu的固件文件。
43.用于光模块mcu运行的固件文件传递给产线后需要经过可信验证,以达到华为要求的网络安全可信要求。因此,需终端对固件文件中的数据进行加密处理,以方便进行可信验证。通过终端对固件文件进行加密时,需将运行光模块mcu的固件文件传输至终端,终端的cpu接收该固件文件。
44.s200:获取固件文件的数据段。
45.用于mcu运行的固件文件一般为hex形式,hex形式是分段存储形式,因此终端的cpu接收到固件文件后,直接获取固件文件中的分段数据,每段固件数据的存储地址最大可为0xffff,如第一段数据seg1存储0x0000
‑
0xffff数据,并为第一段数据seg1分配地址
addr1;第二段数据seg2存储0x0000
‑
0xffff数据,并为第二段数据seg2分配地址addr2;第三段数据seg3存储0x0000
‑
0xffff数据,并为第三段数据seg3分配地址addr3,依此类推。
46.s300:将数据段转变为字符串。
47.获得固件文件的多个数据段后,将每段的数据通过进制变化转变成字符串,如采用十六进制将数据转变成字符,使得每段固件数据变成一串字符串。
48.s400:对字符串进行加密,得到加密后的字符串。
49.通过进制变化获得字符串后,将每段固件数据对应的字符串传递给加密算法,通过加密算法对字符串进行加密,加密后的字符串超出一个存储地址存储的数据量。此处的加密算法没有具体限制,任何可以双向传递的加密算法都可以使用此方法。
50.一段数据经数据进制转换为字符串后,字符串的数据量会变大,如固件文件中的数据段需一个存储地址进行存储,而数据段转换后的字符串可能需要至少两个存储地址进行存储,使得字符串超出0xffff地址,导致数据结构改变。
51.s500:按照预设数据量对数据段对应的加密字符串进行分段,并为分段后的加密字符串分配与数据段对应的地址标识。
52.s600:存储分段后的加密字符串。
53.每段固件数据转换为字符串后,数据量会变大,字符串数量会超出最大存储量0xffff,导致数据结构改变,如果直接将加密后的字符串存储至存储器内,可能会导致加密字符串丢失,使得用于mcu运行的固件文件无法通过可信验证。
54.为了避免加密后的固件数据丢失,可按照预设数据量对加密字符串进行分段,以对每段固件数据对应的加密字符串进行分段存储。对加密字符串进行分段存储时,具体方法包括:获取一个存储地址存储的数据量,按照该数据量对数据段对应的加密字符串进行分段,按照加密字符串的排列顺序对分段后的加密字符串分配顺序标识,并为分段后的加密字符串分配与加密字符串对应数据段存储地址的地址标识,最后将分段后的加密字符串存储至存储器的相应地址。
55.具体地,按照预设数据量对一串加密串进行分段,如第一段数据seg1经加密算法进行加密后,数据0x0000
‑
0xffff转变成加密字符串0x0000
‑
0xhhhh,加密后的字符串超出最大存储量0xffff,因此可将加密字符串进行分段,每段加密字符串最大可为0xffff。即将一串加密字符串按照最大数据为0xffff进行分段,分为第一小段0x0000
‑
0xffff,第二小段0x0000
‑
0xffff,第三小段0x0000
‑
0xffff等,直至将一串加密字符串全部分段。
56.将加密字符串进行分段时,按照加密字符串的排列顺序对分段后的加密字符串分配顺序标识,即将加密字符串头部的0x0000
‑
0xffff的顺序标识分配为1,将下一段0x0000
‑
0xffff的顺序标识分配为2,将再一段0x0000
‑
0xffff的顺序标识分配为3,依此类推,以方便识别对分段后加密字符串的前后顺序。
57.将加密字符串进行分段后,对分段的加密字符串分配地址标识,因一串加密字符串分段后的加密字符串对应同一个加密前的hex数据段,因此每小段加密字符串的地址标识是相同的。如一串加密字符串对应的hex数据段的存储地址为addr1,将一串加密字符串按照最大数据为0xffff进行分段,分为第一小段0x0000
‑
0xffff,为该小段加密字符串分配地址标识addr1;第二小段0x0000
‑
0xffff,为该小段加密字符串分配地址标识addr1;第三小段0x0000
‑
0xffff,为该小段加密字符串分配地址标识addr1;第四小段0x0000
‑
0xffff,
为该小段加密字符串分配地址标识addr1等。
58.将运行mcu的固件文件中的分段数据进行加密后,将固件文件传递至产线进行可信验证,进行可信验证时需对加密后的固件数据进行解密,通过解密对比确认生成的原固件文件是否可信。
59.对分段后的加密进行解密的具体方法包括:将地址标识相同的加密字符串按照顺序标识进行拼接,通过相应的解密算法对拼接后的加密字符串进行解密,得到与地址标识对应的解密数据,将解密数据与对应的数据段依次进行对比,以对固件文件中的数据进行可信验证。
60.具体地,合并地址标识相同的加密字符串,得到多段加密后的字符串,将加密后的字符串传递给解密函数,得到解密后的字符串,然后进行进制变化,将字符串每两个字符合成一个十六进制数据。
61.在合并地址标识相同的数据时,需检测每段加密字符串中是否存在不合法字符,当每段加密字符串中存在不合法字符时,删除该不合法字符。具体地,注意最后一段是否存在多余的0xff数据(0xff指示数据截止,当数据无法充满存储空间时,以该字符表示数据存储截止),若最后一段存在多余的0xff数据,则说明加密字符串中存在不合法字符,需删除该不合法字符。
62.地址标识相同的数据拼接成的字符串经解密后得到一段解密数据,将该段解密数据与原hex文件中对应段的数据依次进行对比,以对比确认生成的原固件文件是可信的。
63.本技术实施例提供的终端对光模块mcu的固件文件加密存储方法包括:接收运行光模块mcu的固件文件,获取固件文件的数据段,将数据段转变为字符串,对字符串进行加密,得到加密后的字符串,加密后的字符串超出一个存储地址存储的数据量;按照预设数据量对数据段对应的加密字符串进行分段,并为分段后的加密字符串分配与数据段对应的地址标识;存储分段后的加密字符串。将用于mcu运行的固件文件进行加密,并将每段固件数据对应的加密字符串进行分段存储后,将加密后的固件文件传递至产线进行可信验证,验证时将地址标识相同的加密字符串进行拼接,对拼接后的加密字符串进行解密,得到与地址标识对应的解密数据,将解密数据与对应的数据段进行对比,以对比确认生成的原固件文件是可信的。本技术通过终端对运行光模块mcu的固件文件中的数据进行加密,对固件文件中的分段数据转换为字符串进行加密后,对一串加密字符串再次分段存储,避免了数据转换为字符串时因超出存储地址丢失,实现了加密后数据的存储,有利于固件文件的可信验证。
64.最后应说明的是:以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围。