技术领域
[0001] 本
发明涉及信息安全技术领域,特别是指一种软件接口保护方法及装置。
背景技术
[0002] 软件应用程序的功能是通过调用各个软件接口执行相应的软件功能实现的,实现应用程序的源代码是软件开发者的核心技术。结合第三方工具,利用逆向工程有可能分析获得应用程序的源代码,对软件开发者造成损失,对应用程序造成安全威胁。
发明内容
[0003] 有鉴于此,本发明的目的在于提出一种软件接口保护方法及装置,能够对软件接口进行保护,提高软件的安全性。
[0004] 基于上述目的,本发明提供了一种软件接口保护方法,包括:
[0005] 确定软件接口及对应的参数;
[0006] 在安全内存区中根据所述软件接口及对应的参数,执行所述软件接口对应的运算逻辑。
[0007] 可选的,所述软件接口保护方法,包括:
[0008] 对所述软件接口进行格式转换,生成实际调用软件接口;
[0009] 于普通内存区执行所述实际调用软件接口,于所述安全内存区中,基于所述软件接口对应的参数执行所述软件接口的运算逻辑,得到运算结果;
[0010] 将所述运算结果返回给所述实际调用软件接口。
[0011] 可选的,所述软件接口保护方法还包括:
[0012] 对所述软件接口对应的参数进行编码处理,生成编码后的参数;
[0013] 于普通内存区执行所述实际调用软件接口,于所述安全内存区中,对所述编码后的参数进行解码,生成所述软件接口对应的参数,基于所述软件接口的参数执行所述软件接口的运算逻辑,得到所述运算结果。
[0014] 可选的,所述软件接口保护方法还包括:
[0015] 对所述运算结果进行编码处理,生成编码后的运算结果;
[0016] 将所述编码后的运算结果返回给所述实际调用软件接口,所述实际调用软件接口对所述编码后的运算结果进行解码,将解码后的运算结果作为所述实际调用软件接口的执行结果。
[0017] 可选的,所述软件接口保护方法还包括:
[0018] 在所述安全内存区中划分出第一存储区与第二存储区,对于执行所述软件接口对应的运算逻辑过程中生成的动态数据,将长度小于第一长度
阈值的字符数据保存于所述第一存储区中,将长度大于第二长度阈值的文件数据保存于所述第二存储区中。
[0019] 可选的,所述软件接口不包括无法在所述安全内存区中执行的函数。
[0020] 本发明
实施例还提供一种软件接口保护装置,包括:
[0021] 接口转换模
块,用于对软件接口进行格式转换,生成实际调用软件接口:
[0022] 安全内存区,用于于普通内存区执行所述实际调用软件接口时,于所述安全内存区中,基于所述软件接口对应的参数执行所述软件接口的运算逻辑,得到运算结果,并将所述运算结果返回给所述实际调用软件接口。
[0023] 可选的,所述软件接口保护装置还包括:
[0024] 参数编码模块,用于对所述软件接口对应的参数进行编码处理,生成编码后的参数;
[0025] 所述安全内存区包括参数解码模块,用于对所述编码后的参数进行解码,生成所述软件接口对应的参数。
[0026] 可选的,所述软件接口保护装置还包括:
[0027] 所述安全内存区包括运算结果编码模块,用于对所述运算结果进行编码处理,得到编码后的运算结果;
[0028] 运算结果解码模块,用于对所述编码后的运算结果进行解码处理,将解码后的运算结果作为所述实际调用软件接口的执行结果。
[0029] 可选的,所述安全内存区包括:
[0030] 第一存储区,用于保存执行所述软件接口的运算逻辑过程中,动态生成的长度小于第一长度阈值的字符数据;
[0031] 第二存储区,用于保存执行所述软件接口的运算逻辑过程中,动态生成的长度大于第二长度阈值的文件数据。
[0032] 从上面所述可以看出,本发明提供的软件接口保护方法及装置,通过在安全内存区中根据软件接口及对应的参数,执行软件接口对应的运算逻辑,既可实现软件功能,又将软件接口的源代码数据隔离于受保护的安全内存区中,保障核心源代码不被获取破解,保证软件接口的安全性。
附图说明
[0033] 图1为本发明实施例的方法流程示意图;
[0034] 图2为本发明实施例的装置结构示意图;
[0035] 图3为本发明又一实施例的装置结构示意图;
[0037] 图5为本发明实施例的软件框架示意图。
具体实施方式
[0038] 以下结合附图和实施例对本发明作进一步详细的描述。
[0039] 图1为本发明实施例的方法流程示意图。如图所示,本发明实施例提供的软件接口保护方法,包括:
[0040] S10:确定软件接口及对应的参数;
[0041] 本发明实施例中,首先确定需要保护的软件接口以及软件接口对应的参数。其中,可进行保护的软件接口具有一定的限制条件,以下软件接口无法利用本发明的方法进行保护:函数实现过于复杂,严重依赖无法进行数据保护的普通内存区,函数实现本身存在安全隐患,函数实现包含了受限制的CPU指令等无法在安全内存区中执行的函数,例如字符串相关处理函数(如strcpy、strcat等),
进程线程相关处理函数(线程同步函数、abort函数等),CPUID函数等。
[0042] S11:在受保护的安全内存区中根据软件接口及对应的参数,执行相应的运算逻辑,实现相应的功能。
[0043] 具体包括:
[0044] S110:对软件接口进行格式转换,生成实际调用软件接口;
[0045] S111:于普通内存区执行实际调用软件接口,于受保护的安全内存区中,基于软件接口的参数执行软件接口的运算逻辑,得到运算结果;
[0046] S113:将运算结果返回给实际调用软件接口。
[0047] 本发明实施例中,进一步对向安全内存区传递的数据进行格式统一化处理。则,所述步骤S110、S111为:
[0048] S110`:对软件接口进行格式转换,生成实际调用软件接口;对软件接口对应的参数进行数据编码,生成编码后的参数;
[0049] 即软件接口与其参数相对应,实际调用软件接口与编码后的参数相对应。
[0050] S111`:于普通内存区执行实际调用软件接口,于受保护的安全内存区中,对编码后的参数进行解码,生成软件接口对应的参数,基于软件接口的参数执行软件接口的运算逻辑,得到运算结果。
[0051] 进一步的,对软件接口的运算结果进行统一的格式化处理,将格式化处理后的运算结果由安全内存区内传递至普通内存区的实际调用软件接口。则所述步骤S111或S111`之后还包括:
[0052] S112:对运算结果进行编码处理,生成编码后的运算结果;
[0053] S113`:将编码后的运算结果返回给实际调用软件接口,实际调用软件接口对编码后的运算结果进行解码,将解码后的运算结果作为实际调用软件接口的执行结果。
[0054] 图4为现有技术中的软件框架示意图。如图所示,现有技术中,于软件应用程序执行过程中,是通过调用软件接口,基于传入该软件接口的参数执行软件接口对应的运算逻辑,进而实现软件接口的相应功能。
[0055] 图5为本发明实施例的软件框架示意图。如图所示,本发明实施例中,是于软件应用程序执行过程中,于普通内存区调用实际调用软件接口,传入该实际调用软件接口的参数为编码后的参数,调用实际调用软件接口后,将编码后的参数传递至安全内存区中,于安全内存区中,对编码后的参数进行解码处理,生成软件接口对应的参数;然后,于安全内存区中,基于软件接口对应的参数,执行软件接口对应的运算逻辑,得到逻辑运算后的运算结果;之后,将运算结果返回给普通内存区,作为软件应用程序执行实际调用软件接口的执行结果。可见,本发明是将软件接口的参数通过传递至安全内存区中,在安全内存区中实现并执行软件接口的运算逻辑,实现软件接口的相应功能,一方面,能够保证软件功能的正常实现,另一方面,由于软件接口的源代码数据均在安全内存区中,能够避免软件接口的源代码数据被非法破解获取,保护软件接口的数据安全性。
[0056] 本发明实施例中,所述的编码处理可以是,将原始的参数和/或运算结果转换为JSON数据结构的参数和/或运算结果,相应的,解码处理可以是将JSON数据结构的参数和/或运算结果转换为原始的参数及/或运算结果,JSON数据结构易于编码与机器解析,便于在接口之间实现数据传输。
[0057] 本发明实施例中,对于软件应用程序运行过程中产生的运行态数据进行动态保护。即,执行软件接口的运算逻辑过程中,将动态生成的数据保存于安全内存区中,动态生成的数据例如是解密后生成的明文数据、核心
算法运算过程中生成的临时重要数据等。可选的,在安全内存区中划分出第一存储区与第二存储区,对于动态生成的长度小于第一长度阈值的字符数据,保存于第一存储区中,对于动态生成的长度大于第二长度阈值的文件数据,保存于第二存储区中。这样,通过对软件接口的源代码进行隔离保护,对执行软件接口的运算逻辑过程中,动态生成的数据进行隔离保护,能够全面保护软件的安全性。
[0058] 本发明实施例的软件接口保护方法基于SGX框架实现,所述的受保护的安全内存区可以是SGX的enclave内存区,enclave内存区中的数据会进行加密及
硬件检测,只有CPU才有
访问权限,最大限度的保护enclave内存区中的数据,避免其中的数据被非法访问获取。
[0059] 图2为本发明实施例的装置结构示意图。如图所示,本发明实施例提供的软件接口保护装置,包括:
[0060] 接口转换模块,用于对软件接口进行格式转换,生成实际调用软件接口;
[0061] 安全内存区,用于于普通内存区执行实际调用软件接口时,于安全内存区中,基于软件接口的参数执行软件接口的运算逻辑,得到运算结果,并将运算结果返回给实际调用软件接口。
[0062] 图3为本发明又一实施例的装置结构示意图。如图所示,本发明实施例中,所述软件接口保护装置还包括:
[0063] 参数编码模块,用于对软件接口的参数进行编码处理,生成编码后的参数;
[0064] 所述安全内存区包括参数解码模块,用于对编码后的参数进行解码,生成软件接口对应的参数,所述安全内存区基于软件接口的参数执行软件接口的运算逻辑,得到运算结果,并将运算结果返回给实际调用软件接口。
[0065] 本发明实施例中,所述软件接口保护装置还包括:
[0066] 所述安全内存区包括运算结果编码模块,用于对运算结果进行编码处理,得到编码后的运算结果,所述安全内存区将编码后的运算结果返回给实际调用软件接口;
[0067] 运算结果解码模块,用于对编码后的运算结果进行解码处理,将解码后的运算结果作为实际调用软件接口的执行结果。
[0068] 本发明实施例中,所述安全内存区包括:
[0069] 第一存储区,用于保存执行软件接口的运算逻辑过程中,动态生成的长度小于第一长度阈值的字符数据;
[0070] 第二存储区,用于保存执行软件接口的运算逻辑过程中,动态生成的长度大于第二长度阈值的文件数据。
[0071] 其中,可利用本发明的软件接口保护装置进行保护的软件接口不包括无法在安全内存区中执行的函数。
[0072] 本发明实施例的软件接口保护装置基于SGX框架实现,所述安全内存区可以是SGX的enclave内存区。
[0073] 本发明的软件接口保护方法及装置,通过对实际的软件接口“伪装”成实际调用软件接口,通过实际调用软件接口传递软件接口所需参数,于普通内存区调用实际调用软件接口时,在安全内存区中基于软件接口所需参数执行软件接口对应的运算逻辑,实现软件接口的功能,既可实现软件功能,又将软件接口的源代码数据“隔离”于受保护的安全内存区中,保障核心源代码不被获取破解,保证软件接口的安全性。同时,执行软件接口的运算逻辑过程中,将动态生成的数据保存于安全内存区中,保证软件运行过程中生成的动态数据的安全性,全面保证软件的安全性。。
[0074] 以上所述是本发明的较佳实施例及其所运用的技术原理,对于本领域的技术人员来说,在不背离本发明的精神和范围的情况下,任何基于本发明技术方案
基础上的等效变换、简单替换等显而易见的改变,均属于本发明保护范围之内。