一种基于泄序加密的解密算法的制作方法

文档序号:17158607发布日期:2019-03-20 00:19阅读:415来源:国知局
一种基于泄序加密的解密算法的制作方法

本发明属于信息安全技术领域,具体涉及一种基于泄序加密(order-revealingencryption,ore)的解密方案。



背景技术:

随着云计算的发展,越来越多的企业将服务和业务数据部署在云端,与此同时,云端数据泄露案件常时有发生,解决数据泄露案件最直接的方法就是加密,但一些加密算法对原始数据加密后不支持对密文的运算操作。

解决上述问题的一种支持密文数据比较大小的加密算法就是保序加密(order-preservingencryption,ope)算法,此算法加密明文后,可以直接通过密文数据得到大小关系,即,对任意明文p1>p2,加密后得到的密文满足c1>c2。利用此算法,可以对密文数据进行数据匹配、范围查询以及排序等操作,但此算法泄露了明文数据之间大小,遭受推理攻击后可以恢复一半以上的明文数据。

针对保序加密算法的缺点,一种安全性更高的加密算法——泄序加密算法产生了,此种算法要求加密后的密文数据不保持原明文数据的大小关系,要依靠专门的比较函数进行比较大小,即,对任意明文数据p1>p2,加密后得到的密文数据c1、c2,满足比较函数compare(c1,c2)>0。

常用的泄序加密算法大多要依靠多重线性映射(multilinearmaps)或者不可区分性混淆(indistinguishabilityobfuscation)等这种比较强的加密原语,但这种泄序加密算法复杂度比较高,可操作性不强。本发明基于的一种加密算法主要基于伪随机函数(pseudorandomfunctions,prfs),利用明文数据的比特位bit进行运算,泄露的仅是明文数据中第一个不相同的bit,与常用的加密算法相比具有更高的安全性。



技术实现要素:

本发明的目的在于提出一种基于ore加密算法的解密算法,从ore加密的密文数据中恢复明文数据。

为了实现解密的目的,本发明采用以下技术方案:

一种基于泄序加密的解密方法,输入密文ctxt,加密密钥为key;解密步骤为;

1)检测下密文数据ctxt与加密密钥key所携带的明文数据的bit数记为n,每个明文数据的bit扩展记为out_blk_len个bit,这两个参数是否一致,如果一致,继续下面步骤;否则则退出。

2)将明文数据按bit的形式表示成p=m0m1...mi...mn-1,其中p表示明文,n表示p的bit数,同时令i代表明文数据p的第i个bit位,i∈[0,n)。

3)计算明文数据第i位的加密后密文数据的掩码,设掩码为:

block_mask=(2^out_blk_len-1)<<(n-i-1)*out_blk_len。

4)密文数据与block_mask做逻辑与操作,然后右移(n-1-i)*out_blk_len位,计算后得到的值记为ci。

5)利用加密函数f和加密密钥key,计算出加密后的值记为f(key,m0...mi-1)。

6)比较ci与f(key,m0...mi-1)的值是否相等,如果不等则mi=1,否则mi=0。

7)如此循环,直至到i=n-1,解出明文数据的所有比特位,利用移位等操作得到明文数据。

与现有技术相比,本发明主要利用ore加密算法按bit加密的特性进行解密,无需专门破解加密算法,大大降低了复杂度,方便易用。

附图说明

图1:一种ore加密算法示意图。

图2:泄序加密算法的解密算法流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。

图1为一种按明文的比特位进行ore加密算法的例子,每个明文数据比特位操作是对当前比特位前面的所有比特位和加密key应用伪随机函数,伪随机函数的输出后在加上当前bit位上的值,然后以此类推加密整个明文数据,最后输出类似图1的加密值。

如图2所示,图2为本发明实施例的流程图,计算机为小端模式,加密函数采用伪随机函数aes,明文数据为1610612739(1610612739=2^30+2^29+1),明文数据的bit数为n=31,每个明文数据比特位扩展10个bit,记out_blk_len=10,采用伪随机函数aes和key对明文数据1610612739进行加密后密文ctxt=14803069411772771925,其解密基本操作流程如下。

在步骤s201,首先输入经过ore加密的密文数据以及加密密钥。

在步骤s202,对密文数据和加密密钥的携带的参数进行匹配。

在步骤s203,计算明文数据比特位数n和每个明文比特位扩展后比特位数out_blk_len,本实施例中n=31,out_blk_len=10,同时令i代表明文数据p的第i个bit位,初始值设i=0。

在步骤s204,判断i<n,即0<31。

在步骤s205,计算第i=0位的比特位加密后密文数据的掩码,记为block_mask,此时block_mask=(2out_blk_len-1)<<(n-i-1)*out_blk_len,当i=0时,block_mask=(210-1)<<300。

在步骤s206,密文数据ctxt与block_mask做逻辑与操作,先右移(n-1-i)*out_blk_len位,计算后得到的值,记为ci,当i=0时,c0=496。

在步骤s207,利用加密算法所用的伪随机函数aes和加密密钥,以及前i-1位比特位,计算加密后的值记为f(key,m0...mi-1),当i=0时,利用初始输入值ε(一般为0)和aes加密函数计算后记f(key,ε)=495。

在步骤s208,ci与f(key,m0...mi-1)比较,如果相等,此时明文数据的第i位比特位为0,否则为1,即mi=0或者1,当i=0时,此时c0≠f(key,ε),即496≠495,此时m0=1。

mi向左移n-i-1位,与p做逻辑或操作,当i=0时,m0像左移30位。

i值增加1,并执行步骤s204。

如果i<n,重复步骤s205-s211,直到s204不再满足条件,此时可以看到m0=1,m1=1,m30=1,即明文数据的第0,1,30位上bit位为1。

步骤s212,输出解密后的明文数据,此例明文数据p=1610612739。

步骤s213,结束解密过程。

以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。



技术特征:

技术总结
本发明公开一种基于泄序加密的解密算法。该解密算法主要利用泄序加密算法按比特位逐位加密的特性,结合加密函数、加密密钥,直接破解密文,无需专门破解泄序加密算法,可以有效降低算法复杂度,方便易用。

技术研发人员:滕海明;谢东福;李卫明
受保护的技术使用者:杭州弗兰科信息安全科技有限公司
技术研发日:2017.09.13
技术公布日:2019.03.19
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1