软件加密的攻与防


当你辛辛苦苦、历经万难,成功开发出一套软件的时候,如果有黑客从授权电脑上破解了软件,然后大量拷贝、倒卖,你会是什么样的心情?

如果你没有感觉、或者无所谓的话,那只能说明目前写的程序还不是足够的优秀,还没有进入黑客的目光中~~

但是,在很多看不到的战场上,软件的破解和反破解大戏,时刻都在上演着。

以前听过这么一个段子:任何一家公司都不会公开说自家的软件是最安全的。

只要他说出来,就会分分钟遭到破解,因为这样的声明,无疑是给黑客们下了一道挑战书。

软件加密的攻与防,是一个没有终极结果的无限游戏,只会永远进行下去。

但是,这并不妨碍我们给自己的软件,加上一道防火墙,在一定的范围内,最大程度的保护自己的劳动成果。

这篇文章我们就来聊聊关于软件加密的那些事!

这篇文章的素材,来源于两年前为一个客户开发的一款软件。

上周末偶遇到当时对接的技术人员,聊到了之前的那个产品,于是就有了此文。

纯软件加密

我们在安装一些有版权的软件时,一般都会要求输入一个序列号。

当这个序列号被输入之后,它就与当前这台电脑的硬件信息进行绑定。

换句话说,如果把这个软件安装在另一台电脑中时,输入同样的序列号,肯定是无法运行的。

因为在第一次安装的时候,软件就会搜集当前电脑的 CPU、硬盘、主板、网卡等硬件信息,并且把这些信息与序列号进行绑定。

当然了,每一个软件选择哪些硬件信息不是确定的。因为要考虑到用户会更换硬盘、更换网卡硬件设备等。

因此,大部分软件都是搜集那些更换可能性比较小的硬件,并且对不同的硬件赋予不同的权重,来计算一个最终的结果。

在很多的消费类产品、工业产品中,都是按照这样的思路来对软件产品进行保护的。

其中的缺点很明显:

无法做到唯一的标识一台设备:尽管对很多的硬件信息进行采集,但是无法确定一台电脑的绝对唯一性;

无法阻止硬件信息复制:如果黑客知道了软件的保护策略,他就可能去把多台电脑的硬件信息修改成完全一样的,这样的话,所有这些电脑都变成“合法”的设备了;

也许,这样的事情对于我们平常使用的电脑来说根本不会发生,但是在一些工业产品中,这样的破解方式就不得不被重视了。

这样的软件保护方式,是所有纯软件加密保护的缺点,无法彻底的解决,只能通过使用各种小技巧来降低被破解的可能性。

加密芯片

加密芯片,就是专门用来进行加密的芯片,这样说好像等于没说一样!

其实就是利用加密芯片本身,来保护另一个软件或者硬件不被破解。

我们这里就拿软件举例,它俩的逻辑关系如下:

软件加密的攻与防

在软件运行的过程中,定期的与加密芯片进行通信。

只有当加密芯片返回正确的结果时,软件才会正常的执行。

如果加密芯片不存在、或者加密芯片是一个假的仿制品,那么被保护的软件就可以立刻侦测到,从而停止运行,这样就达到了保护的目的。

即使通过各种手段把软件拷贝出来,放在另一台设备中去执行,由于没有对应的加密芯片,因此软件也会拒绝执行。

加密芯片的两种硬件连接形式

随着软、硬件的不断发展,生产工艺的不断提高,各种加密需求场景的层出不穷,加密芯片的存在形式也是多种多样。

最常见的就是类似于信用卡使用的 U 盾那种形式,通过 USB 接口与电脑(或其他硬件设备)进行连接:

软件加密的攻与防

通常,把这种通过 USB 接口连接的加密设备称作 Dongle(加密狗)。

另外,还有一种在嵌入式设备中比较常见的连接方式:把加密芯片通过一根 GPIO 口,与主控芯片进行通信,也就是采用单总线方式进行通信:

软件加密的攻与防

以上这两种连接方式,仅仅是硬件上的不同而已,加密过程、原理都是一样的!

展开阅读全文

页面更新:2024-05-13

标签:软件加密   序列号   绑定   网卡   黑客   芯片   形式   通信   方式   硬件   设备   电脑   产品   科技   软件   信息

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top