(57)【要約】【課題】小型化及び低消費電力化を可能にする暗号装置、暗号処理方法及び暗号処理プログラムを提供することである。【解決手段】実施形態の暗号装置は、共通鍵暗号方式の暗号化及び復号の少なくともいずれかを行う暗号装置であって、第１処理部と、第２処理部と、を備える。第１処理部は、共通鍵を受入れて複数個の拡大鍵を生成する処理を行う。第２処理部は、平文または暗号文を受入れて複数個の拡大鍵を用いた暗号化及び復号の少なくともいずれかの処理を行う。また、第２処理部は、データ配列決定部と、データ演算本体部と、を有する。データ配列決定部は、暗号化時には、平文に含まれる第１データの配列順序を第１順序に決定し、復号時には、暗号文に含まれる第１データの配列順序を第２順序に決定する。データ演算本体部は、決定された順序で、第１データに対し、暗号化及び復号の少なくともいずれかの演算を行う。【選択図】図８
2014240921.tif 000002
【特許請求の範囲】
【請求項１】
共通鍵暗号方式の暗号化及び復号の少なくともいずれかを行う暗号装置であって、
共通鍵を受入れて複数個の拡大鍵を生成する処理を行う第１処理部と、
平文または暗号文を受入れて前記複数個の拡大鍵を用いた暗号化及び復号の少なくともいずれかの処理を行う第２処理部と、
を備え、
第１データは、前記平文を予め定められたワード単位に分割したデータ、または、前記暗号文を予め定められたワード単位に分割したデータであり、
前記第２処理部は、
暗号化時には、平文に含まれる第１データの配列順序を第１順序に決定し、復号時には、暗号文に含まれる第１データの配列順序を第２順序に決定するデータ配列決定部と、
決定された順序で、前記第１データに対し、暗号化及び復号の少なくともいずれかの演算を行うデータ演算本体部とを有し、
前記第２順序は、第１順序と逆であることを特徴とする
暗号装置。
【請求項２】
前記第１処理部は、
予め定められたワード単位に分割された前記共通鍵における各ワードの配列順序が暗号化時と復号時とで互いに逆になるように、前記共通鍵における各ワードの配列を決定する共通鍵配列決定部と、
前記各ワードの配列を決定された前記共通鍵を用いて前記複数個の拡大鍵を生成する演算を行う拡大鍵演算本体部と、
を有する請求項１に記載の暗号装置。
【請求項３】
共通鍵暗号方式の暗号化又は復号を行う暗号処理方法であって、
共通鍵を受入れて拡大鍵を生成する工程と、
予め定められたワード単位に分割されたデータにおける各ワードの配列順序が暗号化時と復号時とで互いに逆になるように、各ワードの配列を決定された前記データに対し、前記拡大鍵を用いて暗号化又は復号の演算を行う工程と、
を含む暗号処理方法。
【請求項４】
共通鍵暗号方式の暗号化又は復号を行う暗号処理プログラムであって、
共通鍵を受入れて拡大鍵を生成するステップと、
予め定められたワード単位に分割されたデータにおける各ワードの配列順序が暗号化時と復号時とで互いに逆になるように、各ワードの配列を決定された前記データに対し、前記拡大鍵を用いて暗号化又は復号の演算を行うステップと、
をコンピュータに実行させるための暗号処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、暗号装置、暗号処理方法及び暗号処理プログラムに関する。
【背景技術】
【０００２】
暗号装置は、平文又は暗号文に対し、特定のアルゴリズムを用いて暗号化又は復号を行うものである。暗号装置は、ＲＦＩＤや組み込み機器などにも用いられており、低消費電力化及び小型化が求められている。
【０００３】
暗号装置を小型化及び低消費電力化する方法として、例えば、ＡＥＳ（Advanced  Encryption  Standard）における回路規模が大きな非線形回路をパイプライン化によって削減することや、暗号化及び復号における線形変換回路の共通化などが知られている。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】ＩＴＮＧ  ２００６  “Ａ  Ｃｏｍｐａｃｔ    Ｐｉｐｅｌｉｎｅｄ  Ｈａｒｄｗａｒｅ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ｏｆ  ｔｈｅ  ＡＥＳ−１２８  Ｃｉｐｈｅｒ”
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の暗号装置は、回路規模の大きな非線形変換回路や線形変換回路にのみ着目されており、セレクタなどで実現される演算の最適化は不十分であった。本発明が解決しようとする課題は、小型化及び低消費電力化を可能にする暗号装置、暗号処理方法及び暗号処理プログラムを提供することである。
【課題を解決するための手段】
【０００６】
実施形態の暗号装置は、共通鍵暗号方式の暗号化及び復号の少なくともいずれかを行う暗号装置であって、第１処理部と、第２処理部と、を備える。第１処理部は、共通鍵を受入れて複数個の拡大鍵を生成する処理を行う。第２処理部は、平文または暗号文を受入れて複数個の拡大鍵を用いた暗号化及び復号の少なくともいずれかの処理を行う。第１データは、平文を予め定められたワード単位に分割したデータ、または、暗号文を予め定められたワード単位に分割したデータである。また、第２処理部は、データ配列決定部と、データ演算本体部と、を有する。データ配列決定部は、暗号化時には、平文に含まれる第１データの配列順序を第１順序に決定し、復号時には、暗号文に含まれる第１データの配列順序を第２順序に決定する。データ演算本体部は、決定された順序で、第１データに対し、暗号化及び復号の少なくともいずれかの演算を行う。第２順序は、第１順序と逆である。
【図面の簡単な説明】
【０００７】
【図１】共通鍵暗号方式の暗号化及び復号を行う暗号装置の構成を示すブロック図。
【図２】暗号装置がＡＥＳの暗号化及び復号を行う場合の構成例を示す構成図。
【図３】関数演算部の構成を示すブロック図。
【図４】データを４つのワードに分割して処理するデータ攪拌部の構成例を示す構成図。
【図５】暗号化時及び復号時における拡大鍵の更新順序（演算順序）を示す図。
【図６】実施形態にかかる共通鍵暗号方式の暗号化及び復号を行う暗号装置の構成を例示するブロック図。
【図７】実施形態の鍵スケジュール部の詳細な構成を示す構成図。
【図８】実施形態のデータ攪拌部の詳細な構成を示す構成図。
【図９】実施形態にかかる暗号装置における各ワードの更新順序（演算順序）をクロック毎に示した図表。
【発明を実施するための形態】
【０００８】
（背景）
実施形態にかかる暗号装置を説明するにあたって、まず背景について説明する。図１は、共通鍵暗号方式の暗号化及び復号を行う暗号装置１の構成を示すブロック図である。図１に示すように、暗号装置１は、鍵スケジュール部（第１処理部）１０と、データ攪拌部（第２処理部）２０とを有し、例えばブロック暗号を処理するＡＥＳの暗号化及び復号を行う。なお、暗号装置１は、一部又は全部がハードウェアで構成されてもよいし、ソフトウェア（プログラム）で構成されてもよい。例えば、暗号装置１は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）などによってハードウェアで構成される場合、ＣＰＵ及びメモリを含むコンピュータとともに実装される。また、暗号装置１は、一部又は全部がソフトウェアで構成される場合、ソフトウェア部分がＣＰＵなどによって実行される。
【０００９】
鍵スケジュール部１０は、秘密鍵（共通鍵）を受入れて、複数個の拡大鍵を生成する処理を行い、複数個の拡大鍵をデータ攪拌部２０に対して出力する。データ攪拌部２０は、平文又は暗号文のデータと、鍵スケジュール部１０が生成した複数個の拡大鍵とを受入れ、暗号化又は復号の処理を行う。
【００１０】
図２は、暗号装置１がＡＥＳの暗号化及び復号を行う場合の構成例を示す構成図である。以下、ＡＥＳの共通鍵が１２８ｂｉｔである場合を例に説明する。図２に示すように、例えば、鍵スケジュール部１０は、セレクタ１０２，１２２〜１３６、レジスタ（ｒｋｙ）１０４、ＥＸＯＲ（排他的論理和）１０６〜１２０及び関数演算部（Ｆ）１４０を有する。図３は、関数演算部１４０の構成を示すブロック図である。図３に示すように、関数演算部１４０は、Ｓｕｂｓｔｉｔｕｔｉｏｎ  Ｂｙｔｅ（以下Ｓとする）１５０〜１５６及びＥＸＯＲ１６０を有する。Ｓ１５０〜１５６は、それぞれ８ｂｉｔ単位で非線形変換を行う。ＥＸＯＲ１６０は、Ｓ１５０の出力とラウンド定数との排他的論理和をとる。
【００１１】
鍵スケジュール部１０は、セレクタ１０２を介して受入れた１２８ｂｉｔの共通鍵を１６ｂｙｔｅのレジスタ１０４で一時記憶し、ＥＸＯＲ１０６〜１１４及び関数演算部（Ｆ）１４０を用いて復号用の鍵更新（拡大鍵の生成）を行う。また、鍵スケジュール部１０は、セレクタ１０２を介して受入れた１２８ｂｉｔの共通鍵をレジスタ１０４で一時記憶し、ＥＸＯＲ１１４〜１２０及び関数演算部（Ｆ）１４０を用いて暗号化用の鍵更新（拡大鍵の生成）を行う。セレクタ１２２〜１３６は、暗号化時と復号時とを区別してデータを選択する。
【００１２】
データ攪拌部２０は、セレクタ２０２，２１０〜２１８、レジスタ（ｒｄｔ）２０４、Ｓｕｂｓｔｉｔｕｔｉｏｎ  Ｂｙｔｅ（Ｓ）２０６、Ｉｎｖｅｒｓｅ  Ｓｕｂｓｔｉｔｕｔｉｏｎ  Ｂｙｔｅ（ＩＳ）２０８、Ａｄｄ  Ｒｏｕｎｄ  Ｋｅｙ（ＡＲＫ）２２０，２２２、共通化されたＭｉｘ  Ｃｏｌｕｍｎｓ／Ｉｎｖｅｒｓｅ  Ｍｉｘ  Ｃｏｌｕｍｎｓ（ＭＣ／ＩＭＣ）２２４、Ｓｈｉｆｔ  Ｒｏｗｓ（ＳＲ）２２６及びＩｎｖｅｒｓｅ  Ｓｈｉｆｔ  Ｒｏｗｓ（ＩＳＲ）２２８を有する。
【００１３】
Ｓ２０６は、１６個の１ｂｙｔｅ入力となるように構成されており、入力されたデータを８ｂｉｔ単位に区切り、非線形変換テーブルを用いて非線形変換を行う。なお、上述したＳ１５０〜１５６も同様の処理を行う。ＩＳ２０８は、Ｓ２０６の逆変換を行う。ＡＲＫ２２０，２２２は、それぞれ鍵スケジュール部１０が生成した拡大鍵と、データとの排他的論理和をｂｉｔ毎にとる。ＭＣ／ＩＭＣ２２４は、３２ｂｉｔ（ワード：４ｂｙｔｅ）内の８ｂｉｔ毎に影響を及ぼしあう線形変換（逆変換も共通化）を行う。ＳＲ２２６は、データをｂｙｔｅ単位で入れ替える。ＩＳＲ２２８は、ＳＲ２２６の逆変換を行う。
【００１４】
そして、暗号装置１は、暗号化を行う場合、まず、レジスタ２０２を介して受入れたデータ（平文）をレジスタ２０４に格納する。次に、暗号装置１は、共通鍵を用いて初めに１番目のクロックでＡＲＫを一度行い、結果をレジスタ２０４に格納する。次に、暗号装置１は、２番目から１０番目のクロックでＳ，ＳＲ，ＭＣ，ＡＲＫの順に規定ラウンド−１回の処理を繰り返して行い、それぞれのラウンドで結果をレジスタ２０４に格納する。次に、暗号装置１は、１１番目のクロックで最終ラウンドのＳ，ＳＲ，ＡＲＫの処理を行ってＡＥＳの暗号文をレジスタ２０４に格納する。なお、各クロックのＡＲＫで用いられる拡大鍵は、鍵スケジュール部１０が共通鍵を用いて生成したものであり、それぞれ異なる。また、暗号装置１は、復号を行う場合、共通鍵を用いて暗号化の逆変換の処理を行い、ＡＥＳの平文をレジスタ２０４に格納する。
【００１５】
また、暗号装置１は、小型化を図るために、１２８ｂｉｔのデータ（平文又は暗号文）を４つのワード（３２ｂｉｔ：４Ｂ）に分割して処理を行うように構成されてもよい。図４は、データを４つのワードに分割して処理するデータ攪拌部２０ａの構成例を示す構成図である。なお、図４に示したデータ攪拌部２０ａにおいて、図２に示したデータ攪拌部２０を構成する各部と実質的に同一の部分には同一の符号が付してある。
【００１６】
データ攪拌部２０ａは、セレクタ２３０〜２３６，２５０，２５４，２６０，２６６、レジスタ（ｒｄｔ３）２３８、レジスタ（ｒｄｔ２）２４０、レジスタ（ｒｄｔ１）２４２、レジスタ（ｒｄｔ０）２４４、Ｓ２４６、ＩＳ２４８、ＡＲＫ２５２，２５８、ＭＣ／ＩＭＣ２５６、ＳＲ２６２及びＩＳＲ２６４を有する。
【００１７】
セレクタ２３０〜２３６は、１２８ｂｉｔのデータから分割されたワード（４Ｂ）と、出力先とは異なる下位側相当のレジスタ出力とを受け入れ、ラウンドに応じて選択したワードを出力する。レジスタ２３８〜２４４は、分割されたデータ（ワード）をそれぞれ格納する。Ｓ２４６は、４個の１ｂｙｔｅ入力となるように構成されており、入力されたデータを８ｂｉｔ単位に区切り、非線形変換テーブルを用いて非線形変換を行う。ＩＳ２４８は、Ｓ２４６の逆変換を行う。セレクタ２５０，２５４，２６０，２６６は、暗号化時と復号時、及びラウンドを区別してデータを選択する。
【００１８】
ＡＲＫ２５２，２５８は、それぞれ鍵スケジュール部１０が生成した拡大鍵と、データとの排他的論理和をｂｉｔ毎にとる。ＭＣ／ＩＭＣ２５６は、３２ｂｉｔ（Ｗｏｒｄ：４ｂｙｔｅ）内の８ｂｉｔ毎に影響を及ぼしあう線形変換（逆変換も共通化）を行う。ＳＲ２６２は、データをｂｙｔｅ単位で入れ替える。ＩＳＲ２６４は、ＳＲ２６２の逆変換を行う。そして、ＳＲ２６２又はＩＳＲ２６４がｂｙｔｅ単位で入れ替えを行ったデータは、セレクタ２６６を介して各レジスタ（レジスタ２３８〜２４４）に格納される。
【００１９】
ところで、暗号装置１は、鍵スケジュール部１０における拡大鍵の更新方法が暗号化時と復号時とで異なる。図５は、暗号化時及び復号時における拡大鍵の更新順序（演算順序）を示す図である。図５に示すように、鍵スケジュール部１０は、拡大鍵を暗号化時（Encrypt）には上位のワード（４Ｂ）からワード単位で更新し、復号時（Decrypt）には下位のワードからワード単位で更新する。
【００２０】
このように、暗号装置１は、ＳＲ又はＩＳＲによりｂｙｔｅ単位で入れ替えが行われたデータをレジスタに格納する場合にセレクタを介しており、拡大鍵のワードの更新順序（演算順序）が暗号化時と復号時とで異なっている。
【００２１】
（実施形態）
次に、暗号装置の実施形態を詳細に説明する。図６は、実施形態にかかる共通鍵暗号方式の暗号化及び復号を行う暗号装置３の構成を例示するブロック図である。図６に示すように、暗号装置３は、鍵スケジュール部（第１処理部）３０と、データ攪拌部（第２処理部）４０とを有し、例えばブロック暗号を処理するＡＥＳの暗号化及び復号を行う。なお、暗号装置３は、一部又は全部がハードウェアで構成されてもよいし、ソフトウェア（プログラム）で構成されてもよい。例えば、暗号装置３は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）などによってハードウェアで構成される場合、ＣＰＵ及びメモリを含むコンピュータとともに実装される。また、暗号装置３は、一部又は全部がソフトウェアで構成される場合、ソフトウェア部分がＣＰＵなどによって実行される。
【００２２】
鍵スケジュール部３０は、例えばａ〜ｄの４つのワード（３２ｂｉｔ）に分割された１２８ｂｉｔの秘密鍵（共通鍵）を受入れて、複数個の拡大鍵を生成する処理を行い、複数個の拡大鍵をデータ攪拌部４０に対して出力する。データ攪拌部４０は、Ａ〜Ｄの４つのワード（３２ｂｉｔ）に分割された１２８ｂｉｔの平文又は暗号文のデータと、鍵スケジュール部３０が生成した複数個の拡大鍵とを受入れ、暗号化又は復号の処理を行う。また、データ攪拌部４０は、処理結果をＩ〜Ｌの４つのワード（３２ｂｉｔ）に分割された１２８ｂｉｔの暗号文又は平文のデータとして出力する。
【００２３】
図７は、鍵スケジュール部３０の詳細な構成を示す構成図である。図７に示すように、鍵スケジュール部３０は、セレクタ３２及び拡大鍵演算本体部３４を有する。
【００２４】
セレクタ３２は、例えばａ〜ｄの４つのワードに分割された１２８ｂｉｔの共通鍵を受入れる。セレクタ３２は、暗号化時と復号時とを区別して、各ワードの配列順序が暗号化時と復号時とで互いに逆になるように、ワードの順序を決定（選択）する。配列順序とは、各ワードの並び順をいう。例えば、セレクタ３２は、暗号化時は、配列順序を第１順序に決定し、復号時は、配列順序を第２順序に決定する。第１順序と第２順序は順序が逆である。
【００２５】
例えば暗号化時には、セレクタ３２は、ａ〜ｄの４つのワードの配列を変更することなく（最上位のワードをａとし、最下位のワードをｄとすると、ａ，ｂ，ｃ，ｄの順序を入れ替えることなく）、それぞれ拡大鍵演算本体部３４のセレクタ３４０〜３４６に対して出力する。これに対し、復号時には、セレクタ３２は、ａ〜ｄの４つのワードの配列を逆に変更し（最上位のワードをａとし、最下位のワードをｄとすると、ｄ，ｃ，ｂ，ａに順序を入れ替えて）、それぞれ拡大鍵演算本体部３４のセレクタ３４０〜３４６に対して出力する。なお、セレクタ３２は、各ワードの配列方向が暗号化時と復号時とで互いに逆になるようにワードの選択を行えばよく、例えば暗号化時にａ，ｂ，ｃ，ｄの順序で出力することに限定されることなく、復号時にａ，ｄ，ｃ，ｂの順序で出力するように構成されてもよい。
【００２６】
つまり、セレクタ３２は、ワード単位に分割された共通鍵における各ワードの配列方向が暗号化時と復号時とで互いに逆になるように、共通鍵における各ワードの配列を決定する共通鍵配列決定部としての機能を有する。
【００２７】
拡大鍵演算本体部３４は、セレクタ３４０〜３４６，３５６、レジスタ（ｒｋｙ３）３４８、レジスタ（ｒｋｙ２）３５０、レジスタ（ｒｋｙ１）３５２、レジスタ（ｒｋｙ０）３５４、関数演算部（Ｆ）１４０及びＥＸＯＲ３５８を有する。なお、図７に示した関数演算部１４０は、図２及び図３に示した関数演算部１４０と実質的に同一である。
【００２８】
セレクタ３４０〜３４６は、１２８ｂｉｔの共通鍵から分割された４つのワード（ａ〜ｄ）と、出力先とは異なる下位側相当のレジスタ出力とを受け入れ、ラウンドに応じて選択したワードを出力する。レジスタ３４８〜３５４は、分割された共通鍵又は拡大鍵（ワード）をそれぞれ格納する。セレクタ３５６は、ラウンドを区別して、ワードの選択を行う。ＥＸＯＲ３５８は、レジスタ３４８に格納されたワードと、セレクタ３５６が選択したワードとの排他的論理和をとる。
【００２９】
このように、鍵スケジュール部３０は、ワード単位に分割された共通鍵における各ワードの配列方向が暗号化時と復号時とで互いに逆になるように、セレクタ３２が共通鍵における各ワードの配列を決定するので、拡大鍵のワードの更新順序（演算順序）が暗号化時と復号時とで同じになっている。
【００３０】
図８は、データ攪拌部４０の詳細な構成を示す構成図である。図８に示すように、データ攪拌部４０は、セレクタ４２、データ演算本体部４４及びセレクタ４６を有する。なお、図８に示したデータ攪拌部４０において、図４に示したデータ攪拌部２０ａを構成する各部と実質的に同一の部分には、同一の符号が付してある。
【００３１】
セレクタ４２は、例えばＡ〜Ｄの４つのワードに分割された１２８ｂｉｔのデータ（平文又は暗号文）を受入れる。セレクタ４２は、暗号化時と復号時とを区別して、各ワードの配列順序が暗号化時と復号時とで互いに逆になるように、ワード順序を決定（選択）する。配列順序とは、各ワードの並び順をいう。例えば、セレクタ４２は、暗号化時は、平文の配列順序を第１順序に決定し、復号時は、暗号文の配列順序を第２順序に決定する。第１順序と第２順序は順序が逆である。
【００３２】
例えば暗号化時には、セレクタ４２は、Ａ〜Ｄの４つのワードの配列を変更することなく（最上位のワードをＡとし、最下位のワードをＤとすると、Ａ，Ｂ，Ｃ，Ｄの順序を入れ替えることなく）、それぞれデータ演算本体部４４のセレクタ２３０〜２３６に対して出力する。これに対し、復号時には、セレクタ４２は、Ａ〜Ｄの４つのワードの配列を逆に変更し（最上位のワードをＡとし、最下位のワードをＤとすると、Ｄ，Ｃ，Ｂ，Ａに順序を入れ替えて）、それぞれデータ演算本体部４４のセレクタ２３０〜２３６に対して出力する。なお、セレクタ４２は、鍵スケジュール部３０の動作に合わせて各ワードの配列方向が暗号化時と復号時とで互いに逆になるようにワードの選択を行えばよく、例えば暗号化時にＡ，Ｂ，Ｃ，Ｄの順序で出力することに限定されることなく、復号時にＡ，Ｄ，Ｃ，Ｂの順序で出力するように構成されてもよい。
【００３３】
つまり、セレクタ４２は、ワード単位に分割されたデータにおける各ワードの配列方向が暗号化時と復号時とで互いに逆になるように、データにおける各ワードの配列を決定するデータ配列決定部としての機能を有する。
【００３４】
データ演算本体部４４は、セレクタ２３０〜２３６，２５０，２５４，２６０、レジスタ（ｒｄｔ３）４４０、レジスタ（ｒｄｔ２）４４２、レジスタ（ｒｄｔ１）４４４、レジスタ（ｒｄｔ０）４４６、Ｓ２４６、ＩＳ２４８、ＡＲＫ２５２，２５８、ＭＣ／ＩＭＣ２５６及びＳＲ２６２を有する。レジスタ４４０〜４４６は、分割されたデータ（ワード）をそれぞれ格納する。
【００３５】
セレクタ４６は、セレクタ４２がワードの配列方向を変更する選択を行った場合に、ワードの配列方向を元に戻すようにワードの選択を行う。例えば、セレクタ４６は、セレクタ４２がＡ，Ｂ，Ｃ，Ｄの順序で入力された各ワードをＤ，Ｃ，Ｂ，Ａの順序に入れ替えた場合、レジスタ４４０〜４４６が出力する各ワードＥ，Ｆ，Ｇ，Ｈを受入れて順序をＡ，Ｂ，Ｃ，Ｄに合わせる選択を行い、ワードＩ，Ｊ，Ｋ，Ｌとして出力する。つまり、セレクタ４６は、データにおける各ワードの配列を元に戻すように決定する（第２の）データ配列決定部としての機能を有する。
【００３６】
図９は、暗号装置３における各ワードの更新順序（演算順序）をクロック毎に示した図表である。各処理とワードとの組合せ毎に示された数値は、処理に必要なクロック数である。図９に示すように、５クロック（５ｃｌｋ）でデータパスにおける平文（plaintext）を４ｂｙｔｅ（ワード）単位で更新する場合には、５４クロックで暗号化が終了する。５クロック（５ｃｌｋ）でデータパスにおける暗号文（chiphertext）を４ｂｙｔｅ（ワード）単位で更新する場合には、５１クロックで復号が終了する。
【００３７】
また、４クロック（４ｃｌｋ）でデータパスにおける平文（plaintext）を４ｂｙｔｅ（ワード）単位で更新する場合には、４４クロックで暗号化が終了する。４クロック（４ｃｌｋ）でデータパスにおける暗号文（chiphertext）を４ｂｙｔｅ（ワード）単位で更新する場合には、４１クロックで復号が終了する。
【００３８】
上述したように、暗号装置３は、鍵スケジュール部３０における拡大鍵のワードの更新順序（演算順序）が暗号化時と復号時とで同じにされている。また、データ攪拌部４０は、ワード単位に分割されたデータにおける各ワードの配列方向が暗号化時と復号時とで互いに逆になるので、図４に示したＩＳＲ２６４の演算をＳＲ２６２によって行うことができる。また、データ演算本体部４４は、ＩＳＲ２６４を具備していないので、図４に示したセレクタ２６６を必要としない。つまり、暗号装置３は、図４に点線で囲って示したＩＳＲ２６４及びセレクタ２６６が不要であるため、小型化及び低消費電力化が可能となる。特に、暗号装置３が半導体集積回路などのハードウェアで構成される場合には、データ演算本体部４４内にＳＲ２６２及びセレクタ２６６がないので、小型化、省電力化、高速化が可能になる。
【００３９】
なお、上述した実施形態においては、共通鍵を１２８ｂｉｔとする場合を例に説明したが、これに限定されない。例えば、暗号装置３は、共通鍵を１９６ｂｉｔ又は２５６ｂｉｔとするブロック暗号の暗号化及び復号の少なくともいずれかを処理する構成であってもよい。
【００４０】
また、暗号装置３について、鍵スケジュール部３０及びデータ攪拌部４０が暗号化時にそれぞれワードの配列を逆にする（変更する）場合を例に説明したが、これに限定されない。例えば、暗号装置３は、鍵スケジュール部３０及びデータ攪拌部４０が復号時にそれぞれワードの配列を逆にし、データ演算本体部４４がＳＲ２６２の処理をＩＳＲ２６４によって行い、ＳＲ２６２を有しない構成にされてもよい。
【００４１】
また、暗号装置３は、セレクタ３２、セレクタ４２及びセレクタ４６の少なくともいずれかの機能を、例えば外部のＣＰＵなどが行う構成であってもよい。例えば、暗号装置３は、共通鍵を受入れて拡大鍵を生成し、予め定められたワード単位に分割されたデータにおける各ワードの配列方向が暗号化時と復号時とで互いに逆になるように、各ワードの配列を決定されたデータに対し、拡大鍵を用いて暗号化又は復号の演算を行う構成であってもよい。
【００４２】
また、本発明の実施形態を複数の組み合わせによって説明したが、これらの実施形態は例として提示したものであり、発明の範囲を限定することは意図していない。これら新規の実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００４３】
３  暗号装置
３０  鍵スケジュール部（第１処理部）
３２，４２，４６  セレクタ
３４  拡大鍵演算本体部
１４０  関数演算部（Ｆ）
２４６  Ｓｕｂｓｔｉｔｕｔｉｏｎ  Ｂｙｔｅ（Ｓ）
２４８  Ｉｎｖｅｒｓｅ  Ｓｕｂｓｔｉｔｕｔｉｏｎ  Ｂｙｔｅ（ＩＳ）
２５２，２５８  Ａｄｄ  Ｒｏｕｎｄ  Ｋｅｙ（ＡＲＫ）
２５６  Ｍｉｘ  Ｃｏｌｕｍｎｓ／Ｉｎｖｅｒｓｅ  Ｍｉｘ  Ｃｏｌｕｍｎｓ（ＭＣ／ＩＭＣ）
２６２  Ｓｈｉｆｔ  Ｒｏｗｓ（ＳＲ）
２６４  Ｉｎｖｅｒｓｅ  Ｓｈｉｆｔ  Ｒｏｗｓ（ＩＳＲ）
３４８，３５０，３５２，３５４，４４０，４４２，４４４，４４６  レジスタ
３５８  ＥＸＯＲ
４０  データ攪拌部（第２処理部）
４４  データ演算本体部
【図１】
2014240921.tif 000003
【図２】
2014240921.tif 000004
【図３】
2014240921.tif 000005
【図４】
2014240921.tif 000006
【図５】
2014240921.tif 000007
【図６】
2014240921.tif 000008
【図７】
2014240921.tif 000009
【図８】
2014240921.tif 000010
【図９】
2014240921.tif 000011