[发明专利]基于完全同态加密技术的中间代码加密方法及密文虚拟机系统有效
申请号: | 201911369162.1 | 申请日: | 2019-12-26 |
公开(公告)号: | CN113055152B | 公开(公告)日: | 2022-10-18 |
发明(设计)人: | 郑珂威;范宏达;傅文珺 | 申请(专利权)人: | 郑珂威;范宏达;傅文珺 |
主分类号: | H04L9/00 | 分类号: | H04L9/00;G06F21/10 |
代理公司: | 上海交达专利事务所 31201 | 代理人: | 王毓理;王锡麟 |
地址: | 200070 上海市*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 完全 同态 加密 技术 中间 代码 方法 虚拟机 系统 | ||
一种基于完全同态加密技术的中间代码加密方法及密文虚拟机系统,通过改进函数密钥部分将虚拟机中的应用程序的指令和数据进行完全同态加密,通过对输入数据进行密文识别并采用对应的同态处理运算得到输出结果密文,实现虚拟机在加密环境下的运行。本发明将应用程序进行完全同态加密,不仅针对程序中的数据,同时也对程序的指令进行加密,从而最大限度地保护程序逻辑和结构。由于完全同态加密技术支持对密文进行任意运算操作,加密后的程序通过恰当的识别和处理仍然可以被虚拟机完整、高效的运行,而且程序执行过程中的输入输出数据也是密文。
技术领域
本发明涉及的是一种信息安全领域的技术,具体是一种基于完全同态加密技术的中间代码加密方法及密文虚拟机系统,适用于各类虚拟机模式以及使用解释器执行模式的高级语言和系统中。
背景技术
现有高级语言按执行方式可以分为编译型和解释型两种,JAVA语言吸收了两种执行方式的优点,提出了虚拟机模式,将应用程序编译成虚拟机通用的中间代码,再由虚拟机程序加载中间代码进行本地执行。通过编译过的中间程序,应用程序的源代码一定程度上得到了保护,但是由于中间程序的标准是公开的,使用逆向工程可以比较容易的还原出有效的源代码,尤其是一些特殊的应用程序,例如程序化交易的应用,其程序业务逻辑和结构本身就具备很高的价值,通过逆向工程即便无法完整的恢复源代码,但只要获得应用程序的逻辑走向及业务流程,也同样会让所有者蒙受损失。这个问题在类似以太坊这种公有区块链平台更加突出,任何人任何时刻,只要知道目标合约的地址,就可以获得该合约的中间代码,应用业务逻辑走向就一目了然。另外,以常数、经验值、参数、公式等形式固化于程序中的知识也存在严重的泄露风险。
发明内容
本发明针对现有技术存在的上述不足,提出一种基于完全同态加密技术的中间代码加密方法及密文虚拟机系统,将应用程序进行完全同态加密,不仅针对程序中的数据,同时也对程序的指令进行加密,从而最大限度地保护程序逻辑和结构。由于完全同态加密技术支持对密文进行任意运算操作,加密后的程序通过恰当的识别和处理仍然可以被虚拟机完整、高效的运行,而且程序执行过程中的输入输出数据也是密文。
本发明是通过以下技术方案实现的:
本发明涉及一种基于完全同态加密技术的中间代码加密方法,通过改进函数密钥部分将虚拟机中的应用程序的指令和数据进行完全同态加密,通过对输入数据进行密文识别并采用对应的同态处理运算得到输出结果密文,实现虚拟机在加密环境下的运行。
所述的应用程序,包括但不限于Java程序。
所述的改进函数密钥部分是指:密钥K=(f,Y)中的函数密钥部分f作为分母计算运算支持函数时不存在奇点。
所述的识别是指:当输入数据为已加密的密文,则采用对应的公钥加密输入数据;当输入的密文的空间与程序数据空间不同,则拒绝输入并报错。
所述的数据空间,通过每次加密程序运行前,输入密文空间标识,当与加密程序自带的空间标识符合,则视为合法,之后所有的密文输入均认为有效;否则该密文数据对应的所有运算结果均为错误结果。
所述的同态处理运算包括但不限于:十进制密文的四则运算、二进制密文的逻辑运算和位移运算、进制转换运算、密文空间转换运算以及比较运算。
本发明涉及一种基于完全同态加密技术的密文虚拟机系统,包括:用于将中间代码文件进行加密获得加密中间代码的代码加密器,密文虚拟机依托同态运算执行中间代码程序并根据加密中间代码的类型进行同态比较运算。
技术效果
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于郑珂威;范宏达;傅文珺,未经郑珂威;范宏达;傅文珺许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911369162.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:造口器械
- 下一篇:CAN异常入侵检测方法及计算机可读存储介质