(57)【要約】【課題】モジュラべき乗の実行時に、計算処理方法を増大させず、また過度のハードウェア装置を必要としないマスキングメカニズムによって、復号キーの値と計算のステップの履歴構造との関係をマスクする。【解決手段】暗号化しているべき乗モジュロMは、モジュラ乗算X*YmodMによって遂行される。ここで、Mは法である。この方法は、反復的に連続するステップから成る。各ステップは、１つまたは２つの第一乗算を実行して第一の結果を発生させ、一つ以上の第二乗算によって第一の結果のサイズを削減させて第二の結果を発生させる。この方法は、測定に付随する法のいかなる減算も、モジュラべき乗の終端段階に、実質的に移行する。これは、方法に関係している一つ以上のパラメータを、適切な方法により、選択することによって可能となる。【選択図】  図１
2008293034.tif 000002
【特許請求の範囲】
【請求項１】
Mが法であり、X*Y mod Mにしたがって２つの整数X、Yのモジュラおよびループ乗算をディジットで計算することにより、復号モジュラべき乗モジュロMを実行する方法であって、
当該方法が、内側ループと外側ループの階層構造に組織化されているステップの反復するシリーズを含んでいて、各外側ループは１つ以上の内側ループを実行し、各ステップが、第一の結果を発生するために一つまたは二つの第一乗算を処理装置により実行するように構成されていて、
前記階層構造が、第二の結果を発生させるための一つ以上の第二乗算により、前記第一の結果のサイズを削減減算させるように構成されていて、
当該手段が、さらに、この様なステップの最終結果を当該法の所定の多重度以下に保つモジュラ減算手段を有している、当該方法において、
当該方法の全体のパフォーマンスを維持し、中間的な計算の結果があらかじめ定められた上限より低いままでありながら、p≧b+2以上の整数の値である拡大されたディジット長のp=n-n'を拡大されたレジスタを使ってクイスクエータ(Quisquater)アルゴリズムに沿って選択して、前記モジュラべき乗の計算の終わりまで、前記モジュラ減算手段における全てのモジュラ減算を延期させ、ここで、n'はMのα−ａｒｙディジットの数であり、bは計算のためにレジスタによって用いられるディジットのビット長であり、前記クイスクエータアルゴリズムは、Nの最上位のp個のビットがすべて１である、すなわち、法Nが、
2n-2n-p≦N≦2n
のn-ビット数である場合に、全ての減算が、中間的な計算としてMのある倍数Nのモジュロについて行われることを特徴とする復号モジュラべき乗モジュロMを実行する方法。
【請求項２】
請求項１に記載の方法を実施するように構成されている装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、請求項１のプリアンブルの方法に関する。標準化されたモジュラべき乗を実行することによる暗号化は、金融業務に使用されるような、スマートカード等の環境で、そのような業務の制御または内容が改竄されないようにするために、使用される。
【背景技術】
【０００２】
暗号化は、y=<xe>Mと表すことが出来る（ここで、xは、メッセージ、eは、暗号化キー、Mは、法である）。同様に、復号化はD(y)=<yd>Mとして行われる（ここで、dは、復号キーで、かつDからxを検索することは容易である）。特定の装置の場合、Mとeの値は、既知で固定されていて、暗号化されるxの内容は未知で可変であり、そしてdの値は、固定されているが未知の値である。エンコードされた署名を提供すると言うような演算の場合、第一エンコーディングも同様にして秘密キーにより実行される。本明細書では、このようなエンコーディングも、「復号」と呼ぶ。復号は、ディジット処理される。Dの各ディジットに対する、１つまたは２つの第一乗算X*Y mod Mが、第一の結果を生成する。このような第一の結果に対して、加算が行われる。第二の結果が得られると、Dの次のディジットが処理される。従来技術の演算では、利用可能なハードウェアのレジスタの幅が、一般に乗算で使用される総合的な量のサイズよりはるかに小さいディジットの長さに適合させてあるので、量Mの多重度(ゼロ、１またはそれ以上)を減算することにより、第二の結果のサイズを、小さく保っている。上述の多重度の逐次パターンをX, Y, およびMの値に依存させることができることが判明している。さらに、任意のメッセージを有する相互に無関係な大量の復号演算に履歴統計を使用することにより、dの値を導出することが出来る。これは暗号化による保護を無意味にする。したがって、いくつかの計算手順を追加してこれらの統計的な変化をマスクする必要が有る。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
本発明の目的は、とりわけ、計算処理を増大させず、また過度のハードウェア装置を必要としないマスキングメカニズムによって、復号キーの値と計算のステップの履歴構造との関係をマスクすることである。したがって、本発明は、その観点の一つに従って、請求項１の特徴部分をその特徴とする。特に、本発明者は、現行のマイクロコントローラ（スマートカードの制限された環境で使用されるものでさえ）が、以前より長い（特に、計算に使用されるディジットより数ビット長い）記憶レジスタを使用することができることを認識した。このようなレジスタにより、本発明が必要とする余分な自由度が得られる。
【課題を解決するための手段】
【０００４】
その手順は、QuisquaterまたはBarrett法に沿ってべき乗を実行する。これらは、広く使用される方法であり、かつそれらの最小の修正で本発明の実行に使用できる。計算手順のパターンは、もはや復号キーに依存しない。これにより、復号キーの値を解読することは出来なくなる。
【０００５】
本発明は、本発明の方法を実施する装置にも関する。本発明の別の有利な観点は、従属項に記載されている。
【発明を実施するための最良の形態】
【０００６】
本発明のこれらおよび別の観点および利点は、以下に、望ましい実施例の開示を参照してより詳細に説明される。
【０００７】
いわゆる「タイミング攻撃」は、モジュラべき乗の様々な実行に対し、逐次的暗号化の計算時間が、各々のメッセージごとにわずかづつ異なるであろうとの認識に基づく。インプリメンテーションの知識をもって、大量のメッセージに対する計算時間を正確に測定することにより、秘密キーを得ることが出来る。このことは、実験により確認された。攻撃とそれに対する可能な対策の特性を理解するために、我々はRSA暗号化/復号方法の主な要素といくつかの共通する実行例を与える。
【０００８】
メッセージは、ある固定された数Mに対し、範囲0< X <Mにある整数xによってエンコードされる。y≡z mod Nは、整数y, z、およびNに対し、Nがy-zを除することを示す。<Y>Nは、Nにより除した後の余りが、yであることを示し、これは、ある整数qに対しy=r+q.Nとなる0≦r< Nのユニークな数rである。αが実数ならば、｜α｜は最大整数k≦α(切り捨て)を示す。
【０００９】
RSAスキームは、以下に示されるように、大きな数を因数に分解することは困難であることに基づいている。通信している２つのパーティーは、各々が、約m/2ビットを有する、秘密に保たれた２つの素数pおよびqの積M=p.qである、通常、(m=512)ビット数である、番号Mに同意することが出来る。また、パーティーは、個人キー番号dと公開キー番号eも同意する。番号Mとeは公開され、番号dは、ユーザに与えられるスマートカードの改ざん防止モジュールに入れることも出来る。個人キーdは、ユーザに知られないようにしなければならない。ユーザのアカウントを変える命令は、暗号化された形態で、スマートカードに送られ、そこで、個人キーdを使用してアカウントを修正する命令が復号化される。あるユーザが個人キーdを得、そして例えば、アカウントを増加するようにカードに命令した場合、そのスマートカードは、「ハッキング」されたものとみなされる。番号dとeは、次式を満足しなければならない。
d.e ≡ 1 mod lcm(p-1,q-1),
ここで、lcm(a, b)は、aとbの最小公倍数、つまり、aとbの両方で割り切れる最小の整数である。gcd(c, N)=1を満たす、つまり、cとNが互いに素である(公約数がない)、法Nと整数cが与えられると、c.c'≡1 mod Nを満たす数c'を計算するのは容易である。秘密のメッセージx (0<x<M) をユーザに転送するために、番号E(x)= <xe>Mが、代わりに送られる。エンコードされたメッセージyから、カードはD(y)= <yd >Mを計算する。もし、y=<xe>Mである場合には、D(y) ≡(xe)d≡xd.e ≡x mod Mとなることは、注記すべきである。この式は、f≡1 mod lcm(p-1,q-1)である場合のみ、すべてのyに対して、yf≡y mod Mが成立すると言う事実による。
【００１０】
RSAスキームの安全性は、個人キーdを知らずに<xe>Mから<x>Mを復元することが困難であることに依存する。この問題は、任意のxに対して、e modulo lcm(p-1,q-1)を逆にする位、すなわち、pとqを知らずにdを見つける位、困難に見える。これは、Mを因数分解する位困難である。
【００１１】
モジュラべき乗
RSAスキームの主な演算は、モジュラべき乗、 y→x= <yd>Mである。しばしば、この演算は以下のように実行される。
2008293034.tif 000003
と書き込む。ここで、diε{0, 1}は、dの2進表示である。x(m)=1として、
x(k)=< <(x (k+l))2>M.yk>M          (1)
から、x(m-1)、x(m-2), ..., x(1), x(0)を回帰的に計算する。
【００１２】
ここに、x=x(0) が得られた。元のメッセージxは、受信された暗号化メッセージyからm個のステップで計算される。各ステップでは、対応するキーのビットが1ならば、モジュロMを二乗してそれにモジュロMを乗算する。(1)から、べき乗は、繰り返されるモジュラ乗算、すなわち、
(x,y) → z = <x.y>M            (2)
により行われることが判る。
【００１３】
ほとんどのシステムが、数yのmビットをbビットのディジットにグループ化することによりこの乗算を簡素化する。bはb=1からb=32までの任意の数とすることが出来る。このようにして、
2008293034.tif 000004
と書ける（ここで、0≦yi <2bである）。式(2)は、
2008293034.tif 000005
とし、かつ
zi = < <x.yi>>M+Zi+l2b >M          (3)
から、
2008293034.tif 000006
を順次計算することにより、計算される。
演算
(x,yi)→< x.yi>M                  (4)
を「そのまま」実施するのは以下の理由から、魅力的ではない。数u=x.yiは、(m+b)ビット数である。数<u>Mは、次式から得られる。
2008293034.tif 000007
この計算は、乗算とmビットの数Mによるuの除算を必要とする。しかしながら、大きい数の通常の除算は、乗算よりはるかに複雑である。したがって、様々な方法において、(5)の直接の実施が、Mの二三の(通常、１か２の)減算がその後に続く、二三の(通常、２か３の)乗算を使用する実施により置換されている。
【００１４】
いくつかの方法は、数モジュロMに対し特別な表示を使用する。これは、通常の表示から特別な表示にまたその逆への変換を必要とする。この変換は、モジュラべき乗の始めの一回と終わりの一回のみで行われる。これらの間では、多くのモジュラ乗算が計算されるので、余分な経費は無視できる。このような方法を、以下に、２つ詳細に述べる。
【００１５】
場合によっては、モジュラ乗算に従わなければならない追加減算は、タイミング攻撃を実行可能にする。このような攻撃では、スマートカードは大量のメッセージを復号化しなければならない。そして、復号時間の統計解析法は、攻撃者が個人キーdのビットを再現するのを可能にする。本発明は、これらの余分な減算がもはや必要ないモジュラ乗算の既知の方法に適合している。
【００１６】
［モジュラ乗算の2種類の方法］
Quisquater法の場合、Nの第一p最上位ビットがすべて１である、すなわち、法Nが、
2n-2n-p≦N≦2n                (7)
のn-ビット数である場合に、全ての減算が、Mのある倍数Nのモジュロについて行われる。
べき乗モジュロNの終わりで、結果は、必要な応答を得るためにモジュロMに減算される。モジュラ乗算
(x, y)→ z = <x, y>N、      (8)
を計算するために、nビットの数yは、b≦p-1ビットのブロックに区分され、そして同様にx. yiを(3)に掛けることによって、zが、回帰的に得られる。式(5)は、「Quisquater-減算」
2008293034.tif 000008
により置き換えられる。
リマーク１： Q(u) ≡ <u>N mod Nは注記すべきである。しかしながら、Q(u) <Nについては保証できない。大きいuに対しては、数Q(u)が、Nより大きい場合がある。しかしながら、u<2P(Θ-1)Nの場合には、Q(u) <ΘNとなることを示すことが出来るので、Quisquater-減算は、必要な剰余演算にはほとんど全て有効である。
乗算の結果zは、
2008293034.tif 000009
としかつ
zi* = Q(x.yi + z*i+12b          (10)
とすることによって、回帰的に計算される。
z*: = z0* ≡ x.y mod Nが成立することは注目される。ｂ≦p-1 と0≦x<Nについては、すべてのiに対し 0< ｚi* <3Nとなることを示すことが出来る。従って、結果z = <x.y>Nは、z*から多くても２回Nを減算することにより得られる。以下に、これを証明する。
Barrett法は、所定の法M自体を使用する。数xのモジュラ減算< x >Mは、
2008293034.tif 000010
により概算される。ここで、
2008293034.tif 000011
そしてnは、bn-1 ≦ M <bnとなるように選択される。２つの数xとyの積z=xyは以下のように計算される:
(i) z0 = xy;
(ii) z = z0* = B(z0).
0≦x,y<Mの場合、結果zは０≦z<3Mとなるので、<xy>Mを得るために最大２回しか余分な減算を必要としないことを、以下に示す。ｂ≧3に対しては、B(z0)の計算は簡素化することが出来る。
2008293034.tif 000012
とすると、z = x - uとなる。上記のリマークにより、z < 3M < bn+1となる。ｚ≡x-u mod bn＋1から、
2008293034.tif 000013
との結論が得られる。
【００１７】
［モジュラ乗算のアルゴリズムの改良］
モジュラ乗算が法の追加減算を必要とする場合も必要としない場合もあるので、タイミング攻撃は、行われる可能性がある。しかしながら、元の仮定をわずかに変更させることにより、これらの追加減算を回避することが出来る。減算させていない結果でモジュラべき乗を実行し、そしてモジュラべき乗の最終段のみであらゆる減算を行うことが出来る。これが機能することを示すために、各アルゴリズムに対し、モジュラ乗算の中間結果に上限を設ける。
【００１８】
修正されたQuisquater法に対して、我々は、2m-1 ≦ M < 2mを満たす法Mが有すると仮定する。ここで、2n - 2n- p ≦N <2nを満たす数N = cMを計算する。n ≧ m+pであるならば、これは常に可能である。Nの容認できるインタバルが、2n-p ≧ 2m > Mであるので、Mのいくつかの倍数は、このインタバル内になければならない。すべての中間的な計算は、減算モジュロMを用いてその最終で法Mに代えて法Nについて行われる。Nは、Mの倍数であるので、いかなる情報も失われることはない。
前の例と同様に、xと
2008293034.tif 000014
のモジュラ乗算の結果z=xyを得るために、以下の式を使用する。
2008293034.tif 000015
2008293034.tif 000016
に対して、
zi = x.yi  + z*i+12b と z*i = Q(zi)
を計算する。
(iii)  z=z0*
【００１９】
このアルゴリズムに関する以下の事実が必要となるであろう。
命題3.3  0≦x<αNそして 2p+α2b≦(2p - 2b)Θであると、全てのiに対し、
0≦z*i<ΘN                  (12)
となる。
証明: 0<x<αN, N≧2n-2n-p, 0≦yi<2b, および 0≦z*i+1 <ΘMであると、
zi<αN2b+ΘN2b＝(α+Θ)N2b,
となり、したがって
2008293034.tif 000017
Q(zi) ≡ zi ≡ <zi>Nとなるので、数(Q(zi) - <zi>N)/Nは整数である。上述から、この数は< Θであるので、(Q(zi) - <zi > N)/N ≦Θ-1との結論が得られる。定義から <zi>N < Nであるので、z*i  = Q(zi) < ΘNが導かれる。
明らかに、条件(12)は、p≧b+1 であるときのみ、満足させることができる。さらに、p=b+1の場合、(12)は、条件Θ≧α+2と同等である。従って、α=1であると、上述のアルゴリズムから生じる数zは、常に0 ≦ z ≦ 3Nを満足するので、上述の結果によると、新たに必要とする減算は多くて２回である。
【００２０】
すべてのモジュラ乗算の結果が、αNより小でなければならない場合には、Θ=αであることが必要となり、かつ
p≧b+2,  Θ=α≧2
が必要充分の条件となる。
【００２１】
従って、モジュラべき乗の間、p=b+2であるとすると、我々は各モジュラ乗算の後に追加される減算を省略することが出来、かつすべての結果が負でなくかつ≦2Nであることも保証することが出来る。モジュラべき乗の結果は、最終での、最高1回の減算と、減算z→< z>Mで得られる。
【００２２】
Quisquater法と同様な方法で、Barrett法を変更することができる。法Mがbn-1≦M<bnを満たすと仮定する。b-ary記号法によりxと
2008293034.tif 000018
とのモジュラ乗算の結果z = xyを計算するために、以下の式を使用する。次のように、定義する。
2008293034.tif 000019
2008293034.tif 000020
2008293034.tif 000021
に対して、
zi= x.yi + z*i+1.br と
z*i = Bk,l(zi)
を計算する。
(iii) z=z0* .
命題3.4: 0≦x<αM,  0≦ z*i+1≦βMでかつ
k=n-1, l=r+1, 1, 2 +α+β≦Θ,        (13)
または
k=n, l=r+1, α=β=Θ,Θ≧max (2b/(b-2),(1+b)b2/(b2-2)),              (14)
または、例えば、
b=4, k=n-1, 1=r+2, α=β=Θ, Θ≧3,            (15)
または
b=4, k=n-2, l=r+4, α=βΘ, Θ≧2,              (16)
とすると、0≦ zi* <ΘM となる。
証明:  0≦x<αM, bn-1≦M<bｎ, 0≦yi<r, そして 0≦z*i＋1 ≦βMとすると、
zi<αMbr +βMbr = (α＋β)Mbr
したがって
2008293034.tif 000022
最後の不等式は、bn-1 ≦ M < bnと、Mが最小または最大の何れかのとき、凸関数a/M+bM, a≧0が、最大になると言う事実とから、得られる。
興味有る結果は、k+ l ≦n+ rを必要とする。Bk,lを計算するために必要な乗算のサイズを制限するために、kは、出来る限り大きく、そして、k+lは、出来る限り小さくなければならない。各追加の条件（13）,（14）,（15）そして、(16）は、最後の式が最大でもΘに等しいことを意味する。
【００２３】
B(zi) ≡ zi ≡<zi>M mod M、それゆえ、(B(zi - <zi>N)/Nは、整数である。この数がΘより小であるので、(B(zi)-< zi > M)/M≦Θ-1となる。定義によって<Z1>M<Mであるので、zi*=B(zi) <ΘMと言う結論が得られる。
【００２４】
上記の方法は、いくつかの方法で使われる。１つの方法は、r=n, k=n-lおよびl=n+1をとる。それから、我々は、１つのステップで、z=Bk,l(xy)=B(xy)、（従って、β=0）を計算する。命題3.4は、x<Mとすると、z<3Mとなると述べている。これは、前の主張を証明する。
【００２５】
これに代えて、bを小さく（典型的にはb = 4）、かつ、k=n、l=r+1およびα =β = Θとしても良い。b≧3に対して、(1+b)b2/(b2-2)≧2b/(b-2)であるので、命題3.4によると、全ての中間結果は、 <ΘM if Θ≧(1+b)/(b2-2) およびb≧3、つまり、b=4のときには、<6Mとなるであろう。同様に、b=4に対し、k = n-2、l = r+4、α=β=Θ= 2とした場合、全ての中間結果は、<2Mとなり、そして、k = p-1、l=r+2、α=β=Θ= 3とした場合、全ての中間結果は、<3Mとなるであろう。したがって、モジュラべき乗は、各モジュラ乗算の後の追加の減算を省略することができて、全ての中間結果が最大ΘMのサイズで負で無いことを保証することができる。ここで、Θは、kおよびlに対し、２〜６の数である。最終結果は、僅か数回の減算によりモジュラべき乗の最終端で得られる。
【００２６】
モジュラべき乗を実行する周知の第３の方法は、モントゴメリー法によるものである。この特別な方法の改良は、M. Shand及びJ. Vuilleminによる Fast Implementation of RSA Cryptography in Proc. 11th Symposion on Computer Arithmetic, IEEE 1993 p,252-259 に開示されている。この参照文献の場合、モントゴメリ法に対するある標準化により、中間処理ステップの後に繰り返される正常化処理が不要となっている。この参考文献の目的は、処理の全体速度を速めることであった。一方、本発明は、タイミング攻撃を、非モントゴメリアルゴリズムに対する最初の演算数変換といくつかの最小のハードウェア設備により、阻止することができることを示した。この様なタイミング攻撃は、上記参照文献では、考慮されていない。さらに、QuinsquaterおよびBarrett法は、ここでは、明らかに何の制限も無い実施例として開示されている。
【００２７】
第１図は、本発明の装置のハードウェアブロック図である。オペランドメモリ20は、図示されるように、８ビットディジットのモジュラ記憶である。アドレスシーケンサ22は、読み書きのために必要なディジットロケーションに順次アドレスする。処理装置24およびアドレスシーケンサ22は、相互連結21により相互に同期して作動する。処理装置24は、メモリ20から読み込む際に受信される、最初のディジットに対する入力レジスタ26を有する。さらに、それは、その結果レジスタ28からの逆カップリングによる第二のディジットに対する入力レジスタ30を有する。後者の長さは、ディジット長さより長い。選択レジスタ32により、メモリ20へのディジットに基づく逆記憶が可能となる。処理装置は、前述した標準化、前処理および後処理、そして、更にQuisquater、Barrettおよび同様な非モントゴメリ法の標準モジュラ乗算を実行することができる。特定な動作は、制御レジスタ30によってコントロールされる。
【００２８】
第２図は、本発明のフローチャートである。ブロック50で、演算が開始され、必要な様々なハードウェアおよびソフトウェアの機能が要求される。ブロック52において、暗号化されたメッセージが、受信される。ブロック54において、メッセージは適用可能な如何なるアルゴリズムに対しても記載されている方法で前処理される。ブロック56において、内側のループの１つのターンが実行され、２つのb-aryディジットのeベースに基づいて中間結果を計算する。ブロック58において、システムは、問題の内側ループが、充分な回数実行されたか否か（準備ができたか？）を検出する。NOである場合、システムはブロック56に戻る。YESの場合は、システムはブロック60へ進んで、外側ループの１つのターンを実行する。その後、ブロック62において、システムは、問題の外側の内側ループが充分な回数実行されたか否か（準備ができたか？）を検出する。NOである場合、システムは、内側のループを更に実行するためにブロック56に戻る。YESの場合は、システムは、最終結果を後処理するブロック64に進み、次いで、当該スマートカードの中央処理設備のようなユーザに結果を出力する、ブロック66に進む。第１、２図の組み合わせとこれ以外の広範な開示とは、どのように本発明を実施するかと言う点について、当業者に充分な教示を与えていると考えられる。
【００２９】
［本方法のまとめ］
2008293034.tif 000023
2008293034.tif 000024
は、暗号化されたメッセージである。
2008293034.tif 000025
まず、標準の方法が、チェックされる。
a. 前処理
2008293034.tif 000026
ここで、pは、ある整数、そしてcは、αn - αn-p ≦αn となるように選択される。これは、cに対しユニークな選択aを発生する。また、α=2。
2008293034.tif 000027
b. dの分割
2008293034.tif 000028
と書く。典型的には、β= 2およびm = dの#bits。
c. 外側ループ
z←１
i = m - l→0に対し繰り返す：
z ← Mult (z, z; M）（β= 2の場合；一般的には z ← <zβ>M）
z ← Mult (z, xdi; M）（di >0の場合のみ必要）
エンドリピートする。
d. 演算Mult内のモジュラ乗算の実施
z ← Mult (u, v; M）の実施は、0≦u, v<Mを前提とし、そして、結果 zは、0≦z≦Mを満たす。
e. 分割
2008293034.tif 000029
と書く、ここで、ある整数bに対しB=αbである。換言すれば、vのn個のα-aryディジットが、bディジットのn'個の各ブロックにグループ分けされる。（従って、n = n'b。）
さらに、Quisquaterは、b≦p-1を前提とする。Barrettは、b= n, n'=1を採用する。
f. 内側ループ 
iに対し、
z←0
を繰り返す：
while z ≧ M do z ← z - M      （17）
の条件で、
h ← z.F＋u.vi
z ← R(h)
をエンドリピートする。
ここで、次式が得られる。
1.        i = n' - 1 → 0 （QuisquaterおよびBarrettの場合）
2.        F =｛B = αb（Quisquater and Barrett）
3.
2008293034.tif 000030
ここで使用されたBarrett減算演算B
2008293034.tif 000031
は、一般的なBarrett減算の特別のケースである。
QuisquaterおよびBarrettの場合：全てのステップで、0 ≦ w ＜ 3M
9. 後処理
ここで、zは、0 ≦ z < Mを満足する。
2008293034.tif 000032
【００３０】
［「古い」アルゴリズム内の条件とプロパティの概要］
Quisquater
ｐ ≧ b + 1
Barrett：−
【００３１】
［新しい方法］
a. 処理
モントゴメリに対する新たな要求、例えば、M < R/4
2008293034.tif 000033
を除けば、前と同様。
b. dの分割
前と同様
c. 外側ループ
前と同様、しかし、演算Multの実行は、わずかに相違する。
d/e. 演算Mult内のモジュラ乗算の実行
分割
前と同様。ただし、Quisquaterに対しては、b ≦ p - 2 が必要。
f. 内側ループ
最後の指示「while z ≧ M do z ← z - M」が無いことを除いて、前と同様。
また、Barrett の場合、b については、b = n, n' = 1とする代わりに、他の値を採用しても良く、かつ特例B = Bn-1,n+1の代わりに、kとlの他の値（例えば、k = n、l = b＋1、または、α= 4を選びかつ、例えば、k = n - 1、l = b＋2またはk = n−2, l = b＋4を採用する）については、B = Bk,lを採用する。
g. 後処理
あるΘ（典型的には、Θ= 2 またはΘ= 3）に対し、z <ΘMとなることしか保証できない。従って、Barrettの場合には、演算Multのループ部分から除去されたwhile文（17）
while z ≧ M do z ← z - M
は、ここでは使用しなければならない。
Quisquaterの場合にも、この同じ演算は、必要であるが、おそらく他の後処理（それらに、変更は無い）と組み合わすことが出来る。
［「新しい」アルゴリズム内の条件とプロパティの概要］
Quisquater
p≧b＋2（b＋1の代わりに）
［Barrett］
Barrett減算オペレータBk,lの番号k,lに対する様々な可能な値。良好な条件は、次のようにして探すことができる。
Barrettによるx.y mod Mの計算：
各yi < br（b-aryディジット）に対し
2008293034.tif 000034
で、かつ、0≦x<αM, 0≦z*i+1 ≦βM である場合、(z *i  - <zi > M)/M = (Bk,l - <zi >/M ≦ l＋max (bk-n+1 ＋（α＋β）bn-1+r-k-l , bk-n ＋（α＋β）bn+r-k-l）(＜Θが必要)。確実にk + 1 ≧ n + Rが必要。
古典的手法：R=n, k=n-1, l= n +1、その結果、β=0, α=1 → z* < 3M（Θ=3）。
新しい手法：R < n, α=β=Θ。この条件は、1 + max (bk-n+1 + 2Θ Bn-1+r-k-l*, Bk-n* + 2ΘBn+r-k-l < 全ての結果を有するΘ < Θ である。
【００３２】
［より良い条件：］
全ての許容されるMに対して、
2008293034.tif 000035
2n-1 ≦ M  <  2n →（2k-n + 2Θ2n+r-k-l , 2k-n+l + 2Θ2n-1+r-k-l ）<Θ
リマーク：両方のアルゴリズムにおいて、これらの新しい条件は、様々な中間変数を格納するためにわずかに大きいレジスタが使用出来るようにハードウェアの条件を変更する。
【図面の簡単な説明】
【００３３】
【図１】本発明のハードウェア構成図を示す。
【図２】本発明のフローチャートを示す。
【図１】
2008293034.tif 000036
【図２】
2008293034.tif 000037