最新校验方法及装置与流程

将乐信息网 http://www.jianglexinxi.cn 2020-10-17 21:35 出处:网络
这里写的最新校验方法及装置与流程,下面小编就为大家带来详细介绍,接着往下看吧~

这里写的最新校验方法及装置与流程,下面小编就为大家带来详细介绍,接着往下看吧~


本公开涉及电子设备领域,尤其涉及校验方法及装置。



背景技术:

安卓(Android)系统拥有安装包(Android Package,APK)签名校验机制,该签名机制是安卓系统用来标识开发者身份的一种方式,用来保护应用程序升级、支持应用程序模块化以及为应用程序之间共享数据和代码提供权限控制。



技术实现要素:

本公开实施例提供校验方法及装置。所述技术方案如下:

根据本公开实施例的第一方面,提供一种校验方法,包括:

将特定应用程序编程接口API的调用权限信息打包在应用的安装包APK中,完成针对特殊权限的应用的声明;

在系统运行过程中监测所述应用针对所述特定API的调用请求;

当监测到所述应用针对特定API的调用请求时,从所述应用的APK中查询对所述特定API的调用权限信息,若查询到对所述特定API的调用权限信息,则允许调用所述特定API,否则禁止调用所述特定API。

本公开的实施例提供的技术方案可以包括以下有益效果:将允许调用的特定API打包在应用的APK之中,并在运行时针对特定API调用,去调用者的APK中查询相应API,从而达到精确控制的目的。

在一个实施例中,所述将特定API的调用权限信息打包在应用的APK中,完成针对特殊权限的应用的声明包括:

在所述应用的声明文件中声明所述特殊权限,并生成签名文件,所述签名文件中至少定义了所述APK的校验值、可访问API列表和证书有效日期;所述可访问API列表中存储有可访问API的权限调用信息;

在打包所述应用的APK时增加所述签名文件。

本公开的实施例提供的技术方案可以包括以下有益效果:介绍如何完成声明,将需要验证的内容打包在APK中,进一步保证验证的准确定。

在一个实施例中,所述当监测到所述应用针对特定API的调用请求时,从所述应用的APK中查询对所述特定API的调用权限信息,若查询到对所述特定API的调用权限信息,则允许调用所述特定API,否则禁止调用所述特定API,包括:

从所述应用的APK提取所述签名文件及第一当前日期;

验证所述特定API是否在所述签名文件中定义的所述可访问API列表中的API,及所述第一当前日期是否在所述签名文件中所述证书有效日期之内;

当验证所述特定API在所述签名文件中定义的所述可访问API列表中的API,且所述当前日期在所述签名文件中所述证书有效日期之内时,允许调用所述特定API,否则禁止调用所述特定API。

本公开的实施例提供的技术方案可以包括以下有益效果:至少根据日期、校验值和可访问API列表来验证是否可以调用特定API,保证校验的准确性。

在一个实施例中,所述方法还包括:

安装声明为特殊权限的应用时,从所述应用的APK中提取签名文件,所述签名文件用以验证应用合法性,至少包括所述校验值、所述证书有效日期和所述设备列表;

根据所述签名文件,确定是否安装所述应用。

本公开的实施例提供的技术方案可以包括以下有益效果:在安装应用时,进行安装校验,保证安装的应用未被篡改。

在一个实施例中,所述根据所述签名文件,确定是否安装所述应用包括:

获取第二当前日期、存储的预设校验值和本机标识;

验证所述预设校验值与所述校验值是否相同;

验证所述第二当前日期是否在所述证书有效日期之内;

验证所述本机标识是否是所述设备列表中的标识;

其中,当所述预设校验值与所述校验值相同,所述第二当前日期在所述证书有效日期之内,且所述本机标识是否是所述设备列表中的标识时,确定安装所述应用。

本公开的实施例提供的技术方案可以包括以下有益效果:具体介绍如何进行校验,从多角度来保证校验的准确定。

根据本公开实施例的第二方面,提供一种校验装置,包括:

声明模块,用于将特定API的调用权限信息打包在应用的APK中,完成针对特殊权限的应用的声明;

监测模块,用于在系统运行过程中监测所述应用针对所述特定API的调用请求;

查询模块,用于当监测到所述应用针对特定API的调用请求时,从所述应用的APK中查询对所述特定API的调用权限信息,若查询到对所述特定API的调用权限信息,则允许调用所述特定API,否则禁止调用所述特定API。

在一个实施例中,所述声明模块包括:

生成子模块,用于在所述应用的声明文件中声明所述特殊权限,并生成签名文件,所述签名文件中至少定义了所述APK的校验值、可访问API列表和证书有效日期;所述可访问API列表中存储有可访问API的权限调用信息;

增加子模块,用于在打包所述应用的APK时增加所述签名文件。

在一个实施例中,所述查询模块包括:

提取子模块,用于从所述应用的APK提取所述签名文件及第一当前日期;

第一验证子模块,用于验证所述特定API是否在所述签名文件中定义的所述可访问API列表中的API,及所述第一当前日期是否在所述签名文件中所述证书有效日期之内;

处理子模块,用于当验证所述特定API在所述签名文件中定义的所述可访问API列表中的API,且所述当前日期在所述签名文件中所述证书有效日期之内时,允许调用所述特定API,否则禁止调用所述特定API。

在一个实施例中,所述装置还包括:

提取模块,用于安装声明为特殊权限的应用时,从所述应用的APK中提取签名文件,所述签名文件用以验证应用合法性,至少包括所述校验值、所述证书有效日期和所述设备列表;

确定模块,用于根据所述签名文件,确定是否安装所述应用。

在一个实施例中,所述确定模块包括:

获取子模块,用于获取第二当前日期、存储的预设校验值和本机标识;

第二验证子模块,用于验证所述预设校验值与所述校验值是否相同;验证所述第二当前日期是否在所述证书有效日期之内;验证所述本机标识是否是所述设备列表中的标识;

其中,当所述预设校验值与所述校验值相同,所述第二当前日期在所述证书有效日期之内,且所述本机标识是否是所述设备列表中的标识时,确定安装所述应用。

根据本公开实施例的第三方面,提供一种校验装置,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为:

将特定应用程序编程接口API的调用权限信息打包在应用的安装包APK中,完成针对特殊权限的应用的声明;

在系统运行过程中监测所述应用针对所述特定API的调用请求;

当监测到所述应用针对特定API的调用请求时,从所述应用的APK中查询对所述特定API的调用权限信息,若查询到对所述特定API的调用权限信息,则允许调用所述特定API,否则禁止调用所述特定API。

根据本公开实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述方法的步骤。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

图1是根据一示例性实施例示出的验证方法的流程图。

图2是根据一示例性实施例示出的验证方法的流程图。

图3是根据一示例性实施例示出的验证方法的流程图。

图4是根据一示例性实施例示出的验证方法的流程图。

图5是根据一示例性实施例示出的验证方法的流程图。

图6是根据一示例性实施例示出的验证装置的框图。

图7是根据一示例性实施例示出的验证装置的框图。

图8是根据一示例性实施例示出的验证装置的框图。

图9是根据一示例性实施例示出的验证装置的框图。

图10是根据一示例性实施例示出的验证装置的框图。

图11是根据一示例性实施例示出的验证装置的框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

相关技术中,安卓系统原有的签名校验机制分为APK签名和签名校验两个部分。在对APK进行签名分为三个步骤:a)对包中的每一个文件做一次摘要算法,存放到MANIFEST.MF中;b)对MANIFEST.MF整个文件做一次摘要算法,存放到.SF文件的头属性中,再对MANIFEST.MF文件中各个属性块做一次摘要算法,存放到对应属性块中;c)最后使用开发者的私钥对.SF文件做签名,内容存放到.RSA中。

在进行APK安装时,安卓系统先逆向进行前两个步骤,然后从.RSA文件中提取开发者公钥,使用公钥对.SF文件做数字签名并与.RSA文件中的.SF签名对比。以上校验通过,可以确认APK内容未被篡改。此外在安卓系统中,应用可以自己声明保护级别为“签名”的权限,只允许被相同的数字证书签名的应用访问该权限保护的数据和代码。

但是Android原生的签名校验机制,能保证安装的APK未被篡改,并且为应用间共享数据和代码提供权限控制的支持,但是安卓系统原有的签名校验机制粒度过大,无法做到精确控制具体应用程序编程接口(Application Programming Interface,API)API调用。

图1是根据一示例性实施例示出的一种校验方法的流程图,如图1所示,校验方法用于校验装置中,该装置应用于终端中,该方法包括以下步骤101-103:

在步骤101中,将特定API的调用权限信息打包在应用的APK中,完成针对特殊权限的应用的声明。

在步骤102中,在系统运行过程中监测应用针对特定API的调用请求。

在步骤103中,当监测到应用针对特定API的调用请求时,从应用的APK中查询对特定API的调用权限信息。

在步骤104中,若查询到对特定API的调用权限信息,则允许调用特定API。

在步骤105中,若未查询到对特定API的调用权限信息,则禁止调用特定API。

本实施例中,将允许调用的特定API打包在应用的APK之中,并在运行时针对特定API调用,去调用者的APK中查询相应API,从而达到精确控制的目的。

在一个实施例中,步骤101包括:

在应用的声明文件中声明特殊权限,并生成签名文件,这里,签名文件中至少定义了APK的校验值、可访问API列表和证书有效日期;可访问API列表中存储有可访问API的权限调用信息;在打包应用的APK时增加签名文件。签名文件还可以包括扩展权限列表。

这里,校验值可以是APKhash,即APK的哈希值,该哈希值是安装包中各个文件的通过哈希算法得到的结果。值得说明的是,本实施例的校验校验值和校验值可以是通过哈希算法得到的,也可以通过其他算法得到的,本实施例对此不做限制。本实施例中,如果证书、APKHash为空,可跳过此步骤,同时设备列表不可为空。

本实施例中,在应用Manifest.xml之中声明特殊权限,并在打包安装包时增加一个额外的.CER文件(.CER文件为本实施例中的签名文件),该.CER文件之中定义了APKHash(校验值)、设备列表、API列表、证书的有效期限、可扩展API等。在整个安装应用过程中,在完成Android原生的签名步骤之后,额外使用开发者私钥对.CER文件进行签名,并把签名后的内容存到SIGNEDCER文件中。以便于在安装时,可以根据该签名后的内容对该.CER文件进行验证,判断该.CER文件是否被篡改。

此外在安卓系统中,应用可以自己声明保护级别设置为“signature(签名)”的权限,只允许被相同的数字证书签名的应用访问该权限保护的数据和代码。

在一个实施例中,步骤103可以包括:从应用的APK提取签名文件及第一当前日期;验证特定API是否在所述签名文件中定义的可访问API列表中的API,及第一当前日期是否在签名文件中证书有效日期之内;

相应的,步骤104可以包括:当验证特定API在签名文件中定义的可访问API列表中的API,且当前日期在签名文件中证书有效日期之内时,允许调用特定API;

相应的,步骤105可以包括:当验证特定API不在签名文件中定义的可访问API列表中的API,或当前日期不在签名文件中证书有效日期之内时,禁止调用特定API。

进一步的,所述方法还包括:

安装声明为特殊权限的应用时,从应用的APK中提取签名文件,这里,签名文件用以验证应用合法性,至少包括校验值、证书有效日期和设备列表;根据签名文件,确定是否安装应用。

这里,安装应用是指通过该APK安装应用。这里应用合法性是指该应用未被篡改,该应用的APK未被篡改。

本实施例中,应用的APK可以是提前用公钥加密的APK,装置可以通过私钥解密,保证APK不会被篡改。同样的,还可以使用开发者公钥对签名文件进行签名,存储的签名(上文所说SIGNEDCER文件中存储的)进行对比,保证签名文件未被篡改。这里,存储的签名是通过安卓系统原有的签名校验机制得到的签名。

在一个实施例中,所述根据签名文件,确定是否安装应用包括:

获取第二当前日期、存储的预设校验值和本机标识;验证预设校验值与校验值是否相同;验证第二当前日期是否在证书有效日期之内;验证本机标识是否是设备列表中的标识;

其中,当预设校验值与校验值相同,第二当前日期在证书有效日期之内,且本机标识是否是设备列表中的标识时,确定安装应用。

值得说明的是,如果签名文件中没有设备列表,那么可以认为设备列表为空,只需当预设校验值与所述校验值相同,且第二当前日期在证书有效日期之内时,确定安装应用。预设校验值可以是对APK整体做了一次算法得到的结果,也可以是对APK中每一个文件做了一次算法得到的结果,该算法可以是摘要算法。相应的,校验值同样需要通过相同的算法得到的结果。

本实施例中的本机标识可以是表示本机的唯一标识。例如,国际移动设备身份码(International Mobile Equipment Identity,IMEI)。

值得说明的是,本实施例中的API列表可以不存储在装置内的存储空间,而是存储在云服务器中,当需要验证时,或者,在安装应用之后,可以向云服务器发送用于请求该应用的可调用API列表的请求,云服务器根据该请求向装置发送可调用API列表。

实施例二

图2是根据一示例性实施例示出的一种校验方法的流程图,如图2所示,校验方法用于校验装置中,该校验装置应用于终端设备,该方法包括以下步骤201-210,

在步骤201中,在应用的声明文件中声明特殊权限,并生成签名文件。

这里,签名文件中至少定义了APK的校验值、可访问API列表和证书有效日期;可访问API列表中存储有可访问API的权限调用信息。

在步骤202中,在打包应用的APK时增加签名文件。

在步骤203中,安装声明为特殊权限的应用时,从应用的APK中提取签名文件。

这里,签名文件用以验证应用合法性,至少包括校验值、证书有效日期和设备列表。

在步骤204中,获取第二当前日期、存储的预设校验值和本机标识。

预设校验值存储在MANIFEST.SF文件中。

在步骤205中,验证预设校验值与校验值是否相同;验证第二当前日期是否在证书有效日期之内;验证本机标识是否是设备列表中的标识。若是,则执行步骤206;若任一否,则结束本次流程。

在步骤206中,通过APK安装应用。

在步骤207中,在系统运行过程中监测应用针对特定API的调用请求。

在步骤208中,当监测到应用针对特定API的调用请求时,从应用的APK提取签名文件及第一当前日期。

在步骤209中,验证特定API是否在签名文件中定义的可访问API列表中的API,及第一当前日期是否在所述签名文件中证书有效日期之内。若是,则执行步骤210;若任一否,则执行步骤211。

在步骤210中,允许调用特定API。

在步骤211中,禁止调用特定API。

本实施例实现了特定API调用的精确权限控制,从而保证在企业定制ROM之中对外提供的高级API只能被可信的应用调用。

实施例三

图3是根据一示例性实施例示出的一种校验方法的流程图,如图3所示,校验方法用于校验装置中,该校验装置应用于终端设备。在企业定制ROM的需求中,为了达到管控设备的目的,要求暴露一些高级别的API,这时为了保证安全性,需要安装未篡改的应用,并在应用运行中调用这些特殊API进行权限校验。

在此之前,开发方需要对应用的APK进行签名,本实施例提供开发方的签名过程,该方法包括以下步骤301-306,

在步骤301中,在应用的声明文件中声明特殊权限,并生成.CER文件。

这里,.CER文件中至少定义了APKhash、可访问API列表和证书有效日期;这里,可访问API列表中存储有可访问API的权限调用信息。每个API的标识与可调用的权限种类相对应。

在步骤302中,在打包应用的APK时增加.CER文件。

在步骤303中,对应用的APK中的每一个文件做一次摘要算法,将得到的第一结果存储在MANIFEST.MF文件中。

在步骤304中,对MANIFEST.MF文件做一次摘要算法,将得到的第二结果存放到MANIFEST.SF文件的头属性中。

在步骤305中,对MANIFEST.MF文件中各个属性块做一次摘要算法,将得到的第三结果存放到对应属性块中。

在步骤306中,使用开发者的私钥对MANIFEST.SF文件做签名,将得到的第四结果存放到.RSA中。

本实施例为安装应用、应用调用API时需要的被验证信息打包到APK中,保证之后验证有验证依据。

图4是根据一示例性实施例示出的一种校验方法的流程图,如图4所示,校验方法用于校验装置中,该校验装置应用于终端设备。当企业需要安装该应用时,该方法可以包括以下步骤307-317,

在步骤307中,对MANIFEST.MF文件中属性块中的第三结果做一次逆向算法,得到MANIFEST.MF文件中各个属性块的第三解析内容。

逆向算法是摘要算法的逆向计算的算法。

在步骤308中,对解析到头属性的第三解析内容做一次逆向算法,得到MANIFEST.MF文件的第二解析内容。

在步骤309中,对第二解析内容做一次逆向算法,得到APK的每个解析文件。

在步骤310中,判断每个解析文件和APK中对应的文件是否相同。若是,则执行步骤311;若否,则执行步骤317。

在步骤311中,从.RSA文件中提取开发者公钥,使用公钥对MANIFEST.SF做签名得到第五结果。

在步骤312中,判断第五结果和第四结果是否相同。若是,则执行步骤313;若否,则执行步骤317。

在步骤313中,从应用的APK中提取.CER文件。

这里,.CER文件用以验证应用合法性,至少包括APKhash、证书有效日期和设备列表。

在步骤314中,获取第二当前日期、预设哈希值和本机IMEI。

这里,预设哈希值是预设校验值。

在步骤315中,验证预设哈希值与APKhash是否相同;验证第二当前日期是否在证书有效日期之内;验证本机IMEI是否是设备列表中的标识。若是,则执行步骤316;若任一否,则执行步骤317。

在步骤316中,允许通过APK安装应用。

在步骤317中,禁止通过APK安装应用。

本实施进行了两次验证,先进行了摘要算法的逆向验证,又根据外加的.CER文件再次进行验证,当两次验证都成功通过才能通过APK安装应用,这样,双重验证进一步保证了APK未篡改。

图5是根据一示例性实施例示出的一种校验方法的流程图,如图4所示,校验方法用于校验装置中,该校验装置应用于终端设备。在企业定制ROM的需求中,为了达到管控设备的目的,要求暴露一些高级别的API,这时为了保证安全性,需要对这些特殊API调用进行权限校验。该方法可以包括318-322,

在步骤318中,在系统运行过程中监测应用针对特定API的调用请求。

在步骤319中,当监测到应用针对特定API的调用请求时,从应用的APK提取.CER文件及第一当前日期。

在步骤320中,验证特定API是否在签名文件中定义的可访问API列表中的API,及第一当前日期是否在签名文件中证书有效日期之内。若是,则执行步骤321;若否,则执行步骤322。

在步骤321中,允许调用特定API。

在步骤322中,禁止调用特定API。

本实施例实现了特定API调用的精确权限控制,从而保证在企业定制ROM之中对外提供的高级API只能被可信的应用调用。

下述为本公开装置实施例,可以用于执行本公开方法实施例。

实施例四

图6是根据一示例性实施例示出的一种校验装置的框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图6所示,该校验装置包括:

声明模块401,用于将特定API的调用权限信息打包在应用的APK中,完成针对特殊权限的应用的声明;

监测模块402,用于在系统运行过程中监测所述应用针对所述特定API的调用请求;

查询模块403,用于当监测到所述应用针对特定API的调用请求时,从所述应用的APK中查询对所述特定API的调用权限信息,若查询到对所述特定API的调用权限信息,则允许调用所述特定API,否则禁止调用所述特定API。

本实施例中,将允许调用的特定API打包在应用的APK之中,并在运行时针对特定API调用,去调用者的APK中查询相应API,从而达到精确控制的目的。

在一个实施例中,如图7所示,所述声明模块401包括:

生成子模块4011,用于在所述应用的声明文件中声明所述特殊权限,并生成签名文件,所述签名文件中至少定义了所述APK的校验值、可访问API列表和证书有效日期;所述可访问API列表中存储有可访问API的权限调用信息;

增加子模块4012,用于在打包所述应用的APK时增加所述签名文件。

在一个实施例中,如图8所示,所述查询模块403包括:

提取子模块4031,用于从所述应用的APK提取所述签名文件及第一当前日期;

第一验证子模块4032,用于验证所述特定API是否在所述签名文件中定义的所述可访问API列表中的API,及所述第一当前日期是否在所述签名文件中所述证书有效日期之内;

处理子模块4033,用于当验证所述特定API在所述签名文件中定义的所述可访问API列表中的API,且所述当前日期在所述签名文件中所述证书有效日期之内时,允许调用所述特定API,否则禁止调用所述特定API。

在一个实施例中,如图9所示,所述装置还包括:

提取模块404,用于安装声明为特殊权限的应用时,从所述应用的APK中提取签名文件,所述签名文件用以验证应用合法性,至少包括所述校验值、所述证书有效日期和所述设备列表;

确定模块405,用于根据所述签名文件,确定是否安装所述应用。

在一个实施例中,如图10所示,所述确定模块405包括:

获取子模块4051,用于获取第二当前日期、存储的预设校验值和本机标识;

第二验证子模块4052,用于验证所述预设校验值与所述校验值是否相同;验证所述第二当前日期是否在所述证书有效日期之内;验证所述本机标识是否是所述设备列表中的标识;

其中,当所述预设校验值与所述校验值相同,所述第二当前日期在所述证书有效日期之内,且所述本机标识是否是所述设备列表中的标识时,确定安装所述应用。

根据本公开实施例的第三方面,提供一种校验装置,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,处理器被配置为:

将特定应用程序编程接口API的调用权限信息打包在应用的安装包APK中,完成针对特殊权限的应用的声明;

在系统运行过程中监测所述应用针对所述特定API的调用请求;

当监测到所述应用针对特定API的调用请求时,从所述应用的APK中查询对所述特定API的调用权限信息,若查询到对所述特定API的调用权限信息,则允许调用所述特定API,否则禁止调用所述特定API。

上述处理器还可被配置为:

所述将特定API的调用权限信息打包在应用的APK中,完成针对特殊权限的应用的声明包括:

在所述应用的声明文件中声明所述特殊权限,并生成签名文件,所述签名文件中至少定义了所述APK的校验值、可访问API列表和证书有效日期;所述可访问API列表中存储有可访问API的权限调用信息;

在打包所述应用的APK时增加所述签名文件。

所述当监测到所述应用针对特定API的调用请求时,从所述应用的APK中查询对所述特定API的调用权限信息,若查询到对所述特定API的调用权限信息,则允许调用所述特定API,否则禁止调用所述特定API,包括:

从所述应用的APK提取所述签名文件及第一当前日期;

验证所述特定API是否在所述签名文件中定义的所述可访问API列表中的API,及所述第一当前日期是否在所述签名文件中所述证书有效日期之内;

当验证所述特定API在所述签名文件中定义的所述可访问API列表中的API,且所述当前日期在所述签名文件中所述证书有效日期之内时,允许调用所述特定API,否则禁止调用所述特定API。

所述方法还包括:

安装声明为特殊权限的应用时,从所述应用的APK中提取签名文件,所述签名文件用以验证应用合法性,至少包括所述校验值、所述证书有效日期和所述设备列表;

根据所述签名文件,确定是否安装所述应用。

所述根据所述签名文件,确定是否安装所述应用包括:

获取第二当前日期、存储的预设校验值和本机标识;

验证所述预设校验值与所述校验值是否相同;

验证所述第二当前日期是否在所述证书有效日期之内;

验证所述本机标识是否是所述设备列表中的标识;

其中,当所述预设校验值与所述校验值相同,所述第二当前日期在所述证书有效日期之内,且所述本机标识是否是所述设备列表中的标识时,确定安装所述应用。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

图11是根据一示例性实施例示出的一种用于校验装置的框图,该装置适用于终端设备。例如,装置1700可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。

装置1700可以包括以下一个或多个组件:处理组件1702,存储器1704,电源组件1706,多媒体组件1708,音频组件1710,输入/输出(I/O)接口1712,传感器组件1714,以及通信组件1716。

处理组件1702通常控制装置1700的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件1702可以包括一个或多个处理器1720来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件1702可以包括一个或多个模块,便于处理组件1702和其他组件之间的交互。例如,处理组件1702可以包括多媒体模块,以方便多媒体组件1708和处理组件1702之间的交互。

存储器1704被配置为存储各种类型的数据以支持在装置1700的操作。这些数据的示例包括用于在装置1700上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器1704可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。

电源组件1706为装置1700的各种组件提供电力。电源组件1706可以包括电源管理系统,一个或多个电源,及其他与为装置1700生成、管理和分配电力相关联的组件。

多媒体组件1708包括在所述装置1700和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件1708包括一个前置摄像头和/或后置摄像头。当装置1700处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。

音频组件1710被配置为输出和/或输入音频信号。例如,音频组件1710包括一个麦克风(MIC),当装置1700处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器1704或经由通信组件1716发送。在一些实施例中,音频组件1710还包括一个扬声器,用于输出音频信号。

I/O接口1712为处理组件1702和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。

传感器组件1714包括一个或多个传感器,用于为装置1700提供各个方面的状态评估。例如,传感器组件1714可以检测到装置1700的打开/关闭状态,组件的相对定位,例如所述组件为装置1700的显示器和小键盘,传感器组件1714还可以检测装置1700或装置1700一个组件的位置改变,用户与装置1700接触的存在或不存在,装置1700方位或加速/减速和装置1700的温度变化。传感器组件1714可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件1714还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件1714还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。

通信组件1716被配置为便于装置1700和其他设备之间有线或无线方式的通信。装置1700可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件1716经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件1716还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。

在示例性实施例中,装置1700可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子组件实现,用于执行上述方法。

在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器1704,上述指令可由装置1700的处理器1720执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。

一种非临时性计算机可读存储介质,当所述存储介质中的指令由装置1700的处理器执行时,使得装置1700能够执行上述校验方法,所述方法包括:

将特定应用程序编程接口API的调用权限信息打包在应用的安装包APK中,完成针对特殊权限的应用的声明;

在系统运行过程中监测所述应用针对所述特定API的调用请求;

当监测到所述应用针对特定API的调用请求时,从所述应用的APK中查询对所述特定API的调用权限信息,若查询到对所述特定API的调用权限信息,则允许调用所述特定API,否则禁止调用所述特定API。

所述将特定API的调用权限信息打包在应用的APK中,完成针对特殊权限的应用的声明包括:

在所述应用的声明文件中声明所述特殊权限,并生成签名文件,所述签名文件中至少定义了所述APK的校验值、可访问API列表和证书有效日期;所述可访问API列表中存储有可访问API的权限调用信息;

在打包所述应用的APK时增加所述签名文件。

所述当监测到所述应用针对特定API的调用请求时,从所述应用的APK中查询对所述特定API的调用权限信息,若查询到对所述特定API的调用权限信息,则允许调用所述特定API,否则禁止调用所述特定API,包括:

从所述应用的APK提取所述签名文件及第一当前日期;

验证所述特定API是否在所述签名文件中定义的所述可访问API列表中的API,及所述第一当前日期是否在所述签名文件中所述证书有效日期之内;

当验证所述特定API在所述签名文件中定义的所述可访问API列表中的API,且所述当前日期在所述签名文件中所述证书有效日期之内时,允许调用所述特定API,否则禁止调用所述特定API。

所述方法还包括:

安装声明为特殊权限的应用时,从所述应用的APK中提取签名文件,所述签名文件用以验证应用合法性,至少包括所述校验值、所述证书有效日期和所述设备列表;

根据所述签名文件,确定是否安装所述应用。

所述根据所述签名文件,确定是否安装所述应用包括:

获取第二当前日期、存储的预设校验值和本机标识;

验证所述预设校验值与所述校验值是否相同;

验证所述第二当前日期是否在所述证书有效日期之内;

验证所述本机标识是否是所述设备列表中的标识;

其中,当所述预设校验值与所述校验值相同,所述第二当前日期在所述证书有效日期之内,且所述本机标识是否是所述设备列表中的标识时,确定安装所述应用。

本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。


技术特征:

1.一种校验方法,其特征在于,所述方法包括:

将特定应用程序编程接口API的调用权限信息打包在应用的安装包APK中,完成针对特殊权限的应用的声明;

在系统运行过程中监测所述应用针对所述特定API的调用请求;

当监测到所述应用针对特定API的调用请求时,从所述应用的APK中查询对所述特定API的调用权限信息,若查询到对所述特定API的调用权限信息,则允许调用所述特定API,否则禁止调用所述特定API。

2.根据权利要求1所述的方法,其特征在于,所述将特定API的调用权限信息打包在应用的APK中,完成针对特殊权限的应用的声明包括:

在所述应用的声明文件中声明所述特殊权限,并生成签名文件,所述签名文件中至少定义了所述APK的校验值、可访问API列表和证书有效日期;所述可访问API列表中存储有可访问API的权限调用信息;

在打包所述应用的APK时增加所述签名文件。

3.根据权利要求1所述的方法,其特征在于,所述当监测到所述应用针对特定API的调用请求时,从所述应用的APK中查询对所述特定API的调用权限信息,若查询到对所述特定API的调用权限信息,则允许调用所述特定API,否则禁止调用所述特定API,包括:

从所述应用的APK提取所述签名文件及第一当前日期;

验证所述特定API是否在所述签名文件中定义的所述可访问API列表中的API,及所述第一当前日期是否在所述签名文件中所述证书有效日期之内;

当验证所述特定API在所述签名文件中定义的所述可访问API列表中的API,且所述当前日期在所述签名文件中所述证书有效日期之内时,允许调用所述特定API,否则禁止调用所述特定API。

4.根据权利要求1所述的方法,其特征在于,所述方法还包括:

安装声明为特殊权限的应用时,从所述应用的APK中提取签名文件,所述签名文件用以验证应用合法性,至少包括所述校验值、所述证书有效日期和所述设备列表;

根据所述签名文件,确定是否安装所述应用。

5.根据权利要求4所述的方法,其特征在于,所述根据所述签名文件,确定是否安装所述应用包括:

获取第二当前日期、存储的预设校验值和本机标识;

验证所述预设校验值与所述校验值是否相同;

验证所述第二当前日期是否在所述证书有效日期之内;

验证所述本机标识是否是所述设备列表中的标识;

其中,当所述预设校验值与所述校验值相同,所述第二当前日期在所述证书有效日期之内,且所述本机标识是否是所述设备列表中的标识时,确定安装所述应用。

6.一种校验装置,其特征在于,所述装置包括:

声明模块,用于将特定API的调用权限信息打包在应用的APK中,完成针对特殊权限的应用的声明;

监测模块,用于在系统运行过程中监测所述应用针对所述特定API的调用请求;

查询模块,用于当监测到所述应用针对特定API的调用请求时,从所述应用的APK中查询对所述特定API的调用权限信息,若查询到对所述特定API的调用权限信息,则允许调用所述特定API,否则禁止调用所述特定API。

7.根据权利要求6所述的装置,其特征在于,所述声明模块包括:

生成子模块,用于在所述应用的声明文件中声明所述特殊权限,并生成签名文件,所述签名文件中至少定义了所述APK的校验值、可访问API列表和证书有效日期;所述可访问API列表中存储有可访问API的权限调用信息;

增加子模块,用于在打包所述应用的APK时增加所述签名文件。

8.根据权利要求6所述的装置,其特征在于,所述查询模块包括:

提取子模块,用于从所述应用的APK提取所述签名文件及第一当前日期;

第一验证子模块,用于验证所述特定API是否在所述签名文件中定义的所述可访问API列表中的API,及所述第一当前日期是否在所述签名文件中所述证书有效日期之内;

处理子模块,用于当验证所述特定API在所述签名文件中定义的所述可访问API列表中的API,且所述当前日期在所述签名文件中所述证书有效日期之内时,允许调用所述特定API,否则禁止调用所述特定API。

9.根据权利要求6所述的装置,其特征在于,所述装置还包括:

提取模块,用于安装声明为特殊权限的应用时,从所述应用的APK中提取签名文件,所述签名文件用以验证应用合法性,至少包括所述校验值、所述证书有效日期和所述设备列表;

确定模块,用于根据所述签名文件,确定是否安装所述应用。

10.根据权利要求9所述的装置,其特征在于,所述确定模块包括:

获取子模块,用于获取第二当前日期、存储的预设校验值和本机标识;

第二验证子模块,用于验证所述预设校验值与所述校验值是否相同;验证所述第二当前日期是否在所述证书有效日期之内;验证所述本机标识是否是所述设备列表中的标识;

其中,当所述预设校验值与所述校验值相同,所述第二当前日期在所述证书有效日期之内,且所述本机标识是否是所述设备列表中的标识时,确定安装所述应用。

11.一种校验装置,其特征在于,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为:

将特定应用程序编程接口API的调用权限信息打包在应用的安装包APK中,完成针对特殊权限的应用的声明;

在系统运行过程中监测所述应用针对所述特定API的调用请求;

当监测到所述应用针对特定API的调用请求时,从所述应用的APK中查询对所述特定API的调用权限信息,若查询到对所述特定API的调用权限信息,则允许调用所述特定API,否则禁止调用所述特定API。

12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-5任一项所述方法的步骤。

技术总结
本公开是关于校验方法及装置。该方法包括:将特定API的调用权限信息打包在应用的APK中,完成针对特殊权限的应用的声明;在系统运行过程中监测所述应用针对所述特定API的调用请求;当监测到所述应用针对特定API的调用请求时,从所述应用的APK中查询对所述特定API的调用权限信息,若查询到对所述特定API的调用权限信息,则允许调用所述特定API,否则禁止调用所述特定API。该技术方案将允许调用的特定API打包在应用的APK之中,并在运行时针对特定API调用,去调用者的APK中查询相应API,从而达到精确控制的目的。

技术研发人员:王乐
受保护的技术使用者:北京小米移动软件有限公司
文档号码:201710262176
技术研发日:2017.04.20
技术公布日:2017.09.15

最新校验方法及装置与流程的相关内容如下:

本文标题:最新校验方法及装置与流程
http://www.jianglexinxi.cn/yanergaozhi/521898.html

0

精彩评论

暂无评论...
验证码 换一张
取 消