摘要:本文針對當前電子合同的易篡改、易仿造以及難以推廣等問題,基于文本水印和數字簽名技術提出了一種電子合同簽訂模型,該模型基于網絡平臺,可以廣泛應用于電子商務等領域。
關鍵詞:文本水;電子合同;信息完整性;不可否認性
A online model of Electronic Contract based on Text Watermarking
Yue Lin, Xiaojie Zhang
(The Computer College of South China normal university, Guangzhou 510631, Yue Lin)
Abstract:This paper mainly focus on the solution to the current problems that electronic contract is easily tampered, easily counterfeited and difficult to promote. We put forward an electronic contract model based on the text watermarking and digital signature technology. This model is based on the network platform, thus it can be widely used in electronic commerce, etc.
Key words:Text watermarking; Electronic contract; Information integrity; Non-repudiation
1 引言
電子合同的概念包含“電子”與“合同”兩個關鍵詞,即我們通常意義上所指的以“數據電文”形式擬定的合同。根據聯合國貿易法委員會1996年12月通過的《電子商務示范法》第2條的定義,數據電文是指“經由電子手段、光學手段或類似手段生成、發送、接受、或儲存的信息,這些手段包括但不限于電子數據交換(EDI)、電子郵件、電報、電傳或傳真”[1]。如今,信息的傳播已經逐步趨向于電子化,在電子商務中若還堅持使用書面合同無疑使電子商務的便捷性、高效率大打折扣。電子合同伴隨著越來越成熟的互聯網技術一同發展著,為電子商務提供了一種嶄新的業務合作方式。通過數據電文簽訂電子合同,制定雙發商務合作,迅速把握市場信息展開電子商務活動,正受到商業人士的密切關注。
在應用中電子合同存在的問題,不同于傳統B2C商業模式中的誠信問題,而主要是電子化了的合同,相對于紙質合同,如何確保其作為一份電子數據所應具有的與紙質合同相同的法律效應,如何驗證合同簽署人的身份,并確保合同簽訂人對于電子合同的不可抵賴性,即當出現合同糾紛時,如何通過電子合同有效地解決糾紛。歸根結底,也就是電子合同的法律效力問題。1999年的《合同法》及2004年的《電子簽名法》的頒發,很大程度上保障了電子合同的法律效應。
怎樣有效地驗證電子合同當事人的身份,是電子合同簽訂的關鍵問題。一般方法是采用數字簽名。然而有些簽名算法自身存在缺陷,比如數字簽名技術DSA 的亂數生成技術就存在著重大缺陷[2],使得數字簽名被破譯的可能性大幅提高。因此只有采用更為健壯安全的數字簽名算法,才能在根本上推動電子合同的廣泛應用。本文在數字簽名的基礎上,融合了數字水印技術,提出一種安全可靠的電子合同在線簽訂模型。
2 基于文本水印的在線電子合同簽訂模型
2.1 系統模型概述
在線電子合同簽訂系統分客戶端和服務器端,各自處理不同的事務。假設合同簽訂雙方Alice和Bob登錄本地的客戶端,進行合同內容的編寫和協商,合同由雙方輪流編寫。當Alice和Bob雙方都確認合同,則合同變成不可編輯模式,且交付服務器端進行下一步的處理。服務器對合同進行處理,嵌入Alice、Bob雙方的數字水印,生成電子合同,交付給客戶端。電子合同的保密性和完整性主要由加密和數字簽名來保障。流程圖如圖1。
圖1 用戶流程圖
在上述流程中,用戶需要向PKI認證機構(Certification Authority)申請個人數字簽名,獲取其私鑰和公鑰。然后憑借其私鑰、公鑰注冊到系統中,系統把該用戶的帳號同他的公鑰綁定到一起。當用戶登錄系統時,系統除了驗證其帳號、密碼正確性外,還得驗證公鑰和其私鑰是否匹配,這樣子就保障了該用戶身份是可信的。
2.2 客戶端和服務器端的工作流程
假設合同簽訂雙方客戶端為C1、C2,服務器端為S,合同文檔為F,以下對客戶端和服務器端的處理過程進行詳細論述。
1. C1、C2對F進行Hash運算,分別生成散列值H1、H2;
2. C1使用用戶的私鑰SY1對H1加密,生成密文M1;C2也使用SY2對H2,生產密文M2;C1、C2分別將M1、M2發給S,對信息加密的目的主要在于確保網絡傳播的安全可靠;
3. C1、C2分別等待S的驗證結果,若驗證通過則進入步驟4,若驗證不通過則重新發送M1、M2或修改合同。
4. C1上的用戶從S獲取C2上用戶的信息,C2同樣從S獲取C1用戶的信息(用戶數字證書中相關的標識信息),此時C1、C2應詢問用戶是否確認嵌入水印,若用戶確認嵌入水印,則通知系統,否則放棄合同簽訂。
其處理過程如下圖2所描述。
圖2 客戶端處理流程
服務器端相對客戶端來說,服務器主要驗證用戶提交上來的合同內容是否一致,并在用戶確認嵌入水印時生成電子合同,詳細流程如下:
1. S確認用戶雙方完成對合同內容的編輯后,接收兩位用戶客戶端發送過來的關于合同散列值的密文M1、M2,分別使用用戶的公鑰GY1、GY2解開密文,得到用戶各自的關于F的摘要H1、H2;
2. S生成一份F的摘要H3,判斷H1=H2=H3是否成立,若不是,說明某一個用戶在上傳合同到系統端后又對合同內容進行修改或者網絡傳輸出錯,系統應該發出消息,詢問是否需要再次修改。若H1=H2=H3成立,則進行用戶雙方身份的再次確認,把雙方的用戶信息驗證交叉發給兩個客戶端,然后等待用戶確認同意嵌入水印生成電子合同;
3. 當雙方用戶都確認后,S用M1、M2加上時間戳、檢驗碼、合同流水號等信息作為數字水印W,嵌入到F中;
4. S將合同流水號、時間戳以及F的信息摘要(未簽名)歸檔,也將合同副本發送給用戶雙方。
服務器端的處理過程如下圖3。
圖3 服務器處理過程
由上面客戶端和系統后臺端的處理過程中,可以看出整個系統模型關鍵的步驟是對合同文本內容進行散列,然后是數字簽名算法的使用,以及數字水印的嵌入和驗證過程。下面對水印算法的選擇進行詳述。
2.3 文本水印算法的基本要求
針對我們使用的模型,我們對水印算法提出了以下要求:
1. 根據合同的文件格式,選擇文本水印,最后生成pdf文檔的電子合同。
2. 加在合同中的水印必須是不可見的。
3. 水印信息雖然是不可見的,但能夠驗證其存在并提取出該水印內容。
4. 文本水印里應包含文本的信息摘要(包含數字簽名),且服務器也保存一份電子合同的信息摘要(沒有數字簽名)。當驗證用戶雙方身份時,對水印進行分離,提取出電子合同文本信息摘要,根據用戶雙方的公鑰進行解密,驗證用戶雙方的身份認證。當驗證文本完整性時,可將解密了的文本信息摘要,與服務器中的信息摘要進行對比就可以達到目的。從而提供不可否認機制和文本完整性驗證,確保用戶雙方的權利與義務。水印里包含信息摘要的必要性見下文對系統模型的合理性分析。
5. 對水印信息量的要求:水印信息一共包括兩份文本摘要(兩位用戶的摘要都要有)、一份系統時間戳、若干位的檢驗碼、唯一的合同流水號。其中Hash摘要的結果是固定大小的信息,如SHA-1算法摘要結果為160位,兩份一共是320位。時間表示可采用IEEE規定的64位值,可表示0001年1月1日到9999年12月31日的日期以及從午夜12:00:00到晚上11:59:59.9999999 的時間。另外,為了標識不同的合同,可用30位的合同流水號(最多標識十億份合同)。再加上若干位的檢驗碼,最后嵌入到合同的水印估算需要420位以上。而一份空白的合同模板就有863個字符(以售貨合同為例),因此平均每兩個字符要求嵌入一個以上的有效信息位,這在文本合同中是對信息量要求比較高的。
針對以上討論,本系統模型可參考使用文獻[6]提出的算法,通過編程修改WORD文檔中字符的三個特殊屬性來達到嵌入信息的目的,有效信息密度達到1位/字符,同時也是不可見的文本水印。
2.4 水印嵌入和提取流程
上文對系統模型工作原理及水印算法的選擇進行了討論,下面就水印的嵌入和提取驗證分別進行描述。
嵌入過程及流程圖如下:
1. S將兩位用戶端發來的密文M1、M2(用戶私鑰加密過的文本摘要)、系統時間戳、差錯檢驗碼以及合同流水號合成水印信息W?梢圆捎弥苯悠唇拥姆椒ê铣,這樣并不會降低安全性。
采用選定的水印嵌入算法,將水印信息嵌入到合同文本里。如果算法的嵌入信息量夠大,可以采用冗余嵌入的方式,以提高安全性。
圖4 水印嵌入流程圖
提取驗證過程:
1. 用密鑰從附有水印的電子合同中提取出水印信息以及合同文本內容。
2. 對水印信息進行差錯檢驗,如檢驗出錯,則水印信息無效。如檢驗成功,則將水印信息進一步分離為兩位用戶的密文M、時間戳以及合同流水號。
3. 利用用戶的公鑰對M進行解密,得到保存在水印里的文本信息摘要,記為H。再將第1)步里分離出來的合同文本內容進行文本HASH運算,得到的文本信息摘要記為H’。將H與H’進行匹配,如果二者完全一致,則用戶的身份和文本的完整性同時得到驗證。值得注意的是,M是有兩份的,意味著要分別對兩位用戶的身份進行匹配。
4. 最后,在利用合同流水號以及時間戳來對合同的版本或簽訂時間進行驗證。
流程圖如圖5所示:
圖5 水印提取驗證流程圖
3 模型的合理性分析
電子合同簽訂系統的合理性主要是指合同簽訂與傳輸過程的安全性,以及簽訂人身份的可驗證性和合同內容的完整性。
在保障合同簽訂的安全性方面,首先用戶必須使用其私鑰對以系統提供的隨機數加密,形成密文,隨后將密文發送給系統,系統解密驗證隨機數的正確與否。為了防止釣魚網站等欺騙用戶,系統發送給用戶的隨機數要用系統的私鑰加密,而用戶接收到隨機數后首先要用系統的公鑰解密。這種雙重驗證通過之后,用戶便成功登錄系統,以后便可通過加密機制達到與系統的安全通信。
在簽訂人身份的可驗證性上,首先,用戶在系統注冊時必須將帳號和在權威機構領取的數字證書綁定,這樣系統便可以通過用戶數字證書來確認用戶的身份。其次,假設用戶雙方為Alice和Bob,則Alice、Bob簽訂合同前必須登錄系統。所以用戶Alice便可通過系統間接地驗證Bob的身份,Bob也以同樣方式驗證Alice。于是合同簽訂過程用戶的身份得以驗證。另外,由于合同中水印信息包括簽署雙方用私鑰加密過的文本信息摘要,則容易知道這份加密過的摘要是獨一無二且只能由私鑰主人生成的。這是因為文本的摘要是獨一無二的,重復的概率是極小的。而用戶的私鑰也是獨一無二的,用私鑰加密過的文本摘要只能用唯一對應的公鑰來解密。假設某摘要h被某一私鑰k加密,生成密文m,若用某一公鑰g可正確解開該密文,而g為Bob所有,則可證明m是由Bob加密h生成的。于是合同簽訂之后,簽署人的身份得以驗證。
合同內容的完整性既包括簽訂時用戶看到的合同內容是正確的和完整的,也包括取證時所用的合同內容是正確的和完整的。我們的模型通過在用戶發送加密過的文本摘要給系統,通過系統將其解密,得到用戶的摘要與系統本身生成的文本摘要進行匹配,從而確保合同文本在編輯、傳輸過程中沒有出錯。取證時合同的完整性則是用嵌入到合同里的文本摘要來驗證的。合同文件在嵌入水印之后其編碼必然會產生一定的變化,因此對合同文件進行Hash運算,在嵌入水印的前后得到的散列值必然是不同的。所以應該在合同嵌入水印之前獲取其散列值,并將該散列值既保存在服務器里,又作為水印信息的一部分嵌入到合同文件里。而驗證時首先提取出合同里的水印信息,將水印信息里用戶加密過的摘要進行解密,得到保存在合同里的文本摘要,將解密得到的摘要與服務器里保存的摘要進行匹配,則可驗證合同內容是正確的和完整的。
2 結論
本文根據電子合同的存在問題,提出了一個采用了數字簽名和文本水印技術的在線電子合同簽訂模型。該模型通過數字簽名算法,確保了不同用戶在網絡上的身份認證,也保障了用戶在網絡上開展商務業務的安全性。數字水印技術在電子合同中的應用消除了僅僅采用數字簽名的電子合同可能存在的安全隱患,保證了電子合同完整性和不可否認性。
參考文獻 (References)
[1]將志培.網絡與電子商務法[M].北京:法律出版社, 2000年12月版.
[2]謝鑫君,顧偉楠. 基于數字水印技術的安全電子合同系統[J].計算機應用與軟件,2005,22(1):124-126.
[3]戈英民,鄭崗. 一種利用字符特征變化的文本數字水印方法[J].微型電腦應用,2005,21(3):36-39.
[4]劉玉玲,孫星明. 通過改變文字大小在WORD文檔中加載數字水印的設計與實現[J]. 計算機工程與應用,2005,12:110-112
[5]謝君. 基于標點符號的中文文本[D]. 北京:北京化工大學計算機應用技術,2008年博士論文.
[6]趙潔. 適用于中英文的文本數字水印研究[D].四川:西南交通大學密碼學,2005級碩士論文.
[7]唐承亮,肖海青,向華政. 基于文字RGB顏色變化的脆弱型文本數字水印技術[J]. 計算機工程與應用 .2005,36:6-8
[8](美) Mohan Atreya等著 賀軍等譯. 數字簽名[M]. 北京:清華大學出版社. 2003版.
作者簡介:
林躍(1988—),男,廣東省汕頭市人,在讀本科生,2007年入讀華南師范大學計算機學院,學習專業為計算機科學與技術,現在正致力于在線電子合同簽訂平臺的實現。
10331