基于XAdES的多人電子憑證及實(shí)現(xiàn)方法
【專(zhuān)利摘要】本發(fā)明涉及數(shù)字證書(shū)的【技術(shù)領(lǐng)域】,公開(kāi)了一種基于XAdFs的多人電子憑證及實(shí)現(xiàn)方法,電子憑證包括電子憑證創(chuàng)建模塊和電子憑證驗(yàn)證模塊。其中電子憑證創(chuàng)建模塊又包括配置模塊、文件添加模塊、數(shù)字證書(shū)添加模塊、判斷模塊、憑證備注信息添加模塊、設(shè)置模塊及創(chuàng)建模塊,用來(lái)根據(jù)不同需求,配置選擇簽名的級(jí)別和使用的簽名算法,使用添加的簽名證書(shū)對(duì)要簽名的文件進(jìn)行簽名,并產(chǎn)生憑證文件的過(guò)程。而電子憑證驗(yàn)證模塊又包括憑證文件添加模塊、憑證內(nèi)容文件存放模塊及驗(yàn)證模塊,用來(lái)驗(yàn)證憑證文件的完整性、確認(rèn)簽署者的身份及信息。本發(fā)明可以提供更安全和更人性化的信息安全服務(wù),可以針對(duì)不同的需求來(lái)使用不同的簽名級(jí)別,并且支持SM2橢圓曲線公鑰算法。
【專(zhuān)利說(shuō)明】基于XAdES的多人電子憑證及實(shí)現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及數(shù)字證書(shū)的【技術(shù)領(lǐng)域】,特別涉及一種基于XAdES的多人電子憑證及實(shí) 現(xiàn)方法。
【背景技術(shù)】
[0002] 在互聯(lián)網(wǎng)、云計(jì)算、云存儲(chǔ)越來(lái)越多的應(yīng)用環(huán)境下,信息安全越發(fā)重要,尤其是日 常我們使用很多的電子文件。對(duì)電子文件的安全管理和傳輸,是每個(gè)企業(yè)、每個(gè)人都必須面 對(duì)的問(wèn)題。隨著辦公自動(dòng)化在行政機(jī)關(guān)和企事業(yè)單位的廣泛應(yīng)用,電子文件的審批和歸檔 也至關(guān)重要。使用基于公鑰加密技術(shù)的數(shù)字簽名技術(shù),可以確認(rèn)電子文件作者的身份,并保 證在傳輸過(guò)程中的完整性,為其作為身份認(rèn)證的憑據(jù)提供了技術(shù)支持。同時(shí),相關(guān)的法規(guī)政 策對(duì)于數(shù)字簽名的法律效力的認(rèn)定,為其提供了法律依據(jù)。
[0003] 與本發(fā)明最相近的實(shí)現(xiàn)方案就是網(wǎng)上辦公的簽名系統(tǒng)或者電子公文電子憑證 系統(tǒng),這些是基于 WEB 的系統(tǒng),米取 XML_DSig(Extensible Markup Language Digital signature)的電子簽名標(biāo)準(zhǔn),支持多種簽名算法,如SHA1、SHA256、SHA512等算法。
[0004] 目前的數(shù)字簽名技術(shù),一旦數(shù)字證書(shū)過(guò)期,其他人將不會(huì)相信用戶的簽名證書(shū),對(duì) 文件的簽名也會(huì)隨之失效。隨著密碼技術(shù)和計(jì)算技術(shù)的發(fā)展,目前常用的1024位RSA算法 面臨嚴(yán)重的安全威脅,我們國(guó)家密碼管理部門(mén)經(jīng)過(guò)研究,決定采用SM2橢圓曲線算法替換 RSA算法。SM2算法在安全性、性能上都具有優(yōu)勢(shì),上述現(xiàn)有技術(shù)目前不支持SM2橢圓曲線 公鑰算法。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明的目的在于克服現(xiàn)有技術(shù)的缺點(diǎn)與不足,提供一種基于XAdES(XML高級(jí)數(shù) 字簽名)的多人電子憑證。
[0006] 本發(fā)明的另一目的在于,提供一種基于XAdES的多人電子憑證的實(shí)現(xiàn)方法。
[0007] 本發(fā)明的目的通過(guò)下述技術(shù)方案實(shí)現(xiàn):
[0008] 基于XAdES的多人電子憑證,包括電子憑證創(chuàng)建模塊和電子憑證驗(yàn)證模塊,
[0009] 所述電子憑證創(chuàng)建模塊,用于根據(jù)不同需求,配置選擇簽名的級(jí)別和使用的簽名 算法,使用添加的簽名證書(shū)對(duì)要簽名的文件進(jìn)行簽名,并產(chǎn)生憑證文件的過(guò)程,電子憑證使 用基于公鑰加密技術(shù)的數(shù)字簽名技術(shù)來(lái)確認(rèn)電子文件作者的身份,并保證在傳輸過(guò)程中的 完整性;
[0010] 所述電子憑證驗(yàn)證模塊,用于驗(yàn)證所添加的憑證文件的內(nèi)容,首先檢查憑證文件 的格式,然后解壓憑證文件,解析得到的簽名文件,并對(duì)xml文檔的所有簽名進(jìn)行驗(yàn)證,之 后檢查憑證簽名文件的格式,最后顯示簽名者得信息、簽名時(shí)間以及簽名備注,驗(yàn)證模塊主 要用來(lái)驗(yàn)證憑證文件的完整性、確認(rèn)簽署者的身份和簽署者的信息。
[0011] 優(yōu)選的,所述電子憑證創(chuàng)建模塊包括配置模塊、文件添加模塊、數(shù)字證書(shū)添加模 塊、判斷模塊、憑證備注信息添加模塊、設(shè)置模塊以及創(chuàng)建模塊;
[0012] 所述配置模塊,用于根據(jù)不同的需求,配置選擇簽名的級(jí)別和使用的簽名算法;
[0013] 所述文件添加模塊,用于從本地中添加需要簽名的一個(gè)或者多個(gè)文件或者文件 夾;
[0014] 所述數(shù)字證書(shū)添加模塊,用于從電子密匙設(shè)備中添加使用的簽名證書(shū);
[0015] 所述判斷模塊,用于依據(jù)添加文件的類(lèi)型來(lái)判斷是對(duì)憑證內(nèi)容文件簽名還是對(duì)憑 證文件簽名;
[0016] 所述憑證備注信息添加模塊,用于添加簽名時(shí)的備注;
[0017] 所述設(shè)置模塊,用于設(shè)置生成的憑證文件的存放路徑;
[0018] 所述創(chuàng)建模塊,用于根據(jù)配置中選擇的簽名算法和簽名級(jí)別,使用添加的簽名證 書(shū)對(duì)添加的文件進(jìn)行簽名,首先在XML簽名中,每個(gè)簽名為一個(gè)XML Signature元素,而 待簽名的憑證內(nèi)容作為一個(gè)引用,根據(jù)每個(gè)〈Reference〉元素中指定的資源引用方式, 摘要算法,數(shù)據(jù)轉(zhuǎn)換方法等信息,對(duì)引用資源進(jìn)行轉(zhuǎn)換,然后對(duì)轉(zhuǎn)換后的結(jié)果計(jì)算出摘要 值,接著根據(jù)〈Signedlnfo〉元素中指定的XML數(shù)據(jù)的規(guī)范化方法對(duì)〈Signedlnfo〉元素 規(guī)則化,對(duì)規(guī)范化之后的數(shù)據(jù)生成摘要值,并使用私鑰對(duì)摘要值進(jìn)行加密,將生成的加密 摘要值存放在〈SignatureValue〉元素中,根據(jù)配置中選擇的簽名算法和簽名級(jí)別,在 〈Object〉元素中添加 〈QualifyingProperties〉元素,并根據(jù)需要生成 SignedProperties、 UnsignedProperties屬性,生成簽名文件,最后將簽名文件和憑證內(nèi)容文件壓縮為憑證文 件。
[0019] 優(yōu)選的,所述憑證文件為要簽名的電子文件和XML簽名文件壓縮后的文件。
[0020] 優(yōu)選的,所述電子憑證驗(yàn)證模塊包括:憑證文件添加模塊、憑證內(nèi)容文件存放模塊 以及驗(yàn)證模塊,
[0021] 所述憑證文件添加模塊,用于添加要驗(yàn)證的憑證文件;
[0022] 所述文件存放模塊,用于設(shè)置得到的憑證內(nèi)容文件存放的路徑;
[0023] 所述驗(yàn)證模塊,用于驗(yàn)證在傳輸?shù)倪^(guò)程中憑證內(nèi)容文件的完整性以及憑證內(nèi)容文 件是否經(jīng)過(guò)改動(dòng),首先對(duì)憑證文件進(jìn)行解壓,得到憑證內(nèi)容文件和簽名文件,然后對(duì)簽名文 件內(nèi)〈Signature〉元素中包含的數(shù)據(jù)引用部分進(jìn)行驗(yàn)證,然后對(duì)整個(gè)〈Signedlnfo〉元素的 簽名值進(jìn)行驗(yàn)證,在這個(gè)過(guò)程中任何一步驗(yàn)證失敗則代表整XML數(shù)字簽名驗(yàn)證失敗,如果 有時(shí)間戳,則還要驗(yàn)證時(shí)間戳。
[0024] 一種基于XAdES的多人電子憑證的實(shí)現(xiàn)方法,包括下述步驟:
[0025] S1、創(chuàng)建電子憑證,根據(jù)配置,使用選擇的簽名證書(shū)對(duì)憑證內(nèi)容文件進(jìn)行簽名,然 后將簽名文件與憑證內(nèi)容文件壓縮封裝為憑證文件的過(guò)程;
[0026] S2、驗(yàn)證電子憑證,首先將待驗(yàn)證的憑證文件解壓,然后檢查憑證文件格式和簽名 文件格式之后驗(yàn)證簽名文件,不僅要驗(yàn)證簽名文件中〈Signature〉元素中的簽名值進(jìn)行驗(yàn) 證,還要驗(yàn)證〈Signedlnfo〉的數(shù)據(jù)引用部分,驗(yàn)證成功之后獲得憑證內(nèi)容文件和簽名者信 肩、。
[0027] 優(yōu)選的,步驟S1具體為:
[0028] S11、根據(jù)不同的需求,配置選擇簽名的級(jí)別和使用的簽名算法,首先默認(rèn)使用 XAdES高級(jí)簽名的XAdES-BES簽名格式,如果有符合RFC3161的時(shí)間戳服務(wù)器,則使用 XAdES-T格式,如果有時(shí)間戳服務(wù)器和全面的證書(shū)撤銷(xiāo)信息,則使用XAdES-C簽名格式;
[0029] S12、添加待簽名的文件或者目錄文件,可以為多個(gè)文件和多個(gè)目錄文件;
[0030] S13、添加用于簽名的數(shù)字證書(shū);
[0031] S14、判斷是否添加憑證備注信息,如果是執(zhí)行步驟S15,否執(zhí)行步驟S16 ;
[0032] S15、添加憑證備注信息,可以為簽名的原因或者一些特定的內(nèi)容;
[0033] S16、設(shè)置憑證文件存放路徑;
[0034] S17、創(chuàng)建電子憑證,根據(jù)配置,使用選擇的簽名證書(shū)對(duì)憑證內(nèi)容文件進(jìn)行簽名,在 簽名之前進(jìn)行判斷是單人憑證還是多人憑證,若添加的待簽名文件為憑證文件,則為多人 憑證,需要先對(duì)憑證文件進(jìn)行驗(yàn)證,驗(yàn)證成功之后,則再進(jìn)行簽名,將產(chǎn)生的簽名文件與原 憑證內(nèi)容文件壓縮封裝為憑證文件,若添加的待簽名文件為單人憑證,則直接簽名,將產(chǎn)生 的簽名文件與憑證內(nèi)容文件壓縮為憑證文件;
[0035] S18、結(jié)束。
[0036] 優(yōu)選的,步驟S2具體為:
[0037] S21、添加待驗(yàn)證憑證文件;
[0038] S22、設(shè)置憑證內(nèi)容文件存放路徑;
[0039] S23、驗(yàn)證憑證文件,對(duì)待驗(yàn)證的憑證文件,首先解壓憑證文件,驗(yàn)證簽名文件的格 式,并對(duì)〈Signedlnfo〉元素的引用部分和〈SignatureValue〉簽名值進(jìn)行驗(yàn)證,最后顯示內(nèi) 容文件信息與簽署者信息;
[0040] S24、結(jié)束。
[0041] 本發(fā)明相對(duì)于現(xiàn)有技術(shù)具有如下的優(yōu)點(diǎn)及效果:
[0042] 1、與現(xiàn)有技術(shù)比較,本發(fā)明可以提供更安全和更人性化的服務(wù)。可以針對(duì)不同的 需求來(lái)使用不同的簽名級(jí)別,并且支持SM2橢圓曲線公鑰算法。其中,SM2橢圓曲線公鑰算 法,相對(duì)于RSA算法來(lái)說(shuō),具有安全性高、存儲(chǔ)空間小、簽名速度快等優(yōu)點(diǎn)。隨著全球范圍內(nèi) 的計(jì)算能力的提高和密碼技術(shù)的發(fā)展,現(xiàn)有基于RSA1024的密碼體系已經(jīng)不能滿足當(dāng)前和 今后的安全需求,而目前使用的RSA算法,大多數(shù)的密鑰長(zhǎng)度還是1024位,很少使用2048 位或者更長(zhǎng)的密鑰,而192位的SM2密碼強(qiáng)度已經(jīng)比RSA 2048位的密碼強(qiáng)度要高。
[0043] 2、本發(fā)明基于XAdES的簽名文件格式以及依據(jù)不同的需求進(jìn)行配置不同的簽名 級(jí)別和選擇使用的簽名算法,XAdES(XML高級(jí)數(shù)字簽名)是ETSI的標(biāo)準(zhǔn),它在XML簽名標(biāo) 準(zhǔn)之上,增加了自己的很多屬性,用來(lái)支持簽名者綁定,簽名策略,長(zhǎng)期簽名等功能。XML簽 名可以對(duì)XML內(nèi)容和非XML內(nèi)容進(jìn)行簽名,簽名可以保護(hù)電子文件,如果在簽名之后對(duì)原內(nèi) 容文件做任何修改,則數(shù)字簽名將變成無(wú)效。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0044] 圖1是本發(fā)明創(chuàng)建電子憑證的流程圖;
[0045] 圖2是本發(fā)明驗(yàn)證電子憑證的流程圖。
【具體實(shí)施方式】
[0046] 下面結(jié)合實(shí)施例及附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)的描述,但本發(fā)明的實(shí)施方式不限 于此。
[0047] 實(shí)施例
[0048] 本發(fā)明電子憑證即是對(duì)一組電子文件,使用XAdES標(biāo)準(zhǔn)進(jìn)行簽名,將要簽名的電 子文件與XML簽名文件壓縮為一個(gè)文件,稱(chēng)之為憑證文件。并且支持多種簽名算法,尤其 SM2橢圓曲線算法。根據(jù)不同的需求進(jìn)行不同級(jí)別的簽名。本發(fā)明默認(rèn)使用XAdES高級(jí)簽 名的XAdES-BES簽名格式,如果有符合RFC3161的時(shí)間戳服務(wù)器,則使用XAdES-T格式,如 果有時(shí)間戳服務(wù)器和全面的證書(shū)撤銷(xiāo)信息,則使用XAdES-C簽名格式。同時(shí)在上述格式的 基礎(chǔ)上添加憑證的屬性信息。其中多人即是支持并聯(lián)簽名和串聯(lián)簽名。其中并聯(lián)簽名即同 級(jí)別之間的簽名,不分先后,而串聯(lián)簽名是指有先后的簽名,例如公文審批。
[0049] 本發(fā)明有兩大模塊,電子憑證創(chuàng)建模塊和電子憑證驗(yàn)證模塊。其中電子憑證創(chuàng)建 模塊,用于根據(jù)不同需求,配置選擇簽名的級(jí)別和使用的簽名算法,使用添加的簽名證書(shū)對(duì) 要簽名的文件進(jìn)行簽名,并產(chǎn)生憑證文件的過(guò)程,電子憑證使用基于公鑰加密技術(shù)的數(shù)字 簽名技術(shù)來(lái)確認(rèn)電子文件作者的身份,并保證在傳輸過(guò)程中的完整性。而電子憑證驗(yàn)證模 塊,用于驗(yàn)證所添加的憑證文件的內(nèi)容,首先檢查憑證文件的格式,然后解壓憑證文件,解 析得到的簽名文件,并對(duì)xml文檔的所有簽名進(jìn)行驗(yàn)證,之后檢查憑證簽名文件的格式,最 后顯示簽名者得信息、簽名時(shí)間以及簽名備注,驗(yàn)證模塊主要用來(lái)驗(yàn)證憑證文件的完整性、 確認(rèn)簽署者的身份和簽署者的信息。其中,憑證文件為要簽名的電子文件和XML簽名文件 壓縮后的文件。
[0050] 進(jìn)一步細(xì)化,電子憑證創(chuàng)建模塊又包括配置模塊、文件添加模塊、數(shù)字證書(shū)添加模 塊、判斷模塊、憑證備注信息添加模塊、設(shè)置模塊以及創(chuàng)建模塊。各個(gè)模塊前后配合發(fā)揮不 同的功能,其中配置模塊,用于根據(jù)不同的需求,配置選擇簽名的級(jí)別和使用的簽名算法。 其中文件添加模塊,用于從本地中添加需要簽名的一個(gè)或者多個(gè)文件或者文件夾。其中數(shù) 字證書(shū)添加模塊,用于從電子密匙設(shè)備中添加使用的簽名證書(shū)。其中判斷模塊,用于依據(jù) 添加文件的類(lèi)型來(lái)判斷是對(duì)憑證內(nèi)容文件簽名還是對(duì)憑證文件簽名。其中憑證備注信息 添加模塊,用于添加簽名時(shí)的備注。其中設(shè)置模塊,用于設(shè)置生成的憑證文件的存放路徑。 其中創(chuàng)建模塊,用于根據(jù)配置中選擇的簽名算法和簽名級(jí)別,使用添加的簽名證書(shū)對(duì)添加 的文件進(jìn)行簽名,具體創(chuàng)建過(guò)程是首先在XML簽名中,每個(gè)簽名為一個(gè)XML Signature元 素,而待簽名的憑證內(nèi)容作為作為一個(gè)引用,根據(jù)每個(gè)Reference元素中指定的資源引用 方式,摘要算法,數(shù)據(jù)轉(zhuǎn)換方法等信息,對(duì)引用資源進(jìn)行轉(zhuǎn)換,然后對(duì)轉(zhuǎn)換后的結(jié)果計(jì)算出 摘要值,接著根據(jù)〈Signedlnfo〉元素中指定的XML數(shù)據(jù)的規(guī)范化方法對(duì)〈Signedlnfo〉元 素規(guī)則化,對(duì)規(guī)范化之后的數(shù)據(jù)生成摘要值,并使用私鑰對(duì)摘要值進(jìn)行加密,將生成的加 密摘要值存放在〈SignatureValue〉元素中,根據(jù)配置中選擇的簽名算法和簽名級(jí)別,在 〈Object〉元素中添加 〈QualifyingProperties〉元素,并根據(jù)需要生成 SignedProperties、 UnsignedProperties屬性,生成簽名文件,最后將簽名文件和憑證內(nèi)容文件壓縮為憑證文 件。
[0051] 電子憑證驗(yàn)證模塊又包括憑證文件添加模塊、憑證內(nèi)容文件存放模塊以及驗(yàn)證模 塊,其中憑證文件添加模塊用于添加要驗(yàn)證的憑證文件,其中文件存放模塊用于設(shè)置得到 的憑證內(nèi)容文件存放的路徑,其中驗(yàn)證模塊用于驗(yàn)證在傳輸?shù)倪^(guò)程中憑證內(nèi)容文件的完整 性以及憑證內(nèi)容文件是否經(jīng)過(guò)改動(dòng),具體驗(yàn)證過(guò)程為首先對(duì)憑證文件進(jìn)行解壓,得到憑證 內(nèi)容文件和簽名文件,然后對(duì)簽名文件內(nèi)〈Signature〉元素中包含的數(shù)據(jù)引用部分進(jìn)行驗(yàn) 證,然后對(duì)整個(gè)〈Signedlnfo〉元素的簽名值進(jìn)行驗(yàn)證,在這個(gè)過(guò)程中任何一步驗(yàn)證失敗則 代表整XML數(shù)字簽名驗(yàn)證失敗,如果有時(shí)間戳,則還要驗(yàn)證時(shí)間戳。
[0052] 下面具體闡述基于XAdES的多人電子憑證的實(shí)現(xiàn)方法,包括創(chuàng)建電子憑證和驗(yàn) 證電子憑證兩個(gè)步驟,首先,創(chuàng)建電子憑證是根據(jù)配置,使用選擇的簽名證書(shū)對(duì)憑證內(nèi)容 文件進(jìn)行簽名,然后將簽名文件與憑證內(nèi)容文件壓縮封裝為憑證文件的過(guò)程。其次,驗(yàn)證 電子憑證是先將待驗(yàn)證的憑證文件解壓,然后檢查憑證文件格式和簽名文件格式之后驗(yàn) 證簽名文件,不僅要驗(yàn)證簽名文件中〈Signature〉元素中的簽名值進(jìn)行驗(yàn)證,還要驗(yàn)證 〈Signedlnfo〉的數(shù)據(jù)引用部分,驗(yàn)證成功之后獲得憑證內(nèi)容文件和簽名者信息。
[0053] 如圖1所示,其中創(chuàng)建電子憑證的步驟具體為:
[0054] 第一步、根據(jù)不同的需求,配置選擇簽名的級(jí)別和使用的簽名算法,首先默認(rèn)使 用XAdES高級(jí)簽名的XAdES-BES簽名格式,如果有符合RFC3161的時(shí)間戳服務(wù)器,則使用 XAdES-T格式,如果有時(shí)間戳服務(wù)器和全面的證書(shū)撤銷(xiāo)信息,則使用XAdES-C簽名格式;
[0055] 第二步、添加待簽名的文件或者目錄文件,可以為多個(gè)文件和多個(gè)目錄文件;
[0056] 第三步、添加用于簽名的數(shù)字證書(shū);
[0057] 第四步、判斷是否添加憑證備注信息,如果是執(zhí)行第五步驟,否則執(zhí)行第六步驟;
[0058] 第五步、添加憑證備注信息,可以為簽名的原因或者一些特定的內(nèi)容;
[0059] 第六步、設(shè)置憑證文件存放路徑;
[0060] 第七步、創(chuàng)建電子憑證,根據(jù)配置,使用選擇的簽名證書(shū)對(duì)憑證內(nèi)容文件進(jìn)行簽 名,在簽名之前進(jìn)行判斷是單人憑證還是多人憑證,若添加的待簽名文件為憑證文件,則為 多人憑證,需要先對(duì)憑證文件進(jìn)行驗(yàn)證,驗(yàn)證成功之后,則再進(jìn)行簽名,將產(chǎn)生的簽名文件 與原憑證內(nèi)容文件壓縮封裝為憑證文件,若添加的待簽名文件為單人憑證,則直接簽名,將 產(chǎn)生的簽名文件與憑證內(nèi)容文件壓縮為憑證文件;
[0061] 第八步、結(jié)束。
[0062] 如圖2所示,其中,驗(yàn)證電子憑證的步驟具體為:
[0063] 第一步、添加待驗(yàn)證憑證文件;
[0064] 第二步、設(shè)置憑證內(nèi)容文件存放路徑;
[0065] 第三步、驗(yàn)證憑證文件,對(duì)待驗(yàn)證的憑證文件,首先解壓憑證文件,驗(yàn)證簽名文件 的格式,并對(duì)〈Signedlnfo〉元素的引用部分和〈SignatureValue〉簽名值進(jìn)行驗(yàn)證,最后顯 示內(nèi)容文件信息與簽署者信息;
[0066] 第四步、結(jié)束。
[0067] 本發(fā)明使用的簽名格式,以XAdES-C為例,因?yàn)閄AdES-C是三種簽名格式中最高級(jí) 別的簽名格式。
[0068] XML簽名文件的結(jié)構(gòu)如下:
[0069] 〈AppSignature ID?) <MasterInfo ID> </MasterInfo> (〈Signature ID?> 〈/Signature》+ </ AppSignature)
[0070] 其中⑴?表示X出現(xiàn)o-l次
[0071] 其中(X) +表示X出現(xiàn)1-n次
[0072] 其中(X) *表示X出現(xiàn)0-n次
[0073] AppSignature元素為簽名文件的根元素,包含有一個(gè)Masterlnfo元素和一個(gè)或 多個(gè)XML Signature元素。Masterlnfo元素包含憑證的相關(guān)信息,每個(gè)簽名為一個(gè)XML Signature 兀素。
[0074] 當(dāng)為多人憑證時(shí),簽名文件中就會(huì)出現(xiàn)多個(gè)簽名元素。
[0075] 〈AppSignature ID?> 〈Masterlnfo ID> </MasterInfo> 〈Signature ID=signaturel> </Signature> 〈Signature ID=signature2> </Signature> 〈Signature ID=signatureN> </Signature> 〈/AppSignature〉
[0076] 其中對(duì)Masterlnfo兀素的定義為:
[0077] <MasterInfo ID> <Version> </Version> <Name> </Name> (〈Template ID?> (<Parameter> 〈/Parameter》? (<AppliedTo> </AppliedTo>)+ </Template>)+ </MasterInfo>
[0078] Masterlnfo兀素包含一個(gè)Version兀素、一個(gè)Name兀素和一個(gè)或多個(gè)Template 元素,Version表示版本號(hào),Name為憑證類(lèi)型的名稱(chēng)。Template元素表示憑證內(nèi)容使用的 模板。Parameter為與模板相關(guān)的參數(shù),如文件后綴名等,AppliedTo元素的值是個(gè)相對(duì)文 件路徑名,用/分隔目錄,表示文件內(nèi)容是和模板相關(guān)的。
[0079] 對(duì)Signature兀素的定義為:
[0080] (〈Signature ID?> <SignedInfo> </SignedInfo> <SignatureValue ID?> <KeyInfo> </KeyInfo> 〈Object ID?> <Comment>-**</Comment> </Objecet> 〈Object ID?> <QualifyingProperties Target) <SignedProperties> <SignedSignatureProperties ID? > <SigningTirae> </SigningTirae> 〈SigningCertificate> 〈/SigningCertificate> </SignedSignatureProperties> </SignedProperties> <Uns i gnedPropert i e s> <UnsignedSignatureProperties> < Countersignature) </ CounterSignature> <SignatureTimeStarap Id?> </SignatureT iraeStarap) < CorapleteCertificateRefs >
[0081] </ CorapleteCertificateRefs > < CompleteRevocationRefs) </ CompleteRevocationRefs) </UnsignedSignatureProperties> </UnsignedProperties> </QualifyingProperties> 〈/Object〉 〈/Signature》+
[0082] 一個(gè) Signature 兀素包含有一個(gè) Signedlnfo 兀素、一個(gè) SignatureValue 兀素、 零個(gè)或一個(gè)Keylnfo元素和零個(gè)或多個(gè)Object元素。Signedlnfo元素是要簽名的內(nèi)容, SignatureValue元素是簽名值,Keylnfo元素包含簽名相關(guān)的密鑰信息,可以是密鑰本, Object元素包含簽名相關(guān)的一些屬性信息。XAdES(XML高級(jí)數(shù)字簽名)就是在XML簽名標(biāo) 準(zhǔn)之上,在XML簽名的Object元素下,增加 QualifyingProperties子元素,增加了自己的 很多屬性,用來(lái)支持簽名者綁定,長(zhǎng)期簽名等功能。其中Comment元素為簽名備注。
[0083] 上述實(shí)施例為本發(fā)明較佳的實(shí)施方式,但本發(fā)明的實(shí)施方式并不受上述實(shí)施例的 限制,其他的任何未背離本發(fā)明的精神實(shí)質(zhì)與原理下所作的改變、修飾、替代、組合、簡(jiǎn)化, 均應(yīng)為等效的置換方式,都包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1. 基于XAdES的多人電子憑證,其特征在于,包括電子憑證創(chuàng)建模塊和電子憑證驗(yàn)證 模塊, 所述電子憑證創(chuàng)建模塊,用于根據(jù)不同需求,配置選擇簽名的級(jí)別和使用的簽名算法, 使用添加的簽名證書(shū)對(duì)要簽名的文件進(jìn)行簽名,并產(chǎn)生憑證文件的過(guò)程,電子憑證使用基 于公鑰加密技術(shù)的數(shù)字簽名技術(shù)來(lái)確認(rèn)電子文件作者的身份,并保證在傳輸過(guò)程中的完整 性; 所述電子憑證驗(yàn)證模塊,用于驗(yàn)證所添加的憑證文件的內(nèi)容,首先檢查憑證文件的格 式,然后解壓憑證文件,解析得到的簽名文件,并對(duì)xml文檔的所有簽名進(jìn)行驗(yàn)證,之后檢 查憑證簽名文件的格式,最后顯示簽名者得信息、簽名時(shí)間以及簽名備注,驗(yàn)證模塊主要用 來(lái)驗(yàn)證憑證文件的完整性、確認(rèn)簽署者的身份和簽署者的信息。
2. 根據(jù)權(quán)利要求1所述的基于XAdES的多人電子憑證,其特征在于,所述電子憑證創(chuàng)建 模塊包括配置模塊、文件添加模塊、數(shù)字證書(shū)添加模塊、判斷模塊、憑證備注信息添加模塊、 設(shè)置模塊以及創(chuàng)建模塊; 所述配置模塊,用于根據(jù)不同的需求,配置選擇簽名的級(jí)別和使用的簽名算法; 所述文件添加模塊,用于從本地中添加需要簽名的一個(gè)或者多個(gè)文件或者文件夾; 所述數(shù)字證書(shū)添加模塊,用于從電子密匙設(shè)備中添加使用的簽名證書(shū); 所述判斷模塊,用于依據(jù)添加文件的類(lèi)型來(lái)判斷是對(duì)憑證內(nèi)容文件簽名還是對(duì)憑證文 件簽名; 所述憑證備注信息添加模塊,用于添加簽名時(shí)的備注; 所述設(shè)置模塊,用于設(shè)置生成的憑證文件的存放路徑; 所述創(chuàng)建模塊,用于根據(jù)配置中選擇的簽名算法和簽名級(jí)別,使用添加的簽名證書(shū) 對(duì)添加的文件進(jìn)行簽名,首先在XML簽名中,每個(gè)簽名為一個(gè)XML Signature元素,而 待簽名的憑證內(nèi)容作為一個(gè)引用,根據(jù)每個(gè)〈Reference〉元素中指定的資源引用方式, 摘要算法,數(shù)據(jù)轉(zhuǎn)換方法等信息,對(duì)引用資源進(jìn)行轉(zhuǎn)換,然后對(duì)轉(zhuǎn)換后的結(jié)果計(jì)算出摘要 值,接著根據(jù)〈Signedlnfo〉元素中指定的XML數(shù)據(jù)的規(guī)范化方法對(duì)〈Signedlnfo〉元素 規(guī)則化,對(duì)規(guī)范化之后的數(shù)據(jù)生成摘要值,并使用私鑰對(duì)摘要值進(jìn)行加密,將生成的加密 摘要值存放在〈SignatureValue〉元素中,根據(jù)配置中選擇的簽名算法和簽名級(jí)別,在 〈Object〉元素中添加 〈QualifyingProperties〉元素,并根據(jù)需要生成 SignedProperties、 UnsignedProperties屬性,生成簽名文件,最后將簽名文件和憑證內(nèi)容文件壓縮為憑證文 件。
3. 根據(jù)權(quán)利要求1所述的基于XAdES的多人電子憑證,其特征在于,所述憑證文件為要 簽名的電子文件和XML簽名文件壓縮后的文件。
4. 根據(jù)權(quán)利要求1-3中任一項(xiàng)所述的基于XAdES的多人電子憑證,其特征在于,所述電 子憑證驗(yàn)證模塊包括:憑證文件添加模塊、憑證內(nèi)容文件存放模塊以及驗(yàn)證模塊, 所述憑證文件添加模塊,用于添加要驗(yàn)證的憑證文件; 所述文件存放模塊,用于設(shè)置得到的憑證內(nèi)容文件存放的路徑; 所述驗(yàn)證模塊,用于驗(yàn)證在傳輸?shù)倪^(guò)程中憑證內(nèi)容文件的完整性以及憑證內(nèi)容文件是 否經(jīng)過(guò)改動(dòng),首先對(duì)憑證文件進(jìn)行解壓,得到憑證內(nèi)容文件和簽名文件,然后對(duì)簽名文件內(nèi) 〈Signature〉元素中包含的數(shù)據(jù)引用部分進(jìn)行驗(yàn)證,然后對(duì)整個(gè)〈Signedlnfo〉元素的簽名 值進(jìn)行驗(yàn)證,在這個(gè)過(guò)程中任何一步驗(yàn)證失敗則代表整XML數(shù)字簽名驗(yàn)證失敗,如果有時(shí) 間戳,則還要驗(yàn)證時(shí)間戳。
5. -種基于XAdES的多人電子憑證的實(shí)現(xiàn)方法,其特征在于,包括下述步驟: 51、 創(chuàng)建電子憑證,根據(jù)配置,使用選擇的簽名證書(shū)對(duì)憑證內(nèi)容文件進(jìn)行簽名,然后將 簽名文件與憑證內(nèi)容文件壓縮封裝為憑證文件的過(guò)程; 52、 驗(yàn)證電子憑證,首先將待驗(yàn)證的憑證文件解壓,然后檢查憑證文件格式和簽名文件 格式之后驗(yàn)證簽名文件,不僅要驗(yàn)證簽名文件中〈Signature〉元素中的簽名值進(jìn)行驗(yàn)證, 還要驗(yàn)證〈Signedlnfo〉的數(shù)據(jù)引用部分,驗(yàn)證成功之后獲得憑證內(nèi)容文件和簽名者信息。
6. 根據(jù)權(quán)利要求5所述的基于XAdES的多人電子憑證的實(shí)現(xiàn)方法,其特征在于,步驟 S1具體為: 511、 根據(jù)不同的需求,配置選擇簽名的級(jí)別和使用的簽名算法,首先默認(rèn)使用XAdES 高級(jí)簽名的XAdES-BES簽名格式,如果有符合RFC3161的時(shí)間戳服務(wù)器,則使用XAdES-T格 式,如果有時(shí)間戳服務(wù)器和全面的證書(shū)撤銷(xiāo)信息,則使用XAdES-C簽名格式; 512、 添加待簽名的文件或者目錄文件,可以為多個(gè)文件和多個(gè)目錄文件; 513、 添加用于簽名的數(shù)字證書(shū); 514、 判斷是否添加憑證備注信息,如果是執(zhí)行步驟S15,否執(zhí)行步驟S16 ; 515、 添加憑證備注信息,可以為簽名的原因或者一些特定的內(nèi)容; 516、 設(shè)置憑證文件存放路徑; 517、 創(chuàng)建電子憑證,根據(jù)配置,使用選擇的簽名證書(shū)對(duì)憑證內(nèi)容文件進(jìn)行簽名,在簽名 之前進(jìn)行判斷是單人憑證還是多人憑證,若添加的待簽名文件為憑證文件,則為多人憑證, 需要先對(duì)憑證文件進(jìn)行驗(yàn)證,驗(yàn)證成功之后,則再進(jìn)行簽名,將產(chǎn)生的簽名文件與原憑證內(nèi) 容文件壓縮封裝為憑證文件,若添加的待簽名文件為單人憑證,則直接簽名,將產(chǎn)生的簽名 文件與憑證內(nèi)容文件壓縮為憑證文件; 518、 結(jié)束。
7. 根據(jù)權(quán)利要求5所述的基于XAdES的多人電子憑證的實(shí)現(xiàn)方法,其特征在于,步驟 S2具體為: 521、 添加待驗(yàn)證憑證文件; 522、 設(shè)置憑證內(nèi)容文件存放路徑; 523、 驗(yàn)證憑證文件,對(duì)待驗(yàn)證的憑證文件,首先解壓憑證文件,驗(yàn)證簽名文件的格式, 并對(duì)〈Signedlnfo〉元素的引用部分和〈SignatureValue〉簽名值進(jìn)行驗(yàn)證,最后顯示內(nèi)容 文件信息與簽署者信息; 524、 結(jié)束。
【文檔編號(hào)】H04L9/32GK104158662SQ201410367730
【公開(kāi)日】2014年11月19日 申請(qǐng)日期:2014年7月29日 優(yōu)先權(quán)日:2014年7月29日
【發(fā)明者】趙敏, 梁寧寧, 劉義, 符利華, 林少柳 申請(qǐng)人:廣東省電子商務(wù)認(rèn)證有限公司