(57)【要約】【課題】低電力高速動作のためのハードウェア暗号化／復号化装置及び、その方法を提供する。【解決手段】ラウンド演算部で各ラウンド演算に該当するキーが入力されて、入力データを暗号文に変換させるハードウェア暗号化／復号化装置。ハードウェア暗号化／復号化装置のＳ−ＢＯＸ演算または逆Ｓ−ＢＯＸ演算は、ガロアフィールドＧＦ（２８）上の元素の乗算の逆元を、ガロアフィールドＧＦ（（（２２）２）２）上の演算を用いて計算し、この計算結果を用いて入力されるベクトルを他のベクトルに置換する。【選択図】図１
2005215688.tif 000002
【特許請求の範囲】
【請求項１】
各ラウンドに該当するＮ（自然数）個のキーが入力され、第１ラウンドで前記キーのうち第１キーを用いて入力データを暗号文に変換し、残りのＮ−１ラウンドのそれぞれで順次前記キーのうち第２キーないし第Ｎキーを用いて、以前ラウンドの変換結果を他の暗号文に変換するラウンド演算部と、
入力キーを用いて前記第１キーないし前記第Ｎキーのそれぞれを生成するキースケジューラと、を備え、前記ラウンドのそれぞれは、
ガロアフィールドＧＦ（２８）上の元素の乗算の逆元をガロアフィールドＧＦ（（（２２）２）２）上の演算を用いて計算し、前記計算結果を用いて入力されるベクトルを他のベクトルに置換するＳ−ＢＯＸを備えることを特徴とするハードウェア暗号化／復号化装置。
【請求項２】
前記ハードウェア暗号化／復号化装置は、
伝送するデータと前記入力キーとを合算して、その合算結果を前記入力データとして出力する合算器を更に備えることを特徴とする請求項１に記載のハードウェア暗号化／復号化装置。
【請求項３】
前記Ｎは、
１０であることを特徴とする請求項１に記載のハードウェア暗号化／復号化装置。
【請求項４】
前記Ｎは、
１２であることを特徴とする請求項１に記載のハードウェア暗号化／復号化装置。
【請求項５】
前記Ｎは、
１４であることを特徴とする請求項１に記載のハードウェア暗号化／復号化装置。
【請求項６】
前記第１ラウンドないし前記第Ｎ−１ラウンドのそれぞれは、
前記Ｓ−ＢＯＸを用いて入力ベクトルを他のベクトルに置換するＳｕｂ＿Ｂｙｔｅ回路と、
ロー単位でシフト処理する関数によって、前記Ｓｕｂ＿Ｂｙｔｅ回路の出力ベクトルをロー単位でシフト処理して出力するＳｈｉｆｔ＿Ｒｏｗ回路と、
カラム単位で置換処理する関数によって、前記Ｓｈｉｆｔ＿Ｒｏｗ回路の出力ベクトルをカラム単位で置換処理して出力するＭｉｘ＿Ｃｏｌｕｍｎ回路と、
前記Ｍｉｘ＿Ｃｏｌｕｍｎ回路の出力ベクトルと、前記キーのうち該当ラウンドキーとを合算して出力する合算器と、を更に備え、
前記第Ｎラウンドは、
前記Ｓ−ＢＯＸを用いて入力ベクトルを他のベクトルに置換するＳｕｂ＿Ｂｙｔｅ回路と、
ロー単位でシフト処理する関数によって、前記Ｓｕｂ＿Ｂｙｔｅ回路の出力ベクトルをロー単位でシフト処理して出力するＳｈｉｆｔ＿Ｒｏｗ回路と、
前記Ｓｈｉｆｔ＿Ｒｏｗ回路の出力ベクトルと、前記キーのうち該当ラウンドキーとを合算して出力する合算器と、を更に備えることを特徴とする請求項１に記載のハードウェア暗号化／復号化装置。
【請求項７】
前記Ｓ−ＢＯＸは、
入力されるベクトルの各元素を形成するガロアフィールドＧＦ（２８）上の元素を、ガロアフィールドＧＦ（（（２２）２）２）上の元素に変換するデルタ変換部と、
前記ガロアフィールドＧＦ（（（２２）２）２）上の元素の逆元を計算して出力する逆元計算部と、
前記ガロアフィールドＧＦ（（（２２）２）２）上の元素の逆元を、ガロアフィールドＧＦ（２８）上の元素に変換する逆デルタ変換部と、
アフィン関数によって、前記変換したガロアフィールドＧＦ（２８）上の元素をアフィン変換するアフィン変換部と、を備えることを特徴とする請求項１に記載のハードウェア暗号化／復号化装置。
【請求項８】
前記逆元計算部は、
前記ガロアフィールドＧＦ（（（２２）２）２）上の元素をなす８ビットデジタルデータの下位４ビットと上位４ビットデータとを第１合算する第１合算器と、
ガロアフィールドＧＦ（（２２）２）上で、前記第１合算結果に前記下位４ビットデータを第１乗算する第１乗算器と、
前記上位４ビットデータを第１自乗する第１自乗器と、
前記第１自乗結果に第１係数を乗算する第１係数乗算器と、
前記第１乗算結果と前記第１自乗結果とを第２合算する第２合算器と、
前記ガロアフィールドＧＦ（（２２）２）上で、前記第２合算結果の逆元を計算する第１逆元計算器と、
ガロアフィールドＧＦ（（２２）２）上で、前記第２合算結果の逆元に前記第１合算結果を第２乗算して、前記第２乗算結果を前記下位４ビットデータの逆元として出力する第２乗算器と、
ガロアフィールドＧＦ（（２２）２）上で、前記第２合算結果の逆元に前記上位４ビットデータを第３乗算して、前記第３乗算結果を前記上位４ビットデータの逆元として出力する第３乗算器と、を備えることを特徴とする請求項７に記載のハードウェア暗号化／復号化装置。
【請求項９】
前記第１逆元計算器は、
前記第２合算結果をなす４ビットデジタルデータの下位２ビットと上位２ビットデータとを第３合算する第３合算器と、
ガロアフィールドＧＦ（２２）上で、前記第３合算結果に前記下位２ビットデータを第４乗算する第４乗算器と、
前記上位２ビットデータを第２自乗する第２自乗器と、
前記第２自乗結果に第２係数を乗算する第２係数乗算器と、
前記第４乗算結果と前記第２係数乗算結果とを第４合算する第４合算器と、
前記第４合算結果の自乗を計算して、前記第４合算結果の逆元として出力する第２逆元計算器と、
ガロアフィールドＧＦ（２２）上で、前記第４合算結果の逆元に前記第３合算結果を第５乗算して、前記第５乗算結果を前記下位２ビットデータの逆元として出力する第５乗算器と、
前記ガロアフィールドＧＦ（２２）上で、前記第４合算結果の逆元に前記上位２ビットデータを第６乗算して、前記第６乗算結果を前記上位２ビットデータの逆元として出力する第６乗算器と、を備えることを特徴とする請求項８に記載のハードウェア暗号化／復号化装置。
【請求項１０】
前記第１乗算器ないし第３乗算器のそれぞれは、
４ビットを有する第２データの下位２ビットと上位２ビットデータとを第５合算する第５合算器と、
４ビットを有する第１データの下位２ビットと上位２ビットデータとを第６合算する第６合算器と、
ガロアフィールドＧＦ（２２）上で、前記第１データ及び前記第２データの下位２ビットデータを第７乗算する第７乗算器と、
前記ガロアフィールドＧＦ（２２）上で、前記第１データ及び前記第２データの上位２ビットデータを第８乗算する第８乗算器と、
前記ガロアフィールドＧＦ（２２）上で、前記第５合算結果に前記第６合算結果を第９乗算する第９乗算器と、
前記第９乗算結果と前記第７乗算結果とを第７合算して、前記第７合算結果を前記４ビットデータの乗算値の上位２ビットデータとして出力する第７合算器と、
前記第８乗算結果に第２係数を乗算する第２係数乗算器と、
前記第７乗算結果と第２係数乗算結果とを第８合算して、前記第８合算結果を前記４ビットデータの乗算値の下位２ビットデータとして出力する第８合算器と、を備えることを特徴とする請求項８に記載のハードウェア暗号化／復号化装置。
【請求項１１】
前記第４乗算器ないし第６乗算器のそれぞれは、  
２ビットを有する第１データの上位ビットデータ及び、２ビットを有する第２データの上位ビットデータを第１論理積演算する第１論理積ロジックと、
前記第１データの下位ビットと前記第２データの上位ビットとを第２論理積演算する第２論理積ロジックと、
前記第１データの上位ビットと前記第２データの下位ビットとを第３論理積演算する第３論理積ロジックと、
前記第１データ及び前記第２データの下位ビットデータを第４論理積演算する第４論理積ロジックと、
前記第１論理積及び前記第２論理積演算結果を第１排他的論理和演算する第１排他的論理和ロジックと、
前記第１排他的論理和演算結果と前記第３論理積演算結果とを第２排他的論理和演算して、前記第２排他的論理和演算結果を、前記２ビットデータの乗算値の上位ビットデータとして出力する第２排他的論理和ロジックと、
前記第１論理積及び前記第４論理積演算結果を第３排他的論理和演算して、前記第３排他的論理和演算結果を、前記２ビットデータの乗算値の下位ビットデータとして出力する第３排他的論理和ロジックと、を備えることを特徴とする請求項９に記載のハードウェア暗号化／復号化装置。
【請求項１２】
前記第７乗算器ないし第９乗算器のそれぞれは、
２ビットを有する第３データの上位ビットデータ及び、２ビットを有する第４データの上位ビットデータを第１論理積演算する第１論理積ロジックと、
前記第３データの下位ビットと前記第４データの上位ビットとを第２論理積演算する第２論理積ロジックと、
前記第３データの上位ビットと前記第４データの下位ビットとを第３論理積演算する第３論理積ロジックと、
前記第３データ及び前記第４データの下位ビットデータを第４論理積演算する第４論理積ロジックと、
前記第１論理積及び前記第２論理積演算結果を第１排他的論理和演算する第１排他的論理和ロジックと、
前記第１排他的論理和演算結果と前記第３論理積演算結果とを第２排他的論理和演算して、前記第２排他的論理和演算結果を、前記２ビットデータの乗算値の上位ビットデータとして出力する第２排他的論理和ロジックと、
前記第１論理積及び前記第４論理積演算結果を第３排他的論理和演算して、前記第３排他的論理和演算結果を、前記２ビットデータの乗算値の下位ビットデータとして出力する第３排他的論理和ロジックと、を備えることを特徴とする請求項１０に記載のハードウェア暗号化／復号化装置。
【請求項１３】
前記キースケジューラは、
前記入力キーを用いて前記第１ラウンドで用いられる前記第１キーを生成し、前記残りのＮ−１ラウンドのそれぞれで用いられる前記第２キーないし前記第Ｎキーは、以前ラウンドで用いられるキーが保存されるレジスタ値を用いて順次に発生させ、前記合算器への前記入力キーの提供と前記第１キーの発生とは、所定クロックの１つのサイクルに行われることを特徴とする請求項２に記載のハードウェア暗号化／復号化装置。
【請求項１４】
前記キースケジューラは、
前記入力キーとレジスタとからの出力を受信し、制御信号によって選択的に前記受信された信号のうちいずれか１つを出力するマルチプレクサと、
前記マルチプレクサの出力を受信し、前記レジスタによって受信されるキーを生成して出力するキー生成器と、を含むことを特徴とする請求項１に記載のハードウェア暗号化／復号化装置。
【請求項１５】
入力キーを用いてＮ個のラウンドに対応する該当Ｎ個のキーを生成する段階と、
前記ラウンドのうち第１ラウンドで、前記キーのうち第１キーを用いて入力データを暗号文に変換させる段階と、
残りのＮ−１ラウンドのそれぞれで、順次前記キーのうち第２キーないし第Ｎキーを用いて、以前ラウンドの変換結果を他の暗号文に変換させる段階と、を備え、前記ラウンドのそれぞれの暗号文に変換させる段階は、
Ｓ−ＢＯＸ演算で、ガロアフィールドＧＦ（２８）上の乗算の逆元をガロアフィールドＧＦ（（（２２）２）２）上の演算を用いて計算し、入力されるベクトルを前記計算結果を用いて他のベクトルに置換する段階を備えることを特徴とするハードウェア暗号化／復号化方法。
【請求項１６】
前記ハードウェア暗号化／復号化方法は、
伝送するデータと前記入力キーとを合算して、その合算結果を前記入力データとして出力する段階を更に備えることを特徴とする請求項１５に記載のハードウェア暗号化／復号化方法。
【請求項１７】
前記Ｎは、
１０であることを特徴とする請求項１５に記載のハードウェア暗号化／復号化方法。
【請求項１８】
前記第１ラウンドないし前記第Ｎ−１ラウンドのそれぞれで暗号文に変換させる段階は、
入力される信号を入力ベクトルとして受けて、前記Ｓ−ＢＯＸ演算を行ってその結果を出力する段階と、
ロー単位でシフト処理する関数によって、前記Ｓ−ＢＯＸ演算結果をロー単位でシフト処理して出力する段階と、
カラム単位で置換処理する関数によって、前記ロー単位でシフト処理されたベクトルをカラム単位で置換処理して出力する段階と、
前記カラム単位で置換処理されたベクトルと、前記キーのうち該当ラウンドキーとを合算して出力する段階と、を備え、
前記第Ｎラウンドで暗号文に変換させる段階は、
入力される信号を入力ベクトルとして受けて、前記Ｓ−ＢＯＸ演算を行ってその結果を出力する段階と、
ロー単位でシフト処理する関数によって、前記Ｓ−ＢＯＸ演算結果をロー単位でシフト処理して出力する段階と、
前記ロー単位でシフト処理されたベクトルと、前記キーのうち該当ラウンドキーとを合算して出力する段階と、を備えることを特徴とする請求項１５に記載のハードウェア暗号化／復号化方法。
【請求項１９】
前記置換段階は、
入力されるベクトルの各元素をなすガロアフィールドＧＦ（２８）上の元素をガロアフィールドＧＦ（（（２２）２）２）上の元素に変換させる段階と、
前記ガロアフィールドＧＦ（（（２２）２）２）上の元素の逆元を計算して出力する段階と、
前記ガロアフィールドＧＦ（（（２２）２）２）上の元素の逆元をガロアフィールドＧＦ（２８）上の元素に変換させる段階と、
アフィン関数によって、前記変換したガロアフィールドＧＦ（２８）上の元素をアフィン変換する段階と、を備えることを特徴とする請求項１５に記載のハードウェア暗号化／復号化方法。
【請求項２０】
前記ガロアフィールドＧＦ（（（２２）２）２）上の元素の逆元計算は、
前記ガロアフィールドＧＦ（（（２２）２）２）上の元素を形成する８ビットデジタルデータを下位４ビットと上位４ビットデータとに分類し、前記分類された４ビットデータのそれぞれに対し、合算と乗算とで単純化された演算を用いて、ガロアフィールドＧＦ（（２２）２）上で逆元を計算することを特徴とする請求項１９に記載のハードウェア暗号化／復号化方法。
【請求項２１】
前記ガロアフィールドＧＦ（（２２）２）上の元素の逆元計算は、
前記ガロアフィールドＧＦ（（２２）２）上の元素をなす４ビットデジタルデータを下位２ビットと上位２ビットデータとに分類し、前記分類された２ビットデータのそれぞれに対し、合算と乗算とで単純化された演算を用いて、ガロアフィールドＧＦ（２２）上で逆元を計算することを特徴とする請求項２０に記載のハードウェア暗号化／復号化方法。
【請求項２２】
前記Ｎ個キーの生成段階は、
前記入力キーを用いて、前記第１ラウンドで用いられる前記第１キーを生成する段階と、
以前ラウンドで用いられるキーが保存されるレジスタ値を用いて、前記残りのＮ−１ラウンドのそれぞれで用いられる前記第２キーないし前記第Ｎキーを順次発生させる段階と、を備え、
前記入力キーの提供と前記第１キーの発生とは、所定クロックの１つのサイクルで行われることを特徴とする請求項１６に記載のハードウェア暗号化／復号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェア暗号化／復号化装置に係り、特に、ＡＥＳ（Ａｄｖａｎｃｅｄ Ｅｎｃｒｙｐｔｉｏｎ Ｓｔａｎｄａｒｄ）アルゴリズムのハードウェア暗号化または復号化装置に関する。
【背景技術】
【０００２】
最近では、スマートカード、ＩＣカードなどを用いた通信、インターネット通信、無線ＬＡＮ通信などにおいて、ユーザーが伝送する情報には安全が保たれなければならない秘密情報が数多く存在する。したがって、ユーザーの秘密情報がハッキングによって流出するのを防止するために、署名や認証手続きを経て伝送される秘密情報を暗号文に変換して伝送するハードウェア暗号化／復号化装置が必要である。
【０００３】
暗号化演算は、一般的に速度が遅いため、スマートカードのような適用でハードウェアで実現することが多い。ＲＳＡ（Ｒｉｖｅｓｔ−Ｓｈａｍｉｒ−Ａｄｅｌｍａｎ）、ＥＣＣ体系（Ｅｌｌｉｐｔｉｃ Ｃｕｒｖｅ Ｃｒｙｐｔｏ Ｓｙｓｔｅｍ）などのような公開キーアルゴリズムだけでなく、ＤＥＳ（Ｄａｔａ Ｅｎｃｒｙｐｔｉｏｎ Ｓｔａｎｄａｒｄ）、ＡＥＳ（Ａｄｖａｎｃｅｄ Ｅｎｃｒｙｐｔｉｏｎ Ｓｔａｎｄａｒｄ）のような対称キーアルゴリズムもハードウェアで実現される。
【０００４】
特に、ＡＥＳは、ＳＰＮ（Ｓｕｂｓｔｉｔｕｔｉｏｎ Ｐｅｒｍｕｔａｔｉｏｎ Ｎｅｔｗｏｒｋ）構造を有し、それはＤＥＳを代える対称キー暗号化アルゴリズムであって、ブロックの長さは１２８ビットであり、キーの長さは１２８、１９２及び２５６ビットである。用いられるキーの長さのそれぞれによって、１０、１２及び１４ラウンドを行う。ＡＥＳの暗号化過程は、初期入力キーの合算及び各ラウンドの演算で行われる。例えば、ＡＥＳで、暗号化過程時に用いられるラウンド数をＮｒとすれば、“Ｓｕｂ＿Ｂｙｔｅ変換”、“Ｓｈｉｆｔ＿Ｒｏｗ変換”、“Ｍｉｘ＿Ｃｏｌｕｍｎ変換”及び“Ａｄｄ＿Ｒｏｕｎｄ＿Ｋｅｙ演算”よりなるラウンド演算が（Ｎｒ−１）回行われ、最終ラウンド演算では“Ｍｉｘ＿Ｃｏｌｕｍｎ変換”を除いた“Ｓｕｂ＿Ｂｙｔｅ変換”、“Ｓｈｉｆｔ＿Ｒｏｗ変換”及び“Ａｄｄ＿Ｒｏｕｎｄ＿Ｋｅｙ演算”が１回行われる。したがって、従来のＡＥＳ暗号化アルゴリズムの実現で、暗号化過程では（Ｎｒ＋１）以上のクロックサイクルが要求され、暗号化過程の逆過程を行う復号化過程では２（Ｎｒ＋１）以上のクロックサイクルが要求される。そのようなＡＥＳ暗号化アルゴリズムのラウンド演算については、特許文献１及び２に詳しく記載されている。
【０００５】
ところが、非線形変換である“Ｓｕｂ＿Ｂｙｔｅ変換”はＳ−ＢＯＸによって行われ、Ｓ−ＢＯＸの演算はＡＥＳ実現時に最も多量の電力を消耗する。すなわち、Ｓ−ＢＯＸは、非線形変換関数であって入力データを他のデータに置換し、その時、非線形変換関数の演算に用いられるメモリと回路の複雑度とが大きいため、多量の電力を消耗する。例えば、Ｓ−ＢＯＸで非線形関数による置換演算を行うために、ルックアップテーブル、ＳＯＰ（Ｓｕｍ−ｏｆ−Ｐｒｏｄｕｃｔｓ）、ＰＯＳ（Ｐｒｏｄｕｃｅ−ｏｆ−Ｓｕｍ）、ＰＰＲＭ（Ｐｏｓｉｔｉｖｅ Ｐｏｌａｒｉｔｙ Ｒｅｅｄ−Ｍｕｌｌｅｒ）ｆｏｒｍ、ＢＤＤ（Ｂｉｎａｒｙ Ｄｅｃｉｓｉｏｎ Ｄｉａｇｒａｍ）などの多様な方法が適用される。Ｓ−ＢＯＸの入力値に対する変換値を得るために、ルックアップテーブル方式は、ＲＯＭ（Ｒｅａｄ Ｏｎｌｙ Ｍｅｍｏｒｙ）にその値を保存して参照する。ＳＯＰ、ＰＯＳ、ＰＰＲＭ ｆｏｒｍ、ＢＤＤなどの方式は、データを８個の入力による２進表現で表わして回路を実現する。その時、そのような従来の方式でＳ−ＢＯＸを実現すれば、８００ないし２２００個程度のゲートサイズが要求され、スマートカード、ＩＣカードなどのようにメモリ及び帯域幅に制限があり、低電力及び速い処理速度が要求される小型システムに適していないという問題点がある。
【特許文献１】米国公開特許ＵＳ２００３−０１３３５６８号
【特許文献２】韓国公開特許ＫＲ２００２−６１７１８号
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明が達成しようとする技術的課題は、スマートカードやＩＣカードなどの小型システムに容易に適用できる低電力及び、高速の暗号化または復号化が可能なハードウェア暗号化／復号化装置を提供するところにある。
本発明が達成しようとする他の技術的課題は、低電力及び高速の暗号化または復号化が可能なハードウェア暗号化／復号化方法を提供するところにある。
【課題を解決するための手段】
【０００７】
前記の技術的課題を達成するための本発明に係るハードウェア暗号化／復号化装置は、ラウンド演算部及びキースケジューラを備えることを特徴とする。前記ラウンド演算部は、各ラウンドに該当するＮ個のキーが入力されて、第１ラウンドで前記キーのうち第１キーを用いて入力データを暗号文に変換し、残りのＮ−１ラウンドのそれぞれで順次前記キーのうち第２キーないし第Ｎキーを用いて、以前ラウンドの変換結果を他の暗号文に変換する。前記キースケジューラは、入力キーを用いて前記第１キーないし前記第Ｎキーのそれぞれを生成する。前記ラウンドのそれぞれのＳ−ＢＯＸは、ガロアフィールドＧＦ（２８）上の元素の乗算の逆元を、ガロアフィールドＧＦ（（（２２）２）２）上の演算を用いて計算し、前記計算結果を用いて入力されるベクトルを他のベクトルに置換することを特徴とする。前記ハードウェア暗号化／復号化装置は、伝送するデータと前記入力キーとを合算して、その合算結果を前記入力データとして出力する合算器を更に備えることを特徴とする。
【０００８】
前記Ｓ−ＢＯＸは、デルタ変換部、逆元計算部、逆デルタ変換部及びアフィン変換部を備えることを特徴とする。前記デルタ変換部は、入力されるベクトルの各元素をなすガロアフィールドＧＦ（２８）上の元素をガロアフィールドＧＦ（（（２２）２）２）上の元素に変換する。前記逆元計算部は、前記ガロアフィールドＧＦ（（（２２）２）２）上の元素の逆元を計算して出力する。前記逆デルタ変換部は、前記ガロアフィールドＧＦ（（（２２）２）２）上の元素の逆元をガロアフィールドＧＦ（２８）上の元素に変換する。前記アフィン変換部は、アフィン関数によって、前記変換したガロアフィールドＧＦ（２８）上の元素をアフィン変換する。
【０００９】
前記の技術的課題を達成するための本発明に係るハードウェア暗号化／復号化方法は、Ｎ個のラウンドに対応する該当Ｎ個のキーが入力される段階と、前記ラウンドのうち第１ラウンドで、前記キーのうち第１キーを用いて入力データを暗号文に変換する段階と、残りのＮ−１ラウンドのそれぞれで、順次前記キーのうち第２キーないし第Ｎキーを用いて、以前ラウンドの変換結果を他の暗号文に変換する段階と、入力キーを用いて前記第１キーないし前記第Ｎキーのそれぞれを生成する段階と、を備え、前記ラウンドのそれぞれの暗号文に変換する段階は、Ｓ−ＢＯＸ演算で、ガロアフィールドＧＦ（２８）上の逆元をガロアフィールドＧＦ（（（２２）２）２）上の演算を用いて計算し、入力されるベクトルを前記計算結果を用いて他のベクトルに置換する段階を備えることを特徴とする。前記ハードウェア暗号化／復号化方法は、伝送するデータと前記入力キーとを合算して、その合算結果を前記入力データとして出力する段階を更に備えることを特徴とする。
【発明の効果】
【００１０】
本発明に係るハードウェア暗号化／復号化装置は、ＡＥＳ暗号化アルゴリズムの実現で、Ｓ−ＢＯＸが占めるハードウェア面積及びラウンドキー発生クロックとを最小化できる。したがって、小さな面積と速い動作速度が要求されるスマートカードやＩＣカードなどの小型システムに容易に適用できる効果がある。
【発明を実施するための最良の形態】
【００１１】
本発明と本発明の動作上との利点及び、本発明の実施によって達成される目的を十分に理解するには、本発明の好ましい実施例を示す添付図面及び添付図面に記載された内容を参照しなければならない。
以下、添付図面を参照して、本発明の好ましい実施例を説明することで、本発明を詳細に説明する。各図面に付された同一参照符号は同一部材を示す。
【００１２】
図１は、本発明の一実施例に係るハードウェア暗号化装置１００のブロック図である。図１を参照すると、本発明の一実施例に係るＡＥＳ方式のハードウェア暗号化装置１００は、合算器１１０及びラウンド演算を行う複数のＮ個のラウンド１２０ないし１５０を備える。その他にも、ハードウェア暗号化装置１００は、図４に示すようなキースケジューラ４００を備える。キースケジューラ４００は、入力キーＩＮＫＥＹと複数のＮ個ラウンド１２０ないし１５０とに該当するＫＥＹ１ないしＫＥＹ１０を提供する。キースケジューラ４００については、図４の説明で更に詳細に説明する。複数のＮ個ラウンド１２０ないし１５０のそれぞれでのラウンド演算は、各ラウンドで重複する演算を共有することができる。
【００１３】
合算器１１０は、初期入力キーＩＮＫＥＹの合算を行う。すなわち、合算器１１０は、伝送するデータＴＸＤと入力キーＩＮＫＥＹとを合算して、その合算結果をラウンド１２０ないし１５０のうち第１ラウンド１２０の入力データとして出力する。ここで、伝送するデータＴＸＤのブロックの長さは、一般的な場合と同様に１２８ビットであると仮定する。
【００１４】
複数のＮ個ラウンド１２０ないし１５０は、各ラウンドに該当するＮ個のキーＫＥＹ１ないしＫＥＹ１０を入力して、暗号化のためのラウンド演算を行う。ここで、キーＫＥＹ１ないしＫＥＹ１０のそれぞれのデータの長さは１２８ビットであると仮定し、それによって、ラウンド１２０ないし１５０の数は１０個であり、１０ラウンド演算を行うと仮定する。その他にも、周知のように、キーの長さがそれぞれ１９２及び２５６ビットである場合には、１２及び１４ラウンド演算を行う。
【００１５】
ラウンド１２０ないし１５０のうち第１ラウンド１２０は、キーのうち第１キーＫＥＹ１を用いて入力データ（ＴＸＤ＋ＩＮＫＥＹ）を暗号文に変換する。それによって、残りの９ラウンド１３０ないし１５０のそれぞれは、順次キーのうち第２キーＫＥＹ２ないし第１０キーＫＥＹ１０を用いて、以前ラウンドの変換結果を他の暗号文に変換する。第１０番目の最終ラウンド１５０は、第１０キーＫＥＹ１０を用いて第９ラウンド１４０の変換結果を最終暗号文ＣＩＰＨＤに変換する。そのように、伝送するデータＴＸＤが暗号化された最終暗号文ＣＩＰＨＤは、スマートカード、ＩＣカードなどのような小型システムから伝送される秘密情報となる。その他にも、ＡＥＳ方式のハードウェア暗号化／復号化装置は、安全が維持されねばならない秘密情報の送受信のために、インターネット通信、無線ＬＡＮ通信などにも用いられる。
【００１６】
ここで、ラウンド１２０ないし１５０によって、一般的なＡＥＳ暗号化過程と同様に、ラウンド数が１０であるため、“Ｓｕｂ＿Ｂｙｔｅ変換”、“Ｓｈｉｆｔ＿Ｒｏｗ変換”、“Ｍｉｘ＿Ｃｏｌｕｍｎ変換”及び“Ａｄｄ＿Ｒｏｕｎｄ＿Ｋｅｙ演算”よりなるラウンド演算が９回行われ、最終ラウンド演算では“Ｍｉｘ＿Ｃｏｌｕｍｎ変換”を除いた“Ｓｕｂ＿Ｂｙｔｅ変換”、“Ｓｈｉｆｔ＿Ｒｏｗ変換”及び“Ａｄｄ＿Ｒｏｕｎｄ＿Ｋｅｙ演算”が１回行われる。一般的に、非線形変換である“Ｓｕｂ＿Ｂｙｔｅ変換”を行うためには、用いられるメモリと回路の複雑度とが大きいため、多量の電力を消耗する。それによって、本発明の一実施例に係るハードウェア暗号化／復号化装置は、ラウンド演算で、Ｓｕｂ＿Ｂｙｔｅ回路（図２の１６０、図３の２００）または逆Ｓｕｂ＿Ｂｙｔｅ回路（図１１の１７００、図１２の２１００）に新たなＳ−ＢＯＸ（図５及び図１３）を備え、従来と異なる方式で“Ｓｕｂ＿Ｂｙｔｅ変換”と“逆Ｓｕｂ＿Ｂｙｔｅ変換”とを行って入力されるベクトルを他のベクトルに置換する。まず、本発明の一実施例によって提案されたハードウェア暗号化装置１００では、ラウンド１２０ないし１５０のラウンド演算を行う時に、Ｓ−ＢＯＸ（図５）のハードウェアの負担及び消費電力を減らすために、“Ｓｕｂ＿Ｂｙｔｅ変換”を行うに当たって、ガロアフィールド（Ｇａｌｏｉｓ Ｆｉｅｌｄ）ＧＦ（２８）上の元素の乗算の逆元計算がガロアフィールドＧＦ（２）の合成フィールド、すなわち、ＧＦ（２２）、ＧＦ（（２２）２）及びＧＦ（（（２２）２）２）上の演算で行われる。乗算の逆元は、乗算して１となる数であり、逆数である。本発明の一実施例によって提案されたＳ−ＢＯＸ（図５）の動作については、図２、図３及び図５の説明で更に具体的に記述される。
【００１７】
図２は、図１の第１ラウンド１２０ないし第９ラウンド１４０を示す具体的なブロック図である。図２を参照すれば、第１ラウンド１２０ないし第９ラウンド１４０のそれぞれは、Ｓｕｂ＿Ｂｙｔｅ回路１６０、Ｓｈｉｆｔ＿Ｒｏｗ回路１７０、Ｍｉｘ＿Ｃｏｌｕｍｎ回路１８０及び合算器１９０を備える。前記したように、ラウンド数が１０であるため、第１ラウンド１２０ないし第９ラウンド１４０を通じて、“Ｓｕｂ＿Ｂｙｔｅ変換”、“Ｓｈｉｆｔ＿Ｒｏｗ変換”、“Ｍｉｘ＿Ｃｏｌｕｍｎ変換”及び“Ａｄｄ＿Ｒｏｕｎｄ＿Ｋｅｙ演算”よりなるラウンド演算が９回行われる。
【００１８】
Ｓｕｂ＿Ｂｙｔｅ回路１６０は、Ｓ−ＢＯＸ（図５）を通じて、“Ｓｕｂ＿Ｂｙｔｅ変換”のためのガロアフィールドＧＦ（２８）上の逆元計算で、ガロアフィールドＧＦ（（（２２）２）２）上の演算を用いて計算し、計算結果を用いて入力されるベクトルＩＮＣＩＰＨを他のベクトルに置換する。すなわち、ガロアフィールドＧＦ（２８）上の逆元計算は、ガロアフィールドＧＦ（２）の合成フィールド、すなわち、ＧＦ（２２）、ＧＦ（（２２）２）及びＧＦ（（（２２）２）２）上の演算で行われる。
【００１９】
そのような合成フィールドを用いて逆元を計算する理論については、論文“Ａｋａｓｈｉ Ｓａｔｏｈ，Ｓｕｍｉｏ Ｍｏｒｉｏｋａ，Ｋｏｈｊｉ Ｔａｋａｎｏ，ａｎｄ Ｓｅｉｊｉ Ｍｕｎｅｔｏｈ，＜Ａ Ｃｏｍｐａｃｔ Ｒｉｊｎｄａｅｌ Ｈａｒｄｗａｒｅ Ａｒｃｈｉｔｅｃｔｕｒｅ ｗｉｔｈ Ｓ−Ｂｏｘ Ｏｐｔｉｍｉｚａｔｉｏｎ＞，ＡＳＩＡＣＲＹＰＴ ２００１”を参照した。一般的な通信標準によれば、ガロアフィールドＧＦ（２８）、ＧＦ（２２）、ＧＦ（（２２）２）及びＧＦ（（（２２）２）２）のそれぞれについての原始多項式は、数式１の通りである。数式１のような原始多項式は、約分できない既約多項式である。λ＝｛１１００｝２∈ＧＦ（（２２）２）であり、φ＝｛１０｝２∈ＧＦ（２２）である。すなわち、第１係数λは、ガロアフィールドＧＦ（（２２）２）上で２進数｛１１００｝２であり、第２係数φは、ガロアフィールドＧＦ（２２）上で２進数｛１０｝２である。
【００２０】
【数１】
2005215688.tif 000003
【００２１】
Ｓｈｉｆｔ＿Ｒｏｗ回路１７０は、“Ｓｈｉｆｔ＿Ｒｏｗ変換”を行うために、Ｓｕｂ＿Ｂｙｔｅ回路１６０の出力信号を入力ベクトルとして受けて、ロー単位でシフト処理する関数によって、入力ベクトルをロー単位でシフト処理して出力する。Ｍｉｘ＿Ｃｏｌｕｍｎ回路１８０は、“Ｍｉｘ＿Ｃｏｌｕｍｎ変換”を行うために、カラム単位で置換処理する関数によって、Ｓｈｉｆｔ＿Ｒｏｗ回路１７０の出力ベクトルをカラム単位で置換処理して出力する。合算器１９０は、“Ａｄｄ＿Ｒｏｕｎｄ＿Ｋｅｙ演算”を行うために、Ｍｉｘ＿Ｃｏｌｕｍｎ回路１８０の出力ベクトルと、キーのうち該当ラウンドキーＫＥＹＮとを合算して出力する。合算器１９０から出力された暗号文ＯＵＴＣＩＰＨは、次のラウンドに入力される。
【００２２】
図３は、図１の第１０ラウンド１５０を示す具体的なブロック図である。図３を参照すれば、図１の第１０ラウンド１５０は、Ｓｕｂ＿Ｂｙｔｅ回路２００、Ｓｈｉｆｔ＿Ｒｏｗ回路２１０及び合算器２２０を備える。前記したように、ラウンド数が１０であるため、最終ラウンドである第１０ラウンド１５０を通じて、“Ｓｕｂ＿Ｂｙｔｅ変換”、“Ｓｈｉｆｔ＿Ｒｏｗ変換”及び“Ａｄｄ＿Ｒｏｕｎｄ＿Ｋｅｙ演算”よりなるラウンド演算が１回行われる。Ｓｕｂ＿Ｂｙｔｅ回路２００、Ｓｈｉｆｔ＿Ｒｏｗ回路２１０及び合算器２２０の動作は、図２のＳｕｂ＿Ｂｙｔｅ回路１６０、Ｓｈｉｆｔ＿Ｒｏｗ回路１７０及び合算器１９０の動作と同じであるため、ここでは説明を省略する。
【００２３】
図４は、図１のキーＩＮＫＥＹ、ＫＥＹ１ないしＫＥＹ１０を発生させるキースケジューラ４００を示すブロック図である。図４を参照すると、前記キースケジューラ４００は、レジスタ４１０、マルチプレクサ４２０及びキー生成器４３０を備える。
【００２４】
図４で、入力キーＩＮＫＥＹは、ユーザーが暗号化に用いるキーであって、本発明に係るＡＥＳ暗号化過程のためにユーザーによって入力されるキーである。キー生成器４３０は、マルチプレクサ４２０を介して入力される入力キーＩＮＫＥＹを用いて、第１ラウンド１２０で用いられる第１キーＫＥＹ１を生成する。キースケジューラ４００は、第１ラウンド１２０の演算が行われる前である初期に、図１の合算器１１０に入力キーＩＮＫＥＹを提供する。図１の合算器１１０への入力キーＩＮＫＥＹの提供と、キー生成器４３０での前記第１キーＫＥＹ１の発生とは、システムクロック（図示せず）の１つのサイクルで行なうことができる。キー生成器４３０で生成された第１キーＫＥＹ１は、レジスタ４１０に保存されると共に第１ラウンド１２０のラウンドキーとなり、次のシステムクロックに、レジスタ４１０からマルチプレクサ４２０に入力される。マルチプレクサ４２０は、所定制御信号ＲＮＤＳＴの論理状態によって、選択的に入力キーＩＮＫＥＹまたはレジスタ４１０から出力された第１キーＫＥＹ１を出力する。第１キーＫＥＹ１がキー生成器４３０に入力されれば、キー生成器４３０は第２キーＫＥＹ２を生成して出力する。
【００２５】
すなわち、残りの９ラウンド１３０ないし１５０のそれぞれで用いられる第２キーＫＥＹ２ないし第１０キーＫＥＹ１０は、キー生成器４３０が、以前ラウンドで用いられるキーＫＥＹＮが保存されるレジスタ４１０の値を用いて、順次発生させる。例えば、第１キーＫＥＹ１が、レジスタ４１０からマルチプレクサ４２０を介してキー生成器４３０に入力される時、キー生成器４３０は第１キーＫＥＹ１を用いて、第２ラウンド１３０で用いられる第２キーＫＥＹ２を発生させる。
【００２６】
そのように、キースケジューラ４００が入力キーＩＮＫＥＹを用いて、第１キーＫＥＹ１ないし第１０キーＫＥＹ１０のそれぞれを生成することで、１０ケラウンド１２０ないし１５０に該当ラウンドキーＫＥＹ１ないしＫＥＹ１０を提供する。前述のように、図１の合算器１１０への入力キーＩＮＫＥＹの提供と、第１キーＫＥＹ１の発生とは、システムクロックの１つのサイクルで行われるため、図１のような本発明に係るＡＥＳ暗号化アルゴリズムを実現する時、暗号化過程には１０クロックサイクルが要求される。暗号化過程の逆過程を行う復号化過程には、２０クロックサイクルが要求される。そのように、本発明のＡＥＳ暗号化過程では、キー発生のクロックサイクル数を最小化して速い演算を行うようにした。復号化過程については、図１０ないし図１３の説明で更に具体的に説明する。
【００２７】
図５は、図２及び図３のＳｕｂ＿Ｂｙｔｅ回路１６０、２００で用いられるＳ−ＢＯＸを示すブロック図である。図５を参照すると、Ｓ−ＢＯＸは、デルタ変換部（δ）１６１、逆元計算部（Ｘ−１）１６２、逆デルタ変換部（δ−１）１６３及びアフィン変換部（ＡＦＦＩＥＮ）１６４を備える。
【００２８】
デルタ変換部１６１は、入力されるベクトルＳＢＩＮの各元素をなすガロアフィールドＧＦ（２８）上の元素を、ガロアフィールドＧＦ（（（２２）２）２）上の元素に同型変換させる。図５に示すように、入力されるベクトルＳＢＩＮは１２８ビットであり、それらは、８ビットのデータを有する１６元素Ｓ００ないしＳ３３よりなる。デルタ変換部１６１の同型変換式は、数式２及び数式３の通りである。数式２で、ｘは入力ベクトルＳＢＩＮであり、ｙは同型変換ベクトルδによって変換したベクトルである。
【００２９】
【数２】
2005215688.tif 000004
【００３０】
【数３】
2005215688.tif 000005
【００３１】
逆元計算部１６２は、ガロアフィールドＧＦ（（（２２）２）２）上の元素の乗算の逆元を計算して出力する。逆元計算部１６２の逆元計算は、図６で詳細に説明する。
逆デルタ変換部１６３は、逆元計算部１６２で計算されたガロアフィールドＧＦ（（（２２）２）２）上の元素の乗算の逆元を、ガロアフィールドＧＦ（２８）上の元素に逆同型変換させる。逆デルタ変換部１６３の逆同型変換式は、数式４及び数式５の通りである。数式４で、ｙは逆デルタ変換部１６３が入力される逆元ベクトルであり、ｘは逆同型変換ベクトルδ−１によって逆変換したベクトルである。
【００３２】
【数４】
2005215688.tif 000006
【００３３】
【数５】
2005215688.tif 000007
【００３４】
アフィン変換部１６４は、アフィン関数によって、逆デルタ変換部１６３で変換したガロアフィールドＧＦ（２８）上の元素をアフィン変換させる。図５に示すように、アフィン変換したベクトルＳＢＯＵＴは、デルタ変換部１６１が入力されるベクトルＳＢＩＮと同様に１２８ビットであり、それらは、８ビットのデータを有する１６元素Ｓ００’ないしＳ３３’よりなる。アフィン変換式は、数式６の通りである。数式６で、ｘ０ないしｘ７は、逆デルタ変換部１６３で変換したガロアフィールドＧＦ（２８）上の元素（８ビットデータ）のビット値であり、ｘ’０ないしｘ’７は、アフィン変換した元素（８ビットデータ）のビット値である。
【００３５】
【数６】
2005215688.tif 000008
【００３６】
図６は、ＧＦ（（（２２）２）２）上で、逆元計算のための図５の逆元計算部１６２を示す具体的なブロック図である。図６を参照すると、逆元計算部１６２は、第１合算器６０１、第１乗算器６０２、第１自乗器６０３、第１係数乗算器６０８、第２合算器６０４、第１逆元計算器６０５、第２乗算器６０６及び第３乗算器６０７を備える。第１合算器６０１は、ガロアフィールドＧＦ（（（２２）２）２）上の元素を形成する８ビットデジタルデータの下位４ビットデータＰＬ［３：０］と、上位４ビットデータＰＨ［３：０］とを第１合算する。第１乗算器６０２は、ガロアフィールドＧＦ（（２２）２）上で、第１合算結果に下位４ビットデータＰＬ［３：０］を第１乗算する。第１自乗器６０３は、上位４ビットデータＰＨ［３：０］を第１自乗する。第１係数乗算器６０８は、第１自乗結果に第１係数λ（数式１参照）を乗算する。第２合算器６０４は、第１乗算結果と第１自乗結果とを第２合算する。第１逆元計算器６０５は、ガロアフィールドＧＦ（（２２）２）上で、第２合算結果の逆元を計算する。第１逆元計算器６０５の逆元計算については、図７の説明で詳細に記述する。
【００３７】
第２乗算器６０６は、ガロアフィールドＧＦ（（２２）２）上で、第２合算結果の逆元に第１合算結果を第２乗算して、第２乗算結果を前記下位４ビットデータの逆元ＰＬ−１［３：０］として出力する。第３乗算器６０７は、ガロアフィールドＧＦ（（２２）２）上で、第２合算結果の逆元に前記上位４ビットデータＰＨ［３：０］を第３乗算して、第３乗算結果を上位４ビットデータの逆元ＰＨ−１［３：０］として出力する。
【００３８】
図７は、ＧＦ（（２２）２）上で、逆元計算のための図６の第１逆元計算器６０５を示す具体的なブロック図である。図７を参照すると、図６の第１逆元計算器６０５は、第３合算器７０１、第４乗算器７０２、第２自乗器７０３、第２係数乗算器７０４、第４合算器７０５、第２逆元計算器７０６、第５乗算器７０７及び第６乗算器７０８を備える。第３合算器７０１は、図６の第２合算器６０４から出力される第２合算結果をなす４ビットデジタルデータの下位２ビットデータＱＬ［１：０］と、上位２ビットデータＱＨ［１：０］とを第３合算する。第４乗算器７０２は、ガロアフィールドＧＦ（２２）上で、第３合算結果に下位２ビットデータＱＬ［１：０］を第４乗算する。第２自乗器７０３は、上位２ビットデータＱＨ［１：０］を第２自乗する。第２係数乗算器７０４は、第２自乗結果に第２係数φ（数式１参照）を乗算する。第４合算器７０５は、第４乗算結果と第２係数乗算結果とを第４合算する。第２逆元計算器７０６は、第４合算結果の自乗を計算して、第４合算結果の逆元として出力する。すなわち、第４合算結果の自乗は、その逆元と同じである。第５乗算器７０７は、ガロアフィールドＧＦ（２２）上で、第４合算結果の逆元に第３合算結果を第５乗算して、第５乗算結果を下位２ビットデータの逆元ＱＬ−１［１：０］として出力する。前６乗算器７０８は、ガロアフィールドＧＦ（２２）上で、前４合算結果の逆元に上位２ビットデータを第６乗算して、第６乗算結果を上位２ビットデータの逆元ＱＨ−１［１：０］として出力する。
【００３９】
図８は、ＧＦ（（２２）２）上で、乗算のための図６の４ビット乗算器６０２、６０６、６０７を示す具体的なブロック図である。図８を参照すると、図６の４ビット乗算器６０２、６０６、６０７は、第５合算器８０１、第６合算器８０２、第７乗算器８０３、第８乗算器８０４、第９乗算器８０５、第７合算器８０６、第３係数乗算器８０７及び第８合算器８０８を備える。前記４ビット乗算器６０２、６０６、６０７は、２個の４ビットデジタルデータを第１データＡ及び第２データＢとして入力して、ガロアフィールドＧＦ（（２２）２）上で、２個の４ビットデータの乗算値Ｍを計算する。第５合算器８０１は、第２データＢの下位２ビットデータＢＬ［１：０］と上位２ビットデータＢＨ［１：０］とを第５合算する。第６合算器８０２は、第１データＡの下位２ビットＡＬ［１：０］と上位２ビットデータＡＨ［１：０］とを第６合算する。第７乗算器８０３は、ガロアフィールドＧＦ（２２）上で、第２データＢの下位２ビットデータＢＬ［１：０］及び、第１データＡの下位２ビットデータＡＬ［１：０］を第７乗算する。第８乗算器８０４は、第２データＢの上位２ビットデータＢＨ［１：０］及び、第１データＡの上位２ビットデータＡＨ［１：０］を第８乗算する。第９乗算器８０５は、ガロアフィールドＧＦ（２２）上で、第５合算結果に第６合算結果を第９乗算する。第７合算器８０６は、第９乗算結果と第７乗算結果とを第７合算して、第７合算結果を４ビットデータの乗算値の上位２ビットデータＭＨ［１：０］として出力する。第３係数乗算器８０７は、第８乗算結果に第２係数φ（数式１参照）を乗算する。第８合算器８０８は、第７乗算結果と第２係数乗算結果とを第８合算して、第８合算結果を４ビットデータの乗算値の下位２ビットデータＭＬ［１：０］として出力する。
【００４０】
図９は、ＧＦ（２２）上で、乗算のための図７及び図８の２ビット乗算器７０２、７０７、７０８、８０３、８０４、８０５を示す具体的なブロック図である。図９を参照すれば、図７及び図８の２ビット乗算器７０２、７０７、７０８、８０３、８０４、８０５は、第１論理積ロジック９０１、第２論理積ロジック９０２、第３論理積ロジック９０３、第４論理積ロジック９０４、第１排他的論理和ロジック９０５、第２排他的論理和ロジック９０６及び第３排他的論理和ロジック９０７を備える。２ビット乗算器７０２、７０７、７０８、８０３、８０４、８０５は、２個の２ビットデジタルデータを第３データＣ及び第４データＤとして入力されて、ガロアフィールドＧＦ（２２）上で、２個の２ビットデータＣ、Ｄの乗算値を計算する。２個の２ビットデータＣ、Ｄの乗算値の計算は、数式７を用いる。すなわち、第３データＣをａｘ＋ｂ、第４データＤをｃｘ＋ｄで示せば、数式７が成り立つ。数式１で、ガロアフィールドＧＦ（２２）上で原始多項式はｘ２＋ｘ＋１であり、その原始多項式は約分できない既約多項式であるため、数式７でのようにｘ２はｘ＋１と同じである。数式７で、ａ、ｃは２ビットデータのうち上位ビットデータであり、ｂ、ｄは２ビットデータのうち下位ビットデータである。
【００４１】
【数７】
2005215688.tif 000009
【００４２】
したがって、２ビット乗算器７０２、７０７、７０８、８０３、８０４、８０５は、次の通りに乗算値を計算する。第１論理積ロジック９０１は、第３データＣ及び第４データＤの上位ビットデータａ、ｃを第１論理積演算する。第２論理積ロジック９０２は、第３データＣの下位ビットｂと第４データＤの上位ビットｃとを第２論理積演算する。第３論理積ロジック９０３は、第３データＣの上位ビットａと第４データＤの下位ビットｄとを第３論理積演算する。第４論理積ロジック９０４は、第３データＣ及び第４データＤの下位ビットデータｂ、ｄを第４論理積演算する。第１排他的論理和ロジック９０５は、第１論理積演算結果ａｃ及び第２論理積演算結果ｂｃを第１排他的論理和演算する。第２排他的論理和ロジック９０６は、第１排他的論理和演算結果と第３論理積演算結果ａｄとを第２排他的論理和演算して、第２排他的論理和演算結果を、２ビットデータの乗算値の上位ビットデータａｃ＋ａｄ＋ｂｃとして出力する。第３排他的論理和ロジック９０７は、第１論理積演算結果ａｃ及び第４論理積演算結果ｂｄを第３排他的論理和演算して、第３排他的論理和演算結果を２ビットデータの乗算値の下位ビットデータａｃ＋ｂｄとして出力する。
【００４３】
図１０は、図１のハードウェア暗号化装置１００から伝送された暗号文を復号するハードウェア復号化装置を示す一例である。図１０に示すように、受信側でハードウェア復号化装置は、図１のハードウェア暗号化装置１００から伝送された暗号文ＣＩＰＨＤを受信し、ユーザーから入力される入力キーＩＮＫＥＹを用いて暗号文ＣＩＰＨＤを平文に復号する。前記ハードウェア復号化装置から出力される平文は、スマートカード、ＩＣカード、インターネット通信、無線ＬＡＮ通信などのようなシステムから伝送される秘密情報や認証／署名データである。復号化過程は、前述のＡＥＳ暗号化過程の逆過程を行うものであって、図１のように、ハードウェア暗号化装置１００が１０ラウンド演算を行う場合に、ハードウェア復号化装置は、暗号化過程の逆過程を更に行って総２０ラウンド演算を行う。ハードウェア復号化装置は、合算器１１００と１０個のラウンド１２００ないし１５００とを行うことで、平文を出力する。復号化時に用いられるキーＩＮＫＥＹないしＫＥＹ１０は、暗号化時に用いられるキーＩＮＫＥＹないしＫＥＹ１０を逆順で用いる。まず、キースケジューラ４００は、復号化のために入力キーＩＮＫＥＹを用いて、暗号化過程と同じ方法でＫＥＹ１からＫＥＹ１０まで生成する。ＫＥＹ１０が生成されれば、図１０のような復号化過程を行い、その時、キースケジューラ４００によって、それぞれのラウンド１２００ないし１５００で用いられるラウンドキーＫＥＹ９ないしＩＮＫＥＹが生成される。その時、そのような復号化過程に必要なシステムクロックサイクル数は、前述したように、２０サイクルが要求される。
【００４４】
図１１は、図１０の復号過程にある第１０ラウンドないし第２ラウンド１２００ないし１４００を示す具体的なブロック図である。図１１に示されたように、ラウンド１２００ないし１４００は、逆Ｓｈｉｆｔ＿Ｒｏｗ回路１６００で暗号文Ｉ＿ＩＮＣＩＰＨを“逆Ｓｈｉｆｔ＿Ｒｏｗ変換”した後、逆Ｓｕｂ＿Ｂｙｔｅ回路１７００で“逆Ｓｕｂ＿Ｂｙｔｅ変換”を行う。逆Ｓｕｂ＿Ｂｙｔｅ回路１７００の結果値は、合算器１８００で該当キーＫＥＹＮと合算され、その合算結果値は、逆Ｍｉｘ＿Ｃｏｌｕｍｎ回路１９００に入力される。逆Ｍｉｘ＿Ｃｏｌｕｍｎ回路１９００は“逆Ｍｉｘ＿Ｃｏｌｕｍｎ変換”を行う。
【００４５】
図１２は、図１０の第１ラウンド１５００を示す具体的なブロック図である。図１２を参照すれば、図１０の第１ラウンド１５００は、逆Ｓｈｉｆｔ＿Ｒｏｗ回路２０００、逆Ｓｕｂ＿Ｂｙｔｅ回路２１００及び合算器２２００を備える。最終ラウンドである第１ラウンド１５００では、“逆Ｓｈｉｆｔ＿Ｒｏｗ変換”、“逆Ｓｕｂ＿Ｂｙｔｅ変換”及び“Ａｄｄ＿Ｒｏｕｎｄ＿Ｋｅｙ演算”よりなるラウンド演算が１回行われる。
【００４６】
図１３は、図１１及び図１２の逆ＳＵＢ＿ＢＹＴＥ回路１７００、２１００に用いられる逆Ｓ−ＢＯＸを示す具体的なブロック図である。図１３を参照すると、逆Ｓ−ＢＯＸは、逆アフィン変換部２３００、デルタ変換部２４００、逆元計算部２５００及び逆デルタ変換部２６００を通じて、図５の暗号化変換の逆過程を行う。
当業者ならば、図１０ないし図１３の逆変換過程は十分に理解でき、実際ハードウェアで実現できるため、そのような逆変換過程について具体的な説明を省略する。
【００４７】
前述のように、本発明の一実施例に係るＡＥＳ方式のハードウェア暗号化／復号化装置で、非線形変換関数による演算を行うＳ−ＢＯＸ（図５）は、ＧＦ（２８）上の元素の乗算の逆元計算を、合成フィールドよりなるＧＦ（（（２２）２）２）上の演算を用いて計算する。また、ハードウェア暗号化／復号化装置は、初期ラウンドキーの生成時にクロックの無駄が無く、各ラウンドで用いられるキーＫＥＹＮを毎クロックごとに生成する最適化されたキースケジューラ４００構造を適用する。したがって、Ｓ−ＢＯＸ（図５）または逆Ｓ−ＢＯＸ（図１３）のゲートサイズが約４００個となってハードウェアの負担を減らすことができ得、従来技術に比べて非線形変換関数演算のためのクロック数が減る。そのようなＳ−ＢＯＸ（図５）または逆Ｓ−ＢＯＸ（図１３）の演算は、可変的なキーの長さ、すなわち、１２８、１９２及び２５６ビットのそれぞれによって１０、１２及び１４ラウンドで行われる。
【００４８】
以上のように、図面と明細書とで最良の実施例が開示された。ここで、特定用語を用いたが、これは単に、本発明を説明するための目的で用いられたものであり、意味限定や特許請求の範囲に記載された本発明の範囲を制限するために用いられたものではない。したがって、当業者ならば、これから多様な変形及び均等な他の実施例が可能であるということが理解できるであろう。したがって、本発明の真の技術的保護範囲は、特許請求の範囲の技術的思想によって決めなければならない。
【産業上の利用可能性】
【００４９】
本発明に係るハードウェア暗号化／復号化装置及び方法は、安全認証が要求されるインターネット通信、無線ＬＡＮ通信、スマートカード通信及びＩＣカード通信などに用いられる。
【図面の簡単な説明】
【００５０】
【図１】本発明の一実施例に係るハードウェア暗号化装置のブロック図である。
【図２】図１の第１ラウンド１２０ないし第９ラウンド１４０を示す具体的なブロック図である。
【図３】図１の第１０ラウンド１５０を示す具体的なブロック図である。
【図４】図１のキーを発生させるキースケジューラを示すブロック図である。
【図５】図２及び図３のＳｕｂ＿Ｂｙｔｅ回路１６０で用いられるＳ−ＢＯＸを示すブロック図である。
【図６】ＧＦ（（（２２）２）２）上で、逆元計算のための図５の逆元計算部１６２を示す具体的なブロック図である。
【図７】ＧＦ（（２２）２）上で、逆元計算のための図６の第１逆元計算器６０５を示す具体的なブロック図である。
【図８】ＧＦ（（２２）２）上で、乗算のための図６の４ビット乗算器６０２、６０６、６０７を示す具体的なブロック図である。
【図９】ＧＦ（２２）上で、乗算のための図７及び図８の２ビット乗算器７０２、７０７、７０８、８０３、８０４、８０５を示す具体的なブロック図である。
【図１０】図１のハードウェア暗号化装置から伝送された暗号文を復号するハードウェア復号化装置を示す例示図である。
【図１１】図１０の復号過程にある第１０ラウンドないし第２ラウンド１２００ないし１４００を示す具体的なブロック図である。
【図１２】図１０の第１ラウンド１５００を示す具体的なブロック図である。
【図１３】図１１及び図１２の逆Ｓｕｂ＿Ｂｙｔｅ回路１７００、２１００で用いられる逆Ｓ−ＢＯＸを示すブロック図である。
【符号の説明】
【００５１】
１００    ハードウェア暗号化装置
１１０    合算器
１２０〜１５０    ラウンド
ＩＮＫＥＹ    入力キー
ＫＥＹ１〜ＫＥＹ１０    キー
ＴＸＤ    伝送するデータ
ＣＩＰＨＤ    最終暗号文
【図１】
2005215688.tif 000010
【図２】
2005215688.tif 000011
【図３】
2005215688.tif 000012
【図４】
2005215688.tif 000013
【図５】
2005215688.tif 000014
【図６】
2005215688.tif 000015
【図７】
2005215688.tif 000016
【図８】
2005215688.tif 000017
【図９】
2005215688.tif 000018
【図１０】
2005215688.tif 000019
【図１１】
2005215688.tif 000020
【図１２】
2005215688.tif 000021
【図１３】
2005215688.tif 000022