(57)【要約】本発明は、分子（Ａ）を分母（Ｎ）によって割った割り算の結果（Ｑ）、または、結果（Ｑ）の倍数を演算するためのシステムに関するものである。本発明のシステムは、因数を供給する手段（１２）を備えている。この因数は、因数と分母との積が、結果よりも大きいように選択されている。上記システムは、結果を含む補助数量を得るために、分母と因数との第１積を、分母と因数との第２積と、ある整数との和に等しい法を用いて、法計算する手段（１４）をさらに備えている。結果、または、結果の倍数を、補助数量から抽出する手段（１６）を使用する。その結果、除算は、法計算および抽出に変形されて、計算は平易となり、特に、長大数の除算タスクにおいて、速度が上がり、かつ、安全性が高まる。
2005517980.tif 000002
【特許請求の範囲】
【請求項１】
分子（Ａ）を分母（Ｎ）で割る除算の結果（Ｑ）、または、上記結果（Ｑ）の倍数を演算する装置であって、
上記分母（Ｎ）との積が上記結果（Ｑ）よりも大きくなるように選択される因数を供給する手段（１２）と、
上記結果を含む補助数量を得るために、上記分子と上記因数との第１積を、上記分母と上記因数との第２積と、ある整数との和に等しい法を用いて、法計算する手段（１４）と、
上記補助数量から上記結果または上記結果の上記倍数を抽出する手段（１６）とを備えていることを特徴とする装置。
【請求項２】
上記供給する手段（１２）は、底の、ある補助数乗が、上記因数に等しいように上記因数を決定するように構成されていることを特徴とする請求項１に記載の装置。
【請求項３】
上記因数を乗算することがレジスタの位置をある数だけシフトさせることに相当するように、上記底を２とし、上記位置の上記ある数は上記補助数に等しいことを特徴とする請求項２に記載の装置。
【請求項４】
負の数を表すために、２の補数表示を使用し、
上記補助数量はレジスタ（３００）に格納されており、上記抽出する手段（１６）が、上記除算の上記結果（Ｑ）を得るために、上記結果を含む上記レジスタ（３００）の下位部分（−Ｑ）を読み出す手段と、読み出した値を反転し、１を加算する手段とを備えていることを特徴とする請求項１〜３のいずれか１項に記載の装置。
【請求項５】
上記抽出する手段（１６）は、
上記因数が乗算された上記分母が法として供給されて、他の補助数量として、上記因数が乗算された上記分子の法計算の結果を演算する手段（２６）と、
上記除算の上記結果を得るために、上記他の補助数量から上記補助数量を減算する手段（３２）とを備えていることを特徴とする請求項１〜３のいずれか１項に記載の装置。
【請求項６】
上記除算は、整数除算であることを特徴とする請求項１〜５のいずれか１項に記載の装置。
【請求項７】
上記補助数は、（上記分子の位置の数）−（上記分母の位置の数の２倍）＋２に等しいように選択されていることを特徴とする請求項３に記載の装置。
【請求項８】
上記抽出する手段（１６）は、上記結果が負であるかどうかを決定し（３４）、上記結果が負であれば、法計算する手段（１４）において使用するために供給される法を、上記結果に加算する構成であることを特徴とする請求項５に記載の装置。
【請求項９】
上記分子（Ａ）を格納するための第１レジスタと、
上記分母（Ｎ）を格納するための第２レジスタと、
上記他の補助数量（Ｈ２）を格納するための第３レジスタと、
上記補助数量（Ｈ１）を格納するための第４レジスタと、
上記結果（Ｑ）を得るために、上記計算する手段（１４）および上記抽出する手段（１６）を制御するレジスタ制御ユニットとをさらに備えていることを特徴とする請求項５に記載の装置。
【請求項１０】
上記結果にある整数の乗算数を乗算する演算を行い、
上記供給する手段（１２）は、ある因数を供給するように構成されており、この因数は、当該因数と、上記分母と、上記乗算数が乗算された上記結果との積が、上記除算の上記結果よりも大きいように選択され、
上記法計算する手段（１６）が、上記分母と当該因数との積と、上記乗算数との和に等しい法を使用するように構成されていることを特徴とする請求項１に記載の装置。
【請求項１１】
上記法計算する手段（１４）は、上記分母と上記因数との積と、ある整数との和に等しい法を使用するように構成されており、当該整数は、１よりも大きいか、または、１に等しく、
上記抽出する手段（１６）は、上記分母と上記因数との積と、ある他の整数との和に等しい法を使用するように構成されており、
当該他の整数は、当該整数とは異なり、その結果、当該他の整数と当該整数との差が１に等しい場合、上記抽出する手段（１６）によって上記除算の上記結果が得られ、または、ある整数の乗算数が乗算された上記結果が得られ、当該乗算数は、当該他の整数と当該整数との差に等しいことを特徴とする請求項１に記載の装置。
【請求項１２】
暗号化装置の暗号化コプロセッサーとして実現されていることを特徴とする請求項１〜１１のいずれか１項に記載の装置。
【請求項１３】
上記結果が反転せずに得られるように、上記整数が負であることを特徴とする請求項１〜３のいずれか１項に記載の装置。
【請求項１４】
上記他の数は、負の整数であることを特徴とする請求項１１〜１３のいずれか１項に記載の装置。
【請求項１５】
分子（Ａ）を分母（Ｎ）によって割る除算の結果（Ｑ）、または、上記結果（Ｑ）の倍数を演算する方法であって、
上記分母（Ｎ）との積が上記結果（Ｑ）よりも大きくなるように選択される因数を供給する（１２）ステップと、
上記結果を含む補助数量を得るために、上記分子と上記因数との第１積を、上記分母と上記因数との第２積と、ある整数との和に等しい法を用いて、法計算する（１４）ステップと、
上記結果、または、上記結果の上記倍数を、上記補助数量から抽出する（１６）ステップとを含むことを特徴とする方法。
【発明の詳細な説明】
【発明の詳細な説明】
【０００１】
本発明は、暗号アルゴリズムに関するものである。本発明は、特に暗号化アプリケーションに適した除算アルゴリズムに関するものである。
【０００２】
暗号アルゴリズムでは、頻繁に、２つの長大数を除算する必要がある。例えば、ＲＳＡアルゴリズムにおいて、法Ｎが、２つの素数ｐ、ｑの積であるとき、Ｎをｐで割ったときにｑが得られる、あるいは、Ｎをｑで割ったときにｐが得られる。
【０００３】
除算ルーチンが、内部において迅速に処理されるミクロ命令からなる明瞭な命令として、そのために使用される暗号化コプロセッサーに組み込まれていない場合、ソフトウエアによって除算を行う必要がある。このため、従来の除算ルーチンは、速度が遅く、ＳＰＡ攻撃（ＳＰＡ＝Simple Power Analysis=単純電力分析）に対して安全なものではなかった。
【０００４】
回復型除算、非回復型除算などのような一般的な除算ルーチンは、例えば“Computer Arithmetic”,HenessyおよびPatterson著,Morgan kaufmann出版社,1996に記載されているように、レジスタシフトを行い、次に、特定のビットが特定の値を有しているかどうかに応じて、減算または加算を実施することに基づいている。このようなルーチンは、ＳＰＡ攻撃を受けやすい。なぜなら、電流または電力消費、さらには、時間消費が、処理される数に応じているからである。したがって、攻撃者は、電流または時間特性を参考にして、処理される数を推論できる。それゆえ、例えば、公開鍵暗号アルゴリズムの秘密鍵を探り出すことができる。
【０００５】
この問題に対処するため、いわゆる、ダミー演算を組み込む。このダミー演算によって、電流特性を均一化できる。しかしながら、ダミー演算の組み込みにより、性能損失がさらに増え、３３％までになる。
【０００６】
本発明の目的は、より効率的かつより確実な、除算演算の概念を提供することである。
【０００７】
本目的は、特許請求項１に記載の除算の結果を演算するための装置、または、特許請求項１５に記載の除算の結果を演算するための方法によって達成される。
【０００８】
本発明は、特に暗号化目的について、除算を実行するためには従来の除算ルーチンから離れる必要があるという認識に基づくものである。本発明では、因数を導入することによって、除算を法計算に変形する。なお、この因数は、因数と除算のための分母との積が、除算の結果よりも大きいように選択されている。この法計算を、分子と因数との第１積に対して実施する。この場合、除算の結果を含む補助数量を得るために、分母と因数との第２積と整数との和に等しい法を使用する。最後に、この結果を、簡単な計算で、補助数量から抽出する。
【０００９】
本発明の概念の利点は、電流および／または時間特性が、処理する量、すなわち、分子および分母に依存していない点である。さらに、演算すべき除算が最終的に変形されて得られる法計算を、効率的に実行できる。特に、暗号化プロセッサーでは、法計算は頻繁に使用される演算であり、そのために一般には、効果的なアルゴリズムが、暗号化コプロセッサーにおけるハードウエアによって実施される。したがって、法計算を、迅速かつ効果的に計算できる。
【００１０】
ハードウエアの実施形態に従い、レジスタが十分な長さである場合は、補助数量からの除算の結果の抽出を、長大数レジスタから直接読み出してもよい。
【００１１】
あるいは、結果を抽出するために、他の法と減算とを実施してもよい。ただし、この場合も、計算の複雑さは、感度限界内のままである。なぜなら、他の法計算も、暗号化コプロセッサーに必ず備えられている効率のよい計算回路を用いて、迅速かつ確実に実施されるからである。
【００１２】
本発明の概念により、安全性が高まるとともに、除算の速度が上がる。長大数の除算は、ドイツ連邦共和国ミュンヘンのInfineon Technologies AG 社から入手可能な、よく知られたプロセッサーＡＣＥ（ＡＣＥ＝= Advanced Crypto Engine）では、１ビットにつき２７クロック必要である。本発明の除算で必要なのは、プロセッサーが同じものの場合、１ビットにつきわずか６クロックである。このことは、４．５倍の加速に相当する。
【００１３】
本発明の除算概念は、ＳＰＡ攻撃に対しても安全性がある。なぜなら、電流または時間消費が、処理する数（すなわち、分子および分母）の特定のビットパターンに依存しないからである。
【００１４】
添付の図を参考にしながら、本発明の好ましい実施例について以下に詳しく説明する。
【００１５】
図１は、除算を演算するための本発明の装置のブロック図である。図２は、好ましい実施例に基づく本発明の方法のブロック図である。図３は、補助数量から結果の抽出を説明するための２進長大数レジスタにおける補助数量を示す図である。
【００１６】
図について詳しく説明する前に、まず、本発明の除算概念を説明する。この概念は、分子と因数との第１積を法計算することに基づいている。ただし、法は、分母と因数との第２積と、整数との和である。
【００１７】
以下の式に基づいて、分子Ａを分母Ｎで割る除算の結果Ｑを算出する：
Ｑ＝Ａ／Ｎ                                                        （１）
一般的に限定されるものではないが、分子Ａと分母Ｎとの双方を２進数とし、以下の式を満たすものとする：
２ａ−１≦Ａ＜２ａ                                                （２ａ）
２ｎ−ｉ≦Ｎ＜２ｎ                                                （２ｂ）
式２ａ，２ｂは、分子Ａと分母Ｎとの桁数を示す。
【００１８】
式１を、以下のように書き換えることができる：
Ａ＝Ｑ・Ｎ＋Ｈ                                                  （３ａ）
式３の値Ｈを、以下のように計算する：
Ｈ＝Ａ−Ｑ・Ｎ                                                  （３ｂ）
ただし、値Ｈは、０よりもよりも大きいか、または、０に等しく、かつ、Ｎよりも小さい。
【００１９】
式３ａから、以下で注目することになる除算の結果Ｑが整数であり、変数Ｈが剰余であることがわかる。したがって、ＡとＮとの除算の結果Ｑは、いわゆるＤＩＶ演算の結果であり、剰余Ｈは、分子Ａを法としての分母Ｎによって法計算することにより得られる：
Ｈ＝ＡｍｏｄＮ                                                    （４）
ただし、各浮動小数点除算を、例えば小数点のシフト、および、隣接する整数への丸めによって、整数の除算に変換できる。通常は、浮動小数点除算は、演算装置内で、整数除算に変換される。
【００２０】
本発明に基づき、因数Ｆを導入する。この因数は、２進数システムでは、以下のように定義される：
Ｆ＝２ｅ                                                          （５）
ここでは、２進数システムを単なる例として考察するので、数２が底となり、底２を指数ｅ乗すると、因数Ｆが得られる。本発明では、因数Ｆが、以下の条件を満たしている必要がある：
Ｎ・Ｆ＞Ｑ                                                        （６）
または、式６に式５を挿入して：
Ｎ・２ｅ＞Ｑ                                                      （７）
すなわち、因数は、因数Ｆと除算（式１）の分母との積が、求めようとする除算の結果Ｑよりも大きいように決定されている。
【００２１】
ただし、除算の正確な結果Ｑが出ている必要はない。なぜなら、この結果を、演算している最中だからである。因数Ｆの大きさを正しく規定するためにＱの桁数だけは知っておく必要がある。
【００２２】
さて、分子と分母とから除算の結果の桁数を推定することは、一般的に問題ないことである。なぜなら、式６は、より大きいという条件だけを含んでいるからである。それゆえ、因数Ｆを非常に大きく選択すれば、アルゴリズムの正しい進行が常に確実になる。
【００２３】
しかし、因数をより小さく選択したほうが好ましい。なぜなら、因数は、除算の演算のために必要なレジスタの長さを決定するからである。因数を非常に大きく選択する場合、非常に長いレジスタが必要となる。一方、より短い因数Ｆを選択すると、レジスタはより短くなる。以下の式８は、２進の場合（式５）について、変数ｅの好ましい大きさの規定の仕方を示す：
ｅ≧ａ＋２−２ｎ                                                （８）
式８は、分子Ａ（式２ａ）についての情報および分母Ｎ（式２ｂ）についての情報だけを含む。ｅの大きさを式８のように規定すると、式６の因数に対する条件が常に満たされる。
【００２４】
式３に因数Ｆを乗算すると、以下の式となる：
Ａ・Ｆ＝Ｑ・Ｎ・Ｆ＋Ｈ・Ｆ                                      （９）
さらに、式４の両辺に、同じく因数Ｆを乗算すると、以下の式１０となる：
Ｈ・Ｆ＝Ａ・Ｆｍｏｄ（Ｎ・Ｆ）                                （１０）
さらに：
０≦Ｈ・Ｆ＜Ｎ・Ｆ                                            （１１）
が成り立つ。この式１１は、式１０の法計算が、法Ｎ・Ｆの剰余類の範囲内になければならないことを示している、すなわち、０に等しいか、あるいは、０よりも大きく、かつ、Ｎ・Ｆよりも小さい必要がある。
【００２５】
さて、式９の右辺に、結果Ｑを加算し、同時に、減算する。このことは、以下の式に相当する：
Ａ・Ｆ＝Ｑ・Ｎ・Ｆ＋Ｑ＋Ｈ・Ｆ−Ｑ                            （１２）
式１２を、式１２の右辺にある最初の２項の結果Ｑが括弧の外になるように書き換えると、以下のようになる：
Ａ・Ｆ＝Ｑ（Ｎ・Ｆ＋１）＋Ｈ・Ｆ−Ｑ                          （１３）
あるいは、式１２を、ＨＦとＱとの和を算出し、最初の２項の差は算出しないように書き換えることもできる：
Ａ・Ｆ＝Ｑ（Ｎ・Ｆ−１）＋Ｈ・Ｆ＋Ｑ                        （１３’）
差Ｈ・Ｆ−Ｑ（またはその和）が、式の左辺にくるように式１３または１３’を書き換えると、以下のようになる：
Ｈ・Ｆ−Ｑ＝Ａ・Ｆ−Ｑ（Ｎ・Ｆ＋１）                          （１４）
「代わりに和をとる」場合については以下の結果となる：
Ｈ・Ｆ＋Ｑ＝Ａ・Ｆ−Ｑ（Ｎ・Ｆ−１）                        （１４’）
次に、式１４または式１４’を、式３ａおよび式３ｂと比較すると、式１４は、新しい除算のための新しい決定式であることが分かる。この場合、式１４または式１４’の左辺にある差または和（すなわち、求めようとする結果Ｑを含む補助数量（Ｈ・Ｆ−Ｑ）または（Ｈ・Ｆ＋Ｑ））は、分子Ａ・Ｆを分母（Ｎ・Ｆ＋１）または（Ｎ・Ｆ−１）で割る整数の除算の剰余に相当している。
【００２６】
この除算の剰余（すなわち、式１４の左辺にある補助数量）を、以下の式１５によって式４と同じように演算できる：
Ｈ・Ｆ−Ｑ＝Ａ・Ｆｍｏｄ（Ｎ・Ｆ＋１）                        （１５）
したがって、式１５は、法計算である。この法計算の結果、補助数量Ｈ・Ｆ−Ｑが生じる。この補助数量から、以下に説明するように、様々な方法で、求めようとする結果Ｑを簡単に抽出できる。したがって、式１５は、除算（式１）を変形して得られる基本となる法計算である。ただし、上記式の左辺の差は、負になり得る。この場合は、式を満たすように法を加算する。なぜなら、除算による法計算の結果が、負であってはいけないからである。
【００２７】
「代わりに和をとる」場合については、以下の式となる：
Ｈ・Ｆ＋Ｑ＝Ａ・Ｆｍｏｄ（Ｎ・Ｆ−１）                      （１５’）
以下に示すように、補助数量Ｈ・Ｆ＋／−Ｑから求めようとする結果Ｑを様々に抽出することができる。
【００２８】
これについて、まず図３を参照して、分子Ａを分母Ｎで割る除算の結果Ｑを抽出するための方法を説明する。図３は、２進長大数レジスタ３００を示している。このレジスタには、式１５の右辺の法計算の結果が格納されている。長大数レジスタは、ｍｓｂ側とｌｓｂ側（msb = most significant bit = 最上位ビット; lsb = least significant bit = 最下位ビット）とを備えている。
【００２９】
そして、レジスタ３００には、数Ｈ・ＦおよびＱが、以下のように存在している。数Ｈ・Ｆは、大きな数であり、図３に示すように、そのビットパターンに関しては、数Ｈに対応している。なぜなら、数Ｈを長大数レジスタにおいてｉ位置だけ左へシフトさせると、数Ｈ・Ｆが、数Ｈから得られるからである。ただし、因数Ｆは、２ｅに選択されている。
【００３０】
さらに、図３の２進長大数レジスタ３００には、数Ｈ・Ｆと比較して小さい数「−／＋Ｑ」、すなわち、求めようとする結果Ｑの負値または正値が含まれている。長大数レジスタが大きく、数Ｈ、および、−Ｑまたは＋Ｑがレジスタ３００において一致しないように因数Ｆが大きく選択されている場合（このような場合を図３に示す）は、求めようとする数Ｑを、レジスタ３００から直接読み出せる。数Ｑは、−Ｑを反転して得られる。このために、レジスタのｌｓｂ側の相当するビットについて考察する（これは、−Ｑとなる）。次に、２の補数を通常に使用する場合、その中に含まれるビットパターンを反転する。求めようとする結果Ｑを得るために、その後、さらに、反転したビットに１を加算する。
【００３１】
したがって、反転されたビットに１を加算するという簡単な算数の演算が必要なだけである。例えばレジスタ内容を使用する減算のような、より大きな算数の演算は不要である。数Ｈ・ＦおよびＱの大きさが異なるので、レジスタ３００からＱを容易に選別して読み出すこと、すなわち、（式１５の左辺の）補助数量から抽出することが可能である。
【００３２】
ただし、数Ｈおよび−Ｑが、図３に示すレジスタにおいて重複領域を有さないほど因数Ｆを大きく選択する必要はない。たとえこれらの数が、重複領域を有しているとしても、以下に示すように、同じく数Ｑを補助数量から抽出できる。そのためには、式１６に示すような他の法計算を実施する：
Ｈ・Ｆ＝Ａ・Ｆｍｏｄ（Ｎ・Ｆ）                                （１６）
式１６は、式４に相当している。しかし、ここでは、因数Ｆが考慮されている。
【００３３】
求めようとする結果Ｑは、この場合、式１６の結果から式１５を減算することによって得られる：
Ｈ・Ｆ−（Ｈ・Ｆ−Ｑ）＝Ｑ                                    （１７）
補助数量、すなわち差Ｈ・Ｆ−Ｑが負である場合を区別することについて以下に説明する。式１５における差Ｈ・Ｆ−Ｑが負である場合、式１５の左辺に法（Ｎ・Ｆ＋１）を加算する。なぜなら、定義によると、法計算の結果は、常に正であるべきだからである。それゆえ、補助数量が負である場合、式１５の左辺に法を加算する。その結果、式１５を式１６から減算すると、以下のようになる：
Ｑ＝Ａ・Ｆｍｏｄ（Ｎ・Ｆ）−Ａ・Ｆｍｏｄ（Ｎ・Ｆ＋１）＋Ｎ・Ｆ＋１（１８）
以下に、図１について説明する。分子を分母で割る除算の結果を演算するため、または、後にさらに実施されるように、結果Ｑの倍数を演算するための好ましい装置のブロック図を示す。図１では、見やすいように、決定式を、１つのブロック１０に示す。本発明の装置は、因数（特に、数ｅ）を供給する手段１２を備えている。なお、この数ｅは、式６または式７を満たすように底２の指数として因数を形成する。
【００３４】
本発明の装置は、補助数量を演算する、すなわち式１５を計算する手段１４を備えている。最後に、本発明の装置は、Ｑを補助数量から様々な方法の一つで抽出する手段１６を備えている。様々な方法とは、例えば、図３に示す構成、または、他の法計算（式１６）および式１７に示すような２つの法計算の結果の減算である。
【００３５】
図２を参照しながら、以下に好ましい方法を説明する。この方法では、わずか４つのレジスタがあれば十分である。４つのレジスタとは、すなわち、分子Ａのための第１レジスタ、分母Ｎのための第２レジスタ、第１補助数量Ｈ１のための第３レジスタ、および、第２補助数量のための第４レジスタである。第５結果レジスタを任意に使用してもよい。または、所望により、分子レジスタ、分母レジスタまたは第１補助数量のための第３レジスタを、結果レジスタとして使用することもできる。
【００３６】
ステップ２０において、まず、値ｅを式８に基づいて選択する。次に、分子レジスタに第１積Ａ・Ｆを取り込む（ステップ２２）。続いて、分母レジスタに同じく第２積を取り込む（ステップ２４）。次に、ステップ２６において、式１６に基づいて法計算を実行する。次に、ステップ２６における計算の後、ステップ３０において基本計算式１５を計算するため、分母を１だけ増加する（ステップ２８）。続いて、ステップ３２において、式１７に示すように、２つの関連する式１５と１６との減算を実行する。ステップ３２において差を計算した後、ステップ３４において、この結果が負であるかどうか検査する。負である場合は、除算の結果Ｑを得る（ステップ３８）ために、法を加算する（ステップ３６）。
【００３７】
これに対し、ステップ３４において、ステップ３２で得られた結果が０よりも大きいことが確定すると、この結果を直接除算の結果として出力する（ステップ３８’）。
【００３８】
なお、本発明の図２に示す実施例は、特に、数ＨおよびＱが、図３の２進長大数レジスタ３００において重複している場合に有利に使用できる。なぜなら、この場合、図３を参照して説明したレジスタ３００の最下位ビットを読み出し、続いて、結果Ｑを得るために反転する方法は、正しい結果を導出しないからである。図２に示す本発明の実施例では、差Ｈ・２ｅ−Ｑから結果Ｑを抽出する手段１６が、ステップ２６，３２，３４および３６の機能を果たすことができる。
【００３９】
以下に説明するように、本発明の概念は、除算の結果だけではなく、複雑さを伴うことなく、除算の倍数を簡単に演算するためのためにも使用できる。このことは、式１５の右辺にある法について、数「１」の代わりに、整数ｘ＞１を使用すれば簡単に達成できる。この場合、同時に、式１５の左辺においても、結果Ｑに同じく整数ｘを乗算する。その結果、以下の式１９となる：
Ｈ・Ｆ−Ｑ・ｘ＝Ａ・Ｆｍｏｄ（Ｎ・Ｆ＋ｘ）                    （１９）
１よりも大きい数ｘを使用する場合、式６において因数Ｆの選択の際にこれについても考慮する必要がある。つまり、因数がｘ＝１と比較してｘ倍になっている必要があることを考慮する必要がある。
【００４０】
式１９について考察すると、後続のアルゴリズムステップが結果Ｑではなく、結果Ｑのｘ倍を必要とする場合に、結果Ｑ・ｘ（例えばレジスタ読み出しによって得られる）を直接使用できることが分かる。
【００４１】
あるいは、依然として結果Ｑが必要ではあるが、法（Ｎ・Ｆ＋ｘ）による法計算が、なんらかの理由でｘ＝１である場合よりも有利だと考えられる場合、代わりにＱをｘで序しても結果を得ることができる。このことを、特に、ｘが２の倍数であり、２進システムである場合、対応する位置の数だけ右へレジスタシフトすることによって達成できる。
【００４２】
式１９を式１６および式１７と同じように評価する場合、同じく、Ｑのｘ倍が得られる。
【００４３】
式１９からＱまたはＱの倍数を抽出するほかの方法は、評価に以下の式２０を使用することである。この場合、式２０は、概して式１９に相当しているが、ｘとは異なる整数ｙが選択されている。次に、式１９から式２０を減算する。その結果、以下の式２１が生じる。この場合、式２１の左辺には結果Ｑが生じず、結果Ｑの倍数、すなわち、ｙとｘとの差の倍数が生じる。（ｙ−ｘ）による除算を実行することにより、式２１から元のＱを得ることができる。差が１に等しいようにｙおよびｘを選択すると、この除算を省ける。
【００４４】
Ｈ・Ｆ−Ｑ・ｙ＝Ａ・Ｆｍｏｄ（Ｎ・Ｆ＋ｙ）                      （２０）
Ｑ・（ｙ−ｘ）＝Ａ・Ｆｍｏｄ（Ｎ・Ｆ＋ｘ）−Ａ・Ｆｍｏｄ（Ｎ・Ｆ＋ｙ）（２１）
ただし、パラメータｘおよびｙは、負でもよい。つまり、式（１３’）から（１５’）に関連して説明した方法と同じである。
【００４５】
したがって、本発明は、その柔軟性、安全性、および、性能ゆえに、特に暗号アルゴリズム、および、一般的に回路により確実かつ効率的に法計算を実施する暗号化コプロセッサーに適している。
【図面の簡単な説明】
【００４６】
【図１】除算を演算するための本発明の装置のブロック図である。
【図２】好ましい実施例に基づく本発明の方法のブロック図である。
【図３】補助数量から結果の抽出を説明するための２進長大数レジスタにおける補助数量を示す図である。
【符号の説明】
【００４７】
１０    決定ブロック
１２    供給する手段
１４    法計算する手段
１６    抽出する手段
２０    補助数の決定
２２    第１積の演算
２４    第２積の演算
２６    第１補助数量の演算
２８    法の追加
３０    補助数量の演算
３２    他の補助数量からの補助数量の減算
３４    結果の符合の検査
３６    法の加算
３８    結果の出力
３８’    結果の出力
３００    長大数レジスタ
【図１】
2005517980.tif 000003
【図２】
2005517980.tif 000004
【図３】
2005517980.tif 000005
【手続補正書】
【提出日】平成16年5月13日(2004.5.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
暗号アルゴリズム内で分子（Ａ）を分母（Ｎ）で割る除算の結果（Ｑ）、または、上記結果（Ｑ）の倍数を演算し、上記分子および上記分母が、上記暗号アルゴリズムにおけるパラメータである装置であって、
上記分母（Ｎ）との積が上記結果（Ｑ）よりも大きくなるように選択される因数を供給する手段（１２）と、
上記結果を含む補助数量を得るために、上記分子と上記因数との第１積を、上記分母と上記因数との第２積と、ある整数との和に等しい法を用いて、法計算する手段（１４）と、
上記補助数量から上記結果または上記結果の上記倍数を抽出する手段（１６）とを備えていることを特徴とする装置。
【請求項２】
上記供給する手段（１２）は、底の、ある補助数乗が、上記因数に等しいように上記因数を決定するように構成されていることを特徴とする請求項１に記載の装置。
【請求項３】
上記因数を乗算することがレジスタの位置をある数だけシフトさせることに相当するように、上記底を２とし、上記位置の上記ある数は上記補助数に等しいことを特徴とする請求項２に記載の装置。
【請求項４】
負の数を表すために、２の補数表示を使用し、
上記補助数量はレジスタ（３００）に格納されており、上記抽出する手段（１６）が、上記除算の上記結果（Ｑ）を得るために、上記結果を含む上記レジスタ（３００）の下位部分（−Ｑ）を読み出す手段と、読み出した値を反転し、１を加算する手段とを備えていることを特徴とする請求項１〜３のいずれか１項に記載の装置。
【請求項５】
上記抽出する手段（１６）は、
上記因数が乗算された上記分母が法として供給されて、他の補助数量として、上記因数が乗算された上記分子の法計算の結果を演算する手段（２６）と、
上記除算の上記結果を得るために、上記他の補助数量から上記補助数量を減算する手段（３２）とを備えていることを特徴とする請求項１〜３のいずれか１項に記載の装置。
【請求項６】
上記除算は、整数除算であることを特徴とする請求項１〜５のいずれか１項に記載の装置。
【請求項７】
上記補助数は、（上記分子の位置の数）−（上記分母の位置の数の２倍）＋２に等しいように選択されていることを特徴とする請求項３に記載の装置。
【請求項８】
上記抽出する手段（１６）は、上記結果が負であるかどうかを決定し（３４）、上記結果が負であれば、法計算する手段（１４）において使用するために供給される法を、上記結果に加算する構成であることを特徴とする請求項５に記載の装置。
【請求項９】
上記分子（Ａ）を格納するための第１レジスタと、
上記分母（Ｎ）を格納するための第２レジスタと、
上記他の補助数量（Ｈ２）を格納するための第３レジスタと、
上記補助数量（Ｈ１）を格納するための第４レジスタと、
上記結果（Ｑ）を得るために、上記計算する手段（１４）および上記抽出する手段（１６）を制御するレジスタ制御ユニットとをさらに備えていることを特徴とする請求項５に記載の装置。
【請求項１０】
上記結果にある整数の乗算数を乗算する演算を行い、
上記供給する手段（１２）は、ある因数を供給するように構成されており、この因数は、当該因数と、上記分母と、上記乗算数が乗算された上記結果との積が、上記除算の上記結果よりも大きいように選択され、
上記法計算する手段（１６）が、上記分母と当該因数との積と、上記乗算数との和に等しい法を使用するように構成されていることを特徴とする請求項１に記載の装置。
【請求項１１】
上記法計算する手段（１４）は、上記分母と上記因数との積と、ある整数との和に等しい法を使用するように構成されており、当該整数は、１よりも大きいか、または、１に等しく、
上記抽出する手段（１６）は、上記分母と上記因数との積と、ある他の整数との和に等しい法を使用するように構成されており、
当該他の整数は、当該整数とは異なり、その結果、当該他の整数と当該整数との差が１に等しい場合、上記抽出する手段（１６）によって上記除算の上記結果が得られ、または、ある整数の乗算数が乗算された上記結果が得られ、当該乗算数は、当該他の整数と当該整数との差に等しいことを特徴とする請求項１に記載の装置。
【請求項１２】
暗号化装置の暗号化コプロセッサーとして実現されていることを特徴とする請求項１〜１１のいずれか１項に記載の装置。
【請求項１３】
上記結果が反転せずに得られるように、上記整数が負であることを特徴とする請求項１〜３のいずれか１項に記載の装置。
【請求項１４】
上記他の数は、負の整数であることを特徴とする請求項１１〜１３のいずれか１項に記載の装置。
【請求項１５】
暗号アルゴリズム内で分子（Ａ）を分母（Ｎ）によって割る除算の結果（Ｑ）、または、上記結果（Ｑ）の倍数を演算し、上記分子および上記分母が、上記暗号アルゴリズムにおけるパラメータである方法であって、
上記分母（Ｎ）との積が上記結果（Ｑ）よりも大きくなるように選択される因数を供給する（１２）ステップと、
上記結果を含む補助数量を得るために、上記分子と上記因数との第１積を、上記分母と上記因数との第２積と、ある整数との和に等しい法を用いて、法計算する（１４）ステップと、
上記結果、または、上記結果の上記倍数を、上記補助数量から抽出する（１６）ステップとを含むことを特徴とする方法。
【国際調査報告】
2005517980.tif 000006
2005517980.tif 000007
2005517980.tif 000008
2005517980.tif 000009
2005517980.tif 000010
2005517980.tif 000011