(57)【要約】  【課題】  楕円曲線演算技術を利用する場合に、故障利用攻撃に対抗することができる楕円べき倍演算装置を提供する。  【解決手段】  演算結果検証部１２７は、楕円べき倍演算部１２４から演算結果としてべき倍点＝（Ｘ、Ｙ）を受け取る。次に、Ｘ3＋ａ×Ｘ＋ｂを計算し、Ｙ2 を計算し、Ｙ2 ＝Ｘ3＋ａ×Ｘ＋ｂであると判断する場合には、受け取ったべき倍点を出力する。Ｙ2 ＝Ｘ3＋ａ×Ｘ＋ｂでないと判断する場合には、べき倍点を出力しない。【選択図】  図３
2004252433.tif 000002
【特許請求の範囲】
【請求項１】
素数ｐを法とする剰余体Ｆ上で定義された楕円曲線Ｅ：ｙ2 ＝ｘ3 ＋ａ×ｘ＋ｂにおいて楕円べき倍演算を行う楕円べき倍演算装置であって、
楕円曲線Ｅ上の点Ｑ及び素数ｐ未満の正整数であるべき倍係数ｋを取得する情報取得手段と、
楕円曲線Ｅの一次項の係数ａを記憶している第１記憶手段と、
前記第１記憶手段に記憶されている前記係数ａを用いて、前記べき倍係数ｋ及び前記点Ｑに楕円べき倍演算を施して、べき倍点ｋ＊Ｑを算出するべき倍演算手段と、
算出された前記べき倍点ｋ＊Ｑが楕円曲線Ｅ上に存在するか否かを判定する判定手段と、
前記判定手段により前記べき倍点ｋ＊Ｑが楕円曲線Ｅ上に存在すると判定された場合に、算出された前記べき倍点ｋ＊Ｑを出力する出力手段と
を備えることを特徴とする楕円べき倍演算装置。
【請求項２】
前記楕円べき倍演算装置は、さらに、
楕円曲線Ｅの零次項の係数ｂを記憶している第２記憶手段を含み、
前記判定手段は、前記第１記憶手段に記憶されている前記係数ａ及び前記第２記憶手段に記憶されている前記係数ｂを用いて、算出された前記べき倍点ｋ＊Ｑが楕円曲線Ｅ上に存在するか否かを判定する
ことを特徴とする請求項１に記載の楕円べき倍演算装置。
【請求項３】
前記楕円べき倍演算装置は、さらに、
楕円曲線Ｅの零次項の係数ｂを取得し、取得した係数ｂを前記第２記憶手段に書き込む零次係数取得手段を含む
ことを特徴とする請求項２に記載の楕円べき倍演算装置。
【請求項４】
前記楕円べき倍演算装置は、さらに、
楕円曲線Ｅの一次項の係数ａを取得し、取得した係数ａを前記第１記憶手段に書き込む一次係数取得手段を含む
ことを特徴とする請求項２に記載の楕円べき倍演算装置。
【請求項５】
前記楕円べき倍演算装置は、さらに、
前記第１記憶手段に記憶されている前記係数ａ、取得された点Ｑ及び楕円曲線Ｅ：ｙ2 ＝ｘ3 ＋ａ×ｘ＋ｂを用いて、前記係数ｂを算出し、算出した前記係数ｂを前記第２記憶手段に書き込む零次係数演算手段
を含むことを特徴とする請求項２に記載の楕円べき倍演算装置。
【請求項６】
前記べき倍演算手段は、前記べき倍点ｋ＊Ｑとして、座標値（Ｑｘ、Ｑｙ）を算出し、
前記判定手段は、（Ｑｙ）2 を算出し、（Ｑｘ）3 ＋ａ×Ｑｘ＋ｂを算出し、算出した（Ｑｙ）2 と算出した（Ｑｘ）3 ＋ａ×Ｑｘ＋ｂとを比較し、一致する場合に、前記べき倍点ｋ＊Ｑが楕円曲線Ｅ上に存在すると判定する
ことを特徴とする請求項５に記載の楕円べき倍演算装置。
【請求項７】
前記楕円べき倍演算装置は、さらに、
前記判定手段により前記べき倍点ｋ＊Ｑが楕円曲線Ｅ上に存在すると判定されない場合に、エラーを示す旨のメッセージを出力するエラー出力手段
を含むことを特徴とする請求項５に記載の楕円べき倍演算装置。
【請求項８】
前記判定手段は、前記べき倍点ｋ＊Ｑが楕円曲線Ｅ上に存在するか否かの判定に代えて、点Ｑとべき倍点ｋ＊Ｑとが同一の楕円曲線上に存在するか否を判定し、
前記出力手段は、前記べき倍点ｋ＊Ｑが楕円曲線Ｅ上に存在すると判定された場合に代えて、点Ｑとべき倍点ｋ＊Ｑとが同一の楕円曲線上に存在すると判定された場合に、前記べき倍点ｋ＊Ｑを出力する
ことを特徴とする請求項１に記載の楕円べき倍演算装置。
【請求項９】
前記情報取得手段は、点Ｑとして座標値（Ｑx 、Ｑy ）を取得し、
前記べき倍演算手段は、前記べき倍点ｋ＊Ｑとして座標値（Ｑx'、Ｑy'）を算出し、
前記判定手段は、
（Ｑy2−Ｑx3−ａ×Ｑx）−（Ｑy'2−Ｑx'3−ａ×Ｑx'）＝０が成立するか否かを判断することにより、点Ｑとべき倍点ｋ＊Ｑとが同一の楕円曲線上に存在するか否を判定する
ことを特徴とする請求項８に記載の楕円べき倍演算装置。
【請求項１０】
素数ｐを法とする剰余体Ｆ上で定義された楕円曲線Ｅ：ｙ2 ＝ｘ3 ＋ａ×ｘ＋ｂ上の離散対数問題を解くことが計算量の上で困難であることを根拠として、楕円べき演算ｋ＊Ｑを演算することにより所定の情報を安全かつ確実に扱う情報セキュリティ装置であって、
楕円曲線Ｅ上の点Ｑ及び素数ｐ未満の正整数であるべき倍係数ｋを取得する情報取得手段と、
楕円曲線Ｅの一次項の係数ａを記憶している第１記憶手段と、
前記第１記憶手段に記憶されている前記係数ａを用いて、前記べき倍係数ｋ及び前記点Ｑに楕円べき倍演算を施して、べき倍点ｋ＊Ｑを算出するべき倍演算手段と、
算出された前記べき倍点ｋ＊Ｑが楕円曲線Ｅ上に存在するか否かを判定する判定手段と、
前記判定手段により前記べき倍点ｋ＊Ｑが楕円曲線Ｅ上に存在しないと判定された場合に、算出された前記べき倍点ｋ＊Ｑの出力を抑制する抑制手段と
を備えることを特徴とする情報セキュリティ装置。
【請求項１１】
前記情報セキュリティ装置は、楕円べき演算ｋ＊Ｑを演算することにより、平文の暗号化処理、暗号文の復号化処理、平文に対する署名文の生成処理、平文と署名文に対する署名文の検証処理又は第三者に知られることなく二者間で秘密鍵を共有する鍵共有処理を行う
ことを特徴とする請求項１０に記載の情報セキュリティ装置。
【請求項１２】
素数ｐを法とする剰余体Ｆ上で定義された楕円曲線Ｅ：ｙ2 ＝ｘ3 ＋ａ×ｘ＋ｂにおいて楕円べき倍演算を行い、情報取得手段、楕円曲線Ｅの一次項の係数ａを記憶している第１記憶手段、べき倍演算手段、判定手段及び出力手段を備える楕円べき倍演算装置で用いられる楕円べき倍演算方法であって、
前記情報取得手段により、楕円曲線Ｅ上の点Ｑ及び素数ｐ未満の正整数であるべき倍係数ｋを取得する情報取得ステップと、
前記べき倍演算手段により、前記第１記憶手段に記憶されている前記係数ａを用いて、前記べき倍係数ｋ及び前記点Ｑに楕円べき倍演算を施して、べき倍点ｋ＊Ｑを算出するべき倍演算ステップと、
算出された前記べき倍点ｋ＊Ｑが楕円曲線Ｅ上に存在するか否かを判定する判定ステップと、
前記出力手段により、前記判定ステップにおいて前記べき倍点ｋ＊Ｑが楕円曲線Ｅ上に存在すると判定された場合に、算出された前記べき倍点ｋ＊Ｑを出力する出力ステップと
を含むことを特徴とする楕円べき倍演算方法。
【請求項１３】
素数ｐを法とする剰余体Ｆ上で定義された楕円曲線Ｅ：ｙ2 ＝ｘ3 ＋ａ×ｘ＋ｂにおいて楕円べき倍演算を行い、情報取得手段、楕円曲線Ｅの一次項の係数ａを記憶している第１記憶手段、べき倍演算手段、判定手段及び出力手段を備える楕円べき倍演算装置で用いられる楕円べき倍演算用のコンピュータプログラムであって、
前記情報取得手段により、楕円曲線Ｅ上の点Ｑ及び素数ｐ未満の正整数であるべき倍係数ｋを取得する情報取得ステップと、
前記べき倍演算手段により、前記第１記憶手段に記憶されている前記係数ａを用いて、前記べき倍係数ｋ及び前記点Ｑに楕円べき倍演算を施して、べき倍点ｋ＊Ｑを算出するべき倍演算ステップと、
前記判定手段により、算出された前記べき倍点ｋ＊Ｑが楕円曲線Ｅ上に存在するか否かを判定する判定ステップと、
前記出力手段により、前記判定ステップにおいて前記べき倍点ｋ＊Ｑが楕円曲線Ｅ上に存在すると判定された場合に、算出された前記べき倍点ｋ＊Ｑを出力する出力ステップと
を含むことを特徴とする楕円べき倍演算用のコンピュータプログラム。
【請求項１４】
前記コンピュータプログラムは、
コンピュータ読み取り可能な記録媒体に記録されている
ことを特徴とする請求項１３に記載の楕円べき倍演算用のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、楕円曲線を用いる演算処理技術に関し、特に、故障利用攻撃に対抗できる技術に関する。
【背景技術】
【０００２】
従来より情報の秘匿、認証等を実現する手段として公開鍵暗号方式が知られている。
公開鍵暗号方式では、自分のみが保持する秘密鍵と、前記秘密鍵に対応し公開される公開鍵とのペアが生成され、前記公開鍵を用いて暗号化が行われ、前記秘密鍵を用いて復号が行われる。
公開鍵暗号方式では、処理演算量が多いという欠点はあるものの、秘密鍵を複数の利用者により共有する必要がないので、高セキュリティを必要とする場合によく用いられる。一般に良く知られている公開鍵暗号方式として、ＲＳＡ暗号と楕円曲線暗号が存在する。
【０００３】
公開鍵暗号方式の安全性の根拠として離散対数問題が用いられる。離散対数問題には、代表的なものとして、有限体上定義されるもの及び楕円曲線上定義されるものがある。ここで、楕円曲線上定義される離散対数問題とは、Ｅ（ＧＦ（ｐ））を有限体ＧＦ（ｐ）上で定義された楕円曲線とし、楕円曲線Ｅの位数が大きな素数で割り切れる場合に、楕円曲線Ｅに含まれる元Ｇをベースポイントとする。このとき、楕円曲線Ｅに含まれる与えられた元Ｙに対して、
Ｙ＝ｘ＊Ｇ
となる整数ｘが存在するならば、ｘを求めよ、という問題である。
【０００４】
ここで、ｐは素数、ＧＦ（ｐ）はｐ個の元を持つ有限体である。また、この明細書において、記号「＊」は、楕円曲線上の点、つまり元を複数回加算する演算を示し、この演算は、楕円べき倍演算と呼ばれる。
離散対数問題を公開鍵暗号の安全性の根拠とするのは、多くの元を有する有限体ＧＦ（ｐ）に対して、上記問題を解くことは極めて難しいからである。
【０００５】
また、公開鍵暗号方式では、秘密鍵をＩＣカードなど外部に漏れない手段を用いて保持するのが一般的である。
以上のような技術を用いることにより、第三者に知られないように、秘密情報を相手に送信することができるものの、特許文献２によると、ＩＣカードなどから外部に出力される様々な情報を解析することにより、不正に秘密情報を得る方法が知られるようになってきている。その一つに故障利用攻撃（ＤＦＡ攻撃ともいう）が存在する。
【０００６】
故障利用攻撃では、ＩＣカードなどが復号処理を行っている間に、過電流などを用いてＩＣカードに故意に故障を誘発し、故障を起こす時点までに演算された値を出力させる。こうして得られた出力値を多数集め、得られた多数の出力値を解析することにより、秘密情報を知る。
このような故障利用攻撃に対抗するために、特許文献１によると、コプロセッサを搭載し、ＲＳＡ公開鍵暗号方式のデジタル署名の作成を行う冪乗剰余計算を公開鍵ｎの素因数を用いて中国人剰余定理により高速で処理するようにした故障利用攻撃対応ＩＣカードが開示されている。このＩＣカードは、中国人剰余定理による計算過程において生成されるデータとともに、該データについてのエラー検出符号を同時に計算して記憶しておき、デジタル署名の作成時に、前記データのエラー検出符号を再度計算し、記憶しておいたエラー検出符号と照合する。
【特許文献１】特開平１１−８６１６号公報
【特許文献２】特開２００２−２６１７５１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１により開示された技術は、ＲＳＡ公開鍵暗号方式を利用する装置において適用できるものの、楕円曲線暗号を利用する装置には適用できないという問題点がある。
本発明は、上記の問題点を解決するために、楕円曲線演算技術を利用する場合に、故障利用攻撃に対抗することができる楕円べき倍演算装置、楕円べき倍演算方法、楕円べき倍演算用のコンピュータプログラム、及び情報セキュリティ装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明は、素数ｐを法とする剰余体Ｆ上で定義された楕円曲線Ｅ：ｙ2 ＝ｘ3 ＋ａ×ｘ＋ｂにおいて楕円べき倍演算を行う楕円べき倍演算装置であって、楕円曲線Ｅ上の点Ｑ及び素数ｐ未満の正整数であるべき倍係数ｋを取得する情報取得手段と、楕円曲線Ｅの一次項の係数ａを記憶している第１記憶手段と、前記第１記憶手段に記憶されている前記係数ａを用いて、前記べき倍係数ｋ及び前記点Ｑに楕円べき倍演算を施して、べき倍点ｋ＊Ｑを算出するべき倍演算手段と、算出された前記べき倍点ｋ＊Ｑが楕円曲線Ｅ上に存在するか否かを判定する判定手段と、前記判定手段により前記べき倍点ｋ＊Ｑが楕円曲線Ｅ上に存在すると判定された場合に、算出された前記べき倍点ｋ＊Ｑを出力する出力手段とを備える。
【発明の効果】
【０００９】
この構成によると、判定手段により前記べき倍点ｋ＊Ｑが楕円曲線Ｅ上に存在すると判定された場合に、算出された前記べき倍点ｋ＊Ｑを出力するので、故障利用攻撃を受けたときに、演算途中の結果を出力することはない。
ここで、前記楕円べき倍演算装置は、さらに、楕円曲線Ｅの零次項の係数ｂを記憶している第２記憶手段を含み、前記判定手段は、前記第１記憶手段に記憶されている前記係数ａ及び前記第２記憶手段に記憶されている前記係数ｂを用いて、算出された前記べき倍点ｋ＊Ｑが楕円曲線Ｅ上に存在するか否かを判定する。
【００１０】
この構成によると、前記第１記憶手段に記憶されている前記係数ａ及び前記第２記憶手段に記憶されている前記係数ｂを用いるので、前記べき倍点ｋ＊Ｑが楕円曲線Ｅ上に存在するか否かの判定が確実に行える。
ここで、前記楕円べき倍演算装置は、さらに、楕円曲線Ｅの零次項の係数ｂを取得し、取得した係数ｂを前記第２記憶手段に書き込む零次係数取得手段を含む。
【００１１】
この構成によると、楕円曲線Ｅの零次項の係数ｂを取得して前記第２記憶手段に書き込むので、零次項の係数ｂを変化させることにより、楕円曲線を固定することなく、異なる楕円曲線を設定でき、楕円曲線暗号の汎用性が阻害されることなく、多様な楕円曲線を用いることができる。
ここで、前記楕円べき倍演算装置は、さらに、楕円曲線Ｅの一次項の係数ａを取得し、取得した係数ａを前記第１記憶手段に書き込む一次係数取得手段を含む。
【００１２】
この構成によると、楕円曲線Ｅの一次項の係数ａを取得して前記第１記憶手段に書き込むので、一次項の係数ａを変化させることにより、上記と同様に、楕円曲線を固定することなく、多様な楕円曲線を用いることができる。
ここで、前記楕円べき倍演算装置は、さらに、前記第１記憶手段に記憶されている前記係数ａ、取得された点Ｑ及び楕円曲線Ｅ：ｙ2 ＝ｘ3 ＋ａ×ｘ＋ｂを用いて、前記係数ｂを算出し、算出した前記係数ｂを前記第２記憶手段に書き込む零次係数演算手段を含む。
【００１３】
この構成によると、前記係数ｂを予め記憶していない場合であっても、係数ａ、点Ｑ及び楕円曲線Ｅ：ｙ2 ＝ｘ3 ＋ａ×ｘ＋ｂから前記係数ｂを算出し、算出した前記係数ｂを前記判定において用いるので、楕円べき倍演算の前に、係数ｂが悪意のある第三者により不正に盗まれることはない。
ここで、前記べき倍演算手段は、前記べき倍点ｋ＊Ｑとして、座標値（Ｑｘ、Ｑｙ）を算出し、前記判定手段は、（Ｑｙ）2 を算出し、（Ｑｘ）3 ＋ａ×Ｑｘ＋ｂを算出し、算出した（Ｑｙ）2 と算出した（Ｑｘ）3 ＋ａ×Ｑｘ＋ｂとを比較し、一致する場合に、前記べき倍点ｋ＊Ｑが楕円曲線Ｅ上に存在すると判定する。
【００１４】
この構成によると、（Ｑｙ）2 と（Ｑｘ）3 ＋ａ×Ｑｘ＋ｂとを比較することにより、確実に、前記判定を行える。
ここで、前記楕円べき倍演算装置は、さらに、前記判定手段により前記べき倍点ｋ＊Ｑが楕円曲線Ｅ上に存在すると判定されない場合に、エラーを示す旨のメッセージを出力するエラー出力手段を含む。
【００１５】
この構成によると、エラーを示す旨のメッセージを出力するので、外部からエラーの発生を知ることができる。
ここで、前記判定手段は、前記べき倍点ｋ＊Ｑが楕円曲線Ｅ上に存在するか否かの判定に代えて、点Ｑとべき倍点ｋ＊Ｑとが同一の楕円曲線上に存在するか否を判定し、前記出力手段は、前記べき倍点ｋ＊Ｑが楕円曲線Ｅ上に存在すると判定された場合に代えて、点Ｑとべき倍点ｋ＊Ｑとが同一の楕円曲線上に存在すると判定された場合に、前記べき倍点ｋ＊Ｑを出力する。
【００１６】
この構成によると、点Ｑとべき倍点ｋ＊Ｑとが同一の楕円曲線上に存在するか否を判定し、点Ｑとべき倍点ｋ＊Ｑとが同一の楕円曲線上に存在すると判定された場合に、前記べき倍点ｋ＊Ｑを出力するので、故障利用攻撃を受けたときに、演算途中の結果を出力することはない。
ここで、前記情報取得手段は、点Ｑとして座標値（Ｑx 、Ｑy ）を取得し、前記べき倍演算手段は、前記べき倍点ｋ＊Ｑとして座標値（Ｑx'、Ｑy'）を算出し、前記判定手段は、（Ｑy2−Ｑx3−ａ×Ｑx）−（Ｑy'2−Ｑx'3−ａ×Ｑx'）＝０が成立するか否かを判断することにより、点Ｑとべき倍点ｋ＊Ｑとが同一の楕円曲線上に存在するか否を判定する。
【００１７】
この構成によると、（Ｑy2−Ｑx3−ａ×Ｑx）−（Ｑy'2−Ｑx'3−ａ×Ｑx'）＝０が成立するか否かを判断することにより、点Ｑとべき倍点ｋ＊Ｑとが同一の楕円曲線上に存在するか否かの判定が確実に行える。
また、本発明は、素数ｐを法とする剰余体Ｆ上で定義された楕円曲線Ｅ：ｙ2 ＝ｘ3 ＋ａ×ｘ＋ｂ上の離散対数問題を解くことが計算量の上で困難であることを根拠として、楕円べき演算ｋ＊Ｑを演算することにより所定の情報を安全かつ確実に扱う情報セキュリティ装置であって、楕円曲線Ｅ上の点Ｑ及び素数ｐ未満の正整数であるべき倍係数ｋを取得する情報取得手段と、楕円曲線Ｅの一次項の係数ａを記憶している第１記憶手段と、前記第１記憶手段に記憶されている前記係数ａを用いて、前記べき倍係数ｋ及び前記点Ｑに楕円べき倍演算を施して、べき倍点ｋ＊Ｑを算出するべき倍演算手段と、算出された前記べき倍点ｋ＊Ｑが楕円曲線Ｅ上に存在するか否かを判定する判定手段と、前記判定手段により前記べき倍点ｋ＊Ｑが楕円曲線Ｅ上に存在しないと判定された場合に、算出された前記べき倍点ｋ＊Ｑの出力を抑制する抑制手段とを備える。
【００１８】
この構成によると、前記情報セキュリティ装置において、判定手段により前記べき倍点ｋ＊Ｑが楕円曲線Ｅ上に存在すると判定された場合に、算出された前記べき倍点ｋ＊Ｑを出力するので、故障利用攻撃を受けたときに、演算途中の結果を出力することはない。
【発明を実施するための最良の形態】
【００１９】
１．実施の形態１
本発明に係る１の実施の形態としてのポイント発行システム１０について説明する。
１．１  ポイント発行システム１０の構成
ポイント発行システム１０は、図１に示すように、ＩＣカード１００及びポイント発行装置２００から構成されている。
【００２０】
ポイント発行装置２００の操作者によりＩＣカード１００がポイント発行装置２００に装着され、ポイント発行装置２００は、ポイントを生成し、生成したポイントに暗号化を施して暗号化ポイントを生成し、生成した暗号化ポイントをＩＣカード１００へ送信する。ここで、ポイントは、利用者が商品を購入したりサービスの提供を受けた場合に、販売者やサービス提供者から受け取る特典情報であり、次に利用者が商品を購入したりサービスの提供を受ける際に、販売者やサービス提供者への対価の支払いの一部又は全部として利用される。
【００２１】
ＩＣカード１００は、暗号化ポイントを受け取り、受け取った暗号化ポイントに前記暗号化に対応する復号を施して、再生ポイントを生成し、生成した再生ポイントを内部に記憶する。
１．２  ポイント発行装置２００の構成
ポイント発行装置２００は、図１に示すように、公開鍵記憶部２０１、暗号処理部２０２、通信部２０３、制御部２０４、情報記憶部２０５、入力部２０６及び表示部２０７から構成されている。
【００２２】
ポイント発行装置２００は、ポイントを生成し、生成したポイントを暗号化してＩＣカード１００に書き込む装置であるとともに、商品の販売の際に、販売額を計算し、計算した販売額を表示し、レシートを印刷し、生成した前記ポイントを内部に記憶し、利用者から支払われる代金の保管などを行う金銭レジスタ装置でもある。
ポイント発行装置２００は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレィユニット、キーボードなどから構成されるコンピュータシステムである。前記ＲＡＭ又は前記ハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、ポイント発行装置２００は、その機能を達成する。
【００２３】
（１）情報記憶部２０５及び公開鍵記憶部２０１
情報記憶部２０５は、素数ｐを法とする剰余体Ｆｐ上で定義された楕円曲線Ｅ（Ｆｐ）上のベースポイントＢ、素数及び楕円曲線Ｅ（Ｆｐ）を記憶している。また、生成されたポイントＰｍを記憶するための領域を備えている。
公開鍵記憶部２０１は、後述する秘密鍵ｋｓに対応して生成された公開鍵ｋｐを記憶している。ここで、公開鍵ｋｐは、ＩＣカード１００又は鍵管理装置により、以下に示す式により算出されたものである。
【００２４】
公開鍵ｋｐ＝秘密鍵ｋｓ＊ベースポイントＢ
（２）制御部２０４
制御部２０４は、前記特典情報としてのポイントＰｍを生成し、生成したポイントＰｍを情報記憶部２０５に書き込む。次に、暗号処理部２０２に対して、ポイントＰｍを暗号化してＩＣカード１００へ送信することを示す指示を出力する。
【００２５】
（３）暗号処理部２０２
暗号処理部２０２は、図２に示すように、暗号制御部２１１と楕円演算部２１２とから構成され、楕円演算部２１２は、べき倍係数入力部２２１、被演算値入力部２２２、一次項保持部２２３、楕円べき倍演算部２２４及び演算結果出力部２２５から構成されている。
【００２６】
（暗号制御部２１１）
暗号制御部２１１は、制御部２０４から、ポイントＰｍを暗号化してＩＣカード１００へ送信することを示す指示を受け取る。
前記指示を受け取ると、暗号制御部２１１は、乱数ｒを生成し、ベースポイントＢを情報記憶部２０５から読み出し、次に、生成した乱数ｒをべき倍係数として、べき倍係数入力部２２１へ出力し、読み出したベースポイントＢを被べき倍点として、被演算値入力部２２２へ出力する。次に、演算結果出力部２２５から、演算結果としてべき倍点ｒ＊Ｂを受け取り、第１暗号文ｓ１＝べき倍点ｒ＊Ｂとする。
【００２７】
次に、暗号制御部２１１は、公開鍵記憶部２０１から公開鍵ｋｐを読み出し、次に、生成した乱数ｒをべき倍係数として、べき倍係数入力部２２１へ出力し、読み出した公開鍵ｋｐを被べき倍点として、被演算値入力部２２２へ出力する。次に、演算結果出力部２２５から、演算結果としてべき倍点ｒ＊ｋｐを受け取る。
次に、暗号制御部２１１は、情報記憶部２０５からポイントＰｍを読み出し、読み出したポイントＰｍと受け取ったべき倍点ｒ＊ｋｐのｘ座標値とに排他的論理和を施して、第２暗号文ｓ２＝ポイントＰｍ  xor  （べき倍点ｒ＊ｋｐのｘ座標値）を生成する。ここで、「xor」は、排他的論理和を示す演算子である。
【００２８】
次に、暗号制御部２１１は、生成した第１暗号文ｓ１及び第２暗号文ｓ２を通信部２０３を介して、ＩＣカード１００へ送信する。
（べき倍係数入力部２２１）
べき倍係数入力部２２１は、暗号制御部２１１からべき倍係数を受け取り、受け取ったべき倍係数を楕円べき倍演算部２２４へ出力する。
【００２９】
（被演算値入力部２２２）
被演算値入力部２２２は、暗号制御部２１１から被べき倍点を受け取り、受け取った被べき倍点を楕円べき倍演算部２２４へ出力する。
（一次項保持部２２３）
一次項保持部２２３は、楕円曲線Ｅ（Ｆｐ）：ｙ2＝ｘ3＋ａ×ｘ＋ｂの一次項の係数ａを保持している。係数ａは、一例として、「−３」である。
【００３０】
（楕円べき倍演算部２２４）
楕円べき倍演算部２２４は、べき倍係数入力部２２１からべき倍係数を受け取り、被演算値入力部２２２から被べき倍点を受け取り、一次項保持部２２３から係数ａを受け取る。
次に、楕円べき倍演算部２２４は、（べき倍係数）＊（被べき倍点）を演算し、演算結果として、べき倍点を演算結果出力部２２５へ出力する。
【００３１】
なお、べき倍演算については、後述する。
（演算結果出力部２２５）
演算結果出力部２２５は、楕円べき倍演算部２２４からべき倍点を受け取り、受け取ったべき倍点を暗号制御部２１１へ出力する。
（４）通信部２０３、入力部２０６及び表示部２０７
通信部２０３は、暗号処理部２０２又は制御部２０４の制御の基に、ＩＣカード１００との間で、情報の送受信を行う。
【００３２】
入力部２０６は、ポイント発行装置２００の操作者からの情報又は指示の入力部を受け付け、入力を受け付けた情報又は指示を制御部２０４へ出力する。
表示部２０７は、制御部２０４の制御により、各種情報を表示する。
１．３  ＩＣカード１００の構成
ＩＣカード１００は、図１に示すように、秘密鍵記憶部１０１、復号処理部１０２、通信部１０３、制御部１０４及び情報記憶部１０５から構成されている。
【００３３】
ＩＣカード１００は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどから構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、ＩＣカード１００は、その機能を達成する。
（１）情報記憶部１０５及び秘密鍵記憶部１０１
情報記憶部１０５は、素数ｐ、楕円曲線Ｅ（Ｆｐ）及びベースポイントＢを記憶している。また、生成された再生ポイントＰｍ’を記憶するための領域を備えている。
【００３４】
秘密鍵記憶部１０１は、秘密鍵ｋｓを記憶している。
（２）通信部１０３
通信部１０３は、ポイント発行装置２００から第１暗号文ｓ１及び第２暗号文ｓ２を受信する。第１暗号文ｓ１及び第２暗号文ｓ２を受信すると、制御部１０４に対して、受信した旨を制御部１０４に対して通知する。また、受信した第１暗号文ｓ１及び第２暗号文ｓ２を復号処理部１０２へ出力する。
【００３５】
（３）制御部１０４
制御部１０４は、通信部１０３から第１暗号文ｓ１及び第２暗号文ｓ２を受信した旨の通知を受け取る。前記通知を受け取ると、復号処理部１０２に対して、第１暗号文ｓ１及び第２暗号文ｓ２を復号して再生ポイントを生成することを示す指示を出力する。
（４）復号処理部１０２
復号処理部１０２は、図３に示すように、復号制御部１１１と楕円演算部１１２とから構成され、楕円演算部１１２は、べき倍係数入力部１２１、被演算値入力部１２２、一次項保持部１２３、楕円べき倍演算部１２４、演算結果出力部１２５、零次項保持部１２６及び演算結果検証部１２７から構成されている。
【００３６】
（復号制御部１１１）
復号制御部１１１は、制御部１０４から、第１暗号文ｓ１及び第２暗号文ｓ２を復号して再生ポイントを生成することを示す指示を受け取る。また、通信部１０３から第１暗号文ｓ１及び第２暗号文ｓ２を受け取る。
前記指示を受け取ると、復号制御部１１１は、秘密鍵記憶部１０１から秘密鍵ｋｓを読み出し、次に、受け取った第１暗号文ｓ１を被べき倍点として、被演算値入力部１２２へ出力し、読み出した秘密鍵ｋｓをべき倍係数として、べき倍係数入力部１２１へ出力する。次に、演算結果出力部１２５から、エラー発生の有無を示すエラー発生情報を受け取る。受け取ったエラー発生情報がエラーの発生があったことを示す場合には、以降の復号処理を中止する。受け取ったエラー発生情報がエラーの発生が無かったことを示す場合には、さらに、演算結果ｋｓ＊ｓ１を受け取り、さらに、再生ポイントＰｍ’＝第２暗号文ｓ２  xor  （演算結果ｋｓ＊ｓ１のｘ座標値）を計算する。
【００３７】
ここで、Ｐｍ’
＝ｓ２  xor  （ｋｓ＊ｓ１のｘ座標値）
＝（Ｐｍ  xor  （ｒ＊ｋｐのｘ座標値））  
xor  （ｋｓ・ｒ＊Ｂのｘ座標値）
＝Ｐｍ  xor（ｒ・ｋｓ＊Ｂのｘ座標値）  xor  （ｒ・ｋｓ＊Ｂのｘ座標値）
＝Ｐｍ
従って、再生ポイントＰｍ’は、ポイントＰｍに一致することが分かる。
【００３８】
次に、復号制御部１１１は、生成した再生ポイントＰｍ’を情報記憶部１０５へ書き込む。
（べき倍係数入力部１２１）
べき倍係数入力部１２１は、復号制御部１１１からべき倍係数ｋを受け取り、受け取ったべき倍係数ｋを楕円べき倍演算部１２４へ出力する。
【００３９】
（被演算値入力部１２２）
被演算値入力部１２２は、復号制御部１１１から被べき倍点Ｑを受け取り、受け取った被べき倍点Ｑを楕円べき倍演算部１２４へ出力する。
（一次項保持部１２３）
一次項保持部１２３は、楕円曲線Ｅ（Ｆｐ）：ｙ2＝ｘ3＋ａ×ｘ＋ｂの一次項の係数ａを保持している。係数ａは、一例として、「−３」である。
【００４０】
（楕円べき倍演算部１２４）
楕円べき倍演算部１２４は、べき倍係数入力部１２１からべき倍係数ｋを受け取り、被演算値入力部１２２から被べき倍点Ｑを受け取り、一次項保持部１２３から係数ａを受け取る。
次に、楕円べき倍演算部１２４は、（べき倍係数ｋ）＊（被べき倍点Ｑ）を演算し、演算結果として、べき倍点＝（Ｘ、Ｙ）を演算結果検証部１２７へ出力する。
【００４１】
（零次項保持部１２６）
零次項保持部１２６は、楕円曲線Ｅ（Ｆｐ）：ｙ2＝ｘ3＋ａ×ｘ＋ｂの零次項の係数ｂを保持している。
（演算結果検証部１２７）
演算結果検証部１２７は、楕円べき倍演算部１２４から（べき倍係数ｋ）＊（被べき倍点Ｑ）の演算結果としてべき倍点＝（Ｘ、Ｙ）を受け取り、一次項保持部１２３から係数ａを受け取り、零次項保持部１２６から係数ｂを受け取る。
【００４２】
次に、受け取ったＸを用いて、Ｘ3＋ａ×Ｘ＋ｂを計算し、受け取ったＹを用いて、Ｙ2 を計算し、Ｙ2 ＝Ｘ3＋ａ×Ｘ＋ｂであるか否かを判断する。
Ｙ2 ＝Ｘ3＋ａ×Ｘ＋ｂであると判断する場合には、エラーの発生がなかったことを示すエラー発生情報と、受け取ったべき倍点とを演算結果出力部１２５へ出力する。
Ｙ2 ＝Ｘ3＋ａ×Ｘ＋ｂでないと判断する場合には、エラーの発生を示すエラー発生情報を演算結果出力部１２５へ出力する。
【００４３】
（演算結果出力部１２５）
演算結果出力部１２５は、楕円べき倍演算部１２４からエラー発生情報を受け取り、受け取ったエラー発生情報を復号制御部１１１へ出力する。また、演算結果出力部１２５は、楕円べき倍演算部１２４からべき倍点を受け取り、受け取ったべき倍点を復号制御部１１１へ出力する。
【００４４】
１．４  ポイント発行システム１０の動作
ポイント発行システム１０の動作について、図４に示すフローチャートを用いて説明する。
（１）秘密鍵ｋｓ及び公開鍵ｋｐの生成の動作
以下に示す動作は、ポイント発行装置２００がポイントを発行する前に行われる。
【００４５】
ＩＣカード１００の復号処理部１０２は、秘密鍵ｋｓを生成し、生成した秘密鍵ｋｓを秘密鍵記憶部１０１へ書き込む（ステップＳ１０１）。次に、復号処理部１０２は、情報記憶部１０５からベースポイントＢを読み出し、生成した前記秘密鍵ｋｓと読み出したべースポイントＢに楕円べき倍演算を施して、公開鍵ｋｐ＝ｋｓ＊Ｂを生成する。この際、楕円べき倍演算は、楕円べき倍演算部１２４により行われる（ステップＳ１０２）。次に、復号処理部１０２は、生成した公開鍵ｋｐを通信部１０３を介して、ポイント発行装置２００へ送信する（ステップＳ１０３）。
【００４６】
ポイント発行装置２００の暗号処理部２０２は、ＩＣカード１００から通信部２０３を介して、公開鍵ｋｐを受信し、受信した公開鍵ｋｐを公開鍵記憶部２０１へ書き込む（ステップＳ１０４）。
なお、ここでは、ＩＣカード１００が秘密鍵ｋｓを生成し、生成した秘密鍵ｋｓを基にして公開鍵ｋｐを生成し、生成した公開鍵ｋｐをポイント発行装置２００へ送信するとしているが、次に示すようにしてもよい。
【００４７】
つまり、ＩＣカード１００が秘密鍵ｋｓを生成し、生成した秘密鍵ｋｓを内部に記憶する。次に、鍵管理装置は、ＩＣカード１００から秘密鍵ｋｓを取得し、取得した秘密鍵ｋｓから上述したように、公開鍵ｋｐを生成し、生成した公開鍵ｋｐをポイント発行装置２００へ送信するとしてもよい。
（２）ポイントの発行の動作
ポイント発行装置２００の制御部２０４は、ポイントＰｍを生成し、生成したポイントＰｍを情報記憶部２０５に書き込み、次に、暗号処理部２０２に対して、ポイントＰｍを暗号化してＩＣカード１００へ送信することを示す指示を出力する（ステップＳ１１１）。
【００４８】
暗号制御部２１１は、制御部２０４から、ポイントＰｍを暗号化してＩＣカード１００へ送信することを示す指示を受け取ると、乱数ｒを生成し（ステップＳ１１２）、ベースポイントＢを情報記憶部２０５から読み出し、生成した乱数ｒをべき倍係数として、べき倍係数入力部２２１へ出力し、読み出したベースポイントＢを被べき倍点として、被演算値入力部２２２へ出力し、演算結果出力部２２５から、演算結果としてべき倍点ｒ＊Ｂを受け取り、第１暗号文ｓ１＝べき倍点ｒ＊Ｂとする（ステップＳ１１３）。
【００４９】
次に、暗号制御部２１１は、公開鍵記憶部２０１から公開鍵ｋｐを読み出し、生成した乱数ｒをべき倍係数として、べき倍係数入力部２２１へ出力し、読み出した公開鍵ｋｐを被べき倍点として、被演算値入力部２２２へ出力し、演算結果出力部２２５から、演算結果としてべき倍点ｒ＊ｋｐを受け取り、暗号制御部２１１は、情報記憶部２０５からポイントＰｍを読み出し、読み出したポイントＰｍと受け取ったべき倍点ｒ＊ｋｐとを加算して、第２暗号文ｓ２＝ポイントＰｍ  xor  （べき倍点ｒ＊ｋｐのｘ座標値）を生成する（ステップＳ１１４）。
【００５０】
次に、暗号制御部２１１は、生成した第１暗号文ｓ１及び第２暗号文ｓ２を通信部２０３を介して、ＩＣカード１００へ送信する（ステップＳ１１５）。
復号制御部１１１は、ポイント発行装置２００から通信部１０３を介して、第１暗号文ｓ１及び第２暗号文ｓ２を受け取る（ステップＳ１１５）。
次に、復号制御部１１１は、秘密鍵記憶部１０１から秘密鍵ｋｓを読み出し、受け取った第１暗号文ｓ１を被べき倍点として、被演算値入力部１２２へ出力し、読み出した秘密鍵ｋｓをべき倍係数として、べき倍係数入力部１２１へ出力する。楕円べき倍演算部１２４により、ｋｓ＊ｓ１が演算され、演算結果出力部１２５から、エラー発生情報と演算結果ｋｓ＊ｓ１を受け取り、再生ポイントＰｍ’＝第２暗号文ｓ２  xor  （演算結果ｋｓ＊ｓ１のｘ座標値）を計算する（ステップＳ１１６）。
【００５１】
受け取ったエラー発生情報がエラーの発生を示す場合には（ステップＳ１１７）、処理を終了する。受け取ったエラー発生情報がエラーの未発生を示す場合には（ステップＳ１１７）、復号制御部１１１は、計算して得られた再生ポイントＰｍ’を情報記憶部１０５へ書き込む（ステップＳ１１８）。
（３）楕円べき倍演算の動作
ＩＣカード１００の楕円演算部１１２による楕円べき倍演算の動作について、図５に示すフローチャートを用いて説明する。
【００５２】
べき倍係数入力部１２１は、復号制御部１１１からべき倍係数ｋを受け取り、受け取ったべき倍係数ｋを楕円べき倍演算部１２４へ出力し（ステップＳ１２１）、被演算値入力部１２２は、復号制御部１１１から被べき倍点Ｑを受け取り、受け取った被べき倍点Ｑを楕円べき倍演算部１２４へ出力する（ステップＳ１２２）。
次に、楕円べき倍演算部１２４は、べき倍係数入力部１２１からべき倍係数ｋを受け取り、被演算値入力部１２２から被べき倍点Ｑを受け取り、一次項保持部１２３から係数ａを受け取り、（べき倍係数ｋ）＊（被べき倍点Ｑ）を演算し、演算結果として、べき倍点＝（Ｘ、Ｙ）を演算結果検証部１２７へ出力する（ステップＳ１２３）。
【００５３】
演算結果検証部１２７は、一次項保持部１２３から係数ａを受け取り、零次項保持部１２６から係数ｂを受け取り（ステップＳ１２４）、Ｘ3＋ａ×Ｘ＋ｂを計算し、Ｙ2 を計算し（ステップＳ１２５）、Ｙ2 ＝Ｘ3＋ａ×Ｘ＋ｂであるか否かを判断する（ステップＳ１２６）。
Ｙ2 ＝Ｘ3＋ａ×Ｘ＋ｂであると判断する場合には（ステップＳ１２６）、演算結果検証部１２７は、エラーの発生がなかったことを示すエラー発生情報と、受け取ったべき倍点とを演算結果出力部１２５へ出力し、演算結果出力部１２５は、エラー発生情報とべき倍点とを復号制御部１１１へ出力する（ステップＳ１２７）。
【００５４】
Ｙ2 ＝Ｘ3＋ａ×Ｘ＋ｂでないと判断する場合には（ステップＳ１２６）、演算結果検証部１２７は、エラーの発生を示すエラー発生情報を演算結果出力部１２５へ出力し、演算結果出力部１２５は、エラー発生情報を復号制御部１１１へ出力する（ステップＳ１２８）。
２．変形例（１）
ポイント発行システム１０の変形例としてのポイント発行システム１０ａ（図示していない）について説明する。
【００５５】
２．１  ポイント発行システム１０ａの構成
ポイント発行システム１０ａは、ポイント発行システム１０と同様の構成を有している。
ポイント発行システム１０ａは、ＩＣカード１００に代えて、ＩＣカード１００ａ（図示していない）を含み、ＩＣカード１００ａは、復号処理部１０２に代えて、復号処理部１０２ａ（図示していない）を含み、復号処理部１０２ａは、楕円演算部１１２に代えて、楕円演算部１１２ａを含む。
【００５６】
楕円演算部１１２ａは、図６に示すように、べき倍係数入力部１２１、被演算値入力部１２２、一次項保持部１２３、楕円べき倍演算部１２４、演算結果出力部１２５、零次項保持部１２６、演算結果検証部１２７及び零次項入力部１２８から構成されている。
以下において、ポイント発行システム１０に含まれている構成要素との相違点を中心として説明する。
【００５７】
（情報記憶部１０５）
情報記憶部１０５は、楕円曲線Ｅ（Ｆｐ）：ｙ2＝ｘ3＋ａ×ｘ＋ｂの零次項の係数ｂを予め記憶している。
（復号制御部１１１）
復号制御部１１１は、楕円演算部１１２ａによりべき倍演算を行う際に、情報記憶部１０５から零次項の係数ｂを読み出し、読み出した係数ｂを、楕円演算部１１２ａの零次項入力部１２８へ出力する。
【００５８】
（零次項保持部１２６）
零次項保持部１２６は、楕円曲線Ｅ（Ｆｐ）：ｙ2＝ｘ3＋ａ×ｘ＋ｂの零次項の係数ｂを保持するための領域を備えている。
（零次項入力部１２８）
零次項入力部１２８は、復号制御部１１１から係数ｂを受け取り、受け取った係数ｂを零次項保持部１２６へ書き込む。
【００５９】
２．２  ポイント発行システム１０ａの動作
ポイント発行システム１０ａの動作は、楕円べき倍演算の動作を除いて、ポイント発行システム１０の動作と同一であるので、ここでは、楕円演算部１１２ａによる楕円べき倍の演算の動作について図７に示すフローチャートを用いて説明する。また、楕円演算部１１２ａによる楕円べき倍の演算の動作は、図５に示す楕円演算部１１２による楕円べき倍の演算の動作と類似しており、図５に示す動作との相違点を中心として説明する。
【００６０】
ステップＳ１２３の次において、零次項入力部１２８は、復号制御部１１１から係数ｂを受け取り（ステップＳ１３１）、受け取った係数ｂを零次項保持部１２６へ書き込む（ステップＳ１３２）。その後、ステップＳ１２４へ続く。
３．変形例（２）
ポイント発行システム１０の別の変形例としてのポイント発行システム１０ｂ（図示していない）について説明する。
【００６１】
３．１  ポイント発行システム１０ｂの構成
ポイント発行システム１０ｂは、ポイント発行システム１０と同様の構成を有している。
ポイント発行システム１０ｂは、ＩＣカード１００に代えて、ＩＣカード１００ｂ（図示していない）を含み、ＩＣカード１００ｂは、復号処理部１０２に代えて、復号処理部１０２ｂ（図示していない）を含み、復号処理部１０２ｂは、楕円演算部１１２に代えて、楕円演算部１１２ｂを含む。
【００６２】
楕円演算部１１２ｂは、図８に示すように、べき倍係数入力部１２１、被演算値入力部１２２、一次項保持部１２３、楕円べき倍演算部１２４、演算結果出力部１２５、零次項保持部１２６、演算結果検証部１２７及び零次項演算部１２９から構成されている。
以下において、ポイント発行システム１０に含まれている構成要素との相違点を中心として説明する。
【００６３】
（被演算値入力部１２２）
被演算値入力部１２２は、受け取った被べき倍点Ｑ＝（Ｘ、Ｙ）を零次項演算部１２９へ出力する。
（零次項演算部１２９）
零次項演算部１２９は、被演算値入力部１２２から被べき倍点Ｑ＝（Ｘ、Ｙ）を受け取り、一次項保持部１２３から係数ａを読み出し、
被べき倍点Ｑ＝（Ｘ、Ｙ）及び係数ａを用いて、次式により、係数ｂを算出する。
【００６４】
係数ｂ＝Ｙ2 −Ｘ3 −ａ×Ｘ
次に、算出した係数ｂを零次項保持部１２６へ書き込む。
（零次項保持部１２６）
零次項保持部１２６は、楕円曲線Ｅ（Ｆｐ）：ｙ2＝ｘ3＋ａ×ｘ＋ｂの零次項の係数ｂを保持するための領域を備えている。
【００６５】
３．２  ポイント発行システム１０ｂの動作
ポイント発行システム１０ｂの動作は、楕円べき倍演算の動作を除いて、ポイント発行システム１０の動作と同一であるので、ここでは、楕円演算部１１２ｂによる楕円べき倍の演算の動作について図９に示すフローチャートを用いて説明する。また、楕円演算部１１２ｂによる楕円べき倍の演算の動作は、図５に示す楕円演算部１１２による楕円べき倍の演算の動作と類似しており、図５に示す動作との相違点を中心として説明する。
【００６６】
ステップＳ１２３の次において、ステップＳ１２４に代えて、演算結果検証部１２７は、一次項保持部１２３から係数ａを受け取る（ステップＳ１２４ｂ）。
次に、零次項演算部１２９は、被演算値入力部１２２から被べき倍点Ｑ＝（Ｘ、Ｙ）を受け取り、一次項保持部１２３から係数ａを読み出し、被べき倍点Ｑ＝（Ｘ、Ｙ）及び係数ａを用いて、係数ｂ＝Ｙ2 −Ｘ3 −ａ×Ｘを算出し（ステップＳ１４１）、次に、算出した係数ｂを零次項保持部１２６へ書き込む（ステップＳ１４２）。
【００６７】
次に、演算結果検証部１２７は、零次項保持部１２６から係数ｂを受け取る（ステップＳ１４３）。その後、ステップＳ１２５へ続く。
４．実施の形態２
本発明に係る別の実施の形態としてのデジタル署名システム（図示していない）について説明する。
【００６８】
デジタル署名システムは、ユーザＡ装置、ユーザＢ装置及び管理センタ装置から構成されており（それぞれの装置を図示していない）、ユーザＡ装置、ユーザＢ装置及び管理センタ装置は、それぞれ、インターネットを介して接続されている。ユーザＡ装置、ユーザＢ装置及び管理センタ装置は、それぞれ、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレィユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ＲＡＭ又は前記ハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、各装置は、その機能を達成する。
【００６９】
ユーザＡ装置は、デジタル署名データとともにメッセージをユーザＢ装置へ送信し、ユーザＢ装置は、デジタル署名データとともにメッセージを受け取り、受け取ったデジタル署名データにより、署名検証を行う。
ユーザＡ装置、ユーザＢ装置及び管理センタ装置は、上記に示す楕円演算部１１２と同じ楕円演算部を有しており、この楕円演算部により、以下に示す楕円べき倍演算を行う。なお、ユーザＡ装置、ユーザＢ装置及び管理センタ装置は、上記に示す楕円演算部１１２ａと同じ楕円演算部を有しているとしてもよいし、上記に示す楕円演算部１１２ｂと同じ楕円演算部を有しているとしてもよい。
【００７０】
以下において、デジタル署名システムの動作について図１０に示すフローチャートを用いて説明する。
（秘密鍵ＸＡ及び公開鍵ＹＡの生成）
ユーザＡ装置は、秘密鍵ＸＡを生成する（ステップＳ２０１）。
管理センタ装置は、ユーザＡ装置から、秘密鍵ＸＡを安全に取得し、取得した秘密鍵ＸＡを用いて、公開鍵ＹＡ＝ＸＡ＊Ｇを算出する（ステップＳ２０２）。
【００７１】
ここで、素数ｐを法とする剰余体Ｆｐ上で定義された楕円曲線Ｅ（Ｆｐ）を想定し、Ｅの位数をｑとする。また、Ｇは、楕円曲線Ｅ（Ｆｐ）上のベースポイントである。
次に、管理センタ装置は、素数ｐ、楕円曲線Ｅ（Ｆｐ）及びベースポイントＧを公開し（ステップＳ２０３）、インターネットを介して、公開鍵ＹＡをユーザＢ装置へ送信する（ステップＳ２０４）。
【００７２】
ユーザＢ装置は、素数ｐ、楕円曲線Ｅ（Ｆｐ）及びベースポイントＧを取得し、公開鍵ＹＡを受信し（ステップＳ２０４）、受信した公開鍵ＹＡを内部に記憶する（ステップＳ２０５）。
ユーザＡ装置も、素数ｐ、楕円曲線Ｅ（Ｆｐ）及びベースポイントＧを取得する。
（デジタル署名データの生成と署名検証）
ユーザＡ装置は、乱数Ｋを生成し（ステップＳ２１１）、
第１署名データＲ１＝（ｒｘ，ｒｙ）＝Ｋ＊Ｇを生成し（ステップＳ２１２）、
Ｓ×Ｋ＝ｍ＋ｒｘ×ＸＡ  （ｍｏｄ  ｑ）  から第２署名データＳを計算する（ステップＳ２１３）。ここで、ｍは、ユーザＡ装置からユーザＢ装置へ送信するメッセージである。
【００７３】
次に、ユーザＡ装置は、得られた署名データ（Ｒ１、Ｓ）とメッセージｍとをユーザＢ装置へ送信する（ステップＳ２１４）。
ユーザＢ装置は、ユーザＡ装置から署名データ（Ｒ１、Ｓ）とメッセージｍとを受信する（ステップＳ２１４）。
次に、ユーザＢ装置は、Ｓ＊Ｒ１及びｍ＊Ｇ＋ｒｘ＊ＹＡを計算し（ステップＳ２１５）、エラーの発生を判断し、エラーが発生している場合には（ステップＳ２１６）、処理を終了する。エラーが発生していない場合には（ステップＳ２１６）、ユーザＢ装置は、
Ｓ＊Ｒ１＝ｍ＊Ｇ＋ｒｘ＊ＹＡ
が成立するかどうか判定し（ステップＳ２１７）、成立する場合には（ステップＳ２１７）、検証に成功し、ユーザＡ装置の身元の確認ができたこととなる。成立しない場合には（ステップＳ２１７）、検証に失敗し、ユーザＡ装置の身元が確認できなかったこととなる。
【００７４】
５．実施の形態３
本発明に係るまた別の実施の形態としての鍵共有システム（図示していない）について説明する。
鍵共有システムは、ユーザＡ装置、ユーザＢ装置及び管理センタ装置から構成されており（それぞれの装置を図示していない）、ユーザＡ装置、ユーザＢ装置及び管理センタ装置は、それぞれ、インターネットを介して接続されている。ユーザＡ装置、ユーザＢ装置及び管理センタ装置は、それぞれ、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、各装置は、その機能を達成する。
【００７５】
ユーザＡ装置とユーザＢ装置とは、第三者に知られることなく、同一の共有鍵を取得する。
ユーザＡ装置、ユーザＢ装置及び管理センタ装置は、上記に示す楕円演算部１１２と同じ楕円演算部を有しており、この楕円演算部により、以下に示す楕円べき倍演算を行う。なお、ユーザＡ装置、ユーザＢ装置及び管理センタ装置は、上記に示す楕円演算部１１２ａと同じ楕円演算部を有しているとしてもよいし、上記に示す楕円演算部１１２ｂと同じ楕円演算部を有しているとしてもよい。
【００７６】
以下において、鍵共有システムの動作について図１１に示すフローチャートを用いて説明する。
管理センタ装置は、楕円曲線Ｅ（Ｆｐ）及びベースポイントＧを選択し（ステップＳ３１１）、素数ｐ、楕円曲線Ｅ（Ｆｐ）及びベースポイントＧを公開する（ステップＳ３１２）。ここで、素数ｐを法とする剰余体Ｆｐ上で定義された前記楕円曲線Ｅ（Ｆｐ）を想定し、Ｇは、楕円曲線Ｅ（Ｆｐ）上のベースポイントである。
【００７７】
ユーザＡ装置は、秘密鍵ＸＡを設定し（ステップＳ３０１）、
公開鍵ＹＡ＝ＸＡ＊Ｇを算出し（ステップＳ３０２）、公開鍵ＹＡをユーザＢ装置へ送信する（ステップＳ３０３）。
一方、ユーザＢ装置は、秘密鍵ＸＢを設定し（ステップＳ３２１）、
公開鍵ＹＢ＝ＸＢ＊Ｇを算出し（ステップＳ３２２）、公開鍵ＹＢをユーザＡ装置へ送信する（ステップＳ３２３）。
【００７８】
ユーザＡ装置は、共有鍵ＸＡ＊ＹＢ＝（ＸＡ×ＸＢ）＊Ｇを算出する（ステップＳ３０４）。
一方、ユーザＢ装置は、共有鍵ＸＢ＊ＹＡ＝（ＸＢ×ＸＡ）＊Ｇを算出する（ステップＳ３２４）。
ここで、共有鍵ＸＢ＊ＹＡ＝（ＸＢ×ＸＡ）＊Ｇ
＝（ＸＡ×ＸＢ）＊Ｇ
＝共有鍵ＸＡ＊ＹＢ
である。
【００７９】
６．楕円曲線上の楕円べき倍演算
楕円曲線上の楕円べき倍演算について、以下に簡単に説明する。
一例として、１００＊Ｐを計算する。
１００＊Ｐ＝２（２（Ｐ＋２（２（２（Ｐ＋２Ｐ）））））と表すと、１００＊Ｐは、楕円曲線上の点による６回の２倍算と２回の加算により計算される。
【００８０】
このように、楕円べき倍演算は、２倍算及び加算による演算に帰着する。
ここで、楕円曲線の方程式を  ｙ2 ＝  ｘ3 ＋ａ×ｘ＋ｂ  とし、
楕円曲線上の任意の点Ｐの座標を（ｘ1 ，ｙ1 ）とし、任意の点Ｑの座標を（ｘ2 ，ｙ2 ）とする。ここで、Ｒ＝Ｐ＋Ｑで定まる点Ｒの座標を（ｘ3 ，ｙ3 ）とする。
Ｐ≠Ｑの場合、Ｒ＝Ｐ＋Ｑは、加算の演算となる。加算の公式を以下に示す。
【００８１】
ｘ3 ＝｛（ｙ2 −ｙ1 ）／（ｘ2 −ｘ1 ）｝2 −ｘ1 −ｘ2 
ｙ3 ＝｛（ｙ2 −ｙ1 ）／（ｘ2 −ｘ1 ）｝（ｘ1 −ｘ3 ）−ｙ1 
Ｐ＝Ｑの場合、Ｒ＝Ｐ＋Ｑ＝Ｐ＋Ｐ＝２×Ｐとなり、Ｒ＝Ｐ＋Ｑは、２倍算の演算となる。２倍算の公式を以下に示す。
ｘ3 ＝｛（３ｘ1 2 ＋ａ）／２ｙ1 ｝2 −２ｘ1 
ｙ3 ＝｛（３ｘ1 2 ＋ａ）／２ｙ1 ｝（ｘ1 −ｘ3 ）−ｙ1 
ここで、上記演算は、楕円曲線が定義される有限体上での演算である。
【００８２】
なお、楕円曲線の演算公式については、"Efficient elliptic curve exponentiation"（Miyaji, Ono, and Cohen著、  Advances in cryptology-proceedings of ICICS'97,   Lecture notes in computer science, 1997, Springer-verlag, 282-290.）に詳しく説明されている。
７．まとめ
以上説明したように、本発明は、素数ｐを法とする剰余体Ｆｐ上に定義された楕円曲線Ｅ（Ｆｐ）：ｙ2＝ｘ3＋ａ×ｘ＋ｂにおいて、楕円曲線上の任意の点Ｑとｐ未満の正の整数ｋから、べき倍点ｋＱを求める楕円べき倍演算装置であって、点Ｑの座標（Ｑｘ，Ｑｙ）と、べき倍係数ｋを入力する第１入力部と、楕円曲線のパラメータである零次項係数ｂを入力する第２入力部と、楕円曲線のパラメータである一次項係数ａを固定値として保持する楕円係数保持部と、前記第１入力部で入力された各値と、前記楕円係数保持部で保持している一次項係数ａから、べき倍点ｋＱを求めるべき倍演算部と、前記第２入力部で入力された零次項係数ｂと、前記楕円係数保持部で保持している一次項係数ａを用いて、前記べき倍演算部によって求められたべき倍点ｋＱの座標が楕円曲線上に存在するか否かを判定する判定部と、前記判定部でべき倍点ｋＱの座標が楕円曲線上に存在すると判定された時のみ、前記べき倍演算部で求められたべき倍点ｋＱを出力する出力部とを備える。
【００８３】
ここで、前記楕円べき倍演算装置は、前記第２入力部の代わりに、点Ｑの座標、一次項係数ａから、零次項係数ｂを求める零次項係数演算部を備え、前記判定部は、前記第２入力部で入力された零次項係数ｂの代わりに、零次項係数演算部で求められた零次項係数ｂを用いるとしてもよい。
また、本発明は、楕円曲線暗号を用いて、平文の暗号化、暗号文の復号化、平文に対する署名文の生成、平文と署名文に対する署名文の検証、及び署名文からの平文回復を行う楕円曲線暗号装置であって、前記各処理に用いる楕円べき倍演算処理に、前記楕円べき倍演算装置を用いる。
【００８４】
以上のように本発明によれば、楕円曲線を固定することなく故障利用攻撃に対抗できる楕円べき倍演算を行うことができる。従って、従来の楕円曲線を固定して故障利用攻撃に対応した楕円べき倍演算装置に比べ、汎用性が高くなり、秘密通信、デジタル署名、鍵共有などの様々な用途に同一の装置を用いることができる。
さらに、べき倍係数ｋと被べき倍点Ｑの入力のみで、楕円曲線を固定せず故障利用攻撃に対抗できる楕円べき倍演算を行うことができる。従って、従来の楕円べき倍演算装置と入出力方法を変えることなく、汎用性を保ったまま故障利用攻撃に対抗できるようになる。
【００８５】
８．その他の変形例
なお、本発明を上記の実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
（１）上記の各実施の形態では、べき倍点の検証に失敗した際には、失敗した旨を知らせるエラーメッセージを出力するとしているが、演算結果を出力しないようにしてもよい。
【００８６】
（２）楕円曲線の一次項の係数は「−３」という値を取ると高速な楕円べき倍演算を行うことができることが知られているため、各実施の形態では一次項の係数として「−３」を固定値として保持するようにしているが、一次項の係数を外部から受け取るように構成してもよい。
（３）実施の形態１のポイント発行システム１０におけるポイント発行装置２００の暗号処理部２０２において、ＩＣカード１００と同様の楕円演算処理を行うとしてもよい。つまり、楕円演算部２１２は、楕円演算部１１２と同様の構成を有しているとしてもよいし、楕円演算部１１２ａと同様の構成を有しているとしてもよいし、また、楕円演算部１１２ｂと同様の構成を有しているとしてもよい。
【００８７】
（４）実施の形態１のポイント発行システム１０では、利用者が商品を購入したりサービスの提供を受けた場合に、販売者やサービス提供者から受け取る特典情報であり、次に利用者が商品を購入したりサービスの提供を受ける際に、販売者やサービス提供者への対価の支払いの一部又は全部として利用されるポイントを秘密通信の対象とし、ポイント発行装置２００は、生成したポイントを暗号化し、暗号化ポイントをＩＣカード１００へ送信し、ＩＣカード１００は、暗号化ポイントを復号して再生ポイントを生成し、生成した再生ポイントを記憶するようにしている。
【００８８】
しかし、秘密通信の対象は、上記のポイントには限定されない。
次に示すような金銭の決済システムに適用することもできる。
例えば、通貨の代わりに用いることができる電子マネーを秘密通信の対象とし、ＩＣカードは、電子マネーを記憶しており、利用者が、商品を購入する際に、ＩＣカードは、商品の購入額に相当する電子マネーを暗号化して送信し、また、内部に記憶している電子マネーから送信した分を減じる。ポイント発行装置２００に代えて同様の構成を有するレジスタ装置は、暗号化電子マネーを受信し、受信した暗号化電子マネーを復号して電子マネーを再生し、記憶する。
【００８９】
また、上記のＩＣカードに代えて、美術館や博物館などの各種施設を利用のためのＩＣカードタイプの電子チケットが、上記のように、電子マネーに相当する情報を記憶しているとしてもよい。各種施設の入り口に設けられた入場管理装置は、各種施設の利用料金に相当する額の電子マネーを要求し、前記電子チケットは、要求された額の電子マネーを暗号化して送信し、入場管理装置は、暗号化電子マネーを受信し、受信した暗号化電子マネーを復号して電子マネーを生成し、記憶するとしてもよい。
【００９０】
また、鉄道、バスなどの交通機関を利用する際に用いられるＩＣカードタイプの乗車券が、上記のように、電子マネーに相当する情報を記憶しているとしてもよい。交通機関の駅の入り口に設けられた入場管理装置は、当該駅を識別する識別情報を送信し、乗車券は、前記識別情報を受信し、記憶する。交通機関の駅の出口に設けられた出場管理装置は、前記識別情報を乗車券から受信し、受信した識別情報と当該出場管理装置が設けられた駅とを用いて、料金表により乗車料金を算出し、算出した乗車料金に相当する額の電子マネーを要求し、乗車券は、要求された額の電子マネーを暗号化して送信し、出場管理装置は、暗号化電子マネーを受信し、受信した暗号化電子マネーを復号して電子マネーを生成し、記憶する。
【００９１】
上記における暗号化及び復号化において、楕円曲線上の離散対数問題が安全性の根拠として用いられ、楕円べき倍演算が行われる。この楕円べき倍演算を行う各装置は、楕円演算部１１２、１１２ａ又は１１２ｂと同様の演算部を備えている。
（５）上記のような金銭の決済システムにおいて、送信される金銭の額、送信元、送信先などについては、その正当性の証明が要求される場合がある。このような場合において、実施の形態２に示すデジタル署名や署名検証が適用される。
【００９２】
このようなデジタル署名や署名検証において、楕円曲線上の離散対数問題が安全性の根拠として用いれ、楕円べき倍演算が行われる。この楕円べき倍演算を行う各装置は、楕円演算部１１２、１１２ａ又は１１２ｂと同様の演算部を備えている。
（６）秘密通信の対象は、上記のようなポイントや電子マネーなどには限定されない。
本発明は、暗号化装置と再生装置とから構成されるコンテンツ配信システムにおいて適用され、例えば、映画、動画像、音楽、小説、データベースなどのデジタル情報を秘密通信の対象としてもよい。これらのコンテンツは、コンテンツ供給者から利用者に対して、これらのコンテンツを記録している記録媒体を販売したり、レンタルすることにより、提供される。また、デジタル放送やインターネットを介して、コンテンツ供給者から利用者に提供される。
【００９３】
コンテンツ供給者の有する暗号化装置は、デジタル著作物である映画を暗号化してＤＶＤに記録する。利用者の有する再生装置は、ＤＶＤから暗号化デジタル著作物を読み出し、復号して、映画を生成し、生成した映画を音声及び映像として再生して、表示及び出力する。
上記における暗号化及び復号化において、楕円曲線上の離散対数問題が安全性の根拠として用いられ、楕円べき倍演算が行われる。この楕円べき倍演算を行う各装置は、楕円演算部１１２、１１２ａ又は１１２ｂと同様の演算部を備えている。
【００９４】
（７）上記のコンテンツ配信システムにおいて、デジタル著作物を暗号化する際に用いる暗号化技術として、例えば、ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）を用いるとしてもよい。ＤＥＳは、いわゆる共通鍵暗号方式（又は秘密鍵暗号方式）と呼ばれる。
上記のコンテンツ配信システムにおいて、このような共通鍵暗号方式を採用する場合に、コンテンツ配信システムを構成する暗号化装置と再生装置との間で、いかにして安全に同一の秘密鍵を共有するかが課題となる。
【００９５】
実施の形態３に示す鍵共有システムは、この課題を解消するための１つの手段である。
実施の形態３に示す鍵共有システムにより、暗号化装置と再生装置との間で、第三者に知られることなく、秘密鍵を共有し、その後は、共有鍵暗号方式による暗号化アルゴリズムを適用し、暗号化装置において、共有している秘密鍵を用いて、デジタル著作物を暗号化し、また、再生装置において、共有している秘密鍵を用いて、暗号化デジタル著作物を復号する。
【００９６】
上記における鍵共有において、楕円曲線上の離散対数問題が安全性の根拠として用いられ、楕円べき倍演算が行われる。この楕円べき倍演算を行う各装置は、楕円演算部１１２、１１２ａ又は１１２ｂと同様の演算部を備えている。
（８）演算結果検証部１２７は、次に示すように判断するとしてもよい。
演算結果検証部１２７は、前記べき倍点ｋ＊Ｑが楕円曲線Ｅ上に存在するか否かの判定に代えて、被べき倍点Ｑとべき倍点ｋ＊Ｑとが同一の楕円曲線上に存在するか否を判定するとしてもよい。
【００９７】
具体的には、演算結果検証部１２７は、被べき倍点Ｑとして、座標値（Ｑx 、Ｑy ）を取得し、前記べき倍点ｋ＊Ｑとして、座標値（Ｑx'、Ｑy'）を取得し、
（Ｑy2−Ｑx3−ａ×Ｑx）−（Ｑy'2−Ｑx'3−ａ×Ｑx'）＝０が成立するか否かを判断する。この式が成立する場合に、被べき倍点Ｑとべき倍点ｋ＊Ｑとが同一の楕円曲線上に存在すると判定し、この式が成立しない場合に、被べき倍点Ｑとべき倍点ｋ＊Ｑとが同一の楕円曲線上に存在しないと判定する。
【００９８】
演算結果出力部１２５は、演算結果検証部１２７により、被べき倍点Ｑとべき倍点ｋ＊Ｑとが同一の楕円曲線上に存在すると判定された場合にのみ、前記べき倍点ｋ＊Ｑを出力する。
（９）本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
【００９９】
また、本発明は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ―ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリなど、に記録したものとしてもよい。また、これらの記録媒体に記録されている前記コンピュータプログラム又は前記デジタル信号であるとしてもよい。
【０１００】
また、本発明は、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリとを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしてもよい。
【０１０１】
また、前記プログラム又は前記デジタル信号を前記記録媒体に記録して移送することにより、又は前記プログラム又は前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
（１０）上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【０１０２】
金銭等の決済を行う産業において、送信者から受信者に送信される金銭の額やその他の情報を、第三者に知られないように、秘密送信する際に、本発明は、使用される。また、その際、金銭の額やその他の情報が正当であることを証明する際に、本発明は、使用される。このような金銭等の決済を行う産業とは、銀行、証券、保険などの金融関係に限らず、商品等の販売などの取引が発生するその他一般の産業において使用される。またこのような決済システムを構成する各装置は、電器機器を製造する産業において、生産され、販売される。
【０１０３】
また、本発明に係るコンテンツ配信システムを構成する暗号化装置や再生装置は、電器機器を製造する産業において、生産され、販売され、コンテンツ配信システムは、コンテンツ供給者から利用者に対して、音楽、映画、小説などのデジタル化された著作物を販売したり、レンタルしたりして供給する情報提供産業において、経営的、反復的かつ継続的に使用される。
【図面の簡単な説明】
【０１０４】
【図１】ポイント発行システム１０の構成を示すブロック図である。
【図２】暗号処理部２０２の構成を示すブロック図である。
【図３】復号処理部１０２の構成を示すブロック図である。
【図４】ポイント発行システム１０の動作を示すフローチャートである。
【図５】楕円演算部１１２によるべき倍演算の動作を示すフローチャートである。
【図６】楕円演算部１１２ａの構成を示すブロック図である。
【図７】楕円演算部１１２ａによるべき倍演算の動作を示すフローチャートである。
【図８】楕円演算部１１２ｂの構成を示すブロック図である。
【図９】楕円演算部１１２ｂによるべき倍演算の動作を示すフローチャートである。
【図１０】楕円曲線暗号技術を利用するデジタル署名における動作を示すフローチャートである。
【図１１】楕円曲線暗号技術を利用する鍵共有における動作を示すフローチャートである。
【符号の説明】
【０１０５】
１０    ポイント発行システム
１０ａ  ポイント発行システム
１０ｂ  ポイント発行システム
１００    ＩＣカード
１００ａ  ＩＣカード
１００ｂ  ＩＣカード
１０１    秘密鍵記憶部
１０２    復号処理部
１０２ａ  復号処理部
１０２ｂ  復号処理部
１０３    通信部
１０４    制御部
１０５    情報記憶部
１１１    復号制御部
１１２    楕円演算部
１１２ａ  楕円演算部
１１２ｂ  楕円演算部
１２１    べき倍係数入力部
１２２    被演算値入力部
１２３    一次項保持部
１２４    楕円べき倍演算部
１２５    演算結果出力部
１２６    零次項保持部
１２７    演算結果検証部
１２８    零次項入力部
１２９    零次項演算部
２００    ポイント発行装置
２０１    公開鍵記憶部
２０２    暗号処理部
２０３    通信部
２０４    制御部
２０５    情報記憶部
２０６    入力部
２０７    表示部
２１１    暗号制御部
２１２    楕円演算部
２２１    べき倍係数入力部
２２２    被演算値入力部
２２３    一次項保持部
２２４    楕円べき倍演算部
２２５    演算結果出力部
【図１】
2004252433.tif 000003
【図２】
2004252433.tif 000004
【図３】
2004252433.tif 000005
【図４】
2004252433.tif 000006
【図５】
2004252433.tif 000007
【図６】
2004252433.tif 000008
【図７】
2004252433.tif 000009
【図８】
2004252433.tif 000010
【図９】
2004252433.tif 000011
【図１０】
2004252433.tif 000012
【図１１】
2004252433.tif 000013