JP6589051B2 - データベースシステム及びデータ検索方法 - Google Patents

データベースシステム及びデータ検索方法 Download PDF

Info

Publication number
JP6589051B2
JP6589051B2 JP2018507857A JP2018507857A JP6589051B2 JP 6589051 B2 JP6589051 B2 JP 6589051B2 JP 2018507857 A JP2018507857 A JP 2018507857A JP 2018507857 A JP2018507857 A JP 2018507857A JP 6589051 B2 JP6589051 B2 JP 6589051B2
Authority
JP
Japan
Prior art keywords
information
encrypted
search
data
database
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
JP2018507857A
Other languages
English (en)
Other versions
JPWO2017168535A1 (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of JPWO2017168535A1 publication Critical patent/JPWO2017168535A1/ja
Application granted granted Critical
Publication of JP6589051B2 publication Critical patent/JP6589051B2/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/602Providing cryptographic facilities or services
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • 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
    • 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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0435Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply symmetric encryption, i.e. same key used for encryption and decryption
    • 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
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • H04L2209/046Masking or blinding of operations, operands or results of the operations

Description

本発明は、データを暗号化して鍵を持たないシステム管理者に隠蔽した状態でデータを保存する秘匿化データベースシステムに関する。
近年、ストレージの低価格化及び大規模化、並びにネットワークの整備等の情報技術の発展に伴い、蓄積される情報量が増大している。このような状況の下、いわゆるビッグデータを活用しようという動きが活発化している。
また、クラウドコンピューティングの普及が進んでおり、クラウド上のビッグデータ分析基盤の活用が広まっていくと考えられる。
医療情報及び個人情報等は極めて機微性が高く、クラウド上からのデータの復元及びデータ持ち出し等の情報漏えいのリスクに対処する必要がある。その対処法の1つとして、ユーザのみがデータの暗号化の鍵を管理することによって、鍵を管理していないクラウドのシステム管理者に対してデータを隠蔽し、クラウド上でデータを復元できない状態にし、クラウドからのデータの持ち出しリスクを低減する秘匿化データベースシステムが有効である。
前述した秘匿化データベースシステムに、さらに、暗号化データの検索を可能とする検索可能暗号技術などを用いることが有効である。これによって、クラウド上でデータを復号化することなく、データの検索及び分析が可能となる。
本技術の背景技術として、特許文献1、特許文献2、特許文献3、及び非特許文献1がある。特許文献1には、「データベースシステムにネットワークを介して接続するユーザシステムであって、暗号化と復号化のための鍵情報を管理する手段と、データ及び/又はメタデータの安全性設定情報を記憶する記憶部と、データベース操作命令に対して暗号化の必要の有無を判別し、暗号化が必要な場合、データ及び/又はメタデータに応じた暗号化アルゴリズムを選択して暗号化した上でデータベース制御手段に送信してデータベースの操作を実行し、暗号化が不要な場合、前記データベース操作命令をデータベース制御手段に送信してデータベース操作を実行し、前記データベース制御手段から送信された処理結果を受け取り、前記処理結果のデータ及び/又はメタデータの復号化あるいは変換が必要な場合、必要な復号化あるいは変換を行い、前記データベース操作命令の応答として返すアプリケーション応答手段と、データベースに格納するデータの安全性情報を設定する安全性設定手段を備えるシステム」が開示されている。
また、特許文献2には、同値関係を保存する暗号化及び順序関係をクラウド上に保持すること等により暗号化状態での検索・ソート等を可能とするシステムが開示されている。
また、非特許文献1には、暗号化データの部分情報を開示可能な鍵をサーバ側に送付することによって、検索を高速化する方法が開示されている。さらに、非特許文献1には、Webアプリケーションシステムにおいて、プラグインとして利用者のブラウザ上で動作する暗号化/復号化の仕組みを設け、データベースのユーザ定義関数として検索可能暗号を追加し、SQL文を用いて当該暗号を利用するシステムが開示されている。
特開2014−13582号公報 特開2013−25361号公報 特開2012−123614号公報
松田 規、他4名、"検索可能暗号の高速化とWebアプリケーションへの適用方式に関する提案"、平成25年7月、「マルチメディア,分散,協調とモバイル(DICOMO2013)シンポジウム」
近年、一般的なPCに加えて、スマートフォン及びタブレット端末等ユーザ端末が多様化している。そのため、様々なユーザ端末が、直接、クラウドにアクセスし、クラウド上のアプリケーションサーバを介してデータベースサーバを操作し、主要なデータ処理をクラウド側で行なうクラウドサービスの利用形態が広まっている。
前述した利用形態におけるデータ取得処理は、一般的に以下の流れとなる。まず、ユーザ端末が、アプリケーションサーバにキーワード等を含むデータの取得条件を送信する。次に、クラウド上のアプリケーションサーバが、データの取得条件を解釈し、解釈の結果に基づいてデータベース操作命令を生成し、データベース操作命令をデータベースサーバに送信することによって、要求された情報をデータベースサーバから取得する。最後に、アプリケーションサーバが、取得した情報をユーザ端末に送信する。
ユーザのみが鍵を管理し、データベースサーバには当該鍵を用いて暗号化されたデータを格納する秘匿化データベースシステムでは、アプリケーションサーバが生成する一般的なデータベース操作命令が処理できない場合がある。
具体的には、暗号文間の同値関係及び順序関係が隠蔽される確率的暗号方式で暗号化を行なった秘匿化データベースシステムに対して、データベースサーバは、次の(1)から(4)のデータ取得処理を実行することができない。
(1)2つの異なるテーブルに含まれるレコードを結合し、結合した情報を取得するデータベース操作命令。例えば、患者テーブル及び診断テーブルから各患者の情報を含むレコードと診断情報を含むレコードとを結合した結合結果を取得する場合に、前述したデータベース操作命令が発行される。
(2)部分的なキーワードを検索条件として、任意のテーブルのレコードに含まれるカラムと部分的に一致するレコードを取得するデータベース操作命令。例えば、患者の氏名の一部をキーワードとして入力し、患者テーブルから部分的に一致する患者のレコードを取得する場合に、前述したデータベース操作命が発行される。
(3)所定のカラムの値の範囲、例えば、上限値及び下限値を検索条件として、任意のテーブルから指定された範囲に含まれるレコードを取得するデータベース操作命令。例えば、患者の年齢の上限値及び下限値を範囲の条件として、患者テーブルから指定された範囲に含まれる患者のレコードを取得する場合に、前述したデータベース操作命が発行される。
(4)所定のテーブルから、指定された順番にソートされた所定の数のレコードを取得するデータベース操作命令。例えば、患者IDの昇順に並び替えられた一定数のレコードを患者テーブルから取得する場合に、前述したデータベース操作命令が発行される。
本発明は、前述したデータベース操作命令が実行可能な秘匿化データベースシステム及び秘匿化データベースシステムにおけるデータの取得方法を提案するものである。
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、確率的暗号化方式を用いて暗号化された暗号化データを一つ以上含む登録情報を記憶するデータベースサーバ、及び、前記データベースサーバから前記暗号化データを取得するためのデータの取得要求を送信する端末を含むデータベースシステムであって、前記確率的暗号化方式は、暗号化前のデータ値が、暗号化処理毎に異なるデータ値となるように前記暗号化データが生成される暗号化方式であり、前記端末は、ハッシュ値と準同形関数の出力値によるマスクを用いた確率的暗号化方式にしたがって前記データベースサーバに格納するデータを暗号化する暗号化部と、前記暗号化データを復号化する復号化部と、複数の異なる入力値から同一の値を出力する準同形関数を用いたマスクによる確率的暗号化にしたがって、暗号化データの検索に用いられる検索クエリが暗号化された暗号化検索クエリを生成する暗号化検索クエリ生成部と、平文の検索条件を暗号化し、暗号化された前記検索条件を含む前記データの取得要求を送信する付加処理部と、を有し、前記データベースサーバは、検索処理の種別毎に、前記データの取得要求を前記データベースサーバが処理するデータベース操作命令に変換するための定義パターンを格納するデータベース操作命令定義情報と、前記検索処理の種別毎の検索用付加情報と、を保持し、前記データベース操作命令定義情報に基づいて、前記端末から受信したデータ取得要求を変換することによって前記データベース操作命令を生成するデータベース操作命令生成部と、前記データベース操作命令及び前記検索用付加情報を用いて、要求された前記暗号化データを取得するデータベース制御部と、前記検索用付加情報を用いて、前記暗号化検索クエリと一致する前記暗号化データを判定する暗号一致判定部と、を有し、前記付加処理部は、前記検索用付加情報を用いた検索処理を行うためのデータの取得要求を生成し、前記データベース制御部は、前記データベース操作命令の実行時に、前記暗号一致判定部を呼び出し、前記暗号一致判定部の処理結果に基づいて、前記検索条件を満たす前記暗号化データを取得し、前記取得された暗号化データを含む処理結果を前記端末に送信し、前記復号化部は、前記処理結果に含まれる前記暗号化データを復号化することを特徴とする。
本発明の一形態によれば、端末は、暗号化データを復号化することなく、効率的に暗号化データをデータベースサーバから取得できる。前述した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
実施例1の秘匿化データベースシステムの構成例を示すブロック図である。 実施例1の暗号化メイン情報群のデータ構造の一例を示す図である。 実施例1のデータベース側付加情報群のデータ構造の一例を示す図である。 実施例1のSQL定義情報のデータ構造の一例を示す図である。 実施例1のメモリに一時的に格納される一時情報のデータ構造の一例を示す図である。 実施例1の結合情報取得処理の準備処理の流れを説明するシーケンス図である。 実施例1の結合設定入力画面の一例を示す図である。 実施例1の結合設定結果表示画面の一例を示す図である。 実施例1のユーザ側付加処理部が実行する結合対象カラム決定処理の一例を説明するフローチャートである。 実施例1の結合情報取得処理の流れを示すシーケンス図である。 実施例1の患者情報取得画面の一例を示す図である。 実施例1の患者病名一覧表示画面の一例を示す図である。 実施例2のユーザ側付加処理部の論理構成を示すブロック図である。 実施例2のデータベース側付加処理部の論理構成を示すブロック図である。 実施例2のメモリに一時的に格納されるデータのデータ構造の一例を示す図である。 実施例2の暗号化メイン情報群のデータ構造の一例を示す図である。 実施例2のデータベース側付加情報群のデータ構造の一例を示す図である。 実施例2のメモリに一時的に格納される一時情報のデータ構造の一例を示す図である。 実施例2の部分一致検索の準備処理の流れを説明するシーケンス図である。 実施例2の部分一致設定入力画面の一例を示す図である。 実施例2の部分一致設定結果表示画面の一例を示す図である。 実施例2の部分情報生成部が実行する部分情報生成処理の一例を説明するフローチャートである。 実施例2の部分一致検索の処理の流れを示すシーケンス図である。 実施例2の患者情報取得画面の一例を示す図である。 実施例2の患者情報表示画面の一例を示す図である。 実施例2の部分一致検索クエリ生成部が実行する部分一致検索クエリ生成処理の一例を説明するフローチャートである。 実施例2の部分一致ID取得部が実行する部分一致ID取得処理の一例を説明するフローチャートである。 実施例3のユーザ側付加処理部の論理構成を示すブロック図である。 実施例3のユーザ側付加情報群のデータ構造の一例を示す図である。 実施例3のメモリに一時的に格納されるデータのデータ構造の一例を示す図である。 実施例3の暗号化メイン情報群のデータ構造の一例を示す図である。 実施例3のデータベース側付加情報群のデータ構造の一例を示す図である。 実施例3のメモリに一時的に格納される一時情報のデータ構造の一例を示す図である。 実施例3の範囲検索/ソートの準備処理の流れを説明するシーケンス図である。 実施例3の範囲検索/ソート設定入力画面の一例を示す図である。 実施例3の範囲検索/ソート設定結果表示画面の一例を示す図である。 実施例3の対応範囲情報生成部が実行する対応範囲情報生成処理を説明するフローチャートである。 実施例3の対応範囲ラベル情報生成部が実行する対応範囲ラベル情報生成処理を説明するフローチャートである。 実施例3の範囲検索/ソート処理の流れを示すシーケンス図である。 実施例3の患者情報取得画面の一例を示す図である。 実施例3の患者情報表示画面の一例を示す図である。 実施例3の範囲検索/ソートクエリ生成部が実行する範囲検索/ソートクエリ生成処理を説明するフローチャートである。 実施例3のユーザ端末が実行する結果表示処理の一例を説明するフローチャートである。
以下、図面を参照して本発明の実施例を説明する。
(1−1)実施例1の計算機システムの構成
図1は、実施例1の秘匿化データベースシステム1の構成例を示すブロック図である。
秘匿化データベースシステム1は、ユーザシステムを構成するユーザ端末2、並びに、データセンタシステムを構成するアプリケーションサーバ3及びデータベースサーバ4から構成される。図1の秘匿化データベースシステム1に含まれるユーザ端末2、アプリケーションサーバ3、及びデータベースサーバ4はそれぞれ1つずつであるが、秘匿化データベースシステム1は、各構成を2つ以上含んでもよい。
秘匿化データベースシステム1は、以下の機能を提供するシステムである。1つの機能は、ユーザ端末2を操作するユーザが管理するデータを暗号化し、アプリケーションサーバ3を介してデータベースサーバ4に暗号化データ(暗号文)を保存する機能である。また、もう1つの機能は、アプリケーションサーバ3及びデータベースサーバ4が連携して、データベースサーバ4に格納される暗号化データに対する検索機能及び分析機能である。
実施例1の秘匿化データベースシステム1は、検索機能の1つとして、結合情報取得処理を実現するための機能を提供する。結合情報取得処理は、2つの異なるテーブルに含まれるレコードを結合し、結合した情報を取得するための処理である。
ユーザ端末2及びアプリケーションサーバ3は、ユーザ内部ネットワーク5、外部ネットワーク6、及びクラウド内部ネットワーク7を介して互いに接続する。また、アプリケーションサーバ3及びデータベースサーバ4は、クラウド内部ネットワーク7を介して互いに接続する。
ユーザ内部ネットワーク5は、ユーザの事業所内のローカルエリアネットワーク等を含むネットワークである。外部ネットワーク6は、インターネット及びキャリアが提供するワイドエリアネットワーク等を含むネットワークである。クラウド内部ネットワーク7は、データセンタ内のローカルエリアネットワーク等を含むネットワークである。なお、本発明は、各構成を接続するネットワークの種別に限定されない。
ユーザ端末2は、ユーザが使用するパーソナルコンピュータ、タブレット端末、及びスマートフォン等の装置である。ユーザ端末2は、ユーザによって入力された取得要求の要求等を暗号化し、アプリケーションサーバ3に暗号化された要求を送信し、また、当該要求に対する暗号化された処理結果を受信する。また、ユーザ端末2は、暗号化された処理結果を受信した場合、当該処理結果を復号化し、復号化された処理結果の取捨選択又は整形等の処理を実行する。また、ユーザ端末2は、処理結果を表示し、また、処理結果を記憶する。
ユーザ端末2は、ハードウェア構成として、メモリ210、表示装置220、入力装置230、CPU240、NIC(Network Interface Card)250、及び記憶装置260を有する。なお、ユーザ端末2は、他のハードウェアを有してもよい。
CPU240は、メモリ210に格納されるプログラムを実行する。CPU240がプログラムを実行することによって、ユーザ端末2が有する機能を実現できる。以下の説明では、機能部を主語に処理を説明する場合、CPU240が当該機能部を実現するプログラムを実行していることを示す。
メモリ210は、CPU240によって実行されるプログラム及び当該プログラムの実行に使用される情報を格納する。また、メモリ210は、ワークエリア等を含む。メモリ210に格納されるプログラムの詳細は後述する。なお、メモリ210に格納されるプログラムは、記憶装置260又は外部の記憶装置に格納されてもよい。この場合、CPU240は、記憶装置260又は外部の記憶装置からプログラムを読み出し、読み出されたプログラムをメモリ210に展開する。
記憶装置260は、データを永続的に格納する不揮発性の記憶装置である。記憶装置260は、例えば、HDD(Hard Disk Drive)及びSSD(Solid State Drive)等が考えられる。記憶装置260に格納されるデータの詳細は後述する。
表示装置220は、ユーザに対して各種情報を表示するための装置である。表示装置220は、例えば、ディスプレイ等が考えられる。入力装置230は、ユーザがユーザ端末2に対して各種情報を入力するための装置である。入力装置230は、例えば、キーボード、マウス、及びタッチパネル等が考えられる。
ここで、メモリ210に格納されるプログラムについて説明する。メモリ210は、ブラウザ211、暗号化部212、復号化部213、暗号化検索クエリ生成部214、鍵管理部215、及びユーザ側付加処理部216を実現するプログラムを格納する。
ブラウザ211は、表示装置220に、入力装置230を介してユーザが要求を入力するための画面、及び要求に対する処理結果を参照するための画面等を表示する。
暗号化部212は、平文の入力を受け付け、特許文献3に記載の確率的暗号化方式に基づいて平文を暗号化することによって暗号文(暗号化データ)を出力する。
ここで、確率的暗号化方式は、暗号化されていないデータ(平文)から、同値関係及び大小関係が秘匿されたランダムな暗号文(暗号化データ)を生成する暗号化のアルゴリズムである。確率的暗号化方式では、平文及び暗号文が一対多の対応関係を有する。
特許文献3に記載の確率的暗号化方式では、ハッシュ値と準同形関数の出力値によるマスクを用いた確率的暗号化方式にしたがってデータベースサーバ4に格納するデータが暗号化される。また、特許文献3に記載の確率的暗号化方式では、複数の異なる入力値から同一の値を出力する準同形関数を用いたマスクによる確率的暗号化にしたがって、暗号化データの検索に用いられるクエリが暗号化される。
より具体的には、特許文献3には、「確率的暗号化方式により暗号化された登録データを記憶するDBサーバと、検索クライアントとを含み、前記検索クライアントから受信した、前記DBサーバが記憶するデータの検索を要求する検索クエリに従い、前記DBサーバが記憶する前記データの暗号化を解除せずに、検索する検索可能暗号処理システムであって、前記確率的暗号化方式は、同一のデータ値の平文から異なるデータ値の暗号文を生成するデータの暗号化方式であり、前記検索クライアントは、前記検索クエリを記憶する記憶部と、前記検索クエリを暗号化する制御部と、暗号化した前記検索クエリを送信する通信部とを備え、前記検索クライアントにおける前記制御部は、第1の乱数を生成する乱数生成部と、前記第1の乱数により前記検索クエリを前記確率的暗号化方式で暗号化する基本演算部と、前記第1の乱数を入力値とする準同型関数の関数値を出力値とする準同型関数部とを備え、前記検索クライアントにおける前記制御部は、前記準同型関数部が出力した前記関数値を変換し、ハッシュ値を出力する圧縮関数部を備え、前記DBサーバは、前記検索クエリを受信する通信部と、暗号化された前記検索クエリと暗号化された前記登録データを記憶する記憶部と、記憶する前記登録データが前記検索クエリに該当するかを決定する制御部とを備え、前記DBサーバにおける前記制御部は、暗号化された前記登録データと暗号化された前記検索クエリとの乱数の相関を導出する全体処理部と、前記相関を入力値とする準同型関数の関数値を出力値とする準同型関数部とを備え、前記検索クライアントが送信する暗号化された前記検索クエリは、前記基本演算部により、前記確率的暗号化方式で暗号化された暗号文と、前記圧縮関数部が出力する前記ハッシュ値から構成されるデータが暗号化されていること」が記載されている。
特許文献3に記載の確率的暗号化方式を用いることによって、データベースサーバ4側で暗号化データのみを用いた検索が可能となる。
以下の説明では、暗号化データと区別するために、暗号化されていないデータを平文データとも記載する。また、本明細書の確率的暗号化方式は、特許文献3に記載の確率的暗号化方式を示す。
復号化部213は、暗号文(暗号化データ)の入力を受け付け、確率的暗号化方式の暗号処理とは逆の手順にしたがって暗号文を復号化することによって平文(平文データ)を出力する。
暗号化検索クエリ生成部214は、平文データの入力を受け付け、暗号一致判定処理に使用される暗号化された検索クエリを出力する。なお、暗号一致判定処理は、暗号一致判定部412によって実行される。本明細書では、暗号化された検索クエリを単に検索クエリとも記載する。
鍵管理部215は、暗号化及び復号化に使用する鍵情報を管理する。鍵管理部215は、暗号化部212、復号化部213、及び暗号化検索クエリ生成部214から鍵取得要求を受け付けた場合、各部に処理に必要な鍵情報を送信する。
ユーザ側付加処理部216は、データベースサーバ4から暗号化データを取得するための処理を実行する。具体的には、以下のような3つの処理が実行される。
(1)ユーザ側付加処理部216は、データベースサーバ4から要求された暗号化データを検索し、取得するための準備処理を実行する。(2)ユーザ側付加処理部216は、ユーザがブラウザ211を介して入力したデータの取得要求をアプリケーションサーバ3が解釈できるデータの取得要求に変換し、変換されたデータの取得要求をアプリケーションサーバ3に出力する。(3)ユーザ側付加処理部216は、アプリケーションサーバ3から受信したデータの取得要求に対する処理結果の情報を入力として受け付け、データの取得要求にしたがってデータの取捨選択及びデータの整形を行った後、処理結果を出力する。
次に、記憶装置260に格納される情報について説明する。記憶装置260は、メイン情報群261及びユーザ側付加情報群262を格納する。
メイン情報群261は、ユーザ端末2を操作するユーザが管理する情報であり、データベースサーバ4に保存される前の平文データを格納する。例えば、メイン情報群261には、テーブル形式の情報が複数格納される。なお、メイン情報群261に格納されるデータのデータ形式に限定されない。
通常、メイン情報群261は暗号化されてデータベースサーバ4に格納されるため、ユーザ端末2は、メイン情報群261を保持していない。ただし、初めてデータをデータベースサーバ4に登録する場合には、ユーザ端末2が、メイン情報群261を保持することが考えられる。
ユーザ側付加情報群262は、データの取得要求を生成する場合に参照される付加情報を格納する。ユーザ側付加情報群262を用いた処理は、実施例2で説明する。
アプリケーションサーバ3は、ユーザ端末2からデータの取得要求を受信し、当該データの取得要求を用いて暗号化データに対する処理を行うためのデータベース操作命令を生成し、データベースサーバ4に生成されたデータベース操作命令を送信する。また、アプリケーションサーバ3は、データベース操作命令に対する処理結果をデータベースサーバ4から受信し、当該処理結果をユーザ端末2に送信する。
本実施例では、データベース操作命令としてSQLを例に説明する。なお、本実施例は、データベース操作命令の種別に限定されない。
アプリケーションサーバ3は、ハードウェア構成として、メモリ310、表示装置320、入力装置330、CPU340、NIC350、及び記憶装置360を有する。なお、アプリケーションサーバ3は、他のハードウェアを有してもよい。メモリ310、表示装置320、入力装置330、CPU340、NIC350、及び記憶装置360は、メモリ210、表示装置220、入力装置230、CPU240、NIC250、及び記憶装置260と同一のものであるため説明を省略する。
メモリ310に格納されるプログラムについて説明する。メモリ310は、アプリケーション部311、SQL生成部312、及びデータベースインタフェース部313を実現するプログラムを格納する。
アプリケーション部311は、ユーザ端末2から受信したデータの取得要求を処理し、データの取得要求に含まれる入力情報をSQL生成部312に送信し、また、データの取得要求に対する処理結果をデータベースサーバ4から受信する。
SQL生成部312は、SQL定義情報361に基づいて、データの取得要求に含まれる入力情報に対応する暗号化データを含むSQLを生成し、データベースインタフェース部313に送信する。また、SQL生成部312は、当該SQLの処理結果をデータベースインタフェース部313から受信し、当該処理結果をアプリケーション部311に送信する。
データベースインタフェース部313は、SQL生成部312から受信したSQLをデータベースサーバ4に送信し、データベースサーバ4からSQLの処理結果を受信し、また、SQL生成部312に当該処理結果を送信する。
記憶装置360に格納される情報について説明する。記憶装置360は、SQL定義情報361を格納する。
SQL定義情報361は、データの取得要求の種類ごとのSQLの生成パターンを定義した情報を格納する。
本実施例では、SQL定義情報361は記憶装置360に格納されるが、メモリ310に格納されてもよい。また、SQL定義情報361は、記憶装置360及びメモリ310の両方に格納されてもよい。
データベースサーバ4は、アプリケーションサーバ3から受信したSQLを実行することによって暗号化データを含む処理結果を生成し、当該処理結果をアプリケーションサーバ3に送信する。
データベースサーバ4は、ハードウェア構成として、メモリ410、表示装置420、入力装置430、CPU440、NIC450、及び記憶装置460を有する。なお、データベースサーバ4は、他のハードウェアを有してもよい。メモリ410、表示装置420、入力装置430、CPU440、NIC450、及び記憶装置460は、メモリ210、表示装置220、入力装置230、CPU240、NIC250、及び記憶装置260と同一のものであるため説明を省略する。
メモリ410に格納されるプログラムについて説明する。メモリ410は、データベース制御部411、暗号一致判定部412、及びデータベース側付加処理部413を実現するプログラムを格納する。
データベース制御部411は、アプリケーションサーバ3からSQLを受信し、暗号一致判定部412及びデータベース側付加処理部413と連携して暗号化メイン情報群461に対してSQLを実行する。また、データベース制御部411は、SQLを実行することによって取得された暗号化データを含む処理結果をアプリケーションサーバ3に送信する。
暗号一致判定部412は、2つの暗号化データを比較し、各暗号化データの暗号化前の平文データが一致するか否かを判定する。より具体的には、暗号一致判定部412は、暗号化部212が生成した暗号化データ及び暗号化検索クエリ生成部214が生成した検索クエリを入力として受け付け、暗号化データの平文データ及び検索クエリの平文データが一致しているか否かを判定する。暗号一致判定部412は、2つの平文データが一致している場合、“true”を出力し、2つの平文データが一致していない場合、“false”を出力する。
暗号一致判定部412は、暗号化データを復号化することなく、暗号化データが同一のデータであるか否かを判定できる。
データベース側付加処理部413は、データを取得するためのデータベース処理のうち、簡便なSQLでは表現が難しい複雑な処理をユーザ定義関数化した機能を有する。より具体的には、データベース側付加処理部413は、データベース制御部411から暗号化された入力情報を受け付け、データベース側付加情報群462等を用いた付加処理を実行し、返り値又は出力値を格納したテーブルを付加処理の処理結果として出力する。
記憶装置460に格納される情報について説明する。記憶装置460は、暗号化メイン情報群461及びデータベース側付加情報群462を格納する。
暗号化メイン情報群461は、メイン情報群261に対応する暗号化データを格納する。より具体的には、暗号化メイン情報群461は、メイン情報群261の平文データが確率的暗号化方式に基づいて暗号化された暗号化データを格納する。データベース側付加情報群462は、暗号化メイン情報群461に対するデータの取得処理を効率化するための情報を格納する。
本実施例では、暗号化メイン情報群461は、記憶装置460に格納されるが、メモリ410に格納されてもよい。また、暗号化メイン情報群461は、記憶装置460及びメモリ410の両方に格納されてもよい。
図2は、実施例1の暗号化メイン情報群461のデータ構造の一例を示す図である。
実施例1の暗号化メイン情報群461は、暗号化患者情報4611及び暗号化診断情報4612を含む。
暗号化患者情報4611は、患者の一覧であり、“ID”カラム、“患者番号”カラム、及び“名前”カラムを含むレコードを複数含む。図2に示す暗号化患者情報4611は、患者番号が“0000001”から“1000000”まで、100万件のレコードを格納する。
“ID”カラムは、暗号化患者情報4611のレコードを一意に識別するための識別番号である。“患者番号”カラムは、患者を一意に識別するための識別番号である。“名前”カラムは、患者の氏名である。
例えば、暗号化患者情報4611の一番上のレコードは、患者番号が“Enc(0000001)”である患者の名前が“Enc(鈴木)”であることを示す。
本明細書において、Enc(X)は、括弧内の平文データXが暗号化部212によって暗号化された暗号化データであることを示す。
暗号化診断情報4612は、患者の診断結果に関する情報であり、“ID”カラム、“患者番号”カラム、及び“病名”カラムから構成されるレコードを複数含む。暗号化診断情報4612には、病名が判明した患者のレコードのみが格納される。
“ID”カラムは、暗号化診断情報4612のレコードを一意に識別するための識別情報である。“患者番号”カラムは、暗号化患者情報4611の“患者番号”カラムと同一のものである。“病名”カラムは、患者の診断結果を示す病名である。
例えば、暗号化診断情報4612の一番上のレコードは、患者番号が“Enc(0000002)”である患者の病名が“Enc(高血圧症)”であることを示す。
図3は、実施例1のデータベース側付加情報群462のデータ構造の一例を示す図である。
実施例1のデータベース側付加情報群462は、暗号化結合情報4621を含む。
暗号化結合情報4621は、“ID”カラム、“患者番号”カラム、“患者番号_クエリ”カラム、及び“病名”カラムを含むレコードを複数含む。“ID”カラム、“患者番号”カラム、及び“病名”カラムは、暗号化診断情報4612に含まれるレコードの“ID”カラム、“患者番号”カラム、及び“病名”カラムに対応する。
“患者番号_クエリ”カラムは、患者番号から生成された検索クエリである。このように、暗号化結合情報4621には、暗号化メイン情報群461に含まれる複数の情報(テーブル)を結合する場合に実行される暗号一致判定処理に使用される検索クエリのカラムが含まれる。
例えば、暗号化結合情報4621の一番上のレコードは、暗号化診断情報4612のIDが“1”のレコードに対応すること、及び、患者番号が“Enc(0000002)”である患者の患者番号の検索クエリが“EncQuery(0000002)”であり、当該患者の病名が“Enc(高血圧症)”であることを示す。
本明細書において、EncQuery(X)は、括弧内の平文データXが暗号化検索クエリ生成部214によって暗号化された暗号化データであることを示す。
図4は、実施例1のSQL定義情報361のデータ構造の一例を示す図である。
SQL定義情報361は、データの取得要求の種別毎のSQLの生成パターンの定義情報を格納するレコードを複数含む。当該レコードは、定義ID3611、要求処理3612、及びSQL定義3613を含む。
定義ID3611は、SQL定義情報361に格納される定義を一意に識別するための識別番号である。要求処理3612は、データの取得要求に対応する処理パターン、すなわち、データ取得要求の種別である。SQL定義3613は、要求処理3612に設定された処理パターンに対応するSQLの定義情報である。
例えば、SQL定義情報361の一番上のレコードは、IDが“1”であり、“結合”に対応する処理パターンに対応するSQLの定義情報を格納するレコードであることを示す。当該レコードのSQL定義3613には、暗号化されたテーブルX及びテーブルYを結合するためのSQLが格納される。
なお、SQL定義3613の“暗号一致判定(Table_X.カラムA, Table_Z.カラムB_クエリ) = ‘true’);”は、暗号化メイン情報群461に含まれるテーブルXの“A”カラムと、テーブルYの暗号化結合情報4621であるテーブルZの“検索クエリ”カラムとが一致するか否かを判定するための暗号一致判定処理を定義する命令文である。
図5は、実施例1のメモリ410に一時的に格納される一時情報4101のデータ構造の一例を示す図である。
実施例1の一時情報4101は、要求処理3612が“結合”であるデータの取得要求を実現するSQLの処理結果を格納する。具体的には、一時情報4101は、定義ID3611が“1”のSQL定義3613に基づいて、暗号化患者情報4011及び暗号化診断情報4612のレコードを結合することによって出力された処理結果である。一時情報4101に格納されるレコードは、“患者番号”カラム、“名前”カラム、及び“病名”カラムを含む。
例えば、一時情報4101の一番上のレコードは、患者番号が“Enc(0000002)”及び名前が“Enc(佐藤)”である患者の病名が“Enc(高血圧症)”であるということを示す。
(1−2)結合情報取得処理の準備処理の詳細
次に、図6、図7、図8、及び図9を用いて、結合情報取得処理に必要な設定を行うための結合情報取得処理の準備処理の詳細を説明する。
図6は、実施例1の結合情報取得処理の準備処理の流れを説明するシーケンス図である。図7は、実施例1の結合設定入力画面2111の一例を示す図である。図8は、実施例1の結合設定結果表示画面2112の一例を示す図である。
ユーザ端末2、アプリケーションサーバ3、及びデータベースサーバ4は、連携して結合情報取得処理の準備処理を実行する。結合情報取得処理の準備処理は、ユーザ端末2がユーザからの入力を受け付けた場合に開始される。
まず、ユーザ端末2は、ユーザからの入力を受け付ける(ステップS101)。
例えば、ユーザは、図7に示すような結合設定入力画面2111を用いて、結合対象の情報及び結合対象のカラムを入力する。初期情報の登録作業を行なうクラウドサービス提供会社のシステムエンジニアが、システム構築する場合にユーザ端末2を操作し、病院の事務担当者及び医師等が、更新情報の登録作業を行う場合にユーザ端末2を操作することが想定される。
ここで、結合設定入力画面2111について説明する。結合設定入力画面2111は、ブラウザ211によって表示装置220に表示される。
結合設定入力画面2111は、結合対象の情報及び結合対象のカラムを指定する複数の入力フォーム(P101)、(P102)、(P103)、(P104)を含む。また、結合設定入力画面2111は、OKボタン(P105)及びキャンセルボタン(P106)を含む。
入力フォーム(P101)及び入力フォーム(P102)は、第1の結合対象の情報の名称及びカラムの名称を入力するための入力フォームである。入力フォーム(P103)及び入力フォーム(P104)は、第2の結合対象の情報の名称及び結合対象のカラムの名称を入力するための入力フォームである。
OKボタン(P105)は、各入力フォームに入力した値を確定するための操作ボタンである。キャンセルボタン(P106)は、各入力フォームに入力した値の確定をキャンセルするための操作ボタンである。
例えば、ユーザは、暗号化患者情報4611の“患者番号”カラムと暗号化診断情報4612の“患者番号”カラムとが結合されたレコードを取得するための結合情報取得処理の準備処理を実行する場合、図7に示すような値を入力する。すなわち、ユーザは、入力フォーム(P101)に“暗号化患者情報”、入力フォーム(P102)に“患者番号”、入力フォーム(P103)に“暗号化診断情報”、入力フォーム(P104)に“患者番号”を入力する。ユーザがOKボタン(P105)を押下した場合、ブラウザ211は、各入力フォームの値を入力情報としてユーザ側付加処理部216に送信する。
以上が結合設定入力画面2111の説明である。図6の説明に戻る。
次に、ユーザ端末2は、結合対象の情報の結合対象のカラムの値を取得するためのデータの取得要求を生成する(ステップS102)。具体的には、以下のような処理が実行される。
まず、ユーザ側付加処理部216は、結合対象のカラムの値を読み出す結合対象の情報を決定するために、結合対象カラム決定処理を実行する。
結合対象カラム決定処理では、生成される検索クエリの数が最も少なくなる結合対象の情報が、結合対象のカラムの値を読み出す結合対象の情報として決定される。結合対象カラム決定処理の詳細は、図9を用いて説明する。
ユーザ側付加処理部216は、決定された結合対象の情報の名称、当該情報の結合対象のカラムの名称、及び読出命令を入力情報として含むデータの取得要求を生成し、当該データの取得要求をアプリケーションサーバ3に送信する。以上がステップS102の処理の説明である。
次に、アプリケーションサーバ3は、データの取得要求を受信した場合、決定された結合対象の情報の結合対象のカラムの値を読み出すためのSQLを生成する(ステップS103)。具体的には、以下のような処理が実行される。
アプリケーション部311が、データの取得要求を受信し、SQL生成部312にデータの取得要求に含まれる要求情報を入力する。
SQL生成部312は、要求情報に基づいて、決定された結合対象の情報の結合対象のカラムの値を読み出すためのSQLを生成し、生成されたSQLをアプリケーション部311に送信する。
アプリケーション部311は、SQL生成部312から出力としてSQLを受信した場合、データベースインタフェース部313を介して、データベースサーバ4に当該SQLを送信する。
例えば、決定された結合対象の情報が暗号化診断情報4612、かつ、結合対象のカラムが“患者番号”カラムである場合、以下のようなSQL(A)が生成される。
SQL(A)
SELECT 患者番号FROM 暗号化診断情報
SQL(A)は、暗号化診断情報4612に含まれる全てのレコードの“患者番号”カラムの値を読み出すことを意味する。以上がステップS103の処理の説明である。
次に、データベースサーバ4は、アプリケーションサーバ3からSQLを受信した場合、当該SQLを実行する(ステップS104)。
具体的には、データベース制御部411が、受信したSQLを実行し、処理結果をアプリケーションサーバ3に送信する。当該処理結果は、アプリケーションサーバ3を介してユーザ端末2に送信される。
例えば、データベースサーバ4は、SQL(A)を受信した場合、暗号化診断情報4612の全レコードの“患者番号”カラムの値を処理結果としてユーザ端末2に送信する。なお、“患者番号”カラムの値は暗号化データである。
次に、ユーザ端末2は、データベースサーバ4から処理結果を受信した場合、当該処理結果を復号化する(ステップS105)。具体的には、以下のような処理が実行される。
ユーザ側付加処理部216は、鍵管理部215から鍵情報を取得し、取得された鍵情報及び処理結果に含まれる結合対象のカラムの値を復号化部213に入力する。
復号化部213は、鍵情報を用いて、結合対象のカラムの値を復号化することによって平文データを取得する。復号化部213は、平文データをユーザ側付加処理部216に送信する。
例えば、結合対象のカラムの値が“Enc(0000002)”である場合、復号化部213は、“0000002”を平文データとして取得する。以上がステップS105の処理の説明である。
次に、ユーザ端末2は、ステップS105において取得された平文データ及び鍵を用いて検索クエリを生成する(ステップS106)。具体的には、以下のような処理が実行される。
ユーザ側付加処理部216は、鍵管理部215から鍵情報を取得し、取得された鍵情報及び復号化部213から受信した平文データを暗号化検索クエリ生成部214に入力する。
暗号化検索クエリ生成部214は、ユーザ側付加処理部216から入力を受け付けた場合、結合対象のカラムの値の検索クエリを生成する。暗号化検索クエリ生成部214は、生成された検索クエリをユーザ側付加処理部216に送信する。
例えば、“0000002”が平文データとして入力された場合、暗号化検索クエリ生成部214は、入力された鍵情報を用いて“EncQuery(0000002)”という暗号化データを検索クエリとして生成する。以上が、ステップS106の処理の説明である。
次に、ユーザ端末2は、暗号化結合情報4621を生成するための生成命令を生成する(ステップS107)。具体的には、以下のような処理が実行される。
ユーザ側付加処理部216は、暗号化検索クエリ生成部214から検索クエリを受信した後、ステップS102において決定された結合対象の情報に検索クエリのカラムを挿入して、暗号化結合情報4621をデータベース側付加情報群462に生成するための生成命令を生成する。具体的には、ユーザ側付加処理部216は、使用する情報の名称、挿入するカラムの名称、当該カラムに設定する全ての検索クエリを含む生成命令を生成する。
例えば、使用する情報が“暗号化診断情報4612”、新しいカラムの名称が“患者番号_クエリ”、さらに検索クエリ“EncQuery(X)”を新しいカラムに設定するための生成命令が生成される。
ユーザ側付加処理部216は、生成された生成命令をアプリケーションサーバ3に送信する。以上がステップS107の処理の説明である。
次に、アプリケーションサーバ3は、暗号化結合情報4621を生成するためのSQLを生成する(ステップS108)。具体的には、以下のような処理が実行される。
アプリケーション部311は、使用する情報の名称、挿入するカラムの名称、及び当該カラムに設定する全ての検索クエリを含む生成命令を受信した場合、生成命令に含まれる各情報をSQL生成部312に入力する。
SQL生成部312は、使用する情報の名称、挿入するカラムの名称、及び当該カラムに設定する全ての検索クエリに基づいて、暗号化結合情報4621を生成するためのSQLを生成する。また、SQL生成部312は、生成されたSQLをアプリケーション部311に送信する。
アプリケーション部311は、SQLを受信した場合、データベースインタフェース部313を介して、データベースサーバ4に当該SQLを送信する。
例えば、使用する情報が“暗号化診断情報4612”、新しいカラムの名称が“患者番号_クエリ”、さらに検索クエリ“EncQuery(X)”である場合、以下のようなSQL(B)及びSQL(C)が生成される。
SQL(B)
ALTER TABLE 暗号化診断情報 ADD 患者番号_クエリ BLOB;
SQL(C)
INSERT INTO 暗号化診断情報 ( 患者番号_クエリ )
VALUES( EncQuery(0000002),
EncQuery(0000004),
・・・・・・・
EncQuery(1000000));
SQL(B)は、暗号化診断情報4612に、“患者番号_クエリ”カラムを追加することを意味する。SQL(C)は、各レコードの“患者番号_クエリ”カラムに検索クエリを設定することを意味する。以上が、ステップS108の処理の説明である。
次に、データベースサーバ4は、アプリケーションサーバ3からSQLを受信した場合、当該SQLを実行する(ステップS109)。具体的には、以下のような処理が実行される。
データベース制御部411は、受信したSQLを実行することによって暗号化結合情報4621を生成する。データベース制御部411は、暗号化結合情報4621に識別情報を付与する。結合する情報の組合せに応じて、複数の暗号化結合情報4621が生成されるためである。
データベース制御部411は、暗号化結合情報4621に関する情報を含む処理結果をアプリケーションサーバ3に送信する。当該処理結果は、アプリケーションサーバ3を介してユーザ端末2に送信される。
例えば、データベースサーバ4がSQL(B)及びSQL(C)を受信した場合、データベース制御部411は、暗号化診断情報4612をデータベース側付加情報群462にコピーし、暗号化診断情報4612に“患者番号_クエリ”カラムを追加し、当該カラムに値を設定することによって暗号化結合情報4621を生成する。データベースサーバ4は、暗号化結合情報4621の生成が成功した旨を示す結果ステータス、“患者番号_クエリ”カラムに値が設定された件数、及び暗号化結合情報4621の生成に要した所要時間等を含む処理結果をアプリケーションサーバ3に送信する。
このとき、アプリケーションサーバ3のアプリケーション部311は、受信した処理結果、並びに、ステップS102及びステップS107で受信した情報に基づいて、結果表示情報を生成し、結果表示情報をユーザ端末2に送信する。以上が、ステップS109の処理の説明である。
次に、ユーザ端末2は、一連の処理の結果をユーザに対して表示する(ステップS110)。
具体的には、ユーザ端末2のブラウザ211は、結果表示情報を受信した場合、当該結果表示情報に基づいて、図8に示すような結合設定結果表示画面2112を表示装置220に表示する。
ここで、結合設定結果表示画面2112について説明する。結合設定結果表示画面2112は、ブラウザ211によって表示装置220に表示される。
結合設定結果表示画面2112は、結合設定入力画面2111を用いて入力された値、SQLの実行結果を示す複数の表示フォーム(P201)、(P202)、(P203)、(P204)、(P205)、(P206)、(P207)、(P208)を含む。また、結合設定結果表示画面2112は、OKボタン(P209)を含む。
表示フォーム(P201)及び表示フォーム(P203)は、結合設定入力画面2111を用いて入力された第1の結合対象の情報の名称及び第2の結合対象の情報の名称を表示する表示フォームである。表示フォーム(P202)及び表示フォーム(P204)は、第1の結合対象の情報のレコード数及び第2の結合対象の情報のレコード数を表示する表示フォームである。
表示フォーム(P205)は、検索クエリのカラムが挿入された情報の名称を表示する表示フォームである。表示フォーム(P206)は、挿入される検索クエリのカラムの名称を表示する表示フォームである。
表示フォーム(P207)は、暗号化結合情報4621の生成に要した時間を表示する表示フォームである。表示フォーム(P208)は、暗号化結合情報4621の生成結果を表示する表示フォームである。表示フォーム(P208)には、“成功”又は“失敗”のいずれかが表示される。
OKボタン(P209)は、表示の終了を指示するための操作ボタンである。
例えば、図7に示すような値が入力された場合、表示フォーム(P201)には“暗号化患者情報”、表示フォーム(P202)には“1000000”、表示フォーム(P203)には“暗号化診断情報”、表示フォーム(P204)には“3000”が表示される。また、SQL(B)及びSQL(C)に基づいて暗号化結合情報4621が生成された場合、表示フォーム(P205)には“暗号化診断情報”、表示フォーム(P206)には“患者番号_クエリ”が表示される。また、表示フォーム(P207)には、“100ms”、表示フォーム(P208)には“成功”が表示される。ユーザがOKボタン(P209)を押下した場合、結合設定結果表示画面2112の表示が終了する。
以上が結合設定結果表示画面2112の説明である。図6の説明に戻る。
ユーザ端末2は、必要に応じて処理結果をユーザ側付加情報群262に格納してもよいし、また、アプリケーションサーバ3又はデータベースサーバ4に送信してもよい。なお、当該処理結果には、暗号化結合情報4621と、暗号化結合情報4621の生成に用いた情報との対応関係、及び検索クエリと、暗号化結合情報4621の生成に用いた情報のカラムとの対応関係等が含まれる。
なお、ユーザ端末2がメイン情報群261を保持する場合、ステップS102からステップS105までの処理を省略できる。以上が結合準備処理の流れの説明である。
図9は、実施例1のユーザ側付加処理部216が実行する結合対象カラム決定処理の一例を説明するフローチャートである。
ユーザ側付加処理部216は、結合対象の情報の名称等を受信した場合、以下で説明する結合対象カラム決定処理を開始する。
まず、ユーザ側付加処理部216は、第1の結合対象の情報及び第2の結合対象の情報のレコード数を取得する(ステップF101)。
具体的には、ユーザ側付加処理部216は、ユーザ側付加情報群262から各結合対象の情報のレコード数に関する情報を読み出す。
なお、ユーザ側付加情報群262に結合対象の情報のレコード数に関する情報が存在しない場合、ユーザ側付加処理部216は、アプリケーションサーバ3に各結合対象の情報のレコード数の取得要求を送信する。これによって、各結合対象の情報のレコード数をカウントするためSQLがデータベースサーバ4に送信される。ユーザ側付加処理部216は、データベースサーバ4からSQLの処理結果を受信することによって各結合対象の情報のレコード数を取得できる。
次に、ユーザ側付加処理部216は、レコード数が少ない結合対象の情報を、結合対象のカラムの値を読み出す結合対象の情報に決定する(ステップF102)。
暗号化患者情報4611及び暗号化診断情報4612が結合対象の情報である場合、暗号化診断情報4612のレコード数は暗号化患者情報4611のレコード数より小さい。したがって、ユーザ側付加処理部216は、暗号化診断情報4612を、結合対象のカラムの値を読み出す結合対象の情報に決定する。なお、結合対象のカラムは、“患者番号”カラムである。
結合対象カラム決定処理が実行されることによって、検索クエリの生成数及び追加数を必要最小限にできる。したがって、結合準備処理及び図10を用いて説明する結合情報取得処理の処理時間を短縮できる。
以上が結合情報取得処理の準備処理の説明である。
(1−3)結合情報取得処理の詳細
次に、図10、図11、及び図12を用いて、結合情報取得処理の詳細を説明する。
図10は、実施例1の結合情報取得処理の流れを示すシーケンス図である。図11は、実施例1の患者情報取得画面2113の一例を示す図である。図12は、実施例1の患者病名一覧表示画面2114の一例を示す図である。
ユーザ端末2、アプリケーションサーバ3、及びデータベースサーバ4は、連携して結合情報取得処理を実行する。結合情報取得処理は、ユーザ端末2がユーザからの入力を受け付けた場合に開始される。
まず、ユーザ端末2は、ユーザからの入力を受け付ける(ステップS201)。
例えば、ユーザは、図11に示すような患者情報取得画面2113を用いて、結合情報を取得するために必要な情報を入力する。機微な情報を保存した医師が、患者の基本情報を示すマスタ情報と、最近の患者の診断結果とを突き合わせたデータとを表示する場合、ユーザ端末2を操作することが想定される。
ここで、患者情報取得画面2113について説明する。患者情報取得画面2113は、ブラウザ211によって表示装置220に表示される。
患者情報取得画面2113は、取得する情報を選択するための複数のラジオボタン(P301)、(P302)を含む。また、患者情報取得画面2113は、OKボタン(P303)及びキャンセルボタン(P304)を含む。
ラジオボタン(P301)は、各患者の病名の一覧を表示するためのラジオボタンである。ラジオボタン(P302)は、診断書の一覧を表示するためのラジオボタンである。
OKボタン(P303)は、選択されたラジオボタンの入力を確定するための操作ボタンである。キャンセルボタン(P304)は、選択されたラジオボタンの入力の確定をキャンセルするための操作ボタンである。
例えば、ユーザは、ラジオボタン(P301)を選択し、OKボタン(P105)を押下する。
以上が患者情報取得画面2113の説明である。図10の説明に戻る。
次に、ユーザ端末2は、結合情報を取得するためのデータの取得要求を生成する(ステップS202)。具体的には、以下のような処理が実行される。
ユーザ側付加処理部216は、要求された情報を取得するために必要な操作の種別を特定する。ユーザ側付加処理部216は、要求された情報に必要なカラムを特定し、また、特定されたカラムを含む情報を特定する。さらに、ユーザ側付加処理部216は、暗号一致判定処理に使用する検索クエリを格納する暗号化結合情報4621を特定する。
例えば、操作の種別、必要なカラム、及び暗号化結合情報4621を、予め操作画面に対応付けておくことが考えられる。また、メイン情報群261に含まれる情報のデータ構造を示す定義情報を、予め、ユーザ側付加情報群262に格納することが考えられる。
ユーザ側付加処理部216は、操作の種別、対象の情報の名称、対象のカラムの名称、暗号化結合情報4621の識別情報、及び読出命令を含むデータの取得要求を生成する。ユーザ側付加処理部216は、生成されたデータの取得要求をアプリケーションサーバ3に送信する。
例えば、ラジオボタン(P301)が選択された場合、患者番号、名前、及び病名が要求された情報に必要なカラムとして特定され、暗号化患者情報4611及び暗号化診断情報4612が要求された情報に必要な情報として特定される。また、患者番号_クエリを含む暗号化結合情報4621が、暗号一致判定処理に使用する検索クエリを格納する暗号化結合情報4621として特定される。
なお、要求された情報を取得するために必要な操作の種別及び検索クエリを格納する暗号化結合情報4621は、アプリケーションサーバ3が特定してもよい。この場合、アプリケーションサーバ3又はデータベースサーバ4が、特定するために必要な情報を保持する。以上がステップS202の処理の説明である。
次に、アプリケーションサーバ3は、2つの情報を結合された結合情報を取得するためのSQLを生成する(ステップS203)。具体的には、以下のような処理が実行される。
アプリケーション部311は、データの取得要求を受信した場合、データの取得要求をSQL生成部312に送信する。
SQL生成部312は、SQL定義情報361を参照して、要求処理3612がデータの取得要求に含まれる処理の種別に一致するレコードを特定する。この場合、定義ID3611が“1”のレコードが特定される。
SQL生成部312は、データの取得要求に含まれるカラムの名称、情報の名称、及び検索クエリを含む暗号化結合情報4621の識別情報、並びに特定されたレコードのSQL定義3613に基づいて、SQLを生成する。SQL生成部312は、生成されたSQLをアプリケーション部311に送信する。
アプリケーション部311は、データベースインタフェース部313を介して、SQLをデータベースサーバ4に送信する。
例えば、ラジオボタン(P301)が選択された場合、SQL生成部312は以下のようなSQL(D)を生成する。
SQL(D)
SELECT 患者番号, 名前, 病名 FROM 暗号化患者情報 X
JOIN 暗号化結合情報 Y
ON (
暗号一致判定(X.患者番号, Y.患者番号_クエリ)=‘true’);
SQL(D)は、暗号化患者情報4611の“患者番号”カラムの値と、暗号化結合情報4621の“患者番号_クエリ”カラムの値とが一致した場合、一致する各情報のレコードを結合し、結合結果から“患者番号”カラム、“名前”カラム、及び“病名”カラムの値を読み出すことを意味する。以上がステップS203の処理の説明である。
次に、データベースサーバ4は、アプリケーションサーバ3からSQLを受信した場合、当該SQLを実行する(ステップS204)。
具体的には、データベース制御部411が、受信したSQLを実行し、処理結果をアプリケーションサーバ3に送信する。当該処理結果は、アプリケーションサーバ3を介してユーザ端末2に送信される。
例えば、データベース制御部411は、SQL(D)を受信した場合、暗号一致判定部412を呼び出す。暗号一致判定部412は、暗号化患者情報4611に含まれる1つのレコードの“患者番号”カラムの値と、暗号化結合情報4621に含まれる1つのレコードの“患者番号_クエリ”カラムの値とが一致するか否か判定する。データベース制御部411は、暗号一致判定部412の判定結果に基づいて、“患者番号_クエリ”カラムの値が“患者番号”カラムの値に一致するレコードを取得し、一時情報4101に格納する。
SQL(D)が実行された場合、図5に示すような一時情報4101がメモリ410上に出力される。データベース制御部411は、当該一時情報4101を含む処理結果をアプリケーションサーバ3に送信する。
なお、特許文献3の確率的暗号化方式を用いることによって、暗号化された情報のカラムの値と、検索クエリの値とが一致するか否かを判定することができる。具体的な判定方法は、特許文献3に記載されているため詳細な説明は省略する。
次に、ユーザ端末2は、処理結果を受信した場合、当該処理結果を復号化する(ステップS205)。
具体的には、ユーザ側付加処理部216は、一時情報4101を含む処理結果を受信した場合、鍵管理部215から鍵情報を取得し、一時情報4104及び当該鍵情報を復号化部213に送信する。復号化部213は、鍵情報を用いて、一時情報4104を復号化することによって平文データを取得する。復号化部213は、平文データをユーザ側付加処理部216に送信する。ユーザ側付加処理部216は、平文データをブラウザ211に送信する。
次に、ユーザ端末2は、一連の処理の結果をユーザに対して表示する(ステップS206)。
具体的には、ブラウザ211は、平文データを含む処理結果を表示するための表示情報を生成し、当該表示情報に基づいて、図12に示すような患者病名一覧表示画面2114を表示装置220に表示する。
ここで、患者病名一覧表示画面2114について説明する。患者病名一覧表示画面2114は、ブラウザ211によって表示装置220に表示される。
患者病名一覧表示画面2114は、平文データである結合結果(P401)を含む。また、患者病名一覧表示画面2114は、OKボタン(P402)を含む。
図12に示す結合結果は、“患者番号”カラム、“名前”カラム、及び“病名”カラムを含むレコードを複数含む。一番上のレコードは、患者番号が“0000002”かつ名前が“佐藤”である患者が、高血圧症という診断結果を受けたことを示す。OKボタン(P402)は、表示の終了を指示するための操作ボタンである。
以上が患者病名一覧表示画面2114の説明である。また、以上が結合情報取得処理の説明である。
なお、実施例1では、結合する2つの情報のいずれかを用いて暗号化結合情報4621が生成されているが、これに限定されない。第1情報及び第2情報を結合させる場合、第1情報の名称、第1情報の結合対象のカラムの名称、第2情報の名称、第2情報の結合対象のカラムの名称、及び検索クエリを対応付けたレコードを複数含む暗号化結合情報4621であってもよい。
前述した暗号化結合情報4621の場合、データベース制御部411は、第1情報及び第2情報のそれぞれに対して暗号一致判定処理を実行し、検索クエリと一致する第1情報のレコード及び検索クエリと一致する第2情報のレコードを結合する。
(1−4)実施例1の効果
以上に説明したように、実施例1の秘匿化データベースシステム1では、暗号化結合情報4621及びSQL定義情報361に基づいて、データベースサーバ4内で暗号化された情報が復号されることなく、2つの暗号化された情報が結合された結合情報がユーザ端末2に送信される。したがって、データの秘匿性を維持しつつ、結合結果を取得するデータベース操作命令を実行可能な秘匿化データベースシステムを実現することができる。
実施例2の秘匿化データベースシステム1は、部分一致検索処理を実現するための機能を提供する点が実施例1とは異なる。部分一致検索処理は、部分的なキーワードを検索条件として、任意のテーブルのレコードに含まれるカラムと部分的に一致するレコードを取得するための処理である。以下、実施例1との差異を中心に、実施例2について説明する。
(2−1)実施例2の計算機システムの構成
実施例2の秘匿化データベースシステム1は、実施例1と同一の構成であるため説明を省略する。また、実施例2のユーザ端末2、アプリケーションサーバ3、及びデータベースサーバ4のハードウェア構成は実施例1の各ハードウェア構成と同一であるため説明を省略する。
実施例2では、ソフトウェア構成及び各装置が保持する情報の内容が一部異なる。
まず、ユーザ端末2のソフトウェア構成について説明する。実施例2のユーザ端末2のソフトウェア構成は、実施例1のユーザ端末2のソフトウェア構成と同一である。ただし、実施例2のユーザ側付加処理部216は、部分一致検索処理を実現するための機能を有する点が実施例1とは異なる。
図13は、実施例2のユーザ側付加処理部216の論理構成を示すブロック図である。
ユーザ側付加処理部216は、部分一致検索処理を実現するための機能として、部分情報生成部2161及び部分一致検索クエリ生成部2162を含む。
部分情報生成部2161は、任意の情報のカラムの平文データの入力を受け付け、所定の粒度に平文データを分割することによって部分情報2101を生成し、部分情報2101を出力する。なお、平文データの分割粒度は、後述する部分一致検索処理の準備処理において決定される。
部分一致検索クエリ生成部2162は、平文データである検索語の入力を受け付け、所定の粒度に検索語を分割し、暗号化検索クエリ生成部214と連携して分割された検索語が暗号化された部分一致検索クエリ(暗号化された検索クエリ)を生成し、部分一致検索クエリを出力する。なお、検索語の分割粒度は、後述する部分一致検索処理において決定される。
次に、アプリケーションサーバ3のソフトウェア構成について説明する。実施例2のアプリケーションサーバ3のソフトウェア構成は、実施例1のアプリケーションサーバ3のソフトウェア構成と同一である。
実施例2では、アプリケーションサーバ3は、定義ID3611が“2”のSQL定義3613に基づいて、部分一致検索処理を実現するSQLを生成する。ここで、定義ID3611が“2”のSQL定義3613は、以下のようなSQL(E)、(F)となる。
SQL(E)
SELECT 部分一致ID取得(名前_部分情報,
LikeID情報_xxx, 部分一致検索クエリ );
SQL(F)
SELECT 患者番号, 名前 FROM 暗号化患者情報
JOIN LikeID情報_xxx
ON ( 暗号化患者情報.ID = LikeID情報_xxx.ID );
SQL(E)は、部分一致ID取得部4131に部分一致ID取得処理の実行を指示するSQLであり、暗号化部分情報4622から部分一致検索クエリ情報2102に一致するIDを抽出し、LikeID情報_xxx4623に出力することを意味する。SQL(F)は、暗号化患者情報4613及びLikeID情報_xxx4623を“ID”カラムで結合し、一致したレコードの“患者番号”カラム及び“名前”カラムの値を読み出すことを意味する。
次に、データベースサーバ4のソフトウェア構成について説明する。実施例2のデータベースサーバ4のソフトウェア構成は、実施例1のデータベースサーバ4のソフトウェア構成と同一である。ただし、実施例2のデータベース側付加処理部413は、部分一致検索処理を実現するための機能を有する点が実施例1とは異なる。
図14は、実施例2のデータベース側付加処理部413の論理構成を示すブロック図である。
データベース側付加処理部413は、部分一致検索処理を実現するための機能として、部分一致ID取得部4131を含む。
部分一致ID取得部4131は、部分一致検索クエリ及び部分一致したレコードのIDを格納する出力テーブル名を入力として受け付け、暗号一致判定部412を用いて部分一致するIDを判定し、当該IDを出力テーブルに出力する。
次に、実施例2の各構成が有する情報について説明する。
図15は、実施例2のメモリ210に一時的に格納されるデータのデータ構造の一例を示す図である。
実施例2のメモリ210は、部分情報2101及び部分一致検索クエリ情報2102を格納する。
部分情報2101は、“名前_部分情報”カラム、“ID”カラム、及び“offset”カラムを含むレコードを複数含む。
“名前_部分情報”カラムは、部分一致検索処理の対象となるカラムの値が分割された値である。本実施例では、暗号化患者情報4613の“名前”カラムに対する部分一致検索処理が行われるため、部分情報2101には、“名前_部分情報”カラムが含まれる。なお、部分一致検索処理の対象が異なる場合、部分情報2101は、“(対象カラムの名称)_部分情報”カラムが含まれる。
“ID”カラムは、“名前_部分情報”カラムに格納される値が分割される前の値を格納するレコードの識別番号である。本実施例の“ID”カラムは、暗号化患者情報4613の“ID”カラムに対応する。
“offset”カラムは、分割される前の値における“名前_部分情報”に格納される値の分割位置である。
例えば、部分情報2101の一番上のエントリは、“名前_部分情報”カラムに格納される“鈴木”は、暗号化患者情報4613の“ID”カラムが“1”であるレコードの“名前”カラムの値“鈴木太郎”を分割した値であり、分割位置は“0”であることを示す。
部分一致検索クエリ情報2102は、部分一致検索処理に用いる検索語が分割された値から生成された部分一致検索クエリを格納するレコードを複数含む。当該レコードは、“検索クエリ”カラム及び“offset”カラムを含む。
“検索クエリ”カラムは、部分一致検索クエリである。“offset”カラムは、検索語における暗号化前の値の分割位置である。
図15の部分一致検索クエリ情報2102は、検索語“藤原太”から生成される検索クエリを格納することを示す。部分一致検索クエリ情報2102の一番上のレコードは、検索クエリが“EncQuery(藤原)”であり、暗号化前の“藤原”は、検索語の分割位置が“0”であることを示す。
図16は、実施例2の暗号化メイン情報群461のデータ構造の一例を示す図である。
実施例2の暗号化メイン情報群461は、暗号化患者情報4613を含む。
暗号化患者情報4613は、患者の一覧であり、“ID”カラム、“患者番号”カラム、及び“名前”カラムを含むレコードを複数含む。
“ID”カラム、“患者番号”カラム、及び“名前”カラムは、実施例1の暗号化患者情報4611のID”カラム、“患者番号”カラム、及び“名前”カラムと同一のものである。
例えば、暗号化患者情報4613の一番上のレコードは、IDが“1”のレコードの患者番号が“Enc(0000001)”、名前が“Enc(鈴木太郎)”であることを示す。
図17は、実施例2のデータベース側付加情報群462のデータ構造の一例を示す図である。
実施例2のデータベース側付加情報群462は、部分一致検索処理に使用する暗号化部分情報4622及びLikeID情報_xxx4623を含む。
暗号化部分情報4622は、“名前_部分情報”カラム、“ID”カラム、及び“offset”カラムを含むレコードを複数含む。
“名前_部分情報”カラムは、暗号一致判定処理において部分一致検索クエリと比較される暗号化データである。例えば、暗号化部分情報4622の一番上のレコードの“名前_部分情報”カラムには、“鈴木”が暗号化された“Enc(鈴木)”が格納される。
“ID”カラム、及び“offset”は、部分情報2101の“ID”カラム、及び“offset”に対応するカラムである。
LikeID情報_xxx4623は、部分一致ID取得部4131によって出力されたIDである。LikeID情報_xxx4623は、“ID”カラムのみから構成される。LikeID情報_xxx4623の“xxx”には、部分一致検索処理毎に異なる値が設定される。
図17に示すLikeID情報_xxx4623は、部分一致ID取得部4131から出力されたIDが“2”のみであることを示す。
図18は、実施例2のメモリ410に一時的に格納される一時情報4102のデータ構造の一例を示す図である。
一時情報4102は、SQL(F)の実行結果を格納する。具体的には、一時情報4102は、暗号化患者情報4613から、部分一致検索処理において部分一致検索クエリと一致したIDを含むレコードの“患者番号”カラム及び“名前”カラムの値を格納する。したがって、一時情報4102は、“患者番号”カラム及び“名前”カラムを含む1つのレコードを含む。
図18の一時情報4102は、患者番号が“Enc(0000003)”であり名前が“Enc(藤原太郎)”であるレコードが部分一致検索処理の結果として出力されたことを示す。
(2−2)部分一致検索処理の準備処理の詳細
次に、図19、図20、図21、及び図22を用いて、部分一致検索処理に必要な設定を行うための部分一致検索処理の準備処理の詳細を説明する。
図19は、実施例2の部分一致検索処理の準備処理の流れを説明するシーケンス図である。図20は、実施例2の部分一致設定入力画面2115の一例を示す図である。図21は、実施例2の部分一致設定結果表示画面2116の一例を示す図である。
ユーザ端末2、アプリケーションサーバ3、及びデータベースサーバ4は、連携して部分一致検索処理の準備処理を実行する。
ステップS101からS105までの処理の流れは実施例1の処理の流れと同一である。ただし、各ステップの処理内容が一部異なる。
実施例2のステップS101では、ユーザが入力する情報が実施例1とは異なる。実施例2では、ユーザは、図20に示すような部分一致設定入力画面2115を用いて、部分一致検索処理の対象の情報及びカラムを入力する。
ここで、部分一致設定入力画面2115について説明する。部分一致設定入力画面2115は、ブラウザ211によって表示装置220に表示される。
部分一致設定入力画面2115は、部分一致検索処理に必要な情報を入力する複数の入力フォーム(P501)、(P502)、(P503)を含む。また、部分一致設定入力画面2115は、OKボタン(P504)及びキャンセルボタン(P505)を含む。
入力フォーム(P501)は、部分一致検索処理の対象となる情報の名称を入力するための入力フォームである。入力フォーム(P502)は、部分一致検索処理の対象となるカラムの名称を入力するための入力フォームである。入力フォーム(P503)は、部分一致検索処理の処理結果に基づいて、カラムの値を読み出すレコードを指定するカラムの名称を入力するための入力フォームである。
OKボタン(P504)は、各入力フォームに入力した値を確定するための操作ボタンである。キャンセルボタン(P505)は、各入力フォームに入力した値の確定をキャンセルするための操作ボタンである。
図20では、部分一致検索処理の対象となる情報として“暗号化患者情報”が入力され、部分一致検索処理の対象となるカラムとして“名前”カラムが入力され、また、カラムの値を読み出すレコードを指定するカラムとして “ID”カラムが入力される。
以上が部分一致設定入力画面2115の説明である。図19の説明に戻る。
実施例2のステップS102では、結合対象カラム決定処理は実行されない。
実施例2のステップS103では、SQL生成部312は、部分一致設定入力画面2115に入力された値に基づいて、データの取得要求に含まれる対象のカラムの値を読み出すためのSQLを生成する。
実施例2のステップS104及びステップS105の処理の内容は、実施例1と同一である。
ユーザ端末2は、ステップS105において復号化された平文データを用いて、部分情報2101を生成する(ステップS301)。図20に示すような値が部分一致設定入力画面2115に入力されている場合、以下のような処理が実行される。
ユーザ側付加処理部216は、部分情報生成部2161を呼び出す。このとき、ユーザ側付加処理部216は、“暗号化患者情報4613”の“ID”カラム及び“名前”カラムの値のペアを部分情報生成部2161に入力する。
部分情報生成部2161は、入力された値に基づいて部分情報生成処理を実行する。これによって、図15に示す部分情報2101が生成される。部分情報生成処理の詳細は、図22を用いて説明する。以上がステップS301の処理の説明である。
次に、ユーザ端末2は、部分情報2101の部分一致検索処理の対象となるカラムの値を暗号化する(ステップS302)。具体的には、以下のような処理が実行される。
ユーザ側付加処理部216は、鍵管理部215から鍵情報を取得し、鍵情報及び部分情報生成部2161を暗号化部212に送信する。
暗号化部212は、部分情報2101に含まれるカラムのうち、部分一致検索処理の対象となるカラムの値を鍵情報を用いて暗号化する。復号化部213は、部分一致検索処理の対象となるカラムの値が暗号化された部分情報2101をユーザ側付加処理部216に送信する。以上がステップS302の処理の説明である。
次に、ユーザ端末2は、暗号化部分情報4622を生成するための生成命令を生成する(ステップS303)。
具体的には、ユーザ側付加処理部216は、暗号化部212から受信した暗号化された部分情報2101を暗号化部分情報4622として登録するための生成命令を生成し、当該命令をアプリケーションサーバ3に送信する。
ステップS303の処理の後、ステップS108からステップS110までの処理が実行される。ステップS108からステップS110までの処理の流れは実施例1の処理の流れと同一である。ただし、各ステップにおける処理内容が一部異なる。
実施例2のステップS108では、SQL生成部312は、生成命令に含まれる各情報を用いて、暗号化部分情報4622を生成するためのSQLを生成する。
実施例2のステップS109では、データベース制御部411は、受信したSQLを実行することによってデータベース側付加情報群462に暗号化部分情報4622を生成する。
実施例2のステップS110では、ブラウザ211は、結果表示情報に基づいて、図21に示すような部分一致設定結果表示画面2116を表示装置220に表示する。
ここで、部分一致設定結果表示画面2116について説明する。部分一致設定結果表示画面2116は、ブラウザ211によって表示装置220に表示される。
部分一致設定結果表示画面2116は、部分一致設定入力画面2115に入力された値、SQLの実行結果を示す表示フォーム(P601)、(P602)、(P603)、(P604)、(P605)を含む。また、部分一致設定結果表示画面2116は、OKボタン(P606)を含む。
表示フォーム(P601)は、部分一致設定入力画面2115に入力された部分一致検索処理の対象となる情報の名称を表示する表示フォームである。表示フォーム(P602)は、部分一致設定入力画面2115に入力された部分一致検索処理の対象となるカラムの名称を表示する表示フォームである。
表示フォーム(P603)は、暗号化部分情報4622の名称を表示する表示フォームである。表示フォーム(P604)は、暗号化部分情報4622に含まれるレコードの数を表示する表示フォームである。表示フォーム(P605)は、暗号化部分情報4622の生成結果を示す表示フォームである。表示フォーム(P605)には、“成功”又は“失敗”のいずれかが表示される。
OKボタン(P606)は、表示の終了を指示するための操作ボタンである。
例えば、図20に示すような値が入力された場合、表示フォーム(P601)には“暗号化患者情報”、表示フォーム(P602)には“名前”、表示フォーム(P603)には、“名前_部分情報”、表示フォーム(P604)には、“8000”、表示フォーム(P605)には“成功”が表示される。ユーザはOKボタン(P606)を押下した場合、部分一致設定結果表示画面2116の表示が終了する。
以上が部分一致設定結果表示画面2116の説明である。図19の説明に戻る。
ユーザ端末2は、必要に応じて処理結果をユーザ側付加情報群262に格納してもよいし、また、アプリケーションサーバ3又はデータベースサーバ4に送信してもよい。なお、当該処理結果には、暗号化部分情報4622と部分情報2101との対応関係等が含まれる。以上が部分一致検索処理の準備処理の流れの説明である。
図22は、実施例2の部分情報生成部2161が実行する部分情報生成処理の一例を説明するフローチャートである。
部分情報生成部2161は、ユーザ側付加処理部216から呼び出された場合、以下で説明する部分情報生成処理を開始する。なお、部分情報生成部2161には、平文データである“ID”カラムの値、及び部分一致検索処理の対象となるカラムの値のペアが入力される。
まず、部分情報生成部2161は、ペアを1つ読み出す(ステップF201)。
例えば、部分情報生成部2161は、IDの値の昇順にペアを1つ読み出す。暗号化患者情報4613の“ID”カラム及び“名前”カラムの値のペアが入力された場合、部分情報生成部2161は、ID“1”かつ名前が“鈴木太郎”であるペアを読み出す。
次に、部分情報生成部2161は、N−gram方式を用いて、部分一致検索処理の対象となるカラムの値を分割する(ステップF202)。
例えば、N=2のN−gram方式を用いた場合、名前“鈴木太郎”の値は、“鈴木”、“木太”、及び“太郎”の3つに分割される。
次に、部分情報生成部2161は、分割された各値について、分割前の値の先頭からの分割位置を示すoffsetを割り当てる(ステップF203)。
例えば、“鈴木”にはoffset“0”が割り当てられ、“木太”にはoffset“1”が割り当てられ、“太郎”にはoffset“2”が割り当てられる。
次に、部分情報生成部2161は、分割された値、ID、及びoffsetを含むレコードを部分情報2101に追加する(ステップF204)。
例えば、分割された値が“鈴木”、“木太”、及び“太郎”である場合、以下の3つのレコードが部分情報2101に追加される。
部分情報 ID offset値
レコード1: 鈴木 1 0
レコード2: 木太 1 1
レコード3: 太郎 1 2
次に、部分情報生成部2161は、全てのペアに対して処理が完了したか否かを判定する(ステップF205)。
全てのペアに対して処理が完了していないと判定された場合、部分情報生成部2161は、ステップF201に戻り、同様の処理を実行する。
全てのペアに対して処理が完了したと判定された場合、部分情報生成部2161は、処理を終了する。以上の処理によって図15に示すような部分情報2101が生成される。
IDを含めた部分一致検索処理を実行するための情報を予め用意することによって、部分一致検索処理において、ユーザ端末2は、部分一致するIDを絞り込み、IDに対応する暗号化データを取得できる。以上が部分一致検索処理の準備処理の説明である。
(2−3)部分一致検索処理の詳細
次に、図23、図24、図25、図26、及び図27を用いて、部分一致検索処理の詳細を説明する。
図23は、実施例2の部分一致検索処理の流れを示すシーケンス図である。図24は、実施例2の患者情報取得画面2117の一例を示す図である。図25は、実施例2の患者情報表示画面2118の一例を示す図である。
ユーザ端末2、アプリケーションサーバ3、及びデータベースサーバ4は、連携して部分一致検索の処理を実行する。部分一致検索の処理は、ユーザ端末2がユーザからの入力を受け付けた場合に開始される。
まず、ユーザ端末2は、ユーザからの入力を受け付ける(ステップS401)。
例えば、ユーザは、図24に示すような患者情報取得画面2117を用いて、検索語として、名前の一部を入力する。機微な情報を保存した医師が、患者の名前の一部を検索語とし、該当する患者情報の表示を要求する場合、ユーザ端末2を操作することが想定される。
ここで、患者情報取得画面2117について説明する。患者情報取得画面2117は、ブラウザ211によって表示装置220に表示される。
患者情報取得画面2117は、ラジオボタン(P701)、及び入力フォーム(P702)を含む。また、患者情報取得画面2117は、OKボタン(P703)及びキャンセルボタン(P704)を含む。
ラジオボタン(P701)は、表示するデータの形式を選択するためのラジオボタンである。入力フォーム(P702)は、検索語を入力するための入力フォームである。
OKボタン(P703)は、入力を確定するための操作ボタンである。キャンセルボタン(P704)は、入力の確定をキャンセルするための操作ボタンである。
例えば、ユーザは、ラジオボタン(P301)を操作し、入力フォーム(P302)に検索語を入力し、OKボタン(P703)を押下する。
以上が患者情報取得画面2117の説明である。図23の説明に戻る。
次に、ユーザ端末2は、検索語に一致する情報を取得するためのデータの取得要求を生成する(ステップS402)。具体的には、以下のような処理が実行される。
ユーザ側付加処理部216は、要求された情報を取得するために必要な操作の種別を特定する。ユーザ側付加処理部216は、対象の情報及び対象のカラムの名称を特定する。また、ユーザ側付加処理部216は、暗号一致判定処理に使用する検索クエリを格納する暗号化部分情報4622を特定する。ユーザ側付加処理部216は、入力された検索語を部分一致検索クエリ生成部2162に入力し、部分一致検索クエリ生成処理の実行を指示する。
部分一致検索クエリ生成部2162は、部分一致検索クエリ生成処理を実行することによって部分一致検索クエリ情報2102を生成する。例えば、検索語“藤原太”が入力された場合、図15に示すような部分一致検索クエリ情報2102が生成される。なお、部分一致検索クエリ生成処理の詳細は、図26を用いて説明する。
部分一致検索クエリ生成部2162は、部分一致検索クエリ情報2102をユーザ側付加処理部216に送信する。
ユーザ側付加処理部216は、操作の種別、対象の情報の名称、対象のカラムの名称、暗号化部分情報4622の識別情報、部分一致検索クエリ情報2102、及び読出命令を含むデータの取得要求を生成し、アプリケーションサーバ3に送信する。以上がステップS402の処理の説明である。
次に、アプリケーションサーバ3は、暗号化データに対する部分一致検索処理を実行するためのSQLを生成する(ステップS403)。具体的には、以下のような処理が実行される。
アプリケーション部311は、データの取得要求を受信した場合、データの取得要求をSQL生成部312に送信する。
SQL生成部312は、SQL定義情報361を参照し、要求処理3612がデータの取得要求に含まれる操作の種別に一致するレコードを特定する。この場合、定義ID3611が“2”のレコードが特定される。
SQL生成部312は、データの取得要求に含まれるカラムの名称、情報の名称、部分一致検索クエリ情報2102、並びに特定されたレコードのSQL定義3613に基づいて、SQLを生成する。本実施例では、部分一致ID取得処理のSQL及び部分一致対象カラム取得処理のSQLが生成される。SQL生成部312は、生成されたSQLをアプリケーション部311に送信する。
アプリケーション部311は、データベースインタフェース部313を介して、SQLをデータベースサーバ4に送信する。
図24に示すような情報が入力された場合、SQL生成部312は以下のようなSQL(G)、(H)を生成する。
SQL(G)
SELECT 部分一致ID取得(名前_部分情報,
LikeID情報_001, 部分一致検索クエリEQ );
SQL(H)
SELECT 患者番号, 名前 FROM 暗号化患者情報
JOIN LikeID情報_001
ON ( 暗号化患者情報.ID = LikeID情報_001.ID );
SQL(G)は、部分一致ID取得処理のSQLである。SQL(G)は、部分一致ID取得部4131に部分一致ID取得処理の実行を指示することによって、暗号化部分情報4622から部分一致検索クエリに一致するIDをLikeID情報_001に出力することを意味する。
SQL(H)は、部分一致対象カラム取得処理のSQLである。SQL(H)は、暗号化患者情報4613とLikeID情報_001を結合することによってレコードを出力し、当該レコードの“患者番号”カラム及び“名前”カラムの値を読み出すことを意味する。以上がステップS403の説明である。
次に、データベースサーバ4は、アプリケーションサーバ3からSQLを受信した場合、当該SQLにしたがって、部分一致ID取得処理及び部分一致対象カラム取得処理を実行する(ステップS404、ステップS405)。具体的には、以下のような処理が実行される。
データベース制御部411は、部分一致ID取得処理のSQLを実行し、部分一致対象カラム取得処理のSQLを実行する。
ここで、受信したSQLがSQL(G)、(H)である場合を例に説明する。
まず、データベース制御部411は、SQL(G)に基づいて、データベース側付加処理部413の部分一致ID取得部4131に部分一致ID取得処理の実行を指示する。これによって、LikeID情報_xxx4623にIDが格納される。部分一致ID取得処理の詳細は、図27を用いて説明する。
データベース制御部411は、SQL(H)に基づいて、暗号化患者情報4613から、“ID”カラムがLikeID情報_xxx4623に格納されるIDと一致するレコードを出力し、当該レコードの“患者番号”カラム及び“名前”カラムの値を取得する。データベース制御部411は、メモリ410に一時情報4102として取得結果を格納する。
データベース制御部411は、一時情報4102を含む処理結果をアプリケーションサーバ3に送信する。以上がステップS404、ステップS405の処理の説明である。
次に、ユーザ端末2は、処理結果を受信した場合、当該処理結果を復号化する(ステップS406)。
具体的には、ユーザ側付加処理部216は、一時情報4102を含む処理結果を受信した場合、鍵管理部215から鍵情報を取得し、一時情報4102及び鍵情報を復号化部213に送信する。復号化部213は、鍵情報を用いて、一時情報4102に含まれるカラムの値を復号化することによって平文データを取得する。復号化部213は、平文データをユーザ側付加処理部216に送信する。ユーザ側付加処理部216は、平文データをブラウザ211に送信する。
次に、ユーザ端末2は、一連の処理の結果をユーザに対して表示する(ステップS407)。
具体的には、ブラウザ211は、平文データを含む処理結果を表示するための表示情報を生成し、当該表示情報に基づいて、図25に示すような患者情報表示画面2118を表示装置220に表示する。
ここで、患者情報表示画面2118について説明する。患者情報表示画面2118は、ブラウザ211によって表示装置220に表示される。
患者情報表示画面2118は、検索結果の一覧(P801)を含む。また、患者情報表示画面2118は、OKボタン(P802)を含む。
図25に示す検索結果の一覧(P801)は、“患者”カラム、及び“名前”カラムを含むレコードを1つ含む。当該レコードは、患者番号が“0000002”、名前が“藤原太郎”という患者であることを示す。OKボタン(P802)は、表示の終了を指示するための操作ボタンである。
以上が患者情報表示画面2118の説明である。また、以上が部分一致検索処理の流れの説明である。
図26は、実施例2の部分一致検索クエリ生成部2162が実行する部分一致検索クエリ生成処理の一例を説明するフローチャートである。
部分一致検索クエリ生成部2162は、検索語が入力された場合、以下で説明する部分一致検索クエリ生成処理を開始する。
まず、部分一致検索クエリ生成部2162は、N−gram方式を用いて、検索語を分割する(ステップF301)。
N=2のN−gram方式を用いた場合、検索語“藤原太”は、“藤原”及び“原太”の2つに分割される。
次に、部分一致検索クエリ生成部2162は、分割された各値について、分割前の値の先頭からの分割位置を示すoffsetを割り当てる(ステップF302)。
例えば、検索語が“藤原太”である場合、“藤原”にはoffset“0”が割り当てられ、“原太”にoffset“1”を割り当てられる。
次に、部分一致検索クエリ生成部2162は、検索クエリを生成する(ステップF303)。
具体的には、部分一致検索クエリ生成部2162は、鍵管理部215から鍵情報を取得し、分割された各値及び鍵情報を暗号化検索クエリ生成部214に送信する。暗号化検索クエリ生成部214は、鍵情報を用いて、分割された各値を暗号化することによって検索クエリを生成し、当該検索クエリを部分一致検索クエリ生成部2162に送信する。
例えば、“藤原”及び“原太”から、“EncQuery(藤原)”及び“EncQuery(原太)”が生成される。
次に、部分一致検索クエリ生成部2162は、部分一致検索クエリ情報2102を生成する(ステップF304)。
具体的には、部分一致検索クエリ生成部2162は、分割された値、分割された値のoffset、及び分割された値の検索クエリを含むレコードを複数含む部分一致検索クエリ情報2102を生成する。
例えば、検索語“藤原太”が入力された場合、以下の2つのレコードを含む部分一致検索クエリ情報2102が生成される。
部分一致検索クエリ offset
レコード1: EncQuery(藤原) 0
レコード2: EncQuery(原太) 1
以上の処理によって、図15に示すような部分一致検索クエリ情報2102がメモリ210に格納される。
図27は、実施例2の部分一致ID取得部4131が実行する部分一致ID取得処理の一例を説明するフローチャートである。
部分一致ID取得部4131は、データベース側付加処理部413から読み出された場合、以下で説明する部分一致ID取得処理を実行する。なお、部分一致ID取得部4131には、暗号化部分情報4622の名称、LikeID情報_xxx4623の名称、及び部分一致検索クエリが入力される。
まず、部分一致ID取得部4131は、現在の位置情報を示す変数offset_now、及びカウントを示す変数nに初期値として“0”を設定する(ステップF401)。
次に、部分一致ID取得部4131は、対象の部分一致検索クエリを示す変数query_nowを設定する(ステップF402)。
具体的には、部分一致ID取得部4131は、部分一致検索クエリ情報2102から、“offset”カラムの値がoffset_nowに一致する部分一致検索クエリを検索する。部分一致ID取得部4131は、検索された部分一致検索クエリをquery_nowに設定する。
例えば、offset_nowが“0”の場合、“offset”カラムが“0”であるレコードの部分一致検索クエリ“EncQuery(藤原)”が、query_nowに設定される。
次に、部分一致ID取得部4131は、Position_Tableを生成する(ステップF403)。具体的には、以下のような処理が実行される。
部分一致ID取得部4131は、暗号一致判定部412を呼び出し、暗号化部分情報4622から、“部分情報”カラムの値がquery_nowと一致するレコードを検索する。
部分一致ID取得部4131は、検索されたレコードの“ID”カラムの値、及び“offset”カラムの値に“1”を加えた値を格納するカラムを含むレコードから構成されるPosition_Tableを生成する。部分一致ID取得部4131は、メモリ410にPosition_Table格納する。
例えば、暗号化部分情報4622が図17に示す暗号化部分情報4622であり、かつ、query_nowが“EncQuery(藤原)”である場合、“ID”カラムの値が“2”であり、“offset”カラムの値に“1”を加えた値が“1”であるレコードを含むPosition_Tableが生成される。具体的には、Position_Tableは以下のようなレコードを含む。以上がステップF403の処理の説明である。
(Position_Table )
ID offset
レコード1: 2 1
次に、部分一致ID取得部4131は、offset_nowを更新する(ステップF404)。
具体的には、部分一致ID取得部4131は、現在のoffset_nowに“1”を加算する。
次に、部分一致ID取得部4131は、部分一致検索クエリ情報2102に、“offset”カラムの値がoffset_nowに一致する部分一致検索クエリが存在するか否かを判定する(ステップF405)。
具体的には、部分一致ID取得部4131は、部分一致検索クエリ情報2102を参照し、“offset”カラムの値がoffset_nowに一致する部分一致検索クエリが存在するか否かを判定する。
“offset”カラムの値がoffset_nowに一致する部分一致検索クエリが存在すると判定された場合、部分一致ID取得部4131は、query_nowを更新する(ステップF406)。
具体的には、部分一致ID取得部4131は、検索された部分一致検索クエリをquery_nowに設定する。例えば、更新前のquery_nowに“EncQuery(藤原)”が設定されている場合、ステップF404においてoffset_nowは“1”に更新される。したがって、query_nowには“EncQuery(原太)”が設定される。
次に、部分一致ID取得部4131は、nを更新する(ステップF407)。
具体的には、部分一致ID取得部4131は、現在のnに“1”を加算する。
次に、部分一致ID取得部4131は、暗号化部分情報4622から条件に一致するレコードを検索する(ステップF408)。具体的には、以下のような処理が実行される。
部分一致ID取得部4131は、暗号化部分情報4622の“ID”カラム及び“offset”カラムの値が、Position_Tableのn番目のレコードの“ID”カラム及び“offset”カラムの値と一致し、かつ、暗号化部分情報4622の“部分情報”カラムの値が、query_nowに一致するレコードを検索する。なお、暗号化部分情報4622の“部分情報”カラムの値とquery_nowとの間の一致判定は、暗号一致判定部412によって行われる。
例えば、nが“1”である場合、Position_TableにはステップF403において例示したレコードが含まれる。この場合、部分一致ID取得部4131は、“ID”カラムの値が“2”、“offset”カラムの値が“1”であり、“名前_部分情報”カラムが“EncQuery(原太)”と一致するレコードを検索する。部分一致ID取得部4131は、以下のようなレコードを検索結果として取得する。以上がステップF408の処理の説明である。
(検索結果)
名前_部分情報 ID offset
レコード1: “Enc(原太)” 2 1
次に、部分一致ID取得部4131は、検索結果に基づいて、条件に一致するレコードが存在するか否かを判定する(ステップF409)。
条件に一致するレコードが存在すると判定された場合、部分一致ID取得部4131はPosition_Tableのn番目のレコードの“offset”カラムの値を“1”加算する(ステップF410)。その後、部分一致ID取得部4131は、ステップF412に進む。
例えば、nが“1”である場合、ステップF403において例示したPosition_Tableの1番目のレコード1の“offset”カラムの値は“2”となる。
条件に一致するレコードが存在しないと判定された場合、部分一致ID取得部4131は、Position_Tableのn番目のレコードを削除する(ステップF410)。その後、部分一致ID取得部4131は、ステップF412に進む。
次に、部分一致ID取得部4131は、Position_Tableに(n+1)番目のレコードが存在するか否かを判定する(ステップF412)。
Position_Tableに(n+1)番目のレコードが存在すると判定された場合、部分一致ID取得部4131は、ステップF407に戻り、同様の処理を実行する。
Position_Tableに(n+1)番目のレコードが存在しないと判定された場合、部分一致ID取得部4131は、ステップF404に戻り、同様の処理を実行する。
ステップF405において、“offset”カラムの値がoffset_nowに一致する部分一致検索クエリが存在しないと判定された場合、部分一致ID取得部4131は、LikeID情報_xxx4623を生成する(ステップF413)。その後、部分一致ID取得部4131は、部分一致ID取得処理を終了する。
具体的には、部分一致ID取得部4131は、Position_Tableの“ID”カラムの値を重複排除し、ID群のみからなるLikeID情報_xxx4623を生成する。部分一致ID取得部4131は、生成されたLikeID情報_xxx4623をデータベース側付加情報群462に格納する。
例えば、各ステップにおいて例示したレコードを処理した結果、以下のレコードを含む持つLikeID情報_xxx4623が生成される。
(LikeID情報_xxx)
ID
レコード1: 2
以上が部分一致検索処理の説明である。
(2−4)実施例2の効果
以上で説明したように、実施例2の秘匿化データベースシステム1では、暗号化結合情報4621及びSQL定義情報361に基づいて、名前の一部等の部分的な検索条件を受け付けた場合、暗号化された情報が復号されることなく、部分的に一致した情報を含む検索結果がユーザ端末2に送信される。したがって、データの秘匿性を維持しつつ、任意のテーブルのレコードに含まれるカラムと部分的に一致するレコードを取得するデータベース操作命令を実行可能な秘匿化データベースシステムを実現することができる。
実施例3の秘匿化データベースシステム1は、範囲検索処理及びソート処理を実現するための機能を提供する点が実施例1とは異なる。範囲検索処理は、指定された範囲に含まれるレコードを取得するための処理であり、ソート処理は任意の条件にしたがってレコードを並び替えるための処理である。以下、実施例1との差異を中心に、実施例3について説明する。
(3−1)実施例3の計算機システムの構成
実施例3の秘匿化データベースシステム1は、実施例1と同一の構成であるため説明を省略する。また、実施例3のユーザ端末2、アプリケーションサーバ3、及びデータベースサーバ4のハードウェア構成は実施例1の各ハードウェア構成と同一であるため説明を省略する。
実施例3では、ソフトウェア構成及び各装置が保持する情報の内容が一部異なる。
まず、ユーザ端末2のソフトウェア構成について説明する。実施例2のユーザ端末2のソフトウェア構成は、実施例1のユーザ端末2のソフトウェア構成と同一である。ただし、実施例2のユーザ側付加処理部216は、範囲検索処理及びソート処理を実現するための機能を有する点が実施例1とは異なる。
図28は、実施例3のユーザ側付加処理部216の論理構成を示すブロック図である。
ユーザ側付加処理部216は、対応範囲情報生成部2163、対応範囲ラベル情報生成部2164、範囲検索/ソートクエリ生成部2165、範囲外データ削除部2166、及び制限付きソート処理部2167を含む。
対応範囲情報生成部2163は、平文データである範囲検索処理/ソート処理の対象カラムの情報を受け付け、対象カラムの値域を分割した複数の区分に範囲ラベルを割り当て、各区分の頻度を計測することによって対応範囲情報2621を生成し、対応範囲情報2621を出力する。
対応範囲ラベル情報生成部2164は、対応範囲情報2621の名称及び対象のカラムの値の入力を受け付け、対応範囲情報2621からカラムの値に対応する範囲ラベルを取得し、取得した範囲ラベルを出力する。
範囲検索/ソートクエリ生成部2165は、平文データである範囲検索処理/ソート処理の条件の入力を受け付け、当該条件に対応する範囲ラベルの検索クエリを出力する。
範囲外データ削除部2166は、範囲検索処理/ソート処理の処理結果から、範囲検索処理/ソート処理の条件に該当しないレコードを削除し、当該条件に該当するレコードのみを出力する。
制限付きソート処理部2167は、範囲検索処理/ソート処理の処理結果又は範囲外データ削除部2166によって処理された範囲検索処理/ソート処理の処理結果を入力として受け付け、指定された順番に並び替えられた所定の数のレコードを出力する。なお、出力されるレコードの数(Limit数)は、ユーザによって予め指定される。
次に、アプリケーションサーバ3のソフトウェア構成について説明する。実施例3のアプリケーションサーバ3のソフトウェア構成は、実施例1のアプリケーションサーバ3のソフトウェア構成と同一である。
実施例3では、アプリケーションサーバ3は、定義ID3611が“3”のSQL定義3613に基づいて、範囲検索処理/ソート処理を実現するSQLを生成する。ここで、定義ID3611が“3”のSQL定義3613は、以下のようなSQL(I)となる。
SQL(I)
SELECT 患者番号、名前、年齢 FROM 範囲情報
WHERE 暗号一致判定(年齢_範囲ラベル,EncQuery(300))=‘true’
OR 暗号一致判定(年齢_範囲ラベル,EncQuery(400))=‘true’;
SQL(I)は、暗号化対応範囲情報4624から、“年齢_範囲ラベル”カラムが検索クエリ“EncQuery(300)”、又は検索クエリ“EncQuery(400)”と一致するレコード群から“患者番号”カラム、“名前”カラム及び“年齢”カラムの値を読み出すことを意味する。
次に、データベースサーバ4のソフトウェア構成について説明する。実施例3のデータベースサーバ4のソフトウェア構成は、実施例1のデータベースサーバ4のソフトウェア構成と同一である。
次に、実施例3の各構成が有する情報について説明する。
図29は、実施例3のユーザ側付加情報群262のデータ構造の一例を示す図である。
実施例2のユーザ側付加情報群262は、対応範囲情報2621を含む。
対応範囲情報2621は、“対応範囲”カラム、“範囲ラベル”カラム、及び“頻度”カラムを含むレコードを複数含む。
“対応範囲”カラムは、範囲検索処理/ソート処理の対象となるカラムの値域が分割された区分である。本実施例では、年齢の範囲を指定した範囲検索処理を想定しているため、対応範囲情報2621には、“年齢_対応範囲”カラムが含まれる。
“範囲ラベル”カラムは、区分に割り当てられる範囲ラベルである。“頻度”カラムは、“年齢_対応範囲”カラムに対応するカラムの値が区分に含まれるレコードの数である。
例えば、対応範囲情報2621の一番上のレコードは、年齢が“0歳から9歳の区分”であり、範囲ラベルは“100”、レコードの“年齢”カラムの値が当該区分に含まれるレコードの数が“2”であることを示す。
図30は、実施例3のメモリ210に一時的に格納されるデータのデータ構造の一例を示す図である。
実施例3のメモリ210は、範囲検索クエリ情報2103を含む。
範囲検索クエリ情報2103は、範囲検索処理/ソート処理の条件に基づいて生成された検索クエリを格納するレコードを複数含む。当該レコードは、“検索クエリ”カラムを含む。本実施例の検索クエリは、範囲検索処理において実行される暗号一致判定処理に用いられる。
図30に示す範囲検索クエリ情報2103には、検索クエリ“EncQuery(300)”のレコード、及び検索クエリ“EncQuery(400)”のレコードが含まれる。
図31は、実施例3の暗号化メイン情報群461のデータ構造の一例を示す図である。
実施例3の暗号化メイン情報群461は、暗号化患者情報4614を含む。
暗号化患者情報4614は、患者の一覧であり、“ID”カラム、“患者番号”カラム、“名前”カラム、及び“年齢”カラムを含むレコードを複数含む。
“ID”カラム、“患者番号”カラム、及び“名前”カラムは、実施例1の暗号化患者情報4611のID”カラム、“患者番号”カラム、及び“名前”カラムと同一のものである。“年齢”カラムは、患者の年齢である。
例えば、暗号化患者情報4614の一番上のレコードは、患者番号が“Enc(0000001)”である患者であり、名前が“Enc(鈴木)”、年齢が“Enc(4)”であることを示す。
図32は、実施例3のデータベース側付加情報群462のデータ構造の一例を示す図である。
実施例3のデータベース側付加情報群462は、範囲検索処理/ソート処理に使用する暗号化対応範囲情報4624を含む。
暗号化対応範囲情報4624は、“ID”カラム、“患者番号”カラム、“名前”カラム、“年齢”カラム、及び“年齢_範囲ラベル”カラムを含むレコードを複数含む。
“年齢_範囲ラベル”カラムは、暗号一致判定処理において検索クエリと比較される暗号化データである。例えば、暗号化対応範囲情報4624の一番上のレコードの“年齢_範囲ラベル”カラムには、 “4”歳を含む区分の範囲ラベル“100”が暗号化された“Enc(100)”が格納される。
“ID”カラム、“患者番号”カラム、“名前”カラム、及び“年齢”カラムは、暗号化患者情報4614の“ID”カラム、“患者番号”カラム、“名前”カラム、及び“年齢”カラムに対応するカラムである。
図33は、実施例3のメモリ410に一時的に格納される一時情報4103のデータ構造の一例を示す図である。
一時情報4103は、SQL(I)の実行結果を格納する。具体的には、一時情報4103は、暗号化患者情報4614から、検索クエリに一致するレコードの“患者番号”カラム、“名前”カラム、及び“年齢”カラムの値を格納する。したがって、一時情報4103は、“患者番号”カラム、“名前”カラム、及び“年齢”カラムを含むレコードを1つ以上含む。
図33に示す一時情報4103の一番上のレコードは、患者番号が“Enc(0000005)”であり、名前が“Enc(藤原)”であり、年齢が“Enc(23)”である患者のレコードであることを示す。
(3−2)範囲検索処理/ソート処理の準備処理の詳細
次に、図34、図35、図36、図37、及び図38を用いて、暗号化された情報に対する範囲検索処理/ソート処理に必要な設定を行うための範囲検索処理/ソート処理の準備処理の詳細を説明する。
図34は、実施例3の範囲検索処理/ソート処理の準備処理の流れを説明するシーケンス図である。図35は、実施例3の範囲検索処理/ソート処理設定入力画面2119の一例を示す図である。図36は、実施例3の範囲検索処理/ソート処理設定結果表示画面2120の一例を示す図である。
ユーザ端末2、アプリケーションサーバ3、及びデータベースサーバ4は、連携して範囲検索処理/ソート処理の準備処理を実行する。
ステップS101からS105までの処理の流れは実施例1の処理の流れと同一である。ただし、各ステップの処理内容が一部異なる。
実施例3のステップS101では、ユーザが入力する情報が実施例1と異なる。実施例3では、ユーザは、図35に示すような範囲検索処理/ソート処理設定入力画面2119を用いて、範囲検索処理/ソート処理の対象となる情報、カラム、値域、及び頻度平準化の基準値を入力する。
ここで、範囲検索処理/ソート処理設定入力画面2119について説明する。範囲検索処理/ソート処理設定入力画面2119は、ブラウザ211によって表示装置220に表示される。
範囲検索処理/ソート処理設定入力画面2119は、範囲検索処理及びソート処理に必要な情報を入力する複数の入力フォーム(P901)、(P902)、(P903)、(P904)、(P905)を含む。また、範囲検索処理/ソート処理設定入力画面2119は、OKボタン(P906)及びキャンセルボタン(P907)を含む。
入力フォーム(P901)は、範囲検索処理/ソート処理の対象となる情報の名称を入力するための入力フォームである。入力フォーム(P902)は、範囲検索処理/ソート処理の対象となるカラムの名称を入力するための入力フォームである。
入力フォーム(P903)は、対象のカラムの値域の下限値を入力する入力フォームであり、入力フォーム(P904)は、対象のカラムの値域の上限値を入力する入力フォームである。入力フォーム(P905)は、各区分に含まれるレコードの数を平準化するための基準値を入力するための入力フォームである。
OKボタン(P906)は、各入力フォームに入力した値を確定するための操作ボタンである。キャンセルボタン(P907)は、各入力フォームに入力した値の確定をキャンセルするための操作ボタンである。
図35では、範囲検索処理/ソート処理の対象となる情報及びカラムとして“暗号化患者情報”及び“年齢”が入力され、値域が“0”から“200”と入力され、頻度平準化基準値が“2”と入力される。
以上が範囲検索処理/ソート処理設定入力画面2119の説明である。図34の説明に戻る。
実施例3のステップS102では、結合対象カラム決定処理は実行されない。
実施例3のステップS103では、SQL生成部312は、範囲検索処理/ソート処理設定入力画面2119に入力された値に基づいて、データの取得要求に含まれる対象のカラムの値を読み出すためのSQLを生成する。
実施例3のステップS104及びステップS105の処理の内容は、実施例1と同一である。ステップS105の処理が完了した時点では、メモリ210には、暗号化患者情報4614の“年齢”カラムの値が復号化された状態で格納される。
ユーザ端末2は、ステップS105において復号化された平文データを用いて対応範囲情報2621を生成する(ステップS501)。
具体的には、ユーザ側付加処理部216は、対応範囲情報生成部2163を呼び出す。このとき、ユーザ側付加処理部216は、対象のカラムの値、対象のカラムの値域、頻度平準化基準値を対応範囲情報生成部2163に入力する。対応範囲情報生成部2163は、入力された値に基づいて対応範囲情報生成処理を実行する。これによって、図29に示す対応範囲情報2621が生成される。対応範囲情報生成処理の詳細は、図37を用いて説明する。
次に、ユーザ端末2は、対応範囲情報2621を暗号化する(ステップS502)。具体的には、以下のような処理が実行される。
ユーザ側付加処理部216は、鍵管理部215から鍵情報を取得し、対応範囲情報2621及び鍵情報を暗号化部212に送信する。暗号化部212は、鍵情報を用いて対応範囲情報2621を暗号化し、暗号化された対応範囲情報2621をユーザ側付加処理部216に送信する。ユーザ側付加処理部216は、暗号化された対応範囲情報2621を生成するための生成命令を生成する。
次に、ユーザ端末2は、対応範囲ラベルを生成する(ステップS503)。
具体的には、ユーザ側付加処理部216は、対応範囲ラベル情報生成部2164を呼び出す。このとき、ユーザ側付加処理部216は、対象のカラムの平文データ及び暗号化前の対応範囲情報2621の名称を入力する。対応範囲ラベル情報生成部2164は、入力された値に基づいて対応範囲ラベル情報生成処理を実行する。これによって、対象カラムの各区分に対応する範囲ラベルが生成される。対応範囲ラベル情報生成処理の詳細は、図38を用いて説明する。
次に、ユーザ端末2は、暗号化対応範囲情報4624を生成するための生成命令を生成する(ステップS504)。具体的には、以下のような処理が実行される。
ユーザ側付加処理部216は、鍵管理部215から鍵情報を取得し、ステップS503において生成された範囲ラベル及び鍵情報を暗号化検索クエリ生成部214に入力する。暗号化検索クエリ生成部214は、範囲ラベルの検索クエリを生成し、ユーザ側付加処理部216に生成された検索クエリを送信する。
ユーザ側付加処理部216は、暗号化された対応範囲情報2621に検索クエリのカラムを追加するための追加命令を生成する。
ユーザ側付加処理部216は、暗号化された対応範囲情報2621の情報、情報暗号化された対応範囲情報2621の生成命令、範囲ラベルの検索クエリ、及び“検索クエリ”カラムの追加命令を含む生成命令を生成する。ユーザ側付加処理部216は、生成された生成命令をアプリケーションサーバ3に送信する。以上がステップS504の処理の説明である。
ステップS504の処理の後、ステップS108からステップS110までの処理が実行される。ステップS108からステップS110までの処理の流れは実施例1の処理の流れと同一である。ただし、各ステップにおける処理内容が一部異なる。
実施例3のステップS108では、SQL生成部312は、生成命令に含まれる各情報を用いて、暗号化対応範囲情報4624を生成するためのSQLを生成する。
実施例3のステップS109では、データベース制御部411は、受信したSQLを実行することによってデータベース側付加情報群462に暗号化対応範囲情報4624を生成する。
実施例3のステップS110では、ブラウザ211は、結果表示情報に基づいて、図36に示すような範囲検索処理/ソート処理設定結果表示画面2120を表示装置220に表示する。
ここで、範囲検索処理/ソート処理設定結果表示画面2120について説明する。範囲検索処理/ソート処理設定結果表示画面2120は、ブラウザ211によって表示装置220に表示される。
範囲検索処理/ソート処理設定結果表示画面2120は、範囲検索処理/ソート処理設定入力画面2119に入力された情報、及びSQLの実行結果を示す表示フォーム(P1001)、(P1002)、(P1003)、(P1004)、(P1005)、(P1006)を含む。また、範囲検索処理/ソート処理設定結果表示画面2120は、OKボタン(P1007)を含む。
表示フォーム(P1001)は、範囲検索処理/ソート処理設定入力画面2119に入力された対象の情報の名称を表示する表示フォームである。表示フォーム(P1002)は、範囲検索処理/ソート処理設定入力画面2119に入力された対象のカラムの名称を表示する表示フォームである。
表示フォーム(P1003)は、対応範囲情報2621の名称を表示する表示フォームである。表示フォーム(P1004)は、暗号化対応範囲情報4624の名称を表示する表示フォームである。表示フォーム(P1005)は、検索クエリとして追加された対応範囲情報2621のカラムの名称を表示する表示フォームである。
表示フォーム(P1006)は、暗号化対応範囲情報4624の生成結果を表示する表示フォームである。表示フォーム(P1006)には、“成功”又は“失敗”のいずれかが表示される。
OKボタン(P1007)は、表示の終了を指示するための操作ボタンである。
以上が範囲検索処理/ソート処理設定結果表示画面2120の説明である。図34の説明に戻る。
ユーザ端末2は、必要に応じて処理結果をユーザ側付加情報群262に格納してもよいし、また、アプリケーションサーバ3又はデータベースサーバ4に送信してもよい。なお、当該処理結果には、暗号化対応範囲情報4624と対応範囲情報2621との対応関係等が含まれる。以上が範囲検索処理/ソート処理の準備処理の流れの説明である。
図37は、実施例3の対応範囲情報生成部2163が実行する対応範囲情報生成処理を説明するフローチャートである。
対応範囲情報生成部2163は、ユーザ側付加処理部216から呼び出された場合、以下で説明する対応範囲情報生成処理を開始する。なお、対応範囲情報生成部2163には、対象のカラムの値、対象のカラムの値域、及び頻度平準化基準値が入力される。
まず、対応範囲情報生成部2163は、対象のカラムの値毎の頻度(レコードの数)を算出する(ステップF501)。
次に、対応範囲情報生成部2163は、対象のカラムの値域を複数の区分に分割し、各区分に範囲ラベルを割り当てる(ステップF502)。このとき、対応範囲情報生成部2163は、各区分に含まれる値域の頻度の合計値が頻度平準化基準値を超えないように値域を複数の区分に分割する。
次に、対応範囲情報生成部2163は、対応範囲情報2621を生成する(ステップF503)。その後、対応範囲情報生成部2163は、処理を終了する。
具体的には、対応範囲情報生成部2163は、“対応範囲”カラム、“範囲ラベル”カラム、及び“頻度”カラムを含むレコードを登録することによって対応範囲情報生成部2163を生成する。また、対応範囲情報生成部2163は、生成された対応範囲情報2621をユーザ側付加情報群262に格納する。
例えば、図35に示すような値が入力された場合、対応範囲情報生成部2163は、図29に示すような対応範囲情報2621を生成する。
図38は、実施例3の対応範囲ラベル情報生成部2164が実行する対応範囲ラベル情報生成処理を説明するフローチャートである。
対応範囲ラベル情報生成部2164は、ユーザ側付加処理部216から呼び出された場合、以下で説明する対応範囲ラベル情報生成処理を実行する。なお、対応範囲ラベル情報生成部2164には、対象のカラムの平文データ及び暗号化前の対応範囲情報2621の名称が入力される。
まず、対応範囲ラベル情報生成部2164は、対象のカラムの値を1つ読出し、当該値をXと設定する(ステップF601)。
次に、対応範囲ラベル情報生成部2164は、Xが含まれる区分の範囲ラベルを特定する(ステップF602)。
具体的には、対応範囲ラベル情報生成部2164は、ユーザ側付加処理部216から入力された対応範囲情報2621の名称に基づいて、対応範囲情報2621の“対応範囲”カラムを参照し、Xを含む区分に対応するレコードを特定する。対応範囲ラベル情報生成部2164は、特定されたレコードの“範囲ラベル”カラムから値を読出し、当該値をYと設定する。
次に、対応範囲ラベル情報生成部2164は、X及びYを含むレコードを対応範囲ラベル情報に追加する(ステップF603)。ここで、対応範囲ラベル情報は、対象のカラムが含まれる範囲ラベルのリストであり、一時的にメモリ210に格納される。
次に、対応範囲ラベル情報生成部2164は、全ての対象のカラムの値について処理が完了したか否かを判定する(ステップF604)。
全ての対象のカラムの値について処理が完了していないと判定された場合、対応範囲ラベル情報生成部2164は、ステップF601に戻り、同様の処理を実行する。
全ての対象のカラムの値について処理が完了したと判定された場合、対応範囲ラベル情報生成部2164は、対応範囲ラベル情報生成処理を終了する。
以上が範囲検索処理/ソート処理の準備処理の説明である。
(3−3)範囲検索/ソート処理の詳細
次に、図39、図40、図41、図42、及び図43を用いて、範囲検索処理/ソート処理の詳細を説明する。
図39は、実施例3の範囲検索処理/ソート処理の流れを示すシーケンス図である。図40は、実施例3の患者情報取得画面2121の一例を示す図である。図41は、実施例3の患者情報表示画面2122の一例を示す図である。
ユーザ端末2、アプリケーションサーバ3、及びデータベースサーバ4は、連携して範囲検索処理/ソート処理を実行する。範囲検索処理/ソート処理は、ユーザ端末2がユーザからの入力を受け付けた場合に開始される。
まず、ユーザ端末2は、ユーザからの入力を受け付ける(ステップS601)。
例えば、ユーザは、図40に示すような患者情報取得画面2121を用いて、対象のカラムの値の検索範囲、一画面に表示されるレコードの数(Limit数)、及び表示されるレコードの表示順番等を入力する。機微な情報を保存した医師が、任意の年齢層に含まれる患者のレコードを一画面中に、年齢の昇順に所定の数だけ表示する場合、ユーザ端末2を操作することが想定される。
ここで、患者情報取得画面2121について説明する。患者情報取得画面2121は、ブラウザ211によって表示装置220に表示される。
患者情報取得画面2121は、検索条件を入力するための複数の入力フォーム(P1101)、(P1102)、(P1103)、(P1104)、(P1105)、及び複数のラジオボタン(P1106)、(P1107)を含む。また、患者情報取得画面2121は、OKボタン(P1108)及びキャンセルボタン(P1109)を含む。
入力フォーム(P1101)は、範囲検索処理の対象となる情報を入力するための入力フォームである。入力フォーム(P1102)は、範囲の下限値を入力するための入力フォームである。入力フォーム(P1103)は、範囲の上限値を入力するための入力フォームである。
入力フォーム(P1104)は、一画面に表示するレコードの数を入力するための入力フォームである。
入力フォーム(P1105)は、レコードのソート処理の対象のカラムを入力するための入力フォームである。ラジオボタン(P1106)は、入力フォーム(P1105)に入力されたカラムの値の昇順にレコードを並び替えるソート処理を選択するためのラジオボタンである。ラジオボタン(P1106)は、入力フォーム(P1105)に入力されたカラムの値の降順にレコードを並び替えるソート処理を選択するためのラジオボタンである。
OKボタン(P1108)は、入力を確定するための操作ボタンである。キャンセルボタン(P1109)は、入力の確定をキャンセルするための操作ボタンである。
ユーザが、入力フォーム(P1101)、(P1102)、(P1103)にのみ値を入力し、OKボタン(P1108)を押下した場合、検索された全てのレコードがランダムに配置された処理結果が出力される。また、ユーザが、入力フォーム(P1104)、(P1105)にのみ値を入力し、また、ラジオボタン(P1106)、(P1107)のいずれかを選択し、OKボタン(P1108)を押下した場合、全ての範囲から検索されたレコードのうち、所定の数のレコードが指定された順番に並び替えられた処理結果が出力される。
以上が患者情報取得画面2121の説明である。図39の説明に戻る。
次に、ユーザ端末2は、範囲ラベル候補情報を生成する(ステップS602)。具体的には、以下のような処理が実行される。
ユーザ側付加処理部216は、対応範囲情報2621の“対応範囲”カラムを参照し、患者情報取得画面2121を用いて指定された検索範囲と値の範囲が重複する区分群を特定する。
ユーザ側付加処理部216は、対応範囲情報2621から、特定された区分群に含まれる区分に対応するレコードの“範囲ラベル”カラム及び“頻度”カラムの値を読み出す。さらに、ユーザ側付加処理部216は、“範囲ラベル”カラム及び“頻度”カラムの値を対応付けたレコードを、指定された表示順にしたがって範囲ラベル候補情報に追加する。
なお、範囲ラベル候補情報は、メモリ210に一時的に格納される情報である。
例えば、ユーザ側付加情報群262に図29に示す対応範囲情報2621が格納され、また、患者情報取得画面2121に図40に示すような値が入力された場合、“年齢対応範囲”カラムが“20−29”及び“30−39”の区分群が特定される。この場合、ユーザ側付加処理部216は、最初に、“300”及び“2”を対応付けたレコードを範囲ラベル候補情報に追加し、次に、“400”及び“2”を対応付けたレコードを範囲ラベル候補情報に追加する。以上がステップS602の処理の説明である。
次に、ユーザ端末2は、変数として、T及び範囲ラベル_nowを設定する(ステップS603)。
具体的には、ユーザ側付加処理部216が、T及び範囲ラベル_nowを設定する。Tは、一画面中に表示されるレコードの数を示す変数である。範囲ラベル_nowは、範囲ラベル候補情報の一番上のレコードに含まれる範囲ラベルの値を示す変数である。
ステップS602において例示した範囲ラベル候補情報の場合、Tには“2”が設定され、範囲ラベル_nowには“300”が設定される。
次に、ユーザ端末2は、データの取得要求を生成する(ステップS604)。具体的には、以下のような処理が実行される。
ユーザ側付加処理部216は、要求された情報を取得するために必要な操作の種別を特定する。ユーザ側付加処理部216は、対象の情報の名称を特定する。ユーザ側付加処理部216は、暗号一致判定処理に使用する検索クエリを格納する暗号化対応範囲情報4624を特定する。また、ユーザ側付加処理部216は、T及び範囲ラベル_now、並びに、範囲ラベル候補情報を範囲検索/ソートクエリ生成部2165に入力し、範囲検索/ソートクエリ生成処理の実行を指示する。
範囲検索/ソートクエリ生成部2165は、範囲検索/ソートクエリ生成処理を実行することによって範囲検索クエリ情報2103を生成する。例えば、Tが“2”、範囲ラベル_nowが“300”であり、ステップS602において例示した範囲ラベル候補情報が入力された場合、図30に示す範囲検索クエリ情報2103が生成される。なお、範囲検索/ソートクエリ生成処理の詳細は、図42を用いて説明する。
範囲検索/ソートクエリ生成部2165は、範囲検索クエリ情報2103をユーザ側付加処理部216に送信する。
ユーザ側付加処理部216は、操作の種別、対象の情報の名称、暗号化対応範囲情報4624の識別情報、範囲検索クエリ情報2103、及び読出命令を含むデータの取得要求を生成し、アプリケーションサーバ3に送信する。以上がステップS604の処理の説明である。
次に、アプリケーションサーバ3は、暗号化データに対する範囲検索処理を実行するためのSQLを生成する(ステップS605)。具体的には、以下のような処理が実行される。
アプリケーション部311は、データの取得要求を受信した場合、データの取得要求をSQL生成部312に送信する。
SQL生成部312は、SQL定義情報361を参照し、要求処理3612がデータの取得要求に含まれる操作の種別に一致するレコードを特定する。この場合、定義ID3611が“3”のレコードが特定される。
SQL生成部312は、データの取得要求に含まれる範囲検索の対象となる情報の名称及び範囲検索クエリ情報2103、並びに特定されたレコードのSQL定義3613に基づいて、SQLを生成する。SQL生成部312は、生成されたSQLをアプリケーション部311に送信する。
アプリケーション部311は、データベースインタフェース部313を介して、SQLをデータベースサーバ4に送信する。
図40に示すような情報が入力された場合、SQL生成部312は以下のようなSQL(J)を生成する。
SQL(J)
SELECT 患者番号, 名前, 年齢 FROM 暗号化対応範囲情報
WHERE 暗号一致判定(年齢_範囲ラベル, EncQuery(300))=‘true’;
SQL(J)は、暗号一致判定部412に処理の実行を指示することによって、暗号化対応範囲情報4624から、“年齢_範囲ラベル”カラムの値が検索クエリ“EncQuery(300)”に一致するレコードの“患者番号”カラム、“名前”カラム、及び“年齢”カラムの値を読み出すことを意味する。以上がステップS605の処理の説明である。
次に、データベースサーバ4は、アプリケーションサーバ3からSQLを受信した場合、当該SQLにしたがって、範囲検索処理を実行する(ステップS606)。
具体的には、データベース制御部411は、受信したSQLを実行し、実行結果を一時情報4103としてメモリ410に格納する。データベース制御部411は、一時情報4103を含む実行結果をアプリケーションサーバ3に送信する。ここで、受信したSQLがSQL(J)である場合を例に説明する。
データベース制御部411は、SQL(J)に基づいて、暗号一致判定部412を呼び出す。暗号一致判定部412は、検索クエリ及び暗号化対応範囲情報4624の“年齢_範囲ラベル”カラムの値の暗号一致判定を行い、判定結果をデータベース制御部411に出力する。
データベース制御部411は、暗号一致判定部412から出力された判定結果に基づいて、範囲検索処理の条件に一致するレコードを特定する。データベース制御部411は、メモリ410に図33に示す一時情報4103を格納する。
データベース制御部411は、一時情報4103を含む処理結果をアプリケーションサーバ3に送信する。以上がステップS606の処理の説明である。
次に、ユーザ端末2は、処理結果を受信した場合、当該処理結果を復号化する(ステップS607)。
具体的には、ユーザ側付加処理部216は、一時情報4103を含む処理結果を受信した場合、鍵管理部215から鍵情報を取得し、一時情報4103及び鍵情報を復号化部213に送信する。復号化部213は、鍵情報を用いて、一時情報4103に含まれるカラムの値を復号化することによって平文データを取得する。復号化部213は、平文データをユーザ側付加処理部216に送信する。
次に、ユーザ端末2は、結果表示処理を実行する(ステップS608)。
結果表示処理では、ユーザ端末2は、処理結果からユーザに要求されたレコードのみを抽出し、また、抽出されたレコードを指定された順番に並び替える。ユーザ端末2のブラウザ211は、並び替えられたレコードを含む処理結果を表示するための表示情報を生成し、当該表示情報に基づいて、図41に示すような患者情報表示画面2122を表示装置220に表示する。なお、結果表示処理の詳細は、図43を用いて説明する。
ここで、患者情報表示画面2122について説明する。患者情報表示画面2122は、ブラウザ211によって表示装置220に表示される。
患者情報表示画面2122は、検索結果の一覧(P1201)及び操作領域(P1202)を含む。また、患者情報表示画面2122は、OKボタン(P1203)を含む。
図41に示す検索結果の一覧(P1201)は、“患者番号”カラム、“名前”カラム、及び“年齢”カラムを含むレコードを複数含む。図41に示す検索結果の一覧(P1201)では、レコード年齢の昇順に並び替えられた2つのレコードが表示される。
操作領域(P1202)は、まだ表示されていないレコードを表示するための操作領域である。OKボタン(P1203)は、表示の終了を指示するための操作ボタンである。
以上が患者情報表示画面2122の説明である。また、以上が範囲検索処理/ソート処理の流れの説明である。
図42は、実施例3の範囲検索/ソートクエリ生成部2165が実行する範囲検索/ソートクエリ生成処理を説明するフローチャートである。
範囲検索/ソートクエリ生成部2165は、ユーザ側付加処理部216から呼び出される以下で説明する範囲検索/ソートクエリ生成処理を開始する。なお、範囲検索/ソートクエリ生成部2165には、T及び範囲ラベル_now、並びに、範囲ラベル候補情報が入力される。
まず、範囲検索/ソートクエリ生成部2165は、変数として、N_now及び範囲ラベル_nextを初期化し、また、範囲検索クエリ情報2103を初期化する(ステップF701)。具体的には、以下のような処理が実行される。
範囲検索/ソートクエリ生成部2165は、N_nowに“0”を設定する。また、範囲検索/ソートクエリ生成部2165は、範囲ラベル_now及び対応範囲情報2621を参照して、範囲ラベル_nowに設定された範囲ラベルの次の範囲ラベルが存在するか否かを判定する。範囲ラベル_nowに設定された範囲ラベルの次の範囲ラベルが存在する場合、範囲検索/ソートクエリ生成部2165は、範囲ラベル_nextに次の範囲ラベルを設定する。範囲ラベル_nowに設定された範囲ラベルの次の範囲ラベルが存在しない場合、範囲検索/ソートクエリ生成部2165は、範囲ラベル_nextに“NULL”を設定する。
また、範囲検索/ソートクエリ生成部2165は、空の範囲検索クエリ情報2103を生成する。以上がステップF701の処理の説明である。
次に、範囲検索/ソートクエリ生成部2165は、N_nowを更新する(ステップF702)。
具体的には、範囲検索/ソートクエリ生成部2165は、範囲ラベル_nowに対応する範囲ラベル候補情報のレコードの“頻度”カラムの値を、N_nowに加算する。
次に、範囲検索/ソートクエリ生成部2165は、N_nowがT以上であるか否かを判定する(ステップF703)。
N_nowがT以上であると判定された場合、範囲検索/ソートクエリ生成部2165は、ステップF710に進む。
N_nowがTより小さいと判定された場合、範囲検索/ソートクエリ生成部2165は、範囲ラベル_nextが“NULL”であるか否かを判定する(ステップF704)。
範囲ラベル_nextが“NULL”であると判定された場合、範囲検索/ソートクエリ生成部2165は、ステップF710に進む。
範囲ラベル_nextが“NULL”ではないと判定された場合、範囲検索/ソートクエリ生成部2165は、範囲検索クエリ情報2103に範囲ラベル_nowの値を登録する(ステップF705)。
次に、範囲検索/ソートクエリ生成部2165は、範囲ラベル_nextの値を範囲ラベル_nowに設定する(ステップF706)。
次に、範囲検索/ソートクエリ生成部2165は、範囲ラベル候補情報に含まれる全ての範囲ラベルの検索クエリが生成されたか否かを判定する(ステップF707)。
範囲ラベル候補情報に含まれる全ての範囲ラベルの検索クエリが生成されていないと判定された場合、範囲検索/ソートクエリ生成部2165は、範囲ラベル_nextを更新する(ステップF708)。その後、範囲検索/ソートクエリ生成部2165は、ステップF702に戻り、同様の処理を実行する。
具体的には、範囲検索/ソートクエリ生成部2165は、範囲ラベル候補情報の中か選択されていない範囲ラベルを選択し、選択された範囲ラベルを範囲ラベル_nextに設定する。例えば、範囲ラベル_nowの次のレコードを選択する方法が考えられる。
範囲ラベル候補情報に含まれる全ての範囲ラベルの検索クエリが生成されと判定された場合、範囲検索/ソートクエリ生成部2165は、範囲ラベル_nextに“NULL”を設定する(ステップF709)。その後、範囲検索/ソートクエリ生成部2165は、ステップF702に戻り、同様の処理を実行する。
ステップF703がYES又はステップF704がYESである場合、範囲検索/ソートクエリ生成部2165は、範囲検索クエリ情報2103に登録された各範囲ラベルの検索クエリを生成する(ステップF710)。その後、範囲検索/ソートクエリ生成部2165は、処理を終了する。具体的には、以下のような処理が実行される。
範囲検索/ソートクエリ生成部2165は、鍵管理部215から鍵情報を取得し、範囲検索クエリ情報2103に登録された各範囲ラベル、及び鍵情報を暗号化検索クエリ生成部214に送信する。
暗号化検索クエリ生成部214は、鍵情報を用いて、各範囲ラベルを暗号化することによって検索クエリを生成し、当該検索クエリを範囲検索/ソートクエリ生成部2165に送信する。
範囲検索/ソートクエリ生成部2165は、範囲検索クエリ情報2103に登録される各範囲ラベルを、検索クエリに置換する。これによって、指定された表示件数以下のレコードを取得するための範囲検索クエリ情報2103が生成される。以上がステップF710の処理の説明である。
図43は、実施例3のユーザ端末2が実行する結果表示処理の一例を説明するフローチャートである。
まず、ユーザ側付加処理部216は、処理結果に含まれるレコードの中から、検索範囲外のレコードを削除する(ステップF801)。具体的には、以下のような処理が実行される。
ユーザ側付加処理部216は、範囲外データ削除部2166を呼び出す。このとき、ユーザ側付加処理部216は、復号化された平文データ(レコード群)、並びに、対象カラムの検索範囲を示す上限値及び下限値を入力する。
範囲外データ削除部2166は、検索範囲に含まれないレコードを削除し、検索範囲内のレコードのみを含む処理結果をユーザ側付加処理部216に送信する。以上がステップF801の処理の説明である。
次に、ユーザ側付加処理部216は、処理結果に含まれるレコードに対して制限付きのソート処理を実行する(ステップF802)。具体的には、以下のような処理が実行される。
ユーザ側付加処理部216は、制限付きソート処理部2167を呼び出す。このとき、ユーザ側付加処理部216は、メモリ210に格納される処理結果、表示件数、及び表示順序を制限付きソート処理部2167に入力する。
制限付きソート処理部2167は、表示順序にしたがって、処理結果に含まれるレコードを並び替える。制限付きソート処理部2167は、レコードが並び替えられた処理結果から表示数だけレコードを読み出し、読み出されたレコードをユーザ側付加処理部216に送信する。以上がステップF802の処理の説明である。
次に、ユーザ側付加処理部216は、指定された表示件数分のレコードが読み出されたか否かを判定する(ステップF803)。
指定された表示件数分のレコードが読み出されていないと判定された場合、ユーザ側付加処理部216は、変数Tを更新する(ステップF804)。その後、ユーザ側付加処理部216は、ステップS604に戻り、同様の処理を実行する。
具体的には、ユーザ側付加処理部216は、指定された表示件数から読み出されたレコードの数を減算することによって算出された値をTに設定する。
指定された表示件数分のレコードが読み出されたと判定された場合、ユーザ側付加処理部216は、処理結果を所定のデータ形式に整形することによって、結果表示情報を生成する(ステップF805)。
次に、ユーザ側付加処理部216は、結果表示情報をブラウザ211に送信する(ステップF806)。ブラウザ211は、結果表示情報に基づいて、患者情報表示画面2122を表示装置220に表示する。
次に、ユーザ側付加処理部216は、範囲ラベル候補情報に含まれる全ての範囲ラベルの検索クエリが生成されたか否かを判定する(ステップF807)。
範囲ラベル候補情報に含まれる全ての範囲ラベルの検索クエリが生成されていないと判定された場合、ユーザ側付加処理部216は、ステップS603に戻り、同様の処理を実行する。
範囲ラベル候補情報に含まれる全ての範囲ラベルの検索クエリが生成されたと判定された場合、ユーザ側付加処理部216は、結果表示処理を終了する。
以上が範囲検索/ソート処理の説明である。
(3−4)実施例3の効果
以上に説明したように、実施例3の秘匿化データベースシステム1では、対応範囲情報2621、暗号化対応範囲情報4626、及びSQL定義情報361に基づいて、任意のカラムの値の範囲を含む検索条件を受け付けた場合、暗号化された情報が復号化されることなく、指定された範囲に含まれる情報を含む検索結果がユーザ端末2に送信される。したがって、データの秘匿性を維持しつつ、任意のテーブルから指定された範囲に含まれるレコードを取得するデータベース操作命令を実行可能な秘匿化データベースシステムを実現することができる。
また、実施例3の秘匿化データベースシステム1では、対応範囲情報2621、暗号化対応範囲情報4626、及びSQL定義情報361に基づいて、所定数のレコードを処理結果がユーザ端末2に送信され、また、所定の順番に並び替えられたレコードが表示される。したがって、データの秘匿性を維持しつつ、所定のテーブルから、指定された順番にソートされた所定の数のレコードを取得するデータベース操作命令を実行可能な秘匿化データベースシステムを実現することができる。
なお、実施例1及び実施例2の秘匿化データベースシステム1にもソート処理を実現するための構成を追加してもよい。
実施例1から実施例3で示したように、本発明の秘匿化データベースシステム1は、以下のような流れでデータ加工を伴うデータの取得要求の処理を実現する。
ユーザ端末2は、平文データを含むデータの取得要求を受け付けた場合、ユーザ側付加情報群262を用いて暗号化データを含むデータの取得要求に変換する。また、ユーザ端末2は、ユーザ内部ネットワーク5及び外部ネットワークを介して、クラウド側のアプリケーションサーバ3に暗号化データを処理するための処理命令を送信する。
アプリケーションサーバ3は、暗号化データを含むデータの取得要求をSQL定義情報361に基づいて、暗号化データに対する操作を含むSQLを生成し、データベースサーバ4に送信する。
データベースサーバ4は、アプリケーションサーバ3からSQLを受信した場合、当該SQL及びデータベース側付加情報群462に基づいて、暗号化データの取得処理を実行する。データベースサーバ4は、アプリケーションサーバ3を介して、取得された暗号化データを含む処理結果をユーザ端末2に送信する。
ユーザ端末2は、暗号化データを含む処理結果を復号化し、所定の処理を実行することによって、所望する平文データを取得する。
前述したようにクラウド上のアプリケーションサーバ3及びデータベースサーバ4には平文データが送信されないため、データの秘匿性を維持しつつ、ユーザ端末2は、結合情報取得処理の処理結果、部分一致検索の処理結果、範囲検索の処理結果、及びソート処理の処理結果を取得できる。
実施例1から実施例3では、アプリケーションサーバ3及びデータベースサーバ4は、別々の装置であるが、1つの装置に機能をまとめてもよい。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるCPUが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD−ROM、DVD−ROM、ハードディスク、SSD(Solid State Drive)、光ディスク、光磁気ディスク、CD−R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、C/C++、perl、Shell、PHP、Java等の広範囲のプログラム又はスクリプト言語で実装できる。
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はCD−RW、CD−R等の記憶媒体に格納し、コンピュータが備えるCPUが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。

Claims (14)

  1. 確率的暗号化方式を用いて暗号化された暗号化データを一つ以上含む登録情報を記憶するデータベースサーバ、及び、前記データベースサーバから前記暗号化データを取得するためのデータの取得要求を送信する端末を含むデータベースシステムであって、
    前記確率的暗号化方式は、暗号化前のデータ値が、暗号化処理毎に異なるデータ値となるように前記暗号化データが生成される暗号化方式であり、
    前記端末は、
    ハッシュ値と準同形関数の出力値によるマスクを用いた確率的暗号化方式にしたがって前記データベースサーバに格納するデータを暗号化する暗号化部と、
    前記暗号化データを復号化する復号化部と、
    複数の異なる入力値から同一の値を出力する準同形関数を用いたマスクによる確率的暗号化にしたがって、暗号化データの検索に用いられる検索クエリが暗号化された暗号化検索クエリを生成する暗号化検索クエリ生成部と、
    平文の検索条件を暗号化し、暗号化された前記検索条件を含む前記データの取得要求を送信する付加処理部と、を有し、
    前記データベースサーバは、
    検索処理の種別毎に、前記データの取得要求を前記データベースサーバが処理するデータベース操作命令に変換するための定義パターンを格納するデータベース操作命令定義情報と、
    前記検索処理の種別毎の検索用付加情報と、を保持し、
    前記データベース操作命令定義情報に基づいて、前記端末から受信したデータ取得要求を変換することによって前記データベース操作命令を生成するデータベース操作命令生成部と、
    前記データベース操作命令及び前記検索用付加情報を用いて、要求された前記暗号化データを取得するデータベース制御部と、
    前記検索用付加情報を用いて、前記暗号化検索クエリと一致する前記暗号化データを判定する暗号一致判定部と、を有し、
    前記付加処理部は、前記検索用付加情報を用いた検索処理を行うためのデータの取得要求を生成し、
    前記データベース制御部は、
    前記データベース操作命令の実行時に、前記暗号一致判定部を呼び出し、
    前記暗号一致判定部の処理結果に基づいて、前記検索条件を満たす前記暗号化データを取得し、
    前記取得された暗号化データを含む処理結果を前記端末に送信し、
    前記復号化部は、前記処理結果に含まれる前記暗号化データを復号化することを特徴とするデータベースシステム。
  2. 請求項1に記載のデータベースシステムであって、
    前記検索用付加情報を用いた検索処理は、二つの結合対象の前記登録情報を結合した結合情報から前記暗号化データを取得する結合情報取得処理、前記登録情報から検索語と部分的に一致する前記暗号化データを取得する部分一致検索処理、及び任意の範囲に含まれる前記暗号化データを取得する範囲検索処理の少なくともいずれかであることを特徴とするデータベースシステム。
  3. 請求項2に記載のデータベースシステムであって、
    前記登録情報は、前記暗号化データを格納する一つ以上のカラムを含むレコードを一つ以上含み、
    前記結合情報取得処理は、前記結合情報に含まれるレコードから前記一つ以上の暗号化データを取得する処理であり、
    前記データベースサーバは、前記結合情報取得処理に用いる暗号化結合情報を前記検索用付加情報として保持し、
    前記暗号化結合情報は、前記二つの結合対象の登録情報から結合するレコードを特定するための前記暗号化検索クエリを含み、
    前記データベース操作命令生成部は、前記暗号化結合情報を参照し、前記暗号化検索クエリと一致する前記二つの結合対象の登録情報に含まれるレコードを結合するための第1データベース操作命令を生成することを特徴とするデータベースシステム。
  4. 請求項3に記載のデータベースシステムであって、
    前記付加処理部は、
    前記二つの結合対象の登録情報から、一つの前記登録情報を選択し、
    前記データベースサーバから、前記選択された登録情報の結合対象のカラムに格納される前記暗号化データを取得し、
    前記復号化部に前記暗号化データの復号化を指示し、
    前記暗号化検索クエリ生成部は、前記復号化されたデータから第1暗号化検索クエリを生成し、
    前記付加処理部は、
    前記選択された登録情報に、前記第1暗号化検索クエリを格納するカラムを追加することによって前記暗号化結合情報を生成するための第1生成要求を送信し、
    前記データベース操作命令生成部は、前記第1生成要求から第2データベース操作命令を生成し、
    前記データベース制御部は、前記第2データベース操作命令に基づいて、前記暗号化結合情報を生成することを特徴とするデータベースシステム。
  5. 請求項4に記載のデータベースシステムであって、
    前記付加処理部は、
    前記二つの結合対象の登録情報の各々の前記レコード数を取得し、
    前記レコード数が少ない前記登録情報を、前記第1暗号化検索クエリを格納するカラムを追加する前記登録情報として選択することを特徴とするデータベースシステム。
  6. 請求項2に記載のデータベースシステムであって、
    前記登録情報は、前記暗号化データを格納する一つ以上のカラムを含むレコードを一つ以上含み、
    前記部分一致検索処理は、前記登録情報から検索語に部分的に一致する暗号化データを格納するレコードを検索し、検索されたレコードから前記一つ以上の暗号化データを取得する処理であり、
    前記データベースサーバは、前記部分一致検索処理に用いる暗号化部分情報を前記検索用付加情報として保持し、
    前記暗号化部分情報は、検索対象の前記登録情報の対象のカラムに格納される前記暗号化データが暗号化される前の平文データが所定の粒度に分割した第1部分データを暗号化することによって生成された暗号化部分データ、及び前記暗号化データの識別情報を含み、
    前記付加処理部は、前記検索語を所定の粒度に分割することによって前記複数の第1部分データを生成し、
    前記暗号化検索クエリ生成部は、前記複数の第1部分データから複数の第2暗号化検索クエリを生成し、
    前記付加処理部は、前記複数の第2暗号化検索クエリを含む前記データの取得要求を送信し、
    前記データベース操作命令生成部は、前記複数の第2検索クエリの各々に一致する前記暗号化部分情報の前記暗号化部分データを含むレコードを検索するための第3データベース操作命令を生成することを特徴とするデータベースシステム。
  7. 請求項6に記載のデータベースシステムであって、
    前記第3データベース操作命令は、前記暗号化部分情報から前記第2検索クエリに一致するレコードを検索し、前記検索されたレコードに含まれる前記暗号化データの識別情報を取得するための第4データベース操作命令と、前記暗号化部分情報から検索されたレコードに含まれる前記暗号化データの識別情報に基づいて、前記検索対象の登録情報に含まれるレコードを検索するための第5データベース操作命令と、を含むことを特徴とするデータベースシステム。
  8. 請求項6に記載のデータベースシステムであって、
    前記付加処理部は、
    検索対象の前記登録情報から前記対象のカラムに格納される前記暗号化データを取得し、
    前記復号化部に前記暗号化データの復号化を指示し、
    前記復号化されたデータを所定の粒度の分割することによって複数の第2部分データを生成し、
    前記暗号化検索クエリ生成部は、前記複数の第2部分データから前記複数の第2暗号化検索クエリを生成し、
    前記複数の第2暗号化データの各々の識別情報と、前記複数の第2暗号化検索クエリとを対応付けて前記暗号化部分情報を生成するための第2生成要求を送信し、
    前記データベース操作命令生成部は、前記第2生成要求から第5データベース操作命令を生成し、
    前記データベース制御部は、前記第5データベース操作命令に基づいて、前記暗号化部分情報を生成することを特徴とするデータベースシステム。
  9. 請求項8に記載のデータベースシステムであって、
    前記付加処理部は、N−gram方式に基づいて、前記第1部分データ及び前記第2部分データを生成することを特徴とするデータベースシステム。
  10. 請求項2に記載のデータベースシステムであって、
    前記登録情報は、前記暗号化データを格納する一つ以上のカラムを含むレコードを一つ以上含み、
    前記範囲検索処理は、対象の登録情報から、対象のカラムに格納される前記暗号化データが指定された範囲に含まれるレコードを検索し、前記検索されたレコードから前記一つ以上の暗号化データを取得する処理であり、
    前記データベースサーバは、前記範囲検索処理に用いる暗号化対応範囲情報を保持し、
    前記端末は、第3暗号化検索クエリを生成するための対応範囲情報を保持し、
    前記暗号化対応範囲情報は、前記対象の登録情報に含まれるレコードの識別情報、及び、前記対象の登録情報に含まれるレコードの前記対象のカラムに含まれる前記暗号化データが含まれる範囲を識別するためのラベルが暗号化された暗号化ラベルを含み、
    前記対応範囲情報は、前記対象のカラムの値域を分割した区分及び前記ラベルを含み、
    前記付加処理部は、
    前記対応範囲情報を参照して、指定された範囲と重複する前記区分を特定し、
    前記特定された区分に対応する前記ラベルから前記第3暗号化検索クエリを生成し、
    前記第3暗号化検索クエリを含む前記データの取得要求を送信し、
    前記データベース操作命令生成部は、前記暗号化されたラベルが前記第3暗号化検索クエリに一致する前記暗号化対応範囲情報に含まれるレコードを検索するための第6データベース操作命令を生成することを特徴とするデータベースシステム。
  11. 請求項10に記載のデータベースシステムであって、
    前記対応範囲情報に含まれるレコードは、前記区分に含まれる値を有する前記対象の登録情報に含まれるレコードの数を示す頻度を含み、
    前記付加処理部は、前記対応範囲情報に含まれる前記レコードに含まれる前記頻度に基づいて、指定された数より出力されるレコードの数が小さくなるように所定の数の前記区分を特定することを特徴とするデータベースシステム。
  12. 請求項10に記載のデータベースシステムであって、
    前記付加処理部は、
    前記データベースサーバから取得したレコードの前記対象のカラムに格納される前記暗号化データの復号化を前記復号化部に命令し、
    前記復号化されたデータに基づいて、前記データベースサーバから取得したレコードから、指定された範囲に含まれないレコードを削除することを特徴とするデータベースシステム。
  13. 請求項2に記載のデータベースシステムであって、
    前記付加処理部は、前記データベースサーバから取得された前記暗号化データを所定の順番で並び替えることを特徴とするデータベースシステム。
  14. 確率的暗号化方式を用いて暗号化された暗号化データを一つ以上含む登録情報を記憶するデータベースサーバ、及び、前記データベースサーバから前記暗号化データを取得するためのデータの取得要求を送信する端末を含むデータベースシステムにおけるデータ検索方法であって、
    前記確率的暗号化方式は、暗号化前のデータ値が、暗号化処理毎に異なるデータ値となるように前記暗号化データが生成される暗号化方式であり、
    前記端末は、
    ハッシュ値と準同形関数の出力値によるマスクを用いた確率的暗号化方式にしたがって前記データベースサーバに格納するデータを暗号化する暗号化部と、
    前記暗号化データを復号化する復号化部と、
    複数の異なる入力値から同一の値を出力する準同形関数を用いたマスクによる確率的暗号化にしたがって、暗号化データの検索に用いられる検索クエリが暗号化された暗号化検索クエリを生成する暗号化検索クエリ生成部と、
    平文の検索条件を暗号化し、暗号化された前記検索条件を含む前記データの取得要求を送信する付加処理部と、を有し、
    前記データベースサーバは、
    検索処理の種別毎に、前記データの取得要求を前記データベースサーバが処理するデータベース操作命令に変換するための定義パターンを格納するデータベース操作命令定義情報と、
    前記検索処理の種別毎の検索用付加情報と、を保持し、
    前記データベース操作命令定義情報に基づいて、前記端末から受信したデータ取得要求を変換することによって前記データベース操作命令を生成するデータベース操作命令生成部と、
    前記データベース操作命令及び前記検索用付加情報を用いて、要求された前記暗号化データを取得するデータベース制御部と、
    前記検索用付加情報を用いて、前記暗号化検索クエリと一致する前記暗号化データを判定する暗号一致判定部と、を有し、
    前記データ検索方法は、
    前記付加処理部が、検索条件を受け付けるステップと、
    前記付加処理部が、前記検索条件に基づいて、前記検索用付加情報を用いた検索処理を行うためのデータの取得要求を生成するステップと、
    前記付加処理部が、前記データの取得要求を前記データベースサーバに送信するステップと、
    前記データベース制御部が、前記データベース操作命令によって生成された前記データベース操作命令を実行する場合、前記暗号一致判定部を呼び出すステップと、
    前記データベース制御部が、前記暗号一致判定部の処理結果に基づいて、前記検索条件を満たす前記暗号化データを取得するステップと、
    前記データベース制御部が、前記取得された暗号化データを含む処理結果を前記端末に送信するステップと、
    前記復号化部が、前記処理結果に含まれる前記暗号化データを復号化するステップと、
    前記付加処理部が、前記復号化されたデータを提示するための表示情報を生成するステップと、を含むことを特徴とするデータ検索方法。
JP2018507857A 2016-03-28 2016-03-28 データベースシステム及びデータ検索方法 Active JP6589051B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/059994 WO2017168535A1 (ja) 2016-03-28 2016-03-28 データベースシステム及びデータ検索方法

Publications (2)

Publication Number Publication Date
JPWO2017168535A1 JPWO2017168535A1 (ja) 2018-12-13
JP6589051B2 true JP6589051B2 (ja) 2019-10-09

Family

ID=59963753

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018507857A Active JP6589051B2 (ja) 2016-03-28 2016-03-28 データベースシステム及びデータ検索方法

Country Status (4)

Country Link
US (1) US10789374B2 (ja)
EP (1) EP3438846B1 (ja)
JP (1) JP6589051B2 (ja)
WO (1) WO2017168535A1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3244567A1 (en) * 2016-05-13 2017-11-15 ABB Schweiz AG Encryption for low-end devices through random number generation offloading
JP2018032149A (ja) * 2016-08-23 2018-03-01 株式会社リコー 情報処理装置、情報処理システム、情報処理方法およびプログラム
JP7127543B2 (ja) * 2016-12-15 2022-08-30 日本電気株式会社 照合システム、方法、装置及びプログラム
US10528557B1 (en) * 2017-12-31 2020-01-07 Allscripts Software, Llc Database methodology for searching encrypted data records
US10528556B1 (en) 2017-12-31 2020-01-07 Allscripts Software, Llc Database methodology for searching encrypted data records
CN108712412B (zh) * 2018-05-15 2022-02-22 北京五八信息技术有限公司 一种数据库的加密、解密方法、装置、存储介质及终端
CN110008283B (zh) * 2019-03-12 2023-09-05 山西数字政府建设运营有限公司 一种基于数据标签的数据处理方法及装置
US11204933B2 (en) * 2019-05-23 2021-12-21 Advanced New Technologies Co., Ltd. Data manipulation record storage method, system, apparatus, and device
JP7249248B2 (ja) 2019-08-30 2023-03-30 株式会社日立製作所 秘匿情報処理システム及び秘匿情報処理方法
CN111026798B (zh) * 2019-12-05 2023-07-14 江苏中车城市发展有限公司 一种机电设备数据库系统及其控制方法
CN111008236B (zh) * 2019-12-06 2023-05-02 支付宝(杭州)信息技术有限公司 一种数据查询的方法和系统
US11222134B2 (en) * 2020-03-04 2022-01-11 Sotero, Inc. System and methods for data encryption and application-agnostic querying of encrypted data
JP7381893B2 (ja) 2020-04-14 2023-11-16 富士通株式会社 検索方法、検索プログラム、および秘密情報検索システム
KR102361327B1 (ko) * 2020-05-29 2022-02-10 서울대학교산학협력단 쉘 정렬을 이용하여 동형 암호문에 대한 정렬을 수행하는 전자 장치 및 그 동작 방법
CN112052246B (zh) * 2020-09-29 2023-11-24 泰康保险集团股份有限公司 医疗数据处理设备及医疗数据处理方法
CN115208630B (zh) * 2022-06-15 2024-04-09 网易(杭州)网络有限公司 基于区块链的数据获取方法、系统及区块链系统
US11977657B1 (en) * 2023-02-22 2024-05-07 Lorica Cybersecurity Inc. Method and system for confidential repository searching and retrieval

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002108910A (ja) * 2000-09-27 2002-04-12 Nec Soft Ltd 暗号化ファイルシステム及び暗号化ファイル検索方法並びにコンピュータ可読記録媒体
JP5411034B2 (ja) * 2010-03-19 2014-02-12 株式会社日立ソリューションズ データベース暗号化システム及び方法
JP5412414B2 (ja) * 2010-12-08 2014-02-12 株式会社日立製作所 検索可能暗号処理システム
JP5307199B2 (ja) 2011-07-15 2013-10-02 株式会社エアー データ管理システム及びデータ管理方法
KR101388724B1 (ko) 2011-11-11 2014-04-25 닛본 덴끼 가부시끼가이샤 데이터베이스 암호화 시스템과 방법 및 컴퓨터 판독가능 기록 매체
US9087212B2 (en) 2012-01-25 2015-07-21 Massachusetts Institute Of Technology Methods and apparatus for securing a database
WO2015063905A1 (ja) * 2013-10-31 2015-05-07 株式会社日立製作所 データ分析システム

Also Published As

Publication number Publication date
US20190034646A1 (en) 2019-01-31
EP3438846A4 (en) 2019-12-11
US10789374B2 (en) 2020-09-29
WO2017168535A1 (ja) 2017-10-05
EP3438846A1 (en) 2019-02-06
JPWO2017168535A1 (ja) 2018-12-13
EP3438846B1 (en) 2022-07-20

Similar Documents

Publication Publication Date Title
JP6589051B2 (ja) データベースシステム及びデータ検索方法
JP4810611B2 (ja) 暗号化されたデータの検索
EP2778951B1 (en) Database encryption system, method and program
US8406422B2 (en) Cryptographic module management apparatus, method, and program
JP6048414B2 (ja) データベース装置と方法及びプログラム
JP2008259139A (ja) 鍵管理システム及び鍵管理方法
US20060168347A1 (en) System for sharing context information between executable applications
JP5140026B2 (ja) データベース処理方法、データベース処理プログラム、および、暗号化装置
KR101979267B1 (ko) 클라우드 저장 기반 암호화 시스템 및 방법
US8638938B2 (en) Symmetric key subscription
JP5307199B2 (ja) データ管理システム及びデータ管理方法
JPH05181666A (ja) 暗号設備を持つデータ処理システム
US11410173B1 (en) Tokenization web services
JP2006189925A (ja) 個人情報管理システム、個人情報管理プログラムおよび個人情報保護方法
JP5586397B2 (ja) セキュア・ネットワーク・ストレージ・システム、方法、クライアント装置、サーバ装置、及びプログラム
JP6099489B2 (ja) 情報処理装置及び情報処理方法及びプログラム
JP5543821B2 (ja) 暗号化装置、復号化装置、および経路探索システム
JPH11331145A (ja) 情報共有システム、情報保管装置およびそれらの情報処理方法、並びに記録媒体
US20200210595A1 (en) CryptoJSON Indexed Search Systems and Methods
JP2007072661A (ja) 識別情報生成管理装置およびシステムならびにプログラム
JP2019198052A (ja) 鍵生成システム
JP7325872B1 (ja) 秘匿計算システム、情報処理装置、コンピュータープログラムおよびアクセス権管理方法
JP4666921B2 (ja) 文書保護管理システムおよび方法
Lufei et al. Adaptive secure access to remote services in mobile environments
JP5344166B2 (ja) 文書管理システム、文書管理方法、及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180803

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190913

R150 Certificate of patent or registration of utility model

Ref document number: 6589051

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150