首页> 中国专利> SO文件安全加固/调用方法、系统及可逆矩阵生成服务器

SO文件安全加固/调用方法、系统及可逆矩阵生成服务器

摘要

一种SO文件安全加固/调用方法、系统及可逆矩阵生成服务器,包括:对物联应用SO文件利用SM4算法进行加密得到二进制文件;将所述二进制文件随机分裂成多个文件片段;并基于随机生成的查找表矩阵重组封装;本发明提高物联终端上运行的物联APP SO文件自身安全防护能力,通过国密SM4算法以及文件碎片查找表重组技术,大大加强SO文件的防逆向分析能力,从而进一步保护了物联终端和物联应用不受恶意网络攻击,具有广泛的工程实用价值。

著录项

说明书

技术领域

本发明涉及电力信息安全和物联网应用安全领域,具体涉及一种SO文件安全加固/调用方法、系统及可逆矩阵生成服务器。

背景技术

近年来,网络安全形势日益严峻,国家级、集团式网络安全威胁层出不穷。电力系统作为国家关键信息基础设施,一直以来是“网络战”的重点攻击目标之一。为防范各种网络安全攻击,确保电网安全稳定运行,电力公司已经建成了“分区分域、安全接入、动态感知、全面防护”的主动防御体系,目前,正在加快建设“可管可控、精准防护、可视可信、智能防御”的网络安全智能防御体系,网络安全体系逐步健全。然而,随着电力公司物联网技术的快速发展,以及工业互联网和电力物联网的不断建设,各类物联智能终端设备及应用直接大规模使用在营销、输配、物资等各个电力核心业务环节。由于物联终端设备及其运行的物联应用自身防护能力有限,且所处环境不可控,一旦物联应用被非法获取和破解,其中的核心源码可能逆向分析,漏洞将被直接利用,进而直接影响电力公司整体物联网安全防护体系,安全威胁极大。

分析产生上述物联应用被窃取,进而造成源码泄漏和漏洞攻击,究其原因是电力物联应用缺乏应用自身层面的高强度防逆向措施,尤其是承载核心业务逻辑的SO文件(.SO为后缀结尾的文件名,是一种用于Linux或Android系统运行的动态链接库,使用C/C++语言编程)可能遭受类似IDA(Interactive Disassembler Professional,是一个世界顶级的交互式反汇编工具)的反编译软件破解,攻击者可以通过分析业务代码核心逻辑,发现其中的安全漏洞,进而精心制定针对性的攻击手段,从而危害电力公司电力物联网安全运行。所以,研制一种针对物联应用SO文件高强度安全加固系统对保护电力公司信息安全可谓迫在眉睫。目前,市面上针对物联终端上SO文件的安全加固应用,主要是通过混淆编译技术对源码进行混淆,从而降低源码的可读性、易读性。该种方法虽然一定程度上提升了SO文件源码的防逆向能力,但由于代码混淆技术并非加密,攻击者通过混淆源码的深入研究,还是能找寻到破解的方法,加上市面上已有针对源码反混淆技术的研究和自动化工具的开发,代码混淆并不能完全满足电力物联应用的安全防护要求;还有一种在Android端针对SO文件的加密加壳技术,通过有源码或无源码的方式对SO文件的格式进行破坏、对特定Section(是SO文件保存内容和管理函数和全局变量调用的数据段)内容进行加密,从而实现内部核心源码的加密保护。然而该方案目前仅适用于Android平台,无法在Linux操作系统上完全实现。在物联应用上,存在大量使用Jar包(使用Java语言编译打包生成的可执行文件,一般用于以模块化的方式为业务系统前端或后端提供特定功能)调用SO文件的应用实例,所以,研究一种可以在Linux平台上,当Java调用SO文件时,对SO文件源码进行安全加固的方案意义十分重大。

发明内容

为了解决现有技术中所存在的不能在各种Linux操作系统上对SO文件源码进行安全加固的问题,本发明提供一种SO文件安全加固方法,包括:

对物联应用SO文件进行加密得到二进制文件;

将所述二进制文件随机分裂成多个文件片段;

随机生成查找表矩阵B并基于所述查找表矩阵B得到计算矩阵;

对所述计算矩阵和多个文件片段进行封装得到物联应用SO文件对应的封装好的SO文件。

优选的,所述基于所述查找表矩阵B得到计算矩阵,包括:

将所述查找表矩阵B发送给可逆矩阵生成服务器;并

从所述可逆矩阵生成服务器获取计算矩阵;

其中,所述计算矩阵包括:矩阵AB,所述矩阵AB由随机矩阵A和查找表矩阵B相乘得到。

优选的,所述基于所述查找表矩阵B得到计算矩阵,包括:

生成随机矩阵A和所述随机矩阵A的逆矩阵A

将所述随机矩阵A和查找表矩阵B相乘得到矩阵AB;

其中,所述计算矩阵包括:矩阵AB和逆矩阵A

优选的,所述基于所述计算矩阵和多个文件片段进行封装得到物联应用SO文件对应的封装好的SO文件,包括:

基于所述查找表矩阵B的映射关系依次为所述多个文件片段安装文件头;

删除所述查找表矩阵B;

将所述计算矩阵和所述安装文件头后的所有文件片段进行封装得到SO文件。

优选的,所述得到物联应用SO文件对应的封装好的SO文件之后,还包括:

删除物联应用SO文件,将所述封装好的SO文件存储于原物联应用SO文件位置,并以物联应用SO文件的文件名为所述装好的SO文件命名。

基于同一种发明构思,本发明还提供一种SO文件安全加固系统,包括:

加密模块,用于对物联应用SO文件进行加密得到二进制文件;

分裂模块,用于将所述二进制文件随机分裂成多个文件片段;

查找表生成模块,用于随机生成查找表矩阵B并基于所述查找表矩阵B得到计算矩阵;

封装模块,用于对所述计算矩阵和多个文件片段进行封装得到物联应用SO文件对应的封装好的SO文件。

基于同一种发明构思,本发明还提供一种SO文件安全加固方法,包括:

从SO文件安全加固系统获取查找表矩阵B;

对所述查找表矩阵B进行处理得到计算矩阵,并将所述计算矩阵发送给所述SO文件安全加固系统。

优选的,所述对所述查找表矩阵B进行处理得到计算矩阵,包括:

生成随机矩阵A和所述随机矩阵A的逆矩阵A

将所述随机矩阵A和查找表矩阵B相乘得到矩阵AB;

其中,所述计算矩阵包括:矩阵AB。

基于同一种发明构思,本发明还提供一种可逆矩阵生成服务器,包括:

获取模块,用于从SO文件安全加固系统获取查找表矩阵B;

处理模块,用于对所述查找表矩阵B进行处理得到计算矩阵,并将所述计算矩阵发送给所述SO文件安全加固系统。

优选的,所述处理模块包括:

随机生成子模块,用于生成随机矩阵A和所述随机矩阵A的逆矩阵A

计算子模块,用于将所述随机矩阵A和查找表矩阵B相乘得到矩阵AB;

其中,所述计算矩阵包括:矩阵AB和逆矩阵A

优选的,所述的可逆矩阵生成服务器,还包括;

解密可逆矩阵模块,用于基于从SO文件安全加固系统传来的矩阵AB,匹配对应的解密可逆矩阵A

基于同一种发明构思,本发明还提供一种SO文件的调用方法,包括:

当物联应用在JAVA程序执行过程中调用SO文件时,通过调用与原始JAR文件同名的壳文件执行如下操作:

对预先封装的SO文件进行重组;

然后对重组后的SO文件进行解密得到物联应用SO文件;

通过调用原始JAR文件,对所述物联应用SO文件执行操作;

其中,所述SO文件的封装方法利用本发明提供的一种物联应用SO文件安全加固方法进行封装。

优选的,所述对预先封装的SO文件进行重组,包括:

将封装的SO文件中的矩阵AB发送至可逆矩阵生成服务器;

基于所述可逆矩阵生成服务器发送的逆矩阵A

基于所述查找表矩阵B对所述封装的SO文件中的所有片段进行重组;

其中,所述封装的SO文件包括:计算矩阵和SO文件对应的多个文件片段;

所述计算矩阵包括:矩阵AB。

优选的,所述对预先封装的SO文件进行重组,包括:

基于封装的SO文件中的矩阵AB和逆矩阵A

基于所述查找表矩阵B对所述封装的SO文件中的所有片段进行重组;

其中,所述封装的SO文件包括:计算矩阵和SO文件对应的多个文件片段;

所述计算矩阵包括:矩阵AB和逆矩阵A

基于同一种发明构思,本发明还提供一种SO文件的调用系统,包括:壳文件;

所述壳文件用于:对预先封装的SO文件进行重组;然后对重组后的SO文件进行解密得到物联应用SO文件;通过调用原始JAR文件,对所述物联应用SO文件执行操作;

其中,所述SO文件的封装方法利用本发明提供的一种物联应用SO文件安全加固方法进行封装。

与现有技术相比,本发明的有益效果为:

(1)本发明提供的SO文件安全加固方法和系统包括:对物联应用SO文件进行加密得到二进制文件;将所述二进制文件随机分裂成多个文件片段;随机生成查找表矩阵B并基于所述查找表矩阵B得到计算矩阵;对所述计算矩阵和多个文件片段进行封装得到物联应用SO文件对应的封装好的SO文件,本方案采用了加密和查找表分片双重保障机制,保护二进制文件源码逻辑不被静态和动态分析;

(2)本发明提供的SO文件安全加固方法和可逆矩阵生成服务器,包括:从SO文件安全加固系统获取查找表矩阵B;对所述查找表矩阵B进行处理得到计算矩阵,并将所述计算矩阵发送给所述SO文件安全加固系统;本发明借鉴了目前业界动态白盒密钥的实现方式,实现了由可逆矩阵生成服务器生成和存储查找表解密可逆矩阵,安全加固系统仅存储封装后的SO文件而不存储可逆矩阵,实现了不落地存储,攻击者只有侵入远端可逆矩阵生成服务器,或者解惑并破解后台服务器和物联应用的通信数据包,才有可能获取查找表解密可逆矩阵,因此大大提升物联应用SO文件的破译难度;

(3)本发明提供的SO文件的调用方法和系统,包括:当物联应用在JAVA程序执行过程中调用SO文件时,通过调用与原始JAR文件同名的壳文件执行如下操作:对预先封装的SO文件进行重组;然后对重组后的SO文件进行解密得到物联应用SO文件;通过调用原始JAR文件,对所述物联应用SO文件执行操作;其中,所述SO文件的封装方法利用本发明提供的SO文件安全加固方法和系统进行封装,适用于壳加固方式加固的应用运行平台不再局限于Android,该加固方案普适于各个Linux版本。

附图说明

图1为本发明的SO文件安全加固方法流程图;

图2为本发明在可逆矩阵生成服务器中得到计算矩阵的过程;

图3为物联应用SO文件的加固流程;

图4为JAVA正常调用SO文件示意图;

图5为本发明的加固时SO文件的加密流程图;

图6为本发明的加密SO文件分片-查找表映射机制示意图;

图7为本发明的16X16查找表示意图;

图8为本发明的SO文件分片和特殊文件头重组;

图9为本发明的加固应用运行前的SO文件预处理过程;

图10为本发明的物联应用SO文件的执行预处理流程;

图11为本发明提供的一种SO文件的调用方法流程;

图中,HEAD-文件头;Segment-文件片段。

具体实施方式

针对以上问题,本发明提出一种SO文件安全加固/调用方法、系统及可逆矩阵生成服务器。本发明可对物联APP进行安全加固,从而提高了物联终端上运行的物联APP(电力物联网领域使用的、应用前端部署于电力物联终端上的应用程序)SO文件自身安全防护能力,通过国密SM4算法以及文件碎片查找表重组技术,大大加强SO文件的防逆向分析能力,从而进一步保护了物联终端和物联应用不受恶意网络攻击,具有广泛的工程实用价值。为了更好地理解本发明,下面结合说明书附图和实例对本发明的内容做进一步的说明。

实施例1

如图1所示,本发明提供一种SO文件安全加固方法,包括:在SO文件安全加固系统中,

S101:对物联应用SO文件进行加密得到二进制文件;

S102:将所述二进制文件随机分裂成多个文件片段;

S103:随机生成查找表矩阵B并基于所述查找表矩阵B得到计算矩阵;

S104:对所述计算矩阵和多个文件片段进行封装得到物联应用SO文件对应的封装好的SO文件。

本发明中S103:随机生成查找表矩阵B并基于所述查找表矩阵B得到计算矩阵,可以通过将随机生成查找表矩阵B发送到可逆矩阵生成服务器,由可逆矩阵生成服务器对查找表矩阵B进行处理得到计算矩阵;当连接不到可逆矩阵生成服务器时由本地SO文件安全加固系统对查找表矩阵B进行处理得到计算矩阵。

因此本发明还提供一种SO文件安全加固方法,如图2所示,包括:在可逆矩阵生成服务器中得到计算矩阵的过程:

S201:从SO文件安全加固系统获取查找表矩阵B;

S202:对所述查找表矩阵B进行处理得到计算矩阵,并将所述计算矩阵发送给所述SO文件安全加固系统。

步骤S202还包括:

S202-1生成随机矩阵A和所述随机矩阵A的逆矩阵A

S202-2将所述随机矩阵A和查找表矩阵B相乘得到矩阵AB;

其中,所述计算矩阵包括:矩阵AB。

其具体过程如图3所示包括:

步骤(1):首先,本文加固方案的应用场景为物联应用在JAVA程序(JAR包)执行过程中调用SO文件时,对SO文件的防逆向保护。如图4所示,在未进行任何保护的情况下,test.jar在接收到命令参数后开始执行,执行到需调用SO文件的逻辑时,通过JNI机制进行SO文件调用。

步骤(2):在物联应用(仅限使用JAVA和SO)加固时,首先需要完成对SO文件进行高强度加密。如图5所示,首先原始SO文件a.so通过SM4国密对称加密算法进行安全加密,加密后a.SO文件变成a_enc二进制文件。由于考虑到仅通过国密SM4算法进行加密存在安全隐患,一旦攻击者通过技术手段获取了SM4加解密密钥(该密钥将本地存储在应用APP内,并且被严格保护),便可解密获取原始SO文件。所以,此方案为加密SO文件设计了第二重保护机制,a_enc文件将被随机分裂成256个文件片段,并且被存储到应用的特定目录下,这些文件片段将在物联应用test.jar文件运行时被重组。

步骤(3):如图6分片结束后,加固系统本地随机生成一个16X16的查找表矩阵B(查找表格式如图7,是一组十六进制之间重新一一映射的关系)并发送给远程的可逆矩阵生成服务器,可逆矩阵生成服务器接收到请求后将根据查找表内容,随机生成一个大小16X16的可逆矩阵A和它的逆矩阵A

步骤(4):加固系统需自动生成分片重组SO文件和SM4解密SO文件,这两个SO文件需在应用JAR包运行前依次运行(如图9的解密预处理流程),从而在内存中还原原SO文件。重组SO文件首先执行逆矩阵生成服务器的访问,可逆矩阵服务器通过查询从物联应用上传来的矩阵AB,匹配对应的解密可逆矩阵A

步骤(5):在加固分片环节技术后,原始SO文件需要被删除,并且加固系统将生成一个同名的仿冒SO文件(MOCK SO)顶替原始SO文件的位置。如图10所示,当应用运行时,JAVA源程序依靠JNI机制的“loadlibrary”方法加载MOCK SO文件,Mock SO文件通过重写JNI_onload函数获得内存中解密后SO文件的句柄,实现Java类与原始SO文件的绑定,从而保证原始SO文件可以随时被内存中的Java调用。

实施例2

当SO文件SO文件安全加固之后是封装JAR包,由于在运行应用JAR包之前需执行SO文件的预处理流程,所以需要使用一个壳JAR文件整合串联重组SO文件、SM4解密SO文件以及原始JAR文件的执行顺序。壳JAR文件需要满足:

1、与原JAR文件进行同名替换;

2、壳JAR使用JNI机制,先调用重组SO文件,再调用SM4解密SO文件,最后调用原始JAR文件;

3、驱动壳JAR文件必须完全接收输入的命令和参数,并且把命令和参数传递给原始JAR文件执行。

因此本发明还提供一种SO文件的调用方法,如图11所示,物联应用在JAVA程序执行过程中调用SO文件时,通过调用与原始JAR文件同名的壳文件执行如下操作:

S301:对预先封装的SO文件进行重组;

S302:然后对重组后的SO文件进行解密得到物联应用SO文件;

S303:通过调用原始JAR文件,对所述物联应用SO文件执行操作;

这里,利用本发明提供的SO文件安全加固方法对SO文件进行封装。

其中,当SO文件的封装是由可逆矩阵生成服务器实现的,此时步骤S301对预先封装的SO文件进行重组,具体包括:

将封装的SO文件中的矩阵AB发送至可逆矩阵生成服务器;

基于可逆矩阵生成服务器发送的逆矩阵A

基于查找表矩阵B对所述封装的SO文件中的所有片段进行重组;

其中,所述封装的SO文件包括:计算矩阵和SO文件对应的多个文件片段;

所述计算矩阵包括:矩阵AB。

当SO文件的封装是由本地SO文件安全加固系统实现的,此时步骤S301对预先封装的SO文件进行重组,包括:

基于封装的SO文件中的矩阵AB和逆矩阵A

基于所述查找表矩阵B对所述封装的SO文件中的所有片段进行重组;

其中,所述封装的SO文件包括:计算矩阵和SO文件对应的多个文件片段;

计算矩阵包括:矩阵AB和逆矩阵A

这里步骤S302:然后对重组后的SO文件进行解密得到物联应用SO文件,可以利用与原加密算法一致的算法实现,这里不再赘述。

实施例3:

基于同一种发明构思,本发明还提供一种SO文件的调用系统,包括:壳文件;

所述壳文件用于:对预先封装的SO文件进行重组;然后对重组后的SO文件进行解密得到物联应用SO文件;通过调用原始JAR文件,对所述物联应用SO文件执行操作;

这里,利用本发明提供的SO文件安全加固方法对SO文件进行封装。

实施例4

下面针对本发明技术方案,结合实际用例进行使用场景详细描述:

(1)物联应用A主要实现了两点功能。一是汇聚感知层传感器数据进行边缘侧分析,二是将分析数据上传至后台服务器进行进一步分析。在此案例中,数据的边缘侧分析逻辑是该物联应用的核心逻辑,用C代码实现,并以动态链接库(SO文件)的形式供JAVA代码进行调用。

(2)应用安全加固环节,第一步,将物联应用完整部署包输入到物联应用安全加固系统,加固系统首先分析应用A的JAR包内调用SO文件的代码片段,当发现JAR包内调用了数据分析SO文件后,首先将该SO文件通过国密SM4算法进行加密,解密密钥封装在一个经过高度混淆保护的SO文件内。

(3)第二步,加固系统对加密SO文件进行分片,并随机生成16X16的十六进制查找表,基于查找表所内容为分片添加特定文件头,存储在部署包特定目录下。

(4)第三步,加固系统将查找表发送给远程可逆矩阵生成服务器,随后远程可逆矩阵生成服务器随机生成16X16可逆矩阵,并把可逆矩阵和查找表相乘的加密矩阵返回给加固系统,加密后的矩阵被在物联APP A部署包内本地存储。

(5)第四步,使用同名的MOCK SO文件替换原有SO文件,并在部署包的特定目录下添加混淆的SM4解密SO文件、重组SO文件。

(6)第六步,将原有JAR包进行二次封装,封装后的JAR包与原包同名,原封装JAR包里实现原JAR的调用,并且在执行原JAR逻辑前需要预先调用重组SO文件、解密SO文件的执行。

至此,物联应用A加固成功,加固成效为:原始SO文件被分片隐藏在部署包特定目录下,而重组这些分片的查找表被可逆矩阵加密存储在本地,加密逆矩阵在独立的安全服务器上存放,攻击者几乎对还原该负责数据分析的SO文件无从下手,而顶替该SO文件的MOCK SO文件没有任何攻击价值。

显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上仅为本发明的实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均包含在申请待批的本发明的权利要求范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号