CN104392154A - 一种加密方法 - Google Patents

一种加密方法 Download PDF

Info

Publication number
CN104392154A
CN104392154A CN201410645104.8A CN201410645104A CN104392154A CN 104392154 A CN104392154 A CN 104392154A CN 201410645104 A CN201410645104 A CN 201410645104A CN 104392154 A CN104392154 A CN 104392154A
Authority
CN
China
Prior art keywords
key
code
parameter
encipheror
source code
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.)
Granted
Application number
CN201410645104.8A
Other languages
English (en)
Other versions
CN104392154B (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.)
Beijing Senseshield 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 CN201410645104.8A priority Critical patent/CN104392154B/zh
Publication of CN104392154A publication Critical patent/CN104392154A/zh
Application granted granted Critical
Publication of CN104392154B publication Critical patent/CN104392154B/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/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本申请公开了一种加密方法,包括:根据当前用于加密的密钥,将加密程序源代码中与所述密钥相关的变量参数转化为相应的常量参数,对所述转化后得到的加密程序源代码进行编译;利用所述编译后得到的加密程序,对待加密数据进行加密。采用本发明可以有效隐藏加密时所使用的密钥,防止破解者从加密程序文件、内存中获得密钥,从而可以对密钥进行有效保护。

Description

一种加密方法
技术领域
本发明涉及数据安全技术,特别是涉及一种加密方法。
背景技术
目前,常用的密码学算法库提供的应用程序接口API,都需要把密钥作为参数来进行传递,而很多加密方法的密钥(如RSA密钥)是几个大数,在API接口定义中,大数的数据结构往往是一个dword类型的数组,或字节数组。例如RSA2048中,模数是2048位,即256字节,调用加解密API时,传递的是数组指针,而数组则是内存中连续存放的密钥数据,破解者只要找到调用API的入口,再逐步查找堆栈,即有可能获得整个密钥。
目前的加密和保护工具,主要功能是对加密程序的代码进行保护(乱序、混淆、反跟踪)等,没有对数据做针对性的处理。如外壳工具虽然能对文件的数据段整体加密,但运行时,在API的入口处,仍然可以找到明文的连续密钥。这是因为密码学算法本身要求这样的数据结构,并且在运算时数据必须是明文的。
目前尚未提出一种能够对密钥进行有效保护,防止破解者从加密程序文件、内存中获得密钥的有效方法。
发明内容
有鉴于此,本发明的主要目的在于提供一种加密方法,该方法可以对密钥进行有效保护。
为了达到上述目的,本发明提出的技术方案为:
一种加密方法,包括:
a、根据当前用于加密的密钥,将加密程序源代码中与所述密钥相关的变量参数转化为相应的常量参数,对所述转化后得到的加密程序源代码进行编译;
b、利用所述编译后得到的加密程序,对待加密数据进行加密。
综上所述,本发明提出的加密方法,在利用密钥进行加密前,根据密钥的实际数值,对加密程序的源代码进行修改,对其中与密钥相关的变量参数进行固化,转化为相应的常量参数,可以有效隐藏加密时所使用的密钥,防止破解者从加密程序文件、内存中获得密钥,从而可以对密钥进行有效保护。
附图说明
图1为本发明实施例一的流程示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步地详细描述。
本发明的核心思想是:根据密钥的实际取值,将加密程序中与密钥相关的变量参数转化为取值固定的固化参数(如宏、常量),这样,可以实现隐藏密钥的目的,提高密钥的安全性。
图1为本发明实施例一的流程示意图,如图1所示,该实施例主要包括:
步骤101、根据当前用于加密的密钥,将加密程序源代码中与所述密钥相关的变量参数转化为相应的常量参数,对所述转化后得到的加密程序源代码进行编译。
本步骤,用于将加密程序源代码中与所述密钥相关的变量参数进行固化,以达到隐藏密钥的目的,防止破解者从加密程序文件、内存中获得密钥。
较佳地,本步骤可以采用下述步骤实现:
步骤a1、对于加密程序源代码中以密钥为参数的每个函数,将所述密钥从函数参数集合中删除。
步骤a2、将所述函数的函数体中以密钥整体取值为参数的每个运算逻辑函数代码,根据所述密钥计算出相应的运算结果,将所述运算逻辑函数代码替换为以所述运算结果为值的常量参数。
这里,通过将密钥参数代替为相应的固定的运算结果,即以常量参数替换算法源代码中的密钥参数,从而可以起到隐藏密钥的效果。
例如:对于如下代码:
void func(byte*data,byte*key/*密钥*/)
{
int key_len=getKeyLength(key);//getKeyLength是另一个函数,用于在运行时获取密钥的长度。
}
经过转化后为:
void func(byte*data)
{
int key_len=KEY_LENGTH;//由于密钥已经固化了,其长度也是确定的了。
}
步骤a3、对于所述源代码中每个有密钥的部分数值参与运算的循环结构,将该循环结构展开,得到等效的T组运算代码,所述T为循环结构所限定的循环执行次数上限,并根据所述密钥的实际取值,对每组运算代码中以密钥的部分数值为参数的运算代码进行修改,所述修改包括将所述密钥的部分数值对应的变量参数替换为相应的以所述密钥的部分数值为固定取值的常量参数。
这里,考虑到密钥往往是256、512或更多字节的数据,通常是数组的形式存储,计算机的基本运算不能直接处理这种大小的数据,原始算法中会有循环结构,一次处理密钥的一部分。在循环结构的函数体中,密钥的部分数值所对应的数组元素是通过变量的形式引用的,即循环函数体中,以循环次数为变量作为密钥数组的下标参数,从而可以在每次执行时使用本次循环对应的密钥数组元素。本步骤中,通过将循环结构展开,即去除函数体外面的循环结构,还原执行循环结构时所需要实际执行的所有运算代码,也就是将执行循环结构时每次执行的函数体程序代码全部罗列出来,这样,将得到T组运算代码,每组运算代码对应执行一次循环结构的函数体所要执行的程序代码,第t组运算代码即第t次执行函数体所要运行的程序代码。如此,每组运算代码中,以循环次数为下标的密钥数组参数的取值,也会因密钥数组、以及下标值均为固定值,而成为固定值。因此,本步骤中,通过对循环结构进行展开,可以将循环结构中的密钥数组参数变量转换为以实际的数组元素值为固定取值的常量参数,从而可以达到隐藏密钥的目的。
例如,对于下述循环结构代码;
for(i=0;i<15;i++)
{
sum+=key[i];
}
将循环结构展开后为:
sum+=KEY_1;//密钥的第一个部分
sum+=KEY_2;//密钥的第二个部分
...
sum+=KEY_15;
步骤a4、对于所述源代码中每个以密钥的部分数值为除数的除法运算逻辑代码,将该除法运算逻辑代码替换为等效的以所述密钥的部分数值的倒数为乘数的运算逻辑代码,并将所述密钥的部分数值的倒数替换为以该倒数的运算结果为值的常量参数。
这里,考虑到加密程序中如果用到除法,一般是使用密钥数组和循环试除方式实现,修改方法是:将“除以密钥”变换为“乘以密钥的倒数”(密钥本质上是一个数,而密钥固化后,这个数在编译时是已知的,因此它的倒数也是编译时已知的)。
步骤a5、对于所述源代码中每个以密钥为指数的模幂运算代码,根据该密钥的实际数值,将该模幂运算代码对应的循环结构展开,进行所述展开时,对于用于判断幂的指定位是否为零的语句,根据所述密钥的实际数值,确定相应的判断结果,利用所述判断结果对应的程序代码替代所述判断的相关程序代码。
这里,考虑到对于加密程序中的模幂运算,一般是循环判断幂的各个位,如果该位为0,则做平方后取模;否则做平方并乘以底后取模。密钥固化后幂值也是编译时已知的,因此它的各个位的值也是编译时已知的,将循环展开,去掉判断幂的某一位的代码,将对该位要采取的动作直接罗列。
例如:对于下述以密钥为指数的模幂运算代码:
改为:
步骤a6、在头文件里将所有所述常量参数进行定义,将所述头文件和当前得到的加密程序源代码文件进行编译,得到编译后的加密程序。
这里,需要在头文件里对前述步骤中生成的所有常量参数进行定义,即在头文件里定义各常量参数的实际取值,以便在修改后的加密程序中使用这些参数。
步骤102、利用所述编译后得到的加密程序,对待加密数据进行加密。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (2)

1.一种加密方法,其特征在于,包括:
a、根据当前用于加密的密钥,将加密程序源代码中与所述密钥相关的变量参数转化为相应的常量参数,对所述转化后得到的加密程序源代码进行编译;
b、利用所述编译后得到的加密程序,对待加密数据进行加密。
2.根据权利要求1所述的方法,其特征在于,所述步骤a包括:
a1、对于加密程序源代码中以密钥为参数的每个函数,将所述密钥从函数参数集合中删除;
a2、将所述函数的函数体中以密钥整体取值为参数的每个运算逻辑函数代码,根据所述密钥计算出相应的运算结果,将所述运算逻辑函数代码替换为取值为所述运算结果的常量参数;
a3、对于所述源代码中每个有密钥的部分数值参与运算的循环结构,将该循环结构展开,得到等效的T组运算代码,所述T为循环结构所限定的循环执行次数上限,并根据所述密钥的实际取值,对每组运算代码中以密钥的部分数值为参数的运算代码进行修改,所述修改包括将所述密钥的部分数值对应的变量参数替换为相应的以所述密钥的部分数值为固定取值的常量参数;
a4、对于所述源代码中每个以密钥的部分数值为除数的除法运算逻辑代码,将该除法运算逻辑代码替换为等效的以所述密钥的部分数值的倒数为乘数的运算逻辑代码,并将所述密钥的部分数值的倒数替换为以该倒数的运算结果为值的常量参数;
a5、对于所述源代码中每个以密钥为指数的模幂运算代码,根据该密钥的实际数值,将该模幂运算代码对应的循环结构展开,进行所述展开时,对于用于判断幂的指定位是否为零的语句,根据所述密钥的实际数值,确定相应的判断结果,利用所述判断结果对应的程序代码替代所述判断的相关程序代码;
a6、在头文件里将所有所述常量参数进行定义,将所述头文件和当前得到的加密程序源代码文件进行编译,得到编译后的加密程序。
CN201410645104.8A 2014-11-10 2014-11-10 一种加密方法 Active CN104392154B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410645104.8A CN104392154B (zh) 2014-11-10 2014-11-10 一种加密方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410645104.8A CN104392154B (zh) 2014-11-10 2014-11-10 一种加密方法

Publications (2)

Publication Number Publication Date
CN104392154A true CN104392154A (zh) 2015-03-04
CN104392154B CN104392154B (zh) 2017-06-16

Family

ID=52610056

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410645104.8A Active CN104392154B (zh) 2014-11-10 2014-11-10 一种加密方法

Country Status (1)

Country Link
CN (1) CN104392154B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105205359A (zh) * 2015-10-12 2015-12-30 厦门飞信网络科技有限公司 一种JavaScript代码保护方法及装置
WO2016199166A1 (en) * 2015-06-11 2016-12-15 Pradeep Varma Potentate: a cryptography-obfuscating, self-policing, pervasive distribution system for digital content
CN107194212A (zh) * 2017-06-21 2017-09-22 株洲中车时代电气股份有限公司 一种显示器源代码中协议内容的保护方法
CN108924161A (zh) * 2018-08-13 2018-11-30 南京敞视信息科技有限公司 一种交易数据加密通信方法及系统
CN109151015A (zh) * 2018-08-13 2019-01-04 南京敞视信息科技有限公司 一种交易信息安全推送方法
CN116662941A (zh) * 2023-07-31 2023-08-29 腾讯科技(深圳)有限公司 信息加密方法、装置、计算机设备和存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王祥根 等: "一种基于自修改代码技术的软保护方法", 《中国科学院研究生院学报》 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016199166A1 (en) * 2015-06-11 2016-12-15 Pradeep Varma Potentate: a cryptography-obfuscating, self-policing, pervasive distribution system for digital content
CN105205359A (zh) * 2015-10-12 2015-12-30 厦门飞信网络科技有限公司 一种JavaScript代码保护方法及装置
CN105205359B (zh) * 2015-10-12 2018-11-23 厦门飞信网络科技有限公司 一种JavaScript代码保护方法及装置
CN107194212A (zh) * 2017-06-21 2017-09-22 株洲中车时代电气股份有限公司 一种显示器源代码中协议内容的保护方法
CN107194212B (zh) * 2017-06-21 2020-04-17 株洲中车时代电气股份有限公司 一种显示器源代码中协议内容的保护方法
CN108924161A (zh) * 2018-08-13 2018-11-30 南京敞视信息科技有限公司 一种交易数据加密通信方法及系统
CN109151015A (zh) * 2018-08-13 2019-01-04 南京敞视信息科技有限公司 一种交易信息安全推送方法
CN116662941A (zh) * 2023-07-31 2023-08-29 腾讯科技(深圳)有限公司 信息加密方法、装置、计算机设备和存储介质
CN116662941B (zh) * 2023-07-31 2023-12-26 腾讯科技(深圳)有限公司 信息加密方法、装置、计算机设备和存储介质

Also Published As

Publication number Publication date
CN104392154B (zh) 2017-06-16

Similar Documents

Publication Publication Date Title
CN104392154A (zh) 一种加密方法
Songhori et al. Tinygarble: Highly compressed and scalable sequential garbled circuits
Hutter et al. NaCl on 8-bit AVR microcontrollers
Turan et al. Compact and flexible FPGA implementation of Ed25519 and X25519
JP7132926B2 (ja) コンパイルデバイス及びコンパイル方法
JP2016505887A (ja) 乱数生成器及びストリーム暗号
CN104462882B (zh) 软件保护方法、硬件加密设备以及包括其的软件保护系统
Brenner et al. How practical is homomorphically encrypted program execution? an implementation and performance evaluation
Agosta et al. The MEET approach: Securing cryptographic embedded software against side channel attacks
CN108512645A (zh) 将掩蔽自动插入到算法中
Agosta et al. A multiple equivalent execution trace approach to secure cryptographic embedded software
CN106789006A (zh) 一种解密方法及系统
JP6554103B2 (ja) 暗号アルゴリズムで使用されるときに秘密データを保護する方法
Tran et al. Parallel execution of AES-CTR algorithm using extended block size
CN108898008A (zh) 应用程序的运行方法和装置
JP6919973B2 (ja) プログラムコードのコンピュータ支援難読化方法
Nejati et al. Algebraic fault attack on SHA hash functions using programmatic SAT solvers
CN105933120A (zh) 一种基于Spark平台的口令哈希值恢复方法和装置
CN102855439B (zh) 一种执行文件自校验方法及装置
Seo et al. Pseudo random number generator and hash function for embedded microprocessors
Hong et al. A cost-effective tag design for memory data authentication in embedded systems
van den Berg RISC-V implementation of the NaCl-library
CN105373366B (zh) 一种生成大素数的方法及装置
CN114205104A (zh) 针对功率和电磁侧信道攻击的对认证标签计算的保护
US20170134379A1 (en) Method for securing an application and data

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
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

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

Patentee after: Beijing Shendun 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.