(58)【調査した分野】(Int.Cl.,DB名)
【背景技術】
【0002】
機密情報の内容を秘匿する手段として、暗号化が有効である。暗号化により第三者に機密情報を通信途中で盗み見られたり、保管してある機密情報を読まれないようにすることができる。
【0003】
機密情報とは、機密に管理されている情報であり、データ形式としては、文字コードにより表現されるテキスト形式、ロードモジュール、画像データ、テキスト以外の文書などのバイナリ形式すべてを含む。
【0004】
暗号方式としては、共通鍵を用いる共通鍵方式、公開鍵を用いる公開鍵方式が一般的に知られている。これらの鍵(共通鍵、公開鍵)は、暗号鍵と呼ばれている。何れの暗号方式も暗号化対象となる機密情報のデータ長が長くなるほど、暗号化処理により多くの時間を要することとなる。
【0005】
このような課題にたいしては、例えば、以下の特許文献1〜3に開示された技術が知られている。
いずれの公知文献も、一連のデータの中より指定された箇所についてのみ暗号化している。これにより、暗号化処理に要する時間をできるだけ短くしている。
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、上述の特許文献1〜3の従来技術は、一連のデータの中から暗号化すべきデータを選定して部分的に暗号化しているにすぎないため、暗号化すべき対象となるデータが長くなれば、暗号化処理に要する時間は、その装置として求められる処理時間をオーバーしてしまうことになる。
【0008】
たとえば、
図7(A)に示すAデータでは、重要度が高いデータA3を暗号化することにより、Aデータ全体を暗号化する場合と比べて、データサイズとして70%縮小できるが、
図7(B)に示すBデータの場合、重要度が高いデータB3を暗号化してもデータサイズは50%も縮小できないため、効果がかなり減少する。
【0009】
特に、高いレスポンスが要求される制御機器における制御パラメータの情報を暗号化したい場合や組込機器のようにハードウェア資源に制限があり、十分なメモリ容量、高いCPU性能が利用できない環境下でプログラムを暗号化したい場合などは顕著である。
【0010】
本発明は、かかる点に鑑みてなされたものであり、その目的とするところは、暗号化の対象となる機密情報を短時間で暗号化することを目的としている。
【課題を解決するための手段】
【0012】
上記課題を解決するために本発明は、機密情報を、暗号化したファイルに変換する情報処理装置であって、機密情報を、複数のレコードからなる第1のファイルに変換するファイル生成部と、前記第1のファイルを、レコード単位に、順序を表す順序情報と機密情報とに対応させて、第2のファイルに変換する順序情報付加処理部と、 前記第2のファイルを、レコード単位に、シャッフルさせて、第3のファイルに変換する第1の並び替え処理部と、前記第3のファイルの順序情報を、暗号鍵を用いて暗号化し、第4のファイルに変換する順序情報暗号化処理部と、を備え、
前記第1の並び替え処理部は、前記第3のファイルと前記第2のファイルの順序情報をレコードごとに比較し、レコードの不一致度を求め、該不一致度が閾値より低い場合、再度、レコード単位に、ランダムに並び替えさせることを特徴とする。
【0014】
また、本発明の情報処理装置は、暗号化された前記第4のファイルの順序情報を、暗号鍵を用いて復号し、第3のファイルに変換する順序情報復号処理部と、前記第3のファイルの順序情報に基づき、レコード単位に、順序を並び替え、第2のファイルに変換する並び替え処理部と、前記第2のファイルから機密情報を取り出す機密情報取り出し部と、を備えたことを特徴とする。
【0015】
また、本発明の情報処理装置による暗号化方法は、前記情報処理装置の記憶部に記憶されている機密情報を、複数のレコードからなる第1のファイルに変換する過程と、前記第1のファイルを、レコード単位に、順序を表す順序情報と機密情報を対応させた第2のファイルに変換する過程と、前記第2のファイルを、レコード単位に、ランダムに並び替えさせた第3のファイルに変換する過程と、前記第3のファイルの順序情報を、暗号鍵を用いて暗号化した第4のファイルに変換する過程を含
み、前記ランダムに並び替えさせた第3のファイルに変換する過程は、前記第3のファイルと前記第2のファイルの順序情報をレコードごとに比較し、レコードの不一致度を求め、該不一致度が閾値より低い場合、再度、レコード単位に、ランダムに並び替えさせることを特徴とする。
【発明の効果】
【0016】
本発明によれば、機密情報のデータの並びを固定長のブロック単位でランダムに並び替え、機密情報に対応する順序情報に対して暗号鍵を用いて暗号化処理を行うことで、機密情報全体に対して暗号鍵を用いて暗号化処理するよりも遥かに短い時間で機密情報を暗号化することができる。
【発明を実施するための形態】
【0018】
以下、本発明の実施の形態について、詳細に説明する。
<情報処理装置の構成概要>
図1は、本発明の実施形態に係る情報処理装置の構成概要を示す図である。情報処理装置1は、暗号化処理部10と復号処理部20で構成され、通信により情報の送受信を行う。
【0019】
暗号化処理部10は、更に、機密情報受け取り部11、ファイル生成部12、順序情報付加処理部13、第1の並び替え処理部14、順序情報暗号化処理部15で構成されている。暗号化処理部10の主な機能は、受け取った機密情報をランダムに並び替え、暗号化したファイルに変換し、その暗号化したファイルを復号処理部20に渡すことである。
【0020】
復号処理部20は、更に、暗号化ファイル受け取り部21、順序情報復号処理部22、第2の並び替え処理部23、機密情報取り出し部24で構成されている。復号処理部20の主な機能は、暗号化処理部10から受け取った暗号化したファイルを復号し、順序情報に基づき並び替え、機密情報を取り出し、その機密情報を出力することである。
【0021】
情報処理装置1は、ハードウェア資源として、例えば、CPU(中央処理装置)、ROM(リードオンリメモリ)、RAM(ランダムアクセスメモリ)、入出力装置、ドライブ装置、各種インターフェースなど、コンピュータとしての周知の構成を有している(図示せず)。入力装置は、キーボード、マウス、タッチパネル等のインターフェースを用いて実現され、出力装置は、液晶または有機EL等からなる表示パネル等を用いて実現され、ドライブ装置は、CD−ROM、DVD、USBメモリ等の可搬型の記憶媒体からプログラムやデータを読み書き可能であり、これらの構成要素は、バスやシリアル回線等を介して接続されている。
【0022】
また、情報処理装置1は、ネットワークを介して他のコンピュータと通信することもできる。このとき、ネットワークは、インターネット、LAN(ローカルエリアネットワーク)、携帯端末の電波網等である。また、入出力装置は、ネットワーク経由で接続された情報処理装置1の端末であっても良い。
【0023】
暗号化処理部10及び復号処理部20の実体は、プログラムであり、構成する各処理部(11〜15及び21〜24)は、記憶部であるROM等に記憶され、CPUが、ROM等に記憶されたプログラムを実行することで上述の機能が実現される。記憶部であるRAMには、上述の各処理部(11〜15及び21〜24)で使われる入出力データ(機密情報、暗号化ファイル)、処理途中で利用するワークデータなどが記憶されている。
【0024】
また、各処理部(11〜15及び21〜24)は、夫々、または組み合わせた単一の半導体チップ上に形成されていても良い。例えば、第1の並び替え処理部14は、データの並び替えを行う回路を構築しても良い。
【0025】
暗号化処理部10及び復号処理部20の実体は、それぞれ異なるコンピュータ内にあっても良い。このときのハードウェア資源としては、上述した情報処理装置1と基本的に同じである。また、暗号化処理部10は、ネットワークを介して、または記憶媒体を介して、暗号化したファイルを復号処理部20に送る。
<暗号化処理手順>
図2は、本発明の実施の形態に係る機密情報、順序情報のデータ例と対応付けて暗号化処理手順を示した図である。
図3は、本発明の実施の形態に係る暗号化処理の詳細を示したフローチャートである。以降の暗号化処理手順の説明は、
図2、
図3及び
図1を使って説明する。
【0026】
機密情報受け取り部11は、情報処理装置1の外部より平文である機密情報30を受け取る(S11)。受け取り方として、入力装置から機密情報を入力して情報を受け取っても良い。また、機密情報が保存された可搬型の記憶媒体から情報を受け取っても良い。また、外部装置からネットワークを介して情報を受け取っても良い。
【0027】
次に、ファイル生成部12は、機密情報受け取り部11で受け取った機密情報30をレコード単位のファイルに変換し、第1のファイル31を生成する(S12)。
また、ファイル生成部12は、レコード単位のファイルに変換するとき、1レコードのデータ長は、レコード内のデータから機密情報が解読できないようなデータ長にする。
【0028】
図6の例では、(A)に示す機密情報であるソースプログラムを、(B)に示すレコード単位のファイルに変換した例である。
図6(A)のソースプログラムは、1レコード当たり4バイトのデータに分割している。これにより1レコード内のデータから関連する他のレコード内データを結びつけ、ソースプログラム全体を解読することは、難しくなっている。
【0029】
図6では、ソースプログラム(テキスト形式)の例で示したが、ロードモジュール(バイナリ形式)であっても同様である。
図2の例では、1番目のレコードにデータ1が対応し、2番目のレコードにデータ2が対応し、・・・N番目のレコードにデータNが対応している。
【0030】
ここで、ファイル生成とは、例えば、一般ファイルの機密情報をデータファイルとして扱い易い管理とするため、RDB(リレーショナルデータベース)またはプロセスファイルで用いられる行(レコード)の概念でデータファイルを定義することを意味する。また、ファイル生成部12は、データファイルの管理機能を利用しなくとも、ファイル生成部12自身で固定長のブロックごとにデータを管理しても良い。
【0031】
次に、順序情報付加処理部13は、第1のファイルに順序情報をレコード単位に付加し、第2のファイル32に変換する(S13)。
図2の例では、順序情報としてアドレスを用いている。1番目のレコードの先頭に順序情報として16進で’8000’を付加している。以降昇順に順序情報が付加されている。
【0032】
アドレスは、第2のファイルが格納されているRAM(ランダムアクセスメモリ)上の各レコードに対応する先頭アドレスでも良い。
また、1番目のレコードに対応するアドレスを予め決めておき、以降のレコードに対応するアドレスは、一定の間隔で昇順または降順させても良い。
【0033】
また、機密情報の実体が、ロードモジュールの場合、該当のロードモジュールがCPUにより実行されるときのメモリ上のアドレスを順序情報としても良い。
また、順序情報は、アドレスでなくとも、単なる昇降順を表す数字(1,2、3・・・など)や文字(A、B、C・・・)であっても良い。
【0034】
また、レコードにおける順序情報を付加する位置は、機密情報の前後どちらにあっても良い。また、レコードの先頭からの相対位置を決めておき、順序情報を付加しても良い。
次に、第1の並び替え処理部14は、第2のファイル32をレコード単位にランダムに並び替え、第3のファイル33に変換する(S14)。Nレコードの中からランダムに1レコードを選び、残りのレコードから1レコードを選び、これを繰り返すことでレコード単位にランダムに並び替えることができる。しかし、並び替えていないレコードも出てくる可能性があり、全体のランダム性が低い場合、セキュリティの信頼度が低くなる可能性がある。
【0035】
そこで、S14後、レコード単位に第3のファイル33と第2のファイル32を比較し(S15)、「データが異なるレコード数」/「ファイル全体のレコード数」=「不一致度」を求め、「不一致度」と「閾値」を比較し、不一致度が閾値よりも低い場合(S15 NO)、再び、S14の前に戻って処理する。
【0036】
図6の機密情報がソースプログラムの例では、閾値を「0.9」以上に設定すれば、対象レコードの前後につながるレコードは内容から結び付けられず、結果としてソースプログラムのロジックが解読されることは、難しくなる。
【0037】
また、ファイル33と第2のファイル32のレコード単位の比較は、レコードの全データ一致でなくとも、機密情報の一部または順序情報など、レコードの一部データの比較でも良い。
【0038】
不一致度が閾値以上の場合(S15 YES)、順序情報暗号化処理部15は、第3のファイル33の順序情報を共通鍵方式で暗号化し、第4のファイル40に変換する(S16)。共通鍵方式の暗号化アルゴリズムとしては、代表的なAES−256bit暗号アルゴリズムを利用すると良い。
【0039】
共通鍵は、暗号化処理部10と復号処理部20それぞれで、2つの同じ共通鍵を別なセキュアな記憶領域で管理している。公開鍵方式でも同様の処理となるが、一般的に、公開鍵方式は、共通鍵方式よりも暗号化、復号に時間がかかると言われている。
【0040】
次に、順序情報暗号化処理部15は、暗号化した第4のファイルを復号処理部20に送る(S17)。情報処理装置1内では、バスやシリアル回線等を介して第4のファイル40を送ることが考えられる。また、暗号化処理部10と復号処理部20が、別なコンピュータにある場合は、ネットワークを介して、または記憶媒体を介して、暗号化した第4のファイル40を送る。
【0041】
先に述べた暗号化処理部の処理は、第1の並び替え処理部14と順序情報暗号化処理部15の処理順を入れ替えても良い。処理を入れ替えた場合であっても、結果として第4のファイル内容は同じである。
<第1の並び替え処理部の補足説明>
レコード単位にランダムに並び替える方法として、C言語やJava(登録商標)などが標準で提供しているrand関数(乱数を生成させる関数)を利用する方法がある。
【0042】
1レコードごとにレコード数だけrand関数を実行し、実行結果のレコード位置に並び替えることで、ファイルをレコード単位にランダムに並び替えることができる。
しかし、単純に、乱数発生数値の範囲を指定してrand関数を繰り返し実行すると、現在のレコード位置と同じ位置の実行結果となる可能性もある。
【0043】
そこで、1レコードごとに現在のレコード位置を乱数発生数値の範囲から除外してrand関数を繰り返し実行することにより、現在のレコード位置と異なる位置の実行結果とすることもできる。この方式を採用する場合、S15の処理は不要となる。
<復号処理手順>
図4は、本発明の実施の形態に係る機密情報、順序情報のデータ例と対応付けて復号処理手順を示した図である。
図5は、本発明の実施の形態に係る復号処理の詳細を示したフローチャートである。以降の復号処理手順の説明は、
図4、
図5及び
図1を使って説明する。
【0044】
暗号化ファイル受け取り部21は、暗号化処理部10の順序情報暗号化処理部15より暗号化した第4のファイル40を受け取る(S21)。
次に、順序情報復号処理部22は、暗号化ファイル受け取り部21が受け取った第4のファイル40の順序情報を共通鍵方式で復号し、第3のファイル33を生成する(S22)。
【0045】
次に、第2の並び替え処理部23は、第3のファイルの順序情報を基にしてレコード単位で順序を並び替え、第2のファイル32を生成する(S23)。
次に、機密情報取り出し部24は、第2のファイル32から機密情報30を取り出す(S24)。
【0046】
次に、機密情報取り出し部24は、取り出した平文の機密情報30を出力する(S25)。出力としては、出力装置への表示、記憶媒体への書き込み、機密情報を利用するアプリケーション処理や他のコンピュータへの送信等がある。
<実施例の効果>
上述した本実施例によれば、本発明の情報処理装置の適用により、機密情報全体に対して暗号鍵を用いて暗号化処理するよりも遥かに短い時間で機密情報を暗号化することができる。
【0047】
もちろん、ファイルのレコード数が少ない場合、組み合わせ数も少なくなり、暗号化強度が弱くなる。
例えば、AES−256bit暗号化方式の強度(暗号鍵が取りえるパターン数)は2の256乗であり、約10の77乗通りであるが、レコードの数が58行(N=58)である場合、組み合わせ数は、約10の78乗通りとなる。
【0048】
つまり、レコードの数が58行以上であれば、暗号強度は十分である。また、レコードの数が多ければ多いほど、行方向の順序の組合せ数が多くなる。レコードの順序情報のみを暗号化処理するため、すべてのデータを暗号化するより全体の処理時間が短縮できる。
【0049】
さらに、レコードの順序情報のサイズはレコードのタイプにより、多少異なるが、機密情報の重要性に係らず、暗号鍵を用いて暗号化する部分のサイズを固定化できる。
また、保護する必要があるデータ全部を対象に暗号鍵を用いて暗号化する必要がなくなる。
【0050】
従って、暗号化に時間がかかる暗号鍵を使用した暗号方式の対象となるデータ量を減らすと、処理時間が短縮でき、より早く別の処理をすることが可能となる。
また、順序情報のみについて暗号鍵を用いて暗号化するため、機密情報について暗号鍵を用いて暗号化、復号処理しなくて済み、データ変換中の誤りを起こす可能性が低くなる。順序情報の復号処理中、誤りを起こしても(復号したアドレス値が領域外、重複など)、早期検知は可能である。
【0051】
さらに、毎回、暗号鍵を用いて暗号化処理する前にデータ順序をランダムに並び替えるので、暗号鍵を変更せずに、ランダムな暗号文が出力できる。