(57)【要約】【課題】ＤＦＡ攻撃を困難にする暗号処理システムおよび暗号処理装置を提供する。【解決手段】暗号演算を行う暗号エンジン１４０と、状態を示す値を書き換え可能な領域１４１を少なくとも一つ含むメモリ１４０と、暗号処理の制御を行いメモリの領域１４１へのアクセスが可能な制御部１１０と、を有し、暗号エンジン１５０は、ＤＦＡ(Differential Fault Analysis）攻撃が行われたことを検出可能なＤＦＡ検出部１５１を有し、ＤＦＡ検出部でＤＦＡ攻撃が検出されると、検出したことを示す信号を制御部１１０に出力し、制御部１１０は、起動後に、メモリの領域１４１の値を読み、値があらかじめ設定された初期の許容値の場合には通常の暗号処理動作を行い、許容値と異なる値の場合には異なる値を許容値に近い値に書き換え、通常動作での暗号演算中に、ＤＦＡ攻撃の検出信号を受けると、メモリの領域１４１に許容値と異なる値を書き込み、システムをリセットする。【選択図】図７
2007325219.tif 000002
【特許請求の範囲】
【請求項１】
暗号演算を行う暗号エンジンと、
状態を示す値を書き換え可能な領域を少なくとも一つ含むメモリと、
暗号処理の制御を行い、上記メモリの上記領域へのアクセスが可能な制御部と、を有し、
上記暗号エンジンは、
ＤＦＡ(Differential Fault Analysis）攻撃が行われたことを検出可能なＤＦＡ検出部を有し、上記ＤＦＡ検出部でＤＦＡ攻撃が検出されると、検出したことを示す信号を上記制御部に出力し、
上記制御部は、
起動後に、上記メモリの領域の値を読み、当該値があらかじめ設定された初期の許容値の場合には通常の暗号処理動作を行い、上記許容値と異なる値の場合には当該異なる値を上記許容値に近い値に書き換え、通常動作での暗号演算中に、ＤＦＡ攻撃の検出信号を受けると、上記メモリの領域に上記許容値と異なる値を書き込む
暗号処理システム。
【請求項２】
上記制御部は、上記検出信号に応答して上記メモリの領域に上記許容値と異なる値を書き込んだ後、システムをリセットする
請求項１記載の暗号処理システム。
【請求項３】
上記制御部は、上記許容値と異なる値を上記許容値に近い値に書き換えた場合、上記暗号エンジンが暗号演算を行わないように制御する
請求項１記載の暗号処理システム。
【請求項４】
上記メモリは第１領域および第２領域を含み、
上記制御部は、
起動後に、上記メモリの第１領域の値を読み、当該第１領域の値があらかじめ設定された初期の許容値の場合には通常の暗号処理動作を行い、通常動作での暗号演算中に、ＤＦＡ攻撃の検出信号を受けると、上記メモリの第２領域の値を読み、当該第２領域の値が上記許容値の場合には、当該許容値と異なる第１の値を上記第１領域および上記第２領域に書き込み、当該許容値と異なる値の場合には第１の値より当該許容値から離れる第２の値を上記第１領域および上記第２領域に書き込む
請求項２記載の暗号処理システム。
【請求項５】
上記ＤＦＡ検出部は、パリティチェックによるエラー検出を行い、パリティエラーを検出すると、検出信号を上記制御部に出力する
請求項１記載の暗号処理システム。
【請求項６】
上記暗号エンジンは、ラウンド関数の繰り返し処理を含む暗号処理演算を実行する暗号処理装置であって、
ラウンド演算用データを格納する演算レジスタと、
パリティデータを格納するパリティレジスタと、
上記演算レジスタに入力されるラウンド演算用データによりパリティデータを生成し、ラウンド演算用データを上記演算レジスタに出力し、パリティデータを上記パリティレジスタに出力するパリティ生成器と、
上記演算レジスタと上記パリティレジスタの格納データに基づいてパリティチェックを行い、パリティエラーを検出すると上記検出信号を上記制御部に出力するパリティチェック回路と、を含む
請求項５記載の暗号処理システム。
【請求項７】
上記暗号エンジンは、ラウンド関数の繰り返し処理を含む暗号処理演算を実行する暗号処理装置であって、
ラウンド演算用第１データを格納する第１演算レジスタと、
第１パリティデータを格納する第１パリティレジスタと、
ラウンド演算用第２データを格納する第２演算レジスタと、
第２パリティデータを格納する第２パリティレジスタと、
上記第１演算レジスタに入力される第１データにより上記第１パリティデータを生成し、上記第１データを上記第１演算レジスタに出力し、上記第１パリティデータを上記第１パリティレジスタに出力する第１パリティ生成器と、
上記第２演算レジスタに入力される第２データにより上記第２パリティデータを生成し、上記第２データを上記第２演算レジスタに出力し、上記第２パリティデータを上記第２パリティレジスタに出力する第２パリティ生成器と、
上記第１演算レジスタと上記第１パリティレジスタの格納データに基づいてパリティチェックを行い、パリティエラーを検出すると上記検出信号を上記制御部に出力する第１パリティチェック回路と、
上記第２演算レジスタと上記第２パリティレジスタの格納データに基づいてパリティチェックを行い、パリティエラーを検出すると上記検出信号を上記制御部に出力する第２パリティチェック回路と、
上記第１演算レジスタに格納された第１データと上記第２演算レジスタに格納された第２データに応じたラウンド演算を行うラウンド演算部と、を含む
請求項５記載の暗号処理システム。
【請求項８】
ラウンド関数の繰り返し処理を含む暗号処理演算を実行する暗号処理装置であって、
ラウンド演算用データを格納する演算レジスタと、
パリティデータを格納するパリティレジスタと、
上記演算レジスタに入力されるラウンド演算用データによりパリティデータを生成し、ラウンド演算用データを上記演算レジスタに出力し、パリティデータを上記パリティレジスタに出力するパリティ生成器と、
上記演算レジスタと上記パリティレジスタの格納データに基づいてパリティチェックを行い、パリティエラーを検出すると上記検出信号を上記制御部に出力するパリティチェック回路と、
を有する暗号処理装置。
【請求項９】
ラウンド関数の繰り返し処理を含む暗号処理演算を実行する暗号処理装置であって、
ラウンド演算用第１データを格納する第１演算レジスタと、
第１パリティデータを格納する第１パリティレジスタと、
ラウンド演算用第２データを格納する第２演算レジスタと、
第２パリティデータを格納する第２パリティレジスタと、
上記第１演算レジスタに入力される第１データにより上記第１パリティデータを生成し、上記第１データを上記第１演算レジスタに出力し、上記第１パリティデータを上記第１パリティレジスタに出力する第１パリティ生成器と、
上記第２演算レジスタに入力される第２データにより上記第２パリティデータを生成し、上記第２データを上記第２演算レジスタに出力し、上記第２パリティデータを上記第２パリティレジスタに出力する第２パリティ生成器と、
上記第１演算レジスタと上記第１パリティレジスタの格納データに基づいてパリティチェックを行い、パリティエラーを検出すると上記検出信号を上記制御部に出力する第１パリティチェック回路と、
上記第２演算レジスタと上記第２パリティレジスタの格納データに基づいてパリティチェックを行い、パリティエラーを検出すると上記検出信号を上記制御部に出力する第２パリティチェック回路と、
上記第１演算レジスタに格納された第１データと上記第２演算レジスタに格納された第２データに応じたラウンド演算を行うラウンド演算部と、
を有する暗号処理装置。
【請求項１０】
前記ラウンド演算部は、非線形変換部としてのＳボックスを有し、
前記第１演算レジスタおよび第２演算レジスタは、前記Ｓボックスによる非線形変換処理を含むラウンド演算処理の結果データを格納する
請求項９記載の暗号処理装置。
【請求項１１】
前記暗号処理装置は、
ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）アルゴリズムに従った暗号処理演算を実行する
請求項８から１０のいずれか一に記載の暗号処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号処理システムおよび暗号処理装置に関し、さらに詳細には、暗号解析処理、攻撃処理として知られる故障差分解析（ＤＦＡ：Differential Fault Analysis）に対する耐性を向上させた暗号処理システムおよび暗号処理装置に関するものである。
【背景技術】
【０００２】
昨今、ＩＣカード、ネットワーク通信、電子商取引などの発展に伴い、ＩＣカードを利用したデータ送受信やネットワークを介した通信におけるセキュリティ確保が重要な課題となっている。セキュリティ確保の１つの方法が暗号技術であり、現在、様々な暗号化手法を用いた通信が実際に行われている。
【０００３】
例えばＩＣカード等の小型の装置中に暗号処理モジュールを埋め込み、ＩＣカードと、データ読み取り書き込み装置としてのリーダライタとの間でデータ送受信を行い、認証処理、あるいは送受信データの暗号化、復号化を行うシステムが実用化されている。
【０００４】
ＩＣカードでは、例えばリーダライタやホストコンピュータとデータのやり取りを行う時、その過程でＩＣカードに格納されている秘密情報が漏れても問題を発生させないために、送受信データは暗号化される。
【０００５】
この暗号化方法として多く用いられている方式の１つとしてＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）がある。
ＤＥＳは、代表的な共通鍵暗号方式のアルゴリズムであり、例えばデータ送受信者としてのＩＣカードとホストコンピュータが同じ鍵を所有し、データの送信側はデータをその鍵で暗号化して送信し、データの受信者は同じ鍵で復号化してメッセージを取り出す。
【０００６】
通信の過程で悪意の第三者が盗聴しても、鍵を有していない限り復号化してメッセージを取り出すことは困難である。
また、暗号化・復号化の時に使う鍵は、ＩＣカード内のＥＥＰＲＯＭ等の不揮発性メモリに格納され、暗号化・復号化時にはＣＰＵを介さないで直接ＩＣカード内の暗号エンジンに転送される様な制御により、ＩＣカードの所有者やＩＣカードの開発エンジニアすら鍵データを取り出すことが不可能な構成を採ってセキュリティを保持している。
【０００７】
図１はＤＥＳ演算回路の一般的な構成を示す図であり、図２はＦ関数部の構成例を示す図である。
【０００８】
このＤＥＳ演算回路１０は、図１に示すように、初期置換部［ＩＰ（Initial Permutation）］１１、スイッチ（ＳＷ１）１２、左レジスタ（Ｌレジスタという）１３、右レジスタ（Ｒレジスタ）１４、Ｆ関数部１５、ＥＸＯＲ演算部１６、スイッチ（ＳＷ２）１７、逆置換部（ＩＰ-1）１８、および暗号文出力部(Crypto)１９を有する。
【０００９】
スイッチ（ＳＷ１）１２は、Ｌレジスタ側スイッチ１２ＬとＲレジスタ側スイッチ１２Ｒとを含む。同様に、スイッチ（ＳＷ２）１７は、Ｌレジスタ側スイッチ１７ＬとＲレジスタ側スイッチ１７Ｒとを含む。
スイッチ１２Ｌの作動接点ａは初期置換部１１の出力に接続され、作動接点ｂはＲレジスタ１４の出力およびスイッチ１７Ｌの作動接点ａに接続され、固定接点ｃがＬレジスタ１３の入力に接続されている。
スイッチ１２Ｒの作動接点ａは初期置換部１１の出力に接続され、作動接点ｂはＥＸＯＲ演算部１６の出力およびスイッチ１７Ｒの作動接点ａに接続され、固定接点ｃがＲレジスタ１４の入力に接続されている。
また、スイッチ１７Ｌ，１７Ｒの固定接点ｃが逆置換部（ＩＰ-1）１８の入力に接続されている。
【００１０】
図１のＤＥＳ演算回路１０において、スイッチ（ＳＷ１）１２Ｌ，１２Ｒは、ＤＥＳ演算開始時には固定接点ｃが作動接点"ａ"側に接続されている。
ＤＥＳ演算が開始されると、平文を初期置換部１１においてＩＰ置換後、２つの３２ビットデータＬ0，Ｒ0に分けられ、制御クロックに基づく制御タイミングとしてのラッチパルス(Latch Pulse）の立ち上がりでＬレジスタ１３およびＲレジスタ１４へ取り込まれる。これと並行してスイッチ１２Ｌ，１２Ｒにおいて、固定接点ｃの接続を作動接点"ｂ"側に切り替える。
【００１１】
このデータ取り込みによってＬレジスタ１３およびＲレジスタ１４の出力が“Ｌ0”,“Ｒ0”になり、その後、これらのレジスタ格納値に基づいて、Ｆ関数部１５とＥＸＯＲ演算部１６を適用したラウンド(Round)演算が実行され、その結果が再度、スイッチ（ＳＷ）１２Ｌ，１２Ｒを介してＬレジスタ１３およびＲレジスタ１４の入力に供給される。
【００１２】
さらに、次のクロックサイクルのラッチパルスの立ち上がりでＬレジスタ１３およびＲレジスタ１４へ取り込まれ、その出力が更新されることにより次のラウンドの演算が開始される。
この動作を１６クロックサイクル繰り返した後、スイッチ１７を通して演算結果を逆置換部（ＩＰ-1）１８へ出力して逆置換変換を実行し、暗号文として出力する。
【００１３】
Ｆ関数部１５は、図２に示すように、非線形処理を実行する複数（図２では８）のＳボックス（Ｓｂｏｘ）Ｓ1〜Ｓ8を有する。前段からの入力値Ｆ−ｉｎ、すなわち、Ｒ（ｎ−１）は拡張部(ＥＸ)１５１によって４８ビットに拡大され、さらに鍵スケジュール部から入力する鍵（４８ビット）ＫｎとＥＸＯＲ演算部１５２でＥＸＯＲ演算が実行され、その出力が６ビットずつ非線形変換処理を実行する複数のＳボックスＳ1〜Ｓ8に入力される。各ＳボックスＳ1〜Ｓ8では、変換テーブルを適用した６ビットから４ビットへの非線形変換処理が実行される。
ＳボックスＳ1〜Ｓ8からの出力ビット４×８＝３２ビットは、置換部（Ｐ）１５３に入力されて、ビット位置の入れ替え処理がなされ、Ｆ関数出力３２ビットを生成して出力する。
【００１４】
しかし、ＩＣカードの消費電流を測定し、それに統計処理を施して鍵を取り出す電力差分解析（ＤＰＡ：Differential Power Analysis）という攻撃方法や、暗号演算実行中に動作環境を変化させて演算過程で誤動作を起こさせて、その演算結果と正常動作の演算結果との差分を採って、それを解析することにより鍵を取り出す故障差分解析（ＤＦＡ：Differential Fault Analysis）という攻撃方法等の脅威が報告されている。
【００１５】
ＤＦＡ攻撃は、たとえばモールドを除去したＩＣに暗号演算を実行させている時に、レジスタ（Register）等にレーザ（Laser）光を照射して保持データの値を変化させ、誤った結果を出力させて、その値を解析することにより鍵を取り出す。
【００１６】
以下、ＤＦＡ攻撃について図面に関連付けてさらに説明する。
図３はＤＥＳの演算フローを示す図であり、図４（Ａ）〜（Ｅ）は図２のＦ関数部の演算例を示す図であり、図５はラウンド１６の場合のＤＦＡ攻撃の例を示す図であり、図６はＤＦＡ攻撃を受けたときのＦ関数の演算例を示す図である。
【００１７】
通常演算では、１６ラウンド終了後のＬレジスタ１３およびＲレジスタ１４の値は、図３並びに次の（１）式、（２）式に示すようになり、その後に逆置換（ＩＰ−１）変換を行って出力される。
【００１８】
【数１】
2007325219.tif 000003
【００１９】
（２）式に（１）式を代入すると、下記のようになる。
【００２０】
【数２】
2007325219.tif 000004
【００２１】
この式で、“Ｒ１６”，“Ｌ１６”は、演算結果を逆置換（ＩＰ−１）の逆変換を行うことにより容易に求めることができ、またＦ関数は図２に示すような構成で、図４（Ａ）〜（Ｅ）に示すようなＦ関数内での演算が行われる。
【００２２】
ここで、たとえばＤＥＳの１６ラウンド目を実行中に、レーザ光照射等でＲ１５レジスタの１ビットを反転させた場合、１６ラウンド目が終了した時点でのＬレジスタ１３およびＲレジスタ１４の値は、図５並びに次の（４）式、（５）式に示すようになり、その後に逆置換（ＩＰ−１）変換を行って出力される。
【００２３】
【数３】
2007325219.tif 000005
【００２４】
（５）式に（４）式を代入すると、下記のようになる。
【００２５】
【数４】
2007325219.tif 000006
【００２６】
この式で、“Ｒ１６”，“Ｌ１６”は、演算結果を逆置換（ＩＰ−１）の逆変換を行うことにより容易に求めることができる。そして、（１）式と（４）式を比較することにより、レーザ光照射で変化したビットの位置を特定することができる。
たとえば、Ｒ１５レジスタのビット２がレーザ光照射によって“０”から“１”に反転した場合、次の演算を実行することにより、Ｒ１５レジスタのビット２が変化したことを知ることができる。
【００２７】
【数５】
2007325219.tif 000007
【００２８】
一方、（３）式と（６）式を各々ＥＸＯＲ演算することにより、次のようになる。
【００２９】
【数６】
2007325219.tif 000008
【００３０】
さらに、（８）式の両辺をＦ関数内のＰ置換の逆置換（Ｐ−１）を実施すると、次のようになる。
【００３１】
【数７】
2007325219.tif 000009
【００３２】
この式で、“Ｒ１６”，“Ｒ１６’”，“Ｌ１６”，“Ｌ１６’”は、暗号の演算結果から容易に求めることができる値であり、Ｆ関数も公開されていて既知の関数であるため、未知の数値は“Ｋ１６”のみである。この例の場合、（７）式よりＲ１５レジスタのビット２が変化したことが判明しているため、（８）式の値（（３）式と（６）式の差異）は８個のＳ-box のうち、“Ｓ1”の出力の差異に起因している。
したがって、ラウンド１６の鍵のうち、“Ｓ１”の入力となる 6bit を“00 (16)”〜“3f(16)”まで変化させて（９）式を満たす値を求めると、
“03(16)”，“07(16)”，“19(16)”，“1d(16)”，“28(16)”，“2c(16)”，“31(16)”，“36(16)”，“3a(16)”，“3e(16)”
が求まる。
【００３３】
次に、たとえば、Ｒ１５レジスタのビット３を“１”から“０”に反転させた場合、（７）式は、次のようになる。
【００３４】
【数８】
2007325219.tif 000010
【００３５】
そして、（９）式は以下の通りになる。
【００３６】
【数９】
2007325219.tif 000011
【００３７】
この式で、“Ｒ１６”  ”，“Ｌ１６”  ”は、（７）式・（９）式の“ “Ｒ１６’”，“Ｌ１６’”とは異なる値である。
ラウンド１６の鍵のうち、“Ｓ１”の入力となる６ビットを“00(16)”〜“3f(16)”まで変化させて（１１）式を満たす値を求めると、
“34(16)”，“36(16)”，“3d(16)”，“3f(16)”
が求まり、（９）式から導かれた６ビット鍵の候補と比較して、共通するのは“36(16)”のみであり、“Ｓ１”の入力に対応するラウンド１６の６ビット鍵の値は“36(16)”と求まる。
【００３８】
同様にして、“Ｓ２”〜“Ｓ８”の入力に対応するラウンド１６の６ビット鍵の値を求めることが可能で、これらのＤＦＡ攻撃により、５６ビットの鍵のうち、４８ビットは求めることができ、残り８ビットは２8＝256回の全数攻撃で容易に求めることができる。
【００３９】
この攻撃に対する対抗する技術が特許文献１に提案されている。
この特許文献１に開示された技術では、
１）平文の暗号化演算を実行後に、演算結果を再び復号化演算し、演算結果が平文と一致した場合に暗号演算結果を正しい演算結果として出力する。一致しない場合、ＣＰＵに対してエラーの発生を知らせ、暗号演算処理を終了する、
２)平文を複数の暗号演算回路で演算し、結果が一致した場合のみ演算結果を正しい演算結果として出力する。一致しない場合、ＣＰＵに対してエラーの発生を知らせ、暗号演算処理を終了する、
という処理を行って、ＤＦＡ攻撃に対処している。
【００４０】
ＣＰＵは、ＤＥＳ回路からエラーが発行された場合、システムをリセットしてもう一度最初からの動作を要求することにより不正な攻撃に対して対抗する。
【特許文献１】特開平１０−１５４９７６号公報
【発明の開示】
【発明が解決しようとする課題】
【００４１】
しかし、上記１）の場合、暗号化と復号化のフローの同じラウンド（Round）で、同じレジスタの同じビットにレーザ光をうまく照射できれば、復号化した値と元々の平文の値は一致し、攻撃はなかったものとしてＤＦＡ攻撃された暗号文を出力してしまう。
【００４２】
また、上記２）の場合、技術的には高度であるが、複数のレーザを配置し、同じラウンドで各々のレジスタの同じビットを照射すれば、全てのＤＥＳ回路の出力は一致し、ＤＦＡ攻撃された暗号文を出力してしまう。
【００４３】
通常は、回路の上を多くの信号配線が形成されていて（走っていて）、さらに暗号装置の上部には意図的にアルミニウム（Al）パターンを密に（びっしり）配置して下部の回路を見えにくくしたり、アクティブシールド（Active Shield）の技術を用いて最上層のAl層全面に配線パターンを配置し、その配線の断線やショートを検知する信号を流すことにより下部の回路へのレーザ光の照射が極めて困難な対策が採られる。
このため、ＤＦＡ攻撃で狙ったレジスタにレーザ光を照射するには技術が必要であるが、ＤＦＡ攻撃の脅威な点は、一度でも狙ったレジスタビットに狙ったラウンド（Round）でうまく照射できれば、その出力の解析から少なくとも６ビットの鍵データが取出せる点である。
また、攻撃者が開封したＩＣをステージに置き、レーザ光を照射しては少しずつ照射タイミングをずらしたり、ステージを少しずつ移動させて照射位置を変えてＤＦＡ攻撃を自動的に行い、その結果を解析する装置を開発すれば、いずれは鍵の取り出しが実現される可能性は高い。
【００４４】
本発明は、自動化された装置によるＤＦＡ攻撃を困難にする暗号処理システムおよび暗号処理装置を提供することにある。
【課題を解決するための手段】
【００４５】
本発明の第１の観点の暗号処理システムは、暗号演算を行う暗号エンジンと、状態を示す値を書き換え可能な領域を少なくとも一つ含むメモリと、暗号処理の制御を行い、上記メモリの上記領域へのアクセスが可能な制御部と、を有し、上記暗号エンジンは、ＤＦＡ(Differential Fault Analysis）攻撃が行われたことを検出可能なＤＦＡ検出部を有し、上記ＤＦＡ検出部でＤＦＡ攻撃が検出されると、検出したことを示す信号を上記制御部に出力し、上記制御部は、起動後に、上記メモリの領域の値を読み、当該値があらかじめ設定された初期の許容値の場合には通常の暗号処理動作を行い、上記許容値と異なる値の場合には当該異なる値を上記許容値に近い値に書き換え、通常動作での暗号演算中に、ＤＦＡ攻撃の検出信号を受けると、上記メモリの領域に上記許容値と異なる値を書き込む。
【００４６】
本発明の第２の観点は、ラウンド関数の繰り返し処理を含む暗号処理演算を実行する暗号処理装置であって、ラウンド演算用データを格納する演算レジスタと、パリティデータを格納するパリティレジスタと、上記演算レジスタに入力されるラウンド演算用データによりパリティデータを生成し、ラウンド演算用データを上記演算レジスタに出力し、パリティデータを上記パリティレジスタに出力するパリティ生成器と、上記演算レジスタと上記パリティレジスタの格納データに基づいてパリティチェックを行い、パリティエラーを検出すると上記検出信号を上記制御部に出力するパリティチェック回路と、を有する。
【００４７】
本発明の第３の観点は、ラウンド関数の繰り返し処理を含む暗号処理演算を実行する暗号処理装置であって、ラウンド演算用第１データを格納する第１演算レジスタと、第１パリティデータを格納する第１パリティレジスタと、ラウンド演算用第２データを格納する第２演算レジスタと、第２パリティデータを格納する第２パリティレジスタと、上記第１演算レジスタに入力される第１データにより上記第１パリティデータを生成し、上記第１データを上記第１演算レジスタに出力し、上記第１パリティデータを上記第１パリティレジスタに出力する第１パリティ生成器と、上記第２演算レジスタに入力される第２データにより上記第２パリティデータを生成し、上記第２データを上記第２演算レジスタに出力し、上記第２パリティデータを上記第２パリティレジスタに出力する第２パリティ生成器と、上記第１演算レジスタと上記第１パリティレジスタの格納データに基づいてパリティチェックを行い、パリティエラーを検出すると上記検出信号を上記制御部に出力する第１パリティチェック回路と、上記第２演算レジスタと上記第２パリティレジスタの格納データに基づいてパリティチェックを行い、パリティエラーを検出すると上記検出信号を上記制御部に出力する第２パリティチェック回路と、上記第１演算レジスタに格納された第１データと上記第２演算レジスタに格納された第２データに応じたラウンド演算を行うラウンド演算部と、を有する。
【発明の効果】
【００４８】
本発明によれば、ＤＦＡ攻撃が検出される度に、システムリセット後にＤＦＡ攻撃できない状況が発生し、ＤＦＡ攻撃で鍵を取出される危険性が減少するという利点がある。
【発明を実施するための最良の形態】
【００４９】
以下、本発明の実施形態を図面に関連付けて説明する。
【００５０】
＜第１実施形態＞
図７は、本発明の第１の実施形態に係る暗号処理システムの構成例を示すブロック図である。
【００５１】
本暗号処理システム１００は、暗号処理装置としてのＤＥＳ演算回路には所定のＤＦＡ検出回路を搭載しており、不揮発性メモリ上に値を格納する領域（数バイト）を持ち、その初期値は共に０とする。
システム１００は、起動後に上記領域の値を読み、０ならば通常動作を行う。０より大きい値であれば、その値を−１した値を書き戻して通常動作を行わず、通常動作での暗号演算中にＤＦＡ検出回路がＤＦＡ攻撃を検知した場合、領域にある値を書込み、システムをリセットする機能を有する。
【００５２】
本暗号処理システム１００は、図７に示すように、制御部としてのＣＰＵ(Central processing Unit)１１０、ＲＯＭ（Read-Only-Memory）１２０、ＲＡＭ（Random Access Memory）１３０、不発性メモリ１４０、暗号エンジン（暗号処理装置、ＤＥＳ演算回路）１５０、および周辺機器（Peripheral）１６０がデータバス１７０で接続されている。
【００５３】
本暗号処理システム１００は、ＤＦＡ対策の施されている暗号モジュールを含むシステムにおいて、暗号演算実行中にＤＦＡ攻撃が検知された場合、ＣＰＵ１１０に対してリセット信号が発行され、ＣＰＵ１１０では不揮発性メモリ上のある値を増加させた後にシステムをリセットするフローを投入する。
ＣＰＵ１１０は、通常使用時には、電源投入時に不揮発性メモリ１４０上のある値をチェックし、あらかじめ設定した許容値“０”でなければその値を許容値に近づくように−１した値を書き込み、電源オフされるまでの期間、暗号演算は実行しない制御を行う。これにより、ＤＦＡ攻撃を困難にする。
【００５４】
また、ＣＰＵ１１０は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、さらに上述した各スイッチの切り替え制御、その他の各種プログラムを実行するプロセッサとしての機能を有している。
【００５５】
ＲＯＭ１２０は、ＣＰＵ１１０が実行するプログラム、あるいは演算パラメータとしての固定データを格納する。
【００５６】
ＲＡＭ１３０は、ＣＰＵ１１０の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用される。
【００５７】
不揮発性メモリ１４０は、たとえばＥＥＰＲＯＭにより形成され、所定の状態チェック値を格納する数バイトの領域（領域１）１４１を有する。領域１４１は製品出荷時にその初期値は許容値０に設定される。
不揮発性メモリ１４０の領域１４１は、起動後にＣＰＵ１１０によりその値が読み出され、その値が０ならば通常動作が行われる。領域１４１の値が０より大きい値であれば、ＣＰＵ１１０によりその値が−１された値が書き戻されて通常動作は行われない。
【００５８】
なお、ＲＡＭ１３０や不揮発性メモリ１４０は、暗号処理に必要な鍵データ等の格納領域として使用可能である。
【００５９】
暗号エンジン１５０は、たとえばＤＥＳアルゴリズムなど複数段のラウンド関数の繰り返し処理を含む暗号アルゴリズムを実行する暗号処理装置であり、図８のＤＥＳ演算回路２００が適用される。
暗号エンジン１５０は、たとえばパリティチェック回路系で構成されるＤＦＡ検出回路１５１を有しており、このＤＦＡ検出回路１５１でパリティエラーを検出すると、リセット信号ＲＳＴ（−Ｌ、−Ｒ）を生成しＣＰＵ１１０に転送する。
【００６０】
図８は、本発明の実施形態に係る暗号処理装置としてのＤＥＳ演算回路の構成例を示す図である。
【００６１】
本ＤＥＳ演算回路２００は、初期置換部［ＩＰ（Initial Permutation）］２０１、スイッチ（ＳＷ１）２０２、左側パリティ生成器（第１パリティ生成器）２０３、右側パリティ生成器（第２パリティ生成器）２０４、左側レジスタ（Ｌレジスタ、第１演算レジスタ）２０５、左側パリティレジスタ（ＰＬレジスタ、第１パリティレジスタ）２０６、右側レジスタ（Ｒレジスタ、第２演算レジスタ）２０７、右側パリティレジスタ（ＰＲレジスタ、第２パリティレジスタ）２０８、左側パリティチェック回路（第１パリティチェック回路）２０９、右側パリティチェック回路（第２パリティチェック回路）２１０、Ｆ関数部２１１、ＥＸＯＲ演算部２１２、スイッチ（ＳＷ２）２１３、および逆置換部（ＩＰ-1）２１４を有する。
【００６２】
スイッチ（ＳＷ１）２０２は、Ｌレジスタ側スイッチ２０２ＬとＲレジスタ側スイッチ２０２Ｒとを含む。
スイッチ２０２Ｌの作動接点ａは初期置換部２０１の出力に接続され、作動接点ｂはＲレジスタ２０７の出力およびスイッチ（ＳＷ２）２１３に接続され、固定接点ｃがパリティ生成器２０３の入力に接続されている。
スイッチ２０２Ｒの作動接点ａは初期置換部２０１の出力に接続され、作動接点ｂはＥＸＯＲ演算部２１２の出力およびスイッチ（ＳＷ２）２１３に接続され、固定接点ｃがパリティ生成器２０４の入力に接続されている。
スイッチ２０２Ｌ、２０２Ｒの切り替え制御は、たとえば図示していないタイミング発生回路により行われる。
【００６３】
パリティ生成器２０４は、スイッチ２０２Ｒを介して入力するデータに基づいてたとえば１ビットのパリティを生成し、データをＲレジスタ２０７に供給し、生成したパリティビットをＰＲレジスタ２０８に供給する。
【００６４】
パリティ生成器２０４は、スイッチ２０２Ｒを介して入力するデータに基づいてたとえば１ビットのパリティを生成し、データをＲレジスタ２０７に供給し、生成したパリティビットをＰＲレジスタ２０８に供給する。
【００６５】
Ｌレジスタ（第１演算レジスタ）２０５は、たとえばデータの取り込み信号としてのラッチパルスに同期してパリティ生成器２０３から供給されたデータをラッチ（格納）する。Ｌレジスタ２０５のラッチデータはパリティチェック回路２０９およびＥＸＯＲ演算部２１２の一方の入力に供給される。
【００６６】
ＰＬレジスタ（第１パリティレジスタ）２０６は、たとえばラッチパルスに同期してパリティ生成器２０３から供給されたパリティデータをラッチ（格納）する。ＰＬレジスタ２０６のラッチパリティデータはパリティチェック回路２０９に供給される。
【００６７】
Ｒレジスタ（第２演算レジスタ）２０７は、たとえばデータの取り込み信号としてのラッチパルスに同期してパリティ生成器２０４から供給されたデータをラッチ（格納）する。Ｒレジスタ２０７のラッチデータはパリティチェック回路２１０、Ｆ関数部２１１の入力、およびスイッチ２１３に供給される。
【００６８】
ＰＲレジスタ（第２パリティレジスタ）２０８は、たとえばラッチパルスに同期してパリティ生成器２０４から供給されたパリティデータをラッチ（格納）する。ＰＲレジスタ２０８のラッチパリティデータはパリティチェック回路２１０に供給される。
【００６９】
第１パリティチェック回路２０９は、Ｌレジスタ２０５のラッチデータとＰＬレジスタ２０６のラッチパリティデータを受けてパリティチェックを行い、エラーを検出すると検出信号としてのリセット信号ＲＳＴ−Ｌを生成し、ＣＰＵ１１０に転送する。
【００７０】
第２パリティチェック回路２１０は、Ｒレジスタ２０７のラッチデータとＰＲレジスタ２０８のラッチパリティデータを受けてパリティチェックを行い、エラーを検出すると検出信号としてのリセット信号ＲＳＴ−Ｒを生成し、ＣＰＵ１１０に転送する。
【００７１】
Ｆ関数部２１１は、非線形処理を実行する複数（図２のように８）のＳボックス（Ｓｂｏｘ）Ｓ1〜Ｓ8を有する。入力値ＦｉｎＲ（ｎ−１）を拡張部(ＥＸ)によって４８ビットに拡大し、さらに入力する鍵（４８ビット）ＫｎとＥＸＯＲ演算を実行し、その出力が６ビットずつ非線形変換処理を実行する複数のＳボックスＳ1〜Ｓ8に入力する。各ＳボックスＳ1〜Ｓ8では、変換テーブルを適用した６ビットから４ビットへの非線形変換処理が実行される。
ＳボックスＳ1〜Ｓ8からの出力ビット４×８＝３２ビットは、置換部（Ｐ）に入力されて、ビット位置の入れ替え処理がなされ、Ｆ関数出力３２ビットを生成して出力する。
【００７２】
ＥＸＯＲ演算部２１２は、Ｌレジスタ２０５に格納されたデータＦｉｎＬとＦ関数部２１１の出力とのＥＸＯＲ演算を行い、スイッチ２０２Ｒを通してパリティ生成回路２０４へ、スイッチ２１３Ｒを通して逆置換部２１４に供給する。
【００７３】
スイッチ（ＳＷ２）２１３は、Ｌレジスタ側スイッチ２１３ＬとＲレジスタ側スイッチ２１３Ｒとを含む。
スイッチ２１３Ｌの作動接点ａはＲレジスタ２０７の出力に接続され、固定接点ｃが逆置換部２１４の入力に接続されている。
スイッチ２１３Ｒの作動接点ａはＥＸＯＲ演算部２１２の出力に接続され、固定接点ｃが逆置換部２１４の入力に接続されている。
スイッチ２１３Ｌ、２１３Ｒの切り替え制御は、たとえば図示していないタイミング発生回路により行われる。
【００７４】
逆置換部２１４は、スイッチ２１３Ｌ，２１３Ｒを介して入力される１６回のラウンド演算結果に対する逆置換変換（ＩＰ-1）を実行し、暗号文として出力する。
【００７５】
通常のＤＥＳ演算回路においては、Ｌ／Ｒ各３２ビットのレジスタとＦ関数およびＥＸＯＲ演算回路で構成されたラウンド演算器を１個配置し、これを１６回動作させることにより１６ラウンドのＤＥＳ演算を実行する。
そして、本実施形態のＤＥＳ演算回路２００は、通常のＤＥＳ演算回路の機能に加えて、以下の構成のＤＦＡ検出回路をさらに有する。
すなわち、Ｌ／Ｒレジスタ２０５，２０７の入力の前段にパリティ生成器２０３，２０４を配置し、Ｌ／Ｒレジスタ２０５，２０７に各々１ビットのパリティレジスタ２０６，２０８を付加し、Ｌレジスタ２０５およびそのパリティレジスタ２０６の値はパリティチェック回路２０９に入力されてパリティチェックが行われ、Ｒレジスタ２０７およびそのパリティレジスタ２０８の値はパリティチェック回路２１０に入力されてパリティチェックが行われる。
パリティチェック回路２０９，２１０でパリティエラーが検出された場合は、対応するリセット信号“ＲＳＴ―Ｌ”，“ＲＳＴ−Ｒ”を発生する。そして、ＤＦＡ検出回路１５１からリセット信号がＣＰＵ１１０へ発行されている。
また、ＥＥＰＲＯＭ等の不揮発性メモリ１４０に設けられた「領域１」１４１は０に設定されているものとする。
【００７６】
次に、図７の動作を図９に関連付けて説明する。
【００７７】
ＣＰＵ１１０は、電源投入後、不揮発性メモリ１４０の「領域１」１４１の値を読み、その値が０ならば通常動作を行う。
通常動作期間中の暗号演算時にＤＦＡ攻撃が検出された場合、暗号エンジン１５０から発行されたリセット信号を受けて、ＣＰＵ１１０はたとえば２を「領域１」１４１に書込んでシステムにリセットを掛ける。
次に、電源投入されたとき、ＣＰＵ１１０は不揮発性メモリ１４０の「領域１」１４１の値を読み、その値が０以外の値の場合、領域１４１の値を−１した値で書き換え後、正常動作を行わない。
たとえば、「領域１」１４１の値の書き換え後にシステムに対してリセットを掛けても良いし、「領域１」１４１の値の書き換え後も正常動作を行うが、ＣＰＵ１１０から暗号演算命令が発行されたときに、自分自身に対してリセットを掛けるように制御しても良い。
【００７８】
この制御により、ＤＦＡ攻撃が検出されると、「領域１」１４１に２を書込んだ後、直ちにリセットが掛けられるが、その後の２回の電源投入では「領域１」の値をデクリメント後に暗号演算を行うことなくリセットが掛けられるため、３回の電源投入で１回のＤＦＡ攻撃しかできないことになり、ＤＦＡ攻撃の効率は３分の１に落ちる。ＤＦＡ検出後に「領域１」に書込む値を大きくすれば、ＤＦＡ攻撃の効率はさらに落ちる。
【００７９】
＜第２実施形態＞
図１０は、本発明の第２の実施形態に係る暗号処理システムの構成例を示すブロック図である。
【００８０】
本第２の実施形態の暗号処理システム１００Ａが第１の実施形態の暗号処理システム１００と異なる点は、ＥＥＰＲＯＭ等の不揮発性メモリ１４０Ａに、「領域１」１４１に加えて、「領域２」１４２が設けられている点にある。
【００８１】
本第２の実施形態においても、第１領域１４１，第２領域１４２の初期値は共に０に設定されているものとする。
また、暗号エンジン１４０のＤＥＳ演算回路は図８の回路と同様の構成を有し、パリティチェック回路系で構成されているＤＦＡ検出回路１５１が搭載されているものとする。
【００８２】
次に、図１０の動作を図１１に関連付けて説明する。
【００８３】
ＣＰＵ１１０は、電源投入後、不揮発性メモリ１４０Ａの「領域１」１４１の値を読み、その値が０ならば正常動作を行う。
この正常動作期間中の暗号演算時に「ＤＦＡ検出回路」によってＤＦＡ攻撃が検出された場合、暗号エンジン１５０からリセット信号が発行され、これによりＣＰＵ１１０は「領域２」１４２の値を読み、その値が０ならばたとえば２（第１の値）を、０以外の値ならばたとえばその値を２倍した値（第２の値）を「領域２」１４２と「領域１」１４１に書き込んでシステムにリセットを掛ける。
次に、電源投入された時、ＣＰＵ１１０は不揮発性メモリ１４０Ａの「領域１」１４１の値を読み、その値が０以外の値の場合、領域１４１の値を−１した値に書き換え後、正常動作を行わない。
「領域１」１４１の値の書き換え後にシステムに対してリセットを掛けても良いし、「領域１」１４１の値の書き換え後も正常動作を行うが、暗号演算命令が発行された時にリセットを掛ける様に制御しても良い。
【００８４】
これにより、最初のＤＦＡ攻撃が検出された場合、これを含めて３回リセットを掛けないと暗号演算が実行できない。
３回のリセット後の暗号演算実行中にＤＦＡ攻撃が検出されると、ＣＰＵ１１０は「領域２」１４２の値を読み、その値が“２”であるため、「領域１」１４１と「領域２」１４２に２倍の“４”を書き込んで、暗号演算は実行できない状況に移行する。
リセット後に電源を再投入する操作を５回繰り返すと、「領域１」１４１の値は“０”となって暗号演算が実行可能となる。
【００８５】
ここで再びＤＦＡ攻撃を仕掛けてＤＦＡ検出回路１５１に検出されると、「領域１」１４１と「領域２」１４２に２倍の“８”を書き込んで、暗号演算は実行できない状況に移行する。
今度は、リセット後に電源を再投入する操作を９回繰り返さないと、通常の暗号演算が実行できなくなる。
以後、直前のリセット回数の２倍―１回のリセットと電源の再投入を繰り返さないとＤＦＡ攻撃が掛けられなくなる。
【００８６】
図１１の例では、「領域２」１４２へ書込む値を２→４→８→・・・と初期値“２”、倍数“２”で行っているが、たとえば「領域２」１４２へ書込む値を４→１６→６４→・・・と初期値“４”、倍数“４”で行うとＤＦＡ攻撃のできる割合は格段に減少し、ＤＦＡ攻撃で成功する確率も格段に低くなる。
【００８７】
この制御により、ＤＦＡ攻撃が検出される度に正常動作に戻るまでにリセットする回数がベキ乗で増加し、ＤＦＡ攻撃がほとんど行えなくなり、ＤＦＡ攻撃による鍵の取出しが非常に困難になる。
【００８８】
以上説明したように、本実施形態によれば、ＤＦＡ攻撃が検出される度に、システムリセット後にＤＦＡ攻撃できない状況が発生し、ＤＦＡ攻撃で鍵を取出される危険性が減少するという利点がある。
【００８９】
以上、特定の実施形態を参照しながら、本発明について詳述してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が実施形態の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。
【００９０】
なお、本明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【図面の簡単な説明】
【００９１】
【図１】ＤＥＳ演算回路の一般的な構成を示す図である。
【図２】Ｆ関数部の構成例を示す図である。
【図３】ＤＥＳの演算フローを示す図である。
【図４】図２のＦ関数部の演算例を示す図である。
【図５】ラウンド１６の場合のＤＦＡ攻撃の例を示す図である。
【図６】ＤＦＡ攻撃を受けたときのＦ関数の演算例を示す図である。
【図７】本発明の第１の実施形態に係る暗号処理システムの構成例を示すブロック図である。
【図８】本実施形態に係るＤＥＳ演算回路の構成例を示す図である。
【図９】第１の実施形態の動作を説明するための図である。
【図１０】本発明の第２の実施形態に係る暗号処理システムの構成例を示すブロック図である。
【図１１】第２の実施形態の動作を説明するための図である。
【符号の説明】
【００９２】
１００，１００Ａ・・・暗号処理システム、１１０・・・ＣＰＵ、１２０・・・ＲＯＭ、１３０・・・ＲＡＭ、１４０，１４０Ａ・・・不揮発性メモリ、１４１・・・領域１、１４２・・・領域２、１５０・・・暗号エンジン、１５１・・・ＤＦＡ検出回路、２００・・・ＤＥＳ演算回路、２０１・・・初期置換部［ＩＰ（Initial Permutation）］、２０２・・・スイッチ（ＳＷ１）、２０３・・・左側パリティ生成器、２０４・・・右側パリティ生成器、２０５・・・左側レジスタ（Ｌレジスタ）、２０６・・・左側パリティレジスタ（ＰＬレジスタ）、２０７・・・右側レジスタ（Ｒレジスタ）、２０８・・・右側パリティレジスタ（ＰＲレジスタ）、２０９・・・左側パリティチェック回路、２１０・・・右側パリティチェック回路、２１１・・・Ｆ関数部、２１２・・・ＥＸＯＲ演算部、２１３・・・スイッチ（ＳＷ２）、２１４・・・逆置換部（ＩＰ-1）。
【図１】
2007325219.tif 000012
【図２】
2007325219.tif 000013
【図３】
2007325219.tif 000014
【図４】
2007325219.tif 000015
【図５】
2007325219.tif 000016
【図６】
2007325219.tif 000017
【図７】
2007325219.tif 000018
【図８】
2007325219.tif 000019
【図９】
2007325219.tif 000020
【図１０】
2007325219.tif 000021
【図１１】
2007325219.tif 000022