(57)【要約】本発明は、暗号アプリケーション用の演算を実施するための、複数のコプロセッサ（１０４ａ、１０４ｂ、１０４ｃ）を備えた暗号プロセッサに関するものであり、上記の各コプロセッサは、制御ユニット、算術ユニット、複数のコプロセッサ（１０４ａ、１０４ｂ、１０４ｃ）を制御するための中央処理ユニット（１０２）、および、各コプロセッサ（１０４ａ、１０４ｂ、１０４ｃ）を中央処理ユニット（１０２）に接続するためのバスを備えている。中央処理ユニット（１０２）、コプロセッサ（１０４ａ、１０４ｂ、１０４ｃ）の大部分、および、バス（１０１）は、１つのチップ（１００）に集積されている。チップは、複数のコプロセッサ（１０４ａ、１０４ｂ、１０４ｃ）に供給するための共通の電流供給入力部（１２２）を備えている。異なるコプロセッサを直列に接続することにより、暗号プロセッサの処理能力が上昇する。同時に、少なくとも２つのコプロセッサの電源プロファイルが重なり合っているために、暗号プロセッサの電源プロファイルの評価に基づいてなされる攻撃に対する上記プロセッサのセキュリティが改善される。異なるタイプのコプロセッサを使用することにより、暗号プロセッサは、多数の異なる暗号アルゴリズムの使用に適した多機能性暗号プロセッサとして設計できる。
2004516706.tif 000002
【特許請求の範囲】
【請求項１】
暗号アプリケーション用の演算を行うための暗号プロセッサであって、
制御ユニット（１０６ｅ，１０８ｅ）および算術ユニット（１０６ａ，１０８ａ）をそれぞれ備えている複数のコプロセッサ（１０４ａ，１０４ｂ，１０４ｃ）と、
該複数のコプロセッサを駆動するための中央処理装置（１０２）と、
各コプロセッサを中央処理ユニットに接続するためのバス（１０１）とを備え、
上記中央処理ユニット、複数のコプロセッサ、バスは、単一のチップ（１００）に集積されるとともに、該チップは、複数のコプロセッサに供給するための共通の電流供給端子（１２２）を備えている、暗号プロセッサ。
【請求項２】
暗号プロセッサが、複数の暗号アルゴリズムのためのハードウェアとして設計されるように、複数のコプロセッサの個々のコプロセッサ（１０４ａ，１０４ｂ，１０４ｃ）は、該コプロセッサの暗号アルゴリズムのタイプに合わせて備えられている、請求項１に記載の暗号プロセッサ。
【請求項３】
上記複数のコプロセッサは、並列に接続されているコプロセッサの個々のグループを備えているとともに、複数の暗号アルゴリズムに適するように、コプロセッサの各グループは、該コプロセッサの暗号アルゴリズムのタイプに合わせて備えられている、請求項１に記載の暗号プロセッサ。
【請求項４】
上記暗号アルゴリズムのタイプは、ＤＥＳアルゴリズム、対称暗号化処理のためのＡＥＳアルゴリズム、非対称暗号化処理のためのＲＳＡアルゴリズム、および、ハッシュ値を計算するためのハッシュアルゴリズムを含んでなるグループから選択される、請求項２または３に記載の暗号プロセッサ。
【請求項５】
暗号演算は、複数のサブ演算に分解できるとともに、上記中央処理装置は、複数のサブ演算を、上記複数のコプロセッサの個々のコプロセッサ（１０４ａ，１０４ｂ，１０４ｃ）に割り振るために設けられている、請求項１〜４のいずれか１項に記載の暗号プロセッサ。
【請求項６】
暗号プロセッサがハードウェアとして実施可能な異なる数学的演算の数が、少なくともコプロセッサの数以上となるように、上記コプロセッサは、相互に異なっている、請求項１〜５のいずれか１項に記載の暗号プロセッサ。
【請求項７】
暗号アプリケーション用の演算は、モジュール指数および／またはモジュール乗算および／またはモジュール加算／減算を有している、請求項１〜６のいずれか１項に記載の暗号プロセッサ。
【請求項８】
各コプロセッサは、少なくとも１６０桁であり、好ましくは少なくとも１０２４桁または２０４８桁である２進数を処理するように設けられている、請求項１〜７のいずれか１項に記載の暗号プロセッサ。
【請求項９】
さらに、上記中央処理装置（１０２）のみに連結されているメモリー（１１８）を備えている、請求項１〜８のいずれか１項に記載の暗号プロセッサ。
【請求項１０】
上記処理装置（１０２）および複数のコプロセッサに対して、クロックを供給するためのクロック発生装置（１２０）を備え、該クロック発生装置も上記単一のチップに集積されている、請求項１〜９のいずれか１項に記載の暗号プロセッサ。
【請求項１１】
各コプロセッサは、さらに、それぞれのコプロセッサの算術ユニット（１０６ａ・１０８ａ）に独占的に割り当てられている複数のレジスタ（１０６ｂ・１０６ｃ・１０６ｄ・１０８ｂ・１０８ｃ・１０８ｄ）を備えている、請求項１〜１０のいずれか１項に記載のプロセッサ。
【請求項１２】
上記コプロセッサによって、それぞれにて異なる長さの数を用いた算術計算が実行されるように、或るコプロセッサに割り当てられている複数のレジスタの長さ（Ｌ１・Ｌ２）と、他のコプロセッサに組み込まれている複数のレジスタの長さとが異なっている、請求項１１に記載のプロセッサ。
【請求項１３】
コプロセッサに組み込まれているレジスタの数は、少なくとも２つのサブ演算が、コプロセッサ（１０４ａ、１０４ｂ、１０４ｃ）と中央処理装置（１０２）との間のオペランドの伝送を必要としないように、少なくとも２つのサブ演算のためのオペランドを十分に確保する数である、請求項１１または１２に記載の暗号プロセッサ。
【請求項１４】
上記中央処理ユニット（１０２）は、上記少なくとも２つのサブ演算およびコプロセッサのレジスタに格納されている演算の順序を設定することができるように、コプロセッサの演算を時間的に制御する装置（２００）をさらに備えている、請求項１３に記載の暗号プロセッサ。
【請求項１５】
電流消費を低減するべく、中央処理装置によって上記コプロセッサのためのサブ演算が存在しないように決定されている場合に、コプロセッサをオフ状態にする装置をさらに備えていることを特徴とする、請求項１１〜１４のいずれか１項に記載の暗号プロセッサ。
【請求項１６】
上記中央処理装置（１０２）は、
少なくとも２つのコプロセッサを連結して１つのクラスタとし、
サブ演算をクラスタに割り当てることで、サブ演算をクラスタのコプロセッサに共同で実行させるように設定されている、請求項１〜１５のいずれか１項に記載の暗号プロセッサ。
【請求項１７】
各コプロセッサは、上記算術ユニット（１０６ａ、１０８ａ）の数値幅によって規定されるワード長を有し、かつ、上記中央処理ユニット（１０２）は、相互連結されたコプロセッサが、相互連結されたコプロセッサの数値幅の合計と等しいワード長の数を用いた計算を行う方式で、少なくとも２つのコプロセッサを相互に連結するように設けられている、請求項１１〜１６のいずれか１項に記載の暗号プロセッサ。
【請求項１８】
少なくとも１つのコプロセッサの上記算術ユニットは、１つのサイクルにて、複数の計算が並列して実行されるとともに、上記数が上記計算に用いられる数の桁に等しく、かつ、第１サイクルと同じ計算が、上記サイクルの結果を用いた直列方式にて、後の他のサイクルにて行われるように実行される直列／並列計算ユニットを備えている、請求項１〜１７のいずれか１項に記載の暗号プロセッサ。
【請求項１９】
コプロセッサは、上記サイクルにて、以前のサイクルの１つの結果に部分積を加算し、さらなるサイクルにて、最後のサイクルの結果を次の部分積に加算するように、モジュール乗算を実行する、請求項１８に記載の暗号プロセッサ。
【請求項２０】
上記算術ユニットは、モジュール乗算用の３オペランドの加算器を備え、
該３オペランドの加算器は、処理された数の各桁用に、３つの入力部および２つの出力部を有するとともに、桁上げすることなく加算するための半加算器と、２つの入力部と１つの出力部とを有する下流側の全加算器とを備えている、請求項１１９に記載の暗号プロセッサ。
【請求項２１】
上記中央処理ユニット（１０２）は、ダミー計算を実行するために、暗号コプロセッサを駆動するための装置を備えている、請求項１〜２０のいずれか１項に記載の暗号プロセッサ。
【請求項２２】
ダミー計算を制御するための上記装置（２０２）は、ダミー計算を実行する暗号プロセッサをランダムに選択するために備えられている、請求項１８に記載の暗号プロセッサ。
【発明の詳細な説明】
本発明は、暗号技術、特に暗号アプリケーション（ｋｒｙｐｔｏｇｒａｐｈｉｓｃｈｅ Ａｎｗｅｎｄｕｎｇｅｎ）用の暗号プロセッサの構築に関するものである。
【０００１】
キャッシュレス振り替えや、公衆網を介した電子データの伝送、公衆網上を介したクレジットカード番号の交換の利用、一般的に言えば支払い、認証、または、立ち入りのためのいわゆるスマートカードの使用が拡大するにつれて、暗号技術に対する要求がますます高まっている。暗号技術には、一方では、暗号アルゴリズムが、他方では、該暗号アルゴリズムによって規定された計算を実行する適切なプロセッサ用の解法（Ｐｒｏｚｅｓｓｏｒｅｎｌｏｅｓｕｎｇｅｎ）が含まれる。今日、特定の要求に対して、チップカード上または特殊なセキュリティＩＣ上で実行される暗号アルゴリズムが増加しているが、従来、汎用計算器を用いて暗号アルゴリズムが実行されていたときには、コストや、計算時間に対する要求、および多種多様な外部からの攻撃に対するセキュリティは、今日ほど決定的な働きをなすものではなかった。したがって、上記スマートカードは、一方では、大量生産のように費用効率の高い手法で利用可能である必要があり、しかしながら、他方では、潜在的なアタッカーを完全に取り締まるように、外部からの攻撃に対して高いセキュリティを示す必要がある。
【０００２】
また特に、よく知られたＲＳＡアルゴリズムのように、多くの暗号アルゴリズムのセキュリティは、基本的には用いられる鍵の長さに応じて変化するため、暗号プロセッサは、相当量の計算容量（Ｒｅｃｈｅｎｌｅｉｓｔｕｎｇ）を備えている必要がある。言い換えれば、処理される数の長さが長くなると、あらゆる可能性を試すことに基づく攻撃が、計算時間に関する理由のゆえに不可能となるため、セキュリティも向上する。
【０００３】
つまり、数値で表現すると、暗号プロセッサは、１０２４ビット、２０４８ビット、または、おそらくそれ以上の長さである整数を取扱う必要がある。例えば、通常のＰＣにおけるプロセッサは、３２ビットの整数または６４ビットの整数を処理する。楕円形の曲線を使用した計算の場合のみ、桁数は、１６０桁の範囲の低い値であるが、通常のＰＣの桁数を明らかに越えている。
【０００４】
しかしながら、計算における大きい犠牲は、計算時間が長くなることを意味する。そのため、暗号プロセッサに不可欠な要求は、例えば認証、建物への立ち入り、支払い処理またはクレジットカード転送に多くの時間を必要とすることがないように、高い計算処理能力を達成することにある。上記計算時間の増大は、市場の受入れには非常に不利になる。
【０００５】
したがって、要約すれば、暗号プロセッサは、安全であり、かつ高速であるがゆえに、非常に高性能である必要があるといえる。
【０００６】
プロセッサによって処理能力を向上するための１つの可能性は、例えば近年のＰＣ、または近年のグラフィックカードのように、中央処理ユニットが、１つまたは並行して作動する複数のコプロセッサを備えているという点にある。そのような概要（Ｓｚｅｎａｒｉｏ）を、図７に示す。図７は、コンピュータ回路基板（Ｃｏｍｐｕｔｅｒｐｌａｔｉｎｅ）８００を示しており、該コンピュータ回路基板８００は、ＣＰＵ８０２、ランダムアクセスメモリー（ＲＡＭ）８０４、第１コプロセッサ８０６、第２コプロセッサ８０８、および、第３コプロセッサ８１０が設けられている。ＣＰＵ８０２は、バス８１２を介して、３つのコプロセッサ８０６・８０８・８１０に接続されている。さらに、各コプロセッサ用に、コプロセッサの演算用にのみ用意されたメモリーをそれぞれ備えていてもよい。つまり、コプロセッサ１用のメモリー１  ８１４、コプロセッサ２用のメモリー２  ８１６、コプロセッサ３用のメモリー３  ８１８）を備えていてもよい。
【０００７】
さらに、図７に示したコンピュータ回路基板８００に配置されている各チップに、各電流および／または電圧供給端子Ｉ１〜Ｉ８を介して、各素子（Ｅｌｅｍｅｎｔｅ）内の電子部品を機能させるために必要な電力が供給される。あるいは、この回路基板用に、回路基板を横切って回路基板上の各チップに割り振られる電流の供給部が１つだけ備えられていてもよい。しかしながら、各チップへの供給線は、アタッカーに利用されてしまう。
【０００８】
図７に示される、通常のコンピュータのアプリケーションのための構想は、いくつかの理由で、暗号プロセッサ用には適していない。この理由は、短い整数の算術（Ｋｕｒｚｚａｈｌ−Ａｒｉｔｈｍｅｔｉｋ）のための全ての素子が並んでいる（ａｕｆｇｅｆｕｅｈｒｔ）ためであり、一方、暗号プロセッサは、倍長整数の算術演算を実行する必要があるためである。
【０００９】
さらに、コンピュータ回路基板８００上の各チップには、アタッカーによってアクセスされやすく、時間の関数としての電源プロファイル（Ｌｅｉｓｔｕｎｇｓｐｒｏｆｉｌｅ）または電流プロファイルの引き出しが可能な電流アクセス部および／または電力アクセス部がそれぞれ備えられている。時間の関数としての電流プロファイルの引き出しは、暗号プロセッサに効果的な攻撃が何度も行われることに基づいている。暗号プロセッサに対する様々な攻撃の、他の背景の詳細および／または詳細な説明については、Ｈｅｓｓ他「暗号アルゴリズムのスマートカード実施に対する情報漏れ攻撃および対策（Ｉｎｆｏｒｍａｔｉｏｎ Ｌｅａｋａｇｅ Ａｔｔａｃｋｓ Ａｇａｉｎｓｔ Ｓｍａｒｔ Ｃａｒｄ Ｉｍｐｌｅｍｅｎｔａｔｉｏｎｓ ｏｆ Ｃｒｙｐｔｏｇｒａｐｈｉｃ Ａｌｇｏｒｉｔｈｍｓ ａｎｄ Ｃｏｕｎｔｅｒｍｅａｓｕｒｅｓ）」（ユーロスマートセキュリティ会議（Ｅｕｒｏｓｍａｒｔ Ｓｅｃｕｒｉｔｙ Ｃｏｎｆｅｒｅｎｃｅ）、２０００年６月１３日〜１５日）に開示されている。対策として、異なる演算が常に同じ量の時間を必要とするということに基づいた実施が提案されている。そのため、アタッカーは、暗号プロセッサが、乗算、加算または何か他のことを実施したかどうかを、電源プロファイルから確定することができない。
【００１０】
Ｈｅｓｓ他「公開鍵アルゴリズム用の倍長整数算術ユニットの設計（Ｄｅｓｉｇｎ ｏｆ Ｌｏｎｇ Ｉｎｔｅｇｅｒ Ａｒｉｔｈｍｅｔｉｃ ｕｎｉｔｓ ｆｏｒ Ｐｕｂｌｉｃ−Ｋｅｙ Ａｌｇｏｒｉｔｈｍｓ）」（ユーロスマートセキュリティ会議、２０００年６月１３日〜１５日）には、暗号プロセッサによって実行可能である必要がある様々な計算用の演算が詳細に示されている。特に、ドイツ特許明細書ＤＥ  ３６  ３１  ９９２  Ｃ２には、モジュールの乗算、モジュール削減（Ｒｅｄｕｋｔｉｏｎ）方法、および、いわゆるＺＤＮ方法について、記載されている。
【００１１】
上記ＺＤＮ方法は、乗算およびモジュール削減用に、並列して実行可能な先取りアルゴリズムを用いる直列／並列のアーキテクチャに基づいている。これによって、乗算およびモジュール削減用の先取りパラメータを用いた２つの２進数の乗算を、反復的な３つのオペランドの加算に変換することができる。この目的のために、モジュールの乗算は、部分積の直列演算に分解される。反復の始めに、２つの部分積が形成され、次に、中間結果を得るために、モジュールの削減を考慮しながらこれらの部分積を互いに加算する。続いて、他の部分積が形成され、再び、モジュールの削減を考慮しながら、この部分積を中間結果にさらに加算する。この反復は、乗数の全桁を処理するまで続けられる。３つのオペランドの加算のために、暗号コプロセッサは、反復工程にて、新たな部分積と、すぐ前の反復工程の中間結果との加算を実行する加算器を備えている。
【００１２】
したがって、図７の各コプロセッサは、複数のモジュールの乗算を並列して実行することができるように、また、特定のアプリケーションのために処理能力を高めることができるように、ＺＤＮユニットをそれぞれ備えていてもよい。しかしながら、この解法は、アタッカーが個々のチップの電流プロファイルを決定する可能性があるので、成功しないであろう。つまり、この結果、確かに、処理能力は上昇するが、この処理能力の向上は、暗号コンピュータのセキュリティを犠牲にして達成される。
【００１３】
本発明の目的は、高速かつセキュリティの高い暗号プロセッサを提供することにある。
【００１４】
この目的は、請求項１に記載の暗号プロセッサによって達成される。
【００１５】
本発明は、暗号演算を並行化するための従来の方法から出発する必要があるという認識に基づいている。本発明にかかる暗号プロセッサは、ただ１つのチップに実施されている。複数のコプロセッサは、バスを介して中央処理ユニットに接続されている。この場合、全てのコプロセッサに、共通の電流供給端子を介して、電力が供給される。これにより、アタッカーにとって、電流供給端子における電源プロファイルによって、個々のコプロセッサの演算を「盗み出す」ことは、非常に難しく、あるいは不可能でさえある。暗号プロセッサの処理能力を向上するために、コプロセッサは、バスを介して中央処理ユニットと並列接続され、中央処理ユニット（ＣＰＵ）による算術演算を個々のコプロセッサに割り振れるようになっている。
【００１６】
複数の異なるタイプのコプロセッサが、１つのチップに集積されていることが好ましい。その結果、暗号コプロセッサは、多機能性暗号プロセッサとして組み込まれる。言い換えれば、このことは、コプロセッサまたはコプロセッサのグループが、例えば、ＲＳＡアルゴリズムのような非対称暗号化処理のために設計されていること意味している。さらに他の暗号コプロセッサは、例えば、ＤＥＳ暗号化処理のために必要な算術演算を行うために備えられている。１つまたは複数の他のコプロセッサは、対称暗号化処理を実施できるように、例えば、ＡＥＳモジュールを形成する。一方、さらに他のコプロセッサは、ハッシュ値を計算するために、例えば、ハッシュモジュールを形成する。これにより、安全な多機能性暗号化プロセッサが得られる。この多機能性暗号化プロセッサは、対応する数の暗号コプロセッサを含む場合、多数の多様な暗号化処理のために使用できる。このような多機能性暗号プロセッサは、１つのサーバーにより、多数の多様な暗号化タスクを遂行することができるというように、例えば、インターネットにおけるサーバーアプリケーションのために、特に有利である。
【００１７】
しかしながら、多機能性は、様々な暗号化概念が並列に利用可能であり、ますます普及しているので、スマートカードにも有利である。多数の多様な機能性を実施することができれば、スマートカードは市場で成功をおさめるだろう。つまり、多数の多様な演算のために多数の多様なスマートカードを用いる概念と比較して、スマートカード所有者は、財布に、例えば１０の異なる用途のために１０枚の異なるスマートカードではなく、スマートカードを１枚だけ持てばよいからである。
【００１８】
さらに、本発明の暗号プロセッサは、多機能性だけではなく、さらに高いセキュリティも提供する。高いセキュリティは、いわゆる、多機能性の「廃棄物」である。なぜなら、様々な暗号アルゴリズムは、様々な演算すなわち様々な電源プロファイルを有しているからである。たとえ、常にただ１つの暗号コプロセッサが、１つのアルゴリズムのタイプを実施し、同時に、他の暗号コプロセッサはアドレス指定されていないので停止しているとしても、アタッカーにとっては、個々の電源プロファイルを分析する以前に、どのタイプのアルゴリズムが、現在活性化されているかをまず見出さなければならないという障害がさらに存在している。２つの暗号コプロセッサのタイプが並行して演算を行っていれば、その状況は、アタッカーにとってはより困難なものとなる。なぜなら、この場合、２つの完全に異なるアルゴリズムのタイプが、共通の電流供給端子に重なり合っているからである。
【００１９】
この概要は、以下のように暗号コプロセッサが設計されている場合、原則的に常に達成される。すなわち、たとえ唯一の他の暗号コプロセッサのタイプがアドレス指定されているとしても、暗号コプロセッサのうちの１つのタイプがいわゆる「ダミー」計算を実施するように、暗号コプロセッサが設計されている場合である。「ダミー」暗号コプロセッサが、ランダムに選択されると、アタッカーにとって、「有効な」暗号コプロセッサアルゴリズムのパラメータを調査することがより難しくなる。なぜなら、アタッカーは、たとえ常に同じ有効アルゴリズムを実施しても、ほかのどのモジュールが現在作動しているか知らないからである。従って、暗号化プロセッサチップにある様々な暗号コプロセッサの数だけ、安全性が上昇する。
【００２０】
この概要は、以下のように暗号コプロセッサが設計されている場合、原則的に常に達成される。すなわち、たとえ唯一の他の暗号コプロセッサのタイプが指定されているとしても、暗号コプロセッサのうちの１つのタイプがいわゆる「ダミー」計算を行うように、暗号コプロセッサが設計されている場合である。「ダミー」暗号コプロセッサが、ランダムに選択されると、アタッカーにとって、「有効な」暗号コプロセッサアルゴリズムのパラメータを調査することがより難しくなる。なぜなら、アタッカーは、たとえ常に同じ有効アルゴリズムを実施しても、ほかのどのモジュールが現在作動しているか知らないためである。従って、暗号化プロセッサチップにある様々な暗号コプロセッサの数とともに、セキュリティが向上する。
【００２１】
以下に、本発明の好ましい実施形態を、添付図面に基づいて以下に詳述する。図１は、本発明における、単一のチップ上に集積された暗号プロセッサを示す図である。図２は、ＣＰＵによって制御される、複数の独立コプロセッサのより詳細な図である。図３は、３オペランドの加算に適した算術ユニットのより詳細な図である。図４ａは、直列／並列にモジュール乗算を実行するための概略的フローチャートである。図４ｂは、乗算を例として用いて、算術ユニットの演算の直列／並列形態を示すための数値例である。図５は、モジュール指数を複数のモジュール乗算に分解するための一例を示す図である。図６は、モジュール乗算を様々なコプロセッサに振り分けるための他の例を示す図である。図７は、個別に供給された複数のモジュールを備えたコンピュータ回路基板を示す図である。
【００２２】
各図について詳述する前に、チップ上に設けられるとともに、同じチップ上に設けられている制御ユニットによって駆動される、複数のコプロセッサを並列に接続することによって、セキュリティが高められる理由ついて、以下に詳述する。
【００２３】
暗号プロセッサは、例えばデジタル署名や認証、暗号化タスク等の、セキュリティの観点にて重要なアプリケーションに用いられる。アタッカーは、例えば、暗号方法を解読するために、秘密鍵を発見することを望んでいる。暗号プロセッサは、例えば、チップカードに用いられており、既に述べたように、このチップカードには、法的拘束力のある電子署名や、ホームバンキング、あるいは、携帯電話による支払い等のためのスマートカードや署名カードが含まれている。一方、上記のような暗号プロセッサは、コンピュータおよびサーバーにて、セキュリティＩＣとして用いられることによってもあり、これによって、認証を実行したり、暗号化タスクを行ったりすることができる。この暗号化タスクは、例えばインターネットを介した安全な支払い、いわゆるＳＳＬセッション（ＳＳＬ＝Ｓｅｃｕｒｅ Ｓｏｃｋｅｔ Ｌａｙｅｒ）、すなわちクレジットカード番号の安全な転送に用いられる。
【００２４】
一般的な物理的攻撃は、電流消費（ＳＰＡ、ＤＰＡ、タイミング攻撃）や、電磁気放射の測定によって行われる。攻撃に関するより詳細な説明については、初めに言及した文献（Ｌｉｔｅｒａｔｕｒｓｔｅｌｌｅｎ）になされている。
【００２５】
今日の半導体技術は、一般的には、２５０ナノメートル以下の範囲の構造を実現しており、アタッカーが局部電流測定を実行することは非常に困難となっているので、攻撃の際には、概して、ＣＰＵおよびコプロセッサを含む全チップカードの電流消費が測定される。なお、この全チップカードの電流消費とは、例えばＣＰＵ、ＲＡＭ、ＲＯＭ、Ｅ２ＰＲＯＭ、フラッシュメモリー、時間制御ユニット、乱数発生器（ＲＮＧ）、ＤＥＳモジュール、および、暗号コプロセッサのそれぞれの電流消費の総計である。
【００２６】
暗号コプロセッサは、概して最も多く電流を消費するので、アタッカーは、電力が個々のコプロセッサへ個別に供給されている場合、暗号コプロセッサが計算を開始する時期を判断することができる。これを回避するための狙いは、電流消費の経時変化を完全に一定に保つことによって、アタッカーが、暗号コプロセッサの計算開始時期をもはや認識することができなくなるようにすることにある。この理想的な目標が達成できないとしても、本発明にかかるコプロセッサを並列に接続することによって、できる限り一定で（ｇｌｅｉｃｈｆｏｅｒｍｉｇｅｓ）、かつ平均値に集中している「ノイズ」を実現することを目的としている。
【００２７】
例えばＣＭＯＳ技術によって製造されたチップの電流消費は、「０」から「１」に切り替えた場合に変化する。したがって、電流消費は、データに応じて変化し、また、ＣＰＵおよび暗号コプロセッサによって用いられるコマンドに応じて変化する。
【００２８】
複数のコプロセッサが並列に接続され、複数の演算または複数のサブ演算を並列に処理する場合、あるいは、演算が複数のコプロセッサに分配される場合、詳述したように、データ処理およびコマンド処理によって発生する電流プロファイルは、重なり合う。
【００２９】
コプロセッサを並列に処理すると、各コプロセッサおよび／または制御ユニットの、データおよびコマンドを推論することが、より一層困難となる。この理由は、各コプロセッサ中のデータおよびコマンドは、一般的には異なっているが、アタッカーは、異なるコマンドの重なり合いのみを認識し、個々のコマンドに起因する電流プロファイルを認識しないからである。
【００３０】
図１に、本発明にかかる、暗号アプリケーション用の演算を実行するための暗号プロセッサを示す。暗号プロセッサは、単一のチップ１００上で実施され、中央処理ユニット（ＣＰＵ）１０２と複数のコプロセッサ１０４ａ、１０４ｂ、１０４ｃとを有している。これらコプロセッサは、図１に示すように、中央処理ユニット１０２と同じチップ上に配置されている。複数のコプロセッサのうちの各コプロセッサは、それぞれ算術ユニットを備えている。また、各コプロセッサ１０４ａ、１０４ｂ、１０４ｃは、図２に基づいて後述するように、算術ユニットに加えて、中間結果を格納することができる少なくとも１つのレジスタ（ＲＥＧ）も備えていることが好ましい。
【００３１】
一般的な暗号プロセッサは、入力インターフェース１１４と出力インターフェース１１６とを備えている。入力インターフェース１１４および出力インターフェース１１６は、データ入力またはデータ出力用の外部端子、および、ＣＰＵ１０２に接続されている。一般的に、ＣＰＵ１０２には、図１でＲＡＭと記している、該ＣＰＵ１０２用（ｅｉｇｅｎｅｒ）のメモリー１１８が連結されている。この他、暗号プロセッサは、図１には示されていないクロック発生器１２０、さらなるメモリー、乱数発生器なども備えていてもよい。
【００３２】
図１に示した全ての素子は、このチップに、単一の電流供給端子１２２によって電力が供給される単一のチップ上で実行されることに注意すべきである。該チップ１００は、図１に示した全ての素子に繋がる電流供給線を内部に有している。しかしながら、これらの素子を、上述した理由により個別に妨害することはできない。
【００３３】
対照的に、電流供給端子１２２の妨害は非常に簡単である。図７に示した回路基板のように、それぞれすべての個々の部品の電流供給端子は非常に妨害されやすく、それゆえ、非常に「表情豊かな（ａｕｓｄｒｕｃｋｓｓｔａｒｋｅ）」電流プロファイルを有している回路基板とは異なり、電流供給端子１２２に現れる電流プロファイルは、ほぼ一定となる、あるいは、できる限り均一な一定値付近のノイズを有している。これは、電流消費の最大の原因であるコプロセッサ１０４ａ、１０４ｂ、１０４ｃは、対応する駆動または対応する構造の場合、例えば、「０」から「１」に互いに独立して切り替わることにより、互いに無相関に電流を消費するためである。
【００３４】
個々のコプロセッサを並列に接続することによって、暗号プロセッサの処理能力を上昇させることができる。その結果、チップ上のメモリーの実行に際して、メモリーおよび計算用ユニットに用いられる技術が異なっているために引き起こされる速度損失が、十分に補償される。
【００３５】
図１の暗号プロセッサは、既に述べたように、ＣＰＵ１０２を備えている。このＣＰＵ１０２は、バス１０１を介して、複数の暗号コプロセッサ１０４ａ、１０４ｂ、１０４ｃに接続されている。本発明よれば、共通の電流供給端子１２２における、電源プロファイルの均一化は、２つの相互に分割された独立の暗号コプロセッサ１０４ａおよび１０４ｂによって既に達成されている。セキュリティは、２つの暗号コプロセッサ１０４ａ・１０４ｂが異なるように設計されている場合、つまり、算術演算の異なるサブ演算を実施できる、あるいは、例えば、非対称暗号化処理（例えばＲＳＡ）、対称暗号化処理（ＤＥＳ，３ＤＥＳ，または、ＡＥＳ）のための算術ユニット、ハッシュ値を計算するためのハッシュモジュールなどの、様々な暗号アルゴリズムの算術論理ユニットを備えている場合に改善される。各暗号アルゴリズムのタイプのために、複数の暗号コプロセッサが並列に接続されている場合、処理能力が向上する。例えば、図１に示すように、暗号コプロセッサは、並列接続され、この並列接続されている全ての暗号コプロセッサは、例えば、ＲＳＡアルゴリズムのときに生じる演算を実行可能となるように設計されている。図１の第２コプロセッサ列に、ｎｉ個の完全な独立の暗号コプロセッサを示す。この独立の暗号コプロセッサは、例えば、すべて、ＤＥＳアルゴリズムのために必要な算術演算のために設計されている。最後に、図１の第３暗号コプロセッサ列は、ｎｉ個の自給型暗号コプロセッサを示している。この自給型暗号コプロセッサは、すべて、例えば、ハッシュ計算の際に必要な演算のために設計されている。従って、演算および暗号アルゴリズムによる所定のタスクを、並列な独立の算術論理ユニットに割り振ることができる場合、様々な暗号アルゴリズムと、様々な暗号アルゴリズムのために必要なそれぞれの演算とのための処理能力を、著しく向上することができる。
【００３６】
様々なタスクのための複数の暗号コプロセッサを備えるこのような多機能性暗号プロセッサは、次のような場合にも有利に使用することができる。すなわち、例えば、スマートカードに実施されている図１に示す暗号プロセッサが、唯一の暗号アルゴリズムを処理しなければならないように駆動される場合である。この場合、ＣＰＵは、実際は停止している暗号コプロセッサタイプに「ダミー」計算を実行させるために該暗号コプロセッサタイプを駆動するように設計されていることが有利であり、これにより、アタッカーが、電流供給入力部１２２にて少なくとも２つの重なり合う電源プロファイルを読み取る。ダミー計算を実施する暗号コプロセッサタイプは、ランダムに選択されることが有利である。その結果、アタッカーは、たとえ、どのコプロセッサタイプが有効な計算を実施しているかを見出したとしても、その時点で、どの暗号コプロセッサタイプがダミー計算を実施しているかを決して分からない。このとき、共通の電流供給端子にて、いわゆる「ダミー電源プロファイル」が「有効電源プロファイル」に重ね合わされた状態となる。
【００３７】
図２は、暗号コプロセッサ１０４ａ・１０４ｂ・１０４ｃのより詳細な図である。図２に示すように、独立の暗号コプロセッサ１０４ａは、算術ユニット１０６ａ、３つのレジスタ１０６ｂ〜１０６ｄ、および、それ自身の制御ユニット１０６ｅを備えている。同様のことが、暗号コプロセッサ１０４ｂにも当てはまる。この暗号コプロセッサ１０４ｂも、算術ユニット１０８ａ、例えば３つのレジスタ１０８ｂ〜１０８ｄ、それ自身の制御ユニット１０８ｅを備えている。同様の構成を、暗号コプロセッサ１０４ｃも有している。
【００３８】
さらに、図２に、ＣＰＵの一部として、順序を変更させるための装置２００を、概略的に示す。同じことが、ダミー計算を制御するための装置２０２に当てはまる。装置２０２は、同様にＣＰＵ１０２の一部である。本発明の好ましい実施形態には、装置２０２は、他の暗号コプロセッサタイプの有効な計算と並行してダミー計算を実行することができる暗号コプロセッサ、もしくは、暗号コプロセッサのタイプをランダムに選択するために、設けられている。
【００３９】
様々な暗号アルゴリズムおよびこの暗号アルゴリズムのハードウェア実施に関しては、「応用暗号法便覧」（”Ｈａｎｄｂｏｏｋ ｏｆ Ａｐｐｌｉｅｄ Ｃｒｙｐｔｏｇｒａｐｈｙ”， Ｍｅｎｅｚｅｓ， ｖａｎ Ｏｏｒｓｃｈｏｔ ｕｎｄ Ｖａｎｓｔｏｎｅ， ＣＲＣ Ｐｒｅｓｓ， １９９７年）を参照すればよい。
【００４０】
好ましい実施形態では、制御ユニット１０５によって、２つのコプロセッサ１０６・１０８を制御して、例えば、１つのクラスタを形成する２つのコプロセッサが長さＬ１＋Ｌ２の数を用いて算術演算を実行するべく、算術ユニットＡＵ１およびＡＵ２を相互に連結してもよい。従って、２つのコプロセッサのレジスタは、相互に接続されている。
【００４１】
一方、コプロセッサは、モジュール乗算またはモジュール指数のような複数のサブ演算に十分に足りる程度のオペランドに対して、十分に大きい数のレジスタを独占的（ｅｘｋｌｕｓｉｖ）に備えていてもよい。情報漏れを回避するためには、例えば、電流プロファイルをさらに隠すべく図２の２００で示されるサブ演算の順序変更装置によって、サブ演算を重ねあわせてもよいし、あるいは、サブ演算を無作為に混合してもよい。このことは、暗号プロセッサの他のコプロセッサが停止している間に、例えば２つのコプロセッサのみを備えている、あるいは、２つのコプロセッサのみが作動している場合に有効である。
【００４２】
本発明の好ましい実施形態では、制御ユニット１０５は、さらに、コプロセッサが必要ではない場合に、コプロセッサおよび／またはコプロセッサのレジスタをオフ状態にするための図２に示していない手段を備えている。このような手段を備えることにより、全回路の電流消費を低減することができるので、特に電池駆動のアプリケーションにとって有益である。また、ＣＭＯＳモジュールは、切り替えを生じさせる時にのみ十分な量の電流を必要とするにもかかわらず、これらのモジュールは、利用可能な電力が制限された場合に関係することになる閉回路の電流消費も有する。
【００４３】
既に説明したように、暗号プロセッサの特徴は、該暗号プロセッサが処理しなければならない長い数字によって、例えば図４ａ・４ｂに示される直列／並列乗算のような或るサブ演算が非常に多くの時間を必要とするという点にある。また、制御ユニットが計算ユニットに対して必要なコマンドを供給した後、コプロセッサが、制御ユニット１０５側の介入なしに独立してサブ演算を実行することができるように、コプロセッサが実行されることが好ましい。この実行のために、各コプロセッサは、当然ながら、中間解を格納するためのレジスタを必要とする。
【００４４】
コプロセッサがＣＰＵ１０２からのいかなる入力を受けることなく、比較的長く作動することにより、ＣＰＵ１０２は、直列方式つまり連続的に、複数の各コプロセッサに、必要なコマンドを提供してもよい。これにより、全てのコプロセッサがいわば並列に作動するが、いわば互いにずれた状態で作動する。
【００４５】
例えば、第１コプロセッサは、或る時点で活性化される。第１コプロセッサが既に作動している間、ＣＰＵ１０２は、第１コプロセッサの活性化を終了すると、第２コプロセッサをすぐに活性化する。第コプロセッサの活性化が完全に終了すると、第３コプロセッサは、活性化される。つまり、第３コプロセッサの活性化が行われているということは、第１および第２コプロセッサはすでに計算されていることを意味する。このことが、全ての、つまりｎ個のコプロセッサに対して実施されている場合、全てのコプロセッサは時間的にずれた状態で作動される。全てのコプロセッサが、そのサブ演算に同じ時間を要して作動する場合には、第１コプロセッサが、まず初めにサブ演算を終了する。
【００４６】
そして、第２コプロセッサがサブ演算を終了する前に、ＣＰＵは、第１コプロセッサからの結果を得て、理想的にはこれを終了する。したがって、処理能力をはるかに向上することができるとともに、ＣＰＵ１０２の計算容量の最適な利用を達成することができる。全てのコプロセッサが同一の演算を実行する場合、全てのコプロセッサが時間的にずれて作動しているために、しっかりと隠された電流プロファイルはそれでもなお発生する。この場合は、全てのコプロセッサが、ＣＰＵによって同じ時点で活性化され、ある意味では、完全に同期的に作動される場合とは異なっている。そして、隠されていない電流プロファイルおよびそれよりもなお強い電流プロファイルが生じる。したがって、計算サブユニットを直列的に活性化することは、暗号プロセッサのセキュリティにとっても有効である。
【００４７】
次に、図３について説明する。図３は、該図３の右側にある式によって提示されているように、３オペランドの加算を実行するための装置を示している。図３の右側の式では、減算を獲得するために、因子「−１」を用いてオペランドを簡単に乗じる必要があるので、加算および減算を同程度に実施することが示されている。この３オペランドの加算は、繰上げなく作動する３ビット加算器（つまり、半加算器）と、下流側の繰上げによって作動する２ビット加算器（つまり、全加算器）とを用いて、実行される。一方、オペランドＮのみ、オペランドＰのみ、または、オペランドなしは、オペランドＺに加算される、あるいは、オペランドＺから減算される場合もある。このことは、図３では、プラス／マイナス符号の下に「０」で表され、また、各反復工程にて再度計算される図４ａに示すいわゆる先取りパラメータａ１、ｂ１によって表されている。
【００４８】
図３に、このような加算ユニットのいわゆるビットスライスを示す。３つの数字を例えば１０２４の２進桁（Ｂｉｎａｅｒｓｔｅｌｌｅｎ）に加算する場合、完全に並列な演算のために、計算ユニット１０６の算術ユニットには、図３に示される構成（Ａｎｏｒｄｎｕｎｇ）が１０２４倍（ｍａｌ）存在する。
【００４９】
本発明の好ましい実施形態では、各コプロセッサ１０６〜１１２（図１）が、ＤＥ  ３６  ３１  ９９２  Ｃ２に詳述されている先取りアルゴリズムを用いたモジュール乗算を実施するために、配置されている。
【００５０】
これに必要なモジュール乗算について、図４ｂに基づいて詳述する。このタスクは、２進数「１１１」と「１０１」とを乗じることにある。この目的のために、この乗算は、コプロセッサにて、よく知られた「正統な数学（Ｓｃｈｕｌｍａｔｈｅｍａｔｉｋ）」にしたがって、２進数表記で、２つの数字の乗算から類推して実行される。先取りアルゴリズムおよびモジュール削減を用いない場合、表記が単純化されるので、以下、この場合について考察する。このアルゴリズムが実行されると、初めに、第１部分積「１１１」が生じる。次に、この部分積は、桁を１つ左へ移動されることによって、部分積の有意性を検討する。左へずれ、第１反復工程の中間結果として検討されてもよい第１部分積に対して、第２反復工程では、第２部分積「０００」が加算される。次に、この加算の結果によって、再び、桁が１つ左へずれる。このシフトされた加算結果が、更新された中間結果となる。そして、この更新された中間結果に対して、最後の部分積「１１１」が加算される。こうして、得られた結果が、乗算の最終的な結果となる。乗算が２つの加算およびシフト演算によって分配されることが理解される。
【００５１】
さらに、検討された乗数の桁が２進数の「１」である場合、被乗数Ｍは部分積であることがわかる。これに対して、検討された乗数の桁が２進数の「０」である場合、部分積は０である。さらに、各シフト演算によって、部分積の桁または有意性（Ｗｅｒｔｉｇｋｅｉｔｅｎ）が検討される。このことは、部分積をずらして記載した（ｖｅｒｓｅｔｚｔｅ Ａｕｆｔｒａｇｅｎ）図４ｂに示されている。ハードウェアに関しては、図４ｂに示す加算を行うために、２つのレジスタＺ１およびＺ２が必要である。第１部分積は、レジスタＺ１に格納された後、このレジスタにて、１ビットだけ左へシフトされてもよい。第２部分積は、レジスタＺ２に格納されてもよい。この中間合計は、再びレジスタＺ１に格納され、その後再び１ビットだけ左へシフトされてもよい。第３部分積は、再びレジスタＺ２に格納される。これにより、この最終結果は、レジスタＺ１中に見出されることになる。
【００５２】
図４ａは、図４ｂに示した方法の概略的フローチャートである。初めに、ステップＳ１０では、コプロセッサに存在するレジスタを初期化する。この初期化に続いて、ステップＳ１２では、３オペランドの加算を実行することによって、第１部分積を計算する。図４ｂに示す、モジュロ演算のない乗算を表す簡単な例では、図のＳ１２に示される式には、Ｚ、ａ１およびＰ１のみが含まれることになる。ａ１は、第１先取りパラメータであってもよい。最も簡単な実施では、検討される乗数Ｏの桁が１である場合、ａの値は「１」である。考察される乗数の桁がゼロである場合、ａはゼロである。
【００５３】
ブロックＳ１２に示した演算は、例えば１０２４ビット全てに並列して実行される。その後、第２部分積の最上位のビットが第１部分積の最上位のビットよりも１桁ずつ下位（ｎｉｅｄｒｉｇｅｒ）に配置されることを考慮するためのステップＳ１４では、最も簡単な場合、桁を１つだけ右へシフトする演算が実行される。乗数０の後続の複数のビットがゼロで表される場合、複数の桁を右へシフトさせる。最後に、ステップＳ１６にて、例えば図３に示す加算器連鎖を用いて、並列の３オペランドの加算が実行される。
【００５４】
この方法は、例えば１０２４の全ての部分積が加算されるまで続く。直列／並列とは、ブロックＳ１２またはＳ１６にて並列に実行し、直列に処理することによって、全ての部分積を互いに順々に組み合わせることを意味する。
【００５５】
次に、図５〜図７では、演算を或るサブ演算に分配させる方法に関するいくつかの例を示す。図５には、演算ｘｄ  ｍｏｄ  Ｎを示している。このモジュール指数を分解するために、指数ｄを２進数の表記法によって示す。これにより、上記モジュール指数は、図５に示すように、一連のモジュール乗算となる。このとき、図５に示すように、全てのモジュール演算が図１に示す暗号プロセッサによって、それぞれ並列に実行されるように、個々のモジュール演算は、１つずつコプロセッサに割り当てられる。そして得られた中間結果を並列に測定した後、該中間結果を乗じて、結果を得る。このとき、ＣＰＵ１０２は、各コプロセッサＣＰ１〜ＣＰｋの分配を制御し、次に、各中間結果の最終乗算を制御する。
【００５６】
図６に、演算（ａ＊ｂ）  ｍｏｄ  ｃを複数のモジュール演算に分配するための他の例を示す。ここでも、コプロセッサＣＰ１は、第１中間結果を検出してもよい。コプロセッサＣＰ２〜ＣＰｋは、同様に、中間結果を計算し、中間結果を得た後すぐに、ＣＰＵ１０２が中間結果の乗算を制御する。例えば、ＣＰＵは、加算（Ａｕｆｓｕｍｍａｔｉｏｎ）をとるための中間結果を得るコプロセッサを選択するように、加算を制御する。ここでも、演算が、互いに独立の複数のサブ演算に分配される。
【００５７】
１つまたはその他の演算をサブ演算に分配することに関して、多くの可能性が示唆される。図５および図６に示す例では、演算を複数のサブ演算に分配するための可能性が示されているだけであるが、達成可能な性能について好適な分配が存在する可能性がある。したがって、これらの例では、コプロセッサの性能ではなく、分配が存在していることが不可欠である。これによって、各コプロセッサは、独立したサブ演算を実行し、複数のサブ演算が中央処理ユニットによって制御される。その結果、できる限り隠された電流プロファイルをチップの電流入力部で獲得できるのである。
【図面の簡単な説明】
【図１】
本発明における、単一のチップ上に集積された暗号プロセッサを示す図である。
【図２】
ＣＰＵによって制御される、複数の独立コプロセッサのより詳細な図である。
【図３】
３オペランドの加算に適した算術ユニットのより詳細な図である。
【図４ａ】
直列／並列にモジュール乗算を実行するための概略的フローチャートである。
【図４ｂ】
乗算を例として用いて、算術ユニットの演算の直列／並列形態を示すための数値例を示す図である。
【図５】
モジュール指数を複数のモジュール乗算に分割するための一例を示す図である。
【図６】
モジュール乗算を様々なコプロセッサに振り分けるための他の例を示す図である。
【図７】
個別に供給された複数のモジュールを備えたコンピュータ回路基板を示す図である。
【符号の説明】
１００    チップ
１０１    バス
１０２    ＣＰＵ
１０４ａ  コプロセッサ
１０４ｂ  コプロセッサ
１０４ｃ  コプロセッサ
１０６    算術ユニットＡＵ１
１０６ｂ  レジスタ
１０６ｃ  レジスタ
１０６ｄ  レジスタ
１０６ｅ  制御ユニット
１０８    計算サブユニット２
１１４    入力インターフェース
１１６    出力インターフェース
１１８    ＲＡＭ
１２０    クロック発生器
１２２    電流供給端子
２００    順序変更装置
２０２    ダミー計算制御装置
８００    コンピュータ回路基板
８０２    ＣＰＵ
８０４    ＲＡＭ
８０６    第１コプロセッサ
８０８    第２コプロセッサ
８１０    第３コプロセッサ
８１２    バス
８１４    メモリー１
８１６    メモリー２
８１８    メモリー３
Ｉ１−Ｉ８    電流供給端子
【図１】
2004516706.tif 000003
【図２】
2004516706.tif 000004
【図３】
2004516706.tif 000005
【図４ａ】
2004516706.tif 000006
【図４ｂ】
2004516706.tif 000007
【図７】
2004516706.tif 000008
【国際公開パンフレット】
2004516706.tif 000009
2004516706.tif 000010
2004516706.tif 000011
2004516706.tif 000012
2004516706.tif 000013
2004516706.tif 000014
2004516706.tif 000015
2004516706.tif 000016
2004516706.tif 000017
2004516706.tif 000018
2004516706.tif 000019
2004516706.tif 000020
2004516706.tif 000021
2004516706.tif 000022
2004516706.tif 000023
2004516706.tif 000024
2004516706.tif 000025
2004516706.tif 000026
2004516706.tif 000027
2004516706.tif 000028
2004516706.tif 000029
2004516706.tif 000030
2004516706.tif 000031
2004516706.tif 000032
2004516706.tif 000033
2004516706.tif 000034
2004516706.tif 000035
2004516706.tif 000036
2004516706.tif 000037
2004516706.tif 000038
2004516706.tif 000039
2004516706.tif 000040
2004516706.tif 000041
2004516706.tif 000042
2004516706.tif 000043
2004516706.tif 000044
【国際公開パンフレット（コレクトバージョン）】
2004516706.tif 000045
2004516706.tif 000046
【手続補正書】
【提出日】平成14年11月12日(2002.11.12)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
暗号アプリケーション用の演算を行うための暗号プロセッサであって、
複数のコプロセッサ（１０４ａ，１０４ｂ，１０４ｃ）と、該複数のコプロセッサを駆動するための中央処理装置（１０２）と、各コプロセッサを中央処理ユニットに接続するためのバス（１０１）とを備え、
上記複数のコプロセッサ（１０４ａ，１０４ｂ，１０４ｃ）は、制御ユニット（１０６ｅ，１０８ｅ）と、算術ユニット（１０６ａ，１０８ａ）と、各コプロセッサの上記算術ユニット（１０６ａ，１０８ａ）に独占的に割り当てられている複数のレジスタ（１０６ｂ，１０６ｃ，１０６ｄ，１０８ｂ，１０８ｃ，１０８ｄ）とを備えるとともに、各算術ユニット（１０６ａ，１０８ｂ）の数値幅によって規定されているワード長を有し、
上記中央処理装置（１０２）は、コプロセッサに独占的に割り当てられているレジスタを相互連結する方式で、相互連結されたコプロセッサが相互連結されたコプロセッサの数値幅の合計と等しいワード長の数を用いた計算を行うように、少なくとも２つのコプロセッサを連結するために設けられ、
上記中央処理ユニット、複数のコプロセッサ、バスは、単一のチップ（１００）に集積されるとともに、該チップは、複数のコプロセッサに供給するための共通の電流供給端子（１２２）を備えている、暗号プロセッサ。
【請求項２】
暗号プロセッサが、複数の暗号アルゴリズムのためのハードウェアとして設計されるように、複数のコプロセッサの個々のコプロセッサ（１０４ａ，１０４ｂ，１０４ｃ）は、該コプロセッサの暗号アルゴリズムのタイプに合わせて備えられている、請求項１に記載の暗号プロセッサ。
【請求項３】
上記複数のコプロセッサは、並列に接続されているコプロセッサの個々のグループを備えているとともに、複数の暗号アルゴリズムに適するように、コプロセッサの各グループは、該コプロセッサの暗号アルゴリズムのタイプに合わせて備えられている、請求項１に記載の暗号プロセッサ。
【請求項４】
上記暗号アルゴリズムのタイプは、ＤＥＳアルゴリズム、対称暗号化処理のためのＡＥＳアルゴリズム、非対称暗号化処理のためのＲＳＡアルゴリズム、および、ハッシュ値を計算するためのハッシュアルゴリズムを含んでなるグループから選択される、請求項２または３に記載の暗号プロセッサ。
【請求項５】
暗号演算は、複数のサブ演算に分解できるとともに、上記中央処理装置は、複数のサブ演算を、上記複数のコプロセッサの個々のコプロセッサ（１０４ａ，１０４ｂ，１０４ｃ）に割り振るために設けられている、請求項１〜４のいずれか１項に記載の暗号プロセッサ。
【請求項６】
暗号プロセッサがハードウェアとして実施可能な異なる数学的演算の数が、少なくともコプロセッサの数以上となるように、上記コプロセッサは、相互に異なっている、請求項１〜５のいずれか１項に記載の暗号プロセッサ。
【請求項７】
暗号アプリケーション用の演算は、モジュール指数および／またはモジュール乗算および／またはモジュール加算／減算を有している、請求項１〜６のいずれか１項に記載の暗号プロセッサ。
【請求項８】
各コプロセッサは、少なくとも１６０桁であり、好ましくは少なくとも１０２４桁または２０４８桁である２進数を処理するように設けられている、請求項１〜７のいずれか１項に記載の暗号プロセッサ。
【請求項９】
さらに、上記中央処理装置（１０２）のみに連結されているメモリー（１１８）を備えている、請求項１〜８のいずれか１項に記載の暗号プロセッサ。
【請求項１０】
上記処理装置（１０２）および複数のコプロセッサに対して、クロックを供給するためのクロック発生装置（１２０）を備え、該クロック発生装置も上記単一のチップに集積されている、請求項１〜９のいずれか１項に記載の暗号プロセッサ。
【請求項１１】
上記コプロセッサによって、それぞれにて異なる長さの数を用いた算術計算が実行されるように、或るコプロセッサに割り当てられている複数のレジスタの長さ（Ｌ１・Ｌ２）と、他のコプロセッサに組み込まれている複数のレジスタの長さとが異なっている、請求項１に記載のプロセッサ。
【請求項１２】
コプロセッサに組み込まれているレジスタの数は、少なくとも２つのサブ演算が、コプロセッサ（１０４ａ、１０４ｂ、１０４ｃ）と中央処理装置（１０２）との間のオペランドの伝送を必要としないように、少なくとも２つのサブ演算のためのオペランドを十分に確保する数である、請求項１または１１に記載の暗号プロセッサ。
【請求項１３】
上記中央処理ユニット（１０２）は、上記少なくとも２つのサブ演算およびコプロセッサのレジスタに格納されている演算の順序を設定することができるように、コプロセッサの演算を時間的に制御する装置（２００）をさらに備えている、請求項１２に記載の暗号プロセッサ。
【請求項１４】
電流消費を低減するべく、中央処理装置によって上記コプロセッサのためのサブ演算が存在しないように決定されている場合に、コプロセッサをオフ状態にする装置をさらに備えていることを特徴とする、請求項１に記載の暗号プロセッサ。
【請求項１５】
上記中央処理装置（１０２）は、
少なくとも２つのコプロセッサを連結して１つのクラスタとし、
サブ演算をクラスタに割り当てることで、サブ演算をクラスタのコプロセッサに共同で実行させるように設定されている、請求項１〜１４のいずれか１項に記載の暗号プロセッサ。
【請求項１６】
各コプロセッサは、上記算術ユニット（１０６ａ、１０８ａ）の数値幅によって規定されるワード長を有し、かつ、上記中央処理ユニット（１０２）は、相互連結されたコプロセッサが、相互連結されたコプロセッサの数値幅の合計と等しいワード長の数を用いた計算を行う方式で、少なくとも２つのコプロセッサを相互に連結するように設けられている、請求項１〜１５のいずれか１項に記載の暗号プロセッサ。
【請求項１７】
コプロセッサは、上記サイクルにて、以前のサイクルの１つの結果に部分積を加算し、さらなるサイクルにて、最後のサイクルの結果を次の部分積に加算するように、モジュール乗算を実行する、請求項１６に記載の暗号プロセッサ。
【請求項１８】
上記算術ユニットは、モジュール乗算用の３オペランドの加算器を備え、
該３オペランドの加算器は、処理された数の各桁用に、３つの入力部および２つの出力部を有するとともに、桁上げすることなく加算するための半加算器と、２つの入力部と１つの出力部とを有する下流側の全加算器とを備えている、請求項１７に記載の暗号プロセッサ。
【請求項１９】
上記中央処理ユニット（１０２）は、ダミー計算を実行するために、暗号コプロセッサを駆動するための装置を備えている、請求項１〜１８のいずれか１項に記載の暗号プロセッサ。
【請求項２０】
ダミー計算を制御するための上記装置（２０２）は、ダミー計算を実行する暗号プロセッサをランダムに選択するために備えられている、請求項１６に記載の暗号プロセッサ。
【国際調査報告】
2004516706.tif 000047
2004516706.tif 000048
2004516706.tif 000049
2004516706.tif 000050
2004516706.tif 000051
2004516706.tif 000052