(57)【要約】本発明は、乗算先見方法を乗算桁送り値を計算するために使用し、換算先見方法を換算桁送り値を計算するために使用する係数乗算法に関するものである。上記方法では、係数が、係数よりも大きな変換された係数にまず変換される（１０）。変換された係数の所定の部分は、所定の第１値を有する上位の順位を有している。このより上位の順位に、所定の第２値を有するより低位の順位が続く。乗算先見方法と換算先見方法とを用いる係数乗算の反復方法（１２）の間に、変換された係数が、反復の最後に係数変換のための変換された結果を得るために使用される。最後に、変換された結果は、元々の係数を用いた係数換算により逆変換される（１４）。本発明にかかる変換によれば、係数乗算法の反復が簡単になることで、係数乗算は速く実行される。
2004519017.tif 000002
【特許請求の範囲】
【請求項１】
係数（Ｎ）を使用するとともに乗算先見方法と換算先見方法とを用いて被乗数（Ｃ）を乗数（Ｍ）により係数乗算するための方法であって、
変換された係数の所定の分数（２／３）が、所定の第１値を有する上位の順位を有し、所定の第２値を有している少なくとも１つの低位の順位が該上位の順位に続くように、上記係数（Ｎ）を上記係数（Ｎ）よりも大きい変換された係数（ＮＴ）へ変換する工程（１０）と、
反復の最後に係数乗算のための変換された結果を得るために、上記乗算先見方法、上記換算先見方法、および上記変換された係数（ＮＴ）を使用して係数乗算の反復処理をする工程（１２）と、
上記係数（Ｎ）を用い、変換された結果の係数換算により、変換された結果を逆変換する工程（１４）とを有する方法。
【請求項２】
上記反復処理（１２）の工程において、多数の反復工程が実施され、この際、上記反復工程において、乗算中間結果および換算桁送り値（ｓＮ）が求め得られ、この際、上記換算桁送り値（ｓＮ）は、上記変換された係数（ＮＴ）の上記所定の第１値を有する上位の順位と、該所定の第１値を有する中間結果（Ｚ）の最上位の順位との間の順位数（ｓｉ）を決定することにより計算される、請求項１に記載の方法。
【請求項３】
上記乗算桁送り値（ｓｚ）が、上記乗算先見方法において求め得られ、上記換算先見方法のための上記換算桁送り値（ｓＮ）が、上記順位の特定の数（ｓｉ）を上記乗算桁送り値（ｓｚ）から減算することにより計算される、請求項２に記載の方法。
【請求項４】
上記反復処理の工程が、以下の工程を備え、
第１反復工程において、
（ａ）乗算桁送り値（ｓｚ）を得るために、乗算先見方法を実施し、
（ｂ）桁送りされた中間結果（Ｚ’）を得るために、上記乗算桁送り値が累乗されている基数に、実際の中間結果（Ｚ）を乗算し、
（ｃ）変換された係数（ＮＴ）の所定の分数の所定の第１値を有する上位の順位と、上記所定の第１値を有する上記中間結果の最上位の順位との間の順位数と同じである補助桁送り値（ｓｉ）を決定すること、および、上記補助桁送り値と上記乗算桁送り値（ｓｚ）とを用いて上記換算桁送り値を計算することにより、換算桁送り値（ｓＮ）を得るために換算先見方法を実施し、
（ｄ）桁送りされ変換された係数（ＮＴ’）を得るために、上記変換された係数（ＮＴ）に、上記換算桁送り値が累乗されている基数を乗算し、
（ｅ）更新された中間結果（Ｚ）を得るために、上記中間結果（Ｚ’）と上記被乗数（Ｃ）とを加算し、桁送りされ変換された係数（ＮＴ’）を減算する、上記いずれかに記載の方法。
【請求項５】
上記係数の所定の分数が２／３である、上記いずれかに記載の方法。
【請求項６】
上記被乗数（Ｃ）、上記乗数（Ｍ）および上記係数（Ｎ）が、基数が２である２進数であり、上記変換された係数（ＮＴ）の所定の分数の上位の順位は１の所定の第１値を有し、少なくとも１つの低位の順位は０の所定の第２値を有している、請求項５に記載の方法。
【請求項７】
上記変換された係数の最上位ビットが、指示ビットであり、上記係数の所定の分数の上位の部分が、
０１０００ｘｘ．．．ｘｘ
であり、この際、ｘｘで示すビットは任意の値を有していてもよい、請求項６に記載の方法。
【請求項８】
上記変換された係数（ＮＴ）の上位の部分が、
０１１００．．．００
である、請求項７に記載の方法。
【請求項９】
上記係数を変換（１０）する工程において、上記係数の無作為化が行われ、その結果、変換された係数は無作為化されている、請求項１ないし８のいずれかに記載の方法。
【請求項１０】
係数（Ｎ）を使用し、乗算先見方法と換算先見方法とを用い、被乗数（Ｃ）を乗数（Ｍ）によって係数乗算するためのプロセッサーであって、
変換された係数の所定の分数が、所定の第１値を有する上位の順位を有し、この上位の順位に、所定の第２値を有している少なくとも１つの低位の順位が続くように、係数（Ｎ）を係数（Ｎ）よりも大きな変換された係数（ＮＴ）へ変換するための手段（１０）と、
反復の最後に係数乗算のための変換結果を得るために、上記変換された係数（ＮＴ）を使用するとともに乗算先見方法と換算先見方法とを用いて係数乗算法の反復処理（１２）を行うための手段と、
上記係数（Ｎ）の使用して、変換された結果の係数換算により、変換された結果を逆変換（１４）するための手段とを有するプロセッサー。
【請求項１１】
ホストＣＰＵおよびコプロセッサーを備え、この際、係数の変換のための上記手段（１０）がホストＣＰＵに配置されており、この際、係数乗算の反復処理を行うための上記手段（１２）が、コプロセッサーに配置されている、請求項１０に記載のプロセッサー。
【請求項１２】
上記ホストＣＰＵが、６４よりも小さい、あるいは６４と等しい順位数を有する短い数の演算装置を備え、上記コプロセッサーが、５１２よりも大きい、あるいは５１２と等しい順位数を有する長い数の演算装置を備えている、請求項１１に記載のプロセッサー。
【請求項１３】
係数乗算の反復処理を行うための上記手段が、変換された係数のための記録器と、係数乗算の中間結果のための記録器とを備えている、請求項１０ないし１２のいずれかに記載のプロセッサー。
【発明の詳細な説明】
本発明は、暗号法アルゴリズム、ならびに、このような暗号法アルゴリズムを実施するための装置、そして、特に、乗算先見方法（Ｍｕｌｔｉｐｌｉｋａｔｉｏｎｓ−Ｖｏｒａｕｓｓｃｈａｕ−Ｖｅｒｆａｈｒｅｎ）、および、換算先見方法（Ｒｅｄｕｋｔｉｏｎｓ−Ｖｏｒａｕｓｓｃｈａｕ−Ｖｅｒｆａｈｒｅｎ）を用いた係数乗算（ｍｏｄｕｌａｒｅｎ Ｍｕｌｔｉｐｌｉｚｉｅｒｅｎ）のための方法と装置に関するものである。
【０００１】
暗号法は、係数計算のための主な使用の１つである。暗号法のための主なアルゴリズムは、既知のＲＳＡアルゴリズムである。ＲＳＡアルゴリズムは、係数累乗法を基に構成されている。この累乗法は、以下のように示せる：
Ｃ＝Ｍｄｍｏｄ（Ｎ）
この際、Ｃは、符号化された情報、Ｍは、符号化されていない情報、ｄは、秘密鍵、Ｎは、係数である。通常、係数Ｎは、２つの素数ｐとｑとの乗算によって生成される。係数累乗法は、既知の平方および乗法アルゴリズム（Ｓｑｕａｒｅ−ａｎｄ−Ｍｕｌｔｉｐｌｙ−Ａｌｇｏｒｉｔｈｍｕｓ）によって、乗法に分解される。さらに、べき指数ｄは、２の累乗に分解される。その結果、係数累乗法を、複数の係数乗算に分解できる。それゆえ、係数累乗法を、計算によって効果的に実施できるように、係数累乗法は、係数加算法に分解可能な係数乗算に分解される。
【０００２】
ドイツ特許２次公報第３６３１９９２号（ＤＥ３６３１９９２Ｃ２）に、乗算先見方法および換算先見方法を用いて、係数乗算を速く行う暗号方法が開示されている。ドイツ特許２次公報第３６３１９９２号（ＤＥ３６３１９９２Ｃ２）に記載されている方法は、ＺＤＮ方法とも称され、図９を参照して詳しく説明する。アルゴリズムの開始工程９００の後、広域変数Ｍ，Ｃ，およびＮが初期化される。目的は、以下の係数乗算を計算することである：
【０００３】
【数１】
2004519017.tif 000003
【０００４】
Ｍは、乗数を示し、一方、Ｃは、被乗数を示している。Ｚは、係数乗算の結果であり、一方、Ｎは、係数である。
【０００５】
次に、さしあたり詳しく説明する必要のない様々な局所変数が初期化される。続いて、２つの先見方法が使用される。乗算先見方法ＧＥＮ−ＭＵＬＴ−ＬＡでは、様々な先見規則を用いて、乗算桁送り値ｓｚおよび乗算先見パラメータａが計算される（９１０）。次に、Ｚ記録器の現在の内容が、ｓｚ順位だけ左桁送りされる（９２０）。
【０００６】
これとほぼ並行して、換算桁送り値ＳＮおよび換算パラメータｂを計算するために、換算先見方法ＧＥＮ−Ｍｏｄ−ＬＡ（９３０）が実施される。次に、工程９４０では、桁送りされた係数値Ｎ′を生成するために、係数記録器の内容、つまり、Ｎの現在の内容が、ｓＮ順位だけ左もしくは右に桁送りされる。ＺＤＮ方法の中央３演算数操作を、工程９５０に示す。この際、工程９２０の後、乗算先見パラメータａが乗算された被乗数Ｃと、換算先見パラメータｂが乗算され桁送りされた係数Ｎ’とに、中間結果Ｚ’が加算される。実際の状態に応じて、先見パラメータａおよびｂは、＋１、０、または−１の値を有していてもよい。
【０００７】
乗算先見パラメータａが、＋１であり、換算先見パラメータｂが、−１であるのが典型的な場合である。その結果、被乗数Ｃが桁送りされた中間結果Ｚ’に加算され、桁送りされた係数Ｎ’が桁送りされた中間結果Ｚ’から減算される。乗算先見方法が初期設定されている個々の左桁送り数よりも多くを許容するとしたら、すなわち、ｓｚがｋとしても記載されるｓｚの最大許容値よりも大きい場合、ａは値０を有するようになる。ａが０であり、先行する係数換算法、すなわち、桁送りされた係数の先行する減算のせいで、Ｚ’がまだ非常に小さい、特に、桁送りされた係数Ｎ’よりも小さい場合、換算法を行う必要はない。その結果、パラメータｂは０である。
【０００８】
工程９１０から９５０は、被乗数の全ての順位が処理されるまで、すなわち、ｍは０であり、１つのパラメータｎも０であるまでずっと実施される。このパラメータは、桁送りされた係数Ｎ’が、まだ元々の係数Ｎよりも大きいか、それとも被乗数の全ての順位が既に処理されているという事実にもかかわらず、Ｚから係数を減算することにより、まださらなる換算工程を行われなければならないかを示している。
【０００９】
最後に、Ｚが０よりも小さいかどうかさらに決定される。その場合には、最後の換算法が達成されるように、係数ＮがＺに加算されなければならない。このことにより、最後に係数乗算の正確な結果Ｚが得られる。工程９６０において、ＺＤＮ方法を用いる係数乗算が終了される。
【００１０】
工程９１０において乗算先見アルゴリズムによって計算される乗算桁送り値ｓｚおよび乗算パラメータａは、乗数の位相数学（Ｔｏｐｏｌｏｇｉｅ）および先見規則（Ｖｏｒａｕｓｓｃｈａｕ−Ｒｅｇｅｌｎ）によって生じ、この先見規則はドイツ特許２次公報第３６３１９９２号（ＤＥ３６３１９９２Ｃ２）に記載されている。
【００１１】
換算桁送り値ｓＮおよび換算パラメータｂは、同じくドイツ特許２次公報第３６３１９９２号（ＤＥ３６３１９９２Ｃ２）に記載のように、Ｚ記録器の現在の内容を、値２／３×Ｎと比較することにより決定される。この比較により、ＺＤＮ方法は、その名称を有している（ＺＤＮ＝Ｎの三分の二（Ｚｗｅｉ Ｄｒｉｔｔｅｌ Ｎ））。
【００１２】
図９に記載のようなＺＤＮ方法は、係数乗算を３演算数加算（図９のブロック９５０）に戻す。この際、演算時間効率を上昇させるため、乗算先見方法および換算先見方法も共に使用される。従って、モンゴメリー換算法（Ｍｏｎｔｇｏｍｅｒｙ−Ｒｅｄｕｋｔｉｏｎ）と比較して、有利な演算時間（Ｒｅｃｈｅｎｚｅｉｔｖｏｒｔｅｉｌ）が達成される。
【００１３】
以下に、図１０を基に、換算先見方法について詳しく説明する。この方法は、図９のブロック９３０で行われているものである。まず、ブロック１０００に局所変数、すなわち、換算先見パラメータｂおよび換算桁送り値ｓＮのための予約が行われる。ブロック１０１０では、換算桁送り値ｓＮがゼロに初期化される。次に、ブロック１０２０では、値ＺＤＮが計算される。この値ＺＤＮは２／３の係数Ｎに等しい。ブロック１０２０において決定される値は、独自の記録器、暗号法処理機のＺＤＮ記録器に格納される。
【００１４】
次に、ブロック１０３０では、変数ｎが０であるかどうか、あるいは、桁送り値ｓＮが−ｋであるかどうかが決定される。ｋは、ハードウエアによって予め与えられている最大桁送り値を定義する値である。ブロック１０３０は、第１経路（ｅｒｓｔｅｎ Ｄｕｒｃｈｇａｎｇ）において「いいえ」を応答する。その結果、ブロック１０４０では、パラメータｎが減少される。また、ブロック１０６０では、換算桁送り値も１だけ減少される。そしてブロック１０８０では、変数ＺＤＮが新規に、つまり、変数ＺＤＮの半分の値が割付られる。このことは、ＺＤＮ記録器にある値の右桁送りにより簡単に得られる。次に、ブロック１１００において現在の中間結果の絶対値がＺＤＮ記録器にある値よりも大きいかどうかが決定される。
【００１５】
ブロック１１００での比較操作は、換算先見方法の中央操作である。問い合わせに対し「はい」が応答されると、反復は終了し、換算先見パラメータｂは、ブロック１１２０において記載されたように割り付けられる。これに対し、ブロック１１００において応答される問い合わせに対して、「いいえ」が応答されると、ブロック１０３０におけるｎおよびｓＮの現在の値を調査するために、反復が再び始まる（ｚｕｒｕｅｃｋｇｅｓｐｒｕｎｇｅｎ）。ブロック１０３０が、反復のいつかの時点で「はい」によって応答されると、ブロック１１４０へと進む（ｇｅｓｐｒｕｎｇｅｎ）。このブロック１１４０において、換算パラメータｂがゼロに設定される。このことは、図９のブロック９５０に記載の３演算数操作では係数が加算も減算もされないことに繋がる。このことは、中間結果Ｚが大変小さかったので、係数換算法は必要なかったということを意味している。次に、ブロック１１６０では変数ｎが新規に割付られる。この際、次にブロック１１８０において最後に換算桁送り値ｓＮが計算される。この値は、図９のブロック９４０において、桁送りされた係数を得るために、係数の左桁送りを行うのに必要である。
【００１６】
最後に、ブロック１２００，１２２０，１２４０では、記録超過（Ｒｅｇｉｓｔｅｒｕｅｂｅｒｓｃｈｒｅｉｔｕｎｇｅｎ）が生じていないことを確実にするために、Ｎ記録器の現在の割付を調査するのに、さらなる変数ＭＡＸおよびｃｕｒ−ｋを考慮しながら、ｎおよびｋの現在の値が調査される。詳しい内容は、本発明には関係がないが、ドイツ特許２次公報第３６３１９９２号（ＤＥ３６３１９９２Ｃ２）に詳しく記載されている。
【００１７】
図９および図１０に記載のアルゴリズムは、図７に示すようなハードウエアとして実施されている。ブロック９５０に実施されている３演算数操作のためには、図７にＡＵで示す計算装置７００が必要である。この計算装置が、被乗数用の記録器Ｃ７１０、係数用の記録器Ｎ７２０、および、係数乗算の現在の中間結果用の記録器Ｚ７３０に連結されている。さらに、図７から、３演算数操作の結果が逆連結矢印７４０を介して再びＺ記録器７３０に供給されることが分かる。さらに、図７から、記録器が相互に接続されていることが分かる。図１０のブロック１０２０において計算される値ＺＤＮは、独自のＺＤＮ記録器７５０に格納されなければならない。ＺＤＮ比較、もしくは図１０に記載の反復ループは、さらに、ＺＤＮ比較のための独自の制御論理７６０によって順序制御される。
【００１８】
従って、Ｚ：＝ＭｘＣｍｏｄＮの計算のためのＺＤＮアルゴリズムの主な作用は、以下の両方の操作から構成されている：
１．以下の方程式：
２／３Ｎ×２−ｓｉ＜｜Ｚ｜≦４／３Ｎ×２−ｓｉ
が満たされる、記録器ＺおよびＮ用の桁送り値ｓｚおよびｓｉの計算、および
２．３演算数合計の計算：
Ｚ：＝２ｓＺＺ＋ａＣ＋ｂ×２ｓｚ−ｓｉＮ
乗算先見パラメータａおよび換算先見パラメータｂは、知られているとおり、−１、０および＋１の値であってもよい。
【００１９】
中間結果Ｚ，被乗数Ｃおよび係数Ｎは、長い数、すなわち完全に５１２よりも大きな順位またはビット数でもよい。この際、この数は２０４８に達する順位を有していてもよい。
【００２０】
しかし、ブロック１１００において行われる実際の中間結果Ｚと値ＺＤＮとの比較は、演算時間の理由からＺの全てのビットによって行われるのではなく、多数のＺの最上位ビットによってのみ行われる。この際、比較結果のために非常に高い精度を得るには、３２ビットの数で十分であることが判明した。
【００２１】
この比較に必要な２／３Ｎの３２個の最上位ビットのためには、参照番号７５０によって図７に示すように、ＺＤＮ記録器と称される独自の記録器が必要である。
【００２２】
さらに、独自のハードウエア比較機が必要である。このハードウエア比較機は、Ｚ記録器における実際の値と、ＺＤＮ記録器における実際の値とのために、以下の方程式が満たされるように正しいｓｉ値を計算する：
２／３  ２−ｓｉＮ＜｜Ｚ｜≦４／３  ２−ｓｉＮ
従って、この方法において不都合なのは、一方では、付加的なＺＤＮ記録器とハードウエア比較機との双方が、余分に集積回路領域を必要とすることである。他方では、図１０に示す反復ループによって行われる２／３Ｎの計算とＺＤＮアルゴリズムにおける補助桁送り値ｓｉの計算とは、全てのアルゴリズムのために臨界的な時間があり、アルゴリズムの全ての演算時間のために完全に決定的であってもよい。
【００２３】
本発明の目的は、係数乗算のための改善された構想を提供することであり、この構想は、一方では面積を節約して実施することができ、他方では必要とする演算時間が短いものである。
【００２４】
本目的は、特許請求項１に記載の係数乗算のための方法、または、特許請求項１４に記載の係数乗算のための装置によって達成される。
【００２５】
本発明は、係数Ｎが、変換された係数ＮＴにまず変換され、全ての係数乗算が、実際の係数の変わりに変換された係数ＮＴによって実施される場合には、更新された中間結果と、値ＺＤＮと、すなわち係数Ｎの２／３倍との演算時間の比較を簡単にできるという認識に基づいている。本発明に基づき、係数は、変換された係数の所定の分数、すなわち、好ましい実施例では、変換された係数の２／３倍が、特定の数となるように変換される。この特定の数は、２／３ＮＴと中間結果Ｚとの比較が些細（ｔｒｉｖｉａｌ）なるように選択される。本発明に基づけば、変換された係数の所定の分数が所定の第１値を有する上位の順位を有し、この順位に所定の第２値を有している少なくとも１つの低位の順位が続くように変換が行われる。２進法表示（ｂｉｎａｅｒｅｒ Ｄａｒｓｔｅｌｌｕｎｇ）と、最上位のビットが符号を示している２の補集合規約（Ｚｗｅｉｅｒ−Ｋｏｍｐｌｅｍｅｎｔ−Ｋｏｎｖｅｎｔｉｏｎ）とにおいて、２／３ＮＴの第２最上位ビットが２進法で１であり、一方、第３の最上位ビットおよびさらに他の低位ビットがゼロであるように、変換された係数へと変換される。
【００２６】
この場合、桁送り値ｓｉを得るために数えなければならないのは、変換された係数の所定の分数の最上位の１と、係数乗算の実際の中間結果Ｚとの間の順位数のみであるので、比較は些細である。そして、ＺＤＮ比較によって得られるいわゆる補助桁送り値ｓｉが、並行して行われている乗算先見方法の乗算先見値から減算されることにより、桁送り値ｓｉから換算桁送り値ｓＮを簡単に査定することができる。
【００２７】
全てのＺＤＮ方法は、従来技術と同じく処理される。しかしここでは係数Ｎの代わりに変換された係数ＮＴが使用される。その結果、係数乗算の「変換結果」が最後に獲得される。この変換結果は、変換された係数ＮＴの余剰群（Ｒｅｓｔｋｌａｓｓｅ）にある。最後の逆変換は、係数乗算の変換結果が、もともとの係数Ｎを用いて係数減少されることである。従って、係数Ｎを用いて被乗数Ｃにより乗数Ｍを係数乗算した実際の結果が提供される。
【００２８】
本発明の好ましい実施例を以下に、添付の図を参照しながら詳しく説明する。図１は、係数乗算のための本発明の構想のフローチャートを示す。図２は、係数Ｎの、ビットの第１部分ＮＴ、および、ビットの第２部分ＮＲへの分解を示す。図３は、変換された係数ＮＴの、長さＬ（ＮＴ）を有する順位の第１部分、および、残留順位（ｖｅｒｂｌｅｉｂｅｎｄｅｎ Ｓｔｅｌｌｅｎ）への分解を示す。図４は、変換された係数ＮＴの２／３倍の順位の表示を示す。図５は、無作為化により変換された係数の順位の概略的な表示を示す。図６は、本発明に基づく係数乗算を実施するのための演算装置の概略的な表示を示す。図７は、公知のＺＤＮ方法のための演算装置の概略的な表示を示す。図８ａから８ｃは、乗算桁送り値ｓｚと、補助桁送り値ｓｉと、換算桁送り値ｓＮとの間の関係を概略的に表示する図である。図９は、既知のＺＤＮ方法のフローチャートを示す。図１０は、既知の換算先見方法のフローチャートを示す。
【００２９】
図１は、係数Ｎを用いる、乗数Ｍによる被乗数Ｃの係数乗算のための本発明の方法のフローチャートを示す。まず、工程１０において、係数Ｎが、以下の方程式：
ＮＴ＝Ｔ×Ｎ
に基づいて、変換された係数ＮＴに変換される。
【００３０】
次に、工程１２において、係数乗算は、変換された係数ＮＴと変換された係数の所定の分数とを用いて処理される。本実施例では、この所定の分数が、２／３であることが好ましい。係数乗累法に関連し、このことは、以下の形状のＲＳＡ方程式が計算されることを意味している：
ＣＴ：＝ＭｄｍｏｄＮＴ
つまり、係数累乗法Ｃの結果は、係数Ｎによって定義される余剰群においてではなく、変換された係数ＮＴによって定義される余剰群において計算される。従って、上記方程式の左側には、ＣではなくＣＴがある。本発明の構想は、変換された係数ＮＴを使用することにより、補助換算桁送り値ｓｉが、非常に簡易化されることが特徴である。この補助換算桁送り値ｓｉは、既知の換算先見方法の、図１０の反復ループに相当している。
【００３１】
次に、最後の工程１４では、以下の方程式に相当する操作が行われることによってＮＴからＮへの逆変換が再び行われる：
Ｃ：＝ＣＴｍｏｄＮ
この際、変換された係数ＮＴの余剰群にある変換された結果ＣＴは、簡単な桁送り／減算換算法（Ｖｅｒｓｃｈｉｅｂｕｎｇｓ／Ｓｕｂｔｒａｋｔｉｏｎｓ−Ｒｅｄｕｋｔｉｏｎ）によって、係数Ｎの余剰群にフィードバックされることが好ましい。その結果、Ｃは係数乗累法の結果である。
【００３２】
係数Ｎの変換された係数ＮＴへの変換は、変換された係数の所定の分数、すなわち、好ましい実施例では、変換された係数の２／３倍が、所定の第１値を有するより上位の順位を有し、このより上位の順位に所定の第２値を有している少なくとも１つの低位の順位が続くように、工程１０の変換機Ｔを用いて行われる。従って、つまり、同じく所定の第１値を有するＺの一番上の順位が捜査され、変換された係数の所定の分数の、所定の第１値を有する上位の順位と、所定の第１値を有する中間結果Ｚの一番上の順位との間の差が差ｓｉと同じであることにより、中間結果Ｚと変換された係数の２／３倍との比較を、非常に簡単にできる。
【００３３】
要するに、このことは、以下のように示される。Ｎは、暗号法コプロセッサー（Ｋｒｙｐｔｏ−Ｃｏｐｒｏｚｅｓｓｏｒ）においてではなく、３２ビットＣＰＵにおいて変換された係数ＮＴに変換されることが好ましく、その結果：
ＮＴ：＝Ｔ×Ｎ
が適用する。このときＴは自然数である。
【００３４】
使用される全ての数が２進数の場合、ＮＴのために、以下の形が生じる：
ＮＴ＝１１００．．．０  ＸＸ．．．ＸＸ
従って、変換された係数の２／３倍のために、以下の値が生じる：
２／３ＮＴ＝１００．．．０  Ｘ′Ｘ′．．．Ｘ′Ｘ′
ＮＴと２／３ＮＴとから、両方とも、例えば１６ビットの第１部分を有し、そして、Ｌ（Ｎ）ビットのＸもしくはＸ′の部分を有していることが分かる。いわゆるＺＤＮ比較のために、変換された係数ＮＴの２／３倍の一番上の１６ビットだけが呼び出される。なぜなら、このとき既に、約２−１０よりも良い誤り率が生じるからである。従って、変換された係数の２／３倍の全ての５１２ビット、１０２４ビットまたは２０４８ビットを、ＺＤＮ比較のために呼び出す必要はなく、変換された係数の一番上の１６ビットと比較されれば十分である。当然、２／３ＮＴのより少ないビットも、比較のためにさらに呼び出されてもよい。しかし、そうすると、誤り率が次第に上昇する。しかし、誤りは、危険ではなく非臨界的であり、換算先見方法の副最適率（ｓｕｂｏｐｔｉｍａｌｅｎ Ｖｅｒｈａｌｔｅｎ）に繋がるだけなので、この方法を簡単に行える。
【００３５】
従って、変換された係数ＮＴの２／３倍は、値１を有する上位の順位を有しており、この順位に値０、すなわち、所定の第２値を有する少なくとも１つの低位の順位が続く。既に記載された実施例の場合、低位の順位数は１５である。当然、ここでも、中間結果Ｚと変換された係数ＮＴの２／３倍との間にどのような大きな差を期待、もしくは処理しなければならないかに応じて、より大きな、またはより小さな数も考慮できる。係数乗算の中間結果Ｚの量、つまり、図９のブロック９５０における３演算数加算の結果の量は、以下の形を生じる：
｜Ｚ｜＝００．．．０１ＹＹ．．．Ｙ
補助桁送り値ｓｉは、以下の方程式に基づき計算される：
２／３ＮＴ×２−ｓｉ＜｜Ｚ｜≦４／３ＮＴ×２−ｓｉ
変換された係数ＮＴの２／３倍の位相数学に基づいて、値ｓｉは常に変換された係数ＮＴの２／３倍の、１を有する最上位ビットと中間結果の量の最上位１との間の間隔である。
【００３６】
本発明に基づき、順位の差もしくは値ｓｉは、些細に求め得られる。反復は、もはや必要ない。
【００３７】
そのうえ、係数の２／３倍を格納するために、ＺＤＮ記録器はもはや必要ない。なぜなら、定義により、変換された係数ＮＴの２／３倍の上側の、例えば、少なくとも１６ビットが常に同じ形だからである。ビット比較機はもはや必要ない。「１」を有する変換された係数ＮＴの２／３倍の最上位の順位および、「１」を有するＺの最上位の順位の価数差（Ｗｅｒｔｉｇｋｅｉｔｓ−ｄｉｆｆｅｒｅｎｚ）は、例えば、変換された係数用の記録器、および、中間結果Ｚ用の記録器のビットとしてのＸＯＲ接続により、簡単に実施できる。従って、ｓｉは、ＸＯＲ接続が第１の「１」を出力する順位と、ＸＯＲ接続が第２の「１」を出力する順位との価数の差と同じである。
【００３８】
ＺＤＮ記録器もＺＤＮ比較機も必要ないという事実により、全ての演算装置は、より小さな集積回路領域に配置されている。
【００３９】
とりわけ、暗号法制御部分、すなわちＺＤＮ比較のための制御論理（図７の７６０）は、あまり複雑ではない。なぜなら、図１０の煩雑な反復ループを実施する必要がないからである。従って、計算が迅速になり、その結果、補助桁送り値ｓｉの計算によって、タイミング問題はもはや、全てのアルゴリズムに生じない。
【００４０】
以下に図２から図５を参照しながら本発明の変換について詳細に説明する。
【００４１】
すでに実施されたように、ＺＤＮアルゴリズムの基本部分は、以下の方程式を満たすことである：
２／３  ２−ｓｉＮ＜｜Ｚ｜≦４／３  ２−ｓｉＮ
ｓｉは、補助桁送り値として示され、順位に応じて、Ｎと同一の位置にＺを桁送りするのに必要である桁送り値である。従来技術では、ｓｉの計算のために、Ｚを２／３Ｎと比較する操作が必要である。
【００４２】
本発明に基づき、係数が、変換された係数ＮＴに変換されることにより、２／３との比較は簡易化される。この際、変換された係数ＮＴは、Ｎに何らかの係数操作が行われる前はＮよりも大きい。そして、全ての計算係数ＮＴが実施される。しかし、計算の結果が余剰群Ｎ内でなければならない以上、本発明に基づきＮによる最後の換算法が実施される。
【００４３】
図２に示すように、ＮをＮビットの長さを有する整数とする。係数Ｎは、常に正の整数、すなわち、２の補集合表示（Ｚｗｅｉｅｒ−Ｋｏｍｐｌｅｍｅｎｔ−Ｄａｒｓｔｅｌｌｕｎｇ）においてＭＳＢ＝０であるので、表示ビットは０であり、係数Ｎの第２の最上位ビット（ＭＳＢ−１）は、常に１である。ＺＤＮ比較のために、係数の全てのビットを中間結果の全てのビットと比較する必要はなく、ＺＤＮ比較のためにｍビットの数を使用することで間に合う。係数Ｎの最上位のｍビットは係数ＮＴの第１部分を定義する。一方、係数の残りのＮ−ｍビットは係数の第２部分ＮＲを定義する。好ましい実施例では、ｍは１６である。当然、ｍがより大きな値、またはより小さな値であることも可能である。
【００４４】
図３に示すように、変換は、変換された係数ＮＴが、図２の元々の係数よりも１６ビット長くなるように実施される。
【００４５】
ＺＤＮ比較のために、ＮＴの最初の１６ビットを使用することで十分である。この際、本発明の好ましい実施例では、１２ビットだけが比較のために使用される。一方、低位の４ビットは、より低位のビットから生じていることも可能な伝送用のバッファを示す。
【００４６】
この場合、比較が誤った結果を生じる可能性は、２−１２よりも小さい。比較が、誤った結果を生じると、副最適換算桁送り値ｓＮのみが生じるが、結果係数Ｎは、依然として正確である。
【００４７】
図２のような係数が、２つの補足表示において使用される場合には、係数Ｎは以下のようにして分解される：
Ｎ＝２ｎ−ｍＮＴ＋ＮＲ
このとき、Ｎは、変換機Ｔを用いてＮＴに変換される。この際、Ｔは合同式のために（Ｋｏｎｇｒｕｅｎｚｇｒｕｅｎｄｅｎ）必要な適切に選択された整数である。ＮＴは、図３に示された形態、すなわち、ＮＴの最上位ビット（ＭＳＢ）が０でなけばならない。なぜなら、ＮＴは、正の整数でなければならないからである。以下に実施されるように、変換された係数の第２の最上位、および、第３の最上位ビットは１でなければならない。一方、変換された係数ＮＴの一番上の部分（図３に、参照番号３３によって示す）にある他の全てのビットは、「０」の値を有していなければならない。この場合にのみ、つまり、ＮＴの２／３倍のために、図４に示すようなＮＴの２／３倍の一番上の部分は、「１」を有するビットのみを有し、一方、この一番上の部分４４の他の全てのビットは０である。その結果、既に記載された些細な比較をｓｉの決定のために実施できる。
【００４８】
しかし、まず図３を参照して、変換機Ｔを用いた、変換された係数ＮＴの計算について説明する。以下の定義が通用する：
ＮＴ＝Ｔ  Ｎ
＝Ｔ（２ｎ−ｍＮＴ＋ＮＲ）
変換機Ｔには、以下が通用する：
Ｔ＝｜２ｐ−２＋２ｐ−３／ＮＴ｜
方程式１７を用いて、変換された係数ＮＴのために以下が生じる：
ＮＴ＝｜２ｐ−２＋２ｐ−３／ＮＴ｜（２ｎ−ｍＮＴ＋ＮＲ）
ＮＴ＝（２ｎ＋ｐ−ｍ−２＋２ｎ＋ｐ−ｍ−３）ＮＴ／ＮＴ
＋（２ｐ−２＋２ｐ−３）ＮＲ／ＮＴ
例えば、ｐおよびｍのために典型的な値を考えた場合、つまりｐが３２ビット、ｍが１６ビットの場合、ＮＴのために以下が生じる：
ＮＴ＝２ｎ＋１４＋２ｎ＋１３＋ＮＲ｛（２ｐ−２＋２ｐ−３）／ＮＴ｝
ただし、ＮＴの計算は、暗号法コプロセッサーではなく、ホストＣＰＵにおいて行われることが好ましい。ホストＣＰＵは、短い数の演算装置を備えており、このことは、しかし、ＮＴの計算のために十分である。なぜなら、Ｔは整数でなければならず、係数Ｎの代わりに係数ＮＴの暗号法コプロセッサー内部で計算が行われ、この際、ＮＴはＮより大きいので、最初のｐ−ｍがＮＴの１６ビットのみが、補助桁送り値ｓｉを計算するために、些細なＺＤＮ比較に関連している。ＮＴの他のｎビットは、どのような数でもよく、補助桁送り値ｓｉの計算、すなわち、Ｚとの比較には関連していない。しかし、当然、変換された係数ＮＴの全てのビットは、３演算数加算のために必要であり、この３演算数加算は、この際、桁送りされた係数を使用する代わりに、桁送りされ変換された係数を使用することにより実施される。
【００４９】
図１７に示すように、変換機Ｔは、ｍおよびｐのために選択された値のために１６ビット整数（１６−Ｂｉｔ−Ｇａｎｚｚａｈｌ）である。従って、Ｔの計算のために、もしくは、ＮＴの計算のために必要な割り算は、最上位の３２ビットのためにしか実施されない。従って、ホストＣＰＵにおいて、迅速かつ簡単にプログラムできる。
【００５０】
図４に、変換された係数ＮＴの２／３倍を示す。図３に示すように、ＮＴのＭＳＢ−１およびＭＳＢ−２は「１」であるので、以下が通用する：
（１１）２＝（３）１０および（２／３×３）２＝（２）１０＝（１０）２
簡単なビットパターンが変換された係数ＮＴの２／３倍のために生じる。この際、変換された係数ＮＴの２／３倍の長さはｎ−ｍ＋ｐである。
【００５１】
２／３ＮＴの特別な形式が理由で、このとき、Ｚとの比較は非常に簡単となる。２／３ＮＴの最上位の１が係数操作の始めに位置ｎ＋ｐ−ｍ−２にあることが知られている。従って、記録器Ｚのための表示機は、好ましい実施例では、ＺのＭＳＢで始められ、Ｚの最初の「１」を捜査する。ＺのＭＳＢが１である場合には、Ｚは負の数であり、「１」の代わりにＺの最初のゼロを捜査する。
【００５２】
記録器Ｎ、および、記録器Ｚにおける、最初の１のビット位置の差が補助桁送り値ｓｉを決定する。係数操作の結果は、余剰群Ｎ内でなければならないので、本発明では、最終換算係数Ｎが実施され、逆変換（図１の工程１４）も実施しなければならない。ＮからＮＴへの変換は、既知のＺＤＮ比較と比較して以下の長所がある。
【００５３】
暗号法コプロセッサーの内部での２／３Ｎの計算の代わりに、ホストＣＰＵにおいてＮからＮＴへの簡単な変換が行われる。
【００５４】
集積回路上にＺＤＮ記録器および比較論理は不要である。従って、集積回路の大きさはより小さくなり、集積回路プロセッサーの複雑性がより減少する。
【００５５】
続いて、ＮからＮＴへの変換を、図５を参考に記載されているように、係数Ｎの無作為化と組み合わせることができる。Ｒがｓビットの長さの適当な数の場合、無作為化され変換された係数ＮＴは図５に示す形である。無作為化数（Ｒａｎｄｏｍｉｓｉｅｒｕｎｇｓｚａｈｌ）Ｎによって、無作為化され変換された係数は、無作為化が行われていない場合（図３）よりもｓビットだけ、すなわち、Ｒの順位数だけ、長くなる。
【００５６】
このことは、方程式として、以下のような式で示される：
ＮＴ＝Ｔ  Ｎ
＝Ｔ（２ｎ−ｍＮＴ＋ＮＲ）
従って、無作為化された変換機Ｔは、以下のようである：
Ｔ＝｜２ｐ−２−２ｐ−３＋Ｒ／ＮＴ｜
従って、無作為化され変換された係数のために、以下の式が生じる：
ＮＴ＝｜２ｐ−２＋２ｐ−３＋Ｒ／ＮＴ｜（２ｎ−ｍＮＴ＋ＮＲ）
ＮＴ＝（２ｎ＋ｐ−ｍ−２＋２ｎ＋ｐ−ｍ−３＋Ｒ  ２ｎ−ｍ）ＮＴ／ＮＴ
＋（２ｐ−２＋２ｐ−３＋Ｒ）ＮＲ／ＮＴ
ｐを１４４ビット、ｍを１６ビット、ｓを１１２ビットとすると、無作為化を含む変換された係数ＮＴのために、以下の値が生じる：
ＮＴ＝２ｎ＋１２６＋２ｎ＋１２５＋Ｒ  ２ｎ−１６＋ＮＲ（２１４４＋２１４３＋Ｒ／ＮＴ）
従って、ＮＴのビットの長さは：
Ｌ（ＮＴ）＝ｎ＋ｐ−ｍ＝ｎ＋ｍ＋ｓ＝ｎ＋１６＋１１２＝ｎ＋１２８ビットである。図６は、本発明の演算装置を示す。この演算装置は、図７と比較すると、もはやＺＤＮ記録器を有しておらず、算数装置７００、Ｃ記録器７１０、Ｎ記録器７２０およびＺ記録器７３０のみを有している。この際、Ｎ記録器７２０には、係数もしくは桁送りされた係数がもはや格納されておらず、変換された係数、もしくは、桁送りされ変換された係数、もしくは、無作為化され変換された係数、もしくは、桁送りされ無作為化され変換された係数が格納されている。
【００５７】
以下に、補助桁送り値ｓｉと換算桁送り値ｓＮとの間の関係を示すために、図８ａから図８ｃについて説明する。
【００５８】
以下に、補助換算桁送り値ｓｉを用いた換算桁送り値ｓｚの計算を示すため、図８ａから図８ｃについて説明する。図８ａでは、中間結果Ｚと、係数Ｎとが示されている。単なる例として、中間結果は４ビットを有しており、一方、係数は９ビットを有している。このとき、図２のブロック２１４において、桁送りされた中間結果Ｚ’が計算されると考えられる。このことは、ｓｚを乗算することにより達成できる。従って、乗数８をゼロとすれば、このことは、乗算桁送り値ｓｚは８に繋がる。係数換算法を達成するために、係数Ｎは、桁送りされた中間結果Ｚ’の大きさ（Ｇｒｏｅｓｓｅｎｏｒｄｎｕｎｇ）にならなければならない。本発明では、係数Ｎは、桁送りされた中間結果多項式（Ｚｗｉｓｃｈｅｎｅｒｇｅｂｎｉｓ−Ｐｏｌｙｎｏｍｓ）Ｚ’の一番上のビットと、桁送りされた係数Ｎの一番上のビットとが等しくなるまで桁送りされなければならない。このため、図８ｂから分かるように、ｓＮの換算桁送り値が３であることが必要である。
【００５９】
同じく、ｓＮから求め得るのに、実際にはｓｚが計算されてから、初めて行うことができ、すなわち、本発明にとって好ましいように、図２のブロック２１０と２１２とを並行して行うことは不可能であるということが、図８ｂから分かる。この理由から、補助桁送りパラメータｓｉが導入される。ｓｉの長所は、実際の工程のｓｚが分からなくても、この値を計算できることである。
【００６０】
図８ｃから、ｓｚは常にｓｉとｓＮとの和と同じであることが分かる。従ってｓｚとｓｉとは常に、以下の方程式が通用するように相関している：
ｓＮ＝ｓｚ−ｓｉ
従って、ｓＮを決定するための時間のかかる反復方法は、ｓｉを決定するために時間のかかる反復方法（ループ４１６）と、迅速な差分操作（Ｄｉｆｆｅｒｅｎｚ−Ｏｐｅｒａｔｉｏｎ）（図４のブロック４２２）とに分解される。従って、事実上、両方の先見方法を並行して実施できる。この際、連続して行われる唯一のことは、ブロック４２２（図４）の計算の前に、乗算先見アルゴリズムによってｓｚの実際の値が既に計算されており、搬送されていることである（図２の矢印２３０）。
【００６１】
要するに、本発明は、既知のＺＤＮ方法と比較して、２／３ＮとＺの量との間の比較を簡易化して実施している。２／３Ｎの一番上の３２ビットが暗号法コプロセッサーにおいて計算され、別個の３２ビット記録器、ＺＤＮ記録器に格納される。この際、２／３ＮとＺの量との比較は、既知のＺＤＮ方法に基づいて、ハードウエアにおいて、暗号法コプロセッサーの制御部の構成部分である比較機を介して実施されていたようなこれまでに既知の方法に対して、ここでは、以下のようにして行われる。係数Ｎは、ホストＣＰＵによってＮよりも大きな係数ＮＴに変換される。この際、ＮＴの最初のビットは、２／３ＮＴとＺの量との比較が些細になるように選択された定数である。例えば、ＳＰＡ、ＤＰＡ、タイミング作用、．．．のような情報漏洩作用（Ｉｎｆｏｒｍａｔｉｏｎｓ−Ｌｅｃｋ−Ａｔｔａｃｋｅｎ）に対する安全性を改善するため、ＮからＮＴへの変換は、説明してきたように、係数の無作為化と組み合わせられてもよい。
【００６２】
従って、暗号法コプロセッサーにおける２／３Ｎ計算が省かれる。ＺＤＮ記録器と、比較機論理は、同じく省かれる、このことから、比較機論理を省くことにより、集積回路領域はより小さなり、暗号法コプロセッサーにおける制御部分の複雑さが減少される。
【図面の簡単な説明】
【図１】
係数乗算のための本発明の構想のフローチャートである。
【図２】
係数Ｎの、ビットの第１部分ＮＴ、および、ビットの第２部分ＮＲへの分解を示す図である。
【図３】
変換された係数ＮＴの、長さＬ（ＮＴ）を有する順位の第１部分、および、残留順位への分解を示す図である。
【図４】
変換された係数ＮＴの２／３倍の順位の表示を示す図である。
【図５】
無作為化により変換された係数の順位の概略的な表示を示す図である。
【図６】
本発明に基づく係数乗算を実施するのための演算装置の概略的な表示を示す図である。
【図７】
公知のＺＤＮ方法のための演算装置の概略的な表示を示す図である。
【図８】
図８ａから８ｃは、乗算桁送り値ｓｚと、補助桁送り値ｓｉと、換算桁送り値ｓＮとの間の関係を概略的に表示する図である。
【図９】
公知のＺＤＮ方法のフローチャートである。
【図１０】
公知の換算先見方法のフローチャートである。
【符号の説明】
１０  係数の変換
１２  係数乗算の反復処理
１４  変換された結果の逆変換
３３  変換された係数の上位部分
４４  変換された係数の２／３倍の上位部分
７００  計算装置
７１０  Ｃ記録器
７２０  Ｎ記録器
７３０  Ｚ記録器
７４０  反復ループ
７５０  ＺＤＮ記録器
７６０  ＺＤＮ比較用制御論理
９００  ＺＤＮ比較の開始
９１０  ＺＤＮアルゴリズム用乗算先見方法
９２０  左または右へのＺの桁送り
９３０  ＺＤＮアルゴリズム用換算先見方法
９４０  左への係数の桁送り
９５０  ＺＤＮアルゴリズム用３演算数加算
９６０  ＺＤＮアルゴリズムの終了
１０００  広域変数
１０１０  換算桁送り値の初期化
１０２０  ＺＤＮの計算
１０３０  ｎおよびｓＮの調査
１０４０  ｎの減少
１０６０  換算桁送り値の減少
１０８０  ＺＤＮ／２の計算
１１００  中間結果とＺＤＮとの比較
１１２０  換算先見パラメータの決定
１１４０  換算先見パラメータの決定
１１６０  ｎの計算
１１８０  換算先見パラメータの決定
１２００  ｎの調査
１２２０  ｃｕｒ−ｋの計算
１２４０  ｃｕｒ−ｋの計算
【図１】
2004519017.tif 000004
【図２】
2004519017.tif 000005
【図３】
2004519017.tif 000006
【図４】
2004519017.tif 000007
【図５】
2004519017.tif 000008
【図６】
2004519017.tif 000009
【図７】
2004519017.tif 000010
【図９】
2004519017.tif 000011
【図１０】
2004519017.tif 000012
【国際公開パンフレット】
2004519017.tif 000013
2004519017.tif 000014
2004519017.tif 000015
2004519017.tif 000016
2004519017.tif 000017
2004519017.tif 000018
2004519017.tif 000019
2004519017.tif 000020
2004519017.tif 000021
2004519017.tif 000022
2004519017.tif 000023
2004519017.tif 000024
2004519017.tif 000025
2004519017.tif 000026
2004519017.tif 000027
2004519017.tif 000028
2004519017.tif 000029
2004519017.tif 000030
2004519017.tif 000031
2004519017.tif 000032
2004519017.tif 000033
2004519017.tif 000034
2004519017.tif 000035
2004519017.tif 000036
2004519017.tif 000037
2004519017.tif 000038
2004519017.tif 000039
2004519017.tif 000040
2004519017.tif 000041
2004519017.tif 000042
2004519017.tif 000043
2004519017.tif 000044
2004519017.tif 000045
2004519017.tif 000046
2004519017.tif 000047
2004519017.tif 000048
2004519017.tif 000049
2004519017.tif 000050
【国際公開パンフレット（コレクトバージョン）】
2004519017.tif 000051
2004519017.tif 000052
【国際調査報告】
2004519017.tif 000053
2004519017.tif 000054
2004519017.tif 000055
2004519017.tif 000056
2004519017.tif 000057
2004519017.tif 000058