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實現(xiàn)了PDF s的所有功能硕旗,因此為基于公鑰基礎(chǔ)設(shè)施(PKI)技術(shù)的數(shù)字?jǐn)?shù)據(jù)身份驗證提供了全面的支持世分。第三方開發(fā)人員可以以Acrobat插件簽名處理程序的形式定義他們自己的機(jī)制。
數(shù)字簽名可用于過去使用傳統(tǒng)鋼筆和墨水簽名的許多類型的文檔绘搞。然而喂击,僅僅存在數(shù)字簽名并不能充分保證文檔就是它看起來的樣子昼榛。此外税迷,政府和企業(yè)設(shè)置經(jīng)常需要對其簽名工作流施加額外的約束永丝,例如在簽名期間和之后限制用戶的選擇和文檔行為。
由于這些原因箭养,PDF語言為兩大類任務(wù)提供了以下機(jī)制:
- 通過驗證簽署的文件沒有被更改慕嚷,而且是由收件人信任的人簽署的,完全信任電子文件毕泌。
- 創(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中的簽名是包含在一個簽名字典里的撼泛。字典里的對象由pdf Reference所定義挠说。這個簽名字典能引用其他字典或者被其他字典引用,如圖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)品支持所有這些特性樟结。在較高的層次上养交,這些特性可以分為以下幾個類別:
- 向文檔添加數(shù)字簽名。
- 檢查簽名的有效性
- 控制簽名工作流的權(quán)限和限制瓢宦。
當(dāng)然碎连,PDF包含與這些活動相關(guān)但對它們不是必需的特性。例如驮履,支持添加簽名原因與簽名無關(guān)鱼辙,但對許多工作流都很有價值廉嚼。
6.2 公鑰基礎(chǔ)設(shè)施(Public key infrastructure)
PDF的數(shù)字簽名功能是為與企業(yè)和政府環(huán)境中部署的主流公鑰基礎(chǔ)設(shè)施(PKI)相關(guān)的所有標(biāo)準(zhǔn)兼容而設(shè)計的。PKI是用于創(chuàng)建倒戏、分發(fā)前鹅、管理和撤銷以及使用數(shù)字id(包含在簽署PDF時使用的公鑰/私鑰對)的人員、策略峭梳、過程舰绘、硬件和軟件的集合。
public key infrastructures (PKI) 公鑰基礎(chǔ)設(shè)施
在PDF簽名工作流中葱椭,PKI一般是指數(shù)字ID發(fā)行方捂寿、用戶、管理員以及這些工作流中使用的任何硬件或軟件孵运。實現(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.)
公司或者三方時間戳服務(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ā)放身份證旷赖∷秤郑可以定義策略、信任錨等等孵。 (2. 數(shù)字id/最終實體證書 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ì)文件時咐熙,人們通常在提供了令人滿意的身份證明后弱恒,當(dāng)著公證人或其他可信賴的權(quán)威機(jī)構(gòu)的面簽字。因為公證人是值得信賴的棋恼,所以你可以信任公證人的簽名返弹。使用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的類型悦施,其證書位于最終實體和根證書之間的證書鏈中。證書不是自簽名的去团,ICA經(jīng)常提供諸如策略抡诞、時間戳穷蛹、撤銷列表等服務(wù)。
最終實體證書(End entity certificate (EE))簽名者的證書和簽名鏈的最后一個元素昼汗。根據(jù)定義肴熏,最終實體證書不包含基本約束值CA。
數(shù)字ID(Digital ID):一種基于ITU-TX.509 v3標(biāo)準(zhǔn)的電子數(shù)據(jù)證明顷窒,與個人或?qū)嶓w相關(guān)聯(lián)蛙吏。它存儲在電腦或網(wǎng)絡(luò)上有密碼保護(hù)的文件、USB令牌鞋吉、智能卡等鸦做。數(shù)字ID包含公鑰證書、私鑰和其他數(shù)據(jù)谓着。
公鑰證書(Public key certificate):一個文件,其中包含公鑰/私鑰對的數(shù)字公鑰部分,以及用于定義證書所有者辅鲸、有效期和用法的相關(guān)擴(kuò)展名和屬性酱床。
私鑰(Private key):PKI系統(tǒng)中的一種私密密鑰,用于驗證傳入的消息和對傳出的消息簽名舷蒲。在這些密鑰生成期間耸袜,私鑰總是與它的公鑰配對。
雖然數(shù)字ID及其發(fā)行實體是任何PKI的核心牲平,PKI還包括許多其他企業(yè)擁有和第三方項目句灌。PKI管理員通常會管理數(shù)字id、LDAP服務(wù)器欠拾、時間戳服務(wù)器胰锌、撤銷列表和其他條目的創(chuàng)建和分發(fā)。PDF語言支持與這些組件接口所需的所有數(shù)據(jù)藐窄。
6.2.1 PKI, PDF, and signing(公鑰基礎(chǔ)設(shè)置资昧,pdf[The Portable Document Format (PDF) 便攜式文件格式 ]和簽名)
PDF支持將簽名嵌入到文檔本身,而不是作為單獨的數(shù)據(jù)管理或添加到現(xiàn)有的文檔格式中荆忍。這意味著查看應(yīng)用程序可以執(zhí)行某些類型的修改格带,而不會使簽名失效。對于其他數(shù)字簽名格式刹枉,用戶可能需要兩個應(yīng)用程序來同時處理文檔和簽名叽唱,或者需要為每個簽名文檔管理兩個獨立的文件。
PDF文檔中的每個數(shù)字簽名都與簽名處理程序相關(guān)聯(lián)微宝。簽名被放置在PDF簽名字典中棺亭,其中包含將用于處理該簽名的簽名處理程序的名稱(圖3)。內(nèi)置在adobeacrobat中的簽名處理程序利用了公共/私有密鑰(PPK)加密技術(shù)蟋软。PPK基于這樣一種思想:使用私鑰加密的值只能使用公鑰解密(相反的情況也可能發(fā)生在為特定接收者加密文檔時镶摘,但這不在本文檔的范圍之內(nèi))嗽桩。
在簽署PDF時,簽名者的證書被嵌入到PDF文件中凄敢。圖3顯示了存儲在用戶硬件設(shè)備上的數(shù)字ID與嵌入在PDF文檔中的簽名值之間的關(guān)系碌冶。簽名值還可以包括其他信息,如簽名圖形涝缝、時間戳和其他特定于用戶扑庞、系統(tǒng)或應(yīng)用程序的數(shù)據(jù)。
簽名流程如下:
- 要簽名的文檔被轉(zhuǎn)換為字節(jié)流拒逮。
- 將整個PDF文件寫入磁盤嫩挤,并為簽名值留下合適大小的空間,同時在ByteRange這個字段中保留最壞情況下的值消恍。
ByteRange 是一個由四個數(shù)字組成的數(shù)組岂昭。每對中的第一個數(shù)字是要包含在散列中的字節(jié)流的開始在文件中的偏移量(從開始,從0開始)狠怨。第二個數(shù)字是該流的長度约啊。這兩對定義了定義要散列的內(nèi)容的兩個字節(jié)序列。實際的簽名值存儲在第一個序列結(jié)束和第二個序列開始之間的/Contents鍵中佣赖。在圖4中恰矩,哈希是為0到839字節(jié)和960到1200字節(jié)計算的。(其實說了這么一段憎蛤,看圖最簡單)
一旦根據(jù)文件中的偏移量知道了簽名值的位置外傅,就會使用正確的值覆蓋ByteRange數(shù)組。因為字節(jié)偏移量不能更改俩檬,所以新array語句后面的額外字節(jié)將被零覆蓋萎胰。
整個文件的哈希是通過使用SHA-256之類的哈希算法,使用由實際字節(jié)數(shù)值指定的字節(jié)計算的棚辽。
Acrobat總是計算整個PDF文件上的文檔簽名的散列技竟,從字節(jié)0開始,到物理文件中的最后一個字節(jié)結(jié)束屈藐,但不包括簽名值字節(jié)榔组。哈希值使用簽名者的私鑰加密,并生成十六進(jìn)制編碼的PKCS#7對象簽名對象联逻。
簽名對象放在磁盤上的文件中搓扯,覆蓋占位符/內(nèi)容值。任何未用于簽名對象的空間都將被零覆蓋包归。
在Acrobat中重新加載PDF文件锨推,以確保內(nèi)存中的版本和磁盤上的版本相同。
提示:這是一個高層視圖。有關(guān)顯示一些應(yīng)用程序級配置選項的更詳細(xì)的快速鍵爱态,請參閱簽名創(chuàng)建工作流(6.4 Signature creation workflow)。
6.2.2 PKI, PDF and signature validation(簽名驗證)
由于私鑰和公鑰都只是數(shù)字境钟,所以任何人都可以使用任意數(shù)量的工具生成公鑰和私鑰對锦担。Acrobat等應(yīng)用程式提供一種機(jī)制,以生成自簽署證書慨削,將簡單的用戶提供的身分與由應(yīng)用程式生成的公鑰綁定;然后使用對應(yīng)的私鑰對其進(jìn)行簽名洞渔。顯然,沒有什么可以阻止某人用別人的名字生成自簽名證書缚态。因此磁椒,未知的自簽名證書沒有高級的保證。
為了解決這種類型的信任問題玫芦,組織使用PKI浆熔,其中包括一個發(fā)布、記錄和跟蹤數(shù)字id的獨立權(quán)威機(jī)構(gòu)桥帆。因為PDF支持嵌入簽署人的公鑰作為簽名的一部分医增,所以文檔接收者總是使用它進(jìn)行簽名驗證。要驗證簽名老虫,驗證器只需檢索簽名者的證書叶骨,并將其與自己的可信證書列表進(jìn)行比較:
接收方應(yīng)用程序使用簽名者使用的相同算法生成文檔的單向散列(不包括簽名值)。
文檔中加密的哈希值使用簽名者的公鑰解密祈匙。
解密后的哈希值與本地生成的哈希值進(jìn)行比較忽刽。
如果它們是相同的,則將簽名報告為已知的夺欲。
提示:簽名是否可信或有效是單獨的問題跪帝。簽名信任取決于收件人的應(yīng)用程序配置。簽名狀態(tài)還取決于文檔完整性檢查些阅。
6.3 PDF語言簽名特性(PDF language signature features)
6.3.1 標(biāo)準(zhǔn)支持(Standards support)
PDF本身就是一個開放的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ù)并控制身份驗證的形式镣陕。
6.3.3 支持兩種簽名類型(Support for two signature types)
PDF定義了兩種簽名類型:批準(zhǔn)(approval)和認(rèn)證(certification)谴餐。這兩種類型都是所有文件內(nèi)容上的字節(jié)范圍簽名。兩者都在文檔被簽名時獲取文檔的可視快照呆抑,從而提供較高級別的文檔完整性岂嗓。
差異如下:
- 批準(zhǔn):文件中可以有任意數(shù)量的批準(zhǔn)簽名。該字段可以選擇與FieldMDP權(quán)限相關(guān)聯(lián)鹊碍。參見鎖定表單字段(6.3.10 Locking form fields)厌殉。
- 認(rèn)證:只能有一個認(rèn)證簽名,并且必須是文檔中的第一個侈咕。該字段始終與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è)計成允許簽名處理程序和符合規(guī)范的閱讀器之間的互操作性;也就是說耀销,使用處理程序ABC簽名的PDF應(yīng)該能夠使用來自不同供應(yīng)商的處理程序XYZ進(jìn)行驗證楼眷。
當(dāng)存在時,簽名字典中的子過濾器條目指定簽名值和密鑰信息的編碼熊尉,而過濾器條目指定應(yīng)該用于驗證簽名的首選處理程序摩桶。子過濾器條目有幾個已定義的值,都基于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)用程序首選項級別(如注冊表)指定摘要算法查邢。
表1-算法支持中的說明:
(a)盡管在這個子過濾器值的名稱中出現(xiàn)了sha1蔗崎,支持的編碼并不局限于sha1。PKCS#1對象有一個標(biāo)識符扰藕,指示使用哪種算法缓苛。
(b)可使用其他算法來摘要帶符號的數(shù)據(jù)字段;但是,SHA1用于摘要已簽名的數(shù)據(jù)邓深。
6.3.6 多個簽名(Multiple signatures)
有些文件可能需要多個簽名未桥。在紙上再畫一條線很容易處理。在紙的世界里芥备,簽署文件的人最好在文件被簽署時保存一份副本冬耿。然后,如果另一個人更改了文檔萌壳,簽名者可以很容易地辯稱文檔已被更改亦镶。
但是日月,對于PDF,任何通過修改文件來修改文檔的嘗試(比如再次對其簽名)都將使現(xiàn)有的數(shù)字簽名無效缤骨。這是因為驗證時計算的哈希值與簽名時創(chuàng)建的加密哈希值不匹配爱咬。
PDF通過支持增量更新的能力解決了這個問題(請參閱增量更新)。只要其他權(quán)限限制(例如DocMDP和FieldMDP)不阻止附加簽名绊起,簽署人就可以在文檔中添加另一個簽名字段并對其進(jìn)行簽名精拟,而不會使之前的簽名失效。
6.3.7 增量更新(Incremental updates)
PDF文件格式定義了增量更新功能勒庄。增量更新對查看文檔的人來說是透明的串前,但是允許檢測和審計對文件的修改瘫里。通常PDF語言的這個特性实蔽,特別是已簽名的PDF文件的這個特性,允許通過在增量更新部分的文件末尾添加修改信息來修改任何PDF文件谨读。不需要對表示文件早期版本的字節(jié)進(jìn)行任何更改局装。這允許將附加的簽名添加到PDF文件中,而無需修改以前的簽名所涵蓋的任何數(shù)據(jù)劳殖。
每個附加簽名將覆蓋整個PDF文件铐尚,從第0字節(jié)到最后一個字節(jié),只排除當(dāng)前簽名值的簽名值哆姻。圖5顯示了如何為具有三個簽名的文件創(chuàng)建簽名宣增。
6.3.8 查看以前簽署的文檔版本(Viewing previously signed document versions)
PDF語言的增量更新功能(6.3.7 Incremental updates)允許PDF查看器有效地保留任何PDF文件的所有簽名版本。這使得用戶可以實際看到已簽名的PDF文件的版本矛缨。
Acrobat提供了兩個功能爹脾,充分利用了PDF在簽名時記住文檔狀態(tài)的能力:
- 查看簽名版本:通過右鍵單擊簽名并選擇查看簽名版本,顯示文檔在應(yīng)用簽名時的存在狀態(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)建文檔時呀酸,作者可以指定以下內(nèi)容:
- 如果表單填寫了凉蜂,是否會導(dǎo)致批準(zhǔn)(approval)或簽名無效?
- 在特定收件人簽署文件后,對特定表單字段的任何修改將使該收件人的簽名無效窿吩。在這種情況下茎杂,為每個收件人指定一個單獨的簽名字段。
使用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ù)字簽名
文檔只能包含一個包含DocMDP轉(zhuǎn)換方法的簽名字段,并且它必須是文檔中的第一個簽名字段忌愚。該簽名稱為認(rèn)證簽名曲管。這個特性使作者能夠指定哪些更改是允許的,哪些更改會使作者的簽名無效硕糊。但是院水,大多數(shù)用戶會認(rèn)為DocMDP的作用是指定他們可以對文檔做什么。
一個認(rèn)證簽名應(yīng)該有一個合法的認(rèn)證字典简十,它指定了所有可能導(dǎo)致文檔內(nèi)容意外呈現(xiàn)的內(nèi)容檬某,以及作者對這些內(nèi)容的認(rèn)證。如果文檔的完整性受到質(zhì)疑螟蝙,本詞典可以用來確定作者的意圖恢恼。
Acrobat允許第一個簽署人使用認(rèn)證簽名對文檔進(jìn)行認(rèn)證,并在簽名期間動態(tài)地設(shè)置權(quán)限和合法證明胰默。
當(dāng)一個認(rèn)證的文檔被打開時场斑,簽名會像往常一樣被驗證,除了文檔被打開并與當(dāng)前正在查看的內(nèi)存中的文檔(包括所有增量更改)進(jìn)行比較之外初坠。進(jìn)行了修改分析和簸,并報告了作者禁止的修改。違反權(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文件的法律影響時爽柒,這些情況是相關(guān)的。
為了促進(jìn)文件信任者填,符合標(biāo)準(zhǔn)的認(rèn)證簽名作者(如Acrobat)也應(yīng)該利用PDF的法律認(rèn)證字典浩村。字典項指定可能導(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)限時铐姚,任何與簽名相關(guān)的用戶界面元素都將被啟用策肝。
例如,使用Acrobat的作者可以授權(quán)使用公鑰加密啟用Adobe-Reader中的其他特性隐绵。它使用證書頒發(fā)機(jī)構(gòu)向與它建立業(yè)務(wù)關(guān)系的文檔創(chuàng)建者頒發(fā)公鑰證書之众。adobereader驗證啟用權(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)不可用的額外交互特性,并驗證權(quán)限是否已由真正的授權(quán)機(jī)構(gòu)授予诡延。轉(zhuǎn)換參數(shù)字典指定簽名有效時應(yīng)啟用的附加權(quán)限滞欠。如果簽名因任何原因無效,則不授予其他權(quán)利肆良。
6.3.14 豐富的證書處理(Rich certificate processing)
PDF支持特性豐富的證書處理和處理筛璧,因為它證書數(shù)據(jù)嵌入到簽名中∪鞘眩可以將PDF查看器和簽名處理程序設(shè)計為根據(jù)需要使用這些數(shù)據(jù)夭谤。例如,當(dāng)使用PKCS#7簽名時巫糙,簽名對象可以包含以下部分或全部內(nèi)容:
- 時間戳信息
- 嵌入式撤銷信息
- CRLs和OCSP的撤銷檢查細(xì)節(jié)
- 證書政策和屬性證書(Certificate polices and attribute certificates)
6.3.15 通過種子值控制簽名工作流(Controlling signature workflows via seed values)
PDF對種子值的支持為作者提供了在文檔被路由到簽名者后對其行為的字段級控制朗儒。種子值指定屬性和屬性值,作者可以控制指定的參數(shù)對于任何特定字段是可選的還是必需的参淹。
例如醉锄,在簽名特定的簽名字段時,您可以使用種子值來限制用戶的選擇浙值,例如要求使用由特定CA頒發(fā)的證書進(jìn)行簽名恳不。
如果字段字典包含引用種子值字典的SV條目,則在對字段進(jìn)行簽名時使用該字典开呐。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.)
如果沒有時間戳或時間戳失敗乍楚,使用本地時間。(if not time stamped or time stamping fails, use the local time.)
簽名對象構(gòu)建在內(nèi)存中届慈,直到檢索到所有撤銷檢查徒溪、時間戳和證書數(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é)范圍與開始簽名過程時留出的大小相匹配揍拆。 (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ù)字簽名功能的實現(xiàn)細(xì)節(jié)。
- Acrobat和adobereader中的數(shù)字簽名和權(quán)限管理:配置筒狠、使用和管理員感興趣的技術(shù)細(xì)節(jié)猪狈。