2010-08-18 62 views
2

我已經清除了簽署文檔的過程。您需要由CA製作的證書。你有公鑰和私鑰。隨着私人簽署並與公衆一起打開簽名文件。當您簽署文檔時,數學算法會處理文件,然後生成散列,隨後使用私鑰對散列進行加密。最後,我需要將這個加密哈希添加(連續)到文檔中。打開並驗證已簽名的文檔

現在,要打開此文檔,我需要從文檔中分離加密哈希代碼。我需要公鑰來驗證文檔的有效性。這對我來說很清楚。

所以......問題是......從哪裏獲得公共密鑰?我如何檢查誰簽署文件?

我是否需要將我的證書附加到我要唱歌的文檔? 如果這是真的。這是不是insecur?把我的證書給大家?

感謝,

回答

0

散列不是「連接」到文檔。各種數據簽署標準(PKCS#7,用於通用數據的CAdES,用於XML的XMLDSig,用於PDF文檔的PDF規範)描述了將簽名數據合併到輸出文件中的不同方式。所有這些格式都允許您將公鑰(通常是X.509證書)與數據一起包含在驗證中。驗證者的目標也是檢查密鑰本身是否有效。或者,用戶可能應該知道公鑰。

+0

謝謝你知道一些在Java中實現這些標準的API或框架嗎? – oracleruiz 2010-08-19 15:52:39

+0

iText可用於PDF簽名。對於XMLDSig和PKCS#7存在一些解決方案(您可以在Google中找到它們)。至於CAdES - 我沒有任何信息,但我認爲必須提供一些信息。我們將把我們的SecureBlackbox產品移植到Java,但這隻會在8-10個月內發生。 – 2010-08-19 17:14:03

1

你所要求的是一個公私密鑰密碼。在RSA(一個特定的系統)中,「公鑰」和「私鑰」實際上只是兩個數字,是大數字的主要因素。由於(我不打算解釋數學)冪如何模塊化的作品,其效果是:

  • 任何與「公共」密鑰加密可以用「私」鑰
  • 任何解密用「私鑰」加密的密鑰可以用「公開」密鑰解密

它可以雙向運行。現在,在生成這對之後,你保留其中一個。這是「私人」的。另一半,你添加一些身份信息。在X.509(一種特定證書格式)的情況下,您添加一個「通用名稱」和一些輔助信息,如創建日期。這被添加到證書的「公共」一半。這一半的證書,公鑰,你以某種方式分發。

在文檔簽名的情況下,分發方法通常是您附加公鑰。 「誰簽署了文檔」由X.509證書「通用名稱」字段回答。這看起來像「cn = Joe Blow,o = Widgets Inc,l = Washington,st = DC,c = US」。您沒有將「證書」給所有人 - 只是公開部分。所有這一切讓人們做的是:

  • 驗證您的簽名,以這樣的方式
  • 加密的消息,只有你才能解密

這並不讓讓它們看起來人僞造郵件從你是你。

+0

在最後一段..你說人們可以驗證我的簽名。Verifing有一個很大的範圍。我可以驗證文檔簽名,這很清楚。但是..我能否使用我附加到文件的證書的公共部分來驗證X人簽名文件的證書是否未被撤銷?可能嗎? 以其他方式..是否有任何標準附加證書的公共部分和標誌的文件? 我的意思是..在一個PDF ..我必須把這些信息?在doc中,在docx中? 你知道Java中實現這些requeriments的框架嗎? – oracleruiz 2010-08-19 14:46:21

+0

@oracleruiz:通過OCSP(收件人聯繫服務器並檢查證書是否被撤銷的協議)實時處理非撤銷。它也由CRLDP以延遲的方式進行處理,CRLDP分發由客戶端下載的撤銷證書列表。 CRLDP和OCSP服務器都可以在證書中指定。沒有萬能標準將文檔附加到文檔中。這取決於文檔類型。我不知道特定文檔如何實現它。 – Borealid 2010-08-19 16:00:51