(57)【特許請求の範囲】
【請求項１】
データ通信システムにおいて、一組の通信端末間で通信チャンネルを介してデータを転送すると共に、一方の通信端末によって行われる計算を容易にする方法であって、
前記一組の通信端末は、前記一組の通信端末間で転送される情報に対して行われる一組の相補的数理演算を、専用鍵および公開鍵を用いてそれぞれ実行することによって、公開鍵暗号演算を行うものであり、
ａ）第１の通信端末で、第２の通信端末に転送される情報を含むデータ列をアセンブルするステップと、
ｂ）前記第１の通信端末で、前記データ列の少なくとも一部分に対して一方の相補的数理演算を行って、前記データ列に暗号的要素を与えるステップと、
ｃ）前記第２の通信端末が前記公開鍵暗号演算の他方の相補的数理演算を行うのに必要な情報を追加する追加情報であって、前記他方の相補的数理演算の実行に含まれる中間ステップの計算に関連する追加情報を、前記第２の通信端末に使用可能にするステップと、
ｄ）前記通信チャンネルを介して前記第２の通信端末に前記データ列を送るステップと、
ｅ）前記第２の通信端末で、前記公開鍵暗号演算の前記他方の相補的数理演算に含まれる前記中間ステップの計算を容易にするための前記追加情報を用いて、前記公開鍵暗号演算の前記他方の相補的数理演算を行うステップと、を含んでいる方法。
【請求項２】
前記第２の通信端末が追加情報を使用可能にするステップは、前記第１の通信端末が前記追加情報を前記データ列に組み入れることを含み、これによって、前記第２の通信端末が前記データ列を受信すると、前記追加情報は前記第２の通信端末に使用可能になる、請求項１に記載の方法。
【請求項３】
前記専用鍵および前記公開鍵は、前記第１の通信端末の、専用鍵および対応する公開鍵であり、前記一方の相補的数理演算は、前記専用鍵を使って、前記データ列の前記少なくとも一部分のデジタル署名をする、請求項２に記載の方法。
【請求項４】
前記相補的数理演算は、有限体上で楕円曲線上の点群の特徴を用いる、請求項２に記載の方法。
【請求項５】
前記追加情報は、前記曲線上の点の座標に関連するデータを含んでいる、請求項４に記載の方法。
【請求項６】
前記追加情報は、前記第１の通信端末が前記曲線上の指定された点を順次倍加することによって得た前記曲線上の点の座標に関連するデータを含んでいる、請求項４に記載の方法。
【請求項７】
前記追加情報は、前記中間ステップで得られた一組の可能な値のどちらが目的の値かを示す、請求項６に記載の方法。
【請求項８】
前記追加情報は、各前記点の一座標を含んでいる、請求項６に記載の方法。
【請求項９】
前記追加情報は、各前記点の一組の座標を含んでいる、請求項６に記載の方法。
【請求項１０】
前記第２の通信端末によって行われる前記中間ステップのうちの一ステップは、指定された点を順次倍加することによって得られた前記曲線上の点の射影座標を得ることを含む、請求項４に記載の方法。
【請求項１１】
前記点の少なくとも一つの点の射影座標を対応するアフィン座標に変換し、前記追加情報を用いて、前記一つの点の他のアフィン座標を決定するステップを含んでいる、請求項１０に記載の方法。
【請求項１２】
前記追加情報は、前記他のアフィン座標の一組の考えられる値のどちらが目的の値かを示す、請求項１１に記載の方法。
【請求項１３】
前記他方の相補的数理演算は指定された点の整数倍である曲線上の点の計算を必要とし、前記方法は前記整数をｔビット２進列として表し、前記２進列をｋかけるｋ/ｔコーミングテーブルとし、前記追加情報に前記コーミングテーブルの列の各考えられるビットの組み合わせから得られた点を含め、前記テーブルのそれぞれの列のビットの組み合わせに対応する点を選択し、続いて選択された点を組み合わせて前記点の座標を得るステップを含んでいる、請求項４に記載の方法。
【請求項１４】
ｉ）点を倍加し；
ｉｉ）倍加された点を次に選択された点に加算し；
ｉｉｉ）得られた点を倍加し；
ｉｖ）ステップｉｉ）とｉｉｉ）を指定された点の整数倍を示す一つの点が得られるまで繰り返すことによって、
前記選択された点を第２の通信端末が組み合わせる、請求項１３に記載の方法。
【請求項１５】
前記追加情報は、選択された点を倍加、加算することによって得られた点の座標に関するデータを含んでいる、請求項１４に記載の方法。
【請求項１６】
上記追加情報は、楕円曲線上の一組の多数の点Ｐである、請求項１に記載の方法。
【請求項１７】
データ通信システムにおいて、一組の通信端末間で通信チャンネルを介してデータを転送すると共に、一方の通信端末によって行われる計算を容易にする方法であって、
前記一組の通信端末は、前記一組の通信端末間で転送される情報に対して行われる一組の相補的数理演算を、専用鍵および公開鍵を用いてそれぞれ実行することによって、公開鍵暗号演算を行うものであり、
ａ）第１の通信端末で、第２の通信端末に転送される情報を含むデータ列をアセンブルするステップと、
ｂ）前記第１の通信端末で、前記データ列の少なくとも一部分に対して一方の相補的数理演算を行って、前記データ列に暗号的要素を与えるステップと、
ｃ）前記データ列に、前記第２の通信端末が前記公開鍵暗号演算の他方の相補的数理演算を行うのに必要な情報を追加する追加情報であって、前記他方の相補的数理演算の中間ステップの計算を容易にするための追加情報を組み入れるステップと、
ｄ）前記データ列を、前記通信チャンネルを介して前記第２の通信端末に送るステップとを含む方法。
【請求項１８】
前記専用鍵および前記公開鍵は、前記第１の通信端末の、専用鍵および対応する公開鍵であり、前記一方の相補的数理演算は、前記第１の通信端末の専用鍵を使って、前記データ列の前記少なくとも一部分のデジタル署名をする、請求項１７に記載の方法。
【請求項１９】
前記相補的数理演算は、有限体上で楕円曲線上の点群の特徴を用いる、請求項１８に記載の方法。
【請求項２０】
前記追加情報は、前記曲線上の点の座標に関連するデータを含んでいる、請求項１９に記載の方法。
【請求項２１】
前記追加情報は、前記第１の通信端末が前記曲線上の指定された点を順次倍加することによって得た、前記曲線上の点の座標に関連するデータを含んでいる、請求項１９に記載の方法。
【請求項２２】
前記追加情報は、各前記点の一つの座標、各前記点の一組の座標、および、前記中間ステップで得られた一組の可能な値のどちらが目的の値かを示す標示から成る群から選択された情報をさらに含む、請求項２１に記載の方法。
【請求項２３】
データ通信システムにおいて、一組の通信端末間で通信チャンネルを介してデータを転送すると共に、一方の通信端末によって行われる計算を容易にする方法であって、
前記一組の通信端末は、前記一組の通信端末間で転送される情報に対して行われる一組の相補的数理演算を、専用鍵および公開鍵を用いてそれぞれ実行することによって、公開鍵暗号演算を行うものであり、
ａ）第２の通信端末で、第１の通信端末がデータ列の少なくとも一部分に対して一方の相補的数理演算を行うことによって与えられた暗号的要素を有するデータ列を受信するステップと、
ｂ）前記第２の通信端末が、前記データ列の暗号的要素に対して他方の相補的数理演算を行うステップとを含み、
前記他方の相補的数理演算の中間ステップの計算は、前記第２の通信端末に使用可能になった、前記第２の通信端末が前記他方の相補的数理演算を行うのに必要な情報を追加する追加情報によって容易になる方法。
【請求項２４】
前記追加情報は、前記データ列に組み入れられている、請求項２３に記載の方法。
【請求項２５】
前記専用鍵および前記公開鍵は、前記第１の通信端末の、専用鍵および対応する公開鍵であり、前記一方の相補的数理演算は、前記第１の通信端末の専用鍵を使って、前記データ列の前記少なくとも一部分のデジタル署名をする、請求項２４に記載の方法。
【請求項２６】
前記相補的数理演算は、有限体上で楕円曲線上の点群の特徴を用いる、請求項２５に記載の方法。
【請求項２７】
前記追加情報は、前記曲線上の点の座標に関連するデータを含んでいる、請求項２６に記載の方法。
【請求項２８】
前記追加情報は、前記第１の通信端末が前記曲線上の指定された点を順次倍加することによって得た、前記曲線上の点の座標に関連するデータを含んでいる、請求項２６に記載の方法。
【請求項２９】
前記追加情報は、各前記点の一つの座標、各前記点の一組の座標、および、前記中間ステップで得られた一組の可能な値のどちらが目的の値かを示す標示から成る群から選択された情報をさらに含む、請求項２８に記載の方法。
【請求項３０】
前記第２の通信端末によって行われる前記中間ステップのうちの一つのステップは、指定された点を順次倍加することによって得られた前記曲線上の点の射影座標を得るステップを含んでいる、請求項２６に記載の方法。
【請求項３１】
前記点の少なくとも一つの点の射影座標を対応するアフィン座標に変換し、前記追加情報を用いて、前記一つの点の他のアフィン座標を決定するステップを含んでいる、請求項３０に記載の方法。
【請求項３２】
前記追加情報は、前記他のアフィン座標の一組の考えられる値のどちらが目的の値かを示す標示を含んでいる、請求項３１に記載の方法。
【請求項３３】
前記他方の相補的数理演算は指定された点の整数倍である曲線上の点の計算を必要とし、前記方法は前記整数をｔビット２進列として表し、前記２進列をｋかけるｋ/ｔコーミングテーブルとし、前記追加情報に前記コーミングテーブルの列の各考えられるビットの組み合わせから得られた点を含め、前記テーブルのそれぞれの列のビットの組み合わせに対応する点を選択し、続いて、選択された点を組み合わせて前記点の座標を得るステップを含んでいる、請求項２６に記載の方法。
【請求項３４】
ｉ）点を倍加し；
ｉｉ）倍加された点を次に選択された点に加算し；
ｉｉｉ）得られた点を倍加し；
ｉｖ）ステップｉｉ）とｉｉｉ）を指定された点の整数倍を示す一つの点が得られるまで繰り返すことによって、
前記選択された点を前記第２の通信端末が組み合わせる、請求項３３に記載の方法。
【請求項３５】
前記追加情報は、選択された点を倍加、加算することによって得られた点の座標に関するデータを含んでいる、請求項３４に記載の方法。
【請求項３６】
前記追加情報は、楕円曲線上の一組の多数の点Ｐである、請求項２３に記載の方法。
【請求項３７】
通信チャンネルを介してデータを転送すると共に、通信端末によって行われる計算を容易にするためのシステムであって、
前記システムは、一組の相補的数理演算の一方を実行することによって公開鍵暗号演算を行う第１の通信端末と、前記一組の相補的数理演算の他方を実行することによって公開鍵暗号演算を行う第２の通信端末とを含み、
前記第１の通信端末は、
ａ）第２の通信端末に転送される情報を含むデータ列をアセンブルし、
ｂ）前記データ列の少なくとも一部分に対して前記一方の相補的数理演算を行って、前記データ列に暗号的要素を与え、
ｃ）前記データ列を、前記通信チャンネルを介して前記第２の通信端末に送るように構成されており、
前記第２の通信端末は、
ｄ）前記データ列の暗号的要素に対して他方の相補的数理演算を行うように構成されており、
前記他方の相補的数理演算の中間ステップの計算は、前記第２の通信端末に使用可能になった、前記第２の通信端末が前記他方の相補的数理演算を行うのに必要な情報を追加する追加情報によって容易になるシステム。
【請求項３８】
前記第１の通信端末は、さらに、前記追加情報を前記データ列に組み入れるように構成されており、これによって、前記追加情報は、前記データ列において前記第２の通信端末に使用可能になる、請求項３７に記載のシステム。
【請求項３９】
前記第１の通信端末の専用鍵は、前記第１の通信端末のメモリ内に格納され、対応する公開鍵は、前記第２の通信端末のメモリ内に格納され、前記一方の相補的数理演算は、前記第１の通信端末の専用鍵を使って、前記データ列の少なくとも一部分のデジタル署名をする、請求項３８に記載のシステム。
【請求項４０】
通信チャンネルを介してデータを転送すると共に、通信端末によって行われる計算を容易にするためのシステムであって、
前記システムは、一組の相補的数理演算の一方を実行することによって公開鍵暗号演算を行う第１の通信端末を含み、
前記第１の通信端末は、
ａ）第２の通信端末に転送される情報を含むデータ列をアセンブルし、
ｂ）前記データ列の少なくとも一部分に対して一方の相補的数理演算を行って、前記データ列に暗号的要素を与え、
ｃ）前記データ列に、前記第２の通信端末が他方の相補的数理演算を行うのに必要な情報を追加する追加情報を組み入れ、前記追加情報は、前記第２の通信端末によって使用可能になり、前記他方の相補的数理演算の中間ステップの計算を容易にするものであり、
ｄ）前記データ列を、前記通信チャンネルを介して前記第２の通信端末に送るように、構成されているシステム。
【請求項４１】
前記第１の通信端末の専用鍵は、前記第１の通信端末のメモリ内に格納され、前記一方の相補的数理演算は前記専用鍵を使って、前記データ列の前記少なくとも一部分のデジタル署名をする、請求項４０に記載のシステム。
【請求項４２】
通信チャンネルを介してデータを転送すると共に、通信端末によって行われる計算を容易にするためのシステムであって、
前記システムは、一組の相補的数理演算の他方を実行することによって公開鍵暗号演算を行う第２の通信端末とを含み、
前記第２の通信端末は、
ａ）第１の通信端末がデータ列の少なくとも一部分に対して他方の相補的数理演算を行うことによって与えた暗号的要素を有するデータ列を受信し、
ｂ）前記データ列の暗号的要素に対して一方の相補的数理演算を行うように構成されており、
前記一方の相補的数理演算の中間ステップの計算は、前記第２の通信端末に使用可能にした、前記第２の通信端末が前記一方の相補的数理演算を行うのに必要な情報を追加する追加情報によって容易になるシステム。
【請求項４３】
前記追加情報は、前記データ列に組み入れられており、それによって、前記データ列において前記第２の通信端末に使用可能である、請求項４２に記載のシステム。
【請求項４４】
前記第１の通信端末の公開鍵は、前記第２の通信端末のメモリ内に格納され、前記一方の相補的数理演算は、前記公開鍵を使って、前記第１の通信端末によって生成されたデジタル署名を検証する、請求項４３に記載のシステム。
【請求項４５】
データ通信システムにおいて、一組の通信端末間で通信チャンネルを介してデータを転送するためのコンピュータ読み取り可能な命令と、一方の通信端末によって行われる計算を容易にするためのコンピュータ読み取り可能な命令とが格納されたコンピュータ読み取り可能な記録媒体であって、
前記一組の通信端末は、前記一組の通信端末間で転送される情報に対して行われる一組の相補的数理演算を、専用鍵および公開鍵を用いてそれぞれ実行することによって、公開鍵暗号演算を行うものであり、
両前記コンピュータ読み取り可能な命令は、
ａ）第１の通信端末で、第２の通信端末に転送される情報を含むデータ列をアセンブルさせる命令と、
ｂ）前記第１の通信端末で、前記データ列の少なくとも一部分に対して一方の相補的数理演算を行って、前記データ列に暗号的要素を与える命令と、
ｃ）前記第２の通信端末が前記公開鍵暗号演算の他方の相補的数理演算を行うのに必要な情報を追加する追加情報であって、前記他方の相補的数理演算の実行に含まれる中間ステップの計算に関連する追加情報を、前記第２の通信端末に使用可能にさせる命令と、
ｄ）前記データ列を、前記通信チャンネルを介して前記第２の通信端末に送らせる命令と、
ｅ）前記第２の通信端末で、前記公開鍵暗号演算の前記他方の相補的数理演算を実行させ、前記第２の通信端末に前記追加情報を使用可能にして、前記公開鍵暗号演算の前記他方の相補的数理演算に含まれる中間ステップの計算を容易にさせる命令とを含む、コンピュータ読み取り可能な記録媒体。
【請求項４６】
前記第２の通信端末に追加情報を使用可能にさせる命令は、前記第１の通信端末に前記追加情報を前記データ列に組み入れさせる命令を含み、これによって、前記第２の通信端末が前記データ列を受信すると、前記追加情報は前記第２の通信端末に使用可能になる、請求項４５に記載のコンピュータ読み取り可能な記録媒体。
【請求項４７】
前記専用鍵および前記公開鍵は、前記第１の通信端末の、専用鍵および対応する公開鍵であり、前記一方の相補的数理演算は、前記第１の通信端末の専用鍵を使って、前記データ列の前記少なくとも一部分のデジタル署名をする、請求項４６に記載のコンピュータ読み取り可能な記録媒体。
【請求項４８】
データ通信システムにおいて、一組の通信端末間で通信チャンネルを介してデータを転送するためのコンピュータ読み取り可能な命令と、一方の通信端末によって行われる計算を容易にするためのコンピュータ読み取り可能な命令とが格納されたコンピュータ読み取り可能な記録媒体であって、
前記一組の通信端末は、前記一組の通信端末間で転送される情報に対して行われる一組の相補的数理演算を、専用鍵および公開鍵を用いてそれぞれ実行することによって、公開鍵暗号演算を行うものであり、
両前記コンピュータ読み取り可能な命令は、
ａ）第１の通信端末で、第２の通信端末に転送される情報を含むデータ列をアセンブルさせる命令と、
ｂ）前記第１の通信端末で、前記データ列の少なくとも一部分に対して一方の相補的数理演算を行って、前記データ列に暗号的要素を与える命令と、
ｃ）前記データ列に、前記第２の通信端末が前記公開鍵暗号演算の他方の相補的数理演算を行うのに必要な情報を追加する追加情報であって、前記他方の相補的数理演算の中間ステップの計算を容易にするための追加情報を、組み入れさせる命令と、
ｄ）前記データ列を、前記通信チャンネルを介して前記第２の通信端末に送らせる命令とを含むコンピュータ読み取り可能な記録媒体。
【請求項４９】
前記専用鍵および前記公開鍵は、前記第１の通信端末の、専用鍵および対応する公開鍵であり、前記一方の相補的数理演算は、前記第１の通信端末の専用鍵を使って、前記データ列の前記少なくとも一部分のデジタル署名をする、請求項４８に記載のコンピュータ読み取り可能な記録媒体。
【請求項５０】
データ通信システムにおいて、一組の通信端末間で通信チャンネルを介してデータを転送するためのコンピュータ読み取り可能な命令と、一方の通信端末によって行われる計算を容易にするためのコンピュータ読み取り可能な命令とが格納されたコンピュータ読み取り可能な記録媒体であって、
前記一組の通信端末は、前記一組の通信端末間で転送される情報に対して行われる一組の相補的数理演算を、専用鍵および公開鍵を用いてそれぞれ実行することによって、公開鍵暗号演算を行うものであり、
両前記コンピュータ読み取り可能な命令は、
ａ）第２の通信端末に、第１の通信端末がデータ列の少なくとも一部分に対して一方の相補的数理演算を行うことによって与えられた暗号的要素を有するデータ列を受信させる命令と、
ｂ）前記第２の通信端末に対して、他方の相補的数理演算を前記データ列の前記暗号的要素に対して行わせる命令とを含み、
前記他方の相補的数理演算の中間ステップの計算は、前記第２の通信端末に使用可能になった追加情報であって、前記第２の通信端末が前記他方の相補的数理演算を行うのに必要な情報を追加する追加情報によって容易になる、コンピュータ読み取り可能な記録媒体。
【請求項５１】
前記追加情報は、前記データ列に組み入れられている、請求項５０に記載のコンピュータ読み取り可能な記録媒体。
【請求項５２】
前記専用鍵および前記公開鍵は、前記第１の通信端末の、専用鍵および対応する公開鍵であり、前記一方の相補的数理演算は、前記第１の通信端末の専用鍵を使って、前記データ列の前記少なくとも一部分のデジタル署名をする、請求項５１に記載のコンピュータ読み取り可能な記録媒体。
【請求項５３】
前記第１の通信端末は、前記第２の通信端末よりも演算能力が高い、請求項１〜３６のいずれか１項に記載の方法。
【請求項５４】
前記第２の通信端末はスマートカードである、請求項５３に記載の方法。
【請求項５５】
前記第１の通信端末は証明当局であり、前記追加情報は、前記証明当局によって作成された証明書に組み入れられており、前記一方の相補的数理演算は前記証明書用の署名を作成することであり、前記他方の相補的数理演算は前記署名を検証することである、請求項１〜３６、５３、５４のいずれか１項に記載の方法。
【請求項５６】
前記第１の通信端末は証明当局であり、前記追加情報は、前記証明当局によって作成された証明書に組み入れられており、前記一方の相補的数理演算は前記証明書用の署名を作成することであり、前記他方の相補的数理演算は前記署名を検証することである、請求項３７〜４１のいずれか１項に記載のシステム。
【請求項５７】
前記第１の通信端末は証明当局であり、前記追加情報は、前記証明当局によって作成された証明書に組み入れられており、前記他方の相補的数理演算は前記証明書用の署名を作成することであり、前記一方の相補的数理演算は前記署名を検証することである、請求項４２〜４３のいずれか１項に記載のシステム。
【請求項５８】
前記第１の通信端末は証明当局であり、前記追加情報は、前記証明当局によって作成された証明書に組み入れられており、前記一方の相補的数理演算は前記証明書用の署名を作成することであり、前記一方の相補的数理演算は前記署名を検証することである、請求項４５〜５２のいずれか１項に記載のコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、公開鍵データ通信システムに関するものである。
【０００２】
【従来の技術】
公開鍵データ通信システムは、一組の通信者間における情報の転送に使用されるものである。少なくとも交換された情報の一部は、送信者側で数理演算を行うことによって数理化され、受信者は情報を解読するために相補的数理演算を行うことができる。
【０００３】
このようなシステムの一般的な例としては、デジタル署名プロトコルがあげられる。デジタル署名は、ある関係者からメッセージが送信されたことと、その内容が転送中に変更されていないことを確認するために使用される。
【０００４】
広く使用されている署名プロトコルは、送信者の専用鍵でメッセージに署名するＥ１  Ｇａｍａｌ公開鍵署名構成を用いている。また、受信者は、送信者の公開鍵でそのメッセージを回復することができる。
【０００５】
【発明が解決しようとする課題】
このような構成を実行するために、種々のプロトコルが存在し、それらのいくつかは広く使用されている。しかしながら、どの場合も、受信者は署名を検証するために計算を行わなくてはならない。受信者が十分な計算能力を持っている場合、これは特に問題とはならないが、受信者が例えば、”スマートカード”アプリケーションのように限られた計算能力しか持たない場合、計算によって検証プロセスに遅延が起こる。
【０００６】
公開鍵構成は、処理しにくい離散ログ問題があるが、多数の乗法群のなかの一つを使って実施することが可能であり、特に頑丈な実施では、楕円曲線上の点の特徴を有限体上で用いている。この実施では、例えば、Ｚｐ”での実施と比べて、必要な安全性を比較的小さなオ−ダ−のフィールドで得られるという利点があり、それゆえ署名を通信するために必要な帯域を小さくすることができる。
【０００７】
一般的な実施では、署名要素ｓは次式で表される。
【０００８】
ｓ＝ａｅ＋ｋ（ｍｏｄ  ｎ）
Ｐはシステムのあらかじめ定義されたパラメータである曲線上の点であり、
ｋは短期専用あるいはセッション鍵として選択されたランダムな整数であり、対応する短期公開鍵Ｒ＝ｋＰを持つ、
ａは送信者の長期専用鍵であり、対応する公開鍵ａＰ＝Ｑを持つ、
ｅはメッセージｍと短期公開鍵ＲのＳＨＡハッシュ関数のような安全ハッシュであり、
ｎは曲線のオ−ダ−である。
【０００９】
送信者はｍとｓとＲを含むメッセージを受信者に送り、Ｒに対応する値−（ｓＰ−ｅＱ）を計算することによって署名が検証される。計算された値が対応している場合、署名が検証される。
【００１０】
検証を行うためには、それぞれが計算としては複雑であるｓＰとｅＱを得るために、多数の点乗算を行う必要がある。ＭＱＶプロトコルのような他のプロトコルは、楕円曲線上で実施される場合、同様の計算を必要とし、計算能力が限られている場合には検証に時間がかかる。
【００１１】
一般的に、基本曲線はｙ2 ＋ｘｙ＝ｘ3 ＋ａｘ＋ｂであり、座標（ｘ1 ，ｙ1 ）と（ｘ2 、ｙ2 ）を持つ二つの点を加算することにより、点（ｘ3 ，ｙ3 ）が得られる。ここでは
【００１２】
【数１】
0004453996.tif 000002
【００１３】
点の倍加、例えばＰを２Ｐにすることは、点を自身に足し合わせることによって行われ、次式のようになる。
【００１４】
【数２】
0004453996.tif 000003
【００１５】
点Ｑを順次倍加することによって、２Ｑ、２2 Ｑ、２3 Ｑ  ．．．２j Ｑの値を得ることができ、これらの値はハッシュ値ｅの二進表記に代入することができ、上記等式を使って加算することによって値ｅＱを得ることができることがわかる。多くとも、これにはｔ倍加とｔ点加算がｅのｔビット表記のためには必要となる。同様に、点Ｐを順次倍加し、値をｓの表記に代入することによって、ｓＰ得られる。しかしながら、倍加された各点を得るには、ｘとｙの両座標の計算が必要となり、後者はさらに反転を必要とする。これらのステップは計算的に複雑であるので、かなりの時間、あるいは、計算能力が必要となる。ｙの二つの考えられる値は目的の値を知ることなしに得ることができるので、ｙの値を決定するために基本曲線に代入することは実用的でない。
【００１６】
したがって、本発明の目的は、上記の問題を取り除いたり、未然に防ぐことができる方法や装置を提供することにある。
【００１７】
【課題を解決するための手段】
概して、本発明は、転送されたデータ列を、検証を行うのに必要な情報に付加的、けれども検証に係わる計算を容易にするために用いることができる情報を含むように変更する方法や装置を提供するものである。
【００１８】
【発明の実施の形態】
添付図面を参照した例をあげて、本発明の実施例を説明する。
【００１９】
図１を参照すれば、データ通信システム１０は、送信者１２と受信者１４からなり、通信チャンネル１６で結ばれた一組の通信者を含んでいる。後に説明するように、各通信者１２、１４は、それぞれ、デジタル情報を処理し、情報がチャンネル１６を介して転送されるよう準備する暗号化ユニット１８、２０を備えている。また、各通信者１２、１４は、それぞれ計算ユニット１９、２１を備え、暗号化ユニット１８、２０と関連した数理演算を行う。ユニット１９、２１の計算能力は、通信者１２、１４の性質によって異なるが、説明の便宜上、ユニット１９は、実際にはスマートカードや同様な物であるだろうユニット２１よりも優れた能力を持っていると仮定する。
【００２０】
第一実施例において、送信者１２は、図２に概略的に示されたデータ列をアセンブルする。データ列２２は証明当局ＣA からの証明書２４を含み、証明書２４は送信者の識別子Ｉ．Ｄ．；タイムスタンプＴ；送信者の公開鍵Ｑ；補足情報を表すビットｙ’の列；証明当局の署名要素Ｓauthと証明当局の短期公開鍵Ｒauthを含んでいる。また、データ列２２は送信者証明書２６を含み、送信者証明書２６はメッセージｍ、送信者の短期公開鍵Ｒと送信者の署名要素ｓを含んでいる。証明書２４に含まれたビットｙ’の列は、計算ユニット１９から得られる。ユニット１９は、受信者１４側で少なくとも署名を検証するのに必要な数理的演算の一部を行い、計算から補足情報ｙ1 を抽出する。アセンブルされると、データ列２２は、チャンネル１６を介して、目的の受信者１８へ送られる。
【００２１】
説明を簡単にするために、上記で述べたように、送信者１２の署名要素ｓはｓａｅ＋ｋ（ｍｏｄ  ｎ）であると仮定するが、他の署名プロトコルを用いることも可能であることはわかるであろう。署名を検証するためには、ｓＰ−ｅＱを計算し、Ｒと比較しなくてはならない。
【００２２】
証明当局の署名要素Ｓauthは、識別子Ｉ．Ｄ．と時間Ｔと署名ビットｙ’からなるメッセージｍと同様の形をしている。
【００２３】
受信者１４が行う検証の第一ステップは、証明当局の公開鍵を使って証明書２４からＱの値と署名ビットｙ’を検索することである。また、ハッシュ値ｅ’は、メッセージｍと送信者証明書２６の点Ｒの座標から計算することができる。それから、受信者１４は、ｓＰとｅ’Ｑとを計算することによって検証を行うことができる。しかしながら、上記で述べたように、計算ユニット２１の計算能力は限られており、ｓＰとｅ’Ｑの計算には時間がかかる。
【００２４】
それゆえ、多数の改良の一つ、あるいはそれ以上が検証を容易にするために行われる。第一実施例では、Ｐが長期システムパラメータであるという事実に基づいている。Ｐの整数倍に対応する値は、図１の２８で示されたルックアップテーブルに受信者１４側で記憶される。したがって、ｓに対応する整数は、テーブル２８に位置し、値ｓＰが検証の第一要素を得るために検索される。
【００２５】
Ｑの値は送信者によって異なるので、ｅ’Ｑの考えられる値をｓＰと同じように前もって計算することは実用的でない。ｅ’Ｑの計算を容易にするために、
ｅ’は整数の二進表記として扱われ、各ビットは２j の連続する値の係数を表している。送信者１２の計算ユニット１９は、点Ｑを順次倍加するために用いられ、２j Ｑの座標が得られる。ｙ座標の最上位ビットは、ｙ座標の”署名”を表し、順次倍加された点のｙ座標の署名を表すビット列は証明書２４に補足情報ｙ’として組み込まれる。受信者１４側でｅ’Ｑの値を計算するために、点Ｑのｘ座標が上記に示された等式を使って順次倍加され、２j Ｑの連続した値のｘ座標が得られる。ｅ’の二進表記が２j Ｑの値が必要であると示した場合（即ち、係数が”１”の場合）、ｙ座標の対応する値は、基本的曲線に代入することによって決定される。ｙ座標の考えられる二つの値が得られ、証明書２４から検索された署名ビットｙ’を参照することによって、適切な値が決定される。したがって、反転を必要とするｙ座標の計算を避けることができる。
【００２６】
２j Ｑの係数のために各組の座標が得られれば、それらはｅ’の値を得るために組み合わされ、ｓＰ−ｅ’Ｑを得るためにｓＰと組み合わされる。それから、これは、検証のために、Ｒの回復された値と比べられる。
【００２７】
証明書２４に２j Ｑのｙ座標の追加署名ビットを組み込むことによって、ｅ’Ｑと同様に、ｓｐが計算できることはわかるであろう。しかしながら、実際に使用できるのであれば、ルックアップテーブル２８を使用する方が望ましいと思われる。
【００２８】
上記手順は計算の複雑さを低減することはできるが、ｘ座標の計算はまだ反転を必要とする。反転は比較的コストがかかり、計算を容易にするために、図３のプロセスが図４に示すように変更される。データ列２２を受信すると、受信者１４は点Ｑのアフィン座標（ｘ，ｙ）を回復し、ｘをｘ／ｚ、ｙをｙ／ｚで置き換えることにより、それらを射影座標（ｘ，ｙ，ｚ）に変換する。
【００２９】
それから、点２Ｑのｘとｚ座標の値を次の関係式を使って計算することができる。
【００３０】
２（ｘ1 ，ｙ1 ，ｚ1 ）＝（ｘ2 ，ｙ2 ，ｚ2 ）
ここでは、ｘ2 ＝ｘ1 4 ＋ｚ14ｂ、
ｚ2 ＝（ｘ1 ｚ1 ）2
”ｂ”は基本曲線と関係する定数であり、小さく、即ち、一語で選択されることがふさわしい。
【００３１】
一旦、２Ｑのためにｘとｚ値が計算されると、それらは同様に、４Ｑのためのｘとｚ値を得るために用いることができる。これは２t Ｑまで繰り返すことができ、それぞれが２j Ｑのｘとｚ座標を表すｔ組の射影座標が得られる。０＜ｊ＜ｔ、
各射影ｘ座標は、ｘ座標をｚ座標で割ることによって、対応するアフィン座標に変換される。それから、２j Ｑの各値のｘ座標は、必要であれば、ｅ’の表記で用いられ、基本曲線を示す等式に代入することによって、対応するｙ座標を得とができる。対応するｙ座標値は、適切な値を示すデータ列２２に含まれる署名ビットｙ’を検査することによって得られる。
【００３２】
各座標が得られると、２j Ｑの値はｅの二進表記に代入することができ、結果、ｅＱの値が得られる。ｅの表記は１’ｓと０’ｓの列であるので、計算をさらに簡素化するには、１の係数を持つ値のみを組み合わすことが必要となる。それから、その結果がｓＰの値と組み合わされ、Ｒの検索された値と比較されることによって、検証が行われる。
【００３３】
それゆえ、検証は、連続するｘ座標を得るための各加算で反転を必要とすることなしに行われ、検証プロセスが容易になる。普通の基本表記で示されており、フィールドＧＦ２上で楕円曲線が実施される場合、２j Ｑの値は簡単に計算することができる。この場合、ｘ14とｚ14の計算は、それぞれの座標の表記の二つの循環シフトによって行うことができる。”ｂ”で乗じた後、結果はＸＯＲ’ｄとなり、結果として生じるｘ座標の値が得られる。同様に、ｚ座標の値は、ｘ1 とｚ1 の積の循環シフトから得ることができる。
【００３４】
証明書の中にＱのｘ座標と２j Ｑの各ｙ座標を送ることによって、帯域幅を増加させ、上記の手順を変更することができる。もちろん、これらのいくつかは、ｅ’の表記によっては余分なものとなることもある。しかしながら、この方法では、ｙ座標の計算は避けることができるが、メッセージの長さは増加する。これは、特に受信者側で計算能力が限られている場合、容認することができる。
【００３５】
さらなる変形としては、冗長性を伴って、２j Ｑの各値のｘとｙの両座標を含むようにメッセージが変更される。これは、ｅＱの計算を短くする効果はあるが、メッセージの長さが増加する。
【００３６】
さらなる実施例を図５と図６に示す。ここでは、ｅＱの計算を容易にするためにコーミング（ｃｏｍｂｉｎｇ）を使用している。ｅがｔビット二進数の場合、ｋ列とｔ／ｋ行を持つｋ倍マトリクスとして表される。各列の合計がＶ1 ，Ｖ2 ，Ｖ3 ，．．．Ｖk であるとすると、
ｅ＝Ｖ1 ＋２Ｖ2 ＋２2 Ｖ3 ＋．．．．＋２k-1 Ｖk-1 ＋２ｋＶk
ｅＱ＝Ｖ1 Ｑ＋２Ｖ2 Ｑ＋２2 Ｖ3 Ｑ＋．．．．＋２k-1 Ｖk-1 Ｑ＋２ｋＶk Ｑ
各列は、ビットの２t/k 個の組み合わせの一つを持つことができる。各組み合わせは、Ｖのために特定の値Σ1 、Σ2 、Σ3 等を与え、それは点２j Ｖj Ｑの座標を得るために点Ｑで乗じられなくてはならない。このように、証明書２４は、指示された検索可能な方法で、ビットの組み合わせから得られる２t/k 個の考えれる点の座標が送信者１２によってあらかじめ計算された列に組み込まれるように変更される。受信が行われると、ｅの回復された値を得るために、受信者１４はメッセージｍと点Ｒを抽出する。このビット列は、設定された構成のｋ倍マトリクスに並べられ、最上位列のビットの組み合わせが決定される。この組み合わせから得られる点の座標は、証明書２４から得られ、倍加される。次の最上位列におけるビットの組み合わせに対応する点が検索され、前回の倍加の結果に加算される。それから、これは倍加され、ｅ’Ｑが計算されるまでこの手順が繰り返される。このような方法では、必要な点加算の回数が減り、最大で２ｋとなり、情報を転送するのに必要な帯域幅が小さくなる。署名ビット列ｙ’を使うことによって、倍加された点と加算された点のｙ座標の署名ビットが得られ、計算が容易になる。
【００３７】
上記の各例の場合、データ列２２は値ｅＱの計算を容易にするために使われる追加情報を含んでいる。しかしながら、どのケ−スでも、情報が検証プロセスの一部としてデータ列の内容から計算されるので、署名の完全性は妥協を許さない。それと共に情報が順次使用されるｅの値は、受信されたデータ列から得られ、送信者証明書に不正な変更が加えられると、不正確な検証となる。追加情報は、証明当局証明書に含まれ、署名要素の一部を構成するので、攻撃者は検索することなしにそれを取り換えることはできない。
【００３８】
したがって、各実施例では、検証に必要な情報に加えて受信者に検証の計算を容易にする情報を送ることによって、署名の検証が容易になっていることがわかるであろう。上記実施例では、一組の通信者間でのオペレーションを説明したが、これらの通信者の一方は証明当局、もしくは、信頼できる仲介者であってもよいことはわかるであろう。証明当局は、始めの通信者からメッセージを受け取り、補足情報を計算し、データ列をアセンブルし、受信者にデータ列を送信する。このようにすることで、それぞれの計算能力が限られている一組の通信者間における公開鍵交換が容易になる。
【００３９】
上記の実施例は、署名検証プロトコルに関連して説明されている。しかしながら、この技術は、鍵一致、あるいは、鍵移送プロトコルのような他の公開鍵オペレーションに対しても適用することができる。これらのプロトコルの例としては、ＭＱＶプロトコルやＩＥＥＥ  Ｐ  ２１３６３ドラフト基準に記されたプロトコルがある。このようなプロトコルでは、一般的に曲線上の点の比例した（ｓｃａｌｅｄ）倍数、即ち、ｋが整数であり、Ｐが曲線上の点であるとするとｋＰを得ることが必要となる。したがって、通信者間で転送された情報を、このようなプロトコルに係わる計算を容易にするために補足情報を含むように変更することができる。
【００４０】
本発明は、ある特定の実施例を参照して説明されたが、次に記載する本発明の精神と範囲内であれば当業者によって種々に変更できることは明らかである。
【図面の簡単な説明】
【図１】  通信システムの概略図である。
【図２】  第一実施例における通信システムを使って転送されたデータを表している。
【図３】  図２のデータフォーマットを用いた図１のシステムを使って転送された署名を検証するステップを示すフローチャートである。
【図４】  第二実施例における検証を示すフローチャートである。
【図５】  第三実施例における通信システムを使って転送されたデータを表している。
【図６】  図５のデータフォーマットを用いた署名を検証するステップを示すフローチャートである。
【図１】
0004453996.tif 000004
【図２】
0004453996.tif 000005
【図３】
0004453996.tif 000006
【図４】
0004453996.tif 000007
【図５】
0004453996.tif 000008
【図６】
0004453996.tif 000009