概述
代碼簽名證書為軟體開發商提供了一個理想的解決方案,使得軟體開發商能對其軟體代碼進行數字簽名。通過對代碼的數字簽名來標識軟體來源以及軟體開發者的真實身份,保證代碼在簽名之後不被惡意篡改。使用戶在下載已經簽名的代碼時,能夠有效的驗證該代碼的可信度。
要想實現代碼簽名必須首先獲得數字證書才能使用這些功能。並且代碼簽名證書針對不同的平台,其代碼證書品種也不盡相同,因此使用者最好事先諮詢正規的代碼簽名證書的頒發機構。國際上,支持種類和品種最多的是 GlobalSign 和 VeriSign代碼簽名證書。國內的VeriSign代理機構如天威誠信,可以針對不同平台的代碼簽名套用,提供不同的代碼簽名證書產品及套用解決方案。
從用戶角度,可以通過代碼簽名服務鑑別軟體的發布者及軟體在傳輸過程中是否被篡改。如果某軟體在用戶計算機上執行後造成惡性後果,由於代碼簽名服務的可審計性,用戶可依法向軟體發布者索取賠償,將很好的制止軟體開發者發布攻擊性代碼的行為。同時經過 GlobalSign 簽名的軟體,則能夠更加快速的通過防毒軟體的放行。另外代碼簽名證書又分為個人代碼簽名和組織代碼簽名。
從軟體開發者和Web管理者的角度,利用代碼簽名的抗偽造性,可為其商標和產品建立一定信譽。利用可信代碼服務,一方面開發者可藉助代碼簽名獲取更高級別許可權的API,設計各種功能強大的控制項和桌面應用程式來創建出豐富多彩的頁面,另一方面用戶也可以理性地選擇所需下載的軟體包。並且利用代碼簽名技術,還可以大大減少客戶端防護軟體誤報病毒或惡意程式的可能性,使用戶在多次成功下載並運行具有代碼簽名的軟體後,和開發者間的信任關係得到鞏固。
代碼簽名證書功能實現原理
代碼簽名的基礎是PKI安全體系。代碼簽名證書由簽名證書私鑰和公鑰證書兩部分組成。私鑰用於代碼的簽名,公鑰用於私鑰簽名的驗證和證書持有者的身份識別。
1. 發布者從CA機構(如VeriSign)申請數字證書;
2. 發布者開發出代碼;藉助代碼簽名工具,發布者將使用MD5或SHA算法產生代碼的哈希值,然後用代碼簽名證書私鑰對該哈希值簽名,從而產生一個包含代碼簽名和軟體發布者的簽名證書的軟體包;
3. 用戶的運行環境訪問到該軟體包,並檢驗軟體發布者的代碼簽名數字證書的有效性。由於VeriSign根證書的公鑰已經嵌入到用戶的運行環境的可信根證書庫,所以運行環境可驗證發布者代碼簽名數字證書的真實性;
4. 用戶的運行環境使用代碼簽名數字證書中含有的公鑰解密被簽名的哈希值;
5. 用戶的運行環境使用同樣的算法新產生一個原代碼的哈希值;
6. 用戶的運行環境比較兩個哈希值。如果相同,將發出通知聲明代碼已驗證通過。所以用戶可以相信該代碼確實由證書擁有者發布,並且未經篡改。
整個過程對用戶完全透明,用戶將可以看到軟體發布者提示信息,並可以選擇是否信任該軟體發布者。在選擇信任軟體發布者之後,運行所有該軟體發布者簽名的程式時將可以不再收到任何提示信息。
代碼簽名證書種類
不同數字認證公司提供的代碼簽名分類不同,以下分類按照代碼簽名證書產品類型劃分。
VeriSign 作為國際頂級的認證機構(CA),支持以下所有產品並且兼容性最好。其中微軟徽標認證證書、微軟移動代碼簽名證書、Brew代碼簽名證書是 VeriSign 專有的產品。其他代碼簽名證書產品則可以有更多的選擇餘地。
(1) 代碼簽名數字 ID(Code Signing Digital IDs): 主要包括:微軟代碼簽名證書 (Microsoft Authenticode Digital ID) :數字簽名 .exe, .dll, .cab, .msi, .ocx, .sys, .cat, .vbs;火狐控制項(FireFox Extension)簽名證書:數字簽名 .xpi; Java 代碼簽名證書 (Sun Java Signing Digital ID) :數字簽名 Sun J2SE/J2EE 的 Java Applet 檔案,以及數字簽名 J2ME MIDlet Suite 檔案,支持業界最多型號和最多品牌的手機。 OFFICE宏代碼簽名證書 (Microsoft® Office and VBA):數字簽名 Office VBA 及宏代碼;Adobe AIR代碼簽名證書 (Adobe® AIR™);數字簽名 .AIR 桌面應用程式;Shockwave代碼簽名證書 (Macromedia Shockwave®);數字簽名使用Macromedia® Director® 8 Shockwave Studio創建的應用程式。
(2) 微軟產品徽標認證證書 ("Designed for Windows logo" Digital IDs) :用於數字簽名微軟 Windows Logo 認證的各種軟體、硬體驅動程式等,提交已經簽名的軟體給微軟測試認證,還包括微軟 Windows Hardware Quality Labs (WHQL) testing programs(Windows 硬體質量實驗室測試計畫 ) 認證。用戶在向微軟提交註冊申請前,必須首先獲取一張微軟代碼簽名證書 (Microsoft Authenticode Digital ID)。在獲取微軟代碼簽名證書後,對微軟Windows Logo 認證的各種軟體、硬體驅動程式等進行數字簽名,而後將已簽名的軟體給微軟測試認證。從 Windows Vista開始,微軟在x64位的系統上強制推行數字簽名,沒有經過WHDL和RDS認證並數字簽名的硬體驅動程式將無法在Vista x64版本上成功安裝。在後續的Vista版本上,微軟會逐步加強對數字簽名的要求,最終要求所有的應用程式必須經過簽名才能在Windows系統上運行。
(3) 微軟移動代碼簽名證書 (Authenticated Content Signing for Microsoft Windows Mobile)(簡稱ACS,現已更名為Code Signing Account for Microsoft® Mobile2Market):支持使用微軟 Windows Mobile 的 SmartPhone 和 Pocket PC 的移動終端作業系統的移動套用軟體的非特權簽名和特權簽名,以確保移動下載的軟體代碼在移動終端 ( 如智慧型手機和 PDA) 的安全。
(4) Brew代碼簽名證書 (Authentic Document IDs for BREW) :用於數字簽名高通公司推出的無線二進制運行開發操作環境下的 基於CDMA網路 "無線網際網路發射平台" 上增值業務開發運行的 Brew 代碼。支持高通公司 (Qualcomm)BREW 系統的 BREW 套用代碼的數字簽名,以確保 BREW 檔案的安全套用。
(5) Symbian代碼簽名證書 (Symbian Siged) :用於數字簽名 Symbian S60 作業系統的智慧型手機下的 sis、sisx 格式檔案。
(6) Adobe PDF代碼簽名證書 (True Credentials® for Adobe) :用於數字簽名 Adobe PDF 文檔。
(7) Apple 代碼簽名證書
Code Signing Certificate for Apple
可以讓軟體開發商使用此簽名證書在證書有效期內不限數量的對 Apple作業系統上運行的代碼進行數字簽名。