JP4474912B2 - 効率的ディジタル署名生成方法及び検証方法及び装置 - Google Patents

効率的ディジタル署名生成方法及び検証方法及び装置 Download PDF

Info

Publication number
JP4474912B2
JP4474912B2 JP2003402397A JP2003402397A JP4474912B2 JP 4474912 B2 JP4474912 B2 JP 4474912B2 JP 2003402397 A JP2003402397 A JP 2003402397A JP 2003402397 A JP2003402397 A JP 2003402397A JP 4474912 B2 JP4474912 B2 JP 4474912B2
Authority
JP
Japan
Prior art keywords
signature
mod
data
modulo
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2003402397A
Other languages
English (en)
Other versions
JP2005167525A (ja
Inventor
尚宜 佐藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2003402397A priority Critical patent/JP4474912B2/ja
Publication of JP2005167525A publication Critical patent/JP2005167525A/ja
Application granted granted Critical
Publication of JP4474912B2 publication Critical patent/JP4474912B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

本発明は、ディジタル署名方法及びディジタル署名を用いた認証方法に関する。
ディジタル署名は電子的なデータに対する印鑑の役割を持つ。署名対象の電子的なデータに対し、署名者Aは秘密の署名生成鍵を用いて署名データを生成し、もとのデータとともに署名検証者Bに送る。署名検証者は公開さている署名検証鍵を用いてそのデータが確かに署名者Aにより作成されたかどうかを検証する。従って、署名データは署名生成鍵を持つものしか生成できず、また正当に生成された署名データは検証時に受け入れられ、そうでないものは受け入れられないような仕組みになっていなければならない。
このような署名方法は公開鍵暗号技術を用いて1970年代後半に初めて構築されて以来、多くの方法が提案されてきている。また、ディジタル署名に対する安全性の概念整備や、効率性向上の技術などが数多く研究されている。
安全性の概念に対しては、1990年代に安全性証明理論が整備され、素因数分解問題などの数論問題の困難性を仮定して安全性が証明可能ないわゆる安全性証明可能方法がいくつか提案された。今なお安全性概念整備は研究されているが、実用署名方法として満たすべき安全性の概念はある程度充実し、定着していく方向になっている。一般的となっている満たすべき安全性レベルは、「適応的選択文書攻撃に対して存在的偽造不可」というものである。これらを満たしている方法として代表的なものとしては非特許文献1記載のRSA−PSSがある。
安全性証明理論では、安全性の根拠とする数論問題の困難性を仮定する。例えば素因数分解問題の困難性や離散対数問題の困難性などである。これらの数論問題のうち、暗号の安全性の根拠とするにふさわしいものの代表は素因数分解問題である。素因数分解問題はその研究の歴史がもっとも長く、数多くの解法が研究されて来ているが、それらの解法にも耐えうるようパラメータ長などを設定することにより完全に安全な数論問題と考えることができる。素因数分解問題を安全性の根拠におく署名方法として非特許文献1記載のRabin−PSS方法や非特許文献2記載のRabin署名方法などが知られている。
これに対し、上記RSA−PSSは安全性の根拠とする問題が厳密には素因数分解問題ではなく、RSA問題と呼ばれる問題となっている。素因数分解問題が解ければRSA問題を解くことが出来るが、逆については証明されていない。すなわちRSA問題の安全性は素因数分解問題以下ということができ、より高い安全性を求める暗号技術においては、より信頼性の高い、素因数分解問題などを安全性の根拠におく方法が望まれている。 一方、効率性の問題は、ディジタル署名のみならず、公開鍵暗号技術全体が抱える問題である。公開鍵暗号技術の構築のためには、ある種の数学的構造を必要とすることから、その処理には数学的関数の計算を避けることが出来ず、それが効率性を悪化させる大きな原因となっている。上記RSA−PSS方法では、署名検証時にある程度大きな数を法としたべき乗計算が複数回必要で、種々の高速化方法が提案されているものの、ICカードなどの計算能力の低い装置ではなお処理効率のボトルネックになっている。暗号や署名の処理に時間がかかることは本来実行すべき種々のアプリケーションの実行時間へ大きな悪影響を与え、全体の処理時間の制約から、場合によっては暗号処理部分を使用しないことも起こりえる。当然ながら安全面で深刻な損害を与えかねない事態となってしまうので、このようなことを避けるために効率性のよい方法の開発は極めて重要な問題となっている。
M.Bellare and P.Rogaway, Optimal Asymmetric Encryption−How to Encrypt with RSA, Proc.of Eurocrypt’94,LNCS950,Springer Verlag, pp.92−111(1994).
M.Rabin, Digital Signatures and Public−Key Encryptions as Intractable as Factorization,MIT,Technical Report, MIT/LCS/TR−212(1979).
上述の通り、より信頼性の高い、素因数分解問題などを安全性の根拠におく方法が望まれているが、素因数分解問題を安全性の根拠におく署名方法である上述のRabin−PSS方法Rabin署名方法は、RSA−PSSと同様、署名生成時には大きな法でのべき乗剰余算が必要である。さらに、Rabin方法の基本となる関数が平方剰余関数で、これは写像として4対1、すなわち同じ像に写像される入力は相異なるものが4つ存在するような関数となっており、このことが、署名生成時の効率性を極端に落とす理由になっている。Rabin−PSSではランダムな値を生成し、ある種のパディングを施した後、それが平方剰余関数の値域に入っているか否かをチェックし、入っていなかったら最初の処理からやり直さなければならない。これは効率性には望ましくなく、特にICカードでは実用に耐えられないほどの悪影響を持つ。
このように現状では、信頼性の高い数論問題である素因数分解問題を安全性の根拠において安全性証明可能であるディジタル署名方法の中で、計算能力の低い装置で実用的な効率性を持つ方法が存在しておらず、これらを満たすディジタル署名方法が望まれている。
素因数分解問題を安全性の根拠に置くためには、ディジタル署名を構成する落とし戸付き一方向性関数に写像として合成数を法とするべき乗関数であって、n対1、n>1であるものを用いる必要がある。このとき、効率性を向上させるには、nはなるべく小さいほうが望ましい(Rabin署名の場合はn=4)。数学的にn>2であることが示されており、よって本発明ではn=3となるものを選択する。また、署名生成時に必要なべき乗計算をより効率的に行う必要があるため、一方向性関数の法としてはpq(p、qは素数)の形の合成数を用いる。pを、3を法として2と合同、qを、9を法として4または7と合同な素数とするときN=pqの形の合成数を法とする3乗関数を用いれば上記を満たす一方向性関数を構成することができる。
さらに、署名生成時においてはこの3乗関数の逆像計算が必要であるが、ここで中間値を利用しながらpやqを法とした逆元演算を行わずに逆像計算を行う方法を用いる。これらの方法により、長さの比較的短いp、qを法としたべき乗剰余算をそれぞれ一回ずつ行う程度の計算量で逆像計算が可能になる。 具体的なディジタル署名方法の実現方法の1つを以下に示す。
鍵生成
圧縮関数Hを選択し、固定する。9を法として2または5または8と合同な素数p及び9を法として4または7と合同な素数qをランダムに生成し、N=pqとする。qを法とした三乗非剰余数aを任意に一つ固定し、(p、q)を署名生成鍵、(N、H、a)を署名検証鍵とする。ここで圧縮関数は暗号学的ハッシュ関数を意味し、一方向性と衝突困難性とを持つものをいう。
署名生成
電子化されたデータMの圧縮関数値H(M)に対しH(M)、a*H(M)、a*H(M)のうちqを法とした三乗剰余であるものをyとする。
yのNを法とした三乗根xを計算し、xをデータMに対する署名とする。
署名検証
データMから圧縮関数値H(M)を計算し、Nを法としてy’=xを計算し、y’がH(M)、a*H(M)、a*H(M)のうちいずれか一つと一致するとき、xをMに対する正当な署名として認証し、一致しないとき、正当でない署名とする。なお、記号*は乗算を表す。
この方法では法Nの素因数分解問題の困難性を前提に、適応的選択文書攻撃に対し存在的偽造不可であることが証明され、実用面で必要な安全性のレベルを達成している。
本発明により、最も強力な攻撃法である適応的選択文書攻撃に対して安全であることが保証されたディジタル署名を効率的に生成、検証することが可能となる。効率性が高いことにより、計算能力の低い装置であっても高速な署名処理が可能である。
以下、図面を用いて、本発明の実施例について説明する。
図1はネットワーク1001によって接続されたコンピュータA1002、コンピュータB1003を含む、コンピュータA1002からコンピュータB1003への通信を目的としたシステム構成を示すものである。
コンピュータA1002は内部に演算装置(以下CPUという)1004、記憶装置(揮発性、不揮発性を問わない。以下メモリという。)1005、ネットワークインターフェース1006を装備しており、外部にはコンピュータA1002をユーザが操作するためのディスプレイ1007とキーボード1008が接続されている。メモリ1005には署名生成プログラム(以下プログラムをPROGともいう)PROG1(1009)、署名生成のための秘密鍵S1010、署名対象のデータM1011が保存されている。
コンピュータB1003は内部にCPU1012、メモリ1013、ネットワークインターフェース1014、を装備しており、外部にはコンピュータB1003をユーザが操作するためのディスプレイ1015とキーボード1016が接続されている。メモリ1013には署名検証プログラムPROG2(1017)と、署名検証用鍵K1018が保存されている。
コンピュータA1002は署名生成プログラムPROG1(1009)を実行し、データM1011に対する署名データ1019を作成し、ネットワークインターフェース1006を通してネットワーク1001へ送信する。
コンピュータB1003はネットワークインターフェース1014を通して受信したあと、署名検証プログラムPROG2(1017)を実行し、検証結果をメモリ1013に保存する。
以下の各実施例で説明するプログラムは、互いのコンピュータまたは他のコンピュータからネットワーク1001上の伝送媒体である伝送信号により、またはCD−ROM、フレキシブルディスクなどの可搬型記憶媒体を介してメモリにデータを導入することができる。各コンピュータは、各コンピュータのオペレーションシステム(図示していない)の元で動作するように構成することも可能である。
署名生成プログラムPROG1(1009)はコンピュータA1002において、メモリ1005から読み出されて、CPU1004により実行され、コンピュータA1002上に署名生成処理部を実現する。署名生成プログラムPROG1(1009)は、署名生成鍵S1010、データM1011に対し、署名データ1019を出力する。
署名検証プログラムPROG2(1017)はコンピュータB1003において、メモリ1013から読み出されCPU1012により実行され、コンピュータB1003上に署名検証処理部を実現する。署名プログラムPROG2(1017)は署名検証鍵K1018、署名データ1019から検証結果を出力する。
署名生成プログラムPROG1(1009)と署名検証プログラムPROG2(1017)で用いられる一方向性関数fは、pを、9を法として2または5または8と合同な素数、qを、9を法として4または7と合同な素数とし、N=pqとするとき、Nを法とした3乗剰余関数であるとする。
署名生成プログラムPROG1(1009)の処理の流れを図2を用いて説明する。
ステップ2101:署名生成鍵と署名対象のデータを入力する。
ステップ2102:署名生成のための前処理を行う。データの圧縮値の計算などを含む。
ステップ2103:3乗剰余関数fの逆像計算を行う。
ステップ2104:署名生成のための後処理を行う。
ステップ2105:署名データを出力する。
署名検証プログラムPROG2(1017)の処理の流れを図3を用いて説明する。
ステップ2201:署名検証鍵と署名対象のデータを入力する。
ステップ2202:署名検証のための前処理を行う。データの圧縮値の計算などを含む。
ステップ2203:3乗剰余関数fの順像計算を行う。
ステップ2204:署名検証のための後処理を行う。
ステップ2205:合否を出力する。
署名生成鍵、署名検証鍵の生成手順を図4を用いて説明する。
ステップ3101:素数生成。9を法として2または5または8と合同な素数p、及び9を法として4または7と合同な、pと異なる素数qをランダムに生成する。
ステップ3102:合成数計算。N=pqを計算する。
ステップ3103:qを法として3乗剰余でない数aを選択する。
ステップ3104:出力長がNの長さと等しい圧縮関数Hを選択する。
ステップ3105:鍵の出力。署名検証鍵として(N、H、a)を、署名生成鍵として(p、q)を出力する。
署名生成鍵、署名検証鍵の生成は通信を行う前に実施され、各装置のメモリに記録されているものとする。各パラメータの長さも装置間で合意されているものとする。
本実施例では秘密にすべき素数p、qのみを署名生成鍵として説明したが、署名検証鍵は公開することから、署名検証鍵も署名生成時の鍵の一部として用いることとし、署名生成時の入力などに単に署名生成鍵と記載していても、署名検証鍵も入力されているものとする。
署名生成プログラムPROG1(1009)におけるステップ2102:署名生成のための前処理、ステップ2103:3乗剰余関数fの逆像計算、およびステップ2104:署名生成のための後処理について、図5を用いて説明する。
ステップ3201:署名対象のデータMと、署名生成鍵を入力する。
ステップ3202:圧縮関数HにデータMを入力し、圧縮値w=H(M)を計算する。
ステップ3203:w、a*w mod N、a*w mod Nのうち、Nを法として3乗剰余であるものを探し、それをyとおく。記号modは剰余を表す。すなわちA mod Nは、AをNで割った余りを表す。
ステップ3204:署名値の計算。Nを法としたyの3乗根を計算し、それをxとおく。
ステップ3205:署名対象のデータMと、署名値xとの連結を署名データWとする。
ステップ3206:署名データとしてWを出力する。
ここで、ステップ3202、3203がステップ2102に対応し、ステップ3204がステップ2103に対応し、ステップ3205がステップ2104に対応している。
ステップ3205において、署名データWは、Mとxとの連結として説明したが、署名データWは、Wから誰もが容易にMとxを導くことが出来るならば他の方法で構成されていてもよい。
署名検証プログラムPROG2(1017)におけるステップ2202:署名検証のための前処理、ステップ2203:3乗剰余関数fの順像計算、およびステップ2204:署名検証のための後処理について、図6を用いて説明する。
ステップ3301:署名データWと署名検証鍵を入力する。
ステップ3302:署名データWからMとxを取り出す。署名データがステップ3205のように作成されている場合、Wの下位から署名値の長さ分を取り出し、xとおき、残りをMとする。
ステップ3303:圧縮関数HにデータMを入力し、圧縮値w’=H(M)を計算する。
ステップ3304:Nを法としてxを計算し、それをy’とおく。
ステップ3305:Nを法としてy’=w’ならばステップ3309へ行く。
ステップ3306:Nを法としてy’=a*w’ならばステップ3309へ行く。
ステップ3307:Nを法としてy’=a*w’ならばステップ3309へ行く。
ステップ3308:「不合格」を出力して終了する。
ステップ3309:「合格」を出力して終了する。
ここで、ステップ3302、3303がステップ2202に対応し、ステップ3304がステップ2203に対応し、ステップ3305、3306、3307がステップ2204に対応している。
署名生成プログラムの実施におけるステップ3203、ステップ3204の実施方法を、図7を用いて説明する。
C=(2*p−4)/3を計算する。qが9を法として4と合同ならばζ=a(q−1)/3 mod q、B=(2*q−8)/9を計算し、qが9を法として7と合同ならばζ=a(2*(q−1))/3 mod q、B=(q−7)/9を計算する。さらに、b=aB+1 mod q、z=1/p mod qを計算する。これらの値は事前に計算しておき、署名生成鍵に含めてもよい。
ステップ3401:署名生成鍵(署名検証鍵も含む)と上記値ζ、C、Bを入力する。
ステップ3402:v=w mod qを計算する。
ステップ3403:s=v mod qを計算する。
ステップ3404:h=s*v mod qを計算する。
ステップ3405:α=s*h mod qを計算する。
ステップ3406:αがqを法として1と等しければステップ3410に行く。
ステップ3407:h=b*h mod qを計算し、w=a*w mod Nとおく。
ステップ3408:αがqを法としてζと等しければステップ3410に行く。
ステップ3409:h=b*h mod qを計算し、w=a*w mod Nとおく。
ステップ341012:u=w mod pを計算する。
ステップ3411:d=u mod pを計算する。
ステップ3412:g=u*d mod pを計算する。
ステップ3413:η=γ*d mod pを計算する。
ステップ3414:e=g+p*((h−g)*z mod q)を計算する。
ステップ3415:x=e+η*(w−e) mod Nを計算する。
ステップ3416:xを出力する。
実施例1で図1を用いて説明した通信システムにおいて、次の方法でディジタル署名方法を実施することができる。
まず、署名生成鍵、署名検証鍵の生成手順を図8を用いて説明する。
ステップ4101:素数生成。9を法として2または5または8と合同な素数p、及び9を法として4または7と合同な、pと異なる素数qをランダムに生成する。
ステップ4102:合成数計算。N=pqを計算する。
ステップ4103:qを法として3乗剰余でない数aを選択する。
ステップ4104:圧縮関数Hと圧縮関数Gを選択する。
ステップ4105:鍵の出力。署名検証鍵として(N、H、G、a)を、署名生成鍵として(p、q)を出力する。
上記圧縮関数H、Gについては、Hの出力長とGの出力長の和がNの長さと等しくなるように選択する。
署名生成鍵、署名検証鍵の生成は通信を行う前に実施され、各装置のメモリに記録されているものとする。各パラメータの長さも装置間で合意されているものとする。
本実施例では秘密にすべき素数p、qのみを署名生成鍵として説明したが、署名検証鍵は公開することから、署名検証鍵も署名生成時の鍵の一部として用いることとし、署名生成時の入力などに単に署名生成鍵と記載していても、署名検証鍵も入力されているものとする。
署名生成プログラムPROG1(1009)におけるステップ2102:署名生成のための前処理、ステップ2103:3乗剰余関数fの逆像計算、およびステップ2104:署名生成のための後処理について、図9を用いて説明する。
ステップ4201:署名対象のデータMと署名生成鍵を入力する。
ステップ4202:圧縮関数HにデータMを入力し、圧縮値s=H(M)を計算する。
ステップ4203:圧縮関数Gにsを入力し、圧縮値t=G(s)を計算する。
ステップ4204:sとtの連結をwとする。
ステップ4205:w、a*w mod N、a*w mod Nのうち、Nを法として3乗剰余であるものを探し、それをyとおく。
ステップ4206:署名値の計算。Nを法としたyの3乗根を計算し、それをxとおく。
ステップ4207:署名対象のデータMと、署名値xとの連結を署名データWとする。
ステップ4208:署名データとしてWを出力する。
ここで、ステップ4202、4203、4204、4205がステップ2102に対応し、ステップ4206がステップ2103に対応し、ステップ4207がステップ2104に対応している。
ステップ4207において、署名データWは、Mとxとの連結として説明したが、署名データWは、Wから誰もが容易にMとxを導くことが出来るならば他の方法で構成されていてもよい。
ステップ4205とステップ4206は図7を用いて説明したステップ3401からステップ3416を実施することにより実行することができる。
署名検証プログラムPROG2(1017)におけるステップ2202:署名検証のための前処理、ステップ2203:3乗剰余関数fの順像計算、およびステップ2204:署名検証のための後処理について図10を用いて説明する。
ステップ4301:署名データWと署名検証鍵を入力する。
ステップ4302:署名データWからMとxを取り出す。署名データがステップ4207のように作成されている場合、Wの下位から署名値の長さ分を取り出し、xとおき、残りをMとする。
ステップ4303:圧縮関数HにデータMを入力し、圧縮値s’=H(M)を計算する。
ステップ4304:圧縮関数Gにデータs’を入力し、圧縮値t’=G(s’)を計算する。
ステップ4305:s’とt’の連結をw’とする。
ステップ4306:Nを法としてxを計算し、それをy’とおく。
ステップ4307:Nを法としてy’=w’ならばステップ4311へ行く。
ステップ4308:Nを法としてy’=a*w’ならばステップ4311へ行く。
ステップ4309:Nを法としてy’=a*w’ならばステップ4311へ行く。
ステップ4310:「不合格」を出力して終了する。
ステップ4311:「合格」を出力して終了する。
ここで、ステップ4302、4303、4304、4305がステップ2202に対応し、ステップ4306がステップ2203に対応し、ステップ4307、4308、4309がステップ2204に対応している。
実施例1で図1を用いて説明した通信システムにおいて、次の方法でディジタル署名方法を実施することができる。
署名生成プログラムPROG1(1009)におけるステップ2102:署名生成のための前処理、ステップ2103:3乗剰余関数fの逆像計算、およびステップ2104:署名生成のための後処理について、図11を用いて説明する。
ただし、署名生成鍵、署名検証鍵は、図8を用いて説明した、ステップ4101からステップ4105を実施することで生成される。
ステップ5201:署名対象のデータMと署名生成鍵を入力する。
ステップ5202:圧縮関数HにデータMを入力し、圧縮値s=H(M)を計算する。
ステップ5203:圧縮関数Gにsを入力し、圧縮値G(s)とMとの排他的論理和をwとする。
ステップ5204:sとtの連結をwとする。
ステップ5205:w、a*w mod N、a*w mod Nのうち、Nを法として3乗剰余であるものを探し、それをyとおく。
ステップ5206:署名値の計算。Nを法としたyの3乗根を計算し、それをxとおく。
ステップ5207:署名値xを署名データWとする。
ステップ5208:署名データとしてWを出力する。
ここで、ステップ5202、5203、5204、5205がステップ2102に対応し、ステップ5206がステップ2103に対応し、ステップ5207がステップ2104に対応している。
上記説明において、署名対象のデータMの長さはGの出力長と等しいとする。一般にはMの長さはGの出力長以下ならばよく、短い場合には、適当なパディングを行ってGの長さと等しくしたものを改めてMと置けばよい。例えばMの最下位にビット1を連結し、さらにGの出力長と等しくなるまでビット0を繰り返し連結すればよい。
署名検証プログラムPROG2(1017)におけるステップ2202:署名検証のための前処理、ステップ2203:3乗剰余関数fの順像計算、およびステップ2204:署名検証のための後処理について、図12を用いて説明する。
ステップ5301:署名データWと署名検証鍵を入力する。
ステップ5302:Nを法としてΑを計算し、それをy0’とおく。
ステップ5303:Nを法としてa*y’を計算し、それをy’とおく。
ステップ5304:Nを法としてa*y’を計算し、それをy’とおく。
ステップ5305:i=0、1、2に対し、y’をsと、tとに分割する。
ステップ5306:i=0、1、2に対し、圧縮関数Gにsを入力し、その出力G(s)とtとの排他的論理和をMとする。
ステップ5307:圧縮値H(s)とMが異なっているならステップ5309に行く。
ステップ5308:M=Mとおいて、ステップ5314に行く。
ステップ5309:圧縮値H(s)とMが異なっているならステップ5311に行く。
ステップ5310:M=Mとおいて、ステップ5314に行く。
ステップ5311:圧縮値H(s)とMが異なっているならステップ5313に行く。
ステップ5312:M=Mとおいて、ステップ5314に行く。
ステップ5313:「不合格」を出力して終了する。
ステップ5314:「合格」と、Mを出力して終了する。
ここで、ステップ5302、5303、5304がステップ1203に対応し、ステップ5305から5312がステップ1204に対応している。
本実施例のディジタル署名方法は、メッセージ回復型で、署名データWから直接は署名対象のデータMはわからないが、署名検証手順の終了後、合格ならばデータMも同時に出力される。
実施例1で図1を用いて説明した通信システムにおいて、次の方法でディジタル署名方法を実施することができる。
署名生成プログラムPROG1(1009)におけるステップ2102:署名生成のための前処理、ステップ2103:3乗剰余関数fの逆像計算、およびステップ2104:署名生成のための後処理について、図13を用いて説明する。
ただし、署名生成鍵、署名検証鍵は、図4を用いて説明した、ステップ4101からステップ4105を実施することに加え、圧縮関数Hの出力長はNの長さからqの長さを引いたものであるとし、関数ψを、Nを法とした可逆元と、qの長さと同じ長さで、整数値としてqより小さい乱数を入力とし、その出力と、入力の可逆元とのビットごとの排他的論理和がNを法として3乗剰余となるような関数とし、署名生成鍵に加える。
ステップ6201:署名対象のデータMと署名生成鍵を入力する。
ステップ6202:乱数rを生成する。
ステップ6203:圧縮関数HにデータMを入力し、圧縮値w=H(M)を計算する。
ステップ6204:関数ψにwとrを入力し、出力値r’を求める。
ステップ6205:wとr’の連結をyとおく。
ステップ6206:署名値の計算。Nを法としたyの3乗根を計算し、それをxとおく。
ステップ6207:署名対象のデータMと、署名値xとの連結を署名データWとする。
ステップ6208:署名データとしてWを出力する。
ここで、ステップ6202、6203、6204、6205がステップ2102に対応し、ステップ6206がステップ2103に対応し、ステップ6207がステップ2104に対応している。
ステップ6207において、署名データWは、Mとxとの連結として説明したが、署名データWは、Wから誰もが容易にMとxを導くことが出来るならば他の方法で構成されていてもよい。
署名検証プログラムPROG2(1017)におけるステップ2202:署名検証のための前処理、ステップ2203:3乗剰余関数fの順像計算、およびステップ2204:署名検証のための後処理について、図14を用いて説明する。
ステップ6301:署名データWと署名検証鍵を入力する。
ステップ6302:署名データWからMとxを取り出す。署名データがステップ6207のように作成されている場合、Wの下位から署名値の長さ分を取り出し、xとおき、残りをMとする。
ステップ6303:圧縮関数HにデータMを入力し、圧縮値w=H(M)を計算する。
ステップ6304:Nを法としてxを計算し、それをy’とおく。
ステップ6305:y’をw’とr’とに分割する。
ステップ6306:w=w’ならばステップ6308へ行く。
ステップ6307:「不合格」を出力して終了する。
ステップ6308:「合格」を出力して終了する。
ここで、ステップ6302、6303がステップ2202に対応し、ステップ6304がステップ2203に対応し、ステップ6305、6306がステップ2204に対応している。
署名生成プログラムの実施におけるステップ6204、ステップ6205、ステップ6206は、図7を用いて説明したステップ3401からステップ3416において、
kをqのビット長とするとき、入力としてZ=(H(M)||0) mod qを加え(ただし、0は、ビット0がk個並んだビット列を表す。また||はビット列の連結を表す。)、
ステップ3407と、ステップ3409において、w=H(M)||(h−Z mod q)とすることにより実行される。
図15はネットワーク7001によって接続されたコンピュータA7002、コンピュータB7003、ICカード7004、ICカードリーダライタ7005を含む、コンピュータA7002からコンピュータB7003への通信を目的としたシステム構成を示すものである。
コンピュータA7002は内部にCPU7006、メモリ7007、ネットワークインターフェース7008、ICカードとの通信で用いるインターフェース7009を装備しており、外部にはコンピュータA7002をユーザが操作するためのディスプレイ7010とキーボード7011が接続されている。
さらに、ICカード7004との通信を行うことが可能なICカードリーダライタ7005も接続されている。コンピュータA7002のメモリ7007にはデータ圧縮プログラムPROG3(7012)と署名対象のデータM7013、署名生成後処理プログラムPROG5(7014)が保存されている。
ICカード7004は内部にCPU7015、メモリ7016、インターフェース7017を装備しており、メモリ7016には署名生成プログラムPROG4(7018)、署名生成のための秘密鍵S1010が保存されている。
コンピュータB7003には内部にCPU7019、メモリ7020、ネットワークインターフェース7021を装備しており、外部にはコンピュータB7003をユーザが操作するためのディスプレイ7022とキーボード7023が接続されている。メモリ7020には署名検証プログラムPROG2(1017)と、署名検証用鍵1018が保存されている。
コンピュータA7002はデータ圧縮プログラムPROG3(7012)を実行し、データM7013の圧縮値7023を作成し、インターフェース7009を通して署名生成命令と共にICカード7004に送信する。
ICカード7004はインターフェース7017を通して受信したあと、署名生成プログラムPROG4(7018)を実行し、署名値7025を作成し、再びインターフェース7009を通してコンピュータA7002に送信する。
コンピュータA7002はインターフェース7009と通して受信した後、署名生成後処理プログラムPROG5(7014)を実行し、データM7013と署名値7025から署名データ7026を作成し、それをネットワークインターフェース7008を通してネットワーク7001へ送信する。
コンピュータB7003はネットワークインターフェース7021を通して受信したあと、署名検証プログラムPROG2(1017)を実行し、検証結果をメモリ7020に保存する。
各プログラムは、互いのコンピュータまたは他のコンピュータからネットワーク7001上の伝送媒体である伝送信号により、またはCD-ROM、フレキシブルディスクなどの可搬型記憶媒体を介してメモリにデータを導入することができる。各コンピュータおよびICカードは、各装置のオペレーションシステム(図示していない)の元で動作するように構成することも可能である。
データ圧縮プログラムPROG3(7012)はコンピュータA7002において、メモリ7007から読み出されCPU7006により実行され、コンピュータA7002上にデータ圧縮処理部を実現する。データ圧縮プログラムPROG3(7012)はデータM7014から圧縮値7024を出力する。
署名生成後処理プログラムPROG5(7014)はコンピュータA7002において、メモリ7007から読み出されCPU7006により実行され、コンピュータA7002上に署名生成後処理部を実現する。署名生成後処理プログラムPROG5(7014)はデータM7014と署名値7025から署名データ7026を出力する。
署名生成プログラムPROG4(7018)はICカード7004において、メモリ7016から読み出されて、CPU7015により実行され、ICカード7004上に署名生成処理部を実現する。署名生成プログラムPROG4(7018)は、署名生成鍵S1010、圧縮値7024に対し、署名値7025を出力する。
署名検証プログラムPROG2(1017)はコンピュータB7003において、メモリ7020から読み出されCPU7019により実行され、コンピュータB7003上に署名検証処理部を実現する。署名プログラムPROG2(1017)は署名検証鍵K1018、署名データ7026から検証結果を出力する。
データ圧縮プログラムPROG3(7012)は、署名生成方法として実施例1の方法を用いた場合には、ステップ3202を実行し、圧縮値としてwを出力する。
署名生成方法として実施例2の方法を用いた場合には、ステップ4202〜ステップ4204を実行し、圧縮値としてwを出力する。
署名生成方法として実施例3の方法を用いた場合には、ステップ5202〜ステップ5204を実行し、圧縮値としてwを出力する。
署名生成方法として実施例4の方法を用いた場合には、ステップ6203を実行し、圧縮値としてwを出力する。
署名生成プログラムPROG4(7018)は、データ圧縮以外の署名生成処理を行う。
実施例1の方法で署名生成を実施した場合には、ステップ3203、ステップ3204を実行し、署名値としてxを出力する。
実施例2の方法で署名生成を実施した場合には、ステップ4205、ステップ4206を実行し、署名値としてxを出力する。
実施例3の方法で署名生成を実施した場合には、ステップ5205、ステップ5206を実行し、署名値としてxを出力する。
実施例4の方法で署名生成を実施した場合には、ステップ6202、ステップ6204〜ステップ6206を実行し、署名値としてxを出力する。
署名生成後処理プログラムPROG5(7014)は、実施例1の方法で署名生成を実施した場合には署名生成手順におけるステップ3205を実行し、署名データとしてWを出力する。
実施例2の方法で署名生成を実施した場合には、ステップ4207を実行し、署名データとしてWを出力する。
実施例3の方法で署名生成を実施した場合には、ステップ5207を実行し、署名データとしてWを出力する。
実施例4の方法で署名生成を実施した場合には、ステップ6207を実行し、署名データとしてWを出力する。
図16は回線8001で接続された装置A8002が装置B8003の正当性を認証することを目的としたしステム構成を示すものである。装置A8002は内部にCPU8004、メモリ8005、インターフェース8006を装備している。装置A8002のメモリ8005には乱数生成プログラムPROG6(8007)と署名検証プログラムPROG2(1017)と署名検証鍵K1018が保存されている。
装置B8003は内部にCPU8008、メモリ8009、インターフェース8010を装備している。装置B8003のメモリ8009には署名生成プログラムPROG1(1009)と署名生成鍵S1010が保存されている。
装置A8002は装置B8003の正当性を認証する場合、乱数生成プログラムPROG6(8007)を実行し、乱数8011を生成し、インターフェース8006を通して装置B8003に送信する。
装置B8003はインターフェース8010を通して受信したあと、署名生成プログラムPROG1(1009)を実行し、受信した乱数8011に対する署名データ8012を作成し、再びインターフェース8010を通して装置A8002に送信する。
装置A8002はインターフェース8006を通して受信したのち、署名検証プログラムPROG2(1017)を実行し、署名データ8012に含まれる署名値が、乱数8011を署名対象データとしたときの署名として正しいかどうか、署名検証鍵1018により検証する。署名が正しく生成されているならば装置B8003を正当であると判断し、正しく生成されていなければ装置B8003を正当でないと判断し、その結果をメモリ8005に保存する。
署名生成プログラムPROG1(1009)は装置B8003において、メモリ8009から読み出されて、CPU8008により実行され、装置B8003上に署名生成処理部を実現する。署名生成プログラムPROG1(1009)は、署名生成鍵S1010、署名対象データとしての乱数8011に対し、署名データ8013を出力する。
署名検証プログラムPROG2(1017)は装置A8002において、メモリ8004から読み出されCPU8004により実行され、装置A8002上に署名検証処理部を実現する。署名プログラムPROG2(1017)は署名検証鍵K1018、署名データ8012および署名対象データとしての乱数8011から検証結果を出力する。
乱数生成プログラムPROG6(8007)は装置A8002において、メモリ8005から読み出されCPU8004により実行され、装置A8002上に乱数生成処理部を実現する。乱数生成プログラムPROG6(8007)は乱数列を出力する。
本実施例における各計算は、CPUがメモリ内の各プログラムを実行することにより行われるものとして説明したが、プログラムだけではなく、いずれかがハードウエア化された演算装置であって、他の演算装置や、CPUと、データのやりとりを行うものであってもよい。
装置Aや装置BはコンピュータやICカード、ネットワークルータなどでもよい。また、各装置は回線で接続されているものとして説明したが、コンピュータとリーダライタを介してつながれるICカードや、インターネットで接続されるコンピュータであってもよい。
各実施例では、送信者と受信者が各々の装置を利用して通信を行うという一般形で述べたが、具体的には様々なシステムに適用される。
例えば、電子商取引システム、電子ショッピングシステムでは、送信者はユーザであり、送信者側装置はパソコンなどの計算機であり、受信者は小売店またはその従業者、受信者側装置は小売店側装置、具体的には当該店舗におけるパソコンなどの計算機となる。このとき、ユーザが注文した商品等の注文書に対して本実施例による方法で署名を生成し、注文書と署名データが小売店側装置に送信される。
また、電子メールシステムでは、各々の装置はパソコンなどの計算機であり、送信者のメッセージまたはメッセージに対して本実施例による方法で署名を生成し、メッセージと署名データが受信者の計算機に送信される。
実施例1〜4のシステム構成を示す図である。 各実施例の署名生成処理の概略手順を示す図である。 各実施例の署名検証処理の概略手順を示す図である。 実施例1で用いる署名生成鍵と署名検証鍵の生成手順を示す図である。 実施例1の署名生成処理の詳細を示す図である。 実施例1の署名検証処理の詳細を示す図である。 実施例1の署名生成処理の一部の詳細を示す図である。 実施例2で用いる署名生成鍵と署名検証鍵の生成手順を示す図である。 実施例2の署名生成処理の詳細を示す図である。 実施例2の署名検証処理の詳細を示す図である。 実施例3の署名生成処理の詳細を示す図である。 実施例3の署名検証処理の詳細を示す図である。 実施例4の署名生成処理の詳細を示す図である。 実施例4の署名検証処理の詳細を示す図である。 実施例5のシステム構成を示す図である。 実施例6のシステム構成を示す図である。
符号の説明
1001、7001:ネットワーク
1009:署名生成プログラムPROG1
1010:署名生成鍵 S
1011:データM
1017:署名検証プログラムPROG2
1018:署名検証鍵 K
7018:署名検証プログラムPROG4
1002、1003、7002、7003:コンピュータ
1004、1012、7006、7014、7018、8004、8008:CPU
1005、1013、7007、7016、7020、8005、8009:メモリ
1006、1014、7008、7021:ネットワークインターフェース
1007、1015、7010、7022:ディスプレイ
1008、1016、7011、7023:キーボード
7004:ICカード
7005:ICカードリーダライタ
7009、7017、8006、8010:インターフェース
8001:回線
8002、8003:装置

Claims (8)

  1. 第一のCPUと第一のメモリと第一のネットワークインターフェースとを備えた第一のコンピュータ上において、前記第一のCPUが前記第一のメモリに保存された署名生成プログラムを実行することにより実現される署名生成処理部を備える署名生成装置が、電子化されたデータを入力として署名データを生成し、第二のCPUと第二のメモリと第二のネットワークインターフェースとを備えた第二のコンピュータ上において、前記第二のCPUが前記第二のメモリに保存された署名検証プログラムを実行することにより実現される署名検証処理部を備える署名検証装置が電子化されたデータと前記署名データとを入力として前記署名データを検証するディジタル署名システムにおいて、
    pを、9を法として2または5または8と合同な素数とし、
    qを、9を法として4または7と合同な素数とし、
    前記素数pと、前記素数qと、N=p qなるNと、圧縮関数Hと、前記素数qを法とした3乗非剰余数aと、が署名生成鍵として、前記署名生成装置の前記第一のメモリに格納され、
    前記Nと、前記圧縮関数Hと、前記3乗非剰余数aと、が署名検証鍵として、前記署名検証装置の前記第二のメモリに格納されており、
    前記署名生成装置の前記署名生成処理部は、
    電子化されたデータMを入力として受け付け、
    前記第一のメモリから、前記p,前記qを読み出し、
    前記データMについて、w =H(M)なる圧縮関数値w を計算し、
    前記w 、a*w 、a *w のうち前記qを法とした3乗剰余であるものをyとし、
    前記Nを法とした前記yの3乗根xを計算して前記データMに対する署名データとし、
    生成された前記署名データxと前記データMとを、前記第一のネットワークインターフェースを介して、前記署名検証装置に送信し、
    前記署名検証装置の前記署名検証処理部は、
    前記署名データxと前記データMとを、前記第二のネットワークインターフェースを介して、前記署名生成装置から受信し、
    前記Nと、前記圧縮関数Hと、前記aとを、前記第二のメモリから読み出し、
    受信した前記データMに対し、w’=H(M)なる圧縮関数値w’を計算し、
    前記Nを法として、前記署名データxに対し、y’=x なるy’を計算し、
    y’がw’、a*w’、a *w’のうちいずれか一つと一致するとき、前記署名データxを前記データMに対する正当な署名と判定し、
    一致しないとき、前記署名データxを前記データMに対する正当でない署名と判定する
    ことを特徴とするディジタル署名システム。
  2. 請求項1に記載のディジタル署名システムにおいて、
    前記署名生成処理部は、
    前記w に対し、
    qが、9を法として4と合同ならばζ=a (q−1)/3 mod q、B=(2*q−8)/9とし、
    qが、9を法として7と合同ならばζ=a (2*(q−1))/3 mod q、B=(q−7)/9とし、
    b=a B+1 mod q、z=1/p mod qなるb、zを計算し、
    v=w mod q、s=v mod q、h=s*v mod q、α=s*h mod qなるv、s、h、αを計算し、
    αが、qを法として1と異なるならばh=b*h mod q、W =w *a mod Nなるh、W を計算し、
    αが、qを法としてζと異なるならばh=b*h mod q、W =a*w mod Nなるh、W を計算し、
    C=(2*p−4)/3とし、u=W mod p、d=u mod p、g=u*d mod p、η=γ*d mod p、なるu、d、g、ηを計算し、
    e=g+p*((h−g)*z mod q)なるeを計算し、
    x=e+η*(W −e )mod Nとする
    ことを特徴とするディジタル署名システム。
  3. 第一のCPUと第一のメモリと第一のネットワークインターフェースとを備えた第一のコンピュータ上において、前記第一のCPUが前記第一のメモリに保存された署名生成プログラムを実行することにより実現される署名生成処理部を備える署名生成装置が、電子化されたデータを入力として署名データを生成し、第二のCPUと第二のメモリと第二のネットワークインターフェースとを備えた第二のコンピュータ上において、前記第二のCPUが前記第二のメモリに保存された署名検証プログラムを実行することにより実現される署名検証処理部を備える署名検証装置が電子化されたデータと前記署名データとを入力として前記署名データを検証するディジタル署名システムにおいて、
    pを、9を法として2または5または8と合同な素数とし、
    qを、9を法として4または7と合同な素数とし、
    前記素数pと、前記素数qと、N=p qなるNと、圧縮関数HとGと、前記素数qを法とした3乗非剰余数aと、が署名生成鍵として、前記署名生成装置の前記第一のメモリに格納され、
    前記Nと、前記圧縮関数HとGと、前記3乗非剰余数aと、が署名検証鍵として、前記署名検証装置の前記第二のメモリに格納されており、
    前記署名生成処理部は、
    電子化されたデータMを入力として受け付け、
    前記第一のメモリから、前記p,前記qを読み出し、
    前記データMについて、
    =H(M)||G(H(M))なる連結データw を計算し、
    前記w 、a*w 、a *w のうち前記qを法とした3乗剰余であるものをyとし、
    前記Nを法とした前記yの3乗根xを計算して前記データMに対する署名データとし、
    生成された前記署名データxと前記データMとを、前記第一のネットワークインターフェースを介して、前記署名検証装置に送信し、
    前記署名検証装置の前記署名検証処理部は、
    前記署名データxと前記データMとを、前記第二のネットワークインターフェースを介して、前記署名生成装置から受信し、
    前記Nと、前記圧縮関数HとGと、前記aとを、前記第二のメモリから読み出し、
    受信した前記データMに対し、
    w’=H(M)||G(H(M))なる連結データw’を計算し、
    前記Nを法として、前記署名データxに対し、y’=x なるy’を計算し、
    y’がw’、a*w’、a *w’のうちいずれか一つと一致するとき、前記署名データxを前記データMに対する正当な署名と判定し、
    一致しないとき、前記署名データxを前記データMに対する正当でない署名と判定する
    ことを特徴とするディジタル署名システム。
  4. 請求項3に記載のディジタル署名システムにおいて、
    前記署名生成処理部は、
    前記w に対し、
    qが、9を法として4と合同ならばζ=a (q−1)/3 mod q、B=(2*q−8)/9とし、
    qが、9を法として7と合同ならばζ=a (2*(q−1))/3 mod q、B=(q−7)/9とし、
    b=a B+1 mod q、z=1/p mod qなるb、zを計算し、
    v=w mod q、s=v mod q、h=s*v mod q、α=s*h mod qなるv、s、h、αを計算し、
    αが、qを法として1と異なるならばh=b*h mod q、W =w *a mod Nなるh、W を計算し、
    αが、qを法としてζと異なるならばh=b*h mod q、W =a*w mod Nなるh、W を計算し、
    C=(2*p−4)/3とし、u=W mod p、d=u mod p、g=u*d mod p、η=γ*d mod p、なるu、d、g、ηを計算し、
    e=g+p*((h−g)*z mod q)なるeを計算し、
    x=e+η*(W −e )mod Nとする
    ことを特徴とするディジタル署名システム。
  5. 第一のCPUと第一のメモリと第一のネットワークインターフェースとを備えた第一のコンピュータ上において、前記第一のCPUが前記第一のメモリに保存された署名生成プログラムを実行することにより実現される署名生成処理部を備える署名生成装置が、電子化されたデータを入力として署名データを生成し、第二のCPUと第二のメモリと第二のネットワークインターフェースとを備えた第二のコンピュータ上において、前記第二のCPUが前記第二のメモリに保存された署名検証プログラムを実行することにより実現される署名検証処理部を備える署名検証装置が電子化されたデータと前記署名データとを入力として前記署名データを検証するディジタル署名システムにおいて、
    pを、9を法として2または5または8と合同な素数とし、
    qを、9を法として4または7と合同な素数とし、
    前記素数p、ならびに、前記素数q、ならびに、N=p qなるN、ならびに、圧縮関数HとGであって、それぞれの出力長の和がN=p qなるNの長さに等しいもの、ならびに、前記素数qを法とした3乗非剰余数a、が署名生成鍵として、前記署名生成装置の前記第一のメモリに格納され、
    前記Nと、前記圧縮関数HとGと、前記3乗非剰余数aと、が署名検証鍵として、前記署名検証装置の前記第二のメモリに格納されており、
    前記署名生成処理部は、
    電子化されたデータMを入力として受け付け、
    前記第一のメモリから、前記p,前記qを読み出し、
    ビット長が前記Gの出力長と同じ長さの前記データMについて、s=H(M)なる圧縮関数値sと、その圧縮関数値G(s)とを計算し、
    前記G(s)と前記データMとのビットごとの排他的論理和をtとし、
    =s||tなる連結データw を計算し、
    前記w 、a*w 、a *w のうち前記qを法とした3乗剰余であるものをyとし、
    前記Nを法とした前記yの3乗根xを計算して前記データMに対する署名データとし、
    生成された前記署名データxを、前記第一のネットワークインターフェースを介して、前記署名検証装置に送信し、
    前記署名検証装置の前記署名検証処理部は、
    前記Nと、前記圧縮関数HとGと、前記aとを、前記第二のメモリから読み出し、
    前記署名データxを、前記第二のネットワークインターフェースを介して、前記署名生成装置から受信し、
    前記Nを法として、受信した前記署名データxに対し、y’=x なるy’を計算し、
    i=1、2、3に対し、前記Nを法としてy =a *y’を計算し、
    を、上位からHの出力長と同じ長さのビット列s と残りのビット列t とに分割し、
    と圧縮関数値G(s )とのビットごとの排他的論理和M を計算し、
    i=1、2、3のうちいずれかにおいてs =H(M )が成り立つとき、そのiに対するM を回復された前記データMとし、前記署名データxを前記データMに対する正当な署名と判定し、
    成り立たないとき、前記署名データxを前記データMに対する正当でない署名と判定する
    ことを特徴とするディジタル署名システム。
  6. 請求項5に記載のディジタル署名システムにおいて、
    前記署名生成処理部は、
    前記w に対し、
    qが、9を法として4と合同ならばζ=a (q−1)/3 mod q、B=(2*q−8)/9とし、
    qが、9を法として7と合同ならばζ=a (2*(q−1))/3 mod q、B=(q−7)/9とし、
    b=a B+1 mod q、z=1/p mod qなるb、zを計算し、
    v=w mod q、s=v mod q、h=s*v mod q、α=s*h mod qなるv、s、h、αを計算し、
    αが、qを法として1と異なるならばh=b*h mod q、W =w *a mod Nなるh、W を計算し、
    αが、qを法としてζと異なるならばh=b*h mod q、W =a*w mod Nなるh、W を計算し、
    C=(2*p−4)/3とし、u=W mod p、d=u mod p、g=u*d mod p、η=γ*d mod p、なるu、d、g、ηを計算し、
    e=g+p*((h−g)*z mod q)eを計算し、
    x=e+η*(W −e )mod Nとする
    ことを特徴とするディジタル署名システム。
  7. 第一のCPUと第一のメモリと第一のネットワークインターフェースとを備えた第一のコンピュータ上において、前記第一のCPUが前記第一のメモリに保存された署名生成プログラムを実行することにより実現される署名生成処理部を備える署名生成装置が、電子化されたデータを入力として署名データを生成し、第二のCPUと第二のメモリと第二のネットワークインターフェースとを備えた第二のコンピュータ上において、前記第二のCPUが前記第二のメモリに保存された署名検証プログラムを実行することにより実現される署名検証処理部を備える署名検証装置が電子化されたデータと前記署名データとを入力として前記署名データを検証するディジタル署名システムにおいて、
    pを、9を法として2または5または8と合同な素数とし、
    qを、9を法として4または7と合同な素数とし、
    前記素数p、ならびに、前記素数q、ならびに、N=p qなるN、ならびに、圧縮関数H、ならびに、前記素数qを法とした3乗非剰余数a、ならびに、関数ψであって、前記Nを法とした可逆元と乱数を入力として持ち、その出力と入力の可逆元とのビットごとの排他的論理和が前記Nを法とした3乗剰余元となるもの、が署名生成鍵として、前記署名生成装置の前記第一のメモリに格納され、
    前記Nと、前記圧縮関数Hと、前記3乗非剰余数aと、前記関数ψと、が署名検証鍵として、前記署名検証装置の前記第二のメモリに格納されており、
    前記署名生成装置の前記署名生成処理部は、
    電子化されたデータMを入力として受け付け、
    前記第一のメモリから、前記p,前記qを読み出し、
    乱数rを生成し、
    前記データMについて、圧縮関数値H(M)を計算し、前記rと前記H(M)とからr’=ψ(r、H(M))なる関数値r’を計算し、
    y=H(M)||r’なる連結データyを計算し、
    前記Nを法とした前記yの3乗根xを計算してデータMに対する署名データとし、
    生成された前記署名データxと前記データMとを、前記第一のネットワークインターフェースを介して、前記署名検証装置に送信し、
    前記署名検証装置の前記署名検証処理部は、
    前記Nと、前記圧縮関数Hと、前記aと、前記関数ψとを、前記第二のメモリから読み出し、
    前記署名データxと前記データMとを、前記第二のネットワークインターフェースを介して、前記署名生成装置から受信し、
    受信した前記データMの圧縮関数値H(M)を計算し、
    前記Nを法として、前記署名データxに対し、y’=x なるy’を計算し、
    yを、上位からHの出力長と同じ長さのビット列w’と残りr’とに分割し、
    w’と圧縮関数値H(M)とが一致するとき、前記署名データxは前記データMに対する正当な署名と判定し、
    一致しないとき、前記署名データxを前記データMに対する正当でない署名と判定する
    ことを特徴とするディジタル署名システム。
  8. 請求項7に記載のディジタル署名システムにおいて、
    前記署名生成処理部は、
    前記圧縮関数値H(M)に対し、
    qが、9を法として4と合同ならばζ=a (q−1)/3 mod q、B=(2*q−8)/9とし、
    qが、9を法として7と合同ならばζ=a (2*(q−1))/3 mod q、B=(q−7)/9とし、
    b=a B+1 mod q、z=1/p mod qなるb、zを計算し、
    Z=(H(M)||0 ) mod qなるZを計算(ただし、0 はビット0がk個並ぶビット列)し、
    =H(M)||rなる連結データw を計算し、
    v=w mod q、s=v mod q、h=s*v mod q、α=s*h mod qなるv、s、h、αを計算し、
    αがqを法として、1と異なるならh=B*h mod q、w =H(M)||(h −Z mod q)なるh、w を計算し、
    αがqを法としてζと異なるならばh=b*h mod q、w =H(M)||(h −Z mod q)なるh、w を計算し、
    C=(2*p−4)/3とし、
    u=w mod p、d=u mod p、g=u*d mod p、η=γ*d mod p、なるu、d、g、ηを計算し、
    さらに、e=g+p*((h−g)*z mod q)eを計算し、
    x=e+η*(w −e )mod Nとする
    ことを特徴とするディジタル署名システム。
JP2003402397A 2003-12-02 2003-12-02 効率的ディジタル署名生成方法及び検証方法及び装置 Expired - Fee Related JP4474912B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003402397A JP4474912B2 (ja) 2003-12-02 2003-12-02 効率的ディジタル署名生成方法及び検証方法及び装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003402397A JP4474912B2 (ja) 2003-12-02 2003-12-02 効率的ディジタル署名生成方法及び検証方法及び装置

Publications (2)

Publication Number Publication Date
JP2005167525A JP2005167525A (ja) 2005-06-23
JP4474912B2 true JP4474912B2 (ja) 2010-06-09

Family

ID=34725968

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003402397A Expired - Fee Related JP4474912B2 (ja) 2003-12-02 2003-12-02 効率的ディジタル署名生成方法及び検証方法及び装置

Country Status (1)

Country Link
JP (1) JP4474912B2 (ja)

Also Published As

Publication number Publication date
JP2005167525A (ja) 2005-06-23

Similar Documents

Publication Publication Date Title
US8918647B1 (en) Authentication system
CN100583755C (zh) 使用同源来设计密码系统
US7688973B2 (en) Encryption apparatus, decryption apparatus, key generation apparatus, program, and method
US6259790B1 (en) Secret communication and authentication scheme based on public key cryptosystem using N-adic expansion
US8046582B2 (en) Digital signature generation apparatus, digital signature verification apparatus, and key generation apparatus
US7912216B2 (en) Elliptic curve cryptosystem optimization using two phase key generation
US20080133912A1 (en) Authentication System, Authentication Method, Attesting Device, Verification Device, Their Programs, and Recording Medium
US20100166174A1 (en) Hash functions using elliptic curve cryptography
US8913741B2 (en) Method for performing a cryptographic task in an electronic hardware component
US8139765B2 (en) Elliptical polynomial-based message authentication code
JP2009229615A (ja) データ処理システム及びデータ処理方法
JP7328969B2 (ja) 暗号システムおよび方法
US20220224532A1 (en) Systems and Methods for Hiding Private Cryptographic Keys in Multimedia Files
JP3626340B2 (ja) 暗号装置及び暗号鍵生成方法、並びに素数生成装置及び素数生成方法
JP4474912B2 (ja) 効率的ディジタル署名生成方法及び検証方法及び装置
JP7273742B2 (ja) 暗号化装置、復号装置、暗号方法、復号方法、暗号化プログラム及び復号プログラム
JP2011040932A (ja) 認証付き暗号化装置、認証付き暗号化方法、検証付き復号装置、検証付き復号方法、暗号システム、プログラム、記録媒体
Kwon et al. Practical digital signature generation using biometrics
Buchmann et al. Post-quantum signatures
Li et al. A verifiable multi-secret sharing scheme based on short integer solution
WO2011033642A1 (ja) 署名生成装置及び署名検証装置
Kaminaga et al. Crashing modulus attack on modular squaring for rabin cryptosystem
Singh Code-based cryptography: A comparative study of key sizes
JP2007151073A (ja) 鍵生成プログラム
US20220200797A1 (en) Cryptographic System and Method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051227

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20060424

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090519

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090721

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100216

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100301

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130319

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130319

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees