感謝ikimi的投遞
代碼簽名是對可移植可執行文件(PE文件)或腳本(如VBS)進行數字簽名以确認軟件作者及保證文件在簽名後未被修改、篡改、破壞的方法。對于普通用戶而言,代碼簽名最直觀的感覺是,在WindowsVista及以上操作系統中,當某個行為觸發UAC時,彈出的對話框,可以清晰辨識發起人的身份。
時至今日,正規的軟件著作權人一般都會對自己的程序進行數字簽名。
對PE文件、腳本文件部署數字簽名,需要代碼簽名數字證書,并使用工具軟件将證書部署到文件中。這種工具軟件就是業内所稱的代碼簽名軟件。筆者作為一名PKI愛好者,就國内四款具有圖形化界面的簽名軟件做一橫評。
測試環境:Windows 10 1803 Build17134.254
簽名軟件:
1、數字簽名工具專業版(開發商:亞數信息科技(上海)有限公司,下文簡稱“TrustAsia”,Symantec/ DigiCert 在華合作夥伴)(自帶測試證書),當前最新版本:3.2.0
2、代碼簽名證書助手(開發商:北京天威誠信電子商務服務有限公司,下文簡稱“天威誠信”,Symantec/ DigiCert 在華合作夥伴),當前最新版本:1.0.16.308
3、沃通代碼簽名工具WoSignCode(開發商:沃通電子認證服務有限公司,WoTrusCA Limited,下文簡稱“沃通”,CA機構),當前最新版本:3.0.1.10
4、環玺信息數字簽名工具(開發商:環玺信息科技(上海)有限公司,下文簡稱“GlobalSign”,GlobalSign中國代表)(自帶測試證書),當前最新版本:1.3.6.1
下文若無特别說明,橫評所用代碼簽名證書:TrustAsia、GlobalSign測試證書(sha1RSA、sha256RSA各一),ikimi(sha256ECDSA)。(說明:sha1、sha256為散列算法,RSA、ECC、DSA為加密算法,ECDSA為ECC、DSA結合體)
評測宗旨:選取與代碼簽名相關的且大衆化的場景,測試場景基本按複雜性、安全性遞增排列。此外,由于代碼簽名設計到多個維度的參數,下述所列場景中,部分維度參數會多重排列組合。
場景1:單簽名(sha1證書sha1簽名)
四款工具均能對文件進行簽名,但需要指出的是,GlobalSign在不添加時間戳時直接報錯“無法獲取SHA1簽名選項!請檢查規則設置是否正确、有效。”無法進行簽名,考慮到代碼簽名過程中添加時間戳不是必須項,因此,不配置時間戳就不能代碼簽名,不妥,這一點筆者早先在使用GlobalSign老版(1.3.5.2)軟件時已發現此問題,并通過QQ、Email等方式反饋給GlobalSign,遺憾的是,當前的最新版(1.3.6.1)仍未修複此問題
場景2:單簽名(sha256證書sha1簽名,微軟交叉簽名)
本例使用的證書路徑,(Microsoft CodeVerification Root) —— VeriSign Class 3 PublicPrimary Certification Authority - G5 —— SymantecClass 3 SHA256 Code Signing CA —— 終端用戶證書(sha256RSA)
TrustAsia、天威誠信、GlobalSign(需配置時間戳)通過,沃通能簽名,但不合需求,簽名無法指定sha1散列算法,簽名散列算法取自數字證書散列算法,無法滿足場景需求,未通過,不過,這個根據數字證書散列算法自動匹配簽名散列算法倒是完全符合場景3的需求
TrustAsia、天威誠信、沃通在進行微軟交叉簽名的時候,可以自動判别證書是否支持微軟交叉簽名,對于不支持微軟交叉簽名的證書,GlobalSign直接提示“簽名失敗!”
TrustAsia提示無法使用該證書進行微軟交叉簽名
天威誠信提示無法使用該證書進行微軟交叉簽名
沃通提示找不到微軟交叉簽名證書
GlobalSign直接提示“簽名失敗!”
場景3:單簽名(sha256證書sha256簽名)
TrustAsia、沃通、GlobalSign均能對文件簽名,其中,GlobalSign出現了與場景1同樣的情形,不能在不添加時間戳的情況下滿足需求;天威誠信可以簽名,但簽名算法為sha1,不合需求,未通過
場景4:雙簽名(sha1證書sha1簽名,sha256證書sha256簽名)
四款軟件均能完成簽名,但GlobalSign仍然需要在添加時間戳的情況下才能完成代碼簽名。
場景5:雙簽名(sha256證書sha1簽名,sha256證書sha256簽名)
TrustAsia、GlobalSign通過,GlobalSign仍然需要在添加時間戳的情況下才能達成本需求。由于本場景的第一部分“sha256證書sha1簽名”同場景2(不考慮是否進行微軟交叉簽名),所以沃通未通過,同時,天威誠信不支持相同散列算法證書同時進行sha1、sha256簽名,所以也未通過。
場景6:追加sha256簽名(已有sha1簽名)
TrustAsia、沃通、GlobalSign(仍需配置時間戳)通過,天威誠信直接用sha256簽名覆蓋原有簽名,未通過。
場景7:已有主簽名和擴展簽名,再追加擴展簽名
因為場景6,所以本場景天威誠信亦不支持,其餘三款軟件,經測沃通和GlobalSign(仍需配置時間戳)通過,TrustAsia對于已有擴展簽名的文件不再追加新的擴展簽名。
需要多個擴展簽名的實例,驅動程序、安全軟件等系統底層的程序,微軟的相關策略所緻。
Nvidia驅動程序
卡巴斯基虛拟鍵盤驅動
以上場景主要考量簽名軟件對于不同需求代碼簽名的支持程度,下面的8-13共六個場景側重于時間戳的部署。
場景8:單簽名部署MSAuthenticode規範時間戳
四款軟件均支持。
場景9:單簽名部署RFC3161協議時間戳
四款軟件均支持。
場景10:雙簽名,主簽名部署MSAuthenticode規範時間戳,擴展簽名部署RFC3161協議時間戳
四款軟件均支持。
場景11:擴展簽名部署MSAuthenticode規範時間戳
沃通支持,其餘三款軟件對擴展簽名僅支持部署RFC3161協議時間戳。
之所以将此場景作為常見簽名類型列入本次測試,是考慮到sha1的弱安全性和WindowsXP SP3不支持RFC3161協議,需要在sha256擴展簽名的情況下同時仍部署MSAuthenticode規範時間戳。
場景12:時間戳支持自定義
沃通支持,其餘三款軟件時間戳的配置固定若幹常見項。
數字簽名工具專業版(TrustAsia)
代碼簽名證書助手(天威誠信)
沃通代碼簽名工具WoSignCode(沃通)
環玺信息數字簽名工具(GlobalSign)
場景13:單獨補簽時間戳
TrustAsia、沃通支持
場景14:命令行操作
TrustAsia、沃通支持
有了命令行工具,便于軟件開發商批量、快速部署代碼簽名。
場景15:支持非RSA加密算法數字證書
盡管RSA加密算法數字證書在代碼簽名領域中市場份額高,但不容否認,ECC加密算法憑借其抗攻擊性強、運算速度快的特點,随着安全等級的提高,RSA加密算法密鑰長度會成指數級增加,而ECC加密算法密鑰長度隻是成線性增加,ECC優勢不言而喻。舉個栗子,128位安全加密需要3072位RSA密鑰,卻隻需要一個256位ECC密鑰,當提高到256位安全加密,則需要一個15360位RSA密鑰,卻隻需要一個512位ECC密鑰。
測試證書CN=ikimi使用的是ECC加密密鑰,密鑰長度384位(散列算法sha256)。
經測試,TrustAsia、GlobalSign可以從系統中正确枚舉出該證書,天威誠信、沃通無法枚舉,若證書是以匙包文件形式存在的話,沃通支持導入,但考慮到CA/BForum已經要求CA必須使用UKEY等硬件設備存儲密鑰,因此沃通僅支持匙包文件形式的ECC加密算法代碼簽名數字證書,本場景測試仍判定為不通過。
數字簽名工具專業版(TrustAsia)
代碼簽名證書助手(天威誠信)
沃通代碼簽名工具WoSignCode(沃通)
環玺信息數字簽名工具(GlobalSign)
總結:從功能點上來說,天威誠信比TrustAsia、沃通和GlobalSign少了一些。
考慮到業内安全需求和CA/BForum制定的策略,對于代碼簽名而言,目前,場景4最能保證安全性和兼容性,所以這四款軟件基本都能滿足軟件開發商(尤其是不熟悉代碼簽名部署的開發人員)對于代碼簽名的需求。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!