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

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

Info

Publication number
JP6289768B2
JP6289768B2 JP2017546744A JP2017546744A JP6289768B2 JP 6289768 B2 JP6289768 B2 JP 6289768B2 JP 2017546744 A JP2017546744 A JP 2017546744A JP 2017546744 A JP2017546744 A JP 2017546744A JP 6289768 B2 JP6289768 B2 JP 6289768B2
Authority
JP
Japan
Prior art keywords
data
search
unit
encryption
element data
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.)
Active
Application number
JP2017546744A
Other languages
English (en)
Other versions
JPWO2017126000A1 (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
Publication of JPWO2017126000A1 publication Critical patent/JPWO2017126000A1/ja
Application granted granted Critical
Publication of JP6289768B2 publication Critical patent/JP6289768B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes
    • 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
    • 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
    • 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/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • H04L9/0662Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Description

本発明は、秘匿検索システムで使用される、暗号化装置、検索装置、暗号化プログラム、検索プログラム、暗号化方法及び検索方法に関する。
秘匿検索とは、検索対象データと検索内容を暗号化したまま検索できる技術である。
近年、クラウドサービス等の普及によりインターネット上でデータ管理が可能となった。しかし、インターネット上でのデータ管理には、データ管理の委託先であるクラウドなどのサーバがコンピュータウィルス等のマルウェアに感染することやサーバの管理者が不正を働くことによって、預けたデータが外部に漏洩する危険性がある。もしサーバに預けたデータが個人情報や企業機密データであった場合、この漏洩は非常に問題である。
このようなセキュリティの脅威を回避する方法として暗号化技術があるが、単純にデータを暗号化してサーバに保管すると、データの検索ができない問題が発生する。この問題を回避するために、検索を行うときにサーバ上に保管された暗号化データを一旦復号してから検索を行う手法が今までに考えられた。しかし、データがサーバ内で一定期間平文に戻ってしまうため、対策として十分とはいえない。
そこで、データを暗号化したまま検索可能な暗号技術である「秘匿検索技術」が考案された。秘匿検索技術の具体的な手法は近年多く開示されている。
秘匿検索技術では、単純な検索である「完全一致検索」ができる方式(例えば、非特許文献1参照)が主に検討されていた。近年はより柔軟な検索、例えば「部分一致検索」ができる方式(例えば、特許文献1、非特許文献2参照)や「類似検索」ができる方式(例えば、非特許文献3、非特許文献2参照)なども検討されている。これ以降、部分一致検索の可能な方式を「秘匿部分一致の検索技術」、類似検索可能な秘匿検索技術を「秘匿類似の検索技術」と呼ぶこととする。
なお、秘匿検索技術は大まかに分けて、公開鍵暗号をベースとした方式や、共通鍵暗号をベースとした方式の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では、部分一致検索も含む秘匿類似検索技術が開示されている。これらの技術は、部分一致検索よりも柔軟な検索ができるが、保管暗号化タグのサイズ及び検索暗号化タグのサイズがともに大きいといった課題がある。
よって、本発明は、保管暗号化タグ、検索暗号化タグに対して、頻度分析などの攻撃に耐性を持つような高い安全性を確保し、データサイズが小さく、かつ通信量が小さい秘匿部分一致検索技術の提供を目的とする。
この発明の暗号化装置は、検索されるデータを複数の要素データに分割するデータ分割部と、複数の要素データの各要素データを、秘匿検索の可能な暗号モードによって、乱数を用いて暗号化する暗号化部とを備えたことを特徴とする。
本発明によれば、検索されるデータを分割し、乱数を用いて秘匿検索の可能な暗号モードで暗号化する。乱数を用いることによって、頻度分析攻撃に対して、検索されるデータである暗号文どうしの比較ができなくなる。このため、安全性を高めることができる。また、データを分割するので暗号化したまま部分一致検索を達成できる。
実施の形態1の図で、秘匿検索システムのブロック図。 実施の形態1の図で、鍵生成装置のブロック図。 実施の形態1の図で、登録装置のブロック図。 実施の形態1の図で、検索装置のブロック図。 実施の形態1の図で、管理装置のブロック図。 実施の形態1の図で、秘匿検索システムの鍵生成、保管処理を示すフローチャート。 実施の形態1の図で、秘匿検索システムのデータ登録処理を示すフローチャート。 実施の形態1の図で、秘匿検索システムのデータ検索処理を示すフローチャート。 実施の形態1の図で、登録装置による暗号化処理を説明する図。 実施の形態1の図で、検索装置による暗号化処理を説明する図。 実施の形態1の図で、鍵生成装置、登録装置等のハードウェア資源を示す図。 実施の形態1の図で、鍵生成装置、登録装置等のハードウェア資源を示す別の図。 実施の形態2の図で、登録装置による暗号化処理を説明する図。 実施の形態2の図で、検索装置による暗号化処理を説明する図。
以下、本発明の実施の形態について、図を用いて説明する。なお、各図中、同一又は相当する部分には、同一符号を付している。実施の形態の説明において、同一又は相当する部分については、その説明を適宜省略又は簡略化する。
実施の形態1.
本実施の形態では、高安全かつ効率的な秘匿部分一致検索技術を開示する。
以下、本実施の形態の概要について説明する。
図1は、本実施の形態に係る検索システム100の構成を示すブロック図である。図1に示すように、秘匿検索システム100は、鍵生成装置200と、複数の登録装置300と、複数の検索装置400と、管理装置500とを備える。登録装置300は、暗号化装置である。秘匿検索システム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に登録する登録端末として動作するコンピュータである。ここで保管暗号化データとは、
後述するC(D(j))={C ,C ,...,C
におけるC ,C 等である。
登録装置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以外は、保管暗号化データや検索暗号化データから有益な情報を得ることは困難である。
<***構成の説明***>
図2〜図5を参照して、鍵生成装置200、登録装置300、検索装置400、管理装置500の構成について順番に説明する。図2〜図5は、コンピュータである、鍵生成装置200、登録装置300、検索装置400、管理装置500の構成を示すブロック図である。
また図11は、鍵生成装置200〜管理装置500のハードウェア構成を示す図である。図12は、鍵生成装置200〜管理装置500のハードウェア構成を示す別の図である。
本実施の形態において、鍵生成装置200、登録装置300、検索装置400、管理装置500は、コンピュータである。鍵生成装置200等は、プロセッサ91、記憶装置92、入力インタフェース93、出力インタフェース94といったハードウェアを備える。以下、入力インタフェース93、出力インタフェース94は、入力I/F93、出力I/F94と記す。図2〜図5では、各機能部とハードウェアとの関係を示している。図2〜図5において、プロセッサ91として示す「〜部」は、ソフトウェアで実現される。つまり、プロセッサ91として示す「〜部」は、プロセッサ91がソフトウェアを実行することで実現される。
また、図3〜図5における「〜保管部」は、記憶装置92で実現される。
プロセッサ91は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。プロセッサ91は、プロセッシングを行うIC(Integrated・Circuit)である。プロセッサ91は、具体的には、CPU(Central・Processing・Unit)である。
記憶装置92は、補助記憶装置92a及びメモリ92bを含む。補助記憶装置92aは、具体的には、ROM(Read・Only・Memory)、フラッシュメモリ、又は、HDD(Hard・Disk・Drive)である。メモリ92bは、具体的には、RAM(Random・Access・Memory)である。
入力I/F93は、信号が入力されるポートである。また、入力I/F93は、マウス、キーボード、タッチパネルといった入力装置と接続されるポートであってもよい。入力I/F93は、具体的には、USB(Universal・Serial・Bus)端子である。なお、入力I/F93は、LAN(Local・Area・Network)と接続されるポートであってもよい。
出力I/F94は、信号を出力するポートである。出力I/F94は、USB端子でもよい。
補助記憶装置92aには、プロセッサ91として示す「〜部」の機能を実現するプログラムが記憶されている。このプログラムは、メモリ92bにロードされ、プロセッサ91に読み込まれ、プロセッサ91によって実行される。補助記憶装置92aには、OS(Operating・System)も記憶されている。OSの少なくとも一部がメモリ92bにロードされ、プロセッサ91はOSを実行しながら、プロセッサ91として示す「部」の機能を実現するプログラムを実行する。
鍵生成装置200、登録装置300、検索装置400、管理装置500は、1つのプロセッサ91のみを備えていてもよいし、複数のプロセッサ91を備えていてもよい。複数のプロセッサ91が「部」の機能を実現するプログラムを連携して実行してもよい。
プロセッサ91として示す「部」の機能による処理の結果を示す情報、データ、信号値、及び、変数値は、補助記憶装置92a、メモリ92b、又は、プロセッサ91内のレジスタ又はキャッシュメモリに記憶される。
プロセッサ91として示す「部」の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、DVD(Digital・Versatile・Disc)といった可搬記録媒体に記憶されてもよい。
図12を説明する。本実施の形態ではプロセッサ91として示す「部」の機能がソフトウェアで実現されるが、変形例として、プロセッサ91として示す「部」の機能がハードウェアで実現されてもよい。つまり、処理回路99によって、前述したプロセッサ91として示す「部」の機能及び「〜保管部」の機能を実現する。処理回路99が信号線99aに接続している。処理回路99は、プロセッサ91として示す「部」の機能及び「〜保管部」の機能を実現する専用の電子回路である。処理回路99は、具体的には、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA(Gate・Array)、ASIC(Application・Specific・Integrated・Circuit)、又は、FPGA(Field−Programmable・Gate・Array)である。
プロセッサ91として示す「部」の機能は、1つの処理回路99で実現されてもよいし、複数の処理回路99により分散して実現されてもよい。
別の変形例として、図2〜図5に示す装置がソフトウェアとハードウェアとの組合せで実現されてもよい。即ち、図2〜図5に示す装置の一部の機能が専用のハードウェアで実現され、残りの機能がソフトウェアで実現されてもよい。
プロセッサ91、記憶装置92、及び、処理回路99を、総称して「プロセッシングサーキットリ」という。つまり、図2〜図5における、プロセッサ91として示す「部」の機能及び「〜保管部」は、プロセッシングサーキットリにより実現される。
プロセッサ91として示す「部」を「工程」又は「手順」又は「処理」に読み替えてもよい。また、プロセッサ91として示す「部」の機能をファームウェアで実現してもよい。
図2は、鍵生成装置200の構成を示すブロック図である。
図2に示すように、鍵生成装置200は、入力部201、鍵生成部202、送信部203を備える。図示していないが、鍵生成装置200は、鍵生成装置200の各部で使用されるデータを記憶する記録媒体を備える。
入力部201は、本システムで用いる鍵のビット長や、検索時に用いる最大文字数Lなどを入力する。鍵生成部202は、データを暗号化、復号するための鍵Kと、検索時に用いる鍵K’とを、入力された鍵のビット長Lbitを用いて生成する。鍵Kや鍵K’は登録装置300と検索装置400、及び管理装置500とに保管される秘密情報であるため、厳重に生成される。なお、ここでは共通鍵暗号技術を用いて説明しているが、公開鍵暗号技術を用いてもよい。以下では鍵Kと鍵K’を用いた説明を行うが、必要でない場合は鍵K’はなくてもよい。つまり、以下の説明ではE(K’,*)が登場し、E(K’,*)の意味は、鍵K’で、データ「*」を暗号化することを意味する。E(K’,*)以外の暗号化を採用する場合は鍵K’は不要である。鍵K’が必要でない場合とは、この意味である。
また、以下において、鍵Kあるいは鍵K’を用いる説明がある場合、鍵Kあるいは鍵K’は鍵生成装置200から送信されている。
送信部203は、鍵生成部202で生成された鍵Kを、登録装置300と、検索装置400とへ送信し、鍵K’を検索装置400と、管理装置500へと送信する。送信部203は、入力部201に入力された最大文字数Lを、パラメータ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より大きい整数の値を順に割り当ててもよい。
また、入力部304は、データ登録者から削除したい保管暗号化データ集合についての削除データ名を受け取る。削除データ名は、例えば、登録時に入力したデータ名や、登録した時刻、データ登録者の名前など、保管データを特定できるものなら何でもよい。
データ分割部305は、パラメータ保管部303からパラメータLを読み出し、入力部304から受け取った保管データDを(w,・・・,w)と分割する。この場合、分割数はLより小さい値でもよい。各w(1≦i≦L)は、データを1文字や複数文字ずつ順に分割したものでもいいし、単語単位で分割してもよい。
パラメータ保管部303はセキュリティパラメータλを保管している。乱数生成部306は、乱数Rを一つ生成する。Rの大きさは、特に規定されないがパラメータ保管部303に保管されたセキュリティパラメータλの大きさに応じて大きく取ることが望ましい。
暗号化部307は、鍵保管部302から鍵Kを読み出し、乱数生成部306で生成された乱数Rを用いて暗号文Cを以下のように生成する。
文字w,...wに対して、データ分割部305から受け取った分割データ(w,・・・,w)から、次のような集合Aを生成する。
A={A,A,・・・,A}。
以降では、集合Aを部分文字列集合と呼ぶ場合がある。
詳細は登録装置の動作の説明で述べるが、暗号化部307は、集合Aを用いて、保管暗号化データ集合(ID(D),C(D))を生成する。
送信部308は、暗号化部307から受け取った保管暗号化データ集合(ID(D),C(D))を、管理装置500へ送信する。乱数送信部309は、乱数生成部306から受け取った乱数Rを検索装置400へ送信する。この乱数Rは、検索装置400で管理される、後述の乱数R(j)である。乱数R(j)はRと記す場合もある。
図4は、検索装置400の構成を示すブロック図である。図4に示すように、検索装置400は、乱数入力部401と、乱数保管部402と、受信部403と、鍵保管部404と、入力部405と、暗号化部406と、送信部407と、出力部408と、乱数生成部409とを備える。図示していないが、検索装置400は、検索装置400の各部で使用されるデータを記憶する記録媒体を備える。
(1)乱数入力部401は、登録装置300から送信されてきた乱数Rを受信する。
(2)乱数保管部402は、乱数入力部401に入力された乱数Rを、記憶した順番を示す識別子jと共に記憶する。すなわち、乱数保管部402には、それまでに乱数入力部401に入力された乱数Rが、(j、R)という対で複数記憶されている。乱数保管部402は、(j、R)をリストとして持っている。
(3)受信部403は、鍵生成装置200から送信されてきた鍵K、及び鍵K’、または管理装置500から送信されてきた検索結果を受信する。
(4)鍵保管部404は、受信部403から受け取った鍵Kを保管する。
(5)入力部405は、データ検索者から入力された検索データSを受け取る。入力部405は、データ検索者から、検索データSと同時に、その検索データSと、検索したい保管暗号化データ集合(ID(D),C(D))を指定するような保管データ名も複数受けとってもよい。
(6)暗号化部406は、鍵保管部404から鍵Kと、鍵K’とを読み出し、入力部405から受け取った検索データSに対して鍵Kを用いて、以下のような暗号文tを生成する。
詳細は、検索装置400の動作で述べるが、概要は以下の様である。
(1)まず、暗号化部406は検索データSを分割し
S:(s,...,s
とする。なお、分割は必須ではない。
(2)次に、暗号化部406は、乱数保管部402より(j、R)を読み出し、
u=(u,...,u
を生成する。
すなわち、乱数保管部402は、リストとして、
(1、R)、(2、R),...,(M、R
というM対の値を持っている。Mは登録装置300によって登録された保管暗号化データ集合(ID(D),C(D))の個数と等しい。乱数保管部402により読みだされた(j、R)を用いて、暗号化部406によって、一つ一つの暗号文は、
=E(K,s<+>ui―1
から生成される。<+>は、便宜的に排他的論理和の演算を示す記号である。
について考えているので、u=Rとする。
次に、生成乱数R’を一つ選ぶ。生成乱数R’は乱数生成部409が生成した。
そして、
=E(K’,R’,u1(j),...,uk(j)
とする。なお、Eは暗号化関数とする。
なお、t=E(K’,R’,uk(j)
でもよい。暗号化部406は、乱数保管部402から受け取った全ての(j、R)について同様のことを実行する。(j、R)がM個対存在するならば、tは対に対応してM個生成される。以降では、このM個全てのtを検索暗号化データと呼び、
検索暗号化データT=(t(1),...,t(M)
と記述する。
送信部407は、暗号化部406から受け取った検索暗号化データTと生成乱数R’を管理装置500へ送信する。もし、データ検索者から検索データと同時に保管データ名も入力されていた場合は、検索暗号化データと保管データ名の両方を管理装置500へ送信する。
出力部408は、受信部403から受け取った検索結果に基づき、検索結果をデータ検索者に対して出力する。もし、検索結果が暗号化されていた場合は、鍵保管部404に保管されている鍵Kなどを用いて検索結果を復号して出力する。
図5は、管理装置500の構成を示すブロック図である。図5に示すように、管理装置500は、受信部501と、パラメータ保管部502と、データ保管部503と、照合部504と、送信部505とを備える。図示していないが、管理装置500は、管理装置500の各部で使用されるデータを記憶する記録媒体を備える。
(1)受信部501は、鍵生成装置200から送信されてきたパラメータL、登録装置300から送信されてきた保管暗号化データ集合(ID(D),C(D))、削除データ名、検索装置400から送信されてきた検索暗号化データT、乱数R’、保管データ名を受信する。
(2)パラメータ保管部502は、受信部501から受け取ったパラメータLを保管する。
(3)データ保管部503は、受信部501から受け取った保管暗号化データ集合(ID(D),C(D))を保管する。必要があれば、送信されてきた日時なども同時に保管してもよい。また、データ保管部503は、受信部501から受け取った削除データ名に基づき、保管している保管暗号化データ集合を削除する。
照合部504は、検索結果に関わる空集合Iを生成し、データ保管部503からすべての保管暗号化データ集合(ID(D),C(D))を読み出し、受信部501から受け取った検索暗号化データT=(t(1),...,t(M))に基づき、照合を行う。照合部504は、照合処理を行い、あるいは検索結果を生成する。なお詳細な処理は管理装置500の動作で説明する。
送信部505は、照合部504から受け取った検索結果Rを検索装置400へ送信する。
<***動作の説明***>
以下では、本実施の形態に係る検索方法に相当する、秘匿検索システム100の動作について説明する。
図6は、秘匿検索システム100の鍵生成・保管処理を示すフローチャートである。
図6のS601〜S611は、鍵生成装置200と、登録装置300と、検索装置400と、管理装置500とが実行する処理である。S601〜S604は鍵生成装置200に、S605〜S607は登録装置300に、S608〜S609は検索装置400に、S610〜S611は管理装置500によって実行される。
(鍵生成装置200)
S601において、鍵生成部202は、入力部201に入力された鍵のビット長Lbitを用いて、データの暗号化に使用される鍵K、鍵K’を生成する。
なお入力部201に入力されるパラメータLは、保管データDを分割する最大分割数である。
なお、本実施の形態では共通鍵暗号技術を用いて説明しているが、公開鍵暗号技術を用いてもよい。その場合は、鍵生成部202は、鍵Kについては公開鍵PKと秘密鍵SKのペアを鍵Kとして設定して、鍵K’については公開鍵PK’と秘密鍵SK’のペアを鍵K’として設定して、以降に説明する処理を同じように実施すればよい。
S602において、送信部203は、入力部201に入力されたパラメータL、S601で生成した鍵Kと、を、登録装置300へ送信する。
S603において、送信部203は、S601で生成した鍵Kを、検索装置400へ送信する。
S604において、送信部203は、入力部201に入力されたパラメータLを、管理装置500へ送信する。
(登録装置300)
S605において、受信部301は、S602で送信された鍵KとパラメータLを受信する。
S606において、鍵保管部302は、S605で受信した鍵Kを記憶媒体に保管する。
S607において、パラメータ保管部303は、S605で受信したパラメータLを記憶媒体に保管する。
(検索装置400)
S608において、受信部403は、S603で送信された鍵Kおよび鍵K’を受信する。
S609において、鍵保管部404は、S608で受信した鍵Kおよび鍵K’を記憶媒体に保管する。
(管理装置500)
S610において、受信部501は、S604で送信された鍵K’およびパラメータLを受信する。
S611において、パラメータ保管部502は、S610で受信した鍵K’およびパラメータLを記憶媒体に保管する。
S611により、秘匿検索システム100の鍵生成・保管処理は終了する。
なお、鍵Kおよび鍵K’は秘密情報であるため、登録装置300の鍵保管部302と、検索装置400の鍵保管部404とは、鍵Kおよび鍵K’が外部に漏れないように厳重に保管する必要がある。
図7は、秘匿検索システム100の登録処理を示すフローチャートである。図7のS701〜S707は、登録装置300と管理装置500とが実行する処理である。S701〜S705は登録装置300に、S706〜S707は管理装置500によって実行される処理である。
(登録装置300)
S701において、入力部304は、データ登録者から入力された、保管データDとデータ名ID(D)とを受け取る。なお、データ登録者からデータ名の入力がなければ、入力部304は、入力された保管データDのデータ名ID(D)に乱数を割り当ててもよいし、他の保管データのデータ名と重複しないように、0より大きい整数の値を順に割り当ててもよい。
S702において、データ分割部305は、検索されるデータである保管データDを、複数の要素データwに分割する。
具体的には以下である。
データ分割部305は、パラメータ保管部303からパラメータLを読み出し、S701でデータ登録者から受け取った保管データDを(w,・・・,w)と、パラメータLの示すL個の要素データw,i=1、...、Lに分割する。
なお、分割数をNとした場合、分割数Nは、L以下の個数でもよい。
このように、保管データDは先頭から順に分割可能なデータ構造であり、データ分割部305は、保管データDを先頭から順に、第1番目から第N番目までのN個の要素データwに分割する。
(具体例)
具体例を示す。パラメータL=3の場合、データ分割部305は保管データDを
(w,w,w)と3分割してもよいし、
(w,w)と2分割してもよい。このように、分割数はパラメータL以下であればよい。
(w,w,w)を例にさらに説明すれば、
,w,w等として、データ分割部305は、保管データDを1文字、あるいは複数文字ずつ順に分割してもよいし、単語単位で分割してもよい。
S703において、乱数生成部306は、乱数Rを一つ生成する。
S704において、暗号化部307は、鍵保管部302から鍵Kを読み出し、S703で生成された乱数Rを用いて、以下のように処理1の集合Aの生成、処理2のC の生成により、暗号文Cを生成する。
(処理1:集合Aの生成)
以下では一つの保管データD(j)について考える。保管データD(j)は、j=1の場合とし、D(1)と記す。以下では、jは保管データDを区別する文字とし(j)と記す。また、保管データD(j)に対応して、乱数R(j)が乱数生成部306によって生成される。データ分割部305は保管データD(1)をL個に分割したとする。
つまり、保管データD(1)は、
(w,w,w,...w
と分割される。
暗号化部307は、以下の部分文字列A,i=1,2,...Lを要素とする集合A(1)を生成する。
A={A,A,...,A
=(w,wi+1,...,w
である。
つまり、
=(w,w,...,w),
=(w,w,...,w),
...,
=(w
である。
(処理2:C の生成)
=(w,wi+1,...,w)、i=1,2,..,Lに対して、
暗号化部307は、
=(ci.i,...,ci.L
を生成する。
はAに対応し、L−i+1個の要素を持つ。
以下、Cは成分ci,i等との区別のため、ベクトル表記によりC と表記する。
つまり、
=(ci.i,...,ci.L
である。
=の成分である一つ一つの暗号文cは、
i.j.=E(K,w<+>ci.j−1) (式1)
i.i−1=R(j) (式2)
により生成される。iはAに対応する。式1のjはi〜Lまでをとる。
式1のjは保管データDを区別する(j)とは異なる。
式1、式2は、CBCモード(Cipher Block Chaining Mode)を示す。
(式1)のE(K,w<+>ci.j−1)において記号の意味は下記である。
<+>は、排他的論理和の演算を示すのは上述のとおりである。
よって、w<+>ci.j−1は、wとci.j−1との、排他的論理和の演算を示す。
また、前記のとおり、E(K,*)は、鍵Kを用いて*を暗号化することを意味する。
保管データD(1)に対して、暗号化部307は、全てのAに対して、C を生成する。
以上の処理を全てのAに対して実行する。
すべてのC をまとめた集合をC(D(j))と書くことにする。
はAに対応するので、
C(D(j))={C ,C ,...,C
である。
なお、E(K,w<+>ci.j−1)におけるEは暗号化関数である。Eとして、共通鍵暗号方式、メッセージ認証符号、ハッシュ関数が、その一例である。
上記の処理1、処理2を具体例で説明する。
データ分割部305によって、保管データD(1)は(w,w,w)と分割されたとする。
以下はすべて暗号化部307の処理である。
暗号化部307は、
集合A={A,A,A}を生成する。
この場合、
=(w1,2,)、A=(w2,)、A=(w)、
である。
暗号化部307は、
(i=1,2,3)に対してC を生成する。
、A、Aに、C 、C 、C が対応する。
式1により、以下のc1.1が計算される。
式1は、図9に示すCBCモードである。
図9は、以下のA〜Aの場合を示す。
i=1:(Aに対応)
=(c1.1,c1.2,c1.3
1.1=E(K,w<+>c1.0)=E(K,w<+>R(1)
1.2=E(K,w<+>c1.1)=E(K,w<+>E(K,w<+>R(1)))
1.3=E(K,w<+>c1.2)=E(K,w<+>E(K,w<+>E(K,w<+>R(1))))
i=2:(Aに対応):
=(c2.2,c2.3
2.2=E(K,w<+>c2.1)=E(K,w<+>R(1)
2.3=E(K,w<+>c2.2)=E(K,w<+>E(K,w<+>R(1)))
i=3:(Aに対応):
=(c3.3
=E(K,w<+>c3.2)=E(K,w<+>R(1)
以上により、
集合A={A,A,A
に対して、
,C ,C が生成された。
よって、
C(D(1))={C ,C ,C
である。
ここで、
=(c1.1,c1.2,c1.3)、
=(c2.2,c2.3)、
=(c3.3
である。
また、c1.1等の値は上記のE(K,w<+>R(1))等による。
以上が処理1、処理2の具体例である。
図9に示すように、暗号化部307は、複数の要素データwの各要素データwを、秘匿検索の可能な暗号モードによって、乱数Rを用いて暗号化する。図9では秘匿検索の可能な暗号モードは、CBCモードである。
より具体的には、暗号化部307は、分割されたN個の要素データを用いて、第1番目から第N番目までの要素データを順に並べた第1の集合A
第2番目から第N番目までの要素データを順に並べた第2の集合A
以降、順に、第N−1番目から第N番目までの要素データを順に並べた第N−1の集合AN−1、第N番目の要素データからなる第Nの集合Aまでの、N個の集合Aを生成する。実施の形態1ではN=Lとしており、また具体例ではN=3である。
そして、図9に示すように、暗号化部307は、各集合に含まれるそれぞれの要素データwを、乱数Rを用いてCBCモードによって暗号化する。
図9は、第1の集合Aの場合を示しているが、全部の集合Aに集合Aと同じ処理がされる。暗号化部307は、図9に示すように、第1の集合Aから前記第Nの集合Aの集合ごとに、CBCモードの第1段において乱数Rと、集合の最初の要素データとの排他的論理和を演算し、CBCモードの第2段以降おいて、前段の出力値と、前段で排他的論理和の演算に使用された要素データの次の順番の要素データとの排他的論理和を演算する。
S705において、乱数送信部309は、S704で生成した保管暗号化データ集合(ID(D),C(D(j)))および乱数R(j)を管理装置500へ送信する。
また、乱数送信部309は、乱数R(j)を検索装置400に送信する。
(管理装置500)
S706において、受信部501は、S706で送信された保管暗号化データ集合を受信する。
S707において、データ保管部503は、S707で受信した保管暗号化データ集合を保管する。
S707により、秘匿検索システム100の登録処理は終了する。
図8は、秘匿検索システム100の検索処理を示すフローチャートである。
図8のS801〜S810は、検索装置400と管理装置500とが実行する処理である。
S801〜S804及びS810〜S811は、検索装置400に、S805〜S809は管理装置500によって実行される処理である。
S801において、
入力部405は、データ検索者から入力された検索データSを受け取る。
入力部405は、検索データSを取得する検索データ取得部である。
なお、複数の検索データSを同時に受け取ってもよい。
その場合は、以降の処理を各検索データに対して同じように実施すればよい。
また、前述の通り、入力部405は、データ検索者から、検索データと同時に、その検索データと検索したい保管暗号化データ集合を指定するような保管データ名も複数受けとってもよい。
S802において、暗号化部406は、乱数保管部402から乱数(j、R(j))をうけとる。ただし、1≦j≦Mである。Mは、今までに登録装置300によって登録された保管暗号化データ集合(ID(D),C(D(j)))の個数と等しい。
S802では、乱数R(1)〜R(M)を取得する。
S803において、暗号化部406は検索データSを暗号化する。
S803の処理は暗号化部406による。暗号化部406は、鍵保管部404から鍵Kおよび鍵K’を読み出し、S801で受け取った検索データSに対して、次のようにして、検索暗号化データTを生成する。検索暗号化データTは、通常、複数の成分を有するので、ベクトル表示してTと記す。検索暗号化データTは、それぞれのjに対応する成分であるu(j)を有する。u(j)も複数の成分を有するのでベクトル表記により、u(j) と記す。u(j) はjに対応するが、つまり乱数R(j)に対応する。
(j=1の場合)
まずj=1の場合を考える。暗号化部406は、検索データSを分割し、(S,...,S)を生成する。
なお、分割することは必須ではない。検索データSを分割せずに用いてもよい。
暗号化部406は、分割する場合、検索データSを複数の要素データSi,i=1,...kに分割し、検索データSの暗号化として、乱数R(j)ごとに、この乱数R(j)で各要素データSを暗号化する。図10で具体例を後述する。
以下ではk個に分割する場合を説明する。またkは任意の数でよい。
次に、u(1) =(u,...,u)が生成される。
一つ一つの暗号文は、
i(1)=E(K,S<+>ui―1(1)) (式3)
=R(j) (式4)
のように生成される。式3の意味は式1と同様である。
次に、暗号化部406は、乱数生成部409の生成した生成乱数R’を一つ取得する。なお、乱数生成部409は、検索データ取得部である入力部405によって取得された複数の検索データSの検索データSごとに、生成乱数R’を生成する。暗号化部406は、乱数生成部409によって検索データSごとに生成された生成乱数R’を、対応する検索データSに用いる。
生成乱数R’を用いて、暗号化部406は、
(j=1)=E(K’,R’,u1(1),...,uk(1)) (式5)
を生成する。なお、Eは暗号化関数とする。
なお、t(1)=E(K’,R’,uk(1))でもよい。
つまり、t(j)=E(K’,R’,uk(j))でもよい。
以上がj=1についての処理である。
(j=2〜jの処理)
式5のt(j)の生成を、暗号化部406は乱数保管部402から受け取った全ての(j、R(j))について実行する。
つまり、式5ではt(1)が生成されたが、同様に、t(2)〜t(M)も生成される。
これらを記載すれば、
(2)=E(K’,R’,u1(2),...,uk(2))、
...、
(M)=E(K’,R’,u1(M),...,uk(M))、
である。
式3より、t(2)、t(3)等は、乱数R(2)、R(3)等が異なる。
(j、R(j))がM個対存在するならば、t(j)はM個生成される。
このM個全てのt(j)を、上記のように検索暗号化データTと呼び、
=(t(1),...,t(M))と記述する。
S804において、送信部407は、S803で生成した検索暗号化データTと生成乱数R’を対として、管理装置500へ送信する。もし、S801で保管データ名も入力されていれば、保管データ名も送信する。
具体的には、送信部407は、乱数保管部402に保管された複数の乱数Rと同じ複数の乱数Rの乱数ごとに、その乱数を用いて暗号化された複数の暗号化データC(D(j))を有する管理装置500に、検索暗号化データTを送信する。
(検索処理の具体例)
図10を参照して、具体例によってTの生成を説明する。図10は、検索装置による暗号化処理を説明する図である。
<1.検索データSの分割>
(j=1)
(j,R)は、(1,R),(2,R)の2組とする。
検索データSは、S=(S,S)に分割されたとする。
<2.u(j) の生成>
(1) は分割の数だけ成分を有するので、2成分である。
(1) =(u1(1),u2(1)
式3の、
i(1)=E(K,s<+>ui−1(1))において、
i=1,2である。
図10は、j=1,2のu(1) 、u(2) の生成を示す。
1(1)=E(K,S<+>u0(1))=E(K,S<+>R(1))、
2(1)=E(K,S<+>u1(1))=E(K,S<+>E(K,S<+>R(1)))、
(j=2)
(2) =(u1(2),u2(2)
の各成分は、u(1) に対して、乱数R(1)が乱数R(2)になったのみである。
つまり、下記である。
(j=2の場合)
1(2)=E(K,S<+>u0(2))=E(K,S<+>R(2)
2(2)=E(K,S<+>u1(2))=E(K,S<+>E(K,S<+>R(2))、
以上により、(1,R),(2,R)について、
(1) 、u(2) が生成された。
<3.検索暗号化データの生成>
上記式5のように、
(j)=E(K’,R’,u1(j),...,uk(j)
であるが、
具体例ではj=1,2、
(1)=E(K’,R’,u1(1),u2(1)
(2)=E(K’,R’,u1(2),u2(2)
である。
よって、
=(t(1),...,t(M))は、
具体例では,
=(t(1),(2)
である。
(1)を具体的に書き出すと、
(1)=E(K’,R’,u1(1),u2(1)
=E(K’,R’,E(K,S<+>R(1)),E(K,S<+>E(K,S<+>R(1)))
である。
(2)を具体的に書き出すと、t(1)に対してu成分が、u(2)となるのみである。
(2)=E(K’,R’,u1(2),u2(2)
=E(K’,R’,E(K,S<+>R(2)),E(K,S<+>E(K,S<+>R(2))))
である。
送信部407は、検索暗号化データTと、生成乱数である生成乱数R’とを、管理装置500へ送信する。
以上が検索装置400における具体例である。
図10の具体例で説明したように、暗号化部406は、検索されるデータの検索に使用されるキーワードである検索データSを、秘匿検索の可能な暗号モードによって、乱数保管部402に保管された前記乱数Rごとに乱数Rを用いて暗号化を行いu(1) ,u(2) 等を生成する。そして、暗号化部406は、暗号化された複数の検索データであるu(1) ,u(2) 等を含む、検索暗号化データTを生成する。暗号化部406は、乱数R(j)ごとにその乱数R(j)を用いて暗号化された検索データu(1) ,u(2) 等のそれぞれを、乱数生成部409によって生成された生成乱数R’を用いて暗号化することにより、検索暗号化データTを生成する。
S805において、管理装置500の受信部501は、検索装置400から検索暗号化データTを受信する。
S806において、管理装置500の照合部504は、データ保管部503から保管暗号化データ集合(ID(D),C(D(j)))を読み出す。なお、S805で保管データ名も受信していた場合は、照合部504は、その保管データ名に基づき、対象の保管暗号化データ集合のみを読み出す。S805で受信部501が保管データ名を受信していなかった場合は、保管されているすべての保管暗号化データ集合である(ID(D),C(D(1)))〜(ID(D),C(D(M)))を読み出す。
S807において、照合部504は、検索結果に関わる空集合Iを生成する。
また照合部504は、受信部501から
検索暗号化データT=(t(1),...,t(M))を受け取る。
照合部504は、S807において以下のように、照合データt’を生成する。
以下では、具体例で説明する。
管理装置500は、生成乱数R’、検索暗号化データT、保管暗号化データ集合(ID(D),C(D))、鍵K’、パラメータL、を受信している。生成乱数R’、検索暗号化データTは検索装置400から受信している。保管暗号化データ集合(ID(D),C(D))は、登録装置300から受信している。鍵K’、パラメータLは、鍵生成装置200から受信している。管理装置500は、検索暗号化データTに基づき照合を行い、検索結果を出力する。
管理装置500は、
=(t(1),(2))と生成乱数R’を受信したとする。管理装置500は、(ID(D),C(D(1)))、(ID(D),C(D(2)))の2つの保管暗号化データ集合を読み出すとする。
つまり、j=1,2である。
(ID(D),C(D(1)))は、上記の(ID(D),C(Dj=1))であり、
C(Dj=1)={C ,C ,C }={(c1.1〜c1.3),(c2.2〜c2.3),(c3.3)}
である。
管理装置500は、検索暗号化データT=(t(1),(2))に基づき、次のようにして照合を行う。
C(D(1))={C ,C ,C }のC ,C ,C について、
以下のt’を計算する。
一般的には、
t’=E(K’,R’,C ) (式6)
である。
この例では、
,C ,C ごとに、t’=を生成する。
つまり、
t’=E(K’,R’,C )、
t’=E(K’,R’,C )、
t’=E(K’,R’,C )、
である。
S704の具体例により、
=(c1.1,c1.2,c1.3)、
=(c2.2,c2.3)、
=(c3.3
である。よって、
t’=E(K’,R’,C )=E(K’,R’,c1.1,c1.2,c1.3),
t’=E(K’,R’,C )=E(K’,R’,c2.2,c2.3
t’=E(K’,R’,C )=E(K’,R’,c3.3
である。c1.1,c1.2,等の値は、S803の説明で述べたとおりである。
上記の式6ではt’にC を用いた。つまりt’の生成にC のすべての成分を用いたが、C の最後の成分ci.Lを用いてもよい。この場合は、S803において、t(j)=E(K’,R’,uk(j))を用いることが前提である。
S808において、
照合部504は、検索結果に関わる空集合Iを生成し、S807で生成した各照合データt(1≦i≦L)が検索暗号化データTに含まれているかを確認する。それぞれの照合データt’について、照合データt’が、検索暗号化データTに含まれていれば、空集合であるIに(ID(D),i)を含める。上記ではC(D(1))の保管暗号化データ集合(j=1)について説明したが、照合部504は、これを全ての保管暗号化データ集合(j=2〜M)に対して行う。
また、本処理の結果、初期の空集合Iから最終的に生成される集合Iを、検索結果Iと呼ぶ。
S809において、送信部505は、S808で生成した検索結果Iを、検索装置400へ送信する。
S810において、検索装置400の受信部403は、S809で送信された検索結果Iを受信する。
S811において、出力部408は、S810で受信した検索結果Iを出力する。
S811により、秘匿検索システム100の検索処理は終了する。
<***実施の形態1の効果***>
本実施の形態は、以下のような効果を奏する。
(1)本実施の形態では、たとえ同じ保管データをサーバへ保管したとしても、乱数Rにより毎回必ず異なる保管暗号化データ集合が生成される。このため、頻度分析攻撃への耐性が向上し、高い安全性をもつ秘匿部分一致検索を実現できる。
(2)本実施の形態では、検索暗号化データがただ一つの暗号文から構成されるため、検索に用いるデータサイズが非常に小さく、また検索時にデータ検索者とサーバとのやりとりが1回しか発生しないため、効率的に秘匿部分一致検索することが可能である。
(3)本実施の形態では、検索暗号化データに生成乱数R’を用いているので、頻度分析攻撃が困難となり、頻度分析攻撃の耐性が向上する。
(4)本実施の形態では、保管データを暗号化して保管しているため、たとえ管理装置500から保管暗号化データ集合が漏洩しても、保管データの中身を知られることはない。
(5)本実施の形態では、検索データのみならず保管データも暗号化したまま処理ができるため、検索暗号化データから検索データの中身を知られることはない。
実施の形態2.
次に、実施の形態2を説明する。実施の形態2は実施の形態1と、システム構成及び各装置の構成は同じである。実施の形態1は、図9、図10に示すように、CBCモード)を使用した。実施の形態2は、CTRモード(Counter Mode)を使用する。
実施の形態1の中で、登録装置300において、暗号化部307は以下のような動作でもよい。
(暗号化部307の動作)
暗号化部307は、鍵保管部302から鍵Kを読み出し、乱数生成部306で生成された乱数Rを用いて暗号文を以下のように生成する。
保管データD(1)は、(w,...,w)と分割されたとする。
,...,wは、w,i=1,2,...Lである。
暗号化部307は、
(w,...,w)に対して、
=E(K,R+i―1)<+>w (式7)
の演算を行う。
そして、暗号化部307は保管暗号化データ集合(ID(D),C(D(1)))を生成する。
ここで、C(D(1))=(C,C,..,C)である。
つまり、C(D(1))の成分の数は、保管データの分割数である。
図13は、CTRモードによって、C〜Cが生成される具体例を示す。保管データD(1)は、(w,w,w)と分割されたとする。
暗号化部307は、C(D(1))=(C,C,C)を生成する。
このように、C(D(1))において、
ここで、
=E(K,R+0)<+>w
=E(K,R+1)<+>w
=E(K,R+2)<+>w
である。
〜Cは、w〜wに対応する。
つまり、Cは、wに対応する。
(検索装置400の動作)
登録装置300の暗号化部307を上記のように動作させる場合、検索装置400の暗号化部406は以下のような動作である。
(暗号化部406の動作)
図14は実施の形態2の検索装置400の暗号化部406の動作を説明する図である。
図14を参照して説明する。暗号化部406は、鍵保管部404から鍵Kを読み出し、入力部405から受け取った検索データSに対して鍵Kを用いて、次のように暗号文tを生成する。
まず、検索データSを分割し(S,...,S)とする。
図14では(S,S)と分割する。なお実施の形態1と同様に、分割しなくても構わない。
次に、暗号化部406は乱数保管部402より(j、R)を読み出し、
u=(u,...,u)を生成する。
kは検索データSの分割数である。
一つ一つの暗号文は、
=E(K,R(j)+i―1)<+>S
のように計算される。i=1,...,kである。
次に、暗号化部406は乱数生成部409の生成した生成乱数R’を一つ取得する。
そして、暗号化部406は、
j=1について、t(1)=E(K’,R’,u1(j),...,uk(j)
を計算する。
図14の例では、
(1)=E(K’,R’,u1(1),u2(1)
を計算する。
ここで、
1(1)=E(K,R(1))<+>S
2(1)=E(K,R(1)+1)<+>S
である。
j=2についても同様に、暗号化部406は、
(2)=E(K’,R’,u1(2),u2(2)
を計算する。
ここで、
1(2)=E(K,R(2))<+>S
2(2)=E(K,R(2)+1)<+>S
である。
暗号化部406は、
検索暗号化データT(t(1),t(2))を生成する。
送信部407は、索暗号化データT(t(1),t(2))と、生成乱数R’を、管理装置500に送信する。
登録装置300の暗号化部307の動作、及び検索装置400の暗号化部406の動作を上記のように動作させる場合、管理装置500の照合部504は以下のような動作である。
(照合部504の動作)
照合部504は、検索結果に関わる空集合Iを生成し、データ保管部503からすべての保管暗号化データ集合(ID(D),C(D(j)))を読み出す。
照合部504は、受信された検索暗号化データT=(t(1),...,t(M))に基づき、次のようにして照合を行うことや検索結果を生成する。
この例では、
検索暗号化データT=(t(1),t(2)
である。
以下では、上記で述べた、
C(D(1))=(C,C,C)を例に説明する。
照合部504は、C(D(1))について下記のt’(j)を計算する。
この例ではj=1なのでt’(j)=t’(1)である。
t’(j)=E(K’,R’,C(D(j)))=E(K’,R’,C,...,C) (式8)
を計算する。
ここで、C(D(1))の成分数はC,...,CのL個であるが、Lは保管データD(1)の分割数である。
よって、この例では、
t’(1)=E(K’,R’,C(D(1)))=E(K’,R’,C,C,C
である。
照合部504は、C(D(2))〜C(D(M))についてもC(D(1))と同様の処理を行う。
照合部504は、それぞれのt’(j)(j=1,2,...,M)について、t’(j)が検索暗号化データTに含まれていれば、Iに(ID(D(j)),j)を含める。
本処理の結果、最終的に生成される集合Iを検索結果Iと呼ぶのは実施の形態1と同じである。
実施の形態2は実施の形態1に対して、使用される暗号モードが異なるだけであるので、実施の形態1と同様の効果を得ることができる。
なお、実施の形態2のシステム構成、装置の機能及びハードウェア構成も実施の形態1と同様である。異なるのは暗号モードである。
実施の形態1、実施の形態2で示した鍵生成装置200、登録装置300、検索装置400、管理装置500の動作は、方法、プログラムとして把握できる。暗号化装置である登録装置300は、暗号化プログラムによって動作する。登録装置300の動作は、暗号化方法に相当する。検索装置400は、検索プログラムによって動作する。検索装置400の動作は、検索方法に相当する。
100 秘匿検索システム、101 インターネット、200 鍵生成装置、201 入力部、202 鍵生成部、203 送信部、300 登録装置、301 受信部、302 鍵保管部、303 パラメータ保管部、304 入力部、305 データ分割部、306 乱数生成部、307 暗号化部、308 送信部、309 乱数送信部、400 検索装置、401 乱数入力部、402 乱数保管部、403 受信部、404 鍵保管部、405 入力部、406 暗号化部、407 送信部、408 出力部、409 乱数生成部、500 管理装置、501 受信部、502 パラメータ保管部、503 データ保管部、504 照合部、505 送信部。

Claims (5)

  1. 先頭から順に分割可能なデータ構造を持つ検索されるデータを、先頭から順に、第1番目から第N番目までのN個の要素データに分割するデータ分割部と、
    分割されたN個の要素データを用いて、
    第1番目から第N番目までの要素データを順に並べた第1の集合、
    第2番目から第N番目までの要素データを順に並べた第2の集合、
    以降、順に、第N−1番目から第N番目までの要素データを順に並べた第N−1の集合、第N番目の要素データからなる第Nの集合までの、
    N個の集合を生成し、各集合に含まれるそれぞれの要素データを、乱数を用いて、秘匿検索の可能な暗号モードであるCBCモードと秘匿検索の可能な暗号モードであるCTRモードとのいずれかによって暗号化する暗号化部と
    を備えた暗号化装置。
  2. 前記暗号化部は、
    各集合に含まれるそれぞれの要素データを、乱数を用いて、前記CBCモードによって暗号化するとともに、暗号化に際し、
    前記第1の集合から前記第Nの集合の集合ごとに、
    前記CBCモードの第1段において、前記乱数と、前記集合の最初の要素データとの排他的論理和を演算し、
    前記CBCモードの第2段以降おいて、前段の出力値と、前段で排他的論理和の演算に使用された要素データの次の順番の要素データとの排他的論理和を演算する請求項1に記載の暗号化装置。
  3. 前記暗号化部は、
    各集合に含まれるそれぞれの要素データを、乱数を用いて、前記CTRモードによって暗号化するとともに、暗号化に際し、
    前記第1の集合から前記第Nの集合の集合ごとに、
    前記CTRモードのそれぞれの段において、前記乱数とそれぞれの段におけるカウンタ値との和を暗号化するとともに暗号化された前記和の値と前記集合の要素データとの排他的論理和を演算する請求項1に記載の暗号化装置。
  4. コンピュータに、
    データ分割部が、先頭から順に分割可能なデータ構造を持つ検索されるデータを、先頭から順に、第1番目から第N番目までのN個の要素データに分割する処理、
    暗号化部が、分割されたN個の要素データを用いて、
    第1番目から第N番目までの要素データを順に並べた第1の集合、
    第2番目から第N番目までの要素データを順に並べた第2の集合、
    以降、順に、第N−1番目から第N番目までの要素データを順に並べた第N−1の集合、第N番目の要素データからなる第Nの集合までの、
    N個の集合を生成し、各集合に含まれるそれぞれの要素データを、乱数を用いて、秘匿検索の可能な暗号モードであるCBCモードと秘匿検索の可能な暗号モードであるCTRモードとのいずれかによって暗号化する処理
    を実行させるための暗号化プログラム。
  5. データ分割部、暗号化部を備えた暗号化装置が行う暗号化方法であって、
    データ分割部が、先頭から順に分割可能なデータ構造を持つ検索されるデータを、先頭から順に、第1番目から第N番目までのN個の要素データに分割し、
    暗号化部が、
    分割されたN個の要素データを用いて、
    第1番目から第N番目までの要素データを順に並べた第1の集合、
    第2番目から第N番目までの要素データを順に並べた第2の集合、
    以降、順に、第N−1番目から第N番目までの要素データを順に並べた第N−1の集合、第N番目の要素データからなる第Nの集合までの、
    N個の集合を生成し、各集合に含まれるそれぞれの要素データを、乱数を用いて、秘匿検索の可能な暗号モードであるCBCモードと秘匿検索の可能な暗号モードであるCTRモードとのいずれかによって暗号化する暗号化方法。
JP2017546744A 2016-01-18 2016-01-18 暗号化装置、暗号化プログラム及び暗号化方法 Active JP6289768B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/051244 WO2017126000A1 (ja) 2016-01-18 2016-01-18 暗号化装置、検索装置、暗号化プログラム、検索プログラム、暗号化方法及び検索方法

Publications (2)

Publication Number Publication Date
JPWO2017126000A1 JPWO2017126000A1 (ja) 2018-01-25
JP6289768B2 true JP6289768B2 (ja) 2018-03-07

Family

ID=59362295

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017546744A Active JP6289768B2 (ja) 2016-01-18 2016-01-18 暗号化装置、暗号化プログラム及び暗号化方法

Country Status (5)

Country Link
US (1) US10673627B2 (ja)
EP (1) EP3373504B1 (ja)
JP (1) JP6289768B2 (ja)
CN (1) CN108370312B (ja)
WO (1) WO2017126000A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107612897A (zh) * 2017-09-07 2018-01-19 唐冬香 一种数据传输方法
JP6918253B2 (ja) * 2018-12-28 2021-08-11 三菱電機株式会社 秘匿検索システムおよび秘匿検索方法
KR102030785B1 (ko) * 2019-04-26 2019-10-10 주식회사그린존시큐리티 의사난수를 이용한 IoT 디바이스의 데이터 난독화를 위한 장치 및 이를 위한 방법
CN114327371B (zh) * 2022-03-04 2022-06-21 支付宝(杭州)信息技术有限公司 一种基于秘密分享的多键排序方法和系统

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5442699A (en) * 1994-11-21 1995-08-15 International Business Machines Corporation Searching for patterns in encrypted data
JP2002108910A (ja) * 2000-09-27 2002-04-12 Nec Soft Ltd 暗号化ファイルシステム及び暗号化ファイル検索方法並びにコンピュータ可読記録媒体
JP4011383B2 (ja) 2002-04-04 2007-11-21 Kddi株式会社 データ検索方法、データ検索システム、検索キーワード生成装置、及びコンピュータプログラム
JP2004201038A (ja) * 2002-12-18 2004-07-15 Internatl Business Mach Corp <Ibm> データ記憶装置、これを搭載した情報処理装置及びそのデータ処理方法並びにプログラム
US7512814B2 (en) * 2004-11-09 2009-03-31 Fortiva Inc. Secure and searchable storage system and method
JP4154444B2 (ja) * 2006-10-16 2008-09-24 シャープ株式会社 情報記録装置、情報再生装置、プログラム、及び記録媒体
JP5432736B2 (ja) 2010-01-18 2014-03-05 日本電信電話株式会社 暗号化された情報のためのキーワード検索システム、キーワード検索方法、検索要求装置、検索代行装置、プログラム、記録媒体
JP5411034B2 (ja) 2010-03-19 2014-02-12 株式会社日立ソリューションズ データベース暗号化システム及び方法
JP5412414B2 (ja) * 2010-12-08 2014-02-12 株式会社日立製作所 検索可能暗号処理システム
US8429421B2 (en) 2010-12-17 2013-04-23 Microsoft Corporation Server-side encrypted pattern matching
JP5486519B2 (ja) 2011-01-20 2014-05-07 日本電信電話株式会社 検索システム、判定装置、ベクトル構成装置、その方法及びプログラム
WO2012115031A1 (ja) * 2011-02-22 2012-08-30 三菱電機株式会社 検索システム、検索システムの検索方法、情報処理装置、検索プログラム、対応キーワード管理装置および対応キーワード管理プログラム
JP5667969B2 (ja) 2011-12-22 2015-02-12 株式会社日立製作所 検索処理システムおよび部分一致検索方法
JP5670365B2 (ja) 2012-01-26 2015-02-18 日本電信電話株式会社 暗号文検索システム、検索情報生成装置、検索実行装置、検索要求装置、暗号文検索方法、検索情報生成方法、検索実行方法、検索要求方法、およびプログラム
US20130238646A1 (en) * 2012-03-06 2013-09-12 Evrichart, Inc. Partial-Match Searches of Encrypted Data Sets
JP5255154B1 (ja) 2012-12-26 2013-08-07 株式会社エアー 部分一致検索の可能な暗号システム
JP6144992B2 (ja) 2013-08-08 2017-06-07 株式会社日立製作所 検索可能暗号処理システム及び方法
US9489501B2 (en) * 2013-09-19 2016-11-08 Fujitsu Limited Authentication method, authentication device, and system

Also Published As

Publication number Publication date
EP3373504B1 (en) 2019-09-11
CN108370312B (zh) 2021-01-05
CN108370312A (zh) 2018-08-03
US20190260583A1 (en) 2019-08-22
EP3373504A1 (en) 2018-09-12
JPWO2017126000A1 (ja) 2018-01-25
EP3373504A4 (en) 2018-09-12
WO2017126000A1 (ja) 2017-07-27
US10673627B2 (en) 2020-06-02

Similar Documents

Publication Publication Date Title
JP6234605B2 (ja) サーバ装置及び検索システム及び端末装置及び検索方法及びサーバプログラム及び端末プログラム
WO2012095973A1 (ja) データ処理装置及びデータ保管装置
JP6239213B1 (ja) 秘匿検索システム、秘匿検索方法及び秘匿検索プログラム
JP6038427B1 (ja) 暗号化装置、暗号化方法、暗号化プログラム及び保管装置
JP6910477B2 (ja) 登録装置、検索操作装置、データ管理装置、登録プログラム、検索操作プログラムおよびデータ管理プログラム
JP6289768B2 (ja) 暗号化装置、暗号化プログラム及び暗号化方法
JP6632780B2 (ja) データ処理装置、データ処理方法及びデータ処理プログラム
US11902418B2 (en) Registration device, search operation device, and data management device
JP6672451B2 (ja) 暗号化検索インデックスマージサーバ、暗号化検索インデックスマージシステム、及び暗号化検索インデックスマージ方法
JP7016458B2 (ja) 秘匿検索システム、秘匿検索方法、及び、秘匿検索プログラム
Zhang et al. Privacy-preserving multi-pattern matching
WO2015107561A1 (ja) 検索システム、検索方法および検索プログラム
JP6381861B2 (ja) 登録先決定装置、登録装置、秘匿検索システム、登録先決定方法及び登録先決定プログラム
Chen et al. Memory leakage-resilient dynamic and verifiable multi-keyword ranked search on encrypted smart body sensor network data
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: 20170904

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170904

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20170904

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20170925

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171010

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171127

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180109

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180206

R150 Certificate of patent or registration of utility model

Ref document number: 6289768

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