程元元,毛志芹
(華北水利水電大學 信息工程學院,鄭州 450046)
信息技術迅速發展的今天,政府和企業為了加快公文流轉速度,提高辦公效率和資源利用率,實現公文的無紙化辦公,電子公文系統已越來越多的應用于各級政府和企事業單位中。電子公文系統包括對公文的制作、傳輸、存儲、閱讀及打印等流程,它實現了公文在各部門間、上下級間、地區之間及一個部門的內部之間的傳遞。電子公文主要分為上行文和下行文,根據公文發放時所涉及蓋章部門的多少,大體可將電子公文分為兩類:一類是需單個部門蓋章發放的上行或下行公文,主要用在政府各部門之間的網絡互聯和電子數據交換(G2G);一類是需要多個部門聯合蓋章發放的上行或下行公文(聯合發文),主要用在政府和企業、公民之間的商業電子數據交換(G2CG2B)。電子公文應用領域的特殊性,決定了電子公文內容的高敏感性,由于其內容往往涉及到經濟利益甚至是國家機密,需要嚴格保密,因此,電子公文在網絡傳遞過程中必須采用高安全性的加密技術。
數字簽名技術的不斷發展和完善為電子公文系統的保密性需求提供了可靠的保障,文獻[1]介紹了電子公文中數字簽名的設計和實現方法,文獻[2]利用XML加密技術和數字簽名技術設計了一種電子公文的加密和簽名流程,文獻[3-4] 分別提出了一種安全的電子公文交換系統:基于PKI體系公文交換系統和基于Word文檔的公文交換系統,文獻[5]采用自證明公鑰原理,取消數字證書,提出了一種不依賴權威機構認證的公文交換系統。在以上方案中,各部門的簽名權都是獨有的,可以很好的滿足第一類電子公文的簽名需求,但對于第二類電子公文,由于聯合發文的多部門性和業務辦理流程的復雜性,實際生活中,不熟悉公文辦理流程的企業或公民在申請相關業務辦理的過程中經常出現耗時長、精力投入大等問題,在一定程度上嚴重影響了政府辦公的效率。
本文分析了電子公文的安全性要求和代理多重簽名的基本原理,設計了一種基于代理多重簽名的電子公文傳輸系統,該系統在電子公文系統基礎上,通過增設代理簽名部門的方法有效解決聯合發文問題,避免聯合發文流程的復雜性,直接提高辦公效率。另外,采用基于自認證密碼系統的代理多重簽名方案,有效的解決了代理多重簽名的可驗證性、可區分性、不可偽造性、不可否任性和可識別性。采用公鑰密碼體制RSA算法解決電子公文在傳輸過程中的信息安全問題,保證了公文的機密性、完整性、不可偽造性、不可否認性和身份的可驗證性。
代理多重簽名是一種特殊的數字簽名,它是指多個原始簽名人同時委托一個代理人,在一個文件上行使有效簽名的特殊簽名方式。根據實際應用情況,如文獻[6-8]所述,代理多重簽名一般可分為兩類:第一類是一組原始簽名人A1、A2、…、AL聯合委托授權給一個代理簽名人B,讓他代替原始簽名組產生代理簽名;第二類是一組原始簽名人A1、A2、…、AL分別授權給自己的代理簽名人B1、B2、…、BL和特定用戶B,由B1、B2、…、BL和特定用戶B聯合生成代理簽名。前一種是基于公鑰基礎設施(PKI)的簽名體制,需要密鑰認證中心(KCA)頒發數字證書,對公鑰進行認證;后一種是基于身份(ID)密碼系統的簽名體制,雖然不需要KCA中心頒發的數字證書,但需要密鑰托管。
自認證密碼系統的簽名方案是一種基于用戶身份(用戶 ID)的密碼系統,兼有以上兩種密碼系統的優點:既不像 PKI 需要公證證書對公鑰進行認證,也不像基于身份密碼系統那樣要進行密鑰托管[9]。系統管理員(SA)生成密鑰參數M只由代理簽名人共同掌握,隨機選取M階循環乘法子群QN的一個生成元g和抗碰撞的單項哈希函數h(g),其中{N,g,h}公開,{M}保密,原始簽名人Ai的公私鑰對為XAi,YAi=gXAimodN,代理簽名人Bi的公私鑰對為XBi,YBi=gXBimodN。
Bi隨機選取一個整數αi,計算υi=gαimodN,然后將υi發送給Ai,Ai任選整數Ki,計算出ωi=υi·gkimodN,τi=2Ki+h(IDAi)·XAi,并發送給Bi,Bi,i收到(ωi,τi)后就可以計算出代理密鑰
δi=τi+2αi+h(IDBi)·XBimodM
并通過gδi=ωi2(YAi)h(IDAi)·(YBi)h(IDBi)modN
驗證代理簽名的有效性。
若代理簽名的信息為m,那么Bi隨機選取整數γi,計算出R1=gr1modN,將Ri發給其他Bj(j≠i)后,就可以計算Si=δih(m)-γiRmodN得到代理簽名(ωi,τi),然后發給特定用戶B。

gs·RR=Th(m)modN
來檢驗簽名。
聯合公文代理多重簽名權的委托、實現和驗證過程是系統的核心,考慮到電子公文需要滿足機密性、完整性、不可偽造性、不可否認性和身份可驗證性等安全性需求,該系統的代理簽名過程必須由政府設立的權威機構完成,在此簡稱為代理簽名機構。
系統參數由可信賴的系統管理員(SA)生成,用戶是具有收文和發文權限的部門或個人,用戶的身份標識就是用戶的ID信息,該系統有L個原始簽名人A1、A2、…、AL和代理簽名人B1、B2、…、BL、B組成。
(1)SA選取兩個大素數p′和q′,使得p′=2p+1,q′=2q+1;

(3)QN是ZN*中所有平方剩余數所構成的乘法子群;
(4)SA隨意選取QN的一個生成元g,則gMmodN=1;
(5)選擇一個抗碰撞的單向哈希函數h(g)。
公開{N,g,h},重要參數M有代理簽名人B1、B2、…、BL和特定用戶B共同保密。
代理簽名機構由對應的代理簽名人B1、B2…BL和特定用戶B組成,如果企業或個人需要由多個部門聯合簽名的公文,可以直接向代理簽名機構咨詢并提交相關材料,經代理簽名機構和各部門同意后,原始簽名部門就將簽名權委托給代理簽名機構的相應代理簽名人,由代理簽名機構生成各部門聯合簽名的公文并發送。
為便于說明,以需要A1、A2兩個部門聯合簽名的公文為例,其中Ai和Bi的公私鑰對分別為(XAi,YAi)、(XBi,YBi),B的公私鑰對為(XB,YB)。
系統代理授權工作流程如圖1所示,其工作步驟如下:
(1)代理簽名人B1,B2分別任選擇整數?1∈Zm*、?2∈Zm*,計算參數
V1=g?1modN,
(1)
V2=g?2modN
(2)
分別發送V1、V2給原始簽名部門A1、A2。
(2)A1、A2收到V1、V2后,分別計算
ω1=υ1gk1modN,τ1=2K1+h(IDA1)·XA1
(3)
ω2=υ2gk1modN,τ2=2K2+h(IDA2)·XA2
(4)
然后分別將(ω1、τ1),(ω2、τ2)發送給B1,B2。
(3)收到(ω1、τ1),(ω2、τ2)后,B1,B2分別計算子代理密鑰
δ1=τ1+2α1+h(IDB1)·XB1modM
(5)
δ2=τ1+2α2+h(IDB2)·XB2modM
(6)
(4)代理簽名人分別驗證子代理密鑰有效性。驗證等式
gδi=ωi2(YAi)h(IDAi)·(YBi)h(IDBi)modN
(7)
是否成立,若成立,則接收(ωi,τi)并將δ1,δ2作為各自有效的子代理密鑰,否則,要求原始簽名部門重發。
系統公文代理簽名生成流程如圖2所示,其工作步驟如下:
(1)B1,B2任意選擇整數γ1、γ2,計算參數
R1=gγ1modN
(8)
R2=gγ2modN
(9)
并將計算結果發送給對方。
(2)收到對方的R1,R2后,計算
R=R1·R2modN。
(10)
(3)B1,B2用B的公鑰Ys對公文F加密得到密文m。
(4)對密文m計算摘要,得到密文摘要D。
(5)分別用代理密鑰δi對密文摘要簽名。計算
Si=δ1h(m1)-γ1RmodM
(11)
S2=δ2h(m2)-γ2RmodM
(12)
則B1,B2的代理簽名Sign分別為(S1、ω1、R1)(S2、ω2、R2)。
(6)B1,B2分別發送(m1、D1、Sign1)和(m2、D2、Sign2)給特定用戶B。

圖2 代理簽名生成流程圖
系統公文簽名和發文流程如圖3所示,其工作步驟如下:
(1)特定用戶B收到所有Bi發來的(mi、Di、Signi)后,驗證代理簽名有效性。計算
R=R1·R2modN
(13)
驗證等式
gsi·RiR=[ωi2(YAi)h(IDAi)·(YBi)h(IDBi)]h(mi)modN
(14)
是否成立,若成立,則表明公文的發送方為Bi。
(3)B用私鑰Xs對密文m解密,得到明文F。
(4)B用私鑰Xs對明文F加密,得到發送密文M′。
(5) 對密文M′計算摘要,得到發送密文摘要D′。

圖3 簽名生成流程圖
(6)生成最終簽名。計算S=S1+S2modN。
(7)則最終簽名Sign為(S、ω1、ω1…ωL,R)。
(8)發送m,M′,D′和Sign給指定企業或個人進行驗證。
收文方對公文進行驗證的工作流程如圖4所示,其工作步驟如下:
(1) 企業或個人收到特定用戶B發來的(m,M′,D′,Sign)后,驗證代理簽名有效性。計算
(16)
驗證等式:gs·RR=Th(m)modN
(17)
是否成立,若成立,則表明公文的發送方為B。
(2)對密文M′計算摘要D″,驗證D″=D′是否成立,若成立,表明公文是完整的。
(3)用公鑰Ys對密文M′解密,得到明文F。

圖4 簽名驗證流程圖
由公式(1)(3)(5)可知:
ω1=gα1·g1modN,
δ1=2K1+2α1+h(IDAi)·XAi+h(IDBi)·XBimodM,
gδ1=g2ki+2αi+h(IDA1)·XA1+h(IDB1)·XB1modM
=ω12·gh(IDA1)·XA1+h(IDB1)·XB1modN
因為gMmodN=1,YAi=gXA1modN,YBi=gXB1modN,
所以gδ1=ω12(YA1)h(IDA1·(YB1)h(IDB1)modN成立。
同理,δ2也滿足驗證等式。
由公式(8)(10)(11)可知:
gs1·R1R=gδ1h(m)-γ1R·gγ1·RmodN=gδ1h(m)modN,
因為gδi=ω12(YA1)h(IDA1)·(YB1)h(IDB1modN,
所以gs1·R1R=[ω12(YA1)h(IDA1)·
(YB1)h(IDB1)]h(m)modN成立。
同理,S2也滿足驗證等式。
由公式(7)和(13)(14)(15)可知:
gs·RR=gs1+s2·(R1·R2)R
=(gs1·R1R)·(gs2·R2R)

所以gs·RR=Th(m)modN成立。
本文提出的基于代理多重簽名的電子公文系統很好的實現了代理簽名的安全性和公文系統的安全性需求。
(1)代理簽名中每一個A的子代理密鑰是采用離散對數求解方法,由原始簽名人的生成參數A、代理簽名人A的私鑰,身份標識Idi和重要參數M共同生成,所以自代理密鑰具有唯一性和不可攻擊性,這保證了最終有效的代理簽名(S、ω1、ω1、…、ωL,R)的可驗證性、可區分性、不可偽造性、不可否認性和可識別性。
(2)公文的發送和接受采用基于公鑰密碼體制RSA的加解密方法并對密文摘要進行核對,保證了公文傳輸的機密性、完整性、不可否認性、不可偽造性和身份的可驗證性。
(3)代理多重簽名機構是政府增設的權威機構,公文發行前,特定用戶B需要對每一個代理簽名人發來的公文進行摘要核對,確保了公文在系統內部傳輸的安全性。
電子公文制作和傳輸系統作為一種高效、高技術的電子政務系統,是促進政府辦公信息化的重要工程,也是提高政府辦公便民、惠民宗旨的關鍵。本文在很好的保證代理簽名安全性的前提下,公文系統不需要數字證書,對用戶公鑰的驗證和簽名驗證過程是同時完成的,節約了大量的存儲空間,提高了系統利用率;通過增設代理多重簽名機構并運用強RSA假定的代理多重簽名方法,解決了聯合發文的多部門性和業務辦理流程的復雜性。
本文提出的電子公文傳輸系統還存在某些缺陷。第一,采用第二種代理簽名算法,使得簽名權的委托過程經過兩個環節,過程復雜;第二,系統僅提供了對發文方的身份驗證方法,沒有對收文方的身份進行確認。
參考文獻:
[1]張大陸,時慧.電子公文中數字簽名的設計與實現[J].計算機應用研究,2001(6):78-79.
[2]朱俊林,夏清國,曹克琦.基于XML的電子公文加密與數字簽名設計[J].微處理機,2009(2):71-73.
[3]徐林杰.基于PKI的電子公文傳輸系統設計與實現[D].中國艦船研究院,2011.
[4]劉廣志.基于WORD文檔的電子公文審批系統的設計與實現[D].山東大學,2013.
[5]呂強.基于自證明公鑰的電子公文交換系統的研究與設計[C]//中國通信學會、湖北省通信管理局.2011年通信與信息技術新進展——第八屆中國通信學會學術年會論文集.北京:中國通信學會,2011:4.
[6]Fu x,Yi L,Xiao G.A new type of proxy multi—signature schemes[J].Journal of Xidian University,2001,28(6):729-731.
[7]臧偉洲,肖岸峰,施榮華,等.一種代理多重簽名的改進方案[J].湖北工學院學報,2004(5):29-30.
[8]A Proxy Signature Schemeas Secure as Decisional Diffie-Hellman Problem[J].Wuhan University Journal of Natural Sciences,2005(1):51-55.
[9]周萍,何大可.基于強RSA假定的代理多重簽名方案[J].計算機工程,2011(4):165-167.