説明

暗号処理装置

【課題】回路規模や消費電力の増大を抑えながら、サイドチャネル攻撃を無効化できる暗号処理装置を提供する。
【解決手段】第1線形変換部、第2線形変換部は、マスクデータを線形変換する。第1算出部は、処理対象データと第1線形変換部により線形変換された第1マスクデータとに基づいて第1データを算出する。選択部は、第1データと第2線形変換部により線形変換された第2マスクデータのいずれかを選択する。非線形変換部は、選択された第1データまたは第2マスクデータを非線形変換する。第2算出部は、非線形変換された第1データとマスクデータとに基づいて第2データを算出する。第3線形変換部は、第2データを線形変換する。そして、第3線形変換部により線形変換された第2データが新たな処理対象データとして保持され、非線形変換された第2マスクデータが新たなマスクデータとして保持される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施の形態は、暗号化または復号を行う暗号処理装置に関する。
【背景技術】
【0002】
暗号処理装置は、平文/暗号文を特定のアルゴリズムを用いて暗号化/復号する。暗号処理装置に対しては、動作中における電力や電磁波を測定するだけで内部秘密鍵を導き出すパッシブな攻撃であるSPA(Simple Power Analysis)やDPA(Differential Power Analysis)などのサイドチャネル攻撃が報告されている。サイドチャネル攻撃は、攻撃の痕跡が残らないため、対策技術が必要かつ重要である。
【0003】
サイドチャネル攻撃は、暗号化処理や復号処理の演算中に測定することが可能な消費電力や電磁波と、推測する秘密鍵から計算することのできる中間データとの類似度が高い秘密鍵を導き出すことにより実現されている。このようなサイドチャネル攻撃に対する対策としては、乱数を用いて中間データをマスクすることによって中間データを攪乱し、類似度の高さ判定を困難にすることで、サイドチャネル攻撃を無効化するという手法が知られている。
【0004】
上記のサイドチャネル攻撃に対する対策を組み込んだ従来の暗号処理装置は、暗号回路とは独立に、物理乱数生成回路や擬似乱数生成回路などの乱数生成回路を備える。このため、回路規模が大きくなり、また、消費電力も増大する傾向にある。例えばICカードなどの小型、可搬型の機器に搭載される暗号処理装置では、回路規模や消費電力を可能な限り抑えることが要求されるため、回路規模や消費電力の増大を抑えながら、サイドチャネル攻撃を無効化できるようにすることが求められる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2007−189659号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明が解決しようとする課題は、回路規模や消費電力の増大を抑えながら、サイドチャネル攻撃を無効化できる暗号処理装置を提供することである。
【課題を解決するための手段】
【0007】
実施形態の暗号処理装置は、データ保持部と、マスク保持部と、第1線形変換部と、第2線形変換部と、第1算出部と、選択部と、非線形変換部と、第2算出部と、第3線形変換部と、を備える。データ保持部は、処理対象データを保持する。マスク保持部は、マスクデータを保持する。第1線形変換部は、前記マスク保持部に保持されたマスクデータに対して線形変換を行う。第2線形変換部は、前記マスク保持部に保持されたマスクデータに対して線形変換を行う。第1算出部は、前記データ保持部に保持された処理対象データと前記第1線形変換部により線形変換されたマスクデータである第1マスクデータとに基づいて第1データを算出する。選択部は、前記第1データと前記第2線形変換部により線形変換されたマスクデータである第2マスクデータのうち、いずれか一方を選択する。非線形変換部は、前記選択部により選択された前記第1データまたは前記第2マスクデータに対して非線形変換を行う。第2算出部は、前記非線形変換部により非線形変換された前記第1データと前記マスク保持部に保持されたマスクデータとに基づいて第2データを算出する。第3線形変換部は、前記第2データに対して線形変換を行う。そして、前記第3線形変換部により線形変換された前記第2データが新たな処理対象データとして前記データ保持部に保持され、前記非線形変換部により非線形変換された前記第2マスクデータが新たなマスクデータとして前記マスク保持部に保持される。
【図面の簡単な説明】
【0008】
【図1】一般的なブロック暗号方式の暗号処理装置をモデル化した回路図。
【図2】サイドチャネル対策を組み込んだ暗号処理装置の回路図。
【図3】実施形態の暗号処理装置の概要を示す回路図。
【図4】実施形態の線形変換回路の一例を示す図。
【図5】実施形態の暗号処理装置の処理を説明する図。
【図6】実施形態の暗号処理装置の変形例を示す回路図。
【図7】ARKの構成例を示す図。
【図8】Sの構成例を示す図。
【図9】SRの構成例を示す図。
【図10】MCの構成例を示す図。
【図11】第1実施例の暗号処理装置を示す回路図。
【図12】第1実施例の暗号処理装置による暗号化処理を説明する図。
【図13】第2実施例の暗号処理装置を示す回路図。
【図14】S/ISの構成例を示す図。
【図15】第2実施例の暗号処理装置による暗号化処理を説明する図。
【図16】第2実施例の暗号処理装置の変形例を示す回路図。
【図17】第2実施例の暗号処理装置の変形例による暗号化処理を説明する図。
【図18】第2実施例の暗号処理装置の他の変形例を示す回路図。
【図19】第2実施例の暗号処理装置の他の変形例による暗号化処理を説明する図。
【発明を実施するための形態】
【0009】
本実施形態の暗号処理装置は、ブロック暗号方式により暗号化/復号を行う暗号処理装置であり、特にサイドチャネル攻撃を無効化する対策(以下、サイドチャネル対策という。)が組み込まれた暗号処理装置である。
【0010】
まず、暗号処理装置の脅威となるDPAを例に、サイドチャネル攻撃の概要を説明する。DPAは、データ処理を行った回路の消費電力を測定することで秘密鍵を統計的に推測する攻撃である。攻撃者は次のような手順で攻撃を行う。
(1)推定した秘密鍵(推定鍵)を元に演算処理中データのハミング距離を予測する。
(2)測定した消費電力と予測演算処理中データのハミング距離の類似度を計算する。
(3)複数の消費電力に対し類似度が最も高い推定鍵を当たり鍵と判定する。
【0011】
図1は、一般的なブロック暗号方式の暗号処理装置をモデル化した回路図である。暗号処理装置は、暗号化または復号の処理対象となるデータ(Data)と秘密鍵である鍵データ(Key)とを所定のデータブロック単位で入力し、データブロックごとに暗号化演算もしくは復号演算を行う。この暗号処理装置は、処理対象となるデータや中間データを格納するデータレジスタ11と、鍵データや拡大鍵を格納する鍵レジスタ12と、データスクランブル回路13と、処理ラウンドごとに拡大鍵を生成する鍵更新部14と、セレクタ15,16,17と、排他的論理和回路18と、を備える。セレクタ17、鍵レジスタ12、および鍵更新部14を含むパスは、鍵スケジュール部とも呼ばれる。
【0012】
データスクランブル回路13は、非線形変換と線形変換との組み合わせによりデータを攪拌する。このデータスクランブル回路13により攪拌され、拡大鍵との排他的論理和が行われたデータを中間データと呼ぶ。暗号処理装置は、データの攪拌と拡大鍵との排他的論理和を規定の処理ラウンド数分繰り返し、中間データを更新していくことで、データの暗号化や復号を行う。図1に示す例では、データスクランブル回路13は、非線形変換回路Aと線形変換回路Bとの組み合わせとしてモデル化されており、線形変換−(非線形変換・線形変換)×繰り返し回数、の処理を行う構成である。ただし、データスクランブル回路13の構成は図1に示す構成に限定されるものではなく、線形変換と非線形変換との組み合わせによってデータを攪拌する構成であればよい。
【0013】
本実施形態で扱うサイドチャネル対策は、乱数と中間データとの排他的論理和により演算中の中間データをマスクすることで、上記の(1)の予測を不能にする。一般的に、乱数は、暗号回路の外部にある乱数生成回路により生成され、暗号回路に入力される。
【0014】
図2は、図1の回路図で示される一般的なブロック暗号方式の暗号処理装置に対して、上記のサイドチャネル対策を組み込んだ場合の一例を示す図である。この図2に示す暗号処理装置は、予めマスクされた状態のデータ(Data^Mask)を入力データとし、この入力データが、そのままデータレジスタ11に格納される。また、マスクされたデータとともに、データをマスクしているマスク値(Mask)も入力される。入力されたマスク値は乱数レジスタ21に格納され、入力データからマスクを剥がすための情報として利用される。なお、A^Bは、データAとデータBの排他的論理和などを意味し、データAがデータBによってマスクされた状態を表している。また、マスクを剥がすとは、A^BからデータAを復元することを意味する。なお、図2の例では、予めマスクされたデータを入力データとしているが、マスクされていないデータを入力データとし、この入力データをデータレジスタ11に格納される前にマスクする構成としてもよい。
【0015】
図2に示す暗号処理装置では、最初にマスクされたデータとそのマスク値が入力された後は、暗号処理の1ラウンドを実行する基準となる1クロック(Clock)ごとに、外部の乱数生成回路(図示せず)により生成された乱数(New Rand)が暗号回路に入力される。1クロックごとに入力される乱数は、乱数レジスタ21に格納される。また、乱数レジスタ21から取り出した乱数(最初はマスク値)に対して、データスクランブル回路13とは別に設けた線形変換回路B’において非線形変換を行った結果であるRnd’が、乱数レジスタ22に格納される。線形変換回路B’は、データスクランブル回路13の線形変換回路Bと同じ内容の線形変換を行う。
【0016】
サイドチャネル対策に用いられるマスク法は、排他的論理和によって施される加算マスクであり、乱数を用いてデータをマスクする。ただし、加算マスクは演算の特性上、非線形変換に対しては適用することができない。そのため、非線形変換の前段でマスクを剥がし、マスクが加算されていないデータに対して非線形変換を行い、非線形変換の後段でデータにマスクを加算する必要がある。
【0017】
図2の例では、非線形変換回路Aの前段に排他的論理和回路19、非線形変換回路Aの後段に排他的論理和回路20が設けられる。そして、非線形変換回路Aの出力であるA(Data)を乱数RndによりマスクしてデータA(Data)^Rndとし、このA(Data)^Rndに対して線形変換回路Bにより線形変換を行ってB(A(Data)^Rnd)とする。そして、このマスクされた状態のデータB(A(Data)^Rnd)と拡大鍵Keyとの排他的論理和である中間データB(A(Data)^Rnd)^Keyをデータレジスタ11に格納する。また、A(Data)をマスクするために利用した乱数Rndを線形変換回路B’により線形変換してB’(Rnd)=Rnd’とし、乱数レジスタ22に格納する。
【0018】
そして、次の処理ラウンドで、データレジスタ11から取り出した中間データB(A(Data)^Rnd)^Keyを、乱数レジスタ22から取り出したRnd’を用いてB(A(Data))^Keyに復元し、マスクを剥がした状態で非線形変換回路Aに入力して非線形変換を行う。そして、非線形変換回路Aの出力を、新たに外部から入力して乱数レジスタ21に格納した乱数によりマスクし、線形変換回路Bにより線形変換を行った後に拡大鍵との排他的論理和を行ってデータレジスタ11に格納する。以上の処理を、規定の処理ラウンド回数分繰り返す。
【0019】
この図2の構成によれば、鍵に依存関係のあるデータが乱数によりマスクされた状態で演算が進むことになるため、秘密鍵の推定を不能にして、DPA攻撃を無効化することができる。
【0020】
上記のように、従来のサイドチャネル対策を組み込んだ暗号処理装置では、マスクに用いる乱数を処理ラウンド(1クロック)ごとに毎回外部から入力するようにしている。つまり、従来のサイドチャネル対策を組み込んだ暗号処理装置では、暗号回路のほかに、処理ラウンドごとに新たな乱数を生成する乱数生成回路が必要である。このため、回路規模が大きくなり、また、消費電力も増大する傾向にある。そこで、本実施形態の暗号処理装置では、入力データのマスク値を再利用して新たなマスク値(乱数)を生成する構成とし、処理ラウンドごとに外部から乱数を入力することなくサイドチャネル対策を行えるようにして、回路規模のコンパクト化や消費電力の低減を実現する。
【0021】
乱数生成回路は、一般的に、線形変換回路(ビットごとの攪乱など)と非線形変換回路との組み合わせで構成される。本実施形態では、この乱数生成回路を構成する線形変換回路と非線形変換回路のうち、特に回路規模の多くを占める非線形変換回路に、暗号処理回路の非線形変換回路Aを流用する。そして、非線形変換回路Aの出力側でデータをマスクするための乱数、もしくは非線形変換回路Aの入力側でデータのマスクを剥がすために用いる乱数に対して線形変換を行った後、非線形変換回路Aによる非線形変換を行うことで新たな乱数を生成し、データをマスクするための乱数として再利用する。
【0022】
図3は、本実施形態の暗号処理装置の概要を示す回路図である。本実施形態の暗号処理装置は、図3に示すように、図2に示した従来例の構成に対して、線形変換回路C、セレクタ31およびセレクタ32が付加されている。なお、図3に示す本実施形態の暗号処理装置において、図2に示した従来例と共通の構成要素に対しては同一の符号を付している。また、図3では、鍵スケジュール部の図示を省略している。図3に示す本実施形態の暗号処理装置は、データレジスタ11(データ保持部)と、乱数レジスタ21(マスク保持部)と、線形変換回路B’(第1線形変換部)と、線形変換回路C(第2線形変換部)と、排他的論理和回路19(第1算出部)と、セレクタ31(選択部)と、非線形変換回路A(非線形変換部)と、排他的論理和回路20(第2算出部)と、線形変換回路B(第3線形変換部)と、を備える。
【0023】
本実施形態の暗号処理装置には、図2に示した従来例と同様、マスクされた状態のデータ(Data^Mask)が入力されるとともに、そのマスク値(Mask)が入力される。このときのマスク値は、実現するシステムによって異なり、システム時間を用いた値や、データが格納されるアドレスなど、固定値にならないことが望ましい。従来例では、このマスク値をデータのマスクにのみ利用し、その後は、処理ラウンドごとに外部の乱数生成回路で生成された乱数を入力して、中間データをマスクしていた。これに対して本実施形態では、入力されたマスク値を再利用することで処理ラウンドごとに新たな乱数となるマスク値(以下、中間マスク(mask)という。)を暗号処理回路の内部で生成し、この中間マスクを用いて中間データをマスクする。
【0024】
線形変換回路Cは、乱数レジスタ21の後段に、線形変換回路B’と並列に設けられる。この線形変換回路Cは、適用される暗号アルゴリズムに応じて定められる非線形変換回路Aの入出力ビット長よりも短い単位でデータをスクランブルする線形変換回路(線形変換関数)である。例えば、暗号アルゴリズムが128bit入出力のデータであり、非線形変換回路Aが入出力ビット長8bitの合計16の非線形変換で構成される場合、線形変換回路Cは、バイト単位(8bit単位)でデータが影響を及ぼしあうような線形変換を行う。具体的には、線形変換回路Cは、例えば、図4に示すようなビット入れ替えを行う構成などが考えられる。また、線形変換回路Cは、クロックごとの定数加算などを行う構成であってもよい。
【0025】
線形変換回路Cには、乱数レジスタ21から取り出したマスク値もしくは中間マスクが入力される。線形変換回路Cは、入力したマスク値もしくは中間マスクに対して上記のような線形変換を行い、その結果をセレクタ31に出力する。
【0026】
セレクタ31は、非線形変換回路Aの前段に設けられ、データレジスタ11から取り出されてマスクが剥がされたデータと、線形変換回路Cにより線形変換が行われたマスク値もしくは中間マスクのうち、非線形変換回路Aに入力するデータの選択を行う。
【0027】
セレクタ32は、外部から入力されたマスク値と、このマスク値を再利用して内部で新たに生成された中間マスクのうち、乱数レジスタ21に格納するデータの選択を行うセレクタである。
【0028】
図3に示す本実施形態の暗号処理装置では、最初に、セレクタ15に入力されたマスクされた状態のデータData^Maskがデータレジスタ11に格納されるとともに、セレクタ32に入力されたマスク値Maskが乱数レジスタ21に格納される。そして、データレジスタ11から取り出されたマスクされた状態のデータData^Maskは、非線形変換回路Aをバイパスして線形変換回路Bに入力され、線形変換回路Bによる線形変換が行われる。そして、線形変換回路Bによる線形変換が行われたデータB(Data^Mask)と、図示しない鍵スケジュール部で生成された拡大鍵Keyとの排他的論理和である中間データB(Data^Mask)^Keyが、データレジスタ11に格納される。
【0029】
一方、乱数レジスタ21から取り出されたマスク値Maskは、線形変換回路B’による線形変換によりB(Mask)=mask’とされ、乱数レジスタ22に格納される。また、乱数レジスタ21から取り出されたマスク値Maskに対して、線形変換回路Cによる線形変換と非線形変換回路Aによる非線形変換が行われることで、新たな乱数である中間マスクmask=A(C(Mask))が生成される。生成された中間マスクmaskは、乱数レジスタ32に格納される。
【0030】
次に、データレジスタ11から取り出された中間データB(Data^Mask)^Keyと、乱数レジスタ22から取り出されたmask’との排他的論理和により、中間データB(Data^Mask)^KeyのマスクMaskが剥がされて、中間データB(Data)^Keyが復元される。そして、この中間データB(Data)^Keyに対して、非線形変換回路Aによる非線形変換が行われた後、乱数レジスタ22から取り出された中間マスクmaskとの排他的論理和により中間データがマスクされ、線形変換部Bによる線形変換、拡大鍵Keyとの排他的論理和が行われて、中間マスクmaskによりマスクされた中間データB((Data^mask)^Keyが、データレジスタ11に格納される。
【0031】
図5は、本実施形態の暗号処理装置の処理を説明する図であり、データレジスタ11、乱数レジスタ21、および乱数レジスタ22に格納されるデータを、処理ラウンドの基準となるクロック(Clock)ごとに示したものである。なお、図5では、Clock=1〜4までを例示しているが、実際には、適用する暗号アルゴリズムに応じて定められる規定の処理ラウンド数に対応するクロック数分の処理が行われる。
【0032】
本実施形態の暗号処理装置では、図5に示すように、Clock=1のとき、データレジスタ11にはマスクされた状態のデータData^Maskが格納され、乱数レジスタ21にはデータのマスクに用いたマスク値Maskが格納されている。
【0033】
また、Clock=2のときには、データレジスタ11にはマスク値Maskによりマスクされた中間データB(Data^Mask)^Keyが格納され、乱数レジスタ22にはマスク値Maskを線形変換回路B’により線形変換を行った結果であるmask’=B(Mask)が格納され、乱数レジスタ21は、マスク値Maskが格納された状態を保持する。
【0034】
また、Clock=3のときには、データレジスタ11は、マスク値Maskによりマスクされた中間データB(Data^Mask)^Keyが格納された状態を保持し、乱数レジスタ22は、マスク値Maskを線形変換回路B’により線形変換を行った結果であるmask’=B(Mask)が格納された状態を保持し、乱数レジスタ21には、マスク値Maskに対して線形変換回路Cによる線形変換および非線形変換回路Aによる非線形変換を行うことで生成された中間マスクmask=A(C(Mask))が格納されている。
【0035】
また、Clock=4のときは、データレジスタ11には中間マスクmaskによりマスクされた中間データB(Data^mask)^Keyが格納され、乱数レジスタ22には中間マスクmaskを線形変換回路B’により線形変換を行った結果であるmask’=B(mask)が格納され、乱数レジスタ21は、中間マスクmaskが格納された状態を保持する。
【0036】
このように、本実施形態の暗号処理装置では、データレジスタ11に格納されるデータが、データのマスクに用いたマスク値(Mask)、もしくはそのマスク値を再利用することで生成された中間マスク(mask)により常にマスクされていることが分かる。したがって、本実施形態の暗号処理装置は、図2に示した従来例と同様に秘密鍵の推定を不能にし、DPA攻撃を無効化することができる。
【0037】
また、本実施形態の暗号処理装置では、データのマスクに用いたマスク値(Mask)を再利用して中間マスク(mask)を生成し、この中間マスク(mask)を用いて中間データをマスクする構成であるため、処理ラウンドごとに外部の暗号回路の外部の乱数生成回路で生成された乱数を入力する必要がない。つまり、暗号回路のほかに乱数生成回路を実装する必要がない。また、中間マスク(mask)の生成には、暗号回路の非線形変換回路Aを流用している。このため、本実施形態の暗号処理装置は、回路規模をコンパクトにできるとともに消費電力の低減を図ることができる。
【0038】
なお、以上説明した本実施形態の暗号処理装置は、乱数レジスタ21から取り出したマスク値(Mask)または中間マスク(mask)に対して線形変換回路Cによる線形変換と非線形変換回路Aによる非線形変換とを行うことで新たな中間マスク(mask)を生成する構成である。ただし、図6に示すように、乱数レジスタ22から取り出したmask’に対して線形変換回路Cによる線形変換と非線形変換回路Aによる非線形変換とを行うことで新たな中間マスク(mask)を生成する構成としてもよい。
【0039】
また、以上説明した本実施形態の暗号処理装置は、中間マスク(mask)を生成するための非線形変換として、非線形変換回路Aを流用する構成である。ただし、図示しない鍵スケジュール部も、拡大鍵を生成する鍵更新部14(図2参照)が非線形変換回路を備えているので、非線形変換回路Aに代えて、もしくは非線形変換回路Aとともに鍵更新部14の非線形変換回路を用いて、中間マスク(mask)を生成する構成としてもよい。
【0040】
<実施例>
以下では、ブロック暗号としてAES(Advance Encryption Standard)を用いるAES暗号方式の暗号処理装置への適用例を、実施例として説明する。
【0041】
AES暗号方式の暗号処理装置は、暗号化処理において使用する演算部として、鍵スケジュール部で生成された拡大鍵とデータとの排他的論理和を行うAdd Round Key(以下、「ARK」と表記する。)と、8ビット単位に非線形変換を行うSubstitution Bytes(以下、「SB」と表記する。)と、データのバイト単位に入れ替えを行うShift Rows(以下、「SR」と表記する。)と、32ビット内の8ビットごとに影響を及ぼしあう線形変換を行うMix Columns(以下、「MC」と表記する。)と、を備える。
【0042】
また、AES暗号方式の暗号処理装置は、復号処理において使用する演算部として、SBの逆変換であるInverse Substitution Bytes(以下、「IS」と表記する。)と、SRの逆変換であるInverse Shift Rows(以下、「ISR」と表記する。)と、MCの逆変換であるInverse Mix Columns(以下、「IMC」と表記する。)と、を備える。ARKは、排他的論理和なので復号処理と暗号化処理との双方で使用され、同一の演算を行う。
【0043】
図7は、ARKの構成例を示す図である。図7に示すように、ARKは、128ビットの拡大鍵と、128ビットの入力データとの排他的論理和である128ビットのデータを出力するビット毎の演算処理である。
【0044】
図8は、Sの構成例を示す図である。図8に示すように、Sは、128ビットの入力データを16個の8ビットデータに区切り、非線形変換テーブルSによって行われる演算処理である。ISは、図8に示すSの逆変換になる非線形変換テーブルISによって行われる演算処理となる。
【0045】
図9は、SRの構成例を示す図である。図9に示すように、SRは、128ビットの入力データを16個の8ビットデータに分割して並び替える。図9では、入力データを分割した各8ビットデータが、矢印の先で表された位置に並び替えられることが示されている。ISRは、図9に示すSRの逆変換になる入力データ入れ替え処理を行う構成である。
【0046】
図10は、MCの構成例を示す図である。図10に示すように、MCは、128ビットの入力データを4個の32ビットデータに分けて32ビット単位に線形処理を行う演算処理である。IMCは、図10に示すMCの逆変換を行う構成である。
【0047】
(第1実施例)
図11は、第1実施例の暗号処理装置を示す回路図である。第1実施例の暗号処理装置は、128bit入出力の構成であり、データ処理部100と、マスク処理部200と、鍵スケジュール部300と、を備える。
【0048】
データ処理部100は、図11に示すように、セレクタ101、データレジスタ102、排他的論理和回路103、セレクタ104、セレクタ105、S106、IS107、セレクタ108、排他的論理和回路109、ARK110、セレクタ111、MC/IMC112、セレクタ113、ARK114、セレクタ115、SR116、ISR117、およびセレクタ118を備える。
【0049】
セレクタ101は、図3のセレクタ15に相当する。データレジスタ102は、図3のデータレジスタ11に相当する。排他的論理和回路103は、図3の排他的論理和回路19に相当する。セレクタ104およびセレクタ105は、図3のセレクタ31に相当する。S106およびIS107は、図3の非線形変換回路Aに相当する。排他的論理和回路109は、図3の排他的論理和回路20に相当する。セレクタ113は、図3のセレクタ16に相当する。MC/IMC112、SR116、およびISR117は、図3の線形変換回路Bに相当する。ARK114およびARK110は、図3の排他的論理和回路18に相当する。
【0050】
マスク処理部200は、図11に示すように、セレクタ201、乱数レジスタ202、線形変換回路C、セレクタ203、MC/IMC204、セレクタ205、SR206、ISR207、セレクタ208、および乱数レジスタ209を備える。
【0051】
セレクタ201は、図3のセレクタ32に相当する。乱数レジスタ202は、図3の乱数レジスタ21に相当する。線形変換回路Cは、図3の線形変換回路Cに相当する。MC/IMC204、SR206、およびISR207は、図3の線形変換回路B’に相当する。乱数レジスタ209は、図3の乱数レジスタ22に相当する。
【0052】
鍵スケジュール部300は、図11に示すように、セレクタ301、鍵レジスタ302、および鍵更新部303を備える。鍵更新部303は、32ビット単位に分割された128ビットの鍵データの最下位32ビット(4バイト)に対してF変換(非線形変換Sと定数加算で構成される)を行う変換回路と、排他的論理和回路とを備える。この鍵スケジュール部300では、クロックごとに変換回路によるF変換と排他的論理和により拡大鍵を生成し、データ処理部100のARK114またはARK110に入力する。
【0053】
第1実施例の暗号処理装置では、128ビットのマスクされたデータ(Data^Mask)がセレクタ101に入力され、データレジスタ102に格納される。また、データのマスクに用いた128ビットのマスク値(Mask)がセレクタ201に入力され、乱数レジスタ202に格納される。また、128ビットの鍵データ(Key)がセレクタ301に入力され、鍵レジスタ302に格納される。そして、マスクされたデータ(Data^Mask)に対して、以下の手順で暗号化処理を行う。
【0054】
まず、1クロック目で、ARK114→SR116のパスでデータが流れ、その結果がデータレジスタ102に格納される。このとき、ARK114で使われる拡大鍵は、鍵スケジュール部300により秘密鍵である鍵データを用いて生成される。
【0055】
2クロック目から10クロック目では、S106→MC/IMC112→ARK114→SR116のパスで中間データが流れ、その結果がデータレジスタ102に格納される。このとき、S106の前段の排他的論理和回路103で中間データのマスクが剥がされるとともに、S106の後段の排他的論理和回路109で中間マスクにより中間データがマスクされる。中間データのマスクに利用する中間マスクは、乱数レジスタ202から取り出されたマスク値もしくは中間マスクに対して、線形変換回路Cにより線形変換を行った後、暗号化処理には使用しないIS107により非線形変換を行うことで生成される。また、中間データのマスクが剥がすためのデータは、乱数レジスタ202から取り出されたマスク値または中間マスクが、MC/IMC204→SR206のパスを流れることで生成され、乱数レジスタ209に格納される。また、ARK114で使われる拡大鍵は、鍵スケジュール部300により秘密鍵である鍵データを用いて生成され、クロックごとに異なる値である。
【0056】
最後に11クロック目で、S106→ARK110のパスで中間データが流れ、その結果が暗号文としてデータレジスタ102に格納される。このときも、S106の前段の排他的論理和回路103で中間データのマスクが剥がされるとともに、S106の後段の排他的論理和回路109で中間マスクにより中間データがマスクされる。また、ARK110で使われる拡大鍵は、鍵スケジュール部300により秘密鍵である鍵データを用いて生成される。
【0057】
また、暗号文を復号する復号処理は、以下の手順で行われる。
【0058】
まず、1クロック目で、ARK114→ISR117のパスで暗号文が流れ、その結果がデータレジスタ102に格納される。このとき、ARK114で使われる拡大鍵は、鍵スケジュール部300により秘密鍵である鍵データを用いて生成される。
【0059】
次に、2クロック目から10クロック目で、IS107→ARK110→MC/IMC112→ISR117のパスで中間データが流れ、その結果がデータレジスタ102に格納される。このとき、IS107の前段の排他的論理和回路103で中間データのマスクが剥がされるとともに、IS107の後段の排他的論理和回路109で中間マスクにより中間データがマスクされる。中間データのマスクに利用する中間マスクは、乱数レジスタ202から取り出されたマスク値もしくは中間マスクに対して、線形変換回路Cにより線形変換を行った後、復号処理には使用しないS106により非線形変換を行うことで生成される。また、中間データのマスクが剥がすためのデータは、乱数レジスタ202から取り出されたマスク値または中間マスクが、MC/IMC204→ISR207のパスを流れることで生成され、乱数レジスタ209に格納される。また、ARK110で使われる拡大鍵は、鍵スケジュール部300により秘密鍵である鍵データを用いて生成され、クロックごとに異なる値である。
【0060】
最後に11クロック目で、IS107→ARK110のパスで中間データが流れ、その結果が平文としてデータレジスタ102に格納される。このときも、IS107の前段の排他的論理和回路103で中間データのマスクが剥がされるとともに、IS107の後段の排他的論理和回路109で中間マスクにより中間データがマスクされる。また、ARK110で使われる拡大鍵は、鍵スケジュール部300により秘密鍵である鍵データを用いて生成される。
【0061】
図12は、第1実施例の暗号処理装置による暗号化処理を説明する図であり、データレジスタ102、乱数レジスタ202、および乱数レジスタ209に格納されるデータと、データレジスタ102に格納されたデータに対して行われる処理内容とを、処理ラウンドの基準となるクロック数(Clock)ごとに示したものである。
【0062】
第1実施例の暗号処理装置では、図12に示すように、Clock=0のとき、データレジスタ102にはマスクされた状態のデータData^Maskが格納され、乱数レジスタ202にはデータのマスクに用いたマスク値Maskが格納されている。そして、データレジスタ102からマスクされた状態のデータData^Maskが取り出され、ARK114による演算およびSR116による演算が行われ、演算結果の中間データdata1=SR(Data^Mask^Key0)がデータレジスタ102に格納される。また、乱数レジスタ202からマスク値Maskが取り出され、SR206による演算が行われ、演算結果のデータ、つまり中間データdata1からマスクMaskを剥がすためのデータMask’=SR(Mask)が乱数レジスタ209に格納される。さらに、乱数レジスタ202から取り出されたマスク値Maskに対しては、線形変換回路Cによる線形変換およびIS107による非線形変換が行われ、その結果の中間マスクmask1=IS(C(Mask))が乱数レジスタ202に格納される。
【0063】
Clock=1のときには、データレジスタ102には中間データdata1が格納され、乱数レジスタ202には中間マスクmask1が格納され、乱数レジスタ209にはマスクMaskを剥がすためのデータMask’が格納されている。そして、データレジスタ102から中間データdata1が取り出されるとともに、乱数レジスタ209からマスクMaskを剥がすためのデータMask’、乱数レジスタ202から中間マスクmask1が取り出される。そして、データレジスタ102から取り出された中間データdata1に対して、S106による演算と、MC/IMC112によるMCの演算と、ARK114による演算と、SR116による演算とが行われ、演算結果の中間データdata2=SR(MC(S(data1^Mask’)^mask1)^key1)がデータレジスタ102に格納される。このとき、乱数レジスタ209から取り出されたマスクMaskを剥がすためのデータMask’と、乱数レジスタ202から取り出された中間マスクmask1とを用いて、中間データdata1に対して、S106の前後でマスクの付け替えが行われる。また、乱数レジスタ202から取り出された中間マスクmask1に対しては、MC/IMC204によるMCの演算と、SR206による演算とが行われ、演算結果のデータ、つまり中間データdata2から中間マスクmask1を剥がすためのデータMask1’=SR(MC(mask1))が乱数レジスタ209に格納されるとともに、線形変換回路Cによる線形変換およびIS107による非線形変換が行われ、その結果の中間マスクmask2=IS(C(mask1))が乱数レジスタ202に格納される。
【0064】
Clock=2のときには、データレジスタ102には中間データdata2が格納され、乱数レジスタ202には中間マスクmask2が格納され、乱数レジスタ209には中間マスクmask1を剥がすためのデータMask1’が格納されている。そして、データレジスタ102から中間データdata2が取り出されるとともに、乱数レジスタ209から中間マスクmask1を剥がすためのデータMask1’、乱数レジスタ202から中間マスクmask2が取り出される。そして、データレジスタ102から取り出された中間データdata2に対して、S106による演算と、MC/IMC112によるMCの演算と、ARK114による演算と、SR116による演算とが行われ、演算結果の中間データdata3=SR(MC(S(data2^Mask1’)^mask2)^key2)がデータレジスタ102に格納される。このとき、乱数レジスタ209から取り出された中間マスクmask1を剥がすためのデータMask1’と、乱数レジスタ202から取り出された中間マスクmask2とを用いて、中間データdata2に対して、S106の前後でマスクの付け替えが行われる。また、乱数レジスタ202から取り出された中間マスクmask2に対しては、MC/IMC204によるMCの演算と、SR206による演算とが行われ、演算結果のデータ、つまり中間データdata3から中間マスクmask2を剥がすためのデータMask2’=SR(MC(mask2))が乱数レジスタ209に格納されるとともに、線形変換回路Cによる線形変換およびIS107による非線形変換が行われ、その結果の中間マスクmask3=IS(C(mask2))が乱数レジスタ202に格納される。
【0065】
Clock=3のときには、データレジスタ102には中間データdata3が格納され、乱数レジスタ202には中間マスクmask3が格納され、乱数レジスタ209には中間マスクmask2を剥がすためのデータMask2’が格納されている。そして、データレジスタ102から中間データdata3が取り出されるとともに、乱数レジスタ209から中間マスクmask2を剥がすためのデータMask2’、乱数レジスタ202から中間マスクmask3が取り出される。そして、データレジスタ102から取り出された中間データdata3に対して、S106による演算と、MC/IMC112によるMCの演算と、ARK114による演算と、SR116による演算とが行われ、演算結果の中間データdata4=SR(MC(S(data3^Mask2’)^mask3)^key3)がデータレジスタ102に格納される。このとき、乱数レジスタ209から取り出された中間マスクmask2を剥がすためのデータMask2’と、乱数レジスタ202から取り出された中間マスクmask3とを用いて、中間データdata3に対して、S106の前後でマスクの付け替えが行われる。また、乱数レジスタ202から取り出された中間マスクmask3に対しては、MC/IMC204によるMCの演算と、SR206による演算とが行われ、演算結果のデータ、つまり中間データdata4から中間マスクmask3を剥がすためのデータMask3’=SR(MC(mask3))が乱数レジスタ209に格納されるとともに、線形変換回路Cによる線形変換およびIS107による非線形変換が行われ、その結果の中間マスクmask4=IS(C(mask3))が乱数レジスタ202に格納される。
【0066】
Clock=4のときには、データレジスタ102には中間データdata4が格納され、乱数レジスタ202には中間マスクmask4が格納され、乱数レジスタ209には中間マスクmask3を剥がすためのデータMask3’が格納されている。そして、データレジスタ102から中間データdata4が取り出されるとともに、乱数レジスタ209から中間マスクmask3を剥がすためのデータMask3’、乱数レジスタ202から中間マスクmask4が取り出される。そして、データレジスタ102から取り出された中間データdata4に対して、S106による演算と、MC/IMC112によるMCの演算と、ARK114による演算と、SR116による演算とが行われ、演算結果の中間データdata5=SR(MC(S(data4^Mask3’)^mask4)^key4)がデータレジスタ102に格納される。このとき、乱数レジスタ209から取り出された中間マスクmask3を剥がすためのデータMask3’と、乱数レジスタ202から取り出された中間マスクmask4とを用いて、中間データdata4に対して、S106の前後でマスクの付け替えが行われる。また、乱数レジスタ202から取り出された中間マスクmask4に対しては、MC/IMC204によるMCの演算と、SR206による演算とが行われ、演算結果のデータ、つまり中間データdata5から中間マスクmask4を剥がすためのデータMask4’=SR(MC(mask4))が乱数レジスタ209に格納されるとともに、線形変換回路Cによる線形変換およびIS107による非線形変換が行われ、その結果の中間マスクmask5=IS(C(mask4))が乱数レジスタ202に格納される。
【0067】
Clock=5のときには、データレジスタ102には中間データdata5が格納され、乱数レジスタ202には中間マスクmask5が格納され、乱数レジスタ209には中間マスクmask4を剥がすためのデータMask4’が格納されている。そして、データレジスタ102から中間データdata5が取り出されるとともに、乱数レジスタ209から中間マスクmask4を剥がすためのデータMask4’、乱数レジスタ202から中間マスクmask5が取り出される。そして、データレジスタ102から取り出された中間データdata5に対して、S106による演算と、MC/IMC112によるMCの演算と、ARK114による演算と、SR116による演算とが行われ、演算結果の中間データdata6=SR(MC(S(data5^Mask4’)^mask5)^key5)がデータレジスタ102に格納される。このとき、乱数レジスタ209から取り出された中間マスクmask4を剥がすためのデータMask4’と、乱数レジスタ202から取り出された中間マスクmask5とを用いて、中間データdata5に対して、S106の前後でマスクの付け替えが行われる。また、乱数レジスタ202から取り出された中間マスクmask5に対しては、MC/IMC204によるMCの演算と、SR206による演算とが行われ、演算結果のデータ、つまり中間データdata6から中間マスクmask5を剥がすためのデータMask5’=SR(MC(mask5))が乱数レジスタ209に格納されるとともに、線形変換回路Cによる線形変換およびIS107による非線形変換が行われ、その結果の中間マスクmask6=IS(C(mask5))が乱数レジスタ202に格納される。
【0068】
Clock=6のときには、データレジスタ102には中間データdata6が格納され、乱数レジスタ202には中間マスクmask6が格納され、乱数レジスタ209には中間マスクmask5を剥がすためのデータMask5’が格納されている。そして、データレジスタ102から中間データdata6が取り出されるとともに、乱数レジスタ209から中間マスクmask5を剥がすためのデータMask5’、乱数レジスタ202から中間マスクmask6が取り出される。そして、データレジスタ102から取り出された中間データdata6に対して、S106による演算と、MC/IMC112によるMCの演算と、ARK114による演算と、SR116による演算とが行われ、演算結果の中間データdata7=SR(MC(S(data6^Mask5’)^mask6)^key6)がデータレジスタ102に格納される。このとき、乱数レジスタ209から取り出された中間マスクmask5を剥がすためのデータMask5’と、乱数レジスタ202から取り出された中間マスクmask6とを用いて、中間データdata6に対して、S106の前後でマスクの付け替えが行われる。また、乱数レジスタ202から取り出された中間マスクmask6に対しては、MC/IMC204によるMCの演算と、SR206による演算とが行われ、演算結果のデータ、つまり中間データdata7から中間マスクmask6を剥がすためのデータMask6’=SR(MC(mask6))が乱数レジスタ209に格納されるとともに、線形変換回路Cによる線形変換およびIS107による非線形変換が行われ、その結果の中間マスクmask7=IS(C(mask6))が乱数レジスタ202に格納される。
【0069】
Clock=7のときには、データレジスタ102には中間データdata7が格納され、乱数レジスタ202には中間マスクmask7が格納され、乱数レジスタ209には中間マスクmask6を剥がすためのデータMask6’が格納されている。そして、データレジスタ102から中間データdata7が取り出されるとともに、乱数レジスタ209から中間マスクmask6を剥がすためのデータMask6’、乱数レジスタ202から中間マスクmask7が取り出される。そして、データレジスタ102から取り出された中間データdata7に対して、S106による演算と、MC/IMC112によるMCの演算と、ARK114による演算と、SR116による演算とが行われ、演算結果の中間データdata8=SR(MC(S(data7^Mask6’)^mask7)^key7)がデータレジスタ102に格納される。このとき、乱数レジスタ209から取り出された中間マスクmask6を剥がすためのデータMask6’と、乱数レジスタ202から取り出された中間マスクmask7とを用いて、中間データdata7に対して、S106の前後でマスクの付け替えが行われる。また、乱数レジスタ202から取り出された中間マスクmask7に対しては、MC/IMC204によるMCの演算と、SR206による演算とが行われ、演算結果のデータ、つまり中間データdata8から中間マスクmask7を剥がすためのデータMask7’=SR(MC(mask7))が乱数レジスタ209に格納されるとともに、線形変換回路Cによる線形変換およびIS107による非線形変換が行われ、その結果の中間マスクmask8=IS(C(mask7))が乱数レジスタ202に格納される。
【0070】
Clock=8のときには、データレジスタ102には中間データdata8が格納され、乱数レジスタ202には中間マスクmask8が格納され、乱数レジスタ209には中間マスクmask7を剥がすためのデータMask7’が格納されている。そして、データレジスタ102から中間データdata8が取り出されるとともに、乱数レジスタ209から中間マスクmask7を剥がすためのデータMask7’、乱数レジスタ202から中間マスクmask8が取り出される。そして、データレジスタ102から取り出された中間データdata8に対して、S106による演算と、MC/IMC112によるMCの演算と、ARK114による演算と、SR116による演算とが行われ、演算結果の中間データdata9=SR(MC(S(data8^Mask7’)^mask8)^key8)がデータレジスタ102に格納される。このとき、乱数レジスタ209から取り出された中間マスクmask7を剥がすためのデータMask7’と、乱数レジスタ202から取り出された中間マスクmask8とを用いて、中間データdata8に対して、S106の前後でマスクの付け替えが行われる。また、乱数レジスタ202から取り出された中間マスクmask8に対しては、MC/IMC204によるMCの演算と、SR206による演算とが行われ、演算結果のデータ、つまり中間データdata9から中間マスクmask8を剥がすためのデータMask8’=SR(MC(mask8))が乱数レジスタ209に格納されるとともに、線形変換回路Cによる線形変換およびIS107による非線形変換が行われ、その結果の中間マスクmask9=IS(C(mask8))が乱数レジスタ202に格納される。
【0071】
Clock=9のときには、データレジスタ102には中間データdata9が格納され、乱数レジスタ202には中間マスクmask9が格納され、乱数レジスタ209には中間マスクmask8を剥がすためのデータMask8’が格納されている。そして、データレジスタ102から中間データdata9が取り出されるとともに、乱数レジスタ209から中間マスクmask8を剥がすためのデータMask8’、乱数レジスタ202から中間マスクmask9が取り出される。そして、データレジスタ102から取り出された中間データdata9に対して、S106による演算と、MC/IMC112によるMCの演算と、ARK114による演算と、SR116による演算とが行われ、演算結果の中間データdata10=SR(MC(S(data9^Mask8’)^mask9)^key9)がデータレジスタ102に格納される。このとき、乱数レジスタ209から取り出された中間マスクmask8を剥がすためのデータMask8’と、乱数レジスタ202から取り出された中間マスクmask9とを用いて、中間データdata9に対して、S106の前後でマスクの付け替えが行われる。また、乱数レジスタ202から取り出された中間マスクmask9に対しては、MC/IMC204によるMCの演算と、SR206による演算とが行われ、演算結果のデータ、つまり中間データdata10から中間マスクmask9を剥がすためのデータMask9’=SR(MC(mask9))が乱数レジスタ209に格納されるとともに、線形変換回路Cによる線形変換およびIS107による非線形変換が行われ、その結果の中間マスクmask10=IS(C(mask9))が乱数レジスタ202に格納される。
【0072】
Clock=10のときには、データレジスタ102には中間データdata10が格納され、乱数レジスタ202には中間マスクmask10が格納され、乱数レジスタ209には中間マスクmask9を剥がすためのデータMask9’が格納されている。そして、データレジスタ102から中間データdata10が取り出されるとともに、乱数レジスタ209から中間マスクmask9を剥がすためのデータMask9’、乱数レジスタ202から中間マスクmask10が取り出される。そして、データレジスタ102から取り出された中間データdata10に対して、S106による演算およびARK110による演算が行われ、演算結果の暗号文data11=(S(data10^Mask9’)^mask10)^key10がデータレジスタ102に格納される。このとき、乱数レジスタ209から取り出された中間マスクmask9を剥がすためのデータMask9’と、乱数レジスタ202から取り出された中間マスクmask10とを用いて、中間データdata10に対して、S106の前後でマスクの付け替えが行われる。
【0073】
以上のように、第1実施例の暗号処理装置では、データレジスタ102に格納されるデータが、マスク値(Mask)や中間マスク(mask)により常にマスクされるので、秘密鍵の推定を不能にしてDPA攻撃を無効化することができる。また、中間マスクは、暗号回路のS106あるいはIS107を流用し、マスク値を再利用することで生成されるので、暗号回路のほかに乱数生成回路を実装する必要がなく、回路規模をコンパクトにできるとともに消費電力の低減を図ることができる。
【0074】
また、第1実施例の暗号処理装置では、暗号化処理の際には暗号化に使用しないIS107を使用して中間マスクを生成し、復号処理の際には復号に使用しないS106を使用して中間マスクを生成する。このため、暗号化や復号のための演算と中間マスクの生成とを同一クロックで行うことができ、レイテンシの増大を抑制することができる。
【0075】
(第2実施例)
第2実施例は、128ビット単位のデータブロックを32ビットずつ順次処理することで、回路規模をコンパクトにする構成の暗号処理装置への適用例である。図13は、第2実施例の暗号処理装置を示す回路図である。第2実施例の暗号処理装置は、データ処理部400と、マスク処理部500と、鍵スケジュール部600と、を備える。
【0076】
データ処理部400は、図13に示すように、セレクタ401a〜401d、データレジスタd0〜d3、排他的論理和回路402、セレクタ403、S/IS404、排他的論理和回路405、ARK406、セレクタ407、MC/IMC408、セレクタ409、ARK410、およびセレクタ411を備える。なお、SRとISRは128ビット単位のデータブロック全体に対して同一クロックで行われるバイト単位の置換演算であり、セレクタのみの表現となるため、図示を省略している。
【0077】
S/IS404は、暗号化に用いるSと復号に用いるISとを共通化した回路であり、図14に示すように、非線形変換である逆元演算IGFと、線形変換であるアフィン変換Aおよびインバースアフィン変換IAとにより構成される。
【0078】
セレクタ401a〜401dは、図3のセレクタ15に相当する。データレジスタd0〜d3は、図3のデータレジスタ11に相当する。排他的論理和回路402は、図3の排他的論理和回路19に相当する。セレクタ403は、図3のセレクタ31に相当する。S/IS404は、図3の非線形変換回路Aに相当する。排他的論理和回路405は、図3の排他的論理和回路20に相当する。セレクタ409は、図3のセレクタ16に相当する。MC/IMC408は、図3の線形変換回路Bに相当する。ARK410およびARK406は、図3の排他的論理和回路18に相当する。
【0079】
マスク処理部500は、図13に示すように、セレクタ501、乱数レジスタr0〜r4、線形変換回路C、MC/IMC502、およびセレクタ503を備える。なお、SRとISRは128ビット単位のマスクに対して同一クロックで行われるバイト単位の置換演算であり、セレクタのみの表現となるため、図示を省略している。
【0080】
セレクタ501は、図3のセレクタ32に相当する。乱数レジスタr4は、図3の乱数レジスタ21に相当する。乱数レジスタr0〜r3は、図3の乱数レジスタ22に相当する。線形変換回路Cは、図3の線形変換回路Cに相当する。MC/IMC502は、図3の線形変換回路B’に相当する。
【0081】
鍵スケジュール部600は、図13に示すように、セレクタ601、鍵レジスタ602、および鍵更新部603を備える。鍵更新部603は、32ビットの非線形変換Sを含む変換回路(以下、sbox+αという。)を備え、このsbox+αの前段にセレクタ604が設けられている。この鍵スケジュール部600では、5クロックに1回ずつ拡大鍵を生成し、データ処理部400のARK410またはARK406に入力する。
【0082】
第2実施例の暗号処理装置では、128ビットのデータ(Data)が32ビットごとに分割され、最上位の32ビットから順にセレクタ401d、セレクタ401c、セレクタ401b、セレクタ401aにそれぞれ入力される。セレクタ401dに入力されたデータはデータレジスタd3に格納され、セレクタ401cに入力されたデータはデータレジスタd2に格納され、セレクタ401bに入力されたデータはデータレジスタd1に格納され、セレクタ401aに入力されたデータはデータレジスタd0に格納される。また、32ビットのマスク値(Mask)がセレクタ501に格納され、乱数レジスタr4に格納される。そして、データ(Data)に対して、以下の手順で暗号化処理を行う。
【0083】
まず、1クロック目で、データレジスタd3から取り出された最上位32ビットのデータがARK410を流れ、ARKが行われた最上位32ビットのデータがデータレジスタd0に格納される。このとき、データレジスタd2、データレジスタd1、およびデータレジスタd0に格納されていた32ビットのデータは、それぞれデータレジスタd3、データレジスタd2、およびデータレジスタd1へとシフトして格納される。また、2クロック目から4クロック目までは1クロック目と同様の処理が行われ、128ビットのデータ(Data)に対して、32ビット単位でARKが順次行われる。そして、次の5クロック目で、ARKが1回行われた128ビットのデータの全体に対してSRが行われる。
【0084】
一方、マスク処理部500では、1クロック目から4クロック目にかけて、乱数レジスタr4に格納された32ビットのマスク値が乱数レジスタr0〜r3へとシフトしながら格納される。そして、5クロック目で、乱数レジスタr4から取り出されたマスク値に対して線形変換回路Cによる線形変換およびS/IS404による非線形変換が行われ、中間マスクが生成されて乱数レジスタr4に格納される。また、乱数レジスタr0〜r3にそれぞれ格納されたマスク値に対してSRが行われ、マスクを剥がすためのデータが生成される。
【0085】
また、鍵スケジュール部600では、1クロック目から4クロック目まで鍵レジスタ602に格納された鍵データが保持され、5クロック目で、鍵レジスタ602に格納された鍵データに対してsbox+αおよび排他的論理和が行われ、拡大鍵が生成される。
【0086】
次に、6クロック目では、データレジスタd3から取り出された最上位32ビットの中間データがS/IS404→MC/IMC408→ARK410のパスで流れ、その結果がデータレジスタd0に格納される。このとき、S/IS404の前段の排他的論理和回路402で、乱数レジスタr3から取り出されたデータにより中間データのマスクが剥がされるとともに、S/IS404の後段の排他的論理和回路405で、乱数レジスタr4から取り出された中間マスクにより中間データがマスクされる。また、7クロック目から9クロック目までの3クロックかけて、6クロック目と同様の処理が行われ、128ビットの中間データに対して、32ビット単位でSとMCとARKとが順次行われる。そして、次の10クロック目で、SとMCとARKとが行われた128ビットの中間データの全体に対してSRが行われる。
【0087】
一方、マスク処理部500では、6クロック目から9クロック目のそれぞれで、乱数レジスタr4から取り出された中間マスクに対して線形変換回路Cによる線形変換および鍵更新部603のsbox+αによる非線形変換が行われ、新たな中間マスクが生成される。また、6クロック目から9クロック目のそれぞれで、乱数レジスタr4から取り出された中間マスクに対してMC/IMC502によりMCが行われ、10クロック目で、MCが行われた中間マスクの全体に対してSRが行われて、マスクを剥がすためのデータが生成される。
【0088】
また、鍵スケジュール部600では、6クロック目から9クロック目まで鍵レジスタ602に格納された鍵データが保持され、10クロック目で、鍵レジスタ602に格納された鍵データに対してsbox+αおよび排他的論理和が行われ、新たな拡大鍵が生成される。
【0089】
その後、最終ラウンドの1つ前の処理ラウンドに対応するクロック数まで、中間データに対して、32ビット単位でSとMCとARKが行われるとともに、128ビット全体にSRが行われる。そして、最終ラウンドでは、23ビット単位でSとARKが行われて暗号文が生成され、データレジスタd0〜d3に格納される。
【0090】
なお、暗号文を復号する復号処理は、暗号処理におけるSがIS、SRがISR、MCがIMCにそれぞれ変わるだけであるため、詳細な説明は省略する。
【0091】
図15は、第2実施例の暗号処理装置による暗号化処理を説明する図であり、鍵レジスタ602、データレジスタd0〜d3、および乱数レジスタr0〜r4にそれぞれ格納されるデータと、各データに対して行われる処理内容(次のクロックでラッチされるデータ)とを、クロック(Clock)ごとに示したものである。なお、図15では、Clock=0〜10までを例示しているが、実際には、適用する暗号アルゴリズムに応じて定められる規定の処理ラウンド数に対応するクロック数分の処理が行われる。
【0092】
図15において、鍵レジスタ602には32ビットごとにk0〜k3の名称を付している。また、鍵レジスタ602(k0〜k3)に格納される鍵データまたは拡大鍵は先頭をK、データレジスタd0〜d3に格納されるデータまたは中間データは先頭をD、乱数レジスタr0〜r4に格納されるマスク値または中間マスク、マスクを剥がすためのデータは、先頭をRで表している。また、各データの数値は、先頭の数値がバイト位置(32ビット単位)を表し、次の数値が処理ラウンドの回数(何ラウンド目か)を表している。また、各データの末尾は、更新前と更新後とで異なる数値もしくは文字を付して、データが更新されていることを表している。
【0093】
第2実施例の暗号処理装置では、図15に示すように、Clock=1〜4の間、鍵レジスタ[k3,k2,k1,k0]に格納されている鍵データ(K30,K20,K10,K00)は更新されない。そして、Clock=5では、Clock=4の鍵レジスタ[k3,k2,k1,k0]の内容に対してsbox+αが行われることで拡大鍵(K31,K21,K11,K01)が生成され、鍵レジスタ[k3,k2,k1,k0]に格納される。
【0094】
また、Clock=1〜4の間、データレジスタ[d3,d2,d1,d0]に格納されたデータ(D300,D200,D100,D000)に対して、先頭のD300から順にARKが行われ、中間データ(D301,D201,D101,D001)が生成される。そして、Clock=5で、データレジスタ[d3,d2,d1,d0]に格納された中間データ(D301,D201,D101,D001)に対してSRが行われ、中間データ(D310,D210,D110,D010)が生成される。
【0095】
また、Clock=1〜4の間、乱数レジスタr4に格納されたマスク値が乱数レジスタr0、乱数レジスタr1、乱数レジスタr2、乱数レジスタr3に次々と格納される。そして、Clock=5で、乱数レジスタr4から取り出されたマスク値R000に対して線形変換回路Cによる線形変換とS/IS404によるSが行われ、中間マスクR310が生成される。また、Clock=5で、乱数レジスタr3,r2,r1,r0に格納されているマスク値(R301,R201,R101,R001)の全体に対してSRが行われ、マスクを剥がすためのデータ(R30d,R20d,R10d,R00d)が生成される。
【0096】
次のClock=6〜9の間、鍵レジスタ[k3,k2,k1,k0]に格納されている鍵データ(K31,K21,K11,K01)は更新されない。そして、Clock=10でsbox+αが行われることで新たな拡大鍵が生成され、鍵レジスタ[k3,k2,k1,k0]に格納される。
【0097】
また、Clock=6〜9の間、データレジスタ[d3,d2,d1,d0]に格納された中間データ(D310,D210,D110,D010)に対して、先頭のD310から順にSとMCとARKとが行われ、中間データ(D312,D212,D112,D011)が生成される。そして、Clock=10で、データレジスタ[d3,d2,d1,d0]に格納されている中間データ(D312,D212,D112,D011)の全体に対してSRが行われ、新たな中間データ(D320,D220,D120,D020)が生成される。
【0098】
また、Clock=6〜9の間、乱数レジスタr4から取り出された中間マスク(R310,R210,R110,R010)に対して、線形変換回路Cによる線形変換と、鍵更新部603のsbox+αを利用したSが行われ、新たな中間マスク(R210,R110,R010,R320)が生成される。また、Clock=6〜9の間、乱数レジスタr4から取り出された中間マスク(R310,R210,R110,R010)に対してMCが行われ、その結果のデータ(R311,R211,R111,R011)全体に対して、Clock=10でSRが行われ、マスクを剥がすためのデータ(R31d,R21d,R11d,R01d)が生成される。
【0099】
以上のように、第2実施例の暗号処理装置においては、秘密鍵に依存関係のある中間データが、入力されたマスク値を再利用して生成した中間マスクによりマスクされた状態で、データレジスタr0〜r3に格納されるので、秘密鍵の推定を不能にしてDPA攻撃を無効化することができる。また、中間マスクは、データ処理部400のS/IS404あるいは鍵スケジュール部600の鍵更新部603に設けられたsbox+αを流用し、マスク値を再利用することで生成されるので、暗号回路のほかに乱数生成回路を実装する必要がなく、回路規模をコンパクトにできるとともに消費電力の低減を図ることができる。
【0100】
また、第2実施例の暗号処理装置は、128ビット単位のデータブロックを32ビットずつ順次処理する構成であるため、第1実施例の暗号処理装置と比較して、S、IS、MC、IMCの演算を行う回路を1/4のサイズにすることができ、回路規模をさらにコンパクトにすることができる。
【0101】
また、第2実施例の暗号処理装置は、新たな中間マスクを生成するための非線形変換に、データ処理部400のS/IS404と、鍵スケジュール部600の鍵更新部603に設けられたsbox+αとの双方を利用するため、暗号化や復号のための演算と中間マスクの生成とを同一クロックで行うことができ、レイテンシの増大を抑制することができる。
【0102】
なお、第2実施例の暗号処理装置では、回路規模のコンパクト化を実現するために、図14に示したような回路構成のS/IS404を用いている。中間マスク生成に用いる非線形変換を図14のIGFだけを用いてもよい。しかし、このS/IS404を設ける代わりに、第1実施例と同様に、SとISとを独立して行う回路構成とした場合には、鍵スケジュール部600の鍵更新部603に設けられたsbox+αを用いずに、SとISのうち、暗号化処理もしくは復号処理に使用していない非線形変換を用いて新たな中間マスクを生成できる。したがって、この構成の場合は、新たな中間マスクを生成するための非線形変換を行うために、鍵スケジュール部600の鍵更新部603に設けられたsbox+αを用いる必要はない。
【0103】
また、レイテンシの増大が許容できるのであれば、図16に示すように、S/IS404を用いたコンパクトな回路構成において、データ処理部400のS/IS404のみを用いて、新たな中間マスクを生成するための非線形変換を行う構成としてもよい。
【0104】
図17は、図16に示す回路構成の暗号処理装置による暗号化処理におけるデータの流れを説明する図である。図15に示した例と比較すると、図15に示した例ではClock=6〜9において、鍵更新部603のsbox+αを利用して新たな中間マスク(R210,R110,R010,R320)を生成していたのに対し、図17の例では、Clock=7で、データ処理部400のS/IS404を利用して新たな中間マスクR210を生成する。また、Clock=9で、データ処理部400のS/IS404を利用して新たな中間マスクR110を生成する。また、Clock=11で、データ処理部400のS/IS404を利用して新たな中間マスクR010を生成する。また、Clock=13で、データ処理部400のS/IS404を利用して新たな中間マスクR320を生成する。
【0105】
また、レイテンシの増大が許容できる場合、図18に示すように、S/IS404を用いたコンパクトな回路構成において、鍵更新部603のsbox+αのみを用いて、中間マスクを生成するための非線形変換を行う構成としてもよい。
【0106】
図19は、図18に示す回路構成の暗号処理装置による暗号化処理におけるデータの流れを説明する図である。図15に示した例と比較すると、図15に示した例ではClock=5において、S/IS404を利用して、乱数レジスタr4から取り出されたマスク値R000から中間マスクR310を生成していたのに対し、図19の例では、Clock=6において、鍵更新部603のsbox+αを利用して中間マスクR310を生成する。
【0107】
以上、具体的な実施例を挙げながら詳細に説明したように、本実施形態の暗号処理装置によれば、回路規模や消費電力の増大を抑えながら、秘密鍵の推定を不能にして、サイドチャネル攻撃を無効化することができる。
【0108】
なお、以上説明した実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。上記の新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。上記の実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0109】
A 非線形変換回路
C 線形変換回路
11 データレジスタ
19,20 排他的論理和回路
21,22 乱数レジスタ
31,32 セレクタ
100 データ処理部
102 データレジスタ
103,109 排他的論理和回路
104,105 セレクタ
106 S
107 IS
200 マスク処理部
201 セレクタ
202,209 乱数レジスタ
300 鍵スケジュール部
302 鍵レジスタ
303 鍵更新部
400 データ処理部
d0〜d3 データレジスタ
402,405 排他的論理和回路
403 セレクタ
404 S/IS
500 マスク処理部
501 セレクタ
r0〜r4 乱数レジスタ
600 鍵スケジュール部
602 鍵レジスタ
603 鍵更新部

【特許請求の範囲】
【請求項1】
処理対象データを保持するデータ保持部と、
マスクデータを保持するマスク保持部と、
前記マスク保持部に保持されたマスクデータに対して線形変換を行う第1線形変換部と、
前記マスク保持部に保持されたマスクデータに対して線形変換を行う第2線形変換部と、
前記データ保持部に保持された処理対象データと前記第1線形変換部により線形変換されたマスクデータである第1マスクデータとに基づいて第1データを算出する第1算出部と、
前記第1データと前記第2線形変換部により線形変換されたマスクデータである第2マスクデータのうち、いずれか一方を選択する選択部と、
前記選択部により選択された前記第1データまたは前記第2マスクデータに対して非線形変換を行う非線形変換部と、
前記非線形変換部により非線形変換された前記第1データと前記マスク保持部に保持されたマスクデータとに基づいて第2データを算出する第2算出部と、
前記第2データに対して線形変換を行う第3線形変換部と、を備え、
前記第3線形変換部により線形変換された前記第2データが新たな処理対象データとして前記データ保持部に保持され、
前記非線形変換部により非線形変換された前記第2マスクデータが新たなマスクデータとして前記マスク保持部に保持されることを特徴とする暗号処理装置。
【請求項2】
前記非線形変換回路は、暗号化処理における非線形変換を行う第1回路部と、復号処理における非線形変換を行う第2回路部と、が独立して動作する構成であることを特徴とする請求項1に記載の暗号処理装置。
【請求項3】
処理対象データを保持するデータ保持部と、
マスクデータを保持するマスク保持部と、
鍵データを保持する鍵保持部と、
前記マスク保持部に保持されたマスクデータに対して線形変換を行う第1線形変換部と、
前記マスク保持部に保持されたマスクデータに対して線形変換を行う第2線形変換部と、
前記データ保持部に保持された処理対象データと前記第1線形変換部により線形変換されたマスクデータである第1マスクデータとに基づいて第1データを算出する第1算出部と、
前記第1データに対して非線形変換を行う第1非線形変換部と、
前記第1非線形変換部により非線形変換された前記第1データと前記マスク保持部に保持されたマスクデータとに基づいて第2データを算出する第2算出部と、
前記第2データに対して線形変換を行う第3線形変換部と、
前記鍵保持部に保持された鍵データと前記第2線形変換部により線形変換されたマスクデータである第2マスクデータのうち、いずれか一方を選択する選択部と、
前記選択部により選択された前記鍵データまたは前記第2マスクデータに対して非線形変換を行う第2非線形変換部と、を備え、
前記第3線形変換部により線形変換された前記第2データが新たな処理対象データとして前記データ保持部に保持され、
前記第2非線形変換部により非線形変換された前記鍵データが新たな鍵データとして前記鍵保持部に保持され、
前記第2非線形変換部により非線形変換された前記第2マスクデータが新たなマスクデータとして前記マスク保持部に保持されることを特徴とする暗号処理装置。
【請求項4】
処理対象データを保持するデータ保持部と、
マスクデータを保持するマスク保持部と、
鍵データを保持する鍵保持部と、
前記マスク保持部に保持されたマスクデータに対して線形変換を行う第1線形変換部と、
前記マスク保持部に保持されたマスクデータに対して線形変換を行う第2線形変換部と、
前記データ保持部に保持された処理対象データと前記第1線形変換部により線形変換されたマスクデータである第1マスクデータとに基づいて第1データを算出する第1算出部と、
前記第1データと前記第2線形変換部により線形変換されたマスクデータである第2マスクデータのうち、いずれか一方を選択する第1選択部と、
前記第1選択部により選択された前記第1データまたは前記第2マスクデータに対して非線形変換を行う第1非線形変換部と、
前記第1非線形変換部により非線形変換された前記第1データと前記マスク保持部に保持されたマスクデータとに基づいて第2データを算出する第2算出部と、
前記第2データに対して線形変換を行う第3線形変換部と、
前記鍵保持部に保持された鍵データと前記第2マスクデータのうち、いずれか一方を選択する第2選択部と、
前記第2選択部により選択された前記鍵データまたは前記第2マスクデータに対して非線形変換を行う第2非線形変換部と、を備え、
前記第3線形変換部により線形変換された前記第2データが新たな処理対象データとして前記データ保持部に保持され、
前記第2非線形変換部により非線形変換された前記鍵データが新たな鍵データとして前記鍵保持部に保持され、
前記第1非線形変換部または前記第2非線形変換部により非線形変換された前記第2マスクデータが新たなマスクデータとして前記マスク保持部に保持されることを特徴とする暗号処理装置。

【図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

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate


【公開番号】特開2013−72950(P2013−72950A)
【公開日】平成25年4月22日(2013.4.22)
【国際特許分類】
【出願番号】特願2011−210966(P2011−210966)
【出願日】平成23年9月27日(2011.9.27)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】