(57)【要約】【課題】ＤＥＳ暗号化方式のＯＦＢモードやＣＦＢモードにおいて文字データ等のデータ・ストリームを暗号化または復号化する際の処理時間を短縮でき、ソフトウェアの処理負担を軽減できる暗号処理装置およびその方法を提供する。【解決手段】初期サイクルでは、ＩＶレジスタ２２の初期データがＩＶデータ保持部３１に取り込まれてブロック暗号演算部１１の演算が実行され、この演算結果の上位Ｌ２ビットが暗号化データ保持部３２およびＩＶデータ保持部３１の保持データにそれぞれ付加される。以降の処理でも同様にブロック暗号演算部１１の演算結果によってＩＶデータ保持部３１および暗号化データ保持部３２の保持データが順次更新される。この処理が入力データＳに含まれるＬ２ビットの単位データの数だけ反復され、最終的な第２のデータ抽出部５２で抽出データと入力データＳとの排他的ＯＲにより暗号化データまたは復号化データが得られる。【選択図】　　　図１
2004045641.tif 000002
【特許請求の範囲】
【請求項１】
供給される第１のデータ長のデータを、供給される鍵データに基づいて暗号化するブロック暗号演算手段と、
上記第１のデータ長を有するデータの保持が可能な初期データ保持手段と、
上記ブロック暗号演算手段において演算されたデータの上位ビット側から、上記第１のデータ長より短い第２のデータ長分のデータを抽出して、上記初期データ保持手段に保持されたデータの下位ビット側に付加し、当該付加後のデータの下位ビット側から上記第１のデータ長分のデータを抽出して出力する第１のデータ抽出手段と、
上記第１のデータ抽出手段から出力されるデータ、または供給される初期データを選択して上記初期データ保持手段に供給する第１の選択手段と、
上記第２のデータ長より長い第３のデータ長を有するデータの保持が可能な暗号化データ保持手段と、
上記ブロック暗号演算手段において演算されたデータの上位ビット側から上記第２のデータ長分のデータを抽出して、上記暗号化データ保持手段に保持されたデータの上位ビット側に付加し、当該付加後のデータの上位ビット側から上記第３のデータ長分のデータを抽出して出力する第２のデータ抽出手段と、
上記第３のデータ長を有する入力データと上記第２のデータ抽出手段の出力データとを受けて、所定の論理演算を実行する論理演算手段と、
初期サイクルにおいて、上記第１の選択手段に上記初期データを選択させて上記初期データ保持手段に保持させ、上記初期データ保持手段の当該保持データを上記ブロック暗号演算手段に供給して演算を実行させ、上記ブロック暗号演算手段の当該演算結果を受けて上記第２のデータ抽出手段から出力されるデータを上記暗号化データ保持手段に保持させ、上記ブロック暗号演算手段の当該演算結果を受けて上記第１のデータ抽出手段から出力されるデータを上記第１の選択手段に選択させて上記初期データ保持手段に保持させ、上記初期サイクルに続く処理において、上記第１の選択手段に上記第１のデータ抽出手段の出力データを選択させた状態で、上記第２のデータ長と上記第３のデータ長とに応じたサイクル数だけ、上記初期サイクルと同等の処理を反復させる制御手段とを有し、
上記制御手段の最後の処理サイクルにおいて、上記ブロック演算手段の演算結果を受けて上記第２のデータ抽出手段から出力されるデータと上記入力データとが上記論理演算手段において演算された結果を、上記入力データに対応する暗号化データまたは復号化データとして出力する、
暗号処理装置。
【請求項２】
上記第３のデータ長を有するデータの保持が可能な入力データ保持手段と、
上記入力データ保持手段に保持されたデータを、上記第２のデータ長だけ下位ビット側にシフトさせるとともに、当該シフトによって最下位ビットからあふれるデータを上位ビット側へ戻すビット・ローテイト手段と、
上記ビット・ローテイト手段に処理されたデータ、または供給される上記入力データを選択して上記入力データ保持手段に供給する第２の選択手段とを更に含み、
上記論理演算手段は、上記入力データ保持手段に保持されたデータと上記第２のデータ抽出手段の出力データとを受けて上記所定の論理演算を実行し、
上記制御手段は、上記初期サイクルにおいて、上記第２の選択手段に上記入力データを選択させて上記入力データ保持手段に保持させ、上記入力データ保持手段の当該保持データに対して上記ビット・ローテイト手段の処理を行わせ、当該処理後のデータを上記第２の選択手段に選択させて上記入力データ保持手段に保持させ、上記初期サイクルに続く処理サイクルにおいて、上記ビット・ローテイト手段に処理されたデータを上記第２の選択手段に選択させて上記入力データ保持手段に保持させ、
上記制御手段の各処理サイクルにおいて、上記ブロック演算手段の演算結果を受けて上記第２のデータ抽出手段から出力されるデータと上記入力データ保持手段に保持されたデータとが上記論理演算手段において演算された結果のうち、少なくとも上記第２のデータ長分のデータを、上記入力データに含まれる１つまたは複数の第２のデータ長を有した単位データに対応する暗号化データまたは復号化データとして出力する、
請求項１に記載の暗号処理装置。
【請求項３】
供給される第１のデータ長のデータを、供給される鍵データに基づいて暗号化するブロック暗号演算手段と、
上記第１のデータ長を有するデータの保持が可能な初期データ保持手段と、
供給されるデータの上位ビット側から第２のデータ長分のデータを抽出して、上記初期データ保持手段に保持されたデータの下位ビット側に付加し、当該付加後のデータの下位ビット側から上記第１のデータ長分のデータを抽出して出力する第１のデータ抽出手段と、
上記第１のデータ抽出手段から出力されるデータ、または供給される初期データを選択して上記初期データ保持手段に供給する第１の選択手段と、
上記第２のデータ長より長い第３のデータ長を有するデータの保持が可能な暗号化データ保持手段および入力データ保持手段と、
上記ブロック暗号演算手段において演算されたデータの上位ビット側から上記第２のデータ長分のデータを抽出して、上記暗号化データ保持手段に保持されたデータの上位ビット側に付加し、当該付加後のデータの上位ビット側から上記第３のデータ長分のデータを抽出して出力する第２のデータ抽出手段と、
上記入力データ保持手段に保持されたデータを、上記第２のデータ長だけ下位ビット側にシフトさせるとともに、当該シフトによって最下位ビットからあふれるデータを上位ビット側へ戻すビット・ローテイト手段と、
上記ビット・ローテイト手段に処理されたデータ、または上記第３のデータ長を有した入力データを選択して上記入力データ保持手段に供給する第２の選択手段と、
上記入力データ保持手段に保持されたデータと上記第２のデータ抽出手段の出力データとを受けて、所定の論理演算を実行する第１の論理演算手段と、
上記入力データ保持手段に保持されたデータと上記ブロック暗号演算手段において演算されたデータとを受けて、上記所定の論理演算を実行する第２の論理演算手段と、
上記入力データ保持手段に保持されたデータ、または上記第２の論理演算手段において演算されたデータを選択して上記第１のデータ抽出手段に供給する第３の選択手段と、
第１の操作モードの暗号化処理を行う場合、その初期サイクルにおいて、上記第１の選択手段に上記初期データを選択させて上記初期データ保持手段に保持させ、上記初期データ保持手段の当該保持データを上記ブロック暗号演算手段に供給して演算を実行させ、上記ブロック暗号演算手段の当該演算結果を受けて上記第２のデータ抽出手段から出力されるデータを上記暗号化データ保持手段に保持させ、上記第２の選択手段に上記入力データを選択させて上記入力データ保持手段に保持させ、上記入力データ保持手段の当該保持データに対して上記ビット・ローテイト手段の処理を行わせ、当該処理後のデータを上記第２の選択手段に選択させて上記入力データ保持手段に保持させ、上記入力データ保持手段の当該保持データと上記ブロック暗号演算手段の当該演算結果とを受けた上記第２の論理演算手段の演算結果を上記第３の選択手段に選択させて上記第１のデータ抽出手段に供給させ、当該供給データを受けて上記第１のデータ抽出手段から出力されるデータを上記第１の選択手段に選択させて上記初期データ保持手段に保持させ、当該初期サイクルに続く処理において、上記第１の選択手段に上記第１のデータ抽出手段の出力データを、上記第２の選択手段に上記ビット・ローテイト手段の処理データをそれぞれ選択させた状態で、上記第２のデータ長と上記第３のデータ長とに応じたサイクル数だけ、上記初期サイクルと同等の処理を反復させ、
上記第１の操作モードの復号化処理を行う場合には、その初期サイクルにおいて、上記第１の選択手段に上記初期データを選択させて上記初期データ保持手段に保持させ、上記初期データ保持手段の当該保持データを上記ブロック暗号演算手段に供給して演算を実行させ、上記ブロック暗号演算手段の当該演算結果を受けて上記第２のデータ抽出手段から出力されるデータを上記暗号化データ保持手段に保持させ、上記第２の選択手段に上記入力データを選択させて上記入力データ保持手段に保持させ、上記入力データ保持手段の当該保持データに対して上記ビット・ローテイト手段の処理を行わせ、当該処理後のデータを上記第２の選択手段に選択させて上記入力データ保持手段に保持させ、当該保持データを上記第３の選択手段に選択させて上記第１のデータ抽出手段に供給させ、当該供給データを受けて上記第１のデータ抽出手段から出力されるデータを上記第１の選択手段に選択させて上記初期データ保持手段に保持させ、当該初期サイクルに続く処理において、上記第１の選択手段に上記第１のデータ抽出手段の出力データを、上記第２の選択手段に上記ビット・ローテイト手段の処理データをそれぞれ選択させた状態で、上記第２のデータ長と上記第３のデータ長とに応じたサイクル数だけ、当該初期サイクルと同等の処理を反復させる制御手段とを有し、
上記制御手段の各処理サイクルにおいて、上記ブロック演算手段の演算結果を受けて上記第２のデータ抽出手段から出力されるデータと、上記入力データ保持手段に保持された上記ビット・ローテイト手段の処理後のデータとが上記第１の論理演算手段において演算された結果のうち、少なくとも上記第２のデータ長分のデータを、上記入力データに含まれる１つまたは複数の第２のデータ長を有した単位データに対応する暗号化データまたは復号化データとして出力する、
暗号処理装置。
【請求項４】
上記第３の選択手段は、上記ブロック暗号演算手段の演算結果を選択して上記第１のデータ抽出手段に供給可能であり、
上記制御手段は、第２の操作モードの暗号化処理または復号化処理を行う場合、上記第２の選択手段に上記入力データを選択させて上記入力データ保持手段に保持させ、その初期サイクルにおいて、上記第１の選択手段に上記初期データを選択させて上記初期データ保持手段に保持させ、上記初期データ保持手段の当該保持データを上記ブロック暗号演算手段に供給して演算を実行させ、上記ブロック暗号演算手段の当該演算結果を受けて上記第２のデータ抽出手段から出力されるデータを上記暗号化データ保持手段に保持させ、上記ブロック暗号演算手段の当該演算結果を上記第３の選択手段に選択させて上記第１のデータ抽出手段に供給させ、当該供給データを受けて上記第１のデータ抽出手段から出力されるデータを上記第１の選択手段に選択させて上記初期データ保持手段に保持させ、上記初期サイクルに続く処理において、上記第１の選択手段に上記第１のデータ抽出手段の出力データを選択させた状態で、上記第１のデータ長と上記第２のデータ長とに応じたサイクル数だけ、上記初期サイクルと同等の処理を反復させ、
上記制御手段の最後の処理サイクルにおいて、上記ブロック演算手段の演算結果を受けて上記第２のデータ抽出手段から出力されるデータと上記入力データ保持手段に保持された入力データとが上記第１の論理演算手段において演算された結果を、上記入力データに対応する暗号化データまたは復号化データとして出力する、
請求項３に記載の暗号処理装置。
【請求項５】
上記制御手段は、上記第２の操作モードの暗号化処理または復号化処理を行う場合、上記初期サイクルにおいて、上記第２の選択手段に上記入力データを選択させて上記入力データ保持手段に保持させ、上記入力データ保持手段の当該保持データに対して上記ビット・ローテイト手段の処理を行わせ、当該処理後のデータを上記第２の選択手段に選択させて上記入力データ保持手段に保持させ、上記初期サイクルに続く処理サイクルにおいて、上記ビット・ローテイト手段に処理されたデータを上記第２の選択手段に選択させて上記入力データ保持手段に保持させ、
上記制御手段の各処理サイクルにおいて、上記ブロック演算手段の演算結果を受けて上記第２のデータ抽出手段から出力されるデータと上記入力データ保持手段に保持されたデータとが上記第１の論理演算手段において演算された結果のうち、少なくとも上記第２のデータ長分のデータを、上記入力データに含まれる１つまたは複数の第２のデータ長を有した単位データに対応する暗号化データまたは復号化データとして出力する、
請求項４に記載の暗号処理装置。
【請求項６】
上記初期データ保持手段に保持されたデータ、または上記入力データ保持手段に保持されたデータを選択して上記ブロック暗号演算手段に供給する第４の選択手段と、
上記第１の論理演算手段において演算されたデータ、または上記ブロック暗号演算手段において演算されたデータを選択して出力する第５の選択手段とを更に含み、
上記ブロック暗号演算手段は、供給されるデータの暗号化演算または復号化演算を行い、
上記制御手段は、第３の操作モードの暗号化処理または復号化処理を行う場合、上記第２の選択手段に上記入力データを選択させて上記入力データ保持手段に保持させ、上記第４の選択手段に上記入力データ保持手段の当該保持データを選択させて上記ブロック暗号演算手段に供給し、その演算を実行させ、上記ブロック暗号演算手段の当該演算結果を上記第５の選択手段に選択させて出力させ、上記第１の操作モードまたは上記第２の操作モードの処理を行う場合には、上記初期データ保持手段の保持データを上記第４の選択手段に選択させて上記ブロック暗号演算手段に供給させるとともに、上記第１の論理演算手段の演算データを上記第５の選択手段に選択させて出力させ、
上記第５の選択手段から、上記入力データに対応する暗号化データまたは復号化データを出力する、
請求項４に記載の暗号処理装置。
【請求項７】
上記初期データ保持手段に保持されたデータと上記入力データ保持手段に保持されたデータとを受けて、上記所定の論理演算を実行する第３の論理演算手段と、
上記初期データ保持手段に保持されたデータと上記ブロック暗号演算手段において演算されたデータとを受けて、上記所定の論理演算を実行する第４の論理演算手段とを更に含み、
上記第４の選択手段は、上記第３の論理演算手段において演算されたデータを選択して上記ブロック暗号演算手段に供給可能であり、
上記第５の選択手段は、上記第４の論理演算手段において演算されたデータを選択して出力可能であり、
上記制御手段は、第４の操作モードの暗号化処理を行う場合、その初期サイクルにおいて、上記第１の選択手段に上記初期データを選択させて上記初期データ保持手段に保持させ、上記第２の選択手段に上記入力データを選択させて上記入力データ保持手段に保持させ、上記初期データ保持手段の当該保持データと上記入力データ保持手段の当該保持データとを受けた上記第３の論理演算手段の演算結果を上記第４の選択手段に選択させて上記ブロック暗号演算手段に供給し、その演算を実行させ、上記ブロック暗号演算手段の当該演算結果を上記第５の選択手段に選択させて出力させ、上記ブロック暗号演算手段の当該演算結果を上記第３の選択手段に選択させて上記第１のデータ抽出手段に供給させ、上記第１のデータ抽出手段に当該供給データの上記第１のデータ長分のデータを抽出させ、上記第１のデータ抽出手段の当該抽出データを上記第１の選択手段に選択させて上記初期データ保持手段に保持させ、当該初期サイクルに続く処理サイクルにおいて、上記第１の選択手段に上記第１のデータ抽出手段の抽出データを選択させた状態で、当該初期サイクルと同等の処理を実行させ、
上記第４の操作モードの復号化処理を行う場合には、その初期サイクルにおいて、上記第１の選択手段に上記初期データを選択させて上記初期データ保持手段に保持させ、上記第２の選択手段に上記入力データを選択させて上記入力データ保持手段に保持させ、上記入力データ保持手段の当該保持データを上記第４の選択手段に選択させて上記ブロック暗号演算手段に供給し、その演算を実行させ、上記ブロック暗号演算手段の当該演算結果と上記初期データ保持手段の当該保持データとを受けた上記第４の論理演算手段の演算結果を上記第５の選択手段に選択させて出力させ、上記入力データ保持手段の当該保持データを上記第３の選択手段に選択させて上記第１のデータ抽出手段に供給させ、上記第１のデータ抽出手段に当該供給データの上記第１のデータ長分のデータを抽出させ、上記第１のデータ抽出手段の当該抽出データを上記第１の選択手段に選択させて上記初期データ保持手段に保持させ、当該初期サイクルに続く処理サイクルにおいて、上記第１の選択手段に上記第１のデータ抽出手段の抽出データを選択させた状態で、当該初期サイクルと同等の処理を実行させる、
請求項６に記載の暗号処理装置。
【請求項８】
第１のデータ長を有する初期データを初期データ保持装置に保持させ、与えられた鍵データに基づいて、当該初期データを暗号化する第１のステップと、
上記第１のステップにおいて暗号化されたデータの上位ビット側から、上記第１のデータ長より短い第２のデータ長分のデータを抽出し、当該抽出データを上位ビットとした、上記第２のデータ長より長い第３のデータ長を有するデータを生成して、暗号化データ保持装置に保持させる第２のステップと、
上記第１のステップにおいて暗号化されたデータの上位ビット側から上記第２のデータ長分のデータを抽出して、上記初期データ保持装置に保持された初期データの下位ビット側に付加し、当該付加後のデータの下位ビット側から上記第１のデータ長分のデータを抽出して、上記初期データ保持装置に保持された初期データを当該抽出データに更新する第３のステップとを含んだ初期ステップに続けて、
上記初期データ保持装置に保持されたデータを、上記鍵データに基づいて暗号化する第４のステップと、
上記第４のステップにおいて暗号化されたデータの上位ビット側から上記第２のデータ長分のデータを抽出して、上記暗号化データ保持装置に保持されたデータの上位ビット側に付加し、当該付加後のデータの上位ビット側から上記第３のデータ長分のデータを抽出して、上記暗号化データ保持装置に保持されたデータを当該抽出データに更新する第５のステップと、
上記第４のステップにおいて暗号化されたデータの上位ビット側から上記第２のデータ長分のデータを抽出して、上記初期データ保持装置に保持されたデータの下位ビット側に付加し、当該付加後のデータの下位ビット側から上記第１のデータ長分のデータを抽出して、上記初期データ保持装置に保持されたデータを当該抽出データに更新する第６のステップとを含んだ反復ステップを、上記第２のデータ長と上記第３のデータ長とに応じた回数だけ反復し、
最後の上記第５のステップにおいて抽出される上記第３のデータ長のデータと、上記第３のデータ長を有する入力データとに所定の論理演算を行って、当該入力データに対応した暗号化データまたは復号化データを生成する、
暗号処理方法。
【請求項９】
第１のデータ長を有する初期データを初期データ保持装置に保持させ、与えられた鍵データに基づいて、当該初期データを暗号化する第１のステップと、
第３のデータ長を有する入力データを、上記第１のデータ長および上記第３のデータ長より短い第２のデータ長だけ下位ビット側にシフトさせるとともに、当該シフトによって最下位ビットからあふれるデータを上位ビット側へ戻す処理を行い、当該処理後のデータを入力データ保持装置に保持させる第２のステップと、
上記第１のステップにおいて暗号化されたデータの上位ビット側から上記第２のデータ長分のデータを抽出し、当該抽出データを上位ビットとした上記第３のデータ長を有するデータを生成して、暗号化データ保持装置に保持させる第３のステップと、
上記第１のステップにおいて暗号化されたデータの上位ビット側から上記第２のデータ長分のデータを抽出して、上記初期データ保持装置に保持された初期データの下位ビット側に付加し、当該付加後のデータの下位ビット側から上記第１のデータ長分のデータを抽出して、上記初期データ保持装置に保持された初期データを当該抽出データに更新する第４のステップと、
上記入力データ保持装置に保持されたデータと、上記第３のステップで生成された上記第３のデータ長を有するデータとに所定の論理演算を行って、上記入力データに含まれる上記第２のデータ長を有した単位データに対応する暗号化データまたは復号化データを生成する第５のステップとを含んだ初期ステップに続けて、
上記初期データ保持装置に保持されたデータを、上記鍵データに基づいて暗号化する第６のステップと、
上記入力データ保持装置に保持されたデータを、上記第２のデータ長だけ下位ビット側にシフトさせるとともに、当該シフトによって最下位ビットからあふれるデータを上位ビット側へ戻す処理を行い、上記入力データ保持装置に保持されたデータを当該処理後のデータに更新する第７のステップと、
上記第６のステップにおいて暗号化されたデータの上位ビット側から第２のデータ長分のデータを抽出して、上記暗号化データ保持装置に保持されたデータの上位ビット側に付加し、当該付加後のデータの上位ビット側から上記第３のデータ長分のデータを抽出して、上記暗号化データ保持装置に保持されたデータを当該抽出データに更新する第８のステップと、
上記第６のステップにおいて暗号化されたデータの上位ビット側から第２のデータ長分のデータを抽出して、上記初期データ保持装置に保持されたデータの下位ビット側に付加し、当該付加後のデータの下位ビット側から上記第１のデータ長分のデータを抽出して、上記初期データ保持装置に保持されたデータを当該抽出データに更新する第９のステップと、
上記入力データ保持装置の上記更新されたデータと、上記第８のステップで抽出された上記第３のデータ長を有するデータとに上記所定の論理演算を行って、少なくとも１つの上記単位データに対応する暗号化データまたは復号化データを生成する第１０のステップとを含んだ反復ステップを、上記第２のデータ長と上記第３のデータ長とに応じた回数だけ反復する、
暗号処理方法。
【請求項１０】
第１のデータ長を有する初期データを初期データ保持装置に保持させ、与えられた鍵データに基づいて、当該初期データを暗号化する第１のステップと、
第３のデータ長を有する入力データを、上記第１のデータ長および上記第３のデータ長より短い第２のデータ長だけ下位ビット側にシフトさせるとともに、当該シフトによって最下位ビットからあふれるデータを上位ビット側へ戻す処理を行い、当該処理後のデータを入力データ保持装置に保持させる第２のステップと、
上記第１のステップにおいて暗号化されたデータの上位ビット側から上記第２のデータ長分のデータを抽出し、当該抽出データを上位ビットとした上記第３のデータ長を有するデータを生成して、暗号化データ保持装置に保持させる第３のステップと、
上記第１のステップにおいて暗号化されたデータと、上記入力データ保持装置に保持されたデータとに所定の論理演算を行い、当該演算結果の上位ビット側から上記第２のデータ長分のデータを抽出して、上記初期データ保持装置に保持された初期データの下位ビット側に付加し、当該付加後のデータの下位ビット側から上記第１のデータ長分のデータを抽出して、上記初期データ保持装置に保持された初期データを当該抽出データに更新する第４のステップと、
上記入力データ保持装置に保持されたデータと、上記第３のステップで生成された上記第３のデータ長を有するデータとに上記所定の論理演算を行って、上記入力データに含まれる上記第２のデータ長を有した単位データに対応する暗号化データを生成する第５のステップとを含んだ初期ステップに続けて、
上記初期データ保持装置に保持されたデータを、上記鍵データに基づいて暗号化する第６のステップと、
上記入力データ保持装置に保持されたデータを、上記第２のデータ長だけ下位ビット側にシフトさせるとともに、当該シフトによって最下位ビットからあふれるデータを上位ビット側へ戻す処理を行い、上記入力データ保持装置に保持されたデータを当該処理後のデータに更新する第７のステップと、
上記第６のステップにおいて暗号化されたデータの上位ビット側から第２のデータ長分のデータを抽出して、上記暗号化データ保持装置に保持されたデータの上位ビット側に付加し、当該付加後のデータの上位ビット側から上記第３のデータ長分のデータを抽出して、上記暗号化データ保持装置に保持されたデータを当該抽出データに更新する第８のステップと、
上記第６のステップにおいて暗号化されたデータと、上記入力データ保持装置の上記更新されたデータとに上記所定の論理演算を行い、当該演算結果の上位ビット側から第２のデータ長分のデータを抽出して、上記初期データ保持装置に保持されたデータの下位ビット側に付加し、当該付加後のデータの下位ビット側から上記第１のデータ長分のデータを抽出して、上記初期データ保持装置に保持されたデータを当該抽出データに更新する第９のステップと、
上記入力データ保持装置の上記更新されたデータと、上記第８のステップで抽出された上記第３のデータ長を有するデータとに上記所定の論理演算を行って、少なくとも１つの上記単位データに対応する暗号化データを生成する第１０のステップとを含んだ反復ステップを、上記第２のデータ長と上記第３のデータ長とに応じた回数だけ反復する、
暗号処理方法。
【請求項１１】
第１のデータ長を有する初期データを初期データ保持装置に保持させ、与えられた鍵データに基づいて、当該初期データを暗号化する第１のステップと、
第３のデータ長を有する暗号化された入力データを、上記第１のデータ長および上記第３のデータ長より短い第２のデータ長だけ下位ビット側にシフトさせるとともに、当該シフトによって最下位ビットからあふれるデータを上位ビット側へ戻す処理を行い、当該処理後のデータを入力データ保持装置に保持させる第２のステップと、
上記第１のステップにおいて暗号化されたデータの上位ビット側から上記第２のデータ長分のデータを抽出し、当該抽出データを上位ビットとした上記第３のデータ長を有するデータを生成して、暗号化データ保持装置に保持させる第３のステップと、
上記入力データ保持装置に保持されたデータの上位ビット側から上記第２のデータ長分のデータを抽出して、上記初期データ保持装置に保持された初期データの下位ビット側に付加し、当該付加後のデータの下位ビット側から上記第１のデータ長分のデータを抽出して、上記初期データ保持装置に保持された初期データを当該抽出データに更新する第４のステップと、
上記入力データ保持装置に保持されたデータと、上記第３のステップで生成された上記第３のデータ長を有するデータとに所定の論理演算を行って、上記入力データに含まれる上記第２のデータ長を有した単位データに対応する復号化データを生成する第５のステップとを含んだ初期ステップに続けて、
上記初期データ保持装置に保持されたデータを、上記鍵データに基づいて暗号化する第６のステップと、
上記入力データ保持装置に保持されたデータを、上記第２のデータ長だけ下位ビット側にシフトさせるとともに、当該シフトによって最下位ビットからあふれるデータを上位ビット側へ戻す処理を行い、上記入力データ保持装置に保持されたデータを当該処理後のデータに更新する第７のステップと、
上記第６のステップにおいて暗号化されたデータの上位ビット側から第２のデータ長分のデータを抽出して、上記暗号化データ保持装置に保持されたデータの上位ビット側に付加し、当該付加後のデータの上位ビット側から上記第３のデータ長分のデータを抽出して、上記暗号化データ保持装置に保持されたデータを当該抽出データに更新する第８のステップと、
上記入力データ保持装置の上記更新されたデータの上位ビット側から第２のデータ長分のデータを抽出して、上記初期データ保持装置に保持されたデータの下位ビット側に付加し、当該付加後のデータの下位ビット側から上記第１のデータ長分のデータを抽出して、上記初期データ保持装置に保持されたデータを当該抽出データに更新する第９のステップと、
上記入力データ保持装置の上記更新されたデータと、上記第８のステップで抽出された上記第３のデータ長を有するデータとに上記所定の論理演算を行って、少なくとも１つの上記単位データに対応する復号化データを生成する第１０のステップとを含んだ反復ステップを、上記第２のデータ長と上記第３のデータ長とに応じた回数だけ反復する、
暗号処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は暗号処理装置およびその方法に係り、例えば、ＤＥＳ暗号などのブロック暗号化方式を用いた暗号処理装置およびその方法に関するものである。
【０００２】
【従来の技術】
デジタル・データの暗号化方式には様々な方式があるが、一定の長さを有したデータをそのブロック単位で暗号化するブロック暗号化方式のうち、現在最も広範に用いられている暗号化アルゴリズムとして、ＤＥＳ（ｄａｔａ　ｅｎｃｒｙｐｔｉｏｎ　ｓｔａｎｄａｒｄ）暗号が知られている。ＤＥＳ暗号は、米国標準暗号ＦＩＰＳ（ｆｅｄｅｒａｌ　ｉｎｆｏｒｍａｔｉｏｎ　ｐｒｏｃｅｓｓｉｎｇ　ｓｔａｎｄａｒｄ）４６−２において規定されている標準化された暗号である。
【０００３】
このＤＥＳ暗号では、ＦＩＰＳ８１において、４つの操作モード（ＥＣＢモード、ＣＢＣモード、ＯＦＢモードおよびＣＦＢモード）が定められている。
【０００４】
図２１は、ＥＣＢ（ｅｌｅｃｔｒｏｎｉｃ　ｃｏｄｅｂｏｏｋ）モードの概要を説明するための図である。
ＥＣＢモードでは、送信される６４ビットのメッセージＭが送信者側のＤＥＳ暗号演算部１ａにおいてＤＥＳ暗号化方式により暗号化されて、６４ビットの暗号文Ｃに変換される。この暗号文Ｃは、受信者側のＤＥＳ暗号演算部１ｂにおいてＤＥＳ暗号化方式により復号化されて、元のメッセージＭに復元される。
ＥＣＢモードは基本的な操作モードであり、構成が最も単純であるが、同一のメッセージＭが常に同一の暗号文Ｃに暗号化されてしまう弱点がある。
【０００５】
図２２は、ＣＢＣ（ｃｉｐｈｅｒ　ｂｌｏｃｋ　ｃｈａｉｎｉｎｇ）モードの概要を説明するための図である。
ＣＢＣモードでは、送信側のレジスタ２ａに前回送信された暗号文が保持されており、この保持された前回の暗号文とメッセージＭとの排他的論理和が演算回路３ａにおいて演算される。この演算結果がＤＥＳ暗号演算部１ａにおいて暗号化されることにより、暗号文Ｃが生成される。生成された暗号文Ｃはレジスタ２ａに保持され、次回送信されるメッセージとの排他的論理和の演算に用いられる。暗号文Ｃの受信側では、レジスタ２ｂに前回受信された暗号文が保持されており、この保持された暗号文と、その次に受信された暗号文ＣがＤＥＳ暗号演算部１ｂにおいて復号化されたデータとの排他的論理和が演算回路３ｂにおいて演算されることにより、元のメッセージＭが復元される。
【０００６】
図２３は、ＯＦＢ（ｏｕｔｐｕｔ　ｆｅｅｄｂａｃｋ）モードの概要を説明するための図である。
ＯＦＢモードでは、初期状態において６４ビットのＩＶ（ｉｎｉｔｉａｌ　ｖｅｃｔｏｒ）データがレジスタ２ａに保持され、このＩＶデータがＤＥＳ暗号演算部１ａにおいて暗号化されて、暗号化データＥが出力される。次いで、暗号化データＥの上位ｋ（ただしｋは１≦ｋ≦６４の整数を示す）ビット分のデータからデータ抽出部４ａにより乱数データＲが抽出され、これとメッセージＭとの排他的論理和が演算回路３ａにおいて演算される。この演算結果からｋビットの暗号文Ｃが得られる。また乱数データＲは、レジスタ２ａに保持されたＩＶデータの下位ビット側に付加され、その上位ｋビット分のデータが棄却される。こうしてできる６４ビットのデータがレジスタ２ａにおいて新たに保持されて、次回送信される暗号文の乱数データを生成するために用いられる。暗号文Ｃの受信側でも、送信側と同様な構成によって同一の乱数データＲが生成され、これと暗号文Ｃの排他的論理和の演算結果から、元のメッセージＭが復元される。
【０００７】
図２４は、ＣＦＢ（ｃｉｐｈｅｒ　ｆｅｅｄｂａｃｋ）モードの概要を説明するための図である。
ＣＦＢモードでは、レジスタに帰還されるデータが暗号文である点を除いて、ＯＦＢモードと同様の動作により暗号文が生成される。
すなわち、初期状態においてＩＶデータがレジスタ２ａに保持され、このＩＶデータがＤＥＳ暗号演算部１ａにおいて暗号化されて、暗号化データＥが出力される。次いで、暗号化データＥの上位ｋビット分のデータから乱数データＲが抽出され、これとｋビットのメッセージＭとの排他的論理和演算によって、ｋビットの暗号文Ｃが生成される。生成されたｋビットの暗号文Ｃは、レジスタ２ａに保持されたＩＶデータの下位ビット側に付加され、その上位ｋビット分のデータが棄却されて、レジスタ２ａに保持される。次回送信される暗号文の乱数データは、この更新されたデータを用いて生成される。
【０００８】
暗号文Ｃの受信側では、初期状態においてＩＶデータがレジスタ２ｂに保持され、このＩＶデータがＤＥＳ暗号演算部１ｂにおいて暗号化されて、暗号化データＥが出力される。次いで、暗号化データＥの上位のｋビット分のデータから乱数データＲが抽出され、これとｋビットの暗号文Ｃとの排他的論理和演算によって、ｋビットのメッセージＭが復元される。受信されたｋビットの暗号文Ｃは、レジスタ２ｂに保持されたＩＶデータの下位ビット側に付加され、その上位ｋビット分のデータが棄却されて、レジスタ２ｂに保持される。次回受信する暗号文との排他的論理和演算が行われる乱数データは、この更新されたデータを用いて生成される。
【０００９】
【発明が解決しようとする課題】
上述したＯＦＢモードおよびＣＦＢモードを用いれば、ＤＥＳ暗号の１ブロック単位である６４ビットよりもデータ長の短い単位で暗号化や復号化を行うことができる。例えば、文字単位の暗号化データで構成されるデータ・ストリームによってメッセージを伝送する場合に、送信側において供給された文字データを直ちに暗号化してデータ・ストリームに乗せることができる。また、これを受信側において直ちに復号化して文字データに復元することができる。したがって、ブロック単位で伝送が行われる他の操作モードに比べて、文字データなどの短いデータの暗号化や復号化を効率的に行うことが可能になるとともに、その処理時間を短縮することができる。
【００１０】
しかしながら、上述のようにデータ長の短い単位で暗号化や復号化を行うことができたとしても、このようなデータを複数連続的に暗号化または復号化する場合には、生成された複数の暗号化データや復号化データを順次処理する必要がある。例えば、生成されたデータがレジスタ等に順次出力される場合、レジスタに保持された前回のデータが次に出力されるデータによって上書きされてしまわなように、これを別の記憶媒体へ順次移動させる処理が必要になる。通常、このような処理はソフトウェアによって制御されており、データが生成される度にこうした処理を実行する必要がある。このため、暗号化や復号化に要する処理時間が長くなってしまう問題や、ソフトウェアの処理が複雑化してしまう問題が生じる。
【００１１】
また、ＯＦＢモードおよびＣＦＢモードの特徴として、ＤＥＳ暗号演算部から出力される６４ビットのデータのうち、上位の所定ビット分のデータ（上述の例ではｋビット分のデータ）が有効なデータとしてメッセージの暗号化や復号化に用いられるので、これらのモードとＥＣＢモードやＣＢＣモードとを併用する場合には、ＤＥＳ暗号の演算結果のうちの有効でないビットのデータを処理しないように制御する必要がある。このような制御も、一般的にソフトウェアで処理されるため、上述と同様に処理時間の増大やソフトウェアの複雑化などの問題が生じる。
【００１２】
本発明はかかる事情に鑑みてなされたものであり、その目的は、ブロック暗号化方式を用いて単位ブロック・データよりもデータ長の短い複数のデータを順次暗号化または復号化する場合において、処理時間をより短くすることができ、ソフトウェアによる処理の負担を軽減できる暗号処理装置およびその方法を提供することにある。
【００１３】
【課題を解決するための手段】
上記の目的を達成するため、本発明の第１の観点に係る暗号処理装置は、供給される第１のデータ長のデータを、供給される鍵データに基づいて暗号化するブロック暗号演算手段と、上記第１のデータ長を有するデータの保持が可能な初期データ保持手段と、上記ブロック暗号演算手段において演算されたデータの上位ビット側から、上記第１のデータ長より短い第２のデータ長分のデータを抽出して、上記初期データ保持手段に保持されたデータの下位ビット側に付加し、当該付加後のデータの下位ビット側から上記第１のデータ長分のデータを抽出して出力する第１のデータ抽出手段と、上記第１のデータ抽出手段から出力されるデータ、または供給される初期データを選択して上記初期データ保持手段に供給する第１の選択手段と、上記第２のデータ長より長い第３のデータ長を有するデータの保持が可能な暗号化データ保持手段と、上記ブロック暗号演算手段において演算されたデータの上位ビット側から上記第２のデータ長分のデータを抽出して、上記暗号化データ保持手段に保持されたデータの上位ビット側に付加し、当該付加後のデータの上位ビット側から上記第３のデータ長分のデータを抽出して出力する第２のデータ抽出手段と、上記第３のデータ長を有する入力データと上記第２のデータ抽出手段の出力データとを受けて、所定の論理演算を実行する論理演算手段と、初期サイクルにおいて、上記第１の選択手段に上記初期データを選択させて上記初期データ保持手段に保持させ、上記初期データ保持手段の当該保持データを上記ブロック暗号演算手段に供給して演算を実行させ、上記ブロック暗号演算手段の当該演算結果を受けて上記第２のデータ抽出手段から出力されるデータを上記暗号化データ保持手段に保持させ、上記ブロック暗号演算手段の当該演算結果を受けて上記第１のデータ抽出手段から出力されるデータを上記第１の選択手段に選択させて上記初期データ保持手段に保持させ、上記初期サイクルに続く処理において、上記第１の選択手段に上記第１のデータ抽出手段の出力データを選択させた状態で、上記第２のデータ長と上記第３のデータ長とに応じたサイクル数だけ、上記初期サイクルと同等の処理を反復させる制御手段とを有し、上記制御手段の最後の処理サイクルにおいて、上記ブロック演算手段の演算結果を受けて上記第２のデータ抽出手段から出力されるデータと上記入力データとが上記論理演算手段において演算された結果を、上記入力データに対応する暗号化データまたは復号化データとして出力する。
【００１４】
本発明の第１の観点に係る暗号処理装置によれば、上記初期サイクルでは、上記第１の選択手段において上記初期データが選択されて上記初期データ保持手段に保持され、当該保持データが上記ブロック暗号演算手段に供給されて上記鍵データに基づいた演算が実行される。上記ブロック暗号演算手段の当該演算結果は、上記第２のデータ抽出手段に供給され、これを受けて上記第２のデータ抽出手段から出力されるデータが上記暗号化データ保持手段に保持される。また、上記ブロック暗号演算手段の当該演算結果は上記第１のデータ抽出手段にも供給され、これを受けて上記第１のデータ抽出手段から出力されるデータは、上記第１の選択手段において選択されて上記初期データ保持手段に保持される。この保持データが、次回のサイクルにおいて上記ブロック暗号演算手段に供給される。上記初期サイクルに続く処理では、上記第１の選択手段において上記第１のデータ抽出手段の出力データが選択された状態で、上記第２のデータ長と上記第３のデータ長とに応じたサイクル数だけ、上記初期サイクルと同等の処理が反復される。当該処理の反復後、最後の処理サイクルにおいて上記ブロック演算手段の演算結果を受けて上記第２のデータ抽出手段から出力されるデータと、上記入力データとが上記論理演算手段において演算され、その演算結果が、上記入力データに対応する暗号化データまたは復号化データとして出力される。
【００１５】
また、上記第３のデータ長を有するデータの保持が可能な入力データ保持手段と、上記入力データ保持手段に保持されたデータを、上記第２のデータ長だけ下位ビット側にシフトさせるとともに、当該シフトによって最下位ビットからあふれるデータを上位ビット側へ戻すビット・ローテイト手段と、上記ビット・ローテイト手段に処理されたデータ、または供給される上記入力データを選択して上記入力データ保持手段に供給する第２の選択手段とを更に含んでも良い。この場合、上記論理演算手段は、上記入力データ保持手段に保持されたデータと上記第２のデータ抽出手段の出力データとを受けて上記所定の論理演算を実行し、上記制御手段は、上記初期サイクルにおいて、上記第２の選択手段に上記入力データを選択させて上記入力データ保持手段に保持させ、上記入力データ保持手段の当該保持データに対して上記ビット・ローテイト手段の処理を行わせ、当該処理後のデータを上記第２の選択手段に選択させて上記入力データ保持手段に保持させ、上記初期サイクルに続く処理サイクルにおいて、上記ビット・ローテイト手段に処理されたデータを上記第２の選択手段に選択させて上記入力データ保持手段に保持させても良い。
【００１６】
上記の構成によれば、上記初期サイクルでは、上記第２の選択手段において上記入力データが選択されて上記入力データ保持手段に保持され、当該保持データに対して上記ビット・ローテイト手段の処理が行なわれ、当該処理後のデータが上記第２の選択手段に選択されて上記入力データ保持手段に保持される。上記初期サイクルに続く処理サイクルでは、上記ビット・ローテイト手段に処理されたデータが上記第２の選択手段に選択されて上記入力データ保持手段に保持され、これにより、上記入力データ保持手段の保持データは上記ビット・ローテイト手段における処理後のデータに順次更新される。
この各処理サイクルにおいて、上記ブロック演算手段の演算結果を受けて上記第２のデータ抽出手段から出力されるデータと上記入力データ保持手段に保持されたデータとが上記論理演算手段において演算され、その演算結果のうち、少なくとも上記第２のデータ長分のデータが、上記入力データに含まれる１つまたは複数の第２のデータ長を有した単位データに対応する暗号化データまたは復号化データとして出力される。
【００１７】
本発明の第２の観点に係る暗号処理装置は、供給される第１のデータ長のデータを、供給される鍵データに基づいて暗号化するブロック暗号演算手段と、上記第１のデータ長を有するデータの保持が可能な初期データ保持手段と、供給されるデータの上位ビット側から第２のデータ長分のデータを抽出して、上記初期データ保持手段に保持されたデータの下位ビット側に付加し、当該付加後のデータの下位ビット側から上記第１のデータ長分のデータを抽出して出力する第１のデータ抽出手段と、上記第１のデータ抽出手段から出力されるデータ、または供給される初期データを選択して上記初期データ保持手段に供給する第１の選択手段と、上記第２のデータ長より長い第３のデータ長を有するデータの保持が可能な暗号化データ保持手段および入力データ保持手段と、上記ブロック暗号演算手段において演算されたデータの上位ビット側から上記第２のデータ長分のデータを抽出して、上記暗号化データ保持手段に保持されたデータの上位ビット側に付加し、当該付加後のデータの上位ビット側から上記第３のデータ長分のデータを抽出して出力する第２のデータ抽出手段と、上記入力データ保持手段に保持されたデータを、上記第２のデータ長だけ下位ビット側にシフトさせるとともに、当該シフトによって最下位ビットからあふれるデータを上位ビット側へ戻すビット・ローテイト手段と、上記ビット・ローテイト手段に処理されたデータ、または上記第３のデータ長を有した入力データを選択して上記入力データ保持手段に供給する第２の選択手段と、上記入力データ保持手段に保持されたデータと上記第２のデータ抽出手段の出力データとを受けて、所定の論理演算を実行する第１の論理演算手段と、上記入力データ保持手段に保持されたデータと上記ブロック暗号演算手段において演算されたデータとを受けて、上記所定の論理演算を実行する第２の論理演算手段と、上記入力データ保持手段に保持されたデータ、または上記第２の論理演算手段において演算されたデータを選択して上記第１のデータ抽出手段に供給する第３の選択手段と、第１の操作モードの暗号化処理を行う場合、その初期サイクルにおいて、上記第１の選択手段に上記初期データを選択させて上記初期データ保持手段に保持させ、上記初期データ保持手段の当該保持データを上記ブロック暗号演算手段に供給して演算を実行させ、上記ブロック暗号演算手段の当該演算結果を受けて上記第２のデータ抽出手段から出力されるデータを上記暗号化データ保持手段に保持させ、上記第２の選択手段に上記入力データを選択させて上記入力データ保持手段に保持させ、上記入力データ保持手段の当該保持データに対して上記ビット・ローテイト手段の処理を行わせ、当該処理後のデータを上記第２の選択手段に選択させて上記入力データ保持手段に保持させ、上記入力データ保持手段の当該保持データと上記ブロック暗号演算手段の当該演算結果とを受けた上記第２の論理演算手段の演算結果を上記第３の選択手段に選択させて上記第１のデータ抽出手段に供給させ、当該供給データを受けて上記第１のデータ抽出手段から出力されるデータを上記第１の選択手段に選択させて上記初期データ保持手段に保持させ、当該初期サイクルに続く処理において、上記第１の選択手段に上記第１のデータ抽出手段の出力データを、上記第２の選択手段に上記ビット・ローテイト手段の処理データをそれぞれ選択させた状態で、上記第２のデータ長と上記第３のデータ長とに応じたサイクル数だけ、上記初期サイクルと同等の処理を反復させ、上記第１の操作モードの復号化処理を行う場合には、その初期サイクルにおいて、上記第１の選択手段に上記初期データを選択させて上記初期データ保持手段に保持させ、上記初期データ保持手段の当該保持データを上記ブロック暗号演算手段に供給して演算を実行させ、上記ブロック暗号演算手段の当該演算結果を受けて上記第２のデータ抽出手段から出力されるデータを上記暗号化データ保持手段に保持させ、上記第２の選択手段に上記入力データを選択させて上記入力データ保持手段に保持させ、上記入力データ保持手段の当該保持データに対して上記ビット・ローテイト手段の処理を行わせ、当該処理後のデータを上記第２の選択手段に選択させて上記入力データ保持手段に保持させ、当該保持データを上記第３の選択手段に選択させて上記第１のデータ抽出手段に供給させ、当該供給データを受けて上記第１のデータ抽出手段から出力されるデータを上記第１の選択手段に選択させて上記初期データ保持手段に保持させ、当該初期サイクルに続く処理において、上記第１の選択手段に上記第１のデータ抽出手段の出力データを、上記第２の選択手段に上記ビット・ローテイト手段の処理データをそれぞれ選択させた状態で、上記第２のデータ長と上記第３のデータ長とに応じたサイクル数だけ、当該初期サイクルと同等の処理を反復させる制御手段とを有し、上記制御手段の各処理サイクルにおいて、上記ブロック演算手段の演算結果を受けて上記第２のデータ抽出手段から出力されるデータと、上記入力データ保持手段に保持された上記ビット・ローテイト手段の処理後のデータとが上記第１の論理演算手段において演算された結果のうち、少なくとも上記第２のデータ長分のデータを、上記入力データに含まれる１つまたは複数の第２のデータ長を有した単位データに対応する暗号化データまたは復号化データとして出力する。
【００１８】
本発明の第２の観点に係る暗号処理装置によれば、第１の操作モードの暗号化処理が行われる場合、その初期サイクルでは、上記第１の選択手段において上記初期データが選択されて上記初期データ保持手段に保持され、当該保持データが上記ブロック暗号演算手段に供給されて演算が実行される。上記ブロック暗号演算手段の当該演算結果を受けて上記第２のデータ抽出手段から出力されるデータは、上記暗号化データ保持手段に保持される。一方、上記第２の選択手段において上記入力データが選択されて上記入力データ保持手段に保持され、当該保持データに対して上記ビット・ローテイト手段の処理が行われ、当該処理後のデータが上記第２の選択手段において選択されて上記入力データ保持手段に保持される。上記入力データ保持手段の当該保持データと上記ブロック暗号演算手段の当該演算結果とを受けて、上記第２の論理演算手段において所定の論理演算が実行され、その演算結果が、上記第３の選択手段において選択されて上記第１のデータ抽出手段に供給される。当該供給データを受けて上記第１のデータ抽出手段から出力されるデータは、上記第１の選択手段において選択されて上記初期データ保持手段に保持され、次のサイクルにおいて上記ブロック暗号演算手段に供給される。当該初期サイクルに続く処理では、上記第１の選択手段において上記第１のデータ抽出手段の出力データが、上記第２の選択手段において上記ビット・ローテイト手段の処理データがそれぞれ選択された状態で、上記第２のデータ長と上記第３のデータ長とに応じたサイクル数だけ、上記初期サイクルと同等の処理が反復される。
また、上記第１の操作モードの復号化処理が行われる場合、その初期サイクルでは、上記第１の選択手段において上記初期データが選択されて上記初期データ保持手段に保持され、当該保持データが上記ブロック暗号演算手段に供給されて演算が実行される。上記ブロック暗号演算手段の当該演算結果を受けて上記第２のデータ抽出手段から出力されるデータは、上記暗号化データ保持手段に保持される。一方、上記第２の選択手段において上記入力データが選択されて上記入力データ保持手段に保持され、当該保持データに対して上記ビット・ローテイト手段の処理が行われ、当該処理後のデータが上記第２の選択手段において選択されて上記入力データ保持手段に保持される。上記入力データ保持手段の当該保持データが、上記第３の選択手段において選択されて上記第１のデータ抽出手段に供給され、当該供給データを受けて上記第１のデータ抽出手段から出力されるデータが、上記第１の選択手段において選択されて上記初期データ保持手段に保持され、次のサイクルにおいて上記ブロック暗号演算手段に供給される。当該初期サイクルに続く処理では、上記第１の選択手段において上記第１のデータ抽出手段の出力データが、上記第２の選択手段において上記ビット・ローテイト手段の処理データがそれぞれ選択された状態で、上記第２のデータ長と上記第３のデータ長とに応じたサイクル数だけ、当該初期サイクルと同等の処理が反復される。
上記制御手段の各処理サイクルにおいて、上記ブロック演算手段の演算結果を受けて上記第２のデータ抽出手段から出力されるデータと、上記入力データ保持手段に保持された上記ビット・ローテイト手段の処理後のデータとが上記第１の論理演算手段において演算され、その演算結果のうち、少なくとも上記第２のデータ長分のデータが、上記単位データに対応する暗号化データまたは復号化データとして出力される。
【００１９】
また、上記第３の選択手段が、上記ブロック暗号演算手段の演算結果を選択して上記第１のデータ抽出手段に供給可能であり、上記制御手段が、第２の操作モードの暗号化処理または復号化処理を行う場合において、上記第２の選択手段に上記入力データを選択させて上記入力データ保持手段に保持させ、その初期サイクルにおいて、上記第１の選択手段に上記初期データを選択させて上記初期データ保持手段に保持させ、上記初期データ保持手段の当該保持データを上記ブロック暗号演算手段に供給して演算を実行させ、上記ブロック暗号演算手段の当該演算結果を受けて上記第２のデータ抽出手段から出力されるデータを上記暗号化データ保持手段に保持させ、上記ブロック暗号演算手段の当該演算結果を上記第３の選択手段に選択させて上記第１のデータ抽出手段に供給させ、当該供給データを受けて上記第１のデータ抽出手段から出力されるデータを上記第１の選択手段に選択させて上記初期データ保持手段に保持させ、上記初期サイクルに続く処理において、上記第１の選択手段に上記第１のデータ抽出手段の出力データを選択させた状態で、上記第１のデータ長と上記第２のデータ長とに応じたサイクル数だけ、上記初期サイクルと同等の処理を反復させても良い。
【００２０】
上記の構成によれば、第２の操作モードの暗号化処理または復号化処理が行われる場合、上記第２の選択手段において上記入力データが選択されて上記入力データ保持手段に保持される。初期サイクルでは、上記第１の選択手段において上記初期データが選択されて上記初期データ保持手段に保持され、当該保持データが上記ブロック暗号演算手段に供給されて演算が実行される。上記ブロック暗号演算手段の当該演算結果を受けて上記第２のデータ抽出手段から出力されるデータは、上記暗号化データ保持手段に保持される。また、上記ブロック暗号演算手段の当該演算結果が上記第３の選択手段において選択されて、上記第１のデータ抽出手段に供給される。この供給データを受けて上記第１のデータ抽出手段から出力されるデータが、上記第１の選択手段において選択されて上記初期データ保持手段に保持される。上記初期サイクルに続く処理では、上記第１の選択手段において上記第１のデータ抽出手段の出力データが選択された状態で、上記第１のデータ長と上記第２のデータ長とに応じたサイクル数だけ、上記初期サイクルと同等の処理が反復される。
最後の処理サイクルにおいて、上記ブロック演算手段の演算結果を受けて上記第２のデータ抽出手段から出力されるデータと上記入力データ保持手段に保持された入力データとが上記第１の論理演算手段において演算され、その演算結果が、上記入力データに対応する暗号化データまたは復号化データとして出力される。
【００２１】
また、上記制御手段は、上記第２の操作モードの暗号化処理または復号化処理を行う場合、上記初期サイクルにおいて、上記第２の選択手段に上記入力データを選択させて上記入力データ保持手段に保持させ、上記入力データ保持手段の当該保持データに対して上記ビット・ローテイト手段の処理を行わせ、当該処理後のデータを上記第２の選択手段に選択させて上記入力データ保持手段に保持させ、上記初期サイクルに続く処理サイクルにおいて、上記ビット・ローテイト手段に処理されたデータを上記第２の選択手段に選択させて上記入力データ保持手段に保持させても良い。
【００２２】
上記の構成によれば、上記第２の操作モードの暗号化処理または復号化処理が行われる場合、上記初期サイクルでは、上記第２の選択手段において上記入力データが選択されて上記入力データ保持手段に保持され、当該保持データに対して上記ビット・ローテイト手段の処理が行われ、当該処理後のデータが上記第２の選択手段に選択されて上記入力データ保持手段に保持される。上記初期サイクルに続く処理サイクルでは、上記ビット・ローテイト手段に処理されたデータが上記第２の選択手段において選択されて上記入力データ保持手段に保持され、これにより、上記入力データ保持手段の保持データは上記ビット・ローテイト手段における処理後のデータに順次更新される。
この各処理サイクルにおいて、上記ブロック演算手段の演算結果を受けて上記第２のデータ抽出手段から出力されるデータと上記入力データ保持手段に保持されたデータとが上記第１の論理演算手段において演算され、その演算結果のうち、少なくとも上記第２のデータ長分のデータが、上記入力データに含まれる１つまたは複数の第２のデータ長を有した単位データに対応する暗号化データまたは復号化データとして出力される。
【００２３】
さらに、上記初期データ保持手段に保持されたデータ、または上記入力データ保持手段に保持されたデータを選択して上記ブロック暗号演算手段に供給する第４の選択手段と、上記第１の論理演算手段において演算されたデータ、または上記ブロック暗号演算手段において演算されたデータを選択して出力する第５の選択手段とを更に含んでも良い。この場合、上記ブロック暗号演算手段は、供給されるデータの暗号化演算または復号化演算を行い、上記制御手段は、第３の操作モードの暗号化処理または復号化処理を行う場合、上記第２の選択手段に上記入力データを選択させて上記入力データ保持手段に保持させ、上記第４の選択手段に上記入力データ保持手段の当該保持データを選択させて上記ブロック暗号演算手段に供給し、その演算を実行させ、上記ブロック暗号演算手段の当該演算結果を上記第５の選択手段に選択させて出力させ、上記第１の操作モードまたは上記第２の操作モードの処理を行う場合には、上記初期データ保持手段の保持データを上記第４の選択手段に選択させて上記ブロック暗号演算手段に供給させるとともに、上記第１の論理演算手段の演算データを上記第５の選択手段に選択させて出力させても良い。
【００２４】
上記の構成によれば、第３の操作モードの暗号化処理または復号化処理が行われる場合、上記第２の選択手段において上記入力データが選択されて上記入力データ保持手段に保持され、上記第４の選択手段において上記入力データ保持手段の当該保持データが選択されて上記ブロック暗号演算手段に供給される。この供給データを受けた上記ブロック暗号演算手段において暗号化演算または復号化演算が実行され、その演算結果が上記第５の選択手段において選択されて出力される。一方、上記第１の操作モードまたは上記第２の操作モードの処理が行われる場合には、上記初期データ保持手段の保持データが上記第４の選択手段において選択されて上記ブロック暗号演算手段に供給されるとともに、上記第１の論理演算手段の演算データが上記第５の選択手段において選択されて出力される。
【００２５】
また、上記初期データ保持手段に保持されたデータと上記入力データ保持手段に保持されたデータとを受けて、上記所定の論理演算を実行する第３の論理演算手段と、上記初期データ保持手段に保持されたデータと上記ブロック暗号演算手段において演算されたデータとを受けて、上記所定の論理演算を実行する第４の論理演算手段とを更に含んでも良い。そして、上記第４の選択手段が、上記第３の論理演算手段において演算されたデータを選択して上記ブロック暗号演算手段に供給可能であり、上記第５の選択手段が、上記第４の論理演算手段において演算されたデータを選択して出力可能であっても良い。さらに、上記制御手段は、第４の操作モードの暗号化処理を行う場合、その初期サイクルにおいて、上記第１の選択手段に上記初期データを選択させて上記初期データ保持手段に保持させ、上記第２の選択手段に上記入力データを選択させて上記入力データ保持手段に保持させ、上記初期データ保持手段の当該保持データと上記入力データ保持手段の当該保持データとを受けた上記第３の論理演算手段の演算結果を上記第４の選択手段に選択させて上記ブロック暗号演算手段に供給し、その演算を実行させ、上記ブロック暗号演算手段の当該演算結果を上記第５の選択手段に選択させて出力させ、上記ブロック暗号演算手段の当該演算結果を上記第３の選択手段に選択させて上記第１のデータ抽出手段に供給させ、上記第１のデータ抽出手段に当該供給データの上記第１のデータ長分のデータを抽出させ、上記第１のデータ抽出手段の当該抽出データを上記第１の選択手段に選択させて上記初期データ保持手段に保持させ、当該初期サイクルに続く処理サイクルにおいて、上記第１の選択手段に上記第１のデータ抽出手段の抽出データを選択させた状態で、当該初期サイクルと同等の処理を実行させ、上記第４の操作モードの復号化処理を行う場合には、その初期サイクルにおいて、上記第１の選択手段に上記初期データを選択させて上記初期データ保持手段に保持させ、上記第２の選択手段に上記入力データを選択させて上記入力データ保持手段に保持させ、上記入力データ保持手段の当該保持データを上記第４の選択手段に選択させて上記ブロック暗号演算手段に供給し、その演算を実行させ、上記ブロック暗号演算手段の当該演算結果と上記初期データ保持手段の当該保持データとを受けた上記第４の論理演算手段の演算結果を上記第５の選択手段に選択させて出力させ、上記入力データ保持手段の当該保持データを上記第３の選択手段に選択させて上記第１のデータ抽出手段に供給させ、上記第１のデータ抽出手段に当該供給データの上記第１のデータ長分のデータを抽出させ、上記第１のデータ抽出手段の当該抽出データを上記第１の選択手段に選択させて上記初期データ保持手段に保持させ、当該初期サイクルに続く処理サイクルにおいて、上記第１の選択手段に上記第１のデータ抽出手段の抽出データを選択させた状態で、当該初期サイクルと同等の処理を実行させても良い。
【００２６】
上記の構成によれば、第４の操作モードの暗号化処理が行われる場合、その初期サイクルでは、上記第１の選択手段において上記初期データが選択されて上記初期データ保持手段に保持される。また、上記第２の選択手段において上記入力データが選択されて上記入力データ保持手段に保持される。上記初期データ保持手段の当該保持データと上記入力データ保持手段の当該保持データとを受けて、上記第３の論理演算手段において所定の論理演算が実行され、その演算結果が上記第４の選択手段において選択されて上記ブロック暗号演算手段に供給さる。当該供給データを受けて上記ブロック暗号演算手段において暗号化演算が実行され、その演算結果が上記第５の選択手段において選択されて出力される。また、上記ブロック暗号演算手段の当該演算結果は上記第３の選択手段において選択されて上記第１のデータ抽出手段に供給され、上記第１のデータ抽出手段において当該供給データの上記第１のデータ長分のデータが抽出される。上記第１のデータ抽出手段の当該抽出データが上記第１の選択手段において選択されて上記初期データ保持手段に保持される。当該初期サイクルに続く処理サイクルでは、上記第１の選択手段において上記第１のデータ抽出手段の抽出データが選択された状態で、当該初期サイクルと同等の処理が実行される。
また、上記第４の操作モードの復号化処理が行われる場合、その初期サイクルでは、上記第１の選択手段において上記初期データが選択されて上記初期データ保持手段に保持される。また、上記第２の選択手段において上記入力データが選択されて上記入力データ保持手段に保持される。上記入力データ保持手段の当該保持データが上記第４の選択手段において選択されて上記ブロック暗号演算手段に供給され、暗号化演算が実行される。上記ブロック暗号演算手段の当該演算結果と上記初期データ保持手段の当該保持データとを受けて上記第４の論理演算手段において所定の論理演算が実行され、その演算結果が上記第５の選択手段において選択されて出力される。また、上記入力データ保持手段の当該保持データは、上記第３の選択手段において選択されて上記第１のデータ抽出手段に供給され、上記第１のデータ抽出手段において当該供給データの上記第１のデータ長分のデータが抽出される。上記第１のデータ抽出手段の当該抽出データが上記第１の選択手段において選択されて上記初期データ保持手段に保持される。当該初期サイクルに続く処理サイクルでは、上記第１の選択手段において上記第１のデータ抽出手段の抽出データが選択された状態で、当該初期サイクルと同等の処理が実行される。
【００２７】
本発明の第３の観点に係る暗号処理方法は、第１のデータ長を有する初期データを初期データ保持装置に保持させ、与えられた鍵データに基づいて、当該初期データを暗号化する第１のステップと、上記第１のステップにおいて暗号化されたデータの上位ビット側から、上記第１のデータ長より短い第２のデータ長分のデータを抽出し、当該抽出データを上位ビットとした、上記第２のデータ長より長い第３のデータ長を有するデータを生成して、暗号化データ保持装置に保持させる第２のステップと、上記第１のステップにおいて暗号化されたデータの上位ビット側から上記第２のデータ長分のデータを抽出して、上記初期データ保持装置に保持された初期データの下位ビット側に付加し、当該付加後のデータの下位ビット側から上記第１のデータ長分のデータを抽出して、上記初期データ保持装置に保持された初期データを当該抽出データに更新する第３のステップとを含んだ初期ステップに続けて、上記初期データ保持装置に保持されたデータを、上記鍵データに基づいて暗号化する第４のステップと、上記第４のステップにおいて暗号化されたデータの上位ビット側から上記第２のデータ長分のデータを抽出して、上記暗号化データ保持装置に保持されたデータの上位ビット側に付加し、当該付加後のデータの上位ビット側から上記第３のデータ長分のデータを抽出して、上記暗号化データ保持装置に保持されたデータを当該抽出データに更新する第５のステップと、上記第４のステップにおいて暗号化されたデータの上位ビット側から上記第２のデータ長分のデータを抽出して、上記初期データ保持装置に保持されたデータの下位ビット側に付加し、当該付加後のデータの下位ビット側から上記第１のデータ長分のデータを抽出して、上記初期データ保持装置に保持されたデータを当該抽出データに更新する第６のステップとを含んだ反復ステップを、上記第２のデータ長と上記第３のデータ長とに応じた回数だけ反復し、最後の上記第５のステップにおいて抽出される上記第３のデータ長のデータと、上記第３のデータ長を有する入力データとに所定の論理演算を行って、当該入力データに対応した暗号化データまたは復号化データを生成する。
【００２８】
本発明の第４の観点に係る暗号処理方法は、第１のデータ長を有する初期データを初期データ保持装置に保持させ、与えられた鍵データに基づいて、当該初期データを暗号化する第１のステップと、第３のデータ長を有する入力データを、上記第１のデータ長および上記第３のデータ長より短い第２のデータ長だけ下位ビット側にシフトさせるとともに、当該シフトによって最下位ビットからあふれるデータを上位ビット側へ戻す処理を行い、当該処理後のデータを入力データ保持装置に保持させる第２のステップと、上記第１のステップにおいて暗号化されたデータの上位ビット側から上記第２のデータ長分のデータを抽出し、当該抽出データを上位ビットとした上記第３のデータ長を有するデータを生成して、暗号化データ保持装置に保持させる第３のステップと、上記第１のステップにおいて暗号化されたデータと、上記入力データ保持装置に保持されたデータとに所定の論理演算を行い、当該演算結果の上位ビット側から上記第２のデータ長分のデータを抽出して、上記初期データ保持装置に保持された初期データの下位ビット側に付加し、当該付加後のデータの下位ビット側から上記第１のデータ長分のデータを抽出して、上記初期データ保持装置に保持された初期データを当該抽出データに更新する第４のステップと、上記入力データ保持装置に保持されたデータと、上記第３のステップで生成された上記第３のデータ長を有するデータとに上記所定の論理演算を行って、上記入力データに含まれる上記第２のデータ長を有した単位データに対応する暗号化データを生成する第５のステップとを含んだ初期ステップに続けて、上記初期データ保持装置に保持されたデータを、上記鍵データに基づいて暗号化する第６のステップと、上記入力データ保持装置に保持されたデータを、上記第２のデータ長だけ下位ビット側にシフトさせるとともに、当該シフトによって最下位ビットからあふれるデータを上位ビット側へ戻す処理を行い、上記入力データ保持装置に保持されたデータを当該処理後のデータに更新する第７のステップと、上記第６のステップにおいて暗号化されたデータの上位ビット側から第２のデータ長分のデータを抽出して、上記暗号化データ保持装置に保持されたデータの上位ビット側に付加し、当該付加後のデータの上位ビット側から上記第３のデータ長分のデータを抽出して、上記暗号化データ保持装置に保持されたデータを当該抽出データに更新する第８のステップと、上記第６のステップにおいて暗号化されたデータと、上記入力データ保持装置の上記更新されたデータとに上記所定の論理演算を行い、当該演算結果の上位ビット側から第２のデータ長分のデータを抽出して、上記初期データ保持装置に保持されたデータの下位ビット側に付加し、当該付加後のデータの下位ビット側から上記第１のデータ長分のデータを抽出して、上記初期データ保持装置に保持されたデータを当該抽出データに更新する第９のステップと、上記入力データ保持装置の上記更新されたデータと、上記第８のステップで抽出された上記第３のデータ長を有するデータとに上記所定の論理演算を行って、少なくとも１つの上記単位データに対応する暗号化データを生成する第１０のステップとを含んだ反復ステップを、上記第２のデータ長と上記第３のデータ長とに応じた回数だけ反復する。
【００２９】
本発明の第５の観点に係る暗号処理方法は、第１のデータ長を有する初期データを初期データ保持装置に保持させ、与えられた鍵データに基づいて、当該初期データを暗号化する第１のステップと、第３のデータ長を有する暗号化された入力データを、上記第１のデータ長および上記第３のデータ長より短い第２のデータ長だけ下位ビット側にシフトさせるとともに、当該シフトによって最下位ビットからあふれるデータを上位ビット側へ戻す処理を行い、当該処理後のデータを入力データ保持装置に保持させる第２のステップと、上記第１のステップにおいて暗号化されたデータの上位ビット側から上記第２のデータ長分のデータを抽出し、当該抽出データを上位ビットとした上記第３のデータ長を有するデータを生成して、暗号化データ保持装置に保持させる第３のステップと、上記入力データ保持装置に保持されたデータの上位ビット側から上記第２のデータ長分のデータを抽出して、上記初期データ保持装置に保持された初期データの下位ビット側に付加し、当該付加後のデータの下位ビット側から上記第１のデータ長分のデータを抽出して、上記初期データ保持装置に保持された初期データを当該抽出データに更新する第４のステップと、上記入力データ保持装置に保持されたデータと、上記第３のステップで生成された上記第３のデータ長を有するデータとに所定の論理演算を行って、上記入力データに含まれる上記第２のデータ長を有した単位データに対応する復号化データを生成する第５のステップとを含んだ初期ステップに続けて、上記初期データ保持装置に保持されたデータを、上記鍵データに基づいて暗号化する第６のステップと、上記入力データ保持装置に保持されたデータを、上記第２のデータ長だけ下位ビット側にシフトさせるとともに、当該シフトによって最下位ビットからあふれるデータを上位ビット側へ戻す処理を行い、上記入力データ保持装置に保持されたデータを当該処理後のデータに更新する第７のステップと、上記第６のステップにおいて暗号化されたデータの上位ビット側から第２のデータ長分のデータを抽出して、上記暗号化データ保持装置に保持されたデータの上位ビット側に付加し、当該付加後のデータの上位ビット側から上記第３のデータ長分のデータを抽出して、上記暗号化データ保持装置に保持されたデータを当該抽出データに更新する第８のステップと、上記入力データ保持装置の上記更新されたデータの上位ビット側から第２のデータ長分のデータを抽出して、上記初期データ保持装置に保持されたデータの下位ビット側に付加し、当該付加後のデータの下位ビット側から上記第１のデータ長分のデータを抽出して、上記初期データ保持装置に保持されたデータを当該抽出データに更新する第９のステップと、上記入力データ保持装置の上記更新されたデータと、上記第８のステップで抽出された上記第３のデータ長を有するデータとに上記所定の論理演算を行って、少なくとも１つの上記単位データに対応する復号化データを生成する第１０のステップとを含んだ反復ステップを、上記第２のデータ長と上記第３のデータ長とに応じた回数だけ反復する。
【００３０】
【発明の実施の形態】
以下、本発明の３つの実施形態について、図面を参照しながら説明する。
【００３１】
（第１の実施形態）
図１は、本発明の第１の実施形態に係る暗号処理装置の構成例を示すブロック図である。
図１に示す暗号処理装置は、ブロック暗号演算部１１、入力レジスタ２１、ＩＶレジスタ２２、出力レジスタ２３、データ長設定レジスタ２４、ＩＶデータ保持部３１、暗号化データ保持部３２、第１の選択部４１、第１のデータ抽出部５１、第２のデータ抽出部５２および制御部７１を有する。
ブロック暗号演算部１１は、本発明のブロック暗号演算手段の一実施形態である。
ＩＶデータ保持部３１は、本発明の初期データ保持手段の一実施形態である。
暗号化データ保持部３２は、本発明の暗号化データ保持手段の一実施形態である。
第１の選択部４１は、本発明の第１の選択手段の一実施形態である。
第１のデータ抽出部５１は、本発明の第１のデータ抽出手段の一実施形態である。
第２のデータ抽出部５２は、本発明の第２のデータ抽出手段の一実施形態である。
第１の論理演算部６１は、本発明の論理演算手段および第１の論理演算手段の一実施形態である。
制御部７１は、本発明の制御手段の一実施形態である。
【００３２】
ブロック暗号演算部１１は、供給される所定データ長のデータを、供給される鍵データに基づいて暗号化するユニットである。例えば、ＤＥＳ暗号化方式に基づいて６４ビットを１ブロック単位とする暗号化の演算を行う。以降の説明では、このブロック暗号演算部１１における暗号化の単位となるデータ長（第１のデータ長）をＬ１ビットとする。
【００３３】
入力レジスタ２１は、暗号化または復号化の対象となるデータＳを保持する。この入力レジスタ２１に保持される入力データのデータ長は、ブロック暗号演算部１１の処理単位であるＬ１ビットと等しくても良いし、これより長くても良い。以降の説明では、この入力レジスタ２１に暗号化または復号化の対象として保持されるデータのデータ長（第３のデータ長）をＬ３ビットとする。
【００３４】
ＩＶレジスタ２２は、連続した暗号化または復号化が行われる際の初期の処理サイクルにおいて用いられるＬ１ビットのデータ（以降、ＩＶデータと呼ぶ）を保持する。
【００３５】
出力レジスタ２３は、暗号化または復号化の結果として生成されたデータＲを保持する。
【００３６】
データ長設定レジスタ２４は、暗号化または復号化の単位となるデータ長（第２のデータ長）を設定するためのデータを保持する。このデータ長は、ブロック暗号演算部１１における暗号化の単位となるＬ１ビットのデータ長、および入力レジスタから供給されるＬ３ビットのデータ長よりも短い必要がある。以降の説明では、この第２のデータ長をＬ２ビットとする。
【００３７】
図２は、入力レジスタ２１に保持されるデータと出力レジスタ２３に保持されるデータとの対応関係を説明するための図である。
図２Ａの例は、データ長設定レジスタ２４に”Ｌ２＝１ビット”が設定された場合の例を示す。”Ｌ２＝１ビット”の場合、後述するように、ブロック暗号演算部１１において暗号化演算が１回行われる度に１ビットの暗号化データまたは復号化データが生成されるので、入力レジスタ２１に６４ビットのデータが保持されていれば、６４個の暗号化データまたは復号化データの連続生成が可能となる。この場合、入力レジスタ２１に保持される演算前のデータ（Ｓ０，…，Ｓ６３）と、出力レジスタ２３に保持される演算後のデータ（Ｒ０，…，Ｒ６３）とは、ビットごとに１対１に対応する。
図２Ｂの例は、データ長設定レジスタ２４に”Ｌ２＝８ビット”が設定された場合の例を示す。”Ｌ２＝８ビット”の場合には、ブロック暗号演算部１１において暗号化演算が１回行われる度に８ビットの暗号化データまたは復号化データが生成されるので、入力レジスタ２１に６４ビットのデータが保持されていれば、８個の暗号化データまたは復号化データの連続生成が可能となる。この場合、入力レジスタ２１に保持される演算前のデータ（Ｓ０，…，Ｓ７）と、出力レジスタ２３に保持される演算後のデータ（Ｒ０，…，Ｒ７）とは、８ビットのブロックごとに１対１に対応している。
【００３８】
ＩＶデータ保持部３１は、暗号化または復号化の際に用いられるＬ１ビットのデータを保持する。後述するように、ＩＶデータ保持部３１は初期の処理サイクルにおいてＩＶレジスタ２２から供給されるＬ１ビットのＩＶデータを保持するが、これに続く処理サイクルにおいては、第１のデータ抽出部５１において抽出されたＬ１ビットのデータを保持する。
このＩＶデータ保持部３１において保持されるデータは、ブロック暗号演算部１１および第１のデータ抽出部５１に供給される。
【００３９】
暗号化データ保持部３２は、第２のデータ抽出部５２において抽出されたデータを保持する。この暗号化データ保持部３２に保持されるデータは、第２のデータ抽出部５２に供給される。
【００４０】
第１の選択部４１は、制御部７１からの図示しない制御信号に応じて、ＩＶレジスタ２２に保持されたＩＶデータまたは第１のデータ抽出部５１からの出力データを選択し、この選択したデータをＩＶデータ保持部３１に出力する。
【００４１】
第１のデータ抽出部５１は、ブロック暗号演算部１１において演算されたデータの上位ビット側からＬ２ビット分のデータを抽出して、ＩＶデータ保持部３１に保持されたデータの下位ビット側に付加し、この付加後の（Ｌ１＋Ｌ２）ビットのデータの下位ビット側からＬ１ビット分のデータを抽出して、第１の選択部４１に出力する。
【００４２】
第２のデータ抽出部５２は、ブロック暗号演算ブロック暗号演算部１１において演算されたデータの上位ビット側からＬ２ビット分のデータを抽出して、暗号化データ保持部３２に保持されたデータの上位ビット側に付加し、この付加後の（Ｌ３＋Ｌ２）ビットのデータの上位ビット側からＬ３ビットのデータを抽出して、暗号化データ保持部３２および第１の論理演算部６１に出力する。
【００４３】
第１の論理演算部６１は、入力レジスタ２１から供給されるデータと、第２のデータ抽出部５２から出力されるデータとを受けて、所定の論理演算、例えば各ビット同士の排他的論理和を実行する。
【００４４】
制御部７１は、データ長設定レジスタ２４に設定された値に応じて、第１のデータ抽出部５１および第２のデータ抽出部５２において抽出される上位ビット側のデータ長（Ｌ２ビット）を設定する。また、この設定されたデータ長（Ｌ２ビット）と、入力レジスタ２１に保持される入力データＳのデータ長（Ｌ３ビット）とに応じて、この入力データＳに対応した出力データＲを生成するためにブロック暗号演算部１１において演算処理を行う回数を決定する。例えば、図２Ａに示すように、６４ビットの入力データＳに対して”Ｌ２＝８ビット”が設定された場合、ブロック暗号演算部１１において演算が反復される回数は８回となる。
【００４５】
そして、この反復される処理の初期サイクルにおいて、第１の選択部４１にＩＶレジスタ２２のＩＶデータを選択させてＩＶデータ保持部３１に保持させ、この保持データをブロック暗号演算部１１に供給して暗号化演算を実行させる。さらに、このブロック暗号演算部１１の演算結果を受けて第２のデータ抽出部５２から出力されるデータを、暗号化データ保持部３２に保持させる。また、ブロック暗号演算部１１の演算結果を受けて第１のデータ抽出部５１から出力されるデータを第１の選択部４１に選択させてＩＶデータ保持部３１に保持させ、次の処理サイクルにおいてブロック暗号演算部１１に供給されるデータを準備させる。この初期サイクルに続く以降の処理サイクルでは、第１の選択部４１に第１のデータ抽出部５１の出力データを選択させた状態で、設定された回数だけ、初期サイクルと同等の処理を反復させる。
【００４６】
ここで、上述した構成を有する図１の暗号処理装置の動作について、図３を参照しながら説明する。
図３は、図１の暗号処理装置における暗号化処理または復号化処理の流れを説明するためのフローチャートである。
【００４７】
ステップＳＴ１０１：
入力レジスタ２１に保持されたＬ１ビットのＩＶデータが第１の選択部４１において選択され、ＩＶデータ保持部３１に保持される。そして、この保持されたＩＶデータがブロック暗号演算部１１に供給され、与えられた鍵データに基づいて所定の暗号化演算が行われる。
【００４８】
ステップＳＴ１０２：
ステップＳＴ１０１でブロック暗号演算部１１により暗号化されたデータの上位ビット側からＬ２ビット分のデータが第２のデータ抽出部５２によって抽出され、この抽出されたデータを上位ビットとしたＬ３ビットのデータが暗号化データ保持部３２に保持される。なお、この場合、暗号化データ保持部３２に保持されるデータの下位（Ｌ３−Ｌ２）ビットには、初期状態において暗号化データ保持部３２に保持されていたデータの上位（Ｌ３−Ｌ２）ビットが付加される。
【００４９】
ステップＳＴ１０３：
ステップＳＴ１０１でブロック暗号演算部１１により暗号化されたデータの上位ビット側からＬ２ビット分のデータが第１のデータ抽出部５１によって抽出され、ＩＶデータ保持部３１に保持されたＩＶデータの下位ビット側に付加され、付加後の（Ｌ１＋Ｌ２）ビットのデータのうち下位ビット側からＬ１ビット分のデータが抽出されて、第１の選択部４１に出力される。第１の選択部４１において、この抽出されたＬ１ビットのデータが選択されて、ＩＶデータ保持部３１に供給される。ＩＶデータ保持部３１に保持されたＩＶデータは、この抽出されたＬ１ビットのデータに更新される。
【００５０】
なお、ステップＳＴ１０２およびステップＳＴ１０３は、図１の暗号処理装置において並列して処理を実行することが可能である。
【００５１】
ステップＳＴ１０４：
以上のステップＳＴ１０１〜ステップＳＴ１０３の初期サイクルに続けて、次に述べるステップＳＴ１０５〜ステップＳＴ１０７の処理サイクルが反復される。この反復回数は、上述したように、ビット数設定レジスタ２４に設定されたデータ長（Ｌ２ビット）と、入力レジスタ２１に保持される入力データＳのデータ長（Ｌ３ビット）とに応じて設定される。
この設定された反復回数に達した場合にはステップＳＴ１０８へ、達していない場合にはステップＳＴ１０５へ処理が移行される。
【００５２】
ステップＳＴ１０５：
ＩＶデータ保持部３１に保持されたデータがブロック暗号演算部１１に供給され、暗号化演算が実行される。
【００５３】
ステップＳＴ１０６：
ステップＳＴ１０５においてブロック暗号演算部１１により暗号化されたデータの上位ビット側からＬ２ビット分のデータが第２のデータ抽出部５２により抽出され、暗号化データ保持部３２に保持されたデータの上位ビット側に付加され、付加後の（Ｌ３＋Ｌ２）ビットのデータのうち上位ビット側からＬ３ビット分のデータが抽出される。暗号化データ保持部３２に保持されたデータは、この抽出されたＬ３ビットのデータに更新される。
【００５４】
ステップＳＴ１０７：
ステップＳＴ１０５においてブロック暗号演算部１１により暗号化されたデータの上位ビット側からＬ２ビット分のデータが第１のデータ抽出部５１により抽出され、ＩＶデータ保持部３１に保持されたデータの下位ビット側に付加され、付加後の（Ｌ１＋Ｌ２）ビットのデータのうち下位ビット側からＬ１ビット分のデータが抽出されて、第１の選択部４１に出力される。ＩＶデータ保持部３１に保持されたデータは、この抽出されたＬ１ビットのデータに再び更新される。
【００５５】
なお、このステップＳＴ１０６およびステップＳＴ１０７についても、ステップＳＴ１０２およびステップＳＴ１０３と同様に、並列して処理を実行することが可能である。
【００５６】
ステップＳＴ１０８：
ステップＳＴ１０４において演算の終了が判定されると、最後に実行されたステップＳＴ１０６において第２のデータ抽出部５２により抽出されたＬ３ビットのデータと、入力レジスタ２１に保持されたＬ３ビットの入力データとに対して、第１の論理演算部６１において所定の論理演算がなされ、これにより、入力データに対応した暗号化データまたは復号化データが生成される。例えば、両データの対応するビット同士の排他的論理和が演算されることにより、暗号化データまたは復号化データが生成される。この生成されたデータは、出力データＲとして出力レジスタ２３に保持される。
【００５７】
上述した処理の流れを踏まえて、暗号化データ保持部３２に保持されるデータの変化について、図４に示す具体例を参照しながら説明する。
例えばＬ３ビットがＬ２ビットの４倍であるとする。この場合、図４Ｅに示すように、Ｌ３ビットの入力データＳは、Ｌ２ビットの長さを有する４つの単位データ（Ｓ０，…，Ｓ３）に区分することができる。
【００５８】
初期サイクルのステップＳＴ１０１においてブロック暗号演算部１１から暗号化データＥが出力されると、ステップＳＴ１０２においてその上位ビット側のＬ２ビット分のデータＥ０が抽出され、抽出されたデータＥ０を上位ビットとするＬ３ビットのデータが暗号化データ保持部３２に保持される（図４Ａ）。
【００５９】
次の処理サイクルのステップＳＴ１０５においてブロック暗号演算部１１から暗号化データＥが出力されると、その上位Ｌ２ビット分のデータＥ１が抽出され、暗号化データ保持部３２に保持されたＥ０の更に上位ビット側に付加される（図４Ｂ）。以降のサイクルにおいても同様に、ブロック暗号演算部１１から出力される暗号化データＥの上位Ｌ２ビット分のデータが抽出されて、暗号化データ保持部３２に保持されたデータの上位側に付加され、その下位Ｌ２ビット分のデータが棄却される。結果として、各処理サイクルにおいてブロック暗号演算部１１から出力される暗号化データＥの上位Ｌ２ビット分のデータが、出力された順に下位側から並んで暗号化データ保持部３２に保持される（図４Ｄ）。こうして生成されたＬ２ビットの長さを有する４つの暗号化データ（Ｅ０，…，Ｅ３）と、入力レジスタ２１に保持された４つの単位データ（Ｓ０，…，Ｓ３）とが、それぞれ第１の論理演算部６１において排他的論理和などの演算を施されることにより、Ｌ３ビットの入力データＳに対応するＬ３ビットの出力データＲが生成される。
【００６０】
なお、上述したデータの変化は、下位ビット側にデータが順次付加される点を除いて、ＩＶデータ保持部３１においても同様である。すなわち、ブロック暗号演算部１１から出力される暗号化データＥの上位Ｌ２ビット分のデータが、ＩＶデータ保持部３１に保持されたデータの下位ビット側に順次付加されるとともに、その上位Ｌ２ビット分のデータが順次棄却される。
【００６１】
以上説明したように、図１に示す暗号処理装置によれば、ブロック暗号演算部１１の演算結果の一部（上位Ｌ２ビット分）がブロック暗号演算部１１の入力に帰還され、次に生成するＬ２ビットの暗号化データまたは復号化データの生成に用いられる。したがって、上述した図２３に示すＯＦＢモードの暗号化処理や復号化処理と同等の処理を実現することができる。
【００６２】
また、ブロック暗号演算部１１の演算結果のうち上位Ｌ２ビット分が抽出され、この演算に用いられたブロック暗号演算部１１への供給データの下位ビット側に付加され、この付加後のデータの下位ビット側からＬ１ビット分のデータ抽出されて、次の処理サイクルでブロック暗号演算部１１に供給されるデータとして準備される。したがって、同様な処理をソフトウェアで実現する場合と比較して無用な待ち時間を低減させることができ、ブロック暗号演算部１１の連続的な演算が可能となる。
さらに、ブロック暗号演算部１１の演算結果のうち上位Ｌ２ビット分が抽出され、この抽出されたデータが、上位ビット側から順に詰めて暗号化データ保持部３２に保持されるので、ブロック暗号演算部１１から出力される有効な演算結果が上書きなどによって失われることなく確実に保持される。
【００６３】
加えて、ビット数設定レジスタ２４に設定されるデータ長（Ｌ２ビット）と入力レジスタ２１に保持される入力データＳのデータ長（Ｌ３ビット）とに応じて、ブロック暗号演算部１１の演算回数が自動的に設定され、この設定された回数の処理が連続的に反復されて、ブロック暗号演算部１１の有効な演算結果が必要な個数だけ暗号化データ保持部３２に保持される。したがって、入力レジスタ２１に保持された複数のＬ２ビットの単位データを一括して暗号化または復号化することができるので、例えば、Ｌ２ビットの暗号化データまたは復号化データが生成される度ごとに生成されたデータの転送などをソフトウェアによって処理する場合と比べて、処理時間を短縮できるとともにソフトウェアの処理負担を軽減することができる。
【００６４】
ところで、図１の暗号処理装置では、Ｌ２ビットの複数の単位データを含むＬ３ビットの入力データＳが一括して処理され、複数の暗号化データまたは復号化データが同時に生成されるが、データの処理方法によっては、Ｌ２ビットの単位データを所望の個数だけ暗号化または復号化したい場合も生じ得る。
【００６５】
図５は、このような処理を実現できる暗号処理装置の構成例を示すブロック図である。
図５と図１の同一符号は同一の構成要素を示す。図５の暗号処理装置では、図１の暗号処理装置における制御部７１が制御部７１’に置き換えられている。この他、図５の暗号処理装置は、入力データ保持部３３、第２の選択部４２および右ローテイト回路８１を有する。
入力データ保持部３３は、本発明の入力データ保持手段の一実施形態である。
第２の選択部４２は、本発明の第２の選択手段の一実施形態である。
右ローテイト回路８１は、本発明のビット・ローテイト手段の一実施形態である。
【００６６】
入力データ保持部３３は、第２の選択部４２から出力されるＬ３ビットのデータを保持する。
右ローテイト回路８１は、入力データ保持部３３に保持されたデータを、Ｌ２ビットだけ下位ビット側にシフトさせるとともに、このビット・シフトによって最下位ビットからあふれるデータを上位ビット側へ戻す処理（以降、右ローテイト処理と呼ぶ）を行う。
第２の選択部４２は、右ローテイト回路８１において右ローテイトされたデータ、または入力レジスタ２１に保持されたＬ３ビットの入力データＳを選択して、入力データ保持部３３に供給する。
【００６７】
なお、第１の論理演算部６１は、入力データ保持部３３に保持されたデータと第２のデータ抽出部５２の出力データとを受けて排他的論理和などの論理演算を実行し、この演算結果を出力レジスタ２３に出力する。
【００６８】
制御部７１’は、制御部７１とほぼ同様な処理を行う他、次のような処理が追加される。ＩＶレジスタ２２に保持されたＩＶデータがＩＶデータ保持部３１に保持される初期サイクルにおいて、第２の選択部４２に入力レジスタ２１の入力データＳを選択させて、これを入力データ保持部３３に保持させる。次いで、入力データ保持部３３に保持された入力データＳに対して右ローテイト回路８１の右ローテイト処理を実行させ、この処理後のデータを第２の選択部４２に選択させて再び入力データ保持部３３に保持させる。
このように右ローテイトされて入力データ保持部３３に保持された入力データと、ブロック暗号演算部１１の演算結果を受けて第２のデータ抽出部５２から出力されるデータとに対して、第１の論理演算部６１において排他的論理和などの論理演算が実行され、その演算結果からＬ２ビットの暗号化データまたは復号化データが得られる。
【００６９】
初期サイクルに続く処理サイクルにおいては、第２の選択部４２において右ローテイト回路８１の出力データを選択させた状態に設定し、前回の処理サイクルにおいて入力データ保持部３３に保持されたデータを右ローテイト回路８１において再び右ローテイトさせて、入力データ保持部３３に保持させる。
この右ローテイト後のデータと第２のデータ抽出部５２の出力データとに対して排他的論理和などの論理演算が行われ、その演算結果からＬ２ビットの暗号化データまたは復号化データが得られる。
【００７０】
ここで、上述した構成を有する図５の暗号処理装置の動作について、図６を参照しながら説明する。
図６は、図５の暗号処理装置における暗号化処理または復号化処理の流れを説明するためのフローチャートである。
【００７１】
ステップＳＴ２０１：
図３のステップＳＴ１０１と同様の処理が行われる。すなわち、入力レジスタ２１のＩＶデータがＩＶデータ保持部３１に保持され、このＩＶデータに対してブロック暗号演算部１１の暗号化演算が行われる。
【００７２】
ステップＳＴ２０２：
Ｌ３ビットの入力データＳが第２の選択部４２において選択されて、入力データ保持部３３に保持される。次いで、右ローテイト回路８１において、この保持されたデータが下位ビット側にＬ２ビットだけ右ローテイトされ、右ローテイト処理後のデータが第２の選択部４２において選択されて、入力データ保持部３３に保持される。これにより、入力レジスタ２１に保持された入力データＳが、１回だけ右ローテイトされた状態で入力データ保持部３３に保持される。
このステップＳＴ２０２の処理は、ステップＳＴ２０１、ステップＳＴ２０３およびステップＳＴ２０４の処理と並列して実行することが可能である。
【００７３】
ステップＳＴ２０３：
図３のステップＳＴ１０２と同様な処理が行われる。すなわち、ステップＳＴ２０１においてブロック暗号演算部１１により暗号化されたデータの上位ビット側からＬ２ビット分のデータが第２のデータ抽出部５２によって抽出され、これを上位ビットとしたＬ３ビットを有するデータが抽出されて、暗号化データ保持部３２に保持される。
【００７４】
ステップＳＴ２０４：
図３のステップＳＴ１０３と同様な処理が行われる。すなわち、ステップＳＴ２０１においてブロック暗号演算部１１により暗号化されたデータの上位ビット側からＬ２ビット分のデータが第１のデータ抽出部５１によって抽出され、ＩＶデータ保持部３１に保持されたＩＶデータの下位ビット側に付加され、この付加後の（Ｌ１＋Ｌ２）ビットのデータのうち下位ビット側からＬ１ビット分のデータが抽出される。ＩＶデータ保持部３１の保持データは、この抽出されたＬ１ビットのデータに更新される。
【００７５】
なお、ステップＳＴ２０３およびステップＳＴ２０４は、図３のステップＳＴ１０１およびステップＳＴ１０２と同様に、並列して処理を実行することが可能である。
【００７６】
ステップＳＴ２０５：
入力データ保持部３３に保持されたデータと、ステップＳＴ２０３において第２のデータ抽出部５２により抽出されたＬ３ビットのデータとに対し、排他的論理和などの所定の論理演算が第１の論理演算部６１において実行される。これにより、入力レジスタ２１の入力データＳに含まれる複数のＬ２ビットの単位データのうちの１つに対応する暗号化データまたは復号化データが生成されて、出力レジスタ２３に保持される。
【００７７】
ステップＳＴ２０６：
以上のステップＳＴ２０１〜ステップＳＴ２０５の初期サイクルに続けて、次に述べるステップＳＴ２０７〜ステップＳＴ２１１の処理サイクルが反復される。この反復回数は、図１の暗号処理装置と同様に、ビット数設定レジスタ２４に設定されたデータ長（Ｌ２ビット）と、入力レジスタ２１に保持される入力データＳのデータ長（Ｌ３ビット）とに応じて設定される。
この設定された反復回数に達した場合には、入力データＳの処理が終了される。
【００７８】
ステップＳＴ２０７：
図３のステップＳＴ１０５と同様な処理が行われる。すなわち、ＩＶデータ保持部３１に保持されているＬ１ビットのデータがブロック暗号演算部１１に供給されて、暗号化演算が実行される。
【００７９】
ステップＳＴ２０８：
入力データ保持部３３に保持されている前回の右ローテイト処理後のデータが、更に右ローテイト回路８１において右ローテイトされ、第２の選択部４２において選択されて入力データ保持部３３に供給される。入力データ保持部３３に保持されたデータは、この右ローテイト処理後のデータに更新される。
このステップＳＴ２０８の処理は、ステップＳＴ２０７、ステップＳＴ２０９およびステップＳＴ２１０の処理と並列して実行することが可能である。
【００８０】
ステップＳＴ２０９：
図３のステップＳＴ１０６と同様な処理が行われる。すなわち、ステップＳＴ２０７においてブロック暗号演算部１１により暗号化されたデータの上位ビット側からＬ２ビット分のデータが第２のデータ抽出部５２によって抽出され、暗号化データ保持部３２に保持されたデータの上位ビット側に付加され、付加後の（Ｌ３＋Ｌ２）ビットのデータのうち上位ビット側からＬ３ビット分のデータが抽出される。暗号化データ保持部３２の保持データは、この抽出されたＬ３ビットのデータに更新される。
【００８１】
ステップＳＴ２１０：
図３のステップＳＴ１０７と同様な処理が行われる。すなわち、ステップＳＴ２０７においてブロック暗号演算部１１により暗号化されたデータの上位ビット側からＬ２ビット分のデータが第１のデータ抽出部５１によって抽出され、ＩＶデータ保持部３１に保持されたデータの下位ビット側に付加され、付加後の（Ｌ１＋Ｌ２）ビットのデータのうち下位ビット側からＬ１ビット分のデータが抽出される。ＩＶデータ保持部３１の保持データは、この抽出されたＬ１ビットのデータに更新される。
【００８２】
ステップＳＴ２１１：
入力データ保持部３３に保持されたデータと、ステップＳＴ２０９において第２のデータ抽出部５２により抽出されたＬ３ビットのデータとに対し、排他的論理和などの所定の論理演算が第１の論理演算部６１において実行される。これにより、入力レジスタ２１の入力データＳに含まれる複数のＬ２ビットの単位データのうち、すくなくともその１つに対応する暗号化データまたは復号化データが生成されて、出力レジスタ２３に保持される。
【００８３】
なお、このステップＳＴ２１０およびステップＳＴ２１１についても、ステップＳＴ２０３およびステップＳＴ２０４と同様に、並列して処理を実行することが可能である。
【００８４】
ここで、図５の暗号処理装置において暗号化データ保持部３２および入力データ保持部３３に保持されるデータの変化について、図７に示す具体例を参照しながら説明する。
図４の例と同様に、図５の例においても、Ｌ３ビットがＬ２ビットの４倍であるとする。したがって、Ｌ３ビットの入力データＳは、Ｌ２ビットの長さを有する４つの単位データ（Ｓ０，…，Ｓ３）に区分することができる。
【００８５】
初期サイクルのステップＳＴ２０２において、入力レジスタ２１の入力データＳに対し右ローテイト処理が一回施されると、入力データ保持部３３に保持されたデータにおいて、ＬＳＢ側の単位データＳ０がＭＳＢ側に移される（図７Ａ）。したがって、このＭＳＢ側に移された単位データＳ０と、第２のデータ抽出部５２から出力されるデータにおける上位Ｌ２ビット分のデータＥ０との対応するビット同士において排他的論理和などの論理演算が実行されると、その演算結果の上位Ｌ２ビットから、単位データＳ０に対応した暗号化データまたは復号化データが得られる。
【００８６】
次の処理サイクルのステップＳＴ２０８において、入力レジスタ２１の入力データＳに対し右ローテイト処理が一回施されると、入力データ保持部３３に保持されたデータにおいて、ＬＳＢ側の単位データＳ１がＭＳＢ側に移される（図７Ｂ）。したがって、この単位データＳ１と、ブロック暗号演算部１１から出力されるデータの上位Ｌ２ビット分のデータＥ１との対応するビット同士において排他的論理和などの論理演算が実行されると、その演算結果の上位Ｌ２ビットから、単位データＳ１に対応した暗号化データまたは復号化データが得られる。さらに、入力データ保持部３３に保持されたデータのＭＳＢ側から２番目に位置する単位データＳ０と、第２のデータ抽出部５２から出力されるデータのＭＳＢ側から２番目に位置するＬ２ビットのデータＥ０との論理演算によって、単位データＳ０に対応した暗号化データまたは復号化データも得られる。すなわち、２つの単位データに対応する暗号化データまたは復号化データを同時に得ることができる。
【００８７】
以降の処理サイクルにおいても同様であり、右ローテイト処理の回数が増えるとともに、同時に得られる暗号化データまたは復号化データの数も多くなる。最終的に、右ローテイト回路８１による右ローテイト処理によってデータが一巡して、入力データ保持部３３に保持されたデータにおける単位データの並び順と、入力レジスタ２１に保持された単位データの並び順とが同じになった場合、入力データＳが含む全単位データに対応した暗号化データまたは復号化データを、一括して得ることができる。
【００８８】
このように、図５に示す暗号処理装置によれば、入力データＳが含む複数の単位データのそれぞれに対応した暗号化データまたは復号化データを、連続して順に出力することができる。また、出力レジスタ２３からデータを読み出す処理サイクルを適切に設定することにより、暗号化データまたは復号化データを所望の個数だけ一括して読み出すこともできる。
【００８９】
（第２の実施形態）
第１の実施形態に係る図１の暗号処理装置では、図２３に示すＯＦＢモードを用いた暗号化処理および復号化処理を実行できるが、次に述べる第２の実施形態に係る図８の暗号処理装置では、このＯＦＢモードに加えて、図２４に示すＣＦＢモードを用いた暗号化処理および復号化処理も実行可能となる。
【００９０】
図８は、本発明の第２の実施形態に係る暗号処理装置の構成例を示すブロック図である。
図８と図５の同一符号は同一の構成要素を示す。図８の暗号処理装置では、図５の暗号処理装置における制御部７１’が制御部７２に置き換えられている。その他、図８の暗号処理装置は、第３の選択部４３および第２の論理演算部６２を有する。
第３の選択部４３は、本発明の第３の選択手段の一実施形態である。
第２の論理演算部６２は、本発明の第２の論理演算手段の一実施形態である。
【００９１】
第２の論理演算部６２は、入力データ保持部３３に保持されたデータとブロック暗号演算部１１において演算されたデータとを受けて、排他的論理和などの所定の論理演算を実行する。
【００９２】
第３の選択部４３は、入力データ保持部３３に保持されたデータ、第２の論理演算部６２において演算されたデータ、またはブロック暗号演算部１１において演算されたデータを選択して、第１のデータ抽出部５１に供給する。
【００９３】
なお、第１のデータ抽出部５１は、第３の選択部４３において選択されたデータの上位ビット側からＬ２ビット分のデータを抽出して、ＩＶデータ保持部３１に保持されたデータの下位ビット側に付加し、この付加後の（Ｌ１＋Ｌ２）ビットのデータの下位ビット側からＬ１ビット分のデータを抽出して、第１の選択部４１に出力する。
【００９４】
制御部７２は、ＯＦＢモードまたはＣＦＢモードでの暗号化または復号化を行うための各種制御を行う。
いずれの操作モードにおいても、まず、データ長設定レジスタ２４に設定された値に応じて、第１のデータ抽出部５１および第２のデータ抽出部５２において抽出される上位ビット側のデータ長（Ｌ２ビット）を設定する。また、この設定されたデータ長（Ｌ２ビット）と、入力レジスタ２１に保持される入力データＳのデータ長（Ｌ３ビット）とに応じて、入力データＳに対応した出力データＲを生成するためにブロック暗号演算部１１において演算処理を行う回数を決定する。
【００９５】
ＣＦＢモードの暗号化処理を行う場合、その初期サイクルにおいて、第１の選択部４１にＩＶレジスタ２２のＩＶデータを選択させてＩＶデータ保持部３１に保持させ、この保持データをブロック暗号演算部１１に供給して暗号化演算を実行させる。次いで、ブロック暗号演算部１１の演算結果を受けて第２のデータ抽出部５２から出力されるデータを、暗号化データ保持部３２に保持させる。また、第２の選択部４２に入力レジスタ２１の入力データＳを選択させて入力データ保持部３３に保持させ、この保持データに対して右ローテイト回路８１の右ローテイト処理を実行させ、処理後のデータを第２の選択部４２に選択させて入力データ保持部３３に保持させる。こうして右ローテイトされて入力データ保持部３３に保持された入力データと、ブロック暗号演算部１１の演算結果を受けて第２のデータ抽出部５２から出力されるデータとに対し、第１の論理演算部６１において排他的論理和などの論理演算が実行され、その演算結果からＬ２ビットの暗号化データまたは復号化データが得られる。さらに、入力データ保持部３３に保持された右ローテイト処理後のデータとブロック暗号演算部１１の演算結果と受けて第２の論理演算部６２から出力される演算結果を、第３の選択部４３に選択させて第１のデータ抽出部５１に供給させる。この供給データを受けて第１のデータ抽出部５１から出力されるデータを、第１の選択部４１に選択させてＩＶデータ保持部３１に保持させ、次のサイクルでブロック暗号演算部１１に供給されるデータを準備させる。
この初期サイクルに続く処理においては、第１の選択部４１に第１のデータ抽出部５１の出力データを、第２の選択部４２に右ローテイト回路８１の処理後のデータをそれぞれ選択させた状態で、上述の初期サイクルと同様の処理を設定された回数だけ反復させる。
【００９６】
また、ＣＦＢモードの復号化処理を行う場合には、その初期サイクルにおいて、第１の選択部４１にＩＶレジスタ２２のＩＶデータを選択させてＩＶデータ保持部３１に保持させ、この保持データをブロック暗号演算部１１に供給して暗号化演算を実行させる。次いで、ブロック暗号演算部１１の演算結果を受けて第２のデータ抽出部５２から出力されるデータを、暗号化データ保持部３２に保持させる。また、第２の選択部４２に入力レジスタ２１の入力データＳを選択させて入力データ保持部３３に保持させ、この保持データに対して右ローテイト回路８１の右ローテイト処理を実行させ、処理後のデータを第２の選択部４２に選択させて入力データ保持部３３に保持させる。こうして右ローテイトされて入力データ保持部３３に保持された入力データと、ブロック暗号演算部１１の演算結果を受けて第２のデータ抽出部５２から出力されるデータとに対し、第１の論理演算部６１において排他的論理和などの論理演算が実行され、その演算結果からＬ２ビットの暗号化データまたは復号化データが得られる。以上はＣＦＢモードの暗号化処理と同様である。ＣＦＢモードの復号化処理では、入力データ保持部３３に保持された右ローテイト処理後のデータを、第３の選択部４３に選択させて第１のデータ抽出部５１に供給させ、これを受けて第１のデータ抽出部５１から出力されるデータを、第１の選択部４１に選択させてＩＶデータ保持部３１に保持させることにより、次のサイクルでブロック暗号演算部１１に供給されるデータを準備させる。
この初期サイクルに続く処理においては、第１の選択部４１に第１のデータ抽出部５１の出力データを、第２の選択部４２に右ローテイト回路８１の処理後のデータをそれぞれ選択させた状態で、上述の初期サイクルと同様の処理を設定された回数だけ反復させる。
【００９７】
ＯＦＢモードの暗号化処理または復号化処理を行う場合には、第３の選択部４３にブロック暗号演算部１１の演算結果を選択させた状態に設定する。その他の制御については、図５における制御部７１’と同様である。
【００９８】
ここで、上述した構成を有する図８の暗号処理装置の動作について、図９〜図１２を参照しながら説明する。
図９は、図８の暗号処理装置におけるＣＦＢモードの暗号化処理の流れを説明するためのフローチャートである。
図１０は、図８の暗号処理装置においてＣＦＢモードの暗号化処理が行われる場合に有効または無効となる信号を示す。
図１１は、図８の暗号処理装置においてＣＦＢモードの復号化処理が行われる場合に有効または無効となる信号を示す。
図１２は、図８の暗号処理装置においてＯＦＢモードの暗号化処理または復号化処理が行われる場合に有効または無効となる信号を示す。
なお、図１０〜図１２と図８とにおいて同一の符号は同一の構成要素を示しており、また、実線で示した信号は有効な信号を、点線で示した信号は無効な信号をそれぞれ示している。
【００９９】
まず、ＣＦＢモードの暗号化処理が行われる場合について説明する。
この場合、図１０に示すように、第３の選択部４３において第２の論理演算部６２からの出力信号が選択されて第１のデータ抽出部５１に供給される。
【０１００】
ステップＳＴ３０１：
図６のステップＳＴ２０１と同様な処理が行われる。すなわち、入力レジスタ２１のＩＶデータがＩＶデータ保持部３１に保持され、このＩＶデータに対してブロック暗号演算部１１の暗号化演算が行われる。
【０１０１】
ステップＳＴ３０２：
図６のステップＳＴ２０２と同様な処理が行われる。すなわち、Ｌ３ビットの入力データＳが第２の選択部４２において選択されて、入力データ保持部３３に保持される。次いで、右ローテイト回路８１において、この保持されたデータが下位ビット側にＬ２ビットだけ右ローテイトされ、右ローテイト処理後のデータが第２の選択部４２において選択されて、入力データ保持部３３に保持される。これにより、入力レジスタ２１に保持された入力データＳが、１回だけ右ローテイトされた状態で入力データ保持部３３に保持される。
このステップＳＴ３０２の処理は、ステップＳＴ３０１およびステップＳＴ３０３の処理と並列して実行することが可能である。
【０１０２】
ステップＳＴ３０３：
図６のステップＳＴ２０３と同様な処理が行われる。すなわち、ステップＳＴ３０１においてブロック暗号演算部１１により暗号化されたデータの上位ビット側からＬ２ビット分のデータが第２のデータ抽出部５２によって抽出され、これを上位ビットとしたＬ３ビットを有するデータが抽出されて、暗号化データ保持部３２に保持される。
【０１０３】
ステップＳＴ３０４：
ステップＳＴ３０１においてブロック暗号演算部１１により暗号化されたデータと、ステップＳＴ３０２の右ローテイト処理がなされて入力データ保持部３３に保持されたデータとに対し、第２の論理演算部６２において排他的論理和などの論理演算が実行され、この演算結果が第３の選択部４３において選択されて、第１のデータ抽出部５１に供給される。第１のデータ抽出部５１において、この供給されたデータの上位ビット側からＬ２ビット分のデータが抽出され、ＩＶデータ保持部３１に保持されたＩＶデータの下位ビット側に付加され、付加後の（Ｌ１＋Ｌ２）ビットのデータのうち下位ビット側からＬ１ビット分のデータが抽出される。抽出されたデータは、第１の選択部４１において選択されてＩＶデータ保持部３１に供給される。ＩＶデータ保持部３１の保持データは、この抽出されたＬ１ビットのデータに更新される。
なお、ステップＳＴ３０４の処理は、ステップＳＴ３０３およびステップＳＴ３０５の処理と並列して実行することが可能である。
【０１０４】
ステップＳＴ３０５：
入力データ保持部３３に保持された右ローテイト処理後のデータと、ステップＳＴ３０３において第２のデータ抽出部５２により抽出されたＬ３ビットのデータとに対し、排他的論理和などの所定の論理演算が第１の論理演算部６１において実行される。これにより、入力レジスタ２１の入力データＳに含まれる複数のＬ２ビットの単位データのうちの１つに対応する暗号化データまたは復号化データが生成されて、出力レジスタ２３に保持される。
【０１０５】
ステップＳＴ３０６：
以上のステップＳＴ３０１〜ステップＳＴ３０５の初期サイクルに続けて、次に述べるステップＳＴ３０７〜ステップＳＴ３１１の処理サイクルが反復される。この反復回数は、図１の暗号処理装置と同様に、ビット数設定レジスタ２４に設定されたデータ長（Ｌ２ビット）と、入力レジスタ２１に保持される入力データＳのデータ長（Ｌ３ビット）とに応じて設定される。
この設定された反復回数に達した場合には、入力データＳの処理が終了される。
【０１０６】
ステップＳＴ３０７：
図６のステップＳＴ２０７と同様な処理が行われる。すなわち、ＩＶデータ保持部３１に保持されているＬ１ビットのデータがブロック暗号演算部１１に供給されて、暗号化演算が実行される。
【０１０７】
ステップＳＴ３０８：
図６のステップＳＴ２０８と同様な処理が行われる。すなわち、入力データ保持部３３に保持されている前回の右ローテイト処理後のデータが、更に右ローテイト回路８１において右ローテイトされ、第２の選択部４２において選択されて入力データ保持部３３に供給される。入力データ保持部３３の保持データは、この右ローテイト処理後のデータに更新される。
このステップＳＴ３０８の処理は、ステップＳＴ３０７およびステップＳＴ３０９の処理と並列して実行することができる。
【０１０８】
ステップＳＴ３０９：
図６のステップＳＴ２０９と同様な処理が行われる。すなわち、ステップＳＴ３０７においてブロック暗号演算部１１により暗号化されたデータの上位ビット側からＬ２ビット分のデータが第２のデータ抽出部５２によって抽出され、暗号化データ保持部３２に保持されたデータの上位ビット側に付加され、付加後の（Ｌ３＋Ｌ２）ビットのデータのうち上位ビット側からＬ３ビット分のデータが抽出される。暗号化データ保持部３２の保持データは、この抽出されたＬ３ビットのデータに更新される。
【０１０９】
ステップＳＴ３１０：
ステップＳＴ３０７においてブロック暗号演算部１１により暗号化されたデータと、前回の処理サイクルにおいて右ローテイト処理がなされて入力データ保持部３３に保持されたデータとに対し、第２の論理演算部６２において排他的論理和などの論理演算が実行され、この演算結果が第３の選択部４３において選択されて、第１のデータ抽出部５１に供給される。第１のデータ抽出部５１において、この供給されたデータの上位ビット側からＬ２ビット分のデータが抽出され、ＩＶデータ保持部３１に保持されたＩＶデータの下位ビット側に付加され、付加後の（Ｌ１＋Ｌ２）ビットのデータのうち下位ビット側からＬ１ビット分のデータが抽出される。抽出されたデータは、第１の選択部４１において選択されてＩＶデータ保持部３１に供給される。ＩＶデータ保持部３１の保持データは、この抽出されたＬ１ビットのデータに更新される。
なお、ステップＳＴ３１０の処理は、ステップＳＴ３０９およびステップＳＴ３１１の処理と並列して実行することが可能である。
【０１１０】
ステップＳＴ３１１：
入力データ保持部３３に保持された右ローテイト処理後のデータと、ステップＳＴ３０９において第２のデータ抽出部５２により抽出されたＬ３ビットのデータとに対し、排他的論理和などの所定の論理演算が第１の論理演算部６１において実行される。これにより、入力レジスタ２１の入力データＳに含まれる複数のＬ２ビットの単位データのうちの、少なくともその１つに対応する暗号化データが生成されて、出力レジスタ２３に保持される。
【０１１１】
上述した処理の流れはＣＦＢモードの暗号化処理に関するものであるが、ＣＦＢモードの復号化処理についても同様の処理が実行される。ただし、ＣＦＢモードの復号化処理では、図１１に示すように、第３の選択部４３において入力データ保持部３３の保持データが選択されて第１のデータ抽出部５１に供給される点で、暗号化処理の場合と異なっている。すなわち、上述したステップＳＴ３０４およびステップＳＴ３１０において、入力データ保持部３３に保持された右ローテイト処理後のデータから、第１のデータ抽出部５１による抽出処理が行われ、次回の処理サイクルでブロック暗号演算部１１に供給されるデータが生成される。その他のステップについては、暗号化処理の場合と同様である。
【０１１２】
また、ＯＦＢモードの暗号化処理または復号化処理が行われる場合には、図１２に示すように、第３の選択部４３においてブロック暗号演算部１１の演算結果が選択されて、第１のデータ抽出部５１に供給される。このため、図１２の接続状態における構成は図５の暗号処理装置と等価になる。この接続状態で、図５における制御部７１’と同様な処理が制御部７２において実行されて、図５の暗号処理装置と同様なＯＦＢモードの処理が実現される。
【０１１３】
以上説明したように、図８に示す暗号処理装置によれば、図５の暗号処理装置に対して第３の選択部４３および第２の論理演算部６２が追加された簡易な構成でありながら、ＯＦＢモードに加えてＣＦＢモードの処理を行うことが可能になる。
【０１１４】
また、ＣＦＢモードにおいても、図５の暗号処理装置におけるＯＦＢモードの場合と同様に、入力データＳが含む複数の単位データのそれぞれに対応した暗号化データまたは復号化データを、連続して順に出力することができる。出力レジスタ２３からデータを読み出す処理サイクルを適切に設定すれば、暗号化データまたは復号化データを所望の個数だけ一括して読み出すこともできる。
【０１１５】
（第３の実施形態）
第２の実施形態に係る図８の暗号処理装置では、ＯＦＢモードおよびＣＦＢモードの処理が実行可能であるが、次に述べる第３の実施形態に係る図１３の暗号処理装置では、これらの操作モードに加えて、図２１に示すＥＣＢモードや、図２２に示すＣＢＣモードの処理も実行可能となる。
【０１１６】
図１３は、本発明の第３の実施形態に係る暗号処理装置の構成例を示すなブロック図である。
図１３と図８の同一符号は同一の構成要素を示している。図１３の暗号処理装置では、図８の暗号処理装置における制御部７２が制御部７３に置き換えられている。その他、図１３の暗号処理装置は、第４の選択部４４、第５の選択部４５、第３の論理演算部６３および第４の論理演算部６４を有する。
第４の選択部４４は、本発明の第４の選択手段の一実施形態である。
第５の選択部４５は、本発明の第５の選択手段の一実施形態である。
第３の論理演算部６３は、本発明の第３の論理演算手段の一実施形態である。
第４の論理演算部６４は、本発明の第４の論理演算手段の一実施形態である。
【０１１７】
第３の論理演算部６３は、ＩＶデータ保持部３１に保持されたデータと入力データ保持部３３に保持されたデータとを受けて、排他的論理和などの所定の論理演算を実行する。
【０１１８】
第４の選択部４４は、ＩＶデータ保持部３１に保持されたデータ、入力データ保持部３３に保持されたデータ、または第３の論理演算部６３において演算されたデータを選択して、ブロック暗号演算部１１に供給する。
【０１１９】
なお、ブロック暗号演算部１１は、第４の選択部４４から供給されたデータに対して、与えられた鍵データに基づいた暗号化演算または復号化演算を実行する。
【０１２０】
第４の論理演算部６４は、ＩＶデータ保持部３１に保持されたデータとブロック暗号演算部１１において演算されたデータとを受けて、排他的論理和などの所定の論理演算を実行する。
【０１２１】
第５の選択部４５は、第１の論理演算部６１において演算されたデータ、ブロック暗号演算部１１において演算されたデータ、または第４の論理演算部６４において演算されたデータを選択して、出力レジスタ２３に出力する。
【０１２２】
制御部７３は、ＥＣＢモード、ＣＢＣモード、ＯＦＢモードまたはＣＦＢモードでの暗号化または復号化を行うための各種制御を行う。
【０１２３】
ここで、上述した構成を有する図８の暗号処理装置の各操作モードにおける動作について、図１４〜図２０を参照しながら説明する。
図１４は、図１３の暗号処理装置においてＥＣＢモードの暗号化処理または復号化処理が行われる場合に有効または無効となる信号を示す。
図１６は、図１３の暗号処理装置においてＣＢＣモードの暗号化処理が行われる場合に有効または無効となる信号を示す。
図１７は、図１３の暗号処理装置においてＣＢＣモードの復号化処理が行われる場合に有効または無効となる信号を示す。
図１８は、図１３の暗号処理装置においてＯＦＢモードの暗号化処理または復号化処理が行われる場合に有効または無効となる信号を示す。
図１９は、図１３の暗号処理装置においてＣＦＢモードの暗号化処理が行われる場合に有効または無効となる信号を示す。
図２０は、図１３の暗号処理装置においてＣＦＢモードの復号化暗号化処理が行われる場合に有効または無効となる信号を示す。
なお、図１４および図１６〜図２０と図１３とにおいて同一の符号は同一の構成要素を示しており、また、実線で示した信号は有効な信号を、点線で示した信号は無効な信号をそれぞれ示している。
【０１２４】
＜ＥＣＢモードの暗号化処理および復号化処理＞
ＥＣＢモードの暗号化処理または復号化処理が行われる場合、図１４に示すように、入力レジスタ２１、第２の選択部４２、入力データ保持部３３、第４の選択部４４、ブロック暗号演算部１１、第５の選択部４５および出力レジスタ２３が有効状態となり、ＩＶレジスタ２２、ＩＶデータ保持部３１、暗号化データ保持部３２、第１の選択部４１、第３の選択部４３、第１のデータ抽出部５１、第２のデータ抽出部５２、第１の論理演算部６１、第２の論理演算部６２、第３の論理演算部６３、第４の論理演算部６４および右ローテイト回路８１が無効状態となる。
【０１２５】
この場合、第２の選択部４２において入力レジスタ２１の入力データが選択されて入力データ保持部３３に供給され、入力データ保持部３３に保持された入力データが第４の選択部４４において選択されてブロック暗号演算部１１に供給されて、暗号化または復号化される。このブロック暗号演算部１１の演算結果が第５の選択部４５において選択されて、出力レジスタ２３に出力される。すなわち、入力レジスタ２１に保持された入力データがそのままブロック暗号演算部１１に供給されて、暗号化または復号化の演算が実行され、その演算結果が出力レジスタ２３に出力される。
したがって、入力レジスタ２１に保持される入力データのデータ長（Ｌ３ビット）は、ブロック暗号演算部１１において処理されるデータ長（Ｌ１ビット）と等しくなる。例えば”Ｌ１＝Ｌ３＝６４ビット”の場合、図１５に示すように、入力レジスタに保持される６４ビットの入力データに対応した、６４ビットの暗号化データまたは復号化データが出力レジスタ２３に保持される。
【０１２６】
＜ＣＢＣモードの暗号化処理＞
ＣＢＣモードの暗号化処理が行われる場合、図１６に示すように、ブロック暗号演算部１１、入力レジスタ２１、ＩＶレジスタ２２、出力レジスタ２３、ＩＶデータ保持部３１、入力データ保持部３３、第１の選択部４１、第２の選択部４２、第３の選択部４３、第４の選択部４４、第５の選択部４５、第１のデータ抽出部５１および第３の論理演算部６３が有効状態となり、暗号化データ保持部３２、第２のデータ抽出部５２、第１の論理演算部６１、第２の論理演算部６２、第４の論理演算部６４および右ローテイト回路８１が無効状態となる。
【０１２７】
この場合、先ず１つ目の入力データに対応した暗号化データが生成される初期サイクルでは、第１の選択部４１においてＩＶレジスタ２２のＩＶデータが選択されてＩＶデータ保持部３１に保持されるとともに、第２の選択４２において入力レジスタ２１の入力データが選択されて入力データ保持部３３に保持される。そして、ＩＶデータ保持部３１に保持されたＩＶデータと入力データ保持部３３に保持された入力データとが第３の論理演算部６３に入力され、排他的論理和などの論理演算が実行される。この第３の論理演算部６３の演算結果が第４の選択部４４において選択されてブロック暗号演算部１１に供給され、そこで暗号化の演算が実行され、この演算結果が第５の選択部４５において選択されて出力レジスタ２３に出力される。
【０１２８】
また、この初期サイクルにおいて、ブロック暗号演算部１１の演算結果は、第３の選択部４３において選択されて第１のデータ抽出部５１にも供給される。この場合、第１のデータ抽出部５１においては、既に述べた図１の暗号処理装置などにおける動作とは異なり、ブロック暗号演算部１１から出力されるＬ１ビット分のデータがそのまま第１の選択部４１に出力される。第１の選択部４１において、この第１のデータ抽出部５１から出力されたデータ（すなわちブロック暗号演算部１１の演算結果）が選択されてＩＶデータ保持部３１に保持され、次の処理サイクルでブロック暗号演算部１１に供給されるデータを生成するために準備される。
【０１２９】
初期サイクルに続く、２つ目以降の入力データに対応した暗号化データを生成するサイクルでは、第１の選択部４１において第１のデータ抽出部５１から出力されるデータが選択された状態で、上述した初期サイクルと同等の処理が実行される。すなわち、ブロック暗号演算部１１の演算結果がそのまま出力レジスタ２３に出力されるとともに、この演算結果が次回のサイクルにおいてブロック暗号演算部１１に供給されるデータを生成するために用いられる。
【０１３０】
＜ＣＢＣモードの復号化処理＞
ＣＢＣモードの復号化処理が行われる場合、図１７に示すように、ブロック暗号演算部１１、入力レジスタ２１、ＩＶレジスタ２２、出力レジスタ２３、ＩＶデータ保持部３１、入力データ保持部３３、第１の選択部４１、第２の選択部４２、第３の選択部４３、第４の選択部４４、第５の選択部４５、第１のデータ抽出部５１および第４の論理演算部６４が有効状態となり、暗号化データ保持部３２、第２のデータ抽出部５２、第１の論理演算部６１、第２の論理演算部６２、第３の論理演算部６３および右ローテイト回路８１が無効状態となる。
【０１３１】
この場合、先ず１つ目の入力データに対応した暗号化データが生成される初期サイクルでは、第１の選択部４１においてＩＶレジスタ２２のＩＶデータが選択されてＩＶデータ保持部３１に保持されるとともに、第２の選択４２において入力レジスタ２１の入力データが選択されて入力データ保持部３３に保持される。ＩＶデータ保持部３１に保持されたＩＶデータが第４の選択部４４において選択されてブロック暗号演算部１１に供給され、暗号化の演算が実行される。この演算結果と、ＩＶデータ保持部３１に保持されたＩＶデータとが第４の論理演算部６４に入力されて排他的論理和などの演算が実行され、その演算結果が第５の選択部４５において選択されて出力レジスタ２３に出力される。
【０１３２】
また、この初期サイクルにおいて、入力データ保持部３３に保持された入力データは、第３の選択部４３において選択されて第１のデータ抽出部５１にも供給され、ＣＢＣモードの暗号化処理の場合と同様に、入力レジスタ２１に保持されたＬ１ビット分のデータがそのまま第１の選択部４１に出力される。第１の選択部４１において、この第１のデータ抽出部５１から出力されたデータ（すなわち入力データ保持部３３に保持された入力データ）が選択されてＩＶデータ保持部３１に保持され、次の処理サイクルでブロック暗号演算部１１に供給されるデータとして準備される。
【０１３３】
初期サイクルに続く、２つ目以降の入力データに対応した暗号化データを生成するサイクルでは、第１の選択部４１において第１のデータ抽出部５１から出力されるデータが選択された状態で、上述した初期サイクルと同等の処理が実行される。すなわち、入力データ保持部３３に保持された前のサイクルの入力データが、そのまま次のサイクルにおいてブロック暗号演算部１１に供給される。
【０１３４】
なお、上述したＣＢＣモードの暗号化処理および復号化処理においても、ＥＣＢモードの場合と同様に、入力レジスタ２１に保持される入力データのデータ長（Ｌ３ビット）は、ブロック暗号演算部１１において処理されるデータ長（Ｌ１ビット）と等しくなる。すなわち、図１５に示すように、入力レジスタに保持されたＬ１ビットの入力データに対応したＬ１ビットの暗号化データまたは復号化が生成されて、出力レジスタ２３に保持される。
【０１３５】
＜ＯＦＢモードの暗号化処理および復号化処理＞
ＯＦＢモードの暗号化処理および復号化処理が行われる場合、図１８に示すように、ブロック暗号演算部１１、入力レジスタ２１、ＩＶレジスタ２２、出力レジスタ２３、ＩＶデータ保持部３１、暗号化データ保持部３２、入力データ保持部３３、第１の選択部４１、第２の選択部４２、第３の選択部４３、第４の選択部４４、第５の選択部４５、第１のデータ抽出部５１、第２のデータ抽出部５２、第１の論理演算部６１および右ローテイト回路８１が有効状態となり、第２の論理演算部６２、第３の論理演算部６３および第４の論理演算部６４が無効状態となる。
【０１３６】
この場合、第４の選択部４４においてＩＶデータ保持部３１の保持データが選択されてブロック暗号演算部１１に供給され、第５の選択部４５において第１の論理演算部６１の演算結果が選択されて出力レジスタ２３に出力されるとともに、第３の選択部４３においてブロック暗号演算部１１の演算結果が選択されて第１のデータ抽出部５１に出力される。こうした図１８の接続状態は、図８の暗号処理装置の図１２に示す接続状態と等価になる。したがって、図８の暗号処理装置におけるＯＦＢモードの場合と同様な制御が制御部７３において行われることにより、図８の暗号処理装置と同様なＯＦＢモードの処理を実現することが可能になる。
【０１３７】
＜ＣＦＢモードの暗号化処理＞
ＣＦＢモードの暗号化処理が行われる場合、図１９に示すように、ブロック暗号演算部１１、入力レジスタ２１、ＩＶレジスタ２２、出力レジスタ２３、ＩＶデータ保持部３１、暗号化データ保持部３２、入力データ保持部３３、第１の選択部４１、第２の選択部４２、第３の選択部４３、第４の選択部４４、第５の選択部４５、第１のデータ抽出部５１、第２のデータ抽出部５２、第１の論理演算部６１、第２の論理演算部６２および右ローテイト回路８１が有効状態となり、第３の論理演算部６３および第４の論理演算部６４が無効状態となる。
【０１３８】
この場合、第４の選択部４４においてＩＶデータ保持部３１の保持データが選択されてブロック暗号演算部１１に供給され、第５の選択部４５において第１の論理演算部６１の演算結果が選択されて出力レジスタ２３に出力されるとともに、第３の選択部４３において第２の論理演算部６２の演算結果が選択されて第１のデータ抽出部５１に出力される。こうした図１９の接続状態は、図８の暗号処理装置の図１０に示す接続状態と等価になる。したがって、図８の暗号処理装置におけるＣＦＢモードの暗号化処理の場合と同様な制御が制御部７３において行われることにより、図８の暗号処理装置と同様なＣＦＢモードの暗号化処理を実現することが可能になる。
【０１３９】
＜ＣＦＢモードの復号化処理＞
ＣＦＢモードの復号化処理が行われる場合、図２０に示すように、ブロック暗号演算部１１、入力レジスタ２１、ＩＶレジスタ２２、出力レジスタ２３、ＩＶデータ保持部３１、暗号化データ保持部３２、入力データ保持部３３、第１の選択部４１、第２の選択部４２、第３の選択部４３、第４の選択部４４、第５の選択部４５、第１のデータ抽出部５１、第２のデータ抽出部５２、第１の論理演算部６１および右ローテイト回路８１が有効状態となり、第２の論理演算部６２、第３の論理演算部６３および第４の論理演算部６４が無効状態となる。
【０１４０】
この場合、第４の選択部４４においてＩＶデータ保持部３１の保持データが選択されてブロック暗号演算部１１に供給され、第５の選択部４５において第１の論理演算部６１の演算結果が選択されて出力レジスタ２３に出力されるとともに、第３の選択部４３において入力データ保持部３３の保持データが選択されて第１のデータ抽出部５１に出力される。こうした図２０の接続状態は、図８の暗号処理装置の図１１に示す接続状態と等価になる。したがって、図８の暗号処理装置におけるＣＦＢモードの復号化処理の場合と同様な制御が制御部７３において行われることにより、図８の暗号処理装置と同様なＣＦＢモードの復号化処理を実現することが可能になる。
【０１４１】
以上説明したように、図１３に示す暗号処理装置によれば、図８の暗号処理装置に対して第４の選択部４４、第５の選択部４５、第３の論理演算部６３および第４の論理演算部６４が追加された簡易な構成でありながら、ＯＦＢモードおよびＣＦＢモードの処理に加えて、ＥＣＢモードやＣＢＣモードの処理を行うことが可能になる。したがって、ブロック暗号演算部１１として例えばＤＥＳ暗号方式の暗号化または復号化の演算を行うユニットを適用した場合、図１３に示す暗号処理装置によれば、ＦＩＰＳ８１において定められている４つの操作モードを全て実現することが可能になる。
【０１４２】
なお、本発明は上述した実施形態に限定されない。
例えば、本発明の実施形態の説明において用いられているビット列の「上位」および「下位」の区別は、処理されるデータのビット列における一方の端を「上位」として適当に定めた場合に、他方の端を「下位」と見なして区別すること意味しており、データの内容や値、データが伝送される順序などに応じてビット列の「上位」および「下位」が限定されることを意味していない。
【０１４３】
【発明の効果】
本発明によれば、第１に、ブロック暗号化方式を用いて単位ブロック・データよりもデータ長の短い複数のデータを順次暗号化または復号化する場合において、処理時間をより短くすることができ、ソフトウェアによる処理の負担を軽減できるできる。
第２に、簡易な構成で、複数の操作モードの処理を実行することが可能になる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態に係る暗号処理装置の構成例を示すブロック図である。
【図２】入力レジスタに保持されるデータと出力レジスタに保持されるデータとの対応関係を説明するための第１の図である。
【図３】図１の暗号処理装置における暗号化処理または復号化処理の流れを説明するためのフローチャートである。
【図４】暗号化データ保持部に保持されるデータの変化について説明するための図である。
【図５】本発明の第１の実施形態に係る暗号処理装置の他の構成例を示すブロック図である。
【図６】図５の暗号処理装置における暗号化処理または復号化処理の流れを説明するためのフローチャートである。
【図７】暗号化データ保持部および入力データ保持部に保持されるデータの変化について説明するための図である。
【図８】本発明の第２の実施形態に係る暗号処理装置の構成例を示すブロック図である。
【図９】図８の暗号処理装置におけるＣＦＢモードの暗号化処理の流れを説明するためのフローチャートである。
【図１０】図８の暗号処理装置においてＣＦＢモードの暗号化処理が行われる場合に有効または無効となる信号を示す図である。
【図１１】図８の暗号処理装置においてＣＦＢモードの復号化処理が行われる場合に有効または無効となる信号を示す図である。
【図１２】図８の暗号処理装置においてＯＦＢモードの暗号化処理または復号化処理が行われる場合に有効または無効となる信号を示す図である。
【図１３】本発明の第３の実施形態に係る暗号処理装置の構成例を示すブロック図である。
【図１４】図１３の暗号処理装置においてＥＣＢモードの暗号化処理または復号化処理が行われる場合に有効または無効となる信号を示す図である。
【図１５】入力レジスタに保持されるデータと出力レジスタに保持されるデータとの対応関係を説明するための第２の図である。
【図１６】図１３の暗号処理装置においてＣＢＣモードの暗号化処理が行われる場合に有効または無効となる信号を示す図である。
【図１７】図１３の暗号処理装置においてＣＢＣモードの復号化処理が行われる場合に有効または無効となる信号を示す図である。
【図１８】図１３の暗号処理装置においてＯＦＢモードの暗号化処理または復号化処理が行われる場合に有効または無効となる信号を示す図である。
【図１９】図１３の暗号処理装置においてＣＦＢモードの暗号化処理が行われる場合に有効または無効となる信号を示す図である。
【図２０】図１３の暗号処理装置においてＣＦＢモードの復号化暗号化処理が行われる場合に有効または無効となる信号を示す図である。
【図２１】ＥＣＢモードの概要を説明するための図である。
【図２２】ＣＢＣモードの概要を説明するための図である。
【図２３】ＯＦＢモードの概要を説明するための図である。
【図２４】ＣＦＢモードの概要を説明するための図である。
【符号の説明】
１１…ブロック暗号演算部、２１…入力レジスタ、２２…ＩＶレジスタ、２３…出力レジスタ、２４…データ長設定レジスタ、３１…ＩＶデータ保持部、３２…暗号化データ保持部、３３…入力データ保持部、４１…第１の選択部、４２…第２の選択部、４３…第３の選択部、４４…第４の選択部、４５…第５の選択部、５１…第１のデータ抽出部、５２…第２のデータ抽出部、６１…第１の論理演算部、６２…第２の論理演算部、６３…第３の論理演算部、６４…第４の論理演算部、７１，７１’，７２，７３…制御部、８１…右ローテイト回路。
【図１】
2004045641.tif 000003
【図２】
2004045641.tif 000004
【図３】
2004045641.tif 000005
【図４】
2004045641.tif 000006
【図５】
2004045641.tif 000007
【図６】
2004045641.tif 000008
【図７】
2004045641.tif 000009
【図８】
2004045641.tif 000010
【図９】
2004045641.tif 000011
【図１０】
2004045641.tif 000012
【図１１】
2004045641.tif 000013
【図１２】
2004045641.tif 000014
【図１３】
2004045641.tif 000015
【図１４】
2004045641.tif 000016
【図１５】
2004045641.tif 000017
【図１６】
2004045641.tif 000018
【図１７】
2004045641.tif 000019
【図１８】
2004045641.tif 000020
【図１９】
2004045641.tif 000021
【図２０】
2004045641.tif 000022
【図２１】
2004045641.tif 000023
【図２２】
2004045641.tif 000024
【図２３】
2004045641.tif 000025
【図２４】
2004045641.tif 000026