説明

暗号処理装置

【課題】DFA攻撃に対する耐性の高い暗号処理装置を提供する。
【解決手段】ラウンド演算の結果を格納するレジスタの格納データに対応するエラー訂正情報またはエラー検出情報を生成し、エラー検証データに基づいて、レジスタ格納データのエラー検出またはエラー訂正を実行する構成とし、レジスタ格納データにエラーが検出された場合、エラーを訂正したデータに基づいてラウンド演算を実行する、または、ラウンド演算を停止する、あるいは、故意にデータをさらに変更してラウンド演算を実行する、これらの処理を実行する。本構成により実質的にDFA解析による鍵の解析が不可能となり、安全性の高い暗号処理装置が実現される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号処理装置に関する。さらに詳細には、暗号解析処理、攻撃処理として知られるDFA解析に対する耐性を向上させた暗号処理装置に関する。
【背景技術】
【0002】
昨今、ICカード、ネットワーク通信、電子商取引などの発展に伴い、ICカードを利用したデータ送受信やネットワークを介した通信におけるセキュリティ確保が重要な問題となっている。セキュリティ確保の1つの方法が暗号技術であり、現在、様々な暗号化手法を用いた通信が実際に行なわれている。
【0003】
例えばICカード等の小型の装置中に暗号処理モジュールを埋め込み、ICカードと、データ読み取り書き込み装置としてのリーダライタとの間でデータ送受信を行ない、認証処理、あるいは送受信データの暗号化、復号化を行なうシステムが実用化されている。
【0004】
ICカードでは、例えばリーダライタやホストコンピュータとデータのやり取りを行なう時、その過程でICカードに格納されている秘密情報が漏れても問題を発生させないために、送受信データは暗号化される。
【0005】
この暗号化方法として多く用いられている方式の1つとしてDES(Data Encryption Standard)がある。DESは、代表的な共通鍵暗号方式のアルゴリズムであり、例えばデータ送受信者としてのICカードとホストコンピュータが同じ鍵を所有し、データの送信側はデータをその鍵で暗号化して送信し、データの受信者は同じ鍵で復号化してメッセージを取り出す。
【0006】
通信の過程で悪意の第三者が盗聴しても、鍵を有していない限り復号化してメッセージを取り出すのは困難である。また、暗号化・復号化の時に使う鍵は、ICカード内のEEPROM等の不揮発性メモリに格納され、暗号化・復号化時にはCPUを介さないで直接ICカード内の暗号エンジンに転送される様な制御により、ICカードの所有者やICカードの開発エンジニアすら鍵データを取り出す事が不可能な構成を採ってセキュリティを保持している。
【0007】
しかし、このような共通鍵暗号処理においては、暗号解析による鍵の漏洩が問題となっている。代表的な鍵解析手法として、例えば暗号処理演算を実行するICカードの消費電流を測定し、統計処理を施して鍵情報を解析する電力差分解析(DPA:Differential Power Analysis)や、暗号演算実行中に動作環境を変化させて演算過程で誤動作を起こさせて、その演算結果と正常動作の演算結果との差分を採って、それを解析する事により鍵を取り出すDFA(Differential Fault Analysis)攻撃等の脅威が報告されている。
【0008】
DFA攻撃は、例えばモールドを除去したICに暗号演算を実行させ、暗号処理実行中に、暗号処理の演算結果を逐次格納するレジスタ等にレーザ照射を行なって保持データの値を変化させ、誤った結果を出力させて、その値を解析することにより鍵情報を取り出す攻撃である。
【0009】
一般的なDES演算回路の構成例およびDFA攻撃の概要について説明する。DES暗号処理は、F関数と呼ばれる変換関数などを適用した単純な演算の繰り返しにより、平文を暗号文に変換する構造を持つ。図1にDES暗号処理の基本構成を示す。入力データの変換を実行するラウンド関数部110と、ラウンド関数部の各ラウンドで適用する鍵を生成する鍵スケジュール部120とによって構成される。
【0010】
ラウンド関数部110において、平文(64ビット)は、まず、初期置換部111において、置換後にL,R各32ビットに分割され、分割されたL,R32ビットが、第1段ラウンド関数部112に入力され、鍵スケジュール部120の第1段鍵生成部122から入力する鍵K(1)に基づいて変換処理がなされる。変換処理結果は、次段の第2段ラウンド関数部113に入力される。
【0011】
鍵スケジュール部120においては、まず、マスター鍵(秘密鍵)置換部(PC−1)121により入力マスター鍵(秘密鍵:64ビット)のパリティ8ビットが取り除かれ、残り56ビットの入れ替え処理が実行されて第1段ラウンド鍵生成部122に入力される。第1段ラウンド鍵生成部122では、入力ビット列のシフト処理および8ビットのデータ破棄等が実行され、48ビットのラウンド鍵K(1)を生成し、生成したラウンド鍵K(1)をラウンド関数部110の第1段ラウンド関数部112に出力する。第1段ラウンド鍵生成部122では、シフト処理による上位ビット列(28ビット)と下位ビット列(28ビット)とを下段の第2段ラウンド鍵生成部123に出力する。
【0012】
ラウンド関数部は、16段のラウンド関数部を有し、それぞれ前段のラウンド関数部の出力を入力として鍵スケジュール部120から入力する鍵を適用した変換処理を実行し、変換結果を後段のラウンド関数部に出力する。16段のラウンド関数部で変換された出力が逆置換部114に入力され、初期置換部111の逆置換処理が実行されて、暗号文として出力される。
【0013】
ラウンド関数部110の各ラウンドを構成する各段のラウンド関数部の構成を図2に示す。図2に示すように、ラウンド関数部は、前段(n−1段)のラウンド関数部から2つの入力、L(n−1)、R(n−1)を入力し、鍵スケジュール部から鍵(k(n))を入力する。F関数部151において、鍵スケジュール部から入力する鍵(k(n))を用いて、前段ラウンド関数部から入力するビット列(R(n−1))の変換処理がなされ、変換結果が、前段ラウンド関数部から入力する残りのビット列(L(n−1))と排他論理和が実行されて、次段のラウンド関数部の出力R(n)が生成される。次段のラウンド関数部には、R(n−1)をL(n)としたビット列と、上述のF関数および排他論理和演算により生成されたR(n)が入力され同様の処理が繰り返される。
【0014】
F関数の構成を図3に示す。F関数は、非線形処理を実行する複数のSボックス(Sbox)を有する。ラウンド関数部の前段からの入力値R(n−1)は拡張部171によって48ビットに拡大され、さらに鍵スケジュール部から入力する鍵(48ビット)と排他論理和が実行され、その出力が6ビットずつ非線形変換処理を実行する複数のSボックス181−1〜8に入力される。各Sボックスでは、例えば変換テーブルを適用した6ビットから4ビットへの非線形変換処理が実行される。
【0015】
Sボックス181−1〜8からの出力ビット4×8=32ビットは、置換部172に入力されて、ビット位置の入れ替え処理がなされ、F関数出力32ビットを生成して出力する。
【0016】
図1〜3を参照して説明したように複数段(16段)の変換処理によってDES暗号処理が実行される。DFA攻撃は、前述したように、例えばモールドを除去したICに暗号演算を実行させている時に、演算結果を格納するレジスタ等にレーザ照射を行なって保持データの値を変化させ、誤った結果を出力させて、その値を解析することにより鍵の解析を行なう攻撃である。
【0017】
通常のDES演算処理においては、16ラウンドの各ラウンド演算結果を32ビットデータずつL/Rレジスタに格納し、次のラウンドでは、このL/Rレジスタに格納された値に基づくラウンド演算を実行するという処理を繰り返す。16ラウンドのラウンド演算の終了後にL/Rレジスタに格納される値は、図4に示すLレジスタ201とRレジスタ202に格納され、これらの値は、
L16=R15・・・(式1)
R16=F(R15,K16)(XOR)L15・・・(式2)
として示される。
上記式において、
Ln,Rnは、それぞれDESアルゴリズムにおけるラウンド演算中のnラウンドのラウンド演算を格納するレジスタの値、
Knはnラウンドにおいて適用されるラウンド鍵、
F(a,b)はラウンド演算中のF関数における演算処理であり、式2中のF(R15,K16)は、ラウンド15のレジスタRの格納値R15と、ラウンド16のラウンド鍵K16を入力値としたF関数の処理を示している。
(XOR)は、排他論理和演算を示している。
【0018】
すなわち、上記式1,2は、16ラウンドのラウンド演算の終了後にL/Rレジスタに格納される値は、レジスタL16にはR15がそのまま格納され、レジスタR16には、ラウンド15のレジスタR格納値R15と、ラウンド鍵K16に基づくF関数処理結果と、ラウンド15のレジスタLの格納値L15との排他論理和演算結果が格納されることを示している。
【0019】
その後、これらのL/Rレジスタ格納値が、逆置換部(IP−1)に入力され、初期置換部の逆置換処理が実行されて、暗号文(Crypto)として出力される。
【0020】
上記の式(式2)に式(式1)の関係を代入すると、
R16=F(L16,K16)(XOR)L15・・・(式3)
と、示すことができる。
【0021】
この式(式3)において、"R16","L16"は、最終的な出力としての演算結果である暗号文(Crypto)に対して、IP−1の逆変換を行なうことにより容易に求めることができる。またF関数は先に、図3を参照して説明した構成によるラウンド鍵を適用した処理である。
【0022】
F関数におけるラウンド鍵の適用処理の詳細について、図5、図6を参照して説明する。16ラウンドにおけるF関数では、前述したように、ラウンド15のレジスタRの格納値R15と、ラウンド16のラウンド鍵K16を入力値とした処理が行なわれる。すなわち、図5に示すように、ラウンド15のレジスタRの格納値R15の拡大置換(32ビット→48ビット)によって生成されたデータEX[R15]211と、ラウンド16に適用される48ビットのラウンド鍵K16,212による処理が実行される。
【0023】
具体的な処理例を図6に示す。図6には、
(1)R15Reg:ラウンド15のラウンド演算結果としてRレジスタに格納されたデータ、
(2)EX[R15]:R15Regの拡大置換(32ビット→48ビット)によって生成されたデータ、
(3)K16:ラウンド16に適用されるラウンド鍵、
(4)Sbox−in:Sボックスの入力、
(5)Sbox−out:Sボックスの出力、
これらのデータを示している。
【0024】
ここで、例えばDESの16ラウンドを実行中に、図7に示すように、レーザ照射等でR15レジスタ221の1bitを反転させた場合、16ラウンドが終了した時点でのL/Rレジスタ222,223の値は、1bit反転による影響が発生し、正常時の処理結果とは異なるビットデータが格納されることになる。
【0025】
例えば図8に示すように、(1)R15Reg中の[x]を示した1ビットを反転させることで、(2)EX[R15]、(4)Sbox−in、(5)Sbox−outにそれぞれ図に示す[x]を付した正常時の処理結果とは異なるビットデータが発生することになる。
【0026】
これらの処理の結果として、16ラウンドのラウンド演算の終了後にL/Rレジスタに格納される値は、
L16'=R15'・・・(式4)
R16'=F(R15',K16)(XOR)L15・・・(式5)
として示される。
【0027】
さらに、この処理の結果が、逆置換部(IP−1)に入力され、初期置換部の逆置換処理が実行されて、暗号文(Crypto)として出力される。
上記の式(式5)に式(式4)の関係を代入すると、
R16'=F(L16',K16)(XOR)L15・・・(式6)
と、示すことができる。
【0028】
この式(式6)において、"R16'","L16'"は、最終的な出力としての演算結果である暗号文(Crypto)に対して、IP−1の逆変換を行なうことにより容易に求めることができる。また、前述の式(式1)と(式4)を比較することで、レーザ照射によって変化したビット位置を特定することができる。例えば、図8に示すように(1)R15Reg中の[x]を示したビット[b2]が0から1に反転した場合、
L16(XOR)L16'=R15(XOR)R15'=20000000(16)・・・(式7)
の演算を実行することにより、レジスタR15のビット[b2]が変化したことを知ることができる。なお、XXXX(16)は16進数表記であることを示す。
【0029】
一方、前述の式(式3)と(式6)を各々排他論理和(XOR)演算することにより、
R16(XOR)R16'=(F(L16,K16)(XOR)L15)(XOR)(F(L16',K16)(XOR)L15)=F(L16,K16)(XOR)F(L16',K16)・・・(式8)
となる。さらに、上記式(式8)の両辺に対して、F関数内のP置換の逆置換(P−1)を実施すると、
−1[R16(XOR)R16']=50000000(16)
=P−1[F(L16,K16)(XOR)F(L16',K16)]
=P−1[F(L16,K16)](XOR)P−1[F(L16',K16)]・・・(式9)
と示すことができる。
【0030】
この式(式9)において、"R16","R16'","L16","L16'"は、暗号の演算結果から容易に求めることができる値であり、F関数も公開されていて既知の関数であるため、未知の数値は"K16"のみとなる。
【0031】
この例の場合、上記式(式7)より、レジスタR15の1つのビット[b2]が変化したことが判明しているため、式(式8)の値((式3)と(式6)の差異)は8個のS−boxのうち、"S1"の出力の差異に起因していることが明らかとなる。
【0032】
従って、ラウンド16の鍵の構成ビット中の、Sボックス"S1"の入力となる6bitのみを選択して、この6ビットを、その取りうる全ての値:"00(16)"〜3f(16)"まで変化させて上記式(式9)を満たす値を求めると、
"03(16)","07(16)","19(16)","1d(16)","28(16)",
"2c(16)","31(16)","36(16)","3a(16)","3e(16)"
が求まる。
【0033】
次に、例えば、レジスタR15の1つのビット[b3]を"1"から"0"に反転させた場合、上記式(式7)は、
L16(XOR)L16"=R15(XOR)R15"=10000000(16)・・・(式10)
と示され、前記の式(式9)は以下の通りに示すことができる。
−1[R16(XOR)R16"]=70000000(16)
=P−1[F(L16,K16)](XOR)P−1[F(L16",K16)]・・・(式11)
上記式(式11)において、"R16"","L16""は、前述の式(式7)、(式9)の"R16'","L16'"とは異なる値である。
【0034】
ラウンド16に適用されるラウンド鍵K16の構成ビット中、Sボックス中の "S1"の入力となる6bitを"00(16)"〜"3f(16)"まで変化させて、上記式(式11)を満たす値を求めると、
"34(16)","36(16)","3d(16)","3f(16)"、
が求まる。
【0035】
先の式(式9)から導かれた6bit鍵の候補と比較して、共通するのは、
"36(16)"のみであり、Sボックス"S1"の入力に対応するラウンド16の6bit鍵の値は"36(16)"であると結論付けることができる。
【0036】
同様にしてSボックスの構成要素"S2"〜"S8"の入力に対応するラウンド16の6bit鍵の値を求めることが可能となる。このような処理によってラウンド鍵を解析するのがDFA攻撃である。
【0037】
このDFA攻撃により、ラウンド鍵の元となるマスター鍵(秘密鍵)56bitの鍵のうち、48bitは求めることができ、残り8bitは2=256回の全数攻撃で容易に求めることができる。
【0038】
このDFA攻撃に対する対応策を示した従来技術として、特許文献1に記載の構成がある。この従来技術では、以下のような対応策を示している。
対応策1.平文の暗号化演算を実行後に、演算結果を再び復号化演算し、演算結果が平文と一致した場合に暗号演算結果を正しい演算結果として出力する。一致しない場合、CPUに対してエラーの発生を知らせ、暗号演算処理を終了する。
対応策2.平文を複数の暗号演算回路で演算し、結果が一致した場合のみ演算結果を正しい演算結果として出力する。一致しない場合、CPUに対してエラーの発生を知らせ、暗号演算処理を終了する。
これらの対策により、DFA攻撃に対する耐性を高める構成を開示している。
【0039】
しかし、この対応策において、対応策1を行なうと、通常の演算の2倍の演算時間が必要となり、演算のスループットが下がるという問題が発生する。また、対応策2を行なうと、複数のDES演算回路が必要となり、回路規模が少なくとも2倍程度になるという問題が発生する。
【特許文献1】特開平10−154976
【発明の開示】
【発明が解決しようとする課題】
【0040】
本発明は、上記問題点に鑑みてなされたものであり、処理アルゴリズムを複雑化させることなく、また処理回路を非常に大きくすることなくDFA攻撃に対する耐性を高め、暗号解析の困難性を向上させた暗号処理装置を提供することを目的とする。
【課題を解決するための手段】
【0041】
本発明の第1の側面は、
複数回のラウンド演算の繰り返し処理を含む暗号処理演算を実行する暗号処理装置であり、
ラウンド演算を実行するラウンド演算実行部と、
各ラウンドのラウンド演算結果を格納するレジスタと、
前記レジスタに対する格納データに対応するエラー訂正情報またはエラー検出情報を生成するエラー検証データ生成部と、
前記エラー検証データ生成部の生成したエラー検証データを格納するエラー検証データ格納部と、
前記エラー検証データ格納部に格納されたエラー検証データに基づいて、前記レジスタ格納データのエラー検出またはエラー訂正を実行するエラー検証部とを有し、
前記ラウンド演算実行部は、
前記エラー検証部におけるエラー検出の有無に応じて異なる態様でのデータ処理を実行する構成を有することを特徴とする暗号処理装置にある。
【0042】
さらに、本発明の暗号処理装置の一実施態様において、前記エラー検証データ生成部は、エラー訂正コード生成回路であり、前記エラー検証部は、前記エラー検証データ格納部に格納されたエラー訂正コードに基づいて、前記レジスタ格納データのエラー訂正を実行する構成を有し、前記ラウンド演算実行部は、前記エラー検証部においてエラーが検出されない場合は、前記レジスタに格納されたデータに基づくラウンド演算を実行し、前記エラー検証部においてエラーが検出された場合は、前記レジスタに格納されたデータに対するエラー訂正コードに基づくエラー訂正後のデータに基づくラウンド演算を実行する構成であることを特徴とする。
【0043】
さらに、本発明の暗号処理装置の一実施態様において、前記エラー検証データ生成部は、エラー検出データ生成回路であり、前記エラー検証部は、前記エラー検証データ格納部に格納されたエラー検出データに基づいて、前記レジスタ格納データのエラーの有無を判定する構成を有し、前記ラウンド演算実行部は、前記エラー検証部においてエラーが検出されない場合は、前記レジスタに格納されたデータに基づくラウンド演算を実行し、前記エラー検証部においてエラーが検出された場合は、ラウンド演算を停止する処理を実行する構成であることを特徴とする。
【0044】
さらに、本発明の暗号処理装置の一実施態様において、前記エラー検証データ生成部は、エラー検出データ生成回路であり、前記エラー検証部は、前記エラー検証データ格納部に格納されたエラー検出データに基づいて、前記レジスタ格納データのエラーの有無を判定する構成を有し、前記ラウンド演算実行部は、前記エラー検証部においてエラーが検出されない場合は、前記レジスタに格納されたデータに基づくラウンド演算を実行し、前記エラー検証部においてエラーが検出された場合は、前記レジスタに格納されたデータを変更したデータに基づくラウンド演算を実行する構成であることを特徴とする。
【0045】
さらに、本発明の暗号処理装置の一実施態様において、前記ラウンド演算実行部は、前記エラー検証部においてエラーが検出された場合は、前記ラウンド演算実行部を構成するF関数実行部において、固定または乱数に基づく変換用データを適用してSボックスに対する入力データを変更する処理を実行する構成であることを特徴とする。
【0046】
さらに、本発明の暗号処理装置の一実施態様において、前記エラー検証データ生成部は、前記ラウンド演算実行部内のF関数部に設定されたSボックスのデータ入力単位としての4ビット単位でのパリティを生成する回路であり、前記エラー検証部は、前記エラー検証データ格納部に格納された4ビット単位のパリティに基づいて、前記レジスタ格納データについて、4ビット単位でのエラーの有無を判定する構成を有し、前記ラウンド演算実行部は、前記エラー検証部においてエラーが検出された場合、前記ラウンド演算実行部を構成するF関数実行部において、エラーの検出された4ビットに対応して生成されるSボックス入力値を、固定または乱数に基づく変換用データを適用して変更する処理を実行する構成であることを特徴とする。
【0047】
さらに、本発明の暗号処理装置の一実施態様において、前記ラウンド演算部は、非線形変換部としてのSボックスを有し、前記レジスタは、前記Sボックスによる非線形変換処理を含むラウンド演算処理の結果データを格納する構成であることを特徴とする。
【0048】
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理装置は、DES(Data Encryption Standard)アルゴリズムに従った暗号処理演算を実行する構成であることを特徴とする。
【0049】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【発明の効果】
【0050】
本発明の構成によれば、処理アルゴリズムを複雑化させることなく、DFA解析による暗号解析の困難性を高めた暗号処理装置が実現される。
【0051】
本発明の構成では、例えばDESなど複数段のラウンド演算の繰り返し処理を含む暗号アルゴリズムを実行する暗号処理装置において、ラウンド演算の結果を格納するレジスタの格納データに対応するエラー訂正情報またはエラー検出情報を生成し、エラー検証データに基づいて、レジスタ格納データのエラー検出またはエラー訂正を実行する構成とし、レジスタ格納データにエラーが検出された場合、
エラーを訂正したデータに基づいてラウンド演算を実行する、または、
ラウンド演算を停止する、あるいは、
故意にデータをさらに変更してラウンド演算を実行する、
これらのいずれかの処理を実行する構成としたので、実質的にDFA解析による鍵の解析が不可能となり、安全性の高い暗号処理装置が実現される。
【発明を実施するための最良の形態】
【0052】
以下、本発明の暗号処理装置の詳細について説明する。本発明は、例えばDES(Data Encryption Standard)アルゴリズムに代表される複数段のラウンド関数の繰り返し処理を含む暗号アルゴリズムを実行する暗号処理装置であり、暗号処理回路規模の増大を抑えつつ、DFA攻撃に対する耐性を持った回路構成を提供することを目的としてなされたものである。
【0053】
まず、本発明の暗号処理装置の構成の概要について説明する。本発明の暗号処理装置は、DFA攻撃に対する耐性を保持させるための構成として、例えば以下の構成のいずれかを備える。
構成1.ラウンド演算結果の格納レジスタとしてのL/Rレジスタの入力部にエラー訂正コード生成回路(ECC回路)を配置し、出力部にエラー訂正回路(Syndrome生成回路)を配置し、さらに、L/RレジスタにECCコード格納用のレジスタを配置する。
構成2.ラウンド演算結果の格納レジスタとしてのL/Rレジスタの入力部にパリティ生成回路を配置し、さらに、L/Rレジスタ部にパリティ(PL/PR)情報格納用のレジスタ、出力部にパリティチェック回路を配置し、パリティチェック回路においてエラーが検出された場合、リセット信号を発生し演算を停止する。
構成3.ラウンド演算結果の格納レジスタとしてのL/Rレジスタの入力部に、各レジスタ4bit毎にパリティを生成する回路を設定し、L/Rレジスタ部にパリティ格納用のレジスタ、F関数部にパリティチェック回路と、パリティエラーを検出した場合にその4bitのレジスタ値と固定値の排他論理和(XOR)演算を実行する回路を配置する。
【0054】
本発明の暗号処理装置は、上記構成1〜3の少なくともいずれかの構成を備える。なお、いずれの構成においても、同じSボックス("S1"〜"S8")に入力される各ビットは隣り合わない配置をとるものとする。
【0055】
通常、DES演算を実行する暗号処理回路を設計する場合、DESアルゴリズムにおいて実行される1つのラウンド演算を実行する回路を1個配置して、この回路を16回繰り返して適用して16ラウンドを実行させる構成とする。あるいは、2つのラウンド演算を実行する回路を1個配置し、2ラウンド演算を8回繰り返す構成とする場合もある。
【0056】
以下において説明する暗号処理装置は、1つのラウンド演算実行回路を設定し、1つのラウンド演算実行回路を適用して16ラウンドのラウンド演算を実行する回路構成について説明する。以下、本発明の構成と従来の一般的な回路構成との差異を明確に説明するため、まず、従来の一般的な1つのラウンド演算実行回路を配置した暗号処理装置構成と、上述した構成1〜3に相当する暗号処理装置構成および処理の詳細について、順次、説明する。
【0057】
[従来の一般的な暗号処理装置構成]
図9に、従来の一般的な1つのラウンド演算実行回路を設定した暗号処理装置構成を示す。
【0058】
図9に示すラウンド関数部310は、16段のラウンド関数を繰り返し実行する。先に図1を参照して説明した鍵スケジュール部から入力するラウンド鍵Knを適用した変換処理を実行する。各ラウンド演算の結果は、Lレジスタ311、Rレジスタ312に格納し、レジスタ格納値を次段のラウンド関数部の入力として利用する構成である。
【0059】
図9に示すラウンド関数部310の構成中、スイッチ(SW1)は、DES演算開始時には"a"側に接続されている。DES演算が開始されると、平文を初期置換部[IP(Initial Permutation)]301において置換後、2つの32bitデータL,Rに分けられ、制御クロックに基づく制御により、L/Rレジスタ311,312へ取り込まれると同時にSW1を"b"側に切り替える。
【0060】
このデータ取り込みによってL/Rレジスタ311,312の出力がL,Rに設定され、その後、これらのレジスタ格納値に基づいて、F関数部313と排他論理和演算(XOR)部314を適用したラウンド(Round)演算が実行され、その結果が再度、スイッチ(SW1)を介してL/Rレジスタ311,312に入力される。
【0061】
この処理を16段のラウンド演算が完了するまで繰り返した後、スイッチ(SW2)が接続され、演算結果が逆置換部(IP−1)302へ出力され、逆置換変換を実行し、暗号文(Crypto)として出力する。
【0062】
なお、F関数部313は、先に図3、図5を参照して説明したようにラウンド鍵を適用した演算や、Sボックスによる置換処理が行なわれる。
【0063】
この従来型の暗号処理装置構成では、先に図7、図8を参照して説明したように、DFA攻撃により、ラウンド鍵の解析が行なわれてしまう恐れがある。すなわちLレジスタ311やRレジスタ312に対するレーザ照射などにより故意にビット値を変更して、その演算処理結果を解析することでラウンド鍵の構成ビットを解析し、最終的には、ラウンド鍵の元データであるマスター鍵の構成ビット情報が解析されてしまうということになる。このようなDFA攻撃による鍵解析を防止するための構成例について以下、説明する。
【0064】
[構成例1]
本発明の暗号処理装置の構成例1は、ラウンド演算結果の格納レジスタとしてのL/Rレジスタの入力部にエラー訂正コード生成回路(ECC回路)を配置し、出力部にエラー訂正回路(Syndrome生成回路)を配置し、L/RレジスタにECCコード格納用のレジスタを配置する構成を持つ。
【0065】
図10を参照して、本構成例1の暗号処理装置について説明する。本構成において、初期置換部401、逆置換部402、スイッチ1(SW1)、スイッチ2(SW2)、さらにラウンド関数部410のF関数部413、排他論理和演算部414は、図9を参照して説明したと同様の構成であり、同様の処理を実行する。
【0066】
本構成例1の特徴は、
ラウンド演算結果の格納レジスタとしてのLレジスタ411とRレジスタ412各々の入力部に、エラー訂正コード生成回路(ECC回路)421,431を配置し、
Lレジスタ411とRレジスタ412各々の出力部にエラー訂正回路(Syndrome生成回路)423を配置し、さらに、
Lレジスタ411,433とRレジスタ412各々に、ECCコード格納用のECCコードレジスタ422,432を付加した、
これらの構成が本構成例の特徴的な構成である。
【0067】
図10に示す暗号処理装置において、Lレジスタ411とRレジスタ412各々には、各ラウンド演算に適用するデータが逐次格納される。本構成では、Lレジスタ411とRレジスタ412各々に格納されるデータは、各レジスタ入力部側に設定されたエラー訂正コード生成回路(ECC回路)421,431にも並列に入力される。
【0068】
エラー訂正コード生成回路(ECC回路)421,431においては、各レジスタ入力値のエラー訂正コード(ECCコード)を算出し、算出したECCコードをECCコード格納用のECCコードレジスタ422,432に格納する。
【0069】
その後、Lレジスタ411とRレジスタ412各々に格納されたデータを適用したラウンド演算開始する際、レジスタデータの取り込みタイミングとしてのパルスの立ち上がりタイミングにおいて、Lレジスタ411とRレジスタ412各々に格納されたデータと、ECCコードレジスタ422,432に格納されたECCコードは、エラー訂正回路423,433に入力される。
【0070】
エラー訂正回路423,433では、それぞれ、各レジスタ格納データに対応するECCコードに基づいて、レジスタ格納データのエラーの有無を検証する。エラー訂正回路423,433において、レジスタ格納データにエラーが無いと判定された場合は、レジスタ格納データをそのまま適用したラウンド演算を実行する。
【0071】
エラー訂正回路423,433において、レジスタ格納データにエラーが有ると判定された場合は、エラー訂正回路423,433において、ECCコードを適用したレジスタ格納データのエラー訂正を実行し、訂正後のデータを適用したラウンド演算を実行する。
【0072】
このように、本構成例においては、Lレジスタ411とRレジスタ412各々に格納されるデータのエラー検証を行なうためのECCコードをレジスタ入力データに対して、予め設定し、レジスタからの出力に際して、レジスタ格納データにエラーがあるか否かを検証し、エラーがある場合は、ECCコードを適用したエラー訂正を行なった後にラウンド演算を開始させる構成としたので、例えばレジスタに対するレーザ照射などによってビット値が変更された場合は、エラー訂正回路423,433において、ECCコードを適用したレジスタ格納データのエラー訂正が実行され、訂正後のデータを適用したラウンド演算が実行されることになり、エラービットを含むデータを適用したラウンド演算が実行されてしまうことを防止することができ、エラーに起因する情報は出力されず、DFA攻撃による鍵の解析は不可能となる。
【0073】
[構成例2]
本発明の暗号処理装置の構成例2は、ラウンド演算結果の格納レジスタとしてのL/Rレジスタの入力部にパリティ生成回路を配置し、さらに、L/Rレジスタ部にパリティ(PL/PR)情報格納用のレジスタ、出力部にパリティチェック回路を配置し、パリティチェック回路においてエラーが検出された場合、リセット信号を発生し演算を停止する構成である。
【0074】
図11を参照して、本構成例2の暗号処理装置について説明する。本構成例においても、初期置換部501、逆置換部502、スイッチ1(SW1)、スイッチ2(SW2)、さらにラウンド関数部510のF関数部513、排他論理和演算部514は、図9を参照して説明したと同様の構成であり、同様の処理を実行する。
【0075】
本構成例2の特徴は、
ラウンド演算結果の格納レジスタとしてのLレジスタ511とRレジスタ512各々の入力部にエラー検出データ生成回路としてのパリティ生成回路521,531を配置し、
さらに、Lレジスタ511とRレジスタ512各々にパリティ(PL/PR)情報格納用レジスタ522,532を付加し、さらに、
パリティ(PL/PR)情報格納用レジスタ522,532各々の出力部にパリティチェック回路523,533を配置した、
これらの構成が本構成例の特徴的な構成である。図10に示す暗号処理装置において、パリティチェック回路523,533においてエラーが検出された場合、リセット信号を発生しラウンド演算を停止する。
【0076】
図11に示す暗号処理装置において、Lレジスタ511とRレジスタ512各々には、各ラウンド演算に適用するデータが逐次格納される。本構成では、Lレジスタ511とRレジスタ512各々に格納されるデータは、各レジスタ入力部側に設定されたパリティ生成回路521,531にも並列に入力される。
【0077】
パリティ生成回路521,531においては、各レジスタ入力値のエラー検出用データとしてのパリティデータを各レジスタ入力値(32ビットデータ)に基づいて算出する。パリティ生成回路521,531において算出されたパリティデータは、パリティ(PL/PR)情報格納用レジスタ522,532にそれぞれ格納される。
【0078】
その後、Lレジスタ511とRレジスタ512各々に格納されたデータに基づくラウンド演算の開始に併せて、Lレジスタ511とRレジスタ512各々に格納されたデータと、パリティ(PL/PR)情報格納用レジスタ522,532に格納されたパリティデータが、パリティチェック回路523,533にそれぞれ入力される。
【0079】
パリティチェック回路523,533では、パリティデータに基づいて、Lレジスタ511とRレジスタ512から入力したデータのエラー発生の有無を判定する。エラーが検出されなかった場合は、ラウンド演算をそのまま実行させるが、エラーが検出された場合、例えばシステムに対してリセット信号を発生しラウンド演算を停止させる。
【0080】
この構成例2は、Lレジスタ511とRレジスタ512各々に格納されるデータのエラー検証を行なうためのパリティデータをレジスタ入力データに対して、予め算出する構成とし、レジスタからの出力に際して、レジスタ格納データにエラーがあるか否かをパリティデータに基づいて検証し、エラーがある場合は、ラウンド演算を停止させる構成としたので、例えばレジスタに対するレーザ照射などによってビット値が変更された場合は、パリティチェック回路523,533においてエラーが検出され、ラウンド演算が停止されることになり、エラービットを含むデータを適用したラウンド演算が実行されてしまうことを防止することができ、エラーに起因する情報は出力されず、DFA攻撃による鍵の解析は不可能となる。
【0081】
本構成例では、付加する回路が2個のパリティ生成回路521,531、2bitのパリティ(PL/PR)情報格納用レジスタ522,532、2個のパリティチェック回路523,533だけであり、回路規模の増加が非常に小さくて済む。
【0082】
[構成例3]
本発明の暗号処理装置の構成例3は、ラウンド演算結果の格納レジスタとしてのL/Rレジスタの入力部に、各レジスタ4bit毎にパリティを生成する回路を設定し、L/Rレジスタ部にパリティ格納用のレジスタ、F関数部にパリティチェック回路と、パリティエラーを検出した場合にその4bitのレジスタ値と固定値の排他論理和(XOR)演算を実行する回路を配置したものである。
【0083】
図12を参照して、本構成例3の暗号処理装置について説明する。本構成例においても、初期置換部601、逆置換部602、スイッチ1(SW1)、スイッチ2(SW2)、さらにラウンド関数部610の排他論理和演算部614は、図9を参照して説明したと同様の構成であり、同様の処理を実行する。ただし、本構成例3ではF関数部613は、従来構成とは異なる処理を行なう。
【0084】
本構成例3の特徴は、
ラウンド演算結果の格納レジスタとしてのLレジスタ611とRレジスタ612各々の入力部に、各レジスタに対する32ビット格納データの各4ビット毎に対応するエラー検出用のパリティデータを生成するパリティ生成回路621,631を設定し、
Lレジスタ611とRレジスタ612各々にパリティ(PL/PR)情報格納用レジスタ622,632を付加し、
パリティ(PL/PR)情報格納用レジスタ622,632各々の出力部にパリティチェック回路623,633を配置し、さらに、
パリティチェック回路623,633において、レジスタ格納データ中のいずれかの4ビットデータにエラーが検出された場合、F関数部613において、エラーの検出された4ビットレジスタ値と、固定値との排他論理和(XOR)演算を実行する回路を配置し、
さらに、Lレジスタ611格納データのエラー発生情報をRレジスタ側に伝達するためのスイッチ651を設けたものである。
【0085】
図12を参照して、本構成例の暗号処理装置の処理について説明する。この構成において、スイッチSW1,スイッチSW2は従来構成と同様に動作する。また、新規に付加されたスイッチSW3は、スイッチSW1と同じタイミングで動作し、入力されたデータが初期置換部(IP)601においてIP置換されてラウンド演算回路に入力されている期間は"a"側に接続され、ラウンド演算が開始されると"b"側に接続される。
【0086】
初期置換部(IP)601において初期置換されたデータは、Lレジスタ611とRレジスタ612各々に供給されると共にパリティ生成回路621,631に入力される。パリティ生成回路621,631では、F関数部613を構成するS−boxの"S1"〜"S8"の入力ビットに対応する4bitずつのデータに対して、各々エラー検出用データとしてのパリティデータが計算される。
【0087】
パリティ生成回路621,631において算出された4ビット単位のパリティデータは、Lレジスタ611とRレジスタ612各々に対するデータ格納に併せて、パリティ(PL/PR)情報格納用レジスタ622,632に格納される。この時、パリティ情報格納用レジスタ(PR)632の入力は排他論理和(XOR)演算部652の出力であるが、排他論理和(XOR)演算部652の入力の一方はスイッチSW3によって接地されており、オール0に設定されているため、パリティ情報格納用レジスタ(PR)632の入力は、パリティ生成回路631において算出された4ビット単位のパリティデータが変更されることなくそのまま格納されることになる。
【0088】
Lレジスタ611とRレジスタ612各々に格納されたデータが読み出され、ラウンド演算が開始されると、このラウンド演算開始に並行して、Lレジスタ611とRレジスタ612各々に格納されたデータと、パリティ(PL/PR)情報格納用レジスタ622,632に格納されたパリティデータが、パリティチェック回路623,633にそれぞれ入力される。
【0089】
パリティチェック回路623,633では、パリティデータに基づいて、Lレジスタ611とRレジスタ612から入力したデータについて、4ビット単位でのエラー発生の有無を判定する。
【0090】
パリティチェック回路623,633におけるエラーチェック結果は、F関数部613に入力される。Right側のパリティチェック回路633のエラー検出情報は、直接、F関数部613に入力される。また、Left側のパリティチェック回路623によって検出されたエラー情報は、スイッチSW3を介して、Right側に設定されたパリティ生成回路631の出力との排他論理和(XOR)演算部652に入力され、この結果が、パリティ情報格納用レジスタ(PR)632に入力されることになり、パリティ情報格納用レジスタ(PR)632に入力されるデータの変化が発生し、この変化をパリティチェック回路633において検出することになり、パリティチェック回路633は、Lレジスタ611とRレジスタ612各々に格納されたデータのエラー発生の有無を4ビット単位で検出することになる。
【0091】
このエラー検出情報は、F関数部613に入力される。本構成例におけるF関数部613の構成を図13に示す。F関数部613では、前述したように、各ラウンドのレジスタRの拡張値671と、ラウンド鍵Kn672を入力値とした処理が行なわれる。
【0092】
本処理例では、図12に示したパリティチェック回路633からのパリティチェック結果661がF関数部613に入力される。パリティチェック回路633からのパリティチェック結果661が、いずれかの4ビットデータにエラーがあることを示す場合、F関数部613に設定された固定値または乱数値としての変換用データ673が使用され、入力値が拡張された値671と、ラウンド鍵Kn672との排他論理和(XOR)演算結果に対して、さらに排他論理和(XOR)演算が実行された後、Sボックスに入力される。
【0093】
パリティチェック回路633からのパリティチェック結果661が、エラーがないことを示す場合は、変換用データ673にはオール"0"が設定され、従来の処理と同様、入力値が拡張された値671と、ラウンド鍵Kn672との排他論理和(XOR)演算結果がSボックスに入力され正常なラウンド演算が実行される。
【0094】
前述したように、DFA攻撃は、正常演算時の演算結果と演算途中でビット反転が生じた時の演算結果の比較により鍵を解析する攻撃方法である。これは、先に式9を参照して説明した通り、以下の式、
−1[R16(XOR)R16']=P−1[F(L16,K16)](XOR)P−1[F(L16',K16)]・・・(式12)
が成立する値を求めることで解析を行なうものである。
【0095】
本構成例では、図13に示すF関数部の構成を適用し、パリティチェック回路633からのパリティチェック結果661が、いずれかの4ビットデータにエラーがあることを示す場合、F関数部613に設定された固定値または乱数値としての変換用データ673が使用され、入力値が拡張された値671と、ラウンド鍵Kn672との排他論理和(XOR)演算結果に対して、さらに排他論理和(XOR)演算が実行された後、Sボックスに入力する。この結果、Sボックスに入力される値は、レジスタ値を故意に変更させたビット列を、さらに変更したビット列となる。この結果、上記式(式12)を成り立つデータを解析しても、正確な鍵情報が得られることはない。
【0096】
本構成例におけるF関数部613において実行される処理について、図14を参照して説明する。図14には、
(1)R15Reg:ラウンド15のラウンド演算結果としてRレジスタに格納されたデータ、
(2)EX[R15]:R15Regの拡大置換(32ビット→48ビット)によって生成されたデータ、
(3)変換用data:レジスタ格納値にエラー検出された際に適用される排他論理和(XOR)用のデータ
(4)EX[R15]':EX[R15]と変換用dataの排他論理和(XOR)演算結果
(5)K16:ラウンド16に適用されるラウンド鍵、
(6)Sbox−in:Sボックスの入力、
(7)Sbox−out:Sボックスの出力、
これらのデータを示している。
【0097】
図14に示す例は、ラウンド16の処理の際のデータ処理を示しており、図12に示すRレジスタ612の格納データ中、図14の(1)R15Reg、すなわちRレジスタ格納値の最初の4ビットにエラービットが含まれる場合の処理例を示している。すなわちDFA攻撃が実行されている状態である。図14に示すp0〜p8は、パリティチェック回路における4ビット単位のパリティを示している。これらの情報に基づいてパリティ演算が実行され、その演算結果に基づいて変換用データが設定される。
【0098】
ここで、パリティチェック回路633は、S−box"S1"に対応する入力データにエラーがあり攻撃があったことを検出する。このエラー検出情報は、F関数部613に入力され、F関数部613では、先に図13を参照して説明したように、S−boxに対するデータ入力以前に、"S1"に対応する6bitデータに対して、図14(3)に示す変換用データを適用して、排他論理和(EOR)演算を実行して、その結果をSボックスに入力する処理を行なう。
【0099】
S−box"S1"に対応する入力データは、本来、図14に示すレジスタRの格納値である(1)R15Regの拡大置換データ(2)EX[R15]と、ラウンド鍵K16との排他論理和演算結果であるが、エラー検出された場合は、さらに、図14に示す(3)変換用データとの排他論理和(XOR)演算が実行されて、この結果がSボックスに入力される。
【0100】
最初のRレジスタの格納データの最初の4ビットの拡大置換データ(6ビット)は、図14に示す(3)変換用データ列、例えばオール0と異なる固定値"001010(2)"を適用して、排他論理和演算が行なわれる。なお、同様に、Sボックス"S2"〜"S8"に対応する入力データについても、(3)変換用データとの排他論理和(XOR)演算が実行されるが、レジスタ格納データ中、4ビット単位でパリティエラーの検出が実行され、エラーの検出されていないビット部分に対しては、(3)変換用データは全て[0]に設定され、Sボックスの入力値が変化しない設定とされる。
【0101】
この場合、エラーの検出された最初の4ビットに対応するSボックス入力値は、本来の入力値と異なる結果となり出力もレジスタ格納値との直接的な対応の解析が不可能なデータとして出力される。この結果、Sボックスの出力の解析を実行してもラウンド鍵Knの解析は不可能となる。
【0102】
通常のDFA攻撃を想定しての解析を行なう場合、前述したように、
−1[R16(XOR)R16']=a0000000(16)
=P−1[F(L16,K16)](XOR)P−1[F(L16',K16)]・・(式13)
上記式に基づいて解析を行なうが、この時求まる"S1"に対応する6bit鍵の候補は、
"0a(16)","0e(16)","10(16)","14(16)","37(16)"
となる。これは、(3)変換用データの影響を持つデータに基づいて解析された結果であり、正しいラウンド鍵"36(16)"は含まれない。結果的にラウンド鍵の解析には失敗することとなる。
【0103】
次に、図12のLレジスタ611に格納されたデータがDFA攻撃によって変更された場合について説明する。例えば、ラウンド15で、ラウンド14の終了時のLレジスタ格納値L14の32ビットデータ中の1つのビット(例えば先頭4ビット中の第3ビット(b2))の値を"0"から"1"に反転した場合、Lレジスタ格納値L14のデータは、F関数部613の出力と排他論理和(XOR)演算部614において排他論理和(XOR)演算を行なった後に、Rレジスタ612に供給される。
【0104】
従って、ラウンド15の終了時点のRレジスタ格納値R15には、反転されたビット(b2)が内在するが、パリティ生成回路631は、この入力値に対してパリティデータを生成し、また、パリティチェック回路633は、このパリティデータに基づくパリティチェックを行なうため、エラーの検出はできない。
【0105】
しかし、ラウンド15の演算時に、Lレジスタ格納値L14のデータは、Left側のパリティチェック回路623にも供給され、このパリティチェック回路623におけるパリティチェックで、Lレジスタ格納値L14のデータのエラーが検出される。
【0106】
例えば、4ビット単位のパリティチェックにおいて上位4bitにエラーが内在することが認識されたとする。この情報(パリティデータ)はスイッチSW3,651を介してRight側の排他論理和演算部652に入力される。排他論理和演算部652では、Rレジスタ612に対する入力データのパリティデータと排他論理和演算(XOR)がなされ、その結果が、パリティ情報格納用レジスタ(PR)632に格納されることになる。
【0107】
従って、ラウンド16の演算に移行した時、パリティチェック回路633におけるパリティチェック処理において、上位4bitのエラーが検出され、Rレジスタ格納値に基づくエラー検出時の処理と同様の処理が可能となる。すなわち、図14を参照して説明した、Rレジスタ格納値R15ビット(b2)の値を"0"から"1"に反転した場合と同様に、S−boxに入る前の段階でS1"に対応する6bitデータに対して固定値"001010(2)"を適用した排他論理和(XOR)演算を行ない、S−boxの入力値を通常の入力値と異なる値に設定する。
【0108】
この処理の結果、結果的にSボックスの出力の解析を試みても、誤った6bit鍵の候補、すなわち、
"0a(16)","0e(16)","10(16)","14(16)","37(16)"
を取得することになり、結果的に正しい鍵"36(16)"を検出することができず、DFA攻撃は失敗する。
【0109】
最後に、上述の暗号処理を実行するデバイスとしてのICモジュール700の構成例を図15を参照して説明する。上述の処理は、例えばPC、ICカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図15に示すICモジュール700は、これら様々な機器に構成することが可能である。
【0110】
図15に示すCPU(Central processing Unit)701は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、さらに上述した各シーケンスに従った暗号処理シーケンスなどの制御を実行するプロセッサである。メモリ702は、CPU701が実行するプログラム、あるいは演算パラメータとしての固定データを格納するROM(Read-Only-Memory)、CPU701の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるRAM(Random Access Memory)等からなる。また、メモリ702は暗号処理に必要な鍵データ等の格納領域として使用可能である。データ等の格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。
【0111】
暗号処理部703は、例えば上述したDESアルゴリズムなど複数段のラウンド関数の繰り返し処理を含む暗号アルゴリズムを実行する暗号処理部である。乱数発生器704は、暗号処理に適用する乱数、例えば前述の構成例3において説明したF関数部においてレジスタ格納ビットのエラーが検出された場合に利用する排他論理和演算用の変換用データの生成などに適用される。
【0112】
送受信部705は、外部とのデータ通信を実行するデータ通信処理部であり、例えばリーダライタ等、ICモジュールとのデータ通信を実行し、ICモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。クロック706は、暗号処理装置内の処理タイミング制御用信号供給部として適用される
【0113】
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、冒頭に記載した特許請求の範囲の欄を参酌すべきである。
【0114】
なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
【0115】
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【産業上の利用可能性】
【0116】
本発明の構成によれば、処理アルゴリズムを複雑化させることなく、DFA解析による暗号解析の困難性を高めた暗号処理装置が実現される。
【0117】
本発明の構成では、例えばDESなど複数段のラウンド演算の繰り返し処理を含む暗号アルゴリズムを実行する暗号処理装置において、ラウンド演算の結果を格納するレジスタの格納データに対応するエラー訂正情報またはエラー検出情報を生成し、エラー検証データに基づいて、レジスタ格納データのエラー検出またはエラー訂正を実行する構成とし、レジスタ格納データにエラーが検出された場合、
エラーを訂正したデータに基づいてラウンド演算を実行する、または、
ラウンド演算を停止する、あるいは、
故意にデータをさらに変更してラウンド演算を実行する、
これらのいずれかの処理を実行する構成としたので、実質的にDFA解析による鍵の解析が不可能となり、安全性の高い暗号処理装置が実現される。
【図面の簡単な説明】
【0118】
【図1】DES暗号処理の基本構成を示す図である。
【図2】各ラウンドを構成するラウンド関数部の構成を示す図である。
【図3】F関数の構成を示す図である。
【図4】ラウンドフローの構成を説明する図である。
【図5】F関数部の処理について説明する図である。
【図6】F関数部の処理の具体例について説明する図である。
【図7】DFA攻撃について説明する図である。
【図8】DFA攻撃がなされた場合のF関数部の処理の具体例について説明する図である。
【図9】一般的なDES暗号処理構成を説明する図である。
【図10】本発明の一実施例(構成例1)に係る暗号処理構成を説明する図である。
【図11】本発明の一実施例(構成例2)に係る暗号処理構成を説明する図である。
【図12】本発明の一実施例(構成例3)に係る暗号処理構成を説明する図である。
【図13】本発明の一実施例(構成例3)に係る暗号処理構成におけるF関数部の処理について説明する図である。
【図14】本発明の一実施例(構成例3)に係る暗号処理構成におけるF関数部の処理の具体例について説明する図である。
【図15】本発明の構成が適用可能な暗号処理実行デバイスとしてのICモジュールの構成例を示す図である。
【符号の説明】
【0119】
110 ラウンド関数部
111 初期置換部
112,113 変換部
114 逆置換部
120 鍵スケジュール部
121 マスター鍵(秘密鍵)置換部
122,123 鍵生成部
171 拡張部
172 置換部
181 Sボックス
201,202 レジスタ
221〜223 レジスタ
301 初期置換部
302 逆置換部
310 ラウンド関数部
311 Lレジスタ
312 Rレジスタ
313 F関数部
314 排他論理和演算(XOR)部
401 初期置換部
402 逆置換部
410 ラウンド関数部
411 Lレジスタ
412 Rレジスタ
413 F関数部
414 排他論理和演算(XOR)部
421,431 エラー訂正コード生成回路(ECC回路)
422,432 ECCコードレジスタ
423,433 エラー訂正回路(Syndrome生成回路)
501 初期置換部
502 逆置換部
510 ラウンド関数部
511 Lレジスタ
512 Rレジスタ
513 F関数部
514 排他論理和演算(XOR)部
521,531 パリティ生成回路
522,532 パリティ情報格納用レジスタ
523,533 パリティチェック回路
601 初期置換部
602 逆置換部
610 ラウンド関数部
611 Lレジスタ
612 Rレジスタ
613 F関数部
614 排他論理和演算(XOR)部
621,631 パリティ生成回路
622,632 パリティ情報格納用レジスタ
623,633 パリティチェック回路
651 スイッチ
652 排他論理和演算部
671 レジスタR格納値
672 ラウンド鍵
673 変換用データ
700 ICモジュール
701 CPU(Central processing Unit)
702 メモリ
703 暗号処理部
704 乱数発生器
705 送受信部
706 クロック

【特許請求の範囲】
【請求項1】
複数回のラウンド演算の繰り返し処理を含む暗号処理演算を実行する暗号処理装置であり、
ラウンド演算を実行するラウンド演算実行部と、
各ラウンドのラウンド演算結果を格納するレジスタと、
前記レジスタに対する格納データに対応するエラー訂正情報またはエラー検出情報を生成するエラー検証データ生成部と、
前記エラー検証データ生成部の生成したエラー検証データを格納するエラー検証データ格納部と、
前記エラー検証データ格納部に格納されたエラー検証データに基づいて、前記レジスタ格納データのエラー検出またはエラー訂正を実行するエラー検証部とを有し、
前記ラウンド演算実行部は、
前記エラー検証部におけるエラー検出の有無に応じて異なる態様でのデータ処理を実行する構成を有することを特徴とする暗号処理装置。
【請求項2】
前記エラー検証データ生成部は、エラー訂正コード生成回路であり、
前記エラー検証部は、
前記エラー検証データ格納部に格納されたエラー訂正コードに基づいて、前記レジスタ格納データのエラー訂正を実行する構成を有し、
前記ラウンド演算実行部は、
前記エラー検証部においてエラーが検出されない場合は、前記レジスタに格納されたデータに基づくラウンド演算を実行し、
前記エラー検証部においてエラーが検出された場合は、前記レジスタに格納されたデータに対するエラー訂正コードに基づくエラー訂正後のデータに基づくラウンド演算を実行する構成であることを特徴とする請求項1に記載の暗号処理装置。
【請求項3】
前記エラー検証データ生成部は、エラー検出データ生成回路であり、
前記エラー検証部は、
前記エラー検証データ格納部に格納されたエラー検出データに基づいて、前記レジスタ格納データのエラーの有無を判定する構成を有し、
前記ラウンド演算実行部は、
前記エラー検証部においてエラーが検出されない場合は、前記レジスタに格納されたデータに基づくラウンド演算を実行し、
前記エラー検証部においてエラーが検出された場合は、ラウンド演算を停止する処理を実行する構成であることを特徴とする請求項1に記載の暗号処理装置。
【請求項4】
前記エラー検証データ生成部は、エラー検出データ生成回路であり、
前記エラー検証部は、
前記エラー検証データ格納部に格納されたエラー検出データに基づいて、前記レジスタ格納データのエラーの有無を判定する構成を有し、
前記ラウンド演算実行部は、
前記エラー検証部においてエラーが検出されない場合は、前記レジスタに格納されたデータに基づくラウンド演算を実行し、
前記エラー検証部においてエラーが検出された場合は、前記レジスタに格納されたデータを変更したデータに基づくラウンド演算を実行する構成であることを特徴とする請求項1に記載の暗号処理装置。
【請求項5】
前記ラウンド演算実行部は、
前記エラー検証部においてエラーが検出された場合は、
前記ラウンド演算実行部を構成するF関数実行部において、固定または乱数に基づく変換用データを適用してSボックスに対する入力データを変更する処理を実行する構成であることを特徴とする請求項4に記載の暗号処理装置。
【請求項6】
前記エラー検証データ生成部は、
前記ラウンド演算実行部内のF関数部に設定されたSボックスのデータ入力単位としての4ビット単位でのパリティを生成する回路であり、
前記エラー検証部は、
前記エラー検証データ格納部に格納された4ビット単位のパリティに基づいて、前記レジスタ格納データについて、4ビット単位でのエラーの有無を判定する構成を有し、
前記ラウンド演算実行部は、
前記エラー検証部においてエラーが検出された場合、
前記ラウンド演算実行部を構成するF関数実行部において、エラーの検出された4ビットに対応して生成されるSボックス入力値を、固定または乱数に基づく変換用データを適用して変更する処理を実行する構成であることを特徴とする請求項5に記載の暗号処理装置。
【請求項7】
前記ラウンド演算部は、非線形変換部としてのSボックスを有し、
前記レジスタは、前記Sボックスによる非線形変換処理を含むラウンド演算処理の結果データを格納する構成であることを特徴とする請求項1に記載の暗号処理装置。
【請求項8】
前記暗号処理装置は、
DES(Data Encryption Standard)アルゴリズムに従った暗号処理演算を実行する構成であることを特徴とする請求項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

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate


【公開番号】特開2007−174024(P2007−174024A)
【公開日】平成19年7月5日(2007.7.5)
【国際特許分類】
【出願番号】特願2005−365870(P2005−365870)
【出願日】平成17年12月20日(2005.12.20)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】