WO2023119554A1 - 制御方法、情報処理装置および制御プログラム - Google Patents

制御方法、情報処理装置および制御プログラム Download PDF

Info

Publication number
WO2023119554A1
WO2023119554A1 PCT/JP2021/047868 JP2021047868W WO2023119554A1 WO 2023119554 A1 WO2023119554 A1 WO 2023119554A1 JP 2021047868 W JP2021047868 W JP 2021047868W WO 2023119554 A1 WO2023119554 A1 WO 2023119554A1
Authority
WO
WIPO (PCT)
Prior art keywords
key
information
database
server
individual
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.)
Ceased
Application number
PCT/JP2021/047868
Other languages
English (en)
French (fr)
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to PCT/JP2021/047868 priority Critical patent/WO2023119554A1/ja
Priority to JP2023568933A priority patent/JPWO2023119554A1/ja
Publication of WO2023119554A1 publication Critical patent/WO2023119554A1/ja
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • 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

Definitions

  • the information 24, 25, 26 and restoring the key information 16 are protected through the database 13 and the database management program 14. Therefore, even if an attacker intrudes into the information processing device 10 or the administrator of the information processing device 10 maliciously leaks information, there is a risk that the key information 16 will be illegally obtained by a third party. descend. As a result, the risk of unauthorized decryption of the encrypted data using the key information 16 is reduced, and data security is improved.
  • the information processing apparatus 10 may acquire package data including the database 13 and the database management program 14 from the source of the request for the key information 16, or may return the package data with the key information 16 stored. good. This enhances the protection of database 13 under the control of the requestor of key information 16 .
  • FIG. 5 is a diagram showing an example of arrangement of key element information in a server device.
  • the clerk server 35 stores individual key position information 141 and an individual key list 144 .
  • the clerk server 36 stores individual key location information 142 and an individual key list 145 .
  • the clerk server 37 stores individual key position information 143 and an individual key list 146 .
  • the key management server 31 also generates individual key lists 144, 145, and 146 based on the three individual keys and the three correct positions calculated above. For example, individual key list 146 contains the individual key for member server 32 in the correct position #6. Individual key list 144 contains the individual key for member server 33 in the correct position #2. Individual key list 145 contains the individual key for member server 34 in the correct position #4.
  • the user definition 136 indicates users who can access the database.
  • the user may be identified by the user name, the server name or role ID of the server device, or the communication address of the server device.
  • the authority definition 137 indicates the type of data manipulation permitted for each user. For example, whether or not data retrieval, data insertion, data update, and data deletion are allowed in the database is defined. Also, stored procedures that can be executed by each user among the registered stored procedures are specified.
  • the data file 132 is a file containing records of relational database tables.
  • Data file 132 is encrypted.
  • the unit of encryption may be coarse granularity, such as the entire data file 132, or fine granularity, such as table units or record units.
  • the management information file 131 and the data file 132 are generated and encrypted using a normal version of the DBMS program whose functions are not restricted.
  • a user definition 136, an authority definition 137, a data structure definition 138 and a procedure definition 139 suitable for realizing the encryption key recovery flow to be described later are set.
  • the normal version of the DBMS program is replaced with the DBMS program 133 .
  • the clerk table 161 and member table 162 are created when the data capsule 130 is generated and are not updated.
  • the encryption key table 163, the individual key position table 164, the individual key table 165, and the duplex key position table 166 are empty when the data capsule 130 is generated. Records are inserted into the individual key position table 164 and the individual key table 165 from the clerk servers 35 , 36 and 37 . Records are inserted from the member servers 32 , 33 , 34 into the encryption key table 163 and the duplicated key position table 166 .
  • the stored procedure 172 indicates individual key position calculation.
  • the stored procedure 172 is called when the stored procedure 171 outputs True.
  • the stored procedure 172 synthesizes the individual key position information contained in the individual key position table 164 and calculates an index indicating the individual key position of each member server. For example, the stored procedure 172 calculates the sum of even numbers times the product of odd numbers for each member server. Stored procedure 172 outputs the calculated individual key position. Note that the logic for calculating the individual key position is hidden in the stored procedure 172 and is not disclosed to the outside.
  • the stored procedure 177 indicates the completion of encryption key communication.
  • the stored procedure 177 is called when a record is inserted into the encryption key table 163 .
  • the stored procedure 177 collates the member table 162 and the encryption key table 163 to determine whether or not the encryption key reading results have been received from all the member servers.
  • the stored procedure 177 outputs True or False indicating the determination result.
  • the key management server 31 specifies the member identifier of the member server 32 and executes the stored procedure 173 .
  • Stored procedure 173 removes extraction failure information from data capsule 130 . This leaves the data capsule 130 with three individual keys corresponding to the member servers 32 , 33 , 34 .
  • the stored procedure 173 marks the individual key corresponding to the member identifier of the member server 32 among the three individual keys. At this time, the individual key is protected from the key management server 31 .
  • the key management server 31 executes the stored procedure 176.
  • the stored procedure 176 inputs the three numerical values collected from the member servers 32 , 33 , 34 into the hash function to calculate the double key position of the member server 32 .
  • the key management server 31 acquires “4” as the duplicate key position of the member server 32 from the stored procedure 176 . At this time, the collected numerical values and logic for synthesizing them are protected from the key management server 31 .
  • the key verification server 38 has a verification information storage section 128 and a key verification section 129 .
  • the verification information storage unit 128 is implemented using the RAM or HDD of the key verification server 38, for example.
  • the key verification unit 129 is implemented using, for example, the CPU, communication interface, and program of the key verification server 38 .
  • a plurality of key verification servers may exist.
  • FIG. 13 is a flow chart showing an example of a procedure for restoring an encryption key.
  • the key management server 31 receives a request for an encryption key from the target member server. At this time, the key management server 31 receives the data capsule 130 from the target member server.
  • the key management server 31 notifies the member servers 32, 33, and 34 of the location of the duplicated key of the target member server.
  • Each of the member servers 32, 33, and 34 extracts the key at the specified duplicate key position from the duplicate key list it owns.
  • the information processing system stores the individual key and duplicate key mixed with the trap key. This makes it difficult for an attacker who does not know the correct location to evade the trap, making the attack easier to detect.
  • the information processing system outputs an alert indicating the possibility of unauthorized access and delays the response of the server device. This makes it difficult for an attacker to access a large number of server devices in a short period of time, ensuring sufficient time to detect an attack and take countermeasures.
  • the fact that the trap key was selected is used to determine whether to invalidate the data encapsulation, improving security.
  • the information processing system distributes fragmentary position information for calculating the correct positions of the individual key and the duplicated key to a plurality of server devices. As a result, the number of server devices that an attacker must intrude to avoid the trap increases, and the time required for the attack increases.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bioethics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

鍵情報の不正取得を抑止する。 情報処理装置(10)は、鍵情報(16)の要求を受け付ける。情報処理装置(10)は、入力データの保存およびプロシジャ(15)の実行を許可し、保存された入力データの読み出しを制限するデータベース管理プログラム(14)によって保護されるデータベース(13)を用いて、ノード(21,22,23)から、データベース(13)に保存された状態で情報(24,25,26)を取得する。情報処理装置(10)は、保存された情報(24,25,26)に対してプロシジャ(15)を実行することで、データベース(13)の中に鍵情報(16)を復元する。情報処理装置(10)は、要求に応答して、鍵情報(16)を含むデータベース(13)を出力する。

Description

制御方法、情報処理装置および制御プログラム
 本発明は制御方法、情報処理装置および制御プログラムに関する。
 情報処理システムは、保存されたデータが第三者に漏洩しないように、データを暗号化して保護することがある。データを読み出す際には、情報処理システムは、鍵情報を用いて暗号化データを一時的に復号する。情報処理システムは、鍵情報として、共通鍵暗号方式の共通鍵または公開鍵暗号方式の秘密鍵を使用することがある。ただし、鍵情報が第三者に漏洩すると、暗号化データが不正に復号されてしまう。そのため、情報処理システムは、鍵情報を安全に管理することが重要である。
 なお、秘密情報を復元するための複数の分散データを秘密情報から生成して複数の端末装置に分散して送信し、秘密情報の要求に応じて、複数の端末装置から複数の分散データを収集して秘密情報を復元する通信装置が提案されている。
特開2013-127647号公報
 鍵情報を管理する方法として、情報処理システムは、鍵情報の復元に用いられる複数の情報を複数のノードに分散して配置し、鍵情報が要求される毎に複数のノードから情報を収集して鍵情報を復元する方法が考えられる。しかし、鍵情報を復元する情報処理装置に攻撃者が侵入し、または、その情報処理装置の管理者が悪意をもって情報を漏洩させることで、第三者が鍵情報を不正取得するリスクがある。そこで、1つの側面では、本発明は、鍵情報の不正取得を抑止することを目的とする。
 1つの態様では、以下の処理をコンピュータが実行する制御方法が提供される。暗号化データの復号に用いられる鍵情報の要求を受け付ける。入力データの保存および保存された入力データを変換するプロシジャの実行を許可し、保存された入力データの読み出しを制限するデータベース管理プログラムによって保護されるデータベースを用いて、鍵情報の復元に用いられる要素情報および要素情報の変換方法を示すロジック情報のうちの少なくとも一方の情報をそれぞれもつ複数のノードから、データベースに保存された状態で情報を取得する。データベースに保存された情報に対してプロシジャを実行することで、データベースの中に鍵情報を復元する。要求に応答して、鍵情報を含むデータベースを出力する。また、1つの態様では、記憶部と処理部とを有する情報処理装置が提供される。また、1つの態様では、コンピュータに実行させる制御プログラムが提供される。
 1つの側面では、鍵情報の不正取得が抑止される。
 本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
第1の実施の形態の情報処理装置を説明するための図である。 第2の実施の形態の情報処理システムの例を示す図である。 サーバ装置のハードウェア例を示すブロック図である。 暗号鍵から生成される鍵要素情報の例を示す図である。 サーバ装置への鍵要素情報の配置例を示す図である。 データカプセルの構造例を示すブロック図である。 データベースに含まれるテーブルの例を示す図である。 データベースに含まれるプロシジャ定義の例を示す図である。 データベースに含まれる権限定義の例を示す図である。 暗号鍵の復元例を示す図である。 暗号鍵の復元例を示す図(続き)である。 サーバ装置のソフトウェア構造例を示すブロック図である。 暗号鍵復元の手順例を示すフローチャートである。 暗号鍵復元の手順例を示すフローチャート(続き)である。
 以下、本実施の形態を図面を参照して説明する。
 [第1の実施の形態]
 第1の実施の形態を説明する。
 図1は、第1の実施の形態の情報処理装置を説明するための図である。
 第1の実施の形態の情報処理装置10は、暗号化データの復号に用いられる鍵情報を管理する。情報処理装置10は、クライアント装置でもよいしサーバ装置でもよい。情報処理装置10が、コンピュータ、鍵管理装置または制御装置と呼ばれてもよい。
 情報処理装置10は、記憶部11および処理部12を有する。記憶部11は、RAM(Random Access Memory)などの揮発性半導体メモリでもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性ストレージでもよい。処理部12は、例えば、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)などのプロセッサである。ただし、処理部12が、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの電子回路を含んでもよい。プロセッサは、例えば、RAMなどのメモリ(記憶部11でもよい)に記憶されたプログラムを実行する。プロセッサの集合が、マルチプロセッサまたは単に「プロセッサ」と呼ばれてもよい。
 記憶部11は、データベース13およびデータベース管理プログラム14を記憶する。データベース13とデータベース管理プログラム14とは、パッケージデータとして結合されていてもよい。このパッケージデータが、データカプセルと呼ばれてもよい。
 データベース13は、データベース管理プログラム14を通じてアクセスされる。データベース13は、データを記憶する。データベース13が、データファイルまたはデータファイル群に相当してもよい。データベース13は、関係データベースでもよいし、ツリー型やネットワーク型などの非関係データベースでもよい。データベース13は、データベース管理プログラム14によって暗号化されてもよい。
 データベース管理プログラム14は、データベース13を管理する。データベース管理プログラム14は、データベース13へのアクセスの種類を制限することで、データベース13を保護する。データベース管理プログラム14は、外部から入力される入力データをデータベース13に保存することを許可する。
 また、データベース管理プログラム14は、データベース13に保存された入力データを変換するプロシジャ15の実行を許可する。プロシジャ15は、例えば、データベース管理プログラム14に事前に登録されるストアドプロシジャであり、データベース13に対する処理手順を規定したプログラムである。プロシジャ15は、変換結果データを外部に出力してもよいし、データベース13に保存してもよい。ただし、プロシジャ15は、変換前の入力データそのものを外部に出力しない。また、プロシジャ15の処理手順そのものは外部に開示されない。データベース管理プログラム14は、プロシジャ15の定義を示す管理情報を暗号化して保持してもよい。
 一方、データベース管理プログラム14は、データベース13に保存された入力データの読み出しを制限する。なお、データベース管理プログラム14は、データベース13に入力データを保存することができるユーザを限定してもよく、プロシジャ15を実行することができるユーザを限定してもよい。データベース管理プログラム14は、ユーザのアクセス権限の定義を示す管理情報を暗号化して保持してもよく、運用開始後に管理情報を変更することを制限してもよい。
 処理部12は、暗号化データの復号に用いられる鍵情報16の要求を受け付ける。要求は、情報処理装置10の内部で生成されてもよいし、情報処理装置10の外部から受信されてもよい。処理部12は、鍵情報16を要求する情報処理装置から、データベース13およびデータベース管理プログラム14を含むパッケージデータを受信してもよい。
 処理部12は、データベース13およびデータベース管理プログラム14を用いて、ノード21,22,23から情報24,25,26を収集する。このとき、情報24,25,26は、データベース13に保存された状態で取得される。例えば、処理部12は、ノード21,22,23に、データベース管理プログラム14を介して情報24,25,26をデータベース13に保存させる。よって、情報処理装置10は、情報24,25,26をデータベース13から読み出さず、情報24,25,26の内容を認識しない。
 ノード21,22,23は、情報処理装置10と異なる情報処理装置である。ノード21,22,23は、クライアント装置でもよいしサーバ装置でもよい。ノード21,22,23が、コンピュータまたはメンバ装置と呼ばれてもよい。なお、第1の実施の形態ではノード数が3であるが、ノード数は2以上あればよい。ノード21,22,23は、鍵情報16の復元に用いられる要素情報および要素情報の変換方法を示すロジック情報のうち、少なくとも一方の情報をそれぞれもつ。ノード21は情報24をもち、ノード22は情報25をもち、ノード23は情報26をもつ。なお、鍵情報16を要求する情報処理装置が、ノード21,22,23のうちの何れかのノードであってもよい。
 情報24,25,26を取得するために、処理部12は、データベース管理プログラム14をサーバプロセスとして実行し、データベース13に情報24,25,26を保存するためのアプリケーションインタフェースをノード21,22,23に開示してもよい。また、処理部12は、データベース13、または、データベース13およびデータベース管理プログラム14を含むパッケージデータを、ノード21,22,23に順に送信して返信してもらってもよい。また、処理部12は、データベース13、または、データベース13およびデータベース管理プログラム14を含むパッケージデータを、複製してノード21,22,23に並列に送信して返信してもらってもよい。その場合、処理部12は、複製されたデータベース13の内容を、プロシジャ15を利用して統合する。
 処理部12は、データベース13に保存された情報24,25,26に対してプロシジャ15を実行することで、データベース13の中に鍵情報16を復元する。鍵情報16は、例えば、共通鍵暗号方式の共通鍵または公開鍵暗号方式の秘密鍵である。鍵情報16を復元する過程で、情報処理装置10は、情報24,25,26や鍵情報16をデータベース13から読み出さず、情報24,25,26や鍵情報16の内容を認識しない。また、情報処理装置10は、プロシジャ15に定義された変換ロジックを認識しない。
 このとき、プロシジャ15は、情報24,25,26に対して、結合、四則演算、論理演算などの数値計算を変換ロジックとして実行することで、変換後情報を生成してもよい。この変換後情報が、鍵情報16であってもよい。また、この変換後情報が、鍵情報16の位置を示す位置情報であってもよい。位置情報が生成された場合、処理部12は、位置情報が指し示す鍵情報16をデータベース13に保存させてもよい。位置情報が指し示す鍵情報16は、ノード21,22,23のうちの1つのノードがもっていてもよい。
 処理部12は、鍵情報16の要求に対する応答として、鍵情報16を含むデータベース13を出力する。例えば、処理部12は、鍵情報16を要求した情報処理装置にデータベース13を送信する。処理部12は、データベース13およびデータベース管理プログラム14を含むパッケージデータを出力してもよい。なお、データベース管理プログラム14は、データベース13の出力先の情報処理装置がデータベース13から鍵情報16を抽出することを許可するように設定されてもよい。
 以上説明したように、第1の実施の形態の情報処理装置10は、ノード21,22,23から、データベース13に保存された状態で情報24,25,26を取得する。情報処理装置10は、データベース13に保存された情報24,25,26に対してプロシジャ15を実行することで、データベース13の中に鍵情報16を復元する。そして、情報処理装置10は、鍵情報16を含むデータベース13を出力する。
 これにより、情報24,25,26を収集して鍵情報16を復元する過程においても、情報24,25,26、鍵情報16および変換ロジックが、データベース13およびデータベース管理プログラム14を通じて保護される。このため、情報処理装置10に攻撃者が侵入した場合や、情報処理装置10の管理者が悪意で情報を漏洩させる場合であっても、鍵情報16が第三者に不正取得されるリスクが低下する。この結果、鍵情報16を用いて暗号化データが不正に復号されるリスクが低下し、データセキュリティが向上する。
 なお、情報処理装置10は、鍵情報16の要求元から、データベース13およびデータベース管理プログラム14を含むパッケージデータを取得してもよく、鍵情報16が保存された状態でパッケージデータを返信してもよい。これにより、鍵情報16の要求元による制御のもとで、データベース13の保護が強化される。
 また、データベース管理プログラム14は、情報24,25,26の保存をノード21,22,23に許可し、プロシジャ15の実行を情報処理装置10に許可し、鍵情報16の抽出をデータベース13の出力先に許可するよう設定されてもよい。これにより、鍵情報16を復元するために十分なアクセス権限が設定され、鍵情報16を復元する手続きの円滑化と鍵情報16の保護とのバランスが図られる。
 また、情報処理装置10は、プロシジャ15を用いて情報24,25,26から位置情報を生成してもよく、位置情報に基づいて、ノード21,22,23のうちの1つのノードから、データベース13に保存された状態で鍵情報16を取得してもよい。これにより、鍵情報16の漏洩リスクが更に低下する。
 [第2の実施の形態]
 次に、第2の実施の形態を説明する。
 図2は、第2の実施の形態の情報処理システムの例を示す図である。
 第2の実施の形態の情報処理システムは、データの暗号化および復号のための暗号鍵を、複数のサーバ装置が協調することで分散管理し、暗号鍵の漏洩リスクを低減する。これにより、データ漏洩リスクが低下する。第2の実施の形態の暗号鍵は、共通鍵暗号方式の共通鍵である。ただし、暗号鍵が、公開鍵暗号方式の公開鍵および秘密鍵であってもよい。情報処理システムは、ネットワーク30に接続された鍵管理サーバ31、メンバサーバ32,33,34、クラークサーバ35,36,37および鍵検証サーバ38を有する。ネットワークは、LAN(Local Area Network)を含んでもよく、インターネットを含んでもよい。鍵管理サーバ31は、第1の実施の形態の情報処理装置10に対応する。
 鍵管理サーバ31、メンバサーバ32,33,34、クラークサーバ35,36,37および鍵検証サーバ38は、サーバコンピュータである。鍵管理サーバ31、メンバサーバ32,33,34、クラークサーバ35,36,37および鍵検証サーバ38は、ユーザが所有するオンプレミスシステムに含まれてもよいし、データセンタに配置されてもよいし、いわゆるクラウドシステムに含まれてもよい。
 メンバサーバ32,33,34は異なるユーザに対応してもよく、クラークサーバ35,36,37は異なるユーザに対応してもよい。ユーザはメンバ企業であってもよい。鍵管理サーバ31、メンバサーバ32,33,34、クラークサーバ35,36,37および鍵検証サーバ38は、サーバ群の中から動的に選択されてもよく、以下に説明する役割(ロール)をサーバ群が持ち回りで担当してもよい。
 鍵管理サーバ31は、ユーザが使用する暗号鍵の秘匿化および復元を制御する。鍵管理サーバ31は、メンバサーバ32,33,34の1つから暗号鍵の要求を受信する。鍵管理サーバ31には、暗号鍵そのものは保存されていない。鍵管理サーバ31は、暗号鍵が要求される毎に、メンバサーバ32,33,34およびクラークサーバ35,36,37から情報を収集し、要求元のメンバサーバ用の暗号鍵を復元して送信する。
 メンバサーバ32,33,34は、暗号鍵を用いてデータの暗号化および復号を行う。メンバサーバ32,33,34は、互いに異なる暗号鍵を使用する。メンバサーバ32,33,34は、事前に暗号鍵を鍵管理サーバ31に提供し、暗号鍵そのものをローカルに保存しない。メンバサーバ32,33,34は、暗号鍵を使用する際、鍵管理サーバ31に暗号鍵を要求し、鍵管理サーバ31から受信した暗号鍵でデータの暗号化および復号を行う。暗号鍵の使用後は、メンバサーバ32,33,34は暗号鍵を破棄する。
 また、メンバサーバ32,33,34は、鍵管理サーバ31から配布された情報を記憶し、鍵管理サーバ31からの要求に応じて鍵管理サーバ31に情報を送信する。メンバサーバ32,33,34に配布される情報には、暗号鍵を暗号化することで生成される二重化鍵が含まれる。暗号鍵は、メンバサーバ間で異なる個別鍵によって暗号化される。個別鍵は、共通鍵暗号方式の共通鍵である。ただし、個別鍵が、公開鍵暗号方式の公開鍵および秘密鍵でもよい。メンバサーバ32,33,34の間では二重化鍵が交換される。よって、あるメンバサーバ用の二重化鍵は、他のメンバサーバに保存される。
 また、メンバサーバ32,33,34は、二重化鍵に加えて後述するトラップ鍵やダミー鍵を記憶する。二重化鍵とトラップ鍵とダミー鍵とが混在しているため、二重化鍵を読み出すには、二重化鍵の位置を正しく指定することになる。メンバサーバ32,33,34に配布される情報には、二重化鍵の位置を特定するための位置情報が含まれる。メンバサーバ32,33,34は、第1の実施の形態のノード21,22,23に対応する。
 クラークサーバ35,36,37は、暗号鍵を復号するための個別鍵を保護する。クラークサーバ35,36,37は、鍵管理サーバ31から配布された情報を記憶し、鍵管理サーバ31からの要求に応じて鍵管理サーバ31に情報を送信する。クラークサーバ35,36,37に配布される情報には、個別鍵が含まれる。
 また、クラークサーバ35,36,37は、個別鍵に加えてトラップ鍵やダミー鍵を記憶する。個別鍵とトラップ鍵とダミー鍵とが混在しているため、個別鍵を読み出すには、個別鍵の位置を正しく指定することになる。クラークサーバ35,36,37に配布される情報には、個別鍵の位置を特定するための位置情報が含まれる。
 鍵検証サーバ38は、メンバサーバ32,33,34およびクラークサーバ35,36,37からの要求に応じて鍵種別を判定する。鍵検証サーバ38は、事前に設定された判定アルゴリズムに従って、クラークサーバ35,36,37から受信されるビット列が個別鍵、トラップ鍵およびダミー鍵の何れに相当するか判定する。また、鍵検証サーバ38は、事前に設定された判定アルゴリズムに従って、メンバサーバ32,33,34から受信されるビット列が二重化鍵、トラップ鍵およびダミー鍵の何れに相当するか判定する。
 二重化鍵については、鍵検証サーバ38は、復号前のビット列から鍵種別を判定してもよいし、復号後のビット列から鍵種別を判定してもよい。また、二重化鍵の復号は、メンバサーバ32,33,34が行ってもよいし、鍵検証サーバ38が行ってもよい。鍵検証サーバ38は、判定した鍵種別を応答する。ただし、判定した鍵種別がトラップ鍵である場合、鍵検証サーバ38はトラップ処理を行う。トラップ処理は、セキュリティ攻撃の可能性を示すアラートを出力することを含む。アラートの出力先は、例えば、鍵管理サーバ31である。また、トラップ処理は、意図的に応答を遅延させることを含む。これにより、攻撃者が誤った位置を指定した場合、攻撃者のもとに情報が集まることが遅延する。
 第2の実施の形態では、暗号鍵および暗号鍵を復元するための各種情報が鍵管理サーバ31から漏洩することを抑止するため、後述するデータカプセルが使用される。暗号鍵を要求するメンバサーバは、データカプセルを生成して鍵管理サーバ31に送信する。このデータカプセルは、鍵管理サーバ31とメンバサーバ32,33,34との通信および鍵管理サーバ31とクラークサーバ35,36,37との通信にも使用される。要求元のメンバサーバは、暗号鍵が入ったデータカプセルを鍵管理サーバ31から受信する。
 ただし、暗号鍵を要求するメンバサーバは、自らデータカプセルを生成する代わりに、図示しないデータカプセル生成サーバにデータカプセルの生成を依頼してもよい。その場合、データカプセル生成サーバは、後述するような設定をデータカプセルに対して行い、暗号鍵を要求するメンバサーバにデータカプセルを提供する。
 図3は、サーバ装置のハードウェア例を示すブロック図である。
 鍵管理サーバ31は、バスに接続されたCPU101、RAM102、HDD103、GPU104、入力インタフェース105、媒体リーダ106および通信インタフェース107を有する。メンバサーバ32,33,34、クラークサーバ35,36,37および鍵検証サーバ38が、鍵管理サーバ31と同様のハードウェアを有してもよい。CPU101は、第1の実施の形態の処理部12に対応する。RAM102またはHDD103は、第1の実施の形態の記憶部11に対応する。
 CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。鍵管理サーバ31は、複数のプロセッサを有してもよい。
 RAM102は、CPU101で実行されるプログラムおよびCPU101で演算に使用されるデータを一時的に記憶する揮発性半導体メモリである。鍵管理サーバ31は、RAM以外の種類の揮発性メモリを有してもよい。
 HDD103は、OS(Operating System)、ミドルウェア、アプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性ストレージである。鍵管理サーバ31は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の不揮発性ストレージを有してもよい。
 GPU104は、CPU101と連携して画像処理を行い、鍵管理サーバ31に接続された表示装置111に画像を出力するプロセッサである。表示装置111は、例えば、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ、有機EL(Electro Luminescence)ディスプレイまたはプロジェクタである。なお、鍵管理サーバ31に、プリンタなどの他の種類の出力デバイスが接続されてもよい。
 入力インタフェース105は、鍵管理サーバ31に接続された入力デバイス112から入力信号を受け付ける。入力デバイス112は、例えば、マウス、タッチパネルまたはキーボードである。鍵管理サーバ31に複数の入力デバイスが接続されてもよい。
 媒体リーダ106は、記録媒体113に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体113は、例えば、磁気ディスク、光ディスクまたは半導体メモリである。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)およびHDDが含まれる。光ディスクには、CD(Compact Disc)およびDVD(Digital Versatile Disc)が含まれる。媒体リーダ106は、記録媒体113から読み取られたプログラムおよびデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、CPU101によって実行されることがある。
 記録媒体113は、可搬型記録媒体であってもよい。記録媒体113は、プログラムおよびデータの配布に用いられることがある。また、記録媒体113およびHDD103が、コンピュータ読み取り可能な記録媒体と呼ばれてもよい。
 通信インタフェース107は、ネットワーク30を介してメンバサーバ32,33,34やクラークサーバ35,36,37と通信する。通信インタフェース107は、スイッチやルータなどの有線通信装置に接続される有線通信インタフェースでもよいし、基地局やアクセスポイントなどの無線通信装置に接続される無線通信インタフェースでもよい。
 次に、暗号鍵を復元するための鍵要素情報について説明する。
 図4は、暗号鍵から生成される鍵要素情報の例を示す図である。
 鍵管理サーバ31は、メンバサーバ32,33,34から、メンバサーバ32,33,34に対応する3つの暗号鍵を取得する。暗号鍵41は、メンバサーバ32の暗号鍵である。鍵管理サーバ31は、メンバサーバ32,33,34に対応させて3つの個別鍵を生成する。個別鍵42は、メンバサーバ32に対応する個別鍵である。鍵管理サーバ31は、3つの暗号鍵をそれぞれ対応する個別鍵で暗号化して、3つの二重化鍵を生成する。二重化鍵43は、暗号鍵41を個別鍵42で暗号化することによって生成される。
 鍵管理サーバ31は、3つの二重化鍵から、3つの二重化鍵リストと3つの二重化鍵位置情報を生成する。各二重化鍵リストは、1つの二重化鍵と複数のトラップ鍵と複数のダミー鍵を含む。3つの二重化鍵リストは、異なるメンバサーバに配布される。二重化鍵リスト46は、メンバサーバ32に配布される。この二重化鍵リスト46には、メンバサーバ32の二重化鍵43が含まれないことが好ましい。
 各二重化鍵位置情報は、3つの二重化鍵リストにおける二重化鍵の位置を算出するための断片的情報である。何れの二重化鍵の位置の算出にも、3つの二重化鍵位置情報の全てが使用される。3つの二重化鍵位置情報は、異なるメンバサーバに配布される。二重化鍵位置情報47は、メンバサーバ32に配布される。
 また、鍵管理サーバ31は、3つの個別鍵から、3つの個別鍵リストと3つの個別鍵位置情報を生成する。各個別鍵リストは、1つの個別鍵と複数のトラップ鍵と複数のダミー鍵を含む。3つの個別鍵リストは、異なるクラークサーバに配布される。個別鍵リスト44は、クラークサーバ35に配布される。この個別鍵リスト44には、メンバサーバ35の個別鍵42が含まれないことが好ましい。
 各個別鍵位置情報は、3つの個別鍵リストにおける個別鍵の位置を算出するための断片的情報である。何れの個別鍵の位置の算出にも、3つの個別鍵位置情報の全てが使用される。3つの個別鍵位置情報は、異なるクラークサーバに配布される。個別鍵位置情報45は、クラークサーバ35に配布される。
 図5は、サーバ装置への鍵要素情報の配置例を示す図である。
 クラークサーバ35は、個別鍵位置情報141と個別鍵リスト144を記憶する。クラークサーバ36は、個別鍵位置情報142と個別鍵リスト145を記憶する。クラークサーバ37は、個別鍵位置情報143と個別鍵リスト146を記憶する。
 鍵管理サーバ31は、クラークサーバの台数×個別鍵の個数だけ乱数を生成する。ここでは、鍵管理サーバ31は、3×3=9個の乱数を生成する。第2の実施の形態では説明を簡単にするため各乱数が1桁であるが、各乱数が2桁以上であってもよい。鍵管理サーバ31は、3つの個別鍵に3つずつ乱数を割り当てる。鍵管理サーバ31は、個別鍵毎に、3つの乱数をハッシュ関数に入力して正しい位置を算出する。
 ハッシュ関数は、例えば、偶数乱数の和×奇数乱数の積のように規定される。鍵管理サーバ31は、個別鍵リスト144,145,146の長さ、すなわち、列挙される鍵の個数を決定しておく。ハッシュ関数によって算出される位置が個別鍵リスト144,145,146の長さを超える場合、鍵管理サーバ31は乱数を再生成してもよい。また、異なる個別鍵の位置は異なることが好ましい。異なる個別鍵の位置が衝突した場合、鍵管理サーバ31は乱数を再生成してもよい。
 例えば、鍵管理サーバ31は、メンバサーバ32の個別鍵について乱数「1」「2」「3」を生成し、メンバサーバ33の個別鍵について乱数「1」「1」「2」を生成し、メンバサーバ34の個別鍵について乱数「1」「2」「2」を生成する。メンバサーバ32の個別鍵の位置は2×(1×3)=6、メンバサーバ33の個別鍵の位置は2×(1×1)=2、メンバサーバ34の個別鍵の位置は(2+2)×1=4である。
 鍵管理サーバ31は、各個別鍵に割り当てられた3つの乱数のうちの1番目の乱数を含むように個別鍵位置情報143を生成し、2番目の乱数を含むように個別鍵位置情報141を生成し、3番目の乱数を含むように個別鍵位置情報142を生成する。例えば、個別鍵位置情報143は「1」「1」「1」、個別鍵位置情報141は「2」「1」「2」、個別鍵位置情報142は「3」「2」「2」である。
 また、鍵管理サーバ31は、3つの個別鍵と上記で算出された3つの正しい位置に基づいて、個別鍵リスト144,145,146を生成する。例えば、個別鍵リスト146は、正しい位置である#6にメンバサーバ32用の個別鍵を含む。個別鍵リスト144は、正しい位置である#2にメンバサーバ33用の個別鍵を含む。個別鍵リスト145は、正しい位置である#4にメンバサーバ34用の個別鍵を含む。
 ここで、個別鍵リスト144,145,146はそれぞれ、他の個別鍵リストで個別鍵が配置されている位置にダミー鍵を配置する。また、個別鍵リスト144,145,146はそれぞれ、他の個別鍵リストの何れでも個別鍵が配置されていない位置にトラップ鍵を配置する。例えば、個別鍵リスト146は、#2,#4にダミー鍵を含み、#1,#3,#5にトラップ鍵を含む。個別鍵リスト144は、#4,#6にダミー鍵を含み、#1,#3,#5にトラップ鍵を含む。個別鍵リスト145は、#2,#6にダミー鍵を含み、#1,#3,#5にトラップ鍵を含む。
 鍵管理サーバ31は、個別鍵位置情報141,142,143をランダムにクラークサーバ35,36,37に配布する。また、鍵管理サーバ31は、個別鍵リスト144,145,146をランダムにクラークサーバ35,36,37に配布する。鍵管理サーバ31は、配布先のシャッフルの結果を記録しておかなくてよい。
 メンバサーバ32は、二重化鍵位置情報151と二重化鍵リスト154を記憶する。メンバサーバ33は、二重化鍵位置情報152と二重化鍵リスト155を記憶する。メンバサーバ34は、二重化鍵位置情報153と二重化鍵リスト156を記憶する。
 鍵管理サーバ31は、メンバサーバの台数×二重化鍵の個数だけ乱数を生成する。ここでは、鍵管理サーバ31は、3×3=9個の乱数を生成する。鍵管理サーバ31は、3つの二重化鍵に3つずつ乱数を割り当てる。鍵管理サーバ31は、二重化鍵毎に、3つの乱数をハッシュ関数に入力して正しい位置を算出する。二重化鍵用のハッシュ関数は、個別鍵用のハッシュ関数と同じでもよいし異なってもよい。例えば、二重化鍵用のハッシュ関数は、個別鍵用と同じく、偶数乱数の和×奇数乱数の積である。
 鍵管理サーバ31は、二重化鍵リスト154,155,156の長さを決定しておく。ハッシュ関数によって算出される位置が二重化鍵リスト154,155,156の長さを超える場合、鍵管理サーバ31は乱数を再生成してもよい。また、異なる二重化鍵の位置は異なることが好ましい。異なる二重化鍵の位置が衝突した場合、鍵管理サーバ31は乱数を再生成してもよい。
 例えば、鍵管理サーバ31は、メンバサーバ32の二重化鍵の乱数「1」「2」「2」を生成し、メンバサーバ33の二重化鍵の乱数「3」「2」「1」を生成し、メンバサーバ34の二重化鍵の乱数「1」「1」「2」を生成する。メンバサーバ32の二重化鍵の位置は(2+2)×1=4、メンバサーバ33の二重化鍵の位置は2×(1×3)=6、メンバサーバ34の二重化鍵の位置は2×(1×1)=2である。
 鍵管理サーバ31は、各二重化鍵に割り当てられた3つの乱数のうちの1番目の乱数を含むように二重化鍵位置情報153を生成し、2番目の乱数を含むように二重化鍵位置情報151を生成し、3番目の乱数を含むように二重化鍵位置情報152を生成する。例えば、二重化鍵位置情報153は「1」「3」「1」、二重化鍵位置情報151は「2」「2」「1」、二重化鍵位置情報152は「2」「1」「2」である。
 また、鍵管理サーバ31は、3つの二重化鍵と上記で算出された3つの正しい位置に基づいて、二重化鍵リスト154,155,156を生成する。例えば、二重化鍵リスト156は、正しい位置である#4にメンバサーバ32用の二重化鍵を含む。二重化鍵リスト154は、正しい位置である#6にメンバサーバ33用の二重化鍵を含む。二重化鍵リスト155は、正しい位置が示す#2にメンバサーバ34用の二重化鍵を含む。
 ここで、二重化鍵リスト154,155,156はそれぞれ、他の二重化鍵リストで二重化鍵が配置されている位置にダミー鍵を配置する。また、二重化鍵リスト154,155,156はそれぞれ、他の二重化鍵リストの何れでも二重化鍵が配置されていない位置にトラップ鍵を配置する。例えば、二重化鍵リスト156は、#2,#6にダミー鍵を含み、#1,#3,#5にトラップ鍵を含む。二重化鍵リスト154は、#2,#4にダミー鍵を含み、#1,#3,#5にトラップ鍵を含む。二重化鍵リスト155は、#4,#6にダミー鍵を含み、#1,#3,#5にトラップ鍵を含む。
 鍵管理サーバ31は、二重化鍵位置情報151,152,153をランダムにメンバサーバ32,33,34に配布する。また、鍵管理サーバ31は、二重化鍵リスト154,155,156をランダムにメンバサーバ32,33,34に配布する。鍵管理サーバ31は、配布先のシャッフルの結果を記録しておかなくてよい。
 次に、データカプセルについて説明する。データカプセルは、暗号化されたデータベースと、データベースへの限定されたアクセスを提供するデータベース管理プログラム(DBMS(Database Management System)プログラム)とを含む。
 図6は、データカプセルの構造例を示すブロック図である。
 データカプセル130は、管理情報ファイル131、データファイル132、DBMSプログラム133、消去プログラム134およびコンテナプログラム135を含む。なお、データファイル132は、第1の実施の形態のデータベース13に対応する。DBMSプログラム133は、第1の実施の形態のデータベース管理プログラム14に対応する。
 管理情報ファイル131は、データベースへのアクセスの制御に用いられる管理情報が記載されるファイルである。管理情報ファイル131は、データファイル132のファイルパスを含む。また、管理情報ファイル131は、利用者定義136、権限定義137、データ構造定義138およびプロシジャ定義139を含む。
 利用者定義136は、データベースにアクセスできる利用者を示す。利用者は、利用者名で識別されてもよく、サーバ装置のサーバ名またはロールIDで識別されてもよく、サーバ装置の通信アドレスで識別されてもよい。権限定義137は、各利用者に対して許容するデータ操作の種類を示す。例えば、データベースに対するデータ検索、データ挿入、データ更新およびデータ削除それぞれの可否が規定される。また、登録されたストアドプロシジャのうち各利用者が実行可能なストアドプロシジャが規定される。
 データ構造定義138は、関係データベースのテーブル構造を示す。なお、データカプセル130は関係データベースを使用しているが、ツリー型データベースやネットワーク型データベースなどの非関係データベースを使用してもよい。
 プロシジャ定義139は、ストアドプロシジャを示す。ストアドプロシジャは、単一のSQL文で記述することが難しいような一連のデータ処理を記述したプログラムである。ストアドプロシジャは、SQLを拡張したプロシジャ記述言語を用いて記述される。SQL文に代えてストアドプロシジャ呼び出し命令が受信されると、そのストアドプロシジャが実行される。ストアドプロシジャを適切に利用することで、データベースに保存されたデータそのものがデータカプセル130の外部に出力されることが制限される。
 管理情報ファイル131は暗号化される。暗号化の単位は、管理情報ファイル131全体のように疎粒度でもよいし、利用者定義136や権限定義137のように管理情報ファイル131の各項目を単位とする細粒度でもよい。
 データファイル132は、関係データベースのテーブルのレコードを含むファイルである。データファイル132は暗号化される。暗号化の単位は、データファイル132全体のように疎粒度でもよいし、テーブル単位やレコード単位のように細粒度でもよい。
 DBMSプログラム133は、通常のDBMSプログラムと比べて機能が制限された制限版のDBMSプログラムである。DBMSプログラム133は、管理情報ファイル131を変更する機能をもたない。また、DBMSプログラム133は、データ検索、データ挿入、データ更新およびデータ削除のうち、データ更新やデータ削除などの一部のデータ操作を実行する機能をもたないことがある。
 DBMSプログラム133は、データファイル132に対する制限されたアクセスを利用者に提供する。DBMSプログラム133は、利用者から要求メッセージを受信し、利用者定義136および権限定義137に基づいて、要求メッセージの内容が利用者の権限の範囲内であることを確認する。そして、DBMSプログラム133は、データファイル132に含まれる関係テーブルに対して、要求メッセージに含まれるSQL文または要求メッセージが指定するストアドプロシジャを実行する。
 データカプセル130の生成時、機能が制限されていない通常版のDBMSプログラムを用いて、管理情報ファイル131およびデータファイル132が生成されて暗号化される。このとき、後述する暗号鍵復元フローを実現するための適切な利用者定義136、権限定義137、データ構造定義138およびプロシジャ定義139が設定される。その後、通常版のDBMSプログラムがDBMSプログラム133に入れ替えられる。
 消去プログラム134は、コンテナプログラム135からの指示に応じて、データ漏洩を抑止するため、管理情報ファイル131およびデータファイル132を削除するプログラムである。消去プログラム134は、先に管理情報ファイル131を削除し、その後にデータファイル132を削除する。管理情報ファイル131およびデータファイル132の削除は、復元不能にするため、管理情報ファイル131およびデータファイル132が記憶された記憶領域に特定のビットを上書きすることで行われる。
 コンテナプログラム135は、データカプセル130を単一ファイルにカプセル化するための代表プログラムである。データカプセル130を起動しようとすると、コンテナプログラム135が最初に実行される。コンテナプログラム135は、起動時に、利用者IDとパスワードを用いた利用者認証を行う。コンテナプログラム135は、利用者IDと正解のパスワードの対応を示すアカウント情報を保持してもよい。利用者認証に成功すると、コンテナプログラム135は、DBMSプログラム133を起動する。
 また、コンテナプログラム135は、データカプセル130が不正に使用されていないことを継続的に確認する状態確認を開始する。コンテナプログラム135は、データカプセル130の不正使用の可能性のある事象を検出すると、データカプセル130を無効化することを決定し、消去プログラム134を起動する。
 状態確認として、コンテナプログラム135は、起動後に図示しない監視サーバと定期的に通信する。監視サーバは、データカプセル生成サーバでもよく、暗号鍵を要求したメンバサーバでもよい。通信不能が検出された場合、コンテナプログラム135は、データカプセル130の無効化を決定する。また、コンテナプログラム135は、現在時刻が有効期限を過ぎていないことを確認する。コンテナプログラム135は、データカプセル130の有効期限の情報を保持してもよい。現在時刻が有効期限を過ぎた場合、コンテナプログラム135は、データカプセル130の無効化を決定する。
 また、コンテナプログラム135は、データカプセル130に対する利用者認証の結果を監視して不正侵入を検出する。複数回の利用者認証の結果が特定のパターンに該当する場合、コンテナプログラム135は、不正侵入の可能性があると判断してデータカプセル130の無効化を決定する。不正侵入のパターンは、例えば、時間T1以内に利用者認証の失敗回数が閾値を超え、それに続く時間T2以内に利用者認証が成功したことである。
 鍵検証サーバ38がアラートを出力した場合、コンテナプログラム135は、アラートを利用者認証の失敗とみなしてもよい。また、鍵検証サーバ38がアラートを出力した場合、コンテナプログラム135は、データカプセル130の無効化を決定してもよい。そのために、例えば、コンテナプログラム135は、鍵検証サーバ38からアラートを受信する。状態確認によって、許可されていない者にデータカプセル130が転送された可能性や、許可されていない者がデータカプセル130に不正侵入した可能性が検出される。
 図7は、データベースに含まれるテーブルの例を示す図である。
 データファイル132は、関係データベースのテーブルとして、クラークテーブル161、メンバテーブル162、暗号鍵テーブル163、個別鍵位置テーブル164、個別鍵テーブル165および二重化鍵位置テーブル166を含む。
 クラークテーブル161およびメンバテーブル162は、データカプセル130の生成時に作成され、更新されない。暗号鍵テーブル163、個別鍵位置テーブル164、個別鍵テーブル165および二重化鍵位置テーブル166は、データカプセル130の生成時は空である。個別鍵位置テーブル164および個別鍵テーブル165には、クラークサーバ35,36,37からレコードが挿入される。暗号鍵テーブル163および二重化鍵位置テーブル166には、メンバサーバ32,33,34からレコードが挿入される。
 クラークテーブル161は、個別鍵位置情報および個別鍵リストをもつ全てのクラークサーバの識別子を格納するテーブルである。クラークテーブル161には、クラークサーバ35,36,37の識別子が登録される。メンバテーブル162は、二重化鍵位置情報および二重化鍵リストをもつ全てのメンバサーバの識別子を格納するテーブルである。メンバテーブル162には、メンバサーバ32,33,34の識別子が登録される。なお、メンバサーバ32,33,34およびクラークサーバ35,36,37の識別子は、サーバ名でもよいし、ロールIDでもよいし、サーバアドレスでもよい。
 暗号鍵テーブル163は、復元された暗号鍵を格納するテーブルである。メンバサーバ32,33,34のうち何れか1つのメンバサーバが、要求された暗号鍵を暗号鍵テーブル163に挿入する。他のメンバサーバは、要求された暗号鍵が見つからなかったことを示すFalseレコードを暗号鍵テーブル163に挿入する。ただし、他のメンバサーバは、暗号鍵テーブル163にレコードを挿入しないようにしてもよい。
 個別鍵位置テーブル164は、個別鍵位置情報を格納するテーブルである。クラークサーバ35,36,37は、個別鍵位置テーブル164にレコードを挿入する。個別鍵位置テーブル164の各レコードは、クラーク識別子および個別鍵位置情報を含む。クラーク識別子は、個別鍵位置情報を格納したクラークサーバを示す。個別鍵位置情報は、3つの個別鍵に対応する3つの数値を含む。個別鍵位置テーブル164に基づいて、個別鍵リストの中で3つの個別鍵の位置を示す3つのインデックスが算出される。
 個別鍵テーブル165は、個別鍵を格納するテーブルである。クラークサーバ35,36,37は、個別鍵テーブル165にレコードを挿入する。個別鍵テーブル165の各レコードは、クラーク識別子、メンバ識別子、個別鍵および対象フラグを含む。クラーク識別子は、個別鍵を格納したクラークサーバを示す。メンバ識別子は、個別鍵が何れのメンバサーバ用のものであるかを示す。対象フラグは、個別鍵が、今回暗号鍵を要求したメンバサーバに対応するものであるか否かを示す。対象フラグは、暗号鍵の要求を受け付けた鍵管理サーバ31によって書き込まれる。
 後述するように、鍵管理サーバ31はクラークサーバ35,36,37それぞれに対して、3つのメンバ識別子に対応する3つの個別鍵を要求する。各クラークサーバは、高々1つのメンバ識別子について正しい個別鍵を出力し、他のメンバ識別子については個別鍵が見つからなかったことを示すFalseを出力する。各クラークサーバは、個別鍵が見つからなかったメンバ識別子については、Falseレコードを個別鍵テーブル165に挿入してもよいし、レコードを個別鍵テーブル165に挿入しなくてもよい。
 二重化鍵位置テーブル166は、二重化鍵位置情報を格納するテーブルである。メンバサーバ32,33,34は、二重化鍵位置テーブル166にレコードを挿入する。二重化鍵位置テーブル166の各レコードは、メンバ識別子および二重化鍵位置情報を含む。メンバ識別子は、二重化鍵位置情報を格納したメンバサーバを示す。二重化鍵位置情報は、所望の二重化鍵に関する1つの数値を含む。二重化鍵位置テーブル166に基づいて、二重化鍵リストの中で所望の二重化鍵の位置を示すインデックスが算出される。
 図8は、データベースに含まれるプロシジャ定義の例を示す図である。
 プロシジャ定義139には、以下に説明するようなストアドプロシジャが登録される。ここでは、各ストアドプロシジャの入力、出力および処理概要について説明する。プロシジャ定義139は、実際にはプロシジャ記述言語で記載されたプログラムを含む。プロシジャ定義139は、ストアドプロシジャ171~178を含む。
 ストアドプロシジャ171は、個別鍵位置通信完了を示す。ストアドプロシジャ171は、個別鍵位置テーブル164にレコードが挿入されたことを契機として呼び出される。ストアドプロシジャ171は、クラークテーブル161と個別鍵位置テーブル164とを照合して、全てのクラークサーバから個別鍵位置情報を受信したか判定する。ストアドプロシジャ171は、判定結果を示すTrueまたはFalseを出力する。
 ストアドプロシジャ172は、個別鍵位置算出を示す。ストアドプロシジャ172は、ストアドプロシジャ171がTrueを出力したことを契機として呼び出される。ストアドプロシジャ172は、個別鍵位置テーブル164に含まれる個別鍵位置情報を合成して、各メンバサーバの個別鍵位置を示すインデックスを算出する。例えば、ストアドプロシジャ172は、メンバサーバ毎に偶数の和×奇数の積を算出する。ストアドプロシジャ172は、算出された個別鍵位置を出力する。なお、個別鍵位置を算出するロジックは、ストアドプロシジャ172の中に秘匿されており、外部に公開されない。
 ストアドプロシジャ173は、個別鍵通信完了を示す。ストアドプロシジャ173は、個別鍵テーブル165にレコードが挿入されたことを契機として呼び出される。また、ストアドプロシジャ173は、暗号鍵を要求したメンバサーバを示す対象メンバ識別子を受け付ける。ストアドプロシジャ173は、クラークテーブル161と個別鍵テーブル165とを照合して、全てのクラークサーバから個別鍵の読み出し結果を受信したか判定する。ストアドプロシジャ173は、判定結果を示すTrueまたはFalseを出力する。また、ストアドプロシジャ173は、判定結果がTrueである場合、個別鍵テーブル165の中で対象メンバ識別子に対応する対象フラグをTrueに書き換える。
 ストアドプロシジャ174は、個別鍵出力を示す。ストアドプロシジャ174は、個別鍵テーブル165から、対象フラグがTrueである個別鍵を読み出す。ストアドプロシジャ174は、読み出した個別鍵を出力する。ただし、ストアドプロシジャ174は、個別鍵を出力する代わりに、個別鍵を用いた特定の処理を実行するようにしてもよい。また、データカプセル130は、ストアドプロシジャ174を定義する代わりに、特定の利用者に個別鍵テーブル165に対するデータ検索を許可してもよい。
 ストアドプロシジャ175は、二重化鍵位置通信完了を示す。ストアドプロシジャ175は、二重化鍵位置テーブル166にレコードが挿入されたことを契機として呼び出される。ストアドプロシジャ175は、メンバテーブル162と二重化鍵位置テーブル166とを照合して、全てのメンバサーバから二重化鍵位置情報を受信したか判定する。ストアドプロシジャ175は、判定結果を示すTrueまたはFalseを出力する。
 ストアドプロシジャ176は、二重化鍵位置算出を示す。ストアドプロシジャ176は、ストアドプロシジャ175がTrueを出力したことを契機として呼び出される。ストアドプロシジャ176は、二重化鍵位置テーブル166に含まれる二重化鍵位置情報を合成して、対象メンバの二重化鍵位置を示すインデックスを算出する。例えば、ストアドプロシジャ176は、偶数の和×奇数の積を算出する。ストアドプロシジャ176は、算出された二重化鍵位置を出力する。なお、二重化鍵位置を算出するロジックは、ストアドプロシジャ176の中に秘匿されており、外部に公開されない。
 ストアドプロシジャ177は、暗号鍵通信完了を示す。ストアドプロシジャ177は、暗号鍵テーブル163にレコードが挿入されたことを契機として呼び出される。ストアドプロシジャ177は、メンバテーブル162と暗号鍵テーブル163とを照合して、全てのメンバサーバから暗号鍵の読み出し結果を受信したか判定する。ストアドプロシジャ177は、判定結果を示すTrueまたはFalseを出力する。
 ストアドプロシジャ178は、暗号鍵出力を示す。ストアドプロシジャ178は、暗号鍵テーブル163から暗号鍵を読み出し、読み出した暗号鍵を出力する。ただし、データカプセル130は、ストアドプロシジャ178を定義する代わりに、特定の利用者に暗号鍵テーブル163に対するデータ検索を許可してもよい。
 図9は、データベースに含まれる権限定義の例を示す図である。
 権限定義137は、鍵管理サーバ31、メンバサーバ32,33,34およびクラークサーバ35,36,37に対して、以下のようなアクセス権限を付与する。
 鍵管理サーバ31に対しては、個別鍵出力および暗号鍵出力を除くストアドプロシジャ、すなわち、ストアドプロシジャ171,172,173,175,176,177の実行が許可される。よって、鍵管理サーバ31は、データカプセル130から個別鍵位置および二重化鍵位置を取得することができる。一方、鍵管理サーバ31に対しては、テーブルへのデータ挿入およびテーブルからのデータ検索が禁止される。
 クラークサーバ35,36,37に対しては、テーブルへのデータ挿入が許可される。一方、クラークサーバ35,36,37に対しては、テーブルからのデータ検索およびストアドプロシジャの実行が禁止される。
 メンバサーバ32,33,34に対しては、テーブルへのデータ挿入が許可される。また、メンバサーバ32,33,34に対しては、個別鍵出力を示すストアドプロシジャ174の実行が許可される。メンバサーバ32に対しては更に、暗号鍵出力を示すストアドプロシジャ178の実行が許可される。一方、メンバサーバ32,33,34に対しては、テーブルからのデータ検索および他のストアドプロシジャの実行が禁止される。ただし、ストアドプロシジャ174の実行に代えて、個別鍵テーブル165からのデータ検索が許可されてもよい。また、ストアドプロシジャ178の実行に代えて、暗号鍵テーブル163からのデータ検索が許可されてもよい。
 次に、暗号鍵を復元するフローについて説明する。
 図10は、暗号鍵の復元例を示す図である。
 メンバサーバ32は、鍵管理サーバ31に暗号鍵を要求する。このとき、メンバサーバ32は、データカプセル130を鍵管理サーバ31に送信する。鍵管理サーバ31は、DBMSプログラム133をサーバプロセスとして起動し、メンバサーバ32,33,34およびクラークサーバ35,36,37に対してDBMSプログラム133のアプリケーションインタフェースを開示する。これにより、メンバサーバ32,33,34およびクラークサーバ35,36,37は、同一のデータベースにアクセスできる。
 ただし、鍵管理サーバ31は、データカプセル130の送信および回収を、メンバサーバ32,33,34およびクラークサーバ35,36,37との間で逐次的に実行することも可能である。また、鍵管理サーバ31は、データカプセル130を複製してメンバサーバ32,33,34およびクラークサーバ35,36,37に送信してもよい。その場合、鍵管理サーバ31は、ストアドプロシジャを利用して、回収した複製がもつデータを1つのデータカプセルに集約すればよい。
 鍵管理サーバ31は、クラークサーバ35,36,37に対して並列に個別鍵位置情報を要求する。クラークサーバ35は、個別鍵位置情報141をデータカプセル130に挿入する。クラークサーバ36は、個別鍵位置情報142をデータカプセル130に挿入する。クラークサーバ37は、個別鍵位置情報143をデータカプセル130に挿入する。
 鍵管理サーバ31は、ストアドプロシジャ172を実行する。ストアドプロシジャ172は、個別鍵位置情報141,142,143に含まれる1番目の数値をハッシュ関数に入力して、メンバサーバ32の個別鍵位置を算出する。また、ストアドプロシジャ172は、2番目の数値をハッシュ関数に入力してメンバサーバ33の個別鍵位置を算出し、3番目の数値をハッシュ関数に入力してメンバサーバ34の個別鍵位置を算出する。鍵管理サーバ31は、ストアドプロシジャ172から、メンバサーバ32,33,34の個別鍵位置として「6」「2」「4」を取得する。このとき、個別鍵位置情報141,142,143およびそれを合成するロジックは、鍵管理サーバ31から保護される。
 鍵管理サーバ31は、メンバサーバ32,33,34の個別鍵がそれぞれ何れのクラークサーバにあるか知らない。そこで、鍵管理サーバ31は、個別鍵位置「6」「2」「4」を指定して、クラークサーバ35,36,37に対して並列に個別鍵を要求する。
 クラークサーバ35は、個別鍵リスト144から個別鍵位置「6」「2」「4」それぞれの鍵を抽出する。クラークサーバ35は、抽出された鍵が個別鍵であるか否かを鍵検証サーバ38に問い合わせる。個別鍵位置「6」「2」「4」の鍵は何れもトラップ鍵でないため、鍵検証サーバ38からクラークサーバ35への応答は遅延しない。クラークサーバ35は、個別鍵位置「6」に対しては抽出失敗、個別鍵位置「2」に対しては個別鍵、個別鍵位置「4」に対しては抽出失敗を、データカプセル130に挿入する。
 同様に、クラークサーバ36は、個別鍵リスト145から個別鍵位置「6」「2」「4」それぞれの鍵を抽出する。クラークサーバ36は、個別鍵位置「6」に対しては抽出失敗、個別鍵位置「2」に対しては抽出失敗、個別鍵位置「4」に対しては個別鍵を、データカプセル130に挿入する。クラークサーバ37は、個別鍵リスト146から個別鍵位置「6」「2」「4」それぞれの鍵を抽出する。クラークサーバ37は、個別鍵位置「6」に対しては個別鍵、個別鍵位置「2」に対しては抽出失敗、個別鍵位置「4」に対しては抽出失敗を、データカプセル130に挿入する。
 鍵管理サーバ31は、メンバサーバ32のメンバ識別子を指定して、ストアドプロシジャ173を実行する。ストアドプロシジャ173は、データカプセル130から抽出失敗の情報を除去する。これにより、データカプセル130には、メンバサーバ32,33,34に対応する3つの個別鍵が残る。ストアドプロシジャ173は、3つの個別鍵のうち、メンバサーバ32のメンバ識別子に対応する個別鍵にマークを付与する。このとき、個別鍵は鍵管理サーバ31から保護される。
 図11は、暗号鍵の復元例を示す図(続き)である。
 鍵管理サーバ31は、メンバサーバ32,33,34に対して並列に、二重化鍵位置情報に含まれる3つの数値のうちメンバサーバ32に関する数値を要求する。メンバサーバ32は、二重化鍵位置情報151に含まれる1番目の数値「2」をデータカプセル130に挿入する。メンバサーバ33は、二重化鍵位置情報152に含まれる1番目の数値「2」をデータカプセル130に挿入する。メンバサーバ34は、二重化鍵位置情報153に含まれる1番目の数値「1」をデータカプセル130に挿入する。
 このとき、鍵管理サーバ31は、二重化鍵位置情報の中の何番目の数値を抽出するかをメンバサーバ32,33,34に対して指定してもよい。また、二重化鍵位置情報151,152,153は、3つの個別鍵と3つの数値とを対応付けていてもよい。その場合、鍵管理サーバ31は、マークが付された個別鍵に対応する数値をメンバサーバ32,33,34に対して要求する。メンバサーバ32,33,34は、マークが付された個別鍵をデータカプセル130から読み出し、その個別鍵に対応する数値を抽出する。二重化鍵位置情報の各数値が個別鍵で暗号化されていてもよい。その場合、メンバサーバ32,33,34は、読み出した個別鍵で復号できる数値を探す。
 鍵管理サーバ31は、ストアドプロシジャ176を実行する。ストアドプロシジャ176は、メンバサーバ32,33,34から収集した3つの数値をハッシュ関数に入力して、メンバサーバ32の二重化鍵位置を算出する。鍵管理サーバ31は、ストアドプロシジャ176から、メンバサーバ32の二重化鍵位置として「4」を取得する。このとき、収集された数値およびそれを合成するロジックは、鍵管理サーバ31から保護される。
 鍵管理サーバ31は、メンバサーバ32の二重化鍵が何れのメンバサーバにあるか知らない。そこで、鍵管理サーバ31は、二重化鍵位置「4」を指定して、メンバサーバ32,33,34に対して並列に暗号鍵を要求する。
 メンバサーバ32は、二重化鍵リスト154から二重化鍵位置「4」の鍵を抽出し、マークが付された個別鍵をデータカプセル130から読み出す。メンバサーバ32は、抽出された鍵が二重化鍵であるか否かを鍵検証サーバ38に問い合わせる。二重化鍵位置「4」の鍵はトラップ鍵でないため、鍵検証サーバ38からメンバサーバ32への応答は遅延しない。メンバサーバ32は、抽出失敗をデータカプセル130に挿入する。
 同様に、メンバサーバ33は、二重化鍵リスト155から二重化鍵位置「4」の鍵を抽出し、マークが付された個別鍵をデータカプセル130から読み出す。メンバサーバ33は、抽出失敗をデータカプセル130に挿入する。メンバサーバ34は、二重化鍵リスト156から二重化鍵位置「4」の鍵を抽出し、マークが付された個別鍵をデータカプセル130から読み出す。メンバサーバ33は、抽出された二重化鍵を個別鍵で復号し、復号された暗号鍵をデータカプセル130に挿入する。
 鍵管理サーバ31は、ストアドプロシジャ177を実行する。ストアドプロシジャ177は、データカプセル130から抽出失敗の情報を除去する。これにより、データカプセル130には、メンバサーバ32の暗号鍵が残る。このとき、暗号鍵は鍵管理サーバ31から保護される。鍵管理サーバ31は、データカプセル130をメンバサーバ32に送信する。メンバサーバ32は、データカプセル130から暗号鍵を読み出す。
 次に、サーバ装置の機能および処理手順について説明する。
 図12は、サーバ装置のソフトウェア構造例を示すブロック図である。
 鍵管理サーバ31は、鍵情報配置部121および暗号鍵復元部122を有する。鍵情報配置部121および暗号鍵復元部122は、例えば、CPU101、通信インタフェース107およびプログラムを用いて実装される。
 鍵情報配置部121は、登録される暗号鍵をメンバサーバ32,33,34から受け付ける。鍵情報配置部121は、メンバサーバ毎に個別鍵を生成し、暗号鍵を個別鍵で暗号化して二重化鍵を生成する。鍵情報配置部121は、個別鍵、二重化鍵および乱数に基づいて、個別鍵位置情報、個別鍵リスト、二重化鍵位置情報および二重化鍵リストを生成する。鍵情報配置部121は、個別鍵位置情報および個別鍵リストを、クラークサーバ35,36,37に送信して記憶させる。また、鍵情報配置部121は、二重化鍵位置情報および二重化鍵リストを、メンバサーバ32,33,34に送信して記憶させる。
 暗号鍵復元部122は、1つのメンバサーバからデータカプセル130を受信する。暗号鍵復元部122は、クラークサーバ35,36,37からデータカプセル130に個別鍵位置情報を挿入させ、個別鍵位置を算出する。暗号鍵復元部122は、クラークサーバ35,36,37からデータカプセル130に、個別鍵位置で指定される個別鍵を挿入させる。暗号鍵復元部122は、メンバサーバ32,33,34からデータカプセル130に二重化鍵位置情報を挿入させ、二重化鍵位置を算出する。暗号鍵復元部122は、メンバサーバ32,33,34からデータカプセル130に、二重化鍵位置で指定される二重化鍵を個別鍵で復号した結果を挿入させる。そして、暗号鍵復元部122は、要求元のメンバサーバに対してデータカプセル130を返信する。
 メンバサーバ32は、鍵情報記憶部123、暗号鍵要求部124および鍵情報送信部125を有する。鍵情報記憶部123は、例えば、メンバサーバ32のRAMまたはHDDを用いて実装される。暗号鍵要求部124および鍵情報送信部125は、例えば、メンバサーバ32のCPU、通信インタフェースおよびプログラムを用いて実装される。メンバサーバ33,34が、メンバサーバ32と同様のモジュールを有してもよい。
 鍵情報記憶部123は、鍵管理サーバ31から配布された鍵要素情報を記憶する。鍵要素情報は、二重化鍵位置情報および二重化鍵リストを含む。
 暗号鍵要求部124は、アプリケーションソフトウェアから暗号鍵の要求を受け付ける。アプリケーションソフトウェアは、例えば、メンバサーバ32で実行されるデータベースソフトウェアである。すると、暗号鍵要求部124は、鍵管理サーバ31にデータカプセル130を送信する。データカプセル130は、メンバサーバ32が生成してもよいし、メンバサーバ32がデータカプセル生成サーバに生成を依頼してもよい。暗号鍵要求部124は、鍵管理サーバ31からデータカプセル130を受信し、データカプセル130の中からメンバサーバ32の暗号鍵を読み出す。
 鍵情報送信部125は、鍵管理サーバ31からの要求に応じて、鍵情報記憶部123に記憶された二重化鍵位置情報の中から指定された数値を抽出し、鍵管理サーバ31がもつデータカプセル130に挿入する。また、鍵情報送信部125は、鍵管理サーバ31からの要求に応じて、鍵情報記憶部123に記憶された二重化鍵リストの中から指定された二重化鍵位置の鍵を抽出する。鍵情報送信部125は、抽出した鍵の種別を鍵検証サーバ38に問い合わせる。鍵種別が二重化鍵でない場合、鍵情報送信部125は、鍵管理サーバ31がもつデータカプセル130に抽出失敗の報告を挿入する。鍵種別が二重化鍵である場合、鍵情報送信部125は、鍵管理サーバ31がもつデータカプセル130に、二重化鍵を個別鍵で復号して得られる暗号鍵を挿入する。
 クラークサーバ35は、鍵情報記憶部126および鍵情報送信部127を有する。鍵情報記憶部126は、例えば、クラークサーバ35のRAMまたはHDDを用いて実装される。鍵情報送信部127は、例えば、クラークサーバ35のCPU、通信インタフェースおよびプログラムを用いて実装される。クラークサーバ36,37が、クラークサーバ35と同様のモジュールを有してもよい。
 鍵情報記憶部126は、鍵管理サーバ31から配布された鍵要素情報を記憶する。鍵要素情報は、個別鍵位置情報および個別鍵リストを含む。
 鍵情報送信部127は、鍵管理サーバ31からの要求に応じて、鍵情報記憶部126に記憶された個別鍵位置情報を、鍵管理サーバ31がもつデータカプセル130に挿入する。また、鍵情報送信部127は、鍵管理サーバ31からの要求に応じて、鍵情報記憶部126に記憶された個別鍵リストの中から指定された個別鍵位置の鍵を抽出する。鍵情報送信部127は、抽出した鍵の種別を鍵検証サーバ38に問い合わせる。鍵種別が個別鍵でない場合、鍵情報送信部127は、鍵管理サーバ31がもつデータカプセル130に抽出失敗の報告を挿入する。鍵種別が個別鍵である場合、鍵情報送信部127は、鍵管理サーバ31がもつデータカプセル130に個別鍵を挿入する。
 鍵検証サーバ38は、検証情報記憶部128および鍵検証部129を有する。検証情報記憶部128は、例えば、鍵検証サーバ38のRAMまたはHDDを用いて実装される。鍵検証部129は、例えば、鍵検証サーバ38のCPU、通信インタフェースおよびプログラムを用いて実装される。鍵検証サーバが複数存在してもよい。
 検証情報記憶部128は、個別鍵リストに含まれる鍵が個別鍵、ダミー鍵およびトラップ鍵の何れであるか判定するための判定アルゴリズムを記憶する。また、検証情報記憶部128は、二重化鍵リストに含まれる鍵が二重化鍵、ダミー鍵およびトラップ鍵の何れであるか判定するための判定アルゴリズムを記憶する。
 鍵検証部129は、クラークサーバ35,36,37からの問い合わせに応じて、検証情報記憶部128に記憶された判定アルゴリズムに基づいて、受信した鍵の種別を判定する。鍵検証部129は、鍵種別が個別鍵である場合はその旨を回答し、鍵種別がダミー鍵またはトラップ鍵である場合は個別鍵でない旨を回答する。ただし、鍵種別がトラップ鍵である場合、鍵検証部129は、不正アクセスの可能性を示すアラートを出力し、アラートの出力後、回答を一定時間だけ意図的に遅延させる。
 同様に、鍵検証部129は、メンバサーバ32,33,34からの問い合わせに応じて、検証情報記憶部128に記憶された判定アルゴリズムに基づいて、受信した鍵の種別を判定する。鍵検証部129は、鍵種別が二重化鍵である場合はその旨を回答し、鍵種別がダミー鍵またはトラップ鍵である場合は二重化鍵でない旨を回答する。ただし、鍵種別がトラップ鍵である場合、鍵検証部129は、不正アクセスの可能性を示すアラートを出力し、アラートの出力後、回答を一定時間だけ意図的に遅延させる。
 なお、二重化鍵については、鍵検証部129は、復号前のビット列に対して鍵種別を判定してもよいし、復号後のビット列に対して鍵種別を判定してもよい。また、鍵種別が二重化鍵である場合、鍵検証部129が二重化鍵を暗号鍵に復号してもよい。
 図13は、暗号鍵復元の手順例を示すフローチャートである。
 (S11)鍵管理サーバ31は、対象メンバサーバから暗号鍵の要求を受け付ける。このとき、鍵管理サーバ31は、対象メンバサーバからデータカプセル130を受信する。
 (S12)鍵管理サーバ31は、クラークサーバ35,36,37に個別鍵位置情報を要求する。このとき、鍵管理サーバ31は、データカプセル130のDBMSプログラム133を起動して、そのアプリケーションインタフェースをクラークサーバ35,36,37に開示する。これにより、クラークサーバ35,36,37は、DBMSプログラム133に対して、SQL文やプロシジャ呼び出しを送信することができる。
 (S13)クラークサーバ35,36,37はそれぞれ、SQL文を送信して、自身がもつ個別鍵位置情報をデータカプセル130に挿入する。
 (S14)鍵管理サーバ31は、ストアドプロシジャを実行して、データカプセル130の中でメンバサーバ32,33,34の個別鍵位置を算出する。鍵管理サーバ31は、メンバサーバ32,33,34の個別鍵位置をデータカプセル130から受け取る。
 (S15)鍵管理サーバ31は、メンバサーバ32,33,34それぞれの個別鍵位置を、クラークサーバ35,36,37に通知する。
 (S16)クラークサーバ35,36,37はそれぞれ、自身がもつ個別鍵リストから、指定された個別鍵位置にある鍵を抽出する。
 (S17)クラークサーバ35,36,37はそれぞれ、抽出された鍵の検証を鍵検証サーバ38に依頼する。クラークサーバ35,36,37はそれぞれ、抽出された鍵が個別鍵であるか否かの回答を、鍵検証サーバ38から受信する。
 (S18)クラークサーバ35,36,37はそれぞれ、SQL文を送信して、個別鍵の抽出結果をデータカプセル130に挿入する。
 (S19)鍵管理サーバ31は、ストアドプロシジャを実行して、データカプセル130に含まれる対象メンバサーバの個別鍵にマークを付与する。
 図14は、暗号鍵復元の手順例を示すフローチャート(続き)である。
 (S21)鍵管理サーバ31は、二重化鍵位置情報に含まれる対象メンバサーバの数値を、メンバサーバ32,33,34に要求する。このとき、鍵管理サーバ31は、二重化鍵位置情報に含まれる複数の数値のうち、特定の順位の数値を要求してもよいし、対象メンバサーバのメンバ識別子に対応付けられた数値を要求してもよい。また、鍵管理サーバ31は、マークが付された個別鍵に対応付けられた数値を要求してもよいし、マークが付された個別鍵で復号できる数値を要求してもよい。
 (S22)メンバサーバ32,33,34はそれぞれ、SQL文を送信して、二重化鍵位置情報に含まれる対象メンバサーバの数値をデータカプセル130に挿入する。
 (S23)鍵管理サーバ31は、ストアドプロシジャを実行して、データカプセル130の中で対象メンバサーバの二重化鍵位置を算出する。鍵管理サーバ31は、対象メンバサーバの二重化鍵位置をデータカプセル130から受け取る。
 (S24)鍵管理サーバ31は、対象メンバサーバの二重化鍵位置を、メンバサーバ32,33,34に通知する。
 (S25)メンバサーバ32,33,34はそれぞれ、自身がもつ二重化鍵リストから、指定された二重化鍵位置にある鍵を抽出する。
 (S26)メンバサーバ32,33,34はそれぞれ、データカプセル130のストアドプロシジャを呼び出して、マークが付された個別鍵を読み出す。
 (S27)メンバサーバ32,33,34はそれぞれ、抽出された鍵の検証を鍵検証サーバ38に依頼する。メンバサーバ32,33,34はそれぞれ、抽出された鍵が二重化鍵であるか否かの回答を、鍵検証サーバ38から受信する。
 (S28)メンバサーバ32,33,34はそれぞれ、二重化鍵が抽出された場合、マークが付された個別鍵を用いて二重化鍵を復号する。メンバサーバ32,33,34はそれぞれ、SQL文を送信して、暗号鍵の復号結果をデータカプセル130に挿入する。
 (S29)鍵管理サーバ31は、対象メンバサーバからの暗号鍵の要求に対する応答として、データカプセル130を返信する。
 以上説明したように、第2の実施の形態の情報処理システムは、暗号化データを復号するための暗号鍵を暗号化し、二重化鍵と二重化鍵を復号するための個別鍵とを分けて保存する。これにより、暗号鍵の漏洩リスクが低下する。また、情報処理システムは、個別鍵を複数のクラークサーバにランダムに分配し、二重化鍵を複数のメンバサーバにランダムに分配する。これにより、対象メンバサーバの個別鍵または二重化鍵をもつサーバ装置を探索することが困難になり、攻撃者が所望の暗号鍵を取得できる可能性が低下する。
 また、情報処理システムは、個別鍵および二重化鍵を、トラップ鍵と混ぜて保存する。これにより、正しい位置を知らない攻撃者はトラップを回避することが困難になり、攻撃が検知されやすくなる。情報処理システムは、トラップ鍵が選択された場合、不正アクセスの可能性を示すアラートを出力すると共に、サーバ装置の応答を遅延させる。これにより、攻撃者が短時間で多数のサーバ装置にアクセスすることが困難になり、攻撃を検知して対応策を実行するために十分な時間が確保される。また、トラップ鍵が選択された事実は、データカプセルの無効化の判断に使用され、セキュリティが向上する。また、情報処理システムは、個別鍵および二重化鍵の正しい位置を算出するための断片的位置情報を、複数のサーバ装置に分散配置する。これにより、攻撃者がトラップを回避するために侵入すべきサーバ装置が増加し、攻撃に要する時間が増大する。
 また、情報処理システムは、あるサーバ装置では正しい位置ではないが他のサーバ装置では正しい位置である位置に、トラップ鍵に代えてダミー鍵を配置する。これにより、情報処理システムは、正当な復号処理において複数のサーバ装置に並列にアクセスすることができ、正当な復号処理を効率的に実行できる。
 また、鍵管理サーバ31が各種の鍵要素情報を収集して暗号鍵を復元する処理が、データカプセル130の中に秘匿化されて実行される。データカプセル130は、収集された鍵要素情報または暗号鍵を鍵管理サーバ31が読み出すことを禁止し、収集された鍵要素情報を合成するロジックを鍵管理サーバ31から秘匿化する。これにより、攻撃者が鍵管理サーバ31に侵入した場合や鍵管理サーバ31の管理者が悪意で情報を漏洩しようとしている場合であっても、暗号鍵、鍵要素情報またはロジックが鍵管理サーバ31から漏洩するリスクが低下する。よって、暗号鍵のセキュリティが向上する。
 また、データカプセル130は、不正使用の可能性を検出すると、自動的にデータベースの管理情報およびデータを削除する。これにより、鍵管理サーバ31がデータカプセル130を流出させた場合であっても、情報漏洩のリスクが低下する。
 上記については単に本発明の原理を示すものである。更に、多数の変形や変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応する全ての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
 10 情報処理装置
 11 記憶部
 12 処理部
 13 データベース
 14 データベース管理プログラム
 15 プロシジャ
 16 鍵情報
 21,22,23 ノード
 24,25,26 情報

Claims (7)

  1.  暗号化データの復号に用いられる鍵情報の要求を受け付け、
     入力データの保存および保存された前記入力データを変換するプロシジャの実行を許可し、保存された前記入力データの読み出しを制限するデータベース管理プログラムによって保護されるデータベースを用いて、前記鍵情報の復元に用いられる要素情報および前記要素情報の変換方法を示すロジック情報のうちの少なくとも一方の情報をそれぞれもつ複数のノードから、前記データベースに保存された状態で前記情報を取得し、
     前記データベースに保存された前記情報に対して前記プロシジャを実行することで、前記データベースの中に前記鍵情報を復元し、
     前記要求に応答して、前記鍵情報を含む前記データベースを出力する、
     処理をコンピュータが実行する制御方法。
  2.  前記要求の受け付けは、前記データベース管理プログラムおよび前記データベースを含むパッケージデータを取得する処理を含み、
     前記データベースの出力は、前記パッケージデータを出力する処理を含む、
     請求項1記載の制御方法。
  3.  前記データベース管理プログラムは、前記データベースのアクセス権限の定義および前記プロシジャの定義を示す管理情報の変更を制限する、
     請求項1記載の制御方法。
  4.  前記データベース管理プログラムは、前記入力データの保存を前記複数のノードに許可し、前記プロシジャの実行を前記コンピュータに許可し、復元された前記鍵情報の抽出を前記データベースの出力先に許可する、
     請求項1記載の制御方法。
  5.  前記鍵情報の復元は、保存された前記情報から前記鍵情報の位置を示す位置情報を生成し、前記位置情報に基づいて、前記複数のノードのうちの1つのノードから、前記データベースに保存された状態で前記鍵情報を取得する処理を含む、
     請求項1記載の制御方法。
  6.  入力データの保存および保存された前記入力データを変換するプロシジャの実行を許可し、保存された前記入力データの読み出しを制限するデータベース管理プログラムによって保護されるデータベースを記憶する記憶部と、
     暗号化データの復号に用いられる鍵情報の要求を受け付け、前記鍵情報の復元に用いられる要素情報および前記要素情報の変換方法を示すロジック情報のうちの少なくとも一方の情報をそれぞれもつ複数のノードから、前記データベースに保存された状態で前記情報を取得し、前記データベースに保存された前記情報に対して前記プロシジャを実行することで、前記データベースの中に前記鍵情報を復元し、前記要求に応答して、前記鍵情報を含む前記データベースを出力する処理部と、
     を有する情報処理装置。
  7.  暗号化データの復号に用いられる鍵情報の要求を受け付け、
     入力データの保存および保存された前記入力データを変換するプロシジャの実行を許可し、保存された前記入力データの読み出しを制限するデータベース管理プログラムによって保護されるデータベースを用いて、前記鍵情報の復元に用いられる要素情報および前記要素情報の変換方法を示すロジック情報のうちの少なくとも一方の情報をそれぞれもつ複数のノードから、前記データベースに保存された状態で前記情報を取得し、
     前記データベースに保存された前記情報に対して前記プロシジャを実行することで、前記データベースの中に前記鍵情報を復元し、
     前記要求に応答して、前記鍵情報を含む前記データベースを出力する、
     処理をコンピュータに実行させる制御プログラム。
PCT/JP2021/047868 2021-12-23 2021-12-23 制御方法、情報処理装置および制御プログラム Ceased WO2023119554A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/JP2021/047868 WO2023119554A1 (ja) 2021-12-23 2021-12-23 制御方法、情報処理装置および制御プログラム
JP2023568933A JPWO2023119554A1 (ja) 2021-12-23 2021-12-23

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2021/047868 WO2023119554A1 (ja) 2021-12-23 2021-12-23 制御方法、情報処理装置および制御プログラム

Publications (1)

Publication Number Publication Date
WO2023119554A1 true WO2023119554A1 (ja) 2023-06-29

Family

ID=86901759

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2021/047868 Ceased WO2023119554A1 (ja) 2021-12-23 2021-12-23 制御方法、情報処理装置および制御プログラム

Country Status (2)

Country Link
JP (1) JPWO2023119554A1 (ja)
WO (1) WO2023119554A1 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002111659A (ja) * 2000-10-04 2002-04-12 Nec Software Hokuriku Ltd ファイル暗号化システム、ファイル暗号化用プログラムおよびデータを記録した記録媒体
JP2009211407A (ja) * 2008-03-04 2009-09-17 Nippon Telegr & Teleph Corp <Ntt> 認証情報生成システム、認証情報生成方法、クライアント装置及びプログラム
JP2021136645A (ja) * 2020-02-28 2021-09-13 富士通株式会社 制御方法、制御プログラムおよび情報処理装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4342595B1 (ja) * 2008-05-09 2009-10-14 株式会社東芝 情報処理装置、情報処理システム、および暗号化情報管理方法
JP6644323B1 (ja) * 2019-09-13 2020-02-12 アスピレイション株式会社 電子認証における改ざん防止システム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002111659A (ja) * 2000-10-04 2002-04-12 Nec Software Hokuriku Ltd ファイル暗号化システム、ファイル暗号化用プログラムおよびデータを記録した記録媒体
JP2009211407A (ja) * 2008-03-04 2009-09-17 Nippon Telegr & Teleph Corp <Ntt> 認証情報生成システム、認証情報生成方法、クライアント装置及びプログラム
JP2021136645A (ja) * 2020-02-28 2021-09-13 富士通株式会社 制御方法、制御プログラムおよび情報処理装置

Also Published As

Publication number Publication date
JPWO2023119554A1 (ja) 2023-06-29

Similar Documents

Publication Publication Date Title
US12212666B2 (en) Cryptographic key generation for logically sharded data stores
CA3066678C (en) Processing data queries in a logically sharded data store
JP4398145B2 (ja) 自動データベース暗号化の方法および装置
KR101371608B1 (ko) Dbms 및 데이터베이스에서 암호화 방법
CN102483792B (zh) 用于共享文档的方法和装置
US20190007204A1 (en) Theft and tamper resistant data protection
CN105740725B (zh) 一种文件保护方法与系统
AU2002213436A1 (en) Method and apparatus for automatic database encryption
GB2567146A (en) Method and system for secure storage of digital data
JP2008250369A (ja) 機密データファイルの管理方法、管理システム及びプロキシサーバ
CA3065767C (en) Cryptographic key generation for logically sharded data stores
KR20100106110A (ko) 시큐어 부트 데이터(Secure Boot Data) 통합 관리 시스템, 시큐어 부트 데이터 통합 관리를 위한 메타데이터 생성 및 검증 방법, 이를 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는기록매체.
WO2023119554A1 (ja) 制御方法、情報処理装置および制御プログラム
KR101544750B1 (ko) 더미 인증키를 이용한 클라우드 시스템의 보안 장치 및 방법
WO2023017572A1 (ja) 情報処理プログラム、情報処理方法および情報処理装置
KR100998596B1 (ko) 분산 자료 통합 백업 시스템
JP7549283B2 (ja) 管理方法、情報処理装置および管理プログラム
JP2008009483A (ja) 情報処理システム、情報処理方法、およびプログラム
KR102925884B1 (ko) 데이터 파편화를 통한 데이터의 보안 저장 및 복원 장치와, 이의 동작 방법
JP7656234B2 (ja) 判定方法、情報処理装置および判定プログラム
JP4899196B2 (ja) データ管理システム、端末コンピュータ、管理コンピュータ、データ管理方法及びそのプログラム
JP2006228202A (ja) 機密データの管理方法及び管理システム
US20240403264A1 (en) Techniques for deterministically routing database requests to database servers
GB2434887A (en) Access control by encrypting stored data with a key based on a &#34;fingerprint&#34; of the device storing the data

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

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2023568933

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 21968989

Country of ref document: EP

Kind code of ref document: A1