IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特許7656234判定方法、情報処理装置および判定プログラム
<>
  • 特許-判定方法、情報処理装置および判定プログラム 図1
  • 特許-判定方法、情報処理装置および判定プログラム 図2
  • 特許-判定方法、情報処理装置および判定プログラム 図3
  • 特許-判定方法、情報処理装置および判定プログラム 図4
  • 特許-判定方法、情報処理装置および判定プログラム 図5
  • 特許-判定方法、情報処理装置および判定プログラム 図6
  • 特許-判定方法、情報処理装置および判定プログラム 図7
  • 特許-判定方法、情報処理装置および判定プログラム 図8
  • 特許-判定方法、情報処理装置および判定プログラム 図9
  • 特許-判定方法、情報処理装置および判定プログラム 図10
  • 特許-判定方法、情報処理装置および判定プログラム 図11
  • 特許-判定方法、情報処理装置および判定プログラム 図12
  • 特許-判定方法、情報処理装置および判定プログラム 図13
  • 特許-判定方法、情報処理装置および判定プログラム 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-03-26
(45)【発行日】2025-04-03
(54)【発明の名称】判定方法、情報処理装置および判定プログラム
(51)【国際特許分類】
   G06F 16/33 20250101AFI20250327BHJP
【FI】
G06F16/33
【請求項の数】 9
(21)【出願番号】P 2023572304
(86)(22)【出願日】2022-01-07
(86)【国際出願番号】 JP2022000314
(87)【国際公開番号】W WO2023132046
(87)【国際公開日】2023-07-13
【審査請求日】2024-04-24
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】西垣 雅樹
【審査官】松尾 真人
(56)【参考文献】
【文献】特開平08-077187(JP,A)
【文献】中国特許出願公開第112528101(CN,A)
【文献】国際公開第2007/105273(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
G06F 12/14
G06F 21/10
G06F 21/60-21/88
(57)【特許請求の範囲】
【請求項1】
第1のデータリストに含まれる複数の第1の文字列データに含まれる各第1の文字について、第2のデータリストに含まれる複数の第2の文字列データに含まれる複数の第2の文字の中に、前記各第1の文字と同一の第2の文字が含まれるか判定し、
前記同一の第2の文字が含まれる場合、前記複数の第2の文字列データの順序および各第2の文字列データ内での第2の文字の順序に応じて前記複数の第2の文字に対応付けられる連続した異なる序数のうち、前記同一の第2の文字に対応付けられる序数を特定し、
前記複数の第1の文字列データの順序と、各第1の文字列データ内での第1の文字の順序と、前記特定された序数とに基づいて、前記複数の第1の文字列データと前記複数の第2の文字列データとの間に同一の文字列データが存在するか判定する、
処理をコンピュータが実行する判定方法。
【請求項2】
前記同一の文字列データの判定は、1つの第1の文字列データに含まれる全ての第1の文字に対して連続する序数が特定された場合、前記1つの第1の文字列データと同一の第2の文字列データが存在すると判定する処理を含む、
請求項1記載の判定方法。
【請求項3】
前記同一の文字列データの判定は、少なくとも1つの第1の文字について、前記特定された序数が対応付けられる1つの第2の文字を含む第2の文字列データ内での前記1つの第2の文字の位置を示す位置情報を特定し、前記特定された位置情報を更に用いて、前記同一の文字列データが存在するか判定する処理を含む、
請求項1記載の判定方法。
【請求項4】
前記同一の第2の文字の判定は、前記複数の第1の文字列データに含まれる複数の第1の文字を並べ替え、並べ替え後の順序で前記各第1の文字について、前記複数の第2の文字列データの中から前記同一の第2の文字を検索する処理を含む、
請求項1記載の判定方法。
【請求項5】
前記序数の特定は、前記複数の第2の文字列データの読み出しを制限し、前記各第1の文字を受け付けて前記同一の第2の文字に対応付けられる序数を出力するプロシジャを実行するデータベース管理プログラムを実行する処理を含む、
請求項1記載の判定方法。
【請求項6】
前記同一の文字列データの判定は、前記複数の第1の文字列データの読み出しを制限し、前記特定された序数を取得して前記同一の文字列データの有無を出力するプロシジャを実行するデータベース管理プログラムを実行する処理を含む、
請求項1記載の判定方法。
【請求項7】
前記複数の第1の文字列データは複数の第1のハッシュ値であり、前記複数の第2の文字列データは複数の第2のハッシュ値であり、
前記各第1の文字は前記複数の第1のハッシュ値それぞれを分割することで得られる第1の単位データであり、前記複数の第2の文字は前記複数の第2のハッシュ値それぞれを分割することで得られる第2の単位データである、
請求項1記載の判定方法。
【請求項8】
複数の第1の文字列データを含む第1のデータリストを記憶する記憶部と、
前記複数の第1の文字列データに含まれる各第1の文字について、第2のデータリストに含まれる複数の第2の文字列データに含まれる複数の第2の文字の中に、前記各第1の文字と同一の第2の文字が含まれるか判定し、前記同一の第2の文字が含まれる場合、前記複数の第2の文字列データの順序および各第2の文字列データ内での第2の文字の順序に応じて前記複数の第2の文字に対応付けられる連続した異なる序数のうち、前記同一の第2の文字に対応付けられる序数を特定し、前記複数の第1の文字列データの順序と、各第1の文字列データ内での第1の文字の順序と、前記特定された序数とに基づいて、前記複数の第1の文字列データと前記複数の第2の文字列データとの間に同一の文字列データが存在するか判定する処理部と、
を有する情報処理装置。
【請求項9】
第1のデータリストに含まれる複数の第1の文字列データに含まれる各第1の文字について、第2のデータリストに含まれる複数の第2の文字列データに含まれる複数の第2の文字の中に、前記各第1の文字と同一の第2の文字が含まれるか判定し、
前記同一の第2の文字が含まれる場合、前記複数の第2の文字列データの順序および各第2の文字列データ内での第2の文字の順序に応じて前記複数の第2の文字に対応付けられる連続した異なる序数のうち、前記同一の第2の文字に対応付けられる序数を特定し、
前記複数の第1の文字列データの順序と、各第1の文字列データ内での第1の文字の順序と、前記特定された序数とに基づいて、前記複数の第1の文字列データと前記複数の第2の文字列データとの間に同一の文字列データが存在するか判定する、
処理をコンピュータに実行させる判定プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は判定方法、情報処理装置および判定プログラムに関する。
【背景技術】
【0002】
情報処理システムは、秘密情報に関する2つの文字列データを比較して、それら2つの文字列データが同一であるか否か判定することがある。秘密情報は、個人の氏名や属性などの個人情報であることがある。文字列データは、不可逆性のハッシュ関数を用いて秘密情報から算出されるハッシュ値であることがある。例えば、情報処理システムは、受け付けた文字列データと登録された文字列データとが同一であることを確認して、通信相手の真正性を検証することがある。また、例えば、情報処理システムは、異なる通信相手から受け付けた文字列データが同一である場合に警告を出力することがある。
【0003】
なお、個人情報のハッシュ値をブロックチェーンに登録し、その後、ユーザから開示された個人情報の正当性をブロックチェーンを参照して検証し、検証結果をブロックチェーンに登録する個人情報管理システムが提案されている。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2019-219780号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
情報処理システムは、秘密情報に関する複数の文字列データをそれぞれ含む2つのデータリストの中に、同一の文字列データが存在するか否か判定する場合が考えられる。しかし、文字列データは秘密情報に関するものであるため、異なるデータリストに含まれる2つの文字列データの全体を単純に比較する方法では、判定プロセスを通じて秘密情報が漏洩するリスクがある。文字列データがハッシュ値のように秘密情報から変換されたデータであったとしても、レインボーテーブル攻撃などのセキュリティ攻撃によって、文字列データから元の秘密情報が推定されるリスクがある。そこで、1つの側面では、本発明は、文字列データの一致性を判定する際のデータ開示を抑制することを目的とする。
【課題を解決するための手段】
【0006】
1つの態様では、以下の処理をコンピュータが実行する判定方法が提供される。第1のデータリストに含まれる複数の第1の文字列データに含まれる各第1の文字について、第2のデータリストに含まれる複数の第2の文字列データに含まれる複数の第2の文字の中に、各第1の文字と同一の第2の文字が含まれるか判定する。同一の第2の文字が含まれる場合、複数の第2の文字列データの順序および各第2の文字列データ内での第2の文字の順序に応じて複数の第2の文字に対応付けられる連続した異なる序数のうち、同一の第2の文字に対応付けられる序数を特定する。複数の第1の文字列データの順序と、各第1の文字列データ内での第1の文字の順序と、特定された序数とに基づいて、複数の第1の文字列データと複数の第2の文字列データとの間に同一の文字列データが存在するか判定する。また、1つの態様では、記憶部と処理部とを有する情報処理装置が提供される。また、1つの態様では、コンピュータに実行させる制御プログラムが提供される。
【発明の効果】
【0007】
1つの側面では、文字列データの一致性を判定する際のデータ開示が抑制される。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
【図面の簡単な説明】
【0008】
図1】第1の実施の形態の情報処理装置を説明するための図である。
図2】第2の実施の形態の情報処理システムの例を示す図である。
図3】サーバ装置のハードウェア例を示すブロック図である。
図4】データカプセルの構造例を示すブロック図である。
図5】ハッシュ値の分割の第1の例を示す図である。
図6】序数を用いた同一性判定の第1の例を示す図である。
図7】ハッシュ値の分割の第2の例を示す図である。
図8】序数を用いた同一性判定の第2の例を示す図である。
図9】プロシジャ定義の例を示す図である。
図10】監視設定テーブルの例を示す図である。
図11】サーバ装置の機能例を示すブロック図である。
図12】同一性判定の手順例を示すフローチャートである。
図13】通信不能検出の手順例を示すフローチャートである。
図14】不正ログイン検出の手順例を示すフローチャートである。
【発明を実施するための形態】
【0009】
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
【0010】
図1は、第1の実施の形態の情報処理装置を説明するための図である。第1の実施の形態の情報処理装置10は、2つのデータリストを比較して同一の文字列データが存在するか否か判定する。情報処理装置10は、クライアント装置でもよいしサーバ装置でもよい。情報処理装置10が、コンピュータまたは判定装置と呼ばれてもよい。
【0011】
情報処理装置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でもよい)に記憶されたプログラムを実行する。プロセッサの集合が、マルチプロセッサまたは単に「プロセッサ」と呼ばれてもよい。
【0012】
記憶部11は、データリスト13を記憶する。データリスト13は、文字列データ13-1,13-2などの複数の文字列データを含む。各文字列データは、特定の順序で並べられた2以上の文字を含む。文字列データ13-1は、文字13a,13bを順に含む。文字13aは「4」、文字13bは「5」である。文字列データ13-2は、文字13c,13dを順に含む。文字13cは「5」、文字13dは「6」である。
【0013】
文字列データ13-1,13-2は、不可逆性のハッシュ関数を用いて秘密情報から算出されるハッシュ値でもよい。秘密情報は個人情報でもよい。個人情報は、氏名を含んでもよく、生年月日などの個人の属性を含んでもよく、銀行口座番号や運転免許番号などの個人が所有する資産または資格の識別番号を含んでもよい。ハッシュ値は文字列で表現され得る。文字列データ13-1,13-2がハッシュ値である場合、文字13a,13b,13c,13dは、一定の長さ(例えば、1バイト)の単位データを表す。
【0014】
記憶部11は、データリスト13と比較されるデータリスト14を記憶してもよい。データリスト14は、文字列データ14-1,14-2などの複数の文字列データを含む。文字列データ14-1は、文字14a,14bを順に含む。文字14aは「6」、文字14bは「9」である。文字列データ14-2は、文字14c,14dを順に含む。文字14cは「5」、文字14dは「6」である。
【0015】
ただし、データリスト14は、情報処理装置10と異なる情報処理装置に記憶されてもよい。データリスト14が記憶部11に記憶される場合、データリスト14は、文字列データ14-1,14-2の読み出しが制限されるように保護されることが好ましい。例えば、暗号化されたデータベースにデータリスト14が格納され、文字列データ14-1,14-2の読み出しを制限するデータベース管理プログラムによってデータリスト14が保護される。データリスト14が他の情報処理装置に記憶される場合、情報処理装置10から文字列データ14-1,14-2へのアクセスが制限されることが好ましい。
【0016】
処理部12は、データリスト13に含まれる文字13a,13b,13c,13dそれぞれについて、データリスト14の中に同一文字が含まれるか判定する。処理部12は、文字13a,13b,13c,13dそれぞれをデータベース管理プログラムに渡し、同一文字の有無を示す応答を取得してもよい。これにより、処理部12は、文字列データ14-1,14-2自体を読み出さなくてよい。また、処理部12は、文字13a,13b,13c,13dを、元の順序と異なる順序に並び替えて、同一文字の有無を判定してもよい。これにより、一連の問い合わせから文字列データが推定されるリスクが低下する。図1の例では、文字13aと同一の文字はデータリスト14に含まれておらず、文字13b,13c,13dと同じ文字がデータリスト14に含まれている。
【0017】
処理部12は、データリスト14に同一の文字が1つ以上存在するデータリスト13の文字について、当該1以上の同一の文字に対応付けられる1以上の序数を特定する。ここで、データリスト14に含まれる文字14a,14b,14c,14dには、文字列データ14-1,14-2を通して連続する異なる序数が対応付けられる。序数は、文字の順序を示す自然数である。序数は、データリスト14における複数の文字列データの順序および各文字列データ内での2以上の文字の順序に従って決定される。
【0018】
文字14aに対しては序数15a(#1)、文字14bに対しては序数15b(#2)、文字14cに対しては序数15c(#3)、文字14dに対しては序数15d(#4)が対応付けられる。データリスト13の文字13bは文字14cと同一であるため、処理部12は、文字13bについて序数15cを特定する。データリスト13の文字13cは文字14cと同一であるため、処理部12は、文字13cについて序数15cを特定する。データリスト13の文字13dは文字14a,14dと同一であるため、処理部12は、文字13dについて序数15a,15dを特定する。
【0019】
このとき、処理部12は、文字13b,13c,13dそれぞれをデータベース管理プログラムに渡し、同一文字の序数を示す応答を取得してもよい。これにより、処理部12は、文字列データ14-1,14-2自体を読み出さなくてよい。また、処理部12は、文字13b,13c,13dを、元の順序と異なる順序に並び替えて、同一文字の序数を特定してもよい。これにより、一連の問い合わせから文字列データが推定されるリスクが低下する。なお、同一文字の有無の判定と序数の特定とは、一体的に実行されてもよい。例えば、処理部12は、文字13a,13b,13c,13dそれぞれをデータベース管理プログラムに渡し、同一文字の有無および同一文字の序数を示す応答を取得する。
【0020】
処理部12は、データリスト13における複数の文字列データの順序および各文字列データ内での2以上の文字の順序と、特定された上記の序数とに基づいて、データリスト13,14の間に同一の文字列データが存在するか判定する。例えば、処理部12は、データリスト13の文字列データ毎に先頭文字から末尾文字に向かって序数を走査し、全ての文字について連続する序数が特定された文字列データを検出する。検出された文字列データと同じ文字列データが、データリスト14に存在し得る。
【0021】
図1の例では、文字列データ13-1の文字13aについては序数が特定されていない。このため、文字列データ13-1と同一の文字列データはデータリスト14に存在しない。一方、文字列データ13-1の文字13c,13dについては連続する序数#3,#4を示す序数15c,15dが特定されている。このため、文字列データ13-2と同一の文字列データがデータリスト14に存在し得る。実際、データリスト13の文字列データ13-2とデータリスト14の文字列データ14-2とは同一である。
【0022】
なお、処理部12は、特定された何れか1つの序数が示すデータリスト14の文字について、その文字を含む文字列データにおける当該文字の位置を示す位置情報を更に取得してもよい。位置情報は、同じ文字列データの中で当該文字より前方に存在する文字の個数および後方に存在する文字の個数を示すものであってもよい。何れか1つの序数は、上記の検出された文字列データに含まれる何れか1つの文字の序数であってもよい。
【0023】
処理部12は、位置情報がデータリスト13と整合している場合、上記の検出された文字列データと同じ文字列データがデータリスト14に存在すると判定してもよい。一方、処理部12は、位置情報がデータリスト13と整合していない場合、上記の検出された文字列データと同じ文字列データがデータリスト14に存在しないと判定してもよい。例えば、処理部12は、序数15cが対応付けられた文字14cについて、前文字が0個かつ後文字が1個であることを示す位置情報を取得する。序数15cが特定されたデータリスト13の文字13cは、前文字が0個かつ後文字が1個という条件を満たす。そこで、処理部12は、文字列データ13-2と同一の文字列データが存在すると判定する。
【0024】
以上説明したように、第1の実施の形態の情報処理装置10は、データリスト13の各文字について、データリスト14の中に同一文字が含まれるか判定し、同一文字が含まれる場合は当該同一文字に対応付けられる序数を特定する。情報処理装置10は、データリスト13での元の文字の並びに対応する序数の並びに基づいて、データリスト13,14が同一の文字列データを含むか判定する。これにより、データリスト13の所有者とデータリスト14の所有者との間の相互のデータ開示を抑制しつつ同一性判定が行われる。その結果、個人情報などの秘密情報が漏洩するリスクが低下する。
【0025】
なお、前述の位置情報を更に用いることで、同一性判定の精度が向上する。また、データリスト13に含まれる文字を並べ替えて同一文字の有無および序数を問い合わせることで、元の文字列データが推定されるリスクが低下する。また、機能が制限されたデータベース管理プログラムによって保護されるデータベースにデータリスト13を格納することで、データリスト13の読み出しを制限しつつ同一性判定が行われる。また、機能が制限されたデータベース管理プログラムによって保護されるデータベースにデータリスト14を格納することで、データリスト14の読み出しを制限しつつ同一性判定が行われる。また、文字列データをハッシュ値とすることで、秘密情報の漏洩リスクが低下する。
【0026】
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態の情報処理システムの例を示す図である。
【0027】
第2の実施の形態の情報処理システムは、ネットワーク30に接続されたデータ処理サーバ31および利用者サーバ32,33を有する。ネットワーク30は、LAN(Local Area Network)を含んでもよく、インターネットを含んでもよい。利用者サーバ32は、第1の実施の形態の情報処理装置10に対応する。
【0028】
データ処理サーバ31は、利用者サーバ32,33からの要求に応じて、後述するデータカプセルを生成するサーバコンピュータである。データ処理サーバ31は、データセンタに配置されてもよく、いわゆるクラウドサーバでもよい。
【0029】
データ処理サーバ31は、ある利用者サーバからデータカプセル作成要求を受信する。データカプセル作成要求では、データカプセルに格納されるデータと、データにアクセスできる利用者やアクセス方法の制限などを示す管理情報とが指定される。データ処理サーバ31は、データカプセル作成要求に従って、データを保護された状態で受け渡すためのデータカプセルを生成して当該利用者サーバに返信する。データカプセルは、暗号化されたデータベースと、データベースへの限定されたアクセスを提供するデータベース管理プログラム(DBMS(Database Management System)プログラム)とを含む。
【0030】
利用者サーバ32,33は、データ処理サーバ31が提供するサービスを利用する利用者のサーバコンピュータである。利用者は参加者またはメンバと呼ばれてもよく、個人でも企業でもよい。利用者サーバ32,33は、データセンタに配置されてもよく、いわゆるクラウドサーバでもよい。また、利用者サーバ32,33として、サーバコンピュータに代えてクライアントコンピュータが使用されてもよい。
【0031】
利用者サーバ32,33はそれぞれ、データカプセル作成要求をデータ処理サーバ31に送信し、生成されたデータカプセルをデータ処理サーバ31から受信する。利用者サーバ32,33はそれぞれ、業務上の要求に従って、データカプセルを他の利用者サーバに送信することがある。例えば、利用者サーバ33が、データ処理サーバ31から受信したデータカプセルを利用者サーバ32に転送する。
【0032】
利用者サーバ32,33はそれぞれ、取得したデータカプセルに含まれるDBMSプログラムを起動することで、そのデータカプセルに格納された初期データに関するデータ処理を実行する。ただし、DBMSプログラムは、データカプセルから初期データ自体が読み出されないようにデータアクセスを制限する。その代わりに、DBMSプログラムは、初期データを一定の処理手順で加工したデータ処理結果を出力する。
【0033】
第2の実施の形態では、データカプセルは、利用者サーバ32,33が同一の個人情報を保持しているか否か判定するために用いられる。個人情報は、ある業務に従事する担当者の氏名を含む。例えば、利用者サーバ32が、情報処理システムのプラットフォームを管理するシステム管理者の氏名を保持する。一方、利用者サーバ33が、情報処理システムを利用するアプリケーションのデータを管理するデータ管理者の氏名を保持する。
【0034】
管理者によるデータの不正使用を抑止するため、システム管理者とデータ管理者とは同一人物でないことが好ましい。そこで、利用者サーバ32,33は、システム管理者リストとデータ管理者リストとを照合して、同一の氏名が含まれていないことを確認する。ただし、システム管理者の氏名およびデータ管理者の氏名自体は、秘密情報である。そこで、利用者サーバ32,33は、データカプセルを使用して、システム管理者リストおよびデータ管理者リストを秘匿化しつつ、同一性判定を実行する。
【0035】
個人情報の漏洩リスクを下げるため、データカプセルには、個人情報そのものではなく個人情報のハッシュ値が格納される。利用者サーバ32,33は、データ処理サーバ31を介して、ハッシュ値を算出するためのパラメータを合意する。パラメータには、ハッシュ関数の種類、個人情報に付加するペッパーと呼ばれる文字、および、ハッシュ演算の反復回数を示すストレッチング回数が含まれる。
【0036】
利用者サーバ32,33は、合意されたパラメータに従って個人情報をハッシュ値に変換し、データ処理サーバ31にハッシュ値を送信する。ただし、データ処理サーバ31が個人情報をハッシュ値に変換してもよい。データ処理サーバ31は、ハッシュ値をデータベースに格納し、ハッシュ値の同一性を判定するためのストアドプロシジャをDBMSプログラムに登録することで、データカプセルを生成する。
【0037】
図3は、サーバ装置のハードウェア例を示すブロック図である。
利用者サーバ32は、バスに接続されたCPU101、RAM102、HDD103、GPU104、入力インタフェース105、媒体リーダ106および通信インタフェース107を有する。データ処理サーバ31や利用者サーバ33が、利用者サーバ32と同様のハードウェアを有してもよい。CPU101は、第1の実施の形態の処理部12に対応する。RAM102またはHDD103は、第1の実施の形態の記憶部11に対応する。
【0038】
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。利用者サーバ32は、複数のプロセッサを有してもよい。
【0039】
RAM102は、CPU101で実行されるプログラムおよびCPU101で演算に使用されるデータを一時的に記憶する揮発性半導体メモリである。利用者サーバ32は、RAM以外の種類の揮発性メモリを有してもよい。
【0040】
HDD103は、OS(Operating System)、ミドルウェア、アプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性ストレージである。利用者サーバ32は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の不揮発性ストレージを有してもよい。
【0041】
GPU104は、CPU101と連携して画像処理を行い、利用者サーバ32に接続された表示装置111に画像を出力するプロセッサである。表示装置111は、例えば、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ、有機EL(Electro Luminescence)ディスプレイまたはプロジェクタである。なお、利用者サーバ32に、プリンタなどの他の種類の出力デバイスが接続されてもよい。
【0042】
入力インタフェース105は、利用者サーバ32に接続された入力デバイス112から入力信号を受け付ける。入力デバイス112は、例えば、マウス、タッチパネルまたはキーボードである。利用者サーバ32に複数の入力デバイスが接続されてもよい。
【0043】
媒体リーダ106は、記録媒体113に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体113は、例えば、磁気ディスク、光ディスクまたは半導体メモリである。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)およびHDDが含まれる。光ディスクには、CD(Compact Disc)およびDVD(Digital Versatile Disc)が含まれる。媒体リーダ106は、記録媒体113から読み取られたプログラムおよびデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、CPU101によって実行されることがある。
【0044】
記録媒体113は、可搬型記録媒体であってもよい。記録媒体113は、プログラムおよびデータの配布に用いられることがある。また、記録媒体113およびHDD103が、コンピュータ読み取り可能な記録媒体と呼ばれてもよい。
【0045】
通信インタフェース107は、ネットワーク30を介してデータ処理サーバ31や利用者サーバ33と通信する。通信インタフェース107は、スイッチやルータなどの有線通信装置に接続される有線通信インタフェースでもよいし、基地局やアクセスポイントなどの無線通信装置に接続される無線通信インタフェースでもよい。
【0046】
次に、データカプセルについて説明する。
図4は、データカプセルの構造例を示すブロック図である。
データカプセル130は、管理情報ファイル131、データファイル132、DBMSプログラム133、消去プログラム134およびコンテナプログラム135を含む。
【0047】
管理情報ファイル131は、データベースへのアクセスの制御に用いられる管理情報が記載されるファイルである。管理情報ファイル131は、データファイル132のファイルパスを含む。また、管理情報ファイル131は、利用者定義136、権限定義137、データ構造定義138およびプロシジャ定義139を含む。
【0048】
利用者定義136は、データベースにアクセスできる利用者を示す。利用者は、利用者IDで識別されてもよく、サーバ装置のサーバ名で識別されてもよく、サーバ装置の通信アドレスで識別されてもよい。権限定義137は、各利用者に対して許容するデータ操作の種類を示す。例えば、SQL文によるデータ検索、データ挿入、データ更新およびデータ削除それぞれの可否が規定される。第2の実施の形態では、データ検索、データ更新およびデータ削除が禁止されてもよい。また、登録されたストアドプロシジャのうち各利用者が実行可能なストアドプロシジャが規定される。
【0049】
データ構造定義138は、関係データベースのテーブル構造を示す。なお、データカプセル130は関係データベースを使用しているが、ツリー型データベースやネットワーク型データベースなどの非関係データベースを使用してもよい。プロシジャ定義139は、ストアドプロシジャを示す。ストアドプロシジャは、単一のSQL文で記述することが難しいような一連のデータ処理を記述したプログラムである。ストアドプロシジャは、SQLを拡張したプロシジャ記述言語を用いて記述される。SQL文に代えてストアドプロシジャ呼び出し命令が受信されると、そのストアドプロシジャが実行される。
【0050】
管理情報ファイル131は暗号化される。暗号化の単位は、管理情報ファイル131全体のように疎粒度でもよいし、利用者定義136や権限定義137のように管理情報ファイル131の各項目を単位とする細粒度でもよい。
【0051】
データファイル132は、関係データベースのテーブルのレコードを含むファイルである。データファイル132は暗号化される。暗号化の単位は、データファイル132全体のように疎粒度でもよいし、テーブル単位やレコード単位のように細粒度でもよい。
【0052】
DBMSプログラム133は、通常のDBMSプログラムと比べて機能が制限された制限版のDBMSプログラムである。DBMSプログラム133は、管理情報ファイル131を変更する機能をもたない。また、DBMSプログラム133は、データ検索、データ挿入、データ更新およびデータ削除のうち、データ更新やデータ削除などの一部のデータ操作を実行する機能をもたないことがある。
【0053】
DBMSプログラム133は、データファイル132に対する制限されたアクセスを利用者に提供する。DBMSプログラム133は、利用者から要求メッセージを受信し、利用者定義136および権限定義137に基づいて、要求メッセージの内容が利用者の権限の範囲内であることを確認する。そして、DBMSプログラム133は、データファイル132に含まれる関係テーブルに対して、要求メッセージに含まれるSQL文または要求メッセージが指定するストアドプロシジャを実行する。
【0054】
データカプセル130の生成時、機能が制限されていない通常版のDBMSプログラムを用いて、管理情報ファイル131およびデータファイル132が生成されて暗号化される。このとき、後述する同一性判定を実現するための適切な利用者定義136、権限定義137、データ構造定義138およびプロシジャ定義139が設定される。その後、通常版のDBMSプログラムがDBMSプログラム133に入れ替えられる。
【0055】
消去プログラム134は、データ漏洩を抑止するため、コンテナプログラム135からの指示に応じて、管理情報ファイル131およびデータファイル132を削除するプログラムである。消去プログラム134は、先に管理情報ファイル131を削除し、その後にデータファイル132を削除する。管理情報ファイル131およびデータファイル132の削除は、復元不能にするため、管理情報ファイル131およびデータファイル132が記憶された記憶領域に特定のビットを上書きすることで行われる。
【0056】
コンテナプログラム135は、データカプセル130を単一ファイルにカプセル化するための代表プログラムである。データカプセル130を起動しようとすると、コンテナプログラム135が最初に実行される。コンテナプログラム135は、起動時に、利用者IDとパスワードを用いた利用者認証を行う。コンテナプログラム135は、利用者IDと正解のパスワードの対応を示すアカウント情報を保持してもよい。利用者認証に成功すると、コンテナプログラム135は、DBMSプログラム133を起動する。
【0057】
また、コンテナプログラム135は、データカプセル130が不正に使用されていないことを継続的に確認するカプセル監視を開始する。コンテナプログラム135は、データカプセル130の不正使用の可能性のある事象を検出すると、データカプセル130を無効化することを決定し、消去プログラム134を起動する。
【0058】
カプセル監視として、コンテナプログラム135は、起動後にデータ処理サーバ31と定期的に通信する。ただし、通信相手は、データ処理サーバ31以外の特定のサーバ装置でもよい。通信不能が検出された場合、コンテナプログラム135は、データカプセル130の無効化を決定する。また、コンテナプログラム135は、現在時刻が有効期限を過ぎていないことを確認する。現在時刻が有効期限を過ぎた場合、コンテナプログラム135は、データカプセル130の無効化を決定する。
【0059】
また、コンテナプログラム135は、データカプセル130に対する利用者認証の結果を監視して不正侵入を検出する。複数回の利用者認証の結果が特定のパターンに該当する場合、コンテナプログラム135は、不正侵入の可能性があると判断してデータカプセル130の無効化を決定する。不正侵入のパターンは、例えば、時間T1以内に利用者認証の失敗回数が閾値を超え、それに続く時間T2以内に利用者認証が成功したことである。カプセル監視によって、許可されていない者にデータカプセル130が転送された可能性や、許可されていない者がデータカプセル130に不正侵入した可能性が検出される。
【0060】
次に、データカプセルを利用した個人情報の同一性判定について説明する。
図5は、ハッシュ値の分割の第1の例を示す図である。
データカプセル150は、利用者サーバ32がデータ処理サーバ31から受信したものである。データカプセル160は、利用者サーバ33がデータ処理サーバ31から受信して利用者サーバ32に転送したものである。データカプセル150,160は、前述のデータカプセル130と同様の構造をもつ。以下の説明では、利用者サーバ32が、データカプセル150,160を用いて同一性判定を行う。ただし、利用者サーバ32が利用者サーバ33にデータカプセル150を転送し、利用者サーバ33がデータカプセル150,160を用いて同一性判定を行うことも可能である。
【0061】
データカプセル150は、ハッシュ値リスト151を含む。ハッシュ値リスト151は、異なる個人情報から生成された複数のハッシュ値を含む。ハッシュ値は、一定の長さの単位データ(例えば、1バイトデータ)を1文字で表現することで、文字列データとみなすことが可能である。ハッシュ値リスト151は、第1の実施の形態のデータリスト13に対応する。例えば、ハッシュ値リスト151は、「佐藤太郎」という氏名から算出されたハッシュ値「450」と、「佐藤次郎」という氏名から算出されたハッシュ値「56」とを含む。異なるハッシュ値は異なる長さをもつことがある。
【0062】
データカプセル160は、ハッシュ値リスト161を含む。ハッシュ値リスト161は、異なる個人情報から生成された複数のハッシュ値を含む。ハッシュ値リスト161は、第1の実施の形態のデータリスト14に対応する。例えば、ハッシュ値リスト161は、「鈴木次郎」という氏名から算出されたハッシュ値「69」と、「佐藤次郎」という氏名から算出されたハッシュ値「56」とを含む。同一の氏名からは同一のハッシュ値が算出される。ハッシュ値リスト151,161は、同一のハッシュ値「56」を含む。
【0063】
利用者サーバ32は、データカプセル150のストアドプロシジャを呼び出す。データカプセル150は、ハッシュ値リスト151からバイト行列152を生成する。データカプセル150は、生成したバイト行列152をデータベースに格納してもよい。バイト行列152は、ハッシュ値リスト151のハッシュ値を1バイトのバイト値に分割して左詰めすることで生成される。バイト行列152の行はハッシュ値に対応し、バイト行列152の列はハッシュ値の先頭からの位置に対応する。ハッシュ値によって長さが異なるため、バイト行列152の空いたセルにはNull値が補完される。
【0064】
データカプセル150は、バイト行列152からバイトテーブル153を生成する。データカプセル150は、生成したバイトテーブル153をデータベースに格納してもよい。バイトテーブル153は、行番号と列番号とバイト値とを対応付けたテーブルである。このとき、データカプセル150は、バイト値をランダムにシャッフルして、バイト行列152とは異なる順序にバイト値を並べ替える。
【0065】
例えば、バイト行列152の1行1列は「4」、1行2列は「5」、1行3列は「0」、2行1列は「5」、2行2列は「6」、2行3列は「N」(Null値)である。これに対して、バイトテーブル153の1番目のバイト値は2行2列、2番目のバイト値は1行1列、3番目のバイト値は1行3列、4番目のバイト値は2行1列、5番目のバイト値は1行2列、6番目のバイト値は2行3列に対応する。なお、バイトテーブル153は、Null値を含んでもよいしNull値を含まなくてもよい。
【0066】
同一性判定にあたり、データカプセル150のストアドプロシジャは、データカプセル160のストアドプロシジャを呼び出す。このために、利用者サーバ32は、データカプセル160のファイルパスをデータカプセル150に対して指定する。これにより、データカプセル150がデータカプセル160と直接通信する。
【0067】
データカプセル160は、ハッシュ値リスト161からバイト行列162を生成する。データカプセル160は、生成したバイト行列162をデータベースに格納してもよい。バイト行列162は、バイト行列152と同様に、ハッシュ値リスト161のハッシュ値を1バイトのバイト値に分割して左詰めすることで生成される。
【0068】
データカプセル160は、バイト行列162からバイトテーブル163を生成する。データカプセル160は、生成したバイトテーブル163をデータベースに格納してもよい。バイトテーブル163は、序数と行番号とバイト値とを対応付けたテーブルである。序数は、バイト行列162における並び順に従ってバイト値に付与される連続した自然数である。同一のハッシュ値の中では、先頭のバイト値から末尾のバイト値に向かって連続した序数が付与される。あるハッシュ値の先頭のバイト値に付与される序数は、1つ前のハッシュ値の末尾のバイト値に付与される序数より1つ大きい。
【0069】
バイトテーブル163のバイト値は、序数の昇順にソートされる。よって、バイトテーブル153と異なり、バイトテーブル163のバイト値はランダムにシャッフルされない。例えば、バイト行列162の1行1列は「6」、1行2列は「9」、2行1列は「5」、2行2列は「6」である。1行1列のバイト値の序数は1、1行2列のバイト値の序数は2、2行1列のバイト値の序数は3、2行2列のバイト値の序数は4である。
【0070】
なお、バイトテーブル163は、後述する序数の検索を効率化するために作成される。ただし、データカプセル160は、バイトテーブル163を生成せず、バイト行列162を用いて序数の検索を実行することも可能である。
【0071】
図6は、序数を用いた同一性判定の第1の例を示す図である。
データカプセル150は、データカプセル160のストアドプロシジャを呼び出すことで、バイトテーブル153に含まれるバイト値を上から順に1つずつデータカプセル160に渡す。データカプセル160は、バイトテーブル163の上から順に、受け付けたバイト値と同一のバイト値を検索し、同一のバイト値に対応する序数を回答する。データカプセル160は、バイトテーブル163の末尾まで到達した場合、すなわち、同一のバイト値が存在しない場合、負数(例えば、-1)を回答する。
【0072】
バイトテーブル153に含まれる1つのバイト値に対して、同一のバイト値がバイトテーブル163に複数個ある場合もある。そこで、データカプセル150は、バイトテーブル153の各バイト値を、負数が返信されるまで繰り返しデータカプセル160に入力して、同一のバイト値の序数を網羅的に取得する。
【0073】
例えば、データカプセル150は、2行2列のバイト値「6」をデータカプセル160に入力し、序数1,4を取得する。次に、データカプセル150は、1行1列のバイト値「4」をデータカプセル160に入力し、負数を取得する。次に、データカプセル150は、1行3列のバイト値「0」をデータカプセル160に入力し、負数を取得する。次に、データカプセル150は、2行1列のバイト値「5」をデータカプセル160に入力し、序数3を取得する。次に、データカプセル150は、1行2列のバイト値「5」をデータカプセル160に入力し、序数3を取得する。
【0074】
なお、データカプセル150は、Null値をデータカプセル160に入力してもよいし入力しなくてもよい。また、データカプセル150は、上記のバイト値「5」のように重複するバイト値をデータカプセル160に複数回入力してもよいし、1回だけ入力してもよい。後者の場合、データカプセル150は、2行1列のバイト値「5」に対する検索結果を、1行2列のバイト値「5」に対する検索結果として再利用すればよい。
【0075】
バイト値の序数を網羅的に取得した後、データカプセル150は、バイトテーブル153のバイト値を、行番号を第1ソートキーとして使用し列番号を第2ソートキーとして使用してソートする。データカプセル150は、バイトテーブル153のバイト値を、行番号でグループ化する。これにより、バイト行列152におけるバイト値の並び順が再現され、同じハッシュ値に属するバイト値が元の順序で並ぶ。
【0076】
データカプセル150は、ハッシュ値毎に、すなわち、行番号が同じバイト値の列毎に、全てのバイト値に対して連続する序数を取得したか判定する。全てのバイト値に対して連続する序数を取得したハッシュ値は、ハッシュ値リスト161に同一のものが含まれている可能性がある。一方、全てのバイト値に対して連続する序数を取得していないハッシュ値は、ハッシュ値リスト161に同一のものが含まれていない。
【0077】
例えば、ハッシュ値「450」の序数の検索結果は、(無し),(3),(無し)である。よって、ハッシュ値「450」は、ハッシュ値リスト161に含まれていない。一方、ハッシュ値「56」の序数の検索結果は、(3),(1,4)である。この検索結果は、序数3,4という連続する序数の列を含んでいる。よって、ハッシュ値「56」はハッシュ値リスト161に含まれている可能性がある。
【0078】
ただし、バイト値「5」とバイト値「6」とが異なるハッシュ値に属する可能性がある、すなわち、バイト行列162の異なる行に跨がる可能性がある。このため、序数のみではハッシュ値「56」がハッシュ値リスト161に含まれているとは断定できない。
【0079】
そこで、データカプセル150は、ハッシュ値リスト161に含まれる可能性があるハッシュ値について、そのハッシュ値に属する何れか1つのバイト値の序数をデータカプセル160に入力する。基準とするバイト値は、検証対象のハッシュ値の中からランダムに選択されてもよいし、検証対象のハッシュ値に含まれる先頭のバイト値または末尾のバイト値であってもよい。データカプセル150は、バイトテーブル163から、受け付けた序数に対応するバイト値と同じ行番号をもつバイト値をカウントし、受け付けた序数より前方に位置するバイト値の個数と後方に位置するバイト値の個数とを回答する。
【0080】
例えば、データカプセル150は、2行1列のバイト値「5」から取得した序数3をデータカプセル160に入力する。データカプセル160は、序数3のバイト値と同じ行番号をもつバイト値をバイトテーブル163から検索し、前方のバイト値の個数が0個であり後方のバイト値の個数が1個であると判定する。データカプセル160は、前方0個かつ後方1個の情報をデータカプセル150に回答する。
【0081】
データカプセル150は、データカプセル160からの回答とバイトテーブル153とが整合するか判定する。ここでは、2行1列のバイト値と行番号が同じバイト値のうち、前方のバイト値は0個であり後方のバイト値は1個である。よって、データカプセル160からの回答とバイトテーブル153とが整合する。データカプセル160からの回答とバイトテーブル153とが整合する場合、データカプセル150は、検証対象のハッシュ値がハッシュ値リスト161に含まれると判定する。一方、データカプセル160からの回答とバイトテーブル153とが整合しない場合、データカプセル150は、検証対象のハッシュ値がハッシュ値リスト161に含まれないと判定する。図6の例では、ハッシュ値「56」がハッシュ値リスト161に含まれると判定される。
【0082】
図7は、ハッシュ値の分割の第2の例を示す図である。
データカプセル150には、図5と同様に、ハッシュ値リスト151が格納されている。データカプセル150は、ハッシュ値リスト151からバイト行列152を生成し、バイト行列152からバイトテーブル153を生成する。
【0083】
一方、データカプセル160には、ハッシュ値リスト164が格納されている。ハッシュ値リスト164は、「鈴木四郎」という氏名から算出されたハッシュ値「75」と、「高橋太郎」という氏名から算出されたハッシュ値「60」とを含む。ハッシュ値リスト151,164は、同じハッシュ値を含まない。データカプセル160は、ハッシュ値リスト164からバイト行列165を生成し、バイト行列165からバイトテーブル166を生成する。バイト行列165の1行1列は「7」、1行2列は「5」、2行1列は「6」、2行2列は「0」である。1行1列のバイト値の序数は1、1行2列のバイト値の序数は2、2行1列のバイト値の序数は3、2行2列のバイト値の序数は4である。
【0084】
図8は、序数を用いた同一性判定の第2の例を示す図である。
データカプセル150は、2行2列のバイト値「6」をデータカプセル160に入力し、序数3を取得する。次に、データカプセル150は、1行1列のバイト値「4」をデータカプセル160に入力し、負数を取得する。次に、データカプセル150は、1行3列のバイト値「0」をデータカプセル160に入力し、序数4を取得する。次に、データカプセル150は、2行1列のバイト値「5」をデータカプセル160に入力し、序数2を取得する。次に、データカプセル150は、1行2列のバイト値「5」をデータカプセル160に入力し、序数2を取得する。
【0085】
データカプセル150は、バイトテーブル153のバイト値をソートし、ハッシュ値毎に、全てのバイト値に対して連続する序数を取得したか判定する。ハッシュ値「450」の序数の検索結果は、(無し),(2),(4)である。よって、ハッシュ値「450」は、ハッシュ値リスト164に含まれていない。一方、ハッシュ値「56」の序数の検索結果は、(2),(3)である。この検索結果は連続する序数の列を含むため、ハッシュ値「56」はハッシュ値リスト164に含まれている可能性がある。
【0086】
そこで、データカプセル150は、2行1列のバイト値「5」から取得した序数2をデータカプセル160に入力する。データカプセル160は、序数2のバイト値と同じ行番号をもつバイト値をバイトテーブル166から検索し、前方のバイト値の個数が1個であり後方のバイト値の個数が0個であると判定する。データカプセル160は、前方1個かつ後方0個の情報をデータカプセル150に回答する。
【0087】
バイトテーブル153では、2行1列のバイト値と行番号が同じバイト値のうち、前方のバイト値は0個であり後方のバイト値は1個である。よって、データカプセル160からの回答とバイトテーブル153とは整合しない。そのため、データカプセル150は、ハッシュ値「56」がハッシュ値リスト164に含まれないと判定する。
【0088】
図9は、プロシジャ定義の例を示す図である。
上記の同一性判定を実装するため、データカプセル150,160それぞれにストアドプロシジャ141,142,143,144,145が登録される。ただし、ストアドプロシジャ141はデータカプセル150のみに登録されてもよく、ストアドプロシジャ142,143,144,145はデータカプセル160のみに登録されてもよい。
【0089】
ストアドプロシジャ141は、同一性判定を示すプログラムであり、利用者サーバ32から呼び出される。ストアドプロシジャ141は、相手データカプセルのファイルパスを入力として受け付ける。ストアドプロシジャ141は、相手データカプセルのストアドプロシジャ142,143,144,145を呼び出しながら、2つのデータカプセルのデータベースが同一レコードを含むか否か判定し、同一レコードの有無を出力する。
【0090】
ストアドプロシジャ142は、ビット数比較を示すプログラムである。ストアドプロシジャ143は、分割ビット数比較を示すプログラムである。図5~8で説明した手順を実行する前に、データカプセル150は、簡潔な前処理によって、ハッシュ値リスト151に含まれるハッシュ値のうちデータカプセル160に含まれる可能性がないハッシュ値をふるい落とす。ふるい落とされたハッシュ値は、図5~8の手順の対象から除外される。ストアドプロシジャ142,143は、この前処理に使用される。
【0091】
ストアドプロシジャ142は、1つのハッシュ値を表すビット列全体の中でONビット(値が1であるビット)の個数を入力として受け付ける。ストアドプロシジャ142は、データベースに格納されたハッシュ値それぞれのONビット数をカウントし、受け付けたONビット数と同じONビット数をもつハッシュ値がデータベースにあるか判定する。ストアドプロシジャ142は、ONビット数が同じハッシュ値の有無を出力する。なお、ONビット数のみからハッシュ値を推定することは困難である。
【0092】
ストアドプロシジャ143は、ONビット数の列を入力として受け付ける。ONビット数の列は、1つのハッシュ値を表すビット列をN個のブロック(Nは2以上の整数)に分割して、ブロック毎にONビット数をカウントすることで算出される。1つのブロックのサイズは、図5~8で用いたバイト値のサイズよりも十分に大きい。ストアドプロシジャ143は、データベースに格納されたハッシュ値それぞれのONビット数の列を算出し、受け付けたONビット数の列と同じONビット数の列をもつハッシュ値がデータベースにあるか判定する。ストアドプロシジャ143は、ONビット数の列が同じハッシュ値の有無を出力する。なお、ブロックのサイズを十分に大きくすることによって、ONビット数の列のみからハッシュ値を推定することは困難である。
【0093】
ストアドプロシジャ144は、バイト検索を示すプログラムである。ストアドプロシジャ144は、1つのバイト値と開始位置とを入力として受け付ける。新しいバイト値を入力する場合、開始位置は0である。前回と同じバイト値を入力する場合、開始位置は前回出力された序数である。これにより、未検索の同一バイト値が検索される。ストアドプロシジャ144は、データベースに格納されたハッシュ値に含まれるバイト値のうち、開始位置の1つ後から末尾に向かって、受け付けたバイト値と同一のバイト値を検索する。ストアドプロシジャ144は、同一バイト値が検出された場合はその序数を出力し、同一バイト値が検出されなかった場合は特定の負数(例えば、-1)を出力する。
【0094】
なお、ストアドプロシジャ144は、検索途中の状態を示す内部状態を保持してもよい。例えば、ストアドプロシジャ144は、前回出力された序数をデータベースに保存してもよい。この場合、開始位置が入力されなくてもよく、ストアドプロシジャ144は、前回の続きから同一バイト値の検索を再開すればよい。また、ストアドプロシジャ144は、全ての同一バイト値の序数を一度に出力してもよい。
【0095】
ストアドプロシジャ145は、前後バイト数検索を示すプログラムである。ストアドプロシジャ145は、基準バイト値の序数を入力として受け付ける。ストアドプロシジャ145は、基準バイト値と同一のハッシュ値に属するバイト値のうち、基準バイト値より前方にあるバイト値の個数と後方にあるバイト値の個数とをカウントする。ストアドプロシジャ145は、カウントされた前方バイト数および後方バイト数を出力する。
【0096】
図10は、監視設定テーブルの例を示す図である。
監視設定テーブル146は、カプセル監視の設定を示す。監視設定テーブル146は、データベースに格納されてもよいしデータベースの外部に記憶されてもよい。監視設定テーブル146は、パラメータ名とパラメータ値とを対応付ける。パラメータは、通信不能時間、認証失敗時間、認証失敗回数、認証成功時間および有効期限を含む。
【0097】
データカプセル130は、起動後に定期的にデータ処理サーバ31と通信する。起動後に「通信不能時間」を超えて通信不能状態が継続した場合、データカプセル130は、データカプセル130自身を無効化してデータベースの管理情報を削除する。
【0098】
また、データカプセル130は、起動毎に利用者IDおよびパスワードを用いた利用者認証を要求する。データカプセル130は、この利用者認証の結果を監視する。データカプセル130は、直近の「認証失敗時間」T1の間に「認証失敗回数」だけ認証失敗が発生し、かつ、認証失敗が「認証失敗回数」に達した後の「認証成功時間」T2の間に少なくとも1回の認証成功が発生した場合、この認証成功を不正侵入とみなす。データカプセル130は、利用者認証結果から不正侵入を検出した場合、データカプセル130自身を無効化してデータベースの管理情報を削除する。
【0099】
また、データカプセル130は、起動時または定期的に、現在時刻が「有効期限」を過ぎているか否か判定する。現在時刻が「有効期限」を過ぎている場合、データカプセル130は、データカプセル130自身を無効化してデータベースの管理情報を削除する。
【0100】
次に、サーバ装置の機能および処理手順について説明する。
図11は、サーバ装置の機能例を示すブロック図である。
データ処理サーバ31は、カプセル生成部121およびカプセル監視部122を有する。カプセル生成部121およびカプセル監視部122は、例えば、データ処理サーバ31が有するCPU、通信インタフェースおよびプログラムを用いて実装される。
【0101】
カプセル生成部121は、利用者サーバ32からデータカプセル作成要求を受信し、データカプセル150を生成して利用者サーバ32に送信する。また、カプセル生成部121は、利用者サーバ33からデータカプセル作成要求を受信し、データカプセル160を生成して利用者サーバ33に送信する。データカプセル作成要求は、データベースに格納されるハッシュ値およびDBMSプログラムに登録される管理情報を含む。ただし、カプセル生成部121が、個人情報からハッシュ値を算出してもよい。また、データカプセルの用途として同一性判定が利用者サーバ32,33から指定された場合、カプセル生成部121が、同一性判定を実装するための適切な管理情報を生成してもよい。
【0102】
カプセル監視部122は、データカプセル150,160と定期的に通信するサーバプロセスである。カプセル監視部122は、データカプセル150,160それぞれから乱数を受信し、受信した乱数を含む応答メッセージをデータカプセル150,160に返信する。ただし、カプセル監視部122がデータ処理サーバ31の外部にあってもよい。
【0103】
利用者サーバ32は、カプセル取得部123、カプセル記憶部124、同一性判定部125およびカプセル監視部126を有する。カプセル記憶部124は、例えば、RAM102またはHDD103を用いて実装される。カプセル取得部123、同一性判定部125およびカプセル監視部126は、例えば、CPU101、通信インタフェース107およびプログラムを用いて実装される。利用者サーバ33が、利用者サーバ32と同様のモジュールを有してもよい。
【0104】
カプセル取得部123は、個人情報の入力を受け付け、受け付けた個人情報をハッシュ値に変換し、ハッシュ値を含むデータカプセル作成要求をデータ処理サーバ31に送信する。カプセル取得部123は、ハッシュ値が格納されたデータカプセル150をデータ処理サーバ31から受信する。また、カプセル取得部123は、利用者サーバ32から、比較対象のデータカプセル160を受信する。ただし、カプセル取得部123が、データカプセル150を利用者サーバ33に転送してもよい。また、利用者サーバ32がデータカプセル150を保持し、利用者サーバ33がデータカプセル160を保持した状態のまま、データカプセル150,160が相互に通信してもよい。
【0105】
カプセル記憶部124は、データ処理サーバ31から受信されたデータカプセル150と、利用者サーバ33から受信されたデータカプセル160とを記憶する。
同一性判定部125は、カプセル記憶部124に記憶されたデータカプセル150,160のストアドプロシジャを利用して、2つのハッシュ値リストに同一のハッシュ値が含まれているか判定する。このとき、同一性判定部125は、データカプセル150,160からハッシュ値リストそのものを読み出さない。同一性判定部125は、同一性判定の結果を出力する。同一性判定部125は、判定結果を表示装置111に表示してもよいし、不揮発性ストレージに保存してもよいし、他の情報処理装置に送信してもよい。
【0106】
カプセル監視部126は、同一性判定部125がデータカプセル150,160を起動した後、データカプセル150,160に含まれるコンテナプログラムに従ってデータカプセル150,160を監視する。カプセル監視部126は、定期的にカプセル監視部122に乱数を送信し、送信した乱数を含む応答メッセージをカプセル監視部122から受信する。カプセル監視部126は、通信不能時間が閾値を超えた場合、データカプセル150,160を無効化する。また、カプセル監視部126は、複数回の利用者認証の結果が特定のパターンに該当した場合、データカプセル150,160を無効化する。また、カプセル監視部126は、有効期限を過ぎたデータカプセルを無効化する。
【0107】
図12は、同一性判定の手順例を示すフローチャートである。
利用者サーバ32は、データカプセル150,160を起動する。以下の処理は、データカプセル150,160に含まれるDBMSプログラムを用いて実行される。
【0108】
(S10)データカプセル150は、データカプセル150に格納された複数のハッシュ値それぞれのONビット数をカウントする。データカプセル150は、算出されたONビット数をデータカプセル160に1つずつ入力する。
【0109】
(S11)データカプセル160は、データカプセル160に格納された複数のハッシュ値の中から、入力されたONビット数をもつハッシュ値を検索する。データカプセル160は、該当するハッシュ値の有無をデータカプセル150に回答する。データカプセル150は、データカプセル150に格納された複数のハッシュ値のうち、該当ハッシュ値が無いと回答されたハッシュ値を以下の処理の対象から除外する。
【0110】
(S12)データカプセル150は、データカプセル150に格納された複数のハッシュ値それぞれを2以上のブロックに分割し、各ブロックのONビット数をカウントする。データカプセル150は、同一のハッシュ値に属するブロックのONビット数を順に並べたONビット数の列を、データカプセル160に1つずつ入力する。
【0111】
(S13)データカプセル160は、データカプセル160に格納された複数のハッシュ値の中から、入力されたONビット数の列をもつハッシュ値を検索する。データカプセル160は、該当するハッシュ値の有無をデータカプセル150に回答する。データカプセル150は、データカプセル150に格納された複数のハッシュ値のうち、該当ハッシュ値が無いと回答されたハッシュ値を以下の処理の対象から除外する。
【0112】
(S14)データカプセル150は、データカプセル150に格納された複数のハッシュ値をバイト単位に分割し、左詰めしてバイト行列を生成する。
(S15)データカプセル160は、データカプセル150に格納された複数のハッシュ値をバイト単位に分割し、左詰めしてバイト行列を生成する。データカプセル160は、バイト行列に含まれるバイト値に連続する序数を割り当てる。なお、ステップS15は、データカプセル150からストアドプロシジャ144が最初に呼び出されたときに実行されてもよい。また、ステップS15は、ストアドプロシジャ144が最初に呼び出される前にデータカプセル150からの要求に応じて実行されてもよいし、データカプセル160が生成された時点でバイト行列が生成されてもよい。また、ステップS15は、ストアドプロシジャ144が呼び出される毎に実行されてもよい。
【0113】
(S16)データカプセル150は、バイト値をランダムに並べ替え、行番号と列番号とバイト値とを対応付けたバイトテーブルを生成する。
(S17)データカプセル150は、バイトテーブルの上から優先的にバイト値を1つ選択し、選択されたバイト値をデータカプセル160に入力する。
【0114】
(S18)データカプセル160は、序数の小さい方からバイト値を走査して、入力されたバイト値と同一のバイト値を検索する。同一のバイト値が検出された場合、データカプセル160は、同一のバイト値に対応する序数をデータカプセル150に回答する。同一のバイト値が検出されなかった場合、データカプセル160は負数を回答する。
【0115】
(S19)データカプセル150は、データカプセル160から負数を受信したか判断する。負数を受信した場合はステップS20に処理が進む。序数を示す正数を受信した場合はステップS17に処理が戻る。この場合、データカプセル150は、前回のバイト値をデータカプセル160に再度入力する。前回の続きから同一のバイト値が検索されるように、データカプセル150は開始位置を指定する。
【0116】
(S20)データカプセル150は、バイトテーブルに含まれる全てのバイト値をデータカプセル160に入力したか判断する。全てのバイト値を入力した場合はステップS21に処理が進む。未入力のバイト値がある場合はステップS17に処理が戻る。データカプセル150は、バイトテーブルから次のバイト値を選択する。
【0117】
(S21)データカプセル150は、バイトテーブルに含まれるバイト値を行番号および列番号に基づいてソートして、バイト値の順序を元に戻す。
(S22)データカプセル150は、バイトテーブルに含まれるバイト値を行番号でグループ化し、連続する序数が取得されたハッシュ値を検出する。
【0118】
(S23)データカプセル150は、検出されたハッシュ値に対応する連続する序数の中から何れか1つの序数を選択し、データカプセル160に入力する。検出されたハッシュ値が複数ある場合、検出されたハッシュ値毎に1つの序数が選択されて入力される。
【0119】
(S24)データカプセル160は、入力された序数に対応する基準バイト値が属するハッシュ値の中で、基準バイト値の前方にあるバイト値の個数および基準バイト値の後方にあるバイト値の個数をカウントする。データカプセル160は、カウントされた前方バイト数および後方バイト数をデータカプセル150に回答する。
【0120】
(S25)データカプセル150は、データカプセル160から受信された前後バイト数がバイトテーブルと整合しているか判断する。整合している場合、データカプセル150は、検出されたハッシュ値と同じハッシュ値がデータカプセル160に含まれると判定する。整合していない場合、データカプセル150は、検出されたハッシュ値と同じハッシュ値がデータカプセル160に含まれないと判定する。
【0121】
データカプセル150は、同一性判定の結果を出力する。全てのハッシュ値について、連続する序数が取得されなかったかまたは前後バイト数が一致しなかった場合、データカプセル150は、データカプセル150,160が同一のハッシュ値を含まないと判定する。一方、少なくとも1つのハッシュ値について、連続する序数が取得されかつ前後バイト数が一致した場合、データカプセル150は、同一のハッシュ値を含むと判定する。データカプセル150,160が同一のハッシュ値を含む場合、例えば、利用者は、業務担当者の変更や、システム利用契約の断念または解除などを検討する。
【0122】
図13は、通信不能検出の手順例を示すフローチャートである。
利用者サーバ32は、データカプセル150,160を起動する。以下の処理は、データカプセル150,160に含まれるコンテナプログラムを用いて実行される。以下の処理は、データカプセル毎に実行されてもよい。
【0123】
(S30)カプセル監視部126は、乱数を1つ選択する。カプセル監視部126は、選択された乱数と現在時刻を示すタイムスタンプとを対応付けて記録する。
(S31)カプセル監視部126は、選択された乱数をデータ処理サーバ31(または、カプセル監視部122を有する特定のサーバ装置)に送信する。
【0124】
(S32)カプセル監視部126は、乱数を送信してから一定時間内に、送信した乱数を含む応答メッセージを受信したか判断する。応答メッセージに含まれる乱数が、カプセル監視部126が送信したものと同じであるか否かは、ステップS30の記録を参照して判断される。適切な応答メッセージを受信した場合はステップS33に処理が進み、適切な応答メッセージを受信しなかった場合はステップS34に処理が進む。
【0125】
(S33)カプセル監視部126は、最終通信時刻を更新する。ここで、受信された乱数が、カプセル監視部126が最後に送信したものである場合、カプセル監視部126は、現在時刻を最終通信時刻とする。受信された乱数が、カプセル監視部126が最後に送信したものでない場合、カプセル監視部126は、受信された乱数の次の乱数の送信時刻を最終通信時刻とする。そして、ステップS30に処理が戻る。
【0126】
(S34)カプセル監視部126は、最終通信時刻からの経過時間を算出する。カプセル監視部126は、算出された経過時間が、監視設定テーブル146に登録された通信不能時間の閾値を超えたか判断する。経過時間が閾値を超えた場合はステップS35に処理が進み、経過時間が閾値を超えていない場合はステップS30に処理が戻る。
【0127】
(S35)カプセル監視部126は、コンテナプログラムと同一のデータカプセルに含まれる消去プログラムを起動する。カプセル監視部126は、そのデータカプセルの無効化を決定し、データベースの管理情報を削除する。
【0128】
このように、カプセル監視部126は、最終通信時刻からの経過時間が閾値を超えるまで、乱数を選択してデータ処理サーバ31に送信することを繰り返す。その間、一時的な通信断絶や通信遅延によって、カプセル監視部126は、古い乱数を含む応答メッセージを受信する可能性がある。カプセル監視部126は、送信した乱数とタイムスタンプを記録しておくことで、最終通信時刻を適切に判断できる。なお、カプセル監視部126は、最終通信時刻より前のタイムスタンプをもつ乱数を記録から削除してよい。
【0129】
図14は、不正ログイン検出の手順例を示すフローチャートである。
利用者サーバ32は、データカプセル150,160を起動する。以下の処理は、データカプセル150,160に含まれるコンテナプログラムを用いて実行される。以下の処理は、データカプセル毎に実行されてもよい。
【0130】
(S40)カプセル監視部126は、今回の利用者認証の結果を取得する。
(S41)カプセル監視部126は、利用者認証の結果が認証失敗であるか判断する。認証失敗の場合はステップS42に処理が進む。認証失敗でない場合、すなわち、認証成功である場合はステップS44に処理が進む。
【0131】
(S42)カプセル監視部126は、直近の時間T1以内に認証失敗回数が、監視設定テーブル146に登録された閾値に達したか判断する。時間T1以内に認証失敗回数が閾値に達した場合、ステップS43に処理が進む。それ以外の場合、今回の利用者認証の結果に対する不正ログイン検出の処理が終了する。
【0132】
(S43)カプセル監視部126は、認証失敗回数が閾値に達した時点から、時間T2を計測するタイマを開始する。そして、今回の利用者認証の結果に対する不正ログイン検出の処理が終了する。
【0133】
(S44)カプセル監視部126は、現在時刻が、ステップS43のタイマによって計測される時間T2の期間内であるか判断する。時間T2の期間内である場合はステップS45に処理が進む。時間T2の期間内でない場合、今回の利用者認証の結果に対する不正ログイン検出の処理が終了する。
【0134】
(S45)カプセル監視部126は、コンテナプログラムと同一のデータカプセルに含まれる消去プログラムを起動する。カプセル監視部126は、そのデータカプセルの無効化を決定し、データベースの管理情報を削除する。
【0135】
以上説明したように、第2の実施の形態の情報処理システムは、異なる利用者がもつ2つのデータリストの中に同一の個人情報が含まれるか判定する。これにより、利用者は、個人情報に基づいて業務上適切な判断を行うことができる。また、情報処理システムは、個人情報をハッシュ値に変換し、2つのハッシュ値リストの中に同一のハッシュ値が含まれるか判定する。これにより、個人情報の漏洩リスクが低下する。
【0136】
また、情報処理システムは、2つのハッシュ値リストをそれぞれ、ハッシュ値の読み出しが禁止されるデータカプセルに格納する。そして、情報処理システムは、2つのデータカプセルがもつストアドプロシジャを呼び出し、データカプセル間の通信を通じて同一性判定を実行する。これにより、ハッシュ値の漏洩リスクも低下する。よって、レインボーテーブル攻撃によってハッシュ値から個人情報が推定されるリスクが低下する。
【0137】
また、一方のデータカプセルのストアドプロシジャは、そのデータカプセルがもつハッシュ値リストに含まれるバイト値をランダムに並べ替えて、他方のデータカプセルに送信する。これにより、送信されるバイト値を監視することでハッシュ値が推定されるリスクが低下する。また、一方のデータカプセルのストアドプロシジャは、他方のデータカプセルから受信する序数の連続性に基づいて、同一のハッシュ値の有無を判定する。これにより、ハッシュ値そのものを秘匿しつつ同一性判定が行われる。また、ある序数の前後バイト数を検証することで、同一性判定の精度が向上する。
【0138】
上記については単に本発明の原理を示すものである。更に、多数の変形や変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応する全ての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
【符号の説明】
【0139】
10 情報処理装置
11 記憶部
12 処理部
13,14 データリスト
13-1,13-2,14-1,14-2 文字列データ
13a,13b,13c,13d,14a,14b,14c,14d 文字
15a,15b,15c,15d 序数
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14