[发明专利]基于完全同态加密技术的中间代码加密方法及密文虚拟机系统有效
申请号: | 201911369162.1 | 申请日: | 2019-12-26 |
公开(公告)号: | CN113055152B | 公开(公告)日: | 2022-10-18 |
发明(设计)人: | 郑珂威;范宏达;傅文珺 | 申请(专利权)人: | 郑珂威;范宏达;傅文珺 |
主分类号: | H04L9/00 | 分类号: | H04L9/00;G06F21/10 |
代理公司: | 上海交达专利事务所 31201 | 代理人: | 王毓理;王锡麟 |
地址: | 200070 上海市*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 完全 同态 加密 技术 中间 代码 方法 虚拟机 系统 | ||
1.一种基于完全同态加密技术的中间代码加密方法,其特征在于,通过改进函数密钥部分将虚拟机中的应用程序的指令和数据进行完全同态加密,通过对输入数据进行密文识别并采用对应的同态处理运算得到输出结果密文,实现虚拟机在加密环境下的运行;
所述的识别是指:当输入数据为已加密的密文,则采用对应的公钥加密输入数据;当输入的密文的空间与应用程序数据空间不同,则拒绝输入并报错;
所述的数据空间,通过每次加密应用程序运行前,输入密文空间标识,当与加密应用程序自带的空间标识符合,则视为合法,之后所有的密文输入均认为有效;否则该密文输入对应的所有运算结果均为错误结果;
所述的加密,即多项式完全同态加密,根据数据明文则有密文表达式的系数向量A={ai|i∈I}以及函数密钥自变量向量X={xi|i∈I},这两个部分构成了数据密文C=(A,X);f为函数密钥部分,Y={yi|i∈I}为多项式密钥部分,这两部分构成了密钥K=(f,Y);
所述的改进函数密钥部分是指:密钥K=(f,Y)中的函数密钥部分f作为分母计算运算支持函数时不存在奇点。
2.根据权利要求1所述的基于完全同态加密技术的中间代码加密方法,其特征是,所述的同态处理运算包括:十进制密文的四则运算、二进制密文的逻辑运算和位移运算、进制转换运算、密文空间转换运算以及比较运算。
3.一种基于完全同态加密技术的密文虚拟机系统,其特征在于,包括:用于将中间代码文件进行加密获得加密中间代码的代码加密器,密文虚拟机依托同态运算执行中间代码程序并根据加密中间代码的类型进行同态比较运算;
所述的密文虚拟机包括:输入处理模块、用于密文同态处理运算的虚拟机核心模块、输出处理模块,其中:输入处理模块判断输入数据密文是否加密以及密文空间是否与整个应用程序所对应的密文空间一致,虚拟机核心模块加载加密中间代码并根据方法列表获得主程序入口,依据入口方法的指令栈逐条执行指令,输出处理模块根据程序的业务逻辑,即由指令集堆栈组成的程序的运算要求,将运算结果密文输出和/或根据配置对输出数据进行密文空间的转换;加密后的指令及指令操作数按字节读取,按指令长度拼装指令密文,然后通过密文比较运算解析出具体对应的指令号,再执行该指令从而使得未经授权的虚拟机,无法进行同态比较运算。
4.根据权利要求3所述的密文虚拟机系统,其特征是,所述的代码加密器加载JAVA语言的class文件的三种类型的对应私钥,即非数值类型数据对应的二进制私钥、标识/指令/索引数据对应的可比空间私钥以及数值类型数据对应的非可比空间私钥并加载JAVA编译器生成的class文件,解析并逐字节读取其文件内容,按照每个字节的不同数据类型,采用不同的策略进行加密,直至遍历完class文件的内容,最终获得加密class文件。
5.根据权利要求4所述的密文虚拟机系统,其特征是,所述的不同的策略是指:当读取的内容为标识、指令或索引,则使用可比空间私钥进行加密,得到可比较的密文;当读取的内容为数值类型数据,则使用非可比空间私钥进行加密,得到不可比较的密文;当读取的内容为非数值型数据,则使用二进制私钥进行加密,得到二进制密文。
6.根据权利要求3所述的密文虚拟机系统,其特征是,所述的输入处理模块判断是指:当输入数据为已加密的密文,则采用对应的公钥加密输入数据;当输入的密文的空间与程序数据空间不同,则拒绝输入并报错。
7.根据权利要求3所述的密文虚拟机系统,其特征是,所述的虚拟机核心模块首先读取指令字节密文,使用同态比较运算,将指令密文与指令列表进行逐条比较,获知对应的具体操作指令;然后根据具体操作指令的定义,读取后续的指令操作数密文,并执行指令操作。
8.根据权利要求3或7所述的密文虚拟机系统,其特征是,所述的虚拟机核心模块加载加密中间代码,即先将加密class中间程序文件加载到虚拟机中,创建程序及常量的内存空间,具体步骤包括:
A.找到并读取加密class文件;
B.根据JVM标准中的class文件结构,逐个密文读取class文件内容;
C.读取4字节魔数密文;
D.使用同态比较运算,与class文件魔数进行比较,判断加载的加密class文件是否为正确的类型;如正确则继续下一步,否则结束初始化;
E.读取4字节版本号密文;
F.使用同态比较运算,与虚拟机支持的有效版本号范围进行比较,当版本正确则继续下一步,否则结束初始化;
G.读取常量池:读取2字节常量池长度密文,初始化常量池指针为0;比较常量池指针是否小于长度密文,当是则读取一个常量结构密文,将指针加一;当否则结束常量池读取;重复步骤A-步骤G,直到指针大于等于长度密文,此时所有常量池的常量均已被读取加载,常量池读取完毕;
H.读取类访问标识密文,在该类被其他类访问时,通过同态比较运算确认可访问性;
I.读取类与超类索引密文:创建常量池指针,并初始化为0,比较指针是否小于索引密文,当小于索引则指针加一,否则读取当前指针位置上常量池的密文,其中类定义和超类定义均在常量池中;
J.读取接口索引列表,长度的处理方法如步骤G所述;索引的处理方法如步骤I所述;
K.读取字段列表,长度的处理方法如步骤G所述;索引的处理方法如步骤I所述;
L.读取方法列表,长度的处理方法如步骤G所述;索引的处理方法如步骤I所述;这里会涉及到指令密文,需根据JVM标准的方法结构进行读取;
M.读取属性列表,长度的处理方法如步骤G所述;索引的处理方法如步骤I所述;整个加密class中间程序文件加载和初始化完毕。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于郑珂威;范宏达;傅文珺,未经郑珂威;范宏达;傅文珺许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911369162.1/1.html,转载请声明来源钻瓜专利网。
- 上一篇:造口器械
- 下一篇:CAN异常入侵检测方法及计算机可读存储介质