由于工作关系,在编程生涯中用过的加密狗不下10种,常常有后生问我加密的问题,太浅,基础到不想回答,类似加密狗是不是把软件加密了?加密狗的用什么加密算法等等,第一要自己搞清楚软件加密概念,软件加密的方式很多,基本原理是确认一个正确设备而不是加密软件本身,确认硬件的方式从简单的读一个数出来到在硬件内部写程序代码配合软件使用……其最终之目标跑不出对硬件设备的确认这个终极目的;第二误区是加密狗的算法,加密狗和加密算法没有必然联系,加密狗可以用通用加密算法来对数据做处理,也可以用自定义的加密算法(也不一定是加密算法)或 不用算法只是数据或程序中的一部分计算等等,不管用什么东东,落脚点还是在设备确认上面。毕竟加密狗是控制软件盗版,不让胡乱拷贝盗版,和纯粹的数据加密有些不同。通俗地讲加密狗里可能用加密算法(对称、非对称),也可能不用,都能达到确认设备的目的,具体怎么达到确认设备的,八仙过海去吧,加密狗只是提供了一个实现目的基础工具而已,就好像厨子做菜需要佐料(不用佐料的厨仙不在讨论之列,后生们勿扯淡闲谈),但不同的厨子会以不同方法用这个料,做出来菜的味道也各式各样,乱七八糟,方法太多,有闲另论。这里先说说我用过的、还能记得起来的几个“料”,以供后生参考。
养狗的就那么几家:Safenet、飞天、深思、蓝宇风、龙脉、素志、坚石、域天、和升达……还有么,有,不记得或没听说过了。对比方案、上手难度、开发、加密强度、硬件性能…..几家的锁各有优缺点,同级别、同类型的加密锁上没有产品有压倒性技术优势。这里针对几款可以内嵌代码的加密锁进行比较
上手难度:
宏狗: SafeNET的,文档中规中矩,按照帮助文档可以快速的入门,相关开发套件方面比较容易使用。demo方面几乎涵盖了所有主流语言的示例(包括Linux平台),其中包含动态库和OBJ(Linux下为.o文件)的测试demo及相源码。宏狗开发套件中提供了一个下位机的IDE,所以不需要另外安装,同时内置了下位机的代码调试功能,这样可以更快速的解决相关问题。
精锐4: 深思洛克的,整体的加密设计也采用了宏狗类似的加密方式,理解起来比较易懂。文档方面把整个文档分成了几个部分,更利于查阅。同样支持多种语言进行开发,相关demo除了带界面的示例的还有一些控制台下的简单调用,这样更加有利于对相关功能的理解。IDE需要另行下载,提供了一个模板,直接导入就可以直接进行开发。不过精锐4的开发套件相对简单了一些,如果进行反复的开发可能会产生冗余,而且给人的感觉是精锐4在抄袭宏狗。
Rockey6: 飞天诚信的,帮助文档比较详细,提供了一个生成相关代码的工具,可以生成相关功能的代码。代码生成工具只支持VC、VB、delphi、JAVA相关代码的生成。Rockey6也提供了多种语言的接口,同时提供一些下位机的示例。这样有利于对下位机进行开发Rockey6目前在Vasta之后的操作系统中需要管理员权限才能正常调用,很多人可能在第一次找不到硬件。下位机开发同精锐4一样需要另行下载一个IDE,不过需要进行相关的配置工作。
Ucode3000: 素志科技的,这款狗做法有些特别,不像前面几个狗那样按设计功能编译成单个文件下载到狗里,而是把所有功能集成到一个文件中下载到狗里,然后以功能号的形式调用。这种做法在接口设计上简洁干净,使用起来也很灵活,但初次使用时需要好好研究一番。支持多种语言,IDE直接使用,下位机提供可以直接修改后使用的Demo,方便快速开发。
宏狗 | 精锐4 | Rockey6 | Ucode3000 | |
Windows | DLL+OBJ | DLL+LIB | DLL+LIB | DLL+LIB |
Linux | .SO+.O | .SO | .SO | .SO |
Mac | 支持 | 支持 | 不支持 | ? |
JAVA | 支持 | 支持 | 支持 | 支持 |
宏狗 | 精锐4 | Rockey6 | Ucode3000 | |
程序示例 | 几乎涵盖所有程序语言示例 | 示例程序都是简单的代码,可以快速理解 | 提供一个用于速查的帮助程序 | 示例程序比较详细,多种语言demo |
库支持 | 静态+动态 | 静态+动态 | 静态+动态 | 静态+动态 |
IDE | 提供,并且可以进行调试 | 需下载,配置环境可以导入 | 需下载,配置环境需要手动设置 | 无需配置,demo可导入使用 |
相关工具(除必须工具外) | 诊断工具、远程升级工具 | 用户测试工具、远程升级 | 代码生成工具、错误信息查找工具 | 远程升级工具、远程密调工具 |
开发:
宏狗: 提供比较全面的API接口,包括针对锁内文件系统的管理、相关口令的查询、认证及加密解密相关函数。由于宏狗需要驱动,所以提供了相应的驱动接口,这样可以进行相关驱动的整合,不过提高了软件开发的工作量。下位机方面因为提供了相应的开发工具,直接就可以使用,可以很便利的开发出相关下位机程序。宏狗的目录结构可能不太适合国内,总感觉有点不太适应。
精锐4: 提供相应功能的API进行调用,其中包括了硬件必须的函数,不过没有提供一个可以速查各类函数的文件或者工具。下位机需要下载,不过可以通过配置文件进行快速的配置,使用C51进行编程,兼容C语言。针对下位机的开发精锐4提供了一个比较完善的函数库,可以进行便利的开发。
Rockey6: 提供相应的API进行功能的调用,同时可以通过简单的示例更精确的了解具体函数的具体功能。不过Rockey6的下位机程序需要每新建一个工程就要配置一次,这样非常不利于开发。Rockey6的超级密码如果连续15次错误将会被锁死,锁死后需要返厂初始化,所以在开发的时候需要非常小心。
Ucode3000: API很少,但功能设计比较强大,初看简单,使用起来需要一番琢磨。以数据块进行参数、功能号的传入传出,使用起来有些晦涩不易理解。自己可控制的东西比较多,尤其是下位机的发挥空间大,如果熟悉后,使用非常顺手,能灵活定义自己想要的功能。超级密码无锁死限制,不过该锁机制是只能写入,无法读出,倒也无安全性问题。
配套的相关工具:
宏狗: 驱动检测及安装、编译工具、开发商工具、诊断工具、远程升级工具。
精锐4:开发工具、用户测试工具、远程升级工具、代码诊断工具。
Rockey6:远程升级工具、代码生成工具、错误代码查询工具、浮点数二进制转换工具。
Ucode3000:开发商编译工具、远程升级工具、远端密调工具、光盘存储区烧录工具。
宏狗 | 精锐4 | Rockey6 | Ucode3000 | |
IDE | 自带 | 需下载 | 需下载并进行相关设置 | 自带 |
Win7管理员权限 | 不需要 | 不需要 | 需要全部 | 不需要 |
远程升级 | 可用API | 可用API | 可用API,并且有相关demo | 整体文件或API局部升级 |
内部空间 | 1K | 64K | 约70K | 120K |
内核 | ? | 智能卡16位 | 智能卡32位 | 智能卡32位 |
Linux | 支持 | 支持 | 支持 | 支持 |
浮点 | 不支持 | 软支持 | 软支持 | 软支持 |
算法支持 | ? | RSA、AES | RSA、DES | DES、AES、SSF33、SM1、RSA、ECC、SCH4、HASH |
加密机制:
宏狗:具有2级文件系统,可以进行读写非执行文件,在连接加密锁时需要输入密码,密码为8位字符密码。文件系统如果频繁使用需要进行定期整理。不过宏狗的加密硬件性能过低,所以不可能把大量的下位机程序写入锁中,这样有可能被破解者反推出相关函数内容。
精锐4:机制类似宏狗,相对宏狗来说,该款锁不可导出锁内的文件,只能写入。而且锁的硬件性能有所提高,所以支持写入更多的下位机程序而不会影响整体性能。
Rockey6:加密机制类似,但缺点是内部的文件如果权限不当则可以直接通过开发工具导出,而执行文件则不能导出。虽然执行文件不会被导出,可锁内文件的读取不设限制还是会降低加密锁的加密强度。
Ucode3000:加密开发机制有较大差别,功能集成度高,灵活性和速度是其优势所在,可以做到按需定制了。但该锁不太好上手,初次使用有些难度。支持远程对锁内文件覆盖升级和远程密调功能局部升级;硬件性能不错。
总结:
四家锁各有优缺点,宏狗用户感受设计比较好,相关工具比较全,不过硬件性能偏低;精锐4可以看成宏狗的简版,但硬件性能比宏狗好;Rockey6硬件性能不错,开发方式类似宏狗,不过开发起来是几家中最费事的;Ucode3000比较另类,上手慢,但速度快,使用灵活。