CN108334754A - 嵌入式系统程序的加密解密方法及系统 - Google Patents

嵌入式系统程序的加密解密方法及系统 Download PDF

Info

Publication number
CN108334754A
CN108334754A CN201810097186.5A CN201810097186A CN108334754A CN 108334754 A CN108334754 A CN 108334754A CN 201810097186 A CN201810097186 A CN 201810097186A CN 108334754 A CN108334754 A CN 108334754A
Authority
CN
China
Prior art keywords
program
encrypting
encrypted
file
offset
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
CN201810097186.5A
Other languages
English (en)
Other versions
CN108334754B (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.)
SHANDONG AOTAI ELECTRIC CO Ltd
Original Assignee
SHANDONG AOTAI ELECTRIC 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 SHANDONG AOTAI ELECTRIC CO Ltd filed Critical SHANDONG AOTAI ELECTRIC CO Ltd
Priority to CN201810097186.5A priority Critical patent/CN108334754B/zh
Publication of CN108334754A publication Critical patent/CN108334754A/zh
Application granted granted Critical
Publication of CN108334754B publication Critical patent/CN108334754B/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

Landscapes

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

Abstract

本发明公开了嵌入式系统程序的加密解密方法及系统,根据文件格式列出可执行程序二进制文件的执行视图,从所述执行视图中选择其中的结构模块中的开始加密的指定位置;根据执行视图提取信息用于计算上述选择的结构模块的加密位置在文件中的偏移地址,采用加密算法对指定位置之后的若干字节进行加密;加载加密处理后的文件,在文件代码段映射之前添加写权限,映射之后计算解密位置进行解密。本发明实现在不影响程序正常功能的情况下,提升了用户程序的安全性,保护了用户的合法权益。

Description

嵌入式系统程序的加密解密方法及系统
技术领域
本发明涉及软件安全技术领域,特别是涉及嵌入式系统程序的加密解密方法及系统。
背景技术
近年来伴随系统控制、通信、传感等技术的愈加成熟,嵌入式系统在消费类电子、汽车、工业控制和通信等行业迅速普及。然而随着反编译和逆向工程等黑客技术的不断发展,嵌入式系统所面临的攻击也越来越多,盗版产品层出不穷。如何在这些嵌入式系统中采用低成本、高可靠性的方法保护企业或个人的研发设计成果不被非法剽窃和抄袭,成为当下嵌入式产品设计领域的一个重要问题。
现阶段对嵌入式产品的加密,多是采用加密存储芯片进行硬件电路的加密和重要数据的认证存储。加密存储芯片与主控芯片建立联系,通过一定的数据交互,配合主控芯片程序的正常运行。
通过这种外接加密芯片的方式,虽然可以在一定程度上防止程序被非法破解,但需要增加额外的硬件成本。且它所面向的嵌入式产品多为单片机裸机程序,对Linux系统应用程序并不适用。最重要的是目前市场上的加密芯片多是采取对比认证的加密方式,仍然无法避免逆向工程对认证点的恶意修改,导致程序安全性得不到保障。
发明内容
为了解决现有技术的不足,本发明提供了嵌入式系统程序的加密解密方法及系统,本发明采用纯软件的方式实现程序的加解密,实现在不影响程序正常功能的情况下,提升了用户程序的安全性,保护了用户的合法权益。
嵌入式系统程序的加密解密方法,包括:
根据文件格式列出可执行程序二进制文件的执行视图,从所述执行视图中选择其中的结构模块中的开始加密的指定位置;
根据执行视图提取信息用于计算上述选择的结构模块的加密位置在文件中的偏移地址,采用加密算法对指定位置之后的若干字节进行加密;
加载加密处理后的文件,在文件代码段映射之前添加写权限,映射之后计算解密位置进行解密。
进一步的,所述执行视图的各个结构模块包括文件头、程序头部表、程序代码段、节区头部表,其中选择程序代码段main函数后的指定位置开始加密。
进一步的,所述根据执行视图提取信息用于计算上述选择的结构模块的加密位置在文件中的偏移地址,具体方式是:先获得.text节区的偏移位置,再根据.text节区的偏移位置得到main函数在文件中的偏移位置。
进一步的,所述获得.text节区的偏移位置:
根据文件头的变量确定程序头部表位置;
遍历每一个表项,找到第一个段类型符合设定要求的表项,获取指定表项参数,该表项参数即表示代码段加载到虚拟内存空间的起始地址;
使用文件头的变量减去表项参数得到.text节区距离代码段起始地址的长度,该长度加上代码段在文件中的偏移量即得.text节区在文件中的偏移地址。
进一步的,所述根据.text节区的偏移位置得到main函数在文件中的偏移位置:
根据.text节区初始部分例程代码确定指定的平台架构下例程的二进制字节长度以及存储main函数内存入口地址的字节在例程中的偏移量,得到main函数在文件中的偏移量。
进一步的,所述加密算法具体为:通过哈希算法对一串明文生成密钥数据,从main函数后的指定位置,利用密钥数据对一定数量的字节加密;
采用哈希算法对一串明文生成固定长度的密钥数据,从main函数后的指定位置开始,利用密钥数据和源数据进行相关操作对数据进行加密,生成加密的目标文件。
进一步的,在解密时,获得程序入口在虚拟内存的偏移地址,然后通过内存映射函数的返回值和解密位置偏移量,得到需要操作的虚拟内存地址,通过解密算法在内存中完成目标程序的解密。
进一步的,解密完成后,恢复程序代码段内存的只读权限。
嵌入式系统程序的加密解密系统,包括:
加密位置确定模块,根据文件格式列出可执行程序二进制文件的执行视图,从所述执行视图中选择其中的结构模块中的开始加密的指定位置;
加密模块,根据执行视图提取信息用于计算上述选择的结构模块的加密位置在文件中的偏移地址,采用加密算法对指定位置之后的若干字节进行加密;
解密模块,加载加密处理后的文件,在文件代码段映射之前添加写权限,映射之后计算解密位置进行解密。
一种智能终端设备,所述智能终端设备设置有上述嵌入式系统程序的加密解密系统。
与现有技术相比,本发明的有益效果是:
本发明在不依赖特殊硬件(加密芯片)的情况下,采用纯软件的方式实现程序的加解密。结合ELF文件格式,以main函数作为加密位置的起始参考点,充分利用了用户代码内容与其他结构模块信息不相关的特点,较大程度增加了逆向破解的难度,同时降低了内核解密操作的复杂度。根据内核空间应用程序加载过程,以较小的性能牺牲,实现程序的解密处理,并保证程序稳定运行。从而实现在不影响程序正常功能的情况下,提升了用户程序的安全性,保护了用户的合法权益。
附图说明
构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
图1为ELF格式程序文件加密的整体流程;
图2为内核加载应用程序解密的整体流程;
图3为ELF格式程序文件的执行视图结构;
图4为不同架构下_start例程与main函数的关系;
图5为本发明的整体示意图。
具体实施方式
应该指出,以下详细说明都是示例性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
正如背景技术所介绍的,现有技术中存在程序安全性上的不足,为了解决如上的技术问题,本申请提出了嵌入式系统程序的加密解密方法及系统。
如图5所示,本申请的一种典型的实施方式中,提供了嵌入式系统程序的加密解密方法,该嵌入式系统程序的加密解密方法中包括程序加密步骤和内核解密步骤;
程序加密步骤中,通过对ELF文件格式分析,列出可执行程序二进制文件的执行视图。对执行视图的各个结构模块(文件头、程序头部表、程序段、节区头部表等)的具体功能分析,比较不同位置加密的优缺点。以加密的安全性为主要前提,最终采取从程序代码段main函数后的指定位置开始加密。通过对文件头、程序头部表内相关信息内容的提取,计算出main函数在文件中的偏移地址。采用自定义的加密算法,对之后的若干字节进行加密处理。
内核解密步骤中,解密处理在Linux内核代码中完成。分析内核空间应用程序加载过程,在程序可加载代码段映射到内存之前为其添加写权限。完成映射后,直接操作内存地址,在内存中采用与加密模块相似的算法对相关内容进行解密处理。解密完成后,恢复代码段内存的只读权限,避免程序运行过程中因非法写操作而留下的安全隐患,确保程序的稳定运行。
本申请的另一种典型的实施方式中,结合ELF文件格式和内核空间应用程序加载过程,实现了程序的加密和解密。
图1为本发明结合ELF文件进行程序加密的方法流程,具体过程如下:
1.首先读取目标程序文件内容,判断文件类型标识字节。非ELF格式的文件,进行出错处理,结束流程。对于ELF格式文件,则按照其执行视图结构如图3,提取ELF文件头和程序头部表的相关信息,计算得到.text节区的偏移位置,该节区保存着用户程序自main函数开始所有相关代码对应的机器指令。具体是通过文件头的e_phoff和e_entry两个变量,获取文本段和.text节区在虚拟内存空间的起始地址。根据e_phoff确定程序头部表在文件中的偏移位置,遍历每一个表项,找到第一个段类型p_type为PT_LOAD的表项,获取表项参数p_vaddr,该值即表示代码段加载到虚拟内存空间的起始地址。使用e_entry减去p_vaddr得到.text节区距离文代码段起始地址的长度。该长度加上代码段在文件中的偏移量p_offset,即.text节区在文件中的偏移位置。
2.根据.text节区的相关内容得到main函数在文件中的偏移位置。通过对_start例程源文件start.S代码或者反编译可执行程序得到的汇编代码的内容进行分析,确定指定平台架构下_start例程的二进制字节长度以及存储main函数内存入口地址的字节在_start例程中的偏移量,如图4。然后将main函数内存入口地址减去p_vaddr得到main函数距离代码段起始地址的长度,该长度加上代码段在文件中的偏移量p_offset,即main函数在文件中的偏移量。
3.通过哈希算法对一串明文生成密钥数据,从main函数后的指定位置,利用密钥数据对一定数量的字节加密。采用哈希算法(SHA、MD5等)对一串明文生成固定长度的密钥数据,从main函数后的指定位置开始,利用密钥数据和源数据进行简单的置换、异或、移位等操作对数据进行加密处理,生成加密的目标文件。
图2为本发明在内核空间进行程序解密的方法流程,具体过程如下:
1.首先内核开始加载应用程序,调用load_elf_binary()方法,对程序文件格式进行一系列的校验,同时为加载程序段做准备。然后开始遍历可加载段,只对目标程序的代码段做解密操作,其他的则按照正常流程处理。
2.在目标程序代码段进行内存映射之前,为其添加写权限。代码段数据在内存中的读写权限是由内存映射函数elf_map()的参数elf_prot决定的,在调用映射函数之前,为参数添加写权限的标志elf_prot|=PROT_WRITE。
3.完成内存映射后,计算程序的解密位置,确定解密字节数量和密钥数据,在内存中进行解密处理。其中解密位置的计算方式和加密相似,只是加密针对文件的偏移地址,解密针对虚拟内存的偏移地址。然后通过内存映射函数elf_map()的返回值和解密位置偏移量,得到要操作的虚拟内存地址,通过memcpy()方法对应解密算法在内存中完成目标程序的解密处理。
4.解密完成后,通过sys_mprotect()方法修改内存代码段为默认的只读权限,确保程序能够稳定运行。
本申请的再一种典型的实施方式中,公开了嵌入式系统程序的加密解密系统,包括:
加密位置确定模块,根据文件格式列出可执行程序二进制文件的执行视图,从所述执行视图中选择其中的结构模块中的开始加密的指定位置;
加密模块,根据执行视图提取信息用于计算上述选择的结构模块的加密位置在文件中的偏移地址,采用加密算法对指定位置之后的若干字节进行加密;
解密模块,加载加密处理后的文件,在文件代码段映射之前添加写权限,映射之后计算解密位置进行解密。
需要说明的是上述嵌入式系统程序的加密解密系统中的相关数据处理技术内容与上述嵌入式系统程序的加密解密方法中相同,此处不再重复叙述。
本申请的还一种典型的实施方式中,公开了一种智能终端设备,所述智能终端设备设置有上述嵌入式系统程序的加密解密系统。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.嵌入式系统程序的加密解密方法,其特征是,包括:
根据文件格式列出可执行程序二进制文件的执行视图,从所述执行视图中选择其中的结构模块中的开始加密的指定位置;
根据执行视图提取信息用于计算上述选择的结构模块的加密位置在文件中的偏移地址,采用加密算法对指定位置之后的若干字节进行加密;
加载加密处理后的文件,在文件代码段映射之前添加写权限,映射之后计算解密位置进行解密。
2.如权利要求1所述的嵌入式系统程序的加密解密方法,其特征是,所述执行视图的各个结构模块包括文件头、程序头部表、程序代码段、节区头部表,其中选择程序代码段main函数后的指定位置开始加密。
3.如权利要求2所述的嵌入式系统程序的加密解密方法,其特征是,所述根据执行视图提取信息用于计算上述选择的结构模块的加密位置在文件中的偏移地址,具体方式是:先获得.text节区的偏移位置,再根据.text节区的偏移位置得到main函数在文件中的偏移位置。
4.如权利要求3所述的嵌入式系统程序的加密解密方法,其特征是,所述获得.text节区的偏移位置:
根据文件头的变量确定程序头部表位置;
遍历每一个表项,找到第一个段类型符合设定要求的表项,获取指定表项参数,该表项参数即表示代码段加载到虚拟内存空间的起始地址;
使用文件头的变量减去表项参数得到.text节区距离代码段起始地址的长度,该长度加上代码段在文件中的偏移量即得.text节区在文件中的偏移地址。
5.如权利要求3所述的嵌入式系统程序的加密解密方法,其特征是,所述根据.text节区的偏移位置得到main函数在文件中的偏移位置:
根据.text节区初始部分例程代码确定指定的平台架构下例程的二进制字节长度以及存储main函数内存入口地址的字节在例程中的偏移量,得到main函数在文件中的偏移量。
6.如权利要求1所述的嵌入式系统程序的加密解密方法,其特征是,所述加密算法具体为:通过哈希算法对一串明文生成密钥数据,从main函数后的指定位置,利用密钥数据对一定数量的字节加密;
采用哈希算法对一串明文生成固定长度的密钥数据,从main函数后的指定位置开始,利用密钥数据和源数据进行相关操作对数据进行加密,生成加密的目标文件。
7.如权利要求1所述的嵌入式系统程序的加密解密方法,其特征是,在解密时,获得程序在虚拟内存中的入口地址,然后通过内存映射函数的返回值和解密位置偏移量,得到需要操作的虚拟内存地址,通过解密算法在内存中完成目标程序的解密。
8.如权利要求1所述的嵌入式系统程序的加密解密方法,其特征是,解密完成后,恢复程序代码段内存的只读权限。
9.嵌入式系统程序的加密解密系统,其特征是,包括:
加密位置确定模块,根据文件格式列出可执行程序二进制文件的执行视图,从所述执行视图中选择其中的结构模块中的开始加密的指定位置;
加密模块,根据执行视图提取信息用于计算上述选择的结构模块的加密位置在文件中的偏移地址,采用加密算法对指定位置之后的若干字节进行加密;
解密模块,加载加密处理后的文件,在文件代码段映射之前添加写权限,映射之后计算解密位置进行解密。
10.一种智能终端设备,所述智能终端设备设置有上述权利要求9所述的嵌入式系统程序的加密解密系统。
CN201810097186.5A 2018-01-31 2018-01-31 嵌入式系统程序的加密解密方法及系统 Active CN108334754B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810097186.5A CN108334754B (zh) 2018-01-31 2018-01-31 嵌入式系统程序的加密解密方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810097186.5A CN108334754B (zh) 2018-01-31 2018-01-31 嵌入式系统程序的加密解密方法及系统

Publications (2)

Publication Number Publication Date
CN108334754A true CN108334754A (zh) 2018-07-27
CN108334754B CN108334754B (zh) 2020-12-08

Family

ID=62927604

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810097186.5A Active CN108334754B (zh) 2018-01-31 2018-01-31 嵌入式系统程序的加密解密方法及系统

Country Status (1)

Country Link
CN (1) CN108334754B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109639727A (zh) * 2019-01-16 2019-04-16 厦门亿联网络技术股份有限公司 一种实现嵌入式设备网卡底层驱动局域网网络加密方法
CN111131158A (zh) * 2019-11-21 2020-05-08 珠海剑心互动娱乐有限公司 单字节对称加密解密方法、装置及可读介质
CN113221076A (zh) * 2021-05-07 2021-08-06 南京南瑞信息通信科技有限公司 防止elf程序被逆向分析的方法、装置及系统
CN113868655A (zh) * 2021-09-29 2021-12-31 北京天融信网络安全技术有限公司 木马查杀方法、装置、电子设备及计算机可读存储介质
CN117155714A (zh) * 2023-10-31 2023-12-01 苏州元脑智能科技有限公司 通信装置、方法、系统、设备、介质、加密系统及服务器

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103136458A (zh) * 2013-01-21 2013-06-05 中标软件有限公司 一种Linux操作系统的代码保护方法及其模块
WO2015093671A1 (ko) * 2013-12-16 2015-06-25 주식회사 에스이웍스 Arm 프로세서 기반의 파일 난독화 방법
CN106599629A (zh) * 2016-12-16 2017-04-26 Tcl集团股份有限公司 一种安卓应用程序加固方法及装置
CN106650327A (zh) * 2016-11-24 2017-05-10 湖南鼎源蓝剑信息科技有限公司 基于动态恢复so文件的Android应用加固方法
CN107291485A (zh) * 2016-04-11 2017-10-24 北京京东尚科信息技术有限公司 动态链接库的加固方法、运行方法、加固装置和安全系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103136458A (zh) * 2013-01-21 2013-06-05 中标软件有限公司 一种Linux操作系统的代码保护方法及其模块
WO2015093671A1 (ko) * 2013-12-16 2015-06-25 주식회사 에스이웍스 Arm 프로세서 기반의 파일 난독화 방법
CN107291485A (zh) * 2016-04-11 2017-10-24 北京京东尚科信息技术有限公司 动态链接库的加固方法、运行方法、加固装置和安全系统
CN106650327A (zh) * 2016-11-24 2017-05-10 湖南鼎源蓝剑信息科技有限公司 基于动态恢复so文件的Android应用加固方法
CN106599629A (zh) * 2016-12-16 2017-04-26 Tcl集团股份有限公司 一种安卓应用程序加固方法及装置

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109639727A (zh) * 2019-01-16 2019-04-16 厦门亿联网络技术股份有限公司 一种实现嵌入式设备网卡底层驱动局域网网络加密方法
CN111131158A (zh) * 2019-11-21 2020-05-08 珠海剑心互动娱乐有限公司 单字节对称加密解密方法、装置及可读介质
CN113221076A (zh) * 2021-05-07 2021-08-06 南京南瑞信息通信科技有限公司 防止elf程序被逆向分析的方法、装置及系统
CN113221076B (zh) * 2021-05-07 2022-08-09 南京南瑞信息通信科技有限公司 防止elf程序被逆向分析的方法、装置及系统
CN113868655A (zh) * 2021-09-29 2021-12-31 北京天融信网络安全技术有限公司 木马查杀方法、装置、电子设备及计算机可读存储介质
CN117155714A (zh) * 2023-10-31 2023-12-01 苏州元脑智能科技有限公司 通信装置、方法、系统、设备、介质、加密系统及服务器
CN117155714B (zh) * 2023-10-31 2024-02-09 苏州元脑智能科技有限公司 通信装置、方法、系统、设备、介质、加密系统及服务器

Also Published As

Publication number Publication date
CN108334754B (zh) 2020-12-08

Similar Documents

Publication Publication Date Title
CN108334754A (zh) 嵌入式系统程序的加密解密方法及系统
TWI334130B (en) Embedded system insuring security and integrity, and method of increasing security thereof
US9054865B2 (en) Cryptographic system and methodology for securing software cryptography
US8332652B2 (en) Computing device that securely runs authorized software
CN100578473C (zh) 嵌入式系统和增加嵌入式系统安全性的方法
KR102433011B1 (ko) Apk 파일 보호 방법, 이를 수행하는 apk 파일 보호 시스템, 및 이를 저장하는 기록매체
US7457960B2 (en) Programmable processor supporting secure mode
US20050210287A1 (en) Secure mode controlled memory
US20080010686A1 (en) Confidential Information Processing Device
KR101216995B1 (ko) 인덱스 테이블 기반 코드 암호화 및 복호화 장치 및 그 방법
CN108363580A (zh) 应用程序安装方法、装置、计算机设备和存储介质
CN107273723B (zh) 一种基于so文件加壳的Android平台应用软件保护方法
CN104539432A (zh) 一种对文件进行签名的方法和装置
CN111639306A (zh) 离线软件授权方法、装置、设备及存储介质
KR20110034612A (ko) 데이터 처리 시스템 및 방법
WO2017181968A1 (zh) 应用文件的处理方法、访问方法及装置、存储介质
CN111159658B (zh) 字节码处理方法、系统、装置、计算机设备和存储介质
CN100367144C (zh) 用于加密的应用程序安装的结构
CN110245464B (zh) 保护文件的方法和装置
WO2015154469A1 (zh) 数据库的操作方法及装置
EP3229164B1 (en) Devices for measuring and verifying system states
US20210143978A1 (en) Method to secure a software code performing accesses to look-up tables
US8914648B1 (en) Stateless and stateful implementations of faithful execution
CN111385083B (zh) 密钥保护方法及密钥保护系统
CN114329568A (zh) 文件加密方法、装置、系统平台及文件解密方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant