(57)【要約】【課題】悪意を持った内部関係者であっても機密情報を大量に盗み出すことが実質的に出来ないシステムを提供する。【解決手段】一組の要素情報を幾つかに分割して管理する情報管理システムにおいて、前記一組の要素情報の幾つかに対して割り当てられる各要素キーを関数とするユニークな間接要素キーを生成するデータベース管理システム４２０と、前記間接要素キーを記憶するデータベース４１０とを備える。データベース管理システム４２０は、素因数分解、スライド関数、乱数表のいずれかを用いて前記間接要素キーを生成するとよい。また、前記間接要素キーから前記要素キーを割り出すことによって、当該要素キーに割り当てられた要素情報を導出するための突合機構４２１を備えるとよい。【選択図】図４
2012038097.tif 000002
【特許請求の範囲】
【請求項１】
一組の要素情報を幾つかに分割して管理する情報管理システムにおいて、
前記一組の要素情報の幾つかに対して割り当てられる各要素キーを関数とするユニークな間接要素キーを生成する生成手段と、
前記間接要素キーを記憶する記憶手段とを備える情報管理システム。
【請求項２】
前記生成手段は、素因数分解、スライド関数、乱数表のいずれかを用いて前記間接要素キーを生成する請求項１記載の情報管理システム。
【請求項３】
前記間接要素キーから前記要素キーを割り出すことによって、当該要素キーに割り当てられた要素情報を導出する導出手段を備える請求項１記載の情報管理システム。
【請求項４】
前記一組の要素情報を構成する一の要素情報に割り当てられた要素キーに基づいて他の要素情報に割り当てられた要素キーを特定する特定手段を備える請求項１記載の情報管理システム。
【請求項５】
前記特定手段は、スライド関数又はスライド関数の逆関数を用いて前記特定を行う請求項４記載の情報管理システム
【請求項６】
前記一組の要素情報は木構造であり、
前記割当手段は、前記木構造の節点にある要素情報に対応した要素キーとして、複数の節点の中の根を基点として通し番号を割り当てる請求項１記載の情報管理システム。
【請求項７】
さらに、
情報管理システム本体が行う仕事に影響を及ぼさない条件で所定の負荷のもとで演算処理を実施する実施手段と、
前記情報管理システム本体が稼動する時間帯の平均アクセス量に基づいて前記実施手段による実施回数を決定する決定手段を備える請求項１記載の情報管理システム。
【請求項８】
一組の要素情報を幾つかに分割して管理する情報管理方法において、
前記一組の要素情報の幾つかに対して割り当てられる各要素キーを関数とするユニークな間接要素キーを生成する生成ステップと、
前記間接要素キーを記憶する記憶ステップとを含む情報管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報管理システム及び方法に関し、特に、データを分散管理するデータベースの処理技術において、データベース上に管理される機密情報の大量漏洩を防止する情報管理システム及び方法に関する。
【背景技術】
【０００２】
現代的な情報システムの多くは、その一部にデータベースを擁し、データベース上には例えば個人情報といった第三者に漏洩すべきでない機密情報を含むことが一般的である。このようなデータベース上の機密情報漏洩を防止する手法が色々研究されているが、近年、機密情報をそれ単体では意味をなさない小片に分割し、別個に保存するという分散管理と呼ばれる手法が注目されている。
【０００３】
図１、図２及び図３を用いてこの分散管理の概要を説明する。機密情報である元情報は図１に示すように要素情報である会員番号、名前、住所及び電話番号からなっているとする。この元情報１０１を、図２に示すように、会員番号と各会員番号を識別する会員番号キーとからなる要素情報２０１と、名前と各名前を識別する名前キーとからなる要素情報２０２と、住所と各住所を識別する住所キーとからなる要素情報２０３と、電話番号と各電話番号を識別する電話番号キーとからなる要素情報２０と４に分割して、データベース上に保存する。更に通常は、この要素情報２０１、要素情報２０２、要素情報２０３及び要素情報２０４の他に、各要素情報の要素キー間の関連を表す図３に示したような連結表３０１を用意してこれも同時に保存する。
【０００４】
例えば、元情報１０１の項番５は、会員番号「０００５」と名前「山田太郎」と住所「東京都港区」及び電話番号「▽▽▽▽▽▽▽▽▽▽」から構成されており、それぞれの要素情報に対応した要素キーは会員番号キー「２１３」、名前キー「２２１」、住所キー「２３４」及び電話番号キー「２４７」である。この時、連結表３０１は、会員番号キー「２１３」、名前キー「２２１」、住所キー「２３４」及び電話番号キー「２４７」が１つの行を構成しており、これが会員番号と名前及び住所電話番号を結び付けていることが分かる。このように連結表３０１を用いれば、要素情報２０１、要素情報２０２、要素情報２０３及び要素情報２０４から元情報１０１を容易に復元することが出来る。
【０００５】
尚、機密情報の分散管理においては、図２に示したように全ての要素情報を分散して管理しても良いが、要素情報間の関連が分かっても機密保持上問題にならないものは一括管理する方が効率的である。例えば、図１の元情報でいうと、要素情報２０３の住所と要素情報２０４の電話番号を合わせて管理してもよい。この場合は、住所と電話番号の一つの組に対して一つの要素キーが与えられることになる。ともあれ、上記要素情報２０１、要素情報２０２、要素情報２０３、及び要素情報２０４と連結表３０１をそれぞれ異なる記憶装置に保存すれば、５つの記憶装置上にまたがるデータを全て盗み出さない限り、意味のある元情報を復元することが出来ない。このように分散管理という手法を用いれば、悪意ある第三者によるデータの大量漏洩を大幅に抑止できるようになる。
【０００６】
【特許文献１】特開平１１−２７２６８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記分散管理の手法を用いても、正規の利用者やシステム管理者のような内部関係者が悪意を持った場合には、復元後の情報を取り出すことが出来るので、機密情報の漏洩を避けることが出来ない。なお分散管理以外にも機密漏洩を防止する技術は多々有るが、そのいずれもが特に悪意を持った内部関係者に対しては防止効果を持っていない。例えば、機密情報にアクセスする権利をある特定の管理者にのみに付与するといったアクセス制限がなされたりしている。しかしこの手法もアクセスの権利を有したものが悪意をもっていれば、情報漏洩を防ぐことが出来ない。このことは、機密情報の大量漏洩事件の多くが内部関係者による犯行である現実に反映されていると思われる。
【０００８】
本発明は上記点に鑑みてなされたもので、悪意を持った内部関係者であっても機密情報を大量に盗み出すことが実質的に出来ないシステムを提供することを目的にしている。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明は、一組の要素情報を幾つかに分割して管理する情報管理システムにおいて、前記一組の要素情報の幾つかに対して割り当てられる各要素キーを関数とするユニークな間接要素キーを生成する生成手段と、前記間接要素キーを記憶する記憶手段とを備える。前記生成手段は、素因数分解、スライド関数、乱数表のいずれかを用いて前記間接要素キーを生成するとよい。また、前記間接要素キーから前記要素キーを割り出すことによって、当該要素キーに割り当てられた要素情報を導出する導出手段を備えるとよい。
具体的には、一般的に機密情報として盗みたい情報は、意味のある機密情報、例えば図１に示す元情報１０１のようなものである。分散管理されたデータベースからいずれかの要素情報だけを盗み出したのでは（たとえば、会員番号「０００５」だけ、或いは、名前「山田太郎」だけ）、その目的を達することが出来ず、必ず復元処理を行って意味のある元情報にすることが必要になる。例えば、悪意を持った管理者といえども、上記復元処理をしなければ、意味のある機密情報を盗み出すことが出来ない。本発明は、分散管理されたデータベースのこのような性質に鑑みてなされたもので、要素情報から元情報に復元する復元処理に工夫を凝らせたものである。
【００１０】
一般的な情報システムを表す図４を用いて、本発明の概要を説明する。機密情報はデータベース４１０に要素情報に分割された形で保管されている。説明を簡単にするために、このデータベース４１０に保管されているのは、図２に示した要素情報２０１、要素情報２０２、要素情報２０３、及び要素情報２０４と図３に示した連結表３０１であるとする。当然、元になる機密情報は、図１に示した元情報１０１である。システム利用者４４０は、アプリケーションシステム４３０とデータベース管理システム４２０を経由して、データベース４１０内の要素情報２０１、要素情報２０２、要素情報２０３及び要素情報２０４にアクセスし、所望の機密情報或いはこれに割り当てられている要素キーなどを取得することになる。
【００１１】
例えば、システム利用者４４０が会員番号「０００５」の人の名前と住所を要求したとする。アプリケーションシステム４３０からデータベース管理システム４２０にこの要求が伝えられると、データベース管理システム４２０のアクセス制御部４２２がデータベース４１０内にある要素情報２０１にアクセスし、アクセス制御部４２２は、会員番号「０００５」に対応する会員番号キー「２１３」をピックアップする。突合機構４２１は、連結表３０１を参照して、会員番号キー「２１３」に関連した要素情報は、名前キー「２２１」と住所キー「２３４」、及び電話番号キー「２４７」であることを割り出し、アクセス制御部４２２は、要素情報２０２、要素情報２０３、及び要素情報２０４にアクセスし、「山田太郎」という名前と「東京都港区」という住所及び「▽▽▽▽▽▽▽▽▽▽」という電話番号を取り出してきてアプリケーションシステム４３０に伝え、その結果、システム利用者が所望のデータを入手できることになる。突合機構４２１による１組の要素情報の要素キー（例えば会員番号「０００５」の要素キー「２１３」）から、関連する要素情報の要素キー（例えば、名前「山田太郎」の要素キー「２２１」と住所「東京都港区」の要素キー「２３４」及び電話番号「▽▽▽▽▽▽▽▽▽▽」の要素キー「２４７」）を算出する処理を突合処理と呼ぶ。図４のような分散管理されたデータベース４１０から意味のある情報を引き出そうとした場合、この突合処理は必須である。
【００１２】
この事は、外部からこのシステムに侵入して機密情報を盗み出そうとする場合も、内部の関係者が悪意を持って機密情報を盗み出す場合でも同様である。従って、この処理に時間が掛かるようにして、データベース管理システム４２０の処理能力限界まで活用しても、例えば１秒に１０回の突合処理しか出来ないようにすれば、悪意の有る内部の関係者であっても、例えば２０万件の機密情報を盗み出すのに最短でも５時間半以上データベース管理システムを占有しなければならないことになる。通常業務において、この情報システムへの情報請求のアクセス回数が平均９回／秒であったとすると、平均して１秒間に突合処理を９回行う事になる。一方、このデータベース管理システムの処理能力限界は突合処理が１０回である。従って、通常業務以外で行える突合処理は１回／秒しかないので、仮に２０万件の機密情報を盗み出すのには５５時間以上連続してデータベース管理システムを動かし続けなければならない。
【００１３】
より一般的に言えば、通常業務での１秒間のアクセス件数をＮ件として、情報システムの処理能力を限界まで使った時に１秒間に（Ｎ＋α)件の処理になるように突合処理時間を設定すれば、Ｍ件の機密情報を盗み出すのにＭ／α秒掛かることになる。このＭ／αを大きく設定することが機密情報の大量流出を防ぐために重要になる。
【００１４】
しかし、一般的に言って、例えば図２のような単純な連結表を使用すると突合処理の時間が非常に短く、データサーバ管理システムの１秒間の限界処理件数は、数千件〜数万件といった非常に大きな値となる。例えば１秒間の平均アクセス件数が１０件で、データサーバ管理システムの限界処理件数が小さく見積もって１０００件／秒であるとすれば、前記αは９９０という値になり、盗み出したい機密情報が２０万件の場合には、通常業務を行いながらでも３分強の時間があればよいということになってしまう。これでは、機密情報漏洩の抑止を図ることができない。従って、何らかの方法で突合処理に要する時間を延ばす必要がある。しかも、悪意を持った内部関係者でも簡単に変更できないようなものでなければならない。今後の便利のために、突合処理の時間を制御することを負荷制御という。
【発明の実施の形態】
【００１５】
以下では突合処理の負荷制御の手法について、実施例を用いて詳しく説明する。なお特別に断らない限り、図５に示すように機密情報である元情報５０１は、Ａｍ，ｌで表される要素情報からなり、Ｍ行Ｌ列の形態をしているとする。図１の具体例で言うと、Ｍ＝７、Ｌ＝４で、Ａ１，１は会員番号「０００１」に、Ａ１，２は名前「丸山花子」、Ａ１，３は住所「東京都品川区」、Ａ１，４は電話番号「××××××××××」に、またＡ７，１は会員番号「０００７」に、Ａ７，３は住所「北海道札幌市」に相当する。今考えている情報管理システムでは分散管理を前提としているので、図５の元情報５０１は、Ｎ個に分割して、図６に示すように、別々の要素情報Ｂｍ，ｎとして要素キーＹｍ，ｎと共にデータベース４１０で保管管理されている。ここでｍ、ｎは、１≦ｍ≦Ｍ、１≦ｎ≦Ｎ、で且つＮ≦Ｌである。尚、図６には、便宜上、元情報５０１と同じ順序で要素情報が並んでいるが、このままでは連結表のようなものを使わなくても要素情報間の関連が簡単に分かってしまうので、データベース管理システム４１０で要素情報の並べる順序は変更するのが一般的である。
【００１６】
Ａｍ，ｌとＢｍ，，ｎの関係は、通常は、ｎ≦Ｎ−１ならばＢｍ，ｎ＝Ａｍ，ｎでｎ＝Ｎの時は、Ｂｍ，Ｎ＝[Ａｍ，Ｎ，Ａｍ，Ｎ＋１，，・・・・，Ａｍ，Ｌ−１，Ａｍ，Ｌ]である。もちろんＡｍ，ｌとＢｍ，ｎの関係はこの限りではなく、例えば、Ｋ＜Ｊとして、Ｂｍ，Ｋ=［Ａｍ，Ｋ，Ａｍ，Ｋ＋１，・・・・、Ａｍ，Ｊ−１］及びＢｍ，Ｊ=［Ａｍ，Ｊ，Ａｍ，Ｊ＋１，・・・・，Ａｍ，Ｌ］のように、複数個の要素情報を一まとめにしたものを複数個設けてもよい。
【００１７】
図２の具体例では、Ｍ＝７、Ｌ＝４、Ｎ＝４で、この場合はＬ＝Ｎなので、全ての（ｍ，ｎ）の組についてＢｍ，ｎ＝Ａｍ，ｎである。また、Ｙｍ，ｎについて、図２の具体例に当てはめると、Ｙ１，１は「２１１」、Ｙ１，２は「２２４」、Ｙ１，３は「２３１」でＹ１，４は「２４２」である。図６のように分割管理された情報の突合処理における負荷制御の手法で重要なのは、Ｎ個に分割された要素情報に対応する各要素キーの生成の仕方と、ある要素キーが指定された時に、その要素キーから如何にして関連する要素情報の要素キーを探し出すかというアルゴリズムを用いることである。以下の実施例を用いて要素キーの生成法とある要素キーが指定された時、データベース管理システム４１０で如何に関連した要素情報の要素キーを探し出すかを詳しく説明する。
【００１８】
前述したように、これまでの機密情報の分散管理システムにおいては、データベース管理システム４２０及びデータベース４１０で要素情報を分散管理すると共に、図３に示した連結表３０１または図７に示したような連結表７０１をデータベース管理システム４１０で作成し、データベース４１０で保管するのが一般的である。連結表は、各要素キー間の関連を直接表しており、従って、悪意をもった内部関係者が連結表を解析すれば、各要素キー間の関連を探る突合処理が短時間で終ってしまうことに問題があった。これを防止するためには、突合処理がより複雑になるように、いわゆる連結表を作らずに別の方法で要素キー間の関連付けをして、且つ突合機構４２１におけるその突合処理の負荷が重くなるようにする方法か、いわゆる連結表は作るが、これに工夫を加えて各要素キー間の突合処理の負荷が重くなるようにする方法のいずれかを採用すれば良い。また突合処理の負荷は、実際のシステムの構成や機密情報への正常なアクセス頻度などにより、その重さを変える必要がある。従って、突合処理の負荷の重さは制御できるすなわち、同じアルゴリズムを用いて突合処理の負荷を大きく変えられることが望ましい。このようなアルゴリズムをここでは負荷制御の方法と呼ぶ。
【００１９】
以下では、まずいわゆる連結表を作らない場合の、突合処理における負荷制御の方法について実施例を用いて説明する。
【実施例】
【００２０】
（実施例１）
【００２１】
いわゆる連結表を作らずに、突合処理における負荷を重くするために、突合機構４２１は、素因数分解法を用いる。この手法においては、要素キーの決定を２段階に分けて行う。第１の段階では、要素情報に含まれるデータに、一意に識別する値としての要素キーを適宜割り当てる。第２の段階では、データベース管理システム４２０は、一意性を保ちつつこの関連する複数の要素キーの関数として別の値を生成する。この生成された値を間接要素キーと呼び、本実施例では、データベース管理システム４２０によって最初に割り当てた要素キーの代わりに要素情報と共に保管する。以下実施例を用いて具体的に説明する。
【００２２】
データベース管理システム４２０は、図６に示す分散管理された要素情報ｂ１，ｂ２，・・・・，ｂＮの全ての要素キーＹｍ，ｎを自然数の中から選ぶ。この時、データベース管理システム４２０は、Ｙｍ，ｎがｍ≠ｍ’の時、Ｙｍ，ｎ≠Ｙｍ’，ｎという条件を満足するように選ぶ。具体的には、データベース管理システム４２０は、要素キーＹｍ，ｎの中で最大のものがα桁であるとして、次の式で表されるＸｍ，ｎ
Ｘｍ，ｎ＝Ｙｍ，ｎ＊１０α＋Ｙｍ，ｎ＋１；ｍ＝１〜Ｍ，ｎ＝１〜Ｎ−１＆Ｘｍ，Ｎ＝Ｙｍ，Ｎ＊１０α＋Ｙｍ，１・・・・（１）
を求める。ここで、“＊”は乗算を表すものとする。但し、ｎ＝Ｎの時はまた、αはＹｍ，ｎの中の最大のものの桁数としたが、最大のものの桁数以上の自然数でも良い。例えば、最大のＹｍ，ｎが３桁であるとすると、α＝３でもα＝４であっても構わない。αがＹｍ，ｎの最大のものの桁数に等しい時、例えばＸｍ，ｎは、Ｙｍ，ｎを単なる数字列「Ｙｍ，ｎ」と看做して、「Ｙｍ，ｎ」「Ｙｍ，ｎ＋１」のように単に数字列「Ｙｍ，ｎ」を順番に並べたようになっている。例えば、Ｙｍ，１＝「１１１」、Ｙｍ，２＝「２２２」、・・・・、Ｙｍ，Ｎ＝「ＮＮＮ」で、α＝３の時は、Ｘｍ，１＝「１１１２２２」である。同様にＸｍ，２＝「２２２３３３」、Ｘｍ，Ｎ＝「ＮＮＮ１１１」で、単に２つの数字を並べた数列になっている。もしα＝４とした時は、Ｘｍ，１＝「１１１０２２２」のように数字列「Ｙｍ，ｎ」の間に０が１つずつ入った数字列が出来ることになる。同様にα＝５とした時は、要素キーの間に０が２つずつ入った数字列が出来る。この要素キーの数字列の間に入っている「０」は何の意味もなしていないので、「０」以外の他の数字列が入っても良い。
【００２３】
次に、このようにして作成したＸｍ，ｎを素因数分解し、得られたどの素因数よりも大きな素数を１つ選択する。これをＰｍ，ｎとした時、Ｚｍ，ｎ＝Ｘｍ，ｎ＊Ｐｍ，ｎなるＺｍ，ｎを計算し、これを要素キーＹｍ，ｎの間接要素キーとする。図８に、図６の各要素キーを間接要素キーに代えた要素情報群を示す。機密情報の分散管理システムにおいて、ここで述べた素因数分解法を使う場合は、図８に示した要素情報だけを複数のサーバに分散して保管することになる。
【００２４】
尚、Ｐｍ，ｎとして、Ｘｍ，ｎを素因数分解した時に得られるどの素因数よりも大きな素数としたが、論理的には、Ｘｍ，ｎの値を知らない状態で、Ｚｍ，ｎを素因数分解した時に、Ｘｍ，ｎを素因数分解した時に得られる素因数以外の素数を抽出できるようになっていれば、Ｐｍ，ｎを選ぶルールは何でも良い。例えば、単純にＸｍ，ｎよりも大きな素数としても良い。また例えば、Ｘｍ，ｎを素因数分解した時に得られる全ての素因数より大きな３つの素数を選ぶ、というルールでも良い。この場合、選んだ３つの素数の積を上記議論のＰｍ，ｎとすれば良い。実際に、Ｐｍ，ｎをどう選ぶかは、突合処理の負荷をどの程度にするかによって決めることになる。一般的に大きな素因数を持つ数の素因数分解は時間が掛かるので、Ｐｍ，ｎは、Ｘｍ，ｎの素因数分解に現れる素因数よりかなり大きな素数を選ぶことが多くなる。
【００２５】
一方、Ｘｍ，ｎの桁数は予め分かっているのだからＺｍ，ｎを素因数分解した時に、最大の素因数であるＰｍ，ｎを求めないでも、得られた素因数を小さい方から順次掛けていって、Ｘｍ，ｎの桁数に達したところで素因数分解を打切っても、Ｘｍ，ｎが求められてしまうという難点がある。これを未然に防ぎ、Ｚｍ，ｎからＸｍ，ｎを求めるのに確実にＰｍ，ｎを計算で求めさせるための好適な実施例は、Ｚｍ，ｎの代わりにＷｍ，ｎ＝Ｚｍ，ｎ＊Ｆ（Ｐｍ，ｎ）を使用することである。ここで、Ｆ（Ｐｍ，ｎ）は、Ｐｍ，ｎの関数で、Ｐｍ，ｎを与えた時に一意に定まるもので、且つ、Ｆ（Ｐｍ，ｎ）を素因数分解した時に得られる全ての素因数がＰｍ，ｎより小さいという条件を満たせば、どんな関数でも良い。例えば、Ｐｍ，ｎの上位一桁あるいは上位二桁（下位でも良いが０でないことを担保するためには、上位の方が簡単）の数値でも良いし、Ｐｍ，ｎの各桁の数を足したものとしても、またＦ（Ｐｍ，ｎ）＝（Ｐｍ，ｎ−１）÷２のような関数でも良い。
【００２６】
より具体的な実施例として、例えば、図１を元情報とする機密情報を、図２にあるような要素情報に分けて保管し、それぞれの要素情報には、図２に示した要素キーが割り当てられているものに、上記素因数分解法を適用した場合を考える。この場合は、要素キーは全て３桁なので、簡単のためにα＝３とする。全てのｍに対して、前記Ｘｍ，ｎは、図１と図２から簡単に作ることが出来る。すなわち、Ｘ１，１は、会員番号「０００２」と一対の会員番号キー「２１１」と、会員番号「０００２」に対応する「鈴木洋一」と一対の名前キー「２２４」とを組合わせた「２１１２２４」となり、以下同様に、会員番号「０００２」に係る各キーを組合わせることによって、Ｘｍ，ｎを作ればよい。この結果を図９に示す。更に図１０に、図９のＸｍ，ｎの値を素因数分解したもの、及びＸｍ，ｎの素因数分解で得られた素数より大きな素数Ｐｍ，ｎ（この場合は、Ｘｍ，ｎの素因数分解で得られた素数の中の最大素数より大きな素数で最小のものとしてある。）、更に、Ｚｍ，ｎ＝Ｘｍ，ｎ＊Ｐｍ，ｎを示してある。このＺｍ，ｎを、元の要素キーの代わりに間接要素キーとしても良いが、前述のことから、より好適な実施例として、このＺｍ，ｎにＦ（Ｐｍ，ｎ）を掛けたＷｍ，ｎを間接要素キーとした方が良い。ここでは、Ｆ（Ｐｍ，ｎ)として、Ｐｍ，ｎの各桁の数値を加算するという関数であるとする。前述の図１０にＦ（Ｐｍ，ｎ)及びＷｍ，ｎ＝Ｚｍ，ｎ＊Ｆ（Ｐｍ，ｎ）も示す。更に、図２の会員番号キー、名前キー、住所電話番号キーの各要素キーの変わりにＷｍ，ｎを間接要素キーとして代入し、間接要素キーの降順に並び替えたものを図１１に示す。図９〜図１０に示す各内容は、データベース管理システム４２０によって作成される。
【００２７】
ここでは、図４のデータベース４１０に図１１に示す情報が保管されているとして、システム利用者４４０の情報引き出しに対して如何にして情報を取得するかを説明する。システム利用者が例えば会員番号「０００５」の名前と住所及び電話番号を知りたいというリクエストをアプリケーションシステム４３０に発行したとする。アプリケーションシステム４３０はデータベース管理システム４２０にその要求を伝える。するとデータベース管理システムでは、アクセス制御部４２２が、会員番号の保管されている要素情報２０１にアクセスし会員番号「０００５」の間接要素キーが「９２３５０２７９５２」であることをピックアップし、突合機構４２１で、その素因数分解を行い、「９２３５０２７９５２」」＝「２＊２＊２＊２＊１３１＊２６９９＊２７０７」が得られる。引き続き、突合機構４２１で、最大の素数「２７０７」の各桁を足して「２＋７＋０＋７＝１６」を得て、間接要素キーの「９２３５０２７９５２」を、１６で割り、更に２７０７で割って「２１３２２１」を得る。これで要素情報２０２の名前キーが「２２１」であることが判明する。
【００２８】
次にアクセス制御部４２２によりデータベース４１１の要素情報２０２にアクセスして、１つの間接要素キーを取り出してくる。例えば取出してきたのが第１行目の間接要素キー「２６０１６７９５」だとすると、突合機構４２１で上記と同様の手法により素因数分解をおこなう。その結果は「３＊３＊３＊３＊５＊７＊７＊１９＊２３」になる。最大素数の各桁を足すと２＋３＝５で、この場合のＦ（Ｐｍ，ｎ）＝５であることが分かる。従って、得られた間接要素キー「２６０１６７９５」を「５」で割り、更に最大素数の「２３」で割って「２２６２３３」を得て、この要素情報の名前キーは「２２６」であることが判明する。ここで、求めたい名前キーは「２２１」であるから、第１行目の「２６０１６７９５」の名前は目的の連結要素キーではない。
【００２９】
従って、データベース管理システム４２０は、要素情報２０２にアクセスし更に別の間接要素キーを取り出してくる。それが第２行目の「１４４９０８２７０」であったとすると、上記と同じような計算を行うと、「２２１２３４」が得られる。この要素情報の要素キーは「２２１」であるから、求めたい名前は、要素キー「２２１」に対応する「山田太郎」であることが判明する。更に、これに関連する住所情報の要素キーが「２３４」であることが分かるから、次にデータベース管理システム４２０は、要素情報２０３にアクセスし、要素情報２０２でしたと同様の手続きによって、住所キーが「２３４」の住所「東京都港区」と関連する電話番号キー「２４７」を見出す。データベース管理システム４２０は、ここで見出した電話番号キー「２４７」の電話番号を探るべく要素情報２０４にアクセスし、要素情報２０２や要素情報２０３でしたようにトライアンドエラーにより目的の電話番号キー「２４７」を探し出し所望の電話番号「▽▽▽▽▽▽▽▽▽▽」を入手する。これで会員番号「０００５」に関連する全ての要素情報が入手できたので、それらをアプリケーションシステムを通してシステム利用者に知らせて、一連の動作を終了する。
【００３０】
実施例ではＸｍ，ｎとして（１）式で表されるものを採用して、それに対して素因数分解法を適用したが、Ｘｍ，ｎとして（１）式以外のものを採用しても良い。例えば、
Ｘｍ，ｎ＝Ｙｍ，ｎ＋１＊１０α＋Ｙｍ，ｎ；ｍ＝１〜Ｍ，ｎ＝１〜Ｎ−１＆Ｘｍ，Ｎ＝Ｙｍ，１＊１０α＋Ｙｍ，Ｎ・・・・のように、Ｙｍ，ｎの順序を変えても良いし、更に（１）式は、Ｘｍ，ｎがＹｍ，ｎとＹｍ，ｎ−１の２つの要素キーの関数であるが、Ｘｍ，ｎをより多くの要素キーの関数としても良い。
例えば３つの要素キーの関数にする場合は、次式のようにすれば良い。
Ｘｍ，ｎ＝Ｙｍ，ｎ＊１０２α＋Ｙｍ，ｎ＋１＊１０α＋Ｙｍ，ｎ＋２；ｍ＝１〜Ｍ，ｎ＝１〜Ｎ−２
Ｘｍ，Ｎ−１＝Ｙｍ，Ｎ−１＊１０２α＋Ｙｍ，Ｎ１０α＋Ｙｍ，１＆Ｘｍ，Ｎ＝Ｙｍ，Ｎ＊１０２α＋Ｙｍ，１＊１０α＋Ｙｍ，２
先に述べたように、Ｙｍ，ｎの順序は、Ｘｍ，ｎの数値列の中にＹｍ，ｎがあらわに現れれば、どんなルールに従っても良い。
【００３１】
更に、例えば、Ｘｍ，１＝Ｙｍ，１＊１０（Ｎ−１）＊α＋Ｙｍ，２＊１０（Ｎ−２）＊α＋・・・・＋Ｙｍ，Ｎ−１＊１０α＋Ｙｍ，Ｎ
Ｘｍ，２＝Ｙｍ，２＊１０（Ｎ−１)＊α＋Ｙｍ，３＊１０（Ｎ−２)＊α＋・・・・・＋Ｙｍ，Ｎ＊１０α＋Ｙｍ，１・・・・・・・
Ｘｍ，Ｎ＝Ｙｍ，Ｎ＊１０（Ｎ−１)＊α＋Ｙｍ，１＊１０（Ｎ−２)＊α＋・・・・・＋Ｙｍ，Ｎ−２＊１０α＋Ｙｍ，Ｎ−１
のように、Ｘｍ，ｎを全てのＹｍ，ｎの関数とすることも出来る。もちろん、Ｙｍ，ｎを並べる順序については、色々の上記以外にも様々に考えられる。
【００３２】
これまで述べてきたＸｍ，ｎの作り方はＹｍ，ｎの関数として、ある種の対称性を持っているが、全く対称性の無いＸｍ，ｎの作り方も可能である。
【００３３】
例えば、Ｎ個の要素キーのうち、幾つかにだけ上記関数を使って間接要素キーを作り、残りのものは元の要素キーをそのまま使うようにしても良い。
例えば、Ｎ＝９である時、
Ｘｍ，１＝Ｙｍ，１＊１０５α＋Ｙｍ，２＊１０４α＋Ｙｍ，３＊１０３α＋Ｙｍ，４＊１０２α＋Ｙｍ，５＊１０α＋Ｙｍ，６
Ｘｍ，６＝Ｙｍ，６＊１０３α＋Ｙｍ，７＊１０２α＋Ｙｍ，８＊１０α＋Ｙｍ，９
Ｘｍ，ｎ＝Ｙｍ，ｎ  但し、ｎ＝２，３，４，５，７，８，９
このようにすれば、連結表を作らなくても、Ｘｍ，１とＸｍ，６から要素キーＹｍ，ｎの関連を知ることができ、元情報を復元できることになる。
【００３４】
更に、Ｘｍ，ｎを全てのＹｍ，ｎの関数とする上記の場合には、上記と同じ思想で、どれか一つだけ、例えばＸｍ，１だけ上記式を適用し、他はＹｍ，ｎをそのまま用いるということも出来る。
Ｘｍ，１＝Ｙｍ，１＊１０（Ｎ−１）＊α＋Ｙｍ，２＊１０（Ｎ−２）＊α＋・・・・＋Ｙｍ，Ｎ−１＊１０α＋Ｙｍ，Ｎ
Ｘｍ，ｎ＝Ｙｍ，ｎ  但しｎ＝２〜Ｎ
また、この場合は、実施例２で述べるようにデータ登録時に時間を短縮できるという利点がある。
【００３５】
また更に、このようにするとどれか一つだけ特別な要素情報（上記例でいうとＹｍ，１に対応する要素情報）ということになるので、全ての要素情報を特別扱いしないということで、
Ｒｍ，ｎ＝Ｙｍ，１＊１０（Ｎ−１）＊α＋Ｙｍ，２＊１０（Ｎ−２）＊α＋・・・・＋Ｙｍ，Ｎ−１＊１０α＋Ｙｍ，Ｎ
全てのｎについて、Ｘｍ，ｎ＝Ｙｍ，ｎ
としても良い。この場合は、Ｒｍ，ｎは一種の連結表の役割をすることになる。
【００３６】
これまでは、Ｘｍ，ｎは、様々な方法で作り得ることを述べてきたが、Ｘｍ，ｎを作った後、素因数分解法を適用する仕方は、本実施例の中で述べたものと同じでも良いし、他の実施例のものとしても良い。
（実施例２）
【００３７】
上記、実施例１では、図２又は図６の要素情報には既に要素キーが割り当てられていることを前提に、それを元に図１０及び図１１に示した間接要素キー（Ｗｍ，ｎ）を作成する例について説明した。これは、間接要素キーの素因数分解には大きな計算機負荷が掛かるという目的で導入された手法なので、データベース４１０への要素情報の登録に対しても非常に計算機負荷が掛かり、一度に大量の情報を登録することが難しいシステムになってしまう。このことに鑑みて、実施例２では、要素情報に割り当てる要素キーを、間接要素キーに対して素因数分解を行うということを前提に要素キーを作成する手法について説明する。
【００３８】
図５及び図６に示したように、Ｍ行Ｌ列の表構造の元情報をＮ個の要素情報に分割し、それぞれの要素情報に自然数からなる要素キーを割り当てる工程を考える。１＊１０Ｒ≧Ｍなる整数Ｒを、要素キーとして割り当てる自然数の桁数とする。例えばＭ＝１０００ならばＲは３以上の整数である。
【００３９】
図５の項番１から項番（ｍ−１)までの元情報の要素情報には、データベース管理システム４２０によって既に要素キーが割り当てられているとし、項番ｍの元情報の要素情報に要素キーを割り当てる場合を考える。データベース管理システム４２０は、内部に記憶している図１２に示すようないわゆる素数表の中から適当な素数を選び出し、それらを全て掛け合せてＱ桁の数Ａｍを得る。この際、データベース管理システム４２０は、Ｑ≦Ｒ＊（Ｎ−１)ならば更に素数を追加し、Ｑ＞Ｒ＊Ｎならば最初に選んだ素数の内の一つを除去する。データベース管理システム４２０は、この操作をＰ＊Ｎ≧Ｑ＞Ｒ＊（Ｎ−１)になるまで続ける。以後簡単のためにＱ＝Ｒ＊Ｎであるとする（Ｑ＜Ｒ＊Ｎの場合は、得られた数Ａｍの最上位桁の上に（Ｒ＊Ｎ−Ｑ）個の「０」を並べて見かけ上Ｒ×Ｎ桁にしても良い。）。最終的に得られた数Ａｍが「ａ１，ｍａ２，ｍ・・・・ａＮＲ，ｍ」であったとする。この数をＰ桁ずつに分けて、Ｎ個の「ａ１，ｍａ２，ｍ・・・ａＲ，ｍ」「ａＲ＋１，ｍａＲ＋２，ｍ・・・ａ２Ｒ，ｍ」、・・・・・、「ａＲ（Ｎ−１)＋１，ｍ・・・・ａＮＰ，ｍ」に分割して、それぞれを項番ｍの機密情報のＮ個の要素情報の要素キーとする。但し、この要素キーは、それ以前に決めた項番１〜項番（ｍ−１)の対応する要素キーと異なるようにする。もし、以前に決めた要素キーと同じ要素キーがあった場合は、素数を選び出す段階からやり直す。尚、上記工程で素数を選ぶ自由度を増やす為に、１×１０Ｒ≧Ｍを満足するＲの最小値をＲ０とすると、要素キーとして割り当てる数の桁数Ｒは、Ｒ０＋１以上が望ましい。
【００４０】
こうして条件に合うＡｍが得られたとすると、データベース管理システム４２０は、次にこの数Ａｍを得るために使った素数より大きな素数をＰｍを選び、更に何らかのＰｍの関数Ｆ（Ｐｍ）を計算し、ＡｍにＰｍとＦ（Ｐｍ）を掛けて得られる数Ｂｍ、すなわちＢｍ＝Ａｍ＊Ｐｍ＊Ｆ（Ｐｍ)を、間接要素キーとする。
【００４１】
図１に示した元情報１０１の要素情報に要素キーを割り当てるシーンを想定して、より具体的な実施例を示す。要素情報は図２と同様に会員情報と名前情報と住所情報及び電話番号情報の４つの要素情報に分割するものとする。簡単のために会員数は１００人未満とすると、要素キーには最大２桁の数を使用すれば要素間の識別が出来るが、素数を選ぶ自由度を増すために、ここでは要素キーとして最大３桁の数字を使うものとする。
【００４２】
データベース管理システム４２０は、最初に、元情報１０１の項番１の要素キーを作成する。例えば、素数として「２，２，２，７，１７，２９，７３，１０１，１４８１」を選んで、全てを掛け合わせて、１２桁の数「３０１４６３１５４１０４」を得る。１２桁の数「３０１４６３１５４１０４」を簡単のためＸ１とする。データベース管理システム４２０は、Ｘ１を３桁ずつに分けて「３０１」「４６３」「１５５」「４０４」を得る。これらをそれぞれａ１，ｂ１，ｃ１及びｄ１とする。ａ１，ｂ１，ｃ１及びｄ１を、元情報１０１の項番１に対応した４つの要素情報の要素キーとする。更にＸ１を素因数分解して得られる最大の素数は「１４８１」であることはＸ１の作り方から明らかで、素数表１２０１を使えば「１４８１」より大きな素数Ｐ１として「１４８３」を選ぶことができる。Ｆ（Ｐｍ）として、Ｐｍの各桁の和を取るという関数だとすれば、Ｆ（Ｐ１）＝１＋４＋８＋３＝１６が得られる。従って、Ｂ１＝Ａ１＊「１４８３」＊「１６」＝「７１５３１１７７２０５７９７１２」が得られる。間接要素キーを割り当てるものを第１列の会員番号とすれば、これを項番１の会員番号に対応した間接要素キーＷ１１とする。
【００４３】
次に、データベース管理システム４２０は、元情報の項番２の要素情報の要素キーを選定する。具体的には、データベース管理システム４２０は、素数表１２０１の中から素数「３，７，２３，２３，９７，３１１，６１９」を選び出して、これらを掛け合わせて、１２桁の数「２０７４４２５００６５７」（＝Ｘ２）を得る。従って４つの要素キーとして、ａ２＝「２０７」、ｂ２＝「４４２」、ｃ２＝「５００」及びｄ２＝「６５７」が得られ、ａ２≠ａ１、ｂ２≠ｂ１、ｃ２≠ｃ１及びｄ２≠ｄ１なので、（ａ２、ｂ２、ｃ２、ｄ２）は新たな要素キーとして採用することができる。データベース管理システム４２０は、更に素数表を参照することによって、素数６１９の次に大きな素数Ｐ２は「６３１」で、Ｆ（Ｐ２）＝１０であるから、Ｗ２，１=Ｘ２＊Ｐ２＊Ｆ（Ｐ２）＝「１３０８９６２１７９１４５６７０」を得ることができる。
【００４４】
次に、データベース管理システム４２０は、項番３の要素情報に要素キーを割り当てるために、次の素数、例えば、「２，２，２，２，２，２，２，２，２，２，２，３，３，３，５，７９，１６７」を選んだとする。データベース管理システム４２０は、これを全て掛け合わせて、Ｘ３の候補として「３０１４６２１７９８４０」を得る。つづいて、データベース管理システム４２０は、これを３桁ずつに区切って、要素キーの候補として、ａ３＝「３０１」、ｂ３＝「４６２」」、ｃ３＝「１７９」及びｄ３＝「８４０」を得る。ここでこれまでに得られた要素キーと比較すると、ａ３＝ａ１であるので「３０１４６２１７９８４０」はＸ３として採用出来ないことが分かる。従って、データベース管理システム４２０は、素数を選ぶ工程からやり直して、別の素数の組を選ぶ。
【００４５】
図１３に、上記操作を繰り返して得られた「選択した素数の組」とＸｍ、Ｐｍ、Ｆ（Ｐｍ）及びＷｍ，１を示す。更に、Ｘｍを３桁ずつに分割した数字列を図１４に、また図１４に示される分割した数字列を、元情報１０１の各要素情報に要素キーを対応させた結果を図１５に示す。ここで、会員番号キーの間接要素キーはＷｍ，１として上記各要素キーを得る過程で既に計算済みである。会員番号以外の要素情報、名前・住所・電話番号に関しては、図１５に示したように、上記で求めたｂ１、ｃ１及びｄ１が要素キーとなるが、この要素キーにも素因数分解法を適用して、各要素キーを間接要素キーで置き換え、突合処理の負荷制御の一端を担わせるようにするのが好適である。図１６に図１５に示された名前、住所及び電話番号に対応した要素キーＸｍ，ｎの素因数分解の結果、素因数分解で得られた素数よりも大きな素数Ｐｍ（ここでは、１０００以上の素数を選び、それぞれの要素キーに順番に対応させた。）とＰｍの関数であるＦ（Ｐｍ）（ここでは、Ｐｍの各桁の数を加算したもの）、及びそれらを掛け合わせたＷｍ，ｎを示す。
【００４６】
図１７に、上記で求めた間接要素キーを対応する要素情報に付加したものを示す。本実施例の分散管理システムにおいては、図１７に示す要素情報が、例えば図４の情報管理システムのデータベース４１０に分散して保管されることになる。この分散管理されたデータベース４１０からある情報を引き出す方法は実施例１と同様としてもよいし、そのほかの方法を採用しても良い。
（実施例３）
【００４７】
次に、いわゆる連結表を使用しない場合の、突合処理における負荷制御の別の好適な実施例として、長大な周期を持つ関数を用いた方法について述べる。長大な周期を持つ関数とは、自然数を入出力とする関数で、最大値が高々Ｎである任意の自然数Ｐに対して、Ｋ回適用するとＰを出力する関数のこととする。この時Ｋは関数の周期を表し、突合処理の計算時間を大きくするためには、Ｋが非常に大きな数であることが望ましい。
【００４８】
長大な周期を持つ関数としては、擬似乱数を生成する操作を関数にまとめたものが知られている。具体的には、線形合同法（混合合同法とも言う）や乗算型合同法の漸化式、Ｍ系列の擬似乱数を発生させる漸化式などが挙げられるが、本発明は乱数を発生させることが目的ではなく、ある数から次々と異なる数を発生させられればよく、ここでは、このような周期関数を総称してスライド関数と呼ぶことにする。例えば、乗算合同法の漸化式Ｘｎ＝ａＸｎ−１（ｍｏｄ  Ｍ）で、ａ＝１６８０７、Ｍ＝２３１−１＝２１４７４８３６４７とすると、その周期Ｋは、Ｋ＝Ｍ−１＝２１４７４８３６４６であることが知られている。
【００４９】
このようなスライド関数を用いて要素キーを生成する方法は次の通りである。要素キーを１からＮのいずれかの自然数とし、これをＹと置く。また、スライド関数の周期がＫであるとする。ここで、Ｋ未満の自然数で、適当に選んだものをスライド数Ｓα（α＝１，２，３，・・・・，Ｒ−１）と称する。Ｙに対してスライド関数をＳα回適用した時、１からＮの何らかの自然数が得られる。これをＹのＳα回スライド数またはスライド数と称する。
【００５０】
ここで、Ｒ個のデータ値からなる１つの組があって、この組を分割して個々のデータ値に要素キーを割り当てる処理を考える。この時、適当に選んだ１からＮのいずれかの自然数を、この組に対する代表要素キーと称する。異なる組の間で、代表要素キーは重複のないように選ばなければならない。次に、代表要素キーのＳ１回スライド数を、１次要素キーと称する。更に、１次要素キーのＳ２回スライド数を２次要素キーと称する。以下同様にして、（Ｒ−２）次要素キーのＳＲ−１回スライド数をＲ−１次要素キーと称する。また、１からＲ−１次要素キーを一般的に従属要素キーと称する。このように代表要素キーとその派生であるＲ−１個の従属要素キーを決定することができる。
【００５１】
決定された代表要素キーと従属要素キー合わせて全部でＲ個のキーを、組をなすＲ個のデータ値のそれぞれに対する要素キーとして採用する。ただし、代表要素キーを対応付ける対象の列は予め決めておくものとする。例えば、図１に示した元情報において会員番号の要素キーを常に代表要素キーとするように決めておく。
【００５２】
ここでは、図１に示した元情報に対して、図２に示したような３つの要素情報に分割した場合に、スライド関数として乗算型合同法の漸化式を用いて、どのように要素キーを与えるかを具体的に記す。実施例を分かりやすく説明するために、余り長周期ではないが具体的な漸化式として以下の（１）式を採用したとする。
Ｘｎ＝７Ｘｎ−１（ｍｏｄ  ４７）・・・・・・・・・・・・・・・・・・（１）
この関数の周期はＫ＝２３で、また前記Ｎは、Ｎ=４６である。
【００５３】
会員番号キーを代表要素キーとして、図１の会員番号キーをそれぞれ１，２，３，４，５，６，７とする。これは、上記漸化式で、初期値Ｘ０をそれぞれ、１，２，３，４，５，６，７としたことを意味する。第１次要素キーを名前キーとして９回スライド数とし、第２次要素キーを住所キーとして１０回スライド数として、更に第３次要素キーを電話番号キーとして２回スライド数とする。住所キーのスライド数が１０で、名前キーと電話番号キーのスライド数が２とスライド数に大きな差がついているのは、機密性を鑑みた為である。すなわち、会員番号と名前の関連性及び住所と電話番号の関連性は機密性が低いのでスライド数を小さく、名前と住所の関連は機密性が高いのでスライド数を大きく取った結果である。
【００５４】
ここで適用しているスライド関数は周期性をもっており、上記（２）式の場合は周期が２３であるから電話番号キーの２回スライドが会員番号キーとなる。従って、電話番号キーの１１回スライド数が名前キーということになる。このような関係を模式的に表したものを図１９に示す。図１９を見れば明らかであるが、名前キーと住所キー及び電話番号キーの関係はスライド関数の周期性を考慮して遠い存在になっている。このようにスライド数の選択はスライド関数の周期性も考慮して機密性の高い要素情報間のスライド数をできるだけ大きく取ることが肝要である。上記漸化式で言えば、会員番号キーはＸ０、名前キーはＸ２、住所キーはＸ１２、電話番号キーはＸ１４である。この漸化式の周期が２３で、従ってＸ２５＝Ｘ２である。Ｘ１４つまり電話番号キーを１１回スライドさせればＸ２６すなわち名前キーＸ２を得ることができる。図１９に上記漸化式のＸｎ（ｎが１〜２３）の値を初期値Ｘ０＝１〜７に対して計算してある。網掛けになっている行が初期値Ｘ０（会員番号キー）、Ｘ２（名前キー）、Ｘ１２（住所キー）及びＸ１４（電話番号キー）である。
【００５５】
図１９の計算結果に基づいて図１の元情報に各要素キーを挿入したものを図２０に示す。更に図２０に基づいて、それぞれ要素キーを付加した要素情報を分割し、要素キーの数の小さい方か並べたものを図２１に示す。このように、要素情報の順序が変えられているので、要素情報間の相関が分からず、Ｘｎ＝７Ｘｎ−１（ｍｏｄ  ４７）の式を用いてその関連を計算しない限りは、意味をなす情報にはならない。
【００５６】
以下、図２１を用いて、要素キーから要素キーへの突合処理をどのように実現するかを説明する。ここで、代表キーが会員番号キーになっており、会員番号キーを９回スライドしたものが名前キーで、更に名前キーを１０回スライドしたものが住所キーであり、更に住所キーを２スライドしたものが電話番号キーになり、関数として漸化式（２）すなわちＸｎ＝７Ｘｎ−１（ｍｏｄ  ４７）が使われており、その周期が２３であることは分かっているものとする。
【００５７】
システム利用者４００が名前「阿部太一」の住所電話番号と当該会員番号を知りたいとすると、システム利用者４００は、その旨をアプリケーションシステム４３０に入力し、アプリケーションシステム４３０は、データベース管理システム４２０に対応する処理を実行させる。具体的には、データベース管理システム４２０では、アクセス制御部４２２が、まず要素情報２１０２にアクセスして阿部太一の名前キー「２５」をピックアップする。この名前キーを１０回スライドさせたものが住所電話番号キーであるから、データベース管理システム４２０は、Ｘ０＝２５と置いて、式（２）の漸化式を使いまずＸ１＝３４を求め、次にそのＸ１＝３４を使ってＸ２＝３が求め、これを繰り返してＸ１０＝１を割り出す。これが求める住所キーである。住所キーを割り出したら、データベース管理システム４２０は、要素情報２１０３にアクセスして、住所「茨城県水戸市」をピックアップする。データベース管理システム４２０は、住所キーの２回スライド数が電話番号であることを把握しているので、式（２）の漸化式にＸ０＝１を代入し、Ｘ１＝７、これを使ってＸ２＝２が得て、電話番号キーが「２」であることを割り出す。データベース管理システム４２０は、要素情報２１０４にアクセスして、電話番号キーが「２」の電話番号が「□□□□□□□□□□」であることをピックアップする。データベース管理システム４２０は、次に会員番号キーを求めるために、会員番号キーは、電話番号キーの２回スライド数であるから、これを漸化式（２）を用いて計算して「４」を割り出し、データベース管理システム４２０は、要素情報２１０１にアクセスして会員番号「０００４」をピックアップする。
【００５８】
上記で、会員番号キーを、電話番号キーからスライド関数を使って求めたが、名前キーから求めることもできる。
【００５９】
一般的に、漸化式Ｘｎ＝ａＸｎ−１（ｍｏｄ  Ｍ）の意味は、Ｘｎ−１をａ倍してＭで割った時に、余りがＸｎであるということである。従って、ａＸｎ−１をＭで割った時の商をｂｎ−１とすると、（Ｍ＊ｂｎ−１＋Ｘｎ）はａで割り切れるはずである。ここで整数ｂは、０≦ｂｎ−１＜ａである。このｂｎ−１を使えば、Ｘｎ−１は、Ｘｎ−１＝（Ｍ＊ｂｎ−１＋Ｘｎ）／ａによって求めることができる。これは、スライド関数の逆関数を求めたことに相当する。
【００６０】
上記を使って、具体的に名前キーから会員番号キーを求めてみる。前記具体例では、漸化式（１）を使っているから、ａ＝７、Ｍ＝４７である。また「阿部太一」の名前キーは「２５」だから、（４７ｂ８＋２５）が７で割り切れ、データベース管理システム４２０は、ｂ８＝２ということを割り出せる。従って、データベース管理システム４２０は、Ｘ８＝（４７×２＋２５）÷７＝１７も割り出せる。データベース管理システム４２０は、次に（４７ｂ７＋１７）が７で割り切れるということから、ｂ７＝５で、従ってＸ７＝（４７×５＋１７）÷７＝３６を得る。データベース管理システム４２０は、この操作を繰り返すことにより、Ｘ６＝３２、Ｘ５＝１８、・・・・・、Ｘ１＝２８を割り出し、最後にＸ０＝４、すなわち会員番号キーが「４」であることを割り出せる。当然であるが、これは、電話番号キーから２回スライドで求めたものと同じである。
【００６１】
実施例３で詳しく述べたように、突合処理を行って意味のある情報を取り出そうとすると、スライド関数を多数回適用する必要がある。上記具体例では少なくとも１０回はスライド関数である漸化式（２）を適用する必要がある。この具体例では周期２３のスライド関数を使ったが、周期を長大にして、例えばよく乱数発生に使われる乗算型合同法の漸化式Ｘｎ＝ａＸｎ−１（ｍｏｄ  Ｍ）でａ＝６３０３６００１６，Ｍ＝２３１−１とすると、周期は２３１−２＝２１４７４８３６４６になり、スライド計算が膨大になって突合処理において計算機資源を大幅に消費することができる。
【００６２】
実施例３においてはスライド関数の選定が重要な役割を果たす。上記具体例では、スライド関数として乗算型合同法と呼ばれる乱数発生プログラムに使用される関数（漸化式）を利用して説明したが、本発明の趣旨から言うと、スライド関数として必要な性質は、
（１）自然数を入力すると自然数を出力する、
（２）周期内では同じ数が現れない、
（３）簡単に元の数を予測できない、
の３点である。
【００６３】
乱数発生関数は、（３）の性質を満たす関数として好適である。その中でも上記３つの性質を全て備えた関数として好適な関数の１つは実施例２で示した乱数乗算合同法に使われる漸化式で、一般的に書けば、
Ｘｎ＝ａＸｎ−１（ｍｏｄ  Ｍ）  但しａ≦Ｍ
となる。Ｍとａを上手く選べば、この式で得られる数列は擬似ランダムといわれる数列が得られ、次に何が来るかの予測が難しいのが特徴で、かつ周期は最大Ｍ−１で、周期内に現れる数Ｘｎは１〜Ｍ−１のいずれかの数で、ｎ≠ｍの時にはＸｎ≠Ｘｍ、すなわち同じ数は表れない。
【００６４】
もう１つの好適な関数は、やはり同じ乱数発生アルゴリズムによく用いられる線形合同法（混合合同法ともいう）の漸化式で、一般形で書けば
Ｘｎ＝ａＸｎ−１＋ｃ（ｍｏｄ  ＭＭ）  但しａ，ｃ≦Ｍ
である。
（１）ｃとＭが互いに素である、
（２）ａ−１がＭの全ての素因数で割りきれる、
（３）Ｍが４の倍数ならａ−１も４の倍数である、
の３条件を全て満足すれば周期はＭとなることが知られている。
この場合、数列｛Ｘｎ｝には、０〜Ｍ−１の全ての数が１度だけ現れることが特徴である。上記条件を満たしさえすれば、周期がＭとなるので、原理的には幾らでも長周期の数列を作り出すことが出来る。
【００６５】
実施例１、実施例２及び実施例３のいずれを用いても、要素キーを決定する時点で設定した時間計算量は、要素キーを変更しないままには軽減できない。また、要素キーの変更に当たっては、他の要素キーとどのように組を成しているかを調べるために結局突合処理に相当する計算が必要である。即ち、悪意ある第三者によって計算負荷を軽減することができない。
【００６６】
尚、実施例１、実施例２及び実施例３に示した方法による突合機構の実現は、ソフトウェアプログラムとしての構成を念頭に置いているが、同等の機能を持つ物理装置（例えば集積回路としてハードウェア実装された演算回路)や、ネットワークを通じて利用できるサービスとして構成される場合も、本発明の一態様である。
【００６７】
次に、データ分割に合わせて連結表を作る場合の実施例を示すが、それに先立ち、間接要素キー、変換機構、間接参照処理、間接連結表という言葉を定義する。間接要素キーとは、各々の要素キーに対して付与した一意の識別符号である。但し、本発明の目的を達成するためには、付与先となった要素キーの値を容易には類推できないように、間接要素キーとなる識別符号を選ぶ必要がある。図２２に示した変換機構２２０１は、ある要素キーを、その識別符号である間接要素キーに変換する機構である。要素キーの性質を考えると要素キーと間接要素キーは１対１対応でなければならない。間接要素キーから要素キーを特定する機構を逆変換機構と呼ぶ。以下では簡単のために装置として変換機構が逆変換機構も兼ねるとしているが、これを独立した装置として実現してもよい。変換機構２２０１を通じて間接要素キーから要素キーを決定する処理および、その逆に要素キーから間接要素キーを決定する処理を、共に間接参照処理と称する。連結表の要素キーを間接要素キーで置き換えて得られる表を、間接連結表と称する。
【００６８】
前記間接連結表を用いる場合は、要素情報と共に対で記憶されるのは要素キーであるが、前記間接連結表の代わりに連結表を記憶し、要素情報と共に対で記憶するものを間接要素キーとしても良い。いずれの場合でも、分散管理された要素情報間の突合処理には、要素キーから間接要素キーを決定する間接参照処理、及び間接要素キーから要素キーを決定する間接参照処理を含むから、間接参照処理の負荷を意図的に高めることによって、単位時間当たりに実行可能な突合処理の数を制限できる。以下では、間接参照処理の負荷を高める方法について実施例を基に詳しく説明する。
（実施例４）
【００６９】
要素キーから間接要素キーを作る方法で間接参照処理の負荷を意図的に高められる方法の第１の好適な実施例は素因数分解を用いた方法である。
【００７０】
ここで利用する素因数分解法は、実施例１で用いた方法である。実施例１では、要素キーの関数であるＹｍに対して素因数分解法を用いてＺｍという新しい数を得たが、ここでは要素キーそのものに対して素因数分解法を適用し間接要素キーを得るという違いがあるだけで、素因数分解法に対して本質は同じである。従って、実施例１で補足的に述べたことは、ここでも当てはまるし、登録業務を考えて素数の掛け算から生成した数を使うという実施例２の考え方もそのまま当てはまる。
（実施例５）
【００７１】
要素キーから間接要素キーを作る方法で間接参照処理の負荷を意図的に高められる方法の第２の好適な実施例は、乱数列を用いた方法である。
【００７２】
要素キーの取り得る値を１からＮの自然数とする。要素キー自体は、既述のように、データベース管理システム４２０によって割り当てればよい。また、、１からＮの自然数を一列に並べ、その並び順をランダムに入れ替えて得られる乱数列を作成しておく。このようにして得た乱数列の例を図２３に示す。この乱数列は、要素キーに基づいて間接要素キーを作成するものである。本実施例では、値がＫである要素キーに対して、この乱数列のＫ番目の位置にある値Ｑを、その間接要素キーとする。作成した間接要素キーは、間接参照表に保存する。この際、ここで用いた乱数列も、別途適当な記憶装置（たとえば、データベース４１０）に保存する。これらの動作は、変換機構２２０１によって実現する。図２３の例で言えば、変換機構２２０１は、値が５である要素キーから、これに対応する間接要素キーを作成する場合には、乱数列の左から５番目にある値が２３であることから、「２３」を選択することで、当該間接要素キーを作成する。逆に、間接要素キーＱから要素キーＫを作成することもできる。この場合には、記憶装置上の乱数列から自然数Ｑを探索し、見付かった位置を要素キーＫとすればよい。図２３の例で言えば、乱数列中に含まれる２３なる値は左から５番目に位置することから、値が２３である間接要素キーに対応する要素キーの値は５である。変換機構２２０１は、以上の方法に従い、要素キーと間接要素キーの間の変換処理を実行する。
【００７３】
前記では値がＫである要素キーに対して、乱数列のＫ番目の位置にある値Ｑを、その間接要素キーとしたが、その乱数列の中でＫという値のある位置が乱数列のＲ番目の位置にある時、その間接要素キーをＲとしても良い。どちらの場合でも、要素キーと間接要素キーの対応付けはランダムに決定された乱数列だけに依存するため、乱数列を参照することなしに間接要素キーのみから要素キーを決定することはできない。乱数列を十分に大きくし（たとえば、すべての乱数が２けた以上となるようにする）、且つ、ハードディスクなどの相対的に低速な外部記憶装置に保存すれば、このような探索には極めて多くの時間計算量が掛かる。
（実施例６）
【００７４】
要素キーから間接要素キーを作る方法で間接参照処理の負荷を意図的に高められる方法の第３の好適な実施例は、乱数列の反復参照を用いた方法である。
【００７５】
実施例５の場合と同様に、要素キーの取り得る値を１からＮの自然数とする。要素キー自体は、既述のように、データベース管理システム４２０によって割り当てればよい。また、１からＮの自然数を一列に並べ、その並び順をランダムに入れ替えて得られる乱数列を作成しておく。この乱数列は、例えば実施例５で示した図２３の乱数列としてもよいこの乱数列の、Ｐ番目の位置にある値を特定する処理をＰ点選択と称する。乱数列は１からＮまでの値しか含まない。よって、Ｐの値に関わらず、Ｐ点選択で決定される値の数も常に１からＮである。図２３の例で言えば、乱数列の左から４番目の位置にある値が７であることから、４点選択によって特定される値は７である。変換機構２２０１は、このような選択処理を実行する。
【００７６】
要素キーの値がＫである時、Ｋ点選択によって得られる値を１次要素キーと称し、この値をＫ１と置く。次に、変換機構２２０１によって実行されるＫ１点選択によって得られる値を２次要素キーと称し、この値をＫ２と置く。以下同様に、変換機構２２０１による選択を反復し、得られたｎ次キーをＫｎとする。ｎ次キーＫｎと、反復回数ｎの組を間接要素キーとする。実施例５と同様に、間接連結表に間接要素キーを保存する際には、ここで用いた乱数列も、別途適当な記憶装置に保存する。図２３の例で言えば、要素キーの値が４である時、４点選択の値は７であるから、Ｋ１は７である。７点選択の値は３であるから、Ｋ２は３である。３点選択の値は５であるから、Ｋ３は５である。
【００７７】
ｎ次の間接要素キーＫｎから要素キーＫを決定するには、変換機構２２０１は、記憶装置上の乱数列から自然数Ｋｎを探索し、その値が発見されたところでｎを１減らして、発見位置をＫｎ−１とする。以後、変換機構２２０１は、この探索を反復する。Ｋ１を乱数列の中から探索してその発見位置が決まった時、その発見位置が要素キーＫとなる。この処理の流れを図２４に示す。図２３の例で言えば、３次の間接要素キーＫ３が５である時、乱数列の左から３番目の位置にある値が５であることから、変換機構２２０１によるＫ３の発見位置は３であり、これがＫ２の値となる。同様に、乱数列の左から７番目の位置にある値が３であることから、変換機構２２０１によるＫ２の発見位置は７であり、これがＫ１の値となる。再び反復して、乱数列の左から４番目の位置にある値が７であることから、変換機構２２０１によるＫ１の発見位置は４であり、これがＫの値となる。以上の変換機構２２０１による処理によって、要素キーＫの値が４であることが決定される。以上の方法に従い、要素キーと間接要素キーの間の変換処理を実装したものが変換機構２２０１となる。
【００７８】
反復回数ｎは自由に設定でき、ｎが大きくなるほど時間計算量も増大する。前項に言う乱数列を用いた負荷制御では乱数列を大きくすることによって負荷を制御するが、乱数列の反復参照を用いた負荷制御では反復回数ｎを大きくすることによって負荷を制御する。このため、必ずしも大きな乱数列を用いる必要がなく、外部記憶装置を用いずに、例えば専用の物理演算装置として変換機構を構成することが相対的に容易となる。
尚、乱数列を複数通り用意し、反復回数によって切り替えて利用することも考えられる。
（実施例７）
【００７９】
要素キーから間接要素キーを作る方法で間接参照処理の負荷を意図的に高められる方法の第４の好適な実施例は、要素キーの長さを用いる方法である。
【００８０】
要素情報を一意に識別することができれば、要素キーにはどのような値を用いてもよい。そこで、各々の要素情報に対して、データベース管理システム４２０は、ランダムに選んだ一意且つ極めて長い文字列を要素キーとして選ぶ。要素キーがＮ個存在するとして、その値をＸ１からＸＮとする。変換機構は、同様に、ランダムに選んだ一意且つ極めて長いＮ個の文字列を適当な順序で一列に並べ、並べた順にＹ１からＹＮとする。以上の準備の下に、ｋ＝１からＮとして、Ｙｋを要素キーＸｋに対する間接要素キーと定める。要素キーＸｋと間接要素キーＹｋの組を並べたものをキー辞書とする。変換機構は、要素キーＸｋに基づいてキー辞書を参照して、対応する間接要素キーＹｋをピックアップすることで、要素キーから間接要素キーを作成する。図２５に、Ｎ＝５で要素キーの長さが１２、間接要素キーの長さが１６の場合のキー辞書の例を示す。この例では要素キーより間接要素キーの長さが大きいが、要素キーが間接要素キーよりも長くても良いし、両者の長さが等しくても良い。また、間接連結表だけでなく、ここで用いたキー辞書も、別途適当な記憶装置に保存する。
【００８１】
値がＫである間接要素キーから要素キーを決定するには、キー辞書の中から間接要素キー値がＫである組を探索し、対となっている値を要素キーとすればよい。図２５の例で言えば、間接要素キーＹ５の値が「５Ｅｆａｈ３ｆｐｌ８９ＧＢ６９ｗｗ」である時、キー辞書上でこれに対応する値は「Ｖ５ｇｙａ５５ｐｘＫＷｑ」である。従って、対応する要素キーＸ５の値は「Ｖ５ｇｙａ５５ｐｘＫＷｑ」である。以上の方法に従い、要素キーと間接要素キーの間の変換処理を実装したものが変換機構となる。
【００８２】
この方法による負荷制御は、時間計算量の限界に対してではなく、ネットワーク容量の限界に対して適用されるので、実施例としては、要素情報とキー辞書を組にして異なる物理装置上に配置すると好適である。もちろん要素情報とキー辞書を組にしないで別々の異なる物理装置上に配置してもよい。
【００８３】
図２６に示したように、２個に分割された要素情報２６１１及び要素情報２６１２、各々の要素情報に対応するキー辞書２６２１及びキー辞書２６２２、要素情報とキー辞書を組にして保存する記憶装置２６０１及び記憶装置２６０２、記憶装置２６０１及び記憶装置２６０２を含むコンピュータ２６３１及びコンピュータ２６３２、間接連結表２６１３を含む記憶装置２６０３、記憶装置２６０３を含むコンピュータ２６３３、から情報管理システムが構成され、加えて、変換機構２６０４が他のコンピュータ２６３４上に実装されているものとする。
【００８４】
ここで、間接要素キーに対応する要素キーの間接参照処理は、変換機構において実行する。間接連結表２６１３は記憶装置２６３３上にのみ存在し、この間接要素キーを含むキー辞書２６２１又はキー辞書２６２２は記憶装置２６０１又は記憶装置２６０２のいずれかに存在し、それぞれ変換機構２６０４とは異なる物理装置上に存在する。従って、間接参照処理を実行するに当たっては、間接要素キー及びキー辞書の情報を、ネットワークを経由して、変換機構のあるコンピュータ２６３４へ転送しなければならない。
【００８５】
要素キーまたは間接要素キーが十分に長大な文字列であれば、ネットワーク容量によって、単位時間当たりに転送可能なキー辞書の範囲が制限される。即ち、要素キーまたは間接要素キーが長くなるほど、単位時間当たりに消費するネットワーク容量が増大し、実行可能な間接参照処理の数が減少する。図２６の例で言えば、通信路２６０５上のネットワーク容量が毎秒１０００文字相当であり、且つ、要素キーと間接要素キーの値が共に１万文字の長さを持つならば、キー辞書に含まれる要素キーとの間接要素キーの値の１組を、記憶装置２６０１、２６０２から変換機構のあるコンピュータ２６３４へと転送するには、少なくとも２０秒の時間が掛かる。要素キーと間接要素キーの値をより長い文字列で表せば、この時間は更に長くなる。
【００８６】
図２６及び上記説明では、要素情報とキー辞書を組にして記憶装置に保管しているが、もちろん要素情報とキー辞書を組にしないで別々の異なる物理装置上に配置してもよいし、また複数のキー辞書を集めて１つの記憶装置に保管しても良い。本発明の本質は変換機構をキー辞書、要素情報を保管する記憶装置のあるコンピュータとは物理的に別の装置に置いて、長大なデータがネットワーク通信路を流れるようにすることである。
【００８７】
尚、上記に例示した方法による変換機構の実現は、ソフトウェアプログラムとしての構成を念頭に置いているが、同等の機能を持つ物理装置（例えば集積回路としてハードウェア実装された演算回路)や、ネットワークを通じて利用できるサービスとして構成される場合も、本発明の一態様である。
【００８８】
要素キー及び間接要素キーの生成は、変換機構によって行えばよいが、例えば、長大な要素キー及び間接要素キーを図２６のコンピュータ２６３４に置いたとすると、機密情報を記録する際にもネットワーク通信路２６０５に長大な要素キー及び間接要素キーが流れることになる。従って、機密情報を記録する際にもネットワーク容量の制限を受け、大量の機密情報を記録するのに膨大な時間が掛かることになってしまう。このことを考えると、要素キー及び間接要素キーの生成機構は、キー辞書を保管する記憶装置内に配置するのが好適である。長大な要素キーと間接要素キーの生成機構の具体例を実施例８で示す。
（実施例８）
【００８９】
実施例７では、長大な要素キー及び間接要素キーとして、英数字がランダムに並んだものを想定して書かれているが、ここでは、乗算合同法による長大な要素キー及び間接要素キーの生成法について述べる。本実施例では、次に示す漸化式（２）
Ｘｎ＝ａＸｎ−１  （ｍｏｄ  Ｍ）・・・（２）
を使う。ａとＭにある関係があれば、発生出来る乱数の周期は最大Ｍ−１になる。ここでは、周期はＳとする。この関数の特徴は、初期値として取り得る整数は、Ｘ０＝１、２、・・・・、Ｍ−１で、その数列は全て異なっていることである。
【００９０】
漸化式（２）で発生する乱数列｛Ｘｎ｝から、
Ｕｍ＝ＸＳ−１＊１０α×（Ｓ−１）＋ＸＳ−２＊１０α×（Ｓ−２）＋・・・＋Ｘ１＊１０α＋Ｘ０
なる数を生成する。ここでαは、数「Ｍ−１」の桁数である。この時Ｕｍの桁数は、α×Ｓとなる。例えばＭが１０６＋１で、周期が１０６だったとすると、αは「６」だからＵｍの桁数は６×１０６で、６００万桁という膨大なものになる。Ｕｍの桁数はＳによってかなり大幅に調整でき、ＳはａとＭの選び方で決まるので、漸化式（３）を上手く選べば所望の桁数の数字を手に入れられる。生成機構は、このように、２つの異なる漸化式を用いて生成した数をそれぞれ要素キーと間接要素キーに当てる。このように、生成機構は、漸化式を用いて簡単な計算で長大な要素キー及び間接要素キーを作成することができる。しかも初期値を変えれば同じ桁の別の要素キー及び間接要素キーを得ることができるので、実施例７に適用するのに好都合である。
（実施例９）
【００９１】
次に、元情報が図５に示すようなＭ行Ｌ列の表構造のデータで、かつ図６に示すようにＮ個の要素情報に分割して管理する場合に、データ照会の内容に応じて突合処理の負荷を細かく制御するのに好適な実施例を示す。
【００９２】
分割管理されているＮ個の要素情報の任意の２つの要素情報の組は全部で（Ｎ×（Ｎ−１）)÷２通り存在する。本実施例においては、１枚の連結表を作成・保管するのではなくて、上記Ｎ（Ｎ−１）÷２通りの全ての組に対して、対応する２列から成る間接連結表２６１３を作成し、これをコンピュータＣ２６３３に保管する。例えば元情報１０１に対して図２に示したような要素キーを与えた要素情報を分割管理している場合を考える。この場合、任意の２つの要素情報の組は６つ、すなわち、会員番号と名前の組、会員番号と住所の組、会員番号と電話番号の組、名前と住所の組、名前と電話番号の組、住所と電話番号の組、である。元情報１０１の中で機密情報として機密性の高いものは、名前情報であるとした時、要素キーをＹとして、その素因数分解で得られた全ての素因数より大きな素数をＵ１、Ｕ２、Ｕ３、及びＵ４（但し、Ｕ１＜Ｕ２＜Ｕ３＜Ｕ４）とし、更にそれぞれの素数の関数をＦ（Ｕｎ）とした時、間接連結表を校正する間接要素キーＺの生成は次のようなルールに従うものとする。
（１）会員番号と名前の間接連結表を構成する間接要素キーを生成する場合は、
Ｚ＝Ｙ＊Ｕ１＊Ｕ２＊Ｕ３＊Ｆ（Ｕ３）
（２）名前と住所、及び名前と電話番号の間接連結表を構成する間接要素キーを生成する場合は、
Ｚ＝Ｙ＊Ｕ１＊Ｕ２＊Ｕ３＊Ｕ４＊Ｆ（Ｕ４）
（３）会員番号と住所番号、会員番号と電話番号、及び住所と電話番号の間接連結表を構成する間接要素キーを生成する場合には、
Ｚ＝Ｙ＊Ｕ１＊Ｆ（Ｕ１）
【００９３】
このようにすれば、名前情報と紐付けられる情報を取得するのには時間が掛かり、名前と関係の無い情報を取得する場合は比較的少ない時間で行えるので、機密情報保護の観点から好ましい。更に、同じ名前情報に関係していても、名前と会員番号のように比較的機密性の少ないものと名前と住所や電話番号のように機密性の強いものに対して多少の差をつけるきめ細かな対応が可能である。図２７に、図２に示した要素情報と要素キーに対して、上記ルールを適用して、要素キーＹｍ，ｎから間接要素キーＺｍ，ｎを生成する為に必要な数値を纏めて示してある。同じ要素情報の間接要素キーであっても、異なった組の間接要素キーは素数の選択を変更し異なった値になっている。こうすることによって、それぞれの組の機密性に応じて細かい重み付けが可能となる。図２８に図２７の計算結果に基づいて作成した６つの連結表を示す。
（実施例１０）
【００９４】
上記実施例９では全ての２列の組について間接連結表を設けるものとしたが、要素情報の関連性と機密性を考慮して、３つの要素情報の組や４つの要素情報の組について部分的な間接連結表を設けても良い。例えば、図２の要素情報に対して、会員番号と住所と電話番号を一つの間接連結表にして、その要素分解法を用いた間接要素キーは上記実施例９のルール（３）に従って生成し、また会員番号と名前を一つの間接連結表にして、要素分解法を用いた間接要素キーの生成は上記実施例９のルール（１）に従って生成しても、機密性の重み付けは実施例９の全ての２つの要素情報の組みに対して間接連結表を作成するのと同等の効果を得ることができる。図２９に、このようにして作成した間接連結表を示す。図２９の表２９０１は、表２７０３で得られた間接要素キーを用いた名前と会員番号の間接連結表である。また図２９の表２９０２は、表２７０４で得られた会員番号と住所の間接要素キーと表２７０５で得られた電話番号の間接要素キーを用いた会員番号と住所及び電話番号の３つの要素情報の間接連結表である。この場合は、住所及び／又は電話番号と名前との関連を知ろうとする時は、必ず会員番号を経由して情報取得を行うことになる。
【００９５】
上記実施例９や実施例１０では、間接要素キーの生成法として、実施例１、実施例２または実施例４と同様に素因数分解法を用いたが、間接要素キーの生成法はこれに限定される訳ではなく、実施例３に示した長大な周期をもつスライド関数を用いる方法、実施例５に示した乱数列を用いる方法、実施例６に示した乱数列の反復参照を用いる方法、または実施例７に示した要素キーの長さを用いる方法などの別の方法で間接要素キーを生成した場合でも、本発明の一様態である。
（実施例１１）
【００９６】
次に、元情報が木構造のデータであり、且つ、節点に対してデータ値が結び付いている場合に好適な負荷制御の方法を示す。図３０に木構造のデータ構成を示す。木構造であるから、根となる節点がただ一つ存在し、根を基点として、例えば幅優先探索により、全ての節点３０１１、３０１２、３０１３、３０１４、３０１５、３０１６に対して通し番号などのユニークな番号を割り当てることができる。各々の節点に対して割り当てられたこの通し番号等を節点番号と称し、その値を１からＮの自然数とする。通常、根となる節点３０１１には自然数の１を割り当て、そこから子供の節点、孫の節点と進むに従って数字を２、３、４、５というように割り当てていく。図３１にそのように割り当てた例を示す。
【００９７】
節点番号割り当て済みの木構造データから、要素情報を表す表構造のデータを、次のようにして構成することができる。節点番号の順にデータを並べ、図３２に示すように、節点番号とデータの組からなる２列の表とする。この時、節点番号は一意性を保っており、節点番号を要素キーとできる。従って、図３２に示す２列の表は木構造データの連結表となる。
【００９８】
図３２に示した連結表から間接連結表を構成する方法は次の通りである。本実施例の場合には、要素キーが１からＮであることが分かっているから、例えばスライド関数を用いた方法によって、要素キーに対応する間接要素キーを決定できる。このようにして得られた間接要素キーを用いて、図３２の連結表に含まれる要素キーを、対応する間接要素キーで全て置き換えて得られるＮ行２列の表が、間接連結表となる。
【００９９】
例えば、スライド関数として、実施例３で使った乗算合同法の漸化式（１）、すなわち、
Ｘｎ＝７Ｘｎ−１（ｍｏｄ  ４７）
を使って、要素キーを１２回スライドしたもの、即ちＸ０を要素キーとした時に、Ｘ１２を間接要素キーとすると、図１９を参照すれば、（Ｘ０、Ｘ１２）＝（「１」、「１７」）、（「２」、「３４」）、（「３」、「４」）、（「４」、「２１」）、（「５」、「３８」）、（「６」、「８」）、（「７」、「２５」）が得られる。カッコ内、例えば（「１」、「１７」）は、Ｘ０＝「１」の時、Ｘ１２＝「１７」ということである。間接要素キーから要素キーを求めるには、このスライド関数の周期が２４であるから、間接要素キーを１１回スライドさせれば、すなわち（１)式を１１回適用してＸ２３を求めれば良い。図３２の連結表の要素キーの値を全て間接要素キーの値で置き換え、且つ小さい順に並べ変えたものを図３３に示す。
【０１００】
元情報が木構造のデータの場合は、記憶装置に保管されるのは、図３０の木構造の節点に自然数を割り当てたものと、図３３の間接連結表である。例えば、このデータ管理システムのユーザから、高橋一郎は何部に所属しているか知りたいという要求があったとする。まず、データベース管理システムは、図３３に示した間接連結表の情報にアクセスして高橋一郎の間接要素キーが「８」であることをピックアップする。次に、Ｘ０＝「８」として、漸化式（１）を１１回適用して、Ｘ１１＝「６」であることが分かる。図３２に示した連結表の情報にアクセスして木構造で「６」の親、すなわち所属部の要素キーは「３」であることが分かる。従って、Ｘ０＝「３」として、漸化式（１）を１２回適用すれば、Ｘ１２＝「４」が得られる。これが所属部の間接要素キーである。続いて図３３の間接連結表の情報にアクセスして、間接要素キーの「４」は総務部に対応していることがわかり、高橋一郎氏は総務部の所属であることをシステム利用者に報告することができる。
【０１０１】
上記実施例で示したように、スライド関数を用いて間接連結表を作る場合は、長大な周期のスライド関数を容易して、スライド数を大きく取れば突合処理の負荷を増加させることが出来、単位時間当たりに可能な突合処理の回数を減らすことが出来る。
【０１０２】
尚、木構造の例を一般化することによって、一般のグラフ構造で節点にデータが結び付いている場合にも、適当な方法によって節点に対して要素キーとなる一意の番号を割り当てれば、実施例９で示したように、スライド関数などを使用して間接連結表を生成できて、突合処理の負荷を重くすることができる。
【０１０３】
以上に述べたのは連結表、要素情報、間接連結表の構成の例であり、これ以外の方法によって構成される場合であっても、次を満たすならば本発明の一態様である。
（１）元情報をそれ単体では意味を成さない小片に分割し、その小片に含まれる個々の要素を識別する要素キーを割り当てて得られる、付番済み要素からなる小片が要素情報である、
（２）要素情報と合わせることによって元情報を復元することができる補足情報で、要素キーからなるデータ集合が連結表であり、
（３）変換負荷の制御された変換機構を通すことによって要素キーを決定できるが、それ自身の値から直ちには要素キーを決定することのできない識別符号が間接要素キーであり、
（４）要素情報と合わせることによって元情報を復元することができる補足情報で、間接要素キーからなるデータ集合が間接参照表である。
【０１０４】
これまで、実施例を用いて突合処理の負荷制御すなわち突合処理の負荷を重くして単位時間あたりに行える突合処理の数を制限する方法について種々述べてきた。ここでは、通常の業務において、これらの負荷制御をどのように使うかを次の実施例に従って説明する。
（実施例１２）
【０１０５】
負荷制御方法についてはこれまでに述べてきた方法以外にも色々考えられるが、どのような場合にも共通するのは、連結処理に伴う間接参照処理の変換負荷を増大させることによって、大量漏洩に相当する大量のデータ転送が、情報システムの有する計算機資源の枯渇を招くよう仕向けるという点である。他方で、正常な範囲で情報システムの利用が可能であるためには、情報システムの利用文脈において必要とされる一定の処理性能を発揮することが求められる。
【０１０６】
例えば、通常業務において参照される個人情報の数が平均的には１秒間に１００件であるとすれば、１秒１００件程度の連結処理は、計算機資源の枯渇を招くことなく実行されなければならない。このようなシステムの利用要件から逆算して、必要とされる単位時間当たりの連結処理数に合致するよう設定された突合処理の負荷を、基準負荷と称する。
【０１０７】
情報システムの利用状況は時間帯によって変動するのが通例である。例えば日中には通常業務の中で頻繁に機密情報がアクセスされ、夜間にはアクセス量が減少することが想定される。このような状況に対しては、時間帯に応じて基準負荷を切り替えることで対応できる。即ち、昼間は低い基準負荷を採用することによって、単位時間当たりに可能な連結処理数を大きくとり、夜間は高い基準負荷を採用することによって、同じく連結処理数を小さくする。
【０１０８】
一般的に言えることとして、ただ計算時間のみを消費して他の副作用を何ら持たない演算処理を実装することができる。その代表的な方法は、他の計算を行わず所定回数だけただ反復する空ループ処理である。これをウェイトループと称する。これを踏まえ、任意の変換機構の処理過程にウェイトループを導入すると、変換機構による間接参照処理の過程でウェイトループが実行される。しかし、変換機構の動作に必要な時間計算量が増大するのみで、間接要素キー、要素キー、間接参照表などの構成には影響を及ぼさない。その一方で、ウェイトループの繰り返し回数を増大させれば、即ちウェイトループの消費する時間計算量が増大し、単位時間当たりに実行可能な間接参照処理の数が減少する。従って、このようなウェイトループによって、任意の変換機構における時間計算量を制御することができる。
【０１０９】
基準負荷を調整する方法の例として、所定回数だけこのウェイトループ混入による負荷制御を他の負荷制御の方法に組み合わせる方法が挙げられる。例えば昼間の基準負荷は、これまで実施例を用いて説明してきた負荷制御例えば素因数分解を用いる方法などの下で設定し、それよりも高くなる夜間の基準負荷については、昼間の基準負荷との差に当たる負荷だけを、ウェイト混入による負荷制御を追加的に導入する。更に、ウェイトループの繰り返し回数を記憶装置上に別途保存し、ウェイトループの実行時にこの繰り返し回数を参照するように実装する。すると、記憶装置上のこの繰り返し回数を書き換えることで、速やかに負荷の大小を加減できる。即ち、短時間で負荷を制御しなければならない場合にこの方法を利用できる。
【０１１０】
例えば、１００万件の機密情報を、実施例１で示したスライド関数を用いてスライド数による負荷制御を行うような分割管理システムがあったとする。このシステムの機密情報への平均アクセス件数が午前９時から午後７時までの日中では９件で、それ以外の時間帯では０．９件であったとする。このような機密情報管理システムにおいて、好適な実施例は、日中の負荷制御は、スライド関数によるスライド数の調整による方法だけで毎秒１０件の処理が可能なように設定する。すなわち、機密情報を登録する時に、スライド関数とスライド数を適当に選んで、１件の機密情報へのアクセスが０．１秒掛かるように基準負荷を設定する。機密情報へのアクセスの大半の時間はスライド関数の適用を含む突合処理の時間でるから、機密情報を登録する時にスライド関数とスライド数を適切に選ぶことによって設定可能である。こうすれば日中の業務で機密情報へのアクセス件数が１０％変動しても支障なく業務が遂行できる。一方、それ以外の時間帯に対しては、１件のアクセスに対して、０．９秒のウェイトループを挿入し、毎秒１件のアクセスしか出来ないようにする。日中以外の時間帯の平均アクセス件数が０．９件ならば、日中と同じくアクセス件数が１０％変動しても支障なく業務を遂行できる。
【０１１１】
この様に設定された状態の機密情報管理システムから機密情報を盗み出そうとすると、日中は平均で毎秒１件、それ以外の時間帯では毎秒０．１件の情報しか盗み出せない。一日に盗み出せる機密情報は、１（件／秒）×６０（秒／分）×６０（分／時間）×８時間＋０．１（件／秒）×６０（秒／分）×６０（分／時間）×１２時間＝３３，１２０件で、全ての機密情報１００万件を盗み出そうとしても３０日間フル稼働で機密情報管理システムを動かさない限り盗み出すことが出来ない。これは殆ど不可能に近い。
【０１１２】
上記実施例１１ではスライド関数を適用する場合について述べたが、素因数分解法を用いる場合は乗ずる素数の大きさの調整、乱数列を用いる場合には乱数列の長さの調整、乱数列の反復参照を用いる場合には反復回数の調整、要素キーの長さを用いる場合には長さの調整など別の方法で間接要素キーを生成する場合も、同様の調整を行って日常業務は滞りなくこなせて、なおかつ内部の人間であっても実質的に機密情報を盗み出すことが出来ないようなシステムが構築できる。
【０１１３】
基準負荷の調整のためにこのように複数の負荷制御法を組み合わせるのは本発明の一態様である。また同様に、ある単一の負荷制御法でパラメータ等を変更してこのような基準負荷の調整を行うのも本発明の一態様である。
【図面の簡単な説明】
【０１１４】
【図１】機密情報の例
【図２】分割管理する要素情報と要素キーの例
【図３】連結表の例
【図４】分割管理を用いた情報管理システムの構成の例
【図５】表形式で表される情報の一般的な構成
【図６】図５の情報を分割管理する場合の要素情報と要素キーの一般的な構成
【図７】図６の要素キー間の関連を表す連結表の構成
【図８】保管する要素情報と間接要素キーの対応表
【図９】本発明の間接要素キーを作成するための具体例の中間構成図
【図１０】素因数分解を用いた間接要素キーの具体的な計算例
【図１１】保管する要素情報と間接要素キーの表の具体例
【図１２】素数表の一例
【図１３】素因数分解法の間接要素キーを作成するための具体的な計算例
【図１４】図１３の間接要素キーを作成する過程で得られる要素キーの構成例
【図１５】図１４の要素キーと要素情報の関係を示した表
【図１６】図１５の要素キーから間接要素キーを計算した例
【図１７】図１３から図１６で得られた情報を基にした間接要素キーと要素情報の構成例
【図１８】Ｘｎ＝７Ｘｎ−１  （ｍｏｄ  ４７）に初期値１，２，３，４、、５，６，７を与えた時の計算例
【図１９】スライド関数を使った時の各要素キーとスライド数の関係を表した図
【図２０】スライド関数を使った本発明の実施例の表
【図２１】スライド関数を使った要素情報と要素キーの例
【図２２】変換機構の構成図
【図２３】１〜Ｎまでをランダムに並び替えた数列の具体例
【図２４】Ｋ点選択法においてｎ次の間接要素キーから要素キーを導くアルゴリズムの例
【図２５】要素キーの長さを用いた負荷制御の方法におけるキー辞書の例
【図２６】要素キーの長さを用いた負荷制御の方法におけるシステム構成の例
【図２７】間接要素キーの生成に必要な数値の例
【図２８】間接連結表の例
【図２９】間接連結表の例
【図３０】木構造データの例
【図３１】木構造データの番号付けの例
【図３２】木構造データの連結表の例
【図３３】本発明に関わる木構造データの間接連結表の例
【符号の説明】
【０１１５】
４１０  データベース
４２０  データベース管理システム
４３０  アプリケーションシステム
４４０  システム利用者
【図１】
2012038097.tif 000003
【図２】
2012038097.tif 000004
【図３】
2012038097.tif 000005
【図４】
2012038097.tif 000006
【図５】
2012038097.tif 000007
【図６】
2012038097.tif 000008
【図７】
2012038097.tif 000009
【図８】
2012038097.tif 000010
【図９】
2012038097.tif 000011
【図１０】
2012038097.tif 000012
【図１１】
2012038097.tif 000013
【図１２】
2012038097.tif 000014
【図１３】
2012038097.tif 000015
【図１４】
2012038097.tif 000016
【図１５】
2012038097.tif 000017
【図１６】
2012038097.tif 000018
【図１７】
2012038097.tif 000019
【図１８】
2012038097.tif 000020
【図１９】
2012038097.tif 000021
【図２０】
2012038097.tif 000022
【図２１】
2012038097.tif 000023
【図２２】
2012038097.tif 000024
【図２３】
2012038097.tif 000025
【図２４】
2012038097.tif 000026
【図２５】
2012038097.tif 000027
【図２６】
2012038097.tif 000028
【図２７】
2012038097.tif 000029
【図２８】
2012038097.tif 000030
【図２９】
2012038097.tif 000031
【図３０】
2012038097.tif 000032
【図３１】
2012038097.tif 000033
【図３２】
2012038097.tif 000034
【図３３】
2012038097.tif 000035