软件狗[Dongles]的加密与解密技术
2007-01-13 20:14:13 来源:WEB开发网“软”的是指驱动程序内反跟踪、外壳加密等等软件工作,让解密者难以在功能层上仿真,谁都靠的是对操作系统、微机系统的精确理解。谁都无法决胜,结果是加密驱动程序在不断更新、膨胀。
“硬”的就是加密锁内的算法功能,这大大增加了解密难度,这是掌握在加密者手中的武器。但是,加密者只能设置算法的参数,即所谓内含多少种算法可选,而算法内容并不知道。这样就限制了厂商对算法的使用,要么预先记录算法结果然后在软件运行时核对(使用码表);要么在软件中至少变换两次然后比较结果是否一致。如果解密者截获这些数据,通过统计、分析就有可达到解密目的;
第三代加密锁,即所谓“可编程”的加密锁。1999年初,以北京深思洛克为代表推出了第三代加密锁,“可编程”加密锁概念的推出是软件加密技术的一次进步。“可编程”加密锁设计初衷是希望用户能够将软件中重要的代码或模块“移植”到加密保护设备中运行,使软件与加密锁实现真正无缝链接。但由于成本限制,早期推出的几款“可编程”加密锁采用的低档单片机给 “可编程”性造成了很大的局限,主要表现在:1、算法变换的复杂度不够高,2、指令编码空间较小,3、程序区的空间较小。这些局限性使得用户根本不可能利用“可编程”加密锁实现理想的高强度加密方案。 软件狗采用了PAL(Programmable Array Logic)、PEEL(Programmable Electrically Erasable Logic Device)、GAL(Generic Array Logic)等可编程器件,但目前流行的期间大概要算串行读写的EEPROM(Serial Electrically Erasable PROM)了。这些器件由于密码编制的灵活性和制成密钥后在程序中插入检查的方便性,极大地增加了解密的难度。从使用的角度来看PAL、PEEL、GAL等逻辑器件只能读取数据,不能随时写入数据,密码的重新设置比较麻烦;而EEPROM芯片可随意读写,用在软件狗上灵活性相当大,譬如可以为每一个软件狗单独设一个密码,以增加解密的难度;另外,从EEPROM器件的电器性能上来说也非常适合做软件狗;因此这种器件在软件狗的设计中获得了广泛的应用,是当时软件狗制作者的首选芯片。它象一般RAM存储器一样可读写(只不过读写是串行的),即使断电后也能保存数据不变。常用的EEPROM型号是93C46,它是64×16bit的结构,也就是说一个93C46具有64个16位bit单元的容量,每次处理数据也都是16位。有的93C46,如Microchip、ATMEL、CSi等品牌的93C46可以通过切换,变为128×8bit或64×16bit两种模式,这对软件狗制作来说就更灵活了,其加密效果也更好。当然也有人采用更大容量的93C56、93C66或容量小一点的93C06、93C26等EEPROM芯片。因为软件狗是插在微机的并行口上,所以检查程序是通过并行口的I/O地址去读写EEPROM。具体的读写方式跟硬件线路以及EEPROM的时序有关,因此,一般的检查程序针对某一种硬件线路;但是这些程序大同小异,大体上是差不多的。
更多精彩
赞助商链接