很多软件都需要狗来启动。那是什么狗?工作原理是什么?
“加密狗”是一种软硬件结合的加密产品,插在电脑的并口上。一般有几十或者几百字节的非易失性存储空间用于读写,现在比较新的狗也包括单片机。软件开发人员可以通过接口函数(即读写加密狗)与加密狗交换数据,检查加密狗是否插入并口;或者直接用软件狗附带的工具加密自己的EXE文件(俗称“包装”)。这样,软件开发者可以在软件中设置多个软件锁,并用软件狗作为钥匙打开这些锁;如果加密狗未插入或与加密狗不对应,软件将无法正常执行。
加密狗通过在软件执行过程中与加密狗交换数据来实现加密。加密狗内置了单片机电路(也叫CPU),使加密狗具备了判断分析的处理能力,增强了主动防解密能力。这种加密产品被称为“智能”加密狗。加密狗内置的微控制器包含专用于加密的算法软件。软件写入微控制器后,就不能再读出了。这样,确保了加密狗硬件不能被复制。同时,加密算法是不可预测和不可逆的。加密算法可以将一个数字或字符转换成整数,如dog convert(1)= 17345,DogConvert(A)=43565。下面,我们举个例子来说明单片机算法的使用。比如一个程序里有一句话:A=Fx(3)。程序应该根据常量3得到变量A的值。所以,我们可以将原程序改写如下:A = FX(dog convert(1)-12342)。那么常量3就不会出现在原程序中,而是dog convert(1)-12342。这样只有软件作者知道实际调用的常数是3。没有加密狗,DogConvert函数无法返回正确的结果,结果公式A = FX(dog convert(1)-12342)肯定不会正确。这种让盗版用户失去软件使用价值的加密方式,比发现非法使用就警告制止的加密方式更温和,更隐蔽,更难被解密者琢磨。此外,加密狗还具有读写功能,可以用来读写加密狗的内部存储器。所以我们也可以把上面公式中的12342写入狗的内存中,这样A的值就完全依赖于DogConvert()和DogRead()函数的结果,这就增加了解密的难度。但一般来说,加密狗微控制器的算法比一些公开的加密算法难度要小,比如DES,因为解密器在接触加密狗算法之前要面临很多困难。