(57)【要約】【課題】従来技術では、暗号鍵と暗号化識別子の再生成が終了するまでの間、暗号鍵を共有する全プログラムが動作できなくなるという問題がある。また、複数のプログラムが同一の暗号鍵しか持てないという理由により、個人情報を結合して利用するプログラムのそれぞれで結合可能な情報を変えることも不可能である。【解決手段】分割する同一人の個人情報のそれぞれに複数の識別子を付与して出力し、また各識別子の対応データを異なる鍵で暗号化して出力する。【選択図】図１
2007317075.tif 000002
【特許請求の範囲】
【請求項１】
データベースに格納された個人情報を分割して出力する個人情報分割装置において、
前記データベースに格納された同一人の個人情報を入力する手段と、前記入力された個人情報の項目構成方法を記述したデータ分割定義を入力する手段と、前記のデータ分割定義に基づいて、前記入力された同一人の個人情報を２個以上のレコードに分割する手段と、前記の分割された同一人のレコードに対してそれぞれ一意な識別子を１個以上生成し付与する手段と、前記の識別子が付与されたレコードを出力する手段と、１個以上の暗号鍵を入力する手段と、前記の分割された同一人の２個以上のレコードに付与された識別子の組をデータとして構成する手段と、前記の入力された暗号鍵により前記の２個以上の識別子の対応組みからなるデータを暗号化する手段と、前記の暗号化された識別子対応組みを出力する手段と、を備えたことを特徴とする個人情報分割装置。
【請求項２】
データベースに格納された個人情報を分割して出力する個人情報分割装置において、
個人情報の項目構成方法を記述したデータ分割定義を入力する手段と、加工した個人情報を格納するデータベースのアクセス権設定を入力する手段と、個人情報を格納するデータベースに個人情報を複製するための項目関係を定義したデータ複製定義を入力する手段と、前記入力されたデータ分割定義とアクセス権設定とデータ複製定義に基づいて、おのおののアプリケーションが参照できる個人情報のテーブルの中から、データ分割定義で分割格納することを指示した個人情報の項目の組みを抽出する手段と、前記の抽出情報を出力する手段と、を備えたことを特徴とする個人情報分割装置。
【請求項３】
請求項１に記載の個人情報分割装置において、
前記の識別子が付与されたレコードを出力する手段は、出力レコードを内部のバッファに一時的に格納する手段と、バッファ内のレコード集合を並べ替えることによりレコード生成の順番をかく乱する手段からなり、レコード集合を並べ替える順序は、付与された識別子の昇順、付与された識別子の降順、レコード出力手段がバッファ内の各レコードに与える乱数の昇順、レコード出力手段がバッファ内の各レコードに与える乱数の降順のいずれかに従うことを特徴とする個人情報分割装置。
【請求項４】
請求項１または請求項３に記載の個人情報分割装置において、
分割された同一人のレコードに対してそれぞれ一意な識別子を生成し付与する手段は、分割された１個のレコードに２個以上の異なる識別子を付与し、識別子の組をデータとして構成する手段は分割された対になる識別子とそれぞれ対応表を構成し、
識別子の組みのデータを暗号化する手段は、前記の分割された１個のレコードに２個以上の異なる識別子のそれぞれに異なる暗号鍵で暗号化することを特徴とする個人情報分割装置。
【請求項５】
請求項１ないし請求項４のいずれかに記載の個人情報分割装置において、
前記入力された個人情報の項目構成方法を記述したデータ分割定義は、分割前のデータ項目と、前記項目が識別子項目であることを指示する項目と、分割後のデータ項目からなる定義データと、分割された同一人の２個以上のレコードに対してそれぞれ一意な識別子を生成し付与する識別子項目と、識別子対応組みを暗号化するための鍵の識別子からなることを特徴とする個人情報分割装置。
【請求項６】
請求項１、請求項３、または請求項４のいずれかに記載の個人情報分割装置において、
識別子の対応組みからなるデータを暗号化する手段は、非対称方式の暗号を用いることを特徴とする個人情報分割装置。
【請求項７】
請求項１、請求項３、請求項４、または請求項６のいずれかに記載の個人情報分割装置において、
前記の分割された同一人のレコードに対してそれぞれ一意な識別子を１個以上生成し付与する手段は、前記入力された同一人の個人情報の１個以上の項目の値が所定の条件を満たす場合に、空値を付与することを特徴とする個人情報分割装置。
【請求項８】
請求項１、請求項３、請求項４、請求項６、または請求項７のいずれかに記載の個人情報分割装置において、
前記の分割された同一人のレコードに対してそれぞれ一意な識別子を１個以上生成し付与する手段は、ユーザが入力した任意の識別子を付与することを特徴とする個人情報分割装置。
【請求項９】
データベースに格納された個人情報を分割して出力する個人情報分割方法において、
前記データベースに格納された同一人の個人情報を入力するステップと、前記入力された個人情報の項目構成方法を記述したデータ分割定義を入力するステップと、前記のデータ分割定義に基づいて、前記入力された同一人の個人情報を２個以上のレコードに分割するステップと、前記の分割された同一人のレコードに対してそれぞれ一意な識別子を１個以上生成し付与するステップと、前記の識別子が付与されたレコードを出力するステップと、１個以上の暗号鍵を入力するステップと、前記の分割された同一人の２個以上のレコードに付与された識別子の組をデータとして構成するステップと、前記の入力された暗号鍵により前記の２個以上の識別子の対応組みからなるデータを暗号化するステップと、前記の暗号化された識別子対応組みを出力するステップと、を備えたことを特徴とする個人情報分割方法。
【請求項１０】
データベースに格納された個人情報を分割して出力する個人情報分割方法において、
個人情報の項目構成方法を記述したデータ分割定義を入力するステップと、加工した個人情報を格納するデータベースのアクセス権設定を入力するステップと、個人情報を格納するデータベースに個人情報を複製するための項目関係を定義したデータ複製定義を入力するステップと、前記入力されたデータ分割定義とアクセス権設定とデータ複製定義に基づいて、おのおののアプリケーションが参照できる個人情報のテーブルの中から、データ分割定義で分割格納することを指示した個人情報の項目の組みを抽出するステップと、前記の抽出情報を出力するステップと、を備えたことを特徴とする個人情報分割方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子化された個人情報を扱うデータベースシステムに関し、特に、データベースに格納された個人情報を分割して出力する個人情報分割装置及び個人情報分割方法に関する。
【背景技術】
【０００２】
本発明は主に電子的な形態の個人情報を保護する方法に関する。個人情報とは個人に関する情報であって、氏名、生年月日その他の記述等により特定の個人を識別する事ができる情報と、これらの情報と照合できるその他の情報がある。また情報主体とは、個人情報によって識別される特定の個人をいう。本発明では、特に電子化された個人情報を処理の対象とする。
【０００３】
プライバシー保護への社会的要請が高まっている昨今、個人情報を扱う企業の情報システムにおいてはプライバシーへの配慮が不可欠となってきた。保護すべき対象やその在り方は社会通念として定まっていないものの、企業（個人情報取扱事業者）にとり、少なくとも２００５年４月に全面施行されたいわゆる個人情報保護法（以下、保護法）および関係法令の遵守は必須となっている。
【０００４】
保護法第２０条は安全管理のための必要且つ適切な措置を義務付けており、各省庁は安全管理措置の例をガイドラインとして提示している。例えば経済産業省によるガイドライン（非特許文献１）は、「従業者（利用者）に付与するアクセス権限の最小化」を技術的安全管理措置として望まれる事項の一つに挙げている。
「アクセス権限の最小化」の実現方法の１つは、個人情報を構成する項目のうち限られた項目のみをアクセス可能とする方法である。全ての業務で個人情報のあらゆる項目を必要としないのであれば、元々の個人情報を項目で分割して、各業務に必要な項目のみからなるデータベースを構成すればよい。例えば請求書などを顧客へ発送する業務では氏名、住所などの個人を特定できる項目を使えるようにし、請求金額を算出する課金業務ではサービス利用履歴や商品購入履歴等の項目のみを使えるようにすればよい。
【０００５】
この方法に関連して、特許文献１は、個人情報を構成する項目を幾つかの項目群に分割し、なおかつ利用者が、分割された項目を許可無く結合できないような個人情報データベースを構築する手段を開示する。
特許文献１が開示している方法は、
（１）複数の項目データからなる複数の情報主体の個人情報を項目データ群に分割し、
（２）それぞれの項目データ群に識別子を付与し、
（３）識別子を暗号化して暗号化識別子を生成し、
（４）（１）の項目データ群に（３）の暗号化識別子をペアにしたデータを利用者に与える、というものである。
上記（３）の暗号化にはＡＥＳ等の対称鍵方式のブロック暗号が用いられる。
上記技術の典型的な適用例の一つは、名簿入力業務の委託である。委託業者は氏名、住所等の項目からなる個人情報が記載された葉書をスキャンした電子データを、従来技術１で項目値に分割し、受託業者に送信する。受託業者ではキーパンチャーが、暗号識別子がついた各々のスキャン画像を元に項目値をテキストデータに変換する。
【特許文献１】特開２００５−１８２２７５号公報
【非特許文献１】「個人情報の保護に関する法律についての経済産業分野を対象とするガイドライン」,[online],2004年10月22日厚生労働省経済産業省告示第４号、［2006年4月27日検索］,インターネット<URL:http://www.meti.go.jp/policy/it_policy/privacy/041012_hontai.pdf>
【発明の開示】
【発明が解決しようとする課題】
【０００６】
特許文献１は、分割された項目データ群に暗号化識別子そのものを付与し、暗号鍵を秘匿する。非特許文献１に開示されている変更例では、暗号化識別子に対応する通し番号を割り振り、項目データ群自体には通し番号を付与して、暗号鍵、及び暗号化識別子と通し番号の対応表を秘匿する方法が示されている。いずれの場合においても、再結合に用いることができる暗号鍵は一つである。従来技術１の原理上、本発明が想定する利用形態において従来技術１を適用しようとする場合、暗号鍵のバイナリをファイルとして共有するにせよ、メモリ上で複製するにせよ、個人情報を結合して利用する複数のプログラムには全て同一の暗号鍵が渡る事になる。
すなわち、複数のプログラムが同一の暗号鍵を持つため、個人情報を結合して利用するプログラムそれぞれで結合可能な情報を変えることも困難である。
【０００７】
一方、暗号鍵を紛失した場合など、不正利用の可能性を排除できない場合は鍵を再発行する必要がある。これは、暗号鍵がバックアップされているとしても同様である。暗号鍵を再発行するということは、項目データ群に新しい暗号化識別子を付与し直す処理も必要となる。
従って特許文献１の技術では、暗号鍵と暗号化識別子の再生成が終了するまでの間、暗号鍵を共有する全プログラムが動作できなくなるという問題もある。
【０００８】
また、実際の情報システムにおいては、個人情報を格納する複数のデータベースが配置される上、新たな機能やサービスを追加するため、部分的にデータベースの追加、修正を繰り返すことは珍しくない。このようにシステムに新旧のデータベースが入り交じる環境では、限られたデータベースのみで結合の可能性を限定するだけでは不十分であり、複数のデータベースの項目に与えたアクセス権の整合性をチェックする必要がある。
【０００９】
しかし、特許文献１はその原理上、このような問題の解決手段を提供することはできない。特許文献１を用いて、ある項目群が許可無く同時に利用できないよう一つのデータベースが構築することが可能であるものの、別のデータベースに存在する複製された項目をチェックすることはできない。
【課題を解決するための手段】
【００１０】
本発明は、アクセス権限最小化の原則を実現するため、項目が分割されたデータベースを構築する技術を提供する。ただし、本発明では、分割データベースに通信ネットワーク経由でアクセスして利用するプログラムと、同一の分割データベースのデータを結合して利用するプログラムが存在し、さらにそれぞれのプログラムが複数存在する利用形態を想定する。
また、本発明は、不正に結合されることが困難なよう、分割個人データベースを構成する技術を提供する。
すなわち、本発明では、同一人の個人情報を２つ以上のデータに分割、それぞれのデータに識別子を付与してデータベースに出力し、また識別子の対応データを非対称方式の暗号で暗号化し、出力する手段を備える。
【００１１】
また、本発明では、個人情報を分割するためのデータ分割定義に基づいて、データベースに格納されている各テーブルのアクセス権をチェックする手段を備える。
これにより、本発明を用いて分割しているデータが、他のテーブルから結合された状態で取り出せるかどうかを検査することが可能となる。さらに、氏名や住所等の個人を特定できる項目と、職業のような個人を特定できないがプライバシーに関わる項目それぞれにアクセスは許しつつ、ひと塊の情報として利用することを制限できる。
さらに、本発明では、１個の分割データには２つ以上の識別子を付与し、それぞれの識別子対応データを異なる鍵で暗号化する手段を備える。
これにより一組の分割された個人情報を、複数の公開鍵を用いて結合することが可能になる。
【発明の効果】
【００１２】
本発明は、許可無くしては、個人情報の複数項目を結合できないようにデータベースを構築できるという効果がある。
本発明によれば、個人情報を利用するアプリケーションに対し、必要な項目データのみを提供することが可能になる。
【発明を実施するための最良の形態】
【００１３】
図１のシステム１００は本発明の基本構成を示している。１０１は分割される前の個人情報を表すソースデータであり、本発明への入力データとなる。
【００１４】
データ分割装置１０２は、データ分割定義１０６に基づいて、ソースデータ１０１を分割する。データ分割定義１０６、識別子対応テーブル用公開鍵１０５は、システム管理者が予め用意しておくデータである。分割用識別子生成装置１０３は分割データのそれぞれに識別子を付与し、分割用識別子付きデータ１０６、１０７として出力する。また、識別子対応テーブル暗号化装置１０４は、１０３が生成した識別子の対応データを、識別子対応テーブル用公開鍵１０５を用いて暗号化し、暗号化識別子対応テーブル１０８を出力する。本発明においては、識別子対応テーブル暗号化装置１０４は、楕円鍵暗号等の、非対称方式のブロック暗号を用いる。
【００１５】
装置１０２、１０３、１０４は、典型的にはソフトウェアとして実装される。図１のコンピュータ１０９は、システム１００を実現するハードウエア構成の一例を示している。コンピュータ１０９は、ＣＰＵ１１０、ＲＡＭ・ＲＯＭ等のメモリ１１１、ハードディスク１１２、データを入力するためのユーザインタフェースであるキーボードやマウス等の入力装置１１３、データを表示するためのユーザインタフェースである液晶ディスプレイやブラウン管ディスプレイ等の表示装置１１４、他のコンピュータと通信するための通信インタフェース１１５などを有している。
【実施例１】
【００１６】
図２のシステム２００は、本発明における実施例１を示している。個人情報ＤＢ２０１、データ分割サーバ２０２、分割個人情報ＤＢ２０３、結合許可用ＤＢ２０４、アプリケーション２０５、アプリケーション２０６のそれぞれは通信インタフェースを介してネットワークで接続されたコンピュータである。
【００１７】
個人情報ＤＢ（ｄａｔａｂａｓｅ）２０１はソースデータ１０１を格納するデータベースである。典型的な構成では、２０１はＲＤＢ（ｒｅｌａｔｉｏｎａｌ  Ｄａｔａｂａｓｅ）等により構築され、個人情報をレコードデータの集合として格納する。
データ分割サーバ２０１は、データ分割装置１０２、分割用識別子生成装置１０３、識別子対応テーブル暗号化装置１０４から構成される。
分割個人情報ＤＢ２０３は、分割用識別子付きデータ１０６、１０７を格納するデータベースである。典型的な構成では、２０３はＲＤＢ等により構成され、データ１０６、１０７をそれぞれレコードデータの集合として格納する。
【００１８】
結合許可用ＤＢ２０４は、暗号化識別子対応テーブル１０８を格納するデータベースである。典型的な構成では、２０４はＲＤＢ等により構成され、テーブル１０８をレコードデータの集合として格納する。ただし、本発明の原理上、分割個人情報ＤＢ２０３と結合許可用ＤＢ２０４は、同一のデータベースであっても構わない。
【００１９】
アプリケーション２０５は、分割用識別子付きデータ１０６、１０７のそれぞれを参照するアプリケーションである。ただし、１０６と１０７にある同一人のレコードデータを、同一人のものとして結合することはできない。アプリケーション２０６は、分割用識別子付きデータ１０６、１０７のそれぞれを参照するアプリケーションである。
【００２０】
ＩＣカード２０８は、識別子対応テーブル用秘密鍵２０７を格納する。識別子対応テーブル用秘密鍵２０７は、識別子対応テーブル用公開鍵１０５と対になっている鍵である。秘密鍵２０７と公開鍵１０５は非対称暗号で用いるものであり、公開鍵１０５で暗号化したデータは、秘密鍵２０７を用いて復号化する。実施例１では、秘密鍵２０７と公開鍵１０５は、システム２００の外部にある鍵生成プログラムを用いて予め生成し、秘密鍵２０７をＩＣカード２０８に、公開鍵１０５をデータ分割サーバ２０２に配置してあるものとする。ＩＣカード２０８は秘密鍵２０７を秘匿しており、実施例１の構成上、分割データを結合可能なアプリケーション２０６のみが秘密鍵２０７を使用できる。公開鍵１０５はデータ分割サーバ２０２が使用するが、秘密鍵２０７と異なり秘匿情報ではないため、どのコンピュータに知られても構わない。従って、公開鍵２０８をデータ分割サーバ２０２には通信ネットワークを通じて鍵生成プログラムから渡すことができる。
【００２１】
なお本発明の原理上、公開鍵１０５と秘密鍵２０７は少なくとも１組であるが、２組以上あってもよい。鍵の組みは、データ結合を実行できる権限の数、例えば結合を許可するユーザの数だけ用意することができる。また、分割個人情報ＤＢ２０３には、テーブル３００の個人情報を３個以上のテーブルに分割してもよい。
【００２２】
実施例１では、テーブル３００を２つの個人情報１０６と１０７に分割し、分割個人情報を結合する権限を２人のユーザＡ、ユーザＢに与えることを想定した例で説明する。システム２００が使用する秘密鍵２０７は２０７Ａ，２０７Ｂの二つがあり、それぞれをＩＣカード２０８Ａと２０８Ｂに格納する。一般に、２０７Ａと２０７Ｂは異なる暗号鍵である。２つの公開鍵１０５Ａと１０５Ｂはデータ分割サーバ２０２にまとめて格納される。二つの公開鍵２０５Ａ、２０５Ｂは、後述するテーブル３１１、３１２にそれぞれ対応づけられている。
【００２３】
図３はシステム２００の処理データを示している。テーブル３００は、ソースデータ１０１の例であり、１件のレコードが１人の情報主体の個人情報を表している。各レコードは、顧客番号３０１、氏名３０２、住所３０３、性別３０４、職業３０５という５つの項目から構成される。顧客番号３０１はレコードの識別子項目であり、テーブル３００中で各レコードに一意な値を格納する。
【００２４】
テーブル３０６は、分割用識別子付きデータ１０６の例であり、データ３００のうち氏名３０２、住所３０３の項目のみからなる。識別子Ａ３０８はレコードの識別子項目であり、各項目値は各レコードごとに異なる一意の値をとる。
【００２５】
テーブル３０７は、分割用識別子付きデータ１０７の例であり、データ３００のうち住所３０３、性別３０４、職業３０５の項目のみからなる。識別子Ｂ３０９、識別子Ｃ３１０はいずれもレコードの識別子項目であり、それぞれの項目において各項目値は各レコードごとに異なる一意の値をとる。一般に、識別子Ｂ３０９と識別子Ｃ３１０は異なる値をとる。
【００２６】
テーブル３１１は識別子対応テーブルであり、識別子対応テーブル暗号化装置１０４が内部的に保持するデータである。テーブル３１１は、テーブル３０６における識別子Ａ３０８と、テーブル３０７における識別子Ｂ３０９の対応を保持している。なお識別子Ａ３０８の項目値は、ランダムかつ一意なビット列であるが、図３では説明の便宜上、Ａ００１、Ａ００２などとしてある。テーブル３１１を用いることにより、テーブル３０６と３０７の、同一人の項目、すなわちテーブル３００において同じ顧客番号を付与されている項目を結合することができる。
【００２７】
テーブル３１２もテーブル３１１と同様、識別子対応テーブルであるが、対応関係を保持する識別子が異なり、識別子Ａ３０８と識別子Ｃ３１０の対応を保持している。
【００２８】
データ３１１、３１２は、外部に出力される際には識別子対応テーブル暗号化装置１０４により暗号化され、暗号化識別子テーブル１０８として２０４に格納される。暗号鍵及び暗号化されたデータは単なるビット列となるため、実施例１では図を省略するが、テーブル３１１用の公開鍵１０５Ａで暗号化した暗号化識別子テーブル１０８Ａを、秘密鍵２０７Ａで復号すると、テーブル３１１と同一のものを得ることができる。同様に、テーブル３１２用の公開鍵１０５Ｂで暗号化した暗号化識別子テーブル１０８Ｂを秘密鍵２０７Ｂで復号すると、テーブル３１２と同一のものを得ることができる。
【００２９】
テーブル３１３、３１７はデータ分割定義１０６のデータ例である。データ分割定義１０６のそれぞれのテーブルはハードディスク上ファイル等、永続的なデータとしてシステム管理者が用意しておく。テーブル３１３は、分割前の個人情報のソースデータの項目名３１４と、分割後の項目名３１５からなり、それぞれの項目の値は「テーブル名．項目名」の形式をとる。実施例１では、テーブル３００の各項目が、テーブル３０６、３０７に分割される事を示している。項目３１６は、ソースデータの項目が識別子として作用する識別子項目ならば、値としてＴＲＵＥをとり、ソースデータの項目が識別子項目でないならばＦＡＬＳＥをとる。実施例１では、識別子項目に該当するテーブル３００の顧客番号を含む各レコードにおいて、項目３１６の値がＴＲＵＥになっている。
【００３０】
なお、実施例１においてソースデータはテーブル３００一つのみであるが、識別子項目「顧客番号」を共通に持つ２個以上のテーブルをソースデータとする場合は、テーブル３１３をソースデータの数だけ用意することで対応できる。このとき、異なる分割後テーブルで共通の識別子項目を持たせたい場合は、分割後項目３１５に共通の識別子項目名を設定しておく。
【００３１】
また、実施例１において、テーブル３００の顧客番号をテーブル３０６もしくは３０７のどちらかの識別子項目として使う事も可能であり、個人情報を分割する効果は同様である。例えばテーブル３０６の識別子Ａに顧客番号を複製する場合は、テーブル３１７の第１レコードで「テーブル３００．顧客番号」を有するレコードの識別子項目３１６をＦＡＬＳＥに設定しておく。
【００３２】
テーブル３１７は、識別子対応テーブルの構成を定義する。各レコードが１個の識別子対応テーブルの構成であり、分割識別子生成装置１０３はテーブル３１７に従って識別子対応テーブルを生成する。実施例１では、第１レコードは識別子対応テーブル３１１を生成することを示し、また識別子対応テーブル３１１の暗号化には公開鍵１０５Ａを用いることを示している。第２レコードは識別子対応テーブル３１２を生成し、暗号化に公開鍵１０５Ｂを用いることを示している。
【００３３】
以下、テーブル３００を分割して、テーブル３０６、３０７、３１１、３１２を生成する、データ分割サーバ２０２の処理フローを図４を用いて説明する。処理フローが起動して初期化が実行された時点では、データ分割定義１０６、識別子対応テーブル用公開鍵１０５の各データはメモリに読み込まれている。初期化の時点で、テーブル３１３で識別子項目と定義されている識別子Ａ、識別子Ｂ、識別子Ｃそれぞれの項目値を生成するための乱数ＲＡ、ＲＢ、ＲＣを生成しておく。ＲＡ、ＲＢ、ＲＣはそれぞれ異なる値である。これらの乱数はステップ４０６で使用する。また初期化では、テーブル３１７のレコード件数の数だけ、識別子対応テーブルを用意し空値で埋めておく。実施例１では、テーブル３１１、３１２の空テーブルが生成される。
【００３４】
ステップ４０１は、テーブル３１３の分割前項目３１４に記載されたテーブルの全レコードを分割処理するループの条件判断である。実施例１ではテーブル３００の全レコードの処理が終わるまで、ステップ４０２以降をテーブル３００の各レコードに対して繰り返す。
【００３５】
ステップ４０２では、データ分割装置１０２がテーブル３００から１レコードを取り出し、全ての項目をメモリ内に展開する。また、テーブル３１３を参照して分割後項目３１５に従い、分割した結果を格納するメモリ上の領域を初期化する。実施例１では、識別子Ａ、氏名、住所の項目値を格納できるよう、テーブル３０６へのレコード出力用一時格納領域を初期化し、またこれとは別に識別子Ｂ、識別子Ｃ、住所、性別、職業の項目値を格納できるようテーブル３０７へのレコード出力用一時格納領域を初期化する。
【００３６】
ステップ４０３は、ステップ４０２で取り出したレコードの全項目を一つずつ処理するループの条件判断である。全項目の処理が終わるまで、ステップ４０４以降を繰り返す。
【００３７】
ステップ４０４は１個の項目を処理するループの条件判断である。ステップ４０４ではデータ分割装置１０２がテーブル３１３を参照して、処理中の項目名と分割前項目３１４が合致するレコードを特定し、特定された各レコードに関して、ステップ４０５以降を繰り返す。以下では、テーブル３００の第１レコードにある顧客番号「００１」を処理している場合を例に説明する。テーブル３１３の項目３１４には「テーブル３００．顧客番号」を有するレコードが３件あるため、ステップ４０５以降は３１３で合致したレコード３件のそれぞれについて実行される。
【００３８】
ステップ４０５ではデータ分割装置１０２が、ステップ４０４でテーブル３１３から抽出したレコードを構成する項目３１６の値により、識別子項目か否かを判定する。項目３１６がＴＲＵＥの場合は識別子項目であると判定され、ステップ４０６に進む。
【００３９】
ステップ４０６では、分割用識別子生成装置１０３が識別子を生成する。例えば、テーブル３００の第１レコードにある顧客番号「００１」をテーブル３１３の第１レコードに従って処理し、テーブル３０６の識別子Ａの値を生成する。ここでは、項目３１５は「テーブル３０６．識別子Ａ」であるため、識別子Ａ用に生成された乱数ＲＡを識別子の値とＸＯＲ演算し、この結果をハッシュ関数へ入力することにより識別子Ａの値を生成する。テーブル３１３の項目３１５では、テーブル名が異なっている場合でも、項目名が同一の場合は、乱数も同一のものを用いる。実施例１ではハッシュ関数にＳＨＡ１を用い、識別子Ａは１６０ビットの値になる。説明をわかりやすくするため図３においては、顧客番号「００１」を識別子Ａにハッシュ変換した値として、元の値にプレフィックス「Ａ」を付与した「Ａ００１」と表現している。
【００４０】
ステップ４０７では、分割識別子生成装置１０３が、生成した識別子「Ａ００１」をテーブル３０６へのレコード出力用一時格納領域に格納する。
【００４１】
ステップ４０８では、分割識別子生成装置１０３が、テーブル３１７を参照し、生成した識別子Ａの値「Ａ００１」をテーブル３１１の項目３０８、テーブル３１２の項目３０８に格納する。
【００４２】
また、テーブル３００の第１レコードにある顧客番号「００１」を処理する場合は、ステップ４０４で規定されるループにより、テーブル３１３の項目３１４に従って、ステップ４０５から４０８が繰り返され、識別子Ｂ、識別子Ｃの値が生成される。ステップ４０６では、乱数ＲＢを用いて顧客番号「００１」をハッシュ変換して識別子Ｂの値「Ｂ００１」を生成し、ステップ４０７でメモリ上の出力用レコードに格納する。ステップ４０８では、テーブル３１１の項目３０９に格納する。ただし、ステップ４０７から４０８を繰り返している間は、テーブル３１１の全て同じレコードの該当項目に格納されるため、結果として「Ａ００１」「Ｂ００１」というレコードがテーブル３１１に追加される。
【００４３】
識別子Ｃの値を生成するステップ４０６から４０８も同様であり、「Ｃ００１」がメモリ上の出力用レコードに格納され、またテーブル３１２の項目３１０に格納される。この結果、テーブル３１２においては、「Ａ００１」「Ｃ００１」というレコードが追加される。
【００４４】
一方、ステップ４０５において参照した項目３１６がＦＡＬＳＥの場合は識別子項目でないと判定され、ステップ４０９に進む。テーブル３００の第１レコードにある氏名「佐藤」を処理している場合、データ分割装置１０２はステップ４０４で特定された分割後項目３１５に基づいて、テーブル３０６へのレコード出力用一時格納領域における氏名項目に「佐藤」を格納する。
【００４５】
このように、ステップ４０３が規定するループでは１個のレコードの項目ごとに処理を実行し、またステップ４０４が規定する内側ループでは、１個のレコードの各項目値が該当するテーブル３１３のレコードごとに処理を実行する。ステップ４０２で読み込んだレコード全項目について処理が完了すると、ステップ４１０が実行される。ステップ４１０では、識別子Ａ、氏名、住所からなるテーブル３０６へのレコード出力用一時格納領域のデータをテーブル３０６に出力し、識別子Ｂ、識別子Ｃ，住所、性別、職業からなるテーブル３０７へのレコード出力用一時格納領域のデータをテーブル３０７に出力する。
【００４６】
なお、ステップ４１０では、テーブル３０６への出力レコードが一定件数になるまでメモリ上にバッファリングし、識別子Ａの降順または昇順でレコードを並べ替えてから出力しても良い。あるいは、レコード出力手段がバッファ内の各レコードに与える乱数の昇順または降順のいずれかに従ってレコード集合を並べ替えても良い。識別子Ａあるいはバッファ内の各レコードに与える乱数はランダムな値をとるため、並べ替えによりランダムソートする効果が得られる。これにより、テーブル３０６と３０７のレコードの対応関係を並び順から推測する事がより困難になる。テーブル３０７への出力でも同様の処理を行う事が可能である。
【００４７】
ステップ４０２以降の処理がテーブル３００の全レコードに対して実行されると、ステップ４１１に進む。
また、テーブル３１３が複数のテーブルからなる場合には、おのおののテーブルについてステップ４０１からステップ４０２を繰り返す。
ステップ４１１では、識別子対応テーブル暗号化装置１０４が公開鍵１０５Ａを用いてテーブル３１１を暗号化し、暗号化識別子対応テーブル１０８Ａを結合許可ＤＢ２０４に出力する。テーブル３１１で暗号化される項目は、テーブル３１３で識別子項目３１６がＴＲＵＥに設定されている項目である。実施例１では識別子Ａと識別子Ｂの両方が該当する。テーブル３１３の識別子項目３１６をＦＡＬＳＥに設定している場合、例えば、テーブル３０６の識別子Ａにテーブル３００の顧客番号を複製する場合は、識別子Ａは暗号化されず、識別子Ｂのみが暗号化される。
【００４８】
また、識別子対応テーブル暗号化装置１０４は公開鍵１０５Ｂを用いてテーブル３１２を暗号化し、暗号化識別子対応テーブル１０８Ｂを結合許可ＤＢ２０４に出力する。
以上がテーブル３０６、３０７、３１１、３１２を生成する、データ分割サーバ２０２の処理フローである。
【００４９】
実施例１で構成したテーブル３０６と３０７のそれぞれは、アプリケーション２０５からは参照できるが、同一人のレコードを結合できないようになっている。一方、アプリケーション２０６に関しては秘密鍵が得られていない状況ではアプリケーション２０５と同様であるが、ユーザＡが識別子対応テーブル用秘密鍵２０７Ａを与えた場合は、結合許可ＤＢ中の暗号化識別子対応データ１０８Ａを復号し、テーブル３１１を得る事ができる。このため、アプリケーション２０６は秘密鍵２０７Ａを持っている場合は、テーブル３０６と３０７の同一人のレコードを結合する事が可能になる。また、ユーザＢが秘密鍵２０７Ｂを与えた場合は、テーブル３１２を復号して同一人のレコードを結合する事が可能になる。
【００５０】
実施例１では識別子対応テーブルを複数持つことが可能なため、識別子対応テーブルの生成時に特定の情報主体に関するレコードを省略する事により、ユーザごとに結合可能なレコードを変更することも容易である。例えば、ステップ４１１においてテーブル３０６出力用の一時格納領域のデータもしくは３０７出力用の一時格納領域のデータを参照して項目値が特定の条件に該当する場合に、テーブル３１１もしくはテーブル３１２の識別子を消去する等の方法があり得る。
【００５１】
また、分割用識別子生成装置１０３の変更例として、識別子をシステム２００の内部で生成するのではなく、システム２００の外部に用意しておいたデータを読み込んで識別子を決定することも、実施例１の原理上容易である。上述のステップ４０６では、顧客番号と乱数をキーとしてハッシュ値により識別子を与えているが、ここで代わりにファイル等から入力した識別子を与えればよい。任意の識別子を与えることができるので、既存の会員ＩＤなどを流用することができ、システム移行がたやすくなるというメリットがある。
【００５２】
また、テーブル３０６及び３１１の識別子Ａにテーブル３００の顧客番号を複製している場合は、識別子対応テーブル３１１とテーブル３１２を独立に更新が可能である。そのため、鍵の紛失時に鍵を再発行してどちらかの識別子対応テーブルも更新しなければならない場合でも、他の秘密鍵を使用するアプリケーションは影響を受けずに済む。同様の理由により、実施例１は定期的に更新しないと鍵が失効するようにシステムを運用する事も容易である。
【００５３】
さらに、実施例１では、暗号化識別子対応テーブル１０８の生成用に、楕円鍵暗号などの非対称方式のブロック暗号を用いる。そのため、データ分割サーバ２０２へ配送する際に鍵が他者に知られてもよく、データ分割サーバ２０２に保管された鍵が漏洩したとしても、秘匿情報である暗号化識別子対応データ１０８が脅威にさらされる恐れはない。従って、対称方式の鍵を使う従来技術１などと比較して、データ分割サーバ２０２の運用が容易になるという利点もある。
【００５４】
なお、ステップ４１１における暗号化識別子対応テーブルの暗号化処理、もしくはアプリケーション２０６における復号化処理の速度が問題になる場合は、ＤＥＳ等の対称方式暗号（共通鍵暗号）を併用することで処理速度を改善できる。この場合、ステップ４１１の暗号化処理において、まず識別子対応テーブル暗号化装置１０４はＤＥＳ等の共通鍵をセッション鍵として生成する。セッション鍵は使い捨ての鍵である。次にセッション鍵で識別子対応テーブル３１１を暗号化し、続いてセッション鍵を公開鍵１０５Ａで暗号化し、これら２つの暗号化データをそれぞれ暗号化識別子対応テーブル１０８Ａに格納する。テーブル３１２の暗号化処理と出力処理も同様である。一般に対称方式暗号は非対称暗号方式よりも高速なアルゴリズムであり、処理速度の改善を期待できる。また、セッション鍵は使い捨てで保存されることはなく、通信路においても公開鍵で保護される。そのため上述した、非対称方式暗号を用いるメリットが損なわれることはない。
【実施例２】
【００５５】
図５のシステム５００は本発明の実施例２を示している。実施例２は、分割管理しない個人情報がシステム中に混在する場合に、分割管理で設定する結合の制約を回避しうる設定を検出し、アラートを出力するものである。
【００５６】
実施例１と比較して、データ分割サーバ２０２には、アクセス権チェック装置５０１が追加される。その他の装置構成は、システム２００と同様である。また分割個人情報ＤＢ２０３には、データ分割サーバ２０２により出力されたデータ１０６及び１０７の他に、システム５００の外部のプログラムがソースデータ１０１を複製して作成したデータ５０３が格納されている。データ複製定義５０５は、ソースデータ１０１から複製データ５０３を作り出した際に用いられた定義データであり、システム５００の外部から与えられる。アラート情報５０４はデータ分割サーバ２０２の出力である。
【００５７】
図６は、実施例２の処理データを示している。テーブル６００は、複製データ５０３の一例であり、データ３００を複製したデータが格納されている。項目６０１、６０２、６０３、６０４、６０５はそれぞれ項目３０１、３０２、３０３、３０４、３０５の複製項目である。
【００５８】
テーブル６０６は、データ複製定義５０５の一例である。ソーステーブル６０７、ソース項目６０６、複製テーブル６０９、複製項目６１０により、データ３００の各項目がデータ６００のどの項目に対応するかが示されている。なお実施例２では、説明を簡単にするため、テーブル６００とテーブル３００で同じ項目名を使用しているが、テーブル６００の項目名はテーブル３００と異なっていても良い。
【００５９】
テーブル６１１は、アクセス権設定５０２の一例である。アクセス権設定５０２はデータベースの管理用情報であり、どのアプリケーションがどのテーブルを参照可能かを示している。項目６１２にはアプリケーション名が設定されているが、アプリケーションの代わりにデータベースのユーザ名を用いる事も可能である。また、実施例２では、分割用識別子付きデータ１０６（テーブル３０６）、１０７（テーブル３０７）の全ての項目は、全てのアプリケーションからアクセス可能なものとする。
【００６０】
以下図７により、実施例２の詳細を説明する。図７はアクセス権チェック装置５０１の処理７００を示したものである。処理７００は、データ分割定義１０６の新規設定後、もしくは設定変更時にシステム管理者が起動する。
【００６１】
ステップ７０１では、テーブル３１３をメモリ上に読み込み、項目３１５に定義されているテーブルの識別子以外の項目構成をリストアップする。実施例２ではテーブル３０６と３０７のそれぞれについて、項目集合Ａ＝｛氏名、住所｝、Ｂ＝｛住所、性別、職業｝を得る。ただし、テーブル３００と３０６、テーブル３００と３０７で項目名が異なっている場合、集合の各要素はテーブル３００における項目名で置換する。次に、項目３１４に定義されている項目うち、識別子項目に該当する項目の集合をリストアップする。実施例２では識別子項目集合Ｉ＝｛顧客番号｝を得る。
【００６２】
ステップ７０２では、テーブル３０６のみで参照可能な項目集合Ａ’と、３０７のみで参照可能な項目集合Ｂ’を特定する。二つの集合の積演算を×、差演算を−とすると、Ａ’＝Ａ−Ａ×Ｂ＝｛氏名｝、Ｂ’＝Ｂ−Ａ×Ｂ＝｛性別、職業｝を得る。
【００６３】
ステップ７０３では、まずテーブル６１１を参照し、各アプリケーションがアクセス可能（参照可能）な、分割用識別子付きデータ以外のテーブル集合Ｔを得る。実施例２ではアプリケーション２０５についてはＴ＝｛｝であり、アプリケーション２０６についてはＴ＝｛テーブル６００｝となる。
【００６４】
次に、Ｔが空でないアプリケーションの各々について、ステップ７０５から７０８を繰り返す。アクセス可能なテーブルの項目構成をチェックし、テーブル３０６と３０７の結合データを得る可能性をチェックする。
【００６５】
まずステップ７０５では、空でないテーブル集合Ｔ＝｛Ｔ１，Ｔ２，．．．，Ｔｎ｝のそれぞれの要素をテーブル６０６の項目６０９と６１０に照らし合わせ、一致するレコードのソース項目６０８をアクセス可能な項目集合Ｃとしてリストアップする。結果として、テーブルＴ１の項目集合Ｃ１、Ｔ２の項目集合Ｃ２，．．．，Ｔｎの項目集合Ｃｎが得られる。実施例２ではＣ１＝｛顧客番号、氏名、住所、性別、職業｝のみが得られる。
【００６６】
次にステップ７０６では、項目集合Ｃ１，Ｃ２，．．．，Ｃｎをそれぞれが有する識別子項目でグルーピングする。識別子項目集合Ｉ＝｛ｉ１，ｉ２，．．．，ｉｍ｝であるとする。まずＣ１，Ｃ２，．．．，Ｃｎのうち識別子項目ｉ１を含む項目集合を特定し、特定された全ての項目集合の和集合によりＧ１を得る。次に、識別子項目ｉ２を含む項目集合を特定し、特定された全ての項目集合の和集合によりＧ２を得る。このようにしてｍ個の識別子項目に対して、Ｇ１，Ｇ２，．．．，Ｇｍが得られる。Ｇ１，Ｇ２，．．．，Ｇｍは、識別子項目をキーとして結合できる項目の集合を表している。実施例２ではＩ＝｛顧客番号｝、Ｃ１＝｛顧客番号、氏名、住所、性別、職業｝であるから、Ｇ１＝｛顧客番号、氏名、住所、性別、職業｝のみが得られる。
【００６７】
ステップ７０７では、Ｇ１，Ｇ２，．．．，Ｇｍのそれぞれを検査し、項目集合Ａ’とＢ’の要素の組み合わせのうち、項目集合Ｇに出現するものを分割違反項目組の集合Ｄとしてリストアップする。実施例２においてはＡ’＝｛氏名｝とＢ’＝｛性別、職業｝であるから、Ａ’とＢ’の要素の組合せは｛氏名、性別｝と｛氏名、職業｝である。これらをＧ１＝｛顧客番号、氏名、住所、性別、職業｝と比較し、結果として分割違反項目組集合Ｄ＝｛｛氏名、性別｝、｛氏名、職業｝｝になる。
【００６８】
ステップ７０８、７０９では、Ｄが空で無い場合にアクセス権チェック装置５０１がアラートを出力する。装置５０１によるアラートの意味は、分割用識別子付きデータの結合データと同等のデータが、別のテーブルに存在するということである。実施例２ではテーブル６１２がアラートである。テーブル６１２は、例えばシステム５００の外部でシステム管理者向けの画面に表示される。テーブル６１２の１行目は、アプリケーション２０６がテーブル６００から、氏名と性別の組みを得られることを示している。同様に２行目は、アプリケーション２０６がテーブル６００から、氏名と職業の組みを得られることを示している。
【００６９】
以上が実施例２の処理である。システム５００のテーブル３０６と３０７は、本来、暗号化識別子対応テーブル１０４が無い限りは、同一人について氏名と性別、あるいは氏名と職業の結合データを得られないよう設計されている。しかし、テーブル６００のようなテーブルデータがシステムに混在する場合、分割による結合の制約が回避されることがある。実際の情報システムにおいては、個人情報を格納する複数のデータベースが配置される上、新たな機能やサービスを追加するため、部分的にデータベースの追加、修正を繰り返すことは珍しくない。このようにシステムに新旧のデータベースが入り交じる環境で分割された個人情報データベースを構築して運用する場合であっても、実施例２を用いれば、複数のデータベースの項目に与えたアクセス権の整合性をチェックすることが可能となる
【産業上の利用可能性】
【００７０】
本発明は従業員情報、課金情報、医療情報、公文書等の個人情報の管理に利用可能である。
【図面の簡単な説明】
【００７１】
【図１】本発明の基本構成を示す図である。
【図２】本発明の実施例１のシステム構成図である。
【図３】本発明の実施例１における処理データである。
【図４】本発明の実施例１の処理フローである。
【図５】本発明の実施例２のシステム構成である。
【図６】本発明の実施例２における処理データである。
【図７】本発明の実施例２の処理フローである。
【符号の説明】
【００７２】
１００    システム
１０１    ソースデータ
１０２    データ分割装置
１０３    分割用識別子生成装置
１０４    識別子対応テーブル暗号化装置
１０５    識別子対応テーブル用公開鍵
１０６    データ分割定義
１０６    分割用識別子付きデータ
１０７    分割用識別子付きデータ
１１１    メモリ
１１２    ハードディスク
１１３    入力装置
１１４    表示装置
１１５    通信インタフェース
２００    システム
２０１    個人情報ＤＢ
２０２    データ分割サーバ
２０３    分割個人情報ＤＢ
２０４    結合許可用ＤＢ
２０５    アプリケーション
２０６    アプリケーション
２０７    識別子対応テーブル用秘密鍵
２０７    秘密鍵
２０７Ａ    秘密鍵
２０７Ｂ    秘密鍵
２０８Ａ    ＩＣカード
２０８Ｂ    ＩＣカード
３００    テーブル
３０１    顧客番号
３０２    氏名
３０３    住所
３０４    性別
３０５    職業
３０６    テーブル
３０７    テーブル
３０８    識別子Ａ
３０９    識別子Ｂ
３１０    識別子Ｃ
３１１    識別子対応テーブル
３１２    識別子対応テーブル
３１３    テーブル
３１４    分割前項目
３１５    分割後項目
３１６    識別子項目
３１７    テーブル
５００    システム
５０１    アクセス権チェック装置
５０２    アクセス権設定
５０３    複製データ
５０５    データ複製定義
６００    テーブル
６０１    複製項目
６０６    ソース項目
６０９    複製テーブル
６１０    複製項目
７００    処理
【図１】
2007317075.tif 000003
【図２】
2007317075.tif 000004
【図３】
2007317075.tif 000005
【図４】
2007317075.tif 000006
【図５】
2007317075.tif 000007
【図６】
2007317075.tif 000008
【図７】
2007317075.tif 000009