(57)【要約】【課題】  消費電力の測定による暗号解析を困難としセキュリティレベルの高い暗号処理装置および方法を実現する。【解決手段】  ラウンド関数部に設定される非線形変換処理部（Ｓボックス）を、複数の異なる態様の非線形変換処理を選択的に実行可能な構成とし、ラウンド関数部に入力されるラウンド鍵のビット情報に基づく演算処理の結果を制御ビットとして、非線形変換処理部（Ｓボックス）に出力し、制御ビットに基づいて非線形変換処理態様を決定して、決定した非線形変換処理を実行する。この構成によれば、電力差分解析（ＤＰＡ）を適用した暗号解析に要する計算量を飛躍的に増大させることが可能となり、電力差分解析（ＤＰＡ）による解析困難性を高めることが可能となる。【選択図】  図７
2005134477.tif 000002
【特許請求の範囲】
【請求項１】
複数段のラウンド関数の繰り返し処理を含む暗号アルゴリズムを実行する暗号処理装置であり、
各段のラウンド関数部に設定され、複数の異なる態様の非線形変換処理を選択的に実行可能な構成を持つ非線形変換処理部と、
前記ラウンド関数部に入力されるラウンド鍵のビット情報に基づく演算処理を実行し、前記非線形変換処理部に出力する制御ビットの算出処理を実行する演算部とを有し、
前記非線形変換処理部は、前記演算部から入力する制御ビットに基づいて非線形変換処理態様を決定し、決定した非線形変換処理を実行する構成を有することを特徴とする暗号処理装置。
【請求項２】
前記演算部は、
ラウンド関数部に入力されるラウンド鍵のビット情報に基づくパリティ算出を実行し、
算出したパリティビットを前記非線形変換処理部に対する制御ビットして出力する構成であることを特徴とする請求項１に記載の暗号処理装置。
【請求項３】
前記非線形変換処理部は、ラウンド関数部に複数設定された構成であり、
前記演算部は、ラウンド関数部に入力されるラウンド鍵から選択した複数の異なる部分ビット情報に基づいて、複数の異なるパリティを算出し、算出した複数のパリティをラウンド関数部に設定された複数の非線形変換処理部各々に対応する制御ビットとして出力する構成であることを特徴とする請求項１に記載の暗号処理装置。
【請求項４】
前記演算部は、
ラウンド関数部に設定された複数の非線形変換処理部各々に対応する制御ビットを、
前記複数の非線形変換処理部各々に対応する入出力データとの排他論理和演算の対象とならないラウンド鍵の部分ビット情報に基づくパリティとして算出する構成であることを特徴とする請求項１に記載の暗号処理装置。
【請求項５】
前記演算部は、
ラウンド鍵を構成するｎビットの部分ビットデータを、ガロア体ＧＦ（２ｎ）上の元とみなし、ガロア体上の演算を実行して算出したｎビットデータの構成ビットを、前記非線形変換処理部に設定された複数のラウンド関数部各々に対する制御ビットとして出力する構成であることを特徴とする請求項１に記載の暗号処理装置。
【請求項６】
前記非線形変換処理部は、
複数の非線形変換テーブルを有し、該複数の非線形変換テーブルの適用態様を変更することにより、複数の異なる態様の非線形変換処理を選択的に実行する構成であることを特徴とする請求項１に記載の暗号処理装置。
【請求項７】
複数段のラウンド関数の繰り返し処理を含む暗号アルゴリズムを実行する暗号処理方法であり、
各段のラウンド関数部に入力されるラウンド鍵のビット情報に基づく演算処理を実行し、ラウンド関数部に設定された複数の異なる態様の非線形変換処理を選択的に実行可能な構成を持つ非線形変換処理部に対して、前記演算処理の算出結果からなる制御ビットを出力する演算ステップと、
前記制御ビットを入力し、入力制御ビットに基づいて実行する非線形変換処理態様を決定し、決定した非線形変換処理を実行する非線形変換処理ステップと、
を有することを特徴とする暗号処理方法。
【請求項８】
前記演算ステップは、
ラウンド関数部に入力されるラウンド鍵のビット情報に基づくパリティ算出を実行し、算出したパリティビットを前記非線形変換処理部に対する制御ビットして出力するステップであることを特徴とする請求項７に記載の暗号処理方法。
【請求項９】
前記演算ステップは、
ラウンド関数部に入力されるラウンド鍵から選択した複数の異なる部分ビット情報に基づいて、複数の異なるパリティを算出し、算出した複数のパリティをラウンド関数部に設定された複数の非線形変換処理部各々に対応する制御ビットとして出力するステップであることを特徴とする請求項７に記載の暗号処理方法。
【請求項１０】
前記演算ステップは、
ラウンド関数部に設定された複数の非線形変換処理部各々に対応する制御ビットを、
前記複数の非線形変換処理部各々に対応する入出力データとの排他論理和演算の対象とならないラウンド鍵の部分ビット情報に基づくパリティとして算出するステップであることを特徴とする請求項７に記載の暗号処理方法。
【請求項１１】
前記演算ステップは、
ラウンド鍵を構成するｎビットの部分ビットデータを、ガロア体ＧＦ（２ｎ）上の元とみなし、ガロア体上の演算を実行して算出したｎビットデータの構成ビットを、前記非線形変換処理部に設定された複数のラウンド関数部各々に対する制御ビットとして出力するステップであることを特徴とする請求項７に記載の暗号処理方法。
【請求項１２】
前記非線形変換処理ステップは、
複数の非線形変換テーブルの適用態様を変更することにより、複数の異なる態様の非線形変換処理を選択的に実行するステップであることを特徴とする請求項７に記載の暗号処理方法。
【請求項１３】
複数段のラウンド関数の繰り返し処理を含む暗号アルゴリズムを実行するコンピュータ・プログラムであり、
各段のラウンド関数部に入力されるラウンド鍵のビット情報に基づく演算処理を実行し、ラウンド関数部に設定された複数の異なる態様の非線形変換処理を選択的に実行可能な構成を持つ非線形変換処理部に対して、前記演算処理の算出結果からなる制御ビットを出力する演算ステップと、
前記制御ビットを入力し、入力制御ビットに基づいて実行する非線形変換処理態様を決定し、決定した非線形変換処理を実行する非線形変換処理ステップと、
を有することを特徴とするコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号処理装置および暗号処理方法に関する。さらに詳細には、暗号処理を実行する例えばＩＣモジュール等の演算回路における電力解析に基づく暗号解析に対する耐性の高い暗号処理を実現する暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムに関する。
【背景技術】
【０００２】
昨今、ネットワーク通信、電子商取引の発展に伴い、通信におけるセキュリティ確保が重要な問題となっている。セキュリティ確保の１つの方法が暗号技術であり、現在、様々な暗号化手法を用いた通信が実際に行なわれている。
【０００３】
例えばＩＣカード等の小型の装置中に暗号処理モジュールを埋め込み、ＩＣカードと、データ読み取り書き込み装置としてのリーダライタとの間でデータ送受信を行ない、認証処理、あるいは送受信データの暗号化、復号化を行なうシステムが実用化されている。
【０００４】
暗号処理モジュールにおいては、例えば、平文を入力し暗号文を出力するデータ暗号化処理、あるいは暗号文を入力し平文を出力する復号化処理が実行される。これらの暗号処理は、暗号処理モジュールを構成するハードウェア、例えば半導体による電気的な処理を含む。従って、このような半導体モジュールにおいて暗号処理が実行される際の電力消費を解析することで、暗号処理の適用鍵や、アルゴリズムが解析されてしまうという恐れがある。
【０００５】
例えば、ＩＣ等の演算処理装置に対する攻撃、すなわち暗号解読攻撃として、処理時間を解析することによる秘密情報を推定するタイミングアタック（ＴＡ：Ｔｉｍｉｎｇ  ａｔｔａｃｋ）、暗号処理時の消費電力の観測により秘密情報を推定する単純電力解析（ＳＰＡ：Ｓｉｍｐｌｅ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）、さらに、大量のデータに対する暗号処理における消費電力を測定し、それらの測定データを統計的に解析することにより秘密情報を推定する電力差分解析（ＤＰＡ：Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）等がある。
【０００６】
一般的な暗号処理装置は、データ入力部と記憶部と暗号処理部、およびデータ出力部とから構成されており、例えば入力データの暗号化を行う場合は、次のように動作する。すなわち、データ入力部から暗号処理部に平文が入力される。暗号処理部は、例えばＤＥＳ（Data Encryption Standard）などの暗号処理アルゴリズムを実行する処理部において一定の暗号処理アルゴリズムに従ったデータ処理がなされる。
【０００７】
暗号処理アルゴリズムの実行過程において生成される中間データを逐次、記憶部に格納し、また記憶部に格納した中間データを取得して予め定められた一定の処理順序に従って暗号化処理が実行される。暗号処理部において、予め定められた一連の暗号処理アルゴリズムが終了すると、生成暗号文が出力部を介して出力される。
【０００８】
このような暗号処理装置において、暗号化処理の開始時から特定の暗号化中間処理手続きが開始されるまでに要する時間は、おおよそ一定になる。なお、暗号アルゴリズムの実装方法については、例えば非特許文献１に詳しく述べられている。
【０００９】
このような暗号処理装置は、前述した単純電力解析（シンプル・パワー・アナリシス）や電力差分解析（ディファレンシャル・パワー・アナリシス）と呼ばれる暗号解析法を適用することで、暗号処理に適用する鍵情報や、アルゴリズムが解析される恐れがある。
【００１０】
単純電力解析および電力差分解析は、現在のメモリやレジスタ等の半導体デバイスにおいて、特定の時刻に、半導体デバイスの保持する値に変化が生じた場合と、保持する値に変化が生じなかった場合とで、消費電力に差が発生するという特徴を利用して、暗号処理装置が暗号処理を実行している様々なタイミングにおいて消費電力を測定することにより、暗号処理装置が保持している暗号鍵等の秘密情報を特定する暗号解析法である。
【００１１】
単純電力解析や電力差分解析が有効に機能する条件としては、第１に消費電力を測定している各時点で行われている暗号処理手続きが特定できること、第２に各時刻で測定した消費電力の値が当該時刻において暗号化装置内で行われている暗号化処理の演算結果を顕著に反映していることの２点が挙げられる。
【００１２】
従来の暗号化装置、復号化装置および暗号化・復号装置等の暗号処理装置においては、上記の２点の条件が満たされてしまうために、単純電力解析や電力差分解析が有効に機能し、暗号の解読が可能になりうるという問題点が存在している。
【００１３】
暗号処理アルゴリズムには様々なものがあるが、大きく分類すると、暗号化鍵と復号化鍵を異なる鍵、例えば公開鍵と秘密鍵として設定する公開鍵暗号方式と、暗号化鍵と復号化鍵を共通の鍵として設定する共通鍵暗号方式とに分類される。
【００１４】
共通鍵暗号方式の１つに共通鍵をベースとして複数の鍵を生成して、生成した複数の鍵を用いて暗号処理を繰り返し実行する方式がある。このような鍵生成方式を適用したアルゴリズムの代表的なものが共通鍵ブロック暗号方式である。
【００１５】
共通鍵ブロック暗号のアルゴリズムは、主として、入力データの変換を実行するラウンド関数部と、ラウンド関数部の各ラウンドで適用する鍵を生成する鍵スケジュール部とに分けることができる。ラウンド関数部の各ラウンドで適用するラウンド鍵（副鍵）は、１つのマスター鍵（主鍵）に基づいて、鍵スケジュール部に入力されて生成され、各ラウンド関数部で適用される。この共通鍵暗号方式の代表的な方式に米国連邦標準暗号方式としてのＤＥＳ（Data Encryption Standard）がある。
【００１６】
しかし、このような共通鍵暗号処理においては、暗号解析による鍵、あるいは暗号アルゴリズムの漏洩が問題となっている。暗号解析手法としては、上述したように複数の種類がある。まず、単純電力解析（ＳＰＡ：Ｓｉｍｐｌｅ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）について説明する。スマートカードなどの耐タンパデバイスのほとんどはトランジスタで構成された論理回路からなり、ゲートに電圧が加えられたときに電流が流れ、電力が消費される。一般に回路の消費電力は、実行している演算と用いられているデータの値に関係する。例えば、乗法演算は０を書き込む場合よりも１を書き込む場合のほうが消費電力が大きくなり、乗法演算と平方演算ではそれぞれ異なる電力を消費する。
【００１７】
このように演算やデータ値に応じて電力消費量が変動することから、秘密情報を用いた演算を行っているデバイスの消費電力の変化を観察することで、秘密情報に関してハミングウェイトなどの情報を得ることが可能となり、エントロピーを小さくすることができる。消費電力の変化を直接解析に用いる方法を単純電力解析と呼ぶ。
【００１８】
デバイスの消費電力は、デバイスと電源または接地との間に抵抗を直列に挿入し、抵抗を流れる電流値から求めることができる。実際に共通鍵暗号の演算を行っているスマートカードに対して消費電力測定を行うと、測定波形より共通鍵暗号の各段の演算がはっきり確かめられる。さらに、消費電力波形を詳しく解析することにより鍵レジスタの交換等の情報を得ることができる。
【００１９】
次に、電力差分解析（ＤＰＡ：Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）について説明する。耐タンパデバイスの消費電力は一般に演算内容と演算に用いられている秘密情報に依存する。しかしこれらの内容に依存した消費電力の変化は小さく、測定誤差やノイズなどから見分けることは一般に困難である。
【００２０】
そこでＫｏｃｈｅｒらは大量の測定値の平均をとって測定誤差やノイズなどの影響を小さくし、全データの平均値との差分を取ることで演算プロセスによる電力消費の影響を除いて、用いられる秘密情報による消費電力の変化のみを取り出す方法（電力差分解析）を提案した。
【００２１】
ＫｏｃｈｅｒらはＤＥＳに対する適用例を示している。まず、ラウンド関数部の第１段、または第１６段に入る鍵の一部のビットについて予想し、第１段、または第１６段の最後にメモリに書きこまれると予想されるデータの１ビットの値に注目して、その値に従って消費電力の観測データを分類する。次にそれぞれのグループについて測定値の平均をとり、それらの差分をとる。予想が正しい場合注目したビットが演算に用いられるとき消費電力の差分が大きくなる。予想が異なる場合目立った差分は確認されない。このような事象確認処理に基づいて、暗号処理に適用した鍵の構成ビットを順次求めるものである。
【００２２】
このＫｏｃｈｅｒらの提案に基づく暗号解析手法によれば、ＤＥＳの第１段及び第１６段のラウンド鍵を推定することが可能となる。
【００２３】
一方、Ｌｕｃｉｆｅｒ（ルシファー）とよばれる暗号アルゴリズムが１９８４年にArthur Sorkinによって提案されている。Ｌｕｃｉｆｅｒは、上述のＤＥＳとは異なる暗号処理アルゴリズムを持つ。
【００２４】
ＤＥＳアルゴリズムでは、各ラウンド関数部内に設定される非線形変換部としてのＳボックス（Ｓｂｏｘ）が固定的な１種類の非線形変換部における処理を実行する構成であるが、Ｌｕｃｉｆｅｒは、各ラウンド関数内に設定される非線形変換部としてのＳボックス（Ｓｂｏｘ）が固定的でなく、各ラウンドに入力されるラウンド鍵の値に応じて、２種類のＳボックス（Ｓｂｏｘ）から一つが選択され、選択されたＳボックス（Ｓｂｏｘ）において非線形変換処理が実行される構成を持つ。なお、Ｌｕｃｉｆｅｒの各ラウンド関数部としてのＦ関数の構造については、非特許文献２に記述されている。
【００２５】
暗号処理を実行する例えばＩＣモジュールは、例えば駅の改札などの様々なゲート、あるいはショッピングセンターなどで盛んに利用されるようになっており、小型化および処理の迅速化の要求が厳しくなってきている。従って、処理アルゴリズムを複雑化させることなく、かつ、電力解析に対する耐性のある構成が必要とされている。
【非特許文献１】『「Ａｐｐｌｉｅｄ Ｃｒｙｐｔｏｇｒａｐｈｙ 」（Ｂｒｕｃｅ Ｓｈｎｅｉｅｒ 著） Ｊｏｈｎ Ｗｉｅｌｅｙ＆ Ｓｏｎｓ ，Ｉｎｃ ．，１９９６ ，ＩＳＢＮ ０ −４７１ −１１７０９ −９ ，ｐｐ ．６２３ −６７３ 』
【非特許文献２】『Ｄｉ．ｅｒｅｎｔｉａｌ  Ｃｒｙｐｔａｎａｌｙｓｉｓ  ｏｆ  Ｌｕｃｉｆｅｒ",Ｉｓｈａｉ  Ｂｅｎ−Ａｒｏｙａ，Ｅｌｉ  Ｂｉｈａｍ，ＣＲＹＰＴＯ９３』
【発明の開示】
【発明が解決しようとする課題】
【００２６】
上述のＬｕｃｉｆｅｒの暗号処理アルゴリズムを適用すると、各ラウンド関数内に設定される非線形変換部としてのＳボックス（Ｓｂｏｘ）が固定的でなく、各ラウンドに入力されるラウンド鍵の値に応じて、２種類のＳボックス（Ｓｂｏｘ）から一つが選択され、選択されたＳボックス（Ｓｂｏｘ）において非線形変換処理が実行され、ラウンド鍵の値によって選択されるＳボックスが変更されるため、各ラウンドにおいて固定的なＳボックスを適用するＤＥＳアルゴリズムに比較すると、電力差分解析（ＤＰＡ）を困難にすることができる。
【００２７】
しかし、Ｌｕｃｉｆｅｒの暗号処理アルゴリズムでは、各ラウンドにおいて設定されている２種類の異なるＳボックスから、どちらのＳボックスを選択するかを、各ラウンドに入力されるラウンド鍵の構成ビットそのものである１ビットを制御ビットとして抽出し、この１ビットの制御ビットに基づいて線形変換処理態様を決定する構成である。従って、電力差分解析（ＤＰＡ）に対する耐性という観点からみると、Ｓボックスを各ラウンドにおいて固定した場合に比較して、僅かに（１ビット分）の解析困難性を高めているに過ぎないものである。
【００２８】
すなわち、Ｌｕｃｉｆｅｒの暗号処理アルゴリズムに対して電力差分解析（ＤＰＡ）を実行して、あるラウンド関数部内のＳボックスに入る鍵ビット情報をＤＰＡによって求める際、その鍵ビット全てについて、入出力の偏りを検証する必要があるが、選択鍵に対して選択されるボックスは一意的に決まるため、２種類のＳボックスで分類して、各々のケースについて入出力の偏りを検証することにより、計算量をあまり増やすことなく全鍵ビットを導出することが可能である。
【００２９】
このように、各ラウンド関数部において固定的な非線形変換処理部としてのＳボックスを設定したＤＥＳアルゴリズムにおいても、ラウンド関数部において複数の非線形変換処理部としてのＳボックスを設定し、これを選択的に適用するＬｕｃｉｆｅｒアルゴリズムにおいても、電力差分解析（ＤＰＡ）に対する高い耐性を有するものとは言い難い。
【００３０】
本発明は、このような問題点に鑑みてなされたものであり、処理アルゴリズムを複雑化させることなく、暗号処理シーケンスの持つ規則的な処理に伴う消費電力変動の検出等に基づく電力解析による暗号解析の困難性を高めることを可能とした暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムを提供することを目的とする。
【課題を解決するための手段】
【００３１】
本発明の第１の側面は、
複数段のラウンド関数の繰り返し処理を含む暗号アルゴリズムを実行する暗号処理装置であり、
各段のラウンド関数部に設定され、複数の異なる態様の非線形変換処理を選択的に実行可能な構成を持つ非線形変換処理部と、
前記ラウンド関数部に入力されるラウンド鍵のビット情報に基づく演算処理を実行し、前記非線形変換処理部に出力する制御ビットの算出処理を実行する演算部とを有し、
前記非線形変換処理部は、前記演算部から入力する制御ビットに基づいて非線形変換処理態様を決定し、決定した非線形変換処理を実行する構成を有することを特徴とする暗号処理装置にある。
【００３２】
さらに、本発明の暗号処理装置の一実施態様において、前記演算部は、ラウンド関数部に入力されるラウンド鍵のビット情報に基づくパリティ算出を実行し、算出したパリティビットを前記非線形変換処理部に対する制御ビットして出力する構成であることを特徴とする。
【００３３】
さらに、本発明の暗号処理装置の一実施態様において、前記非線形変換処理部は、ラウンド関数部に複数設定された構成であり、前記演算部は、ラウンド関数部に入力されるラウンド鍵から選択した複数の異なる部分ビット情報に基づいて、複数の異なるパリティを算出し、算出した複数のパリティをラウンド関数部に設定された複数の非線形変換処理部各々に対応する制御ビットとして出力する構成であることを特徴とする。
【００３４】
さらに、本発明の暗号処理装置の一実施態様において、前記演算部は、ラウンド関数部に設定された複数の非線形変換処理部各々に対応する制御ビットを、前記複数の非線形変換処理部各々に対応する入出力データとの排他論理和演算の対象とならないラウンド鍵の部分ビット情報に基づくパリティとして算出する構成であることを特徴とする。
【００３５】
さらに、本発明の暗号処理装置の一実施態様において、前記演算部は、ラウンド鍵を構成するｎビットの部分ビットデータを、ガロア体ＧＦ（２ｎ）上の元とみなし、ガロア体上の演算を実行して算出したｎビットデータの構成ビットを、前記非線形変換処理部に設定された複数のラウンド関数部各々に対する制御ビットとして出力する構成であることを特徴とする。
【００３６】
さらに、本発明の暗号処理装置の一実施態様において、前記非線形変換処理部は、複数の非線形変換テーブルを有し、該複数の非線形変換テーブルの適用態様を変更することにより、複数の異なる態様の非線形変換処理を選択的に実行する構成であることを特徴とする。
【００３７】
さらに、本発明の第２の側面は、
複数段のラウンド関数の繰り返し処理を含む暗号アルゴリズムを実行する暗号処理方法であり、
各段のラウンド関数部に入力されるラウンド鍵のビット情報に基づく演算処理を実行し、ラウンド関数部に設定された複数の異なる態様の非線形変換処理を選択的に実行可能な構成を持つ非線形変換処理部に対して、前記演算処理の算出結果からなる制御ビットを出力する演算ステップと、
前記制御ビットを入力し、入力制御ビットに基づいて実行する非線形変換処理態様を決定し、決定した非線形変換処理を実行する非線形変換処理ステップと、
を有することを特徴とする暗号処理方法にある。
【００３８】
さらに、本発明の暗号処理方法の一実施態様において、前記演算ステップは、ラウンド関数部に入力されるラウンド鍵のビット情報に基づくパリティ算出を実行し、算出したパリティビットを前記非線形変換処理部に対する制御ビットして出力するステップであることを特徴とする。
【００３９】
さらに、本発明の暗号処理方法の一実施態様において、前記演算ステップは、ラウンド関数部に入力されるラウンド鍵から選択した複数の異なる部分ビット情報に基づいて、複数の異なるパリティを算出し、算出した複数のパリティをラウンド関数部に設定された複数の非線形変換処理部各々に対応する制御ビットとして出力するステップであることを特徴とする。
【００４０】
さらに、本発明の暗号処理方法の一実施態様において、前記演算ステップは、ラウンド関数部に設定された複数の非線形変換処理部各々に対応する制御ビットを、前記複数の非線形変換処理部各々に対応する入出力データとの排他論理和演算の対象とならないラウンド鍵の部分ビット情報に基づくパリティとして算出するステップであることを特徴とする。
【００４１】
さらに、本発明の暗号処理方法の一実施態様において、前記演算ステップは、ラウンド鍵を構成するｎビットの部分ビットデータを、ガロア体ＧＦ（２ｎ）上の元とみなし、ガロア体上の演算を実行して算出したｎビットデータの構成ビットを、前記非線形変換処理部に設定された複数のラウンド関数部各々に対する制御ビットとして出力するステップであることを特徴とする。
【００４２】
さらに、本発明の暗号処理方法の一実施態様において、前記非線形変換処理ステップは、複数の非線形変換テーブルの適用態様を変更することにより、複数の異なる態様の非線形変換処理を選択的に実行するステップであることを特徴とする。
【００４３】
さらに、本発明の第３の側面は、
複数段のラウンド関数の繰り返し処理を含む暗号アルゴリズムを実行するコンピュータ・プログラムであり、
各段のラウンド関数部に入力されるラウンド鍵のビット情報に基づく演算処理を実行し、ラウンド関数部に設定された複数の異なる態様の非線形変換処理を選択的に実行可能な構成を持つ非線形変換処理部に対して、前記演算処理の算出結果からなる制御ビットを出力する演算ステップと、
前記制御ビットを入力し、入力制御ビットに基づいて実行する非線形変換処理態様を決定し、決定した非線形変換処理を実行する非線形変換処理ステップと、
を有することを特徴とするコンピュータ・プログラムにある。
【００４４】
なお、本発明のコンピュータ・プログラムは、例えば、様々なプログラム・コードを実行可能なコンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体、例えば、ＣＤやＦＤ、ＭＯなどの記録媒体、あるいは、ネットワークなどの通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
【００４５】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【発明の効果】
【００４６】
本発明の構成によれば、処理アルゴリズムを複雑化することなく、様々な解析攻撃に対する耐性の高い暗号処理装置および暗号処理方法が実現される。
【００４７】
本発明の構成によれば、ラウンド関数部に設定される非線形変換処理部（Ｓボックス）を、複数の異なる態様の非線形変換処理を選択的に実行可能な構成とし、ラウンド関数部に入力されるラウンド鍵のビット情報に基づく演算処理の結果を制御ビットとして、非線形変換処理部（Ｓボックス）に出力し、制御ビットに基づいて非線形変換処理態様を決定して、決定した非線形変換処理を実行する構成としたので、固定的なＳボックスを適用していたＤＥＳ暗号アルゴリズムや、ラウンド鍵の構成ビットそのものを制御ビットとして適用していたＬｕｃｉｆｅｒ（ルシファー）暗号アルゴリズムに比較して、解析困難性を高めた暗号処理が可能となる。
【００４８】
従来のＬｕｃｉｆｅｒの暗号処理アルゴリズムにおいては、１回の電力差分解析（ＤＰＡ）で探索に必要とされる鍵のビット数は８ビット、すなわち、各非線形変換処理部（Ｓボックス）との排他論理和演算の対象となる８ビットのラウンド鍵を探索対象とした８ビット探索を要するのみであるが、本発明の構成によれば、例えばラウンド鍵を６４ビットとした場合、非線形変換処理部（Ｓボックス）に出力する制御ビットが６４ビットデータに基づいて決定される値であるため、６４ビット探索を実行することが必要となり、結果として、１回の電力差分解析（ＤＰＡ）の計算量が２８から２６４に飛躍的に増大し、事実上、電力差分解析（ＤＰＡ）による解読を不可能とすることができる。
【発明を実施するための最良の形態】
【００４９】
以下、本発明の暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラムの詳細について説明する。なお、説明は、以下の項目順に行う。
１．ＤＥＳ（Data Encryption Standard）暗号処理の概要と電力差分解析概要
２．Ｌｕｃｉｆｅｒ（ルシファー）の暗号処理アルゴリズムの概要
３．本発明に従った解析困難性を高めた暗号処理
【００５０】
［１．ＤＥＳ（Data Encryption Standard）暗号処理の概要と電力差分解析概要］
まず、ＤＥＳ（Data Encryption Standard）暗号処理の概要と電力差分解析概要について説明する。
【００５１】
暗号処理アルゴリズムには様々なものがあるが、大きく分類すると、暗号化鍵と復号化鍵を異なる鍵、例えば公開鍵と秘密鍵として設定する公開鍵暗号方式と、暗号化鍵と復号化鍵を共通の鍵として設定する共通鍵暗号方式とに分類される。
【００５２】
共通鍵暗号方式の１つに共通鍵をベースとして複数の鍵を生成して、生成した複数の鍵を用いて暗号処理を繰り返し実行する方式がある。このような鍵生成方式を適用したアルゴリズムの代表的なものが共通鍵ブロック暗号方式である。
【００５３】
共通鍵ブロック暗号のアルゴリズムは、主として、入力データの変換を実行するラウンド関数部と、ラウンド関数部の各ラウンドで適用する鍵を生成する鍵スケジュール部とに分けることができる。ラウンド関数部の各ランウドで適用する鍵（副鍵）は、１つのマスター鍵（主鍵）に基づいて、鍵スケジュール部に入力されて生成され、各ラウンド関数部で適用される。この共通鍵暗号方式の代表的な方式に米国連邦標準暗号方式としてのＤＥＳ（Data Encryption Standard）がある。
【００５４】
ＤＥＳ暗号処理の基本構造について、図を参照して説明する。ＤＥＳ暗号処理は、変換関数の単純な繰り返しにより、平文を暗号文に変換する構造を持つ。図１にＤＥＳ暗号処理の基本構成を示す。入力データの変換を実行するラウンド関数部１１０と、ラウンド関数部の各ラウンドで適用する鍵を生成する鍵スケジュール部１２０とによって構成される。
【００５５】
ラウンド関数部１１０において、平文（６４ビット）は、まず、初期置換部１１１において、Ｌ，Ｒ各３２ビットに分割され、分割されたＬ，Ｒ３２ビットが、第１段ラウンド関数部１１２に入力され、鍵スケジュール部１２０の第１段鍵生成部１２２から入力する鍵Ｋ（１）に基づいて変換処理がなされる。変換処理結果は、次段の第２段ラウンド関数部１１３に入力される。
【００５６】
鍵スケジュール部１２０においては、まず、マスター鍵（主鍵）置換部（ＰＣ−１）１２１により入力マスター鍵（主鍵：６４ビット）のパリティ８ビットが取り除かれ、残り５６ビットの入れ替え処理が実行されて第１段ラウンド鍵生成部１２２に入力される。第１段ラウンド鍵生成部１２２では、入力ビット列のシフト処理およびパリティビットの除去等が実行され、４８ビットのラウンド鍵Ｋ（１）を生成し、生成したラウンド鍵Ｋ（１）をラウンド関数部１１０の第１段ラウンド関数部１１２に出力する。第１段ラウンド鍵生成部１２２では、シフト処理による上位ビット列（２８ビット）と下位ビット列（２８ビット）とを下段の第２段ラウンド鍵生成部１２３に出力する。
【００５７】
ラウンド関数部は、１６段のラウンド関数部を有し、それぞれ前段のラウンド関数部の出力を入力として鍵スケジュール部１２０から入力する鍵を適用した変換処理を実行し、変換結果を後段のラウンド関数部に出力する。１６段のラウンド関数部で変換された出力が逆置換部１１４に入力され、初期置換部１１１の逆置換処理が実行されて、暗号文として出力される。
【００５８】
ラウンド関数部１１０の各ラウンドを構成する各段のラウンド関数部の構成を図２に示す。図２に示すように、ラウンド関数部は、前段（ｎ−１段）のラウンド関数部から２つの入力、Ｌ（ｎ−１）、Ｒ（ｎ−１）を入力し、鍵スケジュール部から鍵（ｋ（ｎ））を入力する。Ｆ関数部１５１において、鍵スケジュール部から入力する鍵（ｋ（ｎ））を用いて、前段ラウンド関数部から入力するビット列（Ｒ（ｎ−１））の変換処理がなされ、変換結果が、前段ラウンド関数部から入力する残りのビット列（Ｌ（ｎ−１））と排他論理和が実行されて、次段のラウンド関数部の出力Ｒ（ｎ）が生成される。次段のラウンド関数部には、Ｒ（ｎ−１）をＬ（ｎ）としたビット列と、上述のＦ関数および排他論理和演算により生成されたＲ（ｎ）が入力され同様の処理が繰り返される。
【００５９】
Ｆ関数の構成を図３に示す。Ｆ関数は、非線形処理を実行する複数のＳボックス（Ｓｂｏｘ）を有する。ラウンド関数部の前段からの入力値Ｒ（ｎ−１）は置換部１７１によって４８ビットに拡大され、さらに鍵スケジュール部から入力する鍵（４８ビット）と排他論理和が実行され、その出力が６ビットずつ非線形変換処理を実行する複数のＳボックス１８１−１〜８に入力される。各Ｓボックスでは、例えば変換テーブルを適用した６ビットから４ビットへの非線形変換処理が実行される。
【００６０】
Ｓボックス１８１−１〜８からの出力ビット４×８＝３２ビットは、置換部１７２に入力されて、ビット位置の入れ替え処理がなされ、Ｆ関数出力３２ビットを生成して出力する。
【００６１】
図１〜３を参照して説明したように複数段（１６段）の変換処理によってＤＥＳ暗号処理が実行される。このＤＥＳ暗号処理をさらに暗号強度を高めるため複数繰り返し実行する構成、例えば３回のＤＥＳ暗号処理を実行するトリプルＤＥＳ暗号処理が様々な分野、例えばインターネットを介したデータ通信機器間の相互認証処理や、ＩＣカードとリーダライタ間の相互認証処理等に適用する暗号処理として多く採用されている。なお、トリプルＤＥＳ暗号処理と区別するため、１回のＤＥＳ暗号処理をシングルＤＥＳ暗号処理と呼ぶ。
【００６２】
トリプルＤＥＳ（Ｔｒｉｐｌｅ  ＤＥＳ）暗号処理構成は、図４に示すように、図１〜３を参照して説明したＤＥＳ暗号処理を３回繰り返して実行することにより、平文から暗号文を生成する。シングルＤＥＳ暗号処理部１８５、１８６，１８７のそれぞれが上述した１６段のラウンド関数部を持ち、Ｓボックスを持つＦ関数による処理を１６回繰り返す。
【００６３】
通常、トリプルＤＥＳ暗号処理では、最初のシングルＤＥＳ暗号処理部１８５と、最後のＤＥＳ暗号処理部１８７においては同じマスター鍵（主鍵）（Ｋ１）を適用し、中間のＤＥＳ暗号処理部１８６には異なるマスター鍵（主鍵）（Ｋ２）を適用する。このように、ＤＥＳ暗号処理を複数回繰り返し実行することで、暗号強度を向上させることができる。
【００６４】
しかし、このような共通鍵暗号処理においては、暗号解析による鍵、あるいは暗号アルゴリズムの漏洩が問題となっている。暗号解析手法としては、複数の種類がある。まず、単純電力解析（ＳＰＡ：Ｓｉｍｐｌｅ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）について説明する。スマートカードなどの耐タンパデバイスのほとんどはトランジスタで構成された論理回路からなり、ゲートに電圧が加えられたときに電流が流れ、電力が消費される。一般に回路の消費電力は、実行している演算と用いられているデータの値に関係する。例えば、乗法演算は０を書き込む場合よりも１を書き込む場合のほうが消費電力が大きくなり、乗法演算と平方演算ではそれぞれ異なる電力を消費する。
【００６５】
このように演算やデータ値に応じて電力消費量が変動することから、秘密情報を用いた演算を行っているデバイスの消費電力の変化を観察することで、秘密情報に関してハミングウェイトなどの情報を得ることが可能となり、エントロピーを小さくすることができる。消費電力の変化を直接解析に用いる方法を単純電力解析と呼ぶ。
【００６６】
デバイスの消費電力は、デバイスと電源または接地との間に抵抗を直列に挿入し、抵抗を流れる電流値から求めることができる。実際に共通鍵暗号の演算を行っているスマートカードに対して消費電力測定を行うと、測定波形より共通鍵暗号の各段の演算がはっきり確かめられる。さらに、消費電力波形を詳しく解析することにより鍵レジスタの交換等の情報を得ることができる。
【００６７】
次に、電力差分解析（ＤＰＡ：Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）について説明する。耐タンパデバイスの消費電力は一般に演算内容と演算に用いられている秘密情報に依存する。しかしこれらの内容に依存した消費電力の変化は小さく、測定誤差やノイズなどから見分けることは一般に困難である。
【００６８】
そこでＫｏｃｈｅｒらは大量の測定値の平均をとって測定誤差やノイズなどの影響を小さくし、全データの平均値との差分を取ることで演算プロセスによる電力消費の影響を除いて、用いられる秘密情報による消費電力の変化のみを取り出す方法、すなわち、電力差分解析（ＤＰＡ：Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）を提案した。
【００６９】
ＫｏｃｈｅｒらはＤＥＳに対する適用例を示している。まず、ラウンド関数部の第１段、または第１６段に入るラウンド鍵の一部のビットについて予想し、第１段、または第１６段の最後にメモリに書きこまれると予想されるデータの１ビットの値に注目して、その値に従って消費電力の観測データを分類する。次にそれぞれのグループについて測定値の平均をとり、それらの差分をとる。予想が正しい場合注目したビットが演算に用いられるとき消費電力の差分が大きくなる。予想が異なる場合目立った差分は確認されない。
【００７０】
電力差分解析は、具体的には、以下の手順（ステップ１〜ステップ７）に従った解析が行われる。
（ステップ１）
ｍ回暗号化プロセスを観測し、それぞれ第１６段の消費電力の変化Ｔ１，・・・，Ｔｍを観測する。さらに、暗号文Ｃ１，・・・，Ｃｍを記録する。第１６段の消費電力の変化を解析に用いる場合、平文の情報は必要ない。なお、ｍは１０００程度で十分である。
【００７１】
（ステップ２）
鍵に依存した分配関数Ｄ（Ｋｓ，Ｃ）を選択する。ただし、Ｋｓは何らかの鍵情報、Ｃは暗号文である。
例えば、最終段のＳボックス１の出力の１ビット目の値に着目し、Ｓボックス１に供給される６ビットの部分鍵を推定する場合を考える。この場合、関数Ｄは次式で与えられる。
【００７２】
【数１】
2005134477.tif 000003
【００７３】
ただし、
Ｋ１６は、第１６段にＳボックス１に供給される６ビットの部分鍵の予想値、
Ｃ６はＫ１６と排他論理和（ＸＯＲ）される暗号文の６ビット、
ＳＢＯＸ１（ｘ）はＳボックス１に６ビットｘが供給された場合の出力結果の１ビット目、
Ｃ１はＳＢＯＸ１の出力結果に排他論理和（ＸＯＲ）される暗号文の１ビットである。
【００７４】
（ステップ３）
関数Ｄを用いてＴ１，・・・，Ｔｍを２つのグループに分ける。
Ｓ０＝｛Ｔｉ｜Ｄ（・，・，・）＝０｝
Ｓ１＝｛Ｔｉ｜Ｄ（・，・，・）＝１｝
【００７５】
次に、それぞれのグループについて消費電力の平均値を取る。
【００７６】
【数２】
2005134477.tif 000004
【００７７】
ただし、｜Ｓ０｜＋｜Ｓ１｜＝ｍである。
【００７８】
（ステップ４）
Ａ０とＡ１の差分をとり、電力差分信号ΔＤを得る。
ΔＤ＝Ａ０−Ａ１
【００７９】
（ステップ５）
部分鍵の予想値Ｋｓが正しくない場合、Ｄ（・，・，・）は暗号文に対してほぼランダムに"０"と"１"を出力する。従って十分多くのサンプルを取ると、ΔＤの値は０に近づいていく。ただし、実際には正しい予想値Ｋｓとの相互作用のため、ΔＤの波形は完全にはフラットにならない。Ｋｓが正しい場合は、Ｄ（・，・，・）は注目したビットの実際の値と同じ値を取るため、ｍ→∞とすることで、ΔＤは注目したビットを用いるときに消費する電力に近づいていく。
【００８０】
他のデータ値や測定誤差などＤ（・，・，・）に依存しないものは０に近づいていく。消費電力はデータのビット値に依存するため、Ｄ（・，・，・）の波形は注目したビットが用いられる領域でパルスを見せ、それ以外の領域では平坦になる。
【００８１】
（ステップ６）
以上を繰り返し、Ｓボックス１に供給される部分鍵を推定する。反復の最大値は２６＝６４回である。
【００８２】
（ステップ７）
同様の作業を残り７つのＳボックスについて行い、秘密鍵について４８ビットの情報を得る。残りの８ビットの鍵情報は全探索によって求める。これは、ＤＥＳに関する例であるが、Ｃａｍｅｌｌｉａ等で利用されている８×８Ｓｂｏｘについても同様に適用が可能である。
【００８３】
ＤＥＳ各ラウンドのＦ関数は、先に図３を参照して説明したように、８つのＳボックス（Ｓｂｏｘ）を有し、その各々のＳボックスに対して、４８ビットのラウンド鍵の６ビットの部分鍵が対応づけられる構成となっている。
【００８４】
図３に示すように、Ｆ関数は、非線形処理を実行する８つのＳボックス（Ｓｂｏｘ）を有する。ラウンド関数部の前段からの入力値Ｒ（ｎ−１）は置換部１７１によって４８ビットに拡大され、さらに鍵スケジュール部から入力する鍵（４８ビット）と排他論理和が実行され、その出力が６ビットずつ非線形変換処理を実行する複数のＳボックス１８１−１〜８に入力される。各Ｓボックスでは、例えば変換テーブルを適用した６ビットから４ビットへの非線形変換処理が実行される。
【００８５】
Ｓボックス１８１−１〜８からの出力ビット４×８＝３２ビットは、置換部１７２に入力されて、ビット位置の入れ替え処理がなされ、Ｆ関数出力３２ビットを生成して出力する。
【００８６】
８つのＳボックス（Ｓｂｏｘ）１８１−１〜８各々への入力は、ラウンド関数部の前段からの入力値Ｒ（ｎ−１）は置換部１７１によって４８ビットに拡大置換されたデータの４８／８＝６ビットと、鍵スケジュール部から入力するラウンド鍵（４８ビット）を構成する４８／８＝６ビットとの排他論理和結果である。
【００８７】
暗号解析においては、ラウンド関数部における第１段では既知の入力値を適用可能であり、第１６段では、出力値を取得可能である。従って、ラウンド関数部における第１段および第１６段の８つのＳボックス（Ｓｂｏｘ）１８１−１〜８の入力値を上述したＫｏｃｈｅｒらによる電力差分解析（ＤＰＡ：Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）により推定することで、第１段および第１６段のラウンド鍵が解析可能となる。
【００８８】
つまり、１６段のラウンド関数部によって構成されるＤＥＳ暗号処理において適用される第１段および第１６段のラウンド鍵は、第１段が８組の６ビット鍵、第１６段も８組の６ビット鍵が適用され、計１６組の６ビット鍵によって表現することができる。
【００８９】
ＤＥＳの鍵スケジュール、すなわち、ラウンド鍵の生成ルールによれば、各ラウンドのＦ関数部（ラウンド関数部）において適用するラウンド鍵の構成ビットはすべてが独立ビットということはなく、同一ビットが複数の組に属する６ビット鍵の一部として共有されている。
【００９０】
例えば、第１段のＦ関数部（ラウンド関数部）の第２Ｓボックス（Ｓｂｏｘ）に対して入力するデータに対応して適用される第１段のラウンド鍵（４８ビット）の部分鍵６ビットの第３及び第４ビットは、第１６段のＦ関数部（ラウンド関数部）の第４Ｓボックス（Ｓｂｏｘ）に対して入力するデータに対応して適用される第１６段のラウンド鍵（４８ビット）の部分鍵６ビットの第１及び第２ビットと常に同一となる。
【００９１】
すなわち、
第１段、第２Ｓｂｏｘの適用鍵６ビットが、
ａ，ｂ，ｃ，ｄ，ｅ，ｆ
の６ビットであるとき、
第１６段、第４Ｓｂｏｘの適用鍵６ビットは、
ｃ，ｄ，ｇ，ｈ，ｉ，ｊ
となる。
【００９２】
これは、ＤＥＳ暗号処理アルゴリズムにおいて予め定められた鍵スケジュールに基づくものであり、普遍的な関係である。
【００９３】
従って、第１段の第２Ｓボックス（Ｓｂｏｘ）の入力データに対応して適用される部分鍵６ビットを探索して、６ビットの各ビット値（ａ，ｂ，ｃ，ｄ，ｅ，ｆ）を求めた後に第１６段の第４Ｓボックス（Ｓｂｏｘ）の入力データに対応して適用される６ビットの部分鍵の構成ビットを探索する際には、６ビット全てを探索することは必要ではなく、未知の４ビット（ｇ，ｈ，ｉ，ｊ）のみを探索すればよい。
【００９４】
１つのＳボックスに対応して供給される部分鍵の推定に必要な計算量、すなわち６ビット各々について探索する場合には、６ビットのすべての組み合わせ、すなわち［００００００］〜［１１１１１１］の全パターンを設定して電力差分解析（ＤＰＡ）、すなわち探索処理を実行してみることが必要となる。すなわち、電力差分解析（ＤＰＡ）を適用した２６＝６４回の探索処理によって、鍵を解析することが可能となる。
【００９５】
［２．Ｌｕｃｉｆｅｒ（ルシファー）の暗号処理アルゴリズムの概要］
次に、Ｌｕｃｉｆｅｒ（ルシファー）の暗号処理アルゴリズムの概要について説明する。Ｌｕｃｉｆｅｒ（ルシファー）の暗号処理アルゴリズムも、上述したＤＥＳアルゴリズムと同様、複数段のラウンド関数部の繰り返し構造を有する。
【００９６】
ＤＥＳアルゴリズムでは、各ラウンドのＦ関数部に設定された非線形変換部としてのＳボックスは、先に図３を参照して説明したように、８つのＳボックス（Ｓｂｏｘ）からなり、その各々のＳボックスは、すべてのラウンドにおいて共通な非線形変換を実行する構成である。Ｌｕｃｉｆｅｒアルゴリズムでは、異なる非線形変換処理を実行する２種類のＳボックスから、各ラウンドにおいて、一方を選択し、選択したＳボックスを適用して非線形変換処理を実行する。いずれの種類のＳボックスを適用するかについては、各ラウンドに入力されるラウンド鍵の構成ビット情報に基づいて決定される。
【００９７】
図５にＬｕｃｉｆｅｒアルゴリズムにおけるＦ関数部（ラウンド関数部）の構成を示す。ＬｕｃｉｆｅｒアルゴリズムにおけるＦ関数部は、先に説明したＤＥＳアルゴリズムと同様、非線形処理を実行する複数のＳボックス（Ｓｂｏｘ）を有する。ラウンド関数部の前段からの入力値Ｒ（ｎ−１）は６４ビットとされ、各８ビットが８つの非線形変換部としてのＳボックス２１１〜２１８に入力される。
【００９８】
各Ｓボックス２１１〜２１８の各々には、鍵スケジュール部から入力するラウンド鍵（６４ビット）Ｋ（ｎ）２０１を構成する各１ビットが制御ビットとして入力される。８つのＳボックス２１１〜２１８に対して、ラウンド鍵Ｋ（ｎ）２０１を構成する６４ビットから８ビットが抽出されて各Ｓボックスに対する制御ビットとして入力されることになる。
【００９９】
各Ｓボックス２１１〜２１８の詳細構成について、図６を参照して説明する。図６は、Ｓボックス２１１〜２１８に共通の構成であり、それぞれ４ビットの入出力を持つ異なる非線形変換処理を実行するＳボックスａ２５１と、Ｓボックスｂ２５２とを有する。
【０１００】
Ｓボックス２１１〜２１８には８ビットが入力され、Ｓボックスａ２５１と、Ｓボックスｂ２５２とをそれぞれ適用し、各々が４ビットの変換処理を行なう。
【０１０１】
Ｓボックスａ２５１と、Ｓボックスｂ２５２とを適用した変換処理態様としては、
（１）第１処理態様
入力８ビットの上位４ビット（Ｇ１）をＳボックスａ２５１で変換
入力８ビットの下位４ビット（Ｇ２）をＳボックスｂ２５２で変換
する処理態様と、
（２）第２処理態様
入力８ビットの上位４ビット（Ｇ１）をＳボックスｂ２５２で変換
入力８ビットの下位４ビット（Ｇ２）をＳボックスａ２５１で変換
する処理態様の２つの態様がある。
【０１０２】
この処理態様のどちらを選択するかを制御ビット２０２によって決定する。制御ビット２０２は、各ラウンドに入力される６４ビットのラウンド鍵の構成ビット（８ビット）中の１ビットであり、この制御ビット２０２が０か１かによって、上記２つの処理態様のいずれかを選択して変換処理を実行する。
【０１０３】
図５に示すＳボックス１〜８の８つのＳボックスにおいて、それぞれ制御ビットの値に応じて、２つの異なるＳボックスを適用した非線形変換が選択的に実行される。
【０１０４】
このように、Ｌｕｃｉｆｅｒの暗号処理アルゴリズムでは、各ラウンドにおいて設定されている２種類の異なるＳボックスから、どちらのＳボックスを選択するかを、各ラウンドに入力されるラウンド鍵から制御ビットを抽出し、この制御ビットに基づいて決定する。従って、電力差分解析（ＤＰＡ）に対する耐性という観点からみると、Ｓボックスを各ラウンドにおいて固定した場合に比較すると、解析に必要なビット数が増加するので解析困難性は、前述のＤＥＳアルゴリズムに比較すると高まることになる。しかし、Ｓボックスの選択に適用される制御ビットは、各Ｓボックスについて１ビットであり、ラウンド鍵の構成ビットそのものである。
【０１０５】
Ｌｕｃｉｆｅｒの暗号処理アルゴリズムに対して電力差分解析（ＤＰＡ）を実行して、あるラウンド関数部内のＳボックスに入る鍵ビット情報をＤＰＡによって求める際、その鍵ビット全てについて、入出力の偏りを検証する必要があるが、選択鍵に対して選択されるボックスは一意的に決まるため、２種類のＳボックスで分類して、各々のケースについて入出力の偏りを検証することにより、計算量をあまり増やすことなく全鍵ビットを導出することが可能である。
【０１０６】
このように、現行のＬｕｃｉｆｅｒアルゴリズムは、ＤＥＳアルゴリズムと大差ない電力差分解析（ＤＰＡ）によって、鍵の解析が可能であり、電力差分解析（ＤＰＡ）に対する高い耐性を有するものとは言い難い。
【０１０７】
［３．本発明に従った解析困難性を高めた暗号処理］
次に、本発明に従った解析困難性を高めた暗号処理について説明する。図７にＬｕｃｉｆｅｒアルゴリズムを改良した本発明のＦ関数部（ラウンド関数部）の構成を示す。本発明の暗号処理アルゴリズムは、ＤＥＳアルゴリズム、Ｌｕｃｉｆｅｒアルゴリズムと同様、図１を参照して説明したような複数のラウンド関数部の繰り返し構造を持ち、各ラウンド関数部に対して、鍵スケジュール部からラウンド鍵が入力され、Ｆ関数部（ラウンド関数部）での変換処理が繰り返し実行される構成である。
【０１０８】
図７に示すように、Ｆ関数部（ラウンド関数部）は、先に説明したＤＥＳアルゴリズムおよびＬｕｃｉｆｅｒアルゴリズムと同様、非線形処理を実行する複数のＳボックス（Ｓｂｏｘ）を有する。ラウンド関数部の前段からの入力値Ｒ（ｎ−１）を、例えば６４ビットとした場合、各８ビットが８つの非線形変換部としてのＳボックス３１１〜３１８に入力される。
【０１０９】
各Ｓボックス３１１〜３１８の各々には、鍵スケジュール部から入力するラウンド鍵（６４ビット）Ｋ（ｎ）３０１を構成するビット情報を入力する演算部３５１における演算結果として取得される各１ビットが制御ビットとして入力される。
【０１１０】
演算部３５１では、ラウンド鍵（６４ビット）Ｋ（ｎ）３０１に基づいてＳボックス３１１〜３１８の各々に入力する制御ビット情報として８ビットのデータが算出され、その算出結果が、１ビットずつ各Ｓボックス３１１〜３１８の各々に入力される。
【０１１１】
演算部３５１における演算処理は、ラウンド鍵（６４ビット）Ｋ（ｎ）３０１を入力として制御ビットを出力する演算である。演算処理例を図８〜図１０を参照して説明する。
【０１１２】
図８に示す演算例は、演算部３５１が、６４ビットラウンド鍵Ｋ（ｎ）３０１を入力し、６４ビットラウンド鍵情報に基づいて、１ビットのパリティを算出し、この１ビットパリティを８つのＳボックス３１１〜３１８に共通の制御ビットとして出力する演算例である。なお、パリティは、ラウンド鍵Ｋ（ｎ）３０１の６４ビットデータ中のビット値［１］または［０］の数が偶数か奇数かによって決定される１ビットの値［０］または［１］である。
【０１１３】
なお、図８において、ラウンド鍵Ｋ（ｎ）３０１は、各８ビットのＫ１〜Ｋ８に分割して示してある。それぞれの分割データＫ１〜Ｋ８は、図７に示す排他論理和部３２１において、Ｓボックス３１１〜３１８の各出力８ビットと排他論理和演算が実行され、その後、置換部３２２においてビット置換処理が実行されて次のラウンド部に出力、あるいは最終ラウンドである場合は、最終出力とされる。
【０１１４】
図８に示す演算処理例では、８つのＳボックス３１１〜３１８に共通の制御ビットとして出力するが、図９に示す演算処理例では、８つのＳボックス３１１〜３１８に対応して、それぞれ異なるパリティを算出して制御ビットとして出力する。
【０１１５】
図９に示す例では、演算部３５１が、６４ビットラウンド鍵Ｋ（ｎ）３０１を入力し、６４ビットラウンド鍵情報から、上位８ビット（Ｋ１）を排除した残りの５６ビットデータに基づいて算出したパリティビットを第１番目のＳボックス３１１の制御ビットとして出力する。また、６４ビットラウンド鍵情報から第２番目の８ビット（Ｋ２）を排除した残りの５６ビットデータに基づいて算出したパリティビットを第２番目のＳボックス３１２の制御ビットとして出力する。以下、同様に下位方向に順次８ビットを除いて、残りの５６ビットの鍵データからそれぞれパリティを算出して、それぞれのＳボックスに出力する制御ビットを生成する。第８番目のＳボックス３１８の制御ビットには、６４ビットラウンド鍵情報から第８番目の８ビット（Ｋ８）を排除した残りの５６ビットデータに基づいて算出したパリティビットが対応付けられる。
【０１１６】
図９において、ラウンド鍵Ｋ（ｎ）３０１は、各８ビットのＫ１〜Ｋ８に分割して示してある。それぞれの分割データＫ１〜Ｋ８は、図７に示す排他論理和部３２１において、Ｓボックス３１１〜３１８の各出力８ビットと排他論理和演算が実行され、その後、置換部３２２においてビット置換処理が実行されて次のラウンド部に出力、あるいは最終ラウンドである場合は、最終出力とされる。
【０１１７】
図９の演算例では、各Ｓボックスの出力と排他論理和部３２１において排他論理和演算の対象とならないラウンド鍵ビットデータに基づいて算出されるパリティが各Ｓボックスの制御ビットとして適用される。
【０１１８】
すなわち、Ｓボックス１，３１１の出力は、ラウンド鍵ビットデータ中の最上位８ビット（Ｋ１）と排他論理和部３２１において排他論理和演算が実行されることになり、Ｓボックス１，３１１に対する制御ビットは、ラウンド鍵ビットデータ中の最上位８ビット（Ｋ１）を除くＫ２〜Ｋ８の５６ビットに基づいて算出される。その他のＳボックスについても同様であり、各Ｓボックスの出力との排他論理和演算の実行されないラウンド鍵の構成ビットが選択されてパリティ算出が行われ、各Ｓボックスに対する制御ビットとして適用される。
【０１１９】
このような制御ビットの演算処理を適用することにより、８つのＳボックス３１１〜３１８に対応して、それぞれ異なるパリティを算出して制御ビットを出力することが可能となり、また、各Ｓボックスに対して出力する制御ビットは、各Ｓボックスの出力との排他論理和演算対象となるラウンド鍵構成ビットを除いたデータであるので、排他論理和部３２１からの出力値を構成する各Ｓボックス出力とラウンド鍵構成ビットの排他論理和演算結果と、各Ｓボックスに出力される制御ビットの値との相関が発生することがなく、解析の困難性を高めることが可能となる。
【０１２０】
図１０は、さらに異なる演算処理例を示した図である。図１０に示す例では、演算部３５１が、６４ビットラウンド鍵Ｋ（ｎ）３０１を入力し、演算部３５１は、６４ビットラウンド鍵情報をＫ１〜Ｋ８を、ガロア体ＧＦ（２８）上の元とみなし、ガロア体上の演算を実行して、８ビットの制御ビットを算出する。
【０１２１】
演算部３５１の算出した８ビットの制御ビットは、１ビットずつＳボックス３１１〜３１８に対する制御ビットとして出力される。
【０１２２】
図１０において、ラウンド鍵Ｋ（ｎ）３０１は、各８ビットのＫ１〜Ｋ８に分割して示してある。それぞれの分割データＫ１〜Ｋ８は、図７に示す排他論理和部３２１において、Ｓボックス３１１〜３１８の各出力８ビットと排他論理和演算が実行され、その後、置換部３２２においてビット置換処理が実行されて次のラウンド部に出力、あるいは最終ラウンドである場合は、最終出力とされる。
【０１２３】
図１０に示す演算例は、ラウンド鍵Ｋ（ｎ）３０１を構成する各８ビットのＫ１〜Ｋ８を、ガロア体ＧＦ（２８）上の元とみなし、ガロア体上の演算を実行して、８ビットの制御ビットを算出する演算である。なお、図１０に示す例は、ラウンド関数部にＳボックスが８個設定された構成であるので、８ビットの制御ビットを算出する演算処理として実行する例を示したが、ラウンド関数部にＳボックスが任意数、例えば、ｎ個設定された構成である場合には、ラウンド鍵を構成するｎビットの部分ビットデータを、ガロア体ＧＦ（２ｎ）上の元とみなし、ガロア体上の演算を実行してｎビットデータを算出して、その構成ビットを、非線形変換処理部としてのｎ個のＳボックスに対する制御ビットとして出力する。
【０１２４】
図８〜図１０を参照して３つの演算例を示したが、この他、ラウンド鍵データに基づいて各Ｓボックスに対する制御ビットを算出する様々な演算処理が適用可能である。
【０１２５】
図７に示すＦ関数部（ラウンド関数部）の各Ｓボックス３１１〜３１８には、演算部３５１から、ラウンド鍵３０１のビット情報に基づく演算結果としての制御ビットが入力される。
【０１２６】
各Ｓボックス３１１〜３１８の詳細構成について、図１１を参照して説明する。図１１は、Ｓボックス３１１〜３１８に共通の構成であり、それぞれ４ビットの入出力を持つ異なる非線形変換処理を実行するＳボックスａ３７１と、Ｓボックスｂ３７２とを有する。
【０１２７】
Ｓボックスａ３７１と、Ｓボックスｂ３７２とは、それぞれ異なる非線形変換テーブルに基づく変換処理を実行するデータ変換部であり、各Ｓボックス３１１〜３１８では、演算部３５１から入力する制御ビットに基づいて、これら複数の非線形変換テーブルの適用態様を変更することにより、異なる態様での非線形変換処理を選択的に実行する。
【０１２８】
Ｓボックス３１１〜３１８には演算部３５１の生成する８ビットの制御ビットの各１ビットが入力され、このビット値が［１］か［０］かに応じて、Ｓボックスａ３７１と、Ｓボックスｂ３７２との適用態様を変更した非線形変換処理を実行する。図１１に示すＳボックスａ３７１と、Ｓボックスｂ３７２は、各々がそれぞれ４ビットの変換処理を行なう。
【０１２９】
Ｓボックスａ３７１と、Ｓボックスｂ３７２とを適用した変換処理態様としては、
（１）第１処理態様
入力８ビットの上位４ビット（Ｇ１）をＳボックスａ３７１で変換
入力８ビットの下位４ビット（Ｇ２）をＳボックスｂ３７２で変換
する処理態様と、
（２）第２処理態様
入力８ビットの上位４ビット（Ｇ１）をＳボックスｂ３７２で変換
入力８ビットの下位４ビット（Ｇ２）をＳボックスａ３７１で変換
する処理態様の２つの態様がある。
【０１３０】
この処理態様のどちらを選択するかを演算部３５１が、ラウンド鍵３０１に基づいて算出した制御ビットによって決定する。制御ビットは、上述したように、各ラウンドに入力される６４ビットのラウンド鍵に基づいて算出される演算結果を構成するビットデータであり、この制御ビットが０か１かによって、上記２つの処理態様のいずれかを選択して変換処理を実行する。
【０１３１】
図７に示すＳボックス３１１〜３１８の８つのＳボックスにおいて、それぞれ制御ビットの値に応じて、２つの異なるＳボックスを適用した非線形変換が選択的に実行される。
【０１３２】
このように、本発明の暗号処理アルゴリズムでは、各ラウンドに入力される６４ビットのラウンド鍵に基づいてパリティ算出演算、あるいはＧＦ（２８）上での演算などの演算処理を実行し、その演算結果を書くＳボックスにおける非線形変換態様を決定するＳボックス選択用の制御ビットとして出力する。
【０１３３】
前述のＬｕｃｉｆｅｒの暗号処理アルゴリズムでは、各Ｓボックスに対して出力する制御ビットは、ラウンド鍵の構成ビットそのものであり、鍵解析において解析対象となるビットデータそのものを制御ビットとして適用した構成であるが、本発明の構成では、ラウンド鍵の構成ビットと異なる新たなビット値を演算により算出し、その算出値を各Ｓボックスに対する制御ビットとして適用する構成とした。
【０１３４】
このような構成とすることで、電力差分解析（ＤＰＡ）を実行して、あるラウンド関数部内のＳボックスに入る鍵ビット情報をＤＰＡによって求める際の探索処理回数の必要数は、大幅に増加することになる。
【０１３５】
従来のＬｕｃｉｆｅｒの暗号処理アルゴリズムにおいて、１回の電力差分解析（ＤＰＡ）で探索に必要とされる鍵のビット数は８ビット、すなわち、各Ｓボックスとの排他論理和演算の対象となる８ビットのラウンド鍵を探索対象とした８ビット探索を実行するのみであったが、本発明によれば、Ｓボックスに出力する制御ビットが、６４ビットのラウンド鍵全体に基づいて決定される値であるため、６４ビット探索を実行することが必要となる。その結果、１回の電力差分解析（ＤＰＡ）の計算量が２８から２６４に飛躍的に増大し、事実上解読を不可能とすることができる。
【０１３６】
なお、図７は、先に図５を参照して説明したＬｕｃｉｆｅｒの暗号処理アルゴリズムと同様、ラウンド鍵をＳボックスの出力に対して排他論理和して、その出力をビット置換するラウンド関数部構成を持つ例として説明したが、本発明のＳボックスの処理態様を決定するための制御ビットを、ラウンド鍵の構成ビットに基づく演算処理によって算出する構成は、Ｌｕｃｉｆｅｒの暗号処理アルゴリズムに対してのみ適用可能な構成ではなく、その他、Ｓボックスを適用したラウンド関数を持つ暗号アルゴリズムであれ場適用可能である。
【０１３７】
例えば図１２に示すのは、ＤＥＳアルゴリズムにおけるＦ関数（ラウンド関数）と同様の構成とし、かつ、Ｆ関数（ラウンド関数）内のＳボックスに対する制御ビット、すなわち、Ｓボックスの処理態様を決定するための制御ビットを、ラウンド鍵の構成ビットに基づく演算処理によって算出する構成とした例を示している。
【０１３８】
Ｓボックス４３１〜４３８は、複数の非線形変換処理態様を選択実行可能な構成を有し、その実行態様を決定するための制御ビットを演算部４０２から入力する。演算部４０２は、ラウンド鍵Ｋ（ｎ）４０１を入力して、例えば先に図８〜図１０を参照して説明した
各種の演算を実行し、Ｓボックス４３１〜４３８に出力する制御ビットを算出する。
【０１３９】
図１３の構成においては、先に、図３を参照して説明したＤＥＳアルゴリズムにおけるＦ関数と同様の構成であるが、Ｓボックス４３１〜４３８は、異なる複数の非線形変換処理を実行可能な構成、すなわち、図１１を参照して説明したように、入力ビットに対して異なる非線形変換処理を実行することが可能な構成を有する。
【０１４０】
ラウンド関数部の前段からの入力値Ｒ（ｎ−１）は置換部４２１によってビット置換が実行され、さらに鍵スケジュール部から入力するラウンド鍵Ｋ（ｎ）４０１と排他論理和部４５１において、排他論理和演算がなされ、その出力が所定ビットずつ非線形変換処理を実行する複数のＳボックス４３１〜４３８に入力される。各Ｓボックスでは、例えば変換テーブルを適用した非線形変換処理を実行するが、実行可能な変換処理態様は複数あり、適用する変換処理態様を演算部４０２から入力する制御ビットに基づいて決定する。
【０１４１】
Ｓボックス４３１〜４３８からの出力ビットは、置換部４４１に入力されて、ビット位置の入れ替え処理がなされ、次のラウンドに対する入力として、あるいは最終出力として出力される。
【０１４２】
本発明の暗号処理アルゴリズムにおける各Ｆ関数部（ラウンド関数部）における処理シーケンスについて、図１３のフローチャートを参照して説明する。
【０１４３】
まず、ステップＳ１０１において、ラウンド鍵を入力する。これは、例えば図１に示す鍵スケジュール部の各ラウンド鍵生成部が生成し、ラウンド関数部の各ラウンドのＦ関数に入力されるラウンド鍵である。
【０１４４】
ラウンド鍵を入力すると、演算部、例えば図７に示す演算部３５１、あるいは図１２に示す演算部４０２は、入力ラウンド鍵に基づく演算処理を実行し、各Ｓボックスに出力する制御ビットを算出する。実行する演算処理は、例えば、図８、図９を参照して説明したパリティ算出演算や、図１０を参照して説明したガロア体ＧＦ（２８）上での演算などである。ステップＳ１０３では、演算の結果に基づいて、各Ｓボックスにおけるデータ変換処理態様を決定するための制御ビットが設定され、各Ｓボックスに出力される。
【０１４５】
ステップＳ１０４は、演算部から制御ビットを入力した各Ｓボックスにおいて実行する処理である。演算部から制御ビットを入力した各Ｓボックスは、Ｓボックスにおいて実行可能な複数の非線形変換処理態様から、演算部から入力する制御ビットに基づいて、実行する１つの非線形変換処理態様を決定する。
【０１４６】
ステップＳ１０５において、各Ｓボックスは、制御ビットに基づいて決定した１つの非線形変換処理態様を入力データに対して実行し、その結果を出力する。出力は、Ｆ関数内の後段の演算部においてさらに排他論理和演算、置換処理など各種の演算が実行された後、次のラウンド部に出力、あるいは最終ラウンドである場合は、最終出力とされる。
【０１４７】
最後に、上述の暗号処理を実行するデバイスとしてのＩＣモジュール６００の構成例を図１４を参照して説明する。上述の処理は、例えばＰＣ、ＩＣカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図１４に示すＩＣモジュール６００は、これら様々な機器に構成することが可能である。
【０１４８】
図１４に示すＣＰＵ(Central processing Unit)６０１は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、その他の各種プログラムを実行するプロセッサである。メモリ６０２は、ＣＰＵ６０１が実行するプログラム、あるいは演算パラメータとしての固定データを格納するＲＯＭ（Read-Only-Memory）、ＣＰＵ６０１の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるＲＡＭ（Random Access Memory）等からなる。また、メモリ６０２は暗号処理に必要な鍵データ等の格納領域として使用可能である。データ等の格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。
【０１４９】
暗号処理手部６０３は、例えば上述したＤＥＳ、Ｌｕｃｉｆｅｒ、その他のアルゴリズムに従った暗号処理、復号処理等を実行する。なお、ここでは、暗号処理手段を個別モジュールとした例を示したが、このような独立した暗号処理モジュールを設けず、例えば暗号処理プログラムをＲＯＭに格納し、ＣＰＵ６０１がＲＯＭ格納プログラムを読み出して実行するように構成してもよい。
【０１５０】
乱数発生器６０４は、暗号処理に必要となる鍵の生成などにおいて必要となる乱数の発生処理を実行する。
【０１５１】
送受信部６０５は、外部とのデータ通信を実行するデータ通信処理部であり、例えばリーダライタ等、ＩＣモジュールとのデータ通信を実行し、ＩＣモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。
【０１５２】
なお、ラウンド関数部のＳボックスに対して出力する制御ビットの算出処理として実行するラウンド鍵に基づく演算処理はＣＰＵ６０１において実行するか、あるいは暗号処理部６０３内の演算処理実行機能を適用して実行可能である。
【０１５３】
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、冒頭に記載した特許請求の範囲の欄を参酌すべきである。
【０１５４】
なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
【０１５５】
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【産業上の利用可能性】
【０１５６】
本発明は、認証処理、暗号処理を実行するデバイス、例えば暗号処理モジュールを持つＩＣカードあるいはその他の暗号処理装置に適用可能である。本発明の構成を適用することにより、電力解析によるＩＣモジュール内の暗号処理鍵やアルゴリズムの漏洩が困難となるので、セキュリティレベルの高い暗号処理実行機能を持つデバイスあるいは装置が提供可能となる。
【図面の簡単な説明】
【０１５７】
【図１】ＤＥＳ暗号処理の基本構成を示す図である。
【図２】ラウンド関数部の各ラウンドを構成する変換部の構成を示す図である。
【図３】Ｆ関数の構成を示す図である。
【図４】トリプルＤＥＳ（Ｔｒｉｐｌｅ  ＤＥＳ）暗号処理構成を示す図である。
【図５】Ｌｕｃｉｆｅｒの暗号処理アルゴリズムにおけるＦ関数部（ラウンド関数部）の処理構成を説明する図である。
【図６】Ｌｕｃｉｆｅｒの暗号処理アルゴリズムにおけるＦ関数部（ラウンド関数部）のＳボックスの処理構成を説明する図である。
【図７】本発明の暗号処理アルゴリズムにおけるＦ関数部（ラウンド関数部）の処理構成を説明する図である。
【図８】本発明の暗号処理アルゴリズムにおけるＦ関数部（ラウンド関数部）のＳボックスに出力する制御ビットの演算処理例（その１）を説明する図である。
【図９】本発明の暗号処理アルゴリズムにおけるＦ関数部（ラウンド関数部）のＳボックスに出力する制御ビットの演算処理例（その２）を説明する図である。
【図１０】本発明の暗号処理アルゴリズムにおけるＦ関数部（ラウンド関数部）のＳボックスに出力する制御ビットの演算処理例（その３）を説明する図である。
【図１１】本発明の暗号処理アルゴリズムにおけるＦ関数部（ラウンド関数部）のＳボックスの処理構成を説明する図である。
【図１２】本発明の暗号処理アルゴリズムにおけるＦ関数部（ラウンド関数部）の処理構成を説明する図である。
【図１３】本発明の暗号処理アルゴリズムにおけるＦ関数部（ラウンド関数部）の処理シーケンスを説明するフローチャートを示す図である。
【図１４】本発明の構成が適用可能な暗号処理実行デバイスとしてのＩＣモジュールの構成例を示す図である。
【符号の説明】
【０１５８】
１１０  ラウンド関数部
１１１  初期置換部
１１２，１１３  変換部
１１４  逆置換部
１２０  鍵スケジュール部
１２１  選択置換部
１２２，１２３  鍵生成部
１５１  Ｆ関数部
１７１，１７２  置換部
１８１  Ｓボックス
１８５，１８６，１８７  ＤＥＳ暗号処理部
２０１  ラウンド鍵
２０２  制御ビット
２１１〜２１８  Ｓボックス
２２１  排他論理和（ＸＯＲ）部
２２２  置換部
２５１，２５２  Ｓボックス
３０１  ラウンド鍵
３０２  制御ビット
３１１〜３１８  Ｓボックス
３２１  排他論理和（ＸＯＲ）部
３２２  置換部
３５１  演算部
３７１，３７２  Ｓボックス
４０１  ラウンド鍵
４３１〜４３８  Ｓボックス
４２１，４４１  置換部
４５１  排他論理和（ＸＯＲ）部
６００  ＩＣモジュール
６０１  ＣＰＵ(Central processing Unit)
６０２  メモリ
６０３  暗号処理部
６０４  乱数発生器
６０５  送受信部
【図１】
2005134477.tif 000005
【図２】
2005134477.tif 000006
【図３】
2005134477.tif 000007
【図４】
2005134477.tif 000008
【図５】
2005134477.tif 000009
【図６】
2005134477.tif 000010
【図７】
2005134477.tif 000011
【図８】
2005134477.tif 000012
【図９】
2005134477.tif 000013
【図１０】
2005134477.tif 000014
【図１１】
2005134477.tif 000015
【図１２】
2005134477.tif 000016
【図１３】
2005134477.tif 000017
【図１４】
2005134477.tif 000018