(57)【特許請求の範囲】
【請求項１】
素数ｐを標数とする素体ＧＦ（ｐ）を指定する条件として、前記素数ｐのビット長を入力する入力手段と、
１つ以上のあらかじめ決められた素数について、該素数のバイナリコードのビット長と該素数との対応関係を格納し、与えられたビット長をキーとして対応する素数を検索できるよう構成した素数表と、
前記入力手段により入力されたビット長ｎから、バイナリコードのビット長がｎである素数ｐを生成する生成手段と、
該生成した素数ｐを格納する表現データ格納手段と、
を備え、
前記生成手段は、前記入力手段により入力されたビット長ｎをキーとして前記素数表を検索し、該ビット長ｎに対応する素数が前記素数表に存在する場合は該素数をｐとして前記表現データ格納手段に格納し、該ビット長ｎに対応する素数が前記素数表に存在しない場合は、ビット長がｎの乱数を発生させ、該乱数が素数か否か判定し、素数だと判定されれば該乱数をｐとして前記表現データ格納手段に格納する、
ことを特徴とするデータ生成装置。
【請求項２】
数を指定する指定手段と、
該指定手段により指定された前記数が素数か否かを検証する検証手段とをさらに備え、
該検証手段は、該指定手段により指定された前記数が素数なら該数を素数ｐとして前記表現データ格納手段に格納し、該指定手段により指定された前記数が素数でなければ該指定手段に他の数を要求することを特徴とする
請求項１記載のデータ生成装置。
【請求項３】
拡大次数ｍと、素数ｐを標数とする素体ＧＦ（ｐ）の要素を係数とするｍ次の既約多項式Ｆ（ｘ）により表現される有限体ＧＦ（ｐｍ）を指定する条件として、前記拡大次数ｍを入力する入力手段と、
ＧＦ（ｐ）の要素を係数とする１つ以上のあらかじめ決められた既約多項式について、該既約多項式の拡大次数と該既約多項式との対応関係を格納し、与えられた拡大次数をキーとして対応する既約多項式を検索できるよう構成した既約多項式表と、
前記入力手段により入力された拡大次数ｍから、ＧＦ（ｐ）の要素を係数とするｍ次の既約多項式Ｆ（ｘ）を生成する生成手段と、
該生成した既約多項式Ｆ（ｘ）を格納する表現データ格納手段と、
を備え、
前記生成手段は、前記入力手段により入力された拡大次数ｍをキーとして前記既約多項式表を検索し、ｍ次の既約多項式が前記既約多項式表に存在する場合は該既約多項式をＦ（ｘ）として前記表現データ格納手段に格納し、ｍ次の既約多項式が前記既約多項式表に存在しない場合は、ｐｍ＋１未満の乱数を発生させ、１≦ｋ≦（ｍ＋１）なる全ての整数ｋに対して該乱数のｐ進展開のｋ桁目の値をｘｋ−１の係数としてｍ次の多項式を生成し、該多項式が既約か否か判定し、既約と判定されれば該多項式をＦ（ｘ）として前記表現データ格納手段に格納し、既約と判定されなければｐｍ＋１未満の乱数を発生させる過程から繰り返す、
ことを特徴とするデータ生成装置。
【請求項４】
ＧＦ（ｐ）の要素を係数とする多項式を指定する指定手段と、
該指定手段により指定された前記多項式が既約か否かを検証する検証手段とをさらに備え、
該検証手段は、該指定手段により指定された前記多項式が既約なら該多項式を既約多項式Ｆ（ｘ）として前記表現データ格納手段に格納し、該指定手段により指定された前記多項式が既約でなければ該指定手段に他の多項式を要求することを特徴とする
請求項３記載のデータ生成装置。
【請求項５】
最適化正規基底を使用するか否かを指定する第二の入力手段をさらに備え、
前記既約多項式表は、格納している各拡大次数について、該拡大次数の最適化正規基底が存在するか否かの情報と、存在する場合は最適化正規基底用既約多項式の情報とをさらに格納し、
前記生成手段は、最適化正規基底を使用すると前記第二の入力手段によって指定された場合、前記入力手段により入力された拡大次数ｍをキーとして前記既約多項式表を検索し、
ｍ次の最適化正規基底が存在し、ｍ次の最適化正規基底用既約多項式が前記既約多項式表に存在する場合は、該最適化正規基底用既約多項式をＦ（ｘ）として前記表現データ格納手段に格納し、
ｍ次の最適化正規基底が存在するが、ｍ次の最適化正規基底用既約多項式が前記既約多項式表に存在しない場合は、ｍ次の最適化正規基底用既約多項式を生成してＦ（ｘ）として前記表現データ格納手段に格納し、
ｍ次の最適化正規基底が存在しない場合は、拡大次数の再入力を要求する、
ことを特徴とする請求項３に記載のデータ生成装置。
【請求項６】
ＧＦ（ｐ）の要素を係数とする多項式を指定する指定手段と、
該指定手段により指定された前記多項式が最適化正規基底用既約多項式か否かを検証する検証手段とをさらに備え、
該検証手段は、該指定手段により指定された前記多項式が最適化正規基底用既約多項式なら該多項式を最適化正規基底用既約多項式Ｆ（ｘ）として前記表現データ格納手段に格納し、該指定手段により指定された前記多項式が最適化正規基底用既約多項式でなければ該指定手段に他の多項式を要求することを特徴とする
請求項５記載のデータ生成装置。
【請求項７】
前記表現データ格納手段に格納された表現データに基づいて有限体演算を行う演算手段をさらに備えることを特徴とする請求項１、３、５のいずれか一項に記載のデータ生成装置。
【請求項８】
コンピュータのためのプログラムを記録した記録媒体であって、
素数ｐを標数とする素体ＧＦ（ｐ）を指定する条件として、前記素数ｐのビット長ｎが入力されたとき、
１つ以上のあらかじめ決められた素数について、該素数のバイナリコードのビット長と該素数との対応関係を格納し、与えられたビット長をキーとして対応する素数を検索できるよう構成されている素数表を、前記入力されたビット長ｎをキーとして検索するステップと、
前記検索ステップで該ビット長ｎに対応する素数が前記素数表に存在した場合は該素数を出力し、前記検索ステップで該ビット長ｎに対応する素数が前記素数表に存在しなかった場合は、ビット長がｎの乱数を発生させ、該乱数が素数か否か判定し、素数だと判定されれば該乱数を出力するステップと
を含む処理を前記コンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項９】
コンピュータのためのプログラムを記録した記録媒体であって、
拡大次数ｍと、素数ｐを標数とする素体ＧＦ（ｐ）の要素を係数とするｍ次の既約多項式Ｆ（ｘ）により表現される有限体ＧＦ（ｐｍ）を指定する条件として、前記拡大次数ｍが入力されたとき、
ＧＦ（ｐ）の要素を係数とする１つ以上のあらかじめ決められた既約多項式について、該既約多項式の拡大次数と該既約多項式との対応関係を格納し、与えられた拡大次数をキーとして対応する既約多項式を検索できるよう構成した既約多項式表を、前記入力された拡大次数ｍをキーとして検索するステップと、
前記検索ステップでｍ次の既約多項式が前記既約多項式表に存在した場合は該既約多項式を出力し、前記検索ステップでｍ次の既約多項式が前記既約多項式表に存在しなかった場合は、ｐｍ＋１未満の乱数を発生させ、１≦ｋ≦（ｍ＋１）なる全ての整数ｋに対して該乱数のｐ進展開のｋ桁目の値をｘｋ−１の係数としてｍ次の多項式を生成し、該多項式が既約か否か判定し、既約と判定されれば該多項式を出力し、既約と判定されなければｐｍ＋１未満の乱数を発生させる過程から繰り返すステップと
を含む処理を前記コンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１０】
入力手段が、素数ｐを標数とする素体ＧＦ（ｐ）を指定する条件として、前記素数ｐのビット長ｎを入力し、
生成手段が、１つ以上のあらかじめ決められた素数について、該素数のバイナリコードのビット長と該素数との対応関係を格納し、与えられたビット長をキーとして対応する素数を検索できるよう構成されている素数表を、前記指定されたビット長ｎをキーとして検索し、
前記生成手段が、該ビット長ｎに対応する素数が前記素数表に存在した場合は該素数をｐとし、該ビット長ｎに対応する素数が前記素数表に存在しなかった場合は、ビット長がｎの乱数を発生させ、該乱数が素数か否か判定し、素数だと判定されれば該乱数をｐとして、生成された素数ｐを有限体演算装置に供給する
ことを特徴とするデータ生成方法。
【請求項１１】
入力手段が、拡大次数ｍと、素数ｐを標数とする素体ＧＦ（ｐ）の要素を係数とするｍ次の既約多項式Ｆ（ｘ）により表現される有限体ＧＦ（ｐｍ）を指定する条件として、前記拡大次数ｍを入力し、
生成手段が、ＧＦ（ｐ）の要素を係数とする１つ以上のあらかじめ決められた既約多項式について、該既約多項式の拡大次数と該既約多項式との対応関係を格納し、与えられた拡大次数をキーとして対応する既約多項式を検索できるよう構成した既約多項式表を、前記入力された拡大次数ｍをキーとして検索し、
前記生成手段が、ｍ次の既約多項式が前記既約多項式表に存在した場合は該既約多項式をＦ（ｘ）とし、ｍ次の既約多項式が前記既約多項式表に存在しなかった場合は、ｐｍ＋１未満の乱数を発生させ、１≦ｋ≦（ｍ＋１）なる全ての整数ｋに対して該乱数のｐ進展開のｋ桁目の値をｘｋ−１の係数としてｍ次の多項式を生成し、該多項式が既約か否か判定し、既約と判定されれば該多項式をＦ（ｘ）とし、既約と判定されなければｐｍ＋１未満の乱数を発生させる過程から繰り返し、
前記生成手段が、生成された既約多項式Ｆ（ｘ）を有限体演算装置に供給する
ことを特徴とするデータ生成方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、符号、暗号等に関する有限体演算を行う際に、有限体の表現データを自動的に設定するデータ生成装置およびその方法に関する。
【０００２】
【従来の技術】
近年のコンピュータ技術およびネットワーク技術の発展に伴い、符号、暗号等を含む様々な分野において、有限体演算を行う局面が増えてきている。有限体（finite field）とは、四則演算が定義されている有限集合を指し、有限体演算とは、有限体上で定義されたこれらの演算を指す。
【０００３】
特に、電子商取引等のインターネットを利用したビジネスにおいては、オープンネットワークのセキュリティを確保するための暗号理論が非常に重要な技術として脚光を浴びている。暗号技術を実現するためには有限体演算が必須であるが、データのセキュリティを保つために非常に大きなサイズの有限体を用いるケースが多く、その演算効率を上げることは、実用上重要なテーマである。
【０００４】
有限体演算を実現するためには、まず、いくつかの表現データを決定して、有限体を表現しなければならない。有限体の要素（元）の個数は、ｐを素数とし、ｍを正整数として、ｐm となる。この正整数ｍは拡大次数と呼ばれる。一般に、有限体の要素を記述するためには、素数ｐ、拡大次数ｍ、およびｍ次の既約多項式Ｆ（ｘ）を表現データとして設定しなければならないことが知られている。
【０００５】
従来の有限体演算装置においては、装置自身があらかじめ内蔵している固定の表現データを用いるか、もしくは、ユーザがすべての表現データを指定することで、有限体を表現していた。
【０００６】
【発明が解決しようとする課題】
しかしながら、従来の有限体の表現方法には、次のような問題がある。
固定の表現データのみを用いる場合、符号、暗号等のシステムにおける様々な局面に必要となる多様な表現データを得ることができず、表現の柔軟性に欠ける。また、非常に大きな有限体において、ユーザがすべての表現データを指定する場合、表現データの選択に多大な労力を要する。さらに、ユーザが不適切な表現データを選択すると、演算速度が低下し、システムの性能が低下するといった弊害が生じることもある。
【０００７】
本発明の課題は、効率の良い有限体演算を実現するために、ユーザの負荷をなるべく軽減しながら、有限体の表現データを柔軟に設定するデータ生成装置およびその方法を提供することである。
【０００８】
【課題を解決するための手段】
図１は、本発明のデータ生成装置の原理図である。図１のデータ生成装置は、入力手段１、生成手段２、および表現データ格納手段３を備える。入力手段１は、有限体を指定する条件を入力する。生成手段２は、入力された条件に基づいて、有限体の表現データを自動的に生成し、表現データ格納手段３は、生成された表現データを格納する。
【０００９】
生成手段２は、入力手段１が入力した指定条件に基づいて、その条件に対応する有限体の表現データを自動的に生成し、生成された表現データを表現データ格納手段３に格納する。格納された表現データは、有限体演算を行う装置に供給され、その表現データを用いた有限体演算が行われる。
【００１０】
ユーザは、入力手段１を介して、希望する有限体の条件を入力することができる。このとき、例えば、素数ｐのビット長や拡大次数ｍのような、直観的に思いつくことのできる最小限の条件さえ指定すれば、生成手段２が、素数ｐやｍ次の既約多項式Ｆ（ｘ）のような、直観的に思いつくことの困難な表現データを自動的に生成する。
【００１１】
したがって、有限体の表現データの選択におけるユーザの負荷が軽減され、生成手段２が生成可能な範囲内で、表現データを柔軟に設定することが可能になる。さらに、適切な条件が指定されれば、効率の良い有限体演算を実現する表現データが生成される。このように、本発明のポイントは、指定された条件に基づいて、有限体の表現データを自動的に生成することである。
【００１２】
例えば、図１の入力手段１は、後述する図４の入出力装置１１および自動条件指定インタフェース１２に対応し、図１の生成手段２は、図４の表現データ生成器１５に対応し、図１の表現データ格納手段３は、図４の表現データ格納域１７に対応する。
【００１３】
【発明の実施の形態】
以下、図面を参照しながら、本発明の実施の形態を詳細に説明する。
まず、図２および図３を参照しながら、暗号技術に用いられる有限体演算の例を説明する。
【００１４】
図２は、よく知られたDiffie-Hellmanの鍵交換の例を示している。例えば、ユーザＡとユーザＢの間で秘密鍵暗号を用いてデータ通信を行う場合、まず、両者が秘密鍵を共有する必要がある。このとき、第３者に知られることなく、ネットワーク上で秘密情報を交換するために、Diffie-Hellmanの鍵交換が用いられる。
【００１５】
素数ｐ、拡大次数ｍにより表される要素数ｐm の有限体をＧＦ（ｐm ）と記すことにすると、図２で用いられている有限体は、ＧＦ（１１）と記される（ｍ＝１）。ｍ＝１の有限体は、素体（prime field ）とも呼ばれる。
【００１６】
ここでは、ｐ＝１１、ｇ＝２が公開されており、ユーザＡの秘密情報がｘ＝４であり、ユーザＢの秘密情報がｙ＝６であり、共有すべき秘密情報がｓ＝ｇxy  ｍｏｄ  ｐ＝２24  ｍｏｄ  １１＝５である場合を考える。ｍｏｄ  ｐは、ｐを法とする剰余演算を表し、ｇxy  ｍｏｄ  ｐは、ＧＦ（１１）における有限体演算の一例を表している。
【００１７】
このとき、ユーザＡは、ｇx ｍｏｄ  ｐ＝２4 ｍｏｄ  １１＝５をユーザＢに送信し、ユーザＢは、ｇy ｍｏｄ  ｐ＝２6 ｍｏｄ  １１＝９をユーザＡに送信する。次に、ユーザＡは、ユーザＢから受信したｇy ｍｏｄ  ｐ＝９を用いて、次式により共有秘密情報ｓを求める。
ｓ＝（ｇy ）x ＝９4 ＝５  （ｍｏｄ  ｐ）                      （１）
また、ユーザＢは、ユーザＡから受信したｇx ｍｏｄ  ｐ＝５を用いて、次式により共有秘密情報ｓを求める。
ｓ＝（ｇx ）y ＝５6 ＝５  （ｍｏｄ  ｐ）                      （２）
ここでは、簡単のためにｐ＝１１としたが、実際には、ｐとして非常に大きな値が用いられる。ｐが十分に大きければ、たとえ第３者がｇx ｍｏｄ  ｐとｇy ｍｏｄ  ｐを取得したとしても、これらの情報からｘとｙを求めることは極めて困難となり、秘密情報ｓを知ることは事実上不可能である。こうして、ユーザＡとユーザＢは、秘密情報ｓを安全に共有することができ、この情報を秘密鍵として用いて暗号通信を行うことができる。
【００１８】
次に、図３は、Diffie-Hellmanの鍵交換において、有限体ＧＦ（２）＝｛０，１｝の要素（０または１）を係数とする３次既約多項式を用いて表される有限体ＧＦ（２3 ）を用いた例を示している。この場合、ＧＦ（２3 ）は、ＧＦ（２）の要素を係数とする項からなる２3 個の２次以下の多項式を要素として持つ。
【００１９】
ここでは、ｐ＝２、３次既約多項式ｆ（ｘ）＝ｘ3 ＋ｘ＋１、ｇ＝ｘ  ｍｏｄｆ（ｘ）が公開されており、ユーザＡの秘密情報がｉ＝４であり、ユーザＢの秘密情報がｊ＝６であり、共有すべき秘密情報がｓ＝ｇij  ｍｏｄ  ｆ（ｘ）である場合を考える。ｍｏｄ  ｆ（ｘ）は、ｆ（ｘ）を法とする多項式の剰余演算を表し、ｇij  ｍｏｄ  ｆ（ｘ）は、ＧＦ（２3 ）における有限体演算の一例を表している。
【００２０】
このとき、ユーザＡは、ｇi ｍｏｄ  ｆ（ｘ）＝ｘ4 ｍｏｄ  （ｘ3 ＋ｘ＋１）＝ｘ2 ＋ｘをユーザＢに送信し、ユーザＢは、ｇj ｍｏｄ  ｆ（ｘ）＝ｘ6 ｍｏｄ  （ｘ3 ＋ｘ＋１）＝ｘ2 ＋１をユーザＡに送信する。次に、ユーザＡは、ユーザＢから受信したｇj ｍｏｄ  ｆ（ｘ）＝ｘ2 ＋１を用いて、次式により共有秘密情報ｓを求める。
ｓ＝（ｇj ）i ＝（ｘ2 ＋１）4 ＝ｘ＋１  （ｍｏｄ  ｆ（ｘ））  （３）
また、ユーザＢは、ユーザＡから受信したｇi ｍｏｄ  ｆ（ｘ）＝ｘ2 ＋ｘを用いて、次式により共有秘密情報ｓを求める。
ｓ＝（ｇi ）j ＝（ｘ2 ＋ｘ）6 ＝ｘ＋１  （ｍｏｄ  ｆ（ｘ））  （４）
ここでは、簡単のためにｍ＝３としたが、実際には、ｍとして非常に大きな値が用いられる。ｍが十分に大きければ、たとえ第３者がｇi ｍｏｄ  ｆ（ｘ）とｇj ｍｏｄ  ｆ（ｘ）を取得したとしても、これらの情報からｉとｊを求めることは極めて困難となり、第３者が秘密情報ｓを知ることは事実上不可能である。こうして、ユーザＡとユーザＢは、秘密情報ｓを安全に共有することができ、この情報を秘密鍵として用いて暗号通信を行うことができる。
【００２１】
上述したように、素体ＧＦ（ｐ）を表現するためには、素数ｐを指定しなければならず、有限体ＧＦ（２m ）を表現するためには、拡大次数ｍとｍ次の既約多項式を指定しなければならない。しかしながら、ｐやｍとして非常に大きな数を用いる場合、ユーザが素数ｐやｍ次の既約多項式を陽に指定することは難しい。
【００２２】
本実施形態のデータ生成装置は、ユーザが直観的に思いつくことのできる最小限の条件さえ指定すれば、自動的に素数ｐやｍ次の既約多項式等の表現データを生成する。このため、ユーザが表現データを指定する際の負荷が大きく軽減される。
【００２３】
このとき、可能であれば、高速演算に適した表現データを選択することで、より高速な有限体演算が実現される。さらに、ユーザがすべての表現データを指定することのできるインタフェースを設けることにより、様々な局面に対応できる柔軟性が実現される。
【００２４】
図４は、このようなデータ生成装置の基本構成図である。図４のデータ生成装置は、入出力装置１１、自動条件指定インタフェース１２、手動データ指定インタフェース１３、固定データテーブル１４、表現データ生成器１５、表現データ検証器１６、および表現データ格納域１７を備え、有限体演算装置１８が用いる有限体の表現データを生成する。
【００２５】
ユーザは、入出力装置１１を介して、自動条件指定インタフェース１２または手動データ指定インタフェース１３に対して必要な指示を入力する。自動条件指定インタフェース１２は、ユーザが表現データ生成のための最小限の条件を指定する場合に用いられ、手動データ指定インタフェース１３は、ユーザが表現データの任意のパラメータを自ら指定する場合に用いられる。
【００２６】
固定データテーブル１４は、あらかじめ決められた適切な表現データを格納し、表現データ生成器１５は、自動条件指定インタフェース１２による指定に従って、最終的に使用される表現データを決定する。表現データ検証器１６は、手動データ指定インタフェース１３により指定された表現データが有限体演算に適切なものかどうかを検証する。
【００２７】
表現データ格納域１７は、実際の演算時に使用される表現データを格納し、有限体演算装置１８は、表現データ格納域１７の表現データを参照して、有限体演算を行う。
【００２８】
図５は、図４のデータ生成装置による処理のフローチャートである。ユーザは表現データ選択のための条件指定において、自動モードまたは手動モードのいずれかを選択することができ、データ生成装置は、自動条件指定インタフェース１２および手動データ指定インタフェース１３により、どちらのモードが選択されたかをチェックする（ステップＳ１）。自動モードにおいては、ユーザは最低限の条件を指定するだけで済み、手動モードにおいては、ユーザは表現データのすべてのパラメータを指定しなければならない。
【００２９】
自動モードが選択された場合、表現データ生成器１５は、まず、指定された条件が適切か否か（正当か否か）をチェックする（ステップＳ２）。そして、それが適切でなければ、自動条件指定インタフェース１２を介して警告を発し、条件の再入力を要求して（ステップＳ３）、ステップＳ２以降の処理を繰り返す。
【００３０】
適切な条件が入力されると、次に、固定データテーブル１４を検索して、指定された条件を満たす表現データが存在するか否かをチェックする（ステップＳ４）。そのような表現データが固定データテーブル１４に存在すれば、そのパラメータを表現データ格納域１７に設定し（ステップＳ６）、処理を終了する。また、そのような表現データが存在しなければ、指定された条件に基づいて表現データを生成して（ステップＳ５）、表現データ格納域１７に設定し（ステップＳ６）、処理を終了する。
【００３１】
固定データテーブル１４にあらかじめ保持された表現データは、例えば、高速な有限体演算を実現できるように選ばれたものであり、表現データ生成器１５による表現データ生成のロジックは、例えば、高速な有限体演算を実現する表現データを生成するものである。
【００３２】
ステップＳ１において手動モードが選択された場合、表現データ検証器１６は、指定された表現データの正当性を検証し（ステップＳ７）、それが有限体演算を行うにあたって適切なものかどうかをチェックする（ステップＳ８）。
【００３３】
そして、その表現データが適切であれば、それを表現データ格納域１７に設定し（ステップＳ６）、処理を終了する。また、指定された表現データが適切でなければ、手動データ指定インタフェース１３を介して警告を発し、再度、適切な表現データを指定するようにユーザに促し（ステップＳ９）、ステップＳ７以降の処理を繰り返す。
【００３４】
表現データが表現データ格納域１７に設定されると、有限体演算部１８は、その値に基づいて有限体演算を行う。自動モードが選択された場合、自動的に高速な有限体演算を実現する表現データが設定されるため、演算の効率が向上する。
【００３５】
次に、図６から図１２までを参照しながら、図４の構成に基づく様々なデータ生成装置の実施形態について説明する。
図６は、素数ｐに関する条件に基づいて素体ＧＦ（ｐ）の表現データを生成するデータ生成装置の構成図である。素体ＧＦ（ｐ）の表現データとしては、素数ｐを設定すればよい。この数ｐは、標数（characteristic）とも呼ばれる。
【００３６】
図６のデータ生成装置は、入出力装置１１、自動条件指定インタフェース１２、手動データ指定インタフェース１３、素数表２１、テーブル参照部２２、乱数発生部２３、素数判定部２４、２５、および素数格納域２６を備え、有限体演算装置１８が用いる素体の表現データを生成する。
【００３７】
素数表２１は、図４の固定データテーブル１４に対応し、あらかじめ決められた素数とそのバイナリコードのビット長ｎの対応関係を格納する。例えば、図７に示す素数表においては、ｎ＝２，３，４，．．．に対応する素数３，７，１１，．．．が順に格納されている。
【００３８】
テーブル参照部２２、乱数発生部２３、および素数判定部２４は、図４の表現データ生成器１５に対応する。テーブル参照部２２は、与えられたビット長ｎをキーとして素数表２１を参照し、対応する素数を取得する。与えられたビット長ｎに対応する素数が素数表２１に存在しないとき、乱数発生部２３は、ビット長ｎの乱数を発生し、素数判定部２４は、その乱数が素数か否かを判定する。
【００３９】
素数判定部２５は、図４の表現データ検証器１６に対応し、ユーザが指定した素数ｐが本当に素数であるか否かを判定する。素数格納域２６は、図４の表現データ格納域１７に対応し、与えられた素数ｐを表現データとして格納する。
【００４０】
図８は、図６のデータ生成装置による処理のフローチャートである。まず、データ生成装置は、自動モードと手動モードのいずれが選択されたかをチェックする（ステップＳ１１）。自動モードにおいては、ユーザは自動条件指定インタフェース１２を介して素数のビット長ｎ（素体のビットサイズ）のみを入力し、手動モードにおいては、ユーザは自ら具体的な素数ｐを選択し、手動データ指定インタフェース１３を介してそれを入力する。
【００４１】
自動モードが選択された場合、テーブル参照部２２は、指定されたビット長ｎがサポート範囲内のビット長か否かをチェックする（ステップＳ１２）。そして、それがサポート範囲外であれば、自動条件指定インタフェース１２を介して警告を発し、ビット長の再入力を要求して（ステップＳ１３）、ステップＳ１２以降の処理を繰り返す。
【００４２】
サポート範囲内のビット長ｎが入力されると、次に、素数表２１を検索して、ビット長ｎに対応する素数が存在するか否かをチェックする（ステップＳ１４）。そのような素数が素数表２１に存在すれば、それを素数ｐとして素数格納域２６に設定し（ステップＳ１６）、処理を終了する。
【００４３】
また、そのような素数が存在しなければ、乱数発生部２３は、指定されたビット長ｎの乱数を発生させ、素数判定部２４は、発生した乱数が素数か否かを判定する（ステップＳ１５）。そして、素数判定部２４は、素数と判定された乱数を表現データとして採用し、それを素数ｐとして素数格納域２６に設定して（ステップＳ１６）、処理を終了する。
【００４４】
素数判定部２４による素数判定（primality test）のアルゴリズムとしては、例えば、以下の文献に記載されているようなものが用いられる。
文献［１］：情報処理学会  監修，岡本龍明（おかもと  たつあき）・太田和夫（おおた  かずお）  共編，“暗号・ゼロ知識証明・数論”，共立出版，ｐｐ．１３０−１４３，１９９５．
文献［２］：IEEE P1363 Annex A/Editorial Contribution,“Standard Specifications For Public Key Cryptography ”, pp.78-81, 1998. ステップＳ１１において手動モードが選択された場合、素数判定部２５は、素数判定部２４と同様にして、指定された数ｐの素数判定を行い（ステップＳ１７）、それが本当に素数であるか否かをチェックする（ステップＳ１８）。
【００４５】
そして、指定された数ｐが素数であれば、それを表現データとして採用して、素数格納域２６に設定し（ステップＳ１６）、処理を終了する。また、それが素数でなければ、手動データ指定インタフェース１３を介して警告を発し、再度、正しい素数を入力するようにユーザに促し（ステップＳ１９）、ステップＳ１７以降の処理を繰り返す。
【００４６】
素数ｐが素数格納域２６に設定されると、有限体演算部１８は、その値に基づいて素体ＧＦ（ｐ）上の有限体演算を行う。このような構成によれば、ユーザがビット長さえ指定すれば自動的に素数ｐが生成されるため、ユーザが素数ｐを指定する際の負荷が軽減される。また、必要であれば、ユーザが素数ｐを直接指定することもでき、柔軟な操作性が実現される。
【００４７】
図９は、拡大次数ｍに基づいて有限体ＧＦ（２m ）の表現データを生成するデータ生成装置の構成図である。有限体ＧＦ（２m ）の場合、素数ｐは２に決められているため、それ以外の表現データとしては、拡大次数ｍとｍ次の既約多項式Ｆ（ｘ）を設定すればよい。ｍ次の多項式は、例えば、各項ｘk（ｋ＝０，１，．．．，ｍ）の係数（０または１）の集合により表すことができる。
【００４８】
図９のデータ生成装置は、入出力装置１１、自動条件指定インタフェース１２、手動データ指定インタフェース１３、既約多項式表３１、テーブル参照部３２、多項式発生部３３、既約性判定部３４、３５、および既約多項式格納域３６を備え、有限体演算装置１８が用いる有限体の表現データを生成する。
【００４９】
既約多項式表３１は、図４の固定データテーブル１４に対応し、あらかじめ決められた拡大次数ｍとｍ次の既約多項式Ｆ（ｘ）の対応関係を格納する。例えば、図１０に示す既約多項式表においては、ｍ＝２，３，４，．．．に対応する既約多項式として、ｘ2 ＋ｘ＋１，ｘ3 ＋ｘ＋１，ｘ4 ＋ｘ＋１，．．．が格納されている。
【００５０】
テーブル参照部３２、多項式発生部３３、および既約性判定部３４は、図４の表現データ生成器１５に対応する。テーブル参照部３２は、与えられた拡大次数ｍをキーとして既約多項式表３１を参照し、対応する既約多項式を取得する。与えられた拡大次数ｍに対応する既約多項式が既約多項式表３１に存在しないとき、多項式発生部３３は、ｍ次の多項式を発生し、既約性判定部３４は、その多項式が既約か否かを判定する。
【００５１】
既約性判定部３５は、図４の表現データ検証器１６に対応し、ユーザが指定したｍ次の既約多項式が本当に既約であるか否かを判定する。既約多項式格納域３６は、図４の表現データ格納域１７に対応し、拡大次数ｍとｍ次の既約多項式Ｆ（ｘ）を表現データとして格納する。
【００５２】
図１１は、図９のデータ生成装置による処理のフローチャートである。まず、データ生成装置は、自動モードと手動モードのいずれが選択されたかをチェックする（ステップＳ２１）。自動モードにおいては、ユーザは自動条件指定インタフェース１２を介して拡大次数ｍのみを入力し、手動モードにおいては、ユーザは自ら具体的なｍ次の既約多項式Ｆ（ｘ）を選択し、それを拡大次数ｍとともに手動データ指定インタフェース１３を介して入力する。
【００５３】
自動モードが選択された場合、テーブル参照部３２は、指定された拡大次数ｍがサポート範囲内の拡大次数か否かをチェックする（ステップＳ２２）。そして、それがサポート範囲外であれば、自動条件指定インタフェース１２を介して警告を発し、拡大次数の再入力を要求して（ステップＳ２３）、ステップＳ２２以降の処理を繰り返す。
【００５４】
サポート範囲内の拡大次数ｍが入力されると、次に、既約多項式表３１を検索して、拡大次数ｍに対応する既約多項式が存在するか否かをチェックする（ステップＳ２４）。そのような既約多項式が既約多項式表３１に存在すれば、それを既約多項式Ｆ（ｘ）として、拡大次数ｍとともに既約多項式格納域３６に設定し（ステップＳ２６）、処理を終了する。
【００５５】
また、そのような既約多項式が存在しなければ、多項式発生部３３は、ｍ次のの多項式を発生させ、既約性判定部３４は、発生した多項式が既約か否かを判定する（ステップＳ２５）。そして、既約性判定部３４は、既約と判定された多項式を既約多項式Ｆ（ｘ）として採用し、それを拡大次数ｍとともに既約多項式格納域３６に設定して（ステップＳ２６）、処理を終了する。
【００５６】
ステップＳ２１において手動モードが選択された場合、既約性判定部３５は、既約性判定部３４と同様にして、指定された多項式Ｆ（ｘ）の既約性判定（irreducibility test ）を行い（ステップＳ２７）、それが本当に既約であるか否かをチェックする（ステップＳ２８）。
【００５７】
そして、指定された多項式Ｆ（ｘ）が既約であれば、それを表現データとして採用して、拡大次数ｍとともに既約多項式格納域３６に設定し（ステップＳ２６）、処理を終了する。また、それが既約でなければ、手動データ指定インタフェース１３を介して警告を発し、再度、正しい既約多項式を入力するようにユーザに促し（ステップＳ２９）、ステップＳ２７以降の処理を繰り返す。
【００５８】
図１２は、図１１のステップＳ２５における既約多項式生成処理のフローチャートである。まず、テーブル参照部３２は、多項式発生部３３に拡大次数ｍを入力し（ステップＳ３１）、多項式発生部３３は、（ｍ＋１）ビットの乱数（バイナリコード）を発生させる（ステップＳ３２）。
【００５９】
次に、多項式発生部３３は、有限体ＧＦ（２）＝｛０，１｝の要素を係数とするｍ次の多項式を生成する（ステップＳ３３）。ここでは、ｋ＝１，２，．．．，ｍ＋１のそれぞれの値について、発生した乱数のｋビット目の値（０または１）をｘk-1 の項の係数とし、それらの項からなるｍ次の多項式を生成する。
【００６０】
次に、既約性判定部３４は、生成された多項式の既約性判定を行い（ステップＳ３４）、それが既約か否かをチェックする（ステップＳ３５）。既約性判定のアルゴリズムとしては、例えば、上述した文献［２］の３０ページに記載されているようなものが用いられる。生成された多項式が既約でなければ、ステップＳ３２以降の処理を繰り返し、既約な多項式が得られれば、それを既約多項式格納域３６に出力して（ステップＳ３６）、処理を終了する。
【００６１】
図１１の処理により、拡大次数ｍと既約多項式Ｆ（ｘ）が既約多項式格納域３６に設定されると、有限体演算部１８は、そのデータに基づいて有限体ＧＦ（２m ）上の有限体演算を行う。このような構成によれば、ユーザが拡大次数ｍさえ指定すれば自動的にｍ次の既約多項式Ｆ（ｘ）が生成されるため、ユーザが既約多項式Ｆ（ｘ）を指定する際の負荷が軽減される。また、必要であれば、ユーザが既約多項式Ｆ（ｘ）を直接指定することもでき、柔軟な操作性が実現される。
【００６２】
ところで、有限体ＧＦ（２m ）上の演算を高速化する方法の１つとして、最適化正規基底（optimal normal basis）を用いる方法が知られている（文献［１］，ｐｐ．１６７−１７０／文献［２］，ｐｐ．１９−２４）。一般に、有限体ＧＦ（２m ）は、正規基底（normal basis）を生成元として表現することができ、特に、最適化正規基底に基づく表現データを用いれば、べき乗算および乗算を飛躍的に高速化することができる。
【００６３】
そこで、図９のデータ生成装置において、最適化正規基底を用いた表現データを生成するオプションを設けることにする。ただし、最適化正規基底は、必ずしもすべての拡大次数について存在するわけではなく、これを利用するためには、拡大次数ｍを適切に指定する必要がある。例えば、暗号に用いられる１６０≦ｍ≦２０００の拡大次数のうち最適化正規基底が存在するものは、以下の文献にリストアップされている。
文献［３］：American National Standard, x9.62-199x, Public Key Cryptography For The Financial Services Industry: The Elliptic Curve Digital Signature Algorithm, p.41, Working Draft.
ユーザは、自動条件指定インタフェース１２および手動データ指定インタフェース１３を介して、最適化正規基底を使用するか否かをオプションとして指定することができる。この場合、既約多項式表３１には、各拡大次数について、最適化正規基底が存在するか否かを表す情報が付加され、存在する場合は、必要に応じてその最適化正規基底用既約多項式の情報が付加される。最適化正規基底用既約多項式とは、最適化正規基底を用いて有限体を表現するために必要な特定の既約多項式を指す。
【００６４】
図１３は、このようなデータ生成装置による処理のフローチャートである。まず、データ生成装置は、自動モードと手動モードのいずれが選択されたかをチェックする（ステップＳ４１）。自動モードにおいては、ユーザは、自動条件指定インタフェース１２を介して、拡大次数ｍと最適化正規基底を使用する指示とを入力する。また、手動モードにおいては、ユーザは、自ら具体的なｍ次の最適化正規基底用既約多項式Ｆ（ｘ）を選択し、それを拡大次数ｍとともに手動データ指定インタフェース１３を介して入力する。
【００６５】
自動モードが選択された場合、テーブル参照部３２は、既約多項式表３１を参照して、指定された拡大次数ｍの最適化正規基底が存在するか否かをチェックする（ステップＳ４２）。そして、ｍ次の最適化正規基底が存在しないか、あるいは拡大次数ｍがサポート範囲外であれば、自動条件指定インタフェース１２を介して警告を発し、拡大次数の再入力を要求して（ステップＳ４３）、ステップＳ４２以降の処理を繰り返す。
【００６６】
最適化正規基底を有する拡大次数ｍが入力されると、次に、既約多項式表３１に最適化正規基底用既約多項式が存在するか否かをチェックする（ステップＳ４４）。そのような既約多項式が既約多項式表３１に存在すれば、それを最適化正規基底用既約多項式Ｆ（ｘ）として、拡大次数ｍとともに既約多項式格納域３６に設定し（ステップＳ４６）、処理を終了する。
【００６７】
また、そのような既約多項式が存在しなければ、多項式発生部３３は、ｍ次の最適化正規基底用既約多項式を生成する（ステップＳ４５）。そして、それを最適化正規基底用既約多項式Ｆ（ｘ）として、拡大次数ｍとともに既約多項式格納域３６に設定し（ステップＳ４６）、処理を終了する。最適化正規基底用既約多項式の生成アルゴリズムとしては、例えば、上述した文献［２］の３７ページに記載されているようなものが用いられる。
【００６８】
ステップＳ４１において手動モードが選択された場合、既約性判定部３５は、指定された多項式Ｆ（ｘ）の最適化正規基底用既約性判定を行い（ステップＳ４７）、それが本当に最適化正規基底用既約多項式であるか否かをチェックする（ステップＳ４８）。
【００６９】
最適化正規基底用既約性判定は、例えば、上述した文献［２］の２０ページに記載されている最適化正規基底が存在するか否かの判定アルゴリズムと、最適化正規基底用既約多項式の生成アルゴリズムとを組み合わせて行われる。
【００７０】
この場合、既約性判定部３５は、まず、指定された多項式Ｆ（ｘ）の拡大次数ｍにおいて、最適化正規基底が存在するか否かをチェックする。最適化正規基底が存在すれば、次に、ｍ次の最適化正規基底用既約多項式を生成して、Ｆ（ｘ）を生成された多項式と比較する。そして、両者が一致すれば、Ｆ（ｘ）が最適化正規基底用既約多項式であると判定する。
【００７１】
また、あらかじめこれらのアルゴリズムに基づいて、サポート範囲内のすべての最適化正規基底用既約多項式のテーブルを生成しておき、そのテーブルを参照しながら、最適化正規基底用既約性判定を行うこともできる。
【００７２】
指定された多項式Ｆ（ｘ）が最適化正規基底用既約多項式であれば、それを表現データとして採用して、拡大次数ｍとともに既約多項式格納域３６に設定し（ステップＳ４６）、処理を終了する。また、それが最適化正規基底用既約多項式でなければ、手動データ指定インタフェース１３を介して警告を発し、再度、正しい最適化正規基底用既約多項式を入力するようにユーザに促し（ステップＳ４９）、ステップＳ４７以降の処理を繰り返す。
【００７３】
拡大次数ｍと最適化正規基底用既約多項式Ｆ（ｘ）が既約多項式格納域３６に設定されると、有限体演算部１８は、そのデータに基づいて有限体ＧＦ（２m ）上の有限体演算を行う。
【００７４】
このような構成によれば、ユーザが最適化正規基底を有する拡大次数ｍさえ指定すれば、自動的にｍ次の最適化正規基底用既約多項式Ｆ（ｘ）が生成される。このため、ユーザが最適化正規基底用既約多項式Ｆ（ｘ）を指定する際の負荷が軽減されるとともに、最適化正規基底に基づく高速な有限体演算が可能となる。また、必要であれば、ユーザが最適化正規基底用既約多項式Ｆ（ｘ）を直接指定することもでき、柔軟な操作性が実現される。
【００７５】
以上の実施形態においては、主として、有限体ＧＦ（ｐ）およびＧＦ（２m ）の表現データを生成する場合について説明したが、一般の有限体ＧＦ（ｐm ）の表現データを生成する場合も同様である。この場合、ユーザは、素数ｐまたはそのビット長ｎと拡大次数ｍさえ指定すれば、データ生成装置は、自動的にＧＦ（ｐm ）の表現データを生成する。
【００７６】
ところで、本実施形態のデータ生成装置および有限体演算装置は、図１４に示すような情報処理装置（コンピュータ）を用いて構成することができる。図１４の情報処理装置は、ＣＰＵ（中央処理装置）４１、メモリ４２、入力装置４３、出力装置４４、外部記憶装置４５、媒体駆動装置４６、およびネットワーク接続装置４７を備え、それらはバス４８により互いに接続されている。
【００７７】
メモリ４２は、例えば、ＲＯＭ（read only memory）、ＲＡＭ（random access memory）等を含み、処理に用いられるプログラムとデータを格納する。ＣＰＵ４１は、メモリ４２を利用してプログラムを実行することにより、必要な処理を行う。
【００７８】
この場合、図４の自動条件指定インタフェース１２、手動データ指定インタフェース１３、表現データ生成器１５、および表現データ検証器１６は、メモリ４２の特定のプログラムコードセグメントに格納されたインストラクションの集合により実現されるソフトウェアコンポーネントに対応する。また、図４の固定データテーブル１４と表現データ格納域１７は、メモリ４２内に設けられる。
【００７９】
入力装置４３は、例えば、キーボード、ポインティングデバイス、タッチパネル等であり、ユーザからの指示や情報の入力に用いられる。出力装置４４は、例えば、ディスプレイ、プリンタ、スピーカ等であり、ユーザへのメッセージや処理結果の出力に用いられる。
【００８０】
外部記憶装置４５は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク（magneto-optical disk）装置等である。情報処理装置は、この外部記憶装置４５に、上述のプログラムとデータを保存しておき、必要に応じて、それらをメモリ４２にロードして使用することができる。
【００８１】
媒体駆動装置４６は、可搬記録媒体４９を駆動し、その記録内容にアクセスする。可搬記録媒体４９としては、メモリカード、フロッピーディスク、ＣＤ−ＲＯＭ（compact disk read only memory ）、光ディスク、光磁気ディスク等、任意のコンピュータ読み取り可能な記録媒体が用いられる。ユーザは、この可搬記録媒体４９に上述のプログラムとデータを格納しておき、必要に応じて、それらをメモリ４２にロードして使用することができる。
【００８２】
ネットワーク接続装置４７は、任意のネットワーク（回線）を介して外部の装置と通信し、通信に伴うデータ変換を行う。情報処理装置は、必要に応じて、ネットワーク接続装置４７を介して上述のプログラムとデータを外部の装置から受け取り、それらをメモリ４２にロードして使用することができる。
【００８３】
図１５は、図１４の情報処理装置にプログラムとデータを供給することのできるコンピュータ読み取り可能な記録媒体を示している。可搬記録媒体４９や外部のデータベース５０に保存されたプログラムとデータは、メモリ４２にロードされる。そして、ＣＰＵ４１は、そのデータを用いてそのプログラムを実行し、必要な処理を行う。
【００８４】
【発明の効果】
本発明によれば、ユーザが最小限の条件さえ指定すれば自動的に有限体の表現データが生成されるため、ユーザの負荷が大きく軽減される。また、特定の表現データを選択的に生成することにより、高速な有限体演算を実現することができる。さらに、有限体演算の様々な局面に応じて、ユーザがすべての表現データを柔軟に指定することもできる。
【図面の簡単な説明】
【図１】本発明のデータ生成装置の原理図である。
【図２】第１の秘密情報の交換を示す図である。
【図３】第２の秘密情報の交換を示す図である。
【図４】第１のデータ生成装置の構成図である。
【図５】第１のデータ生成処理のフローチャートである。
【図６】第２のデータ生成装置の構成図である。
【図７】素数表を示す図である。
【図８】第２のデータ生成処理のフローチャートである。
【図９】第３のデータ生成装置の構成図である。
【図１０】既約多項式表を示す図である。
【図１１】第３のデータ生成処理のフローチャートである。
【図１２】既約多項式生成処理のフローチャートである。
【図１３】第４のデータ生成処理のフローチャートである。
【図１４】情報処理装置の構成図である。
【図１５】記録媒体を示す図である。
【符号の説明】
１  入力手段
２  生成手段
３  表現データ格納手段
１１  入出力装置
１２  自動条件指定インタフェース
１３  手動データ指定インタフェース
１４  固定データテーブル
１５  表現データ生成器
１６  表現データ検証器
１７  表現データ格納域
１８  有限体演算装置
２１  素数表
２２、３２  テーブル参照部
２３  乱数発生部
２４、２５  素数判定部
２６  素数格納域
３１  既約多項式表
３３  多項式発生部
３４、３５  既約性判定部
３６  既約多項式格納域
４１  ＣＰＵ
４２  メモリ
４３  入力装置
４４  出力装置
４５  外部記憶装置
４６  媒体駆動装置
４７  ネットワーク接続装置
４８  バス
４９  可搬記録媒体
５０  データベース
//
【図１】
0003833412.tif 000002
【図２】
0003833412.tif 000003
【図３】
0003833412.tif 000004
【図４】
0003833412.tif 000005
【図５】
0003833412.tif 000006
【図６】
0003833412.tif 000007
【図７】
0003833412.tif 000008
【図８】
0003833412.tif 000009
【図９】
0003833412.tif 000010
【図１０】
0003833412.tif 000011
【図１１】
0003833412.tif 000012
【図１２】
0003833412.tif 000013
【図１３】
0003833412.tif 000014
【図１４】
0003833412.tif 000015
【図１５】
0003833412.tif 000016