CN111814136A - 安卓应用程序签名及验签方法、装置、以及签名验签系统 - Google Patents
安卓应用程序签名及验签方法、装置、以及签名验签系统 Download PDFInfo
- Publication number
- CN111814136A CN111814136A CN202010608855.8A CN202010608855A CN111814136A CN 111814136 A CN111814136 A CN 111814136A CN 202010608855 A CN202010608855 A CN 202010608855A CN 111814136 A CN111814136 A CN 111814136A
- Authority
- CN
- China
- Prior art keywords
- signature
- information
- digital certificate
- signature information
- timestamp
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/51—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2151—Time stamp
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供一种安卓应用程序签名及验签方法、装置、以及签名验签系统。该安卓应用程序签名方法包括:根据预先获取的安卓应用程序文件得到摘要值;将摘要值发送至预先获取的数字证书对应的数字证书接口,以使数字证书接口对摘要值进行签名得到第一签名信息;接收来自数字证书接口的第一签名信息,将第一签名信息加上时间戳,得到第一时间戳签名信息;对第一签名信息、数字证书和第一时间戳信息进行打包,得到第一打包签名数据。本发明可以提供统一、不受安卓系统制约的安卓应用程序签名验签平台,为开发者和用户传递可靠信息,有效杜绝非法安卓应用程序,保障开发者和用户的权益。
Description
技术领域
本发明涉及电子认证技术领域,具体地,涉及一种安卓应用程序签名及验签方法、装置、以及签名验签系统。
背景技术
由于安卓系统其开源的特性,近年来广泛应用在各终端移动设备中,为移动应用程序提供了基础运行环境,随着移动互联网的不断发展,各种功能的APK不断涌现,由于移动终端设备中涉及到个人的隐私,所以有些APK(APK,Android APK lication package。安卓应用程序包)开发者为了某种目的,非法获取用户隐私信息或盗取账号密码的情况经常发生,消费者往往无法追溯APK来源或无法轻易举证,目前只能通过监管部门抓大力度整顿或有针对性的查处,督促开发者自律。
想实现APK开发者溯源和保障用户的权益,单纯的依赖安卓系统来解决是不太可能的,安卓系统是个全球开放的系统,目前安卓系统也只能保证APK经过应用商店、网站等流通渠道后,最终在终端设备安装时APK的完整性,即在终端安装APK时验证APK是否包含电子签名(是指数据电文中以电子形式所含、所附用于识别签名人身份并表明签名人认可其中内容的数据,简称签名),未签名或签名验证不通过则不允许安装。签名则是开发者通过APK开发工具来签的,这类签名叫做自签名,自签名只是利用了PKI(Public Key Infrastructure,公钥基础设施)体系中数字证书相关算法来保证APK的完整性,签名者身份没有经过权威的第三方电子认证服务机构(简称CA机构,CA,Certification Authority,证书颁发机构)进行认证,签名证书不具备合法性,所以不能保证签名者身份的真实性,无法为监管机构和最终用户提供开发者身份溯源和有效电子证据,也就不具备抗抵赖性。要同时具备完整性和抗抵赖性的可信签名,需引入CA机构为签名者提供身份签证,再利用签证所得的合法数字证书对APK进行可靠签名。
目前针对安卓APK签名的技术主要采用自定义签名(利用自己证明自己的证书所产生的电子签名),可以在安卓V1签名机制下对APK文件内部分文件进行签名保护。为了不破坏APK文件的原有结构,把签名者信息插入APK结构体的EOCD块的注释段中。
另外随着安卓签名机制的更新,自定义签名也进行了改进,可以同时兼容V1和V2签名机制,为了适用V2签名时则把签名数据插入APK SigningBlock块中的“ID-值”对中。并且使用自定义ID(unit32)+P7签名长度(unit32)+P7签名数据的结构,可以方便的在仅V1签名方案中计算EOCD注释段大小以及包含V2签名方案下计算EOCD中核心中央目录的偏移量。
自定义签名技术受限于安卓系统本身的签名机制,无法解决安卓系统签名机制本身存在安全问题。例如对采用V1签名机制的APK文件签名时,仅仅只能保护APK部分内容块中的文件,缺少对APK的完整性校验。因此,在自定义签名后还可以修改APK文件,仍然可以正常安装。
另外开发者对第三方随意修改其签名后APK文件,还能通过安卓系统的验证这一事实的合理性本来就存在质疑。这些问题都是现有技术一直无法推广的原因。
发明内容
本发明实施例的主要目的在于提供一种安卓应用程序签名及验签方法、装置、以及签名验签系统,以提供统一、不受安卓系统制约的安卓应用程序签名验签平台,为开发者和用户传递可靠信息,有效杜绝非法安卓应用程序,保障开发者和用户的权益。
为了实现上述目的,本发明实施例提供一种安卓应用程序签名方法,包括:
根据预先获取的安卓应用程序文件得到摘要值;
将摘要值发送至预先获取的数字证书对应的数字证书接口,以使数字证书接口对摘要值进行签名得到第一签名信息;
接收来自数字证书接口的第一签名信息,将第一签名信息加上时间戳,得到第一时间戳签名信息;
对第一签名信息、数字证书和第一时间戳信息进行打包,得到第一打包签名数据。
本发明实施例还提供一种安卓应用程序签名装置,包括:
摘要值确定单元,用于根据预先获取的安卓应用程序文件得到摘要值;
发送单元,用于将摘要值发送至预先获取的数字证书对应的数字证书接口,以使数字证书接口对摘要值进行签名得到第一签名信息;
时间戳单元,用于接收来自数字证书接口的第一签名信息,将第一签名信息加上时间戳,得到第一时间戳签名信息;
打包单元,用于对第一签名信息、数字证书和第一时间戳信息进行打包,得到第一打包签名数据。
本发明实施例的安卓应用程序签名方法及装置先根据安卓应用程序文件得到摘要值,再将摘要值发送至数字证书对应的数字证书接口以使数字证书接口对摘要值进行签名得到第一签名信息,然后将第一签名信息加上时间戳,得到第一时间戳签名信息,最后对第一签名信息、数字证书和第一时间戳信息进行打包,得到第一打包签名数据,可以提供统一、不受安卓系统制约的安卓应用程序签名平台,为开发者和用户传递可靠信息,保障开发者和用户的权益。
本发明实施例还提供一种安卓应用程序验签方法,包括:
查询预先获取的摘要值对应的第一打包签名数据;
对第一打包签名数据中的第一签名信息、数字证书和第一时间戳签名信息进行验证;
当数字证书对应的签名者为开发者且第一签名信息和第一时间戳签名信息均验证通过时,返回验证成功结果。
本发明实施例还提供一种安卓应用程序验签装置,包括:
查询单元,用于查询预先获取的摘要值对应的第一打包签名数据;
验证单元,用于对第一打包签名数据中的第一签名信息、数字证书和第一时间戳签名信息进行验证;
返回单元,用于当数字证书对应的签名者为开发者且第一签名信息和第一时间戳签名信息均验证通过时,返回验证成功结果。
本发明实施例的安卓应用程序验签方法及装置查询摘要值对应的第一打包签名数据,当数字证书对应的签名者为开发者且第一签名信息和第一时间戳签名信息均验证通过时返回验证成功结果,可以提供统一、不受安卓系统制约的安卓应用程序验签平台,为开发者和用户传递可靠信息,有效杜绝非法安卓应用程序,保障开发者和用户的权益。
本发明实施例还提供一种安卓应用程序签名验签系统,包括:
如上所述的安卓应用程序签名装置;以及
如上所述的安卓应用程序验签装置。
本发明实施例的安卓应用程序签名验签系统可以提供统一、不受安卓系统制约的安卓应用程序签名验签平台,为开发者和用户传递可靠信息,有效杜绝非法安卓应用程序,保障开发者和用户的权益。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例中安卓应用程序签名方法的流程图;
图2是本发明另一实施例中安卓应用程序签名方法的流程图;
图3是本发明实施例中安卓应用程序签名方法的具体流程图;
图4是本发明实施例中安卓应用程序验签方法的流程图;
图5是本发明实施例中安卓应用程序验签方法的具体流程图;
图6是本发明实施例中安卓应用程序签名装置的结构框图;
图7是本发明实施例中安卓应用程序验签装置的结构框图;
图8是本发明实施例中安卓应用程序签名验签系统的结构框图;
图9是本发明另一实施例中安卓应用程序签名验签系统的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
鉴于目前存在安卓应用程序监管难、溯源难等问题,本发明实施例提供一种安卓应用程序签名方法,可以提供统一、不受安卓系统制约的安卓应用程序签名平台,为开发者和用户传递可靠信息,保障开发者和用户的权益。以下结合附图对本发明进行详细说明。
图1是本发明实施例中安卓应用程序签名方法的流程图。图3是本发明实施例中安卓应用程序签名方法的具体流程图。如图1和图3所示,安卓应用程序签名方法包括:
S101:根据预先获取的安卓应用程序文件得到摘要值。
如图3所示,在执行S101之前,APK开发者、检测者、认证者和渠道发布者向任意第三方CA机构申请电子认证(电子认证为电子签名相关各方提供真实性、可靠性验证的活动),由第三方CA机构负责对签名者身份进行实名认证,获得国家信任域下的合法数字证书。只有符合数字证书格式的第三方CA机构才允许被信任。
一般通过数字证书的唯一标识来确定用户的真实身份,本发明可以通过证书主体DN(Distinguished Name,可分辨名称)来区分证书角色以及身份,证书角色包括但不局限于开发者,检测者,认证者和渠道发布者。其中开发者是APK开发的个人、企业或社会团体,检测者和认证者一般是具有检测和认证相关的资质企业,渠道发布者一般是指应用商店、网站、安全软件等平台运营的公司,签名者可以向任意符合证书格式规范的第三方CA机构申请数字证书。
本发明还通过用户管理模块对签名者的数字证书完成自动注册,签名者根据第三方CA机构发放的数字证书形态登录本发明的安卓应用程序签名装置。一般证书形态包括USBKEY(硬件数字证书载体)、手机盾或其他智能密码钥匙。登录时CA机构管理模块会校验数字证书签发机构和证书用户角色,签名者无法凭借不被信任的第三方CA机构或无法解析的证书主体信息完成登录。
其中,签名者通过应用管理模块导入的安卓应用程序文件需经过安卓自签名,不带自签名或其他格式的文件都不能通过,自签名校验可以确保APK文件能正常安装。
S102:将摘要值发送至预先获取的数字证书对应的数字证书接口,以使数字证书接口对摘要值进行签名得到第一签名信息。
其中,数字证书是指在互联网通讯中标志通讯各方身份信息的一个数字认证,人们可以在网上用它来识别对方的身份。
在执行S102之前,还包括:
1、判断是否存在相同的摘要值;当不存在相同的摘要值时,从数字证书中获取签名者信息。
具体实施时,可以采用国密SM3算法(国产哈希算法)计算摘要值,不同的安卓应用程序文件计算的摘要值都不一样,可以通过摘要值判断是否存在已经签名的安卓应用程序文件信息。
2、根据签名者信息判断签名者是否为开发者;当签名者为开发者时,执行S102。
其中,当签名者不是开发者时,停止执行S102。根据APK签名的原则,要求先通过开发者签名,其他签名者(如检测者、认证者和发布者)才允许签名。
S103:接收来自数字证书接口的第一签名信息,将第一签名信息加上时间戳,得到第一时间戳签名信息。
具体实施时,本发明的签名子系统模块调用时间戳子系统采用数字证书的私钥完成带时间戳的签名,确保APK文件(安卓应用程序文件)的第一签名者是开发者,签名时间都由时间戳进行标记,时间真实有效。开发者可以通过应用管理模块查看签名记录,该记录不允许被删除或修改。一个APK文件只允许有一个开发者签名。
S104:对第一签名信息、数字证书和第一时间戳信息进行打包,得到第一打包签名数据。
其中,打包数据格式符合《GB/T 25064-2010信息安全技术公钥基础设施电子签名格式规范》中带扩展验证数据的电子签名(ES-C)要求,打包后保存第一打包签名数据。
图1所示的安卓应用程序签名方法的执行主体可以为安卓应用程序签名装置。由图1所示的流程可知,本发明实施例的安卓应用程序签名方法先根据安卓应用程序文件得到摘要值,再将摘要值发送至数字证书对应的数字证书接口以使数字证书接口对摘要值进行签名得到第一签名信息,然后将第一签名信息加上时间戳,得到第一时间戳签名信息,最后对第一签名信息、数字证书和第一时间戳信息进行打包,得到第一打包签名数据,可以提供统一、不受安卓系统制约的安卓应用程序签名平台,为开发者和用户传递可靠信息,保障开发者和用户的权益。
开发者如想提高APK的安全性和合规性,可以向检测机构或认证机构申请对APK文件进行检测和认证,由检测机构和认证机构为APK文件进行签名。发布渠道在开发者授权的情况下,也可以在应用商店或网站上架APK时可以增加发布者的签名,为用户提供渠道来源信息。这些角色的签名不分先后顺序,签名数据会按照时间顺序进行追加保存。图2是本发明另一实施例中安卓应用程序签名方法的流程图。如图2所示,安卓应用程序签名方法还包括:
S201:当存在相同的摘要值时,从数字证书中获取签名者信息。
S202:根据签名者信息判断签名者是否为开发者。
S203:当签名者不是开发者时,将摘要值发送至预先获取的检测认证机构,以使检测认证机构对摘要值进行签名得到第二签名信息。
根据APK签名的原则,要求先通过开发者签名,其他签名者(如检测者、认证者和发布者)才允许签名。当存在相同的摘要值时表明安卓应用程序文件已经过开发者签名,此时可以允许其他签名者同时对安卓应用程序文件进行签名,因为签名对象都是带自签名的安卓应用程序文件,所以对签名顺序、时间都没有任何要求,各自签名的行为只针对带自签名的安卓应用程序负责。
S204:接收来自检测认证机构的第二签名信息,将第二签名信息加上时间戳,得到第二时间戳签名信息。
S205:对第二签名信息、数字证书和第二时间戳信息进行打包,得到第二打包签名数据。
其中,签名结果保存在数据库中。每个签名者都可以查看自己签名的应用。一个APK被其他签名者签名的次数有限制,一般不超过6次。
自定义签名技术每次签名都需要对APK文件重新打包,如果需要多方参与签名时,下一签名者必须先获得上一签名者签完后的APK文件才能签名,这显然不适用APK多方参与的联合签名验签业务需求。图2所示的安卓应用程序签名方法为非开发者对APK进行第三方签名时的流程图。只有在存在相同摘要值时才允许非开发者执行签名流程,可以保证先由开发者先完成第三方签名,对非开发者的签名顺序、时间都没有任何要求。
安卓应用程序签名方法的具体流程如下:
1、根据预先获取的安卓应用程序文件得到摘要值。
2、判断是否存在相同的摘要值;当不存在相同的摘要值时,从数字证书中获取签名者信息,根据签名者信息判断签名者是否为开发者。
3、当签名者为开发者时,将摘要值发送至预先获取的数字证书对应的数字证书接口,以使数字证书接口对摘要值进行签名得到第一签名信息。接收来自数字证书接口的第一签名信息,将第一签名信息加上时间戳,得到第一时间戳签名信息。对第一签名信息、数字证书和第一时间戳信息进行打包,得到第一打包签名数据。
4、当不存在相同的摘要值时,从数字证书中获取签名者信息。根据签名者信息判断签名者是否为开发者。
5、当签名者不是开发者时,将摘要值发送至预先获取的检测认证机构,以使检测认证机构对摘要值进行签名得到第二签名信息。接收来自检测认证机构的第二签名信息,将第二签名信息加上时间戳,得到第二时间戳签名信息。对第二签名信息、数字证书和第二时间戳信息进行打包,得到第二打包签名数据。
综上,本发明所提供的安卓应用程序签名方法不用修改原生签名APK(安卓应用程序)文件,也不增加新的附加数据,所以不依赖安卓版本签名机制,完整保留了原有APK的正常安装时使用。APK相关方可以利用合法的数字证书对APK文件进行可靠联合签名验签,将签名信息安全存储在APK文件以外的第三方APK安卓应用程序签名装置中,保证了签名后的APK符合《电子签名法》的相关要求,实现了APK的完整性和开发者身份的溯源,另外本发明还适用APK行业需要,支持检测机构、认证机构和渠道多方无序签名,所有签名者签名行为具有不可抵赖性,为更进一步规范APK管理和查处违规APK提供了身份基础信息和可信电子证据,可有效的杜绝境内外非法授权APK、减少山寨APK和违规APK的出现,同时为应用商店、终端设备和最终用户传递信任信息。
图4是本发明实施例中安卓应用程序验签方法的流程图。图5是本发明实施例中安卓应用程序验签方法的具体流程图。如图4-图5所示,安卓应用程序验签方法包括:
S401:查询预先获取的摘要值对应的第一打包签名数据。
在执行S401之前,还包括:依赖方(依赖方是基于对签名认证证书或者签名的信赖从事有关活动的人,如应用商店、终端设备和监管机构)获得带开发者自签名的APK文件,按照同样的摘要算法对APK文件进行摘要运算获得摘要值。
其中,依赖方验证一个APK文件是否经过第三方签名时,只需要调用验签子系统的验证接口就可查询到该APK文件的签名历史记录。验签子系统功能是一个对依赖方开放的功能。摘要值即APK文件的唯一码,每一个APK文件有且仅有一个唯一码。
S402:对第一打包签名数据中的第一签名信息、数字证书和第一时间戳签名信息进行验证。
S403:当数字证书对应的签名者为开发者且第一签名信息和第一时间戳签名信息均验证通过时,返回验证成功结果。
一实施例中,当第一打包签名数据中的签名者不是开发者时,退出验证。如果根据摘要值未查询到任何签名者时也退出验证。签名验证流程可以遵循《GB/T 25064-2010信息安全技术公钥基础设施电子签名格式规范》ES-C的验证流程。
图4所示的安卓应用程序签名方法的执行主体可以为安卓应用程序验签装置。由图4所示的流程可知,本发明实施例的安卓应用程序验签方法查询摘要值对应的第一打包签名数据,当数字证书对应的签名者为开发者且第一签名信息和第一时间戳签名信息均验证通过时返回验证成功结果,可以提供统一、不受安卓系统制约的安卓应用程序验签平台,为开发者和用户传递可靠信息,有效杜绝非法安卓应用程序,保障开发者和用户的权益。
一实施例中,安卓应用程序验签方法还包括:
查询预先获取的摘要值对应的第二打包签名数据;
对第二打包签名数据中的第二签名信息和第二时间戳签名信息进行验证;
此时S403包括:当数字证书对应的签名者为开发者且第一签名信息、第一时间戳签名信息、第二签名信息和第二时间戳签名信息均验证通过时,返回验证成功结果。
具体实施时,本申请会根据先后时间顺序逐一进行验证。验证成功结果会通过XML方式返回给依赖方。
安卓应用程序验签方法的具体流程如下:
1、查询预先获取的摘要值对应的第一打包签名数据和第二打包签名数据。
2、对第一打包签名数据中的第一签名信息、数字证书和第一时间戳签名信息进行验证。
3、对第二打包签名数据中的第二签名信息和第二时间戳签名信息进行验证。
4、当数字证书对应的签名者为开发者且第一签名信息、第一时间戳签名信息、第二签名信息和第二时间戳签名信息均验证通过时,返回验证成功结果。
综上,本发明实施例的安卓应用程序验签方法查询摘要值对应的第一打包签名数据,当数字证书对应的签名者为开发者且第一签名信息和第一时间戳签名信息均验证通过时返回验证成功结果,可以提供统一、不受安卓系统制约的安卓应用程序验签平台,为开发者和用户传递可靠信息,有效杜绝非法安卓应用程序,保障开发者和用户的权益。
基于同一发明构思,本发明实施例还提供了一种安卓应用程序签名装置,由于该装置解决问题的原理与安卓应用程序签名方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。
图6是本发明实施例中安卓应用程序签名装置的结构框图。如图6所示,安卓应用程序签名装置包括:
摘要值确定单元,用于根据预先获取的安卓应用程序文件得到摘要值;
发送单元,用于将摘要值发送至预先获取的数字证书对应的数字证书接口,以使数字证书接口对摘要值进行签名得到第一签名信息;
时间戳单元,用于接收来自数字证书接口的第一签名信息,将第一签名信息加上时间戳,得到第一时间戳签名信息;
打包单元,用于对第一签名信息、数字证书和第一时间戳信息进行打包,得到第一打包签名数据。
在其中一种实施例中,还包括:
第一判断单元,用于判断是否存在相同的摘要值;
获取单元,用于当不存在相同的摘要值时,从数字证书中获取签名者信息;
第二判断单元,用于根据签名者信息判断签名者是否为开发者;
发送单元具体用于:当签名者为开发者时,将摘要值发送至预先获取的数字证书对应的数字证书接口,以使数字证书接口对摘要值进行签名得到第一签名信息。
在其中一种实施例中,获取单元还用于:当存在相同的摘要值时,从数字证书中获取签名者信息;
第二判断单元用于:根据签名者信息判断签名者是否为开发者;
发送单元还用于:当签名者不是开发者时,将摘要值发送至预先获取的检测认证机构,以使检测认证机构对摘要值进行签名得到第二签名信息;
时间戳单元还用于:接收来自检测认证机构的第二签名信息,将第二签名信息加上时间戳,得到第二时间戳签名信息;
打包单元还用于:对第二签名信息、数字证书和第二时间戳信息进行打包,得到第二打包签名数据。
综上,本发明实施例的安卓应用程序签名装置先根据安卓应用程序文件得到摘要值,再将摘要值发送至数字证书对应的数字证书接口以使数字证书接口对摘要值进行签名得到第一签名信息,然后将第一签名信息加上时间戳,得到第一时间戳签名信息,最后对第一签名信息、数字证书和第一时间戳信息进行打包,得到第一打包签名数据,可以提供统一、不受安卓系统制约的安卓应用程序签名平台,为开发者和用户传递可靠信息,保障开发者和用户的权益。
基于同一发明构思,本发明实施例还提供了一种安卓应用程序验签装置,由于该装置解决问题的原理与安卓应用程序验签方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。
图7是本发明实施例中安卓应用程序验签装置的结构框图。如图7所示,安卓应用程序验签装置包括:
查询单元,用于查询预先获取的摘要值对应的第一打包签名数据;
验证单元,用于对第一打包签名数据中的第一签名信息、数字证书和第一时间戳签名信息进行验证;
返回单元,用于当数字证书对应的签名者为开发者且第一签名信息和第一时间戳签名信息均验证通过时,返回验证成功结果。
在其中一种实施例中,还包括:
查询单元还用于:预先获取的摘要值对应的第二打包签名数据;
验证单元还用于:对第二打包签名数据中的第二签名信息和第二时间戳签名信息进行验证;
返回单元具体用于:
当数字证书对应的签名者为开发者且第一签名信息、第一时间戳签名信息、第二签名信息和第二时间戳签名信息均验证通过时,返回验证成功结果。
综上,本发明实施例的安卓应用程序验签装置查询摘要值对应的第一打包签名数据,当数字证书对应的签名者为开发者且第一签名信息和第一时间戳签名信息均验证通过时返回验证成功结果,可以提供统一、不受安卓系统制约的安卓应用程序验签平台,为开发者和用户传递可靠信息,有效杜绝非法安卓应用程序,保障开发者和用户的权益。
基于同一发明构思,本发明实施例还提供了一种安卓应用程序签名验签系统。图8是本发明实施例中安卓应用程序签名验签系统的结构框图。如图8所示,安卓应用程序签名验签系统包括如上所述的安卓应用程序签名装置,以及如上所述的安卓应用程序验签装置。
图9是本发明另一实施例中安卓应用程序签名验签系统的示意图。如图9所示,在实际应用中,安卓应用程序签名验签系统包括用户管理模块、CA机构管理模块、应用管理模块、签名子系统、时间戳子系统和验签子系统。
其中,应用管理模块包括摘要值确定单元、签名子系统包括发送单元、第一判断单元、获取单元和第二判断单元。时间戳子系统包括时间戳单元和打包单元,验签子系统包括查询单元、验证单元和返回单元。
综上,本发明实施例的安卓应用程序签名验签系统可以提供统一、不受安卓系统制约的安卓应用程序签名验签平台,为开发者和用户传递可靠信息,有效杜绝非法安卓应用程序,保障开发者和用户的权益。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
本领域技术人员还可以了解到本发明实施例列出的各种说明性逻辑块(illustrative logical block),单元,和步骤可以通过电子硬件、电脑软件,或两者的结合进行实现。为清楚展示硬件和软件的可替换性(interchangeability),上述的各种说明性部件(illustrative components),单元和步骤已经通用地描述了它们的功能。这样的功能是通过硬件还是软件来实现取决于特定的应用和整个系统的设计要求。本领域技术人员可以对于每种特定的应用,可以使用各种方法实现所述的功能,但这种实现不应被理解为超出本发明实施例保护的范围。
本发明实施例中所描述的各种说明性的逻辑块,或单元,或装置都可以通过通用处理器,数字信号处理器,专用集成电路(ASIC),现场可编程门阵列或其它可编程逻辑装置,离散门或晶体管逻辑,离散硬件部件,或上述任何组合的设计来实现或操作所描述的功能。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。
本发明实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件模块、或者这两者的结合。软件模块可以存储于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于ASIC中,ASIC可以设置于用户终端中。可选地,处理器和存储媒介也可以设置于用户终端中的不同的部件中。
在一个或多个示例性的设计中,本发明实施例所描述的上述功能可以在硬件、软件、固件或这三者的任意组合来实现。如果在软件中实现,这些功能可以存储与电脑可读的媒介上,或以一个或多个指令或代码形式传输于电脑可读的媒介上。电脑可读媒介包括电脑存储媒介和便于使得让电脑程序从一个地方转移到其它地方的通信媒介。存储媒介可以是任何通用或特殊电脑可以接入访问的可用媒体。例如,这样的电脑可读媒体可以包括但不限于RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁性存储装置,或其它任何可以用于承载或存储以指令或数据结构和其它可被通用或特殊电脑、或通用或特殊处理器读取形式的程序代码的媒介。此外,任何连接都可以被适当地定义为电脑可读媒介,例如,如果软件是从一个网站站点、服务器或其它远程资源通过一个同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或以例如红外、无线和微波等无线方式传输的也被包含在所定义的电脑可读媒介中。所述的碟片(disk)和磁盘(disc)包括压缩磁盘、镭射盘、光盘、DVD、软盘和蓝光光盘,磁盘通常以磁性复制数据,而碟片通常以激光进行光学复制数据。上述的组合也可以包含在电脑可读媒介中。
Claims (11)
1.一种安卓应用程序签名方法,其特征在于,包括:
根据预先获取的安卓应用程序文件得到摘要值;
将所述摘要值发送至预先获取的数字证书对应的数字证书接口,以使所述数字证书接口对所述摘要值进行签名得到第一签名信息;
接收来自所述数字证书接口的所述第一签名信息,将所述第一签名信息加上时间戳,得到第一时间戳签名信息;
对所述第一签名信息、所述数字证书和所述第一时间戳信息进行打包,得到第一打包签名数据。
2.根据权利要求1所述的安卓应用程序签名方法,其特征在于,根据预先获取的安卓应用程序文件得到摘要值之后,还包括:
判断是否存在相同的摘要值;
当不存在相同的摘要值时,从所述数字证书中获取签名者信息;
根据所述签名者信息判断签名者是否为开发者;
当所述签名者为开发者时,将所述摘要值发送至预先获取的数字证书对应的数字证书接口,以使所述数字证书接口对所述摘要值进行签名得到第一签名信息。
3.根据权利要求2所述的安卓应用程序签名方法,其特征在于,还包括:
当存在相同的摘要值时,从所述数字证书中获取签名者信息;
根据所述签名者信息判断签名者是否为开发者;
当所述签名者不是开发者时,将所述摘要值发送至预先获取的检测认证机构,以使所述检测认证机构对所述摘要值进行签名得到第二签名信息;
接收来自所述检测认证机构的所述第二签名信息,将所述第二签名信息加上时间戳,得到第二时间戳签名信息;
对所述第二签名信息、所述数字证书和所述第二时间戳信息进行打包,得到第二打包签名数据。
4.一种安卓应用程序验签方法,其特征在于,包括:
查询预先获取的摘要值对应的第一打包签名数据;
对所述第一打包签名数据中的第一签名信息、数字证书和第一时间戳签名信息进行验证;
当所述数字证书对应的签名者为开发者且所述第一签名信息和所述第一时间戳签名信息均验证通过时,返回验证成功结果。
5.根据权利要求4所述的安卓应用程序验签方法,其特征在于,还包括:
查询预先获取的摘要值对应的第二打包签名数据;
对所述第二打包签名数据中的第二签名信息和第二时间戳签名信息进行验证;
当所述数字证书对应的签名者为开发者且所述第一签名信息和所述第一时间戳签名信息验证通过时,返回验证成功结果包括:
当所述数字证书对应的签名者为开发者且所述第一签名信息、所述第一时间戳签名信息、所述第二签名信息和所述第二时间戳签名信息均验证通过时,返回验证成功结果。
6.一种安卓应用程序签名装置,其特征在于,包括:
摘要值确定单元,用于根据预先获取的安卓应用程序文件得到摘要值;
发送单元,用于将所述摘要值发送至预先获取的数字证书对应的数字证书接口,以使所述数字证书接口对所述摘要值进行签名得到第一签名信息;
时间戳单元,用于接收来自所述数字证书接口的所述第一签名信息,将所述第一签名信息加上时间戳,得到第一时间戳签名信息;
打包单元,用于对所述第一签名信息、所述数字证书和所述第一时间戳信息进行打包,得到第一打包签名数据。
7.根据权利要求6所述的安卓应用程序签名装置,其特征在于,还包括:
第一判断单元,用于判断是否存在相同的摘要值;
获取单元,用于当不存在相同的摘要值时,从所述数字证书中获取签名者信息;
第二判断单元,用于根据所述签名者信息判断签名者是否为开发者;
所述发送单元具体用于:当所述签名者为开发者时,将所述摘要值发送至预先获取的数字证书对应的数字证书接口,以使所述数字证书接口对所述摘要值进行签名得到第一签名信息。
8.根据权利要求7所述的安卓应用程序签名装置,其特征在于,
所述获取单元还用于:当存在相同的摘要值时,从所述数字证书中获取签名者信息;
所述第二判断单元用于:根据所述签名者信息判断签名者是否为开发者;
所述发送单元还用于:当所述签名者不是开发者时,将所述摘要值发送至预先获取的检测认证机构,以使所述检测认证机构对所述摘要值进行签名得到第二签名信息;
所述时间戳单元还用于:接收来自所述检测认证机构的所述第二签名信息,将所述第二签名信息加上时间戳,得到第二时间戳签名信息;
所述打包单元还用于:对所述第二签名信息、所述数字证书和所述第二时间戳信息进行打包,得到第二打包签名数据。
9.一种安卓应用程序验签装置,其特征在于,包括:
查询单元,用于查询预先获取的摘要值对应的第一打包签名数据;
验证单元,用于对所述第一打包签名数据中的第一签名信息、数字证书和第一时间戳签名信息进行验证;
返回单元,用于当所述数字证书对应的签名者为开发者且所述第一签名信息和所述第一时间戳签名信息均验证通过时,返回验证成功结果。
10.根据权利要求9所述的安卓应用程序验签装置,其特征在于,还包括:
所述查询单元还用于:预先获取的摘要值对应的第二打包签名数据;
所述验证单元还用于:对所述第二打包签名数据中的第二签名信息和第二时间戳签名信息进行验证;
所述返回单元具体用于:
当所述数字证书对应的签名者为开发者且所述第一签名信息、所述第一时间戳签名信息、所述第二签名信息和所述第二时间戳签名信息均验证通过时,返回验证成功结果。
11.一种安卓应用程序签名验签系统,其特征在于,包括:
权利要求6-8任一权利要求所述的安卓应用程序签名装置;以及
权利要求9-10任一权利要求所述的安卓应用程序验签装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010608855.8A CN111814136A (zh) | 2020-06-30 | 2020-06-30 | 安卓应用程序签名及验签方法、装置、以及签名验签系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010608855.8A CN111814136A (zh) | 2020-06-30 | 2020-06-30 | 安卓应用程序签名及验签方法、装置、以及签名验签系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111814136A true CN111814136A (zh) | 2020-10-23 |
Family
ID=72856569
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010608855.8A Pending CN111814136A (zh) | 2020-06-30 | 2020-06-30 | 安卓应用程序签名及验签方法、装置、以及签名验签系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111814136A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112134905A (zh) * | 2020-11-20 | 2020-12-25 | 深圳市房多多网络科技有限公司 | 基于安卓系统的签名方法、装置以及设备 |
CN113938328A (zh) * | 2021-12-18 | 2022-01-14 | 中建电子商务有限责任公司 | 一种接口验签的方法和系统 |
CN115296814A (zh) * | 2022-07-25 | 2022-11-04 | 浪潮云信息技术股份公司 | 一种基于用户的签名验签方法 |
CN115987529A (zh) * | 2023-01-31 | 2023-04-18 | 深圳市新国都支付技术有限公司 | 基于鸿蒙系统的app签名方法、电子设备和存储介质 |
US11750732B1 (en) | 2023-02-20 | 2023-09-05 | 14788591 Canada Inc. | System for introducing features to an in-vehicle infotainment system and method of use thereof |
CN117335988A (zh) * | 2023-11-30 | 2024-01-02 | 中国信息通信研究院 | App的电子标识生成、标注、安全校验方法及设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104092544A (zh) * | 2014-06-26 | 2014-10-08 | 工业和信息化部计算机与微电子发展研究中心(中国软件评测中心) | 兼容安卓应用的服务签名方法与装置 |
CN106209379A (zh) * | 2016-07-04 | 2016-12-07 | 江苏先安科技有限公司 | 一种Android APK副署签名验证方法 |
CN107994993A (zh) * | 2017-11-21 | 2018-05-04 | 北京奇虎科技有限公司 | 应用程序检测方法及装置 |
CN110414190A (zh) * | 2019-07-30 | 2019-11-05 | 宇龙计算机通信科技(深圳)有限公司 | 应用安装包的签名方法、相关装置、存储介质及电子设备 |
CN113419769A (zh) * | 2021-06-23 | 2021-09-21 | 中国信息通信研究院 | 一种应用软件管理方法及装置 |
-
2020
- 2020-06-30 CN CN202010608855.8A patent/CN111814136A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104092544A (zh) * | 2014-06-26 | 2014-10-08 | 工业和信息化部计算机与微电子发展研究中心(中国软件评测中心) | 兼容安卓应用的服务签名方法与装置 |
CN106209379A (zh) * | 2016-07-04 | 2016-12-07 | 江苏先安科技有限公司 | 一种Android APK副署签名验证方法 |
CN107994993A (zh) * | 2017-11-21 | 2018-05-04 | 北京奇虎科技有限公司 | 应用程序检测方法及装置 |
CN110414190A (zh) * | 2019-07-30 | 2019-11-05 | 宇龙计算机通信科技(深圳)有限公司 | 应用安装包的签名方法、相关装置、存储介质及电子设备 |
CN113419769A (zh) * | 2021-06-23 | 2021-09-21 | 中国信息通信研究院 | 一种应用软件管理方法及装置 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112134905A (zh) * | 2020-11-20 | 2020-12-25 | 深圳市房多多网络科技有限公司 | 基于安卓系统的签名方法、装置以及设备 |
CN112134905B (zh) * | 2020-11-20 | 2021-02-09 | 深圳市房多多网络科技有限公司 | 基于安卓系统的签名方法、装置以及设备 |
CN113938328A (zh) * | 2021-12-18 | 2022-01-14 | 中建电子商务有限责任公司 | 一种接口验签的方法和系统 |
CN115296814A (zh) * | 2022-07-25 | 2022-11-04 | 浪潮云信息技术股份公司 | 一种基于用户的签名验签方法 |
CN115987529A (zh) * | 2023-01-31 | 2023-04-18 | 深圳市新国都支付技术有限公司 | 基于鸿蒙系统的app签名方法、电子设备和存储介质 |
US11750732B1 (en) | 2023-02-20 | 2023-09-05 | 14788591 Canada Inc. | System for introducing features to an in-vehicle infotainment system and method of use thereof |
CN117335988A (zh) * | 2023-11-30 | 2024-01-02 | 中国信息通信研究院 | App的电子标识生成、标注、安全校验方法及设备 |
CN117335988B (zh) * | 2023-11-30 | 2024-03-12 | 中国信息通信研究院 | App的电子标识生成、标注、安全校验方法及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111814136A (zh) | 安卓应用程序签名及验签方法、装置、以及签名验签系统 | |
CN109409122B (zh) | 文件存储方法及其电子设备、存储介质 | |
CN108684041B (zh) | 登录认证的系统和方法 | |
KR101740256B1 (ko) | 모바일 앱 무결성 보증 장치 및 방법 | |
KR20220067536A (ko) | 분산적 데이터 인증 | |
CN109905360B (zh) | 数据验证方法及终端设备 | |
US20150113618A1 (en) | Verifying the security of a remote server | |
CN102685727B (zh) | 一种应用程序发送、运行方法、系统、服务器和终端 | |
CN109242404B (zh) | 履历信息管理方法、装置、计算机设备与可读存储介质 | |
US20100115269A1 (en) | Revoking Malware in a Computing Device | |
CN108496323B (zh) | 一种证书导入方法及终端 | |
CN108923925B (zh) | 应用于区块链的数据存储方法和装置 | |
CN110598377A (zh) | 基于区块链的软件序列号管理方法以及装置 | |
CN114444134A (zh) | 一种数据使用授权方法、系统及装置 | |
CN111277418B (zh) | 一种实现Api接口安全性的方法 | |
US8745375B2 (en) | Handling of the usage of software in a disconnected computing environment | |
CN116186787B (zh) | 一种基于区块链技术的数据存证方法及系统 | |
CN105873030A (zh) | 一种对终端应用进行副署签名的方法 | |
CN110034922B (zh) | 请求处理方法、处理装置以及请求验证方法、验证装置 | |
CN104994503B (zh) | 一种移动应用访问方法 | |
CN115225350B (zh) | 基于国密证书的政务云加密登录验证方法及存储介质 | |
CN115225346B (zh) | 一种面向征信大数据领域的数据存证系统 | |
TWI546698B (zh) | 基於伺服器的登入系統、登入驗證伺服器及其驗證方法 | |
Kumagai et al. | Distributed Public Key Certificate‐Issuing Infrastructure for Consortium Certificate Authority Using Distributed Ledger Technology | |
CN104518880A (zh) | 一种基于随机抽样检测的大数据可信性验证方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |