(57)【要約】【課題】論理レベルの違いにより処理時の消費電力に差が生じないようにする。【解決手段】  信号処理回路３１Ａにおいては、入力されたLoまたはHiの信号ビットが、それぞれ、LoまたはHiの１ビットの信号ビットとして処理される。一方、信号処理回路３１Ｂにおいては、入力された信号ビットの極性が反転され、LoまたはHiの信号ビットが、それぞれ、HiまたはLoの１ビットの信号ビットとして処理される。信号処理回路３１Ａと３１Ｂには論理的にみて同じ処理を行う構成が設けられており、極性が反転した信号ビットを対象として、同じ暗号処理が並行して行われる。本発明は、DESなどのビット操作によって暗号処理を行うICチップに適用することができる。【選択図】図１
2006229485.tif 000002
【特許請求の範囲】
【請求項１】
データの暗号化に関連する処理である暗号関連処理を、論理的にみて同じ処理を行う構成を含む複数の回路により並行して行う信号処理回路であって、
１つの論理ビットが表す２つの論理レベルのうちの一方の論理レベルをHi、他方の論理レベルをLoの信号ビットを用いて表し、暗号関連処理を行う第１の回路と、
前記一方の論理レベルをLo、前記他方の論理レベルをHiの信号ビットを用いて表し、前記第１の回路において行われる暗号関連処理と論理的にみて同じ暗号関連処理を行う第２の回路と
を備えることを特徴とする信号処理回路。
【請求項２】
処理対象の信号ビットとして、前記一方の論理レベルをHi、前記他方の論理レベルをLoにより表す同じ信号ビットが前記第１と第２の回路に入力される場合、
前記第２の回路には、信号ビットの極性を反転させる反転回路が設けられる
ことを特徴とする請求項１に記載の信号処理回路。
【請求項３】
前記第１の回路を構成する複数のノードのうちの第１のノードからの出力と、前記第２の回路を構成する複数のノードのうち、前記第１の回路における前記第１のノードの位置に対応する位置にある第２のノードからの出力とを比較し、２つの出力の極性が互いに反転したものではない場合、前記第１と第２の回路により行われている暗号関連処理を停止させる制御回路をさらに備える
ことを特徴とする請求項１に記載の信号処理回路。
【請求項４】
データの暗号化に関連する処理である暗号関連処理を、論理的にみて同じ処理を行う構成を含む複数の回路により並行して行う信号処理方法であって、
１つの論理ビットが表す２つの論理レベルのうちの一方の論理レベルをHi、他方の論理レベルをLoの信号ビットを用いて表し、暗号関連処理を行う第１の処理ステップと、
前記一方の論理レベルを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）が考案されている（例えば、非特許文献１）。
【０００５】
また、外部からレーザ光などを照射することによって、ある信号線を流れる信号ビットの信号レベルをHiまたはLoの固定のものにするなどして処理結果に意図的にエラーを発生させ、そのエラーの統計を分析することにより鍵を解読する手法（DFA:Differential Fault 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.
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、これまでの暗号処理回路では、上述したような、暗号処理回路の消費電力を分析することにより鍵を解読する手法や、エラーの統計を分析することにより鍵を解読する手法への画期的な対策が考えられていなかった。
【０００７】
この対策としては、消費電力を分析することにより鍵を解読する手法に対しては、論理ビットに対応する信号ビット（信号レベル）によらずに、消費電力に差が生じないようにすることが考えられる。また、エラーの統計を分析することにより鍵を解読する手法に対しては、統計をとることができないようにすることが考えられる。
【０００８】
本発明は、このような状況に鑑みてなされたものであり、論理レベルの違いにより処理時の消費電力に差が生じないようにするものである。また、エラーを意図的に発生させるような外部からの行為があったときに、そのエラーの統計とることができないようにするものである。
【課題を解決するための手段】
【０００９】
本発明の信号処理回路は、データの暗号化に関連する処理である暗号関連処理を、論理的にみて同じ処理を行う構成を含む複数の回路により並行して行う信号処理回路であって、１つの論理ビットが表す２つの論理レベルのうちの一方の論理レベルをHi、他方の論理レベルをLoの信号ビットを用いて表し、暗号関連処理を行う第１の回路と、一方の論理レベルをLo、他方の論理レベルをHiの信号ビットを用いて表し、第１の回路において行われる暗号関連処理と論理的にみて同じ暗号関連処理を行う第２の回路とを備えることを特徴とする。
【００１０】
処理対象の信号ビットとして、一方の論理レベルをHi、他方の論理レベルをLoにより表す同じ信号ビットが第１と第２の回路に入力される場合、第２の回路には、信号ビットの極性を反転させる反転回路が設けられるようにすることができる。
【００１１】
本発明の信号処理回路は、第１の回路を構成する複数のノードのうちの第１のノードからの出力と、第２の回路を構成する複数のノードのうち、第１の回路における第１のノードの位置に対応する位置にある第２のノードからの出力とを比較し、２つの出力の極性が互いに反転したものではない場合、第１と第２の回路により行われている暗号関連処理を停止させる制御回路をさらに備えるようにすることができる。
【００１２】
本発明の信号処理方法は、データの暗号化に関連する処理である暗号関連処理を、論理的にみて同じ処理を行う構成を含む複数の回路により並行して行う信号処理方法であって、１つの論理ビットが表す２つの論理レベルのうちの一方の論理レベルをHi、他方の論理レベルをLoの信号ビットを用いて表し、暗号関連処理を行う第１の処理ステップと、一方の論理レベルをLo、他方の論理レベルをHiの信号ビットを用いて表し、第１の処理ステップにより行われる暗号関連処理と論理的にみて同じ暗号関連処理を行う第２の処理ステップとを含むことを特徴とする。
【００１３】
本発明の信号処理回路および信号処理方法においては、１つの論理ビットが表す２つの論理レベルのうちの一方の論理レベルがHi、他方の論理レベルがLoの信号ビットを用いて表され、第１の回路により暗号関連処理が行われる。また、それと並行して、一方の論理レベルがLo、他方の論理レベルがHiの信号ビットを用いて表され、第１の回路により行われる暗号関連処理と論理的にみて同じ暗号関連処理が第２の回路により行われる。
【発明の効果】
【００１４】
本発明によれば、論理レベルの違いにより処理時の消費電力に差が生じないようにすることができる。
【００１５】
また、本発明によれば、エラーを意図的に発生させるような外部からの行為があったときに、そのエラーの統計をとることができないようにすることができる。
【発明を実施するための最良の形態】
【００１６】
以下に本発明の実施の形態を説明するが、本明細書に記載の発明と、発明の実施の形態との対応関係を例示すると、次のようになる。この記載は、請求項に記載されている発明をサポートする実施の形態が本明細書に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、発明に対応するものとして、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応しないものであることを意味するものでもない。
【００１７】
さらに、この記載は、本明細書に記載されている発明の全てを意味するものではない。換言すれば、この記載は、本明細書に記載されている発明であって、この出願では請求されていない発明の存在、即ち、将来、分割出願されたり、補正により追加される発明の存在を否定するものではない。
【００１８】
請求項１に記載の信号処理回路は、データの暗号化に関連する処理である暗号関連処理を、論理的にみて同じ処理を行う構成を含む複数の回路（例えば、図１の信号処理回路３１Ａと３１Ｂ）により並行して行う信号処理回路（例えば、図１の暗号処理回路２１）であって、１つの論理ビットが表す２つの論理レベルのうちの一方の論理レベル（例えば、論理レベル「１」）をHi、他方の論理レベル（例えば、論理レベル「０」）をLoの信号ビットを用いて表し、暗号関連処理を行う第１の回路（例えば、図１の信号処理回路３１Ａ）と、前記一方の論理レベルをLo、前記他方の論理レベルをHiの信号ビットを用いて表し、前記第１の回路において行われる暗号関連処理と論理的にみて同じ暗号関連処理を行う第２の回路（例えば、図１の信号処理回路３１Ｂ）とを備えることを特徴とする。
【００１９】
請求項２に記載の信号処理回路は、処理対象の信号ビットとして、前記一方の論理レベルをHi、前記他方の論理レベルをLoにより表す同じ信号ビットが前記第１と第２の回路に入力される場合、前記第２の回路には、信号ビットの極性を反転させる反転回路（例えば、図１０の信号反転部８１）が設けられることを特徴とする。
【００２０】
請求項３に記載の信号処理回路は、前記第１の回路を構成する複数のノードのうちの第１のノードからの出力と、前記第２の回路を構成する複数のノードのうち、前記第１の回路における前記第１のノードの位置に対応する位置にある第２のノードからの出力とを比較し、２つの出力の極性が互いに反転したものではない場合、前記第１と第２の回路により行われている暗号関連処理を停止させる制御回路（例えば、図１の比較回路３２）をさらに備えることを特徴とする。
【００２１】
請求項４に記載の信号処理方法は、データの暗号化に関連する処理である暗号関連処理を、論理的にみて同じ処理を行う構成を含む複数の回路（例えば、図１の信号処理回路３１Ａと３１Ｂ）により並行して行う信号処理方法であって、１つの論理ビットが表す２つの論理レベルのうちの一方の論理レベル（例えば、論理レベル「１」）をHi、他方の論理レベル（例えば、論理レベル「０」）をLoの信号ビットを用いて表し、暗号関連処理を行う第１の処理ステップ（例えば、図１９の処理）と、前記一方の論理レベルをLo、前記他方の論理レベルをHiの信号ビットを用いて表し、前記第１の処理ステップの処理により行われる暗号関連処理と論理的にみて同じ暗号関連処理を行う第２の処理ステップ（例えば、図２３の処理）とを含むことを特徴とする。
【００２２】
以下、本発明の実施の形態について図を参照して説明する。
【００２３】
図１は、本発明を適用した暗号処理を行うICチップ１１の一実施の形態の構成例を示している。
【００２４】
図１のICチップ１１は、所定のアルゴリズムによる暗号処理を行う信号処理回路である。ここで、ICチップ１１は、例えば、DESによる暗号処理を行うものとする。
【００２５】
ICチップ１１には暗号処理回路２１が設けられる。この暗号処理回路２１は、信号処理回路３１Ａ，３１Ｂ、および比較回路３２から構成される。
【００２６】
暗号処理回路２１は、論理ビットに対応する信号ビットが割り当てられた信号（論理レベルに対応する信号レベルが割り当てられた信号）を処理する信号処理回路である。
【００２７】
暗号処理回路２１には、暗号処理の対象となる所定のデータの論理ビットに対応するLoまたはHiの（信号レベルの）信号ビットが入力される。暗号処理回路２１には、例えば、論理ビットの０に対応する信号ビットとして、信号レベルがLoの信号ビットが入力され、論理ビットの１に対応する信号ビットとして、信号レベルがHiの信号ビットが入力される。
【００２８】
信号処理回路３１Ａは、入力されたLoまたはHiの１ビットの信号ビットを、それぞれ、LoまたはHiの１ビットの信号ビット、即ち、入力された信号ビットをそのまま処理する。
【００２９】
信号処理回路３１Ａに入力される１ビットの論理レベルと信号レベルの対応を図２に示す。論理レベルが０の論理ビットは、信号レベルがLoの信号ビットを用いて表され、また、論理レベルが１の論理ビットは、信号レベルがHiの信号ビットを用いて表される。
【００３０】
反対に、信号処理回路３１Ｂは、入力されたLoまたはHiの１ビットの信号ビットを、それぞれ、HiまたはLoの１ビットの信号ビット、即ち、信号レベル（極性）を反転させた信号ビットを処理する。
【００３１】
信号処理回路３１Ｂに入力される１ビットの論理レベルと信号レベルの対応を図３に示す。論理レベルが０の論理ビットは、信号レベルがHiの信号ビットを用いて表され、また、論理レベルが１の論理ビットは、信号レベルがLoの信号ビットを用いて表される。
【００３２】
従って、例えば、「０００００」の論理ビットの並びを表す「Lo Lo Lo Lo Lo」の信号ビットが入力された場合、信号処理回路３１Ａにおいては、「Lo Lo Lo Lo Lo」の信号ビットに基づいて処理が開始され、信号処理回路３１Ｂにおいては、「Hi Hi Hi Hi Hi」の信号ビットに基づいて処理が開始されることになる。
【００３３】
信号処理回路３１Ａと３１Ｂは、入力された信号ビットを１つの論理ビットとして、DESの暗号処理を並行して行い、その暗号処理結果としての暗号文（のデータ）をそれぞれ出力する。また、信号処理回路３１Ａと３１Ｂは、同じ位置にあるノード（互いに対応する位置にあるノード）の信号ビットを、それぞれ、比較対象の信号ビットとして比較回路３２に出力する。
【００３４】
この信号処理回路３１Ａと３１Ｂは、入力された信号ビットを反転する構成が信号処理回路３１Ｂにだけ設けられている点を除いて、論理的にみて同じ処理を行う構成（ノード）を有する。
【００３５】
従って、その同じノードからなる構成により同じ処理が行われるから（処理される信号ビットの信号レベルは反転したもの）、信号処理回路３１Ａのあるノードで検出される信号ビットと、そのノードに対応する信号処理回路３１Ｂのノードで検出される信号ビットは、互いに信号レベルが反転したものになる。
【００３６】
例えば、信号処理回路３１Ａのあるノードで検出される信号ビットの信号レベルがHiである場合、外部からレーザ光などを照射することによって、あるノードの信号ビットの信号レベルをHiまたはLoの固定のものとするなどの行為が行われていない限り、そのノードに対応する信号処理回路３１Ｂのノードで検出される信号ビットの信号レベルはLoになる。
【００３７】
なお、信号処理回路３１Ａと３１Ｂで処理される信号ビットの信号レベルは互いに反転したものではあるが、論理ビットとしてみた場合、その論理レベルは同じである。
【００３８】
このように、信号処理回路３１Ａと３１Ｂにおいては、処理対象の１つのデータが、それを表す信号ビットの信号レベルが互いに反転した状態で並行してそれぞれ処理されるため、暗号処理回路２１全体としては、暗号処理の過程で、データの論理レベルの違いにより消費電力に差が生じることがない。従って、DPAのような手法により鍵が解読されるのを防止することができる。上述したように、DPAは、消費電力の差を分析することによって鍵を解読する手法である。
【００３９】
比較回路３２は、信号処理回路３１Ａと３１Ｂから供給されてきた信号ビットの信号レベルを比較し、それらが互いに反転したものになっているか否かを判定する。例えば、信号処理回路３１Ａと３１Ｂから供給されてきた信号レベルが互いに反転したものになっていない場合、即ち、対応するノードから、それぞれ同じ信号レベルの信号ビットが供給されてきた場合、比較回路３２は、信号処理回路３１Ａと３１Ｂにおいて行われている暗号処理を停止させる。
【００４０】
信号処理回路３１Ａと３１Ｂから供給されてきた信号レベルが互いに反転したものになっている場合、それは、外部からレーザ光などを照射することによって、あるノードの信号ビットの信号レベルをHiまたはLoの固定のものとするなどの行為が行われていないことを表し、反対に、信号処理回路３１Ａと３１Ｂから供給されてきた信号レベルが互いに反転したものになっていない場合、それは、外部からレーザ光などを照射することによって、あるノードの信号ビットの信号レベルをHiまたはLoの固定のものとするなどの行為が、いま、行われていることを表す。
【００４１】
このように、信号処理回路３１Ａと３１Ｂの対応するノードの信号ビットの信号レベルを比較し、互いに反転したものになっていない場合には、暗号処理を停止させるようにすることにより、外部からレーザ光などを照射することによって、あるノードの信号ビットの信号レベルを固定のものとし、処理結果に意図的にエラーを発生させるといったことができなくなる。従って、DFAのような手法により鍵が解読されるのを防止することができる。上述したように、DFAは、あるノードの信号ビットの信号レベルを固定のものとするなどして処理結果に意図的にエラーを発生させ、そのエラーの統計を分析することによって鍵を解読する手法である。
【００４２】
以上のような暗号処理回路２１の一連の動作についてはフローチャートを参照して後述する。
【００４３】
ここで、図１の暗号処理回路２１の信号処理回路３１Ａにおいて行われる、後述するEXOR処理（EXclusive OR；排他的論理和を演算する処理）と、そのEXOR処理に対応する処理として信号処理回路３１Ｂにおいて行われる、EXNOR処理（EXclusive NOR；排他的論理和の否定を演算する処理）について説明する。これらの処理は、信号ビットを用いても実現可能である。
【００４４】
図４は、入力データｘとｙのEXOR処理の真理値表を示している。
【００４５】
図４に示すように、EXOR処理では、入力データｘまたはｙのいずれか一方が１である場合には処理結果は１になり、他の場合は処理結果は０になる。
【００４６】
図５は、論理ビットの０を信号ビットのLoに、論理ビットの１を信号ビットのHiにそれぞれ割り当てた信号を対象にEXOR処理を行った場合の処理結果を示している。
【００４７】
図５に示すように、EXOR処理では、入力信号の信号ビットのいずれか一方がHiである場合には、EXOR処理によって得られる信号ビットはHiになり、他の場合は、EXOR処理によって得られる信号ビットはLoになる。
【００４８】
図６は、論理ビットの０を信号ビットのLoに、論理ビットの１を信号ビットのHiにそれぞれ割り当てた信号を対象にEXNOR処理を行った場合の処理結果を示している。
【００４９】
図６に示すように、EXNOR処理では、入力信号の信号ビットのいずれか一方がLoである場合には、EXNOR処理によって得られる信号ビットはLoになり、他の場合は、EXNOR処理によって得られる信号ビットはHiになる。
【００５０】
図７は、信号処理回路３１Ａで処理される信号のように、論理ビットの０に信号ビットのLoが、論理ビットの１に信号ビットのHiがそれぞれ割り当てられている信号を対象にEXOR処理を行った場合の処理結果（図５と同じ処理結果）を示している。
【００５１】
図７に示すようにして信号ビットが割り当てられているEXOR処理では、入力信号の信号ビットのいずれか一方がHiである場合には、EXOR処理によって得られる信号ビットはHiになり、他の場合は、EXOR処理によって得られる信号ビットはLoになる。
【００５２】
図８は、信号処理回路３１Ｂで処理される信号のように、論理ビットの０に信号ビットのHiが、論理ビットの１に信号ビットのLoがそれぞれ割り当てられている信号を対象にEXNOR処理を行った場合の処理結果を示している。
【００５３】
図８に示すようにして信号ビットが割り当てられているEXNOR処理では、入力信号の信号ビットのいずれか一方がHiである場合には、EXNOR処理によって得られる信号ビットはLoになり、他の場合は、EXNOR処理によって得られる信号ビットはHiになる。
【００５４】
図７と図８を比較してわかるように、信号レベルを反転した信号ビットを処理対象のビットとして用いた場合、EXOR処理は、EXNOR処理により実現することができる。
【００５５】
図９は、図１の信号処理回路３１Ａの詳細な構成例を示している。
【００５６】
DESでは、平文（データ）が６４ビットの論理ビットの単位で処理される。このため、信号処理回路３１Ａには６４ビット単位でビットデータが入力される。信号処理回路３１Ａに入力された６４ビットのビットデータは、IP(Initial Permutation)変換部４１Ａに入力される。
【００５７】
IP変換部４１Ａは、入力された６４ビットのビットデータの配置（ビット位置）を変換する（入れ換える）IP変換テーブルを有している。即ち、IP変換テーブルは、入力された６４ビットのビットデータそれぞれについて、例えば、５８ビット目の位置にある値を１ビット目の位置に移動させる、５０ビット目の位置にある値を２ビット目の位置に移動させる等の指示情報をもつテーブルである。このIP変換テーブルについては図１２を参照して後述する。
【００５８】
IP変換部４１Ａは、そのIP変換テーブルに従って、入力信号の６４ビットのビットデータのビット位置を入れ換えるIP変換処理を行う。そして、IP変換部４１Ａは、IP変換処理によって得られる６４ビットのビットデータのうち、上位３２ビットのビットデータをレジスタ５１−１Ａに、下位３２ビットのビットデータをレジスタ５２−１Ａに、それぞれ出力する。
【００５９】
レジスタ５１−１Ａは、IP変換部４１Ａからの３２ビットのビットデータを記憶し、所定のタイミングで、記憶している３２ビットのビットデータを加算回路５５−１Ａに出力する。なお、レジスタ５１−１Ａに記憶される３２ビットのビットデータをL0とする。
【００６０】
レジスタ５２−１Ａは、IP変換部４１Ａからの３２ビットのビットデータを記憶し、所定のタイミングで、記憶している３２ビットのビットデータを関数処理部５４−１Ａ、およびレジスタ５１−２Ａに出力する。なお、レジスタ５２−１Ａに記憶される３２ビットのビットデータをR0とする。
【００６１】
中間鍵生成部５３−１Ａは、そこに入力される６４ビットの共通鍵に基づいて、４８ビットの中間鍵K1を生成し、生成した中間鍵K1を関数処理部５４−１Ａに出力する。また、中間鍵生成部５３−１Ａは、生成した中間鍵K1を信号処理回路３１Ｂにも出力する。
【００６２】
関数処理部５４−１Ａは、レジスタ５２−１Ａからの３２ビットのビットデータR0と、中間鍵生成部５３−１Ａからの４８ビットの中間鍵K1とに基づいて、ｆ関数処理を行う。ｆ関数処理の詳細については図１４を参照して後述するが、このｆ関数処理により、新たな３２ビットのビットデータが生成される。なお、３２ビットのビットデータαと４８ビットの中間鍵（ビットデータ）βとに基づいてｆ関数処理を行うこと、およびｆ関数処理により生成される３２ビットのビットデータをｆ（α，β）と表すこととすると、関数処理部５４−１Ａでは、３２ビットのビットデータｆ（R0，K1）が生成される。
【００６３】
そして、関数処理部５４−１Ａは、ｆ関数処理によって得られる新たな３２ビットのビットデータｆ（R0，K1）を加算回路５５−１Ａに出力する。
【００６４】
加算回路５５−１Ａは、レジスタ５１−１Ａからの３２ビットのビットデータL0と、関数処理部５４−１Ａからの３２ビットのビットデータｆ（R0，K1）との、対応するビットそれぞれについて、図７で説明したEXOR処理を行う。そして、加算回路５５−１Ａは、EXOR処理によって得られる３２ビットのビットデータをレジスタ５２−２Ａに出力する。
【００６５】
また、加算回路５５−１Ａは、EXOR処理によって得られる３２ビットのビットデータを、比較対象の信号ビットとして比較回路３２に出力する。図９においては、比較対象とする信号ビットを比較回路３２に出力することを白抜き矢印により示しているが、これは、加算回路５５−１Ａの処理結果の信号ビットに限らず、どのノードから、比較対象の信号ビットが出力されてもよいことを表す。
【００６６】
ここで、レジスタ５１−２Ａに記憶される３２ビットのビットデータL1、およびレジスタ５２−２Ａに記憶される３２ビットのビットデータR1は、次のように表すことができる。
【００６７】
L1＝R0
R1＝L0＋ｆ（R0，K1）
・・・・・・・・・・・・・・・・・・・・・・・（１）
【００６８】
ここで、“＋”は、EXOR処理（EXOR演算）を表す。
【００６９】
以上の、レジスタ５１−１Ａおよび５２−１Ａのそれぞれが、３２ビットのビットデータL0およびR0を出力してから、レジスタ５１−１Ａおよび５２−１Ａの後段のレジスタ５１−２Ａおよび５２−２Ａに、（１）式で表される３２ビットのビットデータL1およびR1がそれぞれ記憶されるまでの処理（信号処理回路３１Ｂに中間鍵K1を出力する処理、比較対象とする信号ビットを比較回路３２に出力する処理を含む）を１つのラウンドの処理とすると、図９の信号処理回路３１Ａには、１つのラウンドの処理を行うために構成される、レジスタ５１−１Ａ、レジスタ５２−１Ａ、中間鍵生成部５３−１Ａ、関数処理部５４−１Ａ、および加算回路５５−１Ａの構成（以下、適宜、１ラウンド処理のセットという）と同様の構成が、１５ラウンド分だけ、１ラウンド処理のセットの後段に設けられている。
【００７０】
換言すれば、信号処理回路３１Ａには、１６ラウンド分のレジスタ５１−ｉＡ、レジスタ５２−ｉＡ、中間鍵生成部５３−ｉＡ、関数処理部５４−ｉＡ、加算回路５５−ｉＡが設けられている。なお、レジスタ５１−ｉＡ、およびレジスタ５２−ｉＡに記憶される３２ビットのビットデータそれぞれを、Ｌ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変換部４１Ｂに出力する。信号反転部８１においては、信号レベルがHiの信号ビットはLoの信号ビットに反転され、信号レベルがLoの信号ビットはHiの信号ビットに反転される。
【００８４】
IP変換部４１Ｂは、入力された６４ビットのビットデータの配置を、自身が有するIP変換テーブルに従って入れ換えるIP変換処理を行い、IP変換処理によって得られる６４ビットのビットデータのうち、上位３２ビットのビットデータをレジスタ５１−１Ｂに、下位３２ビットのビットデータをレジスタ５２−１Ｂに、それぞれ出力する。
【００８５】
レジスタ５１−１Ｂは、IP変換部４１Ｂからの３２ビットのビットデータを記憶し、所定のタイミングで、記憶している３２ビットのビットデータを加算回路５５−１Ｂに出力する。なお、レジスタ５１−１Ｂに記憶される３２ビットのビットデータをL0'とする。
【００８６】
レジスタ５２−１Ｂは、IP変換部４１Ｂからの３２ビットのビットデータを記憶し、所定のタイミングで、記憶している３２ビットのビットデータを関数処理部５４−１Ｂ、およびレジスタ５１−２Ｂに出力する。なお、レジスタ５２−１Ｂに記憶される３２ビットのビットデータをR0'とする。
【００８７】
信号反転部８２−１は、信号処理回路３１Ａの中間鍵生成部５３−１Ａから供給されてきた中間鍵K1を表す信号ビットの信号レベルを反転し、得られた中間鍵K1'を関数処理部５４−１Ｂに出力する。
【００８８】
関数処理部５４−１Ｂは、レジスタ５２−１Ｂからの３２ビットのビットデータR0'と、信号反転部８２−１からの４８ビットの中間鍵K1'とに基づいて、ｆ関数処理を行い、ｆ関数処理によって得られる新たな３２ビットのビットデータｆ（R0'，K1'）を加算回路５５−１Ｂに出力する。
【００８９】
加算回路５５−１Ｂは、レジスタ５１−１Ｂからの３２ビットのビットデータL0'と、関数処理部５４−１Ｂからの３２ビットのビットデータｆ（R0'，K1'）との、対応するビットそれぞれについて、図８で説明したEXNOR処理を行う。そして、加算回路５５−１Ｂは、EXNOR処理によって得られる３２ビットのビットデータをレジスタ５２−２Ｂに出力する。
【００９０】
また、加算回路５５−１Ｂは、EXNOR処理によって得られる３２ビットのビットデータを、比較対象の信号ビットとして比較回路３２に出力する。上述した例においては、加算回路５５−１Ｂに対応する信号処理回路３１Ａのノードである加算回路５５−１Ａから、比較対象の信号ビットが比較回路３２に出力されている。
【００９１】
図１０においても、比較対象とする信号ビットを比較回路３２に出力することが白抜き矢印により示されているが、これも、加算回路５５−１Ｂの処理結果の信号ビットに限らず、信号処理回路３１Ａが比較対象の信号ビットを出力するノードに対応するノードであれば、どのノードから、比較対象の信号ビットが出力されてもよいことを表す。
【００９２】
以上のような、レジスタ５１−１Ｂおよび５２−１Ｂのそれぞれが、３２ビットのビットデータL0'およびR0'を出力してから、レジスタ５１−１Ｂおよび５２−１Ｂの後段のレジスタ５１−２Ｂおよび５２−２Ｂに、３２ビットのビットデータL1'およびR1'がそれぞれ記憶されるまでの処理を１つのラウンドの処理とすると、図１０の信号処理回路３１Ｂには、１つのラウンドの処理を行うために構成される、レジスタ５１−１Ｂ、レジスタ５２−１Ｂ、関数処理部５４−１Ｂ、加算回路５５−１Ｂ、および信号反転部８２−１Ｂの構成である１ラウンド処理のセットと同様の構成が、１５ラウンド分だけ、１ラウンド処理のセットの後段に設けられる。
【００９３】
即ち、信号処理回路３１Ｂには、１６ラウンド分のレジスタ５１−ｉＢ、レジスタ５２−ｉＢ、関数処理部５４−ｉＢ、加算回路５５−ｉＢ、信号反転部８２−ｉが設けられる。なお、レジスタ５１−ｉＢ、およびレジスタ５２−ｉＢに記憶される３２ビットのビットデータそれぞれをＬi-1'およびＲi-1'と表す。
【００９４】
なお、１６番目の１６ラウンドの処理では、それまでの１乃至１５ラウンドの処理と異なり、図１０に示すように、レジスタ５２−１６Ｂは、記憶している３２ビットのビットデータR15'を、レジスタ５１−１７Ｂではなく、レジスタ５２−１７Ｂに出力し、また、１６ラウンド目の加算回路５５−１６Ｂは、EXNOR処理によって得られる３２ビットのビットデータを、レジスタ５２−１７Ｂではなく、レジスタ５１−１７Ｂに出力する。
【００９５】
レジスタ５１−１７Ｂは、EXNOR処理によって得られる加算回路５５−１６Ｂからの３２ビットのビットデータをビットデータL16'として記憶し、所定のタイミングで、そのビットデータL16'をIP逆変換部６１Ｂに出力する。
【００９６】
レジスタ５２−１７Ｂは、レジスタ５２−１６Ｂからの３２ビットのビットデータをビットデータR16'として記憶し、所定のタイミングで、そのビットデータR16'をIP逆変換部６１Ｂに出力する。
【００９７】
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逆変換処理を行う。
【０１１７】
図１４は、図９の関数処理部５４−１Ａの詳細な構成例を示している。
【０１１８】
関数処理部５４−１Ａは、レジスタ５２−１Ａから出力された３２ビットのビットデータR0と、中間鍵生成部５３−１Ａから出力された４８ビットの中間鍵K1とに基づいて、ｆ関数処理を行う。
【０１１９】
レジスタ５２−１Ａから出力された３２ビットのビットデータR0はビット拡張部１０１に入力される。
【０１２０】
ビット拡張部１０１は、内部に有するＥ（Expand）テーブル（図１５で後述）に従って、レジスタ５２−１Ａからの３２ビットのビットデータR0を、４８ビットのビットデータに拡張する４８ビット拡張処理を行う。そして、ビット拡張部１０１は、４８ビット拡張処理によって得られる４８ビットのビットデータを加算回路１０２に出力する。
【０１２１】
加算回路１０２には、ビット拡張部１０１からの４８ビットのビットデータと、中間鍵生成部５３−１Ａからの４８ビットの中間鍵K1とが入力される。
【０１２２】
加算回路１０２は、ビット拡張部１０１からの４８ビットのビットデータと、中間鍵生成部５３−１Ａからの４８ビットの中間鍵K1との、対応するビットそれぞれについて、EXOR処理を行う。
【０１２３】
そして、加算回路１０２は、EXOR処理によって得られる４８ビットのビットデータを、Ｓボックス処理部Ｓ1乃至Ｓ8に出力する。なお、加算回路１０２は、図１４に示すように、EXOR処理によって得られる４８ビットのビットデータのうち、下位１乃至６ビット目の６ビットをＳボックス処理部Ｓ8に、下位７乃至１２ビット目の６ビットをＳボックス処理部Ｓ7に、下位１３乃至１８ビット目の６ビットをＳボックス処理部Ｓ6に、下位１９乃至２４ビット目の６ビットをＳボックス処理部Ｓ5に、下位２５乃至３０ビット目の６ビットをＳボックス処理部Ｓ6に、下位３１乃至３６ビット目の６ビットをＳボックス処理部Ｓ3に、下位３７乃至４２ビット目の６ビットをＳボックス処理部Ｓ2に、下位４３乃至４８ビット目の６ビット（上位６ビット）をＳボックス処理部Ｓ1に、それぞれ出力する。
【０１２４】
Ｓボックス処理部Ｓj（ｊ＝１乃至８）は、Ｓボックス関数を用いて、加算回路１０２からの６ビットのビットデータを４ビットのビットデータに変換し、Ｐ変換部１０３に出力する。なお、Ｓボックス関数によるビットデータの変換を行うＳボックス関数処理については、図１６および図１７を参照して後述する。
【０１２５】
Ｐ変換部１０３には、Ｓボックス処理部Ｓ1乃至Ｓ8のそれぞれから、４ビットのビットデータが入力される。そして、Ｐ変換部１０３は、Ｓボックス処理部Ｓ1乃至Ｓ8それぞれからの４ビットのビットデータを最上位ビットから順番に並べた、３２ビットのビットデータを対象にＰ変換処理を行う。
【０１２６】
即ち、Ｐ変換部１０３は、IP変換テーブル（図１２）と同様の、ビット位置を入れ換えるためのＰ変換テーブルを内部に有している。Ｐ変換部１０３は、Ｐ変換テーブルに従って、Ｓボックス処理部Ｓjから入力された３２ビットのビットデータのビット位置を入れ換えるＰ変換処理を行う。そして、Ｐ変換部１０３は、Ｐ変換処理によって得られる３２ビットのビットデータを加算回路５５−１Ａ（図９）に出力する。
【０１２７】
図１５は、図１４のビット拡張部１０１が有するＥテーブルの例を示している。
【０１２８】
図１５のＥテーブルでは、４８ビット拡張処理の対象となる３２ビットのビットデータの各ビットの位置を入力ビット位置とするとともに、４８ビット拡張処理後の４８ビットのビットデータの各ビットの位置を出力ビット位置として、入力ビット位置と出力ビット位置とが対応付けられている。
【０１２９】
ビット拡張部１０１は、Ｅテーブルを参照して、加算回路１０２に出力する４８ビットのビットデータの各ビットについて、そのビットの入力ビット位置を決定し、その入力ビット位置のビットデータを出力ビット位置に配置して、加算回路１０２に出力する。
【０１３０】
図１５に示すＥテーブルでは、ビット拡張処理によって得られる４８ビットのビットデータのうちの、例えば、出力ビット位置が１ビット目のビットデータとしては、入力ビット位置が３２ビット目のビットデータとすることが指定されている。また、図１５のＥテーブルによれば、ビット拡張処理によって得られる４８ビットのビットデータのうちの、例えば、出力ビット位置が２ビット目のビットデータとしては、入力ビット位置が１ビット目のビットデータとすることが指定されている。
【０１３１】
同様にして、図１５のＥテーブルでは、出力ビット位置が３乃至４８ビット目の位置となるビットデータについても、入力ビット位置が何ビット目のビットデータとするかが指定されている。
【０１３２】
なお、ビット拡張部１０１は、レジスタ５２−１Ａから入力される３２ビットのビットデータを４８ビットのビットデータに拡張するので、１６ビット分のビットデータについては、レジスタ５２−１Ａから入力される３２ビットのビットデータのいずれかが、複数指定されている。
【０１３３】
例えば、図１５のＥテーブルでは、入力ビット位置が３２ビット目のビットデータは、上述した、１ビット目の出力ビット位置の他に、４７ビット目の出力ビット位置としても指定されている。
【０１３４】
このように、ビット拡張部１０１は、Ｅテーブルを使用して、３２ビットのビットデータR0を４８ビットのビットデータに拡張する４８ビット拡張処理を行う。
【０１３５】
次に、図１６と図１７を参照して、図１４のＳボックス処理部Ｓjが行うＳボックス関数処理について説明する。なお、図１６および図１７は、ｊ＝１の場合のＳボックス関数処理の例を示している。
【０１３６】
Ｓボックス関数処理では、Ｓボックス関数によって、行（Row Number）と列（Column Number）を引数として、関数値としての所定の値が算出（決定）される。即ち、Ｓボックス関数によれば、行（Row Number）と列（Column Number）を入力として、所定の値が決定される。
【０１３７】
Ｓボックス関数の引数である行と列には、それぞれ２ビットと４ビットが割り当てられている。従って、行は、２ビットで表すことができる０乃至３のうちのいずれかの値をとり、また、列は、４ビットで表すことができる０乃至１５のうちのいずれかの値をとる。
【０１３８】
図１６では、加算回路１０２からＳボックス処理部Ｓ1に入力された６ビットのビットデータの例を示している。図１６では、６ビットのビットデータは、点線で囲まれている「０１１０１１(2)」となっている。
【０１３９】
Ｓボックス処理部Ｓ1は、加算回路１０２から入力された６ビットのビットデータ「０１１０１１(2)」のうちの、下位１ビット目と下位６ビット目（上位１ビット目）を、それぞれ、下位ビットと上位ビットとする２ビットの「０１(2)＝１(10)」を行（Row Number）の値とする。
【０１４０】
また、Ｓボックス処理部Ｓ1は、加算回路１０２から入力された６ビットのビットデータ「０１１０１１(2)」のうちの、下位２乃至５ビット目を、それぞれ、下位１乃至４ビット目とする４ビットの「１１０１(2)＝１３(10)」を列（Column Number）の値とする。
【０１４１】
そして、Ｓボックス処理部Ｓ1は、行と列の値を引数として、図１７に示すＳボックス関数から関数値を求める。
【０１４２】
図１７は、横方向と縦方向にそれぞれ列と行の値を取ったＳボックス関数を示している。
【０１４３】
図１７のＳボックス関数によれば、例えば、図１６に示したように、行（Row Number）が「１(10)」で、列（Column Number）が「１３(10)」である場合、その行と列で特定される位置に記述されている所定の値「５(10)」（点線で示されている）が、関数値として算出される。
【０１４４】
図１７のＳボックス関数により算出された「５(10)」を２進数で表記すれば、４ビットの「０１０１(2)」となるので、加算回路１０２から入力された６ビットのビットデータ「０１１０１１(2)」に対して、４ビットのビットデータ「０１０１(2)」が、Ｓボックス処理部Ｓ1からＰ変換部１０３に出力される。なお、上述しているように、４ビットのビットデータ「０１０１(2)」は、ハードウエア的には、２ビットの信号ビットのセットが４セットの、計８ビットの信号ビットで表されるものである。
【０１４５】
以上のようにして、Ｓボックス処理部Ｓ1乃至Ｓ8それぞれが、４ビットのビットデータをＰ変換部１０３に出力することにより、Ｐ変換部１０３には合わせて３２ビットのビットデータが入力される。
【０１４６】
図１８は、Ｐ変換部１０３が有するＰ変換テーブルの例を示している。
【０１４７】
図１８のＰ変換テーブルでは、Ｐ変換処理の対象となる３２ビットのビットデータの各ビットの位置を入力ビット位置とするとともに、Ｐ変換処理によって得られる３２ビットのビットデータの各ビットの位置を出力ビット位置として、入力ビット位置と出力ビット位置とが対応付けられている。
【０１４８】
図１４のＰ変換部１０３は、図１８のＰ変換テーブルを参照して、Ｓボックス処理部Ｓ1乃至Ｓ8から入力された３２ビットのビットデータの各ビットについて、そのビットの出力ビット位置を決定し、その出力ビット位置に配置（移動）して、加算回路５５−１Ａ（図９）に出力する。
【０１４９】
図１８に示すＰ変換テーブルでは、Ｐ変換処理の対象の３２ビットのビットデータのうちの、例えば、入力ビット位置が１６ビット目のビットデータは、１ビット目の出力ビット位置に配置（移動）させることが指定されている。従って、Ｐ変換処理の対象の３２ビットのビットデータの１６ビット目は、Ｐ変換部１０３のＰ変換処理によって、１ビット目に入れ替えられる。
【０１５０】
同様にして、図１８のＰ変換テーブルでは、入力ビット位置が１乃至１５ビット目と１７乃至３２ビット目のビットデータについても、何ビット目の出力ビット位置に配置させるかが指定されている。
【０１５１】
このように、Ｐ変換部１０３は、Ｐ変換テーブルを使用して、Ｓボックス処理部Ｓ1乃至Ｓ8からの３２ビットのビットデータのビット位置を入れ換えるＰ変換処理を行う。
【０１５２】
以上のような、図１２を参照して説明したIP変換処理、図１３を参照して説明したIP逆変換処理、図１４乃至図１８を参照して説明した関数処理部５４−１Ａによる処理と同様の処理が、信号処理回路３１ＢのIP変換部４１Ｂ、IP逆変換部６１Ｂ、関数処理部５４−１Ｂによりそれぞれ行われる。なお、信号処理回路３１Ｂの関数処理部５４−１Ｂにおいては、その一連の処理のうち、関数処理部５４−１ＡがEXOR処理を行う部分に対応する部分は、EXOR処理に代えてEXNOR処理が行われることによって実現される。また、このEXNOR処理で用いられる中間鍵は、信号反転部８２−１により得られた中間鍵K1'である。
【０１５３】
次に、図１９のフローチャートを参照して、図９の信号処理回路３１Ａの暗号化処理について説明する。
【０１５４】
ステップＳ１において、IP変換部４１Ａは、IP変換テーブル（図１２）に従って、入力信号の６４ビットのビットデータのビット位置を入れ換えるIP変換処理を行う。
【０１５５】
ステップＳ２において、レジスタ５１−ｉＡ、レジスタ５２−ｉＡ、中間鍵生成部５３−ｉＡ、関数処理部５４−ｉＡ、加算回路５５−ｉＡ、レジスタ５１−１７Ａ、およびレジスタ５２−１７Ａによりラウンド処理が行われる。即ち、ステップＳ２では、レジスタ５１−ｉＡ、およびレジスタ５２−ｉＡに記憶されるビットデータＲi-1およびＬi-1（ｉ＝１，２，・・・，１６，１７）について、上述した（２）または（３）式の処理が行われる。
【０１５６】
ステップＳ３において、IP逆変換部６１Ａは、IP逆変換テーブルに従って、６４ビットのビットデータのビット位置を入れ換えるIP逆変換処理を行い、IP逆変換処理によって得られる６４ビットのビットデータを外部に出力して、処理を終了する。
【０１５７】
次に、図２０のフローチャートを参照して、図１９のステップＳ２において行われるラウンド処理について説明する。
【０１５８】
ステップＳ２１において、レジスタ５１−１Ａ、レジスタ５２−１Ａ、中間鍵生成部５３−１Ａ、関数処理部５４−１Ａ、および加算回路５５−１Ａは、１ラウンド目のラウンド処理（１ラウンド処理）を行う。
【０１５９】
ステップＳ２２において、レジスタ５１−２Ａ、レジスタ５２−２Ａ、中間鍵生成部５３−２Ａ、関数処理部５４−２Ａ、および加算回路５５−２Ａは、２ラウンド目のラウンド処理（２ラウンド処理）を行う。
【０１６０】
以下、同様にして、ステップＳ２３乃至Ｓ３６において、それぞれ、レジスタ５１−ｉＡ、レジスタ５２−ｉＡ、中間鍵生成部５３−ｉＡ、関数処理部５４−ｉＡ、および加算回路５５−ｉＡは、ｉラウンド目のラウンド処理（ｉラウンド処理）を行う（ｉ＝３，・・，１６）。但し、ステップＳ３６の１６ラウンド処理では、図９で説明したように、レジスタ５２−１６Ａが、記憶している３２ビットのビットデータR15を、レジスタ５１−１７Ａではなく、レジスタ５２−１７Ａに出力すること、および、加算回路５５−１６Ａが、EXOR処理によって得られる３２ビットのビットデータを、レジスタ５２−１７Ａではなく、レジスタ５１−１７Ａに出力することが、それまでの１乃至１５ラウンド処理と異なる。
【０１６１】
１６ラウンド処理が行われることによってレジスタ５１−１７Ａに記憶されたビットデータL16と、レジスタ５２−１７Ａに記憶されたビットデータR16はIP逆変換部６１Ａに出力され、処理が終了される。
【０１６２】
次に、図２１のフローチャートを参照して、図２０のステップＳ２１の１ラウンド処理の詳細について説明する。
【０１６３】
ステップＳ５１において、レジスタ５２−１Ａは、記憶している３２ビットのビットデータR0を関数処理部５４−１Ａに出力する。
【０１６４】
ステップＳ５２において、レジスタ５２−１Ａは、記憶している３２ビットのビットデータR0をレジスタ５１−２Ａ（上位レジスタ）に出力する。
【０１６５】
ステップＳ５３において、中間鍵生成部５３−１Ａは、そこに入力される６４ビットの共通鍵に基づいて、４８ビットの中間鍵K1を生成し、生成した中間鍵K1を、関数処理部５４−１Ａと、信号処理回路３１Ｂ（信号処理回路３１Ｂの信号反転部８２−１）に出力する。
【０１６６】
ステップＳ５４において、関数処理部５４−１Ａは、レジスタ５２−１Ａからの３２ビットのビットデータR0と、中間鍵生成部５３−１Ａからの４８ビットの中間鍵K1とに基づいてｆ関数処理を行う。このｆ関数処理によって得られた３２ビットのビットデータが関数処理部５４−１Ａから加算回路５５−１Ａに出力される。
【０１６７】
ステップＳ５５において、加算回路５５−１Ａは、レジスタ５１−１Ａからの３２ビットのビットデータL0と、関数処理部５４−１Ａからの３２ビットのビットデータとの、対応するビットそれぞれについて、EXOR処理を行う。また、加算回路５５−１Ａは、EXOR処理によって得られる３２ビットのビットデータをレジスタ５２−２Ａ（下位レジスタ）に出力する。
【０１６８】
ステップＳ５６において、加算回路５５−１Ａは、EXOR処理によって得られる３２ビットのビットデータを比較対象のデータとして比較回路３２に出力し、処理を終了させる。
【０１６９】
以上の１ラウンド処理と同様の処理が、図２０のステップＳ２２乃至Ｓ３５の２ラウンド処理乃至１５ラウンド処理のそれぞれにおいても行われる。
【０１７０】
また、図２０のステップＳ３６の１６ラウンド処理では、上述のステップＳ５２において、３２ビットのビットデータを上位レジスタ（レジスタ５１−１７Ａ）に出力することに代えて、下位レジスタ（レジスタ５２−１７Ａ）に出力し、上述のステップＳ５５において、EXOR処理によって得られる３２ビットのビットデータを下位レジスタ（レジスタ５２−１７Ａ）に出力することに代えて、上位レジスタ（レジスタ５１−１７Ａ）に出力することを除いて、図２１の１ラウンド処理と同様の処理が行われる。
【０１７１】
次に、図２２のフローチャートを参照して、図２１のステップＳ５４におけるｆ関数処理について説明する。
【０１７２】
ステップＳ８１において、関数処理部５４−１Ａのビット拡張部１０１（図１４）は、内部に有するＥテーブルに従って、レジスタ５２−１Ａからの３２ビットのビットデータR0を、４８ビットのビットデータに拡張する４８ビット拡張処理を行う。
【０１７３】
ステップＳ８２において、加算回路１０２は、ビット拡張部１０１での４８ビット拡張処理によって得られる４８ビットのビットデータと、中間鍵生成部５３−１Ａからの４８ビットのビットデータとの、対応するビットそれぞれについて、EXOR処理を行う。また、加算回路１０２は、EXOR処理によって得られる４８ビットのビットデータを、６ビットずつに分け、その６ビットずつのビットデータを、上位側から順にＳボックス処理部Ｓ1乃至Ｓ8に出力する。
【０１７４】
ステップＳ８３において、Ｓボックス処理部Ｓ1乃至Ｓ8のそれぞれは、Ｓボックス関数を用いて、加算回路１０２からの６ビットのビットデータを４ビットのビットデータに変換するＳボックス関数処理を行い、その４ビットのビットデータをＰ変換部１０３に出力する。
【０１７５】
ステップＳ８４において、Ｐ変換部１０３は、Ｐ変換テーブルに従って、Ｓボックス処理部Ｓ1乃至Ｓ8のそれぞれから４ビットずつの、合計で３２ビットのビットデータのビット位置を入れ換えるＰ変換処理を行う。そして、Ｐ変換部１０３は、Ｐ変換処理によって得られる３２ビットのビットデータを加算回路５５−１Ａに出力する。
【０１７６】
以上のような処理が信号処理回路３１Ａにより行われる。一方、信号処理回路３１Ｂにおいても同様の処理が並行して行われる。信号処理回路３１Ａと３１Ｂには同じタイミングで処理対象のデータが入力されるから、次に説明する信号処理回路３１Ｂの各処理は、それと対応する信号処理回路３１Ａの各処理と同じタイミングで行われる。
【０１７７】
次に、図２３のフローチャートを参照して、信号処理回路３１Ｂの暗号化処理について説明する。図２３の処理は、信号ビットの信号レベルを反転する処理が加えられている点と、ラウンド処理においてEXOR処理に代えてEXNOR処理が行われる点を除いて、図１９を参照して説明した処理と同様の処理である。重複する説明については適宜省略する。
【０１７８】
即ち、ステップＳ１０１において、信号反転部８１は、入力されたビットデータの信号レベルを反転し、反転した信号ビットをIP変換部４１Ｂに出力する。
【０１７９】
ステップＳ１０２において、IP変換部４１Ｂは、IP変換テーブルに従って、入力信号の６４ビットのビットデータのビット位置を入れ換えるIP変換処理を行う。
【０１８０】
ステップＳ１０３において、レジスタ５１−ｉＢ、レジスタ５２−ｉＢ、関数処理部５４−ｉＢ、加算回路５５−ｉＢ、信号反転部８２−ｉ、レジスタ５１−１７Ｂおよびレジスタ５２−１７Ｂによりラウンド処理が行われる。全てのラウンド処理が行われることによってレジスタ５１−１７Ｂに記憶されたビットデータL16'と、レジスタ５２−１７Ｂに記憶されたビットデータR16'はIP逆変換部６１Ｂに出力される。
【０１８１】
ステップＳ１０４において、IP逆変換部６１Ｂは、IP逆変換テーブルに従って、６４ビットのビットデータのビット位置を入れ換えるIP逆変換処理を行い、IP逆変換処理によって得られる６４ビットのビットデータを外部に出力して、処理を終了する。
【０１８２】
次に、図２４のフローチャートを参照して、１ラウンド処理の詳細について説明する。
【０１８３】
ステップＳ１５１において、レジスタ５２−１Ｂは、記憶している３２ビットのビットデータR0'を関数処理部５４−１Ｂに出力する。
【０１８４】
ステップＳ１５２において、レジスタ５２−１Ｂは、記憶している３２ビットのビットデータR0'をレジスタ５１−２Ｂ（上位レジスタ）に出力する。
【０１８５】
ステップＳ１５３において、信号反転部８２−１は、信号処理回路３１Ａの中間鍵生成部５３−１Ａから供給されてきた共通鍵K1を表す信号ビットの信号レベルを反転し、得られた中間鍵K1'を関数処理部５４−１Ｂに出力する。
【０１８６】
ステップＳ１５４において、関数処理部５４−１Ｂは、レジスタ５２−１Ｂからの３２ビットのビットデータR0'と、信号反転部８２−１からの４８ビットの中間鍵K1'とに基づいてｆ関数処理を行う。このｆ関数処理によって得られた３２ビットのビットデータが関数処理部５４−１Ｂから加算回路５５−１Ｂに出力される。
【０１８７】
ステップＳ１５５において、加算回路５５−１Ｂは、レジスタ５１−１Ｂからの３２ビットのビットデータL0'と、関数処理部５４−１Ｂからの３２ビットのビットデータとの、対応するビットそれぞれについて、EXNOR処理を行う。また、加算回路５５−１Ｂは、EXNOR処理によって得られる３２ビットのビットデータを、レジスタ５２−２Ｂ（下位レジスタ）に出力するとともに、そのビットデータを、比較対象のデータとして比較回路３２に出力し、処理を終了させる。
【０１８８】
以上の１ラウンド処理と同様の処理が、２ラウンド処理乃至１５ラウンド処理のそれぞれにおいても行われる。
【０１８９】
また、１６ラウンド処理では、上述のステップＳ１５２において、３２ビットのビットデータを上位レジスタ（レジスタ５１−１７Ｂ）に出力することに代えて、下位レジスタ（レジスタ５２−１７Ｂ）に出力し、上述のステップＳ１５５において、EXNOR処理によって得られる３２ビットのビットデータを下位レジスタ（レジスタ５２−１７Ｂ）に出力することに代えて、上位レジスタ（レジスタ５１−１７Ｂ）に出力することを除いて、１ラウンド処理と同様の処理が行われる。
【０１９０】
次に、図２５のフローチャートを参照して、比較回路３２の比較処理について説明する。この処理は、信号処理回路３１Ａと３１Ｂから比較対象の信号ビットが供給されてくる毎に行われる。
【０１９１】
例えば、１ラウンドの処理のセットのノードである信号処理回路３１Ａの加算回路５５−１Ａと、それに対応するノードである信号処理回路３１Ｂの加算回路５５−１Ｂから比較対象の信号ビットが供給されてきたとき、ステップＳ１７１において、比較部９１−１は、それらを比較する。
【０１９２】
ステップＳ１７２において、比較部９１−１は、比較した２つの信号ビットの信号レベルが互いに反転したものであるか否かを判定し、反転したものであると判定した場合、処理を終了させる。
【０１９３】
その後、例えば、２ラウンド処理のセットのノードである信号処理回路３１Ａの加算回路５５−ｉＡと、それに対応するノードである信号処理回路３１Ｂの加算回路５５−ｉＢから、比較対象とする信号ビットが供給されてきたとき、同様の処理が比較部９１−２乃至９１−１６のそれぞれにより行われる。
【０１９４】
一方、ステップＳ１７２において、比較部９１−１は、比較した２つの信号ビットの信号レベルが互いに反転したものではないと判定した場合、鍵を解析しようとするような行為が行われていると認識し、そのことを制御部９２に通知する。このとき、処理はステップＳ１７３に進む。
【０１９５】
ステップＳ１７３において、制御部９２は、そのとき信号処理回路３１Ａと３１Ｂにより行われている暗号処理を停止させ、処理を終了させる。
【０１９６】
以上の処理により、暗号処理回路２１全体としては、暗号処理の過程で、データの論理レベルの違いにより消費電力に差が生じることがなくなり、DPAのような手法により鍵が解読されることを防止することができる。また、意図的にエラーを発生させるような行為が行われたときには処理が停止されるため、エラーの統計をとることができなくなり、これにより、DFAのような手法により鍵が解読されることも防止することができる。
【０１９７】
以上においては、暗号処理回路２１においてDESによって暗号処理が行われるものとして説明したが、暗号処理回路２１において行われる暗号処理のアルゴリズムはDESに限らず、AESやRSAなどでもよい。さらに、例えば、ビット操作によって暗号処理する任意のアルゴリズムでもよい。
【０１９８】
また、上述した例では、暗号化処理を行うICチップ１１に適用した場合について説明したが、本発明は、その他、暗号化に関連する処理としての、例えば、暗号文を復号する復号処理を行うICチップにも適用可能である。
【０１９９】
図１の暗号処理回路２１を備えるICチップ１１は、ICカード、リーダ／ライタ、携帯電話機その他のPDAなど、セキュアに通信することが求められる各種の装置に採用することができる。
【０２００】
さらに、以上においては、論理的にみて同じ処理を行う回路として、信号処理回路３１Ａと３１Ｂの２つの回路がICチップ１１に設けられるとしたが、この回路の数は、入力されたHi，Loの信号ビットをそのまま処理する回路と、信号レベルを反転させた信号ビットを処理する回路の数が同じであれば、所定の偶数個だけ設けられるようにしてもよい。
【０２０１】
なお、本明細書において、フローチャートに記述されたステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【図面の簡単な説明】
【０２０２】
【図１】本発明を適用したICチップの一実施の形態の構成例を示すブロック図である。
【図２】信号処理回路３１Ａに入力される１ビットの論理レベルと信号レベルの対応例を示す図である。
【図３】信号処理回路３１Ｂに入力される１ビットの論理レベルと信号レベルの対応例を示す図である。
【図４】入力データｘとｙのEXOR処理の真理値表を示す図である。
【図５】１ビットの論理ビットに、図２の信号レベルの信号ビットを割り当てたときのEXOR処理の処理結果を示す図である。
【図６】１ビットの論理ビットに、図２の信号レベルの信号ビットを割り当てたときのEXNOR処理の処理結果を示す図である。
【図７】信号処理回路３１ＡによるEXOR処理の処理結果を示す図である。
【図８】信号処理回路３１ＢによるEXNOR処理の処理結果を示す図である。
【図９】信号処理回路３１Ａの構成例を示す図である。
【図１０】信号処理回路３１Ｂの構成例を示す図である。
【図１１】比較回路３２の構成例を示す図である。
【図１２】IP変換部４１Ａが有するIP変換テーブルの例を示す図である。
【図１３】IP逆変換部６１Ａが有するIP逆変換テーブルの例を示す図である。
【図１４】関数処理部５４−１Ａの構成例を示す図である。
【図１５】ビット拡張部１０１が有するＥテーブルの例を示す図である。
【図１６】Ｓボックス処理部Ｓjが行うＳボックス関数処理について説明する図である。
【図１７】Ｓボックス処理部Ｓjが行うＳボックス関数処理について説明する他の図である。
【図１８】Ｐ変換部１０３が有するＰ変換テーブルの例を示す図である。
【図１９】信号処理回路３１Ａの暗号化処理について説明するフローチャートである。
【図２０】図１９のステップＳ２において行われるラウンド処理について説明するフローチャートである。
【図２１】図２０のステップＳ２１において行われる１ラウンド処理について説明するフローチャートである。
【図２２】図２１のステップＳ５４において行われるｆ関数処理について説明するフローチャートである。
【図２３】信号処理回路３１Ｂの暗号化処理について説明するフローチャートである。
【図２４】１ラウンド処理について説明するフローチャートである。
【図２５】比較回路３２の比較処理について説明するフローチャートである。
【符号の説明】
【０２０３】
１１  ICチップ，  ２１  暗号処理回路，  ３１Ａ，３１Ｂ  信号処理回路，  ３２  比較回路，  ８１  信号反転部，  ８２−１乃至８２−１６  信号反転部，  ９１−１乃至９１−１６  比較部，  ９２  制御部
【図１】
2006229485.tif 000003
【図２】
2006229485.tif 000004
【図３】
2006229485.tif 000005
【図４】
2006229485.tif 000006
【図５】
2006229485.tif 000007
【図６】
2006229485.tif 000008
【図７】
2006229485.tif 000009
【図８】
2006229485.tif 000010
【図９】
2006229485.tif 000011
【図１０】
2006229485.tif 000012
【図１１】
2006229485.tif 000013
【図１２】
2006229485.tif 000014
【図１３】
2006229485.tif 000015
【図１４】
2006229485.tif 000016
【図１５】
2006229485.tif 000017
【図１６】
2006229485.tif 000018
【図１７】
2006229485.tif 000019
【図１８】
2006229485.tif 000020
【図１９】
2006229485.tif 000021
【図２０】
2006229485.tif 000022
【図２１】
2006229485.tif 000023
【図２２】
2006229485.tif 000024
【図２３】
2006229485.tif 000025
【図２４】
2006229485.tif 000026
【図２５】
2006229485.tif 000027