当前位置: 首页 > 科技观察

一篇给大家带来软件加密的攻防

时间:2023-03-16 20:35:40 科技观察

纯软件加密加密芯片两种硬件连接形式加密芯片加密过程加密保护攻防破解思路一:从软件入手,绕过加密点破解思路二:从加密狗的驱动入手,仿冒驱动破解思路三:从加密狗的硬件入手,仿制加密狗PUF:物理上无法克隆如果黑客从授权电脑上破解软件,然后复制,你会作何感想并大量转售?如果感觉不到,或者无所谓,那只能说明目前写的程序还不够好,还没有进入黑客的眼中~~然而,在很多看不见的战场上,软件破解和反破解大戏一直在上演。以前听过这样一个笑话:没有公司会公开说自己的软件是最安全的。只要他说出来,分分钟就会被破解,因为这样的说法对于黑客来说无疑是一种挑战。软件加密的攻防是一场没有最终结果的无限游戏,只会永远进行下去。但是,这并不妨碍我们在我们的软件中加入防火墙,在一定范围内最大程度地保护我们的劳动成果。在这篇文章中,让我们谈谈软件加密!本文素材来自两年前为客户开发的一款软件。上周末遇到当时在对接的技术人员,聊了聊之前的产品,于是就有了这篇文章。纯软件加密我们在安装一些有版权的软件时,一般都会要求输入序列号。输入序列号时,与当前电脑的硬件信息绑定。也就是说,如果你在另一台电脑上安装软件,输入同样的序列号,肯定是不行的。因为在首次安装时,软件会收集当前电脑的CPU、硬盘、主板、网卡等硬件信息,并将这些信息与序列号绑定。当然,每个软件选择哪些硬件信息是不确定的。因为要考虑到用户会更换硬盘,更换网卡等硬件设备。因此,大多数软件会收集不太可能被替换的硬件,并为不同的硬件分配不同的权重来计算最终结果。在很多消费品和工业产品中,软件产品都是按照这个思路来保护的。缺点很明显:无法唯一标识一台设备:虽然收集了很多硬件信息,但无法确定一台计算机的绝对唯一性;无法防止硬件信息被复制:如果黑客知道软件保护策略,他可能会将多台计算机的硬件信息修改成完全一样。在这种情况下,所有这些计算机都将成为“合法”设备;或许,这样的事情对于我们平时使用的电脑是不可能发生的,但是在一些工业产品中,这样的破解方式却不得不引起重视。这种软件保护方式是所有纯软件加密保护的缺点,无法彻底解决,只能通过各种小技巧降低被破解的可能性。加密芯片加密芯片是专门用于加密的芯片。好像没说啊!事实上,它利用加密芯片本身来保护另一个软件或硬件不被破解。这里以软件为例。两者的逻辑关系如下:软件运行过程中,定时与加密芯片进行通信。只有加密芯片返回正确的结果,软件才能正常执行。如果加密芯片不存在,或者加密芯片是仿冒品,那么被保护的软件可以立即检测到并停止运行,从而达到保护的目的。即使通过各种手段复制软件,在另一台设备上执行,软件也会因为没有相应的加密芯片而拒绝执行。加密芯片的两种硬件连接形式随着软件和硬件的不断发展,生产技术的不断提高,各种加密需求场景层出不穷,加密芯片的存在形式也多种多样。最常见的形式类似于信用卡使用的U盾,通过USB接口连接到电脑(或其他硬件设备):通常,这种通过USB接口连接的加密设备称为Dongle(加密狗).另外,在嵌入式设备中还有一种常见的连接方式:加密芯片通过GPIO口与主控芯片通信,即使用单总线通信:以上两种连接方式只是硬件不同,但是加密过程和原理是一样的!我们使用USB加密狗来描述加密过程:当我们将一个软件部署到客户的设备时,我们将为每个设备安装加密。dongle驱动,配置dongle硬件。每个加密狗硬件都有一个唯一的ID,内部预烧了一个秘钥,用于加密和解密数据。当我们的软件需要认证时,调用加密狗驱动提供的API函数。当API函数接收到一个软件调用时,它会通过USB端口与硬件加密狗进行通信,并发送请求的数据。加密狗接收到请求的数据后,将计算结果通过USB发送给驱动程序,然后返回给应用程序。在此通信过程中,将使用密钥对数据进行加密和解密,以保证通信链路中的数据安全。加密保护攻防破解思路一:从软件入手,绕过加密点。所谓加密点是指应用程序中调用加密狗驱动API函数的地方。黑客可以反编译软件的二进制代码,结合加密狗驱动的API函数手册,分析找到这些加密点,然后修改二进制代码,绕过这些加密点的函数调用。在这种情况下,软件相当于裸奔,完全失去了与加密狗的数据交互。对于这样的破解方法,只能从软件入手,增加了黑客寻找加密点的难度。例如:在代码的很多地方安装加密点,在一些辅助动态库中安装加密点,对加密点的API函数调用进行一些混淆处理,让API函数调用的返回结果参与到业务逻辑中软件,在这种情况下,必须调整API函数才能让程序正常执行。破解思路二:从dongle的驱动入手。伪造驱动黑客可以根据加密狗驱动的API手册自行编写一个伪造的驱动,包括合法驱动中的所有API函数,每个函数的参数和返回值都符合手册中的说明。在这种情况下,伪驱动中的API函数在收到软件的调用后,不会与加密狗通信,而是直接将正确的结果返回给软件,从而达到破解的目的。从上图可以看出,fakedriver在收到程序的调用后直接返回了“正确”的结果,完全没有dongle硬件这回事。该破解方法利用了驱动中API函数中参数和返回值的静态特性,我们未验证驱动的合法性。针对以上两点,可以设计相应的反破解方法:不返回静态结果,而是使用一定的算法,或者使用大量预先准备好的数据对,返回一个动态变化的结果给应用程序。在这种情况下,黑客将无法通过分析API手册或抓包找到返回数据的规律;一些额外的加密、指纹信息等可以用来验证驱动代码的合法性;破解思路三:从加密狗硬件入手,在锻造加密狗之前,我们说过:在加密狗硬件中,有一个唯一的ID和一个预先放置的秘钥。要破解加密狗硬件,黑客必须使用各种手段来复制这些信息。芯片也可以克隆?没接触过硬件的朋友可能会觉得,怎么可能在一个小芯片上复制几千个晶体管电路呢?这是可以理解的。然而,积极和消极本身并存。搞板级硬件的同学可能抄过别人的PCB板。IC逆向工程类似,但只需要专业的工具。如今,芯片级的逆向工程已经非常成熟。对于一些简单的芯片,2K~3K的价格就可以帮你分分钟逆转。这部分内容我了解不多。具体步骤很多,这里就不一一描述了。总之,请相信芯片反接是可以的,这不是问题!放几张截图感受一下:道高一丈,魔高一丈!无限的攻守博弈总是潮起潮落。对于破解的终极绝招,加密芯片厂商也不敢懈怠,想出了很多破解方法。例如:在加密芯片上加一层覆铜保护,这个覆铜同时起到供电的作用。切片设备在磨掉这层铜的同时,也破坏了芯片的供电,使得破解设备无法通过探针等方式干扰芯片的工作,因为芯片已经停止工作,会根本不被发现。机会。需要另一种更强大的方法来防止黑客获取加密狗中的关键信息。一般来说,密钥文件存储在芯片中的非易失性存储设备(NVM)中。如果是这样的话,黑客就更容易从存储设备中读取到关键信息。PUF:PhysicallyUnclonable近年来,一种叫做PUF(PhysicallyUnclonableFunctions)的技术非常火热,它以一种不可见的方式“存储”关键信息。具体如下:基于PUF的新型安全加密方式,采用硬件PUF安全芯片进行加密,NVM中只存储密文信息。密钥在PUF芯片内部物理结构中生成,使用后销毁。整个过程没有输出关键信息。黑客只能获取NVM中的密文信息,没有PUF密钥,永远无法解密。简单的说,加密芯片中没有秘钥信息。当加密芯片本身需要使用密钥时,它利用芯片的各种物理结构和电气特性动态生成密钥,使用后立即销毁。在这种情况下,黑客无法获得密钥。即使是仿制的dongle硬件,由于工艺不同,芯片的物理结构和电气特性不同,生成的秘钥也是错误的,无法用应用程序正确加解密,从而实现防破解的目标。关于这部分的内容,我不是很专业。找到了以下资料,有兴趣的朋友可以详细了解一下:SRAMPUF技术(https://www.intrinsic-id.com/zh-CN/SRAM%E7%9A%84PUF/)让芯片更安全(http://news.eeworld.com.cn/IoT/ic494467.html)PUF物联网安全密钥生成技术(https://www.wulianwangiot.com/iotanquan/4395.html)这篇文章转载自微信公众号“IOT物联网小镇”,可通过以下二维码关注。转载本文请联系物联小镇公众号。

猜你喜欢