(57)【要約】【課題】ＨＤ２リークをなくし、ＤＰＡ対策および検証をレジスタ並びにその出力信号に対してのみ行うことができ、電力解析に対する耐性を向上させることが可能な暗号処理装置を提供する。【解決手段】演算用データを格納する第１レジスタ１０３と、演算用データを格納する第２レジスタ１０４と、非線形変換部としてＳｂｏｘ１０７３を有し、第２レジスタ１０４の格納値に対してラウンド演算を行うラウンド演算部１０７と、第１レジスタ１０３の格納値に対して逆置換を行い、逆置換した値をＳｂｏｘ１０７３に出力する逆置換部１０８と、を有し、Ｓｂｏｘ１０７３は、Ｓｂｏｘテーブル値と逆置換された第１レジスタ１０３の値との排他的論理和演算した値を入力として非線形変換処理を行い、ラウンド演算部１０７は、ラウンド演算結果を第２レジスタ１０４に出力する。【選択図】図５
2011002790.tif 000002
【特許請求の範囲】
【請求項１】
演算用データを格納する第１レジスタと、
演算用データを格納する第２レジスタと、
非線形変換部としてＳｂｏｘを有し、上記第２レジスタの格納値に対してラウンド演算を行うラウンド演算部と、
上記第１レジスタの格納値に対して逆置換を行い、逆置換した値を上記Ｓｂｏｘに出力する逆置換部と、を有し、
上記Ｓｂｏｘは、
Ｓｂｏｘテーブル値と上記逆置換された上記第１レジスタの値との排他的論理和演算した値を入力として非線形変換処理を行い、
上記ラウンド演算部は、
ラウンド演算結果を上記第２レジスタに出力する
暗号処理装置。
【請求項２】
上記ラウンド演算部は、
上記第２レジスタの格納値データのビットを拡張する拡張部と、
上記拡張部の拡張データと鍵との排他的論理和演算を行い、当該演算結果を上記Ｓｂｏｘに供給する排他的論理和演算部と、
上記Ｓｂｏｘの非線形変換結果のビット位置の入れ替え処理を行う置換部と、を含む
請求項１記載の暗号処理装置。
【請求項３】
上記第１レジスタに入力平文を乱数攪乱した値を格納する第１乱数演算部と、
上記第２レジスタに入力平文を乱数攪乱した値を格納する第２乱数演算部と、
上記逆置換部の出力を乱数攪乱して上記Ｓｂｏｘに供給する第３乱数演算部と、
上記鍵を乱数攪乱して上記ラウンド演算部の上記排他的論理和演算部に供給する第４乱数演算部と、を有する
請求項２記載の暗号処理装置。
【請求項４】
上記第１および第２乱数演算部は、
入力平文と乱数との排他的論理和演算を行い、
上記第３乱数演算部は、
上記逆置換部の出力と乱数との排他的論理和演算を行い、
上記第４乱数演算部は、
上記鍵と乱数との排他的論理和演算を行う
請求項３記載の暗号処理装置。
【請求項５】
上記第２乱数演算部と上記第４乱数演算部は、
最初のラウンドのみ同じ乱数を用いた排他的論理和演算を行う
請求項４記載の暗号処理装置。
【請求項６】
出力する演算結果と乱数との排他的論理和演算を行って乱数を解除する乱数解除部を有する
請求項４または５記載の暗号処理装置。
【請求項７】
１ラウンドはプリチャージ相とエバリュエーション相により形成される
請求項１から６のいずれか一に記載の暗号処理装置。
【請求項８】
前記暗号処理装置は、ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）アルゴリズムに従った暗号処理演算を実行する
請求項１から７のいずれか一に記載の暗号処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、たとえばＩＣカードに適用される暗号処理装置に関し、さらに詳細には、暗号解析処理、攻撃処理として知られる電力解析に対する耐性を向上させた暗号処理装置に関するものである。
【背景技術】
【０００２】
ＩＣカードでは、ホストコンピュータとデータのやり取りを行う時、その過程でＩＣカードに格納されている秘密情報が漏れても問題を発生させないために、やり取りするデータには暗号化したデータを用いる。
【０００３】
この暗号化の方法の１つとして、ＤＥＳ（Data Encryption Standard）がある。
ＤＥＳでは、データの暗号化にはＩＣカードの所有者とホストコンピュータが同じ鍵を所有し、データの送信側はデータをその鍵で暗号化して送信し、データの受信者は同じ鍵で復号化してメッセージを取り出す。
【０００４】
通信の過程で悪意の第三者が盗聴しても、鍵を有していない限りは復号化してメッセージを取り出すことは困難である。
また、暗号化・復号化の時に使う鍵は、ＩＣカード内のＥＥＰＲＯＭ等の不揮発性メモリに格納される。
そして、暗号化・復号化時にはＣＰＵを介さないで直接ＩＣカード内の暗号エンジンに転送されるような制御により、ＩＣカードの所有者やＩＣカードの開発エンジニアすら鍵データを取り出すことが不可能な構成を採ってセキュリティを保持している。
【０００５】
しかし、ＩＣカードの消費電流を測定し、それに統計処理を施して鍵を取り出すという攻撃方法（ＤＰＡ：Differential Power Analysis）が P.Kocher らにより報告された。
【０００６】
このＤＰＡ攻撃では、異なる１０００個程度の平文を用いて暗号化演算を行ってその時の消費電流波形を測定し、その消費電流を統計処理することにより鍵を取り出すことが可能となる。
この論文に記載されている攻撃方法は、次の処理を行う。
＜１＞Ｓｂｏｘの構成要素（Ｓ0〜Ｓ7）の１つを選択する（たとえばＳ0）。
＜２＞それに対応する６bitの鍵を推定して複数の平文でのＤＥＳのシミュレーション（simulation）を行う。
＜３＞そのシミュレーション結果で、Ｓ0 出力のＬＳＢが“０”か“１”に応じて各平文に対応する消費電流波形を２つのグループに分類する。
＜４＞その差分をとってピーク電流の有無により、推定した鍵の妥当性を判断する。
【０００７】
推定した６bit鍵が正しい場合、着目したノードには、一方のグループには“０”のみが、他方のグループには“１”のみが現われ、その差分を取ればピーク電流が流れる。
このとき、着目したノード以外（たとえばＳ1〜Ｓ7）では、そのノードに着目してグループ分けしたわけではないので、平文を変えての十分な数の暗号化演算を行った場合、２つのグループの各ノードにほぼ同数の“０”と“１”が現われる。そして、これらの動作の電流成分に関してはグループ間の差分を採ってもピーク電流は現われない。
このため、ピーク電流の有無は、着目したＳ0に対応する６bit鍵の妥当性にのみ依存した電流となり、これによりＤＰＡ攻撃が可能となる。
【０００８】
ＤＰＡ攻撃に対する対策法としては、たとえば特許文献１，２に開示されている。
【０００９】
しかし、Ｓｂｏｘをメモリではなく、ロジック回路で構成する場合、各Ｓｂｏｘ の出力値に起因する消費電流の差異はメモリで構成する場合に比べてかなり小さくなり、鍵の取り出しはかなり困難になる。
一方、Ｓｂｏｘ の出力は、Ｆ関数内で置換（Ｐ）処理後に左（Ｌeft）データとＥＸＯＲ演算されてＲ（Ｒight）レジスタに格納される。この演算結果の格納時には、格納前のデータと格納データが異なるビットにおいて、レジスタ出力の反転が起こり、これによってそれにつながる配線で充放電電流が流れる。この時の変化電流に対してもＤＰＡ攻撃は可能となる。
【００１０】
図１は、ＤＥＳ演算回路の構成を示す図である。
図２は、Ｓｂｏｘの構成例を示す図である。
【００１１】
このＤＥＳ演算回路１０は、図１に示すように、初期置換部［ＩＰ（Initial Permutation）］１１、スイッチ１２Ｌ，１２Ｒ、左レジスタ（Ｌレジスタという）１３、および右レジスタ（Ｒレジスタ）１４を有する。
さらに、ＤＥＳ演算回路１０は、第１プリチャージ（Pre Charge）制御部１５、第２プリチャージ制御部１６、Ｆ関数部１７、ＥＸＯＲ演算部１８、逆置換部（ＩＰ-1）１９、および暗号文出力部(Crypto)２０を有する。
【００１２】
Ｆ関数部１７は、図１に示すように、非線形処理を実行する複数（図１では８）のＳボックス（Ｓｂｏｘ）Ｓ０〜Ｓ７を有する。前段からのＦ関数入力値、すなわち、Ｒ（ｎ−１）は拡張部(Expand)１７−１によって４８ビットに拡大され、さらに鍵スケジュール部から入力する鍵（４８ビット）ＫｎとＥＸＯＲ演算部１７−２でＥＸＯＲ演算が実行される。ＥＸＯＲ演算部１７−２の出力が６ビットずつ非線形変換処理を実行する複数のＳｂｏｘＳ０〜Ｓ７に入力される。各ＳｂｏｘＳ０〜Ｓ７では、変換テーブルを適用した６ビットから４ビットへの非線形変換処理が実行される。
ＳボックスＳ０〜Ｓ７からの出力ビット４×８＝３２ビットは、置換部（Ｐ）１７−３に入力されて、ビット位置の入れ替え処理がなされ、Ｆ関数出力３２ビットを生成して出力する。
【００１３】
図２に示すＳｂｏｘはＢＤＤ（Binary Decision Diagram）と呼ばれる構成で、ピラミッド状に配置されたスイッチ回路を、拡張データとラウンド鍵のＥＸＯＲ信号で選択する。この構成で、ＤＰＡ攻撃の対象となるリークには３種類ある。
【００１４】
１つ目は、ハミングディスタンス１（Hamming Distance１：ＨＤ１）と呼ばれるリークである。これは、ＤＥＳの１ラウンドの演算を１クロックサイクルで実行する場合に発生する。この場合、図１のレジスタ出力部のプリチャージ制御部１５，１６は、プリチャージ（ＰＣ）動作を行わない。
【００１５】
図３は、ＨＤ１リークの時の、暗号化時の動作タイミングを示す図である。
図３において、ラウンドの切り替わりで、演算結果がレジスタに格納される時、ＨＤ１リークは、格納データと格納前のデータが異なる場合に発生し、レジスタ格納値の変化およびそのレジスタにつながる負荷配線の充放電電流に起因する電流が原因である。
図３で、暗号化演算で対象となる演算式は以下の式である。＋は排他的論理和演算（ＥＸＯＲ演算）を示す。
【００１６】
［数１］
Ｒ1 ＋ Ｒ0 ＝Ｆ(Ｒ0 ，Ｋ1 ) ＋ Ｌ0 ＋ Ｒ0     ・・・（１）
Ｒ14 ＋ Ｒ15＝Ｆ(Ｒ15，Ｋ16) ＋ Ｒ16 ＋ Ｌ16    ・・・（２）
【００１７】
２つ目は、ハミング重み（Hamming Weight:ＨＷ）と呼ばれるリークである。１ラウンドの演算を、信号線を固定値に設定するプリチャージ相（Pre Charge Phase、休止相）と、演算結果を出力するサイクルであるエバリュエーション相（Evaluation Phase、稼動相）で構成する場合に発生する。
【００１８】
図４は、たとえば、プリチャージ相の固定値を“０”とした場合について、暗号化時のタイミングを示す図である。
【００１９】
図４において、プリチャージ相では全てのレジスタ配線は“０”に設定されている。そして、エバリュエーション相に遷移した時、レジスタの出力配線で、レジスタ格納値が“１”の場合のみ充電電流が流れる。そして、このラウンドが終了してプリチャージ相に遷移する時、同じビットで今度は放電電流が流れ、これらがリーク電流として攻撃の対象となる。暗号化演算で対象となる演算式は以下の式である。
【００２０】
［数２］
Ｒ1 ＝Ｆ(Ｒ0， Ｋ1) ＋ Ｌ0           ・・・（３）
Ｒ14＝Ｆ(Ｒ15，Ｋ16) ＋Ｒ16          ・・・（４）
【００２１】
３つ目は、ハミングディスタンス２（Hamming Distance２：ＨＤ２）と呼ばれるリークである。タイミング制御はＨＷの場合と同じであるが、リークの発生箇所がレジスタとその出力信号線ではなく、Ｆ関数の出力およびＦ関数の先のＥＸＯＲ回路の出力で発生する。
プリチャージ相では、ＬレジスタおよびＲレジスタの出力配線は固定値、たとえば“０”に設定され、これに伴って、Ｆ関数の出力およびその先のＥＸＯＲ回路の出力も固定値“０”を出力しているものとする。
エバリュエーション相に遷移すると、ＬレジスタとＲレジスタの出力配線は各々のレジスタの格納値“Ｌn-1”，“Ｒn-1”に遷移し、この時、レジスタの出力配線では、前述のＨＷリークが発生する。
【００２２】
Ｆ関数の出力は演算結果が確定するまでは固定値“０”の状態で、その先のＥＸＯＲ回路の出力はＬレジスタの値“Ｌn-1”に遷移する。このとき、ＥＸＯＲ演算部の出力で“Ｌn-1”のＨＷリークが発生する。そして、Ｆ関数の演算遅延時間経過以後、Ｆ関数の出力は固定値“０”から演算結果“Ｆ(Ｒn-1，Ｋn）”に遷移し、この時Ｆ関数出力で ＨＷ（Hamming Weight）に起因するリーク電流が流れる。
そして、Ｆ関数出力の変化によって、その先のＥＸＯＲ演算部１８の出力は“Ｌn-1”から“Ｆ(Ｒn-1，Ｋn）＋Ｌn-1”すなわち“Ｒn”に遷移し、この時 “Ｆ(Ｒn-1，Ｋn）”に相当する Hamming Distance に起因するリーク電流が流れる。
この２つは共に式“Ｆ(Ｒn-1，Ｋn）”で表わされるリークであり、これはＦ関数の演算結果であるが、一方で“Ｌn-1 ＋Ｒn＝Ｒn-2 ＋Ｒn”とも表わせ、このリーク電流は２ラウンド間の遷移に相当するため、ＨＤ２と称される。暗号化演算で攻撃の対象となるＨＤ２の演算式は以下となる。
【００２３】
[数３]
Ｌ2  ＋ Ｌ0 ＝Ｆ(Ｒ0， Ｋ1)           ・・・（５）
Ｒ16 ＋ Ｒ14＝Ｆ(Ｌ16，Ｋ16)          ・・・（６）
【００２４】
これらのリーク電流に対して、ＤＰＡ攻撃を行えば、鍵が取り出される可能性がある。この攻撃を阻止するために様々な方法が提案されている。対策方法は大きく分けて、以下の２つに分けられる。
第１に相補構成により、相補回路の一方で信号変化が必ず起こる構成である。
第２に乱数マスクにより、信号変化を攪乱する構成である。
【先行技術文献】
【特許文献】
【００２５】
【特許文献１】特開２００４−３４７９７５号公報
【特許文献２】ＵＳＰ６，２９５，６０６
【発明の概要】
【発明が解決しようとする課題】
【００２６】
しかし、上記第１の相補構成は、相補となる２つの回路の配線負荷容量に差異があると、その差異に起因するリーク電流が流れて依然攻撃の対象となり、相補となる配線容量を揃えるための工夫が必要となる。
第２の乱数マスクは、1st order の攻撃に対しては効果があるが、高次の攻撃に対しては必ずしも完全にリークが抑えられる訳ではなく、高次の攻撃に対してもリーク電流を抑える工夫が必要となる。
【００２７】
本発明は、ＨＤ２リークをなくし、ＤＰＡ対策および検証をレジスタ並びにその出力信号に対してのみ行えば良く、電力解析に対する耐性を向上させることが可能な暗号処理装置を提供することにある。
【課題を解決するための手段】
【００２８】
本発明の観点の暗号処理装置は、演算用データを格納する第１レジスタと、演算用データを格納する第２レジスタと、非線形変換部としてＳｂｏｘを有し、上記第２レジスタの格納値に対してラウンド演算を行うラウンド演算部と、上記第１レジスタの格納値に対して逆置換を行い、逆置換した値を上記Ｓｂｏｘに出力する逆置換部と、を有し、上記Ｓｂｏｘは、Ｓｂｏｘテーブル値と上記逆置換された上記第１レジスタの値との排他的論理和演算した値を入力として非線形変換処理を行い、上記ラウンド演算部は、ラウンド演算結果を上記第２レジスタに出力する。
【発明の効果】
【００２９】
本発明によれば、ＨＤ２リークをなくし、ＤＰＡ対策および検証をレジスタ並びにその出力信号に対してのみ行えば良く、電力解析に対する耐性を向上させることができる。
【図面の簡単な説明】
【００３０】
【図１】ＤＥＳ演算回路の構成を示す図である。
【図２】Ｓｂｏｘの構成例を示す図である。
【図３】ＨＤ１リークの時の、暗号化時の動作タイミングを示す図である。
【図４】プリチャージ相の固定値を“０”とした場合について、暗号化時のタイミングを示す図である。
【図５】本発明の実施形態の一比較例として説明する暗号処理装置としてのＤＥＳ演算回路の構成例を示す図である。
【図６】図５のＤＥＳ演算回路のＳｂｏｘの構成例を示す図である。
【図７】図５のＤＥＳ演算回路の動作を説明するためのタイミングチャートである。
【図８】本発明の第１の実施形態に係る暗号処理装置としてのＤＥＳ演算回路の構成例を示す図である。
【図９】図８のＤＥＳ演算回路のＳｂｏｘの構成例を示す図である。
【図１０】第１の実施形態に係るＤＥＳ演算回路の動作を説明するためのタイミングチャートである。
【図１１】本発明の第２の実施形態に係る暗号処理装置としてのＤＥＳ演算回路の構成例を示す図である。
【図１２】図１１のＤＥＳ演算回路のＳｂｏｘの構成例を示す図である。
【図１３】第２の実施形態に係るＤＥＳ演算回路の動作を説明するためのタイミングチャートである。
【図１４】本発明の構成が適用可能な暗号処理実行デバイスとしてのＩＣモジュールの構成例を示す図である。
【発明を実施するための形態】
【００３１】
以下、本発明の実施形態を図面に関連付けて詳細について説明する。
なお、説明は以下の順序で行う。
１．比較例（乱数マスクを施したＤＥＳ演算回路の構成例）
２．第１の実施形態（ＤＥＳ演算回路の第１の構成例）
３．第２の実施形態（ＤＥＳ演算回路の第２の構成例）
【００３２】
＜１．比較例＞
まず、本発明の実施形態の比較例について説明する。
比較例においては、ＨＤ２リークに対する対策として、乱数マスクを施した対策について説明する。
【００３３】
図５は、本発明の実施形態の一比較例として説明する暗号処理装置としてのＤＥＳ演算回路の構成例を示す図である。
図６は、図５のＤＥＳ演算回路のＳｂｏｘの構成例を示す図である。
【００３４】
このＤＥＳ演算回路１００は、初期置換部［ＩＰ（Initial Permutation）部］１０１、スイッチ１０２Ｌ，１０２Ｒ、第１レジスタとしてのＬレジスタ（Ｌ Ｒｅｇ.）１０３、および第２レジスタとしてのＲレジスタ（Ｒ Ｒｅｇ.）１０４を有する。
ＤＥＳ演算回路１００は、第１プリチャージ制御部（ＰＣ_ＣＴＬ１）１０５、第２プリチャージ制御部（ＰＣ_ＣＴＬ２）１０６、ラウンド演算部としてのＦ関数部１０７、逆置換部（ＩＰ-1）１０９、および暗号文出力部１１０を有する。
【００３５】
ＩＰ置換部１０１の出力とＬスイッチ１０２Ｌの端子ａとの間に第１乱数演算部としてのＥＸＯＲ演算部１１１が配置されている。
ＩＰ置換部１０１の出力とＲスイッチ１０２Ｒの端子ａとの間に第２乱数演算部としてのＥＸＯＲ演算部１１２が配置されている。
Ｆ関数部１０７のＥＸＯＲ演算部１０７２の鍵Ｋｎの供給側に第４乱数演算部としてのＥＸＯＲ演算部１１３が配置されている。
逆置換部（ＩＰ-1）１０９の入力側に乱数解除部としてのＥＸＯＲ演算部１１５，１１６が配置されている。
Ｌレジスタ１０３の値とＦ関数部１０７の出力とのＥＸＯＲ演算を行うＥＸＯＲ演算部１１７が配置されている。
また、Ｓｂｏｘテーブル値と乱数“ｒＳn-1”とのＥＸＯＲ演算を行うＥＸＯＲ演算部１１８が配置されている。
【００３６】
次に、図５のＤＥＳ演算回路の暗号化演算動作について、図７に関連付けて説明する。
図７は、図５のＤＥＳ演算回路の動作を説明するためのタイミングチャートである。
【００３７】
この例では、レジスタのデータは異なる乱数でマスクされる。たとえば、Ｌレジスタ１０３のデータは乱数“ｒＬn-1”で、Ｒレジスタ１０４のデータは乱数“ｒＲn-1”でマスクされる。
この乱数は、この例ではＦ関数部１０７のＥＸＯＲ演算部１０７２でラウンド鍵とのＥＸＯＲ演算後に解除されてＳｂｏｘ１０７３に入力され、Ｓｂｏｘで別の乱数、たとえば“ｒＳn-1”でマスクされてＦ関数部１０７の出力となる。
Ｓｂｏｘ１０７３でのマスクは、ＢＤＤの入力信号として、Ｓｂｏｘテーブル値の代わりにＳｂｏｘテーブル値と乱数値“ｒＳn-1”のＥＸＯＲ信号を用いることによって行っている。
【００３８】
回路動作は、プリチャージ相ではＬレジスタ１０３およびＲレジスタ１０４の出力は固定値、たとえば“０”に固定され、Ｆ関数部１０７の出力も演算結果として“０”を出力しているものとする。
エバリュエーション相に移行して、Ｌレジスタ１０３の出力配線は“ｒＬn-1 ＋ Ｌn-1”に、Ｒレジスタ１０４の出力配線は“ｒＲn-1 ＋ Ｒn-1”に遷移する。
遷移直後は、Ｆ関数部１０７の出力は“０”のままで、Ｆ関数部１０７の出力側のＥＸＯＲ演算部１１７の出力はＬレジスタ１０３の出力値“ｒＬn-1 ＋ Ｌn-1”に遷移する。
Ｆ関数の演算遅延時間経過後、Ｆ関数部１０７の出力は“ｒＳn-1 ＋ Ｆ(Ｒn-1,Ｋn)”に遷移する。
これに伴って、ＥＸＯＲ演算部１１７の出力も“（ｒＬn-1 ＋ Ｌn-1） ＋ （ｒＳn-1 ＋ Ｆ(Ｒn-1,Ｋn)）＝ｒＬn-1 ＋ ｒＳn-1 ＋ Ｒn”に遷移する。
そして、次のラウンドのＲレジスタの攪乱値を“ｒＲn＝ｒＬn-1 ＋ ｒＳn-1”とすると、Ｒレジスタの更新値“ｒＲ ＋ Ｒn”を生成する。
このときのＥＸＯＲ演算部１１７の出力でのＨＤ（Hamming Distance）は“ｒＳn-1 ＋ Ｆ(Ｒn-1,Ｋn)”である。
Ｆ関数部１０７の出力のＨＷリークおよびＥＸＯＲ演算部１１７の出力のＨＤリークは共にＨＤ２リークであるが、共に乱数“ｒＳn-1”でマスクされているため、１次のＤＰＡ攻撃では鍵の取り出しは困難である。ただし、高次のＤＰＡ攻撃を用いれば、鍵の取り出しに成功する可能性がある。
【００３９】
以上、乱数マスクを施したＤＥＳ演算回路を比較例として説明した。
次に、本実施形態に係るＤＥＳ演算回路の好適な構成例について説明する。
【００４０】
本実施形態の暗号処理装置は、ＨＤ２リーク源となるＦ関数の演算結果を信号配線に出力しない構成を採用することによって、ＨＤ２リークをなくし、ＤＰＡ対策および検証をレジスタおよびその出力信号に対してのみ行えばよい構成が実現されている。
具体的には、本実施形態の暗号処理装置は、Ｓｂｏｘの回路設計に当たって、Ｓｂｏｘのテーブル値の代わりに、以下の値を用いる。
第１に、暗号化時にはＳｂｏｘのテーブル値とＬレジスタの値のＥＸＯＲ値を用いる。
第２に、復号化時にはＳｂｏｘのテーブル値とＲレジスタの値のＥＸＯＲ値を用いる。
換言すれば、Ｆ関数部の出力値とレジスタ値とのＥＸＯＲ演算をＦ関数内に取り込む。
そして、Ｆ関数部の出力は、Ｌレジスタの値とＥＸＯＲ演算すること無くそのままＲレジスタの入力に供給する。
なお、以下に説明する第１および第２の実施形態とも、１ラウンド（Round）の演算サイクルはプリチャージ相（Pre-Charge Phase：休止相）とエバリュエーション相（Evaluation Phase：稼動相）により構成される。
また、ＤＥＳ暗号は１６ラウンド（Round）の演算で形成される。
【００４１】
＜２．第１の実施形態＞
図８は、本発明の第１の実施形態に係る暗号処理装置としてのＤＥＳ演算回路の構成例を示す図である。
図９は、図８のＤＥＳ演算回路のＳｂｏｘの構成例を示す図である。
なお、図８においては、理解を容易にするために、図５の構成と同一構成部分は同一符号をもって表している。
【００４２】
本ＤＥＳ演算回路１００Ａは、初期置換部［ＩＰ（Initial Permutation）部］１０１、スイッチ１０２Ｌ，１０２Ｒ、第１レジスタとしてのＬレジスタ（Ｌ Ｒｅｇ.）１０３、および第２レジスタとしてのＲレジスタ（Ｒ Ｒｅｇ.）１０４を有する。
ＤＥＳ演算回路１００Ａは、第１プリチャージ制御部（ＰＣ_ＣＴＬ１）１０５、第２プリチャージ制御部（ＰＣ_ＣＴＬ２）１０６、ラウンド演算部としてのＦ関数部１０７、逆Ｐ置換部１０８、逆置換部（ＩＰ-1）１０９、および暗号文出力部１１０を有する。
【００４３】
このような特徴を有する図８のＤＥＳ演算回路１００Ａの構成および機能ついて具体的に説明する。
【００４４】
ＩＰ置換部１０１は、メッセージを形成する平文に対してＩＰ置換処理を施し、処理後のデータをスイッチ１０２Ｌ、１０２Ｒを介してＬレジスタ１０３およびＲレジスタ１０４に出力する。
【００４５】
スイッチ１０２Ｌの作動接点ａはＩＰ置換部１０１の出力に接続され、作動接点ｂは第２プリチャージ制御部１０６の出力および逆置換部１０９に接続され、固定接点ｃがＬレジスタ１０３の入力に接続されている。
スイッチ１０２Ｒの作動接点ａはＩＰ置換部１０１の出力に接続され、作動接点ｂはＦ関数部１０７の出力および逆置換部１０９に接続され、固定接点ｃはＲレジスタ１０４の入力に接続されている。
【００４６】
Ｌレジスタ１０３は、制御クロックの立ち上がりのタイミングで、スイッチ１０２Ｌを介して入力した、たとえば３２ビットのデータをラッチ（格納）する。
【００４７】
Ｒレジスタ１０４は、制御クロックの立ち上がりのタイミングで、スイッチ１０２Ｒを介して入力した、たとえば３２ビットのデータをラッチ（格納）する。
【００４８】
第１プリチャージ制御部１０５は、Ｌレジスタ１０３にラッチされたデータの出力を制御信号によって制御する。
第１プリチャージ制御部１０５は、プリチャージ相時には、Ｌレジスタ１０３の出力信号線を全てローレベルに設定する。
第１プリチャージ制御部１０５は、エバリュエーション相時には、Ｌレジスタ１０３の格納データＬｎ−１を逆Ｐ置換部１０８に出力する。
【００４９】
第２プリチャージ制御部１０６は、Ｒレジスタ１０４にラッチされたデータの出力を制御信号によって制御する。
第２プリチャージ制御部１０６は、プリチャージ相時には、Ｒレジスタ１０４の出力信号線を全てローレベルに設定する。
第２プリチャージ制御部１０６は、エバリュエーション相時には、Ｒレジスタ１０４の格納データＲｎ−１をＦ関数部１０７に出力する。
【００５０】
Ｆ関数部１０７は、第２プリチャージ制御部１０６によるＲレジスタ１０４の格納データに対して、鍵Ｋｎを用いたＦ関数の演算を行う。
【００５１】
Ｆ関数部１０７の構成を図８および図９に関連付けて説明する。
【００５２】
Ｆ関数部１０７は、図８に示すように、拡張部１０７１、ＥＸＯＲ演算部１０７２、Ｓｂｏｘ１０７３、およびＰ置換部１０７４を有する。
【００５３】
拡張部１０７１は、第２プリチャージ制御部１０６による３２ビットデータに対する拡張処理（ビット拡張処理）を行い、３２ビットから４８ビットに拡張処理後のデータをＥＸＯＲ演算部１０７２に供給する。
【００５４】
ＥＸＯＲ演算部１０７２は、拡張部１０７１の出力データとラウンド鍵（拡張ビットと同じビット数）ＫｎとのＥＸＯＲ（排他的論理和）演算を行い、演算結果をＳｂｏｘ１０７３に出力する。
【００５５】
Ｓｂｏｘ１０７３は、ＥＸＯＲ演算部１０７２の演算結果に対して、逆Ｐ置換部１０８によるデータを用いて非線形変換処理を行う。
Ｓｂｏｘ１０７３は、たとえば変換テーブルを適用した４８ビットから３２ビットへの非線形処理を実行する。
Ｓｂｏｘ１０７３は、非線形処理を実行する複数（図８では８）のＳボックス（Ｓｂｏｘ）Ｓ０〜Ｓ７を有する。各ＳボックスＳ０〜Ｓ７では、変換テーブルを適用した６ビットから４ビットへの非線形変換処理が実行される。
ＳボックスＳ０〜Ｓ７からの出力ビット４×８＝３２ビットは、置換部１０７４に入力される。
【００５６】
図９は、サブＳｂｏｘＳ０について示している。
図９の構成はＢＤＤ(Binary Decision Diagram)と呼ばれる構成で、スイッチ回路１０７３１がピラミッド状に配置されている。
各スイッチ回路１０７３１の入力が仕様で定義されているテーブルに基づいて結線され、これを４個並べることによりサブＳｂｏｘＳ０が構成される。
本実施形態のＳｂｏｘ１０７３は、テーブル値と逆Ｐ置換部１０８によるデータとのＥＸＯＲ演算を行う複数のＥＸＯＲ演算器を含むＥＸＯＲ演算器群１０７３２を有する。
【００５７】
置換部１０７４は、Ｓｂｏｘ１０７の出力データのビット位置の入れ替え処理を行い、その結果を３２ビットのデータとして出力する。
【００５８】
このように、本第１の実施形態においては、Ｆ関数部１０７で暗号化時にはＳｂｏｘ１０７３のテーブル値とＬレジスタ１０３の値のＥＸＯＲ値を用いる。
すなわち、本第１の実施形態においては、Ｆ関数部１０７の出力値とレジスタ値とのＥＸＯＲ演算をＦ関数内に取り込んでいる。
そして、本実施形態においては、Ｆ関数部１０７の出力は、Ｌレジスタ１０３の値とＥＸＯＲ演算すること無くそのままＲレジスタ１０４の入力に供給する。
【００５９】
逆置換部１０９では、データの逆置換変換（ＩＰ-1）を実行し、暗号文出力部１１０を介して暗号文として出力する。
【００６０】
次に、第１の実施形態に係るＤＥＳ演算回路の暗号化演算動作について、図１０に関連付けて説明する。
図１０は、第１の実施形態に係るＤＥＳ演算回路の動作を説明するためのタイミングチャートである。
【００６１】
本第１の実施形態では、Ｓｂｏｘ１０７３の出力とＬレジスタ１０３の値のＥＸＯＲ演算回路（図１）が削除され、Ｌレジスタ１０３の値はＦ関数部１０７のＰ置換の逆置換（Ｐ-1 置換）をされてＳｂｏｘ１０７３に入力されるだけになる。
そして、Ｓｂｏｘ１０７３の出力はＰ置換された後、そのままＲレジスタ１０４の入力に供給される。
Ｓｂｏｘ１０７３は、ＢＤＤ構成の場合について図示しているが、前述した比較例として説明した乱数マスク対策において乱数を入力していた信号入力の代わりに、Ｐ-1 置換を行ったＬレジスタの値が入力される構成になっている。
【００６２】
すなわち、Ｓｂｏｘ１０７３の各ビットのＢＤＤでは、本来Ｓｂｏｘのテーブル値が入力される信号入力に、Ｓｂｏｘのテーブル値とそのＳｂｏｘビットに対応するＬレジスタ１０３の値とのＥＸＯＲされた信号が入力されている。
すなわち、ＢＤＤ入力の段階で、入力値は既にＬレジスタ１０３の値とＥＸＯＲされた値になっている。
これらの入力は、拡張データとラウンド鍵のＥＸＯＲ信号によって順次選択されていって最終的なＳｂｏｘ１０７３の出力を得るが、ＢＤＤの入力は全て対応するＬレジスタ１０３の値とＥＸＯＲ演算された値である。
このため、最終的に選択された出力も対応するＬレジスタ１０３の値とＥＸＯＲ演算された値となっている。
したがって、この出力値はＰ置換された後、そのラウンドの演算結果としてＲレジスタ１０４に供給される。
この過程で、ＨＤ２リークの対象となる“Ｆ(Ｒn-1，Ｋn)”はどこにも現れない。
【００６３】
動作タイミングは、前述したように、各ラウンドがプリチャージ相とエバリュエーション相で構成されているものとして説明する。
【００６４】
プリチャージ相のクロックＣＬＫの立ち上がりでレジスタ値が更新されるが、レジスタの出力配線はローレベルに制御され、これにより、Ｓｂｏｘ１０７３の出力もローレベルとなる。
エバリュエーション相でＬレジスタ１０３の値は出力線を経由してＳｂｏｘ１０７３に供給され、Ｓｂｏｘ１０７３のテーブル値とＥＸＯＲされてＢＤＤ構成のＳｂｏｘ１０７３に入力される。
同時に、Ｒレジスタ１０４の値はＦ関数部１０７に入力され、拡張関数および鍵とのＥＸＯＲ演算の遅延後にＳｂｏｘの選択信号として供給される。
この回路遅延により、Ｓｂｏｘ１０７３の選択信号が供給されるまでに、ＢＤＤ構成のＳｂｏｘの入力は確定している。
そして、Ｓｂｏｘ１０７３の出力は、ローレベルから、Ｓｂｏｘ１０７３の選択信号によって選択された信号、すなわち、“Ｆ(Ｒn-1,Ｋn) ＋ Ｌn-1”に遷移し、図１の回路のＳｂｏｘの出力値である“Ｆ(Ｒn-1,Ｋn)”は信号線上に現れない。
そして、この値はそのままＲレジスタ１０４に入力に供給されるため、演算回路の信号パスのどこにもＨＤ２攻撃の対象となる“Ｆ(Ｒn-1,Ｋn)”は現れず、ＨＤ２攻撃は不可能となる。
【００６５】
代わりに、同じタイミングでＲレジスタの格納値“Ｒn”が現れ、これはＨＷの攻撃の対象となるリークである。
しかし、ＤＰＡ対策として、レジスタ格納値に対するＨＷ対策は必須であり、たとえば前述の乱数攪乱対策を採ってレジスタ格納値を攪乱すれば、本実施形態の構成のＦ関数部の出力も乱数攪乱された値となり、同じ対策が作用してＨＷリークを抑えられる。
【００６６】
以上説明したように、本第１の実施形態によれば、ＨＤ２リークが発生しないため、ＨＤ２攻撃で鍵が取り出される可能性はなくなる。
そして、ＨＤ２に対する対策を考慮する必要はなくなる。
【００６７】
＜３．第２の実施形態＞
次に、本発明の第２の実施形態について説明する。
図１１は、本発明の第２の実施形態に係る暗号処理装置としてのＤＥＳ演算回路の構成例を示す図である。
図１２は、図１１のＤＥＳ演算回路のＳｂｏｘの構成例を示す図である。
なお、図１１および図１２においては、理解を容易にするために、図８および図９と同一構成、機能部分は同一符号をもって表している。
【００６８】
本第２の実施形態に係るＤＥＳ演算回路１００Ｂが、図８および図９に示す第１の実施形態に係るＤＥＳ演算回路１００Ａと異なる点は、レジスタ格納値が乱数攪乱されている点にある。
ＤＥＳ演算回路１００ＢとＤＥＳ演算回路１００Ａの回路構成における具体的な差異は次の通りである。
【００６９】
ＩＰ置換部１０１の出力とＬスイッチ１０２Ｌの端子ａとの間に第１乱数演算部としてのＥＸＯＲ演算部１１１が配置されている。
ＩＰ置換部１０１の出力とＲスイッチ１０２Ｒの端子ａとの間に第２乱数演算部としてのＥＸＯＲ演算部１１２が配置されている。
Ｆ関数部１０７のＥＸＯＲ演算部１０７２の鍵Ｋｎの供給側に第４乱数演算部としてのＥＸＯＲ演算部１１３が配置されている。
Ｓｂｏｘ１０７３の逆Ｐ置換部１０８の出力データの供給側に逆Ｐ置換部１０８の出力とデータＰ-1(rＳn-1)とのＥＸＯＲ演算を行う第３乱数演算部としてのＥＸＯＲ演算部１１４が配置されている。
逆置換部（ＩＰ-1）１０９の入力側に乱数解除部としてのＥＸＯＲ演算部１１５，１１６が配置されている。
【００７０】
次に、第２の実施形態に係るＤＥＳ演算回路の暗号化演算動作について、図１３に関連付けて説明する。
図１３は、第２の実施形態に係るＤＥＳ演算回路の動作を説明するためのタイミングチャートである。
【００７１】
入力平文はＩＰ置換部１０１においてＩＰ置換後、左（Left）データと右（Right）データに分けられ、ＥＸＯＲ演算部１１１，１１２で各々乱数“ｒL0”,“ｒR0”とＥＸＯＲ演算後にＬレジスタ１０３，Ｒレジスタ１０４に取り込まれる。
以後、ｎラウンドにおいて、Ｌレジスタ１０３とＲレジスタ１０４に格納されている値に関する乱数成分を各々“ｒLn-1”と“ｒRn-1”と表わすことにする。
すなわち、Ｒレジスタ１０４の格納値は“ｒRn-1 ＋ Ｒn-1”、Ｌレジスタ１０３の格納値は“ｒLn-1 ＋ Ｌn-1”となる。
【００７２】
そして、この例では、ラウンド鍵がＲレジスタ１０４の乱数“ｒRn-1”と同じ乱数でＥＸＯＲ演算部１１３において、ＥＸＯＲされてＦ関数に供給されるものとする。
これにより、Ｆ関数部１０７に入力されたＲレジスタ１０４の値“ｒRn-1 ＋ Ｒn-1”は、ラウンド鍵とのＥＸＯＲ演算で乱数“ｒRn-1”を解除されてＳｂｏｘ１０７３に入力される。
Ｓｂｏｘ１０７３で新たな乱数“rＳn-1”で攪乱される制御がなされるとした場合、次のようになる。
Ｌレジスタ１０３の値“rＬn-1 ＋ Ｌn-1”はＰ-1 置換された後Ｐ-1 置換された乱数“Ｐ-1(rＳn-1)”とＥＸＯＲ演算部１１４でＥＸＯＲされてＳｂｏｘ１０７３に供給され、Ｓｂｏｘ１０７３のテーブル値とＥＸＯＲ演算後にＢＤＤの入力に供給される。
この時、ＢＤＤの入力値は、Ｓｂｏｘ１０７３のテーブル値と“Ｐ-1(ｒＳn-1 ＋ ｒLn-1 ＋ Ｌn-1)”のＥＯＲした値となる。
【００７３】
拡張データとラウンド鍵のＥＸＯＲ結果によって選択されたＳｂｏｘ１０７３の出力は“rＳn-1 ＋ ｒLn-1 ＋ Ｆ(Ｒn-1,Ｋn) ＋ Ｌn-1＝ｒRn ＋ Ｒn”となって、新たな乱数“rＲn（＝rＳn-1 ＋ ｒLn-1）”で攪乱された状態でＲレジスタ１０４に供給される。
この過程で、ＨＤ２攻撃の対象となる、乱数攪乱されたＦ関数出力値“rＳn-1 ＋ Ｆ(Ｒn-1,Ｋn)”はどこにも現れない。
【００７４】
なお、第２乱数演算部としてのＥＸＯＲ演算部１１２と第４乱数演算部としてのＥＸＯＲ演算部１１３は、最初のラウンドのみ同じ乱数を用いた排他的論理和演算を行う。
続くラウンド以降では、第４乱数演算部としてのＥＸＯＲ演算部１１３の乱数は更新されるが、第２乱数演算部としてのＥＸＯＲ演算部１１２の乱数値は変化しない。
【００７５】
以上説明したように、本実施形態によれば、ＨＤ２リークが発生しないため、ＨＤ２攻撃で鍵が取り出される可能性はなくなる。
また、ＨＤ２に対する対策を考慮する必要はなくなる。
そして、ＤＰＡ耐性が向上する。
【００７６】
ここで、上述の暗号処理を実行するデバイスとしてのＩＣモジュール２００の構成例を図１４に関連付けて説明する。
上述の処理は、たとえばＰＣ、ＩＣカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図１４に示すＩＣモジュール２００は、これら様々な機器に構成することが可能である。
【００７７】
図１４において、ＣＰＵ(Central Processing Unit)２０１は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、その他の各種プログラムを実行するプロセッサである。
メモリ２０２は、ＣＰＵ２０１が実行するプログラム、あるいは演算パラメータとしての固定データを格納するＲＯＭ（Read-Only-Memory）を含む。
また、メモリ２０２は、ＣＰＵ２０１の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるＲＡＭ（Random Access Memory）等からなる。
また、メモリ２０２は暗号処理に必要な鍵データ等の格納領域として使用可能である。データ等の格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。
【００７８】
暗号処理部２０３は、たとえば上述したＤＥＳアルゴリズムなど複数段のラウンド関数の繰り返し処理を含む暗号アルゴリズムを実行する暗号処理装置である。
すなわち、暗号処理部２０３には、第１および第２の実施形態に係るＤＥＳ演算回路が適用される。
【００７９】
送受信部２０４は、外部とのデータ通信を実行するデータ通信処理部であり、たとえばリーダライタ等、ＩＣモジュールとのデータ通信を実行し、ＩＣモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。
【００８０】
なお、暗号処理部２０３において適用される各種の制御信号、たとえば前述したスイッチの切り替え制御信号は、クロック生成回路２０５からのクロック信号をトリガにして動作するタイミング発生回路２０６において生成する。そして、生成した信号を暗号処理部２０３に供給することが可能である。
【００８１】
以上、特定の実施形態を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が実施形態の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。
【符号の説明】
【００８２】
１００Ａ，１００Ｂ・・・ＤＥＳ演算回路、１０１・・・初期置換部［ＩＰ（Initial Permutation）部］、１０２Ｌ，１０２Ｒ・・・スイッチ、１０３・・・Ｌレジスタ、１０４・・・Ｒレジスタ、１０５・・・第１プリチャージ制御部（ＰＣ_ＣＴＬ１）、１０６・・・第２プリチャージ制御部（ＰＣ_ＣＴＬ２）、１０７・・・Ｆ関数部、１０８・・・逆Ｐ置換部、１０９・・・逆置換部（ＩＰ-1）、１１０・・・暗号文出力部。
【図１】
2011002790.tif 000003
【図２】
2011002790.tif 000004
【図３】
2011002790.tif 000005
【図４】
2011002790.tif 000006
【図５】
2011002790.tif 000007
【図６】
2011002790.tif 000008
【図７】
2011002790.tif 000009
【図８】
2011002790.tif 000010
【図９】
2011002790.tif 000011
【図１０】
2011002790.tif 000012
【図１１】
2011002790.tif 000013
【図１２】
2011002790.tif 000014
【図１３】
2011002790.tif 000015
【図１４】
2011002790.tif 000016