CN116781283A - 一种签名方法及装置 - Google Patents
一种签名方法及装置 Download PDFInfo
- Publication number
- CN116781283A CN116781283A CN202310954777.0A CN202310954777A CN116781283A CN 116781283 A CN116781283 A CN 116781283A CN 202310954777 A CN202310954777 A CN 202310954777A CN 116781283 A CN116781283 A CN 116781283A
- Authority
- CN
- China
- Prior art keywords
- target
- signature
- data
- signed
- tool
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 76
- 238000012545 processing Methods 0.000 claims abstract description 18
- 230000004044 response Effects 0.000 claims abstract description 7
- 238000004422 calculation algorithm Methods 0.000 claims description 29
- 238000004364 calculation method Methods 0.000 claims description 10
- 230000006399 behavior Effects 0.000 claims description 7
- 230000008569 process Effects 0.000 description 13
- 230000001276 controlling effect Effects 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- VBMOHECZZWVLFJ-GXTUVTBFSA-N (2s)-2-[[(2s)-6-amino-2-[[(2s)-6-amino-2-[[(2s,3r)-2-[[(2s,3r)-2-[[(2s)-6-amino-2-[[(2s)-2-[[(2s)-6-amino-2-[[(2s)-2-[[(2s)-2-[[(2s)-2,6-diaminohexanoyl]amino]-5-(diaminomethylideneamino)pentanoyl]amino]propanoyl]amino]hexanoyl]amino]propanoyl]amino]hexan Chemical compound NC(N)=NCCC[C@@H](C(O)=O)NC(=O)[C@H](CCCCN)NC(=O)[C@H](CCCCN)NC(=O)[C@H]([C@@H](C)O)NC(=O)[C@H]([C@H](O)C)NC(=O)[C@H](CCCCN)NC(=O)[C@H](C)NC(=O)[C@H](CCCCN)NC(=O)[C@H](C)NC(=O)[C@H](CCCN=C(N)N)NC(=O)[C@@H](N)CCCCN VBMOHECZZWVLFJ-GXTUVTBFSA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000012550 audit Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 108010068904 lysyl-arginyl-alanyl-lysyl-alanyl-lysyl-threonyl-threonyl-lysyl-lysyl-arginine Proteins 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3247—Cryptographic 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
Abstract
本申请实施例提供了一种签名方法及装置,所述签名方法包括:响应于获得针对目标数据文件的签名请求,启动目标签名工具对所述目标数据文件进行哈希处理,得到待签名数据;将所述待签名数据发送给目标加密设备进行签名操作,以得到第一认证签名;将所述第一认证签名与所述目标数据文件进行关联处理,以使得所述目标数据文件具有所述第一认证签名;其中,所述目标加密设备与所述目标签名工具处于同一部署环境或不同部署环境。
Description
技术领域
本申请实施例涉及数据安全技术领域,特别涉及一种签名方法及装置。
背景技术
硬件加密机(又称为服务器密码机,以下简称HSM)是一种基于硬件实现的加密解密设备,广泛应用于信息安全领域。HSM一般由芯片、电路板、外壳等组成,具有高度安全性、高效性、可靠性等优点。它是IT关键基础设施中不可或缺的一部分,被广泛应用于电子商务、金融、电信、政务等领域。
HSM通过实现各种加密算法,保护用户数据的机密性、完整性和可用性。它支持包括多种对称及非对称加密算法,同时满足以PKCS#11(一种加密令牌接口标准)为主,以厂商自定义协议为辅的调用方式。在信息安全领域中,HSM的重要性不言而喻,它可以有效防止黑客攻击、机密数据泄露等安全威胁,保障用户数据的安全。
数据签名通常是通过使用私钥对数据的散列值(文档摘要)进行签名,然后使用公钥对签名校验的方式,提供数据的完整性技术,该技术被广泛应用于软件的完整性保护中。当前大多数签名工具,如openssl、signtool、apksigner,在实现时只关注签名私钥在服务器本地存储的场景,并没有考虑天然集成PKCS#11协议,不能使用HSM中的私钥直接完成签名动作。然而,将私钥存储于本地服务器,相较存储于HSM中,不仅显著增加了私钥泄露的风险,同时也无法有效实施签名行为的审计措施。
为了兼容这些本地签名工具,业界一般有两种方案:1)HSM厂商提供本地私钥模拟方案,如提供Windows客户端,同时实现CSP(Cryptographic Service Provider),使本地签名工具认为私钥在本地存储;2)HSM厂商直接改造本地签名工具,如将PKCS#11协议嵌入openssl,在签名过程中调用远程HSM协议接口完成签名动作。然而,这两种方案都具有一定局限性,两者都需要本地签名工具与HSM客户端必须部署于同一环境,由于HSM客户端本身需要直接存储HSM的访问密钥,当本地签名工具与HSM客户端形成的签名环境一但被攻破,即可能对HSM中存储的私钥构成机密性及完整性的威胁;另外,对于第二个方案,鉴于成本原因,HSM厂商能够支持的本地签名工具非常有限,目前鲜有除openssl以外的签名工具被支持。由于签名工具内在逻辑互不相同,无法替代,造成大量本地签名工具无法接入HSM,而如第一个方案,即使HSM辗转接入了本地,也具有较高的安全使用风险。
发明内容
本申请实施例提供了一种签名方法及装置,所述签名方法包括:
响应于获得针对目标数据文件的签名请求,启动目标签名工具对所述目标数据文件进行哈希处理,得到待签名数据;
将所述待签名数据发送给目标加密设备进行签名操作,以得到第一认证签名;
将所述第一认证签名与所述目标数据文件进行关联处理,以使得所述目标数据文件具有所述第一认证签名;
其中,所述目标加密设备与所述目标签名工具处于同一部署环境或不同部署环境。
在一些实施例中,所述将所述待签名数据发送给目标加密设备进行签名操作,包括:
将所述待签名数据发送给所述目标加密设备的客户端程序,由所述客户端程序基于目标加密协议调用所述目标加密设备的硬件安全模块以第一加密数据对所述待签名数据进行签名操作,以得到所述第一认证签名。
在一些实施例中,所述方法还包括以下至少之一:
对所述客户端程序进行身份认证,以在所述身份认证通过后执行发送所述待签名数据的步骤;
通过所述客户端程序对所述待签名数据的来源信息进行身份认证;
通过所述客户端程序对调用所述硬件安全模块执行签名的操作请求进行控制。
在一些实施例中,所述方法还包括:
在得到所述待签名数据后,向所述目标签名工具发送第二加密数据,以使得所述目标签名工具利用所述第二加密数据对所述待签名数据进行签名操作,得到第二认证签名,所述第二加密数据与所述目标加密设备中的第一加密数据不同。
在一些实施例中,所述将所述第一认证签名与所述目标数据文件进行关联处理,包括:
利用所述目标加密设备返回的第一认证签名替换所述第二认证签名,使得所述目标签名工具将所述第一认证签名写至所述目标数据文件中的目标位置,进而使所述目标数据文件具有所述第一认证签名。
在一些实施例中,所述得到待签名数据,包括:
在所述目标签名工具的执行流执行至目标指令处时,在所述目标签名工具产生的数据中获得所述待签名数据;
所述目标指令用于指示所述目标签名工具利用所述第二加密数据参与指定算法,以对当前生成的待签名数据计算签名,所述指定算法为所述目标签名工具使用第二加密数据对待签名数据计算签名的算法。
在一些实施例中,所述方法还包括:
对所述目标签名工具的执行程序进行指令扫描,确定所述目标指令位置;
在所述执行程序中对应所述目标指令的位置处设置条件断点,所述条件断点用于使所述目标签名工具在执行至所述目标指令所在位置时暂停操作;
所述在所述目标签名工具产生的数据中获得所述待签名数据,包括:
在所述目标签名工具的执行流触发所述条件断点,暂停操作时,在所述目标签名工具对应的内存空间中识别、记录所述待签名数据。
在一些实施例中,所述方法还包括:
至少在所述签名工具结束暂停操作,并继续执行后续程序时,跟踪所述目标签名工具的执行流,并对所述执行流的行为特征进行识别,进而在所述执行程序中确定签名指令范围;
其中,响应于所述所述签名指令范围内的指令被执行完毕,表征所述目标签名工具生成了所述第二认证签名。
在一些实施例中,所述将所述待签名数据发送给目标加密设备进行签名操作,包括:
响应于所述目标签名工具完成所述签名指令范围内的签名指令,将所述待签名数据发送给目标加密设备进行签名操作;
其中,所述目标加密设备中存储有多个分别匹配不同待签名数据发送方的第一加密数据,以利用对应的第一加密数据对不同发送方发送的待签名数据基于对应的第一加密数据进行签名计算。
本申请另一实施例同时提供一种签名装置,包括:
启动模块,用于响应于获得针对目标数据文件的签名请求,启动目标签名工具对所述目标数据文件进行哈希处理,得到待签名数据;
第一发送模块,用于将所述待签名数据发送给目标加密设备进行签名操作,以得到第一认证签名;
处理模块,用于将所述第一认证签名与所述目标数据文件进行关联处理,以使得所述目标数据文件具有所述第一认证签名;
其中,所述目标加密设备与所述目标签名工具处于同一部署环境或不同部署环境。
本申请另一实施例还提供一种计算机设备,包括:
一个或多个处理器;
存储器,配置为存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现上述签名方法。
本申请另一实施例还提供一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制包括所述存储介质的设备执行上述签名方法。
本申请另一实施例还提供一种计算机程序产品,所述计算机程序产品被有形地存储在计算机可读介质上并且包括计算机可读指令,所述计算机可执行指令在被执行时使至少一个处理器执行上述签名方法。
基于上述实施例的公开可以获知,本申请实施例具备的有益效果包括通过获得本地签名工具对目标数据文件进行哈希计算得到的待签名数据,并将其发送至具有高安全等级的目标加密设备执行签名计算,得到第一认证签名,之后便可将该第一认证签名与目标数据文件进行关联处理,以使目标数据文件具有第一认证签名。基于该方法无需对本地的目标签名工具进行大幅改动,节省了签名工具厂商的升级成本,而且本地可不持有目标加密设备的访问密码,也无需存储用于对待签名数据执行签名计算的加密私钥,即本地的目标签名工具无法接触到目标加密设备的访问秘钥,更无法接触到加密私钥,因此显著降低了访问秘钥及加密秘钥的泄露风险,确保了秘钥安全及目标加密设备的使用安全。
附图说明
图1为本申请实施例中的签名方法的流程图。
图2为本申请实施例中的签名方法的一应用流程图。
图3为本申请实施例中的签名方法的另一应用流程图(图中)。
图4为本申请实施例中的签名装置的结构框图。
具体实施方式
下面,结合附图对本申请的具体实施例进行详细的描述,但不作为本申请的限定。
应理解的是,可以对此处公开的实施例做出各种修改。因此,下述说明书不应该视为限制,而仅是作为实施例的范例。本领域的技术人员将想到在本公开的范围和精神内的其他修改。
包含在说明书中并构成说明书的一部分的附图示出了本公开的实施例,并且与上面给出的对本公开的大致描述以及下面给出的对实施例的详细描述一起用于解释本公开的原理。
通过下面参照附图对给定为非限制性实例的实施例的优选形式的描述,本申请的这些和其它特性将会变得显而易见。
还应当理解,尽管已经参照一些具体实例对本申请进行了描述,但本领域技术人员能够确定地实现本申请的很多其它等效形式,它们具有如权利要求所述的特征并因此都位于借此所限定的保护范围内。
当结合附图时,鉴于以下详细说明,本公开的上述和其他方面、特征和优势将变得更为显而易见。
此后参照附图描述本公开的具体实施例;然而,应当理解,所公开的实施例仅仅是本公开的实例,其可采用多种方式实施。熟知和/或重复的功能和结构并未详细描述以避免不必要或多余的细节使得本公开模糊不清。因此,本文所公开的具体的结构性和功能性细节并非意在限定,而是仅仅作为权利要求的基础和代表性基础用于教导本领域技术人员以实质上任意合适的详细结构多样地使用本公开。
本说明书可使用词组“在一种实施例中”、“在另一个实施例中”、“在又一实施例中”或“在其他实施例中”,其均可指代根据本公开的相同或不同实施例中的一个或多个。
下面,结合附图详细说明本申请实施例。
如图1所示,本申请实施例提供一种签名方法,包括:
S1:响应于获得针对目标数据文件的签名请求,启动目标签名工具对目标数据文件进行哈希处理,得到待签名数据;
S2:将待签名数据发送给目标加密设备进行签名操作,以得到第一认证签名;
S3:将第一认证签名与目标数据文件进行关联处理,以使得目标数据文件具有第一认证签名;
其中,目标加密设备与目标签名工具处于同一部署环境或不同部署环境。
例如,在用户对系统输入指令,用于对指定的数据文件进行签名或包含签名的加密处理,或者是用户直接启动目标签名工具,并指示其对指定的数据文件进行签名,再或者是用户基于一数据传输程序对指定的数据文件进行秘密发送时,基于本实施例方法形成的应用程序或者是基于本实施例方法形成的装载在系统、用户当前启用的应用程序中的小工具,还可以是集成在设备中的某硬件,再或是与设备相连的另一设备中加载有本实施例方法形成的应用程序或功能等,便可自行启动,如通过监测目标签名工具被开启,或是必然需要调用目标签名工具的程序/功能被启动时,由本实施例中方法形成的程序便会自行启动,或者是本实施例中方法形成的程序被系统、目标签名工具、数据传输程序等所在的应用程序或设备在确定需要调用或已开启目标签名工具时启动本实施例的程序(以下对由本实施例中方法形成的程序简称为控制程序),具体不唯一,控制程序的启动方式、具体体现形式均不定,上述内容仅作为一可选实施例。而且,控制程序的启动时机也是不定的,可以与目标签名工具同步启动,也可以先于目标签名工具启动,还可以晚于目标签名工具启动,但是至少须在目标签名工具生成待签名数据时启动。
作为一可选实施例,本实施例中的控制程序是独立于目标签名工具的,其具体体现形式不定。该控制程序是在确定需要对目标数据文件进行签名时,先于目标签名工具启动,接着响应于对目标数据文件的签名请求,由控制程序启动目标签名工具,并将目标数据文件给至目标签名工具,以使目标签名工具对目标数据文件进行哈希处理,得到对应目标数据文件的散列值(或称为摘要数据),该散列值即为待签名数据。所述目标数据文件可以软件包、数据文件,如文档、文本集、数据库、图片集、音频文件、视频文件等等。另外,对于有其他不同于哈希处理,但同用于对数据文件计算摘要数据的处理方式,并不能用于限制本实施例的方法。在获得了待签名数据后,控制程序将待签名数据发送至目标加密设备,由其对待签名数据进行签名操作,并返回第一认证签名,该第一认证签名可以为签名数据,还可以是签名指纹等其他形式的签名。控制程序得到了第一认证签名后,对该签名与目标数据文件进行关联处理,以使目标数据文件具有第一认证签名。此时,签名操作结束。其中,上述的目标加密设备与目标签名工具可以部署于同一环境,如一电子设备装设有目标加密设备,同时加载有目标签名工具,或者目标加密设备与目标签名工具部署于不同环境,如目标签名工具加载在设备A中,而目标加密设备位于设备B中,或其自身形成设备B等,但需说明的是,目标加密设备需处于可信域中,以确保其使用安全及数据安全。
基于上述实施例的公开可以获知,本实施例具备的有益效果包括通过获得本地签名工具对目标数据文件进行哈希计算得到的待签名数据,并将其发送至具有高安全等级的目标加密设备执行签名计算,得到第一认证签名,之后便可将该第一认证签名与目标数据文件进行关联处理,以使目标数据文件具有第一认证签名。基于该方法无需对本地的目标签名工具进行大幅改动,节省了签名工具厂商的升级成本,而且本地可不持有目标加密设备的访问密码,也无需存储用于对待签名数据执行签名计算的加密私钥,即本地的目标签名工具无法接触到目标加密设备的访问秘钥,更无法接触到加密私钥,因此显著降低了访问秘钥及加密秘钥的泄露风险,确保了秘钥安全及目标加密设备的使用安全。
结合图2和图3所示,图3中实例程序1对应本实施例的控制程序,实例程序2对应本实施例的客户端程序,将待签名数据发送给目标加密设备进行签名操作,包括:
S4:将待签名数据发送给目标加密设备的客户端程序,由客户端程序基于目标加密协议调用目标加密设备的硬件安全模块以第一加密数据对待签名数据进行签名操作,以得到第一认证签名。
所述的客户端程序用于和控制程序及目标加密设备进行交互,当控制程序基于所在设备将待签名数据、签名请求发送至目标加密设备时,是由该客户端程序接收,并由客户端程序响应签名请求,基于目标加密协议调用目标加密设备的硬件安全模块以第一加密数据对待签名数据进行签名操作,以得到第一认证签名。或者,客户端程序无需签名请求,仅根据待签名数据亦或是发送方身份便可确定需要调用目标加密设备的硬件安全模块执行签名操作。
在本实施例中,目标加密设备可以为多个不同设备/用户端发送的待签名数据分别执行匹配地签名操作,具体为目标加密设备中存储有多个分别对应不同设备/用户端的第一加密数据,或者客户端程序中同时匹配存储有多对不同设备/用户端与对应的第一加密数据的标识信息。当客户端程序获得设备/用户端发送的待签名数据后可确定发送方信息,接着可基于该发送方信息确定其身份及对应的第一加密数据的标识信息,之后便可将第一加密数据的标识信息及待加密数据给至目标加密设备,使其确定第一加密数据,并利用硬件安全模块基于确定的第一加密数据对待签名数据进行加密。或者是客户端程序将发送方信息及代签名数据给至目标加密设备,由其确定对应发送方信息的第一加密数据,之后利用硬件安全模块基于确定的第一加密数据对待签名数据进行加密。上述的第一加密数据可认为是用于对待签名数据进行签名计算的秘钥。
作为一可选实施例,所述目标加密设备为硬件加密器,简称为HSM,客户端程序基于PKCS#11协议调用目标加密设备的硬件安全模块以第一加密数据对待签名数据进行签名操作。该目标加密设备以及目标协议均不局限于此,也可为其他具有高安全等级的加密设备及匹配的算法协议。
通过设置客户端程序,可使控制程序所在设备基于客户端程序实现对目标加密设备的访问,而非直接访问目标加密设备,如此可有效隔绝控制程序所在设备与目标加密设备,进而有效避免了设备本地的目标签名工具接触到第一加密数据,降低了第一加密数据的泄露风险。
为了进一步提升数据安全及目标加密设备的使用安全,签名方法还包括以下至少之一:
S5:对客户端程序进行身份认证,以在身份认证通过后执行发送待签名数据的步骤;
S6:通过客户端程序对待签名数据的来源信息进行身份认证;
S7:通过客户端程序对调用硬件安全模块执行签名的操作请求进行控制。
例如,1.在控制程序控制所在设备发送待签名数据之前,需要先对目标加密设备的客户端程序进行身份认证,具体认证过程不固定,可结合目前已有的各类认证流程,此处不赘述。当对客户端程序的身份认证通过后,确定其为目标加密设备的客户端程序后,控制程序控制设备将待签名数据发送至该客户端程序。
2.客户端程序在获得了待签名数据后,可以对待签名数据的来源信息,即发送方的身份进行确认,同时对发送方的身份进行身份认证,在确定发送方的身份有效后,其才会将待签名数据给至调用的硬件加密模块,同时确定或辅助确定对应发送方身份的第一加密数据。
3.客户端程序不仅可作为位于目标加密设备与控制程序之间的媒介,还可以作为目标加密设备的控制主体,也即对目标加密设备具有部分或全部控制权限,控制程序可以通过与客户端程序的交互而取得客户端程序的信任,如进行各类安全认证,认证通过后即可取得客户端程序的信任,在取得信任后,控制程序便可向客户端程序发送授权请求,使控制程序具有调用硬件安全模块执行签名操作的权限。
上述三种方案均与安全认证相关,在具体应用时,可以择一执行,也可以执行多个或全部方案。
为了不过多改变本地签名工具的原有执行程序,使其能够基本基于原程序执行签名流程,同时不增加签名操作时间,使基于本实施例方案完成签名操作的时间与基于目标签名工具完成签名操作的时间几乎相同,即,实现本实施例方案不妨碍本地签名工具正常执行其签名流程,本实施例中的方法还包括:
S8:在得到待签名数据后,向目标签名工具发送第二加密数据,以使得目标签名工具利用第二加密数据对待签名数据进行签名操作,得到第二认证签名,第二加密数据与目标加密设备中的第一加密数据不同。
具体地,本实施例中,第二加密数据为预设置的替身秘钥,用以代替第一加密数据,也就是设备本地不存储真正的秘钥(第一加密数据),而是通过设置一“假秘钥”来辅助目标签名工具正常执行其签名流程。本实施例中是在得到待签名数据后将第二加密数据给到目标签名工具,还可以是其他时机将第二加密数据给到目标签名工具,例如,在目标签名工具启动后,控制程序可将第二加密数据发送至目标签名工具,使其加载该第二加密数据对待签名数据执行签名操作,得到第二认证签名,该第二认证签名为假签名,是需要修正的签名(后续将介绍如何修正)。或者在签名工具启动前,控制程序将第二加密数据存储至目标位置,该目标位置即为目标签名工具加载秘钥的位置,如此在目标签名工具启动后,会自动到目标位置加载秘钥以完成签名操作,生成第二认证签名。还可以是将第二加密数据在目标签名工具启动前或启动后存储至其对应内存中,该内存位置即为保存秘钥的位置,如此也可实现目标签名工具加载第二加密数据执行签名操作,生成第二认证签名。
当目标签名工具生成了第二认证签名,且控制程序获得了第一认证签名后,控制程序会将第一认证签名与目标数据文件进行关联处理,包括:
S9:利用目标加密设备返回的第一认证签名替换第二认证签名,使得目标签名工具将第一认证签名写至目标数据文件中的目标位置,进而使目标数据文件具有第一认证签名。
例如,控制程序在确定目标签名程序的内存中对于第二认证签名的存储位置后,便可基于该存储位置而将第一认证签名对目标签名程序内存中存储的第二认证签名进行覆盖,以此达到修正签名结果的效果。此时由目标签名工具输出的签名结果即为第一认证签名。后续由目标签名工具在目标数据文件的目标位置添加签名时,目标签名工具便会调出第一认证签名添加至目标数据文件中,进而使目标数据文件具有第一认证签名。也即,此时,基于本实施例的签名方法完成了对目标数据文件的签名,且签名过程安全,签名结果准确。
以下结合图3对本实施例中签名方法的具体实现细节进行说明:
实现控制程序得到待签名数据,包括:
S10:在目标签名工具的执行流执行至目标指令处时,在目标签名工具产生的数据中获得待签名数据;
目标指令用于指示目标签名工具利用第二加密数据参与指定算法,以对当前生成的待签名数据计算签名,指定算法为目标签名工具使用第二加密数据对待签名数据计算签名的算法。
不同的签名工具在进行签名计算时,所使用的签名计算方法可以相同,也可以不同,故所述的指定算法不唯一,但是通常情况下,任何一种指定算法在进行签名计算时都会用到秘钥(如第一加密数据/第二加密数据)。例如,本实施例以指定算法为RSA签名算法为例进行说明。在应用时,控制程序可以基于调试模式等具有监测、调控能力的系统模式下运行,如以调试器的方式运行,并基于该方式/模式启动目标签名工具、监测目标签名工具的执行流程/运行过程。在本实施例中,基于RSA签名算法的原理及特性可知,其在得到待签名数据后,会基于待签名数据、第二加密数据进行大数取模运算。以第二加密数据的值为(n,d),待签名数据为m,第二认证签名为s为例,该运算过程满足:s=md/n。故,通过监测确定目标签名工具的执行流执行至包含第二加密数据、待签名数据参与的指定算法时,如通过监测识别出第二加密数据的n值作为被除数,或出现满足上述关系式的方程式时,可确定目标签名工具的执行流直行至了目标指令处,此时意味着待签名数据已经计算完成,因此控制程序便可基于目标签名工具的生成的流程数据中识别出待签名数据,并将其记录,至此得到待签名数据。
当指定算法为其他算法时,也可参考上述流程,通过算法特征、第二加密数据进行识别,进而判断待签名数据是否已生成,若生成则可直接自签名工具的流程数据中获取。
进一步地,为了控制程序能够更为方便、快捷地获得待签名数据,本实施例中的方法还包括:
S11:对目标签名工具的执行程序进行指令扫描,确定目标指令位置;
S12:在执行程序中对应目标指令的位置处设置条件断点,条件断点用于使目标签名工具在执行至目标指令所在位置时暂停操作;
自目标签名工具的流程数据中获得待签名数据,包括:
S13:在目标签名工具的执行流触发条件断点,暂停操作时,在目标签名工具对应的内存空间中识别、记录待签名数据。
其中,在进行执行扫描前,需要先确定指定算法,具体可以通过查询目标签名工具的具体程序信息获知,也可以通过监控其运行流程而识别获知,当然还可以是基于关于签名工具的大数据学习获知等等,具体方式不唯一。在确定了指定算法后,便可利用确定的与该签名工具进行签名计算时的相关CPU指令而对目标签名工具的执行程序进行指令扫描,进而确定出目标指令的位置。接着,在执行程序的目标指令位置处设置条件断点,使执行流直行至条件断点处时停止操作。基于此,当正常执行签名流程时,执行流会在执行至目标指令处时触发条件断点,暂停操作,此时控制程序在获知条件断点被触发时,便可直接自目标签名工具的流程数据中识别出待签名数据,并将其进行记录,操作过程更简单快捷。
为了及时修正第二认证签名,避免目标签名工具将第二认证签名添加至目标数据文件中,或基于第二认证签名执行后续其他签名程序,及时确定第二认证签名的生成是十分必要,在本实施例中实现控制程序确定第二认证签名生成,包括:
S14:至少在签名工具结束暂停操作,并继续执行后续程序时,跟踪目标签名工具的执行流,并对执行流的行为特征进行识别,进而在执行程序中确定签名指令范围;
其中,响应于签名指令范围内的执行被执行完毕,表征目标签名工具生成了第二认证签名。
通常情况下,目标签名工具的签名流程在生成了认证签名后,还可能具有其他相关程序,具体不定,不同的签名工具的签名流程也会存在不同。因此,本实施例中的方法是通过对目标签名工具基于待签名数据及第二加密数据执行完成指定算法为基准来判断签名工具是否生成了第二认证签名。例如通过识别、圈定出目标签名工具的执行程序中自生成了待签名数据为起始点至生成第二认证签名为结束点间的指令范围,当执行流走出该范围后,便可确定生成了第二认证签名。
具体地,在本实施例中,目标签名工具单步执行其签名流程,控制程序至少在签名工具解除暂停操作,继续执行后续程序时,跟踪目标签名工具的执行流,并对其操作行为的特征进行识别,以确定其行为特征是否与签名计算相关,进而确定其当前执行的指令是否为与生成第二认证签名相关的指令,若是,则将该指令划分为签名指令范围内,并继续进行跟踪识别,直至确定执行流当前执行的指令不再与生成第二认证签名相关时,以上一条执行流的执行指令为下边界,同时以目标指令为上边界,确定出签名指令范围。当执行流走出该签名指令范围后,控制程序则可确定第二认证签名已生成。
所述的签名指令范围在确定后,控制程序便可记录,或对目标签名工具的执行程序中对应指令范围处设定标记,以在后续再次使用目标签名工具执行签名操作时能够更为方便快捷地判断出是否已生成第二认证签名。或者,也可以是控制程序基于指定算法的流程进行学习,以直接圈定出签名指令范围。
进一步地,作为一可选实施例,控制程序控制设备将待签名数据发送给目标加密设备进行签名操作时,包括:
S15:响应于在目标签名工具完成签名指令范围内的签名指令,将待签名数据发送给目标加密设备进行签名操作。
也即,控制程序可以在确定生成了第二认证签名时,将待签名数据发送至目标加密设备中,以得到第一认证签名。当然,具体发送时间不定,当控制程序获得了待签名数据后,其也可以直接将待签名数据发送至目标加密设备中进行签名计算,也可以如本实施例中一样,在目标签名工具生成了第二认证签名后,再发送至目标加密设备中。
如图4所示,本申请另一实施例同时提供一种签名装置100,包括:
启动模块1,用于响应于获得针对目标数据文件的签名请求,启动目标签名工具对所述目标数据文件进行哈希处理,得到待签名数据;
第一发送模块2,用于将所述待签名数据发送给目标加密设备进行签名操作,以得到第一认证签名;
处理模块3,用于将所述第一认证签名与所述目标数据文件进行关联处理,以使得所述目标数据文件具有所述第一认证签名;
其中,所述目标加密设备与所述目标签名工具处于同一部署环境或不同部署环境。
在一些实施例中,所述将所述待签名数据发送给目标加密设备进行签名操作,包括:
将所述待签名数据发送给所述目标加密设备的客户端程序,由所述客户端程序基于目标加密协议调用所述目标加密设备的硬件安全模块以第一加密数据对所述待签名数据进行签名操作,以得到所述第一认证签名。
在一些实施例中,所述装置还包括以下至少之一:
第一认证模块4,用于对所述客户端程序进行身份认证,以在所述身份认证通过后执行发送所述待签名数据的步骤;
第二认证模块5,用于通过所述客户端程序对所述待签名数据的来源信息进行身份认证;
调用模块6,用于通过所述客户端程序对调用所述硬件安全模块执行签名的操作请求进行控制。
在一些实施例中,所述装置还包括:
第二发送模块,用于在得到所述待签名数据后,向所述目标签名工具发送第二加密数据,以使得所述目标签名工具利用所述第二加密数据对所述待签名数据进行签名操作,得到第二认证签名,所述第二加密数据与所述目标加密设备中的第一加密数据不同。
在一些实施例中,所述将所述第一认证签名与所述目标数据文件进行关联处理,包括:
利用所述目标加密设备返回的第一认证签名替换所述第二认证签名,使得所述目标签名工具将所述第一认证签名写至所述目标数据文件中的目标位置,进而使所述目标数据文件具有所述第一认证签名。
在一些实施例中,所述得到待签名数据,包括:
在所述目标签名工具的执行流执行至目标指令处时,在所述目标签名工具产生的数据中获得所述待签名数据;
所述目标指令用于指示所述目标签名工具利用所述第二加密数据参与指定算法,以对当前生成的待签名数据计算签名,所述指定算法为所述目标签名工具使用第二加密数据对待签名数据计算签名的算法。
在一些实施例中,所述方法还包括:
对所述目标签名工具的执行程序进行指令扫描,确定所述目标指令位置;
在所述执行程序中对应所述目标指令的位置处设置条件断点,所述条件断点用于使所述目标签名工具在执行至所述目标指令所在位置时暂停操作;
所述自所述目标签名工具的流程数据中获得所述待签名数据,包括:
在所述目标签名工具的执行流触发所述条件断点,暂停操作时,在所述目标签名工具对应的内存空间中识别、记录所述待签名数据。
在一些实施例中,所述方法还包括:
至少在所述签名工具结束暂停操作,并继续执行后续程序时,跟踪所述目标签名工具的执行流,并对所述执行流的行为特征进行识别,进而在所述执行程序中确定签名指令范围;
其中,响应于所述签名指令范围内的签名执行被执行完毕,表征所述目标签名工具生成了所述第二认证签名。
在一些实施例中,所述将所述待签名数据发送给目标加密设备进行签名操作,包括:
响应于所述目标签名工具完成所述签名指令范围内的签名指令,将所述待签名数据发送给目标加密设备进行签名操作;
其中,所述目标加密设备中存储有多个分别匹配不同待签名数据发送方的第一加密数据,以利用对应的第一加密数据对不同发送方发送的待签名数据基于对应的第一加密数据进行签名计算。
本申请另一实施例还提供一种计算机设备,一个或多个处理器;
存储器,配置为存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上文中任一项实施例所述的签名方法。
本申请另一实施例还提供一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制包括所述存储介质的设备执行如上文中任一项实施例所述的签名方法。
本申请实施例还提供了一种计算机程序产品,所述计算机程序产品被有形地存储在计算机可读介质上并且包括计算机可读指令,所述计算机可执行指令在被执行时使至少一个处理器执行诸如上文所述实施例中的签名方法。应理解,本实施例中的各个方案具有上述方法实施例中对应的技术效果,此处不再赘述。
需要说明的是,本申请的计算机存储介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读介质例如可以但不限于是电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储介质(RAM)、只读存储介质(ROM)、可擦式可编程只读存储介质(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储介质(CD-ROM)、光存储介质件、磁存储介质件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输配置为由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、天线、光缆、RF等等,或者上述的任意合适的组合。
应当理解,虽然本申请是按照各个实施例描述的,但并非每个实施例仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
以上实施例仅为本申请的示例性实施例,不用于限制本申请,本申请的保护范围由权利要求书限定。本领域技术人员可以在本申请的实质和保护范围内,对本申请做出各种修改或等同替换,这种修改或等同替换也应视为落在本申请的保护范围内。
Claims (10)
1.一种签名方法,包括:
响应于获得针对目标数据文件的签名请求,启动目标签名工具对所述目标数据文件进行哈希处理,得到待签名数据;
将所述待签名数据发送给目标加密设备进行签名操作,以得到第一认证签名;
将所述第一认证签名与所述目标数据文件进行关联处理,以使得所述目标数据文件具有所述第一认证签名;
其中,所述目标加密设备与所述目标签名工具处于同一部署环境或不同部署环境。
2.根据权利要求1所述的方法,其中,所述将所述待签名数据发送给目标加密设备进行签名操作,包括:
将所述待签名数据发送给所述目标加密设备的客户端程序,由所述客户端程序基于目标加密协议调用所述目标加密设备的硬件安全模块以第一加密数据对所述待签名数据进行签名操作,以得到所述第一认证签名。
3.根据权利要求2所述的方法,其中,所述方法还包括以下至少之一:
对所述客户端程序进行身份认证,以在所述身份认证通过后执行发送所述待签名数据的步骤;
通过所述客户端程序对所述待签名数据的来源信息进行身份认证;
通过所述客户端程序对调用所述硬件安全模块执行签名的操作请求进行控制。
4.根据权利要求1所述的方法,其中,所述方法还包括:
在得到所述待签名数据后,向所述目标签名工具发送第二加密数据,以使得所述目标签名工具利用所述第二加密数据对所述待签名数据进行签名操作,得到第二认证签名,所述第二加密数据与所述目标加密设备中的第一加密数据不同。
5.根据权利要求4所述的方法,其中,所述将所述第一认证签名与所述目标数据文件进行关联处理,包括:
利用所述目标加密设备返回的第一认证签名替换所述第二认证签名,使得所述目标签名工具将所述第一认证签名写至所述目标数据文件中的目标位置,进而使所述目标数据文件具有所述第一认证签名。
6.根据权利要求4所述的方法,其中,所述得到待签名数据,包括:
在所述目标签名工具执行至目标指令处时,在所述目标签名工具产生的数据中获得所述待签名数据;
所述目标指令用于指示所述目标签名工具利用所述第二加密数据参与指定算法,以对当前生成的待签名数据计算签名,所述指定算法为所述目标签名工具使用第二加密数据对待签名数据计算签名的算法。
7.根据权利要求6所述的方法,其中,所述方法还包括:
对所述目标签名工具的执行程序进行指令扫描,确定所述目标指令位置;
在所述执行程序中对应所述目标指令的位置处设置条件断点,所述条件断点用于使所述目标签名工具在执行至所述目标指令所在位置时暂停操作;
所述在所述目标签名工具产生的数据中获得所述待签名数据,包括:
在所述目标签名工具的执行流触发所述条件断点,暂停操作时,在所述目标签名工具对应的内存空间中识别、记录所述待签名数据。
8.根据权利要求7所述的签名方法,其中,所述方法还包括:
至少在所述签名工具结束暂停操作,并继续执行后续程序时,跟踪所述目标签名工具的执行流,并对所述执行流的行为特征进行识别,进而在所述执行程序中确定签名指令范围;
其中,响应于所述签名指令范围内的指令被执行完毕,表征所述目标签名工具生成了所述第二认证签名。
9.根据权利要求8所述的方法,其中,所述将所述待签名数据发送给目标加密设备进行签名操作,包括:
响应于所述目标签名工具完成所述签名指令范围内的签名指令,将所述待签名数据发送给目标加密设备进行签名操作;
其中,所述目标加密设备中存储有多个分别匹配不同待签名数据发送方的第一加密数据,以利用对应的第一加密数据对不同发送方发送的待签名数据进行签名计算。
10.一种签名装置,包括:
启动模块,用于响应于获得针对目标数据文件的签名请求,启动目标签名工具对所述目标数据文件进行哈希处理,得到待签名数据;
第一发送模块,用于将所述待签名数据发送给目标加密设备进行签名操作,以得到第一认证签名;
处理模块,用于将所述第一认证签名与所述目标数据文件进行关联处理,以使得所述目标数据文件具有所述第一认证签名;
其中,所述目标加密设备与所述目标签名工具处于同一部署环境或不同部署环境。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310954777.0A CN116781283A (zh) | 2023-07-31 | 2023-07-31 | 一种签名方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310954777.0A CN116781283A (zh) | 2023-07-31 | 2023-07-31 | 一种签名方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116781283A true CN116781283A (zh) | 2023-09-19 |
Family
ID=88010120
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310954777.0A Pending CN116781283A (zh) | 2023-07-31 | 2023-07-31 | 一种签名方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116781283A (zh) |
-
2023
- 2023-07-31 CN CN202310954777.0A patent/CN116781283A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3458999B1 (en) | Self-contained cryptographic boot policy validation | |
US11258792B2 (en) | Method, device, system for authenticating an accessing terminal by server, server and computer readable storage medium | |
CN110519309B (zh) | 数据传输方法、装置、终端、服务器及存储介质 | |
CN107743067B (zh) | 数字证书的颁发方法、系统、终端以及存储介质 | |
CN109218260B (zh) | 一种基于可信任环境的认证保护系统及方法 | |
CN111431719A (zh) | 一种移动终端密码保护模块、移动终端及密码保护方法 | |
US10721076B2 (en) | Method, device, terminal, and server for a security check | |
CN106612180A (zh) | 实现会话标识同步的方法及装置 | |
EP3080946A2 (en) | Near field communication authentication mechanism | |
CN112887282B (zh) | 一种身份认证方法、装置、系统及电子设备 | |
CN108200078B (zh) | 签名认证工具的下载安装方法及终端设备 | |
CN109145628B (zh) | 一种基于可信执行环境的数据采集方法及系统 | |
WO2021190197A1 (zh) | 生物支付设备的认证方法、装置、计算机设备和存储介质 | |
EP3885954A1 (en) | Security reinforcement architecture, encryption and decryption method, car networking terminal, and vehicle | |
CN109150811B (zh) | 一种实现可信会话的方法及装置、计算设备 | |
CN114444134A (zh) | 一种数据使用授权方法、系统及装置 | |
CN112632573A (zh) | 智能合约执行方法、装置、系统、存储介质及电子设备 | |
US20240113898A1 (en) | Secure Module and Method for App-to-App Mutual Trust Through App-Based Identity | |
CN113297563B (zh) | 访问片上系统特权资源的方法、装置及片上系统 | |
CN115603943A (zh) | 一种离线身份验证的方法、装置、存储介质及电子设备 | |
CN116781283A (zh) | 一种签名方法及装置 | |
CN114650175B (zh) | 一种验证方法及装置 | |
WO2023145240A1 (ja) | 情報処理装置および情報処理システム | |
EP4123534A1 (en) | Transaction security techniques | |
CN115865446A (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 |