(57)【要約】【課題】  本発明はデータ保護に関し、より詳細には表形式データを第三者に対して実データを隠蔽するようデータ保護プログラムおよび保護するデータ保護方法を提供することを目的とする。  【解決手段】  所定の計算式で求められる値が特定の値となるデータとそうでないデータとを表形式データの行に対応したキーデータを作成し、キーデータの特定の値に応じて実データが配置された表形式データにダミーデータ行を挿入するよう構成する。【選択図】    図１
2006185096.tif 000002
【特許請求の範囲】
【請求項１】
実データが行と列とに配置された表形式データのデータ保護プログラムであって、
所定の計算式で求められる値が特定の値となるデータと特定の値とならないデータとを混在し、前記表形式データの行に対応して配置したキーデータを作成するキーデータ作成手順と、
前記キーデータが前記特定の値となるものと前記特定の値とならないものとに応じて前記表形式データの該キーデータに対応する行にダミーデータを挿入するダミーデータ行挿入手順と
をコンピュータに実行させることを特徴とするデータ保護プログラム。
【請求項２】
実データが行と列とに配置された表形式データのデータ保護プログラムであって、
前記表形式データの任意の１つ以上の行に、所定の計算式で求められる値が各列においてそれぞれ固有の特定の値となるダミーデータを挿入するダミーデータ行挿入手順
をコンピュータに実行させることを特徴とするデータ保護プログラム。
【請求項３】
実データが行と列とに配置された表形式データのデータ保護プログラムであって、
所定の計算式で求められる値が特定の値となるデータを前記表形式データの行に対応して配置したキーデータを作成するキーデータ作成手順と、
前記表形式データの実データの列に対応して１列以上の分散列をそれぞれ作成し、該表形式データの各行における実データを、該各行に対応するキーデータから得られる前記特定の値に基づいてそれぞれの該実データの列に対応する該分散列に分散して配置する実データ分散手順と、
前記実データが配置された分散列に対して、該実データが配置された以外の箇所にダミーデータを挿入するダミーデータ挿入手順と
をコンピュータに実行させることを特徴とするデータ保護プログラム。
【請求項４】
実データが行と列とに配置された表形式データのデータ保護プログラムであって、
所定の計算式で求められる値が特定の値となるデータを前記表形式データの行に対応して配置したキーデータを作成するキーデータ作成手順と、
前記キーデータの前記特定の値に基づいて、該キーデータに対応する行の個々の実データの列位置を入れ換える実データ入換手順と
をコンピュータに実行させることを特徴とするデータ保護プログラム。
【請求項５】
実データが行と列とに配置された表形式データのデータ保護方法であって、
所定の計算式で求められる値が特定の値となるデータと特定の値とならないデータとを混在し、前記表形式データの行に対応して配置したキーデータを作成するキーデータ作成手順と、
前記キーデータが前記特定の値となるものと前記特定の値とならないものとに応じて前記表形式データの該キーデータに対応する行にダミーデータを挿入するダミーデータ行挿入手順と
を有することを特徴とするデータ保護方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ保護に関し、より詳細には表形式データを第三者に対して実データを隠蔽するよう保護するデータ保護プログラムおよびデータ保護方法に関する。
【背景技術】
【０００２】
近年、企業からの個人データの流出、流出した個人データの悪用、それに伴う被害が問題となっており、これらに関する法律として個人情報保護法が２００５年４月からの施行が予定されている。
【０００３】
一方で個人データのような重要且つ機密データに対するデータ保護の在り方が問われている。従来からもコンピュータに格納されたデータを第三者に対して隠蔽するデータ保護の方法として、データが格納されているコンピュータにアクセス権を設定してコンピュータそのものの使用を制限したり、データファイルへのアクセスが成された時にアクセス権を設定して使用制限を行う、といったことが行われている。また、データそのものを暗号化する方法も多く行われている。
【０００４】
最近では無線ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）の普及と共にインターネットの利用も盛んになり、無線、有線を問わずネットワーク上を流れるデータが多くなり、ネットワークからデータが漏洩する機会も多くなっている。さらには、いろいろな場面におけるデータ処理中のデータの盗視、記憶媒体に格納されたデータの紛失などの心配もある。
【０００５】
このようなことから、データ保護に対する技術がますます重要になってきている。特に、従来手法に捕らわれずに第三者に対して実データを隠蔽できる方法が求められており、これら技術の提案がなされている。。
【０００６】
例えば、暗号化されたデータをネットワークを介して送信する場合に、送信するデータの出現頻度をもとにダミーデータを混在して送信する方法が提案されている。これは、電子投票のデータ送信のようにデータに含まれる文字や数字の出現頻度に偏りがあるような場合に、暗号が解読されなくても傾向が推測されることを防止するものである（特許文献１）。
【特許文献１】特開２００４−２６０５０８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上記に述べたように個人データの流出が社会問題となっており、データ保護に対する技術は重要なものとなっている。特に、近年ではデータを種々の場面で扱うことが想定され、従来のデータ保護対策の技術に加えて簡便で低コストなデータ保護の技術が求められている。
【０００８】
データ保護は種々の観点から保護されるべきであるが、本発明は表形式のデータ保護に関するもので、誤ってデータが第三者に渡ってしまった場合でも、実データの隠蔽によりデータの利用ができないことを目的としたデータ保護プログラムおよびデータ保護方法を提案するものである。特に、フロッピー（商標登録）やディスク等の記憶媒体にデータを格納する場合に本発明を適用しておくと、そのデータが何らかの方法で持ち出されてもデータ保護が有効に働き、第三者には意味のないデータとなることを意図している。
【課題を解決するための手段】
【０００９】
本発明のデータ保護プログラムおよびデータ保護方法は以下のように構成される。
（１）第１の発明
第１の発明は、表形式データの各行に対応して作成されたキーデータに基づいて実データ行の中にダミーデータ行の挿入を行うものである。
【００１０】
図１は第１の発明の原理を示すものでキーデータ作成手順１０およびダミーデータ行挿入手順２０で構成する。
【００１１】
キーデータ作成手順１０は、所定の計算式で求められる値が特定の値となるデータとそうでないデータとを混在して表形式データの行に対応して配置したキーデータを作成する。所定の計算式とはある論理に基づいた計算式で例えばハッシュ関数である。キーデータには、例えばハッシュ関数で求められたハッシュ値がある特定の値となるデータとそうでないデータとを混在して配置する。キーデータはそのまま見ても特定の値となるデータか、そうでないデータかの判別がつかないデータである。また、特定の値は、１つの値とは限らず複数あってもよいし、またある範囲の値でもよい。
【００１２】
ダミーデータ行挿入手順２０は、キーデータが所定の計算式で計算した値が特定の値となるデータか、特定の値とならないデータかにより、そのキーデータが対応する表形式データの行にダミーデータ行を挿入する。例えば、特定の値となるキーデータの行にダミーデータ行を挿入するとすれば、そうでない行は実データ行となる。この反対に、特定の値とならないキーデータの行にダミーデータ行を挿入するのであれば、特定の値となるキーデータに対応する行は実データ行である。
【００１３】
上記のキーデータ作成手順１０とダミーデータ行挿入手順２０により、実データ中にダミーデータ行が挿入された表形式データを作成することができる。ダミーデータを実データと似せたデータとすることにより、表形式データを第三者が見てもダミーデータが混在していることを容易に判断されずデータ保護がなされたことになる。
【００１４】
表形式データの復元時におけるダミーデータ行の識別は、キーデータを所定の計算式で計算し、その値が特定の値を持つかどうかで識別する。
（２）第２の発明
第２の発明は、所定の計算式で計算した値がそれぞれの列で固有の特定の値となるダミーデータ行を実データが配置された表形式データ中に挿入するものである。
【００１５】
図２は第２の発明の原理を示すものでダミーデータ行挿入手順２１で構成する。なお、ダミーデータ行挿入手順２１は第１の発明と同じ名称を持つ手順であるが、内容が異なるので記号を変えてある。
【００１６】
ダミーデータ行挿入手順２１は、実データが配置された表形式データの任意の１つ以上の行に、所定の計算式で求められる値が各列でそれぞれ固有の特定の値となるダミーデータの行を挿入する。
【００１７】
表形式データの復元時におけるダミーデータ行の識別は、１行分の個々のデータを所定の計算式で計算し、その個々の計算値がそのダミーデータのそれぞれの列の特定の値と全て一致すればダミーデータ行と識別する。
（３）第３の発明
第３の発明は、表形式データの各列に対応してそれぞれ１列以上の列を設けておき、キーデータを所定の計算式で計算して得られる特定の値に基づいて実データの位置を分散させるものである。
【００１８】
図３は第３の発明の原理を示すものでキーデータ作成手順１１、実データ分散手順５０、ダミーデータ挿入手順６０で構成する。
【００１９】
キーデータ作成手順１１は、所定の計算式で計算したとき特定の値となるようなデータを表形式データの行に対応して配置してキーデータを作成する。
【００２０】
実データ分散手順５０は、表形式データの実データの各列に対応して実データを分散させる１列以上の分散列をそれぞれ作成する。そして、表形式データの各行の実データを、その行と等しい行のキーデータから得られる特定の値によって実データの列に対応する分散列に分散して配置する。例えば、２列の実データから成る表形式データである場合、１列目の実データ列に対しては２列の分散列、２列目の実データ列に対しては３列の分散列を設け、１行１列目の実データは１行目のキーデータの特定の値に基づいて対応する２列の分散列の何れかに配置し、１行２列目の実データは同じ１行目のキーデータの特定の値に基づいて対応する３列の分散列の何れかに配置を行う。これを各行に実データに対して同様に行うものである。
【００２１】
ダミーデータ挿入手順６０は、実データ分散手順５０で実データが配置された分散列に対して、実データが配置された以外の箇所にダミーデータを挿入する。
【００２２】
復元時における実データの列位置の識別は、キーデータを所定の計算式で計算し、その値からその行のそれぞれの実データの列位置を識別する。
（４）第４の発明
第４の発明は、表形式データの実データに対して、キーデータの所定の計算式で計算した値に基づいて実データの列位置を入れ換えるもので、第１〜第３の発明のようにダミーデータを用いない方法によるものである。
【００２３】
図４は第４の発明の原理を示すものでキーデータ作成手順１１および実データ入換手順７０で構成する。
【００２４】
キーデータ作成手順１１は、第３の発明と同様の内容である。
【００２５】
実データ入換手順７０は、各行毎にキーデータを所定の計算式で求めた特定の値に基づいて、各行の個々の実データの入れ換えを行う列位置を決定し、その列位置に実データを移動する。
【００２６】
表形式データの復元時における実データの列位置の識別は、キーデータを所定の計算式で計算し、その値からその行の元の列位置を識別する。
（５）第５の発明
第５の発明は第１の発明に基づいたデータ保護方法である。
【発明の効果】
【００２７】
第１の発明では、第三者に対して挿入したダミーデータ行と実データ行との判別ができず、簡単な方法でデータ保護を行うプログラムの提供ができる。
【００２８】
第２の発明では、所定の計算式で得られる特定の値を持つダミーデータを挿入することにより、ダミーデータ行と実データ行との判別が困難なデータ保護プログラムを提供できる。
【００２９】
第３の発明では、キーデータの所定の計算式で得られる特定の値に基づいて実データを列方向に分散でき、第三者にはダミーデータの判別ができずより堅固なデータ保護のプログラムを提供できる。
【００３０】
第４の発明では、ダミーデータを挿入しないので元の表形式データの行や列を増やすことがなく堅固なデータ保護プログラムを提供できる。
【００３１】
第５の発明では、簡単な方法でダミーデータ行と実データ行との判別が困難なデータ保護方法の提供ができる。
【実施例】
【００３２】
本発明の実施例について図５から図１８を用いて説明する。
図５はデータ保護装置２００の構成例を示すもので、データ保護装置２００はデータやプログラムを制御するＣＰＵ(Central Processing Unit)２１０、表形式データ等を表示するディスプレイ（ＤＩＳＰ）２２０、操作者が例えばプログラムの起動をかけるための指示を行うキーボード（ＫＢ）２３０、データ保護がなされた表形式データを持ち運び等のために記録媒体に格納するフロッピー・ディスク装置（ＦＰＤ）２４０、ディプレイ２２０、キーボード２３０およびフロッピー・ディスク装置２４０の入出力を制御する入出力制御部２５０、表形式データの保護や復元時にプログラムが使用する作業領域であるワークエリア２６０、データ保護装置２００内に表形式データを格納するデータ記憶部２７０およびデータ保護プログラム２８０から構成する。ここでは、データの持ち運び等のために記録媒体に格納する装置としてフロッピー・ディスク装置２４０を備えるよう構成したが、ＣＤ−ＲＯＭやＤＶＤであってもよい。
【００３３】
データ保護プログラム２８０は更に実データが配置された表形式データにダミーデータ等を挿入して保護を行うデータ保護処理部２８１およびデータ保護がなされた表形式データを復元するデータ復元処理部２８２から構成する。
【００３４】
次に本発明の具体的なデータ保護の実施例を実施例その１から実施例その５までの例を説明する。
（実施例その１）
実施例その１は第１の発明に対する実施例である。図６はそのデータ例を示し、図６（ａ）はデータ保護をかける対象の表形式データである。この表形式データは、４行３列で構成され第１列（以後、列１のように言う）には「姓」が、列２には「名」、列３は「電話番号」の実データがそれぞれ配置された状態を示している。図６（ｂ）は、図６（ａ）の表形式データに挿入されるキーデータ列に配置する特定値を持つキーデータの例である。このキーデータは後述する文字構成と方法で生成されたデータの例である。図６（ｃ）は特定値を持たないキーデータの例で、後述する文字構成でランダムに文字生成して特定値を持たないことを確認したデータの例である。図６（ｄ）は、図６（ａ）の表形式データにキーデータ列が列４に挿入されたデータ例である。行２と行４の列１〜列３にはダミーデータが、列４には特定値を持つキーデータが挿入された状態を示している。それ以外の行の列１〜列３には実データが、列４には特定値を持たないキーデータが挿入されている。また、ダミーデータは実データと似せて作られている。
【００３５】
次に、キーデータを生成し、ダミーデータ行を挿入する方法をプログラムで処理するものとして説明する。ダミーデータを生成したり、ダミーデータ行を判別するための特定値やその計算式、ダミーデータの挿入行数を求める式等はプログラム中に組み込まれているものとする。
【００３６】
図７は実データが配置された表形式データを基にデータの保護を行う処理フローを示すもので、まずデータ保護の対象である表形式データ（Ｍ行Ｎ列）を取得する。図６（ａ）の場合、４行３列のデータである。次に取得した表形式データの行数を基にダミーデータの挿入行数（ｍ）を計算する。例えばダミーデータの挿入行数の計算式がｍ＝Ｍ／２であったとすると、この場合では２行が挿入行数と計算される（Ｍ＝４であるから）。続いて、実際にダミーデータ行を挿入する行位置を決めるために、Ｍ＋ｍ以下の乱数をｍ個発生させる。即ち、６以下の乱数を２個発生させる。ここでは２と４が得られ、２行目と４行目をダミーデータ行とする。そして、Ｍ＋ｍ行Ｎ＋１列の空の表を作成する（Ｓ１００〜Ｓ１３０）。
【００３７】
次に、データ挿入ループに入り、１行目が実データ行かどうかを判断する。ステップ１２０（Ｓ１２０）で２行目と４行目がダミーデータ挿入行と決めたので、１行目は実データとなり、特定値を持たないキーデータを生成しＮ＋１列をキーデータ列としてその１行目に配置する。
【００３８】
ここで、キーデータについて説明する。まず、キーデータは全体で９桁の英数字の文字列で構成するものとし、その内１、２、４および７桁は英字、他は数字からなるものとする。このキーデータは後述する計算式で計算する訳であるが、そのとき英字（アルファベット）のＡ〜Ｚを１〜２６に、数字の１〜９を２７〜３５にそれぞれ置き換え、数字の０は３６と置き換えて計算する。
【００３９】
プログラムに設定された計算式は、キーデータの１文字目と３文字目と７文字目の文字を読み取り、その文字を前述の数値に置き換えた３つの数値の和を求めることとする。また、特定値は「６３」（即ち、１文字目と３文字目と７文字目の合計が６３）とする。特定値を持つ文字列の生成は次のようにして行う。先ず最初に１文字目は英字であるから１〜２６までの数値を乱数発生器により発生し、その値に対応する英字を決定する。例えば、８が発生されれば「Ｈ」が定まる。次の３文字目は数字であるので数字に変換される２７〜３６の間の乱数を発生する。もし、３１が発生されればこれは数字の「５」と定まる。次の７文字目は英字であり、特定値の６３を作るには後２４が必要なので（６３−８−３１＝２４）、２４に相当する英字の「Ｘ」が定まる。これで、１文字目と３文字目と７文字目が定まったので、他の文字は英字は１〜２６、数字は２７〜３６で乱数を発生しその対応する文字に置き換える。このようにして、例えば「ＨＪ５Ｃ９０Ｘ７１」が特定値「６３」を持つキーデータとして生成されたことになる。
【００４０】
特定値を持たないキーデータは、それぞれの桁の英字か数字に対して乱数を発生し、前述の計算式で計算して６３とならなければその文字列を配置し、もし６３となった場合は再度乱数を発生し直すことを行う。
【００４１】
フローに戻り、１行目は実データであるのでキーデータ列（列４）には特定値を持たないキーデータを生成して配置し、列１〜列３にはＳ１００で取得した１行目のデータ（実データ）をそのまま配置する。
【００４２】
次に２行目に移り、２行目はダミーデータであるのでキーデータ列には特定値を持つキーデータを生成し配置する。そして、列１〜列３にはダミーデータを挿入する。ダミーデータは、実データに似せたデータを生成し配置する。同様の処理をＭ＋ｍ行について行うと、実データ行にダミーデータ行が挿入されたことになる（Ｓ１４０〜Ｓ１８０）。
【００４３】
上述のデータ保護を行う処理の作業は図５のワークエリア２６０で行われ、完成した表形式データは図５のデータ記憶部２７０、あるいはフロッピー・ディスク２４０に格納される。
【００４４】
次に図８を用いてデータ復元のフローを説明する。
【００４５】
まず、データ保護がなされた表形式データを取り込む（Ｓ２００）。
【００４６】
取得した表形式データのキーデータ列の１行目からデータを前述した計算式で計算し、その計算値が特定値の「６３」に等しいときダミーデータ行と判断してその行位置を格納しておく（例えば、ワークエリアの所定の記憶位置に格納する）。計算値が特定値と等しくないときは、次の行のキーデータを計算する。この処理を１行目からＭ＋ｍ行目まで（ここでは１行目から６行目まで）行い、ダミーデータ挿入行の行位置を格納する。ここでは、２行と４行の行位置が格納されることになる（Ｓ２１０〜Ｓ２３０）。
【００４７】
次に格納された行位置の行を削除し、Ｎ＋１列目に挿入されたキーデータ列を削除する。これにより表形式データは復元されたものとなる（Ｓ２４０、Ｓ２５０）。
【００４８】
以上の処理により、図６（ａ）の実データから図６（ｄ）のダミーデータを混在したデータが作成され、また図６（ｄ）のダミーデータが混在してデータ保護がなされたデータから図６（ａ）の実データに復元することができる。図７のデータ保護の処理および図８のデータ復元の処理は、それぞれ図５のデータ保護処理部２８１とデータ復元処理部２８２で処理される。
（実施例その２）
実施例その２は第２の発明に対する実施例である。図９はそのデータ例を示し、図９（ａ）はデータ保護をかける対象の表形式データで、実施例その１と同一のデータである。図９（ｂ）は、図９（ａ）の表形式データに挿入されるダミーデータの例で、各列５個のダミーデータを備えている。これらの各列のダミーデータは各列毎にそれぞれ設定された特定値を持つデータである。そして、各列内のダミーデータの個々は同じ特定値を有しているデータである。図９（ｃ）は、図９（ａ）の表形式データにダミーデータ行が挿入された状態を示している。このダミーデータ行のデータは図９（ｂ）の各列にあるデータから１つずつ選択されたものである。
【００４９】
次に、ダミーデータを作成し、ダミーデータを挿入する方法をプログラムで処理するものとして説明する。プログラムには特定値を求める計算式、各列毎の特定値、ダミーデータの挿入行数計算式、ダミーデータ作成個数等が組み込まれているものとする。
【００５０】
図１０は実データが配置された表形式データを基にデータの保護を行う処理フローを示すもので、まずデータ保護の対象である表形式データ（Ｍ行Ｎ列）を取得し、取得した表形式データの行数を基にダミーデータの挿入行数（ｍ）を計算する。実施例その１と同様に２行が計算されたものとする。（Ｓ３００、Ｓ３１０）。
【００５１】
次にプログラムに設定された列毎の特定値とダミーデータの作成個数を基にダミーデータを作成する。ここでは、各列の特定値が「２１」、「１５」及び「１８」（即ち、Ｆ（列１）＝２１、Ｆ（列２）＝１５、Ｆ（列３）＝１８）と設定されており、ダミーデータの作成個数は「５」が設定されているものとする。これらの設定値をもとに各列の特定値に合うよう各列５個のダミーデータを作成する。
【００５２】
実施例その２の実データは図９（ａ）に示すように列１と列２は漢字であるので、この場合の計算式とその特定値を求め方を説明する。漢字コードをＳ−ＪＩＳコードとして１６進数で表わしたとき、漢字１文字は４つの数字（各数字は０〜１５）で表すことができる。漢字２文字の苗字ならば０〜１５の数字が８個並んだものとして表せるので、ここでは計算式を４つ目と６つ目と７つ目の数字を合計したもの、としている。例えば「田辺」と言う文字は、「田」は＃９３６３（＃は１６進数を表す）、「辺」は＃９５Ｄ３となり、９・３・６・３・９・５・１３・３となり、４、６、７個目の数字を合計すると２１を得ることができる（図９（ｂ）の行１列１の「田辺」はこのようにして生成した苗字である。図９（ｂ）の列１の他の苗字も全て２１となる）。コンピュータが生成した漢字コードの組合せが姓名として不自然となる場合があるので、ここでは生成した苗字をディスプレイ２２０に表示し、操作者に選択させるようにする。また、列２の特定値「１５」は、同様にして２個目と４個目の数字を合計したものである。さらに、列３の特定値「１８」は、ハイフォンを除いて数値と見なし、９桁目の２倍と７桁目の７倍から、５桁目の５倍と１０桁目の３倍を引いた値としている。（Ｓ３２０）。
【００５３】
続いて、実施例その１と同様にダミーデータ挿入行を決めるためＭ＋ｍ以下の値の乱数をｍ個発生させる。ここでも２と４の数値（ダミーデータの挿入行が２行目と４行目）が乱数発生器で発生されたものとする（Ｓ３３０）。
【００５４】
次にダミーデータ挿入ループに入り、最も小さい値のダミーデータ挿入行をまず選び（ここでは２行目）、そのダミーデータ挿入行以降の実データを１行分下方に移動し、その行に各列に対応したダミーデータを選び挿入する。各列からダミーデータを選ぶ方法は、これも数値が５以下の乱数を発生し（各列のダミーデータの数を５としたので）、その数値の行のダミーデータを選ぶようにする。続いて２番目に小さい値の挿入行に対して以上の処理を行い、これを繰り返して全てのダミーデータ挿入行に対してダミーデータの挿入を行う。（Ｓ３４０、Ｓ３５０）。
【００５５】
以上で、実データ行に対してダミーデータ行の挿入が行われたことになる。ここでは、ダミーデータを予め生成しておいたが、直接ダミーデータを生成し挿入するようにしてもよい。次に、データ復元のフローを図１１により説明する。
【００５６】
まず、データ保護がなされた表形式データを取り込みむ（Ｓ４００）。
【００５７】
取得した表形式データの１行目のデータ（この場合３列あるので１行のデータは３個ある）を前述した計算式で計算し、このデータの計算値がそれぞれダミーデータの各列の特定値と等しいときその行はダミーデータ行と判断し、その行位置を格納しておく。１行分のデータの計算値が１つでもダミーデータの各列の特定値と等しくないときは、実データ行であると判断し次の行を計算する。この処理を１行目からＭ＋ｍ行目まで（ここでは１行目から６行目まで）行い、ダミーデータ挿入行の行数値を格納する。ここでは、２行と４行の行位置が格納されることになる（Ｓ４１０〜Ｓ４３０）。
【００５８】
次に格納された行位置の行を削除する。これにより表形式データは復元されたものとなる（Ｓ４４０）。
【００５９】
以上の処理により、図９（ａ）の実データから図９（ｃ）のダミーデータ行を混在したデータが作成され、また図９（ｃ）のダミーデータ行が混在してデータ保護がなされたデータから図９（ａ）の実データへ復元することができる。図１０のデータ保護の処理および図１１のデータ復元の処理は、それぞれ図５のデータ保護処理部２８１とデータ復元処理部２８２で処理される。
（実施例その３）
実施例その３は第３の発明に対する実施例である。図１２はそのデータ例を示し、図１２（ａ）はデータ保護をかける対象の表形式データで、９行２列に実データが配置された表形式データである。図１２（ｂ）は、後述するフローで生成されたキーデータで、９行１列の表形式である。図１２（ｃ）は、図１２（ａ）の表形式データの各列の実データを分散し、実データ以外の箇所にダミーデータを挿入した例を示すものである。
【００６０】
次に、キーデータを作成し、実データを分散する方法をプログラムで処理するものとして説明する。
【００６１】
図１４は実データが配置された表形式データを基にデータの保護を行う処理フローを示すもので、まずデータ保護の対象である表形式データ（Ｍ行Ｎ列）を取得する。ここでは図１２（ａ）示すように９行２列の表形式データを取得する（Ｓ５００）。
【００６２】
次に０から９９間での乱数をＭ個発生し、この値をハッシュ値（即ち、特定値）として順次Ｍ行１列の表形式に配置する。図１３には実データの９行に対応した９行１列の表形式に発生した乱数を配置した例を示している（図１３の右から３つ目の表）。次にこのそれぞれのハッシュ値に２００を加える（図１３の右から２つ目の表）。この値をキーデータとして１０桁の文字列に変換するのであるが、変換において１０個の文字の和がこのハッシュ値＋２００に等しくなるように変換する。変換の条件は、実施例その１で述べた英字と数字の変換数値（英字のＡ〜Ｚを１〜２６に、数字の１〜９を２７〜３５に置き換え、数字の０は３６と置き換える）としキーデータの文字構成は全体１０桁の内１、２、４および７桁を英字、他の桁を数字とする。この条件でキーデータが取り得る値の範囲は１６６〜３２０（英文字４個で４〜１０４、数字６個で１６２〜２１６）であるので、ハッシュ値＋２００の取り得る範囲（２００〜２９９）を変換することは充分可能である。具体的な変換の方法は、１桁目から順次英字に対しては１〜２６の乱数を、数字に対しては２７〜３６の乱数を発生させて対応する英数字を確定して行き、最後の桁はハッシュ値＋２００の値になる数字に置き換える（図１３の右の表）。このようにして作成したキーデータ列を、取得した表形式データの最後列（Ｎ＋１列）に挿入する（Ｓ５１０〜Ｓ５３０）。
【００６３】
次に、実データの各列の右側にプログラムに設定されている列数のブランク列を挿入する。ここでは、図１２（ａ）の列１に対応して挿入するブランク列を１列、列２に対しては２列挿入されるものとする。ここまでの処理で、取得した表形式データは列１と列３は実データ、列２と列４、列５はブランク列、列６はキーデータ列となっている（Ｓ５４０）。
【００６４】
次に実データを移動することを行う。移動の範囲は、列１の実データは列１と列２、列３の実データは列３〜列５の何れかの列位置に移動される（列１と列２を列１の実データに対する分散列と言う。列３〜列５は列３の実データに対する分散列である）。まず、１行目のキーデータをプログラムに設定された計算式（即ち、１０桁の文字列の文字に対応した数値に変換し、それらの和を求め２００を引く）で計算し、計算結果（即ち、ハッシュ値）を得る。そして、このハッシュ値の値が奇数であれば列１の実データを列１に、偶数であれば列２に移動する（列１を列１に配置する場合も「移動する」と表現している）。さらに、列３の実データに対しては、そのハッシュ値が３０以下のものは列３に、７０以上のものは列４に、それ以外は列５に移動させる（これらのハッシュ値に対する移動ルールはプログラムに設定されているものとする）。即ち、１つのハッシュ値で、１列目の実データに対してハッシュ値の奇数偶数で２列の列位置を割り振り、３列目の実データに対してはハッシュ値の数値範囲で３列の列位置を割り振っている。これを全ての行（図１２の例では９行）について実施する（Ｓ５５０）。
【００６５】
最後に、実データ以外の箇所にダミーデータを挿入する。例えば、図１２（ａ）の列１の実データに対するダミーデータは、予め定めたその列の値としてふさわしい最大値と最小値の間の数値を乱数発生器より得て作成する。また、列２の実データに対するダミーデータはＡ〜Ｅの内の実データ以外の英字を２個乱数で発生させ（２個は異なる英字であるものとする）ダミーデータとして挿入する（Ｓ５６０）。
【００６６】
以上に述べた実施例その３では、実データが配置された表形式データに分散列を挿入して説明したが、元の表形式データはそのままにしておいて、予め分散を考えた列数の空の表（行数は表形式データの行数とする）を作成しておき、実データを対応する列に分散配置するようにしてもよい。例えば、図１２（ａ）の実データが配置された表形式データに対しては、図１２（ｃ）のブランクの表を用意しておき、ここに実データをキーデータに基づいて分散配置する。このとき、列１と列２は図１２（ａ）の実データの列１の分散列であり、列３〜列５は、図１２（ａ）の実データの列２の分散列である。
【００６７】
次にデータの復元について図１５を用いて説明する。
【００６８】
まず、データ保護がなされた表形式データを取り込みむ（Ｓ６００）。
【００６９】
取得した表形式データの１行目のキーデータを前述の計算式で計算し、ハッシュ値を求める。ハッシュ値に対応する実データの位置をプログラムに設定した移動ルールから求め、実データの位置を求める。そして、この位置に有るデータ（実データ）を分散列の最左端（分散列である列１と列２に対しては列１、列３〜列５に対しては列３）に移動する。これを全ての行に対して実施する（Ｓ６１０〜Ｓ６３０）。
【００７０】
実データ以外（図１２（ｃ）の場合、列１と列３の列以外）の列を削除して復元を完成する（Ｓ６４０）。
【００７１】
以上の処理により、図１２（ａ）の実データから図１２（ｃ）のダミーデータを混在したデータが作成され、また図１２（ｃ）のダミーデータが混在したデータから図１２（ａ）の実データへ復元することができる。
（実施例その４）
実施例その４は第４の発明に対する実施例である。図１６はそのデータ例を示し、図１６（ａ）はデータ保護をかける対象の表形式データで、６行３列に実データが配置された表形式データである。図１６（ｂ）は、後述する方法で生成されたキーデータで、６行１列の表形式である。図１６（ｃ）は、図１６（ａ）の表形式データにキーデータ列を加え、表形式データの実データの列位置を入れ換えた例を示すものである。
【００７２】
次に、キーデータを作成し、実データを分散する方法をプログラムで処理するものとして説明する。
【００７３】
最初にキーデータの生成方法から説明する。実データは６行あるので、実施例その３と同様０〜９９の範囲で乱数を６個発生しその値をハッシュ値とする。そして実施例その３で示した文字列の構成と同様の方法で１０桁の文字列に変換する。この変換された文字列がキーデータである。図１６（ｂ）はこのようにして作られたキーデータであり、その右側の括弧の中の数値がキーデータ作成の元となる乱数発生により得られたハッシュ値である。
【００７４】
次に、実データの列位置の入れ換えについて説明する。まず、ハッシュ値を６で割り、その余りを求める。６で割る理由は、３列の実データの列位置を入れ換えるとき、その入れ換える組合せが６通りあることによる。求めた余りの数値に対応して、例えば図１７に示すルールで列位置の入れ換えを行う。図１７は、６で割った余りの値に対して３列ある実データの移動先の列位置を示している。例えば、１行目のハッシュ値「８２」を６で割った余りは「４」であるので、列１の実データは列２に、列２の実データは列３に、そして列３の実データは列１に移動することになる。これを各行に対して入れ換えを実施する。
【００７５】
データの復元は、キーデータからハッシュ値を求め、これを６で割った値に基づいて図１７に示される実データのもとの列位置を知り、そこに移動させればよい。
【００７６】
以上の処理により、図１６（ａ）の実データから図１６（ｃ）の実データの列位置を入れ換えたデータが作成され、また図１６（ｃ）の列位置を入れ換えたデータから図９（ａ）の実データへ復元することができる。
【００７７】
（実施例その５）
図１８は第１の発明と第３の発明を同時に用いた例である。即ち、行方向と列方向にダミーデータを挿入する例である。
【００７８】
図１８（ａ）は、データ保護をかける対象の表形式データで、６行５列に実データが配置された表形式データである。図１８（ｂ）は、後述するフローで生成されたキーデータで、９行１列の表形式である。図１８（ｃ）は、図１８（ａ）の表形式データの実データに行方向にはダミーデータ行を、列方向には実データの列位置を移動させ移動した後にダミーデータを挿入した例を示すものである。なお、図１８（ｃ）は、図１８（ａ）の列４の実データを２列の分散列に、列５の実データを３列の分散列に列移動している。
【００７９】
キーデータは全体９桁の文字列とし、１、２、４、７桁目は英字を、その他は数字で構成する。文字から数値への変換は前述と同様である。また、計算式は１文字、３文字、７文字を数値に変換し、その値を合計するものである。
【００８０】
最初にダミーデータ行を挿入するハッシュ値は「６３」とし、その挿入行数はプログラムに設定された挿入行数を求める計算式により３行が得られたものとする。そして表挿入位置は実施例その１に示すように乱数を発生し２、４、７を得て、挿入行を２行、４行、７行とする。この行にハッシュ値６３となるように実施例その１で示した方法で文字列を生成する。
【００８１】
次に２、４、７行以外の行について５５〜９８の間の乱数を発生させそれをハッシュ値とする（５５〜９８の数値範囲は、英語の１文字で１〜２６、数字の２文字で５４〜７２が取り得る範囲となるためこれらを合算し５５〜９８となる）。もし、６３が乱数発生で得られたらやり直す。
【００８２】
次に、列４の実データはハッシュ値の奇数偶数で移動する（この例では、奇数は列４に偶数は列５に移動した）。そして、図１８（ａ）の列５の実データはハッシュ値が７０以下は図１８（ｃ）の列６に、７１〜８４の場合は列７に、８５以上の場合は列８に移動する。
【００８３】
以上により図１８（ａ）から図１８（ｃ）のデータが得られる。本発明の行と列とにダミーデータを挿入することにより、データ保護は堅固のものとなる。
【００８４】
以上の実施例ではキーデータがあるものは元の表形式データにキーデータ列として挿入するようにしたが、表形式データには挿入せずに他所に保持するようにしてもよい。また、特定値や実データの移動のルール等をプログラムに持たせているが、適切なユーザインターフェースにより操作者に設定させるようにしてもよい。
【００８５】
また、ダミーデータは実データと似せることが必要なことは言うまでもない。
【００８６】
さらに、本発明のデータ保護の方法に加えて従来から行われている暗号化を行えば、より一層のデータ保護がなされるし、本発明は従来の方法と併用することに問題はない。
【００８７】
以上の実施例に関し、さらに以下の付記を開示する。
【００８８】
（付記１）
実データが行と列とに配置された表形式データのデータ保護プログラムであって、
所定の計算式で求められる値が特定の値となるデータと特定の値とならないデータとを混在し、前記表形式データの行に対応して配置したキーデータを作成するキーデータ作成手順と、
前記キーデータが前記特定の値となるものと前記特定の値とならないものとに応じて前記表形式データの該キーデータに対応する行にダミーデータを挿入するダミーデータ行挿入手順と
をコンピュータに実行させることを特徴とするデータ保護プログラム。
【００８９】
（付記２）
実データが行と列とに配置された表形式データのデータ保護プログラムであって、
前記表形式データの任意の１つ以上の行に、所定の計算式で求められる値が各列においてそれぞれ固有の特定の値となるダミーデータを挿入するダミーデータ行挿入手順
をコンピュータに実行させることを特徴とするデータ保護プログラム。
【００９０】
（付記３）
実データが行と列とに配置された表形式データのデータ保護プログラムであって、
所定の計算式で求められる値が特定の値となるデータを前記表形式データの行に対応して配置したキーデータを作成するキーデータ作成手順と、
前記表形式データの実データの列に対応して１列以上の分散列をそれぞれ作成し、該表形式データの各行における実データを、該各行に対応するキーデータから得られる前記特定の値に基づいてそれぞれの該実データの列に対応する該分散列に分散して配置する実データ分散手順と、
前記実データが配置された分散列に対して、該実データが配置された以外の箇所にダミーデータを挿入するダミーデータ挿入手順と
をコンピュータに実行させることを特徴とするデータ保護プログラム。
【００９１】
（付記４）
実データが行と列とに配置された表形式データのデータ保護プログラムであって、
所定の計算式で求められる値が特定の値となるデータを前記表形式データの行に対応して配置したキーデータを作成するキーデータ作成手順と、
前記キーデータの前記特定の値に基づいて、該キーデータに対応する行の個々の実データの列位置を入れ換える実データ入換手順と
をコンピュータに実行させることを特徴とするデータ保護プログラム。
【００９２】
（付記５）
実データが行と列とに配置された表形式データのデータ保護方法であって、
所定の計算式で求められる値が特定の値となるデータと特定の値とならないデータとを混在し、前記表形式データの行に対応して配置したキーデータを作成するキーデータ作成手順と、
前記キーデータが前記特定の値となるものと前記特定の値とならないものとに応じて前記表形式データの該キーデータに対応する行にダミーデータを挿入するダミーデータ行挿入手順と
を有することを特徴とするデータ保護方法。
【００９３】
（付記６）
実データが行と列とに配置された表形式データのデータ保護方法であって、
所定の計算式で求められる値が特定の値となるデータを前記表形式データの行に対応して配置したキーデータを作成するキーデータ作成手順と、
前記表形式データの実データの列に対応して１列以上の分散列をそれぞれ作成し、該表形式データの各行における実データを、該各行に対応するキーデータから得られる前記特定の値に基づいてそれぞれの該実データの列に対応する該分散列に分散して配置する実データ分散手順と、
前記実データが配置された分散列に対して、実データが配置された以外の箇所にダミーデータを挿入するダミーデータ挿入手順と
をコンピュータに実行させることを特徴とするデータ保護方法。
【００９４】
（付記７）
実データが行と列とに配置された表形式データのデータ保護装置であって、
所定の計算式で求められる値が特定の値となるデータと特定の値とならないデータとを混在し、前記表形式データの行に対応して配置したキーデータを作成するキーデータ作成手段と、
前記キーデータが前記特定の値となるものと前記特定の値とならないものとに応じて前記表形式データの該キーデータに対応する行にダミーデータを挿入するダミーデータ行挿入手段と
を有することを特徴とするデータ保護装置。
【図面の簡単な説明】
【００９５】
【図１】発明の原理図（その１）である。
【図２】発明の原理図（その２）である。
【図３】発明の原理図（その３）である。
【図４】発明の原理図（その４）である。
【図５】データ保護装置の構成例である。
【図６】実施例その１のデータ例である。
【図７】実施例その１のデータ保護処理のフロー例である。
【図８】実施例その１のデータ復元処理のフロー例ある。
【図９】実施例その２のデータ例である。
【図１０】実施例その２のデータ保護処理のフロー例である。
【図１１】実施例その２のデータ復元処理のフロー例である。
【図１２】実施例その３のデータ例である。
【図１３】実施例その３のキーデータ生成例である。
【図１４】実施例その３のデータ保護処理のフロー例である。
【図１５】実施例その３のデータ復元処理のフロー例である。
【図１６】実施例その４のデータ例である。
【図１７】実施例その４の実データの移動ルール例である。
【図１８】実施例その５のデータ例である。
【符号の説明】
【００９６】
１０    キーデータ作成手順
１１    キーデータ作成手順
２０    ダミーデータ行挿入手順
２１    ダミーデータ行挿入手順
５０    実データ分散手順
６０    ダミーデータ挿入手順
７０    実データ入換手順
２００  データ保護装置
２１０  ＣＰＵ
２２０  ディスプレイ（ＤＩＳＰ）
２３０  キーボード（ＫＢ）
２４０  フロッピー・ディスク（ＦＰＤ）
２５０  入出力制御部
２６０  ワークエリア
２７０  データ記憶部
２８０  データ保護プログラム
２８１  データ保護処理部
２８２  データ復元処理部
【図１】
2006185096.tif 000003
【図２】
2006185096.tif 000004
【図３】
2006185096.tif 000005
【図４】
2006185096.tif 000006
【図５】
2006185096.tif 000007
【図６】
2006185096.tif 000008
【図７】
2006185096.tif 000009
【図８】
2006185096.tif 000010
【図９】
2006185096.tif 000011
【図１０】
2006185096.tif 000012
【図１１】
2006185096.tif 000013
【図１２】
2006185096.tif 000014
【図１３】
2006185096.tif 000015
【図１４】
2006185096.tif 000016
【図１５】
2006185096.tif 000017
【図１６】
2006185096.tif 000018
【図１７】
2006185096.tif 000019
【図１８】
2006185096.tif 000020