加密消息搜索方法、消息发送接收系统、服务器、终端、程序与流程

文档序号:17439460发布日期:2019-04-17 04:33阅读:291来源:国知局
加密消息搜索方法、消息发送接收系统、服务器、终端、程序与流程

本发明涉及信息安全技术的应用,特别涉及,形成组的多个用户发送接收消息的消息发送接收技术。



背景技术:

以业务中的利用为前提的消息发送接收系统中,在不论个人计算机或智能手机等终端的种类的多设备兼容的系统中,存在考虑业务上的机密信息泄露而在终端中不保留包含消息的数据那样的、基于云型的消息发送接收系统。作为基于云型的消息发送接收系统的例子,有非专利文献1那样的产品。

这样的基于云型的消息发送接收系统包括:通过加密通信路径而防止窃听的功能、以及如已叙述的那样,通过在终端中不保留数据而防止因终端的丢失或非法带出而信息泄露的功能。这样,当前的基于云型的消息发送接收系统是,虽然对于对通信路径和终端的威胁进行着应对,但是另一方面对于对构成消息发送接收系统的服务器的威胁不一定充分应对的状况。这里所说的对于服务器的威胁中,例如有对于服务器的来自外部的攻击、服务器管理者等造成的来自内部的非法访问等。

对于对该服务器的威胁,考虑将服务器中保存的消息加密的对策。但是,在服务器中是可解码的情况下,对于上述的威胁依然存在从服务器泄露消息的可能性。因此,重要的是使消息对于服务器被隐匿,即在服务器中不被窃听。

作为使得在服务器中不被窃听的一个方法,有实现一边对于服务器将消息隐匿一边仅在终端中能够进行消息的解码那样的端至端中的加密通信的方法。为了实现这样的端至端中的加密通信,如何在终端间共享终端中使用的公共密钥(以下,也称为会话密钥)成为问题。作为其解决对策,提出在中央具有认证服务器的星型的网络中,对认证服务器不泄漏任何信息地在利用者间共享公共密钥的协议(非专利文献2)。通过非专利文献2的协议,能够在对服务器隐匿消息的情况下在终端间进行发送接收。

但是,若根据业务中的利用,则关于过去的消息交换需要高效率处理的方法。作为这样的手段,考虑消息的搜索功能,但是在适用了基于非专利文献2的协议的利用者间的会话密钥共享技术的情况下,因为服务器中保存的消息被加密,所以需要可在将服务器中保存的消息隐匿的情况下进行搜索。而且,还需要难以从搜索内容本身和对过去的搜索的回答的倾向等推测隐匿化的内容。

作为不解码包含服务器中保存的加密消息的加密数据而进行搜索的方法,有将对于有关加密数据的信息的哈希值记录在服务器中的方法(专利文献1)。

【现有技术文献】

【非专利文献】

【非专利文献1】“ビジネス向けグループチャットtopicroom”,[online],[平成28年8月16日搜索],因特网<url:https://www.ntts.co.jp/products/topicroom/index.html>

【非专利文献2】小林鉄太郎,米山一樹,吉田麗生,川原祐人,冨士仁,山本具英:“スケーラブルな動的多者鍵配布プロトコル”,scis2016,4e2-3,2016.

【专利文献】

【专利文献1】日本特开2015-118603号公报



技术实现要素:

发明要解决的课题

但是,在专利文献1的搜索技术中,存在对于相同的信息始终得到相同的哈希值,所以通过使用在一定期间窃听通信路径得到的哈希值与彩虹表,推测要搜索的信息和其搜索结果的问题。

鉴于这样的问题点,本发明的目的是提供在记录了将n台终端中共享的消息加密的加密消息的服务器中,在加密的情况下进行消息搜索时,难以推测搜索内容和搜索结果的加密消息搜索技术。

用于解决课题的手段

本发明的一个方式是加密消息搜索方法,将n设为2以上的整数,在包含共享消息的n台终端和记录了将所述消息加密的加密消息的服务器的消息发送接收系统中,所述终端使用消息搜索用字符串搜索所述加密消息,将所述服务器管理在所述n台终端中共享的消息的单位设为房间,将其识别符设为房间识别符,在所述n台终端的记录单元中,记录所述房间识别符、会话密钥,所述加密消息搜索方法包括:所述终端在房间识别符共享后或者共享了最初的搜索用私钥后,每当经过事先设定的更新间隔,生成随机数作为搜索用私钥,使用所述会话密钥从所述搜索用私钥生成加密搜索用私钥,将所述加密搜索用私钥发送到所述服务器的加密搜索用私钥发送步骤;所述终端使用所述房间识别符从所述服务器取得所述加密搜索用私钥,使用所述会话密钥从所述加密搜索用私钥解码所述搜索用私钥的搜索用私钥解码步骤;所述终端生成将消息加密的加密消息,使用与所述消息有关的信息和所述搜索用私钥中最新搜索用私钥,生成消息搜索用的索引集合,将所述索引集合和所述加密消息与所述房间识别符一起发送到所述服务器的加密消息发送步骤;所述终端使用所述消息搜索用字符串和所述搜索用私钥中1个以上的搜索用私钥,生成查询集合,将所述查询集合与所述房间识别符一起发送到所述服务器的查询发送步骤;所述服务器在与所述房间识别符相关联地管理的索引集合和加密消息中,搜索具有与所述查询集合的元素一致的索引集合的元素的加密消息,将所述加密消息发送到所述终端的加密消息回信步骤;以及所述终端从所述加密消息解码消息的加密消息解码步骤。

发明的效果

按照本发明,实现在记录了将n台终端中共享的消息加密的加密消息的服务器中,在加密的情况下进行消息搜索时,难以推测搜索内容和搜索结果。

附图说明

图1是例示消息发送接收系统的结构的图。

图2是例示第一实施方式的服务器100的功能结构的图。

图3是例示第一实施方式的终端200的功能结构的图。

图4是例示第一实施方式的消息发送接收方法的处理流程(系统设置)的图。

图5是例示第一实施方式的消息发送接收方法的处理流程(搜索用私钥的共享)的图。

图6是例示第一实施方式的消息发送接收方法的处理流程(加密消息的发送)的图。

图7是例示第一实施方式的消息发送接收方法的处理流程(加密消息的搜索)的图。

图8是例示第一实施方式的索引生成单元245的操作的状况的图。

图9是例示第一实施方式的消息发送接收方法的处理流程(搜索用私钥的更新)的图。

图10是例示第二实施方式的服务器500的功能结构的图。

图11是例示第二实施方式的终端600的功能结构的图。

图12是例示第二实施方式的消息发送接收方法的处理流程(系统设置)的图。

具体实施方式

在说明实施方式之前,说明本说明书中的记述方法等。

<记述方法>

_(下划线)表示下标。例如,xy_z表示yz对于x的上标,xy_z表示yz对于x的下标。

对于某个集合set,将从set均匀随机地选择元素m,记述为m←uset。

对于某个概率的多项式时间算法alg,在对于输入x将alg(x)视为概率变量时,将按照该概率分布随机地输出y记述为y←ralg(x)。

<定义>

将n设为正整数全体的集合。

将函数crhf设为将任意长度的字符串作为输入、输出固定长度的字符串的抗冲突哈希函数。虽然输出字符串的长度是固定的,但是对于其长度不特别限定。

将函数f设为以两个任意长度的字符串作为输入,输出字符串的函数。对于输出字符串的长度不特别限定。作为函数f的例子,有将两个输入字符串结合的函数f(m,r)=m||r。

而且,在以下说明的实施方式中,作为函数crhf、函数f可以使用任意的函数。其中,函数f的第2参数如后所述那样,成为明文空间mpk或者密钥空间key的元。

以下,详细地说明本发明的实施方式。而且,对附图中具有相同的功能的结构单元附加相同的标号,省略重复说明。

<第一实施方式>

第一实施方式的消息发送接收系统使用公钥加密算法。因此,首先说明公钥加密算法。

将k设为安全参数。设k1∈n,将k1比特长的密钥空间设为key1={0,1}k_1

公钥加密方式由三个算法(gen,enc,dec)构成。gen是将安全参数k作为输入,输出公钥pk和私钥sk的组(pk,sk)的密钥生成算法,表示为(pk,sk)←rgen(1k)。而且,这时确定明文空间mpk。

enc是将公钥pk和明文m∈mpk作为输入,输出密文c的加密算法,表示为c←renc(pk,m)。

dec是将私钥sk和密文c作为输入,输出明文m’的解码算法,表示为m’←rdec(sk,c)。

而且,上述三个算法对于任意的安全参数k、任意的密钥对(pk,sk)←rgen(1k)、任意的明文m∈mpk,满足dec(sk,enc(pk,m))=m。

接着,考虑对于将明文空间mpk和密钥空间key1={0,1}k_1的直积mpk×key1设为定义域,将明文空间mpk设为值域的函数f:mpk×key1→mpk,存在函数g:mpk×key1→mpk,对于任意的(k,k1)∈mpk×key1,满足下式的情况。

g(f(k,k1),k1)=k…(1)

对于rsa加密或椭圆elgamal加密,可以举出满足上述条件(式(1))的函数f,g的例子。在rsa加密方式的情况下,明文空间mpk是将密钥生成算法执行时生成的两个素数p,q的积设为n=pq时,在{1,…,n-1}中,与n互质的整数的集合中,加入了以下式定义的运算·的乘法群。

x·y:=x×ymodn

而且,右边的×是整数之间的通常的积。

这时,为key1=mpk,即,函数f:mpk×mpk→mpk,函数g:mpk×mpk→mpk,对于任意的(k,k1)∈mpk×mpk,作为满足式(1)的(f,g)的例子,存在以下的函数的组。

而且,运算/是,将运算·中的x2的逆元设为x2-1时,定义为x1/x2=x1·x2-1的运算。

而且,椭圆elgamal加密的情况下,明文空间mpk是密钥生成算法执行时生成的椭圆曲线上的点形成的加法群。这时,为key1=mpk,即,函数f:mpk×mpk→mpk,函数g:mpk×mpk→mpk,对于任意的(k,k1)∈mpk×mpk,作为满足式(1)的(f,g)的例子,存在以下的函数的组(其中,将+设为上述加法群中的加法)。

而且,运算-是在将运算+中的x2的逆元设为-x2时,定义为x1-x2=x1+(-x2)的运算。

作为满足上述条件的公钥加密方式和函数(f,g)的例子,举出rsa加密或椭圆elgamal加密和其附带的函数(f,g),但是不限于这些加密,在第一实施方式的消息发送接收系统的结构中,可以使用上述以外的公钥加密方式和其附带的函数(f,g)。

[系统结构]

第一实施方式的消息发送接收系统如图1中例示的那样,包括服务器100和n(≧2)台的终端200。在本实施方式中,服务器100以及终端2001,…,终端200n分别连接到网络300。网络300可以是以服务器100,终端2001,…,终端200n可分别相互通信的方式构成的网络。在网络300中,例如可以使用因特网等。

如图2中例示的那样,服务器100包括:记录单元110;房间(room)生成单元120;密钥生成单元130;以及索引搜索单元140。如图3中例示的那样,终端200i(1≦i≦n)包括:记录单元210;房间生成请求发送单元220;搜索用私钥生成单元230;搜索用私钥加密单元233;加密搜索用私钥解码单元235;消息加密单元240;消息id生成单元243;索引生成单元245;查询生成单元250;以及加密消息解码单元255。该服务器100以及终端2001,…,终端200n通过进行从图4至图9中例示的各步骤的处理,实现实施方式的消息发送接收方法。

服务器100以及终端200i例如是,在具有中央运算处理装置(cpu:centralprocessingunit)、主存储装置(ram:randomaccessmemory)等的公知或者专用的计算机中读入特别的程序而构成的特别的装置。各装置例如在中央运算处理装置的控制下执行各处理。输入到各装置的数据或在各处理中得到的数据例如被存储在主存储装置中,主存储装置中存储的数据根据需要读入到中央运算处理装置,被其它处理利用。各装置具有的各处理单元的至少一部分也可以由集成回路等硬件构成。

服务器100具有的记录单元110以及终端200i具有的记录单元210例如可以通过ram(randomaccessmemory)等主存储装置、硬盘或光盘或者闪速存储器(flashmemory)那样的半导体存储器元件构成的辅助存储装置、或者关系数据库或密钥值存储等中间件构成。各记录单元为了存储秘密信息,希望是(例如,sim卡等那样)具有防篡改性的存储装置。

[系统设置]

以下,对于经由服务器100进行消息的发送接收的终端2001,…,终端200n(以下,也称为组),将管理在该组中共享的消息的单位称为房间。具体地说,服务器100的记录单元110确保注册在该组共享的消息的记录区域(即,物理性的房间)。将用于识别该房间的识别符称为房间识别符。

这里,将房间识别符roomid、公钥pkroomid、私钥skroomid、会话密钥r1在属于组的终端2001,…,终端200n间共享。参照图4说明系统设置的流程。

而且,在终端200i和服务器100之间,例如也可以如tls通信那样使用加密通信。而且,终端200i设想个人计算机或智能手机等,但是不限于此,只要可用于用户发送接收消息则任何设备都可以。

将发出房间生成的请求的终端200i设为代表终端。代表终端也可以从终端2001,…,终端200n中任意地选定。因此,以下将终端2001设为代表终端。而且,将代表终端2001以外的终端200j(2≦j≦n)称为一般终端200j。

代表终端2001的房间生成请求发送单元220对服务器100发送房间生成请求(s4-10)。若服务器100接收该请求,则服务器100的房间生成单元120生成以房间识别符roomid识别的房间(s4-20)。这时,服务器100的密钥生成单元130通过密钥生成算法,生成在以roomid识别的房间中用于加密、解码的公钥pkroomid和私钥skroomid(s4-30)。而且,在密钥生成算法执行时同时决定明文空间mpk。而且,生成公钥pkroomid和私钥skroomid的公钥加密算法(gen,enc,dec)只要存在满足前述的条件(式(1))的函数(f,g)在可以使用任意的算法。服务器100将房间识别符roomid、公钥pkroomid、私钥skroomid记录在记录单元110中,对代表终端2001发送这些数据(s4-40)。

而且,s4-10~s4-40的处理也可以在以下那样的流程中处理。房间生成单元120按照房间生成请求生成房间,对代表终端2001发送房间识别符roomid。之后,代表终端2001将密钥生成请求与房间识别符roomid一起发送到服务器100,密钥生成单元130生成以roomid识别的房间用的公钥pkroomid和私钥skroomid,对代表终端2001发送公钥pkroomid和私钥skroomid。

一般终端200j若从代表终端2001接收到表示到房间的邀请的房间识别符roomid时(s4-50),对服务器100发送房间识别符roomid(s4-55),接收公钥pkroomid和私钥skroomid(s4-60)。

各终端200i将房间识别符roomid、公钥pkroomid、私钥skroomid记录在记录单元210中。

而且,各终端200i共享会话密钥r1,记录在记录单元210中(s4-70)。关于共享的方法,例如使用非专利文献2中记载的技术即可。而且,设会话密钥r1对于服务器100被隐匿。

[搜索用私钥的共享]

这里,经由服务器100在属于组的全部终端200i之间共享某个终端200i_0(1≦i0≦n)生成的搜索用私钥searchkey。参照图5说明搜索用私钥searchkey的共享的流程。

而且,生成搜索用私钥searchkey的终端200i_0,可以是代表终端2001也可以是一般终端200j。而且,伴随会话经过,在中途生成搜索用私钥searchkey的终端200i_0也能够从组脱离。在该情况下,假设属于组的其它的终端200i_1(i1是与i0不同的1以上n以下的整数)继续生成搜索用私钥searchkey的作用。即,设参加到当前组的终端200i的其中一个进行搜索用私钥searchkey的生成。

终端200i_0的搜索用私钥生成单元230在房间识别符共享后,将随机选择的明文空间mpk的元r作为搜索用私钥searchkey生成(s5-10)。即,成为searchkey=r。而且,将r称为随机数。该搜索用私钥searchkey是对每个房间生成的私钥。终端200i_0将搜索用私钥searchkey记录在记录单元210中。

终端200i_0的搜索用私钥加密单元233生成加密搜索用私钥cipherkey←renc(pkroomid,f(searchkey,r1))(s5-20),将加密搜索用私钥cipherkey与房间识别符roomid一起发送到服务器100(s5-30)。服务器100将接收到的加密搜索用私钥cipherkey与房间识别符roomid相关联地记录在记录单元110中。

终端200i_0以外的终端200i_1将在s4-50中接收到的房间识别符roomid发送到服务器100(s5-40),从服务器100接收加密搜索用私钥cipherkey(s5-50)。

从s5-10至s5-30的处理在代表终端2001在s4-50中与一般终端200j共享了房间识别符roomid后,任何时候执行都可以。因此,终端200i_0以外的终端200i_1任何时候将s5-40的加密搜索用私钥cipherkey的取得请求发送到服务器100都可以。例如,可以不紧接从代表终端2001接受至房间的邀请之后,而在邀请后初次登录时。

终端200i_1的加密搜索用密钥解码单元235计算temp=dec(skroomid,cipherkey),使用从记录单元210读出的会话密钥r1计算searchkey=g(temp,r1),解码搜索用私钥searchkey(s5-60)。函数(f,g)通过满足前述的条件(式(1)),可以得到搜索用私钥searchkey。终端200i_1将在s5-60中得到的搜索用私钥searchkey记录在记录单元210中。

终端200i_0的搜索用私钥生成单元230在房间识别符共享后,执行用于搜索用私钥生成的最初的随机数生成(即,明文空间mpk的元r的随机选择),但如在稍后详述的那样,以下为了搜索用私钥更新,定期地生成随机数,每当这时,搜索用私钥加密单元233从搜索用私钥生成加密搜索用私钥,将加密搜索用私钥发送到服务器100。而且,终端200i_1适时从服务器100取得更新后的加密搜索用私钥,通过解码取得搜索用私钥。即,在终端200i的记录单元210中,记录多个搜索用私钥。以下,将房间识别符共享后最初生成的搜索用私钥称为第一代搜索用私钥searchkey1,将以后定期地生成的搜索用私钥依次称为第二代搜索用私钥searchkey2、第三代搜索用私钥searchkey3,…。而且,将搜索用私钥searchkey之中最新一代称为最新搜索用私钥。

[加密消息的发送]

这里,终端200i对以房间识别符roomid管理的房间发送消息。这时,消息被加密。加密的消息(加密消息)与具有房间识别符roomid的房间相关联地记录在服务器100的记录单元110中,同时还记录在搜索中使用的索引的集合(索引集合)和消息id的组,以便可以在稍后加密的情况下进行搜索。参照图6说明终端200i的消息的发送的流程。

终端200i的消息加密单元240将希望在组内共享的消息m1加密,生成加密消息enc(m1)(s6-10)。这里,消息的加密中使用的密钥只要是对服务器100隐匿的密钥,则无论是通过公共密钥加密算法生成的密钥,还是通过公钥加密算法生成的密钥都没关系。而且,该密钥设为在组内的终端200i间被共享的密钥。而且,发送消息的终端200i是属于组的任意的终端。

在加密消息m1时,终端200i的消息id生成单元243一起生成用于在以房间识别符roomid识别的房间内唯一地识别加密的消息enc(m1)的消息识别符idm_1(s6-15)。因为对于服务器100将消息m1保持隐匿,即将enc(m1)发送到服务器100并记录在记录单元110中,所以生成消息识别符idm_1的函数优选是难以进行倒像计算(不容易从消息识别符idm_1推测消息m1)的函数。

进而,在加密消息m1时,终端200i的索引生成单元245一起生成为了搜索加密的消息enc(m1)而使用的索引(s6-20)。关于可搜索的字符串长度,既可以设置上限,也可以不设置。以下,设可搜索的字符串长的上限被确定,将其值设为l来进行说明。

以下,说明索引的生成方法(参照图7)。在索引的生成中使用函数g。函数g设为以任意长度的字符串作为输入,输出具有依赖于输入字符串的浓度的字符串的集合(字符串集合)的函数。而且,在函数g的输入为消息m1的情况下,将作为函数g的输出的字符串集合称为与消息m1有关系的信息,表示为g(m1)={s1,s2,..,sq,..}。作为这样的函数g的例子,有输出消息m1的元信息的函数、输出消息m1内包含的字符串的函数、输出灵活运用了ngram-索引的消息m1内的连续n字符构成的全部字符串的函数等。关于ngram-索引,具体参照参考文献1。

(参考文献1:北研二,津田和彦,獅々堀正幹,“情報検索アルゴリズム”,共立出版,2002年)

这里,将消息m1的字符串长设为lengthm_1,p=min{l,lengthm_1},对于i=1,..,p,进行以下的处理,生成字符串集合g(m1)。

索引生成单元245列举全部消息m1内的连续的i个字符构成的字符串(即,长度i的字符串)(s6-20-1)。将其设为字符串集合{s1(1),s2(1),..,sj(i),..}(其中,j=1,2,..,lengthm_1-i+1)。字符串集合g(m1)={s1(1),s2(1),..,sj(i),..}是与消息m1有关的信息。

而且,既可以从消息全体列举该字符串,也可以将消息区分为每个句节,从各句节列举该字符串。而且,关于列举的方法,例如,可以将从消息或句节的左端开始取起的连续的i个字符构成的字符串设为s1(i),将从左端开始向右偏移1个得到的连续的i个字符构成的字符串设为s2(i)。其中,因为对使用了索引的消息搜索没有影响,所以使用任何列举方法都可以。

接着,索引生成单元245使用字符串集合g(m1)={s1(1),s2(1),..,sj(i),..}和从记录单元210读出的最新搜索用私钥searchkey,对j=1,2,..,lengthm_1-i+1,通过下式计算索引(s6-20-2)。如上述那样,虽然在记录单元210中一般记录有多个搜索用私钥,但是这里设读出的搜索用私钥searchkey为最新的搜索用私钥、最新搜索用私钥。即,使用最新搜索用私钥searchkey,对各字符串sj(i)计算索引indexj(i)

而且,设索引集合的各元素为长度l以下的字符串。将通过式(2)得到的p/2(2lengthm1-p+1)个索引设为元素的索引集合ind为下式那样。

例如,若将可搜索的字符串长度的上限l设为3以上的整数,设消息m1为3字符构成的消息“あいう”,则计算以下的6个索引。

而且,一般来说,索引集合ind={index1,index2,..,indexq,..}可以从与消息m1有关的信息g(m1)={s1,s2,..,sq,..},通过下式计算求出各元素。

indexq=crhf(f(sq,searchkey))

终端200i将下式中表示的索引集合ind的各元素和消息识别符的组与加密消息enc(m1)一起,发送到服务器100(s6-30)。

服务器100将加密消息enc(m1)、各索引和消息识别符的组(index1(1),..,indexj(i),..,indexlengthm_1(p),idm_1)记录在记录单元110中。

而且,在可搜索的字符串长度的上限未确定的情况下,若表现为l=+∞,则成为p=lengthm_1,对消息m1,可以通过与上述同样的方法,生成索引集合ind

[加密消息的搜索]

这里,终端200i搜索具有房间识别符roomid的房间中管理的消息。从成为搜索关键字的字符串(以下,成为消息搜索用字符串)生成查询,并在保持加密的情况下进行消息的搜索。参照图8说明终端200i的消息搜索的流程。

终端200i从房间中累积的加密消息,进行与消息搜索用字符串m’一致的消息的搜索。终端200i的查询生成单元250一般从记录单元210读出多个搜索用私钥,对各搜索用私钥searchkey计算消息搜索中使用的查询query,作为query=crhf(f(m’,searchkey)),生成以这些查询作为元素的查询集合(s7-10)。将t1,t2设为表示搜索用私钥的世代的1以上的整数,对于t1≦i≦t2构成的整数i,对第i代搜索用私钥searchkeyi计算查询queryi=crhf(f(m’,searchkeyi)),生成查询集合{queryt_1,queryt_1+1,..,queryt_2}。

例如,在从当前对某个过去的时间点期间被发送的消息进行搜索的情况下,仅对该期间被更新的搜索用私钥生成查询即可。即,不一定需要生成对过去全部的搜索用私钥的查询(为t1=1)。

而且,在可搜索的字符串长度的上限l被确定的情况下,也可以首先将消息搜索用字符串m’的长度与l比较,若大于l,则返回错误。通过这样处理,实现处理的高效率。

终端200i的查询生成单元250将查询集合{queryt_1,queryt_1+1,..,queryt_2}发送到服务器100(s7-20)。

服务器100的索引搜索单元140在记录单元110中记录的索引集合的各元素和消息识别符的组(index1(1),..,indexj(i),..,idm_1)中,提取全部索引indexj(i)与接收到的查询集合{queryt_1,queryt_1+1,..,queryt_2}的各元素queryi一致的索引和消息识别符的组(indexj(i),idm_1)(s7-30)。服务器100的索引搜索单元140发送与终端200i中提取的消息识别符idm_1对应的加密消息enc(m1)(s7-40)。

终端200i的加密消息解码单元255解码s7-40中接收到的加密消息加密消息enc(m1),在画面上显示消息m1作为搜索结果(s7-50)。

而且,也可以取代发送与在s7-40中提取的消息识别符idm_1对应的加密消息enc(m1),发送消息识别符idm_1。在该情况下,终端200i将接收到的消息识别符idm_1发送到服务器100,从服务器100取得与该消息识别符idm_1对应的加密消息enc(m1),使用加密消息解码单元255解码加密消息enc(m1),将消息m1作为搜索结果显示在画面上。

[搜索用私钥的更新]

这里,终端200i_0更新搜索用私钥searchkey。搜索用私钥searchkey的更新间隔也可以以防止从服务器100的记录单元110中记录的索引和与其相关联的消息识别符的个数(分布)推测与索引或消息识别符对应的消息的程度的频度来定期地进行。例如,考虑每1个月、每半年等,但是更新间隔短可以更防止被推测。参照图9,说明终端200i_0的搜索用私钥的更新的流程。

终端200i_0的搜索用私钥生成单元230若检测到经过了事前设定的更新间隔,则生成随机地选择的明文空间mpk的元r’作为更新后的搜索用私钥(s8-10)。即,设searchkey=r’。将更新后的搜索用私钥与组内的终端200i_1共享,属于终端200i_0的搜索用私钥加密单元233计算加密搜索用私钥cipherkey←renc(pkroomid,f(searchkey,r1))(s8-20),将加密搜索用私钥cipherkey发送到服务器100(s8-30)。服务器100将接收到的加密搜索用私钥cipherkey与房间识别符roomid相关联地记录在记录单元110中。而且,服务器100也将以前的加密搜索用私钥cipherkey记录在录单元110中。在终端200i_1从服务器100取得加密搜索用私钥cipherkey的情况下(s8-40),还取得包含过去的加密搜索用私钥{cipherkey1,..,cipherkeyi,..}(s8-50)。其中,加密搜索用私钥cipherkeyi表示从第i代搜索用私钥searchkeyi生成的私钥。

而且,也可以取代过去的全部加密搜索用私钥,而仅取得与最新搜索用私钥对应的加密搜索用私钥。通过这样处理,可以实现处理的高效化。

终端200i_1为了知道有了搜索用私钥的更新,既可以与终端200i_0共享更新间隔,也可以终端200i_0将已更新的情况通知终端200i_1,也可以终端200i_1自己定期地取得加密搜索用私钥。

终端200i_1的加密搜索用密钥解码单元235对于取得的加密搜索用私钥cipherkey计算temp=dec(skroomid,cipherkey),使用从记录单元210读出的会话密钥r1生成searchkey=g(temp,r1)(s8-60)。该处理仅反复进行取得的加密搜索用私钥的数目。

在本实施方式的说明中,代表终端2001和一般终端200j其作用是不同的。即虽然仅是否负责向服务器100发送房间生成请求,但是关于这些终端的结构作为与图3所示相同性质的结构进行了说明。但是,不一定需要这样构成。即,代表终端2001作为包含记录单元210、房间生成请求发送单元220、搜索用私钥生成单元230、搜索用私钥加密单元233、加密搜索用私钥解码单元235、消息加密单元240、消息id生成单元243、索引生成单元245、查询生成单元250、加密消息解码单元255而构成,另一方面,一般终端200j作为包含记录单元210、搜索用私钥生成单元230、搜索用私钥加密单元233、加密搜索用私钥解码单元235、消息加密单元240、消息id生成单元243、索引生成单元245、查询生成单元250、加密消息解码单元255而构成。

按照本实施方式,终端200i由搜索关键字和终端间共享的搜索用私钥生成被隐匿的查询,发送到服务器100,服务器100使用由与消息相关的信息和搜索用私钥生成的、被隐匿的索引和接收到的查询搜索消息。由此,服务器100可以在将消息保持加密的情况下进行搜索。而且,通过定期地更新搜索用私钥,对相同的搜索关键字生成不同的查询,可以防止推测搜索内容或搜索结果。

<第二实施方式>

虽然在第一实施方式的消息发送接收系统中使用了公钥加密方式,但是本实施方式的消息发送接收系统不使用公钥加密方式。但是,这里取代明文空间mpk而定义密钥空间key,函数f:key×key1→key和函数g:key×key1→key设为满足与第一实施方式中的函数(f,g)所满足的条件(式(1))相同的条件。

这时,例如,key1=key,若在key中包含乘法群或者加法群的结构,则对于任意的(k,k1)∈key×key,作为满足式(1)的(f,g)的例子,可以举出以下的函数的组。

而且,运算/是,将在密钥空间key中包含作为乘法群的结构时的乘法设为·,将该运算·中的x2的逆元设为x2-1时,定义为x1/x2=x1·x2-1的运算。而且,运算-是,将在密钥空间key中包含作为加法群的结构时的加法设为+,将该运算+中的x2的逆元设为-x2时,定义为x1-x2=x1+(-x2)的运算。

[系统结构]

第二实施方式的消息发送接收系统与第一实施方式的消息发送接收系统同样,包含服务器500和n(≧2)台终端600。而且,与第一实施方式同样,服务器500以及终端6001,…,终端600n分别连接到网络300。

如图10中例示的那样,服务器500包含:记录单元110、房间生成单元120、和索引搜索单元140。即,服务器500在不具有密钥生成单元130这一点上与服务器100不同。如图11中例示的那样,终端600i(1≦i≦n)包含:记录单元210、房间生成请求发送单元220、搜索用私钥生成单元230、搜索用私钥加密单元633、加密搜索用私钥解码单元635、消息加密单元240、消息id生成单元243、索引生成单元245、查询生成单元250、和加密消息解码单元255。即,终端600i在取代搜索用私钥加密单元233和加密搜索用私钥解码单元235而具有搜索用私钥加密单元633和加密搜索用私钥解码单元635这一点与终端200i不同。

第一实施方式和第二实施方式的消息发送接收系统仅在使用还是不使用公钥加密算法这一点中有所不同。其结果,在与系统设置和搜索用私钥的共享的流程中产生不同。因此,以下说明这两个流程。

[系统设置]

这里,房间识别符roomid、会话密钥r1在属于组的终端6001,…,终端600n间被共享。参照图12说明系统设置的流程。

代表终端6001的房间生成请求发送单元220对服务器500发送房间生成请求(s4-10)。在服务器500接收该请求时,服务器500的房间生成单元120生成以房间识别符roomid识别的房间(s4-20)。服务器500将房间识别符roomid记录在记录单元110中,对代表终端6001发送房间识别符roomid(s4-42)。

一般终端600j从代表终端6001接收表示向房间的邀请的房间识别符roomid(s4-50)。

各终端600i将房间识别符roomid记录在记录单元210中。

而且,各终端600i共享会话密钥r1,记录在记录单元210中(s4-70)。而且,会话密钥r1对服务器500隐匿也和第一实施方式相同。

[搜索用私钥的共享]

这里,与第一实施方式同样,某个终端600i_0(1≦i0≦n)生成的搜索用私钥searchkey经由服务器500在属于组的全部终端600i之间共享。参照图5说明搜索用私钥searchkey的共享的流程。

终端600i_0的搜索用私钥生成单元230在房间识别符共享后,生成随机选择的密钥空间key的元r作为搜索用私钥searchkey(s5-10)。即,成为searchkey=r。而且,将r称为随机数。该搜索用私钥searchkey与第一实施方式同样,是对每个房间生成的私钥。终端600i_0将搜索用私钥searchkey记录在记录单元210中。

终端600i_0的搜索用私钥加密单元633生成加密搜索用私钥cipherkey=f(searchkey,r1)(s5-20),将加密搜索用私钥cipherkey与房间识别符roomid一起发送到服务器500(s5-30)。即,终端600i_0仅在加密搜索用私钥的生成中不使用公钥这一点与终端200i_0不同。服务器500将接收到的加密搜索用私钥cipherkey与房间识别符roomid相关联地记录在记录单元110中。

终端600i_1将在s4-50中接收到的房间识别符roomid发送到服务器500(s5-40),从服务器500接收加密搜索用私钥cipherkey(s5-50)。

终端600i_1的加密搜索用密钥解码单元635使用从记录单元210读出的会话密钥r1计算searchkey=g(cipherkey,r1),解码搜索用私钥searchkey(s5-60)。函数(f,g)通过满足前述的条件(式(1)),可以得到搜索用私钥searchkey。终端600i_1将s5-60中得到的搜索用私钥searchkey记录在记录单元210中。

而且,在搜索用私钥的更新中,搜索用私钥加密单元633以及加密搜索用密钥解码单元635也不使用公钥、私钥,这与搜索用私钥的共享相同。即,搜索用私钥加密单元633生成加密搜索用私钥作为cipherkey=f(searchkey,r1),加密搜索用密钥解码单元635使用从记录单元210读出的会话密钥r1计算searchkey=g(cipherkey,r1),解码搜索用私钥searchkey。

按照本实施方式,与第一实施方式同样,服务器500可以在将消息保持加密的情况下进行搜索。而且,通过定期地更新搜索用私钥,对于相同的搜索关键字生成不同的查询,可以防止推测搜索内容或搜索结果。

<变形例>

本发明不限于上述的实施方式,不言而喻,在不脱离本发明的宗旨的范围内能够进行适当变更。上述实施方式中说明的各种的处理不仅可以按照记载的顺序时间序列地执行,而且也可以根据执行处理的装置的处理能力或者需要并行地或者单独地执行。

<补充记载>

在通过计算机实现上述实施方式中说明的各装置中的各种的处理功能的情况下,通过程序记述各装置应有的功能的处理内容。然后,通过由计算机执行该程序,在计算机上实现上述各装置中的各种的处理功能。

记述了该处理内容的程序可以记录在计算机可读取的记录介质中。作为计算机可读取的记录介质,例如是磁记录装置、光盘、光磁记录介质、半导体存储器等任何记录介质。

而且,该程序的流通例如通过销售、转让、租借等记录了该程序的dvd、cd-rom等可拆装型记录介质来进行。进而,也可以将该程序存储在服务器计算机的存储装置中,经由网络,通过将该程序从服务器计算机转发到其它计算机,使该程序流通。

执行这样的程序的计算机,例如,首先将记录在可拆装型记录介质中的程序或者从服务器计算机转发来的程序暂时存储在自己的存储装置中。然后,在执行处理时,该计算机读取自己的存储装置中存储的程序,执行按照读取的程序的处理。而且,作为该程序的其它执行方式,也可以计算机从可拆装型记录介质直接读取程序,执行按照该程序的处理,进而,也可以在每次从服务器计算机对该计算机转发程序时,也可以逐次执行按照接受的程序的处理。而且,也可以通过不从服务器计算机向该计算机进行程序的转发,而仅通过其执行指令和结果取得来实现处理功能的、所谓asp(applicationserviceprovider,应用服务商)型的服务,执行上述的处理。而且,本方式中的程序中,包含供电子计算机的处理用的信息即基于程序的信息(虽然不是对于计算机的直接的指令,但是具有规定计算机的处理的性质的数据等)。

而且,在本方式中,设为通过在计算机上执行规定的程序来构成本装置,但是也可以硬件性地实现这些处理内容的至少一部分。

上述的本发明的实施方式的记载是以例证和记载的目的而提示的。不是作为包罗的意思,也不是将发明限定于公开的严格的形式的意思。能够从上述启示教示得到变形或变化。实施方式是为了提供本发明的原理的最好的例证,并且本领域的本领域技术人员为了可将本发明以各种实施方式以及附加了各种变形来利用,使得适用于深思熟虑的实际的使用而选择表现的方式。所有这些变形和变化都在根据其被公正合理地公平地给予的宽度来解释的由附加的权利要求限定的本发明的范围内。

标号的说明

100服务器

110记录单元

120房间生成单元

130密钥生成单元

140索引搜索单元

200终端

210记录单元

220房间生成请求发送单元

230搜索用私钥生成单元

233搜索用私钥加密单元

235加密搜索用私钥解码单元

240消息加密单元

243消息id生成单元

245索引生成单元

250查询生成单元

255加密消息解码单元

300网络

500服务器

600终端

633搜索用私钥加密单元

635加密搜索用私钥解码单元

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