(57)【要約】【課題】ＤＦＡ攻撃に対する耐性の高い暗号処理装置を提供する。【解決手段】ラウンド演算の結果を格納するレジスタの格納データに対応するエラー訂正情報またはエラー検出情報を生成し、エラー検証データに基づいて、レジスタ格納データのエラー検出またはエラー訂正を実行する構成とし、レジスタ格納データにエラーが検出された場合、エラーを訂正したデータに基づいてラウンド演算を実行する、または、ラウンド演算を停止する、あるいは、故意にデータをさらに変更してラウンド演算を実行する、これらの処理を実行する。本構成により実質的にＤＦＡ解析による鍵の解析が不可能となり、安全性の高い暗号処理装置が実現される。【選択図】  図１０
2007174024.tif 000002
【特許請求の範囲】
【請求項１】
複数回のラウンド演算の繰り返し処理を含む暗号処理演算を実行する暗号処理装置であり、
ラウンド演算を実行するラウンド演算実行部と、
各ラウンドのラウンド演算結果を格納するレジスタと、
前記レジスタに対する格納データに対応するエラー訂正情報またはエラー検出情報を生成するエラー検証データ生成部と、
前記エラー検証データ生成部の生成したエラー検証データを格納するエラー検証データ格納部と、
前記エラー検証データ格納部に格納されたエラー検証データに基づいて、前記レジスタ格納データのエラー検出またはエラー訂正を実行するエラー検証部とを有し、
前記ラウンド演算実行部は、
前記エラー検証部におけるエラー検出の有無に応じて異なる態様でのデータ処理を実行する構成を有することを特徴とする暗号処理装置。
【請求項２】
前記エラー検証データ生成部は、エラー訂正コード生成回路であり、
前記エラー検証部は、
前記エラー検証データ格納部に格納されたエラー訂正コードに基づいて、前記レジスタ格納データのエラー訂正を実行する構成を有し、
前記ラウンド演算実行部は、
前記エラー検証部においてエラーが検出されない場合は、前記レジスタに格納されたデータに基づくラウンド演算を実行し、
前記エラー検証部においてエラーが検出された場合は、前記レジスタに格納されたデータに対するエラー訂正コードに基づくエラー訂正後のデータに基づくラウンド演算を実行する構成であることを特徴とする請求項１に記載の暗号処理装置。
【請求項３】
前記エラー検証データ生成部は、エラー検出データ生成回路であり、
前記エラー検証部は、
前記エラー検証データ格納部に格納されたエラー検出データに基づいて、前記レジスタ格納データのエラーの有無を判定する構成を有し、
前記ラウンド演算実行部は、
前記エラー検証部においてエラーが検出されない場合は、前記レジスタに格納されたデータに基づくラウンド演算を実行し、
前記エラー検証部においてエラーが検出された場合は、ラウンド演算を停止する処理を実行する構成であることを特徴とする請求項１に記載の暗号処理装置。
【請求項４】
前記エラー検証データ生成部は、エラー検出データ生成回路であり、
前記エラー検証部は、
前記エラー検証データ格納部に格納されたエラー検出データに基づいて、前記レジスタ格納データのエラーの有無を判定する構成を有し、
前記ラウンド演算実行部は、
前記エラー検証部においてエラーが検出されない場合は、前記レジスタに格納されたデータに基づくラウンド演算を実行し、
前記エラー検証部においてエラーが検出された場合は、前記レジスタに格納されたデータを変更したデータに基づくラウンド演算を実行する構成であることを特徴とする請求項１に記載の暗号処理装置。
【請求項５】
前記ラウンド演算実行部は、
前記エラー検証部においてエラーが検出された場合は、
前記ラウンド演算実行部を構成するＦ関数実行部において、固定または乱数に基づく変換用データを適用してＳボックスに対する入力データを変更する処理を実行する構成であることを特徴とする請求項４に記載の暗号処理装置。
【請求項６】
前記エラー検証データ生成部は、
前記ラウンド演算実行部内のＦ関数部に設定されたＳボックスのデータ入力単位としての４ビット単位でのパリティを生成する回路であり、
前記エラー検証部は、
前記エラー検証データ格納部に格納された４ビット単位のパリティに基づいて、前記レジスタ格納データについて、４ビット単位でのエラーの有無を判定する構成を有し、
前記ラウンド演算実行部は、
前記エラー検証部においてエラーが検出された場合、
前記ラウンド演算実行部を構成するＦ関数実行部において、エラーの検出された４ビットに対応して生成されるＳボックス入力値を、固定または乱数に基づく変換用データを適用して変更する処理を実行する構成であることを特徴とする請求項５に記載の暗号処理装置。
【請求項７】
前記ラウンド演算部は、非線形変換部としてのＳボックスを有し、
前記レジスタは、前記Ｓボックスによる非線形変換処理を含むラウンド演算処理の結果データを格納する構成であることを特徴とする請求項１に記載の暗号処理装置。
【請求項８】
前記暗号処理装置は、
ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）アルゴリズムに従った暗号処理演算を実行する構成であることを特徴とする請求項１に記載の暗号処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号処理装置に関する。さらに詳細には、暗号解析処理、攻撃処理として知られるＤＦＡ解析に対する耐性を向上させた暗号処理装置に関する。
【背景技術】
【０００２】
昨今、ＩＣカード、ネットワーク通信、電子商取引などの発展に伴い、ＩＣカードを利用したデータ送受信やネットワークを介した通信におけるセキュリティ確保が重要な問題となっている。セキュリティ確保の１つの方法が暗号技術であり、現在、様々な暗号化手法を用いた通信が実際に行なわれている。
【０００３】
例えばＩＣカード等の小型の装置中に暗号処理モジュールを埋め込み、ＩＣカードと、データ読み取り書き込み装置としてのリーダライタとの間でデータ送受信を行ない、認証処理、あるいは送受信データの暗号化、復号化を行なうシステムが実用化されている。
【０００４】
ＩＣカードでは、例えばリーダライタやホストコンピュータとデータのやり取りを行なう時、その過程でＩＣカードに格納されている秘密情報が漏れても問題を発生させないために、送受信データは暗号化される。
【０００５】
この暗号化方法として多く用いられている方式の１つとしてＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）がある。ＤＥＳは、代表的な共通鍵暗号方式のアルゴリズムであり、例えばデータ送受信者としてのＩＣカードとホストコンピュータが同じ鍵を所有し、データの送信側はデータをその鍵で暗号化して送信し、データの受信者は同じ鍵で復号化してメッセージを取り出す。
【０００６】
通信の過程で悪意の第三者が盗聴しても、鍵を有していない限り復号化してメッセージを取り出すのは困難である。また、暗号化・復号化の時に使う鍵は、ＩＣカード内のＥＥＰＲＯＭ等の不揮発性メモリに格納され、暗号化・復号化時にはＣＰＵを介さないで直接ＩＣカード内の暗号エンジンに転送される様な制御により、ＩＣカードの所有者やＩＣカードの開発エンジニアすら鍵データを取り出す事が不可能な構成を採ってセキュリティを保持している。
【０００７】
しかし、このような共通鍵暗号処理においては、暗号解析による鍵の漏洩が問題となっている。代表的な鍵解析手法として、例えば暗号処理演算を実行するＩＣカードの消費電流を測定し、統計処理を施して鍵情報を解析する電力差分解析（ＤＰＡ：Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）や、暗号演算実行中に動作環境を変化させて演算過程で誤動作を起こさせて、その演算結果と正常動作の演算結果との差分を採って、それを解析する事により鍵を取り出すＤＦＡ（Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｆａｕｌｔ  Ａｎａｌｙｓｉｓ）攻撃等の脅威が報告されている。
【０００８】
ＤＦＡ攻撃は、例えばモールドを除去したＩＣに暗号演算を実行させ、暗号処理実行中に、暗号処理の演算結果を逐次格納するレジスタ等にレーザ照射を行なって保持データの値を変化させ、誤った結果を出力させて、その値を解析することにより鍵情報を取り出す攻撃である。
【０００９】
一般的なＤＥＳ演算回路の構成例およびＤＦＡ攻撃の概要について説明する。ＤＥＳ暗号処理は、Ｆ関数と呼ばれる変換関数などを適用した単純な演算の繰り返しにより、平文を暗号文に変換する構造を持つ。図１にＤＥＳ暗号処理の基本構成を示す。入力データの変換を実行するラウンド関数部１１０と、ラウンド関数部の各ラウンドで適用する鍵を生成する鍵スケジュール部１２０とによって構成される。
【００１０】
ラウンド関数部１１０において、平文（６４ビット）は、まず、初期置換部１１１において、置換後にＬ，Ｒ各３２ビットに分割され、分割されたＬ，Ｒ３２ビットが、第１段ラウンド関数部１１２に入力され、鍵スケジュール部１２０の第１段鍵生成部１２２から入力する鍵Ｋ（１）に基づいて変換処理がなされる。変換処理結果は、次段の第２段ラウンド関数部１１３に入力される。
【００１１】
鍵スケジュール部１２０においては、まず、マスター鍵（秘密鍵）置換部（ＰＣ−１）１２１により入力マスター鍵（秘密鍵：６４ビット）のパリティ８ビットが取り除かれ、残り５６ビットの入れ替え処理が実行されて第１段ラウンド鍵生成部１２２に入力される。第１段ラウンド鍵生成部１２２では、入力ビット列のシフト処理および８ビットのデータ破棄等が実行され、４８ビットのラウンド鍵Ｋ（１）を生成し、生成したラウンド鍵Ｋ（１）をラウンド関数部１１０の第１段ラウンド関数部１１２に出力する。第１段ラウンド鍵生成部１２２では、シフト処理による上位ビット列（２８ビット）と下位ビット列（２８ビット）とを下段の第２段ラウンド鍵生成部１２３に出力する。
【００１２】
ラウンド関数部は、１６段のラウンド関数部を有し、それぞれ前段のラウンド関数部の出力を入力として鍵スケジュール部１２０から入力する鍵を適用した変換処理を実行し、変換結果を後段のラウンド関数部に出力する。１６段のラウンド関数部で変換された出力が逆置換部１１４に入力され、初期置換部１１１の逆置換処理が実行されて、暗号文として出力される。
【００１３】
ラウンド関数部１１０の各ラウンドを構成する各段のラウンド関数部の構成を図２に示す。図２に示すように、ラウンド関数部は、前段（ｎ−１段）のラウンド関数部から２つの入力、Ｌ（ｎ−１）、Ｒ（ｎ−１）を入力し、鍵スケジュール部から鍵（ｋ（ｎ））を入力する。Ｆ関数部１５１において、鍵スケジュール部から入力する鍵（ｋ（ｎ））を用いて、前段ラウンド関数部から入力するビット列（Ｒ（ｎ−１））の変換処理がなされ、変換結果が、前段ラウンド関数部から入力する残りのビット列（Ｌ（ｎ−１））と排他論理和が実行されて、次段のラウンド関数部の出力Ｒ（ｎ）が生成される。次段のラウンド関数部には、Ｒ（ｎ−１）をＬ（ｎ）としたビット列と、上述のＦ関数および排他論理和演算により生成されたＲ（ｎ）が入力され同様の処理が繰り返される。
【００１４】
Ｆ関数の構成を図３に示す。Ｆ関数は、非線形処理を実行する複数のＳボックス（Ｓｂｏｘ）を有する。ラウンド関数部の前段からの入力値Ｒ（ｎ−１）は拡張部１７１によって４８ビットに拡大され、さらに鍵スケジュール部から入力する鍵（４８ビット）と排他論理和が実行され、その出力が６ビットずつ非線形変換処理を実行する複数のＳボックス１８１−１〜８に入力される。各Ｓボックスでは、例えば変換テーブルを適用した６ビットから４ビットへの非線形変換処理が実行される。
【００１５】
Ｓボックス１８１−１〜８からの出力ビット４×８＝３２ビットは、置換部１７２に入力されて、ビット位置の入れ替え処理がなされ、Ｆ関数出力３２ビットを生成して出力する。
【００１６】
図１〜３を参照して説明したように複数段（１６段）の変換処理によってＤＥＳ暗号処理が実行される。ＤＦＡ攻撃は、前述したように、例えばモールドを除去したＩＣに暗号演算を実行させている時に、演算結果を格納するレジスタ等にレーザ照射を行なって保持データの値を変化させ、誤った結果を出力させて、その値を解析することにより鍵の解析を行なう攻撃である。
【００１７】
通常のＤＥＳ演算処理においては、１６ラウンドの各ラウンド演算結果を３２ビットデータずつＬ／Ｒレジスタに格納し、次のラウンドでは、このＬ／Ｒレジスタに格納された値に基づくラウンド演算を実行するという処理を繰り返す。１６ラウンドのラウンド演算の終了後にＬ／Ｒレジスタに格納される値は、図４に示すＬレジスタ２０１とＲレジスタ２０２に格納され、これらの値は、
Ｌ１６＝Ｒ１５・・・（式１）
Ｒ１６＝Ｆ（Ｒ１５，Ｋ１６）（ＸＯＲ）Ｌ１５・・・（式２）
として示される。
上記式において、
Ｌｎ，Ｒｎは、それぞれＤＥＳアルゴリズムにおけるラウンド演算中のｎラウンドのラウンド演算を格納するレジスタの値、
Ｋｎはｎラウンドにおいて適用されるラウンド鍵、
Ｆ（ａ，ｂ）はラウンド演算中のＦ関数における演算処理であり、式２中のＦ（Ｒ１５，Ｋ１６）は、ラウンド１５のレジスタＲの格納値Ｒ１５と、ラウンド１６のラウンド鍵Ｋ１６を入力値としたＦ関数の処理を示している。
（ＸＯＲ）は、排他論理和演算を示している。
【００１８】
すなわち、上記式１，２は、１６ラウンドのラウンド演算の終了後にＬ／Ｒレジスタに格納される値は、レジスタＬ１６にはＲ１５がそのまま格納され、レジスタＲ１６には、ラウンド１５のレジスタＲ格納値Ｒ１５と、ラウンド鍵Ｋ１６に基づくＦ関数処理結果と、ラウンド１５のレジスタＬの格納値Ｌ１５との排他論理和演算結果が格納されることを示している。
【００１９】
その後、これらのＬ／Ｒレジスタ格納値が、逆置換部（ＩＰ−１）に入力され、初期置換部の逆置換処理が実行されて、暗号文（Ｃｒｙｐｔｏ）として出力される。
【００２０】
上記の式（式２）に式（式１）の関係を代入すると、
Ｒ１６＝Ｆ（Ｌ１６，Ｋ１６）（ＸＯＲ）Ｌ１５・・・（式３）
と、示すことができる。
【００２１】
この式（式３）において、"Ｒ１６"，"Ｌ１６"は、最終的な出力としての演算結果である暗号文（Ｃｒｙｐｔｏ）に対して、ＩＰ−１の逆変換を行なうことにより容易に求めることができる。またＦ関数は先に、図３を参照して説明した構成によるラウンド鍵を適用した処理である。
【００２２】
Ｆ関数におけるラウンド鍵の適用処理の詳細について、図５、図６を参照して説明する。１６ラウンドにおけるＦ関数では、前述したように、ラウンド１５のレジスタＲの格納値Ｒ１５と、ラウンド１６のラウンド鍵Ｋ１６を入力値とした処理が行なわれる。すなわち、図５に示すように、ラウンド１５のレジスタＲの格納値Ｒ１５の拡大置換（３２ビット→４８ビット）によって生成されたデータＥＸ［Ｒ１５］２１１と、ラウンド１６に適用される４８ビットのラウンド鍵Ｋ１６，２１２による処理が実行される。
【００２３】
具体的な処理例を図６に示す。図６には、
（１）Ｒ１５Ｒｅｇ：ラウンド１５のラウンド演算結果としてＲレジスタに格納されたデータ、
（２）ＥＸ［Ｒ１５］：Ｒ１５Ｒｅｇの拡大置換（３２ビット→４８ビット）によって生成されたデータ、
（３）Ｋ１６：ラウンド１６に適用されるラウンド鍵、
（４）Ｓｂｏｘ−ｉｎ：Ｓボックスの入力、
（５）Ｓｂｏｘ−ｏｕｔ：Ｓボックスの出力、
これらのデータを示している。
【００２４】
ここで、例えばＤＥＳの１６ラウンドを実行中に、図７に示すように、レーザ照射等でＲ１５レジスタ２２１の１ｂｉｔを反転させた場合、１６ラウンドが終了した時点でのＬ／Ｒレジスタ２２２，２２３の値は、１ｂｉｔ反転による影響が発生し、正常時の処理結果とは異なるビットデータが格納されることになる。
【００２５】
例えば図８に示すように、（１）Ｒ１５Ｒｅｇ中の［ｘ］を示した１ビットを反転させることで、（２）ＥＸ［Ｒ１５］、（４）Ｓｂｏｘ−ｉｎ、（５）Ｓｂｏｘ−ｏｕｔにそれぞれ図に示す［ｘ］を付した正常時の処理結果とは異なるビットデータが発生することになる。
【００２６】
これらの処理の結果として、１６ラウンドのラウンド演算の終了後にＬ／Ｒレジスタに格納される値は、
Ｌ１６'＝Ｒ１５'・・・（式４）
Ｒ１６'＝Ｆ（Ｒ１５'，Ｋ１６）（ＸＯＲ）Ｌ１５・・・（式５）
として示される。
【００２７】
さらに、この処理の結果が、逆置換部（ＩＰ−１）に入力され、初期置換部の逆置換処理が実行されて、暗号文（Ｃｒｙｐｔｏ）として出力される。
上記の式（式５）に式（式４）の関係を代入すると、
Ｒ１６'＝Ｆ（Ｌ１６'，Ｋ１６）（ＸＯＲ）Ｌ１５・・・（式６）
と、示すことができる。
【００２８】
この式（式６）において、"Ｒ１６'"，"Ｌ１６'"は、最終的な出力としての演算結果である暗号文（Ｃｒｙｐｔｏ）に対して、ＩＰ−１の逆変換を行なうことにより容易に求めることができる。また、前述の式（式１）と（式４）を比較することで、レーザ照射によって変化したビット位置を特定することができる。例えば、図８に示すように（１）Ｒ１５Ｒｅｇ中の［ｘ］を示したビット［ｂ２］が０から１に反転した場合、
Ｌ１６（ＸＯＲ）Ｌ１６'＝Ｒ１５（ＸＯＲ）Ｒ１５'＝２０００００００（１６）・・・（式７）
の演算を実行することにより、レジスタＲ１５のビット［ｂ２］が変化したことを知ることができる。なお、ＸＸＸＸ（１６）は１６進数表記であることを示す。
【００２９】
一方、前述の式（式３）と（式６）を各々排他論理和（ＸＯＲ）演算することにより、
Ｒ１６（ＸＯＲ）Ｒ１６'＝（Ｆ（Ｌ１６，Ｋ１６）（ＸＯＲ）Ｌ１５）（ＸＯＲ）（Ｆ（Ｌ１６'，Ｋ１６）（ＸＯＲ）Ｌ１５）＝Ｆ（Ｌ１６，Ｋ１６）（ＸＯＲ）Ｆ（Ｌ１６'，Ｋ１６）・・・（式８）
となる。さらに、上記式（式８）の両辺に対して、Ｆ関数内のＰ置換の逆置換（Ｐ−１）を実施すると、
Ｐ−１［Ｒ１６（ＸＯＲ）Ｒ１６'］＝５０００００００（１６）
＝Ｐ−１［Ｆ（Ｌ１６，Ｋ１６）（ＸＯＲ）Ｆ（Ｌ１６'，Ｋ１６）］
＝Ｐ−１［Ｆ（Ｌ１６，Ｋ１６）］（ＸＯＲ）Ｐ−１［Ｆ（Ｌ１６'，Ｋ１６）］・・・（式９）
と示すことができる。
【００３０】
この式（式９）において、"Ｒ１６"，"Ｒ１６'"，"Ｌ１６"，"Ｌ１６'"は、暗号の演算結果から容易に求めることができる値であり、Ｆ関数も公開されていて既知の関数であるため、未知の数値は"Ｋ１６"のみとなる。
【００３１】
この例の場合、上記式（式７）より、レジスタＲ１５の１つのビット［ｂ２］が変化したことが判明しているため、式（式８）の値（（式３）と（式６）の差異）は８個のＳ−ｂｏｘのうち、"Ｓ１"の出力の差異に起因していることが明らかとなる。
【００３２】
従って、ラウンド１６の鍵の構成ビット中の、Ｓボックス"Ｓ１"の入力となる６ｂｉｔのみを選択して、この６ビットを、その取りうる全ての値："００(１６)"〜３ｆ(１６)"まで変化させて上記式（式９）を満たす値を求めると、
"０３（１６）"，"０７（１６）"，"１９（１６）"，"１ｄ（１６）"，"２８（１６）"，
"２ｃ（１６）"，"３１（１６）"，"３６（１６）"，"３ａ（１６）"，"３ｅ（１６）"
が求まる。
【００３３】
次に、例えば、レジスタＲ１５の１つのビット［ｂ３］を"１"から"０"に反転させた場合、上記式（式７）は、
Ｌ１６（ＸＯＲ）Ｌ１６"＝Ｒ１５（ＸＯＲ）Ｒ１５"＝１０００００００（１６）・・・(式１０)
と示され、前記の式（式９）は以下の通りに示すことができる。
Ｐ−１［Ｒ１６（ＸＯＲ）Ｒ１６"］＝７０００００００（１６）
＝Ｐ−１［Ｆ（Ｌ１６，Ｋ１６）］（ＸＯＲ）Ｐ−１［Ｆ（Ｌ１６"，Ｋ１６）］・・・（式１１）
上記式（式１１）において、"Ｒ１６""，"Ｌ１６""は、前述の式（式７）、（式９）の"Ｒ１６'"，"Ｌ１６'"とは異なる値である。
【００３４】
ラウンド１６に適用されるラウンド鍵Ｋ１６の構成ビット中、Ｓボックス中の "Ｓ１"の入力となる６ｂｉｔを"００（１６）"〜"３ｆ（１６）"まで変化させて、上記式（式１１）を満たす値を求めると、
"３４（１６）"，"３６（１６）"，"３ｄ（１６）"，"３ｆ（１６）"、
が求まる。
【００３５】
先の式（式９）から導かれた６ｂｉｔ鍵の候補と比較して、共通するのは、
"３６（１６）"のみであり、Ｓボックス"Ｓ１"の入力に対応するラウンド１６の６ｂｉｔ鍵の値は"３６（１６）"であると結論付けることができる。
【００３６】
同様にしてＳボックスの構成要素"Ｓ２"〜"Ｓ８"の入力に対応するラウンド１６の６ｂｉｔ鍵の値を求めることが可能となる。このような処理によってラウンド鍵を解析するのがＤＦＡ攻撃である。
【００３７】
このＤＦＡ攻撃により、ラウンド鍵の元となるマスター鍵（秘密鍵）５６ｂｉｔの鍵のうち、４８ｂｉｔは求めることができ、残り８ｂｉｔは２８＝２５６回の全数攻撃で容易に求めることができる。
【００３８】
このＤＦＡ攻撃に対する対応策を示した従来技術として、特許文献１に記載の構成がある。この従来技術では、以下のような対応策を示している。
対応策１．平文の暗号化演算を実行後に、演算結果を再び復号化演算し、演算結果が平文と一致した場合に暗号演算結果を正しい演算結果として出力する。一致しない場合、ＣＰＵに対してエラーの発生を知らせ、暗号演算処理を終了する。
対応策２．平文を複数の暗号演算回路で演算し、結果が一致した場合のみ演算結果を正しい演算結果として出力する。一致しない場合、ＣＰＵに対してエラーの発生を知らせ、暗号演算処理を終了する。
これらの対策により、ＤＦＡ攻撃に対する耐性を高める構成を開示している。
【００３９】
しかし、この対応策において、対応策１を行なうと、通常の演算の２倍の演算時間が必要となり、演算のスループットが下がるという問題が発生する。また、対応策２を行なうと、複数のＤＥＳ演算回路が必要となり、回路規模が少なくとも２倍程度になるという問題が発生する。
【特許文献１】特開平１０−１５４９７６
【発明の開示】
【発明が解決しようとする課題】
【００４０】
本発明は、上記問題点に鑑みてなされたものであり、処理アルゴリズムを複雑化させることなく、また処理回路を非常に大きくすることなくＤＦＡ攻撃に対する耐性を高め、暗号解析の困難性を向上させた暗号処理装置を提供することを目的とする。
【課題を解決するための手段】
【００４１】
本発明の第１の側面は、
複数回のラウンド演算の繰り返し処理を含む暗号処理演算を実行する暗号処理装置であり、
ラウンド演算を実行するラウンド演算実行部と、
各ラウンドのラウンド演算結果を格納するレジスタと、
前記レジスタに対する格納データに対応するエラー訂正情報またはエラー検出情報を生成するエラー検証データ生成部と、
前記エラー検証データ生成部の生成したエラー検証データを格納するエラー検証データ格納部と、
前記エラー検証データ格納部に格納されたエラー検証データに基づいて、前記レジスタ格納データのエラー検出またはエラー訂正を実行するエラー検証部とを有し、
前記ラウンド演算実行部は、
前記エラー検証部におけるエラー検出の有無に応じて異なる態様でのデータ処理を実行する構成を有することを特徴とする暗号処理装置にある。
【００４２】
さらに、本発明の暗号処理装置の一実施態様において、前記エラー検証データ生成部は、エラー訂正コード生成回路であり、前記エラー検証部は、前記エラー検証データ格納部に格納されたエラー訂正コードに基づいて、前記レジスタ格納データのエラー訂正を実行する構成を有し、前記ラウンド演算実行部は、前記エラー検証部においてエラーが検出されない場合は、前記レジスタに格納されたデータに基づくラウンド演算を実行し、前記エラー検証部においてエラーが検出された場合は、前記レジスタに格納されたデータに対するエラー訂正コードに基づくエラー訂正後のデータに基づくラウンド演算を実行する構成であることを特徴とする。
【００４３】
さらに、本発明の暗号処理装置の一実施態様において、前記エラー検証データ生成部は、エラー検出データ生成回路であり、前記エラー検証部は、前記エラー検証データ格納部に格納されたエラー検出データに基づいて、前記レジスタ格納データのエラーの有無を判定する構成を有し、前記ラウンド演算実行部は、前記エラー検証部においてエラーが検出されない場合は、前記レジスタに格納されたデータに基づくラウンド演算を実行し、前記エラー検証部においてエラーが検出された場合は、ラウンド演算を停止する処理を実行する構成であることを特徴とする。
【００４４】
さらに、本発明の暗号処理装置の一実施態様において、前記エラー検証データ生成部は、エラー検出データ生成回路であり、前記エラー検証部は、前記エラー検証データ格納部に格納されたエラー検出データに基づいて、前記レジスタ格納データのエラーの有無を判定する構成を有し、前記ラウンド演算実行部は、前記エラー検証部においてエラーが検出されない場合は、前記レジスタに格納されたデータに基づくラウンド演算を実行し、前記エラー検証部においてエラーが検出された場合は、前記レジスタに格納されたデータを変更したデータに基づくラウンド演算を実行する構成であることを特徴とする。
【００４５】
さらに、本発明の暗号処理装置の一実施態様において、前記ラウンド演算実行部は、前記エラー検証部においてエラーが検出された場合は、前記ラウンド演算実行部を構成するＦ関数実行部において、固定または乱数に基づく変換用データを適用してＳボックスに対する入力データを変更する処理を実行する構成であることを特徴とする。
【００４６】
さらに、本発明の暗号処理装置の一実施態様において、前記エラー検証データ生成部は、前記ラウンド演算実行部内のＦ関数部に設定されたＳボックスのデータ入力単位としての４ビット単位でのパリティを生成する回路であり、前記エラー検証部は、前記エラー検証データ格納部に格納された４ビット単位のパリティに基づいて、前記レジスタ格納データについて、４ビット単位でのエラーの有無を判定する構成を有し、前記ラウンド演算実行部は、前記エラー検証部においてエラーが検出された場合、前記ラウンド演算実行部を構成するＦ関数実行部において、エラーの検出された４ビットに対応して生成されるＳボックス入力値を、固定または乱数に基づく変換用データを適用して変更する処理を実行する構成であることを特徴とする。
【００４７】
さらに、本発明の暗号処理装置の一実施態様において、前記ラウンド演算部は、非線形変換部としてのＳボックスを有し、前記レジスタは、前記Ｓボックスによる非線形変換処理を含むラウンド演算処理の結果データを格納する構成であることを特徴とする。
【００４８】
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理装置は、ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）アルゴリズムに従った暗号処理演算を実行する構成であることを特徴とする。
【００４９】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【発明の効果】
【００５０】
本発明の構成によれば、処理アルゴリズムを複雑化させることなく、ＤＦＡ解析による暗号解析の困難性を高めた暗号処理装置が実現される。
【００５１】
本発明の構成では、例えばＤＥＳなど複数段のラウンド演算の繰り返し処理を含む暗号アルゴリズムを実行する暗号処理装置において、ラウンド演算の結果を格納するレジスタの格納データに対応するエラー訂正情報またはエラー検出情報を生成し、エラー検証データに基づいて、レジスタ格納データのエラー検出またはエラー訂正を実行する構成とし、レジスタ格納データにエラーが検出された場合、
エラーを訂正したデータに基づいてラウンド演算を実行する、または、
ラウンド演算を停止する、あるいは、
故意にデータをさらに変更してラウンド演算を実行する、
これらのいずれかの処理を実行する構成としたので、実質的にＤＦＡ解析による鍵の解析が不可能となり、安全性の高い暗号処理装置が実現される。
【発明を実施するための最良の形態】
【００５２】
以下、本発明の暗号処理装置の詳細について説明する。本発明は、例えばＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）アルゴリズムに代表される複数段のラウンド関数の繰り返し処理を含む暗号アルゴリズムを実行する暗号処理装置であり、暗号処理回路規模の増大を抑えつつ、ＤＦＡ攻撃に対する耐性を持った回路構成を提供することを目的としてなされたものである。
【００５３】
まず、本発明の暗号処理装置の構成の概要について説明する。本発明の暗号処理装置は、ＤＦＡ攻撃に対する耐性を保持させるための構成として、例えば以下の構成のいずれかを備える。
構成１．ラウンド演算結果の格納レジスタとしてのＬ／Ｒレジスタの入力部にエラー訂正コード生成回路（ＥＣＣ回路）を配置し、出力部にエラー訂正回路（Ｓｙｎｄｒｏｍｅ生成回路）を配置し、さらに、Ｌ／ＲレジスタにＥＣＣコード格納用のレジスタを配置する。
構成２．ラウンド演算結果の格納レジスタとしてのＬ／Ｒレジスタの入力部にパリティ生成回路を配置し、さらに、Ｌ／Ｒレジスタ部にパリティ（ＰＬ／ＰＲ）情報格納用のレジスタ、出力部にパリティチェック回路を配置し、パリティチェック回路においてエラーが検出された場合、リセット信号を発生し演算を停止する。
構成３．ラウンド演算結果の格納レジスタとしてのＬ／Ｒレジスタの入力部に、各レジスタ４ｂｉｔ毎にパリティを生成する回路を設定し、Ｌ／Ｒレジスタ部にパリティ格納用のレジスタ、Ｆ関数部にパリティチェック回路と、パリティエラーを検出した場合にその４ｂｉｔのレジスタ値と固定値の排他論理和（ＸＯＲ）演算を実行する回路を配置する。
【００５４】
本発明の暗号処理装置は、上記構成１〜３の少なくともいずれかの構成を備える。なお、いずれの構成においても、同じＳボックス（"Ｓ１"〜"Ｓ８"）に入力される各ビットは隣り合わない配置をとるものとする。
【００５５】
通常、ＤＥＳ演算を実行する暗号処理回路を設計する場合、ＤＥＳアルゴリズムにおいて実行される１つのラウンド演算を実行する回路を１個配置して、この回路を１６回繰り返して適用して１６ラウンドを実行させる構成とする。あるいは、２つのラウンド演算を実行する回路を１個配置し、２ラウンド演算を８回繰り返す構成とする場合もある。
【００５６】
以下において説明する暗号処理装置は、１つのラウンド演算実行回路を設定し、１つのラウンド演算実行回路を適用して１６ラウンドのラウンド演算を実行する回路構成について説明する。以下、本発明の構成と従来の一般的な回路構成との差異を明確に説明するため、まず、従来の一般的な１つのラウンド演算実行回路を配置した暗号処理装置構成と、上述した構成１〜３に相当する暗号処理装置構成および処理の詳細について、順次、説明する。
【００５７】
［従来の一般的な暗号処理装置構成］
図９に、従来の一般的な１つのラウンド演算実行回路を設定した暗号処理装置構成を示す。
【００５８】
図９に示すラウンド関数部３１０は、１６段のラウンド関数を繰り返し実行する。先に図１を参照して説明した鍵スケジュール部から入力するラウンド鍵Ｋｎを適用した変換処理を実行する。各ラウンド演算の結果は、Ｌレジスタ３１１、Ｒレジスタ３１２に格納し、レジスタ格納値を次段のラウンド関数部の入力として利用する構成である。
【００５９】
図９に示すラウンド関数部３１０の構成中、スイッチ（ＳＷ１）は、ＤＥＳ演算開始時には"ａ"側に接続されている。ＤＥＳ演算が開始されると、平文を初期置換部［ＩＰ（Ｉｎｉｔｉａｌ  Ｐｅｒｍｕｔａｔｉｏｎ）］３０１において置換後、２つの３２ｂｉｔデータＬ０，Ｒ０に分けられ、制御クロックに基づく制御により、Ｌ／Ｒレジスタ３１１，３１２へ取り込まれると同時にＳＷ１を"ｂ"側に切り替える。
【００６０】
このデータ取り込みによってＬ／Ｒレジスタ３１１，３１２の出力がＬ０，Ｒ０に設定され、その後、これらのレジスタ格納値に基づいて、Ｆ関数部３１３と排他論理和演算（ＸＯＲ）部３１４を適用したラウンド（Ｒｏｕｎｄ）演算が実行され、その結果が再度、スイッチ（ＳＷ１）を介してＬ／Ｒレジスタ３１１，３１２に入力される。
【００６１】
この処理を１６段のラウンド演算が完了するまで繰り返した後、スイッチ（ＳＷ２）が接続され、演算結果が逆置換部（ＩＰ−１）３０２へ出力され、逆置換変換を実行し、暗号文（Ｃｒｙｐｔｏ）として出力する。
【００６２】
なお、Ｆ関数部３１３は、先に図３、図５を参照して説明したようにラウンド鍵を適用した演算や、Ｓボックスによる置換処理が行なわれる。
【００６３】
この従来型の暗号処理装置構成では、先に図７、図８を参照して説明したように、ＤＦＡ攻撃により、ラウンド鍵の解析が行なわれてしまう恐れがある。すなわちＬレジスタ３１１やＲレジスタ３１２に対するレーザ照射などにより故意にビット値を変更して、その演算処理結果を解析することでラウンド鍵の構成ビットを解析し、最終的には、ラウンド鍵の元データであるマスター鍵の構成ビット情報が解析されてしまうということになる。このようなＤＦＡ攻撃による鍵解析を防止するための構成例について以下、説明する。
【００６４】
［構成例１］
本発明の暗号処理装置の構成例１は、ラウンド演算結果の格納レジスタとしてのＬ／Ｒレジスタの入力部にエラー訂正コード生成回路（ＥＣＣ回路）を配置し、出力部にエラー訂正回路（Ｓｙｎｄｒｏｍｅ生成回路）を配置し、Ｌ／ＲレジスタにＥＣＣコード格納用のレジスタを配置する構成を持つ。
【００６５】
図１０を参照して、本構成例１の暗号処理装置について説明する。本構成において、初期置換部４０１、逆置換部４０２、スイッチ１（ＳＷ１）、スイッチ２（ＳＷ２）、さらにラウンド関数部４１０のＦ関数部４１３、排他論理和演算部４１４は、図９を参照して説明したと同様の構成であり、同様の処理を実行する。
【００６６】
本構成例１の特徴は、
ラウンド演算結果の格納レジスタとしてのＬレジスタ４１１とＲレジスタ４１２各々の入力部に、エラー訂正コード生成回路（ＥＣＣ回路）４２１，４３１を配置し、
Ｌレジスタ４１１とＲレジスタ４１２各々の出力部にエラー訂正回路（Ｓｙｎｄｒｏｍｅ生成回路）４２３を配置し、さらに、
Ｌレジスタ４１１，４３３とＲレジスタ４１２各々に、ＥＣＣコード格納用のＥＣＣコードレジスタ４２２，４３２を付加した、
これらの構成が本構成例の特徴的な構成である。
【００６７】
図１０に示す暗号処理装置において、Ｌレジスタ４１１とＲレジスタ４１２各々には、各ラウンド演算に適用するデータが逐次格納される。本構成では、Ｌレジスタ４１１とＲレジスタ４１２各々に格納されるデータは、各レジスタ入力部側に設定されたエラー訂正コード生成回路（ＥＣＣ回路）４２１，４３１にも並列に入力される。
【００６８】
エラー訂正コード生成回路（ＥＣＣ回路）４２１，４３１においては、各レジスタ入力値のエラー訂正コード（ＥＣＣコード）を算出し、算出したＥＣＣコードをＥＣＣコード格納用のＥＣＣコードレジスタ４２２，４３２に格納する。
【００６９】
その後、Ｌレジスタ４１１とＲレジスタ４１２各々に格納されたデータを適用したラウンド演算開始する際、レジスタデータの取り込みタイミングとしてのパルスの立ち上がりタイミングにおいて、Ｌレジスタ４１１とＲレジスタ４１２各々に格納されたデータと、ＥＣＣコードレジスタ４２２，４３２に格納されたＥＣＣコードは、エラー訂正回路４２３，４３３に入力される。
【００７０】
エラー訂正回路４２３，４３３では、それぞれ、各レジスタ格納データに対応するＥＣＣコードに基づいて、レジスタ格納データのエラーの有無を検証する。エラー訂正回路４２３，４３３において、レジスタ格納データにエラーが無いと判定された場合は、レジスタ格納データをそのまま適用したラウンド演算を実行する。
【００７１】
エラー訂正回路４２３，４３３において、レジスタ格納データにエラーが有ると判定された場合は、エラー訂正回路４２３，４３３において、ＥＣＣコードを適用したレジスタ格納データのエラー訂正を実行し、訂正後のデータを適用したラウンド演算を実行する。
【００７２】
このように、本構成例においては、Ｌレジスタ４１１とＲレジスタ４１２各々に格納されるデータのエラー検証を行なうためのＥＣＣコードをレジスタ入力データに対して、予め設定し、レジスタからの出力に際して、レジスタ格納データにエラーがあるか否かを検証し、エラーがある場合は、ＥＣＣコードを適用したエラー訂正を行なった後にラウンド演算を開始させる構成としたので、例えばレジスタに対するレーザ照射などによってビット値が変更された場合は、エラー訂正回路４２３，４３３において、ＥＣＣコードを適用したレジスタ格納データのエラー訂正が実行され、訂正後のデータを適用したラウンド演算が実行されることになり、エラービットを含むデータを適用したラウンド演算が実行されてしまうことを防止することができ、エラーに起因する情報は出力されず、ＤＦＡ攻撃による鍵の解析は不可能となる。
【００７３】
［構成例２］
本発明の暗号処理装置の構成例２は、ラウンド演算結果の格納レジスタとしてのＬ／Ｒレジスタの入力部にパリティ生成回路を配置し、さらに、Ｌ／Ｒレジスタ部にパリティ（ＰＬ／ＰＲ）情報格納用のレジスタ、出力部にパリティチェック回路を配置し、パリティチェック回路においてエラーが検出された場合、リセット信号を発生し演算を停止する構成である。
【００７４】
図１１を参照して、本構成例２の暗号処理装置について説明する。本構成例においても、初期置換部５０１、逆置換部５０２、スイッチ１（ＳＷ１）、スイッチ２（ＳＷ２）、さらにラウンド関数部５１０のＦ関数部５１３、排他論理和演算部５１４は、図９を参照して説明したと同様の構成であり、同様の処理を実行する。
【００７５】
本構成例２の特徴は、
ラウンド演算結果の格納レジスタとしてのＬレジスタ５１１とＲレジスタ５１２各々の入力部にエラー検出データ生成回路としてのパリティ生成回路５２１，５３１を配置し、
さらに、Ｌレジスタ５１１とＲレジスタ５１２各々にパリティ（ＰＬ／ＰＲ）情報格納用レジスタ５２２，５３２を付加し、さらに、
パリティ（ＰＬ／ＰＲ）情報格納用レジスタ５２２，５３２各々の出力部にパリティチェック回路５２３，５３３を配置した、
これらの構成が本構成例の特徴的な構成である。図１０に示す暗号処理装置において、パリティチェック回路５２３，５３３においてエラーが検出された場合、リセット信号を発生しラウンド演算を停止する。
【００７６】
図１１に示す暗号処理装置において、Ｌレジスタ５１１とＲレジスタ５１２各々には、各ラウンド演算に適用するデータが逐次格納される。本構成では、Ｌレジスタ５１１とＲレジスタ５１２各々に格納されるデータは、各レジスタ入力部側に設定されたパリティ生成回路５２１，５３１にも並列に入力される。
【００７７】
パリティ生成回路５２１，５３１においては、各レジスタ入力値のエラー検出用データとしてのパリティデータを各レジスタ入力値（３２ビットデータ）に基づいて算出する。パリティ生成回路５２１，５３１において算出されたパリティデータは、パリティ（ＰＬ／ＰＲ）情報格納用レジスタ５２２，５３２にそれぞれ格納される。
【００７８】
その後、Ｌレジスタ５１１とＲレジスタ５１２各々に格納されたデータに基づくラウンド演算の開始に併せて、Ｌレジスタ５１１とＲレジスタ５１２各々に格納されたデータと、パリティ（ＰＬ／ＰＲ）情報格納用レジスタ５２２，５３２に格納されたパリティデータが、パリティチェック回路５２３，５３３にそれぞれ入力される。
【００７９】
パリティチェック回路５２３，５３３では、パリティデータに基づいて、Ｌレジスタ５１１とＲレジスタ５１２から入力したデータのエラー発生の有無を判定する。エラーが検出されなかった場合は、ラウンド演算をそのまま実行させるが、エラーが検出された場合、例えばシステムに対してリセット信号を発生しラウンド演算を停止させる。
【００８０】
この構成例２は、Ｌレジスタ５１１とＲレジスタ５１２各々に格納されるデータのエラー検証を行なうためのパリティデータをレジスタ入力データに対して、予め算出する構成とし、レジスタからの出力に際して、レジスタ格納データにエラーがあるか否かをパリティデータに基づいて検証し、エラーがある場合は、ラウンド演算を停止させる構成としたので、例えばレジスタに対するレーザ照射などによってビット値が変更された場合は、パリティチェック回路５２３，５３３においてエラーが検出され、ラウンド演算が停止されることになり、エラービットを含むデータを適用したラウンド演算が実行されてしまうことを防止することができ、エラーに起因する情報は出力されず、ＤＦＡ攻撃による鍵の解析は不可能となる。
【００８１】
本構成例では、付加する回路が２個のパリティ生成回路５２１，５３１、２ｂｉｔのパリティ（ＰＬ／ＰＲ）情報格納用レジスタ５２２，５３２、２個のパリティチェック回路５２３，５３３だけであり、回路規模の増加が非常に小さくて済む。
【００８２】
［構成例３］
本発明の暗号処理装置の構成例３は、ラウンド演算結果の格納レジスタとしてのＬ／Ｒレジスタの入力部に、各レジスタ４ｂｉｔ毎にパリティを生成する回路を設定し、Ｌ／Ｒレジスタ部にパリティ格納用のレジスタ、Ｆ関数部にパリティチェック回路と、パリティエラーを検出した場合にその４ｂｉｔのレジスタ値と固定値の排他論理和（ＸＯＲ）演算を実行する回路を配置したものである。
【００８３】
図１２を参照して、本構成例３の暗号処理装置について説明する。本構成例においても、初期置換部６０１、逆置換部６０２、スイッチ１（ＳＷ１）、スイッチ２（ＳＷ２）、さらにラウンド関数部６１０の排他論理和演算部６１４は、図９を参照して説明したと同様の構成であり、同様の処理を実行する。ただし、本構成例３ではＦ関数部６１３は、従来構成とは異なる処理を行なう。
【００８４】
本構成例３の特徴は、
ラウンド演算結果の格納レジスタとしてのＬレジスタ６１１とＲレジスタ６１２各々の入力部に、各レジスタに対する３２ビット格納データの各４ビット毎に対応するエラー検出用のパリティデータを生成するパリティ生成回路６２１，６３１を設定し、
Ｌレジスタ６１１とＲレジスタ６１２各々にパリティ（ＰＬ／ＰＲ）情報格納用レジスタ６２２，６３２を付加し、
パリティ（ＰＬ／ＰＲ）情報格納用レジスタ６２２，６３２各々の出力部にパリティチェック回路６２３，６３３を配置し、さらに、
パリティチェック回路６２３，６３３において、レジスタ格納データ中のいずれかの４ビットデータにエラーが検出された場合、Ｆ関数部６１３において、エラーの検出された４ビットレジスタ値と、固定値との排他論理和（ＸＯＲ）演算を実行する回路を配置し、
さらに、Ｌレジスタ６１１格納データのエラー発生情報をＲレジスタ側に伝達するためのスイッチ６５１を設けたものである。
【００８５】
図１２を参照して、本構成例の暗号処理装置の処理について説明する。この構成において、スイッチＳＷ１，スイッチＳＷ２は従来構成と同様に動作する。また、新規に付加されたスイッチＳＷ３は、スイッチＳＷ１と同じタイミングで動作し、入力されたデータが初期置換部（ＩＰ）６０１においてＩＰ置換されてラウンド演算回路に入力されている期間は"ａ"側に接続され、ラウンド演算が開始されると"ｂ"側に接続される。
【００８６】
初期置換部（ＩＰ）６０１において初期置換されたデータは、Ｌレジスタ６１１とＲレジスタ６１２各々に供給されると共にパリティ生成回路６２１，６３１に入力される。パリティ生成回路６２１，６３１では、Ｆ関数部６１３を構成するＳ−ｂｏｘの"Ｓ１"〜"Ｓ８"の入力ビットに対応する４ｂｉｔずつのデータに対して、各々エラー検出用データとしてのパリティデータが計算される。
【００８７】
パリティ生成回路６２１，６３１において算出された４ビット単位のパリティデータは、Ｌレジスタ６１１とＲレジスタ６１２各々に対するデータ格納に併せて、パリティ（ＰＬ／ＰＲ）情報格納用レジスタ６２２，６３２に格納される。この時、パリティ情報格納用レジスタ（ＰＲ）６３２の入力は排他論理和（ＸＯＲ）演算部６５２の出力であるが、排他論理和（ＸＯＲ）演算部６５２の入力の一方はスイッチＳＷ３によって接地されており、オール０に設定されているため、パリティ情報格納用レジスタ（ＰＲ）６３２の入力は、パリティ生成回路６３１において算出された４ビット単位のパリティデータが変更されることなくそのまま格納されることになる。
【００８８】
Ｌレジスタ６１１とＲレジスタ６１２各々に格納されたデータが読み出され、ラウンド演算が開始されると、このラウンド演算開始に並行して、Ｌレジスタ６１１とＲレジスタ６１２各々に格納されたデータと、パリティ（ＰＬ／ＰＲ）情報格納用レジスタ６２２，６３２に格納されたパリティデータが、パリティチェック回路６２３，６３３にそれぞれ入力される。
【００８９】
パリティチェック回路６２３，６３３では、パリティデータに基づいて、Ｌレジスタ６１１とＲレジスタ６１２から入力したデータについて、４ビット単位でのエラー発生の有無を判定する。
【００９０】
パリティチェック回路６２３，６３３におけるエラーチェック結果は、Ｆ関数部６１３に入力される。Ｒｉｇｈｔ側のパリティチェック回路６３３のエラー検出情報は、直接、Ｆ関数部６１３に入力される。また、Ｌｅｆｔ側のパリティチェック回路６２３によって検出されたエラー情報は、スイッチＳＷ３を介して、Ｒｉｇｈｔ側に設定されたパリティ生成回路６３１の出力との排他論理和（ＸＯＲ）演算部６５２に入力され、この結果が、パリティ情報格納用レジスタ（ＰＲ）６３２に入力されることになり、パリティ情報格納用レジスタ（ＰＲ）６３２に入力されるデータの変化が発生し、この変化をパリティチェック回路６３３において検出することになり、パリティチェック回路６３３は、Ｌレジスタ６１１とＲレジスタ６１２各々に格納されたデータのエラー発生の有無を４ビット単位で検出することになる。
【００９１】
このエラー検出情報は、Ｆ関数部６１３に入力される。本構成例におけるＦ関数部６１３の構成を図１３に示す。Ｆ関数部６１３では、前述したように、各ラウンドのレジスタＲの拡張値６７１と、ラウンド鍵Ｋｎ６７２を入力値とした処理が行なわれる。
【００９２】
本処理例では、図１２に示したパリティチェック回路６３３からのパリティチェック結果６６１がＦ関数部６１３に入力される。パリティチェック回路６３３からのパリティチェック結果６６１が、いずれかの４ビットデータにエラーがあることを示す場合、Ｆ関数部６１３に設定された固定値または乱数値としての変換用データ６７３が使用され、入力値が拡張された値６７１と、ラウンド鍵Ｋｎ６７２との排他論理和（ＸＯＲ）演算結果に対して、さらに排他論理和（ＸＯＲ）演算が実行された後、Ｓボックスに入力される。
【００９３】
パリティチェック回路６３３からのパリティチェック結果６６１が、エラーがないことを示す場合は、変換用データ６７３にはオール"０"が設定され、従来の処理と同様、入力値が拡張された値６７１と、ラウンド鍵Ｋｎ６７２との排他論理和（ＸＯＲ）演算結果がＳボックスに入力され正常なラウンド演算が実行される。
【００９４】
前述したように、ＤＦＡ攻撃は、正常演算時の演算結果と演算途中でビット反転が生じた時の演算結果の比較により鍵を解析する攻撃方法である。これは、先に式９を参照して説明した通り、以下の式、
Ｐ−１［Ｒ１６（ＸＯＲ）Ｒ１６'］＝Ｐ−１［Ｆ（Ｌ１６，Ｋ１６）］（ＸＯＲ）Ｐ−１［Ｆ（Ｌ１６'，Ｋ１６）］・・・（式１２）
が成立する値を求めることで解析を行なうものである。
【００９５】
本構成例では、図１３に示すＦ関数部の構成を適用し、パリティチェック回路６３３からのパリティチェック結果６６１が、いずれかの４ビットデータにエラーがあることを示す場合、Ｆ関数部６１３に設定された固定値または乱数値としての変換用データ６７３が使用され、入力値が拡張された値６７１と、ラウンド鍵Ｋｎ６７２との排他論理和（ＸＯＲ）演算結果に対して、さらに排他論理和（ＸＯＲ）演算が実行された後、Ｓボックスに入力する。この結果、Ｓボックスに入力される値は、レジスタ値を故意に変更させたビット列を、さらに変更したビット列となる。この結果、上記式（式１２）を成り立つデータを解析しても、正確な鍵情報が得られることはない。
【００９６】
本構成例におけるＦ関数部６１３において実行される処理について、図１４を参照して説明する。図１４には、
（１）Ｒ１５Ｒｅｇ：ラウンド１５のラウンド演算結果としてＲレジスタに格納されたデータ、
（２）ＥＸ［Ｒ１５］：Ｒ１５Ｒｅｇの拡大置換（３２ビット→４８ビット）によって生成されたデータ、
（３）変換用ｄａｔａ：レジスタ格納値にエラー検出された際に適用される排他論理和（ＸＯＲ）用のデータ
（４）ＥＸ［Ｒ１５］'：ＥＸ［Ｒ１５］と変換用ｄａｔａの排他論理和（ＸＯＲ）演算結果
（５）Ｋ１６：ラウンド１６に適用されるラウンド鍵、
（６）Ｓｂｏｘ−ｉｎ：Ｓボックスの入力、
（７）Ｓｂｏｘ−ｏｕｔ：Ｓボックスの出力、
これらのデータを示している。
【００９７】
図１４に示す例は、ラウンド１６の処理の際のデータ処理を示しており、図１２に示すＲレジスタ６１２の格納データ中、図１４の（１）Ｒ１５Ｒｅｇ、すなわちＲレジスタ格納値の最初の４ビットにエラービットが含まれる場合の処理例を示している。すなわちＤＦＡ攻撃が実行されている状態である。図１４に示すｐ０〜ｐ８は、パリティチェック回路における４ビット単位のパリティを示している。これらの情報に基づいてパリティ演算が実行され、その演算結果に基づいて変換用データが設定される。
【００９８】
ここで、パリティチェック回路６３３は、Ｓ−ｂｏｘ"Ｓ１"に対応する入力データにエラーがあり攻撃があったことを検出する。このエラー検出情報は、Ｆ関数部６１３に入力され、Ｆ関数部６１３では、先に図１３を参照して説明したように、Ｓ−ｂｏｘに対するデータ入力以前に、"Ｓ１"に対応する６ｂｉｔデータに対して、図１４（３）に示す変換用データを適用して、排他論理和（ＥＯＲ）演算を実行して、その結果をＳボックスに入力する処理を行なう。
【００９９】
Ｓ−ｂｏｘ"Ｓ１"に対応する入力データは、本来、図１４に示すレジスタＲの格納値である（１）Ｒ１５Ｒｅｇの拡大置換データ（２）ＥＸ［Ｒ１５］と、ラウンド鍵Ｋ１６との排他論理和演算結果であるが、エラー検出された場合は、さらに、図１４に示す（３）変換用データとの排他論理和（ＸＯＲ）演算が実行されて、この結果がＳボックスに入力される。
【０１００】
最初のＲレジスタの格納データの最初の４ビットの拡大置換データ（６ビット）は、図１４に示す（３）変換用データ列、例えばオール０と異なる固定値"００１０１０（２）"を適用して、排他論理和演算が行なわれる。なお、同様に、Ｓボックス"Ｓ２"〜"Ｓ８"に対応する入力データについても、（３）変換用データとの排他論理和（ＸＯＲ）演算が実行されるが、レジスタ格納データ中、４ビット単位でパリティエラーの検出が実行され、エラーの検出されていないビット部分に対しては、（３）変換用データは全て［０］に設定され、Ｓボックスの入力値が変化しない設定とされる。
【０１０１】
この場合、エラーの検出された最初の４ビットに対応するＳボックス入力値は、本来の入力値と異なる結果となり出力もレジスタ格納値との直接的な対応の解析が不可能なデータとして出力される。この結果、Ｓボックスの出力の解析を実行してもラウンド鍵Ｋｎの解析は不可能となる。
【０１０２】
通常のＤＦＡ攻撃を想定しての解析を行なう場合、前述したように、
Ｐ−１［Ｒ１６（ＸＯＲ）Ｒ１６'］＝ａ０００００００（１６）
＝Ｐ−１［Ｆ（Ｌ１６，Ｋ１６）］（ＸＯＲ）Ｐ−１［Ｆ（Ｌ１６'，Ｋ１６）］・・（式１３）
上記式に基づいて解析を行なうが、この時求まる"Ｓ１"に対応する６ｂｉｔ鍵の候補は、
"０ａ（１６）"，"０ｅ（１６）"，"１０（１６）"，"１４（１６）"，"３７（１６）"
となる。これは、（３）変換用データの影響を持つデータに基づいて解析された結果であり、正しいラウンド鍵"３６（１６）"は含まれない。結果的にラウンド鍵の解析には失敗することとなる。
【０１０３】
次に、図１２のＬレジスタ６１１に格納されたデータがＤＦＡ攻撃によって変更された場合について説明する。例えば、ラウンド１５で、ラウンド１４の終了時のＬレジスタ格納値Ｌ１４の３２ビットデータ中の１つのビット（例えば先頭４ビット中の第３ビット（ｂ２））の値を"０"から"１"に反転した場合、Ｌレジスタ格納値Ｌ１４のデータは、Ｆ関数部６１３の出力と排他論理和（ＸＯＲ）演算部６１４において排他論理和（ＸＯＲ）演算を行なった後に、Ｒレジスタ６１２に供給される。
【０１０４】
従って、ラウンド１５の終了時点のＲレジスタ格納値Ｒ１５には、反転されたビット（ｂ２）が内在するが、パリティ生成回路６３１は、この入力値に対してパリティデータを生成し、また、パリティチェック回路６３３は、このパリティデータに基づくパリティチェックを行なうため、エラーの検出はできない。
【０１０５】
しかし、ラウンド１５の演算時に、Ｌレジスタ格納値Ｌ１４のデータは、Ｌｅｆｔ側のパリティチェック回路６２３にも供給され、このパリティチェック回路６２３におけるパリティチェックで、Ｌレジスタ格納値Ｌ１４のデータのエラーが検出される。
【０１０６】
例えば、４ビット単位のパリティチェックにおいて上位４ｂｉｔにエラーが内在することが認識されたとする。この情報（パリティデータ）はスイッチＳＷ３，６５１を介してＲｉｇｈｔ側の排他論理和演算部６５２に入力される。排他論理和演算部６５２では、Ｒレジスタ６１２に対する入力データのパリティデータと排他論理和演算（ＸＯＲ）がなされ、その結果が、パリティ情報格納用レジスタ（ＰＲ）６３２に格納されることになる。
【０１０７】
従って、ラウンド１６の演算に移行した時、パリティチェック回路６３３におけるパリティチェック処理において、上位４ｂｉｔのエラーが検出され、Ｒレジスタ格納値に基づくエラー検出時の処理と同様の処理が可能となる。すなわち、図１４を参照して説明した、Ｒレジスタ格納値Ｒ１５ビット（ｂ２）の値を"０"から"１"に反転した場合と同様に、Ｓ−ｂｏｘに入る前の段階でＳ１"に対応する６ｂｉｔデータに対して固定値"００１０１０（２）"を適用した排他論理和（ＸＯＲ）演算を行ない、Ｓ−ｂｏｘの入力値を通常の入力値と異なる値に設定する。
【０１０８】
この処理の結果、結果的にＳボックスの出力の解析を試みても、誤った６ｂｉｔ鍵の候補、すなわち、
"０ａ（１６）"，"０ｅ（１６）"，"１０（１６）"，"１４（１６）"，"３７（１６）"
を取得することになり、結果的に正しい鍵"３６（１６）"を検出することができず、ＤＦＡ攻撃は失敗する。
【０１０９】
最後に、上述の暗号処理を実行するデバイスとしてのＩＣモジュール７００の構成例を図１５を参照して説明する。上述の処理は、例えばＰＣ、ＩＣカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図１５に示すＩＣモジュール７００は、これら様々な機器に構成することが可能である。
【０１１０】
図１５に示すＣＰＵ(Central processing Unit)７０１は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、さらに上述した各シーケンスに従った暗号処理シーケンスなどの制御を実行するプロセッサである。メモリ７０２は、ＣＰＵ７０１が実行するプログラム、あるいは演算パラメータとしての固定データを格納するＲＯＭ（Read-Only-Memory）、ＣＰＵ７０１の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるＲＡＭ（Random Access Memory）等からなる。また、メモリ７０２は暗号処理に必要な鍵データ等の格納領域として使用可能である。データ等の格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。
【０１１１】
暗号処理部７０３は、例えば上述したＤＥＳアルゴリズムなど複数段のラウンド関数の繰り返し処理を含む暗号アルゴリズムを実行する暗号処理部である。乱数発生器７０４は、暗号処理に適用する乱数、例えば前述の構成例３において説明したＦ関数部においてレジスタ格納ビットのエラーが検出された場合に利用する排他論理和演算用の変換用データの生成などに適用される。
【０１１２】
送受信部７０５は、外部とのデータ通信を実行するデータ通信処理部であり、例えばリーダライタ等、ＩＣモジュールとのデータ通信を実行し、ＩＣモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。クロック７０６は、暗号処理装置内の処理タイミング制御用信号供給部として適用される
【０１１３】
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、冒頭に記載した特許請求の範囲の欄を参酌すべきである。
【０１１４】
なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
【０１１５】
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【産業上の利用可能性】
【０１１６】
本発明の構成によれば、処理アルゴリズムを複雑化させることなく、ＤＦＡ解析による暗号解析の困難性を高めた暗号処理装置が実現される。
【０１１７】
本発明の構成では、例えばＤＥＳなど複数段のラウンド演算の繰り返し処理を含む暗号アルゴリズムを実行する暗号処理装置において、ラウンド演算の結果を格納するレジスタの格納データに対応するエラー訂正情報またはエラー検出情報を生成し、エラー検証データに基づいて、レジスタ格納データのエラー検出またはエラー訂正を実行する構成とし、レジスタ格納データにエラーが検出された場合、
エラーを訂正したデータに基づいてラウンド演算を実行する、または、
ラウンド演算を停止する、あるいは、
故意にデータをさらに変更してラウンド演算を実行する、
これらのいずれかの処理を実行する構成としたので、実質的にＤＦＡ解析による鍵の解析が不可能となり、安全性の高い暗号処理装置が実現される。
【図面の簡単な説明】
【０１１８】
【図１】ＤＥＳ暗号処理の基本構成を示す図である。
【図２】各ラウンドを構成するラウンド関数部の構成を示す図である。
【図３】Ｆ関数の構成を示す図である。
【図４】ラウンドフローの構成を説明する図である。
【図５】Ｆ関数部の処理について説明する図である。
【図６】Ｆ関数部の処理の具体例について説明する図である。
【図７】ＤＦＡ攻撃について説明する図である。
【図８】ＤＦＡ攻撃がなされた場合のＦ関数部の処理の具体例について説明する図である。
【図９】一般的なＤＥＳ暗号処理構成を説明する図である。
【図１０】本発明の一実施例（構成例１）に係る暗号処理構成を説明する図である。
【図１１】本発明の一実施例（構成例２）に係る暗号処理構成を説明する図である。
【図１２】本発明の一実施例（構成例３）に係る暗号処理構成を説明する図である。
【図１３】本発明の一実施例（構成例３）に係る暗号処理構成におけるＦ関数部の処理について説明する図である。
【図１４】本発明の一実施例（構成例３）に係る暗号処理構成におけるＦ関数部の処理の具体例について説明する図である。
【図１５】本発明の構成が適用可能な暗号処理実行デバイスとしてのＩＣモジュールの構成例を示す図である。
【符号の説明】
【０１１９】
１１０  ラウンド関数部
１１１  初期置換部
１１２，１１３  変換部
１１４  逆置換部
１２０  鍵スケジュール部
１２１  マスター鍵（秘密鍵）置換部
１２２，１２３  鍵生成部
１７１  拡張部
１７２  置換部
１８１  Ｓボックス
２０１，２０２  レジスタ
２２１〜２２３  レジスタ
３０１  初期置換部
３０２  逆置換部
３１０  ラウンド関数部
３１１  Ｌレジスタ
３１２  Ｒレジスタ
３１３  Ｆ関数部
３１４  排他論理和演算（ＸＯＲ）部
４０１  初期置換部
４０２  逆置換部
４１０  ラウンド関数部
４１１  Ｌレジスタ
４１２  Ｒレジスタ
４１３  Ｆ関数部
４１４  排他論理和演算（ＸＯＲ）部
４２１，４３１  エラー訂正コード生成回路（ＥＣＣ回路）
４２２，４３２  ＥＣＣコードレジスタ
４２３，４３３  エラー訂正回路（Ｓｙｎｄｒｏｍｅ生成回路）
５０１  初期置換部
５０２  逆置換部
５１０  ラウンド関数部
５１１  Ｌレジスタ
５１２  Ｒレジスタ
５１３  Ｆ関数部
５１４  排他論理和演算（ＸＯＲ）部
５２１，５３１  パリティ生成回路
５２２，５３２  パリティ情報格納用レジスタ
５２３，５３３  パリティチェック回路
６０１  初期置換部
６０２  逆置換部
６１０  ラウンド関数部
６１１  Ｌレジスタ
６１２  Ｒレジスタ
６１３  Ｆ関数部
６１４  排他論理和演算（ＸＯＲ）部
６２１，６３１  パリティ生成回路
６２２，６３２  パリティ情報格納用レジスタ
６２３，６３３  パリティチェック回路
６５１  スイッチ
６５２  排他論理和演算部
６７１  レジスタＲ格納値
６７２  ラウンド鍵
６７３  変換用データ
７００  ＩＣモジュール
７０１  ＣＰＵ(Central processing Unit)
７０２  メモリ
７０３  暗号処理部
７０４  乱数発生器
７０５  送受信部
７０６  クロック
【図１】
2007174024.tif 000003
【図２】
2007174024.tif 000004
【図３】
2007174024.tif 000005
【図４】
2007174024.tif 000006
【図５】
2007174024.tif 000007
【図６】
2007174024.tif 000008
【図７】
2007174024.tif 000009
【図８】
2007174024.tif 000010
【図９】
2007174024.tif 000011
【図１０】
2007174024.tif 000012
【図１１】
2007174024.tif 000013
【図１２】
2007174024.tif 000014
【図１３】
2007174024.tif 000015
【図１４】
2007174024.tif 000016
【図１５】
2007174024.tif 000017