(57)【要約】【課題】ストリーム暗号のアルゴリズムを変更する事無く、同一の初期ベクトルが入力されたとしても安全な暗号化及び復号アルゴリズムを実現する暗号化装置及び復号装置並びに暗号化方法及び復号方法を提供すること。【解決手段】暗号化装置１０は、乱数を発生させ、発生させた乱数と特定の関数とを用いて平文を暗号化し、暗号化した中間平文を作成し、初期鍵及び初期ベクトルを用いてストリーム暗号アルゴリズムを初期化し、中間平文に対して、ストリーム暗号化を行う。復号装置５０は、初期鍵及び初期ベクトルを用いてストリーム暗号アルゴリズムを初期化し、暗号化装置１０によって暗号化された暗号文を復号した中間平文に対して、平文の暗号化に用いられた特定の関数の逆関数を作用させて中間平文を乱数と平文とに分けて、平文を出力する。【選択図】図１
2016004170.tif 000002
【特許請求の範囲】
【請求項１】
ストリーム暗号アルゴリズムを用いて平文を暗号化する暗号化装置であって、
乱数を発生する乱数発生手段と、
前記乱数発生手段によって発生された乱数と特定の関数とを用いて前記平文を暗号化し、暗号化した中間平文を作成する中間平文作成手段と、
初期鍵及び初期ベクトルを用いて前記ストリーム暗号アルゴリズムを初期化し、前記中間平文作成手段によって作成された前記中間平文に対して、ストリーム暗号化を行うストリーム暗号化手段と、
を備える暗号化装置。
【請求項２】
前記特定の関数は、第１ハッシュ関数と第２ハッシュ関数とを含み、
前記中間平文作成手段は、
前記第１ハッシュ関数を用いて前記乱数から第１ハッシュ値を算出する暗号化第１手段と、
前記暗号化第１手段によって算出された前記第１ハッシュ値と、前記平文との排他的論理和を算出し、第１中間平文を作成する第１中間平文作成手段と、
前記第２ハッシュ関数を用いて前記第１中間平文から第２ハッシュ値を算出する暗号化第２手段と、
前記暗号化第２手段によって算出された前記第２ハッシュ値と、前記乱数との排他的論理和を算出し、第２中間平文を作成する第２中間平文作成手段と、
前記第１中間平文作成手段によって作成された前記第１中間平文と、前記第２中間平文作成手段によって作成された前記第２中間平文とを連結した前記中間平文を作成する連結手段と、をさらに備える請求項１に記載された暗号化装置。
【請求項３】
請求項１に記載された暗号化装置によって暗号化された暗号文を復号する復号装置であって、
前記初期鍵及び前記初期ベクトルを用いて前記ストリーム暗号アルゴリズムを初期化し、前記暗号化装置によって暗号化された前記暗号文を復号する復号手段と、
前記復号手段によって復号された前記中間平文に対して、前記中間平文作成手段によって用いられた前記特定の関数の逆関数を作用させ、前記中間平文を前記乱数と前記平文とに分けて、前記平文を出力する平文復号手段と、
を備える復号装置。
【請求項４】
請求項２に記載された暗号化装置によって暗号化された暗号文を復号する復号装置であって、
前記平文復号手段は、
前記中間平文を、前記第１中間平文と前記第２中間平文とに分離させる分離手段と、
前記分離手段によって分離された前記第１中間平文から、前記第２ハッシュ関数を用いて前記第２ハッシュ値を算出する復号第２手段と、
前記復号第２手段によって算出された前記第２ハッシュ値と、前記分離手段によって分離された前記第２中間平文との排他的論理和を算出し、前記中間平文作成手段によって用いられた前記乱数を抽出する乱数抽出手段と、
前記乱数抽出手段によって抽出された前記乱数から、前記第１ハッシュ関数を用いて、前記第１ハッシュ値を算出する復号第１手段と、
前記復号第１手段によって算出された前記第１ハッシュ値と、前記分離手段によって分離された前記第１中間平文との排他的論理和を算出し、前記中間平文作成手段によって用いられた前記平文を抽出する平文抽出手段と、
をさらに備える請求項３に記載された復号装置。
【請求項５】
請求項１に記載された暗号化装置が実行する暗号化方法であって、
前記乱数発生手段が、乱数を発生する乱数発生ステップと、
前記中間平文作成手段が、前記乱数発生ステップによって発生された乱数と特定の関数とを用いて前記平文を暗号化し、暗号化した中間平文を作成する中間平文作成ステップと、
前記ストリーム暗号化手段が、初期鍵及び初期ベクトルを用いて前記ストリーム暗号アルゴリズムを初期化し、前記中間平文作成ステップによって作成された前記中間平文に対して、ストリーム暗号化を行うストリーム暗号化ステップと、
を備える暗号化方法。
【請求項６】
請求項３に記載された復号装置が実行する復号方法であって、
前記復号手段が、前記初期鍵及び前記初期ベクトルを用いて前記ストリーム暗号アルゴリズムを初期化し、前記暗号化装置によって暗号化された前記暗号文を復号する復号ステップと、
前記平文復号手段が、前記復号ステップによって復号された前記中間平文に対して、前記中間平文作成手段によって用いられた前記特定の関数の逆関数を作用させ、前記中間平文を前記乱数と前記平文とに分けて、前記平文を出力する平文復号ステップと、
を備える復号方法。
【請求項７】
コンピュータに、請求項５に記載された暗号化方法の各ステップを実行させるための暗号化プログラム。
【請求項８】
コンピュータに、請求項６に記載された復号方法の各ステップを実行させるための復号プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号化装置及び復号装置、暗号化方法及び復号方法、並びに暗号化プログラム及び復号プログラムに関する。
【背景技術】
【０００２】
近年、コンピュータを利用した様々なサービスが提供されている。多くのサービスにおいては、通信の秘匿を実現するため、暗号が利用される。暗号方式として最も一般的なものは、１つの鍵で暗号化と復号とを行う共通鍵暗号方式であるが、共通鍵暗号方式は、大きくブロック暗号方式とストリーム暗号方式の２つに分けられる。前者は、最も一般的に用いられている方式であるが、後者の方が処理速度に優れるため、近年注目を集めつつある。ストリーム暗号は、初期鍵と初期ベクトル（ＩＶ）を初期化処理により攪拌して、初期の内部状態を生成し、生成した状態を逐次更新しながら、暗号化の各系列を生成する。従来のストリーム暗号では、初期鍵は秘密情報として保持して毎回同じものを使うのに対し、初期ベクトルについては毎回異なる値を使用することで、安全性を確保している。
【０００３】
このようなストリーム暗号における同期型鍵ストリーム暗号方式において、簡易な鍵同期を実現した暗号通信システムを開示する特許文献１が知られている。この暗号通信システムは、暗号化装置が、乱数を復号装置へ送信し、その乱数を鍵によって変換し、変換した乱数を暗号化鍵として用いて平文を暗号化し、送信する。復号装置は、受信した乱数を用いて暗号化鍵に変換し、変換した暗号化鍵を用いて復号し平文を得る。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−２０９１９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、攻撃者が意図的に同じ初期ベクトルを入力することを促すことによって同じ初期ベクトルが入力されたり、実装のミスにより高い確率で同じ初期ベクトルが入力されてしまう、などの問題がある。このような場合には安全性が確保されない。
【０００６】
そこで、ストリーム暗号において、同一の初期ベクトルが入力されたとしても安全なアルゴリズムを実現する装置が求められている。
【０００７】
本発明は、ストリーム暗号のアルゴリズムを変更する事無く、同一の初期ベクトルが入力されたとしても安全な暗号化及び復号アルゴリズムを実現する暗号化装置及び復号装置並びに暗号化方法及び復号方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、ストリーム暗号の構造を変えずに前処理を追加することで同じ初期ベクトルが入力されたとしても安全なストリーム暗号を実現する手法を提案する。本手法によって、上記のような課題が解決される。
本手法は、初期鍵及び初期ベクトルを入力してストリーム暗号アルゴリズムを初期化し、その後、暗号化を行うストリーム暗号方式であって、平文に対してアルゴリズム内部で生成した乱数をある関数に従って作用させた中間平文を生成し、中間平文に対して暗号化を行う手法である。また、本手法は、初期鍵及び初期ベクトルを入力してストリーム暗号アルゴリズムを初期化し、その後、復号を行うストリーム暗号方式であって、暗号文を通常の手順で復号後、得られた中間平文に対してある逆関数を作用させて平文と乱数に分割し、乱数を削除して平文を取り出す復号手法である。上記の関数及び逆関数としてＡＯＮＴ（Ａｌｌ  ｏｒ  Ｎｏｔｈｉｎｇ  Ｔｒａｎｓｆｏｒｍ）を用いる。
【０００９】
暗号化は、次のような手順である。
（１）ストリーム暗号アルゴリズムに初期鍵及び初期ベクトルを入力し初期化する。
（２）平文をＡＯＮＴによる前処理を実施して、内部で生成した乱数と混ぜ合わせる。これを中間平文とする。
（３）ストリーム暗号処理によって、入力された中間平文の暗号化を行う。暗号文が出力される。
【００１０】
復号は、次のような手順である。
（１）暗号文を通常の処理と同様に、ストリーム暗号アルゴリズムを初期化して復号処理を実施する。
（２）復号により中間平文が得られるので、これをＡＯＮＴの逆処理により、平文と乱数に分ける。
（３）乱数を取り除き、平文を出力する。
具体的には、以下のような解決手段を提供する。
【００１１】
（１）  ストリーム暗号アルゴリズムを用いて平文を暗号化する暗号化装置であって、乱数を発生する乱数発生手段と、前記乱数発生手段によって発生された乱数と特定の関数とを用いて前記平文を暗号化し、暗号化した中間平文を作成する中間平文作成手段と、初期鍵及び初期ベクトルを用いて前記ストリーム暗号アルゴリズムを初期化し、前記中間平文作成手段によって作成された前記中間平文に対して、ストリーム暗号化を行うストリーム暗号化手段と、を備える暗号化装置。
【００１２】
（１）の構成によれば、（１）に係る暗号化装置は、乱数を発生させ、発生させた乱数と特定の関数とを用いて平文を暗号化し、暗号化した中間平文を作成し、初期鍵及び初期ベクトルを用いてストリーム暗号アルゴリズムを初期化し、中間平文に対して、ストリーム暗号化を行う。
【００１３】
すなわち、（１）に係る暗号化装置は、平文から暗号化した中間平文を作成し、中間平文に対して、ストリーム暗号化を行う。
したがって、（１）に係る暗号化装置は、ストリーム暗号のアルゴリズムを変更する事無く、同一の初期ベクトルが入力されたとしても安全な暗号アルゴリズムを実現することができる。
【００１４】
（２）  前記特定の関数は、第１ハッシュ関数と第２ハッシュ関数とを含み、前記中間平文作成手段は、前記第１ハッシュ関数を用いて前記乱数から第１ハッシュ値を算出する暗号化第１手段と、前記暗号化第１手段によって算出された前記第１ハッシュ値と、前記平文との排他的論理和を算出し、第１中間平文を作成する第１中間平文作成手段と、前記第２ハッシュ関数を用いて前記第１中間平文から第２ハッシュ値を算出する暗号化第２手段と、前記暗号化第２手段によって算出された前記第２ハッシュ値と、前記乱数との排他的論理和を算出し、第２中間平文を作成する第２中間平文作成手段と、前記第１中間平文作成手段によって作成された前記第１中間平文と、前記第２中間平文作成手段によって作成された前記第２中間平文とを連結した前記中間平文を作成する連結手段と、をさらに備える（１）に記載された暗号化装置。
【００１５】
すなわち、（２）に係る暗号化装置は、第１ハッシュ関数を用いて乱数から第１ハッシュ値を算出し、算出した第１ハッシュ値と、平文との排他的論理和を算出して第１中間平文を作成する。次に、第２ハッシュ関数を用いて第１中間平文から第２ハッシュ値を算出し、算出した第２ハッシュ値と、乱数との排他的論理和を算出し、第２中間平文を作成し、第１中間平文と、第２中間平文とを連結した中間平文を作成する。
したがって、（１）に係る暗号化装置は、ストリーム暗号のアルゴリズムを変更する事無く、ハッシュ関数を用いて、同一の同一初期ベクトルが入力されたとしても安全な暗号化アルゴリズムを実現することができる。
【００１６】
（３）  （１）に記載された暗号化装置によって暗号化された暗号文を復号する復号装置であって、前記初期鍵及び前記初期ベクトルを用いて前記ストリーム暗号アルゴリズムを初期化し、前記暗号化装置によって暗号化された前記暗号文を復号する復号手段と、前記復号手段によって復号された前記中間平文に対して、前記中間平文作成手段によって用いられた前記特定の関数の逆関数を作用させ、前記中間平文を前記乱数と前記平文とに分けて、前記平文を出力する平文復号手段と、を備える復号装置。
【００１７】
（３）の構成によれば、（３）に係る復号装置は、初期鍵及び初期ベクトルを用いてストリーム暗号アルゴリズムを初期化し、（１）に係る暗号化装置によって暗号化された暗号文を復号した中間平文に対して、平文の暗号化に用いられた特定の関数の逆関数を作用させて中間平文を乱数と平文とに分けて、平文を出力する。
【００１８】
すなわち、（３）に係る復号装置は、復号した中間平文に対して、暗号化に用いられた特定の関数の逆関数を作用させて、平文を出力する。
したがって、（３）に係る復号装置は、ストリーム暗号のアルゴリズムを変更する事無く、同一の初期ベクトルが入力されたとしても安全な復号アルゴリズムを実現することができる。
【００１９】
（４）  （２）に記載された暗号化装置によって暗号化された暗号文を復号する復号装置であって、前記平文復号手段は、前記中間平文を、前記第１中間平文と前記第２中間平文とに分離させる分離手段と、前記分離手段によって分離された前記第１中間平文から、前記第２ハッシュ関数を用いて前記第２ハッシュ値を算出する復号第２手段と、前記復号第２手段によって算出された前記第２ハッシュ値と、前記分離手段によって分離された前記第２中間平文との排他的論理和を算出し、前記中間平文作成手段によって用いられた前記乱数を抽出する乱数抽出手段と、前記乱数抽出手段によって抽出された前記乱数から、前記第１ハッシュ関数を用いて、前記第１ハッシュ値を算出する復号第１手段と、前記復号第１手段によって算出された前記第１ハッシュ値と、前記分離手段によって分離された前記第１中間平文との排他的論理和を算出し、前記中間平文作成手段によって用いられた前記平文を抽出する平文抽出手段と、をさらに備える（３）に記載された復号装置。
【００２０】
すなわち、（４）に係る復号装置は、中間平文を、第１中間平文と第２中間平文とに分離させ、分離させた第１中間平文から、第２ハッシュ関数を用いて第２ハッシュ値を算出し、算出した第２ハッシュ値と、第２中間平文との排他的論理和を算出し、平文の暗号化に用いられた乱数を抽出し、抽出した乱数から、第１ハッシュ関数を用いて、第１ハッシュ値を算出し、算出した第１ハッシュ値と、第１中間平文との排他的論理和を算出し、平文を抽出する。
したがって、（４）に係る復号装置は、ストリーム暗号のアルゴリズムを変更する事無く、ハッシュ関数を用いて、同一の初期ベクトルが入力されたとしても安全な復号アルゴリズムを実現することができる。
【００２１】
（５）  （１）に記載された暗号化装置が実行する暗号化方法であって、前記乱数発生手段が、乱数を発生する乱数発生ステップと、前記中間平文作成手段が、前記乱数発生ステップによって発生された乱数と特定の関数とを用いて前記平文を暗号化し、暗号化した中間平文を作成する中間平文作成ステップと、前記ストリーム暗号化手段が、初期鍵及び初期ベクトルを用いて前記ストリーム暗号アルゴリズムを初期化し、前記中間平文作成ステップによって作成された前記中間平文に対して、ストリーム暗号化を行うストリーム暗号化ステップと、を備える暗号化方法。
【００２２】
したがって、（５）に係る暗号化方法は、ストリーム暗号のアルゴリズムを変更する事無く、同一の初期ベクトルが入力されたとしても安全な暗号アルゴリズムを実現することができる。
【００２３】
（６）  （３）に記載された復号装置が実行する復号方法であって、前記復号手段が、前記初期鍵及び前記初期ベクトルを用いて前記ストリーム暗号アルゴリズムを初期化し、前記暗号化装置によって暗号化された前記暗号文を復号する復号ステップと、前記平文復号手段が、前記復号ステップによって復号された前記中間平文に対して、前記中間平文作成手段によって用いられた前記特定の関数の逆関数を作用させ、前記中間平文を前記乱数と前記平文とに分けて、前記平文を出力する平文復号ステップと、を備える復号方法。
【００２４】
したがって、（６）に係る復号方法は、ストリーム暗号のアルゴリズムを変更する事無く、同一の初期ベクトルが入力されたとしても安全な復号アルゴリズムを実現することができる。
【００２５】
（７）  コンピュータに、（５）に記載された暗号化方法の各ステップを実行させるための暗号化プログラム。
【００２６】
したがって、（７）に係る暗号化プログラムは、コンピュータに、ストリーム暗号のアルゴリズムを変更する事無く、同一の初期ベクトルが入力されたとしても安全な暗号化アルゴリズムを実現させることができる。
【００２７】
（８）  コンピュータに、（６）に記載された復号方法の各ステップを実行させるための復号プログラム。
【００２８】
したがって、（８）に係る復号プログラムは、コンピュータに、ストリーム暗号のアルゴリズムを変更する事無く、同一の初期ベクトルが入力されたとしても安全な復号アルゴリズムを実現させることができる。
【発明の効果】
【００２９】
本発明によれば、ストリーム暗号のアルゴリズムを変更する事無く、同一の初期ベクトルが入力されたとしても安全な暗号化及び復号アルゴリズムを実現することができる。
その結果、本発明は、様々なストリーム暗号の評価に広く適用できる。従って、ストリーム暗号を使用するようなブロードバンド事業や、携帯電話を始めとするモバイル通信におけるシステム構築に広く利用できる。例えば、通信の各システム構築、サービス提供やブロードバンド事業におけるコンテンツサービスに利用できる。特に高速な暗号処理を必要とするバックボーンネットワークにおいて有効な技術である。
【図面の簡単な説明】
【００３０】
【図１】本発明の一実施形態に係る暗号化装置及び復号装置の構成を示すブロック図である。
【図２】本発明の一実施形態に係る暗号化アルゴリズム及び復号アルゴリズムを説明するための図である。
【図３】本発明の一実施形態に係る暗号化装置における平文から中間平文への暗号化を説明するための図である。
【図４】本発明の一実施形態に係る復号装置における中間平文から平文の復号を説明するための図である。
【図５】本発明の一実施形態に係る暗号化装置の処理を示すフローチャートである。
【図６】本発明の一実施形態に係る復号装置の処理を示すフローチャートである。
【発明を実施するための形態】
【００３１】
以下、本発明の実施形態について、図を参照しながら説明する。
図１は、本発明の一実施形態に係る暗号化装置１０及び復号装置５０の構成を示すブロック図である。図２は、本発明の一実施形態に係る暗号化アルゴリズム及び復号アルゴリズムを説明するための図である。
暗号化装置１０は、乱数発生手段１１と、中間平文作成手段１２と、ストリーム暗号化手段１３とを備え、乱数と特定の関数とを用いて平文を暗号化した中間平文を作成し、作成した中間平文をストリーム暗号化し、ストリーム暗号化した暗号文を作成する。
復号装置５０は、復号手段５１と、平文復号手段５２とを備え、暗号化装置１０によって暗号化された暗号文を復号し、復号した中間平文から、暗号化装置１０によって用いられた特定の関数の逆関数を作用させて、平文を出力する。
【００３２】
暗号化装置１０の各手段について説明する。
乱数発生手段１１は、乱数１０２を発生する。乱数発生手段１１は、真の乱数を発生させる乱数発生器であってもよいし、疑似乱数を発生させる乱数発生プログラムであってもよい。
【００３３】
中間平文作成手段１２は、乱数発生手段１１によって発生された乱数１０２と特定の関数１１１とを用いて平文１０１を暗号化し、暗号化した中間平文２０１を作成する。
【００３４】
ストリーム暗号化手段１３は、初期鍵及び初期ベクトルを用いてストリーム暗号アルゴリズムを初期化し、中間平文作成手段１２によって作成された中間平文２０１に対して、ストリーム暗号化を行う。ストリーム暗号化により、暗号文３０１が作成される。
暗号化装置１０は、ストリーム暗号化手段１３によってストリーム暗号化された暗号文３０１を復号装置５０に送信する送信手段を備えるとしてもよい。
【００３５】
復号装置５０の各手段について説明する。
復号手段５１は、初期鍵及び初期ベクトルを用いてストリーム暗号アルゴリズムを初期化し、暗号化装置１０によって暗号化された暗号文３０１を復号する。
【００３６】
平文復号手段５２は、復号手段５１によって復号された中間平文２０１に対して、暗号化装置１０の中間平文作成手段１２によって用いられた特定の関数の逆関数を作用させ、中間平文２０１を乱数１０２と平文１０１とに分けて、平文１０１を出力する。
復号装置５０は、暗号化装置１０によって送信された暗号文３０１を受信する受信手段を備えるとしてもよい。
【００３７】
暗号化装置１０の中間平文の作成について図３に基づいて説明する。図３は、本発明の一実施形態に係る暗号化装置１０における平文から中間平文への暗号化を説明するための図である。
中間平文作成手段１２における特定の関数は、第１ハッシュ関数１１１１と第２ハッシュ関数１１１３とを含む。中間平文作成手段１２は、暗号化第１手段１２１と、第１中間平文作成手段１２２と、暗号化第２手段１２３と、第２中間平文作成手段１２４と、連結手段１２５とを備える。中間平文作成手段１２の各手段について説明する。
【００３８】
暗号化第１手段１２１は、第１ハッシュ関数１１１１を用いて乱数１０２から第１ハッシュ値を算出する。
第１中間平文作成手段１２２は、暗号化第１手段１２１によって算出された第１ハッシュ値と、平文１０１との排他的論理和を算出（ＸＯＲ演算１１１２）し、第１中間平文２０１１を作成する。
暗号化第２手段１２３は、第２ハッシュ関数１１１３を用いて第１中間平文２０１１から第２ハッシュ値を算出する。
第２中間平文作成手段１２４は、暗号化第２手段１２３によって算出された第２ハッシュ値と、乱数１０２との排他的論理和を算出（ＸＯＲ演算１１１４）し、第２中間平文２０１２を作成する。
連結手段１２５は、第１中間平文作成手段１２２によって作成された第１中間平文２０１１と、第２中間平文作成手段１２４によって作成された第２中間平文２０１２とを連結した中間平文２０１を作成する。
【００３９】
復号装置５０の平文の抽出について図４に基づいて説明する。図４は、本発明の一実施形態に係る復号装置５０における中間平文から平文の復号を説明するための図である。
平文復号手段５２は、分離手段５２１と、復号第２手段５２２と、乱数抽出手段５２３と、復号第１手段５２４と、平文抽出手段５２５とを備える。平文復号手段５２の各手段について説明する。
【００４０】
分離手段５２１は、中間平文２０１を、第１中間平文２０１１と第２中間平文２０１２とに分離させる。
復号第２手段５２２は、分離手段５２１によって分離された第１中間平文２０１１から、第２ハッシュ関数１１１３を用いて第２ハッシュ値を算出する。
乱数抽出手段５２３は、復号第２手段５２２によって算出された第２ハッシュ値と、分離手段５２１によって分離された第２中間平文２０１２との排他的論理和を算出（ＸＯＲ演算１１１４）し、中間平文作成手段１２によって用いられた乱数１０２を抽出する。
復号第１手段５２４は、乱数抽出手段５２３によって抽出された乱数１０２から、第１ハッシュ関数１１１１を用いて、第１ハッシュ値を算出する。
平文抽出手段５２５は、復号第１手段５２４によって算出された第１ハッシュ値と、分離手段５２１によって分離された第１中間平文２０１１との排他的論理和を算出（ＸＯＲ演算１１１２）し、中間平文作成手段１２によって用いられた平文１０１を抽出する。
【００４１】
図５は、本発明の一実施形態に係る暗号化装置１０の処理を示すフローチャートである。暗号化装置１０は、コンピュータ及びその周辺装置が備えるハードウェア並びに該ハードウェアを制御するソフトウェアによって構成され、以下の処理は、制御部（例えば、ＣＰＵ）が、ＯＳの下で所定のソフトウェアに従い実行する処理である。
【００４２】
ステップＳ１０１において、ＣＰＵ（乱数発生手段１１）は、乱数１０２を発生させる。
【００４３】
ステップＳ１０２において、ＣＰＵ（中間平文作成手段１２）は、ステップＳ１０１において発生された乱数１０２と特定の関数１１１とを用いて平文１０１を暗号化し、暗号化した中間平文２０１を作成する。より具体的には、ＣＰＵ（暗号化第１手段１２１）は、第１ハッシュ関数１１１１を用いて乱数１０２から第１ハッシュ値を算出する。次に、ＣＰＵ（第１中間平文作成手段１２２）は、算出した第１ハッシュ値と、平文１０１との排他的論理和を算出し、第１中間平文２０１１を作成する。次に、ＣＰＵ（暗号化第２手段１２３）は、第２ハッシュ関数１１１３を用いて第１中間平文２０１１から第２ハッシュ値を算出する。次に、ＣＰＵ（第２中間平文作成手段１２４）は、算出した第２ハッシュ値と、乱数１０２との排他的論理和を算出し、第２中間平文２０１２を作成する。次に、ＣＰＵ（連結手段１２５）は、第１中間平文２０１１と、第２中間平文２０１２とを連結した中間平文２０１を作成する。
【００４４】
ステップＳ１０３において、ＣＰＵ（ストリーム暗号化手段１３）は、初期鍵及び初期ベクトルを用いてストリーム暗号アルゴリズムを初期化し、ステップＳ１０２において作成された中間平文２０１に対して、ストリーム暗号化を行い、暗号文３０１を作成する。
【００４５】
図６は、本発明の一実施形態に係る復号装置５０の処理を示すフローチャートである。復号装置５０は、コンピュータ及びその周辺装置が備えるハードウェア並びに該ハードウェアを制御するソフトウェアによって構成され、以下の処理は、制御部（例えば、ＣＰＵ）が、ＯＳの下で所定のソフトウェアに従い実行する処理である。
【００４６】
ステップＳ２０１において、ＣＰＵ（復号手段５１）は、初期鍵及び初期ベクトルを用いてストリーム暗号アルゴリズムを初期化し、暗号化装置１０によって暗号化された暗号文３０１を復号し、中間平文を取得する。
【００４７】
ステップＳ２０２において、ＣＰＵ（平文復号手段５２）は、ステップＳ２０１において復号された中間平文２０１に対して、暗号化装置１０によって用いられた特定の関数の逆関数を作用させ、中間平文２０１を乱数１０２と平文１０１とに分けて、平文１０１を出力する。より具体的には、ＣＰＵ（分離手段５２１）は、中間平文２０１を、第１中間平文２０１１と第２中間平文２０１２とに分離させる。次に、ＣＰＵ（復号第２手段５２２）は、分離させた第１中間平文２０１１から、第２ハッシュ関数１１１３を用いて第２ハッシュ値を算出する。次に、ＣＰＵ（乱数抽出手段５２３）は、算出した第２ハッシュ値と、分離させた第２中間平文２０１２との排他的論理和を算出し、乱数１０２を抽出する。次に、ＣＰＵ（復号第１手段５２４）は、抽出した乱数１０２から、第１ハッシュ関数１１１１を用いて、第１ハッシュ値を算出する。次に、ＣＰＵ（平文抽出手段５２５）は、算出した第１ハッシュ値と、分離させた第１中間平文２０１１との排他的論理和を算出し、平文１０１を抽出する。
【００４８】
本実施形態によれば、暗号化装置１０は、乱数を発生させ、発生させた乱数と特定の関数とを用いて平文を暗号化し、暗号化した中間平文を作成し、初期鍵及び初期ベクトルを用いてストリーム暗号アルゴリズムを初期化し、中間平文に対して、ストリーム暗号化を行う。復号装置５０は、初期鍵及び初期ベクトルを用いてストリーム暗号アルゴリズムを初期化し、暗号化装置１０によって暗号化された暗号文を復号した中間平文に対して、平文の暗号化に用いられた特定の関数の逆関数を作用させて中間平文を乱数と平文とに分けて、平文を出力する。
したがって、暗号化装置１０は、ストリーム暗号のアルゴリズムを変更する事無く、同一の初期ベクトルが入力されたとしても安全な暗号化アルゴリズムを実現することができ、復号装置５０は、安全な復号アルゴリズムを実現することができる。
【００４９】
以上、本発明の実施形態について説明したが、本発明は上述した実施形態に限るものではない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態に記載されたものに限定されるものではない。
【符号の説明】
【００５０】
１０    暗号化装置
１１    乱数発生手段
１２    中間平文作成手段
１２１  暗号化第１手段
１２２  第１中間平文作成手段
１２３  暗号化第２手段
１２４  第２中間平文作成手段
１２５  連結手段
１３    ストリーム暗号化手段
５０    復号装置
５１    復号手段
５２    平文復号手段
５２１  分離手段
５２２  復号第２手段
５２３  乱数抽出手段
５２４  復号第１手段
５２５  平文抽出手段
【図１】
2016004170.tif 000003
【図２】
2016004170.tif 000004
【図３】
2016004170.tif 000005
【図４】
2016004170.tif 000006
【図５】
2016004170.tif 000007
【図６】
2016004170.tif 000008