(57)【要約】Ｍを法とする値Ｅの逆法Ｒを計算するための方法において、法Ｍの少なくとも２つの因数Ｍ１，Ｍ２への分解が決定されて、対応する補助値Ｒ１，Ｒ２が因数Ｍ１，Ｍ２のそれぞれに対して計算され、それぞれの補助値Ｒ１，Ｒ２はそれぞれの因数Ｍ１，Ｍ２を法とする値Ｅの逆法であり、計算された補助値Ｒ１，Ｒ２を少なくとも用いて逆法Ｒが計算される。コンピュータプログラム製品及び携帯型データ記憶媒体は対応する特徴を有する。発明は機械により実施される場合に効率のよい逆法計算のための方法を提供し、この方法は、携帯型データ記憶媒体上での暗号計算のための使用に特に適している。【特許請求の範囲】
【請求項１】
特に暗号用途のための、Ｍを法とする値（Ｅ）の逆法（Ｒ）を計算するための方法において、
（ａ）  前記法（Ｍ）の少なくとも２つの因数（Ｍ１，Ｍ２）への分解を決定する工程（１０）、
（ｂ）  前記工程（ａ）で決定された前記因数（Ｍ１，Ｍ２）のそれぞれに対応する補助値（Ｒ１，Ｒ２）を計算する工程（１２，１４）、ここで、前記補助値（Ｒ１，Ｒ２）のそれぞれは前記因数（Ｍ１，Ｍ２）のそれぞれを法とする前記値（Ｅ）の逆法である、及び
（ｃ）  前記工程（ｂ）で計算された前記補助値（Ｒ１，Ｒ２）を少なくとも用いて前記Ｍを法とする前記値（Ｅ）の逆法（Ｒ）を計算する工程（１６）、
を含むことを特徴とする方法。
【請求項２】
前記少なくとも２つの因数（Ｍ１，Ｍ２）が与えられるかまたはわずかな負荷で計算可能であることを特徴とする請求項１に記載の方法。
【請求項３】
前記少なくとも２つの因数（Ｍ１，Ｍ２）が、それぞれが同様の長さを有するような方法で決定されることを特徴とする請求項１または２に記載の方法。
【請求項４】
前記工程（ｃ）において前記Ｍを法とする前記値（Ｅ）の逆法（Ｒ）が関係式、
Ｒ＝Ｒ１＋Ｒ２−Ｒ１・Ｒ２・Ｅ （ｍｏｄ Ｍ）          （１）
にしたがって計算されることを特徴とする請求項１から３のいずれか１項記載の方法。
【請求項５】
少なくとも１つの計算において、前記補助値の前記計算との関係において適用可能であれば、関係式（１）が反復法において繰り返し適用されることを特徴とする請求項４に記載の方法。
【請求項６】
工程（ｂ）における少なくとも１つの計算において前記方法の再帰呼び出しが行われることを特徴とする請求項１から４のいずれか１項記載の方法。
【請求項７】
前記法（Ｍ）が相異なる素因数を有し、及び／または前記工程（ａ）における少なくとも１つの計算において前記法（Ｍ）が少なくとも２つの相異なる因数（Ｍ１，Ｍ２）に分解されることを特徴とする請求項１から６のいずれか１項記載の方法。
【請求項８】
前記暗号用途が、ＲＳＡエンコード法またはＲＳＡ署名法におけるキー対の決定であることを特徴とする請求項１から７のいずれか１項記載の方法。
【請求項９】
コンピュータプログラム製品において、請求項１から８のいずれかの特徴をもつ方法をプロセッサに実行させるためのプログラム命令を有することを特徴とするコンピュータプログラム製品。
【請求項１０】
携帯型データ記憶媒体、特にスマートカードまたはＩＣモジュールにおいて、請求項１から８のいずれか１項記載の特徴をもつ方法を実行するように設定されていることを特徴とする携帯型データ記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は全般的には自動プロセッサにより効率よく実行可能なアルゴリズムの技術分野に関し、さらに詳しくは、特に逆法計算のための改善されたアルゴリズムに関する。本発明は、例えばスマートカードに関係して生じるような、暗号用途に特に適する。
【背景技術】
【０００２】
暗号法の分野においては、例えば、特許文献１に説明されるＲＳＡエンコード及び署名方法に対する一対のキーの生成に、逆法計算に対する方法が用いられる。ＲＳＡ法は、公開キー（Ｅ，Ｎ）及び秘密キーＲを用い、Ｎは２つの大きな素数Ｐ及びＱの積である。キー対を計算するため、値Ｐ，Ｑ及びＥが初めに確定される。次いで、Ｍ＝（Ｐ−１）・（Ｑ−１）であるＭを法とする値Ｅの逆法として秘密キーＲが計算される。
【０００３】
一般に、与えられた２つの整数Ｅ及びＭに対し、Ｍを法とする値Ｅの逆法は、０≦Ｒ＜Ｍ及び１＝Ｅ・Ｒ （ｍｏｄ Ｍ）を満たす数Ｒとして定義され、結果Ｒは１/Ｅとしても表される。逆法ＲはＥ及びＭが互いに素である場合に存在する。
【０００４】
与えられたＭを法とする与えられた値Ｅの逆法を計算するためのアルゴリズム自体は既知である。例えば、逆法計算のための拡張ユークリッドアルゴリズムの使用が、非特許文献１の４７ページ及び６７ページ（アルゴリズム３.６及び定理４.１）に説明されている。中国剰余定理による変換により、ＲＳＡキー対計算の適用例における効率の若干の増大が可能である。２進数に関して特に有利である、拡張ユークリッドアルゴリズムの変形が、非特許文献２に、３３９ページの練習問題３５及び６０６ページの解答に関して説明されている、スタイン（Stein）の方法である。
【０００５】
しかし、逆法計算のための上述の方法では、計算に関して比較的高い負荷がかかる。これらの方法には、例えば、法乗積（非特許文献１の付録１１.６，３０４ページを参照されたい）のような、別の基礎法計算作業の計算時間の数倍の時間が必要である。このことは、例えばスマートカードまたははその他のいずれかの携帯型データ記憶媒体のプロセッサにおける場合のような、比較的能力の低いプロセッサにより逆法計算が実行されなければならない場合に、特に問題である。
【特許文献１】米国特許第４４０５８２９号明細書
【非特許文献１】J. v. z. Gathen及びJ. Gerhard著，「現代計算機数式処理（Modern Computer Algebra）」，第１版，１９９９年，ケンブリッジ大学出版（Cambridge University Press）
【非特許文献２】Donald E. Knuth著，「コンピュータプログラミング技術（The Art of Computer Programming）」，第２版，第２巻，１９８１年，アディソン−ウエズレイ（Addison-Wesley），ｐ.３２１−３２４
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明の課題は、特に携帯型データ記憶媒体上での暗号計算に用いるに適するべきである、機械で実施される場合に効率のよい逆法計算のための方法を提供することである。
【課題を解決するための手段】
【０００７】
本発明にしたがえば、上記課題は、請求項１の特徴をもつ方法、請求項９にしたがうコンピュータプログラム製品及び請求項１０にしたがう携帯型データ記憶媒体により、完全にまたはある程度解決される。従属請求項は本発明の好ましい構成を定める。
【０００８】
本発明は、逆法計算に対する負荷が法の長さに強く依存するという基本的考察から出発する。したがって、本発明は、それぞれがより短い法に基づく、いくつかの部分計算に全計算を分割することを提案する。さらに精確には、本発明にしたがって法が少なくとも２つの因数に分解される。次いで、これらの因数のそれぞれが、それぞれの因数を法とする元の値の逆法である補助値の計算に用いられる。次いで、計算された補助値及び、利用可能であれば、別のデータから、総合結果が決定される。
【０００９】
本発明による基本アイデアは、ある値−この場合は法−の因数分解には一般に途方もない負荷がともなうことから、考えられもしないアイデアである。しかし、発明者は、実際上該当する状況の多くにおいては、法の少なくともある程度の因数分解が既知であるか、または他の情報から因数が容易に計算され得ることを認識した。これは、例えば、初めに述べた、法Ｍの因数Ｐ−１及びＱ−１がいかなる努力も必要とせずに利用できる、ＲＳＡ法に対するキー対計算に該当する。
【００１０】
本発明は効率のかなりの増大を提供し、最終的に用いられる逆法計算法において法の長さに依存する計算負荷が高いほど、効率は大きく増大することになる。したがって、本発明は、比較的能力の低いプロセッサによる実行に特に適する。本方法を用いることにより−通常の逆法計算法に比較して−スパイ攻撃に対する計算のセキュリティが損なわれることはない。しかし、特に高いセキュリティが要求される場合に、本発明をスパイ攻撃に対する適切な防護手段と併用することに全く問題はない。
【００１１】
請求項における本発明の方法工程の列挙順序は本発明の範囲の限定として解されるべきではない。むしろ、これらの方法工程が別の順序で、及び／または完全にあるいは部分的に並列に、及び／または完全にあるいは部分的にインターリーブされて、実行される、本発明の構成が提供される。さらに、本発明は、整数の処理に限定されない。本発明にしたがう方法は、例えば多項式、または一般には単位元をもつ可換環の元の評価として、実際上、用いることができる。
【００１２】
本発明にしたがい、法の因数への分解の決定が提供される。ここで、“決定”は、与えられた、既知の因数だけがアクセスされる場合も含むとされる。２つの因数しか知られていなければ、そのような状況においては、いかなる種類の選択も存在しない。より多くの因数が知られていれば、必要な数の因数が選択されることが好ましい。この場合、それぞれの因数の長さまたは大きさにしたがって、因数をソートするかまたは適切に結合することができる。ここで、“長さ”は特に、例えば２進法または１０進法のような、記数法における、因数の桁数として解されるべきである。
【００１３】
因数が素である必要はない。したがって、“因数分解”または“分解”は必ずしも素因数分解として解される必要はない。本発明の好ましい構成において、例えば、さらなる分解が知られていないか、または長さが大きく異なる因数を導くであろう場合には、その種の分解をせずに結合因数を処理することも提供される。効率上の理由のため、既知の方法による逆法の決定のための法として最終的に用いられるそれぞれの因数の長さの差異は、可能な限り小さい（例えば最大長の２０％または５０％は小さい）ことが望ましい。
【００１４】
ある値の因数分解は一般に計算に関して極めて高い負荷がかかるから、本発明の方法は、法の少なくとも２つの因数が知られているか、または最小限の負荷で決定され得る場合にのみ用いられることが好ましい。特に、決定された最長の因数を法とする値の逆法の決定よりも多くの計算作業が因数分解に全く必要ではない場合に、ここでの意味での最小限の負荷とされる。
【００１５】
本方法は、既にして、２つまたは３つあるいはそれより多くの因数への法の単一分解に有意に用いることができる。より多くの因数が知られているかまたは容易に決定可能であれば、本方法を繰り返して実行できる、再帰的なまたは反復するプログラミングが可能である。法Ｍは相異なる素因数を有するか、または少なくとも１回の計算工程で少なくとも２つの相異なる因数に分解されることが好ましい。
【００１６】
本発明にしたがうコンピュータプログラム製品は本発明にしたがう方法を実施するためのプログラム命令を有する。この種のコンピュータプログラム製品は、例えば、本発明にしたがう計算プログラムが格納されている、半導体メモリまたはディスケットまたはＣＤ−ＲＯＭとすることができる。この種のコンピュータプログラム製品は、特にスマートカードの作成に用いるために提供することができる。
【００１７】
さらに、上述の特徴及び／または方法に関する従属請求項に述べられる特徴に対応する特徴をもつコンピュータプログラム製品及び／または携帯型データ記憶装置が、好ましい構成において、発展形として与えられる。
【００１８】
本発明のさらなる特徴、利点及び目的は、以下のいくつかの実施形態例及び代替実施形態の詳細な説明から明らかになる。簡略な図面が参照される。
【発明を実施するための最良の形態】
【００１９】
図１に簡略に示される方法は、携帯型データ記憶媒体、特にスマートカードまたはＩＣモジュールのプロセッサにより実行されるべく、提供される。この目的のため、本方法は、データ記憶媒体のＲＯＭまたはＥＥＰＲＯＭに格納された、上記プロセッサに対するプログラム命令の形態で実施される。
【００２０】
本実施形態例において、本発明の方法はＲＳＡエンコード法またはＲＳＡ署名法に対する秘密キーＲの計算に用いられる。与えられた値Ｅ並びに与えられた素数Ｐ及びＱに対し、秘密キーＲは、Ｍ＝（Ｐ−１）・（Ｑ−１）であるＭを法とする、値Ｅの逆法である。したがって、法Ｍの因数Ｐ−１及びＱ−１は既知である。これらの因数自体は素数ではないという事実は、本方法のシーケンスを損なわない。代替実施形態において、本方法は他の使用目的、特に法Ｍの因数分解が知られているかまたは労力をほとんどかけずに計算することができる使用目的に対して、提供される。
【００２１】
本方法の工程１０において、法Ｍの２つの因数Ｍ１及びＭ２への分解が決定される。これらの２つの因数Ｍ１及びＭ２は、本実施形態例においては、単に既存の値Ｐ−１及びＱ−１であり、よって、いくつかの可能性の間での選択もさらなる計算工程も必要ではない。
【００２２】
次いで、工程１２及び１４において、補助値Ｒ１及びＲ２を得るために、Ｍ１及びＭ２をそれぞれ法とする値Ｍの逆法を決定するための２つの計算が実施される。これらの計算のため、例えば初めに述べた、中国剰余定理を用いるかまたは用いない、拡張ユークリッドアルゴリズムのような、いずれか既知の方法を用いることができる。工程１２及び１４においては、本発明にしたがう方法を再帰的に呼び出すことも可能である。このことは、以降でさらに詳細に扱う。
【００２３】
２つの補助値Ｒ１及びＲ２が存在すれば、工程１６において、以下の関係式、
Ｒ＝Ｒ１＋Ｒ２−Ｒ１・Ｒ２・Ｅ （ｍｏｄ Ｍ）                （１）
を適用することにより、結果Ｒの計算がなされる。数学的考察により、このようにして計算された値Ｒは実際にＭを法とするＥの逆法である。言い換えれば、Ｒ＝１/Ｅ （ｍｏｄ Ｍ）が成立する。
【００２４】
因数Ｍ１及びＭ２の大きさがほぼ同じであれば、言い換えれば、例えばそれぞれの２進数表示において長さがほぼ同じであれば、通常の逆法計算法における２つの工程１２及び１４のそれぞれに対する計算負荷は、Ｍを法とするＥの逆法計算に対する計算負荷のほぼ１/４に過ぎなくなる。工程１０にはいかなる計算作業も必要ではない。工程１６に対する負荷は、逆法計算よりかなり速く−例えば８倍速く−実行される２つの法乗積により実質的に決定される。したがって、本方法では、工程１２，１４及び１６に対して、Ｍを法とするＥの逆法計算の負荷のほぼ１/４＋１/４＋２/８＝３/４しか必要ではない。法Ｍの２つの因数Ｍ１，Ｍ２への単一分解しか行われない、本明細書に説明される方法の最も単純な構成においてさえ、ほぼ２５％の節約が得られる。
【００２５】
図１の方法の変形においては、工程１０において２つではなく、３つまたはそれより多い因数Ｍ１，Ｍ２,...，への分解が提供される。次いで、工程１６において、対応する数の補助値Ｒ１，Ｒ２,...，からＲを計算するために関係式（１）の拡張された公式が用いられる。
【００２６】
既述したように、工程１２及び／または１４において本方法は再帰的に呼び出すことができる。このことは、高々、値Ｍ１及び／またはＭ２のさらなる因数分解が知られているかまたは容易に計算できる場合に有意であるに過ぎないことはもちろんである。これが当てはまらない場合には、対応する計算分岐に対して再帰が終了され、逆法計算のための本質的に既知の別のアルゴリズムに頼ることになる。
【００２７】
再帰に対する別の終了条件は、分解されるべき値に対して長さがかなり異なる因数しか存在しないか、あるいは分解されるべき値またはその因数の大きさがあらかじめ設定された最小の大きさより小さい場合とすることができる。例えば、工程１２におけるＭを法とする逆法である秘密キーＲの計算において、（奇数の）素数Ｐに対してＭ１＝Ｐ−１が計算されることになれば、整数の因数分解Ｐ−１＝２・（（Ｐ−１）/２）が存在することは明らかである。（Ｐ−１）/２に対するさらなる因数が知られていなければ、因数２及び（Ｐ−１）/２を含む再帰呼び出しは一般に勧められない。
【００２８】
例として図２に示される再帰計算の呼び出し構造は完全に平衡である。元の法Ｍが第１の工程１０において２つの因数Ｍ１及びＭ２に分解され、これらの因数Ｍｘのそれぞれが第１の再帰段階において因数Ｍｘ１及びＭｘ２に分解され、これらの因数Ｍｘｙのそれぞれが第２の再帰段階において因数Ｍｘｙ１及びＭｘｙ２に分解される。そのようにして得られた８つの因数Ｍｘｙｚに対応する、因数Ｍｘｙｚを法とする値Ｅの逆法Ｒｘｙｚが補助値として計算される。再帰呼び出しからの復帰において、初めに補助値Ｒｘｙｚから工程１６にしたがって補助値Ｒｘｙが計算され、次いで補助値Ｒｘが計算され、最後に結果Ｒが計算される。
【００２９】
再帰がｋ＝２ｎ個の因数が存在するまでの一様な再帰深さｎをもって実施される、図２に示されるような平衡な計算に対して、負荷はＯ（ｍ（ｋ））基礎演算に過ぎず、ここでｍ（ｋ）は長さがｋの２つの数の法乗積に対する負荷を示す。この評価は、最終的に存在する２ｎ個の因数の全てがほぼ同じ長さを有すると仮定している。これは、Ｏ（ｍ（ｋ）・ｌｏｇ（ｍ（ｋ）））基礎演算のオーダーの負荷が必要である（非特許文献１の付録１１.１０，３０５ページを参照されたい）通常の方法と比較して、かなりの改善である。
【００３０】
多くの実用用途において、図２のような完全に平衡なシーケンスは達成され得ない。図３は、極端な場合である、法Ｍ＝Ｍ１・Ｍ２・Ｍ３・Ｍ４・Ｍ５から出発する完全に不平衡な計算シーケンスを示す。この種の計算は、例えばプログラムループを用いる、本方法の反復実施に対応する。ループは一対の補助値Ｒ１，Ｒ２から出発し、これに関係式（１）が適用される。それぞれのループサイクルにおいて、さらに１つの補助値Ｒ３，Ｒ４,...が、最終的に逆法Ｒが計算されるまで、関係式（１）のさらに１回の適用により加えられる。それぞれの場合に新しく必要とされる補助値Ｒ１，Ｒ２,...は、それぞれのループサイクルにおいて、対応する因数Ｍ１，Ｍ２,...から計算することができる。あるいは、補助値Ｒ１，Ｒ２,...の全てを、個別のループに先立って、因数Ｍ１，Ｍ２,...から決定することが可能である。
【００３１】
一般に、いかなる数の因数Ｍ１，Ｍ２,...も含む完全な因数分解を必ずしも必要とせずに提供される、本発明にしたがう方法は−再帰的実施または反復実施のいずれにおいても−Ｍを法とする値Ｅの逆法の決定に役立ち得る。この目的のため、それぞれの場合において、因数Ｍ１，Ｍ２,...から決定された一対の補助値Ｒ１，Ｒ２,...に関係式（１）が適用される。必要とされる計算負荷は、因数Ｍ１，Ｍ２,...の長さがほぼ均一である場合に、特に小さい。これを保証するため、準備段階において、またはそれぞれの場合における計算中に、２つまたはそれより多い因数Ｍｘ，Ｍｙ,...を結合することができる。結合された因数は、次いで、その因数分解が知られているであろうとしても、さらに分解されることはない値Ｍｘ・Ｍｙとして計算の一部となる。
【図面の簡単な説明】
【００３２】
【図１】本発明の一実施形態例において実行される計算工程の図を示す
【図２】再帰呼び出し構造をもつ計算シーケンスの略図を示す
【図３】反復計算シーケンスの略図を示す
【図１】
2006507516.tif 000002
【図２】
2006507516.tif 000003
【図３】
2006507516.tif 000004