(57)【要約】Ｆｉａｔ−ＳｈａｍｉｒプロトコルおよびＧｕｉｌｌｏｕ−Ｑｕｉｓｑｕａｔｅｒプロトコルなどのゼロ知識プロトコルが、特にスマート・カードおよび他のポータブル電子装置などの制限された計算資源を有する装置で、プロトコルのより効率的な実施をもたらすために、数のＭｏｎｔｇｏｍｅｒｙ表現に対するＭｏｎｔｇｏｍｅｒｙ乗算だけを使用して実施される。
2006510265.tif 000002
【特許請求の範囲】
【請求項１】
証明者装置内で数のＭｏｎｔｇｏｍｅｒｙ表現およびＭｏｎｔｇｏｍｅｒｙ乗算演算を使用するゼロ知識プロトコルを用いて、証明者装置内の秘密数ｓの知識を、前記秘密数の知識を有しない検証者装置によって検証する方法。
【請求項２】
前記ゼロ知識プロトコルが、Ｆｉａｔ−Ｓｈａｍｉｒプロトコルである、請求項１に記載の方法。
【請求項３】
前記ゼロ知識プロトコルが、Ｇｕｉｌｌｏｕ−Ｑｕｉｓｑｕａｔｅｒプロトコルである、請求項１に記載の方法。
【請求項４】
（ｉ）それ自体による前記秘密数ｓのＭｏｎｔｇｏｍｅｒｙ乗算である値ｖ＝ｓ２を前記検証者装置に供給するステップと、
（ｉｉ）ｒが乱数であり、前記証明者装置によって値ｘ＝ｒ×ｍｒを計算し、ｘの値を前記検証者装置に送るステップと、
（ｉｉｉ）前記検証者装置によって、集合｛０，１｝からｅのチャレンジ値を選択し、前記チャレンジ値を前記証明者装置に送るステップと、
（ｉｖ）前記証明者装置によって、値ｙ＝ｒ×ｍｓｅを計算し、前記値ｙを前記検証者装置に送るステップと、
（ｖ）前記検証者装置が、前に受け取られたｘ、ｙ、およびｖの前記値に従い、前記チャレンジ値ｅに従って、前記証明者の応答の真正性を検査するステップと
を含む、請求項２に記載の方法。
【請求項５】
前記証明者の応答の前記真正性を検査する前記ステップが、
ｅ＝１のチャレンジ値について、ｙ×ｍｙの値およびｖ×ｍｘの値を計算し、これらが同一であることを検査するステップと、
ｅ＝０のチャレンジ値について、ｙ×ｍｙの値を計算し、これが前に受け取ったｘの値と同一であることを検査するステップと
を含む、請求項４に記載の方法。
【請求項６】
前記証明者装置の前記真正性を確認するために複数の連続するラウンドについてステップ（ｉｉ）から（ｖ）を繰り返すステップをさらに含む、請求項４または５に記載の方法。
【請求項７】
前記秘密数ｓが、前記証明者装置で既知であるが前記検証者装置領域で既知でない別の数ｓ’のＭｏｎｔｇｏｍｅｒｙ表現であり、前記証明者装置によって、ｓ＝ｓ’Ｒ  ｍｏｄ  ｎに従ってｓ’からｓの前記値を計算するステップをさらに含み、Ｒ＞ｎであり、ｎおよびｒの値が、前記証明者装置および前記検証者装置の両方によって使用される、請求項４または５に記載の方法。
【請求項８】
ｓ×ｍｓ、ｒ×ｍｒ、およびｒ×ｍｓｅのＭｏｎｔｇｏｍｅｒｙ乗算が、式ａ×ｍｂ＝ａｂＲ−１  ｍｏｄ  ｎに従って実行され、Ｒ＞ｎであり、ｎおよびＲの値が、前記証明者装置および前記検証者装置の両方によって使用される、請求項４に記載の方法。
【請求項９】
ｙ×ｍｙおよびｓ２×ｍｘのＭｏｎｔｇｏｍｅｒｙ乗算が、式ａ×ｍｂ＝ａｂＲ−１  ｍｏｄ  ｎに従って実行され、Ｒ＞ｎであり、ｎおよびＲの値が、前記証明者装置および前記検証者装置の両方によって使用される、請求項５に記載の方法。
【請求項１０】
前記ゼロ知識プロトコルでのすべての計算が、数のＭｏｎｔｇｏｍｅｒｙ表現を使用し、Ｍｏｎｔｇｏｍｅｒｙ乗算演算を使用して実行される、請求項１に記載の方法。
【請求項１１】
（ｉ）前記秘密数ｓのＭｏｎｔｇｏｍｅｒｙ  ｅ乗である値ｓｅを前記検証者装置に提供するステップと、
（ｉｉ）ｒが乱数であり、前記証明者装置によって、ｒのＭｏｎｔｇｏｍｅｒｙ  ｅ乗である値ｘ＝ｒｅを計算し、ｘの前記値を前記検証者装置に送るステップと、
（ｉｉｉ）前記検証者装置によって、集合｛０，１，…ｅ−１｝からｃのチャレンジ値を選択し、前記チャレンジ値を前記証明者装置に送るステップと、
（ｉｖ）前記証明者装置によって、値ｙ＝ｒ×ｍｓｃを計算し、前記値ｙを前記検証者装置に送るステップと、
（ｖ）前記検証者装置が、前記チャレンジ値ｃに従って前に受け取られたｘ、ｙ、およびｓｅの前記値に従って前記証明者の応答の真正性を検査するステップと
を含む、請求項３に記載の方法。
【請求項１２】
前記証明者の応答の前記真正性を検査する前記ステップが、
ｙｅの値およびｘ×ｍｓｅｃの値を計算し、これらが同一であることを検査するステップ
を含む、請求項１１に記載の方法。
【請求項１３】
前記証明者装置の前記真正性を確認するために複数の連続するラウンドについてステップ（ｉｉ）から（ｖ）を繰り返すステップをさらに含む、請求項１１または１２に記載の方法。
【請求項１４】
Ｍｏｎｔｇｏｍｅｒｙ表現の秘密数ｓを含む証明者装置であって、その証明者装置内で数のＭｏｎｔｇｏｍｅｒｙ表現およびＭｏｎｔｇｏｍｅｒｙ乗算演算を使用するゼロ知識プロトコルを用いて、前記秘密数自体の知識を伝えることなく、検証者装置に対して前記秘密鍵ｓの知識を証明するように適合された証明者装置。
【請求項１５】
乱数ｒを選択する手段と、
ｘを得るためにｒのＭｏｎｔｇｏｍｅｒｙ二乗を計算する手段と、
ｘを検証者装置に送る手段と、
チャレンジ値ｅを受け取る手段と、
ｙ＝ｒ×ｍｓのＭｏｎｔｇｏｍｅｒｙ積を計算する手段と、
ｙを検証者装置に送る手段と
をさらに含む、請求項１４に記載の証明者装置。
【請求項１６】
乱数ｒを選択する手段と、
ｘを得るためにｒのＭｏｎｔｇｏｍｅｒｙ  ｅ乗を計算する手段と、
ｘを検証者装置に送る手段と、
チャレンジ値ｃを受け取る手段と、
ｙ＝ｒ×ｍｓのＭｏｎｔｇｏｍｅｒｙ積を計算する手段と、
ｙを検証者装置に送る手段と
をさらに含む、請求項１４に記載の証明者装置。
【請求項１７】
証明者装置内で数のＭｏｎｔｇｏｍｅｒｙ表現およびＭｏｎｔｇｏｍｅｒｙ乗算演算を使用するゼロ知識プロトコルを用いて、証明者装置内の秘密数ｓ自体の知識なしで、前記秘密数の知識を検証する検証者装置。
【請求項１８】
前記秘密数ｓのＭｏｎｔｇｏｍｅｒｙ二乗ｖを受け取る手段と、
乱数ｒのＭｏｎｔｇｏｍｅｒｙ二乗ｘを受け取る手段と、
チャレンジ値ｅを前記証明者装置に送る手段と、
前記チャレンジ値ｅに従って、前記証明者装置から受け取った値ｘおよび／またはｖに対して検証される前記証明者の応答ｙのＭｏｎｔｇｏｍｅｒｙ二乗に従って、ｙの真正性を検査する手段と
をさらに含む、請求項１７に記載の検証者装置。
【請求項１９】
前記秘密数ｓのＭｏｎｔｇｏｍｅｒｙ  ｅ乗ｓｅを受け取る手段と、
乱数ｒのＭｏｎｔｇｏｍｅｒｙ  ｅ乗ｘを受け取る手段と、
チャレンジ値ｃを前記証明者装置に送る手段と、
前記チャレンジ値ｃに従って、前記証明者装置から受け取った値ｘ×ｍｓｅｃに対して検証される前記証明者の応答ｙのＭｏｎｔｇｏｍｅｒｙ  ｅ乗に従って、ｙの真正性を検査する手段と
をさらに含む、請求項１７に記載の検証者装置。
【請求項２０】
証明者装置内で数のＭｏｎｔｇｏｍｅｒｙ表現およびＭｏｎｔｇｏｍｅｒｙ乗算演算を使用するゼロ知識プロトコルを用いて、証明者装置内の秘密数ｓの知識を有することなく、前記秘密数の知識を検証者装置に証明する方法であって、
乱数ｒを選択するステップと、
ｘを得るためにＭｏｎｔｇｏｍｅｒｙ  ｅ乗を計算するステップと、
ｘを検証者装置に送るステップと、
チャレンジ値ｃを受け取るステップと、
ｙ＝ｒ×ｍｓｃのＭｏｎｔｇｏｍｅｒｙ積を計算するステップと、
ｙを検証者装置に送るステップと
を含む方法。
【請求項２１】
証明装置内で数のＭｏｎｔｇｏｍｅｒｙ表現およびＭｏｎｔｇｏｍｅｒｙ乗算演算を使用するゼロ知識プロトコルを用いて、証明者装置内の秘密数ｓの知識を有することなく、前記秘密数の知識を検証者装置によって検証する方法であって、
前記秘密数ｓのＭｏｎｔｇｏｍｅｒｙ二乗ｖを受け取るステップと、
乱数ｒのＭｏｎｔｇｏｍｅｒｙ二乗ｘを受け取るステップと、
チャレンジ値ｅを前記証明者装置に送るステップと、
チャレンジ値ｅに従って前記証明者装置から受け取ったｘおよび／またはｖの値に対して検証される前記証明者の応答ｙのＭｏｎｔｇｏｍｅｒｙ二乗に従ってｙの真正性を検査するステップと
を含む方法。
【請求項２２】
証明者装置内で数のＭｏｎｔｇｏｍｅｒｙ表現およびＭｏｎｔｇｏｍｅｒｙ乗算演算を使用するゼロ知識プロトコルを用いて、証明者装置内の秘密数ｓの知識を有することなく、前記秘密数の知識を検証者装置によって検証する方法であって、
前記秘密数ｓのＭｏｎｔｇｏｍｅｒｙ  ｅ乗を受け取るステップと、
乱数ｒのＭｏｎｔｇｏｍｅｒｙ  ｅ乗ｘを受け取るステップと、
チャレンジ値ｃを前記証明者装置に送るステップと、
チャレンジ値ｃに従って前記証明者装置から受け取ったｘ×ｍｓｅｃの値に対して検証される前記証明者の応答ｙのＭｏｎｔｇｏｍｅｒｙ  ｅ乗に従ってｙの真正性を検査するステップと
を含む方法。
【請求項２３】
コンピュータにロードされた時に、請求項１ないし１３および１９ないし２２のいずれか一項に記載の手順を前記コンピュータに実行させるように適合されたコンピュータ・プログラム・コード手段を有するコンピュータ可読媒体を含むコンピュータ・プログラム製品。
【請求項２４】
コンピュータにロードされた時に、請求項１ないし１３および１９ないし２２のいずれか一項に記載の手順を前記コンピュータに実行させるように適合されたコンピュータ・プログラム・コード手段を含む、電子データ伝送によって配布可能なコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、実際の秘密情報または秘密鍵を第２の当事者または盗聴する第三者に伝えることなく、第１の当事者の領域内のある「秘密」または秘密鍵情報の知識を第２の当事者が検証できるようにするゼロ知識プロトコルに関する。特に、本発明は、スマート・カードやモバイル電子装置などの制限された計算資源を有するシステムおよび装置でのゼロ知識プロトコルの実装での応用を有する。
【背景技術】
【０００２】
本明細書全体を通じて、秘密情報または秘密鍵（「ｓ」）を所有し、その情報を所有することを証明することを望む第１の当事者を、「証明者」（「Ｐ」）と称し、秘密の知識を実際には受け取らずにそうであることを検証することを望む第２の当事者を、「検証者」（「Ｖ」）と称する。証明者Ｐおよび検証者Ｖは、任意の適当な電子装置とすることができる。秘密情報は、以下で証明者Ｐの秘密数と称する、任意の数値とすることができる。
【０００３】
ゼロ知識プロトコルは、金融取引またはペイ・テレビジョン・アクセスに使用されるスマート・カードなどの装置の認証に、および携帯電話機または他の電子装置などのネットワークに接続される装置の識別に使用することができる、非常に貴重なツールである。
【０００４】
従来、証明者は、計算的に困難な数学的問題を提供し、検証者は、その問題に対する複数の可能な解の１つを要求する。証明者が、解に関係するクリティカルな情報を知っている場合に、証明者は、検証者の要求に従って、オンデマンドで、要求された入手可能な解のいずれかを（またはどれでも）提供することができる。証明者が、そのクリティカル情報を知らない場合には、要求された解を検証者に必ず提供できることは証明者にとって計算的に実行不能である。
【０００５】
通常、ゼロ知識プロトコルは、整数の因数分解または離散対数問題などのある困難な数学的問題に頼る。これらのプロトコルの短所は、これらが、通常は、モジュラ算術の広範囲の使用を必要とし、このモジュラ算術が、スマート・カードおよびポータブル電子装置などの低電力かつ能力の限られた装置に望ましい計算資源より多くの計算資源を必要とすることである。したがって、セキュリティ・プロトコルの通常の実施時間は、望ましいものより長い。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、プロセッサ装置で、特に少ない計算資源または低電力を有する装置で、ゼロ知識プロトコルを実施するより効率的な方法を提供することである。
【課題を解決するための手段】
【０００７】
一態様によれば、本発明は、証明者装置内で数のＭｏｎｔｇｏｍｅｒｙ表現およびＭｏｎｔｇｏｍｅｒｙ乗算演算を使用するゼロ知識プロトコルを用いて、証明者装置内の秘密数ｓの知識を、前記秘密数の知識を有しない検証者装置によって検証する方法を提供する。
【０００８】
もう１つの態様によれば、本発明は、Ｍｏｎｔｇｏｍｅｒｙ表現の秘密数ｓを含む証明者装置であって、その証明者装置内で数のＭｏｎｔｇｏｍｅｒｙ表現およびＭｏｎｔｇｏｍｅｒｙ乗算演算を使用するゼロ知識プロトコルを用いて、前記秘密数自体の知識を伝えることなく、検証者装置に対して前記秘密鍵ｓの知識を証明するように適合された証明者装置を提供する。
【０００９】
もう１つの態様によれば、本発明は、証明者装置内で数のＭｏｎｔｇｏｍｅｒｙ表現およびＭｏｎｔｇｏｍｅｒｙ乗算演算を使用するゼロ知識プロトコルを用いて、証明者装置内の秘密数自体の知識なしで、前記秘密数の知識を検証する検証者装置を提供する。
【００１０】
もう１つの態様によれば、本発明は、証明者装置内で数のＭｏｎｔｇｏｍｅｒｙ表現およびＭｏｎｔｇｏｍｅｒｙ乗算演算を使用するゼロ知識プロトコルを用いて、証明者装置内の秘密数ｓの知識を有することなく、前記秘密数の知識を検証者装置に証明する方法であって、
乱数ｒを選択するステップと、
ｘを得るためにＭｏｎｔｇｏｍｅｒｙ  ｅ乗を計算するステップと、
ｘを検証者装置に送るステップと、
チャレンジ値ｃを受け取るステップと、
ｙ＝ｒ×ｍｓｃのＭｏｎｔｇｏｍｅｒｙ積を計算するステップと、
ｙを検証者装置に送るステップと
を含む方法を提供する。
【００１１】
もう１つの態様によれば、本発明は、証明者装置内で数のＭｏｎｔｇｏｍｅｒｙ表現およびＭｏｎｔｇｏｍｅｒｙ乗算演算を使用するゼロ知識プロトコルを用いて、証明者装置内の秘密数ｓの知識を有することなく、前記秘密数の知識を検証者装置によって検証する方法であって、
前記秘密数ｓのＭｏｎｔｇｏｍｅｒｙ二乗ｖを受け取るステップと、
乱数ｒのＭｏｎｔｇｏｍｅｒｙ二乗ｘを受け取るステップと、
チャレンジ値ｅを前記証明者装置に送るステップと、
チャレンジ値ｅに従って前記証明者装置から受け取ったｘおよび／またはｖの値に対して検証される前記証明者の応答ｙのＭｏｎｔｇｏｍｅｒｙ二乗に従ってｙの真正性を検査するステップと
を含む方法を提供する。
【００１２】
もう１つの態様によれば、本発明は、証明者装置内で数のＭｏｎｔｇｏｍｅｒｙ表現およびＭｏｎｔｇｏｍｅｒｙ乗算演算を使用するゼロ知識プロトコルを用いて、証明者装置内の秘密数ｓの知識を有することなく、前記秘密数の知識を検証者装置によって検証する方法であって、
前記秘密数ｓのＭｏｎｔｇｏｍｅｒｙ  ｅ乗を受け取るステップと、
乱数ｒのＭｏｎｔｇｏｍｅｒｙ  ｅ乗ｘを受け取るステップと、
チャレンジ値ｃを前記証明者装置に送るステップと、
チャレンジ値ｃに従って前記証明者装置から受け取ったｘ×ｍｓｅｃの値に対して検証される前記証明者の応答ｙのＭｏｎｔｇｏｍｅｒｙ  ｅ乗に従ってｙの真正性を検査するステップと
を含む方法を提供する。
【００１３】
本発明の実施形態を、例により、添付図面を参照してこれから説明する。
【発明を実施するための最良の形態】
【００１４】
好ましい例で、本発明は、既存の基本的なＦｉａｔ−Ｓｈａｍｉｒプロトコルに対する改善を提供する。
【００１５】
Ｆｉａｔ−Ｓｈａｍｉｒプロトコルの目的は、証明者Ｐが、検証者Ｖに、または実際にプロトコルを盗聴するだれにも秘密を明かさずに、秘密ｓ（数）を知っていることをＶに確信させることである。
【００１６】
有効であるためには、このプロトコルは、従来、かなり多数のラウンド（または「試行」）を介して行われる。各ラウンドが、Ｐが実際に数ｓを知っていることの高い度合の確信をＶに与える。
【００１７】
数ｓは、証明者の領域内で秘密のままになる。第１の例では、証明者Ｐが、信頼される第三者に、数ｓの二乗のｎを法とする剰余、ｖ＝ｓ２  ｍｏｄ  ｎを与える。たとえば、ｖを、証明者Ｐの公開鍵とすることができ、秘密鍵ｓは、ｓ＝ｓｑｒｔ（ｖ）  ｍｏｄ  ｎになる最小の事例である。信頼される第三者は、一般に、その構成素因数から法ｎを作成すると仮定される。
【００１８】
信頼される第三者は、検証者Ｖにｖを供給する。ｎは、Ｖに未知の少なくとも２つの大きい素数の積（通常は１０２４ビットまたは２０４８ビットの数）なので、因数分解は極端に困難であり、これによって、ｓ２を与えられてｓを導出することが計算的に実行不可能になり、したがって、信頼される第三者は、Ｖに、ｓを明かさずにｓ２の値を与えることができる。
【００１９】
Ｆｉａｔ−Ｓｈａｍｉｒプロトコルの各ラウンドは、３つの段階で働く。
【００２０】
段階１
証明者Ｐは、乱数ｒ  ｍｏｄ  ｎを選択し、ｒ２  ｍｏｄ  ｎを計算することと、これを検証者Ｖに送ることによって、検証者Ｖに委任する。検証者Ｖが、前と同一の理由（未知の因数分解を有する大きい合成数の平方根剰余をとることは、計算的に実行不可能である）から、ｒを計算できないことに留意されたい。
【００２１】
段階２
検証者Ｖは、証明者Ｐに尋ねる２つの質問のうちの１つを選択する。証明者は、２つの質問のどちらに答えることになるかを事前に知らないが、真に秘密ｓを知る場合に限って、その両方に正しく答えることができる。証明者は、積ｒ．ｓ  ｍｏｄ  ｎの値または証明者が選択したばかりのｒの値のいずれかについて質問することができる。
【００２２】
これは、一般に、Ｖが、「チャレンジ」または「試験」と称する、質問の選択を示すビットｅをＰに送ることによって実行され、証明者は、回答ｙ＝ｒ．ｓｅ  ｍｏｄ  ｎ（ただしｅは｛０，１｝に含まれる）を供給しなければならない。
【００２３】
段階３
証明者Ｐは、要求されたｙ＝ｒ．ｓｅ  ｍｏｄ  ｎを供給し、検証者が、その結果を次のように検査する。
【００２４】
チャレンジがｅ＝１に関するものである場合に、検証者は、ｒ．ｓ  ｍｏｄ  ｎを受け取ったと期待する。ｒが、Ｖに未知の乱数なので、検証者は、これからｓに関する情報を導出することができない）。したがって、検証者は、応答の二乗（すなわち、ｙ２  ｍｏｄ  ｎ。これは、（ｒｓ）２  ｍｏｄ  ｎでなければならない）が、ｒ２  ＊  ｓ２  ｍｏｄ  ｎと同一であることを検査する。検証者は、このラウンドの段階１でＰからｒ２を受け取り、信頼される第三者からｓ２（＝ｖ）を得る。
【００２５】
チャレンジがｅ＝０に関するものである場合に、検証者は、ｒを受け取ったと期待し、その二乗が、段階１で供給された値ｒ２  ｍｏｄ  ｎと一致することを検査する。
【００２６】
チャレンジｅ＝０のポイントは、ｓの知識なしで、Ｐを装う者がどのように振る舞うかに関する考察を与える時に明瞭になる。ｓを知らない装う者は、ｅ＝１チャレンジに対する正しい答えを（事前計算によって）捏造することができるが、どの質問を尋ねられるかを前もって知らないので、これは賭けになる。装う者は、
＊乱数ｒを選択し、信頼される第三者からｖを得、その後、段階１でＶに（ｒ２  ＊  ｖ−１）  ｍｏｄ  ｎを送り、
＊段階２でＶによってｅ＝１のチャレンジを与えられた場合に、段階３でのｙの値としてｒを答え、
＊これが、ｙ２＝ｒ２＝（ｒ２  ＊  ｖ−１）  ＊  ｖを検査するＶに受入可能に見える
ことによってこれを行うことができる。
【００２７】
しかし、装う者は、この場合にチャレンジｅ＝０に正しく答えることができない。というのは、装う者が、（ｒ２  ＊  ｖ−１）  ｍｏｄ  ｎの平方根を提示する必要があり、これが、ｖ−１  ｍｏｄ  ｎの平方根を知ることを必要とするからである。これと同等に、装う者は、ｖ  ｍｏｄ  ｎの平方根を知る必要がある、すなわち、装う者は、回答ｅ＝０を正しく知る必要がある。
【００２８】
その一方で、装う者は、ｅ＝０でチャレンジされた時に賭けに出ることができる。これには、乱数ｒを選択し、段階１でｒ２を提示し、段階３でチャレンジｅ＝０に応答してｒを提示することが用いられ、これは、やはりＶに受入可能に見える。しかし、この手法を選択した場合に、装う者は、段階２のチャレンジがｅ＝１である場合に、ｓの知識がないので、ｒ．ｓ  ｍｏｄ  ｎを供給することができない。
【００２９】
完全なプロトコルは、装う者が各ラウンドで正しい戦略を選択する５０：５０の可能性を有するので、Ｖが実際に装う者ではなくＰと会話していることにＶを満足させるのに十分な数のラウンドの実行を必要とする。プロトコルが、２０ラウンドすなわち、チャレンジｅ＝｛０，１｝に対する２０回の連続する正しい応答を必要とする場合に、ｓを知らない装う者が成功裡にＶに証明する見込みは、１００００００分の１より小さい。４０ラウンドの場合に、その確率は、１０１２分の１未満に減る。
【００３０】
各ラウンドが、ｒの新しい値の使用を必要とする。このプロトコルは、装う者が、予想される単純な乗算ｒ．ｓｅ  ｍｏｄ  ｎ以外にチャレンジに対する回答を計算できることを計算的に実行不能にすることによって決定される時間制限のうちにチャレンジに対する応答を提供することも必要とする。
【００３１】
このプロトコルの実行中の計算動作のすべてを、制限された計算能力を有する低電力装置によって簡単に実行でき、その結果、複数の連続するラウンドを素早く実行できるようになることが、明らかに有益である。
【００３２】
本発明によれば、上で述べたＦｉａｔ−Ｓｈａｍｉｒプロトコルなどのゼロ知識プロトコルを、プロトコルで使用される数量のＭｏｎｔｇｏｍｅｒｙ表現を使用して完全に実施できることが認められた。これは、証明者および検証者の両方の計算効率のかなりの改善を提供する。
【００３３】
提案される解決策は、数ｚ∈ＺｎのＭｏｎｔｇｏｍｅｒｙ表現に基づく。数ｚのＭｏｎｔｇｏｍｅｒｙ表現ｚｍは、ｚｍ＝ｚＲ  ｍｏｄ  ｎによって与えられ、ここで、数Ｒはｎより大きく、Ｒおよびｎの両方が、証明者装置および検証者装置に既知である。
【００３４】
Ｍｏｎｔｇｏｍｅｒｙ乗算は、次のように実行される。数ａおよびｂのＭｏｎｔｇｏｍｅｒｙ表現である２つの数ａｍおよびｂｍについて、剰余乗算は、次式によって与えられる。
【００３５】
ａｍ×ｍｂｍ＝ａｍｂｍＲ−１  ｍｏｄ  ｎ．
従来のＦｉａｔ−Ｓｈａｍｉｒプロトコルと同様に、ｎは、信頼される第三者の領域で秘密のままである２つの素数ｐおよびｑの積である公知の法である。
【００３６】
図１を参照すると、この方式で、秘密ｓ（ステップ１０１）を、別の数ｓ’のＭｏｎｔｇｏｍｅｒｙ表現とみなすことができる。信頼される第三者は、ｓ’２のＭｏｎｔｇｏｍｅｒｙ表現すなわちｓ２を保管することができ、ここで、二乗は、Ｍｏｎｔｇｏｍｅｒｙ乗算ｓ２＝ｓ×ｍｓによって実行され、下ではこれをｖと表す。これを、証明者Ｐの公開鍵とみなすことができる。一般に、Ｍｏｎｔｇｏｍｅｒｙ積ｓ２が、計算され（ステップ１０２）、信頼される第三者２０によってか、他の形で証明者から直接にかのいずれであっても、検証者領域に供給される（ステップ１０３）。このようにして、値ｖの完全性を保証することができる。
【００３７】
このステップ１０１から１０３は、以下に説明される３段階プロトコルの多数の繰り返しまたは使用について１回実行される、初期セット・アップ手順とみなすことができる。
【００３８】
段階１
変更されたプロトコルの第１段階では、Ｐが、乱数ｒ∈Ｚｎを選択し（ステップ１０５）、このｒは、別の数ｒ’のＭｏｎｔｇｏｍｅｒｙ表現と解釈することができる。Ｐは、ｒとそれ自身とのＭｏｎｔｇｏｍｅｒｙ乗算を実行し（ステップ１０６）、ｒ’２のＭｏｎｔｇｏｍｅｒｙ表現であるｒ２を作り（下ではｘと称する）、ｘ（＝ｒ２）を検証者に送る（ステップ１０７）。
【００３９】
段階２
変更されたプロトコルの第２段階では、検証者Ｖが、チャレンジｅ∈｛０，１｝を証明者Ｐに送る（ステップ１０８）。
【００４０】
段階３
変更されたプロトコルの第３段階では、Ｐが、ｒとｓｅのＭｏｎｔｇｏｍｅｒｙ乗算すなわち、ｒ×ｍｓｅ（下ではｙと称する）を計算し（ステップ１１０）、この数を検証者Ｖに送る（ステップ１１１）。ｙを受け取る時に（ステップ１１２）、Ｖは、チャレンジ値ｅに応じて、次の２つの検査のうちの１つを実行する（ステップ１１３）。
【００４１】
ｅ＝１の場合に、Ｖは、ｙ×ｍｙの値およびｖ×ｍｘの値を計算し（ステップ１１５）、２つの計算された値が等しいすなわち、ｙ２＝（ｖ×ｍｘ）であるかどうかを検査する（ステップ１１６）。これは、２つの通常の剰余乗算ではなく、２つのＭｏｎｔｇｏｍｅｒｙ乗算を必要とする。
【００４２】
代替のｅ＝０の場合に、検証者Ｖは、ｙ２＝ｙ×ｍｙを計算するが（ステップ１２０）、項ｓｅが１と等しいので、上式はｒ×ｍｒと等しい）。次に、Ｖは、ｙ２（ステップ１１１、１１２で送られた数ｙのＭｏｎｔｇｏｍｅｒｙ二乗）が、前にステップ１０６、１０７で送られた数ｘ（＝ｒ２）と等しいことを検査する（ステップ１２１）。これは、１つの通常の剰余乗算ではなく、１つのＭｏｎｔｇｏｍｅｒｙ乗算だけを必要とする。
【００４３】
ステップ１１６または１２１の検査のいずれかが失敗する場合に、それは、プロトコルの誤りを構成し（ステップ１２２）、検証者は、証明者Ｐが、秘密ｓの知識の確立に失敗したと結論する。
【００４４】
ステップ１１６または１２１の検査のいずれかが真と評価される場合に、ステップ１２５で、Ｐの完全性を満足するのに、すなわち、Ｐが秘密ｓを所有するとＶに確信させる（ステップ１２６）のに、このプロトコルのさらなる反復が必要であるかどうかに関する判断を行う。
【００４５】
さらなる反復が必要である場合に、新しい乱数値ｒを用いて、このプロトコルをステップ１０５から繰り返す。
【００４６】
変更されたプロトコルの結果として、ＰおよびＶの両方は、Ｍｏｎｔｇｏｍｅｒｙ乗算だけを実行する必要がある（それぞれステップ１０６および１１０ならびにステップ１１５および１２０）が、これは、通常の乗算ｍｏｄ  ｎ（通常のＦｉａｔ−Ｓｈａｍｉｒ方式の）より効率的である。
【００４７】
このプロトコルの実行中に、数をＭｏｎｔｇｏｍｅｒｙ表現に変換することおよびその逆は不要である。といのは、出発点の数ｓ、ｖ、およびｒが、既にＭｏｎｔｇｏｍｅｒｙ表現であるからである。これによって、変更されたプロトコルが、さらに効率的になる。
【００４８】
装う者Ｐが１または０のいずれかのチャレンジｅに関する賭けのどちらを選ぶかに依存して、（ｒ２×ｍｖ−１）の平方根またはｖの平方根のいずれかを計算することが、証明者を装う者Ｐ’にとって計算的に実行不可能であり、たしかに、ステップ１０６の送出とステップ１１２の受け取りの間にＶによって普通に受け入れられる時間枠内で計算的に実行不可能であることを、このプロトコルが必要とすることを理解されたい。
【００４９】
上で説明したプロトコルは、任意の適当なハードウェアまたはソフトウェアで実施することができる。好ましい実施形態を、図２に示す。
【００５０】
証明者装置１０は、スマート・カードや、ペイＴＶカード、クレジット・カードまたは携帯電話機用のＳＩＭカードなどの類似する低電力装置を備えることができる。装置１０は、スマート・カード自体を備えることができ、あるいはカードが挿入される装置と一緒にカードを備えることができる。たとえば、カードが、検証装置によって「読み取られる」（または問い合わせされる）場合に、カード自体に、プロセッサ１１の形態の限られた処理能力を設けることができる。カードが、Ｐの領域の一部を形成すると考えることもできる適当な装置（たとえば衛星ＴＶ受像機または携帯電話機）に挿入されるか、その中で使用される場合に、処理機能１１が、カードを受ける装置の中にあることができる。
【００５１】
検証者装置３０は、カード読み取り機（たとえばクレジット・カードの直接問い合わせ用）とすることができ、あるいは、カードがインストールされる装置に問い合わせるリモート装置とすることができる。たとえば、検証者装置３０は、許可カードが挿入されるセット・トップ・ボックスに問い合わせる衛星ＴＶ送信器とすることができる。代替案では、検証者装置３０を、携帯電話機およびそのＳＩＭカードと通信する携帯電話基地局とすることができる。
【００５２】
好ましい構成では、証明者装置１０は、Ｍｏｎｔｇｏｍｅｒｙ表現で保持されるｓ、ｒ、ｘ、およびｙのメモリ・レジスタと、乱数生成器１２とを備える。
【００５３】
好ましい構成では、検証者装置３０は、プロセッサ３１と、Ｍｏｎｔｇｏｍｅｒｙ表現のｖおよびｙのレジスタと、ｅ用の乱数生成器とを備える。
【００５４】
好ましい構成では、信頼される第三者装置２０が、プロセッサ３１を含み、Ｍｏｎｔｇｏｍｅｒｙ表現のｖのレジスタを維持する。第三者装置は、証明者１０の公開鍵／秘密鍵対としてのｖおよびｓを提供者とすることもでき、秘密の素数ｐおよびｑから導出されたｎの値を供給する。
【００５５】
乱数ｒおよび集合｛０，１｝からのｅの乱数値の生成に関して使用される時の表現「乱数（またはランダム）」は、単に、送出する当事者によって選択されるｒまたはｅの値が、受け取る当事者の領域で十分に予測不能でなければならず、発行される次の値の予測またはそれに関する推論の値の有用なパターンを、受け取る当事者が判定できないことを暗示することを理解されたい。
【００５６】
装置１０、２０、および３０のそれぞれが、データ転送を行うことができる任意の適切な接続を使用して互いに通信することができる。これには、ラジオ、マイクロ波、光、赤外線、音響、および類似物などの適切な媒体を使用する無線リンクが含まれる。接続は、直接電気接続による、過渡的または永久的、あるいは交換ベース・ネットワークまたはパケット・ベース・ネットワークを介するものとすることができる。
【００５７】
上述したように、数のＭｏｎｔｇｏｍｅｒｙ表現およびＭｏｎｔｇｏｍｅｒｙ算術と共に動作するようにＦｉａｔ−Ｓｈａｍｉｒプロトコルを変更できることが判定された。この原理は、ＲＳＡ様構造に基づく他のプロトコルにも拡張されることがわかっている。数のＭｏｎｔｇｏｍｅｒｙ表現を使用するようにＧｕｉｌｌｏｕ−Ｑｕｉｓｑｕａｔｅｒプロトコルが適合されるもう１つの例を、これから示す。
【００５８】
Ｇｕｉｌｌｏｕ−Ｑｕｉｓｑｕａｔｅｒプロトコルは、より高次のべきを利用する、Ｆｉａｔ−Ｓｈａｍｉｒプロトコルの拡張である。このプロトコルは、秘密数ｓの証明者の知識の確立に関する、メッセージの個数およびメモリ要件の両方の削減を可能にする。
【００５９】
Ｇｕｉｌｌｏｕ−Ｑｕｉｓｑｕａｔｅｒプロトコルでは、信頼される第三者が、２つのＲＳＡ素数ｐおよびｑを選択し、積ｎ＝ｐｑを計算する。信頼される第三者は、ｇｃｄ（ｅ，φ（ｎ））＝１を有する公開指数ｅ≧３を定義し、秘密指数ｄ＝ｅ−１  ｍｏｄ  φ（ｎ）を計算する。システム・パラメータ（ｅ，ｎ）が公開される。
【００６０】
図３を参照すると、本発明に従って変更されたプロトコルでは、すべての数が、Ｍｏｎｔｇｏｍｅｒｙ表現で与えられ、すべての計算が、Ｍｏｎｔｇｏｍｅｒｙ算術を使用して行われる。証明者Ｐの秘密は、ｓ∈Ｚｎであり（ステップ３０１）、別の数ｓ’のＭｏｎｔｇｏｍｅｒｙ表現と考えることができる。信頼される第三者ＴＴＰは、ｓ’ｅのＭｏｎｔｇｏｍｅｒｙ表現すなわち、ｓ×ｍｓ×ｍｓ…×ｍｓ（ｅ回）を計算し、保管する。検証者Ｖは、信頼される第三者からｓｅを受け取り、保管する。
【００６１】
このプロトコルは、次のように進行する。
【００６２】
Ｐは、数ｒ∈Ｚｎをランダムに選択する（ステップ３０５）。ｒは、別の数ｒ’のＭｏｎｔｇｏｍｅｒｙ表現と考えることができる。次に、Ｐは、ｒのＭｏｎｔｇｏｍｅｒｙ  ｅ乗：ｘ＝ｒｅ（すなわち、ｒ×ｍｒ×ｍｒ…×ｍｒ（ｅ回））を計算し、ｘを検証者Ｖに送る（ステップ３０６）。ｘが、ｒ’ｅのＭｏｎｔｇｏｍｅｒｙ表現であることに留意されたい。
【００６３】
Ｖは、ｘを受け取り（ステップ３０７）、チャレンジ値ｃ∈｛０，１，…，ｅ−１｝をランダムに選択し、Ｐに送る（ステップ３０８）。
【００６４】
チャレンジｃに応答して、Ｐは、ｙ＝ｒ×ｍｓｃ  ｍｏｄ  ｎを計算し（ステップ３１０）、ｙをＶに送る（ステップ３１１）。
【００６５】
ｙを受け取る時に（ステップ３１２）、Ｖは、Ｍｏｎｔｇｏｍｅｒｙべきｙｅを計算し（ステップ３１３）、Ｍｏｎｔｇｏｍｅｒｙべきｓｅｃを計算し（ステップ３１４）、ｙｅ＝ｘ×ｍｓｅｃであるかどうかを検査する（ステップ３１５）。そうでない場合には、プロトコルが失敗し（ステップ３２２）、Ｖは、Ｐがｓを知らないと結論しなければならない。
【００６６】
検査によってｙｅ＝ｘ×ｍｓｅｃが証明される場合に、十分な確かさの度合までＶがｓを知っていることを検証するために、プロトコルの十分な反復が実行されたかどうかを調べるためにＶが検査を行う（ステップ３２５）。そうである場合には、この処理が終了し（ステップ３２６）、そうでない場合には、Ｐによる新しい乱数ｒの選択からこのプロトコルを繰り返す（ステップ３０５）。匹敵する度合の確かさを達成するために、Ｆｉａｔ−Ｓｈａｍｉｒプロトコルより少数のラウンドを実行する必要があることが、Ｇｕｉｌｌｏｕ−Ｑｕｉｓｑｕａｔｅｒプロトコルの全般的な目標である。
【００６７】
他の実施形態は、意図的に、請求項の範囲に含まれる。
【図面の簡単な説明】
【００６８】
【図１】本発明によるプロトコルを示す概略的な流れ図である。
【図２】図１のプロトコルを実施するのに適する装置を示すブロック図である。
【図３】本発明による代替プロトコルを示す概略的な流れ図である。
【図１】
2006510265.tif 000003
【図２】
2006510265.tif 000004
【図３】
2006510265.tif 000005
【国際調査報告】
2006510265.tif 000006
2006510265.tif 000007