CN113761587A - 用于签名校验的方法和装置 - Google Patents

用于签名校验的方法和装置 Download PDF

Info

Publication number
CN113761587A
CN113761587A CN202011006043.2A CN202011006043A CN113761587A CN 113761587 A CN113761587 A CN 113761587A CN 202011006043 A CN202011006043 A CN 202011006043A CN 113761587 A CN113761587 A CN 113761587A
Authority
CN
China
Prior art keywords
application
signature information
source
signature
information
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
Application number
CN202011006043.2A
Other languages
English (en)
Inventor
张亚庆
杜凡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingdong Century Trading Co Ltd
Beijing Wodong Tianjun Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Wodong Tianjun Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Century Trading Co Ltd, Beijing Wodong Tianjun Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN202011006043.2A priority Critical patent/CN113761587A/zh
Publication of CN113761587A publication Critical patent/CN113761587A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Bioethics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本公开的实施例公开了用于签名校验的方法和装置。该方法的一具体实施方式包括:响应于检测到应用的启动,执行如下校验步骤:获取应用的源签名信息,其中,源签名信息预先编码在应用中,源签名信息用于表征应用的源数字证书;获取以及解析应用的签名文件,得到待校验的签名信息;确定待校验的签名信息与源签名信息是否一致;响应于确定待校验的签名信息与源签名信息不一致,生成用于提示应用被重签名的提示信息。该实施方式实现了对应用的签名校验。

Description

用于签名校验的方法和装置
技术领域
本公开的实施例涉及计算机技术领域,具体涉及用于签名校验的方法和装置。
背景技术
随着移动互联网迅速发展和移动终端设备的普及,带来了APP(Application)的迅猛发展。APP扩展了移动终端设备的功能和服务,而且正在改变人们的生活方式。因此,当下以移动终端设备为平台的APP开发是创业的热门之一。
目前,随着移动互联网的开发技术也取得了非常大的进展,导致APP开发的技术门槛也越来越低。不仅专业的开发人员可以进行APP开发,甚至任何普通用户都可以利用一些第三方的开发工具等进行APP开发。这在给许多有创意的用户带来方便的同时,也给一些恶意攻击者带来了机会。
APP被恶意篡改是当前APP开发面临的一个主要的安全问题之一。一些恶意攻击者通过篡改APP来实现各种目的。例如,窃取用户隐私信息、修改***权限以访问系各种***资源、绑定安装某些插件等等。针对这种情况,移动终端***提供了签名机制来验证安装的应用是否可信,这种方法可以一定程度地避免应用被第三方篡改的情况。
发明内容
本公开的实施例提出了用于签名校验的方法和装置。
第一方面,本公开的实施例提供了一种用于签名校验的方法,该方法包括:响应于检测到应用的启动,执行如下校验步骤:获取应用的源签名信息,其中,源签名信息预先编码在应用中,源签名信息用于表征应用的源数字证书;获取以及解析应用的签名文件,得到待校验的签名信息;确定待校验的签名信息与源签名信息是否一致;响应于确定待校验的签名信息与源签名信息不一致,生成用于提示应用被重签名的提示信息。
在一些实施例中,上述获取应用的源签名信息,包括:利用反射技术获取源签名信息的编码位置;从编码位置获取源签名信息。
在一些实施例中,上述获取以及解析应用的签名文件,包括:利用反射技术获取应用的签名文件。
在一些实施例中,上述校验步骤在应用的原生Native层执行。
在一些实施例中,上述源签名信息通过硬编码的方式预先编码在应用中。
在一些实施例中,上述源签名信息通过加密存储的方式预先编码在应用中。
在一些实施例中,上述方法还包括:响应于确定从编码位置获取源签名信息失败,生成用于提示应用存在异常的提示信息。
第二方面,本公开的实施例提供了一种用于签名校验的装置,该装置包括:校验单元,被配置成响应于检测到应用的启动,执行如下校验步骤:获取应用的源签名信息,其中,源签名信息预先编码在应用中,源签名信息用于表征应用的源数字证书;获取以及解析应用的签名文件,得到待校验的签名信息;确定待校验的签名信息与源签名信息是否一致;响应于确定待校验的签名信息与源签名信息不一致,生成用于提示应用被重签名的提示信息。
在一些实施例中,上述校验步骤还包括:利用反射技术获取源签名信息的编码位置;从编码位置获取源签名信息。
在一些实施例中,上述校验步骤还包括:利用反射技术获取应用的签名文件。
在一些实施例中,上述校验步骤在应用的原生Native层执行。
在一些实施例中,上述源签名信息通过硬编码的方式预先编码在应用中。
在一些实施例中,上述源签名信息通过加密存储的方式预先编码在应用中。
在一些实施例中,上述校验步骤还包括:响应于确定从编码位置获取源签名信息失败,生成用于提示应用存在异常的提示信息。
第三方面,本公开的实施例提供了一种终端,该终端包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如第一方面中任一实现方式描述的方法。
第四方面,本公开的实施例提供了一种计算机可读介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面中任一实现方式描述的方法。
本公开的实施例提供的用于签名校验的方法通过在应用启动时,从应用中直接获取预先编码在其中的、用于表征应用的源数字证书的源签名信息,并解析签名文件中的待校验的签名信息,然后比较待校验的签名信息和应用的源签名信息是否一致,若两者不一致,则向用户提示应用可能已被重签名,从而实现对应用的签名校验。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本公开的其它特征、目的和优点将会变得更明显:
图1是本公开的一个实施例可以应用于其中的示例性***架构图;
图2是根据本公开的用于签名校验的方法的一个实施例的流程图;
图3是根据本公开的实施例的用于签名校验的方法的一个应用场景的示意图;
图4是针对Android应用的签名校验的校验步骤的一个实施例的流程图;
图5是根据本公开的用于签名校验的装置的一个实施例的结构示意图;
图6是适于用来实现本公开的实施例的电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本公开作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开。
图1示出了可以应用本公开的用于签名校验的方法或用于签名校验的装置的实施例的示例性架构100。
如图1所示,***架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种客户端应用。例如,浏览器类应用、应用管理类应用、购物类应用、即时通讯工具、社交平台软件、***安全类应用等等。
终端设备101、102、103可以是硬件,也可以是软件。当终端设备101、102、103为硬件时,可以是各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、膝上型便携计算机和台式计算机等等。当终端设备101、102、103为软件时,可以安装在上述所列举的电子设备中。其可以实现成多个软件或软件模块(例如用来提供分布式服务的多个软件或软件模块),也可以实现成单个软件或软件模块。在此不做具体限定。
服务器105可以是提供各种服务的服务器,例如为终端设备101、102、103上安装的客户端应用提供后端支持的服务器。服务器105可以根据终端设备101、102、103的请求将应用的安装包发送至终端设备101、102、103,然后终端设备可以对安装包进行校验等处理,若校验成功,可以进一步安装对应应用。之后,终端设备101、102、103可以启动并运行该应用。
需要说明的是,上述应用可以离线地在终端设备101、102、103的本地启动并运行,此时,可以不存在服务器105和网络104。
需要说明的是,本公开的实施例所提供的用于签名校验的方法一般由终端设备101、102、103执行,相应地,用于签名校验的装置一般设置于终端设备101、102、103中。
还需要指出的是,服务器105中也可以利用应用的安装包在其本地安装应用,然后启动并运行该应用。此时,用于签名校验的方法也可以由服务器105执行,相应地,用于签名校验的装置也可以设置于服务器105中。此时,示例性***架构100可以不存在终端设备101、102、103和网络104。
需要说明的是,服务器105可以是硬件,也可以是软件。当服务器105为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器105为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务的多个软件或软件模块),也可以实现成单个软件或软件模块。在此不做具体限定。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
继续参考图2,其示出了根据本公开的用于签名校验的方法的一个实施例的流程200。该用于签名校验的方法包括以下步骤:
步骤201,响应于检测到应用的启动,执行如下校验步骤2011-2014:
在本实施例中,应用(Application),即应用程序是指为了完成指定任务而被开发运行于操作***之上(如Android操作***等)的计算机程序。
一般地,用户可以先下载应用的安装包(Install Pack),然后通过运行安装包来完成应用的安装,在成功安装应用之后,可以通过启动并运行应用来使用应用提供的功能或服务。其中,应用的安装包通常是可自行解压缩文件的集合,其中可以包括安装应用所需的所有文件。
应当可以理解,不同的操作***、不同的应用的安装包的格式可以不同。例如,Android应用的安装包通常使用“APK”(Android application package,Android应用程序包)这种文件格式。一个Android应用的安装包中一般包括被编译的代码文件(.dex文件),文件资源(resources),原生资源文件(assets),证书(certificates),和清单文件(manifest file)等等。
一般地,可以通过解压等方式运行应用的安装包以实现应用的安装。在完成应用的安装之后,应用所在的终端***中会生成许多该应用的文件。例如,对于Android***来说,在安装完应用之后,会生成该应用对应的一个或多个文件夹以存放该应用的各种文件(如缓存文件等)或数据。
在本实施例中,用于签名校验的方法的执行主体(如图1所示的终端设备101、102、103)可以通过检测是否接收到应用的启动命令以启动并运行应用,来确定是否检测到应用的启动。一般地,若检测到接收到应用的启动命令,则可以认为检测到了应用的启动。
步骤2011,获取应用的源签名信息。
在本实施例中,应用的源签名信息可以指示应用的真实的、可信任的签名所采用的源数字证书。其中,数字证书,又称为数字标识,通常是指在互联网通讯中标志通讯各方身份信息的一个数字认证,因此,数字证书可以用来识别对方的身份。数字证书可以对网络用户在计算机网络交流中的信息和数据等以加密或解密的形式保证了信息和数据的完整性和安全性。
一般地,在应用开发完成之后,相关技术人员(如应用的开发者等)可以使用预先设置的数字证书对应用的安装包进行签名,以保证安装包携带的信息以及安装包的传输过程的安全性,避免应用被恶意攻击者等修改应用等情况。这里所使用的数字证书就是该应用的源数字证书,可以用于表征该应用的源签名者,即可信任的签名者的身份。
具体地,可以利用现有的各种方法对应用的安装包进行签名。例如,可以直接使用应用的开发工具所提供的签名方法对应用进行签名。又例如,可以使用第三方开发的签名工具等对应用进行签名。
其中,应用的源签名信息可以预先写入应用的指定文件中,从而上述执行主体可以从应用的指定文件中获取预先写入的、应用的源签名信息。
步骤2012,获取以及解析应用的签名文件,得到待校验的签名信息。
在本实施例中,上述执行主体可以先获取应用的签名文件,然后对签名文件进行解析以得到签名文件中存储的待校验的签名信息。其中,签名文件可以指对应用进行签名后生成的、用于校验应用签名的文件。
例如,以Android应用作为示例来说,对一个Android应用的安装包(如apk文件等)进行签名之后,会生成一个名称为META-INF的文件夹,在这个文件夹中存储若干签名文件(包括如CERT.RSA、CERT.SF、MAINFEST.MF等)。
一般地,应用的签名文件中的内容格式是按照固定的或预设的格式生成的,因此,可以根据签名文件对应的内容格式对签名文件进行解析,以从中得到待校验的签名信息。
步骤2013,确定待校验的签名信息与源签名信息是否一致。
在本实施例中,可以比较待校验的签名信息与源签名信息是否一致,若待校验的签名信息与源签名信息一致,则可以认为应用没有被篡改,属于可信任的应用,从而上述执行主体可以继续运行应用的安装包以完成应用的安装。
步骤2014,响应于确定待校验的签名信息与源签名信息不一致,生成用于提示应用被重签名的提示信息。
在本实施例中,若待校验的签名信息与源签名信息不一致,则可以认为应用当前的签名所使用的数字证书与源数字证书不同,即应用已经被重签名,属于可疑应用,从而可以暂停应用的运行,并生成提示信息以向用户提示应用被重签名。
在本实施例的一些可选的实现方式中,应用的源签名信息可以通过硬编码的方式预先编码的应用中。即可以预先将应用的源签名信息硬编码在应用的代码或文件中,以便于应用签名的校验,同时还可以提升应用的性能。
可选地,可以将应用的源签名信息预先编码在目标配置文件中。其中,目标配置文件可以是由技术人员预先指定或设置的文件,以便于快速地获取应用的源签名信息。
可选地,应用的源签名信息可以通过加密存储的方式预先编码在应用中。例如,应用的源签名信息通过加密存储在上述目标配置文件中。由此可以提升应用的源签名信息的安全性,避免恶意攻击者通过反编译、暴力破解等手段破解应用的源签名信息。
此时,源签名信息的加密密钥可以不采用硬编码的方式直接编码在应用的代码或文件中,而经过转化存储(如作为字节数组的形式等)传递到解密方法中,以进一步提升应用的源签名信息的安全性。
在本实施例的一些可选的实现方式中,在对应用的签名进行校验时,可以利用反射技术获取应用的源签名信息。具体地,可以先利用反射技术获取应用的源签名信息的编码位置,然后从编码位置处获取应用的源签名信息。
其中,编码位置即可以指示应用的源签名信息的存储位置。例如,应用的源签名信息硬编码在指定的配置文件中时,编码位置即可以指示该指定配置文件在应用对应的各文件中的位置(如该指定配置文件的存储路径等)。在得到应用的源签名信息的编码位置之后,则可以直接从编码位置指示的位置处获取到应用的源签名信息。
反射技术是一种程序处理方式,使得程序可以访问、检测和修改它本身状态或行为的这种能力。例如,在运行状态中的程序,对于其中的任意一个类,可以利用反射技术了解该类的所有属性和方法,对于其中任意一个对象,可以利用反射技术调用该对象的任意方法和属性。
在本实施例的一些可选的实现方式中,可以利用反射技术获取应用的签名文件,然后对签名文件进行解析,以得到其中的待校验的签名信息。
利用反射技术获取应用的源签名信息和待校验的签名信息等内容,不仅可以提升应用开发时的灵活性,而且可以进一步避免应用被第三方篡改的情况。
在本实施例的一些可选的实现方式中,上述校验步骤可以运行在应用的Native层。
现有的许多应用的签名校验算法通常运行在JAVA层,从而这些算法容易被逆向分析,从而被篡改者去除用于签名校验的代码或者修改签名校验的处理逻辑等以绕开签名校验过程。而通过将对应用的签名校验步骤实现在Native层,可以增加逆向分析的难度,从而提升应用被篡改的难度,降低应用被反编译篡改的风险。
在本实施例的一些可选的实现方式中,在执行上述校验步骤2011-2014的过程中,若其中任一步骤执行失败,可以生成提示信息以向用户提示应用可能存在异常。
例如,在利用发射技术获取应用的源签名信息的编码位置时,若出现无法获取到应用的源签名信息的编码位置的情况,则可以认为应用的安装包中的内容可能已被篡改,当前属于不可信的应用,从而向用户展示提示信息以提示应用存在异常,进而可以暂时先停止应用的运行,避免由于运行异常应用导致损害***或用户信息泄露等情况。
再例如,在得到应用的源签名信息的编码位置后,在解密以获取应用的源签名信息时,若出现无法解密应用的源签名信息的情况,则也可以认为应用的安装包中的内容可能已被篡改,当前属于不可信的应用,从而向用户展示提示信息以提示应用存在异常,进而可以暂时先停止应用的运行,避免由于运行异常应用导致损害***或用户信息泄露等情况。
在利用校验步骤对应用的签名进行校验的同时,及时检测校验步骤中的每个过程的执行情况,若出现执行失败等情况,可以及时向用户进行异常提醒,进一步提升对应用的安全性的校验。
通过上述本实施例中的相关说明可以了解,对于待校验的应用来说,需要预先将应用的源签名信息编码在应用中、在Native层编写用于执行上述校验步骤的签名校验逻辑等等。其中,用于执行上述校验步骤的签名校验逻辑可以实现为脚本文件,从而在应用的安装包运行时自动执行。
在实际的应用过程中,根据不同的应用需求和应用场景,应用的开发人员还可以在开发应用时通过在代码中增加反调试检测手段、对代码中的关键函数采用混淆处理等方法来增加对应用的逆向分析的成本和难度,从而进一步降低应用被篡改的风险。
继续参见图3,图3是根据本实施例的用于签名校验的方法的一个示意性的应用场景300。在图3的应用场景中,用户可以在其使用的终端301中启动目标应用302以使用该目标应用,然后可以对该目标应用302进行校验。
具体地,可以先从目标应用302中获取预先编码在其中的、该目标应用的源签名信息3021,然后从目标应用302的签名中解析出待校验的签名信息3022,然后比较源签名信息3021和待校验的签名信息3022是否一致,得到匹配结果303。若匹配结果303指示源签名信息3021和待校验的签名信息3022不一致,则可以生成如下提示信息“所安装的应用已被重签名,存在安全风险,请确认是否继续运行该应用!”,并根据用户选择“继续运行”或“退出应用”分别进行对应处理。若用户选择“继续运行”,则继续正常运行该目标应用。若用户选择“退出应用”,则退出目标应用的运行。
现有技术中,部分操作***使用的是较开放的生态***,任意人都可以开发和发布应用以供其它人使用。利用这一点,攻击者在修改完应用的安装包中的文件之后,可以使用其自身设置的数字证书对修改后的安装包进行重签名,然后再进行发布。此时,***在安装被重签名后的应用时,通常只能对安装包中的文件的完整性进行校验,而无法校验数字证书的来源是否可信,因此,对于被攻击者重签名的应用,其能够通过完整性校验,使得用户仍可以安装并使用被攻击者重签名后的应用。
针对上述存在的安全性问题,现有的大部分签名校验算法都需要调用***API(Application Programming Interface,应用程序接口)来实现应用的签名校验,以确定应用当前的签名所使用的数字证书的来源是否可信,即是否为源数字证书,应用是否被重签名。作为示例,一些签名校验算法通过调用Context.getPackageManager()获取包管理器,然后通过调用PackageManager.getPackageInfo()获取包的内容信息类,然后通过调用PackageInfo.signatures()获取应用的签名信息,然后进行签名校验。
但是,攻击者可以通过Hook工具(如Xposed、Frida等)对***API进行Hook攻击,以将签名信息在Hook函数中返回,从而绕过签名校验的过程。
本公开的上述实施例提供的方法针对上述现有的签名校验算法容易被攻击者通过Hook工具等绕过签名校验过程的问题,通过在应用启动时,直接获取预先编码在应用中的源签名信息,并从签名文件中直接获取待校验的签名信息,而不需要调用***API来实现签名校验,从而避免了攻击者通过Hook攻击等手段绕过签名校验的情况,进而提升应用的安全性。
进一步参考图4,其示出了针对Android应用的签名校验的校验步骤的一个实施例的流程400,包括以下步骤:
步骤401,利用反射技术获取预先编码有应用的源签名信息的目标文件的文件路径。
在本实施例中,可以利用预先编写的反射类(如LoadedApk类等)获取目标文件的文件路径。其中,目标文件中可以预先硬编码有应用的源签名信息。
作为示例,目标文件的文件路径可以为“/xx/y.apk/zz”。其中,“/xx”可以指Android的存储***中名称为“xx”文件夹的路径。“y.apk”可以指应用的安装包的名称。“zz”可以指目标文件的名称。
步骤402,从目标文件的文件路径处获取应用的源签名信息。
在获取到目标文件的文件路径之后,可以直接从目标文件中读取其中存储的源签名信息。
步骤403,利用反射技术获取应用的签名文件的文件路径。
在本实施例中,同样可以利用预先编写的反射类(如LoadedApk类等)获取应用的签名文件的文件路径。目前,Android应用的签名文件都存储在名称为“META-INF”的文件夹下。具体地,在“META-INF”的文件夹下包括CERT.RSA、CERT.SF、MAINFEST.MF三个签名文件。
作为示例,签名文件的文件路径可以为“/xx/y.apk/CERT.RSA”。
步骤404,利用签名文件的文件路径解析签名文件以得到待校验的签名信息。
在得到应用的签名文件的文件路径之后,可以直接对签名文件进行解析以读取其中存储的待校验的签名信息。例如,CERT.RSA签名文件一般采用标准的PKCS#7格式,因此可以按照标准的PKCS#7格式对CERT.RSA签名文件进行解析以从中提取待校验的签名信息。
需要说明的是,根据实际不同的应用需求,签名文件可以是上述CERT.RSA、CERT.SF、MAINFEST.MF三个签名文件中的一个或多个。当然,随着Android***的发展,可能会存在更多签名文件,也可能会更新上述三个签名文件。应当可以理解,无论签名文件的名称、数量或格式怎么变化,并不影响本公开提供的签名校验方法的执行。
步骤405,确定待校验的签名信息与源签名信息是否一致。
步骤406,响应于确定待校验的签名信息与源签名信息不一致,生成用于提示应用被重签名的提示信息。
本实施例中未详细说明的执行过程可参考图2对应实施例中的相关说明,在此不再赘述。
本公开的上述实施例提供的用于签名校验的方法针对Android***的应用,利用预先编写的反射类获取硬编码在目标文件中的源签名信息和签名文件中的待校验的签名信息,然后通过比较得到的源签名信息和待校验的签名信息是否一致来判断应用是否被重签名,从而在避免调用***API的基础上实现对Android应用的签名校验。
进一步参考图5,作为对上述各图所示方法的实现,本公开提供了用于签名校验的装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图5所示,本实施例提供的用于签名校验的装置500包括校验单元501。其中,校验单元501被配置成:响应于检测到应用的启动,执行如下校验步骤:获取应用的源签名信息,其中,源签名信息预先编码在应用中,源签名信息用于表征应用的源数字证书;获取以及解析应用的签名文件,得到待校验的签名信息;确定待校验的签名信息与源签名信息是否一致;响应于确定待校验的签名信息与源签名信息不一致,生成用于提示应用被重签名的提示信息。
在本实施例中,用于签名校验的装置500中:校验单元501的具体处理及其所带来的技术效果可分别参考图2对应实施例中的步骤201的相关说明,在此不再赘述。
在本实施例的一些可选的实现方式中,上述校验步骤还包括:利用反射技术获取源签名信息的编码位置;从编码位置获取源签名信息。
在本实施例的一些可选的实现方式中,上述校验步骤还包括:利用反射技术获取应用的签名文件。
在本实施例的一些可选的实现方式中,上述校验步骤在应用的原生Native层执行。
在本实施例的一些可选的实现方式中,上述源签名信息通过硬编码的方式预先编码在应用中。
在本实施例的一些可选的实现方式中,上述源签名信息通过加密存储的方式预先编码在应用中。
在本实施例的一些可选的实现方式中,上述校验步骤还包括:响应于确定从编码位置获取源签名信息失败,生成用于提示应用存在异常的提示信息。
本公开的上述实施例提供的装置,利用校验单元响应于检测到应用的安装包的运行,执行如下校验步骤:从安装包中获取应用的源签名信息,其中,源签名信息预先编码在应用中;获取以及解析应用的签名文件,得到待校验的签名信息;确定待校验的签名信息与源签名信息是否一致;响应于确定待校验的签名信息与源签名信息不一致,生成用于提示应用被重签名的提示信息。由此,可以无需调用***API来实现签名校验,避免了攻击者通过Hook攻击等手段绕过签名校验的情况。
下面参考图6,其示出了适于用来实现本公开的实施例的电子设备(例如图1中的终端设备)600的结构示意图。本公开的实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图6示出的终端设备仅仅是一个示例,不应对本公开的实施例的功能和使用范围带来任何限制。
如图6所示,电子设备600可以包括处理装置(例如中央处理器、图形处理器等)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储装置608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有电子设备600操作所需的各种程序和数据。处理装置601、ROM 602以及RAM603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
通常,以下装置可以连接至I/O接口605:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置606;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置607;包括例如磁带、硬盘等的存储装置608;以及通信装置609。通信装置609可以允许电子设备600与其他设备进行无线或有线通信以交换数据。虽然图6示出了具有各种装置的电子设备600,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。图6中示出的每个方框可以代表一个装置,也可以根据需要代表多个装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置609从网络上被下载和安装,或者从存储装置608被安装,或者从ROM 602被安装。在该计算机程序被处理装置601执行时,执行本公开的实施例的方法中限定的上述功能。
需要说明的是,本公开的实施例所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开的实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本公开的实施例中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述终端中所包含的;也可以是单独存在,而未装配入该终端中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该终端设备执行时,使得该终端:响应于检测到应用的启动,执行如下校验步骤:获取应用的源签名信息,其中,源签名信息预先编码在应用中,源签名信息用于表征应用的源数字证书;获取以及解析应用的签名文件,得到待校验的签名信息;确定待校验的签名信息与源签名信息是否一致;响应于确定待校验的签名信息与源签名信息不一致,生成用于提示应用被重签名的提示信息。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的实施例的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开的实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括校验单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,校验单元还可以被描述为“响应于检测到应用的启动,执行如下校验步骤的单元:获取应用的源签名信息,其中,源签名信息预先编码在应用中,源签名信息用于表征应用的源数字证书;获取以及解析应用的签名文件,得到待校验的签名信息;确定待校验的签名信息与源签名信息是否一致;响应于确定待校验的签名信息与源签名信息不一致,生成用于提示应用被重签名的提示信息”。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开的实施例中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开的实施例中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (10)

1.一种用于签名校验的方法,包括:
响应于检测到应用的启动,执行如下校验步骤:
获取所述应用的源签名信息,其中,所述源签名信息预先编码在所述应用中,所述源签名信息用于表征所述应用的源数字证书;
获取以及解析所述应用的签名文件,得到待校验的签名信息;
确定所述待校验的签名信息与所述源签名信息是否一致;
响应于确定所述待校验的签名信息与所述源签名信息不一致,生成用于提示所述应用被重签名的提示信息。
2.根据权利要求1所述的方法,其中,所述获取所述应用的源签名信息,包括:
利用反射技术获取所述源签名信息的编码位置;
从所述编码位置获取所述源签名信息。
3.根据权利要求1所述的方法,其中,所述获取以及解析所述应用的签名文件,包括:
利用反射技术获取所述应用的签名文件。
4.根据权利要求1所述的方法,其中,所述校验步骤在所述应用的原生Native层执行。
5.根据权利要求1所述的方法,其中,所述源签名信息通过硬编码的方式预先编码在所述应用中。
6.根据权利要求5所述的方法,其中,所述源签名信息通过加密存储的方式预先编码在所述应用中。
7.根据权利要求2所述的方法,其中,所述方法还包括:
响应于确定从所述编码位置获取所述源签名信息失败,生成用于提示所述应用存在异常的提示信息。
8.一种用于签名校验的装置,其中,所述装置包括:
校验单元,被配置成响应于检测到应用的启动,执行如下校验步骤:
获取所述应用的源签名信息,其中,所述源签名信息预先编码在所述应用中,所述源签名信息用于表征所述应用的源数字证书;
获取以及解析所述应用的签名文件,得到待校验的签名信息;
确定所述待校验的签名信息与所述源签名信息是否一致;
响应于确定所述待校验的签名信息与所述源签名信息不一致,生成用于提示所述应用被重签名的提示信息。
9.一种终端,包括:
一个或多个处理器;
存储装置,其上存储有一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的方法。
10.一种计算机可读介质,其上存储有计算机程序,其中,该程序被处理器执行时实现如权利要求1-7中任一所述的方法。
CN202011006043.2A 2020-09-23 2020-09-23 用于签名校验的方法和装置 Pending CN113761587A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011006043.2A CN113761587A (zh) 2020-09-23 2020-09-23 用于签名校验的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011006043.2A CN113761587A (zh) 2020-09-23 2020-09-23 用于签名校验的方法和装置

Publications (1)

Publication Number Publication Date
CN113761587A true CN113761587A (zh) 2021-12-07

Family

ID=78785856

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011006043.2A Pending CN113761587A (zh) 2020-09-23 2020-09-23 用于签名校验的方法和装置

Country Status (1)

Country Link
CN (1) CN113761587A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116248291A (zh) * 2023-01-30 2023-06-09 深圳市盛思达通讯技术有限公司 一种消费机的签名验签方法及***

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103577206A (zh) * 2012-07-27 2014-02-12 北京三星通信技术研究有限公司 一种应用软件的安装方法和装置
CN104298915A (zh) * 2014-10-16 2015-01-21 厦门美图之家科技有限公司 一种防止安装包被篡改的方法
CN106022098A (zh) * 2016-05-10 2016-10-12 青岛海信传媒网络技术有限公司 一种应用程序的签名验证方法和装置
CN107403089A (zh) * 2017-07-10 2017-11-28 东软集团股份有限公司 基于应用程序的资源篡改识别方法和装置
CN108683502A (zh) * 2018-03-30 2018-10-19 上海连尚网络科技有限公司 一种数字签名验证方法、介质及设备
EP3416082A1 (en) * 2017-06-14 2018-12-19 Beijing Xiaomi Mobile Software Co., Ltd. Method and apparatus for signing and verifying application installation package, and storage medium

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103577206A (zh) * 2012-07-27 2014-02-12 北京三星通信技术研究有限公司 一种应用软件的安装方法和装置
CN104298915A (zh) * 2014-10-16 2015-01-21 厦门美图之家科技有限公司 一种防止安装包被篡改的方法
CN106022098A (zh) * 2016-05-10 2016-10-12 青岛海信传媒网络技术有限公司 一种应用程序的签名验证方法和装置
EP3416082A1 (en) * 2017-06-14 2018-12-19 Beijing Xiaomi Mobile Software Co., Ltd. Method and apparatus for signing and verifying application installation package, and storage medium
CN107403089A (zh) * 2017-07-10 2017-11-28 东软集团股份有限公司 基于应用程序的资源篡改识别方法和装置
CN108683502A (zh) * 2018-03-30 2018-10-19 上海连尚网络科技有限公司 一种数字签名验证方法、介质及设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
于成丽;郭燕慧;钮心忻;: "基于信任链传递的APK重签名算法设计", 电视技术, no. 21, 2 November 2014 (2014-11-02) *
李子臣;梁斓;孙亚飞;: "一种基于格签名算法的数字证书方案", 密码学报, no. 01, 15 February 2018 (2018-02-15) *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116248291A (zh) * 2023-01-30 2023-06-09 深圳市盛思达通讯技术有限公司 一种消费机的签名验签方法及***
CN116248291B (zh) * 2023-01-30 2023-11-17 深圳市盛思达通讯技术有限公司 一种消费机的签名验签方法及***

Similar Documents

Publication Publication Date Title
CN110879903B (zh) 证据存储方法、证据验证方法及装置、设备和介质
US20080276301A1 (en) Method and System for Software Installation
US20140259004A1 (en) System for trusted application deployment
KR101277517B1 (ko) 애플리케이션 위/변조 탐지장치 및 방법
CN108259479B (zh) 业务数据处理方法、客户端与计算机可读存储介质
CN110362990A (zh) 应用安装的安全处理方法、装置及***
CN103617394A (zh) Sdk提供和调用方法及相关设备
US20140259003A1 (en) Method for trusted application deployment
CN111199037A (zh) 登录方法、***和装置
CN110688428A (zh) 用于发布智能合约的方法和装置
CN115102744B (zh) 数据访问方法和装置
CN109522683B (zh) 软件溯源方法、***、计算机设备及存储介质
CN113282951B (zh) 一种应用程序的安全校验方法、装置及设备
KR101566141B1 (ko) 서명정보를 이용하여 응용 프로그램의 위변조 여부를 탐지하는 사용자 단말기 및 그것을 이용한 위변조 탐지 방법
CN116738503B (zh) 用于硬件***与操作***的协同加密方法、电子设备
CN113761587A (zh) 用于签名校验的方法和装置
CN109635558B (zh) 访问控制方法、装置和***
CN109995534B (zh) 一种对应用程序进行安全认证的方法和装置
CN114499893B (zh) 基于区块链的投标文件加密存证方法和***
CN113515747B (zh) 设备升级方法、装置、设备及存储介质
CN111984963B (zh) 绕过自签证书校验的方法和装置
CN112769565B (zh) 密码加密算法的升级方法、装置、计算设备和介质
CN112767142B (zh) 针对交易文件的处理方法、装置、计算设备和介质
CN111935138B (zh) 安全登录的防护方法、装置及电子设备
CN112363771B (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