CN106789091B - 一种Open XML文档数字签名和验签的实现方法及装置 - Google Patents
一种Open XML文档数字签名和验签的实现方法及装置 Download PDFInfo
- Publication number
- CN106789091B CN106789091B CN201710104334.7A CN201710104334A CN106789091B CN 106789091 B CN106789091 B CN 106789091B CN 201710104334 A CN201710104334 A CN 201710104334A CN 106789091 B CN106789091 B CN 106789091B
- Authority
- CN
- China
- Prior art keywords
- signature
- document
- file
- signed
- xml document
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000012795 verification Methods 0.000 title claims description 65
- 238000004364 calculation method Methods 0.000 claims abstract description 58
- 238000004422 calculation algorithm Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 3
- 239000000470 constituent Substances 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
- 101100217298 Mus musculus Aspm gene Proteins 0.000 description 1
- 108010068904 lysyl-arginyl-alanyl-lysyl-alanyl-lysyl-threonyl-threonyl-lysyl-lysyl-arginine Proteins 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
Images
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6209—Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bioethics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
- Document Processing Apparatus (AREA)
Abstract
本申请公开了一种Open XML文档数字签名的实现方法,该方法包括建立签名文件,所述签名文件为XML文档;生成被签名Open XML文档的文档清单和签名的关键信息,并添加到所述签名文件中;其中,所述文档清单包括:组成所述被签名Open XML文档的各个文件的引用路径,及所述各个文件的引用路径对应的摘要值计算方法和摘要值;所述签名的关键信息包括签名的摘要值计算方法和公钥证书;根据所述签名的摘要值计算方法和签名证书的私钥对所述文档清单和签名的关键信息进行数字签名得到签名值;将所述签名值添加到所述签名文件中,上述方案中文档清单包括了被签名文件文档的所有内容,对文档清单进行签名实现了对被签名文档所有内容的保护。
Description
技术领域
本申请涉及网络信息数据安全技术领域,更具体地说,涉及一种Open XML文档数字签名和验签的实现方法及装置。
背景技术
随着Open XML格式成为网络上进行电子文档发行和数字化信息传播的主流格式之一,Open XML文档的数字签名也成为保证文档真实性和完整性的重要技术手段。
现有的Open XML文档的数字签名方法中,将Open XML文档分为若干类集合,如文本内容集合、表格内容集合,图片位置集合等,然后读取相关集合内容并对其进行数字签名。
上述方法由于框架的限制,无法对字体字号、排版信息、和图片等外部数据进行有效保护。所以,现有Open XML文档的数字签名方法无法实现对Open XML文档的所有内容进行数字签名,造成无法对文档整体进行保护。
发明内容
有鉴于此,本申请提供一种Open XML文档数字签名和验签的实现方法及装置,以解决现有技术无法对文档整体进行保护。
为了实现上述目的,现提出的方案如下:
本申请提供一种Open XML文档数字签名的实现方法,该方法包括:
建立签名文件,所述签名文件为XML文档;
生成被签名Open XML文档的文档清单和签名的关键信息,并添加到所述签名文件中;其中,所述文档清单包括:组成所述被签名Open XML文档的各个文件的引用路径,及所述各个文件对应的摘要值计算方法和摘要值;所述签名的关键信息包括签名的摘要值计算方法和公钥证书;
根据所述签名的摘要值计算方法和签名证书的私钥对所述文档清单和签名的关键信息进行数字签名得到签名值;
将所述签名值添加到所述签名文件中。
本申请提供一种Open XML文档数字签名的实现装置,所述装置包括:
建立单元,用于建立签名文件,所述签名文件为XML文档;
生成添加单元,用于生成被签名Open XML文档的文档清单和签名的关键信息,并添加到所述签名文件中;其中,所述文档清单包括:组成所述被签名Open XML文档的各个文件的引用路径,及所述各个文件对应的摘要值计算方法和摘要值,所述签名的关键信息包括签名的摘要值计算方法和公钥证书;
签名值计算单元,用于根据所述签名的摘要值计算方法和签名证书的私钥对所述文档清单和签名的关键信息进行数字签名得到签名值;
签名值添加单元,用于将所述签名值添加到所述签名文件中。
本申请还提供一种验签的实现方法,包括:
获取被签名Open XML文档的签名文件;
读取所述签名文件中的文档清单,所述文档清单包括:组成所述被签名Open XML文档的各个文件的引用路径,及所述各个文件对应的摘要值计算方法和摘要值;
根据所述各个文件的引用路径以及对应的摘要值计算方法,依次对所述摘要值进行验证;
若验证失败,则停止验证并提示验证失败;
若验证通过,则读取签名值和所述签名的关键信息包括的签名的摘要值计算方法和公钥证书;
根据所述签名的摘要值计算方法和公钥证书对所述签名值进行验证,若验证失败,则提示验证失败。
本申请还提供一种验签的实现装置,所述装置包括:
第一获取单元,用于获取被签名Open XML文档的签名文件;
第一读取单元,用于读取所述签名文件的文档清单,所述文档清单包括:组成所述被签名Open XML文档的各个文件的引用路径,及所述各个文件的引用路径对应的摘要值计算方法和摘要值;
第一验证单元,用于根据所述各个文件的引用路径以及对应的摘要值计算方法,依次对所述摘要值进行验证,当验证失败时执行停止单元;
第二读取单元,用于读取签名值和所述签名的关键信息包括的签名的摘要计算方法和公钥证书;
第二验证单元,用于根据所述签名的摘要计算方法和公钥证书对所述签名值进行验证;
停止单元,用于当验证失败时停止验证,并提示验证失败。
从上述的技术方案可以看出,从上述的技术方案可以看出,本申请的技术方案首先建立签名文件,所述签名文件为XML文档;然后生成被签名Open XML文档的文档清单和签名的关键信息,添加到所述签名文件中;其中所述文档清单包括:组成所述被签名Open XML文档的各个文件的引用路径,及所述各个文件的引用路径对应的摘要值计算方法和摘要值;所述签名的关键信息至少包括签名的摘要计算方法;根据所述签名的摘要计算方法和签名证书的私钥对所述文档清单和签名的关键信息进行数字签名得到签名值,将所述签名值添加到所述签名文件中。可见上述技术方案中,建立XML的签名文件,进而生成签名文件的内容,其中生成的签名文件的文档清单中包括了组成被签名Open XML文档的各个文件的引用路径,引用路径指向了组成被签名Open XML文档的文件,这些组成文件组成了被签名文档的整体,进而对各个组成文件计算摘要值,实现对文档的各个文件及其关系进行保护,进而在此基础上再计算签名值,如此实现了对被签名Open XML文档的所有内容进行数字签名,实现了对Open XML文档的整体进行保护。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例公开的一种Open XML文档数字签名的实现方法基本流程图;
图2为本申请另一实施例公开的生成文档清单的基本流程图;
图3为本申请实施例公开的一种验签的实现方法基本流程图;
图4为本申请另实施例公开的一种验签的实现方法基本流程图;
图5为本申请另实施例公开的一种Open XML文档数字签名的实现装置基本框图;
图6为本申请另实施例公开的一种验签的实现装置基本框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供一种Open XML文档数字签名的实现方法,如图1所示,该方法包括:
步骤S100、建立签名文件,所述签名文件为XML文档;
其中,本申请实施例是基于XML的签名,因此首先建立一个XML文档形式的签名文件,此时签名文件内容为空。
步骤S110、生成被签名Open XML文档的文档清单和签名的关键信息,并添加到所述签名文件中;其中,所述文档清单包括:组成所述被签名Open XML文档的各个文件的引用路径,及所述各个文件对应的摘要值计算方法和摘要值;所述签名的关键信息包括签名的摘要值计算方法和公钥证书;
其中,文档清单包括的各个文件对应的摘要值计算方法和签名的摘要值计算方法可以采用:MD5算法、SHA1算法、SHA256算法、SHA512算法和SM3算法中的任一种计算算法。
具体的,先生成Signature元素,该元素是整个XML签名文件的根元素;
在该元素下生成SignedInfo子元素和SignatureValue子元素;
在SignedInfo子元素下依次生成Manifest子元素和Properties子元素;其中,Manifest子元素是被签名Open XML文档的文档清单的根元素,在该Manifest子元素下生成被签名Open XML文档的文档清单,即为每个组成被签名文档的文件生成Reference子元素;
其中,Properties子元素是签名的关键信息的根元素,在该Properties元素下生成各种签名的关键信息的元素;
具体的,生成Properties子元素的HashDigestAlg子元素,并将签名的摘要值计算方法添加到所述HashDigestAlg子元素的内容中;
生成Properties子元素的X509Certificate子元素,获取公钥证书,添加到X509Certificate子元素的内容中。
优选地,签名的关键信息还包括签名的唯一标识、签名时间、签名注释信息、签名图章和签名证书的主题中的任意一个或几个的组合;具体的,生成签名的唯一标识的过程为:
生成Properties子元素的SealAxUUID子元素,并生成签名的唯一标识GUID,将该GUID添加到所述SealAxUUID子元素的内容中,具体的,GUID的存储格式为{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX},对应的,所述签名文件的名称为该GUID,即名称为XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.xml;
生成签名时间、签名注释信息、签署人、签名图章和签名证书的主题的过程为:
生成Properties子元素的SigningTime子元素,并将获取的当前时刻作为签名时间,添加到该SigningTime子元素的内容中;
生成Properties子元素的SigningComment子元素,并获取签署人对签名的附加描述,添加到该SigningComment子元素的内容中;
生成Properties子元素的SignerName子元素,并获取签署人的名称,添加到该SignerName子元素的内容中;
生成Properties子元素的ValidSealImg子元素,并获取签名图章数据,将该数据以base-64编码形式添加到该ValidSealImg子元素中;
其中,该签名数据支持的签章外观包括图章与证书信息,具体的,使用的签名展示形式由外部应用或使用者决定,其中图章形式可由使用者根据自身需要自行设定,由外部存储诸如USB Key的签章图片文件读取;证书信息形式可由使用者根据签名证书的主要信息(如证书主题等)生成一张对应的图片;两种形式最终生成的图片信息都将base-64编码的形式存储于此节点内。
生成Properties子元素的X509CertSubject子元素,获取签名证书的主题,添加到X509CertSubject子元素的内容中。
以下是经过上述步骤生成的签名文件的部分内容:
S120、根据所述签名的摘要值计算方法和签名证书的私钥对所述文档清单和签名的关键信息进行数字签名得到签名值;
具体的,利用签名的摘要值计算方法对当前的签名文件中SignedInfo节点的XML文本计算摘要值,该文本即包括了文档清单和签名的关键信息计算摘要值,然后使用签名方的签名证书的私钥对上述的摘要值进行加密得到签名值,其中,该签名过程支持RSA算法和SM2算法。
S130、将所述签名值添加到所述签名文件中。
其中,计算的签名值可以是基于PKCS#1(基于非对称加密算法的数字签名及数字信封的组织描述)格式,并以base-64编码的形式将该将签名值添加到SignatureValue子元素中,完成签名文件。
上述实施例中,建立XML的签名文件,进而生成签名文件的内容,其中生成的签名文件的文档清单中包括了组成被签名Open XML文档的各个文件的引用路径,引用路径指向了组成被签名Open XML文档的文件,这些组成文件组成了被签名文档的整体,进而对各个组成文件计算摘要值,实现对文档的各个文件及其关系进行保护,进而在此基础上再计算签名值,如此实现了对被签名Open XML文档的所有内容进行数字签名,实现了对Open XML文档的整体进行保护。
优选地,在步骤S130后,将所述签名文件保存在所述被签名Open XML文档根目录下的预设目录中,具体的,将XML签名文件保存于Open XML文档结构根目录下的customSigs目录中,与Open XML作为一个整体存储。其中,对于同一个被签名文件可以执行多次签名,将这些文件都存储在该customSigs目录下,即该customSigs目录下只存储签名文件,以便在进行验证时,从该预设目录中查找获取所有签名文件。
或者可以在建立签名文件时,在所述被签名Open XML文档根目录下的预设目录中建立签名文件,进而将生成的相关信息添加到建立的签名文件中。
本申请另一实施例中,生成被签名Open XML文档的文档清单和签名的关键信息,并添加到所述签名文件中,包括:
S200、读取所述被签名Open XML文档的文档结构,确定组成所述被签名Open XML文档的各个文件;
具体的,可以采用解压XML文档的方式读取文档的文档结构,进而根据文档组成结构确定组成被签名文档的各个文件;
S210、生成每个组成所述被签名Open XML文档的文件对应的Reference元素,所述Reference元素包括URI属性;
S220、针对一个组成所述被签名Open XML文档的文件,将该组成所述签名OpenXML文档的文件相对于被签名Open XML文档根目录的路径添加到所述URI属性的内容中;
其中,Manifest子元素中有多个Reference子元素,进而对Reference子元素进行排序,具体的,可根据URI属性内容的字符串,依照字典排序法降幂排列。
进一步的还包括:
生成Reference子元素的DigestMethod子元素,该DigestMethod子元素包括Algorithm属性,将摘要值计算方法添加到Algorithm属性的内容中;所述Algorithm属性表示计算该组成所述签名Open XML文档的文件摘要值采用的摘要值计算算法;
生成Reference子元素的DigestValue子元素;
根据所述摘要值计算方法对所述组成所述签名Open XML文档的文件计算摘要值,并将计算的摘要值添加的所述DigestValue子元素的内容中。
以下是经过上述步骤生成的签名文件的内容:
通过上述实施例,读取被签名Open XML文档的文档结构,获取到组成该被签名Open XML文档的所有文件,进而根据组成该被签名Open XML文档的文件个数,生成相应个数的Reference元素,并将各个文件相对于被签名Open XML文档根目录的路径添加到所述Reference元素的URI属性的内容中,并计算各个文件的摘要值,实现了对文档中各个文件及其关系进行保护。
本申请实施例还提供一种验签的实现方法,如图3所示,该方法包括:
S300、获取被签名Open XML文档的签名文件;
具体的,在接收到被签名Open XML文档后,查找被签名Open XML文档根目录下的预设目录如查找customSigs目录,从该预设目录下获取所有的签名文件,当有多个签名文件时,依次对签名文件进行验证。
S310、读取所述签名文件中的文档清单,所述文档清单包括:组成所述被签名OpenXML文档的各个文件的引用路径,及所述各个文件对应的摘要值计算方法和摘要值;
S320、根据所述各个文件的引用路径以及对应的摘要值计算方法,依次对所述摘要值进行验证;若验证失败则执行步骤S330,若验证通过,则执行步骤S340;
具体的,根据各个文件的引用路径找到路径指向的各个文件,并根据对应的摘要值计算方法,计算各个文件的摘要值,进而将计算得到的摘要值与读取到的对应摘要值进行对比,若一致则说明该文件没有被篡改,若不一致则说明文件被篡改。
其中,只要确定一个文件计算得到的摘要值与读取到的摘要值不同,则验证失败,停止验证,只有所有文件的摘要值验证都正确才继续进行验证。
S330、停止验证,提示验证失败;
S340、读取签名值和所述签名的关键信息包括的签名的摘要值计算方法和公钥证书;
S350、根据所述签名的摘要值计算方法和公钥证书对所述签名值进行验证,若验证失败,则执行步骤S330;
具体的,根据签名的摘要值计算方法对获取的签名文件中SignedInfo节点的XML文本进行摘要值计算得到摘要值;根据所述公钥证书对所述签名值进行解密得到解密后的摘要值,将计算得到的摘要值和解密得到的摘要值进行对比,两者若一致,则说明被签名文档没有被篡改,若不一致,则说明签名文件被篡改。
通过上述实施例,验证方通过验证各个组成所述被签名文档的文件的内容和整个签名文件实现了对被签名文档的验证,只要所述被签名文档的内容发生改变,就能够被验证出来。
在本申请另一实施例中,当所述签名的关键信息包括签名的唯一标识,以及签名时间、签名注释信息、签署人、签名图章和签名证书的主题中的任意一个或几个的组合时,如图4所示步骤进行验证:
S400、获取被签名Open XML文档的签名文件;
S410、读取所述签名关键信息中包括的签名时间、签名注释信息、签名图章和签名证书的主题中的任意一个或几个的组合,并将其显示在所述被签名Open XML文档中;
具体的,该读取并显示签名的关键信息中的签名时间、签名注释信息、签名图章和签名证书的主题的操作并不限定在步骤S400和S420之间,还可以发生在其他步骤前后。
S420、获取所述签名文件的名称;
S430、读取所述签名的关键信息中的签名的唯一标识;
S440、判断所述名称和所述签名的唯一标识是否一致,若不一致,则执行步骤S450,若一致则执行步骤S460;
S450、停止验证,提示验证失败;
S460、读取所述签名文件中的文档清单,所述文档清单包括:组成所述被签名OpenXML文档的各个文件的引用路径,及所述各个文件对应的摘要值计算方法和摘要值;
S470、根据所述各个文件的引用路径以及对应的摘要值计算方法,依次对所述摘要值进行验证;若验证失败则执行步骤S450,若验证通过,则执行步骤S480;
S480、读取签名值和所述签名的关键信息包括的签名的摘要值计算方法和公钥证书;
S490、根据所述签名的摘要值计算方法和公钥证书对所述签名值进行验证,若验证失败,则执行步骤S450。
上述步骤S400与步骤S300的实施方式相同,步骤S460-S490与步骤S310-S350的实施方式相同,再次不再赘述。
该实施例中,当签名信息中包括有签名的唯一标识时,添加一验证步骤,即验证签名文件的名称是否与所述签名的唯一标识相同,若相同,则说明被签名文档被篡改,则停止继续验证,并提示验证失败。以及当所述签名的关键信息还包括签名时间、签名注释信息、签名图章和签名证书的主题中的任意一个或几个的组合时,读取出这些信息并将这些显示在所述被签名Open XML文档中。如此,验证方的用户可以通过显示在被签名Open XML文档中的签名的关键信息,了解签名方的相关信息,且还可识别被签名文档的信息是否与约定的信息不符来确定相关信息是否被篡改,如签名图章中的人名并不是签署人的姓名,由此表明该被签名文档可能被篡改。
本申请实施例还提供一种Open XML文档数字签名的实现装置,如图5所示,该装置包括:
建立单元500,用于建立签名文件,所述签名文件为XML文档;
生成添加单元510,用于生成被签名Open XML文档的文档清单和签名的关键信息,并添加到所述签名文件中;其中,所述文档清单包括:组成所述被签名Open XML文档的各个文件的引用路径,及所述各个文件对应的摘要值计算方法和摘要值,所述签名的关键信息包括签名的摘要值计算方法和公钥证书;
优选地,所述生成添加单元510包括:
读取单元,用于读取所述被签名Open XML文档的文档结构,确定组成所述被签名Open XML文档的各个文件;
生成单元,用于生成每个组成所述被签名Open XML文档的文件对应的Reference元素,所述Reference元素包括URI属性;
添加单元,用于针对一个组成所述被签名Open XML文档的文件,将该组成所述签名Open XML文档的文件相对于被签名Open XML文档根目录的路径添加到所述URI属性的内容中。
签名值计算单元520,用于根据所述签名的摘要值计算方法和签名证书的私钥对所述文档清单和签名的关键信息进行数字签名得到签名值;
签名值添加单元530,用于将所述签名值添加到所述签名文件中。
优选地,所述装置还包括保存单元,用于将所述签名文件保存在所述被签名OpenXML文档根目录下的预设目录中。
本申请实施例还提供一种验签的实现装置,如图6所示,该装置包括:
第一获取单元600,用于获取被签名Open XML文档的签名文件;
第一读取单元610,用于读取所述签名文件的文档清单,所述文档清单包括:组成所述被签名Open XML文档的各个文件的引用路径,及所述各个文件对应的摘要值计算方法和摘要值;
第一验证单元620,用于根据所述各个文件的引用路径以及对应的摘要值计算方法,依次对所述摘要值进行验证,当验证失败时执行停止单元650;
第二读取单元630,用于读取所述签名的关键信息和签名值,所述签名的关键信息包括签名的摘要值计算方法和公钥证书;
第二验证单元640,用于根据所述签名的摘要值计算方法和公钥证书对所述签名值进行验证;
停止单元650,用于当验证失败时停止验证,并提示验证失败。
优选地,当所述签名的关键信息包括签名的唯一标识时,所述装置还包括:第二获取单元,用于获取所述签名文件的名称;
第三读取单元,用于读取所述签名的相关信息中的签名的唯一标识;
判断单元,用于判断所述名称和所述签名的唯一标识是否一致,若不一致则执行停止单元。
当所述签名的相关信息包括签名时间、签名注释信息、签名图章和签名证书的主题中的任意一个或几个的组合时,所述装置还包括:
读取显示单元,用于读取所述签名的关键信息包括的所述签名时间、签名注释信息、签名图章和签名证书的主题的任意一个或几个的组合,并将其显示在所述被签名OpenXML文档中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (8)
1.一种Open XML文档数字签名的实现方法,其特征在于,包括:
建立签名文件,所述签名文件为XML文档;
生成被签名Open XML文档的文档清单和签名的关键信息,并添加到所述签名文件中;其中,所述文档清单包括:组成所述被签名Open XML文档的各个文件的引用路径,及所述各个文件对应的摘要值计算方法和摘要值;所述签名的关键信息包括签名的摘要值计算方法和公钥证书,所述公钥证书用于对签名值进行验证;
根据所述签名的摘要值计算方法和签名证书的私钥对所述文档清单和签名的关键信息进行数字签名得到签名值;
将所述签名值添加到所述签名文件中;其中,针对所述被签名Open XML文档能够执行多次签名,获得多个签名文件,多个签名文件均存储在所述被签名Open XML文档根目录下的预设目录中,以在验签时从所述预设目录下获取多个签名文件,依次对各签名文件进行验证;
所述生成被签名Open XML文档的文档清单,所述文档清单包括组成所述被签名OpenXML文档的各个文件的引用路径,包括:
读取所述被签名Open XML文档的文档结构,确定组成所述被签名Open XML文档的各个文件,包括解压被签名Open XML文档,读取文档的文档结构,根据文档组成结构确定组成被签名文档的各个文件;
生成每个组成所述被签名Open XML文档的文件对应的Reference元素,所述Reference元素包括URI属性;
针对一个组成所述被签名Open XML文档的文件,将该组成所述签名Open XML文档的文件相对于被签名Open XML文档根目录的路径添加到所述URI属性的内容中。
2.如权利要求1所述的方法,其特征在于,所述签名的关键信息还包括:签名的唯一标识、签名时间、签名注释信息、签署人、签名图章和签名证书的主题中的任意一个或几个的组合,其中当签名的关键信息包括签名的唯一标识时,所述签名文件的名称为所述签名的唯一标识。
3.如权利要求1所述的方法,其特征在于,还包括:将所述签名文件保存在所述被签名Open XML文档根目录下的预设目录中。
4.一种Open XML文档数字签名的实现装置,其特征在于,所述装置包括:
建立单元,用于建立签名文件,所述签名文件为XML文档;
生成添加单元,用于生成被签名Open XML文档的文档清单和签名的关键信息,并添加到所述签名文件中;其中,所述文档清单包括:组成所述被签名Open XML文档的各个文件的引用路径,及所述各个文件对应的摘要值计算方法和摘要值,所述签名的关键信息包括签名的摘要值计算方法和公钥证书,所述公钥证书用于对签名值进行验证;
签名值计算单元,用于根据所述签名的摘要值计算方法和签名证书的私钥对所述文档清单和签名的关键信息进行数字签名得到签名值;
签名值添加单元,用于将所述签名值添加到所述签名文件中;其中,针对所述被签名Open XML文档能够执行多次签名获得多个签名文件,多个签名文件均存储在所述被签名Open XML文档根目录下的预设目录中,以在验签时从所述预设目录下获取多个签名文件,依次对各签名文件进行验证;
所述生成添加单元包括:
读取单元,用于读取所述被签名Open XML文档的文档结构,确定组成所述被签名OpenXML文档的各个文件,包括解压被签名Open XML文档,读取文档的文档结构,根据文档组成结构确定组成被签名文档的各个文件;
生成单元,用于生成每个组成所述被签名Open XML文档的文件对应的Reference元素,所述Reference元素包括URI属性;
添加单元,用于针对一个组成所述被签名Open XML文档的文件,将该组成所述签名Open XML文档的文件相对于被签名Open XML文档根目录的路径添加到所述URI属性的内容中。
5.一种验签的实现方法,其特征在于,包括:
查找被签名Open XML文档根目录下的预设目录,获取被签名Open XML文档的签名文件,其中,当获取多个签名文件时,依次对各签名文件进行验证;
读取所述签名文件中的文档清单,所述文档清单包括:组成所述被签名Open XML文档的各个文件的引用路径,及所述各个文件对应的摘要值计算方法和摘要值;其中,被签名Open XML文档的文档清单是通过:读取所述被签名Open XML文档的文档结构,确定组成所述被签名Open XML文档的各个文件,包括解压被签名Open XML文档,读取文档的文档结构,根据文档组成结构确定组成被签名文档的各个文件;生成每个组成所述被签名Open XML文档的文件对应的Reference元素,所述Reference元素包括URI属性;针对一个组成所述被签名Open XML文档的文件,将该组成所述签名Open XML文档的文件相对于被签名Open XML文档根目录的路径添加到所述URI属性的内容中生成的;
根据所述各个文件的引用路径以及对应的摘要值计算方法,依次对所述摘要值进行验证;
若验证失败,则停止验证并提示验证失败;
若验证通过,则读取签名值和所述签名的关键信息包括的签名的摘要值计算方法和公钥证书;
根据所述签名的摘要值计算方法和公钥证书对所述签名值进行验证,若验证失败,则停止验证并提示验证失败。
6.如权利要求5所述的方法,其特征在于,当所述签名的关键信息包括签名的唯一标识时;
在获取被签名Open XML文档的签名文件后,读取所述签名文件中的文档清单前,还包括:
获取所述签名文件的名称;
读取所述签名的关键信息中的签名的唯一标识;
判断所述名称和所述签名的唯一标识是否一致,若不一致,则停止验证并提示验证失败;
当所述签名的关键信息包括签名时间、签名注释信息、签名人、签名图章和签名证书的主题中的任意一个或几个的组合时,所述方法还包括:
读取所述签名的关键信息包括的签名时间、签名注释信息、签名人、签名图章和签名证书的主题中的任意一个或几个的组合,并将其显示在所述被签名Open XML文档中。
7.一种验签的实现装置,其特征在于,所述装置包括:
第一获取单元,用于查找被签名Open XML文档根目录下的预设目录,获取被签名OpenXML文档的签名文件,其中,当获取多个签名文件时,依次对各签名文件进行验证;
第一读取单元,用于读取所述签名文件的文档清单,所述文档清单包括:组成所述被签名Open XML文档的各个文件的引用路径,及所述各个文件的引用路径对应的摘要值计算方法和摘要值;其中,被签名Open XML文档的文档清单是通过:读取所述被签名Open XML文档的文档结构,确定组成所述被签名Open XML文档的各个文件,包括解压被签名Open XML文档,读取文档的文档结构,根据文档组成结构确定组成被签名文档的各个文件;生成每个组成所述被签名Open XML文档的文件对应的Reference元素,所述Reference元素包括URI属性;针对一个组成所述被签名Open XML文档的文件,将该组成所述签名Open XML文档的文件相对于被签名Open XML文档根目录的路径添加到所述URI属性的内容中生成的;
第一验证单元,用于根据所述各个文件的引用路径以及对应的摘要值计算方法,依次对所述摘要值进行验证,当验证失败时执行停止单元;
第二读取单元,用于读取签名值和所述签名的关键信息包括的签名的摘要计算方法和公钥证书;
第二验证单元,用于根据所述签名的摘要计算方法和公钥证书对所述签名值进行验证;
停止单元,用于当验证失败时停止验证,并提示验证失败。
8.如权利要求7所述的装置,其特征在于,当所述签名的关键信息包括签名的唯一标识时,所述装置还包括:
第二获取单元,用于获取所述签名文件的名称;
第三读取单元,用于读取所述签名的关键信息中的签名的唯一标识;
判断单元,用于判断所述名称和所述签名的唯一标识是否一致,若不一致则停止验证,并执行所述提示单元;
当所述签名的关键信息包括签名时间、签名注释信息、签名图章和签名证书的主题中的任意一个或几个的组合时,所述装置还包括:
读取显示单元,用于读取所述签名的关键信息包括签名时间、签名注释信息、签名图章和签名证书的主题中的任意一个或几个的组合,并将其显示在所述被签名Open XML文档中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710104334.7A CN106789091B (zh) | 2017-02-24 | 2017-02-24 | 一种Open XML文档数字签名和验签的实现方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710104334.7A CN106789091B (zh) | 2017-02-24 | 2017-02-24 | 一种Open XML文档数字签名和验签的实现方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106789091A CN106789091A (zh) | 2017-05-31 |
CN106789091B true CN106789091B (zh) | 2020-02-21 |
Family
ID=58959263
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710104334.7A Active CN106789091B (zh) | 2017-02-24 | 2017-02-24 | 一种Open XML文档数字签名和验签的实现方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106789091B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107330339B (zh) * | 2017-06-14 | 2018-08-14 | 北京市档案局 | 一种电子档案身份证的生成方法及装置 |
CN107911222B (zh) * | 2017-11-21 | 2020-08-28 | 沃通电子认证服务有限公司 | 数字签名生成、验证方法及其设备和存储介质 |
CN108846088A (zh) * | 2018-06-12 | 2018-11-20 | 四川物联亿达科技有限公司 | 一种基于数字档案系统的数字档案封装方法 |
CN111552927A (zh) * | 2020-04-24 | 2020-08-18 | 上海亘岩网络科技有限公司 | 一种ofd文档数字签名方法及系统 |
CN111611440B (zh) * | 2020-05-01 | 2023-05-05 | 同智伟业软件股份有限公司 | 一种快速提升ofd签名、签章及验证的方法 |
CN114021203A (zh) * | 2021-10-28 | 2022-02-08 | 卓望数码技术(深圳)有限公司 | 电子签章方法、电子设备及存储介质 |
CN117235716B (zh) * | 2023-11-14 | 2024-02-13 | 之江实验室 | 一种ooxml文档模板注入攻击的未知威胁防御方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101951605A (zh) * | 2010-09-14 | 2011-01-19 | 浙江大学 | 移动Widget的数字签名方法 |
CN102447559A (zh) * | 2010-10-06 | 2012-05-09 | 国际商业机器公司 | 针对复合资源文档创建数字签名的方法和系统 |
CN104158662A (zh) * | 2014-07-29 | 2014-11-19 | 广东省电子商务认证有限公司 | 基于XAdES的多人电子凭证及实现方法 |
-
2017
- 2017-02-24 CN CN201710104334.7A patent/CN106789091B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101951605A (zh) * | 2010-09-14 | 2011-01-19 | 浙江大学 | 移动Widget的数字签名方法 |
CN102447559A (zh) * | 2010-10-06 | 2012-05-09 | 国际商业机器公司 | 针对复合资源文档创建数字签名的方法和系统 |
CN104158662A (zh) * | 2014-07-29 | 2014-11-19 | 广东省电子商务认证有限公司 | 基于XAdES的多人电子凭证及实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106789091A (zh) | 2017-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106789091B (zh) | 一种Open XML文档数字签名和验签的实现方法及装置 | |
JP4993674B2 (ja) | 情報処理装置、検証処理装置及びそれらの制御方法、コンピュータプログラム及び記憶媒体 | |
US7639818B2 (en) | Structured document signature device, structured document adaptation device and structured document verification device | |
US8010796B2 (en) | System and method for digitally signing an electronic document | |
US11979505B2 (en) | File acquisition method and device based on two-dimensional code and two-dimensional code generating method | |
US8707047B2 (en) | Verifying signatures for multiple encodings | |
CN111368335A (zh) | Pdf文件的电子签章方法及电子签章验证方法和系统 | |
KR20060038462A (ko) | 방송 매체를 위한 콘텐트 식별 | |
WO2008145058A1 (fr) | Dispositif et procédé de mise en œuvre d'un sceau électronique | |
US20080301815A1 (en) | Detecting Unauthorized Changes to Printed Documents | |
CN110826091B (zh) | 一种文件签名方法、装置、电子设备及可读存储介质 | |
US20090190189A1 (en) | Information processing apparatus, control method therefor, information processing system, and program | |
CN110830257B (zh) | 一种文件签名方法、装置、电子设备及可读存储介质 | |
US20230188732A1 (en) | Methods of adding and validating a digital signature in a video data segment | |
CN111274615A (zh) | 一种基于ofd格式文件的长效数字签名方法 | |
CN102340399A (zh) | 信息处理装置和信息处理方法 | |
CN111445250B (zh) | 一种区块链密钥测试方法及装置 | |
CA2986828A1 (en) | Data recording method, device and system, and computer storage medium | |
CA2986837C (en) | Data authentication method, device and system, and computer storage medium | |
CN110826034B (zh) | 一种文件签名方法、装置、电子设备及可读存储介质 | |
CN117521139A (zh) | 数据库数据防篡改校验方法及装置、介质、设备 | |
US9454605B1 (en) | Transferring data between devices using bar codes | |
CN107291763B (zh) | 电子文档的管理方法及管理装置 | |
CN115934648A (zh) | 一种多媒体文件数字签名和验证方法、设备、存储介质 | |
CN106789088A (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 |