(57)【要約】【課題】  情報の盗難若しくは漏洩を確実に防止するためのシステムを提供することである。【解決手段】  情報の登録先を決定する情報登録先決定部２と、分散単位情報を生成する分散単位情報生成部３と、分散単位情報生成部３と接続可能な複数のストレージグリッドＳとからなり、分散単位情報生成部３は、元データを多重化するとともに、個々の分散単位情報ｄに、元データを構成する全要素が含まれないようにするとともに、同一の要素が重複しないようにして、上記多重化したデータを、複数の分散単位情報に分割して複数の分散単位情報を生成し、情報登録先決定部が生成した、分散単位情報とその登録先であるストレージグリッドとの対応関係にかかわる管理情報に基づいて、上記分散単位情報を個々のストレージグリッドに登録する。
2008056667.tif 000002
【特許請求の範囲】
【請求項１】
情報の登録先を決定する情報登録先決定部と、分散単位情報を生成する分散単位情報生成部と、この分散単位情報生成部と接続可能な複数のストレージグリッドとからなり、上記情報登録先決定部は、分散単位情報生成部で生成される分散単位情報ごとにその登録先のストレージグリッドを特定する機能と、分散単位情報とその登録先であるストレージグリッドとの対応関係にかかわる管理情報を生成する機能と、生成した管理情報を分散単位情報生成部へ通知する機能とを備え、上記分散単位情報生成部は、予め設定された単位データ長または予め設定された分割数を基準にして元データを分割して、Ｎ∋ε個の要素からなるベクトルＡ＝（ａ１，ａ２・・・，ａε）とする機能と、当該分散単位情報生成部に入力された多重化数μ∈Ｎあるいは予め設定された多重化数μ∈Ｎのいずれかに基づいて、上記ベクトルＡをμ倍してＡ＝Ａ１＝Ａ２＝・・・＝ＡμであるベクトルμＡ＝（Ａ１‖Ａ２‖・・・‖Ａμ）とする機能と、この多重化されたベクトルμＡの全要素を、当該分散単位情報生成部に入力された分散数τ∈Ｎあるいは予め設定された分散数τ∈Ｎに基づいて、上記ベクトルＡの全要素が含まれず、かつ、ベクトルＡの同一要素が重複しないように、τ個の分散単位情報に分ける機能と、上記情報登録先決定部から通知された分散単位情報とストレージグリッドとの対応関係を定めた管理情報に基づいて上記各分散単位情報を対応するストレージグリッドへ登録する機能とを備えた情報管理システム。
【請求項２】
上記情報登録先決定部は、条件１または条件２のいずれかを満たす上記要素数ε、多重化数μおよび分散数τの組み合わせを決定する機能と、決定した要素数εと多重化数μとの組を出力する機能とを備えるとともに、上記条件１は、分散数τと要素数εとの最大公約数ｑが１のとき、多重化数μ＜分散数τを満たすものであり、上記条件２は、分散数τと要素数εとの最大公約数ｑが１でないとき、上記分散数τおよび要素数εが互いに割り切れない関係であって、かつ、多重化数μ≦（分散数τ／最大公約数ｑ）を満たすものである請求項１に記載の情報管理システム。
【請求項３】
上記分散単位情報生成部は、元データを多重化数μで多重化したベクトルの全要素を、その要素順に、行方向あるいは列方向に並べ、それを列方向あるいは行方向に繰り返して、分散数τに応じた列数あるいは行数と、所要の行数または列数とからなるマトリクスを生成する機能と、このマトリクスの各列あるいは各行を、１の分散単位情報とする機能とを備えた請求項１または２記載の情報管理システム。
【請求項４】
管理情報を記憶する上記情報登録先決定部またはこの情報登録先決定部とは別の管理情報記憶部と、上記分散単位情報から元データを復元する情報復元部とを備え、この情報復元部は、各ストレージグリッドから分散単位情報を収集する機能と、上記管理情報を取得する機能と、上記管理情報から特定した配列順に基づいて、上記収集した分散単位情報を並べる機能とを備えた請求項１〜３のいずれか１に記載の情報管理システム。
【請求項５】
上記分散単位情報生成部に連係する暗号化部を備え、この暗号化部は、元データを暗号化する機能を備え、分散単位情報生成部は、暗号化部が暗号化したデータを多重化数μで多重化する機能を備えた請求項１〜４のいずれか１に記載の情報管理システム。
【請求項６】
平文入力部と、暗号化部と、擬似乱数生成部とからなり、擬似乱数生成部は、擬似乱数生成用のシードを、予め設定された情報量単位を基にして要素に分割する機能、これらの要素を行見出しおよび列見出しとしたマトリクスを生成する機能、このマトリクスにおける特定のセルを第１のセルとし、この第１のセルには、その第１のセルに対応する行見出しおよび列見出しの数値同士を加算し、その加算結果に対して予め定めたゼロ以外の数ｎを法とする演算を行ない、その演算結果をあてはめる機能、上記マトリクスにおける上記第１のセル以外のセルには、対応する行および列にあてはめられた数値のうち、少なくとも３つ以上の数値を加算することによって、多重マルコフ過程を形成し、ゼロ以外の数ｎを法とする演算を行ない、その演算結果をあてはめる機能、上記各数値をあてはめた各セルの数値を、列単位または行単位で、列順または行順に並べ替える機能を実行して擬似乱数を生成し、かつ、この擬似乱数生成部は、擬似乱数のデータ長が上記平文のデータ長以上の場合には、この擬似乱数を暗号化部に対して出力する一方、生成された擬似乱数のデータ長が上記平文のデータ長未満の場合には、上記擬似乱数生成部は、上記生成された擬似乱数の一部または全ての要素を、行見出しまたは列見出しのいずれか一方若しくは両方としてマトリクスを生成する機能、このマトリクスにおける特定のセルを第１のセルとし、この第１のセルには、その第１のセルに対応する行見出しおよび列見出しの数値同士を加算し、その加算結果に対して予め定めたゼロ以外の数ｎを法とする演算を行ない、その演算結果をあてはめる機能、上記マトリクスにおける上記第１のセル以外のセルには、対応する行および列にあてはめられた数値のうち、少なくとも３つ以上の数値を加算し、その加算結果に対してｎを法とする演算を行ない、その演算結果をあてはめる機能、上記各数値をあてはめた各セルの数値を、列単位または行単位で、列順または行順に並べ替える機能を実行して擬似乱数を生成するとともに、この生成された擬似が平文のデータ長以上になるまで上記擬似乱数生成機能を繰り返し実行し、平文のデータ長以上の擬似乱数が生成されたとき、その擬似乱数を上記暗号化部に対して出力し、さらに、上記暗号化部は、擬似乱数生成部から入力された擬似乱数のベクトルを暗号キーとして用い、上記平文と暗号キーとの直和を演算して、暗号化する暗号化システム。
【請求項７】
平文入力部と、暗号化部と、擬似乱数生成部とからなり、上記擬似乱数生成部は、平文入力部から入力された平文ごとに対応した可変シードを用いて、上記平文のデータ長以上のデータ長を有する可変擬似乱数を生成する機能を備え、上記暗号化部は、上記生成された可変擬似乱数のベクトルと予め設定された固定ベクトルとを直和して暗号キーを生成する機能と、生成した暗号キーと上記平文との直和を演算して暗号化する機能とを備えた暗号化システム。
【請求項８】
平文入力部と、暗号化部と、擬似乱数生成部とからなり、上記擬似乱数生成部は、平文入力部から入力された平文に対応し、平文ごとに設定する可変シードを用いて、上記平文のデータ長以上のデータ長を有する可変擬似乱数を生成する機能と、予め設定された固定シードを用いて、上記平文のデータ長以上のデータ長を有する可変擬似乱数を生成する機能とを備え、上記暗号化部は、上記生成された両可変擬似乱数からなるベクトルを直和して暗号キーを生成する機能と、生成した暗号キーと上記平文との直和を演算して暗号化する機能とを備えた暗号化システム。
【請求項９】
上記擬似乱数生成部は、平文入力部から入力された平文に対応させた可変のベクトルと予め設定された固定のベクトルとを直和して上記可変シードを生成する機能を備えた請求項７または８に記載の暗号化システム。
【請求項１０】
上記擬似乱数生成部は、擬似乱数生成用のシードを、予め設定された情報量単位を基にして要素に分割する機能、これらの要素を行見出しおよび列見出しとした演算表（以下にマトリクスという）を生成する機能、このマトリクスにおける特定のセルを第１のセルとし、この第１のセルには、その第１のセルに対応する行見出しおよび列見出しの数値同士を加算し、その加算結果に対して予め定めたゼロ以外の数ｎを法とする演算を行ない、その演算結果をあてはめる機能、上記マトリクスにおける上記第１のセル以外のセルには、対応する行および列にあてはめられた数値のうち、少なくとも３つ以上の数値を加算することによって、多重マルコフ過程を形成し、ゼロ以外の数ｎを法とする演算を行ない、その演算結果をあてはめる機能、上記各数値をあてはめた各セルの数値を、列単位または行単位で、列順または行順に並べ替える機能を実行して擬似乱数を生成し、かつ、この擬似乱数生成部は、擬似乱数のデータ長が上記平文のデータ長以上の場合には、この擬似乱数を暗号化部に対して出力する一方、生成された擬似乱数のデータ長が上記平文のデータ長未満の場合には、上記擬似乱数生成部は、上記生成された擬似乱数の一部または全ての要素を、行見出しまたは列見出しのいずれか一方若しくは両方としてマトリクスを生成する機能、このマトリクスにおける特定のセルを第１のセルとし、この第１のセルには、その第１のセルに対応する行見出しおよび列見出しの数値同士を加算し、その加算結果に対して予め定めたゼロ以外の数ｎを法とする演算を行ない、その演算結果をあてはめる機能、上記マトリクスにおける上記第１のセル以外のセルには、対応する行および列にあてはめられた数値のうち、少なくとも３つ以上の数値を加算し、その加算結果に対してｎを法とする演算を行ない、その演算結果をあてはめる機能、上記各数値をあてはめた各セルの数値を、列単位または行単位で、列順または行順に並べ替える機能を実行して擬似乱数を生成するとともに、この生成された擬似乱数が平文のデータ長以上になるまで上記擬似乱数生成機能を繰り返し実行し、平文のデータ長以上の擬似乱数が生成されたとき、その擬似乱数を上記暗号化部に対して出力する請求項７〜９のいずれか１に記載の暗号化システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、電子情報の盗難若しくは漏洩を確実に防止するためのシステムに関する。
【背景技術】
【０００２】
電子文書化した機密情報が、盗まれたり破壊されたりすることがないようにするため、様々な対策が採られている。例えば、上記機密情報に、簡単にアクセスできないようにし、アクセス時には認証情報の入力を求める方法が知られている。
また、データにアクセスされたり、あるいはインターセプトされたりしても、内容が知られないように、元データを暗号化してから登録したり、暗号化と、認証の両方を利用したりしている。
【特許文献１】特開平１０−２４０５９５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、従来から知られているいずれのシステムも、不正アクセスを完全に防止することはできず、しかも、不正アクセスされた場合には、暗号化情報も解読されてしまうことがあった。そこで、現状では、たとえ、不正にアクセスされても、情報が漏洩しないシステムが求められている。【０００４】
この発明の目的は、電子情報の盗難若しくは漏洩を確実に防止するためのシステムを提供することである。
【課題を解決するための手段】
【０００５】
第１の発明は、情報の登録先を決定する情報登録先決定部と、分散単位情報を生成する分散単位情報生成部と、この分散単位情報生成部と接続可能な複数のストレージグリッドとからなり、上記情報登録先決定部は、分散単位情報生成部で生成される分散単位情報ごとにその登録先のストレージグリッドを特定する機能と、分散単位情報とその登録先であるストレージグリッドとの対応関係にかかわる管理情報を生成する機能と、生成した管理情報を分散単位情報生成部へ通知する機能とを備え、上記分散単位情報生成部は、予め設定された単位データ長または予め設定された分割数を基準にして元データを分割して、Ｎ∋ε個の要素からなるベクトルＡ＝（ａ１，ａ２・・・，ａε）とする機能と、当該分散単位情報生成部に入力された多重化数μ∈Ｎあるいは予め設定された多重化数μ∈Ｎのいずれかに基づいて、上記ベクトルＡをμ倍してＡ＝Ａ１＝Ａ２＝・・・＝ＡμであるベクトルμＡ＝（Ａ１‖Ａ２‖・・・‖Ａμ）とする機能と、この多重化されたベクトルμＡの全要素を、当該分散単位情報生成部に入力された分散数τ∈Ｎあるいは予め設定された分散数τ∈Ｎに基づいて、上記ベクトルＡの全要素が含まれず、かつ、ベクトルＡの同一要素が重複しないように、τ個の分散単位情報に分ける機能と、上記情報登録先決定部から通知された分散単位情報とストレージグリッドとの対応関係を定めた管理情報に基づいて上記各分散単位情報を対応するストレージグリッドへ登録する機能とを備えた点に特徴を有する。
なお、上記多重化数μ、分散数τ及び要素数εのそれぞれは自然数であり、しかも、分散数τは２以上でなければならない。【０００６】
また、上記情報登録先決定部と分散単位情報生成部とは、同一装置に設けてもかまわないし、別装置として通信回線を介して接続するようにしてもかまわない。
さらに、各ストレージグリッドと分散単位情報生成部とは、通信手段を介して接続可能にしてもよいし、あるいは、それらを直接接続可能にしてもよいが、いずれにしても、分散化の効果を発揮させるためには、ストレージグリッドと分散単位情報生成部とは、それぞれ別なハードウエアに搭載し、物理的距離ができるだけ離れるようにして設置し、別々に管理することが望ましい。
上記「‖」は、ベクトルを結合する記号であり、例えば（Ａ１‖Ａ２）、ベクトルＡ１の次に、ベクトルＡ２を、その順番を変えないで並べて結合した数列ベクトルのことである。【０００７】
第２の発明は、第１の発明を前提とし、上記情報登録先決定部は、条件１または条件２のいずれかを満たす上記要素数ε、多重化数μおよび分散数τの組み合わせを決定する機能と、決定した要素数εと多重化数μとの組を出力する機能とを備えるとともに、上記条件１は、分散数τと要素数εとの最大公約数ｑが１のとき、多重化数μ＜分散数τを満たすものであり、上記条件２は、分散数τと要素数εとの最大公約数ｑが１でないとき、上記分散数τおよび要素数εが互いに割り切れない関係であって、かつ、多重化数μ≦（分散数τ／最大公約数ｑ）を満たすものである点に特徴を有する。【０００８】
第３の発明は、上記第１または第２の発明を前提とし、上記分散単位情報生成部は、元データを多重化数μで多重化したベクトルの全要素を、その要素順に、行方向あるいは列方向に並べ、それを列方向あるいは行方向に繰り返して、分散数τに応じた列数あるいは行数と、所要の行数または列数とからなるマトリクスを生成する機能と、このマトリクスの各列あるいは各行を、１の分散単位情報とする機能とを備えた点に特徴を有する。【０００９】
第４の発明は、第１〜第３の発明を前提とし、管理情報を記憶する上記情報登録先決定部またはこの情報登録先決定部とは別の管理情報記憶部と、上記分散単位情報から元データを復元する情報復元部とを備え、この情報復元部は、各ストレージグリッドから分散単位情報を収集する機能と、上記管理情報を取得する機能と、上記管理情報から特定した配列順に基づいて、上記収集した分散単位情報を並べる機能とを備えた点に特徴を有する。
なお、上記情報復元部が、ストレージグリッドから分散単位情報を収集するためには、情報復元部が自らストレージグリッドへアクセスして情報を収集する場合と、上記情報登録先決定部または管理情報記憶部からの指示に基づいて、ストレージグリッドが、必要な情報を情報復元部へ送信する場合とがある。【００１０】
第５の発明は、上記第１〜第４の発明を前提とし、上記分散単位情報生成部に連係する暗号化部を備え、この暗号化部は、元データを暗号化する機能を備え、分散単位情報生成部は、暗号化部が暗号化したデータを多重化数μで多重化する機能を備えた点に特徴を有する。【００１１】
第６の発明の暗号化システムは、平文入力部と、暗号化部と、擬似乱数生成部とからなり、擬似乱数生成部は、擬似乱数生成用のシードを、予め設定された情報量単位を基にして要素に分割する機能、これらの要素を行見出しおよび列見出しとしたマトリクスを生成する機能、このマトリクスにおける特定のセルを第１のセルとし、この第１のセルには、その第１のセルに対応する行見出しおよび列見出しの数値同士を加算し、その加算結果に対して予め定めたゼロ以外の数ｎを法とする演算を行ない、その演算結果をあてはめる機能、上記マトリクスにおける上記第１のセル以外のセルには、対応する行および列にあてはめられた数値のうち、少なくとも３つ以上の数値を加算することによって、多重マルコフ過程を形成し、ゼロ以外の数ｎを法とする演算を行ない、その演算結果をあてはめる機能、上記各数値をあてはめた各セルの数値を、列単位または行単位で、列順または行順に並べ替える機能を実行して擬似乱数を生成し、かつ、この擬似乱数生成部は、擬似乱数のデータ長が上記平文のデータ長以上の場合には、この擬似乱数を暗号化部に対して出力する一方、生成された擬似乱数のデータ長が上記平文のデータ長未満の場合には、上記擬似乱数生成部は、上記生成された擬似乱数の一部または全ての要素を、行見出しまたは列見出しのいずれか一方若しくは両方としてマトリクスを生成する機能、このマトリクスにおける特定のセルを第１のセルとし、この第１のセルには、その第１のセルに対応する行見出しおよび列見出しの数値同士を加算し、その加算結果に対して予め定めたゼロ以外の数ｎを法とする演算を行ない、その演算結果をあてはめる機能、上記マトリクスにおける上記第１のセル以外のセルには、対応する行および列にあてはめられた数値のうち、少なくとも３つ以上の数値を加算し、その加算結果に対してｎを法とする演算を行ない、その演算結果をあてはめる機能、上記各数値をあてはめた各セルの数値を、列単位または行単位で、列順または行順に並べ替える機能を実行して擬似乱数を生成するとともに、この生成された擬似が平文のデータ長以上になるまで上記擬似乱数生成機能を繰り返し実行し、平文のデータ長以上の擬似乱数が生成されたとき、その擬似乱数を上記暗号化部に対して出力し、さらに、上記暗号化部は、擬似乱数生成部から入力された擬似乱数のベクトルを暗号キーとして用い、上記平文と暗号キーとの直和を演算して、暗号化する点に特徴を有する。
上記多重マルコフ過程とは、離散時間的あるいは連続時間的なマルコフ連鎖のことである。【００１２】
第７の発明は、平文入力部と、暗号化部と、擬似乱数生成部とからなり、上記擬似乱数生成部は、平文入力部から入力された平文ごとに対応した可変シードを用いて、上記平文のデータ長以上のデータ長を有する可変擬似乱数を生成する機能を備え、上記暗号化部は、上記生成された可変擬似乱数のベクトルと予め設定された固定ベクトルとを直和して暗号キーを生成する機能と、生成した暗号キーと上記平文との直和を演算して暗号化する機能とを備えた点に特徴を有する。【００１３】
第８の発明は、平文入力部と、暗号化部と、擬似乱数生成部とからなり、上記擬似乱数生成部は、平文入力部から入力された平文に対応し、平文ごとに設定する可変シードを用いて、上記平文のデータ長以上のデータ長を有する可変擬似乱数を生成する機能と、予め設定された固定シードを用いて、上記平文のデータ長以上のデータ長を有する可変擬似乱数を生成する機能とを備え、上記暗号化部は、上記生成された両可変擬似乱数からなるベクトルを直和して暗号キーを生成する機能と、生成した暗号キーと上記平文との直和を演算して暗号化する機能とを備えた点に特徴を有する。【００１４】
第９の発明の暗号化システムは、上記第７、第８の発明を前提とし、上記擬似乱数生成部は、平文入力部から入力された平文に対応させた可変のベクトルと予め設定された固定のベクトルとを直和して上記可変シードを生成する機能を備えた点に特徴を有する。【００１５】
第１０の発明は、上記第７〜９の発明を前提とし、上記擬似乱数生成部は、擬似乱数生成用のシードを、予め設定された情報量単位を基にして要素に分割する機能、これらの要素を行見出しおよび列見出しとした演算表（以下にマトリクスという）を生成する機能、このマトリクスにおける特定のセルを第１のセルとし、この第１のセルには、その第１のセルに対応する行見出しおよび列見出しの数値同士を加算し、その加算結果に対して予め定めたゼロ以外の数ｎを法とする演算を行ない、その演算結果をあてはめる機能、上記マトリクスにおける上記第１のセル以外のセルには、対応する行および列にあてはめられた数値のうち、少なくとも３つ以上の数値を加算することによって、多重マルコフ過程を形成し、ゼロ以外の数ｎを法とする演算を行ない、その演算結果をあてはめる機能、上記各数値をあてはめた各セルの数値を、列単位または行単位で、列順または行順に並べ替える機能を実行して擬似乱数を生成し、かつ、この擬似乱数生成部は、擬似乱数のデータ長が上記平文のデータ長以上の場合には、この擬似乱数を暗号化部に対して出力する一方、生成された擬似乱数のデータ長が上記平文のデータ長未満の場合には、上記擬似乱数生成部は、上記生成された擬似乱数の一部または全ての要素を、行見出しまたは列見出しのいずれか一方若しくは両方としてマトリクスを生成する機能、このマトリクスにおける特定のセルを第１のセルとし、この第１のセルには、その第１のセルに対応する行見出しおよび列見出しの数値同士を加算し、その加算結果に対して予め定めたゼロ以外の数ｎを法とする演算を行ない、その演算結果をあてはめる機能、上記マトリクスにおける上記第１のセル以外のセルには、対応する行および列にあてはめられた数値のうち、少なくとも３つ以上の数値を加算し、その加算結果に対してｎを法とする演算を行ない、その演算結果をあてはめる機能、上記各数値をあてはめた各セルの数値を、列単位または行単位で、列順または行順に並べ替える機能を実行して擬似乱数を生成するとともに、この生成された擬似乱数が平文のデータ長以上になるまで上記擬似乱数生成機能を繰り返し実行し、平文のデータ長以上の擬似乱数が生成されたとき、その擬似乱数を上記暗号化部に対して出力する点に特徴を有する。【００１６】
なお、上記第６〜第１０の発明において、平文とは、暗号化する前のデータのことである。例えば、安全に保存したい元データをそのまま暗号化する場合は、その元データが平文であるが、元データを多重化したり、分割したり、何らかの加工を加えてから暗号化する場合は、加工後のデータを平文という。また、上記平文には、テキストデータだけでなく、画像データや音データなどが含まれる。
さらに、上記可変擬似乱数、可変シードおよび可変のベクトルの「可変」とは、平文ごとに設定したり、生成したりするものという意味で用い、「固定」は、平文には関係なく固定的に設定されるものの意味である。【００１７】
すなわち、上記可変ベクトルは、平文ごとに設定するベクトルであり、可変シードは、擬似乱数のシードであって、平文ごとに決まるシードである。
また、可変擬似乱数は、暗号化の都度、平文ごとに生成される擬似乱数であり、上記可変シードを用いて生成する擬似乱数のほか、予め設定された固定のベクトルをシードとする場合においても、生成された擬似乱数はデータ長に応じて値が異なることから可変擬似乱数に含むものとする。
そして、上記固定ベクトルおよび固定のベクトルとは、予め設定した固定値であるベクトルである。
【発明の効果】
【００１８】
第１の発明によれば、個々の分散単位情報には、元データに基づいて生成した数列ベクトルの全要素が含まれず、かつ、上記ベクトルの要素が重複しないように含まれているので、この単位で、別々にストレージグリッドに登録したり、通信したりすることによって、元データの情報内容を盗まれることを防止できる。
しかも、一つのストレージグリッドには、元データから生成した数列ベクトルの要素の一部がとびとびに含まれているだけなので、分散単位情報の単位で情報を盗んでも、元データを復元することは１００％不可能である。全要素が整っていず、元データの情報が欠落しているので、数列ベクトルの要素を並べ替えても、元データを再生することはできない。すなわち、個々の分散単位情報範囲で、情報量的安全性を確保している。【００１９】
さらに、全てのストレージグリッドの情報を盗まれても、管理情報であるストレージグリッドと分散単位情報との対応関係が盗まれなければ、分散された要素の組み合わせを試さない限り、情報は盗まれない。分散して登録した分散単位情報の配列を、上記管理情報なしに予測するためには、配列の組み合わせを試す必要があるが、ストレージグリッドの個数をσとしたとき、分散単位情報の配列順を考慮した全ての組み合わせ数はσＰτとなり、そのエントロピーはｌｏｇ２（σＰτ）となる。従って、システムが備えたストレージグリッドの個数あるいは分散数τのいずれか一方または両方を大きくすれば、配列を試すための計算量が急激に増えることになる。【００２０】
一方で、現状のコンピュータの計算能力では、等価安全性が８０ビット（８０ビット安全性）以上であれば、計算量的に安全と考えられている。そこで、８０≦ｌｏｇ２（σＰτ）となるようなσとτを選べば、計算量的安全性も確保できると考えられる。例えば、σ＝τの場合、ｌｏｇ２（２４Ｐ２４）＜８０＜ｌｏｇ２（２５Ｐ２５）であることから、分散数τを２５以上となるようにすれば計算量的安全性が得られることになる。なお、等価安全性とは、暗号化方式を共通基準で評価するための値（暗号アルゴリズムの安全性を示す尺度）であり、対称鍵暗号方式即ち共通鍵暗号方式におけるエントロピーに等しい値である。米国立標準技術研究所（ＮＩＳＴ）のガイドライン（ＳＰ８００−５７等）では２０１０年を目処に８０ビット安全性を終了し、１１２ビット安全性を達成するよう勧告している。その場合、上記の例ではｌｏｇ２（３０Ｐ３０）＜１１２＜ｌｏｇ２（３１Ｐ３１）なのでτ≧３１となるようにするだけでこの基準は容易にクリアされると考えられる。
さらにまた、元データのベクトルを多重化数μで多重化しているので、（μ−１）個までのストレージグリッドの情報、すなわち、分散単位情報を破壊されても、残りのストレージグリッドに、全要素が記憶されているので、この情報から元データを再生することができる。従って、重要な情報を守ることができる。【００２１】
第２の発明によれば、各分散単位情報に、元データのベクトルＡの一部の要素しか含まれず、かつ、同一要素が重複して含まれないという条件を満たさなければならないが、この条件を満たすために、ベクトルＡの要素数ε、多重化数μおよび分散数τの組み合わせを、自動的に決定することができる。
第３の発明によれば、一つの分散単位情報に、同一の要素を重複しないように配列することが簡単にできるため、各分散単位情報に、上記ベクトルＡの一部の要素しか含まれず、かつ、ベクトルＡの同一要素が重複しないように要素を分けることが容易にできるようになる。【００２２】
第４の発明によれば、分散して登録した分散単位情報を収集して、元データを簡単に復元することができる。
第５の発明によれば、元データを暗号化してから、多重化し、分散単位データを生成するので、管理情報が盗まれるなどして分散単位情報の配列がわかったとしても、元データを復元することが困難になる。【００２３】
第６〜第１０の発明の暗号化システムによれば、規則性が予測困難な擬似乱数のベクトルを用いて暗号化することによって、暗号文の解読を計算量的もしくは情報理論的に解読困難なものにすることができる。
しかも、入力された平文に応じて、擬似乱数生成部が、平文ごとに擬似乱数を自動的に生成し、その擬似乱数で暗号キーを生成するようにしているので、暗号キーを平文に応じて可変にすることができる。異なる平文の暗号化に、同一の暗号キーを用いた場合には、そのキーで暗号化された暗号文を対比することによって暗号キーを予測できることがある。しかし、平文ごとに暗号キーを変更するようにすれば、暗号キーを予測することが不可能となり、暗号を見破られることがなくなる。平文ごとに異なる暗号キーを用いることになって、暗号キーを推測されることも防止できる。
このような暗号は、暗号キーがなければ、復号化して平文を生成することができないので、情報の漏洩を防止できる。
第６の発明によれば、平文のデータ長以上のデータ長を有する擬似乱数を自動的に生成できるので、解読され難い暗号化を効率的に行なうことができる。【００２４】
第７、第８の発明によれば、擬似乱数生成部で生成した可変擬似乱数を用いることによって平文ごとに、対応した暗号キーを生成することができる。
また、暗号キーを、可変擬似乱数と固定ベクトルまたは固定のベクトルをシードして生成した可変ベクトルとの和で生成するようにしているので、受信側にも、固定擬似乱数または固定シードを予め設定しておけば、暗号を送信する際には、可変シードのみを送信することによって、暗号の受信側で暗号キーを生成することができる。
このように、復号化側で暗号キーを生成できれば、暗号キーを通信する必要がなく、通信経路で暗号キーが盗まれる危険性がない。また、通信経路で、可変シードを盗んだとしても、予め設定された固定擬似乱数や、固定シードを盗まなければ、暗号キーを生成することは困難である。【００２５】
特に、第８の発明によれば、擬似乱数生成部によって、可変シードを用いて生成された可変擬似乱数と、固定シードを用いて生成された擬似乱数のベクトルとを直和して暗号キーを生成するようにしているので、平文のデータ長に応じたデータ長の大きな固定ベクトルを設定しておく場合と比べて、データ記憶の負荷を小さくできる。しかも、この発明で生成した暗号を通信する際には、暗号キーの代わりに可変シードのみを送ればよいので、配送コストも大幅に低減できる。【００２６】
また、第９の発明では、上記可変シードを、可変のベクトルと固定のベクトルとの和によって生成するようにしているので、可変シードをより見破られ難くすることができる。その結果、暗号文の安全性をさらに上げることができる。【００２７】
第１０の発明によれば、擬似乱数を生成するための演算には、多重マルコフ過程を形成したので、初期値鋭敏性と、一様性とを持ちながら、周期性がない擬似乱数を生成できるので、きわめて安全性が高い暗号化が可能になる。
【発明を実施するための最良の形態】
【００２８】
図１〜図７を用いてこの発明の情報管理システムの実施形態を説明する。
このシステムは、図１に示すように、情報登録先決定部２を有する管理サーバー１と、分散単位情報生成部４および情報復元部５を有するユーザー端末３と、この発明のストレージグリッドである複数のストレージグリッドＳ１，Ｓ２，Ｓ３，Ｓ４，・・・，Ｓσとからなる。
なお、上記各ストレージグリッドＳ１，Ｓ２，Ｓ３，Ｓ４，・・・，Ｓσは、ユーザー端末３からのアクセスに応じて全て同様に機能するので、以下の説明において、個々のストレージグリッドを区別して説明する必要がない場合には、全てのストレージグリッドに符号Ｓを用いる。各ストレージグリッドに区別が必要な場合には、Ｓ１，Ｓ２，Ｓ３，Ｓ４，・・・，Ｓσのように、Ｓに数字を付した符号を用いるものとする。そして、このシステムが備えているストレージグリッドＳの個数をσとする。【００２９】
上記ユーザー端末３は、この発明のシステムにおいて、安全に登録したい情報、この発明の元データをもっているユーザーが使用する端末であり、管理サーバー１および複数のストレージグリッドＳに接続可能である。そして、このユーザー端末３の分散単位情報生成部４と、情報復元部５とは、それぞれ、管理サーバー１の情報登録先決定部２および各ストレージグリッドＳにアクセス可能である。【００３０】
ただし、この発明のストレージグリッドとしては、上記のように通信手段１０に接続したサーバーに限らない。ユーザー端末３に接続できるデータ記憶手段ならどのようなものでもかまわない。
一方、上記管理サーバー１は、各ストレージグリッドＳから、ユーザーが登録したデータを入手できないようにしている。【００３１】
そして、上記ユーザー端末３の分散単位情報生成部４は、後で詳しく説明するが、情報を複数の単位に分割して分散単位情報を生成する機能と、生成した分散単位情報をそれぞれ、別々のストレージグリッドＳに登録する機能とを備えている。
また、ユーザー端末３の情報復元部５は、上記分散単位情報生成部４が生成し、各ストレージグリッドＳに分散して登録した分散単位情報を収集し、元データに復元する機能を備えている。【００３２】
さらに、上記管理サーバー１の情報登録先決定部２は、上記分散単位情報生成部４が生成した複数の分散単位情報の登録先を決定する機能を備えている。すなわち、どの分散単位情報をどのストレージグリッドＳへ登録すべきかを決定する。そして、各分散単位情報とストレージグリッドＳとの対応関係を、ユーザー端末３からのアクセスに応じて当該ユーザー端末３に通知する。
なお、上記情報登録先決定部２は、上記分散単位情報の具体的な内容ではなく、分散単位情報の単位特定コードや、単位名など、その情報の分散単位を特定することができる情報に登録先を対応付けるようにする。【００３３】
例えば、分散単位情報ごとに番号を付けて第１〜第τのグループとした場合、第１グループはストレージグリッドＳ１、第２グループはストレージグリッドＳ２、というように、対応関係を決める。
そして、分散単位情報のグループとストレージグリッドＳとの対応関係は、分散単位情報が生成されるごとに情報登録先決定部２がランダムに決定するようにしている。分散単位情報の登録先をランダムに決定するとは、分散単位情報生成部４が生成する分散単位情報の数分の登録先を、複数のストレージグリッドＳからランダムに選択するとともに、個々の分散単位情報とストレージグリッドとの対応付けをランダムに行なうということである。【００３４】
上記分散単位情報と登録先との対応関係が、そのまま分散単位情報の配列順に対応するので、この対応関係をランダムに決定することによって、計算量的に配列順の予測を困難にし、情報をより確実に守ることができる。
上記のようにして決定した、分散単位情報とストレージグリッドとの対応関係を定めた情報が、この発明の管理情報である。【００３５】
このステムによって、ユーザー端末３が生成した元データを安全に保存し、それを取り出す例を、以下に説明する。
はじめに、ユーザー端末３によって生成した元データから、上記分散単位情報生成部４が分散単位情報を生成する手順を説明する。そして、以下に説明する分散単位情報の生成手順は、ユーザー端末３の分散単位情報生成部４に予め設定したプログラムによって自動的に行なわれるものである。
なお、ここでは、元データは図２に示す「さみだれをあつめてはやしもがみがわばしょう」という４２バイトからなるデータとする。【００３６】
まず、分散単位情報生成部４は、上記元データを、予め設定された単位データ長からなる要素で構成されるベクトルＡとした場合の要素数εを算出する。この単位データ長は、上記分散単位情報生成部４が、分散単位情報を生成する際に、予め設定しておくものであるが、その大きさはいくらでもかまわないし、元データに応じて変更してもかまわない。この実施形態では、元データの１文字に対応する「２バイト」を上記単位データ長としている。
そこで、上記単位データ長の要素からなるベクトルＡは、図２に示すように、４２バイトの元データを、１文字に対応する単位データ長で区切ったものとなり、要素数ε＝２１個の要素からなるベクトルＡ＝（ａ１，ａ２，ａ３，・・・，ａ２１）となる。【００３７】
なお、上記単位データ長の分散単位情報生成部４への設定は、人が手入力で行なってもよいし、分散単位情報生成部４が、自動的に決定するようにしてもよい。あるいは、他の装置で単位データ長を決定して、その単位データ長をユーザー端末３の分散単位情報生成部４へ入力するようにしても良い。【００３８】
また、元データのデータ長と、単位データ長およびベクトルＡの要素数εには、（元データのデータ長）／（単位データ長）＝（要素数ε）の関係が成り立つ。そこで、分散単位情報生成部４は、必要な要素数εとするために、元データのデータ長を判断し、そのデータ長に応じて単位データ長を決定するようにしてもよい。
また、上記単位データ長を設定する代わりに、要素数εを予め設定しておくようにし、分散単位情報生成部４は、設定された要素数εに基づいて単位データ長を算出するようにしてもよい。【００３９】
次に、分散単位情報生成部４は、上記ベクトルＡを多重化数μで多重化する。この多重化数μは、予め、分散単位情報生成部４に設定しておいてもよいし、その都度、ユーザーが入力してもよく、さらに、他の装置で決定した数値を入力してもよい。
ここでは、多重化数μ＝２とし、ベクトルＡを２重化したベクトルのベクトル２Ａを生成する。このベクトルのベクトル２Ａは、Ａ＝Ａ１＝Ａ２とすると、｛Ａ１‖Ａ２｝となる。ここで、「‖」はベクトルを結合する記号であり、ベクトル２Ａは、図３に示すようにベクトルＡの要素「ａ１，ａ２，ａ３，・・・，ａ２１」を２回繰り返したものとなる。従って、この実施形態においては、この発明の多重化数μが２であり、ベクトル２Ａは、４２個の要素からなるベクトルとなる。【００４０】
このように、上記ベクトルＡを多重化したら、次に、この全要素を、分散数τ個の分散単位情報に分ける。なお、分散数τは、予め分散単位情報生成部４に設定しておいても良いし、その都度ユーザーが入力しても良く、さらに、他の装置で決定した数値を入力しても良い。ただし、以下には、分散数τ＝６とし、６個の分散単位情報を生成する場合について説明する。４２個の要素を６個の分散単位情報に分けて、各分散単位情報には７個の要素が含まれるようにするが、各分散単位情報には、上記ベクトルＡの全要素が含まれないようにするとともに、同一の要素が重複しないようにする。
上記４２個の要素を７個に分け、各分散単位情報に、ベクトルＡの全要素が含まれず、かつ、同一の要素が重複しないようにするために、例えば、図４に示すような７行６列のマトリクス（ｂｉｊ）の各セルに、上記全要素を、行列順に配置する。【００４１】
すなわち、上記要素ａ１，ａ２，ａ３，・・・，を、マトリクス（ｂｉｊ）のｂ１１から行方向へ順番に並べ、ｂ１６に、要素ａ６を配置したら、第２行の１列ｂ２１から行方向へ要素ａ７，ａ８，・・・を並べる。このように、行方向へ並べることを繰り返して、最後のセル、第７行第６列ｂ７６にａ２１をあてはめ、全ての要素を配置する。このようにすると、ｂ１１からｂ４３に、ベクトルＡの全要素が一通り配置され、ｂ４４からｂ７６に、再度、ベクトルＡの全要素が配置されることになる。そして、これらの要素で構成されるマトリクス（ｂｉｊ）の各列をそれぞれ、分散単位情報ｄ１，ｄ２，ｄ３，ｄ４，ｄ５，ｄ６とする。つまり、分散単位情報生成部４は、図５に示す６個の分散単位情報ｄ１，ｄ２，ｄ３，ｄ４，ｄ５，ｄ６を生成する。【００４２】
上記のようにして生成した個々の分散単位情報ｄ１，ｄ２，ｄ３，ｄ４，ｄ５，ｄ６には、それぞれ７個の要素が含まれるが、各分散単位情報ｄ１，ｄ２，ｄ３，ｄ４，ｄ５，ｄ６に、同一の要素が重複して含まれない。
上記ベクトルＡを多重化して生成したベクトルの全要素を、分散数τの分散単位情報に分ける方法は上記の方法に限らないが、マトリクス（ｂｉｊ）の行方向へ、各要素をベクトルＡ内の並び順に並べることによって、一つの分散単位情報に、ベクトルＡの全要素が含まれず、同じ要素が重複して含まれない分散単位情報を簡単に生成できる。【００４３】
また、上記多重化数μおよび分散数τは、どのようにして決めても良いが、「一つの分散単位情報に、ベクトルＡの全要素が含まれず、同じ要素が重複して含まれない」という条件を満たすように、上記多重化数μおよび分散数τを決める必要がある。この条件を満たすために、ベクトルＡの要素数ε、多重化数μおよび分散数τを、次の条件１または２のいずれかを満たすように決める。
上記条件１は、分散数τと要素数εとの最大公約数ｑが１のとき、多重化数μ＜分散数τであり、上記条件２は、分散数τと要素数εとの最大公約数ｑが１でないとき、上記分散数τおよび要素数εが互いに割り切れない関係であって、かつ、多重化数μ≦（分散数τ／最大公約数ｑ）である。
上記条件１または２を満たす、分散数τ、要素数ε、多重化数μを採用しなければならない。【００４４】
この実施形態では、管理サーバー１の情報登録先決定部２が、上記条件を満たす多重化数μと、分散数τとを決定する。
具体的には、ユーザー端末３に元データが入力されたら、分散単位情報生成部４は、上記の手順でベクトルＡを生成する。その際に、元データのデータ長と単位データ長とに基づいてベクトルＡの要素数εを算出する。分散単位情報生成部４が要素数εを算出したら、ユーザー端末３は、管理サーバー１へアクセスし、上記要素数εを送信する。要素数εを受信した管理サーバー１の情報登録先決定部２は、要素数εに応じて多重化数μ、分散数τを何通りか算定する。なお、上記分散数τは、このシステムのストレージグリッドＳの個数σを上限とする。【００４５】
実際には、上記要素数εに対応して、上記条件１または２のいずれかを満たす多重化数μと分散数τとの組み合わせが複数ある場合があるので、情報登録先決定部２は、可能な組み合わせを特定したら、それをユーザー端末３へ送信してそれを表示させ、その中からユーザーにひとつの組み合わせを選択させるようにする。
情報登録先決定部２が提示した多重化数μと分散数τとの組の中から、ユーザーがいずれかの組み合わせを選択した場合、その選択信号の入力によって対応する多重化数μと分散数τとが、分散単位情報生成部４に設定されるとともに、この設定された多重化数μは、管理サーバー１へも通知され、管理情報とともに情報登録先決定部２に記憶される。つまり、この実施形態では、上記情報登録先決定部２が管理情報を記憶する機能を備えているが、この情報登録先決定部２とは別の管理情報記憶部を備えてもよい。【００４６】
また、情報登録先決定部２は、分散単位情報と登録先との対応関係を特定した登録先対応テーブルを作成して、このテーブルを上記分散単位情報生成部４へ送信するようにしている。そして、情報登録先決定部２は、この登録先対応テーブルに、元データを特定するための情報を対応付けて管理情報として記憶する。
なお、上記登録先対応テーブルには、分散単位情報の配列順の情報も含まれている。【００４７】
分散単位情報生成部４は、上記のように決定された多重化数μおよび分散数τに基づき、図４に示すマトリクスを用いて、図５に示す分散単位情報ｄ１，ｄ２，ｄ３，ｄ４，ｄ５，ｄ６を生成する。このとき、上記ベクトルＡの要素数ε＝２１、多重化数μ＝２、分散数τ＝６は、上記条件２を満たしているので、各分散単位情報ｄ１，ｄ２，ｄ３，・・・には、ベクトルＡの全要素は含まれず、かつ、同一要素の重複もない。【００４８】
分散単位情報生成部４は、分散単位情報を生成したら、上記管理サーバー１の情報登録先決定部２から送信された登録先対応テーブルに基づいて各分散単位情報を登録する。例えば、情報登録先決定部２から、図６に示す分散単位情報と登録先ストレージグリッドＳとの登録先対応テーブルが送信された場合、分散単位情報生成部４は、図７に示すように、各ストレージグリッドＳに、各分散単位情報を登録する。すなわち、ストレージグリッドＳ１，Ｓ２，Ｓ３，Ｓ４，Ｓ５，Ｓ６に、それぞれ、７個の要素からなる分散単位情報ｄ３，ｄ２，ｄ６，ｄ４，ｄ５，ｄ１を登録する。【００４９】
そして、上記各ストレージグリッドＳに登録した分散単位情報には、この情報管理システムとは別の任意の認証システムを使用し、許可された者しかアクセスできないようにするが、それでも、不正アクセスによって分散単位情報が盗まれる可能性はある。しかし、このシステムでは、元データに対応したベクトルＡが、分散して登録されるので、いずれかのストレージグリッドＳから分散単位情報が盗まれたとしても、その中には、ベクトルＡの一部しか含まれていないことになる。そのため、一つのストレージグリッドＳから情報を盗んでも、それだけで元データを知ることはできない。つまり、個々のストレージグリッドＳあるいは個々の分散単位情報の範囲で、情報量的安全性を確保している。【００５０】
かりに、複数のストレージグリッドＳのセキュリティを破って、全ての分散単位情報を盗めたとしても、分散単位情報の配列が分からなければ、元データを突き止めることはできない。
つまり、上記のように複数のストレージグリッドＳに情報を分散して登録することによって、もしも、個々のストレージグリッドＳに登録された分散単位情報にアクセスされても、情報を守ることができる。【００５１】
また、分散して登録した分散単位情報の配列を、上記管理情報なしに予測するためには、配列の組み合わせを試す必要があるが、分散単位情報の配列順を考慮した全ての組み合わせ数はσＰτとなる。従って、システムが備えたストレージグリッドの個数σあるいは分散数τのいずれか一方または両方を大きくすれば、配列を試すための計算量が急激に増えることになる。
一方で、現状のコンピュータの計算能力では、エントロピーが８０以上であれば、計算量的安全と言われている。従って、２８０≦σＰτとなるようなσとτを選べば、計算量的安全性も確保できる。
例えば、ストレージグリッド個数σ＝分散数τの場合、２４Ｐ２４＜２８０＜２５Ｐ２５である。つまり、ストレージグリッドの個数σと、分散数τとを２５以上にすれば、エントロピーが８０を超えることになり、計算量的安全性を得られる。
また、エントロピー８０は、２８０＜１０００Ｐ８となるので、ストレージグリッドの個数σが１０００の場合には、分散数τが８で、計算量的安全性を得られる。【００５２】
次に、上記情報を登録したユーザーが、元データを復元する手順を説明する。
ユーザーが、ユーザー端末３の情報復元部５に対し、特定の情報の復元を指示すると、情報復元部５は、管理サーバー１の情報登録先決定部２へアクセスし、元データを特定するための情報を指定して登録先及び情報の配列順である登録先対応テーブルと、多重化数μとを問い合わせる。なお、上記情報復元部５の指示は、例えば、ユーザー認証によってユーザーが特定されると、そのユーザーの閲覧可能なファイル一覧を管理サーバー１がユーザーに送信し、その中からユーザーがファイルを特定することによって実行される。
情報登録先決定部２は、指定された元データを特定するための情報に対応付けて記憶している登録先対応テーブル（図６参照）と、多重化数μとを上記情報復元部５へ送信する。【００５３】
ここでは、図６に示す対応テーブルが情報復元部５へ送信されるので、情報復元部５は、この対応テーブルに従ってストレージグリッドＳ１〜Ｓ６から、それぞれ分散単位情報を収集する。このとき、管理サーバーがセッションＩＤと共に送信先情報とファイル特定情報をグリッドに送信し、それを受けてグリッドがユーザーに該当するファイルを送信する。ユーザー側システムは受信ファイルの正当性をセッションＩＤによって確認するようにしてもよい。そして、収集した６個の分散単位情報を、ｄ１〜ｄ６の順に並べ替えて、図４に示すマトリクス（ｂｉｊ）を作る。このマトリクス（ｂｉｊ）の要素を、ｂ１１から行方向へ繰り返し、順に並べたものが、ベクトルＡを繰り返した｛Ａ１‖Ａ２｝であり、これをそのまま繋げたものが、元データを２回繰り返した情報になる。すなわち、「さみだれをあつめてはやし・・・ばしょうさみだれを・・・ばしょう」となる。【００５４】
上記分散単位情報の並べ替えによって元データを２回繰り返した情報が生成されるのは、上記分散単位情報生成部４が、ベクトルＡを多重化する際に、多重化数μ＝２としたためである。上記情報復元部５は、情報登録先決定部２から受信した多重化数μで分割して、上記ベクトル２ＡをベクトルＡ、すなわち元データとする。
ただし、管理情報に、元データのデータ長や、元データの要素を含む登録先を特定する情報を含み、情報復元部５が、その管理情報に基づいて、元データを復元するために必要な分散単位データのみを収集するようにしてもよい。例えば、図７に示す６個のストレージグリッドには、二重化した元データの全要素が分散して登録されているが、これらのストレージグリッドのうち、３個のストレージグリッドＳ３，Ｓ４，Ｓ５に、元データの全要素が含まれている。従って、元データの復元のためには、全ての情報登録先から分散単位情報を収集しなくても、上記３個のストレージグリッドＳ３，Ｓ４，Ｓ５のみから情報を収集すれば足りる。【００５５】
また、上記実施形態では、情報復元部５が、自ら、ストレージグリッドにアクセスして情報を収集する例を説明したが、ユーザーからの指示に基づいて、情報登録先決定部あるいは管理情報記憶部が、元データの復元に必要な情報を記憶しているストレージグリッド指令を出して、記憶している分散単位情報を上記情報復元部５へ送信させるようにしてもよい。情報復元部５は、ストレージグリッドから送られた情報を、管理情報に基づいて復元する。【００５６】
上記のように、情報を多重化し、分散して登録することによって、情報を守ることができる。
特に、元データに対応するベクトルＡを多重化してから分散するようにしているため、全ストレージグリッドＳから見れば、元データに含まれる要素が、それぞれ複数個、登録されていることになる。そのため、一部のストレージグリッドＳが破壊されて、そこに登録された分散単位情報が消失したとしても、元データを復元することができる。なぜなら、消失した分散単位情報に含まれる要素と同じ要素が、他の分散単位情報に含まれているからである。厳密には、多重化数μで多重化した場合には、｛μ−１｝個の分散単位情報が消失しても、残りの分散単位情報から、元データの復元が可能である。【００５７】
例えば、図７に示すストレージグリッドＳ１〜Ｓ６のうち、ストレージグリッドＳ１が壊れてしまった場合、分散単位情報ｄ３が消失してしまうことになる。しかし、この分散単位情報ｄ３に含まれる要素と全く同じ要素が、分散単位情報ｄ６に含まれている。この分散単位情報ｄ６は、ストレージグリッドＳ３に登録されているので、ストレージグリッドＳ１が破壊されても消失することはない。【００５８】
従って、上記情報復元部５が、各ストレージグリッドＳから収集した分散単位情報を配列順に並べ替えれば、消失して抜けている部分に対応する要素と同一の要素が、他の分散単位情報に含まれていることが分かり、元データを復元することができる。【００５９】
なお、上記実施形態では、上記分散単位情報生成部４および情報復元部５を同一のユーザー端末３に設けて、このユーザー端末３を用いて、情報の登録と復元とを行なっている。しかし、上記分散単位情報生成部４および情報復元部５は、必ずしも同一端末に備えなくてもよい。例えば、情報を登録する際に使用する端末には、少なくとも分散単位情報生成部４を備え、情報を復元する際に使用する端末には、少なくとも情報復元部５を備えていればよい。
このように、分散単位情報生成部４と情報復元部５とを別の端末に備え、分散単位情報生成部４が登録した情報を、情報復元部５で復元するようにすれば、分散単位情報生成部４側から情報復元部５側へ情報を盗まれることなく送信することができる。【００６０】
また、この実施形態では、情報登録先決定部２を、ユーザー端末３とは別装置である管理サーバー１に設けているが、情報登録先決定部２をユーザー端末３に設けて、ユーザー端末３で情報登録先を決定するようにしてもよい。ただし、このようにユーザー端末３で、情報と登録先を決定し、管理情報を生成するようにした場合には、その管理情報をユーザー端末３から分離できるメモリなどに記憶させるようにした方が安全である。
なお、情報登録先決定部２をユーザー端末３と別装置の管理サーバー１に設ければ、一つの情報登録先決定部２に、複数の分散単位情報生成部４を接続することができる。【００６１】
また、上記管理サーバー１の管理者が、ユーザー端末３の使用者とは、別の者であっても、管理サーバー１は、ストレージグリッドＳから分散単位情報を入手する機能を備えていないので、管理サーバー１から元データや、分散単位情報などが盗まれることはない。
さらに、分散単位情報生成部４に、データを暗号化する手段を連係して、元データを暗号化し、暗号化した分散単位情報を記憶するようにすれば、多重分散によるエントロピーに暗号化によるエントロピーを加えたエントロピーを確保でき、計算量的安全性をさらに高くすることができる。
さらにまた、情報登録先決定部２に管理情報を暗号化する手段を連係し、暗号化した管理情報を通信するようにすれば、管理情報の通信経路上での安全も保たれる。【００６２】
次に、図８〜図１４に示した暗号化システムについて説明する。
図８は、このシステムを構成する暗号化装置６のブロック図であって、この暗号化装置６は、データ入出力部７と、暗号化部８と、擬似乱数生成部９とからなる。
上記暗号化部８は、データ入出力部７から入力された平文を暗号化して暗号文を生成する機能と、生成した暗号文を、データ入出力部７を介して出力する機能とを備えている。
また、擬似乱数生成部９は、後で説明する方法によって、予測不可能な擬似乱数を生成する機能を備えている。
なお、上記データ入出力部７を介して、平文の入力および暗号文の出力を行なうが、この実施形態では、上記データ入出力部７が、この発明の平文入力部に相当する。【００６３】
そして、上記暗号化部８は、擬似乱数生成部９で生成された擬似乱数に基づいて暗号キーを生成し、この暗号キーを用いて平文を暗号化する。
ここでは、元データを多重化して生成したベクトルを平文Ｍとし、暗号キーＥ１を用いて暗号化した暗号文をＸとする。上記暗号キーＥ１は、平文Ｍのデータ長以上のデータ長をもった擬似乱数からなるベクトルである。暗号化部８は、図９に示す式（i）の演算を行ない、この暗号キーＥ１と平文Ｍとのベクトル直和のベクトルを生成する。このベクトルが暗号文Ｘである。【００６４】
次に、暗号化部８が、暗号キーＥ１を生成し、暗号文Ｘを生成する手順を、図１０を用いて説明する。
図１０に示すように、暗号化部８には、擬似乱数のシードの基になるベクトルＲ１と、平文Ｍのデータ長以上のデータ長を持ち、平文Ｍの不確定性を下回らない不確定性を有するベクトルＫとを予め記憶している。
これらの、ベクトルＲ１とベクトルＫとは、予め、設定されたものであり、暗号化処理のたびに変更する必要はない。そして、上記ベクトルＲ１は、この発明の可変シードを生成するための固定のベクトルであり、上記ベクトルＫは、上記擬似乱数生成部９で生成された擬似乱数と直和するためのこの発明の固定ベクトルである【００６５】
また、擬似乱数生成部９は、入力されたシードを用いて擬似乱数を生成するための擬似乱数生成プログラムを予め記憶している。この擬似乱数生成プログラムの擬似乱数生成手順については、後で詳しく説明するが、この擬似乱数生成プログラムは任意のベクトルからなるシードを用いて、任意のデータ長の擬似乱数を生成できる。そして、この擬似乱数生成プログラムが、シードＣを用いて擬似乱数を生成したとき、生成された擬似乱数を関数でＥ（Ｃ）と表わすことにする。【００６６】
また、平文Ｍが暗号文Ｘに暗号化されて出力される際に、暗号化装置６におけるデータの流れを、図１０の矢印（１）から（４）で示している。
図１０の矢印（１）のように、暗号化すべきベクトルである平文Ｍが暗号化部８に入力されると、暗号化部８は、次に説明するようにしてベクトルＲｉを決める。このベクトルＲｉは、平文Ｍごとに、暗号化部８で決めるベクトルで、暗号化を行なうたびに異なるものを決定する必要がある。そのためには、暗号化部８が、例えば、現時点の日時、分秒に対応する数字や、物理乱数生成器で生成された乱数や、任意のテキストとデータなどを用いて、ベクトルＲｉを決めるようにしておけばよい。【００６７】
暗号化部８は、ベクトルＲｉを特定したら、図１０の矢印（２）に沿って記載したように、このベクトルＲｉと予め設定された固定のベクトルＲ１との直和〔Ｒｉ＋Ｒ１〕を演算し、これを可変シードとして擬似乱数生成部９へ入力する。なお、ここでは、上記「＋」は、ベクトルの直和記号を表わすものとし、図９，１１，１２，１６，１７に示す演算式における直和記号の代わりに用いる。
つまり、平文Ｍごとに設定する可変のベクトルＲｉと固定のベクトルＲ１との直和〔Ｒｉ＋Ｒ１〕で、この発明の可変シードを生成する。
さらに、暗号化部８は、入力された平文Ｍのデータ長を特定する。
暗号化部８は、上記のように可変シードを生成するとともに、平文Ｍのデータ長を特定したら、生成した可変シードと、平文Ｍのデータ長とを擬似乱数生成部９へ入力する（矢印（２））。【００６８】
上記可変シードと、平文Ｍのデータ長とを入力された擬似乱数生成部９は、入力された可変シードに基づいて、上記平文Ｍのデータ長以上の擬似乱数Ｅ（Ｒｉ＋Ｒ１）を生成し、それを矢印（３）のように、暗号化部８へ返す。この擬似乱数Ｅ（Ｒｉ＋Ｒ１）は、平文Ｍに対応した可変シードに基づいて生成されたもので、この発明の可変擬似乱数である。
暗号化部８は、擬似乱数生成部９で生成された可変擬似乱数Ｅ（Ｒｉ＋Ｒ１）のベクトルに予め記憶しているベクトルＫを直和して、図１１の式（ii）に示すように暗号キーＥ１を生成する。さらに、この暗号キーＥ１を用いて図９の式（i）に従って暗号文Ｘを生成して出力する（矢印（４））。
なお、このようにして生成された暗号キーＥ１は、平文Ｍの不確定性を下回らない不確定性を有する固定ベクトルＫを、可変擬似乱数Ｅ（Ｒｉ＋Ｒ１）からなるベクトルで置換したベクトルとみなすことができる。従って、上記暗号キーＥ１の不確定性も、平文Ｍの不確定性を下回らない。従って情報理論的安全を有する暗号化ができることになる。なおこのとき、暗号キーＥ１のエントロピーと、Ｒｉ，Ｒ１，Ｒｉ＋Ｒ１およびＥ（Ｒｉ＋Ｒ１）のエントロピーは全て等しく、Ｅ（Ｒｉ＋Ｒ１）はこのエントロピーにおける全ての値を変数として採り得る。【００６９】
なお、この実施形態の暗号化システムでは、平文Ｍ以上のデータ長を持つベクトルＫが必要であるが、データ長の大きな元データを暗号化するためには、元データを、上記ベクトルＫのデータ長以下のデータ長を有するデータに分割して、個々の分割データをそれぞれ平文Ｍとすることにより、この暗号化システムでの暗号化が可能になる。このように、元データを分割して、分割した単位で暗号化するようにすれば、データ長の大きな元データを暗号化するために、巨大なベクトルＫを設定しなくても済む。【００７０】
暗号化手順は、上記のとおりである。このようにして生成された暗号文Ｘを復号化するためには、上記暗号キーＥ１が必要であるが、この暗号キーＥ１は、可変擬似乱数のベクトルと固定ベクトルＫとの直和である。また、上記可変擬似乱数は、固定のベクトルＲ１と可変のベクトルＲｉとの直和をシードとして生成した擬似乱数である。
従って、復号側にも、上記擬似乱数生成部９を備えるとともに、上記固定ベクトルＫと、固定のベクトルＲ１とを予め設定し、暗号文Ｘごとに対応する可変のベクトルＲｉのみを暗号化装置６から受信すれば、上記暗号化装置６と同様に、上記暗号キーＥ１を生成することができる。そして、生成した暗号キーＥ１を用いて、図１２の式（iii）の演算によって暗号文Ｘの復号化が可能である。従って、暗号文の送受信の際に、暗号化ごとに異なる暗号キーＥ１を送受信する必要がない。暗号キーＥ１そのものを送受信することがないため、暗号キーＥ１が通信経路中で盗まれる危険もない。攻撃者がシードＲｉをインターセプトするなどして盗んだとしても、Ｒ１及びＫが判らなければＥ１を特定することは数学的に不可能である。【００７１】
さらに、上記可変のベクトルＲｉが、通信中に盗まれたとしても、このベクトルＲｉから上記暗号キーＥ１を再生されることもないので安全である。
また、この暗号生成システムのように、平文と、平文の不確定性を下回らないベクトルとの直和によって暗号を生成する方式は、ベクトルＲ１およびベクトルＫが漏洩しない限り、シャノン（Shannon）４８，４９で証明されているように、情報理論的に解読できないという特徴がある。すなわち、平文の不確定性を下回らない擬似乱数、すなわち上記暗号キーＥ１を用いて暗号化することによって、生成された暗号文の不確定性が、平文の不確定性と同等以上になる。この暗号文は、情報理論的安全性をもち、解読は不可能ということになる。つまり、ベクトルＲ１およびベクトルＫさえ漏洩しなければ、第三者に暗号化した情報内容を盗まれる心配はない。【００７２】
そして、この暗号化システムにおいては、上記したように、暗号文を、通信手段を用いて送受信する場合にも、暗号キーＥ１そのものを送受信する必要がないので、通信中に暗号キーが盗まれることはない。また、暗号キーの元になる固定ベクトルＫと、可変擬似乱数のシードの基になる固定のベクトルＲ１も、暗号化のたびに通信する必要のないデータなので、盗まれる危険性が極めて低く、結果として暗号キーＥ１を第三者に生成される危険性はほとんどない。
つまり、この暗号化システムを用いて情報を暗号化することによって、機密情報などを確実に守ることができる。【００７３】
次に、上記擬似乱数生成部９が、当該擬似乱数生成部９に予め設定された擬似乱数生成プログラムに基づいて、ｎ進法で表した擬似乱数を生成する手順を、図１３、図１４に基づいて説明する。なお、この実施形態では、上記ｎを、ｎ＝１０とした例である。ただし、ｎは１０に限らず、ゼロ以外の数ならどのような値でもかまわない。【００７４】
擬似乱数生成部９は、上記暗号化部８から、ベクトルＲｉとベクトルＲ１の直和からなる可変シードと、平文Ｍのデータ長とが入力されたら（図１０参照）、上記可変シードを用いて、平文Ｍのデータ長以上の擬似乱数を生成する。
まず、擬似乱数生成部９は、上記可変シードのベクトルを分割して、図１３に示す行見出しｉおよび列見出しｊに、それぞれ、分割した要素を擬似乱数の種として配置し、マトリクス（ｒｉｊ）の計算表を作成する。
そして、このマトリクス（ｒｉｊ）の各セルに、予め決められた順に数値をあてはめていく。【００７５】
ただし、最初にあてはめるべきセル、例えば、図１３の１行１列のセルｒ１１には、そのセルｒ１１に対応する第１列にあてはめた列見出しの数値と、同じく上記セルｒ１１に対応する第１行にあてはめた行見出しの数値とを加算し、その加算値に対してｎ＝１０を法とする演算を行ない、その演算結果をあてはめる。
そして、以後にあてはめるべき、上記セル１１以外の全てのセルには、当該セルに対応する行および列において、セルまたは見出しにすでにあてはめられている数値のうち、少なくとも３つ以上の数値の合計に対する１０を法とする演算結果をそのセルにあてはめる。【００７６】
上記の方法を、図１３に基づいてさらに具体的に説明する。
この例では、特定の平文Ｍに対応して生成された上記可変シードとなるベクトル〔Ｒｉ＋Ｒ１〕＝（０，５，１，５，０，８）とする。このベクトルを前後に分割して、図１３に示すように、行見出しｉには「５，０，８」を配置し、列見出しｊには「０，５，１」を配置して３行３列のマトリクスを作成する。【００７７】
上記のように可変シードを行および列の見出しとして、３行３列のマトリクス（ｒｉｊ）のセルを作成したら、以下の演算によって各セルに数値をあてはめる。
まず、第１行第１列のセルｒ１１には、第１行の行見出し「５」と第１列の列見出し「０」の和「５」に対して１０を法とする演算を行ない、演算結果である「５」をあてはめる。
次に、上記セルｒ１１以外のセル、例えば、第２行第１列のセルｒ２１には、すでにあてはめられている第２行の行見出し「０」、第１列の列見出し「０」、および第１列のセルｒ１１の数値「５」の和「５」に対して１０を法とする演算を行ない、演算結果である「５」をあてはめる。このようにしてまず第１列のセルｒ１２からセルｒ３１の順に数値をあてはめ、それを列ごとに繰り返す。なお、上記セルｒ１１が、この発明の第１のセルに相当する。【００７８】
なお、上記の具体例ではセルｒ１１を、最初に数値をあてはめるべきセルとしているが、最初に数値をあてはめるべきセルは、いずれのセルであってもよい。また、最初のセル以外のセルに数値をあてはめる順序も、どのように決めてもよい。ただし、上記したように、数値をあてはめるべきセルに対応する行または列上のセルまたは見出しにすでにあてはめられている数値のうち、少なくとも３つ以上の数値を加算し、その結果に対して１０を法とする演算を行なわなければならない。
そして、図１３の例は、数値をあてはめるべきセルに対応する行または列のセルまたは見出しにすでにあてはめられている数値の全ての数値を加算し、その結果に対して１０を法とする演算を行ない、演算結果をあてはめたものである。【００７９】
以上のようにして、全てのセルに数値をあてはめたら、それらを、セルｒ１１から、図１２の矢印で示す順に並べて、９桁の擬似乱数のベクトル「５，５，８，５，５，１，６，７，１」を生成する。ただし、上記マトリクスの各数値をどのような順序で並べて擬似乱数のベクトルを生成してもよい。
さらに、桁数の大きな擬似乱数を生成する場合には、セルが多いマトリクスを作成し、上記した手順によって各セルに数値をあてはめる。そして、上記マトリクスの各セルにあてはめられた数値を並べれば、桁数の大きな擬似乱数を単純な方法で生成することもできる。【００８０】
この暗号化システムでは、上記のようにして３行３列のマトリクスで生成した擬似乱数を行見出しｉまたは列見出しｊとして、さらに大きな桁数の擬似乱数を生成するようにしている。図１４は、図１３のマトリクスで生成した９桁の擬似乱数を行見出しｉに配置するとともに、列見出しｊとして３桁の別のベクトルを配置し、９行３列のマトリクスを作成した例である。【００８１】
そして、この９行３列のマトリクスを用いて、上記３行３列のマトリクスを用いたときと同様の手順によって各セルに数値をあてはめ、例えば、図に示す矢印のように数値を並べれば、２７桁の擬似乱数を生成することができる。
ただし、必要な擬似乱数が２７桁未満の場合には、算出した２７個の数値を並べる際に、必要な個数だけを並べるようにすればよい。なお、このようにして生成された乱数は、数学的にはシードを高次元に写像変換したものであることから、その不確定性は単純には理論上、シードの不確定性に等しいと考えられる。【００８２】
また、さらに大きな擬似乱数を生成するためには、図１４で示したマトリクスによって生成した擬似乱数からなるベクトルの一部の要素、例えば、最後の３桁分の数値（８，８，５）を列見出しｊとし、他の２４個の数値を行見出しｉとして、２４行３列のマトリクスを用い、上記と同様の手順によって擬似乱数を生成する。そして、さらに大きな擬似乱数を生成するためには、上記２４行３列のマトリクスによって生成された擬似乱数の一部を列見出しｊとし、残りを行見出しとしたマトリクスを用いる。このような手順を繰り返せば、いくらでも大きな擬似乱数を生成することができる。つまり、必要な桁数になるまで上記の手順を繰り返せば、所望の桁数の擬似乱数を得ることができる。従って、平文Ｍのデータ長が大きな場合には、上記のように擬似乱数の生成を繰り返して、擬似乱数の桁数を大きくし、擬似乱数の長さを平文Ｍのベクトルの長さ以上にすることができる。なお、このようにして生成された乱数の不確定性は理論上、シードの不確定性に等しい。【００８３】
なお、上記では、３行３列のマトリクスで生成した９桁の擬似乱数を行見出しとし、新たなベクトルを列見出しとして、２７桁の乱数を生成し、それ以上の擬似乱数を生成する際には、既に生成された擬似乱数を行見出しと列見出しに用いるようにしているが、可変シードを用いて９桁の擬似乱数を生成したのち、その擬似乱数を分割して、行見出しと列見出しとに用いるようにしてもよい。このとき、この実施形態のように、最後の３桁分の数値を列見出しとし、残りを行見出しとするという規則を予め定めておけば、桁数の大きな擬似乱数を自動的に生成することができる。このようにすれば、演算途中で、列見出しとなるベクトルを新たに用意する必要がなくなる。【００８４】
上記の手順は、擬似乱数生成部９に予め設定された擬似乱数生成プログラムによって実行され、所望の擬似乱数が自動的に生成される。
このようにして生成された擬似乱数は、上記いずれの方法によっても、高い一様性と無周期性をもつ。なぜならこれらは多重マルコフ過程であり、かつ、初期値鋭敏性を持つため、この演算結果にはエルゴード性があると認められるからである。また、そのことによって予測性が極めて低いものになる。【００８５】
もしも、ここで各セルの数値を、単に行見出しと列見出しとの２つの数値の和としたならば、各セルに配置された数値から行見出しや列見出しを予測することが可能になる。
これに対し、この暗号化システムの擬似乱数生成方法では、見出しの数値以外の数値が必ず加算されるので、予測性が極めて低いものになる。例えば、図１４に示すマトリクス（ｒｉｊ）において、１行１列のセルｒ１１、２行１列のセルｒ２１、４行１列のセルｒ４１、５行１列のセルｒ５１は、いずれも行見出しが「５」、列見出しが「８」である。このような見出しの数値だけを加算した場合には、各セルに当てはめられる数値はすべて「３」となるが、この実施形態の方法では、図１４に示すように上記各セルｒ１１、ｒ２１、ｒ４１、ｒ５１の値は全て異なる。このようにして、予測不可能な擬似乱数を生成できる。【００８６】
なお、上記のように平文のベクトル以上の長さを有する擬似乱数ベクトルを用いた暗号化を行なう場合、平文のデータ長が大きくなれば、大きな擬似乱数が必要になる。そのため、元データの情報量が多くなると、巨大な擬似乱数が必要になるが、従来は、周期性のない一様な擬似乱数を実用的な時間内に生成することが著しく困難であった【００８７】
しかし、上記擬似乱数生成部９のように自動的に予測不可能な擬似乱数を生成する機能を備え、第１段階では小さな擬似乱数を生成し、生成した擬似乱数を行見出しや列見出しとして、さらに大きな擬似乱数を生成するようにすれば、いくらでも大きな擬似乱数を自動的に生成できるので、大きな平文を暗号化するための暗号キーを簡単に生成することができる。
そして、この暗号化システムでは、擬似乱数生成部９が、上記の手順に従って生成した擬似乱数を用いて、暗号キーＥ１を生成するようにしている。【００８８】
図１５〜図１７は、暗号化手順を、先の図１０とは相違させた他の暗号化システムを示した図である。
この他の暗号化システムも、図８に示すシステムと同様に暗号化装置６を備え、この暗号化装置６には、データ入出力部７、暗号化部８および擬似乱数生成部９を備えている。そして、暗号化部８に平文Ｍが入力されると、暗号化部８は、擬似乱数生成部９が生成した擬似乱数を利用して、暗号キーＥ２を生成するとともに、その暗号キーＥ２によって平文Ｍを暗号化し、暗号文Ｘを出力する。【００８９】
次に、暗号化部８が、暗号キーＥ２を生成し、暗号文Ｘを生成する手順を、図１５を用いて説明する。
図１５に示すように、暗号化部８には、擬似乱数のシードの基になる固定のベクトルＲ１と、このベクトルＲ１とは別の固定のベクトルで、上記擬似乱数とは別の擬似乱数のシードとなるベクトルＲ２とを予め記憶している。これら、ベクトルＲ１とベクトルＲ２とは、予め設定されたものであり、暗号化処理のたびに変更する必要はない。但し、ベクトルＲ１とベクトルＲ２の次元はベクトルＲｉに等しいものとする。【００９０】
また、擬似乱数生成部９は、入力されたシードを用いて擬似乱数を生成するための擬似乱数生成プログラムを予め記憶している。この擬似乱数生成プログラムの擬似乱数生成手順については、図１３、図１４に基づいて説明した場合と同じであり、この擬似乱数生成プログラムは任意のベクトルからなるシードを用いて、任意のデータ長の擬似乱数を生成できる。そして、この擬似乱数生成プログラムが、シードＣを用いて擬似乱数を生成したとき、生成された擬似乱数を関数でＥ（Ｃ）と表わすことにする。【００９１】
図１５の矢印（１）のように、暗号化すべきベクトルである平文Ｍが暗号化部８に入力されると、暗号化部８は、次に説明するようにしてベクトルＲｉを決める。このベクトルＲｉは、平文Ｍごとに、暗号化部８で決めるベクトルで、暗号化を行なうたびに異なるものを決定する必要がある。そのためには、暗号化部８が、例えば、現時点の日時、分秒に対応する数字や、物理乱数生成器で生成された乱数や、任意のテキストデータなどを用いて、ベクトルＲｉを決めるようにしておけばよい。【００９２】
暗号化部８は、ベクトルＲｉを特定したら、図１５の矢印（２）に沿って記載したように、このベクトルＲｉと予め設定された固定のベクトルＲ１との直和〔Ｒｉ＋Ｒ１〕を演算し、これを可変シードとして擬似乱数生成部９へ入力する。
つまり、平文Ｍごとに設定する可変のベクトルＲｉと固定のベクトルＲ１との直和〔Ｒｉ＋Ｒ１〕で、この発明の可変シードを生成する。
さらに、暗号化部８は、入力された平文Ｍのデータ長を特定する。
そして、暗号化部８は、このように可変シードを生成するとともに、平文Ｍのデータ長を特定したら、生成した可変シードと、予め設定された固定のベクトルＲ２からなる固定シードと、平文Ｍのデータ長とを擬似乱数生成部９へ入力する（矢印（２））。【００９３】
上記可変シードと、ベクトルＲ２からなる固定シードと、平文Ｍのデータ長とが入力された擬似乱数生成部９は、入力された可変シードに基づいて、上記平文Ｍのデータ長以上の擬似乱数Ｅ（Ｒｉ＋Ｒ１）を生成するとともに、上記固定のベクトルＲ２からなる固定シードに基づいて、上記平文Ｍのデータ長以上の擬似乱数Ｅ（Ｒ２）を生成する。なお、上記可変擬似乱数Ｅ（Ｒ２）は、固定シードを用いているが、平文Ｍのデータ長に応じた長さに生成される可変擬似乱数である。【００９４】
上記擬似乱数生成部９は、生成した可変擬似乱数Ｅ（Ｒｉ＋Ｒ１）と、可変擬似乱数Ｅ（Ｒ２）とを、暗号化部８へ入力する（矢印（３））。これらの擬似乱数が入力された暗号化部８は、図１６の式（iv）のように、両擬似乱数からなるベクトルの直和を演算して、暗号キーＥ２を生成するとともに、この暗号キーＥ２と平文Ｍとの直和を演算して暗号文Ｘを生成し、それを出力する（矢印（４））。
つまり、この他の暗号化システムで用いる暗号キーＥ２は、図１１の式（ii）の固定擬似乱数Kに替えて、可変擬似乱数Ｅ（Ｒ２）を用いたものである。【００９５】
この暗号化システムでも、暗号化部８が、暗号化するたびに平文Ｍに応じて暗号キーＥ２を生成するようにしているが、この暗号キーE２は、予め設定しておくベクトルＲ１、Ｒ２とともに、平文Ｍに応じて決定する可変のベクトルＲｉを用いることによって、平文Ｍごとに可変の暗号キーにできる。また、この暗号キーＥ２は、２つの擬似乱数ベクトルの直和で生成されるので、一つの擬似乱数のベクトルと比べて、ほぼ２倍のエントロピーを持つことになる。このように、暗号キーＥ２のエントロピーを大きくすることによって、情報量的安全性を得ることができる。
さらに、上記した暗号化システムの暗号キーＥ１と同様に、暗号キーＥ２の通信過程での漏洩を防止できる。このように暗号化した情報を確実に守ることができる点は、先の暗号化システムと同じである。【００９６】
なお、この他の暗号化システムでは、先に説明した別の暗号化システムで用いた固定のベクトルＫの代わりに、固定シードＲ２を用いた乱数のベクトルを用いるようにしている。そのため、暗号化部８に、予め設定しておく固定のベクトルＲ２のデータ長を、固定ベクトルＫと比べて小さくでき、データ記憶のための負荷を軽くできる。
このように、ベクトルＲ２のデータ長が小さくてもよいのは、先のシステムでは、暗号キーＥ１を、平文Ｍ以上のデータ長とするために、固定ベクトルＫも、平文Ｍのデータ長以上のデータ長を持つ必要があったが、乱数のシードとなるベクトルＲ２は、そのデータ長が小さくても、上記疑似乱数生成部９によって、平文Ｍ以上のデータ長を持った乱数を生成することができ、暗号キーＥ２のデータ長を平文Ｍ以上にすることができるからである。【００９７】
また、この暗号化システムでも、暗号キーＥ２を生成するために用いる２種類の予測不可能な擬似乱数を、上記擬似乱数生成部９が、それぞれ自動的に生成することができる。
なお、上記擬似乱数生成プログラムを備えた擬似乱数生成部９とともに、ベクトルＲ１、Ｒ２を予め設定された復号部を備えれば、この復号部が暗号キーＥ２を生成し、図１７の式（ｖ）の演算によって、このシステムで生成された暗号文Ｘを復号化することができる。【００９８】
このように、上記したいずれの暗号化システムを用いた場合にも、生成した暗号を解読される心配はないし、暗号キーを盗まれる危険性も極めて低いので、機密情報などを安全に保存したり、送信したりすることができる。
なお、上記両暗号化システムでは、可変シードを、平文ごとに設定する可変のベクトルと予め設定した固定のベクトルとの直和によって生成するようにしているが、可変シードは、上記可変のベクトルのみで構成するようにしてもよい。要するに、暗号キーが、可変擬似乱数の直和を用いて生成されることによって、平文に対応した可変のキーが生成されればよいのである。【００９９】
ただし、１つの可変のベクトルのみで可変シードを構成するよりも、固定のベクトルとの直和によって可変シードを生成するようにすれば、可変のベクトルが固定のベクトルによって別のベクトルに置換されることになるので、たとえ該可変ベクトルがインターセプトされるなどして攻撃者に漏洩することがあっても、シードの計算量的安全性は担保される。さらに、可変シードが、１つの可変のベクトルと１つの固定のベクトルとの直和でなく、さらに多くの別のベクトルを直和して生成してもかまわない。【０１００】
上記した２つの暗号化システムの実施形態では、暗号キーを可変ベクトルと固定ベクトルとの直和で生成し、暗号キーそのものを通信する必要がないようにしている。
しかし、暗号キーを平文に応じて生成する擬似乱数からなる可変ベクトルのみで構成するようにしてもよい。その場合に用いる可変ベクトルは、上記擬似乱数生成部９によって生成され、平文のデータ長以上のデータ長を有する擬似乱数のベクトルでなければならない。【０１０１】
さらに、この暗号化システムを利用して、上記情報管理システムの元データや分散単位データを暗号化したり、上記管理情報を暗号化したりすることもできる。このように、上記暗号化システムを用いて情報を暗号化すれば、より安全性が高まる。この時のエントロピーは、多重分散化によるエントロピーと暗号化によるエントロピーを足し合わせたものとなる。
【図面の簡単な説明】
【０１０２】
【図１】情報管理システムの構成図である。
【図２】元データの例を示した図である。
【図３】多重化したベクトルの例を示した図である。
【図４】分散単位情報を生成するためのマトリクスを示した図である。
【図５】個々の分散単位情報を示した図である。
【図６】分散単位情報の登録先を示す登録先対応テーブルの例である。
【図７】分散単位情報をストレージグリッドに登録した状態を示した図である。
【図８】暗号化システムの構成図である。
【図９】暗号化の例を示した演算式である。
【図１０】暗号化システムにおけるデータの流れを示した模式図である。
【図１１】暗号キーの構成を示した演算式である。
【図１２】図８に示した暗号化システムにおける復号化の演算式である。
【図１３】擬似乱数生成手順を示したマトリクスである。
【図１４】擬似乱数生成手順を示したマトリクスである。
【図１５】他の暗号化システムにおけるデータの流れを示した模式図である。
【図１６】図１５に示した他の暗号システムにおける暗号キーの構成を示した演算式である。
【図１７】図１５に示した他の暗号化システムにおける復号化の演算式である。
【符号の説明】
【０１０３】
２    情報登録先決定部
４    分散単位情報生成部
５    情報復元部
Ｓ，Ｓ１〜Ｓσ  ストレージグリッド
ｄ１〜ｄ６  分散単位情報
Ａ    （元データに基づく）ベクトル
ε    （ベクトルＡの）要素数
μ    多重化数
τ    分散数
σ    ストレージグリッドの数
６    暗号化装置
７    データ入出力部
８    暗号化部
９    擬似乱数生成部
Ｅ１，Ｅ２    暗号キー
Ｍ    平文
Ｎ    自然数
Ｅ（）  擬似乱数を生成する関数
Ｒｉ    可変のベクトル
Ｒ１，Ｒ２  固定のベクトル
Ｋ    固定ベクトル
（ｒｉｊ）  （擬似乱数の）マトリクス
ｉ    行見出し
ｊ    列見出し
＋    ベクトルの直和をあらわす記号
【図１】
2008056667.tif 000003
【図２】
2008056667.tif 000004
【図３】
2008056667.tif 000005
【図４】
2008056667.tif 000006
【図５】
2008056667.tif 000007
【図６】
2008056667.tif 000008
【図７】
2008056667.tif 000009
【図８】
2008056667.tif 000010
【図９】
2008056667.tif 000011
【図１０】
2008056667.tif 000012
【図１１】
2008056667.tif 000013
【図１２】
2008056667.tif 000014
【図１３】
2008056667.tif 000015
【図１４】
2008056667.tif 000016
【図１５】
2008056667.tif 000017
【図１６】
2008056667.tif 000018
【図１７】
2008056667.tif 000019
【手続補正書】
【提出日】平成21年5月13日(2009.5.13)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、電子情報の盗難若しくは漏洩を確実に防止するためのシステムに関する。
【背景技術】
【０００２】
電子文書化した機密情報が、盗まれたり破壊されたりすることがないようにするため、様々な対策が採られている。例えば、上記機密情報に、簡単にアクセスできないようにし、アクセス時には認証情報の入力を求める方法が知られている。
また、データにアクセスされたり、あるいはインターセプトされたりしても、内容が知られないように、元データを暗号化してから登録したり、暗号化と、認証の両方を利用したりしている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１０−２４０５９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来から知られているいずれのシステムも、不正アクセスを完全に防止することはできず、しかも、不正アクセスされた場合には、暗号化情報も解読されてしまうことがあった。そこで、現状では、たとえ、不正にアクセスされても、情報が漏洩しないシステムが求められている。
【０００５】
この発明の目的は、電子情報の盗難若しくは漏洩を確実に防止するためのシステムを提供することである。
【課題を解決するための手段】
【０００６】
第１の発明は、情報の登録先を決定する情報登録先決定部と、分散単位情報を生成する分散単位情報生成部と、この分散単位情報生成部と接続可能な複数のストレージグリッドとからなり、上記情報登録先決定部は、分散単位情報生成部で生成される分散単位情報ごとにその登録先のストレージグリッドを特定する機能と、分散単位情報とその登録先であるストレージグリッドとの対応関係にかかわる管理情報を生成する機能と、生成した管理情報を分散単位情報生成部へ通知する機能と、分散数τと要素数εとの最大公約数ｑが１のとき、多重化数μ＜分散数τを満たすという条件１、または、分散数τと要素数εとの最大公約数ｑが１でないとき、上記分散数τおよび要素数εが互いに割り切れない関係であって、かつ、多重化数μ≦（分散数τ／最大公約数ｑ）を満たすという条件２のいずれかを満たす上記要素数ε、多重化数μおよび分散数τの組み合わせを決定する機能と、決定した要素数εと多重化数μとの組を出力する機能とを備え、上記分散単位情報生成部は、予め設定された単位データ長または予め設定された分割数を基準にして元データを分割して、Ｎ∋ε個の要素からなるベクトルＡ＝（ａ１，ａ２・・・，ａε）とする機能と、当該分散単位情報生成部に入力された多重化数μ∈Ｎあるいは予め設定された多重化数μ∈Ｎのいずれかに基づいて、上記ベクトルＡをμ倍してＡ＝Ａ１＝Ａ２＝・・・＝ＡμであるベクトルμＡ＝（Ａ１‖Ａ２‖・・・‖Ａμ）とする機能と、この多重化されたベクトルμＡの全要素を、当該分散単位情報生成部に入力された分散数τ∈Ｎあるいは予め設定された分散数τ∈Ｎに基づいて、上記ベクトルＡの全要素が含まれず、かつ、ベクトルＡの同一要素が重複しないように、τ個の分散単位情報に分ける機能と、上記情報登録先決定部から通知された分散単位情報とストレージグリッドとの対応関係を定めた管理情報に基づいて上記各分散単位情報を対応するストレージグリッドへ登録する機能とを備えた点に特徴を有する。
【０００７】
なお、上記多重化数μ、分散数τ及び要素数εのそれぞれは自然数であり、しかも、分散数τは２以上でなければならない。
また、上記情報登録先決定部と分散単位情報生成部とは、同一装置に設けてもかまわないし、別装置として通信回線を介して接続するようにしてもかまわない。
さらに、各ストレージグリッドと分散単位情報生成部とは、通信手段を介して接続可能にしてもよいし、あるいは、それらを直接接続可能にしてもよいが、いずれにしても、分散化の効果を発揮させるためには、ストレージグリッドと分散単位情報生成部とは、それぞれ別なハードウエアに搭載し、物理的距離ができるだけ離れるようにして設置し、別々に管理することが望ましい。
上記「‖」は、ベクトルを結合する記号であり、例えば（Ａ１‖Ａ２）、ベクトルＡ１の次に、ベクトルＡ２を、その順番を変えないで並べて結合した数列ベクトルのことである。
【０００８】
第２の発明は、上記第１の発明を前提とし、上記分散単位情報生成部は、元データを多重化数μで多重化したベクトルの全要素を、その要素順に、行方向あるいは列方向に並べ、それを列方向あるいは行方向に繰り返して、分散数τに応じた列数あるいは行数と、所要の行数または列数とからなるマトリクスを生成する機能と、このマトリクスの各列あるいは各行を、１の分散単位情報とする機能とを備えた点に特徴を有する。
【０００９】
第３の発明は、第１または第２の発明を前提とし、管理情報を記憶する上記情報登録先決定部またはこの情報登録先決定部とは別の管理情報記憶部と、上記分散単位情報から元データを復元する情報復元部とを備え、この情報復元部は、各ストレージグリッドから分散単位情報を収集する機能と、上記管理情報を取得する機能と、上記管理情報から特定した配列順に基づいて、上記収集した分散単位情報を並べる機能とを備えた点に特徴を有する。
【００１０】
なお、上記情報復元部が、ストレージグリッドから分散単位情報を収集するためには、情報復元部が自らストレージグリッドへアクセスして情報を収集する場合と、上記情報登録先決定部または管理情報記憶部からの指示に基づいて、ストレージグリッドが、必要な情報を情報復元部へ送信する場合とがある。
【００１１】
第４の発明は、上記第１〜第３の発明を前提とし、上記分散単位情報生成部に連係する暗号化部を備え、この暗号化部は、元データを暗号化する機能を備え、分散単位情報生成部は、暗号化部が暗号化したデータを多重化数μで多重化する機能を備えた点に特徴を有する。
【００１２】
第５の発明の暗号化システムは、平文入力部と、暗号化部と、擬似乱数生成部とからなり、擬似乱数生成部は、擬似乱数生成用のシードを、予め設定された情報量単位を基にして要素に分割する機能、これらの要素を行見出しおよび列見出しとしたマトリクスを生成する機能、このマトリクスにおける特定のセルを第１のセルとし、この第１のセルには、その第１のセルに対応する行見出しおよび列見出しの数値同士を加算し、その加算結果に対して予め定めたｎ（ゼロ以外）を法とする演算を行ない、その演算結果をあてはめる機能、上記マトリクスにおける上記第１のセル以外のセルには、対応する行および列にあてはめられた数値のうち、少なくとも３つ以上の数値を加算することによって、多重マルコフ過程を形成し、ゼロ以外の数ｎを法とする演算を行ない、その演算結果をあてはめる機能、上記各数値をあてはめた各セルの数値を、列単位または行単位で、列順または行順に並べ替える機能を実行して擬似乱数を生成し、かつ、この擬似乱数生成部は、擬似乱数のデータ長が上記平文のデータ長以上の場合には、この擬似乱数を暗号化部に対して出力する一方、生成された擬似乱数のデータ長が上記平文のデータ長未満の場合には、上記擬似乱数生成部は、上記生成された擬似乱数の一部または全ての要素を、行見出しまたは列見出しのいずれか一方若しくは両方としてマトリクスを生成する機能、このマトリクスにおける特定のセルを第１のセルとし、この第１のセルには、その第１のセルに対応する行見出しおよび列見出しの数値同士を加算し、その加算結果に対して予め定めたｎ（ゼロ以外）を法とする演算を行ない、その演算結果をあてはめる機能、上記マトリクスにおける上記第１のセル以外のセルには、対応する行および列にあてはめられた数値のうち、少なくとも３つ以上の数値を加算し、その加算結果に対して上記ｎを法とする演算を行ない、その演算結果をあてはめる機能、上記各数値をあてはめた各セルの数値を、列単位または行単位で、列順または行順に並べ替える機能を実行して擬似乱数を生成するとともに、この生成された擬似が平文のデータ長以上になるまで上記擬似乱数生成機能を繰り返し実行し、平文のデータ長以上の擬似乱数が生成されたとき、その擬似乱数を上記暗号化部に対して出力し、さらに、上記暗号化部は、擬似乱数生成部から入力された擬似乱数のベクトルを暗号キーとして用い、上記平文と暗号キーとのベクトル和を演算して、暗号化する点に特徴を有する。
上記多重マルコフ過程とは、離散時間的あるいは連続時間的なマルコフ連鎖のことである。
【００１３】
第６の発明の暗号化システムは、平文入力部と、暗号化部と、擬似乱数生成部とからなり、上記擬似乱数生成部は、擬似乱数生成用のシードを、予め設定された情報量単位を基にして要素に分割する機能、これらの要素を行見出しおよび列見出しとした演算表（以下にマトリクスという）を生成する機能、このマトリクスにおける特定のセルを第１のセルとし、この第１のセルには、その第１のセルに対応する行見出しおよび列見出しの数値同士を加算し、その加算結果に対して予め定めたｎ（ゼロ以外）を法とする演算を行ない、その演算結果をあてはめる機能、上記マトリクスにおける上記第１のセル以外のセルには、対応する行および列にあてはめられた数値のうち、少なくとも３つ以上の数値を加算することによって、多重マルコフ過程を形成し、ｎ（ゼロ以外）を法とする演算を行ない、その演算結果をあてはめる機能、上記各数値をあてはめた各セルの数値を、列単位または行単位で、列順または行順に並べ替える機能を実行して擬似乱数を生成し、かつ、この擬似乱数生成部は、擬似乱数のデータ長が上記平文のデータ長以上の場合には、この擬似乱数を暗号化部に対して出力する一方、生成された擬似乱数のデータ長が上記平文のデータ長未満の場合には、上記擬似乱数生成部は、上記生成された擬似乱数の一部または全ての要素を、行見出しまたは列見出しのいずれか一方若しくは両方としてマトリクスを生成する機能、このマトリクスにおける特定のセルを第１のセルとし、この第１のセルには、その第１のセルに対応する行見出しおよび列見出しの数値同士を加算し、その加算結果に対して予め定めたｎ（ゼロ以外）を法とする演算を行ない、その演算結果をあてはめる機能、上記マトリクスにおける上記第１のセル以外のセルには、対応する行および列にあてはめられた数値のうち、少なくとも３つ以上の数値を加算し、その加算結果に対して上記ｎを法とする演算を行ない、その演算結果をあてはめる機能、上記各数値をあてはめた各セルの数値を、列単位または行単位で、列順または行順に並べ替える機能を実行して擬似乱数を生成するとともに、この生成された擬似乱数が平文のデータ長以上になるまで上記擬似乱数生成機能を繰り返し実行し、平文のデータ長以上の擬似乱数が生成されたとき、その擬似乱数を上記暗号化部に対して出力する機能を備え、上記暗号化部は、上記生成された可変擬似乱数のベクトルと予め設定された固定ベクトルとのベクトル和を演算して暗号キーを生成する機能と、生成した暗号キーと上記平文とのベクトル和を演算して暗号化する機能とを備えた点に特徴を有する。
【００１４】
第７の発明の暗号化システムは、平文入力部と、暗号化部と、擬似乱数生成部とからなり、上記擬似乱数生成部は、
擬似乱数生成用のシードを、予め設定された情報量単位を基にして要素に分割する機能、これらの要素を行見出しおよび列見出しとした演算表（以下にマトリクスという）を生成する機能、このマトリクスにおける特定のセルを第１のセルとし、この第１のセルには、その第１のセルに対応する行見出しおよび列見出しの数値同士を加算し、その加算結果に対して予め定めたｎ（ゼロ以外）を法とする演算を行ない、その演算結果をあてはめる機能、上記マトリクスにおける上記第１のセル以外のセルには、対応する行および列にあてはめられた数値のうち、少なくとも３つ以上の数値を加算することによって、多重マルコフ過程を形成し、ｎ（ゼロ以外）を法とする演算を行ない、その演算結果をあてはめる機能、上記各数値をあてはめた各セルの数値を、列単位または行単位で、列順または行順に並べ替える機能を実行して擬似乱数を生成し、かつ、この擬似乱数生成部は、擬似乱数のデータ長が上記平文のデータ長以上の場合には、この擬似乱数を暗号化部に対して出力する一方、生成された擬似乱数のデータ長が上記平文のデータ長未満の場合には、上記擬似乱数生成部は、上記生成された擬似乱数の一部または全ての要素を、行見出しまたは列見出しのいずれか一方若しくは両方としてマトリクスを生成する機能、このマトリクスにおける特定のセルを第１のセルとし、この第１のセルには、その第１のセルに対応する行見出しおよび列見出しの数値同士を加算し、その加算結果に対して予め定めたｎ（ゼロ以外）を法とする演算を行ない、その演算結果をあてはめる機能、上記マトリクスにおける上記第１のセル以外のセルには、対応する行および列にあてはめられた数値のうち、少なくとも３つ以上の数値を加算し、その加算結果に対して上記ｎを法とする演算を行ない、その演算結果をあてはめる機能、上記各数値をあてはめた各セルの数値を、列単位または行単位で、列順または行順に並べ替える機能を実行して擬似乱数を生成するとともに、この生成された擬似乱数が平文のデータ長以上になるまで上記擬似乱数生成機能を繰り返し実行し、平文のデータ長以上の擬似乱数が生成されたとき、その擬似乱数を上記暗号化部に対して出力する機能と、予め設定された固定シードを用いて、上記平文のデータ長以上のデータ長を有する可変擬似乱数を生成してその可変擬似乱数を上記暗号か部に対して出力する機能とを備え、上記暗号化部は、上記生成された両可変擬似乱数からなるベクトルのベクトル和を演算して暗号キーを生成する機能と、生成した暗号キーと上記平文とのベクトル和を演算して暗号化する機能とを備えた点に特徴を有する。
【００１５】
なお、上記第５〜第７の発明において、平文とは、暗号化する前のデータのことである。例えば、安全に保存したい元データをそのまま暗号化する場合は、その元データが平文であるが、元データを多重化したり、分割したり、何らかの加工を加えてから暗号化する場合は、加工後のデータを平文という。また、上記平文には、テキストデータだけでなく、画像データや音データなどが含まれる。
さらに、上記可変擬似乱数、可変シードおよび可変のベクトルの「可変」とは、平文ごとに設定したり、生成したりするものという意味で用い、「固定」は、平文には関係なく固定的に設定されるものの意味である。
【００１６】
すなわち、上記可変ベクトルは、平文ごとに設定するベクトルであり、可変シードは、擬似乱数のシードであって、平文ごとに決まるシードである。
また、可変擬似乱数は、暗号化の都度、平文ごとに生成される擬似乱数であり、上記可変シードを用いて生成する擬似乱数のほか、予め設定された固定のベクトルをシードとする場合においても、生成された擬似乱数はデータ長に応じて値が異なることから可変擬似乱数に含むものとする。
そして、上記固定ベクトルおよび固定のベクトルとは、予め設定した固定値であるベクトルである。
【発明の効果】
【００１７】
第１の発明によれば、個々の分散単位情報には、元データに基づいて生成した数列ベクトルの全要素が含まれず、かつ、上記ベクトルの要素が重複しないように含まれているので、この単位で、別々にストレージグリッドに登録したり、通信したりすることによって、元データの情報内容を盗まれることを防止できる。
しかも、一つのストレージグリッドには、元データから生成した数列ベクトルの要素の一部がとびとびに含まれているだけなので、分散単位情報の単位で情報を盗んでも、元データを復元することは１００％不可能である。全要素が整っていず、元データの情報が欠落しているので、数列ベクトルの要素を並べ替えても、元データを再生することはできない。すなわち、個々の分散単位情報範囲で、情報量的安全性を確保している。
【００１８】
さらに、全てのストレージグリッドの情報を盗まれても、管理情報であるストレージグリッドと分散単位情報との対応関係が盗まれなければ、分散された要素の組み合わせを試さない限り、情報は盗まれない。分散して登録した分散単位情報の配列を、上記管理情報なしに予測するためには、配列の組み合わせを試す必要があるが、ストレージグリッドの個数をσとしたとき、分散単位情報の配列順を考慮した全ての組み合わせ数はσＰτとなり、そのエントロピーはｌｏｇ２（σＰτ）となる。従って、システムが備えたストレージグリッドの個数あるいは分散数τのいずれか一方または両方を大きくすれば、配列を試すための計算量が急激に増えることになる。
【００１９】
一方で、現状のコンピュータの計算能力では、等価安全性が８０ビット（８０ビット安全性）以上であれば、計算量的に安全と考えられている。そこで、８０≦ｌｏｇ２（σＰτ）となるようなσとτを選べば、計算量的安全性も確保できると考えられる。例えば、σ＝τの場合、ｌｏｇ２（２４Ｐ２４）＜８０＜ｌｏｇ２（２５Ｐ２５）であることから、分散数τを２５以上となるようにすれば計算量的安全性が得られることになる。なお、等価安全性とは、暗号化方式を共通基準で評価するための値（暗号アルゴリズムの安全性を示す尺度）であり、対称鍵暗号方式即ち共通鍵暗号方式におけるエントロピーに等しい値である。米国立標準技術研究所（ＮＩＳＴ）のガイドライン（ＳＰ８００−５７等）では２０１０年を目処に８０ビット安全性を終了し、１１２ビット安全性を達成するよう勧告している。その場合、上記の例ではｌｏｇ２（３０Ｐ３０）＜１１２＜ｌｏｇ２（３１Ｐ３１）なのでτ≧３１となるようにするだけでこの基準は容易にクリアされると考えられる。
【００２０】
さらにまた、元データのベクトルを多重化数μで多重化しているので、（μ−１）個までのストレージグリッドの情報、すなわち、分散単位情報を破壊されても、残りのストレージグリッドに、全要素が記憶されているので、この情報から元データを再生することができる。従って、重要な情報を守ることができる。
そして、各分散単位情報に、元データのベクトルＡの一部の要素しか含まれず、かつ、同一要素が重複して含まれないという条件を満たさなければならないが、この条件を満たすために、ベクトルＡの要素数ε、多重化数μおよび分散数τの組み合わせを、自動的に決定することができる。
【００２１】
第２の発明によれば、一つの分散単位情報に、同一の要素を重複しないように配列することが簡単にできるため、各分散単位情報に、上記ベクトルＡの一部の要素しか含まれず、かつ、ベクトルＡの同一要素が重複しないように要素を分けることが容易にできるようになる。
第３の発明によれば、分散して登録した分散単位情報を収集して、元データを簡単に復元することができる。
第４の発明によれば、元データを暗号化してから、多重化し、分散単位データを生成するので、管理情報が盗まれるなどして分散単位情報の配列がわかったとしても、元データを復元することが困難になる。
【００２２】
第５〜第７の発明の暗号化システムによれば、規則性が予測困難な擬似乱数のベクトルを用いて暗号化することによって、暗号文の解読を計算量的もしくは情報理論的に解読困難なものにすることができる。
しかも、入力された平文に応じて、擬似乱数生成部が、平文ごとに擬似乱数を自動的に生成し、その擬似乱数で暗号キーを生成するようにしているので、暗号キーを平文に応じて可変にすることができる。異なる平文の暗号化に、同一の暗号キーを用いた場合には、そのキーで暗号化された暗号文を対比することによって暗号キーを予測できることがある。しかし、平文ごとに暗号キーを変更するようにすれば、暗号キーを予測することが不可能となり、暗号を見破られることがなくなる。平文ごとに異なる暗号キーを用いることになって、暗号キーを推測されることも防止できる。
このような暗号は、暗号キーがなければ、復号化して平文を生成することができないので、情報の漏洩を防止できる。
【００２３】
第５の発明によれば、平文のデータ長以上のデータ長を有する擬似乱数を自動的に生成できるので、解読され難い暗号化を効率的に行なうことができる。
【００２４】
第６、第７の発明によれば、擬似乱数生成部で生成した可変擬似乱数を用いることによって平文ごとに、対応した暗号キーを生成することができる。
特に、擬似乱数を生成するための演算には、多重マルコフ過程を形成したので、初期値鋭敏性と、一様性とを持ちながら、周期性がない擬似乱数を生成できるので、きわめて安全性が高い暗号化が可能になる。
【００２５】
また、暗号キーを、可変擬似乱数と固定ベクトルまたは固定のベクトルをシードして生成した可変ベクトルとの和で生成するようにしているので、受信側にも、固定擬似乱数または固定シードを予め設定しておけば、暗号を送信する際には、可変シードのみを送信することによって、暗号の受信側で暗号キーを生成することができる。
このように、復号化側で暗号キーを生成できれば、暗号キーを通信する必要がなく、通信経路で暗号キーが盗まれる危険性がない。また、通信経路で、可変シードを盗んだとしても、予め設定された固定擬似乱数や、固定シードを盗まなければ、暗号キーを生成することは困難である。
【００２６】
特に、第７の発明によれば、擬似乱数生成部によって、可変シードを用いて生成された可変擬似乱数と、固定シードを用いて生成された擬似乱数のベクトルとのベクトル和を演算して暗号キーを生成するようにしているので、平文のデータ長に応じたデータ長の大きな固定ベクトルを設定しておく場合と比べて、データ記憶の負荷を小さくできる。しかも、この発明で生成した暗号を通信する際には、暗号キーの代わりに可変シードのみを送ればよいので、配送コストも大幅に低減できる。
【図面の簡単な説明】
【００２７】
【図１】情報管理システムの構成図である。
【図２】元データの例を示した図である。
【図３】多重化したベクトルの例を示した図である。
【図４】分散単位情報を生成するためのマトリクスを示した図である。
【図５】個々の分散単位情報を示した図である。
【図６】分散単位情報の登録先を示す登録先対応テーブルの例である。
【図７】分散単位情報をストレージグリッドに登録した状態を示した図である。
【図８】暗号化システムの構成図である。
【図９】暗号化の例を示した演算式である。
【図１０】暗号化システムにおけるデータの流れを示した模式図である。
【図１１】暗号キーの構成を示した演算式である。
【図１２】図８に示した暗号化システムにおける復号化の演算式である。
【図１３】擬似乱数生成手順を示したマトリクスである。
【図１４】擬似乱数生成手順を示したマトリクスである。
【図１５】他の暗号化システムにおけるデータの流れを示した模式図である。
【図１６】図１５に示した他の暗号システムにおける暗号キーの構成を示した演算式である。
【図１７】図１５に示した他の暗号化システムにおける復号化の演算式である。
【発明を実施するための最良の形態】
【００２８】
図１〜図７を用いてこの発明の情報管理システムの実施形態を説明する。
このシステムは、図１に示すように、情報登録先決定部２を有する管理サーバー１と、分散単位情報生成部４および情報復元部５を有するユーザー端末３と、この発明のストレージグリッドである複数のストレージグリッドＳ１，Ｓ２，Ｓ３，Ｓ４，・・・，Ｓσとからなる。
なお、上記各ストレージグリッドＳ１，Ｓ２，Ｓ３，Ｓ４，・・・，Ｓσは、ユーザー端末３からのアクセスに応じて全て同様に機能するので、以下の説明において、個々のストレージグリッドを区別して説明する必要がない場合には、全てのストレージグリッドに符号Ｓを用いる。各ストレージグリッドに区別が必要な場合には、Ｓ１，Ｓ２，Ｓ３，Ｓ４，・・・，Ｓσのように、Ｓに数字を付した符号を用いるものとする。そして、このシステムが備えているストレージグリッドＳの個数をσとする。
【００２９】
上記ユーザー端末３は、この発明のシステムにおいて、安全に登録したい情報、この発明の元データをもっているユーザーが使用する端末であり、管理サーバー１および複数のストレージグリッドＳに接続可能である。そして、このユーザー端末３の分散単位情報生成部４と、情報復元部５とは、それぞれ、管理サーバー１の情報登録先決定部２および各ストレージグリッドＳにアクセス可能である。
【００３０】
ただし、この発明のストレージグリッドとしては、上記のように通信手段１０に接続したサーバーに限らない。ユーザー端末３に接続できるデータ記憶手段ならどのようなものでもかまわない。
一方、上記管理サーバー１は、各ストレージグリッドＳから、ユーザーが登録したデータを入手できないようにしている。
【００３１】
そして、上記ユーザー端末３の分散単位情報生成部４は、後で詳しく説明するが、情報を複数の単位に分割して分散単位情報を生成する機能と、生成した分散単位情報をそれぞれ、別々のストレージグリッドＳに登録する機能とを備えている。
また、ユーザー端末３の情報復元部５は、上記分散単位情報生成部４が生成し、各ストレージグリッドＳに分散して登録した分散単位情報を収集し、元データに復元する機能を備えている。
【００３２】
さらに、上記管理サーバー１の情報登録先決定部２は、上記分散単位情報生成部４が生成した複数の分散単位情報の登録先を決定する機能を備えている。すなわち、どの分散単位情報をどのストレージグリッドＳへ登録すべきかを決定する。そして、各分散単位情報とストレージグリッドＳとの対応関係を、ユーザー端末３からのアクセスに応じて当該ユーザー端末３に通知する。
なお、上記情報登録先決定部２は、上記分散単位情報の具体的な内容ではなく、分散単位情報の単位特定コードや、単位名など、その情報の分散単位を特定することができる情報に登録先を対応付けるようにする。
【００３３】
例えば、分散単位情報ごとに番号を付けて第１〜第τのグループとした場合、第１グループはストレージグリッドＳ１、第２グループはストレージグリッドＳ２、というように、対応関係を決める。
そして、分散単位情報のグループとストレージグリッドＳとの対応関係は、分散単位情報が生成されるごとに情報登録先決定部２がランダムに決定するようにしている。分散単位情報の登録先をランダムに決定するとは、分散単位情報生成部４が生成する分散単位情報の数分の登録先を、複数のストレージグリッドＳからランダムに選択するとともに、個々の分散単位情報とストレージグリッドとの対応付けをランダムに行なうということである。
【００３４】
上記分散単位情報と登録先との対応関係が、そのまま分散単位情報の配列順に対応するので、この対応関係をランダムに決定することによって、計算量的に配列順の予測を困難にし、情報をより確実に守ることができる。
上記のようにして決定した、分散単位情報とストレージグリッドとの対応関係を定めた情報が、この発明の管理情報である。
【００３５】
このステムによって、ユーザー端末３が生成した元データを安全に保存し、それを取り出す例を、以下に説明する。
はじめに、ユーザー端末３によって生成した元データから、上記分散単位情報生成部４が分散単位情報を生成する手順を説明する。そして、以下に説明する分散単位情報の生成手順は、ユーザー端末３の分散単位情報生成部４に予め設定したプログラムによって自動的に行なわれるものである。
なお、ここでは、元データは図２に示す「さみだれをあつめてはやしもがみがわばしょう」という４２バイトからなるデータとする。
【００３６】
まず、分散単位情報生成部４は、上記元データを、予め設定された単位データ長からなる要素で構成されるベクトルＡとした場合の要素数εを算出する。この単位データ長は、上記分散単位情報生成部４が、分散単位情報を生成する際に、予め設定しておくものであるが、その大きさはいくらでもかまわないし、元データに応じて変更してもかまわない。この実施形態では、元データの１文字に対応する「２バイト」を上記単位データ長としている。
そこで、上記単位データ長の要素からなるベクトルＡは、図２に示すように、４２バイトの元データを、１文字に対応する単位データ長で区切ったものとなり、要素数ε＝２１個の要素からなるベクトルＡ＝（ａ１，ａ２，ａ３，・・・，ａ２１）となる。
【００３７】
なお、上記単位データ長の分散単位情報生成部４への設定は、人が手入力で行なってもよいし、分散単位情報生成部４が、自動的に決定するようにしてもよい。あるいは、他の装置で単位データ長を決定して、その単位データ長をユーザー端末３の分散単位情報生成部４へ入力するようにしても良い。
【００３８】
また、元データのデータ長と、単位データ長およびベクトルＡの要素数εには、（元データのデータ長）／（単位データ長）＝（要素数ε）の関係が成り立つ。そこで、分散単位情報生成部４は、必要な要素数εとするために、元データのデータ長を判断し、そのデータ長に応じて単位データ長を決定するようにしてもよい。
また、上記単位データ長を設定する代わりに、要素数εを予め設定しておくようにし、分散単位情報生成部４は、設定された要素数εに基づいて単位データ長を算出するようにしてもよい。
【００３９】
次に、分散単位情報生成部４は、上記ベクトルＡを多重化数μで多重化する。この多重化数μは、予め、分散単位情報生成部４に設定しておいてもよいし、その都度、ユーザーが入力してもよく、さらに、他の装置で決定した数値を入力してもよい。
ここでは、多重化数μ＝２とし、ベクトルＡを２重化したベクトルのベクトル２Ａを生成する。このベクトルのベクトル２Ａは、Ａ＝Ａ１＝Ａ２とすると、｛Ａ１‖Ａ２｝となる。ここで、「‖」はベクトルを結合する記号であり、ベクトル２Ａは、図３に示すようにベクトルＡの要素「ａ１，ａ２，ａ３，・・・，ａ２１」を２回繰り返したものとなる。従って、この実施形態においては、この発明の多重化数μが２であり、ベクトル２Ａは、４２個の要素からなるベクトルとなる。
【００４０】
このように、上記ベクトルＡを多重化したら、次に、この全要素を、分散数τ個の分散単位情報に分ける。なお、分散数τは、予め分散単位情報生成部４に設定しておいても良いし、その都度ユーザーが入力しても良く、さらに、他の装置で決定した数値を入力しても良い。ただし、以下には、分散数τ＝６とし、６個の分散単位情報を生成する場合について説明する。４２個の要素を６個の分散単位情報に分けて、各分散単位情報には７個の要素が含まれるようにするが、各分散単位情報には、上記ベクトルＡの全要素が含まれないようにするとともに、同一の要素が重複しないようにする。
上記４２個の要素を７個に分け、各分散単位情報に、ベクトルＡの全要素が含まれず、かつ、同一の要素が重複しないようにするために、例えば、図４に示すような７行６列のマトリクス（ｂｉｊ）の各セルに、上記全要素を、行列順に配置する。
【００４１】
すなわち、上記要素ａ１，ａ２，ａ３，・・・，を、マトリクス（ｂｉｊ）のｂ１１から行方向へ順番に並べ、ｂ１６に、要素ａ６を配置したら、第２行の１列ｂ２１から行方向へ要素ａ７，ａ８，・・・を並べる。このように、行方向へ並べることを繰り返して、最後のセル、第７行第６列ｂ７６にａ２１をあてはめ、全ての要素を配置する。このようにすると、ｂ１１からｂ４３に、ベクトルＡの全要素が一通り配置され、ｂ４４からｂ７６に、再度、ベクトルＡの全要素が配置されることになる。そして、これらの要素で構成されるマトリクス（ｂｉｊ）の各列をそれぞれ、分散単位情報ｄ１，ｄ２，ｄ３，ｄ４，ｄ５，ｄ６とする。つまり、分散単位情報生成部４は、図５に示す６個の分散単位情報ｄ１，ｄ２，ｄ３，ｄ４，ｄ５，ｄ６を生成する。
【００４２】
上記のようにして生成した個々の分散単位情報ｄ１，ｄ２，ｄ３，ｄ４，ｄ５，ｄ６には、それぞれ７個の要素が含まれるが、各分散単位情報ｄ１，ｄ２，ｄ３，ｄ４，ｄ５，ｄ６に、同一の要素が重複して含まれない。
上記ベクトルＡを多重化して生成したベクトルの全要素を、分散数τの分散単位情報に分ける方法は上記の方法に限らないが、マトリクス（ｂｉｊ）の行方向へ、各要素をベクトルＡ内の並び順に並べることによって、一つの分散単位情報に、ベクトルＡの全要素が含まれず、同じ要素が重複して含まれない分散単位情報を簡単に生成できる。
【００４３】
また、上記多重化数μおよび分散数τは、どのようにして決めても良いが、「一つの分散単位情報に、ベクトルＡの全要素が含まれず、同じ要素が重複して含まれない」という条件を満たすように、上記多重化数μおよび分散数τを決める必要がある。この条件を満たすために、ベクトルＡの要素数ε、多重化数μおよび分散数τを、次の条件１または２のいずれかを満たすように決める。
上記条件１は、分散数τと要素数εとの最大公約数ｑが１のとき、多重化数μ＜分散数τであり、上記条件２は、分散数τと要素数εとの最大公約数ｑが１でないとき、上記分散数τおよび要素数εが互いに割り切れない関係であって、かつ、多重化数μ≦（分散数τ／最大公約数ｑ）である。
上記条件１または２を満たす、分散数τ、要素数ε、多重化数μを採用しなければならない。
【００４４】
この実施形態では、管理サーバー１の情報登録先決定部２が、上記条件を満たす多重化数μと、分散数τとを決定する。
具体的には、ユーザー端末３に元データが入力されたら、分散単位情報生成部４は、上記の手順でベクトルＡを生成する。その際に、元データのデータ長と単位データ長とに基づいてベクトルＡの要素数εを算出する。分散単位情報生成部４が要素数εを算出したら、ユーザー端末３は、管理サーバー１へアクセスし、上記要素数εを送信する。要素数εを受信した管理サーバー１の情報登録先決定部２は、要素数εに応じて多重化数μ、分散数τを何通りか算定する。なお、上記分散数τは、このシステムのストレージグリッドＳの個数σを上限とする。
【００４５】
実際には、上記要素数εに対応して、上記条件１または２のいずれかを満たす多重化数μと分散数τとの組み合わせが複数ある場合があるので、情報登録先決定部２は、可能な組み合わせを特定したら、それをユーザー端末３へ送信してそれを表示させ、その中からユーザーにひとつの組み合わせを選択させるようにする。
情報登録先決定部２が提示した多重化数μと分散数τとの組の中から、ユーザーがいずれかの組み合わせを選択した場合、その選択信号の入力によって対応する多重化数μと分散数τとが、分散単位情報生成部４に設定されるとともに、この設定された多重化数μは、管理サーバー１へも通知され、管理情報とともに情報登録先決定部２に記憶される。つまり、この実施形態では、上記情報登録先決定部２が管理情報を記憶する機能を備えているが、この情報登録先決定部２とは別の管理情報記憶部を備えてもよい。
【００４６】
また、情報登録先決定部２は、分散単位情報と登録先との対応関係を特定した登録先対応テーブルを作成して、このテーブルを上記分散単位情報生成部４へ送信するようにしている。そして、情報登録先決定部２は、この登録先対応テーブルに、元データを特定するための情報を対応付けて管理情報として記憶する。
なお、上記登録先対応テーブルには、分散単位情報の配列順の情報も含まれている。
【００４７】
分散単位情報生成部４は、上記のように決定された多重化数μおよび分散数τに基づき、図４に示すマトリクスを用いて、図５に示す分散単位情報ｄ１，ｄ２，ｄ３，ｄ４，ｄ５，ｄ６を生成する。このとき、上記ベクトルＡの要素数ε＝２１、多重化数μ＝２、分散数τ＝６は、上記条件２を満たしているので、各分散単位情報ｄ１，ｄ２，ｄ３，・・・には、ベクトルＡの全要素は含まれず、かつ、同一要素の重複もない。
【００４８】
分散単位情報生成部４は、分散単位情報を生成したら、上記管理サーバー１の情報登録先決定部２から送信された登録先対応テーブルに基づいて各分散単位情報を登録する。例えば、情報登録先決定部２から、図６に示す分散単位情報と登録先ストレージグリッドＳとの登録先対応テーブルが送信された場合、分散単位情報生成部４は、図７に示すように、各ストレージグリッドＳに、各分散単位情報を登録する。すなわち、ストレージグリッドＳ１，Ｓ２，Ｓ３，Ｓ４，Ｓ５，Ｓ６に、それぞれ、７個の要素からなる分散単位情報ｄ３，ｄ２，ｄ６，ｄ４，ｄ５，ｄ１を登録する。
【００４９】
そして、上記各ストレージグリッドＳに登録した分散単位情報には、この情報管理システムとは別の任意の認証システムを使用し、許可された者しかアクセスできないようにするが、それでも、不正アクセスによって分散単位情報が盗まれる可能性はある。しかし、このシステムでは、元データに対応したベクトルＡが、分散して登録されるので、いずれかのストレージグリッドＳから分散単位情報が盗まれたとしても、その中には、ベクトルＡの一部しか含まれていないことになる。そのため、一つのストレージグリッドＳから情報を盗んでも、それだけで元データを知ることはできない。つまり、個々のストレージグリッドＳあるいは個々の分散単位情報の範囲で、情報量的安全性を確保している。
【００５０】
かりに、複数のストレージグリッドＳのセキュリティを破って、全ての分散単位情報を盗めたとしても、分散単位情報の配列が分からなければ、元データを突き止めることはできない。
つまり、上記のように複数のストレージグリッドＳに情報を分散して登録することによって、もしも、個々のストレージグリッドＳに登録された分散単位情報にアクセスされても、情報を守ることができる。
【００５１】
また、分散して登録した分散単位情報の配列を、上記管理情報なしに予測するためには、配列の組み合わせを試す必要があるが、分散単位情報の配列順を考慮した全ての組み合わせ数はσＰτとなる。従って、システムが備えたストレージグリッドの個数σあるいは分散数τのいずれか一方または両方を大きくすれば、配列を試すための計算量が急激に増えることになる。
一方で、現状のコンピュータの計算能力では、エントロピーが８０以上であれば、計算量的安全と言われている。従って、２８０≦σＰτとなるようなσとτを選べば、計算量的安全性も確保できる。
例えば、ストレージグリッド個数σ＝分散数τの場合、２４Ｐ２４＜２８０＜２５Ｐ２５である。つまり、ストレージグリッドの個数σと、分散数τとを２５以上にすれば、エントロピーが８０を超えることになり、計算量的安全性を得られる。
また、エントロピー８０は、２８０＜１０００Ｐ８となるので、ストレージグリッドの個数σが１０００の場合には、分散数τが８で、計算量的安全性を得られる。
【００５２】
次に、上記情報を登録したユーザーが、元データを復元する手順を説明する。
ユーザーが、ユーザー端末３の情報復元部５に対し、特定の情報の復元を指示すると、情報復元部５は、管理サーバー１の情報登録先決定部２へアクセスし、元データを特定するための情報を指定して登録先及び情報の配列順である登録先対応テーブルと、多重化数μとを問い合わせる。なお、上記情報復元部５の指示は、例えば、ユーザー認証によってユーザーが特定されると、そのユーザーの閲覧可能なファイル一覧を管理サーバー１がユーザーに送信し、その中からユーザーがファイルを特定することによって実行される。
情報登録先決定部２は、指定された元データを特定するための情報に対応付けて記憶している登録先対応テーブル（図６参照）と、多重化数μとを上記情報復元部５へ送信する。
【００５３】
ここでは、図６に示す対応テーブルが情報復元部５へ送信されるので、情報復元部５は、この対応テーブルに従ってストレージグリッドＳ１〜Ｓ６から、それぞれ分散単位情報を収集する。このとき、管理サーバーがセッションＩＤと共に送信先情報とファイル特定情報をグリッドに送信し、それを受けてグリッドがユーザーに該当するファイルを送信する。ユーザー側システムは受信ファイルの正当性をセッションＩＤによって確認するようにしてもよい。そして、収集した６個の分散単位情報を、ｄ１〜ｄ６の順に並べ替えて、図４に示すマトリクス（ｂｉｊ）を作る。このマトリクス（ｂｉｊ）の要素を、ｂ１１から行方向へ繰り返し、順に並べたものが、ベクトルＡを繰り返した｛Ａ１‖Ａ２｝であり、これをそのまま繋げたものが、元データを２回繰り返した情報になる。すなわち、「さみだれをあつめてはやし・・・ばしょうさみだれを・・・ばしょう」となる。
【００５４】
上記分散単位情報の並べ替えによって元データを２回繰り返した情報が生成されるのは、上記分散単位情報生成部４が、ベクトルＡを多重化する際に、多重化数μ＝２としたためである。上記情報復元部５は、情報登録先決定部２から受信した多重化数μで分割して、上記ベクトル２ＡをベクトルＡ、すなわち元データとする。
ただし、管理情報に、元データのデータ長や、元データの要素を含む登録先を特定する情報を含み、情報復元部５が、その管理情報に基づいて、元データを復元するために必要な分散単位データのみを収集するようにしてもよい。例えば、図７に示す６個のストレージグリッドには、二重化した元データの全要素が分散して登録されているが、これらのストレージグリッドのうち、３個のストレージグリッドＳ３，Ｓ４，Ｓ５に、元データの全要素が含まれている。従って、元データの復元のためには、全ての情報登録先から分散単位情報を収集しなくても、上記３個のストレージグリッドＳ３，Ｓ４，Ｓ５のみから情報を収集すれば足りる。
【００５５】
また、上記実施形態では、情報復元部５が、自ら、ストレージグリッドにアクセスして情報を収集する例を説明したが、ユーザーからの指示に基づいて、情報登録先決定部あるいは管理情報記憶部が、元データの復元に必要な情報を記憶しているストレージグリッド指令を出して、記憶している分散単位情報を上記情報復元部５へ送信させるようにしてもよい。情報復元部５は、ストレージグリッドから送られた情報を、管理情報に基づいて復元する。
【００５６】
上記のように、情報を多重化し、分散して登録することによって、情報を守ることができる。
特に、元データに対応するベクトルＡを多重化してから分散するようにしているため、全ストレージグリッドＳから見れば、元データに含まれる要素が、それぞれ複数個、登録されていることになる。そのため、一部のストレージグリッドＳが破壊されて、そこに登録された分散単位情報が消失したとしても、元データを復元することができる。なぜなら、消失した分散単位情報に含まれる要素と同じ要素が、他の分散単位情報に含まれているからである。厳密には、多重化数μで多重化した場合には、｛μ−１｝個の分散単位情報が消失しても、残りの分散単位情報から、元データの復元が可能である。
【００５７】
例えば、図７に示すストレージグリッドＳ１〜Ｓ６のうち、ストレージグリッドＳ１が壊れてしまった場合、分散単位情報ｄ３が消失してしまうことになる。しかし、この分散単位情報ｄ３に含まれる要素と全く同じ要素が、分散単位情報ｄ６に含まれている。この分散単位情報ｄ６は、ストレージグリッドＳ３に登録されているので、ストレージグリッドＳ１が破壊されても消失することはない。
【００５８】
従って、上記情報復元部５が、各ストレージグリッドＳから収集した分散単位情報を配列順に並べ替えれば、消失して抜けている部分に対応する要素と同一の要素が、他の分散単位情報に含まれていることが分かり、元データを復元することができる。
【００５９】
なお、上記実施形態では、上記分散単位情報生成部４および情報復元部５を同一のユーザー端末３に設けて、このユーザー端末３を用いて、情報の登録と復元とを行なっている。しかし、上記分散単位情報生成部４および情報復元部５は、必ずしも同一端末に備えなくてもよい。例えば、情報を登録する際に使用する端末には、少なくとも分散単位情報生成部４を備え、情報を復元する際に使用する端末には、少なくとも情報復元部５を備えていればよい。
このように、分散単位情報生成部４と情報復元部５とを別の端末に備え、分散単位情報生成部４が登録した情報を、情報復元部５で復元するようにすれば、分散単位情報生成部４側から情報復元部５側へ情報を盗まれることなく送信することができる。
【００６０】
また、この実施形態では、情報登録先決定部２を、ユーザー端末３とは別装置である管理サーバー１に設けているが、情報登録先決定部２をユーザー端末３に設けて、ユーザー端末３で情報登録先を決定するようにしてもよい。ただし、このようにユーザー端末３で、情報と登録先を決定し、管理情報を生成するようにした場合には、その管理情報をユーザー端末３から分離できるメモリなどに記憶させるようにした方が安全である。
なお、情報登録先決定部２をユーザー端末３と別装置の管理サーバー１に設ければ、一つの情報登録先決定部２に、複数の分散単位情報生成部４を接続することができる。
【００６１】
また、上記管理サーバー１の管理者が、ユーザー端末３の使用者とは、別の者であっても、管理サーバー１は、ストレージグリッドＳから分散単位情報を入手する機能を備えていないので、管理サーバー１から元データや、分散単位情報などが盗まれることはない。
さらに、分散単位情報生成部４に、データを暗号化する手段を連係して、元データを暗号化し、暗号化した分散単位情報を記憶するようにすれば、多重分散によるエントロピーに暗号化によるエントロピーを加えたエントロピーを確保でき、計算量的安全性をさらに高くすることができる。
さらにまた、情報登録先決定部２に管理情報を暗号化する手段を連係し、暗号化した管理情報を通信するようにすれば、管理情報の通信経路上での安全も保たれる。
【００６２】
次に、図８〜図１４に示した暗号化システムについて説明する。
図８は、このシステムを構成する暗号化装置６のブロック図であって、この暗号化装置６は、データ入出力部７と、暗号化部８と、擬似乱数生成部９とからなる。
上記暗号化部８は、データ入出力部７から入力された平文を暗号化して暗号文を生成する機能と、生成した暗号文を、データ入出力部７を介して出力する機能とを備えている。
また、擬似乱数生成部９は、後で説明する方法によって、予測不可能な擬似乱数を生成する機能を備えている。
なお、上記データ入出力部７を介して、平文の入力および暗号文の出力を行なうが、この実施形態では、上記データ入出力部７が、この発明の平文入力部に相当する。
【００６３】
そして、上記暗号化部８は、擬似乱数生成部９で生成された擬似乱数に基づいて暗号キーを生成し、この暗号キーを用いて平文を暗号化する。
ここでは、元データを多重化して生成したベクトルを平文Ｍとし、暗号キーＥ１を用いて暗号化した暗号文をＸとする。上記暗号キーＥ１は、平文Ｍのデータ長以上のデータ長をもった擬似乱数からなるベクトルである。暗号化部８は、図９に示す式（i）の演算を行ない、この暗号キーＥ１と平文Ｍとのベクトル和のベクトルを生成する。このベクトルが暗号文Ｘである。
【００６４】
次に、暗号化部８が、暗号キーＥ１を生成し、暗号文Ｘを生成する手順を、図１０を用いて説明する。
図１０に示すように、暗号化部８には、擬似乱数のシードの基になるベクトルＲ１と、平文Ｍのデータ長以上のデータ長を持ち、平文Ｍの不確定性を下回らない不確定性を有するベクトルＫとを予め記憶している。
これらの、ベクトルＲ１とベクトルＫとは、予め、設定されたものであり、暗号化処理のたびに変更する必要はない。そして、上記ベクトルＲ１は、この発明の可変シードを生成するための固定のベクトルであり、上記ベクトルＫは、上記擬似乱数生成部９で生成された擬似乱数とのベクトル和を演算するためのこの発明の固定ベクトルである
【００６５】
また、擬似乱数生成部９は、入力されたシードを用いて擬似乱数を生成するための擬似乱数生成プログラムを予め記憶している。この擬似乱数生成プログラムの擬似乱数生成手順については、後で詳しく説明するが、この擬似乱数生成プログラムは任意のベクトルからなるシードを用いて、任意のデータ長の擬似乱数を生成できる。そして、この擬似乱数生成プログラムが、シードＣを用いて擬似乱数を生成したとき、生成された擬似乱数を関数でＥ（Ｃ）と表わすことにする。
【００６６】
また、平文Ｍが暗号文Ｘに暗号化されて出力される際に、暗号化装置６におけるデータの流れを、図１０の矢印（１）から（４）で示している。
図１０の矢印（１）のように、暗号化すべきベクトルである平文Ｍが暗号化部８に入力されると、暗号化部８は、次に説明するようにしてベクトルＲｉを決める。このベクトルＲｉは、平文Ｍごとに、暗号化部８で決めるベクトルで、暗号化を行なうたびに異なるものを決定する必要がある。そのためには、暗号化部８が、例えば、現時点の日時、分秒に対応する数字や、物理乱数生成器で生成された乱数や、任意のテキストとデータなどを用いて、ベクトルＲｉを決めるようにしておけばよい。
【００６７】
暗号化部８は、ベクトルＲｉを特定したら、図１０の矢印（２）に沿って記載したように、このベクトルＲｉと予め設定された固定のベクトルＲ１とのベクトル和〔Ｒｉ＋Ｒ１〕を演算し、これを可変シードとして擬似乱数生成部９へ入力する。なお、ここでは、上記「＋」は、ベクトル和記号を表わすものとし、図９，１１，１２，１６，１７に示す演算式におけるベクトル和記号の代わりに用いる。
つまり、平文Ｍごとに設定する可変のベクトルＲｉと固定のベクトルＲ１とのベクトル和〔Ｒｉ＋Ｒ１〕によって、この発明の可変シードを生成する。
さらに、暗号化部８は、入力された平文Ｍのデータ長を特定する。
暗号化部８は、上記のように可変シードを生成するとともに、平文Ｍのデータ長を特定したら、生成した可変シードと、平文Ｍのデータ長とを擬似乱数生成部９へ入力する（矢印（２））。
【００６８】
上記可変シードと、平文Ｍのデータ長とを入力された擬似乱数生成部９は、入力された可変シードに基づいて、上記平文Ｍのデータ長以上の擬似乱数Ｅ（Ｒｉ＋Ｒ１）を生成し、それを矢印（３）のように、暗号化部８へ返す。この擬似乱数Ｅ（Ｒｉ＋Ｒ１）は、平文Ｍに対応した可変シードに基づいて生成されたもので、この発明の可変擬似乱数である。
暗号化部８は、擬似乱数生成部９で生成された可変擬似乱数Ｅ（Ｒｉ＋Ｒ１）のベクトルに予め記憶しているベクトルＫをベクトル和して、図１１の式（ii）に示すように暗号キーＥ１を生成する。さらに、この暗号キーＥ１を用いて図９の式（i）に従って暗号文Ｘを生成して出力する（矢印（４））。
なお、このようにして生成された暗号キーＥ１は、平文Ｍの不確定性を下回らない不確定性を有する固定ベクトルＫを、可変擬似乱数Ｅ（Ｒｉ＋Ｒ１）からなるベクトルで置換したベクトルとみなすことができる。従って、上記暗号キーＥ１の不確定性も、平文Ｍの不確定性を下回らない。従って情報理論的安全を有する暗号化ができることになる。なおこのとき、暗号キーＥ１のエントロピーと、Ｒｉ，Ｒ１，Ｒｉ＋Ｒ１およびＥ（Ｒｉ＋Ｒ１）のエントロピーは全て等しく、Ｅ（Ｒｉ＋Ｒ１）はこのエントロピーにおける全ての値を変数として採り得る。
【００６９】
なお、この実施形態の暗号化システムでは、平文Ｍ以上のデータ長を持つベクトルＫが必要であるが、データ長の大きな元データを暗号化するためには、元データを、上記ベクトルＫのデータ長以下のデータ長を有するデータに分割して、個々の分割データをそれぞれ平文Ｍとすることにより、この暗号化システムでの暗号化が可能になる。このように、元データを分割して、分割した単位で暗号化するようにすれば、データ長の大きな元データを暗号化するために、巨大なベクトルＫを設定しなくても済む。
【００７０】
暗号化手順は、上記のとおりである。このようにして生成された暗号文Ｘを復号化するためには、上記暗号キーＥ１が必要であるが、この暗号キーＥ１は、可変擬似乱数のベクトルと固定ベクトルＫとのベクトル和である。また、上記可変擬似乱数は、固定のベクトルＲ１と可変のベクトルＲｉとのベクトル和をシードとして生成した擬似乱数である。
従って、復号側にも、上記擬似乱数生成部９を備えるとともに、上記固定ベクトルＫと、固定のベクトルＲ１とを予め設定し、暗号文Ｘごとに対応する可変のベクトルＲｉのみを暗号化装置６から受信すれば、上記暗号化装置６と同様に、上記暗号キーＥ１を生成することができる。そして、生成した暗号キーＥ１を用いて、図１２の式（iii）の演算によって暗号文Ｘの復号化が可能である。従って、暗号文の送受信の際に、暗号化ごとに異なる暗号キーＥ１を送受信する必要がない。暗号キーＥ１そのものを送受信することがないため、暗号キーＥ１が通信経路中で盗まれる危険もない。攻撃者がシードＲｉをインターセプトするなどして盗んだとしても、Ｒ１及びＫが判らなければＥ１を特定することは数学的に不可能である。
【００７１】
さらに、上記可変のベクトルＲｉが、通信中に盗まれたとしても、このベクトルＲｉから上記暗号キーＥ１を再生されることもないので安全である。
また、この暗号生成システムのように、平文と、平文の不確定性を下回らないベクトルとのベクトル和によって暗号を生成する方式は、ベクトルＲ１およびベクトルＫが漏洩しない限り、シャノン（Shannon）４８，４９で証明されているように、情報理論的に解読できないという特徴がある。すなわち、平文の不確定性を下回らない擬似乱数、すなわち上記暗号キーＥ１を用いて暗号化することによって、生成された暗号文の不確定性が、平文の不確定性と同等以上になる。この暗号文は、情報理論的安全性をもち、解読は不可能ということになる。つまり、ベクトルＲ１およびベクトルＫさえ漏洩しなければ、第三者に暗号化した情報内容を盗まれる心配はない。
【００７２】
そして、この暗号化システムにおいては、上記したように、暗号文を、通信手段を用いて送受信する場合にも、暗号キーＥ１そのものを送受信する必要がないので、通信中に暗号キーが盗まれることはない。また、暗号キーの元になる固定ベクトルＫと、可変擬似乱数のシードの基になる固定のベクトルＲ１も、暗号化のたびに通信する必要のないデータなので、盗まれる危険性が極めて低く、結果として暗号キーＥ１を第三者に生成される危険性はほとんどない。
つまり、この暗号化システムを用いて情報を暗号化することによって、機密情報などを確実に守ることができる。
【００７３】
次に、上記擬似乱数生成部９が、当該擬似乱数生成部９に予め設定された擬似乱数生成プログラムに基づいて、ｎ進法で表した擬似乱数を生成する手順を、図１３、図１４に基づいて説明する。なお、この実施形態では、上記ｎを、ｎ＝１０とした例である。ただし、ｎは１０に限らず、ゼロ以外の数ならどのような値でもかまわない。
【００７４】
擬似乱数生成部９は、上記暗号化部８から、ベクトルＲｉとベクトルＲ１のベクトル和からなる可変シードと、平文Ｍのデータ長とが入力されたら（図１０参照）、上記可変シードを用いて、平文Ｍのデータ長以上の擬似乱数を生成する。
まず、擬似乱数生成部９は、上記可変シードのベクトルを分割して、図１３に示す行見出しｉおよび列見出しｊに、それぞれ、分割した要素を擬似乱数の種として配置し、マトリクス（ｒｉｊ）の計算表を作成する。
そして、このマトリクス（ｒｉｊ）の各セルに、予め決められた順に数値をあてはめていく。
【００７５】
ただし、最初にあてはめるべきセル、例えば、図１３の１行１列のセルｒ１１には、そのセルｒ１１に対応する第１列にあてはめた列見出しの数値と、同じく上記セルｒ１１に対応する第１行にあてはめた行見出しの数値とを加算し、その加算値に対してｎ＝１０を法とする演算を行ない、その演算結果をあてはめる。
そして、以後にあてはめるべき、上記セル１１以外の全てのセルには、当該セルに対応する行および列において、セルまたは見出しにすでにあてはめられている数値のうち、少なくとも３つ以上の数値の合計に対する１０を法とする演算結果をそのセルにあてはめる。
【００７６】
上記の方法を、図１３に基づいてさらに具体的に説明する。
この例では、特定の平文Ｍに対応して生成された上記可変シードとなるベクトル〔Ｒｉ＋Ｒ１〕＝（０，５，１，５，０，８）とする。このベクトルを前後に分割して、図１３に示すように、行見出しｉには「５，０，８」を配置し、列見出しｊには「０，５，１」を配置して３行３列のマトリクスを作成する。
【００７７】
上記のように可変シードを行および列の見出しとして、３行３列のマトリクス（ｒｉｊ）のセルを作成したら、以下の演算によって各セルに数値をあてはめる。
まず、第１行第１列のセルｒ１１には、第１行の行見出し「５」と第１列の列見出し「０」の和「５」に対して１０を法とする演算を行ない、演算結果である「５」をあてはめる。
次に、上記セルｒ１１以外のセル、例えば、第２行第１列のセルｒ２１には、すでにあてはめられている第２行の行見出し「０」、第１列の列見出し「０」、および第１列のセルｒ１１の数値「５」の和「５」に対して１０を法とする演算を行ない、演算結果である「５」をあてはめる。このようにしてまず第１列のセルｒ１２からセルｒ３１の順に数値をあてはめ、それを列ごとに繰り返す。なお、上記セルｒ１１が、この発明の第１のセルに相当する。
【００７８】
なお、上記の具体例ではセルｒ１１を、最初に数値をあてはめるべきセルとしているが、最初に数値をあてはめるべきセルは、いずれのセルであってもよい。また、最初のセル以外のセルに数値をあてはめる順序も、どのように決めてもよい。ただし、上記したように、数値をあてはめるべきセルに対応する行または列上のセルまたは見出しにすでにあてはめられている数値のうち、少なくとも３つ以上の数値を加算し、その結果に対して１０を法とする演算を行なわなければならない。
そして、図１３の例は、数値をあてはめるべきセルに対応する行または列のセルまたは見出しにすでにあてはめられている数値の全ての数値を加算し、その結果に対して１０を法とする演算を行ない、演算結果をあてはめたものである。
【００７９】
以上のようにして、全てのセルに数値をあてはめたら、それらを、セルｒ１１から、図１２の矢印で示す順に並べて、９桁の擬似乱数のベクトル「５，５，８，５，５，１，６，７，１」を生成する。ただし、上記マトリクスの各数値をどのような順序で並べて擬似乱数のベクトルを生成してもよい。
さらに、桁数の大きな擬似乱数を生成する場合には、セルが多いマトリクスを作成し、上記した手順によって各セルに数値をあてはめる。そして、上記マトリクスの各セルにあてはめられた数値を並べれば、桁数の大きな擬似乱数を単純な方法で生成することもできる。
【００８０】
この暗号化システムでは、上記のようにして３行３列のマトリクスで生成した擬似乱数を行見出しｉまたは列見出しｊとして、さらに大きな桁数の擬似乱数を生成するようにしている。図１４は、図１３のマトリクスで生成した９桁の擬似乱数を行見出しｉに配置するとともに、列見出しｊとして３桁の別のベクトルを配置し、９行３列のマトリクスを作成した例である。
【００８１】
そして、この９行３列のマトリクスを用いて、上記３行３列のマトリクスを用いたときと同様の手順によって各セルに数値をあてはめ、例えば、図に示す矢印のように数値を並べれば、２７桁の擬似乱数を生成することができる。
ただし、必要な擬似乱数が２７桁未満の場合には、算出した２７個の数値を並べる際に、必要な個数だけを並べるようにすればよい。なお、このようにして生成された乱数は、数学的にはシードを高次元に写像変換したものであることから、その不確定性は単純には理論上、シードの不確定性に等しいと考えられる。
【００８２】
また、さらに大きな擬似乱数を生成するためには、図１４で示したマトリクスによって生成した擬似乱数からなるベクトルの一部の要素、例えば、最後の３桁分の数値（８，８，５）を列見出しｊとし、他の２４個の数値を行見出しｉとして、２４行３列のマトリクスを用い、上記と同様の手順によって擬似乱数を生成する。そして、さらに大きな擬似乱数を生成するためには、上記２４行３列のマトリクスによって生成された擬似乱数の一部を列見出しｊとし、残りを行見出しとしたマトリクスを用いる。このような手順を繰り返せば、いくらでも大きな擬似乱数を生成することができる。つまり、必要な桁数になるまで上記の手順を繰り返せば、所望の桁数の擬似乱数を得ることができる。従って、平文Ｍのデータ長が大きな場合には、上記のように擬似乱数の生成を繰り返して、擬似乱数の桁数を大きくし、擬似乱数の長さを平文Ｍのベクトルの長さ以上にすることができる。なお、このようにして生成された乱数の不確定性は理論上、シードの不確定性に等しい。
【００８３】
なお、上記では、３行３列のマトリクスで生成した９桁の擬似乱数を行見出しとし、新たなベクトルを列見出しとして、２７桁の乱数を生成し、それ以上の擬似乱数を生成する際には、既に生成された擬似乱数を行見出しと列見出しに用いるようにしているが、可変シードを用いて９桁の擬似乱数を生成したのち、その擬似乱数を分割して、行見出しと列見出しとに用いるようにしてもよい。このとき、この実施形態のように、最後の３桁分の数値を列見出しとし、残りを行見出しとするという規則を予め定めておけば、桁数の大きな擬似乱数を自動的に生成することができる。このようにすれば、演算途中で、列見出しとなるベクトルを新たに用意する必要がなくなる。
【００８４】
上記の手順は、擬似乱数生成部９に予め設定された擬似乱数生成プログラムによって実行され、所望の擬似乱数が自動的に生成される。
このようにして生成された擬似乱数は、上記いずれの方法によっても、高い一様性と無周期性をもつ。なぜならこれらは多重マルコフ過程であり、かつ、初期値鋭敏性を持つため、この演算結果にはエルゴード性があると認められるからである。また、そのことによって予測性が極めて低いものになる。
【００８５】
もしも、ここで各セルの数値を、単に行見出しと列見出しとの２つの数値の和としたならば、各セルに配置された数値から行見出しや列見出しを予測することが可能になる。
これに対し、この暗号化システムの擬似乱数生成方法では、見出しの数値以外の数値が必ず加算されるので、予測性が極めて低いものになる。例えば、図１４に示すマトリクス（ｒｉｊ）において、１行１列のセルｒ１１、２行１列のセルｒ２１、４行１列のセルｒ４１、５行１列のセルｒ５１は、いずれも行見出しが「５」、列見出しが「８」である。このような見出しの数値だけを加算した場合には、各セルに当てはめられる数値はすべて「３」となるが、この実施形態の方法では、図１４に示すように上記各セルｒ１１、ｒ２１、ｒ４１、ｒ５１の値は全て異なる。このようにして、予測不可能な擬似乱数を生成できる。
【００８６】
なお、上記のように平文のベクトル以上の長さを有する擬似乱数ベクトルを用いた暗号化を行なう場合、平文のデータ長が大きくなれば、大きな擬似乱数が必要になる。そのため、元データの情報量が多くなると、巨大な擬似乱数が必要になるが、従来は、周期性のない一様な擬似乱数を実用的な時間内に生成することが著しく困難であった
【００８７】
しかし、上記擬似乱数生成部９のように自動的に予測不可能な擬似乱数を生成する機能を備え、第１段階では小さな擬似乱数を生成し、生成した擬似乱数を行見出しや列見出しとして、さらに大きな擬似乱数を生成するようにすれば、いくらでも大きな擬似乱数を自動的に生成できるので、大きな平文を暗号化するための暗号キーを簡単に生成することができる。
そして、この暗号化システムでは、擬似乱数生成部９が、上記の手順に従って生成した擬似乱数を用いて、暗号キーＥ１を生成するようにしている。
【００８８】
図１５〜図１７は、暗号化手順を、先の図１０とは相違させた他の暗号化システムを示した図である。
この他の暗号化システムも、図８に示すシステムと同様に暗号化装置６を備え、この暗号化装置６には、データ入出力部７、暗号化部８および擬似乱数生成部９を備えている。そして、暗号化部８に平文Ｍが入力されると、暗号化部８は、擬似乱数生成部９が生成した擬似乱数を利用して、暗号キーＥ２を生成するとともに、その暗号キーＥ２によって平文Ｍを暗号化し、暗号文Ｘを出力する。
【００８９】
次に、暗号化部８が、暗号キーＥ２を生成し、暗号文Ｘを生成する手順を、図１５を用いて説明する。
図１５に示すように、暗号化部８には、擬似乱数のシードの基になる固定のベクトルＲ１と、このベクトルＲ１とは別の固定のベクトルで、上記擬似乱数とは別の擬似乱数のシードとなるベクトルＲ２とを予め記憶している。これら、ベクトルＲ１とベクトルＲ２とは、予め設定されたものであり、暗号化処理のたびに変更する必要はない。但し、ベクトルＲ１とベクトルＲ２の次元はベクトルＲｉに等しいものとする。
【００９０】
また、擬似乱数生成部９は、入力されたシードを用いて擬似乱数を生成するための擬似乱数生成プログラムを予め記憶している。この擬似乱数生成プログラムの擬似乱数生成手順については、図１３、図１４に基づいて説明した場合と同じであり、この擬似乱数生成プログラムは任意のベクトルからなるシードを用いて、任意のデータ長の擬似乱数を生成できる。そして、この擬似乱数生成プログラムが、シードＣを用いて擬似乱数を生成したとき、生成された擬似乱数を関数でＥ（Ｃ）と表わすことにする。
【００９１】
図１５の矢印（１）のように、暗号化すべきベクトルである平文Ｍが暗号化部８に入力されると、暗号化部８は、次に説明するようにしてベクトルＲｉを決める。このベクトルＲｉは、平文Ｍごとに、暗号化部８で決めるベクトルで、暗号化を行なうたびに異なるものを決定する必要がある。そのためには、暗号化部８が、例えば、現時点の日時、分秒に対応する数字や、物理乱数生成器で生成された乱数や、任意のテキストデータなどを用いて、ベクトルＲｉを決めるようにしておけばよい。
【００９２】
暗号化部８は、ベクトルＲｉを特定したら、図１５の矢印（２）に沿って記載したように、このベクトルＲｉと予め設定された固定のベクトルＲ１とのベクトル和〔Ｒｉ＋Ｒ１〕を演算し、これを可変シードとして擬似乱数生成部９へ入力する。
つまり、平文Ｍごとに設定する可変のベクトルＲｉと固定のベクトルＲ１とのベクトル和〔Ｒｉ＋Ｒ１〕で、この発明の可変シードを生成する。
さらに、暗号化部８は、入力された平文Ｍのデータ長を特定する。
そして、暗号化部８は、このように可変シードを生成するとともに、平文Ｍのデータ長を特定したら、生成した可変シードと、予め設定された固定のベクトルＲ２からなる固定シードと、平文Ｍのデータ長とを擬似乱数生成部９へ入力する（矢印（２））。
【００９３】
上記可変シードと、ベクトルＲ２からなる固定シードと、平文Ｍのデータ長とが入力された擬似乱数生成部９は、入力された可変シードに基づいて、上記平文Ｍのデータ長以上の擬似乱数Ｅ（Ｒｉ＋Ｒ１）を生成するとともに、上記固定のベクトルＲ２からなる固定シードに基づいて、上記平文Ｍのデータ長以上の擬似乱数Ｅ（Ｒ２）を生成する。なお、上記可変擬似乱数Ｅ（Ｒ２）は、固定シードを用いているが、平文Ｍのデータ長に応じた長さに生成される可変擬似乱数である。
【００９４】
上記擬似乱数生成部９は、生成した可変擬似乱数Ｅ（Ｒｉ＋Ｒ１）と、可変擬似乱数Ｅ（Ｒ２）とを、暗号化部８へ入力する（矢印（３））。これらの擬似乱数が入力された暗号化部８は、図１６の式（iv）のように、両擬似乱数からなるベクトルのベクトル和を演算して、暗号キーＥ２を生成するとともに、この暗号キーＥ２と平文Ｍとのベクトル和を演算して暗号文Ｘを生成し、それを出力する（矢印（４））。
つまり、この他の暗号化システムで用いる暗号キーＥ２は、図１１の式（ii）の固定擬似乱数Kに替えて、可変擬似乱数Ｅ（Ｒ２）を用いたものである。
【００９５】
この暗号化システムでも、暗号化部８が、暗号化するたびに平文Ｍに応じて暗号キーＥ２を生成するようにしているが、この暗号キーE２は、予め設定しておくベクトルＲ１、Ｒ２とともに、平文Ｍに応じて決定する可変のベクトルＲｉを用いることによって、平文Ｍごとに可変の暗号キーにできる。また、この暗号キーＥ２は、２つの擬似乱数ベクトルのベクトル和で生成されるので、一つの擬似乱数のベクトルと比べて、ほぼ２倍のエントロピーを持つことになる。このように、暗号キーＥ２のエントロピーを大きくすることによって、情報量的安全性を得ることができる。
さらに、上記した暗号化システムの暗号キーＥ１と同様に、暗号キーＥ２の通信過程での漏洩を防止できる。このように暗号化した情報を確実に守ることができる点は、先の暗号化システムと同じである。
【００９６】
なお、この他の暗号化システムでは、先に説明した別の暗号化システムで用いた固定のベクトルＫの代わりに、固定シードＲ２を用いた乱数のベクトルを用いるようにしている。そのため、暗号化部８に、予め設定しておく固定のベクトルＲ２のデータ長を、固定ベクトルＫと比べて小さくでき、データ記憶のための負荷を軽くできる。
このように、ベクトルＲ２のデータ長が小さくてもよいのは、先のシステムでは、暗号キーＥ１を、平文Ｍ以上のデータ長とするために、固定ベクトルＫも、平文Ｍのデータ長以上のデータ長を持つ必要があったが、乱数のシードとなるベクトルＲ２は、そのデータ長が小さくても、上記疑似乱数生成部９によって、平文Ｍ以上のデータ長を持った乱数を生成することができ、暗号キーＥ２のデータ長を平文Ｍ以上にすることができるからである。
【００９７】
また、この暗号化システムでも、暗号キーＥ２を生成するために用いる２種類の予測不可能な擬似乱数を、上記擬似乱数生成部９が、それぞれ自動的に生成することができる。
なお、上記擬似乱数生成プログラムを備えた擬似乱数生成部９とともに、ベクトルＲ１、Ｒ２を予め設定された復号部を備えれば、この復号部が暗号キーＥ２を生成し、図１７の式（ｖ）の演算によって、このシステムで生成された暗号文Ｘを復号化することができる。
【００９８】
このように、上記したいずれの暗号化システムを用いた場合にも、生成した暗号を解読される心配はないし、暗号キーを盗まれる危険性も極めて低いので、機密情報などを安全に保存したり、送信したりすることができる。
なお、上記両暗号化システムでは、可変シードを、平文ごとに設定する可変のベクトルと予め設定した固定のベクトルとのベクトル和によって生成するようにしているが、可変シードは、上記可変のベクトルのみで構成するようにしてもよい。要するに、暗号キーが、可変擬似乱数のベクトル和を用いて生成されることによって、平文に対応した可変のキーが生成されればよいのである。
【００９９】
ただし、１つの可変のベクトルのみで可変シードを構成するよりも、固定のベクトルとのベクトル和によって可変シードを生成するようにすれば、可変のベクトルが固定のベクトルによって別のベクトルに置換されることになるので、たとえ該可変ベクトルがインターセプトされるなどして攻撃者に漏洩することがあっても、シードの計算量的安全性は担保される。さらに、可変シードが、１つの可変のベクトルと１つの固定のベクトルとのベクトル和でなく、さらに多くの別のベクトルをベクトル和して生成してもかまわない。
【０１００】
上記した２つの暗号化システムの実施形態では、暗号キーを可変ベクトルと固定ベクトルとのベクトル和で生成し、暗号キーそのものを通信する必要がないようにしている。
しかし、暗号キーを平文に応じて生成する擬似乱数からなる可変ベクトルのみで構成するようにしてもよい。その場合に用いる可変ベクトルは、上記擬似乱数生成部９によって生成され、平文のデータ長以上のデータ長を有する擬似乱数のベクトルでなければならない。
【０１０１】
さらに、この暗号化システムを利用して、上記情報管理システムの元データや分散単位データを暗号化したり、上記管理情報を暗号化したりすることもできる。このように、上記暗号化システムを用いて情報を暗号化すれば、より安全性が高まる。この時のエントロピーは、多重分散化によるエントロピーと暗号化によるエントロピーを足し合わせたものとなる。
【符号の説明】
【０１０２】
２    情報登録先決定部
４    分散単位情報生成部
５    情報復元部
Ｓ，Ｓ１〜Ｓσ  ストレージグリッド
ｄ１〜ｄ６  分散単位情報
Ａ    （元データに基づく）ベクトル
ε    （ベクトルＡの）要素数
μ    多重化数
τ    分散数
σ    ストレージグリッドの数
６    暗号化装置
７    データ入出力部
８    暗号化部
９    擬似乱数生成部
Ｅ１，Ｅ２    暗号キー
Ｍ    平文
Ｎ    自然数
Ｅ（）  擬似乱数を生成する関数
Ｒｉ    可変のベクトル
Ｒ１，Ｒ２  固定のベクトル
Ｋ    固定ベクトル
（ｒｉｊ）  （擬似乱数の）マトリクス
ｉ    行見出し
ｊ    列見出し
＋    ベクトル和をあらわす記号
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
情報の登録先を決定する情報登録先決定部と、分散単位情報を生成する分散単位情報生成部と、この分散単位情報生成部と接続可能な複数のストレージグリッドとからなり、
上記情報登録先決定部は、分散単位情報生成部で生成される分散単位情報ごとにその登録先のストレージグリッドを特定する機能と、分散単位情報とその登録先であるストレージグリッドとの対応関係にかかわる管理情報を生成する機能と、生成した管理情報を分散単位情報生成部へ通知する機能と、分散数τと要素数εとの最大公約数ｑが１のとき、多重化数μ＜分散数τを満たすという条件１、または、分散数τと要素数εとの最大公約数ｑが１でないとき、上記分散数τおよび要素数εが互いに割り切れない関係であって、かつ、多重化数μ≦（分散数τ／最大公約数ｑ）を満たすという条件２のいずれかを満たす上記要素数ε、多重化数μおよび分散数τの組み合わせを決定する機能と、決定した要素数εと多重化数μとの組を出力する機能とを備え、上記分散単位情報生成部は、予め設定された単位データ長または予め設定された分割数を基準にして元データを分割して、Ｎ∋ε個の要素からなるベクトルＡ＝（ａ１，ａ２・・・，ａε）とする機能と、当該分散単位情報生成部に入力された多重化数μ∈Ｎあるいは予め設定された多重化数μ∈Ｎのいずれかに基づいて、上記ベクトルＡをμ倍してＡ＝Ａ１＝Ａ２＝・・・＝ＡμであるベクトルμＡ＝（Ａ１‖Ａ２‖・・・‖Ａμ）とする機能と、この多重化されたベクトルμＡの全要素を、当該分散単位情報生成部に入力された分散数τ∈Ｎあるいは予め設定された分散数τ∈Ｎに基づいて、上記ベクトルＡの全要素が含まれず、かつ、ベクトルＡの同一要素が重複しないように、τ個の分散単位情報に分ける機能と、上記情報登録先決定部から通知された分散単位情報とストレージグリッドとの対応関係を定めた管理情報に基づいて上記各分散単位情報を対応するストレージグリッドへ登録する機能とを備えた情報管理システム。
【請求項２】
上記分散単位情報生成部は、元データを多重化数μで多重化したベクトルの全要素を、その要素順に、行方向あるいは列方向に並べ、それを列方向あるいは行方向に繰り返して、分散数τに応じた列数あるいは行数と、所要の行数または列数とからなるマトリクスを生成する機能と、このマトリクスの各列あるいは各行を、１の分散単位情報とする機能とを備えた請求項１に記載の情報管理システム。
【請求項３】
管理情報を記憶する上記情報登録先決定部またはこの情報登録先決定部とは別の管理情報記憶部と、上記分散単位情報から元データを復元する情報復元部とを備え、この情報復元部は、各ストレージグリッドから分散単位情報を収集する機能と、上記管理情報を取得する機能と、上記管理情報から特定した配列順に基づいて、上記収集した分散単位情報を並べる機能とを備えた請求項１または２に記載の情報管理システム。
【請求項４】
上記分散単位情報生成部に連係する暗号化部を備え、この暗号化部は、元データを暗号化する機能を備え、分散単位情報生成部は、暗号化部が暗号化したデータを多重化数μで多重化する機能を備えた請求項１〜３のいずれか１に記載の情報管理システム。
【請求項５】
平文入力部と、暗号化部と、擬似乱数生成部とからなり、擬似乱数生成部は、擬似乱数生成用のシードを、予め設定された情報量単位を基にして要素に分割する機能、これらの要素を行見出しおよび列見出しとしたマトリクスを生成する機能、このマトリクスにおける特定のセルを第１のセルとし、この第１のセルには、その第１のセルに対応する行見出しおよび列見出しの数値同士を加算し、その加算結果に対して予め定めたｎ（ゼロ以外）を法とする演算を行ない、その演算結果をあてはめる機能、上記マトリクスにおける上記第１のセル以外のセルには、対応する行および列にあてはめられた数値のうち、少なくとも３つ以上の数値を加算することによって、多重マルコフ過程を形成し、ゼロ以外の数ｎを法とする演算を行ない、その演算結果をあてはめる機能、上記各数値をあてはめた各セルの数値を、列単位または行単位で、列順または行順に並べ替える機能を実行して擬似乱数を生成し、かつ、この擬似乱数生成部は、擬似乱数のデータ長が上記平文のデータ長以上の場合には、この擬似乱数を暗号化部に対して出力する一方、生成された擬似乱数のデータ長が上記平文のデータ長未満の場合には、上記擬似乱数生成部は、上記生成された擬似乱数の一部または全ての要素を、行見出しまたは列見出しのいずれか一方若しくは両方としてマトリクスを生成する機能、このマトリクスにおける特定のセルを第１のセルとし、この第１のセルには、その第１のセルに対応する行見出しおよび列見出しの数値同士を加算し、その加算結果に対して予め定めたｎ（ゼロ以外）を法とする演算を行ない、その演算結果をあてはめる機能、上記マトリクスにおける上記第１のセル以外のセルには、対応する行および列にあてはめられた数値のうち、少なくとも３つ以上の数値を加算し、その加算結果に対して上記ｎを法とする演算を行ない、その演算結果をあてはめる機能、上記各数値をあてはめた各セルの数値を、列単位または行単位で、列順または行順に並べ替える機能を実行して擬似乱数を生成するとともに、この生成された擬似が平文のデータ長以上になるまで上記擬似乱数生成機能を繰り返し実行し、平文のデータ長以上の擬似乱数が生成されたとき、その擬似乱数を上記暗号化部に対して出力し、さらに、上記暗号化部は、擬似乱数生成部から入力された擬似乱数のベクトルを暗号キーとして用い、上記平文と暗号キーとのベクトル和を演算して、暗号化する暗号化システム。
【請求項６】
平文入力部と、暗号化部と、擬似乱数生成部とからなり、上記擬似乱数生成部は、擬似乱数生成用のシードを、予め設定された情報量単位を基にして要素に分割する機能、これらの要素を行見出しおよび列見出しとした演算表（以下にマトリクスという）を生成する機能、このマトリクスにおける特定のセルを第１のセルとし、この第１のセルには、その第１のセルに対応する行見出しおよび列見出しの数値同士を加算し、その加算結果に対して予め定めたｎ（ゼロ以外）を法とする演算を行ない、その演算結果をあてはめる機能、上記マトリクスにおける上記第１のセル以外のセルには、対応する行および列にあてはめられた数値のうち、少なくとも３つ以上の数値を加算することによって、多重マルコフ過程を形成し、ｎ（ゼロ以外）を法とする演算を行ない、その演算結果をあてはめる機能、上記各数値をあてはめた各セルの数値を、列単位または行単位で、列順または行順に並べ替える機能を実行して擬似乱数を生成し、かつ、この擬似乱数生成部は、擬似乱数のデータ長が上記平文のデータ長以上の場合には、この擬似乱数を暗号化部に対して出力する一方、生成された擬似乱数のデータ長が上記平文のデータ長未満の場合には、上記擬似乱数生成部は、上記生成された擬似乱数の一部または全ての要素を、行見出しまたは列見出しのいずれか一方若しくは両方としてマトリクスを生成する機能、このマトリクスにおける特定のセルを第１のセルとし、この第１のセルには、その第１のセルに対応する行見出しおよび列見出しの数値同士を加算し、その加算結果に対して予め定めたｎ（ゼロ以外）を法とする演算を行ない、その演算結果をあてはめる機能、上記マトリクスにおける上記第１のセル以外のセルには、対応する行および列にあてはめられた数値のうち、少なくとも３つ以上の数値を加算し、その加算結果に対して上記ｎを法とする演算を行ない、その演算結果をあてはめる機能、上記各数値をあてはめた各セルの数値を、列単位または行単位で、列順または行順に並べ替える機能を実行して擬似乱数を生成するとともに、この生成された擬似乱数が平文のデータ長以上になるまで上記擬似乱数生成機能を繰り返し実行し、平文のデータ長以上の擬似乱数が生成されたとき、その擬似乱数を上記暗号化部に対して出力する機能を備え、上記暗号化部は、上記生成された可変擬似乱数のベクトルと予め設定された固定ベクトルとのベクトル和を演算して暗号キーを生成する機能と、生成した暗号キーと上記平文とのベクトル和を演算して暗号化する機能とを備えた暗号化システム。
【請求項７】
平文入力部と、暗号化部と、擬似乱数生成部とからなり、上記擬似乱数生成部は、
擬似乱数生成用のシードを、予め設定された情報量単位を基にして要素に分割する機能、これらの要素を行見出しおよび列見出しとした演算表（以下にマトリクスという）を生成する機能、このマトリクスにおける特定のセルを第１のセルとし、この第１のセルには、その第１のセルに対応する行見出しおよび列見出しの数値同士を加算し、その加算結果に対して予め定めたｎ（ゼロ以外）を法とする演算を行ない、その演算結果をあてはめる機能、上記マトリクスにおける上記第１のセル以外のセルには、対応する行および列にあてはめられた数値のうち、少なくとも３つ以上の数値を加算することによって、多重マルコフ過程を形成し、ｎ（ゼロ以外）を法とする演算を行ない、その演算結果をあてはめる機能、上記各数値をあてはめた各セルの数値を、列単位または行単位で、列順または行順に並べ替える機能を実行して擬似乱数を生成し、かつ、この擬似乱数生成部は、擬似乱数のデータ長が上記平文のデータ長以上の場合には、この擬似乱数を暗号化部に対して出力する一方、生成された擬似乱数のデータ長が上記平文のデータ長未満の場合には、上記擬似乱数生成部は、上記生成された擬似乱数の一部または全ての要素を、行見出しまたは列見出しのいずれか一方若しくは両方としてマトリクスを生成する機能、このマトリクスにおける特定のセルを第１のセルとし、この第１のセルには、その第１のセルに対応する行見出しおよび列見出しの数値同士を加算し、その加算結果に対して予め定めたｎ（ゼロ以外）を法とする演算を行ない、その演算結果をあてはめる機能、上記マトリクスにおける上記第１のセル以外のセルには、対応する行および列にあてはめられた数値のうち、少なくとも３つ以上の数値を加算し、その加算結果に対して上記ｎを法とする演算を行ない、その演算結果をあてはめる機能、上記各数値をあてはめた各セルの数値を、列単位または行単位で、列順または行順に並べ替える機能を実行して擬似乱数を生成するとともに、この生成された擬似乱数が平文のデータ長以上になるまで上記擬似乱数生成機能を繰り返し実行し、平文のデータ長以上の擬似乱数が生成されたとき、その擬似乱数を上記暗号化部に対して出力する機能と、予め設定された固定シードを用いて、上記平文のデータ長以上のデータ長を有する可変擬似乱数を生成してその可変擬似乱数を上記暗号か部に対して出力する機能とを備え、上記暗号化部は、上記生成された両可変擬似乱数からなるベクトルのベクトル和を演算して暗号キーを生成する機能と、生成した暗号キーと上記平文とのベクトル和を演算して暗号化する機能とを備えた暗号化システム。
【国際調査報告】
2008056667.tif 000020
2008056667.tif 000021
2008056667.tif 000022
2008056667.tif 000023
2008056667.tif 000024
2008056667.tif 000025