(57)【特許請求の範囲】
【請求項１】
ＣＢＣ方式あるいはＣＦＢ方式の暗号データを復号化する復号化処理方法であって、
ＣＢＣ方式とＣＦＢ方式の動作モードを切替える制御部と、複数の暗号文データの復号化を並列的に実行する複数の演算部とを有し、
前記複数の演算部は、それぞれ、
暗号文データを保持するデータ入力レジスタと、
連鎖値の初期値あるいは前段の演算部で生成された連鎖値を保持する連鎖値レジスタと、
前記データ入力レジスタの暗号文データあるいは前記連鎖値レジスタの連鎖値を選択して出力する入力データ生成部と、
前記入力データ生成部の出力を入力データとして復号処理する復号化部と、
前記データ入力レジスタの暗号文データ、前記連鎖値レジスタの連鎖値、前記復号化部の復号データを入力して平文データを生成して出力する出力データ生成部と、
前記復号化部での復号処理と並行に、前記データ入力レジスタの暗号文データ、前記連鎖値レジスタの連鎖値を入力して次の演算用の連鎖値を生成し、次段の演算部の連鎖値レジスタにセットする次演算用連鎖値生成部と、
を具備し、
ＣＢＣ動作モードでは、前記入力データ生成部は前記データ入力レジスタの暗号文データを選択し、前記出力データ生成部は前記復号化部の復号データと前記連鎖値レジスタの連鎖値とから平分データを生成し、前記次演算用連鎖値生成部は前記データ入力レジスタの暗号文データから次の演算用の連鎖値を生成し、
ＣＦＢ動作モードでは、前記入力データ生成部は前記連鎖値レジスタの連鎖値を選択し、前記出力データ生成部は前記復号化部の復号データと前記データ入力レジスタの暗号文データとから平文データを生成し、前記次演算用連鎖値生成部は前記データ入力レジスタの暗号文データと前記連鎖値レジスタの連鎖値とから次の演算用の連鎖値を生成する、
ことを特徴とする復号化処理方法。
【請求項２】
ＣＢＣ方式あるいはＣＦＢ方式の暗号データを復号化する復号化処理装置であって、
ＣＢＣ方式とＣＦＢ方式の動作モードを切替える制御部と、複数の暗号文データの復号化を並列的に実行する複数の演算部とを有し、
前記複数の演算部は、それぞれ、
暗号文データを保持するデータ入力レジスタと、
連鎖値の初期値あるいは前段の演算部で生成された連鎖値を保持する連鎖値レジスタと、
前記データ入力レジスタの暗号文データあるいは前記連鎖値レジスタの連鎖値を選択して出力する入力データ生成部と、
前記入力データ生成部の出力を入力データとして復号処理する復号化部と、
前記データ入力レジスタの暗号文データ、前記連鎖値レジスタの連鎖値、前記復号化部の復号データを入力して平文データを生成して出力する出力データ生成部と、
前記復号化部での復号処理と並行に、前記データ入力レジスタの暗号文データ、前記連鎖値レジスタの連鎖値を入力して次の演算用の連鎖値を生成し、次段の演算部の連鎖値レジスタにセットする次演算用連鎖値生成部と、
を具備し、
ＣＢＣ動作モードでは、前記入力データ生成部は前記データ入力レジスタの暗号文データを選択し、前記出力データ生成部は前記復号化部の復号データと前記連鎖値レジスタの連鎖値とから平分データを生成し、前記次演算用連鎖値生成部は前記データ入力レジスタの暗号文データから次の演算用の連鎖値を生成し、
ＣＦＢ動作モードでは、前記入力データ生成部は前記連鎖値レジスタの連鎖値を選択し、前記出力データ生成部は前記復号化部の復号データと前記データ入力レジスタの暗号文データとから平文データを生成し、前記次演算用連鎖値生成部は前記データ入力レジスタの暗号文データと前記連鎖値レジスタの連鎖値とから次の演算用の連鎖値を生成する、
ことを特徴とする復号化処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＣＢＣ（Ｃipher Ｂlock Ｃhaining）方式やＣＦＢ（Ｃipher Ｆeedback）方式などのように、あるブロックの暗号化／復号化が次のブロックの暗号化／復号化に影響を与える暗号方式において、特に暗号データの高速な復号化を実現する復号化処理方法および装置に関する。
【０００２】
【従来の技術】
暗号化は、データ通信ネットワーク上を流れるデータやコンピュータシステムに蓄積されているデータを保護するための基本的な技術の１つであり、不当な第３者がデータを利用できないような形にデータを変換することである。データを通信する際には、「暗号化」の操作により、送信側は普通の通信文である「平文」をそのまま見ても理解できない「暗号文」にする。受信側は、この暗号文を「復号化」の操作により平文に戻す。この際、暗号化および復号化を制御するためのパラメータを「鍵」とよび、受信側では、この鍵を用いて容易に暗号文を復号化することができる。
【０００３】
暗号通信においては、暗号強度が高い、すなわち、第３者に通信内容が解読されにくいことともに、正規の送信者および受信者が実用上支障が発生しないよう、暗号化および復号化を高速に行えることが重要となる。
【０００４】
データ通信の分野でもっとも広く普及している暗号化方式としてＤＥＳ(ＤataＥncryption Ｓtandard）がある。ＤＥＳはアメリカ連邦政府機関の標準データ暗号化規格とされているだけでなく、民間でも広く普及している。ＤＥＳは、平文を６４ビットごとにブロック化し、平文６４ビットを５６ビットの鍵を用いて暗号化し、６４ビットの暗号文をつくりだす暗号方式である。これを実現するＤＥＳ暗号機構の主要部（暗号化コア部）は１６段のＤＥＳ暗号化段からなり、平文６４ビットを３２ビット、３２ビットに分け、５６ビットの鍵から４８ビットの鍵Ｋ１〜Ｋ１６を逐次生成し、１６回の転置処理を繰り返して暗号文６４ビットを出力する構成をとる。
【０００５】
米国規格協会（ＡＮＳＩ）では、ＤＥＳに四つのモードの動作方式を定めている（ＡＮＳＩ Ｘ３．１０６−１９８３）。すなわち、ＥＣＢ（Ｅlectric Ｃodebook）方式、ＣＢＣ（Ｃipher Ｂlock Ｃhaining）方式、ＣＦＢ（ＣipherＦeedback）方式、そしてＯＦＢ（Ｏutput Ｆeedback）方式である。このうち、ＥＣＢ方式では、各６４ビットを個別に暗号化する。このため、ＥＣＢ方式では複数のＤＥＳ暗号演算器で並列に処理するか、または、ＤＥＳ暗号演算器のパイプライン化により、他の３つの方式と比較して高速な暗号化／復号化が可能であるが、暗号強度は低くなる。一方、ＣＢＣ、ＣＦＢそしてＯＦＢ方式では、あるブロックの暗号化／復号化が次のブロックの暗号化／復号化に影響をあたえる。このため、ＥＣＢ方式と比較して暗号強度が強くなるが、並列処理を有効に活用できなく、この結果ＥＣＢ方式と比較して高速化が困難である。
【０００６】
一般的に、ＤＥＳの暗号化および復号化は、ＥＣＢ，ＣＢＣ，ＣＦＢ、そしてＯＦＢのすべての方式において、暗号化の核となる１６段のＤＥＳ暗号化段の実行にもっとも多くの処理時間を要し、その前後の処理はＤＥＳ暗号化段の実行と比較して処理時間は非常に小さい。従来の高速化手法は、ＤＥＳ暗号化段以外の処理時間の小さい分の処理を高速化することで、ＤＥＳ暗号機構の高速化が行われてきた。例えば、特開平１０−７４０４４号公報では、暗号化段にデータを入力した後、適切なサイクル数後に出力レジスタに暗号化／復号化されたデータを取り出すという手法を開示している。この手法を用いることにより、ＤＥＳ暗号化段以外の部分をＤＥＳ暗号化段の処理時間よりも高速なクロック周波数で動作させることが可能になり、ＤＥＳ暗号機構のあらゆる動作方式で、暗号化および復号化を高速に動作させることが可能になる。
【０００７】
【発明が解決しようとする課題】
しかしながら、かかる従来の方法においては次のような問題がある。すなわち、クロック周波数をあげることにより、ある平文データが入力されてから暗号文データが出力されるまで、または、ある暗号文データが入力されてから平文データが出力されるまでの時間の高速化が可能になるが、データのスループットは、並列処理が困難なＣＢＣ，ＣＦＢおよびＯＦＢ方式においては、ＤＥＳ暗号機構において最も処理時間を要するＤＥＳ暗号化段のスループットが上限になる。
【０００８】
図５に、ＤＥＳ暗号機構のＣＢＣ，ＣＦＢ，ＯＦＢ方式の復号化において従来適用されてきた実施形態を示す。ＤＥＳ演算器５１０はデータ入力レジスタ５１１、連鎖値レジスタ５１２、入力データ生成部５１３、暗号化コア部５１５、出力データ・次演算用連鎖値生成部５１６、データ出力レジスタ５１７で構成される。暗号化コア部５１５は１６段からなるＤＥＳ暗号化段により構成され、最も処理時間を要する部分である。図５では、復号化の実施形態を示しているが、暗号化の実施形態も同様である。
【０００９】
ＣＢＣ，ＣＦＢ，ＯＦＢ方式の復号化の場合、データ入力レジスタ５１１に暗号文データ５０１および連鎖値レジスタ５１２に初期ベクトル（連鎖値の初期値）５０２がセットされる。次に、データ入力レジスタ５１３および連鎖値レジスタ５１４から入力データ生成部５１３を経て生成された入力データは、暗号化コア部５１５により復号化され、該暗号化コア部５１５の出力とともにデータ入力レジスタ５１１および連鎖値レジスタ５１２の出力が、出力データ・次演算用連鎖値生成部５１６に入力され、該出力データ・次演算用連鎖値生成部５１６により、平文データ５０４および次演算用連鎖値５３０が生成される。そして、次演算用連鎖値５３０は連鎖値レジスタ５１２にセットされ、次の暗号文データを復号化する際に利用される。
【００１０】
図６に、この従来の実施形態を用いた場合のＣＢＣ，ＣＦＢ，ＯＦＢ方式の復号化のタイミングチャートを示す。図６では、図５におけるデータ入力レジスタ５１１および連鎖値レジスタ５１２から暗号化コア部５１５に到達するまでの時間を１サイクル、暗号化コア部５１５の実行時間を８サイクル、そして、暗号化コア部５１５の実行が終了してから連鎖値レジスタ５１２に次演算用の連鎖値がセットされるまでの時間を１サイクルと仮定している。
【００１１】
従来の実施形態では、ＣＢＣ，ＣＦＢ，ＯＦＢ方式のいずれの復号化の場合でも、データ入力レジスタ５１１に暗号文データＤ０、連鎖値レジスタ５１１に初期ベクトルＣ０をセットし、入力データ生成部５１を経て暗号化コア部５１５の実行を開始する。その後、暗号化コア部５１５の実行が終了し、暗号化コア部５１５から出力データＥ０が出力されると、出力データ・次演算用連鎖値生成部５１６により、平文データＡＯを出力するとともに、次の連鎖値Ｃ１を連鎖値レジスタ５１２にセットし、これと前後してデータ入力レジスタ５１１にセットされた次のデータＤ１に対する暗号化コア部５１５の実行を開始する。この結果、平文データの出力間隔は１０サイクルとなり、図５における暗号化コア部５１５の実行の前後処理を効率化しても、暗号化コア部５１５の実行時間より高速なスループットを達成できない。
【００１２】
このように、従来は、あるデータブロックが後続のデータブロックの暗号化／復号化に影響を与えるＣＢＣ，ＣＦＢ，ＯＦＢ方式の場合、いずれも一律に暗号化コア部での実行後、次のデータのための連鎖値を生成しており、データのスループットを向上させるのに限界があった。
【００１３】
ところで、ＣＢＣ，ＣＦＢ，ＯＦＢ方式の復号化において、次演算用連鎖値の生成に暗号化コア部の出力データを必要とするのはＯＦＢ方式だけであり、ＣＢＣおよびＣＦＢ方式では、入力データおよび／または前の連鎖値から次演算用の連鎖値を生成するアルゴリズムを用いており、連鎖値の生成に、暗号化コア部の出力データは不要である。
【００１４】
本発明は、上記ＣＢＣ，ＣＦＢ方式のアルゴリズムに着目するものであり、その目的は、ＣＢＣ，ＣＦＢ，ＯＦＢ方式の暗号化／復号化の内、ＣＢＣおよびＣＦＢ方式の復号化において、データのスループットを向上させる処理方法および装置を提供することにある。
【００１５】
【課題を解決するための手段】
本発明は、ＤＥＳ暗号機構などのＣＢＣ，ＣＦＢモードの復号化において、ある暗号データの復号化時に、次の暗号データの復号化に必要な連鎖値を先行して生成することを主要な特徴とするものである。これにより、１つ以上のＤＥＳ演算器で、データの連続的な復号化、あるいは同時に複数のデータの復号化が可能になり、データのスループットを向上できる。一般に、次のデータの復号化用の連鎖値の生成時間は１６段からなるＤＥＳ暗号化段の実行時間より非常に小さい。このため、適切なタイミングで連鎖値を生成することにより、１つのＤＥＳ演算器で１度に１つの復号化を処理できる場合、例えば２つのＤＥＳ演算器で２倍のスループットを確保することができる。
【００１６】
さらに、本発明はＤＥＳ暗号機構に限らず、次演算用連鎖値の生成に暗号化コア部の出力データを必要としないＣＢＣ方式およびＣＦＢ方式などの動作モードを有するあらゆる暗号機構において、適用することができる。
【００１７】
【発明の実施の形態】
以下、本発明の一実施の形態について図面により説明する。
図１にＣＢＣ方式でのデータ暗号化／復号化の概念図を示す。図１の（Ａ）に示すように、ＣＢＣ方式の暗号化は、平文データＡ１０１が入力されると、該平文データＡ１０１は初期ベクトル（連鎖値の初期化）１７１とＸＯＲ（排他的論理和）１５１がとられ、その出力データ１６１が暗号化コア部１１１、すなわち１６段からなるＤＥＳ暗号化段に入力されて暗号化される。暗号化コア部１１１から出力されたデータは、暗号文データＡ１２１であると同時に、次の平文データＢ１０２を暗号化するための連鎖値１７２となる。平文データＢ１０２は該連鎖値１７２とＸＯＲ１５２がとられ、その出力データ１０２が暗号化コア部１１２に入力され、該暗号化コア部１１２の出力データは暗号文データＢ１１２であると同時に、次の平文データの暗号化のための連鎖値１７３となる。以下、各平文データについて同様の動作を繰り返す。
【００１８】
一方、ＣＢＣ方式の復号化では、図１の（Ｂ）に示すように、暗号文データＡ１２１は、暗号化コア部１３１に入力される。暗号化コア部１３１から出力されたデータは、初期ベクトル１９１とＸＯＲ１８１をとられ、平文データＡ１４１として出力される。このとき、入力された暗号文データＡ１２１は、次の暗号文データＢ１２２を復号化するための連鎖値１９２として利用される。暗号文データＢ１２２は、暗号化コア部１３２に入力されて復号化され、その出力データは、連鎖値１９２とＸＯＲ１８２をとられ、平文データＢ１４２として出力される。このときも、暗号文データＢ１２２は、次の暗号文データを復号化するための連鎖値１９３として利用される。
【００１９】
以上のように、ＣＢＣ方式では、暗号化では処理時間の大きい暗号化コア部の出力データを、次の暗号化で利用するため高速化が困難であるが、復号化では、暗号化コア部の出力データを次のデータの復号化で利用しないため、処理時間の大きい暗号化コア部を並行して実行することにより、データのスループットを向上させることが可能になる。この際、複数の暗号化コア部の実行は同時である必要はない。また、暗号化コア部が一つの場合でも、該暗号化コア部を連続的に実行することにより、データのスループットが向上する。さらに、暗号化コア部はＤＥＳ暗号化段である必要はなく、他の暗号機構でもよい。これは次に示すＣＦＢ方式の場合でも同様である。
【００２０】
図２にＣＦＢ方式でのデータ暗号化／復号化の概念図を示す。図２の（Ａ）に示すように、ＣＦＢ方式の暗号化においては、初期ベクトル（６４ビット）２０１が暗号化コア部２０６の入力２２２となり、該暗号化コア部２０６の出力上位ｎビット２２９と平文データＡ（ｎビット）２０８とのＸＯＲ２１０がとれ、暗号文データ（ｎビット）２１２として出力される。この暗号文データＡ２１２のｎビットと初期ベクトル２０１の下位（６４−ｎ）ビット２２１とがマージ２０４され（２１２が下位ビット、２２１が上位ビットにマージ）、次平文データを暗号化するための連鎖値（６４ビット）２０２となる。該連鎖値２０２は暗号化コア部２０７の入力２２６となり、該暗号化コア部２０７の出力上位ｎビット２３０と平文データＢ（ｎビット）２０９とのＸＯＲ２１１がとられ、暗号文データＢ（ｎビット）２１３として出力される。そして、この暗号文データＢ２１３のｎビットと連鎖値２０２の下位（６４−ｎ）２２５とがマージ２０５され、次平文データを暗号化するための連鎖値（６４ビット）２０３となる。
【００２１】
このＣＦＢ方式の復号化においては、図２の（Ｂ）に示すように、初期ベクトル（６４ビット）２５１が暗号化コア部２５６の入力２７２となり、該暗号化コア部２５６の出力上位ビット２７９と暗号文データＡ（ｎビット）２５８のＸＯＲ２６０がとられ、平文データＡ（ｎビット）２６２として出力される。このとき、暗号文データＡ２５８のｎビットと初期ベクトル２５１の下位（６４−ｎ）ビット２７１とがマージ２５４され、連鎖値（６４ビット）２５２が生成される。該連鎖値２５２は暗号化コア部２５７の入力２７６となり、該暗号化コア部２５７の出力上位ｎビット２８０と暗号文データＢ（ｎビット）２５９とのＸＯＲ２６１がとられ、平文データＢ（ｎビット）２６３として出力される。このときも、暗号文データＢ２５９のｎビットと連鎖値２５２の下位（６４−ｎ）ビット２７５とがマージ２５５され、次の連鎖値（６４ビット）２５３が生成される。
【００２２】
このＣＦＢ方式の復号化もＣＢＣの復号化と同様のことが適用される。すなわち、暗号化においては、暗号化コア部２０６の出力データ２２９がＸＯＲ、マージ処理後，平文データＢの暗号化のたのために利用される暗号化コア部２０７の入力データ２２６として利用されるため、高速化が困難であるが、復号化の場合は、暗号化コア部２５７の実行には、初期ベクトル２５１および暗号文データＡ２５８のマージ結果を必要とするのみのため、暗号化コア部２５６を実行中に、次の暗号文データＢ２５９に対する暗号化コア部２５７を実行することにより、データのスループットを向上させることができる。この際、ＣＢＣ方式と同様に、複数の暗号化コア部の実行は同時である必要はない。また、一つの暗号化コア部を連続的に実行することでもよい。
【００２３】
図３に、本発明を適用したＤＥＳ暗号機構のＣＢＣ方式およびＣＦＢ方式の復号化の実施形態の構成図を示す。本実施の形態ではＤＥＳ暗号機構は、２つのＤＥＳ演算器３１０と３２０より構成されるとする。他にはＣＢＣとＣＦＢの動作モードを切り替えるなどの制御部を具備するが、図３では省略してある。
【００２４】
図３において、一方のＤＥＳ演算器３１０はデータ入力レジスタ３１１、連鎖値レジスタ３１２、入力データ生成部３１３、次演算用連鎖値生成部３１４、暗号化コア部３１５、出力データ生成部３１６で構成される。他方のＤＥＳ演算器３２０の構成も、ＤＥＳ演算器３１０とまったく同様である。ＤＥＳ演算器３１０の次演算用連鎖値生成部３１４の出力３３０はＤＥＳ演算器３２０の連鎖値レジスタ３２２の入力となり、ＤＥＳ演算器３２０の次演算用連鎖値生成部３２４の出力３３１はＤＥＳ演算器３１０の連鎖値レジスタ３１２の入力となる。各々のＤＥＳ演算器３１０、３２０の暗号化コア部３１５は１６段からなるＤＥＳ暗号化段により構成されている。
【００２５】
なお、図３では、ＤＥＳ演算器は２つとなっているが、３つ以上でも良く、また、データ入力レジスタ３１１と連鎖値レジスタ３１２の値を保持する機構を持てば、ＤＥＳ演算器はパイプライン構造を持つなどして、あるＤＥＳ暗号演算実行中に、次のＤＥＳ暗号演算が実行可能な１つのＤＥＳ演算器でもかまわない。また、データのスループットは少し縮退するが、単純に一つのＤＥＳ演算器で暗号化コア部を連続動作とすることでもよい。さらに、暗号機構は、ＤＥＳ暗号機構である必要はなく、ＣＢＣおよびＣＦＢ方式を有するあらゆる暗号機構に適用される。
【００２６】
最初、ＣＢＣ方式の復号化の場合の動作について説明する。まず、ＤＥＳ演算器３１０のデータ入力レジスタ３１１に暗号文データ３０１および連鎖値レジスタ３１２に初期ベクトル３０２がセットされる。ＣＢＣ方式では、データ入力レジスタ３１１の暗号文データが入力データ生成部３１３で選択されて暗号化コア部３１５の入力となる。該暗号化コア部３１５での復号化終了後、出力データ生成部３１６において、該暗号化コア部３１３の出力データと連鎖値レジスタ３１２の値から平文データ３０４が生成される。ここで、データ入力レジスタ３１１の暗号文データは次演算用連鎖値生成部３１４にも入力され、該次演算用連鎖値生成部３１４により、暗号化コア部３１５においてデータの復号化が実行さる前または実行中に、次の演算用の連鎖値３３０が生成され、ＤＥＳ演算器３２０内に存在する連鎖値レジスタ３２２にセットされる。次の暗号文データ３０３は、該ＤＥＳ演算器３２０内のデータ入力レジスタ３２１にセットされ、これが入力データ生成部３２３で選択されて暗号化コア部３２５の入力となる。該暗号化コア部３２５の出力データと連鎖値レジスタ３２２の値から、出力データ生成部３２６において平文データ３０５が生成される。このＤＥＳ演算器３２０でも、暗号化コア部３１５でデータの復号化が実行される前または実行中に、次演算用連鎖値生成部３２４において、データ入力レジスタ３２１にセットされた暗号文データから次の演算用の連鎖値３３１が生成され、ＤＥＳ演算器３１０の連鎖値レジスタ３１２にセットされる。この時、ＤＥＳ演算器３１０内のデータ入力レジスタ３１１には、次の暗号文データがセットされている。そして、これ以降同様の動作を繰り返すことになる。
【００２７】
次に、ＣＦＢ方式の復号化の場合の動作について説明する。まず、ＤＥＳ演算器３１０のデータ入力レジスタ３１１に暗号文データ３０１および連鎖値レジスタ３１２に初期ベクトル３０２がセットされる。ＣＦＢ方式では、連鎖値レジスタ３１２の値が入力データ生成部３１３で選択されて暗号化コア部３１５の入力となり、出力データ生成部３１６において、該暗号化コア部３１５の出力データとデータ入力レジスタ３１１の暗号文データから平文データ３０４が生成される。ＣＦＢ方式でも、データ入力レジスタ３１１の暗号文データおよび連鎖値レジスタ３１２にセットされた値から、次演算用連鎖値生成部３１４により、暗号化コア部３１５においてデータの復号化が実行さる前または実行中に、次の演算用の連鎖値３３０が生成され、ＤＥＳ演算器３２０内に存在する連鎖値レジスタ３２２にセットされる。これと前後して、該ＤＥＳ演算器３２０内のデータ入力レジスタ３０３には、次の暗号文データ３０３がセットされる。ＤＥＳ演算器３２０では、連鎖値レジスタ３２２の値が入力データ生成部３２３で選択されて暗号化コア部３２５の入力となり、出力データ生成部３２６において、該暗号化コア部３２５の出力データとデータ入力レジスタ３２１の暗号文データから平文データ３０５が生成される。このＤＥＳ演算器３２０でも、暗号化コア部３２５でデータの復号化が実行される前または実行中に、次演算用連鎖値生成部３２４において、データ入力レジスタ３２１と連鎖値レジスタ３２２にセットされた値から次の演算用の連鎖値３３１が生成され、ＤＥＳ演算器３１０内の連鎖値レジスタ３１２にセットされる。そして、これ以降同様の動作を繰り返すことになる。
【００２８】
図３において、データ入力レジスタ３１１および連鎖値レジスタ３１２から次演算用連鎖値３１４を経由して連鎖値レジスタ３２２にいたる経路、同様に、データ入力レジスタ３２１や連鎖値レジスタ３２２から次演算用連鎖値生成部３２４を経由して連鎖値レジスタ３１２にいたる経路にかかる時間は、非常に複雑な演算を実行する暗号化コア部３１５、３２５の実行時間と比較して充分に小さい。したがって、各々のデータ入力レジスタ３１１、３２１および連鎖値レジスタ３１２、３２２にデータを適切なタイミングでセットすることにより、ＤＥＳ演算器３１０、３２０とも常に並列に演算を実行している状態にすることが可能である。
【００２９】
この様に複数の演算器を持つことによりスケーラブルにデータのスループットを向上することが可能である。また、次演算用連鎖値生成部３１４、３２４は従来の方式においてもその機構自体は必要なため、複数のＤＥＳ演算器を持つＤＥＳ暗号機構においては、従来の方式に対して３３０および３３１の経路およびそれを制御するための機構のみを追加することにより実現可能である。
【００３０】
図４に、図３の本発明の実施形態を適用したＤＥＳ暗号機構の動作タイミングチャートの一例として、ＣＢＣ方式の復号化の場合を示す。図４では、図３におけるデータ入力レジスタ３１１，３２１および連鎖値レジスタ３１２，３２２から暗号化コア部３１５，３２５に到達するまでの時間を１サイクル、暗号化コア部３１５，３２５の実行時間を８サイクル、そして、データ入力レジスタ３１１、３２１から次演算用連鎖値生成部３１４、３２４を経て、連鎖値レジスタ３２２、３１２に次の演算用連鎖値がセットされるまでの時間を１サイクルと仮定している。なお、ＣＦＢ方式の復号化に関しても同様のタイミングで実行できる。
【００３１】
ＣＢＣ方式の復号化では、まず、ＤＥＳ演算器３１０にて、データ入力レジスタ３１１に暗号文データＤ０、連鎖値レジスタ３１２に初期化ベクトルＣ０をセットし、Ｄ０を入力データ生成部３１３を経由して暗号化コア部３１５に入力し、暗号化コア部３１５の実行を開始する。そして、暗号化コア部３１５の実行が終了すると、該暗号化コア部３１５から出力されたデータＥ０と連鎖値レジスタ３１２の値Ｃ０から、出力データ生成部３１６において平文データＡ０が生成される。これと並行して、ＤＥＳ演算器３１０では、暗号化コア部３１５の実行中に、データ入力レジスタ３１１のＤ０を次の暗号文データＤ１用の連鎖値Ｃ１として、次演算用連鎖値生成部３１４よりＤＥＳ演算器３２０の連鎖値レジスタ３２２にセットする。
【００３２】
ＤＥＳ演算器３２０では、連鎖値レジスタ３２２に値Ｃ１がセットされるのと前後してデータ入力レジスタ３２１に次の暗号文データＤ１がセットされる。このデータ入力レジスタ３２１のＤ１が入力データ生成部３２３を経由して暗号化コア部３２５に入力され、ＤＥＳ演算器３２０でも、ＤＥＳ演算器３１０における値Ｄ０に対する暗号化コア部３１５の実行とオーバラップして、該Ｄ１に対する暗号化コア部３２５の実行を開始する。そして、暗号化コア部３２５の実行が終了すると、その出力データＥ１と連鎖値レジスタ３２２の値Ｃ１から、出力データ生成部３２６において平文データＡ１が生成される。これと並行して、ＤＥＳ演算器３２０でも、暗号化コア部３２５の実行中に、データ入力レジスタ３２１のＤ１を、その次の平文データＤ２用の連鎖値Ｃ２として、次演算用連鎖値生成部３２４よりＤＥＳ演算器３１０の連鎖値レジスタ３１２にセットする。
【００３３】
ＤＥＳ演算器３１０では、連鎖値レジスタ３２２に値Ｃ２がセットされる前後して、データ入力レジスタ３１１にその次の暗号文データＤ２がセットされ、ＤＥＳ演算器３２０の暗号化コア部３２５の実行とオーバラップして、再び暗号化コア部３１５の実行を開始する。以下、上記と同様の処理が繰り返されることになる。
【００３４】
図４から明らかなように、本発明を適用し、２つのＤＥＳ演算器を用いて次演算用の連鎖値を先行して生成することにより、暗号化コア部実行時間である８サイクルより短い５サイクルピッチの平文データ出力間隔でデータの復号化を実行することが可能になる。さらに、図３における暗号化コア部３１５，３２５の前後処理を改善し、暗号化コア部３１５，３２５を同じ８サイクルピッチで実行することを可能にした場合、２つのＤＥＳ演算器３１０，３２０をもちいて最高４サイクルピッチのデータ復号化が可能になる。
【００３５】
図７に、従来と本発明におけるＤＥＳ暗号機構のＣＢＣ／ＣＦＢ方式の復号化の処理ステージの遷移図を並ベて示す。従来方式および本発明方式における各処理ステージとＤＥＳ暗号機構の各部の対応は図８に示す通りである。
【００３６】
従来のＣＢＣ、ＣＦＢ方式の復号化においては（ＯＦＢ方式も同様）、まず、暗号文データＡに対して、入力データ生成ステージ▲１▼、暗号化コア部実行ステージ▲２▼、出力データおよび連鎖値生成ステージ▲３▼と遷移し、その後、生成された連鎖値を利用して、次の暗号文データＢに対し、同様に入力データ生成ステージ▲１▼、暗号化コア部実行ステージ▲２▼、出力データおよび連鎖値生成ステージ▲３▼とシーケンシャルに遷移する。このため、平文データ出力間隔は、暗号化コア部実行時間以下とすることは不可能である。
【００３７】
一方、本発明のＣＢＣ、ＣＦＢ方式の復号化においては、暗号文データＡに対して、入力データ生成ステージ▲１▼、暗号化コア部実行ステージ▲２▼、出力データ生成▲３▼−Ａと遷移するが、暗号化コア部実行ステージ▲２▼と並行に、次の暗号文データＢのための連鎖値生成ステージ▲３▼−Ｂが実行される。そして、生成された連鎖値を利用して、次の暗号文データＢに対する、入力データ生成ステージ▲１▼、暗号化コア部実行ステージ▲２▼、出力データ生成ステージ▲３▼−Ａが、暗号文データＡに対する処理と並行に進行する。さらに、この暗号文データＢの暗号化コア部実行ステージ▲２▼と並行に、次の暗号文データのための連鎖値生成ステージ▲３▼−Ｂが実行される。このため、平文データ出力間隔は、暗号化コア部実行時間以下とすることが可能である。また、暗号化コア部が一つの場合には、前の復号化の実行が終了したなら、直ちに次の復号化を開始することにより、平文データ出力間隔をほぼ暗号化コア部実行時間とすることが可能である。
【００３８】
以上のことから、複数のＤＥＳ演算器を搭載している暗号機構においては、ほとんどハードウェア資源を浪費すること無くＤＥＳ演算器の数に比例して、ＣＢＣおよびＣＦＢ方式のデータ復号化の高速化を実現でき、また、ＤＥＳ演算器を追加することにより、スケーラブルな高速化が期待できる。また、ＤＥＳ演算器が一つでも、出力データ・連鎖値生成時間を無視できるため、その分高速化が期待できる。
【００３９】
【発明の効果】
本発明によれば、ＤＥＳ暗号機構において、ＣＢＣ方式およびＣＦＢ方式などの動作モードの高速な復号化を実現することができる。さらに、本発明はＤＥＳ暗号機構に限らずＣＢＣ方式およびＣＦＢ方式、それに類似の方式を採用するあらゆる暗号機構において、同様の効果を得ることができる。
【図面の簡単な説明】
【図１】ＣＢＣ方式の暗号化／復号化の概念図を示す。
【図２】ＣＦＢ方式の暗号化／復号化の概念図を示す。
【図３】本発明を適用したＤＥＳ暗号機構のＣＢＣ／ＣＦＢ方式の復号化装置の実施形態を示す。
【図４】本発明を適用したＤＥＳ暗号機構のＣＢＣ方式の復号化のタイミングチャートを示す。
【図５】従来のＤＥＳ暗号機構のＣＢＣ／ＣＦＢ／ＯＦＢ方式の復号化装置の実施形態を示す。
【図６】従来のＤＥＳ暗号機構のＣＢＣ／ＣＦＢ／ＯＦＢ方式の復号化のタイミングチャートを示す。
【図７】従来と本発明における暗号データ復号化の処理ステージの遷移を示す。
【図８】図７の処理ステージとＤＥＳ暗号機構の各部の対応を示す。
【符号の説明】
３１０，３２０  ＤＥＳ演算器
３１１，３２１  データ入力レジスタ
３１２，３２２  連鎖値レジスタ
３１３，３２３  入力データ生成部
３１４，３２４  次演算用連鎖値生成部
３１５，３２５  暗号化コア部
３１６，３２６  出力データ生成部
【図１】
0003824121.tif 000002
【図２】
0003824121.tif 000003
【図３】
0003824121.tif 000004
【図４】
0003824121.tif 000005
【図５】
0003824121.tif 000006
【図６】
0003824121.tif 000007
【図７】
0003824121.tif 000008
【図８】
0003824121.tif 000009