(57)【要約】【課題】ＡＥＳ暗号回路を小型化する。【解決手段】ＭｉｘＣｏｌｕｍｎ変換回路において、４つの乗算器とＸＯＲ回路から構成される演算回路を２個並列に設けて、３２ビットデータを２サイクルで処理するか、あるいは、単一の演算回路で３２ビットデータを４サイクルで処理することで、ＭｉｘＣｏｌｕｍｎ変換またはＩｎｖＭｉｘＣｏｌｕｍｎ変換の変換結果を得る。【選択図】図２
2008151829.tif 000002
【特許請求の範囲】
【請求項１】
入力データ列を第１、第２、第３、および第４のデータ列に分割して出力する分割手段と、
第１の期間において、前記第１のデータ列に第１の係数を乗算して第１の乗算結果を出力し、第２の期間において、前記第３のデータ列に該第１の係数を乗算して第２の乗算結果を出力する第１の乗算手段と、
前記第１の期間において、前記第２のデータ列に第２の係数を乗算して第３の乗算結果を出力し、前記第２の期間において、前記第４のデータ列に該第２の係数を乗算して第４の乗算結果を出力する第２の乗算手段と、
前記第１の期間において、前記第１のデータ列に第３の係数を乗算して第５の乗算結果を出力し、前記第２の期間において、前記第３のデータ列に該第３の係数を乗算して第６の乗算結果を出力する第３の乗算手段と、
前記第１の期間において、前記第２のデータ列に第４の係数を乗算して第７の乗算結果を出力し、前記第２の期間において、前記第４のデータ列に該第４の係数を乗算して第８の乗算結果を出力する第４の乗算手段と、
前記第１の期間において、前記第１および第３の乗算結果の排他的論理和と、前記第５および第７の乗算結果の排他的論理和をラッチするラッチ手段と、
前記第２の期間において、前記第１および第３の乗算結果の排他的論理和と、前記第６および第８の乗算結果の排他的論理和との排他的論理和を出力し、かつ、前記第５および第７の乗算結果の排他的論理和と、前記第２および第４の乗算結果の排他的論理和との排他的論理和を出力する排他的論理和手段と
を備えることを特徴とする暗号演算装置。
【請求項２】
前記第１の期間において、前記第１のデータ列に第５の係数を乗算して第９の乗算結果を出力し、前記第２の期間において、前記第３のデータ列に該第５の係数を乗算して第１０の乗算結果を出力する第５の乗算手段と、
前記第１の期間において、前記第２のデータ列に第６の係数を乗算して第１１の乗算結果を出力し、前記第２の期間において、前記第４のデータ列に該第６の係数を乗算して第１２の乗算結果を出力する第６の乗算手段と、
前記第１の期間において、前記第１のデータ列に第７の係数を乗算して第１３の乗算結果を出力し、前記第２の期間において、前記第３のデータ列に該第７の係数を乗算して第１４の乗算結果を出力する第７の乗算手段と、
前記第１の期間において、前記第２のデータ列に第８の係数を乗算して第１５の乗算結果を出力し、前記第２の期間において、前記第４のデータ列に該第８の係数を乗算して第１６の乗算結果を出力する第８の乗算手段と、
前記第１の期間において、前記第９および第１１の乗算結果の排他的論理和と、前記第１３および第１５の乗算結果の排他的論理和をラッチするラッチ手段と、
前記第２の期間において、前記第９および第１１の乗算結果の排他的論理和と、前記第１４および第１６の乗算結果の排他的論理和との排他的論理和を出力し、かつ、前記第１３および第１５の乗算結果の排他的論理和と、前記第１０および第１２の乗算結果の排他的論理和との排他的論理和を出力する排他的論理和手段と
をさらに備えることを特徴とする請求項１記載の暗号演算装置。
【請求項３】
前記第１の乗算手段は、第３の期間において、前記第２のデータ列に前記第１の係数を乗算して第９の乗算結果を出力し、第４の期間において、前記第４のデータ列に該第１の係数を乗算して第１０の乗算結果を出力し、
前記第２の乗算手段は、前記第３の期間において、前記第３のデータ列に前記第２の係数を乗算して第１１の乗算結果を出力し、前記第４の期間において、前記第１のデータ列に該第２の係数を乗算して第１２の乗算結果を出力し、
前記第３の乗算手段は、前記第３の期間において、前記第２のデータ列に前記第３の係数を乗算して第１３の乗算結果を出力し、前記第４の期間において、前記第４のデータ列に該第３の係数を乗算して第１４の乗算結果を出力し、
前記第４の乗算手段は、前記第３の期間において、前記第３のデータ列に前記第４の係数を乗算して第１５の乗算結果を出力し、前記第４の期間において、前記第１のデータ列に該第４の係数を乗算して第１６の乗算結果を出力し、
前記ラッチ手段は、前記第３の期間において、前記第９および第１１の乗算結果の排他的論理和と、前記第１３および第１５の乗算結果の排他的論理和をラッチし、
前記排他的論理和手段は、前記第４の期間において、前記第９および第１１の乗算結果の排他的論理和と、前記第１４および第１６の乗算結果の排他的論理和との排他的論理和を出力し、かつ、前記第１３および第１５の乗算結果の排他的論理和と、前記第１０および第１２の乗算結果の排他的論理和との排他的論理和を出力することを特徴とする請求項１記載の暗号演算装置。
【請求項４】
入力データ列を第１、第２、第３、および第４のデータ列に分割して出力する分割手段と、
第１の期間において、前記第１のデータ列に第１の係数を乗算して第１の乗算結果を出力し、第２の期間において、前記分割手段から入力されたデータ列に該第１の係数を乗算して第２の乗算結果を出力する第１の乗算手段と、
前記第１の期間において、前記第２のデータ列に第２の係数を乗算して第３の乗算結果を出力し、前記第２の期間において、前記分割手段から入力されたデータ列に該第２の係数を乗算して第４の乗算結果を出力する第２の乗算手段と、
前記第１の期間において、前記第３のデータ列に第３の係数を乗算して第５の乗算結果を出力し、前記第２の期間において、前記分割手段から入力されたデータ列に該第３の係数を乗算して第６の乗算結果を出力する第３の乗算手段と、
前記第１の期間において、前記第４のデータ列に第４の係数を乗算して第７の乗算結果を出力し、前記第２の期間において、前記分割手段から入力されたデータ列に該第４の係数を乗算して第８の乗算結果を出力する第４の乗算手段と、
前記第１の期間において、前記第１、第３、第５、および第７の乗算結果の排他的論理和を出力し、前記第２の期間において、前記第２、第４、第６、および第８の乗算結果の排他的論理和を出力する排他的論理和手段とを備え、
前記分割手段は、前記第１の期間において、前記第１、第２、第３、および第４のデータ列をそれぞれ前記第１、第２、第３、および第４の乗算手段に出力し、前記第２の期間において、該第１、第２、第３、および第４のデータ列を該第１の期間とは異なる順序で該第１、第２、第３、および第４の乗算手段に出力することを特徴とする暗号演算装置。
【請求項５】
前記第１の期間において、前記第１のデータ列に第５の係数を乗算して第９の乗算結果を出力し、前記第２の期間において、前記分割手段から入力されたデータ列に該第５の係数を乗算して第１０の乗算結果を出力する第５の乗算手段と、
前記第１の期間において、前記第２のデータ列に第６の係数を乗算して第１１の乗算結果を出力し、前記第２の期間において、前記分割手段から入力されたデータ列に該第６の係数を乗算して第１２の乗算結果を出力する第６の乗算手段と、
前記第１の期間において、前記第１のデータ列に第７の係数を乗算して第１３の乗算結果を出力し、前記第２の期間において、前記分割手段から入力されたデータ列に該第７の係数を乗算して第１４の乗算結果を出力する第７の乗算手段と、
前記第１の期間において、前記第２のデータ列に第８の係数を乗算して第１５の乗算結果を出力し、前記第２の期間において、前記分割手段から入力されたデータ列に該第８の係数を乗算して第１６の乗算結果を出力する第８の乗算手段と、
前記第１の期間において、前記第９、第１１、第１３、および第１５の乗算結果の排他的論理和を出力し、前記第２の期間において、前記第１０、第１２、第１４、および第１
６の乗算結果の排他的論理和を出力する排他的論理和手段とをさらに備え、
前記分割手段は、前記第１の期間において、前記第１、第２、第３、および第４のデータ列をそれぞれ前記第５、第６、第７、および第８の乗算手段に出力し、前記第２の期間において、該第１、第２、第３、および第４のデータ列を前記第１、第２、第３、および第４の乗算手段に出力した順序で該第５、第６、第７、および第８の乗算手段に出力することを特徴とする請求項４記載の暗号演算装置。
【請求項６】
前記分割手段は、第３の期間において、前記第１、第２、第３、および第４のデータ列を前記第１および第２の期間とは異なる順序で前記第１、第２、第３、および第４の乗算手段に出力し、第４の期間において、該第１、第２、第３、および第４のデータ列を該第１、第２、および第３の期間とは異なる順序で該第１、第２、第３、および第４の乗算手段に出力し、
前記第１の乗算手段は、前記第３の期間において、前記分割手段から入力されたデータ列に前記第１の係数を乗算して第９の乗算結果を出力し、前記第４の期間において、前記分割手段から入力されたデータ列に該第１の係数を乗算して第１０の乗算結果を出力し、
前記第２の乗算手段は、前記第３の期間において、前記分割手段から入力されたデータ列に前記第２の係数を乗算して第１１の乗算結果を出力し、前記第４の期間において、前記分割手段から入力されたデータ列に該第２の係数を乗算して第１２の乗算結果を出力し、
前記第３の乗算手段は、前記第３の期間において、前記分割手段から入力されたデータ列に前記第３の係数を乗算して第１３の乗算結果を出力し、前記第４の期間において、前記分割手段から入力されたデータ列に該第３の係数を乗算して第１４の乗算結果を出力し、
前記第４の乗算手段は、前記第３の期間において、前記分割手段から入力されたデータ列に前記第４の係数を乗算して第１５の乗算結果を出力し、前記第４の期間において、前記分割手段から入力されたデータ列に該第４の係数を乗算して第１６の乗算結果を出力し、
前記排他的論理和手段は、前記第３の期間において、前記第９、第１１、第１３、および第１５の乗算結果の排他的論理和を出力し、前記第４の期間において、前記第１０、第１２、第１４、および第１６の乗算結果の排他的論理和を出力することを特徴とする請求項４記載の暗号演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、共通ブロック暗号の業界標準であるＡＥＳ（Advanced Encryption Standard）の暗号演算を行う暗号演算装置に関する。
【背景技術】
【０００２】
図８は、ＦＩＰＳ１９７（Federal Information Processing Standards 197）（例えば、下記の非特許文献１を参照）で規定されているＡＥＳの暗号化アルゴリズムを示しており、図９は、ＡＥＳの復号アルゴリズムを示している。
【０００３】
図８の暗号化アルゴリズムでは、１２８ビットの平文から１２８ビットの暗号文が生成される。秘密鍵の鍵データは、１２８ビット、１９２ビット、または２５６ビットの３種類から選択することができる。
【０００４】
まず、鍵スケジュール８０１を実行することで、鍵データからＮｒ＋１個のラウンド鍵（Ｒｏｕｎｄ  Ｋｅｙ）０〜Ｎｒが生成される。排他的論理和（ＸＯＲ）演算器８０２は、平文とラウンド鍵０のＸＯＲを出力する。
【０００５】
ラウンド処理８０３−ｋ（ｋ＝１，２，．．．，Ｎｒ−１）は、ＢｙｔｅＳｕｂ（バイトサブ）変換、ＳｈｉｆｔＲｏｗ（シフトロウ）変換、ＭｉｘＣｏｌｕｍｎ（ミクスコラム）変換、およびラウンド鍵加算の４種類の処理から構成され、このうち、ラウンド鍵加算においてラウンド鍵ｋが使用される。これらのラウンド処理８０３−１〜８０３−（Ｎｒ−１）により、ＸＯＲ演算器８０２の出力に対して、ラウンド処理がＮｒ−１回繰り返される。
【０００６】
最後のラウンド処理８０３−Ｎｒは、ＢｙｔｅＳｕｂ変換、ＳｈｉｆｔＲｏｗ変換、およびラウンド鍵加算の３種類の処理から構成され、ラウンド処理８０３−（Ｎｒ−１）の出力から暗号文を生成する。このうち、ラウンド鍵加算においてラウンド鍵Ｎｒが使用される。
【０００７】
図９の復号アルゴリズムでは、１２８ビットの暗号文から１２８ビットの平文が生成される。まず、鍵スケジュール９０１を実行することで、鍵データからＮｒ＋１個のラウンド鍵０〜Ｎｒが生成される。ＸＯＲ演算器９０２は、暗号文とラウンド鍵ＮｒのＸＯＲを出力する。
【０００８】
ラウンド処理９０３−ｋ（ｋ＝１，２，．．．，Ｎｒ−１）は、ＩｎｖＳｈｉｆｔＲｏｗ（逆シフトロウ）変換、ＩｎｖＢｙｔｅＳｕｂ（逆バイトサブ）変換、ラウンド鍵加算、およびＩｎｖＭｉｘＣｏｌｕｍｎ（逆ミクスコラム）変換の４種類の処理から構成され、このうち、ラウンド鍵加算においてラウンド鍵ｋが使用される。これらのラウンド処理９０３−（Ｎｒ−１）〜９０３−１により、ＸＯＲ演算器９０２の出力に対して、ラウンド処理がＮｒ−１回繰り返される。
【０００９】
最後のラウンド処理９０３−０は、ＩｎｖＳｈｉｆｔＲｏｗ（逆シフトロウ）変換、ＩｎｖＢｙｔｅＳｕｂ（逆バイトサブ）変換、およびラウンド鍵加算の３種類の処理から構成され、ラウンド処理９０３−１の出力から平文を生成する。このうち、ラウンド鍵加算においてラウンド鍵０が使用される。
【００１０】
スマートカード等にＡＥＳブロック暗号の演算処理を組み込むことを想定した場合、暗
号回路に要求される条件は、一定水準の処理速度を維持しつつ、回路規模を小型化することである。この条件を前提とした場合、図８および図９に示したＡＥＳアルゴリズムのすべてのラウンド処理を１２８ビット単位でハードウェア化する方法では、回路規模が大きすぎて、スマートカードへの搭載が困難となる。
【００１１】
そこで、スマートカードに搭載可能なＡＥＳ暗号回路として、３２ビット単位でラウンド処理の各機能を実現する小型回路の提案等がなされている（例えば、下記の特許文献１を参照）。この小型回路には、図１０に示すような、ＡＥＳアルゴリズムの１ラウンド分の処理を行う基本構成が設けられる。
【００１２】
図１０の基本構成は、セレクタ１００１、１００５、ＢｙｔｅＳｕｂ変換部１００２、ラウンド鍵加算部１００３、１００６、ＭｉｘＣｏｌｕｍｎ変換部１００４、およびＳｈｉｆｔＲｏｗ変換部１００７からなる。
【００１３】
セレクタ１００１は、１２８ビットの入力データからｎビット（例えば、ｎ＝３２）のデータを選択し、セレクタ１００５に出力する。セレクタ１００５は、セレクタ１００１、ＢｙｔｅＳｕｂ変換部１００２、ＭｉｘＣｏｌｕｍｎ変換部１００４、およびＳｈｉｆｔＲｏｗ変換部１００７のいずれかの出力を選択して、ラウンド鍵加算部１００６に出力する。ラウンド鍵加算部１００６は、セレクタ１００５の出力とラウンド鍵またはオール“０”の加算処理を行い、ＳｈｉｆｔＲｏｗ変換部１００７は、ラウンド鍵加算部１００６の出力に対してＳｈｉｆｔＲｏｗ変換を行う。
【００１４】
ＢｙｔｅＳｕｂ変換部１００２は、ＳｈｉｆｔＲｏｗ変換部１００７の出力に対してＢｙｔｅＳｕｂ変換を行い、ラウンド鍵加算部１００３は、ＳｈｉｆｔＲｏｗ変換部１００７の出力とラウンド鍵またはオール“０”の加算処理を行う。ＭｉｘＣｏｌｕｍｎ変換部１００４は、ラウンド鍵加算部１００３の出力に対してＭｉｘＣｏｌｕｍｎ変換を行う。
【００１５】
図１１および図１２は、特許文献１で提案されているＭｉｘＣｏｌｕｍｎ変換回路の構成を示している。このＭｉｘＣｏｌｕｍｎ変換回路は、４つの演算回路１１０１〜１１０４からなり、暗号化処理におけるＭｉｘＣｏｌｕｍｎ変換、または、復号処理におけるＩｎｖＭｉｘＣｏｌｕｍｎ変換を行う。
【００１６】
演算回路１１０１は、それぞれ８ビット単位で乗算を実行する４つの乗算器１１１１（ＭＵＬｅ２）、１１１２（ＭＵＬｂ３）、１１１３（ＭＵＬｄ１）、および１１１４（ＭＵＬ９１）と、これらの乗算器の出力のＸＯＲを計算するＸＯＲ演算器１１１５〜１１１７からなる。
【００１７】
同様に、演算回路１１０２は、乗算器１１２１（ＭＵＬ９１）、１１２２（ＭＵＬｅ２）、１１２３（ＭＵＬｂ３）、および１１２４（ＭＵＬｄ１）と、ＸＯＲ演算器１１２５〜１１２７からなり、演算回路１１０３は、乗算器１１３１（ＭＵＬｄ１）、１１３２（ＭＵＬ９１）、１１３３（ＭＵＬｅ２）、および１１３４（ＭＵＬｂ３）と、ＸＯＲ演算器１１３５〜１１３７からなり、演算回路１１０４は、乗算器１１４１（ＭＵＬｂ３）、１１４２（ＭＵＬｄ１）、１１４３（ＭＵＬ９１）、および１１４４（ＭＵＬｅ２）と、ＸＯＲ演算器１１４５〜１１４７からなる。
【００１８】
乗算係数を２桁の１６進数で表すことにすると、ＭＵＬｅ２は、暗号化処理において入力データに“０２”を乗算し、復号処理において入力データに“０Ｅ”を乗算する。ＭＵＬｂ３は、暗号化処理において入力データに“０３”を乗算し、復号処理において入力データに“０Ｂ”を乗算する。ＭＵＬｄ１は、暗号化処理において入力データに“０１”を乗算し、復号処理において入力データに“０Ｄ”を乗算する。ＭＵＬ９１は、暗号化処理
において入力データに“０１”を乗算し、復号処理において入力データに“０９”を乗算する。
【００１９】
ＭｉｘＣｏｌｕｍｎ変換回路の３２ビットの入力データＩ＿ＤＴ［３１：０］および出力データＯ＿ＤＴ［３１：０］は、次のような８ビットデータａ０〜ａ３およびｂ０〜ｂ３で表される。
【００２０】
ａ０＝Ｉ＿ＤＴ［３１：２４］      （１）
ａ１＝Ｉ＿ＤＴ［２３：１６］      （２）
ａ２＝Ｉ＿ＤＴ［１５：８］        （３）
ａ３＝Ｉ＿ＤＴ［７：０］          （４）
ｂ０＝Ｏ＿ＤＴ［３１：２４］      （５）
ｂ１＝Ｏ＿ＤＴ［２３：１６］      （６）
ｂ２＝Ｏ＿ＤＴ［１５：８］        （７）
ｂ３＝Ｏ＿ＤＴ［７：０］          （８）
このとき、ＭｉｘＣｏｌｕｍｎ変換回路は、（ａ０，ａ１，ａ２，ａ３）で構成されるコラムを（ｂ０，ｂ１，ｂ２，ｂ３）で構成されるコラムに変換する。暗号化処理および復号処理におけるＭｉｘＣｏｌｕｍｎ変換は、それぞれ次式のように表される。
【００２１】
暗号化処理
ｂ０＝０２＊ａ０＋０３＊ａ１＋０１＊ａ２＋０１＊ａ３      （１１）
ｂ１＝０１＊ａ０＋０２＊ａ１＋０３＊ａ２＋０１＊ａ３      （１２）
ｂ２＝０１＊ａ０＋０１＊ａ１＋０２＊ａ２＋０３＊ａ３      （１３）
ｂ３＝０３＊ａ０＋０１＊ａ１＋０１＊ａ２＋０２＊ａ３      （１４）
復号処理
ｂ０＝０Ｅ＊ａ０＋０Ｂ＊ａ１＋０Ｄ＊ａ２＋０９＊ａ３      （１５）
ｂ１＝０９＊ａ０＋０Ｅ＊ａ１＋０Ｂ＊ａ２＋０Ｄ＊ａ３      （１６）
ｂ２＝０Ｄ＊ａ０＋０９＊ａ１＋０Ｅ＊ａ２＋０Ｂ＊ａ３      （１７）
ｂ３＝０Ｂ＊ａ０＋０Ｄ＊ａ１＋０９＊ａ２＋０Ｅ＊ａ３      （１８）
ここで、各項の係数は２桁の１６進数を表し、記号“＊”および“＋”はそれぞれ乗算およびＸＯＲ演算を表す。演算回路１１０１、１１０２、１１０３、および１１０４は、ｂ０、ｂ１、ｂ２、およびｂ３の値をそれぞれ出力する。
【非特許文献１】“Federal Information Processing Standards Publication 197”、［online］、［平成１８年１０月２日検索］、インターネット＜ＵＲＬ： http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf＞
【特許文献１】特開２００３−０１５５２２号公報
【発明の開示】
【発明が解決しようとする課題】
【００２２】
スマートカードは、近年、多機能化およびセキュア化が進み、様々な機能を搭載する必要があるので、ＡＥＳ暗号回路のさらなる小型化を実現することが望まれる。
例えば、スマートカードには、サイドチャネル攻撃と呼ばれる暗号解読法により、秘密鍵等が特定されてしまう脅威がある。このサイドチャネル攻撃には、ＳＰＡ（Single Power Analysis ）やＤＰＡ（Differential Power Analysis ）のような電力解析攻撃および
電磁波解析（ＥＭＡ）攻撃が含まれる。
【００２３】
このサイドチャネル攻撃を防御する機構として、マスク回路や多重Ｓｂｏｘ回路をスマートカードに組み込むと、回路規模が大きくなるため、ＡＥＳ暗号回路の搭載が困難となる。したがって、セキュアなスマートカードを提供できないという問題が発生する。
【００２４】
本発明の課題は、従来のＡＥＳ暗号回路をさらに小型化することである。
【課題を解決するための手段】
【００２５】
図１は、本発明の第１および第２の暗号演算装置の原理図である。
第１の暗号演算装置は、分割手段１０１、第１の乗算手段１０２−１、第２の乗算手段１０２−２、第３の乗算手段１０２−３、第４の乗算手段１０２−４、ラッチ手段１０３、および排他的論理和手段１０４を備える。
【００２６】
分割手段１０１は、入力データ列を第１、第２、第３、および第４のデータ列に分割して出力する。乗算手段１０２−１は、第１の期間において、第１のデータ列に第１の係数を乗算して第１の乗算結果を出力し、第２の期間において、第３のデータ列に第１の係数を乗算して第２の乗算結果を出力する。乗算手段１０２−２は、第１の期間において、第２のデータ列に第２の係数を乗算して第３の乗算結果を出力し、第２の期間において、第４のデータ列に第２の係数を乗算して第４の乗算結果を出力する。
【００２７】
乗算手段１０２−３は、第１の期間において、第１のデータ列に第３の係数を乗算して第５の乗算結果を出力し、第２の期間において、第３のデータ列に第３の係数を乗算して第６の乗算結果を出力する。乗算手段１０２−４は、第１の期間において、第２のデータ列に第４の係数を乗算して第７の乗算結果を出力し、第２の期間において、第４のデータ列に第４の係数を乗算して第８の乗算結果を出力する。
【００２８】
ラッチ手段１０３は、第１の期間において、第１および第３の乗算結果の排他的論理和と、第５および第７の乗算結果の排他的論理和をラッチする。排他的論理和手段１０４は、第２の期間において、第１および第３の乗算結果の排他的論理和と、第６および第８の乗算結果の排他的論理和との排他的論理和を出力し、かつ、第５および第７の乗算結果の排他的論理和と、第２および第４の乗算結果の排他的論理和との排他的論理和を出力する。
【００２９】
第１の期間において、入力データ列のうち第１および第２のデータ列が乗算手段１０２−１および１０２−２にそれぞれ入力され、かつ、第１および第２のデータ列が乗算手段１０２−３および１０２−４にそれぞれ入力される。これを受けて、乗算手段１０２−１〜１０２−４は、第１、第３、第５、および第７の乗算結果をそれぞれ出力し、ラッチ手段１０３は、第１および第３の乗算結果の排他的論理和と、第５および第７の乗算結果の排他的論理和をラッチする。
【００３０】
第２の期間において、入力データ列のうち第３および第４のデータ列が乗算手段１０２−１および１０２−２にそれぞれ入力され、かつ、第３および第４のデータ列が乗算手段１０２−３および１０２−４にそれぞれ入力される。これを受けて、乗算手段１０２−１〜１０２−４は、第２、第４、第６、および第８の乗算結果をそれぞれ出力し、排他的論理和手段１０４は、それらの乗算結果とラッチ手段１０３から出力される２種類の排他的論理和を用いて、第１、第３、第６、および第８の乗算結果の排他的論理和と、第５、第７、第２、および第４の乗算結果の排他的論理和を生成する。
【００３１】
ＡＥＳの暗号化処理におけるミクスコラム変換、または、復号処理における逆ミクスコ
ラム変換の対象となる入力データ列を分割手段１０１に入力すれば、第２の期間において、排他的論理和手段１０４から変換結果の半分に相当する排他的論理和が出力される。
【００３２】
さらに、乗算手段１０２−１〜１０２−４、ラッチ手段１０３、および排他的論理和手段１０４からなる回路と同様の回路を並列に設けるか、または、第３および第４の期間において、第１〜第４のデータ列の順序を変更して乗算手段１０２−１〜１０２−４に入力することで、他の半分の変換結果を得ることができる。前者の場合は、全体として８個の乗算手段を並列に設けるだけでよく、後者の場合は、全体として４個の乗算手段を並列に設けるだけでよい。したがって、１６個の乗算器を並列に設けた従来のＭｉｘＣｏｌｕｍｎ変換回路と比較すると、回路規模が削減される。
【００３３】
第１の暗号演算装置において、分割手段１０１は、例えば、後述する図３のセレクタ３０１または図６のセレクタ６０１に対応し、乗算手段１０２−１〜１０２−４は、例えば、後述する図２の乗算器２１１〜２１４、図３の乗算器３１１〜３１４、または図６の乗算器６１１〜６１４に対応する。
【００３４】
ラッチ手段１０３は、例えば、図２のＸＯＲ回路２１５、図３のＸＯＲ演算器３１５および３１６とフリップフロップ回路３１７および３１８、または図６のＸＯＲ演算器６１５および６１６とフリップフロップ回路６１７および６１８に対応し、排他的論理和手段１０４は、例えば、図２のＸＯＲ回路２１５、図３のＸＯＲ演算器３１９および３２０、または図６のＸＯＲ演算器６１９および６２０に対応する。
【００３５】
第２の暗号演算装置は、分割手段１０１、第１の乗算手段１０２−１、第２の乗算手段１０２−２、第３の乗算手段１０２−３、第４の乗算手段１０２−４、および排他的論理和手段１０４を備える。
【００３６】
分割手段１０１は、入力データ列を第１、第２、第３、および第４のデータ列に分割して出力する。分割手段１０１は、第１の期間において、第１、第２、第３、および第４のデータ列をそれぞれ乗算手段１０２−１、１０２−２、１０２−３、および１０２−４に出力し、第２の期間において、第１、第２、第３、および第４のデータ列を第１の期間とは異なる順序で乗算手段１０２−１、１０２−２、１０２−３、および１０２−４に出力する。
【００３７】
乗算手段１０２−１は、第１の期間において、第１のデータ列に第１の係数を乗算して第１の乗算結果を出力し、第２の期間において、分割手段１０１から入力されたデータ列に第１の係数を乗算して第２の乗算結果を出力する。乗算手段１０２−２は、第１の期間において、第２のデータ列に第２の係数を乗算して第３の乗算結果を出力し、第２の期間において、分割手段１０１から入力されたデータ列に第２の係数を乗算して第４の乗算結果を出力する。
【００３８】
乗算手段１０２−３は、第１の期間において、第３のデータ列に第３の係数を乗算して第５の乗算結果を出力し、第２の期間において、分割手段１０１から入力されたデータ列に第３の係数を乗算して第６の乗算結果を出力する。乗算手段１０２−４は、第１の期間において、第４のデータ列に第４の係数を乗算して第７の乗算結果を出力し、第２の期間において、分割手段１０１から入力されたデータ列に第４の係数を乗算して第８の乗算結果を出力する。
【００３９】
排他的論理和手段１０４は、第１の期間において、第１、第３、第５、および第７の乗算結果の排他的論理和を出力し、第２の期間において、第２、第４、第６、および第８の乗算結果の排他的論理和を出力する。
【００４０】
第１の期間において、第１〜第４のデータ列が乗算手段１０２−１〜１０２−４にそれぞれ入力される。これを受けて、乗算手段１０２−１〜１０２−４は、第１、第３、第５、および第７の乗算結果をそれぞれ出力し、排他的論理和手段１０４は、それらの乗算結果の排他的論理和を生成する。
【００４１】
第２の期間において、第１〜第４のデータ列が第１の期間とは異なる順序で乗算手段１０２−１〜１０２−４に入力される。これを受けて、乗算手段１０２−１〜１０２−４は、第２、第４、第６、および第８の乗算結果をそれぞれ出力し、排他的論理和手段１０４は、それらの乗算結果の排他的論理和を生成する。
【００４２】
ＡＥＳの暗号化処理におけるミクスコラム変換、または、復号処理における逆ミクスコラム変換の対象となる入力データ列を分割手段１０１に入力すれば、第１および第２の期間において、排他的論理和手段１０４から変換結果の１／４に相当する排他的論理和がそれぞれ出力される。
【００４３】
さらに、乗算手段１０２−１〜１０２−４および排他的論理和手段１０４からなる回路と同様の回路を並列に設けるか、または、第３および第４の期間において、第１〜第４のデータ列の順序をさらに変更して乗算手段１０２−１〜１０２−４に入力することで、他の半分の変換結果を得ることができる。したがって、第１の暗号演算装置と同様に、従来のＭｉｘＣｏｌｕｍｎ変換回路よりも回路規模が削減される。
【００４４】
第２の暗号演算装置において、分割手段１０１は、例えば、後述する図４のセレクタ４０１または図７のセレクタ７０１に対応し、乗算手段１０２−１〜１０２−４は、例えば、後述する図２の乗算器２１１〜２１４、図４の乗算器４１１〜４１４、または図７の乗算器７１１〜７１４に対応する。排他的論理和手段１０４は、例えば、図２のＸＯＲ回路２１５、図４のＸＯＲ演算器４１５〜４１７、または図７のＸＯＲ演算器７１５〜７１７に対応する。
【発明の効果】
【００４５】
本発明によれば、ＡＥＳ暗号回路におけるＭｉｘＣｏｌｕｍｎ変換回路が小型化され、よりコンパクトな回路でＡＥＳの暗号化アルゴリズムおよび復号アルゴリズムを実行することが可能になる。したがって、ＡＥＳ暗号回路のスマートカードへの搭載が容易になり、サイドチャネル攻撃防御機能等を組み込んだセキュアな多機能スマートカードを実現することができる。
【発明を実施するための最良の形態】
【００４６】
以下、図面を参照しながら、本発明を実施するための最良の形態を詳細に説明する。
図２は、ＡＥＳ暗号回路における第１のＭｉｘＣｏｌｕｍｎ変換回路の構成を示している。図２のＭｉｘＣｏｌｕｍｎ変換回路は、２つの演算回路２０１および２０２からなる。演算回路２０１は、それぞれ８ビット単位で乗算を実行する４つの乗算器２１１（ＭＵＬｅ２）、２１２（ＭＵＬｂ３）、２１３（ＭＵＬｄ１）、および２１４（ＭＵＬ９１）と、これらの乗算器の出力のＸＯＲを計算するＸＯＲ回路２１５からなる。ＸＯＲ回路２１５は、バッファ（フリップフロップ回路）やＸＯＲ演算器を備える。同様に、演算回路２０２も４つの乗算器とＸＯＲ回路からなる。
【００４７】
図１１および図１２に示した従来のＭｉｘＣｏｌｕｍｎ変換回路では、４つの乗算器（ＭＵＬｅ２，ＭＵＬｂ３，ＭＵＬｄ１，ＭＵＬ９１）と３つのＸＯＲ演算器から構成される演算回路を４個並列に設けており、３２ビットデータを１サイクルで処理する構成となっている。これに対して、図２のＭｉｘＣｏｌｕｍｎ変換回路では、４つの乗算器とＸＯ
Ｒ回路から構成される演算回路を２個並列に設けており、３２ビットデータを２サイクルで処理する構成となっている。
【００４８】
図３は、図２のＭｉｘＣｏｌｕｍｎ変換回路の具体例（第２のＭｉｘＣｏｌｕｍｎ変換回路）を示している。図３のＭｉｘＣｏｌｕｍｎ変換回路は、セレクタ３０１と２つの演算回路３０２および３０３からなる。
【００４９】
演算回路３０２は、４つの乗算器３１１（ＭＵＬｅ２）、３１２（ＭＵＬｂ３）、３１３（ＭＵＬｄ１）、および３１４（ＭＵＬ９１）と、４つのＸＯＲ演算器３１５、３１６、３１９、および３２０と、２つのフリップフロップ回路３１７および３１８からなる。演算回路３０３は、４つの乗算器３２１（ＭＵＬ９１）、３２２（ＭＵＬｅ２）、３２３（ＭＵＬｂ３）、および３２４（ＭＵＬｄ１）と、４つのＸＯＲ演算器３２５、３２６、３２９、および３３０と、２つのフリップフロップ回路３２７および３２８からなる。
【００５０】
最初のサイクルでは、選択信号ｈｃとして“０”が入力され、次のサイクルでは、選択信号ｈｃとして“１”が入力される。
セレクタ３０１は、３２ビットの入力データＩ＿ＤＴ［３１：０］を、上位１６ビットＩ＿ＤＴ［３１：１６］と下位１６ビットＩ＿ＤＴ［１５：０］に分割する。そして、選択信号ｈｃが“０”のとき、Ｉ＿ＤＴ［３１：１６］を１６ビットの入力データＩ’＿ＤＴ［１５：０］として出力し、選択信号ｈｃが“１”のとき、Ｉ＿ＤＴ［１５：０］をＩ’＿ＤＴ［１５：０］として出力する。
【００５１】
Ｉ’＿ＤＴ［１５：０］の上位８ビットＩ’＿ＤＴ［１５：８］は、演算回路３０２の乗算器３１１、３１３と演算回路３０３の乗算器３２１、３２３に入力され、Ｉ’＿ＤＴ［１５：０］の下位８ビットＩ’＿ＤＴ［７：０］は、演算回路３０２の乗算器３１２、３１４と演算回路３０３の乗算器３２２、３２４に入力される。
【００５２】
ＸＯＲ演算器３１５は、乗算器３１１および３１２の出力のＸＯＲを出力し、ＸＯＲ演算器３１６は、乗算器３１３および３１４の出力のＸＯＲを出力する。フリップフロップ回路３１７および３１８は、最初のサイクルでＸＯＲ演算器３１５および３１６の出力をそれぞれラッチし、次のサイクルでラッチされたデータを出力する。
【００５３】
ＸＯＲ演算器３１９は、ＸＯＲ演算器３１６およびフリップフロップ回路３１７の出力のＸＯＲを、８ビットのデータＤＴ［３１：２４］として出力する。ＸＯＲ演算器３２０は、ＸＯＲ演算器３１５およびフリップフロップ回路３１８の出力のＸＯＲを、８ビットのデータＤＴ［１５：８］として出力する。
【００５４】
ＸＯＲ演算器３２５は、乗算器３２１および３２２の出力のＸＯＲを出力し、ＸＯＲ演算器３２６は、乗算器３２３および３２４の出力のＸＯＲを出力する。フリップフロップ回路３２７および３２８は、最初のサイクルでＸＯＲ演算器３２５および３２６の出力をそれぞれラッチし、次のサイクルでラッチされたデータを出力する。
【００５５】
ＸＯＲ演算器３２９は、ＸＯＲ演算器３２６およびフリップフロップ回路３２７の出力のＸＯＲを、８ビットのデータＤＴ［２３：１６］として出力する。ＸＯＲ演算器３３０は、ＸＯＲ演算器３２５およびフリップフロップ回路３２８の出力のＸＯＲを、８ビットのデータＤＴ［７：０］として出力する。
【００５６】
こうして得られた４つの８ビットデータＤＴ［３１：２４］、ＤＴ［２３：１６］、ＤＴ［１５：８］、およびＤＴ［７：０］が結合され、３２ビットの出力データＯ＿ＤＴ［３１：０］として出力される。
【００５７】
Ｉ＿ＤＴ［３１：０］およびＯ＿ＤＴ［３１：０］を（１）〜（８）式の８ビットデータａ０〜ａ３およびｂ０〜ｂ３で表すと、暗号化処理における最初のサイクルにおいて、（１１）、（１２）、（１３）、および（１４）式の第１項および第２項のＸＯＲが、フリップフロップ回路３１７、３２７、３１８、および３２８にそれぞれラッチされる。そして、次のサイクルにおいて、（１１）〜（１４）式のｂ０、ｂ１、ｂ２、およびｂ３の値が、それぞれＤＴ［３１：２４］、ＤＴ［２３：１６］、ＤＴ［１５：８］、およびＤＴ［７：０］として出力される。
【００５８】
また、復号処理における最初のサイクルにおいて、（１５）、（１６）、（１７）、および（１８）式の第１項および第２項のＸＯＲが、フリップフロップ回路３１７、３２７、３１８、および３２８にそれぞれラッチされる。そして、次のサイクルにおいて、（１５）〜（１８）式のｂ０、ｂ１、ｂ２、およびｂ３の値が、それぞれＤＴ［３１：２４］、ＤＴ［２３：１６］、ＤＴ［１５：８］、およびＤＴ［７：０］として出力される。
【００５９】
したがって、次のサイクルにおける出力データＯ＿ＤＴ［３１：０］が、ＭｉｘＣｏｌｕｍｎ変換の演算結果として採用され、最初のサイクルの出力データＯ＿ＤＴ［３１：０］は無視される。
【００６０】
図４は、図２のＭｉｘＣｏｌｕｍｎ変換回路の別の具体例（第３のＭｉｘＣｏｌｕｍｎ変換回路）を示している。図４のＭｉｘＣｏｌｕｍｎ変換回路は、セレクタ４０１および４０４と、２つの演算回路４０２および４０３からなる。
【００６１】
演算回路４０２は、４つの乗算器４１１（ＭＵＬｅ２）、４１２（ＭＵＬｂ３）、４１３（ＭＵＬｄ１）、および４１４（ＭＵＬ９１）と、３つのＸＯＲ演算器４１５、４１６、および４１７からなる。演算回路４０３は、４つの乗算器４２１（ＭＵＬ９１）、４２２（ＭＵＬｅ２）、４２３（ＭＵＬｂ３）、および４２４（ＭＵＬｄ１）と、３つのＸＯＲ演算器４２５、４２６、および４２７からなる。
【００６２】
最初のサイクルでは、選択信号ｈｃとして“０”が入力され、次のサイクルでは、選択信号ｈｃとして“１”が入力される。
セレクタ４０１は、３２ビットの入力データＩ＿ＤＴ［３１：０］を８ビット単位で切り替える。具体的には、選択信号ｈｃが“０”のとき、Ｉ＿ＤＴ［３１：２４］を乗算器４１１および４２１に出力し、Ｉ＿ＤＴ［２３：１６］を乗算器４１２および４２２に出力し、Ｉ＿ＤＴ［１５：８］を乗算器４１３および４２３に出力し、Ｉ＿ＤＴ［７：０］を乗算器４１４および４２４に出力する。
【００６３】
また、選択信号ｈｃが“１”のとき、Ｉ＿ＤＴ［３１：２４］を乗算器４１３および４２３に出力し、Ｉ＿ＤＴ［２３：１６］を乗算器４１４および４２４に出力し、Ｉ＿ＤＴ［１５：８］を乗算器４１１および４２１に出力し、Ｉ＿ＤＴ［７：０］を乗算器４１２および４２２に出力する。
【００６４】
ＸＯＲ演算器４１５は、乗算器４１１および４１２の出力のＸＯＲを出力し、ＸＯＲ演算器４１６は、乗算器４１３および４１４の出力のＸＯＲを出力する。ＸＯＲ演算器４１７は、ＸＯＲ演算器４１５および４１６の出力のＸＯＲを、８ビットのデータＤＴ［１５：８］として出力する。
【００６５】
ＸＯＲ演算器４２５は、乗算器４２１および４２２の出力のＸＯＲを出力し、ＸＯＲ演算器４２６は、乗算器４２３および４２４の出力のＸＯＲを出力する。ＸＯＲ演算器４２７は、ＸＯＲ演算器４２５および４２６の出力のＸＯＲを、８ビットのデータＤＴ［７：
０］として出力する。ＤＴ［１５：８］およびＤＴ［７：０］は結合されて、セレクタ４０４に入力される。
【００６６】
セレクタ４０４は、１６ビットのデータＤＴ［１５：０］を、３２ビットの出力データＯ＿ＤＴ［３１：０］の上位１６ビットまたは下位１６ビットに切り替える。具体的には、選択信号ｈｃが“０”のとき、ＤＴ［１５：０］をＯ＿ＤＴ［３１：０］の上位１６ビットＯ＿ＤＴ［３１：１６］として出力し、選択信号ｈｃが“１”のとき、ＤＴ［１５：０］をＯ＿ＤＴ［３１：０］の下位１６ビットＯ＿ＤＴ［１５：０］として出力する。
【００６７】
このようなＭｉｘＣｏｌｕｍｎ変換回路によれば、暗号化処理における最初のサイクルにおいて、（１１）および（１２）式のｂ０およびｂ１の値が、それぞれＤＴ［１５：８］およびＤＴ［７：０］として出力され、それらが結合されてＯ＿ＤＴ［３１：１６］として出力される。そして、次のサイクルにおいて、（１３）および（１４）式のｂ２およびｂ３の値が、それぞれＤＴ［１５：８］およびＤＴ［７：０］として出力され、それらが結合されてＯ＿ＤＴ［１５：０］として出力される。
【００６８】
また、復号処理における最初のサイクルにおいて、（１５）および（１６）式のｂ０およびｂ１の値が、それぞれＤＴ［１５：８］およびＤＴ［７：０］として出力され、それらが結合されてＯ＿ＤＴ［３１：１６］として出力される。そして、次のサイクルにおいて、（１７）および（１８）式のｂ２およびｂ３の値が、それぞれＤＴ［１５：８］およびＤＴ［７：０］として出力され、それらが結合されてＯ＿ＤＴ［１５：０］として出力される。
【００６９】
なお、最初のサイクルで選択信号ｈｃとして“１”を入力し、次のサイクルで選択信号ｈｃとして“０”を入力しても、同様の変換結果を得ることができる。
図５は、図１１および図１２のＭｉｘＣｏｌｕｍｎ変換回路、図３のＭｉｘＣｏｌｕｍｎ変換回路、および図４のＭｉｘＣｏｌｕｍｎ変換回路の回路規模を比較した結果を示している。従来構成（図１１および図１２）のゲート数が１３００個程度であるのに対して、第２の構成（図３）および第３の構成（図４）のゲート数は、それぞれ次のように見積もることができる。
・第２の構成
各演算回路のうち、従来の演算回路（乗算器等）に相当するゲート数：２７０個
セレクタ：１ビット当たり３個
ＸＯＲ演算器：１ビット当たり２個
フリップフロップ回路：１ビット当たり１３個
回路全体：２７０×２＋３×３２＋２×８×８＋１３×８×４＝１１４８
・第３の構成
各演算回路のうち、従来の演算回路（乗算器等）に相当するゲート数：２７０個
セレクタ：１ビット当たり３個
ＸＯＲ演算器：１ビット当たり２個
回路全体：２７０×２＋３×３２×２＋２×８×６＝８２８
したがって、第２の構成では、従来構成より回路規模が約１０％削減されており、第３の構成では、従来構成より回路規模が約３０％削減されている。
【００７０】
次に、図６および図７を参照しながら、単一の演算回路により３２ビットデータを４サイクルで処理する構成について説明する。
図６は、ＡＥＳ暗号回路における第４のＭｉｘＣｏｌｕｍｎ変換回路の構成を示している。図６のＭｉｘＣｏｌｕｍｎ変換回路は、セレクタ６０１および６０３と演算回路６０２からなる。
【００７１】
演算回路６０２は、４つの乗算器６１１（ＭＵＬｅ２）、６１２（ＭＵＬｂ３）、６１３（ＭＵＬｄ１）、および６１４（ＭＵＬ９１）と、４つのＸＯＲ演算器６１５、６１６、６１９、および６２０と、２つのフリップフロップ回路６１７および６１８からなる。
【００７２】
第１のサイクルでは、選択信号ｈｃとして“０”が入力され、第２のサイクルでは、選択信号ｈｃとして“１”が入力され、第３のサイクルでは、選択信号ｈｃとして“２”が入力され、第４のサイクルでは、選択信号ｈｃとして“３”が入力される。
【００７３】
セレクタ６０１は、３２ビットの入力データＩ＿ＤＴ［３１：０］を、４つの８ビットデータＩ＿ＤＴ［３１：２４］、Ｉ＿ＤＴ［２３：１６］、Ｉ＿ＤＴ［１５：８］、およびＩ＿ＤＴ［７：０］に分割する。そして、選択信号ｈｃの値に応じて、これらの８ビットデータを次のように出力する。
・ｈｃ＝０
Ｉ＿ＤＴ［３１：２４］→乗算器６１１および６１３
Ｉ＿ＤＴ［２３：１６］→乗算器６１２および６１４
・ｈｃ＝１
Ｉ＿ＤＴ［１５：８］  →乗算器６１１および６１３
Ｉ＿ＤＴ［７：０］    →乗算器６１２および６１４
・ｈｃ＝２
Ｉ＿ＤＴ［２３：１６］→乗算器６１１および６１３
Ｉ＿ＤＴ［１５：８］  →乗算器６１２および６１４
・ｈｃ＝３
Ｉ＿ＤＴ［７：０］    →乗算器６１１および６１３
Ｉ＿ＤＴ［３１：２４］→乗算器６１２および６１４
ＸＯＲ演算器６１５、６１６、６１９、および６２０とフリップフロップ回路６１７および６１８の動作については、図３のＸＯＲ演算器３１５、３１６、３１９、および３２０とフリップフロップ回路３１７および３１８と同様である。ＸＯＲ演算器６１９は、演算結果を８ビットのデータＤＴ１［７：０］として出力し、ＸＯＲ演算器６２０は、演算結果を８ビットのデータＤＴ２［７：０］として出力する。
【００７４】
セレクタ６０３は、ＤＴ１［７：０］およびＤＴ２［７：０］を、３２ビットの出力データＯ＿ＤＴ［３１：０］のＯ＿ＤＴ［３１：２４］、Ｏ＿ＤＴ［２３：１６］、Ｏ＿ＤＴ［１５：８］、またはＯ＿ＤＴ［７：０］に切り替える。
【００７５】
具体的には、選択信号ｈｃが“１”のとき、ＤＴ１［７：０］およびＤＴ２［７：０］をそれぞれＯ＿ＤＴ［３１：２４］およびＯ＿ＤＴ［１５：８］として出力し、選択信号ｈｃが“３”のとき、ＤＴ１［７：０］およびＤＴ２［７：０］をそれぞれＯ＿ＤＴ［２３：１６］およびＯ＿ＤＴ［７：０］として出力する。
【００７６】
このようなＭｉｘＣｏｌｕｍｎ変換回路によれば、暗号化処理における第１のサイクルにおいて、（１１）および（１３）式の第１項および第２項のＸＯＲが、フリップフロップ回路６１７および６１８にそれぞれラッチされる。次に、第２のサイクルにおいて、（１１）および（１３）式のｂ０およびｂ２の値が、それぞれＤＴ１［７：０］およびＤＴ２［７：０］として出力される。
【００７７】
次に、第３のサイクルにおいて、（１２）および（１４）式の第２項および第３項のＸＯＲが、フリップフロップ回路６１７および６１８にそれぞれラッチされる。そして、第４のサイクルにおいて、（１２）および（１４）式のｂ１およびｂ３の値が、それぞれＤＴ１［７：０］およびＤＴ２［７：０］として出力される。
【００７８】
また、復号処理における第１のサイクルにおいて、（１５）および（１７）式の第１項および第２項のＸＯＲが、フリップフロップ回路６１７および６１８にそれぞれラッチされる。次に、第２のサイクルにおいて、（１５）および（１７）式のｂ０およびｂ２の値が、それぞれＤＴ１［７：０］およびＤＴ２［７：０］として出力される。
【００７９】
次に、第３のサイクルにおいて、（１６）および（１８）式の第２項および第３項のＸＯＲが、フリップフロップ回路６１７および６１８にそれぞれラッチされる。そして、第４のサイクルにおいて、（１６）および（１８）式のｂ１およびｂ３の値が、それぞれＤＴ１［７：０］およびＤＴ２［７：０］として出力される。
【００８０】
したがって、第２のサイクルにおける出力データＯ＿ＤＴ［３１：２４］およびＯ＿ＤＴ［１５：８］と、第４のサイクルにおける出力データＯ＿ＤＴ［２３：１６］およびＯ＿ＤＴ［７：０］が、ＭｉｘＣｏｌｕｍｎ変換の演算結果として採用される。そして、第１のサイクルおよび第３のサイクルの出力データＯ＿ＤＴ［３１：０］は無視される。
【００８１】
なお、第１のサイクルで選択信号ｈｃとして“２”を入力し、第２のサイクルで選択信号ｈｃとして“３”を入力し、第３のサイクルで選択信号ｈｃとして“０”を入力し、第４のサイクルで選択信号ｈｃとして“１”を入力しても、同様の変換結果を得ることができる。
【００８２】
図７は、ＡＥＳ暗号回路における第５のＭｉｘＣｏｌｕｍｎ変換回路の構成を示している。図７のＭｉｘＣｏｌｕｍｎ変換回路は、セレクタ７０１および７０３と演算回路７０２からなる。
【００８３】
演算回路７０２は、４つの乗算器７１１（ＭＵＬｅ２）、７１２（ＭＵＬｂ３）、７１３（ＭＵＬｄ１）、および７１４（ＭＵＬ９１）と、３つのＸＯＲ演算器７１５、７１６、および７１７からなる。
【００８４】
第１のサイクルでは、選択信号ｈｃとして“０”が入力され、第２のサイクルでは、選択信号ｈｃとして“１”が入力され、第３のサイクルでは、選択信号ｈｃとして“２”が入力され、第４のサイクルでは、選択信号ｈｃとして“３”が入力される。
【００８５】
セレクタ７０１は、３２ビットの入力データＩ＿ＤＴ［３１：０］を、４つの８ビットデータＩ＿ＤＴ［３１：２４］、Ｉ＿ＤＴ［２３：１６］、Ｉ＿ＤＴ［１５：８］、およびＩ＿ＤＴ［７：０］に分割する。そして、選択信号ｈｃの値に応じて、これらの８ビットデータを次のように出力する。
・ｈｃ＝０
Ｉ＿ＤＴ［３１：２４］→乗算器７１１
Ｉ＿ＤＴ［２３：１６］→乗算器７１２
Ｉ＿ＤＴ［１５：８］  →乗算器７１３
Ｉ＿ＤＴ［７：０］    →乗算器７１４
・ｈｃ＝１
Ｉ＿ＤＴ［３１：２４］→乗算器７１４
Ｉ＿ＤＴ［２３：１６］→乗算器７１１
Ｉ＿ＤＴ［１５：８］  →乗算器７１２
Ｉ＿ＤＴ［７：０］    →乗算器７１３
・ｈｃ＝２
Ｉ＿ＤＴ［３１：２４］→乗算器７１３
Ｉ＿ＤＴ［２３：１６］→乗算器７１４
Ｉ＿ＤＴ［１５：８］  →乗算器７１１
Ｉ＿ＤＴ［７：０］    →乗算器７１２
・ｈｃ＝３
Ｉ＿ＤＴ［３１：２４］→乗算器７１２
Ｉ＿ＤＴ［２３：１６］→乗算器７１３
Ｉ＿ＤＴ［１５：８］  →乗算器７１４
Ｉ＿ＤＴ［７：０］    →乗算器７１１
ＸＯＲ演算器７１５〜７１７の動作については、図４のＸＯＲ演算器４１５〜４１７と同様である。ＸＯＲ演算器７１７は、演算結果を８ビットのデータＤＴ［７：０］として出力する。
【００８６】
セレクタ７０３は、ＤＴ［７：０］を、３２ビットの出力データＯ＿ＤＴ［３１：０］のＯ＿ＤＴ［３１：２４］、Ｏ＿ＤＴ［２３：１６］、Ｏ＿ＤＴ［１５：８］、またはＯ＿ＤＴ［７：０］に切り替える。
【００８７】
具体的には、選択信号ｈｃが“０”のとき、ＤＴ［７：０］をＯ＿ＤＴ［３１：２４］として出力し、選択信号ｈｃが“１”のとき、ＤＴ［７：０］をＯ＿ＤＴ［２３：１６］として出力し、選択信号ｈｃが“２”のとき、ＤＴ［７：０］をＯ＿ＤＴ［１５：８］として出力し、選択信号ｈｃが“３”のとき、ＤＴ［７：０］をＯ＿ＤＴ［７：０］として出力する。
【００８８】
このようなＭｉｘＣｏｌｕｍｎ変換回路によれば、暗号化処理における第１のサイクルにおいて、（１１）式のｂ０の値がＯ＿ＤＴ［３１：２４］として出力され、第２のサイクルにおいて、（１２）式のｂ１の値がＯ＿ＤＴ［２３：１６］として出力され、第３のサイクルにおいて、（１３）式のｂ２の値がＯ＿ＤＴ［１５：８］として出力され、第４のサイクルにおいて、（１４）式のｂ３の値がＯ＿ＤＴ［７：０］として出力される。
【００８９】
また、復号処理における第１のサイクルにおいて、（１５）式のｂ０の値がＯ＿ＤＴ［３１：２４］として出力され、第２のサイクルにおいて、（１６）式のｂ１の値がＯ＿ＤＴ［２３：１６］として出力され、第３のサイクルにおいて、（１７）式のｂ２の値がＯ＿ＤＴ［１５：８］として出力され、第４のサイクルにおいて、（１８）式のｂ３の値がＯ＿ＤＴ［７：０］として出力される。
【００９０】
なお、第１〜第４のサイクルにおいて選択信号ｈｃとして入力される値“０”〜“３”の順序を入れ替えても、同様の変換結果を得ることができる。
図６および図７のＭｉｘＣｏｌｕｍｎ変換回路によれば、図３および図４のＭｉｘＣｏｌｕｍｎ変換回路と比較して回路規模がさらに削減される。
【００９１】
（付記１）入力データ列を第１、第２、第３、および第４のデータ列に分割して出力する分割手段と、
第１の期間において、前記第１のデータ列に第１の係数を乗算して第１の乗算結果を出力し、第２の期間において、前記第３のデータ列に該第１の係数を乗算して第２の乗算結果を出力する第１の乗算手段と、
前記第１の期間において、前記第２のデータ列に第２の係数を乗算して第３の乗算結果を出力し、前記第２の期間において、前記第４のデータ列に該第２の係数を乗算して第４の乗算結果を出力する第２の乗算手段と、
前記第１の期間において、前記第１のデータ列に第３の係数を乗算して第５の乗算結果を出力し、前記第２の期間において、前記第３のデータ列に該第３の係数を乗算して第６の乗算結果を出力する第３の乗算手段と、
前記第１の期間において、前記第２のデータ列に第４の係数を乗算して第７の乗算結果を出力し、前記第２の期間において、前記第４のデータ列に該第４の係数を乗算して第８
の乗算結果を出力する第４の乗算手段と、
前記第１の期間において、前記第１および第３の乗算結果の排他的論理和と、前記第５および第７の乗算結果の排他的論理和をラッチするラッチ手段と、
前記第２の期間において、前記第１および第３の乗算結果の排他的論理和と、前記第６および第８の乗算結果の排他的論理和との排他的論理和を出力し、かつ、前記第５および第７の乗算結果の排他的論理和と、前記第２および第４の乗算結果の排他的論理和との排他的論理和を出力する排他的論理和手段と
を備えることを特徴とする暗号演算装置。
（付記２）前記第１の期間において、前記第１のデータ列に第５の係数を乗算して第９の乗算結果を出力し、前記第２の期間において、前記第３のデータ列に該第５の係数を乗算して第１０の乗算結果を出力する第５の乗算手段と、
前記第１の期間において、前記第２のデータ列に第６の係数を乗算して第１１の乗算結果を出力し、前記第２の期間において、前記第４のデータ列に該第６の係数を乗算して第１２の乗算結果を出力する第６の乗算手段と、
前記第１の期間において、前記第１のデータ列に第７の係数を乗算して第１３の乗算結果を出力し、前記第２の期間において、前記第３のデータ列に該第７の係数を乗算して第１４の乗算結果を出力する第７の乗算手段と、
前記第１の期間において、前記第２のデータ列に第８の係数を乗算して第１５の乗算結果を出力し、前記第２の期間において、前記第４のデータ列に該第８の係数を乗算して第１６の乗算結果を出力する第８の乗算手段と、
前記第１の期間において、前記第９および第１１の乗算結果の排他的論理和と、前記第１３および第１５の乗算結果の排他的論理和をラッチするラッチ手段と、
前記第２の期間において、前記第９および第１１の乗算結果の排他的論理和と、前記第１４および第１６の乗算結果の排他的論理和との排他的論理和を出力し、かつ、前記第１３および第１５の乗算結果の排他的論理和と、前記第１０および第１２の乗算結果の排他的論理和との排他的論理和を出力する排他的論理和手段と
をさらに備えることを特徴とする付記１記載の暗号演算装置。
（付記３）前記第１の乗算手段は、第３の期間において、前記第２のデータ列に前記第１の係数を乗算して第９の乗算結果を出力し、第４の期間において、前記第４のデータ列に該第１の係数を乗算して第１０の乗算結果を出力し、
前記第２の乗算手段は、前記第３の期間において、前記第３のデータ列に前記第２の係数を乗算して第１１の乗算結果を出力し、前記第４の期間において、前記第１のデータ列に該第２の係数を乗算して第１２の乗算結果を出力し、
前記第３の乗算手段は、前記第３の期間において、前記第２のデータ列に前記第３の係数を乗算して第１３の乗算結果を出力し、前記第４の期間において、前記第４のデータ列に該第３の係数を乗算して第１４の乗算結果を出力し、
前記第４の乗算手段は、前記第３の期間において、前記第３のデータ列に前記第４の係数を乗算して第１５の乗算結果を出力し、前記第４の期間において、前記第１のデータ列に該第４の係数を乗算して第１６の乗算結果を出力し、
前記ラッチ手段は、前記第３の期間において、前記第９および第１１の乗算結果の排他的論理和と、前記第１３および第１５の乗算結果の排他的論理和をラッチし、
前記排他的論理和手段は、前記第４の期間において、前記第９および第１１の乗算結果の排他的論理和と、前記第１４および第１６の乗算結果の排他的論理和との排他的論理和を出力し、かつ、前記第１３および第１５の乗算結果の排他的論理和と、前記第１０および第１２の乗算結果の排他的論理和との排他的論理和を出力することを特徴とする付記１記載の暗号演算装置。
（付記４）入力データ列を第１、第２、第３、および第４のデータ列に分割して出力する分割手段と、
第１の期間において、前記第１のデータ列に第１の係数を乗算して第１の乗算結果を出力し、第２の期間において、前記分割手段から入力されたデータ列に該第１の係数を乗算
して第２の乗算結果を出力する第１の乗算手段と、
前記第１の期間において、前記第２のデータ列に第２の係数を乗算して第３の乗算結果を出力し、前記第２の期間において、前記分割手段から入力されたデータ列に該第２の係数を乗算して第４の乗算結果を出力する第２の乗算手段と、
前記第１の期間において、前記第３のデータ列に第３の係数を乗算して第５の乗算結果を出力し、前記第２の期間において、前記分割手段から入力されたデータ列に該第３の係数を乗算して第６の乗算結果を出力する第３の乗算手段と、
前記第１の期間において、前記第４のデータ列に第４の係数を乗算して第７の乗算結果を出力し、前記第２の期間において、前記分割手段から入力されたデータ列に該第４の係数を乗算して第８の乗算結果を出力する第４の乗算手段と、
前記第１の期間において、前記第１、第３、第５、および第７の乗算結果の排他的論理和を出力し、前記第２の期間において、前記第２、第４、第６、および第８の乗算結果の排他的論理和を出力する排他的論理和手段とを備え、
前記分割手段は、前記第１の期間において、前記第１、第２、第３、および第４のデータ列をそれぞれ前記第１、第２、第３、および第４の乗算手段に出力し、前記第２の期間において、該第１、第２、第３、および第４のデータ列を該第１の期間とは異なる順序で該第１、第２、第３、および第４の乗算手段に出力することを特徴とする暗号演算装置。（付記５）前記第１の期間において、前記第１のデータ列に第５の係数を乗算して第９の乗算結果を出力し、前記第２の期間において、前記分割手段から入力されたデータ列に該第５の係数を乗算して第１０の乗算結果を出力する第５の乗算手段と、
前記第１の期間において、前記第２のデータ列に第６の係数を乗算して第１１の乗算結果を出力し、前記第２の期間において、前記分割手段から入力されたデータ列に該第６の係数を乗算して第１２の乗算結果を出力する第６の乗算手段と、
前記第１の期間において、前記第１のデータ列に第７の係数を乗算して第１３の乗算結果を出力し、前記第２の期間において、前記分割手段から入力されたデータ列に該第７の係数を乗算して第１４の乗算結果を出力する第７の乗算手段と、
前記第１の期間において、前記第２のデータ列に第８の係数を乗算して第１５の乗算結果を出力し、前記第２の期間において、前記分割手段から入力されたデータ列に該第８の係数を乗算して第１６の乗算結果を出力する第８の乗算手段と、
前記第１の期間において、前記第９、第１１、第１３、および第１５の乗算結果の排他的論理和を出力し、前記第２の期間において、前記第１０、第１２、第１４、および第１６の乗算結果の排他的論理和を出力する排他的論理和手段とをさらに備え、
前記分割手段は、前記第１の期間において、前記第１、第２、第３、および第４のデータ列をそれぞれ前記第５、第６、第７、および第８の乗算手段に出力し、前記第２の期間において、該第１、第２、第３、および第４のデータ列を前記第１、第２、第３、および第４の乗算手段に出力した順序で該第５、第６、第７、および第８の乗算手段に出力することを特徴とする付記４記載の暗号演算装置。
（付記６）前記分割手段は、第３の期間において、前記第１、第２、第３、および第４のデータ列を前記第１および第２の期間とは異なる順序で前記第１、第２、第３、および第４の乗算手段に出力し、第４の期間において、該第１、第２、第３、および第４のデータ列を該第１、第２、および第３の期間とは異なる順序で該第１、第２、第３、および第４の乗算手段に出力し、
前記第１の乗算手段は、前記第３の期間において、前記分割手段から入力されたデータ列に前記第１の係数を乗算して第９の乗算結果を出力し、前記第４の期間において、前記分割手段から入力されたデータ列に該第１の係数を乗算して第１０の乗算結果を出力し、
前記第２の乗算手段は、前記第３の期間において、前記分割手段から入力されたデータ列に前記第２の係数を乗算して第１１の乗算結果を出力し、前記第４の期間において、前記分割手段から入力されたデータ列に該第２の係数を乗算して第１２の乗算結果を出力し、
前記第３の乗算手段は、前記第３の期間において、前記分割手段から入力されたデータ
列に前記第３の係数を乗算して第１３の乗算結果を出力し、前記第４の期間において、前記分割手段から入力されたデータ列に該第３の係数を乗算して第１４の乗算結果を出力し、
前記第４の乗算手段は、前記第３の期間において、前記分割手段から入力されたデータ列に前記第４の係数を乗算して第１５の乗算結果を出力し、前記第４の期間において、前記分割手段から入力されたデータ列に該第４の係数を乗算して第１６の乗算結果を出力し、
前記排他的論理和手段は、前記第３の期間において、前記第９、第１１、第１３、および第１５の乗算結果の排他的論理和を出力し、前記第４の期間において、前記第１０、第１２、第１４、および第１６の乗算結果の排他的論理和を出力することを特徴とする付記４記載の暗号演算装置。
（付記７）前記分割手段は、暗号化処理におけるミクスコラム変換、または、復号処理における逆ミクスコラム変換の対象となる入力データ列を分割し、前記排他的論理和手段は、該ミクスコラム変換または逆ミクスコラム変換の変換結果である排他的論理和を出力することを特徴とする付記１乃至６のいずれかに記載の暗号演算装置。
【図面の簡単な説明】
【００９２】
【図１】本発明の暗号演算装置の原理図である。
【図２】第１のＭｉｘＣｏｌｕｍｎ変換回路の構成図である。
【図３】第２のＭｉｘＣｏｌｕｍｎ変換回路の構成図である。
【図４】第３のＭｉｘＣｏｌｕｍｎ変換回路の構成図である。
【図５】ＭｉｘＣｏｌｕｍｎ変換回路の回路規模の比較を示す図である。
【図６】第４のＭｉｘＣｏｌｕｍｎ変換回路の構成図である。
【図７】第５のＭｉｘＣｏｌｕｍｎ変換回路の構成図である。
【図８】ＡＥＳ暗号化アルゴリズムを示す図である。
【図９】ＡＥＳ復号アルゴリズムを示す図である。
【図１０】ラウンド処理の基本構成を示す図である。
【図１１】従来のＭｉｘＣｏｌｕｍｎ変換回路の構成図である。
【図１２】従来のＭｉｘＣｏｌｕｍｎ変換回路の詳細構成図である。
【符号の説明】
【００９３】
１０１  分割手段
１０２−１  第１の乗算手段
１０２−２  第２の乗算手段
１０２−３  第３の乗算手段
１０２−４  第４の乗算手段
１０３  ラッチ手段
１０４  排他的論理和手段
２０１、２０２、３０２、３０３、４０２、４０３、６０２、７０２、１１０１、１１０２、１１０３、１１０４  演算回路
２１１、２１２、２１３、２１４、３１１、３１２、３１３、３１４、３２１、３２２、３２３、３２４、４１１、４１２、４１３、４１４、４２１、４２２、４２３、４２４、６１１、６１２、６１３、６１４、７１１、７１２、７１３、７１４、１１１１、１１１２、１１１３、１１１４、１１２１、１１２２、１１２３、１１２４、１１３１、１１３２、１１３３、１１３４、１１４１、１１４２、１１４３、１１４４  乗算器
２１５  ＸＯＲ回路
３０１、４０１、４０４、６０１、６０３、７０１、７０３、１００１、１００５  セレクタ
３１５、３１６、３１９、３２０、３２５、３２６、３２９、３３０、４１５、４１６、４１７、４２５、４２６、４２７、６１５、６１６、６１９、６２０、７１５、７１６
、７１７、８０２、９０２、１１１５、１１１６、１１１７、１１２５、１１２６、１１２７、１１３５、１１３６、１１３７、１１４５、１１４６、１１４７  ＸＯＲ演算器
３１７、３１８、３２７、３２８、６１７、６１８  フリップフロップ回路
８０１、９０１  鍵スケジュール
８０３−１、８０３−（Ｎｒ−１）、８０３−Ｎｒ、９０３−０、９０３−１、９０３−（Ｎｒ−１）  ラウンド処理
１００２  ＢｙｔｅＳｕｂ変換部
１００３、１００６  ラウンド鍵加算部
１００４  ＭｉｘＣｏｌｕｍｎ変換部
１００７  ＳｈｉｆｔＲｏｗ変換部
【図１】
2008151829.tif 000003
【図２】
2008151829.tif 000004
【図３】
2008151829.tif 000005
【図４】
2008151829.tif 000006
【図５】
2008151829.tif 000007
【図６】
2008151829.tif 000008
【図７】
2008151829.tif 000009
【図８】
2008151829.tif 000010
【図９】
2008151829.tif 000011
【図１０】
2008151829.tif 000012
【図１１】
2008151829.tif 000013
【図１２】
2008151829.tif 000014