一种基于揭序加密的多数据类型密文比较方法技术

技术编号:29674276 阅读:43 留言:0更新日期:2021-08-13 21:56
本发明专利技术提供一种基于揭序加密的多数据类型密文比较方法,包括系统建立算法ORE.Setup、加密算法ORE.Encrypt、解密算法ORE.Decrypt、比较算法ORE.Compare、以及多种数据类型的密文比较方法;其中,运用了伪随机函数F和对称加密算法,由于函数F是伪随机安全的,这使得本发明专利技术能够达到IND‑OCPA安全,即有序的选择明文攻击不可区分安全。并进一步针对不同数据结构,为多种数据类型的消息设计了不同的编码和解码方式,实现了整数、字符串、浮点数的密文比较。

【技术实现步骤摘要】
一种基于揭序加密的多数据类型密文比较方法
本专利技术涉及加密
,具体而言,涉及一种基于揭序加密的多数据类型密文比较方法。
技术介绍
人工智能技术的兴起,将大数据与计算机技术相结合,从海量数据中获得有价值的信息,充分提升了数据的利用价值,但是明文状态下的数据挖掘是造成数据隐私泄露的直接原因,给个人或者组织带来不可预料的损失。研究学者们尝试利用新型密码技术来保护挖掘运算中的数据的隐私安全,包括同态加密技术、安全多方计算、保形加密、保序加密、揭序加密等。保序加密(OrderPreservingEncryption,OPE)是指密文保留原有明文顺序的加密技术,能够对密文执行比较运算,来判断相应明文的大小关系。能够在密文信息情况下,实现对数据的比较、排序。可以应用于数据库加密、密态统计等场景下范围查询、近邻检索等。2004年,Agrawal等人首次提出了保序加密的概念,是指密文保留原有明顺序的加密方案。同时,Agrawal等人并构造了第一个完整的保序加密体制,但是未给出保序加密的安全性定义和方案的可证明安全。2009年,Boldyreva等人深入研究了保序加密的可证明安全,并构造了第一个可证明安全的保序加密方案(BCLO方案)。随后,Boldyreva等人在美密会上分析了保序加密的单向安全性、随机保序函数安全性,并指出如果保序加密为了只泄露顺序信息和等值信息,算法必须产生足够大的密文。也即,密文空间必须相对明文空间扩张一定的大小,以保障安全性。2013年,DongxiLiu等人提出了一种非线性的保序加密体系,能够提升对密文数据库顺序搜索请求的响应。之后,Teranishi等人提出了另一种非线性的OPE算法,他们在密文中插入了随机大小的区间,并且证明了这种方法相较部分明文不可分辨的随机保序函数来说具有很强的安全性。在保序加密基础上进一步发展,揭序加密(OrderRevealingEncryption,ORE)被提出。采用该密码技术,可以通过专门的比较函数来从密文判断出明文的大小,但是密文不一定保序。2015年,美国斯坦福大学的Boneh等人首次提出了揭序加密,类似与保序加密,是一种支持在密文间运算以比较对应明文大小的加密方法,他们给出了基于多线性映射的揭序加密方案,并证明达到了IND-OCPA安全。2016年,美国斯坦福大学NathanChenette等人在著名国际会议FastSoftwareEncryption上所提出CLWW揭序加密方案,是第一个基于伪随机函数的高效保序加密方案。保序加密和揭序加密作为能够执行对密文比较和排序的新型加密技术,国内对该技术的研究较少,主要涉及保序加密算法设计与分析、数据库加密应用、云存储安全的应用。
技术实现思路
本专利技术旨在提供一种基于揭序加密的多数据类型密文比较方法,以解决上述技术问题。本专利技术提供的一种基于揭序加密的多数据类型密文比较方法,包括:步骤1,系统建立算法ORE.Setup(k)→(PP,sk):输入安全参数k,选择一个参数M≥3,令明文比特长度为n;选择一个带密钥的伪随机函数F:表示密钥空间,表示剩余类环;一个对称加密算法symmetricAlg=(symmetricAlg.Encrypt,symmetricAlg.Decrypt,),令公共参数PP=(n,M,F,symmetricAlg)并随机选择一个私钥sk;步骤2,加密算法ORE.Encrypt(PP,sk,m)→c:输入公共参数PP、私钥sk和明文m,令明文m的二进制表达为m=(b0b1b2…bn-1)2,即计算:cdata=symmetricAlg.Encrypt(k,m);uore,i=F(sk,(i,b0b1b2…bi-1||0n-i))+bimodM,i=0,1,…,n-1;输出密文c=(cdata,(uore,0,uore,1,…,uore,n-1));步骤3,解密算法ORE.Decrypt(PP,sk,c)→m:输入公共参数PP、密文c=(cdata,(uore,0,uore,1,…,uore,n-1))和私钥sk,计算输出明文m=symmetricAlg.Decrypt(sk,cdata);步骤4,比较算法ORE.Compare(PP,c,c′)→b:输入公共参数PP以及两个密文c=(cdata,(uore,0,uore,1,…,uore,n-1))和c′=(c′data,(u′ore,0,u′ore,1,…,u′ore,n-1)),令与两个密文对应的明文分别为m、m′,则:如果对于所有的i=0,1,…,n-1,uore,i=u′ore,i,则输出b=0,说明m=m′;如果找到最小的i∈{0,1,…,31},使得uore,i≠u′ore,i,那么当u′ore,i=uore,i+1modM,则输出b=1,说明m>m′;如果找到最小的i∈{0,1,…,31},使得uore,i≠u′ore,i,那么当u′ore,i≠uore,i+1modM,则输出b=2,说明m<m′。进一步的,采用分组密码算法AES128来实例化所述基于揭序加密的多数据类型密文比较方法中的伪随机函数F和对称加密算法;该分组密码算法AES128包括密钥扩展算法AES128.KeySchedule(key)→keyexp、加密算法AES128.Encrypt(keyexp,m)→c、解密算法AES128.Decrypt(keyexp,c)→m;其中,密钥key的比特长度为128;keyexp由10个128比特的轮子密钥组成,共计1280比特;明文m的比特长度n为128。进一步的,步骤1系统建立算法ORE.Setup(k)→(PP,sk)具体包括:(1-1)输入安全参数k,即128比特的密钥key;(1-2)运行AES128.KeySchedule(key)→keyexp;(1-3)根据用户所需要的数据类型,可以选取n=1,2,…,128;在此我们假设使用C语言的unsignedint类型,支持32位整型的比较运算,即明文的比特长度n=32;(1-4)令M=4;(1-5)选择AES128.Encrypt({0,1}1280,{0,1}8‖{0,1}31‖089)作为伪随机函数F;(1-6)选择(AES128.Encrypt,AES128.Decrypt)作为对称加密算法symmetricAlg;(1-7)输出密钥sk=keyexp,公共参数PP={n,M,F,symmetricAlg}。进一步的,可以通过预先设置公共参数PP={n,M,F,symmetricAlg},系统建立算法只运行分组密码算法AES128中的密钥扩展算法AES128.KeySchedule(key)→keyexp,将系统建立算法简化为ORE.Setup(key)→sk。进一步的,步骤2加密算法ORE.Encrypt(PP,sk,m)→c本文档来自技高网
...

【技术保护点】
1.一种基于揭序加密的多数据类型密文比较方法,其特征在于,包括:/n步骤1,系统建立算法ORE.Setup(k)→(PP,sk):/n输入安全参数k,选择一个参数M≥3,令明文比特长度为n;/n选择一个带密钥的伪随机函数F:

【技术特征摘要】
1.一种基于揭序加密的多数据类型密文比较方法,其特征在于,包括:
步骤1,系统建立算法ORE.Setup(k)→(PP,sk):
输入安全参数k,选择一个参数M≥3,令明文比特长度为n;
选择一个带密钥的伪随机函数F:表示密钥空间,表示剩余类环;一个对称加密算法symmetricAlg=(symmetricAlg.Encrypt,symmetricAlg.Decrypt),令公共参数PP=(n,M,F,symmetricAlg),并随机选择一个私钥sk;
步骤2,加密算法ORE.Encrypt(PP,sk,m)→c:
输入公共参数PP、私钥sk和明文m,令明文m的二进制表达为m=(b0b1b2…bn-1)2,即计算:
cdata=symmetricAlg.Encrypt(k,m);
uore,i=F(sk,(i,b0b1b2…bi-1||0n-i))+bimodM,i=0,1,…,n-1;
输出密文c=(cdata,(uore,0,uore,1,...,uore,n-1));
步骤3,解密算法ORE.Decrypt(PP,sk,c)→m:
输入公共参数PP、密文c=(cdata,(uore,0,uore,1,...,uore,n-1))和私钥sk,计算输出明文m=symmetricAlg.Decrypt(sk,cdata);
步骤4,比较算法ORE.Compare(PP,c,c′)→b:
输入公共参数PP以及两个密文c=(cdata,(uore,0,uore,1,...,uore,n-1))和c′=(c′data,(u′ore,0,u′ore,1,...,u′ore,n-1)),令与两个密文对应的明文分别为m、m′,则:
如果对于所有的i=0,1,...,n-1,uore,i=u′ore,i,则输出b=0,说明m=m′;
如果找到最小的i∈{0,1,...,31},使得uore,i≠u′ore,i,那么当u′ore,i=uore,i+1modM,则输出b=1,说明m>m′;
如果找到最小的i∈{0,1,...,31},使得uore,i≠u′ore,i,那么当u′ore,i≠uore,i+1modM,则输出b=2,说明m<m′。


2.根据权利要求1所述的基于揭序加密的多数据类型密文比较方法,其特征在于,采用分组密码算法AES128来实例化所述基于揭序加密的多数据类型密文比较方法中的伪随机函数F和对称加密算法;该分组密码算法AES128包括密钥扩展算法AES128.KeySchedule(key)→keyexp、加密算法AES128.Encrypt(keyexp,m)→c、解密算法AES128.Decrypt(keyexp,c)→m;其中,密钥key的比特长度为128;keyexp由10个128比特的轮子密钥组成,共计1280比特;明文m的比特长度n为128。


3.根据权利要求2所述的基于揭序加密的多数据类型密文比较方法,其特征在于,步骤1系统建立算法ORE.Setup(k)→(PP,sk)具体包括:
(1-1)输入安全参数k,即128比特的密钥key;
(1-2)运行AES128.KeySchedule(key)→keyexp;
(1-3)根据用户所需要的数据类型,可以选取n=1,2,...,128;在此我们假设使用C语言的unsignedint类型,支持32位整型的比较运算,即明文的比特长度n=32;
(1-4)令M=4;
(1-5)选择AES128.Encrypt({0,1}1280,{0,1}8||{0,1}31||089)作为伪随机函数F;
(1-6)选择(AES128.Encrypt,AES128.Decrypt)作为对称加密算法symmetricAlg;
(1-7)输出密钥sk=keyexp,公共参数PP={n,M,F,symmetricAlg}。


4.根据权利要求3所述的基于揭序加密的多数据类型密文比较方法,其特征在于,可以通过预先设置公共参数PP={n,M,F,symmetricAlg},系统建立算法只运行分组密码算法AES128中的密钥扩展算法AES128.KeySchedule(key)→keyexp,将系统建立算法简化为ORE.Setup(key)→sk。


5.根据权利要求3所述的基于揭序加密的多数据类型密文比较方法,其特征在于,步骤2加密算法ORE.Encrypt(PP,sk,m)→c具体包括:
(2-1)输入公共参数PP=(n,M,F,symmetricAlg)、1280比特的私钥sk和明文m;
(2-2)在明文m右边填96个0,得到一个128比特的数据m128=m||096;
(2-3)运行分组密码算法AES128中的加密算法得到128比特数据密文cdata=AES128.Encrypt(sk,m128);
(2-4)将32比特明文表示为二进制m=(b0b1b2...

【专利技术属性】
技术研发人员:汤殿华黄云帆赵伟任娟尉小鹏李泓泉
申请(专利权)人:中国电子科技集团公司第三十研究所
类型:发明
国别省市:四川;51

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

1