(57)【特許請求の範囲】
【請求項１】
データ通信システム（１０）において、暗号化ユニット（１８、２０）を用いて署名端末によって生成されたデジタル署名を、受信端末において確認する方法であって、前記デジタル署名は１対の署名成分を有し、前記署名成分の一方は第１の秘密鍵ｄと第２の秘密鍵ｋとを組み入れ、前記第１の秘密鍵ｄは前記受信端末と前記署名端末とに知られており、前記署名成分の他方は前記第２の秘密鍵ｋと関連する関数と同等な値を有する、前記暗号化ユニット（１８、２０）において実行される方法において、
前記受信端末において前記第１の秘密鍵ｄを前記署名成分に適用して、前記第２の秘密鍵ｋと関連する前記関数と同等の値を回復するステップと、
前記回復された値と前記他方の署名成分とを比較して、前記署名の真正を判断するステップと、
を含むことを特徴とする方法。
【請求項２】
請求項１記載の方法において、前記回復された値は前記署名成分の一方の値を計算するのに用いられ、前記計算された値と前記署名成分とが比較され前記署名が確認されることを特徴とする方法。
【請求項３】
請求項１記載の方法において、前記回復された値の構造が所定のパラメータと比較され、前記署名が確認されることを特徴とする方法。
【請求項４】
請求項１記載の方法において、前記鍵の一方は長期的な鍵であり、前記鍵の他方はそれぞれの署名によって生成される短期的な鍵であることを特徴とする方法。
【請求項５】
請求項４記載の方法において、前記回復された値は前記短期的な鍵に対応することを特徴とする方法。
【請求項６】
請求項５記載の方法において、前記回復された値は、前記短期的な鍵から導かれ前記署名成分に含まれる短期的な公開鍵を計算するのに用いられることを特徴とする方法。
【請求項７】
請求項５記載の方法において、前記回復された値の少なくとも一部は暗号論的ハッシュ関数によってハッシュされ、結果的なハッシュ値は確認のために前記署名成分の一方と比較されることを特徴とする方法。
【請求項８】
複数の通信端末（１２、１４）含むデータ通信システム（１０）において、前記複数の通信端末（１２、１４）のそれぞれに含まれている暗号化ユニット（１８、２０）を用いて、秘密鍵ｄと、元ｇと前記秘密鍵ｄとの両方から導かれる公開鍵ｙとを有する前記複数の通信端末の中の１つである署名端末によって生成されるデジタル署名を確認する方法であって、
ａ）前記暗号化ユニット（１８、２０）が、少なくとも前記元ｇと前記署名端末によって短い署名パラメータとして用いられる値ｋとを第１の数学的関数に従って合成することによって生成された第１の署名成分と、前記第１の署名成分と前記秘密鍵ｄとメッセージｍと前記署名パラメータｋとを数学的に合成することによって生成された第２の署名成分とを用いてメッセージｍに署名することによって前記署名端末によって生成された前記デジタル署名を取得するステップと、
ｂ）前記暗号化ユニット（１８、２０）が、前記公開鍵ｙを用いることなく前記デジタル署名から値ｋ’を回復するステップと、
ｃ）前記暗号化ユニット（１８、２０）が、前記第１の数学的関数において前記回復された値ｋ’を用いて値ｒ’を導き、前記署名パラメータｋとｋ’とが等しいことを確認するステップと、
を含むことを特徴とする方法。
【請求項９】
請求項８記載の方法において、ｇは体Ｆ＊pの位数ｑの元であることを特徴とする方法。
【請求項１０】
請求項８記載の方法において、ｇはＥ（Ｆq）の中の素数位数ｎの点であり、Ｅは体Ｆq上で定義された楕円曲線であることを特徴とする方法。
【請求項１１】
請求項８記載の方法において、ｇは、有限体Ｆqn上で定義された楕円曲線上の点であることを特徴とする方法。
【請求項１２】
請求項８記載の方法において、前記署名パラメータｋは、区間［１，ｑ−１］に含まれるランダムに選択された整数であり、前記第１の署名成分は、ｐとｑとをｑがｐ−１を割る素数として、ｒ＝ｇｋｍｏｄｐｍｏｄｑによって定義される形式を有することを特徴とする方法。
【請求項１３】
請求項１２記載の方法において、ｈをハッシュ関数として、値ｅ＝ｈ（ｍ）を計算するステップを含み、前記第２の署名成分ｓが、ｓ＝ｋ−１（ｅ＋ｄｒ）ｍｏｄｑであることを特徴とする方法。
【請求項１４】
請求項１３記載の方法において、前記値ｋ’を回復するステップは、
（ａ）値ｚ＝（ｈ（ｍ）＋ｄｒ）ｍｏｄｑを計算するステップと、
（ｂ）ｚｍｏｄｑを反転するｚ−１を計算するステップと、
（ｃ）ｋ’−１＝ｓ（ｚ−１）ｍｏｄｑを計算するステップと、
（ｄ）ｋ−１ｍｏｄｑを反転することによって、ｋ’を計算するステップと、
を含むことを特徴とする方法。
【請求項１５】
請求項１４記載の方法において、前記署名パラメータｋと前記値ｋ’とが等しいことを確認する前記ステップは、
ｒ’＝ｇｋ‘ｍｏｄｐｍｏｄｑを計算するステップと、
ｋ＝ｋ’を確認するために、ｒ’とｒとを比較するステップと、
を含むことを特徴とする方法。
【請求項１６】
請求項１４記載の方法において、前記計算において、予め計算されたテーブルを用いるステップを含むことを特徴とする方法。
【請求項１７】
請求項１０記載の方法において、署名パラメータｋは、区間［２，ｎ−２］において選択された統計的に一意的であり予測不可能な整数ｋであり、前記第１の署名成分は、ｘを秘密鍵の１つの座標としてｒ＝ｘ，ｍｏｄｎによって定義される形式を有することを特徴とする方法。
【請求項１８】
請求項１７記載の方法において、ｈをハッシュ関数として、ｅ＝ｈ（ｍ）の値を計算するステップを含み、前記第２の署名成分ｓが、ｓ＝ｋ−１（ｅ＋ｄｒ）ｍｏｄｎによって与えられることを特徴とする方法。
【請求項１９】
請求項１８記載の方法において、前記値ｋ’を回復する前記ステップは、
（ａ）値ｚ＝（ｈ（ｍ）＋ｄｒ）ｍｏｄｎを計算するステップと、
（ｂ）ｚｍｏｄｎを反転することによって、ｚ−１を計算するステップと、
（ｃ）ｋ’−１＝ｓ（ｚ−１）ｍｏｄｎを計算するステップと、
（ｄ）ｋ−１ｍｏｄｎを反転することによって、ｋ’を計算するステップと、
を含むことを特徴とする方法。
【請求項２０】
請求項１９記載の方法において、前記署名パラメータｋと前記値ｋ’とが等しいことを確認する前記ステップは、
ｒ’＝ｇｋ‘ｍｏｄｎを計算するステップと、
ｋ＝ｋ’を確認するために、ｒ’とｒとを比較するステップと、
を含むことを特徴とする方法。
【請求項２１】
請求項１９記載の方法において、前記署名パラメータｋは、区間［１，ｐ−１］に含まれるランダムに選択された整数であり、前記第１の署名成分は、ｒ＝ｇｋｍｏｄｐ、ｈをハッシュ関数、｜｜を連接（concatenation）を表すとして、ｅ＝ｈ（ｍ｜｜ｒ）によって定義される形式を有することを特徴とする方法。
【請求項２２】
請求項２１記載の方法において、前記第２の署名成分ｓは、ｓ＝（ｄｅ＋ｋ）ｍｏｄｐによって定義されることを特徴とする方法。
【請求項２３】
請求項２２記載の方法において、前記値ｋ’を回復する前記ステップは、
（ａ）値ｋ’＝（ｓ−ｄｅ）ｍｏｄｐを計算するステップと、
（ｂ）値ｒ’＝ｇｋｍｏｄｐを計算するステップと、
（ｃ）値ｅ’＝ｈ（ｍ｜｜ｒ’）を計算するステップと、
（ｄ）ｋ’＝ｋを確認するために、前記値ｅ’とｅとを比較するステップと、
を含むことを特徴とする方法。
【請求項２４】
電子データ通信システム（１０）において、証明機関によって発行された証明書の真正を確認する方法であって、暗号化ユニット（１８、２０）によって実行される方法において、
前記証明機関が、前記証明書に１対の秘密鍵（ｄ、ｋ）から導かれた１対の署名成分を含ませるステップと、
前記証明機関が、前記秘密鍵の一方ｄを保持するステップと、
前記証明機関が、前記証明書を受け取り前記秘密鍵ｄを前記署名成分に適用して、前記秘密鍵の他方ｋの関数に対応する値を導くステップと、
前記導かれた値と前記関数とを比較して、前記証明書の真正を判断するステップと、
を含むことを特徴とする方法。
【請求項２５】
請求項２４記載の方法において、前記導かれた値は、所定のパラメータと比較され、前記証明書の真正が判断されることを特徴とする方法。
【請求項２６】
請求項２４記載の方法において、前記導かれた値は、前記秘密鍵の前記他方ｋに対応することを特徴とする方法。
【請求項２７】
請求項２６記載の方法において、前記一方の鍵は複数の署名において用いられる長期的な秘密鍵であり、前記他方の鍵はそれぞれの署名に対して導かれる短期的な鍵であることを特徴とする方法。
【請求項２８】
請求項２６記載の方法において、前記署名成分は前記他方の鍵から導かれる公開鍵を含み、この方法は、更に、
対応する公開鍵を、前記導かれた値から導くステップと、
前記署名成分における前記公開鍵と前記対応する公開鍵とを比較するステップと、
を含むことを特徴とする方法。
【請求項２９】
データ通信リンク（１６）によって接続された１対の通信端末（１２、１４）を有するデータ通信システム（１０）であって、前記通信端末のそれぞれは、１対の秘密鍵（ｄ、ｋ）を用いる公開鍵暗号方式を実現する暗号論的関数を暗号化ユニット（１８、２０）において有し、前記秘密鍵の一方ｄは前記通信端末の間の複数の通信に対して用いられ、前記秘密鍵の他方ｋはそれぞれの通信において前記通信端末の一方によって生成され、前記一方の秘密鍵ｄは、前記１対の通信端末（１２、１４）に共有されて、前記秘密鍵の前記他方ｋが前記一方の通信端末（１２）によって生成されたデジタル署名から前記他方の通信端末（１４）によって回復されることを可能にし、前記デジタル署名の署名成分と比較されて前記一方の通信端末（１２）の真正が確認されることを可能にすることを特徴とするデータ通信システム。
【請求項３０】
請求項２９記載のデータ通信システムにおいて、前記暗号論的関数は、楕円曲線暗号システムを用いて実現されることを特徴とするデータ通信システム。
【請求項３１】
データ通信システム（１０）においてそれぞれが秘密情報ｄを共有している１対の通信端末（１４、１４）の間でセッション鍵を確立し、交換される署名成分を確認する方法であって、それぞれの通信端末（１２、１４）における暗号化ユニット（１８、２０）を用いて実行される方法において、
ａ）前記通信端末の一方（１２）が、追加的秘密情報ｋを生成し、前記追加的秘密情報ｋからセッション鍵ｒを導くステップと、
ｂ）前記通信端末の前記一方（１２）が、前記秘密情報ｄと前記追加的秘密情報ｋとを署名アルゴリズムにおいて合成して、第１の署名成分を提供するステップと、
ｃ）前記通信端末の前記一方（１２）が、前記追加的秘密情報ｋから第２の署名成分を導くステップと、
ｄ）前記通信端末の前記一方（１２）が、前記第１及び第２の署名成分を前記通信端末の前記他方（１４）に転送するステップと、
ｅ）前記通信端末の前記他方（１４）が、前記秘密情報ｄを用いて前記追加的秘密情報ｋを前記第１の署名成分から取得し、前記秘密情報ｄと前記追加的秘密情報ｋとから前記セッション鍵ｒを生成するステップと、
ｆ）前記通信端末の前記他方（１４）が、当該通信端末の前記他方（１４）において取得された前記セッション鍵ｒに演算を実行することにより前記第２の署名成分に対応する値を取得し前記値と前記第２の署名成分とを比較することによって前記第２の署名成分を確認するステップと、
を含むことを特徴とする方法。
【請求項３２】
請求項３１記載の方法において、前記第１の署名成分は前記他方の通信端末（１４）と関連する公開情報を含み、前記他方の通信端末（１４）は前記公開情報を用いて前記追加的秘密情報ｋを取得することを特徴とする方法。
【請求項３３】
請求項３２記載の方法において、前記秘密情報ｄと前記公開情報とは前記署名アルゴリズムにおいて合成され、この合成は前記一方の通信端末（１２）によって予め計算され記憶されることを特徴とする方法。
【請求項３４】
請求項３３記載の方法において、前記合成は前記秘密情報ｄと前記公開情報との積であることを特徴とする方法。
【請求項３５】
請求項３１記載の方法において、前記追加的秘密情報ｋの一部が用いられ前記第２の署名成分が提供されることを特徴とする方法。
【請求項３６】
請求項３５記載の方法において、前記追加的秘密情報ｋは楕円曲線上の１点の座標を表し、前記一部は前記座標の１つであることを特徴とする方法。
【請求項３７】
請求項３５記載の方法において、前記一部は安全ハッシュ関数によってハッシュされ、前記第２の署名成分が提供されることを特徴とする方法。
【請求項３８】
第１の通信端末（１４）と前記第１の通信端末（１４）に接続された複数の第２の通信端末（１２ａ、１２ｂ、・・・）の中の選択された１つとの間でセッション鍵を確立し、交換される署名成分を確認する方法であって、それぞれの通信端末（１２、１４）における暗号ユニット（１８、２０）を用いて実行される方法において、
前記複数の第２の通信端末のそれぞれに秘密情報を提供するステップと、
前記秘密情報ｄのそれぞれを前記第１の通信端末（１４）においてメモリ（２４）に記憶し、前記記憶された秘密情報ｄのそれぞれを対応する第２の通信端末（１２）と関連付けるステップと、
前記複数の第２の通信端末（１２）の中の前記選択された１つが、前記秘密情報ｄと追加的秘密情報ｋとを署名アルゴリズムにおいて合成し、第１の署名成分を提供するステップであって、前記追加的秘密情報ｋは、前記第２の通信端末（１２）の中の前記選択された１つによって用いられてセッション鍵ｒを生成する、ステップと、
前記複数の第２の通信端末（１２）の中の前記選択された１つが、前記追加的秘密情報ｋから第２の署名成分を導くステップと、
前記第１の通信端末（１４）が、前記複数の第２の通信端末（１２）の中の前記選択された１つから、前記第１及び第２の署名成分を受け取るステップと、
前記第１の通信端末（１４）が、前記メモリ（２４）から、前記複数の第２の通信端末（１２）の中の前記選択された１つと関連付けられた前記記憶されている秘密情報ｄを検索し、前記秘密情報ｄを用いて前記追加的秘密情報ｋを取得して、前記複数の第２の通信端末（１２）の中の前記選択された１つに関する前記秘密情報ｄと前記追加的秘密情報ｋとから前記セッション鍵ｒを生成するステップと、
前記第１の通信端末（１４）が、当該第１の通信端末（１４）において取得された前記セッション鍵ｒに演算を実行することにより前記第２の署名成分を確認して前記第２の署名成分に対応する値を取得し、前記取得された値と前記第２の署名成分とを比較するステップと、
を含むことを特徴とする方法。
【請求項３９】
請求項３８記載の方法において、前記第１の署名成分は前記第１の通信端末（１４）と関連する公開情報を含み、前記第１の通信端末（１４）は前記公開情報を用いて前記追加的秘密情報ｋを取得することを特徴とする方法。
【請求項４０】
請求項３８記載の方法において、前記追加的秘密情報ｋの一部が用いられ前記第２の署名成分が提供されることを特徴とする方法。
【請求項４１】
請求項４０記載の方法において、前記追加的秘密情報ｋは楕円曲線上の１点の座標を表し、前記一部は前記座標の１つであることを特徴とする方法。
【請求項４２】
請求項４０記載の方法において、前記一部は安全ハッシュ関数によってハッシュされ、前記第２の署名成分が提供されることを特徴とする方法。
【請求項４３】
請求項８記載の方法において、前記公開鍵ｙを用いることなく前記署名から値ｋ’を回復する前記ステップは、前記第１の署名成分と前記第２の署名成分との少なくとも一方に前記秘密鍵ｄを適用してｋ’を回復するステップを含むことを特徴とする方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ伝送に関し、更に詳しくは、データを伝送している当事者のアイデンティティ（ＩＤ）を確認（認証）するデータ伝送システムに関する。
【０００２】
【従来の技術】
１対の通話者の間で、典型的には、１対のコンピュータ端末の間やパーソナル・カードとコンピュータ端末との間で、電子的にデータを通信することは広く知られている。このような通信は、トランザクションを行うために、バンキング環境で広範囲に用いられている。
【０００３】
そのようなトランザクションの完全性（インテグリティ）を維持するには、当事者のＩＤを確認できるシステムを実現することが必要であり、この目的のために、多数の署名プロトコルが開発されてきた。これらのプロトコルは、ディフィ・ヘルマン（Diffie Hellman）公開鍵暗号化方式を用いたエルガマル（El Gamal）署名プロトコルに基づいている。広く用いられている暗号化方式の１つに、ＲＳＡがあるが、安全な伝送を得るには、帯域幅を増加させる比較的大きなモジュラス（modulus）が用いられなければならないが、限定的な計算能力しか利用可能でない場合には、これは、一般に望ましくない。更に堅固な暗号化方式に、楕円曲線暗号システム（ＥＣＣ）として知られているものがあり、このシステムによれば、ＲＳＡ暗号システムに匹敵するセキュリティを、より小さなモジュラスで得ることができる。
【０００４】
基本的には、それぞれの当事者は、秘密鍵と、その秘密鍵から導かれる公開鍵とを有する。データ転送の際には、通常は、メッセージは、意図している受信者の公開鍵を用いて暗号化され、その受信者は、その人間だけが知っている秘密鍵を用いることにより、このメッセージを復号化できる。署名及び確認の目的のために、メッセージは、送信者の秘密鍵を用いて署名されることにより、記されている送信者の公開鍵を用いた処理によって確認することができる。送信者の秘密鍵は、送信者にだけしか知られていないので、送信者の公開鍵を用いて復号化が成功すれば、送信者のＩＤが確認されることになる。
【０００５】
エルガマル署名プロトコルは、有限体において離散対数を計算することが困難であることから、そのセキュリティを獲得している。エルガマル型の署名は、楕円曲線群を含む任意の群（group）で機能する。例えば、楕円曲線群Ｅ（Ｆq）が与えられると、Ｅ（Ｆq）に属するＰと、Ｑ＝ａＰに対しては、離散対数問題は、整数ａを見つけることに帰着される。基礎となる曲線が適切に選択されると、この問題は、計算的に実行不可能であり、従って、これらの暗号システムは、安全であると考えられる。
【０００６】
【発明が解決しようとする課題】
そのような方式を実現する様々なプロトコルが存在する。例えば、デジタル署名アルゴリズムＤＳＡは、エルガマル方式の変形である。この方式では、１対の通話者Ａ及びＢのそれぞれが、公開鍵と対応する秘密鍵とを作成する。通話者Ａは、自分の秘密鍵を用いて、任意の長さのメッセージｍに署名する。通話者Ｂは、この署名を、Ａの公開鍵を用いて、確認することができる。しかし、それぞれの場合に、送信者である通話者Ａと受信者である通話者Ｂとの両方が、典型的には累乗計算であるが、計算的に集約的な演算を実行して、署名を生成し確認することが要求される。どちらの当事者も適切な計算能力を有している場合であれば、これは特に問題を生じないが、一方又は両方の当事者の計算能力に制限がある場合、例えば、「スマート・カード」アプリケーションの場合などには、計算は、署名及び確認プロセスを遅延させることになる。
【０００７】
また、署名者が、自分自身の署名を確認することを要求される場合もある。例えば、公開鍵暗号システムでは、鍵の配送は、対称（symmetric）鍵システムの場合よりも容易である。しかし、公開鍵の完全性が、重要である。従って、そのようなシステムの通話者は、信頼できる第三者を使って、それぞれの通話者の公開鍵を認証する。この第三者は、証明機関（certifying authority = CA）であり、秘密の署名アルゴリズムＳTと、すべての通話者が知っているものと想定される確認アルゴリズムＶTとを有する。その最も単純な形式では、ＣＡは、ある通話者のＩＤをその公開鍵に拘束する証明書を提供する。これは、識別子とその通話者の認証された公開鍵とから成るメッセージに署名することから構成される。しかし、時には、ＣＡは、それ自身の証明書を認証又は確認することを望むこともある。
【０００８】
上述したように、署名の確認は、計算的な集約性を有し、実際的な時間内に完了させるためには、かなりの計算能力が要求される。通話者の一方の計算能力に制限がある場合、例えば、「スマート・カード」がキャッシュ・カードとして用いられている場合などには、カード上での計算が最小化されるようなプロトコルを採用することが好ましい。同様に、多数の署名を確認しなければならない場合などには、高速の確認方法が、望ましい。
【０００９】
従って、本発明の目的は、通話者の一方の制限された計算能力を用いて署名の確認を行うことを容易にする署名及び確認プロトコルを提供することである。
【００１０】
【課題を解決するための手段】
一般的な表現を用いると、本発明は、それぞれが共通の秘密の整数を共有している１対の通話者の間で、署名を生成し確認する方法を提供する。この方法は、通話者の一方において、選択された整数からセッション鍵を生成するステップと、前記セッション鍵の成分を選択し、その選択した成分を用いてメッセージを暗号化するステップと、前記選択した成分のハッシュを生成するステップと、前記共通の秘密の整数と、前記ハッシュと、前記選択した整数とを含む署名成分を計算し、その署名成分と、暗号化されたメッセージと、ハッシュとを他方の通話者に送るステップと、を含む。選択された整数は、共通の秘密の整数と暗号化されたセッション鍵とを用いて、署名成分に対して回復される。次に、回復されたセッション鍵のバランスを用いて、認証を、そしてオプションであるが、質問（challenge）を、受信者に提供する。
【００１１】
【発明の実施の形態】
本発明の実施例を、次に、添付の図面を参照して、説明する。
【００１２】
図１を参照すると、データ伝送システム１０は、データ伝送リンク１６によって相互接続された複数の通話者１２ａ、１２ｂ、…、１２ｔ（全体として、参照番号１２で示す）を含む。通話者１２は、典型的には、限定的な計算能力を有する電子端末であり、この例では、通話者１２は、限定的なメモリと計算能力とを有する「スマート・カード」の形式を有すると考える。データ伝送システム１０は、また、この実施例では、端末１２のそれぞれに伝送リンクによって接続された金融機関における端末である通話者１４を含む。この接続は、典型的には、通話者１２がシステム１０に周期的にアクセスする過渡的なものであるのが典型的であるが、恒久的な接続であってもよい。
【００１３】
通話者１２、１４は、それぞれが、共通の暗号システムを確立する暗号化ユニット１８、２０を有する。この例では、暗号化ユニット１８、２０は、基礎となる曲線パラメータとその曲線上のシード（seed）点Ｐとが確立されている楕円曲線暗号システムを実現している。
【００１４】
通話者１２は、それぞれが、この通話者１２によって長期的な秘密鍵として複数のトランザクションに用いられる秘密の整数ｄが埋め込まれているメモリ２２を含む。通話者１４は、公開鍵ＱBを有し、ｄＱBの多数の予め計算された値が、署名を容易にするために、対話者１２のアドレシング可能なメモリ２４に記憶されている。
【００１５】
数生成器２６が、それぞれのカードに含まれており、統計的には一意的であるが予想できない整数を、それぞれのトランザクションにおいて変化する短期的な秘密鍵として用いるために、それぞれのセッションの開始時に生成する。
【００１６】
通話者１４は、同様に、それぞれの通話者１２の長期的な秘密鍵ｄを記憶しそれを通話者のそれぞれのＩＤに相関させるデータバンクを有するメモリ２８を含む。
【００１７】
確認プロトコルを開始するには、通話者１２の一人が、メッセージｍを定式化し、伝送セッションの間に短期的な秘密鍵として作用するランダムな整数ｋを生成器２６から生成する。シード点Ｐを用いて、ｋＰに対応するセッション鍵ｒが計算される。ｋＰは、実際に、座標（ｘ，ｙ）を有する基礎となる曲線上の点である。
【００１８】
第１の署名成分ｅは、ｘ座標の２進表現を用いて、ｅ＝Ｅx（ｍ）となるようにメッセージを暗号化することによって、生成される。
【００１９】
第２の署名成分ｅ’は、セッション鍵ｒのｘ座標を、ｅ’＝ｈ（ｘ）となるようにハッシュすることによって、生成される。米国の国立標準及び技術局（ＮＩＳＴ）によって提唱された安全ハッシュ・アルゴリズム（ＳＨＡ−１）などの、適切な暗号論的ハッシュ関数が用いられる。
【００２０】
第３の署名成分ｓは、ｓ＝ａｅ＋ｋ（ｍｏｄｎ）の一般的な形式で生成される。ここで、ａは長期的な秘密鍵であり、ｅはメッセージ・ストリングをハッシュすることによって導かれる値であり、ｋは短期的な秘密鍵である。この実施例では、署名成分ｓは、次の特定の形式を有している。
【００２１】
【数１】
ｓ＝ｄ．ｈ（ｄＱB／／ｅ’）＋ｋ  （ｍｏｄｎ）
ここで、ｎは、基礎となる曲線の位数（オーダー）である。署名成分ｓは、通話者１２のメモリ２４からｄＱＢの予め計算された値を検索し、それをｘのハッシュ値に連接し、結果をハッシュすることによって、得られる。
【００２２】
署名成分ｓ、ｅ、ｅ’を含む署名は、次に、通話者１４に送られる。受信の際に、通話者１４は、通話者１２の指示されたＩＤに基づいて、データバンク２８から長期的な秘密鍵ｄを検索し、自分自身の公開鍵とＱＢと検索された成分ｅ’とを用いて、ハッシュｈ＝ｄＱB／／ｅ’を計算する。これと署名成分ｓとから、ｋに対応する値ｋ’が得られる。
【００２３】
ｋの計算された値とシード点Ｐとを用いて、短期的な鍵の計算された値、すなわち、ｋＰのｘ座標の値であるｘ’に関連する関数が得られる。次に、ｘ’の計算された値がハッシュされ、比較がなされて、ハッシュの結果的な値がｅ’の受信された値と対応することが確認される。この段階で、通話者の確認が得られ、必要となる累乗計算は、ｋＰの最初の計算だけである。
【００２４】
セッション鍵ｒの計算と、そのセッション鍵の一部分を後で用いることによって、安全な認証が、通話者１４に返されることが可能になる。座標ｘの値を計算すると、通話者１４は、次に、座標ｙを計算して、それを、認証として、メッセージｍ’を暗号化するのに用いる。従って、通話者１４は、Ｅy（ｍ’）を含むメッセージを送ることによって、通話者１２に応答する。受信の際に、通話者１２は、セッション鍵Ｒのｙ座標を知っており、質問を含むメッセージｍ’を回復することができる。通話者１２は、メッセージを復号化し、質問を通話者１４に返し、それによって、両方の通話者は確認され同期化される。更なるメッセージを、セッション鍵ｒを暗号化鍵として用いて、通話者１２及び１４の間で転送することもできる。
【００２５】
従って、上述のプロトコルでは、１対の鍵が用いられ、通話者１４は、長期的な秘密鍵を与える一方の鍵の制御を保持し、これらを用いて、通話者１２によって計算される短期的なセッション鍵を回復する。回復された短期的な鍵は、次に、例えば、ｅ’をチェックすることによって、伝送された他の署名成分と共に、確認に用いることができる。
【００２６】
また、鍵の回復された値の構造は、例えば、パターン、数、又は桁の分布によって、確認を示すことができ、それによって、回復された値を、確認のために、所定のパラメータと比較することができる。回復された成分と送られた情報との間の関係によって、セッション鍵の他の部分を用いて、回答し、同期を確立することができる。
【００２７】
この実施例では、署名の確認は、累乗計算を含まない計算的に好都合な態様で実行されるので、比較的迅速に行うことができることに注意すべきである。
【００２８】
システム１０は、通話者１２の間での、又は、通話者１２と通話者１４との間での公開鍵暗号化システムとして機能するが、迅速な確認が要求される場合には、対称鍵プロトコルの属性を用いることもできることに注意すべきである。
【００２９】
次に説明するように、別の署名を用いることができるし、一般に、任意のエルガマル署名方程式を用いることができる。署名確認の別の実施例は、図３に示されているように、ＤＳＳ署名プロトコルを用いて実現することができる。このプロトコルでは、短期的な公開鍵ｒが、群の生成元αのランダムな整数ｋのベキ乗、すなわち、ｒ＝αkを計算することによって、導かれる。楕円曲線暗号システムが用いられる場合には、累乗計算は、点Ｐのｋ回の加算、すなわち、ｒ＝ｋＰによって、実行される。
【００３０】
ＤＳＳプロトコルでは、署名成分は、次の形式を有する。ただし、ｄは長期的な秘密鍵であり、ｍはメッセージである。
【００３１】
【数２】
ｓ＝ｋ-1（ｈ（ｍ）＋ｄｒ）  （ｍｏｄｎ）
署名成分ｓ、ｒの値とメッセージｍとは、通話者１２によって、通話者１４に送られる。
【００３２】
通話者１４は、長期的な秘密鍵ｄを共有しているので、ＩＤから、短期的な秘密鍵ｋ＝ｓ（ｈ（ｍ）＋ｄｒ）を検索することができる。
【００３３】
ｒ、ｍ、ｓの値は送られ、ｄは通話者１４によって知られているので、ｋを計算することができる。
【００３４】
上述のように、ｋは、例えば、１が特定のパターンとなったりある数だけ存在するなどのように、特定の構造を有するように構成することができる。また、確認は、回復したｋからｒの値を計算し（すなわち、ｒ＝αk）、それを送信されたｒと比較することによって、チェックすることができる。このステップには、累乗計算が必要であるから、計算的な要求が大きいが、望まれる場合には用いることができる。
【００３５】
再び、長期的な秘密鍵ｄを共有することによって、確認は、短期的な秘密鍵ｋを抽出して、単純ではあるが効果的な態様で、実行することができる。
【００３６】
上述の例のそれぞれでは、署名の確認は、１対の通話者の間で実行される。プロトコルの特性を用いて、銀行などの証明機関ＣＡが発行した、通話者１４が作成した署名を確認するのに用いることができる。
【００３７】
この実施例では、通話者１４は、それによって発行されたと主張する証明書を受け取る。通話者１４は、長期的な秘密鍵ｄを用いて短期的な秘密鍵ｋを抽出することによって、証明書の真正を確認する。秘密鍵ｋの構造を次にチェックすることができ、又は、鍵ｋを用いて、メッセージに含まれる短期的な公開鍵ｒに関係する情報を引き出す。再び、確認が、広範な計算を必要とせず、都合のよい態様で得られ、それによって、通話者１４、すなわち、銀行などの金融機関が受け取った証明書の確認が可能になる。
【００３８】
この実施例は、エルガマル署名方式の特別の場合であるデジタル署名アルゴリズムＤＳＡを用いて、例示することもできる。エルガマル署名方式における鍵生成のために、それぞれの通話者Ａ及びＢが、公開鍵と対応する秘密鍵とを作成する。基礎となる暗号システムを群Ｆpに設定するために、通話者Ａ及びＢは、ｑがｐ−１を割るような素数ｐ及びｑを選択する。生成元ｇは、それがＦｐにおける位数（order）qの元であり、用いられる群が、｛ｇ0，ｇ1，ｇ2，…，ｇq-1｝であるように、選択される。
【００３９】
デジタル署名アルゴリズム（ＤＳＡ）では、鍵の生成は、区間［１，ｑ−１］の中のランダムな整数ｄを選択し、長期的な公開鍵ｙ＝ｇdｍｏｄｐを計算することによって、行われる。公開鍵情報は、（ｐ，ｑ，ｇ，ｙ）であり、長期的な秘密鍵はｄであり、他方で、一般的なエルガマル方式では、公開鍵情報は、（ｐ，ｇ，ｙ）であり、秘密鍵はｄである。
【００４０】
ＤＳＡ署名方式では、署名成分ｒ及びｓは、次のように与えられる。
【００４１】
【数３】
ｒ＝（ｇkｍｏｄｐ）ｍｏｄｑ
【数４】
ｓ＝ｋ-1（ｈ（ｍ）＋ｄｒ）ｍｏｄｑ
ただし、ここで、
ｄは、ランダムな整数であり、署名者の長期的な秘密鍵であって、典型的には１６０ビットである。
ｐは、典型的には、１０２４ビットの素数である。
ｑは、１６０ビットの素数であり、ｑは、ｐ−１を割る。
ｇは、生成元であり、ｙ＝ｇdｍｏｄｐである。
ｈ（ｍ）は、典型的には、メッセージｍのＳＨＡ−１ハッシュである。
ｋは、それぞれの署名に対してランダムに選ばれる１６０ビットの値である。
ｍに対する署名は、対（ｒ，ｓ）である。
【００４２】
通常、メッセージｍ上のＡの署名（ｒ，ｓ）を確認するためには、受信者Ｂは、Ａの真正の公開鍵情報（ｐ，ｑ，ｇ，ｙ）を取得して、０<ｒ<ｑ及び０<ｓ<ｑを確認しなければならない。次に、値ｗ＝ｓ-1ｍｏｄｑと、ｈ（ｍ）とが、計算される。次に、ｕ1＝ｗｈ（ｍ）ｍｏｄｑと、ｕ2＝ｒｗｍｏｄｑと、ｖ＝（ｇu1ｙu2ｍｏｄｐ）ｍｏｄｑとが計算される。ｖ＝ｒの場合に、そして、その場合だけに、署名は、受け入れられる。従って、署名の所有者が後の段階において自分自身の署名を確認することを望む場合には、公開鍵情報を検索し、累乗計算を含む上述のステップを実行するには、時間がかかることがわかる。
【００４３】
図４に示されているように、証明機関ＣＡによる高速署名確認は、証明機関の長期的な秘密鍵ｄを、確認者（検証者、verifier）として用いることによって実現される。この場合には、元の署名者は、ｐ、ｑ、ｇ、ｙ、ｈ（ｍ）、ｒ、ｓの知識を有している。従って、確認者は、署名において用いられた短期的な秘密鍵ｋを回復し、署名を確認するために、そのようにして得られたｋの値を確認するだけでよい。こうして、確認者は、ｚ＝（ｈ（ｍ）＋ｄｒ）ｍｏｄｑを計算する。値ｚ-1が、ｚｍｏｄｑを反転させることによって計算され、ｋ’-1＝ｓ（ｚ-1）ｍｏｄｑを計算するのに用いられる。ｋ’は、 ｋ’-1ｍｏｄｑを反転させることによって、計算される。確認者は、次に、ｒ＝ｇk’ｍｏｄｐｍｏｄｑを評価し、ｋ＝ｋ’であることを確認する。このようにして、この確認のステップは、長期的な公開鍵ｙではなく長期的な秘密鍵ｄを用いて、累乗計算を回避していることがわかる。もちろん、上述の計算の多くは、予め計算されたテーブルを用いることによって、高速化することができる。
【００４４】
別のエルガマル署名方法が、図５に示されており、署名成分（ｓ，ｅ）を有している。ここで、次の関係が成立している。
【００４５】
【数５】
ｒ＝ｇkｍｏｄｐ
【数６】
ｅ＝ｈ（ｍ｜｜ｒ）
【数７】
ｓ＝（ｄｅ＋ｋ）ｍｏｄｐ
ここで、ｐは大きな公開素数であり、ｇは公開生成元であり、ｍはメッセージであり、ｈはハッシュ関数であり、記号｜｜は連接（concatenation）を意味し、ｄは長期的な秘密鍵であり、ｙ＝ｇdｍｏｄｐは対応する長期的な公開鍵であり、ｋは短期的な秘密鍵として用いられる秘密のランダムな整数である。
【００４６】
証明書を生成するためには、通話者１４は、通話者１２の一人の、公開鍵に対応するＩＤを含むメッセージｍに署名をする。このメッセージは、通話者１４の長期的な公開鍵と短期的なセッション鍵ｋとを用いて署名され、署名成分ｓ及びｅを含む証明書が、通話者１２に発行される。公開情報は、通話者１４によって保持される。証明書は、通話者１２によって用いられ、通話者１４の公開鍵を用いて、受信者によって、確認される。
【００４７】
証明書が通話者１４に提供されると、長期的な秘密鍵ｄを用いて、迅速な確認が得られる。
【００４８】
秘密鍵ｄを用いた高速署名確認では、ｐ、ｇ、ｙ、ｈ、ｍ、ｒ、ｅの公開情報と、秘密鍵ｄとが、確認者に知られている。従って、確認者は、短期的な秘密鍵ｋえい回復し、署名を確認するために、ｋを確認するだけでよい。確認者は、ｋ’＝（ｓ−ｄｅ）ｍｏｄｐ、ｒ’＝ｇk’ｍｏｄｐ、ｅ’＝ｈ（ｍ｜｜ｒ’）を計算する。ｅ＝ｅ’である場合には、ｋ＝ｋ’が確認される。この確認には、処理を容易にするために、ただ１つの累乗計算しか要求されない。また、回復されたｋの値の特性は、上述の確認を満足するのに十分である。
【００４９】
このように、本発明の特別の効果は、署名者が、例えば、署名者のコンピュータに存在するデータに署名する場合である。これは、後で、対応する公開鍵を用いることなく確認することができ、署名者は、自分の秘密鍵を用いてデータを確認することができる。これは、また、スマート・カードなどの計算能力が限定的である応用例に対して、非常に有用である。
【００５０】
証明機関を含むデータ通信システムでは、証明機関（ＣＡ）又は鍵配分センタは、それが様々な通信システムの中にインストールされる前にデータに署名を行い、後でその署名を確認することがある。従って、ＣＡは、署名を確認するために公開鍵情報を要求することはなく、単に、長期的な秘密鍵を用いて確認を行う。これは、他のすべてのパラメータは、署名者の安全な境界の内部に記憶されているからである。長期的な秘密鍵ｄが用いられる際には、システムに関連するオーバヘッドが最小化されるように、短期的な秘密鍵ｋを保持しておくことは不要であることに注意すべきである。
【００５１】
別の応用例として、ペーパーユース（pay-per-use）型のソフトウェアでのソフトウェアの確認がある。サーバへのアクセスの要求は、サーバが発行しソフトウェアの使用者によって提示される証明書によって、制御される。証明書の真正は、上述したような適切な態様で、サーバの秘密鍵を用いて、確認される。
【００５２】
本発明は、以上で、特定の実施例と特定の使用とに関して説明したが、冒頭の特許請求の範囲によって定義される発明の範囲から逸脱することなく、様々な修正が、当業者であれば、想定できよう。例えば、上述の好適実施例では、乗法に関して述べられているが、本発明は、加法に関しても成立する。例えば、ＤＳＡの楕円曲線アルゴリズムと等価であるＥＣＤＳＡは、離散対数アルゴリズムと類似の楕円曲線であり、これは、通常は、素数を法とする整数から成る乗法群であるＦ＊pに関して説明されうる。Ｆ＊pの元及び演算と楕円曲線群Ｅ（Ｆq）との間には、対応が存在する。更に、この署名技術は、Ｆ2’’上で定義される体において実行される関数にも等しく適用できる。
【００５３】
本発明は、このように、暗号化方法及びシステムに関係し、特に、有限体の元がプロセッサに効率的な態様で乗算される楕円曲線暗号方法及びシステムに関係する。この暗号システムは、適切にプログラムされた汎用コンピュータなどの任意の適切なプロセッサから構成することができる。
【図面の簡単な説明】
【図１】データ伝送システムの概略図である。
【図２】署名確認プロトコルの概略的な流れ図である。
【図３】別のプロトコルの概略的な流れ図である。
【図４】更に別のプロトコルの概略的な流れ図である。
【図５】別のエルガマル署名方法の概略を示す流れ図である。
【図１】
0004307589.tif 000002
【図２】
0004307589.tif 000003
【図３】
0004307589.tif 000004
【図４】
0004307589.tif 000005
【図５】
0004307589.tif 000006