代碼簽名證書

代碼簽名證書

代碼簽名證書為軟體開發商提供了一個理想的解決方案,使得軟體開發商能對其軟體代碼進行數字簽名

通過對代碼的數字簽名來標識軟體來源以及軟體開發者的真實身份,保證代碼在簽名之後不被惡意篡改。使用戶在下載已經簽名的代碼時,能夠有效的驗證該代碼的可信度。

基本介紹

  • 中文名:代碼簽名證書
  • 外文名: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 作業系統中彈出的「不明發行商」。

熱門詞條

聯絡我們