掌桥专利:专业的专利平台
掌桥专利
首页

EDA二次开发源代码的安全保护方法、电子设备及存储介质

文献发布时间:2024-04-18 19:58:26


EDA二次开发源代码的安全保护方法、电子设备及存储介质

技术领域

本发明涉及EDA技术领域,特别是涉及EDA二次开发源代码的安全保护方法、电子设备及存储介质。

背景技术

EDA可以帮助设计工程师进行电路设计和仿真。随着工艺、材料等技术的发展,集成电路器件集成度越来越高,EDA软件功能和设计复杂性也大大增加。EDA软件也会开放二次开发模块和接口供电子工程师使用,通过开发脚本代码来满足特定需求。

在进行EDA软件二次开发时,经常会使用到诸如Python等脚本语言。其中,Python因其语法简洁、易于阅读而深受开发者喜爱。然而,正因为Python等脚本语言的特性,使得它们的源代码容易被反编译。即使将Python脚本转化为字节码,如.pyc文件,虽然人类难以直接阅读,但是却能被很容易地反编译回Python源代码。

此外,Python脚本的运行需要Python解释器,脚本在运行时会被解释器转化为字节码并执行。这使得Python脚本的源代码在传输或存储时,容易被截取、盗取或篡改。

为了解决上述问题,亟需一个有效防止EDA二次开发源代码被截取、盗取或篡改的方法来保护EDA二次开发源代码的安全性。

发明内容

针对上述技术问题,本发明采用的技术方案为:一种EDA二次开发源代码的安全保护方法,将加密的二次开发源代码导入时,通过执行EDA开发语言的源代码实现导入步骤,其中,导入步骤包括:

S100,获取目标加密模块的目标路径、目标加密模块和输入的目标密码;其中,所述目标加密模块携带有导入方式的目标识别标签,为EDA二次开发源代码的加密模块。

S200,将目标识别标签发送给EDA的导入方式查找器,获取目标导入方式;其中,EDA的导入方式查找器的查找步骤包括:

S210,获取导入方式列表Path={path1,path2,…,pathi,…,pathN},其中,pathi为第i种导入方式,i的取值范围为1到N;pathi为EDA源代码的导入方式或EDA二次开发源代码的自定义导入方式。

S220,根据目标识别标签遍历导入方式列表Path,当遍历得到目标自定义导入方式pathj时,根据目标导入方式pathj识别目标加密模块,其中j的取值范围为1到N。

S300,将目标加密模块的目标路径和目标密码发送给模块加载器;所述模块加载器通过EDA开发语言编写的源代码实现。

S400,模块加载器对目标加密模块进行解密得到二次开发源代码,并加载二次开发源代码。

此外,本发明还提供了一种非瞬时性计算机可读存储介质,所述存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现上述方法。

此外,本发明还提供了一种电子设备,包括处理器和上述非瞬时性计算机可读存储介质。

本发明至少具有以下有益效果:

本发明提供的EDA二次开发源代码的安全保护方法、电子设备及存储介质,其通过执行EDA开发语言的源代码通过在将EDA二次开发源代码导入的过程中实现路径查找、解密、加载过程,在该过程中与二次开发环境隔离,由于EDA软件开发语言的源代码通常被编译为机器码或字节码,并且解密是在导入的过程中直接解密加载的,不需要在硬盘上明文暴露,因此避免了解密和执行过程被攻击者利用反射机制进行截取、盗取或篡改,不仅能够提升EDA二次开发源代码的安全性,而且能够抵抗潜在的恶意攻击。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种EDA源代码的安全保护方法的步骤流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参阅图1,一种EDA源代码的安全保护方法的步骤流程图,将加密的二次开发源代码导入时,通过EDA源代码执行导入步骤。需要说明的是,为了解决技术问题,本发明通过EDA源代码执行将加密的二次开发源代码导入的步骤。

可选的,二次开发源代码为Python或JavaScript,现有技术中其他用于EDA二次开发的源代码或脚本语言均落入本发明的保护范围。

可选的,EDA开发语言为C++或C语言,现有技术中其他用于开发EDA的变成语言均落入本发明的保护范围之内。

进一步,导入步骤包括:

S100,获取目标加密模块的目标路径、目标加密模块和输入的目标密码;其中,所述目标加密模块携带有导入方式的目标识别标签,为EDA二次开发源代码的加密模块。

其中,目标加密模块包括N个加密的保存二次开发源代码的源文件,N大于等于1。当N大于1时,目标加密模块包括加密的多个源文件,可以为一个文件夹。当N等于1时,目标加密模块为一个加密的源文件。

其中,目标加密模块为用户指定的模块。

可选的,目标加密模块的加密方式为AES或RSA,现有技术中其他加密算法均落入本发明的保护范围之内。通过对二次源代码的加密能够将源代码转化为不可直接阅读的密文,确保二次源代码在传输或存储过程中的安全性。

优选的,所述S100之前还包括:对目标模块进行加密,并在加密后的模块中添加数字签名,得到目标加密模块。通过添加数字签名确保源代码的完整性和真实性,防止代码在传输或存储过程中被篡改。

优选的,所述S100之前还包括:对目标模块进行加密,并在加密后的模块中添加数字签名和目标识别标签,得到目标加密模块。其中,目标识别标签为导入方式的识别标签,导入方式与识别标签之间具有唯一的对应关系。

作为一个优选实施例,S100中目标加密模块的目标路径的获取步骤包括:当用户未指定路径时,根据用户指定的目标加密模块遍历目录,生成目标路径。

S200,将目标识别标签发送给EDA的导入方式查找器,获取目标导入方式。

进一步,EDA的导入方式查找器的查找步骤包括:

S210,获取导入方式列表Path={path1,path2,…,pathi,…,pathN},其中,pathi为第i种导入方式,i的取值范围为1到N;pathi为EDA源代码的导入方式或EDA二次开发源代码的自定义导入方式。

需要说明的是,导入方式列表中保存了EDA本身预置的多种导入方式,同时为了导入二次开发源代码提供了自定义导入方式,方便用户将二次开发源代码的导入方式加入该导入方式列表,扩展了EDA工具能够导入的文件类型。作为一个示例,当二次开发的源文件为.pye文件,且二次开发工具为Python时,则将.pye文件的导入方式自定义为预设的插件。

作为一个优选实施例,将S210中导入方式列表Path中的EDA二次开发源代码的自定义导入方式的遍历优先级设置为大于EDA源代码的导入方式。可选的,将导入方式列表Path中自定义导入方式的排序编号设置为小于EDA源代码的导入方式。提高遍历优先级能够提高二次开发源文件的导入效率。

S220,根据目标识别标签遍历导入方式列表Path,当遍历得到目标自定义导入方式pathj时,根据目标导入方式pathj识别目标加密模块,其中j的取值范围为1到N。

可选的,目标导入方式pathj的获取步骤包括:提取导入方式列表Path中导入方式的指定字段,将目标标签与指定字段进行文本匹配,匹配成功的导入方式为目标导入方式pathj。

需要说明的是,S220得到能够识别目标加密模块的目标导入方式,但是并未完成导入的过程,因为目标加密模块处于加密状态,需要先解密才能够加载相应的源代码,进而完成导入过程。

S300,将目标加密模块的目标路径和目标密码发送给模块加载器;所述模块加载器通过EDA开发语言编写的源代码实现。需要说明的是,模块加载器通过EDA开发语言构造函数初始化模块的相关信息,例如模块是否为包、模块的相对路径、模块的绝对路径和用于解密的秘钥。

S400,模块加载器对目标加密模块进行解密得到二次开发源代码,并加载二次开发源代码。

为了更好的说明本发明的效果,以EDA开发语言为C++且二次开发语言为Python为例,通过pybind11接口技术,将导入步骤S100-400嵌入到EDA软件的C++代码中。导入步骤全部在C++环境下完成,均随软件一起编译成二进制数据,与Python环境隔离,避免了解密和执行过程被攻击者利用Python的反射机制进行干扰或截获,提高源代码的安全性。

作为一个优选实施例,S400中模块加载器加载目标模块的步骤包括:

S410,接收目标加密模块的目标路径和目标密码。

S420,检查目标加密模块是否已经被加载,若是,导入步骤结束执行;否则,执行S430和S440。

S430,根据目标密码对目标加密模块进行解密,得到二次开发源代码。

S440,加载二次开发源代码。

作为一个优选实施例,S440还包括模块加载器加载二次开发源代码的步骤:通过接口加载二次开发工具加载内建模块,调用内建模块中的新建模块函数创建模块,为模块配置以下属性:目标模块的路径、目标模块名称和目标模块内包括的目标源文件名称。需要说明的是,内建模块为Python中用于导入模块的内置模块。

需要说明的是,接口为EDA二次开发语言和EDA开发语言之间户调用的接口。例如,当EDA开发语言为C++且二次开发语言为Python时,接口为pybind11。

本发明提供的安全保护方法,能够使二次开发源代码借助EDA开发语言进行导入,并且导入时同时进行解密加载,实现动态导入,具有以下有益效果:

第一,由于本发明中路径查找、解密、加载和导入的过程一起嵌入到EDA软件开发语言的源代码中,均随EDA软件编译成二进制数据,由于EDA软件开发语言的源代码通常被编译为机器码或字节码,逆向工程更为困难,因此提高了二次开发代码的安全性。

第二,在导入的过程中实现在内存中直接解密并执行,避免了代码明文在硬盘上的暴露,从而在运行过程中进一步提高了代码的保密性,相比较在二次开发源文件执行前进行解密的传统方式,避免了二次开发代码明文在硬盘上的暴露带来的安全隐患,提高了二次开发代码的保密性。

第三,传统方案,需要对开发环境进行特殊配置或修改才能加载和执行加密代码,本发明通过代码加载器和在导入方式列表中插入自定义的导入方式,实现了对加密的二次开发代码的无缝加载和执行。不需要对现有的二次开发环境进行任何修改,在二次开发环境升级版本或加载其他第三方库时,也可以完美适配,无需再升级EDA软件。在导入时无需关注加密代码的加载和执行过程,降低了用户的学习成本,提高了EDA软件运行效率,也使用户更方便地使用二次开发源代码来扩展和定制EDA软件的功能。

第四,由于本发明中路径查找、解密、加载和导入的过程一起嵌入到EDA软件开发语言的源代码中,用户可以更深入地控制导入过程,从而更好地保护二次开发源代码的安全。

本发明的实施例还提供了一种非瞬时性计算机可读存储介质,该存储介质可设置于电子设备之中以保存用于实现方法实施例中一种方法相关的至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现上述实施例提供的方法。

本发明的实施例还提供了一种电子设备,包括处理器和前述的非瞬时性计算机可读存储介质。

本发明的实施例还提供一种计算机程序产品,其包括程序代码,当所述程序产品在电子设备上运行时,所述程序代码用于使该电子设备执行本说明书上述描述的根据本发明各种示例性实施方式的方法中的步骤。

虽然已经通过示例对本发明的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本发明的范围。本领域的技术人员还应理解,可以对实施例进行多种修改而不脱离本发明的范围和精神。本发明公开的范围由所附权利要求来限定。

相关技术
  • iOS平台文件读取保护方法、存储介质、电子设备及系统
  • 飞机运行安全风险评价方法、装置、电子设备及存储介质
  • 车辆及其安全带预紧方法、系统、电子设备和存储介质
  • 安全授权方法、装置、电子设备及存储介质
  • 图片资源安全性的检测方法、存储介质、电子设备及系统
  • UG后处理文件的二次开发方法、可读存储介质及电子设备
  • 产品应用二次开发服务方法、装置、电子设备及存储介质
技术分类

06120116488257