在通過精美的包裝盒銷售軟件的時代
大家使用什麼防偽標志等來讓用戶識別什麼是正版軟件
但在當今的網絡時代
有利的一面是軟件開發商可以通過網絡不受時間
地域的限制而快速發行軟件
但不利的一面
則是用戶無法辨認軟件的真偽
根本無法確認軟件代碼的真實身份
在沒有間諜軟件和木馬程序之前
大家可能還都信任某個軟件就是軟件中聲稱的開發商開發的軟件
但是在今天就不應該這樣認為了
互聯網的匿名性使得用戶根本無法確認此軟件是否真的是軟件中聲稱的開發商開發的軟件!如何保證軟件代碼在網絡傳輸過程中不會被非法修改
同時還能讓用戶非常清楚地識別軟件發行者的真實身份( 軟件真實來源 )
答案就是代碼簽名
以微軟代碼為例
為了保證微軟 Windows系統的安全和用戶安全
微軟推出了 Microsoft Authenticode 技術
即微軟認證碼技術
此技術保證了只有使用了 Windows 的受信任的根證書頒發機構頒發的代碼簽名證書對軟件代碼數字簽名後才允許在 Windows 上運行
從而保證了軟件代碼來自真實的發行者和保證軟件代碼沒有被非法篡改
軟件開發商在自己電腦上生成私鑰 (
pvk) 和證書請求文件 (CSR) 提交給天威誠信
同時提交有關身份證明文件 ( 如營業執照等 ) 查驗
驗證身份後用自己的私鑰給 CSR 文件簽名後生成代碼簽名證書
也就是公鑰 (
spc) 給軟件開發商
這樣就完成了證書的申請和頒發
軟件開發商用代碼簽名工具 ( 如
SignCode
exe) 給要簽名的代碼生成一個 Hash 表
再用其私鑰加密 Hash 表產生認證摘要
接著就把認證摘要連同其公鑰與軟件代碼一起打包生成簽名後的新的軟件代碼
軟件開發商就可以把已經簽名的代碼放到網上發行了
最終用戶從網上下載已經簽名的代碼時
浏覽器會從簽名代碼中解讀出其簽名證書 ( 公鑰 ) 和 Hash 表摘要
並與 Windows 的受信任的根證書相比較查驗公鑰證書的有效性和合法性
驗證簽名證書正確後
就可以確認此代碼確實是來自真實的軟件開發商
接著
再使用簽名時使用的同樣算法對軟件代碼生成一個 Hash 表
並使用公鑰也同樣生成一個 Hash 表認證摘要
比較從代碼中解包出來的 Hash 表認證摘要與生成的 Hash 表認證摘要是否一致
如果一致
則表明此代碼在傳輸過程中未有任何修改
從而可以確認代碼的一致性
從以上整個過程的簡單介紹
可以看出
(
) 購買代碼簽名證書一定要從 Windows 內置的受信任的根證書頒發機構購買 ( 如
Thawte
VeriSign)
否則無法通過驗證
而通過人為的添加根證書到 Windows 受信任的根證書存儲區
一來不可能要求所有網上用戶在使用代碼之前先下載和安裝某個根證書
更重要的是
誰都可以人為添加的根證書不能保證簽名證書的唯一性和權威性
(
) 代碼簽名後不僅保證了軟件開發商的真實身份
而且還保證了代碼的完整性
以免代碼被病毒干擾和被非法篡改
(
) 只有使用了 Windows 受信任的證書頒發機構 頒發的代碼簽名證書簽名的代碼才允許下載
所以
如果您要讓您的代碼能讓用戶放心地下載
就一定要申請代碼簽名證書
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26118.html