時間戳
數字簽名技術一種變種的應用
時間戳(timestamp),通常是一個字元序列,唯一地標識某一刻的時間。數字時間戳技術是數字簽名技術一種變種的應用。
時間戳是使用數字簽名技術產生的數據,簽名的對象包括了原始文件信息、簽名參數、簽名時間等信息。時間戳系統用來產生和管理時間戳,對簽名對象進行數字簽名產生時間戳,以證明原始文件在簽名時間之前已經存在。
可信時間戳是由聯合信任時間戳服務中心簽發的一個電子憑證,用於證明電子數據文件自申請可信時間戳后內容保持完整、未被更改。可信時間戳接入核准書的頒發,標誌著可信時間戳在檔案領域規範化應用已經開始,並將起到電子檔案和檔案數字化副本內容防篡改、保障檔案的法律憑證的作用。根據《電子簽名法》有關數據電文原件形式的要求,申請了可信時間戳認證的電子文件、電子檔案或紙質檔案的數字化副本等可視為法規規定的原件形式。
時間戳
時間戳(time-stamp)是一個經加密后形成的憑證文檔,它包括三個部分:
(1)需加時間戳的文件的摘要(digest);
(2)DTS收到文件的日期和時間;
(3)DTS的數字簽名。
一般來說,時間戳產生的過程為:用戶首先將需要加時間戳的文件用Hash編碼加密形成摘要,然後將該摘要發送到DTS,DTS在加入了收到文件摘要的日期和時間信息后再對該文件加密(數字簽名),然後送回用戶。
書面簽署文件的時間是由簽署人自己寫上的,而數字時間戳則不然,它是由認證單位DTS來加的,以DTS收到文件的時間為依據。
可信時間戳是由聯合信任時間戳服務中心(UniTrust Time Stamp Authority)根據國際時間戳標準《RFC3161》簽發的,能證明數據電文(各種電子文件和電子數據)在一個時間點是已經存在的、完整的、可驗證的,具備法律效力的電子憑證。可信時間戳是解決《中華人民共和國電子簽名法》中對數據電文原件形式要求的必要技術保障。
聯合信任時間戳服務中心(以下簡稱中心)是由國家法定授時機構“中國科學院國家授時中心(NTSC)”和“北京聯合信任技術服務有限公司”共同建設,按照有關標準和規定運營。
時間戳的主要目的在於通過一定的技術手段,對數據產生的時間進行認證,從而驗證這段數據在產生后是否經過篡改。所以時間戳服務的提供者必須證明服務中使用的時間源是可信的,所提供的時間戳服務是安全的。下面介紹最常見的幾種時間戳協議,並對各個協議的原理進行分析。
簡單的時間戳協議
在使用時間戳服務時,所涉及到的角色一般有以下幾種:提供時間戳服務的機構(Time-Stamping Authoritor),申請時間戳服務的用戶(Subscriber)和時間戳證書的驗證者(Relying Party)。時間戳機構的主要職責是為一段數據申請時間戳證書,證明這段數據在申請時間戳證書的時間點之前真實存在,在這個時間點之後對數據的更改都是可以追查的,這樣就可以防止偽造數據來進行欺騙。證書持有者把需要申請時間戳證書的數據發送給時間戳機構,時間戳機構將生成時間戳證書發送給證書持有者。在需要證明該數據未被篡改時,證書持有者展示數據所對應的時間戳證書,時間戳證書的驗證者來驗證它的真實性,而從確認該數據是否經過篡改。
最基本的時間戳協議的工作流程如下;申請時間戳服務的用戶將需要認證的數據傳輸給時間戳服務的提供者;時間戳服務的提供者將經過認證后的時間戳證書返還給用戶。
簡單時間戳協議的工作流程如圖1所示:用戶將需要認證的數據傳輸給時間戳機構,數據經過 Hash運算得到 m=Hash(M),時間戳機構將 m 和收到數據的時間 t 一起進行數字簽名,然後將生成的時間戳證書 Sign(m,t)返還給用戶。在需要驗證時間戳證書時,首先驗證時間戳證書 Sign(m,t)是否為時間戳機構簽發的,其次驗證 m 是否為用戶數據經過Hash 運算得到的結果。如果兩項驗證中有任何一項不通過,就證明用戶的數據經過了篡改;如果都通過,說明用戶的數據在時間 t 之後沒有進行過任何修改。這個方法通過對數據進行 Hash 運算,保護了用戶數據的隱私,在另一方面也減少了時間戳機構的存儲容量,為時間戳機構削減了成本。
線性鏈接協議
線性鏈接協議是為了解決時間戳機構必須完全信任這一問題而提出的。
這個協議的設計思想是為了建立起時間戳證書之間的緊密聯繫,像鏈表一樣將用戶申請的時間戳證書按照順序鏈接起來。時間戳機構將收到的數據的Hash值用鏈錶鏈接起來,把第n組數據的時間戳證書鏈錶鏈接到第n-1組數據的時間戳證書鏈表之後。
為了驗證時間戳機構是否存在欺騙行為,機構設定一個固定的時間,通過不同渠道將最近通過的時間戳證書列表公布出來。任何人都可以通過時間戳機構公布的證書列表來驗證時間戳鏈表的有效性,從而確定時間戳機構是否公正可靠。
圖2給出了8個數據的時間戳鏈表的結構示意圖,通過這種方法,時間戳機構將不同用戶的時間戳證書按照申請服務的順序鏈接起來,從而得到了一條完整的時間戳證書鏈接。一方面,時間戳機構就可以通過完整的時間戳證書鏈接來確認兩個數據申請時間戳服務的先後順序;另一方面,由於用戶的時間戳證書中會包含前一個用戶申請時間戳證書時的部分信息,而時間戳機構也無法決定用戶申請時間戳服務的次序,所以即便時間戳機構與用戶相互串通,也無法改變整個時間戳證書鏈接中用戶證書的位置。
樹型協議
樹型協議是線性鏈接協議的優化協議,這個協議把時間戳證書鏈接分解成很多小的組。在每組中,時間戳服務的使用者可以向TSA提出時間戳證書申請。可以通過建立一棵樹型結構實現整個流程,其中樹型結構的葉子是使用者的時間戳證書申請,TSA使用一個安全的Hash函數來計算樹型結構中的節點值。樹型結構如圖3所示。
樹型協議減少了時間戳機構中時間戳證書的存儲數量。要驗證Hni是否是在第n輪中申請的時間戳證書,只需要驗證能否通過Hni推算出Ni。同時此協議還可以防止對時間戳證書的篡改,用戶要同TSA互相串通,才可能對第n組中的某個時間戳證書進行篡改。但第n組的信息包含在了n+1組的時間戳中,所以可以通過n+1組的時間戳審查第n組的時間戳是否正確。
但是樹型協議也有它自己的問題。樹型協議不能驗證同組中兩個時間戳證書的相對次序,因為同組的時間戳證書都是在第n組結束時發布,但他們卻不是同時被時間戳機構收到的。所以樹型協議無法確定同一組中時間戳證書的正確順序。除非絕對相信TSA能夠保持同一組時間戳的正確次序或者減少每一組內的數據個數,但如果個數太少,系統的效率就會隨之降低。同線性鏈接協議相同,如果待驗證的時間戳證書與參考的時間戳證書中存在的時間戳證書較多時,可用性就會大大降低。
二進位協議
在線性鏈接協議的基礎上,人們又提出了二進位鏈接協議。相比於線性鏈接協議,二進位鏈接協議更具有建設性,並且實際可用。二進位鏈接協議可以定義為一個有向無環的鏈接圖。圖4給出了構造一個二進位鏈接圖Hk的步驟:
為了更直觀的看出二進位鏈接圖的構造過程,我們通過例子來說明,如圖5所示,就是一個二進位鏈接圖H5的構建過程: 對於任意的兩個頂點a和b,若k>2,且0 < # ≤ % < 2k, 如果l(a,b)是從b到a的最短驗證路徑,則有l a,b ≤ 3k − 5 。 因為二進位鏈接協議由一個常數來劃分組,然後按照上述方案來構造各個組之間的時間戳證書鏈接。所以,在驗證鏈接有效性時,二進位鏈接協議的時間複雜度要遠遠小於線性鏈接協議的時間複雜度,它的時間複雜度僅為O(logn)。
線索認證樹協議
圖6顯示的是線索認證樹協議[[W3]]的構建過程,W3鏈接很簡單,由樹的後序遍歷可 得 2 → 3 → 10 → 4 → 5 → 11 → 14 → 6 → 7 → 12 → 8 → 9 → 13 → 15 → 16 , 那麼ℎead(4) = (1,4,10) ,tail(4)=(5,15),ℎead(8)= (1, 8, 12,14) ,tail(8)=(9),則單一的時間戳為sign(4)= (4;L1,L4,L10;L5,L15),sign(8)= (8;L1,L8,L12,L14;L9)。
與二進位鏈接協議相比,線索認證樹協議的時間戳長度為klogn2,二進位鏈接協議為6klogn2。相比之下,線索認證樹協議大大減小了單個時間戳的大小。所以線索認證樹協議有著高效的驗證效率。但該協議存在的問題和二進位鏈接協議一樣,由於協議所使用的演演算法很複雜,所以在工程實現上具有一定的難度。
分散式協議
分散式協議的設計思想為在整個申請時間戳證書的工作流程中,涉及到了以下幾種角色:一組自願的時間戳證書籤發者、一個安全的Hash演演算法和一個隨機挑選簽發人員的隨機演演算法。
當用戶想對數據申請時間戳證書時,用戶先用Hash演演算法計算數據的Hash值,得到一個隨機數;在用隨機演演算法挑選隨機的簽發者。然後用戶將計算出的Hash值發送給通過演演算法隨機得到的各個簽發者。等簽發者收到用戶發來的Hash值后將收到數據的時間添加到Hash值後面,再對Hash值和時間整體進行簽名,返回簽名結果給用戶,用戶把所有的簽名作為時間戳證書存儲起來。
在此協議中,由於所有對數據Hash值進行簽名的簽發者是通過演演算法隨機產生的,所以對於隨機選出的簽發者,用戶一般不可能與之串通偽造時間戳,除非所有人都與用戶串通,但這顯然是不可能的。
在此協議的使用過程中,用戶必須要與所有選出的簽發者進行實時聯繫,及時了解簽發者發生變動的情況。當簽發者無法即時對數據簽名時,需要有一種備用機制進行處理。在此協議中,別的協議中必須的時間戳機構是不存在的。每一個用戶在自願的情況下都可以當做簽發者使用。
分散式協議的描述如下:
● ● 計算數據M的Hash值m=Hash(M),通過隨機演演算法挑選簽發者,他們收到數據M的Hash值m;
● ● 簽發者ID組G(y)中的各個簽發者給(t,ID,m)簽名,並返回時間戳簽名Sign;
● ● 最後得到的時間戳證書為[(m,ID),(Sign1,Sign2,……, Signk)]。
此協議的優點是不可能提前知道進行簽名的簽發組G(m)。為了偽造一個時間戳,用戶不可能為了偽造一個時間戳,就能與k個隨機選取的簽發者串通。但是另一方面,分散式方案也有很明顯的缺點。第一、需要提前建立簽發組,而且只能從預先建立的簽發者集合中使用演演算法隨機選出簽發者。第二、網路帶寬要求k倍於簡單時間戳協議。第三、如何在法律層面定義不同時間源的時間認證和可信度也是一個棘手的問題。因此,分散式時間戳協議如果實現仍存在相當大的難度。
通俗的講,時間戳是一份能夠表示一份數據在一個特定時間點已經存在的完整的可驗證的數據。它的提出主要是為用戶提供一份電子證據,以證明用戶的某些數據的產生時間。在實際應用上,它可以使用在包括電子商務、金融活動的各個方面,尤其可以用來支撐公開密鑰基礎設施的“不可否認”服務。
時間戳服務的本質是將用戶的數據和當前準確時間綁定,在此基礎上用時間戳系統的數字證書進行簽名,憑藉時間戳系統在法律上的權威授權地位,產生可用於法律證據的時間戳,用來證明用戶數據的產生時間,達到“不可否認”或“抗抵賴”的目標。時間戳系統的組成主要包括三個部分:可信時間源、簽名系統和時間戳資料庫:
(1) 可信時間源就是時間戳系統的時間來源,TSA系統中的所有部件的時間都必須以這個可信時間源為標準,尤其在頒發的時間戳中填寫的時間必須嚴格按照可信時間源填寫。而作為可信時間源自身,其或者就是國家權威時間部門發布的時間,或者是用國家權威時間部門認可的硬體和方法獲得的時間。
(2) 簽名系統負責接收時間戳申請、驗證申請合法性以及產生和頒發時間戳,最後將時間戳存儲到資料庫中。這個過程中,申請消息和頒發時間戳格式、時間戳的產生和頒發都必須符合規範中給出的要求。用戶向簽名系統發起時間戳申請,簽名系統獲取用戶的文件數據摘要后,再驗證申請的合法性,最後將當前時間和文件摘要按一定格式綁定后簽名返回,並保存在資料庫中。
(3) 時間戳資料庫負責保存TSA系統頒發的時間戳,而且必須定期備份,以便用戶需要時可以申請從中取得時間戳。對時間戳資料庫的存儲、備份和檢索也要求符合規範中給出的規定。
標準中規定了時間戳的申請和頒發方式、可信時間的產生方法、時間的同步和申請和頒發過程。
TSA可以通過不同的方式接收時間戳申請和頒發時間戳,但應至少支持下列四種方式的其中一種:
a.用戶通過電子郵件申請;
b.用戶通過文件傳輸申請;
c.用戶通過套接字(Socket)申請;
d. 用戶通過 HTTP 申請。
TSA應明確指出其支持的申請方式,用戶只能在此範圍內選擇如何申請。一般來說,由於WEB服務在網路中應用的普及,TSA 最少應支持用戶通過 HTTP 申請時間戳。無論 TSA 支持哪種申請方式,《時間戳規範》規定了整個申請和頒發時間戳的過程至少應該包括的一系列基本過程。TSA在產生時間戳時,可信時間源是整個系統工作的基礎。可信時間的源頭可以使用以下的一種或多種方法獲得:
a.使用某種無線接收裝置;
b.使用某種時間同步協議從一個指定網路地址獲得時間;
c.使用某種通過國家權威時間部門認證的硬體獲得時間。
TSA也可以使用多種方法產生可信時間,以保證時間的精確度。通過多種方法產生最終可信時間應該是產生的多個可信時間的折衷。由於 TSA 系統可能由多個部件組成,各部件還應根據可信時間同步部件自身的時間。在同步過程中,《時間戳規範》規定了部件同步應滿足的一系列條件。
標準中規定了對TSA的要求、密鑰標識、時間的表示格式、時間戳申請和響應消息格式、保存文件、所用MIME對象定義和時間戳格式的安全考慮。時間戳的格式是此標準的重點內容,主要參考了RFC3161。對 TSA 的要求,標準中明確了時間戳中由 TSA 滿足的一系列信息項要求。
T S A 應有專門的密鑰對時間戳消息簽名,但一個TSA可以有許多不同的私鑰以適應不同的要求,標準中規定了密鑰標識的格式。在每一個時間戳里都包含一個可信時間值,這個時間值的表示格式也在標準中進行了規定。時間戳的申請消息和相應消息是最基本的消息,標準中規定了這兩個消息的格式,並解釋了格式中的各數據項。標準還規定了時間戳申請和響應消息以文件方式保存時對文件的要求。
當 TSA 支持通過電子郵件或者HTTP 申請時間戳時,標準規定了其申請和相應消息的MIME對象定義。時間戳格式在使用時應該進行的安全考慮也在標準中進行了要求。
《時間戳規範》的標準中規定了時間戳的保存、 時間戳的備份、 時間戳的檢索、 時間戳的刪除和銷毀、 時間戳的查看和驗證。
時間戳的保存包括在TSA (時間戳機構)方的保存和在用戶方的保存。 在TSA方的保存涉及到時間戳資料庫的管理和時間戳記錄應當包含的信息項, 一般最少應包括入庫時間、 序列號、 完整編碼等。 時間戳在用戶方一般由用戶自行保存。
時間戳的備份在標準中規定了一系列要求, 如定期備份、 備份介質等。
時間戳的檢索在標準中規定了至少三種檢索方式, 包括分別按照入庫時間、 序列號、 完整編碼檢索。
當 TSA系統由於內部錯誤或者外部攻擊導致產生錯誤的時間戳時, 標準規定了刪除時應遵循的要求。 在確定某時間戳已經喪失其價值后, 標準規定了銷毀時應遵循的要求。
時間戳的查看和驗證在標準中規定了TSA應該給用戶提供一個方便安全的方法查看其頒發的時間戳, 例如提供一個查看軟體等。 TSA還應該給用戶提供一個方便安全的方法對其頒發的時間戳進行驗證, 例如提供一個驗證軟體或者通過網際網路驗證等。
由於時間戳在電子取證中的重要作用及其法律地位,時間戳系統必須擁有極高的安全級別, 安全保護應包括物理環境安全和軟體安全。