深圳市组创微电子有限公司
销售部:158 1687 4032采购部:0755-8299 4126行政部:0755-8299 4126
咨询电话
0755-8299 4141

消费电子

客户成功故事与项目成功案例

单芯片方案的USB加密狗设计


加密狗是接在微机端口上的一个软件保护装置,它包括主机检查程序和密钥(也称加密盒)两部分,是属于软硬件结合的加密技术,具有加密强度大、可靠性高等特点,现已广泛应用于计算机软件保护。加密狗技术已经发展到第4代,它以USB接口、微控制器和EEPROM为核心器件,又称微狗,在智能性、应用灵活性和抗破解能力等方面都得到了很大提高。

USB加密狗的实现有三种方式:一是最简单的,不需加密只返回确认信息,即计算机发送数据给加密狗,加密狗接收到数据后验证是否正确,返回一个确认信息给计算机。二是对数据进行加密,即计算机发送数据给加密狗,加密狗按照某个算法处理接收到的数据,同时加密狗将处理后的数据返回给上位机,由上位机来验证加密后的数据。以上两种方式,都只是简单地实现加密狗的功能,虽然也有加密处理,但是数据经过USB接口传输时是明码传输,很容易在计算机上被数据监控软件获取数据后破解。三是多重加密的方式,即数据传输过程再次进行加密。

现在流行的USB加密狗设计方案是单片机+USB接口芯片+EEPROM存储器,此方案不但系统复杂,而且具有体积大、硬件成本高等缺点。选择的设计方案是通过一款内带EEPROM的单片机,通过普通IO口来模拟USB时序,完成USB1.1协议的通信,利用DES算法来实现保密传输与数据加密,最终实现USB加密狗的功能,即通过单芯片就能解决问题。

一、USB加密狗的硬件设计

USB加密狗采用的硬件电路图如图1所示,全部功能由一个芯片完成,既降低了硬件成本同时也提高了系统可靠性。电路中选用的单片机是Atmel公司生产的ATtiny85,它是一款基于AVRRISC低功耗CMOS的8位单片机,工作电压为1.8~5.5V,内嵌8K字节的Flash程序存储器,512字节的SRAM数据存储器和512字节的EEPROM,其Flash程序存储器支持ISP和debugWIR编程方式。采用SOP8的封装,有6个多功能复用的I/O引脚,都可配置为外部中断,有2个独立可设置预分频的8位定时/计数器。内部还集成了上电复位电路、看门狗、RC振荡器和片内温度传感器等。如图1所示,从USB接口引入的5V电压,经过两个二极管降压后变为3.6V电压作为系统电源供给单片机使用。将单片机的第1引脚配置为IO口外接LED用于显示运行状态,第5、6引脚配置为IO口用于联接USB的数据线,第7脚配置为外中断引脚。为了满足低速USB设备的1.5M速度时序的读写要求,单片机需要达到20MIPS的指令执行速度,故电路中将第2、3脚配置为晶振引脚并连接20MHz的晶振。

图 1 加密狗电路图

根据USB的协议规范,USB主机的下游端口D+与D-上都分别连接一个15K的下拉电阻到地,当端口悬空(即没设备插入)时,输入端就被两个下拉电阻拉回到低电平。而USB设备端在D+或者D-上接一个1.5K的上拉电阻连到电源,1.5K的上拉电阻是连接D+还是D-由USB设备的速度来决定。对于全速设备和高速设备的上拉电阻连接到D+上,而低速设备的上拉电阻则是连接到D-上的。当设备插入USB主机的下游端口时,接了上拉电阻的那条数据线的电压由1.5K的上拉电阻和15K的下拉电阻分压决定,产生高电平信号,USB主控制器就能检测到被拉高的数据线是D+还是D-来判断插入的是什么速度类型的设备。因为本方案所设计的加密狗为低速USB设备,故USB接口的差分数据线D-的上拉电阻R3为1.5K。同时D-通过330Ω的限流电阻R2联接到单片机ATtiny85的PB0引脚,PB1引脚通过电阻R1联接到D+和INT0,INT0为单片机的外中断口,当USB总线上有数据时采用中断方式触发。由于D-在总线处于恢复状态和复位信号状态时电平不会发生跳变,故而需用D+数据线连接至单片机的外部中断0(INT0),当有中断发生时,表示总线上有数据传输,此时再由软件来判断为何种数据传输。

二、加密狗USB接口的实现

用单片机IO口来模拟USB接口时序,即可完成USB接口芯片的功能,包括NRZI编解码、同步模式的识别、并行/串行转换、位填充/解除填充、CRC校验/产生、PID校验/产生、地址识别和握手评估与产生等功能。其设计的核心是USB数据传输的NRZI编解码,USB数据包的分析和描述符。

USB发送数据的编码方式采用NRZI编码:当数据为0时,电平翻转;当数据为1时,电平不翻转,为了防止出现长时间电平不变化,所有在数据发送前进行串行化后加入了位填充处理,即当遇到连续6个数据1是时,就强制插入一个数据0,经过位填充后的数据,进行NRZI编码后发送到USB差分数据线上。USB接收数据的过程则是USB发送数据的相反过程:先进行NRZI解码,去掉位填充,最后是串行数据转并行数据。因为USB接受者只能通过USB数据包来获得同步时钟,所以在每个USB数据包的最开始都有个同步域(SYNC),这个域固定值为00000001,这个域通过NRZI编码之后,就是一串方波,接受者可以通过SYNC域来同步之后的数据信号。由于通信过程对时序要求非常严格,所以本设计的软件部分全部使用汇编语言编写,同时在进行读写操作时选择合适的指令以满足时序的要求。

USB总线上传输的数据是以包为基本单位的。一个包被分成不同的域,根据不同类型的包所包含的域是不一样的。但是不同的包有共同的特点,就是都是要以SYNC开始紧跟着一个包标识符(PID),最终以包结束符EOP来结束这个包。单片机在接收到EOP结束符后,就开始对USB数据包进行分析确定包的类型并调用相应的函数来处理。

标准的USB设备有5种USB描述符:设备描述符,配置描述符,字符串描述符,接口描述符和端点描述符。一个USB设备只有一个设备描述符,设备描述符里面决定了该设备有多少种配置,每种配置有相对应的配置描述符;同时在配置描述符中又定义了该配置里面有多少个接口,每个接口有相对应的接口描述符;在接口描述符里面又定义了该接口有多少个端点,每个端点有相对应端点描述符;端点描述符定义了端点的大小和类型等等。在USB的协议规范中,没有USB加密狗这样的类型,所以在设备描述符中的类代码为0XFF,即厂商自定义的设备。考虑到加密狗的实际需求,本设计只提供一个普通的数据端口,数据端口只支持中断传输,支持包的长度为8字节。

用软件模拟USB时序,实现USB接口通信并成功枚举后,给上层加密狗的功能程序提供的接口函数是ReadSoftdogData和WriteSoftdogData,通过函数ReadSoftdogData采用软件中断的方式读出上位机软件发来的64位数,然后通过函数WriteSoftdogData把数据返回给上位机。

三、加密处理方法

设计中考虑到设备的安全性及单片机的性能,采用DES加密算法。目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现其他更有效的办法,因此DES算法具有极高的安全性。DES算法使用64位的密钥,其中只有56位有效,而56位长的密钥的穷举空间为256。DES算法的加密流程图如图2所示。DES解密过程与加密过程类似,文中将不做介绍。

图 2 DES算法的加密流程图

本设计的加密狗加密具体过程如图3所示,上位机产生一个随机数D1,并将随机数进行加密处理成D2发送给USB加密狗,即实现传输的加密。加密狗收到数据D2后根据约定的密钥对数据进行解密成D1。接着将数据进行另一套加密变成数据成D3,然后进行传输加密成D4,最后将D4返回给计算机。计算机得到数据D4后,进行两次解密得到数据D1,完成了加密狗的确认功能。这样两级的加密方式,有效地防止了通过数据监控软件获取密码的行为。

四、USB加密狗功能的实现

本加密狗的功能是保护软件版权,当用户从软件供应商处购买软件时,供应商会把加密狗的相关信息写入到加密狗中,如初始密码、所支持的计算机数量、软件可使用的次数等等。这些信息都可通过加密算法存储在单片机片内的EEPROM中。用户在运行软件时,加密狗会根据使用情况更新存储在EEP-ROM中的信息。具体的功能流程如图4所示:1)插入USB后完成加密狗设备的枚举;2)枚举成功后上位机软件产生一组32位的随机数,并将这组随机通过USB发给加密狗;3)加密狗接收到上位机发过来的32位随机数后根据约定的加密算法,对这个随机数进行运算,并将结果返回上位机软件;4)上位机软件接收到数据后,也运行加密反运行算法,看是否能返回原来的随机数,如果成功反回原来的随机数则此加密狗是合法的,从而达到保护软件版权的目的。

图 4 加密功能流程图

五、加密狗安全性能测试

主要使用USB协议分析软件USBlyzer、DES加解密软件IDES_Tool和笔者自行设计的一个应用软件来共同测试。USBlyzer是USB协议分析软件,该软件可实时监测USB接口数据,有抓包、解包和协议分析等功能,也可以来破解明文传输(不加密)的USB加密狗的,同时通过这个软件可以看到加密狗的类型和设备名称。

总结

本设计基于单芯片为解决方案,从软件着手简化设计。用软件来实现硬件的功能,通过DES加密算法实现保密传输,达到降低成本,提高系统可靠性、安全性的要求,为软件版权保护提供了一种理想的方式。因为内部有EEPROM,可以给软件提供商甚至用户进行二次开发。

以上就是我们深圳市组创微电子有限公司为您介绍的单芯片方案USB加密狗设计开发示例。如果您有USB加密狗控制板开发需求,可以放心交给我们。我们代理多种单片机、语音芯片、双模蓝牙IC、wifi芯片。品牌有松翰单片机、应广单片机、杰理蓝牙、安凯蓝牙、全志、瑞昱(realtek)。我们的技术服务范围有:PCB设计、单片机开发、蓝牙方案、软硬件定制开发、APP开发、小程序开发、微信公众号开发等。还可以承接智能电子产品方案设计、生活电器开发、美容仪器研发、物联网平台应用、智能家居控制系统、TWS耳机、蓝牙耳机音箱开发、儿童益智玩具方案开发、电子教育产品方案设计等。