安企神电脑监控软件 在线试用
扫码咨询客服
安企神电脑监控软件、局域网监控软件
首页
功能介绍
产品简介
下载中心
帮助中心
客户列表
关于安企神

随机花指令加密算法

更新时间:2022-10-28 15:45:32


本文简介:在对已有的花指令加密策略及其存在的问题进行分析的基础上,我们提出了随机花指令加密算法。一、花指令加密方法及研究现状1、花指令加密的工作原理动态跟踪是软件破解的基本过程,如果程序代码具有反动态跟踪的能力,那软件被破解的可能性就变小了。花指令加密可以应用在反跟踪和反静态分析中。花指令加密方法需要在原始指令的适当位置插入一些无用的字节。这些被插入的字节不能被执行,否则原始指令的逻辑会遭到破坏,这是花指令

随机花指令加密算法

在对已有的花指令加密策略及其存在的问题进行分析的基础上,我们提出了随机花指令加密算法。

一、花指令加密方法及研究现状

1、花指令加密的工作原理

动态跟踪是软件破解的基本过程,如果程序代码具有反动态跟踪的能力,那软件被破解的可能性就变小了。花指令加密可以应用在反跟踪和反静态分析中。

花指令加密方法需要在原始指令的适当位置插入一些无用的字节。这些被插入的字节不能被执行,否则原始指令的逻辑会遭到破坏,这是花指令变换的基本条件。根据反汇编的工作原理,只有当花指令的最后一个或两个字节同正常指令的开始几个字节放反汇编器识别成一条指令时,才能有效破坏反汇编的结果。插入的花指令应当是一些不完整的指令,被插入的不完整指令可以是随机选择的。

2、研究状况及存在的问题

目前采用比较多的一种花指令形式是无条件跳转指令JMP加花指令。这种策略通过简单变换后的各种扩展形式,在一定程度上增强了花指令的生存能力,但是这些扩展形式还是存在特征码,用工具仍可以自动去除。

另外一种形式是直接在原代码中的JMP指令后添加花指令,缺点是受代码中JMP指令个数的限制,如果JMP指令过少,则代码变换效果不明显。

综合而盲,要想提高模糊度(反汇编器产生错误结果的程度),就必须应用多个方法,并保证方法使用的随机性和方法本身的随机性,使产生的花指令没有固定的特征码。由此,我们提出随机袍指令加密算法的目的就是保证花指令无特征码并且具有较高的模糊度。

二、随机花指令加密算法

1、加密算法思想

根据的文的分析,目前采用花指令进行加密的问题主要在于存在特征码,容易用工具自动去除,其次是模糊度不够,效果不明显。对于这两个问题,本文提出两种策略来加以解决。第一种策略是JMP加花指令的扩展形式,简称为“JMP扩展”。这种变换保证其具有足够的随机度,即使存在特征值,但特征值的数量巨大,完全列举所有情况也需要很多工作量。第二种策略是将代码中的条件跳转指令变换为反条件跳转指令加JMP指令的形式,简称为"JMC变换”口这个策略进一步增加JMP指令的数量以便可以添加更多花指令。

加密算法的具体思想是:首先将原始指令分成若干个候选块并确定一个候选块随机序列,然后对每一个候选块进行如下处理:应用“JMP扩展”策略对候选块内指令进行变换,然后应用“JMC变换”策略对候选块内条件跳转指令进行变换,最后在变换后的代码的JMP指令后随机添加花指令。

2、"JMP扩展¨加密算法描述

JMP扩展是用三条JMP指令对一段正常的指令进行变换,具体方法如下:

随机花指令加密算法

跳过的正常指令个数是随机选取的,但是个数不能超过候选块的指令数目。图1给出了“JMP扩展”的工作流程。

随机花指令加密算法

加密算法描述:

1)取到一指令候选块B,指令指针P指示候选块的第一条指令;

2)产生一随机数m,m的大小在B的指令数目内;

3)从指针P开始处向后扫描m条指令,确定这m条指令的长度Z;

4)在P前插入第一条JMP指令JMP+(l+2),其中2是第二条JMP指令长度2字节;

5)在P+m后插入第二条JMP指令JMP+2,其中2是第三条JMP指令长度2字节;

6)在P+m+1后插入第三条JMP指令JMP - (l+2)。跳转到正常指令处。

3、"JMC变换”加密算法描述

JMC变换是将一条条件跳转指令变换为反条件跳转指令加JMP指令,具体方法如下:

随机花指令加密算法

所有的条件跳转指令都可以做这种变换。Intel x86指令集中条件跳转指令编码方式有其特点,一条条件跳转指令的操作码和0x01异或就可以得到其反条件跳转指令。根据这个特点,“JMC变换”就变得容易多了。图2给出了“JMC变换”的工作流程。

随机花指令加密算法

加密算法描述:

1)取到一指令候选块B,指令指针P指示候选块的第一条指令;

2)如果指令P为条件跳转指令则进行如下操作,否则跳转到8);

3)区分指令的操作码opcode和操作数opmnd;

4)将opcode与0x01异或得到反条件跳转操作码opcode;

5)根据oprand判断跳转类型足短跳转还是长跳转,得到oprand;

6)将指令JFI变换为opcode’+oprand’,其中oprand’是下条JMP指令的长度;

7)在P后插入JMP +oprand指令;

8)指令指针尸指向下一条指令;

9)如果8中指令全部处理完则结束,否则跳转到2)。

4、加密算法描述

加密算法首先对原始指令进行分块操作,每个分块被称为候选块,分块操作的目的一是为了使“JMP扩展”操作不会重叠影响,二是可以根据空闲空间的多少灵活调整分块大小。分块的大小可根据空闲空间多少灵活确定。确定一个分块的随机序列的目的是假如空闲空问不够,那么随机变换的候选块都不会一样。随机花指令加密算法会调用
前面的两种策略对代码变换后,在JMP指令后添加花指令。图3给出了随机花指令加密算法的工作流程。

随机花指令加密算法

随机花指令加密算法描述:

首先对所有指令进行分块,对候选块产生一个随机序列P,例如P(4,1,3,.7,2,5,6…),下面按照随机序列的顺序对所有分块如下处理:

1)如果空间不够则退出,否则进行下面操作;

2)对一个候选块进行一次“JMP扩展”操作;

3)对一个候选块中的条件跳转指令进行“JMC变换”操作;

4)在候选块中的JMP指令后随机添加花指令;

5)平衡代码段剩余可用空间;

6)如果所有候选块处理完毕则向下执行,否则取下一个候选块并眺转到1);

7)平衡所有跳转指令跳转位置;

8)指令地址偏移重定位;

9)其他数据、函数地址重定位。

三、随机花指令加密算法实践

1、随机花指令算法的实验步骤与结果

1)实验环境

硬件环境:celcronl. 7GHz/256M Memoy/20G HardDisk软件环境;操作系统Windows XP+SP2/JCEE变换器/W32Dasm8. 93/实验用可执行程序test.exe。其中JCEE变换器是为实现变换而编制的测试程序。W32Dasm是应用广泛的反汇编器调试器,程序test.cxe是用来进行变换的程序。

2)实验步骤

a)对实验用原程序进行反汇编,得到汇编伪码P;

b)用JCEE变换器对原程序进行变换,得到变换后的程序;

c)用反汇编器对变换后的程序进行反汇编,得到汇编伪码P;

d)比较P和P’得到结论R。

3)实验结果

候选块的大小选为10条指令,每条JMP指令后最大添加8个字节花指令。 teat. exe程序经变换后得到的数据如表1所示。

随机花指令加密算法

经验证,采用本随机花指令加密方法对test. exe文件进行花指令变换,采用花指令去除工具对变换后的结果进行花指令搜索,均未能发现相关的花指令特征。

2、实验分析

经过‘‘JMP扩展”变换后的代码要跳过一定数量的正常指令,然后在三条JMP指令后添加花指令,总共存在的特征值是8*8*8*10 =5120种,如果基数扩大,特征值数量更多。因此想要定义所有的特征不太实际。在JMP后添加了花指令后不能自动去除还有一个原因是JMP指令作为原始代码的组成部分是不能被去除的,否则程序逻辑遭到破坏。

小知识之花指令

花指令是程序中有一些指令,由设计者特别构思,希望使反汇编的时候出错,让破解者无法清楚正确地反汇编程序的内容,迷失方向。经典的是一些跳转指令,目标位置是另一条指令的中间,这样在反汇编的时候便会出现混乱。花指令有可能利用各种指令:jmp, call, ret的一些堆栈技巧,位置运算,等等。

立即下载试用

非线性图像加密算法之基于随机分数梅林变换的应用

为了消除线性加密系统的安全隐患,提出了一种基于随机分数梅林变换的非线性图像加密算法。结合对数一极坐标变换和随机分数傅里叶变换构造了随机分数梅林变换,随机化过程用到的实对称随机矩阵由线性同余函数生成。输入的实值图像经随机分数梅林变换非线性加密,得到便于存储和传榆的实值密文。该算法增加了线性同余函数的3个参数作为密钥,与分数梅林变换相比,随机分数梅林变换的分数阶密钥的敏感性更强。数值模拟表明该算法有较强的抗攻击能力,密钥灵敏度高,具有良好的安全性。

一、图像加密算法

1、分数梅林变换

二维函数f(x,y)的分数梅林变换定义为:

其中:C为常数,P1,Pz分别为x,y方向的变换阶次,和。分数梅林变换的一种快速实现方法是将以f(x,y)由笛卡尔坐标系转换到对数一极坐标中,再对转换结果实施FrFT。即:

 

对数一极坐标变换定义如下:

对数一极坐标变换决定了分数悔林变换具有非线性属性。

2、数字图像加密过程

根据式(2)的类推,FrMT的实现可在离敞分数傅里叶变换(Discrete Fractional Transfonn.DFrFT)的基础上得到,即FrMTU(x,y)]=DFrFT[f(p,θ)]。得到像的加密和解密过程如图1所示。

待加密的二维数字图像A的DFrFT的矩阵形式为:

其中:T表示矩阵转段,p是DFrFT的分数阶。变换核矩阵Hp为:

其中:V为本征向鼠矩阵,Dp为DFrFT本征值的对角矩阵,Dp中的N个值为:{exp( - 2irrnplt)(n=0,1,2,….N-1)},这里t是DFrFT的周期,N是自然整数。

引入LCG随机化本征向量v,即随机化了DFrFT的核矩阵HP。LCG的递推关系为:

其中:n=1,2,…;模数M为大的正整数。初值xo(0≤xo<M),乘数a(0≤a<M)和增域b(0≤b<M)为LCG的3个参数。利用LCG生成的伪随机序列,重构一个2维随机矩阵R,并通过计算得到一个实数对称矩阵S:

数值计算矩阵Is的归一化本征向量,得到实数的本征向量V,S是对称的随机矩阵,由它计算得到的本征向量矩阵相互正交,且具有随机性。矩阵s与H满足乘机交换关系HS=SHi',它们具有栩同的本征向量;随机化的y作为DF-rF1’的本征向量矩阵,也即随机化了DFrFT的核矩阵,从而得到随机DFrFT随机DFrFT有FrFT良好的数学性质,且具有变换谱能量均匀分布和半剧期实数化的特点,这对图像加密来说十分有益。

原始图像通过由对数一极坐标变换和随机DFrFT构造的随机FrMT。完成图像像素值和位置的双重加密,得到类白噪声的密文,分数阶p和LCG的参数(x0,a,b)作为加密算法的密钥。对于实际输人信号,随机分数傅立叶变换的输出结果是实值的,可节省密文的存储空间,减轻传输负担。密文的解密过程通过随机FrMT的逆变换完成。

二、加密算法统计分析

模拟中分数阶次P= 0.5,线性同余函数的参数xo=100,a= 16807,b=7,M=231-1。图2(a)为255×255的原始图像Lena。图2(b)为加密结果,是类似于噪声图像的实值信息,利于密文存储与传输。图2(c)为Lena的直方图,图2(d)是密文的直方图,相比原图的直方图明显变平滑了,密码分析者可以通过统计特性获得原始图像的特征。

为了说明加密算法符合经典密码理论中的混淆与扩散思想,在密钥相同的条件下,用本加密算法加密图3(a)所示的图像Baboon,图3(b)为其直方图。

与Lena的直方图明显不同,统计特性完全不同。密文直方图如图3(c),与图2(d)相比,对不同统计特性图像加密后得的密文具有相类似的直方图,加密算法可有效抵抗统计分析攻击。 相邻像素的相关性反映像素的扩散程度,原始图像的水平、垂直和对角方向的栩邻像素具有很高的栩关性,安全的加密算法得到的密文相邻像素相关性要尽可能小。表1给出了明文和密文图像在水平、垂直和对角线方向上相邻像素的相关系数。

图4(a)和4(b)分别为明文和密文在水平方向上相邻像素的相关性分布图。从相关系数表和相关性分佑图可知,密文的相关性显著弱于原图的相关性,无法通过相关性分析由少量图像信息恢复明文。

三、加密算法安全性分析

算法的密钥为DFrFT的分数阶和LCG的3个参数,所有密钥正确时,解密的结果如图5(a)所示。

衡量解密图像和原始图像的相似程度一般采用均方误差(Mean Square Error.MSE),MSE=3(X)O作为阀值,当均方误差低于此阙值时,几乎可以恢复原始图像。均方误差定义为:

其中:M×N为图像的大小,h1(i,j)和h2(i,j)分别代表原图和解密图像的灰度值。 图5(c)对应FrMT和随机FrMT计算了分数阶密钥的MSE,进行了灵敏度对比o当分数阶没有偏差,即p=0.5时,MSE值为0。常规FrMT的MSE曲线p=0.1或p=0.9时,对应的MSE值才达到阈值,分数阶灵敏度不高,只能作为辅助密钥,还需设计主密钥达到加密所需的安全指标。随机FrMT在p有微小偏差时,MSE曲线迅速上升到3 000以上。图5(b)是p=0.505时对应的解密图像,有相当强的噪声。随机化后FrMT的分数阶密钥灵敏度大幅提高,密钥空间巨大,穷举攻击很难成功,完全可以作为加密算法的主要密钥。 为了说明LCG参数密钥的安全性,引入偏差量△,图6(a)、(b)和(c)表示3个参数x0,a和b分别偏差△=1时对应的解密图像。LCG参数作为密钥的MSE曲线如图6(d)所示,由图可知,任何一个LCG参数的偏差量|△|≥1时,MSE>3000。3个参数作为密钥具有几乎相同的离灵敏度,拥有巨大的密钥空间,能有效抵抗穷举攻击。

图像处理和传输过程中会有噪声的影响,所以算法抵抗噪声的倍棒性很重要。将均值为0,方差为0.1的高斯噪声G加入密文E。噪声干扰后加密图像振幅为E’,表示为:

其中k是噪声强度的系数。对应k的变化,解密图像的MSE变化如图7所示。

高斯噪声强度k=0.5和k=1时,攻击后的解密图像MSE值分别为400和1200,两昔的值远小于阈值,表明加密算法具有良好的抗噪声攻击能力。

小知识之非线性

非线性(non-linear),即 变量之间的数学关系,不是直线而是曲线、曲面、或不确定的属性,叫非线性。非线性是自然界复杂性的典型性质之一;与线性相比,非线性更接近客观事物性质本身,是量化研究认识复杂知识的重要方法之一;凡是能用非线性描述的关系,通称非线性关系。

本文为收集整理,文章部分观点不代表本站观点,如有侵权或其它问题请反馈客服。https://www.wgj7.com/cjwt/16413.html