(57)【特許請求の範囲】
【請求項１】
提供者装置、第１及び第２ユーザ装置から構成され、第１ユーザ装置と第２ユーザ装置との間で秘密の通信を行う秘密通信方式であって、
（１）秘密通信網における提供者装置は、秘密通信に使用する楕円曲線Ｅ｛ＧＦ（ｐ）｝を設定し、Ｅ｛ＧＦ（ｐ）｝とそのベースポイントＢＰを前記第１及び第２ユーザ装置へ送信し、
（２）前記第１及び第２ユーザ装置は、それぞれ、Ｅ｛ＧＦ（ｐ）｝とベースポイントＢＰとを受信し、任意の自然数を選定し、この自然数回、前記ベースポイントＢＰをＥ｛ＧＦ（ｐ）｝上で加算した値を求め、
（３）前記第１及び第２ユーザ装置は、それぞれ、自分が任意に選択した自然数を秘密に保持し、この一方、前記自然数回、ＢＰをＥ｛ＧＦ（ｐ）｝上で加算した値を自己の公開鍵として通信を希望する相手方の前記ユーザ装置に相互に送信し、
（４）相互に通信を行う前記第１及び第２ユーザ装置は、各自が秘密に保持している自分が選定した自然数回、相手方の前記ユーザ装置から通知されてきた公開鍵をＥ｛ＧＦ（ｐ）｝上で加算した値を求め、これを両者の共有鍵とし、
（５）相互に通信を行う前記第１及び第２ユーザ装置は、それぞれ、共有鍵を使用して通信文を暗号化及び復号するに際して、共有鍵と通信文の演算の内容を取極め、
（６）第１ユーザ装置は、通信文を共有鍵を使用して取極めに従って秘密化した上で第２ユーザ装置に送信し、
（７）第２ユーザ装置は、取極めに従って共有鍵を使用して復号し、
前記提供者装置は、
正整数ｔ及び［２ｔ／３］ビット以下の大きさの正整数αを記憶している記憶部と、
虚二次体Ｑ｛（−ｄ）1/2 ｝の類数が小さくなるように、正整数ｄ＝３と設定する正整数設定部と、
素数ｐを、ある整数ａに対して４×ｐ−ａ2 がｄ×平方数となりかつｐ＋１−ａあるいはｐ＋１＋ａが３０桁以上の大きい素数で割れかつ、前記記憶部に記憶されている正整数ｔ及び正整数αに対して２t ±αと表せる素数となるように設定する素数設定部と、
ｄにより定まる類多項式Ｈd （ｘ）＝０のｐを法とした解をｊ不変数にもつ有限体ＧＦ（ｐ）を定義体に持つように、楕円曲線Ｅ｛ＧＦ（ｐ）｝を設定する楕円曲線設定部から構成される楕円曲線設定手段を含む
ことを特徴とする秘密通信方式。
【請求項２】
前記楕円曲線設定手段は、有限体ＧＦ（ｐ）を定義体にもつ楕円曲線ＥのＧＦ（ｐ）上の元で構成される群をＥ｛ＧＦ（ｐ）｝とするとき、Ｅ｛ＧＦ（ｐ）｝の元の個数が３０桁以上の大きな素数で割れるように、前記楕円曲線Ｅを設定する
ことを特徴とする請求項１に記載の秘密通信方式。
【請求項３】
前記楕円曲線設定手段は、楕円曲線Ｅとして、ｄにより定まる類多項式Ｈd （ｘ）＝０の次数をｎとし、ｐを法とした解をｊ1 、…、ｊn とするとき、これらの根をｊ不変数にもつ有限体ＧＦ（ｐ）を定義体にもつ楕円曲線Ｅ1 、…、Ｅn を設定する
ことを特徴とする請求項１及び請求項２のいずれかに記載の秘密通信方式。
【請求項４】
前記第１及び第２ユーザ装置は、それぞれ通信文を共有鍵を使用して取極めに従って秘密化する際及び復号する際の演算において、２t ≡α（mod p)若しくは２t ≡−α（mod p)という性質及び加法鎖を使用する
ことを特徴とする請求項１〜請求項３のいずれかに記載の秘密通信方式。
【請求項５】
提供者装置、第１及び第２ユーザ装置から構成され、第１ユーザ装置と第２ユーザ装置との間で秘密の通信を行う秘密通信方式であって、
（１）秘密通信網における提供者装置は、秘密通信に使用する楕円曲線Ｅ｛ＧＦ（ｐ）｝を設定し、Ｅ｛ＧＦ（ｐ）｝とそのベースポイントＢＰを前記第１及び第２ユーザ装置へ送信し、
（２）前記第１及び第２ユーザ装置は、Ｅ｛ＧＦ（ｐ）｝とベースポイントＢＰとを受信し、前記第１ユーザ装置は、任意の自然数を選定し、この自然数回、前記ベースポイントＢＰをＥ｛ＧＦ（ｐ）｝上で加算した値を求め、
（３）前記第１ユーザ装置は、自分が任意に選択した自然数を秘密に保持し、この一方、前記自然数回、ＢＰをＥ｛ＧＦ（ｐ）｝上で加算した値を、自己の公開鍵として、前記第２ユーザ装置に通知し、
（４）前記第１及び第２ユーザ装置は、通知された公開鍵と乱数を使用しての通信文を暗号化及び復号するに際して、公開鍵と乱数と通信文の演算の内容の方法を取極め、
（５）公開鍵の通知を受けた前記第２ユーザ装置は、自分が選定した乱数と、前記第１ユーザ装置から通知されてきた公開鍵をもとに、取極めに従って通信文を暗号化し、
（６）前記第２ユーザ装置は、暗号化した通信文を、公開鍵を知らせてきた前記第１ユーザ装置に送信し、
（７）受信した前記第１ユーザ装置は、自分が選定し秘密に保持している整数を使用して、取極めに従って秘密化された通信文を復号し、
前記提供者装置は、
正整数ｔ及び［２ｔ／３］ビット以下の大きさの正整数αを記憶している記憶部と、
虚二次体Ｑ｛（−ｄ）1/2 ｝の類数が小さくなるように、正整数ｄ＝３と設定する正整数設定部と、
素数ｐを、ある整数ａに対して４×ｐ−ａ2 がｄ×平方数となりかつｐ＋１−ａあるいはｐ＋１＋ａが３０桁以上の大きい素数で割れかつ、前記記憶部に記憶されている正整数ｔ及び正整数αに対して２t ±αと表せる素数となるように設定する素数設定部と、
ｄにより定まる類多項式Ｈd （ｘ）＝０のｐを法とした解をｊ不変数にもつ有限体ＧＦ（ｐ）を定義体に持つように、楕円曲線Ｅ｛ＧＦ（ｐ）｝を設定する楕円曲線設定部から構成される楕円曲線設定手段を含む
ことを特徴とする秘密通信方式。
【請求項６】
前記楕円曲線設定手段は、有限体ＧＦ（ｐ）を定義体にもつ楕円曲線ＥのＧＦ（ｐ）上の元で構成される群をＥ｛ＧＦ（ｐ）｝とするとき、Ｅ｛ＧＦ（ｐ）｝の元の個数が３０桁以上の大きな素数で割れるるように、前記楕円曲線Ｅを設定する
ことを特徴とする請求項５に記載の秘密通信方式。
【請求項７】
前記楕円曲線設定手段は、楕円曲線Ｅとして、ｄにより定まる類多項式Ｈd （ｘ）＝０の次数をｎとし、ｐを法とした解をｊ1 、…、ｊn とするとき、これらの根をｊ不変数にもつ有限体ＧＦ（ｐ）を定義体にもつ楕円曲線Ｅ1 、…、Ｅn を設定する
ことを特徴とする請求項５及び請求項６のいずれかに記載の秘密通信方式。
【請求項８】
前記第１及び第２ユーザ装置は、それぞれ、通信文を共有鍵を使用して取極めに従って秘密化する際及び復号する際の演算において、２t ≡α（mod n)若しくは２t ≡−α（mod p)という性質及び加法鎖を使用する
ことを特徴とする請求項５〜請求項７のいずれかに記載の秘密通信方式。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は情報セキュリテイ技術としての暗号技術に関し、特に、楕円曲線を用いた暗号技術に関する。
【０００２】
【従来の技術】
近年、一般に公開されたディジタル通信回線網を使用して相互に通信を行ったり、有料で放送番組を提供したりすることがさかんになってきている。ところで、一般に公開された通信回線網を使用する場合、第三者による盗聴や詐称、あるいは送信者による送信先の間違いを完全に防止することは困難である。このため、秘密通信方式並びに署名及び認証方式と呼ばれる通信方式が重要なものとなっている。ここに、秘密通信方式とは、特定の通信相手以外に通信内容を漏らすことなく通信を行う方式である。また署名及び認証通信方式とは、通信相手に通信内容の正当性を示したり、本人であることを証明する通信方式である。この署名、認証及び秘密通信方式には公開鍵暗号とよばれる通信方式がある。公開鍵暗号は通信相手が多数のとき、通信相手ごとに異なる暗号鍵を容易に管理するための方式であり、多数の通信相手と通信を行うのに不可欠な基盤技術である。以下、これについて、歴史的な経緯もふまえて本発明に関係する原理と手順とを簡単に説明する。なお、この秘密通信方式等の一般技術については、池野信一，小山謙二著「現代暗号理論」  電子通信学会発行  １９８６年に詳しい。
（１）有限体上の離散対数問題を使用した秘密通信方式。
（原理）
ｐを素数、ｇをその一の原始根、ｕを任意の自然数、αをｇのｕ乗のｐを法とする剰余とする。すなわち、ｇu ≡α（ｍｏｄ  ｐ）とする。この場合、ｇとｐとｕを与えられたときにαを求めるのは容易である。しかし、ｐが１４０桁程度の素数となると、大型計算機の発達した今日でも、ｇとｐとαからｕを求めるのは困難である。これは丁度、２つの素数ｒとｓがあるときｒとｓからその積を求めるのは容易であるが、ｒとｓが各１４０桁程度となれば、積は２８０桁となるため、これから素因数分解によりｒとｓを求めるのは困難なことに似る。
【０００３】
次に、ｖを他の任意の自然数とし、βをｇのｖ乗のｐを法とする剰余とする。すなわち、ｇv ≡β（ｍｏｄ  ｐ）とする。この場合、αのｖ乗のｐを法とする剰余とβのｕ乗のｐを法とする剰余とは等しい。
すなわち、αv ≡（ｇu ）v ≡（ｇv ）u ≡βu （ｍｏｄ  ｐ）である。
（手順）
以下、図２を参照しつつ、この原理を利用した有限体上の離散対数問題（整数論では法と剰余と原始根から指数を求めることの困難性であるが、通信分野では通常このように言われる。）を使用した秘密通信方式の手順の一例として、共有鍵暗号方式といわれているものを示す。
【０００４】
通信網の提供者により、ｐとｇが与えられ、各ユーザに通知される。
ユーザＵは、任意の自然数ｕを選択し、ｇu ≡α（ｍｏｄ  ｐ）の演算によりαを計算する。
ユーザＶは、同じくｖを選択し、ｇv ≡β（ｍｏｄ  ｐ）の演算によりβを計算する。
【０００５】
ユーザＵは、ｕは秘密に保持した上でαを公開通信網を使用してユーザＢに通知し、一方ユーザＶはｖを秘密に保持した上でβを公開通信網を使用してユーザＵに通知する。
両者は、ｇuvのｐを法とする剰余ｋuvを計算し、これを両者の共有鍵とし、また第三者には秘密にしておく。
【０００６】
ここに  ｋuv≡ｇuv（ｍｏｄ  ｐ）である。
以上の手順を、理解の便宜のため小さな素数を例にとって具体的に示す。
ｐ＝１１、ｇ＝２とする。今、ユーザＵがｕとして４をとったとする。この場合、ｇu ＝２4 ＝１６であり、１６の１１を法とする剰余は５であるため、α＝５となる。同じく、ユーザＶがｖとして８をとったとする。この場合、ｇv ＝２8 ＝２５６であり、２５６の１１を法とする剰余は３であるため、β＝３となる。更に、αv ＝５8 、βu ＝３4 とも１１を法とする剰余は４（ｍｏｄ  １１）であるため、ｋuv＝４となる。
【０００７】
ユーザＵが通信文をユーザＶに送信する場合、ビット情報たる通信文をある定まった個数毎に区切った上で、各区切れたビット情報毎にｋuvと演算を行って秘密化する。
送信文を（０１０）とする。ｋuv＝４、これは２進数で（１００）となる。このため、今演算を排他的論理和とするならば、秘密化された送信文は｛（０１０）ＸＯＲ（１００）＝｝（１１０）となる。
【０００８】
この上で、ユーザＶに送信する。
一方、これを受信したユーザＶは、ｋuvを使用して復号することにより本来の通信文を入手する。
もし、受信した暗号文が（１１０）ならば、復号後の通信文は｛（１１０）ＸＯＲ（１００）＝｝（０１０）となる。
【０００９】
勿論、上記演算はこの他、２進数とみなしての加算や引算、各対応するビットごとの他の論理演算等としてもよい。
本方式は、たとえ第三者がユーザＵとユーザＶが公開通信網を使用してαとβを相互に知らせあう際に、これらを盗聴等により知得しえても、ｕ若しくはｖを知らない限りｋuvを知ることは困難であることを秘密性の根拠としている。
【００１０】
また、上記通信方法においては、受信したユーザＶは、Ｋuvを知っているのはユーザＵのみであるため、復号した受信文が意味のある内容であるならば、確かにユーザＵから送られてきたものであるという確認も得られることとなる。
また、ユーザＷ，Ｘ等は各任意の自然数ｗ，ｘ，…を選定し、例えばユーザＵとユーザＷとはｇu ・ w のｐを法とする剰余を共有鍵として使用する等多数のユーザに柔軟に対処しえるという利点がある。
【００１１】
更に、各ユーザＵ，Ｖ，Ｗ，…は、秘密に保持する自然数ｕ，ｖ，ｗ，…等を定期的に他の自然数ｕ’，ｖ’，ｗ’，…等に変更したり、特定のユーザＵが通信相手によって更に他の自然数ｕ1 ，ｕ2 ，…等を使いわけたりもしえる。このため、企業等の組織体で使用する場合には、組織変更に柔軟に対応しえる。
なお、実際の暗号通信に際しては、素数ｐのかわりに複数の充分大きな素数ｐ，ｑ，ｒ，…の積やｐの２乗や３乗を使用したり、また原始根ｇに換えて充分に位数の大きな自然数が使用されたりすることもある。
【００１２】
しかしながら、近年の大型計算機の発達を背景にして、数学の理論（類体論の高次相互律、分解法則等）は、ｇとｐとαとから比較的少ない計算量でｕを求める方法を種々開発しつつある。
その対策の一としては、素数ｐを１４０桁程度のものでなく２００桁等充分に大きいものとすることがあげられる。ただし、この場合には、桁数が大きいだけに各種の必要な計算の絶対量が多くなる等の不都合が生じえる。
【００１３】
これらのため、楕円曲線を使用した秘密通信方式が開発された。
以下これについて説明する。
（２）楕円曲線上の離散対数問題を使用した秘密通信方式。
以下、楕円曲線上の離散対数問題について説明する。なお、これはニール  コブリッツ著「整数論と暗号表記法の解説（意訳）」スプリンガー書店  １９８７年，（Neal koblitz , " A Course in Number Theory and Cryptography ",Springer-Verlag,1987）に詳しく述べられている。また、楕円曲線の理論そのものは、日本語文献では、志村五郎，谷山豊著「近代的整数論」  共立出版  １９５７年をあげられる。
（楕円曲線そのものとその上での演算）
楕円曲線とは、１次元アーベル（Ａｂｅｌ）多様体、あるいは既約で非特異な種数１の射影代線曲線をいい、例えばＹ2 ＝Ｘ3 ＋ａＸ＋ｂ等の形で表される。
【００１４】
さて、楕円曲線上の２点をＢＰ1 ，ＢＰ2 としたとき、演算ＢＰ1 ＋ＢＰ2 は、以下のようにして定義される。
ＢＰ1 とＢＰ2 を結ぶ直線がこの楕円曲線と交わる第三の点ＢＰ3 のＸ軸に対して線対称な点をＢＰ3 ’とする。このＢＰ3 ’がＢＰ1 ＋ＢＰ2 である。図３にこの演算の内容を示す。なお、ＢＰ1 ＝ＢＰ2 であるならば、ＢＰ1 とＢＰ2 を結ぶ直線とは、ＢＰ1 における接線をいう。
【００１５】
ところで、この楕円曲線をＥとしたとき、暗号化に使用されるのはＥ｛ＧＦ（ｑ）｝である。ここに、ｑは素数べきであり、ＧＦ（ｑ）は有限体(Galois Field)とし、楕円曲線ＥのＧＦ（ｑ）上の元で生成される群がＥ｛ＧＦ（ｑ）｝である。
このＥ｛ＧＦ（ｑ）｝の簡単な例としては、Ｅがｙ2 ＝ｘ3 ＋３ｘ＋２という楕円曲線であり、ｑ＝５の場合に、その元として（１，１）、（１，−１）、（２，１）、（２，−１）及び無限遠点という５つの元からなる集合を挙げられる。
（原理）
次にＥ｛ＧＦ（ｑ）｝の性質、すなわち秘密通信の根拠の原理について説明する。
【００１６】
Ｅ｛ＧＦ（ｑ）｝の位数が大きな素数で割れる元ＢＰをベースポイント、ｄは任意の自然数とする。このとき、ＢＰとｄとからｄ・ＢＰを計算する（ＢＰをｄ回加える）のは容易である。しかし、Ｅ｛ＧＦ（ｑ）｝の与えられた元ＱとＢＰに対して、
Ｑ＝ｄ・ＢＰ
となる自然数ｄが存在するならばｄを求めよという問題は、計算機の発達した今日でもＢＰやｑ等が３０桁程度の自然数となるならば困難である。なお、ここにＢＰは、ｐを法とする有限体ＧＦ（ｐ）上でのｇに相当する役を担うものである。
（手順）
前記有限体上の場合と基本的には異ならない。
【００１７】
すなわち、前記ｐに相当するのがＥ｛ＧＦ（ｑ）｝であり、ｇに相当するのがＢＰであり、ｕやｖに相当するのがｄであり、またｐを法とするｇのｕ乗の剰余を求める等のＧＦ（ｐ）での演算がＥ｛ＧＦ（ｑ）｝での演算となる。
ただし、楕円曲線上の点は、ｘ軸とｙ軸の二次元座標で与えられ、この一方、通信文は一次元である。このため、二次元座標値のうち、あらかじめのユーザ同志の取極めでｘ座標値とｙ座標値のいずれか一方のみ使用するものとし、通信毎に任意に選択したいずれか一方のみ使用し併せて別途いずれを使用したかを判別可能とするためのデータを送る等の手順が加わる点が異なる。
（３）現時点における楕円曲線を使用した秘密通信方式の発展の方向。
【００１８】
ところで、この楕円曲線上の離散対数問題も、１９９１年に楕円曲線上の離散対数問題を有限体上の離散対数問題に帰着させて比較的容易に解く解法が考案された。ただし、これをのぞくとｐの桁数に比較して、その対数程度の計算で解きえるサブイクスポーネンシャルといわれている解法は存在しない。サブイクスポーネンシャルな解法を用いると１００ビット程度の大きさの定義体上での通常の楕円曲線の離散対数問題は比較的容易に解法される。１９９１年に考案されたこの解法はＭＯＶ帰着法と呼ばれ、ア・メネゼス，エス・ヴァンストン，ティー・岡本著「楕円曲線における離散対数問題を有限体における離散対数問題に帰着させる方法（意訳）」STOC  １９９１年，（A.Menezes,S.Vanstone and T.  Okamoto,"Reducing Elliptic Curve Logarithm to Logarithms in a Finite Field",STOC 91）に詳しく述べられている。ＭＯＶ帰着法では、ｑを素数べきとし、有限体ＧＦ（ｑ）上定義された楕円曲線をＥとし、ＥのＧＦ（ｑ）上の元で構成される群をＥ｛ＧＦ（ｑ）｝とする。このときＥ（ＧＦ（ｑ））∋ＢＰをベースとする楕円曲線上の離散対数問題は、ＢＰの位数とｑが互いに素なときには、有限体ＧＦ（ｑ）のある拡大体ＧＦ（ｑr ）上の離散対数問題に帰着させて解くものである。特にＥがスーパーシンギュラと呼ばれる楕円曲線の場合には、有限体ＧＦ（ｑ）の高々６次拡大体ＧＦ（ｑ6 ）上の離散対数問題に帰着して解くことができる。
【００１９】
そこで、上記ＭＯＶ帰着法による解法を避けるように楕円曲線を構成する研究が行われるようになった。この方法は種々あるが、例えば、ティー・ベス，エス・シャッファー「公開鍵暗号システムにおける非スーパーシンギュラーな楕円曲線（意訳）」エウロクリプト９１，１９９１年（T.Beth,F.Schaefer  "Non Supersingular Elliptic Curves for Public Key Cryptosystems",Eurocrypt 91,1991 ）或いは宮地充子著「普通の楕円曲線上の暗号システム（意訳）」アジアクリプトの要約９１，１９９１年（"On ordinary elliptic curve cryptosystems", Asiacrypt'91,1991 ）等に詳しく解説されている。これらの方法を用いて構成すると、現時点ではサブイクスポーネンシャルなアルゴリズム（ある目的達成のための論理演算等の規則）を与える解法がないため、有限体上の離散対数問題と同程度の安全性ならばはるかに小さな定義体で構成することができる。
【００２０】
ところが楕円曲線の場合、楕円曲線上の一加算に１２、３回の乗算を要求する。
すなわち、楕円曲線上のＢＰ1 （ｘ1,y1）、ＢＰ2 （ｘ2,y2）とした場合
一般には、
ＢＰ1 ＋ＢＰ2 ＝｛ｆ1 （x1, y1, x2, y2），ｆ2 （x1, y , x2, y2）｝，
もしもＢＰ1 ＝ＢＰ2 ならば、
２ＢＰ1 ＝｛ｇ1(x1,y1), g2(x ,y ) ｝
と表わされるが、このときｆ1,f2,g1,g2はＧＦ（ｐ）上の１２．３回の演算のみの関数となる。このため、定義体の大きさが小さくなってもあまり処理速度が速くならない。そこでＭＯＶ帰着法を避けることと共に、さらに処理速度を速くするための研究が行われるようになった。以下、後者の研究について説明する。
（４）楕円曲線を用いた暗号の処理速度を速くする従来の技術。
【００２１】
その一は、エヌ・コブリッツ著「秘密性の良好なＣＭ−曲線（意訳）」Crypto'91,１９９１年（N. Koblitz, "CM-curves with good cryptographic properties", Crypto'91, 1991 ）に詳しく解説されている。
図４は、従来例における署名、認証及び秘密通信方式の処理速度を高速にする楕円曲線の構成の手順の概略を示すものである。
【００２２】
以下、同図を参照しながら従来例の手順を説明する。
（Ｓ１）楕円曲線の候補の決定
次の二つのＧＦ（２）を定義体にもつアノマラス（anomalous ）楕円曲線を考える。
E1：y2＋xy＝x3＋x2＋１
E2：y2＋xy＝x3＋１
楕円曲線ＥのＧＦ（２m ）上の元で構成される群Ｅ｛ＧＦ（２m ｝とは次のような群である。
【００２３】
E1｛GF( 2 m ) ｝＝｛x,y ∈GF(2m ) ｜y2＋xy＝x3＋x2＋１｝∪｛∞｝
E2｛GF( 2 m ) ｝＝｛x,y ∈GF(2m ) ｜y2＋xy＝x3＋１｝∪｛∞｝
ここで∞は無限遠点を表わす。
（Ｓ２）適当な拡大次数ｍの決定
既述のごとく、公開鍵暗号の安全性の根拠となる上述の楕円曲線の離散対数問題は、ベースポイントである元ＢＰの位数が大きな素因数を持たなければ簡単に解けることが知られている。
【００２４】
位数が大きな素因数を持つ元ＢＰが存在するための必要十分条件はＥ｛ＧＦ（ｑ）｝の元の個数が大きな素因数を持つことである。
そこで、（Ｓ１）に述べた楕円曲線Ｅi についてその元の個数＃Ｅi ｛ＧＦ（２m ）｝が大きな素因数で割り切れるようにｍを求める。（ここに、ｉ＝１、２）
なお、Ｅ｛ＧＦ（２m ）｝等における各種楕円曲線の元の個数は、ｍ等が具体的に与えられればハッセ（Ｈａｓｓｅ）やデュー（Ｄｅｕ）等の研究により正確に計算可能となっている。例えば、上記＃Ｅi ｛ＧＦ（２m ）｝では、大よそ２m のオーダーである。
（Ｓ３）実際の楕円曲線の構成
３０桁以上の素因数を持つということより、ｍは大よそ〔３０  ｌｏｇ2 １０〕となる。ここに〔  〕は、ガウス（Ｇａｕｓｓ）の記号であり、記号内の数以下の最大の整数を意味する。以下、基本的には試行錯誤によりかかるｍをいくつかとって、＃Ｅi ｛ＧＦ（２m ）｝を与える公式をもとに３０桁以上の素因数を有するか否か判断する。
【００２５】
楕円曲線Ｅi ｛ＧＦ（２m ）｝上の元で構成される群Ｅi ｛ＧＦ（２m ）｝の元の個数を求め、その素因数分解を行った結果
ｍ＝１０１のとき、＃Ｅ1 ｛ＧＦ（２n ）｝＝２×素数ｐ1
ｍ＝１３１のとき、＃Ｅ2 ｛ＧＦ（２m ）｝＝４×素数ｐ2 
となることがわかった。また、ＭＯＶ帰着法により埋め込まれる有限体が十分大きくなることも確かめられる。
【００２６】
従ってＥ2 ｛ＧＦ（２ 131）｝上の位数が素数ｐ2 となる元をベースポイントＢＰとする楕円曲線上の離散対数問題若しくはＥ1 ｛ＧＦ（２101 ）｝上の位数が素数ｐ1 となる元をベースポイントＢＰとする楕円曲線上の離散対数問題を安全性の根拠にした公開鍵暗号を構成すればよいことが結論づけられる。
さて、アノマラスではＴをＥ（ｘ，ｙ）からＥ（ｘ2 ，ｙ2 ）への写像とするとき〔２〕（２倍）＝Ｔ−Ｔ2 となる。なお、これについては、ジェイ・エッチ・シルバーマン著「楕円曲線の数学（意訳）」スプリンガー書店  １９８６年（J. H.Silverman,  " The arithmetic of elliptic curves",Springer-Verlag,1986）に述べられている。つまり、ＢＰ＝（ｘ，ｙ）とするとき、２ＢＰ＝（Ｔ−Ｔ2 ）（ｘ，ｙ）＝（ｘ，ｙ）−（ｘ2 ，ｙ2 ）となる。このため、このように構成した楕円曲線は、２i ＢＰ＝｛ＢＰ＝（ｘ，ｙ）；i ＝１、２、３、４｝の計算が次のように求められる。
【００２７】
0003706398.tif 000002
（ここに、上添え字中の＾の意味であるが、２＾３は２3 を意味する。他も同様である。）
一方ＧＦ（２）の拡大体上の演算は、基底として正規基底を用いると２乗の計算が巡回シフトでなされるのでハードウエアで行なうときには、処理速度は無視できる。よって、２i ＢＰ（i ＝１、２、３、４）の計算が２回の楕円曲線の足し算で実行できることになり、高速化が望める。また特にＥ2 では定義体ＧＦ（２131 ）上の正規基底は最適な正規基底となり、一回の乗算に必要となる論理積及び排他的論理和の回数が最小になるので、基本演算（有限体の乗算）の高速化が望める。なお、ここに最適な正規基底とは、乗法関数の項数が２ｍ−１となるものをいう。これは、アール・シー・ムリン他３名著「ＧＦ（ｐ）における最適な正規基底（意訳）」ディスクリート  アプライド  マシマテックス２２  １４９〜１６１頁（R. C. Mullin他３名“Optimal normal bases in GF(p a )”Discrete Applied Mathematics 22 P149〜161 ）等に詳しい。
【００２８】
しかし上記従来例においては、楕円曲線の一回の加法が高速になるというわけではない。このため、より高速にするには、演算を高速にする条件｛最適な正規基底をもつ有限体ＧＦ（２m ）｝と安全で２i 倍点（ｉ＝１、２、３、４）が簡単になる楕円曲線の条件（アノラマス楕円曲線でかつ元の個数が大きな素数で割れる）の両方の条件を満たす楕円曲線を見つける必要がある。しかし両者の条件は包含関係にあるわけではないので、両者を満たす楕円曲線の数は少なくなる。（６）楕円曲線の高速化を図る他の技術
（加法鎖）
楕円曲線のｋＢＰの計算を高速にする方法の一つに加法鎖の研究がある。加法鎖とは、例えば７ＢＰを求めるのに単にＢＰを７回足すのではなく、２｛２（２ＢＰ）｝−ＢＰとして、１回の足算と３回の２倍算とするがごとく、足し方を工夫するものであり、有限体のｇi の計算の加法鎖の研究と平行してなされる。これは、予備計算テーブルの持ち方及び計算の順序の工夫を行う研究である。これについては、M. J. Coster, "Some algorithms on addition  chains and their complexity", Center for Mathematics and Computer Science Report CS-R9024 に詳しい。この方法を用いたk ・ ＢＰの計算と、上述の２i 倍点（ｉ＝１、２、３、４）が簡単になる方法を用いたk ・ ＢＰの計算では、加法鎖を用いたほうが高速に実現される。
（有限体について）
参考までに有限体を用いた暗号方式について記すならば、これも様々な高速化の手法が提案されている。しかし、有限体を用いるが故に解読防止の面から秘密通信に使用する定義体が大きくなるという問題がある。これについては、ディー・エム・ゴードン「数体のふるい法を使用した有限体ＧＦ（ｐ）の離散対数問題（意訳）」離散数学のＳＩＡＭ内の雑誌（D.M.Gordon, " Discrete logarithms in GF(p) using the number field sieve", to appear in SIAM Journal on Discrete Math. ）を参照されたい。
【００２９】
【発明が解決しようとする課題】
しかしながら、上記楕円曲線上の離散対数問題を安全性の根拠にした公開鍵暗号は、高速な処理が求められる。従来例１のように特定の自然数ｃに対しｃＢＰが高速になるという方法の場合、一般の自然数ｋに対しｋＢＰを高速にする際、加法鎖の方法と組み合わせて高速にするのが困難である。また、特定のｃに対してｃＢＰが高速になるということからくる条件と基本演算が高速になる条件の両方を満たす楕円曲線を構成すると定義体が大きくなる。このため、定義体が小さく、一般の自然数に対してｋＢＰの演算が高速にしえ、加法鎖と組み合わせることが容易、かつ基本演算が高速な楕円曲線を使用して署名、認証及び秘密通信を行うことが望まれている。
【００３０】
また暗号システムの安全性を高めるためには、一システムの安全性が損なわれた際に秘密通信を前提として成り立っている取引等の全システムの安全性が損なわれてしまう危険性あるいは一システムの安全性がたまたま損なわれる確率を下げる必要性がある。このため、通信相手、通信目的等のシステム毎にもしくは同じシステムであっても定期的に暗号のパラメータを変えることが望ましい。またこの際、変更量を最小限に抑えること及びシステム性能（速度、メモリサイズ等）が変わらないようにすることが要求される。これは、有限体でいうならば、既述のごとく、ｐを定期的に変更するようなものである。
【００３１】
しかし上記従来例においては、ＧＦ（２）上の楕円曲線をＧＦ（２m ）上に持ち上げる方法のため、システム性能を変えない楕円曲線を構成するのは困難である。このため、システム毎に若しくは同じシステムであっても必要な時期毎に暗号のパラメータを変更可能かつこの際必要なメモリサイズ等の変更量が必要最小限、しかも高速演算が可能な楕円曲線を使用しての署名、認証及び秘密通信を行うことが望まれている。
【００３２】
更に、これらの場合に、楕円曲線にはＭＯＶ帰着法が適用できないという条件がつくのは勿論である。
【００３３】
【課題を解決するための手段】
本発明は、以上の目的を達成するべくなされたものである。このため、本発明においては、以下の手順からなる秘密通信方式としている。
（１）秘密通信網の提供者は、秘密通信に使用するＥ｛ＧＦ（ｐ）｝と、そのベースポイントＢＰを通信網の使用者たる各ユーザに提供する。
（２）Ｅ｛ＧＦ（ｐ）｝とベースポイントＢＰの提供を受けた各ユーザは、任意の自然数を秘密鍵として選定し、この自然数回前記ベースポイントＢＰをＥ｛ＧＦ（ｐ）｝上で加算した値を求める。
（３）各ユーザは自分が任意に選択した自然数は秘密に保持し、この一方、前記自然数回、ＢＰをＥ｛ＧＦ（ｐ）｝上で加算した値は自己の公開鍵として通信を希望する相手方のユーザに例えば通信網により相互に通知する。
（４）相互に通信を行う２人のユーザは、相手方ユーザから通知されてきた公開鍵を各自が秘密に保持している自分が選定した自然数回Ｅ｛ＧＦ（ｐ）｝上で加算した値を求め、これを両者の共有鍵とする。
（５）相互に通信を行う２人のユーザは、共有鍵を使用してビット情報たる通信文（含，映像、音響情報）を暗号化及び復号するに際して、共有鍵と通信文の秘密化、復号に使用する演算の内容、例えば足し算、排他的論理和等を取極める。
（６）一方のユーザが通信文を共有鍵を使用してその取極めに従って秘密化した上で他方のユーザに公開通信網を使用して送信する。
（７）秘密化された通信文を受信した他方のユーザは、取極めに従って共有鍵を使用して復号する。
【００３４】
ここにＥ｛ＧＦ（ｐ）｝は以下のものである。
正整数ｄを、虚二次体Ｑ｛（−ｄ）1/2 ｝の類数が小さくなるようにとる。
素数ｐを、ある整数ａに対して４×ｐ−ａ2 がｄ×平方数となりかつｐ＋１−ａあるいはｐ＋１＋ａの一方が３０桁以上の大きい素数で割れかつ、正整数ｔ及び小さい正整数αに対して２t ±αと表せる素数とする。
【００３５】
楕円曲線Ｅはｄにより定まる類多項式Ｈd （ｘ）＝０のｐを法とした解をｊ不変数にもつ有限体ＧＦ（ｐ）を定義体にもつ。
本発明においては、以下のようにしている。前記楕円曲線Ｅは有限体ＧＦ（ｐ）を定義体にもつ楕円曲線ＥのＧＦ（ｐ）上の元で構成される群をＥ｛ＧＦ（ｐ）｝とするとき、Ｅ｛ＧＦ（ｐ）｝の元の個数が３０桁以上の大きな素数で割れる。
【００３６】
本発明においては、正整数αは、２進数表記で２ｔ／３ビット以下の大きさである。
本発明においては、ｐを素数、ｒを正整数とし、有限体ＧＦ（ｐr ）を定義体にもつ楕円曲線ＥのＧＦ（ｐr ）上の元で構成される群をＥ｛ＧＦ（ｐr ）｝とするとき、有限体ＧＦ（ｐr ）を定義体に持つ楕円曲線Ｅ1 ，Ｅ2 ，・・・，Ｅn を、互いに同型ではないが元の個数が等しくなるように構成し、各システムごと、各通信相手ごと、１システムかつ同一通信相手で例えば１年等の一定時期経過後ごとの少なくも一により使用する楕円曲線を変えるようにしている。
【００３７】
本発明においては、楕円曲線Ｅは、ｄにより定まる類多項式Ｈd （ｘ）＝０の次数をｎとし、ｐを法とした解をｊ1 、…、ｊn とするとき、これらの根をｊ不変数にもつ有限体ＧＦ（ｐ）を定義体にもつ楕円曲線Ｅ1 、…、Ｅn である。
本発明においては、通信文を共有鍵を使用して取極めに従って秘密化する際及び復号する際の演算において、２t ≡α（mod p)若しくは２t ≡−α（mod p)という性質及び加法鎖を使用するものとしている。
【００３８】
本発明においては、以下の手順からなる秘密通信方式としている。
（１）秘密通信網の提供者は、秘密通信に使用するＥ｛ＧＦ（ｐ）｝とそのベースポイントＢＰを各ユーザに提供する。
（２）Ｅ｛ＧＦ（ｐ）｝とベースポイントＢＰの提供を受けた各ユーザは、任意の自然数を選定し、この自然数回、前記ベースポイントＢＰをＥ｛ＧＦ（ｐ）｝上で加算した値を求める。
（３）各ユーザは自分が任意に選択した自然数は秘密に保持し、この一方、前記自然数回、ＢＰをＥ｛ＧＦ（ｐ）｝上で加算した値は自己の公開鍵として通信を希望する相手方のユーザに通知する。
（４）２人のユーザは、通知された公開鍵と乱数を使用しての通信文を暗号化及び復号するに際して、公開鍵と乱数とを使用しての通信文の演算の内容の方法を取極める。
（５）公開鍵の通知を受けた他のユーザは、自分が所定の手順で選定した乱数と相手方ユーザから通知されてきた公開鍵をもとに、取極めに従って通信文をハード若しくはソフト的な手段で暗号化する。
（６）ユーザは暗号化した通信文を、公開鍵を知らせてきたユーザに送信する。
（７）受信した他方のユーザは、取極めに従って秘密化された通信文を、ハード的若しくはソフト的な手段で復号する。この際、自分が選定し秘密に保持している整数を使用する。
【００３９】
ここにＥ｛ＧＦ（ｐ）｝は以下のものである。
正整数ｄを、虚二次体Ｑ｛（−ｄ）1/2 ｝の類数が小さくなるようにとる。
素数ｐを、ある整数ａに対して４×ｐ−ａ2 がｄ×平方数となりかつ、ｐ＋１−ａあるいはｐ＋１＋ａが３０桁以上の大きい素数で割れかつ、正整数ｔ及び小さい正整数αに対して２t ±αと表せる素数とする。
【００４０】
楕円曲線Ｅは、ｄにより定まる類多項式Ｈd （ｘ）＝０のｐを法とした解をｊ不変数にもつ有限体ＧＦ（ｐ）を定義体にもつ。
本発明においては更に、前記楕円曲線Ｅは有限体ＧＦ（ｐ）を定義体にもつ楕円曲線ＥのＧＦ（ｐ）上の元で構成される群をＥ｛ＧＦ（ｐ）｝とするとき、Ｅ｛ＧＦ（ｐ）｝の元の個数が３０桁以上の大きな素数で割れるようにしている。
【００４１】
本発明においては、正整数αは、２ｔ／３ビット以下の大きさとする。
本発明においては、ｐを素数、ｒを正整数とし、有限体ＧＦ（ｐr）を定義体にもつ楕円曲線ＥのＧＦ（ｐr ）上の元で構成される群をＥ｛ＧＦ（ｐr ）｝とするとき、有限体ＧＦ（ｐr ）を定義体に持つ楕円曲線Ｅ1,Ｅ2 ，・・・，Ｅn を、互いに同型ではないが元の個数が等しくなるように構成し、発注、購入、純粋な通信等の各システムごと、客、官庁、本社等の各通信相手ごと、１システムかつ同一通信相手で一定時期経過後ごとの少なくも一により使用する楕円曲線を変えるようにしている。
【００４２】
本発明においては、楕円曲線Ｅは、ｄにより定まる類多項式Ｈd （ｘ）＝０の次数をｎとし、ｐを法とした解をｊ1 、…、ｊn とするとき、これらの根をｊ不変数にもつ有限体ＧＦ（ｐ）を定義体にもつ楕円曲線Ｅ1 、…、Ｅnである。
本発明においては、通信文を共有鍵を使用して取極めに従って秘密化する際及び復号する際の演算において、２t ≡α（mod n)若しくは２t ≡−α（mod p)という性質及び加法鎖を使用するものとしている。
【００４３】
【作用】
上記構成により本発明においては、以下の手順で秘密通信がなされる。
（１）秘密通信網の提供者は、秘密通信に使用するＥ｛ＧＦ（ｐ）｝とそのベースポイントＢＰを各ユーザに公開通信網や郵送により提供する。
（２）Ｅ｛ＧＦ（ｐ）｝とベースポイントＢＰの提供を受けた各ユーザは、任意の自然数を選定し、この自然数回前記ベースポイントＢＰをＥ｛ＧＦ（ｐ）｝上で加算した値を求める。
（３）各ユーザは自分が任意に選択した自然数は秘密に保持し、この一方、前記自然数回、ＢＰをＥ｛ＧＦ（ｐ）｝上で加算した値は自己の公開鍵として通信を希望する相手方のユーザに相互に通知する。
（４）相互に通信を行う２人のユーザは、相手方ユーザから通知されてきた公開鍵を各自が秘密に保持している自分が選定した自然数回Ｅ｛ＧＦ（ｐ）｝上で加算した値を求め、これを両者の共有鍵とする。
（５）相互に通信を行う２人のユーザは、共有鍵を使用して通信文を暗号化及び復号するに際して、共有鍵と通信文の演算の内容を別途取極める。
（６）一方のユーザが通信文を共有鍵を使用して取極めに従って演算をすることにより秘密化した上で他方のユーザに送信する。
（７）受信した他方のユーザは、取極めに従って共有鍵を使用して逆演算、排他的論理和なら再度排他的論理和等して復号する。
【００４４】
ここにＥ｛ＧＦ（ｐ）｝は以下のものである。
正整数ｄを、虚二次体Ｑ｛（−ｄ）1/2 ｝の類数が小さくなるようにとる。
素数ｐを、ある整数ａに対して４×ｐ−ａ2 がｄ×平方数となりかつｐ＋１−ａあるいはｐ＋１＋ａが３０桁以上の大きい素数で割れかつ、正整数ｔ及び小さい正整数αに対して２t ±αと表せる素数とする。
【００４５】
楕円曲線Ｅはｄにより定まる類多項式Ｈd （ｘ）＝０のｐを法とした解をｊ不変数にもつ有限体ＧＦ（ｐ）を定義体にもつ。
本発明においては、前記楕円曲線Ｅは有限体ＧＦ（ｐ）を定義体にもつ楕円曲線ＥのＧＦ（ｐ）上の元で構成される群をＥ｛ＧＦ（ｐ）｝とするとき、Ｅ｛ＧＦ（ｐ）｝の元の個数が３０桁以上の大きな素数で割れるものとされている。
【００４６】
本発明においては、正整数αは、２ｔ／３ビット以下の大きさであるものとされている。
本発明においては、ｐを素数、ｒを正整数とし、有限体ＧＦ（ｐr ）を定義体にもつ楕円曲線ＥのＧＦ（ｐr ）上の元で構成される群をＥ｛ＧＦ（ｐr ）｝とするとき、有限体ＧＦ（ｐr ）を定義体に持つ楕円曲線Ｅ1 ，Ｅ2 ，・・・，Ｅn を、互いに同型ではないが元の個数が等しくなるように構成し、各システムごと、各通信相手ごと、１システムかつ同一通信相手で一定時期経過後ごとの少なくも一により使用する楕円曲線が変更される。
【００４７】
本発明においては、楕円曲線Ｅは、ｄにより定まる類多項式Ｈd （ｘ）＝０の次数をｎとし、ｐを法とした解をｊ1 、…、ｊn とするとき、これらの根をｊ不変数にもつ有限体ＧＦ（ｐ）を定義体にもつ楕円曲線Ｅ1 、…、Ｅn であるものとしている。
本発明においては、通信文を共有鍵を使用して取極めに従って秘密化する際及び復号する際の演算において、２t ≡α（mod p)若しくは２t ≡−α（mod p)という性質及び加法鎖を使用することにより、秘密化と復号の際の信号処理が高速になされる。
【００４８】
本発明においては、以下の手順にて秘密通信がなされる。
（１）秘密通信網の提供者は、秘密通信に使用するＥ｛ＧＦ（ｐ）｝とそのベースポイントＢＰを各ユーザに提供する。
（２）Ｅ｛ＧＦ（ｐ）｝とベースポイントＢＰの提供を受けた各ユーザは、任意の自然数を選定し、この自然数回、前記ベースポイントＢＰをＥ｛ＧＦ（ｐ）｝上で加算した値を求める。
（３）各ユーザは自分が任意に選択した自然数は秘密に保持し、この一方、前記自然数回、ＢＰをＥ｛ＧＦ（ｐ）｝上で加算した値は自己の公開鍵として通信を希望する相手方のユーザに通知する。
（４）２人のユーザは、通知された公開鍵と乱数を使用しての通信文を暗号化及び復号するに際して、公開鍵と乱数を使用しての通信文の演算の内容の方法例えば通信文のブロック分割方法等を取極める。
（５）公開鍵の通知を受けた他のユーザは、自分が別途のプログラム等により選定した乱数と相手方ユーザから通知されてきた公開鍵をもとに、取極めに従って送信すべき通信文を暗号化する。
（６）ユーザは暗号化した通信文を、公開鍵を知らせてきたユーザに送信する。
（７）受信した他方のユーザは、取極めに従って秘密化された通信文をハード的若しくはソフト的に復号する。この際、自分が選定し秘密に保持している整数を使用する。
【００４９】
ここにＥ｛ＧＦ（ｐ）｝は以下のものである。
正整数ｄを、虚二次体Ｑ｛（−ｄ）1/2 ｝の類数が小さくなるようにとる。
素数ｐを、ある整数ａに対して４×ｐ−ａ2 がｄ×平方数となりかつ、ｐ＋１−ａあるいはｐ＋１＋ａが３０桁以上の大きい素数で割れかつ、正整数ｔ及び小さい正整数αに対して２t ±αと表せる素数とする。
【００５０】
楕円曲線Ｅは、ｄにより定まる類多項式Ｈd （ｘ）＝０のｐを法とした解をｊ不変数にもつ有限体ＧＦ（ｐ）を定義体にもつ。
本発明においては、前記楕円曲線Ｅは有限体ＧＦ（ｐ）を定義体にもつ楕円曲線ＥのＧＦ（ｐ）上の元で構成される群をＥ｛ＧＦ（ｐ）｝とするとき、Ｅ｛ＧＦ（ｐ）｝の元の個数が３０桁以上の大きな素数で割れるようにされている。
【００５１】
本発明においては、正整数αは、２ｔ／３ビット以下の大きさとされている。
本発明においては、ｐを素数、ｒを正整数とし、有限体ＧＦ（ｐr）を定義体にもつ楕円曲線ＥのＧＦ（ｐr ）上の元で構成される群をＥ｛ＧＦ（ｐr ）｝とするとき、有限体ＧＦ（ｐr ）を定義体に持つ楕円曲線Ｅ1,Ｅ2 ，・・・，Ｅn を、互いに同型ではないが元の個数が等しくなるように構成し、各システムごと、各通信相手ごと、１システムかつ同一通信相手で一定時期経過後ごとの少なくも一により使用する楕円曲線を変えるものとしている。
【００５２】
本発明においては、楕円曲線Ｅは、ｄにより定まる類多項式Ｈd （ｘ）＝０の次数をｎとし、ｐを法とした解をｊ1 、…、ｊn とするとき、これらの根をｊ不変数にもつ有限体ＧＦ（ｐ）を定義体にもつ楕円曲線Ｅ1 、…、Ｅnであるものとしている。
本発明においては、通信文を共有鍵を使用して取極めに従って秘密化する際及び復号する際の演算において、２t ≡α（mod n)若しくは２t ≡−α（mod p)という性質及び加法鎖を使用するものとしている。
【００５３】
【実施例】
以下、楕円曲線の作成とこの作成した楕円曲線での信号処理並びに署名、認証及び秘密通信の手順とに分けて本発明の実施例を説明する。
（第１実施例）
図１に、本発明の署名、認証及び秘密通信方式に使用する楕円曲線の作成手順の概略を示す。本図のうち、Ａは全体の基本的な流れを示し、Ｂはそのうちの一部、具体的には素数ｐの決定のステップの詳細を示す。
【００５４】
以下、本図を参照しながら実施例の手順を説明する。
（ａ１）自然数ｄの決定
自然数ｄを、虚二次体Ｑ｛（−ｄ）1/2 ｝の類数が小さくなるようにとる。ここではｄ＝３とする。ここに、ｄ＝３としたのは、後に示すＨｄ（ｘ）＝０のｐを法とした根を求める計算が楽なことによる。なお虚二次体Ｑ｛（−ｄ）1/2 ｝及び類数については、前提のSilverman に詳しく述べられている。
（ａ２）素数ｐの生成
素数ｐを、ａとｂを自然数としたとき４ｐ−ａ2 ＝ｄ×ｂ2 となりかつ、ｐ＋１−ａあるいはｐ＋１＋ａが大きな素数で割れかつ、自然数ｔ及び小さい自然数αに対し２t −αと表されるようにとる。
【００５５】
この選定手順は試行錯誤法によるが、これを本図のＢを参照しつつ説明する。
なお、この前に、本手順の実現可能性に関係のある数学の理論について概略紹介しておく。
（１）４ｐ＝ａ2 ＋ｄ×ｂ2 という形の方程式は、Ｐｅｌｌ方程式といわれているものの特殊なものであり、ｐが与えられた場合に、これを充たすａとｂは連分数展開で容易に求められる。
【００５６】
（２）素数定理により、ある自然数ｎのあたりには、ほぼｌｏｇｎ個に１個のわりで素数が存在しているのが証明されている。
このため、２t −αという形で表される３０桁程度の自然数は、ほぼ１００個に１個が素数であるのがわかる。更に、２、３、５等小さな素数の倍数は比較的容易に排除しえるため、これらを排除すると素数である確率はうんと高くなる。従って２、３、５等の小さな素数の倍数でない２t −αという自然数が素数か否かは、現在の計算機と数学の理論（Miller,Cohen,Lenstra）で一層容易に確かめられる。
【００５７】
（３）ほとんどの自然数は、ｌｏｇ  ｌｏｇｎ個程度の素因数を有する（Hardy-Ramanujan ）。このため、ｐが３０桁程度の数ならば、ｐ＋１−ａ、ｐ＋１＋ａの素因数の個数は多くの場合、４〜７個である。従って、ｐ＋１−ａあるいはｐ＋１＋ａが充分大きい素因数を有するか否かは、多くの場合容易に判定できる。勿論、その自然数自身が素数であるのを確かめたりもできる。
【００５８】
次に、具体的なｐ，ａ，α，ｔの選定順序を図４のＢをもとに説明する。
まず、ｔを選定した上で初期設定としてｉ＝０、α＝〔２ｔ／３〕とする（ｂ１）。
次いで、αをα−ｉとする（ｂ２）。
ｐ＝２t −αを計算する（ｂ３）。４ｐが、ａ2 ＋３ｂ2 という形に表しえるか否かを判定する（ｂ４）。もし、表しえないならば、ｉ＝ｉ＋１とし（ｂ５）、ステップｂ２へもどる。
【００５９】
４ｐが、ａ2 ＋３ｂ2 という形に表しえるならば、ｐが素数か否かを判定する（ｂ６）。素数でないならば、ステップｂ５へもどる。
ｐが素数であるならば、ｐ＋１＋ａ、ｐ＋１−ａの一方は大きい素因数を有するか否かを判別する（ｂ７）。有しなければステップｂ５へもどる。
大きな素数で割り切れば、終了する。
【００６０】
ここでは
ｐ＝２t −α
ｔ＝１０７
α＝１
ａ＝２４  ３８７８９  ２３０３７  ４０８１５
ととる。
【００６１】
このとき、ｐ＋１＋ａは１００ビットの素数で割れる。
（ａ３）楕円曲線Ｅの決定
Ｅは、類多項式Ｈ3 （Ｘ）＝Ｘのｐを法とした根ｊ＝０をもとにもとめられる。なお、この数学的な面については、前記Silverman の本に掲載されている。
さて、有限体ＧＦ（ｐ）を定義体にもち、元の個数が丁度ｐ＋１＋ａ個になる楕円曲線Ｅのｊ不変数は０になるので、Ｅは次で与えられる。
【００６２】
Ｅ：ｙ2 ＝ｘ3 ＋Ｂ
Ｂ＝６２５
このとき、＃Ｅ｛ＧＦ（ｐ）｝＝ｐ＋１＋ａである。なお、これは前記Silverman の本に示されている。このため、安全で高速な楕円曲線暗号が構成できる。上記のようにして構成された楕円曲線Ｅを従来例２の楕円曲線上の署名、認証及び秘密通信方式に用いると、ベースポイントＢＰの位数が大きな素数で割れ、かつＭＯＶ帰着法を避けることができるので安全な方式が実現される。
【００６３】
さらに方式の実現に要求される基本演算のひとつであるＧＦ（ｐ）上の乗法は、２t ＝αと置き換えることによりｐによる剰余を求めることなく次のように実現できる。
0003706398.tif 000003
【００６４】
i=0  i=0 
ここに、ｓi とｓi+tは１又は０である。
また従来例のように特定の自然数ｃに対してのみｃ・ＢＰの計算が速くなるというものではない。このため、一般の自然数ｋに対してｋ・ＢＰの計算を高速にする手法である加算鎖の方法と組み合わせることにより、一層の高速化が可能になる。またデータ量についても、定義体のデータとして信号処理用のスマートカードにｐを覚える代わりにｔとαを覚えさせることができ、この場合ｔのビット数は無視でき、αは〔２ｔ／３〕ビット以下であるため、定義体のデータ量が削減できる。また、演算の高速化にも寄与する。
【００６５】
なお、上述の実施例は自然数ｄを３として行ったが、これは素数ｐを求める計算が楽なことと虚二次体Ｑ｛（−ｄ）1/2 ｝の類数が小さく、この場合１となることによるものであり、他の虚二次体Ｑ｛（−ｄ）1/2 ｝の類数が小さくなるような自然数なら何でもよい。また、虚二次体Ｑ｛（−ｄ1/2 ）｝の類数が小さいのは、楕円曲線を求める演算が楽なことによるものであり、類数は１に限定されるものではない。なお、ｄ＜１０００ならば、演算が実用上充分可能である。参考までに記すならば、類数が１の虚二次体をつくるｄとしては、必ずしも全てが本発明の実施に適当とは限らないが、他に１、２、７、１１、１９、４３、６７、１６３の８個があり、同じく類数が２の虚二次体をつくるｄとしては、１０、１５、２６、３０等がある。また、ｄに対して条件を満たす素数ｐは上述の実施例だけに限定されるのでなく、本実施例に示したｐに関する条件を満たす素数なら何でもよい。蛇足ながら、ｐが３０桁以上であるならば、近い将来においても、充分な安全性、すなわち逆演算の困難性が維持されるであろう。
（第２実施例）
本発明の署名、認証及び秘密通信方式に使用する楕円曲線の他の作成手順の実施例を示す。本実施例の作成手順も、基本的には図４に示すのと同じである。以下、同図のＡを流用しながら実施例の手順を説明する。
（ａ１）自然数ｄの決定
自然数ｄを、虚二次体Ｑ｛（−ｄ）1/2 ｝の類数が小さくなるようにとる。ここではｄ＝２４とする。
（ａ２）素数ｐの生成
素数ｐを、ａ，ｂを自然数としたとき４ｐ−ａ2 ＝２４×ｂ2 となりかつ、ｐ＋１−ａあるいはｐ＋１＋ａが大きな素数で割れかつ、自然数ｔ及び小さい自然数αに対し２t −αと表されるようにとる。
【００６６】
ここでは
ｐ＝２t −α
ｔ＝１２７
α＝１
ａ＝１０６７１  ９３１７９  ３１４５５  ４５２１９
ととる。このとき、ｐ＋１−ａは１２４ビットの素数で割れる。
【００６７】
なお、この際の詳細な手順も基本的には図４のＢに示すのと同じである。
（ａ３）楕円曲線Ｅの決定
類多項式Ｈ24（Ｘ）＝Ｘ2 ー４８３４９４４Ｘ＋１４６７０１３９３９２のｐを法とした根は
ｊ1 ＝3 14934 62074 25766 39325 56096
ｊ2 ＝1701 41183 46043 77382 69613 04605 19563 84575
である。有限体ＧＦ（ｐ）を定義体にもち、元の個数が丁度ｐ＋１−ａ個になる楕円曲線Ｅのｊ不変数はｊ1 とｊ2 で与えられる。よってそれぞれをｊ不変数にもつ楕円曲線は次で与えられる。
【００６８】
Ｅ1 ：ｙ2 ＝ｘ3 ＋Ａ1 ｘ＋Ｂ1 
Ａ1 ＝915 03150 65123 53429 89289 36723 21130 54488
Ｂ1 ＝1177 15828 25431 33059 03422 01272 67034 04901
Ｅ2 ：ｙ2 ＝ｘ3 ＋Ａ2 ｘ＋Ｂ2 
Ａ2 ＝1400 68970 50479 08325 24538 34292 93927 22673
Ｂ2 ＝366 65585 84970 41444 39129 79404 76337 79873
このとき、＃Ｅ1 ｛ＧＦ（ｐ）｝＝＃Ｅ2 ｛ＧＦ（ｐ）｝＝ｐ＋１−ａであるが、ｊ不変数が異なるので互いに同型でない。このためＥ1 による暗号方式が解読されたところでＥ2 による暗号方式が解読されることはない。
【００６９】
暗号システムをより強固なものにするには、システム毎にもしくは同じシステムでも定期的に暗号方式のパラメータを変更することが望ましい。この際、基本演算（定義体のｐと楕円曲線の元の個数Ｎを法とした演算）は同一である方が変更を容易にする。上記のように構成された楕円曲線Ｅ1 及びＥ2 は、基本演算は同じであるが同型でない暗号方式、すなわち異なる暗号を提供できる。よってＥ1 とＥ2 を２つのシステムで別々に用いる、あるいは一つのシステムにおいてＥ1 からＥ2 に変更することにより容易に暗号システムを強固にできる。さらに方式の実現に要求される基本演算の一つであるＧＦ（ｐ）上の乗法は、ｐ＝２t ±αという形から一般の有限体上の乗法に比較して高速に実現できる。また従来例のように特定の自然数ｃのみに対しｃ・ＢＰの計算が速くなるというものではない。このため、一般の自然数ｋに対してｋ・ＢＰの計算を高速にする手法である加算鎖の方法と容易に組み合わせることにより高速化が可能になる。またデータ量についても、定義体のデータとしてｐを記憶する代わりにｔとαを記憶するだけでよいので、定義体のデータ量は小さくなる。
【００７０】
なお、本実施例は正整数ｄを２４として行ったが、これは勿論他の虚二次体Ｑ｛（−ｄ）1/2 ｝の類数が小さくなるような正整数なら何でもよい。また、ｄに対して条件を満たす素数ｐは上述の実施例だけに限定されるのでなく先に示したｐに関する条件を満たす素数なら何でもよい。そして、これらのことは先の実施例と同じである。
【００７１】
次に、上記第１実施例、第２実施例で示した手順で作成した楕円曲線を使用した離散対数問題を根拠とする署名、認証及び秘密通信方式の実施例を説明する。
（第３実施例）
本実施例は、先の第１実施例の楕円曲線を使用した共有鍵暗号方式であり、図２に示す従来技術の離散対数問題の困難性に基づくものと基本的な手順は同じで
ある。
【００７２】
すなわち、通信網の提供者がＥ｛ＧＦ（ｐ）｝とＢＰを全ユーザに公開し、各ユーザＵ，Ｖ，Ｗ，…は、各々任意の自然数ｕ，ｖ，ｗ，…を選定し、これは秘密に保持する。この上で、各ユーザＵ，Ｖ，Ｗ，…は各々ｕ・ＢＰ，ｖ・ＢＰ，ｗ・ＢＰ…を相互に知らせあう。
任意の二人のユーザは、自分の秘密に保持する自然数と通信相手から知らされた値との積を計算し、これを両者の共有鍵とする。例えばユーザＵとＶならばユーザＵは、自分の秘密に保持するｕとＶから知らされたｖ・ＢＰとの積ｕ・ｖ・ＢＰを計算する。同様に、ユーザＶは、ｖとｕ・ＢＰとからｖ・ｕ・ＢＰを計算する。ここに、当然ｕ・ｖ・ＢＰ＝ｖ・ｕ・ＢＰである。この上で、両者は、ｕ・ｖ・ＢＰを秘密に保持する。
【００７３】
さて、この場合、通信文は１次元の数値であり、ｕ・ｖ・ＢＰはｘ座標値とｙ座標値を有する２次元の数値であるため、通信文の暗号化及び復号にはｘ座標値若しくはｙ座標値のいずれか一方のみ使用され、いずれを使用したかを知らすため、別途１ビットのデータＣ（ｕ・ｖ・ＢＰ）を知らせるものとする。この際、第１実施例の楕円曲線ではｐ≡３（ｍｏｄ  ４）であるため、以下の性質を利用している。
【００７４】
（ｘ3 ＋Ａｘ＋Ｂ）p-1 ＝１                  （フェルマーの定理）
ｙ4=（ｘ3 ＋Ａｘ＋Ｂ）2=（ｘ3 ＋Ａｘ＋Ｂ）4S+2＊（ｘ3 ＋Ａｘ＋Ｂ）2 
ここに、Ｓ＝（ｐ−３）／４
故に、ｙ＝±（ｘ3+Ａｘ＋Ｂ）S+1 
このため、Ｃ（ｕ・ｖ・Ｂｐ）＝１のとき、ｙ＝−（ｘ3+Ａｘ＋Ｂ）、
Ｃ（ｕ・ｖ・Ｂｐ）＝−１のとき、ｙ＝（ｘ3+Ａｘ＋Ｂ）とあらかじめ取極めておく。
（第４実施例）
本実施例では、第３実施例と同じ原理の秘密通信を行なうものであるが、ユーザＵとユーザＶとの間に証人の役を担う仲介者Ｗが存在するものである。
【００７５】
最初、仲介者Ｗは、第２実施例にて示した２つの楕円曲線Ｅ1 とＥ2 をもとに秘密通信に使用するＥ1 ｛ＧＦ（ｐ）｝及びそのベースポイントＢＰu 並びにＥ2 ｛ＧＦ（ｐ）｝及びそのベースポイントＢＰV をもとめる。
この上で、ユーザＷは、ユーザＵに対してはＥ1 ｛ＧＦ（ｐ）｝と自己が選択したベースポイントＢＰu を知らせる。ここにＢＰu はＥ1 ｛ＧＦ（ｐ）｝の零元でない元である。勿論ユーザＶに対してはＥ1 ｛ＧＦ（ｐ）｝もＢＰu も秘密にしておく。
【００７６】
ユーザＶに対してはＥ2 ｛ＧＦ（ｐ）｝と自己が選定したベースポイントＢＰV を知らせる。ここにＢＰV はＥ2 ｛ＧＦ（ｐ）｝の零元でない元である。勿論ユーザＵに対してはＥ2 ｛ＧＦ（ｐ）｝もＢＰV も秘密にしておく。
しかる後、ユーザＵは任意の整数ｄu を秘密に選定し、ユーザＷに対する自分の識別情報Ｙu を式Ｙu ＝ｄu ・ＢＰu により計算する。
【００７７】
ユーザＷは任意の整数ｄuwを秘密に選定し、ユーザＵに対する自分の識別情報Ｙuwを式Ｙuw＝ｄuw・ＢＰu により計算する。
この上で、ユーザＵとユーザＷとは相互にＹu とＹuwとを通知しあい、Ｋuw＝ｄu ・Ｙuw＝ｄuw・Ｙu を両者の共有鍵とする。この上でユーザＵからユーザＷへ共有鍵Ｋuwを暗号化鍵及び復号化鍵とする秘密鍵暗号通信方式により署名を希望する平文Ｍを送信する。この場合の演算は例えば平文Ｍと共有鍵との排他的論理和（暗号化時）及びその逆演算（復号時）とすることができる。
【００７８】
尚、前記Ｙu 、Ｙuw及びＫuwはユーザＶは勿論のこと、第三者にも秘密に保持される。
次に、ユーザＷは任意の整数ｄv を秘密に選定し、ユーザＶに対する自分の識別情報Ｙv を式Ｙv ＝ｄv ・ＢＰv により計算する。
ユーザＷは任意の整数ｄvwを秘密に選定し、ユーザＶに対する自分の識別情報Ｙvw＝ｄvw・ＢＰv により計算する。
【００７９】
この上でユーザＶとユーザＷは相互にＹv とＹvwを通知しあい、Ｋvw＝ｄvw・Ｙv ＝ｄv ・ＢＰv を両者の共有鍵とする。更に、ユーザＶとユーザＷとの通信においては、この共有鍵Ｋvwを使用しての通信文の秘密化の演算は排他的論理和ではなく、EXCLUSTIVE-NORが採用される。この場合にも、Ｙv 、Ｙvw及びＫvwはユーザＵは勿論のこと第三者にも秘密に保持される。
【００８０】
ここで、ユーザＵとユーザＷ及びユーザＶとユーザＷとで採用する楕円曲線を変更しているのは、ユーザＵとユーザＷの通信文の内容をユーザＶに知得されることとユーザＶとユーザＷの通信文の内容をユーアＵに知得されることとを少しでも防ぐためである。
また秘密化そして復号の演算を変更しているのは、ユーザＷの過誤に対して少しでも安全性を増すためであり、またその演算の具体的例として排他的論理和（EXCLUSIVE-OR）、排他的論理和の反転（EXCLUSIVE-NOR ）を採用しているのは、秘密化と復号の処理に要する時間がほぼ同じであるため通信効率がよいことによる。
【００８１】
以上のもとで、ユーザＵとユーザＶとの通信はユーザＷを介在してなされることになる。この場合、ユーザＷは一方のユーザ（Ｕ又はＶ）から他方のユーザ（Ｖ又はＵ）への通信文を介在する場合に、認証した旨の証明文とその受付日時、発信日時等をも付加する。これにより、ユーザＵとユーザＶとの秘密通信はユーザＷにより認証されたこととなる。
【００８２】
この場合、秘密性の向上のため異なる楕円曲線Ｅ1 ，Ｅ2 を使用するが、定義体のｐと楕円曲線の元の個数Ｎを法とした演算が同じであるため、仲介者Ｗの処理も剰余演算ルーチンを共通化できる等種々便利となる。
（第５実施例）
本実施例は第１実施例の楕円曲線を署名、認証通信に使用したものである。図５は、その手順を示したものである。
【００８３】
網提供者は、Ｅ｛ＧＦ（ｐ）｝とＢＰとを全ユーザに公開する。
一方、秘密通信を希望するユーザＵとユーザＶとは、任意の整数ｕ、ｖを秘密に作成し（ステップ３）、網提供者から得た元ＢＰを用いて、Ｅ｛ＧＦ（ｐ）｝上でＹu ＝ｕ・ＢＰ、Ｙv ＝ｖ・ＢＰを計算する。そして、このＹu 、Ｙv を公開通信網を使用して相互に通知する。
【００８４】
次に、ユーザＵからユーザＶに平文Ｍを送る場合であると、
Ｕは秘密に整数である乱数ｒu を選び、自分だけが知っているこの乱数ｒu とＶの公開鍵Ｙv を用いて次の２組の通信文Ｃ1 、Ｃ2 を作成する。
Ｃ1 ＝ｒu ・ＢＰ                                        …〔２〕
Ｃ2 ＝Ｍ＋ｒu ・Ｙv                                     …〔３〕
そしてＵはＶにＣ1 、Ｃ2 を送る。
【００８５】
通信文Ｃ1 、Ｃ2 を受け取ったユーザＶは自分だけが知っているｖを用いて次式を計算してＭを得る。
Ｍ＝Ｃ2 −ｖ・Ｃ1                                       …〔４〕
この場合、もしユーザＵが通信先を誤って第三者である他のユーザＷに送信したとしても、このＷはｖを知り得ないため、通信文の復号をなしえない。
（第６実施例）
次に、通信文の信号処理について説明する。
【００８６】
発生させた乱数及び通信文の秘密化と復号に通信毎にＣ1 ＝ｒu ・ＢＰ1 ，Ｃ2 ＝Ｍ＋ｘ（ｒu ・Ｙv ）等の演算が必要とされる。
この場合、例えば乱数ｒu をとるならば、これは２進数では１と０とのみからなり、これが１０進数で１５ならば２進数では２3 ＋２2 ＋２＋１と表記される。この際、Ｅ｛ＧＦ（ｐ）｝上でのｒu ・ＢＰ1 の演算にはあらかじめ求めていた２3 ＢＰ1 ，２2 ＢＰ1 ，２ＢＰ1 を使用するのにかえて２4 ＢＰ1 −ＢＰ1 が採用される。
【００８７】
更に、２4 ＢＰ−ＢＰの計算は、ＧＦ（ｐ）上の乗算を用いてできるので、
２t ≡α（mod ｐ）又は２t ≡−α（mod ｐ）という性質を利用する。
この他、値の如何によりRelated Artsで説明した加法鎖も採用されるのは勿論である。
以上、本発明を実施例にもとづいて説明してきたが、本発明は何も上記実施例に限定されるものではないのは勿論である。すなわち、例えば
（１）自然数ｄや類数は、素数や楕円曲線を求めるプログラムや計算そのものの便宜のため、比較的小さな数としたものとしている。しかしながら、外交、金融等秘密の要請が高い場合には、計算費用は多少かかろうがより桁数の高い値、例えば１００００、５００００、１０００００前後等としてもよい。
（２）通信文の楕円曲線上でのＢＰとの演算を使用しての暗号化等は、実施例では桁数が増加しないように論理演算としたものであり、これに限定されない。具体的には、送信者と受信者の取極めで乱数を併用したり、通信文をブロック分割し、この分割したブロックの入れ換えに使用する等してもよい。なお、これらの場合には別途使用した乱数の通知やブロック分割の仕方や入れ換え等についての取極めがなされるのは勿論である。また、これらについては、前揚の「現代暗号理論」に詳しい。
（３）楕円曲線Ｅ｛ＧＦ（ｐ）｝上の点のｘ座標、ｙ座標の両方を交互にあるいは偶数日か奇数日かに応じて使いわける等して通信文の暗号化に使用する。
【００８８】
【発明の効果】
以上説明してきたように、本発明では、各種解法の存在しない、しかも比較的小さな楕円曲線上の有限体を使用することにより秘密性の高いしかも信号処理の迅速な署名、認証及び秘密通信方式を提供しえる。
更に、この際、加法錠等の高速演算の併用も容易である。
【００８９】
また、ＩＣ回路等に記憶させることが必要な情報量も少なくてすむ。
また秘密性向上のため定期的に楕円曲線を変更する際にも、必要なハード等の変更は最小限ですむ。
【図面の簡単な説明】
【図１】本発明における署名、認証及び秘密通信方式に使用する楕円曲線を作成するフローチャートである。
【図２】有限体上での離散対数問題の困難性に根拠をおく秘密通信方式の手順の内容を示した図である。
【図３】楕円曲線の演算の内容を示す図である。
【図４】従来の楕円曲線を見出す手順のフローチャートである。
【図５】本発明における署名、認証及び秘密通信方式に使用する楕円曲線を使用しての秘密送信の際の通信文の暗号化と復号の手順の一例を示した図である。
【図１】
0003706398.tif 000004
【図２】
0003706398.tif 000005
【図３】
0003706398.tif 000006
【図４】
0003706398.tif 000007
【図５】
0003706398.tif 000008