一种应用校验方法和装置与流程

文档序号:12123065阅读:245来源:国知局
一种应用校验方法和装置与流程

本申请涉及通信技术领域,尤其涉及一种应用校验方法和装置。



背景技术:

组件可以用于实现软件产品的某项功能,比如可以实现推送技术、图像识别技术、移动支付技术等。开发者通过选择合适的组件集成在应用中即可使应用直接调用该组件的功能,不再需要对应用的每个功能都进行开发。

目前已经有一部分组件实现了收费。为了保障客户和自身的利益,这部分收费的组件需要具备识别各个应用是否有使用本组件的权限。

一种方式是预先在组件的代码中写入有权限应用的签名,当某个集成了组件的应用请求使用该组件的功能时,组件便获取该应用的签名,与自身代码中事先写入的签名进行比较,从而判断该应用是否具有权限。

但这种方式缺乏灵活性,组件需要为每个有权限的应用修改组件自身的代码,因此可操作性不强。



技术实现要素:

有鉴于此,本申请提供一种应用校验方法和装置,能够有效防止组件被非法使用,且无需过多修改组件和应用自身的代码,灵活性高,可操作性强。

具体地,本申请是通过如下技术方案实现的:

本申请第一方面,提供了一种应用校验方法,所述应用集成了组件,所述方法应用于所述组件,包括:

当所述组件被所述应用调用时,向服务端发送唯一特征码获取请求;

接收所述服务端返回的响应;

如果所述响应携带了所述应用的唯一特征码,则

从所述应用中获取所述应用的唯一特征码;

检查从所述应用中获取的唯一特征码与服务端返回的唯一特征码是否一致,如果是则确认所述应用通过校验,如果否则确认所述应用没有通过校验。

本申请第二方面,提供了一种应用校验装置,具有实现上述方法的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块或单元。

一种可能的实现方式中,所述装置包括:

发送单元,用于当集成在应用中的组件被所述应用请求调用时,向服务端发送唯一特征码获取请求;

接收单元,用于接收所述服务端返回的响应;

处理单元,用于如果所述响应携带了所述应用的唯一特征码,则从所述应用中获取所述应用的唯一特征码;检查从所述应用中获取的唯一特征码与服务端返回的唯一特征码是否一致,如果是则确认所述应用通过校验,如果否则确认所述应用没有通过校验。

另一种可能的实现方式中,所述装置包括处理器、收发器和用于存储所述处理器可执行指令的存储器,所述处理器、收发器和存储器之间通过总线相互连接;所述处理器用于执行以下操作:

当集成在应用中的组件被所述应用调用时,通过所述收发器向服务端发送唯一特征码获取请求;

通过所述收发器接收所述服务端返回的响应;

如果所述响应携带了所述应用的唯一特征码,则

从所述应用中获取所述应用的唯一特征码;

检查从所述应用中获取的唯一特征码与服务端返回的唯一特征码是否一致,如果是则确认所述应用通过校验,如果否则确认所述应用没有通过校验。

本申请的以上技术方案,通过将应用真实的唯一特征码保存在服务端,当终端上的应用启动时,由该应用集成的组件与服务端进行交互,从而获取到该应用真实的唯一特征码,通过比较真实的唯一特征码和从该应用中获取的唯一特征码是否一致,来识别该应用是否是仿冒应用,从而能够有效防止组件被仿冒应用非法使用,且这种方式无需过多修改组件和应用自身的代码,灵活性高,可操作性强。

附图说明

图1是本申请实施例提供的一种应用校验方法的流程图;

图2是本申请实施例提供的一种应用校验装置的功能模块框图;

图3是本申请实施例提供的另一种应用校验装置的硬件架构图。

具体实施方式

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

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

以下,对本申请中的部分用语进行解释说明。

本申请中所述的组件是指完成特定功能的软件功能模块,该组件能够被应用软件以静态或动态方式加载调用,或能够与应用软件集成并通过公开的接口被应用软件调用。所述的组件的一种发布形式可以为软件开发工具包(Software Development Kit,SDK)的形式,SDK一般为第三方服务商提供的实现软件产品某项功能的软件开发工具包,应用软件开发商可购买SDK,将SDK包含在自己的应用软件项目中,通过调用SDK中的应用程序接口API来将组件的功能集成到自己的应用中,最终编译连接为一个可执行程序,这种情况下,所述的组件概念既包括SDK形式的代码也包括可执行程序中完成SDK对应功能的可执行程序部分。所述的组件的另一种发布形式可以采用可被应用软件动态加载的形式,例如动态连接库的形式,这种形式的组件可通过移动应用封装(APP Wrapping)等方式与应用软件集成在一起,通过组件公开的接口由应用以静态或动态的形式加载调用。

本申请中所述的组件具有验证应用真伪的功能,在该组件被调用时会自动触发组件内部的验证功能。

“数字证书”,是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。数字证书一般包含以下内容:证书的发布机构(Issuer)、证书的有效期(Validity)、消息发送方的公钥、证书所有者(Subject)、数字签名所使用的算法、数字签名等。

“唯一特征码”,即可唯一确定一个应用的真实身份的特征码,通过该唯一特征码能够鉴别出该应用是否被篡改。具体的,唯一特征码可以是应用的公钥、签名、数字证书或者可执行文件,也可以是应用的公钥指纹、签名指纹、数字证书指纹或者可执行文件指纹。例如,在IOS操作系统上,对应用唯一性的判断可以通过类型为Mach object(Mach-O)的可执行文件进行判断。所谓指纹,即为了确保公钥、签名、数字证书和可执行文件等信息不被篡改,而通过指纹算法对上述信息进行加密所得到的密文。

这里提到的指纹算法可以是“MD5(Message Digest Algorithm,消息摘要算法第五版)”或者“SHA(Secure Hash Algorithm,安全哈希算法)”,或者其它加密算法。MD5和SHA均可以把大容量信息压缩成一种保密的格式,即把一个任意长度的字节串变换成一定长的唯一的整数。其中,MD5的输出是128位,SHA中的SHA1的输出是160位。例如,可执行文件的指纹可以是该可执行文件的MD5值。

下面结合说明书附图和各实施例对本发明技术方案进行说明。

有一些应用比较容易被反编译,从而被进行篡改、植入恶意代码、二次打包,伪造成一个仿冒的应用,仿冒的应用可能具有安全隐患,如窃取用户账号密码、私自添加广告、添加木马病毒等。

目前开发者为了实现应用的某项功能,通常会购买第三方服务商的组件产品,并集成到开发的应用中。如果组件实现的功能涉及安全方面,而一个仿冒的应用集成了该组件并推广使用,将会造成较大的安全隐患,所以组件需要具备识别真正的应用的能力。

每个应用发布之前都必须签名,签名机制也是判断一个应用完整性的唯一校验机制。签名机制不能阻止安装包被修改,但修改后的应用的再签名无法与原先的签名保持一致。而判断签名是否一致,本质在于判断数字证书是否一致。而比对数字证书的本质就在于比对证书公钥,从而可以得出,公钥不同的情况下,则数字证书不同,签名也不同。

基于此,本申请实施例提出了一种应用校验方法和装置,通过将应用真实的唯一特征码保存在服务端,当终端上的应用启动时,由该应用集成的组件与服务端进行交互从而获得该应用真实的唯一特征码,再通过比较真实的唯一特征码和从该应用中获取的唯一特征码是否一致,来识别该应用是否是仿冒应用,从而能够有效防止组件被仿冒应用非法使用。并且在这种方式下,对于组件而言,无需在组件的代码中写入有权限应用的数字签名,因此无需过多修改组件本身的代码,灵活性高,可操作性强;而对于应用而言,现有的应用只需集成本申请提供的组件即可实现防仿冒功能,无需过多修改应用本身的代码,这对现有应用规模部署防盗版功能提供了一种便捷的方式。

本申请提供的技术方案可以适用于移动设备或固定终端设备,如手机、平板电脑、台式电脑等。此外,本申请提供的技术方案的实施不受限于设备使用的操作系统,如可以应用于安卓(Android)操作系统、IOS系统、Windows系统等。

参见图1,图1为本申请实施例提供的方法流程图。其中,图1中的组件集成或被嵌入在应用中,且该组件与服务端保持网络可达,所述方法由组件所执行。如图1所示,该方法可包括以下步骤:

步骤101:服务端获取有权限使用组件功能的应用真实的唯一特征码,并将获取到的真实的唯一特征码存储在本服务端上。

步骤102:当终端上的一个集成了该组件的应用请求调用该组件的功能时,组件向服务端发送唯一特征码获取请求。

组件可以仅在应用第一次请求使用组件的功能时向服务端发送唯一特征码获取请求,以对该应用的权限进行校验,一旦通过便无需再做校验。或者,组件也可以每隔设定周期向服务端发送唯一特征码获取请求,从而定期对应用的权限进行校验。或者,组件也可以在应用每次请求使用组件的功能时均向服务端发送唯一特征码获取请求,以实时检测应用的权限。

步骤103:服务端根据接收的唯一特征码获取请求向组件返回响应。

其中,服务端返回的响应中可能携带了应用的唯一特征码,即步骤101中预先配置在所述服务端上的、所述应用真实的唯一特征码。

由于一个组件可能被多个应用所集成,因此服务端需要辨别向组件返回哪一个应用的唯一特征码。

一种可能的实现方式是,组件可以在唯一特征码获取请求中携带应用的应用标识,从而服务端可以返回与该应用标识对应的唯一特征码,该应用标识可以通过字符串表示。相应的,这种方式还需要服务端事先配置好应用标识与应用的唯一特征码之间的映射关系。

另一种可能的实现方式是,可以为每个应用配置一个唯一的服务端,并在组件的代码中或是在集成了该组件的应用的代码中,写入为该应用配置的服务端的地址。当组件检测到应用的使用请求时,便将唯一特征码获取请求发送至该地址指向的服务端,服务端接收到唯一特征码获取请求后便将本服务端上存储的唯一一个唯一特征码返回给组件。

步骤104:组件接收服务端返回的响应后,如果所述响应携带了所述应用的唯一特征码,则从所述应用中获取所述应用的唯一特征码。

以唯一特征码为公钥指纹为例,组件从应用中获取应用的公钥指纹的实现方式如下:首先,组件可以通过终端的一系列应用程序编程接口(Application Programming Interface,API),获取所述应用的安装包信息,然后从所述安装包信息中提取所述应用的签名,再通过签名获取所述应用的数字证书,并从所述数字证书中获取所述应用的公钥,最后根据与服务端预先约定的指纹算法,为获取的公钥计算对应的公钥指纹。

这里所说的组件与服务端预先约定的指纹算法,与服务端计算唯一特征码所采用的指纹算法相同。

步骤105:组件检查从所述应用中获取的唯一特征码与服务端返回的唯一特征码是否一致,如果是则确认所述应用通过校验,如果否则确认所述应用没有通过校验。

当确认应用通过校验时,组件可以允许所述应用使用所述组件的功能。

当确认应用没有通过校验时,组件可以禁止应用使用所述组件的功能,或者,还可以禁止应用使用除所述组件之外的其它功能,或者,还可以提示卸载此应用。

此外,如果服务端返回的响应中未携带所述应用的唯一特征码,例如,响应为空,这表明该应用同样没有使用组件的权限,例如该应用未向开发该组件的第三方服务商注册,这种情况下组件也可以认为所述应用没有通过校验,所述应用无权使用所述组件的功能。

综上所述,本申请提供的技术方案可以通过验证一个应用的真实唯一特征码和从该应用中获取到的唯一特征码是否一致,来实现辨别仿冒应用的功能,有效防止组件被仿冒应用非法使用。由于组件是集成在应用中的,因此可以通过官方提供的一系列API获取到应用的唯一特征码,而考虑到真实的唯一特征码无论是保存在终端的代码中、本地数据库中还是加密文件中等都具有一定的安全隐患,一旦被破解都有可能导致真实的唯一特征码被修改,造成无法识别仿冒应用,因此本申请实施例选择将真实的唯一特征码保存在服务端,通过组件与服务端的联动来获取应用真实的唯一特征码,从而减小校验凭证被篡改的风险。此外,现有的应用只需集成本申请实施例提供的组件即可实现防仿冒功能,无需过多修改应用本身的代码,这对现有应用规模部署防盗版功能提供了一种便捷的方式。

以上对本申请提供的方法进行了描述。下面对本申请提供的装置进行描述。

参见图2,该图为本申请实施例提供的一种应用校验装置的功能模块框图。所述装置包括发送单元201、接收单元202和处理单元203。

所述发送单元201,用于当集成在应用中的组件被所述应用调用时,向服务端发送唯一特征码获取请求。

所述接收单元202,用于接收所述服务端返回的响应。

所述处理单元203,用于如果所述响应携带了所述应用的唯一特征码,则从所述应用中获取所述应用的唯一特征码;检查从所述应用中获取的唯一特征码与服务端返回的唯一特征码是否一致,如果是则确认所述应用通过校验,如果否则确认所述应用没有通过校验。

可选的,所述唯一特征码获取请求中可以携带有所述应用的应用标识,以使所述服务端返回与所述应用标识对应的唯一特征码。

可选的,所述唯一特征码可以为预先配置在所述服务端上的、所述应用真实的唯一特征码。

可选的,所述唯一特征码可以为以下其中一个:公钥,签名,数字证书,可执行文件,公钥指纹,签名指纹,数字证书指纹,可执行文件指纹。

可选的,所述处理单元203还可以用于:如果服务端返回的响应未携带所述应用的唯一特征码,则确认所述应用没有通过校验。

可选的,如果所述唯一特征码为公钥指纹,那么在获取所述应用的唯一特征码时,所述处理单元203具体用于:获取所述应用的安装包信息;从所述安装包信息中提取所述应用的签名;通过签名获取所述应用的数字证书;从所述数字证书中获取所述应用的公钥;根据与所述服务端预先约定的指纹算法,为获取的公钥计算对应的公钥指纹。

可选的,所述指纹算法可以为MD5,或SHA。

本申请应用校验装置的实施例可以应用在任何具有处理器的电子设备上,所述电子设备可以是现有的、正在研发的或将来研发的任何电子设备,包括但不限于:现有的、正在研发的或将来研发的台式计算机、膝上型计算机、移动终端(包括智能手机、非智能手机、各种平板电脑)等。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在带有处理器的电子设备的处理器将存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图3所示,为本申请应用校验装置所在带有处理器的电子设备的一种硬件结构图,除了图3所示的处理器、收发器、内存、以及存储器之外,实施例中装置所在的带有处理器的电子设备通常根据该设备的实际功能,还可以包括其他硬件,对此不再赘述。

其中,存储器中可以存储有应用校验方法对应的逻辑指令,该存储器例如可以是非易失性存储器(non-volatile memory)。处理器可以调用执行存储器中的保存的逻辑指令,以执行上述的应用校验方法。

应用校验方法对应的逻辑指令的功能,如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

如图3所示,本申请实施例还提供一种应用校验装置,所述装置包括处理器301、收发器302和存储器303,例如,所述处理器301、所述收发器302和所述存储器303可以通过总线304相互连接。

所述存储器303用于存储所述处理器301的可执行指令。

所述处理器301被配置为:

当集成在应用中的组件被所述应用调用时,通过所述收发器302向服务端发送唯一特征码获取请求;通过所述收发器302接收所述服务端返回的响应;如果所述响应携带了所述应用的唯一特征码,则从所述应用中获取所述应用的唯一特征码;检查从所述应用中获取的唯一特征码与服务端返回的唯一特征码是否一致,如果是则确认所述应用通过校验,如果否则确认所述应用没有通过校验。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1