一种具有访问控制功能的数据库查询方法和系统与流程

文档序号:11156609阅读:来源:国知局

技术特征:

1.一种具有访问控制功能的数据库查询方法,其特征在于包括如下步骤:

初始化步骤:数据上传者生成查询密钥;

数据加密步骤:数据上传者对上传至服务器数据库中的每一条记录建立属性索引,并对每一条记录及属性索引加密,得到记录密文和索引密文,然后将查询密钥进行加密,并把加密后的查询密钥发送给数据查询用户;

密钥产生步骤:数据查询用户根据自身的用户属性生成对应的密钥;

陷门生成步骤:数据查询用户采用密钥和加密后的查询密钥解密得到查询密钥,然后通过查询密钥和查询条件生成谓词陷门,发送给服务器;

查询步骤:服务器对数据库的数据进行查询,将符合条件的记录密文数据返回给数据查询用户;

解密步骤:数据查询用户采用密钥解密服务器返回的记录密文数据,得到查询结果。

2.根据权利要求1所述的数据库查询方法,其特征在于:在初始化步骤中,所述数据上传者输入安全参数λ以及属性全集U,通过ABE算法和POE算法,密钥产生中心生成公共参数pp和主密钥msk;数据上传者生成公钥pk和查询密钥sk。

3.根据权利要求2所述的数据库查询方法,其特征在于:在数据加密步骤中,数据上传者为每一条记录m建立属性索引并使用公共参数pp、公钥pk和访问控制结构(M,ρ)在本地对每一条记录m和属性索引进行加密,得到记录密文和索引密文(C′,Cp);使用公共参数pp和访问控制结构(M,ρ)对查询密钥sk进行加密得到Csk,并将其发送给系统中的数据查询用户。

4.根据权利要求3所述的数据库查询方法,其特征在于:在密钥产生步骤中,数据查询用户将用户属性I发送给密钥产生中心,密钥产生中心使用主密钥msk生成对应的密钥skI并发回给用户。

5.根据权利要求4所述的数据库查询方法,其特征在于:在陷门生成步骤中,用户属性I满足访问控制结构(M,ρ)的数据查询用户用密钥skI解密Csk得到查询密钥sk,然后使用sk和查询条件也就是谓词产生谓词陷门并发送给服务器。

6.根据权利要求5所述的数据库查询方法,其特征在于:在查询步骤和解密步骤中,服务器根据索引密文Cp和谓词陷门对记录密文数据逐条进行查询,当查询条件和属性索引匹配时,返回记录密文C′,否者返回⊥,当返回记录密文C′时,数据查询用户采用密钥skI,解密所述记录密文C′,获得查询结果m。

7.根据权利要求1-6任一项所述的数据库查询方法,其特征在于:所述数据加密方法采用密文-策略属性加密法和谓词加密法。

8.根据权利要求7所述的数据库查询方法,其特征在于:所述密文-策略属性加密法采用的算法包括:

(1)初始化算法:(ABE.pk,ABE.msk)←ABE.Setup(U),输入属性全集U,产生阶为素数p的循环群G0,生成元为g,随机选取元素h1,…,hU∈G0与系统属性集合U相关联,另外随机选择α,a∈Zp,初始化算法输出系统公钥和主密钥:

ABE.pk=(g,ga,e(g,g)α,h1,…,hU);ABE.msk=gα

(2)密钥产生算法:ABE.sk←ABE.KeyGen(ABE.msk,I),输入主密钥ABE.msk以及某个用户的用户属性集I,随机选择t∈Zp,密钥产生算法输出:

<mrow> <mi>A</mi> <mi>B</mi> <mi>E</mi> <mo>.</mo> <mi>s</mi> <mi>k</mi> <mo>=</mo> <mrow> <mo>(</mo> <mi>K</mi> <mo>=</mo> <msup> <mi>g</mi> <mi>&alpha;</mi> </msup> <msup> <mi>g</mi> <mrow> <mi>a</mi> <mi>t</mi> </mrow> </msup> <mo>,</mo> <mi>L</mi> <mo>=</mo> <msup> <mi>g</mi> <mi>t</mi> </msup> <mo>,</mo> <mo>&ForAll;</mo> <mi>x</mi> <mo>&Element;</mo> <mi>I</mi> <mo>:</mo> <msub> <mi>K</mi> <mi>x</mi> </msub> <mo>=</mo> <msubsup> <mi>h</mi> <mi>x</mi> <mi>t</mi> </msubsup> <mo>)</mo> </mrow> <mo>;</mo> </mrow>

(3)加密算法:CT←ABE.Encrypt(ABE.pk,m,M,ρ),输入消息记录m、系统公钥ABE.pk以及访问控制结构(M,ρ),其中,设M为l×n矩阵,随机选择向量则有随机选择r1,…,rl∈Zp,加密算法输出密文:

<mrow> <mi>C</mi> <mi>T</mi> <mo>=</mo> <mrow> <mo>(</mo> <mi>C</mi> <mo>=</mo> <mi>m</mi> <mo>&CenterDot;</mo> <mi>e</mi> <msup> <mrow> <mo>(</mo> <mrow> <mi>g</mi> <mo>,</mo> <mi>g</mi> </mrow> <mo>)</mo> </mrow> <mrow> <mi>&alpha;</mi> <mi>s</mi> </mrow> </msup> <mo>,</mo> <mover> <mi>C</mi> <mo>&OverBar;</mo> </mover> <mo>=</mo> <msup> <mi>g</mi> <mi>s</mi> </msup> <mo>,</mo> <msubsup> <mrow> <mo>{</mo> <msub> <mi>C</mi> <mi>i</mi> </msub> <mo>=</mo> <msup> <mi>g</mi> <mrow> <msub> <mi>a&lambda;</mi> <mi>i</mi> </msub> </mrow> </msup> <msubsup> <mi>h</mi> <mrow> <mi>&rho;</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> <mrow> <mo>-</mo> <msub> <mi>r</mi> <mi>i</mi> </msub> </mrow> </msubsup> <mo>,</mo> <msub> <mi>D</mi> <mi>i</mi> </msub> <mo>=</mo> <msup> <mi>g</mi> <msub> <mi>r</mi> <mi>i</mi> </msub> </msup> <mo>}</mo> </mrow> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>l</mi> </msubsup> <mo>)</mo> </mrow> <mo>;</mo> </mrow>

(4)解密算法:m←ABE.Decrypt(ABE.sk,CT),输入访问控制结构为(M,ρ)的密文CT,属性集合为I的用户密钥,如果属性集合满足访问控制结构,设定义S={i:ρ(i)∈I},其中则可以找到属性集合{ωi∈Zp}i∈S使得∑i∈Sωiλi=s,通过以下解密算法得到记录m:

<mrow> <mi>e</mi> <mrow> <mo>(</mo> <mover> <mi>C</mi> <mo>&OverBar;</mo> </mover> <mo>,</mo> <mi>K</mi> <mo>)</mo> </mrow> <mo>/</mo> <mrow> <mo>(</mo> <msub> <mo>&Pi;</mo> <mrow> <mi>i</mi> <mo>&Element;</mo> <mi>S</mi> </mrow> </msub> <msup> <mrow> <mo>(</mo> <mrow> <mi>e</mi> <mrow> <mo>(</mo> <mrow> <msub> <mi>C</mi> <mi>i</mi> </msub> <mo>,</mo> <mi>L</mi> </mrow> <mo>)</mo> </mrow> <mi>e</mi> <mrow> <mo>(</mo> <mrow> <msub> <mi>D</mi> <mi>i</mi> </msub> <mo>,</mo> <msub> <mi>K</mi> <mrow> <mi>&rho;</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </msub> </mrow> <mo>)</mo> </mrow> </mrow> <mo>)</mo> </mrow> <msub> <mi>&omega;</mi> <mi>i</mi> </msub> </msup> <mo>)</mo> </mrow> <mo>=</mo> <mi>e</mi> <msup> <mrow> <mo>(</mo> <mi>g</mi> <mo>,</mo> <mi>g</mi> <mo>)</mo> </mrow> <mrow> <mi>&alpha;</mi> <mi>s</mi> </mrow> </msup> <mo>,</mo> </mrow>

C/e(g,g)αs=m·e(g,g)αs/e(g,g)αs=m。

9.根据权利要求8所述的数据库查询方法,其特征在于:所述谓词加密法采用的算法包括:

(1)初始化算法:(POE.pk,POE.sk)←POE.Setup(λ),输入安全参数λ,得到(p,q,r,G,GT),其中G=Gp·Gq·Gr且p,q,r都为素数,Gp,Gq,Gr的生成元分别为gp,gq,gr,对于1≤i≤n,随机选择R1,i,R2,i∈Gr、h1,i,h2,i∈Gp和R0∈Gr,初始化算法输出:

<mrow> <mi>P</mi> <mi>O</mi> <mi>E</mi> <mo>.</mo> <mi>p</mi> <mi>k</mi> <mo>=</mo> <mrow> <mo>(</mo> <msub> <mi>g</mi> <mi>p</mi> </msub> <mo>,</mo> <msub> <mi>g</mi> <mi>r</mi> </msub> <mo>,</mo> <mi>Q</mi> <mo>=</mo> <msub> <mi>g</mi> <mi>q</mi> </msub> <msub> <mi>R</mi> <mn>0</mn> </msub> <mo>,</mo> <msubsup> <mrow> <mo>{</mo> <msub> <mi>H</mi> <mrow> <mn>1</mn> <mo>,</mo> <mi>i</mi> </mrow> </msub> <mo>=</mo> <msub> <mi>h</mi> <mrow> <mn>1</mn> <mo>,</mo> <mi>i</mi> </mrow> </msub> <msub> <mi>R</mi> <mrow> <mn>1</mn> <mo>,</mo> <mi>i</mi> </mrow> </msub> <mo>,</mo> <msub> <mi>H</mi> <mrow> <mn>2</mn> <mo>,</mo> <mi>i</mi> </mrow> </msub> <mo>=</mo> <msub> <mi>h</mi> <mrow> <mn>2</mn> <mo>,</mo> <mi>i</mi> </mrow> </msub> <msub> <mi>R</mi> <mrow> <mn>2</mn> <mo>,</mo> <mi>i</mi> </mrow> </msub> <mo>}</mo> </mrow> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>n</mi> </msubsup> <mo>)</mo> </mrow> <mo>,</mo> </mrow>

<mrow> <mi>P</mi> <mi>O</mi> <mi>E</mi> <mo>.</mo> <mi>s</mi> <mi>k</mi> <mo>=</mo> <mrow> <mo>(</mo> <mi>p</mi> <mo>,</mo> <mi>q</mi> <mo>,</mo> <mi>r</mi> <mo>,</mo> <msub> <mi>g</mi> <mi>p</mi> </msub> <mo>,</mo> <msubsup> <mrow> <mo>{</mo> <msub> <mi>h</mi> <mrow> <mn>1</mn> <mo>,</mo> <mi>i</mi> </mrow> </msub> <mo>,</mo> <msub> <mi>h</mi> <mrow> <mn>2</mn> <mo>,</mo> <mi>i</mi> </mrow> </msub> <mo>}</mo> </mrow> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>n</mi> </msubsup> <mo>)</mo> </mrow> <mo>;</mo> </mrow>

(2)谓词加密算法:输入xi∈Zn和公钥POE.pk,加密算法随机选择s,α,β∈Zn,R3,i,R4,i∈Gr,其中1≤i≤n,谓词加密算法输出密文:

<mrow> <mi>C</mi> <mo>=</mo> <mrow> <mo>(</mo> <msub> <mi>C</mi> <mn>0</mn> </msub> <mo>=</mo> <msubsup> <mi>g</mi> <mi>p</mi> <mi>s</mi> </msubsup> <mo>,</mo> <msubsup> <mrow> <mo>{</mo> <msub> <mi>C</mi> <mrow> <mn>1</mn> <mo>,</mo> <mi>i</mi> </mrow> </msub> <mo>=</mo> <msubsup> <mi>H</mi> <mrow> <mn>1</mn> <mo>,</mo> <mi>i</mi> </mrow> <mi>s</mi> </msubsup> <msup> <mi>Q</mi> <mrow> <msub> <mi>&alpha;x</mi> <mi>i</mi> </msub> </mrow> </msup> <msub> <mi>R</mi> <mrow> <mn>3</mn> <mo>,</mo> <mi>i</mi> </mrow> </msub> <mo>,</mo> <msub> <mi>C</mi> <mrow> <mn>2</mn> <mo>,</mo> <mi>i</mi> </mrow> </msub> <mo>=</mo> <msubsup> <mi>H</mi> <mrow> <mn>2</mn> <mo>,</mo> <mi>i</mi> </mrow> <mi>s</mi> </msubsup> <msup> <mi>Q</mi> <mrow> <msub> <mi>&alpha;x</mi> <mi>i</mi> </msub> </mrow> </msup> <msub> <mi>R</mi> <mrow> <mn>4</mn> <mo>,</mo> <mi>i</mi> </mrow> </msub> <mo>}</mo> </mrow> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>n</mi> </msubsup> <mo>)</mo> </mrow> <mo>;</mo> </mrow>

(3)谓词陷门生成算法:输入密钥POE.sk和谓词vi∈Zn,密钥生成算法随机的选择r1,i,r2,i∈Zn,R5∈Gr,f1,f2∈Zn,Q6∈Gq,密钥生成算法输出谓词陷门:

<mrow> <mi>P</mi> <mi>O</mi> <mi>E</mi> <mo>.</mo> <msub> <mi>sk</mi> <mover> <mi>v</mi> <mo>&RightArrow;</mo> </mover> </msub> <mo>=</mo> <mrow> <mo>(</mo> <mi>K</mi> <mo>=</mo> <msub> <mi>R</mi> <mn>5</mn> </msub> <msub> <mi>Q</mi> <mn>6</mn> </msub> <msubsup> <mo>&Pi;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>n</mi> </msubsup> <msubsup> <mi>h</mi> <mrow> <mn>1</mn> <mo>,</mo> <mi>i</mi> </mrow> <mrow> <mo>-</mo> <msub> <mi>r</mi> <mrow> <mn>1</mn> <mo>,</mo> <mi>i</mi> </mrow> </msub> </mrow> </msubsup> <msubsup> <mi>h</mi> <mrow> <mn>2</mn> <mo>,</mo> <mi>i</mi> </mrow> <mrow> <mo>-</mo> <msub> <mi>r</mi> <mrow> <mn>2</mn> <mo>,</mo> <mi>i</mi> </mrow> </msub> </mrow> </msubsup> <mo>,</mo> <msubsup> <mrow> <mo>{</mo> <msub> <mi>K</mi> <mrow> <mn>1</mn> <mo>,</mo> <mi>i</mi> </mrow> </msub> <mo>=</mo> <msubsup> <mi>g</mi> <mi>p</mi> <msub> <mi>r</mi> <mrow> <mn>1</mn> <mo>,</mo> <mi>i</mi> </mrow> </msub> </msubsup> <msubsup> <mi>g</mi> <mi>q</mi> <msub> <mi>r</mi> <mrow> <mn>1</mn> <mo>,</mo> <mi>i</mi> </mrow> </msub> </msubsup> <mo>,</mo> <msub> <mi>K</mi> <mrow> <mn>2</mn> <mo>,</mo> <mi>i</mi> </mrow> </msub> <mo>=</mo> <msubsup> <mi>g</mi> <mi>p</mi> <msub> <mi>r</mi> <mrow> <mn>2</mn> <mo>,</mo> <mi>i</mi> </mrow> </msub> </msubsup> <msubsup> <mi>g</mi> <mi>q</mi> <msub> <mi>r</mi> <mrow> <mn>2</mn> <mo>,</mo> <mi>i</mi> </mrow> </msub> </msubsup> <mo>}</mo> </mrow> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>n</mi> </msubsup> <mo>)</mo> </mrow> <mo>;</mo> </mrow>

(4)查询算法:输入密文C和谓词陷门谓词陷门算法计算以下值:

如果y=1,则算法输出查询结果1;否则,输出0。

10.一种实现权利要求1-9任一项所述数据库查询方法的系统,其特征在于包括:

密钥产生中心:用于生成主密钥、查询密钥,并将生成的查询密钥发送给数据上传者,根据数据查询用户提供的用户属性生成密钥并发送给数据查询用户;

数据上传者:对上传至服务器数据库中的每一条记录建立属性索引,并对每一条记录及属性索引加密,得到记录密文和索引密文,然后将查询密钥进行加密,并把加密后的查询密钥发送给数据查询用户;

数据查询用户:采用密钥和加密后的查询密钥解密得到查询密钥,然后通过查询密钥和查询条件生成谓词陷门,发送给服务器,并采用密钥解密服务器返回的记录密文数据,得到查询结果;

服务器:用于对数据库的数据进行查询,将符合条件的记录密文数据返回给数据查询用户。

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