一种划分终端开发模式和产品模式的方法及系统技术领域
本发明涉及一种划分终端开发模式和产品模式的方法及系统。
背景技术
在支付领域中,对终端固件的合法性、安全性、完整性提出了很高的要求,
因此促进了证书验签体系在支付领域的广泛应用。
目前主流的验签体系使用证书树完成整个验签体系的搭建,通过在一次性
烧写FLASH代码中固化CA,所述固化程序就是把程序写入到DSP,这样DSP
就可以脱离仿真器离线运行。固化CA的过程包括:使用证书私钥对固件进行签
名,固件下载进终端时,使用证书公钥对签名进行验证,满足了终端固件的合
法性、安全性、完整性的要求。如图1所示,一般固件签名格式为“固件+签名
证书+HASH校验”;通过在固件尾部附加包含签名证书和HASH校验的签名信
息,完成对固件合法性的验证,其中,“HASH校验”为计算得到固件加签名证
书的第一HASH值后,经签名帧数的私钥签名生成;验签过程,首先通过签名
证书中的公钥对“HASH校验”进行解密,再计算解密后的文件的HASH值,
得到第二HASH值,比较第一HASH值和第二HASH值,若相符,则证明签名
正常,若不相符,则证明固件在下载过程中发生异常,可能被截取修改过。
然而,上述现有技术终端下载固件后所使用的验签方式,并无法实现固件
开发版本和产品版本的分离。在固件开发过程中,经常会涉及到固件的调试修
改,因此,测试版本的固件可能存在风险;而测试版本的固件虽然处于测试阶
段,但仍然是合法的,同样能够通过验签;在被下载到终端后,终端只能通过
上述验签方式判断签名的合法性,却无法区分所下载的固件是测试版本还是正
式版本,因此存在可能失误下载到测试版本的风险,进而导致终端存在较大的
安全隐患,终端能够正常运行,以及用户和运营商的利益都无法得到保证。
申请号为201210527778.9的专利申请,公开了一种防止移动终端升级到非
法固件版本的方法及系统,包括升级工具对待升级固件版本进行版本合法性校
验处理,并根据版本合法性校验结果,接收升级工具下发的待升级固件版本;
对收到的待升级固件版本进行合法性验证,依据验证结果,进行固件版本的升
级。
上述申请文件还是只能判定固件的合法性,无法实现固件版本的区分;因
此,有必要提供一种划分终端开发模式和产品模式的方法及系统,以解决上述
问题。
发明内容
本发明所要解决的技术问题是:提供一种划分终端开发模式和产品模式的
方法及系统,实现开发权限和产品权限的分离,确保测试版本的固件不会被更
新至正式产品中,规避终端可能存在的安全隐患。
为了解决上述技术问题,本发明采用的技术方案为:
一种划分终端开发模式和产品模式的方法,包括:
开发CA签发开发证书,所述开发证书中包含开发私钥和开发公钥;
使用开发私钥对开发固件进行签名;生成已签名的开发固件;
终端获取一固件;依据预先存储在内部FLASH中的标志位判断所述终端当
前处于开发模式还是产品模式;
若为开发模式,则获取开发CA;使用开发CA验签所述一固件;若验签通
过,则判定所述一固件为所述开发固件;安装并运行所述一固件。
本发明提供的另一个技术方案为:
一种划分终端开发模式和产品模式的系统,包括:
第一签发模块,用于开发CA签发开发证书,所述开发证书中包含开发私钥
和开发公钥;
第一签名模块,用于使用开发私钥对开发固件进行签名;
第一生成模块,用于生成已签名的开发固件;
第一获取模块,用于终端获取一固件;
第一判断模块,用于依据预先存储在内部FLASH中的标志位判断所述终端
当前处于开发模式还是产品模式;
第二获取模块,用于获取开发CA;
第一验签模块,用于使用开发CA验签所述一固件;
第一判定模块,用于判定所述一固件为所述开发固件;
安装模块,用于安装并运行所述一固件。
本发明的有益效果在于:本发明对应处于不同阶段的固件使用不同的CA及
证书体系进行签名;在终端获取到一固件后,依据预先存储在内部的标志位判
断终端当前是处于开发模式还是产品模式,进而获取相应的CA进行验证,若验
证通过,则确认所述固件符合终端当前所处模式;实现开发权限与产品权限的
分离,确保开发人员使用开发CA签名后的测试版本固件无法下载到正式产品
中,规避测试版本固件流出的风险,进而保证终端的安全性。
附图说明
图1为现有技术的固件签名格式;
图2为本发明一种划分终端开发模式和产品模式的方法的流程示意图;
图3为本发明一实施例一种划分终端开发模式和产品模式的方法的流程示
意图;
图4为本发明一实施例一种划分终端开发模式和产品模式的方法中验签过
程的流程示意图;
图5为本发明一种划分终端开发模式和产品模式的系统的结构示意图;
图6为本发明一实施例一种划分终端开发模式和产品模式的系统的结构示
意图;
图7为本发明一实施例一种划分终端开发模式和产品模式的系统中第一签
名模块的结构示意图;
图8为本发明一实施例一种划分终端开发模式和产品模式的系统中第一验
签模块的结构示意图。
标号说明:
1、第一签发模块;2、第一签名模块;3、第一生成模块;
4、第一获取模块;5、第一判断模块;6、第二获取模块;
7、第一验签模块;8、第一判定模块;9、安装模块;
10、第二签发模块;11、第二签名模块;12、第二生成模块;
13、第三获取模块;14、第二验签模块;15、第二判定模块;
16、第一计算单元;17、加密单元;18、验证单元;
19、解密单元;20、第二计算单元;21、对比单元。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并
配合附图予以说明。
本发明最关键的构思在于:对应不同阶段的固件使用不同的CA及证书体系
进行签名;依据终端当前所处的模式获取相应的CA对所下载的固件进行验证,
只有验证通过才允许安装,实现权限的隔离。
本发明涉及的技术术语解释:
请参照图2以及图3,本发明提供一种划分终端开发模式和产品模式的方法,
包括:
开发CA签发开发证书,所述开发证书中包含开发私钥和开发公钥;
使用开发私钥对开发固件进行签名;生成已签名的开发固件;
终端获取一固件;依据预先存储在内部FLASH中的标志位,判断所述终端
当前处于开发模式还是产品模式;
若为开发模式,则获取开发CA;使用开发CA验签所述一固件;若验签通
过,则判定所述一固件为所述开发固件;安装并运行所述一固件。
需要说明的是,所述标志位可以使用四字节表示,如当数据为0xFFFFFFFF
时为产品模式,数据为0xABABABAB时表示当前为开发模式;FLASH的特性
是擦除后均被写为0xFF,达到默认状态为产品状态的效果。
从上述描述可知,本发明的有益效果在于:实现开发权限和产品权限的分
离,确保处于开发阶段的测试版本固件不会被更新至正式产品中。在开发阶段,
开发人员能够使用开发权限进行开发固件的签名和各项调试;当产品固件正式
发布时,由产品管控人员使用产品权限对产品固件进行签名,确保开发和产品
权限的隔离,保证开发固件的安全性。
进一步的,还包括:
产品CA签发产品证书,所述产品证书中包含产品私钥和产品公钥;
使用产品私钥对产品固件进行签名;生成已签名的产品固件;
若判断所述终端当前处于产品模式,则获取产品CA;使用产品CA验签所
述一固件;若验签通过,则判定所述一固件为产品固件;安装并运行所述一固
件。
由上述描述可知,对处于产品阶段的产品固件,配套对应的产品CA实现签
名和验证;只有处于产品阶段的终端选取对应的产品CA成功验证所下载的固件
后,才能确认所下载的固件为产品固件;确保处于产品阶段的终端所安装的固
件为产品固件,保证产品终端正常的工作和运行。
进一步的,若验签不通过,则删除所述一固件。
由上述描述可知,实现了终端自动清除非法固件。
进一步的,所述“签名”具体为:
对所述开发固件和开发证书计算HASH,得到第一HASH值;
使用所述开发私钥对所述第一HASH值进行加密,生成开发HASH校验。
由上述描述可知,本发明能够使用开发CA对开发固件进行签名操作,生成
已签名的开发固件,以实现开发固件和产品固件在本质上的区分。
请参阅图4,进一步的,所述一固件包括固件、证书和HASH校验;
所述“验签”具体为:
开发CA验证所述证书的合法性;
若通过验证,则使用所述证书中的公钥解密所述HASH校验;
若解密成功,则对所述一固件中的所述固件和所述证书计算HASH,得到
第二HASH值;
对比所述第一HASH值和第二HASH值;若相同,则验签通过。
由上述描述可知,本发明能够依据终端所处阶段,调用对于CA验签所下载
的固件,依据具体的验签结果判定所下载的固件是否对应终端所处的阶段,实
现所下载固件的版本区分。
请参阅图5,本发明提供的另一个技术方案为:
一种划分终端开发模式和产品模式的系统,包括:
第一签发模块1,用于开发CA签发开发证书,所述开发证书中包含开发私
钥和开发公钥;
第一签名模块2,用于使用开发私钥对开发固件进行签名;
第一生成模块3,用于生成已签名的开发固件;
第一获取模块4,用于终端获取一固件;
第一判断模块5,用于依据预先存储在内部FLASH中的标志位判断所述终
端当前处于开发模式还是产品模式;
第二获取模块6,用于获取开发CA;
第一验签模块7,用于使用开发CA验签所述一固件;
第一判定模块8,用于判定所述一固件为所述开发固件;
安装模块9,用于安装并运行所述一固件。
从上述描述可知,本发明的有益效果在于:本发明通过第一签发模块1、第
一签名模块2和第一生产模块实现开发权限和产品权限的分离;通过第一判断
模块5、第二获取模块6、第一验签模块7和第一判定模块8确保处于开发阶段
的测试版本固件不会被更新至正式产品中;确保开发和产品权限的隔离,保证
开发固件的安全性。
请参阅图6,进一步的,还包括:
第二签发模块10,用于产品CA签发产品证书,所述产品证书中包含产品
私钥和产品公钥;
第二签名模块11,用于使用产品私钥对产品固件进行签名;
第二生成模块12,用于生成已签名的产品固件;
第三获取模块13,用于获取产品CA;
第二验签模块14,用于使用产品CA验签所述一固件;
第二判定模块15,用于判定所述一固件为产品固件。
由上述描述可知,通过第二签发模块10、第二签名模块11、第二生成模块
12实现产品CA对产品固件的签名;通过第三获取模块13、第二验签模块14
和第二判断模块实现采用产品CA验签固件。
请参阅图7,进一步的,所述第一签名模块2包括:
第一计算单元16,用于对所述开发固件和开发证书计算HASH,得到第一
HASH值;
加密单元17,用于使用所述开发私钥对所述第一HASH值进行加密,生成
开发HASH校验。
由上述描述可知,本发明能够通过第一签名模块2中的第一计算模块和加
密模块使用开发CA对开发固件进行签名操作,生成对应开发CA的已签名开发
固件,从本质上与产品固件区分开来。
请参阅图8,进一步的,所述第一验签模块7包括:
验证单元18,用于开发CA验证所述证书的合法性;
解密单元19,用于使用所述开发证书中的公钥解密所述一固件中的HASH
校验;
第二计算单元20,用于对所述一固件中的所述固件和所述证书计算HASH,
得到第二HASH值;
对比单元21,用于对比所述第一HASH值和第二HASH值。
由上述描述可知,本发明能够通过第一验签模块7的验证单元18、解密单
元19、第二计算单元20和对比单元21对终端所下载的固件进行验证,以判断
是否对应终端所处阶段,确保终端所处阶段与固件的对应关系。
请参照图1-4,本发明的实施例一为:
提供一种划分终端开发模式和产品模式的方法,包括:
终端上同时存储有开发CA和产品CA;所述开发CA和产品CA可以是不
同第三方组织或公司所开发的不同数字证书认证中心,当然,也可以是同一组
织或公司开发的不同数字证书认证中心;
开发CA签发开发证书,所述开发证书包含开发私钥和开发公钥;所述开发
私钥作为开发签名卡,为开发人员持有;开发人员使用开发签名卡对处于测试
阶段的开发固件进行签名操作;生成已签名的开发固件;
具体的签名操作包括:
对所述开发固件和开发证书计算HASH,得到开发第一HASH值;
使用所述开发私钥对所述开发第一HASH值进行加密,生成开发HASH校
验;
将包含开发公钥的开发证书和开发HASH校验遵照一定的格式附在所述开
发固件的尾部。
处于开发阶段的终端,预先将终端内部FLASH中的标志位设置为处于开发
阶段;
所述终端下载固件A;所述固件A包括固件A、证书和HASH校验;
依据终端内部的FLASH中的标志位判断得到所述终端当前处于开发阶段;
获取存储在终端的开发CA;
使用开发CA验证所述固件A中所述证书的合法性;
若验证通过,则使用所述证书中的公钥解密所述HASH校验;
若解密成功,则对所述固件A中的所述固件A和所述证书计算HASH,得
到第二HASH值;
对比所述开发第一HASH值和第二HASH值;
若相同,则验签通过,确认所述固件A为开发固件,符合处于开发阶段的
终端的要求;终端安装并运行所述固件A;
若不相同,则删除所述固件A,判定所述固件A并非开发固件,为非法固
件。
请参照图1-4,在实施例一的基础上,本发明的实施例二为:
产品CA签发产品证书,所述产品证书包含产品私钥和产品公钥;所述产品
私钥作为产品签名卡,为产品人员持有;产品人员使用产品签名卡对已经为正
式产品的产品固件进行签名操作;生成已签名的产品固件;
具体的签名操作包括:
对所述产品固件和产品证书计算HASH,得到产品第一HASH值;
使用所述产品私钥对所述产品第一HASH值进行加密,生成产品HASH校
验;
将包含产品公钥的产品证书和产品HASH校验遵照一定的格式附在所述产
品固件的尾部。
处于产品阶段的终端,预先将终端内部FLASH中的标志位设置为处于产品
阶段;
所述终端下载固件B;所述固件B包括固件B、证书和HASH校验;
依据终端内部的FLASH中的标志位判断得到所述终端当前处于产品阶段;
获取存储在终端的产品CA;
使用产品CA验证所述固件B中所述证书的合法性;
若验证通过,则使用所述证书中的公钥解密所述HASH校验;
若解密成功,则对所述固件B中的所述固件B和所述证书计算HASH,得
到第二HASH值;
对比所述产品第一HASH值和第二HASH值;
若相同,则验签通过,确认所述固件B为产品固件,符合处于产品阶段的
终端的要求;终端安装并运行所述固件B;
若不相同,则删除所述固件B,判定所述固件B并非产品固件,为非法固
件。
请参阅图6-图8,本发明的实施例三为:
一种划分终端开发模式和产品模式的系统,包括产品CA、开发CA和终端;
所述开发CA包括:
第一签发模块1,用于开发CA签发开发证书,所述开发证书中包含开发私
钥和开发公钥;所述第一签名模块2包括第一计算单元16和加密单元17;第一
计算单元16用于对所述开发固件和开发证书计算HASH,得到第一HASH值;
加密单元17用于使用所述开发私钥对所述第一HASH值进行加密,生成开发
HASH校验;
第一签名模块2,用于使用开发私钥对开发固件进行签名;
第一生成模块3,用于生成已签名的开发固件;
所述产品CA包括:
第二签发模块10,用于产品CA签发产品证书,所述产品证书中包含产品
私钥和产品公钥;
第二签名模块11,用于使用产品私钥对产品固件进行签名;
第二生成模块12,用于生成已签名的产品固件;
所述终端包括:
第一获取模块4,用于终端获取一固件;
第一判断模块5,用于依据预先存储在内部FLASH中的标志位判断所述终
端当前处于开发模式还是产品模式;
第二获取模块6,用于获取开发CA;
第一验签模块7,用于使用开发CA验签所述一固件;具体包括验证单元18、
解密单元19、第二计算单元20和对比单元21,所述验证单元18用于开发CA
验证所述证书的合法性;所述解密单元19用于使用所述开发证书中的公钥解密
所述一固件中的HASH校验;第二计算单元20用于对所述一固件中的所述固件
和所述证书计算HASH,得到第二HASH值;对比单元21用于对比所述第一
HASH值和第二HASH值;
第一判定模块8,用于判定所述一固件为所述开发固件;
第三获取模块13,用于获取产品CA;
第二验签模块14,用于使用产品CA验签所述一固件;
第二判定模块15,用于判定所述一固件为产品固件。
安装模块9,用于安装并运行所述一固件。
综上所述,本发明提供的一种划分终端开发模式和产品模式的方法及系统,
区别于现有技术的无法实现终端所下载固件的版本区分,可能导致测试版本流
出,存在安全隐患的问题;本发明通过对应不同阶段的固件使用不同的CA及证
书体系进行签名;依据终端当前所处的模式获取相应的CA对所下载的固件进行
验证,只有验证通过才允许安装,实现产品权限和开发权限的隔离,确保测试
版本的固件无法更新至产品终端中;同时,还包括对所下载固件进行合法性验
签过程,满足终端固件的合法性、安全性和完整性要求。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利
用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术
领域,均同理包括在本发明的专利保护范围内。