(57)【要約】【課題】  暗号通信するデータに付加するデータ数の増加を抑制する。【解決手段】  暗号通信システムは、暗号装置１００と、通信回線１９０に接続された復号装置１５０とを含む。暗号装置１００は、データを記憶する記憶部１０２と、所定のデータに乱数を付加する乱数付加部１０３と、入力ブロックを算出する入力ブロック算出部１０６と、データを暗号化する暗号化部１０７と、データを送信するデータ送信部１０８とを含む。復号装置１５０は、データを記憶する記憶部１２２と、所定のデータから乱数を除去する乱数除去部１２３と、平文ブロックを算出する平文ブロック算出部１２６と、暗号化されたデータを復号化する復号化部１２７と、データを受信するデータ受信部１２８とを含む。【選択図】        図１
2005202048.tif 000002
【特許請求の範囲】
【請求項１】
暗号通信システムであって、
前記暗号通信システムは、複数のブロックに分割された暗号化データを生成して送信する暗号装置を備え、
前記暗号装置は、
平文データに対応する第１のデータの先頭から予め定められた範囲内に、前記第１のデータの暗号通信のための第２のデータを追加するための追加手段と、
前記第１のデータの先頭から前記第２のデータの先頭までのデータのサイズを少なくとも上回るデータサイズによって、前記第２のデータの追加によって生成される通信データを分割して、暗号化処理が行なわれる前のデータである複数の平文ブロックを生成するための通信データ分割手段と、
前記第１のデータの先頭が含まれる平文ブロックから、入力ブロックを生成するための第１の入力ブロック生成手段と、
前記第１のデータの先頭が含まれる平文ブロックの後に生成される少なくとも１つ以上の後続の平文ブロックの各々に対して、前記後続の平文ブロックを、前記後続の平文ブロックの直前の平文ブロックに対応する前記暗号化データに基づいて変換し、前記後続の平文ブロックに対応する入力ブロックを生成するための第２の入力ブロック生成手段と、
生成された複数の前記入力ブロックの各々に対して暗号化処理を実行して、複数の前記入力ブロックの各々に対応する前記暗号化データを生成するための暗号化手段と、
生成された複数の前記暗号化データを送信するための送信手段とを含み、
前記暗号通信システムは、複数のブロックに分割された暗号化データを受信して復号する復号装置をさらに備え、
前記復号装置は、
複数の前記暗号化データを受信するための受信手段と、
複数の前記暗号化データの各々に対して復号化処理を実行して、出力ブロックを生成するための出力ブロック生成手段と、
最初に生成される出力ブロックから、第１の平文ブロックを生成するための第１の平文ブロック生成手段と、
前記最初に生成される出力ブロックの後に生成される少なくとも１つ以上の後続の出力ブロックの各々に対して、前記後続の出力ブロックを、前記後続の出力ブロックの直前の出力ブロックに対応する前記暗号化データに基づいて変換し、前記後続の出力ブロックに対応する平文ブロックを生成するための第２の平文ブロック生成手段と、
生成された複数の前記平文ブロックを結合することにより、平文データに対応する第１のデータと、前記第１のデータの先頭から予め定められた範囲内に追加された第２のデータとを有する通信データを復元するための通信データ復元手段と、
前記通信データから前記第２のデータを除去するための除去手段とを含む、暗号通信システム。
【請求項２】
複数のブロックに分割された暗号化データを生成して送信する暗号装置であって、
平文データに対応する第１のデータの先頭から予め定められた範囲内に、前記第１のデータの暗号通信のための第２のデータを追加するための追加手段と、
前記第１のデータの先頭から前記第２のデータの先頭までのデータのサイズを少なくとも上回るデータサイズによって、前記第２のデータの追加によって生成される通信データを分割して、暗号化処理が行なわれる前のデータである複数の平文ブロックを生成するための通信データ分割手段と、
前記第１のデータの先頭が含まれる平文ブロックから、入力ブロックを生成するための第１の入力ブロック生成手段と、
前記第１のデータの先頭が含まれる平文ブロックの後に生成される少なくとも１つ以上の後続の平文ブロックの各々に対して、前記後続の平文ブロックを、前記後続の平文ブロックの直前の平文ブロックに対応する前記暗号化データに基づいて変換し、前記後続の平文ブロックに対応する入力ブロックを生成するための第２の入力ブロック生成手段と、
生成された複数の前記入力ブロックの各々に対して暗号化処理を実行して、複数の前記入力ブロックの各々に対応する前記暗号化データを生成するための暗号化手段と、
生成された複数の前記暗号化データを送信するための送信手段とを含む、暗号装置。
【請求項３】
前記第２の入力ブロック生成手段は、
前記後続の平文ブロックと、前記直前の平文ブロックに対応する暗号化データとを記憶するための記憶手段と、
前記後続の平文ブロックと、前記直前の平文ブロックに対応する暗号化データとを予め定められた規則に基づいて演算することにより、前記後続の平文ブロックに対応する入力ブロックを生成するための入力ブロック演算手段とを含む、請求項２に記載の暗号装置。
【請求項４】
前記入力ブロック演算手段は、予め定められた、逆関数を有する関数を用いて演算することにより、前記後続の平文ブロックと前記直前の平文ブロックに対応する暗号化データから、前記後続の平文ブロックに対応する入力ブロックを生成する、請求項３に記載の暗号装置。
【請求項５】
前記第２の入力ブロック生成手段は、予め定められた演算処理を実行することにより、前記平文ブロックのサイズと同じサイズを有する前記入力ブロックを生成する、請求項２に記載の暗号装置。
【請求項６】
前記追加手段は、前記予め定められた範囲内に前記第２のデータを挿入する、請求項２に記載の暗号装置。
【請求項７】
前記暗号装置はさらに、前記暗号化処理に使用する鍵を更新するための更新手段を含む、請求項２〜６のいずれかに記載の暗号装置。
【請求項８】
前記更新手段は、
前記暗号化処理の対象となる平文ブロックの前の平文ブロックから生成された前記暗号化データと、前記前の平文ブロックの入力ブロックと、前記平文ブロックと、前記前の平文ブロックの暗号化処理に使用された鍵との少なくとも１つのデータを記憶するための記憶手段と、
前記少なくとも１つのデータに基づいて、新たな鍵を生成するための鍵生成手段と、
前記新たな鍵を前記暗号化処理に使用する鍵として設定するための設定手段とを含む、請求項７に記載の暗号装置。
【請求項９】
前記暗号装置はさらに、乱数を有するデータを前記第２のデータとして生成するための付加データ生成手段を含む、請求項２〜８のいずれかに記載の暗号装置。
【請求項１０】
前記付加データ生成手段は、
乱数を生成するための乱数生成手段と、
生成された前記乱数を記憶するための乱数記憶手段と、
前記第２のデータのサイズと前記乱数のサイズとの差を有するデータを、前記乱数に追加することにより、前記第２のデータを生成するための手段を含む、請求項９に記載の暗号装置。
【請求項１１】
前記暗号装置はさらに、
前記第１のデータの送信先を識別する識別データを生成するための識別データ生成手段と、
前記識別データを有するデータを前記第２のデータとして生成するための手段とを含む、請求項２〜１０のいずれかに記載の暗号装置。
【請求項１２】
前記暗号装置はさらに、
予め定められた処理に基づいて、前記第１のデータと前記第２のデータとを有する通信データを圧縮することにより、前記通信データに復元不可能なハッシュ値を生成するためのハッシュ値生成手段と、
前記ハッシュ値を有する第２のデータを生成するための手段とを含む、請求項２〜１０のいずれかに記載の暗号装置。
【請求項１３】
複数のブロックに分割された暗号化データを受信して復号する復号装置であって、
複数の前記暗号化データを受信するための受信手段と、
複数の前記暗号化データの各々に対して復号化処理を実行して、出力ブロックを生成するための出力ブロック生成手段と、
最初に生成される出力ブロックから、第１の平文ブロックを生成するための第１の平文ブロック生成手段と、
前記最初に生成される出力ブロックの後に生成される少なくとも１つ以上の後続の出力ブロックの各々に対して、前記後続の出力ブロックを、前記後続の出力ブロックの直前の出力ブロックに対応する前記暗号化データに基づいて変換し、前記後続の出力ブロックに対応する平文ブロックを生成するための第２の平文ブロック生成手段と、
生成された複数の前記平文ブロックを結合することにより、平文データに対応する第１のデータと、前記第１のデータの先頭から予め定められた範囲内に追加された第２のデータとを有する通信データを復元するための通信データ復元手段と、
前記通信データから前記第２のデータを除去するための除去手段とを含む、復号装置。
【請求項１４】
前記第２の平文ブロック生成手段は、
前記先頭の出力ブロックの後に生成される前記後続の出力ブロックと、前記直前の出力ブロックに対応する暗号化データとを記憶するための記憶手段と、
前記後続の出力ブロックと、前記直前の出力ブロックに対応する暗号化データとを予め定められた規則に基づいて演算することにより、前記後続の出力ブロックに対応する平文ブロックを生成するための平文ブロック演算手段とを含む、請求項１３に記載の復号装置。
【請求項１５】
前記平文ブロック演算手段は、予め定められた、逆関数を有する関数を用いて、前記後続の出力ブロックと、前記直前の出力ブロックに対応する暗号化データとから、前記後続の出力ブロックに対応する平文ブロックを生成する、請求項１４に記載の復号装置。
【請求項１６】
前記復号装置はさらに、前記復号化処理に使用する鍵を更新するための更新手段を含む、請求項１３〜１５のいずれかに記載の復号装置。
【請求項１７】
前記更新手段は、
前記復号化処理の対象となる暗号化データの直前の暗号化データと、前記直前の暗号化データから生成された出力ブロックと、前記出力ブロックから生成された平文ブロックと、前記直前の暗号化データの復号化処理に使用された鍵との少なくとも１つのデータを記憶するための記憶手段と、
前記少なくとも１つのデータに基づいて、新たな鍵を生成するための鍵生成手段と、
前記新たな鍵を前記復号化処理に使用する鍵として設定するための手段とを含む、請求項１６に記載の復号装置。
【請求項１８】
前記第２のデータは、前記暗号化データの送信元を識別するための識別データを含み、
前記復号装置はさらに、
予め定められたデータを記憶するための記憶手段と、
前記第２のデータから、前記識別データを取得するための識別データ取得手段と、
前記識別データと、前記予め定められたデータとが一致するか否かを確認するための識別データ確認手段とを含む、請求項１３〜１５のいずれかに記載の復号装置。
【請求項１９】
前記第２のデータは、予め定められた規則により算出されたハッシュ値を含み、
前記復号装置はさらに、
前記第２のデータから前記ハッシュ値を取得するための取得手段と、
復号化された第１のデータにハッシュ演算を実行することにより、ハッシュ値を算出するためのハッシュ値算出手段と、
前記取得手段により取得されたハッシュ値と、前記ハッシュ値算出手段により算出されたハッシュ値とが一致するか否かを確認するためのハッシュ値確認手段とを含む、請求項１３〜１５のいずれかに記載の復号装置。
【請求項２０】
複数のブロックに分割された暗号化データを生成して送信する暗号化方法であって、
データが格納された記憶手段から、平文データに対応する第１のデータと、前記第１のデータの暗号通信のための第２のデータとを読み出すステップと、
前記第１のデータの先頭から予め定められた範囲内に、前記第２のデータを追加する追加ステップと、
前記第１のデータの先頭から前記第２のデータの先頭までのデータのサイズを少なくとも上回るデータサイズによって、前記第２のデータの追加によって生成される通信データを分割して、暗号化処理が行なわれる前のデータである複数の平文ブロックを生成する通信データ分割ステップと、
前記第１のデータの先頭が含まれる平文ブロックから、入力ブロックを生成する第１の平文ブロック生成ステップと、
前記第１のデータの先頭が含まれる平文ブロックの後に生成される少なくとも１つ以上の後続の平文ブロックの各々に対して、前記後続の平文ブロックを、前記後続の平文ブロックの直前の平文ブロックに対応する前記暗号化データに基づいて変換し、前記後続の平文ブロックに対応する入力ブロックを生成する第２の平文ブロック生成ステップと、
生成された複数の前記入力ブロックの各々に対して暗号化処理を実行して、複数の前記入力ブロックの各々に対応する前記暗号化データを生成する暗号化ステップと、
生成された複数の前記暗号化データを送信する送信ステップとを含む、暗号化方法。
【請求項２１】
複数のブロックに分割された暗号化データを受信して復号する復号化方法であって、
複数の前記暗号化データを受信するステップと、
受信した複数の前記暗号化データを電子データとして記憶手段に格納するステップと、
前記記憶手段から、複数の前記暗号化データを読み出すステップと、
複数の前記暗号化データの各々に対して復号化処理を実行して、出力ブロックを生成する出力ブロック生成ステップと、
最初に生成される出力ブロックから、平文ブロックを生成する第１の平文ブロック生成ステップと、
前記最初に生成される出力ブロックの後に生成される少なくとも１つ以上の後続の出力ブロックに対して、前記後続の出力ブロックを、前記後続の出力ブロックの直前の出力ブロックに対応する前記暗号化データに基づいて変換し、前記後続の出力ブロックに対応する平文ブロックを生成する第２の平文ブロック生成ステップと、
生成された複数の前記平文ブロックを結合することにより、平文データに対応する第１のデータと、前記第１のデータの先頭から予め定められた範囲内に追加された第２のデータとを有する通信データを復元する通信データ復元ステップと、
前記通信データから前記第２のデータを除去する除去ステップとを含む、復号化方法。
【請求項２２】
複数のブロックに分割された暗号化データを生成して送信する暗号装置として、コンピュータを機能させるための暗号化プログラムであって、前記暗号化プログラムは前記コンピュータに、
データが格納された記憶手段から、平文データに対応する第１のデータと、前記第１のデータの暗号通信のための第２のデータとを読み出す準備ステップと、
前記第１のデータの先頭から予め定められた範囲内に、前記第２のデータを追加する追加ステップと、
前記第１のデータの先頭から前記第２のデータの先頭までのデータのサイズを少なくとも上回るデータサイズによって、前記第２のデータの追加によって生成される通信データを分割して、暗号化処理が行なわれる前のデータである複数の平文ブロックを生成する通信データ分割ステップと、
前記第１のデータの先頭が含まれる平文ブロックから、入力ブロックを生成する第１の入力ブロック生成ステップと、
前記第１のデータの先頭が含まれる平文ブロックの後に生成される少なくとも１つ以上の後続の平文ブロックの各々に対して、前記後続の平文ブロックを、前記後続の平文ブロックの直前の平文ブロックに対応する前記暗号化データに基づいて、前記後続の平文ブロックに対応する入力ブロックを生成する第２の入力ブロック生成ステップと、
生成された複数の前記入力ブロックの各々に対して暗号化処理を実行して、複数の前記入力ブロックの各々に対応する前記暗号化データを生成する暗号化ステップと、
生成された複数の前記暗号化データを送信する送信ステップとを実行させる、暗号化プログラム。
【請求項２３】
複数のブロックに分割された暗号化データを受信して復号する復号装置としてコンピュータを機能させるための復号化プログラムであって、前記復号化プログラムは前記コンピュータに、
複数の前記暗号化データを受信するステップと、
受信した複数の前記暗号化データを電子データとして記憶手段に格納するステップと、
前記記憶手段から、複数の前記暗号化データを読み出すステップと、
複数の前記暗号化データの各々に対して復号化処理を実行して、出力ブロックを生成する出力ブロック生成ステップと、
最初に生成される出力ブロックから、平文ブロックを生成する第１の平文ブロック生成ステップと、
前記最初に生成される出力ブロックの後に生成される少なくとも１つ以上の後続の出力ブロックの各々に対して、前記後続の出力ブロックを、前記後続の出力ブロックの直前の出力ブロックに対応する前記暗号化データに基づいて変換し、前記後続の出力ブロックに対応する平文ブロックを生成する第２の平文ブロック生成ステップと、
生成された複数の前記平文ブロックを結合することにより、平文データに対応する第１のデータと、前記第１のデータの先頭から予め定められた範囲内に追加された第２のデータとを有する通信データを復元する通信データ復元ステップと、
前記通信データから前記第２のデータを除去する除去ステップとを実行させる、復号化プログラム。
【請求項２４】
請求項２２に記載の暗号化プログラムまたは請求項２３に記載の復号化プログラムを記録した、記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は暗号化したデータを通信する技術に関し、特に、ダミーデータが付加された平文データを暗号化し、暗号化されたデータを復号化する技術に関する。
【背景技術】
【０００２】
一般に、ソフトウェア、音楽データその他のデジタルデータとして配信可能なデジタルコンテンツは、特別の処理が施されていない限り、そのコンテンツのデータをコピーすることにより、コンテンツの正規の購入者以外の者が、そのコンテンツを使用（たとえば、表示、再生等）することができるという問題がある。そのような問題の発生を防ぐための方法として、デジタルコンテンツを予め暗号化しておき、正規の購入者のみが暗号化されたデジタルコンテンツを表示あるいは再生することができるようにする方法がある。
【０００３】
そのデジタルコンテンツの暗号化において、データサイズが大きいデジタルコンテンツを暗号化する場合には、処理時間が短い共通鍵暗号方式が用いられることが多い。この共通鍵暗号方式では、データを暗号化する時と暗号化されたデータを復号化する時に、同じ鍵が用いられる。この共通鍵暗号方式の一般的なものとして、たとえば、ＤＥＳ（Data Encryption Standard）などのブロック暗号がある。ブロック暗号は、暗号化するデータを６４ビットなど一定の長さのブロックに区切り、ブロック単位で暗号化あるいは復号を行なうというものである。
【０００４】
このような共通鍵暗号方式では、暗号化処理を行なう際に用いる鍵と、復号化処理を行なう際に用いる鍵とが同一であるので、データの配信側と受信側とは、同じ鍵を共有しなければならない。そのため、たとえば、デジタルコンテンツを暗号化する度に鍵を変更した場合には、配信側から受信側に正しい鍵を配送しなければならないため、どのようにしてその鍵を安全に配送するかが問題となる。その一方、鍵を変更することなく、暗号化の処理ごとに同じ鍵を用いた場合には、同一のデジタルコンテンツからは、同一の暗号データが作成されることになるため、暗号通信の強度面における信頼性が低くなるという問題もある。
【０００５】
そこで、このような問題を解決するために、たとえば特開平１０−１６１５３５号公報（特許文献１）は、通信データに対して解読されにくい暗号化処理を実行する暗号通信装置を開示する。この暗号通信装置は、入力データ列に乱数データを挿入する挿入部と、挿入部から出力されるデータ列を所定のデータサイズごとにパケット化し、各パケットごとに暗号化する暗号化部と、暗号化したパケットを送信する送信部と、暗号化されたパケットを受信する受信部と、受信したパケットを復号化する復号化部と、復号化したパケットのデータから乱数データを除去する除去部とを含む。
【０００６】
特許文献１に開示された暗号通信装置によると、データ通信時において、パケットを暗号化する際、乱数がデータの特定の場所に予め埋め込まれて、暗号化される。これにより、暗号通信装置は、暗号化処理のために同じ鍵を使用しても、異なる暗号化データを出力することができる。
【特許文献１】特開平１０−１６１５３５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１に開示された暗号通信装置によると、パケットごとに乱数データが必要なデータに付加されるため、送信データのサイズが大きくなるという問題があった。
【０００８】
本発明は、上述の問題点を解決するためになされたものであって、その目的は、送信データのサイズの増加を抑制しつつ、同一の平文データを、複数の異なるデータに暗号化することにより、データ通信を行なうことができる暗号通信システムを提供することである。
【０００９】
本発明の他の目的は、送信データのサイズの増加を抑制しつつ、同一の平文データを複数の異なるデータに暗号化することができる暗号装置を提供することである。
【００１０】
本発明の他の目的は、送信データのサイズの増加を抑制しつつ、同一の平文データを複数の異なるデータに暗号化されたデータを復号化することができる復号装置を提供することである。
【００１１】
本発明の他の目的は、送信データのサイズの増加を抑制しつつ、同一の平文データを複数の異なるデータに暗号化することができる暗号化方法を提供することである。
【００１２】
本発明の他の目的は、送信データのサイズの増加を抑制しつつ、同一の平文データを複数の異なるデータに暗号化されたデータを復号化することができる復号化方法を提供することである。
【００１３】
本発明の他の目的は、送信データのサイズの増加を抑制しつつ、同一の平文データを複数の異なるデータに暗号化することができる暗号化方法をコンピュータに実現させることができるプログラムを提供することである。
【００１４】
本発明の他の目的は、送信データのサイズの増加を抑制しつつ、同一の平文データを複数の異なるデータに暗号化されたデータを復号化することができる復号化方法をコンピュータに実現させることができるプログラムを提供することである。
【００１５】
本発明の他の目的は、送信データのサイズの増加を抑制しつつ、同一の平文データを複数の異なるデータに暗号化することができる暗号化方法をコンピュータに実現させることができるプログラムを記録した記録媒体を提供することである。
【００１６】
本発明のさらに他の目的は、送信データのサイズの増加を抑制しつつ、同一の平文データを複数の異なるデータに暗号化されたデータを復号化することができる復号化方法をコンピュータに実現させることができるプログラムを記録した記録媒体を提供することである。
【課題を解決するための手段】
【００１７】
上記の課題を解決するために、この発明のある局面に従うと、暗号通信システムは、複数のブロックに分割された暗号化データを生成して送信する暗号装置を備える。暗号装置は、平文データに対応する第１のデータの先頭から予め定められた範囲内に、第１のデータの暗号通信のための第２のデータを追加するための追加手段と、第１のデータの先頭から第２のデータの先頭までのデータのサイズを少なくとも上回るデータサイズによって、第２のデータの追加によって生成される通信データを分割して、暗号化処理が行なわれる前のデータである複数の平文ブロックを生成するための通信データ分割手段と、第１のデータの先頭が含まれる平文ブロックから、入力ブロックを生成するための第１の入力ブロック生成手段と、第１のデータの先頭が含まれる平文ブロックの後に生成される少なくとも１つ以上の後続の平文ブロックの各々に対して、後続の平文ブロックを、後続の平文ブロックの直前の平文ブロックに対応する暗号化データに基づいて変換し、後続の平文ブロックに対応する入力ブロックを生成するための第２の入力ブロック生成手段と、生成された複数の入力ブロックの各々に対して暗号化処理を実行して、複数の入力ブロックの各々に対応する暗号化データを生成するための暗号化手段と、生成された複数の暗号化データを送信するための送信手段とを含む。暗号通信システムは、複数のブロックに分割された暗号化データを受信して復号する復号装置をさらに備える。復号装置は、複数の暗号化データを受信するための受信手段と、複数の暗号化データの各々に対して復号化処理を実行して、出力ブロックを生成するための出力ブロック生成手段と、最初に生成される出力ブロックから、第１の平文ブロックを生成するための第１の平文ブロック生成手段と、最初に生成される出力ブロックの後に生成される少なくとも１つ以上の後続の出力ブロックの各々に対して、後続の出力ブロックを、後続の出力ブロックの直前の出力ブロックに対応する暗号化データに基づいて変換し、後続の出力ブロックに対応する平文ブロックを生成するための第２の平文ブロック生成手段と、生成された複数の平文ブロックを結合することにより、平文データに対応する第１のデータと、第１のデータの先頭から予め定められた範囲内に追加された第２のデータとを有する通信データを復元するための通信データ復元手段と、通信データから第２のデータを除去するための除去手段とを含む。
【００１８】
上記の暗号通信システムによると、暗号装置において、追加手段は、第１のデータ（たとえば、送信しようとする通信データ、特に暗号化される前の平文データ）の先頭から予め定められた範囲内に、第２のデータ（たとえば、乱数データ、通信装置を識別するデータ、データ処理日時等）を追加する。この追加には、第１のデータの先頭などに第２のデータを追加する場合、あるいは、第１のデータの途中に第２のデータを挿入する場合が含まれる。通信データ分割手段は、その第２のデータが追加された第１のデータを分割することにより、暗号化処理の対象となるブロックデータ（平文ブロック）を生成する。第１の入力ブロック生成手段および第２の入力ブロック生成手段が、各平文ブロックから入力ブロックを生成すると、暗号化手段は、暗号化処理（たとえば共通鍵暗号方式）により、その入力ブロックを暗号化する。このとき、入力ブロックの先頭には、第２のデータが少なくとも含まれているため、生成される暗号化データにも、その第２のデータに対応する暗号化データが含まれる。その後の入力ブロックの生成には、各平文ブロックと、既に生成された暗号化データとが使用されるため、先頭の平文ブロックに含まれる第２のデータは、その後の平文ブロックの各暗号化処理において、逐次反映される。このようにして生成された暗号化データは、暗号装置から復号装置に送信される。この送信は、たとえば、通信回線を介した送信、暗号化データをＣＤ−ＲＯＭ（Compact Disc - Read Only Memory）その他の情報記録媒体に格納して、相手先に配布すること等を含む。復号装置において、受信手段が暗号化データを受信すると、各暗号化データの受信順に、出力ブロックが生成される。この受信手段は、たとえば通信回線に接続されたデータ受信ＩＦ（Interface）、情報記録媒体からデータを読み出すための駆動装置等を含む。平文ブロックがその出力ブロックから生成されると、生成された各平文ブロックは結合されて、第１のデータと第２のデータとを有する通信データが復元される。除去手段が通信データから第２のデータを除去すると、第１のデータが抽出される。このように、暗号通信に使用する第２のデータを少なくとも最初のブロックに含まれるように埋め込み、そのブロックから暗号化データが生成された後、その他のブロックの暗号化処理は、この暗号化データを使用する。このようにすると、第２のデータを最初のブロックに挿入することにより、その他のブロックに挿入するためのデータが不要となる。したがって、データ量の増加を抑制しつつ、データ通信を行なうことができる暗号通信システムを提供することができる。
【００１９】
この発明の他の局面に従うと、暗号装置は、複数のブロックに分割された暗号化データを生成して送信する。この暗号装置は、平文データに対応する第１のデータの先頭から予め定められた範囲内に、第１のデータの暗号通信のための第２のデータを追加するための追加手段と、第１のデータの先頭から第２のデータの先頭までのデータのサイズを少なくとも上回るデータサイズによって、第２のデータの追加によって生成される通信データを分割して、暗号化処理が行なわれる前のデータである複数の平文ブロックを生成するための通信データ分割手段と、第１のデータの先頭が含まれる平文ブロックから、入力ブロックを生成するための第１の入力ブロック生成手段と、第１のデータの先頭が含まれる平文ブロックの後に生成される少なくとも１つ以上の後続の平文ブロックの各々に対して、後続の平文ブロックを、後続の平文ブロックの直前の平文ブロックに対応する暗号化データに基づいて変換し、後続の平文ブロックに対応する入力ブロックを生成するための第２の入力ブロック生成手段と、生成された複数の入力ブロックの各々に対して暗号化処理を実行して、複数の入力ブロックの各々に対応する暗号化データを生成するための暗号化手段と、生成された複数の暗号化データを送信するための送信手段とを含む。
【００２０】
上記の暗号装置によると、追加手段は、第１のデータの先頭から予め定められた範囲内に、第２のデータを追加する。通信データ分割手段は、その第２のデータが追加された第１のデータを分割することにより、暗号化処理の対象となるブロックデータ（平文ブロック）を生成する。入力ブロック生成手段が、各平文ブロックから入力ブロックを生成すると、暗号化手段は、その入力ブロックを暗号化する。このとき、ブロックの先頭には、第２のデータが少なくとも含まれるため、暗号化データは、その第２のデータに応じて生成される。その後の入力ブロックの生成には、各平文ブロックと、既に生成された暗号化データとが使用されるため、先頭の平文ブロックに含まれる第２のデータは、その後の平文ブロックの各暗号化処理において、逐次反映される。このようにすると、１つの第２のデータを追加することにより複数の暗号化データを生成することができる。また、その第２のデータを変更することにより、同一の第１のデータと同一の鍵とから、異なる暗号データを生成することができる。これにより、第１のデータに追加するデータ量を増加させることなく、暗号化データを生成することができる暗号装置を提供することができる。
【００２１】
好ましくは、第２の入力ブロック生成手段は、後続の平文ブロックと、直前の平文ブロックに対応する暗号化データとを記憶するための記憶手段と、後続の平文ブロックと、直前の平文ブロックに対応する暗号化データとを予め定められた規則に基づいて演算することにより、後続の平文ブロックに対応する入力ブロックを生成するための入力ブロック演算手段とを含む。
【００２２】
上記の暗号装置によると、先頭の平文ブロックに続く平文ブロックに対応する入力ブロックは、平文ブロックと、直前の平文ブロックに対応する暗号化データとを予め定められた規則（たとえば、所定の関数、特に逆関数を有する関数）から生成される。このようにすると、先頭の平文ブロックに第２のデータを埋め込むことにより、すべての入力ブロックについて、第２のデータが反映された暗号化データが出力される。したがって、入力ブロックごとに第２のデータを追加する必要がないため、第１のデータの暗号化に不要なデータの増加を抑制することができる。
【００２３】
好ましくは、入力ブロック演算手段は、予め定められた、逆関数を有する関数を用いて演算することにより、後続の平文ブロックと直前の平文ブロックに対応する暗号化データから、後続の平文ブロックに対応する入力ブロックを生成する。
【００２４】
上記の暗号装置によると、逆関数を有する関数を予め設定しておくことにより、平文ブロックに対応する入力ブロックが生成される。その逆関数を有する復号装置に、暗号化データを送信した場合には、その復号装置における復号化処理が可能になる。
【００２５】
好ましくは、第２の入力ブロック生成手段は、予め定められた演算処理を実行することにより、平文ブロックのサイズと同じサイズを有する入力ブロックを生成する。
【００２６】
上記の暗号装置によると、第２のデータを追加して生成された入力ブロックのサイズは、平文ブロックのサイズと同じであるため、送信対象となるデータのサイズの増加を抑制することができる。したがって、暗号化データの送信速度の遅延を防止することができる。
【００２７】
好ましくは、追加手段は、予め定められた範囲内に第２のデータを挿入する。
【００２８】
上記の暗号装置によると、第２のデータを第１のデータの先頭のブロックの所定の位置に挿入することにより、その第２のデータに応じた暗号化データを生成することができる。
【００２９】
好ましくは、暗号装置はさらに、暗号化処理に使用する鍵を更新するための更新手段を含む。
【００３０】
上記の暗号装置によると、暗号化処理に使用する鍵を適宜変更することができるため、暗号通信のセキュリティを向上させることができる。
【００３１】
好ましくは、更新手段は、暗号化処理の対象となる平文ブロックの前の平文ブロックから生成された暗号化データと、前の平文ブロックの入力ブロックと、平文ブロックと、前の平文ブロックの暗号化処理に使用された鍵との少なくとも１つのデータを記憶するための記憶手段と、少なくとも１つのデータに基づいて、新たな鍵を生成するための鍵生成手段と、新たな鍵を暗号化処理に使用する鍵として設定するための設定手段とを含む。
【００３２】
上記の暗号装置によると、同一の第１のデータから生成される各暗号化データは、異なる鍵によって暗号化処理されたものになるため、通信される暗号化データごとのセキュリティを向上することができる。
【００３３】
好ましくは、暗号装置はさらに、乱数を有するデータを第２のデータとして生成するための付加データ生成手段を含む。
【００３４】
上記の暗号装置によると、その乱数が暗号化データに反映されるため、暗号化データの通信時における不正（漏洩、改ざん等）を検出し易くすることができる。
【００３５】
好ましくは、付加データ生成手段は、乱数を生成するための乱数生成手段と、生成された乱数を記憶するための乱数記憶手段と、第２のデータのサイズと乱数のサイズとの差を有するデータを、乱数に追加することにより、第２のデータを生成するための手段を含む。
【００３６】
上記の暗号装置によると、乱数生成手段が乱数を生成すると、その乱数を含む第２のデータが生成される。これにより、乱数を含む暗号化データを生成することができるため、暗号化データの通信時における不正（漏洩、改ざん等）を検出し易くすることができる。
【００３７】
好ましくは、暗号装置はさらに、第１のデータの送信先を識別する識別データを生成するための識別データ生成手段と、識別データを有するデータを第２のデータとして生成するための手段とを含む。
【００３８】
上記の暗号装置によると、識別データが暗号化データに反映されるため、暗号化データの通信時における不正（漏洩、改ざん等）を検出し易くすることができる。
【００３９】
好ましくは、暗号装置はさらに、予め定められた処理に基づいて、第１のデータと第２のデータとを有する通信データを圧縮することにより、通信データに復元不可能なハッシュ値を生成するためのハッシュ値生成手段と、ハッシュ値を有する第２のデータを生成するための手段とを含む。
【００４０】
上記の暗号装置によると、第１のデータと第２のデータから生成されるハッシュ値が、暗号化データに反映されるため、暗号化データの通信時における不正（漏洩、改ざん等）を検出し易くすることができる。
【００４１】
この発明の他の局面に従うと、復号装置は、複数のブロックに分割された暗号化データを受信して復号する。この復号装置は、複数の暗号化データを受信するための受信手段と、複数の暗号化データの各々に対して復号化処理を実行して、出力ブロックを生成するための出力ブロック生成手段と、最初に生成される出力ブロックから、第１の平文ブロックを生成するための第１の平文ブロック生成手段と、最初に生成される出力ブロックの後に生成される少なくとも１つ以上の後続の出力ブロックの各々に対して、後続の出力ブロックを、後続の出力ブロックの直前の出力ブロックに対応する暗号化データに基づいて変換し、後続の出力ブロックに対応する平文ブロックを生成するための第２の平文ブロック生成手段と、生成された複数の平文ブロックを結合することにより、平文データに対応する第１のデータと、第１のデータの先頭から予め定められた範囲内に追加された第２のデータとを有する通信データを復元するための通信データ復元手段と、通信データから第２のデータを除去するための除去手段とを含む。
【００４２】
上記の復号装置によると、暗号化データが受信されると、第１の出力ブロック生成手段および第２の出力ブロック生成手段は、復号化処理を実行して、それぞれ出力ブロックを生成する。平文ブロックがその出力ブロックから生成されると、生成された各平文ブロックは結合されて、第１のデータと第２のデータとを有する通信データが復元される。除去手段が通信データから第２のデータを除去すると、第１のデータが抽出される。これにより、暗号通信に使用する第２のデータが最初のブロックに含まれている場合には、復号装置は、最初のブロックから復号化することにより、第１のデータを再現することができる。その結果、データ量の増加を抑制しつつ、データ通信を行なうことができる復号装置を提供することができる。
【００４３】
好ましくは、第２の平文ブロック生成手段は、先頭の出力ブロックの後に生成される後続の出力ブロックと、直前の出力ブロックに対応する暗号化データとを記憶するための記憶手段と、後続の出力ブロックと、直前の出力ブロックに対応する暗号化データとを予め定められた規則に基づいて演算することにより、後続の出力ブロックに対応する平文ブロックを生成するための平文ブロック演算手段とを含む。
【００４４】
上記の復号装置によると、平文ブロック演算手段は、所定の規則に基づいて（たとえば、予め定められた演算式、関数処理を実行することにより）、平文ブロックを算出することができる。このようにすると、平文データは暗号化データから逐次算出されるため、先頭の出力ブロックに対応する暗号化データに第２のデータが含まれている場合には、各暗号化データの受信順に復号化することにより、第１のデータを取得することができる。
【００４５】
好ましくは、平文ブロック演算手段は、予め定められた、逆関数を有する関数を用いて、後続の出力ブロックと、直前の出力ブロックに対応する暗号化データとから、後続の出力ブロックに対応する平文ブロックを生成する。
【００４６】
上記の復号装置によると、平文ブロックを生成する関数が予め定められており、その関数は逆関数を有する。したがって、その逆関数によって暗号化データが生成されている場合には、その関数によって復号化することができる。このようにすると、先頭の出力ブロックに対応する暗号化データに第２のデータが含まれている場合に、各暗号化データの受信順に復号化することにより、第１のデータを取得することができる。
【００４７】
好ましくは、復号装置はさらに、復号化処理に使用する鍵を更新するための更新手段を含む。
【００４８】
上記の復号装置によると、暗号化データの生成に使用する鍵が変更されても、その変更に応じて、復号化処理に使用する鍵も変更することができるため、暗号化データを確実に復号化することができる。
【００４９】
好ましくは、更新手段は、復号化処理の対象となる暗号化データの直前の暗号化データと、直前の暗号化データから生成された出力ブロックと、出力ブロックから生成された平文ブロックと、直前の暗号化データの復号化処理に使用された鍵との少なくとも１つのデータを記憶するための記憶手段と、少なくとも１つのデータに基づいて、新たな鍵を生成するための鍵生成手段と、新たな鍵を復号化処理に使用する鍵として設定するための手段とを含む。
【００５０】
上記の復号装置によると、復号化処理に使用する鍵を適宜変更することができるため、暗号通信のセキュリティを向上させることができる。
【００５１】
好ましくは、第２のデータは、暗号化データの送信元を識別するための識別データを含む。復号装置はさらに、予め定められたデータを記憶するための記憶手段と、第２のデータから、識別データを取得するための識別データ取得手段と、識別データと、予め定められたデータとが一致するか否かを確認するための識別データ確認手段とを含む。
【００５２】
上記の復号装置によると、暗号化データに、送信元を識別するための識別データが含まれている場合には、その識別データを取得した後に、予め準備されているデータと比較することにより、その暗号化データが正当に送信されたものであるか否かを判断することができる。このようにすると、暗号化データの通信のセキュリティを向上させることができる。
【００５３】
好ましくは、第２のデータは、予め定められた規則により算出されたハッシュ値を含む。復号装置はさらに、第２のデータからハッシュ値を取得するための取得手段と、復号化された第１のデータにハッシュ演算を実行することにより、ハッシュ値を算出するためのハッシュ値算出手段と、取得手段により取得されたハッシュ値と、ハッシュ値算出手段により算出されたハッシュ値とが一致するか否かを確認するためのハッシュ値確認手段とを含む。
【００５４】
上記の復号装置によると、暗号化データに、暗号装置等の送信元において生成されたハッシュ値が含まれている場合には、取得したそのハッシュ値と、復元された第１のデータから生成されるハッシュ値とを比較することにより、その暗号化データが正当に送信されたものであるか否かを判断することができる。このようにすると、暗号化データの通信のセキュリティを向上させることができる。
【００５５】
この発明の他の局面に従うと、暗号化方法は、複数のブロックに分割された暗号化データを生成して送信する方法である。この暗号化方法は、データが格納された記憶手段から、平文データに対応する第１のデータと、第１のデータの暗号通信のための第２のデータとを読み出すステップと、第１のデータの先頭から予め定められた範囲内に、第２のデータを追加する追加ステップと、第１のデータの先頭から第２のデータの先頭までのデータのサイズを少なくとも上回るデータサイズによって、第２のデータの追加によって生成される通信データを分割して、暗号化処理が行なわれる前のデータである複数の平文ブロックを生成する通信データ分割ステップと、第１のデータの先頭が含まれる平文ブロックから、入力ブロックを生成する第１の平文ブロック生成ステップと、第１のデータの先頭が含まれる平文ブロックの後に生成される少なくとも１つ以上の後続の平文ブロックの各々に対して、後続の平文ブロックを、後続の平文ブロックの直前の平文ブロックに対応する暗号化データに基づいて変換し、後続の平文ブロックに対応する入力ブロックを生成する第２の平文ブロック生成ステップと、生成された複数の入力ブロックの各々に対して暗号化処理を実行して、複数の入力ブロックの各々に対応する暗号化データを生成する暗号化ステップと、生成された複数の暗号化データを送信する送信ステップとを含む。
【００５６】
上記の暗号化方法によると、追加ステップにて、第１のデータの先頭から予め定められた範囲内に、第２のデータが追加される。通信データ分割ステップにて、その第２のデータが追加された第１のデータが分割され、暗号化処理の対象となるブロックデータ（平文ブロック）が生成される。第１の入力ブロック生成ステップおよび第２の入力ブロック生成ステップにて、各平文ブロックから入力ブロックが生成されると、暗号化ステップにて、各入力ブロックが暗号化される。このとき、入力ブロックの先頭には、第２のデータが少なくとも含まれるため、生成される暗号化データにも、その第２のデータに対応する暗号化データが含まれる。その後の入力ブロックの生成には、各平文ブロックと、既に生成された暗号化データとが使用されるため、先頭の平文ブロックに含まれる第２のデータは、その後の平文ブロックの各暗号化処理において、逐次反映される。このようにすると、１つの第２のデータを追加することにより複数の暗号化データを生成することができる。また、その第２のデータを変更することにより、同一の第１のデータと同一の鍵とを使用して、異なる暗号化データを生成することができる。これにより、第１のデータに追加するデータ量を増加させることなく、暗号化データを生成する暗号化方法を提供することができる。
【００５７】
この発明の他の局面に従うと、復号化方法は、複数のブロックに分割された暗号化データを受信して復号する方法である。この復号化方法は、複数の暗号化データを受信するステップと、受信した複数の暗号化データを電子データとして記憶手段に格納するステップと、記憶手段から、複数の暗号化データを読み出すステップと、複数の暗号化データの各々に対して復号化処理を実行して、出力ブロックを生成する出力ブロック生成ステップと、最初に生成される出力ブロックから、平文ブロックを生成する第１の平文ブロック生成ステップと、最初に生成される出力ブロックの後に生成される少なくとも１つ以上の後続の出力ブロックに対して、後続の出力ブロックを、後続の出力ブロックの直前の出力ブロックに対応する暗号化データに基づいて変換し、後続の出力ブロックに対応する平文ブロックを生成する第２の平文ブロック生成ステップと、生成された複数の平文ブロックを結合することにより、平文データに対応する第１のデータと、第１のデータの先頭から予め定められた範囲内に追加された第２のデータとを有する通信データを復元する通信データ復元ステップと、通信データから第２のデータを除去する除去ステップとを含む。
【００５８】
上記の復号化方法によると、分割された複数の暗号化データが受信されると、各暗号化データに応じた出力ブロックが生成される。平文ブロックがその出力ブロックから生成されると、生成された各平文ブロックは結合されて、第１のデータと第２のデータとを有する通信データが復元される。除去ステップにて、通信データから第２のデータが除去されると、第１のデータが抽出される。このようにすると、暗号通信に使用する第２のデータが最初のブロックに含まれている場合には、各暗号化データについて最初のブロックから復号化することにより、第１のデータを再現することができる。その結果、データ量の増加を抑制しつつ、データ通信を行なうことができる復号化方法を提供することができる。
【００５９】
この発明の他の局面に従うと、暗号化プログラムは、複数のブロックに分割された暗号化データを生成して送信する暗号装置として、コンピュータを機能させる。この暗号化プログラムはコンピュータに、データが格納された記憶手段から、平文データに対応する第１のデータと、第１のデータの暗号通信のための第２のデータとを読み出す準備ステップと、第１のデータの先頭から予め定められた範囲内に、第２のデータを追加する追加ステップと、第１のデータの先頭から第２のデータの先頭までのデータのサイズを少なくとも上回るデータサイズによって、第２のデータの追加によって生成される通信データを分割して、暗号化処理が行なわれる前のデータである複数の平文ブロックを生成する通信データ分割ステップと、第１のデータの先頭が含まれる平文ブロックから、入力ブロックを生成する第１の入力ブロック生成ステップと、第１のデータの先頭が含まれる平文ブロックの後に生成される少なくとも１つ以上の後続の平文ブロックの各々に対して、後続の平文ブロックを、後続の平文ブロックの直前の平文ブロックに対応する暗号化データに基づいて、後続の平文ブロックに対応する入力ブロックを生成する第２の入力ブロック生成ステップと、生成された複数の入力ブロックの各々に対して暗号化処理を実行して、複数の入力ブロックの各々に対応する暗号化データを生成する暗号化ステップと、生成された複数の暗号化データを送信する送信ステップとを実行させる。
【００６０】
上記のプログラムがコンピュータにおいて実行されると、準備ステップにて、第１のデータと第２のデータとが、記憶手段（たとえば、固定ディスク装置等）から読み出される。追加ステップにて、第１のデータの先頭から予め定められた範囲内に、第２のデータが追加される。通信データ分割ステップにて、その第２のデータが追加された第１のデータが分割され、暗号化処理の対象となるブロックデータ（平文ブロック）が生成される。第１の入力ブロック生成ステップおよび第２の入力ブロック生成ステップにて、各平文ブロックに応じた入力ブロックが生成されると、暗号化ステップにて、各入力ブロックが暗号化される。このとき、ブロックの先頭には、第２のデータが少なくとも含まれるため、生成される暗号化データにも、その第２のデータに対応する暗号化データが含まれる。その結果、その後の入力ブロックの生成には、各平文ブロックと、既に生成された暗号化データとが使用されるため、先頭の平文ブロックに含まれる第２のデータは、その後の平文ブロックの各暗号化処理において、逐次反映される。このようにすると、１つの第２のデータを追加することにより複数の暗号化データを生成することができる。また、その第２のデータを変更することにより、同一の第１のデータと同一の鍵とから、異なる暗号データを生成することができる。これにより、第１のデータに追加するデータ量を増加させることなく、暗号化データを生成する暗号装置として、コンピュータを機能させることができるプログラムを提供することができる。
【００６１】
この発明の他の局面に従うと、復号化プログラムは、複数のブロックに分割された暗号化データを受信して復号する復号装置としてコンピュータを機能させる。この復号化プログラムはコンピュータに、複数の暗号化データを受信するステップと、受信した複数の暗号化データを電子データとして記憶手段に格納するステップと、記憶手段から、複数の暗号化データを読み出すステップと、複数の暗号化データの各々に対して復号化処理を実行して、出力ブロックを生成する出力ブロック生成ステップと、最初に生成される出力ブロックから、平文ブロックを生成する第１の平文ブロック生成ステップと、最初に生成される出力ブロックの後に生成される少なくとも１つ以上の後続の出力ブロックの各々に対して、後続の出力ブロックを、後続の出力ブロックの直前の出力ブロックに対応する暗号化データに基づいて変換し、後続の出力ブロックに対応する平文ブロックを生成する第２の平文ブロック生成ステップと、生成された複数の平文ブロックを結合することにより、平文データに対応する第１のデータと、第１のデータの先頭から予め定められた範囲内に追加された第２のデータとを有する通信データを復元する通信データ復元ステップと、通信データから第２のデータを除去する除去ステップとを実行させる。
【００６２】
上記のプログラムがコンピュータにおいて実行されると、コンピュータは、受信した暗号化データを記憶手段に電子データとして格納する。コンピュータは、各暗号化データについて復号化処理を実行して、出力ブロックを生成する。平文ブロックがその出力ブロックから生成されると、生成された各平文ブロックは結合されて、第１のデータと第２のデータとを有する通信データが復元される。除去ステップにて、通信データから第２のデータが除去されると、第１のデータが抽出される。これにより、暗号通信に使用する第２のデータが最初のブロックに含まれている場合には、各暗号化データについて最初のブロックから復号化することにより、第１のデータを再現することができる。その結果、データ量の増加を抑制しつつ、データ通信を行なうことができる復号装置として、コンピュータを機能させることができるプログラムを提供することができる。
【００６３】
この発明のさらに他の局面に従うと、記録媒体は、上記の暗号化プログラムまたは上記の復号化プログラムを記録した媒体である。暗号化プログラムは、複数のブロックに分割された暗号化データを生成して送信する暗号装置として、コンピュータを機能させる。復号化プログラムは、複数のブロックに分割された暗号化データを受信して復号する復号装置としてコンピュータを機能させる。
【００６４】
上記の記録媒体がコンピュータに装着されると、コンピュータを暗号装置として機能させるプログラムが実行された場合には、そのコンピュータは、第１のデータに追加するデータ量を増加させることなく、暗号化データを生成する暗号装置として機能することができる。また、コンピュータを復号装置として機能させるプログラムが実行された場合には、そのコンピュータは、第１のデータに追加するデータ量を増加させることなく生成された暗号化データを復号する復号装置として機能することができる。
【発明の効果】
【００６５】
本発明に係る暗号通信システムによると、暗号通信に必要な第２のデータを第１のデータの少なくとも先頭のブロックに含まれるように付加して、順次暗号化された各ブロックが暗号装置から復号装置に送信される。このようにすると、すべてのブロックに第２のデータのようなデータを付加する必要がなくなるため、第１のデータに付加されるデータ（たとえば、ダミーデータ、識別データ等）を増加させることなく暗号化処理および復号化処理を実行することができる。
【００６６】
本発明に係る暗号装置によると、暗号通信に必要な第２のデータを第１のデータの少なくとも先頭のブロックに含まれるように付加して、各ブロックを順次暗号化する。このようにすると、すべてのブロックに第２のデータのようなデータを付加する必要がなくなるため、第１のデータに付加されるデータを増加させることなく暗号化処理を実行することができる。
【００６７】
本発明に係る復号装置によると、暗号通信に必要な第２のデータを含む先頭の暗号化データから復号化して、その復号化されたデータを使用してさらに暗号化データが復号化される。このようにすると、すべてのブロックに第２のデータのようなデータを付加する必要がなくなるため、第１のデータに付加されるデータを増加させることなく生成された暗号化データを復号化することができる。
【００６８】
本発明に係る暗号化方法によると、暗号通信に必要な第２のデータは、第１のデータの少なくとも先頭のブロックに含まれるように付加される。各ブロックは、順次暗号化される。このようにすると、すべてのブロックに第２のデータのようなデータを付加する必要がなくなるため、第１のデータに付加されるデータを増加させることなく暗号化処理を実行することができる。
【００６９】
本発明に係る復号化方法によると、暗号通信に必要な第２のデータを含む先頭の暗号化データから復号化される。その復号化されたデータを使用して、後に続く暗号化データが、さらに復号化される。このようにすると、すべてのブロックに第２のデータのようなデータを付加する必要がなくなるため、第１のデータに付加されるデータを増加させることなく生成された暗号化データを復号化することができる。
【００７０】
本発明に係る暗号化プログラムによると、コンピュータは、すべてのブロックに第２のデータのようなデータを付加する必要がなくなるため、第１のデータに付加されるデータを増加させることなく暗号化処理を実行することができる。その結果、処理の遅延を防止したり、第２のデータの生成処理を少なくすることができる。
【００７１】
本発明に係る復号化プログラムによると、コンピュータは、すべてのブロックに第２のデータのようなデータが付加されていない暗号化データを、順次復号化することができる。
【００７２】
本発明に係る記録媒体によると、コンピュータは、第１のデータに付加されるデータの増加を抑制しつつ、第１のデータの暗号化処理、あるいは、暗号化データの復号化処理を実行することができる。したがって、これらの処理の遅延を防止することができる。
【発明を実施するための最良の形態】
【００７３】
以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
【００７４】
＜第１の実施の形態＞
図１を参照して、本発明の第１の実施の形態に係る暗号通信システムついて説明する。図１は、本実施の形態に係る暗号通信システムを構成する暗号装置１００と、通信回線１９０に接続された復号装置１５０との概念的な構成を表わす機能ブロック図である。
【００７５】
この暗号装置１００は、データを記憶するための記憶部１０２と、予め定められた基準に基づいて所定のデータに乱数を付加するための乱数付加部１０３と、予め定められた基準に基づいて入力ブロックを算出するための入力ブロック算出部１０６と、予め定められた処理に基づいてデータを暗号化するための暗号化部１０７と、データを送信するためのデータ送信部１０８とを含む。
【００７６】
なお、ここでは、「乱数」とは、データ列にどのような規則性も存在しない、ランダムなデータ列をいう。この乱数は、ある種となるデータから予測することが難しい規則に基づいて生成されるデータ列である「擬似乱数」も含む。たとえば、現在時刻を種として擬似乱数列を生成させ、その一部のデータ列を乱数としてもよい。
【００７７】
この暗号装置１００において、乱数付加部１０３と、入力ブロック算出部１０６と、暗号化部１０７との機能は、後に詳述するように、たとえばＣＰＵ（Central Processing Unit）１１０が所定のプログラムを実行することによって実現される。
【００７８】
図１を再び参照して、復号装置１５０は、記憶部１２２と、予め定められた基準に基づいて所定のデータから乱数を除去するための乱数除去部１２３と、予め定められた基準に基づいて平文ブロックを算出するための平文ブロック算出部１２６と、暗号化されたデータを所定の処理に基づいて復号化するための復号化部１２７と、外部からデータを受信するためのデータ受信部１２８とを含む。
【００７９】
この復号装置１５０において、乱数除去部１２３と、平文ブロック算出部１２６と、復号化部１２７との機能は、後述するように、たとえばＣＰＵ１２０が所定のプログラムを実行することによって実現される。
【００８０】
このような構成を有する暗号通信システムにおいて、暗号装置１００は、記憶部１０２に保存されているコンテンツ（平文データ）に対して暗号化処理を実行し、暗号化したデータを通信回線１９０を介して復号装置１５０に送信する。復号装置１５０は、受信した暗号データを所定の復号化処理を実行して復号化する。これらの処理については、後述する。
【００８１】
ここで、「コンテンツ」とは、あらゆる種類のデータを対象とすることができる。対象となる主なデータとしては、不正利用を防ぎたいデータ、たとえば、著作権などがあるデータ、課金情報その他のデータである。より具体的には、たとえば、音楽や画像、動画、電子書籍などのデータ、あるいは、携帯電話、ＰＣ（Personal Computer）等のコンテンツを利用することができる装置内で実行可能なプログラムなどである。以下では、このようなコンテンツが利用されるデータそのままの状態を「平文データ」と呼び、コンテンツが変換されて、暗号化されたものを「暗号化データ」と呼ぶ。
【００８２】
また、「送信」とは、データを他の機器に送ることであり、その手段は問わない。たとえば、通信回線１９０その他の通信ネットワークを介して、データを受信装置へ送ってもよい。あるいは、ＣＤ−ＲＯＭ（Compact Disc - Read Only Memory）やＤＶＤ（Digital Versatile Disc）その他の情報記録媒体にデータを格納し、その媒体を別の装置の駆動装置に装着してもよい。
【００８３】
「受信」とは、データを他の機器から受け取ることをいい、上述の送信方法に応じて受信手段が決まる。この受信手段には、通信回線に接続可能なインターフェースであってもよいし、上述の情報記録媒体に格納されたデータを読み出すことができる駆動装置であってもよい。
【００８４】
「暗号」とは、暗号化されていない通常のデータ（平文データ）を何らかの規則にしたがって変換し、そのままでは第３者にとって何を意味しているかわからないデータ（暗号化データ）に変換する処理をいう。この場合、何らかの規則（最初の規則と同一でなくてもよい）によって、暗号文を元の平文に復元できる復号処理が存在する。変換時に「鍵」を用いて暗号処理を行なうのが一般的である。このような処理には、復号処理に同じ「鍵」を用いて復号できる共通鍵暗号や、決められたペアの２つの鍵によって暗号処理、復号処理が可能である公開鍵暗号などがある。共通暗号方式としては、ＤＥＳ方式、ＡＥＳ（Advance Encrption Standard）方式その他の方法がある。公開鍵暗号方式では、ＲＳＡ暗号（Rivest - Shamir - Adleman Scheme）、Ｅｌｇａｍａｌ暗号などがある。以下の説明では、ブロック単位で処理を行なう共通鍵暗号について説明する。
【００８５】
「鍵」は、暗号方式で利用可能な任意のデータであり、暗号化を行なうごとに１つ割り当てられる。たとえば、６４ビット鍵のＤＥＳ方式であれば、６４ビット長のデータとなる。
【００８６】
なお、「鍵」は、ある決められた変換処理によって、暗号方式で利用される鍵を算出できるようなデータであってもよい。コンテンツこのコンテンツ鍵を用いて暗号化コンテンツ３０５を生成する。この暗号化コンテンツ３０５は、コンテンツ全体が必ずしも暗号化されていなくてもよく、「鍵」なしで復号装置においてコンテンツが復号されることがなければよいとする。「暗号化」は、暗号化チップなどのハードウェアを使って暗号化してもよいし、ソフトウェアで暗号化してもよい。
【００８７】
図２を参照して、本実施の形態に係る暗号装置１００あるいは復号装置１５０を実現する一例であるコンピュータ２００について説明する。図２は、コンピュータ２００のハードウェア構成を表わすブロック図である。
【００８８】
図２に示すように、このコンピュータ２００は、バスによって相互に接続された、ＣＰＵ２１０と、モニタ２２０と、マウス２３０と、キーボード２４０と、メモリ２５０と、固定ディスク２６０と、ＦＤ（Flexible Disc）駆動装置２７０と、ＣＤ−ＲＯＭ（Compact Disc - Read Only Memory）駆動装置２８０と、通信ＩＦ（Interface）２９０とを含む。ＦＤ駆動装置２７０には、ＦＤ２７２が装着される。ＣＤ−ＲＯＭ駆動装置２８０には、ＣＤ−ＲＯＭ２８２が装着される。
【００８９】
モニタ２２０は、通常、グラフィックチップやＶＲＡＭ（Video Random Access Memory）などと組み合わされて実現される。ＣＰＵ２１０は、ＶＲＡＭ上のデータを表示信号に変換して、液晶ディスプレイその他のモニタ２２０に送信する。モニタ２２０は、表示信号を画像として表示する。
【００９０】
ユーザの指示を入力する手段としては、キーボード２４０、マウス２３０、ボタン（図示しない）等がある。ユーザの指示は、バスを介してコンピュータ２００のＣＰＵ２１０に入力される。この他にも各種操作機器、マイクによる音声入力など、様々な入力手段を使用することができる。
【００９１】
キーボード２４０は、押下されたキーを検出する機械的もしくは電子的なスイッチなどを含む。マウス２３０は、マウスボタンの押下状態を検出するメカニカルもしくは電子的なスイッチなどと、マウスの縦と横の相対移動距離を検出するメカニカルもしくは電子的なセンサを含む。
【００９２】
メモリ２５０は、たとえば、ＤＲＡＭ（Dynamic Random Access Memory）やフラッシュメモリなどのメモリデバイスを含む。なお、メモリ２５０は、これらに限られず、たとえば、ＣＰＵ２１０内部に含まれるメモリやレジスタなどであってもよい。
【００９３】
通信ＩＦ２９０は、たとえば、ネットワークインターフェースカードなどを含む。コンピュータ２００は、この通信ＩＦ２９０を介して、無線や有線などにより接続された他の通信装置とデータ通信を行なうことができる。
【００９４】
なお、このような構成に加えて、コンピュータ２００は、音声を出力するための音声出力部（たとえばサウンドカード等）を含んでもよい。この場合、コンピュータ２００にスピーカ（図示しない）を接続することにより、そのスピーカは、音声信号を音声に変換して出力することができる。出力される音声は、単波長の単純な音の場合もあるし、音楽や人間の音声など複雑な場合もある。出力する音声が予め決まっている場合、送られて来るデータは音声信号ではなく、単なるオン、オフの動作制御信号だけという場合もある。
【００９５】
このような構成を有するコンピュータが、図１に示した暗号装置１００として使用された場合には、ＣＰＵ２１０は、乱数付加部１０３として、メモリ２５０、固定ディスク２６０等の記憶装置に格納されているデータを読み出して所定の乱数をそのデータに付加する。
【００９６】
また、ＣＰＵ２１０は、入力ブロック算出部１０６として、メモリ２５０、固定ディスク２６０等の記憶装置（以下、「記憶装置」と称す）に格納されているデータを読み出し、所定の処理を実行することにより、そのデータを複数のブロックに分割する。
【００９７】
さらに、ＣＰＵ２１０は、暗号化部１０７として、分割されたブロックを所定の暗号化方法に基づいてそれぞれ暗号化する。この暗号化されたデータは、記憶装置に再び格納される。
【００９８】
一方、図２に示したコンピュータ２００が図１における復号装置１５０として使用される場合には、ＣＰＵ２１０は、復号化部１２７として、記憶装置に格納されている暗号化データを読み出して復号化する。
【００９９】
また、ＣＰＵ２１０は、平文ブロック算出部１２６として、復号化された各ブロックと予め記憶されている復号化キーとを使用して平文ブロックを算出する。この算出されたデータは、記憶装置に格納される。
【０１００】
さらに、ＣＰＵ２１０は、乱数除去部１２３として、そのようにして復号化された平文ブロックを記憶装置から読み出して、そのブロックに付加された乱数を除去する。乱数が除去されたデータは、記憶装置に再び格納される。
【０１０１】
このように、上述した各部における処理は、その処理を実行するソフトウェアをＣＰＵ２１０に実行させることによっても、実現することができる。このようなソフトウェアは、固定ディスク２６０その他のハードウェアに予め記憶されている場合もあれば、ＣＤ−ＲＯＭ２８２その他の記録媒体に格納されて流通し、ＣＤ−ＲＯＭ駆動装置２８０その他の装置によって、その記録媒体から読み取られてソフトウェアを格納する固定ディスク２６０に一旦格納される場合もある。そのソフトウェアは、固定ディスク２６０からメモリ２５０に読み出されて、ＣＰＵ２１０により実行される。図２に示したコンピュータ２００のハードウェア構成は、一般的なものである。したがって、本発明の最も本質的な部分は、固定ディスク２６０、ＣＤ−ＲＯＭ２８２その他の記録媒体に格納されたソフトウェアであるとも言える。
【０１０２】
なお、図２に示したコンピュータ２００自体の動作は周知であるので、その詳細な説明は、繰り返さない。
【０１０３】
図３を参照して、本実施の形態に係る暗号装置１００の記憶部１０２に格納されるデータについて説明する。図３（Ａ）は、暗号化して通信するための平文データＰに乱数Ｒが付加されたブロックＢ３００を表わす図である。図３（Ｂ）は、暗号装置１００において平文データＰが暗号化処理された後に、記憶部１０２に格納される暗号化ブロックを表わす図である。
【０１０４】
図３（Ａ）に示すように、平文データＰを暗号化する場合には、暗号化処理の前にそのデータＰに乱数Ｒが付加されて一時的に格納される。このとき、付加される位置は、ブロックＢ３００が所定のデータサイズを有するブロックに分割されたとき、先頭のブロックに乱数Ｒの先頭が少なくとも含まれる位置であればよい。
【０１０５】
その後、図３（Ｂ）に示すように、暗号装置１００が所定の暗号化処理に基づいて、そのブロックＢ３００を暗号化すると、ブロック「Ｃ０」，「Ｃ１」，「Ｃ２」等が生成され、記憶部１０２に再び格納される。
【０１０６】
図４を参照して、本実施の形態に係る復号装置１５０の記憶部１２２に格納されるデータについて説明する。図４（Ａ）は、復号装置１５０がデータ受信部１２８を介して受信した暗号化データの格納の一態様を表わす図である。図４（Ｂ）は、その暗号化データを所定の条件に基づいて復号化することにより生成されたブロックＢ３００の格納の一態様を表わす図である。
【０１０７】
図４（Ａ）に示すように、復号装置１５０が暗号装置１００から暗号化データを受信すると、受信データは記憶部１２２に順次格納される。このように格納されるデータ（すなわち、ブロック「Ｃ０」，「Ｃ１」，「Ｃ２」）は、図３（Ｂ）に示したデータと同じデータである。
【０１０８】
図４（Ｂ）に示すように、所定の復号化処理に基づいて暗号化データを復元すると、乱数Ｒと平文データＰとを含むブロックＢ３００が生成され、記憶部１２２に格納される。このようにして、復号装置１５０において生成されるブロックＢ３００は、暗号装置１００において生成されるブロックＢ３００（図３（Ａ））と同じ内容を含む。
【０１０９】
ここで、図５を参照して、本実施の形態に係る暗号装置１００における暗号化処理の概念について説明する。以下では、通信データとして平文データＰを暗号化して送信する場合について、図１を参照しつつ説明する。
【０１１０】
暗号装置１００の記憶部１０２に格納されているデータＰを暗号化して送信する場合、暗号装置１００は、予め定められた処理条件に基づいて、その平文データＰに乱数Ｒを付加する。乱数Ｒのサイズは任意の予め定められた値である。この乱数Ｒが付加される位置は、たとえば平文データＰの前方部であるが、これに限られない。この位置は、付加の前に予め定められている。ただし、この乱数が付加される位置は、通信データが複数のブロックに分割される際、先頭のブロックに存在する位置であればよい。
【０１１１】
たとえば、１つのブロックのサイズがＸビットである場合、乱数Ｒは先頭からＸビットまでの位置に埋め込まれる。この場合、たとえば、先頭１ブロック目全体が乱数列となっても、すなわち、乱数ＲのサイズがＸビットであってもよい。あるいは、乱数ＲのサイズがＸビットより大きく、乱数Ｒの一部が２番目のブロックにまたがっていてもよい。
【０１１２】
このようにして、乱数Ｒが付加された平文データＰを含む平文ブロックは、予め定められたサイズに分割され、複数のブロックが生成される。
【０１１３】
このブロックの中の最初のブロックは、入力ブロック「Ｑ１」として、暗号化部１０７に入力される。暗号化部１０７は、入力ブロック「Ｑ１」に対して、暗号化鍵Ｋと暗号化処理関数Ｆとに基づいて暗号化処理を実行する。その結果、入力ブロック「Ｑ１」に対応する暗号化データ「Ｃ０」が生成される。
【０１１４】
この暗号化データ「Ｃ０」は、記憶部１０２の所定のデータ領域に格納される一方、次の暗号化データ（すなわち「Ｃ１」）を生成するための入力データとして、入力ブロック算出部１０６に入力される。入力ブロック算出部１０６は、入力された暗号化データ「Ｃ０」と、暗号化処理の実行前に生成された平文ブロック「Ｐ１」とに基づいて、所定の演算処理を実行することにより入力ブロック「Ｑ１」を生成する。この演算は、入力ブロック算出関数Ｆａの実行により行なわれる。
【０１１５】
ここで、入力ブロック算出関数Ｆａについて説明する。この関数Ｆａは、入力ブロック「Ｑ１」と暗号化データ「Ｃ０」と平文ブロック「Ｐ１」との関係を、たとえばＱ（１）＝Ｆａ（Ｃ０，Ｐ１）と表わす。
【０１１６】
このような関数Ｆａは、入力ブロック「Ｑ１」と暗号化データ「Ｃ０」と平文ブロック「Ｐ１」との関係を、Ｐ（１）＝Ｇａ（Ｃ０，Ｑ１）と表わす逆関数Ｇａが存在する関数であればよい。このような関数には、たとえば、関数Ｆａおよびその逆関数Ｇａともに、排他的論理和の演算を実行することができる関数が含まれる。
【０１１７】
図５を再び参照して、入力ブロック「Ｑ１」は入力ブロック算出部から暗号化部１０７に出力され、暗号化処理関数Ｆｂの実行により、暗号化データ「Ｃ１」が生成される。
【０１１８】
このようにして生成された暗号化データ「Ｃ１」は、記憶部１０２に格納されている暗号化データ「Ｃ０」に続けて記憶されるとともに、その次の暗号化データ（すなわち「Ｃ２」）を生成するために入力ブロック算出部１０６に入力される。
【０１１９】
入力ブロック算出部１０６は、暗号化データ「Ｃ１」と、暗号化処理の実行前に生成された平文ブロック「Ｐ２」とに対して、第１の関数Ｆａを実行することにより、入力ブロック「Ｑ２」を生成する。
【０１２０】
入力ブロック算出部１０６から出力される入力ブロック「Ｑ２」は、暗号化部１０７に入力される。暗号化部１０７は、暗号鍵Ｋと暗号化処理関数Ｆｂとに基づいて所定の暗号化処理を実行することにより、入力ブロック「Ｑ２」の暗号化データ「Ｃ２」を生成する。このようにして生成された暗号化データ「Ｃ２」は、記憶部１０２に格納される。このときの格納の態様は特に限られず、既に格納されている他の暗号化データ「Ｃ１」に続けて保存されてもよい。この暗号化データ「Ｃ２」はさらに、後続のブロックを暗号化するために、入力ブロック算出部１０６に入力される。
【０１２１】
ここで、暗号化処理関数Ｆｂについて説明する。この関数Ｆｂによると、Ｘビット長の入力ブロックと鍵Ｋとから、Ｘビット長の暗号化データが出力される。本実施の形態では、毎回同じ鍵Ｋを用いて暗号化処理が行なわれる。たとえば、ｎ番目の入力ブロック「Ｑｎ」と、暗号化データ「Ｃｎ」と、鍵Ｋとの関係は、Ｃｎ＝Ｆｂ（Ｑｎ，Ｋ）、ここで、ｎ＝０，１，２，３…、と表わされる。
【０１２２】
このように、図５を参照して詳述したように、最初のブロックの平文データ「Ｐ０」が同一であっても、暗号通信ごとに、異なる乱数Ｒが平文データに付加されるため、暗号化データ「Ｃ０」は、暗号化処理ごとに異なる値が出力される。
【０１２３】
次のブロックを暗号するとき、暗号装置１００は、平文ブロック「Ｐ１」と先に生成された暗号化データ「Ｃ０」とを関数Ｆａにより演算して、入力ブロック「Ｑ１」を生成し、暗号化する。このブロック「Ｑ１」の算出には、暗号化処理ごとに異なる結果となる暗号化データ「Ｃ０」が用いられる。したがって、平文ブロック「Ｐ１」が同じであっても、生成される暗号化データ「Ｃ１」は、暗号化処理ごとに異なる。以下の平文ブロックも同様に暗号化処理を実行することができる。このようにすると、暗号装置１００は、暗号化処理のために同一の鍵を使用しても、暗号化処理ごとに、内容の異なる暗号化データを生成することができる。
【０１２４】
次に、図６を参照して、本実施の形態に係る復号装置１５０における暗号化データの復号化処理について説明する。
【０１２５】
暗号装置１００その他の暗号装置によって暗号化されたデータが通信回線を介して送信されると、そのデータを受信した復号装置１５０は、受信データを記憶部１２２に記憶する。このデータは、たとえば図４（Ａ）に示したように、暗号化データ「Ｃ０」，「Ｃ１」，「Ｃ２」などである。
【０１２６】
このようにして格納されているデータのうち、先頭のデータである暗号化データ「Ｃ０」は、復号化部１２７によって最初に読み出される。このデータは、暗号鍵Ｋと復号化処理関数Ｇｂとに基づいて復号化される。その結果、出力ブロック「Ｑ０」が生成される。このデータは、最初の平文ブロック「Ｐ０」として、記憶部１２２に格納される。
【０１２７】
ここで、復号化処理関数Ｇｂについて説明する。この復号化処理関数Ｇｂは、図５において示した暗号化処理関数Ｆｂの逆関数である。本実施の形態における暗号化方式が共通鍵暗号方式であるため、復号装置１５０が使用する鍵は、暗号装置１００が使用する鍵Ｋと同一である。したがって、出力ブロック「Ｑｎ」と、暗号化データ「Ｃｎ」と、鍵Ｋとの関係は、Ｑｎ＝Ｇｂ（Ｃｎ，Ｋ）、ただし、ｎ＝０，１，２，・・・、と表わされる。
【０１２８】
図６を再び参照して、暗号化データ「Ｃ１」が、記憶部１２２から復号化部１２７によって読み出される。復号化部１２７は、暗号化データ「Ｃ１」に対して、暗号鍵Ｋと復号化処理関数Ｇｂとを使用して、所定の復号化処理を実行する。その結果、出力ブロック「Ｑ１」が生成される。
【０１２９】
復号化部１２７から出力される出力ブロック「Ｑ１」は、平文ブロック算出部１２６に入力される。平文ブロック算出部１２６は、記憶部１２２に格納されている暗号化データ「Ｃ０」と平文ブロック算出関数Ｇａとを使用して、出力ブロック「Ｑ１」に対して所定の処理を実行する。その結果、平文ブロック「Ｐ１」が生成される。
【０１３０】
ここで、平文ブロック算出関数Ｇａについて説明する。このＧａは、図５において示した入力ブロック算出関数Ｆａの逆関数である。したがって、たとえば、平文ブロック「Ｐ１」と、暗号化データ「Ｃ０」と、出力ブロック「Ｑ１」との関係は、Ｐ１＝Ｇａ（Ｃ０，Ｑ１）と表わされる。
【０１３１】
図６を再び参照して、復号化部１２７は、記憶部１２２から暗号化データ「Ｃ２」を読み出す。復号化部１２７は、暗号鍵Ｋと復号化処理関数Ｇｂとを使用して、暗号化データ「Ｃ２」に対して所定の復号化処理を実行する。その結果、出力ブロック「Ｑ２」が生成される。
【０１３２】
復号化部１２７から出力される出力ブロック「Ｑ２」は、平文ブロック算出部１２６に入力される。平文ブロック算出部１２６は、その出力ブロック「Ｑ２」と、記憶部１２２から読み出した暗号化データ「Ｃ１」とを使用して、所定の平文ブロック算出関数Ｇａを実行する。その結果、平文ブロック「Ｐ２」が生成される。平文ブロック算出部１２６は、生成した平文ブロック「Ｐ２」を記憶部１２２に格納する。なお、このときの格納の態様は特に限られず、たとえば、既に格納されている他の暗号化データ「Ｃ１」に続けて格納されてもよいし、別の領域に格納されてもよい。
【０１３３】
図７を参照して、本実施の形態に係る暗号装置１００の制御構造について説明する。図７は、暗号装置１００を実現するＣＰＵが実行する処理の手順を表わすフローチャートである。
【０１３４】
ステップＳ７０２にて、暗号装置１００のＣＰＵ１１０は、乱数付加部１０３として、所定の乱数を発生させ、その乱数を平文データの予め定められた位置に付加する。
【０１３５】
ステップＳ７０４にて、ＣＰＵ１１０の入力ブロック算出部１０６は、先頭の１ブロック目のデータから入力ブロックを作成する。
【０１３６】
ステップＳ７０６にて、ＣＰＵ１１０の暗号化部１０７は、作成された入力ブロックを所定の条件に基づいて暗号化する。
【０１３７】
ステップＳ７０８にて、ＣＰＵ１１０は、すべての平文データを暗号化したか否かを判断する。この判断は、たとえば生成された入力ブロックの数に対して、暗号化処理を実行した回数を比較することにより行なわれる。したがって、たとえば、暗号化処理の回数が、生成された入力ブロックの数よりも少ない場合には、すべての平文データは暗号化されていないと判断されることになる。すべての平文データを暗号化したと判断すると（ステップＳ７０８にてＹＥＳ）、処理は、ステップＳ７１２に移される。そうでない場合には（ステップＳ７０８にてＮＯ）、処理は、ステップＳ７１０に移される。
【０１３８】
ステップＳ７１０にて、ＣＰＵ１１０の入力ブロック算出部１０６は、平文データと、暗号化データと、次のブロックとを使用して、予め定められた処理を実行して、次の入力ブロックを作成する。
【０１３９】
ステップＳ７１２にて、ＣＰＵ１１０は、暗号化したデータを記憶部１０２に記憶する。
【０１４０】
図８を参照して、本実施の形態に係る復号装置の制御構造について説明する。図８は、復号装置１５０を実現するＣＰＵ１２０が実行する処理の手順を表わすフローチャートである。
【０１４１】
ステップＳ８０２にて、復号装置１５０のＣＰＵ１２０は、通信回線を介して受信した暗号化データを記憶部１２２に保存する。
【０１４２】
ステップＳ８０４にて、ＣＰＵ２１０の復号化部１２７は、先頭の１ブロック目の暗号化データを復号化する。その結果、出力ブロックが生成される。
【０１４３】
ステップＳ８０６にて、ＣＰＵ２１０の平文ブロック算出部１２６は、生成された出力ブロックから平文ブロックを生成する。
【０１４４】
ステップＳ８０８にて、ＣＰＵ２１０は、すべての暗号化データを復号化したか否かを判断する。この判断は、たとえば記憶部１２２に格納されている暗号化データの数と、復号化処理を実行した回数とを比較することにより行なわれる。したがって、たとえば、復号化処理の回数が、記憶されている暗号化データの数よりも少ない場合には、すべての暗号化データは復号化されていないと判断されることになる。すべての暗号化データを復号化したと判断すると（ステップＳ８０８にてＹＥＳ）、処理は、ステップＳ８１２に移される。そうでない場合には（ステップＳ８０８にてＮＯ）、処理は、ステップＳ８１０に移される。
【０１４５】
ステップＳ８１０にて、ＣＰＵ２１０の復号化部１２７は、暗号鍵と、暗号化データと、次のブロックのデータに基づいて、未処理の暗号化データを復号化する。
【０１４６】
ステップＳ８１２にて、ＣＰＵ２１０は、復号化して生成された平文データを記憶部１２２の所定のデータ領域に格納する。
【０１４７】
以上のような構造およびフローチャートに基づく、本実施の形態に係る暗号装置１００および復号装置１５０を有する暗号通信システムの動作について、暗号化処理と復号化処理とに分けて説明する。以下では、利用者Ａが暗号装置１００を使用して、復号装置１５０を使用する利用者Ｂに通信データを送信する場合について説明する。
【０１４８】
［暗号化処理］
利用者Ａが暗号送信したい通信データを暗号装置１００に保存して、予め定められた手続を実行して（たとえば、送信プログラムの実行等）、所定の暗号送信の指令を入力する。暗号装置１００は、その指令に応答して、所定の暗号化処理プログラムを実行し、乱数を発生し、通信データにその乱数を付加する（ステップＳ７０２）。
【０１４９】
暗号装置１００は、そのデータを所定のサイズのブロックに分割し、入力ブロックを生成する（ステップＳ７０４）。暗号装置１００は、各ブロックごとに暗号化処理を実行し（ステップＳ７０６）、利用者が送信を希望する通信データのすべてのデータを暗号化すると（ステップＳ７０８にてＹＥＳ）、そのデータを記憶部１０２に保存する（ステップＳ７１２）。暗号装置１００は、予め定められた通信プロトコルに基づいて暗号データを出力する。
【０１５０】
［復号化処理］
利用者Ｂが復号装置１５０が暗号装置１００が送信した暗号化データを受信すると、各暗号化データは、復号装置１５０の記憶部１２２に格納される（ステップＳ８０２）。
【０１５１】
復号装置１５０は、暗号化データの先頭ブロックから１ブロックずつ復号化して、出力ブロックを生成する（ステップＳ８０４）。復号装置１５０はさらに、出力ブロックから平文ブロックを生成する（ステップＳ８０６）。すべての暗号化データの復号化処理が完了すると（ステップＳ８０８にてＹＥＳ）、復号装置１５０はすべての平文ブロックを結合して、乱数を除去する。その結果、通信データが復元されるため、利用者Ｂは、その通信データを認識することができる。
【０１５２】
以上のようにして、本発明の第１の実施の形態に係る暗号装置１００は、通信データの分割後に先頭のブロックに少なくとも乱数の一部が含まれるように、その乱数を付加して、データをブロックに分割する。暗号装置１００は、その先頭のブロックから、所定の暗号化処理を実行し、以降のブロックの暗号化処理では、先頭のブロックの暗号化処理の結果を使用する。したがって、すべてのブロックに乱数データを付加することなく、セキュリティレベルの高い暗号送信を実行することができる。
【０１５３】
また、本実施の形態に係る復号装置１５０は、ブロックに分割された暗号化データを受信すると、先頭のブロックから、所定の復号化処理を実行する。この場合、各暗号化データは、以降のブロックにおける平文ブロックの生成処理に使用されるため、暗号装置１００による暗号化処理によって生成されたデータを復元することができる。
【０１５４】
このようにして、通信データに付加するデータサイズを増加することなく、データ通信を行なうことができる暗号装置および復号装置を実現することができる。
【０１５５】
＜第１の実施の形態  変形例＞
以下、本発明の第１の実施の形態の変形例について説明する。
【０１５６】
本変形例に係る暗号装置の入力ブロック算出部は、平文ブロックと暗号化データと先に生成された入力ブロックとに基づいて、入力ブロックを算出することができる点で、前述の暗号装置１００と異なる。なお、本変形例に係る暗号装置の構成は、図１に示した暗号装置１００の構成と同じであるため、その説明は、繰り返さない。
【０１５７】
図９を参照して、本変形例に係る暗号装置における暗号化処理の方法について説明する。
【０１５８】
図９に示すように、平文データＰに対して所定の乱数Ｒが付加されて所定のデータサイズ（Ｘビット）に分割されると、平文ブロック「Ｐ０」，「Ｐ１」，「Ｐ２」が生成される。
【０１５９】
先頭の平文ブロック「Ｐ０」は、入力ブロック「Ｑ０」として暗号化部１０７に入力される。暗号化部１０７は、その入力ブロック「Ｑ０」と暗号鍵Ｋとを使用して、予め定められた暗号化処理関数Ｆｂによる暗号化処理を実行する。その結果、暗号化データ「Ｃ０」が生成される。このデータ「Ｃ０」は、記憶部１０２に記憶されるとともに、次の入力ブロック（すなわち「Ｑ１」）を生成するために、使用される。
【０１６０】
次に、第２の平文ブロック「Ｐ１」は、入力ブロック算出部１０６に入力される。入力ブロック算出部１０６は、平文ブロック「Ｐ１」と、既に生成された暗号化データ「Ｃ０」とを使用して、入力ブロック算出関数Ｆｃに基づく所定の演算処理を実行する。その結果、入力ブロック「Ｑ１」が生成される。
【０１６１】
ここで、入力ブロック算出関数Ｆｃについて説明する。この関数Ｆｃは、第ｎ番目の入力ブロック「Ｑｎ」と、第（ｎ−１）番目の平文ブロック「Ｐｎ−１」と、第（ｎ−１）番目の暗号化データと、第ｎ番目の平文ブロック「Ｐｎ」との関係を、Ｑｎ＝Ｆｃ（ｐｎ−１，Ｃｎ−１，Ｐｎ）、ただし、ｎ＝１，２，３，ｎ・・・、と表わす。なお、このような関数Ｆｃは、その逆関数Ｇｃを有する。この場合、上記の各データの関係は、Ｐｎ＝Ｇｃ（Ｐｎ−１，Ｃｎ−１，Ｑｎ）、と表わされる。
【０１６２】
図９を再び参照して、入力ブロック算出部１０６から出力される入力ブロック「Ｑ１」は、暗号化部１０７に入力される。暗号化部１０７は、この入力ブロック「Ｑ１」と暗号鍵Ｋとを使用して所定の暗号化処理を実行する。その結果、暗号化データ「Ｃ１」が生成される。
【０１６３】
暗号化部１０７から出力される暗号化データ「Ｃ１」は、記憶部１０２に格納されるとともに、次の暗号化データ「Ｃ２」を生成するために入力ブロック算出部１０６に入力される。
【０１６４】
入力ブロック算出部１０６は、第３の平文ブロック「Ｐ２」と既に生成された入力ブロック「Ｑ１」と、事前に生成された暗号化データ「Ｃ１」とを使用して、所定の処理を実行する。その結果、入力ブロック「Ｑ２」が生成される。
【０１６５】
入力ブロック算出部１０６から出力される入力ブロック「Ｑ２」は、暗号化部１０７に入力される。暗号化部１０７は、この入力ブロック「Ｑ２」と暗号鍵Ｋとを使用して所定の暗号化処理を実行する。その結果、暗号化データ「Ｃ２」が生成される。
【０１６６】
暗号化部１０７から出力される暗号化データ「Ｃ２」は、記憶部１０２に格納される。次の暗号化データを生成する必要がある場合には、暗号化データ「Ｃ２」は、入力ブロック算出部１０６に入力される。
【０１６７】
上記の「Ｐｎ」（ｎ＝１，２，３・・・）を算出する処理は、すなわち、関数Ｆｃ（Ｐｎ−１、Ｃｎ−１、Ｐｎ）に基づいて行なわれる。この場合、関数Ｆｃは逆変換を行なう関数Ｇｃを有する。この関数Ｇｃは、たとえばＧｃ（Ｐｎ−１、Ｃｎ−１、Ｐｎ）と表わされる。このようにしても、同様の効果を得ることができる。
【０１６８】
＜第２の実施の形態＞
以下、本発明の第２の実施の形態について説明する。本実施の形態に係る暗号通信システムは、暗号化処理あるいは復号化処理をするための暗号鍵を算出する機能を有する点で、前述の第１の実施の形態に係るシステムと異なる。
【０１６９】
図１０を参照して、本実施の形態に係る暗号通信システムの構成について説明する。このシステムは、暗号装置９００と復号装置９５０とを含む。暗号装置９００と復号装置９５０とは、一般の通信回線１９０によって接続される。
【０１７０】
この暗号装置９００は、前述の第１の実施の形態に係る暗号装置１００の構成に加えて、さらに鍵算出部９１０を含む。この鍵算出部９１０は、予め定められた暗号鍵の算出処理を実行する。
【０１７１】
なお、暗号装置９００において、第１の実施の形態に係る暗号装置１００が有する構成と同じ構成には、同一の番号を付してある。それらの機能も同じである。したがって、それらについての説明は、繰り返さない。
【０１７２】
図１０を再び参照して、復号装置９５０は、第１の実施の形態に係る復号装置１５０の構成に加えて、暗号化データを復号化するための暗号鍵を算出する鍵算出部９６０を含む。鍵算出部９６０は、復号化処理において生成されたデータを使用して、復号化処理に使用する新たな暗号化鍵を逐次生成する。なお、この復号装置９５０において、図１に示した復号装置１５０の構成と同一の構成には同一の番号を付してある。それらの機能も同じである。したがって、それらについての説明は、繰り返さない。
【０１７３】
なお、本実施の形態に係る暗号装置あるいは復号装置は、図２に示したような構成を有するコンピュータによって実現することもできる。このようなコンピュータの構成は、周知であるため、ここでは、その説明は繰り返さない。
【０１７４】
図１１を参照して、本実施の形態に係る暗号装置９００における暗号化処理の方法について説明する。
【０１７５】
図１１に示すように、平文データＰに対して所定の乱数Ｒが付加されて所定のデータサイズ（Ｘビット）に分割されると、平文ブロック「Ｐ０」，「Ｐ１」，「Ｐ２」が生成される。
【０１７６】
先頭の平文ブロック「Ｐ０」は、入力ブロック「Ｑ０」として暗号化部１０７に入力される。暗号化部１０７は、その入力ブロック「Ｑ０」と暗号鍵Ｋとを使用して、予め定められた暗号化処理関数Ｆｂによる暗号化処理を実行する。その結果、暗号化データ「Ｃ０」が生成される。この暗号化データ「Ｃ０」は、記憶部１０２に記憶される。
【０１７７】
暗号化部１０７から出力される暗号化データ「Ｃ０」は、鍵生成関数Ｆｄを実行する鍵算出部９１０に入力される。鍵算出部９１０は、暗号化データと、事前に使用された暗号鍵（Ｋ）とを使用して、新たな暗号鍵を生成する。
【０１７８】
ここで、鍵生成関数Ｆｄについて説明する。この関数は、第ｎ番目の鍵Ｋｎと、第（ｎ−１）番目の鍵「Ｋｎ−１」と、暗号化データ「Ｃｎ−１」との関係を、たとえば、Ｋｎ＝Ｆ４（Ｋｎ−１、Ｃｎ−１）、ただし、ｎ＝１，２，３…、と表わす。これにより、各ブロックにおいて異なる暗号鍵を暗号化処理に使用することができるため、平文ブロックが同一であっても、異なる暗号化データが生成される。
【０１７９】
図１１を再び参照して、第２の平文ブロック「Ｐ１」は、入力ブロック「Ｑ１」として暗号化部１０７に入力される。鍵算出部９１０により新たに生成された暗号鍵も、暗号化部１０７に入力される。暗号化部１０７は、この入力ブロック「Ｑ１」と暗号鍵とを使用して、所定の暗号化処理を実行する。その結果、暗号化データ「Ｃ１」が生成される。この暗号化データ「Ｃ１」は、記憶部１０２に格納される。
【０１８０】
暗号化部１０７から出力される暗号化データ「Ｃ１」は、鍵生成関数Ｆｄを実行する鍵算出部９１０に入力される。鍵算出部９１０は、暗号化データと、事前に使用された暗号鍵とを使用して、新たな暗号鍵を生成する。
【０１８１】
次に、第３の平文ブロック「Ｐ２」は、入力ブロック「Ｑ２」として暗号化部１０７に入力される。鍵算出部９１０により新たに生成された暗号鍵も、暗号化部１０７に入力される。暗号化部１０７は、この入力ブロック「Ｑ２」と暗号鍵とを使用して、所定の暗号化処理を実行する。その結果、暗号化データ「Ｃ２」が生成される。この暗号化データ「Ｃ２」は、記憶部１０２に格納される。次の暗号化データを生成する必要がある場合には、暗号化データ「Ｃ２」は、同様に鍵算出部９１０に入力される。
【０１８２】
なお、本実施の形態に係る復号装置９５０における復号処理の概念も、図１１に示した暗号装置９００における暗号処理の概念に適用される。すなわち、暗号鍵の生成は、鍵生成関数Ｆｄにより行なわれる。したがって、ここでは、それらについての説明は繰り返さない。
【０１８３】
図１２を参照して、本実施の形態に係る暗号装置９００を実現するＣＰＵの制御構造について説明する。図１２は、暗号装置９００のＣＰＵが実行する暗号化処理の手順を表わすフローチャートである。
【０１８４】
なお、前述の第１の実施の形態に係る暗号装置１００における処理と同一の処理には同一のステップ番号を付し、それらについての説明は繰り返さない。
【０１８５】
ステップＳ７０８にて、暗号装置９００のＣＰＵ１１０は、すべての平文データを暗号化したか否かを判断する。すべての平文データを暗号化したと判断すると（ステップＳ７０８にてＹＥＳ）、処理はステップＳ７１２に移される。そうでない場合には（ステップＳ７０８にてＮＯ）、処理はステップＳ１２１０に移される。
【０１８６】
ステップＳ１２１０にて、ＣＰＵ１１０の鍵算出部９１０は、暗号化データと暗号鍵とに基づいて、次の暗号鍵を作成する。
【０１８７】
図１３を参照して、本実施の形態に係る復号装置９５０を実現するＣＰＵ１２０の制御構造について説明する。図１３は、暗号装置９５０のＣＰＵ１２０が実行する復号化処理の手順を表わすフローチャートである。
【０１８８】
なお、前述の第１の実施の形態に係る復号装置１５０における処理と同一の処理には同一のステップ番号を付し、それらについての説明は繰り返さない。
【０１８９】
ステップＳ８０８にて、ＣＰＵ２１０は、すべての暗号化データを復号化したか否かを判断する。この判断は、たとえば記憶部１２２に格納されている暗号化データの数と、復号化処理を実行した回数とを比較することにより行なわれる。したがって、たとえば、復号化処理の回数が、記憶されている暗号化データの数よりも少ない場合には、すべての暗号化データは復号化されていないと判断されることになる。すべての暗号化データを復号化したと判断すると（ステップＳ８０８にてＹＥＳ）、処理は、ステップＳ８１２に移される。そうでない場合には（ステップＳ８０８にてＮＯ）、処理は、ステップＳ１３１０に移される。
【０１９０】
ステップＳ１３１０にて、ＣＰＵ２１０の鍵算出部９６０は、暗号化データと暗号鍵とに基づいて、次の暗号鍵を生成する。
【０１９１】
以上のような構造およびフローチャートに基づく、本発明の第２の実施の形態に係る暗号通信システムの動作について説明する。なお、前述の第１の実施の形態における動作と同じ動作の説明は、ここでは繰り返さない。
【０１９２】
［暗号化処理］
暗号装置９００において、すべての平文データの暗号化が完了していない場合には（ステップＳ７０８にてＮＯ）、暗号装置９００は、生成した暗号データと鍵とに基づいて、新たな暗号鍵を生成する（ステップＳ１２１０）。その暗号鍵により次の入力ブロックを暗号化することにより暗号化データを生成する（ステップＳ７０６）。
【０１９３】
［復号化処理］
復号装置９５０が暗号装置９００により生成された暗号データを受信すると、所定の復号化処理を実行する（ステップＳ８０２〜ステップＳ８０６）。すべての暗号化データの復号化処理が完了していない場合には（ステップＳ８０８にてＮＯ）、復号装置９５０は、暗号鍵と暗号化データとに基づいて、新たな暗号鍵を生成する（ステップＳ１２１０）。復号装置９５０は、新たに生成した暗号鍵を使用して、その後の暗号化データの復号化処理を継続する（ステップＳ８１０，Ｓ８０６）。
【０１９４】
以上のようにして、本実施の形態に係る暗号装置９００は、暗号化データを生成するごとに、次の暗号鍵を生成して、次の入力ブロックを暗号化する。このようにすると、各ブロックは、それぞれに応じて生成される暗号鍵によって暗号化されるため、暗号化データのセキュリティレベルを向上させることができる。
【０１９５】
また、復号装置９５０は、同様にして、暗号化データごとに生成した暗号鍵を使用して復号化処理を実行するため、暗号化データを確実に抽出することができる。
【０１９６】
このようにして、通信データに付加するデータのサイズを増加させることなく、セキュリティレベルが向上する暗号通信システムを実現することができる。
【０１９７】
なお、上述の第１および第２の実施の形態においては、通信データである平文データの先頭ブロック内に乱数が付加されているが、付加されるデータは、乱数に限られない。たとえば、暗号装置において、暗号化処理を実行するごとに、値が１ずつ増加する値を付加してもよいし、通信データの送信先を識別するためのデータを付加してもよい。これにより、デジタルコンテンツの所有者情報を暗号化データに埋め込むことができるため、暗号化処理において不正があった場合等に、そのデータの所有者を特定することができる。
【０１９８】
なお、上述したように平文データに乱数を付加する方法に加えて、平文データのハッシュ値を付加するようにしてもよい。ハッシュ値とは、ハッシュ関数によって生成される値をいう。ハッシュ関数は、データを一定長のデータに要約するための関数をいう。ハッシュ関数を通じて出力される値から、元のデータを容易に推定することはできない。ハッシュ関数には、たとえば、ＳＨＡ−１やＭＤ５と呼ばれる関数が含まれる。
【０１９９】
このハッシュ値を平文データに付加することにより、復号装置は、暗号化データの復号化処理を実行した後、暗号装置が使用する関数と同じハッシュ関数を用いてハッシュ値を算出する。復号装置は、その値と復号化処理から得られる値とを比較することにより、復号結果が正しいことを確認することができる。このようにすると、たとえば、データの通信途中で、平文データが改竄されたり、正当な鍵とは異なる鍵によって復号化処理が行なわれたことを検出することができる。
【０２００】
この方法では、同じコンテンツの場合、同一のハッシュ値が生成されるので、同じコンテンツを暗号化する場合、たとえば、ハッシュ値と乱数を組み合わせて用いることで、異なる暗号結果とすることができる。
【０２０１】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【０２０２】
【図１】本発明の第１の実施の形態に係る暗号装置および復号装置を含む暗号通信システムの構成を概念的に表わす図である。
【図２】本発明の第１の実施の形態に係る暗号装置および復号装置を実現するコンピュータの構成を表わすブロック図である。
【図３】本発明の第１の実施の形態に係る暗号装置に格納されるデータを説明するための図である。
【図４】本発明の第１の実施の形態に係る復号装置に格納されるデータを説明するための図である。
【図５】本発明の第１の実施の形態に係る暗号装置による暗号化処理を説明するための図である。
【図６】本発明の第１の実施の形態に係る暗号装置による暗号化処理を説明するための図である。
【図７】本発明の第１の実施の形態に係る暗号装置が実行する処理の手順を表わすフローチャートである。
【図８】本発明の第１の実施の形態に係る復号装置が実行する処理の手順を表わすフローチャートである。
【図９】本発明の第１の実施の形態の変形例に係る暗号装置による暗号化処理を説明するための図である。
【図１０】本発明の第２の実施の形態に係る暗号装置および復号装置を含む暗号通信システムの構成を概念的に表わす図である。
【図１１】本発明の第２の実施の形態に係る暗号装置による暗号化処理を説明するための図である。
【図１２】本発明の第２の実施の形態に係る暗号装置が実行する処理の手順を表わすフローチャートである。
【図１３】本発明の第２の実施の形態に係る復号装置が実行する処理の手順を表わすフローチャートである。
【符号の説明】
【０２０３】
１００，９００  暗号装置、１５０，９５０  復号装置、１０２，１２２  記憶部、１０３  乱数付加部、１０６  入力ブロック算出部、１０７  暗号化部、１０８  データ送信部、１１０，１２０，２１０  ＣＰＵ、１２３  乱数除去部、１２６  平文ブロック算出部、１２７  復号化部、１２８  データ受信部、１９０  通信回線、２００  コンピュータ、２２０  モニタ、２３０  マウス、２４０  キーボード、２５０  メモリ、２６０  固定ディスク、２７０  ＦＤ駆動装置、２７２  ＦＤ、２８０  ＣＤ−ＲＯＭ駆動装置、２８２  ＣＤ−ＲＯＭ、９１０，９６０  鍵算出部。
【図１】
2005202048.tif 000003
【図２】
2005202048.tif 000004
【図３】
2005202048.tif 000005
【図４】
2005202048.tif 000006
【図５】
2005202048.tif 000007
【図６】
2005202048.tif 000008
【図７】
2005202048.tif 000009
【図８】
2005202048.tif 000010
【図９】
2005202048.tif 000011
【図１０】
2005202048.tif 000012
【図１１】
2005202048.tif 000013
【図１２】
2005202048.tif 000014
【図１３】
2005202048.tif 000015