著录项信息
专利名称 | 一种安全的金融终端的固件烧写方法及金融终端 |
申请号 | CN201510500802.3 | 申请日期 | 2015-08-14 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2015-12-16 | 公开/公告号 | CN105159707A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F8/65 | IPC分类号 | G;0;6;F;8;/;6;5查看分类表>
|
申请人 | 飞天诚信科技股份有限公司 | 申请人地址 | 北京市海淀区学清路9号汇智大厦B楼17层
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 飞天诚信科技股份有限公司 | 当前权利人 | 飞天诚信科技股份有限公司 |
发明人 | 陆舟;于华章 |
代理机构 | 暂无 | 代理人 | 暂无 |
摘要
本发明公开了一种安全的金融终端的固件烧写方法及金融终端,属于金融安全领域。所述方法包括金融终端根据上位机下发的指令完成安全环境的建立、安全boot的下载和更新、应用固件的下载和更新以及安全固件的下载和更新。所述金融终端包括通信模块、安全环境建立模块、安全boot下载更新模块、应用固件下载更新模块和安全固件下载更新模块。本发明的有益效果在于能够避免现有的金融终端的固件烧写方法的安全隐患,提高金融终端产品的安全性。
1.一种安全的金融终端的固件烧写方法,其特征在于,包括:
步骤S1、金融终端接收上位机下发的指令,当接收到上位机下发的建立安全环境指令时,执行步骤S2;当接收到上位机下发的安全boot下载更新指令时,执行步骤S3;当接收到上位机下发的应用固件下载更新指令时,执行步骤S4;当接收到上位机下发的安全固件下载更新指令时,执行步骤S5;
步骤S2、所述金融终端启动安全检测功能,向上位机返回应答,返回步骤S1;
步骤S3、所述金融终端下载正式安全boot,将所述金融终端中的测试安全boot更新为所述正式安全boot,向上位机返回应答,返回步骤S1;
步骤S4、所述金融终端下载正式应用固件,将所述金融终端中的测试应用固件更新为所述正式应用固件,向上位机返回应答,返回步骤S1;
步骤S5、所述金融终端下载正式安全固件,将所述金融终端中的测试安全固件更新为所述正式安全固件,向上位机返回应答,返回步骤S1;
所述测试应用固件和所述测试安全固件中包含硬件测试程序和安全环境构建程序,所述正式应用固件和所述正式安全固件中不包含硬件测试程序和安全环境构建程序,所述测试安全boot中不包含金融终端自检的程序,所述正式安全boot中包含金融终端自检的程序,且所述正式安全boot中不包含终端自检的条件判断。
2.如权利要求1所述的方法,其特征在于,所述步骤S1中还包括:当接收到上位机下发的启动侵入检测功能指令时,所述金融终端启动侵入检测功能,向上位机返回应答,返回步骤S1;当接收到上位机下发的获取侵入检测状态指令时,获取侵入检测状态,向上位机返回所述侵入检测状态,返回步骤S1。
3.如权利要求2所述的方法,其特征在于,所述安全检测功能包括温度检测功能和电压检测功能。
4.如权利要求1所述的方法,其特征在于,所述步骤S2中还包括:所述金融终端初始化防穷举参数空间。
5.如权利要求1所述的方法,其特征在于,所述步骤S3中,所述金融终端下载正式安全boot之后还包括:校验所述正式安全boot,若校验通过则继续执行所述将所述金融终端中的安全boot更新为所述正式安全boot,若校验不通过则直接向上位机返回应答,返回步骤S1。
6.如权利要求5所述的方法,其特征在于,所述步骤S3具体包括:
步骤1-1、所述金融终端中的应用处理器接收到所述安全boot下载更新指令时,判断所述安全boot下载更新指令的类型,若为下载开始指令则执行步骤1-2,若为下载指令则执行步骤1-3,若为下载结束指令则执行步骤1-4;
步骤1-2、所述应用处理器从所述下载开始指令中获取安全boot校验和,将所述安全boot校验和发送给所述金融终端中的安全处理器,存储到安全处理器的外部flash,并向上位机返回应答;
步骤1-3、所述应用处理器从所述下载指令中获取安全boot更新数据,将所述安全boot更新数据发送给所述安全处理器,存储到所述安全处理器的外部flash,并向上位机返回应答;
步骤1-4、所述应用处理器向所述安全处理器发送安全boot下载结束指令,执行步骤1-
5;
步骤1-5、所述安全处理器根据所述安全boot校验和校验所述安全boot更新数据,若校验通过则用所述安全boot更新数据更新所述安全处理器内部flash中的测试安全boot,向所述应用处理器返回安全boot下载结束指令应答,执行步骤1-6;若校验未通过则向所述应用处理器返回安全boot下载结束指令应答,执行步骤1-6;
步骤1-6、所述应用处理器根据所述安全boot下载结束指令应答向上位机返回应答。
7.如权利要求6所述的方法,其特征在于,所述步骤1-5中,所述执行步骤1-6之前还包括:所述安全处理器清除所述安全处理器外部flash中的安全boot更新数据和安全boot校验和。
8.如权利要求1所述的方法,其特征在于,所述步骤S2中还包括:所述金融终端生成根密钥,用所述根密钥加密预存的应用固件更新密钥;
所述步骤S4中,所述金融终端下载正式应用固件之后还包括:根据所述应用固件更新密钥校验所述正式应用固件,若校验通过则根据所述应用固件更新密钥继续执行所述将所述金融终端中的测试应用固件更新为所述正式应用固件,若校验不通过则直接向上位机返回应答,返回步骤S1。
9.如权利要求8所述的方法,其特征在于,所述金融终端下载正式应用固件,根据所述应用固件更新密钥校验所述正式应用固件,具体包括:
步骤2-1、所述金融终端中的应用处理器接收到所述应用固件下载更新指令时,判断所述应用固件下载更新指令的类型,若为下载开始指令则执行步骤2-2、若为下载指令则执行步骤2-3、若为下载结束指令则执行步骤2-4;
步骤2-2、所述应用处理器从所述下载开始指令中获取应用固件下载更新头文件,将所述应用固件下载更新头文件发送给所述金融终端中的安全处理器存储到安全处理器的外部flash,并向上位机返回应答;
步骤2-3、所述应用处理器从所述下载指令中获取应用固件下载更新文件,将所述应用固件下载更新文件发送给所述安全处理器,存储到安全处理器的外部flash,并向上位机返回应答;
步骤2-4、所述应用处理器向所述安全处理器下发应用固件下载结束指令,执行步骤2-
5;
步骤2-5、所述安全处理器根据所述应用固件更新密钥校验所述应用固件下载更新文件,若校验通过则向所述应用处理器返回应用固件下载结束指令应答,执行步骤2-6;若校验未通过则清除所述安全处理器外部flash中的应用固件下载更新头文件和应用固件下载更新文件,向所述应用处理器返回应用固件下载结束指令应答,执行步骤2-6;
步骤2-6、所述应用处理器根据所述应用固件下载结束指令应答向上位机返回应答。
10.如权利要求9所述的方法,其特征在于,所述安全处理器根据所述应用固件更新密钥校验所述应用固件下载更新文件,具体包括:所述安全处理器对所述应用固件下载更新文件进行哈希运算,使用所述根密钥对加密后的应用固件更新密钥解密,使用解密得到的应用固件更新密钥对所述应用固件下载更新头文件中的签名数据验签,判断验签得到的应用固件下载更新文件摘要与哈希运算得到的摘要是否相同,若相同则校验通过,若不相同则校验未通过。
11.如权利要求9所述的方法,其特征在于,所述金融终端将所述金融终端中的测试应用固件更新为所述正式应用固件,具体包括:
步骤3-1、所述应用处理器擦除应用处理器内部flash中的测试应用固件,向所述安全处理器发送获取正式应用固件指令;
步骤3-2、所述安全处理器从所述应用固件下载更新文件中获取正式应用固件,向所述应用处理器返回所述正式应用固件;
步骤3-3、所述应用处理器将所述正式应用固件写入所述应用处理器内部flash。
12.如权利要求11所述的方法,其特征在于,所述步骤3-2中还包括:所述安全处理器从所述应用固件下载更新文件中获取正式应用固件的摘要的签名值,向所述应用处理器返回所述正式应用固件的摘要的签名值;
所述步骤3-3中还包括:所述应用处理器将所述正式应用固件的摘要的签名值写入所述应用处理器内部flash。
13.如权利要求12所述的方法,其特征在于,所述安全处理器从所述应用固件下载更新文件中获取正式应用固件,以及所述安全处理器从所述应用固件下载更新文件中获取正式应用固件的摘要的签名值,具体包括:所述安全处理器使用所述根密钥解密加密后的应用固件更新密钥,根据解密得到的应用固件更新密钥对所述应用固件下载更新头文件中包含的签名数据验签,根据验签得到的应用固件下载密钥解密所述应用固件下载更新文件,从解密结果中获取正式应用固件和正式应用固件的摘要的签名值。
14.如权利要求1所述的方法,其特征在于,所述步骤S2中还包括:所述金融终端生成根密钥,用所述根密钥加密预存的安全固件更新密钥;
所述步骤S5中,所述金融终端下载正式安全固件之后还包括:根据所述安全固件更新密钥校验所述正式安全固件,若校验通过则根据所述安全固件更新密钥继续执行所述将所述金融终端中的测试安全固件更新为所述正式安全固件,若校验不通过则直接向上位机返回应答,返回步骤S1。
15.如权利要求14所述的方法,其特征在于,所述金融终端下载正式安全固件,根据所述安全固件更新密钥校验所述正式安全固件,具体包括:
步骤4-1、所述金融终端中的应用处理器接收到所述安全固件下载更新指令时,判断所述安全固件下载更新指令的类型,若为下载开始指令则执行步骤4-2、若为下载指令则执行步骤4-3、若为下载结束指令则执行步骤4-4;
步骤4-2、所述应用处理器从所述下载开始指令中获取安全固件下载更新头文件,将所述安全固件下载更新头文件发送给所述金融终端中的安全处理器存储到安全处理器的外部flash,并向上位机返回应答;
步骤4-3、所述应用处理器从所述下载指令中获取安全固件下载更新文件,将所述安全固件下载更新文件发送给所述安全处理器存储到安全处理器的外部flash,并向上位机返回应答;
步骤4-4、所述应用处理器向所述安全处理器下发安全固件下载结束指令,执行步骤4-
5;
步骤4-5、所述安全处理器根据所述安全固件更新密钥校验所述安全固件下载更新文件,若校验通过则向所述应用处理器返回安全固件下载结束指令应答,执行步骤4-6;若校验未通过则清除所述安全处理器外部flash中的安全固件下载更新头文件和安全固件下载更新文件,向所述应用处理器返回安全固件下载结束指令应答,执行步骤4-6;
步骤4-6、所述应用处理器根据所述安全固件下载结束指令应答向上位机返回应答。
16.如权利要求15所述的方法,其特征在于,所述安全处理器根据所述应用固件更新密钥校验所述应用固件下载更新文件,具体包括:所述安全处理器对所述安全固件下载更新文件进行哈希运算,使用所述根密钥对加密后的安全固件更新密钥解密,使用解密得到的安全固件更新密钥对所述安全固件下载更新头文件中的签名数据验签,判断验签得到的安全固件下载更新文件摘要与哈希运算得到的摘要是否相同,若相同则校验通过,若不相同则校验未通过。
17.如权利要求15所述的方法,其特征在于,所述金融终端将所述金融终端中的测试安全固件更新为所述正式安全固件,具体包括:
步骤5-1、所述安全处理器从所述安全固件下载更新文件中获取正式安全固件;
步骤5-2、用所述正式安全固件更新所述安全处理器内部flash中的测试安全固件。
18.如权利要求17所述的方法,其特征在于,所述步骤5-1中还包括:所述安全处理器从所述安全固件下载更新文件中获取正式安全固件的摘要的签名值;
所述步骤5-2中还包括:所述安全处理器将所述正式安全固件的摘要的签名值写入所述安全处理器内部flash。
19.如权利要求18所述的方法,其特征在于,所述安全处理器从所述安全固件下载更新文件中获取正式安全固件,以及所述安全处理器从所述安全固件下载更新文件中获取正式安全固件的摘要的签名值,具体包括:所述安全处理器使用所述根密钥解密加密后的安全固件更新密钥,根据解密得到的安全固件更新密钥对所述安全固件下载更新头文件中包含的签名数据验签,根据验签得到的安全固件下载密钥解密所述安全固件下载更新文件,从解密结果中获取正式安全固件和正式安全固件的摘要的签名值。
20.如权利要求1所述的方法,其特征在于,所述金融终端执行所述步骤S3之前还包括:
所述金融终端检查安全环境建立标志是否被置位,若被置位则执行所述步骤S3,若未被置位则向上位机返回错误信息码,返回步骤S1;
所述步骤S2中还包括:所述金融终端置位所述安全环境建立标志;
所述金融终端执行所述步骤S4或步骤S5之前还包括:所述金融终端检查安全boot更新标志是否被置位,若被置位则执行所述步骤S4或步骤S5,若未被置位则向上位机返回错误信息码,返回步骤S1;
所述步骤S3中还包括:所述金融终端置位所述安全boot更新标志。
21.一种金融终端,其特征在于,包括:通信模块、安全环境建立模块、存储模块、安全boot下载更新模块、应用固件下载更新模块和安全固件下载更新模块;
所述通信模块,用于接收上位机下发的建立安全环境指令、安全boot下载更新指令、应用固件下载更新指令和安全固件下载更新指令;
所述安全环境建立模块,用于当所述通信模块接收到上位机下发的建立安全环境指令时,启动安全检测功能;
所述存储模块,用于存储测试应用boot、测试应用固件、测试安全boot和测试安全固件;
所述安全boot下载更新模块,用于当所述通信模块接收到上位机下发的安全boot下载更新指令时,下载正式安全boot,用所述正式安全boot更新所述存储模块中的测试安全boot;
所述应用固件下载更新模块,用于当所述通信模块接收到上位机下发的应用固件下载更新指令时,下载正式应用固件,用所述正式应用固件更新所述存储模块中的测试应用固件;
所述安全固件下载更新模块,用于当所述通信模块接收到上位机下发的安全固件下载更新指令时,下载正式安全固件,用所述正式安全固件更新所述存储模块中的测试安全固件;
所述通信模块还用于当所述安全环境建立模块、所述安全boot下载更新模块、所述应用固件下载更新模块和所述安全固件下载更新模块运行结束时,向上位机返回应答;
所述测试应用固件和所述测试安全固件中包含硬件测试程序和安全环境构建程序,所述正式应用固件和所述正式安全固件中不包含硬件测试程序和安全环境构建程序,所述测试安全boot中不包含金融终端自检的程序,所述正式安全boot中包含金融终端自检的程序,且所述正式安全boot中不包含终端自检的条件判断。
22.如权利要求21所述的金融终端,其特征在于,还包括侵入检测模块;
所述通信模块还用于接收上位机下发的启动侵入检测功能指令和获取侵入检测状态指令,以及当所述侵入检测模块运行结束时,向上位机返回应答或返回侵入检测状态;
所述侵入检测模块,用于当所述通信模块接收到上位机下发的启动侵入检测功能指令时,启动侵入检测功能,以及用于当所述通信模块接收到上位机下发的获取侵入检测状态指令时,获取侵入检测状态。
23.如权利要求22所述的金融终端,其特征在于,所述安全环境建立模块具体用于当所述通信模块接收到上位机下发的建立安全环境指令时,启动温度检测功能和电压检测功能。
24.如权利要求21所述的金融终端,其特征在于,所述安全环境建立模块还用于当所述通信模块接收到上位机下发的建立安全环境指令时,初始化防穷举参数空间。
25.如权利要求21所述的金融终端,其特征在于,还包括安全boot校验模块,用于校验所述安全boot下载更新模块下载的正式安全boot;
所述安全boot下载更新模块具体用于当所述通信模块接收到上位机下发的安全boot下载更新指令时,下载正式安全boot,以及当所述安全boot校验模块校验通过时,用所述正式安全boot更新所述存储模块中的测试安全boot。
26.如权利要求25所述的金融终端,其特征在于,所述安全boot下载更新模块具体包括:判断单元、获取单元、存储单元和更新单元;
所述判断单元用于当所述通信模块接收到上位机下发的安全boot下载更新指令时,判断所述安全boot下载更新指令的类型;
所述获取单元用于当所述判断单元判断所述安全boot下载更新指令为下载开始指令时,从所述下载开始指令中获取安全boot校验和;以及当所述判断单元判断所述安全boot下载更新指令为下载指令时,从所述下载指令中获取安全boot更新数据;
所述存储单元用于存储所述获取单元获取到的安全boot校验和以及安全boot更新数据;
所述更新单元用于当所述安全boot校验模块校验通过时,用所述存储单元中的安全boot更新数据更新所述存储模块中的测试安全boot;
所述安全boot校验模块具体用于当所述判断单元判断所述安全boot下载更新指令为下载结束指令时,根据所述存储单元中的安全boot校验和校验所述存储单元中的安全boot更新数据。
27.如权利要求26所述的金融终端,其特征在于,所述安全boot下载更新模块还包括清除单元,用于当所述更新单元运行结束时以及当安全boot校验模块校验不通过时,清除所述存储单元中的安全boot更新数据和安全boot校验和。
28.如权利要求21所述的金融终端,其特征在于,还包括应用固件校验模块;
所述存储模块还用于存储应用固件更新密钥;
所述安全环境建立模块还用于当所述通信模块接收到上位机下发的建立安全环境指令时,生成根密钥,用所述根密钥加密所述存储模块中的应用固件更新密钥;
所述应用固件校验模块,用于根据所述存储模块中的应用固件更新密钥校验所述应用固件下载更新模块下载的正式应用固件;
所述应用固件下载更新模块具体用于当所述通信模块接收到上位机下发的应用固件下载更新指令时,下载正式应用固件,以及当所述应用固件校验模块校验通过后,用所述正式应用固件更新所述存储模块中的测试应用固件。
29.如权利要求28所述的金融终端,其特征在于,所述应用固件下载更新模块具体包括:下载子模块和更新子模块;
所述下载子模块具体包括:判断单元、获取单元和存储单元;
所述判断单元,用于当所述通信模块接收到上位机下发的应用固件下载更新指令时,判断所述应用固件下载更新指令的类型;
所述获取单元,用于当所述判断单元判断所述应用固件下载更新指令为下载开始指令时,获取所述下载开始指令中的应用固件下载更新头文件;以及用于当所述判断单元判断所述应用固件下载更新指令为下载指令时,获取所述下载指令中的应用固件下载更新文件;
所述存储单元,用于存储所述获取单元获取到的应用固件下载更新头文件和应用固件下载更新文件;
所述更新子模块,用于当所述应用固件校验模块校验通过后,更新所述存储模块中的测试应用固件;
所述应用固件校验模块,具体用于当所述判断单元判断所述应用固件下载更新指令为下载结束指令时,根据所述存储模块中的应用固件更新密钥校验所述存储单元中的应用固件下载更新文件,以及当校验未通过时清除所述存储单元中的应用固件下载更新头文件和应用固件下载更新文件。
30.如权利要求29所述的金融终端,其特征在于,所述应用固件校验模块具体包括:
哈希单元,用于当所述判断单元判断所述应用固件下载更新指令为下载结束指令时,对所述存储单元中的应用固件下载更新文件进行哈希运算;
验签单元,用于使用所述根密钥对所述存储模块中加密后的应用固件更新密钥解密,使用解密得到的应用固件更新密钥对所述存储单元中的应用固件下载更新头文件中的签名数据验签;
校验单元,用于判断所述验签单元得到的验签结果与所述哈希单元得到的哈希结果是否相同,若相同则校验通过,若不相同则校验未通过,清除所述存储单元中的应用固件下载更新头文件和应用固件下载更新文件。
31.如权利要求29所述的金融终端,其特征在于,所述更新子模块具体包括:
擦除单元,用于当所述应用固件校验模块校验通过后,擦除所述存储模块中的测试应用固件;
提取单元,用于从所述存储单元中的应用固件下载更新文件中获取正式应用固件;
写入单元,用于将所述提取单元获取到的正式应用固件写入所述存储模块。
32.如权利要求31所述的金融终端,其特征在于,所述提取单元还用于从所述存储单元中的应用固件下载更新文件中获取正式应用固件的摘要的签名值;
所述写入单元还用于将所述提取单元获取到的所述正式应用固件的摘要的签名值写入所述存储模块。
33.如权利要求32所述的金融终端,其特征在于,所述提取单元具体用于:使用所述根密钥对所述存储模块中加密后的应用固件更新密钥解密,根据解密得到的应用固件更新密钥对所述存储单元中的应用固件下载更新头文件中包含的签名数据验签,根据验签得到的应用固件下载密钥解密所述存储单元中的应用固件下载更新文件,从解密结果中获取正式应用固件和正式应用固件的摘要的签名值。
34.如权利要求21所述的金融终端,其特征在于,还包括安全固件校验模块;
所述存储模块还用于存储安全固件更新密钥;
所述安全环境建立模块还用于当所述通信模块接收到上位机下发的建立安全环境指令时,生成根密钥,用所述根密钥加密所述存储模块中的安全固件更新密钥;
所述安全固件校验模块,用于根据所述存储模块中的安全固件更新密钥校验所述安全固件下载更新模块下载的正式安全固件;
所述安全固件下载更新模块具体用于当所述通信模块接收到上位机下发的安全固件下载更新指令时,下载正式安全固件,以及当所述安全固件校验模块校验通过后,用所述正式安全固件更新所述存储模块中的测试安全固件。
35.如权利要求34所述的金融终端,其特征在于,所述安全固件下载更新模块具体包括:下载子模块和更新子模块;
所述下载子模块具体包括:判断单元、获取单元和存储单元;
所述判断单元,用于当所述通信模块接收到上位机下发的安全固件下载更新指令时,判断所述安全固件下载更新指令的类型;
所述获取单元,用于当所述判断单元判断所述安全固件下载更新指令为下载开始指令时,获取所述下载开始指令中的安全固件下载更新头文件;以及当所述判断单元判断所述安全固件下载更新指令为下载指令时,获取所述下载指令中的安全固件下载更新文件;
所述存储单元,用于存储所述获取单元获取到的安全固件下载更新头文件和安全固件下载更新文件;
所述更新子模块,用于当所述安全固件校验模块校验通过后,更新所述存储模块中的测试安全固件;
所述安全固件校验模块,具体用于当所述判断单元判断所述安全固件下载更新指令为下载结束指令时,根据所述存储模块中的安全固件更新密钥校验所述存储单元中的安全固件下载更新文件。
36.如权利要求35所述的金融终端,其特征在于,所述安全固件校验模块具体包括:
哈希单元,用于当所述判断单元判断所述安全固件下载更新指令为下载结束指令时,对所述存储单元中的安全固件下载更新文件进行哈希运算;
验签单元,用于使用所述根密钥对所述存储模块中加密后的安全固件更新密钥解密,使用解密得到的安全固件更新密钥对所述存储单元中的安全固件下载更新头文件中的签名数据验签;
校验单元,用于判断所述验签单元得到的验签结果与所述哈希单元得到的哈希结果是否相同,若相同则校验通过,若不相同则校验未通过。
37.如权利要求35所述的金融终端,其特征在于,所述更新子模块具体包括:
提取单元,用于当安全固件校验模块校验通过后,从所述存储单元中的安全固件下载更新文件中获取正式安全固件;
更新单元,用于用所述提取单元获取的正式安全固件更新所述存储模块中的测试安全固件。
38.如权利要求37所述的金融终端,其特征在于,所述提取单元还用于从所述存储单元中的安全固件下载更新文件中获取正式安全固件的摘要的签名值;
所述更新单元还用于将所述提取单元获取到的正式安全固件的摘要的签名值写入所述存储模块。
39.如权利要求38所述的金融终端,其特征在于,所述提取单元具体用于:使用所述根密钥对所述存储模块中加密后的安全固件更新密钥解密,根据解密得到的安全固件更新密钥对所述存储单元中的安全固件下载更新头文件中包含的签名数据验签,根据验签得到的安全固件下载密钥解密所述存储单元中的安全固件下载更新文件,从解密结果中获取正式安全固件和正式安全固件的摘要的签名值。
40.如权利要求21所述的金融终端,其特征在于,所述存储模块还用于存储安全环境建立标志和安全boot更新标志;所述安全环境建立标志和所述安全boot更新标志的初始状态为未被置位;
所述安全环境建立模块还用于置位所述存储模块中的安全环境建立标志;
所述安全boot下载更新模块具体用于:当所述通信模块接收到上位机下发的安全boot下载更新指令时,检查所述存储模块中的安全环境建立标志是否被置位,以及当所述安全环境建立标志被置位时,下载正式安全boot,用所述正式安全boot更新所述存储模块中的测试安全boot,置位所述存储模块中的安全boot更新标志;
所述应用固件下载更新模块具体用于:当所述通信模块接收到上位机下发的应用固件下载更新指令时,检查所述存储模块中的安全boot更新标志是否被置位,以及当所述安全boot更新标志被置位时,下载正式应用固件,用所述正式应用固件更新所述存储模块中的测试应用固件;
所述安全固件下载更新模块具体用于:当所述通信模块接收到上位机下发的安全固件下载更新指令时,检查所述存储模块中的安全boot更新标志是否被置位,以及当所述安全boot更新标志被置位时,下载正式安全固件,用所述正式安全固件更新所述存储模块中的测试安全固件;
所述通信模块还用于:当所述安全boot下载更新模块检查所述存储模块中的安全环境建立标志未被置位时,当所述应用固件下载更新模块检查所述存储模块中的安全boot更新标志未被置位时,以及当所述安全固件下载更新模块检查所述存储模块中的安全boot更新标志未被置位时,向上位机返回错误消息码。
一种安全的金融终端的固件烧写方法及金融终端\n技术领域\n[0001] 本发明涉及金融安全领域,尤其涉及一种安全的金融终端的固件烧写方法及金融终端。\n背景技术\n[0002] 金融终端在使用之前需要建立安全环境,安全环境建立之后金融终端进入安全运行模式,在此模式下才能够进行密钥、密码等敏感数据的导入工作。\n[0003] 技术人员在实现本发明的过程中发现现有的金融终端的固件烧写方法至少存在以下安全隐患:\n[0004] 1.建立安全环境的代码包含在正式固件中,一方面使得攻击者有机会使安全环境建立流程再次执行,另一方面也可能由于安全固件自身代码的错误或误判,从而导致安全环境的重新建立,引发安全问题。\n[0005] 2.正式固件烧写后首次运行时,即会对安全事件进行检测(即金融终端自检),并要在检测到出现安全事件后停止工作,因此需要在固件程序中执行有条件的安全事件检测,即在尚未建立安全环境时,根据相关条件的判断跳过安全事件检测流程,在安全环境建立后,再通过设置相关条件,使固件可以运行安全事件检测流程。这就使得攻击者有机会建立伪造的相关条件,从而使正式固件跳过安全事件检测流程,进而达到攻击金融终端内部敏感数据的目的。\n发明内容\n[0006] 本发明的目的是克服现有技术的缺陷,提供一种安全的金融终端的固件烧写方法及金融终端。\n[0007] 本发明是通过下述技术方案实现的:\n[0008] 一方面,本发明提供一种安全的金融终端的固件烧写方法,具体包括:\n[0009] 步骤S1、金融终端接收上位机下发的指令,当接收到上位机下发的建立安全环境指令时,执行步骤S2;当接收到上位机下发的安全boot下载更新指令时,执行步骤S3;当接收到上位机下发的应用固件下载更新指令时,执行步骤S4;当接收到上位机下发的安全固件下载更新指令时,执行步骤S5;\n[0010] 步骤S2、所述金融终端启动安全检测功能,向上位机返回应答,返回步骤S1;\n[0011] 步骤S3、所述金融终端下载正式安全boot,将所述金融终端中的测试安全boot更新为所述正式安全boot,向上位机返回应答,返回步骤S1;\n[0012] 步骤S4、所述金融终端下载正式应用固件,将所述金融终端中的测试应用固件更新为所述正式应用固件,向上位机返回应答,返回步骤S1;\n[0013] 步骤S5、所述金融终端下载正式安全固件,将所述金融终端中的测试安全固件更新为所述正式安全固件,向上位机返回应答,返回步骤S1;\n[0014] 进一步地,所述步骤S1中还包括:当接收到上位机下发的启动侵入检测功能指令时,所述金融终端启动侵入检测功能,向上位机返回应答,返回步骤S1;当接收到上位机下发的获取侵入检测状态指令时,获取侵入检测状态,向上位机返回所述侵入检测状态,返回步骤S1;\n[0015] 所述步骤S2中还包括:所述金融终端初始化防穷举参数空间;\n[0016] 所述步骤S3中,所述金融终端下载正式安全boot之后还包括:校验所述正式安全boot,若校验通过则继续执行所述将所述金融终端中的安全boot更新为所述正式安全boot,若校验不通过则直接向上位机返回应答,返回步骤S1;\n[0017] 所述步骤S2中还包括:所述金融终端生成根密钥,用所述根密钥加密预存的应用固件更新密钥;所述步骤S4中,所述金融终端下载正式应用固件之后还包括:根据所述应用固件更新密钥校验所述正式应用固件,若校验通过则根据所述应用固件更新密钥继续执行所述将所述金融终端中的测试应用固件更新为所述正式应用固件,若校验不通过则直接向上位机返回应答,返回步骤S1;\n[0018] 所述步骤S2中还包括:所述金融终端生成根密钥,用所述根密钥加密预存的安全固件更新密钥;所述步骤S5中,所述金融终端下载正式安全固件之后还包括:根据所述安全固件更新密钥校验所述正式安全固件,若校验通过则根据所述安全固件更新密钥继续执行所述将所述金融终端中的测试安全固件更新为所述正式安全固件,若校验不通过则直接向上位机返回应答,返回步骤S1;\n[0019] 所述金融终端执行所述步骤S3之前还包括:所述金融终端检查安全环境建立标志是否被置位,若被置位则执行所述步骤S3,若未被置位则向上位机返回错误信息码,返回步骤S1;所述步骤S2中还包括:所述金融终端置位所述安全环境建立标志;所述金融终端执行所述步骤S4或步骤S5之前还包括:所述金融终端检查安全boot更新标志是否被置位,若被置位则执行所述步骤S4或步骤S5,若未被置位则向上位机返回错误信息码,返回步骤S1;所述步骤S3中还包括:所述金融终端置位所述安全boot更新标志。\n[0020] 另一方面,本发明提供一种金融终端,具体包括:通信模块、安全环境建立模块、存储模块、安全boot下载更新模块、应用固件下载更新模块和安全固件下载更新模块;\n[0021] 所述通信模块,用于接收上位机下发的建立安全环境指令、安全boot下载更新指令、应用固件下载更新指令和安全固件下载更新指令;\n[0022] 所述安全环境建立模块,用于当所述通信模块接收到上位机下发的建立安全环境指令时,启动安全检测功能;\n[0023] 所述存储模块,用于存储测试应用boot、测试应用固件、测试安全boot和测试安全固件;\n[0024] 所述安全boot下载更新模块,用于当所述通信模块接收到上位机下发的安全boot下载更新指令时,下载正式安全boot,用所述正式安全boot更新所述存储模块中的测试安全boot;\n[0025] 所述应用固件下载更新模块,用于当所述通信模块接收到上位机下发的应用固件下载更新指令时,下载正式应用固件,用所述正式应用固件更新所述存储模块中的测试应用固件;\n[0026] 所述安全固件下载更新模块,用于当所述通信模块接收到上位机下发的安全固件下载更新指令时,下载正式安全固件,用所述正式安全固件更新所述存储模块中的测试安全固件;\n[0027] 所述通信模块还用于当所述安全环境建立模块、所述安全boot下载更新模块、所述应用固件下载更新模块和所述安全固件下载更新模块运行结束时,向上位机返回应答;\n[0028] 进一步地,上述金融终端中还包括侵入检测模块,用于当所述通信模块接收到上位机下发的启动侵入检测功能指令时,启动侵入检测功能,以及用于当所述通信模块接收到上位机下发的获取侵入检测状态指令时,获取侵入检测状态;相应地,所述通信模块还用于接收上位机下发的启动侵入检测功能指令和获取侵入检测状态指令,以及当所述侵入检测模块运行结束时,向上位机返回应答或返回侵入检测状态;\n[0029] 所述安全环境建立模块还用于当所述通信模块接收到上位机下发的建立安全环境指令时,初始化防穷举参数空间;\n[0030] 上述金融终端还包括安全boot校验模块,用于校验所述安全boot下载更新模块下载的正式安全boot;相应地,所述安全boot下载更新模块具体用于当所述通信模块接收到上位机下发的安全boot下载更新指令时,下载正式安全boot,以及当所述安全boot校验模块校验通过时,用所述正式安全boot更新所述存储模块中的测试安全boot;\n[0031] 上述金融终端还包括应用固件校验模块,用于根据所述存储模块中的应用固件更新密钥校验所述应用固件下载更新模块下载的正式应用固件;相应地,所述存储模块还用于存储应用固件更新密钥;所述安全环境建立模块还用于当所述通信模块接收到上位机下发的建立安全环境指令时,生成根密钥,用所述根密钥加密所述存储模块中的应用固件更新密钥;所述应用固件下载更新模块具体用于当所述通信模块接收到上位机下发的应用固件下载更新指令时,下载正式应用固件,以及当所述应用固件校验模块校验通过后,用所述正式应用固件更新所述存储模块中的测试应用固件;\n[0032] 上述金融终端还包括安全固件校验模块,用于根据所述存储模块中的安全固件更新密钥校验所述安全固件下载更新模块下载的正式安全固件;相应地,所述存储模块还用于存储安全固件更新密钥;所述安全环境建立模块还用于当所述通信模块接收到上位机下发的建立安全环境指令时,生成根密钥,用所述根密钥加密所述存储模块中的安全固件更新密钥;所述安全固件下载更新模块具体用于当所述通信模块接收到上位机下发的安全固件下载更新指令时,下载正式安全固件,以及当所述安全固件校验模块校验通过后,用所述正式安全固件更新所述存储模块中的测试安全固件;\n[0033] 所述存储模块还用于存储安全环境建立标志和安全boot更新标志,所述安全环境建立标志和所述安全boot更新标志的初始状态为未被置位,相应地:\n[0034] 所述安全环境建立模块还用于置位所述存储模块中的安全环境建立标志;\n[0035] 所述安全boot下载更新模块具体用于:当所述通信模块接收到上位机下发的安全boot下载更新指令时,检查所述存储模块中的安全环境建立标志是否被置位,以及当所述安全环境建立标志被置位时,下载正式安全boot,用所述正式安全boot更新所述存储模块中的测试安全boot,置位所述存储模块中的安全boot更新标志;\n[0036] 所述应用固件下载更新模块具体用于:当所述通信模块接收到上位机下发的应用固件下载更新指令时,检查所述存储模块中的安全boot更新标志是否被置位,以及当所述安全boot更新标志被置位时,下载正式应用固件,用所述正式应用固件更新所述存储模块中的测试应用固件;\n[0037] 所述安全固件下载更新模块具体用于:当所述通信模块接收到上位机下发的安全固件下载更新指令时,检查所述存储模块中的安全boot更新标志是否被置位,以及当所述安全boot更新标志被置位时,下载正式安全固件,用所述正式安全固件更新所述存储模块中的测试安全固件;\n[0038] 所述通信模块还用于:当所述安全boot下载更新模块检查所述存储模块中的安全环境建立标志未被置位时,当所述应用固件下载更新模块检查所述存储模块中的安全boot更新标志未被置位时,以及当所述安全固件下载更新模块检查所述存储模块中的安全boot更新标志未被置位时,向上位机返回错误消息码。\n[0039] 本发明方法的有益效果在于:使用本发明提供的方法可以避免现有的金融终端的固件烧写方法的安全隐患,从而提高金融终端产品的安全性。\n附图说明\n[0040] 为了更清楚的说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。\n[0041] 图1为本发明实施例1提供的一种安全的金融终端的固件烧写方法流程图;\n[0042] 图2为本发明实施例1提供的下载正式安全boot以及用正式安全boot替换测试安全boot的流程图;\n[0043] 图3为本发明实施例1提供的下载正式应用固件的流程图;\n[0044] 图4为本发明实施例1提供的用正式应用固件替换测试应用固件的流程图;\n[0045] 图5为本发明实施例1提供的下载正式安全固件的流程图;\n[0046] 图6为本发明实施例1提供的用正式安全固件替换测试安全固件的流程图;\n[0047] 图7为本发明实施例2提供的金融终端的方框图。\n具体实施方式\n[0048] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。\n[0049] 本发明中的金融终端中包含应用处理器和安全处理器;\n[0050] 应用处理器中烧录有应用boot和应用固件;安全处理器中烧录有安全boot和安全固件;\n[0051] 当金融终端上电后,应用处理器和安全处理器分别启动,应用处理器首先运行应用boot,当应用boot运行结束时跳转至应用固件首地址,运行应用固件,直至金融终端下电;安全处理器首先运行安全boot,当安全boot运行结束时跳转至安全固件首地址,运行安全固件,直至金融终端下电;\n[0052] 应用固件包括测试应用固件和正式应用固件,安全boot包括测试安全boot和正式安全boot,安全固件包括测试安全固件和正式安全固件;测试应用固件和测试安全固件中包含硬件测试程序和安全环境构建程序,相应地,正式应用固件和正式安全固件中不包含硬件测试程序和安全环境构建程序;测试安全boot中不包含金融终端自检的程序,相应地,正式安全boot中包含金融终端自检的程序,且本发明中的正式安全boot与现有技术中金融终端安全处理器中烧录的安全boot相比,减少了终端自检的条件判断,从而可以防止攻击者伪造终端自检的条件,躲避终端自检;\n[0053] 本发明中,首先向应用处理器中烧录应用boot和测试应用固件,向安全处理器中烧录测试安全boot和测试安全固件,待完成硬件测试和安全环境建立之后,逐步将测试安全boot更新为正式安全boot,将测试应用固件和测试安全固件分别更新为正式应用固件和正式安全固件。\n[0054] 实施例1\n[0055] 本实施例提供一种安全的金融终端的固件烧写方法,如图1所示,具体包括:\n[0056] 步骤S1、金融终端接收上位机下发的指令,当接收到上位机下发的建立安全环境指令时执行步骤S2,当接收到上位机下发的安全boot下载更新指令时执行步骤S3,当接收到上位机下发的应用固件下载更新指令时执行步骤S4,当接收到上位机下发的安全固件下载更新指令时执行步骤S5;\n[0057] 具体地,本实施例中,上位机将要发送的指令封装成标准CCID通信指令下发给金融终端。\n[0058] 步骤S2、金融终端启动安全检测功能,向上位机返回应答,返回步骤S1;\n[0059] 本实施例中,安全检测功能包括:侵入检测功能、温度检测功能和电压检测功能等。\n[0060] 本实施例中,步骤S2中还可以包括:初始化防穷举参数空间。\n[0061] 本实施例中,金融终端将应答数据封装成CCID通信协议层数据后返回给上位机。\n[0062] 进一步地,本实施例中,金融终端执行步骤S2之前还包括:判断安全环境是否已建立,是则执行步骤S2,否则提示错误,返回步骤S1;\n[0063] 本实施例中,步骤S2中还包括生成根密钥,用根密钥加密预设的应用固件更新密钥和安全固件更新密钥;判断安全环境是否已建立的方法可以具体为:对根密钥存储区中的数据进行SHA-256运算,判断运算结果的前4个字节是否与BPK RAM区中的数据相同,若相同则安全环境已建立,否则安全环境未建立,其中所述根密钥存储区和BPK RAM区中的初始数据均为0;\n[0064] 相应地,步骤S2中,金融终端产生根密钥之后,将根密钥保存到根密钥存储区,并对根密钥进行SHA-256运算,将运算结果的前4个字节保存到BPK RAM区。\n[0065] 步骤S3、金融终端下载正式安全boot,用正式安全boot替换金融终端中的测试安全boot,向上位机返回应答,返回步骤S1;\n[0066] 步骤S4、金融终端下载正式应用固件,用正式应用固件替换金融终端中的测试应用固件,向上位机返回应答,返回步骤S1;\n[0067] 步骤S5、金融终端下载正式安全固件,用正式安全固件替换金融终端中的测试安全固件,向上位机返回应答,返回步骤S1。\n[0068] 进一步地,步骤S1中还包括,当接收到上位机下发的启动侵入检测指令时执行步骤S6,当接收到上位机下发的获取侵入检测状态指令时执行步骤S7:\n[0069] 步骤S6、金融终端启动侵入检测功能,向上位机返回应答,返回步骤S1;\n[0070] 具体地,金融终端通过设置相应寄存器和传感器启动侵入检测功能。\n[0071] 步骤S7、金融终端检查侵入检测状态,向上位机返回侵入检测状态,返回步骤S1;\n[0072] 具体地,金融终端通过检查相应寄存器和传感器获取侵入检测状态。\n[0073] 进一步地,步骤S1中还包括,当金融终端接收到上位机下发的硬件测试指令时执行步骤S8:\n[0074] 步骤S8、根据指令内容测试金融终端的硬件功能,向上位机返回应答,返回步骤S1。\n[0075] 更进一步地,上述方法中还可以包括固件烧写流程的控制机制,具体包括:\n[0076] 金融终端执行步骤S3之前还包括:金融终端检查安全环境建立标志是否被置位,若被置位则执行步骤S3,若未被置位则向上位机返回错误信息码,返回步骤S1;\n[0077] 步骤S2中还包括:金融终端置位安全环境建立标志;\n[0078] 金融终端执行步骤S4之前还包括:金融终端检查安全boot更新标志是否被置位,若被置位则执行步骤S4,若未被置位则向上位机返回错误信息码,返回步骤S1;\n[0079] 金融终端执行步骤S5之前还包括:金融终端检查安全boot更新标志是否被置位,若被置位则执行步骤S5,若未被置位则向上位机返回错误信息码,返回步骤S1;\n[0080] 步骤S3中还包括:金融终端置位安全boot更新标志;\n[0081] 金融终端执行步骤S2之前还包括:金融终端检查侵入检测启动标志是否被置位,若被置位则执行步骤S2,若未被置位则向上位机返回错误消息码,返回步骤S1;\n[0082] 金融终端执行步骤S7之前还包括:金融终端检查侵入检测启动标志是否被置位,若被置位则执行步骤S7,若未被置位则向上位机返回错误消息码,返回步骤S1;\n[0083] 步骤S6中,金融终端启动侵入检测功能后还包括:金融终端检查侵入检测状态,根据侵入检测状态判断是否存在侵入事件,若存在侵入事件则向上位机返回错误状态,返回步骤S1,若不存在侵入事件则置位侵入检测启动标志,向上位机返回应答,返回步骤S1;\n[0084] 金融终端执行步骤S6之前还包括:金融终端检查硬件功能检测标志是否被置位,若被置位则执行步骤S6,若未被置位则向上位机返回错误消息码,返回步骤S1;\n[0085] 步骤S8中,金融终端根据指令内容测试金融终端的硬件功能后还包括:金融终端判断是否测试完全部待测硬件功能,若全部测试完则置位硬件功能检测标志,向上位机返回应答,返回步骤S1;否则直接向上位机返回应答,返回步骤S1。\n[0086] 本实施例中,金融终端中包含应用处理器和安全处理器,应用boot指在应用处理器中运行的boot程序,测试应用固件指在应用处理器中运行的包含硬件测试相关程序和安全环境建立相关程序的固件程序;正式应用固件指在应用处理器中运行的不包含硬件测试相关程序和安全环境建立相关程序的固件程序;测试安全固件指在安全处理器中运行的包含硬件测试相关程序和安全环境建立相关程序的固件程序;正式安全固件指在安全处理器中运行的不包含硬件测试相关程序和安全环境建立相关程序的固件程序;测试安全boot指在安全处理器中运行的不包含检测安全环境是否建立的相关程序的boot程序,正式安全boot指在安全处理器中运行的包含检测安全环境是否建立的相关程序的boot程序。\n[0087] 本实施例中,根据指令内容测试金融终端的硬件功能,向上位机返回应答,具体包括:\n[0088] 应用处理器接收到上位机下发的硬件测试指令后判断硬件测试指令的类型;\n[0089] 若硬件测试指令为语音播放指令,则应用处理器控制语音芯片播放声音,组织应答数据,并对应答数据封装CCID协议层数据后返回给上位机;\n[0090] 若硬件测试指令为获取扫码数据指令,则应用处理器根据获取扫码数据指令获取扫码枪扫描数据,组织应答数据,并将应答数据封装成CCID协议层数据后返回给上位机;\n[0091] 否则,应用处理器根据硬件测试指令向安全处理器下发具体测试指令;安全处理器根据具体测试指令测试相应硬件功能,并向应用处理器返回指令应答;应用处理器根据安全处理器返回的指令应答组织应答数据,对应答数据封装CCID协议层数据后返回给上位机。\n[0092] 具体测试指令包括:LCD显示指令、获取键值指令、蜂鸣器控制指令、IC卡管理指令和磁条卡管理指令等;\n[0093] 本实施例中,应用处理器通过硬件测试指令的数据域的第二个字节判断硬件测试指令的类型;例如,当硬件测试指令的数据域的第二个字节为15时,硬件测试指令具体为语音播放指令;当硬件测试指令的数据域的第二个字节为16时,硬件测试指令具体为获取扫码数据指令;当硬件测试指令的数据域的第二个字节为02时,应用处理器向安全处理器下发LCD显示指令;当硬件测试指令的数据域的第二个字节为01时,应用处理器向安全处理器下发获取键值指令;当硬件测试指令的数据域的第二个字节为05时,应用处理器向安全处理器下发蜂鸣器控制指令;当硬件测试指令的数据域的第二个字节为03时,应用处理器向安全处理器下发IC卡管理指令;当硬件测试指令的数据域的第二个字节为0F时,应用处理器向安全处理器下发磁条卡管理指令。\n[0094] 进一步地,安全处理器根据具体测试指令测试相应硬件功能,并向应用处理器返回指令应答,可以具体包括:\n[0095] 步骤1-1、安全处理器解析接收到的具体测试指令,若为LCD显示指令则执行步骤\n1-2,若为获取键值指令则执行步骤1-3,若为蜂鸣器控制指令则执行步骤1-4,若为IC卡管理指令则执行步骤1-5,若为磁条卡管理指令则执行步骤1-6;\n[0096] 步骤1-2、安全处理器根据LCD显示指令控制LCD显示相应文字和图形,向应用处理器返回LCD显示指令应答;\n[0097] 步骤1-3、安全处理器根据获取键值指令在指定时间内获取键盘输入键值,向应用处理器返回获取键值指令应答;\n[0098] 步骤1-4、安全处理器控制蜂鸣器鸣响,向应用处理器返回蜂鸣器控制指令应答;\n[0099] 步骤1-5、安全处理器在指定时间内进行IC卡轮询,根据IC卡管理指令与IC卡进行通信,向应用处理器返回IC卡管理指令应答;\n[0100] 步骤1-6、安全处理器在指定时间内获取磁条卡刷卡数据,向应用处理器返回磁条卡管理指令应答。\n[0101] 本实施例中,金融终端启动侵入检测功能,向上位机返回应答,具体包括:\n[0102] 步骤201、应用处理器接收到上位机下发的启动侵入检测指令后向安全处理器发送侵入检测启动指令;\n[0103] 步骤202、安全处理器启动侵入检测功能;\n[0104] 具体地,安全处理器通过设置相应寄存器和传感器启动侵入检测功能。\n[0105] 步骤203、安全处理器向应用处理器返回侵入检测启动指令应答;\n[0106] 步骤204、应用处理器根据安全处理器返回的侵入检测启动指令应答组织应答数据;\n[0107] 步骤205、应用处理器对应答数据封装CCID通信协议层数据后返回给上位机。\n[0108] 本实施例中,金融终端检查侵入检测状态,向上位机返回应答,具体包括:\n[0109] 步骤301、应用处理器接收到上位机下发的获取侵入检测状态指令后向安全处理器发送侵入检测状态获取指令;\n[0110] 步骤302、安全处理器获取侵入检测状态;\n[0111] 具体地,安全处理器通过检查相应寄存器和传感器获取侵入检测状态。\n[0112] 步骤303、安全处理器向应用处理器返回侵入检测状态获取指令应答;\n[0113] 步骤304、应用处理器根据安全处理器返回的侵入检测状态获取指令应答组织应答数据;\n[0114] 步骤305、应用处理器对应答数据封装CCID通信协议层数据后返回给上位机。\n[0115] 本实施例中,步骤S2可以具体包括:\n[0116] 步骤401、应用处理器接收到上位机下发的建立安全环境指令后向安全处理器下发安全环境建立指令;\n[0117] 步骤402、安全处理器产生根密钥,使用根密钥分别将应用固件更新密钥和安全固件更新密钥加密后存储,初始化防穷举参数空间;\n[0118] 本实施例中,根密钥具体为安全处理器生成的一个随机数;使用根密钥分别将应用固件更新密钥和安全固件更新密钥加密后存储,具体为:使用所述随机数分别对应用固件更新密钥和安全固件更新密钥进行加密,存储加密得到的应用固件更新密钥密文和安全固件更新密钥密文。\n[0119] 步骤403、安全处理器向应用处理器返回建立安全环境指令应答;\n[0120] 步骤404、应用处理器根据安全处理器返回的建立安全环境指令应答组织应答数据;\n[0121] 步骤405、应用处理器对应答数据封装CCID通信协议层数据后返回给上位机。\n[0122] 如图2所示,本实施例中,金融终端下载正式安全boot,用正式安全boot替换金融终端中的测试安全boot,向上位机返回应答,具体包括:\n[0123] 步骤501、应用处理器接收到上位机下发的安全boot下载更新指令时判断安全boot下载更新指令的类型,若为下载开始指令则执行步骤502,若为下载指令则执行步骤\n506,若为下载结束指令则执行步骤510;\n[0124] 步骤502、应用处理器向安全处理器发送安全boot下载开始指令;\n[0125] 本实施例中,应用处理器向安全处理器发送的安全boot下载开始指令中包含应用处理器从上位机下发的CCID通信指令中获取的安全boot校验和。\n[0126] 步骤503、安全处理器从安全boot下载开始指令中获取安全boot校验和,保存安全boot校验和到安全处理器的外部flash;\n[0127] 步骤504、安全处理器向应用处理器返回安全boot下载开始指令应答;\n[0128] 步骤505、应用处理器根据安全处理器返回的安全boot下载开始指令应答组织应答数据,对应答数据封装CCID通信协议层数据后返回给上位机,返回步骤501;\n[0129] 步骤506、应用处理器向安全处理器发送安全boot下载指令;\n[0130] 本实施例中,应用处理器向安全处理器发送的安全boot下载指令中包含应用处理器从上位机下发的CCID通信指令中获取的安全boot更新数据。\n[0131] 步骤507、安全处理器从安全boot下载指令中获取安全boot更新数据,保存安全boot更新数据到安全处理器的外部flash;\n[0132] 步骤508、安全处理器向应用处理器返回安全boot下载指令应答;\n[0133] 步骤509、应用处理器根据安全处理器返回的安全boot下载指令应答组织应答数据,对应答数据封装CCID通信协议层数据后返回给上位机,返回步骤501;\n[0134] 步骤510、应用处理器向安全处理器发送安全boot下载结束指令;\n[0135] 步骤511、安全处理器根据安全boot校验和对安全boot更新数据进行校验,若校验通过则执行步骤512,若校验未通过则执行步骤513;\n[0136] 本实施例中,上位机将安全boot更新数据分包后封装成若干包含安全boot更新数据包的标准CCID通信指令,依次下发给应用处理器,相应地,应用处理器接收到每条包含安全boot更新数据包的标准CCID通信指令时,向安全处理器发送一条包含相应安全boot更新数据包的安全boot下载指令,安全处理器获取安全boot下载指令中的安全boot更新数据包,将获取到的安全boot更新数据包顺序存入安全处理器的外部flash,更新安全boot更新数据校验和为已接收到的安全boot更新数据的校验和,向应用处理器返回安全boot下载指令应答;\n[0137] 当安全处理器接收到应用处理器发送的安全boot下载结束指令时,判断安全boot更新数据校验和与安全处理器外部flash中存储的安全boot校验和是否相同,是则安全boot更新数据校验通过,否则安全boot更新数据校验未通过。\n[0138] 例如,安全boot更新数据为64k字节,上位机对安全boot更新数据分包得到64个1k字节的安全boot更新数据包,以此封装成64条标准CCID通信指令依次下发给应用处理器。\n[0139] 步骤512、安全处理器将安全处理器的外部flash中存储的安全boot更新数据存储到安全处理器的内部flash的boot存储地址,擦除安全处理器的外部flash中存储的安全boot校验和以及安全boot更新数据,执行步骤514;\n[0140] 本实施例中,安全处理器依序从安全处理器的外部flash中读取预设长度的安全boot更新数据,顺序存储到安全处理器的内部flash的boot存储地址。\n[0141] 例如,预设长度为2k字节。\n[0142] 步骤513、安全处理器擦除安全处理器的外部flash中存储的安全boot校验和以及安全boot更新数据,执行步骤514;\n[0143] 步骤514、安全处理器向应用处理器返回安全boot下载结束指令应答;\n[0144] 步骤515、应用处理器根据安全处理器返回的安全boot下载结束指令应答组织应答数据,对应答数据封装CCID协议层数据后返回给上位机。\n[0145] 参见图3,本实施例中,金融终端下载正式应用固件,具体包括:\n[0146] 步骤601、应用处理器接收到上位机下发的应用固件下载更新指令后判断应用固件下载更新指令的类型,若为下载开始指令则执行步骤602,若为下载指令则执行步骤606,若为下载结束指令则执行步骤610;\n[0147] 步骤602、应用处理器向安全处理器发送应用固件下载开始指令;\n[0148] 本实施例中,应用处理器向安全处理器发送的应用固件下载开始指令中包含应用处理器从上位机下发的CCID通信指令中获取的应用固件下载更新头文件。本实施例中,应用固件下载更新头文件中包含应用固件下载更新文件的信息和签名数据,其中,应用固件下载更新文件的信息包括应用固件下载更新文件的名称和/或版本号和/或加密模式和/或校验模式和/或更新地址空间和/或地址类型和/或文件存储目的地址和/或文件长度等。\n[0149] 步骤603、安全处理器从应用固件下载开始指令中获取应用固件下载更新头文件,并将应用固件下载更新头文件存储到安全处理器的外部flash;\n[0150] 步骤604、安全处理器向应用处理器返回应用固件下载开始指令应答;\n[0151] 步骤605、应用处理器根据安全处理器返回的应用固件下载开始指令应答组织应答数据,对应答数据封装CCID通信协议层数据后返回给上位机,返回步骤601;\n[0152] 步骤606、应用处理器向安全处理器下发应用固件下载指令;\n[0153] 本实施例中,应用处理器向安全处理器下发的应用固件下载指令中包含应用处理器从上位机下发的CCID通信指令中获取的应用固件下载更新文件。\n[0154] 步骤607、安全处理器从应用固件下载指令中获取应用固件下载更新文件,并将应用固件下载更新文件存储到安全处理器的外部flash;\n[0155] 本实施例中,应用固件下载更新文件中包含正式应用固件和正式应用固件摘要的签名值,或者包含对正式应用固件和正式应用固件摘要的签名值进行加密得到的密文。\n[0156] 步骤608、安全处理器向应用处理器返回应用固件下载指令应答;\n[0157] 本实施例中,上位机将应用固件下载更新文件分包后封装成若干包含应用固件下载更新文件数据包的标准CCID通信指令,依次下发给应用处理器,相应地,应用处理器接收到每条包含应用固件下载更新文件数据包的标准CCID通信指令时,向安全处理器下发一条包含相应应用固件下载更新文件数据包的应用固件文件下载指令,安全处理器获取应用固件文件下载指令中的应用固件下载更新文件数据包,将获取到的应用固件下载更新文件数据包顺序存入安全处理器的外部flash,向应用处理器返回应用固件文件下载指令应答。\n[0158] 步骤609、应用处理器根据安全处理器返回的应用固件下载指令应答组织应答数据,对应答数据封装CCID通信协议层数据后返回给上位机,返回步骤601;\n[0159] 步骤610、应用处理器向安全处理器下发应用固件下载结束指令;\n[0160] 步骤611、安全处理器对应用固件下载更新文件进行校验,若校验通过则执行步骤\n612,若校验未通过则执行步骤613;\n[0161] 本实施例中,当应用固件下载更新文件中包含正式应用固件和正式应用固件摘要的签名值时,安全处理器对应用固件下载更新文件进行校验具体包括:安全处理器根据应用固件下载更新头文件包含的应用固件下载更新文件的信息中的校验模式信息选择相应哈希算法(或者安全处理器直接选择预设哈希算法),根据选择的哈希算法对安全处理器的外部flash中存储的应用固件下载更新文件进行哈希运算,使用根密钥解密应用固件更新密钥密文,得到应用固件更新密钥明文,根据应用固件更新密钥明文对应用固件下载更新头文件包含的签名数据进行验签,得到应用固件下载更新文件摘要,判断验签得到的应用固件下载更新文件摘要与对安全处理器的外部flash中存储的应用固件下载更新文件进行哈希运算得到的摘要是否一致,是则校验通过,否则校验未通过;\n[0162] 本实施例中,当应用固件下载更新文件中包含对正式应用固件和正式应用固件摘要的签名值加密得到的密文时,安全处理器对应用固件下载更新文件进行校验具体包括:\n安全处理器根据应用固件下载更新头文件包含的应用固件下载更新文件的信息中的校验模式信息选择相应哈希算法(或者安全处理器直接选择预设哈希算法),根据选择的哈希算法对安全处理器的外部flash中存储的应用固件下载更新文件进行哈希运算,使用根密钥解密应用固件更新密钥密文,得到应用固件更新密钥明文,根据应用固件更新密钥明文对应用固件下载更新头文件包含的签名数据进行验签,得到应用固件下载更新文件摘要和应用固件下载密钥,判断验签得到的应用固件下载更新文件摘要与对安全处理器的外部flash中存储的应用固件下载更新文件进行哈希运算得到的摘要是否一致,是则校验通过,否则校验未通过。\n[0163] 步骤612、安全处理器向安全处理器的外部flash中写入应用固件更新标志,执行步骤614;\n[0164] 本实施例中,步骤612中还可以包括安全处理器控制LCD显示重新开机提示。\n[0165] 步骤613、安全处理器擦除安全处理器的外部flash中存储的应用固件下载更新头文件和应用固件下载更新文件,执行步骤614;\n[0166] 本实施例中,步骤613中还可以包括安全处理器控制LCD显示相应错误提示。\n[0167] 步骤614、安全处理器向应用处理器返回应用固件下载结束指令应答;\n[0168] 步骤615、应用处理器根据安全处理器返回的应用固件下载结束指令应答组织应答数据,对应答数据封装CCID通信协议层数据后返回给上位机。\n[0169] 参见图4,本实施例中,金融终端用正式应用固件替换金融终端中的测试应用固件,具体包括:\n[0170] 步骤701、应用处理器擦除应用处理器的内部flash中的测试应用固件;\n[0171] 具体地,应用处理器擦除应用处理器的内部flash的固件存储地址中的数据。\n[0172] 步骤702、应用处理器向安全处理器发送获取应用固件下载更新头文件指令;\n[0173] 步骤703、安全处理器读取安全处理器的外部flash中存储的应用固件下载更新头文件;\n[0174] 步骤704、安全处理器向应用处理器返回应用固件下载更新头文件;\n[0175] 步骤705、应用处理器根据应用固件下载更新头文件中的文件长度向安全处理器发送获取正式应用固件及其摘要的签名值指令;\n[0176] 步骤706、安全处理器根据安全处理器的外部flash中存储的应用固件下载更新文件获取正式应用固件及其摘要的签名值;\n[0177] 本实施例中,当应用固件下载更新文件中包含正式应用固件和正式应用固件摘要的签名值时,步骤706具体包括:安全处理器读取安全处理器的外部flash中存储的应用固件下载更新文件得到正式应用固件及其摘要的签名值。\n[0178] 本实施例中,当应用固件下载更新文件中包含对正式应用固件和正式应用固件摘要的签名值加密得到的密文时,步骤706具体包括:安全处理器使用根密钥解密应用固件更新密钥密文,得到应用固件更新密钥明文,使用应用固件更新密钥明文对应用固件下载更新头文件包含的签名数据进行验签,从验签结果中获取应用固件下载密钥,根据应用固件下载更新头文件包含的应用固件下载更新文件的信息中的加密模式信息选择相应加解密算法(或者直接选择预设加解密算法),根据选择的加解密算法使用应用固件下载密钥对安全处理器的外部flash中存储的应用固件下载更新文件解密,得到正式应用固件及其摘要的签名值。\n[0179] 步骤707、安全处理器向应用处理器返回正式应用固件及其摘要的签名值;\n[0180] 步骤708、应用处理器将安全处理器返回的正式应用固件及其摘要的签名值写入应用处理器的内部flash;\n[0181] 具体地,应用处理器将安全处理器返回的正式应用固件及其摘要的签名值写入应用处理器的内部flash的固件存储地址。\n[0182] 本实施例中,步骤705~步骤708具体包括:应用处理器向安全处理器依次发送若干获取更新数据指令,直至应用处理器根据之前获取到的应用固件下载更新头文件包含的应用下载更新文件的信息中的文件长度判断已获取到全部更新数据;相应地,安全处理器接收到每条获取更新数据指令时,顺序获取预设长度的更新数据返回给应用处理器,应用处理器将当前预设长度的更新数据顺序写入应用处理器内部flash的固件存储地址。\n[0183] 步骤709、应用处理器向安全处理器发送应用固件更新完成指令;\n[0184] 步骤710、安全处理器擦除安全处理器的外部flash中存储的应用固件下载更新头文件、应用固件下载更新文件以及应用固件更新标志;\n[0185] 步骤711、安全处理器向应用处理器返回应用固件更新完成指令应答。\n[0186] 本实施例中,步骤711之后,应用处理器接收到安全处理器返回的应用固件更新完成指令应答时还包括:应用处理器对应用处理器的内部flash中存储的正式应用固件进行哈希运算,将应用处理器的内部flash中存储的正式应用固件摘要的签名值发送给安全处理器进行验签;安全处理器对应用处理器发送的正式应用固件摘要的签名值进行验签,将验签结果返回给应用处理器;应用处理器判断哈希运算结果和安全处理器返回的验签结果是否一致,是则运行正式应用固件,否则提示错误。\n[0187] 参见图5,本实施例中,金融终端下载正式安全固件,具体包括:\n[0188] 步骤801、应用处理器接收到上位机下发的安全固件下载更新指令后判断安全固件下载更新指令的类型,若为下载开始指令则执行步骤802,若为下载指令则执行步骤806,若为下载结束指令则执行步骤810;\n[0189] 步骤802、应用处理器向安全处理器发送安全固件下载开始指令;\n[0190] 本实施例中,应用处理器向安全处理器发送的安全固件下载开始指令中包含应用处理器从上位机下发的CCID通信指令中获取的安全固件下载更新头文件。本实施例中,安全固件下载更新头文件中包含安全固件下载更新文件的信息和签名数据,其中,安全固件下载更新文件的信息包括安全固件下载更新文件的名称和/或版本号和/或加密模式和/或校验模式和/或更新地址空间和/或地址类型和/或文件存储目的地址和/或文件长度等信息。\n[0191] 步骤803、安全处理器从安全固件下载开始指令中获取安全固件下载更新头文件,并将安全固件下载更新头文件存储到安全处理器的外部flash;\n[0192] 步骤804、安全处理器向应用处理器返回安全固件下载开始指令应答;\n[0193] 步骤805、应用处理器根据安全处理器返回的安全固件下载开始指令应答组织应答数据,对应答数据封装CCID通信协议层数据后返回给上位机,返回步骤801;\n[0194] 步骤806、应用处理器向安全处理器下发安全固件下载指令;\n[0195] 本实施例中,应用处理器向安全处理器下发的安全固件下载指令中包含应用处理器从上位机下发的CCID通信指令中获取的安全固件下载更新文件。\n[0196] 步骤807、安全处理器从安全固件下载指令中获取安全固件下载更新文件,并将安全固件下载更新文件存储到安全处理器的外部flash;\n[0197] 本实施例中,安全固件下载更新文件中包含正式安全固件和正式安全固件摘要的签名值,或者包含对正式安全固件和正式安全固件摘要的签名值进行加密得到的密文。\n[0198] 步骤808、安全处理器向应用处理器返回安全固件下载指令应答;\n[0199] 本实施例中,上位机将安全固件下载更新文件分包后封装成若干包含安全固件下载更新文件数据包的标准CCID通信指令,依次下发给应用处理器,相应地,应用处理器接收到每条包含安全固件下载更新文件数据包的标准CCID通信指令时,向安全处理器下发一条包含相应安全固件下载更新文件数据包的安全固件文件下载指令,安全处理器获取安全固件文件下载指令中的安全固件下载更新文件数据包,将获取到的安全固件下载更新文件数据包顺序存入安全处理器的外部flash,向应用处理器返回安全固件文件下载指令应答。\n[0200] 步骤809、应用处理器根据安全处理器返回的安全固件下载指令应答组织应答数据,对应答数据封装CCID通信协议层数据后返回给上位机,返回步骤801;\n[0201] 步骤810、应用处理器向安全处理器下发安全固件下载结束指令;\n[0202] 步骤811、安全处理器对安全固件下载更新文件进行校验,若校验通过则执行步骤\n812,若校验未通过则执行步骤813;\n[0203] 本实施例中,当安全固件下载更新文件中包含正式安全固件和正式安全固件摘要的签名值时,安全处理器对安全固件下载更新文件进行校验具体包括:安全处理器根据安全固件下载更新头文件包含的安全固件下载更新文件的信息中的校验模式信息选择相应哈希算法(或者安全处理器直接选择预设哈希算法),根据选择的哈希算法对安全处理器的外部flash中存储的安全固件下载更新文件进行哈希运算,使用根密钥解密安全固件更新密钥密文,得到安全固件更新密钥明文,根据安全固件更新密钥明文对安全固件下载更新头文件包含的签名数据进行验签,得到安全固件下载更新文件摘要,判断验签得到的安全固件下载更新文件摘要与对安全处理器的外部flash中存储的安全固件下载更新文件进行哈希运算得到的摘要是否一致,是则校验通过,否则校验未通过;\n[0204] 本实施例中,当安全固件下载更新文件中包含对正式安全固件和正式安全固件摘要的签名值加密得到的密文时,安全处理器对安全固件下载更新文件进行校验具体包括:\n安全处理器根据安全固件下载更新头文件包含的安全固件下载更新文件的信息中的校验模式信息选择相应哈希算法(或者安全处理器直接选择预设哈希算法),根据选择的哈希算法对安全处理器的外部flash中存储的安全固件下载更新文件进行哈希运算,使用根密钥解密安全固件更新密钥密文,得到安全固件更新密钥明文,根据安全固件更新密钥明文对安全固件下载更新头文件包含的签名数据进行验签,得到安全固件下载更新文件摘要和安全固件下载密钥,判断验签得到的安全固件下载更新文件摘要与对安全处理器的外部flash中存储的安全固件下载更新文件进行哈希运算得到的摘要是否一致,是则校验通过,否则校验未通过。\n[0205] 步骤812、安全处理器向安全处理器的外部flash中写入安全固件更新标志,执行步骤814;\n[0206] 本实施例中,步骤812中还可以包括安全处理器控制LCD显示重新开机提示。\n[0207] 步骤813、安全处理器擦除安全处理器的外部flash中存储的安全固件下载更新头文件和安全固件下载更新文件,执行步骤814;\n[0208] 本实施例中,步骤813中还可以包括安全处理器控制LCD显示相应错误提示。\n[0209] 步骤814、安全处理器向应用处理器返回安全固件下载结束指令应答;\n[0210] 步骤815、应用处理器根据安全处理器返回的安全固件下载结束指令应答组织应答数据,对应答数据封装CCID通信协议层数据后返回给上位机。\n[0211] 参见图6,本实施例中,金融终端用正式安全固件替换金融终端中的测试安全固件,具体包括:\n[0212] 步骤901、安全处理器校验安全处理器的外部flash中存储的安全固件下载更新文件,若校验通过则执行步骤903,若校验未通过则执行步骤902;\n[0213] 本实施例中,当安全固件下载更新文件中包含正式安全固件和正式安全固件摘要的签名值时,安全处理器对安全固件下载更新文件进行校验具体包括:安全处理器根据安全固件下载更新头文件包含的安全固件下载更新文件的信息中的校验模式信息选择相应哈希算法(或者安全处理器直接选择预设哈希算法),根据选择的哈希算法对安全处理器的外部flash中存储的安全固件下载更新文件进行哈希运算,使用根密钥解密安全固件更新密钥密文,得到安全固件更新密钥明文,根据安全固件更新密钥明文对安全固件下载更新头文件包含的签名数据进行验签,得到安全固件下载更新文件摘要,判断验签得到的安全固件下载更新文件摘要与对安全处理器的外部flash中存储的安全固件下载更新文件进行哈希运算得到的摘要是否一致,是则校验通过,否则校验未通过;\n[0214] 本实施例中,当安全固件下载更新文件中包含对正式安全固件和正式安全固件摘要的签名值加密得到的密文时,安全处理器对安全固件下载更新文件进行校验具体包括:\n安全处理器根据安全固件下载更新头文件包含的安全固件下载更新文件的信息中的校验模式信息选择相应哈希算法(或者安全处理器直接选择预设哈希算法),根据选择的哈希算法对安全处理器的外部flash中存储的安全固件下载更新文件进行哈希运算,使用根密钥解密安全固件更新密钥密文,得到安全固件更新密钥明文,根据安全固件更新密钥明文对安全固件下载更新头文件包含的签名数据进行验签,得到安全固件下载更新文件摘要和安全固件下载密钥,判断验签得到的安全固件下载更新文件摘要与对安全处理器的外部flash中存储的安全固件下载更新文件进行哈希运算得到的摘要是否一致,是则校验通过,否则校验未通过。\n[0215] 步骤902、安全处理器擦除安全处理器的外部flash中存储的安全固件下载更新头文件、安全固件下载更新文件以及安全固件更新标志,提示错误,结束;\n[0216] 本实施例中,安全处理器提示错误可以具体为安全处理器控制LCD显示错误提示。\n[0217] 步骤903、安全处理器根据安全处理器的外部flash中存储的安全固件下载更新文件获取正式安全固件及其摘要的签名值;\n[0218] 本实施例中,当安全固件下载更新文件中包含正式应用固件和正式安全固件摘要的签名值时,步骤903具体包括:安全处理器读取安全处理器的外部flash中存储的安全固件下载更新文件得到正式安全固件及其摘要的签名值。\n[0219] 本实施例中,当安全固件下载更新文件中包含对正式安全固件和正式安全固件摘要的签名值加密得到的密文时,步骤903具体包括:安全处理器使用根密钥解密安全固件更新密钥密文,得到安全固件更新密钥明文,使用安全固件更新明文对安全固件下载更新头文件包含的签名数据进行验签,从验签结果中获取安全固件下载密钥,根据安全固件下载更新头文件包含的安全固件下载更新文件的信息中的加密模式信息选择相应加解密算法(或者直接选择预设加解密算法),根据选择的加解密算法使用安全固件下载密钥对安全处理器的外部flash中存储的安全固件下载更新文件解密,得到正式安全固件及其摘要的签名值。\n[0220] 步骤904、安全处理器将正式安全固件及其摘要的签名值写入安全处理器的内部flash;\n[0221] 具体地,安全处理器将正式安全固件及其摘要的签名值写入安全处理器的内部flash的固件存储地址。\n[0222] 本实施例中,步骤903~步骤904具体包括:安全处理器每次根据安全处理器的外部flash中存储的安全固件下载更新文件获取预设长度的更新数据,并将当前获取到的更新数据顺序存入安全处理器的内部flash的固件存储地址,直至获取到全部正式安全固件及其摘要的签名值。\n[0223] 步骤905、安全处理器擦除安全处理器的外部flash中存储的安全固件下载更新头文件、安全固件下载更新文件以及安全固件下载更新标志。\n[0224] 实施例2\n[0225] 本实施例提供一种金融终端,如图7所示,具体包括:通信模块11、安全环境建立模块12、存储模块13、安全boot下载更新模块14、应用固件下载更新模块15和安全固件下载更新模块16,上述模块的具体功能如下:\n[0226] 通信模块11,用于接收上位机下发的建立安全环境指令、安全boot下载更新指令、应用固件下载更新指令和安全固件下载更新指令;还用于当安全环境建立模块12、安全boot下载更新模块14、应用固件下载更新模块15、安全固件下载更新模块16运行结束时,向上位机返回应答;\n[0227] 安全环境建立模块12,用于当通信模块11接收到上位机下发的建立安全环境指令时,启动安全检测功能;\n[0228] 存储模块13,用于存储测试应用boot、测试应用固件、测试安全boot和测试安全固件;\n[0229] 安全boot下载更新模块14,用于当通信模块11接收到上位机下发的安全boot下载更新指令时,下载正式安全boot,用正式安全boot更新存储模块13中的测试安全boot;\n[0230] 应用固件下载更新模块15,用于当通信模块11接收到上位机下发的应用固件下载更新指令时,下载正式应用固件,用正式应用固件更新存储模块13中的测试应用固件;\n[0231] 安全固件下载更新模块16,用于当通信模块11接收到上位机下发的安全固件下载更新指令时,下载正式安全固件,用正式安全固件更新存储模块13中的测试安全固件。\n[0232] 本实施例中,金融终端中还可以包括侵入检测模块17,用于当通信模块11接收到上位机下发的启动侵入检测功能指令时,启动侵入检测功能,以及当通信模块11接收到上位机下发的获取侵入检测状态指令时,获取侵入检测状态;\n[0233] 相应地,通信模块11还用于接收上位机下发的启动侵入检测功能指令和获取侵入检测状态指令,以及当侵入检测模块17运行结束时,向上位机返回应答或侵入检测状态;\n[0234] 进一步地,安全环境建立模块12具体用于当通信模块11接收到上位机下发的建立安全环境指令时,启动温度检测功能和电压检测功能。\n[0235] 本实施例中,安全环境建立模块12还用于当所述通信模块11接收到上位机下发的建立安全环境指令时,初始化防穷举空间。\n[0236] 本实施例中,金融终端还包括安全boot校验模块18,用于校验安全boot下载更新模块14下载的正式安全boot;\n[0237] 相应地,安全boot下载更新模块14具体用于当通信模块11接收到上位机下发的安全boot下载更新指令时,下载正式安全boot;以及当安全boot校验模块18校验通过时,用正式安全boot更新所述存储模块13中的测试安全boot;\n[0238] 进一步地,安全boot下载更新模块14具体包括第一判断单元、第一获取单元、第一存储单元和第一更新单元,上述各单元的具体功能如下:\n[0239] 第一判断单元,用于当通信模块11接收到上位机下发的安全boot下载更新指令时,判断安全boot下载更新指令的类型;\n[0240] 第一获取单元,用于当第一判断单元判断安全boot下载更新指令为下载开始指令时,从下载开始指令中获取安全boot校验和;以及当第一判断单元判断安全boot下载更新指令为下载指令时,从下载指令中获取安全boot更新数据;\n[0241] 第一存储单元,用于存储第一获取单元获取到的安全boot校验和以及安全boot更新数据;\n[0242] 第一更新单元,用于当安全boot校验模块18校验通过时,用第一存储单元中的安全boot更新数据更新存储模块13中的测试安全boot;\n[0243] 安全boot校验模块18具体用于当第一判断单元判断安全boot下载更新指令为下载结束指令时,根据第一存储单元中的安全boot校验和校验第一存储单元中的安全boot更新数据;\n[0244] 更进一步地,安全boot下载更新模块14还包括清除单元,用于当第一更新单元运行结束时以及当安全boot校验模块18校验不通过时,清除第一存储单元中的安全boot更新数据和安全boot校验和。\n[0245] 本实施例中,金融终端还包括应用固件校验模块19,用于根据存储模块13中的应用固件更新密钥校验应用固件下载更新模块15下载的正式应用固件;相应地:\n[0246] 存储模块13还用于存储应用固件更新密钥;\n[0247] 安全环境建立模块12还用于当通信模块11接收到上位机下发的建立安全环境指令时,生成根密钥,用根密钥加密存储模块13中的应用固件更新密钥;\n[0248] 应用固件下载更新模块15具体用于当通信模块11接收到上位机下发的应用固件下载更新指令时,下载正式应用固件,以及当应用固件校验模块19校验通过后,用正式应用固件更新存储模块13中的测试应用固件。\n[0249] 进一步地,应用固件下载更新模块15具体包括第一下载子模块和第一更新子模块,其中:\n[0250] 第一下载子模块具体包括第二判断单元、第二获取单元和第二存储单元,其各单元具体功能如下:\n[0251] 第二判断单元,用于当通信模块11接收到上位机下发的应用固件下载更新指令时,判断应用固件下载更新指令的类型;\n[0252] 第二获取单元,用于当第二判断单元判断应用固件下载更新指令为下载开始指令时,获取下载开始指令中的应用固件下载更新头文件;以及当第二判断单元判断应用固件下载更新指令为下载指令时,获取下载指令中的应用固件下载更新文件;\n[0253] 第二存储单元,用于存储第二获取单元获取到的应用固件下载更新头文件和应用固件下载更新文件;\n[0254] 第一更新子模块用于当应用固件校验模块19校验通过后,更新存储模块13中的测试应用固件,具体包括擦除单元、第一提取单元和写入单元,其各单元具体功能如下:\n[0255] 擦除单元,用于当应用固件校验模块19校验通过后,擦除存储模块13中的测试应用固件;\n[0256] 第一提取单元,用于从第二存储单元中的应用固件下载更新文件中获取正式应用固件;\n[0257] 写入单元,用于将第一提取单元获取到的正式应用固件写入存储模块13;\n[0258] 本实施例中,第一提取单元还用于从第二存储单元中的应用固件下载更新文件中获取正式应用固件的摘要的签名值;写入单元还用于将第一提取单元获取到的所述正式应用固件的摘要的签名值写入所述存储模块13;\n[0259] 第一提取单元具体用于:使用根密钥对存储模块13中加密后的应用固件更新密钥解密,根据解密得到的应用固件更新密钥对第二存储单元中的应用固件下载更新头文件中包含的签名数据验签,根据验签得到的应用固件下载密钥解密第二存储单元中的应用固件下载更新文件,从解密结果中获取正式应用固件和正式应用固件摘要的签名值。\n[0260] 进一步地,应用固件校验模块19具体用于当第二判断单元判断应用固件下载更新指令为下载结束指令时,根据存储模块13中的应用固件更新密钥校验第二存储单元中的应用固件下载更新文件,以及当校验未通过时清除所述第二存储单元中的应用固件下载更新头文件和应用固件下载更新文件;\n[0261] 更进一步地,应用固件校验模块19具体包括第一哈希单元、第一验签单元和第一校验单元,各单元的具体功能如下:\n[0262] 第一哈希单元,用于当第二判断单元判断应用固件下载更新指令为下载结束指令时,对第二存储单元中的应用固件下载更新文件进行哈希运算;\n[0263] 第一验签单元,用于使用根密钥对存储模块13中加密后的应用固件更新密钥解密,使用解密得到的应用固件更新密钥对第二存储单元中的应用固件下载更新头文件中的签名数据验签;\n[0264] 第一校验单元,用于判断第一验签单元得到的验签结果与第一哈希单元得到的哈希结果是否相同,若相同则校验通过,若不相同则校验未通过,清除第二存储单元中的应用固件下载更新头文件和应用固件下载更新文件。\n[0265] 本实施例中,金融终端还包括安全固件校验模块20,用于根据存储模块13中的安全固件更新密钥校验安全固件下载更新模块16下载的正式安全固件;相应地:\n[0266] 存储模块13还用于存储安全固件更新密钥;\n[0267] 安全环境建立模块12还用于当通信模块11接收到上位机下发的建立安全环境指令时,生成根密钥,用根密钥加密存储模块13中的安全固件更新密钥;\n[0268] 安全固件下载更新模块16具体用于当通信模块11接收到上位机下发的安全固件下载更新指令时,下载正式安全固件,以及当安全固件校验模块20校验通过后,用正式安全固件更新存储模块13中的测试安全固件。\n[0269] 进一步地,安全固件下载更新模块16具体包括第二下载子模块和第二更新子模块,其中:\n[0270] 第二下载子模块具体包括第三判断单元、第三获取单元和第三存储单元,其各单元具体功能如下:\n[0271] 第三判断单元,用于当通信模块11接收到上位机下发的安全固件下载更新指令时,判断安全固件下载更新指令的类型;\n[0272] 第三获取单元,用于当第三判断单元判断安全固件下载更新指令为下载开始指令时,获取下载开始指令中的安全固件下载更新头文件;以及当第三判断单元判断安全固件下载更新指令为下载指令时,获取下载指令中的安全固件下载更新文件;\n[0273] 第三存储单元,用于存储第三获取单元获取到的安全固件下载更新头文件和安全固件下载更新文件;\n[0274] 第二更新子模块用于当安全固件校验模块20校验通过后,更新存储模块13中的测试安全固件,具体包括第二提取单元和第二更新单元,其各单元具体功能如下:\n[0275] 第二提取单元,用于当安全固件校验模块20校验通过后,从第三存储单元的安全固件下载更新文件中获取正式安全固件;\n[0276] 第二更新单元,用于用第二提取单元获取的正式安全固件更新存储模块13中的测试安全固件;\n[0277] 本实施例中,第二提取单元还用于从第三存储单元中的安全固件下载更新文件中获取正式安全固件的摘要的签名值;第二更新单元还用于将第二提取单元获取到的正式安全固件的摘要的签名值写入存储模块13;\n[0278] 第二提取单元具体用于:使用根密钥对存储模块13中加密后的安全固件更新密钥解密,根据解密得到的安全固件更新密钥对第三存储单元中的安全固件下载更新头文件中包含的签名数据验签,根据验签得到的安全固件下载密钥解密第三存储单元中的安全固件下载更新文件,从解密结果中获取正式安全固件和正式安全固件摘要的签名值。\n[0279] 进一步地,安全固件校验模块20,具体用于当第三判断单元判断安全固件下载更新指令为下载结束指令时,根据存储模块13中的安全固件更新密钥校验第三存储单元中的安全固件下载更新文件;\n[0280] 更进一步地,安全固件校验模块20具体包括第二哈希单元、第二验签单元和第二校验单元,各单元的具体功能如下:\n[0281] 第二哈希单元,用于当第三判断单元判断安全固件下载更新指令为下载结束指令时,对第三存储单元中的安全固件下载更新文件进行哈希运算;\n[0282] 第二验签单元,用于使用根密钥对存储模块13中加密后的安全固件更新密钥解密,使用解密得到的安全固件更新密钥对第三存储单元中的安全固件下载更新头文件中的签名数据验签;\n[0283] 第二校验单元,用于判断第二验签单元得到的验签结果与第二哈希单元得到的哈希结果是否相同,若相同则校验通过,若不相同则校验未通过。\n[0284] 以上所述的实施例只是本发明较优选的具体实施方式,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。
法律信息
- 2018-06-29
- 2016-01-13
实质审查的生效
IPC(主分类): G06F 9/445
专利申请号: 201510500802.3
申请日: 2015.08.14
- 2015-12-16
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2015-05-06
|
2013-08-26
| | |
2
| |
2010-06-30
|
2008-11-05
| | |
3
| |
2015-03-11
|
2014-12-25
| | |
4
| |
2014-10-08
|
2014-06-30
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |