摘 要: 随着计算机技术的发展, 基于 单片机 的软件狗成为目前的主流。USB以其特有的打包方法、编码格式、结构特性取代了以往的并口软件狗。据此设计了一种USB软件狗, 给出了相应的软件和硬件设计, 重点介绍其加密原理, 并对其安全性进行分析。
1 引 言
随着计算机技术的发展, 计算机软件作为特殊商品在信息时代越来越重要。但是由于计算机软件的易拷贝性, 各种软件盗版、侵权现象不断发生, 软件加密技术应运而生。它分为软加密和硬加密两类, 所谓软加密就是用纯软件的方式, 在程序中使用一些独特的软件算法或其它手段来验证使用者的合法性, 其特点是成本低, 但加密强度不高, 易被破解;硬加密则是采用软件与硬件配合, 通过硬件来控制软件运行的加密方法, 如密钥盘、加密卡、软件狗等方法, 其加密性能好, 不象软件那样有易复制性, 所以从理论上讲, 它比软加密要可靠一些。而综合分析硬加密的技术指标如可靠性、读写速度、破译程度、占用主机资源等, 软件狗是一种较好的加密方法。因此, 目前在市场上获得了广泛应用。
2 软件狗的发展及原理
软件狗技术的发展经历了四次更新换代。第一代是 存储器 型的加密狗, 工作时插在微机的并行口上, 通过对并行口读取数据来判别软件狗存在与否、密码正确与否, 从而决定软件是否运行。这种软件狗因为内部结构过于简单, 很容易被人检测破译。
第二代软件狗采用低功耗逻辑 集成电路 , 在 电路 设计上做了一些加密工作, 例如对数据位的反相、移位、交叉等, 破译时比前一种困难, 起到一定的加密功能。第三代软件狗采用可 编程器 件, 由于这类器件本身就含有加密保护单元, 很难读出, 增加了破译难度[ 3] 。
但是随着黑客攻击手段的提高, 前三代已经不能满足保密要求, 第四代以单片机为核心的软件狗产生了。它不像以往软件狗只能输出固定的密钥,而是按一定的算法对写入和读出的数据进行变换,也可以将被保护软件的重要模块移植到软件狗中,使得软件狗成为被保护软件不可缺少的一部分。这样软件与软件狗实现了真正的无缝连接, 极大提高了解密的难度, 有效防止了软件跟踪和逻辑 分析仪 的分析以及对程序的破坏性解密, 从而有效保护了软件不被侵权。
USB 是在 1994 年底由Compaq、IBM、M ICroSOFt等多家公司联合提出的一种新型通用串行 接口 技术, 它具有真正的即插即用和热插拔功能, USB 2. 0的高速设备可达480Mb /S的速度, 以其独有的优势, 如安装拆卸方便、 总线 资源丰富、打包方法简单、设备独立等逐渐取代了其它单片机加密狗, 基于此,设计了一种基于USB2. 0控制器的软件狗。
3 U SB2. 0软件狗总体体系结构及关键技术
3. 1 USB2. 0软件狗的工作原理
传统意义上的加密就是防止信息泄露, 其基本过程为将消息(明文)经过某种算法进行加密, 形成密文, 再经过解密将密文转变为明文, 以达到信息不被窃取的目的, 而软件狗则是加密技术在信息领域中呈现出的一个全新概念。它的作用并不是防止信息泄露, 而是为软件开发者提供用户使用权限认证或运行许可, 与传统的信息加密概念有着明显的区别。因此, 设计过程中加密算法的实现不是研究的主要内容, 需要把工作重点放在如何防止调试 工具 对软件狗数据传输的跟踪, 以达到难以破解或者不能破解的目的。
一般的软件狗工作原理如图1所示。
图1 USB 软件狗加密保护流程图
图1中列出了6个步骤, 描述了从插入USB软件狗到完成一次软件合法性检验的全过程。软件狗对随机数的加密在硬件中进行, 其结果返回PC 机并经PC 机中软件的解密算法解密。通过检验解密后的数据是否和原随机数保持一致来鉴别是否插入合法的软件狗硬件, 从而达到软件保护的目的。
不难看出, 步骤3 和4中传送的随机数容易被多次跟踪分析, 解密者可以根据得到的这一系列数据对, 设计出相关的模拟软件, 那么就需要在这个随机数上进行改进。
本设计中采用的是将USB 软件狗的PIN 码保护和动态口令相结合的方法。PIN 码在PC 上输入,在用户不取走USB软件狗时易被解密者捕获, 从而获得虚假认证, 可是如果使用了动态口令, 每次的口令不同, 解密者很难进行破解。动态口令是一种让用户密码按照时间或者使用次数不断变化、每个密码只能使用一次的技术, 即使解密者获取了几个动态口令, 那么他也无法预知或者推算下一次或者下下次的动态口令, 无法在使用时间或者使用次数上形成连续性。本设计的USB2. 0 软件狗加密保护流程如图2所示。
图2 USB2. 0软件狗加密保护流程图。
3. 2 硬件实现
本设计中采用 Cypress 公司推出的 CY7C68013A 芯片, 该芯片属于EZ- USB FX2系列芯片, 是世界上第一个集成USB2. 0 协议的 微处理器 , 它支持 12Mb / s的全速传输和480Mb / s高速传输。
CY7C68013A芯片结构包括增强型 8051 处理器、串行接口引擎( SIE )、USB2. 0 收发器 、16KB 的RAM、4KB的FIFO 存储器、数据总线、地址总线以及通用可编程接口( GPIF)等, 如图3所示。
图3 CY7C68013A 芯片结构图。
USB 加密狗一般由USB 控制器、单片机、外接存储器构成, 而CY7C68013A 将三者集成为一个芯片, 使硬件实现变得非常简单, 只需配置好外围电容、 电阻 即可。芯片提供了0、1、2、4、6、8 几个端点, 端点0和端点1仅由固件访问, 由于其余端点都是单向访问的, 在此使用端点2和端点6, 用于数据的发送和接收。
该芯片集成的增强型8051比标准8051有更快的执行速度以及更大的存储器空间, 因此, 它可以在较短的时间内完成比较复杂的算法, 而且不需另外扩展存储空间。芯片内部还有一个串行接口引擎S IE, 由它来完成大部分USB2. 0协议的处理工作,这样大大减轻了固件程序的工作量。
3. 3 软件设计
软件设计主要包括三部分: 芯片固件程序、设备驱动程序、PC应用程序。
Cypress公司的EZ- U SB FX2 开发套件 提供了完整的CY7C68013A 驱动程序源代码、固件的框架、 控制面板 程序, 方便用户开发, 缩短了开发周期。本设计中的驱动程序就是对FX2开发套件中所带的驱动程序进行修改而得到的。利用提供的固件框架完成设备的初始化, 使用端点2和端点6的实时传输方式, 实时得到动态产生的PIN 码。
在本设计中, PC 应用程序是指与加密狗的接口程序, 选用VC6. 0 为开发平台来开发应用程序, 利用C reateF ile得到USB 句柄, 使用D ev iceIoControl函数来进行数据的接收和发送, 并编制U SB 软件狗的主机接口函数, 将接口函数封装于usbdog. d ll文件中, 供被保护软件调用。
使用开发套件中提供的控制面板程序可以调试程序, 验证应用程序传输数据的准确性。
4 结束语
USB2. 0软件狗和其他软件狗相比有其独有的优越性。首先, USB 凭借其即插即用极大地方便了用户使用, 免除了开机箱和重启动的麻烦, 能够为个人笔记本电脑提供一个具有快速通信能力的数据加密设备。第二, USB2. 0的高速数据传输能力保证了运行过程中的动态加密, 其特有的打包方法和编码格式, 增加了加密数据在传输过程中被截获及解密的难度。第三, 采用USB 软件狗的PIN 码保护和动态口令相结合的方法, 避免了解密者获取和推算动态口令。第四, 本设计中采用Cypress 公司的CY7C68013A 芯片作为主芯片, 使得硬件电路设计简单, 占用空间小, Cypress公司提供的套件开发固件程序和驱动程序, 用VC6. 0 开发加密的软件平台, 极大地缩短了开发周期。
作为USB2. 0 技术和软件狗技术相结合的产物, USB 软件狗无疑会具有十分强大的生命力。