(57)【特許請求の範囲】
【請求項１】
複数の入力ファイルを、複数の出力ファイルに変換する情報処理装置であって、
データ分割部と、データ複製部と、データ組替部を備え、
前記データ分割部は、前記複数の入力ファイルを複数のデータブロックに分割し、
前記データ複製部は、前記複数のデータブロックの複製を行い、
前記データ組替部は、
複製された前記複数のデータブロックの組み替えを行い、
前記組み替えに関する情報をキーデータとして生成し、
組み替えた前記データブロックと前記キーデータを組み合わせて、前記複数の出力ファイルを生成し、
前記複数の出力ファイルが保有するキーデータそれぞれは、前記複数のデータブロックの組み替えに関する一部の情報を保有し、
前記入力ファイルを復元するためのデータとして、前記キーデータの前記出力ファイルにおける位置に関する情報を含む復元キーを出力する、情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
前記データ組替部は、複数の前記キーデータを生成し、
前記複数の出力ファイルそれぞれは、少なくとも１つのキーデータを保有する、情報処理装置。
【請求項３】
請求項１または請求項２に記載の情報処理装置であって、
前記キーデータは、前記出力ファイルにおける前記データブロックの位置に関する情報、および前記データブロックの長さに関する情報を含む、情報処理装置。
【請求項４】
請求項１〜請求項３のいずれか１項に記載の情報処理装置であって、
前記データ組替部は、前記出力ファイルを前記入力ファイルに復元するためのデータを生成し、
前記復元するためのデータは、前記出力ファイルにおける前記キーデータの位置に関する情報、および前記キーデータの長さに関する情報を含む、情報処理装置。
【請求項５】
請求項１〜請求項４のいずれか１項に記載の情報処理装置であって、
前記データ分割部は、前記複数の入力ファイルを、長さの異なる複数のデータブロックに分割する、情報処理装置。
【請求項６】
請求項１〜請求項５のいずれか１項に記載の情報処理装置であって、
前記データ組替部は、前記入力ファイルにおける前記データブロックの順序が入れ替わるように、当該データブロックの組み替えを行う、情報処理装置。
【請求項７】
コンピューターを、複数の入力ファイルを複数の出力ファイルに変換する情報処理装置として機能させるコンピュータープログラムであって、
データ分割ステップと、データ複製ステップと、データ組替ステップとを、前記コンピューターに実行させ、
前記データ分割ステップでは、前記複数の入力ファイルを複数のデータブロックに分割し、
前記データ複製ステップでは、前記複数のデータブロックの複製を行い、
前記データ組替ステップでは、
複製された前記複数のデータブロックの組み替えを行い、
前記組み替えに関する情報をキーデータとして生成し、
組み替えた前記データブロックと前記キーデータを組み合わせて、前記複数の出力ファイルを生成し、
前記複数の出力ファイルが保有するキーデータそれぞれは、前記複数のデータブロックの組み替えに関する一部の情報を保有し、
前記入力ファイルを復元するためのデータとして、前記キーデータの前記出力ファイルにおける位置に関する情報を含む復元キーを出力する、コンピュータープログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力ファイルの暗号化を行う情報処理装置に関する。
【背景技術】
【０００２】
従来、入力ファイルの暗号化を行う情報処理装置の開発が進められている。例えば、特許文献１には、受信グループとして選択されたグループに属する端末装置が協力することにより復号できるような暗号化方法が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−１４３１２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
このような従来の暗号化方法では、当該暗号化方法を悪意のある第３者に特定されると、容易に復号されてしまうといった課題があった。また、公開鍵を使用したRSAやElliptic Curve Cryptographyにより、テキスト全体を単一方式で暗号化した場合、機械学習により解読できるとする例もある。暗号化の鍵は、安全性の担保のために一定以上の長さが必要となる。RSAの場合1024bit以下の鍵は解読済だが、人が128文字を記憶や入力することは不可能である。
【０００５】
本発明のいくつかの態様は、このような事情を鑑みてなされたものであり、強靭な暗号化を実現する情報処理装置を提供することにある。
【課題を解決するための手段】
【０００６】
本発明によれば、複数の入力ファイルを、複数の出力ファイルに変換する情報処理装置であって、データ分割部と、データ複製部と、データ組替部を備え、前記データ分割部は、前記複数の入力ファイルを複数のデータブロックに分割し、前記データ複製部は、前記複数のデータブロックの複製を行い、前記データ組替部は、複製された前記複数のデータブロックの組み替えを行い、前記組み替えに関する情報をキーデータとして生成し、組み替えた前記データブロックと前記キーデータを組み合わせて、前記複数の出力ファイルを生成し、前記複数の出力ファイルが保有するキーデータそれぞれは、前記複数のデータブロックの組み替えに関する一部の情報を保有し、前記入力ファイルを復元するためのデータとして、前記キーデータの前記出力ファイルにおける位置に関する情報を含む復元キーを出力する、情報処理装置が提供される。
【０００７】
このような構成とすることにより、複数の入力ファイルを組み替えて複数の出力ファイルを作成することができ、個々の出力ファイルを個別に管理することが可能となるため、強靭な暗号化を実現することができる。
【０００８】
以下、本発明のいくつかの態様に関し種々の実施形態を例示する。以下に示す実施形態は、互いに組み合わせ可能である。また、各特徴が独立に発明を構成する。
【図面の簡単な説明】
【０００９】
【図１】第１実施形態に係る情報処理装置１００の概要の一例を示す図である。
【図２】情報処理装置１００のハードウェア構成の一例を示すブロック図である。
【図３】情報処理装置１００の機能構成の一例を示すブロック図である。
【図４】情報処理装置１００によるファイル分割およびファイル組み替えを説明する図である。
【図５】キーデータＫ１が保有するデータを説明するための図である。
【図６】キーデータＫ２が保有するデータを説明するための図である。
【図７】キーデータＫ３が保有するデータを説明するための図である。
【図８】キーデータＫ４が保有するデータを説明するための図である。
【図９】出力ファイルの復元を説明するための図である。
【図１０】情報処理装置１００の処理の流れを説明するフロー図である。
【図１１】第２実施形態におけるファイル分割およびファイル組み替えを説明する図である。
【図１２】出力ファイルＦ１〜Ｆ５内のデータと、ブロックＢとの関係を示す図である。
【図１３】図１３Ａは、キーデータＫ１〜Ｋ５内に含まれるブロックＢを示す図である。図１３Ｂは、キーデータＫ１〜Ｋ５の相互の包含関係を示す図である。
【図１４】図１４Ａは、キーデータＫ１〜Ｋ５内に含まれる暗号化用データを示す図である。図１４Ｂは、暗号化用データの記述内容を説明する図である。
【図１５】第２実施形態における情報処理装置１００の処理の流れを説明するフロー図である。
【発明を実施するための形態】
【００１０】
＜１．第１実施形態＞
（１．１．情報処理装置１００を用いた処理の概要）
図１を参照し、本発明の第１実施形態に係る情報処理装置１００を用いた処理の概要を説明する。図１に示すように、情報処理装置１００は、複数の入力ファイルＦ１，Ｆ２，...，Ｆｎを受け付ける。情報処理装置１００は、入力ファイルＦ１，Ｆ２，...，Ｆｎが保有するデータの組み替えを行い、複数の出力ファイルＧ１，Ｇ２，...，Ｇｎを出力する。
【００１１】
出力されたファイルＧ１，Ｇ２，...，Ｇｎは、それぞれ個別に管理することができる。例えば、任意のサーバーＳが備える記憶部に記憶してもよいし、磁気ディスクＤに記憶してもよい。また、郵送Ｍ、電話Ｔ、人Ｈなどによって、伝達してもよい。
【００１２】
このようにして、様々な媒体に保存、または様々な媒体によって流通させた出力ファイルＧ１，Ｇ２，...，Ｇｎを集約し、情報処理装置１００によって復元することで、入力ファイルＦ１，Ｆ２，...，Ｆｎを入手することができる。このようにすることで、複数の入力ファイルＦ１，Ｆ２，...，Ｆｎの内容が第３者に知られないように、安全に管理、伝達することが可能となる。以下、各構成を詳細に説明する。
【００１３】
（１．２．情報処理装置１００のハードウェア構成）
図２を参照し、情報処理装置１００のハードウェア構成を説明する。図２は、情報処理装置１００のハードウェア構成を示すブロック図である。情報処理装置１００は、情報処理装置１００全体の動作を司る制御部１１、制御部１１による各種プログラムの実行時のワークエリア等として用いられる主記憶部１２、各種プログラム及び各種データ等が予め記憶された補助記憶部１３を備えている。
【００１４】
制御部１１は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、マイクロプロセッサ、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）等であり、情報処理装置１００の全体の動作を制御する。
【００１５】
主記憶部１２は、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等で構成されており、制御部１１による各種プログラムに基づく処理の実行時のワークエリア等として用いられる。
【００１６】
補助記憶部１３は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）等の不揮発性メモリ、またはＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）であり、画像等の各種データ及び制御部１１の処理に利用されるプログラム等を保存する。
【００１７】
補助記憶部１３に記憶されるプログラムは、例えば、情報処理装置１００の基本的な機能を実現するためのＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）、各種ハードウェア制御するためのドライバ、電子メールやウェブブラウジング、その他各種機能を実現するためのプログラム等である。また、補助記憶部１３には、音声データ、または動画データ等を再生するためのアプリケーションソフトが予め記憶されていてもよい。
【００１８】
さらに、情報処理装置１００は、インターネット等の通信回線を介して他の情報処理装置等と接続され、他の情報処理装置等との間で各種データの送受信を行う通信部１４を備えている。
【００１９】
通信部１４は、具体的には例えばＮＩＣ（Network Interface Controller）を備え、通信回線に接続する機能を有する。なお、通信部１４は、ＮＩＣに代えて又はＮＩＣと共に、無線ＬＡＮ（Local Area Network）に接続する機能、無線ＷＡＮ（Wide Area Network）に接続する機能、例えばBluetooth（登録商標）等の近距離の無線通信、及び赤外線通信等を可能とする機能を有してもよい。
【００２０】
さらに、情報処理装置１００は、キーボード及びマウス等で構成されて各種操作の入力を受け付ける操作入力部１５、各種画像を表示する例えば液晶ディスプレイ装置等のモニタ１６を備えていてもよい。
【００２１】
これら制御部１１、主記憶部１２、補助記憶部１３、通信部１４、操作入力部１５、モニタ１６は、システムバス１７を介して相互に電気的に接続されている。従って、制御部１１は、主記憶部１２、補助記憶部１３へのアクセス、操作入力部１５に対する操作状態の把握、モニタ１６に対する画像の表示、並びに通信部１４を介した他の情報処理装置等との各種データの送受信等を行なうことができる。
【００２２】
（１．３．制御部１１の機能構成）
図３を参照し、制御部１１の機能構成を説明する。図３に示すように、制御部１１は、データ分割部２１と、データ複製部２２と、データ組替部２３と、データ復元部２４を備える。
【００２３】
データ分割部２１は、複数の入力ファイルを複数のデータブロックに分割する。データ複製部２２は、複数のデータブロックの複製を行う。データ組替部２３は、複製された複数のデータブロックの組み替えを行い、複数の出力ファイルを生成する。データブロックの組み替えについての詳細は後述する。データ復元部２４は、組み替え後の複数の出力ファイルから複数の入力ファイルを復元する。
【００２４】
上述した機能は、情報処理装置１００に適宜インストールされるソフトウェア（いわゆるアプリを含む）を用いて実現してもよく、ハードウェアとして実現してもよい。ソフトウェアによって実現する場合、制御部１１がソフトウェアを構成するプログラムを実行することによって各種機能を実現してもよい。
【００２５】
プログラムを実行することで実現される場合、当該プログラムは、情報処理装置１００が内蔵する補助記憶部１３に格納してもよく、コンピューターが読み取り可能な非一時的な記録媒体に格納してもよい。また、外部の記憶装置に格納されたプログラムを読み出し、いわゆるクラウドコンピューティングの形態で実現してもよい。また、ハードウェアによって実現する場合、ＡＳＩＣ、ＳＯＣ、ＦＰＧＡ、またはＤＲＰ等の種々の回路によって実現してもよい。
【００２６】
（１．４．データの分割および組み替え処理）
図４を参照し、データの分割および組み替え処理について説明する。以下に示す例では、入力ファイルとしてファイルＦ１およびファイルＦ２を受け付け、出力ファイルとしてファイルＧ１〜Ｇ５を出力するものとしているが、入力ファイルおよび出力ファイルの数は、この例に限定されるものではない。また、図面において、ダブルクォーテーション（"）は、それによって囲まれた部分が文字列であることを示すための符号として用いる。
【００２７】
図４に示すように、入力ファイルＦ１は、「pass=」という文字列を保有している。また、入力ファイルＦ１は、「653」という文字列を保有している。そのため、入力ファイルＦ１およびＦ２を共に入手することで、「pass=653」（パスワードは653）という情報を得ることができる。
【００２８】
まず、図４に示すように、データ分割部２１は、入力ファイルＦ１を分割して、データブロックＦ１１，Ｆ１２を生成する。一例として、Ｆ１１は、「pa」という文字列であり、Ｆ１２は、「ss=」という文字列である。また、データ分割部２１は、入力ファイルＦ２を分割して、データブロックＦ２１，Ｆ２２を生成する。Ｆ２１は、「6」という文字列であり、Ｆ２２は、「53」という文字列である。このようにデータ分割部２１は、複数の入力ファイルを、長さの異なる複数のデータブロックに分割する。データを分割する箇所は入力ファイルの長さに応じて適宜決定すればよい。
【００２９】
次に、データ複製部２２は、複数のデータブロックＦ１１〜Ｆ２２の複製を行う。本実施形態では、図４に示すように、データブロックＦ１１〜Ｆ２２がさらに１組生成されている。ただし、この例に限定されることはなく、２組以上をさらに生成してもよい。このように、データブロックＦ１１〜Ｆ２２を複製することによりデータの冗長性が確保され、データの組み替え後の復元をより困難にすることが可能となる。
【００３０】
次に、データ組替部２３は、データブロックＦ１１〜Ｆ２２の組み替えを行う。当該組み替えにおいて、データ組替部２３は、入力ファイルＦ１，Ｆ２におけるデータブロックＦ１１〜Ｆ２２の順序が入れ替わるように、当該データブロックの組み替えを行う。さらに、データ組替部２３は、組み替えに関する情報をキーデータＫ１〜Ｋ４として生成し、組み替えたデータブロックと前記キーデータを組み合わせて、複数の出力ファイルＧ１〜Ｇ５を生成する。
【００３１】
図４に示すように、出力ファイルＧ１〜Ｇ４は、キーデータＫ１〜Ｋ４のいずれか１つと、データブロックＦ１１〜Ｆ２２のいずれかを含む。出力ファイルＧ５は、復元キーＤＫである。復元キーＤＫの詳細は後述する。
【００３２】
キーデータＫ１〜Ｋ４は、出力ファイルＧ１〜Ｇ４におけるデータブロックＦ１１〜Ｆ２２についての情報を保有する。本実施形態では、キーデータＫ１〜Ｋ４は、データブロックＦ１１〜Ｆ２２についての識別子、レングス、アドレスを保有する。
【００３３】
識別子とは、出力ファイルにおけるデータブロック（またはキーデータ）を識別するための情報であって、一例としては、データブロックＦ１１〜Ｆ２２が保有されている出力ファイル名とデータブロック名（またはキーデータ名）との組み合わせである。たとえば、出力ファイルＧ２に保有されているデータブロックＦ２２（「53」）の場合、識別子は「G2-F22」となる。なお、出力ファイル名とデータブロック名との組み合わせ以外の態様で識別子を設定してもよい。
【００３４】
レングスとは、各データブロックのデータの長さである。たとえば、出力ファイルＧ２に保有されているデータブロックＦ２２（「53」）の場合、レングスは「2」となる。
【００３５】
アドレスとは、保有されている出力ファイルＧ１〜Ｇ４におけるデータブロックＦ１１〜Ｆ２２の先頭の位置を示す情報である。本実施形態では、各出力ファイルＧ１〜Ｇ４の先頭を「0」とし、後続のデータブロックについては、前方のデータブロックのレングスを加算して算出する。たとえば、出力ファイルＧ２に保有されているデータブロックＦ１１のアドレスは「0」である。また、データブロックＦ１１（「pa」）のレングスが「2」であるため、出力ファイルＧ２に保有されているデータブロックＦ２２のアドレスは「2」となる。
【００３６】
さらに、上述した識別子、レングス、アドレスは、出力ファイルＧ１〜Ｇ４に保有されるキーデータＫ１〜Ｋ４にも適用される。たとえば、出力ファイルＧ２に保有されているキーデータＫ２の識別子は「G2-K2」であり、アドレスは「4」となる。キーデータＫ１〜Ｋ４は、出力ファイルＧ１〜Ｇ４におけるデータブロックＦ１１〜Ｆ２２についての情報に加えて、出力ファイルＧ１〜Ｇ４におけるキーデータＫ１〜Ｋ４についての情報を保有する。
【００３７】
以下、図５〜図８を参照し、キーデータＫ１〜Ｋ４の設定の一例を説明する。キーデータＫ１〜Ｋ４は、自身の情報と、データブロックＳ１１〜Ｓ２２およびキーデータＫ１〜Ｋ４をｍ個組み合わせた情報を保有する。ここで、ｍは任意の整数であり、出力ファイルＧ１〜Ｇ４の数、およびデータブロックＳ１１〜Ｓ２２の数によって適宜設定される。
【００３８】
図５は、キーデータＫ１の設定の一例を説明する図である。この例では、キーデータＫ１はｍ＝７個のデータブロックおよびキーデータの情報を保有している。具体的には、ｍ＝１として出力ファイルＧ４に保有されているデータブロックＦ１２の識別子、アドレス、レングスの情報を保有する。さらに、ｍ＝２として出力ファイルＧ３に保有されているデータブロックＦ２１の識別子、アドレス、レングスの情報を保有する。
【００３９】
このように、キーデータＫ１は、図５に示すｍ＝１からｍ＝７までの７個のデータブロック（またはキーデータ）についての識別子、アドレス、レングスの情報に対して、先頭に自身の識別子（すなわち、「G1-K1」）を合わせたデータとして設定される。なお、各データ間はカンマ（，）で連結される。
【００４０】
図６は、キーデータＫ２の設定の一例を説明する図である。この例では、キーデータＫ２はｍ＝８個のデータブロックおよびキーデータの情報を保有している。具体的には、ｍ＝１として出力ファイルＧ１に保有されているデータブロックＦ１１の識別子、アドレス、レングスの情報を保有する。さらに、ｍ＝２として出力ファイルＧ１に保有されているデータブロックＦ２１の識別子、アドレス、レングスの情報を保有する。
【００４１】
このように、キーデータＫ２は、図６に示すｍ＝１からｍ＝８までの８個のデータブロック（またはキーデータ）についての識別子、アドレス、レングスの情報に対して、先頭に自身の識別子を合わせたデータとして設定される。
【００４２】
図７は、キーデータＫ３の設定の一例を説明する図である。この例では、キーデータＫ３はｍ＝３個のキーデータの情報を保有している。具体的には、ｍ＝１として出力ファイルＧ１に保有されているキーデータＫ１の識別子、アドレス、レングスの情報を保有する。さらに、ｍ＝２として出力ファイルＧ３に保有されているキーデータＫ４の識別子、アドレス、レングスの情報を保有する。
【００４３】
このように、キーデータＫ３は、図７に示すｍ＝１からｍ＝３までの３個のキーデータについての識別子、アドレス、レングスの情報に対して、先頭に自身の識別子を合わせたデータとして設定される。
【００４４】
図８は、キーデータＫ４の設定の一例を説明する図である。この例では、キーデータＫ４はｍ＝７個のデータブロックおよびキーデータの情報を保有している。具体的には、ｍ＝１として出力ファイルＧ１に保有されているキーデータＫ１の識別子、アドレス、レングスの情報を保有する。さらに、ｍ＝２として出力ファイルＧ１に保有されているデータブロックＦ２１の識別子、アドレス、レングスの情報を保有する。
【００４５】
このように、キーデータＫ４は、図８に示すｍ＝１からｍ＝７までの７個のデータブロック（またはキーデータ）についての識別子とアドレスとレングスの情報に対して、先頭に自身の識別子を合わせたデータとして設定される。
【００４６】
以上のようにして設定されたキーデータＫ１〜Ｋ４の具体的なデータを示すと以下のようになる。
Ｋ１：「G1-K1,G4-F12,86,3,G3-F21,3,1,G2-F22,2,2,G4-K4,2,84,G4-F22,0,2,G3-K3,4,38,G2-K2,4,96」
Ｋ１のレングス：８３
【００４７】
Ｋ２：「G2-K2,G1-F11,83,2,G1-F21,85,1,G2-F11,0,2,G2-F22,2,2,G3-F12,0,3,G3-F21,3,1,G4-F22,0,2,G4-F12,86,3」
Ｋ２のレングス：９６
【００４８】
Ｋ３：「G3-K3,G1-K1,0,83,G4-K4,2,84,G2-K2,4,96」
Ｋ３のレングス：３８
【００４９】
Ｋ４：「G4-K4,G1-K1,0,83,G1-F21,85,1,G2-F22,2,2,G3-K3,4,38,G1-F11,83,2,G3-F12,0,3,G2-F11,0,2」
Ｋ４のレングス：８４
【００５０】
このように、キーデータＫ１〜Ｋ４は、それぞれ、複数のデータブロックＦ１１〜Ｆ２２の組み替えに関する一部の情報を保有する。なお、これらのキーデータＫ１〜Ｋ４を保有する出力ファイルＧ１〜Ｇ４の具体的なデータを示すと以下のようになる。
Ｇ１：「G1-K1,G4-F12,86,3,G3-F21,3,1,G2-F22,2,2,G4-K4,2,84,G4-F22,0,2,G3-K3,4,38,G2-K2,4,96pa6」
Ｇ１のレングス：８６
【００５１】
Ｇ２：「pa53G2-K2,G1-F11,83,2,G1-F21,85,1,G2-F11,0,2,G2-F22,2,2,G3-F12,0,3,G3-F21,3,1,G4-F22,0,2,G4-F12,86,3」
Ｇ２のレングス：１００
【００５２】
Ｇ３：「ss=6G3-K3,G1-K1,0,83,G4-K4,2,84,G2-K2,4,96」
Ｇ３のレングス：４２
【００５３】
Ｇ４：「53G4-K4,G1-K1,0,83,G1-F21,85,1,G2-F22,2,2,G3-K3,4,38,G1-F11,83,2,G3-F12,0,3,G2-F11,0,2ss=」
Ｇ４のレングス：８９
【００５４】
（１．５．出力ファイルから入力ファイルへの復元処理）
図９を参照し、出力ファイルから入力ファイルへの復元処理について説明する。ここで、復元キーＤＫは、キーデータＫ１〜Ｋ４のうちいずれか１つのアドレスおよびレングスを保有する。図９に示す例では、キーデータＫ１のアドレスおよびレングス（「0,83」）を用いて復元する場合を説明する。
【００５５】
まず、出力ファイルＧ１に復元キーＤＫ（すなわち、キーデータＫ１のアドレスおよびレングス（「0,83」））を適用したとする。この場合、出力ファイルＧ１における先頭から８３文字（すなわち、「G1-K1,G4-F12,86,3,G3-F21,3,1,G2-F22,2,2,G4-K4,2,84,G4-F22,0,2,G3-K3,4,38,G2-K2,4,96」）の部分データを取得することになる。当該部分データは最初のコンマまでにデータ「G1-K1」を含んでいるため、キーデータＫ１であることが判明する。
【００５６】
そして、キーデータＫ１を解析することにより、キーデータＫ２のアドレスおよびレングス（「4,96」）、キーデータＫ３のアドレスおよびレングス（「4,38」）、キーデータＫ４のアドレスおよびレングス（「2,84」）、およびデータブロックＦ１２、Ｆ２１、Ｆ２２のアドレスおよびレングスを取得することができる。
【００５７】
次に、出力ファイルＧ２にキーデータＫ４のアドレスおよびレングス（「2,84」）を適用したとする。この場合、出力ファイルＧ２における３文字目から８４文字（すなわち、「53G2-K2,G1-F11,83,2,G1-F21,85,1,G2-F11,0,2,G2-F22,2,2,G3-F12,0,3,G3-F21,3,1,G4-F22,0」）の部分データを取得することになる。当該部分データは最初のコンマまでにデータ「53G2-K2」を含んでいるが、当該データは識別子として判別できない。
【００５８】
さらに、残りのデータはコンマによって２０個に分けられている。本実施形態においては、先頭の識別子以外のデータは「識別子、アドレス、レングス」のセットで組み込まれているため、３の倍数にならなければいけない。よって、出力ファイルＧ２は、キーデータＫ４のアドレスおよびレングス（「2,84」）では復元できないと判断する。
【００５９】
次に、出力ファイルＧ３にキーデータＫ４のアドレスおよびレングス（「2,84」）を適用したとする。この場合、出力ファイルＧ３のレングスが４２であるため、出力ファイルＧ３は、キーデータＫ４のアドレスおよびレングス（「2,84」）では復元できないと判断する。
【００６０】
次に、出力ファイルＧ４にキーデータＫ４のアドレスおよびレングス（「2,84」）を適用したとする。この場合、出力ファイルＧ４における３文字目から８４文字（すなわち、「G4-K4,G1-K1,0,83,G1-F21,85,1,G2-F22,2,2,G3-K3,4,38,G1-F11,83,2,G3-F12,0,3,G2-F11,0,2」）の部分データを取得することになる。当該部分データは最初のコンマまでにデータ「G4-K4」を含んでいるため、キーデータＫ４であることが判明する。
【００６１】
さらに、キーデータＫ４を解析することにより、Ｆ１１のアドレスおよびレングスを取得することができる。
【００６２】
次に、出力ファイルＧ２にキーデータＫ３のアドレスおよびレングス（「4,38」）を適用したとする。この場合、出力ファイルＧ２における５文字目から３８文字（すなわち、「G2-K2,G1-F11,83,2,G1-F21,85,1,G2-F11,0」）の部分データを取得することになる。当該部分データは最初のコンマまでにデータ「G2-K2」を含んでいるが、キーデータＫ３と異なる識別子であるため、矛盾が生じている。
【００６３】
さらに、残りのデータはコンマによって８個に分けられており、３の倍数ではない。よって、出力ファイルＧ２は、キーデータＫ３のアドレスおよびレングス（「4,38」）では復元できないと判断する。
【００６４】
次に、出力ファイルＧ３にキーデータＫ３のアドレスおよびレングス（「4,38」）を適用したとする。この場合、出力ファイルＧ３における５文字目から３８文字（すなわち、「G3-K3,G1-K1,0,83,G4-K4,2,84,G2-K2,4,96」）の部分データを取得することになる。当該部分データは最初のコンマまでにデータ「G3-K3」を含んでいるため、キーデータＫ３であることが判明する。
【００６５】
さらに、キーデータＫ３を解析することにより、キーデータＫ１、Ｋ２、Ｋ４のアドレスおよびレングスを再度取得することになる。
【００６６】
最後に、出力ファイルＧ２にキーデータＫ２のアドレスおよびレングス（「4,96」）を適用する。この場合、出力ファイルＧ２における５文字目から９６文字（すなわち、「G2-K2,G1-F11,83,2,G1-F21,85,1,G2-F11,0,2,G2-F22,2,2,G3-F12,0,3,G3-F21,3,1,G4-F22,0,2,G4-F12,86,3」）の部分データを取得することになる。当該部分データは最初のコンマまでにデータ「G2-K2」を含んでいるため、キーデータＫ２であることが判明する。
【００６７】
以上により、出力ファイルＧ１〜Ｇ４の復元が完了する。これにより、出力ファイルＧ１〜Ｇ４にそれぞれ含まれているデータブロックＳ１１〜Ｓ２２のアドレスおよびレングスが判明するため、文字列「pa」、「ss=」、「6」、「53」を取得することができ、これらを合成して「pass=653」という情報を取得することができる。
【００６８】
（１．６．他の順序での復元処理の例）
以下、他の順序での復元処理の例を説明する。まず、出力ファイルＧ２に復元キーＤＫ（すなわち、キーデータＫ１のアドレスおよびレングス（「0,83」））を適用したとする。この場合、出力ファイルＧ２における先頭から８３文字（すなわち、「pa53G2-K2,G1-F11,83,2,G1-F21,85,1,G2-F11,0,2,G2-F22,2,2,G3-F12,0,3,G3-F21,3,1,G4-F2」）の部分データを取得することになる。当該部分データは最初のコンマまでにデータ「pa53G2-K2」を含んでいるが、当該データは識別子として判別できない。
【００６９】
さらに、残りのデータはコンマによって１９個に分けられており、３の倍数ではない。以上より、出力ファイルＧ２は、キーデータＫ１のアドレスおよびレングス（「2,84」）では復元できないと判断する。
【００７０】
次に、出力ファイルＧ３に復元キーＤＫ（「0,83」）を適用したとする。この場合、出力ファイルＧ３のレングスが４２であるため、出力ファイルＧ３は、復元キーＤＫ（「0,83」）では復元できないと判断する。
【００７１】
出力ファイルＧ４に復元キーＤＫ（「0,83」）を適用する。この場合、出力ファイルＧ４における先頭から８３文字（すなわち、「53G4-K4,G1-K1,0,83,G1-F21,85,1,G2-F22,2,2,G3-K3,4,38,G1-F11,83,2,G3-F12,0,3,G2-F11,」）の部分データを取得することになる。当該部分データは最初のコンマまでにデータ「53G4-K4」を含んでいるが、当該データは識別子として判別できない。
【００７２】
さらに、残りのデータはコンマによって１９個に分けられており、３の倍数ではない。以上より、出力ファイルＧ４は、復元キーＤＫ（「0,83」）では復元できないと判断する。
【００７３】
次に、出力ファイルＧ１に復元キーＤＫ（（「0,83」））を適用したとする。これにより、以降において、上記（１．５．）と同様の処理が行われる。
【００７４】
（１．７．情報処理装置１００の処理の流れ）
図１０を参照し、情報処理装置１００のデータ組み替え処理の流れを説明する。ステップＳ１１０において、情報処理装置１００は、複数の入力ファイルを受け付ける。
【００７５】
ステップＳ１２０において、データ分割部２１は、複数の入力ファイルを複数のデータブロックに分割する。ステップＳ１３０において、データ複製部２２は、複数のデータブロックの複製を行う。
【００７６】
ステップＳ１４０において、データ組替部２３は、複製されたデータブロックについて、データの組み替えを行い、複数の出力ファイルを生成する。ステップＳ１５０において、情報処理装置１００は、出力ファイルを出力する。
【００７７】
（１．８．第１実施形態の効果）
以上のようにして、本実施形態に係る情報処理装置１００は、複数の入力ファイルを複数のデータブロックに分割し、複数のデータブロックの組み替えを行い、組み替えに関する情報をキーデータとして生成し、組み替えたデータブロックとキーデータを組み合わせて、複数の出力ファイルを生成する。
【００７８】
ここで、複数の出力ファイルそれぞれは、少なくとも１つのキーデータを保有する。また、キーデータそれぞれは、複数のデータブロックの組み替えに関する一部の情報を保有する。
【００７９】
このような構成とすることにより、分割データの一部が流出したとしても、入力ファイルを復元することが困難となり、データ復元のリスクを低減することができる。
【００８０】
また、複数の出力データは、分割されたデータブロックと、キーデータの情報を含んでいるため、可読性が低い。よって、復元のリスクを低減することが可能となる。
【００８１】
また、本実施形態では、データブロックを複製して組み替えをおこなっているため、出力ファイルをすべて入手しなくても、入力ファイルの復元が可能となる。
【００８２】
＜２．第２実施形態＞
以下、図１１〜図１５を参照し、本発明の第２実施形態を説明する。第２実施形態では、複数のデータブロックとキーデータを暗号化している点で第１実施形態と異なる。
【００８３】
図１１に示す例では、入力ファイルＦ１およびＦ２を受け付け、出力ファイルＳ１〜Ｓ７を出力する例が示されている。この場合においても、まずは入力ファイルＦ１およびＦ２を分割および複製し、データブロック「Ｆｎｍ（ｎ＝１〜３、ｍ＝１〜２）」を生成する。この例で示すように、分割後のデータブロックＦｎｍ単位で複製を行ってもよい。その後、データの組み換えを行い、出力ファイルＳ１〜Ｓ７を生成する。
【００８４】
出力ファイル「Ｓｎ（ｎ＝１〜７）」は、データブロックＦｎｍと、組み換え情報であるキーデータ「Ｋｎ（ｎ＝１〜６）」と、復元キー「ＫｎＤ（ｎ＝１〜２）」と、キーデータ復元キー「ＫｎＨ（ｎ＝１〜２）」が含まれる。図１２に示すように、Ｆｎｍ、Ｋｎ、ＫｎＨというデータの種別に対応する各ブロックの名称をＢｎｍとし、ブロックＢｎｍにおける記述する文字列をｂｎｍとする。したがって、例えば図１２におけるブロックＢ１２は、種別がＫ１Ｈ、文字列はｂ１２となる。
【００８５】
復元キーＫ１Ｄ、Ｋ２Ｄは、出力ファイルＳ１〜Ｓ５に基づいて、入力ファイルＦ１、Ｆ２を復元するためのデータである。詳細は後述するが、本実施形態では、復元キーＫ１Ｄ，Ｋ２Ｄは、キーデータ復元キーＫ１Ｈ、Ｋ２Ｈの位置（アドレス）データとして生成される。
【００８６】
キーデータ復元キーＫ１Ｈ、Ｋ２Ｈは、暗号化されたキーデータＫ１およびＫ２を復元するための鍵としてのデータである。以下、出力ファイル「Ｓｎ（ｎ＝１〜７）」の生成方法を例示する。
【００８７】
（２．１．出力ファイルの構成）
出力ファイルＳｎ内のキーデータ「Ｋｎ（ｎ=１〜６）」は、例えば以下とすることができる。ここで、（）は１つのデータであり、{}はＮｕｌｌを含む繰り返しデータであることを意味する。
【００８８】
Ｋｎ：「（識別子）,（自身が含まれるＳｎの識別子）,{包含するブロックＢｎｍの記述データｂｎｍ}，{包含する記述データｃｎｍ}」
【００８９】
（２．１．１．ブロックＢ）
図１２に示すように、出力ファイルＳ１〜Ｓ５のブロック「Ｂｎｍ（ｎ＝１〜５、ｍ＝１〜５）」を規定する。具体的には、出力ファイルＳ１〜Ｓ５内のブロックＢ１１〜Ｂ５５を規定する。
【００９０】
（２．１．２．ブロックＢの記述データ）
次に、Ｂｎｍに記述するデータを、ブロックＢの記述データ「ｂｎｍ（ｎ＝１〜５、ｍ＝１〜５）」として規定する。ｂｎｍは、Ｓｎにおける位置（アドレス）と長さのデータとして、例えば以下の形式とする。
【００９１】
ｂｎｍ：「（ブロックＢとしての識別子），（キーデータＫｎまたはデータブロックＦｎｍとしての識別子），（Ｓｎにおけるアドレス），（レングス）」
【００９２】
（２．１．３．暗号化データｃｎｍ）
次に、暗号化データｃｎｍを規定する。暗号化データ「ｃｎｍ（ｎ＝１〜５、ｍ＝１〜５）」は、キーデータ復元キーＫｎＨを除くｂｎｍの暗号化に使用するデータである。暗号化には、シーザー暗号、ＤＥＳ暗号、ＲＳＡ暗号、楕円暗号などの処理時に既知の暗号技術を用いることができる。暗号化データｃｎｍは、以下の形式とすることができる。
【００９３】
ｃｎｍ：「（ブロックＢの暗号化データとしての識別子），{（番号），{鍵，}}」
【００９４】
ここで、番号とは、図１４Ｂに示すように、暗号方式の種別（以下、暗号化方式ともいう）を指定するために予め定める番号である。たとえば、番号が０のときは暗号化なしとなり、番号が１の時はシーザー暗号で当該ブロックＢが暗号化されていることとなる。なお、本実施形態では、同一ブロックＢに複数の暗号方式を用いることを許容しているため、番号と鍵の組み合わせで繰り返しデータとなる。
【００９５】
また、図１４Ｂに示すように、暗号方式の種別によって、鍵の数は異なる。例えば、ＲＳＡ暗号の場合、２つの鍵が必要となる。そのため、暗号ブロックＣの記述データにおいては、鍵単独で繰り返しデータとなることもあり得る。なお、図１４Ｂの番号、種別、鍵数は一例にすぎず、この例に限定されることはない。
【００９６】
（２．１．４．暗号化データＫｎＨ）
キーデータ復元キーＫｎＨは、対象のＫｎの暗号化に使用するデータである。キーデータ復元キー「ＫｎＨ（ｎ＝１〜２）」は、以下の形式とすることができる。
【００９７】
ＫｎＨ：「（該当ＫｎＨの残りの文字数），（番号），{鍵，}（Ｓｎにおけるアドレス），（レングス）」
【００９８】
ここで、（該当ＫｎＨの残りの文字数）とは、当該ＫｎＨにおける（番号）から（レングス）までの（，（カンマ）も含めた）文字数である。例えば、「９,１,１,２,１１７」の場合、図１４Ｂに示すように暗号化方式は鍵１のシーザー暗号であり、出力ファイルＳｎにおけるアドレスは２であり、（番号）から（レングス）までの文字数（この場合だと、「１,１,２,１１７」の文字数）が９ということとなる。なお、ＫｎＨとｃｎｍとは、重複して出力ファイル内に保有させてもよい。
【００９９】
（２．２．キーデータＫｎの生成手順）
（２．２．１．Ｋｎに記載する記述データｂｎｍの決定）
図１３Ａに示すように、キーデータＫ１〜Ｋ６に含めるブロックＢの記述データｂｎｍを決定する。図１３Ａに示す例では、Ｋ１には、ｂ２２とｂ５２が含まれる。また、Ｋ３は、いずれのｂｎｍも含まないこととなる。
【０１００】
ここで、図１２を参照すると、Ｋ１が含むｂ２２は、Ｋ２に対応している。そして、Ｋ１が含むｂ５２は、Ｋ５に対応している。すなわち、Ｋ１は、Ｋ２とＫ５の記述データを含むこととなる。同様に、図１３Ａを参照して、キーデータＫ４は、記述データｂ１１、ｂ２３、ｂ３２を含んでいる。図１２を参照すると、ｂ１１はＫ１であり、ｂ２３はデータブロックＦ３１であり、ｂ３２は、Ｋ３である。すなわち、Ｋ４は、Ｋ１とＫ３の記述データを含むこととなる。
【０１０１】
このようにして、図１３Ａに規定されるようにキーデータＫ１〜Ｋ６に含まれるｂｎｍを規定すると、Ｋ１〜Ｋ６について、図１３Ｂに示す包含関係が成立する。図１３Ｂは、矢印の始点にあるキーデータ（例えばＫ１）は、矢印の終点にあるキーデータ（例えばＫ２およびＫ５）の記述データを保有していることを意味している。なお、図１３Ａに規定されるキーデータＫｎとブロックＢの包含関係は一例にすぎず、この例に限定されることはない。
【０１０２】
（２．２．２．Ｋｎに包含するする暗号化データｃｎｍの決定）
図１４Ａに示すように、キーデータＫｎに包含する暗号化データｃｎｍを決定する。図１４Ａに示す例では、Ｋ１に、ｃ２２とｃ５２が含まれる。また、Ｋ４は、ｃ１１、ｃ２３、ｃ２４、ｃ３２を含んでいる。このように、同一のＫｎが含む記述データｂｎｍと暗号化データｃｎｍとは必ずしも対応していなくともよい。
【０１０３】
（２．３．出力ファイルの生成手順）
以下、図１５を参照し、出力ファイルの生成手順を説明する。
（２．３．１．Ｆ１、Ｆ２の分割）
まず、ステップＳ１１０において、入力ファイルＦ１およびＦ２を受け付ける。ステップＳ１２０において、入力ファイルＦ１〜２の各分割サイズを決定する。平均と分散によるランダムな長さにする方法や、ユーザーによる指定などが想定される。長さを２の冪数に合わせる、合わせない、検証しない、などの条件を設定してもよい。ステップＳ１３０において、分割データの複製が行われる。
【０１０４】
（２．３．２．Ｂｎｍの配置）
ステップＳ１４０において、分割データの組み換え処理を行う。まず、分割データの組み換え処理では、まず、出力ファイルＳｎのファイル数とＢｎｍの並びを決定する。並び順は、ランダム順やユーザーによる指定などが想定される。送信条件などによるサイズなどの条件や、重複の条件の設定も想定される。図１１および図１２に、出力ファイルＳｎのファイル数とＢｎｍの並びの例を示す。
【０１０５】
（２．３．３．Ｋｎの設定）
図１３Ａ、図１３Ｂ、図１４Ａに示すように、Ｋｎの包含関係などの条件に合わせてＫｎを決定する。
【０１０６】
（２．３．４．ＫｎＨの設定）
ｃｎｍやＫｎの包含関係などの条件に合わせてＫｎＨを決定する。一例として、Ｋ１Ｈは暗号化なしのＢ１１を対象として「6,0,0,43」、Ｋ２Ｈは鍵「1」のシーザー暗号のＢ５５を対象として「9,1,1,2,117」とすることができる。
【０１０７】
（２．３．５．該当Ｂｎｍの暗号化）
一例として、以下に示すｃ２４、ｃ３１、ｃ４２、ｃ５１、Ｋ２Ｈに従い、Ｂ２４、Ｂ３１、Ｂ４２、Ｂ５１、Ｂ２２」を暗号化する場合を説明する。
【０１０８】
ｃ２４が「C24,1,2,3,55,7」の場合、Ｂ２４（Ｆ２２）は「3」なので、鍵「2」のシーザー暗号で「5」となる。「5」は鍵「55」「7」のＲＳＡ暗号で「25」となる。
【０１０９】
ｃ３１が「C31,1,1」の場合、Ｂ３１（Ｆ１１）は「pa」なので、鍵「1」のシーザー暗号で「qb」となる。
【０１１０】
ｃ４２が「C42,1,3」の場合、Ｂ４２（Ｆ２１）は「65」なので、鍵「3」のシーザー暗号で「98」となる。
【０１１１】
ｃ５１が「C51,3,55,7」の場合、Ｂ５１（Ｆ３２）は「3」なので、鍵「55」「7」のＲＳＡ暗号で「37」となる。
【０１１２】
Ｋ２Ｈが「9,1,1,2,117」の場合、Ｂ２２（Ｋ２）は「K2,S2,(略),C53,0」なので、鍵「1」のシーザー暗号で「L3-T3-(略)-D64-1」となる。
【０１１３】
（２．３．６．ブロックＢの結合）
上記（２．３．２）〜（２．３．５）の処理で得られた文字列を結合し、出力ファイルＳ１〜Ｓ５を生成する。
Ｓ１：
「K1,S1,B22,K2,2,117,B52,K5,2,115,C22,1,1,C52,06,0,0,45ss=」
【０１１４】
Ｓ２：
「paL3-T3-C43-L4-3-6-C44-G33-8-2-C53-G32-4-3-C64-G42-22:-2-D22-1-D24-1-D32-1-D34-1-D35-2-3-4-66-8-D44-1-D52-1-D54-1-D64-1625」
【０１１５】
Ｓ３：
「paK3,S33」
【０１１６】
Ｓ４：
「ss=98K4,S4,B11,K1,0,45,B23,F31,119,1,B32,K3,2,5,C11,0,C21,0,C24,1,2,3,55,7,C32,0」
【０１１７】
Ｓ５：
「37K5,S5,B13,F12,53,3,B22,K2,2,117,B24,F22,120,2,B42,F21,3,2,B43,K4,5,75,B54,K6,118,97,C22,1,1,C31,0,C32,0,C43,0,C54,06K6,S5,B21,F11,0,2,B31,F11,0,2,B33,F22,7,1,B41,F12,0,3,B51,F32,0,2,B52,K5,2,115,C42,1,3,C51,3,55,79,1,1,2,117」
【０１１８】
（２．３．７．ＫｎＤの生成）
Ｂ１２・Ｂ５５のアドレスより復元キーデータＫ１Ｄ・Ｋ２Ｄを作成する。人が記憶や入力しやすくするために、また、文字数を減らすため、Ｂ１２のアドレス「45」を、３６進数に変換すると「19」となる。Ｂ５５のアドレス「215」は、「5Z」となる。なお、３６進数は一例にすぎず、他のＮ進数（Ｎは自然数）を用いてもよい。
【０１１９】
Ｋ１Ｄ：
「19」
【０１２０】
Ｋ２Ｄ：
「5Z」
【０１２１】
（２．３．８．整合性チェック）
ステップＳ１４５において、「Ｓ１〜Ｓ５」「Ｋ１Ｄ，Ｋ２Ｄ」の整合性チェックを行う。すなわち、出力ファイルＳ１〜Ｓ７にもとづいて、入力ファイルＦ１およびＦ２が復元可能であること、復元したファイルと入力ファイルの同一性、冗長性のある場合は同じ文字列の存在等をチェックする。
（２．３．９．ファイル出力）
ステップＳ１５０において、生成された出力ファイルＳ１〜Ｓ７を、記憶装置や印刷機などに出力する。
【０１２２】
（２．４．入力ファイルの復号方法）
（２．４．１．パターン１（すべての出力ファイルＳ１〜Ｓ７を入手した場合））
入手した直後は対応するファイル名は不明のため、入手したファイルをＴ１〜Ｔ５、Ｋ１Ｔ、Ｋ２Ｔとする。
【０１２３】
Ｔ１：
「paK3,S33」
【０１２４】
Ｔ２：「paL3-T3-C43-L4-3-6-C44-G33-8-2-C53-G32-4-3-C64-G42-22:-2-D22-1-D24-1-D32-1-D34-1-D35-2-3-4-66-8-D44-1-D52-1-D54-1-D64-1625」
【０１２５】
Ｔ３：
「ss=98K4,S4,B11,K1,0,45,B23,F31,119,1,B32,K3,2,5,C11,0,C21,0,C24,1,2,3,55,7,C32,0」
【０１２６】
Ｔ４：
「K1,S1,B22,K2,2,117,B52,K5,2,115,C22,1,1,C52,06,0,0,45ss=」
【０１２７】
Ｔ５：「37K5,S5,B13,F12,53,3,B22,K2,2,117,B24,F22,120,2,B42,F21,3,2,B43,K4,5,75,B54,K6,118,97,C22,1,1,C31,0,C32,0,C43,0,C54,06K6,S5,B21,F11,0,2,B31,F11,0,2,B33,F22,7,1,B41,F12,0,3,B51,F32,0,2,B52,K5,2,115,C42,1,3,C51,3,55,79,1,1,2,117」
【０１２８】
Ｋ１Ｔ：
「19」
【０１２９】
Ｋ２Ｔ：
「5Z」
【０１３０】
（２．４．１．１．Ｋ１Ｔからアドレスを算出） 
Ｋ１Ｔの「19」を10進数に変換して「45」を得る。なお、この時点では対応しているＫｎが不明なので「Ｋ？Ｄ」と表記する。以下、「Ｋ？Ｈ」「Ｋ？」も同様に対応しているＫｎＨおよびＫｎが不明であることを意味する。
【０１３１】
（２．４．１．２．Ｋ？Ｈの検索）
まず、Ｋ１Ｔに対応するＫ？Ｈを検索する。Ｔ１の長さは８であり４５よりも短いため、Ｔ１はＫ？Ｈの候補ではないと判明する。次に、Ｔ２のアドレス４５からの文字列は「4-G42-(略)」である。１文字目が数値でないので、Ｔ１はＫ？Ｈの候補ではないと判明する。
【０１３２】
次に、Ｔ３のアドレス４５からの文字列は「,5,C11,(略)」である。１文字目が数値でないので、Ｔ３はＫ？Ｈの候補ではないと判明する。次に、Ｔ４のアドレス４５からの文字列は「6,0,0,45ss=」である。残りの文字列が６文字とすると、「0,0,45」となる。ここで、暗号化方式が0(暗号化なし)とすると、アドレスが「0」、長さが「45」となるので、Ｔ４はＫ？Ｈ候補となることが判明する。
【０１３３】
次に、Ｔ５のアドレス４５からの文字列は「,2,B42,(略)」である。１文字目が数値でないので、Ｔ５はＫ？Ｈ候補とならない。以上から、Ｔ４の「6,0,0,45」がＫ？Ｈとなり、暗号化方式「0」、アドレス「0」、長さ「45」であることが判明する。
【０１３４】
（２．４．１．３．Ｋ？の検索）
次に、判明したＫ？Ｈが保持しているアドレス「0」、長さ「45」というデータを用いて、対応するＫ？を検索する。まず、Ｔ１のアドレス０からの長さは８なので、Ｔ１はＫ？の候補ではないと判明する。次に、Ｔ２のアドレス０から長さ４５までの文字列は「paL3-T1-C43-L4-3-6-C44-G33-8-2-C53-G32-4-3-C6」である。1文字目がＫではないので、Ｔ２はＫ？の候補ではないと判明する。
【０１３５】
次に、Ｔ３のアドレス０から長さ４５までの文字列は「ss=98K4,S4,B11,K1,0,45,B23,F31,119,1,B32,K3,2」である。１文字目がＫではないので、Ｔ３はＫ？の候補ではないと判明する。次に、Ｔ４のアドレス０から長さ４５までの文字列は「K1,S1,B22,K2,2,117,B52,K5,2,115,C22,1,1,C52,0」である。１文字目がＫなので、Ｔ４はＫ？の候補となる。
【０１３６】
次に、Ｔ５のアドレス０から長さ４５までの文字列は「37K5,S5,B13,F12,53,3,B22,K2,2,117,B24,F22,120」である。１文字目がＫではないので、Ｔ５はＫ？の候補ではないと判明する。以上より、Ｔ４＝Ｓ１であることが判明し、「B22,K2,2,117」「B52,K5,2,115」「C22,1,1」「C52,0」というデータを得ることができる。すなわち、識別子は「K1」であり、自身が含まれるＳの識別子は「S1」であり、「B22は"K2"・アドレス「2」・長さ「117」・暗号化方式「1」・鍵「1」」であり、「B52は"K5"・アドレス「2」・長さ「115」・暗号化方式「なし」」であることが判明する。
【０１３７】
（２．４．１．４．Ｋ２の検索）
上記処理で判明した「B22,K2,2,117」を用いてＫ２を検索する。すでに得られた「C22,1,1」というデータから、Ｂ２２の暗号化方式は、鍵「1」のシーザー暗号と判る。
【０１３８】
Ｔ１のアドレス２からの長さは６であり、１１７より短いのでＫ２の候補ではないと判明する。次に、Ｔ２のアドレス２から長さ１１７までの文字列は、「K2,S2,B32,K3,2,5,B33,F22,7,1,B42,F21,3,2,B53,F31,117,1,C11,0,C13,0,C21,0,C23,0,C24,1,2,3,55,7,C33,0,C41,0,C43,0,C53,0」となる。１文字目がＫなので、Ｋ２の候補となる。
【０１３９】
次に、Ｔ３のアドレス２からの長さは７８であり、１１７より短いのでＫ２の候補ではないことが判明する。次に、Ｔ５のアドレス２から長さ１１７の文字列は、「J4+R4+A02+E01+42+2+A11+J1+1+006+A13+E11+01/+1+A31+E10+2+1+A32+J3+4+64+A43+J5+007+86+B11+0+0+B20+/+B21+/+B32+/+B43+/5J」となる。１文字目がＫでないので、Ｋ２の候補ではないと判明する。
【０１４０】
以上より、Ｔ２＝Ｓ２であることが判明し、「B32,K3,2,5」「B33,F22,7,1」「B42,F21,3,2」「B53,F31,117,1」「C11,0」「C13,0」「C21,0」「C23,0」「C24,1,2,3,55,7」「C33,0」「C41,0」「C43,0」「C53,0」というデータを得ることができる。すなわち、識別子は「K2」であり、自身が含まれるＳの識別子は「S2」であり、「B32は"K3"・アドレス「2」・長さ「5」」等が判明する。
【０１４１】
（２．４．１．５．Ｋ５の検索）
上記処理で判明した「B52,K5,2,115」を用いてＫ５を検索する。すでに得られた「C52,0」というデータから、Ｂ５２の暗号化方式は「0」とわかる。
【０１４２】
まず、Ｔ１のアドレス２からの長さは６であり、１１５より短いのでＴ１はＫ５の候補ではないと判明する。次に、Ｔ３のアドレス２からの長さは７８であり、１１５より短いのでＴ１はＫ５の候補ではないと判明する。
【０１４３】
次に、Ｔ５のアドレス２から長さ１１５の文字列は、「K5,S5,B13,F12,53,3,B22,K2,2,117,B24,F22,120,2,B42,F21,3,2,B43,K4,5,75,B54,K6,118,97,C22,1,1,C31,0,C32,0,C43,0,C54,0」となる。１文字目がＫなので、Ｔ５はＫ５の候補となる。以上より、Ｔ５＝Ｓ５であることが判明し、「B13,F12,53,3」「B22,K2,2,117」「B24,F22,120,2」「B42,F21,3,2」「B43,K4,5,75」「B54,K6,118,97」「C22,1,1」「C31,0」「C32,0」「C43,0」「C54,0」というデータを得ることができる。すなわち、識別子は「K5」であり、自身が含まれるSの識別子は「S5」であり、「B13は"F12"・アドレス「53」・長さ「3」」、等が判明する。
【０１４４】
（２．４．１．６．Ｋ３の検索）
上記処理で判明した「B32,K3,2,5」を用いてＫ３を検索する。すでに得られた「C32,0」というデータから、Ｂ３２の暗号化方式は「0」とわかる。
【０１４５】
まず、Ｔ１のアドレス２から長さ５は「K3,S3」となる。１文字目がＫなので、Ｔ１はＫ３の候補となる。次に、Ｔ３のアドレス２から長さ５は「=98K4」となる。１文字目がＫでないので、Ｔ１はＫ３の候補とならないと判明する。以上より、Ｔ１＝Ｓ３であることが判明する。識別子「K3」、自身が含まれるSの識別子「S3」となる。
【０１４６】
（２．４．１．７．Ｋ４の検索）
上記処理で判明した「B43,K4,5,75」「C43,0」というデータから、Ｂ４３の暗号化方式は「0」とわかる。Ｔ３のアドレス５から長さ７５は、「K4,S4,B11,K1,0,45,B23,F31,119,1,B32,K3,2,5,C11,0,C21,0,C24,1,2,3,55,7,C32,0」となる。１文字目がＫなので、Ｔ３はＫ４の候補となる。
【０１４７】
以上より、Ｔ３＝Ｓ４となり、「B11,K1,0,45」「B23,F31,119,1」「B32,K3,2,5」「C11,0」「C21,0」「C24,1,2,3,55,7」「C32,0」というデータを得ることができる。すなわち、識別子「K4」、自身が含まれるSの識別子「S4」、「B11は"K1"・アドレス「0」・長さ「45」」等が判明する。以上により、Ｓ１＝Ｔ４、Ｓ２＝Ｔ２、Ｓ３＝Ｔ１、Ｓ４＝Ｔ３、Ｓ５＝Ｔ５であることが判明する。
【０１４８】
（２．４．１．８．Ｋ６の検索）
上記処理により得られた「B54,K6,118,97」よりＫ６を検索する。「C54,0」より、Ｂ５４の暗号化方式は「0」とわかる。
【０１４９】
まず、Ｓ１〜Ｓ４は長さが１１８より短いので、これらはＫ６の候補とならないことが判明する。次に、Ｓ５のアドレス１１８から長さ９７は、「K6,S5,B21,F11,0,2,B31,F11,0,2,B33,F22,7,1,B41,F12,0,3,B51,F32,0,2,B52,K5,2,115,C42,1,3,C51,3,55,7」となる。１文字目がＫなので、Ｓ５はＫ６の候補となる。以上より、「B21,F11,0,2」「B31,F11,0,2」「B33,F22,7,1」「B41,F12,0,3」「B51,F32,0,2」「B52,K5,2,115」「C42,1,3」「C51,3,55,7」というデータを得ることができる。すなわち、識別子は「K6」であり、自身が含まれるSの識別子「S5」等が判明する。
【０１５０】
（２．４．１．９．Ｆ１およびＦ２の復元）
以上により求まった記述データについてのデータである「B31,F11,0,2」「B41,F12,0,3」「B42,F21,3,2」「B24,F22,120,2」「B23,F31,119,1」「B51,F32,0,2」と、暗号化データについてのデータである「C31,0」「C41,0」「C42,1,3」「C24,1,2,3,55,7,」「C23,0」「C51,3,55,7」より、「F11＝"pa"」「F12＝"ss="」「F21＝"65"」「F22＝"3"」「F31＝"6"」「F32＝"53"」が判明する。したがって、「F1＝"pass="」「F2＝"653"」「F3＝"653"」というように入力データを復元することができる。
【０１５１】
（２．４．２．パターン２（出力ファイルＳ１〜Ｓ５と、Ｋ２Ｔを入手した場合））
次に、出力ファイルＳ１〜Ｓ５とＫ２Ｔのみを入手して復元する例を説明する。
【０１５２】
（２．４．２．１．Ｋ２Ｔからアドレスを算出）
まず取得したＫ２Ｔである「5Z」を10進数に変換して「215」を算出する。
【０１５３】
（２．４．２．２．Ｋ？Ｈの検索）
（２．４．１）と同様の方法で、Ｔ５の「9,1,1,2,117」がＫ？Ｈの候補となる。暗号化方式「1」、鍵「1」、アドレス「2」、長さ「117」が判明する。
【０１５４】
（２．４．２．３．K？の検索）
（２．４．１）と同様の方法で、識別子「K3」が判明し、Ｔ２＝Ｓ２となる。以下同様に、Ｓ１＝Ｔ４、Ｓ３＝Ｔ１、Ｓ４＝Ｔ３、Ｓ５=Ｔ５がわかる。このように、Ｋ２Ｔのみを入手した場合であっても、出力ファイルから入力ファイルを復元することが可能であることがわかる。
【０１５５】
（２．４．３．パターン３（出力ファイルＳ１〜Ｓ７がそろっていない場合））
次に、出力ファイルＳ１〜Ｓ７を全て入手できなかった場合について説明する。この例では、以下に示すＴ１〜Ｔ４およびＫ１Ｔを入手したものとして説明する。
【０１５６】
Ｔ１：「paL3-T3-C43-L4-3-6-C44-G33-8-2-C53-G32-4-3-C64-G42-228-2-D22-1-D24-1-D32-1-D34-1-D35-2-3-4-66-8-D44-1-D52-1-D54-1-D64-1625」
【０１５７】
Ｔ２：「37K5,S5,B13,F12,53,3,B22,K2,2,117,B24,F22,120,2,B42,F21,3,2,B43,K4,5,75,B54,K6,118,97,C22,1,1,C31,0,C32,0,C43,0,C54,06K6,S5,B21,F11,0,2,B31,F11,0,2,B33,F22,7,1,B41,F12,0,3,B51,F32,0,2,B52,K5,2,115,C42,1,3,C51,3,55,79,1,1,2,117」
【０１５８】
Ｔ３：
「paK3,S33」
【０１５９】
Ｔ４：
「K1,S1,B22,K2,2,117,B52,K5,2,115,C22,1,1,C52,06,0,0,45ss=」
【０１６０】
Ｋ１Ｔ：
「19」
【０１６１】
（２．４．３．１．Ｋの検索）
（２．４．１）と同様の方法を行った場合に、Ｓ１＝Ｔ４、Ｓ２＝Ｔ１、Ｓ３＝Ｔ３、Ｓ５＝Ｔ２が判明するが、Ｓ４＝Ｔ４が不足していることが判明する。
【０１６２】
（２．４．３．２．Ｆの復元）
「B21,F11,0,2(S2)」「B13,F12,53,3(S1)」「B24,F22,120,2(S2)」「B53,F31,117,1(S5)」「B51,F32,0,2(S5)」が判明するため、Ｆ１とＦ３は復元が可能であるが、Ｆ２１がないことによりＦ２は復元できない。このように出力ファイルの一部のみを取得した場合には、入力ファイルを復元できない場合があり得る。
【０１６３】
（２．４．４．第２実施形態の効果）
以上のようにして、第２実施形態では、既存の暗号化をより強靭にできる。また、冗長なデータでも、ブロックの長さを変えることで、同一の文字列ができにくい。また、復元キーＫｎＤを短くすることにより人が記憶や紙でのメモを可能とする。
【０１６４】
さらに、ＫｎとＫｎＨのアドレスと長さ、複数の暗号化により頻度分析に対抗できるため、鍵や索引の位置と長さを任意に変更できる。また、Ｋｎが相互に参照可能であるため、出力ファイルＳｎがそろわなくても復元できる可能性がある。さらに、Ｋｎの参照を制御することで、アクセス制限ができる。
＜３．その他の実施形態＞
【０１６５】
以上、本願発明における実施形態について説明したが、本開示の適用は上述の内容に限定されるものではない。
【０１６６】
例えば、上記実施形態においては、データ複製部２２は、分割されたデータブロックの複製を行っているが、入力ファイルが分割される前に複製を行っても良い。
【０１６７】
また、データ組替部２３は、データブロックの組み替えにあたり、入力データが備える脆弱な部分（たとえば、ファイル形式を示す拡張子の部分）を一つの出力データに集約することにより、復元のリスクをより低減するようにしてもよい。
【０１６８】
また、情報処理装置１００は、出力ファイルに対して、既存の暗号処理を施してもよい。このようにすることにより、入力ファイルのデータ分割および組み替えを行った後に暗号化をすることになるため、データの復元のための情報も暗号化され、復元のリスクを低減することができる。
【０１６９】
出力ファイルに対して暗号処理を施す場合は、複数の出力ファイル全てに同一の暗号処理をしてもよいし、複数の出力ファイルのそれぞれに対して、異なる既存の暗号処理を施してもよい。同一の暗号処理をする場合には、データブロックの長さ（レングス）が異なるように、入力ファイルを分割するのが好ましい。このようにすることで、ＲＳＡ暗号のようにビットの並びを組み替える暗号処理の場合に、データブロックの長さが同じことにより、同一の暗号文になってしまうことを防ぐことができる。
【０１７０】
また、データ複製部２２は、データブロックの複製にあたり、データブロックのハッシュ値を生成し、当該ハッシュ値を含むデータブロックを生成してもよい。または、入力ファイルのファイル形式に関する情報をデータブロックに含ませてもよい。
【０１７１】
また、上記実施形態では、キーデータＫ１〜Ｋ４は、キーデータ自身およびデータブロックについての識別子、レングス、アドレスを保有していたが、この例に限定されることはない。たとえば、キーデータ自身またはデータブロックの識別子を保有していなくともよい。また、データブロックが固定長の場合には、レングスを保有していなくてもよい。
【０１７２】
また、復元に使用する処理プログラムを出力ファイル内に包含してもよい。また、複数の暗号化方式を組合可能なコンテナフォーマットの概念とアドレスを使用してもよい。
【０１７３】
さらに、本発明は、情報処理装置１００を機能させるコンピュータープログラムとして実現することもできる。この場合、情報処理装置１００は、スマートフォンやタブレット端末などの携帯端末に当該コンピュータープログラムをインストールすることにより実現させてもよい。
【０１７４】
さらに、本発明は、上述のプログラムを格納する、コンピューター読み取り可能な非一時的な記録媒体として実現することもできる。
【０１７５】
本発明に係る種々の実施形態を説明したが、これらは、例として提示したものであり、発明の範囲を限定することは意図していない。当該新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。当該実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【０１７６】
１１      ：制御部
１２      ：主記憶部
１３      ：補助記憶部
１４      ：通信部
１５      ：操作入力部
１６      ：モニタ
１７      ：システムバス
２０      ：サーバー
２１      ：データ分割部
２２      ：データ複製部
２３      ：データ組替部
２４      ：データ復元部
１００    ：情報処理装置
【要約】
【課題】強靭な暗号化を実現する情報処理装置を提供する。
【解決手段】複数の入力ファイルを、複数の出力ファイルに変換する情報処理装置であって、データ分割部と、データ複製部と、データ組替部を備え、前記データ分割部は、前記複数の入力ファイルを複数のデータブロックに分割し、前記データ複製部は、前記複数のデータブロックの複製を行い、前記データ組替部は、複製された前記複数のデータブロックの組み替えを行い、前記組み替えに関する情報をキーデータとして生成し、組み替えた前記データブロックと前記キーデータを組み合わせて、前記複数の出力ファイルを生成し、前記複数の出力ファイルが保有するキーデータそれぞれは、前記複数のデータブロックの組み替えに関する一部の情報を保有し、前記入力ファイルを復元するためのデータとして、前記キーデータの前記出力ファイルにおける位置に関する情報を含む復元キーを出力する、情報処理装置が提供される。
【選択図】図４【図１】
0006893057.tif 000002
【図２】
0006893057.tif 000003
【図３】
0006893057.tif 000004
【図４】
0006893057.tif 000005
【図５】
0006893057.tif 000006
【図６】
0006893057.tif 000007
【図７】
0006893057.tif 000008
【図８】
0006893057.tif 000009
【図９】
0006893057.tif 000010
【図１０】
0006893057.tif 000011
【図１１】
0006893057.tif 000012
【図１２】
0006893057.tif 000013
【図１３】
0006893057.tif 000014
【図１４】
0006893057.tif 000015
【図１５】
0006893057.tif 000016