一种多方授权的apk签名方法及系统的制作方法

文档序号:7801986阅读:177来源:国知局
一种多方授权的apk签名方法及系统的制作方法
【专利摘要】本发明提供一种多方授权的APK签名方法及系统,包括不同终端设备厂商签名服务器用各自的工作私钥对包括原始APK文件的被签名数据进行签名生成不同终端设备厂商签名数据,将厂商工作公钥证书放入终端设备厂商签名数据中或预装在终端设备中;收单机构签名服务器将不同终端设备厂商签名数据按照签名时间的先后顺序采用DER格式组成已签名APK文件;已签名APK文件包括原始APK文件和签名文件头,签名文件头包括用于标识文件已经过签名操作和标识终端设备厂商签名数据的个数及所述签名数据在已签名APK文件中的具体位置;终端设备获取已签名APK文件并判断已签名APK文件中有对应的终端设备厂商签名数据后定位终端设备厂商签名数据并验证,验证通过后允许安装及运行。
【专利说明】—种多方授权的APK签名方法及系统
【技术领域】
[0001]本发明涉及APK签名认证领域,尤其涉及一种多方授权的APK签名方法及系统。【背景技术】
[0002]银行卡(BANK Card)作为支付工具越来越普及,通常的银行卡支付系统包括销售点终端(Point Of Sale, POS)、POS收单系统(POSP)、密码键盘(PIN PAD)和硬件加密机(Hardware and Security Module, HSM)。其中POS终端能够接受银行卡信息,具有通讯功能,并接受柜员的指令完成金融交易信息和有关信息交换的设备;P0S收单系统对POS终端进行集中管理,包括参数下载,密钥下载,接受、处理或转发POS终端的交易请求,并向POS终端回送交易结果信息,是集中管理和交易处理的系统;收单系统中的POS上的程序是由收单机构下载和更新。由于Android系统的通用性,收单机构开始采购Android系统的POS终端设备。Android系统安装程序包称为APK, Android Package的缩写。
[0003]但由于POS终端设备厂商很多,每个厂商为提高POS终端设备的安全性,都会对下载后需要在POS中安装运行的程序进行签名验证,只有合法的签名的程序才允许安装或运行。并且由于厂商实现机制不同,造成原本可以下载安装到不同厂商Android系统POS终端的APK,签名后的文件格式都不一致,导致收单机构采购不同厂商的Android系统POS终端设备,需要同时维护不同的签名工具Android系统和和对同一个APK维护不同版本的已签名APK文件,给收单机构带来繁琐的维护工作和极大的维护成本,因此有必要提出一种APK签名的方案,降低收单机构的对APK签名的维护成本。

【发明内容】

[0004]本发明的目的在于提供一种方便收单机构统一管理不同厂商的Android系统终端设备的签名,缩减维护成本的一种多方授权的APK签名方法及系统。
[0005]为实现上述发明目的,本发明采用的一个技术方案是:
[0006]一种多方授权的APK签名方法,包括:
[0007]S1:不同终端设备厂商CA服务器各自生成厂商根公私钥对,将厂商根公钥生成厂商根公钥证书;不同终端设备厂商签名服务器各自生成厂商工作公私钥对,将工作公钥分发至各自的厂商CA服务器,厂商CA服务器使用厂商根私钥对厂商工作公钥签名生成厂商工作公钥证书;
[0008]S2:不同终端设备厂商签名服务器使用各自的厂商工作私钥对包括原始APK文件的被签名数据签名生成不同终端设备厂商签名数据,根据不同终端设备厂商的验签机制将各自的厂商工作公钥证书放入各自生成的厂商签名数据中或预装在终端设备中;不同终端设备厂商将各自的厂商根公钥证书预装在各自的终端设备中;
[0009]S3:收单机构签名服务器将不同终端设备厂商签名服务器生成的不同厂商签名数据按照签名时间的先后顺序采用DER格式组成已签名APK文件;其中,所述已签名APK文件包括原始APK文件和签名文件头,所述签名文件头包括基础文件和扩展文件,所述基础文件用于标识文件已经过签名操作;所述扩展文件用于标识不同终端设备各自的厂商签名数据的个数及不同终端设备各自的厂商签名数据在已签名APK文件中的具体位置;
[0010]S4:终端设备从所述收单机构签名服务器获取已签名APK文件,判断已签名APK文件中是否有与所述终端设备对应的终端设备厂商生成的厂商签名数据,当判定有对应的厂商签名数据后,终端设备通过所述已签名APK文件的文件头定位所述厂商签名数据;
[0011]S5:终端设备获取厂商根公钥证书后使用厂商根公钥证书验证厂商签名数据中厂商工作公钥证书的合法性,验证合法后终端设备提取厂商工作公钥证书中的工作公钥验证签名数据,验证通过后允许安装或运行。
[0012]本发明提供的另一种技术方案为:
[0013]一种多方授权的APK签名系统,其特征在于,包括终端设备厂商服务器、收单机构服务器和终端设备服务器;
[0014]所述终端设备厂商服务器包括第一生成模块、第二生成模块和第一签名模块;
[0015]所述第一生成模块,用于不同终端设备厂商CA服务器各自生成厂商根公私钥对,将厂商根公钥生成厂商根公钥证书和使用厂商根私钥对厂商工作公钥签名生成厂商工作公钥证书;
[0016]所述第二生成模块,用于不同终端设备厂商签名服务器各自生成厂商工作公私钥对,将工作公钥分发至各自的厂商CA服务器;
[0017]所述第一签名模块,用于不同终端设备厂商签名服务器使用各自的厂商工作私钥对包括原始APK文件的被签名数据签名生成不同终端设备厂商签名数据,根据不同终端设备厂商的验签机制将各自的厂商工作公钥证书放入各自生成的厂商签名数据中或预装在终端设备中;不同终端设备厂商将各自的厂商根公钥证书预装在各自的终端设备中;
[0018]所述收单机构服务器包括第二签名模块;
[0019]所述第二签名模块,用于收单机构签名服务器将不同终端设备厂商签名服务器生成的不同厂商签名数据按照签名时间的先后顺序采用DER格式组成已签名APK文件;其中,所述已签名APK文件包括原始APK文件和签名文件头,所述签名文件头包括基础文件和扩展文件,所述基础文件用于标识文件已经过签名操作;所述扩展文件用于标识不同终端设备各自的厂商签名数据的个数及不同终端设备各自的厂商签名数据在已签名APK文件中的具体位置;
[0020]所述终端设备服务器包括第一判断模块、定位模块、第一验证模块和第二验证模块;
[0021]所述第一判断模块,用于终端设备从所述收单机构签名服务器获取已签名APK文件,判断已签名APK文件中是否有与所述终端设备对应的终端设备厂商生成的厂商签名数据;
[0022]所述定位模块,用于终端设备判定有对应的厂商签名数据后通过所述已签名APK文件的文件头定位所述厂商签名数据;
[0023]所述第一验证模块,用于终端设备使用厂商根公钥证书验证厂商签名数据中厂商工作公钥证书的合法性;
[0024]所述第二验证模块,用于终端设备成功验证厂商工作公钥证书的合法性后,终端设备提取厂商工作公钥证书中的工作公钥验证签名数据,验证通过后允许安装或运行。[0025]本发明的有益效果在于:本发明的一种多方授权的APK签名方法及系统,通过不同终端设备的签名服务器对包括APK文件的被签名数据各自进行签名操作生成各自的签名数据后由收单机构按顺序采用DER格式组成已签名APK文件,已签名APK文件中包括用于识别已接受过签名操作的终端设备和各终端设备厂商签名数据的个数及在已签名APK文件所在位置的文件头,用于不同终端设备在获取已签名APK文件后提取自身终端设备需要进行验签的对应签名数据进行验证合法性,验证通过后方可进行APK的安装或运行。
[0026]通过本发明,实现了终端设备在下载所需APK的过程中,只需识别有经过自身终端设备签名过的已签名APK文件,并在定位自身终端设备的签名数据后运用自身的验签机制进行验证合法性,验证通过后便可允许APK安装或运行。本发明即保证签名后APK在传输过程后的完整性和合法性,又能实现不同厂商的终端设备只需维护自身的签名验签机制,大大缩减了客户的维护成本。
【专利附图】

【附图说明】
[0027]图1为本发明一种多方授权的APK签名方法的流程框图;
[0028]图2为本发明一种多方授权的APK签名方法中步骤5的具体流程框图;
[0029]图3为本发明一种多方授权的APK签名系统的组成框图;
[0030]图4为本发明一种多方授权的APK签名系统中收单机构服务器的组成框图;
[0031]图5为本发明一种多方授权的APK签名系统中第一验证模块的组成框图;
[0032]图6为本发明一种多方授权的APK签名系统中第二验证模块的组成框图。
[0033]主要组成符号说明:
[0034]终端设备厂商服务器I ;收单机构服务器2 ;终端设备服务器3
[0035]第一生成模块010;第二生成模块011;第一签名模块012 ;
[0036]第二签名模块020 ;第一判断模块030 ;定位模块031 ;
[0037]第一验证模块032;第二验证模块033;第三签名模块021 ;
[0038]写入模块022 ;第二判断模块023 ;第二判断单元0321 ;
[0039]第三判断单元0322;第一运算单元0331;第三判断单元0332。
【具体实施方式】
[0040]不同厂商的终端设备对被签名数据各自进行签名操作后生成厂商签名数据,之后将厂商签名数据发给收单机构签名服务器,由收单机构签名服务器采用DER格式组成已签名APK文件,厂商的终端设备安装或运行已签名APK文件时,定位获取终端设备对应的厂商签名数据进行验签,验签通过后安装或运行APK文件,本发明采用方便扩展的DER格式编码存放不同厂商签名数据,终端设备仅需获取并验签自身对应的厂商签名的数据,实现针对不同厂商验签机制的Android终端设备,只需维护一套签名实现机制,减免收单机构需要同时维护不同终端设备厂商不同的签名验签机制的成本。
[0041]为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。
[0042]请参阅图1为本发明一种多方授权的APK签名方法的流程框图。
[0043] 本方案所述一种多方授权的APK签名方法,包括:[0044]S1:不同终端设备厂商CA服务器各自生成厂商根公私钥对,将厂商根公钥生成厂商根公钥证书;不同终端设备厂商签名服务器各自生成厂商工作公私钥对,将工作公钥分发至各自的厂商CA服务器,厂商CA服务器使用厂商根私钥对厂商工作公钥签名生成厂商工作公钥证书;
[0045]S2:不同终端设备厂商签名服务器使用各自的厂商工作私钥对包括原始APK文件的被签名数据签名生成不同终端设备厂商签名数据,根据不同终端设备厂商的验签机制将各自的厂商工作公钥证书放入各自生成的厂商签名数据中或预装在终端设备中;不同终端设备厂商将各自的厂商根公钥证书预装在各自的终端设备中;
[0046]S3:收单机构签名服务器将不同终端设备厂商签名服务器生成的不同厂商签名数据按照签名时间的先后顺序采用DER格式组成已签名APK文件;其中,所述已签名APK文件包括原始APK文件和签名文件头,所述签名文件头包括基础文件和扩展文件,所述基础文件用于标识文件已经过签名操作;所述扩展文件用于标识不同终端设备各自的厂商签名数据的个数及不同终端设备各自的厂商签名数据在已签名APK文件中的具体位置;
[0047]S4:终端设备从所述收单机构签名服务器获取已签名APK文件,判断已签名APK文件中是否有与所述终端设备对应的终端设备厂商生成的厂商签名数据,当判定有对应的厂商签名数据后,终端设备通过所述已签名APK文件的文件头定位所述厂商签名数据;
[0048]S5:终端设备获取厂商根公钥证书后使用厂商根公钥证书验证厂商签名数据中厂商工作公钥证书的合法性,验证合法后终端设备提取厂商工作公钥证书中的工作公钥验证签名数据,验证通过后允许安装或运行。
[0049]本方案采用DER格式编码不同厂商的终端设备进行各自签名操作后的签名数据,并按照签名的时间顺序进行排序,采用DER格式进行编码方便进行扩展,能很好的容纳不同终端设备厂商的厂商签名数据,且各自独立。本方案所述签名文件头标识了已签名APK文件的类型和经过不同厂商签名后数据的偏移和偏移的长度,用于在下载到不同厂商的终端设备后由判断是否有经过自身终端设备签名操作过的签名数据;签名文件头还用于定位签名数据在已签名APK文件已签名APK文件中的具体位置,方便不同厂商的终端设备获取各自的签名数据进行各自的验签。在进行不同厂商的终端设备各自的签名操作过程中,不同的厂商会根据自身的需要,将各自的厂商工作公钥证书放入各自生成的厂商签名数据中或预装在终端设备中,在后续终端设备进行验签时,预装在厂商的终端设备中的厂商工作公钥无需再验证合法性,直接用于验签,而存放在终端设备厂商签名数据中的厂商工作公钥证书需要用预装的厂商根公钥证书验证其合法性,通过验证后才能继续后续的验证步骤,否则判定签名数据不合法。
[0050]本方案实现了终端设备在下载APK文件时,只需在识别到已签名APK文件中有经过自身终端设备签名过的签名数据后定位获取对应签名数据,运用自身的验签机制进行验证合法性,通过验证后便可运行APK安装或运行的方法,通过本方案不仅能快速验证签名后的APK在经过传输后的完整性和合法性,又能实现购买不同厂商终端设备的客户不再需要同时维护多个不同厂商的终端设备不同的签名验签机制,大大的缩减客户的维护成本。
[0051]实施方式一:
[0052]在上述方案的基础上,本实施方式还包括步骤SI之前包括以下步骤:
[0053]收单机构签名服务器将原始APK文件尾填充0x00四字节补齐,确保原始APK文件尾以OxOO结尾后作为被签名数据;
[0054]步骤S3还包括:
[0055]S31:收单机构签名服务器将被签名数据的标识、版本和原始APK文件的长度及校验值与入所述基础文件中;
[0056]步骤S4中所述“判断已签名APK文件中是否有与所述终端设备对应的终端设备厂商签名数据”具体为:
[0057]根据已签名APK文件中签名文件头的基础文件中不同被签名数据的标识、版本判断是否有属于自身终端设备的签名数据。
[0058]本实施方式在实现不同厂商的终端设备各自进行验签获取APK的同时,具体的执行步骤还包括在步骤SI之前收单机构的签名服务器将原始APK文件进行四字节对其,不足位用0x00填充,并在末尾补4个0x00以确保被原始文件APK的末尾为0x00,方便后续进行编码。在步骤S2还包括收单机构签名服务器将被签名数据的标识、版本和原始APK文件的长度及校验值写入所述基础文件中,用于步骤S3中下载到不同的终端设备中时终端设备通过基础文件中的被签名数据的标识、版本和校验值进行判断是否经过自身终端设备的签名操作。
[0059]实施方式二:
[0060]在上述方案的基础上,本实施方式还包括步骤SI中所述“不同终端设备厂商签名服务器使用各自的厂商工作私钥对包括原始APK文件的被签名数据签名生成不同终端设备厂商签名数据”具体包括:
[0061]不同终端设备厂商签名服务器将包括原始APK文件的被签名数据计算哈希得到哈希值HASHl ;将哈希值HASHl按照一定签名填充方式进行填充后得到被签名APK文件;将被签名APK文件使用终端设备厂商签名服务器各自的工作私钥进行签名操作生成不同终端设备厂商签名数据。
[0062]本实施方式实现不同厂商的终端设备各自进行验签获取APK的同时,还包括具体的不同终端设备厂商签名服务器用各自的工作私钥对包括原始APK文件的被签名数据进行签名生成不同终端设备厂商签名数据的具体过程,通过对被签名数据进行计算哈希得到哈希值HASHl,并将哈希值HASHl按照PKCS#1_V1.5的签名填充方式进行填充,得到被签名文件,并将被签名文件使用私钥进行签名操作生成终端设备厂商签名数据,加入到采用DER方式编码的已签名APK文件中,同时修改已签名APK文件的文件头,将当前新增加的厂商终端设备厂商签名数据的偏移和长度添加进文件头的对应扩展域中。按照该方式将不同的厂商终端设备签名后的签名数据按照DER编码格式进行排放,方便扩展数据的同时便于验签时获取不同厂商终端设备相应的签名数据。
[0063]请参阅图2,为本发明一种多方授权的APK签名方法中步骤5的具体流程框图。
[0064]实施方式三:
[0065]在上述方案的基础上,本实施方式还包括在步骤S5中具体包括:
[0066]S51:判断厂商工作公钥证书是否预装在终端设备中,若是,获取厂商工作公钥证书,并进入步骤S53 ;若否,通过所述已签名APK文件的文件头定位并获取设备终端对应的厂商签名数据;
[0067]S52:获取厂商签名数据中的厂商工作公钥证书;终端设备使用预装的厂商根公钥证书验证厂商签名数据中厂商工作公钥证书的合法性,验证通过后进入步骤S53 ;
[0068]S53:终端设备提取厂商工作公钥证书中的工作公钥验证签名数据并计算哈希,得到哈希值HASH2 ;判断哈希值HASHl和哈希值HASH2是否一致,若是,则判定已签名APK文件合法,允许APK安装;若否,则判定已签名APK文件不合法,不允许APK安装。
[0069]本实施方式具体的包括在判断有经过自身终端设备签名操作后的签名文件后进行获取合法工作公钥的步骤,具体的,先判断设备终端中是否有预装的合法工作公钥,若有,便直接获取合法的工作公钥进入定位获取签名数据步骤进行解密签名数据;若否,则从获取的签名数据中提取终端设备工作公钥证书,并使用预装在终端设备的厂商根公钥证书验证终端设备工作公钥证书的合法性,验证通过后再利用工作公钥证书中的公钥解密签名数据。通过再次对获取到的签名数据进行计算哈希得到哈希值HASH2,对比签名数据在进行传输之前的哈希值HASHl判断签名数据的合法性和完整性,确保签名文件在传输过程中未经篡改。
[0070]请参阅图3为本发明一种多方授权的APK签名系统的组成框图。
[0071]本发明采用的另一个技术方案为:
[0072]—种多方授权的APK签名系统,包括终端设备厂商服务器1、收单机构服务器2和终端设备服务器3 ;
[0073]所述终端设备厂商服务器I包括第一生成模块010、第二生成模块011和第一签名模块012 ;
[0074]所述第一生成模块010,用于不同终端设备厂商CA服务器各自生成厂商根公私钥对,将厂商根公钥生成厂商根公钥证书和使用厂商根私钥对厂商工作公钥签名生成厂商工作公钥证书;
[0075]所述第二生成模块011,用于不同终端设备厂商签名服务器各自生成厂商工作公私钥对,将工作公钥分发至各自的厂商CA服务器;
[0076]所述第一签名模块012,用于不同终端设备厂商签名服务器使用各自的厂商工作私钥对包括原始APK文件的被签名数据签名生成不同终端设备厂商签名数据,根据不同终端设备厂商的验签机制将各自的厂商工作公钥证书放入各自生成的厂商签名数据中或预装在终端设备中;不同终端设备厂商将各自的厂商根公钥证书预装在各自的终端设备中;
[0077]所述收单机构服务器2包括第二签名模块020 ;
[0078]所述第二签名模块020,用于收单机构签名服务器将不同终端设备厂商签名服务器生成的不同厂商签名数据按照签名时间的先后顺序采用DER格式组成已签名APK文件;其中,所述已签名APK文件包括原始APK文件和签名文件头,所述签名文件头包括基础文件和扩展文件,所述基础文件用于标识文件已经过签名操作;所述扩展文件用于标识不同终端设备各自的厂商签名数据的个数及不同终端设备各自的厂商签名数据在已签名APK文件中的具体位置;
[0079]所述终端设备服务器3包括第一判断模块030、定位模块031、第一验证模块032和第二验证模块033 ;
[0080]所述第一判断模块030,用于终端设备从所述收单机构签名服务器获取已签名APK文件,判断已签名APK文件中是否有与所述终端设备对应的终端设备厂商生成的厂商签名数据;[0081]所述定位模块031,用于终端设备判定有对应的厂商签名数据后通过所述已签名APK文件的文件头定位所述厂商签名数据;
[0082]所述第一验证模块032,用于终端设备使用厂商根公钥证书验证厂商签名数据中厂商工作公钥证书的合法性;
[0083]所述第二验证模块033,用于终端设备成功验证厂商工作公钥证书的合法性后,终端设备提取厂商工作公钥证书中的工作公钥验证签名数据,验证通过后允许安装或运行。
[0084]请参阅图4,为本发明一种多方授权的APK签名系统中收单机构服务器2的组成框图。
[0085]实施方式四:
[0086]在上述方案的基础上,本实施方式所述收单机构还包括第三签名模块021、写入模块022和第二判断模块023 ;
[0087]所述第三签名模块021,用于收单机构签名服务器将原始APK文件尾填充0x00四字节补齐,确保原始APK文件尾以0x00结尾后作为被签名数据;
[0088]所述写入模块022,用于收单机构签名服务器将被签名数据的标识、版本和原始APK文件的长度及校验值写入所述基础文件中;
[0089]所述第二判断模块023,用于收单机构签名服务器判断是否还有不同的终端设备厂商需要进行签名操作,若是,则不同终端设备厂商调用各自的厂商签名服务器进行签名操作,修改所述签名文件头;若否,则结束。
[0090]本实施方式中所述修改所述签名文件头具体包括修改文件头中基础文件中的文件体长度、扩展文件中加入新的终端设备厂商签名操作后的签名数据内容。
[0091]实施方式五:
[0092]在上述方案的基础上,本实施方式所述第一签名模块012包括签名单元;
[0093]所述签名单元,用于不同终端设备厂商签名服务器将包括原始APK文件的被签名数据计算哈希得到哈希值HASHl ;将哈希值HASHl按照一定签名填充方式进行填充后得到被签名APK文件;将被签名APK文件使用终端设备厂商签名服务器各自的工作私钥进行签名操作生成不同终端设备厂商签名数据。
[0094]请参阅图5-图6,分别为本发明一种多方授权的APK签名系统中第一验证模块032的组成框图和本发明一种多方授权的APK签名系统中第二验证模块033的组成框图。
[0095]实施方式六:
[0096]在上述方案的基础上,本实施方式所述第一验证模块032包括第二判断单元0321和第三验证单元;所述第二验证模块033包括第一运算单元0331和第三判断单元03320322 ;
[0097]所述第二判断单元0321,用于判断厂商工作公钥证书是否预装在终端设备中,若是,获取厂商工作公钥证书;若否,通过所述已签名APK文件的文件头定位并获取设备终端对应的厂商签名数据;
[0098]所述第三验证单元,用于终端设备获取厂商签名数据中的厂商工作公钥证书;终端设备使用预装的厂商根公钥证书验证厂商签名数据中厂商工作公钥证书的合法性;
[0099]所述第一运算单元0331,用于终端设备提取厂商工作公钥证书中的工作公钥验证签名数据并计算哈希,得到哈希值HASH2 ;[0100]所述第三判断单元03320322,用于终端设备判断哈希值HASHl和哈希值HASH2是否一致,若是,则判定已签名APK文件合法,允许APK安装;若否,则判定已签名APK文件不合法,不允许APK安装。
[0101]本发明提供的一种多方授权的APK签名方法及其系统,采用方便扩展的DER编码不同终端设备厂商经过各自签名操作后生成的厂商签名数据,不同终端设备在下载所需APK的过程中,只需识别有经过自身终端设备签名过的签名文件,并在定位自身终端设备的签名数据后运用自身的验签机制进行验证合法性,验证通过后便可允许APK安装或运行。本发明即确保签名后的APK经过传输后的完整性合法性,又省去了以往需费时同时验签多家厂商终端设备的叠加签名后的签名数据,进一步的,大大缩减了客户的维护成本,客户只需维护厂商终端设备自身的签名验签机制。
[0102]以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的【技术领域】,均同理包括在本发明的专利保护范围内。
【权利要求】
1.一种多方授权的APK签名方法,其特征在于,包括: 51:不同终端设备厂商CA服务器各自生成厂商根公私钥对,将厂商根公钥生成厂商根公钥证书;不同终端设备厂商签名服务器各自生成厂商工作公私钥对,将工作公钥分发至各自的厂商CA服务器,厂商CA服务器使用厂商根私钥对厂商工作公钥签名生成厂商工作公钥证书; 52:不同终端设备厂商签名服务器使用各自的厂商工作私钥对包括原始APK文件的被签名数据签名生成不同终端设备厂商签名数据,根据不同终端设备厂商的验签机制将各自的厂商工作公钥证书放入各自生成的厂商签名数据中或预装在终端设备中;不同终端设备厂商将各自的厂商根公钥证书预装在各自的终端设备中; S3:收单机构签名服务器将不同终端设备厂商签名服务器生成的不同厂商签名数据按照签名时间的先后顺序采用DER格式组成已签名APK文件;其中,所述已签名APK文件包括原始APK文件和签名文件头,所述签名文件头包括基础文件和扩展文件,所述基础文件用于标识文件已经过签名操作;所述扩展文件用于标识不同终端设备各自的厂商签名数据的个数及不同终端设备各自的厂商签名 数据在已签名APK文件中的具体位置; 54:终端设备从所述收单机构签名服务器获取已签名APK文件,判断已签名APK文件中是否有与所述终端设备对应的终端设备厂商生成的厂商签名数据,当判定有对应的厂商签名数据后,终端设备通过所述已签名APK文件的文件头定位所述厂商签名数据; 55:终端设备获取厂商根公钥证书后使用厂商根公钥证书验证厂商签名数据中厂商工作公钥证书的合法性,验证合法后终端设备提取厂商工作公钥证书中的工作公钥验证签名数据,验证通过后允许安装或运行。
2.根据权利要求1所述的一种多方授权的APK签名方法,其特征在于,步骤SI之前还包括: 收单机构签名服务器将原始APK文件尾填充OxOO四字节补齐,确保原始APK文件尾以0x00结尾后作为被签名数据; 步骤S3还包括: S31:收单机构签名服务器将被签名数据的标识、版本和原始APK文件的长度及校验值与入所述基础文件中; 步骤S4中所述“判断已签名APK文件中是否有与所述终端设备对应的终端设备厂商签名数据”具体为: 根据已签名APK文件中签名文件头的基础文件中不同被签名数据的标识、版本判断是否有属于自身终端设备的签名数据。
3.根据权利要求1所述的一种多方授权的APK签名方法,其特征在于,步骤S2中所述“不同终端设备厂商签名服务器使用各自的厂商工作私钥对包括原始APK文件的被签名数据签名生成不同终端设备厂商签名数据”具体包括: 不同终端设备厂商签名服务器将包括原始APK文件的被签名数据计算哈希得到哈希值HASHl ;将哈希值HASHl按照一定签名填充方式进行填充后得到被签名APK文件;将被签名APK文件使用终端设备厂商签名服务器各自的工作私钥进行签名操作生成不同终端设备厂商签名数据。
4.根据权利要求3所述的一种多方授权的APK签名方法,其特征在于,步骤S5具体包括: S51:判断厂商工作公钥证书是否预装在终端设备中,若是,获取厂商工作公钥证书,并进入步骤S53;若否,通过所述已签名APK文件的文件头定位并获取设备终端对应的厂商签名数据; S52:获取厂商签名数据中的厂商工作公钥证书;终端设备使用预装的厂商根公钥证书验证厂商签名数据中厂商工作公钥证书的合法性,验证通过后进入步骤S53 ; S53:终端设备提取厂商工作公钥证书中的工作公钥验证签名数据并计算哈希,得到哈希值HASH2 ;判断哈希值HASHl和哈希值HASH2是否一致,若是,则判定已签名APK文件合法,允许APK安装;若否,则判定已签名APK文件不合法,不允许APK安装。
5.一种多方授权的APK签名系统,其特征在于,包括终端设备厂商服务器、收单机构服务器和终端设备服务器; 所述终端设备厂商服务器包括第一生成模块、第二生成模块和第一签名模块; 所述第一生成模块,用于不同终端设备厂商CA服务器各自生成厂商根公私钥对,将厂商根公钥生成厂商根公钥证书和使用厂商根私钥对厂商工作公钥签名生成厂商工作公钥证书; 所述第二生成模块,用于不同终端设备厂商签名服务器各自生成厂商工作公私钥对,将工作公钥分发至各自的厂商CA服务器; 所述第一签名模块,用于不同终端设备厂商签名服务器使用各自的厂商工作私钥对包括原始APK文件的被签名数据签名生成不同终端设备厂商签名数据,根据不同终端设备厂商的验签机制将各自的厂商工作公钥证书放入各自生成的厂商签名数据中或预装在终端设备中;不同终端设备厂商将各自的厂商根公钥证书预装在各自的终端设备中; 所述收单机构服务器包括第二签名模块; 所述第二签名模块,用于收单机构签名服务器将不同终端设备厂商签名服务器生成的不同厂商签名数据按照签名时间的先后顺序采用DER格式组成已签名APK文件;其中,所述已签名APK文件包括原始APK文件和签名文件头,所述签名文件头包括基础文件和扩展文件,所述基础文件用于标识文件已经过签名操作;所述扩展文件用于标识不同终端设备各自的厂商签名数据的个数及不同终端设备各自的厂商签名数据在已签名APK文件中的具体位置; 所述终端设备服务器包括第一判断模块、定位模块、第一验证模块和第二验证模块; 所述第一判断模块,用于终端设备从所述收单机构签名服务器获取已签名APK文件,判断已签名APK文件中是否有与所述终端设备对应的终端设备厂商生成的厂商签名数据; 所述定位模块,用于终端设备判定有对应的厂商签名数据后通过所述已签名APK文件的文件头定位所述厂商签名数据; 所述第一验证模块,用于终端设备使用厂商根公钥证书验证厂商签名数据中厂商工作公钥证书的合法性; 所述第二验证模块,用于终端设备成功验证厂商工作公钥证书的合法性后,终端设备提取厂商工作公钥证书中的工作公钥验证签名数据,验证通过后允许安装或运行。
6.根据权利要求5所述的一种多方授权的APK签名系统,其特征在于,所述收单机构还包括第三签名模块、写入模块和第二判断模块;所述第三签名模块,用于收单机构签名服务器将原始APK文件尾填充OxOO四字节补齐,确保原始APK文件尾以0x00结尾后作为被签名数据; 所述写入模块,用于收单机构签名服务器将被签名数据的标识、版本和原始APK文件的长度及校验值写入所述基础文件中; 所述第二判断模块,用于收单机构签名服务器判断是否还有不同的终端设备厂商需要进行签名操作,若是,则不同终端设备厂商调用各自的厂商签名服务器进行签名操作,修改所述签名文件头;若否,则结束。
7.根据权利要求5所述的一种多方授权的APK签名系统,其特征在于,所述第一签名模块包括签名单元; 所述签名单元,用于不同终端设备厂商签名服务器将包括原始APK文件的被签名数据计算哈希得到哈希值HASHl ;将哈希值HASHl按照一定签名填充方式进行填充后得到被签名APK文件;将被签名APK文件使用终端设备厂商签名服务器各自的工作私钥进行签名操作生成不同终端设备厂商签名数据。
8.根据权利要求5所述的一种多方授权的APK签名系统,其特征在于,所述第一验证模块包括第二判断单元和第三验证单元;所述第二验证模块包括第一运算单元和第三判断单元; 所述第二判断单元,用于判断厂商工作公钥证书是否预装在终端设备中,若是,获取厂商工作公钥证书;若 否,通过所述已签名APK文件的文件头定位并获取设备终端对应的厂商签名数据; 所述第三验证单元,用于终端设备获取厂商签名数据中的厂商工作公钥证书;终端设备使用预装的厂商根公钥证书验证厂商签名数据中厂商工作公钥证书的合法性; 所述第一运算单元,用于终端设备提取厂商工作公钥证书中的工作公钥验证签名数据并计算哈希,得到哈希值HASH2 ; 所述第三判断单元,用于终端设备判断哈希值HASHl和哈希值HASH2是否一致,若是,则判定已签名APK文件合法,允许APK安装及运行;若否,则判定已签名APK文件不合法,不允许APK安装或运行。
【文档编号】H04L29/06GK103944903SQ201410165106
【公开日】2014年7月23日 申请日期:2014年4月23日 优先权日:2014年4月23日
【发明者】苏文龙, 孟陆强, 陈菲菲 申请人:福建联迪商用设备有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1