一种并行化和结构化公钥可搜索的加密方法与流程

文档序号:11479446阅读:392来源:国知局
一种并行化和结构化公钥可搜索的加密方法与流程

本发明属于密码学和云存储技术安全领域,更具体地,涉及一种并行化和结构化公钥可搜索的加密方法。



背景技术:

云存储是一种新兴的网络存储技术,由云服务提供商将存储资源放到云上供用户使用从而解决用户存储问题的新方法,用户可以在任何时间、任何地点,通过任何可联网设备连接到云存储服务器上方便地存取自己的数据。虽然云存储技术为用户节省了大量的存储空间,提供了方便的数据存取服务,但是由此带来的数据安全问题也是不容忽视的。为了保证用户隐私数据的机密性,越来越多的公司和用户选择将数据加密后再存储到云服务器中,但是用户如何对加密数据进行搜索便成了一个难题。为了有效地解决这个问题,可搜索加密近几年在国内外得到了广泛的研究和发展。从密码学的角度来看,目前的工作可以分为两大类,公钥可搜索加密(peks)和对称可搜索加密(seks)。

对称可搜索加密(seks)最早是被song等人提出来的,他们实例化方法的搜索时间和数据库的大小线性相关。后续的一些工作根据这样的研究思路去改进song的原始方法。

boneh等人介绍了基于关键字搜索的公钥加密(peks),在该方法中,任何一个知道接收者公钥的人都可以为服务器更新关键字的可搜索密文。接收者可以将关键字的搜索委派给服务器。现有的语义安全peks方法的检索时间和密文空间线性相关,这导致其很难应用于大型数据库。因此,高效率的检索对于实际部署peks方法是很重要的。

在公钥可搜索加密方向,徐鹏等人在文献中开创性地提出了具有隐藏结构的公钥可搜索加密方法(spchs),并证明了该方法在随机(ro)模型下具有语义安全性。该方法有效地解决了在基于关键字检索的公钥可搜索加密领域的效率问题,在此之前,具有语义安全性的公钥可搜索加密方法的检索时间和密文的数量线性相关,该方法首次实现了检索时间只与包含检索关键字的密文的数量相关。但是,在该方法中,因为同一个关键字的可搜索密文之间具有隐藏的链式结构,导致了其在实际应用中不能很好地支持并行检索。



技术实现要素:

针对现有技术的缺陷,本发明的目的在于提供一种并行化和结构化公钥可搜索的加密方法,旨在解决现有技术中由于同一个关键字的可搜索密文之间具有隐藏的链式结构导致其在实际应用中不能支持并行检索的问题。

本发明提供了一种并行化和结构化公钥可搜索公钥的加密方法,包括以下步骤:

步骤1:根据系统预设的安全参数构建对应的双线性映射,并根据所述双线性映射获得主公钥pk和主私钥sk;

步骤2:发送方根据主公钥pk初始化可搜索密文结构,并输出对应的结构共有头部pub和私有状态pri;

步骤3:发送方根据主公钥pk和关键字w的私有状态pri,为关键字w生成对应的密文c,并将生成的可搜索密文上传到服务器;

步骤4:接收方使用所述主私钥sk并根据待搜索关键字w生成检索陷门tw并提交给云服务器,云服务器根据该搜索陷门生成搜索子陷门,并根据子陷门检索所有可搜索密文并得到对应的可搜索密文。

更进一步地,步骤1中,所述主公钥所述主私钥sk=α;

其中,q为一个素数,g和g1表示两个具有素数阶q的乘法群,g是g群的一个生成元。g×g→g1一个具有可计算性、双线性、非退化性的双线性映射,让p=gα。两个密码学强哈希函数h1:{0,1}*→g,h2:g1→{0,1}logq,c为输出密文空间。

更进一步地,在步骤2中,选择一个随机数初始化结构并输出(pri=(u),pub=gu);

更进一步地,当发送方对关键字w进行加密后,私有状态pri由初始状态pri=(u)变为一个形如的变长列表;

其中u为初始化状态,w表示关键字,且该关键字属于关键字空间counter表示该关键字w被加密的加密次数,即计数器。输出私有状态和公共部分(pri,pub)。

更进一步地,步骤3具体包括以下子步骤:

(3-1)发送方在加密关键字w时,在私有状态pri列表中搜索是否存在“关键字-加密次数”对(w,counter),若是,则转入步骤(3-3);若否,则转入步骤(3-2);

(3-2)设置counter=1,将(w,counter)插入到私有状态pri列表;

(3-3)将加密次数counter加1,并更新私有状态pri列表,将新的“关键字-加密次数”(w,counter)更新替换到pri列表中;

(3-4)根据输出关键字生成可搜索密文

更进一步地,所述步骤4具体包括以下子步骤:

(4-1)输入主公钥pk,公有头部pub,所有密文的集合c,关键字w的搜索陷门tw;

设集合c′,集合c′中包含了成功检索的可搜索密文,counter=1;

(4-2)根据步骤(4-1)中的参数计算counter对应的子陷门ts=twcounter

(4-3)根据子陷门ts和公有头部pub计算在c中查找密文c[i]并判断其是否满足c[i]=c′,若是,则将c[i]添加到c′中,并counter++,转到至步骤(4-1);若否,则不存在w对应的可搜索密文,输出空集c′。

通过本发明所构思的以上技术方法,与现有技术相比,本发明通过使用计数器来区分同一个关键字的不同可搜索密文,即同时加密关键字和该关键字已经被加密的次数,计数器作为私有状态由用户自己保存。加密关键字的时候,首先获得关键字的加密次数即计数器的值,然后将该关键字和计数器一起加密生成可搜索密文。搜索的时候,首先通过关键字生成一个主陷门,主陷门再与计数器结合生成子陷门,最后通过子陷门与公共头部生成可搜索密文,再与密文集合匹配。因为对于同一个关键字,子陷门的生成过程是独立的,基于此本发明能并行地完成同一个关键字的不同可搜索密文的检索。

附图说明

图1为本发明结构化可搜索公钥加密方法的方法设计图;

图2为本发明结构化可搜索公钥加密方法的应用环境示意图;

图3为本发明并行可搜索公钥加密方法的流程图;

图4为本发明动态可搜索公钥加密方法的系统初始化和加密流程图;

图5为本发明动态可搜索公钥加密方法的搜索流程图。

具体实施方式

为了使本发明的目的、技术方法及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明构造一个新的在随机(ro)模型下具有语义安全性的结构化公钥可搜索的加密方法,使其能更好地支持并行检索。在本发明中,关键字的可搜索密文具有隐藏的链式结构,同一个关键字的包含的所有的可搜索密文在检索过程中具有依赖关系,其搜索时间取决于包含被查询关键字的密文的个数。然而,在实际应用中,在硬件支持的条件下,本发明往往采用多核并行处理的方式去执行本发明的任务。显而易见,虽然结构间可以支持并行,但处理同一个关键字所对应的所有可搜索密文时,由于关键字的密文存在依赖关系,服务器必须一个一个的进行检索,所以该方法并不能很好地支持并行,为了实现结构化公钥可搜索加密的并行检索,本发明致力于在保持部分结构的同时,消除同一个关键字的可搜索密文之间的检索依赖关系。

本发明的目标是消除同一个关键字对应的可搜索密文之间的隐藏链式结构,本发明选择保留公共头部。本发明通过使用计数器来区分同一个关键字的不同可搜索密文,即同时加密关键字和该关键字已经被加密的次数,计数器作为私有状态由用户自己保存。加密关键字的时候,首先获得关键字的加密次数即计数器的值,然后将该关键字和计数器一起加密生成可搜索密文。搜索的时候,首先通过关键字生成一个主陷门,主陷门再与计数器结合生成子陷门,最后通过子陷门与公共头部生成可搜索密文,再与密文集合匹配。因为对于同一个关键字,子陷门的生成过程是独立的,基于此本发明能并行地完成同一个关键字的不同可搜索密文的检索。本发明的新结构同样是星型的,如图1所示。这样的一个结构保证了服务器在得到关键字的陷门之后能够并行地完成检索。

本发明提供一种并行化和结构化公钥可搜索加密方法,该方法包括以下步骤:

步骤1:系统初始化,设置系统的各项参数,具体包括以下子步骤:

(1-1)让表示从中随机选取一个元素γ,让g和g1表示两个具有素数阶q的乘法群,假设g是g群的一个生成元。一个具有可计算性、双线性、非退化性的双线性映射g×g→g1必须满足以下特性:

1)可计算性:给定g,h∈g,存在一个多项式时间算法去求解

2)双线性:对于任意整数a,

3)非退化性:如果g是g群的一个生成元,那么是g1的一个生成元。

让bgen(1k)表示一个高效率的双线性映射生成器,将一个安全参数1k作为输入,并概率性地输出代表关键字的空间。

(1-2)输入安全参数1k和关键字空间运行bgen(1k)算法,得到选择一个随机数让p=gα。选择两个密码学强哈希函数h1:{0,1}*→g,h2:g1→{0,1}logq。输出密文空间c,主私钥sk=α,主公钥

步骤2:密文结构初始化。给关键字初始化本地状态,具体包括以下子步骤:

(2-1)选择一个随机数初始化结构并输出(pri=(u),pub=gu)。

值得注意的是,私有状态pri=(u)只是初始化的形式,当发送方对关键字w进行加密之后,私有状态pri将会变为一个形如的变长列表,其中u为初始化状态,w表示关键字,且该关键字属于关键字空间counter表示该关键字w被加密的加密次数,即计数器。输出私有状态和公共部分(pri,pub)。

步骤3:可搜索密文生成。如图4所示,具体包括以下几个子步骤:

(3-1)发送方在加密关键字w时,在私有状态pri列表中搜索是否存在“关键字-加密次数”对,即(w,counter);

(3-2)如果没有找到“关键字-加密次数”对,设置counter=1,将(w,counter)插入到私有状态pri列表;

(3-3)如果找到了该关键字对应的“关键字-加密次数”对,则证明该关键字w之前已经被加密过,即“关键字-加密次数”(w,counter)已经被插入到私有状态pri列表,所以需要将加密次数counter加1,并且需要更新私有状态pri列表,将新的“关键字-加密次数”(w,counter)替换到pri列表中;

(3-4)根据输出关键字的可搜索密文

步骤4:密文检索。如图5所示,具体包括以下几个子步骤:

(4-1)输入主公钥pk,公有头部pub,所有密文的集合c(让c[i]代表c中的某一个密文),关键字w的搜索陷门tw。设集合c′,集合c′中包含了成功检索的可搜索密文,counter=1;

(4-2)计算counter对应的子陷门ts=twcounter

(4-3)根据子陷门ts和公有头部pub,计算在c中查找密文c[i]满足c[i]=c′。如果找到了,将c[i]添加到c′中。counter++,转到步骤1)执行;

(4-4)如果在c中没有查找密文c[i]满足c[i]=c′,则不存在w对应的可搜索密文,输出空集c′。

为了更进一步的说明本发明实施例提供的并行化和结构化公钥可搜索的加密方法,现结合具体实例详述如下:

图1示出了本发明支持动态可搜索公钥加密方法的实现方法;本发明的密文结构包括公有头部和可搜索密文;公有状态和可搜索密文形成了一个类似于星型的结构;通过陷门和公有头部计算可得到对应的可搜索密文,使用计算得到的可搜索密文和云服务器中的密文集合中的密文进行匹配检索,输出最后的检索结果。

图2示出了本发明支持动态可搜索公钥加密方法的应用环境;本发明应用于云存储环境,整个系统包括三个主体,发送方、云存储服务器和检索方。具体包括:

生成加密关键字:根据待加密的关键字和关键字的本地私有状态(即关键字被加密的次数counter)生成关键字可搜索密文,加密待上传文件生成密文文件,然后上传可搜索关键字密文和密文文件。云服务器执行可搜索密文的动态更新,存储密文文件;

搜索请求:检索方根据待搜索关键字w生成检索限门tw并上传至云存储服务器;

返回结果:云存储服务器根据检索限门生成检索子陷门,通过检索子陷门完成可搜索密文的检索并将包含可搜索关键字密文的密文文件返回给检索方;

图3示出了本发明支持并行化公钥可搜索加密方法的实现流程,主要包括以下步骤:

步骤1系统初始化,设置系统的各项参数,具体包括以下子步骤:

(1-1)让表示从中随机选取一个元素γ,让g和g1表示两个具有素数阶q的乘法群,假设g是g群的一个生成元。一个具有可计算性、双线性、非退化性的双线性映射g×g→g1必须满足以下特性:

1)可计算性:给定g,h∈g,存在一个多项式时间算法去求解

2)双线性:对于任意整数a,

3)非退化性:如果g是g群的一个生成元,那么是g1的一个生成元。

让bgen(1k)表示一个高效率的双线性映射生成器,将一个安全参数1k作为输入,并概率性地输出代表关键字的空间。

(1-2)输入安全参数1k,和关键字空间运行bgen(1k)算法,得到选择一个随机数让p=gα。选择两个密码学强哈希函数h1:{0,1}*→g,h2:g1→{0,1}logq。输出密文空间c,主私钥sk=α,主公钥

步骤2密文结构初始化。给关键字初始化本地状态,具体包括以下子步骤:

(2-1)选择一个随机数初始化结构并输出(pri=(u),pub=gu)。

值得注意的是,私有状态pri=(u)只是初始化的形式,当发送方对关键字w进行加密之后,私有状态pri将会变为一个形如的变长列表,其中u为初始化状态,w表示关键字,且该关键字属于关键字空间counter表示该关键字w被加密的加密次数,即计数器。输出私有状态和公共部分(pri,pub)。

步骤3可搜索密文生成。如图4所示,具体包括以下几个子步骤:

(3-1)发送方在加密关键字w时,在私有状态pri列表中搜索是否存在“关键字-加密次数”对,即(w,counter);

(3-2)如果没有找到“关键字-加密次数”对,设置counter=1,将(w,counter)插入到私有状态pri列表;

(3-3)如果找到了该关键字对应的“关键字-加密次数”对,则证明该关键字w之前已经被加密过,即“关键字-加密次数”(w,counter)已经被插入到私有状态pri列表,所以需要将加密次数counter加1,并且需要更新私有状态pri列表,将新的“关键字-加密次数”(w,counter)更新替换到pri列表中;

(3-4)根据输出关键字的可搜索密文

步骤4密文检索。如图5所示,具体包括以下几个子步骤:

(4-1)输入主公钥pk,公有头部pub,所有密文的集合c(让c[i]代表c中的某一个密文),关键字w的搜索陷门tw。设集合c′,集合c′中包含了成功检索的可搜索密文,counter=1;

(4-2)计算counter对应的子陷门ts=twcounter

(4-3)根据子陷门ts和公有头部pub,计算在c中查找密文c[i]满足c[i]=c′。如果找到了,将c[i]添加到c′中。counter++,转到步骤1)执行;

(4-4)如果在c中没有查找密文c[i]满足c[i]=c′,则不存在w对应的可搜索密文,输出空集c′。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1