JPWO2017122352A1 - 暗号化装置、暗号化方法、暗号化プログラム及び保管装置 - Google Patents

暗号化装置、暗号化方法、暗号化プログラム及び保管装置 Download PDF

Info

Publication number
JPWO2017122352A1
JPWO2017122352A1 JP2016554744A JP2016554744A JPWO2017122352A1 JP WO2017122352 A1 JPWO2017122352 A1 JP WO2017122352A1 JP 2016554744 A JP2016554744 A JP 2016554744A JP 2016554744 A JP2016554744 A JP 2016554744A JP WO2017122352 A1 JPWO2017122352 A1 JP WO2017122352A1
Authority
JP
Japan
Prior art keywords
data
unit
search
encryption
key
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016554744A
Other languages
English (en)
Other versions
JP6038427B1 (ja
Inventor
貴人 平野
貴人 平野
豊 川合
豊 川合
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Application granted granted Critical
Publication of JP6038427B1 publication Critical patent/JP6038427B1/ja
Publication of JPWO2017122352A1 publication Critical patent/JPWO2017122352A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • G06F16/152File search processing using file content signatures, e.g. hash values
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

データ分割部(305)は、保管データDを、前記文字列データDの始まりから終わりに向かうN個の要素データw1,w2,...,wNに分割する。部分文字列生成部(306)は、要素データw1,w2,...,wNから、集合A={A1,A2,...,AN},集合Aの要素Ai={(wi),(wiwi+1),...,(wiwi+1...wN)},i=1,...,N,を生成する。位置情報割当部(307)は、要素Aiの成分である(wi),(wiwi+1),...,(wiwi+1...wN)のそれぞれに位置情報iを対応させることにより、集合B={B1,B2,...,BN}、集合Bの要素Bi={(i,wi),(i,wiwi+1),...,(i,wiwi+1...wN)}を生成する。暗号化部(308)は、要素Biに含まれる成分である(i,wi),(i,wiwi+1),...,(i,wiwi+1...wN)のそれぞれを暗号化する。

Description

本発明は、検索システム、管理装置、登録装置、検索装置、鍵生成装置、検索方法、サーバプログラム及び端末プログラムに関する。発明は、例えば、秘匿検索システムに関するものである。
秘匿検索とは、検索対象データと検索内容を暗号化したまま検索できる技術である。近年、クラウドサービス等の普及によりインターネット上でデータ管理が可能となった。
しかし、インターネット上でのデータ管理には、データ管理の委託先であるクラウドなどのサーバがコンピュータウィルス等のマルウェアに感染することやサーバの管理者が不正を働くことによって、預けたデータが外部に漏洩する危険性がある。もしサーバに預けたデータが個人情報や企業機密データであった場合、この漏洩は非常に問題である。
このようなセキュリティの脅威を回避する方法として暗号化技術があるが、単純にデータを暗号化してサーバに保管するとデータの検索ができなくなるといった問題が発生する。
このような問題を回避するために、検索を行うときにサーバ上に保管された暗号化データを一旦復号してから検索を行うという手法が今までに考えられてきたが、データがサーバ内で一定期間平文に戻ってしまうため、対策として十分とはいえない。
そこで、データを暗号化したまま検索可能な暗号技術である「秘匿検索技術」が考案され、秘匿検索技術の具体的な手法が近年多く開示されている。
秘匿検索技術では、単純な検索である「完全一致検索」ができる方式(例えば、非特許文献1参照)が主に検討されていたが、近年はより柔軟な検索、例えば「部分一致検索」ができる方式(例えば、特許文献1、非特許文献2参照)や「類似検索」ができる方式(例えば、非特許文献3、非特許文献2参照)なども検討されている。これ以降、部分一致検索可能な方式を「秘匿部分一致検索技術」、類似検索可能な秘匿検索技術を「秘匿類似検索技術」と呼ぶこととする。なお、秘匿検索技術は大まかに分けて、RSA暗号方式(RSAは登録商標)のような公開鍵暗号をベースとした方式や、AES暗号方式のような共通鍵暗号をベースとした方式の2種類がある。
特開2014−126621号公報
R.Curtmola,J.Garay,S.Kamara,and R.Ostrovsky."Searchable Symmetric Encryption:Improved Definitions and Efficient Constructions".ACM CCS 2006. M.Chase and E.Shen."Substring−Searchable Symmetric Encryption",PETS 2015. J.Li,Q.Wang,C.Wang,N.Cao,K.Ren,and W.Lou."Fuzzy Keyword Search over Encrypted Data in Cloud Computing",Mini−Conference at IEEE Infocom 2010. C.Wang,K.Ren,S.Yu,and K.M.R.Urs."Achieving Usable and Privacy−assured Similarity Search over Outsourced Cloud Data",IEEE Infocom 2012.
AESやHMAC、またSHA−256のような共通鍵暗号技術をベースとした高速な既存の秘匿部分一致検索技術には次のような課題がある。
特許文献1では、データを数文字単位に分割し、それぞれを暗号化することによって、暗号化したまま部分一致検索を達成している技術が開示されている。例えば、データを1文字や2文字などの単位でデータを区切って暗号化している。
しかしながら、データを少ない文字数で分割すると、全く同じような分割データが多く現れる可能性がある。本技術では、同じデータからいつも同じ暗号文が生成される確定的暗号化方式を利用するため、同じ分割データを暗号化しても全く同じ暗号文が生成されることから、頻度分析攻撃を受けやすいといった課題がある。
ここで、頻度分析攻撃とは、同じ値を持つ暗号文の頻度と、頻度に関する公な情報(例えば、日本人の名字の分布など)とを照合することで、暗号化に用いる鍵を使わなくても、暗号文から元のデータを推測する攻撃手法である。
なお、このような攻撃を受けないように、同じデータでも毎回違う文字に変換する確率的暗号化方式を用いることが考えられるが、本技術でそのような暗号化方式を用いると検索ができなるといった課題がある。
他の対策として、分割する文字数を大きくして対策することも考えられるが、その場合は部分一致検索が困難となってしまうといった課題がある。
非特許文献2では、上記のような頻度分析攻撃を受けず、またある木構造を利用して保管する暗号化データ(以降、保管暗号化データと呼ぶ)のサイズを小さくできるような秘匿部分一致検索技術が開示されている。しかしながら、本技術では、検索に用いる暗号化データ(以降、検索暗号化データと呼ぶ)のサイズが大きくなってしまうことや、検索時にユーザとサーバとの対話回数が多いため、通信量に課題がある。
非特許文献3及び非特許文献4では、部分一致検索も含む秘匿類似検索技術が開示されている。これらの技術は、部分一致検索よりも柔軟な検索ができるが、保管暗号化データのサイズ及び検索暗号化データのサイズがともに大きいといった課題がある。
本発明は、頻度分析などの攻撃に耐性を持つような高い安全性を達し、データサイズが小さく、かつ通信量が小さい秘匿部分一致検索技術の提供を目的とする。
この発明の暗号化装置は、
文字列データDを、前記文字列データDの始まりから終わりに向かうN個の要素データw,w,...,wに分割するデータ分割部と、
前記N個の要素データw,w,...,wから、
集合A={A,A,...,A},
集合Aの要素A={(w),(wi+1),...,(wi+1...w)},i=1,...,N,
を生成する部分文字列生成部と、
前記要素Aの成分である(w),(wi+1),...,(wi+1...w)のそれぞれに位置情報iを対応させることにより、
集合B={B,B,...,B}、
集合Bの要素B={(i,w),(i,wi+1),...,(i,wi+1...w)}
を生成する位置情報割当部と、
前記要素Bに含まれる成分である(i,w),(i,wi+1),...,(i,wi+1...w)のそれぞれを暗号化する暗号化部と
を備えたことを特徴とする。
本発明によれば、保管データである文字列データを構成する部分文字列に位置情報を加えて暗号化するので、頻度分析攻撃を行う上で重要となる文字列データの暗号文どうしの比較ができなくなる。よって頻度分析攻撃に対する安全性を向上できる。
実施の形態1の図で、秘匿検索システムの構成を示すブロック図。 実施の形態1の図で、鍵生成装置の構成を示すブロック図。 実施の形態1の図で、登録装置の構成を示すブロック図。 実施の形態1の図で、検索装置の構成を示すブロック図。 実施の形態1の図で、管理装置の構成を示すブロック図。 実施の形態1の図で、秘匿検索システムの鍵生成・保管処理を示すフローチャート。 実施の形態1の図で、秘匿検索システムのデータ登録処理を示すフローチャート。 実施の形態1の図で、秘匿検索システムのデータ検索処理を示すフローチャート。 実施の形態1の図で、秘匿検索システムのデータ削除処理を示すフローチャート。 実施の形態1の図で、秘匿検索システムのハードウェア資源の一例を示す図。 実施の形態2の図で、鍵生成装置の構成を示すブロック図。 実施の形態2の図で、登録装置の構成を示すブロック図。 実施の形態2の図で、検索装置の構成を示すブロック図。 実施の形態2の図で、管理装置の構成を示すブロック図。 実施の形態2の図で、検索システムの鍵生成・保管処理を示すフローチャート。 実施の形態2の図で、検索システムのデータ登録処理を示すフローチャート。 実施の形態2の図で、検索システムのデータ検索処理を示すフローチャート。 実施の形態3の図で、鍵生成装置の構成を示すブロック図。 実施の形態3の図で、登録装置の構成を示すブロック図。 実施の形態3の図で、検索装置の構成を示すブロック図。 実施の形態3の図で、管理装置の構成を示すブロック図。 実施の形態3の図で、検索システムの鍵生成・保管処理を示すフローチャート。 実施の形態3の図で、検索システムのデータ登録処理を示すフローチャート。 実施の形態3の図で、検索システムのデータ検索処理を示すフローチャート。
以下、本発明の実施の形態について、図を用いて説明する。なお、各図中、同一又は相当する部分には、同一符号を付している。実施の形態の説明において、同一又は相当する部分については、その説明を適宜省略又は簡略化する。
実施の形態1.
本実施の形態では、高安全かつ効率的な秘匿部分一致検索技術を開示する。
以下、本実施の形態の概要について説明する。
図1は、本実施の形態に係る秘匿検索システム100の構成を示すブロック図である。図1に示すように、秘匿検索システム100は、鍵生成装置200と、複数の登録装置300と、複数の検索装置400と、管理装置500とを備える。
<***構成の説明***>
秘匿検索システム100は、複数の鍵生成装置200を備えていてもよい。秘匿検索システム100は、1つの登録装置300のみを備えていてもよい。秘匿検索システム100は、1つの検索装置400のみを備えていてもよい。秘匿検索システム100は、複数の管理装置500を備えていてもよい。秘匿検索システム100は、鍵生成装置200と、複数の登録装置300と、複数の検索装置400と、管理装置500とそれぞれインターネット101を経由して接続されず、同じ企業内に敷設されたLAN(Local・Area・Network)内に設置されていてもよい。インターネット101は、鍵生成装置200と、複数の登録装置300と、複数の検索装置400と、管理装置500とを接続する通信路である。インターネット101は、ネットワークの例である。インターネット101の代わりに、他の種類のネットワークが用いられてもよい。
鍵生成装置200は、暗号化に利用する鍵を作成し、インターネット101を介して、複数の登録装置300と、複数の検索装置400とへ鍵を送信する。なお、この鍵は、インターネット101を介さず、郵送などで直接的に、複数の登録装置300と、複数の検索装置400とへ送信してもよい。
登録装置300は、例えば、パーソナルコンピュータである。登録装置300は、保管暗号化データを管理装置500に登録する登録端末として動作するコンピュータである。登録装置300は、暗号化装置及び登録装置として機能する。即ち、登録装置300は、保管暗号化データを生成し、保管暗号化データの保管を管理装置500に要求する。登録装置300は、削除要求装置として機能する。即ち、登録装置300は、管理装置500に対して、保管されている保管暗号化データの削除を要求する。
検索装置400は、例えば、パーソナルコンピュータである。検索装置400は、検索暗号化データを管理装置500に送信し、その後管理装置500から暗号化検索結果を受信し、暗号化検索結果を出力するコンピュータである。検索装置400は、検索要求装置として機能する。即ち、検索装置400は、暗号化検索データを管理装置500に送信して保管暗号化データと検索暗号化データの照合を要求する。検索装置400は、出力装置として機能する。即ち、検索装置400は、管理装置500から返信される検索結果を出力する。
管理装置500は、登録装置300によって作成された保管暗号化データを保管する大容量の記録媒体を持つ装置である。管理装置500は、保管装置として機能する。即ち、管理装置500は、登録装置300から保管暗号化データの保管の要求があれば、保管暗号化データを保管する。管理装置500は、検索装置として機能する。即ち、管理装置500は、検索装置400からの検索の要求があれば、保管暗号化データと検索暗号化データを照合し、検索結果を検索装置400に送信する。管理装置500は、削除装置として機能する。即ち、管理装置500は、登録装置300から保管暗号化データの削除の要求があれば、保管している保管暗号化データを削除する。
なお、同じパーソナルコンピュータ内に、鍵生成装置200、登録装置300、検索装置400のいずれかが同時に含まれていてもよい。
なお、保管暗号化データ及び検索暗号化データは、いずれも暗号化されている。鍵を持たない登録装置300と検索装置400以外は、保管暗号化データや検索暗号化データから有益な情報を得ることは困難である。
以下、本実施の形態の構成について説明する。
図1に示したように、秘匿検索システム100は、鍵生成装置200と、登録装置300と、検索装置400と、管理装置500とを備える。
以下では、鍵生成装置200の構成、登録装置300の構成、検索装置400の構成、管理装置500の構成について順番に説明する。
図2は、鍵生成装置200の構成を示すブロック図である。図2に示すように、鍵生成装置200は、鍵生成部201と、パラメーター生成部202と、送信部203とを備える。図示していないが、鍵生成装置200は、鍵生成装置200の各部で使用されるデータを記憶する記録媒体を備える。
鍵生成部201は、データを暗号化や復号するための鍵Kを生成する。鍵Kは登録装置300と検索装置400とに保管される秘密情報であるため、厳重に生成される。なお、ここでは共通鍵暗号技術を用いて説明しているが、公開鍵暗号技術を用いてもよい。
パラメーター生成部202は、データの暗号化や、データの照合時に必要なパラメーターを生成する。例えば、パラメーターとして、登録データをいくつかの文字列に分割するときの最大長Lがそれにあたる。なお、Lは0より大きい整数である。また、Lは秘密情報ではないため、公に公開されていても構わない。
送信部203は、鍵生成部201で生成された鍵Kを、登録装置300と、検索装置400とへ送信し、また、パラメーター生成部で生成されたパラメーターLを、登録装置300と、管理装置500とへ送信する。
図3は、登録装置300の構成を示すブロック図である。図3に示すように、登録装置300は、受信部301と、鍵保管部302と、パラメーター保管部303と、入力部304と、データ分割部305と、部分文字列生成部306と、位置情報割当部307と、暗号化部308と、送信部309とを備える。図示していないが、登録装置300は、登録装置300の各部で使用されるデータを記憶する記録媒体を備える。
受信部301は、鍵生成装置200から送信されてきた鍵KとパラメーターLとを受信する。鍵保管部302は、受信部301から受け取った鍵Kを保管する。パラメーター保管部303は、受信部301から受け取ったパラメーターLを保管する。
入力部304は、データ登録者から入力された保管データとデータ名を受け取る。なお、本実施の形態では、保管データD、データ名をID(D)として説明する。もし、データ登録者からデータ名の入力がなければ、入力部304は、入力された保管データDのデータ名ID(D)に乱数を割り当ててもよいし、他の保管データのデータ名と重複しないように0より大きい整数の値を順に割り当ててもよい。データ名のID(D)は、保管データDを識別する識別子である。
また、入力部304は、データ登録者から削除したい保管暗号化データについての削除データ名を受け取る。削除データ名は、例えば、登録時に入力したデータ名や、登録した時刻、データ登録者の名前など、保管データを特定できるものなら何でもよい。
データ分割部305は、パラメーター保管部303からパラメーターLを読み出し、入力部304から受け取った保管データDを(w,・・・,w)と分割する。
ただし、各wi(1≦i≦L)は、データを1文字や複数文字ずつ順に分割したものでもいいし、単語単位で分割してもよい。また、データDを(w,...,w)とk≦Lとなるようにデータ分割してもよい。もし、データをどのように分割しても分割数がL未満となってしまう場合は、L未満のままでもよいし、「*」やnullなどの特殊文字を使って足りない文字数を補って、長さをLとなるように調整しもよい。以降では、分割数がLとした時を説明するが、L未満でもほぼ同様な手順を実施すればよい。
部分文字列生成部306は、データ分割部305から受け取った
分割データ(w,・・・,w)から、次のような集合Aを生成する。
A={{(w),(w),・・・,(w・・・w)},{(w),(w),・・・,(w・・・w)},・・・,{(w)}}。
以降では、集合Aを部分文字列集合と呼ぶことにする。
位置情報割当部307は、部分文字列生成部306から受け取った部分文字列集合Aの中の各部分文字列に対して次のように位置情報を割り当てて、集合Bを生成する。
B={(1,w),(1,w),・・・,(1,w・・・w)},{(2,w),(2,w),・・・,(2,w・・・w)},・・・,{(L,w)}}。
ここで、以降では集合Bを位置情報付き部分文字列集合と呼ぶことにする。
暗号化部308は、鍵保管部302から鍵Kを読み出し、位置情報割当部307から受け取った位置情報付き部分文字列集合Bの中の各位置情報付き部分文字列に対する暗号文Cを次のように生成する。位置情報と部分文字列の各ペア(p,w)に対して、
C=E(E(K,w),p,ID(D))
を生成する。
なお、Eは暗号化関数とする。例えば、AESのような共通鍵暗号方式やHMACのようなメッセージ認証符号、SHA−256のようなハッシュ関数がその一例である。
ここで、すべての(i,w)を暗号化した暗号文の集合をC(D)と書くことにする。
以降では、ペア(ID(D),C(D))を、
保管暗号化データ集合と呼ぶことにする。
送信部309は、暗号化部308から受け取った保管暗号化データ集合(ID(D),C(D))を管理装置500へ送信する。また、送信部309は、入力部304から受け取った削除データ名を管理装置500へ送信する。
図4は、検索装置400の構成を示すブロック図である。図4に示すように、検索装置400は、受信部401と、鍵保管部402と、入力部403と、暗号化部404と、送信部405と、出力部406とを備える。図示していないが、検索装置400は、検索装置400の各部で使用されるデータを記憶する記録媒体を備える。
受信部401は、鍵生成装置200から送信されてきた鍵K、または管理装置500から送信されてきた検索結果を受信する。鍵保管部402は、受信部401から受け取った鍵Kを保管する。入力部403は、データ検索者から入力された検索データsを受け取る。また、入力部403は、データ検索者から、検索データと同時に、その検索データと検索したい保管暗号化データ集合を指定するような保管データ名も複数受けとってもよい。
暗号化部404は、鍵保管部402から鍵Kを読み出し、入力部403から受け取った検索データsに対して鍵Kを用いて、次のように暗号文tを生成する。
t=E(K,s)。
以降では、このtを検索暗号化データと呼ぶ。
送信部405は、暗号化部404から受け取った検索暗号化データtを管理装置500へ送信する。もし、データ検索者から検索データと同時に保管データ名も入力されていた場合は、検索暗号化データと保管データ名の両方を管理装置500へ送信する。
出力部406は、受信部401から受け取った検索結果に基づき、検索結果をデータ検索者に対して出力する。もし、検索結果が暗号化されていた場合は、鍵保管部402に保管されている鍵Kなどを用いて検索結果を復号して出力する。
図5は、管理装置500の構成を示すブロック図である。図5に示すように、管理装置500は、受信部501と、パラメーター保管部502と、データ保管部503と、照合部504と、送信部505とを備える。図示していないが、管理装置500は、管理装置500の各部で使用されるデータを記憶する記録媒体を備える。
受信部501は、鍵生成装置200から送信されてきたパラメーターL、登録装置300から送信されてきた保管暗号化データ集合(ID(D),C(D))や削除データ名、検索装置400から送信されてきた検索暗号化データtや保管データ名を受信する。
パラメーター保管部502は、受信部501から受け取ったパラメーターLを保管する。
データ保管部503は、受信部501から受け取った保管暗号化データ集合の(ID(D),C(D))を保管する。必要があれば、送信されてきた日時なども同時に保管してもよい。
また、データ保管部503は、受信部501から受け取った削除データ名に基づき、保管している保管暗号化データ集合を削除する。
照合部504は、検索結果に関わる空集合Rを生成し、データ保管部503からすべての保管暗号化データ集合(ID(D),C(D))を読み出し、受信部501から受け取った検索暗号化データtに基づき、次のようにして照合を行うことや検索結果を生成する。
照合部504は、
T1=E(t,1,ID(D)),・・・,TL=E(t,L,ID(D))、
を計算し、各Tp(1≦p≦L)がC(D)に含まれているかを確認する。
もしTpがC(D)に含まれているならば、ペア(ID(D),p)をRに加える。
この(ID(D),p)は「ID(D)のp番目の位置に検索データが現れる」
を意味する。以降では、各Tpを照合データと呼び、
{T1,・・・,TL}
を照合データ集合と呼ぶことにする。
また、本処理の結果、最終的に生成される集合Rを検索結果と呼ぶことにする。
なお、照合部504は、受信部501が検索装置400から保管データ名も受信していれば、それに基づいてデータ保管部503から対象となる保管暗号化データ集合のみを読み出して、同様な処理を行う。
送信部505は、照合部504から受け取った検索結果Rを検索装置400へ送信する。
以下では、本実施の形態に係る、暗号化方法、検索方法に相当する、秘匿検索システム100の動作について説明する。
図6は、秘匿検索システム100の鍵生成・保管処理を示すフローチャートである。図6のステップS601〜ステップS612は、鍵生成装置200と、登録装置300と、検索装置400と、管理装置500とが実行する処理である。ステップS601〜ステップS605は鍵生成装置200に、ステップS606〜ステップS608は登録装置300に、ステップS609〜ステップS610は検索装置400に、ステップS611〜ステップS612は管理装置500によって実行される。
なお以下では、ステップS601等のステップ番号は、S601等と記す。図7〜図9、実施の形態の図15〜図17、及び実施の形態3の図22〜図24のステップ番号も同様である。
S601において、鍵生成部201は、データを暗号化するための鍵Kを生成する。なお、本稿では共通鍵暗号技術を用いて説明しているが、公開鍵暗号技術を用いてもよい。その場合は、鍵生成部201は、公開鍵PKと秘密鍵SKのペアを鍵Kとして設定して、以降の処理を同じように実施すればよい。
S602において、パラメーター生成部202は、パラメーターLを生成する。なお、前述の通り、Lは保管データを分割したときに現れる文字列の最大数である。
S603において、送信部203は、S601で生成した鍵KとS602で生成したパラメーターLを、登録装置300へ送信する。
S604において、送信部203は、S601で生成した鍵Kを、検索装置400へ送信する。
S605において、送信部203は、S602で生成したパラメーターLを、管理装置500へ送信する。
S606において、受信部301は、S603で送信された鍵KとパラメーターLを受信する。
S607において、鍵保管部302は、S606で受信した鍵Kを記憶媒体に保管する。
S608において、パラメーター保管部303は、S606で受信したパラメーターLを記憶媒体に保管する。
S609において、受信部401は、S604で送信された鍵Kを受信する。
S610において、鍵保管部402は、S609で受信した鍵Kを記憶媒体に保管する。
S611において、受信部501は、S605で送信されたパラメーターLを受信する。
S612において、パラメーター保管部502は、S611で受信したパラメーターLを記憶媒体に保管する。S612により、秘匿検索システム100の鍵生成・保管処理は終了する。なお、鍵Kは秘密情報であるため、鍵保管部302と、鍵保管部402とは、鍵Kが外部に漏れないように厳重に保管する必要がある。
図7は、秘匿検索システム100の登録処理を示すフローチャートである。図7のS701〜S708は、登録装置300と管理装置500とが実行する処理である。S701〜S706は登録装置300に、S707〜S708は管理装置500によって実行される処理である。
S701において、入力部304は、データ登録者から入力された保管データDとデータ名ID(D)を受け取る。なお、前述の通り、データ登録者からデータ名の入力がなければ、入力部304は、入力された保管データDのデータ名ID(D)を乱数と割り当ててもよいし、他の保管データのデータ名と重複しないように0より大きい整数の値を順に割り当ててもよい。
S702において、データ分割部305は、パラメーター保管部303からパラメーターLを読み出し、S701でデータ登録者から受け取った保管データDを(w,・・・,w)と分割する。
なお、前述の通り、各w(1≦i≦L)は、データを1文字や複数文字ずつ順に分割したものでもいいし、単語単位で分割してもよい。また、データDを(w,...,w)と≦Lとなるようにデータ分割してもよい。
もし、データをどのように分割しても分割数がL未満となってしまう場合は、L未満のままでもよいし、「*」やnullなどの特殊文字を使って足りない文字数を補ってもよい。
ここでwを要素データと呼ぶとすれば、データ分割部305は、文字列データである保管データDを、保管データDの始まりから終わりに向かうN個の要素データw,...,wに分割する。NはL以下である。
以下のS703以降では、保管データDがL個に分割された場合を説明する。保管データDがN個に分割された場合は、以下の説明においてLをNに読み替えればよい。
S703において、部分文字列生成部306は、S702で生成された分割データ(w,・・・,w)から、次のような部分文字列集合Aを生成する。
A={A,A,...,A}、
集合Aの要素A等をA(i=1,...,L)と記す。
集合Aの要素は、以下のようである。
集合Aの要素は、
={(w),(w),・・・,(w・・・w)}、
={(w),(w),・・・,(w・・・w)}、
...
={(w)}、
である。
各要素は、
={(w),(wi+1),・・・,(w・・・w)}、(i=1,...,L)
である。
以下では要素Aの要素を、成分と呼ぶ場合がある。つまりAは、(L−i+1)個の成分である(w),(wi+1),・・・,(w・・・w)を持つ。
S704において、位置情報割当部307は、S703で生成された部分文字列集合Aの中の各部分文字列に対して次のように位置情報を割り当て、位置情報付き部分文字列集合Bを生成する。
集合B={B,B,...,B}、
集合Bの要素B={(i,w),(i,wi+1),...,(i,wi+1...w)}、
である。
要素Bは要素Aの各成分に位置情報iを付加して生成される。ここで位置情報iにおける{i}は、要素Aにおける添え字{i}である。
要素Bを具体的に記載すれば、
={(1,w),(1,w),・・・,(1,w・・・w)}、
={(2,w),(2,w),・・・,(2,w・・・w)}、
....
={(L,w)},
である。
集合Bの各要素は、
={(i,w),(i,wi+1),・・・,(i,w・・・w)}、(i=1,...,L)である。
の要素である(i,w),(i,wi+1),・・・,(i,w・・・w)、
を以下では成分と呼ぶ場合がある。
このように、位置情報割当部307は、集合Aの要素Aの成分である(w),(wi+1),...,(wi+1...w)のそれぞれに位置情報iを対応させることにより、
要素B(i=1,...,L)を持つ、位置情報付き部分文字列集合Bを生成する。
S705において、暗号化部308は、鍵保管部302から鍵Kを読み出し、S704で生成された位置情報付き部分文字列集合Bの中の各位置情報付き部分文字列の暗号文Cを次のように生成する。
位置情報と部分文字列の各ペア(p,w)に対して、
C=E(E(K,w),p,ID(D)) (式1)
を生成する。
ペア(p,w)とは、Bで説明すれば、(i,w),(i,wi+1),・・・,(i,w・・・w)の、(L−i+1)個の各成分である。(i,w)の場合であれば、
p=i,w=w
である。
すべての(p,w)を暗号化した暗号文の集合をC(D)とし、保管暗号化データ集合(ID(D),C(D))を生成する。
つまりC(D)は、
={(1,w),(1,w),・・・,(1,w・・・w)}、
={(2,w),(2,w),・・・,(2,w・・・w)}、
...,
={(L,w)},
の、すべての成分を暗号化した情報である。このように暗号化部308は、要素Bに含まれる(i,w),(i,wi+1),...,(i,wi+1...w)のそれぞれを暗号化される。
なお、上記式1に示すように、暗号化部308は、要素Bに含まれる各成分を暗号化する場合に、要素Bに含まれる各成分を、文字列データである保管データDを識別する識別子のデータ名ID(D)と共に暗号化する。
また、前述の通り、Eは暗号化関数であり、例えば、AESのような共通鍵暗号方式やHMACのようなメッセージ認証符号、SHA−256のようなハッシュ関数がその一例である。
S706において、送信部309は、S705で生成した保管暗号化データ集合(ID(D),C(D))を管理装置500へ送信する。
S707において、受信部501は、S706で送信された保管暗号化データ集合(ID(D),C(D))を受信する。
S708において、データ保管部503は、S707で受信した保管暗号化データ集合(ID(D),C(D))を保管する。
S708により、秘匿検索システム100の登録処理は終了する。
図8は、秘匿検索システム100の検索処理を示すフローチャートである。図8のS801〜S810は、検索装置400と管理装置500とが実行する処理である。S801〜S803及びS809〜S810は検索装置400によって実行される処理であり、S804〜S808は管理装置500によって実行される処理である。
S801において、入力部403は、データ検索者から入力された検索データsを受け取る。なお、複数の検索データを同時に受け取ってもよい。その場合は、以降の処理を各検索データに対して同じように実施すればよい。また、前述の通り、入力部403は、データ検索者から、検索データと同時に、その検索データと検索したい保管暗号化データを指定するような保管データ名も複数受けとってもよい。
S802において、暗号化部404は、鍵保管部402から鍵Kを読み出し、S801で受け取った検索データsに対して鍵Kを用いて、次のようにして検索暗号化データtを生成する。ここで、
t=E(K,s)
である。
S803において、送信部405は、S802で生成した検索暗号化データtを管理装置500へ送信する。もし、S801で保管データ名も入力されていれば、保管データ名も同時に送付する。
S804において、受信部501は、S803で送信された検索暗号化データtを受信する。もし、S803で保管データ名も送信されていたら、保管データ名も受信する。
S805において、照合部504は、データ保管部503から保管暗号化データ集合(ID(D),C(D))を読み出す。なお、もしS804で保管データ名も受信していた場合は、その保管データ名に基づき、対象の保管暗号化データ集合のみを読み出す。もしS804で保管データ名を受信していなかった場合は、保管されているすべての保管暗号化データ集合を読み出す。
S806において、照合部504は、パラメーター保管部502からパラメーターLを読み出し、S805で読み出した保管暗号化データ集合(ID(D),C(D))のID(D)に基づき、S804で受信した検索暗号化データtからID(D)に対する各照合データTp(1≦p≦L)を生成する。
ここで各Tpは、
T1=E(t,1,ID(D)),・・・,TL=E(t,L,ID(D))
である。もし、S805で読み出した保管暗号化データ集合が複数の場合は、各ID(D)に対応した照合データを生成する。
S807において、照合部504は、検索結果に関わる空集合Rを生成し、S806で生成した各照合データTp(1≦p≦L)がC(D)に含まれているかを確認する。もしTpがC(D)に含まれているならば、ペア(ID(D),p)をRに加える。もし、S806で生成した照合データ集合が複数の場合も、同じRに上記の検索結果に関するペアを加える。
S808において、送信部505は、S807で生成した検索結果Rを検索装置400へ送信する。
S809において、受信部401は、S808で送信された検索結果Rを受信する。
S810において、出力部406は、S809で受信した検索結果Rに対して、次のようにしてデータ検索者に対して出力する。検索結果Rに含まれている各(ID(D),p)に対して、「ID(D)のp番目の位置に検索データが現れる」と出力する。もしRが空集合だった場合は、「どのデータにも検索データは含まれなかった」と出力する。S810により、秘匿検索システム100の検索処理は終了する。
図9は、秘匿検索システム100の削除処理を示すフローチャートである。図9のS901〜S904は、登録装置300と管理装置500とが実行する処理である。S901〜S902は登録装置300に、S903〜S904は管理装置500によって実行される処理である。
S901において、入力部304は、データ登録者から削除したい保管暗号化データ集合についての削除データ名を受け取る。なお、前述の通り、削除データ名は保管暗号化データ集合を特定できるものであれば何でもよい。
S902において、送信部309は、S901で入力された削除データ名を管理装置500へ送信する。
S903において、受信部501は、S902で登録装置300から送信されてきた削除データ名を受信する。
S904において、データ保管部503は、S903で受信した削除データ名に基づき、保管している保管暗号化データ集合を削除する。
S904により、秘匿検索システム100の削除処理は終了する。
<本実施の形態の動作具体例>
以下に、本実施の形態の動作の具体例を示す。
ここで、本実施の形態の動作を、
パラメーターL=3、
保管データをD1=ABC,
ID(D1)=1,
D2=BC,
ID(D2)=2、
検索データs=BC、
として説明する。
また暗号化関数Eは、ハッシュ関数を用いて説明する。
まず、D1とD2の登録処理について説明する。
S702において、D1=(A,B,C),D2=(B,C)と分割される。
S703において、
A1={{(A),(AB),(ABC)},{(B),(BC)},{(C)}}及び
A2={{(B),(BC)},{(C)}}と生成される。
S704において、
B1={{(1,A),(1,AB),(1,ABC)},{(2,B),(2,BC)},{(3,C)}}及び
B2={{(1,B),(1,BC)},{(2,C)}}と生成される。
S705において、
C11=E(E(K,A),1,1),
C12=E(E(K,AB),1,1),
C13=E(E(K,ABC),1,1),
C14=E(E(K,B),2,1),
C15=E(E(K,BC),2,1),
C16=E(E(K,C),3,1)及び
C21=E(E(K,B),1,2),
C22=E(E(K,BC),1,2),
C23=E(E(K,C),2,2)
を生成し、
保管暗号化データ集合(ID(D)、C(D))として
保管暗号化データ集合(1,C(D1))
及び
保管暗号化データ集合(2,C(D2))
を生成する。
ただし、
C(D1)={C11,C12,C13,C14,C15,C16},
C(D2)={C21,C22,C23}とする。
ここで、
C=E(E(K,s),p,ID(D))に注意する。
S707及びS708により、上記の保管暗号化データ集合である(1,C(D1))と(2,C(D2))が、管理装置500に保管される。
次に、検索データsをs=BCとした場合の検索処理について説明する。
S802において、暗号化データt=E(K,s)を計算する。
S805において、(1,C(D1))と(2,C(D2))を読み出す。
S806において、
T11=E(t,1,1),
T12=E(t,2,1),
T13=E(t,3,1)及び
T21=E(t,1,2),
T22=E(t,2,2),
T23=E(t,3,2)
を計算する。
S807において、T11,T12,T13がC(D1)に含まれているか,またT21,T22,T23がC(D2)に含まれているかを確認する。
実際、
T12はC(D1)に含まれ(C15と一致し)、
T21はC(D2)に含まれる(C22と一致する)。
よって、(ID(D),p)を要素とする集合の検索結果Rが、
検索結果R={(1,2),(2,1)}として生成される。
ここで、検索結果Rの要素は(ID(D),p)であることに注意する。
S810において、検索結果Rに基づき、
「保管データ名が“1”のデータの“2番目”の位置から検索データBCが現れる」、
「保管データ名が“2”のデータの“1番目”の位置から検索データBCが現れる」といった検索結果を出力する。
以上が具体例の説明である。
図10は、実施の形態1における鍵生成装置200と、登録装置300と、検索装置400と、管理装置500とのハードウェア資源の一例を示す図である。
図10において、鍵生成装置200と、登録装置300と、検索装置400と、管理装置500は、CPU1001(Central Processing Unit)を備えている。
CPU1001は、バス1002を介してROM1003、RAM1004、通信ボード1005、ディスプレイ1011(表示装置)、キーボード1012、マウス1013、ドライブ1014、磁気ディスク装置1020などのハードウェアデバイスと接続され、これらのハードウェアデバイスを制御する。
ドライブ1014は、FD(Flexible Disk Drive)、CD(Compact Disc)、DVD(Digital Versatile Disc)などの記憶媒体を読み書きする装置である。
ROM1003、RAM1004、磁気ディスク装置1020およびドライブ1014は記憶装置の一例である。キーボード1012、マウス1013および通信ボード1005は入力装置の一例である。ディスプレイ1011および通信ボード1005は出力装置の一例である。
通信ボード1005は、有線または無線で、LAN(Local Area Network)、インターネット、電話回線などの通信網に接続している。
磁気ディスク装置1020には、OS1021(オペレーティングシステム)、プログラム群1022、ファイル群1023が記憶されている。プログラム群1022には、本実施の形態において「〜部」として説明する機能を実行するプログラムが含まれる。プログラム(例えば、暗号化プログラム、データ検索プログラム、データ登録プログラム)は、CPU1001により読み出され実行される。すなわち、プログラムは、「〜部」としてコンピュータを機能させるものであり、また「〜部」の手順や方法をコンピュータに実行させるものである。ファイル群1023には、本実施の形態において説明する「〜部」で使用される各種データ(入力、出力、判定結果、計算結果、処理結果など)が含まれる。
本本実施の形態において構成図およびフローチャートに含まれている矢印は主としてデータや信号の入出力を示す。フローチャートなどに基づいて説明する本実施の形態の処理はCPU1001、記憶装置、入力装置、出力装置などのハードウェアを用いて実行される。本実施の形態において「〜部」として説明するものは「〜回路」、「〜装置」、「〜機器」、「サーキットリ」であってもよく、また「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ファームウェア、ソフトウェア、ハードウェアまたはこれらの組み合わせのいずれで実装されても構わない。
<***実施の形態1の効果***>
本実施の形態は、例えば、以下のような効果を奏する。
(1)本実施の形態では、たとえ同じ保管データをサーバへ保管したとしても、位置情報や毎回異なるデータ名により、毎回必ず異なる保管暗号化データが生成されるため、頻度分析攻撃などが受けにくくなり、高い安全性を達成する秘匿部分一致検索を実現できる。
(2)本実施の形態では、保管データを暗号化して保管しているため、たとえ管理装置500から保管暗号化データが漏洩しても、保管データの中身を知られることはない。
(3)本実施の形態では、検索データのみならず保管データも暗号化したまま処理ができるため、検索暗号化データから検索データの中身を知られることはない。
(4)本実施の形態では、保管暗号化データと検索暗号化データから得られる検索結果にはデータ名と位置情報しか現れないため、サーバなどの鍵をもたないエンティティに対しては保管データや検索データの中身を知られることはない。
(5)本実施の形態では、検索結果には検索がヒットした事実に加えて、どの位置に検索データが現れるかについての位置情報もわかるため、柔軟な部分一致検索機能をもつ。
(6)本実施の形態では、検索暗号化データがただ一つの暗号文から構成されるため検索に用いるデータサイズが非常に小さく、また検索時にデータ検索者とサーバとのやりとりが1回しか発生しないため、効率的に秘匿部分一致検索することが可能である。
(7)本実施の形態では、共通鍵暗号技術からすべて構成できるため、効率的な秘匿部分一致検索を実現できる。
実施の形態2.
次に、本実施の形態の秘匿検索システムについて説明する。実施の形態1では、過去に用いた検索暗号化データ(t=E(K,s))を、新しく追加した保管暗号化データ集合((ID(D),C(D)))に対して直ちに適用できた。
実施の形態2で開示する技術は、過去に用いた検索暗号化データtを、新しく追加した保管暗号化データ集合に対して適用できない。したがって、より高い安全性を達成できる。このようなことを達成するために、ハッシュ鎖などの多重暗号化を用いる方法を開示する。
実施の形態2では、暗号化関数Eに対して
「E^M(K,w)」
と記載したときは、(K,M)を初期値として、暗号化関数EをM回計算(言い換えると、M回の多重暗号化を実施)することを表すとする。例えば、このような多重暗号化としてハッシュ鎖がよく知られている。
例えば、
E^M(K,w)
をM回目に保管したデータに対する検索暗号化データtとする。
ここで、M+1回目に保管したデータに対する検索暗号化データtを
=E^(M−1)(K,w)とすると、
M+1回目の検索暗号化データt=E^(M−1)(K,w)
を再度暗号化することで、
M回目に保管したデータに対する検索暗号化データE^M(K,w)を生成できる。
一方で、E^M(K,w)からE^(M−1)(K,w)を計算することはハッシュ関数などの暗号化関数であれば一般的に困難である。
このため、過去に用いた検索暗号化データを新しく追加した保管暗号化データ集合に対して適用できず、より高い安全性を達成できる。
本実施の形態の秘匿検索システム100は、実施の形態1とは一部異なっている。
鍵生成装置200は鍵生成装置200aへ、登録装置300は登録装置300aへと、検索装置400は検索装置400aへと、管理装置500は管理装置500aへと変更されている。
以下、本実施の形態の構成について説明する。以下では、鍵生成装置200aの構成、登録装置300aの構成、検索装置400aの構成、管理装置500aの構成について順番に説明する。
図11は、鍵生成装置200aの構成を示すブロック図である。図11に示すように、鍵生成装置200aは、鍵生成部201と、パラメーター生成部202aと、送信部203aとを備える。図示していないが、鍵生成装置200aは、鍵生成装置200aの各部で使用されるデータを記憶する記録媒体を備える。鍵生成部201の説明は、すでに述べたため省略する。
パラメーター生成部202aは、前述のパラメーターLを生成すると同時に、多重暗号化の最大回数を表すパラメーターMを生成する。このMは、同じ鍵Kを用いて保管データを管理装置500aに保管できる保管暗号化データ集合の最大数を表す。もし、Mを超えて保管暗号化データ集合を保管したい場合は、新しい鍵K´とM´を生成すれば、新たにM´個登録できるようになる。なお、Mは1より大きい整数である。また、MはLと同様に秘密情報ではないため、公に公開されていても構わない。
送信部203aは、鍵生成部201で生成された鍵Kを、登録装置300aと、検索装置400aとへ送信し、また、パラメーター生成部202aで生成されたパラメーター(L,M)を、登録装置300aと、検索装置400aと、管理装置500aとへ送信する。
図12は、登録装置300aの構成を示すブロック図である。図12に示すように、登録装置300aは、受信部301aと、鍵保管部302と、パラメーター保管部303aと、入力部304と、データ分割部305と、部分文字列生成部306と、位置情報割当部307と、多重暗号化部308aと、送信部309aとを備える。図示していないが、登録装置300aは、登録装置300aの各部で使用されるデータを記憶する記録媒体を備える。鍵保管部302と、入力部304と、データ分割部305と、部分文字列生成部306と、位置情報割当部307との説明は、すでに述べたため省略する。
受信部301aは、鍵生成装置200aから送信されてきた鍵Kとパラメーター(L,M)を受信する。
パラメーター保管部303aは、受信部301aから受け取ったパラメーター(L,M)を保管することや、鍵KとパラメーターMを使って暗号化された管理装置500aに保管されている保管暗号化データ集合の数を表すパラメーターmも保管する。
多重暗号化部308aは、鍵保管部302から鍵Kを、パラメーター保管部303aからパラメーターmを読み出し、位置情報割当部307から受け取った位置情報付き部分文字列集合Bの中の各位置情報付き部分文字列に対する暗号文Cを次のように生成する。
位置情報と部分文字列の各ペア(p,w)に対して、
C=E(E^(M+1−m)(K,w),p,ID(D))
を生成する。
ここで、すべての(p,w)を暗号化した暗号文の集合をC(D)と書くことにする。 ここで、以降では
(ID(D),m,C(D))
を保管暗号化データ集合と呼ぶことにする。
なお、E^i(i≧1)を計算する場合、EがAESのような暗号化関数であればEを計算する度に鍵が必要となるため、例えば値がすべて0やすべて1など鍵を事前に決めてパラメーターとして保管しておくことや、すでに保管されているパラメーターのLやMなどを鍵として用いてもよい。もし、Eがハッシュ関数であれば、多重暗号化のためにそのような鍵は必要としない。
送信部309aは、暗号化部308から受け取った保管暗号化データ集合(ID(D),m,C(D))を管理装置500aへ送信することや、またパラメーターmを検索装置400aへ送信する。また、送信部309aは、入力部304から受け取った削除データ名を管理装置500へ送信する。
図13は、検索装置400aの構成を示すブロック図である。図13に示すように、検索装置400aは、受信部401aと、鍵保管部402と、入力部403と、多重暗号化部404aと、送信部405と、出力部406と、パラメーター保管部407aとを備える。図示していないが、検索装置400aは、検索装置400aの各部で使用されるデータを記憶する記録媒体を備える。
鍵保管部402と、入力部403と、送信部405と、出力部406の説明は、既に述べたため省略する。
受信部401aは、鍵生成装置200aから送信されてきた鍵KとパラメーターMや、登録装置300aから送信されてきたパラメーターmや、管理装置500aから送信されてきた検索結果を受信する。
多重暗号化部404aは、鍵保管部402から鍵Kを、パラメーター保管部407aからパラメーターmを読み出し、入力部403から受け取った検索データsに対して、鍵Kとパラメーターmを用いて、次のように暗号文tを生成する。
多重暗号化部404aは、
t=E^(M+1−m)(K,s)
を生成する。
以降では、このtを検索暗号化データと呼ぶ。
なお、前述の通り、E^i(i≧1)を計算する場合、EがAESのような暗号化関数であればEを計算する度に鍵が必要となるため、例えば値がすべて0やすべて1など鍵を事前に決めてパラメーターとして保管しておくことや、すでに保管されているパラメーターのLやMなどを鍵として用いてもよい。もし、Eがハッシュ関数であれば、多重暗号化のためにそのような鍵は必要としない。
パラメーター保管部407aは、受信部401から受け取ったパラメーターMを保管する。また、受信部401から受け取ったパラメーターがペアmの場合、パラメーター保管部407aは、すでに保管されている(M,m)のmのパラメーターを更新する。
図14は、管理装置500aの構成を示すブロック図である。図14に示すように、管理装置500aは、受信部501aと、パラメーター保管部502aと、データ保管部503と、照合部504aと、送信部505と、多重暗号化部506aとを備える。図示していないが、管理装置500aは、管理装置500aの各部で使用されるデータを記憶する記録媒体を備える。
データ保管部503と、送信部505の説明は、すでに述べたため省略する。
受信部501aは、鍵生成装置200aから送信されてきたパラメーター(L,M)、登録装置300aから送信されてきた保管暗号化データ集合(ID(D),m,C(D))や削除データ名、検索装置400aから送信されてきた検索暗号化データtや保管データ名を受信する。
パラメーター保管部502aは、受信部501aから受け取ったパラメーター(L,M)や、保管暗号化データ集合(ID(D),m,C(D))のmも合わせて保管する。
照合部504aは、検索結果に関わる空集合Rを生成し、データ保管部503から、すべての保管暗号化データ集合(ID(Di),m,C(Di))(1≦i≦m)を読み出し、後述する多重暗号化部506aから受け取った多重暗号化データ集合
{(1,t1)、(2,t2),・・・,(m,tm)}
に基づき、次のようにして照合を行うことや検索結果を生成する。
照合部504aは、
各i(1≦i≦m)に対して、(ID(Di),i,C(Di))
となる保管暗号化データ集合を抽出し、
Xi={T1_i=E(ti,1,ID(Di)),・・・,TL_i=E(ti,L,ID(Di))}
を計算する。
その後、照合部504aは、各Tp_i(1≦p≦L)がC(Di)に含まれているかを確認する。もしTp_iがC(Di)に含まれているならば、ペア(ID(Di),p)をRに加える。この(ID(Di),p)は「ID(Di)のp番目の位置に検索データが現れる」を意味する。
以降では、各Tp_iをID(Di)に対する照合データと呼び、
{T1,・・・,TL}
をID(Di)に対する照合データ集合と呼ぶことにする。また、本処理の結果、最終的に生成される集合Rを検索結果と呼ぶことにする。
なお、照合部504aは、受信部501aが検索装置400aから保管データ名も受信していれば、それに基づいてデータ保管部503から対象となる保管暗号化データ集合のみを読み出して、同様な処理を行う。
多重暗号化部506aは、パラメーター保管部502aからパラメーターmを読み出し、受信部501から受け取った検索暗号化データtに基づき、次のような多重暗号化データを生成する。
t1=E^(m−1)(t),
t2=E^(m−2)(t),
・・・,
tm=E^0(t)=t。
以降、
集合{(1,t1)、(2,t2),・・・,(m,tm)}
を多重暗号化データ集合と呼ぶことにする。
なお、前述の通り、E^i(i≧1)を計算する場合、EがAESのような暗号化関数であればEを計算する度に鍵が必要となるため、例えば値がすべて0やすべて1など鍵を事前に決めてパラメーターとして保管しておくことや、すでに保管されているパラメーターのLやMなどを鍵として用いてもよい。もし、Eがハッシュ関数であれば、多重暗号化のためにそのような鍵は必要としない。
以下では、本実施の形態に係る検索方法に相当する、秘匿検索システム100の動作について説明する。
図15は、本実施の形態における秘匿検索システム100の鍵生成・保管処理を示すフローチャートである。図15のS601〜S612aは、鍵生成装置200aと、登録装置300aと、検索装置400aと、管理装置500aとが実行する処理である。S601〜S605aは鍵生成装置200aに、S606a〜S608aは登録装置300aに、S609a〜S610a2は検索装置400aに、S611a〜S612aは管理装置500aによって実行される処理である。
なお、本検索処理におけるS601とS607とは、実施の形態1のそれぞれと同様の処理であるため、ここでは省略する。
S602aにおいて、パラメーター生成部202aは、パラメーターL及びMを生成する。なお、前述の通り、Lは保管データを分割したときに現れる文字列の最大数であり、またMは同じ鍵Kを用いて保管データを管理装置500aに保管できる保管暗号化データ集合の最大数を表す。
S603aにおいて、送信部203aは、S601で生成した鍵Kと、S602aで生成したパラメーター(L,M)とを、登録装置300aへ送信する。
S604aにおいて、送信部203aは、S601で生成した鍵Kと、S602aで生成したパラメーター(L,M)とを、検索装置400aへ送信する。
S605aにおいて、送信部203aは、S602で生成したパラメーター(L,M)を、管理装置500aへ送信する。
S606aにおいて、受信部301aは、S603aで送信された鍵Kと、パラメーター(L,M)とを受信する。
S608aにおいて、パラメーター保管部303aは、S606aで受信したパラメーター(L,M)を記憶媒体に保管する。
S609aにおいて、受信部401aは、S604aで送信された鍵Kと、パラメーター(L,M)とを受信する。
S610a1において、鍵保管部402は、S609aで受信した鍵Kを記憶媒体に保管する。
S610a2において、パラメーター保管部407aは、S609aで受信したパラメーター(L,M)を記憶媒体に保管する。
S611aにおいて、受信部501aは、S605aで送信されたパラメーター(L,M)を受信する。
S612aにおいて、パラメーター保管部502aは、S611aで受信したパラメーター(L,M)を記憶媒体に保管する。S612aにより、秘匿検索システム100の鍵生成・保管処理は終了する。
図16は、実施の形態2の秘匿検索システム100の登録処理を示すフローチャートである。図16のS701〜S712aは、登録装置300aと、検索装置400aと、管理装置500aとが実行する処理である。S701〜S706と、S709aと、S712aは登録装置300aに、S707〜S708a2は管理装置500aに、S710a〜S711aは検索装置400aによって実行される処理である。
なお、本検索処理におけるS701〜S704と、S706〜S707とは、実施の形態1のそれぞれと同様の処理であるため、ここでは省略する。
S705aにおいて、多重暗号化部308は、鍵保管部302から鍵Kを、パラメーター保管部303aからパラメーターmを読み出し、S704で生成された位置情報付き部分文字列集合Bの中の各位置情報付き部分文字列の暗号文Cを次のように生成する。
多重暗号化部308は、位置情報と部分文字列の各ペア(p,w)に対して、
C=E(E^(M+1−m)(K,w),p,ID(D))
と計算する。また、すべての(p,w)を暗号化した暗号文の集合をC(D)とし、保管暗号化データ集合(ID(D),m,C(D))を生成する。
S708a1において、データ保管部503は、S707で受信した保管暗号化データ集合(ID(D),m,C(D))を保管する。
S708a2において、パラメーター保管部502aは、S707で受信した保管暗号化データ集合(ID(D),m,C(D))のmから保管されているmの値を更新する。
S709aにおいて、送信部309aは、S705aで読み出したパラメーターmを検索装置400aへ送信する。
S710aにおいて、受信部401aは、S710aで送信されたパラメーターmを受信する。
S711aにおいて、パラメーター保管部407aは、保管されているパラメーターmをS711aで受信したパラメーターmに置き換えて更新する。
S712aにおいて、パラメーター保管部303aは、パラメーターmの値を1カウントアップしてmの値を更新する。S712aにより、秘匿検索システム100の登録処理は終了する。
図17は、実施の形態2の秘匿検索システム100の検索処理を示すフローチャートである。図17のS801〜S810は、検索装置400aと管理装置500aとが実行する処理である。S801〜S803及びS809〜S810は検索装置400aに、S804〜S808は管理装置500にaよって実行される処理である。
なお、本検索処理におけるS801と、S803と、S804と、S808〜S810は、実施の形態1のそれぞれと同様の処理であるため、ここでは省略する。
S802aにおいて、多重暗号化部404aは、鍵保管部402から鍵Kを、パラメーター保管部407aからパラメーターmを読み出し、S801で受け取った検索データsに対して鍵Kを用いて、次のようにして検索暗号化データtを生成する。
t=E^(M+1−m)(K,s)。
S805a1において、多重暗号化部506aは、パラメーター保管部502aからパラメーターmを読み出し、S804で受信した検索暗号化データtに基づき、次のような多重暗号化データ集合
{(1,t1)、(2,t2),・・・,(m,tm)}を生成する。
ただし、
t1=E^(m−1)(t),t2=E^(m−2)(t),・・・,tm=E^0(t)=t
である。
S805a2において、照合部504aは、データ保管部503から保管暗号化データ集合(ID(D),C(D))を読み出す。なお、もしS804で保管データ名も受信していた場合は、その保管データ名に基づき、対象の保管暗号化データ集合のみを読み出す。もしS804で保管データ名を受信していなかった場合は、保管されているすべての保管暗号化データ集合を読み出す。ここで、読み出した複数の保管暗号化データ集合を
{(ID(D1),1,C(D1)),・・・,(ID(Dm),m,C(Dm))}
とする。
S806aにおいて、照合部504aは、パラメーター保管部502aからパラメーターLを読み出し、S805a2で読み出した各(ID(Di),i,C(Di))(1≦i≦m)に対して、S805a1で生成した多重暗号化データ(i,ti)に基づき、ID(Di)に対する照合データ集合Xi={T1_i,・・・,TL_i}を生成する。
ただし、
T1_i=E(ti,1,ID(Di)),・・・,TL_i=E(ti,L,ID(Di))である。
S807aにおいて、照合部504aは、検索結果に関わる空集合Rを生成し、
各p(1≦p≦L)に対して次のような処理を行う。
S806aで生成したID(Di)に対する各照合データTp_i(1≦p≦L)がC(Di)に含まれているかを確認する。もしTp_iがC(Di)に含まれているならば、ペア(ID(Di),p)をRに加える。
S810により、秘匿検索システム100の検索処理は終了する。本実施の形態でも、実施の形態1と同様な削除処理を行うことにより、保管暗号化データ集合の削除が可能である。
<本実施の形態の動作具体例>
ここで、本実施の形態の動作を、
パラメーターL=3、パラメーターM=2、
最初の保管データをD1=ABC,ID(D1)=1、
次の保管データをD2=BC,ID(D2)=2、
検索データを=BC、
として説明する。
また暗号化関数Eは、ハッシュ関数を用いて説明する。
まず、D1の登録処理について説明する。
S702において、D1=(A,B,C)と分割される。
S703において、
A1={{(A),(AB),(ABC)},{(B),(BC)},{(C)}}
と生成される。
S704において、
B1={{(1,A),(1,AB),(1,ABC)},{(2,B),(2,BC)},{(3,C)}}と生成される。
S705aにおいて、m=1が読み出され、
C11=E(E^2(K,A),1,1),
C12=E(E^2(K,AB),1,1),
C13=E(E^2(K,ABC),1,1),
C14=E(E^2(K,B),2,1),
C15=E(E^2(K,BC),2,1),
C16=E(E^2(K,C),3,1)
を生成し,保管暗号化データ集合(1,C(D1))を生成する。
ただし、
C(D1)={C11,C12,C13,C14,C15,C16}
及び
M+1−m=2である。
S707及びS708a1により、保管暗号化データ集合(1,1,C(D1))が保管される。S708a2〜S712aにより、パラメーター保管部303aのパラメーターmが2に、パラメーター保管部407aとパラメーター保管部502aのパラメーターmが1に更新される。
次に、D1に対してsを使った検索処理について説明する。
S802aにおいて、m=1を読み出し、t=E^2(K,s)を計算する。
ただし、M+1−m=2である。
S805a1において、m=1を読み出し、t1=tを計算し、
多重暗号化データ集合{(1,t1)}を生成する。
S805a2において、(1,1,C(D1))を読み出す。
S806aにおいて、
T1_1=E(t1,1,1),
T2_1=E(t1,2,1),
T3_1=E(t1,3,1)
を計算する。
S807aにおいて、T1_1,T2_1,T3_1がC(D1)に含まれているかを確認する。実際、T2_1はC(D1)に含まれる(C15と一致する)。
よって、検索結果R={(1,2)}が生成される。
S810において、Rに基づき、「保管データ名が“1”のデータの“2番目”の位置から検索データBCが現れる」といった検索結果を出力する。
次に、D2の登録処理を行う。
S702において、D2=(B,C)と分割される。
S703において、A2={{(B),(BC)},{(C)}}と生成される。
S704において、B2={{(1,B),(1,BC)},{(2,C)}}と生成される。
S705aにおいて、m=2が読み出され、
C21=E(E^1(K,B),1,2),
C22=E(E^1(K,BC),1,2),
C23=E(E^1(K,C),2,2)
を生成し、保管暗号化データ集合(2,C(D2))
を生成する。
ただし、
C(D2)={C21,C22,C23}
及び
M+1−m=1である。
また、E^1=Eである。
S707及びS708a1により、保管暗号化データ集合(2,2,C(D2))が保管される。
S708a2〜S712aにより、パラメーター保管部303aのパラメーターmが3に、パラメーター保管部407aとパラメーター保管部502aのパラメーターmが2に更新される。
次に、D1とD2に対して再度sを使った検索処理について説明する。
S802aにおいて、m=2を読み出し、t=E(K,s)を計算する。
ただし、M+1−m=1である。
S805a1において、m=2を読み出し、t1=E(t),t2=t,を計算し、多重暗号化データ集合{(1,t1)、(2,t2)}を生成する。
S805a2において、
(1,1,C(D1))と(2,2,C(D2))
を読み出す。
S806aにおいて、
T1_1=E(t1,1,1),
T2_1=E(t1,2,1),
T3_1=E(t1,3,1)及び
T1_2=E(t2,1,2),
T2_2=E(t2,2,2),
T3_2=E(t2,3,2)
を計算する。
S807aにおいて、T1_1,T2_1,T3_1がC(D1)に含まれているか、
またT1_2,T2_2,T3_2がC(D2)に含まれているかを確認する。
実際、
T2_1はC(D1)に含まれ(C15と一致し)、
T1_2はC(D2)に含まれる(C22と一致する)。
よって、検索結果R={(1,2),(2,1)}が生成される。
S810において、Rに基づき、「保管データ名が“1”のデータの“2番目”の位置から検索データBCが現れる」、「保管データ名が“2”のデータの“1番目”の位置から検索データBCが現れる」といった検索結果を出力する。
なお、一度目に検索した検索データと二度目に検索した検索データは同一であるが(s=BC)、検索暗号化データはそれぞれE^2(K,s),E(K,s)であるため異なった値が生成されている。また、E(K,s)からE^2(K,s)は計算できるため、二度目に検索した検索暗号化データから一度目に検索した検索暗号化データが作れる。一方で、E^2(K,s)からE(K,s)を計算することは一般的に困難であるため、一度目に検索した検索暗号化データから二度目に検索した検索暗号化データを作ることは困難である。
以上が具体例の説明である。
本実施の形態におけるハードウェア資源の一例は、実施の形態1と同様であるため省略する。本実施の形態は、例えば、以下のような効果を奏する。
<***実施の形態2の効果***>
本実施の形態では、実施の形態1と同様な効果を得ることに加えて、ハッシュ鎖などの多重暗号化を用いることにより、過去に用いた検索暗号化データを、新しく追加した保管暗号化データ集合に対して適用できないため、より高い安全性を達成できる。
実施の形態3.
次に、本実施の形態の秘匿検索システムについて説明する。
実施の形態2では、ハッシュ鎖などの多重暗号化を用いることにより、より高い安全性を達成できたが、同じ鍵Kで生成や保管できる保管暗号化データ集合の数がパラメーターMと線型に依存するため、Mをある程度大きくとる必要がある。
一方で、Mを大きくとりすぎると、多重暗号化処理に時間がかかってしまう。
そこで、本実施の形態では、保管データを1つずつ保管することはせずに、複数の保管データをまとめて保管することによって、実施の形態2と同じMを選択しても、同じ鍵Kで暗号化や保管できる保管データの最大数を大きくすることや、かつ検索効率を向上できるような技術を開示する。
本実施の形態では、保管データを1つずつ保管することはせずに、索引として複数の保管データを同時に保管する手法を開示する。
本実施の形態の秘匿検索システム100は、実施の形態2とは一部異なっている。鍵生成装置200aは鍵生成装置200bへと、登録装置300aは登録装置300bへと、検索装置400aは検索装置400bへと、管理装置500aは管理装置500bへと変更されている。
以下、本実施の形態の構成について説明する。以下では、鍵生成装置200bの構成、登録装置300bの構成、検索装置400bの構成、管理装置500bの構成について順番に説明する。
図18は、鍵生成装置200bの構成を示すブロック図である。図18に示すように、鍵生成装置200bは、鍵生成部201と、パラメーター生成部202bと、送信部203bとを備える。図示していないが、鍵生成装置200bは、鍵生成装置200bの各部で使用されるデータを記憶する記録媒体を備える。鍵生成部201の説明は、すでに述べたため省略する。
パラメーター生成部202bは、前述のパラメーターL,Mを生成すると同時に、一度に保管できる保管データの最大数を表すパラメーターNを生成する。すなわち、各索引は最大N個の保管データに関する情報を保持することができる。もし、一度に保管する保管データ数がNを超える場合は、各索引を高々N個の保管データと対応づけるように複数の索引を生成する。なお、Nは1より大きい整数である。また、NはL,Mと同様に秘密情報ではないため、公に公開されていても構わない。
送信部203bは、鍵生成部201で生成された鍵Kを、登録装置300bと、検索装置400bとへ送信し、また、パラメーター生成部202bで生成されたパラメーター(L,M,N)を、登録装置300bと、管理装置500bとへ送信し、またパラメーター(L,M)を検索装置400bへ送信する。
図19は、登録装置300bの構成を示すブロック図である。図19に示すように、登録装置300bは、受信部301bと、鍵保管部302と、パラメーター保管部303bと、入力部304bと、データ分割部305と、部分文字列生成部306と、位置情報割当部307と、多重暗号化部308bと、送信部309bと、集約部310bとを備える。図示していないが、登録装置300bは、登録装置300bの各部で使用されるデータを記憶する記録媒体を備える。
鍵保管部302と、データ分割部305と、部分文字列生成部306と、位置情報割当部307との説明は、すでに述べたため省略する。
受信部301bは、鍵生成装置200bから送信されてきた鍵Kとパラメーター(L,M,N)を受信する。
パラメーター保管部303bは、受信部301bから受け取ったパラメーター(L,M,N)を保管することや、鍵KとパラメーターMを使って暗号化された管理装置500aに保管されている索引の数を表すパラメーターmも保管する。なお、mの初期値は1を表し、多重暗号化部308aからmが読み出されたら、mの値を1カウントアップしてmの値を更新する。
入力部304bは、データ登録者から保管データ及び保管データ名の
ペアの集合{(ID(D1),D1),・・・,(ID(Dn),Dn)}、
また索引名ID(I)
を受け取る。
なお、保管データ及び保管データ名は集合ではなく、単一でもよい。
もしn>Nの場合は、n=n1+・・・+nkかつnj≦n(1≦j≦n)
となるように分割して、各njについて以下の処理をk回実行すればよい。
もし、データ登録者から索引名の入力がなければ、入力部304bは、ID(I)を乱数と割り当ててもよいし、他の索引名と重複しないように0より大きい整数の値を順に割り当ててもよい。
ここで、データ分割部305と、部分文字列生成部306と、位置情報割当部307とは、上記の
{(ID(D1),D1),・・・,(ID(Dn),Dn)}
に対して、次のように処理を行ったとする。
各データは
D1=(w_1,・・・,w_1),・・・,Dn=(w_n,・・・,w_n)
のように分割され、各位置情報付き部分文字列集合Bi(1≦i≦n)は、
{(1,w_i),(1,w_iw_i),・・・,(1,w_i・・・w_i)},
{(2,w_i),(2,w_iw_i),・・・,(2,w_i・・・w_i)},
・・・,
{(L,w_i)}}
のように生成されたとする。
多重暗号化部308bは、後述する集約部310bから受け取った集約データ集合Yを受け取り、鍵保管部302から鍵Kを、パラメーター保管部303bからパラメーター(m,M,N)を読み出し、Yの各要素の暗号文及び集合Iを次のように生成する。
各要素(p,w,{ID(D_i1),・・・,ID(D_ik)},{ID(D_ik+1),・・・,ID(D_in)})に対して、
C1 =E(E^(M+1−m)(K,w,0),p,1, ID(I)),
・・・,
Ck =E(E^(M+1−m)(K,w,0),p,k, ID(I)),
Ck+1=E(E^(M+1−m)(K,w,1),p,k+1,ID(I)),
・・・,
Cn= E(E^(M+1−m)(K,w,1),p,n, ID(I))
と生成し、
集合I={(Cj,ID(D_ij))}
と置く。以降、この集合Iを索引と呼ぶことにする。
また、(ID(I),m,I)
を保管索引と呼ぶことにする。
送信部309bは、多重暗号化部308bから受け取った保管索引(ID(I),m,I)を管理装置500bへ送信することや、また索引Iを生成したときに用いたパラメーターmを検索装置400bへ送信する。
集約部310bは、位置情報割当部307から受け取ったB1,・・・Bnに対して、次のような集合Yを生成する。
集合Yの各要素は、
(p,w,{ID(D_i1),・・・,ID(D_ik)},{ID(D_ik+1),・・・,ID(D_in)})
は、
「(p,w)はBi1,・・・,Bikそれぞれに含まれるが、Bik+1,・・・,Binには含まれない」ことを意味する。
なお、このペア(p,w)は必ずB1,・・・,Bnのいずれかに含まれるとする。また、複数含まれてもよい。つまり、YはB1,・・・,Bnの要素を集約した集合とみなすことができる。また、
{ID(D_i1),・・・,ID(D_in)}={ID(D1),・・・,ID(Dn)}
である。以降では、Yを集約データ集合と呼ぶことにする。
図20は、検索装置400bの構成を示すブロック図である。図20に示すように、検索装置400bは、受信部401aと、鍵保管部402と、入力部403bと、多重暗号化部404bと、送信部405bと、出力部406と、パラメーター保管部407aとを備える。図示していないが、検索装置400bは、検索装置400bの各部で使用されるデータを記憶する記録媒体を備える。
受信部401aと、鍵保管部402と、出力部406と、パラメーター保管部407aの説明は、既に述べたため省略する。
入力部403bは、データ検索者から入力された検索データsを受け取る。また、入力部403bは、データ検索者から、検索データと同時に、その検索データと検索したい保管索引を指定するような保管索引名も複数受けとってもよい。
多重暗号化部404bは、鍵保管部402から鍵Kを、パラメーター保管部407aからパラメーターmを読み出し、入力部403bから受け取った検索データsに対して、鍵Kとパラメーターmを用いて、次のように暗号文tを生成する。
多重暗号化部404bは、
t=E^(M+1−m)(K,s,0)
を生成する。
以降では、このtを検索暗号化データと呼ぶ。
送信部405bは、多重暗号化部404bから受け取った検索暗号化データtを管理装置500bへ送信する。もし、データ検索者から検索データと同時に保管索引名も入力されていた場合は、検索暗号化データと保管索引名の両方を管理装置500bへ送信する。
図21は、管理装置500bの構成を示すブロック図である。図21に示すように、管理装置500bは、受信部501bと、パラメーター保管部502bと、データ保管部503bと、照合部504bと、送信部505と、多重暗号化部506aとを備える。図示していないが、管理装置500bは、管理装置500bの各部で使用されるデータを記憶する記録媒体を備える。
送信部505と、多重暗号化部506aの説明は、すでに述べたため省略する。
受信部501bは、鍵生成装置200bから送信されてきたパラメーター(L,M,N)、登録装置300bから送信されてきた保管暗号化データ集合(ID(I),m,I)や削除索引名、検索装置400bから送信されてきた検索暗号化データtや保管索引名を受信する。
パラメーター保管部502bは、受信部501bから受け取ったパラメーター(L,M,N)や、保管索引(ID(I),m,I)のmも合わせて保管する。
データ保管部503bは、受信部501bから受け取った保管索引(ID(I),m,I)を保管する。必要があれば、送信されてきた日時なども同時に保管してもよい。また、データ保管部503bは、受信部501bから受け取った削除索引名に基づき、保管している保管索引を削除する。
照合部504bは、検索結果に関わる空集合Rを生成し、データ保管部503bからすべての保管索引(ID(I),m,I)を読み出し、多重暗号化部506aから受け取った多重暗号化データ集合{(1,t1)、(2,t2),・・・,(m,tm)}に基づき、次のようにして照合を行うことや検索結果を生成する。
照合部504bは、各i(1≦i≦m)に対して、(ID(I),i,I)となる保管索引を抽出し、次を繰り返し実行する。
照合部504bは、各p(1≦p≦L)及び各j(1≦j≦N)に対して、
C_pj=E(ti,p,j,ID(I))を計算し(全部でL×N個の計算)、
各C_pjが索引Iに含まれているかを確認し、もし含まれていればC_pjとペアで保管されているID(D)を抽出して(ID(D),p)を空集合Rに追加する。
なお、もしC_pjはIに含まれるが、
C_pj+1=E(ti,p,j+1,ID(I))
が索引Iに含まれない場合は、
E(ti,p,j+2,ID(I)),・・・,E(ti,p,N,ID(I))
も索引Iには含まれないため、これらの計算を省略して検索効率を高めることができる。
以降では、
各C_pj(1≦p≦L,1≦j≦N)
をID(I)に対する照合データと呼ぶことにする。また、本処理の結果、最終的に生成される集合Rを検索結果と呼ぶことにする。
なお、照合部504bは、受信部501bが検索装置400bから保管索引名も受信していれば、それに基づいてデータ保管部503bから対象となる保管索引のみを読み出して、同様な処理を行う。
以下では、本実施の形態に係る検索方法に相当する、秘匿検索システム100の動作について説明する。
図22は、本実施の形態における秘匿検索システム100の鍵生成・保管処理を示すフローチャートである。図22のS601〜S612bは、鍵生成装置200bと、登録装置300bと、検索装置400bと、管理装置500bとが実行する処理である。S601〜S605bは鍵生成装置200bに、S606b〜S608bは登録装置300bに、S609a〜S610a2は検索装置400bに、S611b〜S612bは管理装置500aによって実行される処理である。
なお、本検索処理におけるS601と、S604a、S607と、S609a〜S610a2とは、実施の形態2のそれぞれと同様の処理であるため、ここでは省略する。
S602bにおいて、パラメーター生成部202bは、パラメーターL、M、Nを生成する。なお、前述の通り、Lは保管データを分割したときに現れる文字列の最大数であり、Mは同じ鍵Kを用いて管理装置500bに保管できる保管索引の最大数を表し、Nは一度に登録できる保管データの最大数である。
S603bにおいて、送信部203bは、S601で生成した鍵Kと、S602bで生成したパラメーター(L,M,N)とを、登録装置300bへ送信する。
S605bにおいて、送信部203bは、S602bで生成したパラメーター(L,M,N)を、管理装置500bへ送信する。
S606bにおいて、受信部301bは、S603bで送信された鍵Kと、パラメーター(L,M,N)とを受信する。
S608bにおいて、パラメーター保管部303bは、S606bで受信したパラメーター(L,M,N)を記憶媒体に保管する。
S611bにおいて、受信部501bは、S605bで送信されたパラメーター(L,M,N)を受信する。
S612bにおいて、パラメーター保管部502bは、S611bで受信したパラメーター(L,M,N)を記憶媒体に保管する。
S612bにより、秘匿検索システム100の鍵生成・保管処理は終了する。
図23は、秘匿検索システム100の登録処理を示すフローチャートである。図23のS701〜S712aは、登録装置300bと、検索装置400bと、管理装置500bとが実行する処理である。S701〜S706bと、S709aと、S712aは登録装置300bに、S707b〜S708b2は管理装置500bに、S710a〜S711aは検索装置400bによって実行される処理である。
なお、本検索処理におけるS701〜S704と、S709a2〜S712aとは、実施の形態2のそれぞれと同様の処理であるため、ここでは省略する。
S705b1において、集約部310bは、S704で生成されたB1,・・・Bnに対して、集約データ集合Yを生成する。なお、前述の通り、Yの各要素は(p,w,{ID(D_i1),・・・,ID(D_ik)},{ID(D_ik+1),・・・,ID(D_in)})と表わされる。
S705b2において、多重暗号化部308bは、S705b1で生成された集約データ集合Yを受け取り、鍵保管部302から鍵Kを、パラメーター保管部303bからパラメーター(m,M,N)を読み出し、保管索引(ID(I),m,I)を生成する。
なお、前述の通り、索引IはI={(Cj,ID(D_ij))}と表わされ、またYの各要素
(p,w,{ID(D_i1),・・・,ID(D_ik)},{ID(D_ik+1),・・・,ID(D_in)})
におけるC1,・・・,Cnは
次のように表わされている。
C1=E(E^(M+1−m)(K,w,0),p,1,ID(I)),
・・・,
Ck=E(E^(M+1−m)(K,w,0),p,k,ID(I)),
Ck+1=E(E^(M+1−m)(K,w,1),p,k+1,ID(I)),
・・・,
Cn=E(E^(M+1−m)(K,w,1),p,n,ID(I))。
S706bにおいて、送信部309bは、S705b2で生成した保管索引(ID(I),m,I)を管理装置500bへ送信する。
S707bにおいて、受信部501bは、S706bで送信された保管索引(ID(I),m,I)を受信する。
S708b1において、データ保管部503bは、S707bで受信した保管索引(ID(I),m,I)を保管する。
S708b2において、パラメーター保管部502bは、S707bで受信した保管索引(ID(I),m,I)のmから保管されているmの値を更新する。
S712aにより、秘匿検索システム100の登録処理は終了する。
図24は、秘匿検索システム100の検索処理を示すフローチャートである。図24のS801〜S810は、検索装置400bと管理装置500bとが実行する処理である。S801〜S803及びS809〜S810は検索装置400bに、S804〜S808は管理装置500にaよって実行される処理である。
なお、本検索処理におけるS801と、S803と、S804〜S805a1と、S808〜S810は、実施の形態2のそれぞれと同様の処理であるため、ここでは省略する。
S802bにおいて、多重暗号化部404bは、鍵保管部402から鍵Kを、パラメーター保管部407aからパラメーターmを読み出し、S801で受け取った検索データsに対して鍵Kを用いて、次のようにして検索暗号化データtを生成する。
t=E^(M+1−m)(K,s,0)。
S805b2において、照合部504bは、データ保管部503bからすべての保管索引(ID(I),m,I)を読み出す。なお、もしS804で保管索引名も受信していた場合は、その保管索引名に基づき、対象の保管索引のみを読み出す。もしS804で保管索引名を受信していなかった場合は、保管されているすべての保管索引を読み出す。ここで、読み出した複数の保管暗号化データ集合を、
{(ID(I1),1,I1)),・・・,(ID(Im),m,Im)}
とする。
S806bにおいて、照合部504bは、パラメーター保管部502bからパラメーター(L,N)を読み出し、S805b2で読み出した各保管索引の(ID(Ii),i,Ii)(1≦i≦m)に対して、
S805a1で生成された多重暗号化データ(i,ti)に基づき、次のようにして各Iiに対する照合データ集合Xiを生成する。
各p(1≦p≦L)及び各j(1≦j≦N)に対して、
C_pj=E(ti,p,j,ID(Ii))を計算し、
このL×N個の照合データの集合をXiとする。なお、本ステップでは、照合データ集合X1,・・・,Xmが生成される。
S807bにおいて、照合部504bは、検索結果に関わる空集合Rを生成し、S806bで生成された各照合データ集合の
Xi={C_pj}(1≦i≦m,1≦p≦L,1≦j≦N)に対して、
次のようにして照合処理を行い、検索結果Rを生成する。
各C_pjがIiに含まれているかを確認し、
もし含まれていればC_pjとペアで保管されているID(D)を抽出して(ID(D),p)をRに追加する。
なお、前述の通り、もしC_pjはIiに含まれるが、
C_pj+1=E(ti,p,j+1,ID(I))
がIiに含まれない場合は、
E(ti,p,j+2,ID(I)),・・・,E(ti,p,N,ID(I))
もIiには含まれないため、これらの照合処理を省略して検索効率を高めることができる。
S810により、秘匿検索システム100の検索処理は終了する。なお、S806bでは、各Iiに対する照合データ集合Xiにおいて、すべてのC_pj(1≦p≦L,1≦j≦N)を生成していたが、前述の通り、もしC_pjはIiに含まれるが、
C_pj+1=E(ti,p,j+1,ID(I))
がIiに含まれない場合は、
E(ti,p,j+2,ID(I)),・・・,E(ti,p,N,ID(I))
もIiには含まれないため、いくつかのC_pjの生成に関わる処理は省略することができる。具体的には、S806bとS807bのステップを完全に分割せず、各C_pjを生成した直後に照合処理を行うといったようにS806bとS807bを繰り返して処理すれば、この効率化は実現できる。
本実施の形態でも、削除データ名を削除索引名と読み替えることによって、実施の形態1と同様な削除処理を行うことにより、保管索引の削除が可能である。
<本実施の形態の動作具体例>
ここで、本実施の形態の動作を、
パラメーターL=3、パラメーターM=2、パラメーターN=3、
保管データをD1=ABC,ID(D1)=1、
及び保管データD2=BBC,ID(D2)=2、
索引名=3、検索データs=BC、
として説明する。
また暗号化関数Eは、ハッシュ関数を用いて説明する。
まず、D1とD2の登録処理について説明する。
S702において、D1=(A,B,C),D2=(B,B,C)と分割される。
S703において、
A1={{(A),(AB),(ABC)},{(B),(BC)},{(C)}}
及び
A2={{(B),(BB),(BBC)},{(B),(BC)},{(C)}}
と生成される。
S704において、
B1={{(1,A),(1,AB),(1,ABC)},{(2,B),(2,BC)},{(3,C)}}及び
B2={{(1,B),(1,BB),(1,BBC)},{(2,B),(2,BC)},{(3,C)}}と生成される。
S705b1において、
次のように集約する。
(1,A,{1},{2}),
(1,AB,{1},{2}),
(1,ABC,{1},{2}),
(1,B,{2},{1}),
(1,BB,{2},{1}),
(1,BBC,{2},{1}),
(2,B,{1,2},{}),
(2,BC,{1,2},{}),
(3,C,{1,2},{})。
S705b2において、m=1が読み出され、
I=
{(C11,1),(C12,2),
(C21,1),(C22,2),
(C31,1),(C32,2),
(C41,2),(C42,1),
(C51,2),(C52,1),
(C61,2),(C62,1),
(C71,1),(C72,2),
(C81,1),(C82,2),
(C91,1),(C92,2)}
を生成し,保管索引(3,1,I)を生成する。
ただし、
C11=E(E^2(K,A,0),1,1,3),
C12=E(E^2(K,A,1),1,2,3),
C21=E(E^2(K,AB,0),1,1,3),
C22=E(E^2(K,AB,1),1,2,3),
C31=E(E^2(K,ABC,0),1,1,3),
C32=E(E^2(K,ABC,1),1,2,3),
C41=E(E^2(K,B,0),1,1,3),
C42=E(E^2(K,B,1),1,2,3),
C51=E(E^2(K,BB,0),1,1,3),
C52=E(E^2(K,BB,1),1,2,3),
C61=E(E^2(K,BBC,0),1,1,3),
C62=E(E^2(K,BBC,1),1,2,3),
C71=E(E^2(K,B,0),2,1,3),
C72=E(E^2(K,B,0),2,2,3),
C81=E(E^2(K,BC,0),2,1,3),
C82=E(E^2(K,BC,0),2,2,3),
C91=E(E^2(K,C,0),3,1,3),
C92=E(E^2(K,C,0),3,2,3)、
またM+1−m=2である。
S707b及びS708b1により、保管索引(3,1,I)が保管される。
S708b2〜S712aにより、パラメーター保管部303aのパラメーターmが2に、パラメーター保管部407aとパラメーター保管部502aのパラメーターmが1に更新される。
次に、s=BCの検索処理について説明する。
S802aにおいて、m=2を読み出し、
t=E^2(K,s,0)
を計算する。ただし、M+1−m=2である。
S805a1において、m=1を読み出し、t1=tとして、(1,t1)を生成する。
S805b2において、(3,1,I)を読み出す。
S806bにおいて、L=3及びN=3を読み出し、
C_11=E(t1,1,1,3),
C_12=E(t1,1,2,3),
C_13=E(t1,1,3,3),
C_21=E(t1,2,1,3),
C_22=E(t1,2,2,3),
C_23=E(t1,2,3,3),
C_31=E(t1,3,1,3),
C_32=E(t1,3,2,3),
C_33=E(t1,3,3,3)
を計算する。
S807bにおいて、C_11,・・・,C_33がIに含まれているかを確認する。
実際、
C_21
=E(t1,2,1,3)
=C81,C_22
=E(t1,2,2,3)
=C82
であることがわかり、
(C81,1)及び(C82,2)から検索結果R={(1,2),(2,2)}が生成される。
S810において、Rに基づき、
「保管データ名が“1”のデータの“2番目”の位置から検索データBCが現れる」、
「保管データ名が“2”のデータの“2番目”の位置から検索データBCが現れる」
といった検索結果を出力する。
なお、S806bにおいて、生成したC_11を直ちにS807bの照合処理を行うことによって、C_11はIに含まれないので、C_12及びC_13の生成を省略することができる。同様に、C_31もIに含まれないので、C_32及びC_33の生成を省略することができる。このようにして、検索効率を上げることが可能である。
以上が具体例の説明である。
本実施の形態におけるハードウェア資源の一例は、実施の形態1と同様であるため省略する。
<***実施の形態3の効果***>
本実施の形態は、例えば、以下のような効果を奏する。
本実施の形態では、保管データを1つずつ保管することはせずに、複数の保管データをまとめて保管することによって、実施の形態2と同じMを選択しても、同じ鍵Kで暗号化や保管できる保管データの最大数を大きくすることや、かつ検索効率を向上できる。
以上、本発明の実施の形態について説明したが、これらの実施の形態のうち、2つ以上を組み合わせて実施しても構わない。あるいは、これらの実施の形態のうち、1つを部分的に実施しても構わない。あるいは、これらの実施の形態のうち、2つ以上を部分的に組み合わせて実施しても構わない。なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
100 秘匿検索システム、101 インターネット、200,200a,200b 鍵生成装置、201 鍵生成部、202,202a,202b パラメーター生成部、203,203a,203b 送信部、300,300a,300b 登録装置、301,301a,301b 受信部、302 鍵保管部、303,303a,303b パラメーター保管部、304,304b 入力部、305 データ分割部、306 部分文字列生成部、307 位置情報割当部、308 暗号化部、308a,308b 多重暗号化部、309,309a,309b 送信部、310b 集約部、400,400a,400b 検索装置、401,401a 受信部、402 鍵保管部、403,403b 入力部、404 暗号化部、404a,404b 多重暗号化部、405,405b 送信部、406 出力部、407a パラメーター保管部、500,500a,500b 管理装置、501,501a,501b 受信部、502,502a,502b パラメーター保管部、503,503b データ保管部、504,504a,504b 照合部、505 送信部、506a 多重暗号化部、1001 CPU、1002 バス、1003 ROM、1004 RAM、1005 通信ボード、1011 ディスプレイ、1012 キーボード、1013 マウス、1014 ドライブ、1020 磁気ディスク装置、1021 OS、1022 プログラム群、1023 ファイル群。

Claims (9)

  1. 文字列データDを、前記文字列データDの始まりから終わりに向かうN個の要素データw,w,...,wに分割するデータ分割部と、
    前記N個の要素データw,w,...,wから、
    集合A={A,A,...,A},
    集合Aの要素A={(w),(wi+1),...,(wi+1...w)},i=1,...,N,
    を生成する部分文字列生成部と、
    前記要素Aの成分である(w),(wi+1),...,(wi+1...w)のそれぞれに位置情報iを対応させることにより、
    集合B={B,B,...,B}、
    集合Bの要素B={(i,w),(i,wi+1),...,(i,wi+1...w)}
    を生成する位置情報割当部と、
    前記要素Bに含まれる成分である(i,w),(i,wi+1),...,(i,wi+1...w)のそれぞれを暗号化する暗号化部と
    を備えた暗号化装置。
  2. 前記暗号化部は、
    前記要素Bに含まれる各成分を暗号化する場合に、前記要素Bに含まれる各成分を、前記文字列データDを識別する識別子と共に暗号化する請求項1に記載の暗号化装置。
  3. 前記暗号化部は、
    前記要素Bに含まれる各成分を暗号化する場合に、前記要素Bの成分に含まれる前記要素Aの成分を暗号化し、暗号化された前記要素Aの成分を、暗号化された前記要素Aの成分と対をなす位置情報と共に暗号化する請求項1または請求項2に記載の暗号化装置。
  4. 前記暗号化部は、
    前記要素Bの成分に含まれる前記要素Aの成分を暗号化する場合に、暗号化を複数回繰り返す多重暗号化を行う請求項3に記載の暗号化装置。
  5. 前記暗号化装置は、さらに、
    前記文字列データDの分割数を指定するパラメーターを保管するパラメーター保管部を備え、
    前記データ分割部は、
    前記文字列データDを,前記パラメーターが指定する分割数以下のN個に分割する請求項1から請求項4のいずれか一項に記載の暗号化装置。
  6. データ分割部が、
    文字列データDを、前記文字列データDの始まりから終わりに向かうN個の要素データw,w,...,wに分割し、
    部分文字列生成部が、
    前記N個の要素データw,w,...,wから、
    集合A={A,A,...,A},
    集合Aの要素A={(w),(wi+1),...,(wi+1...w)},i=1,...,N,
    を生成し、
    位置情報割当部が、
    前記要素Aの成分である(w),(wi+1),...,(wi+1...w)のそれぞれに位置情報iを対応させることにより、
    集合B={B,B,...,B}、
    集合Bの要素B={(i,w),(i,wi+1),...,(i,wi+1...w)}
    を生成し、
    暗号化部が、
    前記要素Bに含まれる成分である(i,w),(i,wi+1),...,(i,wi+1...w)のそれぞれを暗号化する
    暗号化方法。
  7. コンピュータに、
    文字列データDを、前記文字列データDの始まりから終わりに向かうN個の要素データw,w,...,wに分割する処理、
    前記N個の要素データw,w,...,wから、
    集合A={A,A,...,A},
    集合Aの要素A={(w),(wi+1),...,(wi+1...w)},i=1,...,N,
    を生成する処理、
    前記要素Aの成分である(w),(wi+1),...,(wi+1...w)のそれぞれに位置情報iを対応させることにより、
    集合B={B,B,...,B}、
    集合Bの要素B={(i,w),(i,wi+1),...,(i,wi+1...w)}
    を生成する処理、
    前記要素Bに含まれる成分である(i,w),(i,wi+1),...,(i,wi+1...w)のそれぞれを暗号化する処理、
    を実行させるための暗号化プログラム。
  8. 文字列データDを、前記文字列データDの始まりから終わりに向かうN個の要素データw,w,...,wに分割するデータ分割部と、
    前記N個の要素データw,w,...,wの各要素データを暗号化し、暗号化された各要素データを、前記文字列データDを識別する識別子と共に暗号化する暗号化部と
    を備えた暗号化装置。
  9. 前記暗号化装置は、さらに、
    前記N個の要素データw1,,...,wから、
    集合A={A,A,...,A},
    集合Aの要素A={(w),(wi+1),...,(wi+1...w)},i=1,...,N,
    を生成する部分文字列生成部を備え、
    前記暗号化部は、
    集合Aの要素Aの成分である(w),(wi+1),...,(wi+1...w)の各成分を暗号化し、暗号化された各成分を前記識別子と共に暗号化する請求項8に記載の暗号化装置。
JP2016554744A 2016-01-15 2016-01-15 暗号化装置、暗号化方法、暗号化プログラム及び保管装置 Active JP6038427B1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/051158 WO2017122352A1 (ja) 2016-01-15 2016-01-15 暗号化装置、暗号化方法及び暗号化プログラム

Publications (2)

Publication Number Publication Date
JP6038427B1 JP6038427B1 (ja) 2016-12-07
JPWO2017122352A1 true JPWO2017122352A1 (ja) 2018-01-18

Family

ID=57483104

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016554744A Active JP6038427B1 (ja) 2016-01-15 2016-01-15 暗号化装置、暗号化方法、暗号化プログラム及び保管装置

Country Status (5)

Country Link
US (1) US11005645B2 (ja)
EP (1) EP3392865B1 (ja)
JP (1) JP6038427B1 (ja)
CN (1) CN108475480B (ja)
WO (1) WO2017122352A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3392865B1 (en) 2016-01-15 2021-06-02 Mitsubishi Electric Corporation Encryption device, encryption method, and encryption program
KR102290605B1 (ko) * 2016-12-20 2021-08-18 니폰 덴신 덴와 가부시끼가이샤 메시지 송신 시스템, 통신 단말, 서버 장치, 메시지 송신 방법 및 프로그램
US11106740B2 (en) 2017-04-25 2021-08-31 Mitsubishi Electric Corporation Search device, search system, search method, and computer readable medium
US10742401B2 (en) * 2017-12-19 2020-08-11 International Business Machines Corporation Half-pyramid data encryption
WO2019142268A1 (ja) 2018-01-17 2019-07-25 三菱電機株式会社 登録装置、検索操作装置、データ管理装置、登録プログラム、検索操作プログラムおよびデータ管理プログラム
JP6918253B2 (ja) 2018-12-28 2021-08-11 三菱電機株式会社 秘匿検索システムおよび秘匿検索方法

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2519130B2 (ja) 1991-01-10 1996-07-31 株式会社テレマティーク国際研究所 マルチキ―ワ―ド情報検索処理方式および検索ファイル作成装置
JP2519129B2 (ja) 1991-01-10 1996-07-31 株式会社テレマティーク国際研究所 マルチキ―ワ―ド情報検索処理方式および検索ファイル作成装置
JP3143079B2 (ja) 1997-05-30 2001-03-07 松下電器産業株式会社 辞書索引作成装置と文書検索装置
JP2002108910A (ja) * 2000-09-27 2002-04-12 Nec Soft Ltd 暗号化ファイルシステム及び暗号化ファイル検索方法並びにコンピュータ可読記録媒体
JP2002278970A (ja) * 2001-03-16 2002-09-27 Ricoh Co Ltd 文書管理システム
JP4011383B2 (ja) * 2002-04-04 2007-11-21 Kddi株式会社 データ検索方法、データ検索システム、検索キーワード生成装置、及びコンピュータプログラム
JP2005101883A (ja) 2003-09-25 2005-04-14 Hitachi Ltd 電子メール文書原本性保証装置
JP4395611B2 (ja) 2003-10-28 2010-01-13 独立行政法人情報通信研究機構 暗号化データベース検索装置および方法ならびに暗号化データベース検索プログラム
JP2006072585A (ja) * 2004-08-31 2006-03-16 Planet:Kk 移動体通信端末を用いた認証方法
JP2006113704A (ja) * 2004-10-13 2006-04-27 Toshiba Corp 医用システムのパスワード管理方法及び医用装置用パスワード管理システム
JP2009048621A (ja) * 2007-07-26 2009-03-05 Ricoh Co Ltd データ提供装置、データ提供方法、及びプログラム
TW201027375A (en) 2008-10-20 2010-07-16 Ibm Search system, search method and program
JP5140026B2 (ja) 2009-03-19 2013-02-06 株式会社日立製作所 データベース処理方法、データベース処理プログラム、および、暗号化装置
WO2012004880A1 (ja) * 2010-07-08 2012-01-12 三菱電機株式会社 キーワード変換装置、キーワード変換プログラム、記録媒体及びキーワード変換方法
US8533489B2 (en) 2010-09-29 2013-09-10 Microsoft Corporation Searchable symmetric encryption with dynamic updating
JP5412414B2 (ja) 2010-12-08 2014-02-12 株式会社日立製作所 検索可能暗号処理システム
US8429421B2 (en) 2010-12-17 2013-04-23 Microsoft Corporation Server-side encrypted pattern matching
WO2012095973A1 (ja) 2011-01-13 2012-07-19 三菱電機株式会社 データ処理装置及びデータ保管装置
JP2012164031A (ja) 2011-02-03 2012-08-30 Mitsubishi Electric Corp データ処理装置及びデータ保管装置及びデータ処理方法及びデータ保管方法及びプログラム
WO2012115031A1 (ja) 2011-02-22 2012-08-30 三菱電機株式会社 検索システム、検索システムの検索方法、情報処理装置、検索プログラム、対応キーワード管理装置および対応キーワード管理プログラム
JP5307199B2 (ja) * 2011-07-15 2013-10-02 株式会社エアー データ管理システム及びデータ管理方法
US9311494B2 (en) 2011-12-01 2016-04-12 Hitachi, Ltd. Secure search method and secure search device
JP5800720B2 (ja) 2012-01-24 2015-10-28 三菱電機株式会社 情報処理装置及び情報処理方法及びプログラム
JP5255154B1 (ja) 2012-12-26 2013-08-07 株式会社エアー 部分一致検索の可能な暗号システム
EP2960808A4 (en) 2013-02-25 2016-10-26 Mitsubishi Electric Corp SERVER DEVICE, PRIVATE SEARCH PROGRAM, RECORDING MEDIA AND PRIVATE SEARCH SYSTEM
JP6054790B2 (ja) * 2013-03-28 2016-12-27 三菱スペース・ソフトウエア株式会社 遺伝子情報記憶装置、遺伝子情報検索装置、遺伝子情報記憶プログラム、遺伝子情報検索プログラム、遺伝子情報記憶方法、遺伝子情報検索方法及び遺伝子情報検索システム
JP6144992B2 (ja) 2013-08-08 2017-06-07 株式会社日立製作所 検索可能暗号処理システム及び方法
KR101522870B1 (ko) * 2013-10-01 2015-05-26 주식회사 파수닷컴 데이터 컬럼 암호화 장치 및 방법
JP6208586B2 (ja) 2014-01-16 2017-10-04 株式会社日立製作所 検索可能暗号処理システムおよび検索可能暗号処理方法
US11087006B2 (en) * 2014-06-30 2021-08-10 Nicira, Inc. Method and apparatus for encrypting messages based on encryption group association
WO2016063344A1 (ja) 2014-10-21 2016-04-28 三菱電機株式会社 サーバ装置及び検索システム及び端末装置及び検索方法及びサーバプログラム及び端末プログラム
JP6381128B2 (ja) 2015-02-05 2018-08-29 国立研究開発法人産業技術総合研究所 検索システム、クライアント、サーバ、検索プログラムおよび検索方法
US9894042B2 (en) 2015-07-24 2018-02-13 Skyhigh Networks, Inc. Searchable encryption enabling encrypted search based on document type
EP3392865B1 (en) 2016-01-15 2021-06-02 Mitsubishi Electric Corporation Encryption device, encryption method, and encryption program

Also Published As

Publication number Publication date
US20190036679A1 (en) 2019-01-31
CN108475480A (zh) 2018-08-31
EP3392865A4 (en) 2019-03-13
WO2017122352A1 (ja) 2017-07-20
JP6038427B1 (ja) 2016-12-07
EP3392865B1 (en) 2021-06-02
EP3392865A1 (en) 2018-10-24
US11005645B2 (en) 2021-05-11
CN108475480B (zh) 2021-03-23

Similar Documents

Publication Publication Date Title
JP6038427B1 (ja) 暗号化装置、暗号化方法、暗号化プログラム及び保管装置
Jiang et al. Privacy-preserving and efficient multi-keyword search over encrypted data on blockchain
Yang et al. Lightweight and privacy-preserving delegatable proofs of storage with data dynamics in cloud storage
Tahir et al. A new secure and lightweight searchable encryption scheme over encrypted cloud data
Baldimtsi et al. Sorting and searching behind the curtain
US9111106B2 (en) Data processing apparatus and data storage apparatus
JP6234605B2 (ja) サーバ装置及び検索システム及び端末装置及び検索方法及びサーバプログラム及び端末プログラム
JP6239213B1 (ja) 秘匿検索システム、秘匿検索方法及び秘匿検索プログラム
JP2012164031A (ja) データ処理装置及びデータ保管装置及びデータ処理方法及びデータ保管方法及びプログラム
CN112074889B (zh) 隐匿检索装置和隐匿检索方法
JP6289768B2 (ja) 暗号化装置、暗号化プログラム及び暗号化方法
Park et al. PKIS: practical keyword index search on cloud datacenter
Amorim et al. Homomorphic Encryption: An Analysis of its Applications in Searchable Encryption
Kamble et al. A study on fuzzy keywords search techniques and incorporating certificateless cryptography
Vora et al. Keyword-based private searching on cloud data along with keyword association and dissociation using cuckoo filter
Yamamoto et al. Space-efficient and secure substring searchable symmetric encryption using an improved DAWG
Miyoshi et al. Practical and secure searchable symmetric encryption with a small index
Fink et al. Streaming, plaintext private information retrieval using regular expressions on arbitrary length search strings
WO2015107561A1 (ja) 検索システム、検索方法および検索プログラム
Nepolean et al. Privacy preserving ranked keyword search over encrypted cloud data
Ferrara et al. Verifiable hierarchical key assignment schemes
Pillai et al. Blockchain-Based Searchable Asymmetric Encryption Scheme in Cloud Environment
Li et al. Verifiable range query processing for cloud computing
Mallaiah et al. Word and Phrase Proximity Searchable Encryption Protocols for Cloud Based Relational Databases

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160830

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160830

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20160830

TRDD Decision of grant or rejection written
A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20160928

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20161004

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161101

R150 Certificate of patent or registration of utility model

Ref document number: 6038427

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250