一种基于编译型语言的源码加密方法技术

技术编号:37786398 阅读:13 留言:0更新日期:2023-06-09 09:16
本发明专利技术公开了一种基于编译型语言的源码加密方法,包括以下步骤:S1.使用openssl软件库生成非对称密钥对;S2.依据非对称算法以及S1步骤中生成的公钥生成代码加密工具;S3.使用代码加密工具对目标源码进行加密,获得同名源代码加密文件;S4.修改编译器源代码,加入非对称算法,将S1步骤中生成的私钥导入编译器源码,并修改编译器处理逻辑,形成可执行文件;S5.将S3步骤中生成的同名源代码加密文件以及S4步骤中修改后的编译器可执行文件导出发布;S6.使用S5步骤中的发布包编译目标源码,并执行。在整个源码加密编译过程中,编译器执行过程直接在程序地址空间内解密并编译,从而达到较好的源代码保护目的。较好的源代码保护目的。较好的源代码保护目的。

【技术实现步骤摘要】
一种基于编译型语言的源码加密方法


[0001]本专利技术涉及计算机软件信息安全领域,具体为一种基于编译型语言的源码加密方法。

技术介绍

[0002]编译型语言是相对于解释型语言存在的,编译型语言首先将源代码编译生成机器语言,再由机器运行机器码(二进制可执行程序)。
[0003]不像普通的计算机应用软件,可以将源码编译后的可执行文件发布给用户使用,即可达到源代码知识产权保护的目的。在跨平台场景程序通常要在不同处理器架构或不同操作系统版本下重新编译才能正确使用。而有些特殊行业领域如军工领域,出于知识产权或特种设备安全的考虑,又不能交付给用户软件明文源代码。
[0004]目前,基于源代码保护通常都采用代码混淆的方式,即将代码中的变量名称、函数名称统一变换为无逻辑意义的字符串,达到不容易读出代码的逻辑意义的目的,进而保护源码,同时也不影响编译。但这样仍有可能代码被破解或强行修改局部数据,而导致代码逻辑泄漏或与产生与设计不一致的运行状态或运行错误,并且系统软件也不像独立软件一样可以任意修改系统接口函数名称,其源码也是不能随意修改混淆的。

技术实现思路

[0005]本专利技术提供一种基于编译型语言的源码加密方法,包括以下步骤:S1.使用openssl软件库生成非对称密钥对;S2.依据非对称算法以及S1步骤中生成的公钥生成代码加密工具;S3.使用代码加密工具对目标源码进行加密,获得同名源代码加密文件;S4.修改编译器源代码,加入非对称算法,将S1步骤中生成的私钥导入编译器源码,并修改编译器处理逻辑,形成可执行文件;S5.将S3步骤中生成的同名源代码加密文件以及S4步骤中修改后的编译器可执行文件导出发布;S6.使用S5步骤中的发布包编译目标源码,并执行。
[0006]进一步地,所述S4步骤中包括以下子步骤:S41. 私钥加密后导入至编译器执行程序地址空间;S42. 将加密私钥解密,得到有效的私钥用于解密目标源码;S43. 读取目标源码加密后同名文件;S44. 计算目标源代码密文哈希值,与哈希校验头比对,正确则向下执行,错误则结束编译器运行;S45. 使用非对称算法解密目标源码至编译器执行程序地址空间;S46. 编译解密后的目标源码文件。
[0007]进一步地,所述S2步骤中生成的代码加密工具由C语言进行编写。
[0008]进一步地,所述S1到S5步骤均在安全环境中执行,S6步骤在目标环境中执行;所述S1

S6步骤中主要采用非对称加密算法。
[0009]本专利技术提供一种基于编译型语言的源码加密方法,在整个源码加密编译过程中,仅存在加密源代码的过程,没有解密为明文源码文件的过程,而是在编译器执行过程直接在程序地址空间内解密并编译,从而达到较好的源代码保护目的。
附图说明
[0010]图1为本专利技术所提供的一种基于编译型语言的源码加密方法的流程图;图2为本专利技术所提供的一种基于编译型语言的源码加密方法的修改编译器流程图。
具体实施方式
[0011]以下结合附图对本专利技术的实施方法进行详细说明,所描述的仅为部分实施例,并非全部实施例,为了清楚的目的,在附图及说明中省略了与本专利技术无关的表示及描述。
[0012]SM2算法和RSA算法都是公钥密码算法,SM2算法是一种更先进安全的算法,在我们国家商用密码体系中被用来替换RSA算法。随着密码技术和计算机技术的发展,目前常用的1024位RSA算法面临严重的安全威胁,我们国家密码管理部门经过研究,决定采用SM2椭圆曲线算法替换RSA算法,本专利技术也采用sm2算法。
[0013]如图1所示,一种基于编译型语言的源码加密方法,包括以下步骤:S1.使用openssl软件库生成非对称密钥对;S2.依据非对称算法以及S1步骤中生成的公钥生成代码加密工具;S3.使用代码加密工具对目标源码进行加密,获得同名源代码加密文件;S4.修改编译器源代码,加入非对称算法,将S1步骤中生成的私钥导入编译器源码,并修改编译器处理逻辑,形成可执行文件;S5.将S3步骤中生成的同名源代码加密文件以及S4步骤中修改后的编译器可执行文件导出发布;S6.使用S5步骤中的发布包编译目标源码,并执行。
[0014]S1步骤中:使用非对称算法生成公私钥对。此密钥对在安全环境中使用,不对外发布。实际是使用openssl软件库生成的非对称密钥对,不限于此,实际也可以生成对称密钥。
[0015]S2步骤中:代码加密工具实现非对称算法并导入S1中的公钥,用于编译源码文件。此工具在安全环境中使用,不对外发布源码或可执行文件。实际使用的是非对称软算法,不限于此,实际也可以采用对称算法。
[0016]S3步骤中:使用S2中工具对目标源代码加密,得到同名源代码加密文件,此时加密后文件虽然和源代码同名,但已经不是可读文本,强行用文本编辑器打开仅能识别为乱码,也就无法改变代码逻辑和其中的变量。加密后文件包含哈希校验头及源代码密文两个部分。
[0017]S4步骤中:修改编译器源代码,为其添加软件非对称算法;同时将S1中生成的私钥加密后导入编译器源码中;修改编译器处理逻辑,使其具有直接编译加密源码文件的能力。此时生成的自定义编译器内含非对称算法及加密后的私钥,并可以直接编译加密源码。编译器源码不会发布,而仅将自定义编译器可执行文件发布。
[0018]S4步骤中包括以下子步骤:S41. 私钥加密后导入至编译器执行程序地址空间;S42. 将加密私钥解密,得到有效的私钥用于解密目标源码;S43. 读取目标源码加密后同名文件;S44. 计算目标源代码密文哈希值,与哈希校验头比对,正确则向下执行,错误则结束编译器运行;S45. 使用非对称算法解密目标源码至编译器执行程序地址空间;S46. 编译解密后的目标源码文件。
[0019]以上所述的具体实施例,对本专利技术的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本专利技术的具体实施例而已,并不用于限制本专利技术,凡在本专利技术的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本专利技术的保
护范围之内。
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于编译型语言的源码加密方法,其特征在于,包括以下步骤:S1.使用openssl软件库生成非对称密钥对;S2.依据非对称算法以及S1步骤中生成的公钥生成代码加密工具;S3.使用代码加密工具对目标源码进行加密,获得同名源代码加密文件;S4.修改编译器源代码,加入非对称算法,将S1步骤中生成的私钥导入编译器源码,并修改编译器处理逻辑,形成可执行文件;S5.将S3步骤中生成的同名源代码加密文件以及S4步骤中修改后的编译器可执行文件导出发布;S6.使用S5步骤中的发布包编译目标源码,并执行。2.根据权利要求1所述的一种基于编译型语言的源码加密方法,其特征在于,所述S4步骤中包括以下子步骤:S41. 私钥加密后导入至编译器执行程序...

【专利技术属性】
技术研发人员:邹式论秦放吴汶泰
申请(专利权)人:成都三零嘉微电子有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1