(57)【特許請求の範囲】
【請求項１】
複数の項目に関する文字列が記録された文書を取得する文書取得部と、
ユーザにより指定された項目であって、前記複数の項目の中で個人情報を含む個人情報項目を示す情報を取得する指定取得部と、
ユーザにより指定された個人情報項目を除外した他の項目の文字列に個人情報が含まれるか否かを判定し、個人情報が含まれる項目を個人情報項目として検出する判定部と、
ユーザにより指定された個人情報項目および前記判定部により検出された個人情報項目を、個人情報のマスク処理を行うべき項目として出力する出力部と、
を備え、
前記文書取得部が取得した文書は複数のレコードを含み、各レコードは前記複数の項目に関する文字列を含むものであり、
前記判定部は、前記複数のレコードの各項目の文字列に個人情報が含まれるか否かを順次判定し、あるレコードの特定の項目に個人情報が含まれると判定した場合、当該項目を前記個人情報項目として検出し、残りのレコードの当該項目の文字列については、個人情報が含まれるか否かを判定する対象から除外することを特徴とする個人情報検出装置。
【請求項２】
複数の項目に関する文字列が記録された文書を取得する機能と、
ユーザにより指定された項目であって、前記複数の項目の中で個人情報を含む個人情報項目を示す情報を取得する機能と、
ユーザにより指定された個人情報項目を除外した他の項目の文字列に個人情報が含まれるか否かを判定し、個人情報が含まれる項目を個人情報項目として検出する判定機能と、
ユーザにより指定された個人情報項目および前記判定機能により検出された個人情報項目を、個人情報のマスク処理を行うべき項目として出力する出力部と、
をコンピュータに実現させ、
前記取得する機能により取得された文書は複数のレコードを含み、各レコードは前記複数の項目に関する文字列を含むものであり、
前記判定機能は、前記複数のレコードの各項目の文字列に個人情報が含まれるか否かを順次判定し、あるレコードの特定の項目に個人情報が含まれると判定した場合、当該項目を前記個人情報項目として検出し、残りのレコードの当該項目の文字列については、個人情報が含まれるか否かを判定する対象から除外することを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理技術に関し、特に文書に記録された個人情報を検出する技術に関する。
【背景技術】
【０００２】
情報システムの運用フェーズでは、保守作業のために、本番環境（言い換えれば商用環境）に蓄積されたデータをテスト用のデータとして抽出することがある。そして抽出したデータを開発環境（言い換えればテスト環境）へ導入し、開発環境にて各種のテストを実施することがある。
【０００３】
本番環境に蓄積されたデータには個人情報が含まれることがある。個人情報の保護が重視される現在、個人情報をマスキングする技術が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−１０５２７４号公報
【特許文献２】特開２０１１−０３４２６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
文書内の個人情報をマスクする処理の前段では、マスク対象とすべき個人情報を示す文字列が文書内のどこに記載されているかを識別する必要がある。ところで、本番環境に蓄積された、個人情報を含む文書は非常に大きなサイズになることがあり、その文書内での個人情報の記載箇所を識別する処理に多大な時間を要してしまうことがあった。システム開発の工程の中でテストに許容される期間は限られており、本発明者は、文書内のマスク対象箇所を識別する処理を効率化する必要があると考えた。
【０００６】
本発明は、本発明者の上記課題認識に基づきなされたものであり、その主な目的は、文書内のマスク対象箇所を識別する処理を効率化する技術を提供することである。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明のある態様の個人情報検出装置は、複数の項目に関する文字列が記録された文書を取得する文書取得部と、ユーザにより指定された項目であって、複数の項目の中で個人情報を含む個人情報項目を示す情報を取得する指定取得部と、ユーザにより指定された個人情報項目を除外した他の項目の文字列に個人情報が含まれるか否かを判定し、個人情報が含まれる項目を個人情報項目として検出する判定部と、ユーザにより指定された個人情報項目および判定部により検出された個人情報項目を、個人情報のマスク処理を行うべき項目として出力する出力部と、を備える。文書取得部が取得した文書は複数のレコードを含み、各レコードは複数の項目に関する文字列を含むものであり、判定部は、複数のレコードの各項目の文字列に個人情報が含まれるか否かを順次判定し、あるレコードの特定の項目に個人情報が含まれると判定した場合、当該項目を個人情報項目として検出し、残りのレコードの当該項目の文字列については、個人情報が含まれるか否かを判定する対象から除外する。
【０００８】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、システム、プログラム、プログラムを格納した記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【０００９】
本発明によれば、文書内のマスク対象箇所を識別する処理を効率化することができる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施の形態の情報システムの構成を示す図である。
【図２】図１のデータ変換装置の機能構成を示すブロック図である。
【図３】個人情報の抽出結果を示す図である。
【図４】対応規則を示す図である。
【図５】置換規則を示す図である。
【図６】ユーザ設定画面を示す図である。
【図７（ａ）】データ変換装置の動作を示すフローチャートである。
【図７（ｂ）】図７（ａ）に続く動作を示すフローチャートである。
【図８】複数のテーブルのマスク処理を模式的に示す図である。
【図９】ログデータのマスク処理を模式的に示す図である。
【図１０】個人情報をマスキングする前の原本文書データを示す図である。
【図１１】第２の実施の形態のデータ変換装置の機能構成を示すブロック図である。
【発明を実施するための形態】
【００１１】
以下、第１の実施の形態として、個人情報をマスクした後の文書について、テストデータとしての品質の低下を抑制する技術を説明する。また第２の実施の形態として、個人情報のマスク処理に要するトータル時間を抑制するために、文書内のマスク対象箇所を識別する処理を効率化する技術を説明する。
【００１２】
（第１の実施の形態）
図１は、第１の実施の形態の情報システム１００の構成を示す。情報システム１００は、例えば、小売業者や金融業者のための情報処理サービスを提供するものであり、その開発・運用・保守をＳＩ企業が担当する。情報システム１００は、本番機１０と開発機１２とデータ変換装置１４を含む。
【００１３】
本番機１０は、本番環境に設置されたウェブサーバや、アプリケーションサーバ、データベースサーバ等の情報処理装置である。本番機１０は、顧客企業やエンドユーザに対する商用の情報処理サービスを提供し、また、顧客企業やエンドユーザの個人情報に該当する各種情報を含む文書データを保持する。この文書データは、データベースサーバが管理するテーブルのデータを含む。またＣＳＶファイルや、フリーフォーマットのログファイル、固定長ファイル等を含む。
【００１４】
開発機１２は開発環境に設置された情報処理装置である。また開発機１２は、本番機１０にインストールされたアプリケーションについて、そのトラブル解析や、バグ改修、機能追加等の作業（以下、総称して「保守作業」とも呼ぶ。）を行うための情報処理装置である。実施の形態では、開発機１２での保守作業の効率を高めるために、その保守作業に用いるテストデータとして、本番環境に保持される文書データに対応した文書データを用いる。
【００１５】
データ変換装置１４は、本番環境における文書データ（以下、「原本文書データ」とも呼ぶ。）を本番機１０から取得する。そして、その原本文書データに含まれる個人情報をマスクした文書データ（以下、「テスト用文書データ」とも呼ぶ。）へ変換し、記録メディア１６へ記録する。データ変換装置１４は一般的なＰＣであってもよい。ＳＩ企業の担当者は、記録メディア１６に記録されたテスト用文書データを開発機１２に読み込ませて、開発機１２での保守作業を実施する。
【００１６】
図２は、図１のデータ変換装置１４の機能構成を示すブロック図である。データ変換装置１４は、各種データを保持する記憶領域であるデータ保持部２０と、各種データ処理を実行するデータ処理部３０を備える。データ保持部２０は、抽出データ保持部２２と、対応関係保持部２４と、置換規則保持部２６と、除外規則保持部２８を含む。データ処理部３０は、原本文書取得部３２と、個人情報検出部３４と、置換規則決定部３６と、置換データ取得部３８と、文書変換部４０と、変換文書出力部４２と、ユーザ設定支援部４４を含む。
【００１７】
本明細書のブロック図において示される各ブロックは、ハードウェア的には、コンピュータのＣＰＵをはじめとする素子や機械装置で実現でき、ソフトウェア的にはコンピュータプログラム等によって実現されるが、ここでは、それらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックはハードウェア、ソフトウェアの組合せによっていろいろなかたちで実現できることは、当業者には理解されるところである。例えば図２の各ブロックは、プログラムモジュールとして記録媒体に格納され、その記録媒体を介してデータ変換装置１４のストレージへインストールされてもよい。そしてデータ変換装置１４において、各ブロックに対応するプログラムモジュールをメインメモリへ随時読み出し、ＣＰＵにより実行することで、各ブロックの機能を実現してもよい。
【００１８】
抽出データ保持部２２は、原本文書データに含まれる個人情報の抽出結果を保持する。図３は個人情報の抽出結果を示す。レコード番号フィールドには、原本文書データにおけるレコード番号が記録される。例えば、ＣＳＶファイルの行位置を示す番号であってもよく、データベースで管理されるテーブルの各レコードに付された識別番号であってもよい。項目名フィールドには個人情報が設定された、原本文書データの情報項目の名称が記録される。文字列フィールドには個人情報として検出された文字列が設定される。位置フィールドには、原本文書データの各情報項目において個人情報の文字列が設定された位置、具体的には先頭を１とした場合のバイト数が設定される。検出タイプフィールドには、個人情報の種類を識別する情報、例えば個人情報が人名・地名・電話番号・組織・メールアドレス等のいずれであるかを示す情報が記録される。
【００１９】
図２に戻り、対応関係保持部２４は、個人情報の検出タイプと、その個人情報を別の文字列（本実施の形態において文字列は数字列を含む）に置換する際の種類・態様を示すマスクパターンとを対応づけた対応規則を保持する。この対応規則は、データ変換装置１４において予め定められたものであるが、後述のユーザ設定支援部４４を介してユーザが変更することもできる。図４は対応規則を示す。同図で示すように、原則として、個人情報として検出された文字列の属性に合致するマスクパターン（例えば漢字の個人情報であればランダムな漢字列のマスクパターン）が対応づけられる。
【００２０】
なおマスクパターンが、ユーザが任意の形式を設定可能な「カスタムパターン」の場合は、ユーザにより決定された文字列の態様を示すカスタム文字列をさらに保持する。例えば、カスタム文字列「＜２ｎ＞−＜４ｎ＞−＜４ｎ＞」は、長さ２のランダムな数字列、「−」、長さ４のランダムな数字列、「−」、「長さ４のランダムな数字列」、を連結した文字列を示している。またカスタム文字列「＜５ａ＞＠＜３ａ＞．＜２ａ＞．＜２ａ＞」は、長さ５のランダムなアスキー文字列、「＠」、長さ３のランダムなアスキー文字列、「．」、長さ２のランダムなアスキー文字列、「．」、長さ２のランダムなアスキー文字列、を連結した文字列を示している。
【００２１】
図２に戻り、置換規則保持部２６は、原本文書データにおける各情報項目と、マスクパターンとを対応づけた置換規則を保持する。図５は置換規則を示す。項目名フィールドには、原本文書データにおける情報項目の名称が記録される。対象フィールドには、当該情報項目が個人情報を含む（ＴＲＵＥ）か否か（ＦＡＬＳＥ）を示す情報が記録される。最大検出タイプフィールドには、当該情報項目の検出タイプとして最も多く決定された個人情報の種類が記録され、その検出タイプの検出数が検出数フィールドに記録される。マスクパターンフィールドには、個人情報を置換するマスクパターンが記録され、カスタムパターンについてはカスタム文字列がさらに記録される。
【００２２】
また図５の置換規則では、項目名「ＡＣＣＯＵＮＴ＿ＮＵＭＢＥＲ」のマスクパターンとしてハッシュ値が指定されている。これは、項目名「ＡＣＣＯＵＮＴ＿ＮＵＭＢＥＲ」のデータが、図５では不図示の他のテーブルでも使用され、両テーブルを関連づけるキーとなっているためである。個人情報をハッシュ値でマスクすることにより、原本文書データにおける複数テーブルの関連性を、テスト用文書データで維持することについては、図８等に関連して後述する。
【００２３】
図２に戻り、除外規則保持部２８は、個人情報として検出された文字列のうち、マスク処理から除外すべき文字列を識別するための除外規則を保持する。本実施の形態の除外規則は、マスク処理の対象外とすべき１つ以上の文字列（以下、「マスク対象外文字列」とも呼ぶ。）を定めたものとする。本実施の形態では、個人情報として検出された文字列のうち、マスク対象外文字列と完全一致する文字列をマスク処理から除外する。変形例としては、マスク対象外文字列を一部に含む文字列をマスク処理から除外してもよく、マスク対象外文字列が正規表現で示される場合には、その正規表現に包含される文字列をマスク処理から除外してもよい。
【００２４】
原本文書取得部３２は、原本文書データを本番機１０から取得する。既述したように、原本文書データは、データベースのテーブルに格納されたレコードであってもよく、ＣＳＶファイル・固定長ファイル・フリーフォーマットのログファイル等の各種ファイルデータであってもよい。
【００２５】
個人情報検出部３４は、原本文書データから、当該データに含まれる個人情報を検出し、その検出結果を図２で示した態様で抽出データ保持部２２へ記録する。個人情報検出部３４は公知の個人情報抽出手段により実現されてよい。例えば、株式会社野村総合研究所が提供するソフトウェア製品である「ＴＲＵＥ  ＴＥＬＬＥＲ  個人情報フィルタ（登録商標）」により実現されてもよい。
【００２６】
置換規則決定部３６は、抽出データ保持部２２に格納された個人情報の検出結果と、対応関係保持部２４に格納された対応規則を参照して、原本文書データに含まれる個人情報に対する置換規則を決定し置換規則保持部２６へ記録する。具体的には、原本文書データの情報項目ごとに、個人情報が検出されたか否か（例えば検出タイプが記録されたか否か）を判定し、その判定結果を記録する。また原本文書データの情報項目ごとに、各検出タイプの検出数をカウントして最大検出タイプを判定し記録する。そして、対応関係保持部２４に格納された対応規則にしたがって、最大検出タイプと対応づけられたマスクパターン（およびカスタム文字列）を特定し記録する。
【００２７】
なお、マスク前の文字列（個人情報を含む文字列であり、以下「オリジナル文字列」とも呼ぶ。）と、マスク後の文字列の属性を近似させるために、置換規則決定部３６は、最大検出タイプの判定において、個人情報検出部３４により特定された検出タイプを、文字の属性に応じてより詳細化する。例えば、個人情報の検出結果における最大検出タイプが［人名］であり、文字列フィールドに設定された文字列が漢字であれば、最大検出タイプ［人名］ＫＡＮＪＩを記録する。また、個人情報の検出結果における最大検出タイプが［人名］であり、文字列フィールドに設定された文字列が平仮名であれば、最大検出タイプ［人名］ＫＡＮＡを記録する。
【００２８】
置換データ取得部３８は、置換規則保持部２６に格納された置換規則を参照して、原本文書データのレコードごと、かつ、情報項目ごとに、個人情報をマスクするための置換用のデータ（以下、「マスクデータ」とも呼ぶ。）を取得する。例えば、マスクパターンがランダム文字列（漢字）の場合、オリジナルの文字列長に対応する長さ（本実施の形態では同じ長さ）のランダムな漢字文字列をマスクデータとして取得する。
【００２９】
またマスクパターンがハッシュ値の場合、オリジナルの文字列をハッシュ関数（実施の形態ではＳＨＡ−２）に入力し、当該ハッシュ関数の出力結果であるハッシュ値を示す文字列（以下、「ハッシュ文字列」とも呼ぶ。）をマスクデータとして取得する。このハッシュ関数は、他の種類のハッシュ関数であってもよく、例えばＳＨＡ−１やＭＤ５であってもよい。ハッシュ文字列は、所定長のハッシュ値を１６進表記したＨＥＸ文字列であってもよく、数字列であってもよい。また置換データ取得部３８は、ハッシュ文字列を、オリジナルの文字列長に対応する長さにトリミングした結果をマスクデータとして取得してもよい。
【００３０】
また図６に関連して後述するように、マスクパターンがカスタムパターンの場合もハッシュ値が指定される場合がある。このとき置換データ取得部３８は、オリジナル文字列のハッシュ値を取得し、そのハッシュ値を示す文字列を、カスタム文字列で指定された長さにトリミングした結果をマスクデータとして取得する。
【００３１】
文書変換部４０は、原本文書データのレコードごと、かつ、情報項目ごとに、個人情報検出部３４により個人情報として検出された文字列を、置換データ取得部３８により取得されたマスクデータへ置換する。これにより、原本文書データを、個人情報がマスクされたテスト用文書データへ変換する。
【００３２】
また文書変換部４０は、原本文書データにおける変換対象のオリジナル文字列が、除外規則保持部２８の除外規則で定められたマスク対象外文字列と一致するか否かを判定し、不一致であれば、当該オリジナル文字列をマスクデータへ置換する。一致した場合は、当該オリジナル文字列のマスクデータへの置換を抑制する。言い換えれば、当該オリジナル文字列のマスク処理をスキップして、次の変換対象文字列のマスク処理へ移行する。
【００３３】
変換文書出力部４２は、文書変換部４０により生成されたテスト用文書データを記録メディア１６へ記録する。例えば、原本文書データがデータベースのテーブルデータの場合は、個人情報をマスク後のテーブルデータをテスト用文書データとして記録メディア１６へ格納する。また原本文書データがフリーフォーマットのログファイルの場合は、個人情報をマスク後のログファイルのデータをテスト用文書データとして記録メディア１６へ格納する。記録メディア１６に記録されたテスト用文書データは、開発機１２に読み込まれ、開発機１２での保守作業において（例えばテストのための入力データや照合用データとして）用いられる。
【００３４】
ユーザ設定支援部４４は、対応関係保持部２４に保持された対応規則と、置換規則保持部２６に保持された置換規則に対するユーザの設定操作を支援する。具体的には、対応規則および置換規則を編集するためのユーザ設定画面を所定のディスプレイに表示させ、ユーザ設定画面に対するユーザの入力情報を対応関係保持部２４の対応規則および置換規則保持部２６の置換規則へ反映させる。
【００３５】
図６はユーザ設定画面を示す。同図は、対応関係保持部２４に保持された対応規則を編集するためのユーザ設定画面を示している。同図の内容をユーザが入力すると、［人名］ＫＡＮＪＩの検出タイプと、８文字のハッシュ文字列のマスクパターンとを対応づけるよう対応関係が更新される。なお、マスクパターンのプルダウンメニューからハッシュ文字列を選択することもできる。
【００３６】
またユーザ設定支援部４４は、マスク対象外文字列をユーザに入力させるためのユーザ設定画面を表示させる。そして、ユーザ設定画面に対してユーザが入力したマスク対象外文字列を取得し、その文字列を除外規則保持部２８の除外規則へ追加する。
【００３７】
以上の構成によるデータ変換装置１４の動作を以下説明する。
図７（ａ）は、データ変換装置１４の動作を示すフローチャートである。データ変換装置１４において本番環境の文書データに対するマスクパターンの決定を指示するユーザ操作が検出されると（Ｓ１０のＹ）、原本文書取得部３２は、当該ユーザ操作で指定された原本文書データを本番機１０から取得する（Ｓ１２）。個人情報検出部３４は、原本文書データに記載された個人情報を検出し、その記載位置を含む属性情報を抽出データ保持部２２へ記録する（Ｓ１４）。置換規則決定部３６は、個人情報検出部３４により検出された個人情報の属性と、対応関係保持部２４に保持された対応規則とに基づいて各個人情報のマスクパターンを決定し、各個人情報の置換規則を置換規則保持部２６へ記録する（Ｓ１６）。マスクパターンの決定を指示するユーザ操作が未検出であれば（Ｓ１０のＮ）、Ｓ１２〜Ｓ１６をスキップする。
【００３８】
またデータ変換装置１４においてマスク処理の設定変更を指示するユーザ操作が検出されると（Ｓ１８のＹ）、ユーザ設定支援部４４は、ユーザ設定画面を表示させる（Ｓ２０）。ユーザ設定支援部４４は、ユーザ設定画面に入力された対応規則の更新情報を対応関係保持部２４に反映させ、または、ユーザ設定画面に入力された置換規則の更新情報を置換規則保持部２６に反映させる（Ｓ２２）。マスク処理の設定変更を指示するユーザ操作が未検出であれば（Ｓ１８のＮ）、Ｓ２０およびＳ２２をスキップする。なお図７（ａ）には不図示であるが、ユーザ設定画面においてマスク対象外文字列が入力されると、ユーザ設定支援部４４はマスク対象外文字列を除外規則保持部２８に記録する。
【００３９】
典型的には、データ変換装置１４のユーザは、原本文書データにおいて複数箇所に記載されて、相互の関連性を維持すべき個人情報の項目に対するマスクパターンとしてハッシュ値を設定する。より具体的には、リレーショナルデータベースにおいて複数のテーブルを関連づけるためのキー情報（例えば第１テーブルにおける外部キーであり、第２のテーブルにおける主キー）に対するマスクパターンとしてハッシュ値を設定する。これにより、原本文書データにおける項目間の関連性、例えばリレーショナルデータベースにおける複数テーブル間のリレーションを、マスク後のテスト用文書データでも維持することができる。
【００４０】
図７（ｂ）は、図７（ａ）に続く動作を示すフローチャートである。データ変換装置１４においてマスク処理の開始を指示するユーザ操作が検出されると（Ｓ２４のＹ）、置換データ取得部３８は、原本文書データに記載された個人情報のオリジナル文字列ごとに、その属性に応じたマスクパターンに基づくマスクデータを取得する。文書変換部４０は、個人情報として検出されたオリジナル文字列が、除外規則保持部２８に記録されたマスク対象外文字列と不一致であれば（Ｓ２６のＮ）、そのオリジナル文字列をマスクデータへ置換する（Ｓ２８）。具体的には、抽出データ保持部２２に記録されたオリジナル文字列の先頭位置から、オリジナル文字列の長さ分のデータ（すなわちオリジナル文字列そのもの）を、マスクデータの文字列へ置き換える。個人情報として検出されたオリジナル文字列がマスク対象外文字列と一致すれば（Ｓ２６のＹ）、Ｓ２８をスキップする。
【００４１】
原本文書データに記載された全ての個人情報のオリジナル文字列に対する置換処理、もしくは置換スキップを完了すると（Ｓ３０のＹ）、変換文書出力部４２はテスト用文書データを記録メディア１６へ出力する（Ｓ３２）。未処理の個人情報のオリジナル文字列が残っていれば（Ｓ３０のＮ）、Ｓ２６へ戻って、置換データ取得部３８は、未処理のオリジナル文字列に対するマスクデータを取得する。マスク処理の開始を指示するユーザ操作が未検出であれば（Ｓ２４のＮ）、Ｓ２６からＳ３２をスキップする。
【００４２】
本実施の形態のデータ変換装置１４によると、原本文書データの各情報項目とマスクパターンとの対応関係を１つ１つユーザが定義する必要がない。すなわち、原本文書データに含まれる個人情報を自動的に検出し、個人情報の属性とマスクパターンとの対応規則にもとづいて、各個人情報のマスクパターンを自動的に決定する。これにより人為的なミスの発生（典型的にはマスク設定の漏れ）を抑制できる。例えば、原本文書データの中に予備項目が設けられ、その予備項目は初期の開発時には未使用であり、後の機能追加時に個人情報を保持するよう変更されることがある。人手でマスクパターンを設定すると、予備項目のマスクが見落とされて、マスク設定の漏れが発生しやすい。データ変換装置１４では、マスク対象とすべき文字列の検出と、その文字列を置き換えるべきマスクデータの決定とを自動化することにより、人為的なミスの発生を抑制できる。
【００４３】
またユーザ設定画面では、置換規則を編集できるだけでなく、置換規則の基礎となる対応規則もユーザが編集できる。ユーザは対応規則を編集することで、個人情報の属性が共通する原本文書データの複数の情報項目に対するマスクパターンを一括して設定でき、マスク処理のためのユーザ作業の効率化を実現できる。
【００４４】
またデータ変換装置１４によると、原本文書データにおいて異なる箇所に記載された複数の個人情報項目であり、マスク後においても互いの関連性を維持すべき複数の個人情報項目のそれぞれを、個人情報を示す文字列のハッシュ値によりマスクする。これにより、原本文書データにおける情報項目間の関連性を、個人情報をマスクした後のテスト用文書データでも維持でき、テストデータとしての品質の低下を抑制することができる。
【００４５】
図８は、複数のテーブルのマスク処理を模式的に示す。名義情報テーブルと残高情報テーブルは、口座番号をキーとして互いに関連性を有する。図８（ａ）は、原本文書データとしての名義情報テーブルと残高情報テーブルを示しており、例えば名前「佐々木」の残高は「３００，０００」であることを示している。図８（ｂ）は、名義情報テーブルの口座番号と、残高情報テーブルの口座番号のそれぞれをランダムな値でマスクした結果を示しており、名義情報テーブルと残高情報テーブルの関連性が失われている。
【００４６】
これに対して、図８（ｃ）は、名義情報テーブルの口座番号と、残高情報テーブルの口座番号のそれぞれをハッシュ値によりマスクした結果を示している。同図で示すように、名義情報テーブルの口座番号と残高情報テーブルの口座番号は、それぞれオリジナルの値が秘匿されつつも、互いの関連性が維持されている。例えば、名前「ＸＸＸ（佐々木のマスク結果）」の残高は「３００，０００」であることが、マスク後も識別できる。図８（ｃ）の名義情報テーブルと残高情報テーブルをテスト用文書データとして用いることにより、開発環境においても本番環境に即したテストを実施しやすくなる。
【００４７】
またデータ変換装置１４によると、個人情報がどの位置に記載されるかが確定しないフリーフォーマットのファイルデータ（例えばログデータ）に対しても、個人情報を自動でマスクすることができる。またデータ変換装置１４によると、ユーザは任意の文字列をマスク対象外文字列として指定でき、個人情報の保護と、テストデータの品質低下の抑制の両立を支援できる。
【００４８】
図９は、ログデータのマスク処理を模式的に示す。図９（ａ）は、２つのログメッセージを含む本番環境でのオリジナルのログデータを示している。これら２つのログメッセージはフォーマットが異なるものである。図９（ｂ）は、図９（ａ）のログデータに含まれる個人情報をマスクした後のテスト用のデータを示している。既述したように、個人情報検出部３４は、オリジナルのログデータに含まれる個人情報について、その属性・記載位置を記録する。そして置換データ取得部３８は、個人情報の属性に応じたマスクデータを取得し、文書変換部４０は、個人情報の記載位置を特定してマスクデータへ置き換える。これにより、フリーフォーマットのファイルデータにおける個人情報のマスキングを実現できる。
【００４９】
なお図９（ｂ）では、本来マスクされるべきでない商品名「山田３００」も個人情報としてマスクされている。ユーザは、文字列「山田３００」をマスク対象外文字列として指定することにより、テスト用ログデータにおいて商品名「山田３００」をそのまま出力させることができる。
【００５０】
また上記では言及していないが、個人情報検出部３４は、図９（ｃ）で示すように、個人情報として検出した文字列を記録した個人情報検出リストをさらに出力してもよい。そして、個人情報検出リストをディスプレイに表示し、ユーザへ提示してもよい。このリストは、抽出データ保持部２２に格納した個人情報抽出結果によって代用してもよい。個人情報検出リストをユーザへ提示することにより、ユーザがマスク対象外文字列を適切に指定できるよう支援できる。
【００５１】
以上、本発明を第１の実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。以下変形例を示す。
【００５２】
第１の実施の形態の第１の変形例を説明する。
上記実施の形態では、ハッシュ値でマスクする個人情報項目をユーザが指定することとしたが、置換規則決定部３６は、ハッシュ値でマスクする個人情報項目を自動で決定し、置換規則へ記録してもよい。例えば、リレーショナルデータベースの定義情報を参照し、リレーショナルデータベースにおいて複数テーブル間に設定された参照整合性制約を検出してもよい。そして参照整合性制約が設定されたカラム（典型的には第１テーブルにおける外部キーのカラムと、第２テーブルにおける主キーのカラムの両方）について、マスクパターンとしてハッシュ値を設定してもよい。
【００５３】
第１の実施の形態の第２の変形例を説明する。
上記実施の形態で一部既述したが、ハッシュ文字列を、オリジナルの文字列長に対応する長さにトリミングした結果をマスクデータとする場合、異なるオリジナル文字列を同じマスクデータへ変換してしまうことが考えられる。そのため変形例として、置換データ取得部３８は、オリジナル文字列と、そのハッシュ値をトリミングしたマスクデータとを対応づけたテーブル（以下、「割当履歴テーブル」）を保持してもよい。
【００５４】
置換データ取得部３８は、あるオリジナル文字列（「当該オリジナル文字列」と呼ぶ。）のマスクデータ（ここではハッシュ文字列をトリミングした文字列）を取得すべきとき、割当履歴テーブルを参照して、当該オリジナル文字列と一致する文字列にマスクデータを割当済かを判定する。割当済であれば、当該オリジナル文字列と一致する文字列に割当済のマスクデータを、当該オリジナル文字列へ割り当てる。
【００５５】
当該オリジナル文字列と一致する文字列が割当履歴テーブルに未記録であれば、置換データ取得部３８は、当該オリジナル文字列のハッシュ値をトリミングしたマスクデータを取得する。そして割当履歴テーブルを参照し、そのマスクデータを他のオリジナル文字列へ割当済か否かを判定する。未割当であれば、そのマスクデータを当該オリジナル文字列へ割り当て、割当履歴テーブルへ記録する。他のオリジナル文字列へ割当済であれば、当該オリジナル文字列のハッシュ値をハッシュ関数へ入力し、その出力結果であるハッシュ値を新たなマスクデータとして取得する。以下、ユニークなマスクデータを取得するまで上記処理を繰り返す。
【００５６】
この変形例によると、マスクパターンがハッシュ値に設定され、そのハッシュ文字列をトリミングする場合に、異なるオリジナル文字列に対して重複するマスクデータを割り当てることを回避できる。これにより、原本文書データにおいて関連性のない複数の情報項目について、テスト用文書データにおいて関連性を生じさせることを回避できる。
【００５７】
（第２の実施の形態）
既述したように、第２の実施の形態では、第１の実施の形態で説明した個人情報のマスク処理に要するトータルの時間を低減するために、文書内のマスク対象箇所、言い換えれば、文書内での個人情報の記録位置を特定する処理を効率化する技術を説明する。第２の実施の形態における情報システムの構成は、図１で示した情報システム１００の構成と同じである。
【００５８】
図１０は、個人情報をマスキングする前の原本文書データを示す。第２の実施の形態では、原本文書データとして、リレーショナルデータベースのテーブル形式のデータを例示する。ただし、原本文書データはテーブル形式に限らず、ＣＳＶ形式やスプレッドシート等、複数項目に区分けして情報が電子的に記録された他の形式の文書データ・文書ファイルであってもよい。
【００５９】
図１０の原本文書データには４レコード（ＩＤ００１〜００４）が記録され、各レコードは、ＩＤ・氏名・口座番号・住所・備考の５つの項目に関する文字列を含む。項目は、データの種類やカテゴリを示す見出し、索引と言え、テーブルにおいては例えばカラム名が対応する。なお、現実の大規模な情報システム１００では、本番機１０から取得される原本文書データの規模は数百万レコード以上になることもある。また、各レコードの項目数も数十から数百になることもある。
【００６０】
これまでの個人情報検出処理では、レコード単位に複数の項目それぞれに記録された文字列を取得（スキャン）し、データベースに予め記憶された個人情報を示す膨大なキーワードのいずれかを含むか否かを確認していた。そして、この確認処理をレコード数分繰り返していた。したがって、文書内のレコード数が増加するほど、また各レコードの項目数が増加するほど、個人情報の検出処理に要する時間が増加していた。
【００６１】
そこで第２の実施の形態のデータ変換装置１４では、
（１）原本文書データ（言い換えれば本番機１０）の設計上、明らかに個人情報が含まれるはずの項目は、個人情報の検出処理の対象外とする、
（２）一度、個人情報の存在を検出した項目は、それ以降、個人情報の検出処理の対象外とする、
という２つの工夫の組み合わせにより個人情報の検出処理を効率化する。これにより、現実の本番機１０に蓄積された膨大なサイズの原本文書データに対する個人情報のマスク処理を、現実のシステム開発で許容される時間内に完了できるよう支援する。
【００６２】
図１１は、第２の実施の形態のデータ変換装置１４の機能構成を示すブロック図である。図１１に示す機能ブロックのうち第１の実施の形態で説明済みの機能ブロックと同一もしくは対応する機能ブロックには同一の符号を付している。以下、第１の実施の形態において説明済みの内容は適宜省略する。
【００６３】
データ変換装置１４のデータ保持部２０は、判定基準保持部５０をさらに含む。データ処理部３０の個人情報検出部３４は、ユーザ指定取得部５２と、判定部５４と、検出結果出力部５６を含む。
【００６４】
判定基準保持部５０は、後述の判定部５４が文字列に個人情報が含まれるか否かを判定するための基準となるデータを保持する。実施の形態では、基準となるデータとして、個人情報を示す複数のキーワードを保持し、言わば、判定基準保持部５０は、個人情報の辞書データを保持する。例えば、人名に関する個人情報として、キーワード「山田」、「太郎」等を保持してもよい。また、住所に関する個人情報として、キーワード「東京都」、「渋谷区」等を保持してもよい。
【００６５】
原本文書取得部３２は、図１０に示したような複数レコードを含む文書データであり、各レコードにおいて複数項目に関する文字列が電子的に記録された原本文書データを本番機１０から取得し、読み込む。
【００６６】
ユーザ指定取得部５２は、原本文書データに含まれる複数の項目のうち、原本文書データの設計上、個人情報が含まれるはずの項目（以下「個人情報指定項目」と呼ぶ。）を指定する情報を、保守・試験作業の担当者（以下単に「ユーザ」と呼ぶ。）から取得する。例えばユーザは、図１０のテーブルの氏名カラム、口座番号カラム、住所カラムを個人情報指定項目とする旨の情報を所定の電子ファイルに記録してもよい。ユーザ指定取得部５２は、その電子ファイルを読み込み、氏名カラム、口座番号カラム、住所カラムを個人情報指定項目として識別してもよい。
【００６７】
判定部５４は、原本文書データに含まれる複数の項目のうちユーザが指定した個人情報指定項目を除外した残りの項目（以下「スキャン対象項目」と呼ぶ。）について、個人情報を示す文字列が記録されているか否かをレコード単位に判定する。具体的には、判定部５４は、原本文書データのレコード単位に、１つ以上のスキャン対象項目のそれぞれに記録された文字列を読み込む。そして、読み込んだ文字列が、判定基準保持部５０に格納された個人情報のキーワードのいずれかを含むものであるか否かを判定する。
【００６８】
実施の形態において、判定部５４は、図１０に例示した原本文書データの１レコードを横にスキャンし、１レコードに含まれるすべてのスキャン対象項目の文字列に対する判定を終了すると次のレコードの判定に移る。すなわち、１つのレコードを単位として、その各項目に対して個人情報の存在有無を順次判定していく。
【００６９】
ただし判定部５４は、あるレコードの特定のスキャン対象項目の文字列に個人情報のキーワードが含まれると判定した場合、そのスキャン対象項目を個人情報を含む項目（以下「個人情報検出項目」と呼ぶ。）として特定する。個人情報検出項目は、原本文書データの少なくとも1つのレコードにおいて個人情報が記録された項目と言える。判定部５４は、個人情報検出項目を特定すると、その項目をスキャン対象項目から除外する。言い換えれば、判定部５４は、個人情報の存在有無を未判定の、残りのレコードに対する判定処理では、個人情報検出項目を個人情報の存在有無を判定する対象から除外する。
【００７０】
このように、判定部５４は、ユーザにより静的に指定された個人情報指定項目と、自律的な判定処理により動的に検出した個人情報検出項目の両方について、個人情報の存在有無の判定処理をスキップする。典型的には、原本文書データのレコード単位での判定処理が進むほど、個人情報検出項目の個数は増加していき、その一方で、スキャン対象項目の個数は減少していくことになる。
【００７１】
変形例として、判定部５４は、図１０に例示した原本文書データを項目単位に縦にスキャンし、１つの項目に関するすべてのレコードの文字列に対する判定を終了すると次の項目の判定に移ってもよい。すなわち、1つの項目を単位として、複数レコードに亘り個人情報の存在有無を順次判定してもよい。この場合も、ある項目に個人情報の存在を検出した場合、その項目を個人情報検出項目として、その項目の判定を終了し、次の項目の判定を開始してもよい。
【００７２】
検出結果出力部５６は、ユーザ指定取得部５２により取得された個人情報指定項目と、判定部５４により検出された個人情報検出項目の両方を示す情報である個人情報検出結果を外部の機能ブロックへ出力する。個人情報検出結果は、原本文書データが含む複数項目の中で、個人情報が格納された項目であり、格納された文字列に対するマスク処理を行うべき項目を示す情報と言える。
【００７３】
個人情報検出結果の出力先となる機能ブロックは、原本文書データの個人情報指定項目および個人情報検出項目に記録された文字列に対してマスキングを実行する。具体的には、個人情報指定項目と個人情報検出項目のそれぞれに記録された文字列のすべてを所定の規則にしたがってマスク処理し、言い換えれば、個人情報が排除された別の文字列（以下「マスク文字列」とも呼ぶ。）へ置き換える。
【００７４】
例えば、検出結果出力部５６は、個人情報検出結果を置換規則決定部３６へ出力してもよい。置換規則決定部３６は、個人情報指定項目と個人情報検出項目のそれぞれの文字列に対する置換規則を項目単位で一律に決定してもよい。文書変換部４０は、置換規則決定部３６が決定した置換規則にしたがって、個人情報指定項目と個人情報検出項目のそれぞれに記録された文字列をマスク文字列へ変換してもよい。
【００７５】
以上の構成によるデータ変換装置１４の動作を説明する。
本番環境に蓄積された文書データに対するマスク処理を指示するユーザ操作がデータ変換装置１４において検出されると、原本文書取得部３２は、ユーザ操作で指定された原本文書データ（ここでは図１０のテーブルデータ）を、通信網を介して本番機１０から取得する。ユーザ指定取得部５２は、予めユーザが指定した個人情報指定項目を示す情報を取得する。ここでは、図１０の氏名カラム、口座番号カラム、住所カラムが個人情報指定項目として指定されたこととする。
【００７６】
判定部５４は、原本文書データのレコード単位に、各項目の文字列が個人情報を含むか否かを判定する。その際に、ユーザにより指定された個人情報指定項目の文字列は判定対象から除外する。したがって、図１０のＩＤカラムおよび備考カラムに対して個人情報の存在有無を判定する。また判定部５４は、ある項目について個人情報を示す文字列が格納されている事実を一度検出すると、その項目を個人情報検出項目として決定し、以降のレコードの個人情報検出項目の文字列は判定対象から除外する。例えば、図１０のＩＤ００３のレコードについて、その備考カラムに個人情報（例えば電話番号）が含まれることを検出し、備考カラムを個人情報検出項目として決定する。そして、ＩＤ００４以降のレコードについては、ＩＤカラムに対してのみ個人情報の存在有無を判定する。
【００７７】
検出結果出力部５６は、個人情報指定項目および個人情報検出項目、言い換えれば、マスク対象文字列が格納された項目を示す情報を、マスク処理を実施する他の機能ブロック、例えば置換規則決定部３６へ通知する。置換規則決定部３６が参照する記憶領域にその情報を記録することにより通知してもよい。以降、原本文書データに含まれる個人情報をマスク文字列へ置き換える変換処理（例えば図７（ａ）のＳ１６以降）が実行される。図１０の原本文書データでは、氏名カラム、口座番号カラム、住所カラム、備考カラムの文字列に対するマスキング処理が実行されてよい。最終的に、原本文書データ内の個人情報がマスキングされたテスト用文書データを生成する。
【００７８】
実施の形態のデータ変換装置１４によると、原本文書データにおいて個人情報の存在有無を判定する項目から、静的に指定された個人情報指定項目を当初から除外するとともに、動的に検出された個人情報検出項目を追加的に除外していく。これにより、原本文書データに対する項目単位での個人情報スキャンを進める中で、スキャン対象項目の個数を予め小さくし、さらに動的に小さくしていき、原本文書データ内での個人情報のマスキング対象箇所を特定する処理を効率化できる。言い換えれば、原本文書データにおける個人情報の記録位置の特定処理を効率的に実行できる。この結果、原本文書データのサイズ（レコード数や項目数）が増大しても、文書内のマスク対象箇所の識別処理に要する時間の増大を抑制できる。
【００７９】
またデータ変換装置１４によると、原本文書データに記録された個人情報の検出漏れの発生可能性を限りなく０に近づけることができる。ここで判定部５４による個人情報の自動検出の精度は以下のように考えられる。まず前提として辞書による検出率の正確な数字を特定することは難しい。例えば、名字については日本語の名字はほぼ網羅可能であるものの、名前については変動が激しく網羅率の情報がない。そこで、仮に辞書による検出率を８０％とし、検出対象のレコード数を１万とする。なお、ここでは特定の１つの項目について個人情報の存在有無を検出することとする。この場合の個人情報の検出精度は、
１ー（（１−０．８）＾１００００）（「＾」はべき乗を表す）
でありほぼ１００％となる。１０レコードの場合は９９．９９９９８９７６％となる。
【００８０】
このように、個人情報の検出漏れが発生する可能性は、データボリュームに依存するが、ほぼ０と言える。実施の形態のデータ変換装置１４では、ユーザが指定した個人情報指定項目を個人情報の検出対象から除外することで、予めスキャン対象項目を減少させ、個人情報の検出漏れが発生する可能性を一層低くする。また、図１０の備考カラム等、個人情報が記録されているか否かを人間が判断することが困難な項目は、判定部５４により個人情報の存在を自動検出することで補完している。すなわちデータ変換装置１４は、設計に基づくユーザの判断と、辞書に基づく機械検出を組み合わせた相乗効果として、個人情報の検出漏れの発生を限りなく０に近づけることができる。
【００８１】
以上、本発明を第２の実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。以下変形例を示す。
【００８２】
第２の実施の形態の第１の変形例を説明する。
上記実施の形態では言及していないが、判定部５４の個人情報検出処理をマルチプロセス化し、複数の個人情報検出処理を複数のプロセスにより同時並行で実行してもよい。具体的には、判定部５４の個人情報検出処理を実行すべき際に、データ変換装置１４のオペレーティングシステム（ＯＳ）は、個人情報検出処理を実行する複数のプロセスを生成してもよい。そして、データ変換装置１４が備える複数のＣＰＵのそれぞれが各プロセスを並行実行してもよい。プロセス数はユーザが任意に設定可能であり、また変更可能に構成されることが望ましい。
【００８３】
また、マルチプロセス化とともに、もしくはマルチプロセス化に代えて、判定部５４の個人情報検出処理をマルチスレッド化し、複数の個人情報検出処理を複数のスレッドにより同時並行で実行してもよい。具体的には、判定部５４の個人情報検出処理を実行すべき際に、データ変換装置１４のＯＳは、個人情報検出処理を並行して実行する複数のスレッドを生成してもよい。そして、データ変換装置１４が備えるＣＰＵが各スレッドを並行実行してもよい。スレッド数はユーザが任意に設定可能であり、また変更可能に構成されることが望ましい。
【００８４】
例えば、複数のプロセスのそれぞれが、互いに異なる複数の原本文書データに対する個人情報の検出処理を並行して実行してもよい。この実行主体が複数のスレッドであってもよいことはもちろんである。また、複数のスレッドのそれぞれが、同一の原本文書データ（文書ファイル）のレコードの一部であり、互いに異なるレコード群に対する個人情報の検出処理を並行して実行してもよい。この実行主体が複数のプロセスであってもよいことはもちろんである。この変形例によると、マルチプロセス化およびマルチスレッド化によって、複数ファイルに対する個人情報検出処理を並列実行させ、また、同一ファイル内の複数レコードに対する個人情報検出処理を並列実行させ、高速化を図ることができる。
【００８５】
なお、複数のスレッドが、同一の原本文書データ内を異なるレコード群に対する個人情報の検出処理を実行する場合、あるスレッドが特定の項目に個人情報が含まれることを検出すると、検出した個人情報検出項目の情報を他のスレッドに通知する。公知のスレッド間通信の仕組み（例えば複数のスレッドが参照可能なメモリ領域へフラグを設定する等）を使用して通知してもよい。以降、他のスレッドは、通知された個人情報検出項目をスキャン対象項目から除外する。実行主体が複数のプロセスの場合も同様であり、公知のプロセス間通信の仕組みを使用して個人情報検出項目を相互に通知してもよい。
【００８６】
第２の実施の形態の第２の変形例を説明する。
判定基準保持部５０は、個人情報を示すキーワードを、その種類を示すカテゴリ（例えば図３の検出タイプ）と対応づけて保持してもよい。例えば、カテゴリ「人名」と対応づけてキーワード「山田」、「太郎」等を保持してもよい。また、カテゴリ「住所」と対応づけてキーワード「東京都」、「渋谷区」等を保持してもよい。
【００８７】
判定部５４は、原本文書データ内の個人情報検出項目を特定後、個人情報指定項目および個人情報検出項目に対する個人情報記録位置特定処理をレコード単位に実行してもよい。具体的には、判定基準保持部５０を参照して、個人情報のキーワードが記載された文書内（レコード内）の位置と、そのキーワードのカテゴリを特定してもよい。そして、図３に示した個人情報抽出結果、すなわちレコード番号・項目名・文字列・位置・検出タイプの組み合わせを置換規則決定部３６へ出力してもよい。なお、１つの項目に１つのカテゴリの情報のみが格納され、位置の特定も不要の場合（典型的には文字列のすべてを置換する場合）は、実施の形態に記載の判定処理において原本文書データ内の個人情報検出項目を特定した際にカテゴリもあわせて特定すればよい。
【００８８】
第２の実施の形態の第３の変形例を説明する。
上記実施の形態では、１つの装置内に、個人情報の検出機能とマスキング機能の両方を備えることとしたが、これらの機能は物理的に異なる複数の装置が分担して実行してもよい。すなわち、第２の実施の形態に記載の個人情報の検出処理を実行する第１の装置と、第１の実施の形態に記載の個人情報のマスク処理を実行する第２の装置が通信網を介して連携することにより第２の実施の形態に記載のデータ変換装置１４が実現されてもよい。
【００８９】
上述した第１の実施の形態、第２の実施の形態、および変形例の任意の組み合わせもまた本発明の実施の形態として有用である。組み合わせによって生じる新たな実施の形態は、組み合わされる実施の形態および変形例それぞれの効果をあわせもつ。また、請求項に記載の各構成要件が果たすべき機能は、第１の実施の形態、第２の実施の形態および各実施の形態の変形例において示された各構成要素の単体もしくはそれらの連携によって実現されることも当業者には理解されるところである。
【符号の説明】
【００９０】
１０  本番機、  １４  データ変換装置、  ３４  個人情報検出部、  ５０  判定基準保持部、  ５２  ユーザ指定取得部、  ５４  判定部、  ５６  検出結果出力部、  １００  情報システム。
【要約】
【課題】文書内のマスク対象箇所を識別する処理を効率化する。
【解決手段】原本文書取得部３２は、複数の項目に関する文字列が記録された文書を取得する。判定部５４は、ユーザが指定した個人情報項目を除外した残りの項目の文字列に個人情報が含まれるか否かを判定し、個人情報が含まれる項目を個人情報項目として検出する。検出結果出力部５６は、ユーザが指定した個人情報項目および判定部５４が検出した個人情報項目を、個人情報のマスク処理を行うべき項目として出力する。判定部５４は、文書内の複数のレコードの各項目の文字列に個人情報が含まれるか否かを順次判定し、あるレコードの特定の項目に個人情報が含まれる場合、当該項目を個人情報項目とし、以降のレコードの当該項目の文字列については個人情報が含まれるか否かを判定する対象から除外する。
【選択図】図１１【図１】
0005420099.tif 000002
【図２】
0005420099.tif 000003
【図３】
0005420099.tif 000004
【図４】
0005420099.tif 000005
【図５】
0005420099.tif 000006
【図６】
0005420099.tif 000007
【図７（ａ）】
0005420099.tif 000008
【図７（ｂ）】
0005420099.tif 000009
【図８】
0005420099.tif 000010
【図９】
0005420099.tif 000011
【図１０】
0005420099.tif 000012
【図１１】
0005420099.tif 000013