(57)【要約】【課題】  繰り返し演算及びそれに用いられるキー展開を行う暗号化／復号化装置及び暗号化／復号化方法に関し、高速で、効率よく実装できる暗号化／復号化装置及び暗号化／復号化方法を提供することを目的とする。【解決手段】本発明は、データ変換テーブルによりデータを変換するデータ変換手段（１３−１〜１３−４）と、変換されたデータとキーとを演算する処理手段（１１、１４）と、キーを記憶するキーレジスタ（１５）とを有し、データ変換手段（１３−１〜１３−４）によるデータ変換及び処理手段（１１、１４）による演算処理を複数ラウンド繰り返すことにより、データの暗号化を行う暗号化装置（１）であって、処理手段（１１、１４）によるデータ処理時、データ変換手段（１３−１〜１３−４）に発生する空時間に、データ変換手段（１３−１〜１３−４）を利用して、キーレジスタ（１５）に記憶されたキーを更新させる制御手段（１６）を有することを特徴とする。【選択図】  図１
2005077517.tif 000002
【特許請求の範囲】
【請求項１】
データ変換テーブルによりデータを変換するデータ変換手段と、変換されたデータとキーとを演算する処理手段と、前記キーを記憶するキーレジスタとを有し、前記データ変換手段によるデータ変換及び前記処理手段による演算処理を複数ラウンド繰り返すことにより、前記データの暗号化／復号化を行う暗号化／復号化装置であって、
前記処理手段によるデータ処理時、前記データ変換手段に発生する空時間に、前記データ変換手段を利用して、前記キーレジスタに記憶されたキーを更新させる制御手段を有することを特徴とする暗号化／復号化装置装置。
【請求項２】
前記データ変換手段は、所定期間毎に、前記データを構成するブロックデータを行毎に変換するものであり、
前記制御手段は、前記ラウンド毎の最終クロックで前記データ変換手段に前記キーを構成するキーデータを入力し、前記ラウンド毎の最初のクロックで前記データ変換手段から前記キーデータを変換した前記キーレジスタの取り込むことを特徴とする請求項１記載の暗号化／復号化装置装置。
【請求項３】
前記データ変換手段は、前記データ変換テーブルが記憶された不揮発性メモリから構成されたことを特徴とする請求項１記載の暗号化装置。
【請求項４】
前記データは、所定列のブロックデータから構成されており、
前記データ変換手段は、前記データ変換テーブルを前記列毎に有することを特徴とする請求項１乃至３のいずれか一項記載の暗号化／復号化装置装置。
【請求項５】
データ変換テーブルによりデータを変換するデータ変換手順と、変換されたデータとキーレジスタに記憶されたキーとを演算する処理手順とを有し、前記データ変換手順によるデータ変換及び前記処理手順による演算処理を複数ラウンド繰り返すことにより、前記データの暗号化を行う暗号化方法であって、
前記処理手順によるデータ処理時、前記データ変換手順に発生する空時間に、前記データ変換手順により前記キーレジスタに記憶されたキーを更新させる制御手順を有することを特徴とする暗号化／復号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は暗号化／復号化装置及び暗号化／復号化方法に係り、特に、繰り返し演算及びそれに用いられるキー展開を行う暗号化／復号化装置及び暗号化／復号化方法に関する。
【背景技術】
【０００２】
次世代標準暗号化方式（ＡＥＳ）として、ラインデールブロック暗号化（Rijndael block cipher）方式が採用された。
【０００３】
図６はラインデールブロック暗号化方式の概略説明図を示す。
【０００４】
ラインデールブロック暗号化方式は、サブバイト（byte substitution）処理Ｓ１、シフトロー処理Ｓ２、ミックスカラム処理Ｓ３、ラウンドキー加算処理Ｓ４から構成される。
【０００５】
図７はサブバイト処理Ｓ１の動作説明図を示す。
【０００６】
サブバイト処理Ｓ１は、非線形のバイト置換処理であり、各配列要素のバイトを異なる値に変換する処理である。ラインデールブロック暗号化方式においては、バイトサブ処理での変換はガロア規定多項式の逆元をアフィン変換するものである。
【０００７】
ガロア規定多項式は、１バイト、８ビットｂ0〜ｂ7からなる入力データでは、
ｂ7＊Ｘ^7＋ｂ6＊Ｘ^6＋ｂ5＊Ｘ^5＋ｂ4＊Ｘ^4＋ｂ3＊Ｘ^3＋ｂ2＊Ｘ^2＋ｂ1＊Ｘ＋ｂ0
で規定される。
【０００８】
サブバイト処理Ｓ１は、例えば、
【０００９】
【数１】
2005077517.tif 000003
によって、定義される。通常は、変換テーブルｓ−ｂｏｘに展開し、配列要素のバイトの値に基づいて変換テーブルｓ−ｂｏｘから値を読み出すことにより変換値が取得される。
【００１０】
サブバイト処理Ｓ１では、例えば、図６に示すように変換テーブルｓ−ｂｏｘにより６列４行の配列の各要素ａ0,0〜ａi,j〜ａ3,5は、それに対応する６列４行の配列の要素ｂ0,0〜ｂi,j〜ｂ3,5に変換される。６列４行の配列の要素ｂ0,0〜ｂi,j〜ｂ3,5がサブバイト処理Ｓ１の処理結果として出力される。
【００１１】
サブバイト処理Ｓ１の出力は、次にシフトロー処理Ｓ２で列のシフトが行われる。
【００１２】
図８はシフトロー処理Ｓ２の動作説明図を示す。
【００１３】
シフトロー処理Ｓ２は、例えば、図７に示すように第１列Ｃ0はシフトさせず、第２列Ｃ１を矢印Ａ方向に「１」ビットシフトさせ、第３列Ｃ2を矢印Ａ方向に「２」ビットシフトさせ、第４列Ｃ3を矢印Ａ方向に「３」ビットシフトさせる。
【００１４】
なお、図８では、１行が６ビット構成の場合について説明したが、１行が４ビット構成の場合には、図８と同様に第１列Ｃ0はシフトさせず、第２列Ｃ１を矢印Ａ方向に「１」ビットシフト、第３列Ｃ2を矢印Ａ方向に「２」ビットシフト、第４列Ｃ3を矢印Ａ方向に「３」ビットシフトさせる。また、１行が８ビット構成の場合には、第１列Ｃ0はシフトさせず、第２列Ｃ１を矢印Ａ方向に「１」ビットシフト、第３列Ｃ2を矢印Ａ方向に「２」ビットシフト、第４列Ｃ3を矢印Ａ方向に「４」ビットシフトさせる。
【００１５】
シフトロー処理Ｓ２の出力は、次にミックスカラム処理Ｓ３により配列要素が行方向にミックスされる。
【００１６】
図９はミックスカラム処理Ｓ３の動作説明図を示す。
【００１７】
ミックスカラム処理Ｓ３は、入力多項式ａ（ｘ）、出力多項式ｂ（ｘ）、固定多項式ｃ（ｘ）としたとき、
【００１８】
【数２】
2005077517.tif 000004
で表される。
【００１９】
このとき、多項式ｃ（ｘ）は、
【００２０】
【数３】
2005077517.tif 000005
で表される。なお、‘０３’、‘０２’、‘０１’は１６進表示を示す。
【００２１】
式（３）から式（２）を４行のマトリクスで表示すると、
【００２２】
【数４】
2005077517.tif 000006
で表される。
【００２３】
式（４）により図９に示すように第ｊ行の配列要素ａ0,j、a1,j、a2,j、a3,jは、第ｊ行の配列要素ａ0,j、a1,j、a2,j、a3,jがミックスされた配列要素ｂ0,j、ｂ1,j、ｂ2,j、ｂ3,jに変換される。なお、配列要素ｂ0,j、ｂ1,j、ｂ2,j、ｂ3,jは、第ｊ行の配列要素として配列される。
【００２４】
ミックスロー処理Ｓ３の出力は、次にラウンドキー加算処理Ｓ４でラウンドキーと加算される。
【００２５】
図１０はラウンドキー加算処理Ｓ４の動作説明図を示す。
【００２６】
ラウンドキー加算処理Ｓ４は、ミックスロー処理Ｓ３の出力ａ0,0〜ａ3,5と、予め決められたキースケジュールに従って生成されたラウンドキーｋ0,0〜ｋ3,5との排他的論理和ＥＸＯＲを取る処理である。ラウンドキー加算処理Ｓ４により得られるミックスロー処理Ｓ３の出力ａ0,0〜ａ3,5とラウンドキーｋ0,0〜ｋ3,5との排他的論理和の結果ｂ0,0〜ｂ3,5がラウンドキー加算処理Ｓ４の処理結果として出力される。
【００２７】
上記のサブバイト処理Ｓ１、シフトロー処理Ｓ２、ミックスカラム処理Ｓ３、ラウンドキー加算処理Ｓ４が所定ラウンド行われ、入力データが暗号化される。
【００２８】
このとき、ラウンドキーは、キースケジュールにより暗号化キーに基づいて生成される。キースケジュールは、キー展開処理及びラウンドキー選択処理を含む構成とされている。
【００２９】
キー展開処理により展開されるキーは、例えば、４バイトのワードを線形配列したものである。
起動時には、暗号化キーであり、ｓ−ｂｏｘを通すことによって、ラウンドキーが生成される。また、次回のラウンドキーは、前回のラウンドキーをｓ−ｂｏｘに通すことにより生成される。
【００３０】
ラウンドキー選択処理では、キー展開処理により生成されたラウンドキーをラウンドキー加算処理Ｓ４のラウンドキーとして選択する。（非特許文献１参照）
【非特許文献１】Joan Daemen and Vincent Rijmen,“AES proposal:Rijndael,document version 2”,[online],1999年9月3日,NIST:National Institute ofStandards and Technology,[平成１５年８月１３日検索],p.8−p.16,インターネット＜URL：http://csrc.nist.gov/CryptoToolkit/aes/rijndael/Rijndael-ammended.pdf＞
【発明の開示】
【発明が解決しようとする課題】
【００３１】
本発明は、高速で、効率よく実装できる暗号化／復号化装置及び暗号化／復号化方法を提供することを目的とする。
【課題を解決するための手段】
【００３２】
本発明は、データ変換テーブルによりデータを変換するデータ変換手段（１３−１〜１３−４）と、変換されたデータとキーとを演算する処理手段（１１、１４）と、キーを記憶するキーレジスタ（１５）とを有し、データ変換手段（１３−１〜１３−４）によるデータ変換及び処理手段（１１、１４）による演算処理を複数ラウンド繰り返すことにより、データの暗号化／復号化を行う暗号化／復号化装置（１）であって、処理手段（１１、１４）によるデータ処理時、データ変換手段（１３−１〜１３−４）に発生する空時間に、データ変換手段（１３−１〜１３−４）を利用して、キーレジスタ（１５）に記憶されたキーを更新させる制御手段（１６）を有することを特徴とする。
【００３３】
また、本発明は、データ変換手段（１３−１〜１３−４）により、所定期間毎にデータを構成するブロックデータを行毎に変換し、制御手段（１６）により、ラウンド毎の最終クロックでデータ変換手段（１３−１〜１３−４）にキーを構成するキーデータを入力し、ラウンド毎の最初のクロックでデータ変換手段（１３−１〜１３−４）からキーデータを変換したキーレジスタ（１５）の取り込むことを特徴とする。
【００３４】
さらに、本発明は、データ変換手段（１３−１〜１３−４）により、データ変換テーブルが記憶された不揮発性メモリから構成されたことを特徴とする。
【００３５】
また、本発明は、同一データ構成のデータ変換テーブル（１３−１〜１３−４）を列毎に設けたことを特徴とする。
【発明の効果】
【００３６】
本発明によれば、各ラウンドの境界に生じる繰り返し演算の空時間を利用して、鍵展開処理を行うことにより、各ラウンドに鍵展開処理のためのタイミングを設ける必要がないので、鍵展開処理の期間を短縮でき、高速、かつ、効率的に暗号化を行える。
【発明を実施するための最良の形態】
【００３７】
図１は本発明の一実施例のブロック構成図を示す。
【００３８】
本実施例の暗号化／復号化装置１は、ラウンドキー加算部１１、入力選択部１２、ｓ−ｂｏｘ１３−１〜１３−４、シフトロー／ミックスカラム処理部１４、ラウンドキーレジスタ１５、コントローラ１６、ラウンドカウンタ１７から構成されている。
【００３９】
ラウンドキー加算部１１には、入力ポートＰin1から入力データが供給され、シフトロー／ミックスカラム処理部１４からシフトロー処理及びミックスカラム処理されたデータが供給されるとともに、ラウンドキーレジスタ１５からラウンドキーが供給される。ラウンドキー加算部１１は、コントローラ１６からの指令に基づいて入力ポートＰin1からのデータ又は、シフトロー／ミックスカラム処理部１４からのデータとラウンドキーレジスタ１５からのラウンドキーとの排他的論理和を算出し、出力ポートＰoutから出力する。
【００４０】
入力選択部１２には、ラウンドキー加算部１１から出力データが供給されるとともに、ラウンドキーレジスタ１５からラウンドキーが供給される。入力選択部１２は、コントローラ１６からの指令に基づいてラウンドキー加算部１１からの出力データ又は、ラウンドキーレジスタ１５からのラウンドキーを選択的に出力する。入力選択部１２で選択されたデータは、ｓ−ｂｏｘ１３−１〜１３−４に供給される。
【００４１】
ｓ−ｂｏｘ１３−１は、例えば、ＲＯＭ（read only memory）から構成されている。ｓ−ｂｏｘ１３−１を構成するＲＯＭには、データ変換テーブルが格納されており、コントローラ１６からの指令に基づいて入力選択部１２により選択されたデータに応じた出力データを出力する。ｓ−ｂｏｘ１３−１に格納されたデータ変換テーブルには、予め決められたパターンの数字列が格納されている。入力データはｓ−ｂｏｘ１３−１を通ることにより入力データとは関連しないデータに変換される。
【００４２】
なお、ｓ−ｂｏｘ１３−２〜１３−４は、ｓ−ｂｏｘ１３−１と同じ構成であり、同じデータ変換が行われる。ｓ−ｂｏｘ１３−１〜１３−４により４列のデータを同時に変換できる。ｓ−ｂｏｘ１３−１〜１３−４で４列のデータを４行分変換することにより４行×４列のマトリクス状のデータをデータ変換することが可能となる。
【００４３】
ｓ−ｂｏｘ１３−１〜ｓ−ｂｏｘ１３−４を構成するＲＯＭは、１クロックでデータを入力し、次の１クロックで変換データを出力するので、データを入力して、変換データを得るために２クロック必要となる。ｓ−ｂｏｘ１３−１〜１３−４で変換されたデータはコントローラ１６からの指令に基づいてシフトロー／ミックスカラム処理部１４及びラウンドキーレジスタ１５に供給される。
【００４４】
シフトロー／ミックスカラム処理部１４は、コントローラ１４からの指令に基づいてｓ−ｂｏｘ１３−１〜１３−４により変換されたデータを取り込み、コントローラ１４からの指令に基づいてシフトロー処理及び、ミックスカラム処理を行う。シフトロー／ミックスカラム処理部１４の出力データは、ラウンドキー加算部１１に供給される。
【００４５】
ラウンドキーレジスタ１５は、コントローラ１４からの指令に基づいてｓ−ｂｏｘ１３−１〜１３−４からのデータを格納する。ラウンドキーレジスタ１５に記憶されたラウンドキーは、コントローラ１６からの指令に基づいてラウンドキー加算部１１及び入力選択部１２に供給される。
【００４６】
コントローラ１６には、コントロールポートＰcから暗号化の指示を行うためのコントロールデータが供給される。また、コントローラ１６には、ラウンドカウンタ１７が接続されている。
【００４７】
ここで、コントローラ１６の動作を図面とともに説明する。
【００４８】
図２は本発明の一実施例のコントローラ１６による演算処理の処理フローチャートを示す。
【００４９】
コントローラ１６は、暗号化が指示されると、まず、ステップＳ１−１でラウンドカウンタ１７を「０」にリセットする。コントローラ１６は、次に、ステップＳ１−２で入力ポートＰin1から入力データをラウンドキー加算部１１に取り込み、ラウンドキー加算部１１でマトリクス状に配列する。
【００５０】
次にコントローラ１６は、ステップＳ１−３で、ラウンドキー加算部１１でラウンドキーレジスタ１５からラウンドキーを取り込み、入力データとの排他的論理和を算出し、出力ポートＰoutに出力する。
【００５１】
次に、コントローラ１６は、ステップＳ１−４で、ラウンドカウンタ１７をインクリメントする。次に、コントローラ１６は、ステップＳ１−５で、入力選択部１２を制御して、ラウンドキー加算部１１からのデータを選択し、ｓ−ｂｏｘ１３−１〜１３−４に供給する。入力選択部１２で選択されたデータは、ｓ−ｂｏｘ１３−１〜１３−４を通して、サブバイト処理される。サブバイト処理は、図５、図６に示すサブバイト処理Ｓ１に相当する処理である。ｓ−ｂｏｘ１３−１〜１３−４で、サブバイト処理されたデータは、シフトロー／ミックスカラム処理部１４に供給される。
【００５２】
コントローラ１６は、ステップＳ１−６でシフトロー／ミックスカラム処理部１４を制御して、シフトロー処理を行う。ここでのシフトロー処理は、図６、図８に示すシフトロー処理Ｓ２に相当する処理である。
【００５３】
次に、コントローラ１６は、ステップＳ１−７で、ラウンドカウンタ１２のカウント値Ｒnを参照して、ラウンドカウンタ１７のカウント値Ｒnが所定ラウンドの回数Ｒcになったか否かを判定する。
【００５４】
なお、ラウンド数Ｒcは、データのブロックサイズ及び暗号化キー及びラウンドキーのキーサイズによって予め決められている。例えば、ブロックサイズが１２８ビット、キーサイズ１２８ビットでラウンド数Ｒcは「１０」、ブロックサイズが１２８ビット、キーサイズ１９２ビットでラウンド数Ｒcは「１２」、ブロックサイズが１２８ビット、キーサイズ２５６ビットでラウンド数Ｒcは「１４」、また、ブロックサイズが１９２ビット、キーサイズ１２８ビットでラウンド数Ｒcは「１２」、ブロックサイズが１９２ビット、キーサイズ１９２ビットでラウンド数Ｒcは「１２」、ブロックサイズが１９２ビット、キーサイズ２５６ビットでラウンド数Ｒcは「１４」、さらに、ブロックサイズが２５６ビット、キーサイズ１２８ビットでラウンド数Ｒcは「１４」、ブロックサイズが２５６ビット、キーサイズ１９２ビットでラウンド数Ｒcは「１４」、ブロックサイズが２５６ビット、キーサイズ２５６ビットでラウンド数Ｒcは「１４」に決められている。
【００５５】
コントローラ１６は、ステップＳ１−７で、ラウンドカウンタ１７のカウント値Ｒnが所定ラウンドの回数Ｒcに達していなければ、ステップＳ１−８でシフトロー／ミックスカラム処理部１４を制御して、ミックスカラム処理を行う。なお、ここでの、ミックスカラム処理は、図６、図９に示すミックスカラム処理Ｓ３に相当する処理である。
【００５６】
コントローラ１６は、ステップＳ１−３〜Ｓ１−８をラウンドカウンタ１２のカウント値Ｒnが所定のラウンド数Ｒc繰り返す。コントローラ１６は、ステップＳ１−７でラウンドカウンタ１７のカウント値Ｒnが所定のラウンド数Ｒcになると、ステップＳ１−９で、ラウンドキーレジスタ１５に記憶されたラウンドキーとシフトロー／ミックスカラム処理部１４からのデータとの排他的論理和を算出し、出力ポートＰoutから出力する。ステップＳ１−９で出力ポートＰoutから出力されたデータが暗号化／復号化されたデータとして用いられる。
【００５７】
次に、コントローラ１６によるキースケジュール処理について図面とともに説明を行う。
【００５８】
図３は本発明の一実施例のコントローラ１６によるキースケジュール処理の処理フローチャートを示す。
【００５９】
コントローラ１６は、キースケジュール処理においては、暗号化が指示されると、ステップＳ２−１で入力ポートＰin2から暗号化キーをラウンドキーレジスタ１５に取り込む。次に、コントローラ１６は、ステップＳ２−２で、各ラウンドの第４クロック、すなわち、ラウンドの最終クロックになったか否かを監視しており、ステップＳ２−２で第４クロックになると、ステップＳ２−３で入力選択部１２を制御して、ｓ−ｂｏｘ１３−１〜１３−４への入力として、ラウンドキーレジスタ１５に格納されたラウンドキーデータを選択し、ｓ−ｂｏｘ１３−１〜１３−４を通して、再びラウンドキーレジスタ１５に戻すことにより、ラウンドキーの展開処理を行う。
【００６０】
次に、コントローラ１６は、ステップＳ１−１１で、入力選択部１２を制御して、ラウンドキーレジスタ１５の出力を選択し、ｓ−ｂｏｘ１３−１〜１３−４を通して、再びラウンドキーレジスタ１５に戻すことにより、ラウンドキーの展開処理を行う。次にコントローラ１６は、ステップＳ１−５に戻り、ステップＳ１−１１で再度展開されたラウンドキーとデータとの排他的論理和を算出し、出力ポートＰoutから出力する。
入力選択部１２を制御して、ラウンドキーレジスタ１５の出力を選択し、ｓ−ｂｏｘ１３−１〜１３−４を通して、再びラウンドキーレジスタ１５に戻すことにより、ラウンドキーの展開処理を行う。
【００６１】
コントローラ１６は、ステップＳ２−４でラウンドの最初のクロックである第１クロックを検出すると、ステップＳ２−５で入力選択部１２を制御して、ｓ−ｂｏｘ１３−１〜１３−４への入力として、ラウンドキー加算部１１の出力データを選択するとともに、ステップＳ２−６でｓ−ｂｏｘ１３−１〜１３−４の出力データをキーデータとしてラウンドキーレジスタ１５に取り込む。
【００６２】
コントローラ１６は、ステップＳ２−７でラウンドカウンタ１７のカウント値Ｒnが所定のカウント値Ｒcかにより、最終ラウンドか否かを判定する。コントローラ１６は、ステップＳ２−７での判定結果が最終ラウンドでない場合には、ステップＳ２−２に戻ってキー展開処理を続行し、ステップＳ２−７で判定結果が最終ラウンドの場合には、キースケジュール処理を終了する。
【００６３】
以上により、ｓ−ｂｏｘ１３−１〜１３−４へのデータ入力がなくなる、ラウンドの最終クロックでｓ−ｂｏｘ１３−１〜１３−４にラウンドキーレジスタ１５からラウンドキーデータを入力し、ｓ−ｂｏｘ１３−１〜１３−４からのデータ出力がなくなる、ラウンドの最初のクロックでｓ−ｂｏｘ１３−１〜１３−４からラウンドキーデータを変換した変換データをラウンドキーレジスタ１５に供給できる。
【００６４】
次に、暗号化装置１の動作を、タイミングチャートを用いて説明する。
【００６５】
図４は本発明の一実施例のラウンド開始時のタイミングチャート、図５は本発明の一実施例のラウンド終了時のタイミングチャートを示す。図４、図５において、第１列はｓ−ｂｏｘ１３−１〜１３−４へのデータ入力のタイミング、第２列はｓ−ｂｏｘ１３−１〜１３−４からのデータ入力のタイミング、第３列はラウンドカウンタ１７のカウント値Ｒn、第４列、第７列〜第９列はラウンドキーの状態、第５列はキーレジスタ１５の状態、第１０列〜第１２列は次のキーの状態、第１３列〜第１６列はｓ−ｂｏｘ１３−１〜１３−４への入力データ、第１７列〜第２０列はｓ−ｂｏｘ１３−１〜１３−４からの出力データの状態を示す。また、第１列、第２列の１行が１クロックの期間を示す。
【００６６】
まず、ラウンド「０」、「１」にかけては、第１３列〜第１６列に示すようにｓ−ｂｏｘ１３−１〜１３−４には入力データＤinが供給されている。このとき、期間Ｔ1では第１列に示すようにｓ−ｂｏｘ１３−１〜１３−４には、入力データＤinの１行目のデータＳ0が入力される。期間Ｔ2では、第２列に示すように１行目のデータＳ0の変換データがｓ−ｂｏｘ１３−１〜１３−４から出力されるとともに、第１列に示すように２行目のデータＳ1がｓ−ｂｏｘ１３−１〜１３−４に入力される。
【００６７】
期間Ｔ3では、第２列に示すように２行目のデータＳ１の変換データがｓ−ｂｏｘ１３−１〜１３−４から出力されるとともに、第１列に示すように３行目のデータＳ2がｓ−ｂｏｘ１３−１〜１３−４に入力される。期間Ｔ4では、第２列に示すように３行目のデータＳ2の変換データがｓ−ｂｏｘ１３−１〜１３−４から出力されるとともに、第１列に示すように４行目のデータＳ3がｓ−ｂｏｘ１３−１〜１３−４に入力される。
【００６８】
期間Ｔ5では、第２列に示すように４行目のデータＳ3の変換データがｓ−ｂｏｘ１３−１〜１３−４から出力される。
【００６９】
以上により入力データＤinのサブバイト処理は終了する。サブバイト処理されたデータはシフトロー／ミックスカラム処理部１４でシフトロー処理及びミックスカラム処理が行われ、ラウンドキー加算部１１でラウンドキー加算処理が行われる。次のラウンド「１」では、地祇のここで、ラウンドキー加算部１１の出力データが再びサブバイト処理される。このため、期間Ｔ5では、ｓ−ｂｏｘ１３−１〜１３−４に供給すべきデータは存在しない。よって、次の期間Ｔ11では、ｓ−ｂｏｘ１３−１〜１３−４からの変換データの出力も存在しないことになる。
【００７０】
そこで、本実施例では、期間Ｔ5、Ｔ11を用いてキースケジュールに組み込まれたキー展開処理を実行する。まず、期間Ｔ5で、第１列に示すようにｓ−ｂｏｘ１３−１〜１３−４にラウンドキーレジスタ１５に記憶された暗号化キーｋを入力し、期間Ｔ11で、第２列に示すようにｓ−ｂｏｘ１３−１〜１３−４から暗号化キーに含まれるデータｋを変換した変換キーデータを出力する。ｓ−ｂｏｘ１３−１〜１３−４により変換された変換キーデータは、第６列に示すように期間Ｔ11でラウンドキーレジスタ１５に供給される。
【００７１】
次のラウンドキーレジスタ１５に供給されたキーデータは、第５列に示すように期間Ｔ12でラウンドキーレジスタ１５に含まれ、ラウンドキーレジスタ１５からラウンドキーとして出力される。
【００７２】
上記動作がラウンド「１」、「２」に跨る期間Ｔ15、Ｔ21、Ｔ22、ラウンド「２」、「３」に跨る期間Ｔ25、Ｔ31、Ｔ32、ラウンド「３」、「４」に跨る期間Ｔ35、Ｔ41、Ｔ42、ラウンド「９」、「１０」に跨る期間Ｔ95、Ｔ101、Ｔ102などのラウンドに跨る期間で行われる。
【００７３】
このようにｓ−ｂｏｘ１３−１〜１３−４に、ラウンドの跨る期間に発生する空時間を利用してキーの展開処理を行うことにより、ラウンド毎に、キーの展開処理を実行する期間を専用に設定する必要がないので、高速に処理を行うことができる。また、高速化するためにキーの展開処理専用にｓ−ｂｏｘを設ける必要がないので、簡単な構成で安価に構成できる。
【図面の簡単な説明】
【００７４】
【図１】本発明の一実施例のブロック構成図である。
【図２】本発明の一実施例のコントローラ１６による演算処理の処理フローチャートである。
【図３】本発明の一実施例のコントローラ１６によるキースケジュール処理の処理フローチャートである。
【図４】本発明の一実施例のラウンド開始時のタイミングチャートである。
【図５】本発明の一実施例のラウンド終了時のタイミングチャートである。
【図６】ラインデールブロック暗号化方式の概略説明図である。
【図７】サブバイト処理Ｓ１の動作説明図である。
【図８】シフトロー処理Ｓ２の動作説明図である。
【図９】ミックスカラム加算処理Ｓ３の動作説明図である。
【図１０】ラウンドキー加算処理Ｓ４の動作説明図である。
【符号の説明】
【００７５】
１  暗号化／復号化装置
１１  ラウンドキー加算部、１２  入力選択部、１３−１〜１３−４  ｓ−ｂｏｘ
１４  シフトロー／ミックスカラム処理部、１５  ラウンドキーレジスタ
１６  コントローラ、１７  ラウンドカウンタ
【図１】
2005077517.tif 000007
【図２】
2005077517.tif 000008
【図３】
2005077517.tif 000009
【図４】
2005077517.tif 000010
【図５】
2005077517.tif 000011
【図６】
2005077517.tif 000012
【図７】
2005077517.tif 000013
【図８】
2005077517.tif 000014
【図９】
2005077517.tif 000015
【図１０】
2005077517.tif 000016