JP4745598B2 - 暗号回路 - Google Patents
暗号回路 Download PDFInfo
- Publication number
- JP4745598B2 JP4745598B2 JP2002558244A JP2002558244A JP4745598B2 JP 4745598 B2 JP4745598 B2 JP 4745598B2 JP 2002558244 A JP2002558244 A JP 2002558244A JP 2002558244 A JP2002558244 A JP 2002558244A JP 4745598 B2 JP4745598 B2 JP 4745598B2
- Authority
- JP
- Japan
- Prior art keywords
- function
- circuit
- processing circuit
- output
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Storage Device Security (AREA)
Description
本発明は、暗号装置に用いられるデータスクランブル回路、データスクランブル回路で用いる拡大鍵を生成する拡大鍵生成回路およびこれらデータスクランブル回路、拡大鍵生成回路を備える暗号回路に関する。
(背景技術)
現在広く使用されている共通鍵暗号として、DES(Data Encryption Standard)が知られている。DESは、1977年に米国政府の標準局NIST(National Institute of Standard Technology)が定めた標準であり、64ビット入出力、鍵長64ビット(そのうち8ビットはパリティであり実質的には鍵長56ビット)のブロック暗号である。
DESは、F関数と呼ばれる非線形関数処理を16回繰り返し行うアルゴリズムである。このため、DESによる暗号化/復号化を処理するための暗号回路は、たとえば特開2000−75785号公報に示されるように、F関数を繰り返し行うクロック同期ループ構成で実現することが可能である。
DESにより暗号化された暗号文を暗号鍵の総当たり法により解読する場合、鍵長64ビット(56ビット)の場合であっても、計算量的安全性評価の範囲内であると数年前では考えられていた。しかながら、コンピュータの性能向上に伴い、鍵長64ビット(56ビット)でも十分な計算量的安全性を確保することが困難となってきている。このため、複数の暗号鍵を用いて、処理を複数回繰り返す多段DESが用いられる。たとえば、2〜3の暗号鍵を用いて処理を3回繰り返すトリプルDESが一般的に多く用いられている。
このようなDESに代わる次世代共通鍵暗号として、鍵長128/192/256ビット、処理ブロック128ビットの暗号AESを標準化しようとする動きがあり、米国標準としてのAESが固まりつつある。
本件出願人は、このようなAESに準拠した仕様(鍵長128/192/256ビット、処理ブロック128ビット)で高い安全性を維持するとともに高速処理を実現するためのアルゴリズムSC2000を発表し、このSC2000に用いる演算装置および演算方法として特願2000−212482号、このSC2000に用いる拡大鍵生成装置として特願2000−212814号において提案している。
このSC2000は、DESと同様にいくつかの基本関数を繰り返し行うアルゴリズムであり、各関数処理回路をハードウェアで構成する場合、ループ回路を構成して繰り返し処理を実行するように構成できる。しかしながら、SC2000の暗号方式では、DESにようにF関数だけで構成される暗号方式とは異なり、単純に1つの関数処理回路を1つの同期ループ内で処理できるように構成することができず、各種関数処理回路による関数処理を同期ループ内で効率的に行えるように、各種関数処理回路をいかに配置するかがハードウェア実装時における大きな課題となっている。
本発明は、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号であるSC2000のアルゴリズムを高速かつコンパクトなハードウェアで実行する回路構成を提供することを目的とする。
また、本発明では、電子商取引や電子マネーに応用されるスマートカードに暗号回路を搭載するために、SC2000アルゴリズムをさらにコンパクトなハードウェアで実行する回路構成を提供することを目的とする。
(発明の開示)
前述したような課題を解決するために、本発明に係るデータスクランブル回路は、暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数およびR関数とを用いてデータスクランブルを行い、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を実行するデータスクランブル回路であって、I関数を処理した後、B関数、I関数、R関数、R関数、I関数の順に処理を行う処理ブロックをn回処理し、その後B関数、I関数の順に処理を行うために、I関数を処理するI関数処理回路と、B関数を処理するB関数処理回路と、R関数を処理するR関数処理回路とを実装しているデータスクランブル回路である。
ここで、I関数を処理した後、B関数、I関数、R関数、R関数、I関数の順に処理を行う処理ブロックをn回処理し、その後B関数、I関数の順に処理を行うための各I関数処理回路、B関数処理回路およびR関数処理回路を全て実装するように構成できる。
また、B関数処理回路、I関数処理回路、R関数処理回路、R関数処理回路、I関数処理回路の順に接続されたクロック同期ループを構成し、I関数処理回路、クロック同期ループ、B関数処理回路、I関数処理回路の順に接続される構成とすることができる。
また、本発明では、暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数およびR関数とを用いてデータスクランブルを行い、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を実行するデータスクランブル回路であって、I関数、B関数を処理した後、I関数、R関数、R関数、I関数、B関数の順に処理を行う処理ブロックをn回処理し、その後I関数の処理を行うために、I関数を処理するI関数処理回路と、B関数を処理するB関数処理回路と、R関数を処理するR関数処理回路とを実装しているデータスクランブル回路を提案する。
ここで、I関数処理回路、R関数処理回路、R関数処理回路、I関数処理回路、B関数処理回路の順に接続されたクロック同期ループを構成し、I関数処理回路、B関数処理回路、クロック同期ループ、I関数処理回路の順に接続された構成とすることができる。
また、第1I関数処理回路と;第2I関数処理回路、第1R関数処理回路、第2R関数処理回路および第3I関数処理回路が順に接続される処理ブロックと;第1I関数処理回路の出力と、処理ブロックの出力とを選択的に出力するセレクタと;セレクタの出力が接続されるB関数処理回路と;B関数処理回路の出力をクロック周期毎にラッチして処理ブロックに入力するレジスタと;レジスタの出力が接続される第4I関数処理回路とを備え、処理ブロックとB関数処理回路とによりクロック同期ループを構成することができる。
また、本発明では、暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数およびR関数とを用いてデータスクランブルを行い、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を実行するデータスクランブル回路であって、I関数、B関数、I関数の順に処理を行った後、R関数、R関数、I関数、B関数、I関数の順に処理を行う処理ブロックをn回処理するために、I関数を処理するためのI関数処理回路と、B関数を処理するB関数処理回路と、R関数を処理するR関数処理回路とを実装する構成とすることができる。
ここで、第1I関数処理回路、B関数処理回路、第2I関数処理回路が順に接続される第1処理ブロックと;第1R関数処理回路、第2R関数処理回路が順に接続される第2処理ブロックと;入力データと第2R関数処理回路の出力とのうちいずれかを選択的に第1I関数処理回路に入力するためのセレクタとを備える構成とすることができる。
さらに、本発明では、暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数およびR関数とを用いてデータスクランブルを行い、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を実行するデータスクランブル回路であって、I関数、B関数、I関数の順に処理を行う第1処理ブロックと、R関数、R関数の順に処理を行う第2処理ブロックとを交互に複数回処理するために、I関数を処理するためのI関数処理回路と、B関数を処理するB関数処理回路と、R関数を処理するR関数処理回路とを実装する構成を提案する。
ここで、第1I関数処理回路、B関数処理回路、第2I関数処理回路が順に接続される第1処理ブロックと;第1R関数処理回路、第2R関数処理回路が接続される第2処理ブロックと;第1処理ブロックの出力と第2処理ブロックの出力のうちいずれかを選択的に出力する出力側セレクタと;入力データと出力側セレクタの出力とのうちいずれかを選択的に第1I関数処理回路に入力するための入力側セレクタとを備える構成とすることができる。
また、本発明では、暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数およびR関数とを用いてデータスクランブルを行い、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を実行するデータスクランブル回路であって、I関数、B関数、I関数の順に処理を行う第1処理ブロックと、R関数処理を行う第2処理ブロックとを所定の順に複数回処理するために、I関数を処理するためのI関数処理回路と、B関数を処理するB関数処理回路と、R関数を処理するR関数処理回路とを実装する構成とすることができる。
ここで、第1I関数処理回路、B関数処理回路、第2I関数処理回路が順に接続される第1処理ブロックと;第1R関数処理回路を備える第2処理ブロックと;第1処理ブロックの出力と第2処理ブロックの出力のうちいずれかを選択的に出力する出力側セレクタと;入力データと出力側セレクタの出力とのうちいずれかを選択的に第1I関数処理回路に入力するための入力側セレクタとを備える構成とすることができる。
B関数処理回路は、32ビット×4の入力データを4ビット×32の入力データに変換する入力データ変換部と、入力データ変換部に接続される32個の4ビットSboxと、各4ビットSboxから出力される4ビット×32の出力データを32ビット×4の出力データに変換する出力データ変換部とを備える構成とすることができる。
また、R関数処理回路は、32ビット×4の入力データのうち2つの入力データのビットを攪拌して32ビット×2の出力データを出力するF関数処理回路と、F関数処理回路の出力データを入力データのうち残りの2つと排他的論理和を演算する2つのXOR回路とを備える構成とすることができる。
このF関数処理回路は、32ビット×2の入力データを非均等なビット数の複数の入力データに変換する入力データ変換部と、入力データ変換部に接続される複数のSboxと、Sboxからの出力を32ビット×2の出力データに変換する出力データ変換部とを備える構成とすることができる。
さらに、複数のSboxは、2個の6ビットSboxと4個の5ビットSboxとで構成され、入力データ変換部は32ビット×2の入力データを6ビット×2、5ビット×4の入力データに変換するように構成できる。
また、本発明では、暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数およびR関数とを用いてデータスクランブルを行い、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を実行するデータスクランブル回路であって、I関数を処理するためのI関数処理回路と、B関数を処理するB関数処理回路と、R関数を処理するR関数処理回路とが複数のセレクタを介して接続され、複数のセレクタが、1サイクルでI関数の処理を行う第1設定と、1サイクルでB関数、I関数、R関数の順に処理を行う第2設定と、1サイクルでR関数、I関数の順に処理を行う第3設定と、1サイクルでB関数、I関数の順に処理を行う第4設定を有するデータスクランブル回路を提案する。
ここで、入力データとフィードバックされる出力データとが入力され、いずれか一方を選択的に出力する第1セレクタと、第1セレクタの出力が入力されるB関数処理回路と、第1セレクタの出力と前記B関数処理回路の出力とが入力され、いずれか一方を出力する第2セレクタと、第2セレクタの出力が入力される第1I関数処理回路と、第1I関数処理回路の出力が入力されるR関数処理回路と、第1I関数処理回路の出力、R関数処理回路の出力およびR関数処理回路の出力ビットをクロスさせた出力が入力され、いずれか1つを選択的に出力する第3セレクタと、第3セレクタの出力が入力され、出力データを出力する第2I関数処理回路と、拡大鍵と”0”とを含むデータのうちからI関数処理のパラメータを選択して第1I関数処理回路に入力する第4セレクタと、拡大鍵と”0”とを含むデータのうちからI関数処理のパラメータを選択して第2I関数処理回路に入力する第5セレクタとを備える構成とすることができる。
さらに、初期値を格納するIVレジスタをさらに備え、第4セレクタおよび第5セレクタは、拡大鍵と”0”とIVレジスタの値とのうちからI関数処理のパラメータを選択するように構成され、複数のセレクタが、第1I関数処理回路および第2I関数処理回路にIVレジスタの値を入力することによりCBC(Cipher Block Chaining)モード処理を実行する第5設定を備える構成とすることができる。
また、R関数処理回路に代えて所定ビット数の1/2のビット数毎にR関数処理を行うR/2関数処理回路を備え、複数のセレクタの第2設定では、1クロックでB関数、I関数、R/2関数の順に処理を行い、次の1クロックでR/2関数の処理を行うことで、1サイクルでB関数、I関数、R関数の順に処理を行い、複数のセレクタの第3設定では、1クロックでR/2関数の処理を行い、次の1クロックでR/2関数、I関数の順に処理を行うことで、1サイクルでR関数、I関数の順に処理を行うように構成できる。
ここで、入力データとフィードバックされる出力データとが入力され、いずれか一方を選択的に出力する第1セレクタと、第1セレクタの出力が入力されるB関数処理回路と、第1セレクタの出力とB関数処理回路の出力とが入力され、いずれか一方を出力する第2セレクタと、第2セレクタの出力が入力される第1I関数処理回路と、第1I関数処理回路の出力が入力されるR/2関数処理回路と、第1I関数処理回路の出力、R/2関数処理回路の出力およびR/2関数処理回路の出力ビットをクロスさせた出力が入力され、いずれか1つを選択的に出力する第3セレクタと、第3セレクタの出力が入力され、出力データを出力する第2I関数処理回路と、拡大鍵と”0”とを含むデータのうちからI関数処理のパラメータを選択して第1I関数処理回路に入力する第4セレクタと、拡大鍵と”0”とを含むデータのうちからI関数処理のパラメータを選択して第2I関数処理回路に入力する第5セレクタとを備える構成とすることができる。
さらに、初期値を格納するIVレジスタをさらに備え、第4セレクタおよび第5セレクタは、拡大鍵と”0”とIVレジスタの値とのうちからI関数処理のパラメータを選択するように構成され、複数のセレクタが、第1I関数処理回路および第2I関数処理回路にIVレジスタの値を入力することによりCBC(Cipher Block Chaining)モード処理を実行する第5設定を備える構成とすることができる。
また、本発明では、暗号鍵から中間鍵を生成する中間鍵生成回路と;中間鍵生成回路から生成された中間鍵から複数の拡大鍵を生成する拡大鍵生成回路と;データと拡大鍵との排他的論理和を演算するI関数、データのビットを攪拌するB関数およびR関数とを用いてデータスクランブルを行うデータスクランブル回路とを備える鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を実行する暗号回路であって、中間鍵生成回路は、データスクランブル回路のデータスクランブル処理の前に中間鍵生成処理を実行し、拡大鍵生成回路は、データスクランブル回路のデータスクランブル処理と並列的に拡大鍵の生成を行うように構成される暗号回路を提案する。
ここで、中間鍵生成回路は、オーダー基数に対応して設定されたオーダーパラメータテーブルと、インデックス基数に対応して設定されたインデックスパラメータテーブルとに基づいて、拡大鍵生成回路の拡大鍵生成処理で使用する中間鍵を逐次生成するように構成できる。
また、中間鍵生成回路は、暗号鍵を32ビット単位に分ける入力データ変換部と、入力データ変換部からの入力データに所定値を加算する加算回路と、入力データ変換部からの入力データに所定値を乗算する乗算回路と、加算回路の出力値と前記乗算回路の出力値との排他的論理和を演算するXOR回路とを備え、加算回路において加算する所定値を予め演算により求めた既設定値として格納する記憶手段をさらに備える構成とすることができる。
さらに、中間鍵生成回路は、オーダー基数に対応して設定されたオーダーパラメータテーブルとインデックス基数に対応して設定されたインデックスパラメータテーブルとに基づいて、データスクランブルを行う際にオーダーの種類とインデックスの種類とに応じた個数の中間鍵を生成し、拡大鍵生成回路は、インデックスパラメータテーブルに設定されるテーブル数だけ設けられ、オーダーパラメータテーブルとインデックスパラメータテーブルとに従って選択的に入力される中間鍵から拡大鍵を生成するように構成できる。
また、拡大鍵生成回路で生成される拡大鍵を選択的にデータスクランブル回路に入力するために、データスクランブル回路で1サイクルに必要な拡大鍵数だけ設けられる拡大鍵出力セレクタと、拡大鍵出力セレクタの拡大鍵選択制御テーブルを格納する記憶手段とをさらに備える構成とすることができる。
さらに、中間鍵生成回路による処理は、非均等なSbox処理と、MDSを用いた排他的論理和演算を行うMDS演算処理とよりなるM関数処理を含み、データスクランブル回路は、R関数処理中に含まれるM関数処理を実行するためのM関数処理回路を含み、中間鍵生成回路におけるM関数処理は、データスクランブル回路のM関数処理回路を用いて実行するように構成できる。
本発明では、前述したようなデータスクランブル回路に入力される拡大鍵を生成する拡大鍵生成回路であって、第2I関数処理回路に入力される第2拡大鍵グループを、1サイクル前の第1I関数処理回路または第3I関数処理回路に入力される第1拡大鍵グループとともに生成する拡大鍵生成回路を提案する。
(発明を実施するための最良の形態)
〔基本構成〕
本発明に係る暗号回路の基本構成を図1に示す。
暗号回路1は、データスクランブル回路2と、暗号鍵処理回路3とから構成されている。暗号鍵処理回路3は、入力される暗号鍵に基づいて中間鍵を生成する中間鍵生成回路4と、中間鍵生成回路4で生成される中間鍵に基づいて複数の拡大鍵を生成する拡大鍵生成回路5と備えている。データスクランブル回路2は、内部に複数種の関数処理回路を備えており、拡大鍵生成回路5で生成される複数の拡大鍵に基づいてそれぞれの関数処理を行い、入力される平文を暗号文に暗号化して出力し、または入力される暗号文を復号化して平文を出力するものである。
データスクランブル回路2は、拡大鍵生成回路5で生成される拡大鍵とデータとの排他的論理和を演算するI関数処理回路と、データのビットを攪拌するB関数処理回路およびR関数処理回路とを複数備えており、たとえば、I−B−I−R−R−I−B−I−R−R−I−B−I−R−R−I−B−I−R−R−I−B−I−R−R−I−B−I−R−R−I−B−I−R−R−I−B−Iの順に関数処理を行うように構成される。このとき、データスクランブル回路2に入力されるデータの処理ブロック長は128ビットであり、これを32ビット×4に分割して処理を行う。
これに基づいて、拡大鍵生成回路5では、各I関数処理に必要な数だけの拡大鍵を生成しこれを逐次データスクランブル回路2に入力するように構成する。たとえば、前述のようにデータスクランブル回路2でのI関数処理の回数が16回である場合には、32ビットの拡大鍵を4個生成してデータスクランブル回路2に入力することを繰り返し、全部で56個の拡大鍵を生成するように構成する。
拡大鍵生成回路5における拡大鍵生成処理の前に、中間鍵生成回路4による中間鍵生成処理が実行される。この中間鍵生成回路4は、入力される暗号鍵を複数の32ビットデータに変換し、それぞれに非線形関数処理Mを行った後、入力データに所定値を加算し、入力データに所定値を乗算し、各演算結果の排他的論理和を演算し、さらに非線形関数処理Mを行うように構成される。
たとえば、拡大鍵生成回路5において56個の拡大鍵の生成を行うためには、暗号鍵から32ビット×8に変換された入力データを生成し、各入力データに対してM関数処理を行った後、所定値を加算する加算回路に奇数番目の入力データを入力し、所定値を乗算する乗算回路に偶数番目の入力データを入力する。この後、隣接する加算回路の出力と乗算回路の出力とをXOR回路に入力して排他的論理和を演算し、このXOR回路の出力値にM関数処理を行って中間鍵の生成を行う。1つの加算回路で加算を行う所定値および1つの乗算回路で乗算を行う所定値を複数用意することにより、各XOR回路から複数の中間鍵を得ることが可能となる。ここで、暗号鍵を32ビット×8の入力データに変換し、4つの回路列で32ビット×4の中間鍵を作成する場合、加算回路での所定値および乗算回路での乗算値をそれぞれ3つずつ用意することで、32ビット×4×3の中間鍵を得ることができる。拡大鍵生成回路5では、この32ビット×4×3の中間鍵をキースケジューリングに基づいて適宜選択し56個の拡大鍵を生成することが可能となる。
〔第1実施形態〕
第1実施形態で採用されるデータスクランブル回路を図2に示す。
SC2000暗号では前述したように、拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数およびR関数とを所定の順に複数回繰り返し行うもので、たとえば、暗号鍵が128ビットの場合、I−B−I−R−R−I−B−I−R−R−I−B−I−R−R−I−B−I−R−R−I−B−I−R−R−I−B−I−R−R−I−B−I−R−R−I−B−Iの順に関数処理を行うように構成される。このような関数処理を行うために、この第1実施形態のデータスクランブル回路20では、処理を行う順にI関数処理回路21、B関数処理回路22、R関数処理回路23を直列に接続している。
このデータスクランブル回路20では、暗号化/復号化が128ビットのブロック単位で行われ、さらに入力データは32ビット単位で処理を行う4つの系統で処理されて32ビット×4の出力データを得る。このため、データスクランブル回路20は、32ビット×4の入力データバスa,b,c,dと、32ビット×4の出力データバスe,f,g,hを備えている。
暗号鍵が128ビットの場合には、図2に示すように、I関数処理回路21の後に、B関数処理回路22、I関数処理回路21、R関数処理回路23、R関数処理回路23、I関数処理回路21で構成される処理ブロック24を6個接続し、その後にB関数処理回路22、I関数処理回路21を順に接続する。また、暗号鍵が192ビット/256ビットの場合には、図14に示すように、I関数処理回路21の後に、B関数処理回路22、I関数処理回路21、R関数処理回路23、R関数処理回路23、I関数処理回路21で構成される処理ブロック24を7個接続し、その後にB関数処理回路22、I関数処理回路21を順に接続する。
図2に示すデータスクランブル回路20では、I関数処理回路21の数は14個であり、各I関数処理回路21で使用される拡大鍵数は、4つの系統毎に32ビットの拡大鍵を使用するとすれば、56個の拡大鍵が必要となる。また、図14で示すデータスクランブル回路20では、I関数処理回路21の数は16個であり、各I関数処理回路21で使用される拡大鍵数は、4つの系統毎に32ビットの拡大鍵を使用するとすれば、64個の拡大鍵が必要となる。
〈B関数処理回路〉
B関数処理回路22は、図11に示すような回路構成とすることができる。
B関数処理回路22は、32ビット×4の入力データを4ビット×32の入力データに変換する入力データ変換部61と、非線形処理を行う32個の4ビットSbox62と、4ビット×32の出力データを32ビット×4の出力データに変換する出力データ変換部63とを備えている。
4ビットSbox62は、図11(b)に示すように、入力(ai,bi,ci,di)を(Ai,Bi,Ci,Di)に変換する非線形処理を行うものである。
〈R関数処理回路〉
R関数処理回路23は、図12に示すような回路構成とすることができる。
R関数処理回路23は、32ビット×4の入力データ(a,b,c,d)に対して、32ビット×4の出力データ(e,f,g,h)を備えるものである。
入力データ(a,b,c,d)のうち、入力データc,dが入力されるF関数処理回路73と、F関数処理回路73の32ビット×2の出力データのうち一方と入力データaとの排他的論理和を演算するXOR回路71と、F関数処理回路73の32ビット×2の出力データのうち他方と入力データbとの排他的論理和を演算するXOR回路72とを備えている。XOR回路71の出力が出力データe、XOR回路72の出力が出力データf、入力c,dがそれぞれ出力g,fとなる。
〈F関数処理回路〉
図12に示すF関数処理回路は、図13に示すような回路構成とすることができる。
F関数処理回路73では、32ビット×2の入力データは、それぞれ 2つの6ビットSbox74と、4つの5ビットSbox75に入力される。各Sbox74,75では、それぞれのビットでの非線形処理が行われ、MDSを用いたXOR計算装置76にその出力を入力する。MDSを用いたXOR計算装置76では、所定の非線形処理を実行し、その出力を乗算回路77,78およびXOR回路79,80に出力する。乗算回路77では、入力される値と0x55555555または0x33333333を乗算する。また、乗算回路78では、入力される値と0xaaaaaaaaまたは0xccccccccを乗算する。XOR回路79では、乗算回路77の出力と他方のMDSを用いたXOR計算装置76の出力との排他的論理和を演算する。また、XOR回路80では、乗算回路78の出力と他方のMDSを用いたXOR計算装置76の出力との排他的論理和を演算する。
このようなデータスクランブル回路20で使用される拡大鍵を生成するための暗号鍵処理回路3の一例を図3、図4に示す。図3は中間鍵生成回路の一例を示し、図4は拡大鍵生成回路の一例を示すものである。
図3に示す中間鍵生成回路40は、8つのM関数処理回路41と、奇数番目のM関数処理回路41に対応する加算回路42と、偶数番目のM関数処理回路41に対応する乗算回路43と、上位から順に隣接する加算回路42および乗算回路43の出力データが入力されるXOR回路44と、XOR回路44の出力データに対して非線形関数処理を行うM関数処理回路45とを備えている。
各処理回路はそれぞれ32ビットデータの処理が可能な構成となっており、暗号鍵から変換された32ビット×8の入力データがそれぞれ8つのM関数処理回路41に入力される。暗号鍵が128ビットの場合には、上位ビットから32ビット毎に分割された4つのデータk0,k1,k2,k3から、(k0,k1,k2,k3,k0,k1,k2,k3)の順に配置された入力データ群を作成し、各入力データをM関数処理回路41に入力するように構成する。また、暗号鍵が192ビットの場合には、同様に上位ビットから32ビット毎に分割された6つのデータk0,k1,k2,k3,k4,k5から、(k0,k1,k2,k3,k4,k5,k0,k1)の順に配置された入力データ群を作成し、各入力データをM関数処理回路41に入力するように構成する。さらに、暗号鍵が256ビットの場合には、同様に上位ビットから32ビット毎に分割された8つのデータk0,k1,k2,k3,k4,k5,k6,k7から、(k0,k1,k2,k3,k4,k5,k6,k7)の順に配置された入力データ群を作成し、各入力データをM関数処理回路41に入力するように構成する。
M関数処理回路41のうち、上位から奇数番目に位置するものについては、その出力が加算回路42に入力されている。この加算回路42は、入力データに所定値M(4i)、M(4i+1)、M(4i+2)、M(4i+3)のうちいずれかを加算するものであり、インデックスiの値0〜2に対応して3重化されている。所定値M(4i)、M(4i+1)、M(4i+2)、M(4i+3)は、それぞれ4i、4i+1、4i+2、4i+3を非線形関数であるM関数で処理した固定値であり、インデックスiの値0〜2に対応してそれぞれ3個の値をとるように構成されている。
M関数処理回路41のうち、上位から偶数番目に位置するものについては、その出力が乗算回路43に入力されている。この乗算回路43は、入力データに所定値i+1を乗算するものであり、インデックスiの値0〜2に対応して3重化されている。インデックスiの値は、拡大鍵生成時のキースケジューリングに用いられるインデックス値と同等であり0〜2の値をとり、これに対応して所定値i+1の値もそれぞれ3個の値をとるように構成されている。
上位から隣接する加算回路42および乗算回路43の出力データはそれぞれXOR回路44に入力される。各XOR回路44は、加算回路42の出力値と乗算回路43の出力値の排他的論理和を演算するものであり、加算回路42および乗算回路43に対応して3重化されている。
各XOR回路44に対応して、その出力データをM関数処理するためのM関数処理回路45が設けられている。このM関数処理回路45も、加算回路42,乗算回路43およびXOR回路44に対応して3重化されている。
このことから、、中間鍵生成回路40は中間鍵(ai,bi,ci,di)を出力するものであり、インデックスiの値に応じて3重化されたM関数処理回路45からそれぞれ中間鍵(a0,b0,c0,d0)、(a1,b1,c1,d1)、(a2,b2,c2,d2)が出力される。
〈M関数処理回路〉
非線形関数であるM関数処理について、図18、図19を用いて説明する。
図18(a)は、M関数処理回路の構成例を示す。このM関数処理回路41は、32ビットの入力データmで32ビットの出力wを生成するものとする。M関数処理回路41は、2つの6ビットSbox46と、4つの5ビットSbox47と、MDSを用いたXOR計算装置48とを備えている。この6ビットSbox46、5ビットSbox47、MDSを用いたXOR計算装置48の構成は、前述したF関数処理回路73の6ビットSbox74、5ビットSbox75およびMDSを用いたXOR計算装置76と同等のものを用いることができる。
このようなM関数処理回路41を用いて非線形関数処理を行う際の工程を以下に示す。
(a)32ビットの入力データを上位から順に、6,5,5,5,5,6ビットの6つの入力データm0,m1,m2,m3,m4,m5に分割する。
(b)5ビットに分割した入力データm1,m2,m3,m4を、それぞれ5ビットSbox47に入力し、図18(b)のS5(x)の表に従って、該当するxに対応したS5(x)の値にそれぞれ変換する。
(c)6ビットに分割した入力データm0,m5は、それぞれ6ビットSbox46に入力し、図18(c)のS6(x)の表に従って、該当するxに対応するS6(x)の値にそれぞれ変換する。
(d)各Sbox46,47の出力S0〜S5より32ビットの中間データvが生成される。
(e)この32ビットの中間データvをMDSを用いたXOR計算装置48に入力し、その出力wを演算結果として得る。ここでは、図19(a)で示すMDS(x)の値を、対応するビットxに応じて、図19(b)に模式的に示す行列式に移動し、中間データvとの間で行列演算を行う。
このようなM関数処理回路は、図3のM関数処理回路41、45のいずれにも適用することができる。
図4に示す拡大鍵生成回路50は、4つの32ビット入力データX,Y,Z,Wと、32ビット出力Knを備えている。入力データXがローテートシフト回路51に入力されている。ローテートシフト回路51の出力と入力データYが加算回路52に入力されている。また、入力データZがローテートシフト回路53に入力されている。ローテートシフト回路53の出力と入力データWが減算回路54に入力されている。減算回路54の出力はローテートシフト回路55に入力されている。さらに、加算回路52の出力とローテートシフト回路55の出力がXOR回路56に入力されている。このXOR回路56の出力がこの拡大鍵生成回路50の出力Knとなる。
暗号鍵が128ビットである場合には、このように構成した拡大鍵生成回路50を56個用意することにより、図2に示すデータスクランブル回路20で使用する拡大鍵に対応させることができる。暗号鍵が192/256ビットである場合には、このように構成した拡大鍵生成回路50を64個用意することにより、図14に示すデータスクランブル回路20で使用する拡大鍵に対応させることが可能となる。
各拡大鍵生成回路50では、表1に示すオーダーテーブルと、表2に示すインデックステーブルに基づくキースケジューリングにより、中間鍵生成回路40からそれぞれ対応する中間鍵が入力され、n=00〜55もしくはn=00〜63に対応する拡大鍵Knが生成される。
【表1】
【表2】
ここで、キースケジューリングKnと、オーダーパラメータt、インデックスパラメータsの関係は次のように表すことができる。
128ビットの暗号鍵および図2に示すようなデータスクランブル回路20を用いて暗号化を行う場合には、n=00〜55の値に基づいて、オーダーパラメータtとインデックスパラメータsが決定される。ここで決定されたオーダーパラメータtから表1のオーダーテーブルを参照してオーダー(a,b,c,d)を決定し、インデックスパラメータsから表2のインデックステーブルを参照してインデックス(i)を決定する。これにより、拡大鍵生成回路50の入力データX,Y,Z,Wに対して中間鍵生成回路40から入力する中間鍵を決定し、拡大鍵Knを得る。この拡大鍵生成回路50で生成される拡大鍵Knを、n=00〜55の順に最初から4個づつI関数処理回路21に入力することにより暗号化を行うことができる。データスクランブル回路20により復号化を行う場合には、拡大鍵生成回路50で生成される拡大鍵Knを、n=55〜00の順でI関数処理回路21に入力する。
また、192/256ビットの暗号鍵および図14に示すようなデータスクランブル回路20を用いて暗号化を行う場合には、n=00〜63の値に基づいて、オーダーパラメータtおよびインデックスパラメータsを決定し、オーダーテーブルおよびインデックステーブルからオーダー(a,b,c,d)とインデックス(i)を決定し、これに基づいて入力される中間鍵から拡大鍵Knを生成する。この拡大鍵生成回路50で生成される拡大鍵Knを、n=00〜63の順に最初から4個づつI関数処理回路21に入力することにより暗号化を行うことができる。データスクランブル回路20により復号化を行う場合には、拡大鍵生成回路50で生成される拡大鍵Knを、n=63〜00の順でI関数処理回路21に入力する。
この第1実施形態では、拡大鍵生成回路50で使用する中間鍵を中間鍵生成回路40で逐次生成するように構成でき、データスクランブル回路20によるデータスクランブル処理に先立つ前処理段階を短縮することができ、暗号化/復号化に要する時間を短縮することが可能となる。
〔第2実施形態〕
第1実施形態で示したようなデータスクランブル回路20および拡大鍵生成回路50を用いる場合には、処理時間を短縮できるものの、回路規模が大きくなるという問題を包含している。このため、データスクランブル回路の一部にクロック同期ループを構成し、拡大鍵生成回路での処理もデータスクランブル回路のクロックに同期して処理を実行するようにすることが考えられる。そのような回路の一例を第2実施形態として示す。
図5は第2実施形態に採用される拡大鍵生成回路の構成例であり、図6は第2実施形態で採用されるデータスクランブル回路の構成例である。
図6に示すデータスクランブル回路200では、128ビットのブロック単位で暗号化/復号化を行うために、32ビット×4の入力データバスa,b,c,dと、32ビット×4の出力データバスe,f,g,hを備えている。
このデータスクランブル回路200には、第1I関数処理回路201と、第2I関数処理回路203、第1R関数処理回路204、第2R関数処理回路205、第3I関数処理回路206が順に接続される処理ブロック210と、第1I関数処理回路201の出力と処理ブロック210の出力とを選択的に出力するセレクタ208と、セレクタ208の出力が接続されるB関数処理回路202と、B関数処理回路202の出力をクロック周期毎にラッチして処理ブロック210に入力するレジスタ209と、レジスタ209の出力が接続される第4I関数処理回路207とを備えている。また、データスクランブル回路200は、第2I関数処理回路203で使用する拡大鍵を一時的に格納するためのレジスタ211を備えている。
このように構成されたデータスクランブル回路200では、セレクタ208を適宜切り換えることにより、第1I関数処理回路201、B関数処理回路202による処理を実行した後、第2I関数処理回路203、第1R関数処理回路204、第2R関数処理回路205、第3I関数処理関数206の処理ブロック210とB関数処理回路202を含むクロック同期ループを複数回繰り返した後、第4I関数処理回路207による処理を実行するように構成できる。
最初のクロックでは、セレクタ208が第1I関数処理回路201側に切り換えられており、入力データa,b,c,dは、第1I関数処理回路201で処理された後、セレクタ208を経由してB関数処理回路202によりB関数処理が実行され、レジスタ209にその値が保持される。
次のクロックでは、セレクタ208が処理ブロック210側に切り換えられており、レジスタ209から出力されたデータは、処理ブロック210によりI−R−R−Iの各関数処理が実行され、セレクタ208を経由してB関数処理回路202によるB関数処理が実行されてレジスタ209にその値が保持される。
この後、鍵長128ビットの暗号鍵を用いる場合には、処理ブロック210とB関数処理回路202で構成されるI−R−R−I−Bのループ処理を5回実行し、さらに第4I関数処理回路207による処理を実行して、出力データe,f,g,hを得る。
このように、図6に示すデータスクランブル回路200で、第1I関数処理回路201、B関数処理回路202でのI−B処理を実行し、その後、処理ブロック210とB関数処理回路202で構成されるI−R−R−I−Bのループ処理を6回繰り返し、さらに第4I関数処理回路207によるI関数処理を実行することにより、図2に示すデータスクランブル回路20と同等の機能を実現している。
このような図6に示すデータスクランブル回路200で用いる拡大鍵を生成するための拡大鍵生成回路を図5に示す。
図5に示す拡大鍵生成回路500は、Xセレクタ501,Yセレクタ502,Zセレクタ503,Wセレクタ504の4つのセレクタを備えている。Xセレクタ501,Yセレクタ502,Zセレクタ503,Wセレクタ504は、それぞれ図4に示す拡大鍵生成回路50の入力データバスX,Y,Z,Wに対応しており、図3に示す中間鍵生成回路40から出力される中間鍵(ai,bi,ci,di)のすべてが入力側に接続されている。
この拡大鍵生成回路500では、Xセレクタ501の出力がローテートシフト回路505に入力されている。ローテートシフト回路505の出力とYセレクタ502の出力が加算回路506に入力されている。また、Zセレクタ503の出力がローテートシフト回路507に入力されている。ローテートシフト回路507の出力とWセレクタ504の出力が減算回路508に入力されている。減算回路508の出力はローテートシフト回路509に入力されている。さらに、加算回路506の出力とローテートシフト回路509の出力がXOR回路510に入力されている。このXOR回路510の出力がこの拡大鍵生成回路500の出力Knとなる。
図6で示すデータスクランブル回路200では、各クロックにおいて32ビット×4の拡大鍵が2セット必要であり、これに対応して図5で示す拡大鍵生成回路500を8個用意する。
拡大鍵生成回路500では、表1および表2で示すオーダーテーブルとインデックステーブルに基づいて、Xセレクタ501,Yセレクタ502,Zセレクタ503,Wセレクタ504に入力する中間鍵を選択し、入力された中間鍵に基づいて拡大鍵を生成してデータスクランブル回路200に入力する。
ここで、拡大鍵生成回路500で生成される8個の拡大鍵を、4つずつの2つのグループA,Bに分け、グループAの拡大鍵を現在の処理に使用し、グループBの拡大鍵を次の処理のためにレジスタ211に保存する。最初のクロックでは、グループAの拡大鍵は第1I関数処理回路201でのI関数処理のために使用し、グループBの拡大鍵はレジスタ211に保存する。次のクロックでは、レジスタ211に保存されたグループBの拡大鍵を使用して第2I関数処理回路203の処理を実行する。これとともに、拡大鍵生成回路500で2セットの拡大鍵を生成し、グループAの拡大鍵を用いて第3I関数処理回路206でのI関数処理を実行し、グループBの拡大鍵をレジスタ211に保存する。所定回数のループ処理を実行した後、最後のループ処理時に生成した拡大鍵のうちレジスタ211に保存されているグループBの鍵を用いて第4I関数処理回路207での処理が実行される。
鍵長192/256ビットの暗号鍵を用いる場合には、データスクランブル回路200で、第1I関数処理回路201、B関数処理回路202でのI−B処理を実行し、その後、処理ブロック210とB関数処理回路202で構成されるI−R−R−I−Bのループ処理を7回繰り返し、さらに第4I関数処理回路207によるI関数処理を実行することにより、図14に示すデータスクランブル回路20と同等の機能を実現することができる。
このようにしたデータスクランブル回路200および拡大鍵生成回路500では、どのクロックにおいても拡大鍵を2セット8個生成して、生成した拡大鍵を有効に利用することができる。また、以前のクロックで生成したグループBの拡大鍵を処理ブロック210の前段の第2I関数処理回路203で使用するため、グループBの拡大鍵生成時間が、データスクランブルによる遅延時間に影響することがなくなり、グループAの拡大鍵の生成遅延時間が処理ブロック210の処理時間内に納めることができる。したがって、拡大鍵生成時間がデータスクランブル処理の遅延時間に影響することがない。
〔第2実施形態の変形例〕
図7に第2実施形態のデータスクランブル回路200の変形例を示す。
ここでは、図6のデータスクランブル回路200のB関数処理回路202の出力を第4I関数処理回路207とレジスタ209との両方に接続するように構成している。
このことにより、所定回数のループ処理を終了した際に、最後のB関数処理回路202からの出力を、レジスタ209を介さずに第4I関数処理回路207に直接入力することができ、データスクランブル処理におけるクロック数を1つ減少させることができる。
このようにした第2実施形態およびその変形例では、第1実施形態と比較して回路規模を削減することができ、コストダウンを図ることが可能となる。
〔第3実施形態〕
本発明の第3実施形態による中間鍵生成回路を図8に示す。
図8に示す中間鍵生成回路400は、2つのセレクタ401、402を備えている。このセレクタ401、402はそれぞれ4×32ビットデータから1つを選択して出力するように構成されている。鍵長128ビットの暗号鍵を用いる場合には、暗号鍵を32ビット×4のデータ(k0,k1,k2,k3)に変換し、セレクタ401に入力する入力データを(k0,k2,k0,k2)とし、セレクタ402に入力する入力データを(k1,k3,k1,k3)とする。また、鍵長192ビットの暗号鍵を用いる場合には、暗号鍵を32ビット×6のデータ(k0,k1,k2,k3,k4,k5)に変換し、セレクタ401に入力する入力データを(k0,k2,k4,k0)とし、セレクタ402に入力する入力データを(k1,k3,k5,k1)とする。さらに、鍵長256ビットの暗号鍵を用いる場合には、暗号鍵を32ビット×8のデータ(k0,k1,k2,k3,k4,k5,k6,k7)に変換し、セレクタ401に入力する入力データを(k0,k2,k4,k6)とし、セレクタ402に入力する入力データを(k1,k3,k5,k7)とする。
セレクタ401、402には、それぞれM関数処理を行うためのM関数処理回路403,404が接続されている。このM関数処理回路403,404は前述したM関数処理回路41と同様の構成とすることができる。
一方のM関数処理回路403には、所定値を加算するための加算回路405が接続されている。また、他方のM関数処理回路404には、所定値を乗算するための乗算回路406が接続されている。加算回路405は、入力データに所定値M(4i)、M(4i+1)、M(4i+2)、M(4i+3)のうちいずれかを加算するものであり、インデックスiの値0〜2に対応して3重化されている。所定値M(4i)、M(4i+1)、M(4i+2)、M(4i+3)は、それぞれ4i、4i+1、4i+2、4i+3を非線形関数であるM関数で処理した固定値であり、インデックスiの値0〜2に対応してそれぞれ3個の値をとるように構成され、これらを予め算出しておきROM409内に格納している。また、乗算回路405は、入力データに所定値i+1を乗算するものであり、インデックスiの値0〜2に対応して3重化されている。インデックスiの値は、拡大鍵生成時のキースケジューリングに用いられるインデックス値と同等であり0〜2の値をとり、これに対応して所定値i+1の値もそれぞれ3個の値をとるように構成されている。
加算回路405の出力と乗算回路406の出力はそれぞれXOR回路408に入力される。XOR回路408は、加算回路405の出力値と乗算回路406の出力値の排他的論理和を演算するものであり、加算回路405および乗算回路406に対応して3重化されている。
XOR回路408の出力は、M関数処理するためのM関数処理回路410に接続されている。このM関数処理回路410も、加算回路405,乗算回路406およびXOR回路408に対応して3重化されている。
M関数処理回路410の出力は、4つのセレクタ411〜414に接続されている。各セレクタ411〜414の出力は、中間鍵を保持するためのレジスタ415に格納される。
このようにした中間鍵生成回路400では、加算回路405、乗算回路406、XOR回路408、M関数処理回路410がインデックスiの値0〜2に対応して3重化されているため、32ビットの中間鍵を同時に3個生成することが可能である。したがって、この中間鍵生成回路400では、各クロックにおいてa0〜a2、b0〜b2、c0〜c2、d0〜d2の各3個の中間鍵が生成され、4回のクロックですべての中間鍵が生成されてレジスタ415に保存される。
このような暗号回路では32ビットバスで接続されているため、128ビットの平文または暗号文を入力するためには4クロック必要となる。したがって、中間鍵生成回路400において中間鍵を生成するために4クロックが必要となっても問題がない。また、データスクランブル処理に先だって予め中間鍵の生成処理を行うように構成することにより、中間鍵生成回路400での処理時間は、データスクランブル処理の時間に影響を与えることがなくなる。加算回路405に入力するための所定値は、予め算出してROM化しているため、演算時間が短縮されるとともに回路規模を縮小することができる。
さらに、この中間鍵生成回路400はインデックスiの値(0〜2)に従って3個の中間鍵を同時に生成するように構成しているが、オーダーの値(a〜d)に従って4個の中間鍵を同時に生成するように構成することも考えられる。しかしながら、この第3実施形態で示す中間鍵生成回路400の構成とすることにより、回路規模をより小さくすることができる。
〔第4実施形態〕
第4実施形態に採用される拡大鍵生成回路を図9に示す。
図9に示す拡大鍵生成回路520は、Xセレクタ521、Yセレクタ522、Zセレクタ523、Wセレクタ524を備えている。
この拡大鍵生成回路520では、Xセレクタ521の出力がローテートシフト回路525に入力されている。ローテートシフト回路525の出力とYセレクタ522の出力が加算回路526に入力されている。また、Zセレクタ523の出力がローテートシフト回路527に入力されている。ローテートシフト回路527の出力とWセレクタ524の出力が減算回路528に入力されている。減算回路528の出力はローテートシフト回路529に入力されている。さらに、加算回路526の出力とローテートシフト回路529の出力がXOR回路530に入力されている。このXOR回路530の出力がこの拡大鍵生成回路520の出力Knとなる。
Xセレクタ521、Yセレクタ522、Zセレクタ523、Wセレクタ524はそれぞれ4入力1出力のセレクタであり、図8で示すような中間鍵生成回路400で生成された中間鍵が保存されるレジスタ415の出力が入力される。ここで、この拡大鍵生成回路520は、表2に示すインデックステーブルのテーブル数に対応して9個用意される。1番目の拡大鍵生成回路520のXセレクタ521、Yセレクタ522、Zセレクタ523、Wセレクタ524には、それぞれインデックステーブルのs=0に対応して(a0,b0,c0,d0)、(a0,b0,c0,d0)、(a0,b0,c0,d0)、(a0,b0,c0,d0)が入力される。2番目〜9番目の拡大鍵生成回路520についても、インデックスパラメータsに基づいて決定されるインデックスiの値に基づいて、(ai,bi,c,di)がXセレクタ521、Yセレクタ522、Zセレクタ523、Wセレクタ524に入力される。この回路0〜回路8のXセレクタ521、Yセレクタ522、Zセレクタ523、Wセレクタ524に対する入力データの対応を表3に示す。
【表3】
また、回路0〜回路8のXセレクタ521、Yセレクタ522、Zセレクタ523、Wセレクタ524におけるセレクタ制御は、表1に示すオーダーテーブルに基づいて行われるものであり、このセレクタ制御の対応を表4に示す。
【表4】
この拡大鍵生成回路520におけるセレクタ制御のテーブルは、ROMに格納しておくことで制御が簡単になり、回路規模を縮小することが可能となる。
各拡大鍵生成回路520から出力される拡大鍵は、図10に示すような出力回路540を介してデータスクランブル回路に入力される。この出力回路540は、セレクタ541〜548で構成されており、それぞれ上述の回路0〜8の出力KW0〜KW8が入力される。各セレクタ541〜548の各出力EX_A0〜EX_A3,EX_B0〜EX_B3は、32ビット×4の拡大鍵がグループA,Bの2セット分として出力される。各セレクタ541〜548のセレクタ制御のテーブルを暗号化時のものを表5に、復号化時のものを表6に示す。
【表5】
【表6】
図5に示すような拡大鍵生成回路500を用いた場合、Xセレクタ501〜Wセレクタ504は12入力1出力の回路を構成する必要があり、回路規模が増大するという欠点があるが、図9に示すような拡大鍵生成回路520を用いることによりXセレクタ521〜Wセレクタ524をそれぞれ4入力1出力のセレクタ回路で構成でき、回路構成を大幅に削減することが可能となる。このことは、図9の拡大鍵生成回路520を9個用意する必要があるものの、拡大鍵生成回路全体としての回路規模を削減することとなる。
〔第5実施形態〕
第5実施形態に採用されるデータスクランブル回路の構成例を図15に示す。
図15に示すデータスクランブル回路220では、128ビットのブロック単位で暗号化/復号化を行うために、32ビット×4の入力データバスa,b,c,dと、32ビット×4の出力データバスe,f,g,hを備えている。
このデータスクランブル回路220には、第1I関数処理回路221、B関数処理回路222、第2I関数処理回路223を有する第1処理ブロック228と、第1R関数処理回路224、第2R関数処理回路225を有する第2処理ブロック229を備えている。また、データスクランブル回路220には、入力データと第2R関数処理回路225の出力とを選択的に出力するセレクタ226と、第2I関数処理回路223の出力をクロック毎に保持するレジスタ227を備えている。
このように構成されたデータスクランブル回路220では、セレクタ226を適宜切り換えることにより、第1I関数処理回路221、B関数処理回路222、第2I関数処理回路223による処理を実行した後、第2処理ブロック229および第1処理ブロック228でなるR−R−I−B−Iの処理ループを複数回繰り返した後、出力データバス(e,f,g,h)に結果を出力するように構成できる。
最初のクロックでは、セレクタ226が入力データ側に切り換えられており、入力データa,b,c,dは、第1処理ブロック228で処理された後、レジスタ227にその値が保持される。
次のクロックでは、セレクタ226が第2処理ブロック229側に切り換えられており、レジスタ227から出力されたデータは、第2処理ブロック229および第1処理ブロック228により各関数処理が実行され、レジスタ227にその値が保持される。
この後、鍵長128ビットの暗号鍵を用いる場合には、第1処理ブロック229と第1処理ブロック228で構成されるループ処理を5回実行して、出力データe,f,g,hを得る。
第1I関数処理回路221、第2I関数処理回路223には、図5で示す拡大鍵生成回路500や図9で示す拡大鍵生成回路520で生成される拡大鍵が入力されることとなる。拡大鍵生成回路で32ビット×4の拡大鍵を2セット同時に生成する構成となっている場合には、1クロックで生成される2セットの拡大鍵のうちグループAを第1I関数処理回路221で使用し、グループBを第2I関数処理回路223で使用するように構成することができる。このことにより、拡大鍵生成回路による拡大鍵生成処理と、データスクランブル処理の両方を同時に処理することが可能となり、処理時間の遅延を防止することができる。
〔第6実施形態〕
第6実施形態に採用されるデータスクランブル回路の構成例を図16に示す。
図16に示すデータスクランブル回路240では、128ビットのブロック単位で暗号化/復号化を行うために、32ビット×4の入力データバスa,b,c,dと、32ビット×4の出力データバスe,f,g,hを備えている。
このデータスクランブル回路240には、第1I関数処理回路241、B関数処理回路242、第2I関数処理回路243を有する第1処理ブロック249と、第1R関数処理回路244、第2R関数処理回路245を有する第2処理ブロック250を備えている。また、データスクランブル回路240には、第1処理ブロック249の出力と第2処理ブロック250の出力とを選択的に出力する出力側セレクタ247と、出力側セレクタ247の出力をクロック毎に保持するレジスタ248と、入力データとレジスタ248の出力とを選択的に出力する入力側セレクタ246とを備えている。
このように構成されたデータスクランブル回路240では、入力側セレクタ246および出力側セレクタ247を適宜切り換えることにより、第1I関数処理回路241、B関数処理回路242、第2I関数処理回路243による処理を実行した後、第2処理ブロック250によるR−R処理と、第1処理ブロック249によるI−B−I処理を交互に繰り返し実行した後、出力データバス(e,f,g,h)に結果を出力するように構成できる。
最初のクロックでは、入力側セレクタ246が入力データ側に切り換えられており、入力データa,b,c,dは、第1処理ブロック249で処理された後、レジスタ248にその値が保持される。
次のクロックでは、出力側セレクタ247が第2処理ブロック250側に切り換えられており、レジスタ248から出力されたデータは、第2処理ブロック250により各関数処理が実行され、レジスタ248にその値が保持される。
さらに、次のクロックでは、入力側セレクタ246がレジスタ248側に切り換えられ、出力側セレクタ247が第1処理ブロック249側に切り換えられており、レジスタ248から出力されたデータは、第1処理ブロック249で各関数処理が実行され、レジスタ248にその値が保持される。これを複数回繰り返すことで、前述したデータスクランブル回路と同等の機能を実現することが可能となる。
第1I関数処理回路241、第2I関数処理回路243には、図5で示す拡大鍵生成回路500や図9で示す拡大鍵生成回路520で生成される拡大鍵が入力されることとなる。拡大鍵生成回路で32ビット×4の拡大鍵を2セット同時に生成する構成となっている場合には、1クロックで生成される2セットの拡大鍵のうちグループAを第1I関数処理回路241で使用し、グループBを第2I関数処理回路243で使用するように構成することができる。
このデータスクランブル回路240では、1回のI−B−I−R−R処理に2サイクルが必要となるため、拡大鍵生成回路による拡大鍵生成処理による遅延時間の影響が無くなる。
〔第7実施形態〕
第7実施形態に採用されるデータスクランブル回路の構成例を図17に示す。
図17に示すデータスクランブル回路260では、128ビットのブロック単位で暗号化/復号化を行うために、32ビット×4の入力データバスa,b,c,dと、32ビット×4の出力データバスe,f,g,hを備えている。
このデータスクランブル回路260には、第1I関数処理回路261、B関数処理回路262、第2I関数処理回路263を有する第1処理ブロック268と、R関数処理回路264で構成される第2処理ブロック269を備えている。また、データスクランブル回路260には、第1処理ブロック268の出力と第2処理ブロック269の出力とを選択的に出力する出力側セレクタ266と、出力側セレクタ266の出力をクロック毎に保持するレジスタ267と、入力データとレジスタ267の出力とを選択的に出力する入力側セレクタ265とを備えている。
このように構成されたデータスクランブル回路260では、入力側セレクタ265および出力側セレクタ266を適宜切り換えることにより、第1I関数処理回路261、B関数処理回路262、第2I関数処理回路263による処理を実行した後、第2処理ブロック269によるR処理を2回と、第1処理ブロック268によるI−B−I処理を交互に繰り返し実行した後、出力データバス(e,f,g,h)に結果を出力するように構成できる。
最初のクロックでは、入力側セレクタ265が入力データ側に切り換えられており、入力データa,b,c,dは、第1処理ブロック268で処理された後、レジスタ267にその値が保持される。
次のクロックでは、出力側セレクタ266が第2処理ブロック269側に切り換えられており、レジスタ267から出力されたデータは、第2処理ブロック269によりR関数処理が実行され、レジスタ267にその値が保持される。次のクロックでは、同様に、出力側セレクタ266が第2処理ブロック269側のままであり、レジスタ267から出力されたデータは、第2処理ブロック269によりR関数処理が実行され、レジスタ267にその値が保持される。
さらに、次のクロックでは、入力側セレクタ265がレジスタ267側に切り換えられ、出力側セレクタ266が第1処理ブロック268側に切り換えられており、レジスタ267から出力されたデータは、第1処理ブロック268で各関数処理が実行され、レジスタ267にその値が保持される。これを複数回繰り返すことで、前述したデータスクランブル回路と同等の機能を実現することが可能となる。
第1I関数処理回路261、第2I関数処理回路263には、図5で示す拡大鍵生成回路500や図9で示す拡大鍵生成回路520で生成される拡大鍵が入力されることとなる。拡大鍵生成回路で32ビット×4の拡大鍵を2セット同時に生成する構成となっている場合には、1クロックで生成される2セットの拡大鍵のうちグループAを第1I関数処理回路261で使用し、グループBを第2I関数処理回路263で使用するように構成することができる。
このデータスクランブル回路260では、1回のI−B−I−R−R処理に3サイクルが必要となるため、拡大鍵生成回路による拡大鍵生成処理による遅延時間の影響が無くなる。
〔第8実施形態〕
第8実施形態に採用されるデータスクランブル回路の構成例を図20に示す。
図20に示すデータスクランブル回路600でも、前述の実施形態と同様に、128ビットのブロック単位で暗号化/復号化を行うために、32ビット×4の入力データバスと、32ビット×4の出力データバスを備えており、これを便宜的に1本の線で表示している。
データスクランブル回路600は、入力レジスタ601、第1セレクタ602、B関数処理回路603、第2セレクタ604、第1I関数処理回路605、R関数処理回路607、クロス処理用経路608、第3セレクタ609、第2I関数処理回路610、出力レジスタ612、第4セレクタ606、第5セレクタ611を備えている。
入力レジスタ601は、入力データバスからの入力を一旦保持し、第1セレクタ602に入力するものである。第1セレクタ602は、入力レジスタ601の出力と、出力レジスタ612からフィードバックされる出力とが入力され、いずれか一方をB関数処理回路603に出力する。
第1セレクタ602の出力と、B関数処理回路603の出力とが第2セレクタ604に入力されている。第2セレクタ604は、第1セレクタ602の出力とB関数処理回路603の出力のうちいずれか一方を選択して第1I関数処理回路605に入力する。
第1I関数処理回路605は、第2セレクタ604の出力と、第4セレクタ606の出力とに基づいてI関数処理を行う。具体的には、第4セレクタ606から入力されるパラメータを第2セレクタ604から入力されるデータに排他的論理和(XOR)演算する。ここで、第4セレクタ606には、拡大鍵データと”0”とが入力されており、このうちいずれか一方を選択して出力するように構成されている。したがって、第4セレクタ606の出力が”0”である場合、第1I関数処理回路605は、入力データと同一のデータを出力することとなる。
第1I関数処理回路605の出力は、第3セレクタ609とR関数処理回路607とに入力される。R関数処理回路607の出力は、第3セレクタ609に入力されるとともに、クロス処理用経路608を経由して第3セレクタ609に入力されている。クロス処理用経路608は、R関数処理回路607の出力データ128ビットを32ビット毎に(a,b,c,d)とした場合、入力(a,b,c,d)に対して(c,d,a,b)を出力するような処理を行うものであり、R関数処理回路607と第3セレクタ609との間の結線を変更することで実現できる。
第3セレクタ609は、第1I関数処理回路605の出力、R関数処理回路607の出力、クロス処理用経路608を経由したR関数処理回路607の出力が入力され、いずれか1つを出力する。
第3セレクタ609の出力は第2I関数処理回路610に入力される。第2I関数処理回路610は、第3セレクタ609の出力と、第5セレクタ611の出力とに基づいてI関数処理を行う。具体的には、第5セレクタ611から入力されるパラメータを第3セレクタ609から入力されるデータに排他的論理和(XOR)演算する。ここで、第5セレクタ611には、拡大鍵データと”0”とが入力されており、このうちいずれか一方を選択して出力するように構成されている。したがって、第5セレクタ611の出力が”0”である場合、第2I関数処理回路610は、入力データと同一のデータを出力することとなる。
第2I関数処理回路610の出力は、出力レジスタ612に入力される。出力レジスタ612は、第2I関数処理回路610の出力を一旦保持し、出力データバスに出力するとともに、第1セレクタ602にフィードバックする。
このようにしたデータスクランブル回路600において、第1セレクタ602、第2セレクタ604、第3セレクタ609、第4セレクタ606、第5セレクタ611を切換制御することにより、1サイクルでの処理を(I)、(B−I−R)、(R−I)、(B−I)のいずれかに設定することが可能である。最初に(I)処理を実行し、その後、(B−I−R)処理と(R−I)処理を交互に複数回繰り返し、最後に(B−I)処理を実行することにより、SC2000のアルゴリズムに準拠した暗号化・復号化処理を実行することができる。(B−I−R)処理と(R−I)処理の操り返し数を6回とする場合のセレクタの切換制御を表7に示す。
【表7】
ここで、第1セレクタ602のセレクタ位置aが入力レジスタ601、セレクタ位置bが出力レジスタ612、第2セレクタ604のセレクタ位置aが第1セレクタ602、セレクタ位置bがB関数処理回路603、第3セレクタ609のセレクタ位置aが第1I関数処理回路605、セレクタ位置bがR関数処理回路607、セレクタ位置cがクロス処理用経路608、第4セレクタ606のセレクタ位置aが拡大鍵データ、セレクタ位置bがデータ”0”、第5セレクタ611のセレクタ位置aが拡大鍵データ、セレクタ位置bがデータ”0”にそれぞれ対応するものとしている。
表7に示すセレクタ切換制御では、鍵長128ビットの場合の例である。鍵長が192/256ビットである場合には、(B−I−R)処理と(R−I)処理の繰り返し数を7回とし、表7の13サイクルと14サイクルとの間に、(B−I−R)処理と(R−I)処理を1回ずつ追加することとなる。
このように、比較的回路規模が大きいR関数処理回路を1つにすることで、回路規模を小さくすることが可能であり、電子マネーなどに利用されるスマートカードやICカードなどに搭載する際の回路配置が容易になる。
〈拡大鍵生成回路〉
この第8実施形態で用いられる拡大鍵生成回路の一例を図23に示す。
ここでは、処理ブロック128ビットのデータスクランブル回路を想定しているため、データスクランブル600の第1I関数処理回路605および第2I関数処理回路610において128ビットの拡大鍵が必要となる。このような128ビットの拡大鍵を生成するために、32ビットの拡大鍵を生成する回路を用いた場合、4つの拡大鍵を生成する必要がある。ここでは、図23に示すように、32ビット拡大鍵生成回路を2つにすることにより回路規模を小さくし、2クロックで4つの32ビット拡大鍵を生成し、128ビット拡大鍵を生成するように構成する。
図23に示す拡大鍵生成回路550は、1Xセレクタ551,1Yセレクタ552,1Zセレクタ553,1Wセレクタ554の4つのセレクタを備えている。1Xセレクタ551,1Yセレクタ552,1Zセレクタ553,1Wセレクタ554は、たとえば、図4に示す拡大鍵生成回路50の入力データバスX,Y,Z,Wに対応しており、図3に示す中間鍵生成回路40から出力される中間鍵(ai,bi,ci,di)のすべてが入力側に接続されている。
この拡大鍵生成回路550では、1Xセレクタ551,1Yセレクタ552,1Zセレクタ553,1Wセレクタ554の4つのセレクタの出力が接続される第1スイッチ回路555を備えている。この第1スイッチ回路555は、4入力1出力のスイッチ回路を4つ並列に配置したものである。
第1スイッチ回路555の第1出力は、ローテートシフト回路556に入力されている。ローテートシフト回路556の出力と第1スイッチ回路555の第2出力が加算回路558に入力されている。また、第1スイッチ回路の第3出力がローテートシフト回路557に入力されている。ローテートシフト回路557の出力と第1スイッチ回路555の第4出力が減算回路559に入力されている。減算回路559の出力はローテートシフト回路560に入力されている。さらに、加算回路558の出力とローテートシフト回路560の出力がXOR回路561に入力されている。このXOR回路561の出力が第1出力レジスタ562に保持される。
さらに、この拡大鍵生成回路550では、2Xセレクタ571,2Yセレクタ572,2Zセレクタ573,2Wセレクタ574の4つのセレクタの出力が接続される第2スイッチ回路575を備えている。この第2スイッチ回路575は、4入力1出力のスイッチ回路を4つ並列に配置したものである。
第2スイッチ回路575の第1出力は、ローテートシフト回路576に入力されている。ローテートシフト回路576の出力と第2スイッチ回路575の第2出力が加算回路578に入力されている。また、第2スイッチ回路の第3出力がローテートシフト回路577に入力されている。ローテートシフト回路577の出力と第2スイッチ回路575の第4出力が減算回路579に入力されている。減算回路579の出力はローテートシフト回路580に入力されている。さらに、加算回路578の出力とローテートシフト回路580の出力がXOR回路581に入力されている。このXOR回路581の出力が第2出力レジスタ582に保持される。
このように構成される拡大鍵生成回路550では、1クロックで32ビット拡大鍵を2つ生成することとなり、128ビット拡大鍵を生成するために2クロックが必要となる。このため、データスクランブル回路におけるI関数処理も2クロックで1サイクルの処理を行うように構成する。
この拡大鍵生成回路550の1Xセレクタ551,1Yセレクタ552,1Zセレクタ553,1Wセレクタ554,2Xセレクタ571,2Yセレクタ572,2Zセレクタ573,2Wセレクタ574および第1スイッチ回路555,第2スイッチ回路575の切換制御を表8に示す。
【表8】
〈中間鍵生成回路〉
第8実施形態で用いられる中間鍵生成回路の例を図22に示す。
図22に示す中間鍵生成回路450では、入力レジスタ451と、入力レジスタ451の値に基づいてM関数処理を実行するM関数処理回路452と、M関数処理回路452の出力を保持する中間レジスタ453とを備えている。
入力レジスタ451は、前述したように、暗号鍵が128ビットの場合には、上位ビットから32ビット毎に分割された4つのデータk0,k1,k2,k3から、(k0,k1,k2,k3,k0,k1,k2,k3)の順に配置された入力データ群が入力され、暗号鍵が192ビットの場合には、同様に上位ビットから32ビット毎に分割された6つのデータk0,k1,k2,k3,k4,k5から、(k0,k1,k2,k3,k4,k5,k0,k1)の順に配置された入力データ群が入力され、暗号鍵が256ビットの場合には、同様に上位ビットから32ビット毎に分割された8つのデータk0,k1,k2,k3,k4,k5,k6,k7から、(k0,k1,k2,k3,k4,k5,k6,k7)の順に配置された入力データ群が入力される。
M関数処理回路452は、入力レジスタ451の値に基づいてM関数処理を実行するものであって、回路規模を削減するために、データスクランブル回路600内のM関数処理回路を共用することとする。データスクランブル回路600のR関数処理回路607には、図13に示すようなF関数処理回路73を含んでおり、さらにこのF関数処理回路73は図18に示すようなM関数処理回路41を備えている。中間鍵生成の工程において、このデータスクランブル回路600に含まれるM関数処理回路41を利用してM関数処理を実行し、その結果を中間レジスタ453に格納する。
中間レジスタ453の値は、第1セレクタ454、第2セレクタ455に入力される。特に、中間レジスタ453の奇数番目の値(k’0,k’2,k’4,k’6)が第1セレクタ454に入力され、中間レジスタ453の偶数番目の値(k’1,k’3,k’5,k’7)が第2セレクタ455に入力される。
中間鍵生成回路450は、さらに、第1セレクタ454に接続される加算回路456と、第2セレクタ455に接続される乗算回路457と、加算回路456および乗算回路457の出力データが入力されるXOR回路458と、XOR回路458の出力データに対して非線形関数処理を行うM関数処理回路459と、M関数処理回路459の出力を保持するための出力レジスタ460とを備えている。
各処理回路はそれぞれ32ビットデータの処理が可能な構成となっており、暗号鍵から変換された32ビット×8の入力データがそれぞれ入力レジスタ451に格納され、M関数処理回路452に入力される。
中間レジスタ453のうち、上位から奇数番目に位置するものについては、その値が加算回路456に入力される。この加算回路456は、入力データに所定値M(4i)、M(4i+1)、M(4i+2)、M(4i+3)のうちいずれかを加算するものであり、インデックスiの値0〜2に対応して4×3=12通りの値を加算する。所定値M(4i)、M(4i+1)、M(4i+2)、M(4i+3)は、それぞれ4i、4i+1、4i+2、4i+3を非線形関数であるM関数で処理した固定値であり、インデックスiの値0〜2に対応してそれぞれ3個の値をとるように構成されている。
中間レジスタ453のうち、上位から偶数番目に位置するものについては、その値が乗算回路457に入力される。この乗算回路457は、入力データに所定値i+1を乗算するものであり、インデックスiの値0〜2に対応して3通りの値を乗算する。インデックスiの値は、拡大鍵生成時のキースケジューリングに用いられるインデックス値と同等であり0〜2の値をとり、これに対応して所定値i+1の値もそれぞれ3個の値をとるように構成されている。
加算回路456および乗算回路457の出力データはそれぞれXOR回路458に入力される。XOR回路458は、加算回路456の出力値と乗算回路457の出力値の排他的論理和を演算するものである。
XOR回路458の出力データをM関数処理するためのM関数処理回路459が設けられている。このM関数処理回路459も、前述のM関数処理回路452と同様にデータスクランブル回路600に含まれるM関数処理回路を共用することにより、回路規模を小さくすることが可能となる。
M関数処理回路459の出力は出力レジスタ460に保持される。このことから、中間鍵生成回路450はインデックスiの値に応じて中間鍵(a0,a1,a2,b0,b1,b2,c0,c1,c2,d0,d1,d2)を生成し、出力レジスタ460に格納する。
このようにした中間鍵生成回路450を用いて12個の中間鍵を生成するためには12クロック必要となり、生成工程に要する時間が長くなるが、前述の実施形態で用いた回路のように一部が3重化または4重化した回路に比して、回路規模を小さくすることができる。
〔第9実施形態〕
本発明の第9実施形態に採用されるデータスクランブル回路を図21に示す。
データスクランブル回路620は、入力レジスタ621、第1セレクタ622、B関数処理回路623、第2セレクタ624、第1I関数処理回路625、R/2関数処理回路627、クロス処理用経路628、第3セレクタ629、第2I関数処理回路630、出力レジスタ632、第4セレクタ626、第5セレクタ631を備えている。
入力レジスタ621は、入力データバスからの入力を一旦保持し、第1セレクタ622に入力するものである。第1セレクタ622は、入力レジスタ621の出力と、出力レジスタ632からフィードバックされる出力とが入力され、いずれか一方をB関数処理回路623に出力する。
第1セレクタ622の出力と、B関数処理回路623の出力とが第2セレクタ624に入力されている。第2セレクタ624は、第1セレクタ622の出力とB関数処理回路623の出力のうちいずれか一方を選択して第1I関数処理回路625に入力する。
第1I関数処理回路625は、第2セレクタ624の出力と、第4セレクタ626の出力とに基づいてI関数処理を行う。具体的には、第4セレクタ626から入力されるパラメータを第2セレクタ624から入力されるデータに排他的論理和(XOR)演算する。ここで、第4セレクタ626には、拡大鍵データと”0”とが入力されており、このうちいずれか一方を選択して出力するように構成されている。したがって、第4セレクタ626の出力が”0”である場合、第1I関数処理回路625は、入力データと同一のデータを出力することとなる。
第1I関数処理回路625の出力は、第3セレクタ629とR/2関数処理回路627とに入力される。R/2関数処理回路627の出力は、第3セレクタ629に入力されるとともに、クロス処理用経路628を経由して第3セレクタ629に入力されている。
R/2関数処理回路627は、図24に示すような構成とすることができる。ここでは、入力データのうちから32ビット毎にデータ入力されるセレクタ701と、セレクタ701の出力を非線形処理するためのM関数処理回路702と、M関数処理回路702の出力を保持するための中間レジスタ703と、中間レジスタ703の値が入力され、この入力値に0x55555555または0x33333333を乗算する第1乗算回路704と、M関数処理回路702の出力データが入力され、この入力値に0xaaaaaaaaまたは0xccccccccを乗算する第2乗算回路705と、第1乗算回路704の出力とM関数処理回路702の出力との排他的論理和を演算する第1XOR回路706と、第2乗算回路707の出力と中間レジスタ703の値との排他的論理和を演算する第2XOR回路707と、第1XOR回路706および第2XOR回路707の出力値と入力データとの排他的論理和を演算する第3XOR回路708とを備えている。
このR/2関数処理回路627は、図13のF関数処理回路に含まれる2つのM関数処理回路のうちから1つを省略したものであり、前述した実施形態における128ビットのR関数処理のうち64ビット毎に処理を行うように構成されている。セレクタ701〜第1XOR回路706,第2XOR回路707においては、32ビット処理が行われ、第3XOR回路708においては64ビット処理を行うように構成する。このことから、2クロックの処理で128ビットのR関数処理を行うことが可能となる。
第3セレクタ629は、第1I関数処理回路625の出力、R/2関数処理回路627の出力、クロス処理用経路628を経由したR/2関数処理回路627の出力が入力され、いずれか1つを出力する。
第3セレクタ629の出力は第2I関数処理回路630に入力される。第2I関数処理回路630は、第3セレクタ629の出力と、第5セレクタ631の出力とに基づいてI関数処理を行う。具体的には、第5セレクタ631から入力されるパラメータを第3セレクタ629から入力されるデータに排他的論理和(XOR)演算する。ここで、第5セレクタ631には、拡大鍵データと”0”とが入力されており、このうちいずれか一方を選択して出力するように構成されている。したがって、第5セレクタ631の出力が”0”である場合、第2I関数処理回路630は、入力データと同一のデータを出力することとなる。
第2I関数処理回路630の出力は、出力レジスタ632に入力される。出力レジスタ632は、第2I関数処理回路630の出力を一旦保持し、出力データバスに出力するとともに、第1セレクタ622にフィードバックする。
このように、R/2関数処理回路627を用いてR関数処理を行う場合には、2クロック必要となるが、データスクランブル回路620における各サイクルでの処理に2クロックが必要であることから、R/2関数処理回路627を用いることにより処理サイクル数の増加はない。このような構成とすることにより、M関数処理回路を削減することができ、回路規模を小さくすることが可能となる。
また、中間鍵生成回路450(図22参照)の入力レジスタ451の値をセレクタ701に入力し、M関数処理回路702の出力を中間レジスタ453に格納できるように構成している。さらに、中間鍵生成回路450のXOR回路458の出力をセレクタ701に入力し、M関数処理回路702の出力を出力レジスタ460に格納できるように構成している。このように構成することで、データスクランブル回路620のM関数処理回路702を中間鍵生成回路450のM関数処理回路として共用することができ、回路規模を小さくすることが可能となる。
〔第10実施形態〕
第10実施形態に採用されるデータスクランブル回路の構成を図25に示す。
図25に示すデータスクランブル回路640でも、前述の実施形態と同様に、128ビットのブロック単位で暗号化/復号化を行うために、32ビット×4の入力データバスと、32ビット×4の出力データバスを備えており、これを便宜的に1本の線で表示している。
データスクランブル回路640は、入力レジスタ641、第1セレクタ642、B関数処理回路643、第2セレクタ644、第1I関数処理回路645、R関数処理回路648、クロス処理用経路649、第3セレクタ650、第2I関数処理回路652、出力レジスタ653、第4セレクタ647、第5セレクタ651およびIVレジスタ646を備えている。
入力レジスタ641は、入力データバスからの入力を一旦保持し、第1セレクタ642に入力するものである。第1セレクタ642は、入力レジスタ641の出力と、出力レジスタ653からフィードバックされる出力とが入力され、いずれか一方をB関数処理回路643に出力する。
第1セレクタ642の出力と、B関数処理回路643の出力とが第2セレクタ644に入力されている。第2セレクタ644は、第1セレクタ642の出力とB関数処理回路643の出力のうちいずれか一方を選択して第1I関数処理回路645に入力する。
第1I関数処理回路645は、第2セレクタ644の出力と、第4セレクタ647の出力とに基づいてI関数処理を行う。具体的には、第4セレクタ647から入力されるパラメータを第2セレクタ644から入力されるデータに排他的論理和(XOR)演算する。ここで、第4セレクタ647には、拡大鍵データ、”0”およびIVレジスタ646の値とが入力されており、このうちいずれか一方を選択して出力するように構成されている。
第1I関数処理回路645の出力は、第3セレクタ650とR関数処理回路648とに入力される。R関数処理回路648の出力は、第3セレクタ650に入力されるとともに、クロス処理用経路649を経由して第3セレクタ650に入力されている。クロス処理用経路649は、R関数処理回路648の出力データ128ビットを32ビット毎に(a,b,c,d)とした場合、入力(a,b,c,d)に対して(c,d,a,b)を出力するような処理を行うものであり、R関数処理回路648と第3セレクタ650との間の結線を変更することで実現できる。
第3セレクタ650は、第1I関数処理回路645の出力、R関数処理回路648の出力、クロス処理用経路649を経由したR関数処理回路648の出力が入力され、いずれか1つを出力する。
第3セレクタ650の出力は第2I関数処理回路652に入力される。第2I関数処理回路652は、第3セレクタ650の出力と、第5セレクタ651の出力とに基づいてI関数処理を行う。具体的には、第5セレクタ651から入力されるパラメータを第3セレクタ650から入力されるデータに排他的論理和(XOR)演算する。ここで、第5セレクタ651には、拡大鍵データ、”0”およびIVレジスタ646の値とが入力されており、このうちいずれかを選択して出力するように構成されている。
第2I関数処理回路652の出力は、出力レジスタ653に入力される。出力レジスタ653は、第2I関数処理回路652の出力を一旦保持し、出力データバスに出力するとともに、第1セレクタ642にフィードバックする。
IVレジスタ646は、初期値(Initialization Vector)を格納するものであり、このIVレジスタ646に格納された初期値を用いることにより、暗号化および復号化の際のCBC(Cipher Block Chaining)モード処理を実行することができる。このようなIVレジスタ646を用いてCBCモード処理を伴う暗号化処理サイクルのセレクタ切換制御を表9に示し、同じく、CBCモード処理を伴う復号化処理サイクルのセレクタ切換制御を表10に示す。
【表9】
【表10】
このようにして、CBCモード処理を伴う暗号化処理を行う場合には、第1サイクルにおける第4セレクタ647のセレクタ位置をcとすることにより、IVレジスタ646内の初期値を第1I関数処理回路645に供給し、入力データに初期値を排他的論理和演算するように構成する。
また、CBCモード処理を伴う復号化処理を行う場合には、最終の第14サイクルにおける第5セレクタ651のセレクタ位置をcとすることにより、IVレジスタ646内の初期値を第2I関数処理回路652に供給し、排他的論理和演算を実行した後の結果を出力するように構成できる。
表9および表10に示すセレクタ切換制御では、鍵長128ビットの場合の例であり、鍵長が192/256ビットである場合には、(B−I−R)処理と(R−I)処理の繰り返し数を7回とし、表9および表10の13サイクルと14サイクルとの間に、(B−I−R)処理と(R−I)処理を1回ずつ追加することとなる。
〔第11実施形態〕
第11実施形態に採用されるデータスクランブル回路の構成を図26に示す。
図26に示すデータスクランブル回路660は、入力レジスタ661、第1セレクタ662、B関数処理回路663、第2セレクタ664、第1I関数処理回路665、R/2関数処理回路668、クロス処理用経路669、第3セレクタ670、第2I関数処理回路671、出力レジスタ673、第4セレクタ667、第5セレクタ672およびIVレジスタ666を備えている。
入力レジスタ661は、入力データバスからの入力を一旦保持し、第1セレクタ662に入力するものである。第1セレクタ662は、入力レジスタ661の出力と、出力レジスタ673からフィードバックされる出力とが入力され、いずれか一方をB関数処理回路663に出力する。
第1セレクタ662の出力と、B関数処理回路663の出力とが第2セレクタ664に入力されている。第2セレクタ664は、第1セレクタ662の出力とB関数処理回路663の出力のうちいずれか一方を選択して第1I関数処理回路665に入力する。
第1I関数処理回路665は、第2セレクタ664の出力と、第4セレクタ667の出力とに基づいてI関数処理を行う。具体的には、第4セレクタ667から入力されるパラメータを第2セレクタ664から入力されるデータに排他的論理和(XOR)演算する。ここで、第4セレクタ667には、拡大鍵データ、”0”およびIVレジスタ666の値とが入力されており、このうちいずれか一方を選択して出力するように構成されている。
第1I関数処理回路665の出力は、第3セレクタ670とR/2関数処理回路668とに入力される。R/2関数処理回路668の出力は、第3セレクタ670に入力されるとともに、クロス処理用経路669を経由して第3セレクタ670に入力されている。
R/2関数処理回路668は、前述したR/2関数処理回路627(図21参照)と同様の回路を用いることが可能である。
第3セレクタ670は、第1I関数処理回路665の出力、R/2関数処理回路668の出力、クロス処理用経路669を経由したR/2関数処理回路668の出力が入力され、いずれか1つを出力する。
第3セレクタ670の出力は第2I関数処理回路671に入力される。第2I関数処理回路671は、第3セレクタ670の出力と、第5セレクタ672の出力とに基づいてI関数処理を行う。具体的には、第5セレクタ672から入力されるパラメータを第3セレクタ670から入力されるデータに排他的論理和(XOR)演算する。ここで、第5セレクタ672には、拡大鍵データ、”0”およびIVレジスタ666の値とが入力されており、このうちいずれかを選択して出力するように構成されている。
第2I関数処理回路671の出力は、出力レジスタ673に入力される。出力レジスタ673は、第2I関数処理回路671の出力を一旦保持し、出力データバスに出力するとともに、第1セレクタ662にフィードバックする。
このように、R/2関数処理回路668を用いてR関数処理を行っているため、処理サイクルを増加することなく、M関数処理回路を削減することができ、回路規模を小さくすることが可能となる。
中間鍵生成回路におけるM関数処理回路を共用することも可能となるため、さらに回路規模を小さくすることが可能となる。
さらに、IVレジスタ666に格納された初期値を利用して、CBCモード処理を行うことも可能となる。
(産業上の利用可能性)
本発明によれば、基本関数処理を繰り返し実行するブロック暗号アルゴリズムにおいて、クロック同期ループを構成することで、回路規模を縮小することが可能となる。また、中間鍵を事前に生成するように構成することで、中間鍵から拡大鍵を生成する処理を高速化することができる。さらに、拡大鍵生成処理において、キースケジューリングの制御を簡易化することができ、コンパクトな回路で高速処理を実現することができる。
【図面の簡単な説明】
図1は、本発明の概略構成を示すブロック図である。
図2は、第1実施形態のデータスクランブル回路を示す回路図である。
図3は、第1実施形態の中間鍵生成回路を示す回路図である。
図4は、第1実施形態の拡大鍵生成回路を示す回路図である。
図5は、第2実施形態の拡大鍵生成回路を示す回路図である。
図6は、第2実施形態のデータスクランブル回路を示す回路図である。
図7は、第2実施形態のデータスクランブル回路の変形例を示す回路図である。
図8は、第3実施形態の中間鍵生成回路を示す回路図である。
図9は、第4実施形態の拡大鍵生成回路を示す回路図である。
図10は、第4実施形態の拡大鍵生成回路の出力回路を示す回路図である。
図11は、B関数処理回路を示す回路図である。
図12は、R関数処理回路を示す回路図である。
図13は、F関数処理回路を示す回路図である。
図14は、第1実施形態における他のデータスクランブル回路を示す回路図である。
図15は、第5実施形態のデータスクランブル回路を示す回路図である。
図16は、第6実施形態のデータスクランブル回路を示す回路図である。
図17は、第7実施形態のデータスクランブル回路を示す回路図である。
図18は、M関数処理回路を示す回路図である。
図19は、M関数処理回路における処理の説明図。
図20は、第8実施形態のデータスクランブル回路を示す回路図である。
図21は、第9実施形態のデータスクランブル回路を示す回路図である。
図22は、第8実施形態および第9実施形態に用いられる中間鍵生成回路を示す回路図である。
図23は、第8実施形態および第9実施形態に用いられる拡大鍵生成回路を示す回路図である。
図24は、第9実施形態、第11実施形態に用いられるR/2関数処理回路を示す回路図である。
図25は、第10実施形態のデータスクランブル回路を示す回路図である。
図26は、第11実施形態のデータスクランブル回路を示す回路図である。
Claims (13)
- 暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数およびR関数とを用いてデータスクランブルを行い、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を実行するデータスクランブル回路であって、
I関数、B関数を処理した後、I関数、R関数、R関数、I関数、B関数の順に処理を行う処理ブロックをn回処理し、その後I関数の処理を行うために、前記I関数を処理するI関数処理回路と、前記B関数を処理するB関数処理回路と、前記R関数を処理するR関数処理回路とを実装し、
I関数処理回路、R関数処理回路、R関数処理回路、I関数処理回路、B関数処理回路の順に接続されたクロック同期ループを構成し、I関数処理回路、B関数処理回路、前記クロック同期ループ、I関数処理回路の順に接続しており、
第1I関数処理回路と、
第2I関数処理回路、第1R関数処理回路、第2R関数処理回路および第3I関数処理回路が順に接続される処理ブロックと、
前記第1I関数処理回路の出力と、前記処理ブロックの出力とを選択的に出力するセレクタと、
前記セレクタの出力が接続されるB関数処理回路と、
前記B関数処理回路の出力をクロック周期毎にラッチして前記処理ブロックに入力するレジスタと、
前記レジスタの出力が接続される第4I関数処理回路と、
を備え、前記処理ブロックと前記B関数処理回路とによってクロック同期ループを構成するデータスクランブル回路。 - 暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数およびR関数とを用いてデータスクランブルを行い、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を実行するデータスクランブル回路であって、
I関数、B関数、I関数の順に処理を行った後、R関数、R関数、I関数、B関数、I関数の順に処理を行う処理ブロックをn回処理するために、前記I関数を処理するためのI関数処理回路と、前記B関数を処理するB関数処理回路と、前記R関数を処理するR関数処理回路とを実装し、
第1I関数処理回路、B関数処理回路、第2I関数処理回路が順に接続される第1処理ブロックと、
第1R関数処理回路、第2R関数処理回路が順に接続される第2処理ブロックと、
入力データと前記第2処理ブロックの出力とのうちいずれかを選択的に前記第1処理ブロックに入力するためのセレクタと、
を備えるデータスクランブル回路。 - 暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数およびR関数とを用いてデータスクランブルを行い、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を実行するデータスクランブル回路であって、
I関数、B関数、I関数の順に処理を行う第1処理ブロックと、R関数、R関数の順に処理を行う第2処理ブロックとを交互に複数回処理するために、前記I関数を処理するためのI関数処理回路と、前記B関数を処理するB関数処理回路と、前記R関数を処理するR関数処理回路とを実装し、
第1I関数処理回路、B関数処理回路、第2I関数処理回路が順に接続される第1処理ブロックと、
第1R関数処理回路、第2R関数処理回路が接続される第2処理ブロックと、
前記第1処理ブロックの出力と前記第2処理ブロックの出力のうちいずれかを選択的に出力する出力側セレクタと、
入力データと前記出力側セレクタの出力とのうちいずれかを選択的に前記第1I関数処理回路に入力するための入力側セレクタと、
を備えるデータスクランブル回路。 - 暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数およびR関数とを用いてデータスクランブルを行い、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を実行するデータスクランブル回路であって、
I関数、B関数、I関数の順に処理を行う第1処理ブロックと、R関数処理を行う第2処理ブロックとを所定の順に複数回処理するために、前記I関数を処理するためのI関数処理回路と、前記B関数を処理するB関数処理回路と、前記R関数を処理するR関数処理回路とを実装し、
第1I関数処理回路、B関数処理回路、第2I関数処理回路が順に接続される第1処理ブロックと、
第1R関数処理回路を備える第2処理ブロックと、
前記第1処理ブロックの出力と前記第2処理ブロックの出力のうちいずれかを選択的に出力する出力側セレクタと、
入力データと前記出力側セレクタの出力とのうちいずれかを選択的に前記第1I関数処理回路に入力するための入力側セレクタと、
を備えるデータスクランブル回路。 - 前記B関数処理回路は、32ビット×4の入力データを4ビット×32の入力データに変換する入力データ変換部と、前記入力データ変換部に接続される32個の4ビットSboxと、前記各4ビットSboxから出力される4ビット×32の出力データを32ビット×4の出力データに変換する出力データ変換部とを備える、請求項1乃至4のいずれかに記載のデータスクランブル回路。
- 前記R関数処理回路は、データのビットを攪拌するF関数処理回路を備え、32ビット×4の入力データのうち2つの入力データのビットを攪拌して32ビット×2の出力データを出力するF関数処理回路と、前記F関数処理回路の出力データを前記入力データのうちの残りの2つと排他的論理和を演算する2つのXOR回路とを備える、請求項1乃至4のいずれかに記載のデータスクランブル回路。
- 前記F関数処理回路は、32ビット×2の入力データを非均等なビット数の複数の入力データに変換する入力データ変換部と、前記入力データ変換部に接続される複数のSboxと、前記Sboxからの出力が入力されMDSを用いた排他的論理和演算を行うMDS演算回路と、前記出力データ変換部の出力データに所定値を乗算する乗算回路と、乗算回路の出力と出力データ変換部の出力との排他的論理和を演算するXOR回路とを備える、請求項6に記載のデータスクランブル回路。
- 前記複数のSboxは、2個の6ビットSboxと4個の5ビットSboxとで構成され、前記入力データ変換部は32ビット×2の入力データを6ビット×2、5ビット×4の入力データに変換する、請求項7に記載のデータスクランブル回路。
- 暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数およびR関数とを用いてデータスクランブルを行い、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を実行するデータスクランブル回路であって、
前記I関数を処理するためのI関数処理回路と、前記B関数を処理するB関数処理回路と、前記R関数を処理するR関数処理回路とが複数のセレクタを介して接続され、前記複数のセレクタが、1サイクルでI関数の処理を行う第1設定と、1サイクルでB関数、I関数、R関数の順に処理を行う第2設定と、1サイクルでR関数、I関数の順に処理を行う第3設定と、1サイクルでB関数、I関数の順に処理を行う第4設定を有し、
入力データとフィードバックされる出力データとが入力され、いずれか一方を選択的に出力する第1セレクタと、
前記第1セレクタの出力が入力されるB関数処理回路と、
前記第1セレクタの出力と前記B関数処理回路の出力とが入力され、いずれか一方を出力する第2セレクタと、
前記第2セレクタの出力が入力される第1I関数処理回路と、
前記第1I関数処理回路の出力が入力されるR関数処理回路と、
前記第1I関数処理回路の出力、前記R関数処理回路の出力および前記R関数処理回路の出力ビットをクロスさせた出力が入力され、いずれか1つを選択的に出力する第3セレクタと、
前記第3セレクタの出力が入力され、出力データを出力する第2I関数処理回路と、
拡大鍵と”0”とを含むデータのうちからI関数処理のパラメータを選択して前記第1I関数処理回路に入力する第4セレクタと、
拡大鍵と”0”とを含むデータのうちからI関数処理のパラメータを選択して前記第2I関数処理回路に入力する第5セレクタと、
を備えるデータスクランブル回路。 - 初期値を格納するIVレジスタをさらに備え、前記第4セレクタおよび第5セレクタは、拡大鍵と”0”と前記IVレジスタの値とのうちからI関数処理のパラメータを選択するように構成され、前記複数のセレクタが、前記第1I関数処理回路および第2I関数処理回路に前記IVレジスタの値を入力することによりCBC(Cipher Block Chaining)モード処理を実行する第5設定を備える、請求項9に記載のデータスクランブル回路。
- 暗号鍵から生成される複数の拡大鍵とデータとの排他的論理和を演算するI関数と、データのビットを攪拌するB関数および所定ビット数の1/2のビット数毎にR関数処理を行うR/2関数処理回路とを用いてデータスクランブルを行い、鍵長128/192/256ビット、処理ブロック128ビットの共通鍵ブロック暗号の暗号化/復号化を実行するデータスクランブル回路であって、
前記I関数を処理するためのI関数処理回路と、前記B関数を処理するB関数処理回路と、前記R関数を処理するR/2関数処理回路とが複数のセレクタを介して接続され、前記複数のセレクタが、1サイクルでI関数の処理を行う第1設定と、1サイクルでB関数、I関数、R関数の順に処理を行う第2設定と、1サイクルでR関数、I関数の順に処理を行う第3設定と、1サイクルでB関数、I関数の順に処理を行う第4設定を有し、
前記複数のセレクタの第2設定では、1クロックでB関数、I関数、R/2関数の順に処理を行い、次の1クロックでR/2関数の処理を行うことで、1サイクルでB関数、I関数、R関数の順に処理を行い、前記複数のセレクタの第3設定では、1クロックでR/2関数の処理を行い、次の1クロックでR/2関数、I関数の順に処理を行うことで、1サイクルでR関数、I関数の順に処理を行うデータスクランブル回路。 - 入力データとフィードバックされる出力データとが入力され、いずれか一方を選択的に出力する第1セレクタと、
前記第1セレクタの出力が入力されるB関数処理回路と、
前記第1セレクタの出力と前記B関数処理回路の出力とが入力され、いずれか一方を出力する第2セレクタと、
前記第2セレクタの出力が入力される第1I関数処理回路と、
前記第1I関数処理回路の出力が入力されるR/2関数処理回路と、
前記第1I関数処理回路の出力、前記R/2関数処理回路の出力および前記R/2関数処理回路の出力ビットをクロスさせた出力が入力され、いずれか1つを選択的に出力する第3セレクタと、
前記第3セレクタの出力が入力され、出力データを出力する第2I関数処理回路と、
拡大鍵と”0”とを含むデータのうちからI関数処理のパラメータを選択して前記第1I関数処理回路に入力する第4セレクタと、
拡大鍵と”0”とを含むデータのうちからI関数処理のパラメータを選択して前記第2I関数処理回路に入力する第5セレクタと、
を備える請求項11に記載のデータスクランブル回路。 - 初期値を格納するIVレジスタをさらに備え、前記第4セレクタおよび第5セレクタは、拡大鍵と”0”と前記IVレジスタの値とのうちからI関数処理のパラメータを選択するように構成され、前記複数のセレクタが、前記第1I関数処理回路および第2I関数処理回路に前記IVレジスタの値を入力することによりCBC(Cipher Block Chaining)モード処理を実行する第5設定を備える、請求項11に記載のデータスクランブル回路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002558244A JP4745598B2 (ja) | 2001-01-22 | 2001-06-14 | 暗号回路 |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2001/000399 WO2002058036A1 (en) | 2001-01-22 | 2001-01-22 | Encryption circuit |
JPPCT/JP01/00399 | 2001-01-22 | ||
JP2002558244A JP4745598B2 (ja) | 2001-01-22 | 2001-06-14 | 暗号回路 |
PCT/JP2001/005095 WO2002058037A1 (en) | 2001-01-22 | 2001-06-14 | Cipher circuit |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2002058037A1 JPWO2002058037A1 (ja) | 2004-05-27 |
JP4745598B2 true JP4745598B2 (ja) | 2011-08-10 |
Family
ID=44541503
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002558244A Expired - Fee Related JP4745598B2 (ja) | 2001-01-22 | 2001-06-14 | 暗号回路 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4745598B2 (ja) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07191603A (ja) * | 1993-12-24 | 1995-07-28 | Canon Inc | 暗号装置及びこれを用いた秘匿・認証通信システム |
JP2000075785A (ja) * | 1998-08-26 | 2000-03-14 | Fujitsu Ltd | 高速暗号処理回路および処理方法 |
-
2001
- 2001-06-14 JP JP2002558244A patent/JP4745598B2/ja not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07191603A (ja) * | 1993-12-24 | 1995-07-28 | Canon Inc | 暗号装置及びこれを用いた秘匿・認証通信システム |
JP2000075785A (ja) * | 1998-08-26 | 2000-03-14 | Fujitsu Ltd | 高速暗号処理回路および処理方法 |
Also Published As
Publication number | Publication date |
---|---|
JPWO2002058037A1 (ja) | 2004-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3851115B2 (ja) | 暗号回路 | |
JP4127472B2 (ja) | データ変換装置及びデータ変換装置のデータ変換方法及びプログラム及びコンピュータ読み取り可能な記録媒体 | |
JP4128395B2 (ja) | データ変換装置 | |
JP2007041620A5 (ja) | ||
CN106506142B (zh) | 一种低复杂度的aes一体化加解密器实现方法 | |
JP2002049309A (ja) | データ暗号化標準アルゴリズムを利用した暗号化装置 | |
JPH10240500A (ja) | 乱数生成装置及び方法、暗号化装置及び方法、復号装置及び方法、並びにストリーム暗号システム | |
JP4745598B2 (ja) | 暗号回路 | |
JP3547474B2 (ja) | 暗号演算回路 | |
KR20030051111A (ko) | AES Rijndael(라인달) 암호 알고리듬의 하드웨어 구현을위한 라운드 처리부 회로 및 온라인 라운드 키 생성 회로 | |
JP2000075785A (ja) | 高速暗号処理回路および処理方法 | |
KR101662291B1 (ko) | 경량 블록암호 lea 기반 암호화 및 복호화 장치 | |
JP5268001B2 (ja) | ストリーム暗号向け擬似乱数生成装置とプログラムと方法 | |
JP4230152B2 (ja) | 暗号回路 | |
JP4117157B2 (ja) | 暗号回路 | |
CN108989018B (zh) | 一种aes加密单元、aes加密电路及加密方法 | |
WO2002058037A1 (en) | Cipher circuit | |
KR100316025B1 (ko) | 데이터 암호 표준 알고리즘을 이용한 암호 및 복호 장치 | |
Sharma et al. | Design of an efficient architecture for advanced encryption standard algorithm using systolic structures | |
KR20030087893A (ko) | 라운드 키의 온라인 계산 기능을 갖는 모듈화 구조의 AESRijndael 라운드 키 생성 회로 | |
JPH06102820A (ja) | 暗号装置 | |
JPH06102821A (ja) | 暗号装置 | |
Jayashree et al. | An efficient high throughput implementation of idea encryption algorithm using VLSI | |
KR20010107089A (ko) | 데이터 암호화 표준 알고리즘을 이용한 암호화 장치 | |
JP2018155922A (ja) | 帰還シフトレジスタ回路及び帰還シフトレジスタの動作方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080328 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20080929 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20080930 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110208 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110407 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20110510 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110512 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140520 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |