複製鏈接
請複製以下鏈接發送給好友

代碼簽名證書

鎖定
代碼簽名證書為軟件開發商提供了一個理想的解決方案,使得軟件開發商能對其軟件代碼進行數字簽名
通過對代碼的數字簽名來標識軟件來源以及軟件開發者的真實身份,保證代碼在簽名之後不被惡意篡改。使用户在下載已經簽名的代碼時,能夠有效的驗證該代碼的可信度。
中文名
代碼簽名證書
外文名
Code Signing Certificate
應    用
其軟件代碼進行數字簽名
作    用
身份認證
實現原理
PKI安全體系

代碼簽名證書名詞解釋

要想實現代碼簽名必須首先獲得數字證書才能使用這些功能。並且代碼簽名證書針對不同的平台,其代碼證書品種也不盡相同,因此使用者最好事先諮詢正規的代碼簽名證書的頒發機構,可以針對不同平台的代碼簽名應用,提供不同的代碼簽名證書產品及應用解決方案。
從用户角度,可以通過代碼簽名服務鑑別軟件的發佈者及軟件在傳輸過程中是否被篡改。如果某軟件在用户計算機上執行後造成惡性後果,由於代碼簽名服務的可審計性,用户可依法向軟件發佈者索取賠償,將很好的制止軟件開發者發佈攻擊性代碼的行為。
從軟件開發者和Web管理者的角度,利用代碼簽名的抗偽造性,可為其商標和產品建立一定信譽。利用可信代碼服務,一方面開發者可藉助代碼簽名獲取更高級別權限的API,設計各種功能強大的控件和桌面應用程序來創建出豐富多彩的頁面,另一方面用户也可以理性地選擇所需下載的軟件包。並且利用代碼簽名技術,還可以大大減少客户端防護軟件誤報病毒或惡意程序的可能性,使用户在多次成功下載並運行具有代碼簽名的軟件後,和開發者間的信任關係得到鞏固。
從客户端安全防護的角度,經過代碼簽名認證過的程序能夠獲得更高的系統API授權。一些硬件驅動文件或64位操作系統內核驅動文件也要求必須首先經過代碼簽名才能夠在客户端上正確的加載執行。

代碼簽名證書防護白名單

代碼簽名證書的安全防護軟件白名單
相信很多軟件開發者都會面臨一些困擾,那就是剛開發好的程序或為程序升級新版本後,發佈到網上提供用户下載的時候卻被第三方安全防護軟件誤報攔截了。對於第三方安全防護軟件的誤報攔截問題,代碼簽名證書也可以起到一定作用,避免誤報情況的產生。
各大安全防護軟件廠商也會基於證書頒發機構的認證結果,為已經添加有效數字簽名的代碼提升運行等級。代碼簽名證書用户在獲取到簽名證書後,還可以與安全防護軟件廠商協商,依據其代碼簽名證書獲取安全防護軟件廠商的白名單免查殺特權。但安全防護軟件的白名單並不是萬能的。如果一旦發現並核實白名單中的數字證書被用於簽名惡意代碼,數字證書即會被列入到黑名單當中。使用該證書籤名的所有程序都不再受第三方安全防護軟件信任。同時,安全防護軟件廠商可以配合公安機關進行舉證,由證書頒發機構提供頒發證書時獲取的第三方認證的證書持有人信息,追查到代碼簽名證書的真實持有者,使得通過法律途徑追究惡意軟件發佈者的刑事責任成為可能。

代碼簽名證書功能實現原理

代碼簽名的基礎是PKI安全體系。代碼簽名證書由簽名證書私鑰公鑰證書兩部分組成。私鑰用於代碼的簽名,公鑰用於私鑰簽名的驗證和證書持有者的身份識別。
申請數字證書
1. 發佈者從CA機構申請數字證書
發佈者開發出代碼
2. 發佈者開發出代碼;藉助代碼簽名工具,發佈者將使用MD5或SHA算法產生代碼的哈希值,然後用代碼簽名證書私鑰對該哈希值簽名,從而產生一個包含代碼簽名和軟件發佈者的簽名證書的軟件包;
運行環境訪問到該軟件包
3. 用户的運行環境訪問到該軟件包,並檢驗軟件發佈者的代碼簽名數字證書的有效性。操作系統或瀏覽器通過可信根證書列表驗證代碼簽名證書的有效性,確認發佈者身份可信,軟件未被篡改。
使用代碼簽名
4. 用户的運行環境使用代碼簽名數字證書中含有的公鑰解密被簽名的哈希值
新產生一個原代碼的哈希值
5. 用户的運行環境使用同樣的算法新產生一個原代碼的哈希值
用户的運行環境比較兩個哈希值
6. 用户的運行環境比較兩個哈希值。如果相同,將發出通知聲明代碼已驗證通過。所以用户可以相信該代碼確實由證書擁有者發佈,並且未經篡改。
整個過程對用户完全透明,用户將可以看到軟件發佈者提示信息,並可以選擇是否信任該軟件發佈者。在選擇信任軟件發佈者之後,運行所有該軟件發佈者簽名的程序時將可以不再收到任何提示信息。

代碼簽名證書證書種類

不同數字認證公司提供的代碼簽名分類不同,以下分類按照代碼簽名證書產品類型劃分。
(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 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 代碼。
(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操作系統上運行的代碼進行數字簽名
VeriSign 作為國際頂級的認證機構(CA),支持以上所有產品並且兼容性最好。其中微軟徽標認證證書、微軟移動代碼簽名證書、Brew代碼簽名證書是 VeriSign 專有的產品。 VeriSign 國內的代理機構是天威誠信
其他代碼簽名證書產品則可以有更多的選擇餘地。

代碼簽名證書支持代碼

類型的代碼簽名證書,支持的簽名代碼有所不同,這裏以單位代碼簽名證書(多用途版)為例,列出其支持的代碼簽名;
1、Windows內核代碼 .sys, .cat 和其他代碼 .exe, .dll, .cab, .ocx( ActiveX )等文件數字簽名
2、XML 文件數字簽名
3、Adobe AIR的打包文件 .air,.airi等文件數字簽名
4、Silverlight應用加密簽名(.xap)
5、.js文件(JavaScript)數字簽名
6、微軟Office VBA宏數字簽名
7、火狐瀏覽器插件.XPI文件數字簽名
8、Apple Mac 應用程序數字簽名

代碼簽名證書算法升級

微軟自2016年1月1日起更新代碼簽名證書驗籤策略(Windows Enforcement of Authenticode Code Signing and Timestamping),取消對SHA1算法證書在軟件數字簽名驗籤中的支持,並在2017年1月1日起在Windows 10中取消對sha1算法時間戳摘要的支持。
任何在2016年1月1日之前使用SHA1算法證書籤名的文件(簽名需含時間戳),在Windows 7及以上版本操作系統中的驗籤可正常支持到2020年1月1號。
2016年1月1號之後,使用SHA1算法證書籤名的應用模式文件,在Windows 7及以上版本操作系統中不被支持。
2017年1月1日之後,使用sha1時間戳摘要的簽名(/td sha1),在Windows 10操作系統應用模式文件中不被支持。因RFC3161新版sha256時間戳在Windows 7 以下版本系統中不受支持,2017年1月1日前的單簽名文件,仍推薦使用舊版時間戳及sha1算法時間戳摘要(/t)。
軟件開發者應充分了解微軟對代碼簽名證書算法的最新要求,根據應用情況靈活使用sha1證書單簽名、sha256證書單簽名或雙簽名方式,確保文件數字簽名的的兼容性不受影響。

代碼簽名證書使用好處

開發商所發行的代碼程序或內容若通過代碼簽名驗證可提升軟件的下載、採用率和發行率。
減少代碼程序及內容出現錯誤訊息和安全性警告,建立品牌的信任關係。
防止使用者下載到含有惡意檔案的代碼程序及內容。
終端使用者透過互聯網和行動網絡下載、安裝代碼程序和內容時,由系統跳出開發者的信息,大幅提高安全性。
確保終端用户知道該軟件是合法的,且該代碼自發行以來沒有被篡改過。
代碼簽名證書可消除 Internet Explorer 以及 Windows 操作系統中彈出的「不明發行商」。