CN102713996A - 隐匿检索系统以及公开参数生成装置以及加密装置以及用户秘密密钥生成装置以及查询发布装置以及检索装置以及计算机程序以及隐匿检索方法以及公开参数生成方法以及加密方法以及用户秘密密钥生成方法以及查询发布方法以及检索方法 - Google Patents
隐匿检索系统以及公开参数生成装置以及加密装置以及用户秘密密钥生成装置以及查询发布装置以及检索装置以及计算机程序以及隐匿检索方法以及公开参数生成方法以及加密方法以及用户秘密密钥生成方法以及查询发布方法以及检索方法 Download PDFInfo
- Publication number
- CN102713996A CN102713996A CN2010800613636A CN201080061363A CN102713996A CN 102713996 A CN102713996 A CN 102713996A CN 2010800613636 A CN2010800613636 A CN 2010800613636A CN 201080061363 A CN201080061363 A CN 201080061363A CN 102713996 A CN102713996 A CN 102713996A
- Authority
- CN
- China
- Prior art keywords
- elements
- integers
- unit
- calculated
- less
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 145
- 238000004590 computer program Methods 0.000 title claims description 3
- 238000004364 calculation method Methods 0.000 claims description 1201
- 238000012545 processing Methods 0.000 claims description 417
- 230000008569 process Effects 0.000 claims description 84
- 238000012795 verification Methods 0.000 claims description 35
- 238000013507 mapping Methods 0.000 claims description 29
- 230000002452 interceptive effect Effects 0.000 claims description 16
- YVPYQUNUQOZFHG-UHFFFAOYSA-N amidotrizoic acid Chemical compound CC(=O)NC1=C(I)C(NC(C)=O)=C(I)C(C(O)=O)=C1I YVPYQUNUQOZFHG-UHFFFAOYSA-N 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 36
- 230000015654 memory Effects 0.000 description 10
- 208000011580 syndromic disease Diseases 0.000 description 10
- 238000004891 communication Methods 0.000 description 8
- 238000012360 testing method Methods 0.000 description 8
- 230000008520 organization Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 241001334112 Rugopharynx omega Species 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- OVSKIKFHRZPJSS-UHFFFAOYSA-N 2,4-D Chemical compound OC(=O)COC1=CC=C(Cl)C=C1Cl OVSKIKFHRZPJSS-UHFFFAOYSA-N 0.000 description 1
- RMCCONIRBZIDTH-UHFFFAOYSA-N 2-(2-methylprop-2-enoyloxy)ethyl 1,3-dioxo-2-benzofuran-5-carboxylate Chemical compound CC(=C)C(=O)OCCOC(=O)C1=CC=C2C(=O)OC(=O)C2=C1 RMCCONIRBZIDTH-UHFFFAOYSA-N 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/72—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
- H04L9/3073—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves involving pairings, e.g. identity based encryption [IBE], bilinear mappings or bilinear pairings, e.g. Weil or Tate pairing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2107—File encryption
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2117—User registration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2145—Inheriting rights or properties, e.g., propagation of permissions or restrictions within a hierarchy
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Algebra (AREA)
- Storage Device Security (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
在以多个用户为对象的隐匿检索系统中,密文的大小变小,即使在追加了新的用户的情况下,也无需生成新的密文。公开参数生成装置(100)生成公开参数和主秘密密钥的组。加密装置(400)使用公开参数,对关键字进行加密,生成密文。用户秘密密钥生成装置(200)使用主秘密密钥,生成查询发布装置(300)的用户秘密密钥。查询发布装置(300)使用用户秘密密钥,生成检索关键字的查询。检索装置(500)根据密文和查询,判定是否在检索中命中。
Description
技术领域
本发明涉及在对要检索的关键字加密了的状态下进行检索的隐匿检索系统。
背景技术
有能够在对关键字加密了的状态下进行检索的可检索公开密钥密码技术。在以往的可检索公开密钥密码技术中,使用与用户具有的秘密密钥对应的用户的公开密钥,对关键字进行加密。
另外,在将识别用户的标识符用作公开密钥的基于ID的公开密钥密码方式中,有如下基于通配符ID的公开密钥密码技术,即,仅指定用户标识符的一部分,使具有多个不同的秘密密钥的用户能够解读密文。
【专利文献】
【专利文献1】美国专利4405829号
【非专利文献】
【非专利文献1】D.Boneh、G.D.Crescenzo、R.Ostrovsky、G.Persiano“PublicKeyEncryptionwithKeywordSearch”Eurocrypt2004、506~522页、2004年。
【非专利文献2】Y.H.Hwang、P.J.Lee“PublicKeyEncryptionwithConjunctiveKeywordSearchAndItsExtensiontoaMulti-userSystem”Pairing2007、2~22页、2007年。
【非专利文献3】J.Birkett、A.W.Dent、G.Neven、J.C.N.Schuldt“EfficientChosen-CiphertextSecureIdentity-BasedEncryptionwithWildcards”ACISP2007、LNCS4586、274~292页、2007年。
发明内容
在以往的以往的可检索公开密钥密码技术中,在有多个用户的情况下,需要使用各个用户的公开密钥,对关键字进行加密。因此,密文的大小与所检索的用户的数量成比例。另外,为了追加新的用户,需要使用该用户的公开密钥,新生成密文。
本发明是为了解决例如上述那样的课题而完成的,其目的在于得到一种隐匿检索系统,减小密文的大小,即使在追加了新的用户的情况下,也无需生成新的密文,容易追加用户。
本发明涉及的隐匿检索系统,对关键字进行加密,根据来自具有小于D个的整数Ii作为用户标识符的多个查询发布装置中的至少某一个查询发布装置的要求,检索加密了的状态下的关键字,其中,D是2以上的整数,i是1以上且L以下的整数,L是小于D的任意的整数,Ii是0以上且小于p的整数,p是素数,该隐匿检索系统的特征在于,
具有:公开参数生成装置、加密装置、用户秘密密钥生成装置、查询发布装置、以及检索装置,
所述公开参数生成装置具有处理数据的处理装置、随机数ω选择部、随机数α选择部、随机数β选择部、随机数θ选择部、公开元Ω计算部、公开元a计算部、公开元b计算部、秘密元w计算部、秘密元a计算部、秘密元b计算部、秘密元y计算部、公开参数输出部、以及主秘密密钥输出部,
所述随机数ω选择部使用所述处理装置,从1以上且小于p的整数之中,随机地选择1个整数ω,
所述随机数α选择部使用所述处理装置,从1以上且小于p的整数之中,随机地选择(D+2)个整数αn,n是0以上且D+1以下的整数,
所述随机数β选择部使用所述处理装置,从1以上且小于p的整数之中,随机地选择(D+2)个整数βn,
所述随机数θ选择部使用所述处理装置,从1以上且小于p的整数之中,随机地选择(D+2)×(D+1)个整数θn,l,l是0以上且D以下的整数,
所述公开元a计算部使用所述处理装置,根据位数是所述素数p的乘法群G1的生成元g1、所述随机数α选择部选择出的(D+2)个整数αn、以及所述随机数θ选择部选择出的(D+2)×(D+1)个整数θn,l,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且D以下的(D+1)个整数l的组的(D+2)×(D+1)个组(n,l),分别计算所述生成元g1的(αn×θn,l)次幂,从而计算出作为所述乘法群G1的元的(D+2)×(D+1)个元an,l,
所述公开元b计算部使用所述处理装置,根据所述乘法群G1的生成元g1、所述随机数β选择部选择出的(D+2)个整数βn、以及所述随机数θ选择部选择出的(D+2)×(D+1)个整数θn,l,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且D以下的(D+1)个整数l的组的(D+2)×(D+1)个组(n,l),分别计算所述生成元g1的(βn×θn,l)次幂,从而计算出作为所述乘法群G1的元的(D+2)×(D+1)个元bn,l,
所述秘密元w计算部使用所述处理装置,根据位数是所述素数p的乘法群G2的生成元g2和所述随机数ω选择部选择出的1个整数ω,计算所述生成元g2的ω次幂,从而计算出作为所述乘法群G2的元的1个元w’,
所述公开元Ω计算部使用所述处理装置,根据通过将所述乘法群G1的元和所述乘法群G2的元的组映射到位数是p的乘法群G3的元的双线性配对e来映射所述乘法群G1的生成元g1和所述乘法群G2的生成元g2的组而得到的所述乘法群G3的元g3、以及所述随机数ω选择部选择出的1个整数ω,计算所述元g3的ω次幂,从而计算出作为所述公开乘法群G3的元的1个元Ω,
所述秘密元a计算部使用所述处理装置,根据所述乘法群G2的生成元g2和所述随机数α选择部选择出的(D+2)个整数αn,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述生成元g2的αn次幂,从而计算出作为所述乘法群G2的元的(D+2)个元a’n,
所述秘密元b计算部根据所述乘法群G2的生成元g2和所述随机数β选择部选择出的(D+2)个整数βn,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述生成元g2的βn次幂,从而计算出作为所述乘法群G2的元的(D+2)个元b’n,
所述秘密元y计算部使用所述处理装置,根据所述乘法群G2的生成元g2、所述随机数α选择部选择出的(D+2)个整数αn、所述随机数β选择部选择出的(D+2)个整数βn、以及所述随机数θ选择部选择出的(D+2)×(D+1)个整数θn,l,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且D以下的(D+2)个整数l的组的(D+2)×(D+1)个组(n,l),分别计算所述生成元g2的(αn×βn×θn, l)次幂,从而计算出作为所述乘法群G2的元的(D+2)×(D+1)个元y’n,l,
所述公开参数输出部使用所述处理装置,作为所述隐匿检索系统中的公开参数,输出所述公开元Ω计算部计算出的1个元Ω、所述公开元a计算部计算出的(D+2)×(D+1)个元an,l、以及所述公开元b计算部计算出的(D+2)×(D+1)个元bn,l,
所述主秘密密钥输出部使用所述处理装置,作为所述隐匿检索系统中的主秘密密钥,输出所述秘密元w计算部计算出的1个元w’、所述秘密元a计算部计算出的(D+2)个元a’n、所述秘密元b计算部计算出的(D+2)个元b’n、以及所述秘密元y计算部计算出的(D+2)×(D+1)个元y’n,l,
所述加密装置具有:存储数据的存储装置、处理数据的处理装置、公开元Ω存储部、公开元a存储部、公开元b存储部、嵌入关键字输入部、权限范围输入部、随机数r选择部、副随机数r选择部、随机数元选择部、验证元计算部、密码元计算部、密码元a计算部、密码元b计算部、密码部分元a计算部、密码部分元b计算部、以及密文输出部,
所述公开元Ω存储部使用所述存储装置,存储所述公开参数生成装置作为公开参数输出的1个元Ω,
所述公开元a存储部使用所述存储装置,存储所述公开参数生成装置作为公开参数输出的(D+2)×(D+1)个元an,l,
所述公开元b存储部使用所述存储装置,存储所述公开参数生成装置作为公开参数输出的(D+2)×(D+1)个元bn,l,
所述嵌入关键字输入部使用所述处理装置,作为加密的关键字,输入0以上且小于p的1个整数W’,
所述权限范围输入部使用所述处理装置,作为指定具有检索关键字的权限的查询发布装置的范围的数据,输入1个整数L’和L”个整数I’j,其中,L’是1以上且小于D的任意的整数,L”是0以上且L’以下的任意的整数,j是从1以上且L’以下的整数之中任意选择出的L”个整数,I’j是0以上且小于p的整数,
所述随机数r选择部使用所述处理装置,从0以上且小于p的整数之中,随机地选择1个整数r,
所述副随机数r选择部使用所述处理装置,从0以上且小于p的整数之中,随机地选择(D+2)个整数rn,
所述随机数元选择部使用所述处理装置,从所述乘法群G3的元之中,随机地选择1个元R,
所述验证元计算部使用所述处理装置,根据所述公开元Ω存储部存储的1个元Ω、所述随机数r选择部选择出的1个整数r、以及所述随机数元选择部选择出的1个元R,计算所述元Ω的(-r)次幂与所述元R之积,从而计算出作为所述乘法群G3的元的1个元E,
所述密码元计算部使用所述处理装置,根据所述乘法群G1的生成元g1和所述随机数r选择部选择出的整数r,计算所述生成元g1的r次幂,从而计算出作为所述乘法群G1的元的1个元c0,
所述密码元a计算部使用所述处理装置,根据所述权限范围输入部输入的1个整数L’和L”个整数I’j、所述公开元b存储部存储的(D+2)×(D+1)个元bn,l中的(D+2)个元bn,0和(D+2)×L”个元bn,l’和(D+2)个元bn,Λ’、所述嵌入关键字输入部输入的1个整数W’、以及所述副随机数r选择部选择出的(D+2)个整数rn,针对作为0以上且(D+1)以下的(D+2)个整数n和所述L”个整数I’j的下标j的组的(D+2)×L”个组(n,j),分别计算所述元bn,j的Ij次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元bn, Λ’的W’次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元bn,0与L”个元bn,j的I’j次幂与元bn,Λ’的W’次幂的总积ΠB,n,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所计算出的总积ΠB,n的rn次幂,从而计算出作为所述乘法群G1的元的(D+2)个元cn,(a),其中,Λ’是从大于L’且D以下整数之中选择出的1个整数,
所述密码元b计算部使用所述处理装置,根据所述权限范围输入部输入的1个整数L’和L”个整数I’j、所述公开元a存储部存储的(D+2)×(D+1)个元an,l中的(D+2)个元an,0和(D+2)×L”个元an,j’和(D+2)个元an,Λ’、所述嵌入关键字输入部输入的1个整数W’、所述随机数r选择部选择出的1个整数r、以及所述副随机数r选择部选择出的(D+2)个整数rn,针对作为0以上且(D+1)以下的(D+2)个整数n和所述L”个整数I’j的下标j的组的(D+2)×L”个组(n,j),分别计算所述元an,j的Ij次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元an,Λ’的W’次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元an,0与L”个元an,j的I’j次幂与元an,Λ’的W’次幂的总积ΠA,n,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所计算出的总积ΠA,n的(r-rn)次幂,从而计算出作为所述乘法群G1的元的(D+2)个元cn,(b),
所述密码部分元a计算部使用所述处理装置,根据所述权限范围输入部输入的1个整数L’和L”个整数I’j的下标j、所述公开元b存储部存储的(D+2)×(D+1)个元bn,l中的(D+2)×(L’-L”)个元bn,j’、以及所述副随机数r选择部选择出的(D+2)个整数rn,针对作为0以上且(D+1)以下的(D+2)个整数n和1以上且L’以下的整数中的除了所述L”个下标j以外的(L’-L”)个整数j’的组的(D+2)×(L’-L”)个组(n,j’),分别计算所述元bn,j’的rn次幂,从而计算出作为所述乘法群G1的元的(D+2)×(L’-L”)个元cn,j’, (a),其中,j’是1以上且L’以下的整数中的除了所述L”个下标j以外的(L’-L”)个整数,
所述密码部分元b计算部使用所述处理装置,根据所述权限范围输入部输入的1个整数L’和L”个整数I’j的下标j、所述公开元a存储部存储的(D+2)×(D+1)个元an,l中的(D+2)×(L’-L”)个元an,j’、所述随机数r选择部选择出的1个整数r、以及所述副随机数r选择部选择出的(D+2)个整数rn,针对作为0以上且(D+1)以下的(D+2)个整数n和1以上且小于L’的整数中的除了所述L”个下标j以外的(L’-L”)个整数j’的组的(D+2)×(L’-L”)个组(n,j’),分别计算所述元bn,j’的(r-rn)次幂,从而计算出作为所述乘法群G1的元的(D+2)×(L’-L”)个元cn,j’,(b),
所述密文输出部使用所述处理装置,作为将所述整数W’嵌入为关键字的密文,输出所述随机数元选择部选择出的1个元R、所述验证元计算部计算出的1个元E、所述密码元计算部计算出的1个元c0、所述密码元a计算部计算出的(D+2)个元cn,(a)、所述密码元b计算部计算出的(D+2)个元cn,(b)、所述密码部分元a计算部计算出的(D+2)×(L’-L”)个元cn,j’,(a)、以及所述密码部分元b计算部计算出的(D+2)×(L’-L”)个元cn,j’,(b),
所述用户秘密密钥生成装置具有存储数据的存储装置、处理数据的处理装置、秘密元w存储部、秘密元a存储部、秘密元b存储部、秘密元y存储部、用户标识符输入部、随机数ρ选择部、副随机数ρ选择部、总积元Y计算部、检索元计算部、检索元a计算部、检索元b计算部、干扰元计算部、干扰元a计算部、干扰元b计算部、委任元计算部、副委任元计算部、以及用户秘密密钥输出部,
所述秘密元w存储部使用所述存储装置,存储所述公开参数生成装置作为主秘密密钥输出的1个元w’,
所述秘密元a存储部使用所述存储装置,存储所述公开参数生成装置作为主秘密密钥输出的(D+2)个元a’n,
所述秘密元b存储部使用所述存储装置,存储所述公开参数生成装置作为主秘密密钥输出的(D+2)个元b’n,
所述秘密元y存储部使用所述存储装置,存储所述公开参数生成装置作为主秘密密钥输出的(D+2)×(D+1)个元y’n,l,
所述用户标识符输入部使用所述处理装置,针对所述多个查询发布装置中的要求生成用户秘密密钥的查询发布装置,作为所述查询发布装置的用户标识符,输入L个整数Ii,
所述随机数ρ选择部使用所述处理装置,从0以上且小于p的整数之中,随机地选择(D+2)个整数ρn,
所述副随机数ρ选择部使用所述处理装置,从0以上且小于p的整数之中,随机地选择(D+2)×(D+2)个整数ρn,m,m是0以上且D+1以下的整数,
所述总积元Y计算部使用所述处理装置,根据所述用户标识符输入部输入的L个整数Ii、以及所述秘密元y存储部存储的(D+2)×(D+1)个元y’n,l中的(D+2)个元y’n,0和(D+2)×L个元y’n,i,针对作为0以上且(D+1)以下的(D+2)个整数n和1以上且L以下的(D+1)个整数i的组的(D+2)×(D+1)个组(n,i),分别计算所述元y’n, i的Ii次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元y’n,0与L个元y’n,i的Ii次幂的总积,从而计算出作为所述乘法群G2的元的(D+2)个元ΠY,n,
所述检索元计算部使用所述处理装置,根据所述秘密元w存储部存储的1个元w’、所述随机数ρ选择部选择出的(D+2)个整数ρn、以及所述总积元Y计算部计算出的(D+2)个元ΠY,n,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元ΠY,n的ρn次幂,计算所述元w’与(D+2)个元ΠY,n的ρn次幂的总积,从而计算出作为所述乘法群G2的元的1个元k0,
所述检索元a计算部使用所述处理装置,根据所述秘密元a存储部存储的(D+2)个元a’n和所述随机数ρ选择部选择出的(D+2)个整数ρn,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元a’n的(-ρn)次幂,从而计算出作为所述乘法群G2的元的(D+2)个元kn,(a),
所述检索元b计算部使用所述处理装置,根据所述秘密元b存储部存储的(D+2)个元b’n和所述随机数ρ选择部选择出的(D+2)个整数ρn,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元b’n的(-ρn)次幂,从而计算出作为所述乘法群G2的元的(D+2)个元kn,(b),
所述干扰元计算部使用所述处理装置,根据所述副随机数ρ选择部选择出的(D+2)×(D+2)个整数ρn,m和所述总积元Y计算部计算出的(D+2)个元ΠY,n,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算所述元ΠY,n的ρn,m次幂,针对0以上且(D+1)以下的(D+2)个整数m,分别计算(D+2)个元ΠY, n的ρn,m次幂的总积,从而计算出作为所述乘法群G2的元的(D+2)个元fm,0,
所述干扰元a计算部使用所述处理装置,根据所述秘密元a存储部存储的(D+2)个元a’n和所述副随机数ρ选择部选择出的(D+2)×(D+2)个整数ρn,m,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算所述元a’n的(-ρn,m)次幂,从而计算出作为所述乘法群G2的元的(D+2)×(D+2)个元fm,n,(a),
所述干扰元b计算部使用所述处理装置,根据所述秘密元b存储部存储的(D+2)个元b’n和所述副随机数ρ选择部选择出的(D+2)×(D+2)个整数ρn,m,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算所述元b’n的(-ρn,m)次幂,从而计算出作为所述乘法群G2的元的(D+2)×(D+2)个元fm,n,(b),
所述委任元计算部使用所述处理装置,根据所述秘密元y存储部存储的(D+2)×(D+1)个元y’n,l中的(D+2)个元y’n,Λ、和所述随机数ρ选择部选择出的(D+2)个整数ρn,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元y’n,Λ的ρn次幂,计算(D+2)个元y’n,j的ρn次幂的总积,从而计算出作为所述乘法群G2的元的1个元hΛ,其中,Λ是从大于L且D以下的整数之中选择出的1个整数,
所述副委任元计算部使用所述处理装置,根据所述秘密元y存储部存储的(D+2)×(D+1)个元y’n,l中的(D+2)个元y’n,Λ、和所述副随机数ρ选择部选择出的(D+2)×(D+2)个整数ρn,m,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算所述元y’n,Λ的ρn,m次幂,针对0以上且(D+1)以下的(D+2)个整数m,分别计算(D+2)个元y’n,Λ的ρn,m次幂的总积,从而计算出作为所述乘法群G2的元的(D+2)个元hm,Λ,
所述用户秘密密钥输出部使用所述处理装置,作为所述查询发布装置的用户秘密密钥,输出所述检索元计算部计算出的1个元k0与所述检索元a计算部计算出的(D+2)个元kn,(a)与所述检索元b计算部计算出的(D+2)个元kn,(b)与所述干扰元计算部计算出的(D+2)个元fm,0与所述干扰元a计算部计算出的(D+2)×(D+2)个元fm,n, (a)与所述干扰元b计算部计算出的(D+2)×(D+2)个元fm,n,(b)与所述委任元计算部计算出的1个元hΛ与所述副委任元计算部计算出的(D+2)个元hm,Λ的组,
所述查询发布装置具有:存储数据的存储装置、处理数据的处理装置、用户标识符存储部、检索元存储部、检索元a存储部、检索元b存储部、干扰元存储部、干扰元a存储部、干扰元b存储部、委任元存储部、副委任元存储部、检索关键字输入部、随机数π选择部、质询元计算部、质询元a计算部、质询元b计算部、以及查询输出部,
所述用户标识符存储部使用所述存储装置,作为所述查询发布装置的用户标识符,存储L个整数Ii,
所述检索元存储部使用所述存储装置,存储所述用户秘密密钥生成装置作为所述查询发布装置的用户秘密密钥输出的1个元k0,
所述检索元a存储部使用所述存储装置,存储所述用户秘密密钥生成装置作为所述查询发布装置的用户秘密密钥输出的(D+2)个元kn,(a),n是0以上且D+1以下的整数,
所述检索元b存储部使用所述存储装置,存储所述用户秘密密钥生成装置作为所述查询发布装置的用户秘密密钥输出的(D+2)个元kn,(b),
所述干扰元存储部使用所述存储装置,存储所述用户秘密密钥生成装置作为所述查询发布装置的用户秘密密钥输出的(D+2)个元fm, 0,m是0以上且D+1以下的整数,
所述干扰元a存储部使用所述存储装置,存储所述用户秘密密钥生成装置作为所述查询发布装置的用户秘密密钥输出的(D+2)×(D+2)个元fm,n,(a),
所述干扰元b存储部使用所述存储装置,存储所述用户秘密密钥生成装置作为所述查询发布装置的用户秘密密钥输出的(D+2)×(D+2)个元fm,n,(b),
所述委任元存储部使用所述存储装置,存储所述用户秘密密钥生成装置作为所述查询发布装置的用户秘密密钥输出的1个元hΛ,
所述副委任元存储部使用所述存储装置,存储所述用户秘密密钥生成装置作为所述查询发布装置的用户秘密密钥输出的(D+2)个元hm,Λ,
所述检索关键字输入部使用所述处理装置,作为检索的关键字,输入0以上且小于p的1个整数W,
所述随机数π选择部使用所述处理装置,从0以上且小于p的整数之中,随机地选择(D+2)个整数πm,
所述质询元计算部使用所述处理装置,根据所述检索元存储部存储的1个元k0、所述干扰元存储部存储的(D+2)个元fm,0、所述委任元存储部存储的1个元hΛ、所述副委任元存储部存储的(D+2)个元hm,Λ、所述检索关键字输入部输入的1个整数W、以及所述随机数π选择部选择出的(D+2)个整数πm,针对0以上且(D+1)以下的(D+2)个整数m,分别计算所述元hm,Λ的πm次幂,计算所述元hΛ与(D+2)个元hm,Λ的πm次幂的总积ΠH,针对0以上且(D+1)以下的(D+2)个整数m,分别计算所述元fm,0的πm次幂,计算所述总积ΠH的W次幂,计算所述元k0与(D+2)个元fm,0的πm次幂与总积ΠH的W次幂的总积,从而计算出作为所述乘法群G2的元的1个元k’0,
所述质询元a计算部使用所述处理装置,根据所述检索元a存储部存储的(D+2)个元kn,(a)、所述干扰元a存储部存储的(D+2)×(D+2)个元fm,n,(a)、以及所述随机数π选择部选择出的(D+2)个整数πm,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算所述元fm,n,(a)的πm次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元kn,(a)与(D+2)个元fm, n,(a)的πm次幂的总积,从而计算出作为所述乘法群G2的元的(D+2)个元k’n,(a),
所述质询元b计算部使用所述处理装置,根据所述检索元b存储部存储的(D+2)个元kn,(b)、所述干扰元b存储部存储的(D+2)×(D+2)个元fm,n,(b)、以及所述随机数π选择部选择出的(D+2)个整数πm,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算所述元fm,n,(b)的πm次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元kn,(b)与(D+2)个元fm, n,(b)的πm次幂的总积,从而计算出作为所述乘法群G2的元的(D+2)个元k’n,(b),
所述查询输出部使用所述处理装置,输出所述用户标识符存储部存储的L个整数Ii与所述质询元计算部计算出的1个元k’0与所述质询元a计算部计算出的(D+2)个元k’n,(a)与所述质询元b计算部计算出的(D+2)个元k’n,(b)的组,作为用于将所述整数W作为关键字而进行检索的查询,
所述检索装置具有:存储数据的存储装置、处理数据的处理装置、密文存储部、查询输入部、配对元计算部、配对元A计算部、配对元B计算部、比较元计算部、以及比较部,
所述密文存储部使用所述存储装置,作为嵌入有关键字的密文,存储所述加密装置输出的密文中包含的1个元R与1个元E与1个元c0与(D+2)个元cn,(a)与(D+2)个元cn,(b)与(D+2)×(L’-L”)个元cn,j’,(a)与(D+2)×(L’-L”)个元cn,j’,(b)的组,
所述查询输入部使用所述处理装置,作为检索关键字的查询,输入所述查询发布装置输出的L个整数Ii与1个元k’0与(D+2)个元k’n, (a)与(D+2)个元k’n,(b)的组,
所述配对元计算部使用所述处理装置,根据所述密文存储部存储的密文中包含的1个元c0和所述查询输入部输入的查询中包含的1个元k’0,通过所述双线性配对e来映射所述元c0和所述元k’0的组,从而计算出作为所述乘法群G3的元的1个元e0,
所述配对元A计算部使用所述处理装置,根据所述密文存储部存储的密文中包含的(D+2)个元cn,(a)和(D+2)×(L’-L”)个元cn, j’,(a)、以及所述查询输入部输入的查询中包含的L个整数Ii和(D+2)个元k’n,(a),针对作为0以上且(D+1)以下的(D+2)个整数n和所述(D+2)×(L’-L”)个元cn,j’,(a)的下标即(L’-L”)个整数j’中的1以上且L以下的LA个整数i’的组的(D+2)×LA个组(n,i’),分别计算元cn,i’,(a)的I-i’次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元cn,(a)与LA个元cn,i’,(a)的I-i’次幂的总积ΠA’,n,针对0以上且(D+1)以下的(D+2)个整数n,分别通过所述双线性配对e来映射所述总积ΠA’,n和所述元k’n,(a)的组,从而计算出作为所述乘法群G3的元的(D+2)个元eA,n,
所述配对元B计算部使用所述处理装置,根据所述密文存储部存储的密文中包含的(D+2)个元cn,(b)和(D+2)×(L’-L”)个元cn, j’,(b)、以及所述查询输入部输入的查询中包含的L个整数Ii和(D+2)个元k’n,(b),针对作为0以上且(D+1)以下的(D+2)个整数n和所述(D+2)×(L’-L”)个元cn,j’,(b)的下标即(L’-L”)个整数j’中的1以上且L以下的LA个整数i’的组的(D+2)×LA个组(n,i’),分别计算元cn,i’,(b)的I-i’次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元cn,(b)与LA个元cn,i’,(b)的I-i’次幂的总积ΠB’,n,针对0以上且(D+1)以下的(D+2)个整数n,分别通过所述双线性配对e来映射所述总积ΠB’,n和所述元k’n,(b)的组,从而计算出作为所述乘法群G3的元的(D+2)个元eB,n,
所述比较元计算部使用所述处理装置,根据所述密文存储部存储的密文中包含的1个元E、所述配对元计算部计算出的1个元e0、所述配对元A计算部计算出的(D+2)个元eA,n、以及所述配对元B计算部计算出的(D+2)个元eB,n,计算所述元E与所述元e0与(D+2)个元eA,n与(D+2)个元eB,n的总积,从而计算出作为所述乘法群G3的元的1个元R’,
所述比较部使用所述处理装置,比较所述密文存储部存储的密文中包含的1个元R和所述比较元计算部计算出的1个元R’,在元R和元R’一致的情况下,判定为在检索中命中。
本发明涉及的隐匿检索系统的特征在于,进而,
所述委任元计算部使用所述处理装置,根据所述秘密元y存储部存储的(D+2)×(D+1)个元y’n,l中的(D+2)×(D’-L)个元y’n, λ、和所述随机数ρ选择部选择出的(D+2)个整数ρn,针对作为0以上且(D+1)以下的(D+2)个整数n和大于L且D’以下的(D’-L)个整数λ的组的(D+2)×(D’-L)个组(n,λ),分别计算所述元y’n,λ的ρn次幂,针对大于L且D’以下的(D’-L)个整数λ,分别计算(D+2)个元y’n,λ的ρn次幂的总积,从而计算出作为所述乘法群G2的元的(D’-L)个元hλ,其中,D’是大于L且D以下的整数,λ是大于L且D’以下的整数,
所述副委任元计算部使用所述处理装置,根据所述秘密元y存储部存储的(D+2)×(D+1)个元y’n,l中的(D+2)×(D’-L)个元y’n, λ、和所述副随机数ρ选择部选择出的(D+2)×(D+2)个整数ρn,m,针对作为0以上且(D+1)以下的(D+2)个整数n与0以上且(D+1)以下的(D+2)个整数m与大于L且D’以下的(D’-L)个整数λ的组的(D+2)×(D+2)×(D’-L)个组(n,m,λ),分别计算所述元y’n,λ的ρn,m次幂,针对作为0以上且(D+1)以下的(D+2)个整数m和大于L且D’以下的(D’-L)个整数λ的组的(D+2)×(D’-L)个组(m,λ),分别计算(D+2)个元y’n,λ的ρn,m次幂的总积,从而计算出作为所述乘法群G2的元的(D+2)×(D’-L)个元hm,λ,
所述用户秘密密钥输出部使用所述处理装置,作为所述查询发布装置的用户秘密密钥,输出所述检索元计算部计算出的1个元k0与所述检索元a计算部计算出的(D+2)个元kn,(a)与所述检索元b计算部计算出的(D+2)个元kn,(b)与所述干扰元计算部计算出的(D+2)个元fm,0与所述干扰元a计算部计算出的(D+2)×(D+2)个元fm,n, (a)与所述干扰元b计算部计算出的(D+2)×(D+2)个元fm,n,(b)与所述委任元计算部计算出的(D’-L)个元hλ与所述副委任元计算部计算出的(D+2)×(D’-L)个元hm,λ的组,
所述查询发布装置还具有:子用户标识符输入部、副随机数π选择部、子检索元计算部、子干扰元计算部、子干扰元a计算部、子干扰元b计算部、子委任元计算部、子副委任元计算部、以及子用户秘密密钥输出部,
所述委任元存储部使用所述存储装置,存储所述用户秘密密钥生成装置作为所述查询发布装置的用户秘密密钥输出的(D’-L)个元hλ,
所述副委任元存储部使用所述存储装置,存储所述用户秘密密钥生成装置作为所述查询发布装置的用户秘密密钥输出的(D+2)×(D’-L)个元hm,λ,
所述子用户标识符输入部使用所述处理装置,输入0以上且小于p的1个整数IL+1,
所述副随机数π选择部使用所述处理装置,从0以上且小于p的整数之中,随机地选择(D+2)×(D+2)个整数πm,m’-,m’是0以上且D+1以下的整数-,
所述子检索元计算部使用所述处理装置,根据所述检索元存储部存储的1个元k0、所述干扰元存储部存储的(D+2)个元f-m,0、所述委任元存储部存储的(D’-L)个元hλ中的1个元hL+1、所述副委任元存储部存储的(D+2)×(D’-L)个元hm,λ中的(D+2)个元hm, L+1、所述随机数π选择部选择出的(D+2)个整数πm-、以及所述子用户标识符输入部输入的整数IL+1,针对0以上且(D+1)以下的(D+2)个整数m,分别计算所述元hm,L+1的πm次幂,计算所述元hL+1与(D+2)个元hm,L+1的πm次幂的总积ΠH,针对0以上且(D+1)以下的(D+2)个整数m,分别计算所述元f-m,0的πm次幂,计算所述总积ΠH的IL+1次幂,计算所述元k0与(D+2)个元f-m,0的πm次幂与总积ΠH的IL+1次幂的总积,从而计算出作为所述乘法群G2的元的1个元k”0,
所述子干扰元计算部使用所述处理装置,根据所述干扰元存储部存储的(D+2)个元fm,0、所述副委任元存储部存储的(D+2)×(D’-L)个元hm,λ中的(D+2)个元hm,L+1、以及所述副随机数π选择部选择出的(D+2)×(D+2)个整数πm,m’,针对作为0以上且(D+1)以下的(D+2)个整数m和0以上且(D+1)以下的(D+2)个整数m’的组的(D+2)×(D+2)个组(m,m’),分别计算所述元fm,0的πm,m’次幂、以及所述元hm,L+1的πm,m’次幂,针对0以上且(D+1)以下的(D+2)个整数m’,分别计算(D+2)个元hm,L+1的πm,m’次幂的总积ΠH,m’,针对0以上且(D+1)以下的(D+2)个整数m’,分别计算(D+2)个元fm,0的πm,m’次幂与所述总积ΠH,m’的IL+1次幂的总积,从而计算出作为所述乘法群G2的元的(D+2)个元fm’,0,
所述子干扰元a计算部使用所述处理装置,根据所述干扰元a存储部存储的(D+2)×(D+2)个元fm,n,(a)和所述副随机数π选择部选择出的(D+2)×(D+2)个整数πm,m’,针对作为0以上且(D+1)以下的(D+2)个整数n与0以上且(D+1)以下的(D+2)个整数m与0以上且(D+1)以下的(D+2)个整数m’的组的(D+2)×(D+2)×(D+2)个(n,m,m’),分别计算所述元fm,n,(a)的πm,m’次幂,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m’的组的(D+2)×(D+2)个(n,m’),分别计算(D+2)个元fm,n,(a)的πm,m’次幂的总积,从而计算出作为所述乘法群G2的元的(D+2)×(D+2)个元f’m’,n,(a),
所述子干扰元b计算部使用所述处理装置,根据所述干扰元b存储部存储的(D+2)×(D+2)个元fm,n,(b)和所述副随机数π选择部选择出的(D+2)×(D+2)个整数πm,m’,针对作为0以上且(D+1)以下的(D+2)个整数n与0以上且(D+1)以下的(D+2)个整数m与0以上且(D+1)以下的(D+2)个整数m’的组的(D+2)×(D+2)×(D+2)个(n,m,m’),分别计算所述元fm,n,(b)的πm,m’次幂,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m’的组的(D+2)×(D+2)个(n,m’),分别计算(D+2)个元fm,n,(b)的πm,m’次幂的总积,从而计算出作为所述乘法群G2的元的(D+2)×(D+2)个元f’m’,n,(b),
所述子委任元计算部使用所述处理装置,根据所述委任元存储部存储的(D’-L)个元hλ中的(D”-L-1)个元hλ’、所述副委任元存储部存储的(D+2)×(D’-L)个元hm,λ中的(D+2)×(D”-L-1)个元hm,λ’、以及所述随机数π选择部选择出的(D+2)个整数πm,针对作为0以上且(D+1)以下的(D+2)个整数m和大于(L+1)且D”以下的(D”-L-1)个整数λ’的组的(D+2)×(D”-L-1)个组(m,λ’),分别计算所述元hm,λ’的πm次幂,针对大于(L+1)且D”以下的(D”-L-1)个整数λ’,分别计算所述元hλ’和(D+2)个元hm,λ’的πm次幂的总积,从而计算出作为所述乘法群G2的元的(D”-L-1)个元h’λ’,其中,D”是大于(L+1)且D’以下的整数,λ’是大于(L+1)且D”以下的整数,
所述子副委任元计算部使用所述处理装置,根据所述副委任元存储部存储的(D+2)×(D’-L)个元hm,λ中的(D+2)×(D”-L-1)个元hm,λ’、和所述副随机数π选择部选择出的(D+2)×(D+2)个整数πm,m’,针对作为0以上且(D+1)以下的(D+2)个整数m与0以上且(D+1)以下的(D+2)个整数m’与大于L且D”以下的(D”-L-1)个整数j’的组的(D+2)×(D+2)×(D”-L-1)个组(m,m’,λ’),分别计算所述元hm,λ’的πm,m’次幂,针对作为0以上且(D+1)以下的(D+2)个整数m’和大于L且D”以下的(D”-L-1)个整数λ’的组的(D+2)×(D”-L-1)个组(m,m’,λ’),分别计算(D+2)个元hm,λ’的πm,m’次幂的总积,从而计算出作为所述乘法群G2的元的(D+2)×(D”-L-1)个元h’m’,λ’,
所述子用户秘密密钥输出部,作为具有所述用户标识符存储部存储的L个整数Ii和所述子用户标识符输入部输入的1个整数IL+1而作为用户标识符的其他查询发布装置的用户秘密密钥,输出所述子检索元计算部计算出的1个元k”0与所述质询元a计算部计算出的(D+2)个元k’n,(a)与所述质询元b计算部计算出的(D+2)个元k’n,(b)与所述子干扰元计算部计算出的(D+2)个元f’m’,0与所述子干扰元a计算部计算出的(D+2)×(D+2)个元f’m’,n,(a)与所述子干扰元b计算部计算出的(D+2)×(D+2)个元f’m’,n,(b)与所述子委任元计算部计算出的(D”-L-1)个元h’λ’与所述子副委任元计算部计算出的(D+2)×(D”-L-1)个元h’m’,λ’的组。
根据本发明,生成仅指定了用户标识符的一部分的密文,并由指定的部分一致的多个用户能够生成能检索该密文的查询,所以密文的大小变小,即使在追加了新的用户的情况下,也无需生成新的密文。
附图说明
图1是示出实施方式1中的隐匿检索系统800的整体结构的一个例子的系统结构图。
图2是示出实施方式1中的用户ID600a~600n的一个例子的图。
图3是示出实施方式1中的权限范围610的指定方式的一个例子的图。
图4是示出实施方式1中的公开参数生成装置100、用户秘密密钥生成装置200、查询发布装置300、加密装置400、检索装置500的外观的一个例子的立体图。
图5是示出实施方式1中的公开参数生成装置100、用户秘密密钥生成装置200、查询发布装置300、加密装置400、检索装置500的硬件资源的一个例子的图。
图6是示出实施方式1中的公开参数生成装置100的功能块的结构的一个例子的框结构图。
图7是示出实施方式1中的公开参数生成处理S630的流程的一个例子的流程图。
图8是示出实施方式1中的用户秘密密钥生成装置200的功能块的结构的一个例子的框结构图。
图9是示出实施方式1中的用户秘密密钥生成处理S660的流程的一个例子的流程图。
图10是示出实施方式1中的查询发布装置300的功能块的结构的一个例子的框结构图。
图11是示出实施方式1中的查询发布装置300中的用户秘密密钥存储部320/共同处理部330/查询生成部350的详细的框结构的一个例子的详细框图。
图12是示出实施方式1中的共同处理S710的流程的一个例子的流程图。
图13是示出实施方式1中的查询生成处理S730的流程的一个例子的流程图。
图14是示出实施方式1中的查询发布装置300中的子用户秘密密钥生成部370的详细的框结构的一个例子的详细框图。
图15是示出实施方式1中的子用户秘密密钥生成处理S740的流程的一个例子的流程图。
图16是示出实施方式1中的加密装置400的功能块的结构的一个例子的框结构图。
图17是示出实施方式1中的加密装置400中的、公开参数存储部420、权限范围存储部430、密文生成部450的详细结构的一个例子的详细框图。
图18是示出实施方式1中的密文生成处理S850的流程的一个例子的流程图。
图19是示出实施方式1中的检索装置500的功能块的结构的一个例子的框结构图。
图20是示出实施方式1中的检索装置500中的密文存储部530、查询存储部540、检索部550的详细结构的一个例子的详细框图。
图21是示出实施方式1中的比较元生成处理S880的流程的一个例子的流程图。
图22是示出实施方式2中的隐匿检索系统800的整体结构的一个例子的系统结构图。
图23是示出实施方式2中的查询发布装置300的功能块的结构的一个例子的框结构图。
图24是示出实施方式2中的加密装置400的功能块的结构的一个例子的框结构图。
图25是示出实施方式2中的加密装置400中的、公开参数存储部420、密文生成部450的详细的功能块的结构的一个例子的详细框图。
图26是示出实施方式2中的检索装置500中的、公开参数存储部420、密文生成部450的详细的功能块的结构的一个例子的详细框图。
(符号说明)
100:公开参数生成装置;111:第一生成元选择部;112:第二生成元选择部;121:随机数ω选择部;122:随机数α选择部;123:随机数β选择部;124:随机数θ选择部;131:公开元Ω计算部;132:公开元a计算部;133:公开元b计算部;141:秘密元w计算部;142:秘密元a计算部;143:秘密元b计算部;144:秘密元y计算部;151:公开参数输出部;152:主秘密密钥输出部;200:用户秘密密钥生成装置;211:主秘密密钥输入部;212:秘密元w存储部;213:秘密元a存储部;214:秘密元b存储部;215:秘密元y存储部;221:用户标识符输入部;222:标识符存储部;223:用户秘密密钥输出部;231:随机数ρ选择部;232:副随机数ρ选择部;233:总积元Y计算部;241:检索元计算部;242:检索元a计算部;243:检索元b计算部;251:干扰元计算部;252:干扰元a计算部;253:干扰元b计算部;261:委任元计算部;262:副委任元计算部;300:查询发布装置;311:用户标识符存储部;312:用户秘密密钥要求输出部;313:用户秘密密钥输入部;320:用户秘密密钥存储部;321:检索元存储部;322:检索元a存储部;323:检索元b存储部;324:干扰元存储部;325:干扰元a存储部;326:干扰元b存储部;327:委任元存储部;328:副委任元存储部;330:共同处理部;331:随机数π选择部;332:总积元F计算部;333:总积元H计算部;334:质询元a计算部;335:质询元b计算部;341:检索关键字输入部;342:检索关键字存储部;343:查询输出部;344:结果输入部;345:结果输出部;350:查询生成部;351:质询元计算部;361:子用户标识符输入部;362:子用户标识符存储部;363:子用户秘密密钥输出部;370:子用户秘密密钥生成部;371:副随机数π选择部;372:子检索元计算部;373:子总积元F计算部;374:子总积元H计算部;375:子干扰元计算部;376:子干扰元a计算部;377:子干扰元b计算部;378:子委任元计算部;379:子副委任元计算部;400:加密装置;411:公开参数输入部;412:权限范围输入部;413:嵌入关键字输入部;414:密文输出部;420:公开参数存储部;421:第一生成元存储部;422:公开元Ω存储部;423:公开元a存储部;424:公开元b存储部;430:权限范围存储部;431:分节数存储部;432:权限标识符存储部;441:嵌入关键字存储部;450:密文生成部;451:随机数r选择部;452:副随机数r选择部;453:随机数元选择部;456:密码元计算部;457:验证元计算部;461:总积元A计算部;462:总积元B计算部;463:密码元a计算部;464:密码元b计算部;465:密码部分元a计算部;466:密码部分元b计算部;500:检索装置;511:密文输入部;521:查询输入部;522:检索结果输出部;530:密文存储部;531:分节数存储部;532:随机数元存储部;533:验证元存储部;534:密码元存储部;535:密码元a存储部;536:密码元b存储部;537:密码部分元a存储部;538:密码部分元b存储部;540:查询存储部;541:质询标识符存储部;542:质询元存储部;543:质询元a存储部;544:质询元b存储部;550:检索部;551:密码总积元A计算部;552:配对元A计算部;553:密码总积元B计算部;554:配对元B计算部;555:配对元计算部;556:比较元计算部;557:比较部;600:用户ID;601~604:部分;610:权限范围;800:隐匿检索系统;810:群组公开密钥生成装置;820:关键字存储装置;830:查询发布装置群;901:显示装置;902:键盘;903:鼠标;904:FDD;905:CDD;906:打印机装置;907:扫描仪装置;910:系统单元;911:CPU;912:总线;913:ROM;914:RAM;915:通信装置;920:磁盘装置;921:OS;922:视窗系统;923:程序群;924:文件群;931:电话;932:传真机;940:因特网;941:网关;942:LAN。
具体实施方式
实施方式1.
使用图1~图21来说明实施方式1。
图1是示出该实施方式中的隐匿检索系统800的整体结构的一个例子的系统结构图。
隐匿检索系统800是检索加密了的数据等无法直接观察内容的数据的系统。隐匿检索系统800代替直接检索数据的内容,而检索与数据对应起来的关键字。与1个数据对应起来的关键字既可以是1个,也可以是多个。隐匿检索系统800预先对关键字进行加密而生成密文。利用者对希望检索的关键字进行加密而生成查询(query)。隐匿检索系统800不对密文、查询进行解密,而判定密文中嵌入的关键字和利用者指定的关键字是否一致。因此,在检索的过程中,不知道与数据对应起来的关键字是什么、利用者检索的关键字是什么。
在隐匿检索系统800中,有多个利用者。利用者分别具有不同的用户标识符(以下称为“用户ID”)。隐匿检索系统800在对关键字进行加密时,能够限定具有检索该关键字的权限的利用者的范围。在查询是来自无检索权限的利用者的查询的情况下,即使检索出的关键字与密文中嵌入的关键字一致,隐匿检索系统800也判定为关键字不一致。
隐匿检索系统800具有群组公开密钥生成装置810、关键字存储装置820、查询发布装置群830、加密装置400、检索装置500。
群组公开密钥生成装置810生成在隐匿检索系统800中使用的密码的公开密钥等公开参数、秘密密钥等。群组公开密钥生成装置810具有公开参数生成装置100、用户秘密密钥生成装置200。
关键字存储装置820存储有应加密的关键字。关键字存储装置820不仅存储关键字,而且还可以存储对应有关键字的数据本身,也可以存储表示对应有关键字的数据的所在地的信息。
加密装置400通过使用群组公开密钥生成装置810生成的公开密钥等公开参数,对关键字存储装置820存储的关键字进行加密,由此生成密文。
检索装置500存储加密装置400生成的密文。检索装置500从查询发布装置300接收查询,检索所存储的密文,将其结果返回给查询发布装置300。
另外,隐匿检索系统800也可以具有多个加密装置400、检索装置500。
查询发布装置群830包括多个查询发布装置300。多个查询发布装置300被层次性地分组。另外,为了区分多个查询发布装置300,有时添加小写字母而称为“查询发布装置300a”、“查询发布装置300b”等。
各利用者具有自己的查询发布装置300。在一个利用者具有多个用户ID的情况下,也可以与多个用户ID对应地具有多个查询发布装置300。或者,也可以在物理上针对每个用户ID切换1台查询发布装置300,而假想地用作多个查询发布装置300。
用户ID被分成多个部分。分节的用户ID的各部分表示利用者的层次性的群组构造。以下,将用户ID被分节的部分的数量表示为L。L是1以上的整数。
用户ID被分节的部分的数量L也可以针对每个用户ID而不同。用户ID被分节的部分的数量L表示层次构造中的查询发布装置300的层次。用户ID被分节的部分的数量L越小,该查询发布装置300位于层次构造的越上位。相逆地,用户ID被分节的部分的数量越大,该查询发布装置300位于层次构造的越下位。
图2是示出该实施方式中的用户ID600a~600n的一个例子的图。
用户ID600a是查询发布装置300a的利用者的用户ID。查询发布装置300a位于层次构造的第1层,所以用户ID600a由1个部分601“ABC”构成。
用户ID600d是查询发布装置300D的利用者的用户ID。查询发布装置300d位于层次构造的第2层,所以用户ID600d被分成2个部分601、602“ABC”“abc”。另外,查询发布装置300d位于查询发布装置300a的下位,所以用户ID600d的第一部分601等于用户ID600a的第一部分601。
这样,用户ID被分节的部分的数量L表示该查询发布装置300位于层次构造的第几层。另外,位于层次构造的下位的查询发布装置300的用户ID包括位于上位的查询发布装置300的用户ID的全部。
该例子中的14台查询发布装置300被大致分成3个群组。第一群组是用户ID的第一部分601为“ABC”的群组。在第一群组中,包括3台查询发布装置300a、300d、600e。第二群组是用户ID的第一部分601为“DEF”的群组。在第二群组中,包括1台查询发布装置300b。第三群组是用户ID的第一部分601为“GHI”的群组。在第三群组中,包括10台查询发布装置300c、300f~300n。
属于第三群组的10台查询发布装置300c、300f~300n被进一步分成3个子群组。第一子群组是用户ID的第二部分602为“abc”的群组。在第一子群组中,包括6台查询发布装置300f、300i、300j、300l~300n。第二子群组是用户ID的第二部分602为“def”的群组。在第二子群组中,包括1台查询发布装置300g。第三子群组是用户ID的第二部分602为“ghi”的群组。在第三子群组中,包括2台查询发布装置300h、300k。
图3是示出该实施方式中的权限范围610的指定方式的一个例子的图。
通过指定用户ID的全部或者一部分,来指定权限范围610。在该例子中,“*”是被称为通配符的特殊的值。通配符表示用户ID的该部分可以是任意值。
例如,权限范围610a意味着,对用户ID的第一部分601是“ABC”、并对用户ID进行分节而得到的部分的数量L是2的查询发布装置300给予检索的权限。通过权限范围610a,2台查询发布装置300d、300e被给予检索的权限。
权限范围610b意味着,对用户ID的第一部分601是“ABC”、并对用户ID进行分节而得到的部分的数量L是1的查询发布装置300给予检索的权限。通过权限范围610b,1台查询发布装置300a被给予检索的权限。
权限范围610c意味着,对用户ID的第一部分601是“GHI”、第二部分602是“abc”、第三部分603是“12”、并对用户ID进行分节而得到的部分的数量L是4的查询发布装置300给予检索的权限。通过权限范围610c,3台查询发布装置300l~300n被给予检索的权限。
权限范围610d意味着,对用户ID的第二部分602是“def”、对用户ID进行分节而得到的部分的数量L是2的查询发布装置300给予检索的权限。通过权限范围610d,2台查询发布装置300e、300g被给予检索的权限。这样,通过仅指定用户ID的途中的部分,还能够横穿群组地给予权限。
权限范围610e意味着,对用户ID的第二部分602是“abc”、对用户ID进行分节而得到的部分的数量L是3的查询发布装置300给予检索的权限。通过权限范围610e,2台查询发布装置300i、300j被给予检索的权限。
权限范围610f意味着,对于对用户ID进行分节而得到的部分的数量L是4的查询发布装置300给予检索的权限。通过权限范围610f,3台查询发布装置300l~300n被给予检索的权限。
权限范围610g意味着,对于对用户ID进行分节而得到的部分的数量L是2的查询发布装置300给予检索的权限。通过权限范围610g,5台查询发布装置300d~300h被给予检索的权限。
图4是示出该实施方式中的公开参数生成装置100、用户秘密密钥生成装置200、查询发布装置300、加密装置400、检索装置500的外观的一个例子的立体图。
公开参数生成装置100、用户秘密密钥生成装置200、查询发布装置300、加密装置400、检索装置500具备系统单元910、CRT(CathodeRay Tube,阴极射线管)、LCD(液晶)等具有显示画面的显示装置901、键盘902(Key Board:K/B)、鼠标903、FDD904(Flexible DiskDrive,软盘驱动器)、高密度盘装置905(CDD)、打印机装置906、扫描仪装置907等硬件资源,它们通过电缆、信号线连接。
系统单元910是计算机,通过电缆与传真机932、电话931连接,并且,经由局域网942(LAN)、网关941而与因特网940连接。
图5是示出该实施方式中的公开参数生成装置100、用户秘密密钥生成装置200、查询发布装置300、加密装置400、检索装置500的硬件资源的一个例子的图。
公开参数生成装置100、用户秘密密钥生成装置200、查询发布装置300、加密装置400、检索装置500具备执行程序的CPU911(CentralProcessing Unit,中央处理单元,还称为中央处理装置、处理装置、运算装置、微处理器、微型计算机、处理器)。CPU911经由总线912而与ROM913、RAM914、通信装置915、显示装置901、键盘902、鼠标903、FDD904、CDD905、打印机装置906、扫描仪装置907、磁盘装置920连接,控制这些硬件设备。也可以代替磁盘装置920,而使用光盘装置、存储卡读写装置等存储装置。
RAM914是易失性存储器的一个例子。ROM913、FDD904、CDD905、磁盘装置920的存储介质是非易失性存储器的一个例子。它们是存储装置或者存储部的一个例子。通信装置915、键盘902、扫描仪装置907、FDD904等是输入部、输入装置的一个例子。
另外,通信装置915、显示装置901、打印机装置906等是输出部、输出装置的一个例子。
通信装置915与传真机932、电话931、LAN942等连接。通信装置915不限于LAN942,而也可以与因特网940、ISDN等WAN(广域网)等连接。在与因特网940或者ISDN等WAN连接的情况下,不需要网关941。
在磁盘装置920中,存储有操作系统921(OS)、视窗系统922、程序群923、文件群924。程序群923的程序由CPU911、操作系统921、视窗系统922执行。
在上述程序群923中,存储有执行在以下叙述的实施方式的说明中说明为“~部”的功能的程序。程序由CPU911读出并执行。
在文件群924中,作为“~文件”、“~数据库”的各项目,存储有在以下叙述的实施方式的说明中说明为“~的判定结果”、“~的计算结果”、“~的处理结果”的信息、数据、信号值、变量值、参数。将“~文件”、“~数据库”存储到盘、存储器等记录介质。通过CPU911,经由读写电路,将盘、存储器等存储介质中存储的信息、数据、信号值、变量值、参数读出到主存储器、高速缓存存储器,用于抽出、检索、参照、比较、运算、计算、处理、输出、印刷、显示等CPU的动作。在抽出、检索、参照、比较、运算、计算、处理、输出、印刷、显示的CPU的动作期间,将信息、数据、信号值、变量值、参数临时存储到主存储器、高速缓存存储器、缓冲存储器。
另外,在以下叙述的实施方式的说明中说明的流程图的箭头的部分主要表示数据、信号的输入输出,数据、信号值被记录到RAM914的存储器、FDD904的软盘、CDD905的高密度盘、磁盘装置920的磁盘、其他光盘、迷你盘、DVD(Digital Versatile Disk,数字多功能盘)等记录介质。另外,数据、信号通过总线912、信号线、电缆、其他传送介质在线传送。
另外,在以下叙述的实施方式的说明中说明为“~部”的部分既可以是“~电路”、“~装置”、“~机器”,并且,也可以是“~阶段”、“~步骤”、“~处理”。即,说明为“~部”的部分也可以通过ROM913中存储的固件实现。或者,也可以仅通过软件、或者、仅通过元件、设备、基板、布线等硬件、或者、通过软件与硬件的组合、进而通过与固件的组合来实施。将固件和软件作为程序,存储到磁盘、软盘、光盘、高密度盘、迷你盘、DVD等记录介质。程序由CPU911读出并由CPU911执行。即,程序用于使计算机作为以下叙述的“~部”发挥功能。或者,使计算机执行以下叙述的“~部”的步骤、方法。
接下来,说明在以下的说明中使用的记号/用语。
将a以上且b以下的整数的集合记载为“[a,b]”。例如,“[1,4]”意味着“{1,2,3,4}”。另外,将a是0的情况特别记载为“[b]”。例如“[2]”意味着“{0,1,2}”。
另外,将(x+1)个Ai(i是0以上x以下的整数)的组(A0,A1,...,Ax)记载为“(Ai)i∈[x]”。
数学上的“群”是指,具有以下的性质的集合与二元运算的组。(1)二元运算将2个元的组映射到1个元。(2)二元运算满足结合法则。(3)存在单位元。(4)在全部元中存在逆元。
在言及群的“二元运算”的情况下,使用与乘法相关的记号、用语。例如,将通过二元运算映射元a与元b的组而作为结果得到的元称为“a与b之积”,使用以下的某一个记号来描述。
【式11】
a b a·b a×b
将群的单位元描述为“1”。另外,使用以下的某一个记号来描述元a的逆元。
【式12】
1/a a-1 a^(-1)
将通过二元运算映射元a与元b的逆元的组而作为结果得到的元称为“a除以b而得到的商”,使用以下的某一个记号来描述。
【式13】
a/b
将通过二元运算反复映射n个相同的元a而作为结果得到的元称为“a的n次幂”,使用以下的某一个记号来描述。
【式14】
an a^n
例如,“a的平方”表示“a·a”,“a的4次幂”表示“a·a·a·a”。
将通过二元运算反复映射n个元a1~an而作为结果得到的元称为“ai的总积”,使用以下的某一个记号来描述。
【式15】
例如,“a1~a4的总积”表示“a1·a2·a3·a4”。另外,“a与b与c的总积”或者“a与b与c之积”表示“a·b·c”。
“乘法群”这样的用语是强调了使用与乘法相关的记号/用语来描述群的二元运算的称法。“乘法群”与“群”的含义相同,并不意味着比任何“群”更限定的对象。
“配对”是指,将乘法群G1的元和乘法群G2的元的组映射到乘法群G3的元的映射。3个乘法群G1、G2、G3既可以是相互不同的群,也可以乘法群G1、G2、G3中的某2个或者全部是相同的群。将通过配对映射了乘法群G1的元g1和乘法群G2的元g2而得到的乘法群G3的元称为“g1与g2的配对”。
“双线性配对”是指具有以下的性质的配对。
(1)双线性性:乘法群G1的元g1的a次幂、与乘法群G2的元g2的b次幂的配对等于元g1与元g2的配对的(a×b)次幂。
(2)非退缩性:如果元g1与元g2的配对是乘法群G3的单位元,则元g1是乘法群G1的单位元,元g2是乘法群G2的单位元。
隐匿检索系统800使用3个乘法群G1、G2、G3。3个乘法群G1、G2、G3的位数是相同的素数p。素数p非常大,例如大于2的160次幂。3个乘法群G1、G2、G3使用存在计算机能够在多项式时间内计算二元运算的算法的群。隐匿检索系统800能够在实用上没有问题的时间内实际地计算群的二元运算。另外,为了确保安全性,3个乘法群G1、G2、G3使用难以求解离散对数问题的群。
另外,隐匿检索系统800使用将乘法群G1的元和乘法群G2的元的组映射到乘法群G3的元的双线性配对e。双线性配对e使用存在计算机能够在多项式时间内计算的算法的配对。隐匿检索系统800能够在实用上没有问题的时间内实际地计算双线性配对e。另外,为了确保安全性,双线性配对e使用难以求解双线性Diffie-Hellman判定问题(Decisional Bilinear Diffie-Hellman Problem,决策双线性Diffie-Hellman问题)的配对。
作为这样的乘法群,已知例如椭圆曲线、其他代数曲线上的点所成的群等,但也可以使用其他群。另外,作为这样的双线性配对,例如已知韦伊配对(Weil pairing)、塔特配对(Tate Pairing)等,但也可以使用其他配对。
另外,在以下的说明中,只要没有特别限定,整数的四则运算意味着,由以素数p为模的剩余类构成的有限域Zp上的四则运算。通过在进行了与通常的整数的加法、减法、乘法相同的运算之后求解以p为模的余数,由此计算加法、减法、乘法。通过在乘以有限域Zp中的倒数之后求解以p为模的余数,由此计算除法。
图6是示出该实施方式中的公开参数生成装置100的功能块的结构的一个例子的框结构图。
公开参数生成装置100生成在隐匿检索系统800中使用的公开密钥和主秘密密钥的对。为了加密装置400对关键字进行加密而使用公开密钥。公开密钥是告诉第三者也可以的信息,一般被公开。为了用户秘密密钥生成装置200生成用户秘密密钥而使用主秘密密钥。主秘密密钥是不能告诉第三者的信息,秘密地保管。
公开参数生成装置100具有第一生成元选择部111、第二生成元选择部112、随机数ω选择部121、随机数α选择部122、随机数β选择部123、随机数θ选择部124、公开元Ω计算部131、公开元a计算部132、公开元b计算部133、秘密元w计算部141、秘密元a计算部142、秘密元b计算部143、秘密元y计算部144。
第一生成元选择部111使用CPU911,从乘法群G1的生成元之中均匀随机地选择1个生成元。以下,将第一生成元选择部111选择出的生成元称为“g1”。第一生成元选择部111使用RAM914,存储表示所选择出的1个生成元g1的数据。
第二生成元选择部112使用CPU911,从乘法群G2的生成元之中均匀随机地选择1个生成元。以下,将第二生成元选择部112选择出的生成元称为“g2”。第二生成元选择部112使用RAM914,存储表示所选择出的1个生成元g2的数据。
随机数ω选择部121使用CPU911,从1以上且小于p的整数之中均匀随机地选择1个整数。以下,将随机数ω选择部121选择出的整数称为“ω”。随机数ω选择部121使用RAM914,存储表示所选择出的1个整数ω的数据。
随机数α选择部122使用CPU911,从1以上且小于p的整数之中均匀随机地选择(D+2)个整数。此处,D是对分节了用户ID的数量L的最大值加上了1的整数。以下,将随机数α选择部122选择出的(D+2)个整数称为“αn”。n是0以上且(D+1)以下的整数。随机数α选择部122使用RAM914,存储表示所选择出的(D+2)个整数an的数据。
例如,在使用图2所示的用户ID的情况下,分节了用户ID的数量L的最大值是4,所以D是5。因此,随机数α选择部122选择7个整数α0,α1,α2,…,α6。
随机数β选择部123使用CPU911,从1以上且小于p的整数之中均匀随机地选择(D+2)个整数。以下,将随机数β选择部123选择出的(D+2)个整数称为“βn”。n是0以上且(D+1)以下的整数。随机数β选择部123使用RAM914,存储表示选择出的(D+2)个整数bn的数据。
随机数θ选择部124使用CPU911,从1以上且小于p的整数之中均匀随机地选择(D+2)×(D+1)个整数。以下,将随机数θ选择部124选择出的(D+2)×(D+1)个整数称为“θn,l”。n是0以上且(D+1)以下的整数。l(字母l)是0以上且D以下的整数。例如,在D是5的情况下,随机数θ选择部124选择7×6=42个整数θ0,0,θ0,1,θ0,2,θ0,3,θ0,4,θ0,5,θ1,0,θ1,1,…,θ6,5。
公开元Ω计算部131使用CPU911,输入第一生成元选择部111存储的表示1个生成元g1的数据、第二生成元选择部112存储的表示1个生成元g2的数据、以及随机数ω选择部121存储的表示1个整数ω的数据。公开元Ω计算部131使用CPU911,通过双线性配对e,计算乘法群G1的生成元g1与乘法群G2的生成元g2的配对。以下,将公开元Ω计算部131计算出的配对称为“g3”。g3是乘法群G3的生成元。公开元Ω计算部131使用CPU911,计算乘法群G3的生成元g3的ω次幂。以下,将公开元Ω计算部131计算出的元“g3^ω”称为“Ω”。Ω是乘法群G3的元。公开元Ω计算部131使用RAM914,存储表示所计算出的1个元Ω的数据。
公开元a计算部132使用CPU911,输入第一生成元选择部111存储的表示1个生成元g1的数据、随机数α选择部122存储的表示(D+2)个整数αn的数据、以及随机数θ选择部124存储的表示(D+2)×(D+1)个整数θn,l的数据。
公开元a计算部132使用CPU911,针对每1个整数αn,计算与各个n相同的(D+1)个整数θn,l的积“αn·θn,l”。整数αn是(D+2)个,所以公开元a计算部132全部计算(D+2)×(D+1)个积“αn·θn, l”。
公开元a计算部132使用CPU911,针对(D+2)×(D+1)个积“αn·θn,l”,分别计算乘法群G1的生成元g1的“αn·θn,l”次幂。以下,将公开元a计算部132计算出的元“g1^(αn·θn,l)”称为“an,l”。n是0以上且(D+1)以下的整数。l(字母l)是0以上且D 以下的整数。an,l是乘法群G1的元。例如,元a0,0是元“g1^(α0·θ0,0)”。元a0,1是元“g1^(α0·θ0,1)”。元a1,0是元“g1^(α1,θ1,0)”。公开元a计算部132使用RAM914,存储表示所计算出的(D+2)×(D+1)个元an,l的数据。
公开元b计算部133使用CPU911,输入第一生成元选择部111存储的表示1个生成元g1的数据、随机数β选择部123存储的表示(D+2)个整数βn的数据、以及随机数θ选择部124存储的表示(D+2)×(D+1)个整数θn,l的数据。
公开元b计算部133使用CPU911,针对每1个整数βn,计算与各个n相同的(D+1)个整数θn,l的积“βn·θn,l”。公开元b计算部133全部计算(D+1)个积“βn·θn,l”。
公开元b计算部133使用CPU911,针对所计算出的(D+2)×(D+1)个积“βn·θn,l”,分别计算乘法群G1的生成元g1的“βn·θn,l”次幂。以下,将公开元b计算部133计算出的元“g1^(βn·θn,l)”称为“bn,l”。n是0以上且(D+1)以下的整数。l(字母l)是0以上且D 以下的整数。bn,l是乘法群G1的元。公开元b计算部133使用RAM914,存储表示所计算出的(D+2)×(D+1)个元bn,l的数据。
秘密元w计算部141使用CPU911,输入第二生成元选择部112存储的表示1个生成元g2的数据、和随机数ω选择部121存储的表示1个整数ω的数据。秘密元w计算部141使用CPU911,计算乘法群G2的生成元g2的ω次幂。以下,将秘密元w计算部141计算出的元“g2^ω”称为“w’”。w’是乘法群G2的元。秘密元w计算部141使用RAM914,存储表示所计算出的1个元w’的数据。
秘密元a计算部142使用CPU911,输入第二生成元选择部112存储的表示1个生成元g2的数据、和随机数α选择部122存储的表示(D+2)个整数αn的数据。秘密元a计算部142使用CPU911,针对(D+2)个整数αn,分别计算生成元g2的αn次幂。以下,将秘密元a计算部142计算出的元“g2^αn”称为“a’n”。n是0以上且(D+1)以下的整数。例如,元a’0是生成元g2的α0次幂。元a’1是生成元g2的α1次幂。秘密元a计算部142计算(D+2)个元a’0。秘密元a计算部142使用RAM914,存储表示所计算出的(D+2)个元a’n的数据。
秘密元b计算部143使用CPU911,输入第二生成元选择部112存储的表示1个生成元g2的数据、和随机数β选择部123存储的表示(D+2)个整数βn的数据。秘密元a计算部142使用CPU911,针对(D+2)个整数βn,分别计算生成元g2的βn次幂。以下,将秘密元b计算部143计算出的元“g2^βn”称为“b’n”。n是0以上且(D+1)以下的整数。b’n是乘法群G2的元。秘密元b计算部143是(D+2)个元b’n。秘密元b计算部143使用RAM914,存储表示所计算出的(D+2)个元b’n的数据。
秘密元y计算部144使用CPU911,输入第二生成元选择部112存储的表示1个生成元g2的数据、随机数α选择部122存储的表示(D+2)个整数αn的数据、随机数β选择部123存储的表示(D+2)个整数βn的数据、以及随机数θ选择部124存储的表示(D+2)×(D+1)个整数θn,l的数据。
秘密元y计算部144使用CPU911,针对(D+2)个整数αn,分别计算与n相同的1个整数βn的积“αn·βn”。秘密元y计算部144全部计算(D+2)个积“αn·βn”。秘密元y计算部144使用CPU911,针对每1个积“αn·βn”,计算与各个n相同的(D+1)个整数θn,l的积“αn·βn·θn,l”。秘密元y计算部144计算出的积“αn·βn”是(D+2)个,所以秘密元y计算部144全部计算(D+2)×(D+1)个积“αn·βn·θn, l”。
秘密元y计算部144使用CPU911,针对所计算出的(D+2)×(D+1)个积“αn·βn·θn,l”,分别计算生成元g2的“αn·βn·θn,l”次幂。将秘密元y计算部144计算出的元“g2^(αn·βn·θn,l)”称为“y’n,l”。n是0以上且(D+1)以下的整数。l(字母l)是0以上且D以下的整数。y’n,l是乘法群G2的元。秘密元y计算部144计算(D+2)×(D+1)个元y’n,l。秘密元y计算部144使用RAM914,存储表示所计算出的(D+2)×(D+1)个元y’n,l的数据。
公开参数输出部151使用CPU911,输入第一生成元选择部111存储的表示1个生成元g1的数据、公开元Ω计算部131存储的表示1个元Ω的数据、公开元a计算部132存储的表示(D+2)×(D+1)个元an,l的数据、以及公开元b计算部133存储的表示(D+2)×(D+1)个元bn,l的数据。公开参数输出部151使用CPU911,输出包括表示1个生成元g1、1个元Ω、(D+2)×(D+1)个元an,l、以及(D+2)×(D+1)个元bn,l的数据的数据作为公开参数。公开参数输出部151输出的公开参数例如一般被公开。
主秘密密钥输出部152使用CPU911,输入秘密元w计算部141存储的表示1个元w’的数据、秘密元a计算部142存储的表示(D+2)个元a’n的数据、秘密元b计算部143存储的表示(D+2)个元b’n的数据、以及秘密元y计算部144存储的表示(D+2)×(D+1)个元y’n,l的数据。主秘密密钥输出部152使用CPU911,输出包括表示1个元w’、(D+2)个元a’n、(D+2)个元b’n、以及(D+2)×(D+1)个元y’n,l的数据的数据作为主秘密密钥。将主秘密密钥输出部152输出的主秘密密钥秘密地通知到用户秘密密钥生成装置200。
对于第一生成元选择部111存储的生成元g1、第二生成元选择部112存储的生成元g2、随机数ω选择部121存储的整数ω、随机数α选择部122存储的整数αn、随机数β选择部123存储的整数βn,如果公开参数/主秘密密钥的生成结束,则之后不使用,所以也可以删除。特别是,整数ω、整数αn、整数βn是不得向外部泄漏的信息,所以以防万一而优选完全删除。
图7是示出该实施方式中的公开参数生成处理S630的流程的一个例子的流程图。
在公开参数生成处理S630中,公开参数生成装置100生成公开密钥与主秘密密钥的对。另外,此处,说明计算公开密钥、主秘密密钥的特定的步骤,但计算步骤不限于此处说明的步骤,只要是数学上得到相同值的结果的计算步骤,则也可以是与此处说明的步骤不同的步骤。
公开参数生成处理S630具有第一生成元选择工序S631、第二生成元选择工序S632、随机数ω选择工序S633、公开元Ω计算工序S634、秘密元w计算工序S635、n初始化工序S636、随机数α选择工序S637、随机数β选择工序S638、秘密元a计算工序S639、秘密元b计算工序S640、l(字母l)初始化工序S641、随机数θ选择工序S642、公开元a计算工序S643、公开元b计算工序S644、秘密元y计算工序S645、l(字母l)增加工序S646、l(字母l)判定工序S647、n增加工序S648、n判定工序S649。
在第一生成元选择工序S631中,第一生成元选择部111使用CPU911,从乘法群G1的生成元之中,均匀随机地选择1个生成元g1。
在第二生成元选择工序S632中,第二生成元选择部112使用CPU911,从乘法群G2的生成元之中,均匀随机地选择1个生成元g2。
在随机数ω选择工序S633中,随机数ω选择部121使用CPU911,从1以上且小于p的整数之中,均匀随机地选择1个整数ω。
在公开元Ω计算工序S634中,公开元Ω计算部131根据在第一生成元选择工序S631中第一生成元选择部111选择出的1个生成元g1、和在第二生成元选择工序S632中第二生成元选择部112选择出的1个生成元g2,使用CPU911,通过双线性配对e,计算生成元g1与生成元g2的配对,得到作为乘法群G3的生成元的1个生成元g3。公开元Ω计算部131根据所计算出的1个生成元g3、和在随机数ω选择工序S633中随机数ω选择部121选择出的1个整数ω,使用CPU911,计算生成元g3的ω次幂,得到作为乘法群G3的元的1个元Ω。
在秘密元w计算工序S635中,秘密元w计算部141根据在第二生成元选择工序S632中第二生成元选择部112选择出的1个生成元g2、和在随机数ω选择工序S633中随机数ω选择部121选择出的1个整数ω,使用CPU911,计算生成元g2的ω次幂,得到作为乘法群G2的元的1个元w’。
在n初始化工序S636中,随机数α选择部122使用CPU911,将变量n的值设定为0。
在随机数α选择工序S637中,随机数α选择部122使用CPU911,从1以上且小于p的整数之中,均匀随机地选择1个整数αn。
在随机数β选择工序S638中,随机数β选择部123使用CPU911,从1以上且小于p的整数之中,均匀随机地选择1个整数βn。
在秘密元a计算工序S639中,秘密元a计算部142根据在第二生成元选择工序S632中第二生成元选择部112选择出的1个生成元g2、和在随机数α选择工序S637中随机数α选择部122选择出的1个整数αn,使用CPU911,计算生成元g2的αn次幂,得到作为乘法群G2的元的1个元a’n。
在秘密元b计算工序S640中,秘密元b计算部143根据在第二生成元选择工序S632中第二生成元选择部112选择出的1个生成元g2、和在随机数β选择工序S638中随机数β选择部123选择出的1个整数βn,使用CPU911,计算生成元g2的βn次幂,得到作为乘法群G2的元的1个元b’n。
在l(字母l)初始化工序S641中,随机数θ选择部124使用CPU911,将变量l的值设定为0。
在随机数θ选择工序S642中,随机数θ选择部124使用CPU911,从1以上且小于p的整数之中,均匀随机地选择1个整数θn,l。
在公开元a计算工序S643中,公开元a计算部132根据在随机数α选择工序S637中随机数α选择部122选择出的1个整数αn、和在随机数θ选择工序S642中随机数θ选择部124选择出的1个整数θn, l,使用CPU911,计算整数αn与整数θn,l之积“αn·θn,l”。公开元a计算部132根据所计算出的积“αn·θn,l”、和在第一生成元选择工序S631中第一生成元选择部111选择出的1个生成元g1,使用CPU911,计算生成元g1的“αn·θn,l”次幂,得到作为乘法群G1的元的1个元an,l。
在公开元b计算工序S644中,公开元b计算部133根据在随机数β选择工序S638中随机数β选择部123选择出的1个整数βn、和在随机数θ选择工序S642中随机数θ选择部124选择出的1个整数θn, l,使用CPU911,计算整数βn与整数θn,l之积“βn·θn,l”。公开元b计算部133根据所计算出的积“βn·θn,l”、和在第一生成元选择工序S631中第一生成元选择部111选择出的生成元g1,计算生成元g1的“βn·θn,l”次幂,得到作为乘法群G1的元的1个元bn,l。
在秘密元y计算工序S645中,秘密元y计算部144根据在秘密元a计算工序S639中秘密元a计算部142计算出的1个元a’n、和在公开元b计算工序S644中公开元b计算部133计算出的积“βn·θn,l”,使用CPU911,计算元a’n的“βn·θn,l”次幂,得到作为乘法群G2的元的1个元y’n,l。
在l(字母l)增加工序S646中,随机数θ选择部124使用CPU911,使变量l的值增加1。
在l(字母l)判定工序S647中,随机数θ选择部124使用CPU911,比较变量l的值和整数D。
在变量l的值是整数D以下的情况下,随机数θ选择部124使用CPU911,返回到随机数θ选择工序S642,选择下一个整数θn,l。
在变量l的值大于整数D的情况下,随机数θ选择部124使用CPU911,进入n增加工序S648。
在n增加工序S648中,随机数α选择部122使用CPU911,使变量n的值增加1。
在n判定工序S649中,随机数α选择部122使用CPU911,比较变量n的值和对整数D加上了1后的值(D+1)。
在变量n的值是值(D+1)以下的情况下,随机数α选择部122使用CPU911,返回到随机数α选择工序S637,选择下一个整数αn。
在变量n的值大于值(D+1)的情况下,随机数α选择部122结束公开参数生成处理S630。
由此,随机数α选择工序S637至n判定工序S649的工序被反复执行(D+2)次。因此,随机数α选择部122将随机数α选择工序S637执行(D+2)次,选择(D+2)个整数αn。随机数β选择部123将随机数β选择工序S638执行(D+2)次,选择(D+2)个整数βn。秘密元a计算部142将秘密元a计算工序S639执行(D+2)次,计算(D+2)个元a’n。秘密元b计算部143将秘密元b计算工序S640执行(D+2)次,计算(D+2)个元b’n。
另外,对于随机数θ选择工序S642至l(字母l)判定工序S647的工序,每当变量n反复1次,反复(D+1)次。因此,公开元a计算部132将公开元a计算工序S643执行(D+2)×(D+1)次,计算(D+2)×(D+1)个元an,l。公开元b计算部133将公开元b计算工序S644执行(D+2)×(D+1)次,计算(D+2)×(D+1)个元bn,l。秘密元y计算部144将秘密元y计算工序S645执行(D+2)×(D+1)次,计算(D+2)×(D+1)个元y’n,l。
图8是示出该实施方式中的用户秘密密钥生成装置200的功能块的结构的一个例子的框结构图。
用户秘密密钥生成装置200根据公开参数生成装置100生成的主秘密密钥,生成对各查询发布装置300分发的用户秘密密钥。
用户秘密密钥生成装置200具有主秘密密钥输入部211、秘密元w存储部212、秘密元a存储部213、秘密元b存储部214、秘密元y存储部215、用户标识符输入部221、标识符存储部222、随机数ρ选择部231、副随机数ρ选择部232、总积元Y计算部233、检索元计算部241、检索元a计算部242、检索元b计算部243、干扰元计算部251、干扰元a计算部252、干扰元b计算部253、委任元计算部261、副委任元计算部262、用户秘密密钥输出部223。
主秘密密钥输入部211使用CPU911,输入公开参数生成装置100输出的主秘密密钥。在主秘密密钥中,包括表示作为乘法群G2的元的1个元w’、作为乘法群G2的元的(D+2)个元a’n、作为乘法群G2的元的(D+2)个元b’n、以及作为乘法群G2的元的(D+2)×(D+1)个元y’n,l的数据。
秘密元w存储部212使用CPU911,输入主秘密密钥输入部211输入的主秘密密钥中的、表示1个元w’的数据。秘密元w存储部212使用磁盘装置920,存储表示1个元w’的数据。
秘密元a存储部213使用CPU911,输入主秘密密钥输入部211输入的主秘密密钥中的、表示(D+2)个元a’n的数据。秘密元a存储部213使用磁盘装置920,存储表示(D+2)个元a’n的数据。
秘密元b存储部214使用CPU911,输入主秘密密钥输入部211输入的主秘密密钥中的、表示(D+2)个元b’n的数据。秘密元b存储部214使用磁盘装置920,存储表示(D+2)个元b’n的数据。
秘密元y存储部215使用CPU911,输入主秘密密钥输入部211输入的主秘密密钥中的、表示(D+2)×(D+1)个元y’n,l的数据。秘密元y存储部215使用磁盘装置920,存储表示(D+2)×(D+1)个元y’n,l的数据。
用户标识符输入部221使用CPU911,作为要求生成用户秘密密钥的查询发布装置300的用户ID,输入表示L个整数Ii的数据。i是1以上且L以下的整数。Ii是0以上且小于p的整数。各个整数Ii对应于对用户ID进行分节而得到的部分。整数I1对应于将用户ID分节为L个的最初的部分。整数I2对应于将用户ID分节为L个的第二个部分。整数IL对应于将用户ID分节为L个的最后的部分。
在用户ID是字符串的情况下,需要将作为字符串的用户ID的各部分变换为0以上且小于p的整数。用户标识符输入部221也可以是将在计算机内部中表现作为字符串的用户ID的各部分的比特串解释为表现整数的比特串的结构。或者,也可以是使用将任意的长度的字符串变换为0以上且小于p的整数的散列函数,用户标识符输入部221将用户ID的各部分变换为整数的结构。
标识符存储部222使用RAM914,存储表示用户标识符输入部221输入的L个整数Ii的数据。
随机数ρ选择部231使用CPU911,从0以上且小于p的整数之中,均匀随机地选择(D+2)个整数。以下,将随机数ρ选择部231选择出的整数称为“ρn”。n是0以上且(D+1)以下的整数。随机数ρ选择部231使用RAM914,存储表示选择出的(D+2)个整数ρn的数据。
副随机数ρ选择部232使用CPU911,从0以上且小于p的整数之中,均匀随机地选择(D+2)×(D+2)个整数。以下,将副随机数ρ选择部232选择出的整数称为“ρn,m”。n是0以上且(D+1)以下的整数。m是0以上且(D+1)以下的整数。
总积元Y计算部233使用CPU911,输入秘密元y存储部215存储的表示(D+2)×(D+1)个元y’n,l的数据、和标识符存储部222存储的表示L个整数Ii的数据。
总积元Y计算部233使用CPU911,针对每1个整数Ii,计算(D+2)×(D+1)个元y’n,L中的、l(字母l)等于i的L(D+2)个元y’n,i各自的Ii次幂。整数Ii是L个,所以总积元Y计算部233全部计算(D+2)×L个元“y’n,i^Ii”。总积元Y计算部233计算出的元“y’n,i^Ii”是乘法群G2的元。
总积元Y计算部233根据(D+2)×(D+1)个元y’n,L中的、l(字母l)是0的(D+2)个元y’n,0、和所计算出的(D+2)×L个元“y’n, i^Ii”,使用CPU911,针对每1个元y’n,0,计算与n相同的L个元“y’n, l^Ii”合起来的全部(L+1)个元的总积。以下,将总积元Y计算部233计算出的总积称为“ΠY,n”。n是0以上且(D+1)以下的整数。ΠY,n是乘法群G2的元。元y’n,0是(D+2)个,所以总积元Y计算部233全部计算(D+2)个元ΠY,n。总积元Y计算部233使用RAM914,存储表示所计算出的(D+2)个元ΠY,n的数据。
检索元计算部241使用CPU911,输入秘密元w存储部212存储的表示1个元w’的数据、随机数ρ选择部231存储的表示(D+2)个整数ρn的数据、以及总积元Y计算部233存储的表示(D+2)个元ΠY, n的数据。
检索元计算部241使用CPU911,针对(D+2)个整数ρn,分别计算n相同的1个元ΠY,n的ρn次幂。检索元计算部241计算出的(D+2)个元“ΠY,n^ρn”是乘法群G2的元。
检索元计算部241使用CPU911,计算将所计算出的(D+2)个元“ΠY,n^ρn”和1个元w’合起来的全部(D+3)个元的总积。以下,将检索元计算部241计算出的总积称为“k0”。k0是乘法群G2的元。检索元计算部241使用RAM914,存储表示所计算出的1个元k0的数据。
检索元a计算部242使用CPU911,输入秘密元a存储部213存储的表示(D+2)个元a’n的数据、和随机数ρ选择部231存储的表示(D+2)个整数ρn的数据。检索元a计算部242使用CPU911,针对(D+2)个整数ρn,分别计算n相同的1个元a’n的“-ρn”次幂。以下,将检索元a计算部242计算出的元“a’n^(-ρn)”称为“kn,(a)”。n是0以上且(D+1)以下的整数。kn,(a)是乘法群G2的元。检索元a计算部242使用RAM914,存储表示所计算出的(D+2)个元kn,(a)的数据。
检索元b计算部243使用CPU911,输入秘密元b存储部214存储的表示(D+2)个元b’n的数据、和随机数ρ选择部231存储的表示(D+2)个整数ρn的数据。检索元b计算部243使用CPU911,针对(D+2)个整数ρn,分别计算n相同的1个元b’n的“-ρn”次幂。以下,将检索元b计算部243计算出的元“b’n^(-ρn)”称为“kn,(b)”。n是0以上且(D+1)以下的整数。kn,(b)是乘法群G2的元。检索元b计算部243使用RAM914,存储表示所计算出的(D+2)个元kn,(b)的数据。
干扰元计算部251使用CPU911,输入副随机数ρ选择部232存储的表示(D+2)×(D+2)个整数ρn,m的数据、和总积元Y计算部233存储的表示(D+2)个元ΠY,n的数据。干扰元计算部251使用CPU911,针对(D+2)×(D+2)个整数ρn,m,分别计算n相同的1个元ΠY,n的ρn,m次幂。干扰元计算部251计算出的(D+2)×(D+2)个元“ΠY,n^ρn,m”是乘法群G2的元。
干扰元计算部251使用CPU911,将所计算出的(D+2)×(D+2)个元“ΠY,n^ρn,m”分成m相同且n不同的每个为(D+2)个的组,计算分割的(D+2)个元“ΠY,n^ρn,m”的总积。以下,将干扰元计算部251计算出的总积称为“fm,0”。m是0以上且(D+1)以下的整数。fm, 0是乘法群G2的元。如果将(D+2)×(D+2)个元“ΠY,n^ρn,m”分成m相同且n不同的每个为(D+2)个的组,则形成(D+2)个组,所以干扰元计算部251计算(D+2)个元fm,0。干扰元计算部251使用RAM914,存储表示所计算出的(D+2)个元fm,0的数据。
干扰元a计算部252使用CPU911,输入秘密元a存储部213存储的表示(D+2)个元a’n的数据、和副随机数ρ选择部232存储的表示(D+2)×(D+2)个整数ρn,m的数据。干扰元a计算部252使用CPU911,针对(D+2)×(D+2)个整数ρn,m,分别计算n相同的1个元a’n的“-ρn,m”次幂。以下,将干扰元a计算部252计算出的元“a’n^(-ρn,m)”称为“fm,n,(a)”。m是0以上且(D+1)以下的整数。n是0以上且(D+1)以下的整数。fm,n,(a)是乘法群G2的元。干扰元a计算部252使用RAM914,存储表示所计算出的(D+2)×(D+2)个元fm,n,(a)的数据。
干扰元b计算部253使用CPU911,输入秘密元b存储部214存储的表示(D+2)个元b’n的数据、和副随机数ρ选择部232存储的表示(D+2)×(D+2)个整数ρn,m的数据。干扰元b计算部253使用CPU911,针对(D+2)×(D+2)个整数ρn,m,分别计算n相同的1个元b’n的“-ρn,m”次幂。以下,将干扰元b计算部253计算出的元“b’n^(-ρn,m)”称为“fm,n,(b)”。m是0以上且(D+1)以下的整数。n是0以上且(D+1)以下的整数。fm,n,(b)是乘法群G2的元。干扰元b计算部253使用RAM914,存储表示所计算出的(D+2)×(D+2)个元fm,n,(b)的数据。
委任元计算部261使用CPU911,输入秘密元y存储部215存储的表示(D+2)×(D+1)个元y’n,l的数据、和随机数ρ选择部231存储的表示(D+2)个整数ρn的数据。另外,虽然未图示,但委任元计算部261使用CPU911,输入表示对具有用户标识符输入部221输入的用户ID的查询发布装置300赋予的权限的表示整数D’的数据。
整数D’是(L+1)以上且D以下的整数。整数D’表示对该查询发布装置300仅给予检索权限、还是给予生成属下的群组内的查询发布装置300的用户秘密密钥的权限、在给予生成用户秘密密钥的权限的情况下给予几级的生成权限。
在整数D’等于(L+1)的情况下,意味着对该查询发布装置300,仅给予能够使用用户秘密密钥来进行检索的权限,而未给予生成属下的查询发布装置300的用户秘密密钥的权限。
在整数D’等于(L+2)的情况下,意味着对该查询发布装置300,不仅给予了能够使用用户秘密密钥来进行检索的权限,而且还给予了能够生成属下1级的查询发布装置300的用户秘密密钥的权限。属下1级的查询发布装置300是指,对用户ID进行分节而得到的部分的数量是(L+1)个,其中从最初的部分至第L个部分这L个部分与该查询发布装置300的用户ID相同的查询发布装置300。以下,将属下1级的查询发布装置300称为“子查询发布装置”。在图1以及图2所示的例子中,查询发布装置300a有2台子查询发布装置300d、300e。查询发布装置300f有2台子查询发布装置300i、300j。另外,将子查询发布装置的用户秘密密钥称为“子用户秘密密钥”。
在整数D’等于(L+3)的情况下,意味着对该查询发布装置300,给予能够检索以及能够生成属下2级的查询发布装置300的用户秘密密钥的权限。属下2级的查询发布装置300是指,对用户ID进行分节而得到的部分的数量是(L+2)个,其中从最初的部分至第L个部分这L个部分与该查询发布装置300的用户ID相同的查询发布装置300。以下,将属下2级的查询发布装置300称为“孙查询发布装置”。在图1以及图2所示的例子中,查询发布装置300c有3台孙查询发布装置300i~300k。查询发布装置300f有3台孙查询发布装置300l~300n。另外,将孙查询发布装置的用户秘密密钥称为“孙用户秘密密钥”。
以下同样地,在整数D’等于(L+x+1)的情况下,意味着给予生成属下x级的查询发布装置300的用户秘密密钥的权限。属下x级的查询发布装置300是指,对用户ID进行分节而得到的部分的数量是(L+x)个,其中从最初的部分至第L个部分这L个部分与该查询发布装置300的用户ID相同的查询发布装置300。
另外,在整数D’是(L+2)以上的情况下,通过该查询发布装置生成的用户秘密密钥,还被给予对属下的查询发布装置300进一步给予生成用户秘密密钥的权限这样的权限。但是,查询发布装置300不能将比被给予自己的权限强的权限给予属下的查询发布装置300。例如,在查询发布装置300被给予了生成子用户秘密密钥和孙用户秘密密钥的权限的情况下,查询发布装置300能够对子查询发布装置给予生成子用户秘密密钥(如果以查询发布装置300为基准,则是孙用户秘密密钥)的权限。但是,查询发布装置300不能对子查询发布装置给予生成孙用户秘密密钥(如果以查询发布装置300为基准,则是曾孙用户秘密密钥)的权限。
整数D’既可以是预先规定的常数,也可以是由隐匿检索系统800的管理者每次输入的结构。另外,也可以是用户秘密密钥生成装置200依照预先规定的规则计算整数D’的结构。
委任元计算部261使用CPU911,针对每1个整数ρn,计算n相同的(D+1)个元y’n,l中的、l(字母l)是(L+1)以上且D’以下的整数λ的(D’-L)个元y’n,λ各个的ρn次幂。委任元计算部261计算的元“y’n,λ^ρn”是乘法群G2的元。整数ρn有(D+2)个,所以委任元计算部261计算(D+2)×(D’-L)个元“y’n,λ^ρn”。
委任元计算部261使用CPU911,将所计算出的(D+2)×(D’-L)个元“y’n,λ^ρn”分成λ相同且n不同的每个为(D+2)个的组,计算分割出的(D+2)个元“y’n,λ^ρn”的总积。以下,将委任元计算部261计算出的总积称为“hλ”。λ是(L+1)以上且(D’-L)以下的整数。hλ是乘法群G2的元。如果将(D+2)×(D’-L)个元“y’n,λ^ρn”分成λ相同且n不同的(D+2)个组,则形成(D’-L)个组,所以委任元计算部261计算(D’-L)个元hλ。委任元计算部261使用RAM914,存储表示所计算出的(D’-L)个元hλ的数据。
副委任元计算部262使用CPU911,输入表示整数D’的数据、秘密元y存储部215存储的表示(D+2)×(D+1)个元y’n,l的数据、以及副随机数ρ选择部232存储的表示(D+2)×(D+2)个整数ρn,m的数据。
副委任元计算部262使用CPU911,针对每1个整数ρn,m,计算n相同的(D+1)个元y’n,l中的、l(字母l)是(L+1)以上且D’以下的整数λ的(D’-L)个元y’n,λ各个的ρn,m次幂。副委任元计算部262计算出的元“y’n,λ^ρn,m”是乘法群G2的元。整数ρn,m有(D+2)×(D+2)个,所以副委任元计算部262全部计算(D+2)×(D+2)×(D’-L)个元“y’n,λ^ρn,m”。
副委任元计算部262使用CPU911,将所计算出的(D+2)×(D+2)×(D’-L)个元“y’n,λ^ρn,m”分成m以及λ相同且仅n不同的每个为(D+2)个的组,计算分割出的(D+2)个元“y’n,λ^ρn,m”的总积。以下,将副委任元计算部262计算出的总积称为“hm,λ”。m是0以上且(D+1)以下的整数。λ是(L+1)以上且D’以下的整数。hm,λ是乘法群G2的元。如果将(D+2)×(D+2)×(D’-L)个元“y’n,λ^ρn,m”分成m以及λ相同且仅n不同的每个为(D+2)个的组,则形成(D+2)×(D’-L)个组,所以副委任元计算部262计算(D+2)×(D’-L)个元hm,λ。副委任元计算部262使用RAM914,存储表示所计算出的(D+2)×(D’-L)个元hm,λ的数据。
用户秘密密钥输出部223使用CPU911,输入检索元计算部241存储的表示1个元k0的数据、检索元a计算部242存储的表示(D+2)个元kn,(a)的数据、以及检索元b计算部243存储的表示(D+2)个元kn,(b)的数据。另外,用户秘密密钥输出部223使用CPU911,输入干扰元计算部251存储的表示(D+2)个元fm,0的数据、干扰元a计算部252存储的表示(D+2)×(D+2)个元fm,n,(a)的数据、以及干扰元b计算部253存储的表示(D+2)×(D+2)个元fm,n,(b)的数据。另外,用户秘密密钥输出部223使用CPU911,输入委任元计算部261存储的表示(D’-L)个元hλ的数据、和副委任元计算部262存储的表示(D+2)×(D’-L)个元hm,λ的数据。
用户秘密密钥输出部223使用CPU911,输出包括表示1个元k0、(D+2)个元kn,(a)、(D+2)个元kn,(b)、(D+2)个元fm,0、(D+2)×(D+2)个元fm,n,(a)、(D+2)×(D+2)个元fm,n,(b)、(D’-L)个元hλ、以及(D+2)×(D’-L)个元hm,λ的数据的数据,作为用户秘密密钥。将用户秘密密钥输出部223输出的用户秘密密钥秘密地通知给具有用户标识符输入部221输入的用户ID的查询发布装置300。
对于随机数ρ选择部231存储的整数ρn、副随机数ρ选择部232存储的整数ρn,m,如果用户秘密密钥的生成结束,则之后不使用,所以也可以删除。在从相同的查询发布装置300再次存在用户秘密密钥生成的要求的情况下,与上次选择出的整数ρn、整数ρn,m无关地重新选择整数ρn、整数ρn,m即可。
图9是示出该实施方式中的用户秘密密钥生成处理S660的流程的一个例子的流程图。
在用户秘密密钥生成处理S660中,用户秘密密钥生成装置200生成用户秘密密钥。另外,此处,说明计算用户秘密密钥的特定的步骤,但计算步骤不限于此处说明的步骤,只要是数学上得到相同值的结果的计算步骤,则也可以是与此处说明的步骤不同的步骤。
用户秘密密钥生成处理S660具有检索元初始化工序S661、干扰元初始化工序S662、λ初始化工序S663、委任元初始化工序S664、m初始化工序S665、副委任元初始化工序S666、m增加工序S667、m判定工序S668、λ增加工序S669、λ判定工序S670、n初始化工序S671、总积元Y初始化工序S672、i初始化工序S673、总积元Y计算工序S674、i增加工序S675、i比较工序S676、ρ选择工序S677、检索元a计算工序S678、检索元b计算工序S679、检索元计算工序S680、λ初始化工序S681、委任元计算工序S682、λ增加工序S683、λ判定工序S684、m初始化工序S685、副随机数ρ选择工序S686、干扰元a计算工序S687、干扰元b计算工序S688、干扰元计算工序S689、λ初始化工序S690、副委任元计算工序S691、λ增加工序S692、λ判定工序S693、m增加工序S694、m判定工序S695、n增加工序S696、n判定工序S697。
在检索元初始化工序S661中,检索元计算部241使用RAM914,将秘密元w存储部212存储的1个元w’存储为用于计算1个元k0的最初的值。
在干扰元初始化工序S662中,干扰元计算部251使用RAM914,将乘法群G2的单位元1存储为用于计算1个元fm,0的最初的值。
在λ初始化工序S663中,委任元计算部261使用CPU911,将变量λ的值设定为对整数L加上了1的值(L+1)。
在委任元初始化工序S664中,委任元计算部261使用RAM914,将乘法群G2的单位元1存储为用于计算1个元hλ的最初的值。
在m初始化工序S665中,副委任元计算部262使用CPU911,将变量m的值设定为0。
在副委任元初始化工序S666中,副委任元计算部262使用RAM914,将乘法群G2的单位元1存储为用于计算1个元hm,λ的最初的值。
在m增加工序S667中,副委任元计算部262使用CPU911,使变量m的值增加1。
在m判定工序S668中,副委任元计算部262使用CPU911,比较变量m的值和对整数D加上了1的值(D+1)。
在变量m的值是(D+1)以下的情况下,副委任元计算部262使用CPU911,返回到副委任元初始化工序S666,设定下一个元hm,λ。
在变量m的值大于(D+1)的情况下,副委任元计算部262使用CPU911,结束(D+2)个元hm,λ的设定,进入λ增加工序S669。
在λ增加工序S669中,委任元计算部261使用CPU911,使变量λ的值增加1。
在λ判定工序S670中,委任元计算部261使用CPU911,比较变量λ的值和整数D’。
在变量λ的值是D’以下的情况下,委任元计算部261使用CPU911,返回到委任元初始化工序S664,设定下一个元hλ。
在变量λ的值大于D’的情况下,委任元计算部261使用CPU911,结束(D’-L)个元hλ以及(D+2)×(D’-L)个元hm,λ的设定,进入n初始化工序S671。
由此,委任元初始化工序S664至λ判定工序S670的工序被反复执行(D’-L)次。因此,委任元计算部261将委任元初始化工序S664执行(D’-L)次,针对(L+1)以上且D’以下的(D’-L)个整数λ,分别存储1个元hλ的最初的值。委任元计算部261全部计算(D’-L)个元hλ。
另外,对于副委任元初始化工序S666至m判定工序S668的工序,每当变量λ反复1次,反复执行(D+2)次。因此,副委任元计算部262将副委任元初始化工序S666执行(D+2)×(D’-L)次,针对作为0以上且(D+1)以下的(D+2)个整数m和(L+1)以上且D’以下的(D’-L)个整数λ的组的(D+2)×(D’-L)个组(m,λ),分别存储1个元hm,λ的最初的值。副委任元计算部262全部存储(D+2)×(D’-L)个元hm,λ。
在n初始化工序S671中,总积元Y计算部233使用CPU911,将变量n的值设定为0。
在总积元Y初始化工序S672中,总积元Y计算部233使用RAM914,将秘密元y存储部215存储的(D+2)×(D+1)个元y’n,l中的、n等于变量n的值、且l(字母l)是0的1个元y’n,0,存储为用于计算1个元ΠY,n的最初的值。
在i初始化工序S673中,总积元Y计算部233使用CPU911,将变量i的值设定为1。
在总积元Y计算工序S674中,总积元Y计算部233根据秘密元y存储部215存储的(D+2)×(D+1)个元y’n,l中的、n等于变量n的值、且l(字母l)等于变量i的值的1个元y’n,i、和标识符存储部222存储的L个整数Ii中的、i等于变量i的值的1个整数Ii,使用CPU911,计算元y’n,i的Ii次幂。总积元Y计算部233根据所存储的1个元ΠY,n和所计算出的1个元“y’n,i^Ii”,使用CPU911,计算元ΠY, n与元“y’n,i^Ii”之积“ΠY,n·y’n,i^Ii”。总积元Y计算部233使用RAM914,将所计算出的积“ΠY,n·y’n,l^Ii”存储为1个元ΠY,n的新的值。
在i增加工序S675中,总积元Y计算部233使用CPU911,使变量i的值增加1。
在i比较工序S676中,总积元Y计算部233使用CPU911,比较变量i的值和整数L。
在变量i的值是整数L以下的情况下,总积元Y计算部233使用CPU911,返回到总积元Y计算工序S674,继续1个元ΠY,n的计算。
在变量i的值大于整数L的情况下,总积元Y计算部233使用CPU911,结束1个元ΠY,n的计算,进入ρ选择工序S677。
在ρ选择工序S677中,随机数ρ选择部231使用CPU911,从0以上且小于p的整数之中,均匀随机地选择1个整数ρn。
在检索元a计算工序S678中,检索元a计算部242根据秘密元a存储部213存储的(D+2)个元a’n中的、n等于变量n的值的1个元a’n和在ρ选择工序S677中随机数ρ选择部231选择出的1个整数ρn,使用CPU911,计算元a’n的“-ρn”次幂,得到作为乘法群G2的元的1个元kn,(a)。
在检索元b计算工序S679中,检索元b计算部243根据秘密元b存储部214存储的(D+2)个元b’n中的、n等于变量n的值的1个元b’n、和在ρ选择工序S677中随机数ρ选择部231选择出的1个整数ρn,使用CPU911,计算元b’n的“-ρn”次幂,得到作为乘法群G2的元的1个元kn,(b)。
在检索元计算工序S680中,检索元计算部241根据总积元Y计算部233存储的1个元ΠY,n、和在ρ选择工序S677中随机数ρ选择部231选择出的1个整数ρn,使用CPU911,计算元ΠY,n的ρn次幂。检索元计算部241使用CPU911,根据所存储的1个元k0和所计算出的1个元“ΠY,n^ρn”,计算元k0与元“ΠY,n^ρn”之积。检索元计算部241使用RAM914,将所计算出的积“k0·ΠY,n^ρn”存储为1个元k0的新的值。
在λ初始化工序S681中,委任元计算部261使用CPU911,将变量λ的值设定为对整数L加上了1的值(L+1)。
在委任元计算工序S682中,委任元计算部261根据秘密元y存储部215存储的(D+2)×(D+1)个元y’n,l中的、n等于变量n的值、且l(字母l)等于变量λ的值的1个元y’n,λ、和在ρ选择工序S677中随机数ρ选择部231选择出的整数ρn,使用CPU911,计算元y’n,λ的ρn次幂。委任元计算部261根据所存储的(D’-L)个元hλ中的、λ等于变量λ的值的1个元hλ、和所计算出的元“y’n,λ^ρn”,使用CPU911,计算元hλ与元“y’n,λ^ρn”之积。委任元计算部261使用RAM914,将所计算出的积“hλ·y’n,λ^ρn”存储为λ等于变量λ的值的1个元hλ的新的值。
在λ增加工序S683中,委任元计算部261使用CPU911,使变量λ的值增加1。
在λ判定工序S684中,委任元计算部261使用CPU911,比较变量λ的值和整数D’。
在变量λ的值是整数D’以下的情况下,委任元计算部261使用CPU911,返回到委任元计算工序S682,计算下一个元hλ。
在变量λ的值大于整数D’的情况下,委任元计算部261使用CPU911,进入m初始化工序S685。
在m初始化工序S685中,副随机数ρ选择部232使用CPU911,将变量m的值设定为0。
在副随机数ρ选择工序S686中,副随机数ρ选择部232使用CPU911,从0以上且小于p的整数之中,均匀随机地选择1个整数ρn, m 。
在干扰元a计算工序S687中,干扰元a计算部252使用CPU911,根据秘密元a存储部213存储的(D+2)个元a’n中的、n等于变量n的值的1个元a’n、和在副随机数ρ选择工序S686中副随机数ρ选择部232选择出的1个整数ρn,m,计算元a’n的“-ρn,m”次幂,得到作为乘法群G2的元的1个元fm,n,(a)。
在干扰元b计算工序S688中,干扰元b计算部253根据秘密元b存储部214存储的(D+2)个元b’n中的、n等于变量n的值的1个元b’n、和在副随机数ρ选择工序S686中副随机数ρ选择部232选择出的1个整数ρn,m,使用CPU911,计算元b’n的“-ρn,m”次幂,得到作为乘法群G2的元的1个元fm,n,(b)。
在干扰元计算工序S689中,干扰元计算部251根据总积元Y计算部233存储的1个元ΠY,n、和在副随机数ρ选择工序S686中副随机数ρ选择部232选择出的1个整数ρn,m,使用CPU911,计算元ΠY, n的ρn,m次幂。干扰元计算部251根据所存储的1个元fm,0和所计算出的元“ΠY,n^ρn,m”,使用CPU911,计算元fm,0与元“ΠY,n^ρn,m”之积。干扰元计算部251使用RAM914,将所计算出的积“fm,0·ΠY,n^ρn, m”存储为元fm,0的新的值。
在λ初始化工序S690中,副委任元计算部262使用CPU911,将变量λ的值设定为对整数L加上了1的值(L+1)。
在副委任元计算工序S691中,副委任元计算部262根据秘密元y存储部215存储的(D+2)×(D+1)个元y’n,l中的、n等于变量n的值、且l等于变量λ的值的1个元y’n,λ、和在副随机数ρ选择工序S686中副随机数ρ选择部232选择出的1个整数ρn,m,使用CPU911,计算元y’n,λ的ρn,m次幂。副委任元计算部262根据所存储的(D+2)×(D’-L)个元hm,λ中的、m等于变量m的值、且λ等于变量λ的值的1个元hm,λ、和所计算出的元“y’n,λ^ρn,m”,使用CPU911,计算元hm,λ与元“y’n,λ^ρn,m”之积。副委任元计算部262使用RAM914,将所计算出的积“hm,λ·y’n,λ^ρn,m”存储为m等于变量m的值、且λ等于变量λ的值的1个元hm,λ的新的值。
在λ增加工序S692中,副委任元计算部262使用CPU911,使变量λ的值增加1。
在λ判定工序S693中,副委任元计算部262使用CPU911,比较变量λ的值和整数D’。
在变量λ的值是整数D’以下的情况下,副委任元计算部262使用CPU911,返回到副委任元计算工序S691,计算下一个元hm,λ。
在变量λ的值大于整数D’的情况下,副委任元计算部262使用CPU911,进入m增加工序S694。
在m增加工序S694中,副随机数ρ选择部232使用CPU911,使变量m的值增加1。
在m判定工序S695中,副随机数ρ选择部232使用CPU911,比较变量m的值和对整数D加上了1的值(D+1)。
在变量m的值是(D+1)以下的情况下,副随机数ρ选择部232使用CPU911,返回到副随机数ρ选择工序S686,选择下一个整数ρn, m。
在变量m的值大于(D+1)的情况下,副随机数ρ选择部232使用CPU911,进入n增加工序S696。
在n增加工序S696中,总积元Y计算部233使用CPU911,使变量n的值增加1。
在n判定工序S697中,总积元Y计算部233使用CPU911,比较变量n的值和对整数D加上了1的值(D+1)。
在变量n的值是(D+1)以下的情况下,总积元Y计算部233使用CPU911,返回到总积元Y初始化工序S672,计算下一个元ΠY,n。
在变量n的值大于(D+1)的情况下,总积元Y计算部233使用CPU911,结束用户秘密密钥生成处理S660。
由此,总积元Y初始化工序S672至n判定工序S697的工序被反复执行(D+2)次。随机数ρ选择部231将ρ选择工序S677执行(D+2)次,选择(D+2)个整数ρn。检索元a计算部242将检索元a计算工序S678执行(D+2)次,计算(D+2)个元kn,(a)。检索元b计算部243将检索元b计算工序S679执行(D+2)次,计算(D+2)个元kn, (b)。
检索元计算部241将检索元计算工序S680执行(D+2)次,计算1个元k0。
总积元Y计算部233每当变量n反复1次时,将总积元Y计算工序S674至i比较工序S676的工序反复执行L次,计算1个元ΠY,n。通过将其反复执行(D+2)次,总积元Y计算部233全部计算(D+2)个元ΠY,n。
委任元计算部261每当变量n反复1次时,将委任元计算工序S682至λ判定工序S684的工序反复执行(D’-L)次,针对(D’-L)个元hλ进行计算。通过将其反复执行(D+2)次,委任元计算部261计算(D’-L)个元hλ。
另外,对于副随机数ρ选择工序S686至m判定工序S695的工序,每当变量n反复1次,反复执行(D+2)次。干扰元a计算部252将干扰元a计算工序S687执行(D+2)×(D+2)次,计算(D+2)×(D+2)个元fm,n,(a)。干扰元b计算部253将干扰元b计算工序S688执行(D+2)×(D+2)次,计算(D+2)×(D+2)个元fm,n,(b)。
干扰元计算部251每当变量n反复1次时,将干扰元计算工序S689执行(D+2)次,针对(D+2)个元fm,0进行计算。通过将其反复执行(D+2)次,干扰元计算部251计算(D+2)个元fm,0。
副委任元计算部262每当变量m反复1次时,将副委任元计算工序S691至λ判定工序S693的工序反复执行(D’-L)次,针对(D’-L)个元hm,λ进行计算。每当变量n反复1次,将其反复执行(D+2)次,从而副委任元计算部262针对(D+2)×(D’-L)个元hm,λ,进行计算。进而,将其反复执行(D+2)次,从而副委任元计算部262计算(D+2)×(D’-L)个元hm,λ。
图10是示出该实施方式中的查询发布装置300的功能块的结构的一个例子的框结构图。
查询发布装置300使用查询发布装置300自身的用户秘密密钥,生成用于检索检索关键字的查询。另外,在查询发布装置300中有生成子用户秘密密钥的权限的情况下,查询发布装置300使用查询发布装置300自身的用户秘密密钥,生成子用户秘密密钥。另外,在查询发布装置300中有生成孙用户秘密密钥的权限的情况下,查询发布装置300使用查询发布装置300自身的用户秘密密钥,生成子用户秘密密钥,使用所生成的子用户秘密密钥,生成孙用户秘密密钥。在查询发布装置300中有生成更下位的用户秘密密钥的权限的情况下也是同样的。
查询发布装置300具有用户标识符存储部311、用户秘密密钥要求输出部312、用户秘密密钥输入部313、用户秘密密钥存储部320、共同处理部330、检索关键字输入部341、检索关键字存储部342、查询输出部343、结果输入部344、结果输出部345、查询生成部350、子用户标识符输入部361、子用户标识符存储部362、子用户秘密密钥输出部363、子用户秘密密钥生成部370。
用户标识符存储部311使用磁盘装置920,预先存储查询发布装置300自身的用户ID。在用户ID是字符串的情况下,用户标识符存储部311也可以原样地存储作为用户ID的字符串或者对作为用户ID的字符串进行了分节的L个部分字符串。或者,用户标识符存储部311也可以存储将对作为用户ID的字符串进行了分节的L个部分字符串变换为0以上且小于p的整数的L个整数Ii。
用户秘密密钥要求输出部312使用CPU911,生成对用户秘密密钥生成装置200、上位的查询发布装置300要求生成用户秘密密钥的消息。用户秘密密钥要求输出部312通过将用户标识符存储部311存储的用户ID包含在消息中,从而将查询发布装置300自身的用户ID通知给用户秘密密钥生成装置200、上位的查询发布装置300。用户秘密密钥要求输出部312使用CPU911,输出所生成的消息。将用户秘密密钥要求输出部312输出的消息发送给用户秘密密钥生成装置200或者上位的查询发布装置300。
用户秘密密钥输入部313使用CPU911,输入查询发布装置300自身的用户秘密密钥。用户秘密密钥输入部313输入的用户秘密密钥是用户秘密密钥生成装置200或者上位的查询发布装置300根据通过用户秘密密钥要求输出部312生成的消息发出的要求等而生成的,并被秘密地通知到查询发布装置300。在用户秘密密钥中,包括表示1个元k0、(D+2)个元kn,(a)、(D+2)个元kn,(b)、(D+2)个元fm,0、(D+2)×(D+2)个元fm,n,(a)、(D+2)×(D+2)个元fm,n, (b)、(D’-L)个元hλ、以及(D+2)×(D’-L)个元hm,λ的数据。
用户秘密密钥存储部320使用磁盘装置920,存储用户秘密密钥输入部313输入的用户秘密密钥。
共同处理部330使用CPU911,根据用户秘密密钥存储部320存储的用户秘密密钥,执行在生成查询的处理和生成子用户秘密密钥的处理中共同的处理。
检索关键字输入部341使用CPU911,作为希望检索的关键字,输入1个整数W。W是0以上且小于p的整数。在关键字是字符串的情况下,检索关键字输入部341也可以将在计算机内部表现作为字符串的关键字的比特串解释为表现整数的比特串。或者,也可以构成为检索关键字输入部341使用将任意的长度的字符串变换为0以上且小于p的整数的散列函数,将关键字变换为整数。
检索关键字存储部342使用RAM914,存储检索关键字输入部341输入的表示1个整数W的数据。
查询生成部350根据用户秘密密钥存储部320存储的用户秘密密钥、共同处理部330处理的结果、以及检索关键字存储部342存储的表示整数W的数据,使用CPU911,生成检索关键字的查询。
查询输出部343输出查询生成部350生成的查询。将查询输出部343输出的查询通知给检索装置500。
结果输入部344使用CPU911,作为针对查询输出部343输出的查询的响应,输入表示检索装置500检索出的结果的消息。
结果输出部345使用CPU911,输出结果输入部344输入的消息。将结果输出部345输出的消息显示于例如显示装置901的画面等,通知给查询发布装置300的利用者。
子用户标识符输入部361使用CPU911,作为要求生成子用户秘密密钥的子查询发布装置的用户ID,输入由与作为查询发布装置300自身的用户ID的L个整数Ii相同的整数Ii和1个整数IL+1构成的(L+1)个整数。子用户标识符输入部361比较所输入的(L+1)个整数中的L个整数Ii和用户标识符存储部311存储的用户ID,确认要求了生成子用户秘密密钥的查询发布装置是否为子查询发布装置。
在用户ID是字符串的情况下,子用户标识符输入部361也可以输入作为字符串的用户ID。在该情况下,子用户标识符输入部361将所输入的用户ID分节为(L+1)个部分字符串,将分节了的(L+1)个部分字符串变换为整数。
子用户标识符存储部362使用RAM914,存储子用户标识符输入部361输入的表示(L+1)个整数中的、1个整数IL+1的数据。
子用户秘密密钥生成部370使用CPU911,根据用户秘密密钥存储部320存储的用户秘密密钥、共同处理部330处理的结果、以及子用户标识符存储部362存储的表示整数IL+1的数据,生成子用户秘密密钥。
子用户秘密密钥输出部363使用CPU911,输出子用户秘密密钥生成部370生成的子用户秘密密钥。将子用户秘密密钥输出部363输出的子用户秘密密钥秘密地通知给要求了生成子用户秘密密钥的子查询发布装置。
图11是示出该实施方式中的查询发布装置300中的用户秘密密钥存储部320/共同处理部330/查询生成部350的详细的框结构的一个例子的详细框图。
用户秘密密钥存储部320具有检索元存储部321、检索元a存储部322、检索元b存储部323、干扰元存储部324、干扰元a存储部325、干扰元b存储部326、委任元存储部327、副委任元存储部328。
共同处理部330具有随机数π选择部331、总积元F计算部332、总积元H计算部333、质询元a计算部334、质询元b计算部335。
查询生成部350具有质询元计算部351。
检索元存储部321使用磁盘装置920,存储用户秘密密钥中的、作为乘法群G2的元的表示1个元k0的数据。
检索元a存储部322使用磁盘装置920,存储用户秘密密钥中的、作为乘法群G2的元的表示(D+2)个元kn,(a)的数据。n是0以上且(D+1)以下的整数。
检索元b存储部323使用磁盘装置920,存储用户秘密密钥中的、作为乘法群G2的元的表示(D+2)个元kn,(b)的数据。n是0以上且(D+1)以下的整数。
干扰元存储部324使用磁盘装置920,存储用户秘密密钥中的、作为乘法群G2的元的表示(D+2)个元fm,0的数据。m是0以上且(D+1)以下的整数。
干扰元a存储部325使用磁盘装置920,存储用户秘密密钥中的、作为乘法群G2的元的表示(D+2)×(D+2)个元fm,n,(a)的数据。m是0以上且(D+1)以下的整数。n是0以上且(D+1)以下的整数。
干扰元b存储部326使用磁盘装置920,存储用户秘密密钥中的、作为乘法群G2的元的表示(D+2)×(D+2)个元fm,n,(b)的数据。m是0以上且(D+1)以下的整数。n是0以上且(D+1)以下的整数。
委任元存储部327使用磁盘装置920,存储用户秘密密钥中的、作为乘法群G2的元的表示(D’-L)个元hλ的数据。λ是(L+1)以上且D’以下的整数。
副委任元存储部328使用磁盘装置920,存储用户秘密密钥中的、作为乘法群G2的元的表示(D+2)×(D’-L)个元hm,λ的数据。m是0以上且(D+1)以下的整数。λ是(L+1)以上且D’以下的整数。
随机数π选择部331使用CPU911,从0以上且小于p的整数之中,均匀随机地选择(D+2)个整数。以下,将随机数π选择部331选择出的整数称为“πm”。m是0以上且(D+1)以下的整数。随机数π选择部331使用RAM914,存储表示选择出的(D+2)个整数πm的数据。
总积元F计算部332使用CPU911,存储干扰元存储部324存储的表示(D+2)个元fm,0的数据、和随机数π选择部331存储的表示(D+2)个整数πm的数据。
总积元F计算部332使用CPU911,针对(D+2)个整数πm,分别计算m相同的1个元fm,0的πm次幂。总积元F计算部332计算出的元“fm,0^πm”是乘法群G2的元。总积元F计算部332全部计算(D+2)个元“fm,0^πm”。
总积元F计算部332使用CPU911,计算所计算出的(D+2)个元“fm,0^πm”的总积。以下,将总积元F计算部332计算出的总积称为“ΠF”。ΠF是乘法群G2的元。总积元F计算部332使用RAM914,存储表示所计算出的1个总积ΠF的数据。
总积元H计算部333使用CPU911,输入委任元存储部327存储的表示(D’-L)个元hλ的数据、副委任元存储部328存储的表示(D+2)×(D’-L)个元hm,λ的数据、以及随机数π选择部331存储的表示(D+2)个整数πm的数据。
总积元H计算部333根据(D+2)×(D’-L)个元hm,λ中的、λ等于(L+1)的(D+2)个元hm,L+1、和(D+2)个整数πm,使用CPU911,针对(D+2)个整数πm,分别计算m相同的1个元hm,L+1的πm次幂。
总积元H计算部333根据(D’-L)个元hλ中的、λ等于(L+1)的1个元hL+1、和所计算出的(D+2)个元“hm,L+1^πm”,使用CPU911,计算将1个元hL+1和(D+2)个元“hm,L+1^πm”合起来的全部(D+3)个元的总积。以下,将总积元H计算部333计算出的总积称为“ΠH”。ΠH是乘法群G2的元。总积元H计算部333使用RAM914,存储表示所计算出的1个元ΠH的数据。
质询元a计算部334使用CPU911,输入检索元a存储部322存储的表示(D+2)个元kn,(a)的数据、干扰元a存储部325存储的表示(D+2)×(D+2)个元fm,n,(a)的数据、以及随机数π选择部331存储的表示(D+2)个整数πm的数据。
质询元a计算部334使用CPU911,针对每1个整数πm,计算(D+2)×(D+2)个元fm,n,(a)中的、m相同的(D+2)个元fm,n,(a)各个的πm次幂。质询元a计算部334计算出的元“fm,n,(a)^πm”是乘法群G2的元。整数πm是(D+2)个,所以质询元a计算部334计算(D+2)×(D+2)个元“fm,n,(a)^πm”。
质询元a计算部334使用CPU911,针对每1个元kn,(a),计算将所计算出的(D+2)×(D+2)个元“fm,n,(a)^πm”中的、n相同的(D+2)个元“fm,n,(a)^πm”和1个元kn,(a)合起来的全部(D+3)个元的总积。以下,将质询元a计算部334计算出的总积称为“k’n,(a)”。n是0以上且(D+1)以下的整数。k’n,(a)是乘法群G2的元。质询元a计算部334使用RAM914,存储表示所计算出的(D+2)个元k’n,(a)的数据。
质询元b计算部335使用CPU911,输入检索元b存储部323存储的表示(D+2)个元kn,(b)的数据、干扰元b存储部326存储的表示(D+2)×(D+2)个元fm,n,(b)的数据、以及随机数π选择部331存储的表示(D+2)个整数πm的数据。
质询元b计算部335使用CPU911,针对每1个整数πm,计算(D+2)×(D+2)个元fm,n,(b)中的、m相同的(D+2)个元fm,n,(b)各个的πm次幂。质询元b计算部335计算出的元“fm,n,(b)^πm”是乘法群G2的元。整数πm有(D+2)个,所以质询元b计算部335计算(D+2)×(D+2)个元“fm,n,(b)^πm”。
质询元b计算部335使用CPU911,针对每1个元kn,(b),计算将所计算出的(D+2)×(D+2)个元“fm,n,(b)^πm”中的、n相同的(D+2)个元“fm,n,(b)^πm”、和1个元kn,(b)合起来的全部(D+3)个元的总积。以下,将质询元b计算部335计算出的总积称为“k’n,(b)”。n是0以上且(D+1)以下的整数。k’n,(b)是乘法群G2的元。质询元b计算部335使用RAM914,存储表示所计算出的(D+2)个元k’n,(b)的数据。
质询元计算部351使用CPU911,输入检索元存储部321存储的表示1个元k0的数据、检索关键字存储部342存储的表示1个整数W的数据、总积元F计算部332存储的表示1个元ΠF的数据、以及总积元H计算部333存储的表示1个元ΠH的数据。质询元计算部351使用CPU911,计算元ΠH的W次幂。质询元计算部351计算出的元“ΠH^W”是乘法群G2的元。质询元计算部351使用CPU911,计算1个元k0与1个元ΠF与所计算出的1个元“ΠH^W”之积“k0·ΠF·ΠH^W”。以下,将质询元计算部351计算出的积“k0·ΠF·ΠH^W”称为“k’0”。k’0是乘法群G2的元。质询元计算部351使用RAM914,存储表示所计算出的1个元k’0的数据。
查询输出部343使用CPU911,输入用户标识符存储部311存储的用户ID、质询元计算部351存储的表示1个元k’0的数据、质询元a计算部334存储的表示(D+2)个元k’n,(a)的数据、以及质询元b计算部335存储的表示(D+2)个元k’n,(b)的数据。查询输出部343使用CPU911,输出包括表示用户ID、1个元k’0、(D+2)个元k’n, (a)、以及(D+2)个元k’n,(b)的数据的数据,作为查询。
这样,委任元存储部327存储的(D’-L)个元hλ以及副委任元存储部328存储的(D+2)×(D’-L)个元hm,λ中,用于生成查询的部分仅为λ等于(L+1)的1个元hL+1以及(D+2)个元hm,L+1。λ是(L+1)以上且D’以下的整数,所以即使整数D’是(L+1)以上且D以下的任意一个值,查询发布装置300也能够生成查询。
图12是示出该实施方式中的共同处理S710的流程的一个例子的流程图。
在共同处理S710中,共同处理部330执行在查询生成和个用户秘密密钥生成中共同的处理。
另外,此处,说明生成查询或者计算子用户秘密密钥的特定的步骤,但计算步骤不限于此处说明的步骤,只要是数学上得到相同值的结果的计算步骤,则也可以是与此处说明的步骤不同的步骤。
共同处理S710具有总积元F初始化工序S711、总积元H初始化工序S712、m初始化工序S713、随机数π选择工序S714、总积元F计算工序S715、总积元H计算工序S716、m增加工序S717、m判定工序S718、n初始化工序S719、质询元a初始化工序S720、质询元b初始化工序S721、m初始化工序S722、质询元a计算工序S723、质询元b计算工序S724、m增加工序S725、m判定工序S726、n增加工序S727、n判定工序S728。
在总积元F初始化工序S711中,总积元F计算部332使用RAM914,将乘法群G2的单位元1存储为用于计算1个元ΠF的最初的值。
在总积元H初始化工序S712中,总积元H计算部333使用RAM914,将委任元存储部327存储的(D’-L)个元hλ中的、λ是(L+1)的1个元hL+1存储为用于计算1个元ΠH的最初的值。
在m初始化工序S713中,随机数π选择部331使用CPU911,将变量m的值设定为0。
在随机数π选择工序S714中,随机数π选择部331使用CPU911,从0以上且小于p的整数之中,均匀随机地选择1个整数πm。
在总积元F计算工序S715中,总积元F计算部332根据干扰元存储部324存储的(D+2)个元fm,0中的、m等于变量m的1个元fm, 0、和在随机数π选择工序S714中随机数π选择部331选择出的1个整数πm,使用CPU911,计算元fm,0的πm次幂。总积元F计算部332使用CPU911,计算所存储的1个元ΠF与所计算出的1个元“fm,0^πm”之积“ΠF·fm,0^πm”。总积元F计算部332使用RAM914,将所计算出的1个积“ΠF·fm,0^πm”存储为元ΠF的新的值。
在总积元H计算工序S716中,总积元H计算部333根据副委任元存储部328存储的(D+2)×(D’-L)个元hm,λ中的、m等于变量m、且λ等于(L+1)的1个元hm,L+1、和在随机数π选择工序S714中随机数π选择部331选择出的整数πm,使用CPU911,计算元hm, L+1的πm次幂。总积元H计算部333使用CPU911,计算所存储的1个元ΠH与所计算出的1个元“hm,L+1^πm”之积“ΠH·hm,L+1^πm”。总积元H计算部333使用RAM914,将所计算出的1个积“ΠH·hm, L+1^πm”存储为元ΠH的新的值。
在m增加工序S717中,随机数π选择部331使用CPU911,使变量m的值增加1。
在m判定工序S718中,随机数π选择部331使用CPU911,比较变量m的值和对整数D加上了1的值(D+1)。
在变量m的值是(D+1)以下的情况下,随机数π选择部331使用CPU911,返回到随机数π选择工序S714,继续1个元ΠF以及1个元ΠH的计算。
在变量m的值大于(D+1)的情况下,随机数π选择部331使用CPU911,结束1个元ΠF以及1个元ΠH的计算,进入n初始化工序S719。
由此,随机数π选择工序S714至m判定工序S718的工序被反复执行(D+2)次。随机数π选择部331将随机数π选择工序S714执行(D+2)次,选择(D+2)个整数πm。
总积元F计算部332将总积元F计算工序S715执行(D+2)次,计算1个元ΠF。总积元H计算部333将总积元H计算工序S716执行(D+2)次,计算1个元ΠH。
在n初始化工序S719中,质询元a计算部334使用CPU911,将变量n的值设定为0。
在质询元a初始化工序S720中,质询元a计算部334使用RAM914,将检索元a存储部322存储的(D+2)个元kn,(a)中的、n等于变量n的值的1个元kn,(a)存储为用于计算元k’n,(a)的最初的值。
在质询元b初始化工序S721中,质询元b计算部335使用RAM914,将检索元b存储部323存储的(D+2)个元kn,(b)中的、n等于变量n的值的1个元kn,(b)存储为用于计算元k’n,(b)的最初的值。
在m初始化工序S722中,质询元a计算部334使用CPU911,将变量m的值设定为0。
在质询元a计算工序S723中,质询元a计算部334根据干扰元a存储部325存储的(D+2)×(D+2)个元fm,n,(a)中的、m等于变量m的值、且n等于变量n的值的1个元fm,n,(a)、和在(D+2)次的随机数π选择工序S714中随机数π选择部331选择出的(D+2)个整数πm中的、m等于变量m的值的1个整数πm,使用CPU911,计算元fm,n,(a)的πm次幂。质询元a计算部334使用CPU911,计算所存储的1个元k’n,(a)与所计算出的1个元“fm,n,(a)^πm”之积“k’n,(a)·fm,n,(a)^πm”。质询元a计算部334使用RAM914,将所计算出的积“k’n,(a)·fm,n,(a)^πm”存储为元k’n,(a)的新的值。
在质询元b计算工序S724中,质询元b计算部335根据干扰元b存储部326存储的(D+2)×(D+2)个元fm,n,(b)中的、m等于变量m的值、且n等于变量n的值的1个元fm,n,(b)、和在(D+2)次的随机数π选择工序S714中随机数π选择部331选择出的(D+2)个整数πm中的、m等于变量m的值的1个整数πm,使用CPU911,计算元fm,n,(b)的πm次幂。质询元b计算部335使用CPU911,计算所存储的1个元k’n,(b)与所计算出的1个元“fm,n,(b)^πm”之积“k’n,(b)·fm,n,(b)^πm”。质询元b计算部335使用RAM914,将所计算出的积“k’n,(b)·fm,n,(b)^πm”存储为元k’n,(b)的新的值。
在m增加工序S725中,质询元a计算部334使用CPU911,使变量m的值增加1。
在m判定工序S726中,质询元a计算部334使用CPU911,比较变量m的值和对整数D加上了1的值(D+1)。
在变量m的值是(D+1)以下的情况下,质询元a计算部334使用CPU911,返回到质询元a计算工序S723,继续1个元k’n,(a)以及1个元k’n,(b)的计算。
在变量m的值大于(D+1)的情况下,质询元a计算部334使用CPU911,结束1个元k’n,(a)以及1个元k’n,(b)的计算,进入n增加工序S727。
在n增加工序S727中,质询元a计算部334使用CPU911,使变量n的值增加1。
在n判定工序S728中,质询元a计算部334使用CPU911,比较变量n的值和对整数D加上了1的值(D+1)。
在变量n的值是(D+1)以下的情况下,质询元a计算部334使用CPU911,返回到质询元a初始化工序S720,计算下一个元k’n,(a)以及下一个元k’n,(b)。
在变量n的值大于(D+1)的情况下,质询元a计算部334使用CPU911,结束共同处理S710。
由此,质询元a初始化工序S720至n判定工序S728的工序被反复执行(D+2)次。另外,每当变量n反复1次,质询元a计算工序S723至m判定工序S726的工序被反复执行(D+2)次。质询元a计算部334每当变量n反复1次时,将质询元a计算工序S723执行(D+2)次,计算1个元k’n,(a)。质询元a计算部334全部计算(D+2)个元k’n,(a)。质询元b计算部335每当变量n反复1次时,将质询元b计算工序S724执行(D+2)次,计算1个元k’n,(b)。质询元b计算部335全部计算(D+2)个元k’n,(b)。
图13是示出该实施方式中的查询生成处理S730的流程的一个例子的流程图。
在查询生成处理S730中,查询生成部350计算查询中包含的元中的、在共同处理S710中共同处理部330生成的元以外的元。
查询生成处理S730具有质询元计算工序S731。
在质询元计算工序S731中,质询元计算部351根据在共同处理S710中总积元H计算部333计算出的1个元ΠH、和检索关键字存储部342存储的1个整数W,使用CPU911,计算元ΠH的W次幂。质询元计算部351计算检索元存储部321存储的1个元k0、在共同处理S710中总积元F计算部332计算出的1个元ΠF、以及所计算出的元“ΠH^W”之积,得到作为乘法群G2的元的1个元k’0。
图14是示出该实施方式中的查询发布装置300中的子用户秘密密钥生成部370的详细的框结构的一个例子的详细框图。
子用户秘密密钥生成部370具有副随机数π选择部371、子检索元计算部372、子总积元F计算部373、子总积元H计算部374、子干扰元计算部375、子干扰元a计算部376、子干扰元b计算部377、子委任元计算部378、子副委任元计算部379。
副随机数π选择部371使用CPU911,从0以上且小于p的整数之中,均匀随机地选择(D+2)×(D+2)个整数。以下,将副随机数π选择部371选择出的整数称为“πm,m’”。m是0以上且(D+1)以下的整数。m’是0以上且(D+1)以下的整数。副随机数π选择部371使用RAM914,存储选择出的(D+2)×(D+2)个整数πm,m’。
子检索元计算部372使用CPU911,输入检索元存储部321存储的表示1个元k0的数据、子用户标识符存储部362存储的表示1个整数IL+1的数据、总积元F计算部332存储的表示1个元ΠF的数据、以及总积元H计算部333存储的表示1个元ΠH的数据。
子检索元计算部372根据1个元ΠH和1个整数IL+1,使用CPU911,计算元ΠH的IL+1次幂。子检索元计算部372计算出的元“ΠH^IL+1”是乘法群G2的元。子检索元计算部372计算1个元“ΠH^IL+1”。
子检索元计算部372计算1个元k0与1个元ΠF与所计算出的1个元“ΠH^IL+1”之积“k0·ΠF·ΠH^IL+1”。以下,将子检索元计算部372计算出的积“k0·ΠF·ΠH^IL+1”,与质询元计算部351计算出的元k’0同样地称为“k’0”。k’0是乘法群G2的元。子检索元计算部372使用RAM914,存储表示所计算出的1个元k’0的数据。
子总积元F计算部373使用CPU911,输入干扰元存储部324存储的表示(D+2)个元fm,0的数据、和副随机数π选择部371存储的表示(D+2)×(D+2)个整数πm,m’的数据。
子总积元F计算部373根据(D+2)个元fm,0和(D+2)×(D+2)个整数πm,m’,使用CPU911,针对(D+2)×(D+2)个整数πm,m’,分别计算m相同的1个元fm,0的πm,m’次幂。子总积元F计算部373计算出的元“fm,0^πm,m’”是乘法群G2的元。子总积元F计算部373计算(D+2)×(D+2)个元“fm,0^πm,m’”。
子总积元F计算部373使用CPU911,将所计算出的(D+2)×(D+2)个元“fm,0^πm,m’”分成m相同且m’不同的每个为(D+2)个的组,计算分割出的(D+2)个元“fm,0^πm,m’”的总积。以下,将子总积元F计算部373计算出的总积称为“ΠF,m’”。m’是0以上且(D+1)以下的整数。ΠF,m’是乘法群G2的元。如果将(D+2)×(D+2)个元“fm,0^πm, m’”分成m相同且m’不同的每个为(D+2)个的组,则形成(D+2)个组,所以子总积元F计算部373计算(D+2)个元ΠF,m’。子总积元F计算部373使用RAM914,存储表示所计算出的(D+2)个元ΠF,m’的数据。
子总积元H计算部374使用CPU911,输入副委任元存储部328存储的表示(D+2)×(D’-L)个元hm,λ的数据、和副随机数π选择部371存储的表示(D+2)×(D+2)个整数πm,m’的数据。
子总积元H计算部374根据(D+2)×(D’-L)个元hm,λ中的、λ等于(L+1)的(D+2)个元hm,L+1、和(D+2)×(D+2)个整数πm, m’,使用CPU911,针对(D+2)×(D+2)个整数πm,m’,分别计算m相同的1个元hm,L+1的πm,m’次幂。子总积元H计算部374计算出的元“hm,L+1^πm,m’”是乘法群G2的元。子总积元H计算部374计算(D+2)×(D+2)个元“hm,L+1^πm,m’”。
子总积元H计算部374使用CPU911,将所计算出的(D+2)×(D+2)个元“hm,L+1^πm,m’”分成m相同且m不同的每个为(D+2)个的组,计算分割出的(D+2)个元“hm,L+1^πm,m’”的总积。以下,将子总积元H计算部374计算出的总积称为“ΠH,m’”。m’是0以上且(D+1)以下的整数。ΠH,m’是乘法群G2的元。如果将(D+2)×(D+2)个元“hm, L+1^πm,m’”分成m相同且m’不同的每个为(D+2)个的组,则形成(D+2)个组,所以子总积元H计算部374计算(D+2)个元ΠH,m’。子总积元H计算部374使用RAM914,存储表示所计算出的(D+2)个元ΠH,m’的数据。
子干扰元计算部375使用CPU911,输入子用户标识符存储部362存储的表示1个整数IL+1的数据、子总积元F计算部373存储的表示(D+2)个元ΠF,m’的数据、以及子总积元H计算部374存储的表示(D+2)个元ΠH,m’的数据。
子干扰元计算部375根据(D+2)个元ΠH,m’和1个整数IL+1,使用CPU911,计算(D+2)个元ΠH,m’各个的IL+1次幂。子干扰元计算部375计算出的元“ΠH,m’^IL+1”是乘法群G2的元。子干扰元计算部375计算(D+2)个元“ΠH,m’^IL+1”。
子干扰元计算部375根据(D+2)个元ΠF,m’和所计算出的(D+2)个元“ΠH,m’^IL+1”,使用CPU911,针对(D+2)个元ΠF,m’,分别计算与m’相同的1个元“ΠH,m’^IL+1”的积“ΠF,m’·ΠH,m’^IL+1”。以下,将子干扰元计算部375计算出的积“ΠF,m’·ΠH,m’^IL+1”称为“f’m’,0”。m’是0以上且(D+1)以下的整数。f’m’,0是乘法群G2的元。子干扰元计算部375使用RAM914,存储表示所计算出的(D+2)个元f’m’, 0的数据。
子干扰元a计算部376使用CPU911,输入干扰元a存储部325存储的表示(D+2)×(D+2)个元fm,n,(a)的数据、和副随机数π选择部371存储的表示(D+2)×(D+2)个整数πm,m’的数据。
子干扰元a计算部376根据(D+2)×(D+2)个元fm,n,(a)和(D+2)×(D+2)个整数πm,m’,使用CPU911,针对每1个整数πm,m’,计算m相同的(D+2)个元fm,n,(a)各个的πm,m’次幂。子干扰元a计算部376计算出的元“fm,n,(a)^πm,m’”是乘法群G2的元。整数πm,m’有(D+2)×(D+2)个,所以子干扰元a计算部376计算(D+2)×(D+2)×(D+2)个元“fm,n,(a)^πm,m’”。
子干扰元a计算部376使用CPU911,将所计算出的(D+2)×(D+2)×(D+2)个元“fm,n,(a)^πm,m’”分成m’以及n相同且仅m不同的每个为(D+2)个的组,计算分割出的(D+2)个元“fm,n,(a)^πm,m’”的总积。以下,将子干扰元a计算部376计算出的总积称为“f’m’,n,(a)”。m’是0以上且(D+1)以下的整数。n是0以上且(D+1)以下的整数。f’m’,n,(a)是乘法群G2的元。如果将(D+2)×(D+2)×(D+2)个元“fm,n,(a)^πm,m’”分成m’以及n相同且仅m不同的每个为(D+2)个的组,则形成(D+2)×(D+2)个组,所以子干扰元a计算部376计算(D+2)×(D+2)个元f’m’,n,(a)。子干扰元a计算部376使用RAM914,存储表示所计算出的(D+2)×(D+2)个元f’m’,n,(a)的数据。
子干扰元b计算部377使用CPU911,输入干扰元b存储部326存储的表示(D+2)×(D+2)个元fm,n,(b)的数据、和副随机数π选择部371存储的表示(D+2)×(D+2)个整数πm,m’的数据。
子干扰元b计算部377根据(D+2)×(D+2)个元fm,n,(b)和(D+2)×(D+2)个整数πm,m’,使用CPU911,针对每1个整数πm,m’,计算m相同的(D+2)个元fm,n,(b)各个的πm,m’次幂。子干扰元b计算部377计算出的元“fm,n,(b)^πm,m’”是乘法群G2的元。整数πm,m’有(D+2)×(D+2)个,所以子干扰元b计算部377计算(D+2)×(D+2)×(D+2)个元“fm,n,(b)^πm,m’”。
子干扰元b计算部377使用CPU911,将所计算出的(D+2)×(D+2)×(D+2)个元“fm,n,(b)^πm,m’”分成m’以及n相同且仅m不同的每个为(D+2)个的组,计算分割出的(D+2)个元“fm,n,(b)^πm,m’”的总积。以下,将子干扰元b计算部377计算出的总积称为“f’m’,n,(b)”。m’是0以上且(D+1)以下的整数。n是0以上且(D+1)以下的整数。f’m’,n,(b)是乘法群G2的元。如果将(D+2)×(D+2)×(D+2)个元“fm,n,(b)^πm,m’”分成m’以及n相同且仅m不同的每个为(D+2)个的组,则形成(D+2)×(D+2)个组,所以子干扰元b计算部377计算(D+2)×(D+2)个元f’m’,n,(b)。子干扰元b计算部377使用RAM914,存储表示所计算出的(D+2)×(D+2)个元f’m’,n,(b)的数据。
子委任元计算部378使用CPU911,输入委任元存储部327存储的表示(D’-L)个元hλ的数据、副委任元存储部328存储的表示(D+2)×(D’-L)个元hm,λ的数据、以及随机数π选择部331存储的表示(D+2)个整数πm的数据。另外,虽然未图示,但子委任元计算部378使用CPU911,输入表示对子查询发布装置赋予的权限的表示整数D”的数据。整数D”是(L+2)以上且D’以下的整数。整数D”的意义与整数D’相同。
子委任元计算部378根据(D+2)×(D’-L)个元hm,λ中的、λ等于(L+2)以上且D”以下的整数λ’的(D+2)×(D”-L-1)个元hm,λ’、和(D+2)个整数πm,使用CPU911,针对每1个整数πm,计算m相同的(D”-L-1)个元hm,λ’各个的πm次幂。子委任元计算部378计算出的元“hm,λ’^πm”是乘法群G2的元。整数πm有(D+2)个,所以子委任元计算部378计算(D+2)×(D”-L-1)个元“hm,λ’^πm”。
子委任元计算部378根据(D’-L)个元hλ中的、λ是(L+2)以上且D”以下的整数λ’的(D”-L-1)个元hλ’、和所计算出的(D+2)×(D”-L-1)个元“hm,λ’^πm”,使用CPU911,针对每1个元hλ’,计算将所计算出的(D+2)×(D”-L-1)个元“hm,λ’^πm”中的、λ’相同的(D+2)个元“hm,λ’^πm”和1个元hλ’合起来的(D+3)个元的总积。以下,将子委任元计算部378计算出的总积称为“h’λ’”。λ’是(L+2)以上且D”以下的整数。h’λ’是乘法群G2的元。元hλ’是(D”-L-1)个,所以子委任元计算部378计算(D”-L-1)个元h’λ’。子委任元计算部378使用RAM914,存储表示所计算出的(D”-L-1)个元h’λ’的数据。
子副委任元计算部379使用CPU911,输入表示整数D”的数据、副委任元存储部328存储的表示(D+2)×(D’-L)个元hm,λ的数据、以及副随机数π选择部371存储的表示(D+2)×(D+2)个整数πm, m’的数据。
子副委任元计算部379根据(D+2)×(D’-L)个元hm,λ中的、λ等于(L+2)以上且D”以下的整数λ’的(D+2)×(D”-L-1)个元hm,λ’、和(D+2)×(D+2)个整数πm,m’,使用CPU911,针对每1个整数πm,m’,计算(D+2)×(D”-L-1)个元hm,λ’中的、m相同的(D”-L-1)个元hm,λ’各个的πm,m’次幂。子副委任元计算部379计算出的元“hm,λ’^πm,m’”是乘法群G2的元。整数πm,m’有(D+2)×(D+2)个,所以子副委任元计算部379计算(D+2)×(D+2)×(D”-L-1)个元“hm,λ’^πm,m’”。
子副委任元计算部379使用CPU911,将所计算出的(D+2)×(D+2)×(D”-L-1)个元“hm,λ’^πm,m’”分成m’以及λ’相同且仅m不同的每个为(D+2)个的组,计算分割出的(D+2)个元“hm,λ’^πm,m’”的总积。将子副委任元计算部379计算出的总积称为“h’m’,λ’”。m’是0以上且(D+1)以下的整数。λ’是(L+2)以上且D”以下的整数。h’m’, λ’是乘法群G2的元。如果将(D+2)×(D+2)×(D”-L-1)个元“hm, λ’^πm,m’”分成m’以及λ’相同且仅m不同的每个为(D+2)个的组,则形成(D+2)×(D”-L-1)个组,所以子副委任元计算部379计算(D+2)×(D”-L-1)个元h’m’,λ’。子副委任元计算部379使用RAM914,存储表示所计算出的(D”-L-1)个元h’m’,λ’的数据。
子用户秘密密钥输出部363使用CPU911,输入子检索元计算部372存储的表示1个元k’0的数据、质询元a计算部334存储的表示(D+2)个元k’n,(a)的数据、以及质询元b计算部335存储的表示(D+2)个元k’n,(b)的数据。另外,子用户秘密密钥输出部363使用CPU911,输入子干扰元计算部375存储的表示(D+2)个元f’m’,0的数据、子干扰元a计算部376存储的表示(D+2)×(D+2)个元f’m’,n,(a)的数据、以及子干扰元b计算部377存储的表示(D+2)×(D+2)个元f’m’,n, (b)的数据。另外,子用户秘密密钥输出部363使用CPU911,输入子委任元计算部378存储的表示(D”-L-1)个元h’λ’的数据、和子副委任元计算部379存储的表示(D+2)×(D”-L-1)个h’m’,λ’的数据。
子用户秘密密钥输出部363使用CPU911,输出包括表示1个元k’0、(D+2)个元k’n,(a)、(D+2)个元k’n,(b)、(D+2)个元f’m’, 0、(D+2)×(D+2)个元f’m’,n,(a)、(D+2)×(D+2)个元f’m’,n, (b)、(D”-L-1)个元hλ’、以及(D+2)×(D”-L-1)个元h’m’, λ’的数据的数据,作为子用户秘密密钥。将子用户秘密密钥输出部363输出的子用户秘密密钥秘密地通知给具有子用户标识符输入部361输入的用户ID的查询发布装置300。
查询发布装置300生成的子用户秘密密钥中的、子检索元计算部372计算出的1个元k’0相当于用户秘密密钥生成装置200的检索元计算部241计算出的1个元k0。质询元a计算部334计算出的(D+2)个元k’n,(a)相当于用户秘密密钥生成装置200的检索元a计算部242计算出的(D+2)个元kn,(a)。质询元b计算部335计算出的(D+2)个元k’n,(b)相当于用户秘密密钥生成装置200的检索元b计算部243计算出的(D+2)个元kn,(b)。子干扰元计算部375计算出的(D+2)个元f’m’,0相当于用户秘密密钥生成装置200的干扰元计算部251计算出的(D+2)个元fm,0。子干扰元a计算部376计算出的(D+2)×(D+2)个元f’m’,n,(a)相当于用户秘密密钥生成装置200的干扰元a计算部252计算出的(D+2)×(D+2)个元fm,n,(a)。子干扰元b计算部377计算出的(D+2)×(D+2)个元f’m’,n,(b)相当于用户秘密密钥生成装置200的干扰元b计算部253计算出的(D+2)×(D+2)个元fm,n,(b)。子委任元计算部378计算出的(D”-L-1)个元h’λ’相当于用户秘密密钥生成装置200的委任元计算部261计算出的(D’-L)个元hλ。子副委任元计算部379计算出的(D+2)×(D”-L-1)个元h’m’,λ’相当于用户秘密密钥生成装置200的副委任元计算部262计算出的(D+2)×(D’-L)个元hm,λ。
这样,委任元存储部327存储的(D’-L)个元hλ以及副委任元存储部328存储的(D+2)×(D’-L)个元hm,λ中,在子用户秘密密钥的生成中,使用λ等于(L+2)以上且D”以下的整数λ’的(D”-L-1)个元hλ’以及(D+2)×(D”-L-1)个元hm,λ’。λ是(L+1)以上且D’以下的整数,所以只要整数D’是整数D”以上,则查询发布装置300能够生成子用户秘密密钥。
图15是示出该实施方式中的子用户秘密密钥生成处理S740的流程的一个例子的流程图。
在子用户秘密密钥生成处理S740中,子用户秘密密钥生成部370计算子用户秘密密钥中包含的元中的、除了共同处理部330生成的元以外的元。另外,此处,说明计算子用户秘密密钥的特定的步骤,但计算步骤不限于此处说明的步骤,只要是数学上得到相同值的结果的计算步骤,则也可以是与此处说明的步骤不同的步骤。
子用户秘密密钥生成处理S740具有子检索元计算工序S741、子λ初始化工序S742、子委任元初始化工序S743、m初始化工序S744、子委任元计算工序S745、m增加工序S746、m判定工序S747、子λ增加工序S748、子λ判定工序S749、子m初始化工序S750、子总积元F初始化工序S751、子总积元H初始化工序S752、子λ初始化工序S753、子副委任元初始化工序S754、子λ增加工序S755、子λ判定工序S756、n初始化工序S757、子干扰元a初始化工序S758、子干扰元b初始化工序S759、n增加工序S760、n判定工序S761、m初始化工序S762、副随机数π选择工序S763、子总积元F计算工序S764、子总积元H计算工序S765、子λ初始化工序S766、子副委任元计算工序S767、子λ增加工序S768、子λ判定工序S769、n初始化工序S770、子干扰元a计算工序S771、子干扰元b计算工序S772、n增加工序S773、n判定工序S774、m增加工序S775、m判定工序S776、子干扰元计算工序S777、子m增加工序S778、子m判定工序S779。
在子检索元计算工序S741中,子检索元计算部372根据子用户标识符存储部362存储的1个整数IL+1、和在共同处理S710中总积元H计算部333计算出的1个元ΠH,使用CPU911,计算元ΠH的IL+1次幂。
子检索元计算部372根据所计算出的1个元“ΠH^IL+1”、检索元存储部321存储的1个元k0、以及在共同处理S710中总积元F计算部332计算出的1个元ΠF,使用CPU911,计算元k0与元ΠF与元“ΠH^IL+1”之积,得到作为乘法群G2的元的1个元k’0。
在子λ初始化工序S742中,子委任元计算部378使用CPU911,将变量λ’的值设定为对整数L加上了2的值(L+2)。
在子委任元初始化工序S743中,子委任元计算部378使用RAM914,将委任元存储部327存储的(D’-L)个元hλ中的、λ等于变量λ’的值的1个元hλ’存储为用于计算1个元h’λ’的最初的值。
在m初始化工序S744中,子委任元计算部378使用CPU911,将变量m的值设定为0。
在子委任元计算工序S745中,子委任元计算部378根据副委任元存储部328存储的(D+2)×(D’-L)个元hm,λ中的、m等于变量m的值、且λ等于变量λ的值的1个元hm,λ’、和随机数π选择部331选择出的(D+2)个整数πm中的、m等于变量m的值的1个整数πm,使用CPU911,计算元hm,λ’的πm次幂。
子委任元计算部378根据所存储的1个元h’λ’和所计算出的1个元“hm,λ’^πm”,使用CPU911,计算元h’λ’与元“hm,λ’^πm”之积“h’λ’·hm, λ’^πm”。子委任元计算部378使用RAM914,将所计算出的1个积“h’λ’·hm,λ’^πm”存储为元h’λ’的新的值。
在m增加工序S746中,子委任元计算部378使用CPU911,使变量m的值增加1。
在m判定工序S747中,子委任元计算部378使用CPU911,比较变量m的值和对整数D加上了1的值(D+1)。
在变量m的值是(D+1)以下的情况下,子委任元计算部378使用CPU911,返回到子委任元计算工序S745,继续1个元h’λ’的计算。
在变量m的值大于(D+1)的情况下,子委任元计算部378使用CPU911,结束1个元h’λ’的计算,进入子λ增加工序S748。
在子λ增加工序S748中,子委任元计算部378使用CPU911,使变量λ’的值增加1。
在子λ判定工序S749中,子委任元计算部378使用CPU911,比较变量λ’的值和整数D”。
在变量λ’的值是D”以下的情况下,子委任元计算部378使用CPU911,返回到子委任元初始化工序S743,计算下一个元h’λ’。
在变量λ’的值大于D”的情况下,子委任元计算部378使用CPU911,结束(D”-L-1)个元h’λ’的计算,进入子m初始化工序S750。
由此,子委任元初始化工序S743至子λ判定工序S749的工序被反复执行(D”-L-1)次。子委任元计算部378每当变量λ’反复1次时,将子委任元计算工序S745执行(D+2)次,计算1个元h’λ’。子委任元计算部378全部计算(D”-L-1)个元h’λ’。
在子m初始化工序S750中,子总积元F计算部373使用CPU911,将变量m’的值设定为0。
在子总积元F初始化工序S751中,子总积元F计算部373使用RAM914,将乘法群G2的单位元1存储为用于计算1个元ΠF,m’的最初的值。
在子总积元H初始化工序S752中,子总积元H计算部374使用RAM914,将乘法群G2的单位元1存储为用于计算1个元ΠH,m’的最初的值。
在子λ初始化工序S753中,子副委任元计算部379使用CPU911,将变量λ’的值设定为对整数L加上了2的值(L+2)。
在子副委任元初始化工序S754中,子副委任元计算部379使用RAM914,将乘法群G2的单位元1存储为用于计算1个元h’m’,λ’的最初的值。
在子λ增加工序S755中,子副委任元计算部379使用CPU911,使变量λ’的值增加1。
在子λ判定工序S756中,子副委任元计算部379使用CPU911,比较变量λ’的值和整数D”。
在变量λ’的值是D”以下的情况下,子副委任元计算部379使用CPU911,返回到子副委任元初始化工序S754,设定下一个元h’m’,λ’。
在变量λ’的值大于D”的情况下,子副委任元计算部379使用CPU911,结束(D”-L-1)个元h’m’,λ’的设定,进入n初始化工序S757。
在n初始化工序S757中,子干扰元a计算部376使用CPU911,将变量n的值设定为0。
在子干扰元a初始化工序S758中,子干扰元a计算部376使用RAM914,将乘法群G2的单位元1存储为用于计算1个元f’m’,n,(a)的最初的值。
在子干扰元b初始化工序S759中,子干扰元b计算部377使用RAM914,将乘法群G2的单位元1存储为用于计算1个元f’m’,n,(b)的最初的值。
在n增加工序S760中,子干扰元a计算部376使用CPU911,使变量n的值增加1。
在n判定工序S761中,子干扰元a计算部376使用CPU911,比较变量n的值和对整数D加上了1的值(D+1)。
在变量n的值是(D+1)以下的情况下,子干扰元a计算部376使用CPU911,返回到子干扰元a初始化工序S758,设定下一个元f’m’, n,(a)以及下一个元f’m,n,(b)。
在变量n的值大于(D+1)的情况下,子干扰元a计算部376使用CPU911,结束(D+2)个元f’m,n,(a)以及(D+2)个元f’m’,n,(b)的设定,进入m初始化工序S762。
在m初始化工序S762中,副随机数π选择部371使用CPU911,将变量m的值设定为0。
在副随机数π选择工序S763中,副随机数π选择部371使用CPU911,从0以上且小于p的整数之中,均匀随机地选择1个整数πm, m’。
在子总积元F计算工序S764中,子总积元F计算部373根据干扰元存储部324存储的(D+2)个元fm,0中的、m等于变量m的值的1个元fm,0、和在副随机数π选择工序S763中副随机数π选择部371选择出的整数πm,m’,使用CPU911,计算元fm,0的πm,m’次幂。
子总积元F计算部373根据所存储的1个元ΠF,m’、和所计算出的1个元“fm,0^πm,m’”,基于CPU911,计算元ΠF,m’与元“fm,0^πm,m’”之积“ΠF,m’·fm,0^πm,m’”。子总积元F计算部373使用RAM914,将所计算出的1个积“ΠF,m’·fm,0^πm,m’”存储为元ΠF,m’的新的值。
在子总积元H计算工序S765中,子总积元H计算部374根据副委任元存储部328存储的(D+2)×(D’-L)个元hm,λ中的、m等于变量m的值、且λ等于(L+1)的1个元hm,L+1、以及在副随机数π选择工序S763中副随机数π选择部371选择出的1个整数πm,m’,使用CPU911,计算元hm,L+1的πm,m’次幂。
子总积元H计算部374根据所存储的1个元ΠH,m’、和所计算出的1个元“hm,L+1^πm,m’”,使用CPU911,计算元ΠH,m’与元“hm,L+1^πm, m’”之积“ΠH,m’·hm,L+1^πm,m’”。子总积元H计算部374使用RAM914,将所计算出的1个积“ΠH,m’·hm,L+1^πm,m’”存储为元ΠH,m’的新的值。
在子λ初始化工序S766中,子副委任元计算部379使用CPU911,将变量λ’的值设定为对整数L加上了2的值(L+2)。
在子副委任元计算工序S767中,子副委任元计算部379根据副委任元存储部328存储的(D+2)×(D’-L)个元hm,λ中的、m等于变量m的值、且λ等于变量λ’的值的1个元hm,λ’、和在副随机数π选择工序S763中副随机数π选择部371选择出的1个整数πm,m’,使用CPU911,计算元hm,λ’的πm,m’次幂。
子副委任元计算部379根据所存储的(D”-L-1)个元hm’,λ’中的、λ’等于变量λ’的值的1个元h’m’,λ’、和所计算出的1个元“hm,λ’^πm, m’”,使用CPU911,计算元h’m’,λ’与元“hm,λ’^πm,m’”之积“h’m’,λ’·hm, λ’^πm,m’”。子副委任元计算部379使用RAM914,将所计算出的积“h’m’, λ’·hm,λ’^πm,m’”存储为λ’等于变量λ’的元h’m’,λ’的新的值。
在子λ增加工序S768中,子副委任元计算部379使用CPU911,使变量λ’的值增加1。
在子λ判定工序S769中,子副委任元计算部379使用CPU911,比较变量λ’的值和整数D”。
在变量λ’的值是D”以下的情况下,子副委任元计算部379使用CPU911,返回到子副委任元计算工序S767,计算下一个元h’m’,λ’。
在变量λ’的值大于D”的情况下,子副委任元计算部379使用CPU911,进入n初始化工序S770。
在n初始化工序S770中,子干扰元a计算部376使用CPU911,将变量n的值设定为0。
在子干扰元a计算工序S771中,子干扰元a计算部376根据干扰元a存储部325存储的(D+2)×(D+2)个元fm,n,(a)中的、m等于变量m的值、且n等于变量n的值的1个元fm,n,(a)、和在副随机数π选择工序S763中副随机数π选择部371选择出的1个整数πm,m’,使用CPU911,计算元fm,n,(a)的πm,m’次幂。
子干扰元a计算部376根据所存储的(D+2)个元f’m’,n,(a)中的、n等于变量n的值的1个元f’m’,n,(a)、和所计算出的1个元“fm,n,(a)^πm,m’”,使用CPU911,计算元f’m’,n,(a)与元“fm,n,(a)^πm,m’”之积“f’m’,n,(a)·fm,n,(a)^πm,m’”。子干扰元a计算部376使用RAM914,将所计算出的1个积“f’m’,n,(a)·fm,n,(a)^πm,m’”存储为n等于变量n的值的元f’m’,n,(a)的新的值。
在子干扰元b计算工序S772中,子干扰元b计算部377根据干扰元b存储部326存储的(D+2)×(D+2)个元fm,n,(b)中的、m等于变量m的值、且n等于变量n的值的1个元fm,n,(b)、和在副随机数π选择工序S763中副随机数π选择部371选择出的1个整数πm,m’,使用CPU911,计算元fm,n,(b)的πm,m’次幂。
子干扰元b计算部377根据所存储的(D+2)个元f’m’,n,(b)中的、n等于变量n的值的1个元f’m’,n,(b)、和所计算出的1个元“fm,n,(b)^πm,m’”,使用CPU911,计算元f’m’,n,(b)与元“fm,n,(b)^πm,m’”之积“f’m’,n,(b)·fm,n,(b)^πm,m’”。子干扰元a计算部376使用RAM914,将所计算出的1个积“f’m’,n,(b)·fm,n,(b)^πm,m’”存储为n等于变量n的值的元f’m’,n,(b)的新的值。
在n增加工序S773中,子干扰元a计算部376使用CPU911,使变量n的值增加1。
在n判定工序S774中,子干扰元a计算部376使用CPU911,比较变量n的值和对整数D加上了1的值(D+1)。
在变量n的值是(D+1)以下的情况下,子干扰元a计算部376使用CPU911,返回到子干扰元a计算工序S771,计算下一个元f’m’, n,(a)以及下一个元f’m’,n,(b)。
在变量n的值大于(D+1)的情况下,子干扰元a计算部376使用CPU911,进入m增加工序S775。
在m增加工序S775中,副随机数π选择部371使用CPU911,使变量m的值增加1。
在m判定工序S776中,副随机数π选择部371使用CPU911,比较变量m的值和对整数D加上了1的值(D+1)。
在变量m的值是(D+1)以下的情况下,副随机数π选择部371使用CPU911,返回到副随机数π选择工序S763,选择下一个整数πm, m’。
在变量m的值大于(D+1)的情况下,副随机数π选择部371使用CPU911,进入子干扰元计算工序S777。
在子干扰元计算工序S777中,子干扰元计算部375根据子用户标识符存储部362存储的1个整数IL+1、和子总积元H计算部374计算出的1个元ΠH,m’,使用CPU911,计算元ΠH,m’的IL+1次幂。
子干扰元计算部375根据子总积元F计算部373计算出的1个元ΠF,m’、和所计算出的1个元“ΠH,m’^IL+1”,使用CPU911,计算元ΠF, m’与元“ΠH,m’^IL+1”之积,得到作为乘法群G2的元的1个元f’m’,0。
在子m增加工序S778中,子总积元F计算部373使用CPU911,使变量m’的值增加1。
在子m判定工序S779中,子总积元F计算部373使用CPU911,比较变量m’的值和对整数D加上了1的值(D+1)。
在变量m’的值是(D+1)以下的情况下,子总积元F计算部373使用CPU911,返回到子总积元F初始化工序S751,设定下一个元ΠF,m’。
在变量m’的值大于(D+1)的情况下,子总积元F计算部373使用CPU911,结束子用户秘密密钥生成处理S740。
由此,子总积元F初始化工序S751至子m判定工序S779的工序被反复执行(D+2)次。
每当变量m’反复1次,副随机数π选择工序S763至m判定工序S776的工序被反复执行(D+2)次。每当变量m’反复1次,子总积元F计算部373将子总积元F计算工序S764执行(D+2)次,计算1个元ΠF,m’。子总积元F计算部373全部计算(D+2)个元ΠF,m’。每当变量m’反复1次,子总积元H计算部374将子总积元H计算工序S765执行(D+2)次,计算1个元ΠH,m’。子总积元H计算部374全部计算(D+2)个元ΠH,m’。
每当变量m反复1次,子副委任元计算工序S767至子λ判定工序S769的工序被反复执行(D”-L-1)次。每当变量m反复1次,子副委任元计算部379将子副委任元计算工序S767执行(D”-L-1)次,计算(D”-L-1)个元h’m’,λ’。通过将其反复执行(D+2)次,子副委任元计算部379计算(D”-L-1)个元h’m’,λ’。通过进一步将其反复执行(D+2)次,子副委任元计算部379全部计算(D+2)×(D”-L-1)个元h’m’,λ’。
每当变量m反复1次,子干扰元a计算工序S771至n判定工序S774的工序被反复执行(D+2)次。每当变量m反复1次,子干扰元a计算部376将子干扰元a计算工序S771执行(D+2)次,计算(D+2)个元f’m’,n,(a)。通过将其反复执行(D+2)次,子干扰元a计算部376计算(D+2)个元f’m’,n,(a)。通过进一步将其反复执行(D+2)次,子干扰元a计算部376全部计算(D+2)×(D+2)个元f’m’,n,(a)。每当变量m反复1次,子干扰元b计算部377将子干扰元b计算工序S772执行(D+2)次,计算(D+2)个元f’m’,n,(b)。通过将其反复执行(D+2)次,子干扰元b计算部377计算(D+2)个元f’m’,n,(b)。通过进一步将其反复(D+2)次,计算子干扰元b计算部377全部计算(D+2)×(D+2)个元f’m’,n,(b)。
用户秘密密钥生成装置200通过计算以下的式的右边,计算用户秘密密钥中包含的元。
【式16】
元k0以及元fm,0的计算式能够如以下那样变形。
【式17】
子检索元计算部372通过计算以下的式的右边,计算子用户秘密密钥中包含的元k’0。
【式18】
元k’0的计算式能够如以下那样变形。
【式19】
其中,
【式20】
ρ’n是0以上且小于p的整数。n是0以上且(D+1)以下的整数。
(D+2)个整数ρn、(D+2)×(D+2)个整数ρn,m、以及(D+2)个整数πm都在0以上且小于p的整数之中均匀随机地分布,所以(D+2)个整数ρ’n也在0以上且小于p的整数之中均匀随机地分布。因此,整数ρ’n与用户秘密密钥生成装置200的随机数ρ选择部231选择的整数ρn等价。
因此,子检索元计算部372计算出的元k’0与用户秘密密钥生成装置200的检索元计算部241计算出的元k0等价。
质询元a计算部334通过计算以下的式的右边,计算子用户秘密密钥中包含的元k’n,(a)。
【式21】
元k’n,(a)的计算式能够如以下那样变形。
【式22】
因此,质询元a计算部334计算出的元k’n,(a)与用户秘密密钥生成装置200的检索元a计算部242计算出的元kn,(a)等价。
质询元b计算部335通过计算以下的式的右边,计算子用户秘密密钥中包含的元k’n,(b)。
【式23】
元k’n,(b)的计算式能够如以下那样变形。
【式24】
因此,质询元b计算部335计算出的元k’n,(b)与用户秘密密钥生成装置200的检索元b计算部243计算出的元kn,(b)等价。
子干扰元计算部375通过计算以下的式的右边,计算子用户秘密密钥中包含的元f’m’,0。
【式25】
元f’m’,0的计算式能够如以下那样变形。
【式26】
其中,
【式27】
ρ’n,m’是0以上且小于p的整数。n是0以上且(D+1)以下的整数。m是0以上且(D+1)以下的整数。
(D+2)×(D+2)个整数ρn,m和(D+2)×(D+2)个整数πm,m’都在0以上且小于p的整数之中均匀随机地分布,所以(D+2)×(D+2)个整数ρ’n,m’也在0以上且小于p的整数之中均匀随机地分布。因此,整数ρ’n,m’与用户秘密密钥生成装置200的副随机数ρ选择部232选择的整数ρn,m等价。
因此,子干扰元计算部375计算出的元f’m’,0与用户秘密密钥生成装置200的干扰元计算部251计算出的元fm,0等价。
子干扰元a计算部376通过计算以下的式的右边,计算子用户秘密密钥中包含的元f’m’,n,(a)。
【式28】
元f’m’,n,(a)的计算式能够如以下那样变形。
【式29】
因此,子干扰元a计算部376计算出的元f’m’,n,(a)与用户秘密密钥生成装置200的干扰元a计算部252计算出的元fm,n,(a)等价。
子干扰元b计算部377通过计算以下的式的右边,计算子用户秘密密钥中包含的元f’m’,n,(b)。
【式30】
元f’m’,n,(b)的计算式能够如以下那样变形。
【式31】
因此,子干扰元b计算部377计算出的元f’m’,n,(b)与用户秘密密钥生成装置200的干扰元b计算部253计算出的元fm,n,(b)等价。
子委任元计算部378通过计算以下的式的右边,计算子用户秘密密钥中包含的元h’λ’。
【式32】
元h’λ’的计算式能够如以下那样变形。
【式33】
因此,子委任元计算部378计算出的元h’λ’与用户秘密密钥生成装置200的委任元计算部261计算出的元hλ等价。
子副委任元计算部379通过计算以下的式的右边,计算子用户秘密密钥中包含的元h’m’,λ’。
【式34】
元h’m’,λ’的计算式能够如以下那样变形。
【式35】
因此,子副委任元计算部379计算出的元h’m’,λ’与用户秘密密钥生成装置200的副委任元计算部262计算出的元hm,λ等价。
如上所述,子用户秘密密钥中包含的全部元与对应的用户秘密密钥中包含的元等价,所以查询发布装置300生成的子用户秘密密钥与用户秘密密钥生成装置200生成的用户秘密密钥等价。
图16是示出该实施方式中的加密装置400的功能块的结构的一个例子的框结构图。
加密装置400使用公开参数生成装置100生成的公开参数,生成嵌入了关键字的密文。
加密装置400具有公开参数输入部411、权限范围输入部412、嵌入关键字输入部413、密文输出部414、公开参数存储部420、权限范围存储部430、嵌入关键字存储部441、密文生成部450。
公开参数输入部411使用CPU911,输入公开参数生成装置100生成的公开参数。在公开参数中,包括表示作为乘法群G1的元的1个生成元g1、作为乘法群G3的元的1个元Ω、作为乘法群G1的元的(D+2)×(D+1)个元an,l、以及作为乘法群G1的元的(D+2)×(D+1)个元bn,l的数据。
公开参数存储部420使用磁盘装置920,存储公开参数输入部411输入的公开参数。
权限范围输入部412使用CPU911,输入表示权限范围的1个整数L’和L”个整数I’j,其中,所述权限范围指定给予检索所生成的密文中嵌入的关键字的权限的查询发布装置300的范围。整数L’是1以上且(D-1)以下的整数。L”是从0以上且L’以下的整数之中选择出的任意的整数。整数I’j是0以上且小于p的整数。j是从1以上且(D-1)以下的整数之中选择出的L”个任意的整数。
整数L’表示对给予权限的查询发布装置300的用户ID进行了分节的数量L。意味着针对分节用户ID的数量L不等于整数L’的层次不同的查询发布装置300,不给予检索权限。
整数I’j表示指定作为查询发布装置300的用户ID的L个整数Ii中的、第j个整数Ij。意味着对第j个整数Ij与I’j不一致的查询发布装置300,不给予检索权限。
在用户ID是字符串的情况下,权限范围输入部412也可以输入用户ID中指定的L”个部分的字符串。在该情况下,权限范围输入部412将所输入的L”个字符串变换为整数I’j。
另外,权限范围输入部412也可以输入指示用户ID中未指定的(L”-L’)个部分的通配符。在该情况下,权限范围输入部412合计所输入的整数I’j的数量、和所输入的通配符的数量,计算整数L’。
以下,将以L”个整数j为元的集合称为“A’”。集合A’表示用户ID中的、被指定了整数Ij的部分。另外,将1以上且L’以下的L’个整数中的、以不是集合A’的元的(L’-L”)个整数为元的集合称为“A”。集合A表示用户ID中的、被指定了通配符的部分。
例如,在指示图3所示的权限范围610a的情况下,整数L’是2、集合A’是{1}、集合A是{2}。在指示权限范围610b的情况下,整数L’是1、集合A’是{1}、集合A是空集合。另外,在指示权限范围610f的情况下,整数L’是4、集合A’是空集合、集合A是{1,2,3,4}。
权限范围存储部430使用磁盘装置920,存储权限范围输入部412输入的权限范围。
嵌入关键字输入部413使用CPU911,作为在所生成的密文中嵌入的关键字,输入1个整数W’。整数W’是0以上且小于p的整数。另外,嵌入关键字输入部413也可以输入字符串作为关键字。在该情况下,嵌入关键字输入部413将所输入的关键字变换为整数W’。
嵌入关键字存储部441使用磁盘装置920,存储表示嵌入关键字输入部413输入的1个整数W’的数据作为嵌入关键字。
密文生成部450根据公开参数存储部420存储的公开参数、权限范围存储部430存储的权限范围、以及嵌入关键字存储部441存储的嵌入关键字,使用CPU911,生成密文。
密文输出部414使用CPU911,输出密文生成部450生成的密文。密文输出部414输出的密文由检索装置500存储。
图17是示出该实施方式中的加密装置400中的、公开参数存储部420、权限范围存储部430、密文生成部450的详细结构的一个例子的详细框图。
公开参数存储部420具有第一生成元存储部421、公开元Ω存储部422、公开元a存储部423、公开元b存储部424。
权限范围存储部430具有分节数存储部431、权限标识符存储部432。
密文生成部450具有随机数r选择部451、副随机数r选择部452、随机数元选择部453、密码元计算部456、验证元计算部457、总积元A计算部461、总积元B计算部462、密码元a计算部463、密码元b计算部464、密码部分元a计算部465、密码部分元b计算部466。
第一生成元存储部421使用磁盘装置920,存储公开参数中的、表示作为乘法群G1的元的1个生成元g1的数据。
公开元Ω存储部422使用磁盘装置920,存储公开参数中的、表示作为乘法群G3的元的1个元Ω的数据。
公开元a存储部423使用磁盘装置920,存储公开参数中的、表示作为乘法群G1的元的(D+2)×(D+1)个元an,l的数据。n是0以上且(D+1)以下的整数。l是0以上且D以下的整数。
公开元b存储部424使用磁盘装置920,存储公开参数中的、表示作为乘法群G1的元的(D+2)×(D+1)个元bn,l的数据。n是0以上且(D+1)以下的整数。l是0以上且D以下的整数。
分节数存储部431使用磁盘装置920,存储表示1个整数L’的数据。
另外,权限范围存储部430也可以代替分节数存储部431而具有存储表示集合A或者集合A’的数据的集合存储部。
权限标识符存储部432使用磁盘装置920,存储表示L”个整数I’j的数据。
随机数r选择部451使用CPU911,从0以上且小于p的整数之中,均匀随机地选择1个整数。以下,将随机数r选择部451选择出的整数称为“r”。随机数r选择部451使用RAM914,存储表示选择出的1个整数r的数据。
副随机数r选择部452使用CPU911,从0以上且小于p的整数之中,均匀随机地选择(D+2)个整数。以下,将副随机数r选择部452选择出的整数称为“rn”。n是0以上且(D+1)以下的整数。副随机数r选择部452使用RAM914,存储表示选择出的(D+2)个整数rn的数据。
随机数元选择部453使用CPU911,从乘法群G3的元之中,均匀随机地选择1个元。以下,将随机数元选择部453选择出的元称为“R”。随机数元选择部453使用RAM914,存储表示选择出的1个元R的数据。
密码元计算部456使用CPU911,输入第一生成元存储部421存储的表示1个生成元g1的数据、和随机数r选择部451存储的表示1个整数r的数据。密码元计算部456使用CPU911,计算生成元g1的r次幂。以下,将密码元计算部456计算出的元“g1^r”称为“c0”。c0是乘法群G1的元。密码元计算部456使用RAM914,存储表示所计算出的1个元c0的数据。
验证元计算部457使用CPU911,输入公开元Ω存储部422存储的表示1个元Ω的数据、随机数r选择部451存储的表示1个整数r的数据、以及随机数元选择部453存储的表示1个元R的数据。
验证元计算部457使用CPU911,计算元Ω的(-r)次幂。验证元计算部457计算出的1个元“Ω^(-r)”是乘法群G3的元。
验证元计算部457使用CPU911,计算元R与所计算出的元“Ω^(-r)”之积“R·Ω^(-r)”。以下,将验证元计算部457计算出的积“R·Ω^(-r)”称为“E”。E是乘法群G3的元。验证元计算部457使用RAM914,存储表示所计算出的1个元E的数据。
总积元A计算部461使用CPU911,输入公开元a存储部423存储的表示(D+2)×(D+1)个元an,l的数据、分节数存储部431存储的表示1个整数L’的数据、权限标识符存储部432存储的表示L”个整数I’j的数据、以及嵌入关键字存储部441存储的表示1个整数W’的数据。
总积元A计算部461根据1个整数W’、和(D+2)×(D+1)个元an,l中的、l(字母l)等于(L’+1)的(D+2)个元an,L’+1,使用CPU911,计算(D+2)个元an,L’+1各个的W’次幂。总积元A计算部461计算出的(D+2)个元“an,L’+1^W’”是乘法群G1的元。
总积元A计算部461根据L”个整数I’j、和(D+2)×(D+1)个元an,l中的、l(字母l)等于作为集合A’的要素的L”个整数j中的某一个的(D+2)×L”个元an,j,使用CPU911,针对每1个整数I’j,计算j与整数I’j相同的(D+2)个元an,j各个的I’j次幂。总积元A计算部461计算出的元“an,j^I’j”是乘法群G1的元。整数I’j有L”个,所以总积元A计算部461全部计算(D+2)×L”个元“an,j^I’j”。
总积元A计算部461根据(D+2)×(D+1)个元an,l中的、l(字母l)等于0的(D+2)个元an,0、所计算出的(D+2)个元“an,L’+1^W’”、以及所计算出的(D+2)×L”个元“an,j^I’j”,使用CPU911,针对每1个元an,0,计算将元an,0、(D+2)个元“an,L’+1^W’”中的n与元an,0相同的1个元“an,L’+1^W’”、以及(D+2)×L”个元“an,j^I’j”中的n与元an,0相同的L”个元“an,j^I’j”合起来的(L”+2)个元的总积。以下,将总积元A计算部461计算出的总积称为“ΠA,n”。n是0以上且(D+1)以下的整数。ΠA,n是乘法群G1的元。总积元A计算部461使用RAM914,存储表示所计算出的(D+2)个元ΠA,n的数据。
总积元B计算部462使用CPU911,输入公开元b存储部424存储的表示(D+2)×(D+1)个元bn,l的数据、分节数存储部431存储的表示1个整数L’的数据、权限标识符存储部432存储的表示L”个整数I’j的数据、以及嵌入关键字存储部441存储的表示1个整数W’的数据。
总积元B计算部462根据1个整数W’、和(D+2)×(D+1)个元bn,l中的l(字母l)等于(L’+1)的(D+2)个元bn,L’+1,使用CPU911,计算(D+2)个元bn,L’+1各个的W’次幂。总积元B计算部462计算出的(D+2)个元“bn,L’+1^W’”是乘法群G1的元。
总积元B计算部462根据L”个整数I’j、和(D+2)×(D+1)个元bn,l中的l(字母l)等于作为集合A’的要素的L”个整数j中的某一个的(D+2)×L”个元b n,j,使用CPU911,针对每1个整数I’j,计算j与整数I’j相同的(D+2)个元bn,j各个的I’j次幂。总积元B计算部462计算出的元“bn,j^I’j”是乘法群G1的元。整数I’j是L”个,所以总积元B计算部462全部计算(D+2)×L”个元“an,j^I’j”。
总积元B计算部462根据(D+2)×(D+1)个元a n,l中的l(字母l)等于0的(D+2)个元bn,0、所计算出的(D+2)个元“bn,L’+1^W’”、以及所计算出的(D+2)×L”个元“bn,j^I’j”,使用CPU911,针对每1个元bn,0,计算将元bn,0、(D+2)个元“bn,L’+1^W’”中的n与元bn, 0相同的1个元“bn,L’+1^W’”、以及(D+2)×L”个元“bn,j^I’j”中的n与元bn,0相同的L”个元“bn,j^I’j”合起来的(L”+2)个元的总积。以下,将总积元B计算部462计算出的总积称为“ΠB,n”。n是0以上且(D+1)以下的整数。ΠB,n是乘法群G1的元。总积元B计算部462使用RAM914,存储表示所计算出的(D+2)个元ΠB,n的数据。
密码元a计算部463使用CPU911,输入副随机数r选择部452存储的表示(D+2)个整数rn的数据、和总积元B计算部462存储的表示(D+2)个元ΠB,n的数据。密码元a计算部463使用CPU911,针对(D+2)个整数rn,分别计算n与整数rn相同的1个元ΠB,n的rn次幂。以下,将密码元a计算部463计算出的元“ΠB,n^rn”称为“cn, (a)”。n是0以上且(D+1)以下的整数。cn,(a)是乘法群G1的元。密码元a计算部463使用RAM914,存储表示所计算出的(D+2)个元cn,(a)的数据。
密码元b计算部464使用CPU911,输入随机数r选择部451存储的表示1个整数r的数据、副随机数r选择部452存储的表示(D+2)个整数rn的数据、以及总积元A计算部461存储的表示(D+2)个元ΠA,n的数据。密码元b计算部464使用CPU911,针对(D+2)个整数rn,分别计算从整数r中减去整数rn的差“r-rn”。密码元b计算部464使用CPU911,针对(D+2)个整数rn,分别计算n与整数rn相同的1个元ΠA,n的“r-rn”次幂。以下,将密码元b计算部464计算出的元“ΠA,n^(r-rn)”称为“cn,(b)”。n是0以上且(D+1)以下的整数。cn,(b)是乘法群G1的元。密码元b计算部464使用RAM914,存储表示所计算出的(D+2)个元cn,(b)的数据。
密码部分元a计算部465使用CPU911,输入公开元b存储部424存储的表示(D+2)×(D+1)个元bn,l的数据、和副随机数r选择部452存储的表示(D+2)个整数rn的数据。密码部分元a计算部465根据(D+2)×(D+1)个元bn,l中的、l(字母l)等于作为集合A的元的(L’-L”)个整数j中的某一个的(D+2)×(L’-L”)个元bn, j、和(D+2)个整数rn,使用CPU911,针对每1个整数rn,计算n与整数rn相同的(L’-L”)个元bn,j各个的rn次幂。以下,将密码部分元a计算部465计算出的元“bn,j^rn”称为“cn,j,(a)”。n是0以上且(D+1)以下的整数。j是作为集合A的元的L”个整数。cn,j,(a)是乘法群G1的元。整数rn有(D+2)个,所以密码部分元a计算部465全部计算(D+2)×(L’-L”)个元cn,j,(a)。密码部分元a计算部465使用RAM914,存储表示所计算出的(D+2)×(L’-L”)个元cn,j,(a)的数据。
密码部分元b计算部466使用CPU911,输入公开元a存储部423存储的表示(D+2)×(D+1)个元an,l的数据、随机数r选择部451存储的表示1个整数r的数据、以及副随机数r选择部452存储的表示(D+2)个整数rn的数据。密码部分元b计算部466使用CPU911,针对(D+2)个整数rn,分别计算从整数r中减去整数rn的差“r-rn”。密码部分元b计算部466根据(D+2)×(D+1)个元an,l中的、l(字母l)等于作为集合A的元的(L’-L”)个整数j的某一个的(D+2)×(L’-L”)个元an,j、和所计算出的(D+2)个差“r-rn”,使用CPU911,针对每1个整数rn,计算n与整数rn相同的(L’-L”)个元an,j各个的“r-rn”次幂。以下,将密码部分元b计算部466计算出的元“a n,j^(r-rn)”称为“cn,j,(b)”。n是0以上且(D+1)以下的整数。j是作为集合A的元的(L’-L”)个整数。cn,j,(b)是乘法群G1的元。整数rn是(D+2)个,所以密码部分元b计算部466全部计算(D+2)×(L’-L”)个元cn,j,(b)。密码部分元b计算部466使用RAM914,存储表示所计算出的(D+2)×(L’-L”)个元cn,j,(b)的数据。
密文输出部414使用CPU911,输入分节数存储部431存储的表示1个整数L’的数据、随机数元选择部453存储的表示1个元R的数据、验证元计算部457存储的表示1个元E的数据、以及密码元计算部456存储的表示1个元c0的数据。另外,密文输出部414使用CPU911,输入密码元a计算部463存储的表示(D+2)个元cn,(a)的数据、和密码元b计算部464存储的表示(D+2)个元cn,(b)的数据。另外,密文输出部414使用CPU911,输入密码部分元a计算部465存储的表示(D+2)×(L’-L”)个元cn,j,(a)的数据、和密码部分元b计算部466存储的表示(D+2)×(L’-L”)个元cn,j,(b)的数据。
密文输出部414使用CPU911,输出包括表示1个整数L’、1个元R、1个元E、1个元c0、(D+2)个元cn,(a)、(D+2)个元cn,(b)、(D+2)×(L’-L”)个元cn,j,(a)、以及(D+2)×(L’-L”)个元cn,j,(b)的数据的数据,而作为密文。
另外,密文也可以代替表示整数L’的数据而包括表示集合A或者集合A’的数据。
图18是示出该实施方式中的密文生成处理S850的流程的一个例子的流程图。
在密文生成处理S850中,加密装置400计算密文中包含的元。另外,此处,说明生成密文的特定的步骤,但计算步骤不限于此处说明的步骤,只要是数学上得到相同值的结果的计算步骤,则也可以是与此处说明的步骤不同的步骤。
密文生成处理S850具有随机数r选择工序S851、随机数元选择工序S852、密码元计算工序S853、验证元计算工序S854、n初始化工序S855、总积元A初始化工序S856、总积元B初始化工序S857、副随机数r选择工序S858、j初始化工序S859、通配符判定工序S860、总积元A计算工序S861、总积元B计算工序S862、密码部分元a计算工序S863、密码部分元b计算工序S864、j增加工序S865、j判定工序S866、密码元a计算工序S867、密码元b计算工序S868、n增加工序S869、n判定工序S870。
在随机数r选择工序S851中,随机数r选择部451使用CPU911,从0以上且小于p的整数之中,均匀随机地选择1个整数r。
在随机数元选择工序S852中,随机数元选择部453使用CPU911,从乘法群G3的元之中,均匀随机地选择1个元R。
在密码元计算工序S853中,密码元计算部456根据第一生成元存储部421存储的1个生成元g1、和在随机数r选择工序S851中随机数r选择部451选择出的1个整数r,使用CPU911,计算生成元g1的r次幂,得到作为乘法群G1的元的1个元c0。
在验证元计算工序S854中,验证元计算部457根据公开元Ω存储部422存储的1个元Ω、和在随机数r选择工序S851中随机数r选择部451选择出的1个整数r,使用CPU911,计算元Ω的(-r)次幂。
验证元计算部457根据在随机数元选择工序S852中随机数元选择部453选择出的1个元R、和所计算出的1个元“Ω^(-r)”,使用CPU911,计算元R与元“Ω^(-r)”之积“R·Ω^(-r)”,得到作为乘法群G3的元的1个元E。
在n初始化工序S855中,总积元A计算部461使用CPU911,将变量n的值设定为0。
在总积元A初始化工序S856中,总积元A计算部461根据公开元a存储部423存储的(D+2)×(D+1)个元an,l中的、n等于变量n的值、且l(字母l)等于(L’+1)的1个元an,L’+1、和嵌入关键字存储部441存储的1个整数W’,使用CPU911,计算元an,L’+1的W’次幂。
总积元A计算部461根据公开元a存储部423存储的(D+2)×(D+1)个元an,l中的、n等于变量n的值、且l(字母l)等于0的1个元an,0、和所计算出的1个元“an,L’+1^W’”,使用CPU911,计算元an,0与元“an,L’+1^W’”之积“an,0·an,l+1^W’”。总积元A计算部461使用RAM914,将所计算出的积“an,0·an,l+1^W’”存储为用于计算1个元ΠA,n的最初的值。
在总积元B初始化工序S857中,总积元B计算部462根据公开元b存储部424存储的(D+2)×(D+1)个元bn,l中的、n等于变量n的值、且l(字母l)等于(L’+1)的1个元bn,L’+1、和嵌入关键字存储部441存储的1个整数W’,使用CPU911,计算元bn,L’+1的W’次幂。
总积元B计算部462根据公开元b存储部424存储的(D+2)×(D+1)个元bn,l中的、n等于变量n的值、且l(字母l)等于0的1个元bn,0、和所计算出的1个元“bn,L’+1^W’”,使用CPU911,计算元bn,0与元“bn,L’+1^W’”之积“bn,0·bn,L’+1^W’”。总积元B计算部462使用RAM914,将所计算出的积“bn,0·bn,L’+1^W’”存储为用于计算1个元ΠB,n的最初的值。
在副随机数r选择工序S858中,副随机数r选择部452使用CPU911,从0以上且小于p的整数之中,均匀随机地选择1个整数rn。
在j初始化工序S859中,总积元A计算部461使用CPU911,将变量j的值设定为1。
在通配符判定工序S860中,总积元A计算部461使用CPU911,判定变量j的值是否等于集合A中包含的整数。
在变量j的值不等于集合A中包含的整数的情况下,总积元A计算部461使用CPU911,进入总积元A计算工序S861。
在变量j的值等于集合A中包含的整数的情况下,总积元A计算部461使用CPU911,进入密码部分元a计算工序S863。
在总积元A计算工序S861中,总积元A计算部461根据公开元a存储部423存储的(D+2)×(D+1)个元a n,l中的、n等于变量n的值、且l(字母l)等于变量j的值的1个元an,j、和权限标识符存储部432存储的L”个整数Ij中的、j等于变量j的值的1个整数I’j,使用CPU911,计算元an,j的I’j次幂。
总积元A计算部461根据所存储的1个元ΠA,n、和所计算出的1个元“an,j^I’j”,使用CPU911,计算元ΠA,n与元“an,j^I’j”之积“ΠA, n·an,j^I’j”。总积元A计算部461使用RAM914,将所计算出的积“ΠA, n·an,j^I’j”存储为元ΠA,n的新的值。
在总积元B计算工序S862中,总积元B计算部462根据公开元b存储部424存储的(D+2)×(D+1)个元bn,l中的、n等于变量n的值、且l(字母l)等于变量j的值的1个元bn,j、和权限标识符存储部432存储的L”个整数I’j中的、j等于变量j的值的1个整数I’j,使用CPU911,计算元bn,j的I’j次幂。
总积元B计算部462根据所存储的1个元ΠB,n、和所计算出的1个元“bn,j^I’j”,使用CPU911,计算元ΠB,n与元“bn,j^I’j”之积“ΠB, n·bn,j^I’j”。总积元B计算部462使用RAM914,将所计算出的积“ΠB, n·bn,j^I’j”存储为元ΠB,n的新的值。
总积元A计算部461使用CPU911,进入j增加工序S865。
在密码部分元a计算工序S863中,密码部分元a计算部465根据公开元b存储部424存储的(D+2)×(D+1)个元bn,l中的、n等于变量n的值、且l(字母l)等于变量j的值的1个元bn,j、和在副随机数r选择工序S858中副随机数r选择部452选择出的1个整数rn,使用CPU911,计算元bn,j的rn次幂,得到作为乘法群G1的元的1个元cn,j,(a)。
在密码部分元b计算工序S864中,密码部分元b计算部466根据在随机数r选择工序S851中随机数r选择部451选择出的1个整数r、和在副随机数r选择工序S858中副随机数r选择部452选择出的1个整数rn,使用CPU911,计算从整数r中减去整数rn的差“r-rn”。
密码部分元b计算部466根据公开元a存储部423存储的(D+2)×(D+1)个元an,l中的、n等于变量n的值、且l(字母l)等于变量j的值的1个元an,j、和所计算出的1个差“r-rn”,使用CPU911,计算元an,j的“r-rn”次幂,得到作为乘法群G1的元的1个元cn,j,(b)。
在j增加工序S865中,总积元A计算部461使用CPU911,使变量j的值增加1。
在j判定工序S866中,总积元A计算部461使用CPU911,比较变量j的值和整数L’。
在变量j的值是L’以下的情况下,总积元A计算部461使用CPU911,返回到通配符判定工序S860。
在变量j的值大于L’的情况下,总积元A计算部461使用CPU911,进入密码元a计算工序S867。
在密码元a计算工序S867中,密码元a计算部463根据总积元B计算部462存储的1个元ΠB,n、和在副随机数r选择工序S858中副随机数r选择部452选择出的1个整数rn,使用CPU911,计算元ΠB, n的rn次幂,得到作为乘法群G1的元的1个元cn,(a)。
在密码元b计算工序S868中,密码元b计算部464根据在随机数r选择工序S851中随机数r选择部451选择出的1个整数r、和在副随机数r选择工序S858中副随机数r选择部452选择出的1个整数rn,使用CPU911,计算从整数r中减去整数rn的差“r-rn”。
密码元b计算部464根据总积元A计算部461存储的1个元ΠA, n、和所计算出的1个差“r-rn”,使用CPU911,计算元ΠA,n的“r-rn”次幂,得到作为乘法群G1的元的1个元cn,(b)。
在n增加工序S869中,总积元A计算部461使用CPU911,使变量n的值增加1。
在n判定工序S870中,总积元A计算部461使用CPU911,比较变量n的值和对整数D加上了1的值(D+1)。
在变量n的值是D以下的情况下,总积元A计算部461使用CPU911,返回到总积元A初始化工序S856,设定下一个元ΠA,n。
在变量n的值大于D的情况下,总积元A计算部461使用CPU911,结束密文生成处理S850。
由此,总积元A初始化工序S856至n判定工序S870的工序被反复执行(D+2)次。密码元a计算部463将密码元a计算工序S867执行(D+2)次,计算(D+2)个元cn,(a)。密码元b计算部464将密码元b计算工序S868执行(D+2)次,计算(D+2)个元cn,(b)。
每当变量n反复1次,通配符判定工序S860至j判定工序S866的工序被反复执行L’次。其中,执行密码部分元a计算工序S863和密码部分元b计算工序S864的次数是(L’-L”)次。密码部分元a计算部465将密码部分元a计算工序S863全部执行(D+2)×(L’-L”)次,计算(D+2)×(L’-L”)个元cn,j,(a)。密码部分元b计算部466将密码部分元b计算工序S864全部执行(D+2)×(L’-L”)次,计算(D+2)×(L’-L”)个元cn,j,(b)。
图19是示出该实施方式中的检索装置500的功能块的结构的一个例子的框结构图。
检索装置500从预先存储的1个以上的密文之中,检索被嵌入了在查询中指定的关键字的密文。但是,在生成了查询的查询发布装置300中没有检索该密文的权限的情况下,即使在密文中嵌入了与在查询中指定的关键字相同的关键字,也不会命中。检索装置500是不对密文进行解密而进行检索,所以不知道密文中嵌入的关键字是什么。另外,查询也被加密,所以检索装置500不知道检索着的关键字是什么。
检索装置500具有密文输入部511、查询输入部521、检索结果输出部522、密文存储部530、查询存储部540、检索部550。
密文输入部511使用CPU911,输入加密装置400生成的密文。在密文中,包括表示1个整数L’、作为乘法群G3的元的1个元R、作为乘法群G3的元的1个元E、作为乘法群G1的元的1个元c0、作为乘法群G1的元的(D×2)个元cn,(a)、作为乘法群G1的元的(D×2)个元cn,(b)、作为乘法群G1的元的(D+2)×(L’-L”)个元cn,j,(a)、以及作为乘法群G1的元的(D+2)×(L’-L”)个元cn,j,(b)的数据。
密文存储部530使用磁盘装置920,存储密文输入部511输入的密文。
查询输入部521使用CPU911,输入查询发布装置300生成的查询。在查询中,包括表示L个整数Ii、作为乘法群G2的元的1个元k’0、作为乘法群G2的元的(D+2)个元k’n,(a)、以及作为乘法群G2的元的(D+2)个元k’n,(b)的数据。
查询存储部540使用RAM914,存储查询输入部521输入的查询。
检索部550使用CPU911,从密文存储部530存储的密文之中,检索密文存储部530存储的嵌入了通过查询指定的关键字的密文。在密文存储部530存储的密文有多个的情况下,检索部550通过使用了各个密文和查询的计算,判定其密文是否命中。检索部550通过针对全部密文执行上述判定,从而从全部密文之中,抽出命中的密文。
检索结果输出部522使用CPU911,生成表示检索部550检索出的结果的消息。检索结果输出部522生成包括例如识别在检索中命中的密文对应起来的数据主体的数据、表示数据主体的所在地的数据的消息。检索结果输出部522使用CPU911,输出所生成的消息。将检索结果输出部522输出的消息通知给通知来了查询的查询发布装置300。
图20是示出该实施方式中的检索装置500中的密文存储部530、查询存储部540、检索部550的详细结构的一个例子的详细框图。
密文存储部530具有分节数存储部531、随机数元存储部532、验证元存储部533、密码元存储部534、密码元a存储部535、密码元b存储部536、密码部分元a存储部537、密码部分元b存储部538。
查询存储部540具有质询标识符存储部541、质询元存储部542、质询元a存储部543、质询元b存储部544。
检索部550具有密码总积元A计算部551、配对元A计算部552、密码总积元B计算部553、配对元B计算部554、配对元计算部555、比较元计算部556、比较部557。
分节数存储部531使用磁盘装置920,针对每1个密文,存储表示1个整数L’的数据。
随机数元存储部532使用磁盘装置920,针对每1个密文,存储表示作为乘法群G3的元的1个元R的数据。
验证元存储部533使用磁盘装置920,针对每1个密文,存储表示作为乘法群G3的元的1个元E的数据。
密码元存储部534使用磁盘装置920,针对每1个密文,存储表示作为乘法群G1的元的1个元c0的数据。
密码元a存储部535使用磁盘装置920,针对每1个密文,存储表示作为乘法群G1的元的(D+2)个元cn,(a)的数据。n是0以上且(D+1)以下的整数。
密码元b存储部536使用磁盘装置920,针对每1个密文,存储表示作为乘法群G1的元的(D+2)个元cn,(b)的数据。n是0以上且(D+1)以下的整数。
密码部分元a存储部537使用磁盘装置920,针对每1个密文,存储表示作为乘法群G1的元的(D+2)×(L’-L”)个元cn,j,(a)的数据。n是0以上且(D+1)以下的整数。j是1以上且L’以下的整数中的、集合A中包含的L”个整数。
密码部分元b存储部538使用磁盘装置920,针对每1个密文,存储表示作为乘法群G1的元的(D+2)×(L’-L”)个元cn,j,(b)的数据。n是0以上且(D+1)以下的整数。j是1以上且L’以下的整数中的、集合A中包含的L”个整数。
质询标识符存储部541使用RAM914,存储查询中的、表示L个整数Ii的数据。i是1以上且L以下的整数。
质询元存储部542使用RAM914,存储查询中的、表示作为乘法群G2的元的1个元k’0的数据。
质询元a存储部543使用RAM914,存储查询中的、表示作为乘法群G2的元的(D+2)个元k’n,(a)的数据。n是0以上且(D+1)以下的整数。
质询元b存储部544使用RAM914,存储查询中的、表示作为乘法群G2的元的(D+2)个元k’n,(b)的数据。n是0以上且(D+1)以下的整数。
密码总积元A计算部551使用CPU911,输入分节数存储部531存储的表示1个整数L’的数据、密码元a存储部535存储的表示(D+2)个元cn,(a)的数据、以及密码部分元a存储部537存储的表示(D+2)×(L’-L”)个元cn,j,(a)的数据。另外,密码总积元A计算部551使用CPU911,输入质询标识符存储部541存储的表示L个整数Ii的数据。
密码总积元A计算部551根据(D+2)×(L’-L”)个元cn,j,(a)中的、j是1以上且L以下的整数i的元cn,i,(a)、和L个整数Ii中的、i是集合A中包含的整数的整数Ii,针对每1个整数Ii,计算i与整数Ii相同的(D+2)个元cn,i,(a)各个的Ii次幂。密码总积元A计算部551计算的元“cn,i,(a)^Ii”是乘法群G1的元。
集合A的元是1以上且L’以下的整数,所以在整数L是L’以上的情况下,1以上且L以下的整数中的集合A中包含的整数的数量是与集合A的元的数量相同的(L’-L”)个。在整数L小于L’的情况下,1以上且L以下的整数中的集合A中包含的整数的数量有时小于集合A的元的数量(L’-L”)。以下,将1以上且L以下的整数中的集合A中包含的整数的数量称为“LA”。密码总积元A计算部551全部计算(D+2)×LA个元“cn,i,(a)^Ii”。
密码总积元A计算部551根据(D+2)个元cn,(a)、和所计算出的(D+2)×LA个元“cn,i,(a)^Ii”,使用CPU911,针对每1个元cn,(a),计算将1个元cn,(a)和n与元cn,(a)相同的LA个元“cn,i,(a)^Ii”合起来的全部(LA+1)个元的总积。以下,将密码总积元A计算部551计算出的总积称为“ΠA’,n”。n是0以上且(D+1)以下的整数。ΠA’,n是乘法群G1的元。密码总积元A计算部551使用RAM914,存储表示所计算出的(D+2)个元ΠA’,n的数据。
密码总积元B计算部553使用CPU911,输入分节数存储部531存储的表示1个整数L’的数据、密码元b存储部536存储的表示(D+2)个元cn,(b)的数据、以及密码部分元b存储部538存储的表示(D+2)×(L’-L”)个元cn,j,(b)的数据。另外,密码总积元B计算部553使用CPU911,输入质询标识符存储部541存储的表示L个整数Ii的数据。
密码总积元B计算部553根据(D+2)×(L’-L”)个元cn,j,(b)中的、j是1以上且L以下的整数i的(D+2)×LA个元cn,i,(b)、和L个整数Ii中的、i是集合A中包含的整数的LA个整数Ii,针对每1个整数Ii,计算i与整数Ii相同的(D+2)个元cn,i,(b)各个的Ii次幂。密码总积元B计算部553计算出的元“cn,i,(b)^Ii”是乘法群G1的元。密码总积元B计算部553全部计算(D+2)×LA个元“cn,i,(b)^Ii”。
密码总积元B计算部553根据(D+2)个元cn,(b)、和所计算出的(D+2)×LA个元“cn,i,(b)^Ii”,使用CPU911,针对每1个元cn,(b),计算将1个元cn,(b)和n与元cn,(b)相同的LA个元“cn,i,(b)^Ii”合起来的全部(LA+1)个元的总积。以下,将密码总积元B计算部553计算出的总积称为“ΠB’,n”。n是0以上且(D+1)以下的整数。ΠB’,n是乘法群G1的元。密码总积元B计算部553使用RAM914,存储表示所计算出的(D+2)个元ΠB’,n的数据。
配对元A计算部552使用CPU911,输入质询元a存储部543存储的表示(D+2)个元k’n,(a)的数据、和密码总积元A计算部551存储的表示(D+2)个元ΠA’,n的数据。配对元A计算部552根据(D+2)个元ΠA’,n、和(D+2)个元k’n,(a),使用CPU911,针对每1个元ΠA’, n,通过双线性配对e,计算1个元ΠA’,n和n与元ΠA’,n相同的1个元k’n,(a)的配对。以下,将配对元A计算部552计算出的配对称为“eA, n”。n是0以上且(D+1)以下的整数。eA,n是乘法群G3的元。配对元A计算部552计算(D+2)个元eA,n。配对元A计算部552使用RAM914,存储表示所计算出的(D+2)个元eA,n的数据。
配对元B计算部554使用CPU911,输入质询元b存储部544存储的表示(D+2)个元k’n,(b)的数据、和密码总积元B计算部553存储的表示(D+2)个元ΠB’,n的数据。配对元B计算部554根据(D+2)个元ΠB’,n、和(D+2)个元k’n,(b),使用CPU911,针对每1个元ΠB’, n,通过双线性配对e,计算1个元ΠB’,n和n与元ΠB’,n相同的1个元k’n,(b)的配对。以下,将配对元B计算部554计算出的配对称为“eB, n”。n是0以上且(D+1)以下的整数。eB,n是乘法群G3的元。配对元B计算部554计算(D+2)个元eB,n。配对元B计算部554使用RAM914,存储表示所计算出的(D+2)个元eB,n的数据。
配对元计算部555使用CPU911,输入密码元存储部534存储的表示1个元c0的数据、和质询元存储部542存储的表示1个元k’0的数据。配对元计算部555根据1个元c0和1个元k’0,使用CPU911,通过双线性配对e,计算元c0与元k’0的配对。以下,将配对元计算部555计算出的配对称为“e0”。e0是乘法群G3的元。配对元计算部555计算1个元e0。配对元计算部555使用RAM914,存储表示所计算出的1个元e0的数据。
比较元计算部556使用CPU911,输入验证元存储部533存储的表示1个元E的数据、配对元A计算部552存储的表示(D+2)个元eA,n的数据、配对元B计算部554存储的表示(D+2)个元eB,n的数据、以及配对元计算部555存储的表示1个元e0的数据。比较元计算部556根据1个元E、1个元e0、(D+2)个元eA,n、以及(D+2)个元eB,n,使用CPU911,计算将1个元E、1个元e0、(D+2)个元eA, n、以及(D+2)个元eB,n合起来的全部(2D+4)个元的总积。以下,将比较元计算部556计算出的总积称为“R’”。R’是乘法群G3的元。比较元计算部556计算1个元R’。比较元计算部556使用RAM914,存储表示所计算出的1个元R’的数据。
比较部557使用CPU911,输入随机数元存储部532存储的表示1个元R的数据、和比较元计算部556存储的表示1个元R’的数据。比较部557使用CPU911,比较1个元R和1个元R’。
在元R和元R’一致的情况下,比较部557使用CPU911,判定为在检索中命中。
在元R和元R’不一致的情况下,比较部557使用CPU911,判定为在检索中未命中。
检索结果输出部522根据比较部557的判定结果,使用CPU911,生成表示检索的结果的消息。
图21是示出该实施方式中的比较元生成处理S880的流程的一个例子的流程图。
在比较元生成处理S880中,检索部550针对1个密文,计算出作为乘法群G3的元的1个元R’。另外,此处,说明计算比较元的特定的步骤,但计算步骤不限于此处说明的步骤,只要是数学上得到相同值的结果的计算步骤,则也可以是与此处说明的步骤不同的步骤。
比较元生成处理S880具有配对元计算工序S881、比较元初始化工序S882、n初始化工序S883、密码总积元A初始化工序S884、密码总积元B初始化工序S885、i初始化工序S886、通配符判定工序S887、密码总积元A计算工序S888、密码总积元B计算工序S889、i增加工序S890、i比较工序S891、配对元A计算工序S892、配对元B计算工序S893、比较元计算工序S894、n增加工序S895、n判定工序S896。
在配对元计算工序S881中,配对元计算部555根据密码元存储部534存储的1个元c0、和质询元存储部542存储的1个元k’0,使用CPU911,通过双线性配对e,计算元c0与元k’0的配对,得到作为乘法群G3的元的1个元e0。
在比较元初始化工序S882中,比较元计算部556根据验证元存储部533存储的1个元E、和在配对元计算工序S881中配对元计算部555计算出的1个元e0,使用CPU911,计算元E与元e0之积“E·e0”。比较元计算部556使用RAM914,将所计算出的积“E·e0”存储为用于计算元R’的最初的值。
在n初始化工序S883中,密码总积元A计算部551使用CPU911,将变量n的值设定为0。
在密码总积元A初始化工序S884中,密码总积元A计算部551使用RAM914,将密码元a存储部535存储的(D+2)个元cn,(a)中的、n等于变量n的1个元cn,(a)存储为用于计算1个元ΠA’,n的最初的值。
在密码总积元B初始化工序S885中,密码总积元B计算部553使用RAM914,将密码元b存储部536存储的(D+2)个元cn,(b)中的、n等于变量n的1个元cn,(b)存储为用于计算1个元ΠB’,n的最初的值。
在i初始化工序S886中,密码总积元A计算部551使用CPU911,将变量i的值设定为1。
在通配符判定工序S887中,密码总积元A计算部551使用CPU911,判定变量i的值是否等于集合A中包含的(L’-L”)个整数的某一个。
在变量i的值等于集合A中包含的整数的情况下,密码总积元A计算部551使用CPU911,进入密码总积元A计算工序S888。
在变量i的值不等于集合A中包含的整数的情况下,密码总积元A计算部551使用CPU911,进入i增加工序S890。
在密码总积元A计算工序S888中,密码总积元A计算部551根据密码部分元a存储部537存储的(D+2)×(L’-L”)个元cn,j,(a)中的、n等于变量n的值、且j等于变量i的值的1个元cn,i,(a)、和质询标识符存储部541存储的L个整数Ii中的、i等于变量i的1个整数Ii,使用CPU911,计算元cn,i,(a)的Ii次幂。
密码总积元A计算部551根据所存储的1个元ΠA’,n、和所计算出的1个元“cn,i,(a)^Ii”,使用CPU911,计算元ΠA’,n与元“cn,i,(a)^Ix”之积“ΠA’,n·cn,i,(a)^Ii”。密码总积元A计算部551使用RAM914,将所计算出的积“ΠA’,n·cn,i,(a)^Ii”存储为1个元ΠA’,n的新的值。
在密码总积元B计算工序S889中,密码总积元B计算部553根据密码部分元b存储部538存储的(D+2)×(L’-L”)个元cn,j,(b)中的、n等于变量n的值、且j等于变量i的值的1个元cn,i,(b)、和质询标识符存储部541存储的L个整数Ii中的、i等于变量i的1个整数Ii,使用CPU911,计算元cn,i,(b)的Ii次幂。
密码总积元A计算部551根据所存储的1个元ΠB’,n、和所计算出的1个元“cn,i,(b)^Ii”,使用CPU911,计算元ΠB’,n与元“cn,i,(b)^Ii”之积“ΠB’,n·cn,i,(b)^Ii”。密码总积元B计算部553使用RAM914,将所计算出的积“ΠB’,n·cn,i,(b)^Ii”存储为1个元ΠB’,n的新的值。
在i增加工序S890中,密码总积元A计算部551使用CPU911,使变量i的值增加1。
在i比较工序S891中,密码总积元A计算部551使用CPU911,比较变量i的值和整数L。
在变量i的值是L以下的情况下,密码总积元A计算部551使用CPU911,返回到通配符判定工序S887。
在变量i的值大于L的情况下,密码总积元A计算部551使用CPU911,进入配对元A计算工序S892。
在配对元A计算工序S892中,配对元A计算部552根据密码总积元A计算部551存储的1个元ΠA’,n、和质询元a存储部543存储的(D+2)个元k’n,(a)中的、n等于变量n的1个元k’n,(a),使用CPU911,通过双线性配对e,计算元ΠA’,n与元k’n,(a)的配对,得到作为乘法群G3的元的1个元eA,n。
在配对元B计算工序S893中,配对元B计算部554根据密码总积元B计算部553存储的1个元ΠB’,n、和质询元b存储部544存储的(D+2)个元k’n,(b)中的、n等于变量n的1个元k’n,(b),使用CPU911,通过双线性配对e,计算元ΠB’,n与元k’n,(b)的配对,得到作为乘法群G3的元的1个元eB,n。
在比较元计算工序S894中,比较元计算部556根据所存储的1个元R’、在配对元A计算工序S892中配对元A计算部552计算出的1个元eA,n、以及在配对元B计算工序S893中配对元B计算部554计算出的1个元eB,n,使用CPU911,计算元R’与元eA,n与元eB,n之积“R’·eA,n·eB,n”。比较元计算部556使用RAM914,将所计算出的1个积“R’·eA,n·eB,n”存储为1个元R’的新的值。
在n增加工序S895中,密码总积元A计算部551使用CPU911,使变量n的值增加1。
在n判定工序S896中,密码总积元A计算部551使用CPU911,比较变量n的值和对整数D加上了1的值(D+1)。
在变量n的值是(D+1)以下的情况下,密码总积元A计算部551使用CPU911,返回到密码总积元A初始化工序S884。
在变量n的值大于(D+1)的情况下,密码总积元A计算部551使用CPU911,结束比较元生成处理S880。
由此,密码总积元A初始化工序S884至n判定工序S896的工序被反复执行(D+2)次。每当变量n反复1次,密码总积元A计算部551计算1个元ΠA’,n。密码总积元A计算部551全部计算(D+2)个元ΠA’,n。每当变量n反复1次,密码总积元B计算部553计算1个元ΠB’,n。密码总积元B计算部553全部计算(D+2)个元ΠA’,n。
配对元A计算部552将配对元A计算工序S892执行(D+2)次,计算(D+2)个元eA,n。配对元B计算部554将配对元B计算工序S893执行(D+2)次,计算(D+2)个元eB,n。比较元计算部556将比较元计算工序S894执行(D+2)次,计算1个元R’。
公开参数生成装置100通过计算以下的式的右边,计算公开参数以及主秘密密钥中包含的元。
【式36】
Ω=g3 ω ω′=g2 ω
g3=e(g1,g2)
用户秘密密钥生成装置200通过计算以下的式的右边,计算查询中包含的元。
【式37】
k′0=k0∏F∏H W.
元k’0的计算式能够如以下那样变形。
【式38】
元k’n,(a)的计算式能够如以下那样变形。
【式39】
元k’n,(b)的计算式能够如以下那样变形。
【式40】
加密装置400通过计算以下的式的右边,计算密文中包含的元。
【式41】
E=RΩ-T
c0=gl r
元E的计算式能够如以下那样变形。
【式42】
E=R·g3 -r·ω
元cn,(a)的计算式能够如以下那样变形。
【式43】
元cn,(b)的计算式能够如以下那样变形。
【式44】
元cn,j,(a)的计算式能够如以下那样变形。
【式45】
元cn,j,(b)的计算式能够如以下那样变形。
【式46】
检索装置500通过计算以下的式的右边,计算元R’。
【式47】
eA,n=e(∏A′,n,k′n,(a))
eB,n=e(∏B′,n,k′n,(b))
元e0的计算式能够如以下那样变形。
【式48】
元eA,n的计算式能够如以下那样变形。
【式49】
元eB,n的计算式能够如以下那样变形。
【式50】
因此,元R’的计算式能够如以下那样变形。
【式51】
在该式中,如果关于0以上且(D+1)以下的所有n,括弧内等于乘法群G3的单位元1,则元R’与元R一致。
括弧内表示作为乘法群G3的元的3个元的积的形式。3个元中的第一个元是1以上且L以下的整数中的、关于未包含于集合A中的全部整数i的生成元g3的“θn,i·Ii”次幂的总积。3个元中的第二个元是关于集合A’中包含的全部整数j的生成元g3的“-θn,j·I’j”次幂的总积。3个元中的第三个元是生成元g3的“θn,L+1·W-θn,L’+1·W’”次幂。
在由1以上且L以下的整数中的未包含于集合A中的整数构成的集合等于集合A’,并且关于集合A’中包含的全部整数j,整数Ij和整数I’j相等的情况下,第二个元成为第一个元的逆元。
第三个元在整数θn,L+1和整数θn,L’+1相等、并且整数W和整数W’相等的情况下,成为乘法群G3的单位元1。
另外,如果整数L和整数L’相等,则由1以上且L以下的整数中的未包含于集合A中的整数构成的集合等于集合A’、且整数θn,L+1等于整数θn,L’+1。
整数W和整数W’相等意味着,查询中嵌入的检索关键字和密文中嵌入的关键字一致。
整数L和整数L’相等意味着,查询发布装置300的层次是指定的层次。关于集合A’中包含的全部整数j,整数Ij和整数I’j相等意味着,查询发布装置300的用户ID中的指定的部分与指定的用户ID一致。
即,在查询发布装置300中有检索权限、并且检索关键字和密文中嵌入的关键字一致的情况下,元R’和元R一致。
除此以外,元R’和元R也有可能偶然一致,但其概率是p分之1,所以如果素数p充分大则可以忽略。
因此,检索装置500仅在查询发布装置300中有检索权限、并且检索关键字和密文中嵌入的关键字一致的情况下,判定为在检索中命中。
另外,详细的证明省略,但依据在计算量上难以求解双线性Diffie-Hellman判定问题(Decisional Bilinear Diffie-HellmanProblem)和决定性线性判定问题(Decisional Linear Problem)这样的假设,理论上能够证明不会从密文泄漏关键字的信息。即,隐匿检索系统800具有针对解读攻击的耐性,是安全的。
该实施方式中的隐匿检索系统800对关键字进行加密,根据来自作为用户标识符(用户ID)具有小于D个(D是1以上的整数)整数Ii(i是1以上且L以下的整数。L是小于D的任意的整数。Ii是0以上且小于p的整数。p是素数)的多个查询发布装置300中的至少某一个查询发布装置300的要求,检索加密状态的关键字。
根据该实施方式中的隐匿检索系统800,生成仅指定了用户标识符的一部分的密文,指定的部分一致的多个用户能够生成能够检索该密文的查询,所以密文的大小变小,即使在追加了新的用户的情况下,也无需生成新的密文。
该实施方式中的公开参数生成装置100具有处理数据的处理装置(CPU911)、随机数ω选择部121、随机数α选择部122、随机数β选择部123、随机数θ选择部124、公开元Ω计算部131、公开元a计算部132、公开元b计算部133、秘密元w计算部141、秘密元a计算部142、秘密元b计算部143、秘密元y计算部144、公开参数输出部151、以及主秘密密钥输出部152。
上述随机数ω选择部121使用上述处理装置,从1以上且小于p的整数之中,随机地选择1个整数ω。
上述随机数α选择部122使用上述处理装置,从1以上且小于p的整数之中,随机地选择(D+2)个整数αn(n是0以上且D+1以下的整数)。
上述随机数β选择部123使用上述处理装置,从1以上且小于p的整数之中,随机地选择(D+2)个整数βn。
上述随机数θ选择部124使用上述处理装置,从1以上且小于p的整数中,随机地选择(D+2)×(D+1)个整数θn,l(l是0以上且D以下的整数)。
上述公开元a计算部132使用上述处理装置,根据位数是上述素数p的乘法群G1的生成元g1、上述随机数α选择部122选择出的(D+2)个整数αn、以及上述随机数θ选择部124选择出的(D+2)×(D+1)个整数θn,l,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且D 以下的(D+1)个整数l的组的(D+2)×(D+1)个组(n,l),分别计算上述生成元g1的(αn×θn,l)次幂,从而计算出作为上述乘法群G1的元的(D+2)×(D+1)个元an,l。
上述公开元b计算部133使用上述处理装置,根据上述乘法群G1的生成元g1、上述随机数β选择部123选择出的(D+2)个整数βn、以及上述随机数θ选择部124选择出的(D+2)×(D+1)个整数θn,l,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且D以下的(D+1)个整数l的组的(D+2)×(D+1)个组(n,l),分别计算上述生成元g1的(βn×θn,l)次幂,从而计算出作为上述乘法群G1的元的(D+2)×(D+1)个元bn,l。
上述秘密元w计算部141使用上述处理装置,根据位数是上述素数p的乘法群G2的生成元g2、和上述随机数ω选择部121选择出的1个整数ω,计算上述生成元g2的ω次幂,从而计算出作为上述乘法群G2的元的1个元w’。
上述公开元Ω计算部131使用上述处理装置,根据通过将上述乘法群G1的元和上述乘法群G2的元的组映射到位数是p的乘法群G3的元的双线性配对e而映射上述乘法群G1的生成元g1和上述乘法群G2的生成元g2的组得到的上述乘法群G3的元g3、以及上述随机数ω选择部121选择出的1个整数ω,计算上述元g3的ω次幂,从而计算出作为上述公开乘法群G3的元的1个元Ω。
上述秘密元a计算部142使用上述处理装置,根据上述乘法群G2的生成元g2、和上述随机数α选择部122选择出的(D+2)个整数αn,针对0以上且(D+1)以下的(D+2)个整数n,分别计算上述生成元g2的αn次幂,从而计算出作为上述乘法群G2的元的(D+2)个元a’n。
上述秘密元b计算部143根据上述乘法群G2的生成元g2、和上述随机数β选择部123选择出的(D+2)个整数βn,针对0以上且(D+1)以下的(D+2)个整数n,分别计算上述生成元g2的βn次幂,从而计算出作为上述乘法群G2的元的(D+2)个元b’n。
上述秘密元y计算部144使用上述处理装置,根据上述乘法群G2的生成元g2、上述随机数α选择部122选择出的(D+2)个整数αn、上述随机数β选择部123选择出的(D+2)个整数βn、以及上述随机数θ选择部124选择出的(D+2)×(D+1)个整数θn,l,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且D以下的(D+2)个整数l的组的(D+2)×(D+1)个组(n,l),分别计算上述生成元g2的(αn×βn×θn,l)次幂,从而计算出作为上述乘法群G2的元的(D+2)×(D+1)个元y’n,l。
上述公开参数输出部151使用上述处理装置,作为上述隐匿检索系统800中的公开参数,输出上述公开元Ω计算部131计算出的1个元Ω、上述公开元a计算部132计算出的(D+2)×(D+1)个元an,l、以及上述公开元b计算部133计算出的(D+2)×(D+1)个元bn,l。
上述主秘密密钥输出部152使用上述处理装置,作为上述隐匿检索系统800中的主秘密密钥,输出上述秘密元w计算部141计算出的1个元w’、上述秘密元a计算部142计算出的(D+2)个元a’n、上述秘密元b计算部143计算出的(D+2)个元b’n、以及上述秘密元y计算部144计算出的(D+2)×(D+1)个元y’n,l。
根据该实施方式中的公开参数生成装置100,能够实现密文的大小变小,即使在追加了新的用户的情况下,也无需生成新的密文的隐匿检索系统。
该实施方式中的加密装置400具有存储数据的存储装置(磁盘装置920)、处理数据的处理装置(CPU911)、公开元Ω存储部422、公开元a存储部423、公开元b存储部424、嵌入关键字输入部413、权限范围输入部412、随机数r选择部451、副随机数r选择部452、随机数元选择部453、验证元计算部457、密码元计算部456、密码元a计算部463、密码元b计算部464、密码部分元a计算部465、密码部分元b计算部466、以及密文输出部414。
上述公开元Ω存储部422使用上述存储装置,存储上述公开参数生成装置100作为公开参数输出的1个元Ω。
上述公开元a存储部423使用上述存储装置,存储上述公开参数生成装置100作为公开参数输出的(D+2)×(D+1)个元an,l。
上述公开元b存储部424使用上述存储装置,存储上述公开参数生成装置100作为公开参数输出的(D+2)×(D+1)个元bn,l。
上述嵌入关键字输入部413使用上述处理装置,作为加密的关键字,输入0以上且小于p的1个整数W’。
上述权限范围输入部412使用上述处理装置,作为指定具有检索关键字的权限的查询发布装置300的范围的数据,输入1个整数L’(L’是1以上且小于D的任意的整数)、和L”个整数I’j(L”是0以上且L’以下的任意的整数。j是从1以上且L’以下的整数之中任意选择出的L”个整数。I’j是0以上且小于p的整数)。
上述随机数r选择部451使用上述处理装置,从0以上且小于p的整数之中,随机地选择1个整数r。
上述副随机数r选择部452使用上述处理装置,从0以上且小于p的整数之中,随机地选择(D+2)个整数rn。
上述随机数元选择部453使用上述处理装置,从上述乘法群G3的元之中,随机地选择1个元R。
上述验证元计算部457使用上述处理装置,根据上述公开元Ω存储部422存储的1个元Ω、上述随机数r选择部451选择出的1个整数r、以及上述随机数元选择部453选择出的1个元R,计算上述元Ω的(-r)次幂与上述元R之积,从而计算出作为上述乘法群G3的元的1个元E。
上述密码元计算部456使用上述处理装置,根据上述乘法群G1的生成元g1、和上述随机数r选择部451选择出的整数r,计算上述生成元g1的r次幂,从而计算出作为上述乘法群G1的元的1个元c0。
上述密码元a计算部463使用上述处理装置,根据上述权限范围输入部412输入的1个整数L’和L”个整数I’j、上述公开元b存储部424存储的(D+2)×(D+1)个元bn,l中的(D+2)个元bn,0和(D+2)×L”个元bn,l’和(D+2)个元bn,Λ’(Λ’是从大于L’且D以下的整数之中选择出的1个整数)、上述嵌入关键字输入部413输入的1个整数W’、以及上述副随机数r选择部452选择出的(D+2)个整数rn,针对作为0以上且(D+1)以下的(D+2)个整数n和上述L”个整数I’j的下标j的组的(D+2)×L”个组(n,j),分别计算上述元bn,j的Ij次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算上述元bn,Λ’的W’次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算上述元bn,0与L”个元bn,j的I’j次幂与元bn,Λ’的W’次幂的总积ΠB,n,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所计算出的总积ΠB,n的rn次幂,从而计算出作为上述乘法群G1的元的(D+2)个元cn,(a)。
上述密码元b计算部464使用上述处理装置,根据上述权限范围输入部412输入的1个整数L’和L”个整数I’j、上述公开元a存储部423存储的(D+2)×(D+1)个元an,l中的(D+2)个元an,0和(D+2)×L”个元an,j’和(D+2)个元an,Λ’、上述嵌入关键字输入部413输入的1个整数W’、上述随机数r选择部451选择出的1个整数r、以及上述副随机数r选择部452选择出的(D+2)个整数rn,针对作为0以上且(D+1)以下的(D+2)个整数n和上述L”个整数I’j的下标j的组的(D+2)×L”个组(n,j),分别计算上述元an,j的Ij次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算上述元an,Λ’的W’次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算上述元an,0与L”个元an,j的I’j次幂与元an,Λ’的W’次幂的总积ΠA,n,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所计算出的总积ΠA,n的(r-rn)次幂,从而计算出作为上述乘法群G1的元的(D+2)个元cn,(b)。
上述密码部分元a计算部465使用上述处理装置,根据上述权限范围输入部412输入的1个整数L’和L”个整数I’j的下标j、上述公开元b存储部424存储的(D+2)×(D+1)个元bn,l中的(D+2)×(L’-L”)个元bn,j’(j’是1以上且L’以下的整数中的上述L”个下标j以外的(L’-L”)个整数)、以及上述副随机数r选择部452选择出的(D+2)个整数rn,针对作为0以上且(D+1)以下的(D+2)个整数n和1以上且L’以下的整数中的上述L”个下标j以外的(L’-L”)个整数j’的组的(D+2)×(L’-L”)个组(n,j’),分别计算上述元bn,j’的rn次幂,从而计算出作为上述乘法群G1的元的(D+2)×(L’-L”)个元cn,j’,(a)。
上述密码部分元b计算部466使用上述处理装置,根据上述权限范围输入部412输入的1个整数L’和L”个整数I’j的下标j、上述公开元a存储部423存储的(D+2)×(D+1)个元an,l中的(D+2)×(L’-L”)个元an,j’、上述随机数r选择部451选择出的1个整数r、以及上述副随机数r选择部452选择出的(D+2)个整数rn,针对作为0以上且(D+1)以下的(D+2)个整数n和1以上且小于L’的整数中的上述L”个下标j以外的(L’-L”)个整数j’的组的(D+2)×(L’-L”)个组(n,j’),分别计算上述元bn,j’的(r-rn)次幂,从而计算出作为上述乘法群G1的元的(D+2)×(L’-L”)个元cn,j’, (b)。
上述密文输出部414使用上述处理装置,作为将上述整数W’嵌入为关键字的密文,输出上述随机数元选择部453选择出的1个元R、上述验证元计算部457计算出的1个元E、上述密码元计算部456计算出的1个元c0、上述密码元a计算部463计算出的(D+2)个元cn, (a)、上述密码元b计算部464计算出的(D+2)个元cn,(b)、上述密码部分元a计算部465计算出的(D+2)×(L’-L”)个元cn,j’,(a)、以及上述密码部分元b计算部466计算出的(D+2)×(L’-L”)个元cn,j’,(b)。
根据该实施方式中的加密装置400,能够实现密文的大小变小,即使在追加了新的用户的情况下,也无需生成新的密文的隐匿检索系统。
另外,在该例子中,整数Λ’是对整数L’加上了1的值(L’+1),但整数Λ’也可以是其他值。例如,整数Λ’不限于等于整数D的值等整数L’的值,而也可以是固定的值。
该实施方式中的用户秘密密钥生成装置200具有存储数据的存储装置(磁盘装置920)、处理数据的处理装置(CPU911)、秘密元w存储部212、秘密元a存储部213、秘密元b存储部214、秘密元y存储部215、用户标识符输入部221、随机数ρ选择部231、副随机数ρ选择部232、总积元Y计算部233、检索元计算部241、检索元a计算部242、检索元b计算部243、干扰元计算部251、干扰元a计算部252、干扰元b计算部253、委任元计算部261、副委任元计算部262、以及用户秘密密钥输出部223。
上述秘密元w存储部212使用上述存储装置,存储上述公开参数生成装置100作为主秘密密钥输出的1个元w’。
上述秘密元a存储部213使用上述存储装置,存储上述公开参数生成装置100作为主秘密密钥输出的(D+2)个元a’n。
上述秘密元b存储部214使用上述存储装置,存储上述公开参数生成装置100作为主秘密密钥输出的(D+2)个元b’n。
上述秘密元y存储部215使用上述存储装置,存储上述公开参数生成装置100作为主秘密密钥输出的(D+2)×(D+1)个元y’n,l。
上述用户标识符输入部221使用上述处理装置,针对上述多个查询发布装置300中的要求生成用户秘密密钥的查询发布装置300,作为上述查询发布装置300的用户标识符(用户ID),输入L个整数Ii。
上述随机数ρ选择部231使用上述处理装置,从0以上且小于p的整数之中,随机地选择(D+2)个整数ρn。
上述副随机数ρ选择部232使用上述处理装置,从0以上且小于p的整数之中,随机地选择(D+2)×(D+2)个整数ρn,m(m是0以上且D+1以下的整数)。
上述总积元Y计算部233使用上述处理装置,根据上述用户标识符输入部221输入的L个整数Ii、以及上述秘密元y存储部215存储的(D+2)×(D+1)个元y’n,l中的、(D+2)个元y’n,0和(D+2)×L个元y’n,i,针对作为0以上且(D+1)以下的(D+2)个整数n和1以上且L以下的(D+1)个整数i的组的(D+2)×(D+1)个组(n,i),分别计算上述元y’n,i的Ii次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算上述元y’n,0与L个元y’n,i的Ii次幂的总积,从而计算出作为上述乘法群G2的元的(D+2)个元ΠY,n。
上述检索元计算部241使用上述处理装置,根据上述秘密元w存储部212存储的1个元w’、上述随机数ρ选择部231选择出的(D+2)个整数ρn、以及上述总积元Y计算部233计算出的(D+2)个元ΠY, n,针对0以上且(D+1)以下的(D+2)个整数n,分别计算上述元ΠY,n的ρn次幂,计算上述元w’与(D+2)个元ΠY,n的ρn次幂的总积,从而计算出作为上述乘法群G2的元的1个元k0。
上述检索元a计算部242使用上述处理装置,根据上述秘密元a存储部213存储的(D+2)个元a’n、和上述随机数ρ选择部231选择出的(D+2)个整数ρn,针对0以上且(D+1)以下的(D+2)个整数n,分别计算上述元a’n的(-ρn)次幂,从而计算出作为上述乘法群G2的元的(D+2)个元kn,(a)。
上述检索元b计算部243使用上述处理装置,根据上述秘密元b存储部214存储的(D+2)个元b’n、和上述随机数ρ选择部231选择出的(D+2)个整数ρn,针对0以上且(D+1)以下的(D+2)个整数n,分别计算上述元b’n的(-ρn)次幂,从而计算出作为上述乘法群G2的元的(D+2)个元kn,(b)。
上述干扰元计算部251使用上述处理装置,根据上述副随机数ρ选择部232选择出的(D+2)×(D+2)个整数ρn,m、和上述总积元Y计算部233计算出的(D+2)个元ΠY,n,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算上述元ΠY,n的ρn, m次幂,针对0以上且(D+1)以下的(D+2)个整数m,分别计算(D+2)个元ΠY,n的ρn,m次幂的总积,从而计算出作为上述乘法群G2的元的(D+2)个元fm,0。
上述干扰元a计算部252使用上述处理装置,根据上述秘密元a存储部213存储的(D+2)个元a’n、和上述副随机数ρ选择部232选择出的(D+2)×(D+2)个整数ρn,m,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算上述元a’n的(-ρn,m)次幂,从而计算出作为上述乘法群G2的元的(D+2)×(D+2)个元fm,n,(a)。
上述干扰元b计算部253使用上述处理装置,根据上述秘密元b存储部214存储的(D+2)个元b’n、和上述副随机数ρ选择部232选择出的(D+2)×(D+2)个整数ρn,m,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算上述元b’n的(-ρn,m)次幂,从而计算出作为上述乘法群G2的元的(D+2)×(D+2)个元fm,n,(b)。
上述委任元计算部261使用上述处理装置,根据上述秘密元y存储部215存储的(D+2)×(D+1)个元y’n,l中的、(D+2)个元y’n, Λ(Λ是从大于L且D以下的整数之中选择出的1个整数)、和上述随机数ρ选择部231选择出的(D+2)个整数ρn,针对0以上且(D+1)以下的(D+2)个整数n,分别计算上述元y’n,Λ的ρn次幂,计算(D+2)个元y’n,j的ρn次幂的总积,从而计算出作为上述乘法群G2的元的1个元hΛ。
上述副委任元计算部262使用上述处理装置,根据上述秘密元y存储部215存储的(D+2)×(D+1)个元y’n,l中的、(D+2)个元y’n, Λ、和上述副随机数ρ选择部232选择出的(D+2)×(D+2)个整数ρn, m,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算上述元y’n,Λ的ρn,m次幂,针对0以上且(D+1)以下的(D+2)个整数m,计算(D+2)个元y’n,Λ的ρn,m次幂的总积,从而计算出作为上述乘法群G2的元的(D+2)个元hm,Λ。
上述用户秘密密钥输出部223使用上述处理装置,作为上述查询发布装置300的用户秘密密钥,输出上述检索元计算部241计算出的1个元k0、上述检索元a计算部242计算出的(D+2)个元kn,(a)、上述检索元b计算部243计算出的(D+2)个元kn,(b)、上述干扰元计算部251计算出的(D+2)个元fm,0、上述干扰元a计算部252计算出的(D+2)×(D+2)个元fm,n,(a)、上述干扰元b计算部253计算出的(D+2)×(D+2)个元fm,n,(b)、上述委任元计算部261计算出的1个元hΛ、以及上述副委任元计算部262计算出的(D+2)个元hm,Λ的组。
根据该实施方式中的用户秘密密钥生成装置200,能够实现密文的大小变小,即使在追加了新的用户的情况下,也无需生成新的密文的隐匿检索系统。
另外,在该例子中,整数Λ是对整数L加上了1的值(L+1),但只要是与加密装置400中的整数Λ’对应的值,则也可以是其他值。
例如,在加密装置400中的整数Λ’是等于整数D的值的情况下,整数Λ也设为等于整数D的值。这样,无论整数L’以及整数L为多少都将整数Λ’以及整数Λ设为固定的值,从而将给予检索密文的权限的查询发布装置300不仅限于1层次的查询发布装置300,而对用户ID中指定的部分一致的上位层次的查询发布装置300也能够给予检索密文的权限。
该实施方式中的查询发布装置300具有存储数据的存储装置(磁盘装置920)、处理数据的处理装置(CPU911)、用户标识符存储部311、检索元存储部321、检索元a存储部322、检索元b存储部323、干扰元存储部324、干扰元a存储部325、干扰元b存储部326、委任元存储部327、副委任元存储部328、检索关键字输入部341、随机数π选择部331、质询元计算部351、质询元a计算部334、质询元b计算部335、以及查询输出部343。
上述用户标识符存储部311使用上述存储装置,作为上述查询发布装置300的用户标识符(用户ID),存储L个整数Ii。
上述检索元存储部321使用上述存储装置,存储上述用户秘密密钥生成装置200作为上述查询发布装置300的用户秘密密钥输出的1个元k0。
上述检索元a存储部322使用上述存储装置,存储上述用户秘密密钥生成装置200作为上述查询发布装置300的用户秘密密钥输出的(D+2)个元kn,(a)(n是0以上且D+1以下的整数)。
上述检索元b存储部323使用上述存储装置,存储上述用户秘密密钥生成装置200作为上述查询发布装置300的用户秘密密钥输出的(D+2)个元kn,(b)。
上述干扰元存储部324使用上述存储装置,存储上述用户秘密密钥生成装置200作为上述查询发布装置300的用户秘密密钥输出的(D+2)个元fm,0(m是0以上且D+1以下的整数)。
上述干扰元a存储部325使用上述存储装置,存储上述用户秘密密钥生成装置200作为上述查询发布装置300的用户秘密密钥输出的(D+2)×(D+2)个元fm,n,(a)。
上述干扰元b存储部326使用上述存储装置,存储上述用户秘密密钥生成装置200作为上述查询发布装置300的用户秘密密钥输出的(D+2)×(D+2)个元fm,n,(b)。
上述委任元存储部327使用上述存储装置,存储上述用户秘密密钥生成装置200作为上述查询发布装置300的用户秘密密钥输出的1个元hΛ。
上述副委任元存储部328使用上述存储装置,存储上述用户秘密密钥生成装置200作为上述查询发布装置的用户秘密密钥输出的(D+2)个元hm,Λ。
上述检索关键字输入部341使用上述处理装置,作为检索的关键字,输入0以上且小于p的1个整数W。
上述随机数π选择部331使用上述处理装置,从0以上且小于p的整数之中,随机地选择(D+2)个整数πm。
上述质询元计算部351使用上述处理装置,根据上述检索元存储部321存储的1个元k0、上述干扰元存储部324存储的(D+2)个元fm,0、上述委任元存储部327存储的1个元hΛ、上述副委任元存储部328存储的(D+2)个元hm,Λ、上述检索关键字输入部输入的1个整数W、以及上述随机数π选择部331选择出的(D+2)个整数πm,针对0以上且(D+1)以下的(D+2)个整数m,分别计算上述元hm,Λ的πm次幂,计算上述元hΛ与(D+2)个元hm,Λ的πm次幂的总积ΠH,针对0以上且(D+1)以下的(D+2)个整数m,分别计算上述元fm, 0的πm次幂,计算上述总积ΠH的W次幂,计算上述元k0与(D+2)个元fm,0的πm次幂与总积ΠH的W次幂的总积,从而计算出作为上述乘法群G2的元的1个元k’0。
上述质询元a计算部334使用上述处理装置,根据上述检索元a存储部322存储的(D+2)个元kn,(a)、上述干扰元a存储部325存储的(D+2)×(D+2)个元fm,n,(a)、以及上述随机数π选择部331选择出的(D+2)个整数πm,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算上述元fm,n,(a)的πm次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算上述元kn,(a)与(D+2)个元fm,n,(a)的πm次幂的总积,从而计算出作为上述乘法群G2的元的(D+2)个元k’n,(a)。
上述质询元b计算部335使用上述处理装置,根据上述检索元b存储部323存储的(D+2)个元kn,(b)、上述干扰元b存储部326存储的(D+2)×(D+2)个元fm,n,(b)、以及上述随机数π选择部331选择出的(D+2)个整数πm,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算上述元fm,n,(b)的πm次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算上述元kn,(b)与(D+2)个元fm,n,(b)的πm次幂的总积,从而计算出作为上述乘法群G2的元的(D+2)个元k’n,(b)。
上述查询输出部343使用上述处理装置,输出上述用户标识符存储部311存储的L个整数Ii、上述质询元计算部351计算出的1个元k’0、上述质询元a计算部334计算出的(D+2)个元k’n,(a)、以及上述质询元b计算部335计算出的(D+2)个元k’n,(b)的组,作为用于将上述整数W作为关键字而进行检索的查询。
根据该实施方式中的查询发布装置300,能够实现密文的大小变小,即使在追加了新的用户的情况下,也无需生成新的密文的隐匿检索系统。
该实施方式中的检索装置500具有存储数据的存储装置(磁盘装置920)、处理数据的处理装置(CPU911)、密文存储部530、查询输入部521、配对元计算部555、配对元A计算部552、配对元B计算部554、比较元计算部556、以及比较部557。
上述密文存储部530使用上述存储装置,作为嵌入有关键字的密文,存储上述加密装置400输出的密文中包含的1个元R、1个元E、1个元c0、(D+2)个元cn,(a)、(D+2)个元cn,(b)、(D+2)×(L’-L”)个元c’n,j’,(a)、以及(D+2)×(L’-L”)个元c’n,j’,(b)的组。
上述查询输入部521使用上述处理装置,作为检索关键字的查询,输入上述查询发布装置300输出的L个整数Ii、1个元k’0、(D+2)个元k’n,(a)、以及(D+2)个元k’n,(b)的组。
上述配对元计算部555使用上述处理装置,根据上述密文存储部530存储的密文中包含的1个元c0、以及上述查询输入部521输入的查询中包含的1个元k’0,通过上述双线性配对e来映射上述元c0和上述元k’0的组,从而计算出作为上述乘法群G3的元的1个元e0。
上述配对元A计算部552使用上述处理装置,根据上述密文存储部530存储的密文中包含的(D+2)个元cn,(a)和(D+2)×(L’-L”)个元cn,j’,(a)、以及上述查询输入部521输入的查询中包含的L个整数Ii和(D+2)个元k’n,(a),针对作为0以上且(D+1)以下的(D+2)个整数n和上述(D+2)×(L’-L”)个元cn,j’,(a)的下标即(L’-L”)个整数j’中的1以上且L以下的LA个整数i’的组的(D+2)×LA个组(n,i’),分别计算元cn,i’,(a)的I-i’次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算上述元cn,(a)和LA个元cn,i’,(a)的I-i’次幂的总积ΠA’,n,针对0以上且(D+1)以下的(D+2)个整数n,分别通过上述双线性配对e来映射上述总积ΠA’,n和上述元k’n, (a)的组,从而计算出作为上述乘法群G3的元的(D+2)个元eA,n。
上述配对元B计算部554使用上述处理装置,根据上述密文存储部530存储的密文中包含的(D+2)个元cn,(b)和(D+2)×(L’-L”)个元c n,j’,(b)、以及上述查询输入部521输入的查询中包含的L个整数Ii和(D+2)个元k’n,(b),针对作为0以上且(D+1)以下的(D+2)个整数n和上述(D+2)×(L’-L”)个元cn,j’,(b)的下标即(L’-L”)个整数j’中的1以上且L以下的LA个整数i’的组的(D+2)×LA个组(n,i’),分别计算元cn,i’,(b)的I-i’次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算上述元cn,(b)和LA个元cn,i’,(b)的I-i’次幂的总积ΠB’,n,针对0以上且(D+1)以下的(D+2)个整数n,分别通过上述双线性配对e来映射上述总积ΠB’,n和上述元k’n, (b)的组,从而计算出作为上述乘法群G3的元的(D+2)个元eB,n。
上述比较元计算部556使用上述处理装置,根据上述密文存储部530存储的密文中包含的1个元E、上述配对元计算部555计算出的1个元e0、上述配对元A计算部552计算出的(D+2)个元eA,n、以及上述配对元B计算部554计算出的(D+2)个元eB,n,计算上述元E与上述元e0与(D+2)个元eA,n与(D+2)个元eB,n的总积,从而计算出作为上述乘法群G3的元的1个元R’。
上述比较部557使用上述处理装置,比较上述密文存储部530存储的密文中包含的1个元R、和上述比较元计算部556计算出的1个元R’,在元R和元R’一致的情况下,判定为在检索中命中。
根据该实施方式中的检索装置500,能够实现密文的大小变小,即使在追加了新的用户的情况下,也无需生成新的密文的隐匿检索系统。
该实施方式中的隐匿检索系统800能够对查询发布装置300给予生成子查询发布装置等下位的查询发布装置的用户秘密密钥的权限。
上述用户秘密密钥生成装置200的委任元计算部261使用上述处理装置,根据上述秘密元y存储部215存储的(D+2)×(D+1)个元y’n,l中的、(D+2)×(D’-L)个(D’是大于L且D以下的整数)元y’n,λ(λ是大于L且D’以下的整数)、和上述随机数ρ选择部231选择出的(D+2)个整数ρn,针对作为0以上且(D+1)以下的(D+2)个整数n和大于L且D’以下的(D’-L)个整数λ的组的(D+2)×(D’-L)个组(n,λ),分别计算上述元y’n,λ的ρn次幂,针对大于L且D’以下的(D’-L)个整数λ,分别计算(D+2)个元y’n,λ的ρn次幂的总积,从而计算出作为上述乘法群G2的元的(D’-L)个元hλ。
上述副委任元计算部262使用上述处理装置,根据上述秘密元y存储部215存储的(D+2)×(D+1)个元y’n,l中的、(D+2)×(D’-L)个元y’n,λ、和上述副随机数ρ选择部232选择出的(D+2)×(D+2)个整数ρn,m,针对作为0以上且(D+1)以下的(D+2)个整数n、0以上且(D+1)以下的(D+2)个整数m、以及大于L且D’以下的(D’-L)个整数λ的组的(D+2)×(D+2)×(D’-L)个组(n,m,λ),分别计算上述元y’n,λ的ρn,m次幂,针对作为0以上且(D+1)以下的(D+2)个整数m和大于L且D’以下的(D’-L)个整数λ的组的(D+2)×(D’-L)个组(m,λ),分别计算(D+2)个元y’n,λ的ρn, m次幂的总积,从而计算出作为上述乘法群G2的元的(D+2)×(D’-L)个元hm,λ。
上述用户秘密密钥输出部223使用上述处理装置,作为上述查询发布装置300的用户秘密密钥,输出上述检索元计算部241计算出的1个元k0、上述检索元a计算部242计算出的(D+2)个元kn,(a)、上述检索元b计算部243计算出的(D+2)个元kn,(b)、上述干扰元计算部251计算出的(D+2)个元fm,0、上述干扰元a计算部252计算出的(D+2)×(D+2)个元fm,n,(a)、上述干扰元b计算部253计算出的(D+2)×(D+2)个元fm,n,(b)、上述委任元计算部261计算出的(D’-L)个元hλ、以及上述副委任元计算部262计算出的(D+2)×(D’-L)个元hm,λ的组。
根据该实施方式中的用户秘密密钥生成装置200,能够实现能够对查询发布装置300给予生成子查询发布装置等下位的查询发布装置的用户秘密密钥的权限的隐匿检索系统。
上述查询发布装置300还具有子用户标识符输入部361、副随机数π选择部371、子检索元计算部372、子干扰元计算部375、子干扰元a计算部376、子干扰元b计算部377、子委任元计算部378、子副委任元计算部379、以及子用户秘密密钥输出部363。
上述委任元存储部327使用上述存储装置,存储上述用户秘密密钥生成装置200作为上述查询发布装置300的用户秘密密钥输出的(D’-L)个元hλ。
上述副委任元存储部328使用上述存储装置,存储上述用户秘密密钥生成装置200作为上述查询发布装置300的用户秘密密钥输出的(D+2)×(D’-L)个元hm,λ。
上述子用户标识符输入部361使用上述处理装置,输入0以上且小于p的1个整数IL+1。
上述副随机数π选择部371使用上述处理装置,从0以上且小于p的整数之中,随机地选择(D+2)×(D+2)个整数πm,m’-(m’是0以上且D+1以下的整数)-。
上述子检索元计算部372使用上述处理装置,根据上述检索元存储部321存储的1个元k0、上述干扰元存储部324存储的(D+2)个元f-m,0、上述委任元存储部327存储的(D’-L)个元hλ中的1个元hL+1、上述副委任元存储部328存储的(D+2)×(D’-L)个元hm, λ中的(D+2)个元hm,L+1、上述随机数π选择部331选择出的(D+2)个整数πm-、以及上述子用户标识符输入部361输入的整数IL+1,针对0以上且(D+1)以下的(D+2)个整数m,分别计算上述元hm,Λ的πm次幂,计算上述元hΛ和(D+2)个元hm,Λ的πm次幂的总积ΠH,针对0以上且(D+1)以下的(D+2)个整数m,分别计算上述元f-m,0的πm次幂,计算上述总积ΠH的IL+1次幂,计算上述元k0与(D+2)个元f-m,0的πm次幂与总积ΠH的IL+1次幂的总积,从而计算出作为上述乘法群G2的元的1个元k”。
上述子干扰元计算部375使用上述处理装置,根据上述干扰元存储部324存储的(D+2)个元fm,0、上述副委任元存储部328存储的(D+2)×(D’-L)个元hm,λ中的(D+2)个元hm,L+1、以及上述副随机数π选择部371选择出的(D+2)×(D+2)个整数πm,m’,针对作为0以上且(D+1)以下的(D+2)个整数m和0以上且(D+1)以下的(D+2)个整数m’的组的(D+2)×(D+2)个组(m,m’),分别计算上述元fm,0的πm,m’次幂、和上述元hm,L+1的πm,m’次幂,针对0以上且(D+1)以下的(D+2)个整数m’,分别计算(D+2)个元hm,L+1的πm,m’次幂的总积ΠH,m’,针对0以上且(D+1)以下的(D+2)个整数m’,分别计算(D+2)个元fm,0的πm,m’次幂与上述总积ΠH, m’的IL次幂的总积,从而计算出作为上述乘法群G2的元的(D+2)个元fm’,0。
上述子干扰元a计算部376使用上述处理装置,根据上述干扰元a存储部325存储的(D+2)个元fm,n,(a)、和上述副随机数π选择部371选择出的(D+2)×(D+2)个整数πm,m’,针对作为0以上且(D+1)以下的(D+2)个整数n、0以上且(D+1)以下的(D+2)个整数m、以及0以上且(D+1)以下的(D+2)个整数m’的组的(D+2)×(D+2)×(D+2)个(n,m,m’),分别计算上述元fm,n,(a)的πm,m’次幂,作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m’的组的(D+2)×(D+2)个(n,m’),分别计算(D+2)个元fm,n,(a)的πm,m’次幂的总积,从而计算出作为上述乘法群G2的元的(D+2)个元f’m’,n,(a)。
上述子干扰元b计算部377使用上述处理装置,根据上述干扰元b存储部326存储的(D+2)个元fm,n,(b)、和上述副随机数π选择部371选择出的(D+2)×(D+2)个整数πm,m’,针对作为0以上且(D+1)以下的(D+2)个整数n、0以上且(D+1)以下的(D+2)个整数m、以及0以上且(D+1)以下的(D+2)个整数m’的组的(D+2)×(D+2)×(D+2)个(n,m,m’),分别计算上述元fm,n,(b)的πm,m’次幂,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m’的组的(D+2)×(D+2)个(n,m’),分别计算(D+2)个元fm,n,(b)的πm,m’次幂的总积,从而计算出作为上述乘法群G2的元的(D+2)个元f’m’,n,(b)。
上述子委任元计算部378使用上述处理装置,根据上述委任元存储部327存储的(D’-L)个元hλ中的(D”-L-1)个(D”是大于(L+1)且D’以下的整数)元hλ’(λ’是大于(L+1)且D”以下的整数)、上述副委任元存储部328存储的(D+2)×(D’-L)个元hm,λ中的(D+2)×(D”-L-1)个元hm,λ’、以及上述随机数π选择部331选择出的(D+2)个整数πm,针对作为0以上且(D+1)以下的(D+2)个整数m和大于(L+1)且D”以下的(D”-L-1)个整数λ’的组的(D+2)×(D”-L-1)个组(m,λ’),分别计算上述元hm,λ’的πm次幂,针对大于(L+1)且D”以下的(D”-L-1)个整数λ’,分别计算上述元hλ’与(D+2)个元hm,λ’的πm次幂的总积,从而计算出作为上述乘法群G2的元的(D”-L-1)个元h’λ’。
上述子副委任元计算部379使用上述处理装置,根据上述副委任元存储部328存储的(D+2)×(D’-L-1)个元hm,λ中的(D+2)×(D”-L-1)个元hm,λ’、和上述副随机数π选择部371选择出的(D+2)×(D+2)个整数πm,m’,作为0以上且(D+1)以下的(D+2)个整数m、0以上且(D+1)以下的(D+2)个整数m’、以及大于L且D”以下的(D”-L-1)个整数j’的组的(D+2)×(D+2)×(D”-L-1)个组(m,m’,λ’),分别计算上述元hm,λ’的πm,m’次幂,针对作为0以上且(D+1)以下的(D+2)个整数m’和大于L且D”以下的(D”-L-1)个整数λ’的组的(D+2)×(D”-L-1)个组(m,m’,λ’),分别计算(D+2)个元hm,λ’的πm,m’次幂的总积,从而计算出作为上述乘法群G2的元的(D+2)×(D”-L-1)个元h’m’,λ’。
上述子用户秘密密钥输出部363输出上述子检索元计算部372计算出的1个元k”0、上述质询元a计算部334计算出的(D+2)个元k’n, (a)、上述质询元b计算部335计算出的(D+2)个元k’n,(b)、上述子干扰元计算部375计算出的(D+2)个元f’m’,0、上述子干扰元a计算部376计算出的(D+2)×(D+2)个元f’m’,n,(a)、上述子干扰元b计算部377计算出的(D+2)×(D+2)个元f’m’,n,(b)、上述子委任元计算部378计算出的(D”-L-1)个元h’λ’、以及上述子副委任元计算部379计算出的(D+2)×(D”-L-1)个元h’m’,λ’的组,作为其他查询发布装置300的用户秘密密钥,该其他查询发布装置300具有上述用户标识符存储部311存储的L个整数Ii和上述子用户标识符输入部361输入的1个整数IL+1作为用户标识符。
根据该实施方式中的查询发布装置300,能够生成子查询发布装置等下位的查询发布装置的用户秘密密钥。
以上说明的隐匿检索系统800(隐匿检索装置)具有路由PKG(群组公开密钥生成装置810)、查询发布装置300、加密装置400、数据服务器(检索装置500)。路由PKG进行公开参数/主秘密密钥生成。查询发布装置300进行查询发布。加密装置400进行加密。数据服务器进行数据的保管和隐匿检索。
该实施方式中的隐匿检索系统800适合于多个群组被层次化那样的系统。例如,在大企业、行政机关等那样的一般的组织中,层次化地存在多个群组。例如,如在“~部”之下存在多个“~科”,进而在其之下存在“~股”这样,进行了层次化。
多个群组形成所谓树结构。群组公开密钥生成装置810(路由PKG)处于相当于树的根的部分。查询发布装置300处于中间的节点(中间PKG)、相当于树的叶的部分(查询发布装置)。群组的数量例如是3个、层次构造的层次数例如是2层次,但不限于这样的群组数以及层次数。例如,也可以是在某群组之下进一步连接了多个群组那样的结构。另外,查询发布装置300无需处于最下层。查询发布装置300既可以处于路由PKG的正下位,也可以处于途中的中间PKG的正下位。群组形成最大叠置(D-1)层次那样的树结构。即,如果将路由PKG设为第1层次,将其正下位的中间PKG设为第2层次,将其正下位的中间PKG设为第3层次,则最后的中间PKG成为第D-1层次,其正下位的查询发布装置300成为第D层次。路由PKG不算入层次数,所以层次数成为最大(D-1)层次。
查询发布装置300、中间PKG的ID是1个以上的整数的组。例如处于第L层次的中间PKG的ID是L个整数的组(I1,I2,…,IL -1,IL)∈Zp L。相当于该中间PKG的母节点的中间PKG的ID是(L-1)个整数的组(I1,I2,…,IL-1)。另外,相当于该中间PKG(查询发布装置300)的子节点的查询发布装置300的ID是例如(L+1)个整数的组(I1,I2,…,IL-1,IL,IL+1)。
路由PKG(Public Key Generator,公共密钥生成器)生成公开参数PK以及主秘密密钥MSK。中间PKG以及查询发布装置300从路由PKG直接接收用户秘密密钥的发布。中间PKG以及查询发布装置300也可以从比自己处于上位层的中间PKG接收用户秘密密钥的发布。例如,ID是L个整数的组(I1,I2,…,IL-1,IL)的查询发布装置300向ID是(L-1)个整数的组(I1,I2,…,IL-1)的中间PKG输出用户秘密密钥发布要求,接收用户秘密密钥的发布。这样,中间PKG向包括自己的ID并比自己处于下位层的中间PKG或者查询发布装置300发布用户秘密密钥。路由PKG发布的用户秘密密钥、和中间PKG发布的用户秘密密钥等同。
路由PKG例如具有公开参数/主秘密密钥生成部(公开参数生成装置100)、用户秘密密钥生成部(用户秘密密钥生成装置200)、主秘密密钥存储部(秘密元w存储部212、秘密元a存储部213、秘密元b存储部214、秘密元y存储部215)。
中间PKG例如具有用户秘密密钥生成要求发布部(用户秘密密钥要求输出部312)、用户秘密密钥存储部320、下位用户秘密密钥发布部(子用户秘密密钥生成部370)。
用户秘密密钥生成要求发布部对路由PKG、上位的中间PKG,发布生成用户秘密密钥的要求。用户秘密密钥存储部320存储从路由PKG、中间PKG发布的用户秘密密钥。下位用户秘密密钥发布部使用中间PKG自身的用户秘密密钥,对比自己处于下位的用户或者中间PKG发布用户秘密密钥。
路由PKG例如如下所述,生成公开参数PK以及主秘密密钥MSK。
首先,公开参数/主秘密密钥生成部从乘法群G1中均匀随机地选择生成元g1。公开参数/主秘密密钥生成部从乘法群G2中均匀随机地选择生成元g2。接下来,公开参数/主秘密密钥生成部从有限域Zp的乘法群Zp *中分别均匀随机地选择ω、(αn,βn)n∈[1+D]。接下来,公开参数/主秘密密钥生成部从有限域Zp中分别均匀随机地选择(θn,l)(n,l)∈[1+D]×[D]。接下来,公开参数/主秘密密钥生成部计算Ω=e(g1、g2)^ω、(an,l=g1^(αn·θn,l),bn,l=g1^(βn·θn,l))(n,l)∈[1+D]×[D]。接下来,公开参数/主秘密密钥生成部计算w’=g2^ω、(a’n=(g2^αn),b’n=(g2^βn),(y’n,l=(g2^αn·βn·θn,l))l∈[D])n∈[1+D]。接下来,公开参数/主秘密密钥生成部公开3个群G1、G2、G3、位数p、配对e、和所计算出的Ω、(an,l,bn,l)(n,l)∈[1+D]×[D],作为公开参数PK。最后,公开参数/主秘密密钥生成部将所计算出的w’、(a’n,b’n、(y’n, l)l∈[D])n∈[1+D]作为主秘密密钥MSK保存到主秘密密钥存储部。
查询发布装置300或者中间PKG例如如下那样,对路由PKG或者比自己处于上位层的中间PKG发送用户秘密密钥生成要求。
首先,查询发布装置300或者中间PKG发布自身的ID即L个整数的组(I1,…,IL)∈Zp L而作为用户秘密密钥生成要求。之后,查询发布装置300或者中间PKG对路由PKG或者上位的中间PKG发送用户秘密密钥生成要求。
路由PKG例如如下那样,从查询发布装置300或者中间PKG接收用户秘密密钥生成要求,生成用户秘密密钥,发送到查询发布装置300或者中间PKG。
首先,路由PKG从处于第(L+1)层次的查询发布装置300或者中间PKG,作为用户秘密密钥生成要求,接收作为ID的L个整数的组(I1,…,IL)。接下来,路由PKG从有限域Zp中分别均匀随机地选择(ρn,(ρn,m)m∈[1+D])n∈[1+D]。接下来,路由PKG计算下式,
【式52】
设为dID test=(k0,(kn,(a),kn,(b))n∈[1+D]。接下来,路由PKG计算下式,
【式53】
设为dID rerand=(fm,0,(fm,n,(a),fm,n,(b))n ∈[1+D])m∈[1+D]。接下来,路由PKG计算下式,
【式54】
设为dID deleg=(hl,(hm,l)m∈[1+D])l∈[1+L,D]。最后,路由PKG将dID=(dID test,dID rerand,dID deleg)作为ID的用户秘密密钥,发送到查询发布装置300或者中间PKG。
中间PKG例如如下那样,从查询发布装置300或者中间PKG接收用户秘密密钥生成要求,生成用户秘密密钥,发送到查询发布装置300或者中间PKG。
处于第L层次的中间PKG的ID是(L-1)个整数的组(I1,…,IL-1)。中间PKG自身的用户秘密密钥是dID|L-1=(dID|L-1 test,dID|L- 1 rerand,dID|L-1 deleg)。此处,dID|L-1 test (k0,(kn,(a),kn,(b))n∈[1+D])、dID|L-1 rerand=(fm,0,(fm,n,(a),fm,n,(b))n∈[1+D])m∈[1+D]、dID|L-1 deleg=(hl,(hm,l)m∈[1+D])l∈[L,D]。
首先,处于第L层次的中间PKG从处于第(L+1)层次的查询发布装置300或者中间PKG,作为用户秘密密钥生成要求,接收作为ID的L个整数的组(I1,…,IL)。接下来,处于第L层次的中间PKG从Zp中分别均匀随机地选择(πm,(πm,m’)m’∈[1+D])m∈[1+D]。接下来,处于第L层次的中间PKG计算下式,
【式55】
设为dID test=(k0,(kn,(a),kn,(b))n∈[1+D]。接下来,处于第L层次的中间PKG计算下式,
【式56】
设为dID rerand=(fm,0,(fm,n,(a),fm,n,(b))n∈[1+D])m∈[1+D]。接下来,处于第L层次的中间PKG计算下式,
【式57】
设为dID deleg=(hl,(hm,l)m∈[1+D])l∈[1+L,D]。最后,处于第L层次的中间PKG将dID=(dID test,dID rerand,dID deleg)作为ID的用户秘密密钥,发送到查询发布装置300或者中间PKG。
加密装置400例如如下那样,对关键字W进行加密,制作密文C并发送到数据服务器。
加密装置400制作针对处于第(L+1)层次的查询发布装置300的密文C。通过L个整数或者*(星号)的组(例如(I1,*,I3,…,IL))指定成为对象的查询发布装置300。*表示如果是该层次的用户则谁都可以。例如,在某公司中,有○○部、○○科、○○股的层次,在股中包括多个用户,各用户的ID是表示部的整数I1、表示科的整数I2、表示股的整数I3、以及表示个人的整数I4这4个整数的组。在以使所属于总务部的所有用户能够进行关键字检索的方式对W进行加密的情况下,成为ID=(总务部、*、*、*)。另一方面,在以使总务部经理科出纳股的用户能够进行关键字检索的方式对W进行加密的情况下,成为ID=(总务部、经理科、出纳股、*)。
此处,将记号“A(ID)”定义为A(ID)={i∈[1,L]|Ii=*}。另外,将记号“A’(ID)”定义为A’(ID)={i∈[1,L]|Ii≠*}。
A(ID)表示1至L的字段中的Ii是*那样的字段的编号的集合(集合A)。另一方面,A’(ID)表示1至L的字段中的、Ii不是*、且被指定了特定的值那样的字段的编号的集合(集合A’)。
首先,加密装置400从有限域Zp中分别均匀随机地选择r,(rn)n∈[1+D]。加密装置400从乘法群G3中均匀随机地选择R。接下来,加密装置400计算E=RΩ^(-r)。接下来,加密装置400计算c0=g1^r。接下来,加密装置400计算下式。
【式58】
最后,加密装置400将C=(A(ID),R,E,c0,(cn,(a),cn, (b),(c’n,l,(a),c’n,l,(b))l∈A(ID))n∈[1+D])作为密文,发送到数据服务器(检索装置500)。
查询发布装置300例如如下那样,发布关键字W的查询。
查询发布装置300处于第(L+1)层次,用户ID是L个整数的组(I1,…,IL)。
首先,查询发布装置300从有限域Zp中分别均匀随机地选择(πm)m∈[1+D]。接下来,查询发布装置300计算下式。
【式59】
接下来,查询发布装置300计算下式。
【式60】
最后,查询发布装置300将T=((Ii)i∈[1,L],k’0,(k’n,(a),k’n, (b))n∈[1+D])作为查询发送到数据服务器(检索装置500)。
数据服务器(检索装置500)例如如下那样,使用密文C=(A(ID),R,E,c0,(cn,(a),cn,(b),(cn,l,(a),cn,l,(b))l ∈A(ID))n∈[1+D])和查询T=((Ii)i∈[1,L],k’0,(k’n,(a),k’n,(b))n∈[1+D])而进行隐匿检索。
首先,数据服务器的检索部550针对i∈A(ID)的所有i,计算下式。
【式61】
接下来,检索部550计算下式。
【式62】
接下来,检索部550判定是否成为R=R’。如果R=R’,则检索部550判定为关键字命中。如果并非R=R’,则检索部550判定为关键字未命中。
如果这样进行加密、查询生成、隐匿检索,则仅在密文的关键字检索对象群组中包括查询发布装置300的ID、并且密文的关键字和查询的内部的关键字一致时,在检索中命中。
根据隐匿检索系统800,对于公开密钥即公开参数,路由PKG(公开参数生成装置100)发布即可,而无需群组内的各用户各自地发布。因此,可以消除在系统建立时按每个用户进行作业的必要性。
另外,也无需针对每个群组发布公开参数。因此,同样地可以消除在系统建立时按每个中间PKG进行作业的必要性。
另外,在加密时,不需要每个检索者的公开密钥。因此,能够减轻加密的工作量。进而,在加密时,能够通过指定*(星号)来灵活地变更成为关键字检索的对象的群组。
另外,无需针对每个检索者制作不同的密文。因此,密文的大小不与检索者数成比例。
另外,即使在数据加密之后在群组内增加检索者的情况下,在群组公开参数中也没有变更,所以不需要数据的再加密。
实施方式2.
使用图22~图26,说明实施方式2。
另外,对与实施方式1共同的部分,附加同一符号,省略说明。
图22是示出该实施方式中的隐匿检索系统800的整体结构的一个例子的系统结构图。
查询发布装置群830的查询发布装置300未被分成多个层次,而全部属于相同的一个层次。查询发布装置300的用户ID未被分节,而由1个整数I1构成。这可以视为在实施方式1中说明的结构中,查询发布装置300的层次数是1层次的特别的情况。
因此,整数L关于所有用户ID是1。整数D是2。
公开参数生成装置100的结构与实施方式1相同,所以参照图6,仅说明与实施方式1不同的点。
随机数α选择部122使用CPU911,从1以上且小于p的整数之中,均匀随机地选择4个整数αn。n是0以上且3以下的整数。
随机数β选择部123使用CPU911,从1以上且小于p的整数之中,均匀随机地选择4个整数βn。n是0以上且3以下的整数。
随机数θ选择部124使用CPU911,从1以上且小于p的整数之中,均匀随机地选择12个整数θn,l。n是0以上且3以下的整数。l(字母l)是0以上且2以下的整数。
公开元a计算部132使用CPU911,计算出作为乘法群G1的元的12个元a n,l。n是0以上且3以下的整数。l(字母l)是0以上且2以下的整数。
公开元b计算部133使用CPU911,计算出作为乘法群G1的元的12个元bn,l。n是0以上且3以下的整数。l(字母l)是0以上且2以下的整数。
秘密元a计算部142使用CPU911,计算出作为乘法群G2的元的4个元a’n。n是0以上且3以下的整数。
秘密元b计算部143使用CPU911,计算出作为乘法群G2的元的4个元b’n。n是0以上且3以下的整数。
秘密元y计算部144使用CPU911,计算出作为乘法群G2的元的12个元y’n,l。n是0以上且3以下的整数。l(字母l)是0以上且2以下的整数。
用户秘密密钥生成装置200的结构与实施方式1相同,所以参照图8,仅说明与实施方式1不同的点。
秘密元a存储部213使用磁盘装置920,存储主秘密密钥中的、表示作为乘法群G2的元的4个元a’n的数据。n是0以上且3以下的整数。
秘密元b存储部214使用磁盘装置920,存储主秘密密钥中的、表示作为乘法群G2的元的4个元b’n的数据。n是0以上且3以下的整数。
秘密元y存储部215使用磁盘装置920,存储主秘密密钥中的、表示作为乘法群G2的元的12个元y’n,l的数据。n是0以上且3以下的整数。l(字母l)是0以上且2以下的整数。
标识符存储部222使用RAM914,作为用户ID存储表示1个整数I1的数据。
随机数ρ选择部231使用CPU911,从0以上且小于p的整数之中,均匀随机地选择4个整数ρn。n是0以上且3以下的整数。
副随机数ρ选择部232使用CPU911,从0以上且小于p的整数之中,均匀随机地选择16个整数ρn,m。n是0以上且3以下的整数。m是0以上且3以下的整数。
总积元Y计算部233使用CPU911,计算出作为乘法群G2的元的4个元ΠY,n。n是0以上且3以下的整数。
检索元a计算部242使用CPU911,计算出作为乘法群G2的元的4个元kn,(a)。n是0以上且3以下的整数。
检索元b计算部243使用CPU911,计算出作为乘法群G2的元的4个元kn,(b)。n是0以上且3以下的整数。
干扰元计算部251使用CPU911,计算出作为乘法群G2的元的4个元fm,0。m是0以上且3以下的整数。
干扰元a计算部252使用CPU911,计算出作为乘法群G2的元的16个元fm,n,(a)。m是0以上且3以下的整数。n是0以上且3以下的整数。
干扰元b计算部253使用CPU911,计算出作为乘法群G2的元的16个元fm,n,(b)。m是0以上且3以下的整数。n是0以上且3以下的整数。
委任元计算部261使用CPU911,计算出作为乘法群G2的元的1个元h2。
副委任元计算部262使用CPU911,计算出作为乘法群G2的元的4个元hm,2。m是0以上且3以下的整数。
图23是示出该实施方式中的查询发布装置300的功能块的结构的一个例子的框结构图。
查询发布装置300与实施方式1不同,不具有生成子查询发布装置的用户秘密密钥的功能。查询发布装置300不具有实施方式1中的子用户标识符输入部361、子用户标识符存储部362、子用户秘密密钥输出部363、子用户秘密密钥生成部370。
用户标识符存储部311使用磁盘装置920,作为用户ID存储1个整数I1。
用户秘密密钥存储部320、共同处理部330、查询生成部350的详细的框结构与实施方式1相同,所以参照图11,仅说明与实施方式1不同的点。
检索元a存储部322使用磁盘装置920,存储用户秘密密钥中的、表示作为乘法群G2的元的4个元kn,(a)的数据。n是0以上且3以下的整数。
检索元b存储部323使用磁盘装置920,存储用户秘密密钥中的、表示作为乘法群G2的元的4个元kn,(b)的数据。n是0以上且3以下的整数。
干扰元存储部324使用磁盘装置920,存储表示作为乘法群G2的元的4个元fm,0的数据。m是0以上且3以下的整数。
干扰元a存储部325使用磁盘装置920,存储用户秘密密钥中的、表示作为乘法群G2的元的16个元fm,n,(a)的数据。m是0以上且3以下的整数。n是0以上且3以下的整数。
干扰元b存储部326使用磁盘装置920,存储用户秘密密钥中的、表示作为乘法群G2的元的16个元fm,n,(b)的数据。m是0以上且3以下的整数。n是0以上且3以下的整数。
委任元存储部327使用磁盘装置920,存储用户秘密密钥中的、表示作为乘法群G2的元的1个元h2的数据。
副委任元存储部328使用磁盘装置920,存储用户秘密密钥中的、表示作为乘法群G2的元的4个元hm,2的数据。m是0以上且3以下的整数。
随机数π选择部331使用CPU911,从0以上且小于p的整数之中,选择4个整数πm。m是0以上且3以下的整数。
质询元a计算部334使用CPU911,计算出作为乘法群G2的元的4个元k’n,(a)。
质询元b计算部335使用CPU911,计算出作为乘法群G2的元的4个元k’n,(b)。
图24是示出该实施方式中的加密装置400的功能块的结构的一个例子的框结构图。
加密装置400与实施方式1不同,不限定给予检索权限的查询发布装置300,而是生成具有用户秘密密钥的全部查询发布装置300能够检索的密文。加密装置400不具有实施方式1中的权限范围输入部412、权限范围存储部430。
图25是示出该实施方式中的加密装置400中的、公开参数存储部420、密文生成部450的详细的功能块的结构的一个例子的详细框图。
公开元a存储部423使用磁盘装置920,存储公开参数中的、表示作为乘法群G1的元的12个元an,l的数据。n是0以上且3以下的整数。l是0以上且2以下的整数。
公开元b存储部424使用磁盘装置920,存储公开参数中的、表示作为乘法群G1的元的12个元bn,l的数据。n是0以上且3以下的整数。l是0以上且2以下的整数。
副随机数r选择部452使用CPU911,从0以上且小于p的整数之中,均匀随机地选择4个整数rn。
总积元A计算部461使用CPU911,输入公开元a存储部423存储的表示12个元an,l的数据、和嵌入关键字存储部441存储的表示整数W’的数据。
总积元A计算部461根据12个元an,l中的、l(字母l)等于2的4个元an,2、和整数W’,使用CPU911,计算4个元an,2各个的W’次幂。总积元A计算部461计算出的元“an,l^W’”是乘法群G1的元。总积元A计算部461计算4个元“an,2^W’”。n是0以上且3以下的整数。
总积元A计算部461根据12个元an,l中的、l(字母l)等于0的4个元an,0、和所计算出的4个元“an,2^W’”,使用CPU911,针对1个元an,0,计算元an,0和n与元an,0相同的1个元“an,2^W’”之积“an, 0·an,2^W’”,得到元ΠA,n。元ΠA,n是乘法群G1的元。总积元A计算部461计算4个元ΠA,n。n是0以上且3以下的整数。
总积元B计算部462使用CPU911,输入公开元b存储部424存储的表示12个元bn,l的数据、和嵌入关键字存储部441存储的表示整数W’的数据。
总积元B计算部462根据12个元bn,l中的、l(字母l)等于2的4个元bn,2、和整数W’,使用CPU911,计算4个元bn,2各个的W’次幂。总积元B计算部462计算出的元“bn,l^W’”是乘法群G1的元。总积元B计算部462计算4个元“bn,2^W’”。n是0以上且3以下的整数。
总积元B计算部462根据12个元bn,l中的、l(字母l)等于0的4个元bn,0、和所计算出的4个元“bn,2^W’”,使用CPU911,针对每1个元bn,0,计算元bn,0和n与元bn,0相同的1个元“bn,2^W’”之积“bn, 0·bn,2^W’”,得到元ΠB,n。元ΠB,n是乘法群G1的元。总积元B计算部462计算4个元ΠB,n。n是0以上且3以下的整数。
密码元a计算部463使用CPU911,计算4个元cn,(a)。n是0以上且3以下的整数。
密码元b计算部464使用CPU911,计算4个元cn,(b)。n是0以上且3以下的整数。
密码部分元a计算部465使用CPU911,输入公开元b存储部424存储的表示12个元bn,l的数据、和副随机数r选择部452存储的表示4个整数rn的数据。
密码部分元a计算部465根据12个元bn,l中的、l(字母l)等于1的4个元bn,1、和4个整数rn,使用CPU911,针对每1个整数rn,计算n与整数rn相同的1个元bn,1的rn次幂,得到元cn,1,(a)。元“cn, 1,(a)”是乘法群G1的元。密码部分元a计算部465计算4个元cn,1, (a)。n是0以上且3以下的整数。
密码部分元b计算部466使用CPU911,输入公开元a存储部423存储的表示12个元an,l的数据、随机数r选择部451存储的表示1个整数r的数据、以及副随机数r选择部452存储的表示4个整数rn的数据。
密码部分元b计算部466根据1个整数r和4个整数rn,使用CPU911,针对4个整数rn,分别计算从1个整数r中减去1个整数rn的差“r-rn”。密码部分元b计算部466计算4个差“r-rn”。
密码部分元b计算部466根据12个元an,l中的、l(字母l)等于1的4个元an,1、和所计算出的4个差“r-rn”,使用CPU911,针对每1个整数rn,计算n与整数rn相同的1个元an,1的“r-rn”次幂,得到元cn,1,(b)。元“cn,1,(b)”是乘法群G1的元。密码部分元b计算部466计算4个元cn,1,(b)。n是0以上且3以下的整数。
密文输出部414使用CPU911,输入随机数元选择部453存储的表示1个元R的数据、验证元计算部457存储的表示1个元E的数据、密码元计算部456存储的表示1个元c0的数据、密码元a计算部463存储的表示4个元cn,(a)的数据、密码元b计算部464存储的表示4个元cn,(b)的数据、密码部分元a计算部465存储的表示4个元cn,1, (a)的数据、以及密码部分元b计算部466存储的表示4个元cn,1,(b)的数据。
密文输出部414使用CPU911,输出包括表示1个元R、1个元E、1个元c0、4个元cn,(a)、4个元cn,(b)、4个元cn,1,(a)、以及4个元cn,1,(b)的数据的数据,作为密文。
检索装置500的结构与实施方式1相同。
图26是示出该实施方式中的检索装置500中的、公开参数存储部420、密文生成部450的详细的功能块的结构的一个例子的详细框图。
密文存储部530与实施方式1不同,不具有分节数存储部531。
密码元a存储部535使用磁盘装置920,针对每1个密文,存储表示作为乘法群G1的元的4个元cn,(a)的数据。
密码元b存储部536使用磁盘装置920,针对每1个密文,存储表示作为乘法群G1的元的4个元cn,(b)的数据。
密码部分元a存储部537使用磁盘装置920,针对每1个密文,存储表示作为乘法群G1的元的4个元cn,1,(a)的数据。
密码部分元b存储部538使用磁盘装置920,针对每1个密文,存储表示作为乘法群G1的元的4个元cn,1,(b)的数据。
质询标识符存储部541使用RAM914,存储查询中的、表示1个整数I1的数据。
质询元a存储部543使用RAM914,存储查询中的、表示4个元k’n,(a)的数据。n是0以上且3以下的整数。
质询元b存储部544使用RAM914,存储查询中的、表示4个元k’n,(b)的数据。n是0以上且3以下的整数。
密码总积元A计算部551使用CPU911,输入密码元a存储部535存储的表示4个元cn,(a)的数据、密码部分元a存储部537存储的表示4个元cn,1,(a)的数据、以及质询标识符存储部541存储的表示1个整数I1的数据。
密码总积元A计算部551根据4个元cn,1,(a)和1个整数I1,使用CPU911,计算4个元cn,1,(a)各个的I1总积。密码总积元A计算部551计算出的元“cn,1,(a)^I1”是乘法群G1的元。密码总积元A计算部551计算4个元“cn,1,(a)^I1”。n是0以上且3以下的整数。
密码总积元A计算部551根据4个元cn,(a)和所计算出的4个元“cn,1,(a)^I1”,使用CPU911,针对每1个元cn,(a),计算元cn,(a)和n与元cn,(a)相同的1个元“cn,1,(a)^I1”之积,得到元ΠA’,n。元ΠA’, n是乘法群G1的元。密码总积元A计算部551计算4个元ΠA’,n。n是0以上且3以下的整数。
密码总积元B计算部553使用CPU911,输入密码元b存储部536存储的表示4个元cn,(b)的数据、密码部分元b存储部538存储的表示4个元cn,1,(b)的数据、以及质询标识符存储部541存储的表示1个整数I1的数据。
密码总积元B计算部553根据4个元cn,1,(b)和1个整数I1,使用CPU911,计算4个元cn,1,(b)各个的I1次幂。密码总积元B计算部553计算出的元“cn,1,(b)^I1”是乘法群G1的元。密码总积元B计算部553计算4个元“cn,1,(b)^I1”。n是0以上且3以下的整数。
密码总积元B计算部553根据4个元cn,(b)和所计算出的4个元“cn, 1,(b)^I1”,使用CPU911,针对每1个元cn,(b),计算元cn,(b)和n与元cn,(b)相同的1个元“cn,1,(b)^I1”之积,得到元ΠB’,n。元ΠB’,n是乘法群G1的元。密码总积元B计算部553计算4个元ΠB’,n。n是0以上且3以下的整数。
配对元A计算部552使用CPU911,计算出作为乘法群G3的元的4个元eA,n。n是0以上且3以下的整数。
配对元B计算部554使用CPU911,计算出作为乘法群G3的元的4个元eB,n。n是0以上且3以下的整数。
检索装置500仅在检索关键字和密文中嵌入的关键字一致的情况下,判定为在检索中命中。由于不限制用户的检索权限,所以在具有用户秘密密钥生成装置200生成的用户秘密密钥的全部查询发布装置300生成的查询中,检索关键字和密文中嵌入的关键字一致的情况下,检索装置500判定为在检索中命中。
另外,隐匿检索系统800具有针对解读攻击的耐性,是安全的。
在隐匿检索系统800中,存在1个群组,在其中所属有多个用户。在隐匿检索系统800中,加密装置400以能够进行关键字检索的形式对数据进行公开密钥加密而登记到服务器(检索装置500),各用户(查询发布装置300)使用自己的用户秘密密钥来生成检索用陷门(trapdoor)(查询),检索装置500使用密文和陷门来进行隐匿检索。
该实施方式中的隐匿检索系统800适用于中小企业、兴趣小组等小规模的组织。在中小企业中,存在几人至几百人规模的“群组”。即,如果是A公司则存在“A公司的社员群组”这样的群组。另外,兴趣小组也是几十人左右的“群组”。
群组公开密钥生成装置810(群组PKG)进行群组内的密钥管理,例如发布群组的公开参数,或对群组内的用户具有的查询发布装置300发布用户秘密密钥。查询发布装置300将群组内的用户数设为N,并对应于用户1~N。查询发布装置300在进行密文的关键字检索时发布查询。加密装置400对关键字进行加密。数据服务器(检索装置500)保存密文,接收查询,执行检索。
数据服务器既可以存在于群组的组织外,也可以存在于群组的组织内。群组PKG既可以存在于群组的组织内,也可以利用群组的组织外的PKG。加密装置400既可以存在于群组的组织外,也可以存在于群组的组织内。
加密装置400使用公开密钥来进行加密,所以不使用秘密信息。另外,数据服务器根据密文和查询,进行检索,所以不使用秘密信息。因此,数据服务器、加密装置400也可以是与群组完全无关的其他组织的装置。
群组PKG具有公开参数/主秘密密钥生成部(公开参数生成装置100)、用户秘密密钥生成部(用户秘密密钥生成装置200)、主秘密密钥存储部(秘密元w存储部212、秘密元a存储部213、秘密元b存储部214、秘密元y存储部215)。公开参数/主秘密密钥生成部生成群组的公开参数和主秘密密钥。用户秘密密钥生成部针对群组的用户生成该用户用的用户秘密密钥。主秘密密钥存储部存储公开参数/主秘密密钥生成部生成的主秘密密钥。
查询发布装置300具有用户秘密密钥生成要求发布部(用户秘密密钥要求输出部312)、用户秘密密钥存储部320、查询发布部(查询生成部350)。用户秘密密钥生成要求发布部对群组PKG发布生成用户秘密密钥的要求。用户秘密密钥存储部320存储从群组PKG发布的用户秘密密钥。查询发布部对数据服务器发布查询,以检索包括某关键字的密文。
数据服务器(检索装置500)具有密文存储部530、查询存储部540、检索部550。密文存储部530存储从加密装置400发送的密文。查询存储部540存储从查询发布装置300发送的查询。检索部550从密文存储部530中保存的密文之中,检索与查询的指定内容符合的密文。
加密装置400具有公开参数存储部420、加密部(密文生成部450)。公开参数存储部420存储群组PKG公开的公开参数。加密部使用公开参数对关键字进行加密而制作密文。
群组PKG的公开参数/主秘密密钥生成部例如如下那样,生成公开参数PK以及主秘密密钥MSK。
首先,公开参数/主秘密密钥生成部从乘法群G1中均匀随机地选择生成元g1。公开参数/主秘密密钥生成部从乘法群G2中均匀随机地选择生成元g2。接下来,公开参数/主秘密密钥生成部从Zp *中分别均匀随机地选择ω、(αn、βn)n∈[3]。接下来,公开参数/主秘密密钥生成部从Zp中分别均匀随机地选择(θn,l)(n,l)∈[3]×[2]。接下来,在阶段S604中,计算Ω=e(g1,g2)^ω、(an,l=g1^(αn·θn,l),bn,l=g1^(βn·θn,l))(n,l)∈[3]×[2]。接下来,公开参数/主秘密密钥生成部计算w’=g2^ω、(a’n=g2^αn,b’n=g2^βn,(y’n,l=g2^(αn·βn·θn,l)l∈[D])n∈[3]。接下来,公开参数/主秘密密钥生成部公开群G1、G2、G3、位数p、配对e、和所计算出的Ω、(an,l,bn,l)(n,l)∈[3]×[2]而作为公开参数PK。最后,公开参数/主秘密密钥生成部将所计算出的w’、(a’n,b’n,(y’n,l)l∈[D])n∈[3]作为主秘密密钥MSK,保存到主秘密密钥存储部。
查询发布装置300的用户秘密密钥生成要求发布部例如如下那样,对群组PKG发布用户秘密密钥生成要求。
用户名(用户ID)是I1。用户名是有限域Zp的要素。即,用户名是0至p-1的数值。根据密码安全性的观点,p取160比特左右的大小。如果是用160比特左右的字符串表示的用户名,则将用户名直接作为数值处理即可。另外,为了对应于更长的字符串,使用例如SHA-1那样的密码用散列函数变换为160比特左右的值即可。
首先,用户秘密密钥生成要求发布部发布用户ID即I1∈Zp,而作为用户秘密密钥生成要求。之后,用户秘密密钥生成要求发布部将用户秘密密钥生成要求发送到群组PKG。
群组PKG的用户秘密密钥生成部例如如下那样,从查询发布装置300接收用户秘密密钥生成要求,生成用户秘密密钥,发送到查询发布装置300。
首先,用户秘密密钥生成部从查询发布装置300,作为用户秘密密钥生成要求,接收用户ID即I1。接下来,用户秘密密钥生成部从有限域Zp中分别均匀随机地选择(ρn,(ρn,m)m∈[3])n∈[3]。接下来,用户秘密密钥生成部计算下式,
【式63】
设为dI1 test=(k0,(kn,(a),kn,(b))n∈3)。接下来,用户秘密密钥生成部计算下式,
【式64】
设为dI1 rerand=(fm,0,(fm,n,(a),fm,n,(b))n ∈[3])m∈[3]。接下来,用户秘密密钥生成部计算下式,
【式65】
设为dI1 deleg=(h2,(hm,2)m∈[3])。最后,用户秘密密钥生成部将dI1=(dI1 test,dI1 rerand,dI1 deleg)作为I1的用户秘密密钥,发送到查询发布装置300。
查询发布装置300如果接收到用户秘密密钥,则将其保存到用户秘密密钥存储部320。
另外,用户秘密密钥不能让符合的用户的查询发布装置300以外知道。因此,例如优选在通过SSL(Secure Socket Layer,安全套接字层)等通信路径保护方法对查询发布装置300与群组PKG之间的通信路径进行隐匿的状态下进行发送接收。
加密装置400例如如下那样,对关键字W进行加密而制作密文C。
另外,加密装置400制作的密文是关键字检索用的密文。数据主体的密文(例如邮件正文的密文)另外准备。数据主体例如通过RSA密码等以往的公开密钥密码方式加密即可。
首先,加密部从有限域Zp中均匀随机地选择r、(rn)n∈[3]。加密部从乘法群G3中均匀随机地选择R。接下来,加密部计算E=RΩ^(-r)。接下来,加密部计算c0=g1^r。接下来,加密部计算下式,
【式66】
最后,加密部将C=(R,E,c0,(cn,(a),cn,(b),cn,1,(a),cn, 1,(b))n∈[3])作为密文,发送到数据服务器。
查询发布装置300例如如下那样,发布关键字W的查询。
首先,查询发布部从有限域Zp中分别均匀随机地选择(πm)m∈[3]。接下来,查询发布部计算下式。
【式67】
接下来,查询发布部计算下式。
【式68】
最后,查询发布部将T=(I1,k’0,(k’n,(a),k’n,(b))n∈[3])作为查询发送到数据服务器。
数据服务器例如如下那样,使用密文C=(R,E,c0,(cn,(a),cn,(b),c’n,(a),c’n,(b))n ∈[3])和查询T=(I1,k’0,(k’n,(a),k’n, (b))n∈[3])来进行隐匿检索。
首先,检索部550计算下式。
【式69】
接下来,检索部550判定是否为R=R’。如果R=R’,则检索部550判定为关键字命中。如果并非R=R’,则检索部550判定为关键字未命中。
如果这样进行加密、查询生成、隐匿检索,则仅在密文和查询的内部的关键字一致时,在检索中命中。
根据隐匿检索系统800,对于公开密钥即公开参数,群组PKG发布即可,而无需群组内的各用户各自地发布。因此,在系统建立时无需按每个用户进行作业。
另外,公开参数在群组中是1个,不需要每个检索者的公开密钥。因此,能够减轻加密的工作量。
另外,无需针对每个检索者制作不同的密文。因此,密文的大小不与检索者数成比例。
另外,具有如下效果:即使在数据加密之后在群组内增加检索者的情况下,由于在群组公开参数中没有变更,所以不需要数据的再加密。
Claims (14)
1.一种隐匿检索系统,对关键字进行加密,根据来自具有小于D个的整数Ii作为用户标识符的多个查询发布装置中的至少某一个查询发布装置的要求,检索加密了的状态下的关键字,其中,D是2以上的整数,i是1以上且L以下的整数,L是小于D的任意的整数,Ii是0以上且小于p的整数,p是素数,该隐匿检索系统的特征在于,
具有:公开参数生成装置、加密装置、用户秘密密钥生成装置、查询发布装置、以及检索装置,
所述公开参数生成装置具有处理数据的处理装置、随机数ω选择部、随机数α选择部、随机数β选择部、随机数θ选择部、公开元Ω计算部、公开元a计算部、公开元b计算部、秘密元w计算部、秘密元a计算部、秘密元b计算部、秘密元y计算部、公开参数输出部、以及主秘密密钥输出部,
所述随机数ω选择部使用所述处理装置,从1以上且小于p的整数之中,随机地选择1个整数ω,
所述随机数α选择部使用所述处理装置,从1以上且小于p的整数之中,随机地选择(D+2)个整数αn,n是0以上且D+1以下的整数,
所述随机数β选择部使用所述处理装置,从1以上且小于p的整数之中,随机地选择(D+2)个整数βn,
所述随机数θ选择部使用所述处理装置,从1以上且小于p的整数之中,随机地选择(D+2)×(D+1)个整数θn,l,l是0以上且D以下的整数,
所述公开元a计算部使用所述处理装置,根据位数是所述素数p的乘法群G1的生成元g1、所述随机数α选择部选择出的(D+2)个整数αn、以及所述随机数θ选择部选择出的(D+2)×(D+1)个整数θn,l,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且D以下的(D+1)个整数l的组的(D+2)×(D+1)个组(n,l),分别计算所述生成元g1的(αn×θn,l)次幂,从而计算出作为所述乘法群G1的元的(D+2)×(D+1)个元an,l,
所述公开元b计算部使用所述处理装置,根据所述乘法群G1的生成元g1、所述随机数β选择部选择出的(D+2)个整数βn、以及所述随机数θ选择部选择出的(D+2)×(D+1)个整数θn,l,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且D以下的(D+1)个整数l的组的(D+2)×(D+1)个组(n,l),分别计算所述生成元g1的(βn×θn,l)次幂,从而计算出作为所述乘法群G1的元的(D+2)×(D+1)个元bn,l,
所述秘密元w计算部使用所述处理装置,根据位数是所述素数p的乘法群G2的生成元g2和所述随机数ω选择部选择出的1个整数ω,计算所述生成元g2的ω次幂,从而计算出作为所述乘法群G2的元的1个元w’,
所述公开元Ω计算部使用所述处理装置,根据通过将所述乘法群G1的元和所述乘法群G2的元的组映射到位数是p的乘法群G3的元的双线性配对e来映射所述乘法群G1的生成元g1和所述乘法群G2的生成元g2的组而得到的所述乘法群G3的元g3、以及所述随机数ω选择部选择出的1个整数ω,计算所述元g3的ω次幂,从而计算出作为所述公开乘法群G3的元的1个元Ω,
所述秘密元a计算部使用所述处理装置,根据所述乘法群G2的生成元g2和所述随机数α选择部选择出的(D+2)个整数αn,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述生成元g2的αn次幂,从而计算出作为所述乘法群G2的元的(D+2)个元a’n,
所述秘密元b计算部根据所述乘法群G2的生成元g2和所述随机数β选择部选择出的(D+2)个整数βn,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述生成元g2的βn次幂,从而计算出作为所述乘法群G2的元的(D+2)个元b’n,
所述秘密元y计算部使用所述处理装置,根据所述乘法群G2的生成元g2、所述随机数α选择部选择出的(D+2)个整数αn、所述随机数β选择部选择出的(D+2)个整数βn、以及所述随机数θ选择部选择出的(D+2)×(D+1)个整数θn,l,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且D以下的(D+2)个整数l的组的(D+2)×(D+1)个组(n,l),分别计算所述生成元g2的(αn×βn×θn, l)次幂,从而计算出作为所述乘法群G2的元的(D+2)×(D+1)个元y’n,l,
所述公开参数输出部使用所述处理装置,作为所述隐匿检索系统中的公开参数,输出所述公开元Ω计算部计算出的1个元Ω、所述公开元a计算部计算出的(D+2)×(D+1)个元an,l、以及所述公开元b计算部计算出的(D+2)×(D+1)个元bn,l,
所述主秘密密钥输出部使用所述处理装置,作为所述隐匿检索系统中的主秘密密钥,输出所述秘密元w计算部计算出的1个元w’、所述秘密元a计算部计算出的(D+2)个元a’n、所述秘密元b计算部计算出的(D+2)个元b’n、以及所述秘密元y计算部计算出的(D+2)×(D+1)个元y’n,l,
所述加密装置具有:存储数据的存储装置、处理数据的处理装置、公开元Ω存储部、公开元a存储部、公开元b存储部、嵌入关键字输入部、权限范围输入部、随机数r选择部、副随机数r选择部、随机数元选择部、验证元计算部、密码元计算部、密码元a计算部、密码元b计算部、密码部分元a计算部、密码部分元b计算部、以及密文输出部,
所述公开元Ω存储部使用所述存储装置,存储所述公开参数生成装置作为公开参数输出的1个元Ω,
所述公开元a存储部使用所述存储装置,存储所述公开参数生成装置作为公开参数输出的(D+2)×(D+1)个元an,l,
所述公开元b存储部使用所述存储装置,存储所述公开参数生成装置作为公开参数输出的(D+2)×(D+1)个元bn,l,
所述嵌入关键字输入部使用所述处理装置,作为加密的关键字,输入0以上且小于p的1个整数W’,
所述权限范围输入部使用所述处理装置,作为指定具有检索关键字的权限的查询发布装置的范围的数据,输入1个整数L’和L”个整数I’j,其中,L’是1以上且小于D的任意的整数,L”是0以上且L’以下的任意的整数,j是从1以上且L’以下的整数之中任意选择出的L”个整数,I’j是0以上且小于p的整数,
所述随机数r选择部使用所述处理装置,从0以上且小于p的整数之中,随机地选择1个整数r,
所述副随机数r选择部使用所述处理装置,从0以上且小于p的整数之中,随机地选择(D+2)个整数rn,
所述随机数元选择部使用所述处理装置,从所述乘法群G3的元之中,随机地选择1个元R,
所述验证元计算部使用所述处理装置,根据所述公开元Ω存储部存储的1个元Ω、所述随机数r选择部选择出的1个整数r、以及所述随机数元选择部选择出的1个元R,计算所述元Ω的(-r)次幂与所述元R之积,从而计算出作为所述乘法群G3的元的1个元E,
所述密码元计算部使用所述处理装置,根据所述乘法群G1的生成元g1和所述随机数r选择部选择出的整数r,计算所述生成元g1的r次幂,从而计算出作为所述乘法群G1的元的1个元c0,
所述密码元a计算部使用所述处理装置,根据所述权限范围输入部输入的1个整数L’和L”个整数I’j、所述公开元b存储部存储的(D+2)×(D+1)个元bn,l中的(D+2)个元bn,0和(D+2)×L”个元bn,l’和(D+2)个元bn,Λ’、所述嵌入关键字输入部输入的1个整数W’、以及所述副随机数r选择部选择出的(D+2)个整数rn,针对作为0以上且(D+1)以下的(D+2)个整数n和所述L”个整数I’j的下标j的组的(D+2)×L”个组(n,j),分别计算所述元bn,j的Ij次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元bn, Λ’的W’次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元bn,0与L”个元bn,j的I’j次幂与元bn,Λ’的W’次幂的总积ΠB,n,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所计算出的总积ΠB,n的rn次幂,从而计算出作为所述乘法群G1的元的(D+2)个元cn,(a),其中,Λ’是从大于L’且D以下整数之中选择出的1个整数,
所述密码元b计算部使用所述处理装置,根据所述权限范围输入部输入的1个整数L’和L”个整数I’j、所述公开元a存储部存储的(D+2)×(D+1)个元an,l中的(D+2)个元an,0和(D+2)×L”个元an,j’和(D+2)个元an,Λ’、所述嵌入关键字输入部输入的1个整数W’、所述随机数r选择部选择出的1个整数r、以及所述副随机数r选择部选择出的(D+2)个整数rn,针对作为0以上且(D+1)以下的(D+2)个整数n和所述L”个整数I’j的下标j的组的(D+2)×L”个组(n,j),分别计算所述元an,j的Ij次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元an,Λ’的W’次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元an,0与L”个元an,j的I’j次幂与元an,Λ’的W’次幂的总积ΠA,n,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所计算出的总积ΠA,n的(r-rn)次幂,从而计算出作为所述乘法群G1的元的(D+2)个元cn,(b),
所述密码部分元a计算部使用所述处理装置,根据所述权限范围输入部输入的1个整数L’和L”个整数I’j的下标j、所述公开元b存储部存储的(D+2)×(D+1)个元bn,l中的(D+2)×(L’-L”)个元bn,j’、以及所述副随机数r选择部选择出的(D+2)个整数rn,针对作为0以上且(D+1)以下的(D+2)个整数n和1以上且L’以下的整数中的除了所述L”个下标j以外的(L’-L”)个整数j’的组的(D+2)×(L’-L”)个组(n,j’),分别计算所述元bn,j’的rn次幂,从而计算出作为所述乘法群G1的元的(D+2)×(L’-L”)个元cn,j’, (a),其中,j’是1以上且L’以下的整数中的除了所述L”个下标j以外的(L’-L”)个整数,
所述密码部分元b计算部使用所述处理装置,根据所述权限范围输入部输入的1个整数L’和L”个整数I’j的下标j、所述公开元a存储部存储的(D+2)×(D+1)个元an,l中的(D+2)×(L’-L”)个元an,j’、所述随机数r选择部选择出的1个整数r、以及所述副随机数r选择部选择出的(D+2)个整数rn,针对作为0以上且(D+1)以下的(D+2)个整数n和1以上且小于L’的整数中的除了所述L”个下标j以外的(L’-L”)个整数j’的组的(D+2)×(L’-L”)个组(n,j’),分别计算所述元bn,j’的(r-rn)次幂,从而计算出作为所述乘法群G1的元的(D+2)×(L’-L”)个元cn,j’,(b),
所述密文输出部使用所述处理装置,作为将所述整数W’嵌入为关键字的密文,输出所述随机数元选择部选择出的1个元R、所述验证元计算部计算出的1个元E、所述密码元计算部计算出的1个元c0、所述密码元a计算部计算出的(D+2)个元cn,(a)、所述密码元b计算部计算出的(D+2)个元cn,(b)、所述密码部分元a计算部计算出的(D+2)×(L’-L”)个元cn,j’,(a)、以及所述密码部分元b计算部计算出的(D+2)×(L’-L”)个元cn,j’,(b),
所述用户秘密密钥生成装置具有:存储数据的存储装置、处理数据的处理装置、秘密元w存储部、秘密元a存储部、秘密元b存储部、秘密元y存储部、用户标识符输入部、随机数ρ选择部、副随机数ρ选择部、总积元Y计算部、检索元计算部、检索元a计算部、检索元b计算部、干扰元计算部、干扰元a计算部、干扰元b计算部、委任元计算部、副委任元计算部、以及用户秘密密钥输出部,
所述秘密元w存储部使用所述存储装置,存储所述公开参数生成装置作为主秘密密钥输出的1个元w’,
所述秘密元a存储部使用所述存储装置,存储所述公开参数生成装置作为主秘密密钥输出的(D+2)个元a’n,
所述秘密元b存储部使用所述存储装置,存储所述公开参数生成装置作为主秘密密钥输出的(D+2)个元b’n,
所述秘密元y存储部使用所述存储装置,存储所述公开参数生成装置作为主秘密密钥输出的(D+2)×(D+1)个元y’n,l,
所述用户标识符输入部使用所述处理装置,针对所述多个查询发布装置中的要求生成用户秘密密钥的查询发布装置,作为所述查询发布装置的用户标识符,输入L个整数Ii,
所述随机数ρ选择部使用所述处理装置,从0以上且小于p的整数之中,随机地选择(D+2)个整数ρn,
所述副随机数ρ选择部使用所述处理装置,从0以上且小于p的整数之中,随机地选择(D+2)×(D+2)个整数ρn,m,m是0以上且D+1以下的整数,
所述总积元Y计算部使用所述处理装置,根据所述用户标识符输入部输入的L个整数Ii、以及所述秘密元y存储部存储的(D+2)×(D+1)个元y’n,l中的(D+2)个元y’n,0和(D+2)×L个元y’n,i,针对作为0以上且(D+1)以下的(D+2)个整数n和1以上且L以下的(D+1)个整数i的组的(D+2)×(D+1)个组(n,i),分别计算所述元y’n, i的Ii次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元y’n,0与L个元y’n,i的Ii次幂的总积,从而计算出作为所述乘法群G2的元的(D+2)个元ΠY,n,
所述检索元计算部使用所述处理装置,根据所述秘密元w存储部存储的1个元w’、所述随机数ρ选择部选择出的(D+2)个整数ρn、以及所述总积元Y计算部计算出的(D+2)个元ΠY,n,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元ΠY,n的ρn次幂,计算所述元w’与(D+2)个元ΠY,n的ρn次幂的总积,从而计算出作为所述乘法群G2的元的1个元k0,
所述检索元a计算部使用所述处理装置,根据所述秘密元a存储部存储的(D+2)个元a’n和所述随机数ρ选择部选择出的(D+2)个整数ρn,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元a’n的(-ρn)次幂,从而计算出作为所述乘法群G2的元的(D+2)个元kn,(a),
所述检索元b计算部使用所述处理装置,根据所述秘密元b存储部存储的(D+2)个元b’n和所述随机数ρ选择部选择出的(D+2)个整数ρn,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元b’n的(-ρn)次幂,从而计算出作为所述乘法群G2的元的(D+2)个元kn,(b),
所述干扰元计算部使用所述处理装置,根据所述副随机数ρ选择部选择出的(D+2)×(D+2)个整数ρn,m和所述总积元Y计算部计算出的(D+2)个元ΠY,n,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算所述元ΠY,n的ρn,m次幂,针对0以上且(D+1)以下的(D+2)个整数m,分别计算(D+2)个元ΠY, n的ρn,m次幂的总积,从而计算出作为所述乘法群G2的元的(D+2)个元fm,0,
所述干扰元a计算部使用所述处理装置,根据所述秘密元a存储部存储的(D+2)个元a’n和所述副随机数ρ选择部选择出的(D+2)×(D+2)个整数ρn,m,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算所述元a’n的(-ρn,m)次幂,从而计算出作为所述乘法群G2的元的(D+2)×(D+2)个元fm,n,(a),
所述干扰元b计算部使用所述处理装置,根据所述秘密元b存储部存储的(D+2)个元b’n和所述副随机数ρ选择部选择出的(D+2)×(D+2)个整数ρn,m,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算所述元b’n的(-ρn,m)次幂,从而计算出作为所述乘法群G2的元的(D+2)×(D+2)个元fm,n,(b),
所述委任元计算部使用所述处理装置,根据所述秘密元y存储部存储的(D+2)×(D+1)个元y’n,l中的(D+2)个元y’n,Λ、和所述随机数ρ选择部选择出的(D+2)个整数ρn,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元y’n,Λ的ρn次幂,计算(D+2)个元y’n,j的ρn次幂的总积,从而计算出作为所述乘法群G2的元的1个元hΛ,其中,Λ是从大于L且D以下的整数之中选择出的1个整数,
所述副委任元计算部使用所述处理装置,根据所述秘密元y存储部存储的(D+2)×(D+1)个元y’n,l中的(D+2)个元y’n,Λ、和所述副随机数ρ选择部选择出的(D+2)×(D+2)个整数ρn,m,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算所述元y’n,Λ的ρn,m次幂,针对0以上且(D+1)以下的(D+2)个整数m,分别计算(D+2)个元y’n,Λ的ρn,m次幂的总积,从而计算出作为所述乘法群G2的元的(D+2)个元hm,Λ,
所述用户秘密密钥输出部使用所述处理装置,作为所述查询发布装置的用户秘密密钥,输出所述检索元计算部计算出的1个元k0与所述检索元a计算部计算出的(D+2)个元kn,(a)与所述检索元b计算部计算出的(D+2)个元kn,(b)与所述干扰元计算部计算出的(D+2)个元fm,0与所述干扰元a计算部计算出的(D+2)×(D+2)个元fm,n, (a)与所述干扰元b计算部计算出的(D+2)×(D+2)个元fm,n,(b)与所述委任元计算部计算出的1个元hΛ与所述副委任元计算部计算出的(D+2)个元hm,Λ的组,
所述查询发布装置具有:存储数据的存储装置、处理数据的处理装置、用户标识符存储部、检索元存储部、检索元a存储部、检索元b存储部、干扰元存储部、干扰元a存储部、干扰元b存储部、委任元存储部、副委任元存储部、检索关键字输入部、随机数π选择部、质询元计算部、质询元a计算部、质询元b计算部、以及查询输出部,
所述用户标识符存储部使用所述存储装置,作为所述查询发布装置的用户标识符,存储L个整数Ii,
所述检索元存储部使用所述存储装置,存储所述用户秘密密钥生成装置作为所述查询发布装置的用户秘密密钥输出的1个元k0,
所述检索元a存储部使用所述存储装置,存储所述用户秘密密钥生成装置作为所述查询发布装置的用户秘密密钥输出的(D+2)个元kn,(a),n是0以上且D+1以下的整数,
所述检索元b存储部使用所述存储装置,存储所述用户秘密密钥生成装置作为所述查询发布装置的用户秘密密钥输出的(D+2)个元kn,(b),
所述干扰元存储部使用所述存储装置,存储所述用户秘密密钥生成装置作为所述查询发布装置的用户秘密密钥输出的(D+2)个元fm, 0,m是0以上且D+1以下的整数,
所述干扰元a存储部使用所述存储装置,存储所述用户秘密密钥生成装置作为所述查询发布装置的用户秘密密钥输出的(D+2)×(D+2)个元fm,n,(a),
所述干扰元b存储部使用所述存储装置,存储所述用户秘密密钥生成装置作为所述查询发布装置的用户秘密密钥输出的(D+2)×(D+2)个元fm,n,(b),
所述委任元存储部使用所述存储装置,存储所述用户秘密密钥生成装置作为所述查询发布装置的用户秘密密钥输出的1个元hΛ,
所述副委任元存储部使用所述存储装置,存储所述用户秘密密钥生成装置作为所述查询发布装置的用户秘密密钥输出的(D+2)个元hm,Λ,
所述检索关键字输入部使用所述处理装置,作为检索的关键字,输入0以上且小于p的1个整数W,
所述随机数π选择部使用所述处理装置,从0以上且小于p的整数之中,随机地选择(D+2)个整数πm,
所述质询元计算部使用所述处理装置,根据所述检索元存储部存储的1个元k0、所述干扰元存储部存储的(D+2)个元fm,0、所述委任元存储部存储的1个元hΛ、所述副委任元存储部存储的(D+2)个元hm,Λ、所述检索关键字输入部输入的1个整数W、以及所述随机数π选择部选择出的(D+2)个整数πm,针对0以上且(D+1)以下的(D+2)个整数m,分别计算所述元hm,Λ的πm次幂,计算所述元hΛ与(D+2)个元hm,Λ的πm次幂的总积ΠH,针对0以上且(D+1)以下的(D+2)个整数m,分别计算所述元fm,0的πm次幂,计算所述总积ΠH的W次幂,计算所述元k0与(D+2)个元fm,0的πm次幂与总积ΠH的W次幂的总积,从而计算出作为所述乘法群G2的元的1个元k’0,
所述质询元a计算部使用所述处理装置,根据所述检索元a存储部存储的(D+2)个元kn,(a)、所述干扰元a存储部存储的(D+2)×(D+2)个元fm,n,(a)、以及所述随机数π选择部选择出的(D+2)个整数πm,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算所述元fm,n,(a)的πm次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元kn,(a)与(D+2)个元fm, n,(a)的πm次幂的总积,从而计算出作为所述乘法群G2的元的(D+2)个元k’n,(a),
所述质询元b计算部使用所述处理装置,根据所述检索元b存储部存储的(D+2)个元kn,(b)、所述干扰元b存储部存储的(D+2)×(D+2)个元fm,n,(b)、以及所述随机数π选择部选择出的(D+2)个整数πm,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算所述元fm,n,(b)的πm次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元kn,(b)与(D+2)个元fm, n,(b)的πm次幂的总积,从而计算出作为所述乘法群G2的元的(D+2)个元k’n,(b),
所述查询输出部使用所述处理装置,输出所述用户标识符存储部存储的L个整数Ii与所述质询元计算部计算出的1个元k’0与所述质询元a计算部计算出的(D+2)个元k’n,(a)与所述质询元b计算部计算出的(D+2)个元k’n,(b)的组,作为用于将所述整数W作为关键字而进行检索的查询,
所述检索装置具有:存储数据的存储装置、处理数据的处理装置、密文存储部、查询输入部、配对元计算部、配对元A计算部、配对元B计算部、比较元计算部、以及比较部,
所述密文存储部使用所述存储装置,作为嵌入有关键字的密文,存储所述加密装置输出的密文中包含的1个元R与1个元E与1个元c0与(D+2)个元cn,(a)与(D+2)个元cn,(b)与(D+2)×(L’-L”)个元cn,j’,(a)与(D+2)×(L’-L”)个元cn,j’,(b)的组,
所述查询输入部使用所述处理装置,作为检索关键字的查询,输入所述查询发布装置输出的L个整数Ii与1个元k’0与(D+2)个元k’n, (a)与(D+2)个元k’n,(b)的组,
所述配对元计算部使用所述处理装置,根据所述密文存储部存储的密文中包含的1个元c0和所述查询输入部输入的查询中包含的1个元k’0,通过所述双线性配对e来映射所述元c0和所述元k’0的组,从而计算出作为所述乘法群G3的元的1个元e0,
所述配对元A计算部使用所述处理装置,根据所述密文存储部存储的密文中包含的(D+2)个元cn,(a)和(D+2)×(L’-L”)个元cn, j’,(a)、以及所述查询输入部输入的查询中包含的L个整数Ii和(D+2)个元k’n,(a),针对作为0以上且(D+1)以下的(D+2)个整数n和所述(D+2)×(L’-L”)个元cn,j’,(a)的下标即(L’-L”)个整数j’中的1以上且L以下的LA个整数i’的组的(D+2)×LA个组(n,i’),分别计算元cn,i’,(a)的I-i’次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元cn,(a)与LA个元cn,i’,(a)的I-i’次幂的总积ΠA’,n,针对0以上且(D+1)以下的(D+2)个整数n,分别通过所述双线性配对e来映射所述总积ΠA’,n和所述元k’n,(a)的组,从而计算出作为所述乘法群G3的元的(D+2)个元eA,n,
所述配对元B计算部使用所述处理装置,根据所述密文存储部存储的密文中包含的(D+2)个元cn,(b)和(D+2)×(L’-L”)个元cn, j’,(b)、以及所述查询输入部输入的查询中包含的L个整数Ii和(D+2)个元k’n,(b),针对作为0以上且(D+1)以下的(D+2)个整数n和所述(D+2)×(L’-L”)个元cn,j’,(b)的下标即(L’-L”)个整数j’中的1以上且L以下的LA个整数i’的组的(D+2)×LA个组(n,i’),分别计算元cn,i’,(b)的I-i’次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元cn,(b)与LA个元cn,i’,(b)的I-i’次幂的总积ΠB’,n,针对0以上且(D+1)以下的(D+2)个整数n,分别通过所述双线性配对e来映射所述总积ΠB’,n和所述元k’n,(b)的组,从而计算出作为所述乘法群G3的元的(D+2)个元eB,n,
所述比较元计算部使用所述处理装置,根据所述密文存储部存储的密文中包含的1个元E、所述配对元计算部计算出的1个元e0、所述配对元A计算部计算出的(D+2)个元eA,n、以及所述配对元B计算部计算出的(D+2)个元eB,n,计算所述元E与所述元e0与(D+2)个元eA,n与(D+2)个元eB,n的总积,从而计算出作为所述乘法群G3的元的1个元R’,
所述比较部使用所述处理装置,比较所述密文存储部存储的密文中包含的1个元R和所述比较元计算部计算出的1个元R’,在元R和元R’一致的情况下,判定为在检索中命中。
2.根据权利要求1所述的隐匿检索系统,其特征在于,
所述委任元计算部使用所述处理装置,根据所述秘密元y存储部存储的(D+2)×(D+1)个元y’n,l中的(D+2)×(D’-L)个元y’n, λ、和所述随机数ρ选择部选择出的(D+2)个整数ρn,针对作为0以上且(D+1)以下的(D+2)个整数n和大于L且D’以下的(D’-L)个整数λ的组的(D+2)×(D’-L)个组(n,λ),分别计算所述元y’n,λ的ρn次幂,针对大于L且D’以下的(D’-L)个整数λ,分别计算(D+2)个元y’n,λ的ρn次幂的总积,从而计算出作为所述乘法群G2的元的(D’-L)个元hλ,其中,D’是大于L且D以下的整数,λ是大于L且D’以下的整数,
所述副委任元计算部使用所述处理装置,根据所述秘密元y存储部存储的(D+2)×(D+1)个元y’n,l中的(D+2)×(D’-L)个元y’n, λ、和所述副随机数ρ选择部选择出的(D+2)×(D+2)个整数ρn,m,针对作为0以上且(D+1)以下的(D+2)个整数n与0以上且(D+1)以下的(D+2)个整数m与大于L且D’以下的(D’-L)个整数λ的组的(D+2)×(D+2)×(D’-L)个组(n,m,λ),分别计算所述元y’n,λ的ρn,m次幂,针对作为0以上且(D+1)以下的(D+2)个整数m和大于L且D’以下的(D’-L)个整数λ的组的(D+2)×(D’-L)个组(m,λ),分别计算(D+2)个元y’n,λ的ρn,m次幂的总积,从而计算出作为所述乘法群G2的元的(D+2)×(D’-L)个元hm,λ,
所述用户秘密密钥输出部使用所述处理装置,作为所述查询发布装置的用户秘密密钥,输出所述检索元计算部计算出的1个元k0与所述检索元a计算部计算出的(D+2)个元kn,(a)与所述检索元b计算部计算出的(D+2)个元kn,(b)与所述干扰元计算部计算出的(D+2)个元fm,0与所述干扰元a计算部计算出的(D+2)×(D+2)个元fm,n, (a)与所述干扰元b计算部计算出的(D+2)×(D+2)个元fm,n,(b)与所述委任元计算部计算出的(D’-L)个元hλ与所述副委任元计算部计算出的(D+2)×(D’-L)个元hm,λ的组,
所述查询发布装置还具有:子用户标识符输入部、副随机数π选择部、子检索元计算部、子干扰元计算部、子干扰元a计算部、子干扰元b计算部、子委任元计算部、子副委任元计算部、以及子用户秘密密钥输出部,
所述委任元存储部使用所述存储装置,存储所述用户秘密密钥生成装置作为所述查询发布装置的用户秘密密钥输出的(D’-L)个元hλ,
所述副委任元存储部使用所述存储装置,存储所述用户秘密密钥生成装置作为所述查询发布装置的用户秘密密钥输出的(D+2)×(D’-L)个元hm,λ,
所述子用户标识符输入部使用所述处理装置,输入0以上且小于p的1个整数IL+1,
所述副随机数π选择部使用所述处理装置,从0以上且小于p的整数之中,随机地选择(D+2)×(D+2)个整数πm,m’-,m’是0以上且D+1以下的整数-,
所述子检索元计算部使用所述处理装置,根据所述检索元存储部存储的1个元k0、所述干扰元存储部存储的(D+2)个元f-m,0、所述委任元存储部存储的(D’-L)个元hλ中的1个元hL+1、所述副委任元存储部存储的(D+2)×(D’-L)个元hm,λ中的(D+2)个元hm, L+1、所述随机数π选择部选择出的(D+2)个整数πm-、以及所述子用户标识符输入部输入的整数IL+1,针对0以上且(D+1)以下的(D+2)个整数m,分别计算所述元hm,L+1的πm次幂,计算所述元hL+1与(D+2)个元hm,L+1的πm次幂的总积ΠH,针对0以上且(D+1)以下的(D+2)个整数m,分别计算所述元f-m,0的πm次幂,计算所述总积ΠH的IL+1次幂,计算所述元k0与(D+2)个元f-m,0的πm次幂与总积ΠH的IL+1次幂的总积,从而计算出作为所述乘法群G2的元的1个元k”0,
所述子干扰元计算部使用所述处理装置,根据所述干扰元存储部存储的(D+2)个元fm,0、所述副委任元存储部存储的(D+2)×(D’-L)个元hm,λ中的(D+2)个元hm,L+1、以及所述副随机数π选择部选择出的(D+2)×(D+2)个整数πm,m’,针对作为0以上且(D+1)以下的(D+2)个整数m和0以上且(D+1)以下的(D+2)个整数m’的组的(D+2)×(D+2)个组(m,m’),分别计算所述元fm,0的πm,m’次幂、以及所述元hm,L+1的πm,m’次幂,针对0以上且(D+1)以下的(D+2)个整数m’,分别计算(D+2)个元hm,L+1的πm,m’次幂的总积ΠH,m’,针对0以上且(D+1)以下的(D+2)个整数m’,分别计算(D+2)个元fm,0的πm,m’次幂与所述总积ΠH,m’的IL+1次幂的总积,从而计算出作为所述乘法群G2的元的(D+2)个元fm’,0,
所述子干扰元a计算部使用所述处理装置,根据所述干扰元a存储部存储的(D+2)×(D+2)个元fm,n,(a)和所述副随机数π选择部选择出的(D+2)×(D+2)个整数πm,m’,针对作为0以上且(D+1)以下的(D+2)个整数n与0以上且(D+1)以下的(D+2)个整数m与0以上且(D+1)以下的(D+2)个整数m’的组的(D+2)×(D+2)×(D+2)个(n,m,m’),分别计算所述元fm,n,(a)的πm,m’次幂,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m’的组的(D+2)×(D+2)个(n,m’),分别计算(D+2)个元fm,n,(a)的πm,m’次幂的总积,从而计算出作为所述乘法群G2的元的(D+2)×(D+2)个元f’m’,n,(a),
所述子干扰元b计算部使用所述处理装置,根据所述干扰元b存储部存储的(D+2)×(D+2)个元fm,n,(b)和所述副随机数π选择部选择出的(D+2)×(D+2)个整数πm,m’,针对作为0以上且(D+1)以下的(D+2)个整数n与0以上且(D+1)以下的(D+2)个整数m与0以上且(D+1)以下的(D+2)个整数m’的组的(D+2)×(D+2)×(D+2)个(n,m,m’),分别计算所述元fm,n,(b)的πm,m’次幂,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m’的组的(D+2)×(D+2)个(n,m’),分别计算(D+2)个元fm,n,(b)的πm,m’次幂的总积,从而计算出作为所述乘法群G2的元的(D+2)×(D+2)个元f’m’,n,(b),
所述子委任元计算部使用所述处理装置,根据所述委任元存储部存储的(D’-L)个元hλ中的(D”-L-1)个元hλ’、所述副委任元存储部存储的(D+2)×(D’-L)个元hm,λ中的(D+2)×(D”-L-1)个元hm,λ’、以及所述随机数π选择部选择出的(D+2)个整数πm,针对作为0以上且(D+1)以下的(D+2)个整数m和大于(L+1)且D”以下的(D”-L-1)个整数λ’的组的(D+2)×(D”-L-1)个组(m,λ’),分别计算所述元hm,λ’的πm次幂,针对大于(L+1)且D”以下的(D”-L-1)个整数λ’,分别计算所述元hλ’和(D+2)个元hm,λ’的πm次幂的总积,从而计算出作为所述乘法群G2的元的(D”-L-1)个元h’λ’,其中,D”是大于(L+1)且D’以下的整数,λ’是大于(L+1)且D”以下的整数,
所述子副委任元计算部使用所述处理装置,根据所述副委任元存储部存储的(D+2)×(D’-L)个元hm,λ中的(D+2)×(D”-L-1)个元hm,λ’、和所述副随机数π选择部选择出的(D+2)×(D+2)个整数πm,m’,针对作为0以上且(D+1)以下的(D+2)个整数m与0以上且(D+1)以下的(D+2)个整数m’与大于L且D”以下的(D”-L-1)个整数j’的组的(D+2)×(D+2)×(D”-L-1)个组(m,m’,λ’),分别计算所述元hm,λ’的πm,m’次幂,针对作为0以上且(D+1)以下的(D+2)个整数m’和大于L且D”以下的(D”-L-1)个整数λ’的组的(D+2)×(D”-L-1)个组(m,m’,λ’),分别计算(D+2)个元hm,λ’的πm,m’次幂的总积,从而计算出作为所述乘法群G2的元的(D+2)×(D”-L-1)个元h’m’,λ’,
所述子用户秘密密钥输出部,作为具有所述用户标识符存储部存储的L个整数Ii和所述子用户标识符输入部输入的1个整数IL+1而作为用户标识符的其他查询发布装置的用户秘密密钥,输出所述子检索元计算部计算出的1个元k”0与所述质询元a计算部计算出的(D+2)个元k’n,(a)与所述质询元b计算部计算出的(D+2)个元k’n,(b)与所述子干扰元计算部计算出的(D+2)个元f’m’,0与所述子干扰元a计算部计算出的(D+2)×(D+2)个元f’m’,n,(a)与所述子干扰元b计算部计算出的(D+2)×(D+2)个元f’m’,n,(b)与所述子委任元计算部计算出的(D”-L-1)个元h’λ’与所述子副委任元计算部计算出的(D+2)×(D”-L-1)个元h’m’,λ’的组。
3.一种公开参数生成装置,生成在隐匿检索系统中使用的公开参数和主秘密密钥,所述隐匿检索系统对关键字进行加密,根据来自具有小于D个的整数Ii作为用户标识符的多个查询发布装置中的至少某一个查询发布装置的要求,检索加密了的状态下的关键字,其中,D是2以上的整数,i是1以上且L以下的整数,L是小于D的任意的整数,Ii是0以上且小于p的整数,p是素数,该公开参数生成装置的特征在于,
具有:处理数据的处理装置、随机数ω选择部、随机数α选择部、随机数β选择部、随机数θ选择部、公开元Ω计算部、公开元a计算部、公开元b计算部、秘密元w计算部、秘密元a计算部、秘密元b计算部、秘密元y计算部、公开参数输出部、以及主秘密密钥输出部,
所述随机数ω选择部使用所述处理装置,从1以上且小于p的整数之中,随机地选择1个整数ω,
所述随机数α选择部使用所述处理装置,从1以上且小于p的整数之中,随机地选择(D+2)个整数αn,n是0以上且D+1以下的整数,
所述随机数β选择部使用所述处理装置,从1以上且小于p的整数之中,随机地选择(D+2)个整数βn,
所述随机数θ选择部使用所述处理装置,从1以上且小于p的整数之中,随机地选择(D+2)×(D+1)个整数θn,l,l是0以上且D以下的整数,
所述公开元a计算部使用所述处理装置,根据位数是所述素数p的乘法群G1的生成元g1、所述随机数α选择部选择出的(D+2)个整数αn、以及所述随机数θ选择部选择出的(D+2)×(D+1)个整数θn,l,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且D以下的(D+1)个整数l的组的(D+2)×(D+1)个组(n,l),分别计算所述生成元g1的(αn×θn,l)次幂,从而计算出作为所述乘法群G1的元的(D+2)×(D+1)个元an,l,
所述公开元b计算部使用所述处理装置,根据所述乘法群G1的生成元g1、所述随机数β选择部选择出的(D+2)个整数βn、以及所述随机数θ选择部选择出的(D+2)×(D+1)个整数θn,l,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且D以下的(D+1)个整数l的组的(D+2)×(D+1)个组(n,l),分别计算所述生成元g1的(βn×θn,l)次幂,从而计算出作为所述乘法群G1的元的(D+2)×(D+1)个元bn,l,
所述秘密元w计算部使用所述处理装置,根据位数是所述素数p的乘法群G2的生成元g2和所述随机数ω选择部选择出的1个整数ω,计算所述生成元g2的ω次幂,从而计算出作为所述乘法群G2的元的1个元w’,
所述公开元Ω计算部使用所述处理装置,根据通过将所述乘法群G1的元和所述乘法群G2的元的组映射到位数是p的乘法群G3的元的双线性配对e来映射所述乘法群G1的生成元g1和所述乘法群G2的生成元g2的组而得到的所述乘法群G3的元g3、和所述随机数ω选择部选择出的1个整数ω,计算所述元g3的ω次幂,从而计算出作为所述公开乘法群G3的元的1个元Ω,
所述秘密元a计算部使用所述处理装置,根据所述乘法群G2的生成元g2和所述随机数α选择部选择出的(D+2)个整数αn,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述生成元g2的αn次幂,从而计算出作为所述乘法群G2的元的(D+2)个元a’n,
所述秘密元b计算部根据所述乘法群G2的生成元g2和所述随机数β选择部选择出的(D+2)个整数βn,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述生成元g2的βn次幂,从而计算出作为所述乘法群G2的元的(D+2)个元b’n,
所述秘密元y计算部使用所述处理装置,根据所述乘法群G2的生成元g2、所述随机数α选择部选择出的(D+2)个整数αn、所述随机数β选择部选择出的(D+2)个整数βn、以及所述随机数θ选择部选择出的(D+2)×(D+1)个整数θn,l,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且D以下的(D+2)个整数l的组的(D+2)×(D+1)个组(n,l),分别计算所述生成元g2的(αn×βn×θn, l)次幂,从而计算出作为所述乘法群G2的元的(D+2)×(D+1)个元y’n,l,
所述公开参数输出部使用所述处理装置,作为所述隐匿检索系统中的公开参数,输出所述公开元Ω计算部计算出的1个元Ω、所述公开元a计算部计算出的(D+2)×(D+1)个元an,l、以及所述公开元b计算部计算出的(D+2)×(D+1)个元bn,l,
所述主秘密密钥输出部使用所述处理装置,作为所述隐匿检索系统中的主秘密密钥,输出所述秘密元w计算部计算出的1个元w’、所述秘密元a计算部计算出的(D+2)个元a’n、所述秘密元b计算部计算出的(D+2)个元b’n、以及所述秘密元y计算部计算出的(D+2)×(D+1)个元y’n,l。
4.一种加密装置,在隐匿检索系统中对关键字进行加密,所述隐匿检索系统对关键字进行加密,根据来自具有小于D个的整数Ii作为用户标识符的多个查询发布装置中的至少某一个查询发布装置的要求,检索加密了的状态下的关键字,其中,D是2以上的整数,i是1以上且L以下的整数,L是小于D的任意的整数,Ii是0以上且小于p的整数,p是素数,该加密装置的特征在于,
具有:存储数据的存储装置、处理数据的处理装置、公开元Ω存储部、公开元a存储部、公开元b存储部、嵌入关键字输入部、权限范围输入部、随机数r选择部、副随机数r选择部、随机数元选择部、验证元计算部、密码元计算部、密码元a计算部、密码元b计算部、密码部分元a计算部、密码部分元b计算部、以及密文输出部,
所述公开元Ω存储部使用所述存储装置,存储作为位数是p的乘法群G3的元的1个元Ω,
所述公开元a存储部使用所述存储装置,存储作为位数是p的乘法群G1的元的(D+2)×(D+1)个元an,l,n是0以上且D+1以下的整数,l是0以上且D以下的整数,
所述公开元b存储部使用所述存储装置,存储作为所述乘法群G1的元的(D+2)×(D+1)个元bn,l,
所述嵌入关键字输入部使用所述处理装置,作为加密的关键字,输入0以上且小于p的1个整数W’,
所述权限范围输入部使用所述处理装置,作为指定具有检索关键字的权限的查询发布装置的范围的数据,输入1个整数L’和L”个整数I’j,其中,L’是1以上且小于D的任意的整数,L”是0以上且L’以下的任意的整数,j是从1以上且L’以下的整数之中任意选择出的L”个整数,I’j是0以上且小于p的整数,
所述随机数r选择部使用所述处理装置,从0以上且小于p的整数之中,随机地选择1个整数r,
所述副随机数r选择部使用所述处理装置,从0以上且小于p的整数之中,随机地选择(D+2)个整数rn,
所述随机数元选择部使用所述处理装置,从所述乘法群G3的元之中,随机地选择1个元R,
所述验证元计算部使用所述处理装置,根据所述公开元Ω存储部存储的1个元Ω、所述随机数r选择部选择出的1个整数r、以及所述随机数元选择部选择出的1个元R,计算所述元Ω的(-r)次幂与所述元R之积,从而计算出作为所述乘法群G3的元的1个元E,
所述密码元计算部使用所述处理装置,根据所述乘法群G1的生成元g1和所述随机数r选择部选择出的整数r,计算所述生成元g1的r次幂,从而计算出作为所述乘法群G1的元的1个元c0,
所述密码元a计算部使用所述处理装置,根据所述权限范围输入部输入的1个整数L’和L”个整数I’j、所述公开元b存储部存储的(D+2)×(D+1)个元bn,l中的(D+2)个元bn,0和(D+2)×L”个元bn,l’和(D+2)个元bn,Λ’、所述嵌入关键字输入部输入的1个整数W’、以及所述副随机数r选择部选择出的(D+2)个整数rn,针对作为0以上且(D+1)以下的(D+2)个整数n和所述L”个整数I’j的下标j的组的(D+2)×L”个组(n,j),分别计算所述元bn,j的Ij次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元bn, Λ’的W’次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元bn,0与L”个元bn,j的I’j次幂与元bn,Λ’的W’次幂的总积ΠB,n,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所计算出的总积ΠB,n的rn次幂,从而计算出作为所述乘法群G1的元的(D+2)个元cn,(a),其中,Λ’是从大于L’且D以下整数之中选择出的1个整数,
所述密码元b计算部使用所述处理装置,根据所述权限范围输入部输入的1个整数L’和L”个整数I’j、所述公开元a存储部存储的(D+2)×(D+1)个元an,l中的(D+2)个元an,0和(D+2)×L”个元an,j’和(D+2)个元an,Λ’、所述嵌入关键字输入部输入的1个整数W’、所述随机数r选择部选择出的1个整数r、以及所述副随机数r选择部选择出的(D+2)个整数rn,针对作为0以上且(D+1)以下的(D+2)个整数n和所述L”个整数I’j的下标j的组的(D+2)×L”个组(n,j),分别计算所述元an,j的Ij次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元an,Λ’的W’次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元an,0与L”个元an,j的I’j次幂与元an,Λ’的W’次幂的总积ΠA,n,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所计算出的总积ΠA,n的(r-rn)次幂,从而计算出作为所述乘法群G1的元的(D+2)个元cn,(b),
所述密码部分元a计算部使用所述处理装置,根据所述权限范围输入部输入的1个整数L’和L”个整数I’j的下标j、所述公开元b存储部存储的(D+2)×(D+1)个元b n,l中的(D+2)×(L’-L”)个元bn,j’、以及所述副随机数r选择部选择出的(D+2)个整数rn,针对作为0以上且(D+1)以下的(D+2)个整数n和1以上且L’以下的整数中的除了所述L”个下标j以外的(L’-L”)个整数j’的组的(D+2)×(L’-L”)个组(n,j’),分别计算所述元bn,j’的rn次幂,从而计算出作为所述乘法群G1的元的(D+2)×(L’-L”)个元cn,j’, (a),其中,j’是1以上且L’以下的整数中的除了所述L”个下标j以外的(L’-L”)个整数,
所述密码部分元b计算部使用所述处理装置,根据所述权限范围输入部输入的1个整数L’和L”个整数I’j的下标j、所述公开元a存储部存储的(D+2)×(D+1)个元a n,l中的(D+2)×(L’-L”)个元an,j’、所述随机数r选择部选择出的1个整数r、以及所述副随机数r选择部选择出的(D+2)个整数rn,针对作为0以上且(D+1)以下的(D+2)个整数n和1以上且小于L’的整数中的除了所述L”个下标j以外的(L’-L”)个整数j’的组的(D+2)×(L’-L”)个组(n,j’),分别计算所述元bn,j’的(r-rn)次幂,从而计算出作为所述乘法群G1的元的(D+2)×(L’-L”)个元cn,j’,(b),
所述密文输出部使用所述处理装置,作为将所述整数W’嵌入为关键字的密文,输出所述随机数元选择部选择出的1个元R、所述验证元计算部计算出的1个元E、所述密码元计算部计算出的1个元c0、所述密码元a计算部计算出的(D+2)个元cn,(a)、所述密码元b计算部计算出的(D+2)个元cn,(b)、所述密码部分元a计算部计算出的(D+2)×(L’-L”)个元cn,j’,(a)、以及所述密码部分元b计算部计算出的(D+2)×(L’-L”)个元cn,j’,(b)。
5.一种用户秘密密钥生成装置,在对关键字进行加密并根据来自具有小于D个的整数Ii作为用户标识符的多个查询发布装置中的至少某一个查询发布装置的要求而检索加密了的状态下的关键字的隐匿检索系统中,生成所述查询发布装置使用的用户秘密密钥,其中,D是2以上的整数,i是1以上且L以下的整数,L是小于D的任意的整数,Ii是0以上且小于p的整数,p是素数,该用户秘密密钥生成装置的特征在于,
具有:存储数据的存储装置、处理数据的处理装置、秘密元w存储部、秘密元a存储部、秘密元b存储部、秘密元y存储部、用户标识符输入部、随机数ρ选择部、副随机数ρ选择部、总积元Y计算部、检索元计算部、检索元a计算部、检索元b计算部、干扰元计算部、干扰元a计算部、干扰元b计算部、委任元计算部、副委任元计算部、以及用户秘密密钥输出部,
所述秘密元w存储部使用所述存储装置,作为所述隐匿检索系统中的主秘密密钥的一部分,存储作为位数是p的乘法群G2的元的1个元w’,
所述秘密元a存储部使用所述存储装置,作为所述主秘密密钥的一部分,存储作为所述乘法群G2的元的(D+2)个元a’n,n是0以上且D+1以下的整数,
所述秘密元b存储部使用所述存储装置,作为所述主秘密密钥的一部分,存储作为所述乘法群G2的元的(D+2)个元b’n,
所述秘密元y存储部使用所述存储装置,作为所述主秘密密钥的一部分,存储作为所述乘法群G2的元的(D+2)×(D+1)个元y’n,l,l是0以上且D以下的整数,
所述用户标识符输入部使用所述处理装置,针对所述多个查询发布装置中的要求生成用户秘密密钥的查询发布装置,作为所述查询发布装置的用户标识符,输入L个整数Ii,
所述随机数ρ选择部使用所述处理装置,从0以上且小于p的整数之中,随机地选择(D+2)个整数ρn,
所述副随机数ρ选择部使用所述处理装置,从0以上且小于p的整数之中,随机地选择(D+2)×(D+2)个整数ρn,m,m是0以上且D+1以下的整数,
所述总积元Y计算部使用所述处理装置,根据所述用户标识符输入部输入的L个整数Ii、以及所述秘密元y存储部存储的(D+2)×(D+1)个元y’n,l中的(D+2)个元y’n,0和(D+2)×L个元y’n,i,针对作为0以上且(D+1)以下的(D+2)个整数n和1以上且L以下的(D+1)个整数i的组的(D+2)×(D+1)个组(n,i),分别计算所述元y’n, i的Ii次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元y’n,0与L个元y’n,i的Ii次幂的总积,从而计算出作为所述乘法群G2的元的(D+2)个元ΠY,n,
所述检索元计算部使用所述处理装置,根据所述秘密元w存储部存储的1个元w’、所述随机数ρ选择部选择出的(D+2)个整数ρn、以及所述总积元Y计算部计算出的(D+2)个元ΠY,n,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元ΠY,n的ρn次幂,计算所述元w’与(D+2)个元ΠY,n的ρn次幂的总积,从而计算出作为所述乘法群G2的元的1个元k0,
所述检索元a计算部使用所述处理装置,根据所述秘密元a存储部存储的(D+2)个元a’n和所述随机数ρ选择部选择出的(D+2)个整数ρn,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元a’n的(-ρn)次幂,从而计算出作为所述乘法群G2的元的(D+2)个元kn,(a),
所述检索元b计算部使用所述处理装置,根据所述秘密元b存储部存储的(D+2)个元b’n和所述随机数ρ选择部选择出的(D+2)个整数ρn,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元b’n的(-ρn)次幂,从而计算出作为所述乘法群G2的元的(D+2)个元kn,(b),
所述干扰元计算部使用所述处理装置,根据所述副随机数ρ选择部选择出的(D+2)×(D+2)个整数ρn,m和所述总积元Y计算部计算出的(D+2)个元ΠY,n,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算所述元ΠY,n的ρn,m次幂,针对0以上且(D+1)以下的(D+2)个整数m,分别计算(D+2)个元ΠY, n的ρn,m次幂的总积,从而计算出作为所述乘法群G2的元的(D+2)个元fm,0,
所述干扰元a计算部使用所述处理装置,根据所述秘密元a存储部存储的(D+2)个元a’n和所述副随机数ρ选择部选择出的(D+2)×(D+2)个整数ρn,m,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算所述元a’n的(-ρn,m)次幂,从而计算出作为所述乘法群G2的元的(D+2)×(D+2)个元fm,n,(a),
所述干扰元b计算部使用所述处理装置,根据所述秘密元b存储部存储的(D+2)个元b’n和所述副随机数ρ选择部选择出的(D+2)×(D+2)个整数ρn,m,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算所述元b’n的(-ρn,m)次幂,从而计算出作为所述乘法群G2的元的(D+2)×(D+2)个元fm,n,(b),
所述委任元计算部使用所述处理装置,根据所述秘密元y存储部存储的(D+2)×(D+1)个元y’n,l中的(D+2)个元y’n,Λ、和所述随机数ρ选择部选择出的(D+2)个整数ρn,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元y’n,Λ的ρn次幂,计算(D+2)个元y’n,Λ的ρn次幂的总积,从而计算出作为所述乘法群G2的元的1个元hΛ,其中,Λ是从大于L且D以下的整数之中选择出的1个整数,
所述副委任元计算部使用所述处理装置,根据所述秘密元y存储部存储的(D+2)×(D+1)个元y’n,l中的(D+2)个元y’n,Λ、和所述副随机数ρ选择部选择出的(D+2)×(D+2)个整数ρn,m,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算所述元y’n,Λ的ρn,m次幂,针对0以上且(D+1)以下的(D+2)个整数m,分别计算(D+2)个元y’n,Λ的ρn,m次幂的总积,从而计算出作为所述乘法群G2的元的(D+2)个元hm,Λ,
所述用户秘密密钥输出部使用所述处理装置,作为所述查询发布装置的用户秘密密钥,输出所述检索元计算部计算出的1个元k0与所述检索元a计算部计算出的(D+2)个元kn,(a)与所述检索元b计算部计算出的(D+2)个元kn,(b)与所述干扰元计算部计算出的(D+2)个元fm,0与所述干扰元a计算部计算出的(D+2)×(D+2)个元fm,n, (a)与所述干扰元b计算部计算出的(D+2)×(D+2)个元fm,n,(b)与所述委任元计算部计算出的1个元hΛ与所述副委任元计算部计算出的(D+2)个元hm,Λ的组。
6.一种查询发布装置,在隐匿检索系统中生成用于检索关键字的查询,所述隐匿检索系统对关键字进行加密,根据来自具有小于D个的整数Ii作为用户标识符的多个查询发布装置中的至少某一个查询发布装置的要求,检索加密了的状态下的关键字,其中,D是2以上的整数,i是1以上且L以下的整数,L是小于D的任意的整数,Ii是0以上且小于p的整数,p是素数,该查询发布装置的特征在于,
具有:存储数据的存储装置、处理数据的处理装置、用户标识符存储部、检索元存储部、检索元a存储部、检索元b存储部、干扰元存储部、干扰元a存储部、干扰元b存储部、委任元存储部、副委任元存储部、检索关键字输入部、随机数π选择部、质询元计算部、质询元a计算部、质询元b计算部、以及查询输出部,
所述用户标识符存储部使用所述存储装置,作为所述查询发布装置的用户标识符,存储L个整数Ii,
所述检索元存储部使用所述存储装置,作为所述查询发布装置的用户秘密密钥的一部分,存储作为位数是p的乘法群G2的元的1个元k0,
所述检索元a存储部使用所述存储装置,作为所述用户秘密密钥的一部分,存储作为所述乘法群G2的元的(D+2)个元kn,(a),n是0以上且D+1以下的整数,
所述检索元b存储部使用所述存储装置,作为所述用户秘密密钥的一部分,存储作为所述乘法群G2的元的(D+2)个元kn,(b),
所述干扰元存储部使用所述存储装置,作为所述用户秘密密钥的一部分,存储作为所述乘法群G2的元的(D+2)个元fm,0,m是0以上且D+1以下的整数,
所述干扰元a存储部使用所述存储装置,作为所述用户秘密密钥的一部分,存储作为所述乘法群G2的元的(D+2)×(D+2)个元fm, n,(a),
所述干扰元b存储部使用所述存储装置,作为所述用户秘密密钥的一部分,存储作为所述乘法群G2的元的(D+2)×(D+2)个元fm, n,(b),
所述委任元存储部使用所述存储装置,作为所述用户秘密密钥的一部分,存储作为所述乘法群G2的元的1个元hL+1,
所述副委任元存储部使用所述存储装置,作为所述用户秘密密钥的一部分,存储作为所述乘法群G2的元的(D+2)个元hm,L+1,
所述检索关键字输入部使用所述处理装置,作为检索的关键字,输入0以上且小于p的1个整数W,
所述随机数π选择部使用所述处理装置,从0以上且小于p的整数之中,随机地选择(D+2)个整数πm,
所述质询元计算部使用所述处理装置,根据所述检索元存储部存储的1个元k0、所述干扰元存储部存储的(D+2)个元fm,0、所述委任元存储部存储的1个元hΛ、所述副委任元存储部存储的(D+2)个元hm,Λ、所述检索关键字输入部输入的1个整数W、以及所述随机数π选择部选择出的(D+2)个整数πm,针对0以上且(D+1)以下的(D+2)个整数m,分别计算所述元hm,Λ的πm次幂,计算所述元hΛ与(D+2)个元hm,Λ的πm次幂的总积ΠH,针对0以上且(D+1)以下的(D+2)个整数m,分别计算所述元fm,0的πm次幂,计算所述总积ΠH的W次幂,计算所述元k0与(D+2)个元fm,0的πm次幂与总积ΠH的W次幂的总积,从而计算出作为所述乘法群G2的元的1个元k’0,
所述质询元a计算部使用所述处理装置,根据所述检索元a存储部存储的(D+2)个元kn,(a)、所述干扰元a存储部存储的(D+2)×(D+2)个元fm,n,(a)、以及所述随机数π选择部选择出的(D+2)个整数πm,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算所述元fm,n,(a)的πm次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元kn,(a)与(D+2)个元fm, n,(a)的πm次幂的总积,从而计算出作为所述乘法群G2的元的(D+2)个元k’n,(a),
所述质询元b计算部使用所述处理装置,根据所述检索元b存储部存储的(D+2)个元kn,(b)、所述干扰元b存储部存储的(D+2)×(D+2)个元fm,n,(b)、以及所述随机数π选择部选择出的(D+2)个整数πm,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算所述元fm,n,(b)的πm次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元kn,(b)与(D+2)个元fm, n,(b)的πm次幂的总积,从而计算出作为所述乘法群G2的元的(D+2)个元k’n,(b),
所述查询输出部使用所述处理装置,输出所述用户标识符存储部存储的L个整数Ii与所述质询元计算部计算出的1个元k’0与所述质询元a计算部计算出的(D+2)个元k’n,(a)与所述质询元b计算部计算出的(D+2)个元k’n,(b)的组,作为用于将所述整数W作为关键字而进行检索的查询。
7.一种检索装置,在隐匿检索系统中检索关键字,所述隐匿检索系统对关键字进行加密,根据来自具有小于D个的整数Ii作为用户标识符的多个查询发布装置中的至少某一个查询发布装置的要求,检索加密了的状态下的关键字,其中,D是2以上的整数,i是1以上且L以下的整数,L是小于D的任意的整数,Ii是0以上且小于p的整数,p是素数,该检索装置的特征在于,
具有:存储数据的存储装置、处理数据的处理装置、密文存储部、查询输入部、配对元计算部、配对元A计算部、配对元B计算部、比较元计算部、以及比较部,
所述密文存储部使用所述存储装置,作为嵌入有关键字的密文,存储作为位数是p的乘法群G3的元的1个元R与作为所述乘法群G3的元的1个元E与作为位数是p的乘法群G1的元的1个元c0与作为所述乘法群G1的元的(D+2)个元cn,(a)与作为所述乘法群G1的元的(D+2)个元cn,(b)与作为所述乘法群G1的元的(D+2)×(L’-L”)个元cn,j’,(a)与作为所述乘法群G1的元的(D+2)×(L’-L”)个元cn,j’,(b)的组,其中,L’是1以上且小于D的任意的整数,L”是0以上且L’以下的任意的整数,j’是从1以上且L’以下的整数之中任意选择出的(L’-L”)个整数,
所述查询输入部使用所述处理装置,作为检索关键字的查询,输入L个整数Ii与作为位数是p的乘法群G2的元的1个元k’0与作为所述乘法群G2的元的(D+2)个元k’n,(a)与作为所述乘法群G2的元的(D+2)个元k’n,(b)的组,
所述配对元计算部使用所述处理装置,根据所述密文存储部存储的密文中包含的1个元c0和所述查询输入部输入的查询中包含的1个元k’0,通过将所述乘法群G1的元和所述乘法群G2的元的组映射到所述乘法群G3的元的双线性配对e来映射所述元c0和所述元k’0的组,从而计算出作为所述乘法群G3的元的1个元e0,
所述配对元A计算部使用所述处理装置,根据所述密文存储部存储的密文中包含的(D+2)个元cn,(a)和(D+2)×(L’-L”)个元cn, j’,(a)、以及所述查询输入部输入的查询中包含的L个整数Ii和(D+2)个元k’n,(a),针对作为0以上且(D+1)以下的(D+2)个整数n和所述(D+2)×(L’-L”)个元cn,j’,(a)的下标即(L’-L”)个整数j’中的1以上且L以下的LA个整数i’的组的(D+2)×LA个组(n,i’),分别计算元cn,i’,(a)的I-i’次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元cn,(a)和LA个元cn,i’,(a)的I-i’次幂的总积ΠA’,n,针对0以上且(D+1)以下的(D+2)个整数n,分别通过所述双线性配对e来映射所述总积ΠA’,n和所述元k’n,(a)的组,从而计算出作为所述乘法群G3的元的(D+2)个元eA,n,
所述配对元B计算部使用所述处理装置,根据所述密文存储部存储的密文中包含的(D+2)个元cn,(b)和(D+2)×(L’-L”)个元cn, j’,(b)、以及所述查询输入部输入的查询中包含的L个整数Ii和(D+2)个元k’n,(b),针对作为0以上且(D+1)以下的(D+2)个整数n和所述(D+2)×(L’-L”)个元cn,j’,(b)的下标即(L’-L”)个整数j’中的1以上且L以下的LA个整数i’的组的(D+2)×LA个组(n,i’),分别计算元c n,i’,(b)的I-i’次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元cn,(b)和LA个元cn,i’,(b)的I-i’次幂的总积ΠB’,n,针对0以上且(D+1)以下的(D+2)个整数n,分别通过所述双线性配对e来映射所述总积ΠB’,n和所述元k’n,(b)的组,从而计算出作为所述乘法群G3的元的(D+2)个元eB,n,
所述比较元计算部使用所述处理装置,根据所述密文存储部存储的密文中包含的1个元E、所述配对元计算部计算出的1个元e0、所述配对元A计算部计算出的(D+2)个元eA,n、以及所述配对元B计算部计算出的(D+2)个元eB,n,计算所述元E与所述元e0与(D+2)个元eA,n与(D+2)个元eB,n的总积,从而计算出作为所述乘法群G3的元的1个元R’,
所述比较部使用所述处理装置,比较所述密文存储部存储的密文中包含的1个元R和所述比较元计算部计算出的1个元R’,在元R和元R’一致的情况下,判定为在检索中命中。
8.一种计算机程序,其特征在于,通过具有存储数据的存储装置和处理数据的处理装置的计算机执行,所述计算机作为权利要求3所述的公开参数生成装置、权利要求4所述的加密装置、权利要求5所述的用户秘密密钥生成装置、权利要求6所述的查询发布装置、以及权利要求7所述的检索装置中的至少某一个发挥功能。
9.一种隐匿检索方法,具有公开参数生成装置、加密装置、用户秘密密钥生成装置、查询发布装置、以及检索装置的隐匿检索系统对关键字进行加密,根据来自具有小于D个整数Ii作为用户标识符的多个查询发布装置中的至少某一个查询发布装置的要求,检索加密了的状态下的关键字,其中,D是2以上的整数,i是1以上且L以下的整数,L是小于D的任意的整数,Ii是0以上且小于p的整数,p是素数,该隐匿检索方法的特征在于,
所述公开参数生成装置具有:处理数据的处理装置、随机数ω选择部、随机数α选择部、随机数β选择部、随机数θ选择部、公开元Ω计算部、公开元a计算部、公开元b计算部、秘密元w计算部、秘密元a计算部、秘密元b计算部、秘密元y计算部、公开参数输出部、以及主秘密密钥输出部,
所述随机数ω选择部使用所述处理装置,从1以上且小于p的整数之中,随机地选择1个整数ω,
所述随机数α选择部使用所述处理装置,从1以上且小于p的整数之中,随机地选择(D+2)个整数αn,n是0以上且D+1以下的整数,
所述随机数β选择部使用所述处理装置,从1以上且小于p的整数之中,随机地选择(D+2)个整数βn,
所述随机数θ选择部使用所述处理装置,从1以上且小于p的整数之中,随机地选择(D+2)×(D+1)个整数θn,l,l是0以上且D以下的整数,
所述公开元a计算部使用所述处理装置,根据位数是所述素数p的乘法群G1的生成元g1、所述随机数α选择部选择出的(D+2)个整数αn、以及所述随机数θ选择部选择出的(D+2)×(D+1)个整数θn,l,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且D以下的(D+1)个整数l的组的(D+2)×(D+1)个组(n,l),分别计算所述生成元g1的(αn×θn,l)次幂,从而计算出作为所述乘法群G1的元的(D+2)×(D+1)个元an,l,
所述公开元b计算部使用所述处理装置,根据所述乘法群G1的生成元g1、所述随机数β选择部选择出的(D+2)个整数βn、以及所述随机数θ选择部选择出的(D+2)×(D+1)个整数θn,l,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且D以下的(D+1)个整数l的组的(D+2)×(D+1)个组(n,l),分别计算所述生成元g1的(βn×θn,l)次幂,从而计算出作为所述乘法群G1的元的(D+2)×(D+1)个元bn,l,
所述秘密元w计算部使用所述处理装置,根据位数是所述素数p的乘法群G2的生成元g2和所述随机数ω选择部选择出的1个整数ω,计算所述生成元g2的ω次幂,从而计算出作为所述乘法群G2的元的1个元w’,
所述公开元Ω计算部使用所述处理装置,根据通过将所述乘法群G1的元和所述乘法群G2的元的组映射到位数是p的乘法群G3的元的双线性配对e来映射所述乘法群G1的生成元g1和所述乘法群G2的生成元g2的组而得到的所述乘法群G3的元g3、以及所述随机数ω选择部选择出的1个整数ω,计算所述元g3的ω次幂,从而计算出作为所述公开乘法群G3的元的1个元Ω,
所述秘密元a计算部使用所述处理装置,根据所述乘法群G2的生成元g2和所述随机数α选择部选择出的(D+2)个整数αn,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述生成元g2的αn次幂,从而计算出作为所述乘法群G2的元的(D+2)个元a’n,
所述秘密元b计算部根据所述乘法群G2的生成元g2和所述随机数β选择部选择出的(D+2)个整数βn,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述生成元g2的βn次幂,从而计算出作为所述乘法群G2的元的(D+2)个元b’n,
所述秘密元y计算部使用所述处理装置,根据所述乘法群G2的生成元g2、所述随机数α选择部选择出的(D+2)个整数αn、所述随机数β选择部选择出的(D+2)个整数βn、以及所述随机数θ选择部选择出的(D+2)×(D+1)个整数θn,l,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且D以下的(D+2)个整数l的组的(D+2)×(D+1)个组(n,l),分别计算所述生成元g2的(αn×βn×θn, l)次幂,从而计算出作为所述乘法群G2的元的(D+2)×(D+1)个元y’n,l,
所述公开参数输出部使用所述处理装置,作为所述隐匿检索系统中的公开参数,输出所述公开元Ω计算部计算出的1个元Ω、所述公开元a计算部计算出的(D+2)×(D+1)个元an,l、以及所述公开元b计算部计算出的(D+2)×(D+1)个元bn,l,
所述主秘密密钥输出部使用所述处理装置,作为所述隐匿检索系统中的主秘密密钥,输出所述秘密元w计算部计算出的1个元w’、所述秘密元a计算部计算出的(D+2)个元a’n、所述秘密元b计算部计算出的(D+2)个元b’n、以及所述秘密元y计算部计算出的(D+2)×(D+1)个元y’n,l,
所述加密装置具有:存储数据的存储装置、处理数据的处理装置、公开元Ω存储部、公开元a存储部、公开元b存储部、嵌入关键字输入部、权限范围输入部、随机数r选择部、副随机数r选择部、随机数元选择部、验证元计算部、密码元计算部、密码元a计算部、密码元b计算部、密码部分元a计算部、密码部分元b计算部、以及密文输出部,
所述公开元Ω存储部使用所述存储装置,存储所述公开参数生成装置作为公开参数输出的1个元Ω,
所述公开元a存储部使用所述存储装置,存储所述公开参数生成装置作为公开参数输出的(D+2)×(D+1)个元an,l,
所述公开元b存储部使用所述存储装置,存储所述公开参数生成装置作为公开参数输出的(D+2)×(D+1)个元bn,l,
所述嵌入关键字输入部使用所述处理装置,作为加密的关键字,输入0以上且小于p的1个整数W’,
所述权限范围输入部使用所述处理装置,作为指定具有检索关键字的权限的查询发布装置的范围的数据,输入1个整数L’和L”个整数I’j,其中,L’是1以上且小于D的任意的整数,L”是0以上且L’以下的任意的整数,j是从1以上且L’以下的整数之中任意选择出的L”个整数,I’j是0以上且小于p的整数,
所述随机数r选择部使用所述处理装置,从0以上且小于p的整数之中,随机地选择1个整数r,
所述副随机数r选择部使用所述处理装置,从0以上且小于p的整数之中,随机地选择(D+2)个整数rn,
所述随机数元选择部使用所述处理装置,从所述乘法群G3的元之中,随机地选择1个元R,
所述验证元计算部使用所述处理装置,根据所述公开元Ω存储部存储的1个元Ω、所述随机数r选择部选择出的1个整数r、以及所述随机数元选择部选择出的1个元R,计算所述元Ω的(-r)次幂与所述元R之积,从而计算出作为所述乘法群G3的元的1个元E,
所述密码元计算部使用所述处理装置,根据所述乘法群G1的生成元g1和所述随机数r选择部选择出的整数r,计算所述生成元g1的r次幂,从而计算出作为所述乘法群G1的元的1个元c0,
所述密码元a计算部使用所述处理装置,根据所述权限范围输入部输入的1个整数L’和L”个整数I’j、所述公开元b存储部存储的(D+2)×(D+1)个元bn,l中的(D+2)个元bn,0和(D+2)×L”个元bn,l’和(D+2)个元bn,Λ’、所述嵌入关键字输入部输入的1个整数W’、以及所述副随机数r选择部选择出的(D+2)个整数rn,针对作为0以上且(D+1)以下的(D+2)个整数n和所述L”个整数I’j的下标j的组的(D+2)×L”个组(n,j),分别计算所述元bn,j的Ij次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元bn, Λ’的W’次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元bn,0与L”个元bn,j的I’j次幂与元bn,Λ’的W’次幂的总积ΠB,n,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所计算出的总积ΠB,n的rn次幂,从而计算出作为所述乘法群G1的元的(D+2)个元cn,(a),其中,Λ’是从大于L’且D以下整数之中选择出的1个整数,
所述密码元b计算部使用所述处理装置,根据所述权限范围输入部输入的1个整数L’和L”个整数I’j、所述公开元a存储部存储的(D+2)×(D+1)个元an,l中的(D+2)个元an,0和(D+2)×L”个元an,j’和(D+2)个元an,Λ’、所述嵌入关键字输入部输入的1个整数W’、所述随机数r选择部选择出的1个整数r、以及所述副随机数r选择部选择出的(D+2)个整数rn,针对作为0以上且(D+1)以下的(D+2)个整数n和所述L”个整数I’j的下标j的组的(D+2)×L”个组(n,j),分别计算所述元an,j的Ij次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元an,Λ’的W’次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元an,0与L”个元an,j的I’j次幂与元an,Λ’的W’次幂的总积ΠA,n,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所计算出的总积ΠA,n的(r-rn)次幂,从而计算出作为所述乘法群G1的元的(D+2)个元cn,(a),
所述密码部分元a计算部使用所述处理装置,根据所述权限范围输入部输入的1个整数L’和L”个整数I’j的下标j、所述公开元b存储部存储的(D+2)×(D+1)个元b n,l中的(D+2)×(L’-L”)个元bn,j’、以及所述副随机数r选择部选择出的(D+2)个整数rn,针对作为0以上且(D+1)以下的(D+2)个整数n和1以上且L’以下的整数中的除了所述L”个下标j以外的(L’-L”)个整数j’的组的(D+2)×(L’-L”)个组(n,j’),分别计算所述元bn,j’的rn次幂,从而计算出作为所述乘法群G1的元的(D+2)×(L’-L”)个元cn,j’, (a),其中,j’是1以上且L’以下的整数中的除了所述L”个下标j以外的(L’-L”)个整数,
所述密码部分元b计算部使用所述处理装置,根据所述权限范围输入部输入的1个整数L’和L”个整数I’j的下标j、所述公开元a存储部存储的(D+2)×(D+1)个元an,l中的(D+2)×(L’-L”)个元an,j’、所述随机数r选择部选择出的1个整数r、以及所述副随机数r选择部选择出的(D+2)个整数rn,针对作为0以上且(D+1)以下的(D+2)个整数n和1以上且小于L’的整数中的除了所述L”个下标j以外的(L’-L”)个整数j’的组的(D+2)×(L’-L”)个组(n,j’),分别计算所述元bn,j’的(r-rn)次幂,从而计算出作为所述乘法群G1的元的(D+2)×(L’-L”)个元cn,j’,(b),
所述密文输出部使用所述处理装置,作为将所述整数W’嵌入为关键字的密文,输出所述随机数元选择部选择出的1个元R、所述验证元计算部计算出的1个元E、所述密码元计算部计算出的1个元c0、所述密码元a计算部计算出的(D+2)个元cn,(a)、所述密码元b计算部计算出的(D+2)个元cn,(b)、所述密码部分元a计算部计算出的(D+2)×(L’-L”)个元cn,j’,(a)、以及所述密码部分元b计算部计算出的(D+2)×(L’-L”)个元cn,j’,(b),
所述用户秘密密钥生成装置具有:存储数据的存储装置、处理数据的处理装置、秘密元w存储部、秘密元a存储部、秘密元b存储部、秘密元y存储部、用户标识符输入部、随机数ρ选择部、副随机数ρ选择部、总积元Y计算部、检索元计算部、检索元a计算部、检索元b计算部、干扰元计算部、干扰元a计算部、干扰元b计算部、委任元计算部、副委任元计算部、以及用户秘密密钥输出部,
所述秘密元w存储部使用所述存储装置,存储所述公开参数生成装置作为主秘密密钥输出的1个元w’,
所述秘密元a存储部使用所述存储装置,存储所述公开参数生成装置作为主秘密密钥输出的(D+2)个元a’n,
所述秘密元b存储部使用所述存储装置,存储所述公开参数生成装置作为主秘密密钥输出的(D+2)个元b’n,
所述秘密元y存储部使用所述存储装置,存储所述公开参数生成装置作为主秘密密钥输出的(D+2)×(D+1)个元y’n,l,
所述用户标识符输入部使用所述处理装置,针对所述多个查询发布装置中的要求生成用户秘密密钥的查询发布装置,作为所述查询发布装置的用户标识符,输入L个整数Ii,
所述随机数ρ选择部使用所述处理装置,从0以上且小于p的整数之中,随机地选择(D+2)个整数ρn,
所述副随机数ρ选择部使用所述处理装置,从0以上且小于p的整数之中,随机地选择(D+2)×(D+2)个整数ρn,m,m是0以上且D+1以下的整数,
所述总积元Y计算部使用所述处理装置,根据所述用户标识符输入部输入的L个整数Ii、以及所述秘密元y存储部存储的(D+2)×(D+1)个元y’n,l中的(D+2)个元y’n,0和(D+2)×L个元y’n,i,针对作为0以上且(D+1)以下的(D+2)个整数n和1以上且L以下的(D+1)个整数i的组的(D+2)×(D+1)个组(n,i),分别计算所述元y’n, i的Ii次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元y’n,0和L个元y’n,i的Ii次幂的总积,从而计算出作为所述乘法群G2的元的(D+2)个元ΠY,n,
所述检索元计算部使用所述处理装置,根据所述秘密元w存储部存储的1个元w’、所述随机数ρ选择部选择出的(D+2)个整数ρn、以及所述总积元Y计算部计算出的(D+2)个元ΠY,n,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元ΠY,n的ρn次幂,计算所述元w’和(D+2)个元ΠY,n的ρn次幂的总积,从而计算出作为所述乘法群G2的元的1个元k0,
所述检索元a计算部使用所述处理装置,根据所述秘密元a存储部存储的(D+2)个元a’n和所述随机数ρ选择部选择出的(D+2)个整数ρn,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元a’n的(-ρn)次幂,从而计算出作为所述乘法群G2的元的(D+2)个元kn,(a),
所述检索元b计算部使用所述处理装置,根据所述秘密元b存储部存储的(D+2)个元b’n和所述随机数ρ选择部选择出的(D+2)个整数ρn,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元b’n的(-ρn)次幂,从而计算出作为所述乘法群G2的元的(D+2)个元kn,(b),
所述干扰元计算部使用所述处理装置,根据所述副随机数ρ选择部选择出的(D+2)×(D+2)个整数ρn,m和所述总积元Y计算部计算出的(D+2)个元ΠY,n,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算所述元ΠY,n的ρn,m次幂,针对0以上且(D+1)以下的(D+2)个整数m,分别计算(D+2)个元ΠY, n的ρn,m次幂的总积,从而计算出作为所述乘法群G2的元的(D+2)个元fm,0,
所述干扰元a计算部使用所述处理装置,根据所述秘密元a存储部存储的(D+2)个元a’n和所述副随机数ρ选择部选择出的(D+2)×(D+2)个整数ρn,m,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算所述元a’n的(-ρn,m)次幂,从而计算出作为所述乘法群G2的元的(D+2)×(D+2)个元fm,n,(a),
所述干扰元b计算部使用所述处理装置,根据所述秘密元b存储部存储的(D+2)个元b’n和所述副随机数ρ选择部选择出的(D+2)×(D+2)个整数ρn,m,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算所述元b’n的(-ρn,m)次幂,从而计算出作为所述乘法群G2的元的(D+2)×(D+2)个元fm,n,(b),
所述委任元计算部使用所述处理装置,根据所述秘密元y存储部存储的(D+2)×(D+1)个元y’n,l中的(D+2)个元y’n,Λ、和所述随机数ρ选择部选择出的(D+2)个整数ρn,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元y’n,Λ的ρn次幂,计算(D+2)个元y’n,j的ρn次幂的总积,从而计算出作为所述乘法群G2的元的1个元hΛ,其中,Λ是从大于L且D以下的整数之中选择出的1个整数,
所述副委任元计算部使用所述处理装置,根据所述秘密元y存储部存储的(D+2)×(D+1)个元y’n,l中的(D+2)个元y’n,Λ、和所述副随机数ρ选择部选择出的(D+2)×(D+2)个整数ρn,m,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算所述元y’n,Λ的ρn,m次幂,针对0以上且(D+1)以下的(D+2)个整数m,分别计算(D+2)个元y’n,Λ的ρn,m次幂的总积,从而计算出作为所述乘法群G2的元的(D+2)个元hm,Λ,
所述用户秘密密钥输出部使用所述处理装置,作为所述查询发布装置的用户秘密密钥,输出所述检索元计算部计算出的1个元k0与所述检索元a计算部计算出的(D+2)个元kn,(a)与所述检索元b计算部计算出的(D+2)个元kn,(b)与所述干扰元计算部计算出的(D+2)个元fm,0与所述干扰元a计算部计算出的(D+2)×(D+2)个元fm,n, (a)与所述干扰元b计算部计算出的(D+2)×(D+2)个元fm,n,(b)与所述委任元计算部计算出的1个元hΛ与所述副委任元计算部计算出的(D+2)个元hm,Λ的组,
所述查询发布装置具有:存储数据的存储装置、处理数据的处理装置、用户标识符存储部、检索元存储部、检索元a存储部、检索元b存储部、干扰元存储部、干扰元a存储部、干扰元b存储部、委任元存储部、副委任元存储部、检索关键字输入部、随机数π选择部、质询元计算部、质询元a计算部、质询元b计算部、以及查询输出部,
所述用户标识符存储部使用所述存储装置,作为所述查询发布装置的用户标识符,存储L个整数Ii,
所述检索元存储部使用所述存储装置,存储所述用户秘密密钥生成装置作为所述查询发布装置的用户秘密密钥输出的1个元k0,
所述检索元a存储部使用所述存储装置,存储所述用户秘密密钥生成装置作为所述查询发布装置的用户秘密密钥输出的(D+2)个元kn,(a),n是0以上且D+1以下的整数,
所述检索元b存储部使用所述存储装置,存储所述用户秘密密钥生成装置作为所述查询发布装置的用户秘密密钥输出的(D+2)个元kn,(b),
所述干扰元存储部使用所述存储装置,存储所述用户秘密密钥生成装置作为所述查询发布装置的用户秘密密钥输出的(D+2)个元fm, 0,m是0以上且D+1以下的整数,
所述干扰元a存储部使用所述存储装置,存储所述用户秘密密钥生成装置作为所述查询发布装置的用户秘密密钥输出的(D+2)×(D+2)个元fm,n,(a),
所述干扰元b存储部使用所述存储装置,存储所述用户秘密密钥生成装置作为所述查询发布装置的用户秘密密钥输出的(D+2)×(D+2)个元fm,n,(b),
所述委任元存储部使用所述存储装置,存储所述用户秘密密钥生成装置作为所述查询发布装置的用户秘密密钥输出的1个元hΛ,
所述副委任元存储部使用所述存储装置,存储所述用户秘密密钥生成装置作为所述查询发布装置的用户秘密密钥输出的(D+2)个元hm,Λ,
所述检索关键字输入部使用所述处理装置,作为检索的关键字,输入0以上且小于p的1个整数W,
所述随机数π选择部使用所述处理装置,从0以上且小于p的整数之中,随机地选择(D+2)个整数πm,
所述质询元计算部使用所述处理装置,根据所述检索元存储部存储的1个元k0、所述干扰元存储部存储的(D+2)个元fm,0、所述委任元存储部存储的1个元hΛ、所述副委任元存储部存储的(D+2)个元hm,Λ、所述检索关键字输入部输入的1个整数W、以及所述随机数π选择部选择出的(D+2)个整数πm,针对0以上且(D+1)以下的(D+2)个整数m,分别计算所述元hm,Λ的πm次幂,计算所述元hΛ和(D+2)个元hm,Λ的πm次幂的总积ΠH,针对0以上且(D+1)以下的(D+2)个整数m,分别计算所述元fm,0的πm次幂,计算所述总积ΠH的W次幂,计算所述元k0与(D+2)个元fm,0的πm次幂与总积ΠH的W次幂的总积,从而计算出作为所述乘法群G2的元的1个元k’0,
所述质询元a计算部使用所述处理装置,根据所述检索元a存储部存储的(D+2)个元kn,(a)、所述干扰元a存储部存储的(D+2)×(D+2)个元fm,n,(a)、以及所述随机数π选择部选择出的(D+2)个整数πm,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算所述元fm,n,(a)的πm次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元kn,(a)和(D+2)个元fm, n,(a)的πm次幂的总积,从而计算出作为所述乘法群G2的元的(D+2)个元k’n,(a),
所述质询元b计算部使用所述处理装置,根据所述检索元b存储部存储的(D+2)个元kn,(b)、所述干扰元b存储部存储的(D+2)×(D+2)个元fm,n,(b)、以及所述随机数π选择部选择出的(D+2)个整数πm,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算所述元fm,n,(b)的πm次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元kn,(b)和(D+2)个元fm, n,(b)的πm次幂的总积,从而计算出作为所述乘法群G2的元的(D+2)个元k’n,(b),
所述查询输出部使用所述处理装置,输出所述用户标识符存储部存储的L个整数Ii与所述质询元计算部计算出的1个元k’0与所述质询元a计算部计算出的(D+2)个元k’n,(a)与所述质询元b计算部计算出的(D+2)个元k’n,(b)的组,作为用于将所述整数W作为关键字而进行检索的查询,
所述检索装置具有:存储数据的存储装置、处理数据的处理装置、密文存储部、查询输入部、配对元计算部、配对元A计算部、配对元B计算部、比较元计算部、以及比较部,
所述密文存储部使用所述存储装置,作为嵌入有关键字的密文,存储所述加密装置输出的密文中包含的1个元R与1个元E与1个元c0与(D+2)个元cn,(a)与(D+2)个元cn,(b)与(D+2)×(L’-L”)个元cn,j’,(a)与(D+2)×(L’-L”)个元cn,j’,(b)的组,
所述查询输入部使用所述处理装置,作为检索关键字的查询,输入所述查询发布装置输出的L个整数Ii与1个元k’0与(D+2)个元k’n,(a)与(D+2)个元k’n,(b)的组,
所述配对元计算部使用所述处理装置,根据所述密文存储部存储的密文中包含的1个元c0和所述查询输入部输入的查询中包含的1个元k’0,通过所述双线性配对e来映射所述元c0和所述元k’0的组,从而计算出作为所述乘法群G3的元的1个元e0,
所述配对元A计算部使用所述处理装置,根据所述密文存储部存储的密文中包含的(D+2)个元cn,(a)和(D+2)×(L’-L”)个元cn, j’,(a)、以及所述查询输入部输入的查询中包含的L个整数Ii和(D+2)个元k’n,(a),针对作为0以上且(D+1)以下的(D+2)个整数n和所述(D+2)×(L’-L”)个元cn,j’,(a)的下标即(L’-L”)个整数j’中的1以上且L以下的LA个整数i’的组的(D+2)×LA个组(n,i’),分别计算元cn,i’,(a)的I-i’次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元cn,(a)和LA个元cn,i’,(a)的I-i’次幂的总积ΠA’,n,针对0以上且(D+1)以下的(D+2)个整数n,分别通过所述双线性配对e来映射所述总积ΠA’,n和所述元k’n,(a)的组,从而计算出作为所述乘法群G3的元的(D+2)个元eA,n,
所述配对元B计算部使用所述处理装置,根据所述密文存储部存储的密文中包含的(D+2)个元cn,(b)和(D+2)×(L’-L”)个元cn,j’,(b)、以及所述查询输入部输入的查询中包含的L个整数Ii和(D+2)个元k’n,(b),针对作为0以上且(D+1)以下的(D+2)个整数n和所述(D+2)×(L’-L”)个元cn,j’,(b)的下标即(L’-L”)个整数j’中的1以上且L以下的LA个整数i’的组的(D+2)×LA个组(n,i’),分别计算元cn,i’,(b)的I-i’次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元cn,(b)和LA个元cn,i’,(b)的I-i’次幂的总积ΠB’,n,针对0以上且(D+1)以下的(D+2)个整数n,分别通过所述双线性配对e来映射所述总积ΠB’,n和所述元k’n,(b)的组,从而计算出作为所述乘法群G3的元的(D+2)个元eB,n,
所述比较元计算部使用所述处理装置,根据所述密文存储部存储的密文中包含的1个元E、所述配对元计算部计算出的1个元e0、所述配对元A计算部计算出的(D+2)个元eA,n、以及所述配对元B计算部计算出的(D+2)个元eB,n,计算所述元E与所述元e0与(D+2)个元eA,n与(D+2)个元eB,n的总积,从而计算出作为所述乘法群G3的元的1个元R’,
所述比较部使用所述处理装置,比较所述密文存储部存储的密文中包含的1个元R和所述比较元计算部计算出的1个元R’,在元R和元R’一致的情况下,判定为在检索中命中。
10.一种公开参数生成方法,公开参数生成装置生成在隐匿检索系统中使用的公开参数和主秘密密钥,所述隐匿检索系统对关键字进行加密,根据来自具有小于D个的整数Ii作为用户标识符的多个查询发布装置中的至少某一个查询发布装置的要求,检索加密了的状态下的关键字,其中,D是2以上的整数,i是1以上且L以下的整数,L是小于D的任意的整数,Ii是0以上且小于p的整数,p是素数,该公开参数生成方法的特征在于,
所述公开参数生成装置具有:处理数据的处理装置、随机数ω选择部、随机数α选择部、随机数β选择部、随机数θ选择部、公开元Ω计算部、公开元a计算部、公开元b计算部、秘密元w计算部、秘密元a计算部、秘密元b计算部、秘密元y计算部、公开参数输出部、以及主秘密密钥输出部,
所述随机数ω选择部使用所述处理装置,从1以上且小于p的整数之中,随机地选择1个整数ω,
所述随机数α选择部使用所述处理装置,从1以上且小于p的整数之中,随机地选择(D+2)个整数αn,n是0以上且D+1以下的整数,
所述随机数β选择部使用所述处理装置,从1以上且小于p的整数之中,随机地选择(D+2)个整数βn,
所述随机数θ选择部使用所述处理装置,从1以上且小于p的整数之中,随机地选择(D+2)×(D+1)个整数θn,l,l是0以上且D以下的整数,
所述公开元a计算部使用所述处理装置,根据位数是所述素数p的乘法群G1的生成元g1、所述随机数α选择部选择出的(D+2)个整数αn、以及所述随机数θ选择部选择出的(D+2)×(D+1)个整数θn,l,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且D以下的(D+1)个整数l的组的(D+2)×(D+1)个组(n,l),分别计算所述生成元g1的(αn×θn,l)次幂,从而计算出作为所述乘法群G1的元的(D+2)×(D+1)个元an,l,
所述公开元b计算部使用所述处理装置,根据所述乘法群G1的生成元g1、所述随机数β选择部选择出的(D+2)个整数βn、以及所述随机数θ选择部选择出的(D+2)×(D+1)个整数θn,l,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且D以下的(D+1)个整数l的组的(D+2)×(D+1)个组(n,l),分别计算所述生成元g1的(βn×θn,l)次幂,从而计算出作为所述乘法群G1的元的(D+2)×(D+1)个元bn,l,
所述秘密元w计算部使用所述处理装置,根据位数是所述素数p的乘法群G2的生成元g2和所述随机数ω选择部选择出的1个整数ω,计算所述生成元g2的ω次幂,从而计算出作为所述乘法群G2的元的1个元w’,
所述公开元Ω计算部使用所述处理装置,根据通过将所述乘法群G1的元和所述乘法群G2的元的组映射到位数是p的乘法群G3的元的双线性配对e来映射所述乘法群G1的生成元g1和所述乘法群G2的生成元g2的组而得到的所述乘法群G3的元g3、以及所述随机数ω选择部选择出的1个整数ω,计算所述元g3的ω次幂,从而计算出作为所述公开乘法群G3的元的1个元Ω,
所述秘密元a计算部使用所述处理装置,根据所述乘法群G2的生成元g2和所述随机数α选择部选择出的(D+2)个整数αn,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述生成元g2的αn次幂,从而计算出作为所述乘法群G2的元的(D+2)个元a’n,
所述秘密元b计算部根据所述乘法群G2的生成元g2和所述随机数β选择部选择出的(D+2)个整数βn,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述生成元g2的βn次幂,从而计算出作为所述乘法群G2的元的(D+2)个元b’n,
所述秘密元y计算部使用所述处理装置,根据所述乘法群G2的生成元g2、所述随机数α选择部选择出的(D+2)个整数αn、所述随机数β选择部选择出的(D+2)个整数βn、以及所述随机数θ选择部选择出的(D+2)×(D+1)个整数θn,l,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且D以下的(D+2)个整数l的组的(D+2)×(D+1)个组(n,l),分别计算所述生成元g2的(αn×βn×θn, l)次幂,从而计算出作为所述乘法群G2的元的(D+2)×(D+1)个元y’n,l,
所述公开参数输出部使用所述处理装置,作为所述隐匿检索系统中的公开参数,输出所述公开元Ω计算部计算出的1个元Ω、所述公开元a计算部计算出的(D+2)×(D+1)个元an,l、以及所述公开元b计算部计算出的(D+2)×(D+1)个元bn,l,
所述主秘密密钥输出部使用所述处理装置,作为所述隐匿检索系统中的主秘密密钥,输出所述秘密元w计算部计算出的1个元w’、所述秘密元a计算部计算出的(D+2)个元a’n、所述秘密元b计算部计算出的(D+2)个元b’n、以及所述秘密元y计算部计算出的(D+2)×(D+1)个元y’n,l。
11.一种加密方法,在隐匿检索系统中,加密装置对关键字进行加密,所述隐匿检索系统对关键字进行加密,根据来自具有小于D个的整数Ii作为用户标识符的多个查询发布装置中的至少某一个查询发布装置的要求,检索加密了的状态下的关键字,其中,D是2以上的整数,i是1以上且L以下的整数,L是小于D的任意的整数,Ii是0以上且小于p的整数,p是素数,该加密方法的特征在于,
所述加密装置具有:存储数据的存储装置、处理数据的处理装置、公开元Ω存储部、公开元a存储部、公开元b存储部、嵌入关键字输入部、权限范围输入部、随机数r选择部、副随机数r选择部、随机数元选择部、验证元计算部、密码元计算部、密码元a计算部、密码元b计算部、密码部分元a计算部、密码部分元b计算部、以及密文输出部,
所述公开元Ω存储部使用所述存储装置,存储作为位数是p的乘法群G3的元的1个元Ω,
所述公开元a存储部使用所述存储装置,存储作为位数是p的乘法群G1的元的(D+2)×(D+1)个元an,l,n是0以上且D+1以下的整数,l是0以上且D以下的整数,
所述公开元b存储部使用所述存储装置,存储作为所述乘法群G1的元的(D+2)×(D+1)个元bn,l,
所述嵌入关键字输入部使用所述处理装置,作为加密的关键字,输入0以上且小于p的1个整数W’,
所述权限范围输入部使用所述处理装置,作为指定具有检索关键字的权限的查询发布装置的范围的数据,输入1个整数L’和L”个整数I’j,其中,L’是1以上且小于D的任意的整数,L”是0以上且L’以下的任意的整数,j是从1以上且L’以下的整数之中任意选择出的L”个整数,I’j是0以上且小于p的整数,
所述随机数r选择部使用所述处理装置,从0以上且小于p的整数之中,随机地选择1个整数r,
所述副随机数r选择部使用所述处理装置,从0以上且小于p的整数之中,随机地选择(D+2)个整数rn,
所述随机数元选择部使用所述处理装置,从所述乘法群G3的元之中,随机地选择1个元R,
所述验证元计算部使用所述处理装置,根据所述公开元Ω存储部存储的1个元Ω、所述随机数r选择部选择出的1个整数r、以及所述随机数元选择部选择出的1个元R,计算所述元Ω的(-r)次幂与所述元R之积,从而计算出作为所述乘法群G3的元的1个元E,
所述密码元计算部使用所述处理装置,根据所述乘法群G1的生成元g1和所述随机数r选择部选择出的整数r,计算所述生成元g1的r次幂,从而计算出作为所述乘法群G1的元的1个元c0,
所述密码元a计算部使用所述处理装置,根据所述权限范围输入部输入的1个整数L’和L”个整数I’j、所述公开元b存储部存储的(D+2)×(D+1)个元bn,l中的(D+2)个元bn,0和(D+2)×L”个元bn,l’和(D+2)个元bn,Λ’、所述嵌入关键字输入部输入的1个整数W’、以及所述副随机数r选择部选择出的(D+2)个整数rn,针对作为0以上且(D+1)以下的(D+2)个整数n和所述L”个整数I’j的下标j的组的(D+2)×L”个组(n,j),分别计算所述元bn,j的Ij次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元bn, Λ’的W’次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元bn,0与L”个元bn,j的I’j次幂与元bn,Λ’的W’次幂的总积ΠB,n,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所计算出的总积ΠB,n的rn次幂,从而计算出作为所述乘法群G1的元的(D+2)个元cn,(a),其中,Λ’是从大于L’且D以下整数之中选择出的1个整数,
所述密码元b计算部使用所述处理装置,根据所述权限范围输入部输入的1个整数L’和L”个整数I’j、所述公开元a存储部存储的(D+2)×(D+1)个元an,l中的(D+2)个元an,0和(D+2)×L”个元an,j’和(D+2)个元an,Λ’、所述嵌入关键字输入部输入的1个整数W’、所述随机数r选择部选择出的1个整数r、以及所述副随机数r选择部选择出的(D+2)个整数rn,针对作为0以上且(D+1)以下的(D+2)个整数n和所述L”个整数I’j的下标j的组的(D+2)×L”个组(n,j),分别计算所述元an,j的Ij次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元an,Λ’的W’次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元an,0与L”个元an,j的I’j次幂与元an,Λ’的W’次幂的总积ΠA,n,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所计算出的总积ΠA,n的(r-rn)次幂,从而计算出作为所述乘法群G1的元的(D+2)个元cn,(a),
所述密码部分元a计算部使用所述处理装置,根据所述权限范围输入部输入的1个整数L’和L”个整数I’j的下标j、所述公开元b存储部存储的(D+2)×(D+1)个元bn,l中的(D+2)×(L’-L”)个元bn,j’、以及所述副随机数r选择部选择出的(D+2)个整数rn,针对作为0以上且(D+1)以下的(D+2)个整数n和1以上且L’以下的整数中的除了所述L”个下标j以外的(L’-L”)个整数j’的组的(D+2)×(L’-L”)个组(n,j’),分别计算所述元bn,j’的rn次幂,从而计算出作为所述乘法群G1的元的(D+2)×(L’-L”)个元cn,j’, (a),其中,j’是1以上且L’以下的整数中的除了所述L”个下标j以外的(L’-L”)个整数,
所述密码部分元b计算部使用所述处理装置,根据所述权限范围输入部输入的1个整数L’和L”个整数I’j的下标j、所述公开元a存储部存储的(D+2)×(D+1)个元a n,l中的(D+2)×(L’-L”)个元an,j’、所述随机数r选择部选择出的1个整数r、以及所述副随机数r选择部选择出的(D+2)个整数rn,针对作为0以上且(D+1)以下的(D+2)个整数n和1以上且小于L’的整数中的除了所述L”个下标j以外的(L’-L”)个整数j’的组的(D+2)×(L’-L”)个组(n,j’),分别计算所述元bn,j’的(r-rn)次幂,从而计算出作为所述乘法群G1的元的(D+2)×(L’-L”)个元cn,j’,(b),
所述密文输出部使用所述处理装置,作为将所述整数W’嵌入为关键字的密文,输出所述随机数元选择部选择出的1个元R、所述验证元计算部计算出的1个元E、所述密码元计算部计算出的1个元c0、所述密码元a计算部计算出的(D+2)个元cn,(a)、所述密码元b计算部计算出的(D+2)个元cn,(b)、所述密码部分元a计算部计算出的(D+2)×(L’-L”)个元cn,j’,(a)、以及所述密码部分元b计算部计算出的(D+2)×(L’-L”)个元cn,j’,(b)。
12.一种用户秘密密钥生成方法,在隐匿检索系统中,用户秘密密钥生成装置生成查询发布装置使用的用户秘密密钥,所述隐匿检索系统对关键字进行加密,根据来自具有小于D个的整数Ii作为用户标识符的多个查询发布装置中的至少某一个查询发布装置的要求,检索加密了的状态下的关键字,其中,D是2以上的整数,i是1以上且L以下的整数,L是小于D的任意的整数,Ii是0以上且小于p的整数,p是素数,该用户秘密密钥生成方法的特征在于,
所述用户秘密密钥生成装置具有:存储数据的存储装置、处理数据的处理装置、秘密元w存储部、秘密元a存储部、秘密元b存储部、秘密元y存储部、用户标识符输入部、随机数ρ选择部、副随机数ρ选择部、总积元Y计算部、检索元计算部、检索元a计算部、检索元b计算部、干扰元计算部、干扰元a计算部、干扰元b计算部、委任元计算部、副委任元计算部、以及用户秘密密钥输出部,
所述秘密元w存储部使用所述存储装置,作为所述隐匿检索系统中的主秘密密钥的一部分,存储作为位数是p的乘法群G2的元的1个元w’,
所述秘密元a存储部使用所述存储装置,作为所述主秘密密钥的一部分,存储作为所述乘法群G2的元的(D+2)个元a’n,n是0以上且D+1以下的整数,
所述秘密元b存储部使用所述存储装置,作为所述主秘密密钥的一部分,存储作为所述乘法群G2的元的(D+2)个元b’n,
所述秘密元y存储部使用所述存储装置,作为所述主秘密密钥的一部分,存储作为所述乘法群G2的元的(D+2)×(D+1)个元y’n,l,l是0以上且D以下的整数,
所述用户标识符输入部使用所述处理装置,针对所述多个查询发布装置中的要求生成用户秘密密钥的查询发布装置,作为所述查询发布装置的用户标识符,输入L个整数Ii,
所述随机数ρ选择部使用所述处理装置,从0以上且小于p的整数之中,随机地选择(D+2)个整数ρn,
所述副随机数ρ选择部使用所述处理装置,从0以上且小于p的整数之中,随机地选择(D+2)×(D+2)个整数ρn,m,m是0以上且D+1以下的整数,
所述总积元Y计算部使用所述处理装置,根据所述用户标识符输入部输入的L个整数Ii、以及所述秘密元y存储部存储的(D+2)×(D+1)个元y’n,l中的(D+2)个元y’n,0和(D+2)×L个元y’n,i,针对作为0以上且(D+1)以下的(D+2)个整数n和1以上且L以下的(D+1)个整数i的组的(D+2)×(D+1)个组(n,i),分别计算所述元y’n, i的Ii次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元y’n,0和L个元y’n,i的Ii次幂的总积,从而计算出作为所述乘法群G2的元的(D+2)个元ΠY,n,
所述检索元计算部使用所述处理装置,根据所述秘密元w存储部存储的1个元w’、所述随机数ρ选择部选择出的(D+2)个整数ρn、以及所述总积元Y计算部计算出的(D+2)个元ΠY,n,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元ΠY,n的ρn次幂,计算所述元w’和(D+2)个元ΠY,n的ρn次幂的总积,从而计算出作为所述乘法群G2的元的1个元k0,
所述检索元a计算部使用所述处理装置,根据所述秘密元a存储部存储的(D+2)个元a’n和所述随机数ρ选择部选择出的(D+2)个整数ρn,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元a’n的(-ρn)次幂,从而计算出作为所述乘法群G2的元的(D+2)个元kn,(a),
所述检索元b计算部使用所述处理装置,根据所述秘密元b存储部存储的(D+2)个元b’n和所述随机数ρ选择部选择出的(D+2)个整数ρn,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元b’n的(-ρn)次幂,从而计算出作为所述乘法群G2的元的(D+2)个元kn,(b),
所述干扰元计算部使用所述处理装置,根据所述副随机数ρ选择部选择出的(D+2)×(D+2)个整数ρn,m和所述总积元Y计算部计算出的(D+2)个元ΠY,n,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算所述元ΠY,n的ρn,m次幂,针对0以上且(D+1)以下的(D+2)个整数m,分别计算(D+2)个元ΠY, n的ρn,m次幂的总积,从而计算出作为所述乘法群G2的元的(D+2)个元fm,0,
所述干扰元a计算部使用所述处理装置,根据所述秘密元a存储部存储的(D+2)个元a’n和所述副随机数ρ选择部选择出的(D+2)×(D+2)个整数ρn,m,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算所述元a’n的(-ρn,m)次幂,从而计算出作为所述乘法群G2的元的(D+2)×(D+2)个元fm,n,(a),
所述干扰元b计算部使用所述处理装置,根据所述秘密元b存储部存储的(D+2)个元b’n和所述副随机数ρ选择部选择出的(D+2)×(D+2)个整数ρn,m,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算所述元b’n的(-ρn,m)次幂,从而计算出作为所述乘法群G2的元的(D+2)×(D+2)个元fm,n,(b),
所述委任元计算部使用所述处理装置,根据所述秘密元y存储部存储的(D+2)×(D+1)个元y’n,l中的(D+2)个元y’n,Λ、和所述随机数ρ选择部选择出的(D+2)个整数ρn,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元y’n,Λ的ρn次幂,计算(D+2)个元y’n,Λ的ρn次幂的总积,从而计算出作为所述乘法群G2的元的1个元hΛ,其中,Λ是从大于L且D以下的整数之中选择出的1个整数,
所述副委任元计算部使用所述处理装置,根据所述秘密元y存储部存储的(D+2)×(D+1)个元y’n,l中的(D+2)个元y’n,Λ、和所述副随机数ρ选择部选择出的(D+2)×(D+2)个整数ρn,m,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算所述元y’n,Λ的ρn,m次幂,针对0以上且(D+1)以下的(D+2)个整数m,分别计算(D+2)个元y’n,Λ的ρn,m次幂的总积,从而计算出作为所述乘法群G2的元的(D+2)个元hm,Λ,
所述用户秘密密钥输出部使用所述处理装置,作为所述查询发布装置的用户秘密密钥,输出所述检索元计算部计算出的1个元k0与所述检索元a计算部计算出的(D+2)个元kn,(a)与所述检索元b计算部计算出的(D+2)个元kn,(b)与所述干扰元计算部计算出的(D+2)个元fm,0与所述干扰元a计算部计算出的(D+2)×(D+2)个元fm,n, (a)与所述干扰元b计算部计算出的(D+2)×(D+2)个元fm,n,(b)与所述委任元计算部计算出的1个元hΛ与所述副委任元计算部计算出的(D+2)个元hm,Λ的组。
13.一种查询发布方法,在隐匿检索系统中,查询发布装置生成用于检索关键字的查询,所述隐匿检索系统对关键字进行加密,根据来自具有小于D个的整数Ii作为用户标识符的多个查询发布装置中的至少某一个查询发布装置的要求,检索加密了的状态下的关键字,其中,D是2以上的整数,i是1以上且L以下的整数,L是小于D的任意的整数,Ii是0以上且小于p的整数,p是素数,该查询发布方法的特征在于,
所述查询发布装置具有:存储数据的存储装置、处理数据的处理装置、用户标识符存储部、检索元存储部、检索元a存储部、检索元b存储部、干扰元存储部、干扰元a存储部、干扰元b存储部、委任元存储部、副委任元存储部、检索关键字输入部、随机数π选择部、质询元计算部、质询元a计算部、质询元b计算部、以及查询输出部,
所述用户标识符存储部使用所述存储装置,作为所述查询发布装置的用户标识符,存储L个整数Ii,
所述检索元存储部使用所述存储装置,作为所述查询发布装置的用户秘密密钥的一部分,存储作为位数是p的乘法群G2的元的1个元k0,
所述检索元a存储部使用所述存储装置,作为所述用户秘密密钥的一部分,存储作为所述乘法群G2的元的(D+2)个元kn,(a),n是0以上且D+1以下的整数,
所述检索元b存储部使用所述存储装置,作为所述用户秘密密钥的一部分,存储作为所述乘法群G2的元的(D+2)个元kn,(b),
所述干扰元存储部使用所述存储装置,作为所述用户秘密密钥的一部分,存储作为所述乘法群G2的元的(D+2)个元fm,0,m是0以上且D+1以下的整数,
所述干扰元a存储部使用所述存储装置,作为所述用户秘密密钥的一部分,存储作为所述乘法群G2的元的(D+2)×(D+2)个元fm, n,(a),
所述干扰元b存储部使用所述存储装置,作为所述用户秘密密钥的一部分,存储作为所述乘法群G2的元的(D+2)×(D+2)个元fm, n,(b),
所述委任元存储部使用所述存储装置,作为所述用户秘密密钥的一部分,存储作为所述乘法群G2的元的1个元hL+1,
所述副委任元存储部使用所述存储装置,作为所述用户秘密密钥的一部分,存储作为所述乘法群G2的元的(D+2)个元hm,L+1,
所述检索关键字输入部使用所述处理装置,作为检索的关键字,输入0以上且小于p的1个整数W,
所述随机数π选择部使用所述处理装置,从0以上且小于p的整数之中,随机地选择(D+2)个整数πm,
所述质询元计算部使用所述处理装置,根据所述检索元存储部存储的1个元k0、所述干扰元存储部存储的(D+2)个元fm,0、所述委任元存储部存储的1个元hΛ、所述副委任元存储部存储的(D+2)个元hm,Λ、所述检索关键字输入部输入的1个整数W、以及所述随机数π选择部选择出的(D+2)个整数πm,针对0以上且(D+1)以下的(D+2)个整数m,分别计算所述元hm,Λ的πm次幂,计算所述元hΛ和(D+2)个元hm,Λ的πm次幂的总积ΠH,针对0以上且(D+1)以下的(D+2)个整数m,分别计算所述元fm,0的πm次幂,计算所述总积ΠH的W次幂,计算所述元k0与(D+2)个元fm,0的πm次幂与总积ΠH的W次幂的总积,从而计算出作为所述乘法群G2的元的1个元k’0,
所述质询元a计算部使用所述处理装置,根据所述检索元a存储部存储的(D+2)个元kn,(a)、所述干扰元a存储部存储的(D+2)×(D+2)个元fm,n,(a)、以及所述随机数π选择部选择出的(D+2)个整数πm,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算所述元fm,n,(a)的πm次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元kn,(a)和(D+2)个元fm, n,(a)的πm次幂的总积,从而计算出作为所述乘法群G2的元的(D+2)个元k’n,(a),
所述质询元b计算部使用所述处理装置,根据所述检索元b存储部存储的(D+2)个元kn,(b)、所述干扰元b存储部存储的(D+2)×(D+2)个元fm,n,(b)、以及所述随机数π选择部选择出的(D+2)个整数πm,针对作为0以上且(D+1)以下的(D+2)个整数n和0以上且(D+1)以下的(D+2)个整数m的组的(D+2)×(D+2)个组(n,m),分别计算所述元fm,n,(b)的πm次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元kn,(b)和(D+2)个元fm, n,(b)的πm次幂的总积,从而计算出作为所述乘法群G2的元的(D+2)个元k’n,(b),
所述查询输出部使用所述处理装置,输出所述用户标识符存储部存储的L个整数Ii与所述质询元计算部计算出的1个元k’0与所述质询元a计算部计算出的(D+2)个元k’n,(a)与所述质询元b计算部计算出的(D+2)个元k’n,(b)的组,作为用于将所述整数W作为关键字而进行检索的查询。
14.一种检索方法,在隐匿检索系统中,检索装置检索关键字,所述隐匿检索系统对关键字进行加密,根据来自具有小于D个的整数Ii作为用户标识符的多个查询发布装置中的至少某一个查询发布装置的要求,检索加密了的状态下的关键字,其中,D是2以上的整数,i是1以上且L以下的整数,L是小于D的任意的整数,Ii是0以上且小于p的整数,p是素数,该检索方法的特征在于,
所述检索装置具有:存储数据的存储装置、处理数据的处理装置、密文存储部、查询输入部、配对元计算部、配对元A计算部、配对元B计算部、比较元计算部、以及比较部,
所述密文存储部使用所述存储装置,作为嵌入有关键字的密文,存储作为位数是p的乘法群G3的元的1个元R与作为所述乘法群G3的元的1个元E与作为位数是p的乘法群G1的元的1个元c0与作为所述乘法群G1的元的(D+2)个元cn,(a)与作为所述乘法群G1的元的(D+2)个元cn,(b)与作为所述乘法群G1的元的(D+2)×(L’-L”)个元cn,j’,(a)与作为所述乘法群G1的元的(D+2)×(L’-L”)个元cn,j’,(b)的组,其中,L’是1以上且小于D的任意的整数,L”是0以上且L’以下的任意的整数,j’是从1以上且L’以下的整数之中任意选择出的(L’-L”)个整数,
所述查询输入部使用所述处理装置,作为检索关键字的查询,输入L个整数Ii与作为位数是p的乘法群G2的元的1个元k’0与作为所述乘法群G2的元的(D+2)个元k’n,(a)与作为所述乘法群G2的元的(D+2)个元k’n,(b)的组,
所述配对元计算部使用所述处理装置,根据所述密文存储部存储的密文中包含的1个元c0和所述查询输入部输入的查询中包含的1个元k’0,通过将所述乘法群G1的元和所述乘法群G2的元的组映射到所述乘法群G3的元的双线性配对e来映射所述元c0和所述元k’0的组,从而计算出作为所述乘法群G3的元的1个元e0,
所述配对元A计算部使用所述处理装置,根据所述密文存储部存储的密文中包含的(D+2)个元cn,(a)和(D+2)×(L’-L”)个元cn, j’,(a)、以及所述查询输入部输入的查询中包含的L个整数Ii和(D+2)个元k’n,(a),针对作为0以上且(D+1)以下的(D+2)个整数n和所述(D+2)×(L’-L”)个元cn,j’,(a)的下标即(L’-L”)个整数j’中的1以上且L以下的LA个整数i’的组的(D+2)×LA个组(n,i’),分别计算元cn,i’,(a)的I-i’次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元cn,(a)和LA个元cn,i’,(a)的I-i’次幂的总积ΠA’,n,针对0以上且(D+1)以下的(D+2)个整数n,分别通过所述双线性配对e来映射所述总积ΠA’,n和所述元k’n,(a)的组,从而计算出作为所述乘法群G3的元的(D+2)个元eA,n,
所述配对元B计算部使用所述处理装置,根据所述密文存储部存储的密文中包含的(D+2)个元cn,(b)和(D+2)×(L’-L”)个元cn, j’,(b)、以及所述查询输入部输入的查询中包含的L个整数Ii和(D+2)个元k’n,(b),针对作为0以上且(D+1)以下的(D+2)个整数n和所述(D+2)×(L’-L”)个元cn,j’,(b)的下标即(L’-L”)个整数j’中的1以上且L以下的LA个整数i’的组的(D+2)×LA个组(n,i’),分别计算元cn,i’,(b)的I-i’次幂,针对0以上且(D+1)以下的(D+2)个整数n,分别计算所述元cn,(b)和LA个元cn,i’,(b)的I-i’次幂的总积ΠB’,n,针对0以上且(D+1)以下的(D+2)个整数n,分别通过所述双线性配对e来映射所述总积ΠB’,n和所述元k’n,(b)的组,从而计算出作为所述乘法群G3的元的(D+2)个元eB,n,
所述比较元计算部使用所述处理装置,根据所述密文存储部存储的密文中包含的1个元E、所述配对元计算部计算出的1个元e0、所述配对元A计算部计算出的(D+2)个元eA,n、以及所述配对元B计算部计算出的(D+2)个元eB,n,计算所述元E与所述元e0与(D+2)个元eA,n与(D+2)个元eB,n的总积,从而计算出作为所述乘法群G3的元的1个元R’,
所述比较部使用所述处理装置,比较所述密文存储部存储的密文中包含的1个元R和所述比较元计算部计算出的1个元R’,在元R和元R’一致的情况下,判定为在检索中命中。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2010/050249 WO2011086668A1 (ja) | 2010-01-13 | 2010-01-13 | 秘匿検索システム及び公開パラメータ生成装置及び暗号化装置及びユーザ秘密鍵生成装置及びクエリ発行装置及び検索装置及びコンピュータプログラム及び秘匿検索方法及び公開パラメータ生成方法及び暗号化方法及びユーザ秘密鍵生成方法及びクエリ発行方法及び検索方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102713996A true CN102713996A (zh) | 2012-10-03 |
Family
ID=44303972
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010800613636A Pending CN102713996A (zh) | 2010-01-13 | 2010-01-13 | 隐匿检索系统以及公开参数生成装置以及加密装置以及用户秘密密钥生成装置以及查询发布装置以及检索装置以及计算机程序以及隐匿检索方法以及公开参数生成方法以及加密方法以及用户秘密密钥生成方法以及查询发布方法以及检索方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20120324240A1 (zh) |
EP (1) | EP2525339A4 (zh) |
JP (1) | JP5269209B2 (zh) |
CN (1) | CN102713996A (zh) |
WO (1) | WO2011086668A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109639425A (zh) * | 2018-11-07 | 2019-04-16 | 华中科技大学 | 一种边计算环境下轻量级的可搜索公钥加密方法 |
CN110199339A (zh) * | 2017-01-20 | 2019-09-03 | 日本电信电话株式会社 | 秘密计算系统、秘密计算装置、秘密计算方法、程序 |
CN110226190A (zh) * | 2017-01-27 | 2019-09-10 | 三菱电机株式会社 | 检索装置、监视装置、监视方法和检索程序 |
CN110612563A (zh) * | 2017-05-18 | 2019-12-24 | 三菱电机株式会社 | 检索装置、标签生成装置、查询生成装置、隐匿检索系统、检索程序、标签生成程序以及查询生成程序 |
CN112074889A (zh) * | 2018-05-15 | 2020-12-11 | 三菱电机株式会社 | 隐匿检索装置和隐匿检索方法 |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5420085B2 (ja) | 2011-01-13 | 2014-02-19 | 三菱電機株式会社 | データ処理装置及びデータ保管装置 |
US20120272051A1 (en) * | 2011-04-22 | 2012-10-25 | International Business Machines Corporation | Security key distribution in a cluster |
JP5799635B2 (ja) * | 2011-07-25 | 2015-10-28 | 日本電気株式会社 | 暗号データ検索システム、装置、方法及びプログラム |
JP5827518B2 (ja) | 2011-08-17 | 2015-12-02 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 情報管理システム、方法及びプログラム |
US9237013B2 (en) | 2011-12-20 | 2016-01-12 | Mitsubishi Electric Corporation | Encrypted data management device, encrypted data management method, and encrypted data management program |
WO2013111284A1 (ja) | 2012-01-25 | 2013-08-01 | 三菱電機株式会社 | データ検索装置、データ検索方法、データ検索プログラム、データ登録装置、データ登録方法、データ登録プログラムおよび情報処理装置 |
JP5833146B2 (ja) * | 2012-02-09 | 2015-12-16 | 株式会社日立製作所 | 機密データ漏えい防止装置および方法 |
EP2899648A1 (en) | 2012-09-20 | 2015-07-29 | Kabushiki Kaisha Toshiba | Data processing device, data management system, data processing method, and program |
JP5963936B2 (ja) | 2013-02-25 | 2016-08-03 | 三菱電機株式会社 | サーバ装置、秘匿検索プログラム,記録媒体及び秘匿検索システム |
EP3012817A4 (en) * | 2013-06-18 | 2017-02-22 | Hitachi, Ltd. | Storage count verification system |
JP6144992B2 (ja) * | 2013-08-08 | 2017-06-07 | 株式会社日立製作所 | 検索可能暗号処理システム及び方法 |
CN106294371B (zh) * | 2015-05-15 | 2019-08-16 | 阿里巴巴集团控股有限公司 | 字符串值域切分方法及装置 |
US10176207B1 (en) | 2015-06-09 | 2019-01-08 | Skyhigh Networks, Llc | Wildcard search in encrypted text |
US10404669B2 (en) | 2015-06-09 | 2019-09-03 | Skyhigh Networks, Llc | Wildcard search in encrypted text |
US9894042B2 (en) * | 2015-07-24 | 2018-02-13 | Skyhigh Networks, Inc. | Searchable encryption enabling encrypted search based on document type |
US10733162B2 (en) * | 2015-07-30 | 2020-08-04 | Workday, Inc. | Indexing structured data with security information |
JP6600203B2 (ja) * | 2015-09-15 | 2019-10-30 | キヤノン株式会社 | 情報処理装置、情報処理方法、コンテンツ管理システム、およびプログラム |
CN105787576A (zh) * | 2016-03-03 | 2016-07-20 | 陈健强 | 一种基于智能眼镜开门锁的酒店预约实现方法及系统 |
CN107689947B (zh) * | 2016-08-05 | 2021-03-30 | 华为国际有限公司 | 一种数据处理的方法和装置 |
EP3379766B1 (en) * | 2017-03-20 | 2019-06-26 | Huawei Technologies Co., Ltd. | A wireless communication device for communication in a wireless communication network |
CN108200063B (zh) * | 2017-12-29 | 2020-01-03 | 华中科技大学 | 一种可搜索公钥加密方法、采用该方法的系统和服务器 |
US11216433B2 (en) * | 2019-12-12 | 2022-01-04 | Google Llc | Encrypted search with no zero-day leakage |
CN112257096B (zh) * | 2020-11-23 | 2022-09-27 | 中电万维信息技术有限责任公司 | 一种用于云存储密文加密数据的搜索方法 |
US11621963B2 (en) * | 2021-05-27 | 2023-04-04 | Western Digital Technologies, Inc. | Fleet health management corrective action communication exchange |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4405829A (en) | 1977-12-14 | 1983-09-20 | Massachusetts Institute Of Technology | Cryptographic communications system and method |
US7113594B2 (en) * | 2001-08-13 | 2006-09-26 | The Board Of Trustees Of The Leland Stanford University | Systems and methods for identity-based encryption and related cryptographic techniques |
US7620625B2 (en) * | 2004-05-20 | 2009-11-17 | Ntt Docomo, Inc. | Method and apparatus for communication efficient private information retrieval and oblivious transfer |
JP4722620B2 (ja) * | 2005-08-19 | 2011-07-13 | Kddi株式会社 | 暗号化文書検索方法および暗号化文書検索システム |
JP5245835B2 (ja) * | 2007-02-13 | 2013-07-24 | 日本電気株式会社 | 鍵生成装置、鍵導出装置、暗号化装置、復号化装置、方法、及び、プログラム |
-
2010
- 2010-01-13 CN CN2010800613636A patent/CN102713996A/zh active Pending
- 2010-01-13 US US13/522,040 patent/US20120324240A1/en not_active Abandoned
- 2010-01-13 JP JP2011549807A patent/JP5269209B2/ja not_active Expired - Fee Related
- 2010-01-13 WO PCT/JP2010/050249 patent/WO2011086668A1/ja active Application Filing
- 2010-01-13 EP EP10843027.3A patent/EP2525339A4/en not_active Withdrawn
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110199339A (zh) * | 2017-01-20 | 2019-09-03 | 日本电信电话株式会社 | 秘密计算系统、秘密计算装置、秘密计算方法、程序 |
CN110199339B (zh) * | 2017-01-20 | 2022-07-12 | 日本电信电话株式会社 | 秘密计算系统、秘密计算装置、秘密计算方法、记录介质 |
CN110226190A (zh) * | 2017-01-27 | 2019-09-10 | 三菱电机株式会社 | 检索装置、监视装置、监视方法和检索程序 |
CN110612563A (zh) * | 2017-05-18 | 2019-12-24 | 三菱电机株式会社 | 检索装置、标签生成装置、查询生成装置、隐匿检索系统、检索程序、标签生成程序以及查询生成程序 |
CN112074889A (zh) * | 2018-05-15 | 2020-12-11 | 三菱电机株式会社 | 隐匿检索装置和隐匿检索方法 |
CN112074889B (zh) * | 2018-05-15 | 2023-07-04 | 三菱电机株式会社 | 隐匿检索装置和隐匿检索方法 |
CN109639425A (zh) * | 2018-11-07 | 2019-04-16 | 华中科技大学 | 一种边计算环境下轻量级的可搜索公钥加密方法 |
CN109639425B (zh) * | 2018-11-07 | 2020-05-19 | 华中科技大学 | 一种边计算环境下轻量级的可搜索公钥加密方法和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP2525339A1 (en) | 2012-11-21 |
JPWO2011086668A1 (ja) | 2013-05-16 |
JP5269209B2 (ja) | 2013-08-21 |
US20120324240A1 (en) | 2012-12-20 |
WO2011086668A1 (ja) | 2011-07-21 |
EP2525339A4 (en) | 2013-09-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102713996A (zh) | 隐匿检索系统以及公开参数生成装置以及加密装置以及用户秘密密钥生成装置以及查询发布装置以及检索装置以及计算机程序以及隐匿检索方法以及公开参数生成方法以及加密方法以及用户秘密密钥生成方法以及查询发布方法以及检索方法 | |
Williams et al. | Building castles out of mud: practical access pattern privacy and correctness on untrusted storage | |
JP6208586B2 (ja) | 検索可能暗号処理システムおよび検索可能暗号処理方法 | |
US5737424A (en) | Method and system for secure distribution of protected data using elliptic curve systems | |
Örencik et al. | Efficient and secure ranked multi-keyword search on encrypted cloud data | |
CN104919754B (zh) | 篡改检测装置、篡改检测方法、以及程序 | |
CN110637441A (zh) | 应用于数据重复数据删除的加密密钥生成 | |
Li et al. | Towards privacy-preserving storage and retrieval in multiple clouds | |
CN108111587B (zh) | 一种基于时间释放的云存储搜索方法 | |
Bogos et al. | Cryptanalysis of a homomorphic encryption scheme | |
Yang et al. | Flexible wildcard searchable encryption system | |
JP2019207281A (ja) | 大小判定サーバ、大小判定暗号化システム、及び大小判定方法 | |
WO2022099893A1 (zh) | 数据查询方法、装置、系统以及数据集处理方法 | |
CN116635847A (zh) | 实现弹性确定性加密 | |
Rajan et al. | Dynamic multi-keyword based search algorithm using modified based fully homomorphic encryption and Prim’s algorithm | |
JPWO2017126000A1 (ja) | 暗号化装置、暗号化プログラム及び暗号化方法 | |
JP5972181B2 (ja) | 改ざん検知装置、改ざん検知方法、およびプログラム | |
US11281688B2 (en) | Ranking and de-ranking data strings | |
Rajkumar et al. | Fuzzy-Dedup: A secure deduplication model using cosine based Fuzzy interference system in cloud application | |
Tchernykh et al. | Data reliability and redundancy optimization of a secure multi-cloud storage under uncertainty of errors and falsifications | |
CN115048432A (zh) | 基于布隆过滤器的模糊关键词公共审计方法 | |
CN112328626B (zh) | 面向云环境的支持模糊关键词排序的可搜索加密方法 | |
Saxena et al. | On-demand Integrity Verification Technique for Cloud Data Storage. | |
JP3711821B2 (ja) | 素数生成方法及び装置及び素数生成プログラムを格納した記憶媒体 | |
WO2024154264A1 (ja) | 暗号鍵評価プログラム、暗号鍵評価方法および情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C05 | Deemed withdrawal (patent law before 1993) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20121003 |