本申请涉及物联网领域,具体而言,涉及一种加载产测图像并防盗刷的方法。
背景技术:
目前嵌入式智能物联设备越来越趋向于小型化,image(图像)都是定制裁剪成既能满足功能需求,又能最小的占用存储空间。每台设备在出厂时是需要进行产测的,确保设备基本功能正常,产测时可能会用到一些正常情况下用不到的模块或外设,要求系统里给产测增加一些额外的功能,但是出厂之后又不需要使用这些功能,所以这就造成了存储空间的浪费。
技术实现要素:
本申请的主要目的在于提供一种加载产测图像并防盗刷的方法,包括:
存储产测内核固件至移动存储设备;
通过私钥对所述产测内核固件加签;
存储加签之后的签名文件至所述移动存储设备中;
读取所述产测内核固件及所述签名文件至内存;
计算所述产测内核固件的加密校验值;
对比计算出来的所述加密校验值和所述签名文件;
根据对比结果运行所述产测内核固件。
可选地,所述移动存储设备为sd卡。
可选地,系统启动之后去sd卡里检测,如果有产测固件就加载产测固件,否则就正常启动
可选地,通过私钥对所述产测内核固件加签为通过rsa加密算法加签。
可选地,rsa加密算法加签是在外部环境利用私钥进行一系列运算实现,与所述私钥对应的以公钥预存至设备端。
可选地,uboot将所述公钥分解后直接写在所述uboot的镜像中,分解后的公钥填充在如下的结构体中:
typedefstructmbedtls_ecp_group
{
mbedtls_ecp_group_idid;
mbedtls_mpip;
mbedtls_mpia;
mbedtls_mpib;
mbedtls_ecp_pointg;
mbedtls_mpin;
size_tpbits;
size_tnbits;
unsignedinth;
int(*modp)(mbedtls_mpi*);
int(*t_pre)(mbedtls_ecp_point*,void*);
int(*t_post)(mbedtls_ecp_point*,void*);
void*t_data;
mbedtls_ecp_point*t;
size_tt_size;
}mbedtls_ecp_group。
根据本申请的另一个方面,还提供了一种加载产测图像并防盗刷的系统,包括:
第一存储模块,用于存储产测内核固件至移动存储设备;
加签模块,用于通过私钥对所述产测内核固件加签;
第二存储模块,用于存储加签之后的签名文件至所述移动存储设备中;
读取模块,用于读取所述产测内核固件及所述签名文件至内存;
计算模块,用于计算所述产测内核固件的加密校验值;
对比模块,用于对比计算出来的所述加密校验值和所述签名文件;
运行模块,用于根据对比结果运行所述产测内核固件。
本申请还公开了一种计算机设备,包括存储器、处理器和存储在所述存储器内并能由所述处理器运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述的方法。
本申请还公开了一种计算机可读存储介质,非易失性可读存储介质,其内存储有计算机程序,所述计算机程序在由处理器执行时实现上述任一项所述的方法。
本申请还公开了一种计算机程序产品,包括计算机可读代码,当所述计算机可读代码由计算机设备执行时,导致所述计算机设备执行上述任一项所述的方法。
与现有技术相比,本申请具有如下有益效果:
存储一些正常情况下设备不需要的功能带来的存储空间浪费问题。
增加产测固件加载的灵活性。
产测文件加签,加载过程进行文件验签,验签通过才开始加载运行,否则还是启动原有的image,防止隐患,增加系统安全性。
附图说明
构成本申请的一部分的附图用来提供对本申请的进一步理解,使得本申请的其它特征、目的和有益效果变得更明显。本申请的示意性实施例附图及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请一个实施例的加载产测图像并防盗刷的方法的流程示意图;
图2是根据本申请一个实施例的加载产测图像并防盗刷的方法的流程示意图;
图3是根据本申请一个实施例的计算机设备的示意图;以及
图4是根据本申请一个实施例的计算机可读存储介质的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
请参照图1-图2,本申请一实施例提供了一种加载产测图像并防盗刷的方法,包括:
s1:存储产测内核固件至移动存储设备;
s2:通过私钥对所述产测内核固件加签;
s3:存储加签之后的签名文件至所述移动存储设备中;
s4:读取所述产测内核固件及所述签名文件至内存;
s5:计算所述产测内核固件的加密校验值;
s6:对比计算出来的所述加密校验值和所述签名文件;
s7:根据对比结果运行所述产测内核固件。
例如,制作并存储产测内核固件至移动存储设备里;将固件用私钥加签,同时将加签之后的签名文件放在移动存储设备卡里,当读取固件之后就会读取该签名文件。将产测固件读到内存里,然后计算该固件的加密校验值,将计算出来的校验签名值和签名文件对比,若一致就校验通过,运行该固件,若不一致就说明校验失败,加载运行原有的固件。
在本申请一实施例中,所述移动存储设备为sd卡。
例如,制作产测内核固件,产测过程中可能会需要用到以太网或者usb功能,需要将这些功能打开,这样造成编译出来的内核固件体积增大,所以将该固件放在sd卡里。将固件用私钥加签,同时将加签之后的签名文件放在sd卡里,当读取固件之后就会读取该签名文件。当将产测固件读到内存里,然后计算该固件的加密校验值,将计算出来的校验签名值和签名文件对比,若一致就校验通过,运行该固件,若不一致就说明校验失败,加载运行原有的固件。
在本申请一实施例中,系统启动之后去sd卡里检测,如果有产测固件就加载产测固件,否则就正常启动。
例如,制作产测内核固件,产测过程中可能会需要用到以太网或者usb功能,需要将这些功能打开,这样造成编译出来的内核固件体积增大,所以将该固件放在sd卡里,系统启动之后去sd卡里检测,如果有产测固件就加载产测固件,否则就正常启动。将固件用私钥加签,同时将加签之后的签名文件放在sd卡里,当读取固件之后就会读取该签名文件当检测到sd卡里有产测固件,将产测固件读到内存里,然后计算该固件的加密校验值,将计算出来的校验签名值和签名文件对比,若一致就校验通过,运行该固件,若不一致就说明校验失败,加载运行原有的固件。
在本申请一实施例中,通过私钥对所述产测内核固件加签为通过rsa加密算法加签。
例如,制作产测内核固件,产测过程中可能会需要用到以太网或者usb功能,需要将这些功能打开,这样造成编译出来的内核固件体积增大,所以将该固件放在sd卡里,系统启动之后去sd卡里检测,如果有产测固件就加载产测固件,否则就正常启动。将固件用私钥加签,同时将加签之后的签名文件放在sd卡里,当读取固件之后就会读取该签名文件。当检测到sd卡里有产测固件,将产测固件读到内存里,然后计算该固件的rsa校验值,将计算出来的校验签名值和签名文件对比,若一致就校验通过,运行该固件,若不一致就说明校验失败,加载运行原有的固件。
在本申请一实施例中,rsa加密算法加签是在外部环境利用私钥进行一系列运算实现,与所述私钥对应的以公钥预存至设备端。rsa加密算法加签是在外部环境利用私钥进行一系列运算实现,验证是在设备端uboot阶段利用公钥进行一系列运算实现,所以公钥需要存在设备端。
在本申请一实施例中,uboot不便以文件的方式存储公钥,所以将公钥分解后直接写在uboot的镜像中,分解后的公钥填充在如下的结构体中:
typedefstructmbedtls_ecp_group
{
mbedtls_ecp_group_idid;
mbedtls_mpip;
mbedtls_mpia;
mbedtls_mpib;
mbedtls_ecp_pointg;
mbedtls_mpin;
size_tpbits;
size_tnbits;
unsignedinth;
int(*modp)(mbedtls_mpi*);
int(*t_pre)(mbedtls_ecp_point*,void*);
int(*t_post)(mbedtls_ecp_point*,void*);
void*t_data;
mbedtls_ecp_point*t;
size_tt_size;
}mbedtls_ecp_group。
本申请一实施例,还提供了一种加载产测图像并防盗刷的系统,包括:
第一存储模块,用于存储产测内核固件至移动存储设备;
加签模块,用于通过私钥对所述产测内核固件加签;
第二存储模块,用于存储加签之后的签名文件至所述移动存储设备中;
读取模块,用于读取所述产测内核固件及所述签名文件至内存;
计算模块,用于计算所述产测内核固件的加密校验值;
对比模块,用于对比计算出来的所述加密校验值和所述签名文件;
运行模块,用于根据对比结果运行所述产测内核固件。
与现有技术相比,本申请具有如下有益效果:
存储一些正常情况下设备不需要的功能带来的存储空间浪费问题。
增加产测固件加载的灵活性。
产测文件加签,加载过程进行文件验签,验签通过才开始加载运行,否则还是启动原有的image,防止隐患,增加系统安全性。
请参照图3,本申请还提供了一种计算机设备,包括存储器、处理器和存储在所述存储器内并能由所述处理器运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述的方法。
请参照图4,一种计算机可读存储介质,非易失性可读存储介质,其内存储有计算机程序,所述计算机程序在由处理器执行时实现上述任一项所述的方法。
一种计算机程序产品,包括计算机可读代码,当所述计算机可读代码由计算机设备执行时,导致所述计算机设备执行上述任一项所述的方法。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
1.一种加载产测图像并防盗刷的方法,其特征在于,包括:
存储产测内核固件至移动存储设备;
通过私钥对所述产测内核固件加签;
存储加签之后的签名文件至所述移动存储设备中;
读取所述产测内核固件及所述签名文件至内存;
计算所述产测内核固件的加密校验值;
对比计算出来的所述加密校验值和所述签名文件;
根据对比结果运行所述产测内核固件。
2.根据权利要求1所述的加载产测图像并防盗刷的方法,其特征在于,所述移动存储设备为sd卡。
3.根据权利要求2所述的加载产测图像并防盗刷的方法,其特征在于,系统启动之后去sd卡里检测,如果有产测固件就加载产测固件,否则就正常启动。
4.根据权利要求3所述的加载产测图像并防盗刷的方法,其特征在于,通过私钥对所述产测内核固件加签为通过rsa加密算法加签。
5.根据权利要求4所述的加载产测图像并防盗刷的方法,其特征在于,rsa加密算法加签是在外部环境利用私钥进行一系列运算实现,与所述私钥对应的以公钥预存至设备端。
6.根据权利要求5所述的加载产测图像并防盗刷的方法,其特征在于,uboot将所述公钥分解后直接写在所述uboot的镜像中,分解后的公钥填充在如下的结构体中:
typedefstructmbedtls_ecp_group
{
mbedtls_ecp_group_idid;
mbedtls_mpip;
mbedtls_mpia;
mbedtls_mpib;
mbedtls_ecp_pointg;
mbedtls_mpin;
size_tpbits;
size_tnbits;
unsignedinth;
int(*modp)(mbedtls_mpi*);
int(*t_pre)(mbedtls_ecp_point*,void*);
int(*t_post)(mbedtls_ecp_point*,void*);
void*t_data;
mbedtls_ecp_point*t;
size_tt_size;
}mbedtls_ecp_group。
7.一种加载产测图像并防盗刷的系统,其特征在于,包括:
第一存储模块,用于存储产测内核固件至移动存储设备;
加签模块,用于通过私钥对所述产测内核固件加签;
第二存储模块,用于存储加签之后的签名文件至所述移动存储设备中;
读取模块,用于读取所述产测内核固件及所述签名文件至内存;
计算模块,用于计算所述产测内核固件的加密校验值;
对比模块,用于对比计算出来的所述加密校验值和所述签名文件;
运行模块,用于根据对比结果运行所述产测内核固件。
8.一种计算机设备,包括存储器、处理器和存储在所述存储器内并能由所述处理器运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-6中任一项所述的方法。
9.一种计算机可读存储介质,非易失性可读存储介质,其内存储有计算机程序,其特征在于,所述计算机程序在由处理器执行时实现如权利要求1-6中任一项所述的方法。
10.一种计算机程序产品,包括计算机可读代码,其特征在于,当所述计算机可读代码由计算机设备执行时,导致所述计算机设备执行权利要求1-6中任一项所述的方法。
技术总结