熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

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

2013-11-23 19:00:27  來源: Java核心技術 
在通過精美的包裝盒銷售軟件的時代大家使用什麼防偽標志等來讓用戶識別什麼是正版軟件但在當今的網絡時代有利的一面是軟件開發商可以通過網絡不受時間地域的限制而快速發行軟件但不利的一面則是用戶無法辨認軟件的真偽根本無法確認軟件代碼的真實身份在沒有間諜軟件和木馬程序之前大家可能還都信任某個軟件就是軟件中聲稱的開發商開發的軟件但是在今天就不應該這樣認為了互聯網的匿名性使得用戶根本無法確認此軟件是否真的是軟件中聲稱的開發商開發的軟件!如何保證軟件代碼在網絡傳輸過程中不會被非法修改同時還能讓用戶非常清楚地識別軟件發行者的真實身份( 軟件真實來源 )答案就是代碼簽名
 
  以微軟代碼為例為了保證微軟 Windows系統的安全和用戶安全微軟推出了 Microsoft Authenticode 技術即微軟認證碼技術此技術保證了只有使用了 Windows 的受信任的根證書頒發機構頒發的代碼簽名證書對軟件代碼數字簽名後才允許在 Windows 上運行從而保證了軟件代碼來自真實的發行者和保證軟件代碼沒有被非法篡改
 
  軟件開發商在自己電腦上生成私鑰 (pvk) 和證書請求文件 (CSR) 提交給天威誠信 同時提交有關身份證明文件 ( 如營業執照等 ) 查驗 驗證身份後用自己的私鑰給 CSR 文件簽名後生成代碼簽名證書也就是公鑰 (spc) 給軟件開發商這樣就完成了證書的申請和頒發
 
  軟件開發商用代碼簽名工具 ( 如 SignCodeexe) 給要簽名的代碼生成一個 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
  • 上一篇文章:

  • 下一篇文章:
  • Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.