JP7016458B2 - 秘匿検索システム、秘匿検索方法、及び、秘匿検索プログラム - Google Patents

秘匿検索システム、秘匿検索方法、及び、秘匿検索プログラム Download PDF

Info

Publication number
JP7016458B2
JP7016458B2 JP2021564626A JP2021564626A JP7016458B2 JP 7016458 B2 JP7016458 B2 JP 7016458B2 JP 2021564626 A JP2021564626 A JP 2021564626A JP 2021564626 A JP2021564626 A JP 2021564626A JP 7016458 B2 JP7016458 B2 JP 7016458B2
Authority
JP
Japan
Prior art keywords
index
search
key
keyword
unit
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
JP2021564626A
Other languages
English (en)
Other versions
JPWO2021144834A1 (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 JPWO2021144834A1 publication Critical patent/JPWO2021144834A1/ja
Application granted granted Critical
Publication of JP7016458B2 publication Critical patent/JP7016458B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
    • 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)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Bioethics (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Description

本開示は、秘匿検索システム、秘匿検索方法、及び、秘匿検索プログラムに関する。
秘匿検索とは、暗号化データを暗号化したまま検索する技術である。つまり、秘匿検索は、暗号化データを復号せずに検索する技術である。
近年、秘匿検索は、クラウドサービスにおいて、機密情報を守るためのセキュリティ技術として注目されている。秘匿検索によれば、サーバ管理者又はマルウェア等により機密情報を傍受されることを防ぐことができる。つまり、秘匿検索は、インターネットにおいてデータを安全に管理するためのセキュリティ技術として注目されている。
秘匿検索には、共通鍵方式と公開鍵方式との2種類が存在する。
共通鍵方式では、共通鍵暗号技術が利用され、かつ、登録者及び検索者が限定される。
公開鍵方式では、公開鍵暗号技術が利用され、かつ、検索者は限定されるが登録者は限定されない。
特許文献1は、マルチユーザ型の共通鍵方式を開示している。本方式において、登録者は、検索者毎に異なる登録用の秘密鍵を使用することにより、データを暗号化する。
国際公開第2019/142651号
特許文献1で開示されている共通鍵方式を用いる場合、暗号化データを検索することに要する時間は、データ管理装置に登録されている暗号化タグの件数に依存する。また、この場合、検索を高速化することに活用することができる索引を構成することができない。そのため、登録されている暗号化タグの件数が多い場合、高速に暗号化データを検索することができないという課題がある。
本開示は、マルチユーザ型の共通鍵方式を採用する秘匿検索システムにおいて、検索者がデータ管理装置に登録されているデータを比較的高速に検索することができるようにすることを目的とする。
本開示の秘匿検索システムは、
登録キーワードと、前記登録キーワードを検索する権限を有する権限者が有すべき属性を示す権限者属性情報と、前記登録キーワードに対応する登録キーワード索引を暗号化する索引開示鍵とを記憶している登録データ記憶部と、
前記登録キーワードと、前記権限者属性情報と、前記登録キーワードを検索する検索者が有する属性を示す検索者属性情報が組み込まれたユーザ鍵を生成するユーザ鍵関数と、前記ユーザ鍵が組み込まれた検索クエリであって、前記検索者が前記登録キーワードを検索する検索キーワードに対応する検索クエリを生成する検索クエリ関数と、前記検索クエリが組み込まれた索引クエリであって、前記登録キーワード索引を検索する索引クエリを生成する索引クエリ関数とを用いて前記登録キーワード索引を生成する索引生成部と、
前記索引開示鍵を用いて前記登録キーワード索引を暗号化することにより暗号化索引を生成する暗号化索引生成部と
を備える登録装置を備える。
本開示の秘匿検索システムによれば、暗号化索引生成部が暗号化索引を生成する。暗号化索引は、登録キーワードに対応している。登録キーワードは、データ管理装置に登録されているデータに対応するものであってもよい。そのため、検索者は、暗号化索引を活用して登録キーワードを検索することにより、データ管理装置に登録されているデータを比較的高速に検索することができる。
実施の形態1における秘匿検索システム100の構成図。 実施の形態1におけるマスター鍵装置200の構成図。 実施の形態1における登録鍵装置300の構成図。 実施の形態1における索引開示鍵装置400の構成図。 実施の形態1における生成部420の構成図。 実施の形態1におけるユーザ鍵装置500の構成図。 実施の形態1における生成部520の構成図。 実施の形態1における登録装置600の構成図。 実施の形態1における生成部620の構成図。 実施の形態1における検索操作装置700の構成図。 実施の形態1における生成部720の構成図。 実施の形態1におけるデータ管理装置800の構成図。 実施の形態1における復号部820の構成図。 実施の形態1における検索部840の構成図。 実施の形態1におけるマスター鍵生成処理の動作を示すフローチャート。 実施の形態1における登録鍵生成処理の動作を示すフローチャート。 実施の形態1における索引開示鍵生成処理の動作を示すフローチャート。 実施の形態1におけるユーザ鍵生成処理の動作を示すフローチャート。 実施の形態1における属性情報を示す図。 実施の形態1におけるデータ登録処理の動作を示すフローチャート。 実施の形態1における登録データベース892を示す図。 実施の形態1における索引開示処理の動作を示すフローチャート。 実施の形態1における索引開示後データベース893を示す図。 実施の形態1における検索操作処理の動作を示すフローチャート。 実施の形態1におけるデータ検索処理の動作を示すフローチャート。 実施の形態1におけるデータ削除処理の動作を示すフローチャート。 実施の形態1の変形例におけるマスター鍵装置200のハードウェア構成図。 実施の形態1の変形例における登録鍵装置300のハードウェア構成図。 実施の形態1の変形例における索引開示鍵装置400のハードウェア構成図。 実施の形態1の変形例におけるユーザ鍵装置500のハードウェア構成図。 実施の形態1の変形例における登録装置600のハードウェア構成図。 実施の形態1の変形例における検索操作装置700のハードウェア構成図。 実施の形態1の変形例におけるデータ管理装置800ハードウェア構成図。
実施の形態の説明及び図面において、同じ要素及び対応する要素には同じ符号を付している。同じ符号が付された要素の説明は、適宜に省略又は簡略化する。図中の矢印はデータの流れ又は処理の流れを主に示している。
実施の形態1.
まず、秘匿検索における、登録者と検索者とデータ管理装置とのそれぞれの処理を簡単に説明する。
登録者は、暗号化データを登録するユーザである。登録者は、データを登録する装置を含んでもよい。
検索者は、暗号化データを検索するユーザである。検索者は、データを検索する装置を含んでもよい。
データ管理装置は、暗号化データを保管している装置である。
登録者が実行する基本的な処理は、以下の通りである。
まず、登録者は、登録するデータを暗号化することにより暗号化データを生成する。
次に、登録者は、暗号化データを検索するための登録キーワードを生成する。
次に、登録者は、登録キーワードを暗号化する。暗号化された登録キーワードを暗号化タグという。暗号化タグには、登録キーワード以外のデータが組み込まれていてもよい。暗号化タグに基づいて登録キーワードを推測することは困難である。
次に、登録者は、暗号化タグを暗号化データに関連付ける。暗号化タグの数は1つである必要はない。即ち、登録者は、複数の暗号化タグを暗号化データに関連付けてもよい。
そして、登録者は、暗号化データと暗号化タグとをデータ管理装置に登録する。
検索者が実行する基本的な処理は、以下の通りである。
まず、検索者は、検索することに用いる検索キーワードを選ぶ。
次に、検索者は、秘密鍵を用いて検索キーワードを暗号化する。秘密鍵には、検索者の情報が組み込まれている。暗号化された検索キーワードを検索クエリという。検索クエリには、検索キーワード以外のデータが組み込まれていてもよい。検索クエリに基づいて秘密鍵又は検索キーワード等を推測することは困難である。
次に、検索者は、検索クエリをデータ管理装置に送信することによって、データ管理装置に検索キーワードに対応するデータを検索することを要求する。
そして、検索者は、検索クエリに対応する暗号化データをデータ管理装置から受け取る。
データ管理装置が実行する基本的な処理は、以下の通りである。
データ管理装置には、暗号化データと暗号化タグとの組が少なくとも1つ登録されている。
まず、データ管理装置は、検索クエリを受け取る。
次に、データ管理装置は、特殊な演算を実行することによって、検索クエリに対応する暗号化タグを選択する。特殊な演算は、暗号化タグを復号せずに、検索キーワードを各暗号化タグに対応する登録キーワードと比較するための演算である。
そして、データ管理装置は、選択した暗号化タグに関連付けられた暗号化データを検索者に送信する。
暗号化タグには、検索することを許可された検索者である権限者を示す情報が組み込まれていてもよい。具体例として、暗号化タグには、検索者Aのみが検索できることを示す情報が組み込まれているものとする。検索者Bが検索者Bに対応する秘密鍵を使ってこの暗号化タグに組み込まれた登録キーワードと一致する検索キーワードを用いて検索クエリを生成し、かつ、この検索クエリを用いて暗号化データを検索する場合を考える。この場合、データ管理装置は、暗号化タグに対応する検索者と、検索クエリに対応する検索者とが一致していないと判定する。
以下、本実施の形態について、図面を参照しながら詳細に説明する。
本実施の形態に係る秘匿検索システム100は、マルチユーザ型の共通鍵暗号方式を用いて索引を生成し、生成した索引を暗号化し、暗号化した索引を復号し、復号した索引を用いることによって、秘匿検索を行う。
***構成の説明***
図1は、秘匿検索システム100の構成例を示している。
秘匿検索システム100は、本図に示すように、マスター鍵装置200と、登録鍵装置300と、索引開示鍵装置400と、ユーザ鍵装置500と、登録装置600と、検索操作装置700と、データ管理装置800とを備える。秘匿検索システムは、本図に示す少なくとも1つの装置から成ってもよい。
秘匿検索システム100が備える各装置は、ネットワーク101を介して互いに接続されている。秘匿検索システム100が備える少なくとも1つの装置は、他の全ての装置と接続されていなくてもよい。
図2は、本実施の形態に係るマスター鍵装置200の構成例を示している。
マスター鍵装置200は、本図に示すように、プロセッサ201と、メモリ202と、補助記憶装置203と、入出力インタフェース204と、通信装置205と等のハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
プロセッサ201は、演算処理を行うIC(Integrated Circuit)であり、コンピュータが備えるハードウェアを制御する。プロセッサ201は、具体例として、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、又はGPU(Graphics Processing Unit)である。
メモリ202は、典型的には、揮発性の記憶装置である。メモリ202は、主記憶装置又はメインメモリとも呼ばれる。メモリ202は、具体例として、RAM(Random Access Memory)である。メモリ202に記憶されたデータは、必要に応じて補助記憶装置203に保存される。
補助記憶装置203は、典型的には、不揮発性の記憶装置である。補助記憶装置203は、具体例として、ROM(Read Only Memory)、HDD(Hard Disk Drive)、又はフラッシュメモリである。補助記憶装置203に記憶されたデータは、必要に応じてメモリ202にロードされる。
入出力インタフェース204は、入力装置及び出力装置が接続されるポートである。入出力インタフェース204は、具体例として、USB(Universal Serial Bus)端子である。入力装置は、具体例として、キーボード及びマウスである。出力装置は、具体例として、ディスプレイである。
通信装置205は、レシーバ及びトランスミッタである。通信装置205は、具体例として、通信チップ又はNIC(Network Interface Card)である。
マスター鍵装置200は、受付部210と、生成部220と、出力部230と等の要素を備える。これらの要素は、ソフトウェアにより実現される。
補助記憶装置203は、マスター鍵プログラムを記憶している。マスター鍵プログラムは、受付部210と、生成部220と、出力部230と、記憶部291との機能をコンピュータに実現させるプログラムである。マスター鍵プログラムは、メモリ202にロードされて、プロセッサ201によって実行される。
補助記憶装置203は、OS(Operating System)を記憶している。OSの少なくとも一部は、メモリ202にロードされて、プロセッサ201によって実行される。つまり、プロセッサ201は、OSを実行しながら、マスター鍵プログラムを実行する。
マスター鍵プログラムを実行して得られるデータは、メモリ202、補助記憶装置203、プロセッサ201内のレジスタ、又はプロセッサ201内のキャッシュメモリ等の記憶装置に記憶される。
補助記憶装置203は、記憶部291として機能する。補助記憶装置203以外の記憶装置の少なくとも一部が、補助記憶装置203の代わりに、又は、補助記憶装置203と共に、記憶部291として機能してもよい。
マスター鍵装置200は、プロセッサ201を代替する複数のプロセッサを備えてもよい。複数のプロセッサは、プロセッサ201の役割を分担する。
本明細書に記載されている各プログラムは、コンピュータで読み取り可能に不揮発性の記録媒体に記録(格納)されていてもよい。不揮発性の記録媒体は、具体例として、光ディスク又はフラッシュメモリである。
図3は、本実施の形態に係る登録鍵装置300の構成例を示している。
登録鍵装置300は、本図に示すように、本図に示すように、プロセッサ301と、メモリ302と、補助記憶装置303と、入出力インタフェース304と、通信装置305と等のハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
プロセッサ301は、プロセッサ201と同様である。メモリ302は、メモリ202と同様である。補助記憶装置303は、補助記憶装置203と同様である。入出力インタフェース304は、入出力インタフェース204と同様である。通信装置305は、通信装置205と同様である。
登録鍵装置300は、受付部310と、生成部320と、出力部330と等の要素を備える。これらの要素は、ソフトウェアにより実現される。
補助記憶装置303は、登録鍵プログラムを記憶している。登録鍵プログラムは、受付部310と、生成部320と、出力部330と、記憶部391との機能をコンピュータに実現させるプログラムである。登録鍵プログラムは、メモリ302にロードされて、プロセッサ301によって実行される。
補助記憶装置303は、OSを記憶している。OSの少なくとも一部は、メモリ302にロードされて、プロセッサ301によって実行される。つまり、プロセッサ301は、OSを実行しながら、登録鍵プログラムを実行する。
登録鍵プログラムを実行して得られるデータは、メモリ302、補助記憶装置303、プロセッサ301内のレジスタ、又はプロセッサ301内のキャッシュメモリ等の記憶装置に記憶される。
補助記憶装置303は、記憶部391として機能する。補助記憶装置303以外の記憶装置の少なくとも一部が、補助記憶装置303の代わりに、又は、補助記憶装置303と共に、記憶部391として機能してもよい。
登録鍵装置300は、プロセッサ301を代替する複数のプロセッサを備えてもよい。複数のプロセッサは、プロセッサ301の役割を分担する。
図4は、本実施の形態に係る索引開示鍵装置400の構成例を示している。
索引開示鍵装置400は、本図に示すように、プロセッサ401と、メモリ402と、補助記憶装置403と、入出力インタフェース404と、通信装置405と等のハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
プロセッサ401は、プロセッサ201と同様である。メモリ402は、メモリ202と同様である。補助記憶装置403は、補助記憶装置203と同様である。入出力インタフェース404は、入出力インタフェース204と同様である。通信装置405は、通信装置205と同様である。
索引開示鍵装置400は、受付部410と、生成部420と、出力部430と等の要素を備える。これらの要素は、ソフトウェアによって実現される。
補助記憶装置403は、索引開示鍵プログラムを記憶している。索引開示鍵プログラムは、受付部410と、生成部420と、出力部430と、記憶部491との機能をコンピュータに実現させるプログラムである。索引開示鍵プログラムは、メモリ402にロードされて、プロセッサ401によって実行される。
補助記憶装置403は、OSを記憶している。OSの少なくとも一部は、メモリ402にロードされて、プロセッサ401によって実行される。つまり、プロセッサ401は、OSを実行しながら、索引開示鍵プログラムを実行する。
索引開示鍵プログラムを実行して得られるデータは、メモリ402、補助記憶装置403、プロセッサ401内のレジスタ、又はプロセッサ401内のキャッシュメモリ等の記憶装置に記憶される。
補助記憶装置403は、記憶部491として機能する。補助記憶装置403以外の記憶装置の少なくとも一部が、補助記憶装置403の代わりに、又は、補助記憶装置403と共に、記憶部491として機能してもよい。
索引開示鍵装置400は、プロセッサ401を代替する複数のプロセッサを備えてもよい。複数のプロセッサは、プロセッサ401の役割を分担する。
図5は、生成部420の構成例を示している。
生成部420は、本図に示すように、索引開示鍵生成部421を備える。
図6は、本実施の形態に係るユーザ鍵装置500の構成例を示している。
ユーザ鍵装置500は、本図に示すように、プロセッサ501と、メモリ502と、補助記憶装置503と、入出力インタフェース504と、通信装置505と等のハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
プロセッサ501は、プロセッサ201と同様である。メモリ502は、メモリ202と同様である。補助記憶装置503は、補助記憶装置203と同様である。入出力インタフェース504は、入出力インタフェース204と同様である。通信装置505は、通信装置205と同様である。
ユーザ鍵装置500は、受付部510と、生成部520と、出力部530と等の要素を備える。これらの要素は、ソフトウェアによって実現される。
補助記憶装置503は、ユーザ鍵プログラムを記憶している。ユーザ鍵プログラムは、受付部510と、生成部520と、出力部530と、記憶部591との機能をコンピュータに実現させるプログラムである。ユーザ鍵プログラムは、メモリ502にロードされて、プロセッサ501によって実行される。
補助記憶装置503は、OSを記憶している。OSの少なくとも一部は、メモリ502にロードされて、プロセッサ501によって実行される。つまり、プロセッサ501は、OSを実行しながら、ユーザ鍵プログラムを実行する。
ユーザ鍵プログラムを実行して得られるデータは、メモリ502、補助記憶装置503、プロセッサ501内のレジスタ、又はプロセッサ501内のキャッシュメモリ等の記憶装置に記憶される。
補助記憶装置503は、記憶部591として機能する。補助記憶装置503以外の記憶装置の少なくとも一部が、補助記憶装置503の代わりに、又は、補助記憶装置503と共に、記憶部591として機能してもよい。
ユーザ鍵装置500は、プロセッサ501を代替する複数のプロセッサを備えてもよい。複数のプロセッサは、プロセッサ501の役割を分担する。
出力部530は、ユーザデータ出力部とも呼ばれる。出力部530は、ユーザ鍵を検索操作装置700に出力する。ユーザ鍵UKは、検索者属性情報が組み込まれた鍵である。検索者属性情報は、登録キーワードWを検索する検索者が有する属性を示す情報であり、かつ、属性情報とも呼ばれる。
記憶部591は、ユーザデータ記憶部とも呼ばれる。記憶部591は、検索者属性情報を記憶していてもよい。
図7は、生成部520の構成例を示している。
生成部520は、本図に示すように、ユーザ鍵生成部521を備える。
ユーザ鍵生成部521は、検索者属性情報と、ユーザ鍵関数とを用いてユーザ鍵UKを生成する。
図8は、本実施の形態に係る登録装置600の構成例を示している。
登録装置600は、本図に示すように、プロセッサ601と、メモリ602と、補助記憶装置603と、入出力インタフェース604と、通信装置605と等のハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
プロセッサ601は、プロセッサ201と同様である。メモリ602は、メモリ202と同様である。補助記憶装置603は、補助記憶装置203と同様である。入出力インタフェース604は、入出力インタフェース204と同様である。通信装置605は、通信装置205と同様である。
登録装置600は、受付部610と、生成部620と、登録部630と、出力部640と等の要素を備える。これらの要素は、ソフトウェアによって実現される。
補助記憶装置603は、登録プログラムを記憶している。登録プログラムは、受付部610と、生成部620と、登録部630と、出力部640と、記憶部691との機能をコンピュータに実現させるプログラムである。登録プログラムは、メモリ602にロードされて、プロセッサ601によって実行される。
補助記憶装置603は、OSを記憶している。OSの少なくとも一部は、メモリ602にロードされて、プロセッサ601によって実行される。つまり、プロセッサ601は、OSを実行しながら、登録プログラムを実行する。
登録プログラムを実行して得られるデータは、メモリ602、補助記憶装置603、プロセッサ601内のレジスタ、又はプロセッサ601内のキャッシュメモリ等の記憶装置に記憶される。
補助記憶装置603は、記憶部691として機能する。但し、補助記憶装置603以外の記憶装置の少なくとも一部が、補助記憶装置603の代わりに、又は、補助記憶装置603と共に、記憶部691として機能してもよい。
登録装置600は、プロセッサ601を代替する複数のプロセッサを備えてもよい。複数のプロセッサは、プロセッサ601の役割を分担する。
出力部640は、登録データ出力部とも呼ばれる。出力部640は、暗号化タグCTをデータ管理装置800に出力し、かつ、暗号化索引EIをデータ管理装置800に出力する。
記憶部691は、登録データ記憶部とも呼ばれる。記憶部691は、登録キーワードWと、権限者属性情報と、索引開示鍵IKとを記憶していてもよい。権限者属性情報は、登録キーワードWを検索する権限を有する権限者が有すべき属性を示す情報であり、かつ、属性情報とも呼ばれる。権限者属性情報は、ワイルドカードを含んでいてもよい。権限者属性情報におけるワイルドカードは、検索者属性情報に含まれる属性がどのようなものであっても検索者属性情報に対応する検索者に登録キーワードWを検索することを許可することを示すデータである。登録キーワード索引は、登録装置600がデータ管理装置800に登録する暗号化データに対応する索引であり、かつ、索引Iとも呼ばれる。登録キーワード索引は、登録キーワードWに対応する索引である。索引開示鍵IKは、登録キーワード索引を暗号化する鍵である。索引開示鍵IKは、前記暗号化索引の少なくとも一部を復号することができる鍵であってもよい。
図9は、生成部620の構成例を示している。
生成部620は、本図に示すように、暗号文データ生成部621と、キーワード生成部622と、中間タグ生成部623と、索引生成部624と、暗号化索引生成部625と、乱数生成部626と、暗号化タグ生成部627とを備える。
中間タグ生成部623は、権限者属性情報と、登録キーワードWと、ユーザ鍵関数と、検索クエリ関数とを用いて、登録キーワードWに対応する中間タグMTを生成する。ユーザ鍵関数は、ユーザ鍵UKを生成することに用いられる関数である。検索クエリ関数は、検索クエリSQを生成することに用いられる関数である。検索クエリSQは、ユーザ鍵UKが組み込まれており、かつ、検索キーワードwに対応する。検索キーワードwは、検索者が登録キーワードWを検索する際に用いるキーワードである。
中間タグ生成部623は、ワイルドカードを中間タグMTに組み込んでもよい。
索引生成部624は、登録キーワードWと、権限者属性情報と、ユーザ鍵関数と、検索クエリ関数と、索引クエリ関数とを用いて登録キーワード索引を生成する。索引クエリ関数は、索引クエリIQ又は部分索引クエリIQ′を生成することに用いられる関数である。索引クエリIQは、検索クエリSQが組み込まれており、かつ、登録キーワード索引を検索することに用いられるデータである。
索引生成部624は、中間タグMTを用いて登録キーワード索引を生成してもよい。
暗号化索引生成部625は、索引開示鍵IKを用いて登録キーワード索引を暗号化することにより暗号化索引EIを生成する。
乱数生成部626は、乱数を暗号化タグ乱数として生成する。
暗号化タグ生成部627は、中間タグMTと、暗号化タグ乱数と、暗号化タグ関数とを用いて暗号化タグCTを生成する。暗号化タグ関数は、登録キーワードWが組み込まれた暗号化タグを生成することに用いられる。
暗号化タグ生成部627は、登録キーワードWと、暗号化タグ乱数と、暗号化タグ関数と、照合子関数とを用いて暗号化タグ照合子を生成する。暗号化タグ生成部627は、暗号化タグ乱数と、暗号化タグ照合子を暗号化タグCTに結合してもよい。照合子関数は、暗号化タグCTに対応する暗号化タグ照合子を生成することに用いられる関数である。
図10は、本実施の形態に係る検索操作装置700の構成例を示している。
検索操作装置700は、本図に示すように、プロセッサ701と、メモリ702と、補助記憶装置703と、入出力インタフェース704と、通信装置705と等のハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
プロセッサ701は、プロセッサ201と同様である。メモリ702は、メモリ202と同様である。補助記憶装置703は、補助記憶装置203と同様である。入出力インタフェース704は、入出力インタフェース204と同様である。通信装置705は、通信装置205と同様である。
検索操作装置700は、受付部710と、生成部720と、要求部730と、復号部740と、出力部750と等の要素を備える。これらの要素は、ソフトウェアによって実現される。
補助記憶装置703は、検索操作プログラムを記憶している。検索操作プログラムは、受付部710と、生成部720と、要求部730と、復号部740と、出力部750と、記憶部791との機能をコンピュータに実現させるプログラムである。検索操作プログラムは、メモリ702にロードされて、プロセッサ701によって実行される。
補助記憶装置703は、OSを記憶している。OSの少なくとも一部は、メモリ702にロードされて、プロセッサ701によって実行される。つまり、プロセッサ701は、OSを実行しながら、検索操作プログラムを実行する。
検索操作プログラムを実行して得られるデータは、メモリ702、補助記憶装置703、プロセッサ701内のレジスタ、又はプロセッサ701内のキャッシュメモリ等の記憶装置に記憶される。
補助記憶装置703は、記憶部791として機能する。補助記憶装置703以外の記憶装置の少なくとも一部が、補助記憶装置703の代わりに、又は、補助記憶装置703と共に、記憶部791として機能してもよい。
検索操作装置700は、プロセッサ701を代替する複数のプロセッサを備えてもよい。複数のプロセッサは、プロセッサ701の役割を分担する。
受付部710は、検索データ受付部とも呼ばれる。受付部710は、ユーザ鍵UKを受け付け、かつ、ユーザ鍵UKを記憶部791に記憶させる。
出力部750は、検索データ出力部とも呼ばれる。出力部750は、検索クエリSQと、索引クエリIQとをデータ管理装置800に出力する。
記憶部791は、検索データ記憶部とも呼ばれる。記憶部791は、ユーザ鍵UKと、検索キーワードwとを記憶していてもよい。
図11は、生成部720の構成例を示している。
生成部720は、本図に示すように、検索クエリ生成部721と、索引クエリ生成部722とを備える。
検索クエリ生成部721は、ユーザ鍵UKと、検索キーワードwと、検索クエリ関数とを用いて検索クエリSQを生成する。
索引クエリ生成部722は、検索クエリSQと、索引クエリ関数とを用いて索引クエリIQを生成する。
図12は、本実施の形態に係るデータ管理装置800の構成例を示している。
データ管理装置800は、本図に示すように、プロセッサ801と、メモリ802と、補助記憶装置803と、入出力インタフェース804と、通信装置805と等のハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
プロセッサ801は、プロセッサ201と同様である。メモリ802は、メモリ202と同様である。補助記憶装置803は、補助記憶装置203と同様である。入出力インタフェース804は、入出力インタフェース204と同様である。通信装置805は、通信装置205と同様である。
データ管理装置800は、受付部810と、復号部820と、登録部830と、検索部840と、出力部850と等の要素を備える。これらの要素は、ソフトウェアによって実現される。
補助記憶装置803は、データ管理プログラムを記憶している。データ管理プログラムは、受付部810と、復号部820と、登録部830と、検索部840と、出力部850と、記憶部891との機能をコンピュータに実現させるプログラムである。データ管理プログラムは、メモリ802にロードされて、プロセッサ801によって実行される。
補助記憶装置803は、OSを記憶している。OSの少なくとも一部は、メモリ802にロードされて、プロセッサ801によって実行される。つまり、プロセッサ801は、OSを実行しながら、データ管理プログラムを実行する。
データ管理プログラムを実行して得られるデータは、メモリ802、補助記憶装置803、プロセッサ801内のレジスタ、又はプロセッサ801内のキャッシュメモリ等の記憶装置に記憶される。
補助記憶装置803は、記憶部891として機能する。補助記憶装置803以外の記憶装置の少なくとも一部が、補助記憶装置803の代わりに、又は、補助記憶装置803と共に、記憶部891として機能してもよい。
データ管理装置800は、プロセッサ801を代替する複数のプロセッサを備えてもよい。複数のプロセッサは、プロセッサ801の役割を分担する。
受付部810は、管理データ受付部とも呼ばれる。受付部810は、暗号化タグCTを受け付け、かつ、暗号化タグCTを記憶部891に記憶させる。受付部810は、暗号化索引EIを受け付け、かつ、暗号化索引EIを記憶部891に記憶させる。受付部810は、検索クエリSQと、索引クエリIQとを受け付け、かつ、検索クエリSQと、索引クエリIQとを記憶部891に記憶させる。
記憶部891は、管理データ記憶部とも呼ばれる。記憶部891は、検索クエリSQと、索引開示鍵IKと、索引クエリIQと、索引開示位置情報Posとを記憶していてもよい。索引開示位置情報Posは、暗号化索引EIの少なくとも一部に対応する位置であって、公開されている索引開示鍵IKを用いて復号することが位置を示す情報である。公開されている索引開示鍵IKを索引開示鍵IKと呼んでもよい。公開されている索引開示鍵IKは、暗号化索引EIの少なくとも一部を復号することができる。公開されている索引開示鍵IKは、索引開示鍵装置400と登録装置600とを除く装置が用いることができる索引開示鍵IKである。
図13は、復号部820の構成例を示している。
復号部820は、本図に示すように、暗号化索引復号部821を備える。
暗号化索引復号部821は、索引開示鍵IKを用いて暗号化索引EIを復号することによって、部分登録キーワード索引を生成する。部分登録キーワード索引は、登録キーワード索引の少なくとも一部である。
図14は、検索部840の構成例を示している。
検索部840は、本図に示すように、索引照合部841と、暗号化タグ抽出部842と、暗号化タグ照合部843と、暗号文データ抽出部844とを備える。
索引照合部841は、部分索引クエリIQ′と、部分登録キーワード索引とが一致している場合に、登録キーワードW及び検索キーワードwと、権限者属性情報及び検索者属性情報とがそれぞれ一致している可能性があると判定する。部分索引クエリIQ′は、索引クエリIQに含まれる情報であって、部分登録キーワード索引に対応する情報である。
索引照合部841は、索引クエリIQの内、索引開示位置情報Posに対応する部分を部分索引クエリIQ′とする。
暗号化タグ照合部843が実行する処理は、照合処理と呼ばれる。
暗号化タグ照合部843は、暗号化タグCTと、検索クエリSQと、暗号化タグCTに結合された暗号化タグ乱数と、暗号化タグ関数と、照合子関数とを用いて、判定用照合子を生成する。暗号化タグ照合部843は、判定用照合子と、暗号化タグに結合された暗号化タグ照合子とが等しい場合に、登録キーワードWと、検索キーワードwとが一致していると判定する。判定用照合子は、検索キーワードwが登録キーワードWと一致しているか否かを判定することに用いられるデータである。
暗号化タグ照合部843は、登録キーワードW及び検索キーワードwと、権限者属性情報及び検索者属性情報とがそれぞれ一致している可能性があると索引照合部841が判定した場合に、照合処理を実行してもよい。
秘匿検索プログラムは、マスター鍵プログラムと、登録鍵プログラムと、索引開示鍵プログラムと、ユーザ鍵プログラムと、登録プログラムと、検索操作プログラムと、データ管理プログラムとの総称である。秘匿検索プログラムは、1つのプログラムであってもよく、複数のプログラムから構成されてもよい。秘匿検索プログラムを構成するプログラムの少なくとも1つは、プログラムプロダクトとして提供されてもよい。
***動作の説明***
マスター鍵装置200の動作手順は、マスター鍵方法に相当する。また、マスター鍵装置200の動作を実現するプログラムは、マスター鍵プログラムに相当する。
登録鍵装置300の動作手順は、登録鍵方法に相当する。また、登録鍵装置300の動作を実現するプログラムは、登録鍵プログラムに相当する。
索引開示鍵装置400の動作手順は、索引開示鍵方法に相当する。また、索引開示鍵装置400の動作を実現するプログラムは、索引開示鍵プログラムに相当する。
ユーザ鍵装置500の動作手順は、ユーザ鍵方法に相当する。また、ユーザ鍵装置500の動作を実現するプログラムは、ユーザ鍵プログラムに相当する。
登録装置600の動作手順は、登録方法に相当する。また、登録装置600の動作を実現するプログラムは、登録プログラムに相当する。
検索操作装置700の動作手順は、検索操作方法に相当する。また、検索操作装置700の動作を実現するプログラムは、検索操作プログラムに相当する。
データ管理装置800の動作手順は、データ管理方法に相当する。また、データ管理装置800の動作を実現するプログラムは、データ管理プログラムに相当する。
秘匿検索システム100の動作手順は、秘匿検索方法に相当する。秘匿検索方法は、マスター鍵方法と、登録鍵方法と、索引開示鍵方法と、ユーザ鍵方法と、登録方法と、検索操作方法と、データ管理方法との総称である。
以下、秘匿検索システム100の各装置の処理の具体例を説明する。以下に示す処理は、秘匿検索方法に含まれる処理である。
なお、以下において、秘匿検索システム100が、特許文献1が開示するマルチユーザ型の共通鍵方式を用いる場合を説明する。しかし、秘匿検索システム100は、別のマルチユーザ型の共通鍵方式を用いる場合においても、以下の例と同様に秘匿検索方法を実行することができる。
図15は、マスター鍵生成処理の一例を示すフローチャートである。
マスター鍵生成処理は、マスター鍵装置200によって実行される処理である。
(ステップS201:生成処理)
生成部220は、マスター鍵MKを生成する。
生成部220は、具体例として、256ビットのランダムなビット列をマスター鍵MKとして生成する。本例において、生成部220は、256ビットのマスター鍵MKを生成する。
(ステップS202:保管処理)
生成部220は、マスター鍵MKを記憶部291に記憶させる。その結果、マスター鍵MKは、記憶部291に保管される。
(ステップS203:出力処理)
出力部230は、マスター鍵MKを出力する。
出力部230は、具体例として、通信装置205を用いて、マスター鍵MKを登録鍵装置300へ送信する。
図16は、登録鍵生成処理の一例を示すフローチャートである。
登録鍵生成処理は、登録鍵装置300によって実行される処理である。
(ステップS301:受付処理)
受付部310は、マスター鍵MKを受け付ける。
受付部310は、具体例として、通信装置305を用いて、マスター鍵装置200からマスター鍵MKを受信する。受付部310は、登録鍵装置300に入力されたマスター鍵MKを、入出力インタフェース304を介して受け付けてもよい。
(ステップS302:生成処理)
生成部320は、マスター鍵MKを用いて登録鍵EKを生成する。生成部320は、登録鍵EKを生成するためにデータ鍵DKとタグ鍵TKとを生成する。
登録鍵EKは、データ鍵DKとタグ鍵TKとの組である。即ち、登録鍵EKは、以下のように表されてもよい。
EK = (DK,TK)
登録鍵EKは、データ鍵DKとタグ鍵TKとを含んでいる。
(ステップS303:保管処理)
生成部320は、登録鍵EKを記憶部391に記憶させる。その結果、登録鍵EKは、記憶部391に保管される。
(ステップS304:出力処理)
出力部330は、登録鍵EKを出力する。
出力部330は、具体例として、通信装置305を用いて、索引開示鍵装置400とユーザ鍵装置500と登録装置600とのそれぞれに登録鍵EKを送信する。
出力部330は、登録装置600に登録鍵EKの代わりにタグ鍵TKを送信してもよい。
図17は、索引開示鍵生成処理の一例を示すフローチャートである。
索引開示鍵生成処理は、索引開示鍵装置400によって実行される処理である。
(ステップS401:登録鍵受付処理)
受付部410は、登録鍵EKを受け付ける。
受付部410は、具体例として、通信装置405を用いて、登録鍵装置300から登録鍵EKを受信する。受付部410は、索引開示鍵装置400に入力された登録鍵EKを、入出力インタフェース404を介して受け付けてもよい。
受付部410は、登録鍵EKを記憶部491に記憶させる。その結果、登録鍵EKは、記憶部491に保管される。
なお、記憶部491が登録鍵EKを既に保管している場合、受付部410は、本ステップの処理を実行しなくてもよい。
(ステップS402:索引長受付処理)
受付部410は、索引長ILENを受け付ける。
受付部410は、具体例として、索引開示鍵装置400に入力された索引長ILENを、入出力インタフェース404を介して受け付ける。受付部410は、索引長ILENをアプリケーションプログラムから受け付けてもよい。
索引長ILENは、1以上の整数であり、登録装置600において生成される索引Iのデータ長をバイト単位で表した値である。具体例として、ILEN=32とすると、索引Iのデータ長は、32バイト又は32バイトに比例する値である。
なお、記憶部491が索引長ILENを既に記憶している場合、受付部410は、本ステップの処理を実行しなくてもよい。
(ステップS403:生成処理)
索引開示鍵生成部421は、タグ鍵TKと索引長ILENとを用いて、索引開示鍵IKを生成する。
索引開示鍵IKは、ILEN個の索引開示部分鍵IK_jを有する。索引開示鍵IKの一部を索引開示鍵IKと呼んでもよい。jは、1以上ILEN以下の整数である。即ち、索引開示鍵IKは、以下のようにベクトル形式で表されてもよい。
IK = (IK_1,・・・,IK_ILEN)
索引開示鍵生成部421は、索引開示部分鍵IK_jを以下のように算出する。
まず、索引開示鍵生成部421は、タグ鍵TKと番号jとを連結して連結値TK|jを得る。x|yは、データxのビット列とデータyのビット列とを連結したデータのビット列が表す値を表す。連結することは、特に断りがない限り、ビット列を連結することを意味する。
次に、索引開示鍵生成部421は、連結値TK|jを入力として関数F_1を実行し、索引開示部分鍵IK_jを得る。即ち、索引開示部分鍵IK_jは、以下のように表されてもよい。
IK_j = F_1(TK|j)
関数F_1は、どのような一方向性関数であってもよい。一方向性関数は、具体例として、擬似ランダム関数、ハッシュ関数、共通鍵暗号方式、又は公開鍵暗号方式である。
(ステップS404:保管処理)
生成部420は、索引開示鍵IKを記憶部491に記憶させる。その結果、索引開示鍵IKは、記憶部491に保管される。
(ステップS405:出力処理)
出力部430は、索引開示鍵IKを出力する。
出力部430は、具体例として、通信装置405を用いて、索引開示鍵IKを登録装置600へ送信する。
図18は、ユーザ鍵生成処理の一例を示すフローチャートである。
ユーザ鍵生成処理は、ユーザ鍵装置500によって実行される処理である。
(ステップS501:登録鍵受付処理)
受付部510は、登録鍵EKを受け付ける。
受付部510は、具体例として、通信装置505を用いて、登録鍵装置300から登録鍵EKを受信する。受付部510は、ユーザ鍵装置500に入力された登録鍵EKを、入出力インタフェース504を介して受け付けてもよい。
受付部510は、登録鍵EKを記憶部591に記憶させる。その結果、登録鍵EKは、記憶部591に保管される。
記憶部591が登録鍵EKを既に保管している場合、受付部510は、本ステップの処理を実行しなくてもよい。
(ステップS502:属性情報受付処理)
受付部510は、属性情報Aを受け付ける。属性情報Aは、検索者属性情報に対応する。
受付部510は、具体例として、ユーザ鍵装置500に入力された属性情報Aを、入出力インタフェース504を介して受け付ける。受付部510は、属性情報Aをアプリケーションプログラムから受け付けてもよい。
なお、記憶部591が属性情報Aを既に記憶している場合、受付部510は、本ステップの処理を実行しなくてもよい。
属性情報は、検索者の属性をまとめた情報である。属性情報は、検索及び復号の権限制御に関わる情報である。検索者は、データ管理装置800に登録されているデータを検索し得る利用者である。つまり、検索者は、検索操作装置700の利用者又は検索操作装置700を利用する可能性がある者である。検索者は、コンピュータ又はロボット等、人間以外のものであってもよい。検索者の属性は、検索者が有する性質又は検索者の識別情報等である。
検索者の属性は、具体例として、1以上の層から成る。以下、検索者の属性は、1以上の層から成るものとする。
属性情報は、各検索者の属性値を層ごとに示す。属性値は、属性情報の各値である。
図19は、属性情報の具体例を示している。本例において、検索者の属性は、4層から成る。以下、本例を説明する。
1つの番号は、1つの検索者の分類に対応する。1つの番号が複数の検索者に対応することもある。
第1層の属性(第1属性)は、検索者が所属する事業部を示す。
第2層の属性(第2属性)は、検索者が所属する部を示す。
第3層の属性(第3属性)は、検索者が所属する課を示す。
第4層の属性(第4属性)は、検索者の氏名を示す。
番号1の属性情報は、Neさんの属性情報である。Neさんは、Di事業部のDe部のSc課に所属する。
番号2の属性情報は、Nfさんの属性情報である。Nfさんは、Di事業部のDe部のSd課に所属する。
番号3の属性情報は、Di事業部のDe部のSc課に所属する検索者に対応する。番号3の第4属性は、ワイルドカード*である。ワイルドカード*は、属性値が限定されないことを表す。そのため、番号3に対応する属性情報は、検索者の氏名を限定しないことを示す。なお、ワイルドカード*は、コンピュータにおいて、全てのビットが1の値、又は*の文字コード等に置き換えられる。
番号4の属性情報は、Di事業部のDe部に所属する検索者に対応する。番号4の第3属性及び第4属性は、ワイルドカード*である。そのため、番号4に対応する属性情報は、検索者の課及び氏名を限定しないことを示す。
本実施の形態において、検索者の属性情報は、L層から成るものとする。Lは、1以上の整数である。
属性情報Aは、次のように表されてもよい。
A = (A_1,・・・,A_L)
(ステップS503:鍵生成処理)
ユーザ鍵生成部521は、データ鍵DKと属性情報Aとを用いて、ユーザデータ鍵UDKを生成する。
ユーザデータ鍵UDKは、具体例として、ユーザデータ部分鍵UDK_jと、フラグ値Db_jとを有する。jは、1以上L以下の整数である。
ユーザ鍵生成部521は、具体例として、ユーザデータ属性部分鍵UDK_jを以下のように算出する。
まず、ユーザ鍵生成部521は、属性値A_jと番号jとを連結して連結値A_j|jを得る。
次に、ユーザ鍵生成部521は、データ鍵DKと連結値A_j|jとを入力として関数F_2を実行し、ユーザデータ鍵UDK_jを得る。関数F_2は、どのような一方向性関数であってもよい。
ユーザ鍵生成部521は、フラグ値Db_jを以下のように求める。
ユーザ鍵生成部521は、属性値A_jがワイルドカード*であるか判定する。
ユーザ鍵生成部521は、属性値A_jがワイルドカード*である場合、フラグ値Db_jを1とする。
ユーザ鍵生成部521は、属性値A_jがワイルドカード*でない場合、フラグ値Db_jを0とする。
ユーザデータ鍵UDKは、以下のように表されてもよい。
UDK = ((UDK_1,Db_1),・・・,(UDK_L,Db_L))
Db_j = 1 (A_j=*である場合)
Db_j = 0 (A_j≠*である場合)
UDK_j = F_2(DK,A_j|j)
ユーザ鍵生成部521は、タグ鍵TKと属性情報Aとを用いて、ユーザタグ鍵UTKを生成する。ユーザタグ鍵UTKは、具体例として、ユーザタグ部分鍵UTK_jとフラグ値Tb_jとを有する。
ユーザ鍵生成部521は、具体例として、関数G_1を用いてユーザタグ鍵UTKを次のように生成する。関数G_1は、具体例として、擬似ランダム関数、ハッシュ関数、又は暗号化モードECB(Electronic CodeBook)を用いた共通鍵暗号方式の関数である。関数G_1は、ユーザ鍵関数に対応する。
UTK = ((UTK_1,Tb_1),・・・,(UTK_L,Tb_L))
Tb_j = 1 (A_j=*である場合)
Tb_j = 0 (A_j≠*である場合)
UTK_j = G_1(TK,A_j|j)
(ステップS504:保管処理)
生成部520は、ユーザ鍵UKを記憶部591に記憶させる。その結果、ユーザ鍵UKは、記憶部591に保管される。
ユーザ鍵UKは、ユーザデータ鍵UDKとユーザタグ鍵UTKとの組である。ユーザ鍵UKは、属性情報Aが組み込まれた鍵である。
ユーザ鍵UKは、次のように表されてもよい。ユーザ鍵UKの一部をユーザ鍵UKと呼んでもよい。
UK=(UDK,UTK)
(ステップS505:出力処理)
出力部530は、ユーザ鍵UKを出力する。
出力部530は、具体例として、通信装置505を用いて、ユーザ鍵UKを検索操作装置700へ送信する。
図20は、データ登録処理の動作の一例を示すフローチャートである。
データ登録処理は、登録装置600と、データ管理装置800とによって実行される処理である。
(ステップS601:登録鍵受付処理)
受付部610は、登録鍵EKを受け付ける。
受付部610は、具体例として、通信装置605を用いて、登録鍵装置300から登録鍵EKを受信する。受付部610は、登録装置600に入力された登録鍵EKを、入出力インタフェース604を介して受け付けてもよい。
受付部610は、登録鍵EKを記憶部691に記憶させる。その結果、登録鍵EKは、記憶部691に保管される。
受付部610は、本ステップの処理の代わりに、本ステップ中の登録鍵EKをタグ鍵TKと読み替えた処理を実行してもよい。
なお、記憶部691が登録鍵EKを既に保管している場合、受付部610は、本ステップの処理を実行しなくてもよい。
(ステップS602:索引開示鍵受付処理)
受付部610は、索引開示鍵IKを受け付ける。
受付部610は、具体例として、通信装置605を用いて、索引開示鍵装置400から索引開示鍵IKを受信する。受付部610は、登録装置600に入力された索引開示鍵IKを、入出力インタフェース604を介して受け付けてもよい。
受付部610は、索引開示鍵IKを記憶部691に記憶させる。索引開示鍵IKは、記憶部691に記憶される。
なお、記憶部691が索引開示鍵IKを既に保管している場合、受付部610は、本ステップの処理を実行しなくてもよい。
(ステップS603:データ受付処理)
受付部610は、平文Mと属性情報Bとを受け付ける。平文Mは、登録データに対応する。登録データは、データ管理装置800に登録されているデータである。平文Mは、典型的には、暗号化されていないデータである。平文Mには、ファイル名File(M)がメタデータとして含まれる。ファイル名File(M)は、暗号化されていてもよい。属性情報Bは、権限者属性情報に対応する。
受付部610は、具体例として、登録装置600に入力された平文Mと属性情報Bとを入出力インタフェース604を介して受け付ける。受付部610は、平文Mと属性情報Bとをアプリケーションプログラムから受け付けてもよい。
属性情報Bは、権限者の属性情報であり、権限者の各層の属性値を示す。属性情報Bは、属性情報Aと同様に、検索及び復号の権限制御に関わる情報である。
権限者は、平文Mを参照する権限を有する利用者である。つまり、権限者は、検索者の一部である。
属性情報Bは、具体例として、属性情報Aと同様に以下のように表されてもよい。
B = (B_1,・・・,B_L)
(ステップS604:暗号文生成処理)
暗号文データ生成部621は、データ鍵DKと平文Mと属性情報Bとを用いて、暗号文データCを生成する。暗号文データCは、平文Mのメタデータとしてファイル名File(M)を含む。
暗号文データ生成部621は、具体例として、参考文献1で開示された暗号方式、又は、IDベース暗号等の属性ベース暗号を生成する方式を用いて、暗号文データCを生成する。
[参考文献1]国際公開第2019/053788号
(ステップS605:登録キーワード生成処理)
キーワード生成部622は、平文Mに対応する登録キーワードWを生成する。登録キーワードWは、本ステップにおいて生成されたキーワードである。キーワード生成部622は、1つのキーワードを登録キーワードWとして生成してもよいし、複数のキーワードを登録キーワードWとして生成してもよい。
キーワード生成部622は、具体例として、平文Mが名前を含む場合、名前をそのまま1つのキーワードとして生成する。また、キーワード生成部622は、平文Mが文章である場合、その文章に対して形態素解析又は自然言語処理等を行い、その結果を用いて複数のキーワードを生成してもよい。
キーワード生成部622は、登録装置600に入力されたキーワードを、入出力インタフェース604を介して受け付けてもよい。また、キーワード生成部622は、アプリケーションプログラムからキーワードを受け付けてもよい。
以下、簡単のため、キーワード生成部622が1つキーワードを生成したものとする。キーワード生成部622が複数のキーワードを生成した場合、登録装置600は、以下の処理をキーワードの個数分繰り返して実行することにより、暗号化タグCTと、暗号化索引EIと等を生成したキーワードの個数分生成すればよい。
(ステップS606:中間タグ生成処理)
中間タグ生成部623は、タグ鍵TKと属性情報Bと登録キーワードWとを用いて、中間タグMTを生成する。中間タグMTは、タグ鍵TKと属性情報Bと登録キーワードWとを入力として確定的関数を実行した結果得られる確定的データである。確定的関数は、入力値が確定的関数の定義域に属する値であれば、入力値がどのような値であっても、入力値に対応する出力値が常に同じである関数である。確定的関数は、出力値が確率的に定まらない関数である。つまり、同じ登録キーワードWを使って生成された中間タグMTはいつも同じ値となる。確定的データは、確定的関数を実行して得られたデータである。即ち、確定的データは、確率的に定まるデータではない。
中間タグMTは、暗号化タグ生成部627が算出する暗号化タグCTを生成することに用いる一時データに相当する。
中間タグMTは、確定的関数D_1を用いて以下のように生成される。
MT=D_1(TK,B,W)
ここで、参考文献1の例に基づいて、中間タグMTを説明する。
中間タグMTは、属性要素MT_{j,0,W}と、ワイルドカード要素MT_{j,1,W}とを有する。jは、1以上L以下の整数である。ここで、属性要素とワイルドカード要素とは、それぞれL個ある。そのため、中間タグMTは、2L個の要素を持つ。中間タグMTは、1人の権限者に対応する。
中間タグ生成部623は、属性要素MT_{j,0,W}を以下のように算出する。
まず、中間タグ生成部623は、属性値B_jと番号jとを連結して連結値B_j|jを得る。
次に、中間タグ生成部623は、タグ鍵TKと連結値B_j|jとを入力として関数G_1を実行し、関数値B_j^を得る。
次に、中間タグ生成部623は、関数値B_j^と、登録キーワードWとを入力として関数G_2を実行し、関数値B_j^^を得る。
関数値B_j^^が、属性要素MT_{j,0,W}である。
なお、関数G_2は、関数G_1と同様である。関数G_2は、検索クエリ関数に対応する。
中間タグ生成部623は、ワイルドカード要素MT_{j,1,W}を以下のように算出する。
まず、中間タグ生成部623は、ワイルドカード*と、番号jとを連結して連結値*_jを得る。
次に、中間タグ生成部623は、タグ鍵TKと連結値*_jとを入力として関数G_1を実行し、関数値*_j^を得る。
次に、中間タグ生成部623は、関数値*_j^と登録キーワードWとを入力として関数G_2を実行し、関数値*_j^^を得る。関数値*_j^^がワイルドカード要素MT_{j,1,W}である。
中間タグMTは、以下のように表されてもよい。
MT = (MT_{1,0,W},MT_{1,1,W},・・・,MT_{L,0,W},MT_{L,1,W})
MT_{j,0,W} = (G_2(G_1(TK,B_j|j),W)
MT_{j,1,W} = (G_2(G_1(TK,*|j),W)
jは、1以上L以下の整数である。
(ステップS607:索引生成処理)
索引生成部624は、中間タグMTを用いて索引Iを生成する。
索引生成部624は、中間タグMTを入力として確定的関数を実行し、確定的関数の実行結果を索引Iとする。即ち、索引Iは確定的データである。
索引Iは、検索部840が検索処理を実行する前に用いるデータである。索引Iは、暗号化タグCTに含まれている登録キーワードWと、検索クエリSQに含まれている検索キーワードwとが一致する可能性があるか否かを、検索部840がチェックすることに用いるデータである。
索引Iについて、より具体的に説明する。
データ管理装置800は、索引Iと、索引クエリIQとを比較することにより、登録キーワードWと、検索キーワードwとが一致する可能性があるか否かを高速に判断する。ここで、索引クエリIQは、索引クエリ生成部722が検索クエリSQと対応するよう生成したクエリである。索引クエリIQの一部を索引クエリIQと呼んでもよい。登録キーワードWは、暗号化タグCTに含まれている。検索キーワードwは、検索クエリに含まれている。
登録キーワードWと検索キーワードwとが一致する可能性があると判断された場合、暗号化タグ照合部843は、暗号化タグCTと、検索クエリSQとを照合する処理(以下、照合処理)を実行する。一方、登録キーワードWと検索キーワードwとが一致する可能性がないと判断された場合、暗号化タグ照合部843は、照合処理を実行しない。
一般に、照合処理に要する時間は長い。そのため、データ管理装置800が不要な照合処理を実行しないことは望ましい。
データ管理装置800は、照合処理において、データ管理装置800に保管されている全ての暗号化タグCTに対して検索クエリSQを照合しない。その代わりに、データ管理装置800は、索引Iと索引クエリIQとを使うことによって、検索キーワードwと一致する登録キーワードWを含む可能性のある暗号化タグCTを絞りこみ、絞りこんだ暗号化タグCTを用いて照合処理を実行する。そのため、データ管理装置800は、暗号化タグCTを検索することに要する時間を削減することができる。
索引Iは、確定的関数D_2を用いて以下のように生成される。確定的関数D_2は、索引クエリ関数に対応する。
I = D_2(MT) = (I_1,・・・,I_ILEN)
確定的関数D_2は、長さILENのベクトル値を出力する。
例えば、登録キーワードW=東京に対して、確定的関数D_2が内部的に使う確定的関数D_2´によって、中間タグMT = (MT_{1,0,W},MT_{1,1,W},・・・,MT_{L,0,W},MT_{L,1,W})が以下のように変換されたとする。
D_2´(MT_{1,0,東京})=10・・・01・・・1
D_2´(MT_{1,1,東京})=00・・・11・・・0
・・・
D_2´(MT_{L,0,東京})=00・・・01・・・0
D_2´(MT_{L,1,東京})=11・・・10・・・0
このとき、索引Iは、具体例として、以下のように構成される。
I = (I_1,・・・,I_ILEN)
I_1 = (I_10_1,I_11_1,・・・,I_L0_1,I_L1_1)
= (1,0,・・・,0,1)
I_2 = (I_10_2,I_11_2,・・・,I_L0_2,I_L1_2)
= (0,0,・・・,0,1)
・・・
I_ILEN = (I_10_ILEN,I_11_ILEN,・・・,I_L0_ILEN,I_L1_ILEN)
= (0,1,・・・,0,1)
即ち、I_1は、D_2´(MT_{1,0,東京}),・・・,D_2´(MT_{L,1,東京})の1ビット目から構成される。同様に、I_ILENは、D_2´(MT_{1,0,東京}),・・・,D_2´(MT_{L,1,東京})のILENビット目から構成される。
上記の索引Iの構成は、一例である、索引Iは、他の構成でもよい。例えば、I_1は、D_2´(MT_{1,0,東京}),・・・,D_2´(MT_{L,1,東京})の1ビット目と2ビット目とから構成される。同様に、I_ILENはD_2´(MT_{1,0,東京}),・・・,D_2´(MT_{L,1,東京})の(2×ILEN-1)ビット目と(2×ILEN)ビット目から構成される。このように構成してもよい。
中間タグMTが暗号化関数によって確定的かつ安全に生成されている場合、索引Iは、中間タグMTの先頭1ビットからILENビット目までを使って構成されてもよい。即ち、中間タグMTは、以下のように構成されてもよい。
D_2´(MT_{j,b,東京}) = MT_{j,b,東京} = (I_jb_1,・・・,I_jb_ILEN,*_(ILEN+1),・・・))
jは、1以上ILEN以下の整数である。bは、0又は1である。なお、索引生成部624は、この場合において、中間タグMTの(ILEN+1)番目以降のベクトル要素値を無視して索引Iを生成する。
(ステップS608:暗号化索引生成処理)
暗号化索引生成部625は、索引開示鍵IKを用いて索引Iを暗号化することにより、暗号化索引EIを生成する。
暗号化索引生成部625は、AES-CTR(Advanced Encryption Standard-Counter)又はRSA(登録商標)-OAEP(Rivest-Shamir-Adleman-Optimal Asymmetric Encryption Padding)等の確率的暗号化関数を用いて暗号化索引EIを生成する。確率的暗号化は、以前と同じデータを暗号化した場合に、必ずしも同じ暗号化データが生成されないことを言う。
暗号化索引生成部625は、具体例として、確率的暗号化関数Encを用いて、暗号化索引EIを以下のように生成する。
EI=(EI_1,・・・,EI_ILEN)
EI_1 = Enc(IK_1,I_1)
・・・
EI_ILEN = Enc(IK_ILEN,I_ILEN)
(ステップS609:乱数生成処理)
乱数生成部626は、乱数TRを生成する。乱数TRは、暗号化タグ乱数に対応する。乱数TRの少なくとも1つの要素を、暗号化タグ乱数と呼んでもよい。乱数生成部626は、乱数TRをどのように生成してもよい。乱数TRは、乱数の要素から成るベクトルであってもよい。乱数生成部626は、具体例として、乱数TRとして一様乱数の要素から成るベクトルを生成する。
乱数生成部626は、暗号化タグ生成部627で暗号化タグCTを生成するために利用される方式によって、1つの乱数TRを生成してもよい。乱数生成部626は、複数の乱数から成るTRを生成してもよい。
以下、乱数生成部626は、L+1個の乱数から成る乱数TRを生成するものとするTR=(R_0,R_1,・・・,R_L)として説明する。
(ステップS610:暗号化タグ生成処理)
暗号化タグ生成部627は、タグ鍵TKと、中間タグMTと、乱数TRとを用いて暗号化タグCTを生成する。
暗号化タグ生成部627は、具体例として、中間タグMT = (MT_{1,0,W},MT_{1,1,W},・・・,MT_{L,0,W},MT_{L,1,W})に対して、関数G_3と、関数G_4とを用いて、暗号化タグCTを以下のように生成する。関数G_3と、関数G_4とは、確定的関数である。関数G_3は、暗号化タグ関数に対応する。関数G_4は、照合子関数に対応する。以下の式において、VERと、R_0とは、暗号化タグCTに結合されている。
CT = (CT_{1,0,W},CT_{1,1,W},・・・,CT_{L,0,W},CT_{L,1,W},VER,R_0)
CT_{j,0,W} = G_3(G_2(G_1(TK,B_j|j),W)|R_0)+R_j
CT_{j,1,W} = G_3(G_2(G_1(TK,*|j),W)|R_0)+R_j
VER = G_4(R_1+・・・+R_L)
jは、1以上L以下の整数である。VERは、暗号化タグ照合子に対応する。
本明細書において、「+」という記号は、特に断りがない限り、排他的論理和を表す。ただし、+の前後の項が文字ではなく数字である場合、特に断りがない限り、加算を表す。
(ステップS611:登録処理)
登録部630は、暗号文データCと、暗号化タグCTと、暗号化索引EIとの組をデータ管理装置800に登録する。
登録部630は、具体例として、暗号文データCと、暗号化タグCTと、暗号化索引EIとの組を、通信装置605を用いてデータ管理装置800に送信する。
受付部810は、暗号文データCと、暗号化タグCTと、暗号化索引EIとの組を受信し、受信した組を記憶部891に記憶させる。つまり、受付部810は、暗号文データCと、暗号化タグCTと、暗号化索引EIとを互いに対応付けて記憶部891に記憶させる。その結果、暗号文データCと、暗号化タグCTと、暗号化索引EIとの組が記憶部891に保管される。
図21は、登録データベース892の例を示している。
データ管理装置800は、ファイル名と、暗号化データCと、暗号化タグCTと、暗号化索引EIとを互いに対応付けて登録データベース892に登録する。
記憶部891は、登録データベース892を記憶している。
図22は、索引開示処理の一例を示すフローチャートである。
索引開示処理は、データ管理装置800によって実行される処理である。本処理は、索引開示鍵IKの一部であるi番目索引開示鍵IK_iが新しく開示された場合、記憶部891に保管された暗号化索引EIに対して行われる。iは、1以上ILEN以下の整数である。本処理は、IK_iが開示されてから新たにデータ登録処理が行われた場合、ステップS611で記憶部891に保管された直後の暗号化索引EIに対して行われてもよい。
(ステップS801:索引開示鍵受付処理)
受付部810は、索引開示鍵IKのi番目索引開示鍵IK_iを受け付ける。iは、1以上ILEN以下の整数である。
受付部810は、具体例として、通信装置805を用いて、索引開示鍵装置400から索引開示鍵のi番目索引開示鍵IK_iを受信する。受付部810は、データ管理装置800に入力されたi番目索引開示鍵IK_iを、入出力インタフェース804を介して受け付けてもよい。
受付部810は、i番目索引開示鍵IK_iを記憶部891に記憶させる。その結果、i番目索引開示鍵IK_iは、記憶部891に保管される。
なお、記憶部891がi番目索引開示鍵IK_iを既に保管している場合、受付部810は、本ステップの処理を実行しなくてもよい。
(ステップS802:暗号化索引受付処理)
受付部810は、暗号化索引EIを受け付ける。
受付部810は、具体例として、データ管理装置800に入力された暗号化索引EIを、入出力インタフェース804を介して受け付ける。受付部810は、暗号化索引EIをアプリケーションプログラムから受け付けてもよい。
記憶部891に保管された暗号化索引EI、又はステップS611で記憶部891に保管された直後の暗号化索引EI等が、本ステップにおける暗号化索引EIに該当する。
なお、記憶部891が暗号化索引EIを既に保管している場合、受付部810は、本ステップの処理を実行しなくてもよい。
(ステップS803:復号処理)
暗号化索引復号部821は、i番目索引開示鍵IK_iを用いてi番目暗号化索引EI_iを復号することにより、i番目索引I_iを復元する。i番目暗号化索引EI_iは、暗号化索引EIの一部である。i番目索引I_iは、索引Iの一部である。
即ち、暗号化索引復号部821は、復号関数Decを用いて、以下のようにしてI_iを復元する。復号関数Decは、確率的暗号化関数Encに対応する関数である。
I_i = Dec(IK_i,EI_i)
(ステップS804:登録処理)
登録部830は、i番目索引I_iを暗号化索引EIと対応付けて登録データベース892に登録する。
図23は、索引開示後データベース893の例を示している。i=1として索引開示後データベース893を説明する。
データ管理装置800は、抽出された暗号化索引EIと、復元された1番目索引I_1とを対応付けて登録する。登録データベース892は、索引開示後データベース893のように更新される。
本図の索引開示後データベース893には、1番目暗号化索引EI_1が登録されていない。しかし、登録部830は、登録データベース892から1番目暗号化索引EI_1を削除しなくてもよい。
記憶部891は、索引開示後データベース893を記憶している。
なお、データ管理装置800は、i番目索引I_iの列を登録する際に高速索引技術を用いることにより、データ検索処理を高速化することができる。高速索引技術は、具体例として、二分探索木又はB-TREEである。
(ステップS805:更新処理)
登録部830は、記憶部891が記憶している索引開示位置情報Posを更新する。索引開示位置情報Posは、現在公開されている索引開示鍵に対応する索引Iの位置を示す情報である。索引開示位置情報Posは、典型的には、秘匿検索システム100が稼働を開始した直後に作られるデータである。ここで、索引開示位置情報Posは集合であり、索引開示位置情報Posの初期値は空集合である。索引開示鍵IKは、典型的には、登録装置600により公開される。
例えば、初めて1番目索引開示鍵IK_1が公開されたとき、登録部830は、Posに1を追加する。即ち、登録部830は、索引開示位置情報をPos={1}と更新する。その後で2番目索引開示鍵IK_2が公開されたとき、登録部830は、Posに2を追加する。即ち、登録部830は、索引開示位置情報をPos={1,2}と更新する。
図24は、検索処理の一例を示すフローチャートである。
検索処理は、検索操作装置700によって実行される処理である。
(ステップS701:ユーザ鍵受付処理)
受付部710は、ユーザ鍵UKを受け付ける。
受付部710は、具体例として、通信装置705を用いて、ユーザ鍵装置500からユーザ鍵UKを受信する。受付部710は、検索操作装置700に入力されたユーザ鍵UKを、入出力インタフェース704を介して受け付けてもよい。
受付部710は、ユーザ鍵UKを記憶部791に記憶させる。その結果、ユーザ鍵UKは、記憶部791に保管される。
ユーザ鍵UKは、ユーザデータ鍵UDKと、ユーザタグ鍵UTKとを含んでいる。
なお、記憶部791がユーザ鍵UKを既に保管している場合、受付部710は、本ステップの処理を実行しなくてもよい。
(ステップS702:検索キーワード受付処理)
受付部710は、検索キーワードwを受け付ける。
受付部710は、具体例として、検索操作装置700に入力された検索キーワードwを入出力インタフェース704を介して受け付ける。受付部710は、検索キーワードwをアプリケーションプログラムから受け付けてもよい。
(ステップS703:検索クエリ生成処理)
検索クエリ生成部721は、ユーザタグ鍵UTKと検索キーワードwとを用いて、検索クエリSQを生成する。
検索クエリ生成部721は、具体例として、UTK = ((UTK_1,Tb_1),・・・,(UTK_L,Tb_L))と、関数G_2とを用いて、検索クエリSQを次のように生成する。
SQ = ((SQ_1,Qb_1),・・・,(SQ_L,Qb_L))
Qb_j = Tb_j
SQ_j = G_2(UTK_j,w)
jは、1以上L以下の整数である。
(ステップS704:索引クエリ生成処理)
索引クエリ生成部722は、検索クエリSQを用いて、索引クエリIQを生成する。索引クエリIQは、検索クエリSQを入力として確定的関数D_2を実行した結果得られる確定的データである。索引クエリIQは、記憶部891に保管された索引Iを検索する際に用いられるデータである。
検索部840は、暗号化タグCTと、検索クエリSQとに対して照合処理を行う前に、索引クエリIQを用いて索引Iを検索する。検索部840は、登録キーワードW及び検索キーワードwと、属性情報A及び属性情報Bとがそれぞれ一致する可能性があるか否かを確認する。ここで、登録キーワードWと、属性情報Aとの情報は、暗号化タグCTに含まれている。検索キーワードwと、属性情報Bとの情報は、索引クエリIQに含まれている。
検索部840が登録キーワードW及び検索キーワードwと、属性情報A及び属性情報Bとがそれぞれ一致する可能性があると判断した場合、暗号化タグ照合部843は、暗号化タグCTと検索クエリSQとを用いて照合処理を行う。一方、それ以外の場合、暗号化タグ照合部843は、照合処理を行わない。
索引クエリIQは、確定的関数D_2を用いて以下のように生成される。
IQ = D_2(SQ) = (IQ_1,・・・,IQ_ILEN)
具体例として、検索キーワードwを東京としたとき、索引クエリIQは、検索クエリSQと、確定的関数D_2とを用いて以下のように構成される。MT_{j,Qb_j,w}は、中間タグである。検索操作装置700における中間タグは、登録装置600における中間タグと異なってもよい。
D_2´(MT_{1,Qb_1,東京}) = D_2´(SQ_1)
・・・
D_2´(MT_{L,Qb_L,東京}) = D_2´(SQ_L)
かつ
IQ_j = (IQ_1_j,・・・,IQ_L_j)
= (I_1(Qb_1)_j,・・・,I_L(Qb_L)_j)
jは、1以上L以下の整数である。
Qb_1=・・・=Qb_L=0である場合、上記の例は、以下のように表される。
D_2´(SQ_1)=D_2´(MT_{1,0,東京})=1・・・01・・・1
・・・
D_2´(SQ_L)=D_2´(MT_{L,0,東京})=0・・・01・・・0
かつ
I_10_1 = IQ_1_1 = 1
・・・
I_L0_1 = IQ_L_1 = 0
・・・
I_10_ILEN = IQ_1_ILEN = 0
・・・
I_L0_ILEN = IQ_L_ILEN = 0
ここで、I_1[Qb_1,・・・,Qb_L]は、以下のように定義される。
I_1[Qb_1,・・・,Qb_L] = (I_1(Qb_1)_1,・・・,I_L(Qb_1)_1)
上記の例において、I_1[Qb_1,・・・,Qb_L]は、I_1[0,・・・,0]=(1,・・・,0)と表せる。
登録キーワードW及び検索キーワードwと、属性情報A及び属性情報Bとがそれぞれ一致する場合、登録キーワードWの1番目索引I_1をQb_1,・・・,Qb_Lの観点から抽出したもの(即ち、I_1[Qb_1,・・・,Qb_L])の値と、IQ_1の値とは、必ず一致する。
この場合、同様に、1以上ILEN以下の整数jについても、登録キーワードWのj番目索引I_jに対して、I_j[Qb_1,・・・,Qb_L]=IQ_jとなる。
上記の対偶より、I_j[Qb_1,・・・,Qb_L]≠IQ_jであれば、登録キーワードW及び検索キーワードwと、属性情報A及び属性情報Bとの少なくとも一方が一致しないということが言える。
なお、登録キーワードW及び検索キーワードwと、属性情報A及び属性情報Bとの少なくとも一方が一致しない場合において、I_j[Qb_1,・・・,Qb_L]=IQ_jとなる可能性はある。しかし、その可能性は十分に低い。
よって、上記の事実を使うと、索引照合部841は、次のように簡易な一致確認をすることができる。索引照合部841は、1以上k以下である全てのjに対して、I_j[Qb_1,・・・,Qb_L]=IQ_jが成り立つか否かをチェックする。kは、索引開示位置情報Posの要素数である。
全てのjにおいてこの式が成り立つ場合、登録キーワードW及び検索キーワードwと、属性情報A及び属性情報Bとがそれぞれ一致する可能性がある。そのため、この場合、検索部840は、暗号化タグCTと検索クエリSQとを照合する。
一方、全てのjに対してこの式が成り立たない場合、登録キーワードW及び検索キーワードwと、属性情報A及び属性情報Bとの少なくとも一方は一致しない。そのため、検索部840は、暗号化タグCTと検索クエリSQとを照合しない。
検索部840は、このようにして、照合する暗号化タグCTを絞ることができる。
(ステップS705:クエリ送信処理)
要求部730は、通信装置705を用いて、検索クエリSQと索引クエリIQとをデータ管理装置800へ送信する。
(ステップS706:結果受信処理)
要求部730は、通信装置705が暗号化検索結果{C}をデータ管理装置800から受信することを待つ。要求部730が暗号化検索結果{C}を受信することを待つ最大時間は、どのような値であってもよい。
通信装置705が暗号化検索結果{C}を受信した場合、検索操作装置700は、ステップS707に進む。それ以外の場合、検索操作装置700は、ステップS708に進む。
暗号化検索結果{C}は、データ管理装置800が検索処理を実行した結果ヒットした少なくとも1つの暗号文データCから成る集合である。
(ステップS707:復号処理)
復号部740は、ユーザデータ鍵UDKを用いて、暗号化検索結果{C}に含まれる各暗号文データCから平文Mを復号する。
本ステップを実行することによって得られた少なくとも1つの平文Mから成る集合を、検索結果{M}とする。
なお、暗号化検索結果{C}に暗号化データCが含まれない場合、つまり、データ管理装置800が暗号化データCを抽出することができなかった場合、復号部740は、本ステップの処理を実行する必要はない。
(ステップS708:出力処理)
出力部750は、検索結果{M}を出力する。
出力部750は、具体例として、入出力インタフェース704を介して、ディスプレイに検索結果{M}を表示する。
検索結果{M}が得られなかった場合、出力部750は、具体例として、検索された平文Mが無い、もしくは復号できなかった旨のメッセージを表示する。検索結果{M}が得られなかった場合は、登録キーワードW及び検索キーワードwと、属性情報A及び属性情報Bとの少なくとも一方が一致する可能性がない場合、検索された暗号文データCが無い場合、又は暗号文データCから平文Mを復号できなかった場合である。
図25は、データ検索処理の動作の一例を示すフローチャートである。
データ検索処理は、データ管理装置800によって実行される処理である。
(ステップS821:クエリ受付処理)
受付部810は、通信装置805を用いて、検索クエリSQと索引クエリIQとを検索操作装置700から受信する。
(ステップS822:索引群探索処理)
索引照合部841は、記憶部891から公開索引群{I′}と、索引開示位置情報Posとを読み出す。{I′}は、少なくとも1つの索引Iから成る集合である。{I′}の各要素をIi′と表す。Ii′と暗号化索引EIiとは、暗号化タグCTiにそれぞれ対応する。暗号化タグCTiは、暗号化タグ生成部627が複数の互いに異なる登録キーワードWを用いて複数の暗号化タグを生成し、各暗号化タグに通し番号を割り当てた場合における、i番目の暗号化タグである。各公開索引Ii′は、暗号化索引を復号した値から成る。
その後、索引照合部841は、索引開示位置情報Posに対応する部分索引クエリIQ′を抽出し、公開索引群{I′}と一致確認を行う。部分索引クエリIQ′は、索引クエリIQの一部である。
ここで、索引開示位置情報Posは、k個の要素を持っているとする。即ち、k個の索引開示鍵が公開されている状況である。ここで、Pos={i1,・・・,ik}とする。i1,・・・,ikは、1以上ILEN以下の整数とする。また、i1<・・・<ikとする。
索引照合部841は、公開索引群{I′}の各Ii′に対して、検索クエリSQに含まれるQb_1,・・・,Qb_Lを用いて、1以上k以下の全ての整数jについて以下の式が成立するか否かを確認する。
Ii′_j[Qb_1,・・・,Qb_L] = IQ_j
この式が全てのjに対して成立する場合、公開索引Ii′と対応づけて記憶部891に保管されている暗号化タグCTiが、次のステップS823にて抽出される。この場合、データ管理装置800は、ステップS823に進む。
それ以外の場合、データ管理装置800は、ステップS826に進む。
ここで、ステップS804において、二分探索木又はB-TREE等の高速索引技術が公開索引群{I′}に対して適用されている場合、本ステップの処理は、公開索引群{I′}の個数のログオーダーで確認することができる。即ち、索引照合部841は、より高速に処理することができる。
説明を簡単にするために、具体例として、k=2とし、i1=1,i2=2とする。即ち、索引として2ビット開示されている状況を説明する。本例において、各公開索引Ii′は、各暗号化索引EIiの1番目と2番目との暗号化索引である。
このとき、部分索引クエリIQ′は、次のように索引開示位置情報Posから抽出される。
IQ′=(IQ_1,IQ_2)
IQ_1 = (IQ_1_1,・・・,IQ_L_1)
IQ_2 = (IQ_1_2,・・・,IQ_L_2)
即ち、IQ′は、索引クエリIQの1番目の要素と2番目の要素とを抽出したものである。
また、公開索引群{I′}は、N個の要素を持つ集合とする。このとき、記憶部891に保管されている暗号化タグCTと暗号化索引EIとの要素数もN個である。
ここで、公開索引群{I′}を{I1′,・・・,IN′}と表す。このとき各公開索引Ii′は以下の値で構成されている。索引Ii′は、部分登録キーワード索引に対応する。
Ii′ = (Ii′_1,Ii′_2)
Ii′_1 = (Ii′_10_1,Ii′_11_1,・・・,Ii′_L0_1,Ii′_L1_1)
Ii′_2 = (Ii′_10_2,Ii′_11_2,・・・,Ii′_L0_2,Ii′_L1_2)
iは、1以上N以下の整数である。
検索キーワードw及び登録キーワードWと、属性情報A及び属性情報Bとが共に一致する場合、以下が共に成立する。
Ii′_1[Qb_1,・・・,Qb_L] = IQ_1
Ii′_2[Qb_1,・・・,Qb_L] = IQ_2
ここで、Qb_1,・・・,Qb_Lは、検索クエリSQに含まれる値である。
ここで、前記の例を用いると、以下のようになる。
Ii′_1[0,・・・,0] = IQ_1 = (1,・・・,0)
Ii′_2[0,・・・,0] = IQ_2 = (0,・・・,0)
(ステップS823:暗号化タグ抽出処理)
暗号化タグ抽出部842は、ステップS822において部分索引クエリIQ′と一致した公開索引群{Ii′}に対応づけて保管されている暗号化タグ群{CTi}を抽出する。
ここで、暗号化タグ群の要素数をnとする。即ち、暗号化タグ群{CTi}={CT1,・・・,CTn}である。
(ステップS824:照合処理)
暗号化タグ照合部843は、ステップS823で抽出された暗号化タグ群{CTi}={CT1,・・・,CTn}と、検索クエリSQとを照合する。
暗号化タグ照合部843が検索クエリSQと暗号化タグCTiとを照合することができた場合、データ管理装置800は、ステップS825に進む。それ以外の場合、データ管理装置800は、ステップS826に進む。
暗号化タグ照合部843は、具体例として、検索クエリSQ=((SQ_1,Qb_1),・・・,(SQ_L,Qb_L))と、各暗号化タグCTiとを、以下のように照合する。
暗号化タグ照合部843は、暗号化タグCTi=(CTi_{1,0,W},CTi_{1,1,W},・・・,CTi_{L,0,W},CTi_{L,1,W},VER,R_0)に対して、関数G_3と関数G_4とを用いて、R_1′,・・・,R_L′と、VER′とを次のように算出する。
R_j′ = CTi_{j,Qb_j,W}+G_3(SQ_j|R_0)
VER′ = G_4(R_1′+・・・+R_L′)
jは、1以上L以下の整数である。
なお、VERとVER′とが等しい場合、暗号化タグ照合部843は、登録キーワードWと、検索キーワードwとが一致していると判定する。この場合、登録キーワードWと、検索キーワードwとが一致している可能性は高い。登録キーワードWは、暗号化タグCTiに含まれている。検索キーワードwは、検索クエリSQに含まれている。
(ステップS825:データ抽出処理)
暗号文データ抽出部844は、暗号文データ群{CTi′}を抽出する。暗号文データ群{CTi′}は、ステップS824において検索クエリSQと一致した暗号化タグから成る集合である。この暗号文データ群{CTi′}を暗号化検索結果{C}と呼ぶ。
(ステップS826:出力処理)
ステップS825において暗号化検索結果{C}が抽出された場合、出力部850は、通信装置805を用いて、ステップS825で抽出された暗号化検索結果{C}を検索操作装置700へ送信する。
それ以外の場合、出力部850は、何もせずに本フローチャートの処理を終了してもよく、検索結果{C}がないことを示す情報を検索操作装置700へ送信してもよい。
図26は、データ削除処理の動作の一例を示すフローチャートである。
データ削除処理は、登録装置600又は検索操作装置700と、データ管理装置800とによって実行される処理である。
(ステップS901:受付処理)
受付部610又は受付部710は、削除するファイルの名称を削除ファイル名として受け付ける。削除ファイル名は、具体例として、検索操作処理によって得られる。
受付部610が削除ファイル名を受け付ける場合、受付部610は、具体例として、登録装置600に入力された削除ファイル名を、入出力インタフェース604を介して受け付ける。
受付部710が削除ファイル名を受け付ける場合、受付部710は、検索操作装置700に入力された削除ファイル名を、入出力インタフェース704を介して受け付ける。受付部610又は受付部710は、削除ファイル名をアプリケーションプログラムから受け付けてもよい。
(ステップS902:送信処理)
受付部610が削除ファイル名を受け付けた場合、出力部640は、通信装置605を用いて、削除ファイル名をデータ管理装置800へ送信する。
受付部710が削除ファイル名を受け付けた場合、出力部750は、通信装置705を用いて、削除ファイル名をデータ管理装置800へ送信する。
(ステップS903:削除ファイル名受信処理)
受付部810は、通信装置805を用いて、登録装置600もしくは検索操作装置700から削除ファイル名を受信する。
(ステップS904:削除処理)
受付部810は、削除ファイル名に対応する暗号化データCと暗号化タグCTと暗号化索引EIと索引Iとを記憶部891から削除する。
***実施の形態1の効果の説明***
以上のように、本実施の形態に係る秘匿検索システム100によれば、マルチユーザ型の秘匿検索を、公開鍵暗号技術を用いずに共通鍵暗号技術を用いて実現することができる。
登録装置600は、乱数を使ってランダム化する前の暗号化タグに対して確定的な一方向性関数を適用することにより、マルチユーザ型の共通鍵方式によって索引を生成する。索引は、登録データ及び検索データと、登録データに組み込まれた属性情報及び検索データに組み込まれた属性情報とがそれぞれ一致する可能性があるか否かを、秘匿検索を用いずに高速に確認することに用いられる。なお、この索引からキーワードと、属性情報に関する情報と等を抜き出すことは困難である。
検索操作装置700は、部分的に開示された索引開示鍵に対応する索引クエリを、検索者に対応するユーザ鍵を使って生成する。
データ管理装置800は、検索対象とする暗号化タグを、索引と索引クエリとを使って絞り込む。そのため、データ管理装置800は、索引を使うことにより不要な秘匿検索の少なくとも一部を実行せずに済む。
これらのことにより、秘匿検索システム100は、マルチユーザ型の共通鍵方式における検索処理を比較的高速に実行することができる。
また、登録装置600は、この索引を複数のブロックに分け、それぞれを異なる鍵を用いて暗号化して保管する。登録装置600が必要に応じてこの暗号化に用いた鍵を徐々に公開することにより、段階的に索引に関わる処理を高速化することができる。
***他の構成***
<変形例1>
本明細書に記載されている少なくとも2つの装置は、1つのコンピュータから成ってもよい。
<変形例2>
データ管理装置800は、公開されている索引開示鍵IKを全て使用しなくてもよい。本変形例において、索引開示位置情報Posは、データ管理装置800が用いた索引開示鍵IKに対応する索引Iの位置を示す情報のみから成る。
<変形例3>
図27は、本変形例に係るマスター鍵装置200のハードウェア構成例を示している。
マスター鍵装置200は、プロセッサ201とメモリ202と補助記憶装置203との少なくとも1つに代えて、処理回路209を備える。
処理回路209は、受付部210と生成部220と出力部230と記憶部291との少なくとも一部を実現するハードウェアである。
処理回路209は、専用のハードウェアであってもよく、メモリ202に格納されるプログラムを実行するプロセッサ201であってもよい。
処理回路209が専用のハードウェアである場合、処理回路209は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ASIC(ASICはApplication Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)又はこれらの組み合わせである。
マスター鍵装置200は、処理回路209を代替する複数の処理回路を備えてもよい。複数の処理回路は、処理回路209の役割を分担する。
マスター鍵装置200において、一部の機能が専用のハードウェアで実現されて、残りの機能がソフトウェア又はファームウェアで実現されてもよい。
処理回路209は、ハードウェア、ソフトウェア、ファームウェア、又はこれらの組み合わせにより実現される。
プロセッサ201とメモリ202と補助記憶装置203と処理回路209とを、総称して「プロセッシングサーキットリー」という。つまり、マスター鍵装置200の各機能構成要素の機能は、プロセッシングサーキットリーにより実現される。
<変形例4>
図28は、本変形例に係る登録鍵装置300のハードウェア構成例を示している。
登録鍵装置300は、プロセッサ301とメモリ302と補助記憶装置303との少なくとも1つに代えて、処理回路309を備える。処理回路309は、処理回路209と同様である。
処理回路309は、受付部310と生成部320と出力部330と記憶部391との少なくとも一部を実現するハードウェアである。
登録鍵装置300の各機能構成要素の機能は、プロセッシングサーキットリーにより実現される。
<変形例5>
図29は、本変形例に係る索引開示鍵装置400のハードウェア構成例を示している。
索引開示鍵装置400は、プロセッサ401とメモリ402と補助記憶装置403との少なくとも1つに代えて、処理回路409を備える。処理回路409は、処理回路209と同様である。
処理回路409は、受付部410と生成部420と出力部430と記憶部491との少なくとも一部を実現するハードウェアである。
索引開示鍵装置400の各機能構成要素の機能は、プロセッシングサーキットリーにより実現される。
<変形例6>
図30は、本変形例に係るユーザ鍵装置500のハードウェア構成例を示している。
ユーザ鍵装置500は、プロセッサ501とメモリ502と補助記憶装置503との少なくとも1つに代えて、処理回路509を備える。処理回路509は、処理回路209と同様である。
処理回路509は、受付部510と生成部520と出力部530と記憶部591とを実現するハードウェアである。
ユーザ鍵装置500の各機能構成要素の機能は、プロセッシングサーキットリーにより実現される。
<変形例7>
図31は、本変形例に係る登録装置600のハードウェア構成例を示している。
登録装置600は、プロセッサ601とメモリ602と補助記憶装置603との少なくとも1つに代えて、処理回路609を備える。処理回路609は、処理回路209と同様である。
処理回路609は、受付部610と生成部620と登録部630と出力部640と記憶部691との少なくとも一部を実現するハードウェアである。
登録装置600の各機能構成要素の機能は、プロセッシングサーキットリーにより実現される。
<変形例8>
図32は、本変形例に係る検索操作装置700のハードウェア構成例を示している。
検索操作装置700は、プロセッサ701とメモリ702と補助記憶装置703との少なくとも1つに代えて、処理回路709を備える。処理回路709は、処理回路209と同様である。
処理回路709は、受付部710と生成部720と要求部730と復号部740と出力部750と記憶部791との少なくとも一部を実現するハードウェアである。
検索操作装置700の各機能構成要素の機能は、プロセッシングサーキットリーにより実現される。
<変形例9>
図33は、本変形例に係るデータ管理装置800のハードウェア構成例を示している。
データ管理装置800は、プロセッサ801とメモリ802と補助記憶装置803との少なくとも1つに代えて、処理回路809を備える。処理回路809は、処理回路209と同様である。
処理回路809は、受付部810と復号部820と登録部830と検索部840と出力部850と記憶部891との少なくとも一部を実現するハードウェアである。
データ管理装置800の各機能構成要素の機能は、プロセッシングサーキットリーにより実現される。
***他の実施の形態***
実施の形態1について説明したが、本実施の形態のうち、複数の部分を組み合わせて実施しても構わない。あるいは、本実施の形態のうち、1つの部分を実施しても構わない。その他、本実施の形態は、必要に応じて種々の変更がなされても構わず、全体としてあるいは部分的に、どのように組み合わせて実施されても構わない。
なお、上述した実施の形態は、本質的に好ましい例示であって、本開示と、その適用物と、用途の範囲とを制限することを意図するものではない。フローチャート等を用いて説明した手順は、適宜変更してもよい。
100 秘匿検索システム、101 ネットワーク、200 マスター鍵装置、201 プロセッサ、202 メモリ、203 補助記憶装置、204 入出力インタフェース、205 通信装置、209 処理回路、210 受付部、220 生成部、230 出力部、291 記憶部、300 登録鍵装置、301 プロセッサ、302 メモリ、303 補助記憶装置、304 入出力インタフェース、305 通信装置、309 処理回路、310 受付部、320 生成部、330 出力部、391 記憶部、400 索引開示鍵装置、401 プロセッサ、402 メモリ、403 補助記憶装置、404 入出力インタフェース、405 通信装置、409 処理回路、410 受付部、420 生成部、421 索引開示鍵生成部、430 出力部、491 記憶部、500 ユーザ鍵装置、501 プロセッサ、502 メモリ、503 補助記憶装置、504 入出力インタフェース、505 通信装置、509 処理回路、510 受付部、520 生成部、521 ユーザ鍵生成部、530 出力部、591 記憶部、600 登録装置、601 プロセッサ、602 メモリ、603 補助記憶装置、604 入出力インタフェース、605 通信装置、609 処理回路、610 受付部、620 生成部、621 暗号文データ生成部、622 キーワード生成部、623 中間タグ生成部、624 索引生成部、625 暗号化索引生成部、626 乱数生成部、627 暗号化タグ生成部、630 登録部、640 出力部、691 記憶部、700 検索操作装置、701 プロセッサ、702 メモリ、703 補助記憶装置、704 入出力インタフェース、705 通信装置、709 処理回路、710 受付部、720 生成部、721 検索クエリ生成部、722 索引クエリ生成部、730 要求部、740 復号部、750 出力部、791 記憶部、800 データ管理装置、801 プロセッサ、802 メモリ、803 補助記憶装置、804 入出力インタフェース、805 通信装置、809 処理回路、810 受付部、820 復号部、821 暗号化索引復号部、830 登録部、840 検索部、841 索引照合部、842 暗号化タグ抽出部、843 暗号化タグ照合部、844 暗号文データ抽出部、850 出力部、891 記憶部、892 登録データベース、893 索引開示後データベース、CT 暗号化タグ、DK データ鍵、EK 登録鍵、EI 暗号化索引、I 索引、IK 索引開示鍵、ILEN 索引長、IQ 索引クエリ、IQ′ 部分索引クエリ、M 平文、MK マスター鍵、MT 中間タグ、Pos 索引開示位置情報、SQ 検索クエリ、TK タグ鍵、TR 乱数、UDK ユーザデータ鍵、UK ユーザ鍵、UTK ユーザタグ鍵、w 検索キーワード、W 登録キーワード。

Claims (10)

  1. 登録キーワードと、前記登録キーワードを検索する権限を有する権限者が有すべき属性を示す権限者属性情報と、前記登録キーワードに対応する登録キーワード索引を暗号化する索引開示鍵とを記憶している登録データ記憶部と、
    前記登録キーワードと、前記権限者属性情報と、前記登録キーワードを検索する検索者が有する属性を示す検索者属性情報が組み込まれたユーザ鍵を生成するユーザ鍵関数と、前記ユーザ鍵が組み込まれた検索クエリであって、前記検索者が前記登録キーワードを検索する検索キーワードに対応する検索クエリを生成する検索クエリ関数と、前記検索クエリが組み込まれた索引クエリであって、前記登録キーワード索引を検索する索引クエリを生成する索引クエリ関数とを用いて前記登録キーワード索引を生成する索引生成部と、
    前記索引開示鍵を用いて前記登録キーワード索引を暗号化することにより暗号化索引を生成する暗号化索引生成部と
    を備える登録装置を備える秘匿検索システム。
  2. 前記登録装置は、乱数を暗号化タグ乱数として生成する乱数生成部と、前記権限者属性情報と、前記登録キーワードと、前記ユーザ鍵関数と、前記検索クエリ関数とを用いて、前記登録キーワードに対応する中間タグを生成する中間タグ生成部と、前記中間タグと、前記暗号化タグ乱数と、前記登録キーワードが組み込まれた暗号化タグを生成する暗号化タグ関数とを用いて前記暗号化タグを生成する暗号化タグ生成部とを備え、
    前記索引生成部は、前記中間タグを用いて前記登録キーワード索引を生成する請求項1に記載の秘匿検索システム。
  3. 前記検索クエリを記憶している管理データ記憶部と、
    前記暗号化タグを受け付け、かつ、前記暗号化タグを管理データ記憶部に記憶させる管理データ受付部と
    を備えるデータ管理装置を備え、
    前記暗号化タグ生成部は、前記登録キーワードと、前記暗号化タグ乱数と、前記暗号化タグ関数と、暗号化タグに対応する暗号化タグ照合子を生成する照合子関数とを用いて前記暗号化タグ照合子を生成し、かつ、前記暗号化タグ乱数と、前記暗号化タグ照合子を前記暗号化タグに結合し、
    前記登録装置は、前記暗号化タグを前記データ管理装置に出力する登録データ出力部を備え、
    前記データ管理装置は、前記暗号化タグと、前記検索クエリと、前記暗号化タグに結合された前記暗号化タグ乱数と、前記暗号化タグ関数と、前記照合子関数とを用いて、前記検索キーワードが前記登録キーワードと一致しているか否かを判定するための判定用照合子を生成し、かつ、前記判定用照合子と、前記暗号化タグに結合された暗号化タグ照合子とが等しい場合に、前記登録キーワードと、前記検索キーワードとが一致していると判定する照合処理を実行する暗号化タグ照合部を備える請求項2に記載の秘匿検索システム。
  4. 前記索引開示鍵は、前記暗号化索引の少なくとも一部を復号することができる鍵であり、
    前記管理データ記憶部は、前記索引開示鍵と、前記索引クエリとを記憶しており、
    前記登録データ出力部は、前記暗号化索引を前記データ管理装置に出力し、
    前記管理データ受付部は、前記暗号化索引を受け付け、かつ、前記暗号化索引を前記管理データ記憶部に記憶させ、
    前記データ管理装置は、前記索引開示鍵を用いて前記暗号化索引を復号することによって前記登録キーワード索引の少なくとも一部である部分登録キーワード索引を生成する暗号化索引復号部と、前記索引クエリに含まれ、かつ、前記部分登録キーワード索引に対応する部分索引クエリと、前記部分登録キーワード索引とが一致している場合に、前記登録キーワード及び前記検索キーワードと、前記権限者属性情報及び前記検索者属性情報とがそれぞれ一致している可能性があると判定する索引照合部とを備え、
    前記暗号化タグ照合部は、前記登録キーワード及び前記検索キーワードと、権限者属性情報及び検索者属性情報とがそれぞれ一致している可能性があると前記索引照合部が判定した場合に、前記照合処理を実行する請求項3に記載の秘匿検索システム。
  5. 前記管理データ記憶部は、前記暗号化索引の前記少なくとも一部に対応する位置を示す索引開示位置情報を記憶しており、
    前記索引照合部は、前記索引クエリの内、前記索引開示位置情報に対応する部分を前記部分索引クエリとする請求項4に記載の秘匿検索システム。
  6. 前記ユーザ鍵と、前記検索キーワードとを記憶している検索データ記憶部と、
    前記ユーザ鍵と、前記検索キーワードと、前記検索クエリ関数とを用いて前記検索クエリを生成する検索クエリ生成部と、
    前記検索クエリと、前記索引クエリ関数とを用いて前記索引クエリを生成する索引クエリ生成部と、
    前記検索クエリと、前記索引クエリとを前記データ管理装置に出力する検索データ出力部と
    を備える検索操作装置を備え、
    前記管理データ受付部は、前記検索クエリと、前記索引クエリとを受け付け、かつ、前記検索クエリと、前記索引クエリとを前記管理データ記憶部に記憶させる請求項4又は5に記載の秘匿検索システム。
  7. 前記検索者属性情報を記憶しているユーザデータ記憶部と、
    前記検索者属性情報と、前記ユーザ鍵関数とを用いて前記ユーザ鍵を生成するユーザ鍵生成部と、
    前記ユーザ鍵を前記検索操作装置に出力するユーザデータ出力部と
    を備えるユーザ鍵装置を備え、
    前記検索操作装置は、前記ユーザ鍵を受け付け、かつ、前記ユーザ鍵を前記検索データ記憶部に記憶させる検索データ受付部を備える請求項6に記載の秘匿検索システム。
  8. 前記権限者属性情報は、前記検索者属性情報に含まれる属性がどのようなものであっても前記検索者属性情報に対応する検索者に前記登録キーワードを検索することを許可することを示すワイルドカードを含んでおり、
    前記中間タグ生成部は、前記ワイルドカードを前記中間タグに組み込む請求項2から7のいずれか1項に記載の秘匿検索システム。
  9. コンピュータである登録装置が備える登録データ記憶部が、登録キーワードと、前記登録キーワードを検索する権限を有する権限者が有すべき属性を示す権限者属性情報と、前記登録キーワードに対応する登録キーワード索引を暗号化する索引開示鍵とを記憶しており、
    前記登録装置が備える索引生成部が、前記登録キーワードと、前記権限者属性情報と、前記登録キーワードを検索する検索者が有する属性を示す検索者属性情報が組み込まれたユーザ鍵を生成するユーザ鍵関数と、前記ユーザ鍵が組み込まれた検索クエリであって、前記検索者が前記登録キーワードを検索する検索キーワードに対応する検索クエリを生成する検索クエリ関数と、前記検索クエリが組み込まれた索引クエリであって、前記登録キーワード索引を検索する索引クエリを生成する索引クエリ関数とを用いて前記登録キーワード索引を生成し、
    前記登録装置が備える暗号化索引生成部が、前記索引開示鍵を用いて前記登録キーワード索引を暗号化することにより暗号化索引を生成する秘匿検索方法。
  10. 登録キーワードと、前記登録キーワードを検索する権限を有する権限者が有すべき属性を示す権限者属性情報と、前記登録キーワードに対応する登録キーワード索引を暗号化する索引開示鍵とを記憶しているコンピュータに、
    前記登録キーワードと、前記権限者属性情報と、前記登録キーワードを検索する検索者が有する属性を示す検索者属性情報が組み込まれたユーザ鍵を生成するユーザ鍵関数と、前記ユーザ鍵が組み込まれた検索クエリであって、前記検索者が前記登録キーワードを検索する検索キーワードに対応する検索クエリを生成する検索クエリ関数と、前記検索クエリが組み込まれた索引クエリであって、前記登録キーワード索引を検索する索引クエリを生成する索引クエリ関数とを用いて前記登録キーワード索引を生成させ、
    前記索引開示鍵を用いて前記登録キーワード索引を暗号化することにより暗号化索引を生成させる秘匿検索プログラム。
JP2021564626A 2020-01-14 2020-01-14 秘匿検索システム、秘匿検索方法、及び、秘匿検索プログラム Active JP7016458B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2020/000845 WO2021144834A1 (ja) 2020-01-14 2020-01-14 秘匿検索システム、秘匿検索方法、及び、秘匿検索プログラム

Publications (2)

Publication Number Publication Date
JPWO2021144834A1 JPWO2021144834A1 (ja) 2021-07-22
JP7016458B2 true JP7016458B2 (ja) 2022-02-04

Family

ID=76863898

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021564626A Active JP7016458B2 (ja) 2020-01-14 2020-01-14 秘匿検索システム、秘匿検索方法、及び、秘匿検索プログラム

Country Status (5)

Country Link
US (1) US20220277100A1 (ja)
JP (1) JP7016458B2 (ja)
CN (1) CN114902314A (ja)
DE (1) DE112020005626T5 (ja)
WO (1) WO2021144834A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114945963A (zh) * 2020-01-14 2022-08-26 三菱电机株式会社 登记装置、检索操作装置、数据管理装置、登记程序、检索操作程序以及数据管理程序

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019142651A1 (ja) 2018-01-17 2019-07-25 三菱電機株式会社 登録装置、検索操作装置、データ管理装置、登録プログラム、検索操作プログラムおよびデータ管理プログラム
WO2019215818A1 (ja) 2018-05-08 2019-11-14 三菱電機株式会社 登録装置、サーバ装置、秘匿検索システム、秘匿検索方法、登録プログラムおよびサーバプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019142651A1 (ja) 2018-01-17 2019-07-25 三菱電機株式会社 登録装置、検索操作装置、データ管理装置、登録プログラム、検索操作プログラムおよびデータ管理プログラム
WO2019215818A1 (ja) 2018-05-08 2019-11-14 三菱電機株式会社 登録装置、サーバ装置、秘匿検索システム、秘匿検索方法、登録プログラムおよびサーバプログラム

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
平野 貴人,アクセス制御可能な共通鍵検索可能暗号の高安全化と高速化,2020年 暗号と情報セキュリティシンポジウム(SCIS2020)予稿集、[USB] 2020年 暗,2020年01月21日,pp.1-8
平野 貴人,共通鍵暗号技術のみから構成されたマルチユーザ秘匿検索,2018年 暗号と情報セキュリティシンポジウム(SCIS2018)予稿集 [USB] 2018年 暗,2018年01月23日,pp.1-8
平野 貴人,確定値を部分的に使った高速な共通鍵暗号ベース秘匿検索,CSS2017 コンピュータセキュリティシンポジウム2017 論文集 合同開催 マルウェア対策研究人,日本,一般社団法人情報処理学会 コンピュータセキュリティ,2017年10月16日,pp.749-756

Also Published As

Publication number Publication date
WO2021144834A1 (ja) 2021-07-22
CN114902314A (zh) 2022-08-12
JPWO2021144834A1 (ja) 2021-07-22
DE112020005626T5 (de) 2022-09-01
US20220277100A1 (en) 2022-09-01

Similar Documents

Publication Publication Date Title
CN110326253B (zh) 用于对加密数据进行模糊关键字搜索的方法和系统
US9977918B2 (en) Method and system for verifiable searchable symmetric encryption
WO2012095973A1 (ja) データ処理装置及びデータ保管装置
US10872158B2 (en) Secret search system, secret search method, and computer readable medium
US20170288858A1 (en) Server apparatus, search system, terminal apparatus, search method, non-transitory computer readable medium storing server program, and non-transitory computer readable medium storing terminal program
US11233629B2 (en) Registration apparatus, search operation apparatus, data management apparatus
JP2012164031A (ja) データ処理装置及びデータ保管装置及びデータ処理方法及びデータ保管方法及びプログラム
CN108370312B (zh) 加密装置、检索装置、计算机能读取的记录介质、加密方法和检索方法
CN111052108A (zh) 数据处理装置、数据处理方法和数据处理程序
JP7016458B2 (ja) 秘匿検索システム、秘匿検索方法、及び、秘匿検索プログラム
US11902418B2 (en) Registration device, search operation device, and data management device
US20230289345A1 (en) Searchable encryption system
JP6672451B2 (ja) 暗号化検索インデックスマージサーバ、暗号化検索インデックスマージシステム、及び暗号化検索インデックスマージ方法
Handa et al. Keyword binning-based efficient search on encrypted cloud data
US11106740B2 (en) Search device, search system, search method, and computer readable medium

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211029

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20211029

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211130

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211215

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: 20211228

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220125