登记装置、服务器装置、隐匿检索系统、隐匿检索方法、登记程序及服务器程序 |
|||||||
申请号 | CN201880092550.7 | 申请日 | 2018-05-08 | 公开(公告)号 | CN112042150A | 公开(公告)日 | 2020-12-04 |
申请人 | 三菱电机株式会社; | 发明人 | 平野贵人; 川合丰; 小关义博; | ||||
摘要 | 登记装置(200)利用登记密钥对关键字进行加密而生成加密关键字,生成包括加密关键字和用于识别对应的密文的识别信息的索引,根据登记密钥和检索密钥生成变换密钥,将多个密文、索引以及变换密钥登记到 服务器 装置(400)。检索装置(300)对关键字进行加密而生成检索查询,将检索查询发送给服务器装置(400)。服务器装置(400)利用登记的变换密钥对检索查询进行重加密,生成重加密关键字,利用重加密关键字检索登记的索引,如果作为检索结果得到加密关键字,则从索引取得识别信息,从所登记的多个密文中提取通过识别信息识别的密文,将提取出的密文发送给检索装置(300)。 | ||||||
权利要求 | 1.一种登记装置,具备: |
||||||
说明书全文 | 登记装置、服务器装置、隐匿检索系统、隐匿检索方法、登记程序及服务器程序 技术领域[0001] 本发明涉及登记装置、服务器装置、隐匿检索系统、隐匿检索方法、登记程序以及服务器程序。 背景技术[0003] 隐匿检索还被称为可检索加密。隐匿检索是能够检索加密状态的数据的加密技术。实际上,并不检索加密数据自身。事先从检索对象的数据提取出关联的关键字,使用能够检索该关键字的特殊的加密技术进行加密。然后,利用检索查询对该加密关键字进行检 索。检索查询是指加密后的检索用的关键字。 [0004] 隐匿检索有共享密钥方式和公开密钥方式。在共享密钥方式中,利用共享密钥加密技术,限定登记者以及检索者。在公开密钥方式中,利用公开密钥加密技术,限定检索者,但不限定登记者。登记者是登记加密数据的用户,检索者是检索加密数据的用户。 [0005] 隐匿检索有标签型和索引型。在标签型中,对作为密文的数据附加可检索的加密关键字。由于对1个密文对应关联多个关键字,所以检索速度慢。在索引型中,针对每个加密关键字关联有作为密文的数据。由于对1个关键字对应关联多个密文,所以检索速度快。 [0007] 在共享密钥方式中,通常能够实现高速的隐匿检索,但无法实现访问控制。在公开密钥方式中,通常能够实现访问控制,但无法实现高速的隐匿检索。 [0008] 在共享密钥方式中,通常,登记者和检索者共享彼此相同的秘密信息。在非专利文献1中公开有为了降低秘密信息的共享成本和秘密信息泄漏时的影响度,登记者和检索者不共享彼此相同的秘密信息的共享密钥方式。 [0009] 在非专利文献1中还公开了多用户型共享密钥方式。在多用户型共享密钥方式中,能够设定许可检索的用户和不许可检索的用户。即,在多用户型共享密钥方式中,在具有彼此不同的秘密信息的多个用户利用相同的关键字进行检索的情况下,可能产生在某些用户 的检索中命中、但在其他用户的检索中不命中的加密数据。 [0010] 现有技术文献 [0011] 专利文献 [0012] 专利文献1:日本特开2010-061103号公报 [0013] 专利文献2:日本特开2016-012897号公报 [0014] 专利文献3:日本特开2017-037180号公报 [0015] 非专利文献 [0016] 非专利文献1:R.A.Popa,N.Zeldovich,“Multi-Key Searchable Encryption”,IACR Cryptology ePrint Archive:Report 2013/508 发明内容[0017] 在非专利文献1记载的技术中,使用多个密钥实现了访问控制,但由于方式是标签型,所以可以说是基于共享密钥,效率较差。 [0019] 本发明的目的在于提高能够进行访问控制的隐匿检索的高速化以及通用性。 [0020] 本发明的一个方案提供一种登记装置,具备: [0021] 索引生成部,利用登记密钥对与多个密文中的一个以上的密文对应的关键字进行加密,生成加密关键字,生成包括所生成的加密关键字和用于识别所述一个以上的密文的 识别信息的索引; [0022] 密钥生成部,根据所述登记密钥和由检索装置用于加密的检索密钥生成由服务器装置用于代理重加密的变换密钥,所述检索装置对在检索中使用的关键字进行加密而生成 检索查询,所述服务器装置对所述检索查询进行重加密而生成重加密关键字,并利用所述 重加密关键字检索所述索引;以及 [0023] 登记部,将所述多个密文、由所述索引生成部生成的索引以及由所述密钥生成部生成的变换密钥发送给所述服务器装置。 [0024] 本发明的一个方案提供一种服务器装置,具备: [0025] 第1接收部,接收多个密文、索引以及变换密钥,所述索引由利用登记密钥对与一个以上的密文对应的关键字进行加密而生成加密关键字的登记装置生成,包括所述加密关 键字和用于识别所述一个以上的密文的识别信息,所述变换密钥被用于代理重加密,由所 述登记装置根据所述登记密钥和由检索装置用于加密的检索密钥生成,所述检索装置对在 检索中使用的关键字进行加密而生成检索查询; [0026] 管理部,将由所述第1接收部接收到的多个密文、索引以及变换密钥登记到数据库; [0027] 第2接收部,接收所述检索查询; [0028] 检索部,利用由所述管理部登记的变换密钥对由所述第2接收部接收到的检索查询进行重加密,生成重加密关键字,利用所述重加密关键字检索由所述管理部登记的索引,如果作为检索结果得到所述加密关键字,则从所述索引取得所述识别信息,从由所述管理 部登记的多个密文中提取通过所述识别信息识别的密文;以及 [0029] 发送部,将由所述检索部提取出的密文发送给所述检索装置。 [0031] 图1是示出实施方式1的隐匿检索系统的结构的框图。 [0032] 图2是示出实施方式1的登记装置的结构的框图。 [0033] 图3是示出实施方式1的检索装置的结构的框图。 [0034] 图4是示出实施方式1的服务器装置的结构的框图。 [0035] 图5是示出实施方式1的登记装置的动作的流程图。 [0036] 图6是示出实施方式1的索引的例子的表。 [0037] 图7是示出实施方式1的索引的例子的表。 [0038] 图8是示出实施方式1的服务器装置的动作的流程图。 [0039] 图9是示出实施方式1的登记装置的动作的流程图。 [0040] 图10是示出实施方式1的服务器装置的动作的流程图。 [0041] 图11是示出实施方式1的检索装置的动作的流程图。 [0042] 图12是示出实施方式1的服务器装置的动作的流程图。 [0043] 图13是示出实施方式1的检索装置的动作的流程图。 [0044] 图14是示出实施方式1的隐匿检索系统的数据流的图。 [0045] 图15是示出实施方式1的索引的例子的表。 [0046] 图16是示出实施方式1的索引的例子的表。 [0047] 图17是示出实施方式1的登记装置的结构的框图。 [0048] 图18是示出实施方式1的检索装置的结构的框图。 [0049] 图19是示出实施方式1的服务器装置的结构的框图。 [0050] 图20是示出实施方式1的数据的访问权限信息和对应的加密密钥以及登记密钥的例子的表。 [0051] 图21是示出实施方式1的分发给检索者的检索密钥的例子的表。 [0052] (符号说明) [0053] 100:隐匿检索系统;101:网络;200:登记装置;201:处理器;202:存储器;203:辅助存储装置;204:输入输出接口;205:通信装置;209:电子电路;210:输入部;220:密文生成部;230:索引生成部;240:密钥生成部;250:分发部;260:登记部;300:检索装置;300a:检索装置;300b:检索装置;301:处理器;302:存储器;303:辅助存储装置;304:输入输出接口;305:通信装置;309:电子电路;310:取得部;320:输入部;330:加密部;340:请求部;350:解密部;360:输出部;400:服务器装置;401:处理器;402:存储器;403:辅助存储装置;404:输入输出接口;405:通信装置;409:电子电路;410:第1接收部;420:管理部;430:第2接收部; 440:检索部;450:发送部;460:数据库;461:数据库;462:数据库。 具体实施方式[0054] 以下,使用附图,说明本发明的实施方式。在各图中,对同一或者相当的部分附加同一符号。在实施方式的说明中,关于同一或者相当的部分,适当省略或者简化说明。此外,本发明不限于以下说明的实施方式,能够根据需要进行各种变更。例如,以下说明的实施方式也可以部分地实施。 [0055] 实施方式1. [0056] 使用图1至图16,说明本实施方式。 [0057] ***结构的说明*** [0058] 参照图1,说明本实施方式的隐匿检索系统100的结构。 [0059] 隐匿检索系统100具备登记装置200、检索装置300以及服务器装置400。 [0060] 隐匿检索系统100的各装置经由因特网等网络101彼此进行通信。 [0061] 参照图2,说明本实施方式的登记装置200的结构。 [0062] 登记装置200是计算机。具体而言,登记装置200是由登记者利用的PC等终端。“PC”是个人计算机(Personal Computer)的简称。登记装置200具备处理器201,并且具备存储器202、辅助存储装置203、输入输出接口204以及通信装置205之类的其他硬件。处理器201经由信号线与其他硬件连接,控制这些其他硬件。 [0063] 在登记装置200中,作为功能要素具备输入部210、密文生成部220、索引生成部230、密钥生成部240、分发部250以及登记部260。输入部210、密文生成部220、索引生成部 230、密钥生成部240、分发部250以及登记部260的功能通过软件实现。具体而言,输入部 210、密文生成部220、索引生成部230、密钥生成部240、分发部250以及登记部260的功能通过登记程序实现。登记程序是使计算机将由输入部210、密文生成部220、索引生成部230、密钥生成部240、分发部250以及登记部260执行的过程分别作为输入过程、密文生成过程、索引生成过程、密钥生成过程、分发过程以及登记过程来执行的程序。登记程序既可以记录于计算机可读取的介质来提供,也可以储存于记录介质来提供,还可以作为程序产品提供。 [0064] 处理器201是执行登记程序的装置。处理器201例如是CPU。“CPU”是中央处理单元(Central Processing Unit)的简称。 [0065] 存储器202是临时存储登记程序的装置。存储器202例如是RAM、闪存存储器或者它们的组合。“RAM”是随机存储存储器(Random Access Memory)的简称。 [0067] 输入输出接口204是连接未图示的输入设备以及显示器的端口。输入输出接口204例如是USB端子。“USB”是通用串行总线(Universal Serial Bus)的简称。输入设备是为了向登记程序输入数据而由登记者操作的设备。输入设备例如是鼠标、键盘、触摸面板、或者它们中的几个或者全部的组合。显示器是用于将从登记程序输出的数据显示于画面的设 备。显示器例如是LCD。“LCD”是液晶显示器(Liquid Crystal Display)的简称。 [0068] 通信装置205具备:接收机,接收输入到登记程序的数据;以及发送机,发送从登记程序输出的数据。通信装置205例如是通信芯片或者NIC。“NIC”是网络接口卡(Network Interface Card)的简称。 [0069] 登记程序被从辅助存储装置203载入到存储器202,从存储器202被读入到处理器201,由处理器201执行。在辅助存储装置203中不仅存储有登记程序,而且还存储有OS。“OS”是操作系统(Operating System)的简称。处理器201执行OS,并且执行登记程序。此外,也可以将登记程序的一部分或者全部嵌入到OS。登记程序以及OS也可以预先存储于存储器202,在该情况下,能够省略辅助存储装置203。 [0070] 登记装置200也可以具备代替处理器201的多个处理器。这多个处理器分担执行登记程序。各个处理器例如是CPU。 [0071] 由登记程序利用、处理或者输出的数据、信息、信号值以及变量值被存储于辅助存储装置203、存储器202、或者处理器201内的寄存器或高速缓存存储器。 [0072] 登记装置200既可以包括1台计算机,也可以包括多台计算机。在登记装置200包括多台计算机的情况下,输入部210、密文生成部220、索引生成部230、密钥生成部240、分发部 250以及登记部260的功能也可以分散到各计算机来实现。 [0073] 参照图3,说明本实施方式的检索装置300的结构。 [0074] 检索装置300是计算机。具体而言,检索装置300是由检索者利用的PC等终端。检索装置300具备处理器301,并且具备存储器302、辅助存储装置303、输入输出接口304以及通信装置305之类的其他硬件。处理器301经由信号线与其他硬件连接,控制这些其他硬件。 [0075] 在检索装置300中,作为功能要素而具备取得部310、输入部320、加密部330、请求部340、解密部350以及输出部360。取得部310、输入部320、加密部330、请求部340、解密部350以及输出部360的功能通过软件实现。具体而言,取得部310、输入部320、加密部330、请求部340、解密部350以及输出部360的功能通过检索程序实现。检索程序是使计算机将由取得部310、输入部320、加密部330、请求部340、解密部350以及输出部360进行的过程分别作为取得过程、输入过程、加密过程、请求过程、解密过程以及输出过程来执行的程序。检索程序既可以记录于计算机可读取的介质来提供,也可以储存于记录介质来提供,还可以作为 程序产品提供。 [0076] 处理器301是执行检索程序的装置。处理器301例如是CPU。 [0077] 存储器302是临时存储检索程序的装置。存储器302例如是RAM、闪存存储器或者它们的组合。 [0078] 辅助存储装置303是预先存储检索程序的装置。辅助存储装置303例如是HDD、闪存存储器或者它们的组合。 [0079] 输入输出接口304是用于连接未图示的输入设备以及显示器的端口。输入输出接口304例如是USB端子。输入设备是为了向检索程序输入数据而由检索者操作的设备。输入 设备例如是鼠标、键盘、触摸面板、或者它们中的几个或全部的组合。显示器是将从检索程序输出的数据显示于画面的设备。显示器例如是LCD。 [0080] 通信装置305具备:接收机,接收输入到检索程序的数据;以及发送机,发送从检索程序输出的数据。通信装置305例如是通信芯片或者NIC。 [0081] 检索程序被从辅助存储装置303载入到存储器302,从存储器302被读入到处理器301,由处理器301执行。在辅助存储装置303中不仅存储有检索程序,而且还存储有OS。处理器301执行OS,并且执行检索程序。此外,也可以将检索程序的一部分或者全部嵌入到OS。检索程序以及OS也可以预先存储于存储器302,在该情况下,能够省略辅助存储装置303。 [0082] 检索装置300也可以具备代替处理器301的多个处理器。这些多个处理器分担执行检索程序。各个处理器例如是CPU。 [0083] 由检索程序利用、处理或者输出的数据、信息、信号值以及变量值被存储于辅助存储装置303、存储器302、或者处理器301内的寄存器或高速缓存存储器。 [0084] 检索装置300既可以包括1台计算机,也可以包括多台计算机。在检索装置300包括多台计算机的情况下,取得部310、输入部320、加密部330、请求部340、解密部350以及输出部360的功能也可以分散到各计算机来实现。 [0085] 参照图4,说明本实施方式的服务器装置400的结构。 [0086] 服务器装置400是计算机。具体而言,服务器装置400是云服务器。服务器装置400具备处理器401,并且具备存储器402、辅助存储装置403、输入输出接口404以及通信装置 405之类的其他硬件。处理器401经由信号线与其他硬件连接,控制这些其他硬件。 [0087] 在服务器装置400中,作为功能要素而具备第1接收部410、管理部420、第2接收部430、检索部440以及发送部450。第1接收部410、管理部420、第2接收部430、检索部440以及发送部450的功能通过软件实现。具体而言,第1接收部410、管理部420、第2接收部430、检索部440以及发送部450的功能通过服务器程序实现。服务器程序是使计算机将由第1接收部 410、管理部420、第2接收部430、检索部440以及发送部450进行的过程分别作为第1过程、管理过程、第2过程、检索过程以及发送过程来执行的程序。服务器程序既可以记录于计算机可读取的介质来提供,也可以储存于记录介质来提供,还可以作为程序产品提供。 [0088] 处理器401是执行服务器程序的装置。处理器401例如是CPU。 [0089] 存储器402是临时存储服务器程序的装置。存储器402例如是RAM、闪存存储器或者它们的组合。 [0090] 辅助存储装置403是预先存储服务器程序的装置。辅助存储装置403例如是HDD、闪存存储器或者它们的组合。 [0091] 在辅助存储装置403中构筑数据库460。此外,也可以在存储器402中构筑数据库460。 [0092] 输入输出接口404是连接未图示的输入设备以及显示器的端口。输入输出接口404例如是USB端子。输入设备是为了向服务器程序输入数据而由服务器管理者操作的设备。输入设备例如是鼠标、键盘、触摸面板、或者它们中的几个或全部的组合。显示器是将从服务器程序输出的数据显示于画面的设备。显示器例如是LCD。 [0093] 通信装置405具备:接收机,接收输入到服务器程序的数据;以及发送机,发送从服务器程序输出的数据。通信装置405例如是通信芯片或者NIC。 [0094] 服务器程序被从辅助存储装置403载入到存储器402,从存储器402被读入到处理器401,由处理器401执行。在辅助存储装置403中不仅存储有服务器程序,而且还存储有OS。 处理器401执行OS,并且执行服务器程序。此外,也可以将服务器程序的一部分或者全部嵌入到OS。服务器程序以及OS也可以预先存储到存储器402,在该情况下,能够省略辅助存储装置403。 [0095] 服务器装置400也可以具备代替处理器401的多个处理器。这些多个处理器分担执行服务器程序。各个处理器例如是CPU。 [0096] 由服务器程序利用、处理或者输出的数据、信息、信号值以及变量值被存储于辅助存储装置403、存储器402、或者处理器401内的寄存器或高速缓存存储器。 [0097] 服务器装置400既可以包括1台计算机,也可以包括多台计算机。在服务器装置400包括多台计算机的情况下,第1接收部410、管理部420、第2接收部430、检索部440以及发送部450的功能也可以分散到各计算机来实现。 [0098] ***动作的说明*** [0099] 参照图5至图14,说明本实施方式的隐匿检索系统100的动作。隐匿检索系统100的动作与本实施方式的隐匿检索方法相当。 [0100] 图5示出登记装置200将多个密文和索引登记到服务器装置400的动作。 [0101] 在步骤S11中,输入部210受理多个明文的输入。具体而言,输入部210经由输入输出接口204,受理明文D1、D2、D3、…的输入。在本实施方式中,输入部210还受理属性集合S1、S2、…的输入,属性集合表示许可哪些检索者访问各个明文。 [0102] 在步骤S12中,密文生成部220利用加密密钥对输入到输入部210的多个明文进行加密,生成多个密文。具体而言,密文生成部220利用加密密钥EK1对明文D1进行加密,将通过加密得到的数据作为密文C1写入到存储器202。密文生成部220利用加密密钥EK1对明文 D2进行加密,将通过加密得到的数据作为密文C2写入到存储器202。密文生成部220利用加 密密钥EK2对明文D3进行加密,将通过加密得到的数据作为密文C3写入到存储器202。各加 密密钥预先存储于辅助存储装置203、或者经由输入输出接口204适当输入。预先指定、或者在输入明文时或输入加密密钥时指定在哪个明文的加密中使用哪个加密密钥。在本实施方 式中,根据在步骤S11中输入的属性集合决定在哪个明文的加密中使用哪个加密密钥。 [0103] 在步骤S13中,输入部210受理与输入到输入部210的多个明文中的1个以上的明文对应的关键字的输入。即,输入部210受理与输入到输入部210的多个密文中的一个以上的 密文对应的关键字的输入。具体而言,输入部210经由输入输出接口204受理关键字W1、W2、W3、…的输入。关键字W1与明文D1对应。即,关键字W1与密文C1对应。关键字W2与明文D1以及明文D2对应。即,关键字W2与密文C1以及密文C2对应。关键字W3与明文D3对应。即,关键字W3与密文C3对应。各关键字既可以针对明文手动设定,也可以从明文中自动提取。 [0104] 在步骤S14中,索引生成部230利用登记密钥对输入到输入部210的关键字进行加密,生成加密关键字。具体而言,索引生成部230将关键字W1的散列值和预先决定的值g提供给配对函数e,计算以从配对函数e得到的值为底、以登记密钥SK1为指数的乘方,将计算结果作为加密关键字V1写入到存储器202。索引生成部230将关键字W2的散列值和值g提供给 配对函数e,计算以从配对函数e得到的值为底、以登记密钥SK1为指数的乘方,将计算结果作为加密关键字V2写入到存储器202。索引生成部230将关键字W2的散列值和值g提供给配 对函数e,计算以由配对函数e得到的值为底、以登记密钥SK2为指数的乘方,将计算结果作为加密关键字V3写入到存储器202。索引生成部230将关键字W3的散列值和值g提供给配对 函数e,计算以由配对函数e得到的值为底、以登记密钥SK2为指数的乘方,将计算结果作为加密关键字V4写入到存储器202。各登记密钥与各加密密钥成对,与各加密密钥相同地预先存储于辅助存储装置203或者经由输入输出接口204而适当输入。根据利用哪个加密密钥对 与关键字对应的明文进行了加密,决定在哪个关键字的加密中使用哪个登记密钥。 [0105] 图20示出数据的访问权限信息、对应的加密密钥及登记密钥的例子。在该例子中,设为明文D1和明文D2与属性集合S1对应,明文D3与属性集合S2对应。即,设为许可属于属性集合S1的检索者Pa以及检索者Pb访问明文D1以及明文D2,仅许可属于属性集合S2的检索者Pb访问明文D3。在步骤S12中,作为与属性集合S1和属性集合S2对应的加密密钥以及登记密钥的配对,分别生成加密密钥EK1与登记密钥SK1的配对和加密密钥EK2与登记密钥SK2的配 对。加密密钥EK1与登记密钥SK1的配对与属性集合S1关联对应来保管。加密密钥EK2与登记密钥SK2的配对与属性集合S2关联对应来保管。在已经使用相同的属性集合登记有加密密 钥与登记密钥的配对的情况下,不生成加密密钥与登记密钥的配对,而读出所保管的加密 密钥与登记密钥。 [0106] 在步骤S15中,索引生成部230生成包括在步骤S14中生成的加密关键字和用于识别对应的一个以上的密文的识别信息的索引。具体而言,索引生成部230生成索引,如图6所示,在该索引中,作为1个条目包括加密关键字V1和明文D1的标识符的组合,作为其他条目包括加密关键字V2、明文D1和明文D2的标识符的组合。索引生成部230生成索引,在该索引中,如图7所示,作为1个条目包括加密关键字V3和明文D3的标识符的组合,作为其他条目包括加密关键字V4和明文D3的标识符的组合。此外,虽然也能够直接应用图6以及图7所示的 索引的构造,但为了确保针对频度分析的安全性,最好应用如后述的图15以及图16所示的 索引。 [0107] 在步骤S16中,登记部260将由密文生成部220生成的多个密文和由索引生成部230生成的索引发送给服务器装置400。具体而言,登记部260如图14所示地将密文C1和密文C2 以及图6的索引一起发送给服务器装置400。登记部260将密文C3和图7的索引一起发送给服 务器装置400。 [0108] 图8示出服务器装置400将多个密文和索引登记到数据库460的动作。 [0109] 在步骤S21中,第1接收部410接收从登记装置200发送的多个密文和索引。具体而言,第1接收部410如图14所示地从登记装置200一起接收密文C1和密文C2以及图6的索引。 第1接收部410从登记装置200一起接收密文C3和图7的索引。 [0110] 在步骤S22中,管理部420将由第1接收部410接收到的多个密文和索引登记到数据库460。具体而言,管理部420如图14所示地将密文C1和密文C2以及图6的索引登记到数据库 461。管理部420将密文C3和图7的索引登记到数据库461。此外,最好如本实施方式所述地,将数据库460分成密文和索引的数据库461和后述变换密钥的数据库462,但也可以合并为1 个。 [0111] 图9示出登记装置200将变换密钥登记到服务器装置400并且将检索密钥分发给检索装置300的动作。 [0112] 在步骤S31中,密钥生成部240根据登记密钥和由检索装置300在加密中使用的检索密钥,生成由服务器装置400在代理重加密中使用的变换密钥。具体而言,密钥生成部240计算以上述值g为底、以登记密钥SK1除以检索密钥Ka而得到的值为指数的乘方,将计算结 果作为变换密钥K1a写入到存储器202。密钥生成部240计算以值g为底、以登记密钥SK1除以检索密钥Kb而得到的值为指数的乘方,将计算结果作为变换密钥K1b写入到存储器202。密 钥生成部240计算以值g为底、以登记密钥SK2除以检索密钥Kb而得到的值为指数的乘方,将计算结果作为变换密钥K2b写入到存储器202。各检索密钥预先存储于辅助存储装置203、或者经由输入输出接口204适当输入。预先指定、或者在输入登记密钥时或输入检索密钥时指定将哪个检索密钥与哪个登记密钥组合。如果使用根据某个登记密钥和某个检索密钥的组 合生成的变换密钥,则不对利用该检索密钥加密后的关键字进行解密,而能够变换为利用 该登记密钥加密后的关键字。在图20的例子中,包含于属性集合S1的检索者Pa和检索者Pb 能够检索由登记密钥SK1生成的索引。因此,以能够利用预定分发给检索者Pa的检索密钥Ka和预定分发给检索者Pb的检索密钥Kb分别进行检索的方式,分别生成对应的变换密钥K1a 以及变换密钥K1b。仅包含于属性集合S2的检索者Pb能够检索由登记密钥SK2生成的索引。 因此,以能够利用预定分发给检索者Pb的检索密钥Kb进行检索的方式,生成与检索密钥Kb 对应的变换密钥K2b。 [0113] 在步骤S32中,登记部260将由密钥生成部240生成的变换密钥发送给服务器装置400。具体而言,如图14所示,登记部260将变换密钥K1a、K1b、K2b、…发送给服务器装置400。 [0114] 在步骤S33中,分发部250将由密钥生成部240在生成变换密钥时使用的检索密钥发送给检索装置300。具体而言,如图14所示,分发部250将检索密钥Ka发送给检索者Pa的检索装置300即检索装置300a。分发部250将检索密钥Kb发送给检索者Pb的检索装置300即检 索装置300b。图21示出分发给检索者的检索密钥的例子。在该例子中,向检索者Pa分发检索密钥Ka,向检索者Pb分发检索密钥Kb。这样,检索密钥针对每个检索者不同。 [0115] 步骤S33的处理也可以在步骤S31的处理之前进行。 [0116] 图10示出服务器装置400将变换密钥登记到数据库460的动作。 [0117] 在步骤S41中,第1接收部410接收从登记装置200发送的变换密钥。具体而言,第1接收部410如图14所示地从登记装置200接收变换密钥K1a、K1b、K2b、…。 [0118] 在步骤S42中,管理部420将由第1接收部410接收到的变换密钥登记到数据库460。具体而言,管理部420如图14所示地将变换密钥K1a、K1b、K2b、…登记到数据库462。如上所述,在本实施方式中,数据库460分成密文和索引的数据库461和变换密钥的数据库462。 [0119] 图11示出检索装置300向服务器装置400送出检索查询而请求检索的动作。 [0120] 在步骤S51中,取得部310接收从登记装置200发送的检索密钥。具体而言,检索装置300a的取得部310如图14所示地从登记装置200接收检索密钥Ka。或者,检索装置300b的 取得部310从登记装置200接收检索密钥Kb。 [0121] 在步骤S52中,输入部320受理在检索中使用的关键字的输入。具体而言,输入部320经由输入输出接口304或者通信装置305受理关键字w的输入。 [0122] 在步骤S53中,加密部330利用由取得部310接收到的检索密钥对输入到输入部320的关键字进行加密,生成检索查询。具体而言,检索装置300a的加密部330计算以关键字w的散列值为底、以检索密钥Ka为指数的乘方,将计算结果作为检索查询Q写入到存储器302。或者,检索装置300b的加密部330计算以关键字w的散列值为底、以检索密钥Kb为指数的乘方,将计算结果作为检索查询Q写入到存储器302。 [0123] 在步骤S54中,请求部340将由加密部330生成的检索查询发送到服务器装置400,请求检索。具体而言,检索装置300a或者检索装置300b的请求部340如图14所示地将检索查询Q发送到服务器装置400。 [0124] 图12示出服务器装置400进行检索的动作。 [0125] 在步骤S61中,第2接收部430接收从检索装置300发送的检索查询。具体而言,第2接收部430如图14所示地从检索装置300a或者检索装置300b接收检索查询Q。 [0126] 在步骤S62中,检索部440利用由管理部420登记的变换密钥对由第2接收部430接收到的检索查询进行重加密,生成重加密关键字。具体而言,如图14所示,检索部440利用登记于数据库462的变换密钥K1a、K1b、K2b、…对从检索装置300a或者检索装置300b发送的检索查询Q进行重加密,将通过代理重加密得到的数据作为重加密关键字v而写入到存储器 402。在变换密钥K1a的情况下,将检索查询Q和变换密钥K1a提供给配对函数e,计算从配对函数e得到的值的散列值,从而进行代理重加密。在变换密钥K1b的情况下,将检索查询Q和变换密钥K1b提供给配对函数e,计算从配对函数e得到的值的散列值,从而进行代理重加 密。在变换密钥K2b的情况下,将检索查询Q和变换密钥K2b提供给配对函数e,计算从配对函数e得到的值的散列值,从而进行代理重加密。 [0127] 在步骤S63中,检索部440利用在步骤S62中生成的重加密关键字来检索由管理部420登记的索引。具体而言,如图14所示,检索部440从登记于数据库461的图6的索引中提取出包括与重加密关键字v一致的加密关键字的条目。检索部440从登记于数据库461的图7的 索引中提取出包括与重加密关键字v一致的加密关键字的条目。 [0128] 如果作为检索结果未得到加密关键字,则检索的动作结束。如果作为检索结果得到加密关键字,则进行步骤S64的处理。在重加密关键字v与加密关键字V1一致的情况下,从图6的索引中提取出作为检索结果包括加密关键字V1的条目。在重加密关键字v与加密关键 字V2一致的情况下,从图6的索引中提取出作为检索结果包括加密关键字V2的条目。在重加密关键字v与加密关键字V3一致的情况下,从图7的索引中提取出作为检索结果包括加密关 键字V3的条目。在重加密关键字v与加密关键字V4一致的情况下,从图7的索引中提取出作 为检索结果包括加密关键字V4的条目。 [0129] 在步骤S64中,检索部440从在步骤S63中作为检索结果得到的包括加密关键字的索引取得识别信息。然后,检索部440从由管理部420登记的多个密文中提取通过所取得的 识别信息识别出的密文。具体而言,如图14所示,在提取出作为检索结果包括加密关键字V1的条目的情况下,由于在该条目中包括明文D1的标识符,所以检索部440提取出登记于数据库461的密文C1。在提取出作为检索结果包括加密关键字V2的条目的情况下,由于在该条目中包括明文D1以及明文D2的标识符,所以检索部440提取出登记于数据库461的密文C1以及 密文C2。在提取出作为检索结果包括加密关键字V3的条目的情况下,由于在该条目中包括 明文D3的标识符,所以检索部440提取出登记于数据库461的密文C3。在提取出作为检索结 果包括加密关键字V4的条目的情况下,由于在该条目中包括明文D3的标识符,所以检索部 440提取出登记于数据库461的密文C3。 [0130] 发送部450将由检索部440提取出的密文发送到检索装置300。具体而言,如图14所示,在关键字w与关键字W1一致的情况下,由于针对从检索装置300a发送的检索查询Q,作为检索结果提取出密文C1,所以发送部450将密文C1发送给检索装置300a。在关键字w与关键 字W2一致的情况下,由于针对从检索装置300a发送的检索查询Q,作为检索结果提取出密文C1以及密文C2,所以发送部450将密文C1以及密文C2发送给检索装置300a。在关键字w与关 键字W3一致的情况下,由于针对从检索装置300a发送的检索查询Q,作为检索结果未提取出密文,所以发送部450不对检索装置300a发送密文。或者,在关键字w与关键字W1一致的情况下,由于针对从检索装置300b发送的检索查询Q,作为检索结果提取出密文C1,所以发送部 450将密文C1发送给检索装置300b。在关键字w与关键字W2一致的情况下,由于针对从检索 装置300b发送的检索查询Q,作为检索结果提取出密文C1以及密文C2,所以发送部450将密 文C1以及密文C2发送给检索装置300b。在关键字w与关键字W3一致的情况下,由于针对从检索装置300b发送的检索查询Q,作为检索结果提取出密文C3,所以发送部450将密文C3发送 给检索装置300b。 [0131] 图13示出检索装置300取得检索结果的动作。 [0132] 在步骤S71中,请求部340接收从服务器装置400发送的密文。具体而言,在关键字w与关键字W1一致的情况下,检索装置300a或者检索装置300b的请求部340从服务器装置400接收密文C1。在关键字w与关键字W2一致的情况下,检索装置300a或者检索装置300b的请求部340从服务器装置400接收密文C1以及密文C2。在关键字w与关键字W3一致的情况下,检索装置300b的请求部340从服务器装置400接收密文C3。 [0133] 在步骤S72中,解密部350利用加密密钥对由请求部340接收到的密文进行解密。具体而言,如果在步骤S71中接收到密文C1,则检索装置300a或者检索装置300b的解密部350 利用加密密钥EK1对密文C1进行解密,将通过解密得到的数据作为明文D1写入到存储器 302。如果在步骤S71中接收到密文C2,则检索装置300a或者检索装置300b的解密部350利用加密密钥EK1对密文C2进行解密,将通过解密得到的数据作为明文D2写入到存储器302。如 果在步骤S71中接收到密文C3,则检索装置300b的解密部350利用加密密钥EK2对密文C3进 行解密,将通过解密得到的数据作为明文D3写入到存储器302。各加密密钥预先存储于辅助存储装置303、或者经由输入输出接口304或通信装置305适当输入。在本实施方式中,在步骤S12以后,将在步骤S12中生成的加密密钥分发给对应的检索者。在图20的例子中,加密密钥EK1被送给检索者Pa以及检索者Pb,加密密钥EK2仅被送给检索者Pb。即,将加密密钥EK1从登记装置200发送给检索装置300a以及检索装置300b,将加密密钥EK2从登记装置200仅 发送给检索装置300b。在步骤S72以前,在检索装置300a以及检索装置300b中接收从登记装置200发送的加密密钥EK1。在步骤S72以前,在检索装置300b中接收从登记装置200发送的 加密密钥EK2。 [0134] 在步骤S73中,输出部360输出由解密部350得到的明文。具体而言,如果在步骤S72中得到明文D1,则检索装置300a或者检索装置300b的输出部360经由输入输出接口204将明文D1显示于画面、或者输出到文件。如果在步骤S72中得到明文D2,则检索装置300a或者检索装置300b的输出部360经由输入输出接口204将明文D2显示于画面、或者输出到文件。如 果在步骤S72中得到明文D3,则检索装置300b的输出部360经由输入输出接口204将明文D3 显示于画面、或者输出到文件。 [0135] 参照图15,说明更具体的索引的生成方法。 [0136] 在步骤S14以及步骤S15中,登记装置200的索引生成部230针对利用登记密钥对输入到输入部210的关键字进行加密而得到的结果数据,分别执行第1变换处理和第2变换处 理。索引生成部230将执行第1变换处理而得到的第1变换数据用作加密关键字。索引生成部 230利用密文标识符对执行第2变换处理而得到的第2变换数据进行编码来生成识别信息。 密文标识符是唯一地表示与输入到输入部210的关键字对应的密文的组合的数据。 [0137] 在本实施方式中,第1变换处理是如下处理:对结果数据连结第1值,计算连结第1值后的数据的散列值作为第1变换数据。第2变换处理是如下处理:对结果数据连结与第1值不同的第2值,计算连结第2值后的数据的散列值作为第2变换数据。 [0138] 此外,第1变换处理和第2变换处理只要是彼此不同的处理即可,能够实施各种变形例。在1个例子中,第1变换处理是通过第1散列函数将结果数据变换为作为散列值的第1 变换数据的处理。第2变换处理是通过与第1散列函数不同的第2散列函数将结果数据变换 为作为散列值的第2变换数据的处理。 [0139] 在本实施方式中,第2变换数据的编码是通过计算第2变换数据和密文标识符的异或作为识别信息而进行的。 [0140] 定义以下的符号。 [0141] λ:保密参数 [0142] W:登记时的关键字 [0143] w:检索时的关键字 [0144] D:明文 [0145] G1、G2、GT:循环组 [0146] H1、H2:散列函数 [0147] e:配对函数 [0148] G1、G2、GT都具有大的素数p作为位数。G2的生成源是g。即,gx≠1(1≤x≤p-1)并且gp=1。 [0149] 散列函数H1、H2是如以下所述的函数。 [0150] H1:{0,1}*→G1({0,1}*是任意的比特列) [0151] H2:{0,1}*→{0,1}λ [0152] 配对函数e是如以下所述的函数。 [0153] e:G1×G2→GT [0154] e(H(w)x,gy)=e(H(w),g)xy成立。 [0155] 具体的索引的生成的过程如以下所述。 [0156] 1.从明文D1、…、Dn中提取出不同的关键字W1、…、WL。L是正整数。 [0157] 2.生成与密钥sk_S对应的索引ind_S={(关键字、标识符)}。其中,该S意味着表示被许可访问明文D1、…、Dn的检索者的属性信息的集合。例如,在许可检索者Pa以及检索者Pb访问明文D1、…、Dn的情况下,S={Pa,Pb}。在该情况下,在使用图20的例子时,S=S1、sk_S=SK1。 [0158] 3.用矢量表现与各关键字对应的标识符。例如,在明文数n=5、散列函数H2的输出比特长λ=10时,明文D1、明文D3以及明文D5与关键字W1对应被表现为 [0159] (1,0,1,0,1,0,0,0,0,0) [0160] 明文D2以及明文D3与关键字WL对应被表现为 [0161] (0,1,1,0,0,0,0,0,0,0) [0162] 即,各矢量的顺序与命中的明文的标识符对应,在明文D1、明文D3以及明文D5的标识符命中的情况下,矢量的第1个、第3个以及第5个分量为1,其以外的分量全部为0。此时,构成ind_S={(W1,(1,0,1,0,1,0,0,0,0,0)),…,(WL,(0,1,1,0,0,0,0,0,0,0))}。 [0163] 4.针对各Wi(1≤i≤L),使用配对函数e和散列函数H1、H2,计算以下的t{i,0}以及t{i,1}。 [0164] t{i,0}=H2(e(H1(Wi),gsk_S)||0) [0165] t{i,1}=H2(e(H1(Wi),gsk_S)||1) [0166] “||”表示连结。t{i,0}的计算相当于第1变换处理。t{i,1}的计算相当于第2变换处理。在该例子中,设第1值为0、第2值为1。此外,散列函数H1和散列函数H2也可以是相同的函数。 [0167] 5.针对各i(1≤i≤L),将t{i,1}的散列值设为矢量表现。例如,如果t{1,1}=1010101010,则其被表现为 [0168] (1,0,1,0,1,0,1,0,1,0) [0169] 如果t{L,1}=1111100000,则其被表现为 [0170] (1,1,1,1,1,0,0,0,0,0) [0171] 6.针对各Wi(1≤i≤L)的标识符,计算矢量表现的t{i,1}和各分量的异或。例如,关于W1,计算 [0172] (1,0,1,0,1,0,0,0,0,0)+(1,0,1,0,1,0,1,0,1,0)=(0,0,0,0,0,0,1,0,1,0)。 [0173] 将该计算的矢量定义为T{1,1}。关于WL,计算 [0174] (0,1,1,0,0,0,0,0,0,0)+(1,1,1,1,1,0,0,0,0,0)=(1,0,0,1,1,0,0,0,0,0)。 [0175] 将该计算的矢量定义为T{L,1}。 [0176] 7.如图15所示,更新ind_S,输出IND_S=(ind_S,S)。 [0177] 参照图16,说明与上述的索引的生成方法对应的、索引的检索方法。 [0178] 在步骤S62至步骤S64中,服务器装置400的检索部440针对对从检索装置300发送的检索查询进行重加密而得到的结果数据,分别执行第1变换处理和第2变换处理。检索部 440将执行第1变换处理而得到的第1变换数据用作重加密关键字。如果作为检索结果得到 加密关键字,则检索部440利用识别信息对执行第2变换处理而得到的第2变换数据进行解 码,取得密文标识符。然后,检索部440从由管理部420登记的多个密文中提取通过所取得的密文标识符表示的组合中包含的密文。 [0179] 如上所述,在本实施方式中,第1变换处理是如下处理:对结果数据连结第1值,计算连结第1值后的数据的散列值作为第1变换数据。第2变换处理是如下处理:对结果数据连结与第1值不同的第2值,计算连结第2值后的数据的散列值作为第2变换数据。 [0180] 在本实施方式中,第2变换数据的解码是通过计算第2变换数据和识别信息的异或作为密文标识符而进行的。 [0181] 具体的索引的检索的过程如以下所述。 [0182] 1.针对检索查询q_U和变换密钥ck_U,使用配对函数e和散列函数H1、H2,计算以下的t0以及t1。 [0183] t0=H2(e(q_U,ck_U)||1)=H2(e(H1(w),gsk_S)||0) [0184] t1=H2(e(q_U,ck_U)||1)=H2(e(H1(w),gsk_S)||1) [0185] 2.针对索引ind_S={(key,value)},使用二进制比较等检查是否有t0=key的key。 [0186] 3.如果没有,则输出为ID=0(空集合)。如果有,则针对(key,value)和与该key对应的value,计算矢量表现t1的值和value的异或,将与分量为1的部分对应的标识符全部包含到ID中,输出ID。例如,设ind_S如图16所示,设t{1,0}=t0并且t1=(1,0,1,0,1,0,1,0,1,0)。此时,针对每个分量,计算与t{1,0}对应的(0,0,0,0,0,0,1,0,1,0)和t1=(1,0,1,0, 1,0,1,0,1,0)的异或,得到(1,0,1,0,1,0,0,0,0,0)。因此,将明文D1、明文D3以及明文D5的标识符包含到ID中,输出ID。 [0187] 通过应用如上述的索引技术,能够提高安全性。 [0188] ***实施方式的效果的说明*** [0189] 在本实施方式中,在使用多个密钥实现访问控制的同时,在方式上应用索引型,所以能够实现隐匿检索的高速化。另外,由于能够应用大多数的基于共享密钥的索引方式,所以通用性高。 [0190] 在本实施方式中,特别地,能够使用公开密钥加密技术和多个私钥,实现基于共享密钥加密的隐匿检索技术中的访问控制。作为公开密钥加密技术,使用基于配对的代理重加密技术。在代理重加密技术中,如果使用某个变换密钥,则不对检索者加密后的数据进行解密,而能够变换为登记者加密后的数据。 [0191] 在本实施方式中,在数据登记时,并非生成标签型的数据,而是生成索引型的数据,在数据检索时,生成索引型的检索查询。因此,效率良好。 [0192] 在本实施方式中,在数据登记时相同的加密关键字被一起登记于索引中,并且能够应用既存的安全的索引构成手法实现高安全性。例如,能够应用对索引追加虚拟值 (dummy)、或者对命中的数据名也进行加密而隐去的手法。 [0193] 本实施方式能够应用于既存的基于共享密钥加密的索引型的方式,所以还能够构成部分一致检索等带有灵活的检索功能的索引方式。 [0194] ***其他结构*** [0195] 在本实施方式中,登记装置200的输入部210、密文生成部220、索引生成部230、密钥生成部240、分发部250以及登记部260的功能通过软件实现,但作为变形例,输入部210、密文生成部220、索引生成部230、密钥生成部240、分发部250以及登记部260的功能也可以通过硬件实现。关于该变形例,主要说明与本实施方式的差异。 [0196] 参照图17,说明本实施方式的变形例的登记装置200的结构。 [0197] 登记装置200具备电子电路209、辅助存储装置203、输入输出接口204以及通信装置205之类的硬件。 [0198] 电子电路209是实现输入部210、密文生成部220、索引生成部230、密钥生成部240、分发部250以及登记部260的功能的专用的硬件。电子电路209例如是单一电路、复合电路、程序化的处理器、并行程序化的处理器、逻辑IC、GA、FPGA、ASIC、或者它们中的几个或全部的组合。“IC”是集成电路(Integrated Circuit)的简称。“GA”是门阵列(Gate Array)的简称。“FPGA”是现场可编程门阵列(Field-Programmable Gate Array)的简称。“ASIC”是专用集成电路(Application Specific Integrated Circuit)的简称。 [0199] 登记装置200也可以具备代替电子电路209的多个电子电路。这多个电子电路作为整体而实现输入部210、密文生成部220、索引生成部230、密钥生成部240、分发部250以及登记部260的功能。各个电子电路例如是单一电路、复合电路、程序化的处理器、并行程序化的处理器、逻辑IC、GA、FPGA、ASIC、或者它们中的几个或全部的组合。 [0200] 作为其他变形例,输入部210、密文生成部220、索引生成部230、密钥生成部240、分发部250以及登记部260的功能也可以通过软件和硬件的组合实现。即,也可以通过专用的硬件实现输入部210、密文生成部220、索引生成部230、密钥生成部240、分发部250以及登记部260的功能的一部分,而其余部分通过软件实现。 [0201] 处理器201以及电子电路209都是处理电路。即,不论登记装置200的结构是图2以及图17中的哪一个所示的结构,输入部210、密文生成部220、索引生成部230、密钥生成部 240、分发部250以及登记部260的动作都通过处理电路进行。 [0202] 在本实施方式中,检索装置300的取得部310、输入部320、加密部330、请求部340、解密部350以及输出部360的功能通过软件实现,但作为变形例,取得部310、输入部320、加密部330、请求部340、解密部350以及输出部360的功能也可以通过硬件实现。关于该变形例,主要说明与本实施方式的差异。 [0203] 参照图18,说明本实施方式的变形例的检索装置300的结构。 [0204] 检索装置300具备电子电路309、辅助存储装置303、输入输出接口304以及通信装置305之类的硬件。 [0205] 电子电路309是实现取得部310、输入部320、加密部330、请求部340、解密部350以及输出部360的功能的专用的硬件。电子电路309例如是单一电路、复合电路、程序化的处理器、并行程序化的处理器、逻辑IC、GA、FPGA、ASIC、或者它们中的几个或全部的组合。 [0206] 检索装置300也可以具备代替电子电路309的多个电子电路。这多个电子电路作为整体而实现取得部310、输入部320、加密部330、请求部340、解密部350以及输出部360的功能。各个电子电路例如是单一电路、复合电路、程序化的处理器、并行程序化的处理器、逻辑IC、GA、FPGA、ASIC、或者它们中的几个或全部的组合。 [0207] 作为其他变形例,取得部310、输入部320、加密部330、请求部340、解密部350以及输出部360的功能也可以通过软件和硬件的组合实现。即,也可以通过专用的硬件实现取得部310、输入部320、加密部330、请求部340、解密部350以及输出部360的功能的一部分,而其余的部分通过软件实现。 [0208] 处理器301以及电子电路309都是处理电路。即,不论检索装置300的结构是图3以及图18中的哪一个所示的结构,取得部310、输入部320、加密部330、请求部340、解密部350以及输出部360的动作都通过处理电路进行。 [0209] 在本实施方式中,服务器装置400的第1接收部410、管理部420、第2接收部430、检索部440以及发送部450的功能通过软件实现,但作为变形例,第1接收部410、管理部420、第2接收部430、检索部440以及发送部450的功能也可以通过硬件实现。关于该变形例,主要说明与本实施方式的差异。 [0210] 参照图19,说明本实施方式的变形例的服务器装置400的结构。 [0211] 服务器装置400具备电子电路409、辅助存储装置403、输入输出接口404以及通信装置405之类的硬件。 [0212] 电子电路409是实现第1接收部410、管理部420、第2接收部430、检索部440以及发送部450的功能的专用的硬件。电子电路409例如是单一电路、复合电路、程序化的处理器、并行程序化的处理器、逻辑IC、GA、FPGA、ASIC、或者它们中的几个或全部的组合。 [0213] 服务器装置400也可以具备代替电子电路409的多个电子电路。这多个电子电路作为整体而实现第1接收部410、管理部420、第2接收部430、检索部440以及发送部450的功能。 各个电子电路例如是单一电路、复合电路、程序化的处理器、并行程序化的处理器、逻辑IC、GA、FPGA、ASIC、或者它们中的几个或全部的组合。 [0214] 作为其他变形例,第1接收部410、管理部420、第2接收部430、检索部440以及发送部450的功能也可以通过软件和硬件的组合实现。即,也可以通过专用的硬件实现第1接收部410、管理部420、第2接收部430、检索部440以及发送部450的功能的一部分,而其余的部分通过软件实现。 [0215] 处理器401以及电子电路409都是处理电路。即,不论服务器装置400的结构是图4以及图19中的哪一个所示的结构,第1接收部410、管理部420、第2接收部430、检索部440以及发送部450的动作都通过处理电路进行。 |