軟件代碼數字簽名基本原理

在通過精美的包裝盒銷售軟件的時代,大家使用什麼防僞標誌等來讓用戶識別什麼是正版軟件。但在當今的網絡時代,有利的一面是軟件開發商可以通過網絡不受時間、地域的限制而快速發行軟件,但不利的一面,則是用戶無法辨認軟件的真僞,根本無法確認軟件代碼的真實身份。在沒有間諜軟件和木馬程序之前,大家可能還都信任某個軟件就是軟件中聲稱的開發商開發的軟件,但是在今天就不應該這樣認爲了,互聯網的匿名性使得用戶根本無法確認此軟件是否真的是軟件中聲稱的開發商開發的軟件!如何保證軟件代碼在網絡傳輸過程中不會被非法修改,同時還能讓用戶非常清楚地識別軟件發行者的真實身份( 軟件真實來源 ),答案就是代碼簽名。


以微軟代碼爲例,爲了保證微軟 Windows系統的安全和用戶安全,微軟推出了 Microsoft Authenticode 技術,即微軟認證碼技術,此技術保證了只有使用了 Windows 的受信任的根證書頒發機構頒發的代碼簽名證書對軟件代碼數字簽名後才允許在 Windows 上運行,從而保證了軟件代碼來自真實的發行者和保證軟件代碼沒有被非法篡改。

軟件開發商在自己電腦上生成私鑰 (.pvk) 和證書請求文件 (CSR) 提交給天威誠信 ,同時提交有關身份證明文件 ( 如營業執照等 ) 查驗, 驗證身份後用自己的私鑰給 CSR 文件簽名後生成代碼簽名證書,也就是公鑰 (.spc) 給軟件開發商。這樣就完成了證書的申請和頒發。

軟件開發商用代碼簽名工具 ( 如: SignCode.exe) 給要簽名的代碼生成一個 Hash 表,再用其私鑰加密 Hash 表產生認證摘要,接着就把認證摘要連同其公鑰與軟件代碼一起打包生成簽名後的新的軟件代碼,軟件開發商就可以把已經簽名的代碼放到網上發行了。

最終用戶從網上下載已經簽名的代碼時,瀏覽器會從簽名代碼中解讀出其簽名證書 ( 公鑰 ) 和 Hash 表摘要,並與 Windows 的受信任的根證書相比較查驗公鑰證書的有效性和合法性,驗證簽名證書正確後,就可以確認此代碼確實是來自真實的軟件開發商。

接着,再使用簽名時使用的同樣算法對軟件代碼生成一個 Hash 表,並使用公鑰也同樣生成一個 Hash 表認證摘要,比較從代碼中解包出來的 Hash 表認證摘要與生成的 Hash 表認證摘要是否一致,如果一致,則表明此代碼在傳輸過程中未有任何修改,從而可以確認代碼的一致性。

從以上整個過程的簡單介紹,可以看出:

(1) 購買代碼簽名證書一定要從 Windows 內置的受信任的根證書頒發機構購買 ( 如: Thawte, VeriSign),否則無法通過驗證。而通過人爲的添加根證書到 Windows 受信任的根證書存儲區,一來不可能要求所有網上用戶在使用代碼之前先下載和安裝某個根證書,更重要的是,誰都可以人爲添加的根證書不能保證簽名證書的唯一性和權威性。

(2) 代碼簽名後不僅保證了軟件開發商的真實身份,而且還保證了代碼的完整性,以免代碼被病毒干擾和被非法篡改。

(3) 只有使用了 Windows 受信任的證書頒發機構 頒發的代碼簽名證書籤名的代碼才允許下載,所以,如果您要讓您的代碼能讓用戶放心地下載,就一定要申請代碼簽名證書。

 

作者: VeriSign@ iTrusChina 威瑞信中國區首要合作伙伴
天威誠信提供SSL證書、代碼簽名證書全系列產品

本文iTrusChina版權所有,引用本文內容,請註明作者及出處

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章