四款数字证书代码签名工具横向评测
感谢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最能保证安全性和兼容性,所以这四款软件基本都能满足软件开发商(尤其是不熟悉代码签名部署的开发人员)对于代码签名的需求。
CodeMeter软件保护及授权管理解决方案(一)
概述
CodeMeter是德国威步(Wibu-Systems AG)2004年1月推出的软件加密及授权管理综合解决方案,用于软件保护实现防盗版、软件授权管理实现软件货币化、以及数据加密实现数字资产保护。
使用CodeMeter综合解决方案,可以实现以下价值:
保护产权: 保护软件知识产权确保软件产品的竞争优势;
创造收益: 通过软件保护及授权方案防止侵权使用,帮助软件开发者赢得更多商机;
降低成本: 通过自动化授权管理工具,帮助减少软件授权创建、分发及管理过程中的成本;
软件货币化: 通过SaaS模式、按使用付费、订阅式服务、租赁服务、永久授权、服务费等丰富、灵活的授权组合方案,帮助开发者实现软件货币化、无形资产多方式变现。
截止2023年9月,威步公司(Wibu-Systems AG)已发布包括USB接口、Type-C USB接口、SD卡、microSD卡、CF卡、CFast卡等20种硬件加密狗产品,SmartBind、IndividualBind、ExtendBind、NoneBind等4种绑定技术的软授权加密产品,以及云授权及轻云授权产品。
另外,威步公司(Wibu-Systems AG)已发布软件加密工具AxProtector系列8款,ExProtector 3款,授权管理工具License Central, 客户端服务工具Runtime 8款。
产品名称:CodeMeter
上市时间:2004年
所属品牌:Wibu-Systmes
产品类型:软件保护及授权管理解决方案
主要算法:256位AES对称算法、224位ECC非对称算法、4096位RSA非对称算法
质量认证:VDE、UL 、CE、FCC 、VCCI 、WEEE、UKCA、BSMI、ACMA、EAC、ROHS、REACH、ISO9001、ISO 27001
支持操作系统:Windows、Linux、Android、MacOS、RTOS、QNX、VxWorks、CodeSys等
支持的开发语言:C/C++、.Net、Python、Java、JavaScript等
研发公司:Wibu-Systmes
代表产品:CmDongle、CmActLicense、CmCloud、CodeMeter License Central
典型用户:Rockwell、Bosch、Simens、Cognex、Daimler、BYD、Dji、Face++、Dr. Bridge、UnitedImage、Sirona
产品沿革
2001年CodeMeter申请多项专利
2003年CodeMeter正式推出包含顶级安全芯片的加密狗;提供128位AES算法、224位ECC算法、1024位RSA以及SHA-256算法库接口;提供64中存储空间用于存放超过1000个以上的许可证;加密狗内部包含防篡改时钟;远程安全更新固件;
2004年CmStick获iF设计大奖,并推出全金属加密狗及U盘加密狗;
2008年推出CmActLicense软授权;
2009年推出授权管理平台CodeMeter License Central;
2010年推出miroSD、SD、CF等形式的CmCard加密狗;支持嵌入式系统Wind River VxWorks;
2011年推出CmStick/C(全球最小加密狗)及CmStick/T(实时时钟加密狗);
2012年升级算法库至2048位RSA;同时支持HID及MSD驱动;支持CodeSysIEC1131开发环境;
2013年支持QNX;推出CmCard/CFast;
2014年核心加密芯片切换至更广温度范围及最先进安全认证支持的英飞凌安全芯片;推出CmEmbedded嵌入式系统加密解决方案、推出适用于PC、PLC及嵌入式系统的综合平台CodeMeter Protection Suite;
2015年推出支持FPGA及微处理器的CmµEmbedded;推出第三代CmDongle支持更广温度范围、适应恶劣环境及通用母锁(UFC:同时支持硬件加密狗及软授权);
2016年推出完美品质海派世通存储芯片的U盘加密狗;推出温度-40~105度的VQFN-32封装的ASIC芯片加密狗;
2017年推出全新一代CmStick/B及CmStick/BMC,采用SiP封装技术,结构紧凑、坚固耐用、精致美观;推出Blurry Box安全技术;
2018年推出包含pSLC存储芯片的CmStick/BMI;
2019年推出CmCloud云授权;CmStick/D Type-C USB加密狗,提供不包含存储、包含MLC或pSLC存储芯片三种选择;推出IP Protection纯软件加密解决方案;CmEmbedded支持Linux MIPS;
2020年支持 BlackBerry’s popular POSIX-compliant QNX® Neutrino® 实时操作系统;
2021年推出AxProtector Python;AxProtector JavaScript;
2022年推出发布3D打印工厂加密及授权系统;发布CodeMoving技术。
产品组成
CodeMeter综合解决方案主要由以下四部分组成:
软件加密工具:AxProtector & IxProtector以及Core API软件授权产品:硬件加密狗、软授权以及云授权软件授权工具:License Central、License Editor、Command Line、HIP客户端管理工具:CodeMeter Contral Center (Runtime)软件加密工具
CodeMeter解决方案的核心工具为软件加密工具,用以保证软件版权及软件代码的安全。目前主要提供AxProtector全自动加密工具、IxProtector自定义加密工具以及Core API工具,以满足不同的加密应用场景及达到不同的安全标准。
AxProtector全自动加密工具
AxProtector工具包括代码加密、资源加密、反调试工具、授权锁定、完整性校验、混淆、防止反编译、防止反汇编、数据加密、自动陷阱、按需解密技术等加密技术,能防止常见的代码调试、静态分析、动态调试、内存转存、录制回放、驱动模拟等各种破解手段。
AxProtector加密引擎一旦检测到调试跟踪、更改密钥、入侵检测等破解行为即刻自动启动授权锁定功能以阻断攻击。
IxProtector自定义加密工具
结合AxProtecotr使用IxProtector工具加密,代码总是在运行时解密和加密,并使用智能缓存以最大化性能和安全性。开发者也可以定义何时对本机应用程序进行解密。对于.net应用程序,IxProtector会自动实现相应处理。此外,开发者可以在加密选项设置单独控制,从而采用简单而有效的方式实现“按需配置授权”。
Core API
除了全自动加密及自定义加密工具之外,强大的Core API工具可以实现更高安全级别的加密强度及更为灵活的授权设定。
Core API 增加包括代码移植、非对称算法签名认证、加密锁内数据读写、数据陷阱等加密方法。CoreAPI结合AxProtector、IxProtector可达到顶级安全强度,特别是在通讯模拟、内存补丁、代码反编译等破解手段方面有较强的防范。
软件授权产品
CodeMeter技术可提供高达40亿个授权模块,其中6000个可存放于硬件加密狗CmDongle中,其他可存放于软授权CmActLicense中按需激活,CodeMeter云授权CmCloud也可以无任何限制的为“云中软件”提供灵活的授权控制。
CodeMeter安全时钟模块采用了独特的设计理念,基于虚拟实时时钟对硬件狗CmDongle和软授权CmActLicense中的授权时间进行全面保护。
CodeMeter授权包括单机授权、网络授权、永久授权、订阅式服务、试用版、分模块授权以及按使用付费许可,所有授权均可采用离线或在线方式更新。
根据软件应用场景的不同,软件开发者可自由选择以上授权需要存放的许可容器中,如硬件加密狗CmDongle,或软授权CmActLicense以及云授权CmCloud中。
CmDongle硬件加密狗
CmDongle硬件加密狗为CodeMeter技术的核心组件其核心组件,内置EAL+安全认证的英飞凌智能卡(Smart Card)芯片,包含384kByte的安全存储量,内置256位AES专业算法、224位ECC椭圆算法、4096位RSA非对称算法以及DSA-256算法,内部硬件随机数发生器保证通讯安全,高品质晶振提供安全时间控制,全球唯一序列号方便溯源防窜货、工业级品质-40ºC~105ºC温度可选。
CmActLicense软授权
CmDongle硬件加密狗包括USB(Type-A,Type-C)接口的CmStick产品,microSD、SD、CF、CFast接口的CmCard卡产品以及VQFN-32封装的ASIC芯片加密狗。CmActLicense 软授权是无需任何硬件组件即可实现软件保护和授权管理的方案,是 CodeMeter 产品系列的重要组成部分,其完全兼容 CodeMeter 核心技术,与 CmDongle 硬件锁、CmCloud 云锁共同组成完整的产品线,适用于多种不同应用场景。
CmActLicense 软授权技术通过对许可证文件进行签名和加密以实现安全性、完整性及唯一性。开发者决定是否需要将 CmActLicense 许可证与用户设备绑定,并自由选择绑定方式。CmActLicense 许可证本身采用了独特加密方式,所有密钥均能安全、保密地存储于用户设备上。通过 CmActLicense,开发者可使用128(256)位 AES、224位 ECC、2048(4096)位 RSA 等加密算法对数据进行加解密处理或实现签名认证。
CmActLicense 软授权提供以下多种不同绑定技术。
SmartBind 智能绑定
CodeMeter SmartBind 智能绑定技术为威步专利技术,用于实现将软授权与特定设备绑定,并可有效平衡安全性和灵活性。CodeMeter SmartBind 智能绑定技术使用多种绑定条件(包括硬盘、主板、网卡或计算机的主处理器)并权衡一系列识别特征,从而创建用户计算机的数字指纹。该指纹会自动进行调整,以判断当前硬件和操作系统环境的变更。如果识别出虚拟环境,也可强制无法运行。
BindingExtension 扩展绑定
Binding Extension 扩展绑定技术主要应用于绑定第三方硬件指纹。
Individual Binding 独立绑定
CodeMeter 提供以下独立绑定技术,帮助软件开发商预设绑定类型,以满足不同的应用场景: 电脑硬件绑定(硬盘驱动器 (D)、网卡(N)、 CPU (C)、主板 (B))、随机数生成器,机器唯一编码 SID、IP 地址。
NoneBinding 无绑定
使用无绑定技术创建无需激活即可使用的软授权。无绑定软授权不绑定任何计算机硬件指纹,预先激活之后可以导入到任意设备中,导入后,该授权将与客户端计算机的系统绑定,并安全地存储许可证和加密密钥。无绑定授权主要提供以下两种方式供软件商选择:
■ Trial License 试用授权
授权不绑定任何硬件或属性,且需设定90天以内的试用时间,可无限量应用于软件试用。Trial License 授权在用户电脑中能且只能导入一次以实现有时间限制的软件试用。
■ Protection Only 纯保护授权
Protection Only 技术可以实现代码保护、防止软件逆向且无需授权控制。Protection Only 技术也可灵活设定使用时间,更方便的实现软件试用。Protection Only 授权的加密密钥安全地存储在软授权文件中,该文件本身完全独立,极为有效地阻止了所有逆向工程的尝试。
CmCloud云授权
CmCloud为云端授权解决方案,允许开发者将许可证存储于云中,软件用户可以直接从云端获取和管理许可证。
相对CmDongle硬件加密狗及CmActLicense软授权,CmCloud无需在本地激活,云授权存放于云中许可容器中,软件最终用户通过证书方式安全访问云中授权。
CmCloud云授权的敏感数据(许可证密钥等)安全存放于云中,授权运行时不映射至本地内存中,且用户通过移动证书方便切换使用终端。因此,相比软授权,云授权更方便移动且安全性更高,特别适用于运行于云平台的软件授权管理。
开发者使用CmCloud Dashboard工具导入许可证更新,也可通过CodeMeter SDK提供的CodeMeter许可证编辑器、CmBoxPgm或CodeMeter license Central创建或更新CmCloud云许可。
CodeMeter许可容器列表
软件授权工具
高强度的加密方案用于实现防盗版、防止逆向工程及代码篡改,灵活的授权管理则可进一步提升软件销量。CodeMeter提供以下不同的软件授权工具:
图形化工具License Editor
简单易用的图形化界面工具,可直观快速的编辑硬件狗 CmDongle 内授权内容。
命令行工具CmBoxPgm
该工具可批处理创建授权许可。
CodeMeter License Central 桌面版
该工具可在局域网内实现许可的创建和管理,并保存至数据库中。
CodeMeter License Central 企业版
该工具可以与企业CRM 、ERP 或电子商务平台整合对接并提供许可在线激活功能。
以上所有工具都是基于威步HLP、API函数编译而成的,开发者也可以通过这些API自定义编写编辑工具,以满足企业内部特殊需求。
无论软授权CmActLicense还是硬件狗CmDongle介质,以上授权编辑工具均可以使用远程授权文件进行创建、编辑和删除授权的操作。
相关问答
ECC 是什么意思呢?ECC是“ErrorCorrectingCode”的简写,ECC是一种能够实现“错误检查和纠正”的技术,ECC内存就是应用了这种技术的内存,一般多应用在服务器及图形工作站上,可...
ecc 错误是什么意思?ECC是"ErrorCorrectingCode"的简写,中文名称是"错误检查和纠正"。ECC是一种能够实现"错误检查和纠正"的技术,...
ecc 是什么?ECC是“ErrorCorrectingCode”的简写,ECC是一种能够实现“错误检查和纠正”的技术,ECC内存就是应用了这种技术的内存,一般多应用在服务器及图形工作站上,可...
内存 ecc 校验错误开不了机?您好,内存ecc校验错误可能导致系统无法启动。这种错误通常是由于内存模块故障或不兼容的内存模块引起的。以下是解决此问题的一些步骤:1.检查内存模块是否均...
win10怎么查看内存是不是 ecc ?查看一下内存的型号,在内存的贴纸上,或通过软件检测。型号后面带E的就是ECC内存。比如内存是10600E,就是ECC内存。ECC是“ErrorCorrectingCode”的...查...
ecc 和ddr的区别?1,ecc只是一个功能,而内存的划分是udimm和rdimm;2,recc属于rdimm,而ecc内存包udimmecc和rdimmecc。我们常见的电脑平台,intel的115x只能用udi...
amb变频器故障代码 ecc 怎么处理?AMB变频器故障代码ECC的处理方法如下:检查变频器内电解电容是否漏液,如果漏液,需要更换电解电容。检查电池液是否漏到变频器功率模块上,如果漏到功率模块上...
显卡支持 ecc 有什么用?显卡支持ECC(ErrorCorrectionCode)可以检测和纠正内存中的错误,从而提高系统的稳定性和可靠性。对于一些需要高可靠性的应用,如服务器、工作站、科学计算...
ECC 是什么开关?ECC是错误纠正码(ErrorCorrectionCode)的缩写,是一种用于检测和纠正数据传输中的错误的技术。它通过在数据中添加冗余信息来实现错误的检测和纠正。当数据在...
ntkrnlmp.exe 导致win10 64位系统频繁蓝屏重启 - Microsoft ...[回答]蓝屏日志分析可能是nvlddmkm.sys触发的蓝屏问题。nvlddmkm.sys是显卡的驱动程序,请您右击微软徽标,选择设备管理器,找到显示适配器,展开,将目录下面...