(57)【特許請求の範囲】
【請求項１】
暗号化対象の平文を所定サイズのブロックに分割し、先のブロックの暗号化処理の結果を用いて次のブロックのデータを操作し、操作後のデータを暗号化する処理を順次繰り返すことにより、前記平文を暗号化する暗号化装置であって、
乱数を発生させて第１のデータを生成する手段と、
予め定められている第２のデータを記憶する手段と、
を備え、
前記第１のデータを前記第２のデータを用いて操作し、これを暗号化することにより得られた第０の操作データを暗号化して第０の暗号化データを生成し、以後、前記平文の第ｉ（ｉは自然数）のブロックのデータを第（ｉ−１）の暗号化データを用いて操作して、第ｉの操作データを生成し、この第ｉの操作データを暗号化することにより、第ｉの暗号化データを生成する処理を繰り返し、
前記平文の第ｉのブロックのデータを第（ｉ−１）の暗号化データを用いて操作する前記操作は、前記第（ｉ−１）の暗号化データの所定の桁の値に応じて操作規則を変えるものである、
ことを特徴とする暗号化装置。
【請求項２】
前記暗号化装置は、
前記第ｉの暗号化データを生成する際に、
前記第（ｉ−１）の暗号化データに当該データに応じた所定の操作を施し、該所定の操作後の第（ｉ−１）の暗号化データを用いて前記第ｉのブロックのデータを操作して、前記平文を暗号化し、
前記平文の第ｉのブロックのデータを第（ｉ−１）の暗号化データを用いて操作する前記操作は、前記第（ｉ−１）の暗号化データの値に応じて操作規則を変えるものであり、前記第（ｉ−１）の暗号化データの所定の桁の値に応じた操作パターンを備え、当該操作パターンに応じて前記第（ｉ−１）の暗号化データのビット操作を行い、当該ビット操作後の前記第（ｉ−１）の暗号化データと前記平文の第ｉのブロックのデータとのＸＯＲ演算を行うことで前記第ｉの暗号化データを生成するものである、
ことを特徴とする請求項１に記載の暗号化装置。
【請求項３】
所定サイズの第０〜第ｎ（ｎは自然数）の暗号化データからなる暗号文に対し、
第ｉ（ｉはｎ以下の自然数）の暗号化データを復号化して、第ｉのデータを生成し、第（ｉ−１）の暗号化データを用いて前記第ｉのデータを操作して、第ｉの復号化データを生成する処理を、順次繰り返すことにより、前記暗号文を復号化する復号化装置であって、
前記第ｉの復号化データを生成する際に、
前記第（ｉ−１）の暗号化データに当該データに応じた所定の操作を施し、該所定の操作後の第（ｉ−１）の暗号化データを用いて前記第ｉのデータを操作して、前記第ｉの復号化データを生成するものであり、
前記所定の操作後の第（ｉ−１）の暗号化データを用いて前記第ｉのデータを操作する前記操作は、前記所定の操作前の前記第（ｉ−１）の暗号化データの所定の桁の値に応じて操作規則を変えるものである、
ことを特徴とする復号化装置。
【請求項４】
コンピュータが、プロセッサによって、乱数を発生させて生成した第１のデータをメモリから読み出した所定の第２のデータを用いて操作し、これを暗号化することにより得られた第０の操作データを暗号化して第０の暗号化データを生成して前記メモリに格納し、以後、該メモリから読み出した暗号化対象の平文の第ｉ（ｉは自然数）のブロックのデータを前記メモリから読み出した第（ｉ−１）の暗号化データを用いて操作して、第ｉの操作データを生成し、この第ｉの操作データを暗号化することにより、第ｉの暗号化データを生成して前記メモリに格納するステップを繰り返し、
前記メモリから読み出した暗号化対象の平文の第ｉのブロックのデータを前記メモリから読み出した第（ｉ−１）の暗号化データを用いて操作する前記操作は、前記メモリから読み出した前記第（ｉ−１）の暗号化データの所定の桁の値に応じて操作規則を変えるものである、
ことを特徴とする暗号化方法。
【請求項５】
コンピュータが、プロセッサによって、メモリに格納された所定サイズの第０〜第ｎ（ｎは自然数）の暗号化データからなる暗号文に対し、前記メモリから読み出した第ｉ（ｉはｎ以下の自然数）の暗号化データを復号化して、第ｉのデータを生成し、前記メモリから読み出した第（ｉ−１）の暗号化データを用いて前記第ｉのデータを操作して、第ｉの復号化データを生成して前記メモリに格納する処理を、順次繰り返すことにより、前記暗号文を復号化する復号化方法であって、
前記第ｉの復号化データを生成して前記メモリに格納する際に、
前記メモリから読み出した前記第（ｉ−１）の暗号化データに当該データに応じた所定の操作を施し、該所定の操作後の第（ｉ−１）の暗号化データを用いて前記第ｉのデータを操作して、前記第ｉの復号化データを生成してメモリに格納し、
前記所定の操作後の第（ｉ−１）の暗号化データを用いて前記第ｉのデータを操作する前記操作は、前記メモリから読み出した前記所定の操作前の前記第（ｉ−１）の暗号化データの所定の桁の値に応じて操作規則を変えるものである、
ことを特徴とする復号化方法。
【請求項６】
コンピュータのプロセッサに、
乱数を発生させて生成した第１のデータをメモリから読み出した所定の第２のデータを用いて操作し、これを暗号化することにより得られた第０の操作データを暗号化して第０の暗号化データを生成して前記メモリに格納し、
以後、該メモリから読み出した暗号化対象データの第ｉ（ｉは自然数）のブロックのデータを前記メモリから読み出した第（ｉ−１）の暗号化データを用いて操作して、第ｉの操作データを生成し、この第ｉの操作データを暗号化することにより、第ｉの暗号化データを生成して前記メモリに格納する手順を繰り返す処理、
を実行させるものであり、
前記メモリから読み出した暗号化対象データの第ｉ（ｉは自然数）のブロックのデータを前記メモリから読み出した第（ｉ−１）の暗号化データを用いて操作する前記操作は、前記メモリから読み出した前記第（ｉ−１）の暗号化データの所定の桁の値に応じて操作規則を変えるものである、
ことを特徴とする暗号化プログラム。
【請求項７】
コンピュータのプロセッサに、
メモリに格納された所定サイズの第０〜第ｎ（ｎは自然数）の暗号化データからなる暗号文に対し、前記メモリから読み出した第ｉ（ｉはｎ以下の自然数）の暗号化データを復号化し、第ｉのデータを生成し、前記メモリから読み出した第（ｉ−１）の暗号化データを用いて前記第ｉのデータを操作して、第ｉの復号化データを生成して前記メモリに格納する処理を順次繰り返し、前記暗号文を復号化する処理であって、
前記第ｉの復号化データを生成して前記メモリに格納する際に、
前記メモリから読み出した前記第（ｉ−１）の暗号化データに当該データに応じた所定の操作を施し、該所定の操作後の第（ｉ−１）の暗号化データを用いて前記第ｉのデータを操作して前記第ｉの復号化データを生成して前記メモリに格納する、処理を実行させるものであり、
前記所定の操作後の第（ｉ−１）の暗号化データを用いて前記第ｉのデータを操作する前記操作は、前記メモリから読み出した前記所定の操作前の前記第（ｉ−１）の暗号化データの所定の桁の値に応じて操作規則を変えるものである、
ことを特徴とする復号化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、平文を暗号文列にする暗号化装置及び方法と、暗号文列を平文に戻す復号化装置及び方法に関する。
【背景技術】
【０００２】
従来から暗号化方式として、例えば、秘密鍵または公開鍵を用いて平文を暗号化する方式などが知られている。この方式は平文を一定のブロックに区切り、ブロック単位で鍵により暗号化する。また、ブロックベースの暗号強度を高めるために、暗号ブロック連鎖方式（ＣＢＣ）、暗号フィードバック方式（ＣＦＢ）、出力フィードバック方式（ＯＦＢ）を使用することが、例えば、特許文献１等に開示されている。
【０００３】
これらの方式では、前のブロックの暗号処理の結果が次のブロックの暗号処理に使用される。そのため、各ブロックの暗号化データが数珠繋ぎの状態となり、あるブロックの暗号化データは過去の暗号処理全体に依存されるため暗号解読が困難となる。又、特許文献１においては、暗号ブロック連鎖方式による暗号化方法において、暗号モードの設定情報を含む暗号鍵に基づいて、複数の異なる暗号ブロック連鎖による暗号化アルゴリズムが選択できる暗号化装置により、暗号利用モードの暗号化アルゴリズムの設定を行い、上記暗号鍵により復号化を行う。
【特許文献１】特開２００１−１７７５１８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来の暗号化方式では、同一内容の平文を暗号化して生成される暗号文列は同一となってしまう。例えば、ＡＢＣＤという平文を暗号化するとＥＦＧＨという暗号文列が生成されるとすると、ＡＢＣＤを暗号化すると毎回ＥＦＧＨという暗号文列が生成される。そのため、例えば、ＡＢＣＤという平文がある個人や機器を表すＩＤである場合、暗号文列ＥＦＧＨの解読ができなくても、第３者にある個人や機器が特定されてしまう虞がある。特許文献１においても、暗号モードを選択することにより、秘匿性の高い暗号化、復号化装置及び方法が提供されているが、上述の問題は解決されていない。
【０００５】
この発明は上記実情に鑑みてなされたものであり、解読、推定、特定、等が困難な暗号化方法と該暗号化の手法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明の第１の観点にかかる暗号化装置は、
暗号化対象の平文を所定サイズのブロックに分割し、先のブロックの暗号化処理の結果を用いて次のブロックのデータを操作し、操作後のデータを暗号化する処理を順次繰り返すことにより、前記平文を暗号化する暗号化装置であって、
乱数を発生させて第１のデータを生成する手段と、
予め定められている第２のデータを記憶する手段と、
を備え、
前記第１のデータを前記第２のデータを用いて操作し、これを暗号化することにより得られた第０の操作データを暗号化して第０の暗号化データを生成し、以後、前記平文の第ｉ（ｉは自然数）のブロックのデータを第（ｉ−１）の暗号化データを用いて操作して、第ｉの操作データを生成し、この第ｉの操作データを暗号化することにより、第ｉの暗号化データを生成する処理を繰り返し、
前記平文の第ｉのブロックのデータを第（ｉ−１）の暗号化データを用いて操作する前記操作は、前記第（ｉ−１）の暗号化データの所定の桁の値に応じて操作規則を変えるものである、
ことを特徴とする。
【０００７】
前記暗号化装置は、例えば、前記第ｉの暗号化データを生成する際に、前記第（ｉ−１）の暗号化データに当該データに応じた所定の操作を施し、該所定の操作後の第（ｉ−１）の暗号化データを用いて前記第ｉのブロックのデータを操作して、前記平文を暗号化してもよく、前記平文の第ｉのブロックのデータを第（ｉ−１）の暗号化データを用いて操作する前記操作は、前記第（ｉ−１）の暗号化データの値に応じて操作規則を変えるものであり、前記第（ｉ−１）の暗号化データの所定の桁の値に応じた操作パターンを備え、当該操作パターンに応じて前記第（ｉ−１）の暗号化データのビット操作を行い、当該ビット操作後の前記第（ｉ−１）の暗号化データと前記平文の第ｉのブロックのデータとのＸＯＲ演算を行うことで前記第ｉの暗号化データを生成するものであってもよい。
【０００８】
上記目的を達成するため、本発明の第２の観点にかかる復号化装置は、
所定サイズの第０〜第ｎ（ｎは自然数）の暗号化データからなる暗号文に対し、
第ｉ（ｉはｎ以下の自然数）の暗号化データを復号化して、第ｉのデータを生成し、第（ｉ−１）の暗号化データを用いて前記第ｉのデータを操作して、第ｉの復号化データを生成する処理を、順次繰り返すことにより、前記暗号文を復号化する復号化装置であって、
前記第ｉの復号化データを生成する際に、
前記第（ｉ−１）の暗号化データに当該データに応じた所定の操作を施し、該所定の操作後の第（ｉ−１）の暗号化データを用いて前記第ｉのデータを操作して、前記第ｉの復号化データを生成するものであり、
前記所定の操作後の第（ｉ−１）の暗号化データを用いて前記第ｉのデータを操作する前記操作は、前記所定の操作前の前記第（ｉ−１）の暗号化データの所定の桁の値に応じて操作規則を変えるものである、
ことを特徴とする。
【０００９】
上記目的を達成するため、本発明の第３の観点にかかる暗号化方法は、
コンピュータが、プロセッサによって、乱数を発生させて生成した第１のデータをメモリから読み出した所定の第２のデータを用いて操作し、これを暗号化することにより得られた第０の操作データを暗号化して第０の暗号化データを生成して前記メモリに格納し、以後、該メモリから読み出した暗号化対象の平文の第ｉ（ｉは自然数）のブロックのデータを前記メモリから読み出した第（ｉ−１）の暗号化データを用いて操作して、第ｉの操作データを生成し、この第ｉの操作データを暗号化することにより、第ｉの暗号化データを生成して前記メモリに格納するステップを繰り返し、
前記メモリから読み出した暗号化対象の平文の第ｉのブロックのデータを前記メモリから読み出した第（ｉ−１）の暗号化データを用いて操作する前記操作は、前記メモリから読み出した前記第（ｉ−１）の暗号化データの所定の桁の値に応じて操作規則を変えるものである、
ことを特徴とする。
【００１０】
上記目的を達成するため、本発明の第４の観点にかかる復号化方法は、
コンピュータが、プロセッサによって、メモリに格納された所定サイズの第０〜第ｎ（ｎは自然数）の暗号化データからなる暗号文に対し、前記メモリから読み出した第ｉ（ｉはｎ以下の自然数）の暗号化データを復号化して、第ｉのデータを生成し、前記メモリから読み出した第（ｉ−１）の暗号化データを用いて前記第ｉのデータを操作して、第ｉの復号化データを生成して前記メモリに格納する処理を、順次繰り返すことにより、前記暗号文を復号化する復号化方法であって、
前記第ｉの復号化データを生成して前記メモリに格納する際に、
前記メモリから読み出した前記第（ｉ−１）の暗号化データに当該データに応じた所定の操作を施し、該所定の操作後の第（ｉ−１）の暗号化データを用いて前記第ｉのデータを操作して、前記第ｉの復号化データを生成してメモリに格納し、
前記所定の操作後の第（ｉ−１）の暗号化データを用いて前記第ｉのデータを操作する前記操作は、前記メモリから読み出した前記所定の操作前の前記第（ｉ−１）の暗号化データの所定の桁の値に応じて操作規則を変えるものである、
ことを特徴とする。
【００１１】
上記目的を達成するため、本発明の第５の観点にかかる暗号化プログラムは、
コンピュータのプロセッサに、
乱数を発生させて生成した第１のデータをメモリから読み出した所定の第２のデータを用いて操作し、これを暗号化することにより得られた第０の操作データを暗号化して第０の暗号化データを生成して前記メモリに格納し、
以後、該メモリから読み出した暗号化対象データの第ｉ（ｉは自然数）のブロックのデータを前記メモリから読み出した第（ｉ−１）の暗号化データを用いて操作して、第ｉの操作データを生成し、この第ｉの操作データを暗号化することにより、第ｉの暗号化データを生成して前記メモリに格納する手順を繰り返す処理、
を実行させるものであり、
前記メモリから読み出した暗号化対象データの第ｉ（ｉは自然数）のブロックのデータを前記メモリから読み出した第（ｉ−１）の暗号化データを用いて操作する前記操作は、前記メモリから読み出した前記第（ｉ−１）の暗号化データの所定の桁の値に応じて操作規則を変えるものである、
ことを特徴とする。
【００１２】
上記目的を達成するため、本発明の第６の観点にかかる復号化プログラムは、
コンピュータのプロセッサに、
メモリに格納された所定サイズの第０〜第ｎ（ｎは自然数）の暗号化データからなる暗号文に対し、前記メモリから読み出した第ｉ（ｉはｎ以下の自然数）の暗号化データを復号化し、第ｉのデータを生成し、前記メモリから読み出した第（ｉ−１）の暗号化データを用いて前記第ｉのデータを操作して、第ｉの復号化データを生成して前記メモリに格納する処理を順次繰り返し、前記暗号文を復号化する処理であって、
前記第ｉの復号化データを生成して前記メモリに格納する際に、
前記メモリから読み出した前記第（ｉ−１）の暗号化データに当該データに応じた所定の操作を施し、該所定の操作後の第（ｉ−１）の暗号化データを用いて前記第ｉのデータを操作して前記第ｉの復号化データを生成して前記メモリに格納する、処理を実行させるものであり、
前記所定の操作後の第（ｉ−１）の暗号化データを用いて前記第ｉのデータを操作する前記操作は、前記メモリから読み出した前記所定の操作前の前記第（ｉ−１）の暗号化データの所定の桁の値に応じて操作規則を変えるものである、
ことを特徴とする。
【発明の効果】
【００１３】
本発明によれば、同一の平文から生成された暗号文であっても、その結果は互いに異なるものとなり、元の平文を解読、推定、特定することなどが困難となり、信頼度が高い暗号化技術を提供することができる。一方、復号時には、ほとんど負担の増加なく、暗号文を復号することができる。
【発明を実施するための最良の形態】
【００１４】
以下、この発明の実施の形態に係る暗号化装置及び方法及び復号装置及び方法を説明する。
（実施形態１）  
【００１５】
この発明の実施形態１に係る暗号通信システム１０は、図１に示すように、ネットワークＮＷに接続された端末装置Ｔ１と端末装置Ｔ２とを備え、端末装置Ｔ１が任意のデータ（平文）を暗号化してネットワークＮＷを介して端末装置Ｔ２に暗号化データを送信し、端末装置Ｔ２がこれを受信して復号化する。
【００１６】
端末装置Ｔ１は、例えば、通常のコンピュータ装置から構成され、入力部２０、プロセッサ３０、メモリ４０、通信部５０などを備え、平文を暗号化して暗号文を生成し、生成した暗号文をネットワークＮＷを介して端末装置Ｔ２に送信する。
【００１７】
入力部２０は、例えば、ＵＳＢ（Universal Serial Bus）装置や、キーボード、マウス、各種ドライブ装置（ＦＤドライブ、ＣＤ−ＲＯＭドライブ等の入力デバイス）から構成され、種々の指示などと共に暗号化対象の平文を入力する。
【００１８】
プロセッサ３０は、マイクロプロセッサ、ＤＳＰ（Digital Signal Processor)等から構成され、メモリ４０に記憶されている動作プログラムに従って動作する。この実施の形態においては、特に、プロセッサ３０は、入力部２０から入力された平文をメモリ４０に記憶し、さらに、メモリ４０に記憶されている暗号化プログラム４３によりこの平文を暗号化し、これを通信部５０を介して端末装置Ｔ２に送信する。プロセッサ３０の具体的な動作は後述する。
【００１９】
メモリ４０は、ＲＡＭ（Random Access Memory)，ＲＯＭ(Read Only Memory)、ハードディスク装置などから構成され、プロセッサ３０のワークエリアとして機能とすると共に、暗号化のための暗号鍵４１、初期ベクトル４２、暗号化プログラム４３、乱数プログラム４４等を格納する。ワークエリアには、例えば、入力された平文、生成された暗号文、暗号化の生成過程にある各種データが記憶される。
【００２０】
暗号鍵４１は、任意のデータを暗号化するための共通鍵・秘密鍵である。
初期ベクトル４２は、予め設定された、例えば、ｍ（ｍは任意の自然数）バイト長の固定データである。
暗号化プログラム４３は、プロセッサ３０を制御し、平文を後述するプロセスで暗号化するためのプログラムである。暗号化プログラム４３の詳細は後述する。
乱数プログラム４４は、プロセッサ３０により実行され、例えば、４バイト長の乱数を発生させるプログラムである。
【００２１】
通信部５０は、たとえば、モデム装置などの通信装置から構成され、ネットワークＮＷに接続され、端末装置Ｔ２に暗号化されたデータを送信する。
【００２２】
端末装置Ｔ２は、例えば、通常のコンピュータ装置から構成され、通信部６０、プロセッサ７０、メモリ８０、出力部９０を備え、端末装置Ｔ１から送信された暗号文を復号化して平文を生成し、出力する。
【００２３】
通信部６０は、たとえば、モデムなどの通信装置から構成され、ネットワークＮＷに接続され、端末装置Ｔ１から暗号化されたデータを受信する。
【００２４】
プロセッサ７０は、マイクロプロセッサ、ＤＳＰ（Digital Signal Processor)等から構成され、メモリ８０に記憶されている動作プログラムに従って動作する。この実施の形態においては、特に、プロセッサ７０は、通信部６０を介して受信した暗号文をメモリ８０に記憶し、さらに、メモリ８０に記憶されている復号化プログラム８２によりこの暗号文を復号化し、復号化して得られた平文を出力部９０を介して出力する。プロセッサ７０の具体的な動作は後述する。
【００２５】
メモリ８０は、ＲＡＭ、ＲＯＭ、ハードディスクなどから構成され、プロセッサ７０のワークエリアとして機能すると共に、復号化のための復号鍵８１、復号化プログラム８２等を格納する。ワークエリアには、受信した暗号文、復号化された平文、復号化の過程における各種データが記憶される。
【００２６】
復号鍵８１は、受信したデータを復号化するための暗号鍵であり、暗号鍵４１と同一のものである。
復号化プログラム８２は、プロセッサ７０を制御し、受信した暗号文を復号化する。
【００２７】
出力部９０は、プロセッサ７０が復号化して生成された平文を出力する。
【００２８】
次に、上記構成を有する暗号通信システム１０の動作を図２（暗号化処理）及び図４（復号化処理）に示すフローチャート、及び、図３（暗号化処理）及び図５（復号化処理）に示す処理ダイアグラム、を参照しながら説明する。
【００２９】
暗号化処理は端末装置Ｔ１において行われ、復号化処理は端末装置Ｔ２において行われる。
【００３０】
（暗号化処理）
前提として、暗号化対象の平文が端末装置Ｔ１の入力部２０から入力され、メモリ４０に格納されているものとする。また、プロセッサ３０に、入力された平文の暗号化と端末装置Ｔ２への送信が指示されたものとする。
【００３１】
指示に応答して、プロセッサ３０は、図２のフローチャートに示す処理手順（図３に示す処理）を開始し、最初に、乱数プログラム４４を起動して、例えば、ｍバイト長（初期ベクトルと同一データ長）の乱数Ｆを発生させる（ステップＳ１）。
【００３２】
次に、プロセッサ３０は、生成した乱数Ｆとメモリ４０に記憶されている初期ベクトル４２との排他的論理和（ＸＯＲ）をとる（ステップＳ２）。
次に、プロセッサ３０は、その結果を暗号鍵４１を用いて暗号化プログラム４３により暗号化して、暗号文Ｂ0を生成し、メモリ４０に記憶する（ステップＳ３）。
【００３３】
続いて、プロセッサ３０は、暗号文Ｂ0にビット操作を施し、次ブロック暗号化用ビット列Ｈ０を生成し、メモリ４０に記憶する（ステップＳ４）。ビット操作としては、暗号文Ｂ0の結果に応じてビット操作の規則を変える。例えば、下位４ビットに着目し、“０”だったら暗号文Ｂ0の各ビットデータを反転する、“１”だったら特定ビットのビットデータを反転する、“２”だったら左方向に所定ビット数ローテイトする、“３”だったら右方向に所定ビット数ローテイトする等のように処理する。ビット操作の内容自体は任意である。なお、ビット操作に限らず、暗号文Ｂ0の結果に応じて所定の加算操作、減算操作をするようにしてもよいが、その場合、後述する復号化の際の操作(ステップＴ１、Ｔ４)では、暗号文に加算操作をした場合には減算操作をするなど、暗号化の際に施した操作を元に戻すような操作を施す。
【００３４】
次に、プロセッサ３０は、平文を逐次的に暗号化するためのカウント値ｉを１にセットする（ステップＳ５）。
【００３５】
次いで、カウント値ｉが、平文を暗号化する単位であるｍバイトのブロックに分割したときの、ブロック数ｎ以下か否かを判定する（ステップＳ６）。当初は、カウント値ｉが１であり、ｎ以下であるので（ステップＳ６：ＹＥＳ）、処理はステップＳ７に進む。
【００３６】
ステップＳ７で、プロセッサ３０は、メモリ４０に記憶した暗号化用ビット列Ｈｉ−１（最初はステップＳ４で求めたＨ０）と、メモリ４０に記憶した平文の第ｉ番目のｍバイトのブロックＡｉ（最初は先頭ｍバイトのブロックＡ１）との排他的論理和Ｃｉ（最初は、Ｃ１）を求める（ステップＳ７）。
【００３７】
次に、プロセッサ３０は、排他的論理和Ｃｉを、暗号鍵４１を用いて暗号化プログラム４３により暗号化することにより、平文の第ｉブロックＡｉ（最初は、第１ブロックＡ１）の暗号文Ｂｉ（最初はＢ１）を生成し、メモリ４０に記憶する（ステップＳ８）。
【００３８】
次いで、プロセッサ３０は、暗号文Ｂｉ（最初はＢ１）にビット操作を施し、
次ブロック暗号化用のビット列Ｈｉ（最初はＨ１）を生成し、メモリ４０に記憶する（ステップＳ９）。
続いて、カウント値ｉを１だけインクリメントして（ステップＳ１０）、ステップＳ６に戻る。
【００３９】
以後、同様の動作を繰り返して、平文のブロックＡｉを暗号化して暗号文Ｂｉを求め、これにビット操作を施してビット列Ｈｉを求めて、このビット列Ｈｉと次のブロックＡｉ＋１との排他的論理和Ｃｉ＋１を求め、これを、暗号鍵４１を用いて暗号化プログラム４３により暗号化して、暗号文Ｂｉ＋１を求める処理を繰り返す。
【００４０】
平文の最後のブロックＡｎを暗号化して暗号文Ｂｎを求めると、ステップＳ６で、カウント値ｉ＞全ブロック数ｎと判別され、今回の暗号化の処理を終了する。
【００４１】
その後、プロセッサ３０は、記憶部４０に格納された暗号文Ｂ０〜Ｂｎを、通信部５０を介して端末装置Ｔ２に送信する。
【００４２】
（復号化処理）
次に、端末装置Ｔ２が端末装置Ｔ１から受信した暗号文を復号化して、元の平文を生成する手順を説明する。
まず、前提として、通信部６０が復号化対象の暗号文（前述のＢ0からＢｎ）を端末装置Ｔ１から受信し、プロセッサ７０が、これをメモリ８０に格納したものとする。また、プロセッサ７０に、受信した暗号文列の復号化が指示されたものとする。
【００４３】
指示に応答して、プロセッサ７０は、図４のフローチャートに示す処理手順（図５に示す処理）を開始し、最初にメモリ８０から、暗号文の先頭ブロックＢ0を読み出し、暗号化の際と同じ規則のビット操作を施し、ビット列Ｈ０を生成し、メモリ８０に記憶する（ステップＴ１）。なお、このビット列Ｈ０は、図２のステップＳ４で生成した暗号化用ビット列Ｈ0に等しいものとなる。なお、暗号文の先頭ブロックＢ0を復号化する必要はない。
【００４４】
次に、プロセッサ７０は、暗号文を逐次的に復号化するためのカウント値ｉを１にセットする（ステップＴ２）。
次に、プロセッサ７０は、ｉが暗号文の最終ブロック番号ｎ以下であるか否かを判定する（ステップＴ３）。なお、暗号化された平文のブロック数をｎとすれば、この平文にステップＳ１で生成された乱数Ｆが付加されているので、暗号文のブロック数は（ｎ＋１）となる。暗号文のブロックの番号が０（Ｂ０）から開始するため、最終ブロック番号はｎとなる。
【００４５】
カウント値ｉが最終ブロック番号ｎ以下の場合（ステップＴ３：ＹＥＳ）、プロセッサ７０は、メモリ８０から、暗号文の次のブロックＢｉ（当初は、ブロックＢ１）を読み出し、暗号化の際と同じ規則のビット操作を施して、ビット列Ｈｉ（当初は、ビット列Ｈ１）を生成し、メモリ８０に記憶する（ステップＴ４）。
【００４６】
次いで、プロセッサ７０は、暗号文の第ｉブロックＢｉを復号鍵８１を用いて復号化プログラム８２により復号することによりビット列Ｃｉ（当初は、ビット列Ｃ１）を生成する（ステップＴ５）。
【００４７】
次に、プロセッサ７０は、暗号文の第ｉブロックＢｉから復号されたビット列Ｃｉ（当初はＣ1）とメモリ８０に記憶しておいたビット列Ｈｉ−１（当初は、Ｈ０）との排他的論理和をとり、これを復号化した平文Ａｉ（当初は、Ａ１）としてメモリ４０に記憶する（ステップＴ６）。
【００４８】
プロセッサ７０は、カウンタｉを１つインクリメントし（ステップＴ７）、ステップＴ３に戻る。
【００４９】
以後、同様の動作を繰り返して、暗号文のブロックＢｉを復号化鍵を用いて復号してビット列Ｃｉを求め、このビット列Ｃｉと、暗号文のブロックＢｉ−１をビット操作して得られたビット列Ｈｉ−１との論理和求めて、平文のブロックＡｉ＋１に復号化する処理を繰り返す。
【００５０】
プロセッサ７０は、暗号文の最後のブロックＢｎを復号して平文のブロックＡｎに復号化すると、ステップＴ３で、カウント値ｉ＞全ブロック数ｎと判別され、今回の復号化のフローを終了する。
【００５１】
以上の処理により、メモリ８０には、復号化された平文Ａが記憶される。
プロセッサ７０は、必要に応じて、出力部９０から復号した平文Ａを出力する。
【００５２】
以上説明したように、端末装置Ｔ１では、平文の先頭に乱数値を付加して、暗号ブロック連鎖方式で暗号化しているので、同一の平文を暗号化する場合でもその結果は毎回ことなったものとなる。従って、平文が個人や機器等の対象を表すＩＤであっても、第三者が対象を特定することが困難となる。さらに、上述のビット操作をすることにより、Ｂ１〜Ｂｎの関連性を見えにくくして平文そのものを推定することも困難となる。
【００５３】
一方、端末装置Ｔ２では、受信した暗号文のうち、乱数を用いて生成された部分は、後続する暗号文の復号には使用するが、その値自体は使用しないので、乱数値を知らなくても正常に暗号文を復号することができる。
【００５４】
従って、以上の構成を有する暗号通信システム１０によれば、従来の暗号ブロック連絡方式に比して、処理負担はほとんど変化がなく、より信頼性の高い暗号・復号方式が得られる。
【００５５】
（実施形態２）
実施形態１では、暗号化処理において、平文のブロックＡｉを暗号化して暗号文のブロックＢｉを求め、これにビット操作を施してビット列Ｈｉを求めて、このビット列Ｈｉと平文の次のブロックＡｉ＋１との論理和Ｃｉ＋１を求め、これを暗号鍵４１を用いて暗号化して、暗号文のブロックＢｉ＋１を求める処理を繰り返している。しかし、この発明はこれに限定されず、暗号文のブロックＢｉにビット操作を施す処理を行わないで、この暗号文ブロックＢｉと次のブロックＡｉ＋１との論理和Cｉ＋１を求め、これを暗号鍵４１を用いた暗号化プログラム４３により暗号化して、暗号文Ｂｉ＋１を求める構成とすることも可能である。この場合、図６に示すように、ステップＳ７において、Ｂｉ−１とＡｉとの排他的論理和Cｉを求め、ステップＳ４とＳ９を削除する。同様に、図７に示すように、ステップＴ６でビット列Ｃｉと暗号文ブロックＢｉ−１との排他的論理和をとり、ステップＴ１とＴ４とを除去する。
【００５６】
この実施形態では、理解を容易にするため、端末装置Ｔ１で平文を暗号化し、端末装置Ｔ２で復号化する構成について説明したが、暗号化と復号化を一つの端末装置で行う構成とすることも可能である。
【００５７】
この発明は、暗号化通信に使用する暗号に限定されず、種々の暗号・復号化に利用可能である。
【００５８】
また、上記実施の形態においては、端末装置Ｔ１は、暗号化対象の平文をメモリ４０に一旦蓄積してから暗号化し、暗号化処理終了後に、端末装置Ｔ２に送信した。この発明は、これに限定されず、例えば、端末装置Ｔ１（プロセッサ３０）は、例えば、入力部２０から暗号化対象の平文のブロックが順次供給される場合には、供給されたブロックを逐次暗号化するように構成してもよい。また、端末装置Ｔ１（プロセッサ３０）は、例えば、平文のブロックを暗号化する度に、通信部５０を介して、
これを端末装置Ｔ２に送信するように構成してもよい。同様に、例えば、端末装置Ｔ２（プロセッサ７０）は、例えば、入力部２０から暗号化対象の平文のブロックが順次供給される場合には、供給されたブロックを逐次暗号化するように構成してもよい。また、端末装置Ｔ１（プロセッサ３０）は、例えば、平文のブロックを暗号化する度に、通信部５０を介して、これを端末装置Ｔ２に送信するように構成してもよい。
【００５９】
なお、上述のように、この発明の暗号化装置及び／又は復号化装置は、専用装置に限定されず、一般のコンピュータ（プロセッサを含む）を用いて実現可能である。この場合には、必要な固定データ等と共に上記の処理を実行するコンピュータプログラム（暗号化プログラム、復号化プログラム）を適宜の手法でコンピュータにインストールして実行させればよい。
【図面の簡単な説明】
【００６０】
【図１】本発明の実施の形態に係る暗号通信システムの構成図である。
【図２】図１に示す端末装置Ｔ１が実行する暗号化処理のフローチャートである。
【図３】図１に示す端末装置Ｔ１が実行する暗号化処理の処理ダイアグラムである。
【図４】図１に示す端末装置Ｔ２が実行する復号化処理のフローチャートである。
【図５】図１に示す端末装置Ｔ２が実行する復号化処理の処理ダイアグラムである。
【図６】第２実施形態に係る暗号化処理の処理ダイアグラムである。
【図７】第２実施形態に係る復号化処理の処理ダイアグラムである。
【符号の説明】
【００６１】
１０  暗号通信システム
２０  入力部
３０  プロセッサ
４０  メモリ
５０  通信部
４１  暗号鍵
４２  初期ベクトル
４３  暗号化プログラム
４４  乱数プログラム
５０  通信部
６０  通信部
７０  プロセッサ
８０  メモリ
８１  復号鍵
８２  復号化プログラム
９０  出力部
【図１】
0004644053.tif 000002
【図２】
0004644053.tif 000003
【図３】
0004644053.tif 000004
【図４】
0004644053.tif 000005
【図５】
0004644053.tif 000006
【図６】
0004644053.tif 000007
【図７】
0004644053.tif 000008