逆向工程防御装置和方法与流程

文档序号:19947403发布日期:2020-02-18 09:40阅读:464来源:国知局
逆向工程防御装置和方法与流程

本发明涉及逆向工程防御技术领域,尤其涉及一种逆向工程防御装置和方法。



背景技术:

逆向工程技术是近几年迅速发展起来的一门新兴学科,是传统产品设计(正向工程)的相对概念,是一种产品设计技术再现过程,即对一项目标产品进行逆向分析和研究,从而演绎并得出该产品的处理流程、组织结构、功能特性、及技术规格等设计要素,以制作出功能相近、但又不完全一样的产品。在市场竞争更加激烈、产品技术含量不断提高、制造周期不断缩短的今天,逆向工程技术已越来越受到人们的重视。传统的正向工程,是在有产品需求时,把需求理念转化为产品结构设计和产品过程(生产过程)设计来造出产品的。而逆向工程是在有产品需求时,找到十分接近需求的市场同类或是类似成品进行研究后,再根据研究结果来设计产品结构和过程。由于被逆向的市场同类或是类似成品已经经历过市场验证,研发风险和难度更低,因此当代各行各业都有在大量采用这种方式进行新产品的研发。相比正向工程,逆向工程避免了“把需求理念转化为设计”这样一个高难度、高风险、周期长、投入大的过程。

基于这种“仿制”、“模仿”的逆向分析技术特征,逆向工程技术的合法性一直是知识产权保护中争议很大的问题。有的时候,山寨、抄袭、仿制和逆向工程的界限难以区分,在法律上也难以界定侵权与否。对于掌握高新技术的企业,投入大量人力、物力、资金、时间研发制造出来的产品,一旦被商业竞争对手通过逆向工程技术窃取核心设计、核心技术、或是内部程序,造成的经济利益损失不可估量。

逆向工程技术快速发展和市场中的广泛应用使高新技术企业的核心技术面临着被窃取、山寨、抄袭仿制的巨大风险。在市场竞争激烈、产品开发愈发困难的今天,保护劳动成果、产品核心技术、知识产权的反逆向工程的逆向工程防御方法越来越受到人们的重视。用于隐藏产品设计、硬件电路或是内部程序的传统手段有机械加密、硬件加密、软件加密等。

首先是机械加密,例如可以采用4层板、6层板或者故意多走线来提高硬件抄袭成本,不过市场上4层板的生产价格高昂,长宽5cm以内的4层pcb板价格是2层板的两倍,长宽5cm以上更是达到了4倍,对于企业或是厂家这并不经济。另外,采取打磨或者更改芯片型号丝印、调换芯片封装脚位等措施能达到迷惑破解者、使破解者无从下手的目的,从而防范硬件电路设计被抄袭,但这种打磨措施在芯片大小、厚度不一的情况下很容易损坏芯片,芯片数量较多时也会极大的提升成本。其次是硬件加密,采用可编程逻辑芯片来实现各种逻辑功能,将一个实际的复杂的逻辑电路微缩在一个pld芯片中,达到硬件加密的目的,但这种方法开发和应用较复杂,如果需要加密的电路逻辑功能复杂,会对可编程逻辑器件的内部资源产生极大的需求,这无疑会提高成本。还有例如总线加密、选用具有加密锁定位的芯片等措施,但前者开发门槛较高,后者依赖特定芯片。最后是软件加密,例如指令伪装法,通过更换汇编语言源程序指令形式来实现,使得反编译困难增加,但其无法防范内部程序被复制,开发门槛较高。可见传统的逆向工程防御方案存在成本高的问题。



技术实现要素:

针对以上问题,本发明提出一种逆向工程防御装置和方法。

为实现本发明的目的,提供一种逆向工程防御装置,包括:具有身份标志信息的芯片和微控制器;

所述微控制器在执行程序a时,读取所述芯片的身份标志信息,加密所述身份标志信息,得到加密结果,将所述加密结果写入所述微控制器的eeprom中;在执行程序b时,读取程序a存放在eeprom中的加密结果,进行解密运算,获得解密身份信息,比对所述解密身份信息和身份标志信息,若比对结果不一致,则判定微控制器程序被抄袭,降低包含在程序b中的厂家程序的正常运行概率。

在一个实施例中,所述微控制器在检测到所述解密身份信息与所述身份标志信息的比对结果一致时,判定当前所述微控制器的程序未被复制。

在一个实施例中,所述微控制器为单片机。

在一个实施例中,所述微控制器在检测比对结果不一致,判定微控制器程序被抄袭的时候,开始记录微控制器上电运行次数,在运行次数超过p次后,随着次数继续升高,降低包含在程序b中的厂家程序的正常运行概率,而且这种执行异常的概率特征设计成近似机器设备自然老化故障,时好时坏,以诱导破解者往错误的方向思考。

在一个实施例中,逆向工程防御装置,还包括模数转换器;所述模数转换器连接所述微控制器;

所述模数转换器采集模拟开路输入引脚的模拟信号,将模拟信号转换成数字信号,将数字信号发送至所述微控制器;

所述微控制器采用所述数字信号降低包含在程序b中的厂家程序的正常运行概率。

作为一个实施例,所述微控制器获取模数转换器发送的多个数字信号,提取各个数字信号中的最低位,将所提取的最低位组成二进制序列,利用所述二进制序列代表的十进制值的随机性降低包含在程序b中的厂家程序的正常运行概率。

一种逆向工程防御装置,包括如下步骤:

s10,向微控制器烧录程序a后上电运行程序a,使微控制器读取所述芯片的身份标志信息,加密所述身份标志信息,得到加密结果,将所述加密结果写入所述微控制器的eeprom中;

s20,向微控制器烧录程序b,使微控制器运行程序b时,读取程序a存放在eeprom中的加密结果,进行解密运算,获得解密身份信息,比对所述解密身份信息和身份标志信息,若比对结果不一致,则判定微控制器程序被抄袭,降低包含在程序b中的厂家程序的正常运行概率。

在一个实施例中,逆向工程防御方法,还包括:

在检测到所述解密身份信息与所述身份标志信息的比对结果一致时,判定当前所述微控制器的程序未被复制。

在一个实施例中,所述降低包含在程序b中的厂家程序的正常运行概率包括:

记录微控制器上电运行次数,在运行次数超过p次后,随着次数继续升高,降低包含在程序b中的厂家程序的正常运行概率,而且这种执行异常的概率特征设计成近似机器设备自然老化故障,时好时坏,以诱导破解者往错误的方向思考。

上述逆向工程防御装置和方法,在微控制器在执行程序a时,读取所述芯片的身份标志信息,加密所述身份标志信息,得到加密结果,将所述加密结果写入所述微控制器的eeprom中;在执行程序b时,读取程序a存放在eeprom中的加密结果,进行解密运算,获得解密身份信息,比对所述解密身份信息和身份标志信息,若比对结果不一致,则判定微控制器程序被抄袭,降低包含在程序b中的厂家程序的正常运行概率,以对相关程序的逆向工程实现有效防御,可以降低逆向工程的防御成本。

附图说明

图1是一个实施例的逆向工程防御装置结构示意图;

图2是一个实施例的程序a和程序b的流程示意图;

图3是一个实施例的逆向工程防御装置方法流程图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。

参考图1所示,图1为一个实施例的逆向工程防御装置结构示意图,包括:具有身份标志信息的芯片11和微控制器12;

所述微控制器12在执行程序a时,读取所述芯片11的身份标志信息,加密所述身份标志信息,得到加密结果,将所述加密结果写入所述微控制器的eeprom中;在执行程序b时,读取程序a存放在eeprom中的加密结果,进行解密运算,获得解密身份信息,比对所述解密身份信息和身份标志信息,若比对结果不一致,则判定微控制器12程序被抄袭,降低包含在程序b中的厂家程序的正常运行概率。

上述芯片可以为运行特定程序的智能芯片,上述身份标志信息与芯片11一一对应,即各个芯片11均具有唯一对应的身份标志信息(唯一id码),且各个芯片11的身份标志信息在出厂后不可更改。

上述身份标志信息的加密运算方法可自定,例如将表征身份标志信息的m位二进制id码整体左移k(k<m)位再取反等等。

上述逆向工程防御装置,通过微控制器12在执行程序a时,读取芯片11的身份标志信息,加密所述身份标志信息,得到加密结果,将所述加密结果写入所述微控制器12的eeprom中;在执行程序b时,读取程序a存放在eeprom中的加密结果,进行解密运算,获得解密身份信息,比对所述解密身份信息和身份标志信息,若比对结果不一致,则判定微控制器12程序被抄袭,降低包含在程序b中的厂家程序的正常运行概率,以对包含在程序b中的厂家程序的逆向工程实现有效防御,可以降低逆向工程的防御成本。

在一个实施例中,所述微控制器在检测到所述解密身份信息与所述身份标志信息的比对结果一致时,判定当前所述微控制器的程序未被复制。

本实施例可以准确判断微控制器的程序未被复制。

在一个实施例中,所述微控制器为单片机。

在一个示例中,程序a和程序b的程序流程示意图可以参考图2所示。在实际的逆向工程防御过程中,可以先将微控制器烧录程序a后上电运行程序,完成加密操作;再将微控制器烧录最终程序b,该程序包含产品身份识别功能和厂家自己的程序。程序a的内容包括:负责读取具有唯一id芯片的id码(即身份标志信息),并进行加密运算,再将m位运算结果写入微控制器片内eeprom。上述身份标志信息的加密运算方法可由厂家自定,例如将m位二进制id码表征的身份标志信息整体左移k(k<m)位再取反等等。程序b是实现产品最终防御功能的程序,在该程序中加入了产品身份识别功能,还包含厂家自己的程序。微控制器上电后将首先读取程序a存放在eeprom中的运算结果(加密结果),并进行加密算法的逆向运算(即解密运算),获取加密后的数据进行解密获得芯片id码;然后,微控制器读取当前pcb印制电路板上的芯片id码,将解密获得的芯片id码与当前读取到的芯片id码进行对比,对比结果只有完全相同和不同两种可能。如果各位数据完全相同则判断为“合法”,程序没有被复制抄袭,后续程包含在程序b中的厂家程序正常执行;如果芯片id码不同则判断为“非法”,程序已经被复制抄袭,微控制器开始在片内eeprom中开辟空间记录程序运行次数n,每次运行,次数加1,再将n+1写入微控制器片内eeprom,在运行超过p次(例如200次)之前,包含在程序b中的厂家程序正常运行,一旦超过p次,随着程序运行次数继续升高,包含在程序b中的厂家程序执行正常的概率越来越低。

在一个实施例中,所述微控制器在检测比对结果不一致,判定微控制器程序被抄袭的时候,开始记录微控制器上电运行次数,在运行次数超过p次后,随着次数继续升高,降低包含在程序b中的厂家程序的正常运行概率,而且这种执行异常的概率特征设计成近似机器设备自然老化故障,时好时坏,以诱导破解者往错误的方向思考。

上述p次可以设置为200、300、400或者500等值。

在一个示例中,微控制器可以通过利用模数转换模块多次采集开路引脚上由自然噪声产生的随机跳动电压信号,取出转换结果的最低位(精度最高的一位)组成伪随机数来模拟概率实现。

本实施例中,当微控制器程序被复制抄袭,非法程序运行次数超过一定限度时,随着程序运行次数的升高,包含在程序b中的厂家程序执行正常的概率越低,程序执行时“好”时“坏”,执行异常概率特征近似机器自然老化故障,诱导破解者往错误的方向思考,这样可以对抄袭复制行为进行有效防御。

在一个实施例中,上述逆向工程防御装置,还包括模数转换器;所述模数转换器连接所述微控制器;

所述模数转换器采集模拟开路输入引脚的模拟信号,将模拟信号转换成数字信号,将数字信号发送至所述微控制器;

所述微控制器采用所述数字信号降低包含在程序b中的厂家程序的正常运行概率。

作为一个实施例,所述微控制器获取模数转换器发送的多个数字信号,提取各个数字信号中的最低位,将所提取的最低位组成二进制序列,利用所述二进制序列代表的十进制值的随机性来模拟概率降低包含在程序b中的厂家程序的正常运行概率。

具体地,上述模数转换器可以为10位模数转换器。微控制器可以每间隔300ms,利用10位模数转换器采集1次开路输入引脚的电压信号,每次只取出10位模数转换结果中的最低位(精度最高的那一位),抛弃其余9位,取出的最低位随机为1或者0,采集10次,那么10次采集到的最低位组成的10位二进制序列的十进制值x将随机落在0,1,2,……,1023这1024个整数中,例如采集到的序列为1001110100,则随机数x为628。由于10位模数转换器采集开路输入引脚电压信号的转换结果的最低位是随机为1或是0的,因此n值为0的概率为1/1024,n值为1的概率为1/1024,n值为2的概率为1/1024,……,n值为1023的概率也为1/1024,由此利用adc(模数转换器)采集到的二进制位组成的随机数模拟概率。

参考图3所示,图3为一个实施例的逆向工程防御方法流程图,包括如下步骤:

s10,向微控制器烧录程序a后上电运行程序a,使微控制器读取所述芯片的身份标志信息,加密所述身份标志信息,得到加密结果,将所述加密结果写入所述微控制器的eeprom中;

s20,向微控制器烧录程序b,使微控制器运行程序b时,读取程序a存放在eeprom中的加密结果,进行解密运算,获得解密身份信息,比对所述解密身份信息和身份标志信息,若比对结果不一致,则判定微控制器程序被抄袭,降低包含在程序b中的厂家程序的正常运行概率。

上述身份标志信息与芯片11一一对应,即各个芯片11均具有唯一对应的身份标志信息(唯一id码),且各个芯片11的身份标志信息在出厂后不可更改。

上述身份标志信息的加密运算方法可由厂家自定,例如将表征身份标志信息的m位二进制id码整体左移k(k<m)位再取反。

在一个实施例中,上述逆向工程防御方法,还包括:

在检测到所述解密身份信息与所述身份标志信息的比对结果一致时,判定当前所述微控制器的程序未被复制。

在一个实施例中,所述降低包含在程序b中的厂家程序的正常运行概率包括:

记录微控制器上电运行次数,在运行次数超过p次后,随着次数继续升高,降低包含在程序b中的厂家程序的正常运行概率,而且这种执行异常的概率特征设计成近似机器设备自然老化故障,时好时坏,以诱导破解者往错误的方向思考。

上述p值可以设置为200、300、400或者500等值。

具体地,上述程序b,是实现产品最终功能的程序,在该程序中加入了产品身份识别功能。微控制器上电后将首先读取程序a存放在eeprom中的运算结果(加密结果),并进行加密算法的逆向运算,将加密后的数据进行解密获得芯片id码;然后,微控制器读取当前pcb印制电路板上的芯片id码,将解密获得的芯片id码与当前读取到的芯片id码进行对比,对比结果只有完全相同和不同两种可能。如果m位数据完全相同则判断为“合法”,程序没有被复制抄袭,包含在程序b中的厂家程序正常执行;如果芯片id码不同则判断为“非法”,程序已经被复制抄袭,微控制器开始在片内eeprom中开辟空间记录程序运行次数n,每次运行,次数加1,再将n+1写入微控制器的eeprom,在运行超过p次(例如200次)之前,包含在程序b中的厂家程序正常运行,一旦超过p次,随着程序运行次数继续升高,包含在程序b中的厂家程序执行正常的概率越来越低。这样当微控制器程序被复制抄袭,非法程序运行次数超过一定限度时,随着程序运行次数的升高,包含在程序b中的厂家程序执行正常的概率越低,程序执行时“好”时“坏”,执行异常的概率特征近似机器自然老化故障,诱导破解者往错误的方向思考。

进一步地,微控制器后续程序概率执行是通过利用模数转换模块多次采集开路引脚上由自然噪声产生的随机跳动电压信号,取出转换结果的最低位(精度最高的一位)组成伪随机数来模拟概率实现的。

在一个实施例中,以microchip公司的pic16f877a单片机,pic16f877a内部10位模数转换器,具有64位光刻二进制id码的ds18b20温度传感器芯片为例,对上述逆向工程防御装置及相应方法的工作过程进一步说明。

在逆向工程防御装置的工程的应用过程中,具体实现步骤如下:

步骤一、将pic16f877a单片机烧录程序a后上电运行,完成加密操作。

步骤二、将pic16f877a单片机烧录最终程序b,该程序包含产品身份识别部分和厂家自己的程序。

其中:

程序a,是加密部分,负责读取ds18b20芯片的光刻rom中的64位二进制序列码,并进行加密运算(加密运算方法由厂家自定,例如将64位二进制序列号整体左移9位再取反),将64位运算结果写入单片机片内eeprom;

程序b,是实现产品最终功能的程序,在该程序中加入了产品身份识别功能。该程序上电后将首先读取程序a存放在eeprom中的运算结果,并进行加密算法的逆向运算,将加密后的数据进行解密获得ds18b20芯片的64位id码;然后单片机读取当前pcb板上的芯片id码,将解密获得的芯片id码与当前读取到的芯片id码进行比对,对比结果只有完全相同和不同两种可能。如果两者id码完全相同则判断为“合法”,程序没有被复制抄袭,包含在程序b中的厂家程序正常执行;如果芯片id码不同则判断为“非法”,程序已经被复制抄袭,单片机开始在eeprom中开辟空间记录程序运行次数n,每次运行,次数加1,再将n+1写入单片机片内eeprom,在运行超过p次(例如200次)之前,包含在程序b中的厂家程序正常运行,一旦超过p次,随着程序运行次数继续升高,包含在程序b中的厂家程序执行正常的概率越来越低。

程序b中的程序概率执行是通过利用模数转换器多次采集开路引脚上由自然噪声产生的随机跳动电压信号,取出转换结果的最低位(精度最高的一位)组成伪随机数来模拟概率实现的。当程序非法执行超过限度,随着程序运行次数的增加,程序执行正常的几率越低,程序执行时“好”时“坏”,执行异常特征近似机器自然老化故障。

本实施例中随着程序非法运行次数增加,包含在程序b中的厂家程序执行正常的概率不断减小的实现方法如下:

每间隔300ms,利用pic16f877a单片机中的10位模数转换器采集1次开路输入引脚的电压信号,每次只取出10位模数转换结果中的最低位(精度最高的那一位),抛弃其余9位,取出的最低位随机为1或者0,采集10次,那么10次采集到的最低位组成的10位二进制序列的十进制值x将随机落在0,1,2,……,1023这1024个整数中,例如采集到的序列为1001110100,则随机数x为628。由于10位模数转换器采集开路输入引脚电压信号的转换结果的最低位是随机为1或是0的,因此n值为0的概率为n值为1的概率为n值为2的概率为值为1023的概率也为由此利用adc采集到的二进制位组成的随机数模拟概率。

例如,当控制器程序“非法”执行达到200次,语句if(n<922)中的条件判断表达式“n<922”为真的概率为为假的概率为10%,判断为真时,包含在程序b中的厂家程序正常执行,否则程序进入死循环;当“非法”执行次数达到250次,语句if(n<820)中的条件判断表达式“n<820”为真的概率为为假的概率为20%,判断为真时,后续程序正常执行,否则程序进入死循环;以此类推,随着运行次数增加,通过改变if中的判断表达式来控制后续程序的概率执行,达到运行次数越高,包含在程序b中的厂家程序执行正常几率越低的效果。

可见,上述逆向工程防御装置,可以包括具有正常电路功能且带有唯一id码的芯片、模数转换模块、微控制器,具有正常电路功能且带有唯一id码的芯片、模数转换模块按照相应电路连接分别与微控制器通信。其中,具有正常电路功能且带有唯一id码的芯片,其id码全球唯一、出厂后不可更改,利用这个id码,在产品的单片机程序中加入身份识别功能,一旦产品被竞争对手通过模仿硬件、复制程序抄袭导致微控制器上电后身份识别判定为非法,一旦控制器程序非法运行次数达到一定限度,随着程序运行次数的升高,后续程序正常执行的几率越低,程序执行时“好”时“坏”,执行异常概率特征近似机器自然老化故障,诱导破解者往错误的方向思考。本发明公开的这种高端仪器逆向工程防御装置及方法,开发流程简单、简便易行、成本低廉、伪装性强、可靠性强,基于“反逆向工程”的思路,使破解者无法精准快速定位加密关键,打乱破解思路,达到了迷惑破解者、使破解者“误入歧途”,提升破解难度、提高破解成本、打击不正当商业竞争行为、保护知识产权的目的。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

需要说明的是,本申请实施例所涉及的术语“第一\第二\第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序。应该理解“第一\第二\第三”区分的对象在适当情况下可以互换,以使这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。

本申请实施例的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或模块的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或模块。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1