(57)【要約】本発明は、ラインドールブロック暗号を暗号化及び復号化するためのラウンド演算を效率よく行う演算装置を含んだラインドールブロック暗号化装置とその暗号化及び復号化方法に関する。本発明に係るラインドールブロック暗号化装置は、高速、小面積の暗号プロセッサーを要求する携帯電話やＰＤＡのような携帯電話端末またはスマートカードに搭載することにより、保安を要する重要なデータを高速で暗号化及び復号化でき、特に、１２８ビット入力データを上位６４ビットと下位６４ビットに分けて、ラウンド演算を行うようになっている。したがって、本発明は、ラインドールブロック暗号を暗号化及び復号化するのに必要な時間を減らしながら、装置の面積を減少させることができる。
2006527865.tif 000002
【特許請求の範囲】
【請求項１】
暗号または復号演算開始信号Ｓｔａｒｔとモード信号ｍｏｄｅが入った後、ラウンド演算開始信号Ｒｏｕｎｄ＿ｓｔａｒｔ、ラウンド番号信号Ｒｏｕｎｄ＿ｎｕｍｂｅｒ、及びラウンド演算毎に、前記１２８ビット入力データを、上位６４ビットと下位６４ビットに分けて選択するためのビット選択信号Ｓｅｌが入ると、この時からモード信号の値に基づいて、１２８ビット入力キーを暗号化用または復号化用の１２８ビットラウンドキーに変換して保存し、１２８ビット入力データを、上位６４ビットと下位６４ビットに分けて、それぞれShift_Row、Substitution、MixColumn、Add Round Keyの変換過程からなるラウンド演算を行って、前記１２８ビット入力データを暗号化し、１２８ビット入力データを上位６４ビットと下位６４ビットに分けて、それぞれInverse Shift_Row、Inverse Substitution、Add Round Key、Inverse MixColumnの変換過程からなるラウンド演算を行って、前記１２８ビット入力データを復号化するラウンド演算部と、
前記暗号または復号演算開始信号とモード信号が入ると、この時からラウンド演算開始信号Ｒｏｕｎｄ＿ｓｔａｒｔ、ラウンド番号信号Ｒｏｕｎｄ＿ｎｕｍｂｅｒ、及びラウンド演算毎に、前記１２８ビット入力データを、上位６４ビットと下位６４ビットに分けて選択するためのビット選択信号Ｓｅｌを前記ラウンド演算部に伝達して、前記ラウンド演算部のラウンド演算動作を制御するラウンド演算制御部と、
前記ラウンド演算部により行われる毎度のラウンド演算中に生成される上位６４ビット入力データの中間暗号または復号データを保存する６４ビットデータレジスタと、
前記ラウンド演算部により行われる毎度のラウンド演算中に生成される下位６４ビット入力データの中間暗号または復号データを、下位６４ビットとして保存し、最後のラウンド演算結果として生成され、前記６４ビットデータレジスタに保存された暗号または復号データを、上位６４ビットとして保存する１２８ビットデータレジスタと、で構成されることを特徴とするラインドールブロック暗号化装置。
【請求項２】
前記ラウンド演算部が、
前記ラウンド演算制御部からラウンド演算開始信号とラウンド番号信号が入ると、前記バスを介して入ったモード信号の値に基づいて、１２８ビット入力キーＫｅｙを、暗号化用または復号化用の１２８ビットラウンドキーＲＫに変換して、内部の１２８ビットラウンドキーレジスタに保存するラウンドキー生成部と、
前記ラウンド演算制御部からラウンド演算開始信号とビット選択信号が入ると、前記バスを介して入ったモード信号の値に基づいて、バスを介して入った１２８ビット入力データを、上位６４ビットと下位６４ビットに分けて、それぞれ異なる数だけbyte-shift変換した後、前記ビット選択信号の値に基づいて出力が制御される内部の第１多重化器に、シフト変換された１２８ビット入力データを、上位６４ビットと下位６４ビットに分けて出力するShift／Inverse Shift_Row変換部と、
前記Shift／Inverse Shift_Row変換部から出力される上位６４ビットデータと下位６４ビットデータを、あるバイトの入力に対してあるバイトの出力を送出するSubstitution box（S-box）またはInverse Substitution box（SI-box）を用いて、Substitution／Inverse Substitution演算を行うSubstitution／Inverse Substitution変換部と、
前記Substitution／Inverse Substitution変換部から出力される上位６４ビットデータまたは下位６４ビットデータを、前記モード信号の値に基づいて、暗号出力端０と復号出力端１のうちいずれかに出力する第１逆多重化器と、
前記第１逆多重化器の暗号出力端から入力される上位６４ビットデータまたは下位６４ビットデータを、MixColumn変換し、または、Add Round Key変換された上位６４ビットデータまたは下位６４ビットデータをInverse MixColumn変換するMix／Inverse MixColumn変換部と、
前記Mix／Inverse MixColumn変換部から出力される上位６４ビットデータまたは下位６４ビットデータを、前記モード信号の値に基づいて、暗号出力端と復号出力端のうちいずれかに出力する第２逆多重化器と、
前記第１逆多重化器の復号出力端または前記第２逆多重化器の暗号出力端から入力される上位６４ビットデータまたは下位６４ビットデータを、前記ラウンドキー生成部から出力される暗号化用または復号化用の１２８ビットラウンドキーＲＫとAdd Round Key変換するAdd Round Key変換部と、
前記Add Round Key変換部から出力される上位６４ビットデータまたは下位６４ビットデータを、前記モード信号の値に基づいて、暗号出力端と復号出力端のうちいずれかに出力する第３逆多重化器と、で構成されることを特徴とする請求項１に記載のラインドールブロック暗号化装置。
【請求項３】
前記ラウンド演算制御部から４クロックまたは３クロックラウンド演算開始信号が、ラウンド演算部に入る場合、前記Substitution／Inverse Substitution変換部が第１の逆多重化器に出力する上位６４ビットデータは、６４ビットデータレジスタに保存され、下位６４ビットデータは、１２８ビットデータレジスタの下位６４ビットデータに保存されることを特徴とする請求項１または２に記載のラインドールブロック暗号化装置。
【請求項４】
前記ラウンド演算制御部から４クロックラウンド演算開始信号が、ラウンド演算部に入る場合、前記Mix／Inverse MixColumn変換部が、第２逆多重化器に出力するMixColumnされた上位６４ビットデータは、６４ビットデータレジスタに保存され、MixColumn変換された下位６４ビットデータは、１２８ビットデータレジスタの下位６４ビットデータに保存されることを特徴とする請求項１または２に記載のラインドールブロック暗号化装置。
【請求項５】
前記ラウンド演算制御部から４クロックラウンド演算開始信号が、ラウンド演算部に入る場合、前記Add Round Key変換部が、第３逆多重化器に出力する暗号化用の上位６４ビットデータは、１２８ビットデータレジスタの上位６４ビットデータに保存され、暗号化用の下位６４ビットデータは、１２８ビットデータレジスタの下位６４ビットデータに保存されることを特徴とする請求項１または２に記載のラインドールブロック暗号化装置。
【請求項６】
前記ラウンド演算制御部から４クロックラウンド演算開始信号が、ラウンド演算部に入る場合、前記Add Round Key変換部が、第３逆多重化器に出力する復号化用の上位６４ビットデータは、６４ビットデータレジスタに保存され、復号化用の下位６４ビットデータは、１２８ビットデータレジスタの下位６４ビットデータに保存されることを特徴とする請求項１または２に記載のラインドールブロック暗号化装置。
【請求項７】
前記ラウンド演算制御部から４クロックラウンド演算開始信号が、ラウンド演算部に入る場合、前記Mix／Inverse MixColumn変換部が、第２逆多重化器に出力するInverse MixColumn変換された上位６４ビットデータは、１２８ビットデータレジスタの上位６４ビットデータに保存され、Inverse MixColumn変換された下位６４ビットデータは、１２８ビットデータレジスタの下位６４ビットデータに保存されることを特徴とする請求項１または２に記載のラインドールブロック暗号化装置。
【請求項８】
前記ラウンド演算制御部から３クロックラウンド演算開始信号が、ラウンド演算部に入る場合、前記Mix／Inverse MixColumn変換後、前記Add Round Key変換部が、第３逆多重化器に出力する暗号化用の上位６４ビットデータは、６４ビットデータレジスタに保存された後、最後の３番目のクロックが１となると、１２８ビットデータレジスタの上位６４ビットデータに保存され、暗号化用の下位６４ビットデータは、１２８ビットデータレジスタの下位６４ビットデータに保存されることを特徴とする請求項１または２に記載のラインドールブロック暗号化装置。
【請求項９】
前記ラウンド演算制御部から３クロックラウンド演算開始信号が、ラウンド演算部に入る場合、Add Round Key変換後、前記Mix／Inverse MixColumn部が、第２逆多重化器に出力するInverse MixColumn変換された上位６４ビットデータは、６４ビットデータレジスタに保存された後、最後の３番目のクロックが１となると、１２８ビットデータレジスタの上位６４ビットデータに保存され、Inverse MixColumn変換された下位６４ビットデータは、１２８ビットデータレジスタの下位６４ビットデータに保存されることを特徴とする請求項１または２に記載のラインドールブロック暗号化装置。
【請求項１０】
前記ラウンド演算制御部から２クロックラウンド演算開始信号が、ラウンド演算部に入る場合、Shift_Row変換、Substitution変換、MixColumn変換後、Add Round Key変換部が、第３逆多重化器に出力する暗号化用の上位６４ビットデータは、６４ビットデータレジスタに保存された後、最後の２番目のクロックが１となると、１２８ビットデータレジスタの上位６４ビットデータに保存され、暗号化用の下位６４ビットデータは、１２８ビットデータレジスタの下位６４ビットデータに保存されることを特徴とする請求項１または２に記載のラインドールブロック暗号化装置。
【請求項１１】
前記ラウンド演算制御部から２クロックラウンド演算開始信号が、ラウンド演算部に入る場合、Inverse Shift_Row変換、Inverse Substitution変換、Add Round Key変換後、Inverse MixColumn部が、第２逆多重化器に出力するInverse MixColumn変換された上位６４ビットデータは、６４ビットデータレジスタに保存された後、最後の２番目のクロックが１となると、１２８ビットデータレジスタの上位６４ビットデータに保存され、Inverse MixColumn変換された下位６４ビットデータは、１２８ビットデータレジスタの下位６４ビットデータに保存されることを特徴とする請求項１または２に記載のラインドールブロック暗号化装置。
【請求項１２】
前記ラウンドキー生成部は、
バスを介して入った１２８ビット入力キーＫｅｙを、暗号化用または復号化用の１２８ビットラウンドキーＲＫに変換するためのプレキー(prekey)として保存し、毎度のラウンド演算後、生成された１２８ビットラウンドキーＲＫを、次のラウンド演算で用いられるラウンドキーＲＫを生成するためのプレキー(prekey)として保存する１２８ビットプレキーレジスタと、
毎度のラウンド演算のための暗号化用または復号化用の１２８ビットラウンドキーＲＫを保存する１２８ビットキーレジスタと、
前記ラウンド演算制御部から入るラウンド番号信号が示すラウンドが、何番目のラウンドであるかによって決定される定数値Ｒｃｏｎを保存する定数保存部と、
前記バスを介して入ったモード信号の値に基づいて、出力が制御されて、前記１２８ビットプレキーレジスタと前記１２８ビットラウンドキーレジスタから入力される暗号化用または復号化用の３２ビットキーのいずれかを選択して出力する第２多重化器と、
前記第２多重化器から入力される３２ビットキーを１バイトの左側に循環シフトさせるシフト器と、
substitution演算を行うSubstitution boxからなり、前記シフト器により循環シフトされた３２ビットキーをsubstitution変換するsubstitution変換器と、
前記substitution変換器に出力される３２ビットキーのうち最上位のあるバイト値と、前記定数保存部に保存された定数値とのＸＯＲ演算を行う第１ＸＯＲ演算器と、
前記第１ＸＯＲ演算器の出力値と、substitution変換器の最上位のあるバイト値を除いた残りの２４ビット値が合わせられた３２ビット値と、前記１２８ビットプレキーレジスタに保存される以前ラウンドの１２８ビットラウンドキー(prekey)、及び前記１２８ビットラウンドキーレジスタに保存される新たなラウンドの１２８ビットラウンドキーＲＫを利用するＸＯＲ演算を行って、前記１２８ビットラウンドキーレジスタに保存される暗号化用または復号化用の１２８ビットラウンドキーＲＫを、ラウンド演算のラウンド毎に新たに生成するラウンドＸＯＲ演算部と、で構成されることを特徴とする請求項２に記載のラインドールブロック暗号化装置。
【請求項１３】
前記ラウンド演算制御部から４クロックラウンド演算開始信号が、ラウンド演算部に入る場合、前記ラウンドキー生成部のラウンドＸＯＲ演算部は、４クロック期間に暗号化ラウンドキーを生成し、
暗号化ラウンド演算開始信号の１番目クロックが１となると、前記第１ＸＯＲ演算器の出力値と、substitution変換器の最上位のあるバイト値を除いた残りの２４ビット値が合わせられた３２ビット値と、以前ラウンドの１２８ビットラウンドキーのうち最上位の３２ビットＰＫ０とをＸＯＲ演算して、新たなラウンドの暗号化用または復号化用の１２８ビットラウンドキーのうち最上位の３２ビットラウンドキーＲＫ０を生成する第２ＸＯＲ演算器と、
暗号化ラウンド演算開始信号の２番目クロックが１となると、新たなラウンドの１２８ビットラウンドキーのうち、１２７番目から９６番目までの最上位の３２ビットラウンドキーＲＫ０と、以前ラウンドの１２８ビットラウンドキーのうち最上位の３２ビット後の９５番目から６４番目までの３２ビットラウンドキーＰＫ１とをＸＯＲ演算して、新たなラウンドの暗号化用１２８ビットラウンドキーのうち９５番目から６４番目までの３２ビットラウンドキーＲＫ１を生成し、以前ラウンドの１２８ビットラウンドキーの１２７番目から９６番目までの最上位の３２ビットラウンドキーＰＫ０と、その次の９５番目から６４番目までの３２ビットラウンドキーＰＫ１とをＸＯＲ演算して、新たなラウンドの復号化用１２８ビットラウンドキーのうち９５番目から６４番目までの３２ビットラウンドキーＲＫ１を生成する第３ＸＯＲ演算器と、
前記バスを介して入ったモード信号の値に基づいて、出力が制御され、前記第３ＸＯＲ演算器の入力信号を選択的に決定する第３多重化器と、
暗号化ラウンド演算開始信号の３番目クロックが１となると、新たなラウンドの１２８ビットラウンドキーのうち９５番目から６４番目までの３２ビットラウンドキーＲＫ１と、以前ラウンドの１２８ビットラウンドキーのうち６３番目から３２番目までの３２ビットラウンドキーＰＫ２とをＸＯＲ演算して、新たなラウンドの暗号化用１２８ビットラウンドキーのうち６３番目から３２番目までの３２ビットラウンドキーＲＫ２を生成し、以前ラウンドの１２８ビットラウンドキーの９５番目から６４番目までの３２ビットラウンドキーＰＫ１と、その次の６３番目から３２番目までの３２ビットラウンドキーＰＫ２とをＸＯＲ演算して、新たなラウンドの復号化用１２８ビットラウンドキーのうち６３番目から３２番目までの３２ビットラウンドキーＲＫ２を生成する第４ＸＯＲ演算器と、
前記バスを介して入ったモード信号の値に基づいて、出力が制御され、前記第４ＸＯＲ演算器の入力信号を選択的に決定する第４多重化器と、
暗号化ラウンド演算開始信号の４番目クロックが１となると、新たなラウンドの１２８ビットラウンドキーのうち６３番目から３２番目までの３２ビットラウンドキーＲＫ２と、以前ラウンドの１２８ビットラウンドキーのうち３１番目から０番目までの３２ビットラウンドキーＰＫ３とをＸＯＲ演算して、新たなラウンドの暗号化用１２８ビットラウンドキーのうち３１番目から０番目までの３２ビットラウンドキーＰＫ３を生成すし、以前ラウンドの１２８ビットラウンドキーの６３番目から３２番目までの３２ビットラウンドキーＰＫ２と、その次の３１番目から０番目までの３２ビットラウンドキーＰＫ３とをＸＯＲ演算して、新たなラウンドの復号化用１２８ビットラウンドキーのうち３１番目から０番目までの３２ビットラウンドキーＲＫ３を生成する第５ＸＯＲ演算器と、
前記バスを介して入ったモード信号の値に基づいて、出力が制御され、前記第５ＸＯＲ演算器の入力信号を選択的に決定する第５多重化器と、で構成されることを特徴とする請求項１２に記載のラインドールブロック暗号化装置。
【請求項１４】
前記ラウンド演算制御部から３クロックラウンド演算開始信号が、ラウンド演算部に入る場合、前記ラウンドキー生成部のラウンドＸＯＲ演算部は、２クロック期間に暗号化ラウンドキーを生成し、
暗号化ラウンド演算開始信号の１番目クロックが１となると、前記第１ＸＯＲ演算器の出力値と、substitution変換器の最上位のあるバイト値を除いた残りの２４ビット値が合わせられた３２ビット値と、以前ラウンドの１２８ビットラウンドキーのうち最上位の３２ビットＰＫ０とをＸＯＲ演算して、新たなラウンドの暗号化用または復号化用の１２８ビットラウンドキーのうち最上位の３２ビットラウンドキーＲＫ０を生成する第２ＸＯＲ演算器と、
暗号化ラウンド演算開始信号の２番目クロックが１となると、新たなラウンドの１２８ビットラウンドキーのうち、１２７番目から９６番目までの最上位の３２ビットラウンドキーＲＫ０と、以前ラウンドの１２８ビットラウンドキーのうち最上位の３２ビット後の９５番目から６４番目までの３２ビットラウンドキーＰＫ１とをＸＯＲ演算して、新たなラウンドの暗号化用１２８ビットラウンドキーのうち９５番目から６４番目までの３２ビットラウンドキーＲＫ１を生成し、以前ラウンドの１２８ビットラウンドキーの１２７番目から９６番目までの最上位の３２ビットラウンドキーＰＫ０と、その次の９５番目から６４番目までの３２ビットラウンドキーＰＫ１とをＸＯＲ演算して、新たなラウンドの復号化用１２８ビットラウンドキーのうち９５番目から６４番目までの３２ビットラウンドキーＲＫ１を生成する第３ＸＯＲ演算器と、
前記バスを介して入ったモード信号の値に基づいて、出力が制御され、前記第３ＸＯＲ演算器の入力信号を選択的に決定する第３多重化器と、
暗号化ラウンド演算開始信号の２番目クロックが１となると、第３ＸＯＲ演算器１１８ａが、新たなラウンドの１２８ビットラウンドキーのうち１２７番目から９６番目までの最上位の３２ビットラウンドキーＲＫ０と、以前ラウンドの１２８ビットラウンドキーのうち最上位の３２ビットの次の９５番目から６４番目までの３２ビットラウンドキーＰＫ１とをＸＯＲ演算した結果値ＲＫ０・ＰＫ１と、以前ラウンドの６３番目から３２番目までの３２ビットラウンドキーＰＫ２とをＸＯＲ演算して、新たなラウンドの暗号化用１２８ビットラウンドキーのうち６３番目から３２番目までの３２ビットラウンドキーＲＫ２を生成し、以前ラウンドの１２８ビットラウンドキーの９５番目から６４番目までの３２ビットラウンドキーＰＫ１と、その次の６３番目から３２番目までの３２ビットラウンドキーＰＫ２とをＸＯＲ演算して、新たなラウンドの復号化用１２８ビットラウンドキーのうち６３番目から３２番目までの３２ビットラウンドキーＲＫ２を生成する第４ＸＯＲ演算器と、
前記バスを介して入ったモード信号の値に基づいて、出力が制御され、前記第４ＸＯＲ演算器の入力信号を選択的に決定する第４多重化器と、
暗号化ラウンド演算開始信号の２番目クロックが１となると、第４ＸＯＲ演算器が、第３ＸＯＲ演算器によりＸＯＲ演算された新たなラウンドの１２８ビットラウンドキーのうち１２７番目から９６番目までの最上位の３２ビットラウンドキーＲＫ０と、以前ラウンドの１２８ビットラウンドキーのうち最上位の３２ビットの次の９５番目から６４番目までの３２ビットラウンドキーＰＫ１とをＸＯＲ演算した結果値ＲＫ０・ＰＫ１と、以前ラウンドの６３番目から３２番目までの３２ビットラウンドキーＰＫ２とをＸＯＲ演算した結果値ＲＫ０・ＰＫ１・ＰＫ２と、以前ラウンドの３１番目から０番目までの３２ビットラウンドキーＰＫ３とをＸＯＲ演算して、新たなラウンドの暗号化用１２８ビットラウンドキーのうち３１番目から０番目までの３２ビットラウンドキーＲＫ３を生成し、以前ラウンドの１２８ビットラウンドキーの６３番目から３２番目までの３２ビットラウンドキーＰＫ２と、その次の３１番目から０番目までの３２ビットラウンドキーＰＫ３とをＸＯＲ演算して、新たなラウンドの復号化用１２８ビットラウンドキーのうち３１番目から０番目までの３２ビットラウンドキーＲＫ３を生成する第５ＸＯＲ演算器と、
前記バスを介して入ったモード信号の値に基づいて、出力が制御され、前記第５ＸＯＲ演算器の入力信号を選択的に決定する第５多重化器と、で構成されることを特徴とする請求項１２に記載のラインドールブロック暗号化装置。
【請求項１５】
前記ラウンド演算制御部から２クロックラウンド演算開始信号が、ラウンド演算部に入る場合、前記ラウンドキー生成部のラウンドＸＯＲ演算部は、１クロック期間に暗号化ラウンドキーを生成し、
暗号化ラウンド演算開始信号が入力されると同時に、クロックが「０」である状態で、前記第１ＸＯＲ演算器の出力値と、substitution変換器の最上位のあるバイト値を除いた残りの２４ビット値が合わせられた３２ビット値と、以前ラウンドの１２８ビットラウンドキーのうち最上位の３２ビットＰＫ０とをＸＯＲ演算して、新たなラウンドの暗号化用または復号化用の１２８ビットラウンドキーのうち最上位の３２ビットラウンドキーＲＫ０を生成する第２ＸＯＲ演算器と、
暗号化ラウンド演算開始信号の１番目クロックが１となると、新たなラウンドの１２８ビットラウンドキーのうち、１２７番目から９６番目までの最上位の３２ビットラウンドキーＲＫ０と、以前ラウンドの１２８ビットラウンドキーのうち最上位の３２ビット後の９５番目から６４番目までの３２ビットラウンドキーＰＫ１とをＸＯＲ演算して、新たなラウンドの暗号化用１２８ビットラウンドキーのうち９５番目から６４番目までの３２ビットラウンドキーＲＫ１を生成し、以前ラウンドの１２８ビットラウンドキーの１２７番目から９６番目までの最上位の３２ビットラウンドキーＰＫ０と、その次の９５番目から６４番目までの３２ビットラウンドキーＰＫ１とをＸＯＲ演算して、新たなラウンドの復号化用１２８ビットラウンドキーのうち９５番目から６４番目までの３２ビットラウンドキーＲＫ１を生成する第３ＸＯＲ演算器と、
前記バスを介して入ったモード信号の値に基づいて、出力が制御され、前記第３ＸＯＲ演算器の入力信号を選択的に決定する第３多重化器と、
暗号化ラウンド演算開始信号の１番目クロックが１となると、第３ＸＯＲ演算器が、新たなラウンドの１２８ビットラウンドキーのうち１２７番目から９６番目までの最上位の３２ビットラウンドキーＲＫ０と、以前ラウンドの１２８ビットラウンドキーのうち最上位の３２ビットの次の９５番目から６４番目までの３２ビットラウンドキーＰＫ１とをＸＯＲ演算した結果値ＲＫ０・ＰＫ１と、以前ラウンドの６３番目から３２番目までの３２ビットラウンドキーＰＫ２とをＸＯＲ演算して、新たなラウンドの暗号化用１２８ビットラウンドキーのうち６３番目から３２番目までの３２ビットラウンドキーＲＫ２を生成し、以前ラウンドの１２８ビットラウンドキーの９５番目から６４番目までの３２ビットラウンドキーＰＫ１と、その次の６３番目から３２番目までの３２ビットラウンドキーＰＫ２とをＸＯＲ演算して、新たなラウンドの復号化用１２８ビットラウンドキーのうち６３番目から３２番目までの３２ビットラウンドキーＲＫ２を生成する第４ＸＯＲ演算器と、
前記バスを介して入ったモード信号の値に基づいて、出力が制御され、前記第４ＸＯＲ演算器の入力信号を選択的に決定する第４多重化器と、
暗号化ラウンド演算開始信号の１番目クロックが１となると、第４ＸＯＲ演算器が、第３ＸＯＲ演算器によりＸＯＲ演算された新たなラウンドの１２８ビットラウンドキーのうち１２７番目から９６番目までの最上位の３２ビットラウンドキーＲＫ０と、以前ラウンドの１２８ビットラウンドキーのうち最上位の３２ビットの次の９５番目から６４番目までの３２ビットラウンドキーＰＫ１とをＸＯＲ演算した結果値ＲＫ０・ＰＫ１と、以前ラウンドの６３番目から３２番目までの３２ビットラウンドキーＰＫ２とをＸＯＲ演算した結果値ＲＫ０・ＰＫ１・ＰＫ２と、以前ラウンドの３１番目から０番目までの３２ビットラウンドキーＰＫ３とをＸＯＲ演算して、新たなラウンドの暗号化用１２８ビットラウンドキーのうち３１番目から０番目までの３２ビットラウンドキーＲＫ３を生成し、以前ラウンドの１２８ビットラウンドキーの６３番目から３２番目までの３２ビットラウンドキーＰＫ２と、その次の３１番目から０番目までの３２ビットラウンドキーＰＫ３とをＸＯＲ演算して、新たなラウンドの復号化用１２８ビットラウンドキーのうち３１番目から０番目までの３２ビットラウンドキーＲＫ３を生成する第５ＸＯＲ演算器と、
前記バスを介して入ったモード信号の値に基づいて、出力が制御され、前記第５ＸＯＲ演算器の入力信号を選択的に決定する第５多重化器と、で構成されることを特徴とする請求項１２に記載のラインドールブロック暗号化装置。
【請求項１６】
バスを介して暗号または復号演算開始信号とモード信号が入った後、ラウンド演算制御部から４クロックラウンド演算開始信号とラウンド番号信号が入ると、１番目のクロックが１となるときから、ラウンド演算部のラウンドキー生成部が、バスを介して入ったモード信号の値に基づいて、１２８ビット入力キーＫｅｙを暗号化用１２８ビットラウンドキーＲＫに変換して、内部の１２８ビットラウンドキーレジスタに保存するステップと、
前記ラウンド演算制御部から４クロックラウンド演算開始信号とビット選択信号が入ると、１番目のクロックが１となるとき、Shift／Inverse Shift_Row変換部が、バスを介して入った１２８ビット入力データのうち、上位６４ビットデータをbyte-inverse-shift変換して、第１多重化器に出力し、続けて、Substitution／Inverse Substitution変換部が、この上位６４ビットデータをSubstitution演算して、第１逆多重化器に出力しながら、６４ビットデータレジスタに保存するステップと、
前記ラウンド演算開始信号の２番目のクロックが１となるとき、Mix／Inverse MixColumn変換部が、前記第１逆多重化器の暗号出力端から出力される６４ビットデータレジスタに保存された上位６４ビットデータをMixColumn変換して、第２逆多重化器に出力しながら、前記６４ビットデータレジスタに保存すると同時に、Shift／Inverse Shift_Row変換部が、バスを介して入った１２８ビット入力データのうち、下位６４ビットデータをbyte-shift変換して、第１多重化器に出力し、続けて、Substitution／Inverse Substitution変換部が、この下位６４ビットデータをSubstitution演算して、第１逆多重化器に出力しながら、１２８ビットデータレジスタの下位６４ビットに保存するステップと、
前記ラウンド演算開始信号の３番目のクロックが１となるとき、Add Round Key変換部が、前記第２逆多重化器の暗号出力端から出力される６４ビットデータレジスタに保存された上位６４ビットデータを、前記ラウンドキー生成部により生成された上位６４ビットラウンドキーとAdd 変換を行って、１２８ビットデータレジスタの上位６４ビットに保存すると同時に、Mix／Inverse MixColumn変換部が、前記第１逆多重化器の暗号出力端から出力される１２８ビットデータレジスタに保存された下位６４ビットデータをMixColumn変換して、第２逆多重化器に出力しながら、前記１２８ビットデータレジスタの下位６４ビットに保存するステップと、
前記ラウンド演算開始信号の４番目のクロックが１となるとき、Add Round Key変換部が、前記第２逆多重化器の暗号出力端から出力される１２８ビットデータレジスタに保存された下位６４ビットデータを、前記ラウンドキー生成部により生成された下位６４ビットラウンドキーとAdd 変換を行って、１２８ビットデータレジスタの下位６４ビットに保存するステップと、からなることを特徴とするラインドールブロック暗号化方法。
【請求項１７】
前記ラウンドキー生成部が、バスを介して入ったモード信号の値に基づいて、１２８ビット入力キーＫｅｙを暗号化用１２８ビットラウンドキーＲＫに変換して、内部の１２８ビットラウンドキーレジスタに保存するステップにおいては、前記ラウンド演算開始信号の４クロック期間に暗号化用１２８ビットラウンドキーＲＫを生成することを特徴とする請求項１６に記載のラインドールブロック暗号化方法。
【請求項１８】
バスを介して暗号または復号演算開始信号とモード信号が入った後、ラウンド演算制御部から４クロックラウンド演算開始信号とラウンド番号信号が入ると、１番目のクロックが１となるときから、ラウンド演算部のラウンドキー生成部が、バスを介して入ったモード信号の値に基づいて、１２８ビット入力キーＫｅｙを復号化用１２８ビットラウンドキーＲＫに変換して、内部の１２８ビットラウンドキーレジスタに保存するステップと、
前記ラウンド演算制御部から４クロックラウンド演算開始信号とビット選択信号が入ると、１番目のクロックが１となるとき、Shift／Inverse Shift_Row変換部が、バスを介して入った１２８ビット入力データのうち、上位６４ビットデータをbyte-inverse-shift変換して、第１多重化器に出力し、続けて、Substitution／Inverse Substitution変換部が、この上位６４ビットデータをInverse Substitution演算して、第１逆多重化器に出力しながら、６４ビットデータレジスタに保存するステップと、
前記ラウンド演算開始信号の２番目のクロックが１となるとき、Add Round Key変換部が、前記第１逆多重化器の復号出力端から出力される６４ビットデータレジスタに保存された上位６４ビットデータを、前記ラウンドキー生成部により生成された上位６４ビットラウンドキーとAdd 変換を行って、第３逆多重化器に出力しながら、６４ビットデータレジスタに保存すると同時に、前記Shift／Inverse Shift_Row変換部が、バスを介して入った１２８ビット入力データのうち、下位６４ビットデータをbyte-inverse-shift変換して、第１多重化器に出力し、続けて、Substitution／Inverse Substitution変換部が、この下位６４ビットデータをInverse Substitution演算して、第１逆多重化器に出力しながら、１２８ビットデータレジスタの下位６４ビットに保存するステップと、
前記ラウンド演算開始信号の３番目のクロックが１となるとき、Mix／Inverse MixColumn変換部が、前記第３逆多重化器の復号出力端から出力される６４ビットデータレジスタに保存された上位６４ビットデータをInverse MixColumn変換して、第２逆多重化器に出力しながら、１２８ビットデータレジスタの上位６４ビットに保存すると同時に、Add Round Key変換部が、前記第１逆多重化器の復号出力端から出力される１２８ビットデータレジスタに保存された下位６４ビットデータを、前記ラウンドキー生成部により生成された下位６４ビットラウンドキーとAdd 変換を行って、第３逆多重化器に出力しながら、１２８ビットデータレジスタの下位６４ビットに保存するステップと、
前記ラウンド演算開始信号の４番目のクロックが１となるとき、Mix／Inverse MixColumn変換部が、前記第３逆多重化器の復号出力端から出力される１２８ビットデータレジスタに保存された下位６４ビットデータをInverse MixColumn変換して、第２逆多重化器に出力しながら、１２８ビットデータレジスタの下位６４ビットに保存するステップと、からなることを特徴とするラインドールブロック復号化方法。
【請求項１９】
前記ラウンドキー生成部が、バスを介して入ったモード信号の値に基づいて、１２８ビット入力キーＫｅｙを復号化用１２８ビットラウンドキーＲＫに変換して、内部の１２８ビットラウンドキーレジスタに保存するステップにおいては、前記ラウンド演算開始信号の２クロック期間に復号化用１２８ビットラウンドキーＲＫを生成することを特徴とする請求項１８に記載のラインドールブロック復号化方法。
【請求項２０】
バスを介して暗号または復号演算開始信号とモード信号が入った後、ラウンド演算制御部から３クロックラウンド演算開始信号とラウンド番号信号が入ると、１番目のクロックが１となるときから、ラウンド演算部のラウンドキー生成部が、バスを介して入ったモード信号の値に基づいて、１２８ビット入力キーＫｅｙを暗号化用１２８ビットラウンドキーＲＫに変換して、内部の１２８ビットラウンドキーレジスタに保存するステップと、
前記ラウンド演算制御部から３クロックラウンド演算開始信号とビット選択信号が入ると、１番目のクロックが１となるとき、Shift／Inverse Shift_Row変換部が、バスを介して入った１２８ビット入力データのうち、上位６４ビットデータをbyte-shift変換して、第１多重化器に出力し、続けて、Substitution／Inverse Substitution変換部が、この上位６４ビットデータをSubstitution演算して、第１逆多重化器に出力しながら、６４ビットデータレジスタに保存するステップと、
前記ラウンド演算開始信号の２番目のクロックが１となるとき、Mix／Inverse MixColumn変換部が、前記第１逆多重化器の暗号出力端から出力される６４ビットデータレジスタに保存された上位６４ビットデータをMixColumn変換して、第２逆多重化器に出力し、続けて、Add Round Key変換部が、この上位６４ビットデータを、前記ラウンドキー生成部により生成された上位６４ビットラウンドキーとAdd 変換を行って、６４ビットデータレジスタに保存すると同時に、前記Shift／Inverse Shift_Row変換部が、バスを介して入った１２８ビット入力データのうち、下位６４ビットデータをbyte-shift変換して、第１多重化器に出力し、続けて、Substitution／Inverse Substitution変換部が、この下位６４ビットデータをSubstitution演算して、第１逆多重化器に出力しながら、１２８ビットデータレジスタの下位６４ビットに保存するステップと、
前記ラウンド演算開始信号の３番目のクロックが１となるとき、Add Round Key変換後、６４ビットデータレジスタに保存された６４ビットデータが、１２８ビットデータレジスタの上位６４ビットに保存されると同時に、Mix／Inverse MixColumn変換部が、前記第１逆多重化器の暗号出力端から出力される１２８ビットデータレジスタに保存された下位６４ビットデータをMixColumn変換して、第２逆多重化器に出力し、続けて、Add Round Key変換部が、この下位６４ビットデータを、前記ラウンドキー生成部により生成された下位６４ビットラウンドキーとAdd 変換を行って、１２８ビットデータレジスタの下位６４ビットに保存するステップと、からなることを特徴とするラインドールブロック暗号化方法。
【請求項２１】
前記ラウンドキー生成部が、バスを介して入ったモード信号の値に基づいて、１２８ビット入力キーＫｅｙを暗号化用１２８ビットラウンドキーＲＫに変換して、内部の１２８ビットラウンドキーレジスタに保存するステップにおいては、前記ラウンド演算開始信号の２クロック期間に暗号化用１２８ビットラウンドキーＲＫを生成することを特徴とする請求項２０に記載のラインドールブロック暗号化方法。
【請求項２２】
バスを介して暗号または復号演算開始信号とモード信号が入った後、ラウンド演算制御部から３クロックラウンド演算開始信号とラウンド番号信号が入ると、１番目のクロックが１となるときから、ラウンド演算部のラウンドキー生成部が、バスを介して入ったモード信号の値に基づいて、１２８ビット入力キーＫｅｙを復号化用１２８ビットラウンドキーＲＫに変換して、内部の１２８ビットラウンドキーレジスタに保存するステップと、
前記ラウンド演算制御部から３クロックラウンド演算開始信号とビット選択信号が入ると、１番目のクロックが１となるとき、Shift／Inverse Shift_Row変換部が、バスを介して入った１２８ビット入力データのうち、上位６４ビットデータをbyte-shift変換して、第１多重化器に出力し、続けて、Substitution／Inverse Substitution変換部が、この上位６４ビットデータをInverse Substitution演算して、第１逆多重化器に出力しながら、６４ビットデータレジスタに保存するステップと、
前記ラウンド演算開始信号の２番目のクロックが１となるとき、Add Round Key変換部が、前記第１逆多重化器の復号出力端から出力される６４ビットデータレジスタに保存された上位６４ビットデータを、前記ラウンドキー生成部により生成された上位６４ビットラウンドキーとAdd 変換を行って、第３逆多重化器の復号出力端から出力し、続けて、Mix／Inverse MixColumn変換部が、Add Round Key変換された上位６４ビットデータをInverse MixColumn変換して、第２逆多重化器に出力しながら、６４ビットデータレジスタに保存すると同時に、Shift／Inverse Shift_Row変換部が、バスを介して入った１２８ビット入力データのうち、下位６４ビットデータをbyte-inverse-shift変換して、第１多重化器に出力し、続けて、Substitution／Inverse Substitution変換部が、この下位６４ビットデータをInverse Substitution演算して、第１逆多重化器に出力しながら、１２８ビットデータレジスタの下位６４ビットに保存するステップと、
前記ラウンド演算開始信号の３番目のクロックが１となるとき、Add Round Key変換部が、前記第１逆多重化器の復号出力端から出力される１２８ビットデータレジスタに保存された下位６４ビットデータを、前記ラウンドキー生成部により生成された下位６４ビットラウンドキーとAdd 変換を行って、第３逆多重化器の復号出力端から出力し、続けて、Mix／Inverse MixColumn変換部が、Add Round Key変換された下位６４ビットデータをInverse MixColumn変換して、第２逆多重化器に出力しながら、１２８ビットデータレジスタの下位６４ビットに保存すると同時に、６４ビットデータレジスタに保存された上位６４ビットデータを、１２８ビットデータレジスタの上位６４ビットに保存するステップと、からなることを特徴とするラインドールブロック復号化方法。
【請求項２３】
前記ラウンドキー生成部が、バスを介して入ったモード信号の値に基づいて、１２８ビット入力キーＫｅｙを復号化用１２８ビットラウンドキーＲＫに変換して、内部の１２８ビットラウンドキーレジスタに保存するステップにおいては、前記ラウンド演算開始信号の２クロック期間に復号化用１２８ビットラウンドキーＲＫを生成することを特徴とする請求項２２に記載のラインドールブロック復号化方法。
【請求項２４】
バスを介して暗号または復号演算開始信号とモード信号が入った後、ラウンド演算制御部から２クロックラウンド演算開始信号とラウンド番号信号が入ると、１番目のクロックが１となるときから、ラウンド演算部のラウンドキー生成部が、バスを介して入ったモード信号の値に基づいて、１２８ビット入力キーＫｅｙを暗号化用１２８ビットラウンドキーＲＫに変換して、内部の１２８ビットラウンドキーレジスタに保存するステップと、
前記ラウンド演算制御部から２クロックラウンド演算開始信号とビット選択信号が入ると、１番目のクロックが１となるとき、Shift／Inverse Shift_Row変換部が、バスを介して入った１２８ビット入力データのうち、上位６４ビットデータをbyte-shift変換して、第１多重化器に出力し、続けて、Substitution／Inverse Substitution変換部が、この上位６４ビットデータをSubstitution演算して、第１逆多重化器に出力すると、Mix／Inverse MixColumn変換部が、前記第１逆多重化器の復号出力端から出力される上位６４ビットデータをMixColumn変換して、第２逆多重化器に出力し、続けて、Add Round Key変換部が、この上位６４ビットデータを、前記ラウンドキー生成部により生成された上位６４ビットラウンドキーとAdd 変換を行って、６４ビットデータレジスタに保存するステップと、
前記ラウンド演算開始信号の２番目のクロックが１となるとき、Shift／Inverse Shift_Row変換部が、バスを介して入った１２８ビット入力データのうち、下位６４ビットデータをbyte-shift変換して、第１多重化器に出力し、続けて、Substitution／Inverse Substitution変換部が、この下位６４ビットデータをSubstitution演算して、第１逆多重化器に出力すると、Mix／Inverse MixColumn変換部が、前記第１逆多重化器の暗号出力端から出力される下位６４ビットデータをMixColumn変換して、第２逆多重化器に出力し、続けて、Add Round Key変換部が、この上位６４ビットデータを、前記ラウンドキー生成部により生成された下位６４ビットラウンドキーとAdd 変換を行って、１２８ビットデータレジスタの下位６４ビットに保存すると同時に、６４ビットデータレジスタに保存された上位６４ビットデータを、１２８ビットデータレジスタの上位６４ビットに保存するステップと、からなることを特徴とするラインドールブロック暗号化方法。
【請求項２５】
前記ラウンドキー生成部が、バスを介して入ったモード信号の値に基づいて、１２８ビット入力キーＫｅｙを暗号化用１２８ビットラウンドキーＲＫに変換して、内部の１２８ビットラウンドキーレジスタに保存するステップにおいては、前記ラウンド演算開始信号の１クロック期間に暗号化用１２８ビットラウンドキーＲＫを生成することを特徴とする請求項２４に記載のラインドールブロック暗号化方法。
【請求項２６】
バスを介して暗号または復号演算開始信号とモード信号が入った後、ラウンド演算制御部から２クロックラウンド演算開始信号とラウンド番号信号が入ると、１番目のクロックが１となるときから、ラウンド演算部のラウンドキー生成部が、バスを介して入ったモード信号の値に基づいて、１２８ビット入力キーＫｅｙを復号化用１２８ビットラウンドキーＲＫに変換して、内部の１２８ビットラウンドキーレジスタに保存するステップと、
前記ラウンド演算制御部から２クロックラウンド演算開始信号とビット選択信号が入ると、１番目のクロックが１となるとき、Shift／Inverse Shift_Row変換部が、バスを介して入った１２８ビット入力データのうち、上位６４ビットデータをbyte-inverse-shift変換して、第１多重化器に出力し、続けて、Substitution／Inverse Substitution変換部が、この上位６４ビットデータをInverse Substitution演算して、第１逆多重化器に出力すると、Add Round Key変換部が、前記第１逆多重化器の復号出力端から出力される上位６４ビットデータを、前記ラウンドキー生成部により生成された上位６４ビットラウンドキーとAdd 変換を行って、第３逆多重化器の復号出力端から出力し、続けて、Mix／Inverse MixColumn変換部が、Add Round Key変換された上位６４ビットデータをInverse MixColumn変換して、第２逆多重化器に出力しながら、６４ビットデータレジスタに保存するステップと、
前記ラウンド演算開始信号の２番目のクロックが１となるとき、Shift／Inverse Shift_Row変換部が、バスを介して入った１２８ビット入力データのうち、下位６４ビットデータをbyte-inverse-shift変換して、第１多重化器に出力し、続けて、Substitution／Inverse Substitution変換部が、この上位６４ビットデータをInverse Substitution演算して、第１逆多重化器に出力すると、Add Round Key変換部が、前記第１逆多重化器の復号出力端から出力される下位６４ビットデータを、前記ラウンドキー生成部により生成された下位６４ビットラウンドキーとAdd 変換を行って、第３逆多重化器の復号出力端から出力し、続けて、Mix／Inverse MixColumn変換部が、Add Round Key変換された下位６４ビットデータをInverse MixColumn変換して、第２逆多重化器に出力しながら、１２８ビットデータレジスタの下位６４ビットデータレジスタに保存すると同時に、６４ビットデータレジスタに保存された上位６４ビットデータを、１２８ビットデータレジスタの上位６４ビットレジスタに保存するステップと、からなることを特徴とするラインドールブロック復号化方法。
【請求項２７】
前記ラウンドキー生成部が、バスを介して入ったモード信号の値に基づいて、１２８ビット入力キーＫｅｙを、復号化用１２８ビットラウンドキーＲＫに変換して、内部の１２８ビットラウンドキーレジスタに保存するステップにおいては、前記ラウンド演算開始信号の１クロック期間に復号化用１２８ビットラウンドキーＲＫを生成することを特徴とする請求項２６に記載のラインドールブロック復号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ラインドールブロック暗号化装置、及びその暗号化並びに復号化方法に関し、より詳しくは、携帯電話やＰＤＡ、スマートカードなどに搭載することにより、保安を要する重要なデータを高速で暗号化及び復号化することができる、ラインドールブロック暗号化装置、及びその暗号化並びに復号化方法に関する。
【背景技術】
【０００２】
ラインドールアルゴリズムは、ベルギーの暗号開発者であるＪｏａｎ ＤａｅｍｅｎとＶｉｎｃｅｎｔ Ｒｉｊｍｅｎにより開発された以降、２０００年１０月頃、米国標準技術局（ＮＩＳＴ；National Institute of Standards and Technology）において、新たな先端暗号標準（ＡＥＳ；Advanced Encryption Standard）として選定した対称秘密キー暗号化アルゴリズムである。
【０００３】
ラインドールアルゴリズムは、ＳＰＮ（Substitution-Permutation Network ）構造の可変ブロック長を支援し、各ブロック長に対して、１２８ビット、１９２ビット、２５６ビットキーを用いることができる。
【０００４】
ラインドールアルゴリズムのラウンド数は、キー長によって決められ、１２８ビットブロックを用いる場合、１２８、１９２、２５６ビットキーに対して、それぞれ１０、１２、１４ラウンドを使用するように推奨されている。
【０００５】
現在、ラインドールアルゴリズムは、１２８ビットキーを用いても、安全性には問題がないものと知られており、これによって、１２８ビット長のキーを用いたラインドールアルゴリズムのハードウェア具現に関して研究が進行されている実情である。
【０００６】
ラインドールアルゴリズムは、ラウンド演算の繰返しにより、ラインドールブロック暗号化／復号化用データを暗号化または復号化し、特に、ＳＰＮ構造の可変ブロック長を支援するようになっているので、ブロック暗号の暗号化過程と復号化過程が異なる。通常、ラインドールブロック暗号の暗号化過程のためのラウンド演算は、Substitution、Shift_Row、MixColumn、Add Round Key の４つの変換からなり、復号化過程のためのラウンド演算もまた、Inverse Shift_Row、Inverse Substitution、Add Round Key、Inverse MixColumnの４つの変換からなる。これらの変換を行う方法によって、ラインドールブロック暗号に対するラウンド演算に要する時間と、使用するハードウェアリソースに差があり、これは、さらには、ラインドール暗号プロセッサーの性能と直結する問題となる。したがって、ラウンド演算の具現に要するハードウェアリソースの量とラウンド演算の実行に要する時間を減らすことが重要である。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
したがって、本出願人は、前記のような観点でラインドールブロック暗号を暗号化及び復号化するためのラウンド演算を効率よく行う演算装置を含んだラインドールブロック暗号化装置と、その暗号化及び復号化方法を開発するに至った。
【課題を解決するための手段】
【０００８】
本発明の目的は、高速、小面積の暗号プロセッサーを要求する携帯電話やＰＤＡのような携帯電話端末またはスマートカードに搭載することにより、保安を要する重要なデータを高速で暗号化及び復号化できるようになったラインドールブロック暗号化装置と、その暗号化及び復号化方法を提供することにある。
【０００９】
前記本発明の目的を達成するためのラインドールブロック暗号化装置の実施例は、
暗号または復号演算開始信号Ｓｔａｒｔとモード信号ｍｏｄｅが入った後、ラウンド演算開始信号Ｒｏｕｎｄ＿ｓｔａｒｔ、ラウンド番号信号Ｒｏｕｎｄ＿ｎｕｍｂｅｒ、及びラウンド演算毎に、前記１２８ビット入力データを、上位６４ビットと下位６４ビットに分けて選択するためのビット選択信号Ｓｅｌが入ると、この時からモード信号の値に基づいて、１２８ビット入力キーを暗号化用または復号化用の１２８ビットラウンドキーに変換して保存し、１２８ビット入力データを、上位６４ビットと下位６４ビットに分けて、それぞれShift_Row、Substitution、MixColumn、Add Round Keyの変換過程からなるラウンド演算を行って、前記１２８ビット入力データを暗号化し、１２８ビット入力データを上位６４ビットと下位６４ビットに分けて、それぞれInverse Shift_Row、Inverse Substitution、Add Round Key、Inverse MixColumnの変換過程からなるラウンド演算を行って、前記１２８ビット入力データを復号化するラウンド演算部と、
前記暗号または復号演算開始信号とモード信号が入ると、この時からラウンド演算開始信号Ｒｏｕｎｄ＿ｓｔａｒｔ、ラウンド番号信号Ｒｏｕｎｄ＿ｎｕｍｂｅｒ、及びラウンド演算毎に、前記１２８ビット入力データを、上位６４ビットと下位６４ビットに分けて選択するためのビット選択信号Ｓｅｌを前記ラウンド演算部に伝達して、前記ラウンド演算部のラウンド演算動作を制御するラウンド演算制御部と、
前記ラウンド演算部により行われる毎度のラウンド演算中に生成される上位６４ビット入力データの中間暗号または復号データを保存する６４ビットデータレジスタと、
前記ラウンド演算部により行われる毎度のラウンド演算中に生成される下位６４ビット入力データの中間暗号または復号データを、下位６４ビットとして保存し、最後のラウンド演算結果として生成され、前記６４ビットデータレジスタに保存された暗号または復号データを、上位６４ビットとして保存する１２８ビットデータレジスタと、で構成される。
【００１０】
前記本発明の目的を達成するためのラインドールブロック暗号の暗号化方法の実施例１は、
バスを介して暗号または復号演算開始信号とモード信号が入った後、ラウンド演算制御部から４クロックラウンド演算開始信号とラウンド番号信号が入ると、１番目のクロックが１となるときから、ラウンド演算部のラウンドキー生成部が、バスを介して入ったモード信号の値に基づいて、１２８ビット入力キーＫｅｙを暗号化用１２８ビットラウンドキーＲＫに変換して、内部の１２８ビットラウンドキーレジスタに保存するステップと、
前記ラウンド演算制御部から４クロックラウンド演算開始信号とビット選択信号が入ると、１番目のクロックが１となるとき、Shift／Inverse Shift_Row変換部が、バスを介して入った１２８ビット入力データのうち、上位６４ビットデータをbyte-shift変換して、第１多重化器に出力し、続けて、Substitution／Inverse Substitution変換部が、この上位６４ビットデータをSubstitution演算して、第１逆多重化器に出力しながら、６４ビットデータレジスタに保存するステップと、
前記ラウンド演算開始信号の２番目のクロックが１となるとき、Mix／Inverse MixColumn変換部が、前記第１逆多重化器の暗号出力端から出力される６４ビットデータレジスタに保存された上位６４ビットデータをMixColumn変換して、第２逆多重化器に出力しながら、前記６４ビットデータレジスタに保存すると同時に、Shift／Inverse Shift_Row変換部が、バスを介して入った１２８ビット入力データのうち、下位６４ビットデータをbyte-shift変換して、第１多重化器に出力し、続けて、Substitution／Inverse Substitution変換部が、この上位６４ビットデータをSubstitution演算して、第１逆多重化器に出力しながら、１２８ビットデータレジスタの下位６４ビットに保存するステップと、
前記ラウンド演算開始信号の３番目のクロックが１となるとき、Add Round Key変換部が、前記第２逆多重化器の暗号出力端から出力される６４ビットデータレジスタに保存された上位６４ビットデータを、前記ラウンドキー生成部により生成された上位６４ビットラウンドキーとAdd 変換を行って、前記１２８ビットデータレジスタの上位６４ビットに保存すると同時に、Mix／Inverse MixColumn変換部が、前記第１逆多重化器の暗号出力端から出力される１２８ビットデータレジスタに保存された下位６４ビットデータをMixColumn変換して、第２逆多重化器に出力しながら、前記１２８ビットデータレジスタの下位６４ビットに保存するステップと、
前記ラウンド演算開始信号の４番目のクロックが１となるとき、Add Round Key変換部が、前記第２逆多重化器の暗号出力端から出力される１２８ビットデータレジスタに保存された下位６４ビットデータを、前記ラウンドキー生成部により生成された下位６４ビットラウンドキーとAdd 変換を行って、１２８ビットデータレジスタの下位６４ビットに保存するステップと、からなることを特徴とする。
【００１１】
前記本発明の目的を達成するためのラインドールブロック暗号の復号化方法の実施例１は、
バスを介して暗号または復号演算開始信号とモード信号が入った後、ラウンド演算制御部から４クロックラウンド演算開始信号とラウンド番号信号が入ると、１番目のクロックが１となるときから、ラウンド演算部のラウンドキー生成部が、バスを介して入ったモード信号の値に基づいて、１２８ビット入力キーＫｅｙを復号化用１２８ビットラウンドキーＲＫに変換して、内部の１２８ビットラウンドキーレジスタに保存するステップと、
前記ラウンド演算制御部から４クロックラウンド演算開始信号とビット選択信号が入ると、１番目のクロックが１となるとき、Shift／Inverse Shift_Row変換部が、バスを介して入った１２８ビット入力データのうち、上位６４ビットデータをbyte-inverse-shift変換して、第１多重化器に出力し、続けて、Substitution／Inverse Substitution変換部が、この上位６４ビットデータをInverse Substitution演算して、第１逆多重化器に出力しながら、６４ビットデータレジスタに保存するステップと、
前記ラウンド演算開始信号の２番目のクロックが１となるとき、Add Round Key変換部が、前記第１逆多重化器の復号出力端から出力される６４ビットデータレジスタに保存された上位６４ビットデータを、前記ラウンドキー生成部により生成された上位６４ビットラウンドキーとAdd 変換を行って、第３逆多重化器に出力しながら、６４ビットデータレジスタに保存すると同時に、前記Shift／Inverse Shift_Row変換部が、バスを介して入った１２８ビット入力データのうち、下位６４ビットデータをbyte-inverse-shift変換して、第１多重化器に出力し、続けて、Substitution／Inverse Substitution変換部が、この下位６４ビットデータをInverse Substitution演算して、第１逆多重化器に出力しながら、１２８ビットデータレジスタの下位６４ビットに保存するステップと、
前記ラウンド演算開始信号の３番目のクロックが１となるとき、Mix／Inverse MixColumn変換部が、前記第３逆多重化器の復号出力端から出力される６４ビットデータレジスタに保存された上位６４ビットデータをInverse MixColumn変換して、第２逆多重化器に出力しながら、１２８ビットデータレジスタの上位６４ビットに保存すると同時に、Add Round Key変換部が、前記第１逆多重化器の復号出力端から出力される１２８ビットデータレジスタに保存された下位６４ビットデータを、前記ラウンドキー生成部により生成された下位６４ビットラウンドキーとAdd 変換を行って、第３逆多重化器に出力しながら、１２８ビットデータレジスタの下位６４ビットに保存するステップと、
前記ラウンド演算開始信号の４番目のクロックが１となるとき、Mix／Inverse MixColumn変換部が、前記第３逆多重化器の復号出力端から出力される１２８ビットデータレジスタに保存された下位６４ビットデータをInverse MixColumn変換して、第２逆多重化器に出力しながら、１２８ビットデータレジスタの下位６４ビットに保存するステップと、からなることを特徴とする。
【００１２】
前記本発明の目的を達成するためのラインドールブロック暗号の暗号化方法の実施例２は、
バスを介して暗号または復号演算開始信号とモード信号が入った後、ラウンド演算制御部から３クロックラウンド演算開始信号とラウンド番号信号が入ると、１番目のクロックが１となるときから、ラウンド演算部のラウンドキー生成部が、バスを介して入ったモード信号の値に基づいて、１２８ビット入力キーＫｅｙを暗号化用１２８ビットラウンドキーＲＫに変換して、内部の１２８ビットラウンドキーレジスタに保存するステップと、
前記ラウンド演算制御部から３クロックラウンド演算開始信号とビット選択信号が入ると、１番目のクロックが１となるとき、Shift／Inverse Shift_Row変換部が、バスを介して入った１２８ビット入力データのうち、上位６４ビットデータをbyte-shift変換して、第１多重化器に出力し、続けて、Substitution／Inverse Substitution変換部が、この上位６４ビットデータをSubstitution演算して、第１逆多重化器に出力しながら、６４ビットデータレジスタに保存するステップと、
前記ラウンド演算開始信号の２番目のクロックが１となるとき、Mix／Inverse MixColumn変換部が、前記第１逆多重化器の暗号出力端から出力される６４ビットデータレジスタに保存された上位６４ビットデータをMixColumn変換して、第２逆多重化器に出力し、続けて、Add Round Key変換部が、この上位６４ビットデータを、前記ラウンドキー生成部により生成された上位６４ビットラウンドキーとAdd 変換を行って、６４ビットデータレジスタに保存すると同時に、前記Shift／Inverse Shift_Row変換部が、バスを介して入った１２８ビット入力データのうち、下位６４ビットデータをbyte-shift変換して、第１多重化器に出力し、続けて、Substitution／Inverse Substitution変換部が、この下位６４ビットデータをSubstitution演算して、第１逆多重化器に出力しながら、１２８ビットデータレジスタの下位６４ビットに保存するステップと、
前記ラウンド演算開始信号の３番目のクロックが１となるとき、Add Round Key変換後、６４ビットデータレジスタに保存された６４ビットデータが、１２８ビットデータレジスタの上位６４ビットに保存されると同時に、Mix／Inverse MixColumn変換部が、前記第１逆多重化器の暗号出力端から出力される１２８ビットデータレジスタに保存された下位６４ビットデータをMixColumn変換して、第２逆多重化器に出力し、続けて、Add Round Key変換部が、この下位６４ビットデータを、前記ラウンドキー生成部により生成された下位６４ビットラウンドキーとAdd 変換を行って、１２８ビットデータレジスタの下位６４ビットに保存するステップと、からなることを特徴とする。
【００１３】
前記本発明の目的を達成するためのラインドールブロック暗号の復号化方法の実施例２は、
バスを介して暗号または復号演算開始信号とモード信号が入った後、ラウンド演算制御部から３クロックラウンド演算開始信号とラウンド番号信号が入ると、１番目のクロックが１となるときから、ラウンド演算部のラウンドキー生成部が、バスを介して入ったモード信号の値に基づいて、１２８ビット入力キーＫｅｙを復号化用１２８ビットラウンドキーＲＫに変換して、内部の１２８ビットラウンドキーレジスタに保存するステップと、
前記ラウンド演算制御部から３クロックラウンド演算開始信号とビット選択信号が入ると、１番目のクロックが１となるとき、Shift／Inverse Shift_Row変換部が、バスを介して入った１２８ビット入力データのうち、上位６４ビットデータをbyte-inverse-shift変換して、第１多重化器に出力し、続けて、Substitution／Inverse Substitution変換部が、この上位６４ビットデータをInverse Substitution演算して、第１逆多重化器に出力しながら、６４ビットデータレジスタに保存するステップと、
前記ラウンド演算開始信号の２番目のクロックが１となるとき、Add Round Key変換部が、前記第１逆多重化器の復号出力端から出力される６４ビットデータレジスタに保存された上位６４ビットデータを、前記ラウンドキー生成部により生成された上位６４ビットラウンドキーとAdd 変換を行って、第３逆多重化器の復号出力端から出力し、続けて、Mix／Inverse MixColumn変換部が、Add Round Key変換された上位６４ビットデータをInverse MixColumn変換して、第２逆多重化器に出力しながら、６４ビットデータレジスタに保存すると同時に、Shift／Inverse Shift_Row変換部が、バスを介して入った１２８ビット入力データのうち、下位６４ビットデータをbyte-inverse-shift変換して、第１多重化器に出力し、続けて、Substitution／Inverse Substitution変換部が、この下位６４ビットデータをInverse Substitution演算して、第１逆多重化器に出力しながら、１２８ビットデータレジスタの下位６４ビットに保存するステップと、
前記ラウンド演算開始信号の３番目のクロックが１となるとき、Add Round Key変換部が、前記第１逆多重化器の復号出力端から出力される１２８ビットデータレジスタに保存された下位６４ビットデータを、前記ラウンドキー生成部により生成された下位６４ビットラウンドキーとAdd 変換を行って、第３逆多重化器の復号出力端から出力し、続けて、Mix／Inverse MixColumn変換部が、Add Round Key変換された下位６４ビットデータをInverse MixColumn変換して、第２逆多重化器に出力しながら、１２８ビットデータレジスタの下位６４ビットに保存すると同時に、６４ビットデータレジスタに保存された上位６４ビットデータを、１２８ビットデータレジスタの上位６４ビットに保存するステップと、からなることを特徴とする。
【００１４】
前記本発明の目的を達成するためのラインドールブロック暗号の暗号化方法の実施例３は、
バスを介して暗号または復号演算開始信号とモード信号が入った後、ラウンド演算制御部から２クロックラウンド演算開始信号とラウンド番号信号が入ると、１番目のクロックが１となるときから、ラウンド演算部のラウンドキー生成部が、バスを介して入ったモード信号の値に基づいて、１２８ビット入力キーＫｅｙを暗号化用１２８ビットラウンドキーＲＫに変換して、内部の１２８ビットラウンドキーレジスタに保存するステップと、
前記ラウンド演算制御部から２クロックラウンド演算開始信号とビット選択信号が入ると、１番目のクロックが１となるとき、Shift／Inverse Shift_Row変換部が、バスを介して入った１２８ビット入力データのうち、上位６４ビットデータをbyte-shift変換して、第１多重化器に出力し、続けて、Substitution／Inverse Substitution変換部が、この上位６４ビットデータをSubstitution演算して、第１逆多重化器に出力すると、Mix／Inverse MixColumn変換部が、前記第１逆多重化器の復号出力端から出力される上位６４ビットデータをMixColumn変換して、第２逆多重化器に出力し、続けて、Add Round Key変換部が、この上位６４ビットデータを、前記ラウンドキー生成部により生成された上位６４ビットラウンドキーとAdd 変換を行って、６４ビットデータレジスタに保存するステップと、
前記ラウンド演算開始信号の２番目のクロックが１となるとき、Shift／Inverse Shift_Row変換部が、バスを介して入った１２８ビット入力データのうち、下位６４ビットデータをbyte-shift変換して、第１多重化器に出力し、続けて、Substitution／Inverse Substitution変換部が、この下位６４ビットデータをSubstitution演算して、第１逆多重化器に出力すると、Mix／Inverse MixColumn変換部が、前記第１逆多重化器の暗号出力端から出力される下位６４ビットデータをMixColumn変換して、第２逆多重化器に出力し、続けて、Add Round Key変換部が、この上位６４ビットデータを、前記ラウンドキー生成部により生成された下位６４ビットラウンドキーとAdd 変換を行って、１２８ビットデータレジスタの下位６４ビットに保存すると同時に、６４ビットデータレジスタに保存された上位６４ビットデータを、１２８ビットデータレジスタの上位６４ビットに保存するステップと、からなることを特徴とする。
【００１５】
前記本発明の目的を達成するためのラインドールブロック暗号の復号化方法の実施例３は、
バスを介して暗号または復号演算開始信号とモード信号が入った後、ラウンド演算制御部から２クロックラウンド演算開始信号とラウンド番号信号が入ると、１番目のクロックが１となるときから、ラウンド演算部のラウンドキー生成部が、バスを介して入ったモード信号の値に基づいて、１２８ビット入力キーＫｅｙを復号化用１２８ビットラウンドキーＲＫに変換して、内部の１２８ビットラウンドキーレジスタに保存するステップと、
前記ラウンド演算制御部から２クロックラウンド演算開始信号とビット選択信号が入ると、１番目のクロックが１となるとき、Shift／Inverse Shift_Row変換部が、バスを介して入った１２８ビット入力データのうち、上位６４ビットデータをbyte-inverse-shift変換して、第１多重化器に出力し、続けて、Substitution／Inverse Substitution変換部が、この上位６４ビットデータをInverse Substitution演算して、第１逆多重化器に出力すると、Add Round Key変換部が、前記第１逆多重化器の復号出力端から出力される上位６４ビットデータを、前記ラウンドキー生成部により生成された上位６４ビットラウンドキーとAdd 変換を行って、第３逆多重化器の復号出力端から出力し、続けて、Mix／Inverse MixColumn変換部が、Add Round Key変換された上位６４ビットデータをInverse MixColumn変換して、第２逆多重化器に出力しながら、６４ビットデータレジスタに保存するステップと、
前記ラウンド演算開始信号の２番目のクロックが１となるとき、Shift／Inverse Shift_Row変換部が、バスを介して入った１２８ビット入力データのうち、下位６４ビットデータをbyte-inverse-shift変換して、第１多重化器に出力し、続けて、Substitution／Inverse Substitution変換部が、この上位６４ビットデータをInverse Substitution演算して、第１逆多重化器に出力すると、Add Round Key変換部が、前記第１逆多重化器の復号出力端から出力される下位６４ビットデータを、前記ラウンドキー生成部により生成された下位６４ビットラウンドキーとAdd 変換を行って、第３逆多重化器の復号出力端から出力し、続けて、Mix／Inverse MixColumn変換部が、Add Round Key変換された下位６４ビットデータをInverse MixColumn変換して、第２逆多重化器に出力しながら、１２８ビットデータレジスタの下位６４ビットデータレジスタに保存すると同時に、６４ビットデータレジスタに保存された上位６４ビットデータを、１２８ビットデータレジスタの上位６４ビットレジスタに保存するステップと、からなることを特徴とする。
【発明を実施するための最良の形態】
【００１６】
以下、本発明に係る実施例について添付図面を参照して詳細に説明する。
【００１７】
図１に示すように、本発明に係るラインドールブロック暗号化装置は、６４ビット単位で、ラインドールブロック暗号化／復号化用の入力データの暗号化及び復号化のための全てのラウンド演算を行い、このラウンド演算を行うと同時に、ラウンド演算に必要なラウンドキーを生成するようになっている。
【００１８】
ラウンド演算部１００は、ラインドールブロック暗号化／復号化用のバス２００を介して、暗号または復号演算開始信号Ｓｔａｒｔとモード信号ｍｏｄｅが入った後、ラウンド演算制御部３００からラウンド演算開始信号Ｒｏｕｎｄ＿ｓｔａｒｔ、ラウンド番号信号Ｒｏｕｎｄ＿ｎｕｍｂｅｒ、及びラウンド演算毎に、前記１２８ビット入力データを、上位６４ビットと下位６４ビットに分けて選択するためのビット選択信号Ｓｅｌが入ると、この時からモード信号の値に基づいて、１２８ビット入力キーＫｅｙを暗号化用または復号化用の１２８ビットラウンドキーＲＫに変換して保存する。
【００１９】
前記ラウンド演算部１００は、前記モード信号の値が「０」となると、１２８ビット入力データを、上位６４ビットと下位６４ビットに分けて、それぞれShift_Row、Substitution、MixColumn、Add Round Keyの変換過程からなるラウンド演算を行って、前記１２８ビット入力データを暗号化する。
【００２０】
前記ラウンド演算部１００は、前記モード信号の値が「１」となると、１２８ビット入力データを、上位６４ビットと下位６４ビットに分けて、それぞれInverse Shift_Row、Inverse Substitution、Add Round Key、Inverse MixColumnの変換過程からなるラウンド演算を行って、前記１２８ビット入力データを復号化する。
【００２１】
ラウンド演算制御部３００は、前記バス２００を介して、暗号または復号演算開始信号とモード信号が入ると、この時からラウンド演算開始信号Ｒｏｕｎｄ＿ｓｔａｒｔ、ラウンド番号信号Ｒｏｕｎｄ＿ｎｕｍｂｅｒ、及びラウンド演算毎に、前記１２８ビット入力データを、上位６４ビットと下位６４ビットに分けて選択するためのビット選択信号Ｓｅｌを前記ラウンド演算部１００に伝達して、前記ラウンド演算部１００のラウンド演算動作を制御する。
【００２２】
６４ビットデータレジスタ４００は、前記ラウンド演算部１００により行われる毎度のラウンド演算中に生成される上位６４ビット入力データの中間暗号または復号データを保存する。
【００２３】
１２８ビットデータレジスタ５００は、前記ラウンド演算部１００により行われる毎度のラウンド演算中に生成される下位６４ビット入力データの中間暗号または復号データを、下位６４ビットとして保存し、最後のラウンド演算結果として生成された前記６４ビットデータレジスタ４００に保存された暗号または復号データを、上位６４ビットとして保存する。
【００２４】
図２に示すように、前記ラウンド演算部１００のラウンドキー生成部１１０は、前記ラウンド演算制御部３００からラウンド演算開始信号とラウンド番号信号が入ると、前記バス２００を介して入ったモード信号の値に基づいて、１２８ビット入力キーＫｅｙを、暗号化用または復号化用の１２８ビットラウンドキーＲＫに変換して、内部の１２８ビットラウンドキーレジスタに保存する。
【００２５】
前記ラウンド演算部１００のShift／Inverse Shift_Row変換部１２０は、前記ラウンド演算制御部３００からラウンド演算開始信号とビット選択信号が入ると、前記バス２００を介して入ったモード信号の値に基づいて、バス２００を介して入った１２８ビット入力データを、上位６４ビットと下位６４ビットに分けて、それぞれ異なる数だけbyte-shift変換した後、前記ビット選択信号の値に基づいて出力が制御される内部の第１多重化器１２１に、シフト変換された１２８ビット入力データを、上位６４ビットと下位６４ビットに分けて出力する。
【００２６】
前記ラウンド演算部１００のSubstitution／Inverse Substitution変換部１３０は、前記Shift／Inverse Shift_Row変換部１２０から出力される上位６４ビットデータと下位６４ビットデータを、あるバイトの入力に対してあるバイトの出力を送出するSubstitution box（S-box）またはInverse Substitution box（SI-box)を用いて、Substitution／Inverse Substitution演算を行う。
【００２７】
前記ラウンド演算部１００の第１逆多重化器１４０は、前記Substitution／Inverse Substitution変換部１３０から出力される上位６４ビットデータまたは下位６４ビットデータを、前記モード信号の値に基づいて、暗号出力端０と復号出力端１のうちいずれかに出力する。
【００２８】
前記ラウンド演算部１００のMix／Inverse MixColumn変換部１５０は、前記第１逆多重化器１４０の暗号出力端０から入力される上位６４ビットデータまたは下位６４ビットデータを、MixColumn変換し、または、Add Round Key変換された上位６４ビットデータまたは下位６４ビットデータをInverse MixColumn変換する。
【００２９】
前記ラウンド演算部１００の第２逆多重化器１６０は、前記Mix／Inverse MixColumn変換部１５０から出力される上位６４ビットデータまたは下位６４ビットデータを、前記モード信号の値に基づいて、暗号出力端０と復号出力端１のうちいずれかに出力する。
【００３０】
前記ラウンド演算部１００のAdd Round Key変換部１７０は、前記第１逆多重化器１４０の復号出力端１または前記第２逆多重化器１６０の暗号出力端０から入力される上位６４ビットデータまたは下位６４ビットデータを、前記ラウンドキー生成部１１０から出力される暗号化用または復号化用の１２８ビットラウンドキーＲＫとAdd Round Key変換する。
【００３１】
前記ラウンド演算部１００の第３逆多重化器１８０は、前記Add Round Key変換部１７０から出力される上位６４ビットデータまたは下位６４ビットデータを、前記モード信号の値に基づいて、暗号出力端０と復号出力端１のうちいずれかに出力する。
【００３２】
図３に示すように、前記ラウンドキー生成部１１０の１２８ビットプレキーレジスタ１１１は、バス２００を介して入った１２８ビット入力キーＫｅｙを、暗号化用または復号化用の１２８ビットラウンドキーＲＫに変換するためのプレキー(prekey)として保存し、毎度のラウンド演算後、生成された１２８ビットラウンドキーＲＫを、次のラウンド演算で用いられるラウンドキーＲＫを生成するためのプレキー(prekey)として保存する。
【００３３】
前記ラウンドキー生成部１１０の１２８ビットキーレジスタ１１１aは、毎度のラウンド演算のための暗号化用または復号化用の１２８ビットラウンドキーＲＫを保存する。図３において、前記１２８ビットラウンドキーレジスタ１１１ａに保存される１２８ビットラウンドキーＲＫは、毎度のラウンド演算終了後、前記１２８ビットプレキーレジスタ１１１にバックアップされて、次のラウンド演算において以前ラウンドのラウンドキー(prekey)として用いられる。
【００３４】
前記ラウンドキー生成部１１０の定数保存部１１２は、前記ラウンド演算制御部３００から入るラウンド番号信号が示すラウンドが、何番目のラウンドであるかによって決定される定数値Ｒｃｏｎを保存する。前記定数保存部１１２としては、ＲＯＭを用いることが好ましい。
【００３５】
前記ラウンドキー生成部１１０の第２多重化器１１３は、前記バス２００を介して入ったモード信号の値に基づいて、出力が制御されて、前記１２８ビットプレキーレジスタ１１１と前記１２８ビットラウンドキーレジスタ１１１ａから入力される暗号化用または復号化用の３２ビットキーのいずれか一つを選択して出力する。
【００３６】
前記ラウンドキー生成部１１０のシフト器１１４は、前記第２多重化器１１３から入力される３２ビットキーを１バイトの左側に循環シフトする。
【００３７】
前記ラウンドキー生成部１１０のsubstitution変換器１１５は、substitution演算を行うSubstitution boxからなり、前記シフト器１１４により循環シフトされた３２ビットキーをsubstitution変換する。
【００３８】
前記ラウンドキー生成部１１０の第１ＸＯＲ演算器１１６は、前記substitution変換器１１５から出力される３２ビットキーのうち最上位のあるバイト値と、前記定数保存部１１２に保存された定数値とのＸＯＲ演算を行う。
【００３９】
前記ラウンドキー生成部１１０のラウンドＸＯＲ演算部１１７は、前記第１ＸＯＲ演算器１１６の出力値と、substitution変換器１１５の最上位のあるバイト値を除いた残りの２４ビット値が合わせられた３２ビット値と、前記１２８ビットプレキーレジスタ１１１に保存される以前ラウンドの１２８ビットラウンドキー(prekey)、及び前記１２８ビットラウンドキーレジスタ１１１ａに保存される新たなラウンドの１２８ビットラウンドキーＲＫを用いるＸＯＲ演算を行って、前記１２８ビットラウンドキーレジスタ１１１ａに保存される暗号化用または復号化用の１２８ビットラウンドキーＲＫを、ラウンド演算のラウンド毎に新たに生成する。
【００４０】
前記ラウンドＸＯＲ演算部１１７の第２ＸＯＲ演算器１１８は、前記第１ＸＯＲ演算器１１６の出力値と、substitution変換器１１５の最上位のあるバイト値を除いた残りの２４ビット値が合わせられた３２ビット値と、以前ラウンドの１２８ビットラウンドキーのうち最上位の３２ビットＰＫ０とをＸＯＲ演算して、新たなラウンドの暗号化用または復号化用の１２８ビットラウンドキーのうち最上位の３２ビットラウンドキーＲＫ０を生成する。
【００４１】
前記ラウンドＸＯＲ演算部１１７の第３ＸＯＲ演算器１１８ａは、新たなラウンドの１２８ビットラウンドキーのうち、１２７番目から９６番目までの最上位の３２ビットラウンドキーＲＫ０と、以前ラウンドの１２８ビットラウンドキーのうち最上位の３２ビット後の９５番目から６４番目までの３２ビットラウンドキーＰＫ１とをＸＯＲ演算して、新たなラウンドの暗号化用１２８ビットラウンドキーのうち９５番目から６４番目までの３２ビットラウンドキーＲＫ１を生成する。
【００４２】
前記第３ＸＯＲ演算器１１８ａは、以前ラウンドの１２８ビットラウンドキーの１２７番目から９６番目までの最上位の３２ビットラウンドキーＰＫ０と、その次の９５番目から６４番目までの３２ビットラウンドキーＰＫ１とをＸＯＲ演算して、新たなラウンドの復号化用１２８ビットラウンドキーのうち９５番目から６４番目までの３２ビットラウンドキーＲＫ１を生成する。
【００４３】
前記ラウンドＸＯＲ演算部１１７の第３多重化器１１９は、前記バス２００を介して入ったモード信号の値に基づいて、出力が制御され、前記第３ＸＯＲ演算器１１８ａの入力信号を選択的に決定する。
【００４４】
前記ラウンドＸＯＲ演算部１１７の第４ＸＯＲ演算器１１８ｂは、新たなラウンドの１２８ビットラウンドキーのうち９５番目から６４番目までの３２ビットラウンドキーＲＫ１と、以前ラウンドの１２８ビットラウンドキーのうち６３番目から３２番目までの３２ビットラウンドキーＰＫ２とをＸＯＲ演算して、新たなラウンドの暗号化用１２８ビットラウンドキーのうち６３番目から３２番目までの３２ビットラウンドキーＲＫ２を生成する。
【００４５】
前記第４ＸＯＲ演算器１１８ｂは、以前ラウンドの１２８ビットラウンドキーの９５番目から６４番目までの３２ビットラウンドキーＰＫ１と、その次の６３番目から３２番目までの３２ビットラウンドキーＰＫ２とをＸＯＲ演算して、新たなラウンドの復号化用１２８ビットラウンドキーのうち６３番目から３２番目までの３２ビットラウンドキーＲＫ２を生成する。
【００４６】
前記ラウンドＸＯＲ演算部１１７の第４多重化器１１９ａは、前記バス２００を介して入ったモード信号の値に基づいて、出力が制御され、前記第４ＸＯＲ演算器１１８ｂの入力信号を選択的に決定する。
【００４７】
前記ラウンドＸＯＲ演算部１１７の第５ＸＯＲ演算器１１８ｃは、新たなラウンドの１２８ビットラウンドキーのうち６３番目から３２番目までの３２ビットラウンドキーＲＫ２と、以前ラウンドの１２８ビットラウンドキーのうち３１番目から０番目までの３２ビットラウンドキーＰＫ３とをＸＯＲ演算して、新たなラウンドの暗号化用１２８ビットラウンドキーのうち３１番目から０番目までの３２ビットラウンドキーＰＫ３を生成する。
【００４８】
前記第５ＸＯＲ演算器１１８ｃは、以前ラウンドの１２８ビットラウンドキーの６３番目から３２番目までの３２ビットラウンドキーＰＫ２と、その次の３１番目から０番目までの３２ビットラウンドキーＰＫ３とをＸＯＲ演算して、新たなラウンドの復号化用１２８ビットラウンドキーのうち３１番目から０番目までの３２ビットラウンドキーＲＫ３を生成する。
【００４９】
前記ラウンドＸＯＲ演算部１１７の第５多重化器１１９ｂは、前記バス２００を介して入ったモード信号の値に基づいて、出力が制御され、前記第５ＸＯＲ演算器１１８ｃの入力信号を選択的に決定する。
【００５０】
このように構成される本発明に係るラインドールブロック暗号化装置は、次のように作動して暗号化及び復号化過程を行う。
【００５１】
まず、図１と図２に示すように、ラインドールブロック暗号化装置の暗号化及び復号化動作について説明する。
【００５２】
ラウンド演算が開始すると、最初の１２８ビット入力キーＫｅｙが、バス２００を介してラウンドキー生成部１００に入ることにより、ラウンドキー生成過程が進行し、１２８ビット入力データｄａｔａは、Shift／Inverse Shift_Row変換部１２０に入る。
【００５３】
この際、前記Shift／Inverse Shift_Row変換部１２０は、暗号／復号過程によって、ラインドールブロック暗号アルゴリズムに定義されたように、それぞれ異なる数だけのbyte-shift／Inverse Shift変換を行う。
【００５４】
若し、前記ラウンド演算制御部３００から上位６４ビットを選択する信号（Ｓｅｌ＝「１」）が送られると、前記Shift／Inverse Shift_Row変換部１２０は、第１多重化器１２１から上位６４ビットを出力し、前記ラウンド演算制御部３００から下位６４ビットを選択する信号（Ｓｅｌ＝「０」)が送られると、第１多重化器１２１から下位６４ビットを出力する。
【００５５】
このようにbyte Shift／Inverse Shift_Row変換が行われると、次に、前記上位または下位６４ビットデータは、Substitution／Inverse Substitution演算を行うSubstitution／Inverse Substitution変換部１３０に入って、Substitution BoxやInverse Substitution Boxにより、Substitution／Inverse Substitution演算される。この際、前記Substitution BoxとInverse Substitution Boxは、ラインドールアルゴリズムのスペックに定義されたように、あるバイトの入力に対して、あるバイトの出力を送出するInverse Substitution変換器として作用する。
【００５６】
また、本発明で提案するSubstitution／Inverse Substitution変換部１３０は、一回に６４ビットのデータのみを処理すればよいので、８個のSubstitution Boxや８個のInverse Substitution Boxのみが必要である。
【００５７】
このようにSubstitution／Inverse Substitution変換が行われた状態で、前記バス２００から暗号過程を選択するモード信号（ｍｏｄｅ＝「０」）が送られると、前記上位または下位６４ビットデータは、第１逆多重化器１４０の暗号出力端０を介して、Mix／Inverse MixColumn変換部１５０の入力に入り、前記バス２００から復号過程を選択するモード信号（ｍｏｄｅ＝「１」)が送られると、前記上位または下位６４ビットデータは、第１逆多重化器１４０の復号出力端１を介して、Add Round Key変換部１７０の入力に入る。
【００５８】
Mix／Inverse MixColumn変換を経た６４ビットデータは、前記バス２００から暗号過程を選択するモード信号（ｍｏｄｅ＝「０」）が送られると、第２逆多重化器１６０の暗号出力端０を介して、Add Round Key変換部１７０の入力に入り、前記バス２００から復号過程を選択するモード信号（ｍｏｄｅ＝「１」）が送られると、前記第２逆多重化器１６０の復号出力端１を介して、ラウンド演算の結果データに出力される。
【００５９】
また、前記Add Round Key変換を経た６４ビットデータは、前記バス２００から暗号過程を選択するモード信号（ｍｏｄｅ＝「０」）が送られると、第３逆多重化器１８０の暗号出力端０を経てラウンド演算の出力結果となり、前記バス２００から復号過程を選択するモード信号（ｍｏｄｅ＝「１」）が送られると、第３逆多重化器１８０の復号出力端１を経てMix／Inverse MixColumn変換部１５０の入力となる。
【００６０】
上述したように、本発明では、暗号化過程と復号化過程において共通で用いられる構成要素を共有して、ハードウェアリソースの使用を減らそうとしたので、各変換部は、暗号化変換と復号化変換の機能を共に有している。
【００６１】
以下、図３を参照して、ラウンドキー生成部１１０が本発明に係るラインドールブロック暗号化装置の暗号化及び復号化動作に必要な暗号化用または復号化用のラウンドキーを生成する動作について説明する。
【００６２】
前記ラウンド演算制御部３００から４クロックまたは３クロックのラウンド演算開始信号とラウンド番号信号がラウンド演算部１００に入ると、このときからラウンド演算が始まる。
【００６３】
ラウンド演算が開始すると、前記ラウンドキー生成部１１０は、１２８ビットプレキーレジスタ１１１に保存された以前ラウンドの１２８ビットラウンドキー(prekey)を用いて、新たなラウンドのラウンドキーＲＫを生成し始める。
【００６４】
前記バス２００から暗号過程を選択するモード信号（ｍｏｄｅ＝「０」）が送られる場合、まず、前記１２８ビットプレキーレジスタ１１１の以前ラウンドの１２８ビットラウンドキーのうち最下位３２ビットＰＫ３が、第２多重化器１１３を経てシフト器１１４の入力に入る。
【００６５】
これに対して、前記バス２００から復号過程を選択するモード信号（ｍｏｄｅ＝「１」）が送られる場合、まず、前記第５ＸＯＲ演算器１１８ｃが、以前ラウンドのラウンドキーのうち下位６４ビットＰＫ２、ＰＫ３を３２ビットずつ互いにＸＯＲ演算して、新たなラウンドキーの最下位３２ビットＲＫ３で仮保存するとともに、この値ＲＫ３は、前記第２多重化器１１３を経てシフト器１１４の入力に入る。
【００６６】
前記シフト器１１４に入った３２ビットキーは、１バイト左側に循環シフト演算された後、４個のSubstitution BoxからなるSubstitution変換器１１５に入ってSubstitution変換される。
【００６７】
このようにSubstitution変換を終えた３２ビットキーのうち最上位の８ビットキーは、前記第１ＸＯＲ演算器１１６により、前記ラウンド演算制御部３００から入るラウンド番号信号が示されるラウンドが、何番目のラウンドであるかによって決定される定数値ＲｃｏｎとＸＯＲ演算され、この第１ＸＯＲ演算器１１６の結果値８ビットと、前記Substitution変換器１１５のSubstitution演算結果である余りの２４ビットとが合わせられて、前記ラウンドＸＯＲ演算部１１７の第２ＸＯＲ演算器１１８の入力に入る。
【００６８】
特に、この際、ラウンドキー生成過程中、ラウンド番号と関わる定数値を、ＸＯＲ演算を行う部分を、前記Substitution変換器１１５を通過した３２ビットデータのうち上位８ビットのみに限定することにより、ハードウェアの面積を減少させるという効果が得られる。これについて、ラインドールアルゴリズムスペックでは、ラウンド番号と関わる定数値を、８ビットの定数値に２４ビットの「０」をパッデングして３２ビットを作成した後、Substitution変換器１１５を通過した３２ビット値とＸＯＲ演算する構造として説明されている。
【００６９】
次いで、前記第２ＸＯＲ演算器１１８は、第１ＸＯＲ演算器１１６の結果値８ビットと前記Substitution変換器１１５のSubstitution演算結果である残りの２４ビットとが合わせられた値と、以前ラウンドのラウンドキーのうち最上位の３２ビットＰＫ０とをＸＯＲ演算して、生成した結果値を新たなラウンドの最上位の３２ビットラウンドキーＲＫ０として保存する。
【００７０】
このように新たなラウンドの暗号化または復号化に必要な最上位の３２ビットラウンドキーＲＫ０が生成すると、次に、前記第３ＸＯＲ演算器１１８ａは、暗号化過程の場合、新たなラウンドの最上位の３２ビットラウンドキーＲＫ０と、以前ラウンドの上位９５番目から６４番目までの３２ビットラウンドキーＰＫ１とをＸＯＲ演算して、新たなラウンドの次の３２ビットラウンドキーＲＫ１を生成し、復号化過程の場合、以前ラウンドの最上位の３２ビットＰＫ０と、以前ラウンドの次の上位３２ビットＰＫ１とをＸＯＲ演算して、新たなラウンドの次の３２ビットラウンドキーＲＫ１を生成する。
【００７１】
この際、前記第３多重化器１１９は、バス２００を介して入る暗号過程あるいは復号過程を示すモード信号に応じて、第３ＸＯＲ演算器１１８ａの入力値を決定する。
【００７２】
このように新たなラウンドの最上位の３２ビットラウンドキーＲＫ０の次の３２ビットラウンドキーＲＫ１が生成すると、その次の暗号化用または復号化用の３２ビットラウンドキーＲＫ２と、最下位の３２ビットラウンドキーＲＫ３は、それぞれ前記第３ＸＯＲ演算器１１８ａと同様な方式で作動する前記第４ＸＯＲ演算器１１８ｂと第５ＸＯＲ演算器１１８ｃにより生成され、前記第４多重化器１１９ａは、第４ＸＯＲ演算器１１８ｂの入力値を決定し、前記第５多重化器１１９ｂは、第５ＸＯＲ演算器１１８ｃの入力値を決定する。
【００７３】
特に、このように最上位ビットから最下位ビットまで３２ビットずつ分けて、新たなラウンドの１２８ビットラウンドキーを生成するのに必要な時間は、暗号過程の場合、前記ラウンド演算制御部３００から入るラウンド演算開始信号の総４クロック期間に該当し、復号過程の場合、合計２クロック期間に該当する。
【００７４】
実際に、暗号化ラウンド演算開始信号の１番目のクロックが１となると、前記第２ＸＯＲ演算器１１８により、新たなラウンドの最上位の３２ビットラウンドキーＲＫ０が生成され、２番目、３番目、４番目のクロックが１となる毎に、前記第３ＸＯＲ演算器１１８ａと第4ＸＯＲ演算器１１８ｂと第５ＸＯＲ演算器１１８ｃとにより、新たなラウンドの３２ビットラウンドキーＲＫ１、ＲＫ２、ＲＫ３が生成される。また、復号化ラウンド演算開始信号の１番目のクロックが１となると、前記第２ＸＯＲ演算器１１８により、新たなラウンドの最上位の３２ビットラウンドキーＲＫ０が生成され、２番目のクロックが１となるとき、前記第３ＸＯＲ演算器１１８ａと第４ＸＯＲ演算器１１８ｂと第５ＸＯＲ演算器１１８ｃとにより、新たなラウンドの３２ビットラウンドキーＲＫ１、ＲＫ２、ＲＫ３が同時に生成される。
【００７５】
前記ラウンド演算制御部３００から３クロックラウンド演算開始信号が、ラウンド演算部１００に入る場合、前記ラウンドキー生成部１１０は、２クロック期間に暗号化ラウンドキーを生成する。
【００７６】
この際、前記第２ＸＯＲ演算器１１８が、新たなラウンドの１２８ビットラウンドキーのうち１２７番目から９６番目までの最上位の３２ビットラウンドキーＲＫ０を生成するまでの過程は、ラウンド演算開始信号の１番目のクロックが「１」となってから進行される。
【００７７】
次いで、ラウンド演算開始信号の２番目のクロックが「１」となると、前記第３ＸＯＲ演算器１１８ａは、新たなラウンドの１２８ビットラウンドキーのうち１２７番目から９６番目までの最上位の３２ビットラウンドキーＲＫ０と、以前ラウンドの１２８ビットラウンドキーのうち最上位の次の３２ビットラウンドキーＰＫ１とをＸＯＲ演算して、新たなラウンドの暗号化用１２８ビットラウンドキーのうち９５番目から６４番目までの３２ビットラウンドキーＲＫ１を生成する。
【００７８】
これと同時に、前記第４ＸＯＲ演算器１１８ｂは、第３ＸＯＲ演算器１１８ａが、新たなラウンドの１２８ビットラウンドキーのうち１２７番目から９６番目までの最上位の３２ビットラウンドキーＲＫ０と、以前ラウンドの１２８ビットラウンドキーのうち最上位の３２ビットの次の９５番目から６４番目までの３２ビットラウンドキーＰＫ１とをＸＯＲ演算した結果値ＲＫ０・ＰＫ１と、以前ラウンドの６３番目から３２番目までの３２ビットラウンドキーＰＫ２とをＸＯＲ演算して、新たなラウンドの暗号化用１２８ビットラウンドキーのうち６３番目から３２番目までの３２ビットラウンドキーＲＫ２を生成する。
【００７９】
これと同時に、前記第５ＸＯＲ演算器１１８ｃは、第４ＸＯＲ演算器１１８ｂが、第３ＸＯＲ演算器１１８ａによりＸＯＲ演算された新たなラウンドの１２８ビットラウンドキーのうち１２７番目から９６番目までの最上位の３２ビットラウンドキーＲＫ０と、以前ラウンドの１２８ビットラウンドキーのうち最上位の３２ビットの次の９５番目から６４番目までの３２ビットラウンドキーＰＫ１とをＸＯＲ演算した結果値ＲＫ０・ＰＫ１と、以前ラウンドの６３番目から３２番目までの３２ビットラウンドキーＰＫ２とをＸＯＲ演算した結果値ＲＫ０・ＰＫ１・ＰＫ２と、以前ラウンドの３１番目から０番目までの３２ビットラウンドキーＰＫ３とをＸＯＲ演算して、新たなラウンドの暗号化用１２８ビットラウンドキーのうち３１番目から０番目までの３２ビットラウンドキーＲＫ３を生成する。
【００８０】
前記ラウンド演算制御部３００から２クロックラウンド演算開始信号がラウンド演算部１００に入る場合、前記ラウンドキー生成部１１０は、１クロック期間に暗号化ラウンドキーを生成する。
【００８１】
この際、前記第２ＸＯＲ演算器１１８が、新たなラウンドの１２８ビットラウンドキーのうち１２７番目から９６番目までの最上位の３２ビットラウンドキーＲＫ０を生成するまでの過程は、ラウンド演算開始信号が入力されると同時に、クロックが「０」である状態で進行される。
【００８２】
前記ラウンド演算開始信号の１番目クロックが「１」となると、前記第３ＸＯＲ演算器１１８ａは、新たなラウンドの１２８ビットラウンドキーのうち１２７番目から９６番目までの最上位の３２ビットラウンドキーＲＫ０と、以前ラウンドの１２８ビットラウンドキーのうち最上位の次の３２ビットラウンドキーＰＫ１とをＸＯＲ演算して、新たなラウンドの暗号化用１２８ビットラウンドキーのうち９５番目から６４番目までの３２ビットラウンドキーＲＫ１を生成する。
【００８３】
これと同時に、前記第４ＸＯＲ演算器１１８ｂは、第３ＸＯＲ演算器１１８ａが、新たなラウンドの１２８ビットラウンドキーのうち１２７番目から９６番目までの最上位３２ビットラウンドキーＲＫ０と、以前ラウンドの１２８ビットラウンドキーのうち最上位３２ビットの次の９５番目から６４番目までの３２ビットラウンドキーＰＫ１とをＸＯＲ演算した結果値ＲＫ０・ＰＫ１と、以前ラウンドの６３番目から３２番目までの３２ビットラウンドキーＰＫ２とをＸＯＲ演算して、新たなラウンドの暗号化用１２８ビットラウンドキーのうち６３番目から３２番目までの３２ビットラウンドキーＲＫ２を生成する。
【００８４】
これと同時に、前記第５ＸＯＲ演算器１１８ｃは、第４ＸＯＲ演算器１１８ｂが、第３ＸＯＲ演算器１１８ａによりＸＯＲ演算された新たなラウンドの１２８ビットラウンドキーのうち１２７番目から９６番目までの最上位の３２ビットラウンドキーＲＫ０と、以前ラウンドの１２８ビットラウンドキーのうち最上位３２ビットの次の９５番目から６４番目までの３２ビットラウンドキーＰＫ１とをＸＯＲ演算した結果値ＲＫ０・ＰＫ１と、以前ラウンドの６３番目から３２番目までの３２ビットラウンドキーＰＫ２とをＸＯＲ演算した結果値ＲＫ０・ＰＫ１・ＰＫ２と、以前ラウンドの３１番目から０番目までの３２ビットラウンドキーＰＫ３とをＸＯＲ演算して、新たなラウンドの暗号化用１２８ビットラウンドキーのうち３１番目から０番目までの３２ビットラウンドキーＲＫ３を生成する。
【００８５】
前記ラウンド演算制御部３００から２クロックラウンド演算開始信号がラウンド演算部１００に入る場合、前記ラウンドキー生成部１１０は、１クロック期間に復号化ラウンドキーを生成する。
【００８６】
この際、前記第２ＸＯＲ演算器１１８が、新たなラウンドの１２８ビットラウンドキーのうち１２７番目から９６番目までの最上位の３２ビットラウンドキーＲＫ０を生成するまでの過程は、ラウンド演算開始信号が入力されると同時に、クロックが「０」である状態で進行される。
【００８７】
前記ラウンド演算開始信号の１番目クロックが「１」となると、前記第３ＸＯＲ演算器１１８ａは、以前ラウンドの最上位３２ビットＰＫ０と以前ラウンドの次の上位３２ビットＰＫ１とをＸＯＲ演算して、新たなラウンドの次の３２ビットラウンドキーＲＫ１を生成し、続けて、その次の復号化用３２ビットラウンドキーＲＫ２と最下位の３２ビットラウンドキーＲＫ３は、それぞれ前記第３ＸＯＲ演算器１１８ａと同様な方式で作動する前記第４ＸＯＲ演算器１１８ｂと第５ＸＯＲ演算器１１８ｃにより生成される。これらの過程は、１番目クのロック期間で同時に実行される。
【００８８】
以下、上述したように作動して暗号化及び復号化過程を行うラインドールブロック暗号化装置の作動について、前記ラウンド演算制御部３００からラウンド演算部１００に入るラウンド演算開始信号のクロック数に応じて区分し、より具体的に説明する。
【００８９】
図４は、本発明に係るラインドールブロック暗号の暗号化方法を示す第１のタイミング図である。。
【００９０】
図４を参照すれば、ラウンド演算制御部３００から４クロックラウンド演算開始信号とラウンド番号信号がラウンド演算部１００に入ると（Ｓ４００）、１番目クロックが「１」となる瞬間、１２８ビットラウンド演算入力データのうち上位６４ビットデータのbyte-shift変換とsubstitution演算が順次行われ（Ｓ４０１）、これらの２つの過程が１クロック内で行われる。これらの過程の実行結果は、前記６４ビットデータレジスタ４００に保存される。また、前記ラウンド演算開始信号が入ると、１番目のクロックが「１」となる瞬間、１２８ビットラウンド入力キーを用いて、１２８ビットラウンドキー生成過程が始まる（Ｓ４０１ａ）。
【００９１】
ラウンド演算開始信号の２番目のクロックが「１」となる瞬間、前記６４ビットデータレジスタ４００に保存された６４ビットデータを用いてMixColumn変換が始まり、結果値は６４ビットデータレジスタ４００に保存され（Ｓ４０２）、これと同時に、ラウンド演算入力データの下位６４ビットデータのbyte-shift変換とsubstitution演算が順次行われ（Ｓ４０２）、これらの過程も１クロック内で行われる。また、前記下位６４ビットデータのbyte-shift変換とsubstitution演算の結果データは、ラウンド演算結果を保存する１２８ビットデータレジスタ５００の下位６４ビット位置に保存される。
【００９２】
ラウンド演算開始信号の３番目のクロックが「１」となる瞬間、前記６４ビットデータレジスタ４００に保存された６４ビットデータは、ラウンドキー生成部１１０で生成されたラウンドキーの上位６４ビットと足し合わせられるためにAdd Round Key変換部１７０の入力に入り、その結果値は、前記１２８ビットデータレジスタ５００の上位６４ビット位置に保存され（Ｓ４０３）、前記１２８ビットデータレジスタ５００の下位６４ビットデータは、MixColumn変換過程を経て、その結果値は、前記１２８ビットデータレジスタ５００の下位６４ビット位置に保存される（Ｓ４０３）。
【００９３】
ラウンド演算開始信号の４番目クロックが「１」となると、前記１２８ビットデータレジスタ５００の下位６４ビットデータは、ラウンドキー生成部１１０で生成されたラウンドキーの下位６４ビットと足し合わせられるためにAdd Round Key変換部１７０の入力に入り、その結果値は、前記１２８ビットデータレジスタ５００の下位６４ビット位置に保存される（Ｓ４０４）。
【００９４】
したがって、このように暗号化過程を行うラインドールブロック暗号化装置では、前記１２８ビットデータレジスタ５００の１２８ビットデータが、次のラウンドの１２８ビットラウンド演算入力データとなり、ラウンドキー生成部１１０で新たに生成されて前記１２８ビットラウンドキーレジスタ１１１ａに保存されたラウンドキーＲＫもまた、１２８ビットプレキーレジスタ１１１に保存されてから、次のラウンドの１２８ビットラウンド入力キーとして用いられる。これによって、１ラウンドの暗号化演算が完了し、合計４クロックが所要される。
【００９５】
図４に示した暗号化方法を、本発明に係るラインドールブロック暗号化装置で行う場合、前記ラウンドキー生成部１１０は、ラウンドキー生成過程をラウンド演算開始信号の合計４クロック期間に終わらせる。すなわち、図４によれば、上位６４ビットデータとラウンドキーを足し合わせる過程であるAdd Round Key変換過程（Ｓ４０３）が、ラウンド演算を始めた後、３番目のクロック後に行われる。ラウンド演算を開始した後、２番目のクロックが過ぎれば、新たなラウンドキーのうち上位６４ビットラウンドキーのみが生成された状態であり、この時点で、上位６４ビットラウンドキーのみを用いるので、ラウンド演算の暗号化動作には無理がない。また、ラウンド演算を始めた後、３番目のクロックが過ぎて、４番目クロックが始まる時点では、１２８ビットラウンドキーが全て生成される時点と一致するので、下位６４ビットデータと下位６４ビットラウンドキーを足し合わせるAdd Round Key変換過程（Ｓ４０４）の実行にも問題がない。
【００９６】
また、上述したように暗号化過程を行うラインドールブロック暗号化装置では、６４ビットデータレジスタ４００を暗号化過程中に生成される中間データ格納空間として用いることにより、上位６４ビットデータのbyte-shift変換結果が、下位６４ビットのbyte-shift変換に影響を与えず、上位６４ビットデータと下位６４ビットデータの変換を同時に行うが、同じクロック周期の間に上位６４ビットデータと下位６４ビットデータが同じ変換を行わないため、変換に必要なハードウェアモジュールの数を半分に減らすことができる。特に、各クロック毎に生成されたデータを、１つの格納空間にアップデートし続ける方法を取ることにより、追加の格納空間を用いる必要がない。すなわち、この場合は、パイプライン構造を応用するが、追加のハードウェアが必要でない構造を目指しており、これらの構造は、以下において他の実施例として説明するラインドールブロック暗号の暗号化及び復号化方法でも同様に適用される。
【００９７】
図５は、本発明に係るラインドールブロック暗号の復号化方法を示す第１のタイミング図である。
【００９８】
図５を参照すれば、ラウンド演算制御部３００から４クロックラウンド演算開始信号とラウンド番号信号がラウンド演算部１００に入ると（Ｓ５００）、１番目のクロックが「１」となる瞬間、１２８ビットラウンド演算入力データのうち上位６４ビットデータのbyte-inverse-shift変換とInverse substitution演算が順次行われ（Ｓ５０１）、これらの２つの過程が１クロック内で行われる。この際、結果データは、前記６４ビットデータレジスタ４００に保存される。また、ラウンド演算開始信号が入ると、１番目のクロックが「１」となる瞬間、１２８ビットラウンド入力キーを用いて、１２８ビットラウンドキー生成過程が始まる（Ｓ５０１ａ）。
【００９９】
ラウンド演算開始信号の２番目のクロックが「１」となる瞬間、前記６４ビットデータレジスタ４００に保存された６４ビットデータと、ラウンドキー生成部１１０で生成されたラウンドキーの上位６４ビットとが足し合わせられるAdd Round Key変換が始まり、結果データは、６４ビットデータレジスタ４００に保存され（Ｓ５０２）、同時にラウンド入力データの下位６４ビットデータのbyte-inverse-shift変換とInverse substitution演算が順次行われ、結果データは、１２８ビットデータレジスタ５００の下位６４ビット位置に保存される（Ｓ５０２）。
【０１００】
ラウンド演算開始信号の３番目のクロックが「１」となる瞬間、前記６４ビットデータレジスタ４００に保存された６４ビットデータは、Mix／Inverse MixColumn変換部１５０の入力に入り、Inverse MixColumn変換の結果データは、前記１２８ビットデータレジスタ５００の上位６４ビット位置に保存され（Ｓ５０３）、同時にInverse substitution演算を終えた前記下位６４ビットデータは、ラウンドキー生成部１１０で生成されたラウンドキーと足し合わせられるAdd Round Key変換を経て、結果データは、前記１２８ビットデータレジスタの下位６４ビット位置に保存される（Ｓ５０３）。
【０１０１】
ラウンド演算開始信号の４番目のクロックが「１」となると、Add Round Key変換を終えた前記下位６４ビットデータは、Mix／Inverse MixColumn変換部１５０の入力となってInverse MixColumn変換され、結果データは、前記１２８ビットデータレジスタ５００の下位６４ビット位置に保存される（Ｓ５０４）。
【０１０２】
この際も、前記１２８ビットデータレジスタ５００の１２８ビットデータは、次の復号化ラウンド演算の１２８ビットラウンド演算入力データとして用いられ、ラウンドキー生成結果である１２８ビットラウンドキーＲＫは、前記１２８ビットプレキーレジスタ１１１に保存され、次のラウンド演算の１２８ビットラウンド入力キーとして用いられる。これによって、１ラウンドの復号化演算が完了し、合計４クロックが所要される。
【０１０３】
図５に示した復号化方法を本発明によるラインドールブロック暗号化装置で行う場合、前記ラウンドキー生成部１１０は、ラウンドキー生成過程をラウンド演算開始信号の合計２クロック期間に終わらせる。すなわち、図５によれば、上位６４ビットラウンドキーと上位６４ビットデータを足し合わせるAdd Round Key変換過程（Ｓ５０２）が、ラウンド演算を開始した後、２番目のクロックで行われるので、２番目のクロックでは既に１２８ビットラウンドキーが全て生成された状態となってラウンド演算の実行に問題がない。
【０１０４】
図６は、本発明に係るラインドールブロック暗号の暗号化方法を示す第２のタイミング図である。
【０１０５】
図６を参照すれば、ラウンド演算制御部３００から３クロックラウンド演算開始信号とラウンド番号信号がラウンド演算部１００で入いると（Ｓ６００）、１番目のクロックが「１」となる瞬間、上位６４ビットデータのbyte-shift演算とsubstitution演算が順に行われ、結果データは、６４ビットデータレジスタ４００に保存される（Ｓ６０１）。また、ラウンドキー生成過程が、これと同時に行われる（Ｓ６０１ａ）。
【０１０６】
ラウンド演算開始信号の２番目のクロックが「１」となると、前記６４ビットデータレジスタ４００に保存された６４ビットデータがMixColumn変換をした後、ラウンドキー生成部１１０の結果データのうち上位６４ビットラウンドキーとAdd Round Key変換され、結果データは、前記６４ビットデータレジスタ４００に保存され（Ｓ６０２）、これと同時に、下位６４ビットデータのbyte-shift変換とsubstitution変換が順次行われ、前記１２８ビットデータレジスタ５００の下位６４ビット位置に保存される（Ｓ６０２）。
【０１０７】
ラウンド演算開始信号の３番目のクロックが「１」となると、前記６４ビットデータレジスタ４００に保存された６４ビットデータが、前記１２８ビットデータレジスタ５００の上位６４ビット位置に保存され、前記１２８ビットデータレジスタ５００の下位６４ビットデータは、MixColumn変換を行った後、ラウンドキー生成部１１０で生成されたラウンドキーのうち下位６４ビットラウンドキーとAdd Round Key変換を行い、結果データは、前記１２８ビットデータレジスタ５００の下位６４ビット位置に保存される（Ｓ６０３）。
【０１０８】
この際も、前記１２８ビットデータレジスタ５００の１２８ビットデータは、次のラウンド演算の１２８ビットラウンド演算入力データとして用いられ、ラウンドキー生成部１１０で生成されたラウンドキーＲＫは、１２８ビットプレキーレジスタ１１１に保存され、次のラウンドの１２８ビットラウンド入力キーとして用いられる。これによって、１ラウンドの暗号化演算が完了し、合計３クロックが所要される。
【０１０９】
図６に示した暗号化方法を本発明に係るラインドールブロック暗号化装置で行う場合、前記ラウンドキー生成部１１０は、ラウンドキー生成過程をラウンド演算開始信号の合計２クロック期間に終わらせる。すなわち、図６によれば、上位６４ビットラウンドキーと上位６４ビットデータを足し合わせるAdd Round Key変換過程（Ｓ６０２）が、ラウンド演算を開始した後、２番目のクロックで行われるので、２番目のクロックでは、既に１２８ビットラウンドキーが全て生成された状態となってラウンド演算の実行に問題がない。
【０１１０】
図７は、本発明に係るラインドールブロック暗号の復号化方法を示す第２のタイミング図である。
【０１１１】
図７を参照すれば、ラウンド演算制御部３００から３クロックラウンド演算開始信号とラウンド番号信号がラウンド演算部１００に入ると（Ｓ７００）、１番目のクロックが「１」となると、ラウンド入力データの上位６４ビットデータがbyte-inverse-shift変換とInverse substitution変換を経て、この結果データは、６４ビットデータレジスタ４００に保存される（Ｓ７０１）。また、これらの変換と同時にラウンドキー生成過程が始まる（Ｓ７０１ａ）。
【０１１２】
ラウンド演算開始信号の２番目のクロックが「１」となると、前記６４ビットデータレジスタ４００の６４ビットデータと、ラウンドキー生成部１１０で生成されたラウンドキーの上位６４ビットラウンドキーがAdd Round Key変換され、この結果データが、Mix／Inverse MixColumn変換部１５０の入力データとなり、Inverse MixColumn変換された結果データが前記６４ビットデータレジスタ４００に保存される（Ｓ７０２）。これらのAdd Round Key変換及びInverse MixColumn変換と同時に、ラウンド入力データの下位６４ビットデータのbyte-inverse-shift変換とInverse substitution変換が順に行われ、結果データが前記１２８ビットデータレジスタ５００の下位６４ビット位置に保存される（Ｓ７０２）。
【０１１３】
ラウンド演算開始信号の３番目のクロックが「１」となると、前記６４ビットデータレジスタ４００に保存された６４ビットデータが、前記１２８ビットデータレジスタ５００の上位６４ビット位置に保存され、前記１２８ビットデータレジスタ５００の下位６４ビットデータと、ラウンドキー生成部１１０のラウンドキーのうち下位６４ビットラウンドキーがAdd Round Key変換され、この結果データをInverse MixColumn変換して得た結果データが、前記１２８ビットデータレジスタ５００の下位６４ビット位置に保存される（Ｓ７０３）。
【０１１４】
この際も、前記１２８ビットデータレジスタ５００の１２８ビットデータは、次のラウンド演算の１２８ビットラウンド入力データとして用いられ、ラウンドキー生成部１１０で生成されたラウンドキーＲＫが、前記１２８ビットプレキーレジスタ１１１に保存され、次のラウンド演算の１２８ビットラウンド入力キーとして用いられる。これによって、１ラウンドの復号化演算が完了し、合計３クロックが所要される。
【０１１５】
図７に示した復号化方法を本発明に係るラインドールブロック暗号化装置で行う場合、前記ラウンドキー生成部１１０は、ラウンドキー生成過程をラウンド演算開始信号の合計２クロック期間に終わらせる。すなわち、図７によれば、上位６４ビットラウンドキーと上位６４ビットデータを足し合わせるAdd Round Key変換過程（Ｓ７０２）が、ラウンド演算を開始した後、２番目のクロックで行われるので、２番目のクロックでは、既に１２８ビットラウンドキーが全て生成された状態となり、ラウンド演算の実行に問題がない。
【０１１６】
図８は、本発明に係るラインドールブロック暗号の暗号化方法を示す第３タイミング図である。
【０１１７】
図８を参照すれば、ラウンド演算制御部３００から２クロックラウンド演算開始信号とラウンド番号信号がラウンド演算部１００に入ると（Ｓ８００）、１番目のクロックが「１」となると、ラウンド入力データの上位６４ビットデータに対するbyte-shift変換、substitution変換、MixColumn変換、Add Round Key変換が順に行われ、結果データは、前記６４ビットデータレジスタ４００に保存される（Ｓ８０１）。これと同時に、ラウンドキー生成過程（Ｓ８０１ａ）が進行されて生成されたラウンドキーのうち上位６４ビットラウンドキーが、上述したAdd Round Key変換に用いられる。これらの過程は、１クロック内で行われる。
【０１１８】
ラウンド演算開始信号の２番目のクロックが「１」となると、ラウンド入力データの下位６４ビットデータに対するbyte-shift変換、substitution変換、MixColumn変換、Add Round Key変換が順に行われ、結果データは、前記１２８ビットデータレジスタ５００の下位６４ビット位置に保存される（Ｓ８０２）。そして、ラウンドキー生成過程で生成されたラウンドキーのうち下位６４ビットラウンドキーが、上述したAdd Round Key変換に用いられる。この際、６４ビットデータレジスタ４００に保存された６４ビットデータは、１２８ビットデータレジスタ５００の上位６４ビット位置に保存され、ラウンドキー生成部１１０で新たに生成された１２８ビットラウンドキーＲＫは、１２８ビットラウンドキーレジスタ１１１ａに保存されて、前記１２８ビットプレキーレジスタ１１１にバックアップされる。これによって、１ラウンドの暗号化演算が完了し、合計２クロックが所要される。
【０１１９】
図８に示した暗号化方法を本発明に係るラインドールブロック暗号化装置で行う場合、前記ラウンドキー生成部１１０は、ラウンドキー生成過程をラウンド演算開始信号の合計１クロック期間に終わらせる。すなわち、図８によれば、上位６４ビットラウンドキーと上位６４ビットデータを足し合わせるAdd Round Key変換過程（Ｓ８０１）が、ラウンド演算を開始した後、１番目のクロックで行われるので、１番目のクロックでは、既に１２８ビットラウンドキーが全て生成された状態となり、ラウンド演算の実行に問題がない。
【０１２０】
実際に、この際は、図３に示したラウンドキー生成部１１０が、ＲＫ０を用いてＲＫ１を生成し、ＲＫ１を用いてＲＫ２を生成し、ＲＫ２を用いてＲＫ３を生成せず、ＲＫ０を、ラウンド演算開始信号が入力されると同時に、クロックが「０」である状態で生成しておき、１番目のクロックが「１」となる瞬間、ＲＫ０とＰＫ１をＸＯＲ演算してＲＫ１を生成し、これと同時に、ＲＫ０とＰＫ１、ＰＫ２をＸＯＲ演算してＲＫ２を生成し、またこれと同時に、ＲＫ０とＰＫ１、ＰＫ２、ＰＫ３をＸＯＲ演算してＲＫ３を生成する。
【０１２１】
図９は、本発明に係るラインドールブロック暗号の復号化方法を示す第３タイミング図である。
【０１２２】
図９を参照すれば、ラウンド演算制御部３００から２クロックラウンド演算開始信号とラウンド番号信号がラウンド演算部１００で入ると（Ｓ９００）、１番目のクロックが「１」となると、ラウンド入力データの上位６４ビットデータに対するbyte-inverse-shift変換、Inverse substitution変換、Add Round Key変換、Inverse MixColumn変換が順に行われ、結果データは６４ビットデータレジスタ４００に保存される（Ｓ９０１）。これらの過程は１クロックで行われる。また、これと同時に、復号化用ラウンドキー生成過程が進行されて（Ｓ９０１ａ）、ラウンドキー生成部１１０で生成されたラウンドキーのうち上位６４ビットラウンドキーが上述したAdd Round Key変換過程において用いられる。
【０１２３】
ラウンド演算開始信号の２番目のクロックが「１」となると、下位６４ビットデータに対するbyte-inverse-shift変換、Inverse substitution変換、Add Round Key変換、Inverse MixColumn変換が順に行われ、結果データは１２８ビットデータレジスタ５００の下位６４ビット位置に保存される（Ｓ９０２）。これらの過程は１クロックで行われる。そして、前記Add Round Key変換には、ラウンドキー生成部１１０において１クロック前に生成されたラウンドキーのうち下位６４ビットラウンドキーが用いられる。この際、前記６４ビットデータレジスタ４００に保存された６４ビットデータは、１２８ビットデータレジスタ５００の上位６４ビット位置に保存され、ラウンドキー生成部１１０で新たに生成された１２８ビットラウンドキーＲＫは、１２８ビットラウンドキーレジスタ１１１ａに保存されて、前記１２８ビットプレキーレジスタ１１１にバックアップされる。これによって、１ラウンドの復号化演算が完了し、合計２クロックが所要される。
【０１２４】
図９に示した復号化方法を本発明によるラインドールブロック暗号化装置で行う場合、前記ラウンドキー生成部１１０は、ラウンドキー生成過程を、ラウンド演算開始信号の合計１クロック期間に終わらせる。すなわち、図９によれば、上位６４ビットラウンドキーと上位６４ビットデータを足し合わせるAdd Round Key変換過程（Ｓ９０１）が、ラウンド演算を開始した後、１番目のクロックで行われるが、１番目のクロックでは既に１２８ビットラウンドキーが全て生成された状態となって、ラウンド演算の実行に問題がない。
【０１２５】
実際に、この際は、図３に示したラウンドキー生成部１１０が、ＲＫ０を、ラウンド演算開始信号が入力されると同時に、クロックが「０」である状態で生成しておき、１番目のクロックが「１」となる瞬間、ＰＫ０とＰＫ１をＸＯＲ演算してＲＫ１を生成し、これと同時に、ＰＫ１とＰＫ２をＸＯＲ演算してＲＫ２を生成し、またこれと同時に、ＰＫ２とＰＫ３をＸＯＲ演算してＲＫ３を生成する。
【０１２６】
上述した図８に示す暗号化方法と図９に示す復号化方法によるラインドールブロック暗号化装置は、小面積と低電力消耗、及び低動作周波数特性を有するスマートカード、ＵＳＩＭ（user subscriber identity module）カード、ＳＩＭカードなどに適用するのに好適なモデルである。
【産業上の利用可能性】
【０１２７】
上述した本発明に係るラインドールブロック暗号化装置とその暗号化及び復号化方法は、高速、小面積の暗号プロセッサーを要求する携帯電話やＰＤＡのような携帯電話端末またはスマートカードに搭載することにより、保安を要する重要なデータを高速で暗号化及び復号化することができ、特に、１２８ビット入力データを上位６４ビットと下位６４ビットに分けて、ラウンド演算を行うようになっているため、次のような効果を奏する。
【０１２８】
第一に、本発明に係る暗号化装置内のラウンド演算装置を繰返し使用することにより、小面積と高速で、リアルタイムデータを暗号化及び復号化することができる。
【０１２９】
第二に、本発明に係る暗号化装置は、ラインドールアルゴリズムを適用したラウンド演算装置を用いて、ブロック暗号データをリアルタイムで暗/復号化するので、既存のＤＥＳ（Data Encryption Standard）アルゴリズムを適用した演算装置に比べてより高い安全性を提供する。
【０１３０】
第三に、本発明に係る暗号化装置のラインドール暗/復号化用のラウンド演算装置は、ラウンド演算を一定の数だけ繰り返すようにする単純な制御器を追加することにより、ブロック暗号データを高速、かつリアルタイムで暗/復号化することができるという長所がある。
【０１３１】
第四に、本発明に係る暗号化装置のラウンド演算装置は、既存の１２８ビット単位ラウンド演算装置に比べて半分に近い小面積であっても、高速でデータを暗/復号化することができる。
【０１３２】
第五に、本発明に係る暗号化装置のラウンド演算装置は、適用分野に応じて、適切な方法を選択して具現することができ、用いられたハードウェアリソースの量に拘わらず、 システムに適用する場合、６４ビット単位のラウンド処理ではなく、１２８ビット単位のラウンド処理方式で応用して適用することにより、２倍のデータ暗/復号速度を得ることができる。
【０１３３】
上述したものは、本発明に係るラインドールブロック暗号化装置とその暗号化及び復号化方法を実施するための一実施の形態に過ぎないものであって、本発明は、前記一実施の形態に限定されず、以下の特許請求の範囲で請求する本発明の要旨を逸脱しない範囲内で、当該発明の属する分野における通常の知識を有する者であれば、誰でも様々な変更実施が可能な範囲まで、本発明の技術的精神があるものである。
【図面の簡単な説明】
【０１３４】
上述した本発明の目的、他の特徴及び利点は、添付図面を参照した好適な実施の形態の説明によって明らかとなる。
【図１】本発明に係るラインドールブロック暗号化装置を示す構成図である。
【図２】ラウンド演算部を示す構成図である。
【図３】ラウンドキー生成部を示す構成図である。
【図４】本発明に係るラインドールブロック暗号の暗号化方法を示す第１タイミング図である。
【図５】本発明に係るラインドールブロック暗号の復号化方法を示す第１タイミング図である。
【図６】本発明に係るラインドールブロック暗号の暗号化方法を示す第２タイミング図である。
【図７】本発明に係るラインドールブロック暗号の復号化方法を示す第２タイミング図である。
【図８】本発明に係るラインドールブロック暗号の暗号化方法を示す第３タイミング図である。
【図９】本発明に係るラインドールブロック暗号の復号化方法を示す第３タイミング図である。
【図１】
2006527865.tif 000003
【図２】
2006527865.tif 000004
【図３】
2006527865.tif 000005
【図４】
2006527865.tif 000006
【図５】
2006527865.tif 000007
【図６】
2006527865.tif 000008
【図７】
2006527865.tif 000009
【図８】
2006527865.tif 000010
【図９】
2006527865.tif 000011
【手続補正書】
【提出日】平成17年12月19日(2005.12.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
Ｍビットの入力データ及びＮビットの入力キーを有し、Shift_Row、Substitution、MixColumn、Add Round Keyの変換過程を含むラウンド演算を所定の回数だけ繰り返して、前記Ｍビットの入力データを暗号化するラインドールブロック暗号化装置において、
少なくとも前記Substitution、MixColumn、Add Round Keyの変換過程では、データをＭ／ｍビット（ｍは、２、３または４）単位で処理するラウンド演算実行部と、前記Add Round Key過程にラウンドキーを提供するために、ラウンドキーを生成するラウンドキー生成部とを有するラウンド演算部と、
前記ラウンド演算部によって行われるラウンド演算を制御するラウンド演算制御部と、
前記ラウンド演算部によってラウンド毎の中間段階で生成されるＭ／ｍビットの中間データ及びラウンド毎の終了段階で生成されるＭビットのデータを保存するためのデータ記憶部と、を備えることを特徴とするラインドールブロック暗号化装置。
【請求項２】
前記データ記憶部は、少なくとも一つのレジスタを有し、その大きさの総和がＭ（２ｍ−１）／ｍビットと同じかまたは大きいことを特徴とする、請求項１に記載のラインドールブロック暗号化装置。
【請求項３】
Ｍビットの入力データ及びＮビットの入力キーを有し、Inverse Shift_Row、Inverse Substitution、Add Round Key、Inverse MixColumnの変換過程を含むラウンド演算を所定の回数だけ繰り返して、前記Ｍビットの入力データを復号化するラインドールブロック復号化装置において、
少なくとも前記Inverse Substitution、Add Round Key、Inverse MixColumn の変換過程では、データをＭ／ｍビット（ｍは、２、３または４）単位で処理するラウンド演算実行部と、前記Add Round Key過程にラウンドキーを提供するために、ラウンドキーを生成するラウンドキー生成部とを有するラウンド演算部と、
前記ラウンド演算部によって行われるラウンド演算を制御するラウンド演算制御部と、
前記ラウンド演算部によってラウンド毎の中間段階で生成されるＭ／ｍビットの中間データ及びラウンド毎の終了段階で生成されるＭビットのデータを保存するためのデータ記憶部と、を備えることを特徴とするラインドールブロック復号化装置。
【請求項４】
前記データ記憶部は、少なくとも一つのレジスタを有し、その大きさの総和がＭ（２ｍ−１）／ｍビットと同じかまたは大きいことを特徴とする、請求項３に記載のラインドールブロック復号化装置。
【請求項５】
Ｍビットの入力データ及びＮビットの入力キーを有し、Shift_Row、Substitution、MixColumn、Add Round Keyの変換過程を含む暗号化用ラウンド演算を所定の回数だけ繰り返して、前記Ｍビットの入力データを暗号化し、または、Inverse Shift_Row、Inverse Substitution、Add Round Key、Inverse MixColumnの変換過程を含む復号化用ラウンド演算を所定の回数だけ繰り返して、前記Ｍビットの入力データを復号化するためのラインドールブロック暗・復号化装置において、
暗号化モードでは、少なくとも前記Substitution、MixColumn、Add Round Keyの変換過程では、データをＭ／ｍビット（ｍは、２、３または４）単位で処理し、復号化モードでは、少なくとも前記Inverse Substitution、Add Round Key、Inverse MixColumnの変換過程では、データをＭ／ｍビット（ｍは、２、３または４）単位で処理するラウンド演算実行部と、前記Add Round Key過程にラウンドキーを提供するためにラウンドキーを生成するラウンドキー生成部とを有するラウンド演算部と、
前記ラウンド演算部により行われるラウンド演算を制御するラウンド演算制御部と、
前記ラウンド演算部により毎ラウンドの中間段階で生成されるＭ／ｍビットの中間データ及び毎ラウンドの終了段階で生成されるＭビットのデータを保存するためのデータ記憶部と、を備えることを特徴とするラインドールブロック暗・復号化装置。
【請求項６】
前記ラウンド演算実行部は、
前記Shift_Row演算及びInverse Shift_Row演算を行うShift／Inverse Shift_Row演算手段と、
前記Substitution演算及びInverse Substitution演算を行うSubstitution／Inverse Substitution演算手段と、
前記MixColumn演算及びInverse MixColumn演算を行うMixColumn／Inverse MixColumn演算手段と、
前記Add Round Key演算を行うAdd Round Key演算手段とを有することを特徴とする、請求項５に記載のラインドールブロック暗・復号化装置。
【請求項７】
前記ラウンド演算実行部は、
暗号または復号モードを示すモード信号の入力に応じて、それぞれ暗号化用ラウンド演算または復号化用ラウンド演算を行うように、前記Substitution／Inverse Substitution演算手段と、前記MixColumn／Inverse MixColumn演算手段と、Add Round Key演算手段との間でデータの流れ方向を制御する複数の逆多重化手段を有することを特徴とする、請求項６に記載のラインドールブロック暗・復号化装置。
【請求項８】
前記データ記憶部は、少なくとも１つのレジスタを有し、その大きさの総和がＭ（２ｍ−１）／ｍビットと同じかまたは大きいことを特徴とする、請求項５乃至７のうちいずれか一項に記載のラインドールブロック暗・復号化装置。
【請求項９】
Ｍビットの入力データとＮビットの入力キーを入力され、所定の回数だけラウンド演算を行うラインドールブロック暗号化方法において、前記方法は、
以前ラウンドからのＭビットデータを、Shift_Row変換を加え、選択信号に対応するＭ／ｍビット（ｍは、２、３または４）データのみを次の段階に出力するShift_Row演算段階と、前記Ｍ／ｍビットデータに対してSubstitution変換を行うSubstitution変換段階と、前記Ｍ／ｍビットデータに対してMixColumn変換を行うMixColumn変換段階と、前記Ｍ／ｍビットデータに同一の大きさのラウンドキーを足すAdd Round Key段階とを、ｍ個のＭ／ｍビットデータの全てに対して行うことを一つのラウンドとするラウンド演算段階と、
前記Add Round Key段階にラウンドキーを提供するために、ラウンドキーを生成するラウンドキー生成段階と、を含むことを特徴とするラインドールブロック暗号化方法。
【請求項１０】
前記Shift_Row変換段階、Substitution変換段階、MixColumn変換段階、及びAdd Round Key段階は、それぞれＭ／ｍビットの大きさのデータを処理可能であり、所定のタイミングに応じて、複数のＭ／ｍビットデータが、同一の時点で、前記４段階のうち複数の段階をそれぞれ占有して処理されることが可能であることを特徴とする、請求項９に記載のラインドールブロック暗号化方法。
【請求項１１】
Ｍビットの入力データとＮビットの入力キーを入力され、所定の回数だけラウンド演算を行うラインドールブロック復号化方法において、前記方法は、
以前ラウンドからのＭビットデータを、Inverse Shift_Row変換を加え、選択信号に対応するＭ／ｍビット（ｍは、２、３または４）データのみを次の段階に出力するInverse Shift_Row変換段階と、前記Inverse Shift_Row変換されたＭ／ｍビットデータに対してInverse Substitution変換を行うInverse Substitution変換段階と、前記Inverse Substitution変換されたＭ／ｍビットデータに同一の大きさのラウンドキーを足すAdd Round Key段階と、前記ラウンドキーを足したＭ／ｍビットデータに対してInverse MixColumn変換を行うInverse MixColumn変換段階とを、ｍ個のＭ／ｍビットデータの全てに対して行うことを一つのラウンドとするラウンド演算段階と、
前記Add Round Key段階にラウンドキーを提供するために、ラウンドキーを生成するラウンドキー生成段階と、を含むことを特徴とするラインドールブロック復号化方法。
【請求項１２】
前記Inverse Shift_Row変換段階、Inverse Substitution変換段階、Add Round Key段階、及びInverse MixColumn変換段階は、それぞれＭ／ｍビットの大きさのデータを処理可能であり、所定のタイミングに応じて、複数のＭ／ｍビットデータが、同一の時点で、前記４段階のうち複数の段階をそれぞれ占有して処理されることが可能であることを特徴とする、請求項１１に記載のラインドールブロック復号化方法。
【国際調査報告】
2006527865.tif 000012
2006527865.tif 000013