特開2021-96472(P2021-96472A)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 黒川 敦の特許一覧

特開2021-96472情報処理装置、およびコンピュータープログラム
<>
  • 特開2021096472-情報処理装置、およびコンピュータープログラム 図000003
  • 特開2021096472-情報処理装置、およびコンピュータープログラム 図000004
  • 特開2021096472-情報処理装置、およびコンピュータープログラム 図000005
  • 特開2021096472-情報処理装置、およびコンピュータープログラム 図000006
  • 特開2021096472-情報処理装置、およびコンピュータープログラム 図000007
  • 特開2021096472-情報処理装置、およびコンピュータープログラム 図000008
  • 特開2021096472-情報処理装置、およびコンピュータープログラム 図000009
  • 特開2021096472-情報処理装置、およびコンピュータープログラム 図000010
  • 特開2021096472-情報処理装置、およびコンピュータープログラム 図000011
  • 特開2021096472-情報処理装置、およびコンピュータープログラム 図000012
  • 特開2021096472-情報処理装置、およびコンピュータープログラム 図000013
  • 特開2021096472-情報処理装置、およびコンピュータープログラム 図000014
  • 特開2021096472-情報処理装置、およびコンピュータープログラム 図000015
  • 特開2021096472-情報処理装置、およびコンピュータープログラム 図000016
  • 特開2021096472-情報処理装置、およびコンピュータープログラム 図000017
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】特開2021-96472(P2021-96472A)
(43)【公開日】2021年6月24日
(54)【発明の名称】情報処理装置、およびコンピュータープログラム
(51)【国際特許分類】
   G09C 1/04 20060101AFI20210528BHJP
【FI】
   G09C1/04
【審査請求】有
【請求項の数】7
【出願形態】OL
【全頁数】24
(21)【出願番号】特願2020-206995(P2020-206995)
(22)【出願日】2020年12月14日
(31)【優先権主張番号】特願2019-225667(P2019-225667)
(32)【優先日】2019年12月13日
(33)【優先権主張国】JP
(71)【出願人】
【識別番号】519446702
【氏名又は名称】黒川 敦
(74)【代理人】
【識別番号】110001139
【氏名又は名称】SK特許業務法人
(74)【代理人】
【識別番号】100130328
【弁理士】
【氏名又は名称】奥野 彰彦
(74)【代理人】
【識別番号】100130672
【弁理士】
【氏名又は名称】伊藤 寛之
(72)【発明者】
【氏名】黒川 敦
(57)【要約】
【課題】強靭な暗号化を実現する情報処理装置を提供する。
【解決手段】複数の入力ファイルを、複数の出力ファイルに変換する情報処理装置であって、データ分割部と、データ複製部と、データ組替部を備え、前記データ分割部は、前記複数の入力ファイルを複数のデータブロックに分割し、前記データ複製部は、前記複数のデータブロックの複製を行い、前記データ組替部は、複製された前記複数のデータブロックの組み替えを行い、前記組み替えに関する情報をキーデータとして生成し、組み替えた前記データブロックと前記キーデータを組み合わせて、前記複数の出力ファイルを生成し、前記複数の出力ファイルが保有するキーデータそれぞれは、前記複数のデータブロックの組み替えに関する一部の情報を保有し、前記入力ファイルを復元するためのデータとして、前記キーデータの前記出力ファイルにおける位置に関する情報を含む復元キーを出力する、情報処理装置が提供される。
【選択図】図4
【特許請求の範囲】
【請求項1】
複数の入力ファイルを、複数の出力ファイルに変換する情報処理装置であって、
データ分割部と、データ複製部と、データ組替部を備え、
前記データ分割部は、前記複数の入力ファイルを複数のデータブロックに分割し、
前記データ複製部は、前記複数のデータブロックの複製を行い、
前記データ組替部は、
複製された前記複数のデータブロックの組み替えを行い、
前記組み替えに関する情報をキーデータとして生成し、
組み替えた前記データブロックと前記キーデータを組み合わせて、前記複数の出力ファイルを生成し、
前記複数の出力ファイルが保有するキーデータそれぞれは、前記複数のデータブロックの組み替えに関する一部の情報を保有し、
前記入力ファイルを復元するためのデータとして、前記キーデータの前記出力ファイルにおける位置に関する情報を含む復元キーを出力する、情報処理装置。
【請求項2】
請求項1に記載の情報処理装置であって、
前記データ組替部は、複数の前記キーデータを生成し、
前記複数の出力ファイルそれぞれは、少なくとも1つのキーデータを保有する、情報処理装置。
【請求項3】
請求項1または請求項2に記載の情報処理装置であって、
前記キーデータは、前記出力ファイルにおける前記データブロックの位置に関する情報、および前記データブロックの長さに関する情報を含む、情報処理装置。
【請求項4】
請求項1〜請求項3のいずれか1項に記載の情報処理装置であって、
前記データ組替部は、前記出力ファイルを前記入力ファイルに復元するためのデータを生成し、
前記復元するためのデータは、前記出力ファイルにおける前記キーデータの位置に関する情報、および前記キーデータの長さに関する情報を含む、情報処理装置。
【請求項5】
請求項1〜請求項4のいずれか1項に記載の情報処理装置であって、
前記データ分割部は、前記複数の入力ファイルを、長さの異なる複数のデータブロックに分割する、情報処理装置。
【請求項6】
請求項1〜請求項5のいずれか1項に記載の情報処理装置であって、
前記データ組替部は、前記入力ファイルにおける前記データブロックの順序が入れ替わるように、当該データブロックの組み替えを行う、情報処理装置。
【請求項7】
コンピューターを、複数の入力ファイルを複数の出力ファイルに変換する情報処理装置として機能させるコンピュータープログラムであって、
データ分割ステップと、データ複製ステップと、データ組替ステップとを、前記コンピューターに実行させ、
前記データ分割ステップでは、前記複数の入力ファイルを複数のデータブロックに分割し、
前記データ複製ステップでは、前記複数のデータブロックの複製を行い、
前記データ組替ステップでは、
複製された前記複数のデータブロックの組み替えを行い、
前記組み替えに関する情報をキーデータとして生成し、
組み替えた前記データブロックと前記キーデータを組み合わせて、前記複数の出力ファイルを生成し、
前記複数の出力ファイルが保有するキーデータそれぞれは、前記複数のデータブロックの組み替えに関する一部の情報を保有し、
前記入力ファイルを復元するためのデータとして、前記キーデータの前記出力ファイルにおける位置に関する情報を含む復元キーを出力する、コンピュータープログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、入力ファイルの暗号化を行う情報処理装置に関する。
【背景技術】
【0002】
従来、入力ファイルの暗号化を行う情報処理装置の開発が進められている。例えば、特許文献1には、受信グループとして選択されたグループに属する端末装置が協力することにより復号できるような暗号化方法が開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2003−143121号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
このような従来の暗号化方法では、当該暗号化方法を悪意のある第3者に特定されると、容易に復号されてしまうといった課題があった。また、公開鍵を使用したRSAやElliptic Curve Cryptographyにより、テキスト全体を単一方式で暗号化した場合、機械学習により解読できるとする例もある。暗号化の鍵は、安全性の担保のために一定以上の長さが必要となる。RSAの場合1024bit以下の鍵は解読済だが、人が128文字を記憶や入力することは不可能である。
【0005】
本発明のいくつかの態様は、このような事情を鑑みてなされたものであり、強靭な暗号化を実現する情報処理装置を提供することにある。
【課題を解決するための手段】
【0006】
本発明によれば、複数の入力ファイルを、複数の出力ファイルに変換する情報処理装置であって、データ分割部と、データ複製部と、データ組替部を備え、前記データ分割部は、前記複数の入力ファイルを複数のデータブロックに分割し、前記データ複製部は、前記複数のデータブロックの複製を行い、前記データ組替部は、複製された前記複数のデータブロックの組み替えを行い、前記組み替えに関する情報をキーデータとして生成し、組み替えた前記データブロックと前記キーデータを組み合わせて、前記複数の出力ファイルを生成し、前記複数の出力ファイルが保有するキーデータそれぞれは、前記複数のデータブロックの組み替えに関する一部の情報を保有し、前記入力ファイルを復元するためのデータとして、前記キーデータの前記出力ファイルにおける位置に関する情報を含む復元キーを出力する、情報処理装置が提供される。
【0007】
このような構成とすることにより、複数の入力ファイルを組み替えて複数の出力ファイルを作成することができ、個々の出力ファイルを個別に管理することが可能となるため、強靭な暗号化を実現することができる。
【0008】
以下、本発明のいくつかの態様に関し種々の実施形態を例示する。以下に示す実施形態は、互いに組み合わせ可能である。また、各特徴が独立に発明を構成する。
【図面の簡単な説明】
【0009】
図1】第1実施形態に係る情報処理装置100の概要の一例を示す図である。
図2】情報処理装置100のハードウェア構成の一例を示すブロック図である。
図3】情報処理装置100の機能構成の一例を示すブロック図である。
図4】情報処理装置100によるファイル分割およびファイル組み替えを説明する図である。
図5】キーデータK1が保有するデータを説明するための図である。
図6】キーデータK2が保有するデータを説明するための図である。
図7】キーデータK3が保有するデータを説明するための図である。
図8】キーデータK4が保有するデータを説明するための図である。
図9】出力ファイルの復元を説明するための図である。
図10】情報処理装置100の処理の流れを説明するフロー図である。
図11】第2実施形態におけるファイル分割およびファイル組み替えを説明する図である。
図12】出力ファイルF1〜F5内のデータと、ブロックBとの関係を示す図である。
図13図13Aは、キーデータK1〜K5内に含まれるブロックBを示す図である。図13Bは、キーデータK1〜K5の相互の包含関係を示す図である。
図14図14Aは、キーデータK1〜K5内に含まれる暗号化用データを示す図である。図14Bは、暗号化用データの記述内容を説明する図である。
図15】第2実施形態における情報処理装置100の処理の流れを説明するフロー図である。
【発明を実施するための形態】
【0010】
<1.第1実施形態>
(1.1.情報処理装置100を用いた処理の概要)
図1を参照し、本発明の第1実施形態に係る情報処理装置100を用いた処理の概要を説明する。図1に示すように、情報処理装置100は、複数の入力ファイルF1,F2,...,Fnを受け付ける。情報処理装置100は、入力ファイルF1,F2,...,Fnが保有するデータの組み替えを行い、複数の出力ファイルG1,G2,...,Gnを出力する。
【0011】
出力されたファイルG1,G2,...,Gnは、それぞれ個別に管理することができる。例えば、任意のサーバーSが備える記憶部に記憶してもよいし、磁気ディスクDに記憶してもよい。また、郵送M、電話T、人Hなどによって、伝達してもよい。
【0012】
このようにして、様々な媒体に保存、または様々な媒体によって流通させた出力ファイルG1,G2,...,Gnを集約し、情報処理装置100によって復元することで、入力ファイルF1,F2,...,Fnを入手することができる。このようにすることで、複数の入力ファイルF1,F2,...,Fnの内容が第3者に知られないように、安全に管理、伝達することが可能となる。以下、各構成を詳細に説明する。
【0013】
(1.2.情報処理装置100のハードウェア構成)
図2を参照し、情報処理装置100のハードウェア構成を説明する。図2は、情報処理装置100のハードウェア構成を示すブロック図である。情報処理装置100は、情報処理装置100全体の動作を司る制御部11、制御部11による各種プログラムの実行時のワークエリア等として用いられる主記憶部12、各種プログラム及び各種データ等が予め記憶された補助記憶部13を備えている。
【0014】
制御部11は、例えば、CPU(Central Processing Unit)、マイクロプロセッサ、DSP(Digital Signal Processor)等であり、情報処理装置100の全体の動作を制御する。
【0015】
主記憶部12は、例えば、RAM(Random Access Memory)やDRAM(Dynamic Random Access Memory)等で構成されており、制御部11による各種プログラムに基づく処理の実行時のワークエリア等として用いられる。
【0016】
補助記憶部13は、ROM(Read Only Memory)等の不揮発性メモリ、またはHDD(Hard Disk Drive)であり、画像等の各種データ及び制御部11の処理に利用されるプログラム等を保存する。
【0017】
補助記憶部13に記憶されるプログラムは、例えば、情報処理装置100の基本的な機能を実現するためのOS(Operating System)、各種ハードウェア制御するためのドライバ、電子メールやウェブブラウジング、その他各種機能を実現するためのプログラム等である。また、補助記憶部13には、音声データ、または動画データ等を再生するためのアプリケーションソフトが予め記憶されていてもよい。
【0018】
さらに、情報処理装置100は、インターネット等の通信回線を介して他の情報処理装置等と接続され、他の情報処理装置等との間で各種データの送受信を行う通信部14を備えている。
【0019】
通信部14は、具体的には例えばNIC(Network Interface Controller)を備え、通信回線に接続する機能を有する。なお、通信部14は、NICに代えて又はNICと共に、無線LAN(Local Area Network)に接続する機能、無線WAN(Wide Area Network)に接続する機能、例えばBluetooth(登録商標)等の近距離の無線通信、及び赤外線通信等を可能とする機能を有してもよい。
【0020】
さらに、情報処理装置100は、キーボード及びマウス等で構成されて各種操作の入力を受け付ける操作入力部15、各種画像を表示する例えば液晶ディスプレイ装置等のモニタ16を備えていてもよい。
【0021】
これら制御部11、主記憶部12、補助記憶部13、通信部14、操作入力部15、モニタ16は、システムバス17を介して相互に電気的に接続されている。従って、制御部11は、主記憶部12、補助記憶部13へのアクセス、操作入力部15に対する操作状態の把握、モニタ16に対する画像の表示、並びに通信部14を介した他の情報処理装置等との各種データの送受信等を行なうことができる。
【0022】
(1.3.制御部11の機能構成)
図3を参照し、制御部11の機能構成を説明する。図3に示すように、制御部11は、データ分割部21と、データ複製部22と、データ組替部23と、データ復元部24を備える。
【0023】
データ分割部21は、複数の入力ファイルを複数のデータブロックに分割する。データ複製部22は、複数のデータブロックの複製を行う。データ組替部23は、複製された複数のデータブロックの組み替えを行い、複数の出力ファイルを生成する。データブロックの組み替えについての詳細は後述する。データ復元部24は、組み替え後の複数の出力ファイルから複数の入力ファイルを復元する。
【0024】
上述した機能は、情報処理装置100に適宜インストールされるソフトウェア(いわゆるアプリを含む)を用いて実現してもよく、ハードウェアとして実現してもよい。ソフトウェアによって実現する場合、制御部11がソフトウェアを構成するプログラムを実行することによって各種機能を実現してもよい。
【0025】
プログラムを実行することで実現される場合、当該プログラムは、情報処理装置100が内蔵する補助記憶部13に格納してもよく、コンピューターが読み取り可能な非一時的な記録媒体に格納してもよい。また、外部の記憶装置に格納されたプログラムを読み出し、いわゆるクラウドコンピューティングの形態で実現してもよい。また、ハードウェアによって実現する場合、ASIC、SOC、FPGA、またはDRP等の種々の回路によって実現してもよい。
【0026】
(1.4.データの分割および組み替え処理)
図4を参照し、データの分割および組み替え処理について説明する。以下に示す例では、入力ファイルとしてファイルF1およびファイルF2を受け付け、出力ファイルとしてファイルG1〜G5を出力するものとしているが、入力ファイルおよび出力ファイルの数は、この例に限定されるものではない。また、図面において、ダブルクォーテーション(")は、それによって囲まれた部分が文字列であることを示すための符号として用いる。
【0027】
図4に示すように、入力ファイルF1は、「pass=」という文字列を保有している。また、入力ファイルF1は、「653」という文字列を保有している。そのため、入力ファイルF1およびF2を共に入手することで、「pass=653」(パスワードは653)という情報を得ることができる。
【0028】
まず、図4に示すように、データ分割部21は、入力ファイルF1を分割して、データブロックF11,F12を生成する。一例として、F11は、「pa」という文字列であり、F12は、「ss=」という文字列である。また、データ分割部21は、入力ファイルF2を分割して、データブロックF21,F22を生成する。F21は、「6」という文字列であり、F22は、「53」という文字列である。このようにデータ分割部21は、複数の入力ファイルを、長さの異なる複数のデータブロックに分割する。データを分割する箇所は入力ファイルの長さに応じて適宜決定すればよい。
【0029】
次に、データ複製部22は、複数のデータブロックF11〜F22の複製を行う。本実施形態では、図4に示すように、データブロックF11〜F22がさらに1組生成されている。ただし、この例に限定されることはなく、2組以上をさらに生成してもよい。このように、データブロックF11〜F22を複製することによりデータの冗長性が確保され、データの組み替え後の復元をより困難にすることが可能となる。
【0030】
次に、データ組替部23は、データブロックF11〜F22の組み替えを行う。当該組み替えにおいて、データ組替部23は、入力ファイルF1,F2におけるデータブロックF11〜F22の順序が入れ替わるように、当該データブロックの組み替えを行う。さらに、データ組替部23は、組み替えに関する情報をキーデータK1〜K4として生成し、組み替えたデータブロックと前記キーデータを組み合わせて、複数の出力ファイルG1〜G5を生成する。
【0031】
図4に示すように、出力ファイルG1〜G4は、キーデータK1〜K4のいずれか1つと、データブロックF11〜F22のいずれかを含む。出力ファイルG5は、復元キーDKである。復元キーDKの詳細は後述する。
【0032】
キーデータK1〜K4は、出力ファイルG1〜G4におけるデータブロックF11〜F22についての情報を保有する。本実施形態では、キーデータK1〜K4は、データブロックF11〜F22についての識別子、レングス、アドレスを保有する。
【0033】
識別子とは、出力ファイルにおけるデータブロック(またはキーデータ)を識別するための情報であって、一例としては、データブロックF11〜F22が保有されている出力ファイル名とデータブロック名(またはキーデータ名)との組み合わせである。たとえば、出力ファイルG2に保有されているデータブロックF22(「53」)の場合、識別子は「G2-F22」となる。なお、出力ファイル名とデータブロック名との組み合わせ以外の態様で識別子を設定してもよい。
【0034】
レングスとは、各データブロックのデータの長さである。たとえば、出力ファイルG2に保有されているデータブロックF22(「53」)の場合、レングスは「2」となる。
【0035】
アドレスとは、保有されている出力ファイルG1〜G4におけるデータブロックF11〜F22の先頭の位置を示す情報である。本実施形態では、各出力ファイルG1〜G4の先頭を「0」とし、後続のデータブロックについては、前方のデータブロックのレングスを加算して算出する。たとえば、出力ファイルG2に保有されているデータブロックF11のアドレスは「0」である。また、データブロックF11(「pa」)のレングスが「2」であるため、出力ファイルG2に保有されているデータブロックF22のアドレスは「2」となる。
【0036】
さらに、上述した識別子、レングス、アドレスは、出力ファイルG1〜G4に保有されるキーデータK1〜K4にも適用される。たとえば、出力ファイルG2に保有されているキーデータK2の識別子は「G2-K2」であり、アドレスは「4」となる。キーデータK1〜K4は、出力ファイルG1〜G4におけるデータブロックF11〜F22についての情報に加えて、出力ファイルG1〜G4におけるキーデータK1〜K4についての情報を保有する。
【0037】
以下、図5図8を参照し、キーデータK1〜K4の設定の一例を説明する。キーデータK1〜K4は、自身の情報と、データブロックS11〜S22およびキーデータK1〜K4をm個組み合わせた情報を保有する。ここで、mは任意の整数であり、出力ファイルG1〜G4の数、およびデータブロックS11〜S22の数によって適宜設定される。
【0038】
図5は、キーデータK1の設定の一例を説明する図である。この例では、キーデータK1はm=7個のデータブロックおよびキーデータの情報を保有している。具体的には、m=1として出力ファイルG4に保有されているデータブロックF12の識別子、アドレス、レングスの情報を保有する。さらに、m=2として出力ファイルG3に保有されているデータブロックF21の識別子、アドレス、レングスの情報を保有する。
【0039】
このように、キーデータK1は、図5に示すm=1からm=7までの7個のデータブロック(またはキーデータ)についての識別子、アドレス、レングスの情報に対して、先頭に自身の識別子(すなわち、「G1-K1」)を合わせたデータとして設定される。なお、各データ間はカンマ(,)で連結される。
【0040】
図6は、キーデータK2の設定の一例を説明する図である。この例では、キーデータK2はm=8個のデータブロックおよびキーデータの情報を保有している。具体的には、m=1として出力ファイルG1に保有されているデータブロックF11の識別子、アドレス、レングスの情報を保有する。さらに、m=2として出力ファイルG1に保有されているデータブロックF21の識別子、アドレス、レングスの情報を保有する。
【0041】
このように、キーデータK2は、図6に示すm=1からm=8までの8個のデータブロック(またはキーデータ)についての識別子、アドレス、レングスの情報に対して、先頭に自身の識別子を合わせたデータとして設定される。
【0042】
図7は、キーデータK3の設定の一例を説明する図である。この例では、キーデータK3はm=3個のキーデータの情報を保有している。具体的には、m=1として出力ファイルG1に保有されているキーデータK1の識別子、アドレス、レングスの情報を保有する。さらに、m=2として出力ファイルG3に保有されているキーデータK4の識別子、アドレス、レングスの情報を保有する。
【0043】
このように、キーデータK3は、図7に示すm=1からm=3までの3個のキーデータについての識別子、アドレス、レングスの情報に対して、先頭に自身の識別子を合わせたデータとして設定される。
【0044】
図8は、キーデータK4の設定の一例を説明する図である。この例では、キーデータK4はm=7個のデータブロックおよびキーデータの情報を保有している。具体的には、m=1として出力ファイルG1に保有されているキーデータK1の識別子、アドレス、レングスの情報を保有する。さらに、m=2として出力ファイルG1に保有されているデータブロックF21の識別子、アドレス、レングスの情報を保有する。
【0045】
このように、キーデータK4は、図8に示すm=1からm=7までの7個のデータブロック(またはキーデータ)についての識別子とアドレスとレングスの情報に対して、先頭に自身の識別子を合わせたデータとして設定される。
【0046】
以上のようにして設定されたキーデータK1〜K4の具体的なデータを示すと以下のようになる。
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」
K1のレングス:83
【0047】
K2:「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」
K2のレングス:96
【0048】
K3:「G3-K3,G1-K1,0,83,G4-K4,2,84,G2-K2,4,96」
K3のレングス:38
【0049】
K4:「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」
K4のレングス:84
【0050】
このように、キーデータK1〜K4は、それぞれ、複数のデータブロックF11〜F22の組み替えに関する一部の情報を保有する。なお、これらのキーデータK1〜K4を保有する出力ファイルG1〜G4の具体的なデータを示すと以下のようになる。
G1:「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」
G1のレングス:86
【0051】
G2:「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」
G2のレングス:100
【0052】
G3:「ss=6G3-K3,G1-K1,0,83,G4-K4,2,84,G2-K2,4,96」
G3のレングス:42
【0053】
G4:「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=」
G4のレングス:89
【0054】
(1.5.出力ファイルから入力ファイルへの復元処理)
図9を参照し、出力ファイルから入力ファイルへの復元処理について説明する。ここで、復元キーDKは、キーデータK1〜K4のうちいずれか1つのアドレスおよびレングスを保有する。図9に示す例では、キーデータK1のアドレスおよびレングス(「0,83」)を用いて復元する場合を説明する。
【0055】
まず、出力ファイルG1に復元キーDK(すなわち、キーデータK1のアドレスおよびレングス(「0,83」))を適用したとする。この場合、出力ファイルG1における先頭から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」を含んでいるため、キーデータK1であることが判明する。
【0056】
そして、キーデータK1を解析することにより、キーデータK2のアドレスおよびレングス(「4,96」)、キーデータK3のアドレスおよびレングス(「4,38」)、キーデータK4のアドレスおよびレングス(「2,84」)、およびデータブロックF12、F21、F22のアドレスおよびレングスを取得することができる。
【0057】
次に、出力ファイルG2にキーデータK4のアドレスおよびレングス(「2,84」)を適用したとする。この場合、出力ファイルG2における3文字目から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」を含んでいるが、当該データは識別子として判別できない。
【0058】
さらに、残りのデータはコンマによって20個に分けられている。本実施形態においては、先頭の識別子以外のデータは「識別子、アドレス、レングス」のセットで組み込まれているため、3の倍数にならなければいけない。よって、出力ファイルG2は、キーデータK4のアドレスおよびレングス(「2,84」)では復元できないと判断する。
【0059】
次に、出力ファイルG3にキーデータK4のアドレスおよびレングス(「2,84」)を適用したとする。この場合、出力ファイルG3のレングスが42であるため、出力ファイルG3は、キーデータK4のアドレスおよびレングス(「2,84」)では復元できないと判断する。
【0060】
次に、出力ファイルG4にキーデータK4のアドレスおよびレングス(「2,84」)を適用したとする。この場合、出力ファイルG4における3文字目から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」を含んでいるため、キーデータK4であることが判明する。
【0061】
さらに、キーデータK4を解析することにより、F11のアドレスおよびレングスを取得することができる。
【0062】
次に、出力ファイルG2にキーデータK3のアドレスおよびレングス(「4,38」)を適用したとする。この場合、出力ファイルG2における5文字目から38文字(すなわち、「G2-K2,G1-F11,83,2,G1-F21,85,1,G2-F11,0」)の部分データを取得することになる。当該部分データは最初のコンマまでにデータ「G2-K2」を含んでいるが、キーデータK3と異なる識別子であるため、矛盾が生じている。
【0063】
さらに、残りのデータはコンマによって8個に分けられており、3の倍数ではない。よって、出力ファイルG2は、キーデータK3のアドレスおよびレングス(「4,38」)では復元できないと判断する。
【0064】
次に、出力ファイルG3にキーデータK3のアドレスおよびレングス(「4,38」)を適用したとする。この場合、出力ファイルG3における5文字目から38文字(すなわち、「G3-K3,G1-K1,0,83,G4-K4,2,84,G2-K2,4,96」)の部分データを取得することになる。当該部分データは最初のコンマまでにデータ「G3-K3」を含んでいるため、キーデータK3であることが判明する。
【0065】
さらに、キーデータK3を解析することにより、キーデータK1、K2、K4のアドレスおよびレングスを再度取得することになる。
【0066】
最後に、出力ファイルG2にキーデータK2のアドレスおよびレングス(「4,96」)を適用する。この場合、出力ファイルG2における5文字目から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」を含んでいるため、キーデータK2であることが判明する。
【0067】
以上により、出力ファイルG1〜G4の復元が完了する。これにより、出力ファイルG1〜G4にそれぞれ含まれているデータブロックS11〜S22のアドレスおよびレングスが判明するため、文字列「pa」、「ss=」、「6」、「53」を取得することができ、これらを合成して「pass=653」という情報を取得することができる。
【0068】
(1.6.他の順序での復元処理の例)
以下、他の順序での復元処理の例を説明する。まず、出力ファイルG2に復元キーDK(すなわち、キーデータK1のアドレスおよびレングス(「0,83」))を適用したとする。この場合、出力ファイルG2における先頭から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」を含んでいるが、当該データは識別子として判別できない。
【0069】
さらに、残りのデータはコンマによって19個に分けられており、3の倍数ではない。以上より、出力ファイルG2は、キーデータK1のアドレスおよびレングス(「2,84」)では復元できないと判断する。
【0070】
次に、出力ファイルG3に復元キーDK(「0,83」)を適用したとする。この場合、出力ファイルG3のレングスが42であるため、出力ファイルG3は、復元キーDK(「0,83」)では復元できないと判断する。
【0071】
出力ファイルG4に復元キーDK(「0,83」)を適用する。この場合、出力ファイルG4における先頭から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」を含んでいるが、当該データは識別子として判別できない。
【0072】
さらに、残りのデータはコンマによって19個に分けられており、3の倍数ではない。以上より、出力ファイルG4は、復元キーDK(「0,83」)では復元できないと判断する。
【0073】
次に、出力ファイルG1に復元キーDK((「0,83」))を適用したとする。これにより、以降において、上記(1.5.)と同様の処理が行われる。
【0074】
(1.7.情報処理装置100の処理の流れ)
図10を参照し、情報処理装置100のデータ組み替え処理の流れを説明する。ステップS110において、情報処理装置100は、複数の入力ファイルを受け付ける。
【0075】
ステップS120において、データ分割部21は、複数の入力ファイルを複数のデータブロックに分割する。ステップS130において、データ複製部22は、複数のデータブロックの複製を行う。
【0076】
ステップS140において、データ組替部23は、複製されたデータブロックについて、データの組み替えを行い、複数の出力ファイルを生成する。ステップS150において、情報処理装置100は、出力ファイルを出力する。
【0077】
(1.8.第1実施形態の効果)
以上のようにして、本実施形態に係る情報処理装置100は、複数の入力ファイルを複数のデータブロックに分割し、複数のデータブロックの組み替えを行い、組み替えに関する情報をキーデータとして生成し、組み替えたデータブロックとキーデータを組み合わせて、複数の出力ファイルを生成する。
【0078】
ここで、複数の出力ファイルそれぞれは、少なくとも1つのキーデータを保有する。また、キーデータそれぞれは、複数のデータブロックの組み替えに関する一部の情報を保有する。
【0079】
このような構成とすることにより、分割データの一部が流出したとしても、入力ファイルを復元することが困難となり、データ復元のリスクを低減することができる。
【0080】
また、複数の出力データは、分割されたデータブロックと、キーデータの情報を含んでいるため、可読性が低い。よって、復元のリスクを低減することが可能となる。
【0081】
また、本実施形態では、データブロックを複製して組み替えをおこなっているため、出力ファイルをすべて入手しなくても、入力ファイルの復元が可能となる。
【0082】
<2.第2実施形態>
以下、図11図15を参照し、本発明の第2実施形態を説明する。第2実施形態では、複数のデータブロックとキーデータを暗号化している点で第1実施形態と異なる。
【0083】
図11に示す例では、入力ファイルF1およびF2を受け付け、出力ファイルS1〜S7を出力する例が示されている。この場合においても、まずは入力ファイルF1およびF2を分割および複製し、データブロック「Fnm(n=1〜3、m=1〜2)」を生成する。この例で示すように、分割後のデータブロックFnm単位で複製を行ってもよい。その後、データの組み換えを行い、出力ファイルS1〜S7を生成する。
【0084】
出力ファイル「Sn(n=1〜7)」は、データブロックFnmと、組み換え情報であるキーデータ「Kn(n=1〜6)」と、復元キー「KnD(n=1〜2)」と、キーデータ復元キー「KnH(n=1〜2)」が含まれる。図12に示すように、Fnm、Kn、KnHというデータの種別に対応する各ブロックの名称をBnmとし、ブロックBnmにおける記述する文字列をbnmとする。したがって、例えば図12におけるブロックB12は、種別がK1H、文字列はb12となる。
【0085】
復元キーK1D、K2Dは、出力ファイルS1〜S5に基づいて、入力ファイルF1、F2を復元するためのデータである。詳細は後述するが、本実施形態では、復元キーK1D,K2Dは、キーデータ復元キーK1H、K2Hの位置(アドレス)データとして生成される。
【0086】
キーデータ復元キーK1H、K2Hは、暗号化されたキーデータK1およびK2を復元するための鍵としてのデータである。以下、出力ファイル「Sn(n=1〜7)」の生成方法を例示する。
【0087】
(2.1.出力ファイルの構成)
出力ファイルSn内のキーデータ「Kn(n=1〜6)」は、例えば以下とすることができる。ここで、()は1つのデータであり、{}はNullを含む繰り返しデータであることを意味する。
【0088】
Kn:「(識別子),(自身が含まれるSnの識別子),{包含するブロックBnmの記述データbnm},{包含する記述データcnm}」
【0089】
(2.1.1.ブロックB)
図12に示すように、出力ファイルS1〜S5のブロック「Bnm(n=1〜5、m=1〜5)」を規定する。具体的には、出力ファイルS1〜S5内のブロックB11〜B55を規定する。
【0090】
(2.1.2.ブロックBの記述データ)
次に、Bnmに記述するデータを、ブロックBの記述データ「bnm(n=1〜5、m=1〜5)」として規定する。bnmは、Snにおける位置(アドレス)と長さのデータとして、例えば以下の形式とする。
【0091】
bnm:「(ブロックBとしての識別子),(キーデータKnまたはデータブロックFnmとしての識別子),(Snにおけるアドレス),(レングス)」
【0092】
(2.1.3.暗号化データcnm)
次に、暗号化データcnmを規定する。暗号化データ「cnm(n=1〜5、m=1〜5)」は、キーデータ復元キーKnHを除くbnmの暗号化に使用するデータである。暗号化には、シーザー暗号、DES暗号、RSA暗号、楕円暗号などの処理時に既知の暗号技術を用いることができる。暗号化データcnmは、以下の形式とすることができる。
【0093】
cnm:「(ブロックBの暗号化データとしての識別子),{(番号),{鍵,}}」
【0094】
ここで、番号とは、図14Bに示すように、暗号方式の種別(以下、暗号化方式ともいう)を指定するために予め定める番号である。たとえば、番号が0のときは暗号化なしとなり、番号が1の時はシーザー暗号で当該ブロックBが暗号化されていることとなる。なお、本実施形態では、同一ブロックBに複数の暗号方式を用いることを許容しているため、番号と鍵の組み合わせで繰り返しデータとなる。
【0095】
また、図14Bに示すように、暗号方式の種別によって、鍵の数は異なる。例えば、RSA暗号の場合、2つの鍵が必要となる。そのため、暗号ブロックCの記述データにおいては、鍵単独で繰り返しデータとなることもあり得る。なお、図14Bの番号、種別、鍵数は一例にすぎず、この例に限定されることはない。
【0096】
(2.1.4.暗号化データKnH)
キーデータ復元キーKnHは、対象のKnの暗号化に使用するデータである。キーデータ復元キー「KnH(n=1〜2)」は、以下の形式とすることができる。
【0097】
KnH:「(該当KnHの残りの文字数),(番号),{鍵,}(Snにおけるアドレス),(レングス)」
【0098】
ここで、(該当KnHの残りの文字数)とは、当該KnHにおける(番号)から(レングス)までの(,(カンマ)も含めた)文字数である。例えば、「9,1,1,2,117」の場合、図14Bに示すように暗号化方式は鍵1のシーザー暗号であり、出力ファイルSnにおけるアドレスは2であり、(番号)から(レングス)までの文字数(この場合だと、「1,1,2,117」の文字数)が9ということとなる。なお、KnHとcnmとは、重複して出力ファイル内に保有させてもよい。
【0099】
(2.2.キーデータKnの生成手順)
(2.2.1.Knに記載する記述データbnmの決定)
図13Aに示すように、キーデータK1〜K6に含めるブロックBの記述データbnmを決定する。図13Aに示す例では、K1には、b22とb52が含まれる。また、K3は、いずれのbnmも含まないこととなる。
【0100】
ここで、図12を参照すると、K1が含むb22は、K2に対応している。そして、K1が含むb52は、K5に対応している。すなわち、K1は、K2とK5の記述データを含むこととなる。同様に、図13Aを参照して、キーデータK4は、記述データb11、b23、b32を含んでいる。図12を参照すると、b11はK1であり、b23はデータブロックF31であり、b32は、K3である。すなわち、K4は、K1とK3の記述データを含むこととなる。
【0101】
このようにして、図13Aに規定されるようにキーデータK1〜K6に含まれるbnmを規定すると、K1〜K6について、図13Bに示す包含関係が成立する。図13Bは、矢印の始点にあるキーデータ(例えばK1)は、矢印の終点にあるキーデータ(例えばK2およびK5)の記述データを保有していることを意味している。なお、図13Aに規定されるキーデータKnとブロックBの包含関係は一例にすぎず、この例に限定されることはない。
【0102】
(2.2.2.Knに包含するする暗号化データcnmの決定)
図14Aに示すように、キーデータKnに包含する暗号化データcnmを決定する。図14Aに示す例では、K1に、c22とc52が含まれる。また、K4は、c11、c23、c24、c32を含んでいる。このように、同一のKnが含む記述データbnmと暗号化データcnmとは必ずしも対応していなくともよい。
【0103】
(2.3.出力ファイルの生成手順)
以下、図15を参照し、出力ファイルの生成手順を説明する。
(2.3.1.F1、F2の分割)
まず、ステップS110において、入力ファイルF1およびF2を受け付ける。ステップS120において、入力ファイルF1〜2の各分割サイズを決定する。平均と分散によるランダムな長さにする方法や、ユーザーによる指定などが想定される。長さを2の冪数に合わせる、合わせない、検証しない、などの条件を設定してもよい。ステップS130において、分割データの複製が行われる。
【0104】
(2.3.2.Bnmの配置)
ステップS140において、分割データの組み換え処理を行う。まず、分割データの組み換え処理では、まず、出力ファイルSnのファイル数とBnmの並びを決定する。並び順は、ランダム順やユーザーによる指定などが想定される。送信条件などによるサイズなどの条件や、重複の条件の設定も想定される。図11および図12に、出力ファイルSnのファイル数とBnmの並びの例を示す。
【0105】
(2.3.3.Knの設定)
図13A図13B図14Aに示すように、Knの包含関係などの条件に合わせてKnを決定する。
【0106】
(2.3.4.KnHの設定)
cnmやKnの包含関係などの条件に合わせてKnHを決定する。一例として、K1Hは暗号化なしのB11を対象として「6,0,0,43」、K2Hは鍵「1」のシーザー暗号のB55を対象として「9,1,1,2,117」とすることができる。
【0107】
(2.3.5.該当Bnmの暗号化)
一例として、以下に示すc24、c31、c42、c51、K2Hに従い、B24、B31、B42、B51、B22」を暗号化する場合を説明する。
【0108】
c24が「C24,1,2,3,55,7」の場合、B24(F22)は「3」なので、鍵「2」のシーザー暗号で「5」となる。「5」は鍵「55」「7」のRSA暗号で「25」となる。
【0109】
c31が「C31,1,1」の場合、B31(F11)は「pa」なので、鍵「1」のシーザー暗号で「qb」となる。
【0110】
c42が「C42,1,3」の場合、B42(F21)は「65」なので、鍵「3」のシーザー暗号で「98」となる。
【0111】
c51が「C51,3,55,7」の場合、B51(F32)は「3」なので、鍵「55」「7」のRSA暗号で「37」となる。
【0112】
K2Hが「9,1,1,2,117」の場合、B22(K2)は「K2,S2,(略),C53,0」なので、鍵「1」のシーザー暗号で「L3-T3-(略)-D64-1」となる。
【0113】
(2.3.6.ブロックBの結合)
上記(2.3.2)〜(2.3.5)の処理で得られた文字列を結合し、出力ファイルS1〜S5を生成する。
S1:
「K1,S1,B22,K2,2,117,B52,K5,2,115,C22,1,1,C52,06,0,0,45ss=」
【0114】
S2:
「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」
【0115】
S3:
「paK3,S33」
【0116】
S4:
「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」
【0117】
S5:
「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」
【0118】
(2.3.7.KnDの生成)
B12・B55のアドレスより復元キーデータK1D・K2Dを作成する。人が記憶や入力しやすくするために、また、文字数を減らすため、B12のアドレス「45」を、36進数に変換すると「19」となる。B55のアドレス「215」は、「5Z」となる。なお、36進数は一例にすぎず、他のN進数(Nは自然数)を用いてもよい。
【0119】
K1D:
「19」
【0120】
K2D:
「5Z」
【0121】
(2.3.8.整合性チェック)
ステップS145において、「S1〜S5」「K1D,K2D」の整合性チェックを行う。すなわち、出力ファイルS1〜S7にもとづいて、入力ファイルF1およびF2が復元可能であること、復元したファイルと入力ファイルの同一性、冗長性のある場合は同じ文字列の存在等をチェックする。
(2.3.9.ファイル出力)
ステップS150において、生成された出力ファイルS1〜S7を、記憶装置や印刷機などに出力する。
【0122】
(2.4.入力ファイルの復号方法)
(2.4.1.パターン1(すべての出力ファイルS1〜S7を入手した場合))
入手した直後は対応するファイル名は不明のため、入手したファイルをT1〜T5、K1T、K2Tとする。
【0123】
T1:
「paK3,S33」
【0124】
T2:「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」
【0125】
T3:
「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」
【0126】
T4:
「K1,S1,B22,K2,2,117,B52,K5,2,115,C22,1,1,C52,06,0,0,45ss=」
【0127】
T5:「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」
【0128】
K1T:
「19」
【0129】
K2T:
「5Z」
【0130】
(2.4.1.1.K1Tからアドレスを算出)
K1Tの「19」を10進数に変換して「45」を得る。なお、この時点では対応しているKnが不明なので「K?D」と表記する。以下、「K?H」「K?」も同様に対応しているKnHおよびKnが不明であることを意味する。
【0131】
(2.4.1.2.K?Hの検索)
まず、K1Tに対応するK?Hを検索する。T1の長さは8であり45よりも短いため、T1はK?Hの候補ではないと判明する。次に、T2のアドレス45からの文字列は「4-G42-(略)」である。1文字目が数値でないので、T1はK?Hの候補ではないと判明する。
【0132】
次に、T3のアドレス45からの文字列は「,5,C11,(略)」である。1文字目が数値でないので、T3はK?Hの候補ではないと判明する。次に、T4のアドレス45からの文字列は「6,0,0,45ss=」である。残りの文字列が6文字とすると、「0,0,45」となる。ここで、暗号化方式が0(暗号化なし)とすると、アドレスが「0」、長さが「45」となるので、T4はK?H候補となることが判明する。
【0133】
次に、T5のアドレス45からの文字列は「,2,B42,(略)」である。1文字目が数値でないので、T5はK?H候補とならない。以上から、T4の「6,0,0,45」がK?Hとなり、暗号化方式「0」、アドレス「0」、長さ「45」であることが判明する。
【0134】
(2.4.1.3.K?の検索)
次に、判明したK?Hが保持しているアドレス「0」、長さ「45」というデータを用いて、対応するK?を検索する。まず、T1のアドレス0からの長さは8なので、T1はK?の候補ではないと判明する。次に、T2のアドレス0から長さ45までの文字列は「paL3-T1-C43-L4-3-6-C44-G33-8-2-C53-G32-4-3-C6」である。1文字目がKではないので、T2はK?の候補ではないと判明する。
【0135】
次に、T3のアドレス0から長さ45までの文字列は「ss=98K4,S4,B11,K1,0,45,B23,F31,119,1,B32,K3,2」である。1文字目がKではないので、T3はK?の候補ではないと判明する。次に、T4のアドレス0から長さ45までの文字列は「K1,S1,B22,K2,2,117,B52,K5,2,115,C22,1,1,C52,0」である。1文字目がKなので、T4はK?の候補となる。
【0136】
次に、T5のアドレス0から長さ45までの文字列は「37K5,S5,B13,F12,53,3,B22,K2,2,117,B24,F22,120」である。1文字目がKではないので、T5はK?の候補ではないと判明する。以上より、T4=S1であることが判明し、「B22,K2,2,117」「B52,K5,2,115」「C22,1,1」「C52,0」というデータを得ることができる。すなわち、識別子は「K1」であり、自身が含まれるSの識別子は「S1」であり、「B22は"K2"・アドレス「2」・長さ「117」・暗号化方式「1」・鍵「1」」であり、「B52は"K5"・アドレス「2」・長さ「115」・暗号化方式「なし」」であることが判明する。
【0137】
(2.4.1.4.K2の検索)
上記処理で判明した「B22,K2,2,117」を用いてK2を検索する。すでに得られた「C22,1,1」というデータから、B22の暗号化方式は、鍵「1」のシーザー暗号と判る。
【0138】
T1のアドレス2からの長さは6であり、117より短いのでK2の候補ではないと判明する。次に、T2のアドレス2から長さ117までの文字列は、「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」となる。1文字目がKなので、K2の候補となる。
【0139】
次に、T3のアドレス2からの長さは78であり、117より短いのでK2の候補ではないことが判明する。次に、T5のアドレス2から長さ117の文字列は、「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」となる。1文字目がKでないので、K2の候補ではないと判明する。
【0140】
以上より、T2=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」というデータを得ることができる。すなわち、識別子は「K2」であり、自身が含まれるSの識別子は「S2」であり、「B32は"K3"・アドレス「2」・長さ「5」」等が判明する。
【0141】
(2.4.1.5.K5の検索)
上記処理で判明した「B52,K5,2,115」を用いてK5を検索する。すでに得られた「C52,0」というデータから、B52の暗号化方式は「0」とわかる。
【0142】
まず、T1のアドレス2からの長さは6であり、115より短いのでT1はK5の候補ではないと判明する。次に、T3のアドレス2からの長さは78であり、115より短いのでT1はK5の候補ではないと判明する。
【0143】
次に、T5のアドレス2から長さ115の文字列は、「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」となる。1文字目がKなので、T5はK5の候補となる。以上より、T5=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」というデータを得ることができる。すなわち、識別子は「K5」であり、自身が含まれるSの識別子は「S5」であり、「B13は"F12"・アドレス「53」・長さ「3」」、等が判明する。
【0144】
(2.4.1.6.K3の検索)
上記処理で判明した「B32,K3,2,5」を用いてK3を検索する。すでに得られた「C32,0」というデータから、B32の暗号化方式は「0」とわかる。
【0145】
まず、T1のアドレス2から長さ5は「K3,S3」となる。1文字目がKなので、T1はK3の候補となる。次に、T3のアドレス2から長さ5は「=98K4」となる。1文字目がKでないので、T1はK3の候補とならないと判明する。以上より、T1=S3であることが判明する。識別子「K3」、自身が含まれるSの識別子「S3」となる。
【0146】
(2.4.1.7.K4の検索)
上記処理で判明した「B43,K4,5,75」「C43,0」というデータから、B43の暗号化方式は「0」とわかる。T3のアドレス5から長さ75は、「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」となる。1文字目がKなので、T3はK4の候補となる。
【0147】
以上より、T3=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」というデータを得ることができる。すなわち、識別子「K4」、自身が含まれるSの識別子「S4」、「B11は"K1"・アドレス「0」・長さ「45」」等が判明する。以上により、S1=T4、S2=T2、S3=T1、S4=T3、S5=T5であることが判明する。
【0148】
(2.4.1.8.K6の検索)
上記処理により得られた「B54,K6,118,97」よりK6を検索する。「C54,0」より、B54の暗号化方式は「0」とわかる。
【0149】
まず、S1〜S4は長さが118より短いので、これらはK6の候補とならないことが判明する。次に、S5のアドレス118から長さ97は、「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」となる。1文字目がKなので、S5はK6の候補となる。以上より、「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」等が判明する。
【0150】
(2.4.1.9.F1およびF2の復元)
以上により求まった記述データについてのデータである「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"」というように入力データを復元することができる。
【0151】
(2.4.2.パターン2(出力ファイルS1〜S5と、K2Tを入手した場合))
次に、出力ファイルS1〜S5とK2Tのみを入手して復元する例を説明する。
【0152】
(2.4.2.1.K2Tからアドレスを算出)
まず取得したK2Tである「5Z」を10進数に変換して「215」を算出する。
【0153】
(2.4.2.2.K?Hの検索)
(2.4.1)と同様の方法で、T5の「9,1,1,2,117」がK?Hの候補となる。暗号化方式「1」、鍵「1」、アドレス「2」、長さ「117」が判明する。
【0154】
(2.4.2.3.K?の検索)
(2.4.1)と同様の方法で、識別子「K3」が判明し、T2=S2となる。以下同様に、S1=T4、S3=T1、S4=T3、S5=T5がわかる。このように、K2Tのみを入手した場合であっても、出力ファイルから入力ファイルを復元することが可能であることがわかる。
【0155】
(2.4.3.パターン3(出力ファイルS1〜S7がそろっていない場合))
次に、出力ファイルS1〜S7を全て入手できなかった場合について説明する。この例では、以下に示すT1〜T4およびK1Tを入手したものとして説明する。
【0156】
T1:「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」
【0157】
T2:「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」
【0158】
T3:
「paK3,S33」
【0159】
T4:
「K1,S1,B22,K2,2,117,B52,K5,2,115,C22,1,1,C52,06,0,0,45ss=」
【0160】
K1T:
「19」
【0161】
(2.4.3.1.Kの検索)
(2.4.1)と同様の方法を行った場合に、S1=T4、S2=T1、S3=T3、S5=T2が判明するが、S4=T4が不足していることが判明する。
【0162】
(2.4.3.2.Fの復元)
「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)」が判明するため、F1とF3は復元が可能であるが、F21がないことによりF2は復元できない。このように出力ファイルの一部のみを取得した場合には、入力ファイルを復元できない場合があり得る。
【0163】
(2.4.4.第2実施形態の効果)
以上のようにして、第2実施形態では、既存の暗号化をより強靭にできる。また、冗長なデータでも、ブロックの長さを変えることで、同一の文字列ができにくい。また、復元キーKnDを短くすることにより人が記憶や紙でのメモを可能とする。
【0164】
さらに、KnとKnHのアドレスと長さ、複数の暗号化により頻度分析に対抗できるため、鍵や索引の位置と長さを任意に変更できる。また、Knが相互に参照可能であるため、出力ファイルSnがそろわなくても復元できる可能性がある。さらに、Knの参照を制御することで、アクセス制限ができる。
<3.その他の実施形態>
【0165】
以上、本願発明における実施形態について説明したが、本開示の適用は上述の内容に限定されるものではない。
【0166】
例えば、上記実施形態においては、データ複製部22は、分割されたデータブロックの複製を行っているが、入力ファイルが分割される前に複製を行っても良い。
【0167】
また、データ組替部23は、データブロックの組み替えにあたり、入力データが備える脆弱な部分(たとえば、ファイル形式を示す拡張子の部分)を一つの出力データに集約することにより、復元のリスクをより低減するようにしてもよい。
【0168】
また、情報処理装置100は、出力ファイルに対して、既存の暗号処理を施してもよい。このようにすることにより、入力ファイルのデータ分割および組み替えを行った後に暗号化をすることになるため、データの復元のための情報も暗号化され、復元のリスクを低減することができる。
【0169】
出力ファイルに対して暗号処理を施す場合は、複数の出力ファイル全てに同一の暗号処理をしてもよいし、複数の出力ファイルのそれぞれに対して、異なる既存の暗号処理を施してもよい。同一の暗号処理をする場合には、データブロックの長さ(レングス)が異なるように、入力ファイルを分割するのが好ましい。このようにすることで、RSA暗号のようにビットの並びを組み替える暗号処理の場合に、データブロックの長さが同じことにより、同一の暗号文になってしまうことを防ぐことができる。
【0170】
また、データ複製部22は、データブロックの複製にあたり、データブロックのハッシュ値を生成し、当該ハッシュ値を含むデータブロックを生成してもよい。または、入力ファイルのファイル形式に関する情報をデータブロックに含ませてもよい。
【0171】
また、上記実施形態では、キーデータK1〜K4は、キーデータ自身およびデータブロックについての識別子、レングス、アドレスを保有していたが、この例に限定されることはない。たとえば、キーデータ自身またはデータブロックの識別子を保有していなくともよい。また、データブロックが固定長の場合には、レングスを保有していなくてもよい。
【0172】
また、復元に使用する処理プログラムを出力ファイル内に包含してもよい。また、複数の暗号化方式を組合可能なコンテナフォーマットの概念とアドレスを使用してもよい。
【0173】
さらに、本発明は、情報処理装置100を機能させるコンピュータープログラムとして実現することもできる。この場合、情報処理装置100は、スマートフォンやタブレット端末などの携帯端末に当該コンピュータープログラムをインストールすることにより実現させてもよい。
【0174】
さらに、本発明は、上述のプログラムを格納する、コンピューター読み取り可能な非一時的な記録媒体として実現することもできる。
【0175】
本発明に係る種々の実施形態を説明したが、これらは、例として提示したものであり、発明の範囲を限定することは意図していない。当該新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。当該実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0176】
11 :制御部
12 :主記憶部
13 :補助記憶部
14 :通信部
15 :操作入力部
16 :モニタ
17 :システムバス
20 :サーバー
21 :データ分割部
22 :データ複製部
23 :データ組替部
24 :データ復元部
100 :情報処理装置
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15