JP6098294B2 - 情報秘匿化装置、情報秘匿化方法 - Google Patents

情報秘匿化装置、情報秘匿化方法 Download PDF

Info

Publication number
JP6098294B2
JP6098294B2 JP2013070339A JP2013070339A JP6098294B2 JP 6098294 B2 JP6098294 B2 JP 6098294B2 JP 2013070339 A JP2013070339 A JP 2013070339A JP 2013070339 A JP2013070339 A JP 2013070339A JP 6098294 B2 JP6098294 B2 JP 6098294B2
Authority
JP
Japan
Prior art keywords
input
order
data
token
storage
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.)
Expired - Fee Related
Application number
JP2013070339A
Other languages
English (en)
Other versions
JP2014194621A (ja
Inventor
小櫻 文彦
文彦 小櫻
伊藤 孝一
孝一 伊藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 JP2013070339A priority Critical patent/JP6098294B2/ja
Publication of JP2014194621A publication Critical patent/JP2014194621A/ja
Application granted granted Critical
Publication of JP6098294B2 publication Critical patent/JP6098294B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、情報秘匿化装置、及び情報秘匿化方法に関する。
クラウドコンピューティングの発達に伴い、ネットワークを経由して、データベースに蓄積された識別情報を含むデータを外部の情報処理サービスへ送信して分析等を依頼することが増えている。識別情報は、利用者の個人情報やIDなど、個人を特定可能な情報を含んでいる場合があるため、情報漏洩の防止のために、外部にデータを送信する際には識別情報を秘匿化していた。
一方、データベースシステムの仕様によっては、蓄積されたデータを、例えば記録した日時順に出力する等、データベースの仕様に基づく特定の出現パターンを有したものが多く、単に識別情報を秘匿化するのみでは、そのデータの並び順から利用者の特定が可能になってしまう場合があった。
例えば、特定の疾病を持つ患者のデータを月例で解析する場合、喩え患者の識別情報を秘匿化したとしても、データベースへの登録順序でデータを出力した場合、データの並び順である程度の患者の特定ができてしまう場合があった。
そこで、従来のデータベースシステムにおいては、例えば、(SELECT * FROM table ORDER BY RAND())等のコマンドを使用して、蓄積データをランダムにソート処理して出力させる方法が用いられていた。
また、利用者の識別情報を管理するトークンにより管理する方法があった。さらに、データベースにおける記憶領域内のデータ格納率を向上させる目的として、同時に扱うデータの集合を1つのまとまりで扱う方法があった(例えば、特許文献1−3等参照)。
特開2005−284679号公報 特開2011−211593号公報 特開2008−276336号公報
しかし、上記先行技術において、ソートを使用したランダム化処理は、データのレコード数が増えると累積的に処理時間が遅くなるという問題があった。
そこで、一側面では、識別情報を安全にかつ高速に秘匿化する情報秘匿化装置を提供することを目的とする。
一つの案では、情報秘匿化装置は、識別情報を含むデータが所定の格納数の格納場所に入力されて、入力された前記データを、前記格納場所から、入力順序が早い入力データに対して入力順序が遅い入力データを優先的に、ランダムの順序で出力する第1のランダム化装置と、前記第1のランダム化装置から出力された前記データの前記識別情報をトークンで置換するトークン化部と、を備える。
一態様によれば、識別情報を安全にかつ高速に秘匿化する情報秘匿化装置を提供することができる。
システム全体構成図 トークン化部の構成図 トークン化部の動作フローチャート 順序ランダム化装置のデータ入力フローチャート 順序ランダム化装置のデータ出力フローチャート 順序ランダム化装置の処理フローチャート 識別子発番対応表 第1の実施形態における順序ランダム化装置の初期処理フローチャート 第1の実施形態における順序ランダム化装置のプール保存フローチャート 第1の実施形態における順序ランダム化装置のプール取出しフローチャート 第1の実施形態における仮想配列イメージ図 第2の実施形態における概要を説明する図 第2の実施形態におけるプール配列を説明する図 第2の実施形態における順序ランダム化装置の初期処理フローチャート 第2の実施形態における順序ランダム化装置の保存動作フローチャート 第2の実施形態における順序ランダム化装置のプール取出し動作フローチャート 第3の実施形態における概要を説明する図 第3の実施形態における順序ランダム化装置の初期処理フローチャート 第3の実施形態における順序ランダム化装置の動作フローチャート 第4の実施形態におけるシステム全体構成図 トークン管理装置のハードウエア構成図
以下、図面に基づいて本発明の実施の形態を説明する。
図1は、情報分析を行うためのシステムの全体構成の一例を説明する全体構成図である。
図1において、分析者は、分析者端末20を操作する。分析者端末20は、データベースシステム21に接続されており、データベースシステム21から分析対象のデータを収集する。分析者端末20は、トークン化装置1を介して分析システム22に接続されており、分析対象の情報を分析システム22に送信して、分析結果を受信する。
データベースシステム21は、データベース管理システム211と記憶部212を備えている。データベース管理システム211は、データベース管理ソフトウエアによってデータベースの管理、運用を行うシステムである。データモデルとしてはリレーショナルデータベース(RDB)やオブジェクト関係データベースなどが利用され、データベース管理ソフトウエアに応じたデータ構造のデータベースが構築される。本実施形態においては、複数の情報項目(フィールド)が1件のレコードを構成するデータ構造であるRDBについて主に説明する。
トークン管理装置1は、トークン化装置10と復元装置11とを備える。ここで、「トークン」とは、識別情報を秘匿化した情報であり、識別情報と1対1の対応が可能な情報のことをいう。識別情報は、データベースシステム21で管理しているレコードを特定するキー情報(フィールド)であり、利用者の個人情報やIDなど、個人を特定可能な情報を含んでいる場合がある。このため、外部の分析システムで情報を分析する場合、識別情報をトークンに置換して分析システム22に送信する。また、トークン化とは、識別情報をトークンに置き換える処理のことをいう。トークン化は、例えば、IDなどの文字列を特定の文字列(トークン)に置換する処理である。トークン化装置10は、「情報秘匿化装置」として、分析システム22に送信されるデータ中の識別情報をトークン化するとともに、それぞれのトークンが一意の識別情報と対応可能なように対応を記憶して管理する。復元装置11は、分析システム22によって分析された結果に含まれるトークンを元の識別情報に復元する。トークンは、トークン化装置10によって管理されており、トークンと識別情報の一意の対応によって復元される。
トークン管理装置1は、例えば分析者端末とLAN接続された装置によって実施がされる。トークン管理装置1は、独立の装置として構成することもできるが、例えば、トークン化装置と復元装置をそれぞれ独立させても良い。また、複数の装置によってシステムとして構成しても良い。また、ネットワーク上のWebサービスのような仮想的な装置として構成しても良い。さらには、分析者端末20上で実行されるソフトウエアとして実装しても良い。
分析システム22は、情報の分析を行う、例えば分析者の社外の業務委託先のシステムである。分析依頼者が、自前で分析システムを構築した場合、システムの構築や維持に多大のコストが掛かってしまう。このため、分析システムの利用頻度が低く、稼働率が低いことが予想される場合には、計算機資源の有効利用の観点から、外部の分析システムを利用した方が良い。このときに、分析対象の情報をそのまま外部のシステムに預けると、情報の漏洩の危険が生じるため、分析依頼者は、データベースシステム21から収集したデータの中から、情報分析に必要最低限の情報を選択するとともに、万一情報漏洩が発生したとしても被害を少なくするために、識別情報を秘匿化したデータを分析システム22に送信する。
次に、本システムにおけるデータ分析の外部委託処理の概要を、分析データ収集と、分析依頼の二つの手順として説明する。文中の()書きの数字は、図1のステップと対応している。
(分析データの収集)
データベースシステム21のデータベース管理システム211は、分析者端末20からの、SQL(Structured Query Language)やXQueryなどのクエリ(問い合わせ)に応じて(1)、記憶部212に記憶されたデータの検索などのデータベース操作を行う。データベース管理システム211はクエリへのレスポンス(応答)として検索結果等を分析者端末20に返す(2)。この一連の動作によって、分析者端末20は、分析対象となるデータの収集を行う。
(分析依頼)
分析者端末20は、データベースシステム21から収集したデータを基に、分析システム22に送信する分析対象のデータをトークン管理装置1に送信する(3)。分析者端末20は、収集したデータの中で、分析に不要なレコードやフィールドを削除したり、年齢情報を年代情報(20代、30代等)に変更したりする情報の選定をしても良い。この情報の選定は、トークン化装置10で行っても良い。
トークン管理装置1は、送信された分析対象データに含まれる識別情報をトークン化して秘匿化し、分析システム22に送信する(4)。分析システム22は、送信されたデータに含まれる情報を分析して、分析結果をトークン管理装置1に送信する(5)。トークン管理装置1は、分析システム22から送信された分析結果の中で、トークンの部分を元の識別情報に復元して、分析結果を分析者端末20に送信する(6)。以上の手順にて情報分析の外部委託が実施される。
次に、図2を用いて、トークン管理装置1のトークン化装置10の構成を説明する。図2は、トークン化装置の構成の一例を説明する構成図である。
図2において、トークン化装置10は、順序ランダム化装置101(入力データのシャッフリング)、トークン管理部102、識別子発番対応表103、順序ランダム化部104(トークンのランダム化)、及びトークン発生器105を備えている。
順序ランダム化装置101は、入力データのシャッフリングを行う。この実施例では、入力データの中で秘匿したい情報は、識別情報としての「ID」、及び個人情報としての「年齢」であるものとする。IDと年齢は対応付けられて、一つのレコード(データセット)となっている。
順序ランダム化装置101は、格納部1011と、乱数発生部1012と、を備える。格納部1011は、内部の記憶領域である「プール」を有し、入力データをプールに格納する。格納部1011は、所定の格納数(レコード数)の入力データをプールの格納場所に格納する。プールは、レコードを記憶する仮想の配列(テーブル)である。
乱数発生部1012は、プールの格納数に応じた乱数を発生させる。例えば、格納数がn個の場合に対応して、乱数発生部1012は、0〜(n−1)のn個の範囲で乱数を発生させる。
順序ランダム化装置101は、乱数発生部1012で発生させた乱数により、格納部1011のプールに逐次格納されたレコードを任意の順番(ランダム)に取り出す。これにより、データベースシステム21の仕様に依存しているデータの出力順序の規則性を破壊することができるため、データベースシステム21でのデータ出力時のランダム化処理が不要となり、データベースシステム21から高速にデータを出力させることができる。図2では、IDが950001、950002、950003、・・・とIDの昇順でデータが入力されているが、入力データ順序ランダム化部101から出力されるデータは、IDが、950003、950073、950029と、プールされたデータの中からランダムな順序で出力される。
トークン管理部102は、トークン化部1021と、トークン登録部1022とを備える。トークン登録部1022は、入力されたデータのIDについて、そのIDが既に登録されているかを識別子発番対応表103に問い合わせる。識別子発番対応表103には、IDと既に発番されているトークンとが対応づけられて登録されている。識別子発番対応表103は、問い合わされたIDが既に登録済みである場合は、応答としてそのIDのトークン値をトークン登録部1022に返却する(1)。一方、問い合わされたIDの登録が無い場合には、ID未登録の応答を返却する。トークン登録部1022は、ID未登録の応答を受けると、順序ランダム化装置104に対してトークンの発番依頼をする(2)。
順序ランダム化装置104は、格納部1041と、乱数発生部1042と、を備える。格納部1041及び乱数発生部1042は、順序ランダム化装置101の格納部1011及び乱数発生部1012と同様の構成であり、説明は省略する。
順序ランダム化装置104は、トークン管理部102から発番依頼を受けると、トークン発生器105にて発番されたトークンを、順序ランダム化装置101と同様に、格納部1041のプールに入れて、乱数発生部1042によって発生された乱数により、ランダムな順序でトークンを取り出すシャッフリングを行う。
トークン発生器105は、例えばトークンを、00001、00002、00003、のようなシリアル番号として発番する。トークン発生器105は、シリアル番号を発生することにより、発番されたトークンのユニーク(重複)チェックを行う必要がなくなり、処理が高速化される。また、トークン発生器105は、発番されたトークンの番号を記録しておく必要がないため、トークン発生器105の処理負荷が軽減できる。なお、トークン発生器105で発番されるトークンに、例えばシリアル番号に特定の関数を適用させて、それをトークンとして使用しても良い。
発番されたトークンは、順序ランダム化装置104によって、00395、00153、00216のようにランダムな順序にされて、トークン管理部102に送信される(3)。順序ランダム化装置104により発番されたトークンがランダム化されることにより、トークン発生器105で発生させるトークンを発番するときに乱数を発生させる必要がなくなるため、発番の高速化が可能となる。
トークン管理部102のトークン化部1021は、IDをトークンに置換する。また、トークン登録部1022は、送信されたトークン値を、IDと対応付けて、識別子発番対応表103に登録する(4)。トークン管理部102は、トークンと年齢をデータセットにして出力データとして出力する。
次に、識別子発番対応表103の詳細を、図7を用いて説明する。図7は、識別子発番対応表の一例である。
図7において、識別子発番対応表103は、識別子(ID)とトークン値とを対応づけて保存している。ここで識別子(ID)とトークン値とは、一意に対応づけられている。従って、トークン値から識別子に復元することが可能になる。なお、識別子発番対応表103は、トークン値から識別子への復元をすることが目的であるため、例えば、復元の必要がなくなった時点でトークン発生器105と識別子発番対応表103をクリアすることにより、クリア前のトークンとクリア後のトークンが同じ番号で登録されても構わない。
次に、図2で説明したトークン化装置10の動作を、図3のフローチャートを用いて説明する。図3は、トークン化装置10の動作の一例を説明するフローチャートである。
図3において、トークン化装置10には、分析者端末20から、秘匿化する情報を含むデータが入力される(S100)。順序ランダム化装置101は、情報をプールに入力する(S101)。トークン管理部102は、順序ランダム化装置101から、レコード単位でデータを取り出す(S102)。取り出されたレコードは、順序ランダム化装置101によって、取り出される順序がランダム化(シャッフリング)されている。なお、ステップS101及びS102のランダム化装置101の動作詳細については、ランダム化装置104の動作詳細とともに後述する実施形態1〜実施形態3にて説明する。
次に、格納部1011のプールにデータがあるか否かをチェックして(S103)、もしデータが全て処理されていれば(S103でNO)、このフローチャートでの処理を終了し、データがプールに残っている場合には(S103でYES)、ID部分が識別子発番対応表103に既に存在しているか否かをチェックする(S104)。
ID部分が既存の場合(S104でYES)、識別子発番対応表103は、問い合わされたIDに対してトークン値を返却し、トークン化部1021は、トークン値でID部分を置き換えて(S105)、レコード単位の情報が出力される(S106)。
一方、ID部分が識別子発番対応表103に無い場合(S104でNO)、トークン登録部1022は、順序ランダム化装置104にトークン値を要求する(S107)。トークン発生器105は予めトークンを発生させておき、順序ランダム化装置に入力してランダム化されたトークンが準備されている(S108)、トークン登録部1022は、IDとトークンを対応づけて識別子発番対応表103に登録する(S109)。そして、トークン化部1021は、トークン値でID部分を置き換えて(S105)、レコード単位で情報が出力する(S106)。以上の処理は、順序ランダム化装置101の格納部1011のデータが無くなるまでループ処理される(S103)。
次に、図3のステップS101の情報入力処理の詳細を、図4を用いて説明する。図4は、順序ランダム化装置101及び順序ランダム化装置104のデータ入力の一例を説明するフローチャートである。なお、以下の説明で、順序ランダム化装置101及び順序ランダム化装置104に共通するものは、「順序ランダム化装置」のように符号の記載を省略している。
図4において、順序ランダム化装置は、情報の入力があると(S1011)、プールに空きがあるか否かをチェックする(S1012)。プールに空きが無い場合には(S1012でNO)、空きが出るまで情報の保存が待ち状態となる。これにより、プールは入力される情報が終了するまで、確保されたプールを常に全て使用することとなる。
プールに空きがあった場合(S1012でYES)、情報をプールに保存する(S1013)。
次に、図3のステップS102の情報出力処理の詳細を、図5を用いて説明する。図5は、順序ランダム化装置のデータ出力の一例を説明するフローチャートである。
図5において、図2のトークン管理部102は、順序ランダム化装置に対して情報要求を行う(S1021)。次に、順序ランダム化装置は、プールからランダムに一つの情報を取り出して(S1022)、トークン管理部102に情報を出力する(S1023)。
次に、図3で説明した、ステップ108の処理の詳細を、図6を用いて説明する。図6は、順序ランダム化装置104の処理の一例を説明するフローチャートである。
図6において、順序ランダム化装置104は、トークン値の発生をトークン発生器105に要求して、トークン値を発生させる(S1081)。トークン発生器105はトークン値を発生させて、発生させたトークン値を順序ランダム化装置104に入力する(S1082)。順序ランダム化装置104のプールに空きがある場合は(S1083でYES)、順序ランダム化装置104は、続けてトークン発生器105にトークン値を発生させて、プールに空きが無くなるまで(S1083でNO)処理を繰り返す。つまり、順序ランダム化装置104は、トークン管理部102からの発番依頼がされる前にプールにトークン値を事前に準備しておく。これにより、発番依頼があってからトークン値を発番する場合に比べて、トークン値の発番からプールへの保存までのオーバーヘッドが無くなり、処理の高速化が可能になる。
次に、図3のステップS101とステップS102で説明したプールの管理アルゴリズムについて、以下、実施形態1〜実施形態3にて詳細に説明する。
順序ランダム化装置におけるプールの大きさや管理方法は、ランダム化の性能に大きく影響する。実施形態1〜実施形態3では、それぞれのプール管理アルゴリズムについてデータの入出力処理の方法が相違している。なお、ランダム化装置101とランダム化装置104は、以下のいずれの実施形態で実施しても良く、例えば、ランダム化装置101とランダム化装置104とで、同じ実施形態で実施しても良いし、それぞれ異なった実施形態で実施しても良い。
[第1の実施形態]
第1の実施形態は、格納数nのプールを用意して、入力データを格納数分入力して、格納数までを発番可能な乱数を用いることにより、格納場所からランダムの順序にデータを出力する。データを出力した格納場所は空きとなる。空きとなった格納場所は、例えば次に入力されるデータによって上書きされながら補充される。また、空きとなった格納場所を後ろのデータにて順次前詰めしても良い。乱数の発生は格納個数の範囲で行い、データベースシステムにおけるランダム化処理はしないため、処理が高速化できる。
図8〜図11を用いて、第1の実施形態を説明する。図8は、第1の実施形態における順序ランダム化装置の初期処理の一例を説明するフローチャートである。図9は、第1の実施形態における順序ランダム化装置のプール保存の一例を説明するフローチャートである。図10は、第1の実施形態における順序ランダム化装置のプールからの取出しの一例を説明するフローチャートである。さらに、図11は、第1の実施形態における仮想配列の一例を説明するイメージ図である。
図8において、順序ランダム化装置の初期処理は、図4におけるステップS1011における初期処理である。初期処理は、データベースシステム21から新たな入力データが入力されたときに1回行われる。順序ランダム化装置は、データサイズに応じたプール(仮想配列)を確保する。本実施例では、0〜(n−1)のn個のプールを確保している(S10111)。次に、確保したプールの「格納個数」を0にセットして(S10112)、初期化処理を終了する。格納個数は、実際に情報が入力されたプールの数を計数するカウンタであり、この値を格納個数分、フルに保つように入力データを逐次入力する。
図9において、順序ランダム化装置の入力データのプール保存は、図4におけるステップ1013の処理の詳細を説明したものである。順序ランダム化装置は、プールの空いている格納場所に入力データを格納する(S10131)。次に、格納個数に1を追加してカウンタをインクリメントして処理を終了する(S10132)。
図10において、順序ランダム化装置のプール取出しは、図5におけるステップS1022の詳細を説明したものである。図2のランダム発生器105は、0〜(格納個数−1)の間の整数rを発生する乱数にて、取り出し対象の格納場所を特定する仮想配列の番号である整数rをランダムに生成する(S10221)。次に、プールのr番目に格納されているデータを取り出して、取り出された格納場所は番号が詰められて(S10222)、仮想配列の番号に抜けが無いようにする。次に格納個数に−1を追加して、カウンタをデクリメントして終了する(S10223)。
図11は、プールで使用される格納場所の仮想配列を説明するイメージ図である。プールには、仮想配列の番号0〜nに対応してデータが格納されている。仮想配列は同一のデータ型がメモリ上に連続して接しているとみなされる仮想的な配列であり、プログラミング上の特定のオペレータによって配列の長さを指定できる。図11では、nが指定されており、n+1個のデータ配列の場合を表している。配列の長さは生成される乱数と対応している。
以上説明した第1の実施形態においては、格納場所に空きができると次の入力データがすぐに格納されるため、入力されるデータはプールに載せられるだけ載せられることになる。入力データのランダム化は、プールの格納個数が大きい(仮想配列が長い)程入力データの順番をランダムに並び替えるシャッフル効果が高い。しかし、大きなプールを使うには大きなメモリリソースが必要になる。このため、初期化で確保するプールの格納数は、入力されるデータサイズや情報秘匿の必要性によって適宜調整される。
[第2の実施形態]
第1の実施形態においては、一度プールに格納されたデータは、同確率でプールから取り出されるため、先に格納されたデータほど先に取り出される確立が高くなる。つまり、取り出されるデータの順番が入力順序に依存することになる。そこで、第2の実施形態においては、プールの構造によって、第1の実施形態の課題を改善している。
第2の実施形態の概要を図12及び図13を用いて説明する。図12は、第2の実施形態におけるプール管理の概要の一例を説明する図である。図13は、2の実施形態におけるプール配列の一例を説明する図である。
図12において、順序ランダム化装置は、格納部にプール管理情報を備えている。プール管理情報には、プール配列の要素数(L)、乱数終了値、情報追加する要素番号(0〜L−1)、情報追加するカウンタ、1要素に情報追加する数、及びプールに格納する数(L以下)が記録される。要素数L個に設定されたプール配列の1要素の詳細は、重み、乱数アクセス用開始ポイント、乱数アクセス用終了ポイント、レコードを格納する仮想配列である。
プール管理情報の初期設定において、プール配列の要素数(L)、1配列に情報追加する数、プールに格納する数、各要素の重みが設定される、他の項目の初期値は0又はNULLである。
図13において、この実施例ではプール配列Lは4である。すなわち、0〜4の5つの要素を備え総データ数よりここでは、上記「プールに格納する数」を4として、最後の1要素は空きとしている。例えば、配列番号0は、重み:1、格納個数:48、乱数アクセス用開始ポイント:0、…、データを格納する仮想配列(48要素)と設定される。また、配列番号1〜3も図13に図示すように設定されている。
ここで、「重み」とは、各配列間において格納個数に対して、1レコードに割り当てられる乱数の数である。例えば、配列番号0では重み1であり、一つのレコードに一つの乱数が割り当てられ、一方、配列番号3では重み8であり、一つのレコードに8の乱数が割り当てられる。したがって、配列番号0では48×1=48個の乱数が割り当てられて、配列番号1では32×2=64個、配列2では21×4=84個、配列3では8×9=72個の乱数が割り当てられる。つまり、重みが低い場合には格納するレコードの個数を増やして1レコードに割り当てられている乱数の幅を狭くする一方、重みが高い場合には、逆に格納するレコードの個数を減らして1レコードに割り当てられている乱数の幅を広くしている。
本実施形態においては、配列番号が後ろの要素に対して、配列番号が前の要素より重みを高く設定している。このプールの管理方法によって、格納された情報が取り出される確率を調整して、シャッフル効果を高くすることができる。
この実施例では、上記の通り、発生させる乱数の個数は、48+64+84+72=268個であるため、乱数の幅は0〜267である。例えば、乱数が153であったとすると、プールから取り出されるレコードは、配列番号2の仮想配列10となる。レコードを一つ取り出した場合、取り出したレコードの後ろのレコードは順次前詰にされていく。したがって、配列番号3の要素数は9→8へと減算されることになり、次のレコードが追加されると再び要素数が9に戻ることになる。
次に、第2の実施形態における動作を図14〜図16のフローチャートを用いて説明する。図14は、第2の実施形態における順序ランダム化装置の初期処理の一例を説明するフローチャートである。図15は、第2の実施形態における順序ランダム化装置の保存動作の一例を説明するフローチャートである。図16は、第2の実施形態における順序ランダム化装置部のプール取出し動作の一例を説明するフローチャートである。
図14において、先ず、プール(仮想配列)に格納する数を仮決めする(S211)。仮決めされた格納数を基に、プールの分割数Lを決める(S212)。この分割数が図12で説明した「プール配列の要素数(L)」になる。
次に、プール(仮想配列)に格納する数を決める(S213)。この数は、分割数Lを決めた上で、実際に使用する数を決めるものであり、L以下で任意に設定可能である。
次に、図12で説明したプール管理情報の初期化を行う(S214)。具体的には、乱数終了値、情報追加する要素番号、及び情報追加するカウンタを0にセットする。
次に、プール配列の確保と初期化を行う(S215)。具体的には、「乱数アクセス用開始ポイント」、及び「乱数アクセス用終了ポイント」に0をセットする。また、「データを格納する仮想配列」は、1要素に情報追加する数の仮想配列を用意する。さらに、「重み」はプール配列の順番が大きいほど大きい値にする。図13においては1、2、4、8、16・・・を例示している。以上で、初期処理を終了する。
図15において、順序ランダム化装置の保存動作は、先ず、情報入力がされると(S200)、「情報追加する要素番号」から、データを格納するプール配列の要素を求める(S201)。
次に、その要素の「要素のデータを格納する仮想配列」の「情報追加するカウンタ」番目にデータを格納して、次の操作を行う(S202)。「情報追加するカウンタ」をインクリメントする(++)。「乱数アクセス用終了ポイント」に重みを加算代入する(+=重み)。「乱数終了値」に重みを加算代入する(+=重み)。
次に、「情報追加するカウンタ」が「1要素に情報追加する数」になったか否かを判断し(S203)、NOである場合は本フローチャートの動作を終了する。
ステップS203でYESの場合、情報を追加する要素がL番目のプール配列の要素であるか否かを判断し(S204)、NOである場合には、「情報追加する要素番号」をインクリメントし、追加するカウンタを0、次のプール配列の要素の「乱数アクセス用開始ポイント」と、「乱数アクセス終了ポイント」の値を求めセットする(S205)。一方、ステップS204でYESの場合には、プール配列の1番目を0番目にマージして1番目を空にし、1番目が空いた分、1つずつ前詰めして移行させ、L番目が空の状態になるようにする。
図16において、順序ランダム化装置部のプール取出し動作は、先ず、0〜乱数終了値の間の整数rをランダムに生成する(S221)。整数rは、例えば使用するプログラミング言語の最大値を指定した整数乱数生成関数によって得ることができる。整数rを決定する乱数は、取出しのタイミングで逐次生成する。しかし、例えば取出しのタイミングとは非同期に乱数を用意しておき、取出しのタイミングで整数rに適用しても良い。特に乱数の計算に時間が掛かる場合には、事前準備によって処理を高速化することができる。
次に、プール配列の「乱数アクセス用開始ポイント」と「乱数アクセス用終了ポイント」から、整数rに対応するプール配列の要素を求める(S222)。図12及び図13で説明したとおり、整数rによって対応する配列が一意に決まることになる。
次に、プール配列の要素からrに該当するレコードのデータを格納する仮想配列の格納場所を求め取出し、取り出した格納場所は後ろのレコードによって前詰めされる(S223)。前詰めのタイミングは、レコードを取り出して直ぐに行う。但し、例えば、所定数のレコードを読出してから一度に所定数分前詰めしても良い。その場合、読出しに使用される整数rについて、空のレコードが指定された場合の整数rの再指定について考慮しておく。これにより、保存と読出しの処理を非同期に行うことも可能となる。
次に、プール配列の要素以降の「乱数アクセス用開始ポイント」、「乱数アクセス用終了ポイント」、及び「乱数終了値」のメンテナンスを行う(S224)。レコードが前詰めされた場合、上記各設定値も前詰めに合わせて変更される。しかし、ステップS223で説明したとおり、前詰めのタイミングによっては上記メンテナンスのタイミングも変わってくる。以上で順序ランダム化装置部のプール取出し動作を終了する。
[第3の実施形態]
第1の実施形態、および第2の実施形態おいては、プール配列によって入力データのシャッフリングを行ったが、例えば、データベースのレコード数が多く、レコードの登録日や更新日順に入力されるデータに対しては、実施形態1又は2における局所的な並び替えでは全体的なシャッフリングが不十分となる場合がある。そこで、第3の実施形態においては、データ全体をランダム化することにより、より高いシャッフリング効果を得ることができる。
第3の実施形態を、図17〜図19によって説明する。図17は、第3の実施形態における概要を説明する図である。図18は、第3の実施形態における順序ランダム化装置の初期処理の一例を説明するフローチャートである。図19は、第3の実施形態における順序ランダム化装置の動作の一例を説明するフローチャートである。
図17において、順序ランダム化装置のプールは、n個のテーブルを有する2次記憶装置に接続されている。プールに入力された全入力データは、n個のテーブルにランダムに全て分配されて記憶される。それぞれのテーブルに記憶されたデータは、各テーブル毎にランダムに指定されて読出されて出力データとなる。
図18において、順序ランダム化装置の初期処理は、先ず、プールの内部を複数に分割して、テーブル用キャッシュを作れる数をnとする(S310)。プールは2次記憶とのデータのキャッシュで使用するだけなので、容量についてはキャッシュとして十分であれば良い。それぞれのキャッシュは2次記憶の入出力キャッシュとして使用される。
次に、n個の集合を管理するテーブルを2次記憶上に作成する(S311)。
次に、入力データを1つずつ読み込みながら、1〜nの乱数を生成して、生成された乱数に対応するプールに作成されたテーブル用キャッシュに格納し、一杯になったら2次記憶上のテーブルに退避させる(S312)。
次に、各テーブル毎に、ランダムに最初の読み出し位置と読み出し順(前から後、後ろから前)を決めセットする(S313)。読み出しテーブルを1とする。
図19において、順序ランダム化装置のプールからの取出しは、先ず、読み出しテーブルがないか否かを判断する(S300)。読み出しテーブルが無い場合には、このフローチャットの動作を終了する(S300でYES)。読み出しテーブルがある場合(S300でNO)、読み出しテーブルからデータを取出す(S301)。
次に、読み出しテーブルのスキャンが一巡したか否かを判断する(S302)。スキャンが一巡した場合(S302でYES)、読み出しテーブルから除外する(S303)。
次に、読み出しテーブルがないか否かを判断する(S304)。読み出しテーブルがある場合(S304でNO)、又は読み出しテーブルのスキャンが一巡していない場合(S302でNO)、読み出しテーブルを次に勧める(S305)。
全てのテーブルの読み出しが終了した場合(S304でYES)、順序ランダム化装置のプールからの取出し処理を終了する。
[第4の実施形態]
第1の実施形態〜第3の実施形態は、トークン管理装置1の順序ランダム化装置についての実施形態であったが、同様の順序ランダム化装置は、データベースシステムの中に構築することもできる。順序ランダム化装置をデータベースシステムの中に構築することで、検索結果の規則性を無くすことができ、出力データの順番によるデータの特性がデータベースシステム外部に漏れることを防ぐことができる。
第4の実施形態を、図20を用いて説明する。図20は、第4の実施形態におけるシステム全体構成の一例を説明する構成図である。
図20において、データベースシステム31は、データベース管理システム311と記憶部312を備えている。データベース管理システム3111は、コマンド処理部3111、および順序ランダム化装置3112を備えている。なお、図20において、データベースシステム31以外の他の装置は、既に説明した第1の実施形態〜第3の実施形態と同じものについては同じ符号を付して説明を省略する。コマンド処理部3111は、順序ランダム化装置3112を介して記憶部312と接続されており、記憶部312からデータを読み出す際に順序ランダム化装置3112にてデータがランダム化される。ランダム化装置内部のプールの管理方法は第1の実施例から第3の実施例と同様である。
第4の実施形態においては、データベースの出力段階にプールを入れることにより、データベースの内部構造から分離した高速な出力が可能になる。これによりデータベースの内部構造がデータベースシステム31の外部からは見えなくなる。また、順序ランダム化装置3112にアクセス制限を設け、順序ランダム化装置3112の存在を意識することなくデータの出力が可能になり、データベースシステムのデータ出力特性を秘匿化することが可能になる。
また、第4の実施形態は、第1の実施形態から第3の実施形態との併用が可能である。両者の併用によって、シャッフリングの効果を高めることができ、順序ランダム化装置3112にアクセス可能な場合は、それぞれの順序ランダム化装置にて、ランダム化の負荷を分散させることができる。
図21は、トークン管理装置1のコンピュータシステムの一例を示すブロック図である。図21に示すトークン管理装置1は、CPU12、記憶部13、インタフェース(I/F)14、入力装置15、及び表示部16がバス17により接続された構成を有する。尚、CPU12と、記憶部13、I/F14、入力装置15、及び表示部16との接続は、図21に示すバス接続に限定されるものではない。
図21において、CPU12は、記憶部13に格納されたプログラムを実行することによりトークン管理装置1全体を制御する。記憶部13は、半導体記憶装置、磁気記録媒体、光記録媒体、光磁気記録媒体等のコンピュータ読み取り可能な記憶媒体で形成可能であり、上記のプログラムや各種データを格納すると共に、CPU12が実行する演算の中間結果や演算結果等を一時的に格納する一時メモリとしても機能する。記憶部13は、図2に示す識別子発番対応表103の記憶部としても機能する。I/F14は、分析者端末20や分析システム20とネットワーク(図示せず)を介しての通信を行うインタフェースである。入力装置15は、キーボード等により形成可能である。表示部16は、ディスプレイ等により形成可能である。入力装置15及び表示部16は、タッチパネルのように入力装置と表示部の両方の機能を有する入出力装置で形成しても良い。
CPU12は、記憶部13に格納されたプログラムを実行することにより、コンピュータシステムをトークン管理装置1として機能させる。つまり、図2で説明したトークン化装置10の順序ランダム化装置101、104、トークン管理部102、識別子発番対応表103は、プログラムの機能として記憶部13の記憶領域に実装されて、CPU12により実行されるようにすることができる。
以上、本発明を実施するための形態について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
本発明は、以下に記載する付記のような構成が考えられる。
(付記1)
識別情報を含むデータが入力されて、入力された前記データをランダムの順序で出力する第1のランダム化装置と、
前記第1のランダム化装置から出力された前記データの前記識別情報をトークンで置換するトークン化部と、を備えた情報秘匿化装置。
(付記2)
前記第1のランダム化装置は、
所定の格納数の格納場所を有して、入力された前記データを前記格納場所に逐次格納する第1の格納部と、
前記第1の格納部の格納数に応じた第1の乱数を生成させる第1の乱数生成部と、を備え、
前記第1の乱数によってランダムに特定される前記第1の格納部の格納場所から格納された前記データを取り出して出力する付記2に記載の情報秘匿化装置。
(付記3)
前記第1の格納部の格納場所は、入力順序が早い入力データに対して入力順序が遅い入力データを優先的に取り出す付記1又は2に記載の情報秘匿化装置。
(付記4)
前記トークンを発生させるトークン発生器と、
前記トークン発生器で発生された前記トークンが入力されて、入力された前記トークンをランダムの順序で出力する第2のランダム化装置と、をさらに備えた付記1乃至3のいずれか一に記載の情報秘匿化装置。
(付記5)
前記第2のランダム化装置は、
所定の格納数の格納場所を有して、入力された前記トークンを前記格納場所に逐次格納する第2の格納部と、
前記第2の格納部の格納数に応じた第2の乱数を生成させる第2の乱数生成部と、を備え、
前記第2の乱数によってランダムに特定される前記第2の格納部の格納場所から格納された前記トークンを取り出して出力する付記4に記載の情報秘匿化装置。
(付記6)
前記第2の格納部の格納場所は、入力順序が早い入力データに対して入力順序が遅い入力データを優先的に取り出す付記4又は5に記載の情報秘匿化装置。
(付記7)
識別情報を含むデータが入力されて、入力された前記データをランダムの順序で出力する第1のランダム化処理と、
前記第1のランダム化処理で出力された前記データの前記識別情報をトークンで置換するトークン化処理と、をコンピュータが実行する識別情報の情報秘匿化方法。
(付記8)
前記第1のランダム化処理は、
所定の格納数の格納場所を有して、入力された前記データを前記格納場所に逐次格納する第1の格納処理と、
前記第1の格納処理の格納数に応じた第1の乱数を生成させる第1の乱数生成処理と、を備え、
前記第1の乱数によってランダムに特定される前記第1の格納処理で格納される格納場所から格納された前記データを取り出して出力する処理をコンピュータが実行する付記7に記載の識別情報の情報秘匿化方法。
(付記9)
前記第1の格納処理は、入力順序が早い入力データに対して入力順序が遅い入力データを優先的に取り出す付記7又は8に記載の情報秘匿化方法。
(付記10)
前記トークンを発生させるトークン発生処理と、
前記トークン発生処理で発生された前記トークンが入力されて、入力された前記トークンをランダムの順序で出力する第2のランダム化処理と、をさらに備えた付記7乃至9のいずれか一に記載の情報秘匿化方法。
(付記11)
前記第2のランダム化処理は、
所定の格納数の格納場所を有して、入力された前記トークンを前記格納場所に逐次格納する第2の格納処理と、
前記第2の格納処理の格納数に応じた第2の乱数を生成させる第2の乱数生成処理と、を備え、
前記第2の乱数によってランダムに特定される前記第2の格納処理で格納される格納場所から前記トークンを取り出して出力する付記10に記載の情報秘匿化方法。
(付記12)
前記第2の格納処理は、入力順序が早い入力データに対して入力順序が遅い入力データを優先的に取り出す付記4又は5に記載の情報秘匿化方法。
(付記13)
クエリを受け付けるコマンド処理部と、
前記コマンド処理部からの指示によって記憶しているデータを出力する記憶部と、
ランダム化装置と、を備えたデータベースシステムであって、
ランダム化装置は、
所定の格納数の格納場所を有して、前記記憶部から出力されたデータを前記格納場所に逐次格納する格納部と、
前記格納部の格納数に応じた乱数を生成させる乱数生成部と、を備えたデータベースシステム。
1 トークン管理装置
10 トークン化装置
101、104 順序ランダム化装置
1011、1041 格納部
1012,1042 乱数発生部
102 トークン管理部
1021 トークン化部
1022 トークン登録部
103 識別子発番対応表
105 トークン発生器
11 復元装置
12 CPU
13 記憶部
14 インタフェース
15 入力装置
16 表示部
17 バス
20 分析者端末
21、31 データベースシステム
211、311 データベース管理システム
212、312 記憶部
22 分析システム
3111 コマンド処理部
3112 順序ランダム化装置

Claims (8)

  1. 識別情報を含むデータが所定の格納数の格納場所に入力されて、入力された前記データを、前記格納場所から、入力順序が早い入力データに対して入力順序が遅い入力データを優先的に、ランダムの順序で出力する第1のランダム化装置と、
    前記第1のランダム化装置から出力された前記データの前記識別情報をトークンで置換するトークン化部と、を備えた情報秘匿化装置。
  2. 前記第1のランダム化装置は、
    前記格納場所を有して、入力された前記データを前記格納場所に逐次格納する第1の格納部と、
    前記第1の格納部の格納数に応じた第1の乱数を生成させる第1の乱数生成部と、を備え、
    前記第1の乱数によってランダムに特定される前記第1の格納部の格納場所から格納された前記データを取り出して出力する請求項に記載の情報秘匿化装置。
  3. 前記トークンを発生させるトークン発生器と、
    前記トークン発生器で発生された前記トークンが入力されて、入力された前記トークンをランダムの順序で出力する第2のランダム化装置と、をさらに備えた請求項1又は2記載の情報秘匿化装置。
  4. 前記第2のランダム化装置は、
    所定の格納数の格納場所を有して、入力された前記トークンを前記格納場所に逐次格納する第2の格納部と、
    前記第2の格納部の格納数に応じた第2の乱数を生成させる第2の乱数生成部と、を備え、
    前記第2の乱数によってランダムに特定される前記第2の格納部の格納場所から格納された前記トークンを取り出して出力する請求項に記載の情報秘匿化装置。
  5. 前記第2の格納部の格納場所は、入力順序が早い入力データに対して入力順序が遅い入力データを優先的に取り出す請求項に記載の情報秘匿化装置。
  6. 識別情報を含むデータが所定の格納数の格納場所に入力されて、入力された前記データを、前記格納場所から、入力順序が早い入力データに対して入力順序が遅い入力データを優先的に、ランダムの順序で出力する第1のランダム化処理と、
    前記第1のランダム化処理で出力された前記データの前記識別情報をトークンで置換するトークン化処理と、をコンピュータが実行する識別情報の情報秘匿化方法。
  7. データに含まれる識別情報をトークンで置換するトークン化部と、
    前記トークン化部で出力されたデータが所定の格納数の格納場所に入力されて、入力された該データを、前記格納場所から、入力順序が早い入力データに対して入力順序が遅い入力データを優先的に、ランダムの順序で出力する第一のランダム化装置と、を備えたことを特徴とする識別情報の情報秘匿化装置。
  8. データに含まれる識別情報をトークンで置換するトークン化処理と、
    前記トークン化処理で出力されたデータが所定の格納数の格納場所に入力されて、入力された該データを、前記格納場所から、入力順序が早い入力データに対して入力順序が遅い入力データを優先的に、ランダムの順序で出力する第一のランダム化処理と、をコンピュータが実行する識別情報の情報秘匿化方法。
JP2013070339A 2013-03-28 2013-03-28 情報秘匿化装置、情報秘匿化方法 Expired - Fee Related JP6098294B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013070339A JP6098294B2 (ja) 2013-03-28 2013-03-28 情報秘匿化装置、情報秘匿化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013070339A JP6098294B2 (ja) 2013-03-28 2013-03-28 情報秘匿化装置、情報秘匿化方法

Publications (2)

Publication Number Publication Date
JP2014194621A JP2014194621A (ja) 2014-10-09
JP6098294B2 true JP6098294B2 (ja) 2017-03-22

Family

ID=51839846

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013070339A Expired - Fee Related JP6098294B2 (ja) 2013-03-28 2013-03-28 情報秘匿化装置、情報秘匿化方法

Country Status (1)

Country Link
JP (1) JP6098294B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101704702B1 (ko) * 2016-04-18 2017-02-08 (주)케이사인 태깅 기반의 개인 정보 비식별화 시스템 및 방법
JP6916708B2 (ja) * 2017-10-16 2021-08-11 三菱電機インフォメーションネットワーク株式会社 データ管理システム、サーバ装置、データ利用装置、サーバプログラムおよびデータ利用プログラム
US10728022B2 (en) * 2017-12-28 2020-07-28 Fujitsu Limited Secure hash operations in a trusted execution environment
JP2019179346A (ja) * 2018-03-30 2019-10-17 株式会社エクサウィザーズ 情報処理装置、情報処理システム、プログラム
JP6914975B2 (ja) * 2019-01-07 2021-08-04 株式会社東芝 情報処理システム、情報処理装置、情報処理方法およびプログラム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7158979B2 (en) * 2002-05-22 2007-01-02 Ingenix, Inc. System and method of de-identifying data
JP2007287102A (ja) * 2006-04-20 2007-11-01 Mitsubishi Electric Corp データ変換装置
JP2007317075A (ja) * 2006-05-29 2007-12-06 Hitachi Ltd 個人情報分割装置及び個人情報分割方法

Also Published As

Publication number Publication date
JP2014194621A (ja) 2014-10-09

Similar Documents

Publication Publication Date Title
JP6098294B2 (ja) 情報秘匿化装置、情報秘匿化方法
Hankins et al. Data morphing: An adaptive, cache-conscious storage technique
CN109891402A (zh) 可撤销和在线模式转换
US7558802B2 (en) Information retrieving system
CN103810224B (zh) 信息持久化和查询方法及装置
CN107608773A (zh) 任务并发处理方法、装置及计算设备
US8386445B2 (en) Reorganizing database tables
JP2011510379A5 (ja)
CN107038222A (zh) 数据库缓存实现方法及其系统
CN104750727B (zh) 一种列式内存存储查询装置及列式内存存储查询方法
CN110473100A (zh) 一种基于区块链系统的交易处理方法及装置
Ashkiani et al. GPU LSM: A dynamic dictionary data structure for the GPU
KR100620125B1 (ko) 공간 데이터 웨어하우스에서 부분 색인 전송을 이용한 색인재구성 시스템 및 방법
US20180075080A1 (en) Computer System and Database Management Method
WO2010084754A1 (ja) データベースシステム、データベース管理方法、データベース構造および記憶媒体
Oosterhuis et al. The potential of learned index structures for index compression
JPWO2011070910A1 (ja) データ配置・計算システム、データ配置・計算方法、マスタ装置、及びデータ配置方法
Lester et al. Efficient online index construction for text databases
CN110020272A (zh) 缓存方法、装置以及计算机存储介质
Asadi et al. Dynamic memory allocation policies for postings in real-time twitter search
EP4024226A1 (en) Query tree labeling and processing
CN103353891B (zh) 数据库管理系统及其数据处理方法
JP6402600B2 (ja) データベース装置、データ管理方法、及びプログラム
JP2019074874A (ja) 名寄せシステムおよびプログラム
JP6245571B2 (ja) データ構造、データ生成装置、その方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151204

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161027

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161101

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161226

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170124

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170206

R150 Certificate of patent or registration of utility model

Ref document number: 6098294

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees