摘要
Authenticode是一種數位簽章格式,它是用來驗證二進位軟體的來源和完整性。Authenticode是基於公開密匙加密標準(PKCS) #7 來簽名資料,並使用X.509認證來綁定經過數字簽發的二進位程式與其軟體發行者的身份的聯絡。這份文檔包含Authenticode簽名的結構和技術細節。
概覽Overview
在PE檔案中的可信代碼數位簽章是PKCS #7 簽名塊結構。該簽名可以保證:
· 這份軟體源於某個確定的軟體發行者。
· 這份軟體自從簽署以來沒有經過修改。
一份PKCS #7 簽名塊結構包含該PE檔案的雜湊值、通過軟體發行者私匙建立的簽名以及將軟體發行者的簽名密匙綁定到一個合法實體的X.509 v3認證。一份PKCS #7簽名塊可以包含以下可選資訊:
· 關於軟體發行者的描述
· 軟體發行者的連結
· 可信程式碼簽署的時間戳記
簽章時間戳由時間戳記權威機構(TSA)產生,並且保證軟體發行者所做的簽名在這個時間戳記之前已經存在。這個時間戳記可以延長了這個簽名的生命期,即便相關的簽署憑證已經到期或者後來被廢除。
可信程式碼簽署可以被嵌入到Windows的PE檔案中,位於PE檔案的Optional Header Data Directories結構中Certificate Table所指向的位置。當可信程式碼簽署被用於簽署一個Windows PE檔案時,計算檔案數位簽章雜湊值的演算法略過PE檔案結構中的特定欄位。當把數位簽章嵌入檔案時,簽名過程可以修改這些欄位,而不致於影響檔案的雜湊值。
圖1顯示了一幅簡單的PE檔案全域圖,它描述了數位簽章是如何包含在PE檔案中的。它包含了嵌入的可信代碼數位簽章和指出那些被略過計算PE檔案雜湊值的PE結構欄位。
關於PE檔案結構的細節,請參閱“Microsoft Portable Executable and Common Object File Format Specification”(PE/COFF specification)。
關於可信代碼數位簽章中PKCS #7部分的細節,請參閱本文檔後面的Abstract Syntax Notation version 1 (ASN.1) 結構定義。
關於可信代碼數位簽章如何計算PE檔案雜湊值的細節,參閱本文檔後面的“Calculating the PE Image Hash”。
申請免費的數位憑證
登入www.ca365.com,在“免費認證”欄中點擊“用表格申請認證”連結。在頁面中填入相應資訊就可以申請免費認證。