您好,登錄后才能下訂單哦!
這篇文章給大家介紹如何在Adobe Acrobat Reader DC中驗證電子簽名,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
1.1 CA數字證書
數字證書就是互聯網通訊中標志通訊各方身份信息的一系列數據,提供了一種在Internet上驗證您身份的方式,其作用類似于司機的駕駛執照或日常生活中的身份證。它是由一個由權威機構—–CA機構,又稱為證書授權,(Certificate Authority)中心發行的,人們可以在網上用它來識別對方的身份。 數字證書是一個經證書授權中心CA機構數字簽名的包含公開密鑰擁有者信息以及公開密鑰的文件。最簡單的證書包含一個公開密鑰、名稱以及證書授權中心的數字簽名。
1.2 X.509格式證書
X.509 是密碼學里公鑰證書的格式標準。X.509 標準規定了證書可以包含什么信息。 X.509 證書里含有公鑰、身份信息(比如域名、單位名稱或個人姓名等)和簽名信息(如證書簽發機構CA的簽名)。 對于一份經由可信的證書簽發機構簽名的證書,證書的擁有者就可以用證書及相應的私鑰來對文檔進行數字簽名。 除此之外X.509還附帶了證書吊銷列表和用于從最終對證書進行簽名的證書簽發機構直到最終可信點為止的證書合法性驗證算法。
1.3 時間戳
時間戳(Time stamp)是一種計算機術語,是指電子文件產生的時間。個人計算機產生電子文件后的時間取決于該臺計算機設備的時鐘,而此類時鐘可以任意修改,因此在普通個人計算機設備上形成的電子文件的時間戳因難以證明不可篡改性而沒有一般意義上的證據效力。
可信時間戳是由權威可信時間戳服務中心簽發的一個能證明數據電文(電子文件)在一個時間點是已經存在的、完整的、可驗證的,具備法律效力的電子憑證,可信時間戳主要用于電子文件防篡改和事后抵賴,確定電子文件產生的準確時間。一個國家的標準時間是具有權威性的,每個國家的標準時間由各國權威授時中心管理。在中國可信時間戳服務機構的法定時間源由中國科學院國家授時中心授時。 目前在中國能夠提供可信時間戳服務的機構有:ZJCA、CFCA等。
1.4 文檔哈希值(摘要值)
哈希值,又稱:單向散列函數(或散列算法,又稱哈希函數或哈希摘要)是一種可以通過散列函數把任意消息或任意數據壓縮成摘要的方法。散列函數將數據打亂混合,重新創建而得到的這個值叫做散列值(哈希值或摘要值)。 文件哈希值是根據文件的內容的數據通過哈希運算得到的數值, 不同的文件(即使是相同的文件名)得到的哈希值是不同的, 所以哈希值就成了每一個文件里的身份證。 不同哈希值的文件被認為是不同的文件,因為相同哈希值的文件,其內容肯定是完全相同(即使文件名不同)。 在現在密碼體系的數字簽名中單向散列函數也是重要的一部分。對文件哈希值(又稱“數字摘要”)進行簽名,在PDF電子簽名中可以認為與對文件本身進行數字簽名是等效的,可以校驗一份文件的完整性。
在Adobe Reader DC 中的“簽名屬性”對話框中的“有效性小結”,該小結可能顯示以下消息之一: 簽名日期/時間來自簽名者計算機上的時鐘 時間建立在簽名者計算機的當地時間基礎上。 簽名包含時間戳 簽名時使用了時間戳服務,且本機已安裝時間戳根證書與時間戳服務之間建立信任關系。 簽名包含時間戳,但無法驗證該時間戳 簽名時使用了時間戳服務,但本機未將時間戳服務根證書添加到可信任身份列表中。 簽名包含時間戳,但時間戳已過期 Reader根據當前時間驗證時間戳。如果時間戳服務的證書在當前時間之前已過期,將顯示該消息。要讓Reader接受過期時間戳,請在“簽名驗證首選項”對話框(“首選項”>“簽名”>“驗證: 更多”)中選擇“使用已過期時間戳”。驗證包含已過期時間戳的簽名時,Reader中會顯示一條警告消息。
1.自應用本簽名以來,“文檔”未被修改 :這類驗簽信息主要出現在簽署者對PDF文件內容簽名后其簽名所保護的PDF文件內容未被修改。
2.本修訂版文檔未被更改,在此修訂版之后,文檔已被更改 :這類驗簽信息主要出現在簽署者對PDF文件內容簽名后,在其簽名所保護的PDF文件內容之外其他地方被修改。 如一個PDF文件簽署者A填寫與A相關信息簽名后,簽署者B又填寫與B相關的信息后再簽名。
3.本簽名“(簽名的字節范圍無效)”的格式或其包含的信息出現錯誤: 這類驗簽信息主要出現在簽署者對PDF文件內容簽名后,其簽名所保護的PDF文件內容范圍被修改(即簽名被篡改)。
4.本簽名“(支持信息:SigDict/Contents illegal data)”的格式或其包含的信息出現錯誤 :這類驗簽信息主要出現在簽署者對PDF文件內容簽名后,其簽名所保護的PDF文件中的Contents信息被修改含有格式不正確的數據(即簽名被篡改)。
PDF的簽名標準是 PAdES。其簽名后的PDF文檔格式如下:
1.使用CA數字證書進行PDF文件簽名過程
假設一個用戶A需要對一份電子合同原文PDF文件進行簽署,則電子簽名服務首先對電子合同原文PDF文件進行哈希算法,得到電子合同原文PDF文件的哈希值。然后使用用戶A的CA私鑰證書對哈希值進行加密,把加密得到的電子簽名插入到電子合同PDF文件中發送給用戶B。
2.使用CA數字證書進行PDF文件驗簽過程
用戶B收到簽署后的電子合同PDF文件(帶電子簽名的電子合同)后,先對電子合同原文PDF文件用哈希算法得到哈希值,然后使用用戶A的CA證書公鑰對PDF文件中的電子簽名進行解密,解密得到的哈希值與電子合同原文PDF文件計算的哈希值進行比對,如果哈希值一致,則證明電子合同確實是A所簽署的,并且沒有被纂改過,也就達到驗證“簽名未改、原文未改”的目的。
3.PDF文件簽名和驗簽過程說明
1)將簽名的PDF先轉換為字節流。
2)將整個PDF文件寫入磁盤,并在簽名字典中留有適當大小的空間(簽名值保存的空間,ByteRange數組保存空間)。ByteRange是一個包含四個數字的數組。 每對值中,第一個數字是:需要hash的字節流的開頭位置(從頭開始,從0開始)。 第二個數字是:該字節流的長度。 這兩對定義了兩個字節序列,用于定義要hash的內容。 簽名值存儲在第一個序列的結尾和第二個序列的開頭之間的/Contents鍵中。 在下圖,計算字節0到839和960到1200的哈希值。
3)根據文件中的偏移量知道簽名值的位置后,將真實值以覆蓋寫方式寫入ByteRange數組。 由于字節偏移量不得更改,因此新數組語句后面的額外字節將被零覆蓋。
4)使用例如SHA-256之類的哈希算法,計算由ByteRange值指定的文檔范圍的哈希值。 注:Acrobat采用的方法是:對整個PDF文件進行哈希計算,而獲得文檔簽名的哈希值(從字節0開始,以物理文件中的最后一個字節結束,但不包括簽名值字節)。
5)計算出哈希值后,用簽名者的私鑰進行加密,并生成十六進制編碼的PKCS#7對象簽名對象。
6)簽名對象作為/Contents的值,保存到文件中。 任何未用于簽名對象的空間都將被零覆蓋。
在中國CA機構所頒發的CA數字證書都是受工信部進行監管的,CA機構需要按照相關法規進行業務開展。 由某個CA中心的頂層根證書給下面的二級根證書簽名,然后再由二級根證書給具體的個人或企業用戶簽發證書。
CA機構擁有自己的公鑰和私鑰,CA機構使用私鑰給用戶(包括CA機構中心其他級別根證書)簽發數字證書,具體簽發過程如下:
(1)將用戶的身份信息和用戶的公鑰信息,按照特定的格式組成數據D。
(2)使用哈希摘要算法對數據D進行計算得到哈希值H。
(3)使用CA中心的私鑰對哈希值H進行加密得到數字簽名S。
(4)將用戶的身份信息、用戶公鑰信息和數字簽名S,按照特定格式組成最終的CA數字證書。其CA數字證書中的“指紋”項記錄的就是CA中心私鑰簽名后的數字簽名S值。
數字證書驗簽過程如下:
(1)用CA數字證書中讀取到證書指紋(數字簽名S值)。
(2)利用CA中心公鑰對數字簽名S值進行解密。
(3)如果可以成功解密則可以說明用戶的CA數字證書是某CA中心頒發。
關于如何在Adobe Acrobat Reader DC中驗證電子簽名就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。