CN104318134B - 一种数据保护方法 - Google Patents

一种数据保护方法 Download PDF

Info

Publication number
CN104318134B
CN104318134B CN201410617318.4A CN201410617318A CN104318134B CN 104318134 B CN104318134 B CN 104318134B CN 201410617318 A CN201410617318 A CN 201410617318A CN 104318134 B CN104318134 B CN 104318134B
Authority
CN
China
Prior art keywords
arithmetic logic
register
compiler
look
encryption
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201410617318.4A
Other languages
English (en)
Other versions
CN104318134A (zh
Inventor
孙吉平
韩勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Reflections On Shudun Tianjin Technology Co ltd
Original Assignee
Beijing Senseshield Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Senseshield Technology Co Ltd filed Critical Beijing Senseshield Technology Co Ltd
Priority to CN201410617318.4A priority Critical patent/CN104318134B/zh
Publication of CN104318134A publication Critical patent/CN104318134A/zh
Application granted granted Critical
Publication of CN104318134B publication Critical patent/CN104318134B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code

Abstract

本申请公开了一种数据保护方法,包括:对待保护的应用程序进行编译,得到相应的编译程序;对所述编译程序中中间寄存器对应的运算逻辑,采用寄存器加密的方式进行加密处理;所述中间寄存器为用于保存中间运算结果的寄存器;按照预设的切割密度N,对加密处理后的所述编译程序进行运算切割,所述N≥2;为所述编译程序中经过运算切割后得到的每个寄存器对应的运算逻辑代码,分别生成相应的查找表,利用所述查找表替换相应的运算逻辑,其中,所述查找表的下标为被替换的运算逻辑中运算参数对应的中间寄存器。采用本发明可以有效提高计算机应用程序的安全性。

Description

一种数据保护方法
技术领域
本发明涉及数据安全技术,特别是涉及一种计算机应用程序的数据保护方法。
背景技术
目前,为了确保计算机应用程序的安全性,需要对应用程序进行虚拟化处理,利用程序的运算逻辑复杂化或隐藏运算逻辑,来提高程序代码被非法获取的难度。常用的虚拟化手段有:逻辑运算的拆分、等效变换以及查表等方式。
其中,逻辑运算的拆分和等效变换是通过使运算逻辑复杂化,来达到隐藏程序运算逻辑的目的。逻辑运算的拆分是将运算逻辑拆分成更基本的运算,来提高运算逻辑表达的复杂性。例如,对于异或运算XOR,可以拆分成6个与非运算NAND。逻辑运算的等效变换是在逻辑运算中加入可以获得等效结果的混淆参数。例如,对于A+2,可以等效变换为A+5-3。
查表,是通过预先根据程序的运算逻辑建立运算参数与运算结果的映射表,在对应用程序进行虚拟化处理时,引入该映射表,利用映射表替代真实的运算逻辑,根据具体的运算参数查询该映射表,即可得到相应的运算结果,从而达到隐藏运算逻辑的目的。
上述逻辑运算的拆分和等效变换方案,虽然可以使运算逻辑复杂化,但是由于仅是基本的运算逻辑的替代或增加,而这些基本的运算逻辑是容易被识别的(如add、NAND),在识别出基本运算后,通过一些机械化的流程可以反推出原来的运算逻辑,从而导致经过寄存器加密处理的程序仍然可以在较短的时间内被非法获取。
上述查表方案,虽然运算逻辑被隐藏了,但是,具体的运算参数是存在的,基于多组运算参数与运算结果的对应关系,容易推知相应的运算逻辑。另外,查表方案还存在占用存储空间过大的问题。每张表格所占用的存储空间等于运算参数的取值范围与运算结果的取值范围乘积,例如当运算参数和运算结果均为32位整数时,表的大小为234字节,这在现实上是不能接受的。
由此可见,现有的虚拟化手段存在无法有效确保应用程序的安全性的问题。
发明内容
有鉴于此,本发明的主要目的在于提供一种数据保护方法,该方法可以有效提高计算机应用程序的安全性。
为了达到上述目的,本发明提出的技术方案为:
一种数据保护方法包括:
a、对待保护的应用程序进行编译,得到相应的编译程序;
b、对所述编译程序中中间寄存器对应的运算逻辑,采用寄存器加密的方式进行加密处理;所述中间寄存器为用于保存中间运算结果的寄存器;
c、按照预设的切割密度N,对加密处理后的所述编译程序进行运算切割,所述N≥2;
d、为所述编译程序中经过运算切割后得到的每个寄存器对应的运算逻辑代码,分别生成相应的查找表,利用所述查找表替换相应的运算逻辑,其中,所述查找表的下标为被替换的运算逻辑中运算参数对应的中间寄存器。
综上所述,本发明提出的数据保护方法,通过整合寄存器加密方法、运算切割和查找表生成等方法对程序代码进行加密处理,使得运算中间结果采用密文的方式进行存储,可以有效提高计算机应用程序的安全性。
附图说明
图1为本发明实施例一的流程示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步地详细描述。
本发明的核心思想是:基于查表的虚拟化方法,在将运算逻辑转化为表格之前,先进行寄存器加密处理,使得表中运算结果所对应的参数是经过加密处理后的参数,从而可以提高映射表格隐藏运算逻辑的有效性。另外,为了避免每张表格占用大量存储空间,在生成表格前,先对运算逻辑进行切割,得到若干子运算逻辑,然后再对各子运算逻辑生成相应的表格,从而可以避免存储空间需求过大所致的无法应用的问题。
图1为本发明实施例一的流程示意图,如图1所示,该实施例主要包括:
步骤101、对待保护的应用程序进行编译,得到相应的编译程序。
本步骤,可以采用现有的可被虚拟化平台所识别的编译工具实现,较佳地,可以采用Virbox编译器进行编译。
步骤102、对所述编译程序中中间寄存器对应的运算逻辑,采用寄存器加密的方式进行加密处理。
所述中间寄存器为用于保存中间运算结果的寄存器。
本步骤中,需要对中间寄存器对应的运算逻辑进行加密处理,如此,可以使应用程序的中间运算结果采用密文的方式进行保存,从而可以提高应用程序的安全强度。
本步骤中可以采用现有的寄存器加密方法对一运算逻辑进行加密。
较佳地,为了提高加密的可靠性,可以采用在读寄存器的指令后面插入解密运算指令、在写寄存器的指令前面插入加密运算指令的方式,进行所述加密处理。
例如,对于原始代码:R1=i+7,是向寄存器R1中写入内容i+7,相应的加密处理为:R1=enc(i+7);其中,enc()是一个加密变换指令。
对于原始代码i=R1-5,是将寄存器R1内容读出与5做减法,相应的加密处理为:i=dec(R1)-5;其中,dec()是一个解密变换指令。
对于原始代码R1+=7,是将寄存器R1内容读出与7做加法后再写入R1中,相应的加密处理为R1=enc(dec(R1)+7)。
较佳地,可以利用多种寄存器加密算法进行加密处理,即上述enc()、dec()可以采用多种加密算法确定,具体地可以为:所述编译程序中每个中间寄存器对应的运算逻辑,采用从预设的寄存器加密算法中随机选择一种加密方法的方式,对该运算逻辑进行加密处理。这样,不同寄存器对应的运算逻辑采用的加密方法将可能不同,即使破解了一种的加解密也不可能类似推到其他代码,从而可以为了进一步提高加密处理后程序代码的逆向难度。
步骤103、按照预设的切割密度N,对加密处理后的所述编译程序进行运算切割。
具体的,上述运算切割包括:
对于加密处理后的所述编译程序中每个寄存器对应的运算逻辑代码,按照预设的切割密度N,将该运算逻辑代码切割为等效的N个子运算逻辑代码。
这里,所述N个子运算逻辑代码所实现的运算逻辑将与原运算逻辑代码等效。具体地,如何将一运算逻辑代码切割为等效的N个子运算逻辑代码的方法,为本领域技术人员所掌握,在此不再赘述。
本步骤中,需要对加密处理后的编译程序进行运算切割,如此,一方面,可以使运算逻辑表达形式更加复杂,提高程序代码被逆向获取的难度,另一方面通过运算逻辑的拆分,减少运算参数的长度,即将一个“宽”运算逻辑转化为多个“窄”的运算逻辑,从而可以避免后续步骤中进一步生成相应的查找表时对存储空间需求过大的问题,使得此后可以结合查找表进一步提高程序代码被逆向获取的难度,确保程序代码的安全性。
例如:当N=2时,对于(ushort)result=(ushort)a+(ushort)imm可以转化为下述两个子运算逻辑代码:
(LoByte)result=(LoByte)a+(LoByte)imm;(保存加法进位标志CF)
和(HiByte)result=(HiByte)a+(HiByte)imm+CF。
可见,每个子运算逻辑代码所涉及的运算参数的长度为切割前的1/2,这样,此后进一步对每个子运算逻辑代码生成查找表时,所需要的存储空间将不再庞大到无法具体应用,从而可以进一步与查找表方案相结合,提高代码的安全性。
所述N的具体取值,可由本领域技术人员根据实际运算需要进行设置,只要能满足后续步骤中查找表生成的存储空间需要即可。
步骤104、为所述编译程序中经过运算切割后得到的每个寄存器对应的运算逻辑代码,生成相应的查找表,利用所述查找表替换相应的运算逻辑,其中,所述查找表的下标为被替换的运算逻辑中运算参数对应的中间寄存器。
这里,查找表的下标即为查找表的索引项。
本步骤,用于将运算切割后得到的各寄存器中保存的运算逻辑代码替换为等效的查找表,这样,通过查找表隐藏实际的运算逻辑,可以进一步提高程序代码的安全性。
这里,查找表的生成方法同现有系统,所不同的是,本步骤是在对中间寄存器进行了加密的基础上进行的运算逻辑的替代,这样,由于中间运算结果一直是密文,再以密文作为查找表的下标,将很难再对查找表进行逆向,得出程序代码的运算逻辑,从而使得最终处理得到的程序代码具有很高的安全强度。
从上述技术方案可以看出本发明通过整合寄存器加密方法、查找表生成、运算切割等方法对程序代码的中间参数进行加密处理,可以有效确保程序代码的数据安全性。下面结合一具体程序代码的处理过程,对本发明做进一步的详细阐述。
假设,采用Virbox编译工具,需要处理的原始代码为:int result=((input^0x3B6217D9)>>1)+0xF834;
首先,采用Virbox编译工具,对原始代码进行编译,得到下述结果:
R0=input
R1=R0^0x3B6217D9
R2=R1>>1
R3=R2+0xF834
result=R3
然后,对编译结果寄存器加密处理,下述加密处理后的代码:
R0=input
E0=enc(R0^0x3B6217D9)
E1=enc(dec(E0)>>1)
R3=dec(E1)+0xF834
result=R3
第三,对上述加密处理后的代码进行运算切割,
R0=input
e00=enc(r00^0xD9)
e01=enc(r01^0x17)
e02=enc(r02^0x62)
e03=enc(r03^0x3B)//1个32位操作拆分为上面4个8位操作,其中e00,e01,e02,e03分别是上述E0对应的4个8位部分,而r00,r01,r02,r03是R0对应的4个8位部分。
e13=enc(dec(e03)>>1)//1个32位移位操作拆分为4个8位操作。每个8位操作会设定一个“进位标志”,代表移出的位是否为1。
e12=enc(RCR1(dec(e02)))//RCR1是右移1位,并将最高位用“进位标志”填充。
e11=enc(RCR1(dec(e01)))
e10=enc(RCR1(dec(e00)))
r30=dec(e10)+0x34;//32位加法切割为4个8位加法,每个运算后设置进位标志
r31=ADC(dec(e11),0xF8);//带进位标志的加法。
r32=ADC(dec(e12),0);
r33=ADC(dec(e13),0);
result=R3;
最后,对于运算切割后的每个子运算逻辑代码,根据每个8位操作的类型和参数,生成各个查找表,并生成第4阶段目标代码。
BYTE TableXorD9_Enc[256]={...}
BYTE TableDec_Shr1_Enc[256]={...}
BYTE TableDec_Adc00[512]={...}
R0=input;
e00=TableXorD9_Enc[r00]//这个表就是r=>enc(r^0xD9)的映射
e01=TableXor17_Enc[r01]
e02=TableXor62_Enc[r02]
e03=TableXor3B_Enc[r03]
e13=TableDec_Shr1_Enc[e03]//这个表是r=>enc(dec(r)>>1)的映射
e12=TableDec_Rcr1_Enc[e02]
e11=TableDec_Rcr1_Enc[e01]
e10=TableDec_Rcr1_Enc[e00]
r30=TableDec_Add34[e10]
r31=TableDec_AdcF8[e11]
r32=TableDec_Adc00[e12]
r33=TableDec_Adc00[e13]
result=R3
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (4)

1.一种数据保护方法,其特征在于,包括:
a、对待保护的应用程序进行编译,得到相应的编译程序;
b、对所述编译程序中中间寄存器对应的运算逻辑,采用寄存器加密的方式进行加密处理;所述中间寄存器为用于保存中间运算结果的寄存器;
c、对于加密处理后的所述编译程序中每个寄存器对应的运算逻辑代码,按照预设的切割密度N,将该运算逻辑代码切割为等效的N个子运算逻辑代码;所述N≥2;
d、为所述编译程序中经过运算切割后得到的每个寄存器对应的运算逻辑代码,分别生成相应的查找表,利用所述查找表替换相应的运算逻辑,其中,所述查找表的下标为被替换的运算逻辑中运算参数对应的中间寄存器。
2.根据权利要求1所述的方法,其特征在于,步骤a中采用Virbox编译器进行所述编译。
3.根据权利要求1所述的方法,其特征在于,步骤b中采用在读寄存器的指令后面插入解密运算指令、在写寄存器的指令前面插入加密运算指令的方式,进行所述加密处理。
4.根据权利要求1所述的方法,其特征在于,步骤b中对于所述编译程序中每个中间寄存器对应的运算逻辑,采用从预设的寄存器加密算法中随机选择一种加密方法的方式,对该运算逻辑进行加密处理。
CN201410617318.4A 2014-11-05 2014-11-05 一种数据保护方法 Active CN104318134B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410617318.4A CN104318134B (zh) 2014-11-05 2014-11-05 一种数据保护方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410617318.4A CN104318134B (zh) 2014-11-05 2014-11-05 一种数据保护方法

Publications (2)

Publication Number Publication Date
CN104318134A CN104318134A (zh) 2015-01-28
CN104318134B true CN104318134B (zh) 2017-06-06

Family

ID=52373365

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410617318.4A Active CN104318134B (zh) 2014-11-05 2014-11-05 一种数据保护方法

Country Status (1)

Country Link
CN (1) CN104318134B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107659399B (zh) * 2017-10-09 2021-02-23 四川巧夺天工信息安全智能设备有限公司 一种基于不重复密钥对字符进行伪装、解伪装的方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1260055A (zh) * 1997-06-09 2000-07-12 联信公司 用于提高软件安全性的模糊技术
CN1275846A (zh) * 1999-05-26 2000-12-06 松下电器产业株式会社 数据加密装置和方法
US7818552B2 (en) * 2007-12-20 2010-10-19 The United States Of America As Represented By The Secretary Of The Army Operation, compare, branch VLIW processor
US8185749B2 (en) * 2008-09-02 2012-05-22 Apple Inc. System and method for revising boolean and arithmetic operations
CN103324481A (zh) * 2013-06-26 2013-09-25 网宿科技股份有限公司 通过汇编实现代码混淆的编译方法和系统
CN103699820A (zh) * 2013-12-25 2014-04-02 北京深思数盾科技有限公司 用于相对跳转指令的混淆方法
CN104092535A (zh) * 2014-07-24 2014-10-08 福建升腾资讯有限公司 一种实现des密码加密的方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7430670B1 (en) * 1999-07-29 2008-09-30 Intertrust Technologies Corp. Software self-defense systems and methods

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1260055A (zh) * 1997-06-09 2000-07-12 联信公司 用于提高软件安全性的模糊技术
CN1275846A (zh) * 1999-05-26 2000-12-06 松下电器产业株式会社 数据加密装置和方法
US7818552B2 (en) * 2007-12-20 2010-10-19 The United States Of America As Represented By The Secretary Of The Army Operation, compare, branch VLIW processor
US8185749B2 (en) * 2008-09-02 2012-05-22 Apple Inc. System and method for revising boolean and arithmetic operations
CN103324481A (zh) * 2013-06-26 2013-09-25 网宿科技股份有限公司 通过汇编实现代码混淆的编译方法和系统
CN103699820A (zh) * 2013-12-25 2014-04-02 北京深思数盾科技有限公司 用于相对跳转指令的混淆方法
CN104092535A (zh) * 2014-07-24 2014-10-08 福建升腾资讯有限公司 一种实现des密码加密的方法

Also Published As

Publication number Publication date
CN104318134A (zh) 2015-01-28

Similar Documents

Publication Publication Date Title
CN107346401B (zh) 用于安全地执行程序的信息保障系统
CN104025104B (zh) 具有密钥驱动的混淆的虚拟机设备和方法
US9053300B2 (en) Device and a method for generating software code
JP5167348B2 (ja) ソフトウェア暗号化方法およびソフトウェア暗号解読方法およびソフトウェア暗号化装置およびソフトウェア暗号解読装置
US9928102B2 (en) Method and apparatus for randomizing computer instruction sets, memory registers and pointers
CN105320895B (zh) 用于联机加密处理的高性能自主硬件引擎
CN105074712A (zh) 代码处理装置和程序
CN104539432A (zh) 一种对文件进行签名的方法和装置
CN105843776B (zh) 微处理器与其中安全执行指令的方法
CN111512307B (zh) 编译设备和方法
CN112639774B (zh) 具有掩蔽功能的编译器设备
WO2018015325A1 (en) Device and method for performing obfuscated arithmetic
KR20200136142A (ko) 소프트웨어 보안을 위한 메모리 데이터의 암호화 및 복호화 방법, 이를 수행하기 위한 기록매체 및 장치
CN106209346A (zh) 白盒密码技术交错查找表
CN107273724A (zh) 为白盒实施方案的输入和输出加水印
CN113273131A (zh) 使用共享的份额的计算设备
CN104318134B (zh) 一种数据保护方法
CN110113151A (zh) 一种对elf格式程序的非侵入式实时加解密方法
CN109558341A (zh) 计算机内存数据保护方法和计算机
CN107341372A (zh) 一种软件保护方法和装置
NL2015955B1 (en) Calculating device and method.
JP6996561B2 (ja) システム、改変装置、方法及びプログラム
EP3238113B1 (en) Hiding of a program execution
WO2019059069A1 (ja) 秘密読み書き装置、秘密読み書き方法、およびプログラム
CN106921482A (zh) 一种基于arm指令构造数据加解密算法的方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 100872 room 1706, building 59, Zhongguancun street, Haidian District, Beijing

Applicant after: BEIJING SENSESHIELD TECHNOLOGY Co.,Ltd.

Address before: 100872 room 1706, building 59, Zhongguancun street, Haidian District, Beijing

Applicant before: BEIJING SHENSI SHUDUN TECHNOLOGY Co.,Ltd.

COR Change of bibliographic data
CB02 Change of applicant information

Address after: 100193 Beijing, Haidian District, East West Road, No. 10, East Hospital, building No. 5, floor 5, layer 510

Applicant after: BEIJING SENSESHIELD TECHNOLOGY Co.,Ltd.

Address before: 100872 room 1706, building 59, Zhongguancun street, Haidian District, Beijing

Applicant before: BEIJING SENSESHIELD TECHNOLOGY Co.,Ltd.

COR Change of bibliographic data
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20181217

Address after: Room 602-43, 29 Building, 89 Garden Road, Jingjin Science and Technology Valley Industrial Park, Wuqing District, Tianjin 301700 (Centralized Office District)

Patentee after: Reflections on Shudun (Tianjin) Technology Co.,Ltd.

Address before: 100193 5th floor 510, No. 5 Building, East Yard, No. 10 Wangdong Road, Northwest Haidian District, Beijing

Patentee before: BEIJING SENSESHIELD TECHNOLOGY Co.,Ltd.

TR01 Transfer of patent right
CP02 Change in the address of a patent holder

Address after: Room 103, Building 1, Yuntian Plaza, No. 30 Binhu Road, Wuqing Development Zone, Wuqing District, Tianjin 301799

Patentee after: Reflections on Shudun (Tianjin) Technology Co.,Ltd.

Address before: Room 602-43, 29 Building, 89 Garden Road, Jingjin Science and Technology Valley Industrial Park, Wuqing District, Tianjin 301700 (Centralized Office District)

Patentee before: Reflections on Shudun (Tianjin) Technology Co.,Ltd.

CP02 Change in the address of a patent holder