JP4619045B2 - データ秘匿装置、データ秘匿方法、及びデータ秘匿プログラム - Google Patents

データ秘匿装置、データ秘匿方法、及びデータ秘匿プログラム Download PDF

Info

Publication number
JP4619045B2
JP4619045B2 JP2004168997A JP2004168997A JP4619045B2 JP 4619045 B2 JP4619045 B2 JP 4619045B2 JP 2004168997 A JP2004168997 A JP 2004168997A JP 2004168997 A JP2004168997 A JP 2004168997A JP 4619045 B2 JP4619045 B2 JP 4619045B2
Authority
JP
Japan
Prior art keywords
data
random number
divided
storage unit
generating
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 - Lifetime
Application number
JP2004168997A
Other languages
English (en)
Other versions
JP2005346005A (ja
JP2005346005A5 (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.)
NTT Communications Corp
Original Assignee
NTT Communications Corp
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 NTT Communications Corp filed Critical NTT Communications Corp
Priority to JP2004168997A priority Critical patent/JP4619045B2/ja
Publication of JP2005346005A publication Critical patent/JP2005346005A/ja
Publication of JP2005346005A5 publication Critical patent/JP2005346005A5/ja
Application granted granted Critical
Publication of JP4619045B2 publication Critical patent/JP4619045B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Description

本発明は、暗号化された情報の解読を防止する技術に関し、特に、ブロック暗号を用いた擬似乱数アルゴリズムにより生成された暗号化用乱数が脆弱化したときに好適に適用できるデータ秘匿装置、データ秘匿方法、及びデータ秘匿プログラムに関する。
データの暗号化方法の1つに、バーナム暗号がある。バーナム暗号とは、データと同じ長さの乱数列を用意し、暗号化に際しては、データのnビット目と乱数列のnビット目の排他的論理和(XOR)を計算し、復号化に際しては、暗号化されたデータのnビット目と乱数列のnビット目の排他的論理和(XOR)を計算するものである。
以下、排他的論理和演算(XOR)は、「*」なる演算記号で表すことにするが、この排他的論理和演算のビット毎の演算規則での各演算結果は下記のとおりになっている。
0 * 0 の演算結果は 0
0 * 1 の演算結果は 1
1 * 0 の演算結果は 1
1 * 1 の演算結果は 0
また、XOR演算は交換法則、結合法則が成り立つ。すなわち、
a*b=b*a
(a*b)*c=a*(b*c)が成り立つことが数学的に証明される。
また、a*a=0,a*0=0*a=aが成り立つ。ここでa,b,cは同じ長さのビット列を表し、0はこれらと同じ長さですべて「0」からなるビット列を表す。
図14に簡単なバーナム暗号の例を示す。平文Xと鍵Yとの排他的論理和演算(XOR)により、計算された暗号文Zは、再度、鍵Yとの排他的論理和演算(XOR)により、平文Xに復号されていることがわかる。
一方、ブロック暗号は、データを一定のブロック長に区切って、ブロック単位に暗号鍵を用いて暗号化処理を行う方法であるが、このブロック暗号は、コンピュータを用いても計算量的に解読困難であることによりデータを秘匿する。これに対して、上述したバーナム暗号は、いくら計算リソースがあっても鍵となる乱数列がなければデータを得ることができないものである。しかし、バーナム暗号においては、データと同じ長さの乱数列が必要であるため、シード(乱数生成の種となる情報)を入力として長い乱数列を生成する擬似乱数生成アルゴリズムが用いられることが多い。
尚、この出願に関連する先行技術文献情報としては、次のものがある。
Information Security Laboratory、"One-Time Pad or Vernam Cipher"、[Online]、[平成16年5月20日検索]、インターネット<URL:http://islab.oregonstate.edu/koc/ece679/notes/onetime.pdf> 情報処理振興事業協会 通信・放送機構、"暗号技術評価報告書(2002 年度版) CRYPTREC Report 2002"、[Online]、[平成16年5月20日検索]、インターネット<URL: http://www.shiba.tao.go.jp/kenkyu/CRYPTREC/PDF/c02_report.pdf>
ところで、既存の擬似乱数生成アルゴリズムの多くは、その構成の一部にブロック暗号を用いている。ブロック暗号は、上述したように計算量的に解読困難であることによりデータを秘匿するものであるから、コンピュータの性能向上とともに脆弱化する。ブロック暗号の脆弱化は、必ずしも擬似乱数生成アルゴリズムの脆弱化につながるわけではないが、ある一部の乱数列から他の部分の乱数列が予測されることもあり得る。従って、既存の擬似乱数アルゴリズムにより生成された乱数列を用いたバーナム暗号は、長期間にわたって秘匿したいデータの暗号化には有効でないという課題がある。
本発明は、上記の課題を解決するためになされたものであり、バーナム暗号をはじめとする、ブロック暗号を用いた擬似乱数生成アルゴリズムにより生成された乱数列と、秘匿したいデータとの排他的論理和を計算してデータを暗号化をする暗号化方式において、長期間にわたってデータを秘匿し得るデータ秘匿装置、データ秘匿方法、及びデータ秘匿プログラムを提供することを目的とする。
上記目的を達成するため、請求項1記載の本発明は、データをバーナム暗号を用いて秘匿するデータ秘匿装置であって、ブロック暗号を構成要素に持つ擬似乱数生成関数を用いて第1の乱数を生成する手段と、前記データと、前記第1の乱数との排他的論理和により暗号データを生成する手段と、生成された暗号データを所定の記憶部に記憶する手段と、所定の時期に、前記記憶部に記憶された暗号データの生成時に用いられた擬似乱数生成関数よりも計算量が大きい別の擬似乱数生成関数を用いて、第2の乱数を生成する手段と、前記記憶部に記憶された暗号データと、前記第2の乱数との排他的論理和により暗号データを生成する暗号データ暗号化手段と、前記記憶部に記憶された暗号データに代えて、前記暗号データ暗号化手段で生成された暗号データを前記記憶部に記憶する手段と、を有することを特徴とする。
請求項2記載の本発明は、請求項1記載の発明において、前記暗号データ暗号化手段は、さらに、生成された暗号データと、前記記憶部に記憶された暗号データの生成時に用いられた乱数との排他的論理和により、暗号データを生成することを特徴とする。
請求項3記載の本発明は、請求項1記載の発明において、前記記憶部に記憶された暗号データと、前記データから前記記憶部に記憶された暗号データを生成するまでに用いた乱数すべてとを結合した排他的論理和により、前記データを復号する手段を有することを特徴とする。
請求項4記載の本発明は、請求項2記載の発明において、前記記憶部に記憶された暗号データと、前記記憶部に記憶された暗号データを生成するときに用いた乱数との排他的論理和により、前記データを復号する手段を有することを特徴とする。
請求項5記載の本発明は、データを秘密分散法を用いて秘匿するデータ秘匿装置であって、前記秘密分散法は、前記データを所望の処理単位ビット長に基づいて所望の分割数の分割データに分割するデータ分割方法であり、前記データを処理単位ビット長毎に区分けして、複数の元部分データを生成し、この複数の元部分データの各々に対応して、前記データのビット長と同じまたはこれより短い長さの第1の乱数から処理単位ビット長の複数の第1の乱数部分データを生成し、各分割データを構成する各分割部分データを元部分データと第1の乱数部分データの排他的論理和によって処理単位ビット長毎に生成して、所望の分割数の分割データを生成するとともに、新たに発生させた第2の乱数から処理単位ビット長の複数の第2の乱数部分データを生成し、前記各分割部分データと第2の乱数部分データの排他的論理和により処理単位ビット長毎に再分割部分データを生成して、前記所望の分割数の再分割データを生成するデータ分割方法であり、ブロック暗号を構成要素に持つ擬似乱数生成関数を用いて前記第1の乱数を生成する手段と、前記データと前記第1の乱数から、前記秘密分散法を用いて前記分割データを生成する手段と、前記分割データを暗号データとして所定の記憶部に記憶する手段と、所定の時期に、前記記憶部に記憶された暗号データの生成時に用いられた擬似乱数生成関数よりも計算量が大きい別の擬似乱数生成関数を用いて、前記第2の乱数を生成する手段と、前記記憶部に記憶された暗号データと前記第2の乱数から、前記秘密分散法を用いて前記再分割データを生成する手段と、前記記憶部に記憶された暗号データに代えて、前記再分割データを暗号データとして前記記憶部に記憶する手段と、を有することを特徴とする。
請求項6記載の本発明は、請求項5記載の発明において、前記記憶部に記憶された暗号データのうち、復元可能な所定の個数の分割データの組み合わせから、前記秘密分散法を用いて、前記データを復号する手段を有することを特徴とする。
請求項7記載の本発明は、請求項5又は6記載の発明において、前記秘密分散法は、前記各分割部分データの定義式における第1の乱数部分データを、該第1の乱数部分データと該各第1の乱数部分データに対応する第2の乱数部分データとの排他的論理和演算に置換した各再分割部分データの定義式により、各再分割部分データを生成することを特徴とする。
請求項8記載の本発明は、請求項5又は6記載の発明において、前記秘密分散法は、前記各分割部分データの定義式における第1の乱数部分データを、該第1の乱数部分データに対応する第2の新たな乱数部分データに置換した各再分割部分データの定義式により、各再分割部分データを生成することを特徴とする。
請求項9記載の本発明は、請求項1乃至8のいずれか1項に記載の発明において、前記所定の時期は、コンピュータの計算能力をもとに判断された、前記擬似乱数関数に用いられたブロック暗号の脆弱時期であることを特徴とする。
請求項10記載の本発明は、データをバーナム暗号を用いて秘匿するデータ秘匿方法であって、ブロック暗号を構成要素に持つ擬似乱数生成関数を用いて第1の乱数を生成するステップと、前記データと、前記第1の乱数との排他的論理和により暗号データを生成するステップと、生成された暗号データを所定の記憶部に記憶するステップと、所定の時期に、前記記憶部に記憶された暗号データの生成時に用いられた擬似乱数生成関数よりも計算量が大きい別の擬似乱数生成関数を用いて、第2の乱数を生成するステップと、前記記憶部に記憶された暗号データと、前記第2の乱数との排他的論理和により暗号データを生成する暗号データ暗号化ステップと、前記記憶部に記憶された暗号データに代えて、前記暗号データ暗号化ステップで生成された暗号データを前記記憶部に記憶するステップと、を有することを特徴とする。
請求項11記載の本発明は、データを秘密分散法を用いて秘匿するデータ秘匿方法であって、前記秘密分散法は、前記データを所望の処理単位ビット長に基づいて所望の分割数の分割データに分割するデータ分割方法であり、前記データを処理単位ビット長毎に区分けして、複数の元部分データを生成し、この複数の元部分データの各々に対応して、前記データのビット長と同じまたはこれより短い長さの第1の乱数から処理単位ビット長の複数の第1の乱数部分データを生成し、各分割データを構成する各分割部分データを元部分データと第1の乱数部分データの排他的論理和によって処理単位ビット長毎に生成して、所望の分割数の分割データを生成するとともに、新たに発生させた第2の乱数から処理単位ビット長の複数の第2の乱数部分データを生成し、前記各分割部分データと第2の乱数部分データの排他的論理和により処理単位ビット長毎に再分割部分データを生成して、前記所望の分割数の再分割データを生成するデータ分割方法であり、ブロック暗号を構成要素に持つ擬似乱数生成関数を用いて前記第1の乱数を生成するステップと、前記データと前記第1の乱数から、前記秘密分散法を用いて前記分割データを生成するステップと、前記分割データを暗号データとして所定の記憶部に記憶するステップと、所定の時期に、前記記憶部に記憶された暗号データの生成時に用いられた擬似乱数生成関数よりも計算量が大きい別の擬似乱数生成関数を用いて、前記第2の乱数を生成するステップと、前記記憶部に記憶された暗号データと前記第2の乱数から、前記秘密分散法を用いて前記再分割データを生成するステップと、前記記憶部に記憶された暗号データに代えて、前記分割データを暗号データとして前記記憶部に記憶するステップと、を有することを特徴とする。
請求項12記載の本発明は、データをバーナム暗号を用いて秘匿するためのコンピュータが読み取り可能なデータ秘匿プログラムであって、ブロック暗号を構成要素に持つ擬似乱数生成関数を用いて第1の乱数を生成するステップと、前記データと、前記第1の乱数との排他的論理和により暗号データを生成するステップと、生成された暗号データを所定の記憶部に記憶するステップと、所定の時期に、前記記憶部に記憶された暗号データの生成時に用いられた擬似乱数生成関数よりも計算量が大きい別の擬似乱数生成関数を用いて、第2の乱数を生成するステップと、前記記憶部に記憶された暗号データと、前記第2の乱数との排他的論理和により暗号データを生成する暗号データ暗号化ステップと、前記記憶部に記憶された暗号データに代えて、前記暗号データ暗号化ステップで生成された暗号データを前記記憶部に記憶するステップと、を前記コンピュータに実行させることを特徴とする。
請求項13記載の本発明は、請求項12記載の発明において、前記暗号データ暗号化ステップは、さらに、生成された暗号データと、前記記憶部に記憶された暗号データの生成時に用いられた乱数との排他的論理和により、暗号データを生成することを特徴とする。
請求項14記載の本発明は、請求項12記載の発明において、前記記憶部に記憶された暗号データと、前記データから前記記憶部に記憶された暗号データを生成するまでに用いた乱数すべてとを結合した排他的論理和により、前記データを復号するステップを前記コンピュータに実行させることを特徴とする。
請求項15記載の本発明は、請求項13記載の発明において、前記記憶部に記憶された暗号データと、前記記憶部に記憶された暗号データを生成するときに用いた乱数との排他的論理和により、前記データを復号するステップを有することを特徴とする。
請求項16記載の本発明は、データを秘密分散法を用いて秘匿するためのコンピュータが読み取り可能なデータ秘匿プログラムであって、前記秘密分散法は、前記データを所望の処理単位ビット長に基づいて所望の分割数の分割データに分割するデータ分割方法であり、前記データを処理単位ビット長毎に区分けして、複数の元部分データを生成し、この複数の元部分データの各々に対応して、前記データのビット長と同じまたはこれより短い長さの第1の乱数から処理単位ビット長の複数の第1の乱数部分データを生成し、各分割データを構成する各分割部分データを元部分データと第1の乱数部分データの排他的論理和によって処理単位ビット長毎に生成して、所望の分割数の分割データを生成するとともに、新たに発生させた第2の乱数から処理単位ビット長の第2の複数の乱数部分データを生成し、前記各分割部分データと第2の乱数部分データの排他的論理和により処理単位ビット長毎に再分割部分データを生成して、前記所望の分割数の再分割データを生成するデータ分割方法であり、ブロック暗号を構成要素に持つ擬似乱数生成関数を用いて前記第1の乱数を生成するステップと、前記データと前記第1の乱数から、前記秘密分散法を用いて前記分割データに分割するステップと、前記分割データを暗号データとして所定の記憶部に記憶するステップと、所定の時期に、前記記憶部に記憶された暗号データの生成時に用いられた擬似乱数生成関数よりも計算量が大きい別の擬似乱数生成関数を用いて、前記第2の乱数を生成するステップと、前記記憶部に記憶された暗号データと前記第2の乱数から、前記秘密分散法を用いて前記再分割データを生成するステップと、前記記憶部に記憶された暗号データに代えて、前記分割データを暗号データとして前記記憶部に記憶するステップと、を前記コンピュータに実行させることを特徴とする。
請求項17記載の本発明は、請求項16記載の発明において、前記記憶部に記憶された暗号データのうち、復元可能な所定の個数の分割データの組み合わせから、前記秘密分散法を用いて、前記データを復号するステップを前記コンピュータに実行させることを特徴とする。
請求項18記載の本発明は、請求項16又は17記載の発明において、前記秘密分散法は、前記各分割部分データの定義式における第1の乱数部分データを、該第1の乱数部分データと該各第1の乱数部分データに対応する第2の乱数部分データとの排他的論理和演算に置換した各再分割部分データの定義式により、各再分割部分データを生成することを特徴とする。
請求項19記載の本発明は、請求項16又は17記載の発明において、前記秘密分散法は、前記各分割部分データの定義式における第1の乱数部分データを、該第1の乱数部分データに対応する第2の新たな乱数部分データに置換した各再分割部分データの定義式により、各再分割部分データを生成することを特徴とする。
請求項20記載の本発明は、請求項12乃至19のいずれか1項に記載の発明において、前記所定の時期は、コンピュータの計算能力をもとに判断された、前記擬似乱数関数に用いられたブロック暗号の脆弱時期であることを特徴とする。
本発明によれば、ブロック暗号を構成要素に持つ擬似乱数生成関数により生成された乱数を用いて、バーナム暗号により暗号化されたデータを、所定の時期にさらに、より計算量の大きい擬似乱数生成関数により生成された乱数を用いて、バーナム暗号によりさらに暗号化するので、長期間にわたってデータを秘匿し続けることができる。
また、本発明によれば、ブロック暗号を用いた擬似乱数生成関数により生成された乱数を用いて、秘密分散法により生成された分割データを、所定の時期にさらに、秘密分散法により、より計算量の大きい擬似乱数生成関数により生成された乱数を用いて、さらに再分割するので、長期間にわたってデータを秘匿し続けることができる。
特に、本発明における秘密分散法は、データを所望の処理単位ビット長に基づいて所望の分割数の分割データに分割するデータ分割方法であり、データを処理単位ビット長毎に区分けして、複数の元部分データを生成し、この複数の元部分データの各々に対応して、データのビット長と同じまたはこれより短い長さの乱数から処理単位ビット長の複数の乱数部分データを生成し、各分割データを構成する各分割部分データを元部分データと乱数部分データの排他的論理和によって処理単位ビット長毎に生成して、所望の分割数の分割データを生成するとともに、新たに発生させた乱数から処理単位ビット長の複数の乱数部分データを生成し、各分割部分データと該乱数部分データの排他的論理和により処理単位ビット長毎に再分割部分データを生成して、所望の分割数の再分割データを生成するので、データを復元することなく、データを再分割することができるので、データをよりセキュアに管理することができる。
以下、本発明の実施の形態を図面を用いて説明する。
<第1の実施の形態>
図1は、本発明の第1の実施の形態に係るデータ秘匿装置1の概略構成を示すブロック図である。図1に示すデータ秘匿装置1は、バーナム暗号を用いてデータを秘匿する装置であり、記憶部11、乱数生成部12、データ暗号部13、及びデータ復号部14を備えている。
詳しくは、記憶部11は、秘匿したいデータS、データSからバーナム暗号により生成される暗号データI(I=A,B,C,…)、バーナム暗号に用いられるシードJ(J=α,β,γ,…)などを記憶するものである。
乱数生成部12は、ブロック暗号を構成要素に持つ擬似乱数アルゴリズムK(K=F,G,H,…)を用いてシードJから乱数を生成するようになっている。尚、擬似乱数アルゴリズムKを用いてシードJから生成された乱数をK(J)と表す。
データ暗号部13は、バーナム暗号を用いてデータを暗号化するもので、具体的には、データSと、乱数生成部12で生成された乱数K(J)との排他的論理和(XOR)を計算して、暗号データIを生成するようになっている。また、既にデータSが暗号化されているときは、暗号データIをさらに暗号化するようになっており、暗号データIと、乱数生成部12で生成された乱数K(J)との排他的論理和(XOR)を計算して、暗号データI’を生成するようになっている。
データ復号部14は、暗号データIをデータSに復号化するもので、バーナム暗号の性質から、暗号生成に使用した乱数K(J)と、暗号データIとの排他的論理和(XOR)を計算することで、データSを復号できるようになっている。
ここで、上述したデータ秘匿装置1は、少なくとも演算機能および制御機能を備えた中央演算装置(CPU)、プログラムやデータを格納する機能を有するRAM等からなる主記憶装置(メモリ)を有する電子的な装置から構成されているものである。また、上記装置は、主記憶装置の他、ハードディスクなどの補助記憶装置を具備していてもよい。
このうち、乱数生成部12、データ暗号部13、及びデータ復号部14は、上記CPUによる演算制御機能を具体的に示したものに他ならない。また、記憶部11は、上記主記憶装置及び補助記憶装置の機能を備えたものである。
また、本実施の形態に係る各種処理を実行するプログラムは、前述した主記憶装置またはハードディスクに格納されているものである。そして、このプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD−ROMなどのコンピュータ読み取り可能な記録媒体に記録することも、通信ネットワークを介して配信することも可能である。
次に、図2を用いて、本実施の形態に係るデータ秘匿装置1の動作を説明する。
まず、乱数生成部12が、記憶部11に記憶されたシードαをもとに擬似乱数生成アルゴリズムFにより、データSと同じ長さの乱数F(α)を生成する(ステップS10)。
次に、データSと乱数F(α)から、バーナム暗号により、暗号データAを生成し、記憶部11に記憶する(ステップS20,S30)。即ち、A=S*F(α)である。
尚、擬似乱数生成アルゴリズムFは、その時点(データSを擬似乱数アルゴリズムFを用いて暗号化する時点)において、コンピュータの計算能力からブロック暗号が解読不能であると判断される程度の計算量を要するアルゴリズムで、暗号データ生成時にはデータ秘匿装置1に与えられている。
時間の経過とともにコンピュータの性能が向上し、擬似乱数アルゴリズムFを構成するブロック暗号の脆弱化が予測された場合(例えば、具体的には、ブロック暗号解読に必要な計算量と、その時点で入手可能なコンピュータの計算能力の双方を鑑みて、数年程度で解読可能な場合など)には、解読に必要な計算量がより大きいブロック暗号を構成要素に持つ擬似乱数アルゴリズムGを用いて、記憶部11に記憶されたシードβをもとに、データSと同じ長さの乱数G(β)を生成する(ステップS40,S50)。
次に、記憶部11に記憶された暗号データAと乱数G(β)とから、バーナム暗号を用いて、暗号データBを生成し、暗号データAに代えて記憶部11に記憶する(ステップS60,S70)。即ち、B=A*G(β)である。
尚、擬似乱数生成アルゴリズムGは、上述したように擬似乱数生成アルゴリズムFより計算量が必要とされ、その時点(暗号データAを擬似乱数アルゴリズムGを用いて暗号化する時点)において、コンピュータの計算能力からブロック暗号が解読不能であると判断される程度の計算量を要するアルゴリズムで、暗号データ生成時にはデータ秘匿装置1に与えられている。例えば、具体的には、擬似乱数生成アルゴリズムFの構成要素には128ビット鍵のAES(Advanced Encryption Standard)が用いられていた場合には、擬似乱数生成アルゴリズムGの構成要素としては、256ビット鍵のAESを用いるものである。
以降は、上記ステップS40〜S70の繰り返しである。即ち、時間の経過とともにコンピュータの性能が向上し、擬似乱数アルゴリズムGを構成するブロック暗号の脆弱化が予測された場合、解読に必要な計算量がより大きいブロック暗号を構成要素に持つ擬似乱数アルゴリズムHを用いて、記憶部11に記憶されたシードγをもとに、データSと同じ長さの乱数H(γ)を生成し、記憶部11に記憶された暗号データBと乱数H(γ)とから、バーナム暗号を用いて、暗号データC(=B*H(γ))を生成し、暗号データBに代えて記憶部11に記憶する(ステップS40,S50,S60,S70)。
次に、データSを復号する動作について説明する。記憶部11に記憶された暗号データからデータSを復号するには、データSから現時点の暗号データを生成するまでに用いた乱数すべてを取得し、該乱数すべてと、現時点の暗号データとの排他的論理和(XOR)を計算する(ステップS80,S90)。例えば、現時点において記憶部11に暗号データAが記憶されている場合には、用いた乱数はF(α)だけであるから、
A*F(α)=(S*F(α))*F(α)
=S*(F(α)*F(α))
=S*0
=S
となり、データSを得ることができる。
また、現時点において記憶部11に暗号データBが記憶されている場合には、用いた乱数はF(α)及びG(β)であるから、
B*F(α)*G(β)=(A*G(β))*F(α)*G(β)
=(S*F(α)*G(β))*F(α)*G(β)
=S*(F(α)*F(α))*(G(β))*G(β))
=S*0*0
=S
となり、データSを得ることができる。
また、現時点において記憶部11に暗号データCが記憶されている場合には、用いた乱数はF(α)、G(β)及びH(γ)であるから、
C*F(α)*G(β)*H(γ)=B*H(γ)*F(α)*G(β)*H(γ)
=(B*H(γ))*F(α)*G(β)*H(γ)
=(S*F(α)*G(β)*H(γ))*F(α)*G(β)*H(γ)
=S*(F(α)*F(α))*((G(β)*G(β))*(H(γ)*H(γ))
=S*0*0*0
=S
となり、データSを得ることができる。
従って、本実施の形態に係るデータ秘匿装置1によれば、ブロック暗号を構成要素に持つ擬似乱数生成関数により生成された乱数を用いて、バーナム暗号により暗号化されたデータを、所定の時期にさらに、より計算量の大きい擬似乱数生成関数により生成された乱数を用いて、バーナム暗号によりさらに暗号化するので、長期間にわたってデータを秘匿し続けることができる。
尚、第1の実施の形態の変形として、データ暗号部13及びデータ復号部14の代わりに、以下に示すような暗号計算を行うデータ暗号部13’及びデータ復号部14’を備えたデータ秘匿装置1’(図示せず)を用いて本発明を実施してもよい。
データ暗号部13’は、今回生成した乱数及び前回生成した乱数の双方を用いて計算するもので、例えば、上述した暗号データB及び暗号データCは、それぞれ
B=A*G(β)*F(α)、C=B*H(γ)*G(β)と表される。
B=A*G(β)*F(α)
=(S*F(α))*G(β)*F(α)
=S*(F(α)* *F(α))*G(β)
=S*0*G(β)
=S*G(β)
C=B*H(γ)*G(β)
=(S*G(β))*H(γ)*G(β)
=S*(G(β)*G(β))*H(γ)
=S*H(γ)
従って、この方法では、脆弱化した擬似乱数アルゴリズムによる乱数成分を除くことができる。
また、データ復号部14’は、今回生成した乱数だけを用いて排他的論理和(XOR)の計算をして、データを復号するもので、例えば、暗号データB及び暗号データCからデータSに復号するには、それぞれ、B*G(β)、C*H(γ)により求められる。
B*G(β)=(S*G(β))*G(β)
=S*(G(β))*G(β))
=S*0
=S
C*H(γ)=(S*H(γ))*H(γ)
=S*(H(γ)*H(γ))
=S*0
=S
<第2の実施の形態>
(1.システム構成)
図3は、本発明の第2の実施の形態に係るデータ秘匿装置2の概略構成を示すブロック図である。図3に示すように、データ秘匿装置2は、通信ネットワーク4を介してハードウェア的に互いに独立した複数(本実施の形態では2とする)のデータ保管用サーバコンピュータ(以下、単に保管サーバとよぶ)3a,3bと接続されており、後述する独自の秘密分散アルゴリズムによる秘密分散法(以下、秘密分散法Aとよぶ)を用いて秘匿したいデータSを複数のデータに分割し、該分割データを保管サーバ3a,3bおよびデータ秘匿装置2に、保管するようになっている(本実施の形態では、秘匿したいデータSを3つの分割データD(1),D(2) ,D(3)に分割し、それぞれを保管サーバ3a,3bおよびデータ秘匿装置2に保管する)。尚、後述する秘密分散法Aは、バーナム暗号によりデータを秘匿するのではないが、ブロック暗号を用いた擬似乱数生成アルゴリズムにより生成された乱数列と、秘匿したいデータとの排他的論理和を計算してデータを暗号化をする暗号化方式であり、かつ、データを分割して秘匿するので、第1の実施の形態よりも、よりセキュアな方法である。
尚、本実施の形態においては、データSを3分割して保管する場合を例に説明するが、本発明はデータSを3分割する場合に限定されるわけではなく、n分割(n=2以上の整数)の場合にも適用されるものである。また、本実施の形態においては、分割データD(1),D(2)を保管サーバ3、分割データD(3)をデータ秘匿装置2に割り当てたが、どの分割データをどの装置に割り当ててもよいものである。さらには、データ分散という観点から、分割データを物理的に異なる装置に割り当てるようにしたが、分割されたデータそれぞれをデータ秘匿装置2に保管するようにしてもよいものである。
詳しくは、記憶部21は、秘匿したいデータS、データSから秘密分散法Aにより生成される分割データの一つである分割データD(3)、秘密分散法Aに用いられるシードJ(J=α,β,γ,…)などを記憶するものである。
乱数生成部22は、ブロック暗号を構成要素に持つ擬似乱数アルゴリズムK(K=F,G,H,…)を用いてシードJから乱数を生成するようになっている。尚、擬似乱数アルゴリズムKを用いてシードJから生成された乱数をK(J)と表す。
分割データ生成部23は、データS及び乱数K(J)から秘密分散法Aを用いて複数の分割データD(1),D(2),D(3)を生成するようになっている。
再分割データ生成部24は、既にデータSが分割されて、分割データD(1),D(2),D(3)が保持されているときは、さらに、この分割データD(1),D(2),D(3)及び乱数K(J)から秘密分散法Aを用いて複数の再分割データD’(1),D’(2),D’(3)を生成するようになっている。
元データ復元部25は、複数の分割データD(1), D(2), D(3)(再分割データD’(1),D’(2),D’(3))から秘密分散法Aを用いてデータSを復元するようになっている。
データ通信部26は、保管サーバ3a及び3bとそれぞれ分割データの送受信を行うようになっている。
ここで、上述したデータ秘匿装置2、保管サーバ3a,3bは、それぞれ少なくとも演算機能および制御機能を備えた中央演算装置(CPU)、プログラムやデータを格納する機能を有するRAM等からなる主記憶装置(メモリ)を有する電子的な装置から構成されているものである。また、上記装置は、主記憶装置の他、ハードディスクなどの補助記憶装置を具備していてもよい。
このうち、データ秘匿装置2の乱数生成部22、分割データ生成部23、再分割データ生成部24、元データ復元部25、及び通信部26は、上記CPUによる演算制御機能を具体的に示したものに他ならない。また、記憶部21は、上記主記憶装置及び補助記憶装置の機能を備えたものである。
また、本実施の形態に係る各種処理を実行するプログラムは、前述した主記憶装置またはハードディスクに格納されているものである。そして、このプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD−ROMなどのコンピュータ読み取り可能な記録媒体に記録することも、通信ネットワークを介して配信することも可能である。
(2.秘密分散法A)
ここで、本実施の形態における独自の秘密分散アルゴリズムによる秘密分散法Aについて説明する。
本実施形態における元データ(データSに相当する)の分割および復元では、元データを所望の処理単位ビット長に基づいて所望の分割数の分割データに分割するが、この場合の処理単位ビット長は任意の値に設定することができ、元データを処理単位ビット長毎に区分けして、この元部分データから分割部分データを分割数より1少ない数ずつ生成するので、元データのビット長が処理単位ビット長の(分割数-1)倍の整数倍に一致しない場合は、元データの末尾の部分に0を埋めるなどして元データのビット長を処理単位ビット長の(分割数-1)倍の整数倍に合わせることにより本実施形態を適用することができる。
また、上述した乱数も(分割数-1)個の元部分データの各々に対応して処理単位ビット長のビット長を有する(分割数-1)個の乱数部分データとして乱数生成部22から生成される。すなわち、乱数は処理単位ビット長毎に区分けされて、処理単位ビット長のビット長を有する(分割数-1)個の乱数部分データとして生成される。更に、元データは処理単位ビット長に基づいて所望の分割数の分割データに分割されるが、この分割データの各々も(分割数-1)個の元部分データの各々に対応して処理単位ビット長のビット長を有する(分割数-1)個の分割部分データとして生成される。すなわち、分割データの各々は、処理単位ビット長毎に区分けされて、処理単位ビット長のビット長を有する(分割数-1)個の分割部分データとして生成される。
なお、以下の説明では、上述した元データ、乱数、分割データ、分割数および処理単位ビット長をそれぞれS,R,D,nおよびbで表すとともに、また複数のデータや乱数などのうちの1つを表わす変数としてi(=1〜n)およびj(=1〜n-1)を用い、(分割数n-1)個の元部分データ、(分割数n-1)個の乱数部分データ、および分割数n個の分割データDのそれぞれのうちの1つをそれぞれS (j),R(j)およびD(i)で表記し、更に各分割データD(i)を構成する複数(n-1)の分割部分データをD(i,j)で表記するものとする。すなわち、S (j)は、元データSの先頭から処理単位ビット長毎に区分けして1番から順に採番した時のj番目の元部分データを表すものである。
この表記を用いると、元データ、乱数データ、分割データとこれらをそれぞれ構成する元部分データ、乱数部分データ、分割部分データは、次のように表記される。
元データS=(n-1)個の元部分データS(j)
=S(1),S(2),…,S(n-1)
乱数R=(n-1)個の乱数部分データR(j)
=R(1),R(2),…,R(n-1)
n個の分割データD(i)=D(1),D(2),…,D(n)
各分割部分データD(i,j)
=D(1,1),D(1,2),…,D(1,n-1)
D(2,1),D(2,2),…,D(2,n-1)
… … …
D(n,1),D(n,2),…,D(n,n-1)
(i=1〜n), (j=1〜n-1)
本実施形態は、上述したように処理単位ビット長毎に区分けされる複数の部分データに対して元部分データと乱数部分データの排他的論理和演算(XOR)を行って、詳しくは、元部分データと乱数部分データの排他的論理和演算(XOR)からなる定義式を用いて、元データの分割を行うことを特徴とするものであり、上述したデータ分割処理に多項式や剰余演算を用いる方法に比較して、コンピュータ処理に適したビット演算である排他的論理和(XOR)演算を用いることにより高速かつ高性能な演算処理能力を必要とせず、大容量のデータに対しても簡単な演算処理を繰り返して分割データを生成することができるとともに、また分割データの保管に必要となる記憶容量も分割数に比例した倍数の容量よりも小さくすることができる。更に、任意に定めた一定の長さ毎にデータの先頭から順に演算処理を行うストリーム処理により分割データが生成される。
次に、フローチャートなどの図面も参照して、本実施の形態における秘密分散法Aの作用について説明するが、この説明の前に図4乃至8、図10および図12に示す記号の定義について説明する。
(1)Πi=1 nA(i)は、A(1)*A(2)*…A(n)を意味するものとする。
(2)c(j,i,k)を(n-1)×(n-1)行列であるU[n-1,n-1]×(P[n-1,n-1])^(j-1)のi行k列の値と定義する。
このときQ(j,i,k)を下記のように定義する。
c(j,i,k)=1 のとき Q(j,i,k)=R((n-1)×m+k)
c(j,i,k)=0 のとき Q(j,i,k)=0
ただし、mはm≧0の整数を表す。
(3)U[n,n]とは、n×n行列であって、i行j列の値をu(i,j)で表すと、
i+j<=n+1 のとき u(i,j)=1
i+j>n+1 のとき u(i,j)=0
である行列を意味するものとし、「上三角行列」ということとする。具体的には下記のような行列である。
Figure 0004619045
(4)P[n,n]とは、n×n行列であって、i行j列の値をp(i,j)で表すと、
j=i+1 のとき p(i,j)=1
i=n,j=1 のとき p(i,j)=1
上記以外のとき p(i,j)=0
である行列を意味するものとし、「回転行列」ということとする。具体的には下記のような行列であり、他の行列の右側からかけると当該他の行列の1列目を2列目へ、2列目を3列目へ、…,n-1列目をn列目へ、n列目を1列目へ移動させる作用がある。つまり、行列Pを他の行列に右側から複数回かけると、その回数分だけ各列を右方向へ回転させるように移動させることができる。
Figure 0004619045
(5)A,Bをn×n行列とすると、A×Bとは行列AとBの積を意味するものとする。行列の成分同士の計算規則は通常の数学で用いるものと同じである。
(6)Aをn×n行列とし、iを整数とすると、A^iとは行列Aのi個の積を意味するものとする。また、A^0とは単位行列Eを意味するものとする。
(7)単位行列E[n,n]とは、n×n行列であって、i行j列の値をe(i,j)で表すと、
i=j のとき e(i,j)=1
上記以外のとき e(i,j)=0
である行列を意味するものとする。具体的には下記のような行列である。Aを任意のn×n行列とすると
A×E=E×A=A
となる性質がある。
Figure 0004619045
次に、図4に示すフローチャートおよび図5および図6に示す具体的データなどを参照して、まず元データSの分割処理について説明する。これは、データ秘匿装置2の分割データ生成部23の機能を説明するものである。
まず、元データSをデータ秘匿装置2に与える(図4のステップS201)。なお、本例では、元データSは、16ビットの「10110010 00110111」とする。
次に、データ秘匿装置2は、分割数nとして3と指示する(ステップS203)。なお、この分割数n=3に従ってデータ秘匿装置2で生成される3個の分割データをD(1),D(2),D(3)とする。この分割データD(1),D(2),D(3)は、すべて元データのビット長と同じ16ビット長のデータである。
それから、元データSを分割するために使用される処理単位ビット長bを8ビットと決定する(ステップS205)。この処理単位ビット長bは、利用者がデータ秘匿装置2に対して指定してもよいし、またはデータ秘匿装置2において予め定められた値を用いてもよい。なお、処理単位ビット長bは、任意のビット数でよいが、ここでは元データSを割り切れることができる8ビットとしている。従って、上記16ビットの「10110010 00110111」の元データSは、8ビットの処理単位ビット長で区分けされた場合の2個の元分割データS(1)およびS(2)は、それぞれ「10110010」および「00110111」となる。
次のステップS207では、元データSのビット長が8×2の整数倍であるか否かを判定し、整数倍でない場合には、元データSの末尾を0で埋めて、8×2の整数倍に合わせる。なお、本例のように処理単位ビット長bが8ビットおよび分割数nが3に設定された場合における分割処理は、元データSのビット長として16ビットに限られるものでなく、処理単位ビット長b×(分割数n-1)=8×2の整数倍の元データSに対して有効なものである。
次に、ステップS209では、変数m、すなわち上述した整数倍を意味する変数mを0に設定する。本例のように、元データSが処理単位ビット長b×(分割数n-1)=8×2=16ビットである場合には、変数mは0であるが、2倍の32ビットの場合には、変数mは1となり、3倍の48ビットの場合には、変数mは2となる。
次に、元データSの8×2×m+1ビット目から8×2ビット分のデータが存在するか否かが判定される(ステップS211)。これは、このステップS211以降に示す分割処理を元データSの変数mで特定される処理単位ビット長b×(分割数n-1)=8×2=16ビットに対して行った後、元データSとして次の16ビットがあるか否かを判定しているものである。本例のように元データSが16ビットである場合には、16ビットの元データSに対してステップS211以降の分割処理を1回行うと、後述するステップS219で変数mが+1されるが、本例の元データSでは変数mがm+1の場合に相当する17ビット以降のデータは存在しないので、ステップS211からステップS221に進むことになるが、今の場合は、変数mは0であるので、元データSの8×2×m+1ビット目は、8×2×0+1=1となり、元データSの16ビットの1ビット目から8×2ビット分にデータが存在するため、ステップS213に進む。
ステップS213では、変数jを1から2(=分割数n-1)まで変えて、元データSの8×(2×m+j-1)+1ビット目から8ビット分(=処理単位ビット長)のデータを元部分データS(2×m+j)に設定し、これにより元データSを処理単位ビット長で区分けした2(分割数n-1)個の元部分データS(1),S(2)を次のように生成する。
元データS=S(1),S(2)
第1の元部分データS(1)=「10110010」
第2の元部分データS(2)=「00110111」
次に、変数jを1から2(=分割数n-1)まで変えて、乱数部分データR(2×m+j)に乱数生成部22から発生する8ビットの長さの乱数を設定し、これにより乱数Rを処理単位ビット長で区分けした2(分割数n-1)個の乱数部分データR(1),R(2)を次のように生成する(ステップS215)。
乱数R=R(1),R(2)
第1の乱数部分データR(1)=「10110001」
第2の乱数部分データR(2)=「00110101」
次に、ステップS217において、変数iを1から3(=分割数n)まで変えるとともに、更に各変数iにおいて変数jを1から2(=分割数n-1)まで変えながら、ステップS217に示す分割データを生成するための元部分データと乱数部分データの排他的論理和からなる定義式により複数の分割データD(i)の各々を構成する各分割部分データD(i,2×m+j)を生成する。この結果、次に示すような分割データDが生成される。
分割データD
=3個の分割データD(i)=D(1),D(2),D(3)
第1の分割データD(1)
=2個の分割部分データD(1,j)=D(1,1),D(1,2)
=「00110110」,「10110011」
第2の分割データD(2)
=2個の分割部分データD(2,j)=D(2,1),D(2,2)
=「00000011」,「00000010」
第3の分割データD(3)
=2個の分割部分データD(3,j)=D(3,1),D(3,2)
=「10110001」,「00110101」
なお、各分割部分データ(i,j)を生成するためのステップS217に示す定義式は、本例のように分割数n=3の場合には、具体的には図6に示す表に記載されているものとなる。図6に示す表から、分割部分データD(1,1)を生成するための定義式はS(1)*R(1)*R(2)であり、D(1,2)の定義式はS(2)*R(1)*R(2)であり、D(2,1)の定義式はS(1)*R(1)であり、D(2,2)の定義式はS(2)*R(2)であり、D(3,1)の定義式はR(1)であり、D(3,2)の定義式はR(2)である。また、図6に示す表にはm>0の場合の任意の整数についての一般的な定義式も記載されている。
このように整数倍を意味する変数m=0の場合について分割データDを生成した後、次に変数mを1増やし(ステップS219)、ステップS211に戻り、変数m+1に該当する元データSの17ビット以降について同様の分割処理を行おうとするが、本例の元データSは16ビットであり、17ビット以降のデータは存在しないので、ステップS211からステップS221に進み、上述したように生成した分割データD(1),D(2),D(3)を保管サーバ3及びデータ秘匿装置2にそれぞれ保存して、分割処理を終了する。なお、このように保管された分割データD(1),D(2),D(3)はそれぞれ単独では元データが推測できない。
ここで、上述した図4のフローチャートのステップS217における定義式による分割データの生成処理、具体的には分割数n=3の場合の分割データの生成処理について詳しく説明する。
まず、整数倍を意味する変数m=0の場合には、ステップS217に示す定義式から各分割データD(i)=D(1)〜D(3)の各々を構成する各分割部分データD(i,2×m+j)=D(i,j)(i=1〜3,j=1〜2)は、次のようになる。
D(1,1)=S(1)*Q(1,1,1)*Q(1,1,2)
D(1,2)=S(2)*Q(2,1,1)*Q(2,1,2)
D(2,1)=S(1)*Q(1,2,1)*Q(1,2,2)
D(2,2)=S(2)*Q(2,2,1)*Q(2,2,2)
D(3,1)=R(1)
D(3,2)=R(2)
上記の6つの式のうち上から4つの式に含まれるQ(j,i,k)を具体的に求める。
これはc(j,i,k)を2×2行列であるU[2,2]×(P[2,2])^(j-1)のi行k列の値としたとき下記のように定義される。
c(j,i,k)=1 のとき Q(j,i,k)=R(k)
c(j,i,k)=0 のとき Q(j,i,k)=0
ここで、
j=1のときは
Figure 0004619045
j=2のときは
Figure 0004619045
これを用いると、各分割部分データD(i,j)は次のような定義式により生成される。
D(1,1)=S(1)*Q(1,1,1)*Q(1,1,2)=S(1)*R(1)*R(2)
D(1,2)=S(2)*Q(2,1,1)*Q(2,1,2)=S(2)*R(1)*R(2)
D(2,1)=S(1)*Q(1,2,1)*Q(1,2,2)=S(1)*R(1)*0=S(1)*R(1)
D(2,2)=S(2)*Q(2,2,1)*Q(2,2,2)=S(2)*0*R(2)=S(2)*R(2)
上述した各分割部分データD(i,j)を生成するための定義式は、図5にも図示されている。
図5は、上述したように16ビットの元データSを8ビットの処理単位ビット長に基づいて分割数n=3で3分割する場合の各データと定義式および各分割部分データから元データを復元する場合の計算式などを示す表である。
ここで、上述した定義式により分割データD(1),D(2),D(3)および各分割部分データD(1,1),D(1,2),D(2,1),D(2,2),D(3,1),D(3,2)を生成する過程と定義式の一般形について説明する。
まず、第1の分割データD(1)に対しては、第1の分割部分データD(1,1)は、上述した定義式S(1)*R(1)*R(2)で定義され、第2の分割部分データD(1,2)は定義式S(2)*R(1)*R(2)で定義される。なお、この定義式の一般形は、D(1,j)に対してはS(j)*R(j)*R(j+1)であり、D(1,j+1)に対してS(j+1)*R(j)*R(j+1)である(jは奇数とする)。定義式に従って計算すると、D(1,1)は00110110, D(1,2)は10110011となるので、D(1)は00110110 10110011である。なお、定義式の一般形は、図6にまとめて示されている。
また、第2の分割データD(2)に対しては、D(2,1)はS(1)*R(1)で定義され、D(2,2)はS(2)*R(2)で定義される。この定義式の一般形は、D(2,j)に対してはS(j)*R(j)であり、D(2,j+1)に対してはS(j+1)*R(j+1)である(jは奇数とする)。定義式に従って計算すると、D(2,1)は00000011, D(2,2)は00000010となるので、D(2)は00000011 00000010である。
更に第3の分割データD(3)に対しては、D(3,1)はR(1)で定義され、D(3,2)はR(2)で定義される。この定義式の一般形は、D(3,j)に対してはR(j)であり、D(3,j+1)に対してはR(j+1)である(jは奇数とする)。定義式に従って計算すると、D(3,1)は10110001, D(3,2)は00110101となるので、D(3)は10110001 00110101である。
上記説明は、S,R,D(1),D(2),D(3)の長さを16ビットとしたが、データの先頭から上記分割処理を繰り返すことにより、どのような長さの元データSからでも分割データD(1),D(2),D(3)を生成することができる。また、処理単位ビット長bは任意にとることができ、元データSの先頭から順にb×2の長さ毎に上記分割処理を繰り返すことにより任意の長さの元データ、具体的には処理単位ビット長b×2の整数倍の長さの元データに対して適用することができる。なお、元データSの長さが処理単位ビット長b×2の整数倍でない場合は、例えば、データ末尾の部分を0で埋めるなどして元データSの長さを処理単位ビット長b×2の整数倍に合わせることにより上述した本実施形態の分割処理を適用することができる。
次に、図5の右側に示す表を参照して、分割データから元データを復元する処理について説明する。これは、データ秘匿装置2の元データ復元部25の機能を説明するものである。
まず、データ秘匿装置2に元データSの復元を要求する。データ秘匿装置2は、自己および保管サーバ3から分割データD(1),D(2),D(3)を取得し、この取得した分割データD(1),D(2),D(3)から次に示すように元データSを復元する。
まず、分割部分データD(2,1),D(3,1)から第1の元部分データS(1)を次のように生成することができる。
D(2,1)*D(3,1)=(S(1)*R(1))*R(1)
=S(1)*(R(1)*R(1))
=S(1)*0
=S(1)
具体的に計算すると、D(2,1)は00000011, D(3,1)は10110001なので、S(1)は10110010となる。
また、別の分割部分データから次のように第2の元部分データS(2)を生成することができる。
D(2,2)*D(3,2)=(S(2)*R(2))*R(2)
=S(2)*(R(2)*R(2))
=S(2)*0
=S(2)
具体的に計算すると、D(2,2)は00000010, D(3,2)は00110101なので、S(2)は00110111となる。
一般に、jを奇数として、
D(2,j)*D(3,j)=(S(j)*R(j))*R(j)
=S(j)*(R(j)*R(j))
=S(j)*0
=S(j)
であるから、D(2,j)*D(3,j)を計算すれば、S(j)が求まる。
また、一般に、jを奇数として、
D(2,j+1)*D(3,j+1)=(S(j+1)*R(j+1))*R(j+1)
=S(j+1)*(R(j+1)*R(j+1))
=S(j+1)*0
=S(j+1)
であるから、D(2,j+1)*D(3,j+1)を計算すれば、S(j+1)が求まる。
次に、D(1),D(3)を取得してSを復元する場合には、次のようになる。
D(1,1)*D(3,1)*D(3,2)=(S(1)*R(1)*R(2))*R(1)*R(2) =S(1)*(R(1)*R(1))*(R(2)*R(2))
=S(1)*0*0
=S(1)
であるから、D(1,1)*D(3,1)*D(3,2)を計算すれば、S(1)が求まる。具体的に計算すると、D(1,1)は00110110, D(3,1)は10110001, D(3,2)は00110101なので、S(1)は10110010となる。
また同様に、
D(1,2)*D(3,1)*D(3,2)=(S(2)*R(1)*R(2))*R(1)*R(2)
=S(2)*(R(1)*R(1))*(R(2)*R(2))
=S(2)*0*0
=S(2)
であるから、D(1,2)*D(3,1)*D(3,2)を計算すれば、S(2)が求まる。具体的に計算すると、D(1,2)は10110011, D(3,1)は10110001, D(3,2)は00110101なので、S(2)は00110111となる。
一般に、jを奇数として、
D(1,j)*D(3,j)*D(3,j+1)=(S(j)*R(j)*R(j+1))*R(j)*R(j+1)
=S(j)*(R(j)*R(j))*(R(j+1)*R(j+1))
=S(j)*0*0
=S(j)
であるから、D(1,j)*D(3,j)*D(3,j+1)を計算すれば、S(j)が求まる。
また、一般に、jを奇数として、
D(1,j+1)*D(3,j)*D(3,j+1)=(S(j+1)*R(j)*R(j+1))*R(j)*R(j+1)
=S(j+1)*(R(j)*R(j))*(R(j+1)*R(j+1))
=S(j+1)*0*0
=S(j+1)
であるから、D(1,j+1)*D(3,j)*D(3,j+1)を計算すれば、S(j+1)が求まる。
次に、D(1),D(2)を取得してSを復元する場合には、次のようになる。
D(1,1)*D(2,1)=(S(1)*R(1)*R(2))*(S(1)*R(1))
=(S(1)*S(1))*(R(1)*R(1))*R(2)
=0*0*R(2)
=R(2)
であるから、D(1,1)*D(2,1)を計算すれば、R(2)が求まる。具体的に計算すると、D(1,1)は00110110, D(2,1)は00000011なので、R(2)は00110101となる。
また同様に、
D(1,2)*D(2,2)=(S(2)*R(1)*R(2))*(S(2)*R(2))
=(S(2)*S(2))*R(1)*(R(2)*R(2))
=0*R(1)*0
=R(1)
であるから、D(1,2)*D(2,2)を計算すれば、R(1)が求まる。具体的に計算すると、D(1,2)は10110011, D(2,2)は00000010なので、R(1)は10110001となる。
このR(1),R(2)を使用してS(1),S(2)を求める。
D(2,1)*R(1)=(S(1)*R(1))*R(1)
=S(1)*(R(1)*R(1))
=S(1)*0
=S(1)
であるから、D(2,1)*R(1)を計算すれば、S(1)が求まる。具体的に計算すると、D(2,1)は00000011, R(1)は10110001なので、S(1)は10110010となる。
また同様に、
D(2,2)*R(2)=(S(2)*R(2))*R(2)
=S(2)*(R(2)*R(2))
=S(2)*0
=S(2)
であるからD(2,2)*R(2)を計算すればS(2)が求まる。具体的に計算するとD(2,2)は00000010, R(2)は00110101なので、S(2)は00110111となる。
一般に、jを奇数として、
D(1,j)*D(2,j)=(S(j)*R(j)*R(j+1))*(S(j)*R(j))
=(S(j)*S(j))*(R(j)*R(j))*R(j+1)
=0*0*R(j+1)
=R(j+1)
であるからD(1,j)*D(2,j)を計算すればR(j+1)が求まる。
また同様に、
D(1,j+1)*D(2,j+1)=(S(j+1)*R(j)*R(j+1))*(S(j+1)*R(j+1))
=(S(j+1)*S(j+1))*R(j)*(R(j+1)*R(j+1))
=0*R(j)*0
=R(j)
であるからD(1,j+1)*D(2,j+1)を計算すればR(j)が求まる。
このR(j),R(j+1)を使用してS(j),S(j+1)を求める。
D(2,j)*R(j)=(S(j)*R(j))*R(j)
=S(j)*(R(j)*R(j))
=S(j)*0
=S(j)
であるからD(2,j)*R(j)を計算すればS(j)が求まる。
また同様に、
D(2,j+1)*R(j+1)=(S(j+1)*R(j+1))*R(j+1)
=S(j+1)*(R(j+1)*R(j+1))
=S(j+1)*0
=S(j+1)
であるからD(2,j+1)*R(j+1)を計算すればS(j+1)が求まる。
上述したように、元データの先頭から処理単位ビット長bに基づいて分割処理を繰り返し行って、分割データを生成した場合には、3つの分割データD(1),D(2),D(3)のすべてを用いなくても、3つの分割データのうち、2つの分割データを用いて上述したように元データを復元することができる。
尚、本実施の形態に係るデータ秘匿装置2においては、3つの分割データD(1),D(2),D(3)を生成するようになっていたので、分割数が3の場合について説明したが、秘密分散法Aは、分割数がnの場合にも適用できるものである。
次に、図7に示すフローチャートを参照して、分割数がnで、処理単位ビット長がbである場合の一般的な分割処理について説明する。
まず、元データSをデータ秘匿装置2に与える(ステップS401)。また、データ秘匿装置2に、分割数n(n≧3である任意の整数)を指示する(ステップS403)。処理単位ビット長bを決定する(ステップS405)。なお、bは0より大きい任意の整数である。次に、元データSのビット長がb×(n-1)の整数倍であるか否かを判定し、整数倍でない場合には、元データSの末尾を0で埋める(ステップS407)。また、整数倍を意味する変数mを0に設定する(ステップS409)。
次に、元データSのb×(n-1)×m+1ビット目からb×(n-1)ビット分のデータが存在するか否かが判定される(ステップS411)。この判定の結果、データが存在しない場合は、ステップS421に進むことになるが、今の場合は、ステップS409で変数mは0に設定された場合であるので、データが存在するため、ステップS413に進む。
ステップS413では、変数jを1からn-1まで変えて、元データSのb×((n-1)×m+j-1)+1ビット目からbビット分のデータを元部分データS((n-1)×m+j)に設定する処理を繰り返し、これにより元データSを処理単位ビット長bで区分けした(n-1)個の元部分データS(1),S(2),…S(n-1)が生成される。
次に、変数jを1からn-1まで変えて、乱数部分データR((n-1)×m+j)に乱数生成部22から発生する処理単位ビット長bの乱数を設定し、これにより乱数Rを処理単位ビット長bで区分けしたn-1個の乱数部分データR(1),R(2),…R(n-1)が生成される(ステップS415)。
次に、ステップS417において、変数iを1からnまで変えるとともに、更に各変数iにおいて変数jを1からn-1まで変えながら、ステップS417に示す分割データを生成するための定義式により複数の分割データD(i)の各々を構成する各分割部分データD(i,(n-1)×m+j)を生成する。この結果、次に示すような分割データDが生成される。
分割データD
=n個の分割データD(i)=D(1),D(2),…D(n)
第1の分割データD(1)
=n-1個の分割部分データD(1,j)=D(1,1),D(1,2),…D(1,n-1)
第2の分割データD(2)
=n-1個の分割部分データD(2,j)=D(2,1),D(2,2),…D(2,n-1)
… … …
… … …
第nの分割データD(n)
=n-1個の分割部分データD(n,j)=D(n,1),D(n,2),…D(n,n-1)
このように変数m=0の場合について分割データDを生成した後、次に変数mを1増やし(ステップS419)、ステップS411に戻り、変数m=1に該当する元データSのb×(n-1)ビット以降について同様の分割処理を行う。最後にステップS411の判定の結果、元データSにデータがなくなった場合、ステップS411からステップS421に進み、上述したように生成した分割データD(1), …,D(n)を保管サーバ3およびデータ秘匿装置2にそれぞれ保存して、分割処理を終了する。
さて、上述した実施形態においては、個々の分割データのみから、それを構成する部分データ間の演算を行うことによって乱数成分が失われる場合がある。即ち、例えば3分割の場合、各分割部分データは次のように定義される。
D(1,1)=S(1)*R(1)*R(2), D(1,2)=S(2)*R(1)*R(2), …
D(2,1)=S(1)*R(1), D(2,2)=S(2)*R(2), …
D(3,1)=R(1), D(3,2)=R(2), …
D(1)について見ると、例えば、D(1,1)、D(1,2)が取得できると、
D(1,1)*D(1,2)=(S(1)*R(1)*R(2))*(S(2)*R(1)*R(2))
=S(1)*S(2)*((R(1)*R(1))*((R(2)*R(2))
=S(1)*S(2)*0*0
=S(1)*S(2)
となる。一般にはD(1,j)*D(1,j+1)=S(j)*S(j+1)である。ここでjはj=2×m+1、mはm≧0の任意の整数である。
D(1,1)、D(1,2)は、上記の定義より、元データと乱数の演算により生成されたものであり、D(1,1)、D(1,2)それぞれを見ても元データの内容は分からないが、D(1,1)*D(1,2)の演算を行うことによりS(1)*S(2)が算出される。これは元データそのものではないが、乱数成分を含んでいない。
このように乱数成分が失われると、個々の元部分データについて、例えばS(2)の一部が既知である場合にはS(1)の一部が復元可能となるので、安全ではないと考えられる。例えば、元データが標準化されたデータフォーマットに従ったデータであって、S(2)がそのデータフォーマット中のヘッダ情報やパディング(例えば、データ領域の一部を0で埋めたもの)などを含む部分であった場合には、これらのデータフォーマット固有のキーワードや固定文字列などを含むため、その内容は予測され得る。また、S(2)のうち既知の部分とS(1)*S(2)の値から、S(1)の一部が復元可能である。
この問題を解決する方法は以下の通りである。図8におけるD(1,j+1)とD(2,j+1)は、図6におけるD(1,j+1)とD(2,j+1)を入れ替えたものである。ここでjはj=2×m+1、mはm≧0の任意の整数である。
この場合、個々の分割データのみでは、それを構成する分割部分データ間で演算を行っても乱数成分が失われない。これは、図8より
D(1,j)*D(1,j+1)=(S(j)*R(j)*R(j+1))*(S(j+1)*R(j+1))
=S(j)*S(j+1)*R(j)*((R(j+1)*R(j+1))
=S(j)*S(j+1)*R(j)*0
=S(j)*S(j+1)*R(j)
D(2,j)*D(2,j+1)=(S(j)*R(j))*(S(j+1)*R(j)*R(j+1))
=S(j)*S(j+1)*(R(j)*R(j))*R(j+1))
=S(j)*S(j+1)*0*R(j+1)
=S(j)*S(j+1)*R(j+1)
D(3,j)*D(3,j+1)=R(j)*R(j+1)
となるからである。
また、この場合、3つの分割データのうち2つから、元データを復元することができるという特性は失われていない。これは、D(1)、D(2)を取得してSを復元する場合には、図8におけるD(1)、D(2)は、図6におけるD(1)、D(2)を構成する分割部分データを入れ替えたものにすぎないので、明らかにこれらから元データを復元することができ、また、D(1)とD(3)またはD(2)とD(3)を取得してSを復元する場合には、D(3)は乱数のみからなる分割データであるので、D(1)またはD(2)の分割部分データ毎に必要な個数の乱数との排他的論理和演算を行うことにより、乱数部分を消去して元データを復元することができるからである。
次に、一旦分割された分割データにさらに乱数を与えて新たな分割データ(再分割データ)を生成する再分割処理について説明する。データ秘匿装置2の再分割データ生成部24の機能を説明するものであるが、これに関しても、分割数が3の場合を例に説明する。尚、本実施の形態における再分割処理は、2つの方法があるので、以下、それぞれについて説明する。
(2−1.乱数追加注入方式)
図9は、乱数追加注入方式におけるデータ再分割処理の概要を説明するフローチャート図である。同図によれば、まず分割データD(1),D(2),D(3)を取得し(ステップS501)、次に、乱数生成部22で再分割の際に用いる乱数R’を生成する(ステップS503)。
次に、分割データD(1),D(2),D(3)それぞれに乱数R’を所定のルールで注入する(ステップS505)。これは、後述するようなルールにより分割データD(1),D(2),D(3)の分割部分データと乱数R’の乱数部分データの排他的論理和をとり、新たな分割データD’(1),D’(2),D’(3)を生成するものである(ステップS507)。
図10は、元データSを、元データの半分の長さの処理単位ビット長bに基づいて分割数n=3で3分割する場合の分割部分データの定義式、乱数の再注入後の分割部分データの定義式、および各分割部分データから元データを復元する場合の計算式などを示す表である。
ここで、分割部分データD(i,j)の定義式について説明する。
まず、第1の分割データD(1)に対しては、図8に示すように、第1の分割部分データD(1,1)は、定義式S(1)*R(1)*R(2)で定義され、第2の分割部分データD(1,2)は定義式S(2)*R(2)で定義される。なお、この定義式の一般形は、D(1,j)に対してはS(j)*R(j)*R(j+1)であり、D(1,j+1)に対してS(j+1)*R(j+1)である(jは奇数とする)。
また、第2の分割データD(2)に対しては、図8に示すように、D(2,1)はS(1)*R(1)で定義され、D(2,2)はS(2)*R(1)*R(2)で定義される。この定義式の一般形は、D(2,j)に対してはS(j)*R(j)であり、D(2,j+1)に対してはS(j+1)*R(j)*R(j+1)である(jは奇数とする)。
更に第3の分割データD(3)に対しては、図8に示すように、D(3,1)はR(1)で定義され、D(3,2)はR(2)で定義される。この定義式の一般形は、D(3,j)に対してはR(j)であり、D(3,j+1)に対してはR(j+1)である(jは奇数とする)。
次に、新たな乱数R’注入後の分割部分データD’(i,j)の定義式について説明する。
まず、第1の分割データD’(1)に対しては、図10に示すように、第1の分割部分データD’(1,1)は、定義式D(1,1)* R’(1)*R’(2)、即ち、S(1)*R(1)*R(2)*R’(1)*R’(2)で定義され、第2の分割部分データD’(1,2)は、定義式D(1,2)*R’(2)、即ち、S(2)*R(2)* R’(2)で定義される。なお、この定義式の一般形は、D’(1,j)に対してはD(1,j)*R’(j)*R’(j+1)であり、D’(1,j+1)に対してD(1,j+1)*R’(j+1)である(jは奇数とする)。
また、第2の分割データD’(2)に対しては、図10に示すように、D’(2,1)はD(2,1)* R’(1)、即ち、S(1)*R(1)* R’(1)で定義され、D’(2,2)はD (2,2)*R’(1)*R’(2)、即ち、S(2)*R(1)* R(2)*R’(1)*R’(2)で定義される。この定義式の一般形は、D’(2,j)に対してはD(2,j)* R’(j)であり、D’(2,j+1)に対してはD(2,j+1)* R’(j)*R’(j+1)である(jは奇数とする)。
また、第3の分割データD’(3)に対しては、図10に示すように、D’(3,1)はD(3,1)* R’(1)、即ち、R(1)* R’(1)で定義され、D’(3,2)はD (3,2)*R’(2)、即ち、R(2)* R’(2)で定義される。この定義式の一般形は、D’(3,j)に対してはD(3,j)* R’(j)*であり、D’(3,j+1)に対してはD (3,j+1)* R’(j+1)である(jは奇数とする)。
このように、再分割部分データD’(i,j)はそれぞれ、分割部分データD (i,j)に、分割部分データD (i,j)の定義式で注入されていた乱数部分データR(j)に対応する乱数部分データR’(j)を注入して排他的論理和を計算して求めるものである。
次に、図10の右側に示す表を参照して、再分割データから元データを復元する処理について説明する。これは、データ秘匿装置2の元データ復元部25の機能を説明するものである。
まず、分割部分データD’(2,1),D’(3,1)から第1の元部分データS(1)を次のように生成することができる。
D’(2,1)*D’(3,1)=(S(1)*R(1)*R’(1))*(R(1)*R’(1))
=S(1)*(R(1)*R(1))* (R’(1)* R’(1))
=S(1)*0*0
=S(1)
また、別の分割部分データから次のように第2の元部分データS(2)を生成することができる。
D’(2,2)*D’(3,1)*D’(3,2)=(S(2)*R(1)*R(2)*R’(1)*R’(2))*
(R(1)* R’(1))* (R(2)* R’(2))
=S(2)*(R(1)*R(1))*(R(2)*R(2))*
(R’(1)* R’(1))* (R’(2)* R’(2))
=S(2)*0*0*0*0
=S(2)
一般に、jを奇数として、
D’(2,j)*D’(3,j)=(S(j)*R(j)*R’(j))*(R(j)* R’(j))
=S(j)*(R(j)*R(j))*(R’(j)*R’(j))
=S(j)*0*0
=S(j)
であるから、D’(2,j)*D’(3,j)を計算すれば、S(j)が求まる。
また、一般に、jを奇数として、
D’(2,j+1)* D’(3,j)*D’(3,j+1)=(S(j+1)*R(j)*R(j+1)*R’(j)*R’(j+1))*
(R(j)* R’(j))*(R(j+1)* R’(j+1))
=S(j+1)*((R(j)*R(j))*(R(j+1)*R(j+1))*
*(R’(j)*R’(j))*(R’(j+1)*R’(j+1))
=S(j+1)*0*0*0*0
=S(j+1)
であるから、D’(2,j+1)* D’(3,j)*D’(3,j+1)を計算すれば、S(j+1)が求まる。
次に、D’(1),D’(3)を取得してSを復元する場合には、次のようになる。
D’(1,1)*D’(3,1)*D’(3,2)=(S(1)*R(1)*R(2)*R’(1)*R’(2))*
(R(1)* R’(1))* (R(2)* R’(2))
= S(1)*(R(1)*R(1))* (R(2)*R(2)) *
(R’(1)* R’(1))* (R’(2)* R’(2))
=S(1)*0*0*0*0
=S(1)
であるから、D’(1,1)*D’(3,1)*D’(3,2)を計算すれば、S(1)が求まる。
また同様に、
D’(1,2)* D’(3,2)=(S(2)*R(2)*R’(2))*(R(2)*R’(2))
=S(2)*(R(2)*R(2))*(R’(2)*R’(2))
=S(2)*0*0
=S(2)
であるから、D’(1,2)* D’(3,2)を計算すれば、S(2)が求まる。
一般に、jを奇数として、
D’(1,j)*D’(3,j)*D’(3,j+1)=(S(j)*R(j)*R(j+1)*R’(j)*R’(j+1))*
(R(j)*R’(j))*(R(j+1)*R’(j+1))
=S(j)*(R(j)*R(j))*(R(j+1)*R(j+1))*
(R’(j)*R’(j))* (R’(j+1)*R’(j+1))
=S(j)*0*0*0*0
=S(j)
であるから、D’(1,j)*D’(3,j)*D’(3,j+1)を計算すれば、S(j)が求まる。
また、一般に、jを奇数として、
D’(1,j+1)* D’(3,j+1)=(S(j+1)*R(j+1)*R’(j+1)) *(R(j+1)*R’(j+1))
=S(j+1)*(R(j+1)*R(j+1))*(R’(j+1)*R’(j+1))
=S(j+1)*0*0
=S(j+1)
であるから、D’(1,j+1)* D’(3,j+1)を計算すれば、S(j+1)が求まる。
次に、D’(1),D’(2)を取得してSを復元する場合には、次のようになる。
D’(1,1)*D’(2,1)=(S(1)*R(1)*R(2)*R’(1)*R’(2))*(S(1)*R(1)*R’(1))
=(S(1)*S(1))*(R(1)*R(1))*(R’(1)*R’(1))*R(2)* R’(2)
=0*0*0*R(2)*R’(2)
=R(2)*R’(2)
であるから、D’(1,1)*D’(2,1)を計算すれば、R(2)*R’(2)が求まる。
また同様に、
D’(1,2)*D’(2,2)=(S(2)*R(2)*R’(2))*(S(2)*R(1)*R(2)*R’(1)*R’(2))
=(S(2)*S(2))*R(1)*R’(1)*(R(2)*R(2))*(R’(2)*R’(2))
=0*R(1)*R’(1)*0*0
=R(1)*R’(1)
であるから、D’(1,2)*D’(2,2)を計算すれば、R(1)*R’(1)が求まる。
このR(1)*R’(1),R(2)*R’(2)を使用してS(1),S(2)を求める。
D’(2,1)* R(1)*R’(1)=(S(1)*R(1)*R’(1))* R(1)*R’(1)
=S(1)*(R(1)*R(1))* (R’(1)*R’(1))
=S(1)*0*0
=S(1)
であるから、D’(2,1)*R(1)*R’(1)を計算すれば、S(1)が求まる。
また同様に、
D’(1,2)*R(2)*R’(2)=(S(2)*R(2)*R’(2))* R(2)*R’(2)
=S(2)*(R(2)*R(2))* (R’(2)*R’(2))
=S(2)*0*0
=S(2)
であるからD’(2,2)*R(2)*R’(2)を計算すればS(2)が求まる。
一般に、jを奇数として、
D’(1,j)*D’(2,j)=(S(j)*R(j)*R(j+1)*R’(j)*R’(j+1))*(S(j)*R(j)*R’(j))
=(S(j)*S(j))*(R(j)*R(j))*(R’(j)*R’(j))*R(j+1) *R’(j+1)
=0*0*0*R(j+1)*R’(j+1)
= R(j+1)*R’(j+1)
であるからD’(1,j)*D’(2,j)を計算すればR(j+1)*R’(j+1)が求まる。
また同様に、
D’(1,j+1)*D’(2,j+1)=(S(j+1)* R(j+1)*R’(j+1))*
(S(j+1)*R(j)*R(j+1)* R’(j)*R’(j+1))
=(S(j+1)*S(j+1))*R(j)* R’(j)*
(R(j+1)*R(j+1))*(R’(j+1)* R’(j+1))
=0* R(j)* R’(j)*0*0
= R(j)* R’(j)
であるからD’(1,j+1)*D’(2,j+1)を計算すればR(j)* R’(j)が求まる。
このR(j)* R’(j),R(j+1)*R’(j+1)を使用してS(j),S(j+1)を求める。
D’(2,j)*R(j)* R’(j)=(S(j)*R(j)*R’(j))*R(j)*R’(j)
=S(j)*(R(j)*R(j))*(R’(j)*R’(j))
=S(j)*0*0
=S(j)
であるからD’(2,j)*R(j)* R’(j)を計算すればS(j)が求まる。
また同様に、
D’(1,j+1)*R(j+1)* R’(j+1)=(S(j+1)*R(j+1)*R’(j+1))*R(j+1)* R’(j+1)
=S(j+1)*(R(j+1)*R(j+1))* (R’(j+1)*R’(j+1))
=S(j+1)*0*0
=S(j+1)
であるからD’(1,j+1)*R(j+1)* R’(j+1)を計算すればS(j+1)が求まる。
以上、乱数追加注入方式により再分割データを生成した場合には、3つの再分割データD’(1),D’(2),D’(3)のすべてを用いなくても、3つの再分割データのうち、2つの再分割データを用いて上述したように元データを復元することができる。
また、乱数追加注入方式においては、一旦元データを復元することなく(元データが見える形で現れない)、データの再分割処理を行うことができるので、よりセキュアなデータ管理が可能となる。
(2−2.乱数書き換え方式)
図11は、乱数書き換え方式におけるデータ再分割処理の概要を説明するフローチャート図である。同図によれば、まず分割データD(1),D(2),D(3)を取得し(ステップS601)、次に、乱数生成部22で再分割の際に用いる乱数R’を生成する(ステップS603)。
次に、分割データD(1),D(2),D(3)それぞれに乱数R’を上述した乱数追加注入方式により注入する(ステップS605)。次に、乱数R’を注入された分割データから旧乱数であるRを消去して、新たな再分割データD’(1),D’(2),D’(3)を生成する(ステップS607,S609)。
図12は、元データSを、元データの半分の長さの処理単位ビット長bに基づいて分割数n=3で3分割する場合の分割部分データの定義式、乱数R’の再注入後の分割部分データの定義式、さらに乱数Rを消去後の分割部分データの定義式および各分割部分データから元データを復元する場合の計算式などを示す表である。
本方式においては、ステップS605までは、上述した乱数追加注入方式と同様であるため、説明は省略し、古い乱数Rを消去した分割部分データの定義式について説明する。
まず、第1の分割データD’(1)に対しては、図12に示すように、第1の分割部分データD’(1,1)は、定義式(S(1)*R(1)*R(2)*R’(1)*R’(2))*(R(1)*R(2))、即ち、S(1)* R’(1)*R’(2)で定義され、第2の分割部分データD’(1,2)は、定義式(S(2)*R(2)* R’(2))*R(2)、即ち、S(2)*R’(2)で定義される。なお、この定義式の一般形は、D’(1,j)に対してはS(j) *R’(j)*R’(j+1)であり、D’(1,j+1)に対してS(j+1)*R’(j+1)である(jは奇数とする)。
また、第2の分割データD’(2)に対しては、図12に示すように、D’(2,1)は(S(1)*R(1)* R’(1))* R(1)、即ち、S(1)* R’(1)で定義され、D’(2,2)は(S(2)*R(1)* R(2)*R’(1)*R’(2))*R(1)*R(2)、即ち、S(2)*R’(1)*R’(2)で定義される。この定義式の一般形は、D’(2,j)に対してはS(j)* R’(j)*であり、D(2,j+1)に対してはS(j+1)* R’(j)*R’(j+1)である(jは奇数とする)。
また、第3の分割データD’(3)に対しては、図12に示すように、D’(3,1)は(R(1)* R’(1))*R(1)、即ち、R’(1)で定義され、D’(3,2)は(R(2)* R’(2))* R(2)、即ち、R’(2)で定義される。この定義式の一般形は、D’(3,j)に対してはR’(j)*であり、D(3,j+1)に対してはR’(j+1)である(jは奇数とする)。
このように、再分割部分データD’(i,j)はそれぞれ、分割部分データD (i,j)に、分割部分データD (i,j)の定義式で注入されていた乱数部分データR(j)に対応する乱数部分データR’(j)を注入した後、さらに乱数部分データR(j)を消去するように乱数部分データR(j)を注入して排他的論理和を計算し、求めるものである。
その結果、もとの分割部分データD (i,j)の定義式において、乱数部分データR(j)を乱数部分データR’(j)に置換したものが、再分割部分データD ’(i,j)の定義式となる。
次に、図12の右側に示す表を参照して、再分割データから元データを復元する処理について説明する。これは、データ秘匿装置2の元データ復元部25の機能を説明するものである。
まず、分割部分データD’(2,1),D’(3,1)から第1の元部分データS(1)を次のように生成することができる。
D’(2,1)*D’(3,1)=(S(1)*R’(1))*R’(1)
=S(1)*(R’(1)*R’(1))
=S(1)*0
=S(1)
また、別の分割部分データから次のように第2の元部分データS(2)を生成することができる。
D’(2,2)*D’(3,1)*D’(3,2)=(S(2)*R’(1)*R’(2))*R’(1)* R’(2)
=S(2)* (R’(1)*R’(1))*(R’(2)* R’(2))
=S(2)*0*0
=S(2)
一般に、jを奇数として、
D’(2,j)*D’(3,j)=(S(j)*R’(j))* R’(j)
=S(j)*(R’(j)*R’(j))
=S(j)*0
=S(j)
であるから、D’(2,j)*D’(3,j)を計算すれば、S(j)が求まる。
また、一般に、jを奇数として、
D’(2,j+1)* D’(3,j)*D’(3,j+1)=(S(j+1)*R’(j)*R’(j+1))* R’(j)* R’(j+1)
=S(j+1)*(R’(j)*R’(j))*(R’(j+1)*R’(j+1))
=S(j+1)*0*0
=S(j+1)
であるから、D’(2,j+1)* D’(3,j)*D’(3,j+1)を計算すれば、S(j+1)が求まる。
次に、D’(1),D’(3)を取得してSを復元する場合には、次のようになる。
D’(1,1)*D’(3,1)*D’(3,2)=(S(1)*R’(1)*R’(2))* R’(1)*R’(2)
= S(1)*(R’(1)* R’(1))* (R’(2)* R’(2))
=S(1)*0*0
=S(1)
であるから、D’(1,1)*D’(3,1)*D’(3,2)を計算すれば、S(1)が求まる。
また同様に、
D’(1,2)* D’(3,2)=(S(2)*R’(2))*R’(2)
=S(2)*(R’(2)*R’(2))
=S(2)*0
=S(2)
であるから、D’(1,2)* D’(3,2)を計算すれば、S(2)が求まる。
一般に、jを奇数として、
D’(1,j)*D’(3,j)*D’(3,j+1)=(S(j)*R’(j)*R’(j+1))* R’(j)*R’(j+1)
=S(j)*(R’(j)*R’(j))*(R’(j+1)*R’(j+1))
=S(j)*0*0
=S(j)
であるから、D’(1,j)*D’(3,j)*D’(3,j+1)を計算すれば、S(j)が求まる。
また、一般に、jを奇数として、
D’(1,j+1)* D’(3,j+1)=(S(j+1)*R’(j+1)) *R’(j+1)
=S(j+1)*(R’(j+1)*R’(j+1))
=S(j+1)*0
=S(j+1)
であるから、D’(1,j+1)* D’(3,j+1)を計算すれば、S(j+1)が求まる。
次に、D’(1),D’(2)を取得してSを復元する場合には、次のようになる。
D’(1,1)*D’(2,1)=(S(1)* R’(1)*R’(2))*(S(1)*R’(1))
=(S(1)*S(1))*(R’(1)*R’(1))*R’(2)
=0*0* R’(2)
= R’(2)
であるから、D’(1,1)*D’(2,1)を計算すれば、R’(2)が求まる。
また同様に、
D’(1,2)*D’(2,2)=(S(2)*R’(2))*(S(2)*R’(1)*R’(2))
=(S(2)*S(2))*(R’(2)*R’(2))*R’(1)
=0*0*R’(1)
= R’(1)
であるから、D’(1,2)*D’(2,2)を計算すれば、R’(1)が求まる。
このR’(1), R’(2)を使用してS(1),S(2)を求める。
D’(2,1)* R’(1)=(S(1)*R’(1))* R’(1)
=S(1)*(R’(1)*R’(1))
=S(1)*0
=S(1)
であるから、D’(2,1)* R’(1)を計算すれば、S(1)が求まる。
また同様に、
D’(1,2)*R’(2)=(S(2)*R’(2))* R’(2)
=S(2)* (R’(2)*R’(2))
=S(2)*0
=S(2)
であるからD’(1,2)* R’(2)を計算すればS(2)が求まる。
一般に、jを奇数として、
D’(1,j)*D’(2,j)=(S(j)*R’(j)*R’(j+1))*(S(j)* R’(j))
=(S(j)*S(j))*(R’(j)*R’(j)) *R’(j+1)
=0*0*R’(j+1)
= R’(j+1)
であるからD’(1,j)*D’(2,j)を計算すればR’(j+1)が求まる。
また同様に、
D’(1,j+1)*D’(2,j+1)=(S(j+1)* R’(j+1))* (S(j+1)*R’(j)*R’(j+1))
=(S(j+1)*S(j+1))*(R’(j+1)* R’(j+1))*R’(j)
=0*0*R’(j)
=R’(j)
であるからD’(1,j+1)*D’(2,j+1)を計算すればR’(j)が求まる。
このR’(j), R’(j+1)を使用してS(j),S(j+1)を求める。
D’(2,j)*R’(j)=(S(j)* R’(j))* R’(j)
=S(j)*(R’(j)*R’(j))
=S(j)*0
=S(j)
であるからD’(2,j)*R’(j)を計算すればS(j)が求まる。
また同様に、
D’(1,j+1)* R’(j+1)=(S(j+1)* R’(j+1))*R’(j+1)
=S(j+1)* (R’(j+1)*R’(j+1))
=S(j+1)*0
=S(j+1)
であるからD’(1,j+1)* R’(j+1)を計算すればS(j+1)が求まる。
以上、乱数書き換え方式により再分割データを生成した場合には、3つの再分割データD’(1),D’(2),D’(3)のすべてを用いなくても、3つの再分割データのうち、2つの再分割データを用いて上述したように元データを復元することができる。
また、乱数書き換え方式においても、一旦元データを復元することなく(元データが見える形で現れない)、データの再分割処理を行うことができるので、よりセキュアなデータ管理が可能となる。
(3.動作)
次に、図13を用いて、本実施の形態に係るデータ秘匿装置2の動作を説明する。
まず、乱数生成部22が、記憶部21に記憶されたシードαをもとに擬似乱数生成アルゴリズムFにより、データSと同じ長さの乱数F(α)(上述した秘密分散法Aでの乱数Rに相当)を生成する(ステップS110)。
次に、データSと乱数F(α)とから、秘密分散法Aを用いて、分割データD(1), D(2), D(3)を生成し、記憶部21に記憶するとともに、保管サーバ3a及び3bに保管する(ステップS120,S130)。
尚、擬似乱数生成アルゴリズムFは、その時点(データSを擬似乱数アルゴリズムFを用いて分割する時点)において、コンピュータの計算能力からブロック暗号が解読不能であると判断される程度の計算量を要するアルゴリズムで、分割データ生成時にはデータ秘匿装置2に与えられている。
時間の経過とともにコンピュータの性能が向上し、擬似乱数アルゴリズムFを構成するブロック暗号の脆弱化が予測された場合(例えば、具体的には、ブロック暗号解読に必要な計算量と、その時点で入手可能なコンピュータの計算能力の双方を鑑みて、数年程度で解読可能な場合など)には、解読に必要な計算量がより大きいブロック暗号を構成要素に持つ擬似乱数アルゴリズムGを用いて、記憶部21に記憶されたシードβをもとに、データSと同じ長さの乱数G(β)(上述した秘密分散法Aでの乱数R’に相当)を生成する(ステップS140,S150)。
次に、記憶部21及び保管サーバ3a,3bに保管された分割データD(1), D(2), D(3)から秘密分散法Aを用いて再分割データD’(1), D’(2), D’(3)を生成し、分割データD(1), D(2), D(3)に代えて、記憶部21及び保管サーバ3a,3bに保管する(ステップS160,S170)。
尚、擬似乱数生成アルゴリズムGは、上述したように擬似乱数生成アルゴリズムFより計算量が必要とされ、その時点(分割データを擬似乱数アルゴリズムGを用いて再分割する時点)において、コンピュータの計算能力からブロック暗号が解読不能であると判断される程度の計算量を要するアルゴリズムで、再分割データ生成時にはデータ秘匿装置2に与えられている。例えば、具体的には、擬似乱数生成アルゴリズムFの構成要素には128ビット鍵のAES(Advanced Encryption Standard)が用いられていた場合には、擬似乱数生成アルゴリズムGの構成要素としては、256ビット鍵のAESを用いるものである。
以降は、上記ステップS140〜S170の繰り返しである。即ち、時間の経過とともにコンピュータの性能が向上し、擬似乱数アルゴリズムGを構成するブロック暗号の脆弱化が予測された場合、解読に必要な計算量がより大きいブロック暗号を構成要素に持つ擬似乱数アルゴリズムHを用いて、記憶部21に記憶されたシードγをもとに、乱数H(γ)を生成し、記憶部21及び保管サーバ3a,3bに保管された再分割データD’(1), D’(2), D’(3)から、秘密分散法Aを用いて、再分割データD” (1), D”(2), D”(3)を生成し、再分割データD’(1), D’(2), D’(3)に代えて、記憶部21及び保管サーバ3a,3bに保管する(ステップS140,S150,S160,S170)。
尚、データSを復号するときは、記憶部21及び保管サーバ3a,3bに保管された分割データ(再分割データ)のうち、いずれか2つから秘密分散法Aを用いて復号化する(ステップS180)。
従って、本実施の形態に係るデータ秘匿装置2によれば、ブロック暗号を用いた擬似乱数生成アルゴリズムにより生成された乱数を用いて、秘密分散法Aにより生成された分割データを、所定の時期にさらに、秘密分散法Aにより、より計算量の大きい擬似乱数生成アルゴリズムにより生成された乱数を用いて、さらに再分割するので、長期間にわたってデータを秘匿し続けることができる。
特に、秘密分散法Aは、データを所望の処理単位ビット長に基づいて所望の分割数の分割データに分割するデータ分割方法であり、データを処理単位ビット長毎に区分けして、複数の元部分データを生成し、この複数の元部分データの各々に対応して、データのビット長と同じまたはこれより短い長さの乱数から処理単位ビット長の複数の乱数部分データを生成し、各分割データを構成する各分割部分データを元部分データと乱数部分データの排他的論理和によって処理単位ビット長毎に生成して、所望の分割数の分割データを生成するとともに、新たに発生させた乱数から処理単位ビット長の複数の乱数部分データを生成し、各分割部分データと該乱数部分データの排他的論理和により処理単位ビット長毎に再分割部分データを生成して、所望の分割数の再分割データを生成するので、データを復元することなく、データを再分割することができるので、データをよりセキュアに管理することができる。
尚、本実施の形態における秘密分散法Aは、多項式演算・剰余演算などを含む多倍長整数の演算処理を必要としないので、大容量データを多数処理する場合においても簡単かつ迅速にデータの分割および復元を行うことができるという効果を得ることができる。
本発明の第1の実施の形態に係るデータ秘匿装置の概略構成を示すブロック図である。 本発明の第1の実施の形態に係るデータ秘匿装置の動作を示すフローチャート図である。 本発明の第2の実施の形態に係るデータ秘匿装置の概略構成を示すブロック図である。 秘密分散法Aの分割数n=3の場合の分割処理を示すフローチャートである。 秘密分散法Aにおいて16ビットの元データSを8ビットの処理単位ビット長に基づいて分割数n=3で3分割する場合の各データと定義式および各分割部分データから元データを復元する場合の計算式などを示す表である。 秘密分散法Aの分割数n=3の場合の分割データ、分割部分データ、各分割部分データを生成する定義式を示す表である。 秘密分散法Aの分割数がnで処理単位ビット長がbである場合の一般的な分割処理を示すフローチャートである。 秘密分散法Aの分割数n=3の場合の分割データ、分割部分データ、各分割部分データを生成する定義式の別の例を示す表である。 秘密分散法Aのデータ再分割処理(乱数追加注入方式)を示すフローチャートである。 乱数追加注入方式により元データSを元データSの半分の長さの処理単位ビット長に基づいて分割数n=3で再分割する場合の各データと定義式および各分割部分データから元データを復元する場合の計算式などを示す表である。 秘密分散法Aのデータ再分割処理(乱数書き換え方式)を示すフローチャートである。 乱数書き換え方式により元データSを元データSの半分の長さの処理単位ビット長に基づいて分割数n=3で再分割する場合の各データと定義式および各分割部分データから元データを復元する場合の計算式などを示す表である。 本発明の第2の実施の形態に係るデータ秘匿装置の動作を示すフローチャート図である。 バーナム暗号の一例を説明する図である。
符号の説明
1,2…データ秘匿装置
3a,3b…保管サーバ
4…通信ネットワーク
11,21…記憶部
12,22…乱数生成部
13…データ暗号部
14…データ復号部
23…分割データ生成部
24…再分割データ生成部
25…元データ復元部
26…通信部

Claims (20)

  1. データをバーナム暗号を用いて秘匿するデータ秘匿装置であって、
    ブロック暗号を構成要素に持つ擬似乱数生成関数を用いて第1の乱数を生成する手段と、
    前記データと、前記第1の乱数との排他的論理和により暗号データを生成する手段と、
    生成された暗号データを所定の記憶部に記憶する手段と、
    所定の時期に、前記記憶部に記憶された暗号データの生成時に用いられた擬似乱数生成関数よりも計算量が大きい別の擬似乱数生成関数を用いて、第2の乱数を生成する手段と、
    前記記憶部に記憶された暗号データと、前記第2の乱数との排他的論理和により暗号データを生成する暗号データ暗号化手段と、
    前記記憶部に記憶された暗号データに代えて、前記暗号データ暗号化手段で生成された暗号データを前記記憶部に記憶する手段と、
    を有することを特徴とするデータ秘匿装置。
  2. 前記暗号データ暗号化手段は、さらに、生成された暗号データと、前記記憶部に記憶された暗号データの生成時に用いられた乱数との排他的論理和により、暗号データを生成することを特徴とする請求項1記載のデータ秘匿装置。
  3. 前記記憶部に記憶された暗号データと、前記データから前記記憶部に記憶された暗号データを生成するまでに用いた乱数すべてとを結合した排他的論理和により、前記データを復号する手段を有することを特徴とする請求項1記載のデータ秘匿装置。
  4. 前記記憶部に記憶された暗号データと、前記記憶部に記憶された暗号データを生成するときに用いた乱数との排他的論理和により、前記データを復号する手段を有することを特徴とする請求項2記載のデータ秘匿装置。
  5. データを秘密分散法を用いて秘匿するデータ秘匿装置であって、
    前記秘密分散法は、
    前記データを所望の処理単位ビット長に基づいて所望の分割数の分割データに分割するデータ分割方法であり、前記データを処理単位ビット長毎に区分けして、複数の元部分データを生成し、この複数の元部分データの各々に対応して、前記データのビット長と同じまたはこれより短い長さの第1の乱数から処理単位ビット長の複数の第1の乱数部分データを生成し、各分割データを構成する各分割部分データを元部分データと第1の乱数部分データの排他的論理和によって処理単位ビット長毎に生成して、所望の分割数の分割データを生成するとともに、
    新たに発生させた第2の乱数から処理単位ビット長の複数の第2の乱数部分データを生成し、前記各分割部分データと第2の乱数部分データの排他的論理和により処理単位ビット長毎に再分割部分データを生成して、前記所望の分割数の再分割データを生成するデータ分割方法であり、
    ブロック暗号を構成要素に持つ擬似乱数生成関数を用いて前記第1の乱数を生成する手段と、
    前記データと前記第1の乱数から、前記秘密分散法を用いて前記分割データを生成する手段と、
    前記分割データを暗号データとして所定の記憶部に記憶する手段と、
    所定の時期に、前記記憶部に記憶された暗号データの生成時に用いられた擬似乱数生成関数よりも計算量が大きい別の擬似乱数生成関数を用いて、前記第2の乱数を生成する手段と、
    前記記憶部に記憶された暗号データと前記第2の乱数から、前記秘密分散法を用いて前記再分割データを生成する手段と、
    前記記憶部に記憶された暗号データに代えて、前記再分割データを暗号データとして前記記憶部に記憶する手段と、
    を有することを特徴とするデータ秘匿装置。
  6. 前記記憶部に記憶された暗号データのうち、復元可能な所定の個数の分割データの組み合わせから、前記秘密分散法を用いて、前記データを復号する手段を有することを特徴とする請求項5記載のデータ秘匿装置。
  7. 前記秘密分散法は、前記各分割部分データの定義式における第1の乱数部分データを、該第1の乱数部分データと該各第1の乱数部分データに対応する第2の乱数部分データとの排他的論理和演算に置換した各再分割部分データの定義式により、各再分割部分データを生成することを特徴とする請求項5又は6記載のデータ秘匿装置。
  8. 前記秘密分散法は、前記各分割部分データの定義式における第1の乱数部分データを、該第1の乱数部分データに対応する第2の新たな乱数部分データに置換した各再分割部分データの定義式により、各再分割部分データを生成することを特徴とする請求項5又は6記載のデータ秘匿装置。
  9. 前記所定の時期は、コンピュータの計算能力をもとに判断された、前記擬似乱数関数に用いられたブロック暗号の脆弱時期であることを特徴とする請求項1乃至8のいずれか1項に記載のデータ秘匿装置。
  10. データをバーナム暗号を用いて秘匿するデータ秘匿方法であって、
    ブロック暗号を構成要素に持つ擬似乱数生成関数を用いて第1の乱数を生成するステップと、
    前記データと、前記第1の乱数との排他的論理和により暗号データを生成するステップと、
    生成された暗号データを所定の記憶部に記憶するステップと、
    所定の時期に、前記記憶部に記憶された暗号データの生成時に用いられた擬似乱数生成関数よりも計算量が大きい別の擬似乱数生成関数を用いて、第2の乱数を生成するステップと、
    前記記憶部に記憶された暗号データと、前記第2の乱数との排他的論理和により暗号データを生成する暗号データ暗号化ステップと、
    前記記憶部に記憶された暗号データに代えて、前記暗号データ暗号化ステップで生成された暗号データを前記記憶部に記憶するステップと、
    を有することを特徴とするデータ秘匿方法。
  11. データを秘密分散法を用いて秘匿するデータ秘匿方法であって、
    前記秘密分散法は、
    前記データを所望の処理単位ビット長に基づいて所望の分割数の分割データに分割するデータ分割方法であり、前記データを処理単位ビット長毎に区分けして、複数の元部分データを生成し、この複数の元部分データの各々に対応して、前記データのビット長と同じまたはこれより短い長さの第1の乱数から処理単位ビット長の複数の第1の乱数部分データを生成し、各分割データを構成する各分割部分データを元部分データと第1の乱数部分データの排他的論理和によって処理単位ビット長毎に生成して、所望の分割数の分割データを生成するとともに、
    新たに発生させた第2の乱数から処理単位ビット長の複数の第2の乱数部分データを生成し、前記各分割部分データと第2の乱数部分データの排他的論理和により処理単位ビット長毎に再分割部分データを生成して、前記所望の分割数の再分割データを生成するデータ分割方法であり、
    ブロック暗号を構成要素に持つ擬似乱数生成関数を用いて前記第1の乱数を生成するステップと、
    前記データと前記第1の乱数から、前記秘密分散法を用いて前記分割データを生成するステップと、
    前記分割データを暗号データとして所定の記憶部に記憶するステップと、
    所定の時期に、前記記憶部に記憶された暗号データの生成時に用いられた擬似乱数生成関数よりも計算量が大きい別の擬似乱数生成関数を用いて、前記第2の乱数を生成するステップと、
    前記記憶部に記憶された暗号データと前記第2の乱数から、前記秘密分散法を用いて前記再分割データを生成するステップと、
    前記記憶部に記憶された暗号データに代えて、前記分割データを暗号データとして前記記憶部に記憶するステップと、
    を有することを特徴とするデータ秘匿方法。
  12. データをバーナム暗号を用いて秘匿するためのコンピュータが読み取り可能なデータ秘匿プログラムであって、
    ブロック暗号を構成要素に持つ擬似乱数生成関数を用いて第1の乱数を生成するステップと、
    前記データと、前記第1の乱数との排他的論理和により暗号データを生成するステップと、
    生成された暗号データを所定の記憶部に記憶するステップと、
    所定の時期に、前記記憶部に記憶された暗号データの生成時に用いられた擬似乱数生成関数よりも計算量が大きい別の擬似乱数生成関数を用いて、第2の乱数を生成するステップと、
    前記記憶部に記憶された暗号データと、前記第2の乱数との排他的論理和により暗号データを生成する暗号データ暗号化ステップと、
    前記記憶部に記憶された暗号データに代えて、前記暗号データ暗号化ステップで生成された暗号データを前記記憶部に記憶するステップと、
    を前記コンピュータに実行させることを特徴とするデータ秘匿プログラム。
  13. 前記暗号データ暗号化ステップは、さらに、生成された暗号データと、前記記憶部に記憶された暗号データの生成時に用いられた乱数との排他的論理和により、暗号データを生成することを特徴とする請求項12記載のデータ秘匿プログラム。
  14. 前記記憶部に記憶された暗号データと、前記データから前記記憶部に記憶された暗号データを生成するまでに用いた乱数すべてとを結合した排他的論理和により、前記データを復号するステップを前記コンピュータに実行させることを特徴とする請求項12記載のデータ秘匿プログラム。
  15. 前記記憶部に記憶された暗号データと、前記記憶部に記憶された暗号データを生成するときに用いた乱数との排他的論理和により、前記データを復号するステップを有することを特徴とする請求項13記載のデータ秘匿プログラム。
  16. データを秘密分散法を用いて秘匿するためのコンピュータが読み取り可能なデータ秘匿プログラムであって、
    前記秘密分散法は、
    前記データを所望の処理単位ビット長に基づいて所望の分割数の分割データに分割するデータ分割方法であり、前記データを処理単位ビット長毎に区分けして、複数の元部分データを生成し、この複数の元部分データの各々に対応して、前記データのビット長と同じまたはこれより短い長さの第1の乱数から処理単位ビット長の複数の第1の乱数部分データを生成し、各分割データを構成する各分割部分データを元部分データと第1の乱数部分データの排他的論理和によって処理単位ビット長毎に生成して、所望の分割数の分割データを生成するとともに、
    新たに発生させた第2の乱数から処理単位ビット長の第2の複数の乱数部分データを生成し、前記各分割部分データと第2の乱数部分データの排他的論理和により処理単位ビット長毎に再分割部分データを生成して、前記所望の分割数の再分割データを生成するデータ分割方法であり、
    ブロック暗号を構成要素に持つ擬似乱数生成関数を用いて前記第1の乱数を生成するステップと、
    前記データと前記第1の乱数から、前記秘密分散法を用いて前記分割データに分割するステップと、
    前記分割データを暗号データとして所定の記憶部に記憶するステップと、
    所定の時期に、前記記憶部に記憶された暗号データの生成時に用いられた擬似乱数生成関数よりも計算量が大きい別の擬似乱数生成関数を用いて、前記第2の乱数を生成するステップと、
    前記記憶部に記憶された暗号データと前記第2の乱数から、前記秘密分散法を用いて前記再分割データを生成するステップと、
    前記記憶部に記憶された暗号データに代えて、前記分割データを暗号データとして前記記憶部に記憶するステップと、
    を前記コンピュータに実行させることを特徴とするデータ秘匿プログラム。
  17. 前記記憶部に記憶された暗号データのうち、復元可能な所定の個数の分割データの組み合わせから、前記秘密分散法を用いて、前記データを復号するステップを前記コンピュータに実行させることを特徴とする請求項16記載のデータ秘匿プログラム。
  18. 前記秘密分散法は、前記各分割部分データの定義式における第1の乱数部分データを、該第1の乱数部分データと該各第1の乱数部分データに対応する第2の乱数部分データとの排他的論理和演算に置換した各再分割部分データの定義式により、各再分割部分データを生成することを特徴とする請求項16又は17記載のデータ秘匿プログラム。
  19. 前記秘密分散法は、前記各分割部分データの定義式における第1の乱数部分データを、該第1の乱数部分データに対応する第2の新たな乱数部分データに置換した各再分割部分データの定義式により、各再分割部分データを生成することを特徴とする請求項16又は17記載のデータ秘匿プログラム。
  20. 前記所定の時期は、コンピュータの計算能力をもとに判断された、前記擬似乱数関数に用いられたブロック暗号の脆弱時期であることを特徴とする請求項12乃至19のいずれか1項に記載のデータ秘匿プログラム。

JP2004168997A 2004-06-07 2004-06-07 データ秘匿装置、データ秘匿方法、及びデータ秘匿プログラム Expired - Lifetime JP4619045B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004168997A JP4619045B2 (ja) 2004-06-07 2004-06-07 データ秘匿装置、データ秘匿方法、及びデータ秘匿プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004168997A JP4619045B2 (ja) 2004-06-07 2004-06-07 データ秘匿装置、データ秘匿方法、及びデータ秘匿プログラム

Publications (3)

Publication Number Publication Date
JP2005346005A JP2005346005A (ja) 2005-12-15
JP2005346005A5 JP2005346005A5 (ja) 2007-07-19
JP4619045B2 true JP4619045B2 (ja) 2011-01-26

Family

ID=35498420

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004168997A Expired - Lifetime JP4619045B2 (ja) 2004-06-07 2004-06-07 データ秘匿装置、データ秘匿方法、及びデータ秘匿プログラム

Country Status (1)

Country Link
JP (1) JP4619045B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4664008B2 (ja) * 2004-06-07 2011-04-06 エヌ・ティ・ティ・コミュニケーションズ株式会社 アクセス権管理システム、アクセス権管理装置、アクセス権管理方法、端末用プログラム、及びアクセス権管理プログラム
WO2005076518A1 (en) 2004-02-10 2005-08-18 Ntt Communications Corporation Secret information management scheme based on secret sharing scheme
JP6259295B2 (ja) * 2014-01-23 2018-01-10 エヌ・ティ・ティ・コミュニケーションズ株式会社 データ秘匿方法、データ秘匿装置、およびデータ秘匿プログラム
KR101616717B1 (ko) 2014-04-29 2016-05-02 현대오토에버 주식회사 버냄 사이퍼 암호 알고리즘을 이용한 암복호화 서비스 제공 방법 및 시스템
WO2018116366A1 (ja) * 2016-12-19 2018-06-28 三菱電機株式会社 秘匿化装置、データ分析装置、秘匿化方法、データ分析方法、秘匿化プログラム及びデータ分析プログラム
JP6322314B2 (ja) * 2017-03-17 2018-05-09 エヌ・ティ・ティ・コミュニケーションズ株式会社 データ秘匿方法、データ秘匿装置、およびデータ秘匿プログラム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003091240A (ja) * 2001-09-19 2003-03-28 Dainippon Printing Co Ltd 暗号化された情報の管理方法
JP2005252384A (ja) * 2004-03-01 2005-09-15 Rikogaku Shinkokai 暗号化データ保管サーバシステム、暗号化データ保管方法及び再暗号化方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10268764A (ja) * 1997-03-28 1998-10-09 Hitachi Ltd 電子化情報保証方法、保証サーバおよび保証サーバプログラムを記録した記録媒体

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003091240A (ja) * 2001-09-19 2003-03-28 Dainippon Printing Co Ltd 暗号化された情報の管理方法
JP2005252384A (ja) * 2004-03-01 2005-09-15 Rikogaku Shinkokai 暗号化データ保管サーバシステム、暗号化データ保管方法及び再暗号化方法

Also Published As

Publication number Publication date
JP2005346005A (ja) 2005-12-15

Similar Documents

Publication Publication Date Title
JP5194094B2 (ja) データ分割方法、データ分割装置およびコンピュータプログラム
JP5822970B2 (ja) 擬似ランダム生成、データ暗号化、およびメッセージ暗号化ハッシングのための暗号化デバイス
KR100363457B1 (ko) 암호체계용매핑레퍼토리
EP2692084B1 (en) Secret sharing apparatus, sharing apparatus and secret sharing method
JP4610176B2 (ja) データ原本性確保方法およびシステム、ならびにデータ原本性確保用プログラム
JP6035459B2 (ja) 暗号化装置、復号化装置、及びプログラム
JP4676695B2 (ja) データ分割方法、データ分割装置およびコンピュータプログラム
US9391770B2 (en) Method of cryption
JP5749368B2 (ja) データ原本性確保方法およびシステム、ならびにデータ原本性確保用プログラム
JP2006311383A (ja) データ管理方法、データ管理システムおよびデータ管理装置
JP4619045B2 (ja) データ秘匿装置、データ秘匿方法、及びデータ秘匿プログラム
JP5689826B2 (ja) 秘密計算システム、暗号化装置、秘密計算装置及びその方法、プログラム
JP2006018850A (ja) データ保管システム
CN106656500A (zh) 加密装置及方法
Dzwonkowski et al. Quaternion encryption method for image and video transmission
JP4602675B2 (ja) 機密情報管理システム、機密情報管理方法、および機密情報管理プログラム、並びに機密情報管理システム用端末プログラム
KR102132685B1 (ko) 순서 노출 암호화를 위한 장치 및 방법
JP6259295B2 (ja) データ秘匿方法、データ秘匿装置、およびデータ秘匿プログラム
JP4664008B2 (ja) アクセス権管理システム、アクセス権管理装置、アクセス権管理方法、端末用プログラム、及びアクセス権管理プログラム
JP4789536B2 (ja) データ分割装置、データ分割方法およびコンピュータプログラム
JP4486851B2 (ja) 機密情報管理システム、機密情報管理方法、および機密情報管理プログラム、並びに機密情報管理システム用端末プログラム
JP2005167794A (ja) 秘密情報保管方法及び装置、秘密情報復元方法及び装置、秘密情報保管プログラム並びに秘密情報復元プログラム。
JP6296589B2 (ja) 暗号処理システム
Nita et al. Classical Cryptography
JP6876423B2 (ja) ストリーム暗号における内部状態の初期化装置、方法及びプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070606

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070606

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100727

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100927

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: 20101019

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101026

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131105

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4619045

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250