本发明涉及服务器装置、检索系统、终端装置、检索方法、服务器程序以及终端程序。本发明例如涉及隐匿检索系统。
背景技术:
隐匿检索是能够在对加密数据和关键字进行加密的状态下进行检索的技术。
近年来,由于云服务等的普及,已能够在互联网上进行数据管理。但是,在互联网上的数据管理中,存在由于作为寄存数据的目的地的云服务器感染计算机病毒等恶意软件、或者云服务的管理者进行不正当动作而向外部泄漏数据的危险性。作为避免这种安全性威胁的方法,存在加密技术,但是,当单纯地对数据进行加密时,产生无法进行数据检索这样的问题。针对这种问题,此前已考虑了在进行检索时在云服务器上暂时对数据进行解密后进行检索这样的手法。但是,数据在云服务器内在一定期间返回到明文,因此,作为对策并不充分。因此,当前正在活跃地研究能够在对数据进行加密的状态下进行检索的加密技术即隐匿检索技术。近年来已公开有很多隐匿检索技术的具体手法。
在隐匿检索技术中,大致存在利用共享密钥加密的方式(例如参照专利文献1、专利文献2、非专利文献1、非专利文献2、非专利文献3)和利用公开密钥加密的方式(例如参照非专利文献4、非专利文献5)这两种。另外,共享密钥加密也称作秘密密钥加密或对称密钥加密。
在基于公开密钥加密的隐匿检索技术中,通过使用公开密钥,任何实体都能够进行针对数据中心的数据登记。并且,持有与该公开密钥对应的秘密密钥的实体能够进行关键字检索。
另一方面,在基于共享密钥加密的隐匿检索技术中,仅持有秘密密钥的实体能够执行数据登记和关键字检索。公知与现有的基于公开密钥加密的隐匿检索技术相比,基于共享密钥加密的隐匿检索技术的检索处理更加快速。特别是在近年来的基于共享密钥加密的隐匿检索技术中,已使用被称作索引的对检索结果进行加密并保管的数据构造而实现高速化。
现有技术文献
专利文献
专利文献1:日本特开2013-152520号公报
专利文献2:日本特开2013-161154号公报
非专利文献
非专利文献1:r.curtmola,j.garay,s.kamara,andr.ostrovsky,“searchablesymmetricencryption:improveddefinitionsandefficientconstructions”,acmccs2006,acm,2006
非专利文献2:k.kurosawaandy.ohtaki,“uc-securesearchablesymmetricencryption”,fc2012,lecuturenotesincomputerscience7397,springer,2012
非专利文献3:平野、服部、伊藤、川合、松田、太田、坂井、「暗号化索引追加後のsearchablesymmetricencryptionの安全性の関係」(平野、服部、伊藤、川合、松田、太田、坂井、“加密索引追加后的searchablesymmetricencryption的安全性的关系”)、scis2014、3b3-3、2014年
非专利文献4:d.boneh,g.d.crescenzo,r.ostrovsky,andg.persiano,“publickeyencryptionwithkeywordsearch”,eurocrypt2004,lecturenotesincomputerscience3027,springer,2004
非专利文献5:m.bellare,a.boldyreva,anda.o’neill,“deterministicandefficientlysearchableencryption”,crypto2007,lecturenotesincomputerscience4622,springer,2007
技术实现要素:
发明要解决的课题
在专利文献1、非专利文献1、非专利文献2、非专利文献3公开的现有的基于共享密钥加密的隐匿检索技术中,存在作为检索者的用户生成的检索查询的生成成本和检索查询的数据大小依赖于登记数据数量这样的课题。
具体而言,在现有方式中,用户能够针对数据登记时生成的索引关联多个数据。即,能够在索引中存储的检索结果中插入多个数据名。但是,当针对一个索引关联较多数据时,检索查询的生成成本和检索查询的数据大小与数据数量成比例增大。更准确地叙述时,当针对某个索引对应n个数据时,与仅与一个数据的对应相比,检索查询的生成成本和检索查询的数据大小增大大约n倍。
在使用ic(integratedcircuit:集成电路)卡这样的计算资源匮乏的设备生成检索查询的情况下或通信频带狭窄的情况下,上述课题是致命的。广泛公知ic卡是提高安全性的一个手段,但是,计算能力一般较低。因此,当检索查询的生成成本较大时,很难使用ic卡在现实的时间内生成检索查询。在通信频带狭窄的情况下,发送检索查询的成本提高。因此,很难发送接收数据大小较大的检索查询。
为了降低检索查询的生成成本并减小检索查询的数据大小,可考虑减少与一个索引对应的数据数量而生成较多索引。但是,该情况下,数据中心登记的索引数量变多。其结果是,在检索时,数据中心的服务器必须对较多索引实施检索处理,检索成本提高。
综上所述,在现有的基于共享密钥加密的隐匿检索技术中,在请求检索的一侧的检索查询的生成成本和检索查询的数据大小与执行检索的一侧的依赖于索引数量的检索成本之间存在折中关系。即,如果提高请求检索的一侧的处理效率,则执行检索的一侧的处理效率降低,相反也是同样的。
本发明的目的在于,例如提高请求检索的一侧和执行检索的一侧的整体处理效率。
用于解决课题的手段
本发明的一个方式的服务器装置具有:数据保管部,其保管多个加密数据;索引保管部,其保管用于使用针对输入的关键字输出唯一数值的函数进行检索的数据构造作为索引,该数据构造具有与从所述函数输出的数值一一对应的多个存储区域,针对与对所述多个加密数据中的任意加密数据进行加密之前的数据即明文数据对应的多个关键字,在与通过输入各个关键字而从所述函数输出的数值对应的存储区域中,存储对各个关键字对应的明文数据进行加密之后的数据即加密数据的标识符;以及检索部,其对所述函数输入所述多个关键字中的任意关键字,根据所述索引确定与从所述函数输出的数值对应的存储区域,从所述数据保管部取得与所确定的存储区域中存储的标识符对应的加密数据。
发明效果
在本发明中,执行检索的一侧即服务器装置使用针对所输入的关键字输出唯一数值的函数进行检索。服务器装置保管具有与从函数输出的数值一一对应的多个存储区域的数据构造作为索引。如果存在输入到函数的关键字,则服务器装置能够执行检索。请求检索的一侧仅将关键字交给服务器装置就能够请求检索。由此,根据本发明,请求检索的一侧和执行检索的一侧的整体处理效率得到提高。
附图说明
图1是示出实施方式1的检索系统的结构的框图。
图2是示出关键字与作为检索对象的数据的标识符的对应关系的例子的表。
图3是示出实施方式1的终端装置的结构的框图。
图4是示出实施方式1的服务器装置的结构的框图。
图5是示出实施方式1的检索系统的初始设定处理的流程图。
图6是示出实施方式1的检索系统的数据登记处理的流程图。
图7是示出实施方式1的检索系统的数据检索处理的流程图。
图8是示出实施方式1的检索系统的数据删除处理的流程图。
图9是示出实施方式1的检索系统的索引删除处理的流程图。
图10是示出实施方式1的检索系统的初始设定处理的具体例的流程图。
图11是示出实施方式1的检索系统的数据登记处理的具体例的流程图。
图12是示出实施方式1的检索系统的数据检索处理的具体例的流程图。
图13是示出实施方式1的检索系统的数据删除处理的具体例的流程图。
图14是示出实施方式1的检索系统的索引删除处理的具体例的流程图。
图15是示出实施方式1的终端装置和服务器装置的硬件结构的例子的图。
具体实施方式
下面,使用附图对本发明的实施方式进行说明。另外,在各图中,对相同或相当的部分标注相同标号。在实施方式的说明中,针对相同或相当的部分,适当省略或简化其说明。
实施方式1
下面,对本实施方式的概要进行说明。
图1是示出本实施方式的检索系统100的结构的框图。
如图1所示,检索系统100具有由用户200利用的多个终端装置201和设置在数据中心300中的服务器装置301。另外,检索系统100也可以仅具有一个终端装置201。检索系统100也可以具有多个服务器装置301。服务器装置301也可以设置在数据中心300以外的场所。
公司内部lan101是相互连接多个终端装置201的通信路径。公司内部lan101是铺设在企业内的lan(localareanetwork:局域网)。在公司内部lan101上连接有在企业内利用的各种服务器和pc(personalcomputer:个人计算机)。公司内部lan101是网络的例子。也可以代替公司内部lan101而使用其他种类的网络。例如,在多个建筑物内具有办公室的情况下,使用由经由路由器、专用线等连接的多个lan构成的网络。
互联网102是连接公司内部lan101和服务器装置301的通信路径。互联网102是网络的例子。也可以代替互联网102而使用其他种类的网络。
多个终端装置201经由公司内部lan101相互共享信息。终端装置201和服务器装置301经由公司内部lan101和互联网102进行通信。
终端装置201例如是pc。终端装置201是作为登记终端和检索终端中的至少任意一方进行动作的计算机,该登记终端将作为检索对象的数据登记在服务器装置301中,该检索终端请求服务器装置301检索数据。下面,为了便于说明,设终端装置201作为登记终端和检索终端双方进行动作。
终端装置201作为加密装置发挥功能。即,终端装置201生成后述的加密数据和索引。
终端装置201作为登记装置发挥功能。即,终端装置201请求服务器装置301保管加密数据和索引。
终端装置201作为检索请求装置发挥功能。即,终端装置201向服务器装置301发送后述的检索种子,请求检索数据。
终端装置201作为解密装置发挥功能。即,终端装置201对根据检索请求而从服务器装置301返回的加密数据进行解密。
终端装置201作为删除请求装置发挥功能。即,终端装置201请求服务器装置301删除加密数据或索引。
服务器装置301是具有保管由终端装置201生成的加密数据和索引的大容量记录介质的服务器。
服务器装置301作为保管装置发挥功能。即,如果被终端装置201请求保管加密数据或索引,则服务器装置301保管加密数据或索引。
服务器装置301作为检索装置发挥功能。即,如果被终端装置201请求检索,则服务器装置301从索引得到检索结果信息,向终端装置201发送检索结果信息所示的加密数据。
服务器装置301作为删除装置发挥功能。即,如果被终端装置201请求删除加密数据或索引,则服务器装置301删除所保管的加密数据或索引。
加密数据和检索种子均被加密。因此,在服务器装置301中,即使阅览加密数据和检索种子的内容也无法得到有益信息。另外,在可以仅隐匿作为检索对象的数据而不隐匿检索用的关键字的情况下,也可以直接使用关键字作为检索种子。
图2是示出关键字与作为检索对象的数据的标识符的对应关系的例子的表。
在图2的例子中,数据1、数据3、数据5与关键字“特许”对应。即,在将关键字设定为“特许”的检索中,命中由数据1、数据3、数据5分别识别的3个数据。
同样,数据2、数据3、数据7、数据10与关键字“人事信息”对应。即,在将关键字设定为“人事信息”的检索中,命中由数据2、数据3、数据7、数据10分别识别的4个数据。
同样,数据1、数据2与关键字“预算”对应。即,在将关键字设定为“预算”的检索中,命中由数据1、数据2分别识别的2个数据。
在本实施方式中,对利用索引的现有的基于共享密钥加密的隐匿检索技术进行改良。具体而言,由作为检索者的用户200利用的终端装置201不需要生成生成成本和数据大小与登记数据数量成比例增大的检索查询。终端装置201代替检索查询而生成生成成本和数据大小不依赖于登记数据数量的检索种子。通过对关键字进行加密而生成检索种子。服务器装置301使用从将检索种子作为输入的函数输出的数值,从索引取得与关键字对应的数据的标识符。在图2的例子中,在从终端装置201给出关键字“特许”的检索种子的情况下,服务器装置301从索引取得数据1、数据3、数据5这3个标识符。
如上所述,在本实施方式中,直到根据关键字确定作为检索对象的数据的标识符为止的一连串检索处理由终端装置201和服务器装置301分担。以往,在检索查询的生成成本和检索查询的数据大小与检索成本之间存在折中关系,但是,在本实施方式中,不需要考虑这种折中关系。即,在本实施方式中,即使不增加索引数量,也能够减小在请求检索的一侧生成的信息的生成成本和该信息的数据大小,并且,能够得到具有较高安全性的基于共享密钥加密的隐匿检索技术。
在本实施方式中,按照以下流程来执行用户200在数据中心300登记数据的处理即数据登记处理和用户200使用关键字在数据中心300检索数据的处理即关键字检索处理。但是,要求希望登记或检索数据的实体即登记者或检索者作为事前准备而生成秘密密钥,并严格进行管理以使该秘密密钥不会泄漏给他人。用户200相当于登记者和检索者。另外,也可以代替秘密密钥而使用其他种类的秘密信息。
首先,对数据登记处理进行说明。
希望利用云服务等在数据中心300寄存数据的用户200在数据登记时决定希望登记的数据的关键字。如图2的例子所示,用户200生成针对各关键字在检索中命中的数据的标识符的列表。用户200将生成的列表和希望登记的数据输入到终端装置201。
终端装置201利用秘密密钥对由用户200输入的列表中包含的关键字进行加密,生成检索种子。终端装置201使用检索种子生成索引。在索引中保管检索结果。作为索引所要求的性质,要求如果不具有秘密密钥或以该秘密密钥为基准的秘密信息,则很难从索引取出有益检索结果。
索引的构造能够任意选择。例如,作为索引的构造,能够选择如下的数组。即,各关键字的检索结果存储在数组的随机地址的存储区域中。利用对虚拟随机函数或sha-1(securehashalgorithm-1(安全哈希算法-1))这样的哈希函数输入检索种子而确定地生成的随机数,决定随机地址。另外,“确定地”意味着,如果输入的检索种子相同,则始终生成相同值。如图2的例子所示,在许可多个数据的标识符对应于一个关键字的情况下,与相同关键字对应的标识符的序数也输入到哈希函数。如果输入的检索种子和序数的组合相同,则始终生成相同值。
在索引中,不存储一切检索种子本身而仅存储检索结果。仅具有秘密密钥的用户200能够根据关键字生成检索种子,能够结合检索种子和检索结果。即,仅具有秘密密钥的用户200能够结合关键字和检索结果。可以考虑索引是检索结果的转置索引。
终端装置201使用aes(advancedencryptionstandard:高级加密标准)或camellia(注册商标)等共享密钥加密方式对由用户200输入的数据进行加密。终端装置201将索引和加密数据登记在数据中心300的服务器装置301中。
接着,对关键字检索处理进行说明。
希望检索数据中心300中寄存的加密数据的用户200将关键字输入到终端装置201。
终端装置201利用秘密密钥对由用户200输入的关键字进行加密,生成检索种子。终端装置201向数据中心300的服务器装置301发送检索种子。
数据中心300的服务器装置301使用从终端装置201接收到的检索种子生成随机数。该随机数对应于索引的地址。如图2的例子所示,在许可多个数据的标识符对应于一个关键字的情况下,服务器装置301生成多个随机数。服务器装置301确定与所生成的随机数对应的索引内的一个或多个地址。服务器装置301从所确定的地址的存储区域中取出检索结果。然后,服务器装置301读出与检索结果所示的标识符对应的一个或多个加密数据。服务器装置301向终端装置201发送所读出的加密数据。
终端装置201使用共享密钥加密方式对接收到的加密数据进行解密。
通过执行上述数据登记处理和关键字检索处理,即使数据被加密并保管在数据中心300中,也能够在对数据进行加密的状态下进行检索而不会泄漏与数据的内容有关的信息。数据中心300的服务器装置301也无法访问与数据的内容有关的信息。
在本实施方式中,作为检索者的用户200的终端装置201在检索时不生成检索查询,取而代之地生成不依赖于登记数据数量的检索种子。数据中心300的服务器装置301根据该检索种子生成随机数即检索关键字。服务器装置301根据该检索关键字进行索引的检索。由此,即使在一个索引中登记了多个数据,也不会影响检索种子的生成成本和检索种子的数据大小。即,在本实施方式中,与现有的检索查询不同,能够降低检索种子的生成成本,能够减小检索种子的数据大小。
下面,对本实施方式进行详细说明。
***结构的说明***
如图1所示,检索系统100具有终端装置201和服务器装置301。下面,依次对终端装置201的结构、服务器装置301的结构进行说明。
图3是示出终端装置201的结构的框图。
如图3所示,终端装置201具有秘密密钥生成部202、秘密密钥管理部203、关键字设定部204、数据加密部205、索引生成部206、数据删除请求生成部207、索引删除请求生成部208、关键字加密部209、通信部210以及数据解密部211。
虽然没有图示,但是,终端装置201具有存储在终端装置201的各部中使用的数据的记录介质。
秘密密钥生成部202生成用于对数据进行加密的共享密钥加密方式的加密密钥ek和用于生成索引i的索引密钥ik。加密密钥ek和索引密钥ik是终端装置201的秘密密钥,严格进行管理以使不对进行数据登记、数据追加、数据删除或关键字检索的用户200以外公开。另外,在本实施方式中使用共享密钥加密方式,但是,也可以使用rsa(注册商标)加密方式等公开密钥加密方式。在公开密钥加密方式中,加密中使用的公开密钥可以公开,但是,要严格管理解密中使用的秘密密钥。
秘密密钥管理部203将由秘密密钥生成部202生成的加密密钥ek和索引密钥ik存储在记录介质中。
关键字设定部204从由用户200输入的多个明文数据d_1~d_n中自动提取多个关键字。关键字设定部204针对提取出的各关键字,生成图2的例子所示的检索结果信息。关键字设定部204将由用户200输入的登记索引名也包含在检索结果信息中。另外,登记索引名不是必须由用户200输入,也可以省略。也可以不自动提取关键字。例如,也可以与作为明文数据的登记数据同时地,由用户200输入与各数据对应的关键字。该情况下,关键字设定部204判定由用户200输入的各关键字与数据的关联性,生成检索结果信息。或者,用户200直接输入检索结果信息。
数据加密部205使用秘密密钥管理部203中存储的加密密钥ek,对从关键字设定部204接收到的登记数据进行加密。即,数据加密部205通过使用加密密钥ek对多个明文数据d_1~d_n进行加密,生成多个加密数据c_1~c_n。
索引生成部206生成用于使用针对输入的关键字输出唯一数值的函数h进行检索的数据构造作为索引i。索引i是具有与从函数h输出的数值一一对应的多个存储区域的数据构造。索引i是如下的数据构造:针对与多个明文数据d_1~d_n中的任意明文数据对应的多个关键字,在与通过输入各个关键字而从函数h输出的数值对应的存储区域中,存储对各个关键字对应的明文数据d_i进行加密之后的数据即加密数据c_i的标识符。
索引生成部206使用秘密密钥管理部203中存储的索引密钥ik,根据由关键字设定部204生成的检索结果信息生成索引i。即,函数h的输入也可以是明文的关键字,但是,在本实施方式中,针对服务器装置301隐匿关键字,因此,设函数h的输入是加密后的关键字即检索种子。索引生成部206针对多个关键字,使用索引密钥ik对各个关键字进行加密。索引生成部206对函数h输入加密后的关键字。索引生成部206生成如下的数据构造作为索引i:在与从函数h输出的数值对应的存储区域中,存储对加密后的关键字对应的明文数据d_i进行加密之后的数据即加密数据c_i的标识符。
也可以是一个关键字仅对应于一个明文数据,但是,在本实施方式中,一个关键字能够对应于2个以上的明文数据,因此,设在函数h的输入中包含关键字以外的数值。即,函数h是针对输入的关键字和数值的组合输出唯一数值的函数。索引生成部206针对共享关键字对应的2个以上的明文数据,对函数h输入共享关键字和用于识别各个明文数据d_i的数值。索引生成部206生成如下的数据构造作为索引i:在与从函数h输出的数值对应的存储区域中,存储对各个明文数据d_i进行加密之后的数据即加密数据c_i的标识符。
数据删除请求生成部207生成包含由用户200输入的标识符即删除数据名的删除数据信息。删除数据信息是用于删除服务器装置301中登记的加密数据的信息。
索引删除请求生成部208生成包含由用户200输入的删除索引名的删除索引信息。删除索引信息是用于删除服务器装置301中登记的索引i的信息。
关键字加密部209使用秘密密钥管理部203中存储的索引密钥ik,根据由用户200输入的关键字生成检索种子。即,关键字加密部209使用索引密钥ik对关键字进行加密。关键字加密部209还生成包含由用户200输入的检索索引名的检索索引信息。另外,检索索引名不是必须由用户200输入,也可以省略。
检索种子是进行检索所需要的信息的中间信息。无法直接使用检索种子来检索索引i。检索种子是仅具有作为秘密密钥的索引密钥ik的用户200能够生成的信息。服务器装置301能够仅使用检索种子生成作为进行检索所需要的信息的检索关键字。服务器装置301能够根据生成的检索关键字进行索引的检索。
通信部210向服务器装置301发送从数据加密部205送来的多个加密数据c_1~
c_n、从索引生成部206送来的索引i、从数据删除请求生成部207送来的删除数据信息、从索引删除请求生成部208送来的删除索引信息、从关键字加密部209送来的检索种子和检索索引信息。即,通信部210向服务器装置301发送由数据加密部205生成的多个加密数据c_1~c_n和由索引生成部206生成的索引i。通信部210向服务器装置301发送由关键字加密部209加密后的关键字。
通信部210从服务器装置301接收作为多个加密数据c_1~c_n中的任意加密数据的加密数据c_i。
数据解密部211使用秘密密钥管理部203中存储的加密密钥ek,对从通信部210接收到的加密数据c_i进行解密,取得明文数据c_i。数据解密部211将取得的明文数据c_i输出到显示器或打印机等。即,数据解密部211使用与加密密钥ek对应的解密密钥对由通信部210接收到的加密数据c_i进行解密。
图4是示出服务器装置301的结构的框图。
如图4所示,服务器装置301具有通信部302、数据保管部303、索引保管部304、检索部305、检索关键字生成部306以及索引更新部307。
虽然没有图示,但是,服务器装置301具有存储在服务器装置301的各部中使用的数据的记录介质。
通信部302从终端装置201接收多个加密数据c_1~c_n、索引i、删除数据信息、删除索引信息、由终端装置201使用索引密钥ik加密后的关键字即检索种子、检索索引信息。
通信部302向终端装置201发送由检索部305取得的加密数据c_i。
数据保管部303将从通信部302送来的多个加密数据c_1~c_n存储在记录介质中。即,数据保管部303保管多个加密数据c_1~c_n。如上所述,多个加密数据c_1~c_n是由保有加密密钥ek的终端装置201使用加密密钥ek对多个明文数据d_1~d_n进行加密之后的数据。在从检索部305送来标识符即数据名的情况下,数据保管部303从记录介质中读出与该数据名对应的加密数据c_i。数据保管部303向检索部305发送所读出的加密数据。数据保管部303从记录介质中删除与从索引更新部307送来的删除数据名对应的加密数据c_i。
索引保管部304将从通信部302送来的索引i存储在记录介质中。即,索引保管部304保管用于使用针对输入的关键字输出唯一数值的函数h进行检索的数据构造作为索引i。如上所述,索引i是具有与从函数h输出的数值一一对应的多个存储区域的数据构造。索引i是如下的数据构造:针对与对多个加密数据c_1~c_n中的任意加密数据进行加密之前的数据即明文数据d_i对应的多个关键字,在与通过输入各个关键字而从函数h输出的数值对应的存储区域中,存储对各个关键字对应的明文数据d_i进行加密之后的数据即加密数据c_i的标识符。索引i是由终端装置201生成的数据构造。
如上所述,函数h的输入也可以是明文的关键字,但是,在本实施方式中,针对服务器装置301隐匿关键字,因此,设函数h的输入是加密后的关键字即检索种子。即,函数h是针对由保有索引密钥ik的终端装置201使用索引密钥ik加密后的关键字输出唯一数值的函数。
如上所述,也可以是一个关键字仅对应于一个明文数据,但是,在本实施方式中,一个关键字能够对应于2个以上的明文数据,因此,设在函数h的输入中包含关键字以外的数值。即,函数h是针对输入的关键字和数值的组合输出唯一数值的函数。索引i是如下的数据构造:针对共享关键字对应的2个以上的明文数据,在与通过输入共享关键字和用于识别各个明文数据d_i的数值而从函数h输出的数值对应的存储区域中,存储对各个明文数据d_i进行加密之后的数据即加密数据c_i的标识符。
索引保管部304从记录介质中读出与从检索部305送来的检索索引名对应的索引i。索引保管部304向检索部305发送所读出的索引i。
索引保管部304从索引更新部307接收删除数据名。索引保管部304从记录介质中读出索引i。索引保管部304寻找包含接收到的删除数据名的索引i的地址。在发现了相应地址的情况下,索引保管部304从该地址中删除删除数据名。
索引保管部304从记录介质中删除与从索引更新部307送来的删除索引名对应的索引i。
检索部305从由通信部302送来的检索索引信息中提取检索索引名。检索部305向索引保管部304发送提取出的检索索引名。检索部305向检索关键字生成部306发送从通信部302送来的检索种子。在检索关键字生成部306中装载函数h。检索部305使用从检索关键字生成部306送来的检索关键字,检索从索引保管部304送来的索引i,提取检索结果。然后,检索部305向数据保管部303发送提取出的数据名。检索部305向通信部302发送从数据保管部303送来的加密数据c_i。即,检索部305对函数h输入多个关键字中的任意关键字。检索部305根据索引i确定与从函数h输出的数值对应的存储区域。检索部305从数据保管部303取得与所确定的存储区域中存储的标识符对应的加密数据c_i。在本实施方式中,检索部305对函数h输入由通信部302接收到的关键字。
如上所述,在本实施方式中,一个关键字能够对应于2个以上的明文数据,因此,在函数h的输入中包含关键字以外的数值。该数值的范围预先设定。例如,最小值为1。最大值为许可一个关键字对应的明文数据的数量。检索部305对函数h一个一个地输入多个关键字中的任意关键字和预先设定的范围内的数值。在索引i中存在与从函数h输出的数值对应的存储区域的情况下,检索部305从数据保管部303取得与该存在的存储区域中存储的标识符对应的加密数据c_i。
检索关键字生成部306根据从检索部305送来的检索种子生成检索关键字。检索关键字生成部306向检索部305发送所生成的检索关键字。也可以考虑检索关键字生成部306是函数h本身。
索引更新部307从由通信部302送来的删除数据信息中提取删除数据名。索引更新部307向数据保管部303和索引保管部304发送提取出的删除数据名。即,在由终端装置201指定了要删除的加密数据c_i的标识符的情况下,索引更新部307从数据保管部303中删除与所指定的标识符对应的加密数据c_i。并且,索引更新部307根据索引确定存储有所指定的标识符的存储区域。索引更新部307删除所确定的存储区域的内容。
索引更新部307从由通信部302送来的删除索引信息中提取删除索引名。索引更新部307向索引保管部304发送提取出的删除索引名。
另外,终端装置201的索引生成部206也可以仅生成一个索引i,但是,下面,设为生成多个索引i。通过登记索引名、检索索引名、删除索引名这样的索引名来识别各个索引i。
用户200在请求检索时,可以输入一个或多个检索索引名,也可以省略检索索引名的输入。在省略了检索索引名的输入的情况下,终端装置201的关键字加密部209将进行全部索引i的检索这样的信息包含在检索索引信息中。
服务器装置301的索引保管部304在从索引更新部307接收到删除数据名时,从记录介质中读出全部索引i。索引保管部304寻找包含接收到的删除数据名的索引i。在发现了相应索引i的情况下,索引保管部304从该索引i的相应地址中删除删除数据名。
***动作的说明***
下面,对与本实施方式的检索方法相当的检索系统100的动作进行说明。
图5是示出检索系统100的初始设定处理的流程图。
图5的s101~s104是使作为计算机的终端装置201执行本实施方式的终端程序的处理。在执行数据登记处理和数据检索处理之前,由终端装置201执行s101~s104。
在s101中,秘密密钥生成部202决定用于对数据进行加密的共享密钥加密方式。作为共享密钥加密方式,能够选择aes、camellia(注册商标)等。另外,共享密钥加密方式也可以预先决定。如上所述,也可以代替共享密钥加密方式而选择公开密钥加密方式。下面,将在s101中决定的共享密钥加密方式简称作“共享密钥加密方式”。
在s102中,秘密密钥生成部202生成用于对数据进行加密的共享密钥加密方式的加密密钥ek。在本实施方式中,加密密钥ek也是解密密钥。如果在s101中选择了公开密钥加密方式,则秘密密钥生成部202生成与作为公开密钥的加密密钥ek对应的秘密密钥作为解密密钥。
在s103中,秘密密钥生成部202生成用于生成索引i和检索种子的索引密钥ik。
在s104中,秘密密钥管理部203将在s102中生成的加密密钥ek和在s103中生成的索引密钥ik存储在记录介质中。
通过s104,检索系统100的初始设定处理结束。
图6是示出检索系统100的数据登记处理的流程图。
图6的s201~s206是使作为计算机的终端装置201执行本实施方式的终端程序的处理。s204是数据加密处理,s205是索引生成处理,s206是通信处理。在s201~s206中,由终端装置201生成作为检索对象的加密数据c_1~c_n和用于对作为检索对象的数据进行检索的索引i。
图6的s207是使作为计算机的服务器装置301执行本实施方式的服务器程序的处理。s207是通信处理。在s207中,在服务器装置301中登记作为检索对象的加密数据c_1~c_n和索引i。
在s201中,用户200使用键盘或鼠标等在终端装置201中指定登记数据和登记索引名。关键字设定部204受理登记数据和登记索引名的输入。登记数据是未加密的作为检索对象的数据即明文数据d_1~d_n。另外,也可以仅指定一个登记数据。登记索引名是分配给与同时输入的登记数据相关联的索引i的名称。另外,登记索引名不是必须输入。登记索引名可以由关键字设定部204自动分配,也可以不分配。
在s202中,关键字设定部204生成与在s201中输入的登记数据相关联的一个以上的关键字。例如,关键字设定部204从登记数据中自动提取名词作为关键字,或者受理由用户200直接指定的关键字的输入。
在s203中,关键字设定部204按照在s202中生成的每个关键字生成检索结果信息。如图2的例子所示,检索结果信息是表示与关键字对应的登记数据的数据名的信息。
在s204中,数据加密部205使用秘密密钥管理部203中存储的加密密钥ek,对在s201中输入的登记数据进行加密,生成加密数据c_1~c_n。
在s205中,索引生成部206使用秘密密钥管理部203中存储的索引密钥ik,对在s203中生成的检索结果信息进行加密,生成索引i。
在s206中,通信部210向服务器装置301发送在s204中生成的加密数据c_1~c_n和在s205中生成的索引i。
在s207中,通信部302接收在s206中发送的加密数据c_1~c_n和索引i。然后,数据保管部303将加密数据c_1~c_n存储在记录介质中。索引保管部304将索引i存储在记录介质中。
通过s207,检索系统100的数据登记处理结束。加密数据c_1~c_n和索引i被加密,因此,登记数据和关键字被隐匿。另外,能够通过与上述相同的顺序追加登记数据。
图7是示出检索系统100的数据检索处理的流程图。
图7的s301~s304和s310是使作为计算机的终端装置201执行本实施方式的终端程序的处理。s302和s303是关键字加密处理,s304和s310的一部分是通信处理,s310的其余部分是数据解密处理。在s301~s304中,由终端装置201生成检索种子。
图7的s305~s309是使作为计算机的服务器装置301执行本实施方式的服务器程序的处理。s305的一部分和s309是通信处理,s305的其余部分和s306~s308是检索处理。在s305~s309中,使用检索种子由服务器装置301生成检索关键字,使用检索关键字和服务器装置301中登记的索引i检索服务器装置301中登记的加密数据c_i。
在s301中,用户200使用键盘或鼠标等在终端装置201中指定一个或多个关键字和一个或多个检索索引名。关键字加密部209受理关键字和检索索引名的输入。
在s302中,关键字加密部209使用秘密密钥管理部203中存储的索引密钥ik,根据在s301中输入的关键字生成检索种子。检索种子是用于由服务器装置301生成检索关键字的信息。
在s303中,关键字加密部209生成包含在s301中输入的检索索引名的检索索引信息。
在s304中,通信部210向服务器装置301发送在s302中生成的检索种子和在s303中生成的检索索引信息。
在s305中,通信部302接收在s304中发送的检索种子和检索索引信息。然后,检索部305从由通信部302送来的检索索引信息中提取检索索引名。检索部305从索引保管部304中读出与提取出的检索索引名对应的索引i。如果存在多个检索索引名,则检索部305读出多个索引i。
在s306中,检索关键字生成部306使用从检索部305送来的在s305中接收到的检索种子生成检索关键字。
在s307中,检索部305使用在s306中生成的检索关键字,检索在s305中读出的索引i。检索部305提取包含数据名的检索结果信息。
在s308中,检索部305根据在s307中提取出的检索结果信息,从数据保管部303中读出加密数据c_i。
在s309中,通信部302向终端装置201发送在s308中读出的加密数据c_i。
在s310中,通信部210接收在s309中发送的加密数据c_i。然后,数据解密部211使用秘密密钥管理部203中存储的加密密钥ek,对从通信部210送来的加密数据c_i进行解密。数据解密部211将进行解密而得到的明文数据d_i输出到显示器或打印机等。
通过s310,检索系统100的数据检索处理结束。
图8是示出检索系统100的数据删除处理的流程图。
图8的s401~s403是使作为计算机的终端装置201执行本实施方式的终端程序的处理。s403是通信处理。
图8的s404和s405是使作为计算机的服务器装置301执行本实施方式的服务器程序的处理。s404的一部分是通信处理,s404的其余部分和s405是索引更新处理。在s404和s405中,删除服务器装置301中登记的一部分登记数据。
在s401中,用户200使用键盘或鼠标等在终端装置201中指定一个或多个删除数据名。数据删除请求生成部207受理删除数据名的输入。
在s402中,数据删除请求生成部207生成包含在s401中输入的删除数据名的删除数据信息。
在s403中,通信部210向服务器装置301发送在s402中生成的删除数据信息。
在s404中,通信部302接收在s403中发送的删除数据信息。索引更新部307从由通信部302送来的删除数据信息中提取删除数据名。索引保管部304由索引更新部307进行控制,由此从记录介质中读出全部索引i,寻找包含从索引更新部307送来的删除数据名的索引i。在发现了相应索引i的情况下,索引保管部304从该索引i的相应地址中删除删除数据名。
在s405中,数据保管部303由索引更新部307进行控制,由此从记录介质中删除与从索引更新部307送来的删除数据名对应的加密数据c_i。
通过s405,检索系统100的数据删除处理结束。
图9是示出检索系统100的索引删除处理的流程图。
图9的s501~s503是使作为计算机的终端装置201执行本实施方式的终端程序的处理。s503是通信处理。
图9的s504是使作为计算机的服务器装置301执行本实施方式的服务器程序的处理。s504的一部分是通信处理,s504的其余部分是索引更新处理。在s504中,从服务器装置301中删除一部分索引i。
在s501中,用户200使用键盘或鼠标等在终端装置201中指定一个或多个删除索引名。索引删除请求生成部208受理删除索引名的输入。
在s502中,索引删除请求生成部208生成包含在s501中输入的删除索引名的删除索引信息。
在s503中,通信部210向服务器装置301发送在s502中生成的删除索引信息。
在s504中,通信部302接收在s503中发送的删除索引信息。索引更新部307从由通信部302送来的删除索引信息中提取删除索引名。索引保管部304由索引更新部307进行控制,由此从记录介质中删除与从索引更新部307送来的删除索引名对应的索引i。
通过s504,检索系统100的索引删除处理结束。
图8所示的数据删除处理和图9所示的索引删除处理也可以同时执行。例如,能够从终端装置201向服务器装置301发送包含删除数据名和删除索引名双方的删除请求信息。
下面,对检索系统100的动作的具体例进行说明。
如下所述定义在具体例的说明中使用的记号。
将作为明文数据的数据d_i和对该明文数据进行加密而得到的加密数据c_i的数据名记为“id(d_i)”。但是,数据名id(d_i)只是标识符,不表示数据d_i的内容。即,通过数据名id(d_i),不会得知数据d_i的内容。
设数据名id(d_i)的比特长度为u。在输入的数据名的比特长度比u短的情况下,例如通过从数据名的前方连接若干个整数0,使数据名id(d_i)成为u比特。
设关键字w的比特长度为x。在输入的关键字的比特长度比x短的情况下,例如通过从关键字的前方连接若干个整数0,使关键字w成为x比特。
设加密密钥ek的比特长度为k1,索引密钥ik的比特长度为k2。
共享密钥加密方式的加密函数enc将k1比特的密钥ek和m比特的明文数据d_i作为输入值,输出m比特的加密数据c_i。共享密钥加密方式的解密函数dec将k1比特的密钥ek和m比特的加密数据c_i作为输入值,输出m比特的明文数据d_i。在输入数据的比特长度超过m时,例如使用cbc(cipherblockchaining:密码块链接)模式等加密利用模式实施加密。
函数h是不使用秘密信息而根据输入值计算随机数值的函数。函数h也称作“哈希函数”。函数h是如果输入值相同则输出值始终相同的确定性函数。
函数h将有限比特长度的数据作为输入值,输出y比特的随机整数。这里,在写为“h(a)=b”时,意味着将有限比特长度的数据a作为输入值,输出0~(2y-1)的随机整数b。例如,当设y=10时,h(a)的输出值b是0~1023之间的随机整数。
函数f是使用某个秘密信息根据输入值计算与输入值相同大小的随机数值的函数。函数f也称作“虚拟随机置换”。函数f是如果输入值相同则输出值始终相同的确定性函数。
函数f将k2比特的索引密钥ik和x比特的整数作为输入值,输出x比特的随机整数。这里,在写为“f(ik,a)=b”时,意味着将k2比特的索引密钥ik和x比特的整数a作为输入值,输出0~2x-1的随机整数b。例如,当设x=12时,f(ik,a)的输出值b是0~4095之间的随机整数。
索引i是具有数组构造的数据,具有多个数组元素。索引i的一个数组元素中能够设定的值的最大的比特长度为u。
将识别索引i的数组元素i[addr]的值addr称作索引i的地址。设该addr的比特长度为z。
仅在索引i的数组元素中的被使用的数组元素中确保存储区域。被使用的数组元素是指设定有值的数组元素。即,索引i的地址空间是2z这样的指数大小,虽然非常大,但是实际上仅利用一部分地址,并且,在未利用的地址中不进行任何设定。因此,索引i的实质上的数据大小被抑制成现实的多项式大小。
将索引i的数据名即索引名记为“id(i)”。但是,索引名id(i)仅仅是标识符,不表示索引i的内容。即,通过索引名id(i),不会得知索引id(i)的内容。
设索引名id(i)的比特长度为v。在输入的索引名的比特长度比v短的情况下,例如通过从索引名的前方连接若干个整数0,使索引名id(i)成为v比特。
“#x”意味着集合x的元素数量。“y//z”意味着比特列y与比特列z的耦合或连接。其他记号是与一般使用的数学记号相同的意思。
图10是示出检索系统100的初始设定处理的具体例的流程图。
图10的流程图对应于图5的流程图。s601对应于s101,s602对应于s102,s603对应于s103,s604对应于s104。
在s601中,秘密密钥生成部202决定用于对数据进行加密的具体的共享密钥加密方式。
在s602中,秘密密钥生成部202随机生成在s601中决定的共享密钥加密方式的k1比特的加密密钥ek。
在s603中,秘密密钥生成部202生成k2比特的随机数即索引密钥ik。
在s604中,秘密密钥管理部203存储在s602中生成的加密密钥ek和在s603中生成的索引密钥ik。
图11是示出检索系统100的数据登记处理的具体例的流程图。
图11的流程图对应于图6的流程图。s701对应于s201,s702对应于s202,s703对应于s203,s704对应于s204,s705和s706对应于s205,s707对应于s206,s708对应于s207。
在s701中,用户200使用键盘或鼠标等在终端装置201中指定登记数据d={d_1,···,d_n}和登记索引名id(i)。关键字设定部204受理登记数据d和登记索引名id(i)的输入。
登记数据d包含一个以上的明文数据d_i。附加标号i表示1以上的任意整数。下面,设登记数据d内的数据数量为n。设各数据d_i的数据名id(d_i)为u比特的整数。另外,在追加登记数据时,将不同的u比特的整数和追加数据对应起来,使得不会与已经登记的数据名重复。
这里,设一次能够登记的数据的数量为n。n为1以上的整数,可事前设定,并且设为公开的系统参数。n是1000或10000这样的现实的大小即可,可以是任意整数。在登记数据d内的数据数量n超过n的情况下,将登记数据d分割成数据数量为n以下的若干个群组,针对这些群组反复执行s701~s708即可。
在s702中,关键字设定部204生成与在s701中输入的登记数据d相关联的关键字集合w={w_1,…,w_q}。
关键字集合w包含一个以上的关键字w。下面,设关键字集合w内的关键字数量为q。关键字w与登记数据d中的至少任意数据d_i相关联。
在s703中,关键字设定部204针对在s701中输入的登记索引名id(i)和在s702中生成的关键字集合w中包含的各关键字w,生成检索结果信息(id(i),w,d(w))。这里,d(w)是包含与关键字w相关联的数据的数据名的集合,用{id(d_s(1)),…,id(d_s(m))}表示。与关键字w相关联的数据是指在使用关键字w的检索中命中的数据。m为1以上的整数。id(d_s(1)),…,id(d_s(m))是u比特的相互不同的整数。
在s704中,数据加密部205从秘密密钥管理部203中读出加密密钥ek。数据加密部205使用加密密钥ek对在s701中输入的登记数据d内的各数据d_i进行加密,生成加密数据c_i=enc(ek,d_i)(1≤i≤n)。
在s705中,索引生成部206从秘密密钥管理部203中读出索引密钥ik。索引生成部206针对在s702中生成的各关键字w,计算f(ik,w)和h(f(ik,w),1),…,h(f(ik,w),m)。
在s706中,索引生成部206针对与各关键字w对应的在s705中生成的h(f(ik,w),1),…,h(f(ik,w),m)和在s703中生成的d(w)={id(d_s(1)),···,id(d_s(m))}设定索引i,使得i[h(f(ik,w),1)]=id(d_s(1)),…,i[h(f(ik,w),m)]=id(d_s(m))。即,索引生成部206设定h(f(ik,w),j)作为索引i的地址,在该地址的数组元素中设定id(d_s(j))。附加标号j为1以上的整数。
在s707中,通信部210向服务器装置301发送在s704中生成的加密数据c={c_1,···,c_n}、以及在s701中输入的索引名id(i)与在s706中生成的索引i的对即索引信息(id(i),i)。
在s708中,通信部302接收在s707中发送的加密数据c和索引信息(id(i),i)。然后,数据保管部303将加密数据c存储在记录介质中。索引保管部304将索引信息(id(i),i)存储在记录介质中。
图12是示出检索系统100的数据检索处理的具体例的流程图。
图12的流程图对应于图7的流程图。s801对应于s301,s802对应于s302,s803对应于s303,s804对应于s304,s805对应于s305,s806对应于s306,s807对应于s307,s808对应于s308,s809对应于s309,s810对应于s310。
在s801中,用户200使用键盘或鼠标等在终端装置201中指定关键字w和检索索引名id(i)。关键字加密部209受理关键字w和检索索引名id(i)的输入。也可以输入多个关键字w。也可以输入多个检索索引名id(i)。
在s802中,关键字加密部209从秘密密钥管理部203中读出索引密钥ik。关键字加密部209针对在s801中输入的关键字w,计算检索种子f(ik,w)。
在s803中,关键字加密部209生成包含在s801中输入的检索索引名id(i)的检索索引信息。另外,在s801中输入了多个检索索引名id(i)的情况下,关键字加密部209生成包含全部这些索引名id(i)的检索索引信息。
在s804中,通信部210向服务器装置301发送在s802中生成的检索种子f(ik,w)和在s803中生成的检索索引信息。
在s805中,通信部302接收在s804中发送的检索种子f(ik,w)和检索索引信息。然后,检索部305从由通信部302送来的检索索引信息中提取检索索引名id(i)。检索部305从索引保管部304中读出与检索索引名id(i)对应的索引信息(id(i),i)。如果存在多个检索索引名id(i),则检索部305按照每个索引名读出索引信息(id(i),i)。
在s806中,检索部305向检索关键字生成部306发送从通信部302送来的检索种子f(ik,w)。检索关键字生成部306根据检索种子f(ik,w)生成检索关键字{h(f(ik,w),1),…,h(f(ik,w),n)}。n为1以上的整数,是事前设定的所述系统参数。
在s807中,检索部305使用在s806中生成的检索关键字{h(f(ik,w),1),…,h(f(ik,w),n)},确定在s805中读出的索引信息(id(i),i)的索引i中的与{h(f(ik,w),1),…,h(f(ik,w),n)}一致的地址。由于i[h(f(ik,w),1)]=id(d_t(1)),…,i[h(f(ik,w),n)]=id(d_t(n)),因此,检索部305从所确定的地址中提取不同的u比特的多个数据名id(d_t(1)),…,id(d_t(n))。下面,将集合{id(d_t(1)),…,id(d_t(n))}称作检索结果信息。
这里,设存在索引i的与h(f(ik,w),1),…,h(f(ik,w),j)一致的地址中存储的数据名id(d_t(1)),…,id(d_t(j)),但是,不存在与h(f(ik,w),j+1)一致的地址中存储的数据名id(d_t(j+1)))。该情况下,根据s706中的索引i的生成方法可知,也不存在与h(f(ik,w),j+2),…,h(f(ik,w),n)一致的地址中存储的数据名id(d_t(j+2)),…,id(d_t(n))。因此,检索部305可以不对h(f(ik,w),j+2),…,h(f(ik,w),n)实施数据名的提取处理。即,检索部305将数据名id(d_t(j+1)),…,id(d_t(n))设定为空字符,生成检索结果信息{id(d_t(1)),…,id(d_t(n))}即可。即,检索部305生成检索结果信息{id(d_t(1)),…,id(d_t(j))}即可。id(d_t(1)),…,id(d_t(j))是相互不同的u比特的整数。
在与h(f(ik,w),1),…,h(f(ik,w),n)一致的地址中存储的数据名id(d_t(1)),…,id(d_t(n))均不存在的情况下,检索部305将检索结果信息设定为“无”。即,在索引i中不存在与h(f(ik,w),1),…,h(f(ik,w),n)中的任何一个一致的地址的情况下,检索部305将检索结果信息设定为“无”。
另外,在s806中,检索部305根据检索种子f(ik,w)生成全部检索关键字h(f(ik,w),1),…,h(f(ik,w),n),但是,也可以交替执行s806和s807。例如,检索部305在刚刚根据检索种子f(ik,w)生成检索关键字h(f(ik,w),1)之后,从索引i的数组元素i[h(f(ik,w),1)]中取出数据名id(d_t(1))。接着,检索部305在刚刚根据检索种子f(ik,w)生成检索关键字h(f(ik,w),2)之后,从索引i的数组元素i[h(f(ik,w),2)]中取出数据名id(d_t(2))。然后,检索部305反复进行同样的处理。通过采用这种处理顺序,能够省略索引i中不存在的地址h(f(ik,w),j+2),…,h(f(ik,w),n)的计算。
在s808中,检索部305从数据保管部303中读出与在s807中提取出的u比特的数据名id(d_t(1)),…,id(d_t(n))对应的加密数据c_t(1),…,c_t(n)。针对某个整数j,在数据名id(d_t(j+1)),…,id(d_t(n))为空字符的情况下,不存在加密数据c_t(j+1),…,c_t(n),因此,不执行与这些加密数据有关的处理。在s807中提取出的检索结果信息为“无”的情况下,不执行s808的处理本身。
在s809中,通信部302从检索部305接收在s808中读出的加密数据{c_t(1),…,c_t(n)}。通信部302向终端装置201发送加密数据{c_t(1),…,c_t(n)}。另外,在s807中提取出的检索结果信息为“无”的情况下,通信部302向终端装置201发送“无加密数据”这样的信息。
在s810中,通信部210接收在s809中发送的加密数据{c_t(1),…,c_t(n)}。然后,数据解密部211使用秘密密钥管理部203中存储的加密密钥ek对各加密数据c_t(i)进行解密,生成明文数据d_t(i)=dec(ek,c_t(i))(1≤i≤n)。另外,在不存在加密数据{c_t(j+1),…,c_t(n)}的情况下,数据解密部211不对这些加密数据进行任何处理。并且,在通信部210接收到“无加密数据”这样的信息的情况下,数据解密部211不进行任何处理。数据解密部211将进行解密而得到的明文数据{d_t(1),…,d_t(n)}输出到显示器或打印机等。在通信部210接收到“无加密数据”这样的信息的情况下,数据解密部211输出表示已不存在检索中命中的数据的消息等。
图13是示出检索系统100的数据删除处理的具体例的流程图。
图13的流程图对应于图8的流程图。s901对应于s401,s902对应于s402,s903对应于s403,s904对应于s404,s905对应于s405。
在s901中,用户200使用键盘或鼠标等在终端装置201中指定删除数据名del={id(d_d(1)),…,id(d_d(k))}。数据删除请求生成部207受理删除数据名del的输入。k为1以上的整数。id(d_d(1)),…,id(d_d(k))是相互不同的u比特的整数。
在s902中,数据删除请求生成部207生成包含在s901中输入的删除数据名del={id(d_d(1)),…,id(d_d(k))}的删除数据信息。
在s903中,通信部210向服务器装置301发送在s902中生成的删除数据信息。
在s904中,通信部302接收在s903中发送的删除数据信息。索引更新部307从由通信部302送来的删除数据信息中提取删除数据名del={id(d_d(1)),…,id(d_d(k))}。索引保管部304从记录介质中读出全部索引i,寻找包含id(d_d(1)),···,id(d_d(k))中的任意id的索引i。索引保管部304在发现了相应索引i的情况下,从该索引i的相应地址中删除删除数据名。在本例中,索引保管部304从索引i中删除包含该删除数据名的地址本身。
在s905中,数据保管部303从记录介质中删除与从索引更新部307送来的删除数据名del={id(d_d(1)),…,id(d_d(k))}对应的加密数据。
图14是示出检索系统100的索引删除处理的具体例的流程图。
图14的流程图对应于图9的流程图。s1001对应于s501,s1002对应于s502,s1003对应于s503,s1004对应于s504。
在s1001中,用户200使用键盘或鼠标等在终端装置201中指定删除索引名del-i={id(i_1),…,id(i_k)}。索引删除请求生成部208受理删除索引名del-i的输入。k为1以上的整数。id(i_1),…,id(i_k)是相互不同的v比特的整数。
在s1002中,索引删除请求生成部208生成包含在s1001中输入的删除索引名del-i的删除索引信息。
在s1003中,通信部210向服务器装置301发送在s1002中生成的删除索引信息。
在s1004中,通信部302接收在s1003中发送的删除索引信息。索引更新部307从由通信部302送来的删除索引信息中提取删除索引名del-i={id(i_1),…,id(i_k)}。索引保管部304从记录介质中删除与从索引更新部307送来的id(i_1),…,id(i_k)对应的索引。
***效果的说明***
本实施方式例如发挥以下的效果。
在本实施方式中,执行检索的一侧即服务器装置301使用针对输入的关键字输出唯一数值的函数h进行检索。服务器装置301保管具有与从函数h输出的数值一一对应的多个存储区域的数据构造作为索引i。如果存在输入到函数h的关键字,则服务器装置301能够执行检索。请求检索的一侧即终端装置201仅将关键字交给服务器装置301,就能够请求检索。由此,根据本实施方式,请求检索的一侧和执行检索的一侧的整体处理效率提高。
在本实施方式中,终端装置201对关键字进行加密而生成检索种子,代替明文的关键字而将检索种子交给服务器装置301。由此,根据本实施方式,不仅能够对由服务器装置301检索的数据进行隐匿,而且能够对关键字进行隐匿。即,能够进行安全性较高的隐匿检索。
在本实施方式中,与现有方式不同,在检索处理中,能够降低生成用于由作为检索者的用户200利用的终端装置201进行检索的信息的成本。正确地说,现有方式中的检索查询的生成成本依赖于登记数据数量,与此相对,检索系统100中的检索种子的生成成本不依赖于登记数据数量。因此,能够高效地执行终端装置201中的检索处理。在使用计算资源匮乏的ic卡这样的设备作为终端装置201的情况下,本实施方式特别有效。
在本实施方式中,与现有方式不同,在检索处理中,用于进行检索的信息的数据大小不依赖于登记数据数量。因此,能够减小用于进行检索的信息的数据大小。正确地说,现有方式中的检索查询的数据大小依赖于登记数据数量,与此相对,检索系统100中的检索种子的数据大小不依赖于登记数据数量。因此,能够减小数据大小。在通信频带狭窄的情况下,本实施方式特别有效。
检索系统100能够在对数据和关键字进行加密的状态下进行检索。因此,与被检索的数据有关的信息和与检索中使用的关键字有关的信息都不会泄漏。由此,能够进行安全的检索。
图15是示出本实施方式的终端装置201和服务器装置301的硬件结构的例子的图。
在图15的例子中,终端装置201和服务器装置301分别是计算机,具有输出装置910、输入装置920、存储装置930、处理装置940这样的硬件。通过在本发明的实施方式的说明中作为“部”说明的部分来利用硬件。
输出装置910例如是lcd(liquidcrystaldisplay:液晶显示器)等显示装置、打印机、通信模块。输出装置910用于由在本发明的实施方式的说明中作为“部”说明的部分输出或发送数据、信息、信号。
输入装置920例如是键盘、鼠标、触摸面板、通信模块。输入装置920用于由在本发明的实施方式的说明中作为“部”说明的部分输入或接收数据、信息、信号。
存储装置930例如是rom(readonlymemory:只读存储器)、ram(randomaccessmemory:随机存取存储器)、hdd(harddiskdrive:硬盘驱动器)、ssd(solidstatedrive:固态硬盘)。在存储装置930中存储有程序931、文件932。程序931包含执行在本发明的实施方式的说明中作为“部”说明的部分的处理的程序。文件932包含由在本发明的实施方式的说明中作为“部”进行说明的部分进行运算、加工、读取、写入、利用、输入、输出等的数据、信息、信号等。所述记录介质相当于存储装置930。
处理装置940例如是cpu(centralprocessingunit:中央处理单元)。处理装置940经由总线等与其他硬件设备连接,对这些硬件设备进行控制。处理装置940从存储装置930中读出程序931,执行程序931。处理装置940用于由在本发明的实施方式的说明中作为“部”说明的部分进行运算、加工、读取、写入、利用、输入、输出等。
关于在本发明的实施方式的说明中作为“部”说明的部分,也可以将“部”改写成“电路”、“装置”、“设备”。并且,关于在本发明的实施方式的说明中作为“部”说明的部分,也可以将“部”改写成“工序”、“步骤”、“处理”。即,在本发明的实施方式的说明中作为“部”说明的部分可仅通过软件来实现,仅通过硬件来实现,或者通过软件和硬件的组合来实现。软件作为程序931存储在存储装置930中。程序931使计算机作为在本发明的实施方式的说明中作为“部”说明的部分发挥功能。或者,程序931使计算机执行在本发明的实施方式的说明中作为“部”说明的部分的处理。
以上说明了本发明的实施方式,但是,也可以部分地实施该实施方式。例如,可以仅采用在该实施方式的说明中作为“部”说明的部分中的任意一方,也可以采用若干个部分的任意组合。另外,本发明不限于该实施方式,能够根据需要进行各种变更。
标号说明
100:检索系统;101:公司内部lan;102:互联网;200:用户;201:终端装置;202:秘密密钥生成部;203:秘密密钥管理部;204:关键字设定部;205:数据加密部;206:索引生成部;207:数据删除请求生成部;208:索引删除请求生成部;209:关键字加密部;210:通信部;211:数据解密部;300:数据中心;301:服务器装置;302:通信部;303:数据保管部;304:索引保管部;305:检索部;306:检索关键字生成部;307:索引更新部;910:输出装置;920:输入装置;930:存储装置;931:程序;932:文件;940:处理装置。