登记装置、检索操作装置、数据管理装置、登记程序、检索操作程序和数据管理程序

文档序号:1277232 发布日期:2020-08-25 浏览:30次 >En<

阅读说明:本技术 登记装置、检索操作装置、数据管理装置、登记程序、检索操作程序和数据管理程序 (Registration device, search operation device, data management device, registration program, search operation program, and data management program ) 是由 平野贵人 川合丰 小关义博 于 2018-12-28 设计创作,主要内容包括:登记装置(500)生成数据随机数组R,该数据随机数组R是与利用者的属性所成的层级的层数L相同个数的随机数的组,并且是均匀随机的随机数的组。此外,登记装置受理明文M和属性信息B。登记装置将所述属性信息B的各层j的属性值与各层j的编号的连结值作为输入来执行函数F_2,将所述函数F_2的函数值作为输入来执行函数F_3,计算所述函数F_3的函数值与所述数据随机数组R的第j个随机数的异或即属性元素C_{j,0,0},将所述明文M和所述数据随机数组R的异或作为输入来执行函数F_4,生成包含所述属性元素C_{j,0,0}和所述函数F_4的函数值即密文C_{L+1}在内的加密数据C。然后,登记装置将所述加密数据C登记到数据管理装置(700)。(A registration device (500) generates a random number group R of data which is a group of random numbers of the same number as the number L of layers of a hierarchy formed by attributes of users and which is a uniformly random number group. The registration device receives the plaintext M and the attribute information B. The registration device executes a function F _2 by using as input a linked value of an attribute value of each layer j of the attribute information B and a number of each layer j, executes a function F _3 by using as input a function value of the function F _2, calculates an attribute element C { j, 0, 0} which is an exclusive or of the function value of the function F _3 and a jth random number of the data random array R, executes a function F _4 by using as input an exclusive or of the plaintext M and the data random array R, and generates encrypted data C including the attribute element C _ { j, 0, 0} and a ciphertext C _ { L &#43;1} which is a function value of the function F _ 4. Then, the registration means registers the encrypted data C to the data management means (700).)

登记装置、检索操作装置、数据管理装置、登记程序、检索操作 程序和数据管理程序

技术领域

本发明涉及隐匿检索技术。

背景技术

隐匿检索是在加密的状态下检索数据的技术。

即,隐匿检索是不对加密数据进行解密而进行检索的技术。

近年来,隐匿检索作为用于在云服务中保护机密信息以防止服务器管理者窃听的安全技术而受到关注。即,隐匿检索作为在互联网中管理数据时的安全技术而受到关注。

作为隐匿检索中的处理,对登记者、检索者和数据中心装置各自的处理进行说明。

登记者是登记加密数据的用户,检索者是检索加密数据的用户。

登记者进行的处理的基本流程如下所述。

首先,登记者对数据进行加密,生成加密数据。

接着,登记者对用于检索加密数据的关键字进行加密。将被加密的关键字称作加密标签。不会从加密标签泄露关键字。

接着,登记者将加密标签与加密数据关联起来。加密标签的数量不需要是一个,能够将多个加密标签与加密数据关联起来。

然后,登记者将加密数据和加密标签登记到数据中心装置。

检索者进行的处理的基本流程如下所述。

首先,检索者选出希望检索的关键字。

接着,检索者使用自身的秘密密钥对关键字进行随机化。将被随机化的关键字称作检索查询。很难根据检索查询类推秘密密钥。

接着,检索者向数据中心装置发送检索查询,由此请求数据中心装置进行检索。

然后,检索者从数据中心装置接收与检索查询对应的加密数据。

数据中心装置进行的处理的基本流程如下所述。

在数据中心装置中登记有加密数据和加密标签的多个组。

首先,数据中心装置接收检索查询。

接着,数据中心装置通过特殊运算来选择与检索查询对应的加密标签。在特殊运算中,能够将检索查询的关键字与各加密标签的关键字进行比较,而不用对加密标签进行解密。

然后,数据中心装置发送与选择出的加密标签相关联的加密数据。

在隐匿检索中存在公共密钥方式和公开密钥方式这2种方式。

在公共密钥方式中,利用公共加密密钥技术,登记者和检索者被限定。

在公开密钥方式中,利用公开密钥加密技术,检索者被限定,但是登记者未被限定。

在公共密钥方式中,通常,登记者和检索者相互共享相同的秘密信息。

非专利文献1公开有如下的公共密钥方式:为了降低秘密信息的共享成本和秘密信息泄露时的影响度,登记者和检索者不共享相同的秘密信息。

进而,非专利文献1公开有多用户型共享密钥方式。

在多用户型共享密钥方式中,能够设定被许可检索的用户和不被许可检索的用户。即,在多用户型共享密钥方式中,能够生成在具有相互不同的秘密信息的多个用户利用相同的关键字进行检索的情况下在某个用户的检索中命中但是在其他用户的检索中未命中的加密数据。

现有技术文献

专利文献

专利文献1:日本特许第6038427号公报

专利文献2:国际公开第2011/086687号

非专利文献

非专利文献1:R.A.Popa,N.Zeldovich,“Multi-Key Searchable Encryption”,IACR Cryptology ePrint Archive:Report 2013/508.

非专利文献2:S.Patranabis,D.Mukhopadhyay,“Lightweight Symmetric-KeyHidden Vector Encryption without Pairings”,IACR Cryptology ePrint Archive:Report 2017/796.

非专利文献3:MENEZES,A.J.,VAN OORSCHOT,P.C.and VANSTONE,S.A.,HANDBOOKof APPLIED CRYPTOGRAPHY,CRC Press,1997,p.234,235

发明内容

发明要解决的课题

非专利文献1关注于当进行广泛公知的多用户化时检索查询的尺寸增大,公开有使用代理人再加密技术抑制检索查询的尺寸的方式。

代理人再加密技术是如下技术:将某个用户的加密数据转换成其他用户能够解密的加密数据,而不用对某个用户的加密数据进行解密。

但是,代理人再加密技术利用公开密钥加密技术,因此,在非专利文献1的方式中存在检索速度的课题。

在非专利文献1的方式中,能够进行完全一致检索,但是无法进行部分一致检索。即,能够判定检索时的关键字与登记时的关键字是否完全一致,但是,无法判定检索时的关键字是否作为部分字符串包含在登记时的关键字中。

进而,在非专利文献1的方式中,还无法进行范围检索。即,在登记时的关键字是数值且检索时的关键字是数值的区间的情况下,无法判定登记时的数值是否已进入检索时的数值的区间。

在专利文献1中公开有对应于部分一致的隐匿检索方式。在该方式中,能够在加密的状态下判定检索时的关键字是否作为部分字符串包含在登记时的关键字中。

但是,该方式未对应于多用户,因此,很难将该方式扩展成多用户型公共密钥方式。

非专利文献2不是隐匿检索技术,但是公开有带访问控制功能的加密方式。

通过本方式,能够根据各用户的属性信息,生成某个用户能够解密但是其他用户无法解密的加密数据。

在本方式中,利用公共密钥加密技术。因此,登记者和检索者被限定,但是本方式的效率良好。

但是,很难将本方式扩展成多用户型公共密钥方式。

本发明的目的在于,能够利用多用户型的公共密钥加密方式进行隐匿检索。

用于解决课题的手段

本发明的登记装置具有:随机数生成部,其生成数据随机数组R,该数据随机数组R是与利用者的属性所成的层级的层数L相同个数的随机数的组,并且是均匀随机的随机数的组;受理部,其受理明文M和属性信息B,该属性信息B表示被许可参照所述明文M的利用者的各层的属性值;加密数据生成部,其将所述属性信息B的各层j的属性值与各层j的编号的连结值作为输入来执行函数F_2,将所述函数F_2的函数值作为输入来执行函数F_3,计算所述函数F_3的函数值与所述数据随机数组R的第j个随机数的异或即属性元素C_{j,0,0},将所述明文M和所述数据随机数组R的异或作为输入来执行函数F_4,生成包含所述属性元素C_{j,0,0}和所述函数F_4的函数值即密文C_{L+1}在内的加密数据C;以及登记部,其将所述加密数据C登记到数据管理装置。

发明效果

根据本发明,登记以复用的方式使用函数而生成的加密数据C。由此,能够以多用户型的公共密钥加密方式进行隐匿检索。

附图说明

图1是实施方式1中的隐匿检索系统100的结构图。

图2是实施方式1中的主密钥装置200的结构图。

图3是实施方式1中的登记密钥装置300的结构图。

图4是实施方式1中的用户密钥装置400的结构图。

图5是实施方式1中的生成部420的结构图。

图6是实施方式1中的登记装置500的结构图。

图7是实施方式1中的生成部520的结构图。

图8是实施方式1中的检索操作装置600的结构图。

图9是实施方式1中的生成部620的结构图。

图10是实施方式1中的数据管理装置700的结构图。

图11是实施方式1中的检索部720的结构图。

图12是实施方式1中的主密钥生成(S110)的流程图。

图13是实施方式1中的登记密钥生成(S120)的流程图。

图14是实施方式1中的用户密钥生成(S130)的流程图。

图15是示出实施方式1中的属性信息的一例的图。

图16是实施方式1中的数据登记(S140)的流程图。

图17是示出实施方式1中的登记数据库792的图。

图18是实施方式1中的检索操作(S150)的流程图。

图19是实施方式1中的数据检索(S160)的流程图。

图20是实施方式1中的数据删除(S170)的流程图。

图21是实施方式2中的生成部520的结构图。

图22是实施方式2中的检索部720的结构图。

图23是实施方式2中的数据登记(S240)的流程图。

图24是实施方式2中的数据检索(S260)的流程图。

图25是实施方式3中的生成部520的结构图。

图26是实施方式3中的生成部620的结构图。

图27是实施方式3中的检索部720的结构图。

图28是实施方式3中的数据登记(S340)的流程图。

图29是实施方式3中的检索操作(S350)的流程图。

图30是实施方式3中的数据检索(S360)的流程图。

图31是实施方式中的主密钥装置200的硬件结构图。

图32是实施方式中的登记密钥装置300的硬件结构图。

图33是实施方式中的用户密钥装置400的硬件结构图。

图34是实施方式中的登记装置500的硬件结构图。

图35是实施方式中的检索操作装置600的硬件结构图。

图36是实施方式中的数据管理装置700的硬件结构图。

具体实施方式

在实施方式和附图中,对相同要素和对应要素标注相同标号。被标注相同标号的要素的说明适当省略或简化。图中的箭头主要表示数据流或处理流。

实施方式1

根据图1~图20说明以多用户型的公共密钥加密方式进行隐匿检索的方式。

***结构的说明***

根据图1对隐匿检索系统100的结构进行说明。

隐匿检索系统100具有主密钥装置200、登记密钥装置300、用户密钥装置400、登记装置500、检索操作装置600和数据管理装置700。

隐匿检索系统100的各装置经由网络101相互进行通信。

根据图2对主密钥装置200的结构进行说明。

主密钥装置200是具有处理器201、存储器202、辅助存储装置203、输入输出接口204和通信装置205这样的硬件的计算机。这些硬件经由信号线相互连接。

处理器201是进行运算处理的IC(Integrated Circuit:集成电路),对其他硬件进行控制。例如,处理器901是CPU(Central Processing Unit:中央处理单元)、DSP(DigitalSignal Processor:数字信号处理器)或GPU(Graphics Processing Unit:图形处理单元)。

存储器202是易失性存储装置。存储器202也被称作主存储装置或主存储器。例如,存储器202是RAM(Random Access Memory:随机存取存储器)。存储器202中存储的数据根据需要保存在辅助存储装置203中。

辅助存储装置203是非易失性的存储装置。例如,辅助存储装置203是ROM(ReadOnly Memory:只读存储器)、HDD(Hard Disk Drive:硬盘驱动器)或闪存。辅助存储装置203中存储的数据根据需要载入到存储器202。

输入输出接口204是连接输入装置和输出装置的端口。例如,输入输出接口204是USB端子,输入装置是键盘和鼠标,输出装置是显示器。USB是Universal Serial Bus(通用串行总线)的简称。

通信装置205是接收机和发送机。例如,通信装置205是通信芯片或NIC(NetworkInterface Card:网络接口卡)。

主密钥装置200具有受理部210、生成部220和输出部230这样的要素。这些要素通过软件实现。

在辅助存储装置203中存储有用于使计算机作为受理部210、生成部220、输出部230和存储部291发挥功能的主密钥程序。主密钥程序载入到存储器202,由处理器201执行。

进而,在辅助存储装置203中存储有OS(Operating System:操作系统)。OS的至少一部分载入到存储器202,由处理器201执行。

即,处理器201一边执行OS一边执行主密钥程序。

执行主密钥程序而得到的数据存储在存储器202、辅助存储装置203、处理器201内的寄存器或处理器201内的高速缓冲存储器这样的存储装置中。

辅助存储装置203作为存储部291发挥功能。但是,其他存储装置也可以代替辅助存储装置203或与辅助存储装置203一起作为存储部291发挥功能。

主密钥装置200也可以具有代替处理器201的多个处理器。多个处理器分担处理器201的作用。

主密钥程序能够以计算机能读取的方式记录(存储)在光盘或闪存等非易失性的记录介质中。

根据图3对登记密钥装置300的结构进行说明。

登记密钥装置300是具有受理部310、生成部320和输出部330这样的硬件的计算机。这些硬件经由信号线相互连接。

处理器301是进行运算处理的IC,对其他硬件进行控制。例如,处理器301是CPU、DSP或GPU。

存储器302是易失性存储装置。存储器302也被称作主存储装置或主存储器。例如,存储器302是RAM。存储器302中存储的数据根据需要保存在辅助存储装置303中。

辅助存储装置303是非易失性的存储装置。例如,辅助存储装置303是ROM、HDD或闪存。辅助存储装置303中存储的数据根据需要载入到存储器302。

输入输出接口304是连接输入装置和输出装置的端口。例如,输入输出接口304是USB端子,输入装置是键盘和鼠标,输出装置是显示器。

通信装置305是接收机和发送机。例如,通信装置305是通信芯片或NIC。

登记密钥装置300具有受理部310、生成部320和输出部330这样的要素。这些要素通过软件实现。

在辅助存储装置303中存储有用于使计算机作为受理部310、生成部320、输出部330和存储部391发挥功能的登记密钥程序。登记密钥程序载入到存储器302,由处理器301执行。

进而,在辅助存储装置303中存储有OS。OS的至少一部分载入到存储器302,由处理器301执行。

即,处理器301一边执行OS一边执行登记密钥程序。

执行登记密钥程序而得到的数据存储在存储器302、辅助存储装置303、处理器301内的寄存器或处理器301内的高速缓冲存储器这样的存储装置中。

辅助存储装置303作为存储部391发挥功能。但是,其他存储装置也可以代替辅助存储装置303或与辅助存储装置303一起作为存储部391发挥功能。

登记密钥装置300也可以具有代替处理器301的多个处理器。多个处理器分担处理器301的作用。

登记密钥程序能够以计算机能读取的方式记录(存储)在光盘或闪存等非易失性的记录介质中。

根据图4对用户密钥装置400的结构进行说明。

用户密钥装置400是具有处理器401、存储器402、辅助存储装置403、输入输出接口404和通信装置405这样的硬件的计算机。这些硬件经由信号线相互连接。

处理器401是进行运算处理的IC,对其他硬件进行控制。例如,处理器401是CPU、DSP或GPU。

存储器402是易失性存储装置。存储器402也被称作主存储装置或主存储器。例如,存储器402是RAM。存储器402中存储的数据根据需要保存在辅助存储装置403中。

辅助存储装置403是非易失性的存储装置。例如,辅助存储装置403是ROM、HDD或闪存。辅助存储装置403中存储的数据根据需要载入到存储器402。

输入输出接口404是连接输入装置和输出装置的端口。例如,输入输出接口404是USB端子,输入装置是键盘和鼠标,输出装置是显示器。

通信装置405是接收机和发送机。例如,通信装置405是通信芯片或NIC。

用户密钥装置400具有受理部410、生成部420和输出部430这样的要素。这些要素通过软件实现。

在辅助存储装置403中存储有用于使计算机作为受理部410、生成部420、输出部430和存储部491发挥功能的用户密钥程序。用户密钥程序载入到存储器402,由处理器401执行。

进而,在辅助存储装置403中存储有OS。OS的至少一部分载入到存储器402,由处理器401执行。

即,处理器401一边执行OS一边执行用户密钥程序。

执行用户密钥程序而得到的数据存储在存储器402、辅助存储装置403、处理器401内的寄存器或处理器401内的高速缓冲存储器这样的存储装置中。

辅助存储装置403作为存储部491发挥功能。但是,其他存储装置也可以代替辅助存储装置403或与辅助存储装置403一起作为存储部491发挥功能。

用户密钥装置400也可以具有代替处理器401的多个处理器。多个处理器分担处理器401的作用。

用户密钥程序能够以计算机能读取的方式记录(存储)在光盘或闪存等非易失性的记录介质中。

根据图5对生成部420的结构进行说明。

生成部420具有属性密钥生成部422。

根据图6对登记装置500的结构进行说明。

登记装置500是具有处理器501、存储器502、辅助存储装置503、输入输出接口504和通信装置505这样的硬件的计算机。这些硬件经由信号线相互连接。

处理器501是进行运算处理的IC,对其他硬件进行控制。例如,处理器501是CPU、DSP或GPU。

存储器502是易失性存储装置。存储器502也被称作主存储装置或主存储器。例如,存储器502是RAM。存储器502中存储的数据根据需要保存在辅助存储装置503中。

辅助存储装置503是非易失性的存储装置。例如,辅助存储装置503是ROM、HDD或闪存。辅助存储装置503中存储的数据根据需要载入到存储器502。

输入输出接口504是连接输入装置和输出装置的端口。例如,输入输出接口504是USB端子,输入装置是键盘和鼠标,输出装置是显示器。

通信装置505是接收机和发送机。例如,通信装置505是通信芯片或NIC。

登记装置500具有受理部510、生成部520和登记部530这样的要素。这些要素通过软件实现。

在辅助存储装置503中存储有用于使计算机作为受理部510、生成部520、登记部530和存储部591发挥功能的登记程序。登记程序载入到存储器502,由处理器501执行。

进而,在辅助存储装置503中存储有OS。OS的至少一部分载入到存储器502,由处理器501执行。

即,处理器501一边执行OS一边执行登记程序。

执行登记程序而得到的数据存储在存储器502、辅助存储装置503、处理器501内的寄存器或处理器501内的高速缓冲存储器这样的存储装置中。

辅助存储装置503作为存储部591发挥功能。但是,其他存储装置也可以代替辅助存储装置503或与辅助存储装置503一起作为存储部591发挥功能。

登记装置500也可以具有代替处理器501的多个处理器。多个处理器分担处理器501的作用。

登记程序能够以计算机能读取的方式记录(存储)在光盘或闪存等非易失性的记录介质中。

根据图7对生成部520的结构进行说明。

生成部520具有随机数生成部521、加密数据生成部522、关键字取得部523和加密标签生成部524。

根据图8对检索操作装置600的结构进行说明。

检索操作装置600是具有处理器601、存储器602、辅助存储装置603、输入输出接口604和通信装置605这样的硬件的计算机。这些硬件经由信号线相互连接。

处理器601是进行运算处理的IC,对其他硬件进行控制。例如,处理器601是CPU、DSP或GPU。

存储器602是易失性存储装置。存储器602也被称作主存储装置或主存储器。例如,存储器602是RAM。存储器602中存储的数据根据需要保存在辅助存储装置603中。

辅助存储装置603是非易失性的存储装置。例如,辅助存储装置603是ROM、HDD或闪存。辅助存储装置603中存储的数据根据需要载入到存储器602。

输入输出接口604是连接输入装置和输出装置的端口。例如,输入输出接口604是USB端子,输入装置是键盘和鼠标,输出装置是显示器。

通信装置605是接收机和发送机。例如,通信装置605是通信芯片或NIC。

检索操作装置600具有受理部610、生成部620、请求部630、解密部640和输出部650这样的要素。这些要素通过软件实现。

在辅助存储装置603中存储有用于使计算机作为受理部610、生成部620、请求部630、解密部640、输出部650和存储部691发挥功能的检索操作程序。检索操作程序载入到存储器602,由处理器601执行。

进而,在辅助存储装置603中存储有OS。OS的至少一部分载入到存储器602,由处理器601执行。

即,处理器601一边执行OS一边执行检索操作程序。

执行检索操作程序而得到的数据存储在存储器602、辅助存储装置603、处理器601内的寄存器或处理器601内的高速缓冲存储器这样的存储装置中。

辅助存储装置603作为存储部691发挥功能。但是,其他存储装置也可以代替辅助存储装置603或与辅助存储装置603一起作为存储部691发挥功能。

检索操作装置600也可以具有代替处理器601的多个处理器。多个处理器分担处理器601的作用。

检索操作程序能够以计算机能读取的方式记录(存储)在光盘或闪存等非易失性的记录介质中。

根据图9对生成部620的结构进行说明。

生成部620具有检索查询生成部622。

根据图10对数据管理装置700的结构进行说明。

数据管理装置700是具有处理器701、存储器702、辅助存储装置703、输入输出接口704和通信装置705这样的硬件的计算机。这些硬件经由信号线相互连接。

处理器701是进行运算处理的IC,对其他硬件进行控制。例如,处理器901是CPU、DSP或GPU。

存储器702是易失性存储装置。存储器702也被称作主存储装置或主存储器。例如,存储器702是RAM。存储器702中存储的数据根据需要保存在辅助存储装置703中。

辅助存储装置703是非易失性的存储装置。例如,辅助存储装置703是ROM、HDD或闪存。辅助存储装置703中存储的数据根据需要载入到存储器702。

输入输出接口704是连接输入装置和输出装置的端口。例如,输入输出接口704是USB端子,输入装置是键盘和鼠标,输出装置是显示器。

通信装置705是接收机和发送机。例如,通信装置705是通信芯片或NIC。

数据管理装置700具有受理部710、核对部721和输出部730这样的要素。这些要素通过软件实现。

在辅助存储装置703中存储有用于使计算机作为受理部710、核对部721、输出部730和存储部791发挥功能的数据管理程序。数据管理程序载入到存储器702,由处理器701执行。

进而,在辅助存储装置703中存储有OS。OS的至少一部分载入到存储器702,由处理器701执行。

即,处理器701一边执行OS一边执行数据管理程序。

执行数据管理程序而得到的数据存储在存储器702、辅助存储装置703、处理器701内的寄存器或处理器701内的高速缓冲存储器这样的存储装置中。

辅助存储装置703作为存储部791发挥功能。但是,其他存储装置也可以代替辅助存储装置703或与辅助存储装置703一起作为存储部791发挥功能。

数据管理装置700也可以具有代替处理器701的多个处理器。多个处理器分担处理器701的作用。

数据管理程序能够以计算机能读取的方式记录(存储)在光盘或闪存等非易失性的记录介质中。

***动作的说明***

隐匿检索系统100的动作相当于隐匿检索方法。

作为隐匿检索方法,对隐匿检索系统100的各装置的处理进行说明。

根据图12对主密钥生成(S110)进行说明。

主密钥生成(S110)是由主密钥装置200执行的处理。

在步骤S111中,受理部210受理密钥长度BIT(i)和世代编号i。

具体而言,受理部210经由输入输出接口204受理被输入到主密钥装置200的密钥长度BIT(i)和世代编号i。但是,受理部210也可以从应用程序受理密钥长度BIT(i)和世代编号i。

密钥长度BIT(i)是主密钥MK(i)的比特长度。

世代编号i是主密钥MK(i)的世代编号,不与过去的世代编号重复。

例如,世代编号i是序列号或日期时间。

主密钥MK(i)是世代编号i的主密钥MK。

在步骤S112中,生成部220生成主密钥MK(i)。

具体而言,生成部220生成具有与密钥长度BIT(i)相同长度的随机比特串。生成的比特串是主密钥MK(i)。

例如,在密钥长度BIT(i)为256比特的情况下,生成部220生成256比特的随机比特串。由此,得到256比特的主密钥MK(i)。

在步骤S113中,生成部220将主密钥数据MSK(i)存储在存储部291中。然后,主密钥数据MSK(i)保管在存储部291中。

主密钥数据MSK(i)是主密钥MK(i)和世代编号i的组,被称作世代编号i的主密钥数据MSK。

主密钥数据MSK(i)能够如下表示。

MSK(i)=(i,MK(i))

在步骤S114中,输出部230输出主密钥数据MSK(i)。

例如,输出部230使用通信装置205向登记密钥装置300发送主密钥数据MSK(i)。

根据图13对登记密钥生成(S120)进行说明。

登记密钥生成(S120)是由登记密钥装置300执行的处理。

在步骤S121中,受理部310受理主密钥数据MSK(i)。

例如,受理部310使用通信装置305从主密钥装置200接收主密钥数据MSK(i)。但是,受理部310也可以经由输入输出接口304受理被输入到登记密钥装置300的主密钥数据MSK(i)。

在步骤S122中,生成部320使用主密钥数据MSK(i)中包含的主密钥MK(i)生成数据密钥DK(i)和标签密钥TK(i)。

具体而言,生成部320将主密钥MK(i)作为输入来执行函数F_1,由此生成2个随机数。各随机数是随机比特串。

函数F_1的一例是伪随机函数。伪随机函数是加密学的函数,在决定密钥后,根据输入值而确定性地返回随机数。此外,也可以使用SHA-1这样的加密学的哈希函数或AES这样的公共密钥加密方式的函数作为函数F_1。

一个随机数是数据密钥DK(i)。数据密钥DK(i)能够如下表示。

DK(i)=F_1(MK(i),1)

另一个随机数是标签密钥TK(i)。标签密钥TK(i)能够如下表示。

TK(i)=F_1(MK(i),2)

在步骤S123中,生成部320将登记密钥EK(i)存储在存储部391中。然后,登记密钥EK(i)保管在存储部391中。

登记密钥EK(i)是世代编号i、数据密钥DK(i)和标签密钥TK(i)的组,被称作世代编号i的登记密钥EK。

登记密钥EK(i)能够如下表示。

EK(i)=(i,DK(i),TK(i))

在步骤S124中,输出部330输出登记密钥EK(i)。

例如,输出部330使用通信装置305向用户密钥装置400和登记装置500分别发送登记密钥EK(i)。

根据图14对用户密钥生成(S130)进行说明。

用户密钥生成(S130)是由用户密钥装置400执行的处理。

在步骤S131中,受理部410受理登记密钥EK(i)。

例如,受理部410使用通信装置405从登记密钥装置300接收登记密钥EK(i)。但是,受理部410也可以经由输入输出接口404受理被输入到用户密钥装置400的登记密钥EK(i)。

进而,受理部410将登记密钥EK(i)存储在存储部491中。然后,登记密钥EK(i)保管在存储部491中。

在登记密钥EK(i)已经保管在存储部491中的情况下,不需要步骤S131。

登记密钥EK(i)包含世代编号i、数据密钥DK(i)和标签密钥TK(i)。

在步骤S132中,受理部410受理属性信息A。

具体而言,受理部410经由输入输出接口404受理被输入到用户密钥装置400的属性信息A。但是,受理部410也可以从应用程序受理属性信息A。

属性信息A是检索者的属性信息。此外,属性信息A涉及检索和解密的权限控制。

检索者是进行检索的利用者。即,检索者是检索操作装置600的利用者。

利用者的属性构成层级。

属性信息表示利用者的各层的属性值。即,属性信息A表示检索者的各层的属性值。

根据图15对属性信息的例子进行说明。

利用者的属性构成层级。在图15中,利用者的属性构成4个层级。

第1层的属性(第1属性)表示事业部。

第2层的属性(第2属性)表示部。

第3层的属性(第3属性)表示课。

第4层的属性(第4属性)表示姓名。

第1属性信息是Ne先生的属性信息。Ne先生属于Di事业部的De部的Sc课。

第2属性信息是Nf先生的属性信息。Nf先生属于Di事业部的De部的Sd课。

第3属性信息是Sc课员的属性信息。Sc课员属于Di事业部的De部的Sc课。第4属性是通配符“*”,因此,姓名未被限定。

第4属性信息是De部员的属性信息。De部员属于Di事业部的De部。第3属性和第4属性是通配符“*”,因此,课和姓名未被限定。

在实施方式1中,利用者的属性构成L层,属性信息具有L个属性值。L是2以上的整数。

属性信息A能够如下表示。

A=(A_1,…,A_L)

返回图14,从步骤S133起继续进行说明。

在步骤S133中,属性密钥生成部422使用数据密钥DK(i)和属性信息A生成数据属性密钥数据DAK(i)。数据属性密钥数据DAK(i)是世代编号i的数据属性密钥数据DAK。

数据属性密钥数据DAK(i)具有数据属性密钥DAK_j和标志值Db_j。j是1以上且L以下的整数。

属性密钥生成部422如下计算数据属性密钥DAK_j。

首先,属性密钥生成部422连结属性值A_j和编号j。将得到的比特串表示的值称作连结值(A_j)。

接着,属性密钥生成部422将数据密钥DK(i)和连结值(A_j)作为输入来执行函数F_2。得到的值是数据属性密钥DAK_j。

与函数F_1同样,函数F_2是伪随机函数、哈希函数或公共密钥加密方式的函数。

属性密钥生成部422如下计算标志值Db_j。

属性密钥生成部422判定属性值A_j是否是通配符“*”。

在属性值A_j是通配符“*”的情况下,标志值Db_j为1。

在属性值A_j不是通配符“*”的情况下,标志值Db_j为0。

数据属性密钥数据DAK(i)能够如下表示。

DAK(i)=((Db_1,DAK_1),…,(Db_L,DAK_L))

在A_j=*的情况下,Db_j=1

在A_j≠*的情况下,Db_j=0

DAK_j=F_2(DK(i),A_j||j)

其中,“x||y”意味着数据x和数据y的连结。

进而,属性密钥生成部422使用标签密钥TK(i)和属性信息A生成标签属性密钥数据TAK(i)。标签属性密钥数据TAK(i)是世代编号i的标签属性密钥数据TAK。

标签属性密钥数据TAK(i)具有标签属性密钥TAK_j和标志值Tb_j。

属性密钥生成部422如下计算标签属性密钥TAK_j。

首先,属性密钥生成部422连结属性值A_j和编号j。将得到的比特串表示的值称作连结值(A_j)。

接着,属性密钥生成部422将标签密钥TK(i)和连结值(A_j)作为输入来执行函数F_2。得到的值是标签属性密钥TAK_j。

标志值Tb_j表示属性值A_j是否是通配符“*”。

在属性值A_j是通配符“*”的情况下,标志值Tb_j为1。

在属性值A_j不是通配符“*”的情况下,标志值Tb_j为0。

标签属性密钥数据TAK(i)能够如下表示。

TAK(i)=((Tb_1,TAK_1),…,(Tb_L,TAK_L))

在A_j=*的情况下,Tb_j=1

在A_j≠*的情况下,Tb_j=0

TAK_j=F_2(TK(i),A_j||j)

在步骤S134中,生成部420将用户密钥UK(i)存储在存储部491中。然后,用户密钥UK(i)保管在存储部491中。

用户密钥UK(i)是世代编号i、数据属性密钥数据DAK(i)和标签属性密钥数据TAK(i)的组。

用户密钥UK(i)是针对属性信息A的世代编号i的用户密钥UK。

用户密钥UK(i)能够如下表示。

UK(i)=(i,DAK(i),TAK(i))

在步骤S135中,输出部430输出用户密钥UK(i)。

例如,输出部430使用通信装置405向检索操作装置600发送用户密钥UK(i)。

根据图16对数据登记(S140)进行说明。

数据登记(S140)是由登记装置500执行的处理。

在步骤S141中,受理部510受理登记密钥EK(i)。

例如,受理部510使用通信装置505从登记密钥装置300接收登记密钥EK(i)。但是,受理部510也可以经由输入输出接口504受理被输入到登记装置500的登记密钥EK(i)。

进而,受理部510将登记密钥EK(i)存储在存储部591中。然后,登记密钥EK(i)存储在存储部591中。

在登记密钥EK(i)已经保管在存储部591中的情况下,不需要步骤S141。

登记密钥EK(i)包含世代编号i、数据密钥DK(i)和标签密钥TK(i)。

进而,受理部510将登记密钥EK(i)存储在存储部591中。然后,登记密钥EK(i)保管在存储部591中。

在步骤S142中,受理部510受理明文M和属性信息B。

具体而言,受理部510经由输入输出接口504受理被输入到登记装置500的明文M和属性信息B。但是,受理部510也可以从应用程序受理明文M和属性信息B。

明文M是未被加密的数据。

在明文M中包含文件名File(M)作为元数据。

属性信息B是权限者的属性信息,表示权限者的各层的属性值。此外,与属性信息A同样,属性信息B涉及检索和解密的权限控制。

权限者是具有参照明文M的权限的利用者。即,权限者是检索操作装置600的利用者的一部分。

属性信息B能够如下表示。

B=(B_1,…,B_L)

在步骤S143中,随机数生成部521生成3个数据随机数组(R、s、S)和3个标签随机数组(R’、s’、S’)。

各个数据随机数组(R、s、S)是与属性的层数L相同个数的随机数的组。即,数据随机数组R、数据随机数组s和数据随机数组S分别是L个随机数的组。各个数据随机数组的L个随机数是均匀随机地生成的。

3个数据随机数组(R、s、S)能够如下表示。

R=(R_1,…,R_L)

s=(s_1,…,s_L)

S=(S_1,…,S_L)

各个标签随机数组(R’、s’、S’)是与属性的层数L相同个数的随机数。即,标签随机数组R’、标签随机数组s’和标签随机数组S’分别是L个随机数。各个标签随机数组的L个随机数是均匀随机地生成的。

3个标签随机数组(R’、s’、S’)能够如下表示。

R’=(R’_1,…,R’_L)

s’=(s’_1,…,s’_L)

S’=(S’_1,…,S’_L)

在步骤S144中,加密数据生成部522使用数据密钥DK(i)、明文M、属性信息B和3个数据随机数组(R、s、S)生成加密数据C。

加密数据C具有属性元素C_{j,0,0}、属性元素C_{j,0,1}、通配符元素C_{j,1,0}和通配符元素C_{j,1,1}。

j是1以上且L以下的整数,表示层的编号。

加密数据C还具有密文C_{L+1}。

在加密数据C中包含文件名File(M)作为明文M的元数据。文件名File(M)也可以被加密。

加密数据生成部522如下计算属性元素C_{j,0,0}。

首先,加密数据生成部522连结属性值B_j和编号j。将得到的比特串表示的值称作连结值(B_j)。

接着,加密数据生成部522将数据密钥DK(i)和连结值(B_j)作为输入来执行函数F_2。将得到的值称作函数值(B_j’)。

进而,加密数据生成部522将函数值(B_j’)和随机数s_j作为输入来执行函数F_3。将得到的值称作函数值(B_j”)。

然后,加密数据生成部522计算函数值(B_j”)与随机数R_j的异或。得到的值是属性元素C_{j,0,0}。

与函数F_1和函数F_2同样,函数F_3是伪随机函数、哈希函数或公共密钥加密方式的函数。

加密数据生成部522在属性元素C_{j,0,1}中设定随机数s_j。

加密数据生成部522如下计算通配符元素C_{j,1,0}。

首先,加密数据生成部522连结通配符“*”和编号j。将得到的比特串表示的值称作连结值(*_j)。

接着,加密数据生成部522将数据密钥DK(i)和连结值(*_j)作为输入来执行函数F_2。将得到的值称作函数值(*_j’)。

进而,加密数据生成部522将函数值(*_j’)和随机数S_j作为输入来执行函数F_3。将得到的值称作函数值(*_j”)。

然后,加密数据生成部522计算函数值(*_j”)与随机数R_j的异或。得到的值是通配符元素C_{j,1,0}。

加密数据生成部522在通配符元素C_{j,1,1}中设定随机数S_j。

加密数据生成部522如下计算密文C_{L+1}。

首先,加密数据生成部522计算数据随机数组R的L个随机数的异或。将得到的值称作运算值(R+)。

然后,加密数据生成部522将运算值(R+)和明文M作为输入来执行函数F_4。得到的值是密文C_{L+1}。

函数F_4的一例是AES这样的公共密钥加密方式的函数。

加密数据C能够如下表示。其中,在实施方式1中,“+”表示异或(XOR)。

C=((C_{1,0,0},C_{1,0,1},C_{1,1,0},C_{1,1,1}),…,(C_{L,0,0},C_{L,0,1},C_{L,1,0},C_{L,1,1}),C_{L+1})

C_{j,0,0}=F_3(F_2(DK(i),B_j||j),s_j)+R_j

C_{j,0,1}=s_j

C_{j,1,0}=F_3(F_2(DK(i),*||j),S_j)+R_j

C_{j,1,1}=S_j

C_{L+1}=F_4(R+,M)

R+=R_1+…+R_L

在步骤S145中,关键字取得部523取得与明文M有关的关键字组。关键字组是1个以上的关键字。

具体而言,关键字取得部523通过对明文M进行词素解析或自然语言处理等,从明文M中提取关键字组。

但是,关键字取得部523也可以经由输入输出接口504受理被输入到登记装置500的关键字组。此外,关键字取得部523也可以从应用程序受理关键字组。

将取得的关键字组称作登记关键字组W。

在实施方式1中,设登记关键字组W是N个登记关键字。

N是2以上的整数。

登记关键字组W能够如下表示。

W=(W_1,…,W_N)

在步骤S146中,加密标签生成部524使用标签密钥TK(i)、属性信息B、标签随机数组S’和登记关键字组W生成加密标签组CT_W。

加密标签组CT_W是与多个登记关键字W_n对应的多个加密标签CT_{W_n}。

n是1以上且N以下的整数,表示登记关键字的编号。

加密标签CT_{W_n}具有属性元素CT_{j,0,0,W_n}、属性元素CT_{j,0,1,W_n}、通配符元素CT_{j,1,0,W_n}和通配符元素CT_{j,1,1,W_n}。

进而,加密标签CT_{W_n}具有判定元素CT_{L+1,W_n}。

加密标签生成部524如下计算属性元素CT_{j,0,0,W_n}。

首先,加密标签生成部524连结属性值B_j和编号j。将得到的比特串表示的值称作连结值(B_j)。

接着,加密标签生成部524将标签密钥TK(i)和连结值(B_j)作为输入来执行函数F_2。将得到的值称作函数值(B_j^)。

进而,加密标签生成部524将函数值(B_j^)和登记关键字W_n作为输入来执行函数F_5。将得到的值称作函数值(B_jW_n^^)。

进而,加密标签生成部524将函数值(B_jW_n^^)和随机数s’_j作为输入来执行函数F_6。将得到的值称作函数值(B_jW_n^^^)。

然后,加密标签生成部524计算函数值(B_jW_n^^^)与随机数R’_j的异或。得到的值是属性元素CT_{j,0,0,W_n}。

与函数F_1、函数F_2和函数F_3同样,函数F_5和函数F_6分别是伪随机函数、哈希函数或公共密钥加密方式的函数。

加密标签生成部524在属性元素CT_{j,0,1,W_n}中设定随机数s’_j。

加密标签生成部524如下计算通配符元素CT_{j,1,0,W_n}。

首先,加密标签生成部524连结通配符“*”和编号j。将得到的比特串表示的值称作连结值(*_j)。

接着,加密标签生成部524将标签密钥TK(i)和连结值(*_j)作为输入来执行函数F_2。将得到的值称作函数值(*_j^)。

进而,加密标签生成部524将函数值(*_j^)和登记关键字W_n作为输入来执行函数F_5。将得到的值称作函数值(*_jW_n^^)。

进而,加密标签生成部524将函数值(*_jW_n^^)和随机数S’_j作为输入来执行函数F_6。将得到的值称作函数值(*_jW_n^^^)。

然后,加密标签生成部524计算函数值(*_jW_n^^^)与随机数R’_j的异或。得到的值是通配符元素CT_{j,1,0,W_n}。

加密标签生成部524将通配符元素CT_{j,1,1,W_n}设为随机数S’_j。

加密标签生成部524如下计算判定元素CT_{L+1,W_n}。

首先,加密标签生成部524计算标签随机数组R’的L个随机数的异或。将得到的值称作运算值(R’+)。

然后,加密标签生成部524将运算值(R’+)作为输入来执行函数F_7。得到的值是判定元素CT_{L+1,W_n}。

函数F_7的一例是SHA-1这样的哈希函数。

加密标签组CT_W能够如下表示。

CT_W={CT_{W_1},…,CT_{W_N}}

CT_{W_n}=((CT_{1,0,0,W_n},CT_{1,0,1,W_n},CT_{1,1,0,W_n},CT_{1,1,1,W_n}),…,(CT_{L,0,0,W_n},CT_{L,0,1,W_n},CT_{L,1,0,W_n},CT_{L,1,1,W_n}),CT_{L+1,W_n})

n是1以上且N以下的整数。

CT_{j,0,0,W_n}=F_6(F_5(F_2(TK(i),B_j||j),W_n),s_j)+R’_j

CT_{j,0,1,W_n}=s’_j

CT_{j,1,0,W_n}=F_6(F_5(F_2(TK(i),*||j),W_n),S’_j)+R’_j

CT_{j,1,1,W_n}=S’_j

j是1以上且L以下的整数。

R’+=R’_1+…+R’_L

CT_{L+1,W_n}=F_7(R’+)

在不确定登记关键字W_n的情况下,省略“W_n”。

例如,加密标签CT_{W_n}省略成加密标签CT。

在步骤S147中,登记部530将加密数据C和加密标签组CT_W的组登记在数据管理装置700中。

具体而言,登记部530向数据管理装置700发送加密数据C和加密标签组CT_W的组。在数据管理装置700中,受理部710接收加密数据C和加密标签组CT_W的组,将接收到的组存储在存储部791中。即,受理部710将加密数据C和加密标签组CT_W相互对应起来存储在存储部791中。然后,加密数据C和加密标签组CT_W的组保管在存储部791中。

根据图17对登记数据库792进行说明。

数据管理装置700将识别编号、文件名、加密数据C和加密标签组CT_W相互对应起来登记在登记数据库792中。

登记数据库792存储在存储部791中。

根据图18对检索操作(S150)进行说明。

检索操作(S150)是由检索操作装置600执行的处理。

在步骤S151中,受理部610受理用户密钥UK(i)。

例如,受理部610使用通信装置605从用户密钥装置400接收用户密钥UK(i)。但是,受理部610也可以经由输入输出接口604受理被输入到检索操作装置600的用户密钥UK(i)。

进而,受理部610将用户密钥UK(i)存储在存储部691中。然后,用户密钥UK(i)保管在存储部691中。

在用户密钥UK(i)已经保管在存储部691中的情况下,不需要步骤S151。

用户密钥UK(i)包含世代编号i、数据属性密钥数据DAK(i)、标签属性密钥数据TAK(i)和检索密钥SK(i)。

在步骤S152中,受理部610受理检索关键字w。

具体而言,受理部610经由输入输出接口604受理被输入到检索操作装置600的检索关键字w。但是,受理部610也可以从应用程序受理检索关键字w。

在步骤S153中,检索查询生成部622使用标签属性密钥数据TAK(i)和检索关键字w生成检索查询Q。

检索查询Q具有标志元素Qb_j和属性关键字元素Q_j。

检索查询生成部622如下计算标志元素Qb_j。

检索查询生成部622从标签属性密钥数据TAK(i)中提取标志值Tb_j。标志元素Qb_j是与标志值Tb_j相同的值。

检索查询生成部622如下计算属性关键字元素Q_j。

首先,检索查询生成部622从标签属性密钥数据TAK(i)中提取标签属性密钥TAK_j。

然后,检索查询生成部622将标签属性密钥TAK_j和检索关键字w作为输入来执行函数F_5。得到的值是属性关键字元素Q_j。

检索查询Q能够如下表示。

Q=((Qb_1,Q_1),…,(Qb_L,Q_L))

Qb_j=Tb_j

Q_j=F_5(TAK_j,w)

在步骤S154中,请求部630使用通信装置605向数据管理装置700发送检索查询Q。

在步骤S155中,请求部630使用通信装置605从数据管理装置700接收检索结果{C}。

检索结果{C}是命中检索的加密数据C的集合。

在步骤S156中,解密部640使用数据属性密钥数据DAK(i),根据各加密数据C对明文M进行解密。

具体而言,解密部640根据加密数据C,如下对明文M进行解密。

首先,解密部640计算运算值U。运算值U在后面叙述。

接着,解密部640从加密数据C中提取密文C_{L+1}。

然后,解密部640将运算值U和密文C_{L+1}作为输入来执行解密函数F_4{-1}。得到的值是明文M。

解密函数F_4{-1}是函数F_4的解密函数。

解密部640如下计算运算值U。

首先,解密部640从数据属性密钥数据DAK(i)中提取标志值Db_j。

接着,解密部640根据提取出的标志值Db_j,从加密数据C中选择属性元素的组(C_{j,0,0}、C_{j,0,1})或通配符元素的组(C_{j,1,0}、C_{j,1,1})。将选择出的组称作选择元素的组(Cj0、Cj1)。

接着,解密部640从数据属性密钥数据DAK(i)中提取数据属性密钥DAK_j。

接着,解密部640将数据属性密钥DAK_j和选择元素Cj1作为输入来执行函数F_3。将得到的值称作函数值(Cj^)。

接着,解密部640计算函数值(Cj^)与选择元素Cj0的异或。将得到的值称作提取随机数(Rj^)。

然后,解密部640计算全部层级的提取随机数(Rj^)的异或。得到的值是运算值U。

明文M能够如下表示。

M=F_4{-1}(U,C_{L+1})

U=(F_3(DAK_1,C_{1,Db_1,1})+C_{1,Db_1,0})+…+(F_3(DAK_L,C_{L,Db_L,1})+C_{L,Db_L,0})

将在全部层级j(1≦j≦L)中属性值B_j与属性值A_j一致或属性值A_j是通配符“*”的情况记作“B≧A”。

在满足B≧A的情况下,运算值U能够如下展开。

U=R_1+…+R_L

因此,在满足B≧A的情况下,通过计算F_4{-1}(U,C_{L+1}),能够计算明文M。

另外,在不满足B≧A的情况下,关于某个层级j,以下2个式子均不成立。

F_2(DK(i),B_j||j)=F_2(DK(i),A_j||j)

F_2(DK(i),*||j)=F_2(DK(i),A_j||j)

该情况下,在运算值U的计算中,无法复原任何的随机数R_j,因此,无法根据加密数据C对明文M进行解密。

在检索结果{C}中不包含加密数据C的情况下,即不存在命中检索的加密数据C的情况下,不需要步骤S156。

将在步骤S156中得到的明文M的集合称作检索结果{M}。

在步骤S157中,输出部650输出检索结果{M}。

具体而言,输出部650经由输入输出接口604在显示器显示检索结果{M}。

在未得到检索结果{M}的情况下,即不存在命中检索的加密数据C的情况下,输出部650显示表示不存在命中检索的明文M的消息。

根据图19对数据检索(S160)进行说明。

数据检索(S160)是由数据管理装置700执行的处理。

在步骤S161中,受理部710使用通信装置705从检索操作装置600接收检索查询Q。

在步骤S162中,核对部721通过将检索查询Q与各加密标签CT进行核对,选择符合检索查询Q的加密标签CT。

关于加密标签CT,省略登记关键字的记号{W_n}。

具体而言,核对部721如下将检索查询Q与各加密标签CT进行核对。

首先,核对部721计算运算值V_1。运算值V_1在后面叙述。

核对部721将运算值V_1作为输入来执行函数F_7。将得到的值称作核对值V_2。

然后,核对部721将核对值V_2与判定元素CT_{L+1}进行比较。

在核对值V_2与判定元素CT_{L+1}一致的情况下,加密标签CT符合检索查询Q。

核对部721如下计算运算值V_1。

首先,核对部721从检索查询Q中提取标志元素Qb_j。

接着,核对部721根据提取出的标志元素Qb_j,从加密标签CT中选择属性元素的组(CT_{j,0,0}、CT_{j,0,1})或通配符元素的组(CT_{j,1,0}、CT_{j,1,1})。将选择出的组称作选择元素(CTj0、CTj1)。

接着,核对部721从检索查询Q中提取属性关键字元素Q_j。

接着,核对部721将属性关键字元素Q_j和选择元素(CTj1)作为输入来执行函数F_6。将得到的值称作函数值(CTj^)。

接着,核对部721计算函数值(CTj^)与选择元素(CTj0)的异或。将得到的值称作提取随机数(R’j^)。

然后,核对部721计算全部层级的提取随机数(R’j^)的异或。得到的值是运算值V_1。

核对值V_2能够如下表示。

V_1=(F_6(Q_1,CT_{1,Qb_1,1})+CT_{1,Qb_1,0})+…+(F_6(Q_L,CT_{L,Qb_L,1})+CT_{L,Qb_L,0})

V_2=F_7(V_1)

在满足B≧A和W_n=w的情况下,运算值V_1能够如下展开。

V_1=R_1+…+R’_L

其结果是,以下的式子成立。

V_2=F_7(V_1)=F_7(R’_1+…+R’_L)=CT_{L+1}

假设在满足B≧A但是不满足W_n=w’的情况下或满足W_n=w但是不满足B≧A的情况下,无法正确地复原任何的随机数R’_j,无法计算R’_1+…+R’_L。

因此,通常,核对值V_2(=F_7(V_1))与判定元素C_{L+1}(=F_7(R’_1+···+R’_L))一致的概率非常低。

将在步骤S162中选择出的加密标签CT即符合检索查询Q的加密标签CT称作相符加密标签CT。

在步骤S163中,提取部722提取与相符加密标签CT对应的加密数据C。将提取出的加密数据C称作相符加密数据C。

在步骤S164中,输出部730使用通信装置705向检索操作装置600发送加密结果{C}。

加密结果{C}是相符加密数据C的集合。

根据图20对数据删除(S170)进行说明。

数据删除(S170)是由检索操作装置600和数据管理装置700执行的处理。

在步骤S171中,检索操作装置600的受理部610受理删除文件名。

具体而言,受理部610经由输入输出接口604受理被输入到检索操作装置600的删除文件名。但是,受理部610也可以从应用程序受理删除文件名。

例如,删除文件名是通过检索操作(S150)得到的。

在步骤S172中,检索操作装置600的输出部650使用通信装置605向数据管理装置700发送删除文件名。

在步骤S173中,数据管理装置700的受理部710使用通信装置705从检索操作装置600接收删除文件名。

在步骤S174中,数据管理装置700的受理部710从存储部791删除与删除文件名对应的加密数据C和加密标签CT_W。

***实施方式1的效果***

能够不使用公开密钥加密技术而使用公共密钥加密技术实现多用户型的隐匿检索。而且,由于不使用公开密钥加密技术,因此能够高速地进行数据的登记和检索。

在隐匿检索中,在检索关键字与登记关键字完全一致的情况下命中检索。

实施方式2

关于能够进行部分一致检索的多用户型的公共密钥方式,根据图21~图24主要对与实施方式1不同之处进行说明。

***结构的说明***

根据图21对生成部520的结构进行说明。

生成部520具有随机数生成部525、加密数据生成部522、关键字取得部523、部分一致关键字生成部526和加密标签生成部527。

根据图22对检索部720的结构进行说明。

检索部720具有核对部723和提取部722。

***动作的说明***

主密钥生成(S110)如实施方式1中说明的那样(参照图12)。

在主密钥生成(S110)中,主密钥装置200生成主密钥数据MSK(i)。

主密钥数据MSK(i)是主密钥MK(i)和世代编号i的组。

登记密钥生成(S120)如实施方式1中说明的那样(参照图13)。

在登记密钥生成(S120)中,登记密钥装置300生成登记密钥EK(i)。

登记密钥EK(i)是世代编号i、数据密钥DK(i)和标签密钥TK(i)的组。

数据密钥DK(i)是使用主密钥数据MSK(i)中包含的主密钥MK(i)生成的。

标签密钥TK(i)是使用主密钥数据MSK(i)中包含的主密钥MK(i)生成的。

用户密钥生成(S130)如实施方式1中说明的那样(参照图14)。

在用户密钥生成(S130)中,用户密钥装置400生成用户密钥UK(i)。

用户密钥UK(i)是世代编号i、数据属性密钥数据DAK(i)和标签属性密钥数据TAK(i)的组。

数据属性密钥DAK(i)是使用属性信息A和登记密钥EK(i)中包含的数据密钥DK(i)生成的。

标签属性密钥数据TAK(i)是使用属性信息A和登记密钥EK(i)中包含的标签密钥TK(i)生成的。

根据图23对数据登记(S240)进行说明。

在数据登记(S240)中,登记装置500将密文C和加密标签组CT_PMW的组登记在数据管理装置700中。

在步骤S241中,受理部510受理登记密钥EK(i)。

步骤S241与实施方式1中的步骤S141相同(参照图16)。

在步骤S242中,受理部510受理明文M和属性信息B。

步骤S242与实施方式1中的步骤S142相同(参照图16)。

在步骤S243中,随机数生成部525生成3个数据随机数组(R、s、S)、1个标签随机数组R’和1个标签随机数S’。

3个数据随机数组(R、s、S)如实施方式1中说明的那样(参照图16的步骤S143)。

标签随机数组R’是与属性的层数L相同个数的随机数。即,标签随机数组R’是L个随机数。各个随机数是均匀随机地生成的。

标签随机数组R’能够如下表示。

R’=(R’_1,…,R’_L)

标签随机数S’是均匀随机地生成的1个随机数。

在步骤S244中,加密数据生成部522使用数据密钥DK(i)、明文M、属性信息B和3个数据随机数组(R、s、S)生成加密数据C。

步骤S244与实施方式1中的步骤S144相同(参照图16)。

在步骤S245中,关键字取得部523取得登记关键字组W。

步骤S245与实施方式1中的步骤S145相同(参照图16)。

登记关键字组W是N个登记关键字W_n。N是1以上的整数。n是1以上且N以下的整数。

在步骤S246中,部分一致关键字生成部526按照每个登记关键字W_n生成部分一致关键字组PM(W_n),由此生成针对登记关键字组W的部分一致关键字组PMW。

部分一致关键字组PMW能够如下表示。

PMW=(PM(W_1),…,PM(W_N))

部分一致关键字组PM(W_n)是K个部分一致关键字PM(W_n[k])。K是1以上的整数。k是1以上且K以下的整数。

部分一致关键字组PM(W_n)能够如下表示。

PM(W_n)=(PM(W_n)[1],…,PM(W_n)[K])

部分一致关键字PM(W_n[k])是部分一致关键字和开始位置编号的组。开始位置编号表示在登记关键字中部分一致关键字从第几个字符开始。

部分一致关键字PM(W_n)[k]能够如下表示。

PM(W_n)[k]=(部分一致关键字,开始位置编号)

PM(W_n)[k][0]=部分一致关键字

PM(W_n)[k][1]=开始位置编号

部分一致关键字生成部526如下生成针对登记关键字W_n的部分一致关键字组PM(W_n)。

首先,部分一致关键字生成部526按照每1个字符对登记关键字W_n进行分割。分割后的各个字符(部分关键字)成为部分一致关键字的开头字符。例如,登记关键字W_n“东京都”被分割成“东”“京”“都”。“东”“京”“都”分别成为部分一致关键字的开头字符。

接着,部分一致关键字生成部526列举在登记关键字W_n中从分割后的各个字符开始的全部字符串。列举出的字符串分别成为部分一致关键字。例如,列举在登记关键字W_n“东京都”中从第1个字符“东”开始的“东”“东京”“东京都”。“东”是从第1个字符到第1个字符的字符串。“东京”是从第1个字符到第2个字符的字符串。“东京都”是从第1个字符到第3个字符的字符串。进而,列举在登记关键字W_n“东京都”中从第2个字符“京”开始的“京”“京都”。“京”是从第2个字符到第2个字符的字符串。“京都”是从第2个字符到第3个字符的字符串。进而,列举在登记关键字W_n“东京都”中从第3个字符“都”开始的“都”。“都”是从第3个字符到第3个字符的字符串。“东”“东京”“东京都”“京”“京都”“都”分别成为部分一致关键字。

然后,部分一致关键字生成部526按照列举出的每个字符串生成部分一致关键字PW(W_n[k])。

例如,生成针对登记关键字W_n“东京都”的6个部分一致关键字PW(W_n[k])。

PW(W_n)[1]=(东,1)

PW(W_n)[2]=(东京,1)

PW(W_n)[3]=(东京都,1)

PW(W_n)[4]=(京,2)

PW(W_n)[5]=(京都,2)

PW(W_n)[6]=(都,3)

一般而言,在对登记关键字W_n进行分割而得到的部分关键字的数量为“X”的情况下,部分一致关键字组PW(W_n)的长度“K”即部分一致关键字PW(W_n[k])的数量“K”能够如下表示。

K=X(X+1)÷2

但是,部分一致关键字生成部526也可以按照每个词组对登记关键字W_n进行分割。

例如,登记关键字W_n“东京都”被分割成“东京”“都”。该情况下,列举在登记关键字W_n“东京都”中从第1个词组“东京”开始的“东京”“东京都”。“东京”是从第1个词组到第1个词组的字符串。“东京都”是从第1个词组到第2个词组的字符串。进而,列举在登记关键字W_n“东京都”中从第2个词组“都”开始的“都”。“都”是从第2个词组到第2个词组的字符串。然后,生成3个部分一致关键字PW(W_n[k])。

PW(W_n)[1]=(东京,1)

PW(W_n)[2]=(东京都,1)

PW(W_n)[3]=(都,3)

此外,部分一致关键字生成部526也可以利用与1个字符和1个词组不同的单位对登记关键字W_n进行分割。

部分一致关键字生成部526也可以根据登记关键字W_n来改变分割单位。

此外,部分一致关键字生成部526也可以不根据登记关键字W_n进行分割。在登记关键字W_n未被分割的情况下,登记关键字W_n成为完全一致检索的对象,但是不是部分一致检索的对象。

在步骤S247中,加密标签生成部527使用标签密钥TK(i)、属性信息B、标签随机数组R’、标签随机数S’和部分一致关键字组PMW生成加密标签组CT_PMW。

加密标签组CT_PMW是与多个登记关键字W_n对应的多个加密标签CT_{PM(W_n)}。n是1以上且N以下的整数,表示登记关键字W_n的编号。

加密标签CT_{PM(W_n)}具有随机数元素CT_{0,PM(W_n)}。

加密标签生成部527在随机数元素CT_{0,PM(W_n)}中设定标签随机数S’。

随机数元素CT_{0,PM(W_n)}能够如下表示。

CT_{0,PM(W_n)}=S’

加密标签CT_{PM(W_n)}还具有属性元素CT_{j,0,PM(W_n)}。j是1以上且L以下的整数,表示属性值B_j的编号。

属性元素CT_{j,0,PM(W_n)}能够如下表示。

CT_{j,0,PM(W_n)}=(CT_{j,0,PM(W_n)[1]},…,CT_{j,0,PM(W_n)[K]})

加密标签生成部527如下计算属性元素CT_{j,0,PM(W_n)[k]}。k是1以上且K以下的整数。

首先,加密标签生成部527连结属性值B_j和编号j。将得到的比特串表示的值称作连结值(B_j)。

接着,加密标签生成部527将标签密钥TK(i)的值和连结值(B_j)作为输入来执行函数F_2。将得到的值称作函数值(B_j^)。

接着,加密标签生成部527将函数值(B_j^)和部分一致关键字PM(W_n)[k][0]作为输入来执行函数F_5。将得到的值称作函数值(B_jPM(W_n)[k]^^)。

接着,加密标签生成部527将函数值(B_jPM(W_n)[k]^^)、开始位置编号PM(W_n)[k][0]和随机数元素CT_{0,PM(W_n)}作为输入来执行函数F_6。将得到的值称作函数值(B_jPM(W_n)[k]^^^)。

然后,加密标签生成部527计算函数值(B_jPM(W_n)[k]^^^)与标签随机数R’_j的异或。得到的值是属性元素CT_{j,0,PM(W_n)[k]}。

与函数F_1、函数F_2和函数F_3同样,函数F_5和函数F_6分别是伪随机函数、哈希函数或公共密钥加密方式的函数。

加密标签CT_{PM(W_n)}还具有通配符元素CT_{j,1,PM(W_n)}。j是1以上且L以下的整数,表示属性值B_j的编号。

属性元素CT_{j,0,PM(W_n)}能够如下表示。

CT_{j,0,PM(W_n)}=(CT_{j,0,PM(W_n)[1]},…,CT_{j,0,PM(W_n)[K]})

通配符元素CT_{j,1,PM(W_n)}能够如下表示。

CT_{j,1,PM(W_n)}=(CT_{j,1,PM(W_n)[1]},…,CT_{j,1,PM(W_n)[K]})

加密标签生成部527如下计算通配符元素CT_{j,1,PM(W_n)[k]}。k是1以上且K以下的整数。

首先,加密标签生成部527连结通配符“*”和编号j。将得到的比特串表示的值称作连结值(*_j)。

接着,加密标签生成部527将标签密钥TK(i)的值和连结值(*_j)作为输入来执行函数F_2。将得到的值称作函数值(*_j^)。

接着,加密标签生成部527将函数值(*_j^)和部分一致关键字PM(W_n)[k][0]作为输入来执行函数F_5。将得到的值称作函数值(*_jPM(W_n)[k]^^)。

接着,加密标签生成部527将函数值(*_jPM(W_n)[k]^^)、开始位置编号PM(W_n)[k][1]和随机数元素CT_{0,PM(W_n)}作为输入来执行函数F_6。将得到的值称作函数值(*_jPM(W_n)[k]^^^)。

然后,加密标签生成部527计算函数值(*_jPM(W_n)[k]^^^)与随机数R’_j的异或。得到的值是通配元素CT_{j,1,PM(W_n)[k]}。

加密标签CT_{PM(W_n)}还具有判定元素CT_{L+1,PM(W_n)}。

加密标签生成部527如下计算判定元素CT_{L+1,PM(W_n)}。

首先,加密标签生成部527计算标签随机数组R’的L个随机数的异或。将得到的值称作运算值(R’+)。

然后,加密标签生成部527将运算值(R’+)作为输入来执行函数F_7。得到的值是判定元素CT_{L+1,PM(W_n)}。

函数F_7的一例是SHA-1这样的哈希函数。

加密标签组CT_PMW能够如下表示。

CT_PMW={CT_{PM(W_1)},…,CT_{PM(W_N)}}

CT_{PM(W_n)}=(CT_{0,PM(W_n)},CT_{1,0,PM(W_n)[1]},···,CT_{L,0,PM(W_n)[1]},…,CT_{1,0,PM(W_n)[K]},…,CT_{L,0,PM(W_n)[K]},CT_{1,1,PM(W_n)[1]},…,CT_{L,1,PM(W_n)[1]},…,CT_{1,1,PM(W_n)[K]},…,CT_{L,1,PM(W_n)[K]},CT_{L+1,PM(W_n)})

n是1以上且N以下的整数。

CT_{0,PM(W_n)}=S’

CT_{j,0,PM(W_n)[k]}=F_6(F_5(F_2(TK(i),B_j||j),PM(W_n)[k][0]),PM(W_n)[k][1],S’)+R’_j

CT_{j,1,PM(W_n)[k]}=F_6(F_5(F_2(TK(i),*||j),PM(W_n)[k][0]),PM(W_n[k][1]),S’)+R’_j

j是1以上且L以下的整数,k是1以上且K以下的整数。

R’+=R’_1+…+R’_L

CT_{L+1,PM(W_n)}=F_7(R’+)

在不确定登记关键字W_n的情况下,省略“PM(W_n)”。该情况下,加密标签CT_{PM(W_n)}记作加密标签CT。

加密标签CT能够如下表示。n是1以上且N以下的整数。

CT=(CT_0,CT_{1,0,[1]},…,CT_{L,0,[1]},…,CT_{1,0,[K]},…,CT_{L,0,[K]},CT_{1,1,[1]},…,CT_{L,1,[1]},…,CT_{1,1,[K]},…,CT_{L,1,[K]},CT_{L+1})

在步骤S248中,登记部530将加密数据C和加密标签组CT_PMW的组登记在数据管理装置700中。

具体而言,登记部530向数据管理装置700发送加密数据C和加密标签组CT_PMW的组。在数据管理装置700中,受理部710接收加密数据C和加密标签组CT_PMW的组,将接收到的组存储在存储部791中。即,受理部710将加密数据C和加密标签组CT_PMW相互对应起来存储在存储部791中。然后,加密数据C和加密标签组CT_PMW的组保管在存储部791中。

在数据登记(S240)中,与实施方式1同样,在登记关键字组W包含N个登记关键字的情况下,登记装置500如下进行动作。

在步骤S243中,随机数生成部525生成N个标签随机数组R’和N个标签随机数S’。

在步骤S247中,加密标签生成部527使用按照每个登记关键字W_n而不同的标签随机数组R’和标签随机数S’,生成与登记关键字W_n对应的加密标签CT_{PM(W_n)}。

检索操作(S150)如实施方式1中说明的那样(参照图18)。

在检索操作(S150)中,检索操作装置600受理用户密钥UK(i)和检索关键字W,输出检索结果{M}。

根据图24对数据检索(S260)进行说明。

在数据检索(S260)中,数据管理装置700接收检索查询Q,发送加密结果{C}。

在步骤S261中,受理部710从检索操作装置600接收检索查询Q。

步骤S261与实施方式1中的步骤S161相同(参照图19)。

在步骤S262中,核对部723通过将检索查询Q与各加密标签CT进行核对,选择符合检索查询Q的加密标签CT。

具体而言,核对部723如下将检索查询Q与各加密标签CT进行核对。关于加密标签CT,省略登记关键字的记号{PM(W_n)}。

首先,核对部723根据加密标签CT的要素数计算部分一致关键字的数量K,根据部分一致关键字的数量K计算登记时的关键字的字符数X。在登记时的关键字是“东京都”的情况下,加密标签CT的要素数是“14”。在加密标签CT的要素数是“14”的情况下,部分一致关键字的数量K是“6”。核对部723通过计算K=X(X+1)÷2,登记时的关键字“东京都”的字符数X计算为“3”。

接着,核对部723计算运算值V_1[x,k]。x是1以上且X以下的整数。k是1以上且K以下的整数。运算值V_1[x,k]在后面叙述。

接着,核对部723将运算值V_1[x,k]作为输入来执行函数F_7。将得到的值称作核对值V_2[x,k]。

然后,核对部723将核对值V_2[x,k]与加密标签CT的判定元素CT_{L+1}进行比较。

在核对值V_2[x,k]与判定元素CT_{L+1}一致的情况下,加密标签CT符合检索查询Q。

核对部723如下计算运算值V_1[x,k]。

首先,核对部723从检索查询Q中提取标志元素Qb_j。j是1以上且L以下的整数。

接着,核对部723根据提取出的标志元素Qb_j,从加密标签CT中选择属性元素的组CTj0或通配符元素的组CTj1。属性元素的组CTj0和通配符元素的组CTJ1分别如下表示。

CTj0=(CT_{j,0,[1]},…,CT_{j,0,[K]})

CTj1=(CT_{j,1,[1]}、CT_{j,1,[K]})

核对部723如下选择属性元素的组CTj0或通配符元素的组CTj1。

在标志元素Qb_j是“0”的情况下,核对部723选择属性元素的组CRj0。在标志元素Qb_j是“1”的情况下,核对部723选择通配符元素的组CRj1。

将选择出的组称作选择元素CTj。

接着,核对部723从检索查询Q中提取属性关键字元素Q_j。

接着,核对部723将属性关键字元素Q_j、值x和随机数元素CT_0作为输入来执行函数F_6。将得到的值称作函数值(CTj[x]^)。x是1以上且X以下的整数。

接着,核对部723计算各函数值(CTj[x]^)与选择元素(CTj[k])的异或。将得到的值称作提取随机数(R’j[x,k]^)。

然后,核对部723计算全部层级的提取随机数(R’j[x,k]^)的异或。得到的值是运算值V_1[x,k]。

运算值V_1[x,k]和核对值V_2[x,k]分别能够如下表示。

V_1[x,k]=(F_6(Q_1,x,CT_{0})+CT_{1,Qb_1,[k]})+…+(F_6(Q_L,x,CT_{0})+CT_{L,Qb_L,[k]})

V_2[x,k]=F_7(V_1[x,k])

在满足B≧A且检索关键字w作为部分一致关键字包含在登记关键字W_n中的情况下,存在满足如下的运算值V_1[x,k]的整数的组(x,k)。

V_1[x,k]=R_1+…+R’_L

其结果是,针对整数的组(x,k),以下的式子成立。

V_2[x,k]=F_7(V_1[x,k])=F_7(R’_1+…+R’_L)=CT_{L+1}

在登记时的关键字是“东京都”且检索时的关键字是“东京”的情况下,整数x是“1”,整数k是“2”。

在登记时的关键字是“东京都”且检索时的关键字是“都”的情况下,整数x是“3”,整数k是“6”。

在满足B≧A且检索关键字w未作为部分一致关键字包含在登记关键字W_n中的情况下,无法正确地复原随机数R’_j,无法得到运算值V_1[x,k]。

在不满足B≧A且检索关键字w作为部分一致关键字包含在登记关键字W_n中的情况下,无法正确地复原随机数R’_j,无法得到运算值V_1[x,k]。

因此,针对任何的整数的组(x,k),核对值V_2[x,k](=F_7(V_1[x,k]))与判定元素C_{L+1}(=F_7(R’_1+…+R’_L))一致的概率都非常低。

将在步骤S262中选择出的加密标签CT即符合检索查询Q的加密标签CT称作相符加密标签CT。

在步骤S263中,提取部722提取与相符加密标签CT对应的加密数据C。将提取出的加密数据C称作相符加密数据C。

步骤S263与实施方式1中的步骤S163相同。(参照图19)。

在步骤S264中,输出部730向检索操作装置600发送加密结果{C}。加密结果{C}是相符加密数据C的集合。

步骤S264与实施方式1中的步骤S164相同(参照图19)。

数据删除(S170)如实施方式1中说明的那样(参照图20)。

在数据删除(S170)中,数据管理装置700删除与删除文件名对应的加密数据C和加密标签CT_W的组。

***实施方式2的效果***

根据实施方式2,在检索关键字包含在登记关键字中的情况下即检索关键字与登记关键字部分一致的情况下命中检索。

实施方式3

关于能够进行范围检索的多用户型的公共密钥方式,根据图25~图30主要对与实施方式1和实施方式2不同之处进行说明。

范围检索是发现检索范围中包含的登记数值的检索。

例如,在检索范围是[78,111]的情况下,进行用于发现满足78≦X≦111的登记数值X的范围检索。

***结构的说明***

根据图25对生成部520的结构进行说明。

生成部520具有随机数生成部525、加密数据生成部522、关键字取得部523、泛化数值生成部528和加密标签生成部527。

根据图26对生成部620的结构进行说明。

生成部620具有数值列举部623和检索查询生成部624。

根据图27对检索部720的结构进行说明。

检索部720具有核对部724和提取部722。

***动作的说明***

主密钥生成(S110)如实施方式1中说明的那样(参照图12)。

在主密钥生成(S110)中,主密钥装置200生成主密钥数据MSK(i)。

主密钥数据MSK(i)是主密钥MK(i)和世代编号i的组。

登记密钥生成(S120)如实施方式1中说明的那样(参照图13)。

在登记密钥生成(S120)中,登记密钥装置300生成登记密钥EK(i)。

登记密钥EK(i)是世代编号i、数据密钥DK(i)和标签密钥TK(i)的组。

数据密钥DK(i)是使用主密钥数据MSK(i)中包含的主密钥MK(i)生成的。

标签密钥TK(i)是使用主密钥数据MSK(i)中包含的主密钥MK(i)生成的。

用户密钥生成(S130)如实施方式1中说明的那样(参照图14)。

在用户密钥生成(S130)中,用户密钥装置400生成用户密钥UK(i)。

用户密钥UK(i)是世代编号i、数据属性密钥数据DAK(i)和标签属性密钥数据TAK(i)的组。

数据属性密钥DAK(i)是使用属性信息A和登记密钥EK(i)中包含的数据密钥DK(i)生成的。

标签属性密钥数据TAK(i)是使用属性信息A和登记密钥EK(i)中包含的标签密钥TK(i)生成的。

根据图28对数据登记(S340)进行说明。

在数据登记(S340)中,登记装置500将密文C和加密标签组CT_GNUM的组登记在数据管理装置700中。

在步骤S341中,受理部510受理登记密钥EK(i)。

步骤S341与实施方式1中的步骤S141相同(参照图16)。

在步骤S342中,受理部510受理明文M和属性信息B。

步骤S342与实施方式1中的步骤S142相同(参照图16)。

在步骤S343中,随机数生成部525生成3个数据随机数组(R、s、S)、1个标签随机数组R’和1个标签随机数S’。

步骤S343与实施方式2中的步骤S243相同(参照图23)。

标签随机数组R’是与属性的层数L相同个数的随机数。即,标签随机数组R’是L个随机数。各个随机数是均匀随机地生成的。

标签随机数组R’能够如下表示。

R’=(R’_1,…,R’_L)

标签随机数S’是均匀随机地生成的1个随机数。

在步骤S344中,加密数据生成部522使用数据密钥DK(i)、明文M、属性信息B和3个数据随机数组(R、s、S)生成加密数据C。

步骤S344与实施方式1中的步骤S144相同(参照图16)。

在步骤S345中,关键字取得部523取得登记数值组NUM。

登记数值组NUM是1个以上的登记数值。登记数值组NUM相当于登记关键字组W。登记数值相当于登记关键字。

登记数值组NUM能够如下表示。N是1以上的整数。

NUM=(W_1,…,W_N)

在步骤S346中,泛化数值生成部528生成与登记数值组NUM对应的泛化数值组GNUM。

泛化数值组GNUM能够如下表示。

GNUM=(GNUM(W_1),…,GNUM(W_N))

泛化数值生成部528将登记数值W_n视为字符串,列举与登记数值W_n前方一致的全部关键字,由此生成泛化数值组GNUM。n是1以上且N以下的整数。

在登记数值W_n是“87”的情况下,泛化数值生成部528列举“87”“8?”。“?”表示一个字符的通配符,这里意味着表示0~9的全部数字。

在登记数值W_n是“999”的情况下,泛化数值生成部528列举“999”“99?”“9??”。

泛化数值GNUM(W_n)能够如下表示。K是1以上的整数。

GNUM(W_n)=(GNUM(W_n)[1],…,GNUM(W_n)[K])

例如,在登记数值W_n是“87”的情况下,泛化数值GNUM(W_n)的要素数K是“2”。

GNUM(W_n)[1]=87

GNUM(W_n)[2]=8?

泛化数值GNUM(W_n)的长度即泛化数值GNUM(W_n)的要素数K与登记数值W_n的位数一致。

在登记数值W_n的位数是“2”的情况下,泛化数值GNUM(W_n)的要素数K是“2”。

在登记数值W_n的位数是“3”的情况下,泛化数值GNUM(W_n)的要素数K是“3”。

在步骤S347中,加密标签生成部527使用标签密钥TK(i)、属性信息B、标签随机数组R’、标签随机数S’和泛化数值组GNUM生成加密标签组CT_GNUM。

加密标签组CT_GNUM是多个加密标签CT_{GNUM(W_n)}。n是1以上且N以下的整数,表示登记数值W_n的编号。

加密标签CT_{GNUM(W_n)}具有随机数元素CT_{0,GNUM(W_n)}。

加密标签生成部527在随机数元素CT_{0,GNUM(W_n)}中设定标签随机数S’。

加密标签CT_{GNUM(W_n)}还具有属性元素CT_{j,0,GNUM(W_n)}。j是1以上且L以下的整数。

属性元素CT_{j,0,GNUM(W_n)}能够如下表示。

CT_{j,0,GNUM(W_n)}=(CT_{j,0,GNUM(W_n)[1]},…,CT_{j,0,GNUM(W_n)[K]}

加密标签生成部527如下计算属性元素CT_{j,0,GNUM(W_n)}。k是1以上且K以下的整数。

首先,加密标签生成部527连结属性值B_j和编号j。将得到的比特串表示的值称作连结值(B_j)。

接着,加密标签生成部527将标签密钥TK(i)的值和连结值(B_j)作为输入来执行函数F_2。将得到的值称作函数值(B_j^)。

接着,加密标签生成部527将函数值(B_j^)和泛化数值GNUM(W_n)[k]作为输入来执行函数F_5。将得到的值称作函数值(B_jGNUM(W_n)[k]^^)。

接着,加密标签生成部527将函数值(B_jGNUM(W_n)[k]^^)和随机数元素CT_{0,GNUM(W_n)}作为输入来执行函数F_6。将得到的值称作函数值(B_jGNUM(W_n)[k]^^^)。

然后,加密标签生成部527计算函数值(B_jGNUM(W_n)[k]^^^)与标签随机数R’_j的异或。得到的值是属性元素CT_{j,0,GNUM(W_n)[k]}。

与函数F_1、函数F_2和函数F_3同样,函数F_5和函数F_6分别是伪随机函数、哈希函数或公共密钥加密方式的函数。

加密标签CT_{GNUM(W_n)}具有通配符元素CT_{j,1,GNUM(W_n)}。

通配符元素CT_{j,1,GNUM(W_n)}能够如下表示。

CT_{j,1,GNUM(W_n)}=(CT_{j,1,GNUM(W_n)[1]},…,CT_{j,1,GNUM(W_n)[K]}

加密标签生成部527如下计算通配符元素CT_{j,1,GNUM(W_n)}。k是1以上且K以下的整数。

首先,加密标签生成部527连结通配符“*”和编号j。将得到的比特串表示的值称作连结值(*_j)。

接着,加密标签生成部527将标签密钥TK(i)的值和连结值(*_j)作为输入来执行函数F_2。将得到的值称作函数值(*_j^)。

接着,加密标签生成部527将函数值(*_j^)和泛化数值GNUM(W_n)[k]作为输入来执行函数F_5。将得到的值称作函数值(*_jGNUM(W_n)[k]^^)。

接着,加密标签生成部527将函数值(*_jGNUM(W_n)[k]^^)和随机数元素CT_{0,GNUM(W_n)}作为输入来执行函数F_6。将得到的值称作函数值(*_jGNUM(W_n)[k]^^^)。

然后,加密标签生成部527计算函数值(*_jGNUM(W_n)[k]^^^)与标签随机数R’_j的异或。得到的值是通配符元素CT_{j,1,GNUM(W_n)[k]}。

加密标签CT_{GNUM(W_n)}还具有判定元素CT_{L+1,GNUM(W_n)}。

加密标签生成部527如下计算判定元素CT_{L+1,GNUM(W_n)}。

首先,加密标签生成部527计算标签随机数组R’的L个随机数的异或。将得到的值称作运算值(R’+)。

然后,加密标签生成部527将运算值(R’+)作为输入来执行函数F_7。得到的值是判定元素CT_{L+1,GNUM(W_n)}。

函数F_7的一例是SHA-1这样的哈希函数。

加密标签组CT_GNUM能够如下表示。

CT_GNUM={CT_{GNUM(W_1)},…,CT_{GNUM(W_N)}}

CT_{GNUM(W_n)}=(CT_{0,GNUM(W_n)},CT_{1,0,GNUM(W_n)[1]},…,CT_{L,0,GNUM(W_n)[1]},…,CT_{1,0,GNUM(W_n)[K]},…,CT_{L,0,GNUM(W_n)[K]},CT_{1,1,GNUM(W_n)[1]},…,CT_{L,1,GNUM(W_n)[1]},…,CT_{1,1,GNUM(W_n)[K]},…,CT_{L,1,GNUM(W_n)[K]},CT_{L+1,GNUM(W_n)})

n是1以上且N以下的整数。

CT_{0,GNUM(W_n)}=S’

CT_{j,0,GNUM(W_n)[k]}=F_6(F_5(F_2(TK(i),B_j||j),GNUM(W_n)[k]),S’)+R’_j

CT_{j,1,GNUM(W_n)[k]}=F_6(F_5(F_2(TK(i),*||j),PM(W_n)[k]),S’)+R’_j

j是1以上且L以下的整数,k是1以上且K以下的整数。

R’+=R’_1+…+R’_L

CT_{L+1,GNUM(W_n)}=F_7(R’+)

在不确定登记关键字W_n的情况下,省略“GNUM(W_n)”。该情况下,加密标签CT_{GNUM(W_n)}记作加密标签CT。

在步骤S348中,登记部530将加密数据C和加密标签组CT_GNUM的组登记在数据管理装置700中。

具体而言,登记部530向数据管理装置700发送加密数据C和加密标签组CT_GNUM的组。在数据管理装置700中,受理部710接收加密数据C和加密标签组CT_GNUM的组,将接收到的组存储在存储部791中。即,受理部710将加密数据C和加密标签组CT_GNUM相互对应起来存储在存储部791中。然后,加密数据C和加密标签组CT_GNUM的组保管在存储部791中。

根据图29对检索操作(S350)进行说明。

在检索操作(S350)中,检索操作装置600受理用户密钥UK(i)和检索范围[FROM,TO],输出检索结果{M}。

在步骤S351中,受理部610受理用户密钥UK(i)。

步骤S351与实施方式1中的步骤S151相同(参照图18)。

在步骤S352中,受理部610受理检索范围[FROM,TO]。

“FROM”意味着检索范围的下限值。

“TO”意味着检索范围的上限值。

[FROM,TO]意味着“FROM”以上且“TO”以下的数值。

具体而言,受理部610经由输入输出接口604受理被输入到检索操作装置600的检索范围[FROM,TO]。但是,受理部610也可以从应用程序受理检索范围[FROM,TO]。

在步骤S353中,数值列举部623生成针对检索范围[FROM,TO]的数集合RANGE。

数集合RANGE是包含“FROM”~“TO”的全部数值的集合。

首先,数值列举部623列举[FROM,TO]中包含的全部数值。

然后,数值列举部623对列举出的数值进行泛化。

具体而言,列举出的数值是整数。

在检索范围是[78,111]的情况下,数值列举部623列举78~111这34个整数。然后,数值列举部623将80~89的整数置换成“8?”,将90~99的整数置换成“9?”,将100~109的整数置换成“10?”。其结果是,得到“78”“79”“8?”“9?”“10?”“110”“111”这7个泛化数值。

数集合RANGE能够如下表示。Y是1以上的整数。

RANGE=(RANGE[1],…,RANGE[Y])

在检索范围是[78,111]的情况下,泛化数值RANGE[y]如下所述。y是1以上且Y以下的整数。

RANGE[1]=78

RANGE[2]=79

RANGE[3]=8?

RANGE[4]=9?

RANGE[5]=10?

RANGE[6]=110

RANGE[7]=111

但是,列举出的数值中也可以包含小数。该情况下,事前决定列举到小数第几位为止的数值即可。

在步骤S354中,检索查询生成部624使用标签属性密钥数据TAK(i)和数集合RANGE生成检索查询Q。

检索查询Q具有标志元素Qb_j。

检索查询生成部624如下计算标志元素Qb_j。

首先,检索查询生成部624从标签属性密钥数据TAK(i)中提取标志值Tb_j。

然后,检索查询生成部624在标志元素Qb_j中设定标志值Tb_j。即,标志元素Qb_j与标志值Tb_j相同。

检索查询Q还具有属性关键字元素Q_j[y]。

属性关键字元素Q_j[y]能够如下表示。y是1以上且Y以下的整数。

Q_j=(Q_j[1],…,Q_j[Y])

检索查询生成部624如下计算属性关键字元素Q_j[y]。

首先,检索查询生成部624从标签属性密钥数据TAK(i)中提取标签属性密钥TAK_j。

然后,检索查询生成部624将标签属性密钥TAK_j和泛化数值RANGE[y]作为输入来执行函数F_5。得到的值是属性关键字元素Q_j[y]。

检索查询Q能够如下表示。y是1以上且Y以下的整数。

Q=((Qb_1,Q_1[1],…,Q_1[Y]),…,(Qb_L,Q_L[1],…,Q_L[Y]))

Qb_j=Tb_j

Q_j[y]=F_5(TAK_j,RANGE[y])

在步骤S355中,请求部630向数据管理装置700发送检索查询Q。

步骤S355与实施方式1中的步骤S154相同(参照图18)。

在步骤S356中,请求部630从数据管理装置700接收检索结果{C}。检索结果{C}是命中检索的加密数据C的集合。

步骤S356与实施方式1中的步骤S155相同。

在步骤S357中,解密部640使用数据属性密钥数据DAK(i),根据各加密数据C对明文M进行解密。将明文M的集合称作检索结果{M}。

步骤S357与实施方式1中的步骤S156相同。

在步骤S358中,输出部650输出检索结果{M}。

步骤S358与实施方式1中的步骤S157相同。

根据图30对数据检索(S360)进行说明。

在数据检索(S360)中,数据管理装置700接收检索查询Q,发送加密结果{C}。

在步骤S361中,受理部710从检索操作装置600接收检索查询Q。

步骤S361与实施方式1中的步骤S161相同(参照图19)。

在步骤S362中,核对部724通过将检索查询Q与各加密标签CT进行核对,选择符合检索查询Q的加密标签CT。

关于加密标签CT,省略登记关键字的记号{GNUM(W_n)}。

具体而言,核对部724如下将检索查询Q与各加密标签CT进行核对。y是1以上且Y以下的整数。k是1以上且K以下的整数。

首先,核对部724计算运算值V_1[y,k]。运算值V_1[y,k]在后面叙述。

接着,核对部724将运算值V_1[y,k]作为输入来执行函数F_7。将得到的值称作核对值V_2[y,k]。

然后,核对部724将核对值V_2[y,k]与判定元素CT_{L+1}进行比较。

在核对值V_2[y,k]与判定元素CT_{L+1}一致的情况下,加密标签CT符合检索查询Q。即,与加密标签CT对应的登记数值包含在检索范围内。

核对部724如下计算运算值V_1[y,k]。

首先,核对部724从检索查询Q中提取标志元素Qb_j。j是1以上且L以下的整数。

接着,核对部724根据提取出的标志元素Qb_j,从加密标签CT中选择属性元素的组CTj0或通配符元素的组CTj1。

属性元素的组CTj0和通配符元素的组CTj1分别如下表示。

CTj0=(CT_{j,0,[1]},…,CT_{j,0,[K]})

CTj1=(CT_{j,1,[1]}、CT_{j,1,[K]})

核对部724如下选择属性元素的组CTj0或通配符元素的组CTj1。

在标志元素Qb_j是“0”的情况下,核对部724选择属性元素的组CRj0。在标志元素Qb_j是“1”的情况下,核对部724选择通配符元素的组CRj1。

将选择出的组称作选择元素CTj。

接着,核对部724从检索查询Q中提取属性关键字元素Q_j。

接着,核对部724将属性关键字元素Q_j[y]和随机数元素CT_0作为输入来执行函数F_6。将得到的值称作函数值(CTj[y]^)。

接着,核对部724计算各函数值(CTj[y]^)与选择元素(CTj[k])的异或。将得到的值称作提取随机数(R’j[y,k]^)。

然后,核对部724计算全部层级的提取随机数(R’j[y,k]^)的异或。得到的值是运算值V_1[y,k]。

运算值V_1[y,k]和核对值V_2[y,k]分别能够如下表示。

V_1[y,k]=(F_6(Q_1[y],CT_{0})+CT_{1,Qb_1,[k]})+…+(F_6(Q_L[y],CT_{0})+CT_{L,Qb_L,[k]})

V_2[y,k]=F_7(V_1[y,k])

在满足B≧A且登记数值W_n包含在检索范围[FROM,TO]中的情况下,存在满足以下这种运算值V_1[y,k]的某个整数的组(y,k)。

V_1[y,k]=R’_1+…+R’_L

其结果是,针对该整数的组(y,k),以下的式子成立。

V_2[y,k]=F_7(V_1[y,k])=F_7(R’_1+…+R’_L)=CT_{L+1}

在登记时的数值是“87”且检索范围是[78,111]的情况下,整数y是“3”,整数k是“2”。

在满足B≧A且登记数值W_n未包含在检索范围[FROM,TO]中的情况下,无法正确地复原随机数R’_j,无法得到运算值V_1[y,k]。

在不满足B≧A且登记数值W_n包含在检索范围[FROM,TO]中的情况下,无法正确地复原随机数R’_j,无法得到运算值V_1[y,k]。

因此,针对任何的整数的组(y,k),核对值V_2[y,k](=F_7(V_1[y,k]))与判定元素C_{L+1}(=F_7(R’_1+…+R’_L))一致的概率都非常低。

将在步骤S362中选择出的加密标签CT即符合检索查询Q的加密标签CT称作相符加密标签CT。

在步骤S363中,提取部722提取与相符加密标签CT对应的加密数据C。将提取出的加密数据C称作相符加密数据C

步骤S363与实施方式1中的步骤S163相同(参照图19)。

在步骤S364中,输出部730向检索操作装置600发送加密结果{C}。加密结果{C}是相符加密数据C的集合。

步骤S364与实施方式1中的步骤S164相同(参照图19)。

数据删除(S170)如实施方式1中说明的那样(参照图20)。

在数据删除(S170)中,数据管理装置700删除与删除文件名对应的加密数据C和加密标签CT_W的组。

***实施方式3的效果***

根据实施方式3,在登记数值包含在检索范围中的情况下检索命中。

通过使用泛化的数值,检索查询的尺寸得到削减。

***实施方式的总结***

根据实施方式1,能够进行应对完全一致检索的多用户隐匿检索。

根据实施方式2,能够进行应对部分一致检索的多用户隐匿检索。

根据实施方式3,能够进行应对范围检索的多用户隐匿检索。

***实施方式的补充***

根据图31对主密钥装置200的硬件结构进行说明。

主密钥装置200具有处理电路209。

处理电路209是实现受理部210、生成部220、输出部230和存储部291的硬件。

处理电路209可以是专用硬件,也可以是执行存储器202中存储的程序的处理器201。

在处理电路209是专用硬件的情况下,处理电路209例如是单一电路、复合电路、程序化的处理器、并行程序化的处理器、ASIC、FPGA或它们的组合。

ASIC是Application Specific Integrated Circuit(面向特定用途的集成电路)的简称,FPGA是Field Programmable Gate Array(现场可编程门阵列)的简称。

主密钥装置200也可以具有代替处理电路209的多个处理电路。多个处理电路分担处理电路209的作用。

在主密钥装置200中,也可以是一部分功能通过专用硬件实现,其余功能通过软件或固件实现。

这样,处理电路209能够通过硬件、软件、固件或它们的组合实现。

根据图32对登记密钥装置300的硬件结构进行说明。

登记密钥装置300具有处理电路309。

处理电路309是实现受理部310、生成部320、输出部330和存储部391的硬件。

处理电路309可以是专用硬件,也可以是执行存储器302中存储的程序的处理器301。

在处理电路309是专用硬件的情况下,处理电路309例如是单一电路、复合电路、程序化的处理器、并行程序化的处理器、ASIC、FPGA或它们的组合。

登记密钥装置300也可以具有代替处理电路309的多个处理电路。多个处理电路分担处理电路309的作用。

在登记密钥装置300中,也可以是一部分功能通过专用硬件实现,其余功能通过软件或固件实现。

这样,处理电路309能够通过硬件、软件、固件或它们的组合实现。

根据图33对用户密钥装置400的硬件结构进行说明。

用户密钥装置400具有处理电路409。

处理电路409是实现受理部410、生成部420、输出部430和存储部491的硬件。

处理电路409可以是专用硬件,也可以是执行存储器402中存储的程序的处理器401。

在处理电路409是专用硬件的情况下,处理电路409例如是单一电路、复合电路、程序化的处理器、并行程序化的处理器、ASIC、FPGA或它们的组合。

用户密钥装置400也可以具有代替处理电路409的多个处理电路。多个处理电路分担处理电路409的作用。

在用户密钥装置400中,也可以是一部分功能通过专用硬件实现,其余功能通过软件或固件实现。

这样,处理电路409能够通过硬件、软件、固件或它们的组合实现。

根据图34对登记装置500的硬件结构进行说明。

登记装置500具有处理电路509。

处理电路509是实现受理部510、生成部520、登记部530和存储部591的硬件。

处理电路509可以是专用硬件,也可以是执行存储器502中存储的程序的处理器501。

在处理电路509是专用硬件的情况下,处理电路509例如是单一电路、复合电路、程序化的处理器、并行程序化的处理器、ASIC、FPGA或它们的组合。

登记装置500也可以具有代替处理电路509的多个处理电路。多个处理电路分担处理电路509的作用。

在登记装置500中,也可以是一部分功能通过专用硬件实现,其余功能通过软件或固件实现。

这样,处理电路509能够通过硬件、软件、固件或它们的组合实现。

根据图35对检索操作装置600的硬件结构进行说明。

检索操作装置600具有处理电路609。

处理电路609是实现受理部610、生成部620、请求部630、解密部640、输出部650和存储部691的硬件。

处理电路609可以是专用硬件,也可以是执行存储器602中存储的程序的处理器601。

在处理电路609是专用硬件的情况下,处理电路609例如是单一电路、复合电路、程序化的处理器、并行程序化的处理器、ASIC、FPGA或它们的组合。

检索操作装置600也可以具有代替处理电路609的多个处理电路。多个处理电路分担处理电路609的作用。

在检索操作装置600中,也可以是一部分功能通过专用硬件实现,其余功能通过软件或固件实现。

这样,处理电路609能够通过硬件、软件、固件或它们的组合实现。

根据图36对数据管理装置700的硬件结构进行说明。

数据管理装置700具有处理电路709。

处理电路709是实现受理部710、检索部720、输出部730和存储部791的硬件。

处理电路709可以是专用硬件,也可以是执行存储器702中存储的程序的处理器701。

在处理电路709是专用硬件的情况下,处理电路709例如是单一电路、复合电路、程序化的处理器、并行程序化的处理器、ASIC、FPGA或它们的组合。

数据管理装置700也可以具有代替处理电路709的多个处理电路。多个处理电路分担处理电路709的作用。

在数据管理装置700中,也可以是一部分功能通过专用硬件实现,其余功能通过软件或固件实现。

这样,处理电路709能够通过硬件、软件、固件或它们的组合实现。

实施方式只是优选方式的例示,并非意图限制本发明的技术范围。实施方式可以部分地实施,也可以与其他方式组合实施。使用流程图等说明的顺序可以适当变更。

标号说明

100:隐匿检索系统;101:网络;200:主密钥装置;201:处理器;202:存储器;203:辅助存储装置;204:输入输出接口;205:通信装置;209:处理电路;210:受理部;220:生成部;230:输出部;291:存储部;300:登记密钥装置;301:处理器;302:存储器;303:辅助存储装置;304:输入输出接口;305:通信装置;309:处理电路;310:受理部;320:生成部;330:输出部;391:存储部;400:用户密钥装置;401:处理器;402:存储器;403:辅助存储装置;404:输入输出接口;405:通信装置;409:处理电路;410:受理部;420:生成部;422:属性密钥生成部;430:输出部;491:存储部;500:登记装置;501:处理器;502:存储器;503:辅助存储装置;504:输入输出接口;505:通信装置;509:处理电路;510:受理部;520:生成部;521:随机数生成部;522:加密数据生成部;523:关键字取得部;524:加密标签生成部;525:随机数生成部;526:部分一致关键字生成部;527:加密标签生成部;528:泛化数值生成部;530:登记部;591:存储部;600:检索操作装置;601:处理器;602:存储器;603:辅助存储装置;604:输入输出接口;605:通信装置;609:处理电路;610:受理部;620:生成部;622:检索查询生成部;623:数值列举部;624:检索查询生成部;630:请求部;640:解密部;650:输出部;691:存储部;700:数据管理装置;701:处理器;702:存储器;703:辅助存储装置;704:输入输出接口;705:通信装置;709:处理电路;710:受理部;720:检索部;721:核对部;722:提取部;723:核对部;724:核对部;730:输出部;791:存储部;792:登记数据库。

77页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:显示装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!