説明

処理回路

【課題】 処理能力を維持したまま回路面積の削減化が図られた処理回路を提供する。
【解決手段】 128ビット幅のパラレル信号(平文)を入力し、分周器10からの低速のクロックCLK_Gに同期して128ビット幅全幅についてパラレルに処理を実行するレジスタ11,シフトロウズ演算器13,ミックスコラムズ演算器14,アドラウンドキー演算器15,レジスタ16と、128ビット幅をNに分割したときの128/Nビット幅単位で、クロックCLK_Gよりも高速のクロックCLK_Lに同期して処理を実行する共有型S―Boxを具備し、128ビット幅のパラレル信号を128/Nビット幅ずつに分けて上記共有型S―Boxに処理を複数回繰り返させるサブバイト演算器12とを備えた。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数の演算器を備えた処理回路に関する。
【背景技術】
【0002】
従来より、複数の演算器を備えた処理回路を有する集積回路が知られている。このような集積回路は、一つまたは複数の並列動作する同一の演算器群を持つ場合が多い。演算器群は、処理回路の処理能力を高めることができるものの、各演算器の回路面積が大きい場合、その回路面積は処理回路全体に対して大きな割合になる場合もある。この解決策の一つとして、演算器群を構成する演算器を逐次動作させる手法が知られている。しかし、この手法では、回路面積の削減化は可能であるものの、逐次動作により処理能力が低下するという問題がある。ここで、処理能力と回路面積とはトレードオフの関係にあるので、集積回路を搭載する機器の制約条件に応じて、どちらを優先させるかのかを検討する必要がある。
【0003】
近年、高性能かつ小型な携帯機器(スマートカード、ICカードなど)が急速に普及している。これらの機器は搭載される集積回路に対して面積の削減と、処理能力の維持または向上との双方を要求する。このように相反する要求に対して、演算器群を構成する演算器自体の小面積化、および処理能力向上のためのパイプライン化の適用などの複合的な課題を考慮する必要がある。
【0004】
ここで、複数の演算器を備えた処理回路の一つに、AES(Advanced Encryption Standard)回路がある。このAES回路は、次世代米国標準の共通鍵暗号方式を採用した回路である。以下、図7を参照して説明する。
【0005】
図7は、従来のAES回路のブロック図である。
【0006】
図7に示すAES回路100には、レジスタ101と、サブバイト(SubBytes)演算器102と、シフトロウズ(ShiftRows)演算器103と、ミックスコラムズ(MixColumns)演算器104と、アドラウンドキー(AddRoundKey)演算器105と、レジスタ106とが備えられている。アドラウンドキー演算器105には暗号鍵が入力される。
【0007】
ここで、AES回路100に、暗号化を行なう対象である128ビット幅のパラレル信号(平文と称する)が入力される。また、クロックCLK_Gも入力される。入力された平文は、クロックCLK_Gに同期してレジスタ101に格納され、次いでサブバイト演算器102,シフトロウズ演算器103,ミックスコラムズ演算器104で順次に演算処理が施され、さらにアドラウンドキー演算器105に入力される。アドラウンドキー演算器105は、入力された信号に対して暗号鍵を用いて暗号化処理してレジスタ106を経由して128ビット幅の暗号文として出力するとともに、この暗号文をレジスタ101に帰還する。このように、AES回路100は、暗号化を行なう対象である平文(128ビット)に対して、暗号鍵を用いて4種類の演算(SubBytes、ShiftRows、MixColumns、AddRoundkey)を繰り返し行なって、暗号文(128ビット)を得る。ここで、4種類の演算は、クロックCLK_Gの1サイクル毎に行なわれる。
【0008】
図8は、図7に示すサブバイト演算器のブロック図、図9は、図8に示すS−Box回路の概念図である。
【0009】
図8に示すサブバイト演算器102には、16個のS−Box回路107が備えられている。これら16個のS−Box回路107は並列に接続されている。サブバイト演算器102に入力された信号(128ビット)は、8ビット単位に分割されて各S−Box回路107に各8ビット単位で入力される。
【0010】
S−Box回路107は、図9に示すS−Boxテーブル108を有する。このS−Boxテーブル108は、入力された8ビットの信号に対して、上位4ビットの組み合わせによる16ビットと下位4ビットの組み合わせによる16ビットとの積である16×16=256通りのデータ変換を行なうテーブルであり、例えば、入力された8ビットの信号が0×00(0は、16個のS−Box回路107のうちの最初のS−Box回路107を示し、00は8ビットの信号のうちの上位4ビット,下位4ビットがともに0であることを示す)の場合、このS−Boxテーブル108からは、0×63(0は、16個のS−Box回路107のうちの最初のS−Box回路107を示し、63は8ビットの信号00に対応するデータ(変換データ)である)の変換データが出力される。
【0011】
一般的にS−Box回路107は、S−Boxテーブル108をハードウェア記述言語のcase文などで記述し、論理合成により生成される。このS−Box回路107は、換言すれば、256入力1出力のマルチプレクサと等価な組み合わせ回路である。尚、レジスタ101,106,シフトロウズ演算器103,ミックスコラムズ演算器104,アドラウンドキー演算器105は、既知であるので、ここでの説明は省略する。
【0012】
この従来のAES回路100では、上述したように、サブバイト演算器102の内部に、並列に接続された16個のS−Box回路107が備えられているため、回路面積が大きいという欠点を有する。
【0013】
一般に、AES回路では、暗号強度は高いものの、計算量が大きいため、現在、AES回路の処理能力を高めるために回路化され、その回路はセキュリティ性を要求する小型携帯機器へ搭載されている。しかしながら、AES回路は回路面積が大きく、小型携帯機器への搭載が困難である場合もある。その要因は、上述したように、サブバイト演算器内に備えられた複数個(一般的には16個)のS−Box回路(セレクタと等価な回路)にある。AES回路において、S−Box回路アレイは回路面積および遅延時間がともに大きい。そこで、S−Box回路アレイを構成するS−Box回路自体の小面積化、処理能力維持のためのパイプライン化の適用などの提案がなされている(例えば、特許文献1、特許文献2参照)。
【特許文献1】特開2005―2156688号公報
【特許文献2】特開2005−100085号公報
【発明の開示】
【発明が解決しようとする課題】
【0014】
一般に、処理回路に備えられた演算器を逐次動作させると、処理回路の処理能力が低下するという問題がある。ここで、演算器自体を計算速度が遅い単純な回路構成に変更して小面積化を行なうと、回路の遅延量が大きくなり、やはり処理能力が低下するという問題がある。さらに、演算器自体の小面積化が困難である場合もある。
【0015】
このような問題に対して、処理能力を維持するために、複数の演算器を備えた処理回路にパイプライン化を適用しようとすると、その処理回路にはパイプライン制御用回路を持たせる必要がある。従って、処理回路が複雑になり、また回路設計の難易度が高まるという問題が発生する。
【0016】
本発明は、上記事情に鑑み、処理能力を維持したまま回路面積の削減化が図られた処理回路を提供することを目的とする。
【課題を解決するための手段】
【0017】
上記目的を達成する本発明の処理回路は、
所定の第1のビット幅のパラレル信号を入力し、所定の第1のクロックに同期してその第1のビット幅全幅についてパラレルに処理を実行する第1の演算器と、
上記第1のビット幅を複数に分割したときの第2のビット幅単位で、上記第1のクロックよりも高速の第2のクロックに同期して処理を実行する演算処理部を具備し、上記第1のビット幅と同一のビット幅のパラレル信号を入力しそのパラレル信号を上記第2のビット幅ずつに分けて上記演算処理部に処理を複数回繰り返させる第2の演算器とを備えたことを特徴とする。
【0018】
本発明の処理回路は、入力されるパラレル信号の第1のビット幅よりも小さい第2のビット幅単位で且つ高速の第2のクロックに同期して複数回繰り返して処理を実行する演算処理部を具備する第2の演算器を備えたものである。このため、第2の演算器に具備される演算処理部は、小さなビット幅を有する演算処理部で済む。また、演算処理部では、高速のクロックで複数回処理が実行されるため、処理能力を維持することができる。従って、処理能力を維持したまま回路面積の削減化が図られる。
【0019】
ここで、上記第2のクロックを分周して第1のクロックを生成する分周器を備えたことが好ましい。
【0020】
このようにすると、第1のクロックを簡単に生成することができる。
【0021】
また、上記演算処理部が、上記第2のビット幅の入力を受けてテーブルを参照しその入力に対応した出力を得ることにより入力を出力に変換する処理を実行するものであることも好ましい態様である。
【0022】
このようにすると、演算処理部では、入力を出力に簡単に変換することができる。
【0023】
さらに、上記第2の演算器は、その第2の演算器に入力されてきた上記第1のビット幅のパラレル信号を上記演算処理部での一回の処理単位である第2のビット幅に分けてその演算処理部に順次に渡すパラレル/シリアル変換部と、上記演算処理部の処理が複数回繰り返されたときのその演算処理部の複数回のシリアルの出力を合わせてパラレル信号として出力するシリアル/パラレル変換部を備えたことも好ましい。
【0024】
このようにすると、第2の演算器に入力された第1のビット幅のパラレル信号を第2のビット幅に簡単に変換することができるとともに、第2の演算器の演算処理部からの複数回のシリアルの出力をパラレル信号に簡単に変換することができる。
【発明の効果】
【0025】
本発明によれば、処理能力を維持したまま回路面積の削減化が図られた処理回路を提供することができる。
【発明を実施するための最良の形態】
【0026】
以下、図面を参照して本発明の実施の形態を説明する。
【0027】
図1は、本発明の処理回路の一実施形態であるAES回路のブロック図である。
【0028】
図1に示すAES回路1には、分周器10と、レジスタ11と、サブバイト(SubBytes)演算器12と、シフトロウズ(ShiftRows)演算器13と、ミックスコラムズ(MixColumns)演算器14と、アドラウンドキー(AddRoundKey)演算器15と、レジスタ16とが備えられている。ここで、シフトロウズ演算器13と、ミックスコラムズ演算器14と、アドラウンドキー演算器15とが、本発明にいう第1の演算器に相当する。また、サブバイト演算器12が、本発明にいう第2の演算器に相当する。
【0029】
分周器10には、高速のクロックCLK_L(本発明にいう第2のクロックの一例に相当)が入力される。この分周器10は、高速のクロックCLK_Lを分周して低速のクロックCLK_G(本発明にいう第1のクロックの一例に相当)を生成する。
【0030】
AES回路1には、暗号化を行なう対象である128ビット幅のパラレル信号(本発明にいう第1のビット幅のパラレル信号の一例に相当するものであり、ここでは平文と称する)が入力される。このAES回路1においても、前述した図7に示すAES回路100と同様に、入力された平文に対して、クロックCLK_Gの1サイクルについて、アドラウンドキー演算器15に入力された暗号鍵を用いた4種類の演算(SubBytes、ShiftRows、MixColumns、AddRoundkey)が1回行なわれる。
【0031】
ただし、本実施形態では、サブバイト演算器12は高速のクロックCLK_Lに同期して動作し、その他の回路(レジスタ11,16,シフトロウズ演算器13,ミックスコラムズ演算器14,アドラウンドキー演算器15)は低速のクロックCLK_Gに同期して動作する。
【0032】
図2は、図1に示すサブバイト演算器のブロック図である。
【0033】
図2に示すサブバイト演算器12には、パラレル/シリアル変換部12aと、シリアル/パラレル変換部12bと、16/N個の共有型S−Box回路17(本発明にいう演算処理部の一例に相当)とが備えられている。
【0034】
パラレル/シリアル変換部12aは、サブバイト演算器12に入力されてきた128ビット幅のパラレル信号を、16/N個の共有型S−Box回路17での一回の処理単位である128/Nのビット幅に分けて、これらの共有型S−Box回路17に順次に渡す。
【0035】
シリアル/パラレル変換部12bは、16/N個の共有型S−Box回路17の処理が複数回繰り返されたときの共有型S−Box回路17の複数回(16/N回)のシリアルの出力(128/Nのビット幅の出力)を合わせて128ビット幅のパラレル信号として出力する。
【0036】
16/N個の共有型S−Box回路17には、高速のクロックCLK_Lが入力される。また、これら共有型S−Box回路17は、128/Nのビット幅(本発明にいう第2のビット幅の一例に相当)単位で、高速のクロックCLK_Lに同期して処理を実行する。例えば、N=4の場合は、ビット幅は32ビット幅となり、この32ビット幅単位で、4つの共有型S−Box回路17が高速のクロックCLK_Lに同期して4回処理を高速に実行する。
【0037】
図3は、図2に示す共有型S−Box回路のブロック図である。
【0038】
図3に示す共有型S−Box回路17には、パラレル/シリアル変換部18と、S−Box(SRAM)19と、シリアル/パラレル変換部20とが備えられている。
【0039】
パラレル/シリアル変換部18は、上記パラレル/シリアル変換部12aからの128/Nのビット幅のパラレル信号data_inを、8ビットの信号box_inに変換する。
【0040】
S―Box19は、パラレル/シリアル変換部18からの8ビットの信号box_inの入力を受けて、後述するテーブルを参照し、その入力に対応した出力を得ることにより入力を出力に変換する処理を実行する。
【0041】
シリアル/パラレル変換部20は、S―Box19からの8ビットの信号box_outを、128/Nのビット幅のパラレル信号data_outに変換する。
【0042】
図4は、S―Box19により参照されるテーブルを示す図である。
【0043】
S−Box回路19は、1個のSRAMを有する。このSRAMは、S−Boxテーブルを保持する。このS−Boxテーブルは、入力された8ビットの信号box_inに対して、上位4ビットの組み合わせによる16ビット(x)と下位4ビットの組み合わせによる16ビット(y)との組み合わせである16×16=256通りのデータ変換を行なうテーブルであり、例えば、入力された8ビットの信号box_inが00の場合、このS−Boxテーブルからは、データとして63が出力される。また、入力された8ビットの信号box_inが01の場合、このS−Boxテーブルからは、データとして7cが出力される。
【0044】
以下、図3に示す共有型S−Box回路17の動作について説明する。
(1)128/Nのビット幅のパラレル信号data_inがパラレル/シリアル変換部18により8ビットの信号box_inに変換される。
(2)S―Box19は、8ビットの信号box_inの入力を受けて、図4に示すテーブルを参照し、その入力に対応した出力である8ビットの信号box_outを出力する。
(3)出力された8ビットの信号box_outは、シリアル/パラレル変換部20により128/Nのビット幅のパラレル信号data_outに変換される。
【0045】
図5は、N=4の場合の共有型S−Box回路のタイミングチャートである。
【0046】
N=4の場合は、128ビット幅を4に分割したときの32ビットのビット幅単位で、高速のクロックCLK_Lに同期して処理を実行する4つの共有型S−Box回路17が必要とされる。
【0047】
共有型S−Box回路17には、図5に示すクロックCLK_Lの1サイクル目から、32ビット幅のパラレル信号data_in[31:0]を表わすパラレルデータ(0×00010203)が入力される。これらのパラレルデータ(0×00010203)は、クロックCLK_Lの2サイクル目,3サイクル目,4サイクル目,5サイクル目で順次に8ビットの信号box_in[7:0]を表わすシリアルデータ(0×00),(0×01),(0×02),(0×03)に変換される。さらに、これらのシリアルデータ(0×00),(0×01),(0×02),(0×03)により、S―Box19から8ビットの信号box_outを表わす変換データ(0×63),(0×7c),(0×77),(0×7d)が、クロックCLK_Lの3サイクル目,4サイクル目,5サイクル目,6サイクル目で順次に出力される。最後に、これらの変換データ(0×63),(0×7c),(0×77),(0×7d)がクロックCLK_Lの7サイクル目で32ビット幅のパラレル信号data_out[7:0]を表わすパラレルデータ(0×637c777d)として出力される。
【0048】
このように、N=4の場合、共有型S−Box回路17は、32ビット幅のパラレル信号data_inに対して、7CLK_Lサイクルを要する。すなわち、この共有型S−Box回路17は、128/Nのビット幅のパラレル信号data_inに対して、(N+3)CLK_Lサイクルを要する。
【0049】
図6は、本実施形態のAES回路の、1クロックCLK_Gサイクルにおける各回路の処理時間を示す図である。
【0050】
ここで、図6に示すMは、本実施形態のAES回路1における、サブバイト演算器12の処理時間と、その他の演算器(シフトロウズ演算器13,ミックスコラムズ演算器14,アドラウンドキー演算器15)の処理時間との比を示す。
【0051】
上述したように、共有型S−Box回路17は、(N+3)CLK_Lサイクルを要する。ここで、(N+3)CLK_Lサイクル≦(1/M)CLK_Gサイクルを満たすように、分周比((1/M)×(N+3))を設定する。例えば、N=4の場合、共有型S−Box回路17は32ビットのパラレル信号data_inに対して、7CLK_Lサイクルを要する(図5参照)。また、本設定環境では、Mは約2/3とする。従って、分周比は11となる。
【図面の簡単な説明】
【0052】
【図1】本発明の処理回路の一実施形態であるAES回路のブロック図である。
【図2】図1に示すサブバイト演算器のブロック図である。
【図3】図2に示す共有型S−Box回路のブロック図である。
【図4】S―Box19により参照されるテーブルを示す図である。
【図5】N=4の場合の共有型S−Box回路のタイミングチャートである。
【図6】本実施形態のAES回路の、1クロックCLK_Gサイクルにおける各回路の処理時間を示す図である。
【図7】従来のAES回路のブロック図である。
【図8】図7に示すサブバイト演算器のブロック図である。
【図9】図8に示すS−Box回路の概念図である。
【符号の説明】
【0053】
1 AES回路
10 分周器
11,16 レジスタ
12 サブバイト演算器
12a,18 パラレル/シリアル変換部
12b,20 シリアル/パラレル変換部
13 シフトロウズ演算器
14 ミックスコラムズ演算器
15 アドラウンドキー演算器
17 共有型S―Box
19 S―Box(SRAM)

【特許請求の範囲】
【請求項1】
所定の第1のビット幅のパラレル信号を入力し、所定の第1のクロックに同期して該第1のビット幅全幅についてパラレルに処理を実行する第1の演算器と、
前記第1のビット幅を複数に分割したときの第2のビット幅単位で、前記第1のクロックよりも高速の第2のクロックに同期して処理を実行する演算処理部を具備し、前記第1のビット幅と同一のビット幅のパラレル信号を入力し該パラレル信号を前記第2のビット幅ずつに分けて前記演算処理部に処理を複数回繰り返させる第2の演算器とを備えたことを特徴とする処理回路。
【請求項2】
前記第2のクロックを分周して第1のクロックを生成する分周器を備えたことを特徴とする請求項1の処理回路。
【請求項3】
前記演算処理部が、前記第2のビット幅の入力を受けてテーブルを参照し該入力に対応した出力を得ることにより入力を出力に変換する処理を実行するものであることを特徴とする請求項1の処理回路。
【請求項4】
前記第2の演算器は、該第2の演算器に入力されてきた前記第1のビット幅のパラレル信号を前記演算処理部での一回の処理単位である第2のビット幅に分けて該演算処理部に順次に渡すパラレル/シリアル変換部と、前記演算処理部の処理が複数回繰り返されたときの該演算処理部の複数回のシリアルの出力を合わせてパラレル信号として出力するシリアル/パラレル変換部を備えたことを特徴とする請求項1の処理回路。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2009−251752(P2009−251752A)
【公開日】平成21年10月29日(2009.10.29)
【国際特許分類】
【出願番号】特願2008−96418(P2008−96418)
【出願日】平成20年4月2日(2008.4.2)
【出願人】(501285133)川崎マイクロエレクトロニクス株式会社 (449)
【Fターム(参考)】