pdf文檔下載鏈接: https://www.adobe.com/devnet-docs/etk_deprecated/tools/DigSig/Acrobat_DigitalSignatures_in_PDF.pdf
PDF中的數(shù)字簽名(Digital Signatures in a PDF)
本文檔描述了在PDF文檔中如何表示數(shù)字簽名,以及PDF語言支持哪些與簽名相關(guān)的特性。Adobe-Reader和Acrobat實(shí)現(xiàn)了PDF s的所有功能,因此為基于公鑰基礎(chǔ)設(shè)施(PKI)技術(shù)的數(shù)字?jǐn)?shù)據(jù)身份驗(yàn)證提供了全面的支持。第三方開發(fā)人員可以以Acrobat插件簽名處理程序的形式定義他們自己的機(jī)制。
數(shù)字簽名可用于過去使用傳統(tǒng)鋼筆和墨水簽名的許多類型的文檔。然而,僅僅存在數(shù)字簽名并不能充分保證文檔就是它看起來的樣子。此外,政府和企業(yè)設(shè)置經(jīng)常需要對其簽名工作流施加額外的約束,例如在簽名期間和之后限制用戶的選擇和文檔行為。
由于這些原因,PDF語言為兩大類任務(wù)提供了以下機(jī)制:
- 通過驗(yàn)證簽署的文件沒有被更改,而且是由收件人信任的人簽署的,完全信任電子文件。
- 創(chuàng)建和控制功能豐富且安全的數(shù)字簽名工作流。
不論P(yáng)DF查看應(yīng)用程序如何,PDF語言都支持以下功能:
- 標(biāo)準(zhǔn)支持(Standards support )
- 支持替代簽名方法(Support for alternate signature methodologies )
- 支持兩種簽名類型(Support for two signature types )
- 簽名互操作性(Signature interoperability)
- 強(qiáng)大的算法支持(Robust algorithm support)
- 多重簽名(Multiple signatures )
- 增量更新(Incremental updates )
- 查看以前簽名的文檔版本(Viewing previously signed document versions )
- 比較當(dāng)前和已簽名的文檔版本(Comparing current and signed document versions)
- 鎖定表單字段 ( Locking form fields)
- 控制簽名后更改 ( Controlling post-signing changes )
- 法律內(nèi)容證明 ( Legal content attestations )
- 通過基于文檔的權(quán)限啟用功能 ( Enabling features via document-based permissions )
- 豐富的證書處理 ( Rich certificate processing)
- 通過種子值控制簽名工作流 ( Controlling signature workflows via seed values)
6.1 簽名在pdf中如何呈現(xiàn) (Representing a signature in a PDF file)
pdf中的簽名是包含在一個(gè)簽名字典里的。字典里的對象由pdf Reference所定義。這個(gè)簽名字典能引用其他字典或者被其他字典引用,如圖1所示。(Figure 1 PDF language dictionaries)這些詞典中的條目確定了簽名的性質(zhì)和特征,并通過擴(kuò)展確定了用于處理簽名數(shù)據(jù)的任何PDF查看器可以使用哪些數(shù)據(jù)。

圖1 中 TransfomMethod sets what TransformParams are used.應(yīng)該是"轉(zhuǎn)換方法轉(zhuǎn)成所需要的參數(shù)"
字典有: 權(quán)限字典,字段字典,字段鎖字典,種子值字典,簽名字典(簽名處理器,簽名格式,文件范圍,PKCS簽名值,其他),簽名引用字典,證書SV字典
轉(zhuǎn)換方法有: FieldMDP(Field level permissions 字段級權(quán)限),DocMDP(證書簽名),UR3(各種權(quán)限)
The entries in these dictionaries determine the nature and features of the signature, and by extension, what data can be available to any PDF viewer designed to process the signature data.
這些詞典中的條目確定了簽名的性質(zhì)和特征。并且這些詞典通過擴(kuò)展確定了用于處理簽名的PDF查看器可以使用的那些數(shù)據(jù)。
雖然其他查看器對PDF語言特性的支持可能各不相同,但Acrobat系列產(chǎn)品支持所有這些特性。在較高的層次上,這些特性可以分為以下幾個(gè)類別:
- 向文檔添加數(shù)字簽名。
- 檢查簽名的有效性
- 控制簽名工作流的權(quán)限和限制。
當(dāng)然,PDF包含與這些活動相關(guān)但對它們不是必需的特性。例如,支持添加簽名原因與簽名無關(guān),但對許多工作流都很有價(jià)值。
6.2 公鑰基礎(chǔ)設(shè)施(Public key infrastructure)
PDF的數(shù)字簽名功能是為與企業(yè)和政府環(huán)境中部署的主流公鑰基礎(chǔ)設(shè)施(PKI)相關(guān)的所有標(biāo)準(zhǔn)兼容而設(shè)計(jì)的。PKI是用于創(chuàng)建、分發(fā)、管理和撤銷以及使用數(shù)字id(包含在簽署PDF時(shí)使用的公鑰/私鑰對)的人員、策略、過程、硬件和軟件的集合。
public key infrastructures (PKI) 公鑰基礎(chǔ)設(shè)施
在PDF簽名工作流中,PKI一般是指數(shù)字ID發(fā)行方、用戶、管理員以及這些工作流中使用的任何硬件或軟件。實(shí)現(xiàn)并遵守PDF語言規(guī)范的PDF查看器能夠以無縫且健壯的方式與所有這些組件交互。

圖2 在簽名工作流里的常見PKI元素
企業(yè)PKI元素(Enterprise-owned PKI elements): 私鑰備份存儲,撤銷數(shù)據(jù)存儲(revocation data store: Local certificate revocation lists (CRL 證書撤銷列表),LDAP CRL,online status check. etc ),公鑰證書存儲( acrobat store, Windows cert. sotre,LDAP store, etc.)
公司或者三方時(shí)間戳服務(wù)器(Company or third party timestamp server):
根證書: CA自簽名(Root cert: CA self signed) :(1. 過渡證書 (intermediate certificate)) (Often the company issues ID to employees. Can define policies, trust anchor, etc. )公司通常會向員工發(fā)放身份證??梢远x策略、信任錨等。 (2. 數(shù)字id/最終實(shí)體證書 digital id/end entity cert)存儲在簽名者機(jī)器、令牌、服務(wù)器等上的數(shù)字ID。 Digital ID stored on the signer's machine, token, server, etc.
猜測:大概是根證書給企業(yè)過渡證書,然后企業(yè)通過過渡證書使用相關(guān)工具生成用戶的證書。
在簽署一份重要的紙質(zhì)文件時(shí),人們通常在提供了令人滿意的身份證明后,當(dāng)著公證人或其他可信賴的權(quán)威機(jī)構(gòu)的面簽字。因?yàn)楣C人是值得信賴的,所以你可以信任公證人的簽名。使用PKI是一種提供類似信任的方法。
與提供信任直接相關(guān)的一些常見PKI組件(Some common PKI components directly related to providing trust include:):
證書頒發(fā)機(jī)構(gòu)(Certificate authority (CA)):出售或發(fā)布數(shù)字id(如Verisign或Geotrust)的最終信任權(quán)威。CA簽署它自己的證書(自簽名),它的證書通常是證書鏈頂部的“根”證書。
過渡證書/中間證書(Intermediate certificates (ICAs)):一種CA的類型,其證書位于最終實(shí)體和根證書之間的證書鏈中。證書不是自簽名的,ICA經(jīng)常提供諸如策略、時(shí)間戳、撤銷列表等服務(wù)。
最終實(shí)體證書(End entity certificate (EE))簽名者的證書和簽名鏈的最后一個(gè)元素。根據(jù)定義,最終實(shí)體證書不包含基本約束值CA。
數(shù)字ID(Digital ID):一種基于ITU-TX.509 v3標(biāo)準(zhǔn)的電子數(shù)據(jù)證明,與個(gè)人或?qū)嶓w相關(guān)聯(lián)。它存儲在電腦或網(wǎng)絡(luò)上有密碼保護(hù)的文件、USB令牌、智能卡等。數(shù)字ID包含公鑰證書、私鑰和其他數(shù)據(jù)。
公鑰證書(Public key certificate):一個(gè)文件,其中包含公鑰/私鑰對的數(shù)字公鑰部分,以及用于定義證書所有者、有效期和用法的相關(guān)擴(kuò)展名和屬性。
私鑰(Private key):PKI系統(tǒng)中的一種私密密鑰,用于驗(yàn)證傳入的消息和對傳出的消息簽名。在這些密鑰生成期間,私鑰總是與它的公鑰配對。
雖然數(shù)字ID及其發(fā)行實(shí)體是任何PKI的核心,PKI還包括許多其他企業(yè)擁有和第三方項(xiàng)目。PKI管理員通常會管理數(shù)字id、LDAP服務(wù)器、時(shí)間戳服務(wù)器、撤銷列表和其他條目的創(chuàng)建和分發(fā)。PDF語言支持與這些組件接口所需的所有數(shù)據(jù)。
6.2.1 PKI, PDF, and signing(公鑰基礎(chǔ)設(shè)置,pdf[The Portable Document Format (PDF) 便攜式文件格式 ]和簽名)
PDF支持將簽名嵌入到文檔本身,而不是作為單獨(dú)的數(shù)據(jù)管理或添加到現(xiàn)有的文檔格式中。這意味著查看應(yīng)用程序可以執(zhí)行某些類型的修改,而不會使簽名失效。對于其他數(shù)字簽名格式,用戶可能需要兩個(gè)應(yīng)用程序來同時(shí)處理文檔和簽名,或者需要為每個(gè)簽名文檔管理兩個(gè)獨(dú)立的文件。
PDF文檔中的每個(gè)數(shù)字簽名都與簽名處理程序相關(guān)聯(lián)。簽名被放置在PDF簽名字典中,其中包含將用于處理該簽名的簽名處理程序的名稱(圖3)。內(nèi)置在adobeacrobat中的簽名處理程序利用了公共/私有密鑰(PPK)加密技術(shù)。PPK基于這樣一種思想:使用私鑰加密的值只能使用公鑰解密(相反的情況也可能發(fā)生在為特定接收者加密文檔時(shí),但這不在本文檔的范圍之內(nèi))。
在簽署PDF時(shí),簽名者的證書被嵌入到PDF文件中。圖3顯示了存儲在用戶硬件設(shè)備上的數(shù)字ID與嵌入在PDF文檔中的簽名值之間的關(guān)系。簽名值還可以包括其他信息,如簽名圖形、時(shí)間戳和其他特定于用戶、系統(tǒng)或應(yīng)用程序的數(shù)據(jù)。

簽名流程如下:
- 要簽名的文檔被轉(zhuǎn)換為字節(jié)流。
- 將整個(gè)PDF文件寫入磁盤,并為簽名值留下合適大小的空間,同時(shí)在ByteRange這個(gè)字段中保留最壞情況下的值。
ByteRange 是一個(gè)由四個(gè)數(shù)字組成的數(shù)組。每對中的第一個(gè)數(shù)字是要包含在散列中的字節(jié)流的開始在文件中的偏移量(從開始,從0開始)。第二個(gè)數(shù)字是該流的長度。這兩對定義了定義要散列的內(nèi)容的兩個(gè)字節(jié)序列。實(shí)際的簽名值存儲在第一個(gè)序列結(jié)束和第二個(gè)序列開始之間的/Contents鍵中。在圖4中,哈希是為0到839字節(jié)和960到1200字節(jié)計(jì)算的。(其實(shí)說了這么一段,看圖最簡單)

一旦根據(jù)文件中的偏移量知道了簽名值的位置,就會使用正確的值覆蓋ByteRange數(shù)組。因?yàn)樽止?jié)偏移量不能更改,所以新array語句后面的額外字節(jié)將被零覆蓋。
整個(gè)文件的哈希是通過使用SHA-256之類的哈希算法,使用由實(shí)際字節(jié)數(shù)值指定的字節(jié)計(jì)算的。
Acrobat總是計(jì)算整個(gè)PDF文件上的文檔簽名的散列,從字節(jié)0開始,到物理文件中的最后一個(gè)字節(jié)結(jié)束,但不包括簽名值字節(jié)。哈希值使用簽名者的私鑰加密,并生成十六進(jìn)制編碼的PKCS#7對象簽名對象。
簽名對象放在磁盤上的文件中,覆蓋占位符/內(nèi)容值。任何未用于簽名對象的空間都將被零覆蓋。
在Acrobat中重新加載PDF文件,以確保內(nèi)存中的版本和磁盤上的版本相同。
提示:這是一個(gè)高層視圖。有關(guān)顯示一些應(yīng)用程序級配置選項(xiàng)的更詳細(xì)的快速鍵,請參閱簽名創(chuàng)建工作流(6.4 Signature creation workflow)。
6.2.2 PKI, PDF and signature validation(簽名驗(yàn)證)
由于私鑰和公鑰都只是數(shù)字,所以任何人都可以使用任意數(shù)量的工具生成公鑰和私鑰對。Acrobat等應(yīng)用程式提供一種機(jī)制,以生成自簽署證書,將簡單的用戶提供的身分與由應(yīng)用程式生成的公鑰綁定;然后使用對應(yīng)的私鑰對其進(jìn)行簽名。顯然,沒有什么可以阻止某人用別人的名字生成自簽名證書。因此,未知的自簽名證書沒有高級的保證。
為了解決這種類型的信任問題,組織使用PKI,其中包括一個(gè)發(fā)布、記錄和跟蹤數(shù)字id的獨(dú)立權(quán)威機(jī)構(gòu)。因?yàn)镻DF支持嵌入簽署人的公鑰作為簽名的一部分,所以文檔接收者總是使用它進(jìn)行簽名驗(yàn)證。要驗(yàn)證簽名,驗(yàn)證器只需檢索簽名者的證書,并將其與自己的可信證書列表進(jìn)行比較:
接收方應(yīng)用程序使用簽名者使用的相同算法生成文檔的單向散列(不包括簽名值)。
文檔中加密的哈希值使用簽名者的公鑰解密。
解密后的哈希值與本地生成的哈希值進(jìn)行比較。
如果它們是相同的,則將簽名報(bào)告為已知的。
提示:簽名是否可信或有效是單獨(dú)的問題。簽名信任取決于收件人的應(yīng)用程序配置。簽名狀態(tài)還取決于文檔完整性檢查。
6.3 PDF語言簽名特性(PDF language signature features)
6.3.1 標(biāo)準(zhǔn)支持(Standards support)
PDF本身就是一個(gè)開放的ISO標(biāo)準(zhǔn)。ISO 32000中對PDF中的數(shù)字簽名支持進(jìn)行了全面描述,Adobe在其open SDK中提供了與PDF和Acrobat系列產(chǎn)品api交互的工具。但是,PDF還內(nèi)置了對其他標(biāo)準(zhǔn)的支持,像Acrobat和adobereader這樣的PDF查看器應(yīng)該遵循表2中列出的公認(rèn)標(biāo)準(zhǔn)。
6.3.2 支持替代簽名方法(Support for alternate signature methodologies)
大多數(shù)簽名都是純數(shù)學(xué)的,比如由Acrobat缺省簽名處理程序生成的公鑰/私鑰加密文檔摘要。然而,它們也可能是一種生物識別形式,如手寫簽名、指紋或視網(wǎng)膜掃描。簽名處理程序根據(jù)PDF ISO標(biāo)準(zhǔn)中定義的規(guī)則處理數(shù)據(jù)并控制身份驗(yàn)證的形式。
6.3.3 支持兩種簽名類型(Support for two signature types)
PDF定義了兩種簽名類型:批準(zhǔn)(approval)和認(rèn)證(certification)。這兩種類型都是所有文件內(nèi)容上的字節(jié)范圍簽名。兩者都在文檔被簽名時(shí)獲取文檔的可視快照,從而提供較高級別的文檔完整性。
差異如下:
- 批準(zhǔn):文件中可以有任意數(shù)量的批準(zhǔn)簽名。該字段可以選擇與FieldMDP權(quán)限相關(guān)聯(lián)。參見鎖定表單字段(6.3.10 Locking form fields)。
- 認(rèn)證:只能有一個(gè)認(rèn)證簽名,并且必須是文檔中的第一個(gè)。該字段始終與DocMDP(請參閱控制簽名后的更改 6.3.11 Controlling post-signing changes)和合法內(nèi)容認(rèn)證相關(guān)聯(lián)(6.3.12 Legal content attestations)。它們可以選擇與FieldMDP權(quán)限相關(guān)聯(lián)。
6.3.4 簽名的互操作性(Signature interoperability)
PDF被設(shè)計(jì)成允許簽名處理程序和符合規(guī)范的閱讀器之間的互操作性;也就是說,使用處理程序ABC簽名的PDF應(yīng)該能夠使用來自不同供應(yīng)商的處理程序XYZ進(jìn)行驗(yàn)證。
當(dāng)存在時(shí),簽名字典中的子過濾器條目指定簽名值和密鑰信息的編碼,而過濾器條目指定應(yīng)該用于驗(yàn)證簽名的首選處理程序。子過濾器條目有幾個(gè)已定義的值,都基于RSA Security發(fā)布的公鑰加密標(biāo)準(zhǔn),也是Internet Engineering Task Force (IETF)公鑰基礎(chǔ)設(shè)施(PKIX)工作組發(fā)布的標(biāo)準(zhǔn)的一部分。
6.3.5 健壯的算法支持(Robust algorithm support)
隨著安全問題的發(fā)展,PDF擴(kuò)展了對越來越強(qiáng)大的加密算法的支持,如下所示。可以通過種子值或在應(yīng)用程序首選項(xiàng)級別(如注冊表)指定摘要算法。

表1-算法支持中的說明:
(a)盡管在這個(gè)子過濾器值的名稱中出現(xiàn)了sha1,支持的編碼并不局限于sha1。PKCS#1對象有一個(gè)標(biāo)識符,指示使用哪種算法。
(b)可使用其他算法來摘要帶符號的數(shù)據(jù)字段;但是,SHA1用于摘要已簽名的數(shù)據(jù)。
6.3.6 多個(gè)簽名(Multiple signatures)
有些文件可能需要多個(gè)簽名。在紙上再畫一條線很容易處理。在紙的世界里,簽署文件的人最好在文件被簽署時(shí)保存一份副本。然后,如果另一個(gè)人更改了文檔,簽名者可以很容易地辯稱文檔已被更改。
但是,對于PDF,任何通過修改文件來修改文檔的嘗試(比如再次對其簽名)都將使現(xiàn)有的數(shù)字簽名無效。這是因?yàn)轵?yàn)證時(shí)計(jì)算的哈希值與簽名時(shí)創(chuàng)建的加密哈希值不匹配。
PDF通過支持增量更新的能力解決了這個(gè)問題(請參閱增量更新)。只要其他權(quán)限限制(例如DocMDP和FieldMDP)不阻止附加簽名,簽署人就可以在文檔中添加另一個(gè)簽名字段并對其進(jìn)行簽名,而不會使之前的簽名失效。
6.3.7 增量更新(Incremental updates)
PDF文件格式定義了增量更新功能。增量更新對查看文檔的人來說是透明的,但是允許檢測和審計(jì)對文件的修改。通常PDF語言的這個(gè)特性,特別是已簽名的PDF文件的這個(gè)特性,允許通過在增量更新部分的文件末尾添加修改信息來修改任何PDF文件。不需要對表示文件早期版本的字節(jié)進(jìn)行任何更改。這允許將附加的簽名添加到PDF文件中,而無需修改以前的簽名所涵蓋的任何數(shù)據(jù)。
每個(gè)附加簽名將覆蓋整個(gè)PDF文件,從第0字節(jié)到最后一個(gè)字節(jié),只排除當(dāng)前簽名值的簽名值。圖5顯示了如何為具有三個(gè)簽名的文件創(chuàng)建簽名。

6.3.8 查看以前簽署的文檔版本(Viewing previously signed document versions)
PDF語言的增量更新功能(6.3.7 Incremental updates)允許PDF查看器有效地保留任何PDF文件的所有簽名版本。這使得用戶可以實(shí)際看到已簽名的PDF文件的版本。
Acrobat提供了兩個(gè)功能,充分利用了PDF在簽名時(shí)記住文檔狀態(tài)的能力:
- 查看簽名版本:通過右鍵單擊簽名并選擇查看簽名版本,顯示文檔在應(yīng)用簽名時(shí)的存在狀態(tài)。可以通過刪除PDF文件中與簽名對應(yīng)的EOF之后的任何字節(jié)來手動模擬它。
- 比較簽名版本與當(dāng)前版本:通過右鍵單擊簽名并選擇比較簽名版本與當(dāng)前版本,來比較文檔的當(dāng)前版本與已簽名版本。
6.3.9比較當(dāng)前文檔版本和已簽署文檔版
參見查看以前簽署的文檔版本(6.3.8 Viewing previously signed document versions)。
6.3.10鎖定表單字段(Locking form fields)
表單字段包括簽名字段和非簽名字段,表單通常包含許多表單字段,一些用于簽名,另一些用于表單數(shù)據(jù)。PDF語言允許作者控制在文檔簽名后是否可以填充其他字段,可以通過簽名或輸入任何類型的數(shù)據(jù)。創(chuàng)建文檔時(shí),作者可以指定以下內(nèi)容:
- 如果表單填寫了,是否會導(dǎo)致批準(zhǔn)(approval)或簽名無效?
- 在特定收件人簽署文件后,對特定表單字段的任何修改將使該收件人的簽名無效。在這種情況下,為每個(gè)收件人指定一個(gè)單獨(dú)的簽名字段。
使用FieldMDP轉(zhuǎn)換方法檢測文檔表單字段值的更改(如圖1)。
6.3.11 控制簽約后的變更(Controlling post-signing changes)
PDF提供了一種限制后簽名的機(jī)制。該機(jī)制就是DocMDP轉(zhuǎn)換方法(修改檢測和預(yù)防的簡寫)。DocMDP轉(zhuǎn)換參數(shù)字典中的P條目指示了對文檔的下列哪些更改將使簽名無效(圖1):
- 沒有修改
- 填寫表格及數(shù)字簽名
- 注釋(注釋)、表格填寫、數(shù)字簽名
文檔只能包含一個(gè)包含DocMDP轉(zhuǎn)換方法的簽名字段,并且它必須是文檔中的第一個(gè)簽名字段。該簽名稱為認(rèn)證簽名。這個(gè)特性使作者能夠指定哪些更改是允許的,哪些更改會使作者的簽名無效。但是,大多數(shù)用戶會認(rèn)為DocMDP的作用是指定他們可以對文檔做什么。
一個(gè)認(rèn)證簽名應(yīng)該有一個(gè)合法的認(rèn)證字典,它指定了所有可能導(dǎo)致文檔內(nèi)容意外呈現(xiàn)的內(nèi)容,以及作者對這些內(nèi)容的認(rèn)證。如果文檔的完整性受到質(zhì)疑,本詞典可以用來確定作者的意圖。
Acrobat允許第一個(gè)簽署人使用認(rèn)證簽名對文檔進(jìn)行認(rèn)證,并在簽名期間動態(tài)地設(shè)置權(quán)限和合法證明。
當(dāng)一個(gè)認(rèn)證的文檔被打開時(shí),簽名會像往常一樣被驗(yàn)證,除了文檔被打開并與當(dāng)前正在查看的內(nèi)存中的文檔(包括所有增量更改)進(jìn)行比較之外。進(jìn)行了修改分析,并報(bào)告了作者禁止的修改。違反權(quán)限會導(dǎo)致無效簽名。
6.3.12 法律內(nèi)容認(rèn)證(Legal content attestations)
考慮到其內(nèi)在的豐富性,PDF語言提供了許多可能導(dǎo)致PDF文檔呈現(xiàn)形式變化的功能(例如多媒體或JavaScript)。這些功能可用于構(gòu)造有意或無意地誤導(dǎo)文檔接收者的文檔。當(dāng)考慮簽署PDF文件的法律影響時(shí),這些情況是相關(guān)的。
為了促進(jìn)文件信任,符合標(biāo)準(zhǔn)的認(rèn)證簽名作者(如Acrobat)也應(yīng)該利用PDF的法律認(rèn)證字典。字典項(xiàng)指定可能導(dǎo)致意外呈現(xiàn)文檔內(nèi)容的所有內(nèi)容。此外,作者可以通過認(rèn)證條目的方式進(jìn)一步澄清此類內(nèi)容。審閱者應(yīng)該自己確定他們信任作者和文檔內(nèi)容。
6.3.13 通過基于文檔的權(quán)限啟用功能(Enabling features via document-based permissions)
PDF允許具有豐富PDF交互的全功能客戶機(jī)向功能較差的客戶機(jī)授予特定于文檔的權(quán)限,以便它們也可以使用其中一些特性。使用這種機(jī)制,不具備數(shù)字簽名能力的客戶端可以被授予該能力。當(dāng)在語言級別為特定文檔授予權(quán)限時(shí),任何與簽名相關(guān)的用戶界面元素都將被啟用。
例如,使用Acrobat的作者可以授權(quán)使用公鑰加密啟用Adobe-Reader中的其他特性。它使用證書頒發(fā)機(jī)構(gòu)向與它建立業(yè)務(wù)關(guān)系的文檔創(chuàng)建者頒發(fā)公鑰證書。adobereader驗(yàn)證啟用權(quán)限的簽名使用來自Adobe授權(quán)的證書頒發(fā)機(jī)構(gòu)的證書。因此,打開已啟用Reader的文檔的adobereader用戶可以簽名、填寫表單字段,以及執(zhí)行否則將被禁止的操作。
這種機(jī)制稱為使用權(quán)簽名,通常對最終用戶是透明的。使用權(quán)簽名引用自權(quán)限字典中的UR3條目(圖1)。該簽名可啟用在符合標(biāo)準(zhǔn)的閱讀器中默認(rèn)不可用的額外交互特性,并驗(yàn)證權(quán)限是否已由真正的授權(quán)機(jī)構(gòu)授予。轉(zhuǎn)換參數(shù)字典指定簽名有效時(shí)應(yīng)啟用的附加權(quán)限。如果簽名因任何原因無效,則不授予其他權(quán)利。
6.3.14 豐富的證書處理(Rich certificate processing)
PDF支持特性豐富的證書處理和處理,因?yàn)樗C書數(shù)據(jù)嵌入到簽名中??梢詫DF查看器和簽名處理程序設(shè)計(jì)為根據(jù)需要使用這些數(shù)據(jù)。例如,當(dāng)使用PKCS#7簽名時(shí),簽名對象可以包含以下部分或全部內(nèi)容:
- 時(shí)間戳信息
- 嵌入式撤銷信息
- CRLs和OCSP的撤銷檢查細(xì)節(jié)
- 證書政策和屬性證書(Certificate polices and attribute certificates)
6.3.15 通過種子值控制簽名工作流(Controlling signature workflows via seed values)
PDF對種子值的支持為作者提供了在文檔被路由到簽名者后對其行為的字段級控制。種子值指定屬性和屬性值,作者可以控制指定的參數(shù)對于任何特定字段是可選的還是必需的。
例如,在簽名特定的簽名字段時(shí),您可以使用種子值來限制用戶的選擇,例如要求使用由特定CA頒發(fā)的證書進(jìn)行簽名。
如果字段字典包含引用種子值字典的SV條目,則在對字段進(jìn)行簽名時(shí)使用該字典。Ff條目規(guī)定詞典中的其他條目是否受到尊重,或者它們是否僅僅是推薦。Acrobat默認(rèn)處理程序支持由PDF標(biāo)準(zhǔn)定義的所有種子值。Acrobat提供了用于種子字段的api。

6.4 簽名創(chuàng)建流程(Signature creation workflow)

表中的一些英文的翻譯
工作流可以通過GUI和注冊表設(shè)置進(jìn)行配置。(The workflow is configurable through the GUI and registry settings.)支持第三方處理程序。 (Supports third party handlers.)
用UI或編程方式創(chuàng)建簽名外觀。內(nèi)容由包含在表單字段中的SigAP字典定義。 (Create signature appearances with the UI or programmatically. Contens are defined by the SigAP dictionary included in the form field.)
簽名外觀包含在消息摘要中。 (The signature appearance is included in the message digest.)
DSA/RSA算法由簽名者在P12/PFX文件、智能卡/令牌、漫游ID服務(wù)器、Mac密鑰鏈或Windows sotre中的數(shù)字ID私鑰指定。(The DSA/RSA algorithm is specified by the signer's digital ID private key in a P12/PFX file, smart card/token, roaming ID server, Mac Key Chain, or Windows sotre.)
如果沒有時(shí)間戳或時(shí)間戳失敗,使用本地時(shí)間。(if not time stamped or time stamping fails, use the local time.)
簽名對象構(gòu)建在內(nèi)存中,直到檢索到所有撤銷檢查、時(shí)間戳和證書數(shù)據(jù)。(The signature object is built in memory until all the revocation checking, timestamp, and certificate data is retrieved.)
簽名對象使用專有編碼規(guī)則(Distinguished Encoding Rules, DER)進(jìn)行編碼。DER對象是十六進(jìn)制編碼,并用零填充,以使有符號字節(jié)范圍與開始簽名過程時(shí)留出的大小相匹配。 (The signature object is encoded using the Distinguished Encoding Rules (DER). The DER object is hex encoded and padded with zeros to make the signed byte range match the size that was set aside when the signing process began.)
字典內(nèi)容可以通過UI和注冊表設(shè)置(如cReasons、cContactInfo等)進(jìn)行定制。(Dictionary contents are customizable through UI and registry setttings such as cReasons, cContactInfo, etc.)
參考文獻(xiàn)(References)
- PDF的引用(PDF References)
- 數(shù)字簽名構(gòu)建字典規(guī)范(Digital Signature Build Dictionary Specification)
- Acrobat的數(shù)字簽名(Digital Signature Acrobat)
- 數(shù)字簽名的外觀(在SDK中)(Digital Signature Appearances (in the SDK))
6.5 支持的標(biāo)準(zhǔn)( Supported standards)

表2 標(biāo)準(zhǔn)支持(引用和引用的大概內(nèi)容)
6.5 額外的資源( Additional resources)
關(guān)于數(shù)字簽名、PDF和Acrobat系列產(chǎn)品的更多信息存在于http://learn.adobe.com/wiki/display/security/document+ library的安全特性庫中。
特別是:
- Acrobat中的數(shù)字簽名:描述Acrobat系列產(chǎn)品如何使用PDF的數(shù)字簽名功能的實(shí)現(xiàn)細(xì)節(jié)。
- Acrobat和adobereader中的數(shù)字簽名和權(quán)限管理:配置、使用和管理員感興趣的技術(shù)細(xì)節(jié)。