(57)【要約】【課題】有限体上の演算高速化の可能性を広げる。【解決手段】要素数ｑの有限体をＧＦ（ｑ）とし、ｑ＝ｐ２とし、ｖ∈ＧＦ（ｐ）とし、αがα２＋ｖ＝０を満たすものとし、基底を〔α，α２〕とする。そして、まず、拡大体元入力部１０において、有限体ＧＦ（ｐ）の元を用いて表される有限体ＧＦ（ｑ）の元の入力を受け、入力された有限体ＧＦ（ｑ）の元を構成する有限体ＧＦ（ｐ）の元を拡大体元演算部２０に送る。この有限体ＧＦ（ｐ）の元が送られた拡大体元演算部２０は、この入力された有限体ＧＦ（ｑ）の元を構成する有限体ＧＦ（ｐ）の元間の演算を行い、有限体ＧＦ（ｑ）上での演算結果を算出し、演算結果出力部３０によって、この演算結果を、有限体ＧＦ（ｐ）の元を用いて出力する。【選択図】      図１
2004279784.tif 000002
【特許請求の範囲】
【請求項１】
要素数ｑの有限体をＧＦ（ｑ）とし、ｑ＝ｐ２とし、ｖ∈ＧＦ（ｐ）とし、αがＧＦ（ｐ）上で規約な多項式α２＋ｖ＝０を満たし、基底を〔α，α２〕とした場合における、有限体ＧＦ（ｐ）の元を用いて表される有限体ＧＦ（ｑ）の元の入力を受け付ける拡大体元入力手段と、
前記拡大体元入力手段において入力された前記有限体ＧＦ（ｑ）の元を構成する前記有限体ＧＦ（ｐ）の元間の演算を行い、前記有限体ＧＦ（ｑ）における演算結果を算出する拡大体元演算手段と、
前記拡大体元演算手段による演算結果を、前記有限体ＧＦ（ｐ）の元を用いて出力する演算結果出力手段と、
を有する有限体上演算装置。
【請求項２】
前記拡大体元入力手段は、
元（ａ０，ａ１）∈ＧＦ（ｐ）を用いてａ＝ａ０α＋ａ１α２と表される拡大体元ａ∈ＧＦ（ｑ）の入力を受け付ける手段であり、
前記拡大体元演算手段は、
前記元ａ０とａ１との乗算を行う乗算手段と、
前記乗算手段による演算結果（ａ０ａ１）を用い、（ａ０ａ１）＋（ａ０ａ１）を求める第１の加算手段と、
前記第１の加算手段による演算結果（２ａ０ａ１）を‐ｖ倍する第１の定数倍手段と、
前記元ａ０の自乗を行う第１の自乗手段と、
前記元ａ１の自乗を行う第２の自乗手段と、
前記第２の自乗手段による演算結果（ａ１）２を‐ｖ倍する第２の定数倍手段と、
前記第１の自乗手段による演算結果（ａ０）２と前記第２の定数倍手段による演算結果‐ｖ（ａ１）２を加算する第２の加算手段と、
を有し、
前記演算結果出力手段は、
元（ｃ０，ｃ１）∈ＧＦ（ｐ）とし、前記拡大体元ａの自乗をａ２＝ｃ０α＋ｃ１α２した場合における、ｃ０として前記定数倍手段による演算結果‐ｖ（２ａ０ａ１）を出力し、ｃ１として前記第２の加算手段による演算結果（（ａ０）２‐ｖ（ａ１）２）を出力する手段であること、
を特徴とする請求項１記載の有限体上演算装置。
【請求項３】
前記拡大体元入力手段は、
元（ａ０，ａ１）∈ＧＦ（ｐ）を用いてａ＝ａ０α＋ａ１α２と表される拡大体元ａ∈ＧＦ（ｑ）の入力を受け付ける手段であり、
前記拡大体元演算手段は、
前記元ａ０の自乗を行う第１の自乗手段と、
前記元ａ１の自乗を行う第２の自乗手段と、
前記第２の自乗手段による演算結果（ａ１）２をｖ倍する第１の定数倍手段と、
前記第１の自乗手段による演算結果（ａ０）２と前記第１の定数倍手段による演算結果ｖ（ａ１）２とを加算する加算手段と、
前記加算手段による演算結果（（ａ０）２＋ｖ（ａ１）２）をｖ倍する第２の定数倍手段と、
前記第２の定数倍手段による演算結果ｖ（（ａ０）２＋ｖ（ａ１）２）の逆元を求める逆元演算手段と、
前期逆元演算手段による演算結果（ｖ（（ａ０）２＋ｖ（ａ１）２））−１を‐ａ０倍する第１の乗算手段と、
前記第２の定数倍手段による演算結果（ｖ（（ａ０）２＋ｖ（ａ１）２））−１をａ１倍する第２の乗算手段と、
を有し、
前記演算結果出力手段は、
元（ｃ０，ｃ１）∈ＧＦ（ｐ）とし、前記拡大体元ａの逆元をａ‐１＝ｃ０α＋ｃ１α２した場合における、ｃ０として前記第１の乗算手段による演算結果‐ａ０（ｖ（（ａ０）２＋ｖ（ａ１）２））−１を出力し、ｃ１として前記第２の乗算手段による演算結果ａ１（ｖ（（ａ０）２＋ｖ（ａ１）２））−１を出力する手段であること、
を特徴とする請求項１記載の有限体上演算装置。
【請求項４】
前記拡大体元入力手段は、
元（ａ０，ａ１）∈ＧＦ（ｐ）を用いてａ＝ａ０α＋ａ１α２と表される第１の拡大体元ａ∈ＧＦ（ｑ）、及び元（ｂ０，ｂ１）∈ＧＦ（ｐ）を用いてｂ＝ｂ０α＋ｂ１α２と表される第２の拡大体元ｂ∈ＧＦ（ｑ）の入力を受け付ける手段であり、
前記拡大体元演算手段は、
前記元ａ０と元ｂ０との乗算を行う第１の乗算手段と、
前記元ａ１と前記元ｂ１との乗算を行う第２の乗算手段と、
前記元ａ０と前記元ａ１との加算を行う第１の加算手段と、
前記元ｂ０と前記元ｂ１との加算を行う第２の加算手段と、
前記第１の加算手段による演算結果（ａ０＋ａ１）と、前記第２の加算手段による演算結果（ｂ０＋ｂ１）との乗算を行う第３の乗算手段と、
前記第３の乗算手段による演算結果（ａ０＋ａ１）（ｂ０＋ｂ１）から、前記第１の乗算手段による演算結果（ａ０ｂ０）を減算する第１の減算手段と、
前記第１の減算手段による演算結果（（ａ０＋ａ１）（ｂ０＋ｂ１）‐（ａ０ｂ０））から、前記第２の乗算手段による演算結果（ａ１ｂ１）を減算する第２の減算手段と、
前記第２の減算手段による演算結果（（ａ０＋ａ１）（ｂ０＋ｂ１）‐（ａ０ｂ０）‐（ａ１ｂ１））を‐ｖ倍する第１の定数倍手段と、
前記第２の乗算手段による演算結果（ａ１ｂ１）を‐ｖ倍する第２の定数倍手段と、
前記第１の乗算手段による演算結果（ａ０ｂ０）に、前記第２の定数倍手段による演算結果‐ｖ（ａ１ｂ１）を加算する第３の加算手段と、
を有し、
前記演算結果出力手段は、
元（ｃ０，ｃ１）∈ＧＦ（ｐ）とし、前記第１の拡大体元ａと前記第２の拡大体元ｂとの乗算結果をａｂ＝ｃ０α＋ｃ１α２した場合における、ｃ０として前記第１の定数倍手段による演算結果‐ｖ（（ａ０＋ａ１）（ｂ０＋ｂ１）‐（ａ０ｂ０）‐（ａ１ｂ１））を出力し、ｃ１として第３の加算手段による演算結果（（ａ０ｂ０）‐ｖ（ａ１ｂ１））を出力する手段であること、
を特長とする請求項１記載の有限体上演算装置。
【請求項５】
前記拡大体元演算手段における前記有限体ＧＦ（ｑ）上の演算を構成する前記有限体ＧＦ（ｐ）上の演算は、
前記拡大体元演算手段による演算を再帰的に適用して行われる演算であること、
を特長とする請求項１から４の何れかに記載の有限体上演算装置。
【請求項６】
請求項１から５の何れかに記載された有限体上演算装置としてコンピュータを機能させるための有限体上演算プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、拡大体上の演算を行う有限体上演算装置、及びその機能をコンピュータ上で実現するための有限体上演算プログラムに関し、特に、高速な演算が可能な有限体上演算装置、及び有限体上演算プログラムに関する。
【０００２】
【従来の技術】
情報通信ネットワークの進展が進む昨今、電子情報の秘匿や認証に必要な暗号技術は不可欠な要素である。そして、この暗号技術の安全性と高速化の向上が今後の重大な課題となっている。
そのような中、電子商取引の時代を担う次世代暗号として楕円曲線暗号が注目を集めている。楕円曲線暗号は、楕円曲線上の離散対数問題の求解困難性を根拠に安全性を確保する暗号方式の一種であり、素因数分解の困難性を安全性の根拠にするＲＳＡ暗号等と比べ、遥かに短い鍵長で同等の安全性強度を実現することができるものである。
【０００３】
しかし、この楕円曲線暗号も、処理能力が制限されるスマートカードや、大量の暗号処理が行われるサーバ装置等においては、処理速度や安全性の面で課題があり、その高速化・安全性の研究が世界中で展開されている。
楕円曲線暗号を用いた公開鍵暗号やデジタル署名には、要素数ｑ（素数又は素数のべき乗）の有限体ＧＦ（ｑ）上で定義された楕円曲線を用いることが一般的である。従って、有限体ＧＦ（ｑ）上での演算を高速に行うことが可能となれば、このような楕円曲線暗号を用いた公開鍵暗号やデジタル署名の処理を高速化することが可能となる。そして、特許文献１では、ｑが素数のべき乗である場合に、有限体ＧＦ（ｑ）上での演算を高速化する方法が提唱されている。
【０００４】
また、一般に、楕円曲線暗号の安全性を確保するためには、要素数１６０以上の有限体が必要であると言われている。そのため、楕円曲線暗号の高速化は、要素数１６０以上の有限体上での演算の高速化が前提となる。
ここで、例えば、要素数２５６の有限体ＧＦ（２５６）上での演算をコンピュータ上で行う場合、体の性質を満たす２５６個の元を独立に用意し、それによって実現される有限体ＧＦ（２５６）上で演算を行うことも可能である。しかし、この方法では、繰り上がり処理等に時間を要し、演算処理を高速化することができないという問題点がある。
【０００５】
そのため、このような場合、まず要素数２の有限体ＧＦ（２）を用意し、その体を８次拡大して演算を行うことが望ましい。つまり、有限体ＧＦ（２５６）上＝ＧＦ（２８）での演算を、有限体ＧＦ（２４）上の演算を用いて構成し、有限体ＧＦ（２４）上の演算を、有限体ＧＦ（２２）の演算を用いて構成し、有限体ＧＦ（２２）の演算を有限体ＧＦ（２）上の演算を用いて構成する方法をとることで処理を高速化することができる。これにより、コンピュータでの取り扱いが容易な有限体ＧＦ（２）上の演算のみによって、実質的に有限体ＧＦ（２５６）上の演算を行うことが可能となるからである。
この体の拡大において、ＧＦ（ｐ）の元（ａ０，ａ１）を用いてＧＦ（ｑ２）の元ａを生成する場合、従来は、ＧＦ（ｐ）上で既約な多項式ｘ２＋ｕｘ＋ｖ＝０，ｕ，ｖ∈ＧＦ（ｐ）の根αを用い、基底を［１，α］とおきａ＝ａ０＋ａ１αと表すか（多項式基底表現）、基底を［α，αｐ］とおきａ＝ａ０α＋ａ１αｐと表す（正規基底表現）ことが一般的であった。
【０００６】
【特許文献１】
特開２００２−２１５０２２号公報。
【０００７】
【発明が解決しようとする課題】
しかし、従来の体の拡大方法では、拡大された有限体上の演算コストを十分に低減させることができない場合がある。
従来、基底として［１，α］や［α，αｐ］が用いられてきたわけであるが、これ以外の基底を用いても、それを用いて表される拡大体の元ａは数学的に等価となるため、より演算コストを低減できる基底を選択することができれば、有限体上の演算をさらに高速化することができる。
本発明はこのような点に鑑みてなされたものであり、演算コストが小さい基底を用い、有限体上の演算をより高速化する可能性を広げる有限体上演算装置を提供することを目的とする。
【０００８】
また、この発明の他の目的は、演算コストが小さい基底を用い、有限体上の演算をより高速化する可能性を広げる機能をコンピュータに実行させるための有限体上演算プログラムを提供することである。
【０００９】
【課題を解決するための手段】
本発明では、前記課題を解決するために、要素数ｑの有限体をＧＦ（ｑ）とし、ｑ＝ｐ２とし、ｖ∈ＧＦ（ｐ）とし、αがα２＋ｖ＝０を満たすものとし、基底を〔α，α２〕とする。そして、有限体ＧＦ（ｐ）の元を用いて表される有限体ＧＦ（ｑ）の元の入力を受け、この入力された有限体ＧＦ（ｑ）の元を構成する有限体ＧＦ（ｐ）の元間の演算を行い、有限体ＧＦ（ｑ）における演算結果を算出し、その演算結果を、有限体ＧＦ（ｐ）の元を用いて出力する。
ここで、α２＋ｖ＝０を満たすαを用い、基底を〔α，α２〕とすることにより、拡大体元ａの演算コストを低減させることができる場合がある。
【００１０】
【発明の実施の形態】
以下、本発明における第１の実施の形態を、図面を参照して説明する。
以下では、まず、この形態の概略について説明した後、その詳細を説明していく。
図１は、公知のコンピュータに所定のプログラムを実行させることによって実現される本形態の有限体演算装置１の概略構成を例示した機能ブロック図である。
この形態の有限体演算装置１は自乗装置である。すなわち、元（ａ０，ａ１）∈ＧＦ（ｐ）を用いて表される拡大体元ａ∈ＧＦ（ｑ）の自乗演算ａ２を行い、その演算結果を有限体ＧＦ（ｐ）の元を用いて出力する。なお、ＧＦ（ｑ）は要素数ｑの有限体を意味し、ｑ＝ｐ２が成立し、基底を〔α，α２〕とおくものとする（α２＋ｖ＝０、ｖ∈ＧＦ（ｐ））。
【００１１】
この例の有限体演算装置１において自乗演算を行う場合、まず、拡大体元入力部１０において、元（ａ０，ａ１）∈ＧＦ（ｐ）を用いてａ＝ａ０α＋ａ１α２と表される拡大体元ａ∈ＧＦ（ｑ）の入力を受け付ける。次に、拡大体元演算部２０において、この入力された拡大体元ａを構成する元（ａ０，ａ１）間の演算を行い、自乗演算結果ａ２を算出し、この演算結果を、演算結果出力部３０において、有限体ＧＦ（ｐ）上の元（ｃ０，ｃ１）を用いて出力する。
次に、この形態の詳細について説明する。
図２の（ａ）は、この形態の有限体演算装置１のハードウェア構成を例示したブロック図である。
【００１２】
図２の（ａ）に例示するように、この形態の有限体演算装置１は、キーボード等の入力装置１ａ、液晶ディスプレイ等の出力装置１ｂ、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１ｃ、ハードディスク等の記憶装置１ｄ、及び入力装置１ａ、出力装置１ｂ、ＣＰＵ１ｃ、記憶装置１ｄ間をデータのやり取りが可能なように接続するバス１ｅを有しており、記憶装置１ｄに記憶された所定のプログラムをＣＰＵ１ｃで実行することにより、その処理機能を実現する。
図２の（ｂ）は、図１に例示した拡大体元演算部２０の詳細機能構成を例示したブロック図であり、図３は、この形態の有限体演算装置１の処理手順を説明するためのフローチャートである。以下、以上の図を用いて、この形態の有限体演算装置１の機能構成及びその処理手順について説明を行っていく。
【００１３】
まず、拡大体元入力部１０においてａ∈ＧＦ（ｑ）の入力を受け付ける。ここで、前述のように、ａ∈ＧＦ（ｑ）は、（ａ０，ａ１）∈ＧＦ（ｐ）を用いてａ＝ａ０α＋ａ１α２と表される。このａが入力された拡大体元入力部１０は、このａ∈ＧＦ（ｑ）を特定する元（ａ０，ａ１）∈ＧＦ（ｐ）を拡大体元演算部２０に入力する（ステップＳ１）。
この元（ａ０，ａ１）∈ＧＦ（ｐ）が入力された拡大体元演算部２０は、例えば、まず、乗算部２１において（ａ０ａ１）の演算を行い（ステップＳ２）、その演算結果（ａ０ａ１）を加算部２２に送る。この演算結果（ａ０ａ１）が送られた加算部２２は、この演算結果（ａ０ａ１）を用いて（ａ０ａ１）＋（ａ０ａ１）を求め、その演算結果（２ａ０ａ１）を定数倍部２３に送る（ステップＳ３）。この演算結果（２ａ０ａ１）が送られた定数倍部２３は、この演算結果（２ａ０ａ１）を‐ｖ倍し、その演算結果‐ｖ（２ａ０ａ１）をｃ０とする（ステップＳ４）。なお、この形態のｃ０は、ａ２＝ｃ０α＋ｃ１α２を満たすＧＦ（ｐ）の元を意味する。
【００１４】
次に、自乗部２４においてａ０の自乗を行い（ステップＳ５）、その演算結果（ａ０）２を加算部２７に送る。また、自乗部２５においてａ１の自乗を行い（ステップＳ６）、その演算結果（ａ１）２を定数倍部２６に送る。この演算結果（ａ１）２が送られた定数倍部２６は、この演算結果（ａ１）２を‐ｖ倍し（ステップＳ７、）その演算結果‐ｖ（ａ１）２を加算部２７に送る。そして、加算部２７において、自乗部２４による演算結果（ａ０）２と定数倍部２６による演算結果‐ｖ（ａ１）２を加算し、その演算結果（ａ０）２‐ｖ（ａ１）２をｃ１とする（ステップＳ８）。なお、この形態のｃ１は、ａ２＝ｃ０α＋ｃ１α２を満たすＧＦ（ｐ）の元を意味する。
【００１５】
以上のように演算された（ｃ０，ｃ１）∈ＧＦ（ｐ）は、演算結果出力部３０に送られ、そこで出力される（ステップＳ９）。すなわち、元（ｃ０，ｃ１）∈ＧＦ（ｐ）とし、拡大体元ａの自乗をａ２＝ｃ０α＋ｃ１α２した場合における、ｃ０として定数倍部２３による演算結果‐ｖ（２ａ０ａ１）を出力し、ｃ１として第２の加算部２７による演算結果（（ａ０）２‐ｖ（ａ１）２）を出力する。
ここで、ａ＝ａ０α＋ａ１α２であるため、ａ２＝（ａ０α＋ａ１α２）２＝ａ０２α２＋２ａ０ａ１α３＋ａ１２α４となり、α２＋ｖ＝０であるため、ａ２＝ａ０２α２＋２ａ０ａ１（‐ｖ）α＋ａ１２（‐ｖ）α２＝‐ｖ（２ａ０ａ１）α＋（（ａ０）２‐ｖ（ａ１）２）α２となる。従って、上述の元（ｃ０，ｃ１）∈ＧＦ（ｐ）を用いて表されるｃ０α＋ｃ１α２は、ａ∈ＧＦ（ｑ）の自乗ａ２と等価であり、この元（ｃ０，ｃ１）∈ＧＦ（ｐ）によって、ａ∈ＧＦ（ｑ）の自乗ａ２が特定されることになる。
【００１６】
このように、この形態では、α２＋ｖ＝０を満たすαを用い、従来ほとんど用いられることがなかった〔α，α２〕を基底として用いて体の拡大を行うこととしたため、拡大体元ａの自乗演算コストを低減できる可能性が広がった。
次に、この発明の第２の実施の形態について説明する。
この形態の有限体演算装置１は逆元装置である。すなわち、元（ａ０，ａ１）∈ＧＦ（ｐ）を用いて表される拡大体元ａ∈ＧＦ（ｑ）の逆元ａ−１を求め、その演算結果を有限体ＧＦ（ｐ）の元を用いて出力する。なお、この形態における有限体演算装置の概略構成、及びハードウェア構成は、第１の実施の形態で例示した図１及び図２の（ａ）と同様であり、この形態においても図１を適宜引用して説明を行う。
【００１７】
この例の有限体演算装置１において逆元演算を行う場合、まず、拡大体元入力部１０において、元（ａ０，ａ１）∈ＧＦ（ｐ）を用いてａ＝ａ０α＋ａ１α２と表される拡大体元ａ∈ＧＦ（ｑ）の入力を受け付ける。次に、拡大体元演算部２０において、この入力された拡大体元ａを構成する元（ａ０，ａ１）間の演算を行い、逆元演算結果ａ−１を算出し、この演算結果を、演算結果出力部３０において、有限体ＧＦ（ｐ）上の元（ｃ０，ｃ１）を用いて出力する。
次に、この形態の詳細について説明する。
図４は、この形態における拡大体元演算部２０の詳細機能構成を例示したブロック図であり、図５は、この形態の有限体演算装置１の処理手順を説明するためのフローチャートである。以下、以上の図を用いて、この形態の有限体演算装置１の機能構成及びその処理手順について説明を行っていく。
【００１８】
まず、第１の実施の形態と同様、拡大体元入力部１０においてａ∈ＧＦ（ｑ）の入力を受け付け、このａ∈ＧＦ（ｑ）を特定する元（ａ０，ａ１）∈ＧＦ（ｐ）を拡大体元演算部２０に入力する（ステップＳ２１）。
この元（ａ０，ａ１）∈ＧＦ（ｐ）が入力された拡大体元演算部２０は、例えば、まず、自乗部４１において元ａ０の自乗を行い（ステップＳ２２）、その演算結果（ａ０）２を加算部４４に送る。また、自乗部４２において元ａ１の自乗を行い（ステップＳ２３）、その演算結果（ａ１）２を定数倍部４３に送る。この演算結果（ａ１）２が送られた定数倍部４３は、この演算結果（ａ１）２をｖ倍し（ステップＳ２４）、その演算結果ｖ（ａ１）２を加算部４４に送る。
【００１９】
次に加算部４４では、自乗部４１による演算結果（ａ０）２と定数倍部４３による演算結果ｖ（ａ１）２とを加算し（ステップＳ２５）、その演算結果（（ａ０）２＋ｖ（ａ１）２）を定数倍部４５に送る。この演算結果（（ａ０）２＋ｖ（ａ１）２）が送られ定数倍部４５は、その演算結果（（ａ０）２＋ｖ（ａ１）２）をｖ倍し（ステップＳ２６）、その演算結果ｖ（（ａ０）２＋ｖ（ａ１）２）を逆元演算部４６に送る。逆元演算部４６では、送られたｖ（（ａ０）２＋ｖ（ａ１）２）の逆元を求め（ステップＳ２７）、その演算結果（ｖ（（ａ０）２＋ｖ（ａ１）２））−１を乗算部４７、４８に送る。
この演算結果が送られた乗算部４７は、この演算結果（ｖ（（ａ０）２＋ｖ（ａ１）２））−１を‐ａ０倍し、その演算結果‐ａ０（ｖ（（ａ０）２＋ｖ（ａ１）２））−１をｃ０とし（ステップＳ２８）、乗算部４８は、この演算結果（ｖ（（ａ０）２＋ｖ（ａ１）２））−１をａ１倍し、その演算結果ａ１（ｖ（（ａ０）２＋ｖ（ａ１）２））−１をｃ１とする（ステップＳ２９）。なお、この形態での（ｃ０，ｃ１）は、ａ−１＝ｃ０α＋ｃ１α２を満たすＧＦ（ｐ）の元を意味する。
【００２０】
以上のように演算された（ｃ０，ｃ１）∈ＧＦ（ｐ）は、演算結果出力部３０に送られ、そこで出力される（ステップＳ３０）。すなわち、元（ｃ０，ｃ１）∈ＧＦ（ｐ）とし、拡大体元ａの逆元をａ‐１＝ｃ０α＋ｃ１α２した場合における、ｃ０として乗算部４７による演算結果‐ａ０（ｖ（（ａ０）２＋ｖ（ａ１）２））−１を出力し、ｃ１として乗算部４８による演算結果ａ１（ｖ（（ａ０）２＋ｖ（ａ１）２））−１を出力する。
ここで、ａ∈ＧＦ（ｑ）、ｑ＝ｐ２である場合、ａをｐ２乗した結果は再びａになるという性質があり、この性質を用いるとａ−１＝（‐ａ０（ｖ（（ａ０）２＋ｖ（ａ１）２））−１）α＋（ａ１（ｖ（（ａ０）２＋ｖ（ａ１）２））−１）α２となることが求められる。従って、上述の元（ｃ０，ｃ１）∈ＧＦ（ｐ）を用いて表されるｃ０α＋ｃ１α２は、ａ∈ＧＦ（ｑ）の逆元ａ‐１と等価であり、この元（ｃ０，ｃ１）∈ＧＦ（ｐ）によって、ａ∈ＧＦ（ｑ）の逆元ａ‐１が特定されることになる。
【００２１】
このように、この形態では、α２＋ｖ＝０を満たすαを用い、従来ほとんど用いられることがなかった〔α，α２〕を基底として用いて体の拡大を行うこととしたため、拡大体元ａの逆元演算コストを低減できる可能性が広がった。
次に、この発明の第３の実施の形態について説明する。
図６は、公知のコンピュータに所定のプログラムを実行させることによって実現される本形態の有限体演算装置１００の概略構成を例示した機能ブロック図である。なお、有限体演算装置１００のハードウェア構成は、第１の実施の形態で例示した図２の（ａ）と同様であるため説明を省略する。
【００２２】
この形態の有限体演算装置１は乗算装置である。すなわち、元（ａ０，ａ１）∈ＧＦ（ｐ）を用いて表される拡大体元ａ∈ＧＦ（ｑ）と、元（ｂ０，ｂ１）∈ＧＦ（ｐ）を用いて表される拡大体元ｂ∈ＧＦ（ｑ）との乗算を行い、その演算結果を有限体ＧＦ（ｐ）の元を用いて出力する。
この例の有限体演算装置１において逆元演算を行う場合、まず、拡大体元入力部１１０において、元（ａ０，ａ１）∈ＧＦ（ｐ）を用いてａ＝ａ０α＋ａ１α２と表される第１の拡大体元ａ∈ＧＦ（ｑ）、及び元（ｂ０，ｂ１）∈ＧＦ（ｐ）を用いてｂ＝ｂ０α＋ｂ１α２と表される第２の拡大体元ｂ∈ＧＦ（ｑ）の入力を受け付ける。次に、拡大体元演算部２０において、この入力された拡大体元ａ，ｂを構成する元（ａ０，ａ１，ｂ０，ｂ１）間の演算を行い、乗算演算結果ａｂを算出し、この演算結果を、演算結果出力部１４０において、有限体ＧＦ（ｐ）上の元（ｃ０，ｃ１）を用いて出力する。
【００２３】
次に、この形態の詳細について説明する。
図７は、この形態における拡大体元演算部１２０の詳細機能構成を例示したブロック図であり、図８は、この形態の有限体演算装置１００の処理手順を説明するためのフローチャートである。以下、以上の図を用いて、この形態の有限体演算装置１００の機能構成及びその処理手順について説明を行っていく。
まず、拡大体元入力部１１０においてａ，ｂ∈ＧＦ（ｑ）の入力を受け付ける。ここで、前述のように、ａ，ｂ∈ＧＦ（ｑ）は、（ａ０，ａ１），（ｂ０，ｂ１）∈ＧＦ（ｐ）を用いてａ＝ａ０α＋ａ１α２，ｂ＝ｂ０α＋ｂ１α２と表される。このａ，ｂが入力された拡大体元入力部１１０は、このａ，ｂ∈ＧＦ（ｑ）を特定する元（ａ０，ａ１），（ｂ０，ｂ１）∈ＧＦ（ｐ）を拡大体元演算部１２０に入力する（ステップＳ４１）。
【００２４】
この元（ａ０，ａ１）∈ＧＦ（ｐ）が入力された拡大体元演算部１２０は、例えば、まず、乗算部１２１において、元ａ０と元ｂ０との乗算を行い（ステップＳ４２）、その演算結果（ａ０ｂ０）を減算部１２６及び加算部１３０に送る。次に、乗算部１２２において、元ａ１と元ｂ１との乗算を行い（ステップＳ４３）、その演算結果（ａ１ｂ１）を減算部１２７及び定数倍部１２９に送る。また、加算部１２３において、元ａ０と元ａ１との加算を行い（ステップＳ４４）、その演算結果（ａ０＋ａ１）を乗算部１２５に送る。さらに、加算部１２４において、元ｂ０と元ｂ１との加算を行い（ステップＳ４５）、その演算結果（ｂ０＋ｂ１）を乗算部１２５に送る。
【００２５】
これらの演算結果が送られた乗算部１２５は、加算部１２３による演算結果（ａ０＋ａ１）と、加算部１２４による演算結果（ｂ０＋ｂ１）との乗算を行い（ステップＳ４６）、その演算結果（ａ０＋ａ１）（ｂ０＋ｂ１）を減算部１２６に送る。この演算結果（ａ０＋ａ１）（ｂ０＋ｂ１）が送られた演算部１２６は、乗算部１２５による演算結果（ａ０＋ａ１）（ｂ０＋ｂ１）から、乗算部１２１による演算結果（ａ０ｂ０）を減算し（ステップＳ４７）、その演算結果（（ａ０＋ａ１）（ｂ０＋ｂ１）‐（ａ０ｂ０））を減算部１２７に送る。この演算結果（（ａ０＋ａ１）（ｂ０＋ｂ１）‐（ａ０ｂ０））が送られた減算分１２７は、この演算結果（（ａ０＋ａ１）（ｂ０＋ｂ１）‐（ａ０ｂ０））から乗算部１２２による演算結果（ａ１ｂ１）を減算し（ステップＳ４８）、その演算結果（（ａ０＋ａ１）（ｂ０＋ｂ１）‐（ａ０ｂ０）‐（ａ１ｂ１））を定数倍部１２８に送る。この演算結果が送られた定数倍部１２８は、この演算結果（（ａ０＋ａ１）（ｂ０＋ｂ１）‐（ａ０ｂ０）‐（ａ１ｂ１））を‐ｖ倍し、その演算結果‐ｖ（（ａ０＋ａ１）（ｂ０＋ｂ１）‐（ａ０ｂ０）‐（ａ１ｂ１））をｃ０とする（ステップＳ４９）。なお、この形態でのｃ０は、ａｂ＝ｃ０α＋ｃ１α２を満たすＧＦ（ｐ）の元を意味する。
【００２６】
次に、定数倍部１２９において、乗算部１２２による演算結果（ａ１ｂ１）を‐ｖ倍し（ステップＳ５１）、その演算結果‐ｖ（ａ１ｂ１）を加算部１３０に送る。この演算結果‐ｖ（ａ１ｂ１）を受け取った加算部１３０は、乗算部１２１による演算結果（ａ０ｂ０）に、定数倍部１２９による演算結果‐ｖ（ａ１ｂ１）を加算し、その演算結果をｃ１とする（ステップＳ５１）。なお、この形態でのｃ１は、ａｂ＝ｃ０α＋ｃ１α２を満たすＧＦ（ｐ）の元を意味する。
以上のように演算された（ｃ０，ｃ１）∈ＧＦ（ｐ）は、演算結果出力部１４０に送られ、そこで出力される（ステップＳ５２）。すなわち、元（ｃ０，ｃ１）∈ＧＦ（ｐ）とし、第１の拡大体元ａと第２の拡大体元ｂとの乗算結果をａｂ＝ｃ０α＋ｃ１α２した場合における、ｃ０として定数倍部１２８による演算結果‐ｖ（（ａ０＋ａ１）（ｂ０＋ｂ１）‐（ａ０ｂ０）‐（ａ１ｂ１））を出力し、ｃ１として加算部１３０による演算結果（（ａ０ｂ０）‐ｖ（ａ１ｂ１））を出力する。
【００２７】
ここで、ａ＝ａ０α＋ａ１α２であり、ｂ＝ｂ０α＋ｂ１α２であるため、ａｂ＝（ａ０α＋ａ１α２）（ｂ０α＋ｂ１α２）＝ａ０ｂ０α２＋ａ０ｂ１α３＋ａ１ｂ０α３＋ａ１ｂ１α４となり、α２＋ｖ＝０であるため、ａｂ＝ａ０ｂ０α２＋（ａ０ｂ１＋ａ１ｂ０）（‐ｖ）α＋ａ１ｂ１（‐ｖ）α２＝‐ｖ（（ａ０＋ａ１）（ｂ０＋ｂ１）‐（ａ０ｂ０）‐（ａ１ｂ１））α＋（（ａ０ｂ０）‐ｖ（ａ１ｂ１））α２となる。従って、上述の元（ｃ０，ｃ１）∈ＧＦ（ｐ）を用いて表されるｃ０α＋ｃ１α２は、ａ，ｂ∈ＧＦ（ｑ）の乗算結果ａｂと等価であり、この元（ｃ０，ｃ１）∈ＧＦ（ｐ）によって、ａ，ｂ∈ＧＦ（ｑ）の乗算結果ａｂが特定されることになる。
このように、この形態では、α２＋ｖ＝０を満たすαを用い、従来ほとんど用いられることがなかった〔α，α２〕を基底として用いて体の拡大を行うこととしたため、拡大体元ａの乗算演算コストを低減できる可能性が広がった。
【００２８】
なお、この発明は上述の実施の形態に限定されるものではない。例えば、上述した、拡大体元演算部２０、１２０における有限体ＧＦ（ｑ）上の演算を構成する有限体ＧＦ（ｐ）上の演算を、この拡大体元演算部２０、１２０による演算を再帰的に適用して行う構成としてもよい。すなわち、自乗部２４、２５等で行われる自乗演算を上述の第２の実施の形態における方法によって、逆元演算部４６によって行われる逆元演算を上述の第２の実施の形態における方法によって、乗算部２１等の乗算を上述の第３の実施の形態における方法によって、それぞれ行い、さらにそれらの演算の中でさらに上述の実施の形態の方法を適用し、といった演算を繰り返す構成としてもよい。これにより、例えば、ｑ＝ｐ２＝ｒ４とできる場合に、ＧＦ（ｑ）上の演算をＧＦ（ｐ）上の演算を用いて構成し、ＧＦ（ｐ）上の演算をＧＦ（ｒ）上の演算を用いて構成することができ、演算処理をより高速化することが可能となる。
【００２９】
また、上述の実施の形態では、有限体上演算装置の処理機能を、コンピュータに所定のプログラムを実行させることにより実現する構成としたが、これらの処理機能の少なくとも一部を電子回路によってハードウェア的に実現することとしてもよい。
また、上述の実施の形態で述べたように、上記の処理機能は、コンピュータによって実現することができる。この場合、有限体上演算装置が有すべき機能の処理内容はプログラムによって記述され、このプログラムをコンピュータで実行することにより、上記処理機能をコンピュータ上で実現することができる。
【００３０】
また、この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよいが、具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、ＤＶＤ−ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−Ｒ（Ｒｅｃｏｒｄａｂｌｅ）／ＲＷ（ＲｅＷｒｉｔａｂｌｅ）等を、光磁気記録媒体として、ＭＯ（Ｍａｇｎｅｔｏ−Ｏｐｔｉｃａｌ  ｄｉｓｃ）等を、半導体メモリとしてＥＥＰ−ＲＯＭ（Ｅｌｅｃｔｒｏｎｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）等を用いることができる。
【００３１】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｅｒｖｉｃｅ  Ｐｒｏｖｉｄｅｒ）型のサービスによって、上述の処理を実行する構成としてもよい。
【００３２】
なお、上記におけるプログラムとは、電子計算機に対する指令であって、一の結果を得ることができるように組合されたものをいい、その他電子計算機による処理の用に供する情報であってプログラムに準ずるものをも含むものとする。
【００３３】
【発明の効果】
以上説明したように、この発明では、要素数ｑの有限体をＧＦ（ｑ）とし、ｑ＝ｐ２とし、ｖ∈ＧＦ（ｐ）とし、αがα２＋ｖ＝０を満たすものとし、基底を〔α，α２〕とした。そして、拡大体元入力手段において、有限体ＧＦ（ｐ）の元を用いて表される有限体ＧＦ（ｑ）の元の入力を受け、拡大体元演算手段において、この入力された有限体ＧＦ（ｑ）の元を構成する有限体ＧＦ（ｐ）の元間の演算を行い、有限体ＧＦ（ｑ）における演算結果を算出し、演算結果出力手段において、その演算結果を、有限体ＧＦ（ｐ）の元を用いて出力することとした。このように、α２＋ｖ＝０を満たすαを用い、従来ほとんど用いられることがなかった〔α，α２〕を基底として用いて体の拡大を行うこととしたため、拡大体元ａの演算コストを低減できる可能性が広がった。
【図面の簡単な説明】
【図１】有限体演算装置の概略構成を例示した機能ブロック図。
【図２】（ａ）は、この形態の有限体演算装置１のハードウェア構成を例示したブロック図であり、（ｂ）は、図１に例示した拡大体元演算部の詳細機能構成を例示したブロック図である。
【図３】有限体演算装置の処理手順を説明するためのフローチャート。
【図４】拡大体元演算部の詳細機能構成を例示したブロック図。
【図５】有限体演算装置の処理手順を説明するためのフローチャート。
【図６】有限体演算装置の概略構成を例示した機能ブロック図。
【図７】拡大体元演算部の詳細機能構成を例示したブロック図。
【図８】有限体演算装置の処理手順を説明するためのフローチャート。
【符号の説明】
１、１００  有限体演算装置
１０、１１０  拡大体元入力部
２０、１２０  拡大体元演算部
３０、１４０  演算結果出力部
【図１】
2004279784.tif 000003
【図２】
2004279784.tif 000004
【図３】
2004279784.tif 000005
【図４】
2004279784.tif 000006
【図５】
2004279784.tif 000007
【図６】
2004279784.tif 000008
【図７】
2004279784.tif 000009
【図８】
2004279784.tif 000010