(57)【要約】【課題】パターン、特徴を保持しつつ個人を特定できない文字列に変換する。【解決手段】ＤＢに登録されているマスク対象となる個人情報の文字列を全て取得し、パターンや特徴を抽出する。それを元に（１）個人を特定する文字列は、マスク後のＤＢに存在しない。（２）個人を特定する文字列の要素となる文字は、マスク後のＤＢに全て存在する。（３）個人を特定する文字列がＤＢに複数個存在する場合は、マスク後のＤＢに同じ数だけ対応するマスク後の文字列が存在する。（４）個人を特定できない記号やスペースなどの文字および文字列又は文字列の一部が存在する場合は、マスク後のＤＢに同じ場所、同じ数だけ存在する。（５）個人を特定する文字列の要素となる文字は、マスク後のＤＢのマスクされた文字列と同じ文字列の開始位置に存在する、これら５条件が成立するように置換する。【選択図】      図１
2011034264.tif 000002
【特許請求の範囲】
【請求項１】
既存システムのデータベースに登録されている個人情報を含む文字列を、システム開発に用いるテストデータとしてはそれと同等の価値を有するが、個人を特定できない文字列に変換するマスキングシステムであって、
入力ファイル及びマスク対象項目を示すパラメタを読み込むデータ読込装置と、
該データ読込装置が読み込んだマスク対象となる文字列を解析してパターンや特徴を抽出する文字列解析装置と、
該文字列解析装置による解析結果に基づいてマスク対象となる前記文字列を個人情報が特定できない文字列に置換する文字列置換装置と、
該文字列置換装置が置換したマスク後の文字列が、個人情報を特定できない情報に完全に置換されているか否かを検証するデータ検証装置と、
該データ検証装置による検証がなされたマスク後の文字列のデータを出力ファイルとして出力するデータ出力装置
とを有するマスキングシステム。
【請求項２】
請求項１に記載したマスキングシステムであって、
前記文字列解析装置は、
前記データ読込装置が読み込んだ入力情報の件数、最大文字長を算出して、該入力情報を格納すべき文字列データテーブルを作成する文字列データテーブル作成手段と、
該文字列データテーブル作成手段が作成した文字列データテーブルに前記入力情報を格納する入力情報格納手段と、
いずれの文字を置換し、いずれの文字を置換しないかを管理する置換管理テーブルを作成する置換管理テーブル作成手段と、
重複する行数を保持、管理する重複管理テーブルを作成する重複管理テーブル作成手段と
を有し、
前記文字列置換装置は、
前記置換管理テーブル作成手段が作成した前記置換管理テーブルから値を読み込む値読込手段と、
該値読込手段が読み込んだ値が１のときに前記置換管理テーブルに対応する前記文字列データテーブルのセルと、ランダムに取得した行に対応する前記文字列データテーブルのセルとを置換する置換手段と、
該置換手段が置換したセルに対応する前記置換管理テーブルに０を代入する０代入手段と、
前記置換管理テーブルの値がすべて０になったときに、前記重複管理テーブルを参照し、その値に対応する行に文字列データテーブルの値を代入する重複行置換手段と
を有することを特徴とするマスキングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースに登録されている個人情報のパターンや特徴を保持した状態で、かつ個人を特定できないようにするマスキングシステムに関する。
【背景技術】
【０００２】
近年、個人情報漏えいが危惧される中、企業としては個人情報に対して細心の注意を払い、慎重に取り扱う必要がある。一方、企業内のコンピュータシステムは、システム開発会社に外注することが多くなされている。既存システムのリプレイスといったシステム開発の作業においては、システム開発会社は、顧客である企業から個人情報をマスクした既存システムのデータを一時的に預かってシステム開発を進める。
【０００３】
一般的に個人情報のマスク方法は個人情報がどこにあるかを顧客（企業内コンピュータシステムのユーザである企業）に確認してもらい、手作業又はツールにより個人情報を含む文字の削除や「***」「XXX」といった無意味な文字列への置換、または氏名であれば「山田太郎１、山田太郎２」などの一定の取り決めた形式による一括置換をすることで個人情報の参照をできないようにする。これらのマスクを実施するために、データベースやテキストファイルなどの大量の文字情報から、どこに個人情報があるかを抽出し、その個人情報が氏名や住所を表す文字であるかを認識する手法やツールが検討され開発・利用されている。このようなマスキング処理および文字認識に関する公知技術文献としては特許文献１があげられる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−９４５４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
マスクは個人情報を特定できないように文字を隠すことが目的である。したがって、マスク後の個人情報をどのように変更するかについては検討されないことが多い。そのため顧客（企業内コンピュータシステムのユーザ）が変更した一定のパターンに置換した文字列や顧客からヒアリングした範囲で、システム開発会社側はデータを認知する必要がある。そのため、顧客が認知できていないデータに潜むパターンや特徴を考慮しないままシステム開発を進め、結果的にデータ移行後や顧客による運用テスト工程などの後工程に進むまで潜在化しているデータのパターンや特徴が検知できない。結果的に以下のような問題が発生する。
【０００６】
例えば、データベースに登録されている顧客の認識しているデータは次の６つの特徴を有するものと仮定する。
（１）漢字氏名は全て全角漢字（第１水準、第２水準）で登録されている。
（２）漢字氏名は同じ名前が登録されていない。
（３）漢字氏名は姓と名の間には全角１文字の空文字が登録されている。
（４）カナ氏名は全て全角カナで登録されている。
（５）カナ氏名は姓と名の間には全角１文字の空文字が登録されていない。
（６）漢字住所は全て「東京都」が省略されて登録されている。
【０００７】
尚、顧客から預かることができたデータは、例えば１万件の漢字氏名は全て「山田  太郎１〜山田  太郎１００００」に置換、カナ氏名は全て「ヤマダタロウ１〜ヤマダタロウ１００００」に置換、住所は全て「ＸＸＸＸＸ」に置換した場合を仮定する。
【０００８】
ここで、実際に顧客の運用していたデータベースに登録されているデータは、次のような問題を有していたと仮定する。
（１）漢字氏名は外字が一部登録されていた。
（２）漢字氏名は同じ名前が一部登録されていた。
（３）漢字氏名は姓と名の間がないもの、および全角２文字以上の空文字が一部登録されていた。
（４）カナ氏名は半角カナが混在して一部登録されていた。
（５）カナ氏名は姓と名の間には半角１文字以上の空文字が一部登録されていた。
（６）漢字住所は「東京都」から一部登録されていた。
【０００９】
これにより、例えば以下のシステム影響が運用テスト工程において発生する。
（１）漢字氏名に外字が登録されていたため帳票に正しく氏名が出力されなかった。
（２）漢字氏名を改ページ条件にして帳票を出力していたが、同じ名前が登録されていたため改ページされなかった。
（３）漢字氏名を姓と名に分割して帳票の出力する位置を姓と名の文字数により割付（例を図８に示す）していたが、正しく割付して出力できなかった。
（４）カナ氏名に半角カナが混在して登録されていたため、全角カナを半角カナに変換して帳票出力する処理で異常終了した。
（５）カナ氏名はデータベースに登録されている文字列に初めに空白が現れるまで出力する仕様であったが、姓と名の間には半角１文字以上の空文字が登録されていたため、帳票に姓のみが出力された。
（６）漢字住所は東京都が省略されてデータベースに登録されていることから、帳票に住所を出力する場合にプログラムにより「東京都」を付与して出力する仕様としていた。しかし、漢字住所が「東京都」から一部登録されていたため帳票に出力した住所が「東京都東京都・・・」と出力されるものがあった。
【００１０】
上記のような問題を未然に防ぐため、設計・コーディングなどの早期段階から顧客データのパターンや特徴を意識してシステム開発が進められるように、従来のような個人情報を単につぶしてマスクする方法ではなく、データに潜むパターンや特徴を保持しつつ、かつ個人情報をマスクできる手法を検討する必要がある。
【００１１】
本発明の目的は、データベース上に登録された情報のパターン、特徴を保持しつつ個人を特定できない文字列に変換するシステムを提供することにある。
【課題を解決するための手段】
【００１２】
上記課題を解決するために、本発明のマスキング手法では、テーブルに登録されているマスク対象とする個人情報を全て取得し、パターンや特徴を保持したまま異なる文字列に置換することにより実現する。データベースから取り出した全ての個人情報から、以下の五つの条件が成立するように置換することで実現する。
【００１３】
（条件１）マスク前に存在する一人の個人を特定する「文字列」は、マスク後のデータベースに存在しない状態にする。
（条件２）マスク前に存在する一人の個人を特定する「文字列」の要素となる「文字」は、マスク後のデータベースに全て存在する状態にする。
（条件３）マスク前に存在する一人の個人を特定する「文字列」がデータベースに複数個存在する場合は、マスク後のデータベースに同じ数だけ対応するマスク後の「文字列」が存在する状態にする。
（条件４）マスク前に存在する一人の個人を特定できない記号（図７に示す）やスペースなどの「文字」および「文字列」又は「文字列」の一部が存在する場合は、マスク後のデータベースに同じ場所、同じ数だけ存在する状態にする。
（条件５）マスク前に存在する一人の個人を特定する「文字列」の要素となる「文字」は、マスク後のデータベースのマスクされた「文字列」と同じ文字列の開始位置に存在する状態にする。
【００１４】
上記五つの条件が成立する場合に、個人情報のパターンや特徴を保持できる理由を五つの条件ごとに以下に示す。
（条件１）マスク後のデータベースにマスク前に存在する一人の個人を特定する「文字列」が存在する場合は、マスクがされていないことに直結する。そのためマスク後には完全に、その個人を特定する文字列が存在しないようにする必要がある。
（条件２）マスク前に存在する一人の個人を特定する「文字列」の要素となる「文字」を、マスク後のデータベースに全て存在させることにより、どのような「文字」が使用されているか文字特徴を全て保存することが可能になるためである。これにより発明が解決しようとする課題に示した具体例の問題（１）、（４）が解決される。
（条件３）マスク後のデータベースに同じ数だけ対応するマスク後の「文字列」を存在させることで、同じ個人を特定する情報の存在有無および出現頻度を保存することが可能になるためである。これにより発明が解決しようとする課題に示した具体例の問題（２）が解決される。
（条件４）マスク後のデータベースに同じ場所、同じ数だけ一人の個人を特定できない記号やスペースを存在させることで文字列が表すパターンや特徴を保存することが可能になるためである。これにより発明が解決しようとする課題に示した具体例の問題（３）、（５）が解決される。
（条件５）マスク後のデータベースのマスクされた「文字列」と同じ文字列の開始位置に存在させることで、マスク項目のデータパターンを保存することが可能になるためである。これにより発明が解決しようとする課題に示した具体例の問題（６）が解決される。
【発明の効果】
【００１５】
本発明のマスキング手法によれば、次のような効果がある。
（１）既存システムをリプレイスする場合、既存システムの本番データにある個人情報を参照することなくデータのパターンや特徴を認知することができるため、システム開発の早期工程により設計考慮およびデータクリーニング必要性、データ移行方式を効率よく検討することが可能となる。
（２）個人情報を公開することなく本番の個人情報に近いテストデータを手軽に作成することが可能となる。
【図面の簡単な説明】
【００１６】
【図１】本発明に係るマスキングシステムの実施形態を示すシステム構成図である。
【図２】個人情報の文字列をマスキング処理した具体例である。
【図３】マスキング処理に利用する各種管理テーブルの構成図である。
【図４】マスキング処理の概要を示すフローチャートである。
【図５】文字列解析処理のフローチャートである。
【図６】文字列置換処理のフローチャートである。
【図７】個人を特定できない記号を示す文字である。
【図８】氏名の割付を表す具体例である。
【図９】入力ファイル１０８とパラメタ１０９の具体例である。
【発明を実施するための形態】
【００１７】
以下、本発明を適用したオートマスキングツール（マスキング装置）の実施形態について説明する。
【００１８】
図１は、本発明に係るマスキング装置の実施形態を示すシステム構成図であり、マスク処理端末１０１によりマスク処理ソフト１０２を動作させることによりマスク処理を実施する。マスク処理ソフト１０２は、データ読込モジュール１０３、データ解析モジュール１０４、データ置換モジュール１０５、データ検証モジュール１０６、データ出力モジュール１０７から構成される。データ読込モジュール１０３にて入力ファイル１０８およびパラメタ１０９を読み込んで、データ解析モジュール１０４へ渡される。ここでマスク対象となる文字列を全件読み込み、パターンや特徴を抽出する。データ解析モジュール１０４の解析結果を元に、データ置換モジュール１０５により、個人情報が特定できないように文字列置換され、データ検証モジュール１０６にマスク後の文字列が渡される。データ検証モジュール１０６では、個人情報が完全に特定できない文字列に置換されているかをチェックする。最後にマスクされた出力ファイル１１０がデータ出力モジュール１０７より出力される。ユティリティ１１１はデータベース１１２の内容をテキストファイル化するＤＢＭＳに既設されたツールを示しており、データベース１１２のデータがカンマ区切りによりテキストファイル化される。
【００１９】
図１のマスク処理端末１０１は、上述したようにマスク処理ソフト１０２というコンピュータプログラムを読み込んでその処理を実行するコンピュータである。データ読込モジュール１０３からデータ出力モジュール１０７までの５つのモジュールは、コンピュータプログラムの部分といえるが、ＣＰＵがそれぞれのコンピュータプログラムを読み込んで処理する状態を装置と捉えれば、図１における各モジュールは、手段又は装置とも捉えられる。したがって、図１の構成は、特許請求の範囲の表現と呼応するものである。
【００２０】
図２は、個人情報の文字列をマスキング処理した具体例であり、マスク処理前の個人を特定する文字列２０１をマスク処理ソフトに入力すると、マスク処理後の文字列２０２のような文字列に置換されて個人情報がマスクされる。このマスク処理は、課題を解決するための手段にて定義した五つの条件を充足するものである。図２（ａ）のマスク処理前の個人を特定する文字列と、図２（ｂ）のマスク処理後の文字列とを見比べると、空白の位置、個人を特定できない記号の位置が同一であることから課題解決手段の（条件４）を充足することが一見してわかる。他の条件である（条件１）、（条件２）、（条件３）、（条件５）についても充足したマスク処理がなされている。
【００２１】
図３は、マスキング処理に利用する各種管理テーブルの構成図であり、文字列データテーブル３０１は、データ読込モジュール１０３により入力ファイル１０８から作成される。マスク対象とする文字列の最大長を列幅に持つテーブルであり、１文字目３０２には文字列の先頭１文字が保持され、２文字目３０３は文字列の先頭から２文字目が保持されている。同様に文字列が３文字以上ある場合は、文字列の先頭から３文字目以降が保持される構成となる。
【００２２】
置換管理テーブル３０４および重複管理テーブル３０７は、データ解析モジュール１０４により作成される。置換管理テーブル３０４の１文字目３０５は文字列データテーブル３０１の１文字目３０２と対応しており、２文字目３０６は文字列データテーブル３０１の２文字目３０２と対応している。同様に文字列が３文字以上ある場合は、文字列データテーブル３０１の３文字目以降と対応している。
【００２３】
重複管理テーブル３０７の行３０８は、文字列データテーブル３０１の行数と対応しており、重複行３０９は文字列データテーブル３０１の重複する行番号を保存する構成となる。文字列データテーブル３０１は、入力ファイル１０８のマスク対象項目を示すパラメタ１０９の全てのデータと文字列の存在位置を保持する。置換管理テーブル３０４は、文字列データテーブル３０１に保持している文字の場所に一対一で対応する形式により、文字列データテーブル３０１の文字を置換対象とする場合は「１」が保持され、文字を置換対象としない場合は「０」が保持される。重複管理テーブル３０７は、文字列データテーブル３０１の各行に対応した個人を特定する文字列が重複する行数を保持する。図３では１行目は、３行目と５行目１９行目に同じ個人を特定する人の情報が文字列データテーブル３０１に保持されていたことを示している。
【００２４】
図４は、マスキング処理の概要を示すフローチャートであり、始めに入力ファイル１０８を読み込む（ステップ４０１）。次にパラメタ１０９を読み込む（ステップ４０２）。これらの内容を元に文字列解析処理を実施する（ステップ４０３）。文字列解析処理の詳細は図５に示す。解析結果を元に文字列置換処理を実施する（ステップ４０４）。文字列置換処理の詳細は図６に示す。文字列の置換が全て完了した後、変換した文字列に同じ文字列が存在しないかチェックをして、存在すれば個人情報を全て特定できない状態となっていないため、もう一度、文字列置換処理を実施する（ステップ４０５、４０６）。このチェックにより、変換した文字列に同じ文字列が存在しない場合は、全ての個人情報がマスクされたと判断してマスク後のファイルを出力して処理を終了する（ステップ４０７）。
【００２５】
図５は、文字列解析処理（図４のステップ４０３）のフローチャートである。図４のステップ４０１と４０２から得た情報（入力ファイル、パラメタ）を元に、マスク対象とする項目の文字列を全件読み込み、入力件数および文字列の最大文字長を算出した上で文字列データテーブル３０１を作成する（ステップ５０１）。そして、マスク対象とする項目の文字列を全て１文字ごとに分解して、文字列データテーブル３０１の対応する位置に保存する（ステップ５０２）。
【００２６】
次に文字列データテーブル３０１の内容を元に、置換すべき対象文字の指定場所に「１」を代入し、置換すべき対象文字でない指定場所に「０」を代入して、置換管理テーブル３０４を作成する。置換すべき対象文字でない判断は、図７に示した記号やスペースに該当する文字であるか、又は、重複管理テーブル３０７の重複行に保持された行である場合であり、そうでない場合は全て置換すべき対象文字と判断する（ステップ５０３、５０４、５０５、５０６、５０７）。
【００２７】
次に、文字列データテーブル３０１の内容を元に、重複した文字列があれば対応する重複行を重複管理テーブル３０７に追加格納する（ステップ５０８、５０９、５１０、５１１，５１２）。例えば、文字列データテーブル３０１の１行目と同じ文字列が３行目、５行目、１９行目に存在している場合は、重複管理テーブル３０７の行３０８が「１」の値に対して、重複行３０９に「３、５、１９」の数値を保存する。重複した文字列がなければ、文字列データテーブル３０１の行に対応する重複管理テーブル３０７の重複行３０９に「０」を格納する（ステップ５１３）。
【００２８】
図６は、文字列置換処理（図４のステップ４０４）のフローチャートである。置換管理テーブル３０４から値を読み込み「１」である場合は置換対象であるため、対応する文字列データテーブル３０１のセルとランダムに取得した行に対応する文字列データテーブル３０１のセルを置換する。尚、置換管理テーブル３０４の１行目に「１」が存在し、かつ２行目以降が全て「０」である場合は、置換対象が存在しないことになるため、処理を終了させる（ステップ６０１、６０２、６０３）。
【００２９】
ランダムに取得した行とは、置換管理テーブル３０４の行数と異なる数値で、かつ「１」〜「置換管理テーブル３０４の最大行」までの数値を乱数により取得したものである。これにより算出された行数の置換管理テーブル３０４のセルの値が「０」であれば置換対象としない文字列であるため、乱数を再取得して算出した重複管理テーブル３０７のセルの値が「１」であれば置換する。
【００３０】
次に、置換したセルに対応する置換管理テーブル３０４の値に「０」を代入する（ステップ６０４）。これは既に置換が完了したことを示すためである。置換管理テーブル３０４から値を読み込み「０」である場合は、置換対象ではないため置換管理テーブル３０４から次のデータを読み込む（ステップ６０５）。置換管理テーブル３０４の値が全て「０」になったら、重複管理テーブル３０７の値に対応する行に文字列データテーブル３０１の値を全ての重複行３０９に保持されている行に代入する（ステップ６０７）。置換管理テーブル３０４の値が全て「０」にならない場合は、ステップ６０２に戻り処理を続行する。
【００３１】
図７は、個人を特定できない記号を示す文字であり、これらに該当する文字がマスク対象に存在する場合は置換しない。
【００３２】
図８は、氏名の割付を表す具体例であり、例えば１行目にある姓が１文字、名が１文字であれば「割付」に示すように空白６個を間に入れて帳票に出力する。これにより漢字氏名の開始位置と終了位置が整頓された形式となる。
【００３３】
図９は、入力ファイル１０８、パラメタ１０９の具体例であり、入力ファイル１０８はデータベース１１２の内容がカンマ区切りでテキストファイル化されたものである。パラメタ１０９はカンマ区切りのテキストファイルのどの位置にある項目をマスク対象とするかを数値で指定している。この例では、２項目をマスク対象として指定している。
【産業上の利用可能性】
【００３４】
データベースに登録された情報のパターン、特徴を保持しつつ個人を特定できない文字列に変換して、システム開発会社に預けて、システム開発をする場合にテストデータとしての利用価値が高い。
【符号の説明】
【００３５】
１０１  マスク処理端末
１０２  マスク処理ソフト
１０３  データ読込モジュール
１０４  データ解析モジュール
１０５  データ置換モジュール
１０６  データ検証モジュール
１０７  データ出力モジュール
１０８  入力ファイル
１０９  パラメタ
１１０  出力ファイル
１１１  ユティリティ
１１２  データベース
２０１  マスク処理前の個人を特定する文字列
２０２  マスク処理後の文字列
３０１  文字列データテーブル
３０２  文字列データテーブルの１文字目
３０３  文字列データテーブルの２文字目
３０４  置換管理テーブル
３０５  置換管理テーブルの１文字目
３０６  置換管理テーブルの２文字目
３０７  重複管理テーブル
３０８  重複管理テーブルの行
３０９  重複管理テーブルの重複行
【図１】
2011034264.tif 000003
【図２】
2011034264.tif 000004
【図３】
2011034264.tif 000005
【図４】
2011034264.tif 000006
【図５】
2011034264.tif 000007
【図６】
2011034264.tif 000008
【図７】
2011034264.tif 000009
【図８】
2011034264.tif 000010
【図９】
2011034264.tif 000011