WO2017033843A1 - 検索可能暗号処理システム - Google Patents

検索可能暗号処理システム Download PDF

Info

Publication number
WO2017033843A1
WO2017033843A1 PCT/JP2016/074170 JP2016074170W WO2017033843A1 WO 2017033843 A1 WO2017033843 A1 WO 2017033843A1 JP 2016074170 W JP2016074170 W JP 2016074170W WO 2017033843 A1 WO2017033843 A1 WO 2017033843A1
Authority
WO
WIPO (PCT)
Prior art keywords
key
secret
data
search
unit
Prior art date
Application number
PCT/JP2016/074170
Other languages
English (en)
French (fr)
Inventor
雅之 吉野
尚宜 佐藤
Original Assignee
株式会社日立製作所
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 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to US15/746,872 priority Critical patent/US10733317B2/en
Priority to EP16839190.2A priority patent/EP3343829A4/en
Publication of WO2017033843A1 publication Critical patent/WO2017033843A1/ja

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
    • 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/907Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • 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/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • 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/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
    • 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
    • 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
    • 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/0891Revocation or update of secret information, e.g. encryption key update or rekeying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption

Abstract

登録クライアントと管理サーバとがネットワークを介して接続された検索可能暗号処理システムにおいて、登録クライアントは、平文データを暗号化するための第一の秘密鍵と、新たに平文データを暗号化するための第二の秘密鍵との差分に基づいて、第一の秘密鍵により暗号化された秘匿データを第二の秘密鍵により更新するための差分鍵マスクを生成する登録クライアント処理部、を備える。

Description

検索可能暗号処理システム
 本発明は、検索可能暗号処理システムに関する。
 情報システムの開発・運用管理費の効率化を目的に、近年、情報システムを自組織が維持するのではなく、他組織が提供する情報システムを利用する、クラウドと呼ばれる運用管理形態が脚光を浴びている。一方、クラウドにおいては、情報システムを管理する組織が、情報システムを利用する組織とは異なるため、情報漏えい等を防止する策や、事故発生後の原因究明、再発防止策等が自組織だけでは立てにくい。そのため、事前に、データの不正流出の予防策として、暗号技術を活用し、データの機密性を確保する必要がある。
 サーバ/クライアントモデルにおいて、クライアントが、サーバにデータを預託しながら、サーバに対し、預託したデータの情報漏洩を防ぐ技術として、暗号技術を利用した方式が知られている。例えば、特許文献1には、クライアントの要求に従って、暗号化データを復号せずに、預託された暗号化データを検索する、検索処理方式が記載されている。この検索処理方式は、平文と暗号文が一対一の単純な対応関係を有する決定的暗号化方式よりも安全な、平文と暗号文が一対mの複雑な対応関係を有する確率的暗号化方式を採用しており、サーバ管理者への情報漏洩を防ぎながら、かつサーバに預託したデータを安全に検索するための技術が開示されている。
国際公開WO2012/077541号公報
 しかしながら、特許文献1に記載された技術では、秘密鍵の更新が容易ではない。図2を用いて説明する。図2の上側の図が示すように、秘密鍵を共有する複数の利用者が管理サーバの暗号文を検索可能な状態から、図2の下側の図が示すように、ある利用者だけを管理サーバの暗号文を検索可能な状態に変更したい場合、全員が共有する古い秘密鍵は失効させ、特定の利用者だけが保有する新しい秘密鍵のみが有効にする必要がある。その場合、管理サーバが保存する古い秘密鍵で暗号化した暗号文を、新しい秘密鍵で暗号化した暗号文に変更する必要がある。
 しかし、検索可能暗号では、管理サーバが保有する暗号文は直接的には変更できないため、利用者は管理サーバに秘密鍵を渡す必要がある。しかしながら、管理サーバに秘密鍵を渡してしまうと、平文情報が露呈し、暗号化データの機密性が維持できない。そのため、復号なしで暗号文を変更するには、管理サーバ上の全ての暗号化データを、利用者がいったんダウンロードし、全ての暗号化データの復号、新たな秘密鍵で再暗号化をした上で、管理サーバに再アップロードする必要があった。このフローは暗復号化にかかる計算量がサーバに預けた暗号化データの量に比例しているため、利用者側の負荷が大きい、という欠点がある。
 本発明は、上記に鑑みてなされたものであって、サーバ/クライアントモデルにおいて、利用者側の負荷をかけずに暗号化データの機密性を維持したまま、ある秘密鍵に対応する暗号化データを別の秘密鍵に対応する暗号化データに変換することが可能な検索可能暗号処理システムを提供することを目的とする。
 前記課題を解決し、目的を達成するために、本発明にかかる検索可能暗号処理システムは、登録クライアントと管理サーバとがネットワークを介して接続された検索可能暗号処理システムにおいて、前記登録クライアントは、平文データを暗号化するための第一の秘密鍵と、新たに前記平文データを暗号化するための第二の秘密鍵との差分に基づいて、前記第一の秘密鍵により暗号化された秘匿データを前記第二の秘密鍵により更新するための差分鍵マスクを生成する登録クライアント処理部、を備えることを特徴とする検索可能暗号処理システムとして構成される。
 本発明によれば、サーバ/クライアントモデルにおいて、利用者側の負荷をかけずに暗号化データの機密性を維持したまま、ある秘密鍵に対応する暗号化データを別の秘密鍵に対応する暗号化データに変換することができる。
第一の実施形態のシステムの概略を例示する図である。 管理サーバの暗号文を検索可能なユーザの範囲を示す図である。 登録クライアントの機能の概略を例示する図である。 検索クライアントの機能の概略を例示する図である。 管理サーバの機能の概略を例示する図である。 コンピュータの概略構成を例示する図である。 登録クライアントにおける秘匿データの作成手順を例示するブロック図である。 検索クライアントにおける秘匿キーワードの作成手順を例示するブロック図である。 管理サーバにおける秘匿データの検索手順を例示するブロック図である。 検索クライアントにおける秘匿データの復号手順を例示するブロック図である。 登録クライアントまたは検索クライアントにおける乱数ストリームの生成手順を例示するブロック図である。 登録クライアントまたは検索クライアントにおける鍵ストリームの生成手順を例示するブロック図である。 登録クライアントにおける差分鍵マスクの生成手順を例示するブロック図である。 管理サーバにおける秘匿データの更新手順を例示するブロック図である。 第二の実施形態のシステムの概略を例示する図である。 管理サーバの機能の概略を例示する図である。 管理サーバにおける秘匿キーワードの変換手順を例示するブロック図である。
 以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態において、同一の部材には原則として同一の符号を付け、繰り返しの説明は省略する。
 (実施の形態1)
 第一の実施形態では、登録クライアント100と検索クライアント200と管理サーバ300とがネットワーク400で接続されたシステムにおいて、登録クライアント100が作成した秘匿データを管理サーバ300に登録し、検索クライアント200がその秘匿データの検索を管理サーバ300に依頼し、管理サーバ300から取得した秘匿データを復号できることを示す。また、登録クライアント100が保有する秘密鍵の更新処理として、登録クライアント100が保有する新しい秘密鍵と古い秘密鍵の2種類の秘密鍵から、それぞれの秘密鍵を用いて独立に鍵ストリームを生成し、この2種類の鍵ストリームの差分である差分鍵マスクによって、管理サーバ300が新しい秘密鍵に対応した秘匿データに更新できることを示す。
 図1は、本発明にかかる検索可能暗号処理システムを適用した、本実施形態における検索処理システムの概略図である。図示するように、検索処理システムは、登録クライアント100と、検索クライアント200と、管理サーバ300とを備え、それぞれがネットワーク400を介して情報を送受信できるよう構成されている。
 ここで、本実施形態における登録クライアント100は、秘匿化したデータを管理サーバ300に送信するデータ登録用の送受信装置として機能する。検索クライアント200は、秘匿化したキーワードを管理サーバ300に送信し、検索結果を受信する、検索用の送受信装置として機能する。管理サーバ300は、秘匿化したデータをデータベース341に保管し、またデータベース341内のデータを検索する送受信装置として機能する。
 また、本実施形態における登録クライアント100は、管理サーバ300で管理される、ある秘密鍵に対応する秘匿化したデータを、別の秘密鍵に対応する秘匿化したデータへの変換依頼用の送受信装置として機能する。
 図3は、登録クライアント100の機能概略図である。図示するように、登録クライアント100は、制御部110と、記憶部120と、入力部101と、出力部102と、通信部103とを備える。 
 記憶部120は、データ記憶部130と、鍵記憶部150と、一時記憶部180とを備える。
 データ記憶部130は、管理サーバ300に送信するデータである、送信文を特定する情報を記憶する。また、データ記憶部130は、入力部101を介して、受け付けた平文データ131を特定する情報を記憶する。また、データ記憶部130は、暗号化に関連する情報をまとめた暗号化コンテキスト140を記憶する。暗号化コンテキスト140には、秘匿データの作成時に用いる暗号化アルゴリズム141と初期ベクトル136と検索タグ長135が記憶される。秘匿データの作成元となるデータが128ビット以下に固定されている場合は、初期ベクトル136は用いなくてもよい。その場合、初期ベクトルは記憶しなくても良く、登録クライアント100における全ての処理で、初期ベクトルに関する処理は省略する。
 鍵記憶部150は、安全性の観点から登録クライアント100が秘密に管理すべき、固定型秘密鍵160と更新型秘密鍵170を特定する情報を記憶する。固定型秘密鍵160とは、本実施形態で開示する秘匿データの更新処理後も、継続して利用し続ける秘密鍵であり、乱数マスク生成鍵151とデータ暗号化鍵152を特定する情報が記憶される。更新型秘密鍵170とは、本実施形態で開示する秘匿データの更新処理の前後で、利用される秘密鍵が変わる秘密鍵であり、鍵マスク生成鍵171と鍵マスク用ノンス172を特定する情報が記憶される。更新型秘密鍵170には、従来の古い秘密鍵で平文データを暗号化するための第一の秘密鍵と、新たな秘密鍵で平文データを暗号化するための第二の秘密鍵とがある。また、上記第一の秘密鍵を生成するための第一の鍵マスク生成鍵および第一の鍵マスク用ノンスと、上記第二の秘密鍵を生成するための第二の鍵マスク生成鍵および第二の鍵マスク用ノンスとがある。
 一時記憶部180は、制御部110での処理で必要となる情報を記憶する。 
 制御部110は、全体処理部111と、暗号化部112と、擬似乱数生成部114と、不可逆変換部115と、準同型関数部116と、基本演算部117と、鍵生成部118を備える。ただし、秘密鍵の生成処理を行わない場合、鍵生成部118は保持しなくても良い。
 全体処理部111は、登録クライアント100における全ての処理を制御する。例えば、全体処理部111は、入力部101を介して入力を受け付けた情報を、データ記憶部130に平文データ131として記憶する処理を行う。
 また、全体処理部111は、平文データ131を出力部102に表示する処理を行う。 
 また、全体処理部111は、データ記憶部130に記憶した平文データ131を読み込み、それぞれ、暗号化部112と、擬似乱数生成部114と、不可逆変換部115と、準同型関数部116と、基本演算部117とに入力し、出力されたデータを、データ記憶部130に秘匿データとして記憶する処理を行う。
 また、全体処理部111は、秘匿データを、通信部103を介して管理サーバ300に送信する処理を行う。
 さらに、全体処理部111は、管理サーバ300より通信部103を介して受信した秘匿データを、一時記憶部180に記憶する処理と出力部102に表示する処理を行う。
 暗号化部112は、入力されたデータを暗号化したデータを出力する処理を行う。 
 例えば、全体処理部111から平文データ131とデータ暗号化鍵152が入力され、暗号化したデータを出力する処理を行う。例えば、暗号化部112は、標準的な暗号化アルゴリズムの実装により、実現される。
 擬似乱数生成部114は、擬似乱数を出力する処理を行う。例えば、擬似乱数生成部114は、秘密鍵と初期ベクトルを要する、標準的な擬似乱数生成アルゴリズムの実装により実現される。また例えば、擬似乱数生成部114は、温度、時間、電力量、等の物理現象から、乱数を出力するハードウェアにより実現される。本実施形態においては、擬似乱数生成部114は、全体処理部111から入力された乱数マスク生成鍵151と初期ベクトル136を用い、擬似乱数を出力する。
 不可逆変換部115は、入力されたデータを圧縮したデータを出力する処理を行う。 
 例えば、不可逆変換部115は、全体処理部111から入力されたデータを固定長の別のデータに変換し、出力する処理を行う。
 例えば、不可逆変換部115は、標準的な暗号ハッシュ関数アルゴリズムであるSHA-256関数の実装により、任意長の入力データを256ビットのデータへ変換する不可逆変換部115が実現できる。
 準同型関数部116は、入力データに対し、準同型性を有する関数の出力結果をデータとして出力する処理を行う。
 ただし、準同型を有する関数(以降、準同型関数と呼ぶ)とは、関数Fと、入力変数x、入力変数yに対し、
(数1)
  F(x・y)=F(x)?F(y)
が成り立つ関数を指す。ただし、・と?は、演算記号を表わし、加算用の演算記号+、乗算用の演算記号*、ビット毎の排他的論理和であるXOR(eXclusive OR)演算用の演算記号xor等が入る。
 このとき、(数1)において、・と?にXOR演算記号xorが入る場合、(数2)が成り立つ。
(数2)
  F(x xor y)=F(x)xor F(y)
 基本演算部117は、加算、減算、比較算や、AND、OR、XOR等の基本的な算術演算に関する処理を行う。
 例えば、基本演算部117は、全体処理部111から入力された2つのデータのビット毎の排他的論理和であるXOR演算や、比較演算の等号成立または不成立の検証結果を、データとして出力する処理を行う。
 鍵生成部118は、暗号化アルゴリズムや乱数生成などに用いる固定型秘密鍵や更新型秘密鍵の生成処理に用いる。例えば、鍵生成部118は、標準的な鍵生成アルゴリズムの実装により実現される。また、擬似乱数生成部114を用い、固定型秘密鍵や更新型秘密鍵を生成するようにしてもよい。
 以上に示した登録クライアント100は、例えば、図6(コンピュータの概略図)に示すような、CPU(Central Processing Unit)601と、メモリ602と、HDD(Hard Disk Drive)等の外部記憶装置603と、CD(Compact Disk)やDVD(Digital Versatile Disk)等の可搬性を有する記憶媒体608に対して情報を読み書きする読書装置607と、キーボードやマウス等の入力装置606と、ディスプレイ等の出力装置605と、通信ネットワークに接続するためのNIC(Network Interface Card)等の通信装置604と、これらを連結するシステムバス等の内部通信線(システムバスという)609と、を備えた一般的なコンピュータ600で実現できる。
 例えば、記憶部120は、CPU601がメモリ602または外部記憶装置603を利用することにより実現可能であり、制御部110と制御部110に含まれる各処理部は、外部記憶装置603に記憶されている所定のプログラムをメモリ602にロードしてCPU601で実行することで実現可能であり、入力部101は、CPU601が入力装置606を利用することで実現可能であり、出力部102は、CPU601が出力装置605を利用することで実現可能であり、通信部103は、CPU601が通信装置604を利用することで実現可能である。
 この所定のプログラムは、読書装置607を介して記憶媒体608から、あるいは、通信装置604を介してネットワークから、外部記憶装置603に記憶(ダウンロード)され、それから、メモリ602上にロードされて、CPU601により実行されるようにしてもよい。また、読書装置607を介して、記憶媒体608から、あるいは通信装置604を介してネットワークから、メモリ602上に直接ロードされ、CPU601により実行されるようにしてもよい。
 図4は、検索クライアント200の機能概略図である。図示するように、検索クライアント200は、制御部210と、記憶部220と、入力部201と、出力部202と、通信部203とを備える。 
 記憶部220は、データ記憶部230と、鍵記憶部250と、一時記憶部280とを備える。
 データ記憶部230は、管理サーバ300に送信するデータである、送信文を特定する情報と通信部203を介して受信したデータを特定する情報を記憶する。本実施形態においては、データ記憶部230は、検索クライアント200が、入力部201を介して受け付けた平文キーワード241を特定する情報を記憶する。また、データ記憶部230は、通信部203を介して管理サーバ300から受信したデータを特定する情報を秘匿データとして記憶し、秘匿データから秘匿化を解除したデータを平文データとして記憶する。また、データ記憶部230は、暗号化に関連する情報をまとめた暗号化コンテキスト240を記憶する。暗号化コンテキスト240には、秘匿データの秘匿化の解除、秘匿キーワードに用いる暗号化アルゴリズム244と初期ベクトル236と指定ブロック237が記憶される。秘匿キーワードの作成元となるデータ(含む、キーワード)が128ビット以下に固定されている場合は、初期ベクトル136は用いなくてもよい。その場合、初期ベクトルは記憶しなくても良く、検索クライアント200における全ての処理で、初期ベクトルに関する処理は省略する。
 鍵記憶部250は、安全性の観点から検索クライアント200が秘密に管理すべき、固定型秘密鍵260と更新型秘密鍵270を特定する情報を記憶する。固定型秘密鍵260とは、本実施形態で開示する秘匿データの更新処理後も、継続して利用し続ける秘密鍵であり、乱数マスク生成鍵251とデータ暗号化鍵252とデータ復号鍵253を特定する情報が記憶される。更新型秘密鍵270とは、本実施形態で開示する秘匿データの更新処理前後で、利用する秘密鍵が変わる秘密鍵であり、鍵マスク生成鍵271と鍵マスク用ノンス272、更新型検索鍵273を特定する情報が記憶される。更新型秘密鍵270には、従来の古い秘密鍵で平文キーワードを暗号化するための第一の検索用秘密鍵と、新たな秘密鍵で平文キーワードを暗号化するための第二の検索用秘密鍵とがある。また、上記第一の検索用秘密鍵を生成するための第一の検索用鍵マスク生成鍵および第一の検索用鍵マスク用ノンスと、上記第二の秘密鍵を生成するための第二の検索用鍵マスク生成鍵および第二の検索用鍵マスク用ノンスとがある。
 一時記憶部280は、制御部210での処理で必要となる情報を記憶する。 
 制御部210は、全体処理部211と、暗号化部212と、復号化部213と、擬似乱数生成部214と、不可逆変換部215と、準同型関数部216と、基本演算部217と鍵生成部218を備える。ただし、秘密鍵の生成処理を行わない場合、鍵生成部218は保持しなくても良い。
 全体処理部211は、検索クライアント200における全ての処理を制御する。例えば、全体処理部211は、入力部201を介して入力を受け付けた情報を、データ記憶部230に平文キーワード241として記憶する処理を行う。
 また、全体処理部211は、平文キーワード241を出力部202に表示する処理を行う。 
 また、全体処理部211は、データ記憶部230に記憶した平文キーワード241を読み込み、それぞれ、暗号化部212と、擬似乱数生成部214と、不可逆変換部215と、準同型関数部216と、基本演算部217とに入力し、出力されたデータを秘匿キーワードとしてデータ記憶部230に記憶する処理を行う。
 また、全体処理部211は、通信部203を介して、秘匿キーワードを管理サーバ300に送信する処理を行う。
 また、全体処理部211は、通信部203を介して、秘匿データや平文データを管理サーバ300から受信する処理を行う。
 また、全体処理部211は、通信部203を介して、受信した秘匿データや平文データをデータ記憶部230に記憶する処理を行う。
 また、全体処理部211は、データ記憶部230に記憶した秘匿データを読み込み、それぞれ、復号化部213と、不可逆変換部215と、準同型関数部216と、基本演算部217とに入力し、出力されたデータを平文データとしてデータ記憶部230に記憶する処理を行う。
 また、全体処理部211は、平文データを出力部202に表示する処理を行う。さらに、全体処理部211は、管理サーバ300より、通信部203を介して受信したデータを、一時記憶部280に記憶する処理と、出力部202に表示する処理を行う。
 暗号化部212は、入力されたデータを暗号化したデータを出力する処理を行う。 
 例えば、暗号化部212は、全体処理部211から平文キーワード241とデータ暗号化鍵252が入力され、暗号化した平文キーワードを出力する処理を行う。
 復号化部213は、入力された暗号化データを復号化し、出力する処理を行う。 
 例えば、復号化部213は、全体処理部211から暗号化したデータとデータ復号化鍵253が入力され、復号後、平文のデータを出力する処理を行う。
 擬似乱数生成部214は、擬似乱数を出力する処理を行う。 
 例えば、擬似乱数生成部214は、秘密鍵と初期ベクトルを要する、標準的な擬似乱数生成アルゴリズムの実装により実現される。このとき、秘密鍵と初期ベクトルの一方または両方の値を利用毎に変更すれば、毎回、異なる擬似乱数が生成される。また例えば、擬似乱数生成部214は、温度、時間、電力量、等の物理現象から、乱数を出力するハードウェアにより実現される。本実施形態においては、擬似乱数生成部214は、全体処理部211から入力された乱数マスク生成鍵251と初期ベクトル236を用い、擬似乱数を出力する。
 不可逆変換部215は、入力されたデータを不可逆変換したデータを出力する処理を行う。例えば、不可逆変換部215は、全体処理部211から入力されたデータを固定長の別のデータに変換し、出力する処理を行う。 
 例えば、不可逆変換部215は、標準的な暗号ハッシュ関数アルゴリズムであるSHA-256の実装により、任意長の入力データを256ビットのデータへ変換する不可逆変換部215が実現できる。
 準同型関数部216は、入力されたデータに対し、準同型性関数の出力結果をデータとして出力する処理を行う。
 ただし、準同型関数とは、関数Fと、入力変数x、入力変数yに対し、(数2)が成り立つ場合を示す。なお、ビット毎の排他的論理和であるXOR演算以外の演算記号で準同型性が成り立つ時も、同様に実施できる。
 基本演算部217は、加算、減算、比較算や、AND、OR、XOR等の基本的な算術演算に関する処理を行う。
 鍵生成部218は、暗号化アルゴリズムや乱数生成などに用いる固定型秘密鍵や更新型秘密鍵の生成処理に用いる。例えば、鍵生成部218は、標準的な鍵生成アルゴリズムの実装により実現される。また、擬似乱数生成部214を用い、固定型秘密鍵や更新型秘密鍵を生成するようにしてもよい。
 以上に示した検索クライアント200は、例えば、図6(コンピュータの概略図)に示すような、CPU601と、メモリ602と、HDD等の外部記憶装置603と、CDやDVD等の可搬性を有する記憶媒体608に対して情報を読み書きする読書装置607と、キーボードやマウス等の入力装置606と、ディスプレイ等の出力装置605と、通信ネットワークに接続するためのNIC等の通信装置604と、これらを連結するシステムバス等の内部通信線(システムバスという)と、を備えた一般的なコンピュータで実現できる。
 例えば、記憶部220は、CPU601がメモリ602または外部記憶装置603を利用することにより実現可能であり、制御部210と制御部210に含まれる各処理部は、外部記憶装置603に記憶されている所定のプログラムをメモリ602にロードしてCPU601で実行することで実現可能であり、入力部201は、CPU601が入力装置606を利用することで実現可能であり、出力部202は、CPU601が出力装置605を利用することで実現可能であり、通信部203は、CPU601が通信装置604を利用することで実現可能である。
 この所定のプログラムは、読書装置607を介して記憶媒体608から、あるいは、通信装置604を介してネットワークから、外部記憶装置603に記憶(ダウンロード)され、それから、メモリ602上にロードされて、CPU601により実行されるようにしてもよい。また、読書装置607を介して、記憶媒体608から、あるいは通信装置604を介してネットワークから、メモリ602上に直接ロードされ、CPU601により実行されるようにしてもよい。
 図5は、管理サーバ300の機能概略図である。図示するように、管理サーバ300は、制御部310と、記憶部320と、入力部301と、出力部302と、通信部303と、を備える。
 記憶部320は、データ記憶部330と、鍵記憶部350と、一時記憶部380とを備える。 
 データ記憶部330は、通信部303を介して受信したデータを特定する情報が記憶する。ここで、本実施形態においては、通信部303を介して登録クライアント100から受信した情報を、データ記憶部330にデータベース341の構成情報として記憶する処理を行う。また、データ記憶部330は、通信部303を介して受信したキーワードを特定する情報を記憶する。ここで、本実施形態においては、通信部303を介して検索クライアント200から受信した情報を、データ記憶部330に秘匿キーワードとして記憶する処理を行う。
 また、データ記憶部330は、暗号化に関連する情報をまとめた暗号化コンテキスト340とデータベース341を記憶する。暗号化コンテキスト340は、秘匿データの作成時に用いる暗号化アルゴリズム344と検索タグ長335と初期ベクトル336と指定ブロック337を記憶する。データベース341は、平文データと秘匿データの少なくとも一方の集合から構成される。例えば、DBはRDB(Relational Database)やKVS(Key-Valued System)などで構成され、データベースにおいてレコードとして管理される各データが秘匿化された秘匿データ343または平文状態の平文データ342として、または各データは秘匿化データ343と平文データ342の組で保存されている。
 一時記憶部380は、制御部310での処理で必要となる情報を記憶する。 
 制御部310は、全体処理部311と、復号化部313と、不可逆変換部315と、準同型関数部316と、基本演算部317と、を備える。
 全体処理部311は、管理サーバ300における全ての処理を制御する。 
 例えば、全体処理部311は、通信部303を介して秘匿データや平文データを登録クライアント100から受信する処理を行う。
 また、全体処理部311は、通信部303を介して受信した秘匿データ343や平文データ342をデータ記憶部330内のデータベース341の構成情報として記憶する処理を行う。
 また、全体処理部311は、通信部303を介して秘匿キーワードを検索クライアント200から受信する処理を行う。
 また、全体処理部311は、通信部303を介して受信した秘匿キーワードをデータ記憶部330に記憶する処理を行う。
 また、全体処理部311は、検索クライアント200または登録クライアント100より、通信部303を介して受信したデータに関する情報を、一時記憶部380に記憶する処理と、出力部302に表示する処理を行う。
 復号化部313は、入力されたデータを復号化したデータを出力する処理を行う。 
 例えば、復号化部313は、全体処理部311から暗号化したデータと更新型検索鍵354が入力され、復号し、出力する処理を行う。
 不可逆変換部315は、入力されたデータを不可逆変換したデータを出力する処理を行う。 
 例えば、不可逆変換部315は、全体処理部311から入力されたデータを固定長の別のデータに変換し、出力する処理を行う。 
 例えば、不可逆変換部315は、標準的な暗号ハッシュ関数アルゴリズムであるSHA-256関数の実装により、任意長の入力データを256ビットのデータへ変換する不可逆変換部115が実現できる。
 準同型関数部316は、入力されたデータに対し、準同型関数の出力結果をデータとして出力する処理を行う。
 ただし、準同型関数とは、関数Fと、入力変数x、入力変数yに対し、(数2)が成り立つ場合を示す。なお、ビット毎の排他的論理和であるXOR演算以外の演算記号で準同型性が成り立つ時も、本実施形態は同様に実施できる。
 基本演算部317は、加算、減算、比較算や、AND、OR、XOR等の基本的な算術演算に関する処理を行う。
 以上に示した管理サーバ300は、例えば、図6(コンピュータの概略図)に示すような、CPU601と、メモリ602と、HDD等の外部記憶装置603と、CDやDVD等の可搬性を有する記憶媒体608に対して情報を読み書きする読書装置607と、キーボードやマウス等の入力装置606と、ディスプレイ等の出力装置605と、通信ネットワークに接続するためのNIC等の通信装置604と、これらを連結するシステムバス等の内部通信線(システムバスという)とを備えた一般的なコンピュータで実現できる。
 例えば、記憶部120、220、320は、CPU601がメモリ602または外部記憶装置603を利用することにより実現可能であり、制御部110、210、310と制御部110、210、310に含まれる各処理部は、外部記憶装置603に記憶されている所定のプログラムをメモリ602にロードしてCPU601で実行することで実現可能であり、入力部101、201、301は、CPU601が入力装置606を利用することで実現可能であり、出力部102、202、302は、CPU601が出力装置605を利用することで実現可能であり、通信部103、203、303は、CPU601が通信装置604を利用することで実現可能である。
 この所定のプログラムは、読書装置607を介して記憶媒体608から、あるいは、通信装置604を介してネットワークから、外部記憶装置603に記憶(ダウンロード)され、それから、メモリ602上にロードされて、CPU601により実行されるようにしてもよい。また、読書装置607を介して記憶媒体608から、あるいは通信装置604を介してネットワークから、メモリ602上に直接ロードされ、CPU601により実行されるようにしてもよい。
 <秘匿データの登録フロー>
 ネットワーク400を経由し、登録クライアント100が秘匿データを管理サーバ300へ登録する処理を示すシーケンスを説明する。
 登録クライアント100は、入力部101を経由し、ユーザから入力された情報を平文データ131として、記憶部120へ記憶する処理を行う(S101)。
 登録クライアント100は、制御部110により、秘匿データを作成する処理を行う(S102)。
 登録クライアント100は、通信部103から、ネットワーク400を経由し、平文データ1と秘匿データの両方またはいずれか一方を、管理サーバ300へ、送信する処理を行う(S103)。
 管理サーバ300は、通信部303から、ネットワーク400を経由し、登録クライアント100が送信した平文データと秘匿データの両方またはいずれか一方を受信する処理を行う(S104)。
 管理サーバ300は、制御部310により、受信した平文データと秘匿データの両方またはいずれか一方を、データベース341の構成情報として、記憶部320へ記憶する処理を行う(S105)。
 管理サーバ300は、平文データや秘匿データの登録処理の成否を、通信部303から、ネットワーク400を経由し、登録クライアントへ送信する処理を行う(S106)。
 登録クライアント100は、通信部103から、ネットワーク400を経由し、管理サーバ300が送信した、平文データや秘匿データの登録処理の成否を、受信する処理を行う(S107)。
 登録クライアント100は、出力部102を経由し、ユーザに、登録処理の成否を含む、登録情報について、表示する処理を行う(S108)。
 以上が、ネットワーク400を経由し、登録クライアント100が、秘匿データを管理サーバ300へ登録する処理を示すシーケンスである。
 なお、このシーケンスの処理手順は、必ずしも上記の記述通りの順序に従う必要はなく、異なる順序で実施してもよい。また、必ずしも上記に記述された手順を全て処理する必要はない。例えば、S102で作成した秘匿データを、更に更新型検索鍵や更新型秘密鍵を用い、その一部または全部を二重に暗号化する処理を付け加えても良い。
 <秘匿データの検索フロー>
 ネットワーク400を経由し、検索クライアント200が送信した秘匿キーワードを用い、管理サーバ300がデータベース341を検索し、更に検索クライアント200が検索結果を取得する処理を示すシーケンスを説明する。
 検索クライアント200は、入力部201を経由し、ユーザから入力された情報を平文キーワード241として、記憶部220へ記憶する処理を行う(S201)。
 検索クライアント200は、制御部210により、平文キーワードから秘匿キーワードを作成する処理を行う(S202)。
 検索クライアント200は、通信部203から、ネットワーク400を経由し、秘匿キーワードを管理サーバ300へ送信する処理を行う(S203)。
 管理サーバ300は、通信部303から、ネットワーク400を経由し、検索クライアント200が送信した秘匿キーワードを、受信する処理を行う(S204)。
 管理サーバ300は、制御部310により、データベース341から、秘匿キーワードに関係する、秘匿データ343を検索する処理を行う(S205)。
 管理サーバ300は、秘匿キーワードに該当する検索結果(秘匿データと平文データの両方またはいずれか一方で構成される)を、通信部303から、ネットワーク400を経由し、検索クライアントへ送信する処理を行う(S206)。
 検索クライアント200は、通信部203から、ネットワーク400を経由し、管理サーバ300が送信した、検索結果を受信する処理を行う(S207)。
 秘匿データが検索結果に含まれる場合、検索クライアント200は、制御部210により、秘匿キーワードに該当する検索結果から、平文データを復元する(S208)。
 検索クライアント200は、出力部202を経由し、平文データを記憶部220に記憶する(S209)。 
 検索クライアント200は、平文データを出力部202に表示する(S210)。
 以上が、ネットワーク400を経由し、検索クライアント200が送信した秘匿キーワードを用い、管理サーバ300がデータベース341を検索し、更に検索クライアント200が検索結果を取得する処理を示すシーケンスである。
 なお、このシーケンスの処理手順は、必ずしも上記の記述通りの順序に従う必要はなく、異なる順序で実施してもよい。また、必ずしも上記に記述された手順を全て処理する必要はない。また、新たな処理を追加しても良い。例えば、S205において、検索する秘匿データの一部または全部が更新型検索鍵で二重に暗号化されている場合、管理サーバ300は、更新型検索鍵による秘匿データの復号処理を付け加える。同様に、S205において、秘匿キーワードの一部または全部が更新型検索鍵で二重に暗号化されている場合も、管理サーバ300は、更新型検索鍵による秘匿キーワードの復号処理を付け加える。
 <秘匿データの生成フロー>
 登録クライアント100における秘匿データの生成処理の手順を図7に示す。登録クライアント100の全体処理部111は、秘匿データの生成処理に必要な作業領域を一時記憶部180に確保する。
 登録クライアント100の全体処理部111は、平文データ131を取得し、暗号化部112が処理可能なサイズに分割する。登録クライアント100の全体処理部111は、初期ベクトル136、データ暗号化鍵152、分割されたn個の平文ブロックを暗号化部112に入力し、ECBモード、CBCモード等の暗号化アルゴリズム141に従って暗号化された、n個の中間暗号化データC1、C2、……Cnを取得する。例えば、暗号化アルゴリズム141として鍵長256ビットAES暗号のCBCモードが指定されている場合、平文データ131は128ビット毎の平文ブロックに分割され、暗号化部112はデータ暗号化鍵152と初期ベクトル136を用い、AES暗号のCBCモードで暗号化された中間暗号化データC1、C2、……Cnを出力する。
 登録クライアント100の全体処理部111は、擬似乱数生成部114に初期ベクトル136と乱数マスク生成鍵151を入力し、n個分の中間暗号化データに用いる乱数ストリームを生成する。例えば、図11内の図11(a)に示すように、初期ベクトル136と定数を連結したデータと乱数マスク生成鍵151を擬似乱数生成部114に入力し、n個分のブロックに相当する乱数ストリームR1、R2、……Rnを生成する。
 登録クライアント100の全体処理部111は、擬似乱数生成部114に鍵マスク用ノンス172と鍵マスク生成鍵171を入力し、n個分の中間暗号化データに用いる鍵ストリームを生成する。例えば、図11内の図11(b)に示すように、鍵マスク用ノンス172と定数を連結したデータと鍵マスク生成鍵171を擬似乱数生成部114に入力し、n個分のブロックに相当する鍵ストリームT1、T2、……Tnを生成する。
 登録クライアント100の全体処理部111は、基本演算部117に中間暗号化データと乱数ストリームと鍵ストリームを入力し、基本演算部117は排他的論理和(XOR算)を計算し、出力結果D1、D2、……Dnを暗号文本体として取得する。
(数3)
Di=Ci xor Ri xor Ti(i=1、・・・n)
 登録クライアント100の全体処理部111は、準同型関数部116に乱数ストリームの全部または一部を入力し、出力されたデータを関数値として取得する。例えば、図7に示すように、乱数ストリームの一部であるRnを準同型関数部116に入力し、その出力結果を関数値F(Rn)とする。関数値を不可逆変換部115に入力し、出力されたデータを不可逆変換値として取得する。例えば、不可逆変換部115がハッシュ関数SHA256を実装している場合、そのハッシュ値256ビットが不可逆変換値H(F(Rn))である。
 さらに、不可逆変換部115は、256ビットのハッシュ値のうち、検索タグ長135に記録されたビット長を秘匿データ用の検索タグDn+1として取得する。例えば、不可逆変換部115は、最下位32ビットを抽出し、秘匿データ用の検索タグとする。ただし、不可逆変換値Hから、抽出するビットは最下位ビットからに限らず、最上位ビットから抽出、または既定の箇所あるいはランダムな箇所からビットを抽出してもよい。
 登録クライアント100の全体処理部111は、初期ベクトル136をD0とし、暗号文本体D1、D2、……Dn、検索タグDn+1を連結したデータを秘匿データとしてデータ記憶部130に格納する。
 登録クライアント100の全体処理部111は、秘匿データの生成処理用に確保した作業領域を一時記憶部180から解放する。
 秘匿データの復号処理については後述するが、前述の秘匿データの生成処理において、鍵マスク生成鍵171と鍵マスク用ノンス172から生成した鍵ストリームを用いた。従って、秘匿データの生成には、鍵マスク生成鍵171と鍵マスク用ノンス172が必要とされる。また、後述する復号処理にも、鍵マスク生成鍵171と鍵マスク用ノンス172と同様に鍵マスク生成鍵271と鍵マスク用ノンス272が必要とされる。
 なお、秘匿データの生成手順は、必ずしも上記の記述通りの順序に従う必要はなく、異なる順序で実施してもよい。
 また、秘匿データの生成を、登録クライアント100ではなく、検索クライアント200が処理しても良い。
 <秘匿キーワードの生成フロー>
 検索クライアント200における秘匿キーワードの生成処理の手順を図8に示す。
 検索クライアント200の全体処理部211は、秘匿キーワードの生成処理に必要な作業領域を一時記憶部280に確保する。
 検索クライアント200の全体処理部211は、平文キーワード241を取得し、指定ブロック237の記述に従い、平文ブロックを生成する。検索クライアント200の全体処理部211は、初期ベクトル236、データ暗号化鍵252、平文ブロックを暗号化部212に入力し、暗号化アルゴリズム244に従って暗号化された、中間暗号化キーワードCnを取得する。例えば、暗号化アルゴリズム244として鍵長256ビットAES暗号CBCモード、指定ブロック237にn番目が指定されている場合、全体処理部211は平文キーワード241を128ビット毎の平文ブロックに分割し、暗号化部112はデータ暗号化鍵252と初期ベクトル236を用い、AES暗号のCBCモードで暗号化したデータC1、C2、……Cnから、n番目のデータであるCnを中間暗号化キーワードとして出力する。
 検索クライアント200の全体処理部211は、擬似乱数生成部214に初期ベクトル236と乱数マスク生成鍵251を入力し、中間暗号化キーワードのマスクに用いる、乱数ストリームを生成する。例えば、指定ブロック237にn番目が指定されている場合、中間暗号化キーワードCnのサイズ以上の乱数ストリームPnを生成する。このとき、乱数ストリームを生成する毎に、初期ベクトル250と乱数マスク生成鍵251の両方またはその一方のデータ値が更新されるため、乱数ストリームのデータ値は毎回異なる。
 検索クライアント200の全体処理部211は、擬似乱数生成部214に鍵マスク用ノンス272と鍵マスク生成鍵271を入力し、中間暗号化キーワードのマスクに用いる鍵ストリームを生成する。例えば、指定ブロック237にn番目が指定されている場合、中間暗号化キーワードCnのサイズ以上の鍵ストリームTnを生成する。
 検索クライアント200の全体処理部211は、基本演算部217に中間暗号化キーワードと乱数ストリームと鍵ストリームを入力し、基本演算部217は排他的論理和(XOR算)を計算し、出力結果を暗号化キーワード本体として取得する。例えば、中間暗号化キーワードCn、乱数ストリームPn、鍵ストリームTn、暗号化キーワードWnには次式が成り立つ。
(数4)
Wn=Cn xor Pn xor Tn。
 検索クライアント200の全体処理部211は、準同型関数部216に乱数ストリームPnを入力し、出力されたデータを関数値F(Pn)として取得する。検索クライアント200の全体処理部211は、更新型検索鍵273、初期ベクトル236と前記関数値を暗号化部212に入力し、出力されたデータを秘匿キーワード用の検索タグE(F(Pn))をWn+1として取得する。
 検索クライアント200の全体処理部211は、初期ベクトル236、暗号化キーワード本体、秘匿キーワード用の検索タグを連結し、これを秘匿キーワードとしてデータ記憶部230に格納する。
 検索クライアント200の全体処理部は、秘匿キーワードの生成処理用に確保した作業領域を一時記憶部280から解放する。
 このように、秘匿キーワードの生成処理において、鍵マスク生成鍵271と鍵マスク用ノンス272から生成した鍵ストリームを用いる。従って、秘匿キーワードの生成には、鍵マスク生成鍵271と鍵マスク用ノンス272が必要とされる。
 なお、秘匿キーワードの生成手順は、必ずしも上記の記述通りの順序に従う必要はなく、異なる順序で実施してもよい。また、新たな処理を付け加えても良い。例えば、秘匿キーワードの検索タグは更新型検索鍵で暗号化されているが、同様に、秘匿キーワードの他のブロックである暗号化本体を二重に暗号化する処理を付け加えても良い。
 また、秘匿キーワードの生成を、検索クライアント200ではなく、登録クライアント100が処理しても良い。
 <秘匿データの一致比較フロー>
 管理サーバ300における秘匿データ343と秘匿キーワードの一致比較処理の手順を図9に示す。具体的には、管理サーバ300は、秘匿データ343と秘匿キーワードを用い、秘匿化される前の平文データと平文キーワードの値が同じであるかを検知する処理手順を示す。
 管理サーバ300の全体処理部311は、秘匿データ343の一致比較処理に必要な作業領域を一時記憶部380に確保する。
 管理サーバ300の全体処理部311は、データベース341内に格納されている秘匿データ343を取得する。さらに、全体処理部311は、秘匿データ343における暗号文本体から、指定ブロック337に該当する暗号文本体を取り出す。例えば、指定ブロック337にn番目が指定されている場合、全体処理部311は、秘匿データ343を初期ベクトル、暗号文本体、秘匿データの検索タグの連結データとみなし、該当する暗号文本体からn番目のブロックに該当する暗号文本体ブロックDnを取り出す。
 管理サーバ300の全体処理部311は、秘匿キーワードにおける暗号化キーワード本体を取得する。例えば、秘匿キーワードWを初期ベクトルW0、暗号化キーワード本体Wn、秘匿キーワード用の検索タグWn+1と3分割されたブロックの集合とみなし、暗号化キーワード本体に該当するWnを取り出す。
 管理サーバ300の全体処理部311は、基本演算部317に暗号文本体ブロックと暗号化キーワード本体を入力し、基本演算部317はその排他的論理和(XOR算)を計算し、出力結果を取得する。例えば、暗号文本体ブロックDnと暗号化キーワード本体Wnに対し、(数5)が成り立つ。
(数5)
Dn xor Wn =(Cn xor Rn xor Tn) xor (Cn xor Pn xor Tn)
 ここで、平文データと平文キーワードの値が同じ場合、(数5)から(数6)が導ける。
(数6)
Dn xor Wn = Rn xor Pn
 即ち、中間暗号化データと中間暗号化キーワードの値が抹消され、さらにそれらをマスクしていた鍵ストリームの値も同様に抹消される。従って、(数6)に示すように、暗号文本体ブロックDnと暗号化キーワード本体Wnの排他的論理和は、乱数ストリーム(RnとPn)の情報のみを残す。
 管理サーバ300の全体処理部311は、基本演算部317の出力結果を準同型関数部316に入力し、準同型関数部316の出力結果である関数値F(Dn xor Wn)を取得する。なお、(数6)より、関数値F(Dn xor Wn)には、(数7)が成り立つ。
(数7)
F(Dn xor Wn)=F(Rn xor Pn)
 管理サーバ300の全体処理部311は、秘匿キーワードにおける初期ベクトルW0と秘匿キーワードの検索タグWn+1を取得し、更新型検索鍵354と共に復号化部313に入力し、復号された関数値F(Pn)を取得する。
 管理サーバ300の全体処理部311は、基本演算部317に関数値F(Dn xor Wn)と関数値F(Pn)を入力し、基本演算部317はその排他的論理和(XOR算)を計算し、出力された関数値F(R'n)を取得する。計算式として、(数8)が成り立つ。
(数8)
Z = F(Dn xor Wn) xor F(Pn)
= F(Rn xor Pn) xor F(Pn)
= F(Rn)
 管理サーバ300の全体処理部311は、不可逆変換部315に関数値F(Rn)を入力し、出力されたデータを不可逆変換値H(F(Rn))を取得する。
 管理サーバ300の全体処理部311は、不可逆変換値Hから、検索タグ長335に記録されたビット長を抽出する。例えば、最下位32ビットを抽出する。また、最下位ビットからに限らず、最上位ビットから抽出、既定の箇所あるいはランダムな箇所からビットを抽出してもよい。
 基本演算部317は、抽出したデータと秘匿データの検索タグを比較し、同一であれば一致比較結果の該当を意味するTRUE(=1)を、同一でなければ一致比較結果の非該当を意味するFALSE(=0)を出力する。
 管理サーバ300の全体処理部311は、秘匿データの一致比較処理用に確保した作業領域を一時記憶部380から解放する。
 なお、秘匿データと秘匿キーワードの一致比較手順は、必ずしも上記の記述通りの順序に従う必要はなく、異なる順序で実施してもよい。また、一致比較結果の回答にTRUEやFALSE以外を用いてもよく、二値の代わりに多値の回答でもよい。
 <秘匿データの復号フロー>
 検索クライアント200における秘匿データの復号処理の手順を図10に示す。 
 検索クライアント200の全体処理部211は、秘匿データの復号処理に必要な作業領域を一時記憶部280に確保する。
 検索クライアント200の全体処理部211は秘匿データを取得する。さらに、秘匿データから、初期ベクトルを取得する。例えば、秘匿データをD0、D1、D2、……Dn、Dn+1のブロックの集合とみなし、1番目のブロックである初期ベクトルD0を取得する。
 検索クライアント200の全体処理部211は、擬似乱数生成部214に初期ベクトルと乱数マスク生成鍵251を入力し、中間暗号化キーワードのマスクの解除に用いる、乱数ストリームを生成する。例えば、全体処理部211は、図11内の図11(a)に示すように、初期ベクトルと定数を連結したデータと乱数マスク生成鍵を擬似乱数生成部214に入力し、n個分のブロックに相当する乱数ストリームR1、R2、……Rnを生成する。
 検索クライアント200の全体処理部211は、擬似乱数生成部214に鍵マスク用ノンス272と鍵マスク生成鍵271を入力し、n個分の中間暗号化データに用いる鍵ストリームを生成する。例えば、図11内の図11(b)に示すように、鍵マスク用ノンス272と定数を連結したデータと鍵マスク生成鍵271を擬似乱数生成部214に入力し、n個分のブロックに相当する鍵ストリームT1、T2、……Tnを生成する。
 検索クライアント200の全体処理部211は、基本演算部217に暗号文本体と乱数ストリームと鍵ストリームを入力し、基本演算部217は排他的論理和(XOR算)を計算し、出力結果C1、C2、……Cnを中間暗号化データとして取得する。
(数9)
Ci=Di xor Ri xor Ti(i=1、・・・n)
 検索クライアント200の全体処理部211は、暗号化アルゴリズム244、初期ベクトル236、データ復号化鍵253、分割された中間暗号化データを復号化部213に入力し、ECBモード、CBCモード等の暗号化アルゴリズム244に従って暗号化された、n個の中間暗号化データC1、C2、……Cnを取得する。例えば、暗号化アルゴリズム244として鍵長256ビットAES暗号のCBCモードが指定されている場合、全体処理部は、中間暗号化データを128ビット毎のブロックに分割し、復号化部213によりデータ復号化鍵253と初期ベクトルを用いて復号され、AES暗号のCBCモードで復号化された平文ブロックM1、M2、……Mnを出力する。
 最後に、平文ブロックM1、M2、・・・・・Mnを連結し、平文データとしてデータ記憶部230に格納する。
 検索クライアント200の全体処理部は、秘匿データの復号処理用に確保した作業領域を一時記憶部280から解放する。
 なお、秘匿データの復号手順は、必ずしも上記の記述通りの順序に従う必要はなく、異なる順序で実施してもよい。
 また、秘匿データの復号を、検索クライアント200ではなく、登録クライアント100が処理しても良い。
 <更新型秘密鍵の更新フロー>
 登録クライアント100における更新型秘密鍵170の更新処理を示す。この処理を利用することにより、古い更新型秘密鍵を失効させ、新しい更新型秘密鍵を有する登録クライアントと検索クライアントだけが正常な動作を実現できるようになる。
 登録クライアント100は、鍵生成部118を用い、更新型秘密鍵170を生成する(S1001)。例えば、鍵生成アルゴリズムを用い、鍵マスク生成鍵171と鍵マスク用ノンス172をそれぞれ独立に生成する。なお、更新型秘密鍵170は、鍵マスク生成鍵171と鍵マスク用ノンス172から構成されるが、両方を生成してもよく、一方を生成してもよい。
 登録クライアント100は、新たに生成した更新型秘密鍵170を用い、ネットワーク400経由で管理サーバ300における秘匿データ343を更新する(S1002)。秘匿データの更新フローについては後述する。
 秘匿データの更新フロー終了後、登録クライアントはS1001で生成した更新型秘密鍵170を新しい更新型秘密鍵170として、鍵記憶部150に登録する(S1003)。
 登録クライアント100は、ネットワーク経由で、検索クライアント200へ更新型秘密鍵を登録する(S1004)。
 なお、更新型秘密鍵170の更新処理の手順は、必ずしも上記の記述通りの順序に従う必要はない。
 また、処理の一部を別の処理で代替しても良い。例えば、S1001において、更新型秘密鍵170を生成する代わりに、入力部101または通信部103経由で、更新型秘密鍵170を取得しても良い。
 また、新たな処理を付け加えても良い。例えば、登録クライアント100はS1003で生成した新しい更新型秘密鍵170を登録後、古い更新型秘密鍵170は削除しても良い。
 また、更新型秘密鍵170の更新処理を、登録クライアント100ではなく、検索クライアント200が処理しても良い。
 <更新型検索鍵の更新フロー>
 検索クライアント200における更新型検索鍵273の更新処理を示す。この処理を利用することにより、古い更新型検索鍵を失効させ、新しい更新型検索鍵を有する検索クライアント200と管理サーバ300だけが正常な動作を実現できるようになる。
 検索クライアント200は、鍵生成部218を用い、更新型秘密鍵270の一要素である、更新型検索鍵273を生成する(S1101)。例えば、鍵生成アルゴリズムを用い、更新型検索鍵273を生成する。
 検索クライアント200は、ネットワーク経由400で、管理サーバ300に更新型検索鍵273を登録する (S1102)。
 検索クライアントはS1001で生成した更新型検索鍵273を新しい更新型検索鍵273として、鍵記憶部250に登録する(S1003)。
 なお、更新型検索鍵273の更新処理の手順は、必ずしも上記の記述通りの順序に従う必要はない。
 また、処理の一部を別の処理で代替しても良い。例えば、S1101において、更新型検索鍵273を生成する代わりに、入力部201または通信部203経由で、更新型検索鍵273を取得しても良い。
 また、新たな処理を付け加えても良い。例えば、検索クライアント200はS1103で生成した新しい更新型検索鍵273を登録後、古い更新型検索鍵273は削除しても良い。
 また、更新型検索鍵273の更新処理を、検索クライアント200ではなく、管理サーバ300が処理しても良い。その際には、S1102は、検索クライアント200は、ネットワーク400経由で、管理サーバ300から、更新型検索鍵273を取得する。
 <秘匿データの更新フロー>
 登録クライアント100の更新型秘密鍵の更新に伴い、管理サーバ300が預かる秘匿データの更新処理(古い更新型秘密鍵から新しい更新型秘密鍵の付け替えに対応)を行う。ネットワーク400を経由し、登録クライアント100が送信した差分鍵マスクを用い、管理サーバ300がデータベース341における秘匿データ343を更新する処理を示すシーケンスを説明する。
 登録クライアント100は、通信部103から、ネットワーク400を経由し、秘匿データ343のサイズを、管理サーバ300へ、問い合わせを送信する処理を行う(S301)。
 管理サーバ300は、通信部303から、ネットワーク400を経由し、登録クライアント100が送信した問い合わせを受信する処理を行う(S302)。
 管理サーバ300は、通信部303から、ネットワーク400を経由し、登録クライアント300へ秘匿データのサイズを送信する処理を行う(S303)。
 登録クライアント100は、通信部103から、ネットワーク400を経由し、管理サーバ300が送信した、秘匿データのサイズを受信する処理を行う(S304)。
 管理サーバ300の全体処理部311は、基本演算部317を用い、秘匿データのサイズから初期ベクトルと秘匿データ用の検索タグのサイズを差し引き、暗号文本体のサイズを算出する(S305)。
 管理サーバ300の全体処理部311は、暗号文本体以上となるサイズを、生成する差分鍵マスクのサイズとみなし、そのサイズを登録クライアント100に送信する(S306)。
 登録クライアント100は、制御部110により、管理サーバ300から受信した上記サイズの差分鍵マスクを生成する処理を行う(S307)。
 登録クライアント100は、通信部103から、ネットワーク400を経由し、生成した差分鍵マスクを管理サーバ300へ送信する処理を行う(S308)。
 管理サーバ300は、通信部303から、ネットワーク400を経由し、登録クライアント100が送信した差分鍵マスクを受信する処理を行う(S309)。
 管理サーバ300は、制御部310により、受信した差分鍵マスクを用い、データベース341の構成情報である秘匿データ343の更新処理を行い、更新した秘匿データ343を記憶部320へ記憶する処理を行う(S310)。
 管理サーバ300は、秘匿データ343の更新処理の成否を、通信部303から、ネットワーク400を経由し、登録クライアント100へ送信する処理を行う(S311)。
 登録クライアント100は、通信部103から、ネットワーク400を経由し、管理サーバ300が送信した、秘匿データ343の更新処理の成否を、受信する処理を行う(S312)。
 登録クライアント100は、出力部102を経由し、ユーザに秘匿データ343の更新処理の成否情報を表示する処理を行う(S313)。
 なお、このシーケンスの処理手順は、必ずしも上記の記述通りの順序に従う必要はなく、異なる順序で実施してもよい。また、必ずしも上記に記述された手順を全て処理する必要はない。また、処理の一部を別の処理で代替しても良い。例えば、S306において、予め定められた値を差分鍵マスクのサイズとみなしても良い。また、更に処理を追加しても良い。例えば、S310終了後、登録クライアントは更新前の秘匿データに対応する、更新型秘密鍵を削除する処理を行ってもよい。また、登録クライアント100の代わりに、検索クライアント200が登録クライアント100の役割を実施しても良い。
 なお、上記では、更新型秘密鍵の更新処理のみを説明したが、更新型検索鍵の更新処理もあわせて行っても良い。更新型検索鍵の更新処理は、検索クライアントが新しい更新型検索鍵を管理サーバへ送信、管理サーバがそれを預かればよい。また更新型検索鍵の更新処理は検索クライアントと管理サーバで行っても良い。また、登録クライアント、検索クライアント、管理サーバが複数存在する場合、それぞれの登録クライアントまたは検索クライアント別に異なる更新型検索鍵を管理サーバが利用するようにしても良い。
 <差分鍵マスクの生成フロー>
 差分鍵マスクとは、登録クライアント100が保有する新しい秘密鍵と古い秘密鍵から、それぞれ独立に生成した2種類の鍵ストリームの、差分を指す。2種類の秘密鍵から生成した、2種類の鍵ストリームの差分である差分鍵マスクによって、後述するように、管理サーバ300は秘匿データを古い秘密鍵から新しい秘密鍵に対応する秘匿データに更新できる。
 ここでは、登録クライアント100における差分鍵マスクの生成処理の手順を、図12を用いて示す。
 登録クライアント100は、差分鍵マスクの生成処理に必要な従来の鍵マスク用ノンス172と従来の鍵マスク生成鍵171に加え、新しい鍵マスク用ノンス172’と新しい鍵マスク生成鍵171’を保有する。
 登録クライアント100の全体処理部111は、差分鍵マスクの生成処理に必要な作業領域を一時記憶部180に確保する。
 登録クライアント100の全体処理部111は、擬似乱数生成部114に従来の鍵マスク用ノンス172と従来の鍵マスク生成鍵171を入力し、n個分の中間暗号化データに用いる従来の鍵ストリームを生成する。例えば、図11内の図11(b)に示すように、従来の鍵マスク用ノンス172と定数を連結したデータと従来の鍵マスク生成鍵171を擬似乱数生成部114に入力し、n個分のブロックに相当する従来の鍵ストリームT1、T2、……Tnを生成する。
 登録クライアント100の全体処理部111は、擬似乱数生成部114に新しい鍵マスク用ノンス172’と新しい鍵マスク生成鍵171’を入力し、n個分の中間暗号化データに用いる新しい鍵ストリームを生成する。例えば、図11内の図11(b)に示すように、新しい鍵マスク用ノンス172’と定数を連結したデータと新しい鍵マスク生成鍵171’を擬似乱数生成部114に入力し、n個分のブロックに相当する新しい鍵ストリームT1’、T2’、……Tn’を生成する。
 登録クライアント100の全体処理部111は、基本演算部117に従来の鍵ストリームと新しい鍵ストリームを入力し、基本演算部117は排他的論理和(XOR算)を計算し、出力結果S1、S2、……Snを差分鍵マスクとして取得する。
(数10)
Si=Ti xor Ti’(i=1、・・・n)
 新しい鍵ストリームTi’は従来の鍵ストリームTiでマスクされており、このマスクを解除できるのは、従来の鍵マスク用ノンス172と従来の鍵マスク生成鍵171を保有する登録クライアント100または検索クライアント200に限られる。従って、管理サーバ300に新しい鍵ストリームTi’または従来の鍵ストリームTiの値が直接的に漏洩することはない。
 登録クライアント100の全体処理部111は、差分鍵マスクの生成処理用に確保した作業領域を一時記憶部180から解放する。
 なお、差分鍵マスクの生成手順は、必ずしも上記の記述通りの順序に従う必要はなく、異なる順序で実施してもよい。
 また、差分鍵マスクの生成を、登録クライアント100ではなく、検索クライアント200が処理しても良い。この場合、検索クライアント200が保有する従来の鍵マスク用ノンス272と従来の鍵マスク生成鍵271に加え、新しい鍵マスク用ノンス272’と新しい鍵マスク生成鍵271’を用いればよい。これにより、差分鍵マスクを用いて秘匿キーワードを更新することができる。
 <秘匿化データの更新フロー>
 管理サーバ300における秘匿データの更新処理の手順を図13に示す。 
 管理サーバ300の全体処理部311は、秘匿データ343の再暗号化処理に必要な作業領域を一時記憶部380に確保する。
 管理サーバ300の全体処理部311は、データベース341内に格納されている秘匿データ343を取得する。さらに、秘匿データ343から、暗号文本体を取り出す。
 管理サーバ300の全体処理部311は、基本演算部317に従来の暗号文本体と従来の鍵ストリームを入力し、排他的論理和(XOR算)を計算し、出力結果D1’、D2’、……Dn’を新しい暗号文本体として取得する。
 ここで計算式として、(数11)が成り立つ。 
(数11)
Di’=Di xor Si
   =(Ci xor Ri xor Ti)xor (Ti xor Ti’)
   =Ci xor Ri xor Ti’          (i=1、・・・n)
 (数11)より、従来の暗号文本体は、中間暗号文Ciと乱数ストリームRiと従来の鍵ストリームTiの排他的論理和(xor)で算出(Di= Ci xor Ri xor Ti)されていたが、新しい暗号文本体は中間暗号文Ciと乱数ストリームRiと新しい鍵ストリームTi’の排他的論理和(xor)で算出(Di’= Ci xor Ri xor Ti’)される。従って、従来の鍵ストリームTiが新しい鍵ストリームTi’に変更された。
 管理サーバ300の全体処理部は、初期ベクトル336と、暗号文本体D1’、D2’、……Dn’、検索タグDn+1を連結したデータを新しい秘匿データとしてデータ記憶部に格納する。
 この秘匿データの復号処理に、従来の鍵マスク生成鍵と鍵マスク用ノンスではなく、新しい鍵マスク生成鍵と鍵マスク用ノンスを必要とする、新しい秘匿データが生成された。
 管理サーバ300の全体処理部は、秘匿データ343の更新処理用に確保した作業領域を一時記憶部380から解放する。
 なお、管理サーバ300における秘匿データの更新手順は、必ずしも上記の記述通りの順序に従う必要はなく、異なる順序で実施してもよい。
 (実施の形態2)
 第二の実施形態では、登録クライアント100と検索クライアント200と管理サーバ300とがネットワーク500とネットワーク600で接続されたシステムにおいて、登録クライアント100が生成した秘匿データを管理サーバ300に登録し、管理サーバ300が差分鍵マスクによって検索クライアント200が保有する秘密鍵に対応させる秘匿データに更新し、検索クライアント200がその秘匿データの検索を管理サーバ300に依頼し、管理サーバ300から取得した秘匿データを復号できることを示す。複数の検索クライアント200がそれぞれ異なる秘密鍵を保有する場合も、管理サーバ300がもつ差分鍵マスクによってそれぞれの検索クライアント200が保有する秘密鍵に対応させる秘匿データに更新し、検索クライアントが復号可能な状態に秘匿データを変更できる。
 図14は、本実施形態のシステムの概略図である。図示するように、検索処理システムは、登録クライアント100と、検索クライアント200と、管理サーバ300とを備え、登録クライアント100と管理サーバ300がネットワーク500、検索クライアント200と管理サーバ300がネットワーク600を介して情報を送受信できるよう構成されている。
 本実施形態における登録クライアント100と検索クライアント200は、第一の実施の形態と同様であるが、更新型秘密鍵170における鍵マスク生成鍵171と鍵マスク用ノンス172と、更新型秘密鍵270における鍵マスク生成鍵271と鍵マスク用ノンス272は、その少なくとも一方は値が異なる。
 本実施形態における管理サーバ300は、図15に示すように、第一の実施の形態と同様であるが、記憶部320における鍵記憶部350において差分鍵マスク355を保有するところが異なる。差分鍵マスク355は、登録クライアント100が保有する鍵マスク生成鍵171と鍵マスク用ノンス172と、検索クライアント200が保有する鍵マスク生成鍵271と鍵マスク用ノンス272の組み合わせ全数またはその一部を用いて生成される。差分鍵マスク355の生成処理は、後述するように、登録クライアント100が保有する鍵マスク生成鍵171と鍵マスク用ノンス172と、検索クライアント200が保有する鍵マスク生成鍵271と鍵マスク用ノンス272を用いる。
 <差分鍵マスクの生成フロー>
 登録クライアント100による差分鍵マスクの生成処理の手順を示す。 
 登録クライアント100は、鍵マスク用ノンス171と鍵マスク生成鍵172、検索クライアント200に配布する鍵マスク用ノンス271と鍵マスク生成鍵272を保有する。
 登録クライアント100の全体処理部111は、差分鍵マスクの生成処理に必要な作業領域を一時記憶部180に確保する。
 登録クライアント100の全体処理部111は、擬似乱数生成部114に鍵マスク用ノンス171と鍵マスク生成鍵172を入力し、n個分の中間暗号化データに用いる鍵ストリーム(1)を生成する。例えば、図11内の図11(b)と同様に、鍵マスク用ノンス171と定数を連結したデータと鍵マスク生成鍵172を擬似乱数生成部114に入力し、n個分のブロックに相当する鍵ストリーム(1)としてT1、T2、……Tnを生成する。
 登録クライアント100の全体処理部111は、擬似乱数生成部114に鍵マスク用ノンス271と鍵マスク生成鍵272を入力し、n個分の中間暗号化データに用いる鍵ストリーム(2)を生成する。例えば、図11内の図11(b)に示すように、鍵マスク用ノンス171と定数を連結したデータと鍵マスク生成鍵172を擬似乱数生成部114に入力し、n個分のブロックに相当する鍵ストリーム(2)としてT1’、T2’、……Tn’を生成する。
 登録クライアント100の全体処理部111は、基本演算部117に鍵ストリーム(1)と鍵ストリーム(2)を入力し、基本演算部117は排他的論理和(XOR算)を計算し、出力結果S1、S2、……Snを差分鍵マスクとして取得する。
(数12)
Si=Ti xor Ti’(i=1、・・・n)
 登録クライアント100の全体処理部117は、差分鍵マスクの生成処理用に確保した作業領域を一時記憶部180から解放する。
 なお、差分鍵マスクの生成手順は、必ずしも上記の記述通りの順序に従う必要はなく、異なる順序で実施してもよい。
 また、差分鍵マスクの主体を登録クライアント100としたが、検索クライアント200に変更し、登録クライアント100に配布するよう変更してもよい。
 また、差分鍵マスクの主体用に、信頼できる機関など新たなプレイヤを用意しても良い。
 <差分鍵マスクの登録フロー>
 ネットワーク500を経由し、登録クライアント100に差分鍵マスクを送信し、管理サーバ300が鍵記憶部350差分鍵マスクを登録する処理を示すシーケンスを説明する。
 登録クライアント100は、差分鍵マスクを生成する処理を行う(S301)。 
 登録クライアント100は、通信部103から、ネットワーク500を経由し、差分鍵マスクを管理サーバ300へ送信する処理を行う(S302)。
 管理サーバ300は、通信部303から、ネットワーク500を経由し、登録クライアント100が送信した差分鍵マスクを受信する処理を行う(S303)。
 管理サーバ300は、制御部310により、受信した差分鍵マスクを、鍵記憶部350へ記憶する処理を行う(S304)。
 管理サーバ300は、差分鍵マスクの登録処理の成否を、通信部303から、ネットワーク500を経由し、登録クライアント100へ送信する処理を行う(S305)。
 登録クライアント100は、通信部103から、ネットワーク500を経由し、管理サーバ300が送信した、差分鍵マスクの登録処理の成否を、受信する処理を行う(S306)。
 登録クライアント100は、出力部102を経由し、ユーザに、登録処理の成否を含む、登録情報について、表示する処理を行う(S307)。
 以上が、ネットワーク500を経由し、登録クライアント100が差分鍵マスクを管理サーバ300へ登録する処理を示すシーケンスである。
 なお、このシーケンスの処理手順は、必ずしも上記の記述通りの順序に従う必要はなく、異なる順序で実施してもよい。また、必ずしも上記に記述された手順を全て処理する必要はない。
 また、ネットワーク600を経由し、検索クライアント200が差分鍵マスクを管理サーバ300へ登録するよう変更しても良い。
 <秘匿データの検索フロー>
 ネットワーク600を経由し、検索クライアント200が送信した秘匿キーワードを用い、管理サーバ300がデータベース341を検索し、更に検索クライアント200が検索結果を取得する処理を示すシーケンスを説明する。
 検索クライアント200は、入力部201を経由し、ユーザから入力された情報を平文キーワード241として、記憶部220へ記憶する処理を行う(S401)。
 検索クライアント200は、制御部210により、平文キーワード241から秘匿キーワードを生成する処理を行う(S402)。
 検索クライアント200は、通信部203から、ネットワーク600を経由し、秘匿キーワードを、管理サーバ300へ、送信する処理を行う(S403)。
 管理サーバ300は、通信部303から、ネットワーク600を経由し、検索クライアント200が送信した秘匿キーワードを、受信する処理を行う(S404)。
 管理サーバ300は、制御部310により、秘匿キーワードの変換処理を行う(S405)。この秘匿キーワードの変換処理については後述する。
 管理サーバ300は、制御部310により、データベース341から、秘匿キーワードに関係する、秘匿データ343を検索する処理を行う(S406)。
 管理サーバ300は、秘匿キーワードに該当する秘匿データを変換する処理を行う(S407)。この変換処理は、登録クライアント100の更新型秘密鍵170に対応する秘匿データを、検索クライアント200の更新型秘密鍵270に対応する秘匿データに変換(更新)する処理である。例えば、第一の実施の形態で図13を用いて報告した再暗号化処理により、この変換処理を実現する。
 管理サーバ300は、秘匿キーワードに該当する検索結果(秘匿データと平文データの両方またはいずれか一方で構成される)を、通信部303から、ネットワーク600を経由し、検索クライアント200へ送信する処理を行う(S408)。
 検索クライアント200は、通信部203から、ネットワーク600を経由し、管理サーバ300が送信した、検索結果を受信する処理を行う(S409)。
 秘匿データが検索結果に含まれる場合、検索クライアント200は、制御部210により、秘匿キーワードに該当する検索結果から、平文データを復元する(S410)。
 検索クライアント200は、出力部202を経由し、平文データを記憶部220に記憶する(S409)。
 検索クライアント200は、平文データを出力部202に表示する(S411)。
 以上が、ネットワーク600を経由し、検索クライアント200が送信した秘匿キーワードを用い、管理サーバ300がデータベース341を検索し、更に検索クライアント200が検索結果を取得する処理を示すシーケンスである。
 なお、このシーケンスの処理手順は、必ずしも上記の記述通りの順序に従う必要はなく、異なる順序で実施してもよい。また、必ずしも上記に記述された手順を全て処理する必要はない。
 このシーケンスは、秘匿キーワードを変換し、変換後の秘匿キーワードと秘匿データを検索する処理を説明した。これは、検索クライアントから管理サーバへ送信される秘匿キーワードの数が、管理サーバが管理する秘匿データの数より少ないため、検索において秘匿キーワードを変換した方が、秘匿データを変換するよりも、数が少なく効率的に処理できるからである。もちろん、変換先を秘匿キーワードに固定する必要はなく、秘匿キーワードではなく、秘匿データを変換し、秘匿キーワードと変換後の秘匿データを検索するように処理を変更しても良い。また、秘匿データと秘匿キーワードの双方を変換するように処理を変更しても良い。
 <秘匿キーワードの変換フロー>
 管理サーバ300における秘匿キーワードの変換処理の手順を図16に示す。管理サーバ300の全体処理部311は秘匿キーワードの変換処理に必要な作業領域を一時記憶部380に確保する。
 管理サーバ300の全体処理部311は、秘匿キーワードから暗号化キーワード本体を取得する。
 管理サーバ300の全体処理部311は、指定ブロック337の記述に従い、該当する差分鍵マスクの該当ブロックを取得する。例えば、暗号化アルゴリズム344として鍵長256ビットAES暗号CBCモード、指定ブロック337にn番目が指定されている場合、全体処理部311は差分鍵マスクを128ビット毎のブロックに分割し、差分鍵マスクS1、S2、……Snから、n番目のデータであるSnを差分鍵マスクの該当ブロックとして出力する。
 管理サーバ300の全体処理部311は、基本演算部317に暗号化キーワード本体と差分鍵マスクの該当ブロックを入力し、排他的論理和(XOR算)を計算し、出力結果Wn’を新しい暗号化キーワード本体として取得する。
 ここで計算式として、(数13)が成り立つ。
(数13)
Wn xor Sn = Cn xor Pn xor Tn’
 (数13)より、中間暗号化キーワードCnと乱数ストリームRnと従来の鍵ストリームTnの排他的論理和(xor)で算出(Wi= Ci xor Pi xor Ti)されていた暗化キーワード文本体が、中間暗号文Ciと乱数ストリームRiと新しい鍵ストリームTi’の排他的論理和(xor)で算出(Wi’= Ci xor Pi xor Ti’)で算出される新しい暗号化キーワード本体に変形された。従って、従来の鍵ストリームTiが新しい鍵ストリームTi’に変更された。
 管理サーバ300の全体処理部311は、初期ベクトルと、暗号化キーワード本体、検察タグを連結したデータを新しい秘匿キーワードとする。
 管理サーバ300の全体処理部311は、秘匿キーワードの変換処理用に確保した作業領域を一時記憶部380から解放する。
 なお、管理サーバ300における秘匿データ343の更新手順は、必ずしも上記の記述通りの順序に従う必要はなく、異なる順序で実施してもよい。
 <秘匿データの復号フロー>
 管理サーバ300は、第一の実施の形態の秘匿データの更新フローと同様の手順で、秘匿データを更新する。検索クライアント200は、第一の実施の形態の秘匿データの復号処理のと同様の手順で、秘匿データを復号する。
 このように、サーバ/クライアントモデルにおいて、サーバが暗号化状態で暗号化データを検索できる状態を維持したまま、かつ暗号化状態である秘密鍵に対応する暗号化データを別の秘密鍵に対応する暗号化データに変換することにより、サーバに対しても安全な状態を維持可能なシステムを構築できる。また、暗号化状態のデータを検索可能なサーバ/クライアント型のシステムにおいて、クライアント側の秘密鍵の更新に伴い、サーバ側の暗号化状態のデータを復号しないため、利用者側の負荷をかけずに効率的に再暗号化することができる。
100:登録クライアント、
200:検索クライアント、
300:管理サーバ、
400:ネットワーク、
600:コンピュータ、
101、201、301:入力部、
102、202、302:出力部、
103、203、303:通信部、
110、210、310:制御部、
111、211、311:全体処理部、
112、212:暗号化部、
213、313:復号化部、
114、214:擬似乱数生成部、
115、215、315:不可逆変換部、
116、216、316:準同型関数部、
117、217、317:基本演算部、
118、218:鍵生成部
120、220、320:記憶部、
130、230、330:データ記憶部、
140、240、340:暗号化コンテキスト、
131、342:平文データ、
135、335:検索タグ長、
136、236、336:初期ベクトル、
141、244、344:暗号化アルゴリズム
237、337:指定ブロック、
241:平文キーワード、
341:データベース、
343:秘匿データ、
150、250、350:鍵記憶部、
151、251:乱数マスク生成鍵、
152、252:データ暗号化鍵、
253:データ復号化鍵、
160、260、360:固定型秘密鍵
170、270:更新型秘密鍵
171、271:鍵マスク生成鍵
172、272:鍵マスク用ノンス
273、354:更新型検索鍵
180、280、380:一時記憶部、
601:CPU(Central Processing Unit)、
602:メモリ、
603:外部記憶装置、
604:通信装置、
605:出力装置、
606:入力装置、
607:読書装置、
608:記憶媒体、
609:内部通信線。

Claims (10)

  1.  登録クライアントと管理サーバとがネットワークを介して接続された検索可能暗号処理システムにおいて、
     前記登録クライアントは、平文データを暗号化するための第一の秘密鍵と、新たに前記平文データを暗号化するための第二の秘密鍵との差分に基づいて、前記第一の秘密鍵により暗号化された秘匿データを前記第二の秘密鍵により更新するための差分鍵マスクを生成する登録クライアント処理部、
     を備えることを特徴とする検索可能暗号処理システム。
  2.  前記登録クライアントは、
     所定のアルゴリズムにしたがって前記第二の秘密鍵を生成する鍵生成部、を備え、
     前記管理サーバは、
     前記第二の秘密鍵により前記秘匿データを更新するサーバ処理部、を備え、
     前記登録クライアント処理部は、前記秘匿データを更新した前記第二の秘密鍵を新たな前記第一の秘密鍵とする、
     ことを特徴とする請求項1に記載の検索可能暗号処理システム。
  3.  前記管理サーバは、
     前記サーバ処理部が、前記秘匿データと前記差分鍵マスクとの差分から得られた前記第二の秘密鍵により前記秘匿データを更新する、
     ことを特徴とする請求項2に記載の検索可能暗号処理システム。
  4.  前記管理サーバは、
     前記サーバ処理部が、前記秘匿データに含まれる暗号化データ本体のサイズを算出し、前記登録クライアントにより生成された新たな差分鍵マスクと前記秘匿データとの差分により得られた前記第二の秘密鍵により前記秘匿データを更新し、
     前記登録クライアントは、
     前記登録クライアント処理部が、少なくとも前記サイズ以上となる前記差分鍵マスクを前記新たな差分鍵マスクとして生成する、
     ことを特徴とする請求項3に記載の検索可能暗号処理システム。
  5.  前記登録クライアントは、
     第一の鍵マスク生成鍵と第一の鍵マスク用ノンスと擬似乱数発生部とに基づいて前記第一の秘密鍵を生成し、第二の鍵マスク生成鍵と第二の鍵マスク用ノンスと擬似乱数発生部とに基づいて前記第二の秘密鍵を生成する鍵生成部、を備え、
     前記登録クライアント処理部は、前記鍵生成部により生成された前記第一の秘密鍵と前記第二の秘密鍵との差分に基づいて、前記差分鍵マスクを生成する、
     ことを特徴とする請求項1に記載の検索可能暗号処理システム。
  6.  前記検索可能暗号処理システムは、ネットワークを介して前記管理サーバに接続された検索クライアントを備え、
     前記検索クライアントは、
     平文キーワードと、前記平文キーワードを暗号化するための第一の検索用秘密鍵とに基づいて、秘匿キーワードを生成する検索クライアント処理部、を備え
     前記管理サーバは、
     前記サーバ処理部が、前記秘匿キーワードと前記秘匿データとの差分に基づいて得られたデータと、前記秘匿データとが一致するか否かを判定することにより、暗号化したまま前記秘匿データを検索する、
     ことを特徴とする請求項1に記載の検索可能暗号処理システム。
  7.  前記検索クライアントは、
     前記検索クライアント処理部が、前記第一の検索用秘密鍵と、新たに前記平文キーワードを暗号化するための第二の検索用秘密鍵との差分に基づいて、前記第一の検索用秘密鍵により暗号化された秘匿キーワードを前記第二の検索用秘密鍵により更新するための検索用差分鍵マスクを生成する、
     を備えることを特徴とする請求項6に記載の検索可能暗号処理システム。
  8.  前記管理サーバは、
     前記サーバ処理部が、前記秘匿キーワードと前記検索用差分鍵マスクとの差分から得られた前記第二の検索用秘密鍵により前記秘匿キーワードを更新する、
     ことを特徴とする請求項7に記載の検索可能暗号処理システム。
  9.  前記管理サーバは、ネットワークを介して複数の前記検索クライアントに接続され、
     前記サーバ処理部は、前記検索クライアントに対応する前記第一の検索用秘密鍵ごとに、前記検索用差分鍵マスクを生成する、
     ことを特徴とする請求項7に記載の検索可能暗号処理システム。
  10.  前記管理サーバは、
     前記サーバ処理部が、それぞれの前記検索クライアントについて、生成された前記秘匿キーワードと前記検索用差分鍵マスクとの差分から得られた前記第二の検索用秘密鍵により前記秘匿キーワードを更新する、
     を備えることを特徴とする請求項9に記載の検索可能暗号処理システム。
PCT/JP2016/074170 2015-08-25 2016-08-19 検索可能暗号処理システム WO2017033843A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US15/746,872 US10733317B2 (en) 2015-08-25 2016-08-19 Searchable encryption processing system
EP16839190.2A EP3343829A4 (en) 2015-08-25 2016-08-19 SEARCHABLE CRYPTOGRAM PROCESSING SYSTEM

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2015165619A JP6961324B2 (ja) 2015-08-25 2015-08-25 検索可能暗号処理システム
JP2015-165619 2015-08-25

Publications (1)

Publication Number Publication Date
WO2017033843A1 true WO2017033843A1 (ja) 2017-03-02

Family

ID=58100267

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2016/074170 WO2017033843A1 (ja) 2015-08-25 2016-08-19 検索可能暗号処理システム

Country Status (4)

Country Link
US (1) US10733317B2 (ja)
EP (1) EP3343829A4 (ja)
JP (1) JP6961324B2 (ja)
WO (1) WO2017033843A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018148493A (ja) * 2017-03-08 2018-09-20 日本放送協会 鍵生成装置、中間暗号化装置、委託暗号化装置、データ検索装置、復号装置およびそれらのプログラム
US11658808B2 (en) * 2019-08-21 2023-05-23 Arm Limited Re-encryption following an OTP update event
CN111092721B (zh) * 2019-12-03 2023-03-03 深圳前海微众银行股份有限公司 一种设置访问口令的方法及装置
DE112021005887T5 (de) * 2021-01-13 2023-08-31 Mitsubishi Electric Corporation Durchsuchbares Verschlüsselungssystem und durchsuchbares Verschlüsselungsverfahren
CN116980111A (zh) * 2023-09-22 2023-10-31 北京格尔国信科技有限公司 一种密钥更新方法、系统、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012077541A1 (ja) * 2010-12-08 2012-06-14 株式会社日立製作所 検索可能暗号処理システム
US20130046974A1 (en) * 2011-08-16 2013-02-21 Microsoft Corporation Dynamic symmetric searchable encryption
JP2015177506A (ja) * 2014-03-18 2015-10-05 国立研究開発法人情報通信研究機構 暗号データ更新システム、暗号データ更新方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005252384A (ja) * 2004-03-01 2005-09-15 Rikogaku Shinkokai 暗号化データ保管サーバシステム、暗号化データ保管方法及び再暗号化方法
TWI401583B (zh) * 2009-08-06 2013-07-11 Phison Electronics Corp 資料擾亂/解擾亂與資料處理方法及其控制器與儲存系統
JP2014119486A (ja) * 2012-12-13 2014-06-30 Hitachi Solutions Ltd 秘匿検索処理システム、秘匿検索処理方法、および秘匿検索処理プログラム
JP6033741B2 (ja) * 2013-06-14 2016-11-30 株式会社日立製作所 暗号化鍵更新システム及びその方法
JP6173904B2 (ja) * 2013-12-13 2017-08-02 株式会社東芝 共通鍵暗号装置及びプログラム、並びに、共通鍵復号装置及びプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012077541A1 (ja) * 2010-12-08 2012-06-14 株式会社日立製作所 検索可能暗号処理システム
US20130046974A1 (en) * 2011-08-16 2013-02-21 Microsoft Corporation Dynamic symmetric searchable encryption
JP2015177506A (ja) * 2014-03-18 2015-10-05 国立研究開発法人情報通信研究機構 暗号データ更新システム、暗号データ更新方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
ANONO, Y. ET AL.: "Fast and Secure Linear Regression and Biometric Authentiction with Security Update", CRYPTOLOGY EPRINT ARCHIVE, REPORT:2015/692, July 2015 (2015-07-01), XP 061018967, Retrieved from the Internet <URL:http://eprint.iacr.org/2015/692> [retrieved on 20160930] *
See also references of EP3343829A4 *
YOSHINORI AONO ET AL.: "Security Updatable Jun Dokei Ango o Mochiita Hitoku Data no Senkei Kaiki Enzan", 2015 NEN SYMPOSIUM ON CRYPTOGRAPHY AND INFORMATION SECURITY KOEN RONBUNSHU, January 2015 (2015-01-01), pages 1 - 8, XP009508857 *

Also Published As

Publication number Publication date
EP3343829A1 (en) 2018-07-04
US20190130125A1 (en) 2019-05-02
EP3343829A4 (en) 2019-02-06
US10733317B2 (en) 2020-08-04
JP2017044779A (ja) 2017-03-02
JP6961324B2 (ja) 2021-11-05

Similar Documents

Publication Publication Date Title
EP3058678B1 (en) System and method for dynamic, non-interactive, and parallelizable searchable symmetric encryption
CN110337649B (zh) 用于搜索模式未察觉的动态对称可搜索加密的方法和系统
JP6144992B2 (ja) 検索可能暗号処理システム及び方法
Salam et al. Implementation of searchable symmetric encryption for privacy-preserving keyword search on cloud storage
CN108768951B (zh) 一种云环境下保护文件隐私的数据加密和检索方法
CN105610793B (zh) 一种外包数据加密存储与密文查询系统及其应用方法
WO2017033843A1 (ja) 検索可能暗号処理システム
US20130262863A1 (en) Searchable encryption processing system
CN105245328A (zh) 一种基于第三方的用户及文件的密钥产生管理方法
CN108632385B (zh) 基于时间序列的多叉树数据索引结构云存储隐私保护方法
WO2021166787A1 (ja) 情報処理システム、情報処理装置、情報処理方法、および、情報処理プログラム
Ahmad et al. Hybrid cryptography algorithms in cloud computing: A review
JP2014175970A (ja) 情報配信システム、情報処理装置及びプログラム
KR101979267B1 (ko) 클라우드 저장 기반 암호화 시스템 및 방법
CN114036240A (zh) 一种基于区块链的多服务商隐私数据共享系统和方法
JP6033741B2 (ja) 暗号化鍵更新システム及びその方法
JP6653246B2 (ja) 計算機システム及びデータ管理方法
CN108512840A (zh) 一种基于泄序加密的密文检索方法
JP2021534443A (ja) データをセキュアにするための方法およびシステム
CN104794243B (zh) 基于文件名的第三方密文检索方法
KR101140576B1 (ko) 암호화 문서에 대한 다자간 검색 시스템 및 그 방법
WO2008065351A1 (en) Self encryption
CN106789007B (zh) 一种基于密文检索的网络信息审查方法与系统
GB2444343A (en) Encryption system for peer-to-peer networks in which data is divided into chunks and self-encryption is applied
CN113609502A (zh) 一种基于区块链的空间众包系统及方法

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 16839190

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 2016839190

Country of ref document: EP