(57)【要約】【課題】  論理レベルが０の場合と１の場合とで、消費電力の差が発生しないようにする。【解決手段】  信号変換回路２１は、論理ビットの０または１に対応するLoまたはHiの信号ビットを、それぞれ、LoHiまたはHiLoの２ビットの信号ビットに変換し、暗号処理回路２２に出力する。従って、信号変換回路２１より後段の暗号処理回路２２では、１ビットの論理ビットが、２ビットの信号ビットで表される。暗号処理回路２２は、入力されたLoHiまたはHiLoの２ビットの信号ビットを１つの論理ビットとして、DESの暗号処理を行う。本発明は、例えば、DESなどのビット操作によって暗号処理するICチップに適用できる。【選択図】図１
2005260652.tif 000002
【特許請求の範囲】
【請求項１】
暗号化に関連する暗号関連処理を行う信号処理回路において、
１ビットの論理ビットが表す２つの論理レベルのうちの一方の論理レベルに対して、LoとHiとが同数の信号ビットが割り当てられ、他方の論理レベルに対して、前記一方の論理レベルに割り当てられた信号ビットとはLoとHiの順列が異なる信号ビットが割り当てられた信号を用いて暗号関連処理を行う暗号関連処理手段を備える
ことを特徴とする信号処理回路。
【請求項２】
前記暗号関連処理手段は、一方の論理レベルに対して、HiLoの信号ビットが割り当てられ、他方の論理レベルに対して、LoHiの信号ビットが割り当てられた信号を用いて暗号関連処理を行う
ことを特徴とする請求項１に記載の信号処理回路。
【請求項３】
前記暗号関連処理手段は、DES（Data Encryption Standard）を用いて暗号関連処理を行う
ことを特徴とする請求項１に記載の信号処理回路。
【請求項４】
IC(Integrated Circuit)チップで構成される
ことを特徴とする請求項１に記載の信号処理回路。
【請求項５】
一方の論理レベルに対して、HiLoの信号ビットを割り当て、他方の論理レベルに対して、LoHiの信号ビットを割り当てる割り当て手段をさらに備える
ことを特徴とする請求項１に記載の信号処理回路。
【請求項６】
暗号化に関連する暗号関連処理を行う信号処理回路の信号処理方法において、
１ビットの論理ビットが表す２つの論理レベルのうちの一方の論理レベルに対して、LoとHiとが同数の信号ビットが割り当てられ、他方の論理レベルに対して、前記一方の論理レベルに割り当てられた信号ビットとはLoとHiの順列が異なる信号ビットが割り当てられた信号を用いて暗号関連処理を行う暗号関連処理ステップを含む
ことを特徴とする信号処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、信号処理回路および方法に関し、特に、例えば、回路において、論理レベルの違いにより消費電力の差が発生しないようにする信号処理回路および方法に関する。
【背景技術】
【０００２】
DES（Data Encryption Standard），AES（Advanced Encryption Standard）、またはRSA（Rivest Shamir Adleman）などのアルゴリズム（暗号方式）を用いて、暗号処理を行う暗号処理回路がある。このような暗号処理回路では、一般的には、１ビットの論理ビットが表す２つの論理レベルである、例えば、０と１のうちの一方である０に対して信号レベルがLo（Lowレベル）の信号ビットを、他方の１に対して信号レベルがHi（Highレベル）の信号ビットを、それぞれ割り当てて、信号処理（暗号処理）が行われる。
【０００３】
暗号処理回路を構成するMOS -IC (Metal Oxide Semiconductor -Integrated Circuit)などでは、本来、HiまたはLoの信号ビットによる暗号処理回路の消費電力には、差がないはずであるが、実際には、リーク電流などにより、HiとLoの信号ビットによって暗号処理回路の消費電力に僅かな差が生じる。また、信号ビットが、HiからLoに、またはLoからHiに遷移する時に、回路において、消費電流が大きく流れる。
【０００４】
このHiとLoの信号ビットによる暗号処理回路の消費電力の差を利用して、暗号処理回路の消費電流を分析することにより鍵を解読する手法（DPA: Differential Power Analysis）が考案されている（例えば、非特許文献１）。
【０００５】
【非特許文献１】P. Kocher, J. Jaffe, B. Jun, "Differential Power Analysis," Advances in Cryptology - Crypto 99 Proceedings, Lecture Notes In Computer Science Vol. 1666, M. Wiener ed., Springer-Verlag, 1999.
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、これまでの暗号処理回路では、上述したような、暗号処理回路の消費電流を分析することにより鍵を解読する手法に対する対策が考えられていなかった。
【０００７】
この対策としては、暗号処理回路において、論理ビットに対応する信号ビット（信号レベル）によらず、消費電力の差が発生しないようにすることが考えられる。
【０００８】
本発明は、このような状況に鑑みてなされたものであり、回路において、論理レベルの違いにより消費電力の差が発生しないようにするものである。
【課題を解決するための手段】
【０００９】
本発明の信号処理装置は、１ビットの論理ビットが表す２つの論理レベルのうちの一方の論理レベルに対して、LoとHiとが同数の信号ビットが割り当てられ、他方の論理レベルに対して、一方の論理レベルに割り当てられた信号ビットとはLoとHiの順列が異なる信号ビットが割り当てられた信号を用いて暗号関連処理を行う暗号関連処理手段を備えることを特徴とする。
【００１０】
暗号関連処理手段には、一方の論理レベルに対して、HiLoの信号ビットが割り当てられ、他方の論理レベルに対して、LoHiの信号ビットが割り当てられた信号を用いて暗号関連処理を行うようにさせることができる。
【００１１】
暗号関連処理手段には、DES（Data Encryption Standard）を用いて暗号関連処理を行う
ようにさせることができる。
【００１２】
ICチップで構成することができる。
【００１３】
一方の論理レベルに対して、HiLoの信号ビットを割り当て、他方の論理レベルに対して、LoHiの信号ビットを割り当てる割り当て手段をさらに設けることができる。
【００１４】
本発明の信号処理方法は、１ビットの論理ビットが表す２つの論理レベルのうちの一方の論理レベルに対して、LoとHiとが同数の信号ビットが割り当てられ、他方の論理レベルに対して、一方の論理レベルに割り当てられた信号ビットとはLoとHiの順列が異なる信号ビットが割り当てられた信号を用いて暗号関連処理を行う暗号関連処理ステップを含むことを特徴とする。
【００１５】
本発明においては、１ビットの論理ビットが表す２つの論理レベルのうちの一方の論理レベルに対して、LoとHiとが同数の信号ビットが割り当てられ、他方の論理レベルに対して、一方の論理レベルに割り当てられた信号ビットとはLoとHiの順列が異なる信号ビットが割り当てられた信号を用いて暗号関連処理が行われる。
【発明の効果】
【００１６】
本発明によれば、回路において、論理レベルの違いにより消費電力の差が発生しないようにすることができる。
【発明を実施するための最良の形態】
【００１７】
以下に本発明の実施の形態を説明するが、請求項に記載の構成要件と、発明の実施の形態における具体例との対応関係を例示すると、次のようになる。この記載は、請求項に記載されている発明をサポートする具体例が、発明の実施の形態に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、構成要件に対応するものとして、ここには記載されていない具体例があったとしても、そのことは、その具体例が、その構成要件に対応するものではないことを意味するものではない。逆に、具体例が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その具体例が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００１８】
さらに、この記載は、発明の実施の形態に記載されている具体例に対応する発明が、請求項に全て記載されていることを意味するものではない。換言すれば、この記載は、発明の実施の形態に記載されている具体例に対応する発明であって、この出願の請求項には記載されていない発明の存在、すなわち、将来、分割出願されたり、補正により追加される発明の存在を否定するものではない。
【００１９】
請求項１に記載の信号処理回路は、
暗号化に関連する暗号関連処理を行う信号処理回路（例えば、図１の暗号処理回路２２）において、
１ビットの論理ビットが表す２つの論理レベルのうちの一方の論理レベルに対して、LoとHiとが同数の信号ビットが割り当てられ、他方の論理レベルに対して、前記一方の論理レベルに割り当てられた信号ビットとはLoとHiの順列が異なる信号ビットが割り当てられた信号を用いて暗号関連処理を行う暗号関連処理手段（例えば、図１の暗号処理回路２２）を備える
ことを特徴とする。
【００２０】
請求項４に記載の信号処理回路は、IC(Integrated Circuit)チップ（例えば、図１のICチップ１１）で構成されることを特徴とする。
【００２１】
請求項５に記載の信号処理回路は、一方の論理レベルに対して、HiLoの信号ビットを割り当て、他方の論理レベルに対して、LoHiの信号ビットを割り当てる割り当て手段（例えば、図１の信号変換回路２１）をさらに備えることを特徴とする。
【００２２】
請求項６に記載の信号処理方法は、
暗号化に関連する暗号関連処理を行う信号処理回路の信号処理方法において、
１ビットの論理ビットが表す２つの論理レベルのうちの一方の論理レベルに対して、LoとHiとが同数の信号ビットが割り当てられ、他方の論理レベルに対して、前記一方の論理レベルに割り当てられた信号ビットとはLoとHiの順列が異なる信号ビットが割り当てられた信号を用いて暗号関連処理を行う暗号関連処理ステップ（例えば、図１５のステップＳ１乃至Ｓ３の処理）を含む
ことを特徴とする。
【００２３】
以下、図を参照して、本発明の実施の形態について説明する。
【００２４】
図１は、本発明を適用した暗号処理を行うICチップ１１の一実施の形態の構成例を示している。
【００２５】
図１のICチップ１１は、所定のアルゴリズムによる暗号処理を行う信号処理回路である。ここで、ICチップ１１は、例えば、DESによる暗号処理を行うものとする。
【００２６】
ICチップ１１は、信号変換回路２１と暗号処理回路２２により構成される。信号変換回路２１と暗号処理回路２２は、論理ビットに対応する信号ビットが割り当てられた信号（論理レベルに対応する信号レベルが割り当てられた信号）を処理する信号処理回路である。
【００２７】
信号変換回路２１には、暗号処理される所定のデータの論理ビットに対応するLoまたはHiの（信号レベルの）信号ビットが入力される。信号変換回路２１には、例えば、論理ビットの０に対応する信号ビットとして、信号レベルがLoの信号ビットが入力され、論理ビットの１に対応する信号ビットとして、信号レベルがHiの信号ビットが入力される。
【００２８】
信号変換回路２１は、入力されたLoまたはHiの信号ビットを、それぞれ、LoHiまたはHiLoの２ビットの信号ビットに変換し、暗号処理回路２２に出力する。従って、信号変換回路２１より後段の暗号処理回路２２では、１ビットの論理ビットが、２ビットの信号ビットで表される。即ち、論理レベルが０の論理ビットには、LoHiの２ビットの信号ビットが割り当てられる。また、論理レベルが１の論理ビットには、HiLoの２ビットの信号ビットが割り当てられる。
【００２９】
暗号処理回路２２は、入力されたLoHiまたはHiLoの２ビットの信号ビットを１つの論理ビットとして、DESの暗号処理を行い、その暗号処理結果としての暗号文（のデータ）を出力する。
【００３０】
図２は、２ビットで表すことができるデータXに対する、図１の信号変換回路２１の入力と出力の信号（入力信号と出力信号）を示している。なお、図２において、X(Y)は、データXをY進数で表したものであることを意味する。
【００３１】
データ０(10)（００(2)）の論理ビットに対応する入力信号の信号ビットは、２ビットのLoLoである。このLoLoの２ビットの信号ビットが、入力信号として信号変換回路２１に入力されると、信号変換回路２１において信号変換され、LoHiLoHiの４ビットの信号ビットが、出力信号として信号変換回路２１から出力される。
【００３２】
また、データ１(10)（０１(2)）の論理ビットに対応する入力信号の信号ビットは、２ビットのLoHiである。このLoHiの２ビットの信号ビットが、入力信号として信号変換回路２１に入力されると、信号変換回路２１において信号変換され、LoHiHiLoの４ビットの信号ビットが、出力信号として信号変換回路２１から出力される。
【００３３】
同様に、データ２(10)（１０(2)）の２ビットの信号ビットHiLoの入力信号に対しては、HiLoLoHiの４ビットの出力信号が、信号変換回路２１から出力される。データ３(10)（１１(2)）の２ビットの信号ビットHiHiの入力信号に対しては、HiLoHiLoの４ビットの出力信号が、信号変換回路２１から出力される。
【００３４】
図３は、４ビットで表すことができるデータX’に対する、図１の信号変換回路２１の入力と出力の信号（入力信号と出力信号）を示している。なお、図３においても、X’(Y)は、データX’をY進数で表したものであることを意味する。
【００３５】
データ０(10)（００００(2)）の論理ビットに対応する入力信号の信号ビットは、４ビットのLoLoLoLoである。このLoLo LoLoの４ビットの信号ビットが、入力信号として信号変換回路２１に入力されると、信号変換回路２１において信号変換され、LoHiLoHiLoHiLoHiの８ビットの信号ビットが、出力信号として信号変換回路２１から出力される。
【００３６】
また、データ１(10)（０００１(2)）の論理ビットに対応する入力信号の信号ビットは、４ビットのLoLoLoHiである。このLoLoLoHiの４ビットの信号ビットが、入力信号として信号変換回路２１に入力されると、信号変換回路２１において信号変換され、LoHiLoHiLoHiHiLoの８ビットの信号ビットが、出力信号として信号変換回路２１から出力される。
【００３７】
同様に、データ２(10)（００１０(2)）の４ビットの信号ビットLoLoHiLoの入力信号に対しては、LoHiLoHiHiLoLoHiの８ビットの出力信号が、信号変換回路２１から出力される。データ３(10)（００１１(2)）の４ビットの信号ビットLoLoHiHiの入力信号に対しては、LoHiLoHiHiLoHiLoの８ビットの出力信号が、信号変換回路２１から出力される。
【００３８】
さらに、データ４(10)乃至１５(10)に対しても、図３に示すように、同様の信号変換が、信号変換回路２１において行われる。
【００３９】
以上のように、信号変換回路２１により、論理レベルが０の論理ビットには、LoHiの２ビットの信号ビットが割り当てられ、論理レベルが１の論理ビットには、HiLoの２ビットの信号ビットが割り当てられたことにより、信号変換回路２１の後段の暗号処理回路２２では、論理レベルの違いによる消費電流の差をなくすことができる。
【００４０】
次に、図４乃至図６を参照して、図１の暗号処理回路２２において行われる、後述するEXOR処理（EXclusive OR；排他的論理和を演算する処理）を、信号変換回路２１の出力信号を用いて行う場合について説明する。
【００４１】
図４は、入力データｘとｙのEXOR処理の真理値表を示している。なお、データｘ(y)の（ｙ）が省略されている場合、データｘは、１０進数で表されているものとする。
【００４２】
図４に示すように、EXOR処理では、入力データｘまたはｙのいずれか一方が１である場合に、処理結果が１となり、他の場合は、処理結果は０となる。
【００４３】
図５は、信号変換回路２１の入力信号のように、１ビットの論理ビットの０(2)または１(2)に１ビットの信号ビットのLoまたはHiがそれぞれ割り当てられている信号を対象にEXOR処理を行った場合の処理結果を示している。
【００４４】
図５に示すように、１ビットの論理ビットに１ビットの信号ビットが割り当てられているEXOR処理では、入力信号の信号ビットのいずれか一方がHiである場合に、EXOR処理によって得られる信号ビットはHiとなり、他の場合は、EXOR処理によって得られる信号ビットはLoとなる。
【００４５】
図６は、信号変換回路２１の出力信号のように、１ビットの論理ビットの０(2)または１(2)に２ビットの信号ビットのLoHiまたはHiLoがそれぞれ割り当てられている信号を対象にEXOR処理を行った場合の処理結果を示している。
【００４６】
図６に示すように、１ビットの論理ビットに２ビットの信号ビットが割り当てられているEXOR処理では、入力信号の信号ビットのいずれか一方がHiLoである場合に、EXOR処理によって得られる信号ビットはHiLoとなり、他の場合は、EXOR処理によって得られる信号ビットはLoHiとなる。
【００４７】
図７は、図１の暗号処理回路２２の詳細な構成例を示している。
【００４８】
なお、上述したように、暗号処理回路２２には、１ビットの論理ビットに対応する２ビットの信号ビットが、信号変換回路２１から入力される。従って、例えば、６４ビットの論理ビットで表されるデータについては、暗号処理回路２２に入力される入力信号は、６４ビットの２倍の１２８ビットの信号ビットとなっている。換言すれば、暗号処理回路２２が、例えば、６４ビットの論理ビットの単位（ブロック）で暗号処理を行う場合、暗号処理回路２２内の信号線は、１２８ビット分だけ設けられている。以下の説明においては、特に言及していない場合においても、１ビットの論理ビットが、２ビットの信号ビットで処理されているものとする。なお、以下において、１ビットの論理ビットに対応する２ビットの信号ビットが表す値を、１ビットのビットデータという。
【００４９】
DESでは、平文（データ）が６４ビットの論理ビットの単位で処理される。このため、暗号処理回路２２には、６４ビット単位でビットデータが入力される。即ち、暗号処理回路２２には、暗号化されるデータ（平文）の信号ビットが、１２８ビット単位で入力される。
【００５０】
暗号処理回路２２に入力された６４ビットのビットデータ（１２８ビットの信号ビット）は、IP（Initial Permutation）変換部４１に入力される。
【００５１】
IP変換部４１は、入力された６４ビットのビットデータの配置（ビット位置）を変換する(入れ換える) IP変換テーブルを有している。即ち、IP変換テーブルは、例えば、入力された６４ビットのビットデータそれぞれについて、５８ビット目の位置にある値を１ビット目の位置に移動させる、５０ビット目の位置にある値を２ビット目の位置に移動させる等の指示情報をもつテーブルである。このIP変換テーブルについては、図８を参照して後述する。
【００５２】
IP変換部４１は、そのIP変換テーブルに従って、入力信号の６４ビットのビットデータのビット位置を入れ換えるIP変換処理を行う。そして、IP変換部４１は、IP変換処理によって得られる６４ビットのビットデータのうち、上位３２ビットのビットデータをレジスタ５１−１に、下位３２ビットのビットデータをレジスタ５２−１に、それぞれ出力する。
【００５３】
ここで、IP変換部４１に入力される１ビットのビットデータは、上述したように、２ビットの信号ビットで表されているものであるので、１ビットのビットデータのビット位置を移動させるということは、そのビットデータに対応する２ビットの信号ビットをセットで移動させることを意味する。
【００５４】
レジスタ５１−１は、IP変換部４１からの３２ビットのビットデータを記憶し、所定のタイミングで、記憶している３２ビットのビットデータを、加算回路５５−１に出力する。なお、レジスタ５１−１に記憶される３２ビットのビットデータをL0とする。
【００５５】
レジスタ５２−１は、IP変換部４１からの３２ビットのビットデータを記憶し、所定のタイミングで、記憶している３２ビットのビットデータを、関数処理部５４−１およびレジスタ５１−２に出力する。なお、レジスタ５２−１に記憶される３２ビットのビットデータをR0とする。
【００５６】
中間鍵生成部５３−１は、そこに入力される６４ビットの共通鍵に基づいて、４８ビットの中間鍵K1を生成し、関数処理部５４−１に出力する。
【００５７】
関数処理部５４−１は、レジスタ５２−１からの３２ビットのビットデータR0と、中間鍵生成部５３−１からの４８ビットの中間鍵K1とに基づいて、ｆ関数処理を行う。ｆ関数処理の詳細については、図１０を参照して後述するが、このｆ関数処理により、新たな３２ビットのビットデータが生成される。なお、３２ビットのビットデータαと４８ビットの中間鍵（ビットデータ）βとに基づいてｆ関数処理を行うこと、およびｆ関数処理により生成される３２ビットのビットデータをｆ（α，β）と表すこととすると、関数処理部５４−１では、３２ビットのビットデータｆ（R0，K1）が生成される。
【００５８】
そして、関数処理部５４−１は、ｆ関数処理によって得られる新たな３２ビットのビットデータｆ（R0，K1）を加算回路５５−１に出力する。
【００５９】
加算回路５５−１は、レジスタ５１−１からの３２ビットのビットデータL0と、関数処理部５４−１からの３２ビットのビットデータｆ（R0，K1）との、対応するビット（１つの論理ビットを表す２ビットの信号ビットのセット）それぞれについて、図６で説明したEXOR処理を行う。そして、加算回路５５−１は、EXOR処理によって得られる３２ビットのビットデータを、レジスタ５２−２に出力する。
【００６０】
ここで、レジスタ５１−２に記憶される３２ビットのビットデータL1、およびレジスタ５２−２に記憶される３２ビットのビットデータR1は、次のように表すことができる。
【００６１】
L1＝R0
R1＝L0＋ｆ（R0，K1）
・・・・・・・・・・・・・・・・・・・・・・・（１）
【００６２】
ここで、“＋”は、EXOR処理（EXOR演算）を表す。
【００６３】
以上の、レジスタ５１−１および５２−１のそれぞれが、３２ビットのビットデータL0およびR0を出力してから、レジスタ５１−１および５２−１の後段のレジスタ５１−２および５２−２に、（１）式で表される３２ビットのビットデータL1およびR1がそれぞれ記憶されるまでの処理を１つのラウンドの処理と称するものとすると、図７の暗号処理回路２２では、１つのラウンドの処理を行うために構成される、レジスタ５１−１、レジスタ５２−１、中間鍵生成部５３−１、関数処理部５４−１、および加算回路５５−１の構成（以下、適宜、１ラウンド処理のセットと称する）と同様の構成が、１５ラウンド分だけ、１ラウンド処理のセットの後段に設けられている。
【００６４】
換言すれば、暗号処理回路２２には、１６ラウンド分のレジスタ５１−ｉ、レジスタ５２−ｉ、中間鍵生成部５３−ｉ、関数処理部５４−ｉ、加算回路５５−ｉが設けられている。なお、レジスタ５１−ｉ、およびレジスタ５２−ｉに記憶される３２ビットのビットデータそれぞれを、Ｌi-1およびＲi-1と表す。ここで、ラウンドの番号を表す変数ｉは、特に断りがない場合には、ｉ＝１，２，・・，１６を表すものとする。
【００６５】
なお、１６番目の１６ラウンドの処理では、他の１乃至１５ラウンドの処理と異なり、図７に示すように、レジスタ５２−１６は、記憶している３２ビットのビットデータR15を、レジスタ５１−１７ではなく、レジスタ５２−１７に出力し、また、１６ラウンド目の加算回路５５−１６は、EXOR処理によって得られる３２ビットのビットデータを、レジスタ５２−１７ではなく、レジスタ５１−１７に出力する。
【００６６】
２乃至１６ラウンドのレジスタ５１−ｉおよび５２−ｉ（ｉ＝２，・・，１６）にそれぞれ記憶されるビットデータLi-1およびRi-1については、レジスタ５１−２および５２−２に記憶されるＬ1およびＬ2の（１）式と同様の関係が成り立つことから、レジスタ５１−ｉおよび５２−ｉにそれぞれ記憶されるビットデータLi-1およびRi-1（ｉ＝１，２，・・，１６）は、次の（２）式のように表すことができる。
【００６７】
Li＝Ri-1
Ri＝Li-1＋ｆ（Ri-1，Ki）                （ｉ＝１，２，・・，１６）
・・・・・・・・・・・・・・・・・・・・・・・（２）
【００６８】
レジスタ５１−１７は、加算回路５５−１６からのEXOR処理によって得られる３２ビットのビットデータを、ビットデータL16として記憶し、所定のタイミングで、そのビットデータL16をIP逆変換部６１に出力する。
【００６９】
レジスタ５２−１７は、レジスタ５２−１６からの３２ビットのビットデータを、ビットデータR16として記憶し、所定のタイミングで、そのビットデータR16をIP逆変換部６１に出力する。
【００７０】
従って、ビットデータL16およびビットデータR16は、（３）式のように表すことができる。
【００７１】
L16＝L15＋ｆ（R15，K16）
L16＝R15
・・・・・・・・・・・・・・・・・・・・・・・（３）
【００７２】
IP逆変換部６１には、レジスタ５１−１７からの３２ビットのビットデータL16と、レジスタ５２−１７からの３２ビットのビットデータR16とが入力される。そして、IP逆変換部６１は、３２ビットのビットデータL16を上位３２ビットとするとともに、３２ビットのビットデータR16を下位３２ビットとする６４ビットのビットデータを対象に、IP逆変換を行う。
【００７３】
即ち、IP逆変換部６１は、IP変換部４１が行う６４ビットのビットデータのIP変換の逆変換であるIP逆変換を行う。具体的には、IP逆変換部６１は、IP変換部４１のIP変換テーブルに対応するIP逆変換テーブルを有し、そのIP逆変換テーブルに従って、６４ビットのビットデータのビット位置を入れ換えるIP逆変換処理を行う。そして、IP変換部６１は、IP逆変換処理によって得られる６４ビットのビットデータを、暗号文として外部に出力する。
【００７４】
図８は、図７のIP変換部４１が有するIP変換テーブルの例を示している。
【００７５】
図８のIP変換テーブルでは、IP変換処理の対象となる６４ビットのビットデータの各ビット（１つの論理ビットを表す２ビットの信号ビットのセット）の位置を入力ビット位置とするとともに、IP変換処理後の６４ビットのビットデータの各ビット（１つの論理ビットを表す２ビットの信号ビットのセット）の位置を出力ビット位置として、入力ビット位置と出力ビット位置とが対応付けられている。
【００７６】
図７のIP変換部４１は、図８のIP変換テーブルを参照して、信号変換回路２１から入力された６４ビットのビットデータの各ビットについて、そのビットの出力ビット位置を決定し、その出力ビット位置に配置（移動）して、レジスタ５１−１または５２−１に出力する。
【００７７】
図８に示すIP変換テーブルでは、IP変換処理の対象の６４ビットのビットデータのうちの、例えば、図中点線の丸で囲んである、入力ビット位置が５８ビット目のビットデータは、１ビット目の出力ビット位置に配置（移動）させることが指定されている。従って、IP変換処理の対象の６４ビットのビットデータの５８ビット目は、IP変換部４１のIP変換処理によって、１ビット目に入れ替えられる。
【００７８】
また、図８のIP変換テーブルによれば、例えば、IP変換処理の対象の６４ビットのビットデータの５０ビット目は、２ビット目に入れ替えられる。同様にして、図８のIP変換テーブルでは、入力ビット位置が、上述した５８ビット目と５０ビット目以外の１ビット目乃至６４ビット目のビットデータについても、出力ビット位置として何ビット目に配置させるかが指定されている。
【００７９】
このように、IP変換部４１は、IP変換テーブルを使用して、入力された６４ビットのビットデータのビット位置を入れ換えるIP変換処理を行う。
【００８０】
図９は、図７のIP逆変換部６１が有するIP逆変換テーブルの例を示している。
【００８１】
図９のIP逆変換テーブルでは、IP逆変換処理の対象となる６４ビットのビットデータの各ビットの位置を入力ビット位置とするとともに、IP逆変換処理後の６４ビットのビットデータの各ビットの位置を出力ビット位置として、入力ビット位置と出力ビット位置とが対応付けられている。
【００８２】
図９のIP逆変換テーブルは、上述したようにIP変換部４１で行った６４ビットのビットデータのIP変換の逆変換であるIP逆変換を行うテーブルである。
【００８３】
図９のIP逆変換テーブルによれば、IP逆変換処理の対象の６４ビットのビットデータのうちの、例えば、図中点線の丸で囲んである、入力ビット位置が１ビット目のビットデータは、５８ビット目の出力ビット位置に配置（移動）させることが指定されている。従って、IP逆変換処理の対象の６４ビットのビットデータの１ビット目は、IP逆変換部６１のIP逆変換処理によって、５８ビット目に入れ替えられる。
【００８４】
同様にして、図９のIP逆変換テーブルでは、入力ビット位置が２ビット目乃至６４ビット目のビットデータについても、出力ビット位置として何ビット目に配置させるかが指定されている。
【００８５】
このように、IP逆変換部６１は、IP逆変換テーブルを使用して、入力された６４ビットのビットデータのビット位置を入れ換えるIP逆変換処理を行う。
【００８６】
図１０は、図７の関数処理部５４−１の詳細な構成例を示している。
【００８７】
関数処理部５４−１は、上述したように、レジスタ５２−１から出力された３２ビットのビットデータR0（信号ビットとしては、６４ビットで表されるもの）と、中間鍵生成部５３−１から出力された４８ビットの中間鍵K1（信号ビットとしては、９６ビットで表されるもの）とに基づいて、ｆ関数処理を行う。
【００８８】
レジスタ５２−１から出力された３２ビットのビットデータR0は、ビット拡張部１０１に入力される。
【００８９】
ビット拡張部１０１は、内部に有するE（Expand）テーブル（図１１で後述）に従って、レジスタ５２−１からの３２ビットのビットデータR0を、４８ビットのビットデータに拡張する４８ビット拡張処理を行う。そして、ビット拡張部１０１は、４８ビット拡張処理によって得られる４８ビットのビットデータを、加算回路１０２に出力する。
【００９０】
加算回路１０２には、ビット拡張部１０１からの４８ビットのビットデータと、中間鍵生成部５３−１からの４８ビットの中間鍵K1とが入力される。
【００９１】
加算回路１０２は、ビット拡張部１０１からの４８ビットのビットデータと、中間鍵生成部５３−１からの４８ビットの中間鍵K1との、対応するビット（１つの論理ビットを表す２ビットの信号ビットのセット）それぞれについて、EXOR処理を行う。
【００９２】
そして、加算回路１０２は、EXOR処理によって得られる４８ビットのビットデータを、Ｓボックス処理部Ｓ1乃至Ｓ8に出力する。なお、加算回路１０２は、図１０に示すように、EXOR処理によって得られる４８ビットのビットデータのうち、下位１乃至６ビット目の６ビットをＳボックス処理部Ｓ8に、下位７乃至１２ビット目の６ビットをＳボックス処理部Ｓ7に、下位１３乃至１８ビット目の６ビットをＳボックス処理部Ｓ6に、下位１９乃至２４ビット目の６ビットをＳボックス処理部Ｓ5に、下位２５乃至３０ビット目の６ビットをＳボックス処理部Ｓ6に、下位３１乃至３６ビット目の６ビットをＳボックス処理部Ｓ3に、下位３７乃至４２ビット目の６ビットをＳボックス処理部Ｓ2に、下位４３乃至４８ビット目の６ビット（上位６ビット）をＳボックス処理部Ｓ1に、それぞれ出力する。
【００９３】
Ｓボックス処理部Ｓj（ｊ＝１乃至８）は、Ｓボックス関数を用いて、加算回路１０２からの６ビットのビットデータを４ビットのビットデータに変換し、Ｐ変換部１０３に出力する。なお、Ｓボックス関数によるビットデータの変換を行うSボックス関数処理については、図１２および図１３を参照して後述する。
【００９４】
Ｐ変換部１０３には、Ｓボックス処理部Ｓ1乃至Ｓ8のそれぞれから、４ビットのビットデータが入力される。そして、Ｐ変換部１０３は、Ｓボックス処理部Ｓ1乃至Ｓ8それぞれからの４ビットのビットデータを最上位ビットから順番に並べた、３２ビットのビットデータを対象に、P変換処理を行う。
【００９５】
即ち、Ｐ変換部１０３は、IP変換テーブル(図８)と同様の、ビット位置を入れ換えるためのP変換テーブルを内部に有している。P変換部１０３は、P変換テーブルに従って、Ｓボックス処理部Ｓjから入力された３２ビットのビットデータのビット位置を入れ換えるP変換処理を行う。そして、P変換部１０３は、P変換処理によって得られる３２ビットのビットデータを、加算回路５５−１（図７）に出力する。
【００９６】
ここで、Ｓボックス処理部ＳjからＰ変換部１０３に入力される１ビットのビットデータは、IP変換部４１に入力されるビットデータの各ビットと同様に、２ビットの信号ビットのセットで表されているものであるので、ビットデータの各ビットのビット位置を移動させるということは、そのビットに対応する２ビットの信号ビットをセットで移動させることを意味する。
【００９７】
図１１は、図１０のビット拡張部１０１が有するEテーブルの例を示している。
【００９８】
図１１のEテーブルでは、４８ビット拡張処理の対象となる３２ビットのビットデータの各ビット（１つの論理ビットを表す２ビットの信号ビットのセット）の位置を入力ビット位置とするとともに、４８ビット拡張処理後の４８ビットのビットデータの各ビット（１つの論理ビットを表す２ビットの信号ビットのセット）の位置を出力ビット位置として、入力ビット位置と出力ビット位置とが対応付けられている。
【００９９】
図１０のビット拡張部１０１は、図１１のEテーブルを参照して、加算回路１０２に出力する４８ビットのビットデータの各ビットについて、そのビットの入力ビット位置を決定し、その入力ビット位置のビットデータを出力ビット位置に配置して、加算回路１０２に出力する。
【０１００】
図１１に示すEテーブルでは、ビット拡張処理によって得られる４８ビットのビットデータのうちの、例えば、出力ビット位置が１ビット目のビットデータとしては、入力ビット位置が３２ビット目のビットデータとすることが指定されている。また、図１１のEテーブルによれば、ビット拡張処理によって得られる４８ビットのビットデータのうちの、例えば、出力ビット位置が２ビット目のビットデータとしては、入力ビット位置が１ビット目のビットデータとすることが指定されている。
【０１０１】
同様にして、図１１のEテーブルでは、出力ビット位置が３乃至４８ビット目の位置となるビットデータについても、入力ビット位置が何ビット目のビットデータとするかが指定されている。
【０１０２】
なお、ビット拡張部１０１は、レジスタ５２−１から入力される３２ビットのビットデータを４８ビットのビットデータに拡張するので、１６ビット分のビットデータについては、レジスタ５２−１から入力される３２ビットのビットデータのいずれかが、複数指定されている。
【０１０３】
例えば、図１１のEテーブルでは、入力ビット位置が３２ビット目のビットデータは、上述した、１ビット目の出力ビット位置の他に、４７ビット目の出力ビット位置としても指定されている。
【０１０４】
このように、ビット拡張部１０１は、Eテーブルを使用して、３２ビットのビットデータR0を４８ビットのビットデータに拡張する４８ビット拡張処理を行う。
【０１０５】
次に、図１２と図１３を参照して、図１０のＳボックス処理部Ｓjが行うSボックス関数処理について説明する。なお、図１２および図１３は、ｊ＝１の場合のSボックス関数処理の例を示している。
【０１０６】
Sボックス関数処理では、Sボックス関数によって、行（Row Number）と列（Column Number）を引数として、関数値としての所定の値が算出（決定）される。即ち、Sボックス関数によれば、行（Row Number）と列（Column Number）を入力として、所定の値が決定される。
【０１０７】
Ｓボックス関数の引数である行と列には、それぞれ２ビットと４ビットが割り当てられている。従って、行は、２ビットで表すことができる０乃至３のうちのいずれかの値をとり、また、列は、４ビットで表すことができる０乃至１５のうちのいずれかの値をとる。
【０１０８】
図１２では、加算回路１０２からＳボックス処理部Ｓ1に入力された６ビットのビットデータの例を示している。図１２では、６ビットのビットデータは、点線で囲まれている「０１１０１１(2)」となっている。
【０１０９】
Ｓボックス処理部Ｓ1は、加算回路１０２から入力された６ビットのビットデータ「０１１０１１(2)」のうちの、下位１ビット目と下位６ビット目（上位１ビット目）を、それぞれ、下位ビットと上位ビットとする２ビットの「０１(2)＝１(10)」を行（Row Number）の値とする。
【０１１０】
また、Ｓボックス処理部Ｓ1は、加算回路１０２から入力された６ビットのビットデータ「０１１０１１(2)」のうちの、下位２乃至５ビット目を、それぞれ、下位１乃至４ビット目とする４ビットの「１１０１(2)＝１３(10)」を列（Column Number）の値とする。
【０１１１】
そして、Ｓボックス処理部Ｓ1は、行と列の値を引数として、図１３に示すSボックス関数から関数値を求める。
【０１１２】
即ち、図１３は、横方向と縦方向にそれぞれ列と行の値を取ったSボックス関数を示している。
【０１１３】
図１３のSボックス関数によれば、例えば、図１２に示したように、行（Row Number）が「１(10)」で、列（Column Number）が「１３(10)」である場合、その行と列で特定される位置に記述されている所定の値「５(10)」（点線で示されている）が、関数値として算出される。
【０１１４】
図１３のＳボックス関数により算出された「５(10)」を２進数で表記すれば、４ビットの「０１０１(2)」となるので、加算回路１０２から入力された６ビットのビットデータ「０１１０１１(2)」に対して、４ビットのビットデータ「０１０１(2)」が、Ｓボックス処理部Ｓ1からP変換部１０３に出力される。なお、上述しているように、４ビットのビットデータ「０１０１(2)」は、ハードウエア的には、２ビットの信号ビットのセットが４セットの、計８ビットの信号ビットで表されるものである。
【０１１５】
以上のようにして、Ｓボックス処理部Ｓ1乃至Ｓ8それぞれが、４ビットのビットデータをP変換部１０３に出力し、P変換部１０３には、合わせて３２ビットのビットデータが入力される。
【０１１６】
図１４は、P変換部１０３が有するP変換テーブルの例を示している。
【０１１７】
図１４のP変換テーブルでは、P変換処理の対象となる３２ビットのビットデータの各ビット（１つの論理ビットを表す２ビットの信号ビットのセット）の位置を入力ビット位置とするとともに、P変換処理によって得られる３２ビットのビットデータの各ビット（１つの論理ビットを表す２ビットの信号ビットのセット）の位置を出力ビット位置として、入力ビット位置と出力ビット位置とが対応付けられている。
【０１１８】
図１０のP変換部１０３は、図１４のP変換テーブルを参照して、Ｓボックス処理部Ｓ1乃至Ｓ8から入力された３２ビットのビットデータの各ビットについて、そのビットの出力ビット位置を決定し、その出力ビット位置に配置（移動）して、加算回路５５−１（図７）に出力する。
【０１１９】
図１４に示すP変換テーブルでは、P変換処理の対象の３２ビットのビットデータのうちの、例えば、入力ビット位置が１６ビット目のビットデータは、１ビット目の出力ビット位置に配置（移動）させることが指定されている。従って、P変換処理の対象の３２ビットのビットデータの１６ビット目は、P変換部１０３のP変換処理によって、１ビット目に入れ替えられる。
【０１２０】
同様にして、図１４のP変換テーブルでは、入力ビット位置が１乃至１５ビット目と１７乃至３２ビット目のビットデータについても、何ビット目の出力ビット位置に配置させるかが指定されている。
【０１２１】
このように、P変換部１０３は、P変換テーブルを使用して、Ｓボックス処理部Ｓ1乃至Ｓ8からの３２ビットのビットデータのビット位置を入れ換えるP変換処理を行う。
【０１２２】
次に、図１５のフローチャートを参照して、図７の暗号化処理が行われる場合の暗号処理回路２２の動作について説明する。
【０１２３】
初めに、ステップＳ１において、IP変換部４１は、IP変換テーブル（図８）に従って、信号変換回路２１（図１）からの入力信号の６４ビットのビットデータのビット位置を入れ換えるIP変換処理を行って、ステップＳ２に進む。
【０１２４】
ステップＳ２において、レジスタ５１−ｉ、レジスタ５２−ｉ、中間鍵生成部５３−ｉ、関数処理部５４−ｉ、加算回路５５−ｉ、レジスタ５１−１７、およびレジスタ５２−１７は、ラウンド処理を行い、ステップＳ３に進む。即ち、ステップＳ２では、レジスタ５１−ｉ、およびレジスタ５２−ｉに記憶されるビットデータＲi-1およびＬi-1（ｉ＝１，２，・・・，１６，１７）について、上述した（２）または（３）式の処理が行われる。
【０１２５】
ステップＳ３において、ＩＰ逆変換部６１は、IP逆変換テーブルに従って、６４ビットのビットデータのビット位置を入れ換えるIP逆変換処理を行う。そして、IP変換部６１は、IP逆変換処理によって得られる６４ビットのビットデータを外部に出力して、処理を終了する。
【０１２６】
次に、図１６のフローチャートを参照して、図１５のステップＳ２におけるラウンド処理について説明する。
【０１２７】
初めに、ステップＳ２１において、レジスタ５１−１、レジスタ５２−１、中間鍵生成部５３−１、関数処理部５４−１、および加算回路５５−１は、１ラウンド目のラウンド処理（１ラウンド処理）を行って、ステップＳ２２に進む。
【０１２８】
ステップＳ２２において、レジスタ５１−２、レジスタ５２−２、中間鍵生成部５３−２、関数処理部５４−２、および加算回路５５−２は、２ラウンド目のラウンド処理（２ラウンド処理）を行って、ステップＳ２３に進む。
【０１２９】
以下、同様にして、ステップＳ２３乃至Ｓ３６において、それぞれ、レジスタ５１−ｉ、レジスタ５２−ｉ、中間鍵生成部５３−ｉ、関数処理部５４−ｉ、および加算回路５５−ｉは、ｉラウンド目のラウンド処理（ｉラウンド処理）を行う（ｉ＝３，・・，１６）。但し、ステップＳ３６の１６ラウンド処理では、図７で説明したように、レジスタ５２−１６が、記憶している３２ビットのビットデータR15を、レジスタ５１−１７ではなく、レジスタ５２−１７に出力すること、および、加算回路５５−１６が、EXOR処理によって得られる３２ビットのビットデータを、レジスタ５２−１７ではなく、レジスタ５１−１７に出力することが、他の１乃至１５ラウンド処理と異なる。
【０１３０】
そして、ステップＳ３６の後、ステップＳ３７に進み、レジスタ５１−１７は、記憶しているビットデータL16をIP逆変換部６１に出力し、レジスタ５２−１７は、記憶しているビットデータR16をIP逆変換部６１に出力する。
【０１３１】
次に、図１７のフローチャートを参照して、図１６のステップＳ２１の１ラウンド処理で行われる、レジスタ５１−１、レジスタ５２−１、中間鍵生成部５３−１、関数処理部５４−１、および加算回路５５−１の動作について説明する。
【０１３２】
初めに、ステップＳ５１において、レジスタ５２−１は、記憶している３２ビットのビットデータR0を、関数処理部５４−１に出力して、ステップＳ５２に進む。
【０１３３】
ステップＳ５２において、レジスタ５２−１は、記憶している３２ビットのビットデータR0を、レジスタ５１−２（上位レジスタ）に出力して、ステップＳ５３に進む。
【０１３４】
ステップＳ５３において、中間鍵生成部５３−１は、そこに入力される６４ビットの共通鍵に基づいて、４８ビットの中間鍵K1を生成し、関数処理部５４−１に出力して、ステップＳ５４に進む。
【０１３５】
ステップＳ５４において、関数処理部５４−１は、レジスタ５２−１からの３２ビットのビットデータR0と、中間鍵生成部５３−１からの４８ビットの中間鍵K1とに基づいて、ｆ関数処理を行って、ステップＳ５５に進む。このｆ関数処理によって３２ビットのビットデータが得られ、関数処理部５４−１から加算回路５５−１に出力される。
【０１３６】
ステップＳ５５において、加算回路５５−１は、レジスタ５１−１からの３２ビットのビットデータL0と、関数処理部５４−１からの３２ビットのビットデータとの、対応するビット（１つの論理ビットを表す２ビットの信号ビットのセット）それぞれについて、EXOR処理を行う。また、ステップＳ５５では、加算回路５５−１は、EXOR処理によって得られる３２ビットのビットデータを、レジスタ５２−２（下位レジスタ）に出力して、１ラウンド処理を終了する。
【０１３７】
以上の１ラウンド処理と同様の処理が、図１６のステップＳ２２乃至Ｓ３５の２ラウンド処理乃至１５ラウンド処理それぞれでも行われる。
【０１３８】
また、図１６のステップＳ３６の１６ラウンド処理では、上述のステップＳ５２において、３２ビットのビットデータを上位レジスタ（レジスタ５１−１７）に出力することに代えて、下位レジスタ（レジスタ５２−１７）に出力し、上述のステップＳ５５において、ＥＸＯＲ処理によって得られる３２ビットのビットデータを下位レジスタ（レジスタ５２−１７）に出力することに代えて、上位レジスタ（レジスタ５１−１７）に出力することを除いて、図１７の１ラウンド処理と同様の処理が行われる。
【０１３９】
次に、図１８のフローチャートを参照して、図１７のステップＳ５４におけるｆ関数処理について説明する。
【０１４０】
初めに、ステップＳ８１において、関数処理部５４−１（図１０）のビット拡張部１０１は、内部に有するEテーブルに従って、レジスタ５２−１からの３２ビットのビットデータR0を、４８ビットのビットデータに拡張する４８ビット拡張処理を行い、ステップＳ８２に進む。
【０１４１】
ステップＳ８２において、加算回路１０２は、ビット拡張部１０１での４８ビット拡張処理によって得られる４８ビットのビットデータと、中間鍵生成部５３−１からの４８ビットのビットデータとの、対応するビットそれぞれについて、EXOR処理を行う。また、ステップＳ８２では、加算回路１０２は、EXOR処理によって得られる４８ビットのビットデータを、６ビットずつに分け、その６ビットずつのビットデータを、上位側から順にＳボックス処理部Ｓ1乃至Ｓ8に出力して、ステップＳ８３に進む。
【０１４２】
ステップＳ８３において、Ｓボックス処理部Ｓ1乃至Ｓ8それぞれは、Ｓボックス関数を用いて、加算回路１０２からの６ビットのビットデータを４ビットのビットデータに変換するＳボックス関数処理を行い、その４ビットのビットデータを、Ｐ変換部１０３に出力して、ステップＳ８４に進む。
【０１４３】
ステップＳ８４において、P変換部１０３は、P変換テーブルに従って、Ｓボックス処理部Ｓ1乃至Ｓ8それぞれから４ビットずつの、合計で３２ビットのビットデータのビット位置を入れ換えるP変換処理を行う。そして、P変換部１０３は、P変換処理によって得られる３２ビットのビットデータを、加算回路５５−１に出力する。
【０１４４】
以上のように、暗号処理回路２２（図１）では、１ビットの論理ビットに対応する２ビットの信号ビットをセットとして、図１５乃至図１８を参照して説明したそれぞれの処理が行われる。
【０１４５】
これにより、論理レベルが０であることを表すLoHiの２ビットの信号ビットと、論理レベルが１であることを表すHiLoの２ビットの信号ビットとの間で、消費電力の差をなくすことができる。従って、図１のICチップ１１の外部から、その消費電流を分析することによる鍵の解読を防止し、セキュリティを確保することができる。このことから、ICチップ１１は、極めてセキュアな、いわばセキュリティチップということができる。
【０１４６】
次に、図１９は、本発明を適用した暗号処理を行うICチップ１１の他の実施の形態の構成例を示している。
【０１４７】
図１９のICチップ１１は、信号変換回路２１を有していない点が、図１のICチップ１１と異なる。
【０１４８】
図１９の暗号処理回路２２には、他の装置（ICチップ、制御基板など）から、図１の信号変換回路２１が出力するものと同一の、１ビットの論理ビットに、２ビットの信号ビットが割り当てられた信号が入力される。即ち、暗号処理回路２２には、論理ビットが表す論理レベルが０の場合には、LoHiの２ビットの信号ビットが他の装置から入力され、論理ビットが表す論理レベルが１の場合には、HiLoの２ビットの信号ビットが、他の装置から入力される。
【０１４９】
暗号処理回路２２は、図１で説明した場合と同様に、入力されたLoHiまたはHiLoの２ビットの信号ビットを１つの論理ビットとして、DESの暗号処理を行い、その暗号処理結果としての暗号文（のデータ）を出力する。
【０１５０】
なお、図１および図１９の暗号処理回路２２は、１ビットの論理ビットを、上述したような、LoHiまたはHiLoの２ビットの信号ビットで表す以外にも、例えば、LoHi LoHiまたはHiLo HiLoの４ビットの信号ビットで表すようにしても良い。即ち、暗号処理回路２２は、１ビットの論理ビットが表す論理レベルの０に対して、LoとHiが同数の信号ビットが割り当てられ、１ビットの論理ビットが表す論理レベルの１に対して、論理レベルの０に割り当てられた信号ビットとはLoとHiの順列が異なる信号ビットが割り当てられた信号を用いて暗号処理を行うことができる。
【０１５１】
この場合、１ビットの論理ビットが表す論理レベルのそれぞれにおいて、同数のLoとHiが割り当てられているので、暗号処理回路２２では、論理レベルの違いによる消費電力の差がない。また、回路において消費電力の差がないことにより、DPAなどの、消費電流を分析することによる鍵の解読を防止し、セキュアな暗号処理を行うことができる。
【０１５２】
さらに、上述した例では、図１および図１９の暗号処理回路２２は、DESの暗号処理を行うものとして説明したが、暗号処理回路２２が行う暗号処理のアルゴリズムは、DESに限らず、AESやRSAなどでもよい。さらに、例えば、ビット操作によって暗号処理する任意のアルゴリズムでもよい。
【０１５３】
また、上述した例では、暗号化処理を行うICチップ１１に適用した場合について説明したが、本発明は、その他、暗号化に関連する処理としての、例えば、暗号文を復号する復号処理を行うICチップにも適用可能である。
【０１５４】
図１や図１９の暗号処理回路２２を備えるICチップ１１は、ICカード、リーダ／ライタ、携帯電話機その他のPDA (Personal Digital Assistant)など、セキュアに通信することが求められる各種の装置に採用することができる。
【０１５５】
なお、本明細書において、フローチャートに記述されたステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【図面の簡単な説明】
【０１５６】
【図１】本発明を適用したICチップの一実施の形態の構成例を示すブロック図である。
【図２】２ビットを有するデータXに対する信号変換回路２１の入力と出力の信号を示す図である。
【図３】４ビットを有するデータXに対する信号変換回路２１の入力と出力の信号を示す図である。
【図４】入力データXとYのEXOR処理の真理値表を示す図である。
【図５】１ビットの論理ビットに１ビットの信号ビットを割り当てたときのEXOR処理の処理結果を示す図である。
【図６】１ビットの論理ビットに２ビットの信号ビットを割り当てたときのEXOR処理の処理結果を示す図である。
【図７】暗号処理回路２２の詳細な構成例を示す図である。
【図８】IP変換部４１が有するIP変換テーブルの例を示す図である。
【図９】IP逆変換部６１が有するIP逆変換テーブルの例を示す図である。
【図１０】関数処理部５４−１の詳細な構成例を示す図である。
【図１１】ビット拡張部１０１が有するEテーブルの例を示す図である。
【図１２】Ｓボックス処理部Ｓjが行うSボックス関数処理について説明する図である。
【図１３】Ｓボックス処理部Ｓjが行うSボックス関数処理について説明する図である。
【図１４】P変換部１０３が有するP変換テーブルの例を示す図である。
【図１５】暗号処理回路２２の動作を説明するフローチャートである。
【図１６】ラウンド処理を説明するフローチャートである。
【図１７】１ラウンド処理を説明するフローチャートである。
【図１８】ｆ関数処理を説明するフローチャートである。
【図１９】本発明を適用したICチップの他の実施の形態の構成例を示すブロック図である。
【符号の説明】
【０１５７】
１１    ICチップ，  ２１    信号変換回路，  ２２    暗号処理回路
【図１】
2005260652.tif 000003
【図２】
2005260652.tif 000004
【図３】
2005260652.tif 000005
【図４】
2005260652.tif 000006
【図５】
2005260652.tif 000007
【図６】
2005260652.tif 000008
【図７】
2005260652.tif 000009
【図８】
2005260652.tif 000010
【図９】
2005260652.tif 000011
【図１０】
2005260652.tif 000012
【図１１】
2005260652.tif 000013
【図１２】
2005260652.tif 000014
【図１３】
2005260652.tif 000015
【図１４】
2005260652.tif 000016
【図１５】
2005260652.tif 000017
【図１６】
2005260652.tif 000018
【図１７】
2005260652.tif 000019
【図１８】
2005260652.tif 000020
【図１９】
2005260652.tif 000021