CN108683502A - 一种数字签名验证方法、介质及设备 - Google Patents

一种数字签名验证方法、介质及设备 Download PDF

Info

Publication number
CN108683502A
CN108683502A CN201810291741.8A CN201810291741A CN108683502A CN 108683502 A CN108683502 A CN 108683502A CN 201810291741 A CN201810291741 A CN 201810291741A CN 108683502 A CN108683502 A CN 108683502A
Authority
CN
China
Prior art keywords
file
digital signature
application program
program installation
storage address
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.)
Granted
Application number
CN201810291741.8A
Other languages
English (en)
Other versions
CN108683502B (zh
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.)
Shanghai Lianshang Network Technology Co Ltd
Original Assignee
Shanghai Lianshang Network 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 Shanghai Lianshang Network Technology Co Ltd filed Critical Shanghai Lianshang Network Technology Co Ltd
Priority to CN201810291741.8A priority Critical patent/CN108683502B/zh
Publication of CN108683502A publication Critical patent/CN108683502A/zh
Application granted granted Critical
Publication of CN108683502B publication Critical patent/CN108683502B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0625Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3249Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using RSA or related signature schemes, e.g. Rabin scheme

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

本申请公开了一种数字签名验证方法、介质及设备;其中,数字签名验证方法包括:确定应用程序安装文件中用于存储待验证的数字签名的第一存储地址;其中,所述数字签名用于验证应用程序安装文件;从所述第一存储地址中,读取所述数字签名;根据应用程序安装文件中预先存储的消息摘要,对所述数字签名进行验证。在验证数字签名时,通过上述方法可以避免验证逻辑被反编译,数字签名被篡改的缺陷,提高了应用程序安装文件检验结果的可靠性。

Description

一种数字签名验证方法、介质及设备
技术领域
本申请涉及数据处理领域,尤其涉及一种数字签名验证方法、介质及设备。
背景技术
随着Android平台的流行,很多优秀的Android安装包被不法分子篡改:或植入恶意病毒;或添加广告,然后通过二次打包再次进入渠道。
针对安装包防篡改,目前市场主要使用防篡改校验方案是通过Java语言实现。其中,校验流程具体为:在NDK(Native Development Kit,原生开发工具包)层中用Java语言,使用Native方法/DLL/Lua脚本等通过获取Java的context/Activity对象,动态JNI反射调用getPackageInfo等来获取APK数字签名签名信息,检验APK(Android Package,安卓安装包)数字签名与预先配置的APK数字签名是否匹配;如匹配,则说明APK是正版未被篡改的;如不匹配,则说明APK被篡改。
然而,Java层的调用是很容易被hook的。一旦被hook,篡改者可以在破解的APK里返回正确的签名信息从而骗过native校验;这样就达不到安装包校验的目的,降低了安装包检验的可靠性。
发明内容
本说明书实施例提供一种数字签名验证方法、装置及设备,用以解决提供一种更加安全的数字签名验证方式的问题。
本说明书实施例提供的一种数字签名验证方法,所述方法包括:
确定应用程序安装文件中用于存储待验证的数字签名的第一存储地址;其中,所述数字签名用于验证应用程序安装文件;
从所述第一存储地址中,读取所述数字签名;
根据应用程序安装文件中预先存储的消息摘要,对所述数字签名进行验证。
进一步的,所述确定应用程序安装文件中用于存储待验证的数字签名的第一存储地址,包括:
确定应用程序安装文件的中央目录文件的第二存储地址;其中,所述中央目录文件中记录有数字签名;
从第二存储地址中读取中央目录文件;
基于所述中央目录文件确定应用程序安装文件中用于存储数字签名的第一存储地址。
进一步的,所述从所述第一存储地址中,读取所述数字签名,包括:
从所述第一存储地址中,读取所述数字签名的字节流;
将所述数字签名的字节流转换为数字签名。
进一步的,所述将所述数字签名的字节流转换为数字签名,包括:
将所述数字签名的字节流转换为压缩文件;
解压所述压缩文件得到所述数字签名。
进一步的,所述根据应用程序安装文件中预先存储的消息摘要,还包括:
利用预设算法处理所述数字签名,得到待验证消息摘要;
利用预先存储的消息摘要验证所述待验证消息摘要。
进一步的,所述确定应用程序安装文件中用于存储待验证的数字签名的第一存储地址,包括:
读取应用程序安装文件的文件类型标识信息;其中,所述文件类型标识信息用于标识应用程序安装文件的文件类型;
根据文件类型标识信息判断所述应用程序安装文件的文件类型,若所述文件类型为压缩文件,则确定所述第一存储地址。
进一步的,所述方法还包括以下至少任一项:
验证所述应用程序安装文件的文件名称;
验证所述应用程序安装文件的路径信息。
进一步的,所述验证所述应用程序安装文件的路径信息包括:
验证所述应用程序安装文件的安装路径是否存在异常;
若所述安装路径不存在异常,验证所述安装路径对应的文件的用户信息;
其中,所述确定应用程序安装文件中用于存储待验证的数字签名的第一存储地址包括:
若所述用户信息属于预设的合法用户,确定应用程序安装文件中用于存储待验证的数字签名的第一存储地址。
进一步的,所述验证所述应用程序安装文件的文件名称包括:
获取所述应用程序安装文件的文件名称;
利用预先存储的文件名称匹配所述应用程序安装文件的文件名称;
其中,所述确定应用程序安装文件中用于存储待验证的数字签名的第一存储地址,包括:
若预先存储的文件名称和所述应用程序安装文件的文件名称相同,则确定应用程序安装文件中用于存储待验证的数字签名的第一存储地址。
基于同样思想,本说明书实施例还提供的一种数字签名验证装置,所述装置包括:
存储地址确定模块,用于确定应用程序安装文件中用于存储待验证的数字签名的第一存储地址;其中,所述数字签名用于验证应用程序安装文件;
数字签名读取模块,用于从所述第一存储地址中,读取所述数字签名;
验证模块,用于根据应用程序安装文件中预先存储的消息摘要,对所述数字签名进行验证。
基于同样思想,本说明书实施例还提供的一种计算机可读介质,所述计算机可读指令可被处理器执行以实现本说明书中数字签名验证方法。
基于同样的思想,本说明书实施例还提供的一种数字签名验证设备,包括:
一个或多个处理器;以及
存储有计算机可读指令的存储器,所述计算机可读指令在被执行时使所述处理器执行本发明中数字签名验证方法的操作。
本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:
本申请在C语言或C++环境下,根据数字签名的文件名称获取应用程序安装文件的数字签名,并利用预先存储的消息摘要验证所述数字签名,避免了调用相应接口验证数字签名时,避免验证逻辑被反编译,数字签名被篡改的缺陷,提高了应用程序安装文件检验结果的可靠性。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本说明书实施例提供的数字签名验证过程;
图2为本说明书实施例提供的另一种数字签名验证过程;
图3为本说明书实施例提供的在实际应用中的数字签名验证流程示意图;
图4为本说明书实施例提供的数字签名验证装置结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本说明书中的一个或多个实施例中,所述的数字签名可以对每一个APK文件进行签名。在APK文件安装或运行时,系统会对数字签名进行比对,以判断程序的完整性,从而决定该APK文件是否可以安装,在一定程度上达到安全的目的。
其中,所述数字签名可以是Java应用程序安装文件或Android应用程序安装文件中的CERT.RSA信息,由于不同应用程序安装文件的字符显示格式不同,对应的CERT.RSA信息可以是不同的。例如,Java应用程序安装文件中CERT.RSA信息是以十进制显示,Android应用程序安装文件中的CERT.RSA信息是以十六进制显示。
在本说明书的一个或多个实施例中,所述的数字签名验证方法可以由智能终端执行,也可以由用户终端和验证服务器端共同执行。
其中,所述的用户终端,可用于安装待验证的应用程序安装文件,在该智能终端中需要配置有C或C++语言环境,为数字签名验证提供运行环境。在一些实际应用场景中,上述的终端设备可包括如用户终端、计算机或者是服务器等设备,这里并不应构成对本申请的限定。
所述的验证服务器,通常采用分布式集群的架构,可以接收用户终端发送的验证指令,也可以利用与用户终端预先配置的预定算法加密或者解密数字签名,还可以用于接收客户端发送的数字签名文件的二进制流。
下面将用户终端作为执行主体,来描述本说明书实施例中提供的数字签名验证过程。
在本说明书实施例中提供的一种数字签名验证方法,可如图1所示,具体包括以下步骤:
步骤S101:确定应用程序安装文件中用于存储待验证的数字签名的第一存储地址;其中,所述数字签名用于验证应用程序安装文件。
本实施例中所述的数字签名验证方法在C语言或C++语言环境下进行,可以应用于运行有各种平台的终端设备上,可以在各种类型的操作系统程序执行,例如,安卓平台,iOS平台等。本发明实施例对此不做限制。本申请以字节流(二进制比特流)的方式获取数字签名,避免验证逻辑被反编译导致的数字签名被篡改的缺陷。
本实施例中,所述应用程序可以包括:工具类程序、游戏类程序、购物类程序、生活类程序和多媒体类程序等不同的应用类型。本发明实施例中的应用程序安装文件可以是上述任一类应用程序的安装文件,举例来说,可以是即时通信程序或者在线购物程序的安装文件。示例的,在运行安卓平台的终端设备中,应用程序的安装文件为安卓安装(AndroidPackage;简称:APK)文件。可选的,应用程序安装文件也可以包括应用程序的主程序包、补丁包等多种形式的文件。
应用程序安装文件可以是从服务器中获取的,也可以是从其他终端设备中获取的。每一个应用程序安装文件在开发时,都需要开发人员进行签名。签名使用的密钥文件是开发人员所独有的。破解者通常不可能拥有同样的密钥文件。因此,可以利用应用程序安装文件的签名的校验值校验该应用程序安装文件的完整性,以确定是否被除开发人员之外的其他人修改过。
应用程序安装文件从合法服务器中获取。从合法服务器获取的应用程序安装文件所形成的应用程序,为安全的应用程序,其不会对用户的信息安全造成威胁。这里的合法服务器为官方的服务器或正规的服务器。
第一存储地址可以是数字签名文件在应用程序安装文件的具体路径,也可以是数字签名文件在终端设备的存储区域的存储地址值。
在一些实施例中,所述确定应用程序安装文件中用于存储待验证的数字签名的第一存储地址,还包括:读取应用程序安装文件的文件类型标识信息;其中,所述文件类型标识信息用于标识应用程序安装文件的文件类型;根据文件类型标识信息判断所述应用程序安装文件的文件类型,若所述文件类型为压缩文件,则确定所述第一存储地址。
其中,文件类型标识信息用于表示应用安装包的文件类型,不同文件类型应用程序安装文件的文件类型标识信息不同。
示例性的,本实施例可以以APK应用程序安装文件为例展开叙述。对应的,APK应用程序安装文件中的文件类型标识信息为End Of Central Directory标志,因此可以通过获取End Of Central Directory标志,判定应用程序安装文件是否为APK应用程序安装文件。
步骤S103:从所述第一存储地址中,读取所述数字签名。
从所述第一存储地址中,读取所述数字签名,具体包括:从所述第一存储地址中,读取所述数字签名的字节流;将所述数字签名的字节流转换为数字签名。
其中,本实施例中以字节流的形式读取数字签名,字节流是由多个字节组成,是一种二进制数据。
具体的,从所述第一存储地址中,读取所述数字签名的字节流,包括:根据数字签名的字节流长度信息,从所述第一存储地址中,读取所述数字签名的字节流。
在另外一些实施例中,终端设备可以参照数字签名的字节流长度,以为数字签名文件对应字节流预先开辟相对应的内存空间,避免读取过程中存储空间不匹配造成的数据丢失。
内存空间确定后,终端设备可以从第二位置信息开始读取数字签名文件对应字节流,直至完成数字签名文件对应字节流的读取操作。
所述数字签名包括多个字符;具体的,本实施例中会将数字签名的字节流的字节逐个转换为字符,得到多个字符,进而形成可读性较强的数字签名。
步骤S105:根据应用程序安装文件中预先存储的消息摘要,对所述数字签名进行验证。
其中,消息摘要中包括多个应用程序安装文件的数字签名,所述消息摘要中预存在应用程序安装文件中的路径下。验证过程中,若在消息摘要中,可以检索消息摘要中包含数字签名,则可以确定所述应用程序安装文件为合法安装包,此时可以提示用户该应用程序安装文件对应的应用程序为受系统保护的应用程序,以提高用户体验。
需要说明的是,若在消息摘要中,没有检索到数字签名位于消息摘要中,则说明所述应用程序安装文件被非法修改过,此时,停止运行该应用程序安装文件。
在上述实施例的基础上,本说明书实施例中还提供一种数字签名验证方法,如图2所示,具体包括以下步骤:
步骤S200:验证所述应用程序安装文件的文件名称。
本实施例中,终端设备可以从服务器中获取应用程序安装文件,并对应用程序安装文件的文件名称进行验证;以确保文件名称没有被篡改。
具体的,验证所述应用程序安装文件的文件名称包括:获取所述应用程序安装文件的文件名称;利用预先存储的文件名称匹配所述应用程序安装文件的文件名称;其中,所述确定应用程序安装文件中用于存储待验证的数字签名的第一存储地址,包括:若预先存储的文件名称和所述应用程序安装文件的文件名称相同,则确定应用程序安装文件中用于存储待验证的数字签名的第一存储地址。
其中,所述文件名称预先存储于应用程序安装文件中的配置文件中,该配置文件中记录有所述应用程序安装文件的文件名称、文件大小等各类属性数据。
本实施例中,可以对若预先存储的文件名称和所述应用程序安装文件的文件名称相同进行对比,以确定第一存储地址。
步骤S202:验证所述应用程序安装文件的存储路径。
其中,所述应用程序安装文件的存储路径可以是在终端设备中的存储路径;也可以是完成安装后应用程序的安装路径;本实施例中可以通过验证应用程序安装文件的存储路径和安装路径,再次验证应用程序安装文件的合法性。
具体的,所述验证所述应用程序安装文件的路径信息包括:验证所述应用程序安装文件的安装路径是否存在异常;若所述安装路径不存在异常,验证所述安装路径对应的文件的用户信息。
更为具体的,所述确定应用程序安装文件中用于存储待验证的数字签名的第一存储地址包括:若所述用户信息属于预设的合法用户,确定应用程序安装文件中用于存储待验证的数字签名的第一存储地址。
本实施例中,所述合法用户可以是由system或root权限的用户。需要说明的是,步骤S200和步骤S202在本实施例中的数字签名验证方法的执行顺序不做限定,可以在任意整个方法流程中的任意次序执行。
步骤S204:确定应用程序安装文件的中央目录文件的第二存储地址;其中,所述中央目录文件中记录有数字签名。
其中,所述中央目录文件中记录有数字签名的文件路径;第二存储地址可以是中央目录文件在应用程序安装文件的具体路径,也可以是中央目录文件在终端设备的存储区域的存储地址值。
步骤S206:从第二存储地址中读取中央目录文件的字节流。
本实施例中,所述的中央目录文件包括中央目录结构的信息,例如应用程序安装文件中每一个文件或者文件夹的文件路径、相对应的文件路径以及文件类型标识等信息;因此本实施例中,可以根据中央目录文件的文件路径获取到数字签名。中央目录文件的文件路径可以由开发人员设置。
在另外的一些实施例中,中央目录文件的文件路径可以以数据库形式、列表形式或矩阵形式的存储形式存储于安全区域。
步骤S208:基于所述中央目录文件确定应用程序安装文件中用于存储数字签名的第一存储地址。
其中,所述第一存储地址可以是数字签名文件在应用程序安装文件的具体路径,也可以是数字签名文件在终端设备的存储区域的存储地址值。
具体的,本实施可以根据预存的数字签名文件的文件路径,确定数字签名压缩文件在所述应用程序安装文件中的第一存储地址,以及数字签名压缩文件的字节流长度。
可选的,字节流长度可以是数字签名对应字节流的数据量大小。中央目录文件可以包括数字签名的文件路径、数字签名压缩文件的字节流长度、在所述应用程序安装文件中的第一存储位置,所述数字签名压缩文件为由数字签名文件压缩得到,其文件名称与数字签名文件的文件名称可以是相同。
步骤S210:从所述第一存储地址中,读取所述数字签名的字节流。
具体的,所述从所述第一存储地址中,读取所述数字签名的字节流,包括:确定用于存储中央目录文件的第二存储地址;其中,所述中央目录文件中记录有数字签名;从第二存储地址中读取中央目录文件的字节流。将中央目录文件的字节流转换为中央目录文件;确定用于存储数字签名的第一存储地址,并从第一存储地址中读取数字签名的字节流。
其中,第二存储地址为中央目录文件的存储地址,具体的,终端设备可以参照中央目录文件的字节流长度,以为中央目录文件对应字节流预先开辟相对应的内存空间,避免读取过程中存储空间不匹配造成的数据丢失。
中央目录文件的字节流长度可以是中央目录文件对应字节流的数据量的大小。本实施例中以字节流的形式读取中央目录文件,字节流是由多个字节组成,是一种二进制数据。本实施例中,将所述中央目录文件的字节流转换为中央目录文件的过程,与数字签名的字节流转换过程相同,本实施例在此处不再赘述。
步骤S212:将所述数字签名的字节流转换为数字签名。
具体的,所述将所述数字签名的字节流转换为数字签名,包括:将所述数字签名的字节流转换为压缩文件;解压所述压缩文件得到所述数字签名。
其中,所述压缩文件即应用程序安装文件,在转换压缩文件的过程中,首先要将所述压缩文件对应的压缩数据写入到指定的输出流,并通过所述输出流将压缩数据写入至目标路径;同时,根据压缩数据的写入规则(包括压缩单元数据量的大小、输出流的目标路径等),构建压缩文件的中央目录文件。
步骤S214:利用预设算法处理所述数字签名,得到待验证消息摘要。
其中,所述待验证消息摘要可以是唯一对用数字签名的固定长度的值,可以由单向哈希加密函数对消息进行作用而产生,若应用程序安装文件在传输或安装过程中被篡改了,则接收者通过对收到消息的新产生的待验证消息摘要与原摘要比较,就可知道消息是否被改变了。因此待验证消息摘要可以保证应用程序安装文件的完整性和安全性。
本实施例中,用于处理所述数字签名的预设算法可以包括,MD5(Message-DigestAlgorithm 5)、DES(Data Encryption Standard)加密算法和CRC32等。
步骤S216:利用预先存储的消息摘要验证所述待验证消息摘要。
得到待验证消息摘要后,可以比对预先存储的消息摘要和待验证消息摘要,确定两者是否完全一致,若完全一致,则验证通过,表示应用程序安装文件未被修改。若完全一致,则未通过验证,同时可以向用户发出提示信息,以提示用户该应用程序安装文件为非法破解版本。
基于上述内容,在实际应用中,一个完整的数字签名验证流程可如图3所示,具体包括以下步骤:
步骤S301:获取并验证应用程序安装文件的包名。
步骤S303:若验证失败,则退出所述应用程序,或者向用户发出提示。
步骤S305:若验证成功,获取并验证应用程序安装文件所在路径。若验证失败,则执行S303。
步骤S307:若验证成功,则在native层获取并验证应用程序安装文件的数字签名。若验证失败,则执行S303。
步骤S309:若验证成功,应用程序正常运行。
验证应用程序的数字签名的具体过程,
步骤S3090:通过读取zip文件中End Of Central Directory得到CentralDirectory的位置偏移量和文件占用字节数。
步骤S3091:根据Central Directory的位置偏移量和文件占用字节数从CentralDirectory中获取META-INF/CERT.RSA的位置和文件占用字节数;
步骤S3092:根据META-INF/CERT.RSA的位置和文件占用字节数获取压缩后的CERT.RSA二进制流;
步骤S3093:解压CERT.RSA,并读取数字签名。
步骤S3094:对数字签名进行MD5运算得到指印(待验证消息摘要)。
步骤S3095:对比数字签名和native层预先保存的指印(预先存储的消息摘要),完全一致则验证通过,程序正常运行。
以上为本说明书实施例提供的数字签名验证方法,基于同样的思路,本说明书实施例还提供一种数字签名验证装置,如图4所示,所述装置包括:
存储地址确定模块401,用于确定应用程序安装文件中用于存储待验证的数字签名的第一存储地址;其中,所述数字签名用于验证应用程序安装文件;
数字签名读取模块402,用于从所述第一存储地址中,读取所述数字签名;
验证模块403,用于根据应用程序安装文件中预先存储的消息摘要,对所述数字签名进行验证。
在上述实施例的基础上,存储地址确定模块401,还可用于确定应用程序安装文件的中央目录文件的第二存储地址;其中,所述中央目录文件中记录有数字签名;从第二存储地址中读取中央目录文件;基于所述中央目录文件确定应用程序安装文件中用于存储数字签名的第一存储地址。
在上述实施例的基础上,所述存储地址确定模块401,还可用于,从所述第一存储地址中,读取所述数字签名的字节流;将所述数字签名的字节流转换为数字签名。
在上述实施例的基础上,验证模块403,还可用于,利用预设算法处理所述数字签名,得到待验证消息摘要;利用预先存储的消息摘要验证所述待验证消息摘要。
在上述实施例的基础上,所述存储地址确定模块401还可用于,确定用于存储中央目录文件的第二存储地址;其中,所述中央目录文件中记录有数字签名;从第二存储地址中读取中央目录文件的字节流;将中央目录文件的字节流转换为中央目录文件;确定用于存储数字签名的第一存储地址;从第一存储地址中读取数字签名的字节流。
在上述实施例的基础上,所述存储地址确定模块401还可用于还包括:文件类型判断模块,读取应用程序安装文件的文件类型标识信息;其中,所述文件类型标识信息用于标识应用程序安装文件的文件类型;根据文件类型标识信息判断所述应用程序安装文件的文件类型。
在上述实施例的基础上,所述存储地址确定模块还可用于,读取应用程序安装文件的文件类型标识信息;其中,所述文件类型标识信息用于标识应用程序安装文件的文件类型;根据文件类型标识信息判断所述应用程序安装文件的文件类型,若所述文件类型为压缩文件,则确定所述第一存储地址。
在上述实施例的基础上,所述数字签名验证装置还包括:安装包信息验证模块,用于验证所述应用程序安装文件的文件名称;在验证所述应用程序安装文件的存储路径。
基于上述的数字签名验证过程,本申请实施例还提供一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现上述数字签名验证方法。
基于同样的思路,本申请实施例还提供了对应的设备,本申请实施例提供的一种数字签名验证的网络设备,该网络设备包括:一个或多个处理器;以及
存储有计算机可读指令的存储器,所述计算机可读指令在被执行时使所述处理器执行图1所示的数字签名验证过程。
本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备和介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请实施例提供的设备和介质与方法是一一对应的,因此,设备和介质也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述设备和介质的有益技术效果。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (12)

1.一种数字签名验证方法,其特征在于,包括:
确定应用程序安装文件中用于存储待验证的数字签名的第一存储地址;其中,所述数字签名用于验证应用程序安装文件;
从所述第一存储地址中,读取所述数字签名;
根据应用程序安装文件中预先存储的消息摘要,对所述数字签名进行验证。
2.根据权利要求1所述的方法,其特征在于,所述确定应用程序安装文件中用于存储待验证的数字签名的第一存储地址,包括:
确定应用程序安装文件的中央目录文件的第二存储地址;其中,所述中央目录文件中记录有数字签名;
从第二存储地址中读取中央目录文件;
基于所述中央目录文件确定应用程序安装文件中用于存储数字签名的第一存储地址。
3.根据权利要求2所述的方法,其特征在于,所述确定应用程序安装文件中用于存储待验证的数字签名的第一存储地址,包括:
确定用于存储中央目录文件的第二存储地址;其中,所述中央目录文件中记录有数字签名;
从第二存储地址中读取中央目录文件的字节流;
将中央目录文件的字节流转换为中央目录文件;
确定用于存储数字签名的第一存储地址。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述从所述第一存储地址中,读取所述数字签名,包括:
从所述第一存储地址中,读取所述数字签名的字节流;
将所述数字签名的字节流转换为数字签名。
5.根据权利要求4所述的方法,其特征在于,所述将所述数字签名的字节流转换为数字签名,包括:
将所述数字签名的字节流转换为压缩文件;
解压所述压缩文件得到所述数字签名。
6.根据权利要求1所述的方法,其特征在于,根据应用程序安装文件中预先存储的消息摘要,对所述数字签名进行验证,包括:
利用预设算法处理所述数字签名,得到待验证消息摘要;
利用预先存储的消息摘要验证所述待验证消息摘要。
7.根据权利要求1所述的方法,其特征在于,所述确定应用程序安装文件中用于存储待验证的数字签名的第一存储地址,包括:
读取应用程序安装文件的文件类型标识信息;其中,所述文件类型标识信息用于标识应用程序安装文件的文件类型;
根据文件类型标识信息判断所述应用程序安装文件的文件类型,若所述文件类型为压缩文件,则确定所述第一存储地址。
8.根据权利要求1至7中任一项所述的方法,其特征在于,所述方法还包括以下至少任一项:
验证所述应用程序安装文件的文件名称;
验证所述应用程序安装文件的路径信息。
9.根据权利要求8所述的方法,其特征在于,所述验证所述应用程序安装文件的路径信息包括:
验证所述应用程序安装文件的安装路径是否存在异常;
若所述安装路径不存在异常,验证所述安装路径对应的文件的用户信息;
其中,所述确定应用程序安装文件中用于存储待验证的数字签名的第一存储地址包括:
若所述用户信息属于预设的合法用户,确定应用程序安装文件中用于存储待验证的数字签名的第一存储地址。
10.根据权利要求8所述的方法,其特征在于,所述验证所述应用程序安装文件的文件名称包括:
获取所述应用程序安装文件的文件名称;
利用预先存储的文件名称匹配所述应用程序安装文件的文件名称;
其中,所述确定应用程序安装文件中用于存储待验证的数字签名的第一存储地址,包括:
若预先存储的文件名称和所述应用程序安装文件的文件名称相同,则确定应用程序安装文件中用于存储待验证的数字签名的第一存储地址。
11.一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现如权利要求1至10中任一项所述的方法。
12.一种数字签名验证设备,包括:
一个或多个处理器;以及
存储有计算机可读指令的存储器,所述计算机可读指令在被执行时使所述处理器执行如权利要求1至10中任一项所述方法的操作。
CN201810291741.8A 2018-03-30 2018-03-30 一种数字签名验证方法、介质及设备 Active CN108683502B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810291741.8A CN108683502B (zh) 2018-03-30 2018-03-30 一种数字签名验证方法、介质及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810291741.8A CN108683502B (zh) 2018-03-30 2018-03-30 一种数字签名验证方法、介质及设备

Publications (2)

Publication Number Publication Date
CN108683502A true CN108683502A (zh) 2018-10-19
CN108683502B CN108683502B (zh) 2022-01-25

Family

ID=63799348

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810291741.8A Active CN108683502B (zh) 2018-03-30 2018-03-30 一种数字签名验证方法、介质及设备

Country Status (1)

Country Link
CN (1) CN108683502B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109740305A (zh) * 2018-12-26 2019-05-10 深圳市优博讯科技股份有限公司 一种应用程序安装包签名方法、安装方法及电子设备
CN109981283A (zh) * 2019-02-28 2019-07-05 西安理工大学 Android平台消息驱动核心代码完整性检测系统及方法
CN111353148A (zh) * 2020-02-07 2020-06-30 贝壳技术有限公司 一种确定应用程序是否被重打包的方法及设备
CN111597515A (zh) * 2020-04-24 2020-08-28 维沃移动通信有限公司 应用程序签名的获取方法和电子设备
CN112529423A (zh) * 2020-12-15 2021-03-19 青岛海尔科技有限公司 目标资源的获取方法及装置、存储介质、电子装置
CN113127812A (zh) * 2019-12-30 2021-07-16 Oppo广东移动通信有限公司 文件检测方法、装置、终端及存储介质
CN113761587A (zh) * 2020-09-23 2021-12-07 北京沃东天骏信息技术有限公司 用于签名校验的方法和装置
CN114187604A (zh) * 2022-02-14 2022-03-15 山东信通电子股份有限公司 一种WebP图片的完整性校验方法、设备及介质
WO2022160733A1 (zh) * 2021-01-29 2022-08-04 统信软件技术有限公司 一种文件签名方法、计算设备及存储介质
CN115001782A (zh) * 2022-05-26 2022-09-02 爱驰汽车有限公司 接口请求参数的处理方法、装置、设备及存储介质

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 北京三星通信技术研究有限公司 一种应用软件的安装方法和装置
CN104281788A (zh) * 2013-07-05 2015-01-14 腾讯科技(深圳)有限公司 一种终端应用的保护方法及装置
CN106209379A (zh) * 2016-07-04 2016-12-07 江苏先安科技有限公司 一种Android APK副署签名验证方法
CN106548065A (zh) * 2016-10-27 2017-03-29 海信集团有限公司 应用程序安装检测方法及装置
US20170262656A1 (en) * 2014-11-28 2017-09-14 Thomson Licensing Method and device for providing verifying application integrity
CN107403089A (zh) * 2017-07-10 2017-11-28 东软集团股份有限公司 基于应用程序的资源篡改识别方法和装置

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 北京三星通信技术研究有限公司 一种应用软件的安装方法和装置
CN104281788A (zh) * 2013-07-05 2015-01-14 腾讯科技(深圳)有限公司 一种终端应用的保护方法及装置
US20170262656A1 (en) * 2014-11-28 2017-09-14 Thomson Licensing Method and device for providing verifying application integrity
CN106209379A (zh) * 2016-07-04 2016-12-07 江苏先安科技有限公司 一种Android APK副署签名验证方法
CN106548065A (zh) * 2016-10-27 2017-03-29 海信集团有限公司 应用程序安装检测方法及装置
CN107403089A (zh) * 2017-07-10 2017-11-28 东软集团股份有限公司 基于应用程序的资源篡改识别方法和装置

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109740305B (zh) * 2018-12-26 2022-03-18 深圳市优博讯科技股份有限公司 一种应用程序安装包签名方法、安装方法及电子设备
CN109740305A (zh) * 2018-12-26 2019-05-10 深圳市优博讯科技股份有限公司 一种应用程序安装包签名方法、安装方法及电子设备
CN109981283A (zh) * 2019-02-28 2019-07-05 西安理工大学 Android平台消息驱动核心代码完整性检测系统及方法
CN113127812B (zh) * 2019-12-30 2024-07-02 Oppo广东移动通信有限公司 文件检测方法、装置、终端及存储介质
CN113127812A (zh) * 2019-12-30 2021-07-16 Oppo广东移动通信有限公司 文件检测方法、装置、终端及存储介质
CN111353148A (zh) * 2020-02-07 2020-06-30 贝壳技术有限公司 一种确定应用程序是否被重打包的方法及设备
CN111353148B (zh) * 2020-02-07 2022-10-14 贝壳技术有限公司 一种确定应用程序是否被重打包的方法及设备
CN111597515A (zh) * 2020-04-24 2020-08-28 维沃移动通信有限公司 应用程序签名的获取方法和电子设备
CN113761587A (zh) * 2020-09-23 2021-12-07 北京沃东天骏信息技术有限公司 用于签名校验的方法和装置
CN112529423A (zh) * 2020-12-15 2021-03-19 青岛海尔科技有限公司 目标资源的获取方法及装置、存储介质、电子装置
WO2022160733A1 (zh) * 2021-01-29 2022-08-04 统信软件技术有限公司 一种文件签名方法、计算设备及存储介质
CN114187604A (zh) * 2022-02-14 2022-03-15 山东信通电子股份有限公司 一种WebP图片的完整性校验方法、设备及介质
CN115001782A (zh) * 2022-05-26 2022-09-02 爱驰汽车有限公司 接口请求参数的处理方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN108683502B (zh) 2022-01-25

Similar Documents

Publication Publication Date Title
CN108683502A (zh) 一种数字签名验证方法、介质及设备
CN114586315B (zh) 用于去中心化的数据认证的系统、方法和计算机可读介质
US9882722B2 (en) Product authentication using end-to-end cryptographic scheme
US8799662B2 (en) Method and apparatus for validating the integrity of installer files prior to installation
US20240086553A1 (en) Software pipeline and release validation
CN104092544B (zh) 兼容安卓应用的服务签名方法与装置
CN104866739A (zh) 安卓系统中应用程序加密方法及系统
CN104320265A (zh) 用于软件平台的认证方法和认证装置
CN111339201A (zh) 基于区块链的测评方法及系统
CN106709281B (zh) 补丁发放和获取方法、装置
KR20170089352A (ko) 가상화 시스템에서 수행하는 무결성 검증 방법
CN105760761A (zh) 软件行为分析方法和装置
CN109814934A (zh) 数据处理方法、装置、可读介质和系统
CN110347678B (zh) 一种金融数据的存储方法、系统、装置及设备
CN108599959A (zh) 授权证书校验方法、装置及可读存储介质、应用设备
CN108416224A (zh) 一种数据加解密方法及装置
CN109522683B (zh) 软件溯源方法、系统、计算机设备及存储介质
CN109240723B (zh) 应用程序更新方法、系统、计算机设备和存储介质
WO2017197869A1 (zh) 版本文件校验方法及装置、加密方法及装置和存储介质
CN113849210A (zh) 一种基于tee的固件升级方法及装置
CN106888094B (zh) 一种签名方法及服务器
CN108923910A (zh) 一种移动应用apk防篡改的方法
CN110890979B (zh) 堡垒机自动部署方法、装置、设备及介质
CN106991320A (zh) 基于定制化安卓系统的应用鉴权方法
CN105808979A (zh) 一种改进的Android软件安装包的签名和验签方法

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
GR01 Patent grant
GR01 Patent grant