CN112507328A - 一种文件签名方法、计算设备及存储介质 - Google Patents

一种文件签名方法、计算设备及存储介质 Download PDF

Info

Publication number
CN112507328A
CN112507328A CN202110122278.6A CN202110122278A CN112507328A CN 112507328 A CN112507328 A CN 112507328A CN 202110122278 A CN202110122278 A CN 202110122278A CN 112507328 A CN112507328 A CN 112507328A
Authority
CN
China
Prior art keywords
file
signature
information
digest
service operation
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
CN202110122278.6A
Other languages
English (en)
Other versions
CN112507328B (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.)
Uniontech Software Technology Co Ltd
Original Assignee
Uniontech Software 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 Uniontech Software Technology Co Ltd filed Critical Uniontech Software Technology Co Ltd
Priority to CN202110122278.6A priority Critical patent/CN112507328B/zh
Priority to CN202110517488.5A priority patent/CN113190834A/zh
Publication of CN112507328A publication Critical patent/CN112507328A/zh
Application granted granted Critical
Publication of CN112507328B publication Critical patent/CN112507328B/zh
Priority to PCT/CN2021/118421 priority patent/WO2022160733A1/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring 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
    • 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
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

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

一种文件签名方法、计算设备及存储介质
技术领域
本发明涉及互联网技术领域,特别涉及一种文件签名方法、计算设备及存储介质。
背景技术
为避免软件发行过程中存在被篡改或恶意注入代码,造成软件安装过程中病毒入侵系统,现有技术中常用Android Apk签名机制和IOS App机制来加强平台对第三方软件的控制。
Android Apk签名是为了保证Apk的完整性和来源的真实性,分为JAR签名和V2签名两种方案。核心思想均是计算APK内容的hash,再使用签名算法对hash进行签名。校验时通过签名者公钥解密签名,再与校验者计算的APK内容hash进行比对,一致则校验通过。JAR签名通过Android Apk 签名机制中的签名存放在META-INF目录中,目录本身不计入签名校验过程,恶意代码可以栖身于META-INFO目录,然后重新打包成Apk包。V2签名方案要求执行签名任务时同时输入多个签名的秘钥,并且每一次签名都会覆盖已有的签名数据。因此,V2签名要求执行签名操作的用户能获取到所有的秘钥来一次性完成签名任务,不支持秘钥无法同时获得的情况下进行追加签名。
IOS App签名机制源自苹果封闭的生态系统,第三方软件发行必须通过苹果分发机制。为符合开发调试场景,IOS App机制采用双层签名加描述文档限制的方式,描述文件与AppId、设备Id等相关数据有关,限制设备以及限制签名只针对某一具体App,需要开发相应的工具协助完成证书申请,流程过于繁琐。
发明内容
为此,本发明提供一种数据处理的技术方案,以力图解决或者至少缓解上面存在的问题。
根据本发明的一个方面,提供一种文件签名方法,该文件包括描述文件和执行文件,该方法包括步骤:基于预设的摘要算法对执行文件进行处理得到第一摘要信息;根据多个业务操作类型对第一摘要信息进行签名处理,得到签名字节;将签名字节合并到执行文件,得到新的执行文件;于预设的摘要算法对描述文件和执行文件进行处理得到第二摘要信息;根据多个业务操作类型对第二摘要信息进行签名处理,得到签名文件;将描述文件、新的执行文件、签名文件打包,以得到签名后的文件。
可选地,在根据本发明的文件签名方法中,根据业务操作类型对第一摘要信息进行签名处理,得到签名字节,包括步骤:分别利用多个业务操作类型的对应的加密密钥对第一消息摘要进行加密,并生成与每个业务操作类型对应的签名者信息;分别将多个加密后的第一消息摘要和对应的签名者信息按照签名字节的结构添加到签名字节中。
可选地,在根据本发明的文件签名方法中,将多个加密后的第一消息摘要和对应的签名者信息按照签名字节的结构增加到签名字节中之前,包括步骤:判断执行文件中是否存在签名字节,若不存在则按照预设格式创建签名字节。
可选地,在根据本发明的文件签名方法中,根据多个业务操作类型对第二摘要信息进行签名处理,得到签名文件包括步骤:分别利用多个业务操作类型的对应的加密密钥对第二消息摘要进行加密,并生成与业务操作类型对应的多个签名者信息;分别将多个加密后的第二消息摘要和对应的签名者信息按照签名文件的结构添加到签名文件中。
可选地,在根据本发明的文件签名方法中,将多个加密后的第二消息摘要和对应的签名者信息按照签名字节的结构增加到签名文件中之前,包括步骤:判断文件中是否存在签名文件,若不存在则按照预设格式创建签名文件。
可选地,在根据本发明的文件签名方法中,签名者信息包括:包含业务操作类型对应的解密密钥和验证特殊项的证书、得到摘要信息采用的摘要算法、签名算法。
可选地,在根据本发明的文件签名方法中,加密密钥为私钥,所述解密密钥为公钥。
可选地,在根据本发明的文件签名方法中,业务操作类型包括:调试验证、企业内部验证、商店验证、开发者验证。
可选地,在根据本发明的文件签名方法中,文件为DEB格式。
可选地,在根据本发明的文件签名方法中,签名字节的结构根据PKCS#7加密标准制定。
可选地,在根据本发明的文件签名方法中,得到签名后的文件,还包括步骤:当需要安装程序时,在安装程序对应的文件之前,获取签名后的文件中的签名文件,以验证文件的安全性;当需要运行程序时,在加载程序对应的文件之前,获取执行文件中的签名字节,以验证文件的安全性。
可选地,在根据本发明的文件签名方法中,获取签名后的文件中的签名文件后,还包括步骤:获取签名文件中加密后的第二摘要信息,利用与加密密钥对应的解密密钥对所述加密后的第二摘要信息进行解密;利用解密后的第二摘要信息验证所述文件是否被篡改;获取签名文件中的多个签名者信息,利用多个签名者信息以验证文件的安全性。
可选地,在根据本发明的文件签名方法中,利用解密后的第二摘要信息验证文件是否被篡改,包括步骤:获取每个签名者信息中的摘要算法,基于获取的摘要算法对所述文件中的描述文件、除签名字节之外的执行文件进行处理得到第二校验数据;若解密后的第二摘要信息和第二校验数据一致,则确定文件未被篡改。
可选地,在根据本发明的文件签名方法中,获取签名后的文件中的签名字节后,还包括步骤:获取签名字节中加密后的第一摘要信息,利用与加密密钥对应的解密密钥对所述加密后的第一摘要信息进行解密;利用解密后的摘要信息验证所述文件是否被篡改;获取签名字节中的多个证书,利用多个证书验证所述文件的安全性。
可选地,在根据本发明的文件签名方法中,利用解密后的第一摘要信息验证文件是否被篡改,包括步骤:获取签名字节中证书的摘要算法,基于获取的摘要算法对文件中的除签名字节之外的执行文件进行处理得到第一校验数据;若解密后的第一摘要信息和第一校验数据一致,则确定文件未被篡改。
可选地,在根据本发明的文件签名方法中,利用多个证书验证文件的安全性,包括步骤:若存在证书与预设的白名单数据库相匹配,则确定文件为安全文件。
可选地,在根据本发明的文件签名方法中,若存在证书与预设的白名单数据库相匹配之后,还包括步骤:判断匹配的证书中是否存在特殊项,若存在特殊项,则进行特殊项验证,特殊项验证通过后确定所述文件为安全文件。
可选地,在根据本发明的文件签名方法中,特殊项为预设机器码。
根据本发明的又一个方面,提供一种计算设备,包括:至少一个处理器;以及存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行根据本发明的文件签名方法的指令。
根据本发明的又一个方面,还提供一种存储有程序指令的可读存储介质,当程序指令被客户端读取并执行时,使得客户端执行根据本发明的任一项文件签名方法。
根据本发明的技术方案,根据安装文件中包括的执行文件构建第一摘要信息,将签名后的第一摘要信息新增到执行文件,保证了执行文件的安全性;根据执行内容和描述内容构建第二摘要信息,并安装在文件中新增签名文件,以存储签名后的第二摘要信息,签名验证范围覆盖了原先的整个文件,保证了整个安装文件的可靠性完整性,避免恶意修改描述文件造成病毒入侵。
进一步地,构建特定的签名字节结构,基于多个业务操作类型对摘要信息进行处理,实现了简便地根据不同的应用场景追加签名。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明的一个实施例的计算设备100的示意图;
图2示出了根据本发明的一个实施例的文件签名方法200的流程图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1是示例计算设备100的框图,在基本的配置102中,计算设备100典型地包括系统存储器106和一个或者多个处理器104。存储器总线108可以用于在处理器104和系统存储器106之间的通信。
取决于期望的配置,处理器104可以是任何类型的处理器,包括但不限于:微处理器(µP)、微控制器(µC)、数字信息处理器(DSP)或者它们的任何组合。处理器104可以包括诸如一级高速缓存110和二级高速缓存112之类的一个或者多个级别的高速缓存、处理器核心114和寄存器116。示例的处理器核心114可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器118可以与处理器104一起使用,或者在一些实现中,存储器控制器118可以是处理器104的一个内部部分。
取决于期望的配置,系统存储器106可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。系统存储器106可以包括操作系统120、一个或者多个应用122以及程序数据124。在一些实施方式中,应用122可以布置为在操作系统上利用程序数据124进行操作。在一些实施例中,计算设备100被配置为执行根据本发明的文件签名方法,程序数据124中就包含了用于执行方法200的指令。
计算设备100还可以包括有助于从各种接口设备(例如,输出设备142、外设接口144和通信设备146)到基本配置102经由总线/接口控制器130的通信的接口总线140。示例的输出设备142包括图形处理单元148和音频处理单元150。它们可以被配置为有助于经由一个或者多个A/V端口152与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口144可以包括串行接口控制器154和并行接口控制器156,它们可以被配置为有助于经由一个或者多个I/O端口158和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、图像输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备146可以包括网络控制器160,其可以被布置为便于经由一个或者多个通信端口164与一个或者多个其他计算设备162通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。在一些实施例中,计算机可读介质中存储一个或多个程序,这一个或多个程序中包括执行某些方法的指令,如根据本发明的实施例,计算设备100通过所述指令来执行基于本发明的文件签名方法200。一般来说在操作系统中,任何应用的安装包在安装时都需要拥有签名才能被系统识别安装,通过签名可以确保信息传输的完整性。为了判断信息传输过程中是否被篡改,应用程序的安装包文件一般都会添加一个签名。
图2示出了根据本发明的一个实施例的文件签名方法200的流程图,方法200适于在计算设备(例如前述计算设备100中)执行。如图2所示,文件签名方法始于步骤S210。安装包文件在不同的系统中有不同的类型,Java程序的应用安装文件的格式通常为JAD或者JAR,Linux系统中大多为RPM、TAR.GZ、DEB,Android系统的安装文件大多为APK。但其通常包括描述文件和执行文件,描述文件存放版本信息及执行文件相关信息,执行文件指的是可以由操作系统进行加载执行的文件,文件中的描述文件和执行文件具体内容取决于文件格式。
在步骤S210中,基于预设的摘要算法对执行文件进行处理得到第一摘要信息。例如,需要进行签名的安装包文件为DEB文件,可执行文件即实际安装的程序数据,格式为ELF(Executable and Linkable Format)文件,描述文件的内容包括DEB 包的版本信息、版本依赖、发布者信息等。在对文件进行签名前,需要对待签名的安装包文件进行解压,以提取出ELF文件。通常情况下,安装包中需要存在一个信息摘要文件,通常意义上的信息摘要处理可以理解为对安装包内全部文件的具体信息进行记录的行为。
具体地,对于每个签名者,用预设摘要算法计算出ELF文件代码段的摘要值,预设摘要算法视系统规范而定,MD(Message Digest,消息摘要算法)、SHA-1(Secure HashAlgorithm,安全散列算法)和 MAC(Message Authentication Code,消息认证码算法),在UOS系统中摘要算法包括SHA256、SM3等。摘要算法不可逆,只有输入相同的明文数据经过相同的摘要算法才能得到相同的密文。
接着,在步骤S220中,根据多个业务操作类型对第一摘要信息进行签名处理,得到签名字节。业务操作类型包括:调试验证、企业内部验证、商店验证、开发者验证,以拓展应用安装后在系统中不同的需要验证签名的场景。
签名可以是只对摘要加密, 也可以是对摘要和其他信息的融合再加密。本方案中用签名者密钥对第一摘要信息加密, 得出签名结果,签名者密钥和业务操作类型有关。
具体地,根据多个业务操作类型对第一摘要信息进行处理得到签名字节,包括步骤:分别利用多个业务操作类型的对应的加密密钥对第一消息摘要进行加密,并生成与每个业务操作类型对应的签名者信息;分别将多个加密后的第一消息摘要和对应的签名者信息按照签名字节的结构添加到签名字节中。其中,签名者信息包括:包含业务操作类型对应的解密密钥和验证特殊项的证书、得到摘要信息采用的摘要算法、签名算法。加密密钥为私钥,解密密钥为公钥。
根据本发明的一个实施例,签名字节的结构根据PKCS#7加密标准制定,PKCS#7是由RSA安全体系在公钥加密系统中交换数字证书产生的一种加密标准。PKCS#7描述数字证书的语法和其他加密消息,例如数据加密和数字签名的方法,也包含了摘要算法。当使用PKCS#7进行数字签名时,结果包含签名证书和已证明路径上任何其他证书。
具体地,签名字节为PEM格式签名消息数据,而在每个签名者签名时需要创建PKCS#7加密标准中的SignedData结构才能对签名数据相关属性进行操作,SignedData结构包括版本、摘要算法集合、内容信息、证书、已撤销证书、签名者信息,根据签名过程填充相应的信息到SignedData结构中。内容信息指定了带原文或者不带原文两种格式中的一种,在带原文的格式里,已签名的数据是SignedData的一部分,在验证签名的时候无需携带源数据。签名者信息的结构又包括版本、包含业务操作类型对应的解密密钥和验证特殊项的证书的证书标识、摘要算法、已认证属性、签名算法、签名、未认证属性。在验证过程中每个SignedData的签名者信息中证书标志用来查找相应的公钥证书,摘要算法用来对原文作摘要,在从签名中解密出来的摘要比较构成验签的最后一步,签名算法用来解密签名,签名用来获取摘要。已认证属性是签名计算里的部分,如果任何一部分的属性被修改了,那么签名就会失效。
由于签名者存在多个,第一次签名时已经构建签名字节,因此将多个加密后的第一消息摘要和多个证书按照签名字节的结构增加到签名字节中之前,还包括步骤:判断执行文件中是否存在签名字节,若不存在则按照预设格式创建签名字节,预设格式即前述PKCS#7加密标准。
若执行文件中已存在签名字节,追加签名时则需要将签名字节转化为可操作的结构以新增SignedData。签名字节为PEM格式签名消息数据,使用openssl提供PEM读取接口将签名字节转化为SignedData 形式结构数据,方便签名数据相关属性数据操作。根据追加签名的过程填充相应的信息到一个新的空SignedData结构中,再将填充好的SignedData添加到当前SignedData的未认证属性中,得到追加签名后新的SignedData。为了追溯签名有效期,填充时还需要追加该签名者签名时间戳证书TSA。修改未认证属性不会影响当前SignedData的验证结果,而在验证签名时如果有未认证属性中存在SignedData验证成功,则该文件能成功验证。构建特定的签名字节结构,基于多个业务操作类型对摘要信息进行处理,实现了根据不同的应用场景追加签名。
随后,在步骤S230中,将签名字节合并到执行文件,得到新的执行文件。若执行文件中已存在签名字节,则将按照上述方法得到的新的SignedData转换为PEM格式替换原来的签名字节。
然后在步骤S240中,基于预设的摘要算法对描述文件和执行文件进行处理得到第二摘要信息。摘要算法此处不再赘述,根据本发明的一个实施例,拼接描述文件和新的执行文件的摘要值,对拼接后的摘要值再进行一次摘要算法既得第二摘要信息。
接着在步骤S250中,根据多个业务操作类型对第二摘要信息进行签名处理,得到签名文件。业务操作类型有多个,一个业务类型即对应一个签名者,以拓展应用安装后在系统中不同的需要验证签名的场景。
根据本发明的一个实施例,根据多个业务操作类型对第二摘要信息进行签名处理,得到签名文件包括步骤:分别利用多个业务操作类型的对应的加密密钥对第二消息摘要进行加密,并生成与业务操作类型对应的多个签名者信息;分别将多个加密后的第二消息摘要和对应的签名者信息按照签名文件的结构添加到签名文件中。
具体地,签名文件存储为PEM格式,而在每个签名者签名时需要将PEM格式数据转换为C语言可编程的SignedData数据结构对象,因此需要先创建PKCS#7加密标准中的SignedData,SignedData结构包括版本、摘要算法集合、内容信息、证书、已撤销证书、签名者信息,根据签名过程填充相应的信息到SignedData结构中。内容信息指定了带原文或者不带原文两种格式中的一种,在带原文的格式里,已签名的数据是SignedData的一部分,在验证签名的时候无需携带源数据。签名者信息的结构又包括版本、包含业务操作类型对应的解密密钥和验证特殊项的证书的证书标识、摘要算法、已认证属性、签名算法、签名、未认证属性。
由于签名者存在多个,第一次签名时已经构建签名文件,根据本发明的一个是实例,将多个加密后的第二消息摘要和多个证书按照签名文件的结构增加到签名文件中之前,包括步骤:判断所述文件中是否存在签名文件,若不存在则按照预设格式创建签名文件,预设格式即前述PKCS#7加密标准。
若文件中已存在签名文件,追加签名时则需要将签名文件转化为可操作的结构以新增SignedData。签名文件为PEM格式,使用openssl提供PEM读取接口将签名文件转化为SignedData 形式结构数据,方便签名数据相关属性数据操作。根据追加签名的过程填充相应的信息到一个新的空SignedData结构中,再将填充好的SignedData添加到当前SignedData的未认证属性中,得到追加签名后新的SignedData。修改未认证属性不会影响当前SignedData的验证结果,而在验证签名时如果有未认证属性中存在SignedData验证成功,则该文件能成功通过验证。
最后在步骤S260中,将描述文件、新的执行文件、签名文件打包,以得到签名后的文件。得到签名后的文件后,还包括对签名后的文件进行验证的步骤。
根据本发明的一个实施例,对签名后的文件进行验证的步骤包括:当需要安装程序时,在安装程序对应的文件之前,获取签名后的文件中的签名文件,以验证文件的安全性;当需要运行程序时,在加载程序对应的文件之前,获取执行文件中的签名字节,以验证文件的安全性。
具体来说,验证文件的安全性包括如下步骤:获取签名文件中加密后的第二摘要信息,利用与加密密钥对应的解密密钥对加密后的第二摘要信息进行解密;利用解密后的第二摘要信息验证执行文件是否被篡改;获取签名文件中的多个签名者信息,利用多个签名者信息以验证文件的安全性。签名者信息的结构包括版本、包含业务操作类型对应的解密密钥和验证特殊项的证书的证书标识、摘要算法、已认证属性、签名算法、签名、未认证属性。需要指出的是,将签名文件直接转换为SignedData格式后,还需要从该SignedData的未认证属性中获取追加的其他SignedData,依次验证每个SignedData中的签名者信息,存在SignedData验证成功,则该文件能成功通过验证。
进一步地,利用解密后的第二摘要信息验证文件是否被篡改,包括步骤:获取每个签名者信息中的摘要算法,基于获取的摘要算法对所述文件中的描述文件、除签名字节之外的执行文件进行处理得到第二校验数据;若解密后的第二摘要信息和第二校验数据一致,则确定执行文件未被篡改。
运行程序时,在加载程序对应的文件之前,获取执行文件中的签名字节,验证签名字节的安全性的步骤包括:获取签名字节中加密后的第一摘要信息,利用与加密密钥对应的解密密钥对加密后的第一摘要信息进行解密;利用解密后的摘要信息验证文件是否被篡改;获取签名字节中的多个证书,利用多个证书验证文件的安全性。需要指出的是,将签名文件直接转换为SignedData格式后,还需要从该SignedData的未认证属性中获取追加的其他SignedData,依次验证每个SignedData中的证书,存在SignedData验证成功,则该文件能成功通过验证。
进一步地,用解密后的第一摘要信息验证执行文件是否被篡改,包括步骤:获取所述签名字节中证书的摘要算法,基于获取的摘要算法对文件中的除签名字节之外的执行文件进行处理得到第二校验数据;若解密后的第一摘要信息和第一校验数据一致,则确定文件未被篡改。
利用多个证书验证文件的安全性,包括步骤:若存在证书与预设的白名单数据库相匹配,则确定文件为安全文件,白名单可以利于开发阶段的调试。
若存在证书与预设的白名单数据库相匹配之后,还包括步骤:判断匹配的证书中是否存在特殊项,若存在特殊项,则进行特殊项验证,特殊项验证通过后确定文件为安全文件。进一步地,特殊项为预设机器码。调试证书签名,开发者申请证书时提交本机机器码。经调试证书签名的DEB文件将只能在机器码所在设备安装和运行。企业内部证书用于企业内部应用商店,帮助企业对DEB包进一步掌控。
根据本发明的技术方案,根据安装文件中包括的执行文件构建第一摘要信息,将签名后的第一摘要信息新增到执行文件,保证了执行文件的安全性;根据执行内容和描述内容构建第二摘要信息,并安装在文件中新增签名文件,以存储签名后的第二摘要信息,签名验证范围覆盖了原先的整个文件,保证了整个安装文件的可靠性完整性,避免恶意修改描述文件造成病毒入侵。
进一步地,构建特定的签名字节结构,基于多个业务操作类型对摘要信息进行签名处理,实现了简便地根据不同的应用场景追加签名。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如软盘、CD-ROM、硬盘驱动器或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的网数据处理方法。
以示例而非限制的方式,计算机可读介质包括计算机存储介质和通信介质。计算机可读介质包括计算机存储介质和通信介质。计算机存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在计算机可读介质的范围之内。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。

Claims (10)

1.一种文件签名方法,所述文件包括描述文件和执行文件,所述方法包括步骤:
基于预设的摘要算法对所述执行文件进行处理得到第一摘要信息;
根据多个业务操作类型对第一摘要信息进行签名处理,得到签名字节;
将签名字节合并到执行文件,得到新的执行文件;
基于预设的摘要算法对描述文件和执行文件进行处理得到第二摘要信息;
根据多个业务操作类型对第二摘要信息进行签名处理,得到签名文件;
将描述文件、新的执行文件、签名文件打包,以得到签名后的文件。
2.如权利要求1所述的方法,所述根据业务操作类型对第一摘要信息进行签名处理,得到签名字节,包括步骤:
分别利用多个业务操作类型的对应的加密密钥对所述第一消息摘要进行加密,并生成与每个业务操作类型对应的签名者信息;
分别将多个加密后的第一消息摘要和对应的签名者信息按照签名字节的结构添加到签名字节中。
3.如权利要求2所述的方法,所述将多个加密后的第一消息摘要和对应的签名者信息按照签名字节的结构增加到签名字节中之前,包括步骤:判断执行文件中是否存在签名字节,若不存在则按照预设格式创建签名字节。
4.如权利要求3所述的方法,所述根据多个业务操作类型对第二摘要信息进行签名处理,得到签名文件包括步骤:
分别利用多个业务操作类型的对应的加密密钥对所述第二消息摘要进行加密,并生成与业务操作类型对应的多个签名者信息;
分别将多个加密后的第二消息摘要和对应的签名者信息按照签名文件的结构添加到签名文件中。
5.如权利要求4所述的方法,所述将多个加密后的第二消息摘要和对应的签名者信息按照签名字节的结构增加到签名文件中之前,包括步骤:判断所述文件中是否存在签名文件,若不存在则按照预设格式创建签名文件。
6.如权利要求2-5中任一项所述的方法,所述签名者信息包括:包含业务操作类型对应的解密密钥和验证特殊项的证书、得到摘要信息采用的摘要算法、签名算法。
7.如权利要求2-5中任一项所述的方法,所述加密密钥为私钥,所述解密密钥为公钥。
8.如权利要求1-4中任一项所述的方法,所述业务操作类型包括:调试验证、企业内部验证、商店验证、开发者验证。
9.一种计算设备,包括:
至少一个处理器;以及
存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如权利要求1-8中任一项所述方法的指令。
10.一种存储有程序指令的可读存储介质,当所述程序指令被客户端读取并执行时,使得所述客户端执行如权利要求1-8中任一项所述方法。
CN202110122278.6A 2021-01-29 2021-01-29 一种文件签名方法、计算设备及存储介质 Active CN112507328B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202110122278.6A CN112507328B (zh) 2021-01-29 2021-01-29 一种文件签名方法、计算设备及存储介质
CN202110517488.5A CN113190834A (zh) 2021-01-29 2021-01-29 一种文件签名方法、计算设备及存储介质
PCT/CN2021/118421 WO2022160733A1 (zh) 2021-01-29 2021-09-15 一种文件签名方法、计算设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110122278.6A CN112507328B (zh) 2021-01-29 2021-01-29 一种文件签名方法、计算设备及存储介质

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202110517488.5A Division CN113190834A (zh) 2021-01-29 2021-01-29 一种文件签名方法、计算设备及存储介质

Publications (2)

Publication Number Publication Date
CN112507328A true CN112507328A (zh) 2021-03-16
CN112507328B CN112507328B (zh) 2021-06-08

Family

ID=74952418

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202110517488.5A Pending CN113190834A (zh) 2021-01-29 2021-01-29 一种文件签名方法、计算设备及存储介质
CN202110122278.6A Active CN112507328B (zh) 2021-01-29 2021-01-29 一种文件签名方法、计算设备及存储介质

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202110517488.5A Pending CN113190834A (zh) 2021-01-29 2021-01-29 一种文件签名方法、计算设备及存储介质

Country Status (2)

Country Link
CN (2) CN113190834A (zh)
WO (1) WO2022160733A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112989435A (zh) * 2021-03-26 2021-06-18 武汉深之度科技有限公司 一种数字签名方法及计算设备
CN113468485A (zh) * 2021-07-05 2021-10-01 桂林电子科技大学 基于Linux操作系统的数字签名和证书验证的程序保护方法
CN113541973A (zh) * 2021-09-17 2021-10-22 杭州天谷信息科技有限公司 一种电子签名封装方法
WO2022160733A1 (zh) * 2021-01-29 2022-08-04 统信软件技术有限公司 一种文件签名方法、计算设备及存储介质

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114268431B (zh) * 2021-12-16 2023-06-16 统信软件技术有限公司 浏览器证书转码方法及装置、计算设备、可读存储介质
CN115225272A (zh) * 2022-09-20 2022-10-21 北方健康医疗大数据科技有限公司 基于国产商用密码算法的大数据灾备系统、方法和设备
CN116383896B (zh) * 2023-06-07 2023-11-03 中航金网(北京)电子商务有限公司 文件完整性校验方法、云平台启动方法、装置及设备

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103413076A (zh) * 2013-08-27 2013-11-27 北京理工大学 一种Android应用程序分块保护的方法
CN105608393A (zh) * 2016-01-19 2016-05-25 北京鼎源科技有限公司 一种基于Android可执行文件重组的加固方法
US20160197730A1 (en) * 2014-08-08 2016-07-07 Haw-Minn Lu Membership query method
CN106169052A (zh) * 2016-07-19 2016-11-30 北京海泰方圆科技股份有限公司 应用程序的处理方法、装置及移动终端
CN107786504A (zh) * 2016-08-26 2018-03-09 腾讯科技(深圳)有限公司 Elf文件发布方法、elf文件校验方法、服务器及终端
CN108460293A (zh) * 2017-02-22 2018-08-28 北京大学 一种应用程序完整性多级检查机制
CN109743171A (zh) * 2018-12-06 2019-05-10 广州博士信息技术研究院有限公司 一种解决多方数字签名、时间戳及加密的密钥串联方法
CN110378104A (zh) * 2018-04-16 2019-10-25 北京升鑫网络科技有限公司 一种升级防纂改的方法
CN110830256A (zh) * 2018-08-14 2020-02-21 珠海金山办公软件有限公司 一种文件签名方法、装置、电子设备及可读存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8914641B2 (en) * 2012-07-11 2014-12-16 Intel Corporation Method for signing and verifying data using multiple hash algorithms and digests in PKCS
CN108683502B (zh) * 2018-03-30 2022-01-25 上海连尚网络科技有限公司 一种数字签名验证方法、介质及设备
CN111552946A (zh) * 2020-04-24 2020-08-18 上海亘岩网络科技有限公司 一种pdf文件数字签名方法、系统及存储介质
CN113190834A (zh) * 2021-01-29 2021-07-30 统信软件技术有限公司 一种文件签名方法、计算设备及存储介质

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103413076A (zh) * 2013-08-27 2013-11-27 北京理工大学 一种Android应用程序分块保护的方法
US20160197730A1 (en) * 2014-08-08 2016-07-07 Haw-Minn Lu Membership query method
CN105608393A (zh) * 2016-01-19 2016-05-25 北京鼎源科技有限公司 一种基于Android可执行文件重组的加固方法
CN106169052A (zh) * 2016-07-19 2016-11-30 北京海泰方圆科技股份有限公司 应用程序的处理方法、装置及移动终端
CN107786504A (zh) * 2016-08-26 2018-03-09 腾讯科技(深圳)有限公司 Elf文件发布方法、elf文件校验方法、服务器及终端
CN108460293A (zh) * 2017-02-22 2018-08-28 北京大学 一种应用程序完整性多级检查机制
CN110378104A (zh) * 2018-04-16 2019-10-25 北京升鑫网络科技有限公司 一种升级防纂改的方法
CN110830256A (zh) * 2018-08-14 2020-02-21 珠海金山办公软件有限公司 一种文件签名方法、装置、电子设备及可读存储介质
CN109743171A (zh) * 2018-12-06 2019-05-10 广州博士信息技术研究院有限公司 一种解决多方数字签名、时间戳及加密的密钥串联方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022160733A1 (zh) * 2021-01-29 2022-08-04 统信软件技术有限公司 一种文件签名方法、计算设备及存储介质
CN112989435A (zh) * 2021-03-26 2021-06-18 武汉深之度科技有限公司 一种数字签名方法及计算设备
CN113468485A (zh) * 2021-07-05 2021-10-01 桂林电子科技大学 基于Linux操作系统的数字签名和证书验证的程序保护方法
CN113541973A (zh) * 2021-09-17 2021-10-22 杭州天谷信息科技有限公司 一种电子签名封装方法
CN113541973B (zh) * 2021-09-17 2021-12-21 杭州天谷信息科技有限公司 一种电子签名封装方法

Also Published As

Publication number Publication date
WO2022160733A1 (zh) 2022-08-04
CN113190834A (zh) 2021-07-30
CN112507328B (zh) 2021-06-08

Similar Documents

Publication Publication Date Title
CN112507328B (zh) 一种文件签名方法、计算设备及存储介质
US9276752B2 (en) System and method for secure software update
CN107463806B (zh) 一种Android应用程序安装包的签名和验签方法
KR101740256B1 (ko) 모바일 앱 무결성 보증 장치 및 방법
US20170262656A1 (en) Method and device for providing verifying application integrity
JP4501349B2 (ja) システムモジュール実行装置
US20170270319A1 (en) Method and device for providing verifying application integrity
US20170262657A1 (en) Method and device for providing verifying application integrity
US20170262658A1 (en) Method and device for providing verifying application integrity
CN110830257B (zh) 一种文件签名方法、装置、电子设备及可读存储介质
US20050154899A1 (en) Mobile software authentication and validation
KR20170089352A (ko) 가상화 시스템에서 수행하는 무결성 검증 방법
US20050049970A1 (en) Program creation apparatus
CN115550060B (zh) 基于区块链的可信证书验证方法、装置、设备和介质
CN116244756A (zh) 浏览器插件的校验方法以及装置与计算设备
CN111274552A (zh) 一种升级包的签名及验签方法、存储介质
WO2020062233A1 (zh) 应用程序处理和部署的方法、装置及计算机可读介质
CN117556430B (zh) 一种安全启动方法、装置、设备及存储介质
CN118138319A (zh) 一种基于非对称加密的网关固件合法性验证方法及系统
CN115455453A (zh) 一种文件检测方法、装置、设备及存储介质
CN115913563A (zh) 电子签章的生成方法、验证方法及设备
CN112257033A (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
GR01 Patent grant
GR01 Patent grant