説明

秘密分散方法、プログラム、及び装置

【課題】データを不等サイズに分割した際にも安全性の劣化を防止する。
【解決手段】本発明は、データを二分割して二つのデータ片を得、該二分割されたデータの各々他方を由来とするデータを擬似乱数生成器の乱数生成元として用いて導出された複数の異なる擬似乱数列によって、それぞれのデータを多重に暗号化する。具体的には、データを二分割し、二分割された一方のデータを基にして第1の乱数の種を生成し、第1の乱数の種を用いて第1の複数の異なる擬似乱数列を生成し、第1の複数の異なる擬似乱数列を用いて、二分割された他方のデータを多重に暗号化し、二分割された一方のデータの暗号化に関しても同様に処理する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、電子情報を守秘すると共に不正な利用を防止するための秘密分散方法、プログラム、及び装置に関する。
【背景技術】
【0002】
昨今、デジタルデータ利用における情報セキュリティ技術の重要性が指摘されており、その基盤技術の一つとして暗号技術がある。暗号技術は、守秘対象となるデータ(平文)に、秘密裏に保管される暗号鍵に基づく変換(暗号化)を施して暗号文を得、この暗号文からは、暗号鍵なしに平文を再現することが困難であることを安全性の根拠としている。暗号方式の安全性は、暗号鍵なしに暗号文から平文を得ることの困難性を評価尺度とすることが多く、具体的には暗号方式が用いる暗号鍵のビット長(鍵長)を用いている。例として、鍵長が128ビットであれば、暗号文から暗号鍵なしに平文を再現するには、2の128乗(2128)通りの暗号鍵を候補とした総当り試行での暗号演算が必要となり、この試行に要する演算時間が、その時点で入手可能な演算器の能力をもってしても現実的でない場合に、その暗号方式は計算量的に安全であるとされる。
【0003】
ここで、もう一つの情報セキュリティ基盤と目される技術として秘密分散技術がある。秘密分散技術とは、守秘対象となるデータを複数に分割すると共に暗号化などの処理を施すものであり、分割されたデータ片を定められた数以上集めると容易に元データを復元可能であるが、定められた数以下では元データの復元は困難であるという性質を持つものである。
【0004】
このような秘密分散技術の一つとして、特許文献1に開示される分散データ生成技術がある。
【0005】
【特許文献1】特開平2006−311383号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
特許文献1によれば、二分割されたデータ片の一片から元データ全体を得ることが不可能という、単なる暗号方式では得られない付加的な安全の向上が実現されている。しかし、分割されたデータ片の一片から得られる情報が部分的であるという利点はあるものの、安全性の根拠は暗号処理であることから、データの不正な解読に対する耐性を示す尺度である計算量的な安全強度は従来の暗号方式と同様である。又、特許文献1においては、分割されたデータ片の一片から元データ全体を得ることは不可能であるとするが、データ分割位置が単純な等分割から著しく偏った場合が考慮されていない。分割サイズの比が9対1であった場合には、大きなデータ片の暗号解読が成功した際に、元データの90%が得られることになる。データのフォーマットによっては、例えば、単純なテキストデータであれば得られる文脈から、この90%の部分から全体データの推測が可能となる。ここで、データの秘密分散保管においては、データ片の等分割が、望ましい分割サイズであるとは限らない。例えば、ハードディスクなどを用いた大容量記憶装置と、フラッシュメモリなどを用いた小容量記憶装置の二者間で秘密分散する場合には、データを大小の大きく偏ったサイズに不等分割し、大片を大容量記憶装置に、小片を小容量記憶装置に、保管する必要がある。この場合には、データを不等サイズに分割した際にも安全性の劣化を防止することが課題となる。
【0007】
以上より、本発明の課題は、データを不等サイズに分割した際にも安全性の劣化を防止する秘密分散方法、プログラム、及び装置を提供することにある。
【課題を解決するための手段】
【0008】
上記課題を解決するために、本発明は、データを二分割して二つのデータ片を得、二分割されたデータの各々他方を由来とするデータを擬似乱数生成器の乱数生成元として用いた複数の異なる擬似乱数列によって、それぞれのデータを多重に暗号化する秘密分散方法、プログラム、及び装置である。ここで、他方を由来とするデータを乱数生成元とするということは、一方のデータの暗号化のために他方のデータを基にしたデータを乱数生成元として互いに(タスキがけの関係で)使用することである。
【0009】
本発明の具体的な態様は次のような秘密分散方法、装置及びプログラムである。
【0010】
データを二分割し、二分割した一方のデータを基にして第1の乱数の種を生成し、第1の乱数の種を用いて第1の複数の異なる擬似乱数列を生成し、第1の複数の異なる擬似乱数列を用いて、二分割した他方のデータを多重に暗号化し、他方のデータを基にして第2の乱数の種を生成し、第2の乱数の種を用いて第2の複数の異なる擬似乱数列を生成し、第2の複数の異なる擬似乱数列を用いて、一方のデータを多重に暗号化する秘密分散方法、装置及びプログラムである。
【0011】
本発明の望ましい他の態様は、他方のデータの暗号化は、他方のデータと第1の複数の異なる擬似乱数列とを順にビット毎の排他的論理和を求め、一方のデータの暗号化は、一方のデータと第2の複数の異なる擬似乱数列とを順にビット毎の排他的論理和を求める。
【0012】
本発明の望ましいさらに他の態様は、情報処理装置は、暗号化した一方及び他方のデータを、互いに異なる記憶装置に格納する。
【0013】
本発明のさらに他の態様は、暗号化にブロック暗号器を用いる。
【発明の効果】
【0014】
本発明によれば、データを不等サイズに分割した際にも安全性の劣化を防止可能な秘密分散が実現できる。
【発明を実施するための最良の形態】
【0015】
本発明を実施するための最良の形態を実施例1〜実施例3により以下に説明する。
【実施例1】
【0016】
本実施例について、図1〜図11を用いて説明する。図1に、本実施例に係る情報処理装置(コンピュータ)の概略構成を示す。情報処理装置101は、バス107で接続したCPU102、揮発性記憶装置103、不揮発性記憶装置104、及び外部不揮発性記憶媒体制御装置106と、外部不揮発性記憶媒体制御装置106に接続し、その入出力を制御される外部不揮発性記憶媒体105とを有する。
【0017】
102は、中央演算処理装置(以下、CPUとする)である。CPU102は、ソフトウェアコードを読み込み、定められた処理を実行する。103は、CPU102が演算処理を行なう際にワーク領域として用いる、SRAM、SDRAMなどの揮発性記憶装置である。104は、CPU102が行なうべき処理が記述されたソフトウェアコード、例えば、OSやアプリケーション、データを保管するための、フラッシュメモリ、ハードディスクなどの不揮発性記憶装置である。105は、例えばフラッシュメモリ、ハードディスクなどの不揮発性記憶媒体を用いた、情報装置101と接続、分離が可能な外部不揮発性記憶媒体である。106は、情報装置101、外部不揮発性記憶媒体105間を接続し、データのやり取りを制御する外部不揮発性記憶媒体制御装置である。107は、CPU102、揮発性記憶装置103、不揮発性記憶装置104、外部不揮発性記憶媒体制御装置106などの情報処理装置101を構成する各機能ブロック間で命令、データをやり取りするための命令、データバス線(以下、データバス)である。各装置の本実施例における動作は、以下、必要に応じて説明する。
【0018】
尚、構成要素102から107は論理的構成を示し、必ずしも物理的に図と同一構成である必要はない。又、情報処理装置101で実行される秘密分散処理は、必ずしもCPU102と揮発性記憶装置103、不揮発性記憶装置104に保管されるプログラムによる実装とするする必要はなく、例えば、不揮発性記憶装置104や外部不揮発性記憶媒体制御装置106内に設ける、図示されていない専用のハードウェア、又は、図示されていない独立したCPUと、メモリに保管されるプログラムによる実装としてもよく、物理的な構成方法は問わない。さらに本実施形態では、具体例の一つとして情報処理装置101を示したが、後述する乱数発生器や暗号器、暗号器を構成する排他論理和回路などの装置や回路による構成でも良いことは以下の説明から理解される。
【0019】
図2は、本実施例に係る秘密分散方法のデータ分割動作の概要フローチャートであり、図3は、本実施例に係る秘密分散方法のデータ分割動作のデータ構造概要図である。図3中、ステップ201から205は、図2のフローチャートに示した処理ステップを示す。図2及び図3を参照して、以下説明する。
【0020】
情報処理装置101は、秘密分散処理開始指示に従い、小片サイズによる調整を行なう(ステップ201)。元データをメッセージMとし、このメッセージMの長さをmLenバイトとする。メッセージMを大小2片に分割し、その分割サイズを大片BLenバイト、小片SLenバイトとする。ここで、小片サイズの最大値D、例えばD={64,128,256}を予め定めておき、SLenが、小片サイズの最大値D以下か否かを確認する。SLenが小片サイズの最大値D以下であれば、mLen−SLenによりBLenの値を求める。又、n=SLen/16を求める。
【0021】
次に、メッセージMの先頭BLenバイト(大片)をSLenバイト毎に分割し、その余りをαバイトとするように、ブロックに分割する(ステップ202)。剰余値によるバイトシャッフル又はビットシャッフルによって、乱数Seed(乱数の種)の偏り対策を行なう(ステップ203)。擬似乱数生成器Eを多段に使用し,データを攪拌(暗号化)したデータ大片の生成する(ステップ204)。元データを復元するために必要な暗号化したデータ小片の生成を行なう(205)。
【0022】
図4〜図7は、図3に示す概要のデータ構造詳細図である。図中、ステップ201〜ステップ205は、図2のフローチャートに示した処理ステップを示す。
【0023】
図4を用いて、図2のステップ201〜ステップ203の処理詳細を説明する。処理対象の元データであるメッセージM、小片サイズSLen値を所与とする。SLen値は16の倍数とし、SLen=16nで表す。nは自然数とする。すなわち、SLenバイトのデータは16バイト単位にn分割が可能である。メッセージMの長さをmLenとする。大片サイズBLen=mLen−SLenを算出する(ステップ201)。
【0024】
以下の手順でメッセージMの分割を行なう(ステップ202)。メッセージMの先頭からSLenバイトずつ、データを分割していき、各々をメッセージM0、M1、・・・、としていく。メッセージMがSLenバイトの倍数でない場合、順に分割していくと、最後にデータ長がSLenバイトに満たない分割データが生じる。ここで、メッセージMをm分割した際に、最後の分割メッセージMm−1をSLenバイトとし、最後から2番目の分割メッセージMm−2をSLenバイトに満たない分割データとするように分割する。分割メッセージMm−2の長さをαバイトとする。図4においては、メッセージMを5分割(m=5)する場合を示しており、分割メッセージはM0〜M4であり、M3の長さがαバイトである。
【0025】
分割メッセージM0〜Mm−1から、予め定めた間隔及び順序で、剰余値として定めた数バイト又は数ビットのデータを抜き取っていき(抜き取ったデータを図中にハッチングで示す。)、残ったデータに対し、データを抜いた隙間を詰める形で新しいデータ列を生成する(ステップ203)。抜き取ったデータは、先に生成した新しいデータ列の後ろに、抜き取った順に並べていく。生成された新しいデータ列をM’とし、データ列M’を、先のステップ202と同様の手順で分割し、分割メッセージM0’〜Mm−1’を得る。図4においては、分割メッセージはM0’〜M4’である。図4には、M4’が抜き取ったデータによる分割データのように図示しているが、データを抜き取る所定間隔によって抜き取ったデータを並べた先頭位置は異なる。
【0026】
図5を用いて、図2のステップ204の処理詳細を説明する。図中、E(501,502)は、128ビット鍵、128ビット初期値を入力とする擬似乱数生成器を示す。SLenバイトの最後の分割メッセージMm−1を16バイト毎に分割し、n個の16バイト単位メッセージMm−11’〜Mm−1n’を得る。n個の16バイト単位メッセージMm−11’〜Mm−1n’の各々を鍵入力、任意のn個の数値T1〜Tnの各々を初期値入力として、n個の擬似乱数生成器E(501)を動作させ、図示するように、これらn個の擬似乱数生成器E(501)から出力される、n個の擬似乱数の各々の先頭SLenバイトを各々S1〜Snとする。
【0027】
これらのS1〜Snに対し、順にビット毎の排他的論理和を求め、得られる結果をSとする。このSはSLenバイトの長さのデータである。このSを先頭から、16バイト毎にn分割し、S1’〜Sn’を得る。これらのS1’〜Sn’を鍵入力、任意の数値IVを初期値入力として、n個の擬似乱数生成器E(502)を動作させ、図示するように、これらn個の擬似乱数生成器E(502)から出力される、n個の擬似乱数の先頭BLenバイトを各々R1〜Rnとする。次に、分割メッセージM0’〜Mm−2’及びR1〜Rnに対し、順にビット毎の排他的論理和を求め、得られる結果をC11とする。このC11は、BLenバイトの暗号化されたデータとなる。
【0028】
図6及び図7を用いて、ステップ205の処理詳細を説明する。図6において、分割メッセージMm−2’に対し、SLen−αバイト分のデータパディングを行ない、端数であった分割メッセージMm−2’の長さをSLenバイトにする。図6では、αバイトのM3’にゼロパディングしているがパディングする内容は任意である。分割メッセージMm−2’が端数ではなく、その長さがSLenバイトであれば、データパディングは不要である。また、データパディングした後の分割メッセージを改めてMm−2’とする。
【0029】
次に、分割メッセージM0’〜Mm−2’に対し、順にビット毎の排他的論理和を求め、得られる結果をN0とする。N0はSLenバイトのデータである。更に、N0を16バイト毎にn分割し、n個の16バイト単位メッセージN01〜N0nを得る。
【0030】
次に、図7において、n個の16バイト単位メッセージN01〜N0nの各々を鍵入力、任意のn個の数値Tn+1〜T2nの各々を初期値入力として、n個の擬似乱数生成器E(701)を動作させ、図示するように、これらn個の擬似乱数生成器E(701)から出力される、n個の擬似乱数の、先頭SLenバイトを各々N1〜Nnとする。次に、これらのN1〜Nnに対し、順にビット毎の排他的論理和を求め、得られる結果をNとする。又、分割メッセージMm−1’(図示はM4)及びNに対し、ビット毎の排他的論理和を求め、得られる結果をC21とする。このC21はSLenバイトの長さの暗号化されたデータとなる。次に、任意の数値T2n+1を鍵入力、任意の数値IVを初期値入力として、擬似乱数生成器E(702)を動作させ、擬似乱数生成器E(702)から出力される擬似乱数の先頭4バイトをrとする。ステップ203において用いられる、分割メッセージM0〜Mm−2からデータを抜き取っていく単位となる、数バイト毎、数ビット毎などの数値を剰余値と呼ぶ。この剰余値を2バイトで表現し、BLen値、SLen値を各々1バイトで表現し、剰余値、BLen値、及びSLen値を結合した4バイトデータと、rに対し、ビット毎の排他的論理和を求め、得られる結果をr’とする。上記で得られた、C11、N、rを順に結合したものを分割データ大片W1とする。又、C21、S、r’ を順に結合したものを分割データ小片W2とする。
【0031】
暗号化された分割データ大片W1は不揮発性記憶装置104に保管され、暗号化された分割データ小片W2は外部不揮発性記憶媒体105に保管される。
【0032】
メッセージMを分割する際に、Mm−2をデータ長がSLenバイトに満たない分割データとするよう最後の分割を行なうとしたが、データ長がSLenバイトに満たない分割データとするのは、M0〜Mm−1のいずれであっても構わない。M0〜Mm−1のどのデータが、図6に示した端数としてパディングの対象となるか、事前に決めておくか、又は、分割データに、M0〜Mm−1のどのデータがパディング対象なのかを示すデータを含めることで任意の位置を端数として処理すればよい。
【0033】
以上のデータ分割動作を以下に処理アルゴリズムとして纏めて示す。
元データから分割片を得るアルゴリズム:
入力:秘密情報(メッセージ)M,Mのバイト長mLen,小片サイズSLenバイト
出力:分散情報W1,W2
1. SLenが予め定められた小片サイズの最大値D(例えば,D={64,128,256}など)以下か否かを確認し,もし以下でなければその旨を表示して終了する.
2. BLen=mLen−SLen,n=SLen/16を計算する.
3. MをBLenバイト,SLenバイトに分割する(BLen/16の余りをαとする.).
4. Mの先頭BLenバイトデータ,最後尾のSLenバイトデータをそれぞれ16nバイト毎に分割する(Mの先頭BLenバイトデータの最後尾はαバイトとなる)
5. mLen/SLenより大の整数のうち,最小の整数を計算し、その値をmodulusとする.
6. 最上位バイトからmodulusバイトずつ区切り,上記区切った各ブロックに対して,上位(modulus−1)バイトを最上位側に,下位1バイトを最下位側に振り分ける(振り分け後のデータをM’とする.).
(図4を用いて説明したデータの抜き取りに関する処理(バイトシャッフル又はビットシャッフル)の具体例の一つとしてのバイトシャッフルである.)
7. M’=M0’||M1’||…||Mmodulus−1’とし,Mmodulus−1’=Mmodulus−1,1’||Mmodulus−1,2’||…||Mmodulus−1,n’と16バイトずつ区切る.
8. for i from 1 to n by +1 do
8.1. 16バイト乱数Tiを生成する.
8.2. 擬似乱数生成器EMmodulus−1,i’,Ti)により16nバイトの擬似乱数siを生成する.
9. S=(s1(EOR)s2(EOR)…(EOR)sn)を計算する.ここで(EOR)はビット毎の排他論理和を示す.
10. S=s1’||s2’||…||sn’と区切る.
11. for i from 1 to n by +1 do
11.1. E(si’,IV)によりBLenバイトの擬似乱数Riを生成する.
12. C11=((M0’||M1’||…||Mmodulus−2’)(EOR)R1(EOR)R2(EOR)…(EOR)Rn)を計算する.
13. N0=M0’(EOR)M1’(EOR)…(EOR)(Mmodulus−2’||(00…0))=N01||N02||…||N0nと区切る.
14. for i from 1 to n by +1 do
14.1. 16バイト乱数T2n+iを生成する.
14.2. E(N0i,T2n+i)により16nバイトの擬似乱数Niを生成する.
15. N=(N1(EOR)N2(EOR)…(EOR)Nn),C21=N(EOR)M4’を計算する.
16. 16バイト乱数T2n+1を生成する.
17. E(T2n+1,IV)により4バイトの擬似乱数rを生成する.
18. 剰余値と各割符片のバイト長|C11|,|C21|を4バイトデータに格納し,上記格納した4バイトデータと擬似乱数rとの排他的論理和をとった値をr’とする.
19. W1=(C11||N||r),W2=(C21||S||r’)とし,W1,W2を出力する。
【0034】
次に、図8及び図9を用いて、本実施例に係る秘密分散方法のデータ復元の動作概要を説明する。図8は、本実施例に係る秘密分散方法のデータ復元動作の概要フローチャートであり、図9は、本実施例に係る秘密分散方法のデータ復元動作のデータ構造詳細図である。図9中、ステップ801〜804は、図8のフローチャートに示した処理ステップを示す。以下、図8及び図9を用いて説明する。
【0035】
情報処理装置101は、秘密分散処理開始指示に従い、分割データ大片W1、及び、分割データ小片W2を入力し、分割データ大片W1、及び、分割データ小片W2に含まれるデータを順に取り出す。先ず、W1、及び、W2の各々最後尾4バイトに当たるr及びr’を取り出し、r及びr’を対象として、ビット毎の排他的論理和を求めることで、剰余値、及びBLen値、及び、SLen値を得る。SLen値を認識することで、r’を取り出したW2の残りから、C21、及びSを取り出す。同様に、rを取り出したW1の残りから、C11、及びNを取り出す(ステップ801)。
【0036】
取り出したN、及びC21を対象として、ビット毎の排他的論理和を求めることで、Mn−1’を得る(ステップ802)。
【0037】
取り出したSを16バイト毎に分割することで、16バイト単位メッセージS1’〜Sn’が得られ、これらn個の16バイト単位メッセージS1’〜Sn’を鍵入力、データ分割に用いたのと同一の数値IVを初期値入力として、n個の擬似乱数生成器Eを動作させ、これらn個の擬似乱数生成器Eから出力されるn個の擬似乱数の先頭BLenバイトから各々R1〜Rnが得られる。次に、取り出したC11、及び、R1〜Rnに対し、順にビット毎の排他的論理和を求めることで、M1’〜Mn−2’が得られる(ステップ803)。
【0038】
ステップ803で得られたM1’〜Mn−1’に対し、取り出した剰余値に従い、バイト、ビット毎の順序を入替えることでメッセージMが得られる(ステップ804)。
【0039】
上記手順により、不揮発性記憶装置104、及び外部不揮発性記憶媒体105に各々分割保管されていた、分割データ大片W1、及び、分割データ小片W2から、メッセージMを復元する。
【0040】
以上のデータ復元動作を以下に処理アルゴリズムとして纏めて示す。
分割片から元データを復元するアルゴリズム:
入力:分散情報W1,W2
出力:秘密情報(メッセージ)M,Mのバイト長mLen,小片サイズSLenバイト
1. W1=(C11||N||r),W2=(C21||S||r’)と区切る(ここで,C11はBLenバイト,C21,N,SはSLenバイト,r,r’は4バイト).
2. r(EOR)r’を計算し,剰余値と各割符片のバイト長|C11|,|C21|を復元する.
3. Mmodulus−1’=C21(EOR)Nを計算する.
4. S=s1’||s2’||…||sn’と区切る(ここで,siは16バイト).
5. for i from 1 to n by +1 do
5.1. E(si’,IV)によりBLenバイトの擬似乱数Riを生成する.
6. (M0’||M1’||…||Mmodulus−2’)=C11(EOR)R1(EOR)R2(EOR)…(EOR)Rnを計算する.
7. M ’=M0’||M1’||…||Mmodulus−1’とし,ステップ2で求めた剰余値を用いて分散処理ステップ6の逆変換を行い,逆変換の結果Mを出力する。
【0041】
図10は、本実施例に係る情報処理装置101のソフトウェア構成の概略図である。図中、APLは、不揮発性記憶装置104及び外部不揮発性記憶媒体105に保管される何らかのデータを取り扱うユーザアプリケーション1001である。アプリケーション1001の仕様は任意であり、例えば、図1に図示しない、キーボードやマウスの類の入力装置、表示装置などの出力装置を介して、本実施例に係る情報処理装置101のユーザとのやり取りを行なうものであってもよいし、図1に図示しない、何らかのセンサ装置の類の入力装置、ネットワークやシリアル通信などの何らかの通信装置を介して、他の機器類とのやり取りをおこなうものであってもよい。本実施例に係る秘密分散処理を行なう秘密分散処理部1002は、アプリケーション1001から見た場合に、ファイルシステムとして振舞うインタフェースを備えたファイルシステムインタフェース部1003と、ファイルシステムインタフェース部1003を介して、ユーザアプリケーション1001から入力するユーザデータ1009に対してデータ分割して下位層に出力する、又、下位層から入力する分割データから本来のユーザデータを復元し、ファイルシステムインタフェース部1003に対して出力する、データ分割、復元処理部1004とを有する。
【0042】
秘密分散処理部1002の下層に、物理的な記憶装置を仮想化し、データの取り扱いを容易化する、所謂ファイルシステム1005を設ける。ファイルシステム1005の下層には、ファイルシステム1005の仮想化されたデータを、物理的な記憶装置が取り扱える形に変換するシステムソフトウェアであるデバイスドライバ層1006を設ける。デバイスドライバ層1006には、不揮発性記憶装置104に相当する物理記憶デバイス1007および外部不揮発性記憶媒体105に相当する物理記憶デバイス1008を接続する。データとして、ユーザアプリケーション1001が、物理的な記憶装置へ保管されていると認識するユーザデータ1009、物理記憶デバイス1007に保管される分割データ大片W1(1010)及び物理記憶デバイス1008に保管される分割データ小片W2(1011)を図示してある。
【0043】
秘密分散を用いない、従来の情報処理装置は、秘密分散処理部1002を有せず、ユーザアプリケーション1001が取り扱うユーザデータ1009は、ファイルシステム1005、及びデバイスドライバ層1006を介し、物理記憶デバイス1007の1010の位置に直接保管される。これに対し、秘密分散処理部1002は、上位層に対しては、ファイルシステムとして振舞い、データ分割、復元処理部1604が、メッセージMと、分割データ大片W1、及び分割データ小片W2との関係を把握し、ファイルシステム1005に対しては、分割データ大片W1、分割データ小片W2を独立した2つのデータ(ファイル)として取り扱う。以上により、ユーザアプリケーション1001に、秘密分散を利用していることを意識させない運用が可能である。
【0044】
以上から明らかなように、図10のAPL1001の階層からデバイスドライバ層1006は、一部分を図1に図示しないファームウエアによるが、揮発性記憶装置103及び/又は不揮発性記憶装置104に格納されるソフトウェアにより実現される。そのソフトウェアをCPU102が実行することにより、本実施例の動作を実現する。なお、情報処理装置は、本実施例の動作を実行する専用のハードウェアで実現しても良い。
【0045】
図6及び図7に示したように、分割データ大片W1、分割データ小片W2に含まれる、メッセージMに対応する暗号文であるC11及びC21は、ある特定の鍵長の擬似乱数生成器による暗号化をn回繰り返し行なっている。これにより、鍵長をn倍化した効果が得られ、安全性が改善されている。これにより、メッセージMを単純な等分割ではなく、著しく偏って分割したとしても、データ大片から多くの情報が漏洩する危険性に対して、安全性を確保している。
【0046】
一般に、安全性の根拠として独立した真性乱数データの生成を必要とする。生成される乱数値は擬似乱数生成器への「種」入力として用いられることから、安全性に大きな影響を与えることになる。一般的に、外部的な悪意による制御が困難、且つ性質のよい乱数生成源を安価に得るのは困難であり、例えば半導体素子の熱雑音に基づく乱数生成器を専用に具備する半導体装置を用いるなどコスト要因となる場合がある。したがって、低コストでの秘密分散利用に際して、独立した乱数データの生成を不要とすることも課題である。この課題に対して、本実施例では、擬似乱数生成器Eの「種(Seed)」入力である鍵及び初期値として、メッセージMに由来するデータ、及び、任意の固定値を組み合わせて用いることで多様性を確保し、独立した真性乱数生成源を不要としており、装置実現の低コスト化に寄与している。
【0047】
図5、図7において、擬似乱数生成器Eを、128ビット鍵、128ビット初期値を入力としたが、必ずしも、この鍵長に限定するものではなく、例えば、256ビット鍵を用いる乱数生成器を用いてもよい。詳細な説明は省略するが、その際には、小片サイズSLenを32の倍数とし、且つ、16バイト単位メッセージに代わって、32バイト単位メッセージを使うことでデータ分割及び復元が可能である。
【0048】
図5、図7における擬似乱数生成器Eを、128ビット鍵、128ビット初期値を入力としつつ、小片サイズSLenを32の倍数とし、且つ、32バイト単位メッセージを使う構成としてもよい。この場合には、各々の32バイト単位メッセージを16バイトデータに二分割し、一方を128ビット鍵、128ビット初期値の擬似乱数生成器Eの鍵入力、他方を、任意の定数であるT1〜Tn、Tn+1〜T2n、IVの代わりの初期値入力として用いることが可能である。
【0049】
図5、図7において、Eを擬似乱数生成器としたが、このEをブロック暗号器としてもよい。図5におけるE501、502、及び図7におけるE701、702は、所謂カウンタモードのブロック暗号器を用いても構成できる。又、図5に示す構成は、図11のようにしてもよい。図11は、図5に示した本実施例に係る秘密分散方法のデータ分割動作のデータ構造詳細図の別形態である。図11において、E(1101)はCBCモードのブロック暗号器である。メッセージM’に対し、CBCモードのブロック暗号を施してC1を得、同様にC1に対し、CBCモードのブロック暗号を施してC2を得、以下繰り返して、最終的にC11を得る。図中、他の構成は図5と同一であり、説明は省略する。又、データ復元については図8及び図9を用いた説明と同様であるので、説明は省略する。
【0050】
以上、本実施例によれば、メッセージMを単純な等分割ではなく、著しく偏って分割したとしても、データ大片から多くの情報が漏洩する危険性を避けることができる。
【0051】
また本実施例によれば、専用の真性乱数生成器を具備することなく、安全な秘密分散が可能となることを特徴とする情報処理装置を実現可能である。
【実施例2】
【0052】
本実施例を、実施例1と異なる部分を中心に説明する。
【0053】
図12は、本実施例に係る秘密分散方法のデータ分割動作の概要フローチャートである。
【0054】
情報処理装置101は、キーボードやマウスの類の入力装置を介して行なわれるユーザの指示に従い、小片サイズSLenを指定する(ステップ1201)。以下、ステップ201以下に従い、データ分割処理を実行する。ステップ201以下のデータ分割手順、及び、データ復元手順は、図3〜図9に示した実施例1と同様であり、説明は省略する。又、本実施例に係る情報処理装置のソフトウェア構成の概略についても図10に示した実施例1と同様であり、説明は省略する。
【0055】
図13は、本実施例に係る秘密分散方法におけるユーザ操作画面の概略図である。例えば、プルダウンメニューのような形式1301で、小片サイズSLenを具体的に選択指定してもよいし、スクロールバーのような形式1302で、小片サイズSLenを大小直感的に指定してもよい。又、実施例1の説明で示したように、小片サイズは暗号化の繰り返し数と比例関係にある。したがって、小片サイズを直接指定する代わりに、暗号強度、ここでは暗号鍵長を指定1303することで、間接的に小片サイズを指定してもよい。
【0056】
このような構成により、本実施例に掛かる情報処理装置の不揮発性記憶媒体104、外部不揮発性記憶媒体105に記憶するデータの分割サイズをユーザが任意に決定することが可能となる。これにより、不揮発性記憶媒体104、外部不揮発性記憶媒体105の容量に応じて効率的なデータ分割が可能となると共に、任意のデータ毎にユーザが暗号化に用いる鍵長を任意に設定可能となることから、データの重要度に応じて、安全性の強弱を設定可能となる効果が得られる。
【0057】
以上、本実施例によれば、記憶媒体の容量に応じた効率的なデータ分割、及びデータ毎の安全性強度設定が可能である。
【実施例3】
【0058】
本実施例を、実施例1と異なる部分を中心に説明する。
【0059】
図14は、本実施例に係る秘密分散方法のデータ分割動作の概要フローチャートである。情報処理装置101は、ステップ201〜205に従い、データ分割処理を行なう。ステップ201〜205のデータ分割手順は、図3〜図7に示した実施例1と同様であり、説明は省略する。
【0060】
次に、C11及びC21を対象にデータのランダム化を行ない、C11’及びC21’を得る。分割データ大片W1、分割データ小片W2の、C11及びC21をそれぞれC11’及びC21’で置き換えることで、最終的な分割データ大片W1、分割データ小片W2を得る(ステップ1401)。
【0061】
図15は、本実施例に係る秘密分散方法のデータ分割動作のデータ構造詳細図である。図中に、図14のフローチャートに示した処理ステップ1401を示す。BLenバイトの暗号化データC11,SLenバイトの暗号化データC21に対して、ステップ203に示したのと同様の手順により、データの抜き取り、及び、並べ替えを施し、C11’及びC21’を得る。データ抜き取りのバイト数又はビット数は、図7に示した剰余値に格納する。C11は、擬似乱数生成器Eから出力される乱数列のビット毎排他的論理和を繰り返すことで得られているが、C11’は、途中のデータを抜き取っていることから、剰余値を元にして正しいC11を復元することなしに擬似乱数生成器Eから出力される乱数列をそのままビット毎排他的論理和処理を行なっても、途中でデータと対応する適切な乱数値との位相ずれが生じ、正しい復号が行なわれない。これにより、暗号の攻撃耐性が向上する効果が得られる。
【0062】
尚、データ復元手順は、図8、及び図9に示した手順と概略同様であるが、図8のステップ802に先立ち、C11’及びC21’からC11及びC21を得る処理が必要である点が異なっている。
【0063】
以上、本実施例によれば、暗号の攻撃耐性が向上する。。
【0064】
本実施形態によれば、情報処理装置において、専用の真性乱数生成器を具備することなく、情報漏洩を防止し、安全にデータを保管する秘密分散が可能となる。
【図面の簡単な説明】
【0065】
【図1】実施例1に係る情報処理装置の概略構成図である。
【図2】実施例1に係る秘密分散方法のデータ分割動作の概要フローチャートである。
【図3】実施例1に係る秘密分散方法のデータ分割動作のデータ構造概要図である。
【図4】実施例1に係る秘密分散方法のデータ分割動作のデータ構造詳細図である。
【図5】実施例1に係る秘密分散方法のデータ分割動作のデータ構造詳細図である。
【図6】実施例1に係る情報処理装置のデータ分割動作のデータ構造詳細図である。
【図7】実施例1に係る情報処理装置のデータ分割動作のデータ構造詳細図である。
【図8】実施例1に係る秘密分散方法のデータ復元動作の概要フローチャートである。
【図9】実施例1に係る秘密分散方法のデータ復元動作のデータ構造概要図である。
【図10】実施例1に係る情報処理装置のソフトウェア構成の概略図である。
【図11】実施例1に係る秘密分散方法のデータ分割動作のデータ構造詳細図の別形態である。
【図12】実施例2に係る秘密分散方法のデータ分割動作の概要フローチャートである。
【図13】実施例2に係る秘密分散方法におけるユーザ操作画面の概略図である。第
【図14】実施例3に係る秘密分散方法のデータ分割動作の概要フローチャートである。
【図15】実施例3に係る情報処理装置のデータ分割動作のデータ構造詳細図である。
【符号の説明】
【0066】
101:情報処理装置、102:CPU、103:揮発性記憶装置、104:不揮発性記憶装置、105:外部不揮発性記憶媒、106:外部不揮発性記憶媒体制御装置、107:データバス、1001:ユーザアプリケーション、1002:秘密分散処理部、1003:ファイルシステムインタフェース部、1004:データ分割、復元処理部、1005:ファイルシステム、1006:デバイスドライバ層、1007:物理記憶デバイス、1008:物理記憶デバイス、1009:ユーザデータ、1010:分割データ大片、1011:分割データ小片。

【特許請求の範囲】
【請求項1】
情報処理装置が、データを二分割し、前記二分割された一方のデータを基にして第1の乱数の種を生成し、前記第1の乱数の種を用いて第1の複数の異なる擬似乱数列を生成し、前記第1の複数の異なる擬似乱数列を用いて、前記二分割された他方のデータを多重に暗号化し、前記他方のデータを基にして第2の乱数の種を生成し、前記第2の乱数の種を用いて第2の複数の異なる擬似乱数列を生成し、前記第2の複数の異なる擬似乱数列を用いて、前記一方のデータを多重に暗号化することを特徴とする秘密分散方法。
【請求項2】
前記他方のデータの暗号化は、前記他方のデータと前記第1の複数の異なる擬似乱数列とを順にビット毎の排他的論理和を求め、前記一方のデータの暗号化は、前記一方のデータと前記第2の複数の異なる擬似乱数列とを順にビット毎の排他的論理和を求めることを特徴とする請求項1記載の秘密分散方法。
【請求項3】
前記データをシャッフルし、前記二分割することを特徴とする請求項2記載の秘密分散方法。
【請求項4】
前記情報処理装置は、前記暗号化した一方及び他方のデータを、互いに異なる記憶装置に格納することを特徴とする請求項2記載の秘密分散方法。
【請求項5】
データを二分割した一方のデータを基にした第1の乱数の種と任意の数値とを入力し、第1の複数の異なる擬似乱数列を生成する第1の乱数発生器、前記データを二分割した他方のデータを、前記第1の乱数発生器により生成された前記第1の複数の異なる擬似乱数列を用いて多重に暗号化する第1の暗号器、前記一方のデータを基にした第2の乱数の種と任意の数値とを入力し、第2の複数の異なる擬似乱数列を生成する第2の乱数発生器、および、前記他方のデータを、前記第2の乱数発生器により生成された前記第2の複数の異なる擬似乱数列を用いて多重に暗号化する第2の暗号器を有することを特徴とする秘密分散装置。
【請求項6】
前記第1の暗号器は、前記他方のデータと前記第1の複数の異なる擬似乱数列とを順にビット毎の排他的論理和を出力する第1の排他論理回路群であり、前記第2の暗号器は、前記一方のデータと前記第2の複数の異なる擬似乱数列とを順にビット毎の排他的論理和を出力する第2の排他論理回路群であることを特徴とする請求項5記載の秘密分散装置。
【請求項7】
前記第1の暗号器により暗号化された前記他方のデータを格納する第1の記憶装置と前記第2の暗号器により暗号化された前記一方のデータを格納する第2の記憶装置とをさらに有することを特徴とする請求項6記載の秘密分散装置。
【請求項8】
前記一方のデータの長さを入力する入力装置をさらに有することを特徴とする請求項6記載の秘密分散装置。
【請求項9】
前記第1の暗号器は、前記他方のデータを、前記第1の複数の異なる擬似乱数列を順次用いて多重に暗号化するブロック暗号器群であることを特徴とする請求項5記載の秘密分散装置。
【請求項10】
データを二分割し、前記二分割された一方のデータを基にして第1の乱数の種を生成し、前記第1の乱数の種を用いて第1の複数の異なる擬似乱数列を生成し、前記第1の複数の異なる擬似乱数列を用いて、前記二分割された他方のデータを多重に暗号化し、前記他方のデータを基にして第2の乱数の種を生成し、前記第2の乱数の種を用いて第2の複数の異なる擬似乱数列を生成し、前記第2の複数の異なる擬似乱数列を用いて、前記一方のデータを多重に暗号化する手順をコンピュータに実行させることを特徴とする秘密分散プログラム。
【請求項11】
前記他方のデータの暗号化は、前記他方のデータと前記第1の複数の異なる擬似乱数列とを順にビット毎の排他的論理和を求め、前記一方のデータの暗号化は、前記一方のデータと前記第2の複数の異なる擬似乱数列とを順にビット毎の排他的論理和を求める手順をコンピュータに実行させることを特徴とする請求項10記載の秘密分散プログラム。
【請求項12】
前記データをシャッフルし、前記二分割する手順をコンピュータに実行させることを特徴とする請求項11記載の秘密分散プログラム。
【請求項13】
前記情報処理装置は、前記暗号化した一方及び他方のデータを、互いに異なる記憶装置に格納する手順をコンピュータに実行させることを特徴とする請求項11記載の秘密分散プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate