(57)【要約】【課題】事前計算を行なうことにより、電子署名の高速生成を行なうことができる事前計算による電子署名高速生成方法および装置を提供する。【解決手段】外部演算装置に専用デバイスを接続し電子署名を生成する装置を用いると共に、暗号技術には楕円ＤＳＡを用いる。前記専用デバイスは、格納した秘密鍵ｓと乱数ｋに関する情報を元にして、乱数ｋとベースポイントＧから生成する署名ｒ部と、乱数ｋから生成する乱数逆元ｋ−１との２つを事前に計算しておき、この事前計算結果を事前計算値記憶領域に記憶し、外部演算装置にて計算されたハッシュ値ｅが入力された際に、専用デバイスは、秘密鍵ｓでハッシュ値ｅへの署名を行い署名ｔ部を事後計算するにあたり、事前計算値の署名ｒ部と乱数逆元ｋ−１を利用して、署名ｔ部を計算することで、署名ｒ部と署名ｔ部を署名データとして生成する。【選択図】          図３
2004253950.tif 000002
【特許請求の範囲】
【請求項１】
外部演算装置に専用デバイスを接続し電子署名を生成する装置を用い、暗号技術に楕円ＤＳＡを用いた事前計算による電子署名高速生成方法であって、
前記専用デバイスは、格納した秘密鍵ｓと乱数ｋに関する情報を元にして、
乱数ｋとベースポイントＧから生成する署名ｒ部
ｒ＝ｘ  ｍｏｄ  ｎ
ただし、（ｘ，ｙ）＝ｋＧであり、ｎはＧの位数
と、
乱数ｋから生成する乱数逆元ｋ−１との２つを事前に計算しておき、
当該事前計算結果を事前計算値記憶領域に記憶し、
外部演算装置にて計算されたハッシュ値ｅが入力された際に、
前記専用デバイスは、秘密鍵ｓでハッシュ値ｅへの署名を行い署名ｔ部
ｔ  ＝  ｋ−１  （  ｅ  ＋  ｓ・ｒ  ）  ｍｏｄ  ｎ
を事後計算するにあたり、事前計算値の署名ｒ部と乱数逆元ｋ−１を利用して、署名ｔ部を計算することで、
署名ｒ部と署名ｔ部を署名データとして生成することを特徴とする事前計算による電子署名高速生成方法。
【請求項２】
外部演算装置に専用デバイスを接続し電子署名を生成する装置を用い、暗号技術に楕円ＤＳＡを用いた事前計算による電子署名高速生成方法であって、
前記専用デバイスは、格納した秘密鍵ｓと乱数ｋに関する情報を元にして、
乱数ｋとベースポイントＧから生成する署名ｒ部
ｒ＝ｘ  ｍｏｄ  ｎ
ただし、（ｘ，ｙ）＝ｋＧであり、ｎはＧの位数
と、
乱数ｋから生成する乱数逆元ｋ−１と、
署名ｒ部と秘密鍵ｓの乗算値ｓｒとの３つを事前に計算しておき、
当該事前計算結果を事前計算値記憶領域に記憶し、
外部演算装置にて計算されたハッシュ値ｅが入力された際に、
前記専用デバイスは、秘密鍵ｓでハッシュ値ｅへの署名を行い署名ｔ部
ｔ  ＝  ｋ−１  （  ｅ  ＋  ｓ・ｒ  ）  ｍｏｄ  ｎ
を事後計算するにあたり、事前計算値の署名ｒ部と乱数逆元ｋ−１と乗算値ｓｒを利用して、署名ｔ部を計算することで、
署名ｒ部と署名ｔ部を署名データとして生成することを特徴とする事前計算による電子署名高速生成方法。
【請求項３】
請求項１または２の何れかの電子署名高速生成方法において、
前記外部演算装置がハッシュ値ｅを専用デバイスに入力し、専用デバイスは署名ｒ部と署名ｔ部からなる署名データを外部演算装置に出力することを特徴とする事前計算による電子署名高速生成方法。
【請求項４】
前記専用デバイスは、電子署名を行う対象データのハッシュ値ｅが入力されると、署名データを出力するトークンデバイスであって、
トークンデバイス内に、署名データ生成装置と事前計算値記憶領域を有し、
トークンデバイスへの給電があった時に前記署名データ生成装置は署名ｒ部と乱数逆元ｋ−１と乗算値ｓｒについて事前計算値を計算し、その計算結果を前記事前計算値記憶領域に記憶することで事前計算を行ない、
トークンデバイスは、ハッシュ値ｅの入力の後、署名ｔ部を生成し、署名データを出力することを特徴とする請求項３の事前計算による電子署名高速生成方法。
【請求項５】
請求項４の電子署名高速生成方法において、
外部演算装置にて対象データのハッシュ値ｅの計算中に、前記事前計算値の計算と記憶とを行うことを特徴とする事前計算による電子署名高速生成方法。
【請求項６】
外部演算装置に専用デバイスを接続し、楕円ＤＳＡを用いた事前計算による電子署名高速生成装置であって、
前記専用デバイスは、格納した秘密鍵ｓと乱数ｋに関する情報を元にして、
乱数ｋとベースポイントＧから生成する署名ｒ部
ｒ＝ｘ  ｍｏｄ  ｎ
ただし、（ｘ，ｙ）＝ｋＧであり、ｎはＧの位数
と、
乱数ｋから生成する乱数逆元ｋ−１との２つを事前に計算する事前計算装置と、
当該事前計算結果を記憶しておく事前計算値記憶領域部と、
秘密鍵ｓでハッシュ値ｅへの署名を行い署名ｔ部
ｔ  ＝  ｋ−１  （  ｅ  ＋  ｓ・ｒ  ）  ｍｏｄ  ｎ
を事後計算する署名データ生成装置とを備え、
前記専用デバイスは、外部演算装置にて計算されたハッシュ値ｅが入力されると、事前計算値の署名ｒ部と乱数逆元ｋ−１を利用して署名ｔ部を計算し、
署名ｒ部と署名ｔ部を署名データとして生成することを特徴とする事前計算による電子署名高速生成装置。
【請求項７】
外部演算装置に専用デバイスを接続し、楕円ＤＳＡを用いた事前計算による電子署名高速生成装置であって、
前記専用デバイスは、格納した秘密鍵ｓと乱数ｋに関する情報を元にして、
乱数ｋとベースポイントＧから生成する署名ｒ部
ｒ＝ｘ  ｍｏｄ  ｎ
ただし、（ｘ，ｙ）＝ｋＧであり、ｎはＧの位数
と、
乱数ｋから生成する乱数逆元ｋ−１と、
署名ｒ部と秘密鍵ｓの乗算値ｓｒとの３つを事前に計算する事前計算装置と、
当該事前計算結果を記憶しておく事前計算値記憶領域部と、
秘密鍵ｓでハッシュ値ｅへの署名を行い署名ｔ部
ｔ  ＝  ｋ−１  （  ｅ  ＋  ｓ・ｒ  ）  ｍｏｄ  ｎ
を事後計算する署名データ生成装置とを備え、
前記専用デバイスは、外部演算装置にて計算されたハッシュ値ｅが入力されると、事前計算値の署名ｒ部と乱数逆元ｋ−１と乗算値ｓｒを利用して署名ｔ部を計算し、
署名ｒ部と署名ｔ部を署名データとして生成することを特徴とする事前計算による電子署名高速生成装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、事前計算による電子署名高速生成方法および装置に関し、特に、秘匿すべき情報（秘密鍵や乱数など）および計算処理機能を格納する専用デバイスを用いた場合にあっても高速に署名生成可能な技術に関する。
【０００２】
【従来の技術】
近年、インターネット等のオープンなネットワークを利用した電子メールやオンライン取引などが行なわれるようになり、これらディジタルデータ交換におけるセキュリティ上の安全性を確保するために暗号技術が不可欠になっている。
この暗号技術を用いて、例えば、送信者から受信者へのデータ送付をするとき、伝送途中でデータの改竄などが行なわれていないことを検知する技術に電子署名技術がある。
【０００３】
この電子署名技術に用いられる暗号技術としては、一般に公開鍵暗号を用いたものが多い。公開鍵暗号は、暗号用の鍵と復号用の鍵が異なるもので、送信者は暗号用鍵（公開鍵という）を持ち、受信者は復号用鍵（秘密鍵という）を持つ。
公開鍵から秘密鍵を導き出すには膨大な計算量が必要であり、実用上にあっては不可能なように設計されている。したがって、送信者は、受信者の公開鍵を知ってさえいれば、秘密の鍵を送受信者間で共有しなくても暗号通信を行なうことができる。その点で、公開鍵暗号は、電子署名に適していると言える。
【０００４】
公開鍵暗号を用いた暗号通信では、メッセージ内容の機密性を確保する目的のために、送信者は、受信者の公開鍵でメッセージ文の暗号化を行なう。これとは逆に、送信者が送信者自身の秘密鍵を用いてデータ変換を行なって署名データとすると電子署名となる。電子署名の場合、メッセージ内容の機密性を確保するのではなく当該メッセージ文の正当性を確認するための手段としての目的に供する。
即ち、署名データとは、従来の紙面文書への署名・捺印に対応するものであると言えよう。このように、公開鍵暗号による電子署名は、署名者の秘密鍵を知らなくても、公開鍵があれば署名の正当性を確認できるという特徴を有する。
【０００５】
なお、電子署名には、素因数分解問題に基づいた電子署名方式のＥＳＩＧＮ署名やＲＳＡ署名、有限体上の離散対数問題に基づくＥｌＧａｍｅｌ署名、楕円曲線理論を用いてＤＳＡ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｔｕｒｅ  Ａｌｇｏｒｉｔｈｍ）署名を強化した楕円ＤＳＡ署名、楕円ＥｌＧａｍｅｌ署名など様々なものがある。そして、これら署名方式を用いた電子署名生成過程において、予め電子署名の事前計算を行なっておき、実際に対象とするメッセージ文の署名データ生成時には事後計算を行うことにより、署名の高速化を図る提案がなされている。
【０００６】
このような例として、特開２００１−２５５８１６号公報に示されるものがある。この公報に記載の技術は、従来電子署名処理全体を装置内にて行なってきたものを、事前に実行しておく事前計算と、電子署名を生成する際に実行する必要がある事後処理に分け、署名が必要となる前に予め事前計算値を求めておき、実際に署名が必要となった際には、事前計算値を読み出し、事後計算のみにより高速に電子署名を作成するようにした電子署名の作成装置と作成方法が記載されている。これによれば、パソコン（ＰＣ）のデータに対して署名を施すために、電子署名処理装置として機能するＩＣカードを用い、ＰＣに接続されたカードリーダ／ライタにそのＩＣカードを装着し、ＩＣカード内にて前記データに対する署名処理を行ない、生成した電子署名をＰＣに引き渡すといった方式の場合、ＩＣカード内に事前計算部と事後計算部とメモリとを設け、事前計算部による事前計算値をメモリ内に予め記憶しておき、実際に署名が必要となった際には、記憶しておいた事前計算値を使って事後計算部のみの計算で済ますことで、電子署名の生成を高速にしている。
【０００７】
一般的な電子署名アルゴリズムにあっては、署名の対象とするメッセージ文のデータから所定のハッシュ関数に基づく演算を行なってハッシュ値を求め、そのハッシュ値に対し秘密鍵や乱数を用いて生成した値を用いて所定の演算を施すことにより署名データを生成している。ここで、ハッシュ値とは、任意のビット長からなるメッセージ文のデータから、一定長のダイジェストに圧縮したものであり、一方向性と無衝突性とが考慮されている。一方向性とは、生成されたハッシュ値から元のメッセージ文を復元計算することが容易でない性質を指し、また、衝突とは、異なる複数のメッセージ文に対し、同一のハッシュ値が生成されることを指す。
【０００８】
ところで、上述の如くＩＣカード等の専用デバイスを用いることについては、次のような利便性及び安全性がある。つまり、秘密鍵や乱数のような秘匿すべき情報については、手の平に収まるかの如く小型の専用デバイス内に格納しておき、これを通常の実印の印判と同様に物理的に管理し、金庫に収納したり、あるいは、必要な時に携帯できるようになり、意識的に日常の習慣として重要性を認識することができるようになる。また、例えば、上述のＩＣカード等において、カードに物理的改ざん（ＩＣチップの改造・分解など）加えようとしても、格納されている秘匿すべき情報が消滅、或いは無効化したりして使用できなくなるような構造としたものを「耐タンパデバイス」と呼び、セキュリティを強化することが行なわれている。
【０００９】
【発明が解決しようとする課題】
しかしながら、上述した従来の事前計算による電子署名高速生成方法および装置においては、以下に示すような問題点があった。つまり、ＩＣカード等の専用デバイスは小型省電力の制限から演算処理能力が非力であるから、たとえ従来例の如く事前計算をしておいて、実際に署名が必要となったときに事後計算部のみの計算で済ますとしても、ハッシュ値生成にあっては元となるメッセージ文のデータ量が多ければ多いほど計算量が増加するので、メッセージ文からハッシュ値を生成するのに要する時間が多くかかってしまうという問題があった。
【００１０】
そこで、本発明はこのような問題点を解決するためになされたものであり、パーソナルコンピュータ（以下、ＰＣと記す）等の外部演算装置と、署名データを生成する専用デバイスとにより電子署名生成に関する演算処理を分業しつつ、事前計算を行なうことにより、更なる電子署名の高速生成を行なうことができる事前計算による電子署名高速生成方法および装置を提供することを目的とする。
【００１１】
【課題を解決するための手段】
上記課題を解決するために本発明に係わる事前計算による電子署名高速生成方法の請求項１の発明は、外部演算装置に専用デバイスを接続し電子署名を生成する装置を用い、暗号技術に楕円ＤＳＡを用いた事前計算による電子署名高速生成方法であって、前記専用デバイスは、格納した秘密鍵ｓと乱数ｋに関する情報を元にして、乱数ｋとベースポイントＧから生成する署名ｒ部ｒ＝ｘ  ｍｏｄ  ｎ  ただし、（ｘ，ｙ）＝ｋＧであり、ｎはＧの位数と、乱数ｋから生成する乱数逆元ｋ−１との２つを事前に計算しておき、当該事前計算結果を事前計算値記憶領域に記憶し、外部演算装置にて計算されたハッシュ値ｅが入力された際に、前記専用デバイスは、秘密鍵ｓでハッシュ値ｅへの署名を行い署名ｔ部ｔ  ＝  ｋ−１  （  ｅ  ＋  ｓ・ｒ  ）  ｍｏｄ  ｎを事後計算するにあたり、事前計算値の署名ｒ部と乱数逆元ｋ−１を利用して、署名ｔ部を計算することで、署名ｒ部と署名ｔ部を署名データとして生成することを特徴とする。
【００１２】
また、本発明に係わる事前計算による電子署名高速生成方法の請求項２の発明は、外部演算装置に専用デバイスを接続し電子署名を生成する装置を用い、暗号技術に楕円ＤＳＡを用いた事前計算による電子署名高速生成方法であって、前記専用デバイスは、格納した秘密鍵ｓと乱数ｋに関する情報を元にして、乱数ｋとベースポイントＧから生成する署名ｒ部ｒ＝ｘ  ｍｏｄ  ｎ  ただし、（ｘ，ｙ）＝ｋＧであり、ｎはＧの位数と、乱数ｋから生成する乱数逆元ｋ−１と、署名ｒ部と秘密鍵ｓの乗算値ｓｒとの３つを事前に計算しておき、当該事前計算結果を事前計算値記憶領域に記憶し、外部演算装置にて計算されたハッシュ値ｅが入力された際に、前記専用デバイスは、秘密鍵ｓでハッシュ値ｅへの署名を行い署名ｔ部ｔ  ＝  ｋ−１  （  ｅ  ＋  ｓ・ｒ  ）  ｍｏｄ  ｎを事後計算するにあたり、事前計算値の署名ｒ部と乱数逆元ｋ−１と乗算値ｓｒを利用して、署名ｔ部を計算することで、署名ｒ部と署名ｔ部を署名データとして生成することを特徴とする
【００１３】
また、本発明に係わる事前計算による電子署名高速生成方法の請求項３の発明は、前記請求項１または２の何れかに記載の事前計算による電子署名高速生成方法において、前記外部演算装置がハッシュ値ｅを専用デバイスに入力し、専用デバイスは署名ｒ部と署名ｔ部からなる署名データを外部演算装置に出力することを特徴とする。
【００１４】
また、本発明に係わる事前計算による電子署名高速生成方法の請求項４の発明は、前記請求項３記載の事前計算による電子署名高速生成方法において、前記専用デバイスは、電子署名を行う対象データのハッシュ値ｅが入力されると、署名データを出力するトークンデバイスであって、トークンデバイス内に、署名データ生成装置と事前計算値記憶領域を有し、トークンデバイスへの給電があった時に前記署名データ生成装置は署名ｒ部と乱数逆元ｋ−１と乗算値ｓｒについて事前計算値を計算し、その計算結果を前記事前計算値記憶領域に記憶することで事前計算を行ない、トークンデバイスは、ハッシュ値ｅの入力の後、署名ｔ部を生成し、署名データを出力することを特徴とする。
【００１５】
また、本発明に係わる事前計算による電子署名高速生成方法の請求項５の発明は、前記請求項４記載の事前計算による電子署名高速生成方法において、外部演算装置にて対象データのハッシュ値ｅの計算中に、前記事前計算値の計算と記憶とを行うことを特徴とする。
【００１６】
また、本発明に係わる事前計算による電子署名高速生成装置の請求項６の発明は、外部演算装置に専用デバイスを接続し、楕円ＤＳＡを用いた事前計算による電子署名高速生成装置であって、前記専用デバイスは、格納した秘密鍵ｓと乱数ｋに関する情報を元にして、乱数ｋとベースポイントＧから生成する署名ｒ部ｒ＝ｘ  ｍｏｄ  ｎ  ただし、（ｘ，ｙ）＝ｋＧであり、ｎはＧの位数と、乱数ｋから生成する乱数逆元ｋ−１との２つを事前に計算する事前計算装置と、当該事前計算結果を記憶しておく事前計算値記憶領域部と、秘密鍵ｓでハッシュ値ｅへの署名を行い署名ｔ部ｔ  ＝  ｋ−１  （  ｅ  ＋  ｓ・ｒ  ）  ｍｏｄ  ｎを事後計算する署名データ生成装置とを備え、前記専用デバイスは、外部演算装置にて計算されたハッシュ値ｅが入力されると、事前計算値の署名ｒ部と乱数逆元ｋ−１を利用して署名ｔ部を計算し、署名ｒ部と署名ｔ部を署名データとして生成することを特徴とする。
【００１７】
また、本発明に係わる事前計算による電子署名高速生成装置の請求項７の発明は、外部演算装置に専用デバイスを接続し、楕円ＤＳＡを用いた事前計算による電子署名高速生成装置であって、前記専用デバイスは、格納した秘密鍵ｓと乱数ｋに関する情報を元にして、乱数ｋとベースポイントＧから生成する署名ｒ部ｒ＝ｘ  ｍｏｄ  ｎ  ただし、（ｘ，ｙ）＝ｋＧであり、ｎはＧの位数と、乱数ｋから生成する乱数逆元ｋ−１と、署名ｒ部と秘密鍵ｓの乗算値ｓｒとの３つを事前に計算する事前計算装置と、当該事前計算結果を記憶しておく事前計算値記憶領域部と、秘密鍵ｓでハッシュ値ｅへの署名を行い署名ｔ部ｔ  ＝  ｋ−１  （  ｅ  ＋  ｓ・ｒ  ）  ｍｏｄ  ｎを事後計算する署名データ生成装置とを備え、前記専用デバイスは、外部演算装置にて計算されたハッシュ値ｅが入力されると、事前計算値の署名ｒ部と乱数逆元ｋ−１と乗算値ｓｒを利用して署名ｔ部を計算し、署名ｒ部と署名ｔ部を署名データとして生成することを特徴とする。
【００１８】
【発明の実施の形態】
以下、図示した実施の形態例に基づいて本発明を詳細に説明する。
図１は、本発明に係わる事前計算による電子署名高速生成装置の適用の形態例を示す構成図である。同図（ａ）は、専用デバイス１００と外部演算装置２００とが接続され、更に外部演算装置２００がネットワーク３００に接続したシステム構成例を示し、（ｂ）は、外部演算装置２００としてパーソナル・コンピュータ（以下、ＰＣと記す）２０１を用い、また、専用デバイス１００としてＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）インタフェースを具備したＵＳＢデバイス１０１を用いた場合の構成例を示す。
この例に示す専用デバイス１００と外部演算装置２００の何れも、演算処理機能を有しており、それぞれ内部にはディジタル集積回路などを備える。ここで、専用デバイス１００側の演算処理機能は、外部演算装置２００側のそれに比べて能力が劣るものである。これは、専用デバイス１００が小型ゆえの物理的な制約による。
【００１９】
上述の専用デバイス１００と外部演算装置２００の組合せによる電子署名の生成であって、暗号技術として楕円ＤＳＡ方式を用いたものが本発明の前提構成となる。
以下、図を用いて具体的な例を説明する。
図２は本発明に係る事前計算による電子署名高速生成装置に用いる外部演算装置の内部構成例を示す機能ブロック図であり、図３は、事前計算による電子署名高速生成装置に用いる専用デバイスの内部構成例を示す機能ブロック図である。
そして、図４は、本発明に係る事前計算による電子署名高速生成装置により生成される電子署名付きデータのフレーム構成イメージ図である。
【００２０】
まず、公開鍵暗号を用いた電子署名技術の１つとしての楕円ＤＳＡ方式の詳細は、米国電気電子学会ＩＥＥＥ（Ｔｈｅ  Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ）の標準規格Ｐ１３６３や、暗号の解説書（例えば、「暗号ゼロ知識証明数論」共立出版、「ＰＧＰ―暗号メールと電子署名」オライリー・ジャパン）等に記載されているので、ここでは要点のみ説明する。
楕円ＤＳＡ方式では、１つのデータＭ（メッセージ文）に対して、図４に示す如く署名ｒ部と署名ｔ部との２つの値からなる署名データを署名として生成する。即ち、楕円ＤＳＡは、ハッシュ関数ｈを用いてデータＭから固定長のメッセージダイジェストであるハッシュ値ｅを生成し、このハッシュ値ｅに対し、乱数ｋと秘密鍵ｓを用いて、署名データを生成する署名アルゴリズムであり、演算式は以下の通りである。
ｒ  ＝  ｘ  ｍｏｄ  ｎ
ｔ  ＝  ｋ−１  （  ｅ  ＋  ｓ  ｒ  ）  ｍｏｄ  ｎ
ただし、（ｘ，  ｙ）＝ｋＧ、Ｇは楕円曲線のベースポイント、ｎはＧの位数。
ここで、ｋは乱数、ｓは秘密鍵であって、乱数ｋと秘密鍵ｓは何れも署名する者が秘密にしておかなければならない値である。
【００２１】
通常、ハッシュ値ｅの入力を受け、乱数ｋを生成し、ベースポイントＧを乱数倍し、そのｘ座標値をベースポイントの位数ｎで剰余をとり、署名ｒ部を生成し、
位数ｎを法として、乱数の逆元ｋ−１を計算し、秘密鍵ｓと署名ｒ部を乗算し、その乗算結果である乗算値ｓｒとハッシュ値ｅを加算し、更にその結果に乱数の逆元ｋ−１を乗算することで、署名ｔ部を生成する。そして署名ｒ部と署名ｔ部を署名データとして対象データＭに付加し、電子署名付きデータを出力する。
【００２２】
受信者は、電子署名付きデータを受け取ると、データＭ部、署名ｒ部、署名ｔ部とに分離し、前記データからハッシュ値を求めると共に、署名者の公開鍵と、署名ｒ、署名ｔを用いた所定の演算により検証を行なうことになる。
楕円曲線暗号系は，ＲＳＡ暗号やＥｌＧａｍａｌ暗号に比較して、約１／６の大きさの鍵で同等の安全性を確保することができる特徴を持つ。つまり、楕円ＤＳＡ方式の電子署名は、鍵サイズが小さく、秘匿すべき鍵を演算処理能力の非力な専用デバイスに格納するには適したものである。鍵サイズが小さいと、メモリが小さくなるだけでなく、演算規模も小さくて済むので、非力な専用デバイスを用いたとしても高速に暗号／復号化処理を行うことができることになる。
【００２３】
本発明に係る電子署名生成にあっては、秘密鍵ｓと乱数ｋの絡む演算は専用デバイス１００内にて行ない、送信する対象データＭからハッシュ値ｅを生成する過程の演算は外部演算装置２００内にて行ない、外部演算装置２００はハッシュ値ｅを専用デバイス１００に出力する。
【００２４】
図２に戻り説明する。この例に示すＰＣ２０１内のハッシュ値生成装置２１０は、対象データＭが入力されると、予め与えられたハッシュ関数ｈに基づきハッシュ値ｅを求める計算を行ない、求めたハッシュ値ｅを専用デバイス１００に出力する。ここで、前記データＭは秘密にする必要がなく、当該データＭから生成したハッシュ値ｅも秘密にしておく必要がないので、外部演算装置２００内にこれらの値などが残っていたとしても何ら問題がない。したがって、外部演算装置２００は、不特定の装置を利用してもよいのである。
【００２５】
また、図３に示す専用デバイス１００は、大別すると事前計算装置１０と、事前計算値記憶領域２０と、署名データ生成装置３０とを備えて構成される。
前記事前計算装置１０は、乱数ｋを発生する乱数生成装置１１と、該乱数生成装置１１からの乱数ｋを元に所定の演算を行ない署名ｒ部を生成する署名ｒ部生成装置１２と、前記乱数ｋからその逆元ｋ−１を求める逆元生成装置１３と、秘密鍵ｓを格納した秘密鍵１４と、前記秘密鍵１４からの秘密鍵ｓと前記署名ｒ部生成装置１２からの署名ｒとを用いて所定の演算を行い乗算値ｓｒを求める乗算装置１５とを有している。
事前計算装置１０からは、乱数ｋと秘密鍵ｓを用いて計算可能な署名ｒ部と乱数逆元ｋ−１と乗算値ｓｒとの３つについて事前計算値として出力される。
【００２６】
また、前記事前計算値記憶領域２０は、署名ｒ部２１と乱数逆元２２と乗算値ｓｒ２３の３つの記憶領域を有し、前記事前計算装置１０から出力される署名ｒ部と乱数逆元ｋ−１と乗算値ｓｒについて、それぞれの事前計算値を記憶する。
【００２７】
また、前記署名データ生成装置３０は、外部演算装置２００からのハッシュ値ｅが入力されると事前計算値記憶領域２０の乗算値ｓｒ２３に記憶されている乗算値ｓｒとを加算する加算装置３１と、該加算装置３１からの加算結果に更に事前計算値記憶領域２０の乱数逆元２２に記憶されている乱数逆元ｋ−１とを用いて演算する乗算装置３２とを有し、この署名データ生成装置３０から出力されるのは、署名ｔ部となる。
こうして、最終的に専用デバイス１００からは、署名ｒ部と署名ｔ部とを組み合わして構成する署名データが出力される。そして、外部演算装置２００は、この署名データを付加し、電子署名付きデータとしてネットワーク３００などに送信する。
【００２８】
ここで特徴的な点は、秘匿すべき情報、即ち、秘密鍵ｓと乱数ｋの絡む計算は全て専用デバイス１００内にて行なうことで、外部に漏れる虞を排除している。そして、これまでにも述べたように専用デバイス１００の演算能力は非力であり、電子署名生成処理に要する処理時間を実用的な時間に短縮するために事前計算を行なっている。このとき事前計算しておく値としては、署名ｒ部の値と、乱数の逆元の値と、前記署名ｒ部と秘密鍵ｓとを乗算した値である。言うまでもなく、これら値の全てを事前に計算しておいてもいいし、何れかの部分のみ計算しておくとしてもよい。最大の特徴は、対象データＭからハッシュ値ｅを生成する過程の計算処理を外部演算装置２００にて行なう点にある。これにより、対象データＭのデータサイズが極めて巨大なものであったとしても、演算能力の高い外部演算装置２００（これは、複数台からなる並列処理装置であってもよい）により計算処理するので、これを専用デバイス１００内にて行なう場合に比べ、大幅な処理時間短縮の効果を得ることが可能になる。
【００２９】
上述した如く構成する事前計算による電子署名高速生成装置は、例えば、以下のように機能する。なお、ハッシュ値を生成する機能を備えたＰＣ２０１と、署名データを生成する機能を備えたＵＳＢデバイス１０１との組合せの場合を例に動作手順を説明する。
まず、ＵＳＢデバイス１０１をＰＣ２０１に直接または間接的にＵＳＢインタフェースにて接続すると、ＰＣ２０１はプラグアンドプレイ機能により接続されたＵＳＢデバイス１０１を自動的に認識すると共に、ＵＳＢインタフェースを介してＰＣ２０１側からＵＳＢデバイス１０１へ電力の供給が開始される。つまり、ＵＳＢデバイス１０１内には電源を持たなくてもよく、この給電される電力を用いて動作すればよい。
【００３０】
そして、ＵＳＢデバイス１０１は、事前計算を行なう。即ち、予め定めた秘密鍵ｓと任意に生成する乱数ｋとを用いて、署名ｒ部と乱数逆元ｋ−１と乗算値ｓｒとを計算により生成し、これを事前計算値記憶領域２０に記憶しておく。ここで、事前計算値記憶領域２０として、例えば、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）等に事前計算値テーブルを形成した場合を想定すれば、図５に示すように構成すればよい。
【００３１】
図５は、本発明に係る事前計算による電子署名高速生成方法に用いる事前計算値テーブルの構成例を示す図である。この事前計算値テーブルは、署名ｒ部と乱数逆元ｋ−１と乗算値ｓｒとの３つについて、それぞれ格納する領域（列）を有し、且つ、１０通りのバリエーション組（行）を有したものを示している。
つまり、ＵＳＢデバイス１０１が動作可能な状態にあって署名処理を行なわないときの空いている時間中に前記事前計算を自動的に行なって、その結果をテーブル上に書き加えていく。
【００３２】
他方、署名処理を行なう際には、ＰＣ２０１は対象データＭについてハッシュ値ｅの生成を行ない、ＵＳＢデバイス１０１にハッシュ値ｅを送る。
このハッシュ値ｅを受けたＵＳＢデバイス１０１は、前記事前計算値テーブル内から、署名ｒ部と乱数逆元ｋ−１と乗算値ｓｒの組を一つ選び、読み出す。このとき、どの組みを選択するかは任意でよく、読み出した各事前計算値は、例えばＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などに展開する。なお、選択した事前計算値の組みの情報について、前記事前計算値テーブル内から削除する。削除の手段としては、記憶を消去してもいいし、使用済みフラグなどを付して再選択されないようにしてもよい。
また、その後、署名処理を行なわないときに、ＵＳＢデバイス１０１は、自動的に事前計算を行ない、新たに生成した署名ｒ部と乱数逆元ｋ−１と乗算値ｓｒの組みを追加記憶、或いは上書き記憶する。
【００３３】
そして、ＵＳＢデバイス１０１は、署名データ生成装置３０によりＲＡＭ上の事前計算値を用いて署名ｔ部を生成し、署名ｒ部と署名ｔ部とからなる署名データをＰＣ２０１に出力する。
こうして、ＰＣ２０１は、対象データＭに署名データを付加して電子署名付きデータを完成させる。
【００３４】
以上、専用デバイス１００としてＵＳＢデバイス１０１を用いた場合を説明したが、ＩＣカードなどの他のデバイスを用いても、上述の構成を適用可能なことは言うまでもない。
【００３５】
以上のように、本発明に係わる事前計算による電子署名高速生成装置は、専用デバイス１００と外部演算装置２００を組合せ、それぞれに分業させて楕円ＤＳＡ方式を用いた電子署名の生成を行なうようにし、前記専用デバイス１００では署名ｒ部と乱数逆元ｋ−１と乗算値ｓｒについて事前に計算しておき、外部演算装置２００では対象データＭからハッシュ値ｅを求める計算を行なわたので、演算処理御能力の低い専用デバイス１００を用いたとしても、実際に署名処理が必要となったときには、専用デバイス１００は、入力されたハッシュ値ｅと、各事前計算値をと用い、署名データ生成装置３０にて計算を行なうだけの処理時間で済み、大幅な時間短縮をすることができる。
【００３６】
【発明の効果】
以上のように本発明に係わる事前計算による電子署名高速生成方法は、外部演算装置に専用デバイスを接続し電子署名を生成する装置を用い、暗号技術に楕円ＤＳＡを用いた事前計算による電子署名高速生成方法であって、前記専用デバイスは、格納した秘密鍵ｓと乱数ｋに関する情報を元にして、乱数ｋとベースポイントＧから生成する署名ｒ部“ｒ＝ｘ  ｍｏｄ  ｎ”ただし、（ｘ，ｙ）＝ｋＧであり、ｎはＧの位数と、乱数ｋから生成する乱数逆元ｋ−１との２つを事前に計算しておき、当該事前計算結果を事前計算値記憶領域に記憶し、外部演算装置にて計算されたハッシュ値ｅが入力された際に、前記専用デバイスは、秘密鍵ｓでハッシュ値ｅへの署名を行い署名ｔ部“ｔ  ＝  ｋ−１  （  ｅ  ＋  ｓ・ｒ  ）  ｍｏｄ  ｎ”を事後計算するにあたり、事前計算値の署名ｒ部と乱数逆元ｋ−１を利用して、署名ｔ部を計算することで、署名ｒ部と署名ｔ部を署名データとして生成するようにしたので、専用デバイスにおいて、ハッシュ値の取得から署名データの生成にかかる処理時間の削減になり、高速な電子署名生成が実現できる。
【図面の簡単な説明】
【図１】本発明に係る事前計算による電子署名高速生成装置の適用の形態例を示すの構成図である。（ａ）は、ネットワーク中に電子署名付きデータを送信する場合のシステム構成例を示し、（ｂ）はＰＣとＵＳＢデバイスを用いた場合の構成例を示す。
【図２】本発明に係る事前計算による電子署名高速生成装置に用いる外部演算装置の構成例を示す機能ブロック図である。
【図３】本発明に係る事前計算による電子署名高速生成装置に用いる専用デバイスの構成例を示す機能ブロック図である。
【図４】本発明に係る事前計算による電子署名高速生成装置により生成される電子署名付きデータのフレーム構成イメージ例を示す図である。
【図５】本発明に係る事前計算による電子署名高速生成方法に用いる事前計算値テーブルの構成例を示す図である。
【符号の説明】
１０・・・事前計算装置
１１・・・乱数生成装置
１２・・・署名ｒ部生成装置
１３・・・逆元生成装置
１４・・・秘密鍵ｓ
１５・・・乗算装置
２０・・・事前計算値記憶領域
２１・・・署名ｒ部
２２・・・乱数逆元ｋ−１
２３・・・乗算値ｓｒ
３０・・・署名データ生成装置
３１・・・加算装置
３２・・・乗算装置
１００・・・専用デバイス
１０１・・・ＵＳＢデバイス
２００・・・外部演算装置
２０１・・・パーソナル・コンピュータ（ＰＣ）
２１０・・・ハッシュ値生成装置
３００・・・ネットワーク
【図１】
2004253950.tif 000003
【図２】
2004253950.tif 000004
【図３】
2004253950.tif 000005
【図４】
2004253950.tif 000006
【図５】
2004253950.tif 000007