JPWO2017122352A1 - 暗号化装置、暗号化方法、暗号化プログラム及び保管装置 - Google Patents
暗号化装置、暗号化方法、暗号化プログラム及び保管装置 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/148—File search processing
- G06F16/152—File search processing using file content signatures, e.g. hash values
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus 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
Description
しかし、インターネット上でのデータ管理には、データ管理の委託先であるクラウドなどのサーバがコンピュータウィルス等のマルウェアに感染することやサーバの管理者が不正を働くことによって、預けたデータが外部に漏洩する危険性がある。もしサーバに預けたデータが個人情報や企業機密データであった場合、この漏洩は非常に問題である。
このような問題を回避するために、検索を行うときにサーバ上に保管された暗号化データを一旦復号してから検索を行うという手法が今までに考えられてきたが、データがサーバ内で一定期間平文に戻ってしまうため、対策として十分とはいえない。
そこで、データを暗号化したまま検索可能な暗号技術である「秘匿検索技術」が考案され、秘匿検索技術の具体的な手法が近年多く開示されている。
特許文献1では、データを数文字単位に分割し、それぞれを暗号化することによって、暗号化したまま部分一致検索を達成している技術が開示されている。例えば、データを1文字や2文字などの単位でデータを区切って暗号化している。
しかしながら、データを少ない文字数で分割すると、全く同じような分割データが多く現れる可能性がある。本技術では、同じデータからいつも同じ暗号文が生成される確定的暗号化方式を利用するため、同じ分割データを暗号化しても全く同じ暗号文が生成されることから、頻度分析攻撃を受けやすいといった課題がある。
ここで、頻度分析攻撃とは、同じ値を持つ暗号文の頻度と、頻度に関する公な情報(例えば、日本人の名字の分布など)とを照合することで、暗号化に用いる鍵を使わなくても、暗号文から元のデータを推測する攻撃手法である。
なお、このような攻撃を受けないように、同じデータでも毎回違う文字に変換する確率的暗号化方式を用いることが考えられるが、本技術でそのような暗号化方式を用いると検索ができなるといった課題がある。
他の対策として、分割する文字数を大きくして対策することも考えられるが、その場合は部分一致検索が困難となってしまうといった課題がある。
文字列データDを、前記文字列データDの始まりから終わりに向かうN個の要素データw1,w2,...,wNに分割するデータ分割部と、
前記N個の要素データw1,w2,...,wNから、
集合A={A1,A2,...,AN},
集合Aの要素Ai={(wi),(wiwi+1),...,(wiwi+1...wN)},i=1,...,N,
を生成する部分文字列生成部と、
前記要素Aiの成分である(wi),(wiwi+1),...,(wiwi+1...wN)のそれぞれに位置情報iを対応させることにより、
集合B={B1,B2,...,BN}、
集合Bの要素Bi={(i,wi),(i,wiwi+1),...,(i,wiwi+1...wN)}
を生成する位置情報割当部と、
前記要素Biに含まれる成分である(i,wi),(i,wiwi+1),...,(i,wiwi+1...wN)のそれぞれを暗号化する暗号化部と
を備えたことを特徴とする。
本実施の形態では、高安全かつ効率的な秘匿部分一致検索技術を開示する。
以下、本実施の形態の概要について説明する。
図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、登録装置300、検索装置400のいずれかが同時に含まれていてもよい。
なお、保管暗号化データ及び検索暗号化データは、いずれも暗号化されている。鍵を持たない登録装置300と検索装置400以外は、保管暗号化データや検索暗号化データから有益な情報を得ることは困難である。
図1に示したように、秘匿検索システム100は、鍵生成装置200と、登録装置300と、検索装置400と、管理装置500とを備える。
以下では、鍵生成装置200の構成、登録装置300の構成、検索装置400の構成、管理装置500の構成について順番に説明する。
パラメーター生成部202は、データの暗号化や、データの照合時に必要なパラメーターを生成する。例えば、パラメーターとして、登録データをいくつかの文字列に分割するときの最大長Lがそれにあたる。なお、Lは0より大きい整数である。また、Lは秘密情報ではないため、公に公開されていても構わない。
送信部203は、鍵生成部201で生成された鍵Kを、登録装置300と、検索装置400とへ送信し、また、パラメーター生成部で生成されたパラメーターLを、登録装置300と、管理装置500とへ送信する。
また、入力部304は、データ登録者から削除したい保管暗号化データについての削除データ名を受け取る。削除データ名は、例えば、登録時に入力したデータ名や、登録した時刻、データ登録者の名前など、保管データを特定できるものなら何でもよい。
ただし、各wi(1≦i≦L)は、データを1文字や複数文字ずつ順に分割したものでもいいし、単語単位で分割してもよい。また、データDを(w1,...,wk)とk≦Lとなるようにデータ分割してもよい。もし、データをどのように分割しても分割数がL未満となってしまう場合は、L未満のままでもよいし、「*」やnullなどの特殊文字を使って足りない文字数を補って、長さをLとなるように調整しもよい。以降では、分割数がLとした時を説明するが、L未満でもほぼ同様な手順を実施すればよい。
分割データ(w1,・・・,wL)から、次のような集合Aを生成する。
A={{(w1),(w1w2),・・・,(w1・・・wL)},{(w2),(w2w3),・・・,(w2・・・wL)},・・・,{(wL)}}。
以降では、集合Aを部分文字列集合と呼ぶことにする。
B={(1,w1),(1,w1w2),・・・,(1,w1・・・wL)},{(2,w2),(2,w2w3),・・・,(2,w2・・・wL)},・・・,{(L,wL)}}。
ここで、以降では集合Bを位置情報付き部分文字列集合と呼ぶことにする。
C=E(E(K,w),p,ID(D))
を生成する。
なお、Eは暗号化関数とする。例えば、AESのような共通鍵暗号方式やHMACのようなメッセージ認証符号、SHA−256のようなハッシュ関数がその一例である。
ここで、すべての(i,w)を暗号化した暗号文の集合をC(D)と書くことにする。
以降では、ペア(ID(D),C(D))を、
保管暗号化データ集合と呼ぶことにする。
t=E(K,s)。
以降では、このtを検索暗号化データと呼ぶ。
出力部406は、受信部401から受け取った検索結果に基づき、検索結果をデータ検索者に対して出力する。もし、検索結果が暗号化されていた場合は、鍵保管部402に保管されている鍵Kなどを用いて検索結果を復号して出力する。
パラメーター保管部502は、受信部501から受け取ったパラメーターLを保管する。
データ保管部503は、受信部501から受け取った保管暗号化データ集合の(ID(D),C(D))を保管する。必要があれば、送信されてきた日時なども同時に保管してもよい。
また、データ保管部503は、受信部501から受け取った削除データ名に基づき、保管している保管暗号化データ集合を削除する。
照合部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から対象となる保管暗号化データ集合のみを読み出して、同様な処理を行う。
なお以下では、ステップS601等のステップ番号は、S601等と記す。図7〜図9、実施の形態の図15〜図17、及び実施の形態3の図22〜図24のステップ番号も同様である。
S602において、パラメーター生成部202は、パラメーターLを生成する。なお、前述の通り、Lは保管データを分割したときに現れる文字列の最大数である。
S603において、送信部203は、S601で生成した鍵KとS602で生成したパラメーターLを、登録装置300へ送信する。
S604において、送信部203は、S601で生成した鍵Kを、検索装置400へ送信する。
S605において、送信部203は、S602で生成したパラメーターLを、管理装置500へ送信する。
S607において、鍵保管部302は、S606で受信した鍵Kを記憶媒体に保管する。
S608において、パラメーター保管部303は、S606で受信したパラメーターLを記憶媒体に保管する。
S610において、鍵保管部402は、S609で受信した鍵Kを記憶媒体に保管する。
S612において、パラメーター保管部502は、S611で受信したパラメーターLを記憶媒体に保管する。S612により、秘匿検索システム100の鍵生成・保管処理は終了する。なお、鍵Kは秘密情報であるため、鍵保管部302と、鍵保管部402とは、鍵Kが外部に漏れないように厳重に保管する必要がある。
なお、前述の通り、各wi(1≦i≦L)は、データを1文字や複数文字ずつ順に分割したものでもいいし、単語単位で分割してもよい。また、データDを(w1,...,wk)とk≦Lとなるようにデータ分割してもよい。
もし、データをどのように分割しても分割数がL未満となってしまう場合は、L未満のままでもよいし、「*」やnullなどの特殊文字を使って足りない文字数を補ってもよい。
ここでwiを要素データと呼ぶとすれば、データ分割部305は、文字列データである保管データDを、保管データDの始まりから終わりに向かうN個の要素データw1,...,wNに分割する。NはL以下である。
以下のS703以降では、保管データDがL個に分割された場合を説明する。保管データDがN個に分割された場合は、以下の説明においてLをNに読み替えればよい。
A={A1,A2,...,AL}、
集合Aの要素A1等をAi(i=1,...,L)と記す。
集合Aの要素は、以下のようである。
集合Aの要素は、
A1={(w1),(w1w2),・・・,(w1・・・wL)}、
A2={(w2),(w2w3),・・・,(w2・・・wL)}、
...
AL={(wL)}、
である。
各要素は、
Ai={(wi),(wiwi+1),・・・,(wi・・・wL)}、(i=1,...,L)
である。
以下では要素Aiの要素を、成分と呼ぶ場合がある。つまりAiは、(L−i+1)個の成分である(wi),(wiwi+1),・・・,(wi・・・wL)を持つ。
集合B={B1,B2,...,BL}、
集合Bの要素Bi={(i,wi),(i,wiwi+1),...,(i,wiwi+1...wL)}、
である。
要素Biは要素Aiの各成分に位置情報iを付加して生成される。ここで位置情報iにおける{i}は、要素Aiにおける添え字{i}である。
要素Biを具体的に記載すれば、
B1={(1,w1),(1,w1w2),・・・,(1,w1・・・wL)}、
B2={(2,w2),(2,w2w3),・・・,(2,w2・・・wL)}、
....
BL={(L,wL)},
である。
集合Bの各要素は、
Bi={(i,wi),(i,wiwi+1),・・・,(i,wi・・・wL)}、(i=1,...,L)である。
Biの要素である(i,wi),(i,wiwi+1),・・・,(i,wi・・・wL)、
を以下では成分と呼ぶ場合がある。
このように、位置情報割当部307は、集合Aの要素Aiの成分である(wi),(wiwi+1),...,(wiwi+1...wL)のそれぞれに位置情報iを対応させることにより、
要素Bi(i=1,...,L)を持つ、位置情報付き部分文字列集合Bを生成する。
位置情報と部分文字列の各ペア(p,w)に対して、
C=E(E(K,w),p,ID(D)) (式1)
を生成する。
ペア(p,w)とは、Biで説明すれば、(i,wi),(i,wiwi+1),・・・,(i,wi・・・wL)の、(L−i+1)個の各成分である。(i,wi)の場合であれば、
p=i,w=wi
である。
すべての(p,w)を暗号化した暗号文の集合をC(D)とし、保管暗号化データ集合(ID(D),C(D))を生成する。
つまりC(D)は、
B1={(1,w1),(1,w1w2),・・・,(1,w1・・・wL)}、
B2={(2,w2),(2,w2w3),・・・,(2,w2・・・wL)}、
...,
BL={(L,wL)},
の、すべての成分を暗号化した情報である。このように暗号化部308は、要素Biに含まれる(i,wi),(i,wiwi+1),...,(i,wiwi+1...wL)のそれぞれを暗号化される。
なお、上記式1に示すように、暗号化部308は、要素Biに含まれる各成分を暗号化する場合に、要素Biに含まれる各成分を、文字列データである保管データDを識別する識別子のデータ名ID(D)と共に暗号化する。
また、前述の通り、Eは暗号化関数であり、例えば、AESのような共通鍵暗号方式やHMACのようなメッセージ認証符号、SHA−256のようなハッシュ関数がその一例である。
S802において、暗号化部404は、鍵保管部402から鍵Kを読み出し、S801で受け取った検索データsに対して鍵Kを用いて、次のようにして検索暗号化データtを生成する。ここで、
t=E(K,s)
である。
S803において、送信部405は、S802で生成した検索暗号化データtを管理装置500へ送信する。もし、S801で保管データ名も入力されていれば、保管データ名も同時に送付する。
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へ送信する。
S810において、出力部406は、S809で受信した検索結果Rに対して、次のようにしてデータ検索者に対して出力する。検索結果Rに含まれている各(ID(D),p)に対して、「ID(D)のp番目の位置に検索データが現れる」と出力する。もしRが空集合だった場合は、「どのデータにも検索データは含まれなかった」と出力する。S810により、秘匿検索システム100の検索処理は終了する。
S902において、送信部309は、S901で入力された削除データ名を管理装置500へ送信する。
S904において、データ保管部503は、S903で受信した削除データ名に基づき、保管している保管暗号化データ集合を削除する。
S904により、秘匿検索システム100の削除処理は終了する。
以下に、本実施の形態の動作の具体例を示す。
ここで、本実施の形態の動作を、
パラメーターL=3、
保管データをD1=ABC,
ID(D1)=1,
D2=BC,
ID(D2)=2、
検索データs=BC、
として説明する。
また暗号化関数Eは、ハッシュ関数を用いて説明する。
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に保管される。
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が現れる」といった検索結果を出力する。
本実施の形態は、例えば、以下のような効果を奏する。
(1)本実施の形態では、たとえ同じ保管データをサーバへ保管したとしても、位置情報や毎回異なるデータ名により、毎回必ず異なる保管暗号化データが生成されるため、頻度分析攻撃などが受けにくくなり、高い安全性を達成する秘匿部分一致検索を実現できる。
(2)本実施の形態では、保管データを暗号化して保管しているため、たとえ管理装置500から保管暗号化データが漏洩しても、保管データの中身を知られることはない。
(3)本実施の形態では、検索データのみならず保管データも暗号化したまま処理ができるため、検索暗号化データから検索データの中身を知られることはない。
(4)本実施の形態では、保管暗号化データと検索暗号化データから得られる検索結果にはデータ名と位置情報しか現れないため、サーバなどの鍵をもたないエンティティに対しては保管データや検索データの中身を知られることはない。
(5)本実施の形態では、検索結果には検索がヒットした事実に加えて、どの位置に検索データが現れるかについての位置情報もわかるため、柔軟な部分一致検索機能をもつ。
(6)本実施の形態では、検索暗号化データがただ一つの暗号文から構成されるため検索に用いるデータサイズが非常に小さく、また検索時にデータ検索者とサーバとのやりとりが1回しか発生しないため、効率的に秘匿部分一致検索することが可能である。
(7)本実施の形態では、共通鍵暗号技術からすべて構成できるため、効率的な秘匿部分一致検索を実現できる。
次に、本実施の形態の秘匿検索システムについて説明する。実施の形態1では、過去に用いた検索暗号化データ(t=E(K,s))を、新しく追加した保管暗号化データ集合((ID(D),C(D)))に対して直ちに適用できた。
実施の形態2で開示する技術は、過去に用いた検索暗号化データtを、新しく追加した保管暗号化データ集合に対して適用できない。したがって、より高い安全性を達成できる。このようなことを達成するために、ハッシュ鎖などの多重暗号化を用いる方法を開示する。
「E^M(K,w)」
と記載したときは、(K,M)を初期値として、暗号化関数EをM回計算(言い換えると、M回の多重暗号化を実施)することを表すとする。例えば、このような多重暗号化としてハッシュ鎖がよく知られている。
例えば、
E^M(K,w)
をM回目に保管したデータに対する検索暗号化データtとする。
ここで、M+1回目に保管したデータに対する検索暗号化データtを
tM=E^(M−1)(K,w)とすると、
M+1回目の検索暗号化データtM=E^(M−1)(K,w)
を再度暗号化することで、
M回目に保管したデータに対する検索暗号化データE^M(K,w)を生成できる。
一方で、E^M(K,w)からE^(M−1)(K,w)を計算することはハッシュ関数などの暗号化関数であれば一般的に困難である。
このため、過去に用いた検索暗号化データを新しく追加した保管暗号化データ集合に対して適用できず、より高い安全性を達成できる。
位置情報と部分文字列の各ペア(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がハッシュ関数であれば、多重暗号化のためにそのような鍵は必要としない。
多重暗号化部404aは、
t=E^(M+1−m)(K,s)
を生成する。
以降では、このtを検索暗号化データと呼ぶ。
なお、前述の通り、E^i(i≧1)を計算する場合、EがAESのような暗号化関数であればEを計算する度に鍵が必要となるため、例えば値がすべて0やすべて1など鍵を事前に決めてパラメーターとして保管しておくことや、すでに保管されているパラメーターのLやMなどを鍵として用いてもよい。もし、Eがハッシュ関数であれば、多重暗号化のためにそのような鍵は必要としない。
{(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を検索結果と呼ぶことにする。
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がハッシュ関数であれば、多重暗号化のためにそのような鍵は必要としない。
図15は、本実施の形態における秘匿検索システム100の鍵生成・保管処理を示すフローチャートである。図15のS601〜S612aは、鍵生成装置200aと、登録装置300aと、検索装置400aと、管理装置500aとが実行する処理である。S601〜S605aは鍵生成装置200aに、S606a〜S608aは登録装置300aに、S609a〜S610a2は検索装置400aに、S611a〜S612aは管理装置500aによって実行される処理である。
S603aにおいて、送信部203aは、S601で生成した鍵Kと、S602aで生成したパラメーター(L,M)とを、登録装置300aへ送信する。
S604aにおいて、送信部203aは、S601で生成した鍵Kと、S602aで生成したパラメーター(L,M)とを、検索装置400aへ送信する。
S605aにおいて、送信部203aは、S602で生成したパラメーター(L,M)を、管理装置500aへ送信する。
S608aにおいて、パラメーター保管部303aは、S606aで受信したパラメーター(L,M)を記憶媒体に保管する。
S610a1において、鍵保管部402は、S609aで受信した鍵Kを記憶媒体に保管する。
S610a2において、パラメーター保管部407aは、S609aで受信したパラメーター(L,M)を記憶媒体に保管する。
S612aにおいて、パラメーター保管部502aは、S611aで受信したパラメーター(L,M)を記憶媒体に保管する。S612aにより、秘匿検索システム100の鍵生成・保管処理は終了する。
多重暗号化部308は、位置情報と部分文字列の各ペア(p,w)に対して、
C=E(E^(M+1−m)(K,w),p,ID(D))
と計算する。また、すべての(p,w)を暗号化した暗号文の集合をC(D)とし、保管暗号化データ集合(ID(D),m,C(D))を生成する。
S708a2において、パラメーター保管部502aは、S707で受信した保管暗号化データ集合(ID(D),m,C(D))のmから保管されているmの値を更新する。
S711aにおいて、パラメーター保管部407aは、保管されているパラメーターmをS711aで受信したパラメーターmに置き換えて更新する。
t=E^(M+1−m)(K,s)。
{(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に加える。
ここで、本実施の形態の動作を、
パラメーターL=3、パラメーターM=2、
最初の保管データをD1=ABC,ID(D1)=1、
次の保管データをD2=BC,ID(D2)=2、
検索データを=BC、
として説明する。
また暗号化関数Eは、ハッシュ関数を用いて説明する。
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に更新される。
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が現れる」といった検索結果を出力する。
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に更新される。
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)}が生成される。
なお、一度目に検索した検索データと二度目に検索した検索データは同一であるが(s=BC)、検索暗号化データはそれぞれE^2(K,s),E(K,s)であるため異なった値が生成されている。また、E(K,s)からE^2(K,s)は計算できるため、二度目に検索した検索暗号化データから一度目に検索した検索暗号化データが作れる。一方で、E^2(K,s)からE(K,s)を計算することは一般的に困難であるため、一度目に検索した検索暗号化データから二度目に検索した検索暗号化データを作ることは困難である。
本実施の形態では、実施の形態1と同様な効果を得ることに加えて、ハッシュ鎖などの多重暗号化を用いることにより、過去に用いた検索暗号化データを、新しく追加した保管暗号化データ集合に対して適用できないため、より高い安全性を達成できる。
次に、本実施の形態の秘匿検索システムについて説明する。
一方で、Mを大きくとりすぎると、多重暗号化処理に時間がかかってしまう。
そこで、本実施の形態では、保管データを1つずつ保管することはせずに、複数の保管データをまとめて保管することによって、実施の形態2と同じMを選択しても、同じ鍵Kで暗号化や保管できる保管データの最大数を大きくすることや、かつ検索効率を向上できるような技術を開示する。
ペアの集合{(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=(w1_1,・・・,wL_1),・・・,Dn=(w1_n,・・・,wL_n)
のように分割され、各位置情報付き部分文字列集合Bi(1≦i≦n)は、
{(1,w1_i),(1,w1_iw2_i),・・・,(1,w1_i・・・wL_i)},
{(2,w2_i),(2,w2_iw3_i),・・・,(2,w2_i・・・wL_i)},
・・・,
{(L,wL_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)
を保管索引と呼ぶことにする。
集合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を集約データ集合と呼ぶことにする。
多重暗号化部404bは、
t=E^(M+1−m)(K,s,0)
を生成する。
以降では、このtを検索暗号化データと呼ぶ。
照合部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を検索結果と呼ぶことにする。
S603bにおいて、送信部203bは、S601で生成した鍵Kと、S602bで生成したパラメーター(L,M,N)とを、登録装置300bへ送信する。
S605bにおいて、送信部203bは、S602bで生成したパラメーター(L,M,N)を、管理装置500bへ送信する。
S608bにおいて、パラメーター保管部303bは、S606bで受信したパラメーター(L,M,N)を記憶媒体に保管する。
S612bにおいて、パラメーター保管部502bは、S611bで受信したパラメーター(L,M,N)を記憶媒体に保管する。
S612bにより、秘匿検索システム100の鍵生成・保管処理は終了する。
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へ送信する。
S708b1において、データ保管部503bは、S707bで受信した保管索引(ID(I),m,I)を保管する。
S708b2において、パラメーター保管部502bは、S707bで受信した保管索引(ID(I),m,I)のmから保管されているmの値を更新する。
S712aにより、秘匿検索システム100の登録処理は終了する。
t=E^(M+1−m)(K,s,0)。
{(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には含まれないため、これらの照合処理を省略して検索効率を高めることができる。
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を繰り返して処理すれば、この効率化は実現できる。
ここで、本実施の形態の動作を、
パラメーターL=3、パラメーターM=2、パラメーターN=3、
保管データをD1=ABC,ID(D1)=1、
及び保管データD2=BBC,ID(D2)=2、
索引名=3、検索データs=BC、
として説明する。
また暗号化関数Eは、ハッシュ関数を用いて説明する。
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に更新される。
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つずつ保管することはせずに、複数の保管データをまとめて保管することによって、実施の形態2と同じMを選択しても、同じ鍵Kで暗号化や保管できる保管データの最大数を大きくすることや、かつ検索効率を向上できる。
Claims (9)
- 文字列データDを、前記文字列データDの始まりから終わりに向かうN個の要素データw1,w2,...,wNに分割するデータ分割部と、
前記N個の要素データw1,w2,...,wNから、
集合A={A1,A2,...,AN},
集合Aの要素Ai={(wi),(wiwi+1),...,(wiwi+1...wN)},i=1,...,N,
を生成する部分文字列生成部と、
前記要素Aiの成分である(wi),(wiwi+1),...,(wiwi+1...wN)のそれぞれに位置情報iを対応させることにより、
集合B={B1,B2,...,BN}、
集合Bの要素Bi={(i,wi),(i,wiwi+1),...,(i,wiwi+1...wN)}
を生成する位置情報割当部と、
前記要素Biに含まれる成分である(i,wi),(i,wiwi+1),...,(i,wiwi+1...wN)のそれぞれを暗号化する暗号化部と
を備えた暗号化装置。 - 前記暗号化部は、
前記要素Biに含まれる各成分を暗号化する場合に、前記要素Biに含まれる各成分を、前記文字列データDを識別する識別子と共に暗号化する請求項1に記載の暗号化装置。 - 前記暗号化部は、
前記要素Biに含まれる各成分を暗号化する場合に、前記要素Biの成分に含まれる前記要素Aiの成分を暗号化し、暗号化された前記要素Aiの成分を、暗号化された前記要素Aiの成分と対をなす位置情報と共に暗号化する請求項1または請求項2に記載の暗号化装置。 - 前記暗号化部は、
前記要素Biの成分に含まれる前記要素Aiの成分を暗号化する場合に、暗号化を複数回繰り返す多重暗号化を行う請求項3に記載の暗号化装置。 - 前記暗号化装置は、さらに、
前記文字列データDの分割数を指定するパラメーターを保管するパラメーター保管部を備え、
前記データ分割部は、
前記文字列データDを,前記パラメーターが指定する分割数以下のN個に分割する請求項1から請求項4のいずれか一項に記載の暗号化装置。 - データ分割部が、
文字列データDを、前記文字列データDの始まりから終わりに向かうN個の要素データw1,w2,...,wNに分割し、
部分文字列生成部が、
前記N個の要素データw1,w2,...,wNから、
集合A={A1,A2,...,AN},
集合Aの要素Ai={(wi),(wiwi+1),...,(wiwi+1...wN)},i=1,...,N,
を生成し、
位置情報割当部が、
前記要素Aiの成分である(wi),(wiwi+1),...,(wiwi+1...wN)のそれぞれに位置情報iを対応させることにより、
集合B={B1,B2,...,BN}、
集合Bの要素Bi={(i,wi),(i,wiwi+1),...,(i,wiwi+1...wN)}
を生成し、
暗号化部が、
前記要素Biに含まれる成分である(i,wi),(i,wiwi+1),...,(i,wiwi+1...wN)のそれぞれを暗号化する
暗号化方法。 - コンピュータに、
文字列データDを、前記文字列データDの始まりから終わりに向かうN個の要素データw1,w2,...,wNに分割する処理、
前記N個の要素データw1,w2,...,wNから、
集合A={A1,A2,...,AN},
集合Aの要素Ai={(wi),(wiwi+1),...,(wiwi+1...wN)},i=1,...,N,
を生成する処理、
前記要素Aiの成分である(wi),(wiwi+1),...,(wiwi+1...wN)のそれぞれに位置情報iを対応させることにより、
集合B={B1,B2,...,BN}、
集合Bの要素Bi={(i,wi),(i,wiwi+1),...,(i,wiwi+1...wN)}
を生成する処理、
前記要素Biに含まれる成分である(i,wi),(i,wiwi+1),...,(i,wiwi+1...wN)のそれぞれを暗号化する処理、
を実行させるための暗号化プログラム。 - 文字列データDを、前記文字列データDの始まりから終わりに向かうN個の要素データw1,w2,...,wNに分割するデータ分割部と、
前記N個の要素データw1,w2,...,wNの各要素データを暗号化し、暗号化された各要素データを、前記文字列データDを識別する識別子と共に暗号化する暗号化部と
を備えた暗号化装置。 - 前記暗号化装置は、さらに、
前記N個の要素データw1,w2,...,wNから、
集合A={A1,A2,...,AN},
集合Aの要素Ai={(wi),(wiwi+1),...,(wiwi+1...wN)},i=1,...,N,
を生成する部分文字列生成部を備え、
前記暗号化部は、
集合Aの要素Aiの成分である(wi),(wiwi+1),...,(wiwi+1...wN)の各成分を暗号化し、暗号化された各成分を前記識別子と共に暗号化する請求項8に記載の暗号化装置。
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)
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)
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 |
-
2016
- 2016-01-15 EP EP16884955.2A patent/EP3392865B1/en active Active
- 2016-01-15 WO PCT/JP2016/051158 patent/WO2017122352A1/ja active Application Filing
- 2016-01-15 JP JP2016554744A patent/JP6038427B1/ja active Active
- 2016-01-15 CN CN201680076736.4A patent/CN108475480B/zh active Active
- 2016-01-15 US US16/061,264 patent/US11005645B2/en active Active
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 |