JP4814755B2 - 署名生成装置、署名検証装置、それらの方法及びプログラム - Google Patents
署名生成装置、署名検証装置、それらの方法及びプログラム Download PDFInfo
- Publication number
- JP4814755B2 JP4814755B2 JP2006295599A JP2006295599A JP4814755B2 JP 4814755 B2 JP4814755 B2 JP 4814755B2 JP 2006295599 A JP2006295599 A JP 2006295599A JP 2006295599 A JP2006295599 A JP 2006295599A JP 4814755 B2 JP4814755 B2 JP 4814755B2
- Authority
- JP
- Japan
- Prior art keywords
- value
- signature
- bit
- hash
- unit
- 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
Links
Images
Description
P:楕円曲線E上の点からなる巡回群の元
h∈{0,1}L,q,L:署名生成装置と署名検証装置とでの共用パラメータ
x:署名生成装置の秘密鍵
Y:秘密鍵xに対応する公開鍵(Y=x・P∈E)
m:署名対象のメッセージ
F0:{0,1}*→{0,1}L+M(出力ビット長可変)
F1:{0,1}*→Zq
(s-1) メッセージm∈{0,1}N+Mをリカバリメッセージmrec∈{0,1}Mとクリアメッセージmclr∈{0,1}Nとに分割
(s-2) 乱数k∈{1,...,n−1}を選択
(s-3) R=k・P=(R1,R2)∈E
(s-4) Π=F0(R1)∈{0,1}L+M (δ|εはδとεとのビット結合)
(s-5) d=h|mrec∈{0,1}L+M
(s-6) r=d(+)Π∈{0,1}L+M (δ(+)εはδとεとの排他的論理和)
(s-7) t=F1(r|mclr)∈Zq
(s-8) s=(k-x・t) mod q
(s-9) σ=(r,s),mclr出力
(v-1) σ'=(r',s'),mclr'入力
(v-2) t'=F1(r'|mclr')∈Zq
(v-3) R'=s'・P+t'・Y=(R1',R2')∈E
(v-4) Π'=F0(R1') ∈{0,1}L+M'(M'はr'のビット長からLを引いた値)
(v-5) d'=r'(+)Π' ∈{0,1}L+M'
(v-6) d'の上位Lビットh'と下位M’ビットmrec'とを抽出
(v-7) h'=hであれば検証合格。リカバリメッセージとしてmrec'出力
"ECPV(Elliptic Curve Pintsov-Vanstone message recovery signature)", INTERNATIONAL STANDARD ISO/IEC 9796-3, pp.27-29.
署名σ=(s,r)とクリアメッセージmclrとを入手した攻撃者は、署名σが有するrのビットをr=r1|m2clrとなるr1とm2clrとに分割することができる。さらに、この攻撃者は、このように分割したm2clrと入手したクリアメッセージmclrとをビット結合してm1clr=m2clr|mclrを生成できる。
(s-7) t=F1(r|mclr)= F1(r1|m1clr) …(1)
と等しくなる。そして、sは
(s-8) s=(k-x・t) mod q …(2)
によって求めているのだから、正規のrとmclrとの組に対するsと、攻撃者が抽出した不正なr1とm1clrに対するsは等しくなる。すなわち、入手した正規な署名σ=(s,r)とクリアメッセージmclrとを入手した攻撃者は、不正なクリアメッセージm1clrに対する署名(r1,s)を生成できる。
(v-2) t'=F1(r'|mclr')=F1(r1'|m1clr')=t ((1)より)
(v-3) R'=s'・P+t'・Y= s・P+t・Y=(R1,R2)∈E
(v-4) Π'=F0(R1')=F0(R1)∈{0,1}L+M'(M'はr'のビット長からLを引いた値)
(v-5) d'=r'(+)Π'=r1(+)Π'∈{0,1}L+M'
(v-6) d'の上位Lビットh'と下位M’ビットmrec'とを抽出。ここで、攻撃者がr1を生成する際に正規のrから除去したm2clr部分(r=r1|m2clr)のビット数がリカバリメッセージmrecのビット数M以下であり、なおかつ、関数F0(R1)の出力値のビット数をL+MからL+M’に変化させた場合にF0(R1)の上位Lビットが変化しないならば、攻撃者によってrからr1への改変が行われても、d'の上位Lビットh'は影響をうけない。すなわちh'=hとなり、検証に合格する。
第1の本発明では上記課題を解決するために、署名生成装置が以下のように署名生成を行う。
まず、整数の秘密鍵xを署名生成装置の第1記憶部に格納し、Mビット(M≧1)のリカバリメッセージmrec∈{0,1}Mを第2記憶部に格納し、Nビット(N≧1)のクリアメッセージmclr∈{0,1}Nを第3記憶部に格納する。次に、署名生成装置の任意値生成部が、整数の任意値kを生成し、群演算部が、位数qの巡回群をGとし、当該巡回群Gの生成元をgとした場合におけるR=gk∈Gを算出し、当該演算結果Rを出力する。なお、「gk∈G」とは、巡回群Gをなす演算をgについてk回実行することを意味する(詳細は後述)。次に、署名生成装置の第1ハッシュ演算部が、出力ビット長がL+Mビット(Lは署名検証装置と共有される正の整数)のハッシュ関数H0:{0,1}*→{0,1}L+Mを、演算結果Rに依存して定まる値βに作用させ、その演算結果であるL+Mビットのハッシュ値Π=H0(β)∈{0,1}L+Mを出力する。なお、「関数εをδに作用させる」とは、「δ又はδを特定するための値を関数εに代入する」ことを意味する。さらに、署名生成装置のビット結合部が、署名検証装置との共有値h∈{0,1}Lを第1ビット位置に配置し、リカバリメッセージmrec∈{0,1}Mを第2ビット位置に配置したL+Mビットのビット結合値d=h|mrec∈{0,1}L+Mを算出し、当該ビット結合値dを出力する。なお、第1ビット位置は必ずしも連続したLビットの位置である必要はなく、離散的に配置された合計Lビットの位置でもよい。同様に、第2ビット位置も必ずしも連続したMビットの位置である必要はなく、離散的に配置された合計Mビットの位置でもよい。ただし、「第1ビット位置」及び「第2ビット位置」がどのビット位置であるかについては、署名生成装置と署名検証装置とで統一しておく。また、署名生成装置の排他的論理和演算部が、ハッシュ値Πとビット結合値dとの排他的論理和r=Π(+)d∈{0,1}L+Mを算出し、当該排他的論理和値rを出力する。なお、(+)は排他的論理和演算子であり、δ(+)εはδとεとの排他的論理和である。さらに、署名生成装置の第3ハッシュ演算部が、出力値が整数のハッシュ関数H3:{0,1}*→Zを、排他的論理和値rとクリアメッセージmclrとに依存して定まる値γに作用させ、その演算結果であるハッシュ値t=H3(γ)∈Zを出力する。そして、署名生成装置の整数演算部が、s=k−t・x∈Zを算出し、当該演算結果sを出力し、署名出力部が、署名σ=(r,s)とクリアメッセージmclrとを出力する。なお、値β及び値γの少なくとも一方の値は、さらに、リカバリメッセージmrecのビット長Mに依存して決まる値である。
まず、位数qの巡回群をGとし、当該巡回群Gの生成元をgとした場合における、署名生成装置の秘密鍵x∈Zに対応する公開鍵y=gx∈Gを署名検証装置の第1記憶部に格納する。そして、署名σ’=(r’,s’)とクリアメッセージmclr’とが署名検証装置の署名入力部に入力され、第2記憶部に格納される。また、署名検証装置のビット長抽出部が、署名σ’のr’のビット長から値L(Lは署名生成装置と共有される正の整数)を減じた値M’を、署名σ’に対応するリカバリメッセージmrec’のビット長M’として抽出し、第3記憶部に格納する。次に、署名検証装置の第1ハッシュ演算部が、整数のハッシュ値を出力するハッシュ関数H3:{0,1}*→Zを、署名σ’が有するr’とクリアメッセージmclr’とに依存して定まる値γ’に作用させ、その演算結果であるハッシュ値t’=H3(γ’)∈Zを出力する。また、署名検証装置の群演算部が、R’=gs’・yt’∈Gの演算を行い、その演算結果R’を出力する。なお、「gs’・yt’∈G」とは、巡回群Gをなす演算をgについてs’回施し、当該演算をyについてt’回施し、それらの各演算結果に対して当該演算を施す演算を意味する(詳細は後述)。また、署名検証装置の第2ハッシュ演算部が、出力ビット長がL+M’ビットのハッシュ関数H0:{0,1}*→{0,1}L+M’を、演算結果R’に依存して定まる値β’に作用させ、その演算結果であるL+M’ビットのハッシュ値Π’=H0(β’)∈{0,1}L+M’を出力する。さらに、署名検証装置の排他的論理和演算部が、ハッシュ値Π’と、署名σ’が有するr’との排他的論理和d’=Π’(+)r’∈{0,1}L+M’を算出し、当該排他的論理和値d’を出力する。そして、署名検証装置の比較部が、署名生成装置との共有値h∈{0,1}Lと、排他的論理和値d’の第1ビット位置のLビットの値h’∈{0,1}Lとを比較し、h’=hであることを条件に、検証が成功である旨の情報を出力する。なお、値β’及び値γ’の少なくとも一方の値は、さらに、リカバリメッセージmrec’のビット長M’に依存して決まる値である。また、署名生成装置で用いる値β,γのビット構成と、署名検証装置で用いる値β’,γ’のビット構成とが、それぞれ同一である必要がある。例えば、署名生成装置において、rを上位L+Mビットとし、mclrをその次のNビットとし、その後のLビットをMとして結合した2L+M+Nビットの値をγとする場合、署名検証装置においても、r’を上位L+M’ビットとし、mclr’をその次のN’ビットとし、その後のLビットをM’として結合した2L+M’+Nビットの値をγ’としなければならない(詳細は後述)。
ここで、署名検証装置に入力された署名σ’のr’が前述の攻撃方法によって生成されたr1(r=r1|m2clr)であった場合、そのビット長M’は正当なr∈{0,1}L+Mのビット長Mよりも短い(M’<M)。この場合、値β’及び値γ’の少なくとも一方の値は、署名検証装置が抽出したビット長M’に依存して決まる値なのだから、β=β’及びγ=γ’の少なくとも一方が不成立となる。
β≠β’となる場合、Π’=H0(β’)≠H0(β)=Πとなって、d’=Π’(+)r’≠dとなるため、d’の第1ビット位置の値h’は、dの第1ビット位置の値hと相違し(h’≠h)、署名検証失敗となる。また、γ≠γ’となる場合もt’=H3(γ’)≠H3(γ)=tとなるため、R’=gs’・yt’≠gk=Rとなり、R’に依存して定まる値β’はβ’≠βとなり、同様に署名検証失敗となる。これにより、前述の攻撃方法によって生成された不正な署名を高い確率で検出することができる。
第2の本発明では上記課題を解決するために、署名生成装置が以下のように署名生成を行う。
まず、整数の秘密鍵xを署名生成装置の第1記憶部に格納し、Mビット(M≧1)のリカバリメッセージmrec∈{0,1}Mを第2記憶部に格納し、Nビット(N≧1)のクリアメッセージmclr∈{0,1}Nを第3記憶部に格納する。次に、署名生成装置の任意値生成部が、整数の任意値kを生成し、群演算部が、位数qの巡回群をGとし、当該巡回群Gの生成元をgとした場合におけるR=gk∈Gを算出し、当該演算結果Rを出力する。また、署名生成装置の第1ハッシュ演算部が、出力ビット長がL+Mビット(Lは署名検証装置と共有される正の整数)のハッシュ関数H0:{0,1}*→{0,1}L+Mを、演算結果Rに依存して定まる値βに作用させ、その演算結果であるL+Mビットのハッシュ値Π=H0(β)∈{0,1}L+Mを出力する。さらに、署名生成装置のビット結合部が、署名検証装置との共有値h∈{0,1}Lを第1ビット位置に配置し、リカバリメッセージmrec∈{0,1}Mを第2ビット位置に配置したL+Mビットのビット結合値d=h|mrec∈{0,1}L+Mを算出し、当該ビット結合値dを出力する。そして、署名生成装置の排他的論理和演算部が、ハッシュ値Πとビット結合値dとの排他的論理和r=Π(+)d∈{0,1}L+Mを算出し、当該排他的論理和値rを出力し、第3ハッシュ演算部が、出力値が整数のハッシュ関数H3:{0,1}*→Zを、排他的論理和値rとクリアメッセージmclrとに依存して定まる値γに作用させ、その演算結果であるハッシュ値t=H3(γ)∈Zを出力する。そして、署名生成装置の整数演算部が、s=k−t・x∈Zを算出し、当該演算結果sを出力し、署名出力部が、署名σ=(r,s)とクリアメッセージmclrとを出力する。なお、値β及び値γの少なくとも一方の値は、さらに、クリアメッセージmclrのビット長Nに依存して決まる値である。
まず、位数qの巡回群をGとし、当該巡回群Gの生成元をgとした場合における、署名生成装置の秘密鍵x∈Zに対応する公開鍵y=gx∈Gを署名検証装置の第1記憶部に格納する。そして、署名σ’=(r’,s’)とクリアメッセージmclr’とが署名検証装置の署名入力部に入力され、第2記憶部に格納される。また、署名σ’に対応するリカバリメッセージmrec’のビット長M’を署名検証装置の第3記憶部に格納し、クリアメッセージmclr’のビット長N’を第4記憶部に格納する。なお、署名検証装置がビット長M’の値を取得する方法については後述する。また、署名検証装置の第1ハッシュ演算部が、整数のハッシュ値を出力するハッシュ関数H3:{0,1}*→Zを、署名σ’が有するr’とクリアメッセージmclr’とに依存して定まる値γ’に作用させ、その演算結果であるハッシュ値t’=H3(γ’)∈Zを出力する。さらに、署名検証装置の群演算部が、R’=gs’・yt’∈Gの演算を行い、その演算結果R’を出力し、第2ハッシュ演算部が、出力ビット長がL+M’ビット(Lは署名生成装置と共有される正の整数)のハッシュ関数H0:{0,1}*→{0,1}L+M’を、演算結果R’に依存して定まる値β’に作用させ、その演算結果であるL+M’ビットのハッシュ値Π’=H0(β’)∈{0,1}L+M’を出力する。また、署名検証装置の排他的論理和演算部が、ハッシュ値Π’と、署名σ’が有するr’との排他的論理和d’=Π’(+)r’∈{0,1}L+M’を算出し、当該排他的論理和値d’を出力する。そして、署名検証装置の比較部が、署名生成装置との共有値h∈{0,1}Lと、排他的論理和値d’の第1ビット位置のLビットの値h’∈{0,1}Lとを比較し、h’=hであることを条件に、検証が成功である旨の情報を出力する。なお、値β’及び値γ’の少なくとも一方の値は、さらに、クリアメッセージmclr’のビット長N’に依存して決まる値である。また、署名生成装置で用いる値β,γのビット構成と、署名検証装置で用いる値β’,γ’のビット構成とが、それぞれ同一である必要がある(詳細は後述)。
ここで、署名検証装置に入力されたクリアメッセージmclr’が前述の攻撃方法によって生成されたm1clr(m1clr=m2clr|mclr)であった場合、そのビット長N’は正当なクリアメッセージmclr∈{0,1}Nのビット長Nよりも長い(N’>N)。この場合、値β’及び値γ’の少なくとも一方の値は、クリアメッセージmclr’のビット長N’に依存して決まる値なのだから、β=β’及びγ=γ’の少なくとも一方が不成立となる。その結果、第1の本発明と同様に、前述の攻撃方法によって生成された不正な署名を高い確率で検出することができる。
第3の本発明では上記課題を解決するために、署名生成装置が以下のように署名生成を行う。
まず、整数の秘密鍵xが第1記憶部に格納され、Mビット(M≧1)のリカバリメッセージmrec∈{0,1}Mが第2記憶部に格納され、Nビット(N≧1)のクリアメッセージmclr∈{0,1}Nが第3記憶部に格納される。そして、署名生成装置の任意値生成部が、整数の任意値kを生成し、群演算部が、位数qの巡回群をGとし、当該巡回群Gの生成元をgとした場合におけるR=gk∈Gを算出し、当該演算結果Rを出力する。
次に、署名生成装置の第1ハッシュ演算部が、出力ビット長がL+Mビット(Lは署名検証装置と共有される正の整数)のハッシュ関数H0:{0,1}*→{0,1}L+Mを、演算結果Rに依存して定まる値βに作用させ、その演算結果であるL+Mビットのハッシュ値Π=H0(β)∈{0,1}L+Mを出力する。次に、署名生成装置の第2ハッシュ演算部が、出力ビット長がLビットのハッシュ関数H1:{0,1}*→{0,1}Lを、リカバリメッセージmrecに依存して定まる値αに作用させ、その演算結果であるLビットのハッシュ値h=H1(α)∈{0,1}Lを出力する。また、署名生成装置のビット結合部が、ハッシュ値h∈{0,1}Lを第1ビット位置に配置し、リカバリメッセージmrec∈{0,1}Mを第2ビット位置に配置したL+Mビットのビット結合値d=h|mrec∈{0,1}L+Mを算出し、当該ビット結合値dを出力する。次に、署名生成装置の排他的論理和演算部が、ハッシュ値Πとビット結合値dとの排他的論理和r=Π(+)d∈{0,1}L+Mを算出し、当該排他的論理和値rを出力し、第3ハッシュ演算部が、出力値が整数のハッシュ関数H3:{0,1}*→Zを、排他的論理和値rとクリアメッセージmclrとに依存して定まる値γに作用させ、その演算結果であるハッシュ値t=H3(γ)∈Zを出力する。その後、整数演算部が、s=k−t・x∈Zを算出し、当該演算結果sを出力し、署名出力部が、署名σ=(r,s)とクリアメッセージmclrとを出力する。
まず、署名検証装置の第1記憶部が、位数qの巡回群をGとし、当該巡回群Gの生成元をgとした場合における、署名生成装置の秘密鍵x∈Zに対応する公開鍵y=gx∈Gを格納する。そして、署名σ’=(r’,s’)とクリアメッセージmclr’とが署名検証装置の署名入力部に入力され、第2記憶部に格納される。また、署名σ’に対応するリカバリメッセージmrec’のビット長M’を第3記憶部に格納する。なお、署名検証装置がビット長M’の値を取得する方法については後述する。そして、署名検証装置の第1ハッシュ演算部が、整数のハッシュ値を出力するハッシュ関数H3:{0,1}*→Zを、署名σ’が有するr’とクリアメッセージmclrとに依存して定まる値γ’に作用させ、その演算結果であるハッシュ値t’=H3(γ’)∈Zを出力する。さらに、署名検証装置の群演算部が、R’=gs’・yt’∈Gの演算を行い、その演算結果R’を出力する。次に、第2ハッシュ演算部が、出力ビット長がL+M’ビット(Lは署名生成装置と共有される正の整数)のハッシュ関数H0:{0,1}*→{0,1}L+M’を、演算結果R’に依存して定まる値β’に作用させ、その演算結果であるL+M’ビットのハッシュ値Π’=H0(β’)∈{0,1}L+M’を出力する。さらに、排他的論理和演算部が、ハッシュ値Π’と、署名σ’が有するr’との排他的論理和d’=Π’(+)r’∈{0,1}L+M’を算出し、当該排他的論理和値d’を出力する。また、署名検証装置の第3ハッシュ演算部が、出力ビット長がLビットのハッシュ関数H1:{0,1}*→{0,1}Lを、排他的論理和値d’の第2ビット位置のM’ビットの値mrec’∈{0,1}M’に依存して定まる値α’に作用させ、その演算結果であるLビットのハッシュ値H1(α’)∈{0,1}Lを出力する。そして、署名検証装置の比較部が、排他的論理和値d’の第1ビット位置のLビットの値h’∈{0,1}Lと、ハッシュ値H1(α’)とを比較し、h’=H1(α’)であることを条件に、検証が成功である旨の情報を出力する。
ただし、署名生成装置で用いる値α,β,γのビット構成と、署名検証装置で用いる値α’,β’,γ’のビット構成とが、それぞれ同一である必要がある。例えば、署名生成装置において、rを上位L+Mビットとし、mclrを下位Nビットとして結合したL+M+Nビットの値をγとする場合、署名検証装置においても、r’を上位L+M’ビットとし、mclr’を下位N’ビットとして結合したL+M’+N’ビットの値をγ’としなければならない(詳細は後述)。
第4の本発明では上記課題を解決するために、署名生成装置が以下のように署名生成を行う。
まず、整数の秘密鍵xを署名生成装置の第1記憶部に格納し、Mビット(M≧1)のリカバリメッセージmrec∈{0,1}Mを第2記憶部に格納し、Nビット(N≧1)のクリアメッセージmclr∈{0,1}Nを第3記憶部に格納する。また、署名生成装置の任意値生成部が、整数の任意値kを生成し、群演算部が、位数qの巡回群をGとし、当該巡回群Gの生成元をgとした場合におけるR=gk∈Gを算出し、当該演算結果Rを出力する。次に、署名生成装置の第1ハッシュ演算部が、出力ビット長がL+Mビット(Lは署名検証装置と共有される正の整数)のハッシュ関数H0:{0,1}*→{0,1}L+Mを、演算結果Rに依存して定まる値βに作用させ、その演算結果であるL+Mビットのハッシュ値Π=H0(β)∈{0,1}L+Mを出力する。また、署名生成装置の第2ハッシュ演算部が、出力ビット長がLビットのハッシュ関数H1:{0,1}*→{0,1}Lを、クリアメッセージmclrに依存して定まる値αに作用させ、その演算結果であるLビットのハッシュ値h=H1(α)∈{0,1}Lを出力する。次に、署名生成装置のビット結合部が、ハッシュ値h∈{0,1}Lを第1ビット位置に配置し、リカバリメッセージmrec∈{0,1}Mを第2ビット位置に配置したL+Mビットのビット結合値d=h|mrec∈{0,1}L+Mを算出し、当該ビット結合値dを出力する。そして、署名生成装置の排他的論理和演算部が、ハッシュ値Πとビット結合値dとの排他的論理和r=Π(+)d∈{0,1}L+Mを算出し、当該排他的論理和値rを出力し、第3ハッシュ演算部が、出力値が整数のハッシュ関数H3:{0,1}*→Zを、排他的論理和値rとクリアメッセージmclrとに依存して定まる値γに作用させ、その演算結果であるハッシュ値t=H3(γ)∈Zを出力する。そして、署名生成装置の整数演算部が、s=k−t・x∈Zを算出し、当該演算結果sを出力し、署名出力部が、署名σ=(r,s)とクリアメッセージmclrとを出力する。
まず、位数qの巡回群をGとし、当該巡回群Gの生成元をgとした場合における、署名生成装置の秘密鍵x∈Zに対応する公開鍵y=gx∈Gを署名検証装置の第1記憶部に格納する。また、署名σ’=(r’,s’)とクリアメッセージmclr’とが署名検証装置の署名入力部に入力され、第2記憶部に格納される。さらに、署名σ’に対応するリカバリメッセージmrec’のビット長M’を第3記憶部に格納する。次に、署名検証装置の第1ハッシュ演算部が、整数のハッシュ値を出力するハッシュ関数H3:{0,1}*→Zを、署名σ’が有するr’とクリアメッセージmclr’とに依存して定まる値γ’に作用させ、その演算結果であるハッシュ値t’=H3(γ’)∈Zを出力する。さらに、群演算部が、R’=gs’・yt’∈Gの演算を行い、その演算結果R’を出力する。そして、第2ハッシュ演算部が、出力ビット長がL+M’ビット(Lは署名生成装置と共有される正の整数)のハッシュ関数H0:{0,1}*→{0,1}L+M’を、演算結果R’に依存して定まる値β’に作用させ、その演算結果であるL+M’ビットのハッシュ値Π’=H0(β’)∈{0,1}L+M’を出力し、署名検証装置の排他的論理和演算部が、ハッシュ値Π’と、署名σ’が有するr’との排他的論理和d’=Π’(+)r’∈{0,1}L+M’を算出し、当該排他的論理和値d’を出力する。さらに、署名検証装置の第3ハッシュ演算部が、出力ビット長がLビットのハッシュ関数H1:{0,1}*→{0,1}Lを、クリアメッセージmclr’に依存して定まる値α’に作用させ、その演算結果であるLビットのハッシュ値H1(α’)∈{0,1}Lを出力する。そして、署名検証装置の比較部が、排他的論理和値d’の第1ビット位置のLビットの値h’∈{0,1}Lと、ハッシュ値H1(α’)とを比較し、h’=H1(α’)であることを条件に、検証が成功である旨の情報を出力する。
なお、第3,4の本発明に第1,2の本発明を適用してもよい。すなわち、第3,4の本発明において、値β及び値γの少なくとも一方の値を、さらに、リカバリメッセージmrecのビット長Mに依存して決まる値とし、値β’及び値γ’の少なくとも一方の値を、さらに、署名検証装置で抽出したリカバリメッセージmrec’のビット長M’に依存して決まる値としてもよい。また、第3,4の本発明において、値β及び値γの少なくとも一方の値を、さらに、クリアメッセージmclrのビット長Nに依存して決まる値とし、値β’及び値γ’の少なくとも一方の値を、さらに、署名検証装置に入力されたクリアメッセージmclr’のビット長N’に依存して決まる値としてもよい。これにより、前述の攻撃方法によって生成された不正な署名をより高い確率で検出することができる。
〔第1実施形態〕
まず、第1実施形態について説明する。第1実施形態は、第1の本発明に係る実施形態である。
<全体構成>
図1は、第1実施形態の署名システム1の全体構成を示した概念図である。
図1に示すように、本形態の署名システム1は、署名生成を行う署名生成装置10と、署名検証を行う署名検証装置20と、署名生成装置10の効果鍵を公開する公開鍵サーバ装置30とを有し、相互にネットワーク40を通じて通信可能に接続される。なお、署名生成装置10、署名検証装置20及び公開鍵サーバ装置30は、それぞれ、公知のコンピュータに所定のプログラムが読み込まれることにより構成される装置である。
次に、署名生成装置10の構成を説明する。
[ハードウェア構成]
図2は、第1実施形態の署名生成装置10のハードウェア構成を例示したブロック図である。
図2に例示するように、この例の署名生成装置10は、CPU(Central Processing Unit)11、入力部12、出力部13、補助記憶装置14、ROM(Read Only Memory)15、RAM(Random Access Memory)16、バス17及び通信部18を有している。
この例のCPU11は、制御部11a、演算部11b及びレジスタ11cを有し、レジスタ11cに読み込まれた各種プログラムに従って様々な演算処理を実行する。また、この例の入力部12は、データが入力される入力ポート、キーボード、マウス等であり、出力部13は、データを出力する出力ポート、外部記録媒体へのデータ記憶装置、印刷装置、ディスプレイなどである。補助記憶装置14は、例えば、ハードディスク、MO(Magneto-Optical disc)、半導体メモリ等であり、各種プログラムを格納したプログラム領域14a及び各種データが格納されるデータ領域14bを有している。また、RAM16は、例えば、SRAM (Static Random Access Memory)、DRAM (Dynamic Random Access Memory)等であり、上記のプログラムが書き込まれるプログラム領域16a及び各種データが書き込まれるデータ領域16bを有している。また、通信部18は、ネットワークカードなどである。また、この例のバス17は、CPU11、入力部12、出力部13、補助記憶装置14、ROM15、RAM16及び通信部18を、データのやり取りが可能なように接続する。
CPU11(図2)は、読み込まれたOS(Operating System)プログラムに従い、補助記憶装置14のプログラム領域14aに格納されているプログラムをRAM16のプログラム領域16aに書き込む。同様にCPU11は、補助記憶装置14のデータ領域14bに格納されている各種データを、RAM16のデータ領域16bに書き込む。そして、このプログラムやデータが書き込まれたRAM16上のアドレスがCPU11のレジスタ11cに格納される。CPU11の制御部11aは、レジスタ11cに格納されたこれらのアドレスを順次読み出し、読み出したアドレスが示すRAM16上の領域からプログラムやデータを読み出し、そのプログラムが示す演算を演算部11bに順次実行させ、その演算結果をレジスタ11cに格納していく。なお、各プログラムは、単一のプログラム列として記載されていてもよく、また、少なくとも一部のプログラムが別個のモジュールとしてライブラリに格納されていてもよい。
図3に示すように、本形態の署名生成装置10は、記憶部10aと、秘密鍵生成部10bと、公開鍵生成部10cと、入力部10dと、メッセージ分割部10eと、任意値生成部10fと、群演算部10gと、ハッシュ演算部10h,10pと、ビット結合部10mと、排他的論理和演算部10nと、整数演算部10qと、通信部10rと、制御部10sと、一時メモリ10tとを有する。
また、図4は、ハッシュ演算部10hの機能構成の詳細を示した図である。図4に示すように、ハッシュ演算部10hは、ハッシュ回数演算部10haと、部分ハッシュ演算部10hbと、ビット結合部10hcと、ビット削除部10hdとを有する。
また、上記のプログラムは単体でその機能を実現できるものでもよいし、当該プログラムがさらに他のライブラリ(記載していない)を読み出して各機能を実現するものでもよい。すなわち、各プログラムの少なくとも一部が、署名生成装置10の機能をコンピュータに実行させるためのプログラムに相当する。
次に、署名検証装置20の構成を説明する。
[ハードウェア構成]
図2に示した署名生成装置10のハードウェア構成と同様である。
[ハードウェアとプログラムとの協働]
署名検証装置20も図2に示したようなコンピュータに所定のプログラムが読み込まれることにより構成される。図5は、このように構成される第1実施形態の署名検証装置20の機能構成を例示したブロック図である。なお、図5における矢印はデータの流れを示すが、一時メモリ20pや制御部20nに入出力されるデータの流れは省略してある。
図5に示すように、本形態の署名検証装置20は、記憶部20aと、通信部20bと、ビット長抽出部20cと、ハッシュ演算部20d,20fと、群演算部20eと、排他的論理和演算部20gと、ビット抽出部20hと、比較部20iと、出力部20mと、制御部20nと、一時メモリ20pとを有する。
また、上記のプログラムは単体でその機能を実現できるものでもよいし、当該プログラムがさらに他のライブラリ(記載していない)を読み出して各機能を実現するものでもよい。すなわち、各プログラムの少なくとも一部が、署名検証装置20の機能をコンピュータに実行させるためのプログラムに相当する。
次に、本形態の処理について説明する。
[前処理]
まず、署名システム1で使用する位数qの離散対数問題の求解が困難な巡回群Gとその生成元g∈Gとを決定する。このような巡回群Gとしては、例えば、楕円曲線上の有理点のなす群や有限体の乗法群などを用いることができる。なお、安全性の面から位数qは素数であることが望ましい。また、署名システム1で使用するビット長パラメータL∈Z>0(0より大きな整数)と、共用値h∈{0,1}Lとを決定する。
さらに、後述するリカバリメッセージmrecのビット長Mに応じて出力ビット長がL+Mビットに定まる出力が可変長のハッシュ関数H0:{0,1}*→{0,1}L+Mを決定する。なお、このようなハッシュ関数の演算方法については後述する。
以上のように決定された巡回群Gや各ハッシュ関数H0,H1,H3を特定する情報は、例えば、署名生成装置10や署名検証装置20を構成する各プログラムに書き込まれ、署名生成装置10や署名検証装置20は、決定された巡回群Gでの演算や、各ハッシュ関数H0,H1,H3の演算が可能になるものとする。また、ビット長パラメータL∈Z>0や共用値h∈{0,1}Lや位数qや生成元g∈Gは、署名生成装置10の記憶部10aと署名検証装置20の記憶部20aに格納される。
次に、署名生成装置10が行う鍵生成処理について説明する。
まず、署名生成装置10の秘密鍵生成部10bが任意の秘密鍵x∈Zqを生成する。なお、この秘密鍵xの生成は、擬似乱数をZqにマッピングして行ってもよいし、署名生成者によって任意に決定された値を元に行ってもよい。生成された秘密鍵xは、署名生成装置10の記憶部10aに安全に格納される。すなわち、署名生成装置10の外部の装置は、記憶部10aから秘密鍵xを取得することができない。
y=gx∈G …(3)
を行って秘密鍵xに対応する公開鍵y∈Gを生成し、記憶部10aに格納する。なお、例えば、巡回群Gが楕円曲線E上の有理点のなす群であった場合、式(3)の右辺は、楕円曲線E上の点である生成元g=(g1,g2)を楕円スカラー倍(楕円x倍)する演算(x・g∈E)を意味し、公開鍵yは楕円曲線E上の点となる。また、例えば、巡回群Gが有限体の乗法群であった場合、式(3)の右辺は、gxmod p(ただし、p=2q+1)の演算を意味し、公開鍵yはスカラー値となる。生成された公開鍵yは、通信部10rからネットワーク40を通じて公開鍵サーバ装置30に送信され、公開鍵サーバ装置30は、送信された公開鍵yを例えば公開鍵証明書とともに公開する。なお、公開鍵y等の公開とは、公開鍵y等が公開鍵サーバ装置30の記憶部に格納され、ネットワーク40に接続可能な任意の装置が公開鍵サーバ装置30の記憶部に格納された公開鍵y等を取得可能な状態とすることを意味する。署名検証装置20は、このような公開鍵yを通信部20bによって公開鍵サーバ装置30から受信し、記憶部20aに格納する。
次に、第1実施形態の署名生成処理について説明する。
図6は、第1実施形態の署名生成処理を説明するためのフローチャートである。以下、図6に従って本形態の署名生成処理を説明する。
まず、署名生成装置10(図3)の入力部10dに、メッセージm∈{0,1}N+Mとリカバリメッセージのビット長M≧1とが入力される(ステップS11)。入力されたこれらの情報は、それぞれ記憶部10aに格納される。
メッセージm∈{0,1}N+Mを、ビット長Mのリカバリメッセージmrec∈{0,1}M と、ビット長N(N≧0)のクリアメッセージmclr∈{0,1}Nとに分割する(ステップS12)。例えば、メッセージm∈{0,1}N+Mの上位Mビットをリカバリメッセージmrec∈{0,1}Mとし、下位Nビットをクリアメッセージmclr∈{0,1}Nとする。なお、分割法はこれに限定されず、メッセージm∈{0,1}N+Mのどのビットをリカバリメッセージmrecとし、どのビットをクリアメッセージmclr
とするかは、任意に設定できる。このように分割されたビット長Mのリカバリメッセージmrec∈{0,1}M と、ビット長Nのクリアメッセージmclr∈{0,1}Nとは、それぞれ記憶部10aに格納される。
次に、群演算部10gが、記憶部10aから生成元g∈Gと任意値k∈Zqとを読み込み、
R=gk∈G …(4)
を算出し、当該演算結果R∈Gを記憶部10aに出力して格納する(ステップS14)。なお、例えば、巡回群Gが楕円曲線E上の有理点のなす群であった場合、式(4)の右辺は、楕円曲線E上の点である生成元g=(g1,g2)を楕円スカラー倍(楕円k倍)する演算(k・g∈E)を意味し、演算結果Rは楕円曲線E上の点となる。また、例えば、巡回群Gが有限体の乗法群であった場合、式(4)の右辺は、gkmod pの演算を意味し、演算結果Rはスカラー値となる。
Π=H0(β)∈{0,1}L+M …(5)
を記憶部10aに出力して格納する(ステップS15)。なお、第1実施形態では、βは演算結果Rとビット長Mとのみに依存する値γ=(R,M)である。また、本形態のβの構成方法に限定はないが、βの構成方法は後述する署名検証装置20でのβ’の構成方法と同一とする。本形態のβの構成例としては以下のようなものがある。
〔β−1〕楕円曲線E上の点である演算結果Rを一義的又は限定的に特定できる値(例えば、点Rのx座標若しくはy座標、又は、点Rのx座標とy座標とのビット結合値)を上位ビットとし、Mを下位ビットとして結合した値をβとする。
〔β−2〕楕円曲線E上の点である演算結果Rを一義的又は限定的に特定できる値を下位ビットとし、Mを上位ビットとして結合した値をβとする。
〔β−3〕所定の規則に従い、楕円曲線E上の点である演算結果Rを一義的又は限定的に特定できる値とMとの各ビットをそれぞれ離散的に配置して結合した値をβとする。
巡回群Gが有限体の乗法群であった場合:
〔β−4〕スカラー値である演算結果Rを上位ビットとし、Mを下位ビットとして結合した値をβとする。
〔β−5〕スカラー値である演算結果Rを下位ビットとし、Mを上位ビットとして結合した値をβとする。
〔β−6〕所定の規則に従い、スカラー値である演算結果RとMとの各ビットをそれぞれ離散的に配置して結合した値をβとする。
図7は、ステップS15の処理の例を説明するためのフローチャートである。
emax=rounddown{(L+M)/length(H)} …(5-1)
の演算を行ってemax
を一時メモリ10tに格納する(ステップS15a)。なお、rounddown{*}は*の小数点以下を切り捨てる演算を意味し、length(*)は*のビット長を意味し、Hは公知のハッシュ関数を意味する。なお、ハッシュ関数Hの具体例としては、SHA−1(ビット長160ビット)やMD5(ビット長128ビット)などを例示できる。例えば、L+M=500であり、ハッシュ関数HがSHA−1〔length(H)=160〕であるならば、emax=3である。
次に、部分ハッシュ演算部10hbが、一時メモリ10tから変数eを読み込み、記憶部10aからβ=Rを読み込み、ハッシュ値
H(e,β) …(5-2)
を算出して一時メモリ10tに格納する(ステップS15c)。なお、例えば、巡回群Gが楕円曲線E上の有理点のなす群であった場合、式(5−2)は、楕円曲線E上の点である演算結果Rを一義的又は限定的に特定できる値(例えば、点Rのx座標若しくはy座標、又は、点Rのx座標とy座標とのビット結合値)と変数eとのビット結合値にハッシュ関数Hを作用させる演算を意味する。また、例えば、巡回群Gが有限体の乗法群であった場合、式(5−2)は、スカラー値である演算結果Rと変数eとのビット結合値にハッシュ関数H0を作用させる演算を意味する。
e=emax …(5-3)
を満たすか否かを判断する(ステップS15d)。ここで、式(5−3)を満たさなければ、制御部10sはe+1を新たなeとし、新たなeを一時メモリ10tに格納した後(ステップS15e)、処理をステップS15cに戻す。一方、式(5−3)を満たすのであれば、制御部10sはビット結合部10hcに指示を与え、ビット結合部10hcは、一時メモリ10tから各ハッシュ値H(0,R),H(1,R),H(2,R),…,H(emax,R)を読み込み、それらのビット結合値
HC(R)=H(0,R)|・・・|H(emax,R) …(5-4)
を算出して一時メモリ10tに格納する(ステップS15f)。
次に、ビット削除部10hdが、一時メモリ10tから、ビット結合値HC(R)とリカバリメッセージのビット長Mとビット長パラメータLとを読み込み、
Π=H0(R)=delete{length(HC(R))-length(L+M),HC(R)} …(5-5)
を算出して記憶部10aに出力する(ステップS15g)。なお、delete{δ,ε}は、εのビットを先頭からδビットだけ削除する処理を意味する。すなわち、式(5−5)は、HC(R)の先頭ビットを削除して全体のビット長をL+MとしたものをΠ=H0(R)とする演算を意味する。
HC(R)=H(R)|H(H(R))|H(H(H(R)))|…|H(H(H…(R)…))
となる([ステップS15の処理の例]の説明終わり)。
ステップS15の後、ビット結合部10mが、記憶部10aから共有値h∈{0,1}Lと、リカバリメッセージmrecとを読み込む(ステップS16)。ビット結合部10mは、共有値h∈{0,1}Lを第1ビット位置に配置し、リカバリメッセージmrec∈{0,1}Mを第2ビット位置に配置したL+Mビットのビット結合値
d=h|mrec∈{0,1}L+M …(6)
を算出し、当該ビット結合値dを記憶部10aに出力して格納する(ステップS17)。なお、「第1ビット位置」及び「第2ビット位置」をどのビット位置にするかについて特に限定はない。しかし、署名生成装置10と署名検証装置20との間では、「第1ビット位置」及び「第2ビット位置」をどのビット位置にするかの基準を同一にしなければならない。図9に「第1ビット位置」及び「第2ビット位置」の設定例を示す。
次に、排他的論理和演算部10nが、記憶部10aからハッシュ値Πとビット結合値dとを読み込む。排他的論理和演算部10nは、ハッシュ値Πとビット結合値dとの排他的論理和
r=Π(+)d∈{0,1}L+M …(7)
を算出し((+)は排他的論理和演算子)、当該排他的論理和値rを記憶部10aに出力して格納する(ステップS18)。
t=H3(γ)∈Zq …(8)
を記憶部10aに出力して格納する(ステップS19)。なお、第1実施形態では、γは排他的論理和値rとクリアメッセージmclrとビット長Mとのみに依存する値γ=(r,mclr,M)である。本形態のγの構成方法に限定はないが、γの構成方法は後述する署名検証装置20でのγ’の構成方法と同一とする。γの構成例としては以下のようなものがある。
〔γ−2〕最上位LビットをMとし、その後に続くL+Mビットをrとし、さらにその後に続くNビットをmclrとして結合した2L+M+Nビットの値をγとする。
〔γ−3〕所定の規則に従い、Mやrやmclrのビットをそれぞれ離散的(例えば、Mを偶数番目のビットに離散的に配置する等)に結合したものをγとする。
次に、整数演算部10qが、記憶部10aから任意値kとハッシュ値tと秘密鍵xとqとを読み込む。整数演算部10qは、
s=k-t・x∈Zq …(9)
を算出し、当該演算結果sを記憶部10aに出力して格納する(ステップS20)。
次に、通信部10rに、排他的論理和値rと演算結果sとクリアメッセージmclrとが読み込まれ、通信部10rは、署名σ=(r,s)とクリアメッセージmclrとをネットワーク40を通じて署名検証装置20に送信する(ステップS21)。
次に、第1実施形態の署名検証処理について説明する。
図8は、第1実施形態の署名検証処理を説明するためのフローチャートである。以下、図8に従って本形態の署名検証処理を説明する。
まず、署名検証装置20(図5)の通信部20bが、署名σ’=(r’,s’)とクリアメッセージmclr’とを受信し(「入力を受け付け」に相当)、これらを記憶部20aに格納する(ステップS41)。なお、署名とリアメッセージとが正規なものであれば、σ’=(r’,s’)=σ=(r,s)であり、mclr’=mclrであるが、ここでは、検証対象の署名をσ’=(r’,s’)と表現し、検証対象のクリアメッセージをmclr’と表現する。
M'=length(r')‐L …(10)
により、署名σ’に対応するリカバリメッセージmrec’のビット長M’を算出し、記憶部20aに格納する(ステップS42)。
次に、ハッシュ演算部20dが、記憶部20aからr’とクリアメッセージをmclr’とqとビット長M’とを読み込む。ハッシュ演算部20dは、署名生成装置10と同一のハッシュ関数H3:{0,1}*→Zqを、r’とmclr’とビット長M’とに依存して定まる値γ’に作用させ、その演算結果であるハッシュ値
t’=H3(γ’) …(11)
を記憶部20aに出力して格納する(ステップS43)。なお、γ’の構成方法は前述した署名生成装置10でのγの構成方法と同一(r=r’とし、mclr=mclr’とした場合に同一)とする。
R’=gs’・yt’∈G …(12)
の演算を行い、その演算結果R’を記憶部20aに出力して格納する(ステップS44)。なお、例えば、巡回群Gが楕円曲線E上の有理点のなす群であった場合、式(12)の右辺は、楕円曲線E上の点である生成元g=(g1,g2)を楕円スカラー倍(楕円s’倍)し、公開鍵y=(y1,y2)を楕円スカラー倍(楕円t’倍)し、それらの演算結果を楕円加算する演算(s’・g+t’・y∈E)を意味し、演算結果R’は楕円曲線E上の点となる。また、例えば、巡回群Gが有限体の乗法群であった場合、式(12)の右辺は、gs’・yt’mod pの演算を意味し、演算結果R’はスカラー値となる。
Π'=H0(β’)∈{0,1}L+M' …(13)
を記憶部20aに出力して格納する(ステップS45)。なお、β’の構成方法は、前述した署名生成装置10でのβの構成方法と同一とし、また、H0(β')の演算は、署名生成装置10の場合のH0(β')の演算と同一(β=β',M=M’の場合に同一)とする。
d’=Π’(+)r’∈{0,1}L+M’ …(14)
を算出し、当該排他的論理和値d’を記憶部20aに出力して格納する(ステップS46)。
次に、ビット抽出部20hが、記憶部20aから排他的論理和値d’とリカバリメッセージmrec’のビット長M’とを読み込む。ビット抽出部20hは、排他的論理和値d’の第1ビット位置のLビットの値h’∈{0,1}Lと、排他的論理和値d’の第2ビット位置のM’ビットの値mrec’∈{0,1}M’とを抽出し、それらを記憶部20aに格納する(ステップS47)。なお、「第1ビット位置」及び「第2ビット位置」は、署名生成装置10の処理での「第1ビット位置」及び「第2ビット位置」と同一(d=d’とした場合に同一)とする。
h'=h …(15)
を満たすか否かを判断する(ステップS49)。
ここで、式(15)を満たさない場合、比較部20iは0(検証失敗)を記憶部20aに出力して格納し、出力部20mは、記憶部20aから送られた0(検証失敗)を出力する(ステップS50)。一方、式(15)を満たす場合、比較部20iは1(検証成功)を記憶部20aに出力して格納し、出力部20mは、記憶部20aから送られた1(検証成功)を出力し(ステップS51)、さらにリカバリメッセージmrec’を出力する(ステップS52)。
次に、第2実施形態について説明する。第2実施形態は、第2の本発明に係る実施形態である。以下では、第1実施形態との相違点を中心に説明し、第1実施形態と共通する事項については説明を省略する。
<全体構成>
署名生成装置10が署名生成装置110となり、署名検証装置20が署名検証装置120となる以外は、第1実施形態と同じである。
<署名生成装置110の構成>
[ハードウェア構成]
図2に示した署名生成装置10のハードウェア構成と同様である。
[ハードウェアとプログラムとの協働]
第1実施形態と同様、本形態の署名生成装置110も図2に示したようなコンピュータに所定のプログラムが読み込まれることにより構成される。
図10は、CPUにプログラムが読み込まれることにより構成される第2実施形態の署名生成装置110の機能構成を例示したブロック図である。なお、図10における矢印はデータの流れを示すが、一時メモリ10tや制御部10sに入出力されるデータの流れは省略してある。また、図10において第1実施形態と共通する部分には図3と同じ符号を付した。
次に、署名検証装置120の構成を説明する。
[ハードウェア構成]
図2に示した署名生成装置10のハードウェア構成と同様である。
[ハードウェアとプログラムとの協働]
署名検証装置120も図2に示したようなコンピュータに所定のプログラムが読み込まれることにより構成される。図11は、このように構成される第2実施形態の署名検証装置120の機能構成を例示したブロック図である。なお、図11における矢印はデータの流れを示すが、一時メモリ20pや制御部20nに入出力されるデータの流れは省略してある。また、図11において第1実施形態と共通する部分には図5と同じ符号を付した。
図11に示すように、本形態の署名検証装置120は、記憶部20aと、通信部20bと、ビット長抽出部120cと、ハッシュ演算部120d,120fと、群演算部20eと、排他的論理和演算部20gと、ビット抽出部20hと、比較部20iと、出力部20mと、制御部20nと、一時メモリ20pとを有する。なお、ビット長抽出部120cとハッシュ演算部120d,120fとは、それぞれの処理を実現するためのプログラムがCPUに読み込まれることにより構成されるものである。
次に、本形態の処理について説明する。
[前処理]
第1実施形態と同様である。
[鍵生成処理]
第1実施形態と同様である。
[署名生成処理]
次に、第1実施形態の署名生成処理について説明する。
図12は、第2実施形態の署名生成処理を説明するためのフローチャートである。以下、図12に従って本形態の署名生成処理を説明する。
まず、署名生成装置110(図10)の入力部10dに、メッセージm∈{0,1}N+Mとリカバリメッセージのビット長M≧1とが入力される(ステップS111)。入力されたこれらの情報は、それぞれ記憶部10aに格納される。
メッセージm∈{0,1}N+Mを、ビット長Mのリカバリメッセージmrec∈{0,1}M と、ビット長N(N≧0)のクリアメッセージmclr∈{0,1}Nとに分割し、さらにクリアメッセージmclr∈{0,1}Nのビット長Nを抽出する(ステップS112)。なお、ビット分割の手法は第1実施形態と同様である。このように分割されたビット長Mのリカバリメッセージmrec∈{0,1}M と、ビット長Nのクリアメッセージmclr∈{0,1}Nと、クリアメッセージmclr∈{0,1}Nのビット長Nとは、それぞれ記憶部10aに格納される。
次に、第1実施形態と同じく、任意値生成部10fが任意値k∈Zqを生成し、生成した任意値kを記憶部10aに格納し(ステップS113)。群演算部10gが、記憶部10aから生成元g∈Gと任意値k∈Zqとを読み込み、式(4)に従ってRを算出し、当該演算結果R∈Gを記憶部10aに出力して格納する(ステップS114)。
Π=H0(β)∈{0,1}L+M …(16)
を記憶部10aに出力して格納する(ステップS115)。なお、第2実施形態では、βは演算結果Rとビット長Nとのみに依存する値γ=(R,N)である。また、本形態のβの構成方法に限定はないが、βの構成方法は後述する署名検証装置120でのβ’の構成方法と同一とする。本形態のβの構成例としては以下のようなものがある。
巡回群Gが楕円曲線E上の有理点のなす群であった場合:
〔β−1〕楕円曲線E上の点である演算結果Rを一義的又は限定的に特定できる値(例えば、点Rのx座標若しくはy座標、又は、点Rのx座標とy座標とのビット結合値)を上位ビットとし、Nを下位ビットとして結合した値をβとする。
〔β−2〕楕円曲線E上の点である演算結果Rを一義的又は限定的に特定できる値を下位ビットとし、Nを上位ビットとして結合した値をβとする。
〔β−3〕所定の規則に従い、楕円曲線E上の点である演算結果Rを一義的又は限定的に特定できる値とNとの各ビットをそれぞれ離散的に配置して結合した値をβとする。
巡回群Gが有限体の乗法群であった場合:
〔β−4〕スカラー値である演算結果Rを上位ビットとし、Nを下位ビットとして結合した値をβとする。
〔β−5〕スカラー値である演算結果Rを下位ビットとし、Nを上位ビットとして結合した値をβとする。
〔β−6〕所定の規則に従い、スカラー値である演算結果RとNとの各ビットをそれぞれ離散的に配置して結合した値をβとする。
t=H3(γ)∈Zq …(17)
を記憶部10aに出力して格納する(ステップS119)。なお、第2実施形態では、γは排他的論理和値rとクリアメッセージmclrとビット長Nとのみに依存する値γ=(r,mclr,N)である。本形態のγの構成方法に限定はないが、γの構成方法は後述する署名検証装置120でのγ’の構成方法と同一とする。本形態のγの構成例としては以下のようなものがある。
〔γ−1〕最上位L+Mビットをrとし、その後に続くNビットをmclrとし、さらにその後に続くLビットをNとして結合した2L+M+Nビットの値をγとする。
〔γ−2〕最上位LビットをNとし、その後に続くL+Mビットをrとし、さらにその後に続くNビットをmclrとして結合した2L+M+Nビットの値をγとする。
〔γ−3〕所定の規則に従い、Nやrやmclrのビットをそれぞれ離散的(例えば、Nを偶数番目のビットに離散的に配置する等)に結合したものをγとする。
次に、第1実施形態と同様、整数演算部10qが、式(9)に従ってsを算出し(ステップS120)、通信部10rに、排他的論理和値rと演算結果sとクリアメッセージmclrとが読み込まれ、通信部10rが、署名σ=(r,s)とクリアメッセージmclrとをネットワーク40を通じて署名検証装置120に送信する(ステップS121)。
次に、第2実施形態の署名検証処理について説明する。
まず、署名検証装置120(図11)の通信部20bが、署名σ’=(r’,s’)とクリアメッセージmclr’とを受信し(「入力を受け付け」に相当)、これらを記憶部20aに格納する(ステップS141)。なお、署名とリアメッセージとが正規なものであれば、σ’=(r’,s’)=σ=(r,s)であり、mclr’=mclrであるが、ここでは、検証対象の署名をσ’=(r’,s’)と表現し、検証対象のクリアメッセージをmclr’と表現する。
次に、ビット長抽出部120cが、記憶部20aから、ビット長パラメータLと署名σ’=(r’,s’)のr’とクリアメッセージをmclr’とを読み込み、式(10)に従ってリカバリメッセージmrec’のビット長M’を算出し、さらに、クリアメッセージをmclr’のビット長
N'=|mclr'| …(18)
を算出し、これらを記憶部20aに格納する(ステップS142)。
t’=H3(γ’) …(19)
を記憶部20aに出力して格納する(ステップS143)。なお、γ’の構成方法は前述した署名生成装置110でのγの構成方法と同一(r=r’とし、mclr=mclr’とした場合に同一)とする。
次に、群演算部20eが、記憶部20aから、生成元g∈Gと署名生成装置10の公開鍵y∈Gと署名σ’のs’とハッシュ値t’とを読み込み、第1実施形態と同様、式(12)の演算を行い、その演算結果R’を記憶部20aに出力して格納する(ステップS144)。
Π'=H0(β’)∈{0,1}L+M' …(20)
を記憶部20aに出力して格納する(ステップS145)。なお、β’の構成方法は、前述した署名生成装置110でのβの構成方法と同一とし、また、H0(β')の演算は、署名生成装置110の場合のH0(β')の演算と同一(β=β',M=M’の場合に同一)とする。
その後、第1実施形態のステップS46〜S52と同じ処理が実行され(146〜S152)、署名検証が行われる。
次に、第3実施形態について説明する。第3実施形態は、第3の本発明に係る実施形態である。以下では、第1実施形態との相違点を中心に説明し、第1実施形態と共通する事項については説明を省略する。
<全体構成>
署名生成装置10が署名生成装置210となり、署名検証装置20が署名検証装置220となる以外は、第1実施形態と同じである。
[ハードウェア構成]
図2に示した署名生成装置10のハードウェア構成と同様である。
[ハードウェアとプログラムとの協働]
第1実施形態と同様、本形態の署名生成装置210も図2に示したようなコンピュータに所定のプログラムが読み込まれることにより構成される。
図14は、CPUにプログラムが読み込まれることにより構成される第3実施形態の署名生成装置210の機能構成を例示したブロック図である。なお、図14における矢印はデータの流れを示すが、一時メモリ10tや制御部10sに入出力されるデータの流れは省略してある。
次に、署名検証装置220の構成を説明する。
[ハードウェア構成]
図2に示した署名生成装置10のハードウェア構成と同様である。
[ハードウェアとプログラムとの協働]
署名検証装置220も図2に示したようなコンピュータに所定のプログラムが読み込まれることにより構成される。図15は、このように構成される第3実施形態の署名検証装置220の機能構成を例示したブロック図である。なお、図15における矢印はデータの流れを示すが、一時メモリ20pや制御部20nに入出力されるデータの流れは省略してある。
図15に示すように、本形態の署名検証装置220は、記憶部20aと、通信部20bと、ビット長抽出部20cと、ハッシュ演算部220d,220f,220kと、群演算部20eと、排他的論理和演算部20gと、ビット抽出部20hと、比較部220iと、出力部20mと、制御部20nと、一時メモリ20pとを有する。
次に、本形態の処理について説明する。
[前処理]
まず、署名システム1で使用する位数qの離散対数問題の求解が困難な巡回群Gとその生成元g∈Gとを決定する。このような巡回群Gとしては、例えば、楕円曲線上の有理点のなす群や有限体の乗法群などを用いることができる。なお、安全性の面から位数qは素数であることが望ましいが、qの素因数分解が困難であるならqは素数でなくてもかまわない。また、署名システム1で使用するビット長パラメータL∈Z>0(0より大きな整数)を決定する。
さらに、後述するリカバリメッセージmrecのビット長Mに応じて出力ビット長がL+Mビットに定まる出力が可変長のハッシュ関数H0:{0,1}*→{0,1}L+Mを決定する。なお、このようなハッシュ関数の演算方法については後述する。
また、入力値に対してLビットのハッシュ値を出力するハッシュ関数H1:{0,1}*→{0,1}Lと、また、入力値に対してZq(qを法とする完全剰余系)の元を出力するハッシュ関数H3:{0,1}*→Zqとを決定する。ハッシュ関数H1は、ハッシュ関数H0と同様に構成でき、ハッシュ関数H3は、SHA−1等のハッシュ値に対し、qを法とした剰余演算を行うことで構成できる。
次に、署名生成装置210が行う鍵生成処理について説明する。
まず、署名生成装置210の秘密鍵生成部10bが任意の秘密鍵x∈Zqを生成する。なお、この秘密鍵xの生成は、擬似乱数をZqにマッピングして行ってもよいし、署名生成者によって任意に決定された値を元に行ってもよい。生成された秘密鍵xは、署名生成装置210の記憶部10aに安全に格納される。すなわち、署名生成装置210の外部の装置は、記憶部10aから秘密鍵xを取得することができない。
次に、署名生成装置210の公開鍵生成部10cが、記憶部10aから秘密鍵xと巡回群Gの生成元g∈Gとを読み込み、巡回群Gで定義された演算
y=gx∈G …(21)
を行って秘密鍵xに対応する公開鍵y∈Gを生成し、記憶部10aに格納する。なお、例えば、巡回群Gが楕円曲線E上の有理点のなす群であった場合、式(21)の右辺は、楕円曲線E上の点である生成元g=(g1,g2)を楕円スカラー倍(楕円x倍)する演算(x・g∈E)を意味し、公開鍵yは楕円曲線E上の点となる。また、例えば、巡回群Gが有限体の乗法群であった場合、式(21)の右辺は、gxmod p(ただし、p=2q+1)の演算を意味し、公開鍵yはスカラー値となる。生成された公開鍵yは、通信部10rからネットワーク40を通じて公開鍵サーバ装置30に送信され、公開鍵サーバ装置30は、送信された公開鍵yを例えば公開鍵証明書とともに公開する。なお、公開鍵y等の公開とは、公開鍵y等が公開鍵サーバ装置30の記憶部に格納され、ネットワーク40に接続可能な任意の装置が公開鍵サーバ装置30の記憶部に格納された公開鍵y等を取得可能な状態とすることを意味する。署名検証装置220は、このような公開鍵yを通信部20bによって公開鍵サーバ装置30から受信し、記憶部20aに格納する。
次に、第3実施形態の署名生成処理について説明する。
図16は、第3実施形態の署名生成処理を説明するためのフローチャートである。以下、図16に従って本形態の署名生成処理を説明する。
まず、署名生成装置210(図14)の入力部10dに、メッセージm∈{0,1}N+Mとリカバリメッセージのビット長M≧1とが入力される(ステップS211)。入力されたこれらの情報は、それぞれ記憶部10aに格納される。
次に、メッセージ分割部10eが、記憶部10aからメッセージm∈{0,1}N+Mとリカバリメッセージのビット長M≧1とを読み込む。メッセージ分割部10eは、これらの情報を用い、
メッセージm∈{0,1}N+Mを、ビット長Mのリカバリメッセージmrec∈{0,1}M と、ビット長N(N≧0)のクリアメッセージmclr∈{0,1}Nとに分割する(ステップS212)。例えば、メッセージm∈{0,1}N+Mの上位Mビットをリカバリメッセージmrec∈{0,1}Mとし、下位Nビットをクリアメッセージmclr∈{0,1}Nとする。なお、分割法はこれに限定されず、メッセージm∈{0,1}N+Mのどのビットをリカバリメッセージmrecとし、どのビットをクリアメッセージmclrとするかは、任意に設定できる。このように分割されたビット長Mのリカバリメッセージmrec∈{0,1}M と、ビット長Nのクリアメッセージmclr∈{0,1}Nとは、それぞれ記憶部10aに格納される。
次に、群演算部10gが、記憶部10aから生成元g∈Gと任意値k∈Zqとを読み込み、
R=gk∈G …(22)
を算出し、当該演算結果R∈Gを記憶部10aに出力して格納する(ステップS214)。なお、例えば、巡回群Gが楕円曲線E上の有理点のなす群であった場合、式(22)の右辺は、楕円曲線E上の点である生成元g=(g1,g2)を楕円スカラー倍(楕円k倍)する演算(k・g∈E)を意味し、演算結果Rは楕円曲線E上の点となる。また、例えば、巡回群Gが有限体の乗法群であった場合、式(22)の右辺は、gkmod pの演算を意味し、演算結果Rはスカラー値となる。
次に、ハッシュ演算部210hが、記憶部10aから演算結果R∈Gとリカバリメッセージのビット長Mとビット長パラメータLを読み込む。ハッシュ演算部210hは、リカバリメッセージmrecのビット長Mに応じて出力ビット長がL+Mビットに定まるハッシュ関数H0:{0,1}*→{0,1}L+Mを、演算結果Rに依存して定まる値β(本形態ではβ=R)に作用させ、その演算結果であるL+Mビットのハッシュ値
Π=H0(β)∈{0,1}L+M …(23)
を記憶部10aに出力して格納する(ステップS215)。なお、例えば、巡回群Gが楕円曲線E上の有理点のなす群であった場合、式(23)の右辺は、楕円曲線E上の点である演算結果Rを一義的又は限定的に特定できる値(例えば、点Rのx座標若しくはy座標、又は、点Rのx座標とy座標とのビット結合値)にハッシュ関数H0を作用させる演算を意味する。また、例えば、巡回群Gが有限体の乗法群であった場合、式(23)の右辺は、スカラー値である演算結果Rにハッシュ関数H0を作用させる演算を意味する。ハッシュ関数H0を作用させる演算の具体的な処理方法は、例えば、第1実施形態の図7と同様である。
h=H1(α)∈{0,1}L …(24)
を記憶部10aに出力して格納する(ステップS216)。
次に、ビット結合部10mが、記憶部10aからハッシュ値h∈{0,1}Lとリカバリメッセージmrecとを読み込む。ビット結合部10mは、ハッシュ値h∈{0,1}Lを第1ビット位置に配置し、リカバリメッセージmrec∈{0,1}Mを第2ビット位置に配置したL+Mビットのビット結合値
d=h|mrec∈{0,1}L+M …(25)
を算出し、当該ビット結合値dを記憶部10aに出力して格納する(ステップS217)。なお、「第1ビット位置」及び「第2ビット位置」をどのビット位置にするかについて特に限定はない。しかし、署名生成装置210と署名検証装置220との間では、「第1ビット位置」及び「第2ビット位置」をどのビット位置にするかの基準を同一にしなければならない。「第1ビット位置」及び「第2ビット位置」の設定例は、例えば図9に示した通りである。
r=Π(+)d∈{0,1}L+M …(26)
を算出し((+)は排他的論理和演算子)、当該排他的論理和値rを記憶部10aに出力して格納する(ステップS218)。
次に、ハッシュ演算部210pが、記憶部10aから排他的論理和値rとクリアメッセージmclrとを読み込む。ハッシュ演算部210pは、入力値に対して整数を出力するハッシュ関数H3:{0,1}*→Zqを、排他的論理和値rとクリアメッセージmclrとに依存して定まる値γに作用させ、その演算結果であるハッシュ値
t=H3(γ)∈Zq …(27)
を記憶部10aに出力して格納する(ステップS219)。なお、第3実施形態では、γは排他的論理和値rとクリアメッセージmclrとのみに依存する値γ=(r,mclr)である。本形態のγの構成方法に限定はないが、γの構成方法は後述する署名検証装置220でのγ’の構成方法と同一とする。γの構成例としては以下のようなものがある。
〔γ−1〕rを上位L+Mビットとし、mclrを下位Nビットとして結合したL+M+Nビットの値をγとする。
〔γ−2〕rを下位L+Mビットとし、mclrを上位Nビットとして結合したL+M+Nビットの値をγとする。
〔γ−3〕mclrを上位から奇数番目のビット(合計Nビット)とし、rをその他のL+Mビットとして結合したL+M+Nビットの値をγとする。
次に、整数演算部10qが、記憶部10aから任意値kとハッシュ値tと秘密鍵xとqとを読み込む。整数演算部10qは、
s=k-t・x∈Zq …(28)
を算出し、当該演算結果sを記憶部10aに出力して格納する(ステップS220)。
次に、通信部10rに、排他的論理和値rと演算結果sとクリアメッセージmclrとが読み込まれ、通信部10rは、署名σ=(r,s)とクリアメッセージmclrとをネットワーク40を通じて署名検証装置220に送信する(ステップS221)。
次に、第3実施形態の署名検証処理について説明する。
図17は、第3実施形態の署名検証処理を説明するためのフローチャートである。以下、図17に従って本形態の署名検証処理を説明する。
まず、署名検証装置220(図15)の通信部20bが、署名σ’=(r’,s’)とクリアメッセージmclr’とを受信し(「入力を受け付け」に相当)、これらを記憶部20aに格納する(ステップS241)。なお、署名とリアメッセージとが正規なものであれば、σ’=(r’,s’)=σ=(r,s)であり、mclr’=mclrであるが、ここでは、検証対象の署名をσ’=(r’,s’)と表現し、検証対象のクリアメッセージをmclr’と表現する。
次に、ビット長抽出部20cが、記憶部20aから、ビット長パラメータLと署名σ’=(r’,s’)のr’とを読み込む。ビット長抽出部20cは、
M'=length(r')‐L …(29)
により、署名σ’に対応するリカバリメッセージmrec’のビット長M’を算出し、記憶部20aに格納する(ステップS242)。
t’=H3(γ’) …(30)
を記憶部20aに出力して格納する(ステップS243)。なお、γ’の構成方法は前述した署名生成装置210でのγの構成方法と同一(r=r’とし、mclr=mclr’とした場合に同一)とする。
次に、群演算部20eが、記憶部20aから、生成元g∈Gと署名生成装置210の公開鍵y∈Gと署名σ’のs’とハッシュ値t’とを読み込み、
R’=gs’・yt’∈G …(31)
の演算を行い、その演算結果R’を記憶部20aに出力して格納する(ステップS244)。なお、例えば、巡回群Gが楕円曲線E上の有理点のなす群であった場合、式(31)の右辺は、楕円曲線E上の点である生成元g=(g1,g2)を楕円スカラー倍(楕円s’倍)し、公開鍵y=(y1,y2)を楕円スカラー倍(楕円t’倍)し、それらの演算結果を楕円加算する演算(s’・g+t’・y∈E)を意味し、演算結果R’は楕円曲線E上の点となる。また、例えば、巡回群Gが有限体の乗法群であった場合、式(31)の右辺は、gs’・yt’mod pの演算を意味し、演算結果R’はスカラー値となる。
Π'=H0(β’)∈{0,1}L+M' …(32)
を記憶部20aに出力して格納する(ステップS245)。なお、H0(β')の演算は、署名生成装置210の場合のH0(β)の演算と同一(β=β’,M=M’の場合に同一)とする。
次に、排他的論理和演算部20gが、記憶部20aから、ハッシュ値Π’と署名σ’が有するr’とを読み込み、それらの排他的論理和
d’=Π’(+)r’∈{0,1}L+M’ …(33)
を算出し、当該排他的論理和値d’を記憶部20aに出力して格納する(ステップS246)。
次に、ハッシュ演算部220kが、記憶部20aからリカバリメッセージmrec’を読み込む。ハッシュ演算部220kは、署名生成装置210と同一のハッシュ関数H1:{0,1}*→{0,1}Lを、リカバリメッセージmrec’に依存して定まる値α’に作用させ、その演算結果であるLビットのハッシュ値
H1(α’)∈{0,1}L …(34)
を記憶部20aに出力して格納する(ステップS248)。なお、α’の構成方法は前述した署名生成装置210でのαの構成方法と同一(mrec=mrec’とした場合に同一)とする。
h'=H1(α’) …(35)
を満たすか否かを判断する(ステップS249)。
ここで、式(35)を満たさない場合、比較部20iは0(検証失敗)を記憶部20aに出力して格納し、出力部20mは、記憶部20aから送られた0(検証失敗)を出力する(ステップS250)。一方、式(35)を満たす場合、比較部20iは1(検証成功)を記憶部20aに出力して格納し、出力部20mは、記憶部20aから送られた1(検証成功)を出力し(ステップS251)、さらにリカバリメッセージmrec’を出力する(ステップS252)。
次に、第4実施形態について説明する。第4実施形態は、第4の本発明に係る実施形態である。
第3実施形態では、リカバリメッセージmrecに依存して定まる値をαとし、リカバリメッセージmrec’に依存して定まる値をα’とした。第4実施形態では、クリアメッセージmclrに依存して定まる値をαとし、クリアメッセージmclr’に依存して定まる値をα’とする。以下では、第1,3実施形態との相違点を中心に説明する。
<全体構成>
署名生成装置10が署名生成装置310となり、署名検証装置20が署名検証装置320となる以外は、第1実施形態と同じである。
[ハードウェア構成]
図2に示した署名生成装置10のハードウェア構成と同様である。
[ハードウェアとプログラムとの協働]
第1実施形態と同様、本形態の署名生成装置310も図2に示したようなコンピュータに所定のプログラムが読み込まれることにより構成される。
図18は、CPUにプログラムが読み込まれることにより構成される第4実施形態の署名生成装置310の機能構成を例示したブロック図である。
図18に示すように、本形態の署名生成装置310は、記憶部10aと、秘密鍵生成部10bと、公開鍵生成部10cと、入力部10dと、メッセージ分割部10eと、任意値生成部10fと、群演算部10gと、ハッシュ演算部210h,310i,210pと、ビット結合部10mと、排他的論理和演算部10nと、整数演算部10qと、通信部10rと、制御部10sと、一時メモリ10tとを有する。なお、ハッシュ演算部310iは、その処理を実現するためのプログラムがCPUに読み込まれることにより構成されるものである。
次に、署名検証装置320の構成を説明する。
[ハードウェア構成]
図2に示した署名生成装置10のハードウェア構成と同様である。
[ハードウェアとプログラムとの協働]
署名検証装置320も図2に示したようなコンピュータに所定のプログラムが読み込まれることにより構成される。図19は、このように構成される第4実施形態の署名検証装置320の機能構成を例示したブロック図である。
図19に示すように、本形態の署名検証装置320は、記憶部20aと、通信部20bと、ビット長抽出部20cと、ハッシュ演算部220d,220f,320kと、群演算部20eと、排他的論理和演算部20gと、ビット抽出部20hと、比較部220iと、出力部20mと、制御部20nと、一時メモリ20pとを有する。なお、ハッシュ演算部320kは、その処理を実現するためのプログラムがCPUに読み込まれることにより構成されるものである。
次に、本形態の処理について説明する。
[前処理]
第3実施形態と同じである。
[鍵生成処理]
第3実施形態と同じである。
[署名生成処理]
次に、第4実施形態の署名生成処理について説明する。
図20は、第4実施形態の署名生成処理を説明するためのフローチャートである。以下、図20に従って本形態の署名生成処理を説明する。
まず、署名生成装置310(図18)が、第3実施形態のステップS211〜S215と同様の処理を実行する(ステップS311〜S315)。
ステップS315の後、ハッシュ演算部310iが、記憶部10aからクリアメッセージmclrとビット長パラメータLとを読み込む。ハッシュ演算部310iは、入力値に対してLビットのハッシュ値を出力するハッシュ関数H1:{0,1}*→{0,1}Lを、クリアメッセージmclrに依存して定まる値α(本形態ではα=mclr)に作用させ、その演算結果であるLビットのハッシュ値
h=H1(α)∈{0,1}L …(36)
を記憶部10aに出力して格納する(ステップS316)。
その後、署名生成装置310は、第3実施形態のステップS217〜S221と同様な処理を実行する(ステップS317〜S321)。
次に、第4実施形態の署名検証処理について説明する。
図21は、第4実施形態の署名検証処理を説明するためのフローチャートである。以下、図21に従って本形態の署名検証処理を説明する。
まず、署名検証装置320(図19)が、第3実施形態のステップS241〜S247と同様な処理を実行する(ステップS341〜S347)。
その後、ハッシュ演算部320kが、記憶部20aからクリアメッセージmclr’を読み込む。ハッシュ演算部320kは、署名生成装置310と同一のハッシュ関数H1:{0,1}*→{0,1}Lを、クリアメッセージmclr’に依存して定まる値α’に作用させ、その演算結果であるLビットのハッシュ値
H1(α’)∈{0,1}L …(37)
を記憶部20aに出力して格納する(ステップS448)。なお、α’の構成方法は前述した署名生成装置310でのαの構成方法と同一(mrec=mrec’とした場合に同一)とする。
その後、署名検証装置320は、第3実施形態のステップS249〜S252と同様な処理を実行して署名検証を行う(ステップS349〜S352)。
なお、本発明は上述の各実施形態に限定されるものではない。以下に各実施形態の変形例を示す。
第1実施形態では、βをRとMとに依存して定まる値(R,M)とし、β’をR’とM’とに依存して定まる値(R’,M’)とし、γをrとmclrとMとに依存して定まる値(r,mclr,M)とし、γ’をr’とmclr’とM’とに依存して定まる値(r’,mclr’,M’)とした。しかし、第1実施形態の変形として、β,γの一方(β’,γ’の一方)のみがM(M’)に依存して定まる構成であってもよい。
また、第2実施形態では、βをRとNとに依存して定まる値(R,N)とし、β’をR’とN’とに依存して定まる値(R’,N’)とし、γをrとmclrとNとに依存して定まる値(r,mclr,N)とし、γ’をr’とmclr’とN’とに依存して定まる値(r’,mclr’,N’)とした。しかし、第2実施形態の変形として、β,γの一方(β’,γ’の一方)のみがN(N’)に依存して定まる構成であってもよい。
また、第3実施形態では、α=mrecとし、α’=mrec’とした。しかし、αをΠとmrecとのみに依存する値(Π,mrec)とし、α’をΠ’とmrec’とのみに依存する値(Π’,mrec’)としてもよい。その他、αをmrecと「付加情報」とに依存する値とし、α’をmrec’と「付加情報」とに依存する値としてもよい。
また、第4実施形態では、α=mclrとし、α’=mclr’とした。しかし、αをΠとmclrとのみに依存する値(Π,mclr)とし、α’をΠ’とmclr’とのみに依存する値(Π’,mclr’)としてもよい。その他、αをmclrと「付加情報」とに依存する値とし、α’をmclr’と「付加情報」とに依存する値としてもよい。
また、第3,4実施形態では、γをrとmclrとのみに依存して定まる値(r,mclr)とし、γ’をr’とmclr’とのみに依存して定まる値(r’,mclr’)とした。しかし、γをrとmclrとMとのみに依存して定まる値(r,mclr,M)とし、γ’をr’とmclr’ とM’とのみに依存して定まる値(r’,mclr’ ,M’)としてもよい。γをrとmclrとNとのみに依存して定まる値(r,mclr,N)とし、γ’をr’とmclr’ とN’とのみに依存して定まる値(r’,mclr’ ,N’)としてもよい。その他、γをrとmclrと「付加情報」とに依存して定まる値とし、γ’をr’とmclr’ と「付加情報」とに依存して定まる値としてもよい。
また、第3,4実施形態では、署名検証装置220,320が、署名σ’が具備するr’のビット長とビット長パラメータLとからリカバリメッセージのビット長を算出したが、署名生成装置210,310が署名検証装置220,320にリカバリメッセージのビット長を送信する構成であってもよい。
また、上記各実施形態では、リカバリメッセージのビット長Mを可変とし、署名生成装置10〜310の入力部10dにリカバリメッセージのビット長Mを入力する構成であった。しかし、リカバリメッセージのビット長Mを固定にしてもよい。この場合、署名生成装置10〜310と署名検証装置20〜320との間で、ビット長Mを共有する構成であってもよい。
また、ハッシュ関数とは、あるデータに対し、そのデータを代表する値を算出する関数を意味する。本発明では、SHA−1やMD5等のみならず、例えば、DESやCamelliaなどの共通鍵暗号関数に共通鍵を代入したものをハッシュ関数として用いることもできる。
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよいが、具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)等を、光磁気記録媒体として、MO(Magneto-Optical disc)等を、半導体メモリとしてEEP−ROM(Electronically Erasable and Programmable-Read Only Memory)等を用いることができる。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態のプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
また、各形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
10〜310 署名生成装置
20〜320 署名検証装置
Claims (22)
- 署名生成を行う署名生成装置であって、
整数の秘密鍵xを格納する第1記憶部と、
Mビット(M≧1)のリカバリメッセージmrec∈{0,1}Mを格納する第2記憶部と、
Nビット(N≧1)のクリアメッセージmclr∈{0,1}Nを格納する第3記憶部と、
整数の任意値kを生成する任意値生成部と、
位数qの巡回群をGとし、当該巡回群Gの生成元をgとした場合におけるR=gk∈Gを算出し、当該演算結果Rを出力する群演算部と、
出力ビット長がL+Mビット(Lは署名検証装置と共有される正の整数)のハッシュ関数H0:{0,1}*→{0,1}L+Mを、少なくとも上記演算結果Rに依存して定まる値βに作用させ、その演算結果であるL+Mビットのハッシュ値Π=H0(β)∈{0,1}L+Mを出力する第1ハッシュ演算部と、
署名検証装置との共有値h∈{0,1}Lを第1ビット位置に配置し、上記リカバリメッセージmrec∈{0,1}Mを第2ビット位置に配置したL+Mビットのビット結合値d=h|mrec∈{0,1}L+Mを算出し、当該ビット結合値dを出力するビット結合部と、
上記ハッシュ値Πと上記ビット結合値dとの排他的論理和r=Π(+)d∈{0,1}L+Mを算出し((+)は排他的論理和演算子)、当該排他的論理和値rを出力する排他的論理和演算部と、
出力値が整数のハッシュ関数H3:{0,1}*→Zを、少なくとも上記排他的論理和値rと上記クリアメッセージmclrとに依存して定まる値γに作用させ、その演算結果であるハッシュ値t=H3(γ)∈Zを出力する第3ハッシュ演算部と、
s=k−t・x∈Zを算出し、当該演算結果sを出力する整数演算部と、
署名σ=(r,s)と上記クリアメッセージmclrとを出力する署名出力部と、を有し、
上記値β及び上記値γの少なくとも一方の値は、
さらに、上記リカバリメッセージmrecのビット長Mに依存して決まる値である、
ことを特徴とする署名生成装置。 - 署名生成を行う署名生成装置であって、
整数の秘密鍵xを格納する第1記憶部と、
Mビット(M≧1)のリカバリメッセージmrec∈{0,1}Mを格納する第2記憶部と、
Nビット(N≧1)のクリアメッセージmclr∈{0,1}Nを格納する第3記憶部と、
整数の任意値kを生成する任意値生成部と、
位数qの巡回群をGとし、当該巡回群Gの生成元をgとした場合におけるR=gk∈Gを算出し、当該演算結果Rを出力する群演算部と、
出力ビット長がL+Mビット(Lは署名検証装置と共有される正の整数)のハッシュ関数H0:{0,1}*→{0,1}L+Mを、少なくとも上記演算結果Rに依存して定まる値βに作用させ、その演算結果であるL+Mビットのハッシュ値Π=H0(β)∈{0,1}L+Mを出力する第1ハッシュ演算部と、
署名検証装置との共有値h∈{0,1}Lを第1ビット位置に配置し、上記リカバリメッセージmrec∈{0,1}Mを第2ビット位置に配置したL+Mビットのビット結合値d=h|mrec∈{0,1}L+Mを算出し、当該ビット結合値dを出力するビット結合部と、
上記ハッシュ値Πと上記ビット結合値dとの排他的論理和r=Π(+)d∈{0,1}L+Mを算出し((+)は排他的論理和演算子)、当該排他的論理和値rを出力する排他的論理和演算部と、
出力値が整数のハッシュ関数H3:{0,1}*→Zを、少なくとも上記排他的論理和値rと上記クリアメッセージmclrとに依存して定まる値γに作用させ、その演算結果であるハッシュ値t=H3(γ)∈Zを出力する第3ハッシュ演算部と、
s=k−t・x∈Zを算出し、当該演算結果sを出力する整数演算部と、
署名σ=(r,s)と上記クリアメッセージmclrとを出力する署名出力部と、を有し、
上記値β及び上記値γの少なくとも一方の値は、
さらに、上記クリアメッセージmclrのビット長Nに依存して決まる値である、
ことを特徴とする署名生成装置。 - 署名生成を行う署名生成装置であって、
整数の秘密鍵xを格納する第1記憶部と、
Mビット(M≧1)のリカバリメッセージmrec∈{0,1}Mを格納する第2記憶部と、
Nビット(N≧1)のクリアメッセージmclr∈{0,1}Nを格納する第3記憶部と、
整数の任意値kを生成する任意値生成部と、
位数qの巡回群をGとし、当該巡回群Gの生成元をgとした場合におけるR=gk∈Gを算出し、当該演算結果Rを出力する群演算部と、
出力ビット長がL+Mビット(Lは署名検証装置と共有される正の整数)のハッシュ関数H0:{0,1}*→{0,1}L+Mを、少なくとも上記演算結果Rに依存して定まる値βに作用させ、その演算結果であるL+Mビットのハッシュ値Π=H0(β)∈{0,1}L+Mを出力する第1ハッシュ演算部と、
出力ビット長がLビットのハッシュ関数H1:{0,1}*→{0,1}Lを、少なくとも上記リカバリメッセージmrecに依存して定まる値αに作用させ、その演算結果であるLビットのハッシュ値h=H1(α)∈{0,1}Lを出力する第2ハッシュ演算部と、
上記ハッシュ値h=H 1 (α)∈{0,1}Lを第1ビット位置に配置し、上記リカバリメッセージmrec∈{0,1}Mを第2ビット位置に配置したL+Mビットのビット結合値d=h|mrec∈{0,1}L+Mを算出し、当該ビット結合値dを出力するビット結合部と、
上記ハッシュ値Πと上記ビット結合値dとの排他的論理和r=Π(+)d∈{0,1}L+Mを算出し((+)は排他的論理和演算子)、当該排他的論理和値rを出力する排他的論理和演算部と、
出力値が整数のハッシュ関数H3:{0,1}*→Zを、少なくとも上記排他的論理和値rと上記クリアメッセージmclrとに依存して定まる値γに作用させ、その演算結果であるハッシュ値t=H3(γ)∈Zを出力する第3ハッシュ演算部と、
s=k−t・x∈Zを算出し、当該演算結果sを出力する整数演算部と、
署名σ=(r,s)と上記クリアメッセージmclrとを出力する署名出力部と、
を有することを特徴とする署名生成装置。 - 署名生成を行う署名生成装置であって、
整数の秘密鍵xを格納する第1記憶部と、
Mビット(M≧1)のリカバリメッセージmrec∈{0,1}Mを格納する第2記憶部と、
Nビット(N≧1)のクリアメッセージmclr∈{0,1}Nを格納する第3記憶部と、
整数の任意値kを生成する任意値生成部と、
位数qの巡回群をGとし、当該巡回群Gの生成元をgとした場合におけるR=gk∈Gを算出し、当該演算結果Rを出力する群演算部と、
出力ビット長がL+Mビット(Lは署名検証装置と共有される正の整数)のハッシュ関数H0:{0,1}*→{0,1}L+Mを、少なくとも上記演算結果Rに依存して定まる値βに作用させ、その演算結果であるL+Mビットのハッシュ値Π=H0(β)∈{0,1}L+Mを出力する第1ハッシュ演算部と、
出力ビット長がLビットのハッシュ関数H1:{0,1}*→{0,1}Lを、少なくとも上記クリアメッセージmclrに依存して定まる値αに作用させ、その演算結果であるLビットのハッシュ値h=H1(α)∈{0,1}Lを出力する第2ハッシュ演算部と、
上記ハッシュ値h=H 1 (α)∈{0,1}Lを第1ビット位置に配置し、上記リカバリメッセージmrec∈{0,1}Mを第2ビット位置に配置したL+Mビットのビット結合値d=h|mrec∈{0,1}L+Mを算出し、当該ビット結合値dを出力するビット結合部と、
上記ハッシュ値Πと上記ビット結合値dとの排他的論理和r=Π(+)d∈{0,1}L+Mを算出し、当該排他的論理和値rを出力する排他的論理和演算部と、
出力値が整数のハッシュ関数H3:{0,1}*→Zを、少なくとも上記排他的論理和値rと上記クリアメッセージmclrとに依存して定まる値γに作用させ、その演算結果であるハッシュ値t=H3(γ)∈Zを出力する第3ハッシュ演算部と、
s=k−t・x∈Zを算出し、当該演算結果sを出力する整数演算部と、
署名σ=(r,s)と上記クリアメッセージmclrとを出力する署名出力部と、
を有することを特徴とする署名生成装置。 - 請求項3又は4に記載の署名生成装置であって、
上記値β及び上記値γの少なくとも一方の値は、
さらに、上記リカバリメッセージmrecのビット長Mに依存して決まる値である、
ことを特徴とする署名生成装置。 - 請求項3又は4に記載の署名生成装置であって、
上記値β及び上記値γの少なくとも一方の値は、
さらに、上記クリアメッセージmclrのビット長Nに依存して決まる値である、
ことを特徴とする署名生成装置。 - 署名検証する署名検証装置であって、
位数qの巡回群をGとし、当該巡回群Gの生成元をgとした場合における、署名生成装置の秘密鍵x∈Zに対応する公開鍵y=gx∈Gを格納する第1記憶部と、
署名σ’=(r’,s’)と上記クリアメッセージmclr’との入力を受け付ける署名入力部と、
上記署名σ’=(r’,s’)と上記クリアメッセージmclr’とを格納する第2記憶部と、
上記署名σ’のr’のビット長から値L(Lは署名生成装置と共有される正の整数)を減じた値M’を、上記署名σ’に対応するリカバリメッセージmrec’のビット長M’として抽出するビット長抽出部と、
上記ビット長M’を格納する第3記憶部と、
整数のハッシュ値を出力するハッシュ関数H3:{0,1}*→Zを、少なくとも上記署名σ’が有するr’と上記クリアメッセージmclr’とに依存して定まる値γ’に作用させ、その演算結果であるハッシュ値t’=H3(γ’)∈Zを出力する第1ハッシュ演算部と、
R’=gs’・yt’∈Gの演算を行い、その演算結果R’を出力する群演算部と、
出力ビット長がL+M’ビットのハッシュ関数H0:{0,1}*→{0,1}L+M’を、少なくとも上記演算結果R’に依存して定まる値β’に作用させ、その演算結果であるL+M’ビットのハッシュ値Π’=H0(β’)∈{0,1}L+M’を出力する第2ハッシュ演算部と、
上記ハッシュ値Π’と、上記署名σ’が有するr’との排他的論理和d’=Π’(+)r’∈{0,1}L+M’を算出し、当該排他的論理和値d’を出力する排他的論理和演算部と、
署名生成装置との共有値h∈{0,1}Lと、上記排他的論理和値d’の第1ビット位置のLビットの値h’∈{0,1}Lとを比較し、h’=hであることを条件に、検証が成功である旨の情報を出力する比較部と、を有し、
上記値β’及び上記値γ’の少なくとも一方の値は、
さらに、上記リカバリメッセージmrec’のビット長M’に依存して決まる値である、
ことを特徴とする署名検証装置。 - 署名検証する署名検証装置であって、
位数qの巡回群をGとし、当該巡回群Gの生成元をgとした場合における、署名生成装置の秘密鍵x∈Zに対応する公開鍵y=gx∈Gを格納する第1記憶部と、
署名σ’=(r’,s’)と上記クリアメッセージmclr’との入力を受け付ける署名入力部と、
上記署名σ’=(r’,s’)と上記クリアメッセージmclr’とを格納する第2記憶部と、
上記署名σ’に対応するリカバリメッセージmrec’のビット長M’を格納する第3記憶部と、
上記クリアメッセージmclr’のビット長N’を格納する第4記憶部と、
整数のハッシュ値を出力するハッシュ関数H3:{0,1}*→Zを、少なくとも上記署名σ’が有するr’と上記クリアメッセージmclr’とに依存して定まる値γ’に作用させ、その演算結果であるハッシュ値t’=H3(γ’)∈Zを出力する第1ハッシュ演算部と、
R’=gs’・yt’∈Gの演算を行い、その演算結果R’を出力する群演算部と、
出力ビット長がL+M’ビット(Lは署名生成装置と共有される正の整数)のハッシュ関数H0:{0,1}*→{0,1}L+M’を、少なくとも上記演算結果R’に依存して定まる値β’に作用させ、その演算結果であるL+M’ビットのハッシュ値Π’=H0(β’)∈{0,1}L+M’を出力する第2ハッシュ演算部と、
上記ハッシュ値Π’と、上記署名σ’が有するr’との排他的論理和d’=Π’(+)r’∈{0,1}L+M’を算出し、当該排他的論理和値d’を出力する排他的論理和演算部と、
署名生成装置との共有値h∈{0,1}Lと、上記排他的論理和値d’の第1ビット位置のLビットの値h’∈{0,1}Lとを比較し、h’=hであることを条件に、検証が成功である旨の情報を出力する比較部と、を有し、
上記値β’及び上記値γ’の少なくとも一方の値は、
さらに、上記クリアメッセージmclr’のビット長N’に依存して決まる値である、
ことを特徴とする署名検証装置。 - 署名検証する署名検証装置であって、
位数qの巡回群をGとし、当該巡回群Gの生成元をgとした場合における、署名生成装置の秘密鍵x∈Zに対応する公開鍵y=gx∈Gを格納する第1記憶部と、
署名σ’=(r’,s’)と上記クリアメッセージmclr’との入力を受け付ける署名入力部と、
上記署名σ’=(r’,s’)と上記クリアメッセージmclr’とを格納する第2記憶部と、
上記署名σ’に対応するリカバリメッセージmrec’のビット長M’を格納する第3記憶部と、
整数のハッシュ値を出力するハッシュ関数H3:{0,1}*→Zを、少なくとも上記署名σ’が有するr’と上記クリアメッセージmclr’とに依存して定まる値γ’に作用させ、その演算結果であるハッシュ値t’=H3(γ’)∈Zを出力する第1ハッシュ演算部と、
R’=gs’・yt’∈Gの演算を行い、その演算結果R’を出力する群演算部と、
出力ビット長がL+M’ビット(Lは署名生成装置と共有される正の整数)のハッシュ関数H0:{0,1}*→{0,1}L+M’を、少なくとも上記演算結果R’に依存して定まる値β’に作用させ、その演算結果であるL+M’ビットのハッシュ値Π’=H0(β’)∈{0,1}L+M’を出力する第2ハッシュ演算部と、
上記ハッシュ値Π’と、上記署名σ’が有するr’との排他的論理和d’=Π’(+)r’∈{0,1}L+M’を算出し、当該排他的論理和値d’を出力する排他的論理和演算部と、
出力ビット長がLビットのハッシュ関数H1:{0,1}*→{0,1}Lを、少なくとも上記排他的論理和値d’の第2ビット位置のM’ビットの値mrec’∈{0,1}M’に依存して定まる値α’に作用させ、その演算結果であるLビットのハッシュ値H1(α’)∈{0,1}Lを出力する第3ハッシュ演算部と、
上記排他的論理和値d’の第1ビット位置のLビットの値h’∈{0,1}Lと、上記ハッシュ値H1(α’)とを比較し、h’=H1(α’)が満たされることを条件に、検証が成功である旨の情報を出力する比較部と、
を有することを特徴とする署名検証装置。 - 署名検証する署名検証装置であって、
位数qの巡回群をGとし、当該巡回群Gの生成元をgとした場合における、署名生成装置の秘密鍵x∈Zに対応する公開鍵y=gx∈Gを格納する第1記憶部と、
署名σ’=(r’,s’)と上記クリアメッセージmclr’との入力を受け付ける署名入力部と、
上記署名σ’=(r’,s’)と上記クリアメッセージmclr’とを格納する第2記憶部と、
上記署名σ’に対応するリカバリメッセージmrec’のビット長M’を格納する第3記憶部と、
整数のハッシュ値を出力するハッシュ関数H3:{0,1}*→Zを、少なくとも上記署名σ’が有するr’と上記クリアメッセージmclr’とに依存して定まる値γ’に作用させ、その演算結果であるハッシュ値t’=H3(γ’)∈Zを出力する第1ハッシュ演算部と、
R’=gs’・yt’∈Gの演算を行い、その演算結果R’を出力する群演算部と、
出力ビット長がL+M’ビット(Lは署名生成装置と共有される正の整数)のハッシュ関数H0:{0,1}*→{0,1}L+M’を、少なくとも上記演算結果R’に依存して定まる値β’に作用させ、その演算結果であるL+M’ビットのハッシュ値Π’=H0(β’)∈{0,1}L+M’を出力する第2ハッシュ演算部と、
上記ハッシュ値Π’と、上記署名σ’が有するr’との排他的論理和d’=Π’(+)r’∈{0,1}L+M’を算出し、当該排他的論理和値d’を出力する排他的論理和演算部と、
出力ビット長がLビットのハッシュ関数H1:{0,1}*→{0,1}Lを、少なくとも上記クリアメッセージmclr’に依存して定まる値α’に作用させ、その演算結果であるLビットのハッシュ値H1(α’)∈{0,1}Lを出力する第3ハッシュ演算部と、
上記排他的論理和値d’の第1ビット位置のLビットの値h’∈{0,1}Lと、上記ハッシュ値H1(α’)とを比較し、h’=H1(α’)が満たされることを条件に、検証が成功である旨の情報を出力する比較部と、
を有することを特徴とする署名検証装置。 - 請求項9又は10に記載の署名検証装置であって、
上記値β’及び上記値γ’の少なくとも一方の値は、
さらに、上記リカバリメッセージmrec’のビット長M’に依存して決まる値である、
ことを特徴とする署名検証装置。 - 請求項9又は10に記載の署名検証装置であって、
上記値β’及び上記値γ’の少なくとも一方の値は、
さらに、上記クリアメッセージmclr’のビット長N’に依存して決まる値である、
ことを特徴とする署名検証装置。 - 署名生成を行う署名生成方法であって、
整数の秘密鍵xを第1記憶部に格納するステップと、
Mビット(M≧1)のリカバリメッセージmrec∈{0,1}Mを第2記憶部に格納するステップと、
Nビット(N≧1)のクリアメッセージmclr∈{0,1}Nを第3記憶部に格納するステップと、
任意値生成部が、整数の任意値kを生成するステップと、
群演算部が、位数qの巡回群をGとし、当該巡回群Gの生成元をgとした場合におけるR=gk∈Gを算出し、当該演算結果Rを出力するステップと、
第1ハッシュ演算部が、出力ビット長がL+Mビット(Lは署名検証装置と共有される正の整数)のハッシュ関数H0:{0,1}*→{0,1}L+Mを、少なくとも上記演算結果Rに依存して定まる値βに作用させ、その演算結果であるL+Mビットのハッシュ値Π=H0(β)∈{0,1}L+Mを出力するステップと、
ビット結合部が、署名検証装置との共有値h∈{0,1}Lを第1ビット位置に配置し、上記リカバリメッセージmrec∈{0,1}Mを第2ビット位置に配置したL+Mビットのビット結合値d=h|mrec∈{0,1}L+Mを算出し、当該ビット結合値dを出力するステップと、
排他的論理和演算部が、上記ハッシュ値Πと上記ビット結合値dとの排他的論理和r=Π(+)d∈{0,1}L+Mを算出し、当該排他的論理和値rを出力するステップと、
第3ハッシュ演算部が、出力値が整数のハッシュ関数H3:{0,1}*→Zを、少なくとも上記排他的論理和値rと上記クリアメッセージmclrとに依存して定まる値γに作用させ、その演算結果であるハッシュ値t=H3(γ)∈Zを出力するステップと、
整数演算部が、s=k−t・x∈Zを算出し、当該演算結果sを出力するステップと、
署名出力部が、署名σ=(r,s)と上記クリアメッセージmclrとを出力するステップと、を有し、
上記値β及び上記値γの少なくとも一方の値は、
さらに、上記リカバリメッセージmrecのビット長Mに依存して決まる値である、
ことを特徴とする署名生成方法。 - 署名生成を行う署名生成方法であって、
整数の秘密鍵xを第1記憶部に格納するステップと、
Mビット(M≧1)のリカバリメッセージmrec∈{0,1}Mを第2記憶部に格納するステップと、
Nビット(N≧1)のクリアメッセージmclr∈{0,1}Nを第3記憶部に格納するステップと、
任意値生成部が、整数の任意値kを生成するステップと、
群演算部が、位数qの巡回群をGとし、当該巡回群Gの生成元をgとした場合におけるR=gk∈Gを算出し、当該演算結果Rを出力するステップと、
第1ハッシュ演算部が、出力ビット長がL+Mビット(Lは署名検証装置と共有される正の整数)のハッシュ関数H0:{0,1}*→{0,1}L+Mを、少なくとも上記演算結果Rに依存して定まる値βに作用させ、その演算結果であるL+Mビットのハッシュ値Π=H0(β)∈{0,1}L+Mを出力するステップと、
ビット結合部が、署名検証装置との共有値h∈{0,1}Lを第1ビット位置に配置し、上記リカバリメッセージmrec∈{0,1}Mを第2ビット位置に配置したL+Mビットのビット結合値d=h|mrec∈{0,1}L+Mを算出し、当該ビット結合値dを出力するステップと、
排他的論理和演算部が、上記ハッシュ値Πと上記ビット結合値dとの排他的論理和r=Π(+)d∈{0,1}L+Mを算出し、当該排他的論理和値rを出力するステップと、
第3ハッシュ演算部が、出力値が整数のハッシュ関数H3:{0,1}*→Zを、少なくとも上記排他的論理和値rと上記クリアメッセージmclrとに依存して定まる値γに作用させ、その演算結果であるハッシュ値t=H3(γ)∈Zを出力するステップと、
整数演算部が、s=k−t・x∈Zを算出し、当該演算結果sを出力するステップと、
署名出力部が、署名σ=(r,s)と上記クリアメッセージmclrとを出力するステップと、を有し、
上記値β及び上記値γの少なくとも一方の値は、
さらに、上記クリアメッセージmclrのビット長Nに依存して決まる値である、
ことを特徴とする署名生成方法。 - 署名生成を行う署名生成方法であって、
整数の秘密鍵xを第1記憶部に格納するステップと、
Mビット(M≧1)のリカバリメッセージmrec∈{0,1}Mを第2記憶部に格納するステップと、
Nビット(N≧1)のクリアメッセージmclr∈{0,1}Nを第3記憶部に格納するステップと、
任意値生成部が、整数の任意値kを生成するステップと、
群演算部が、位数qの巡回群をGとし、当該巡回群Gの生成元をgとした場合におけるR=gk∈Gを算出し、当該演算結果Rを出力するステップと、
第1ハッシュ演算部が、出力ビット長がL+Mビット(Lは署名検証装置と共有される正の整数)のハッシュ関数H0:{0,1}*→{0,1}L+Mを、少なくとも上記演算結果Rに依存して定まる値βに作用させ、その演算結果であるL+Mビットのハッシュ値Π=H0(β)∈{0,1}L+Mを出力するステップと、
第2ハッシュ演算部が、出力ビット長がLビットのハッシュ関数H1:{0,1}*→{0,1}Lを、少なくとも上記リカバリメッセージmrecに依存して定まる値αに作用させ、その演算結果であるLビットのハッシュ値h=H1(α)∈{0,1}Lを出力するステップと、
ビット結合部が、上記ハッシュ値h=H 1 (α)∈{0,1}Lを第1ビット位置に配置し、上記リカバリメッセージmrec∈{0,1}Mを第2ビット位置に配置したL+Mビットのビット結合値d=h|mrec∈{0,1}L+Mを算出し、当該ビット結合値dを出力するステップと、
排他的論理和演算部が、上記ハッシュ値Πと上記ビット結合値dとの排他的論理和r=Π(+)d∈{0,1}L+Mを算出し、当該排他的論理和値rを出力するステップと、
第3ハッシュ演算部が、出力値が整数のハッシュ関数H3:{0,1}*→Zを、少なくとも上記排他的論理和値rと上記クリアメッセージmclrとに依存して定まる値γに作用させ、その演算結果であるハッシュ値t=H3(γ)∈Zを出力するステップと、
整数演算部が、s=k−t・x∈Zを算出し、当該演算結果sを出力するステップと、
署名出力部が、署名σ=(r,s)と上記クリアメッセージmclrとを出力するステップと、
を有することを特徴とする署名生成方法。 - 署名生成を行う署名生成方法であって、
整数の秘密鍵xを第1記憶部に格納するステップと、
Mビット(M≧1)のリカバリメッセージmrec∈{0,1}Mを第2記憶部に格納するステップと、
Nビット(N≧1)のクリアメッセージmclr∈{0,1}Nを第3記憶部に格納するステップと、
任意値生成部が、整数の任意値kを生成するステップと、
群演算部が、位数qの巡回群をGとし、当該巡回群Gの生成元をgとした場合におけるR=gk∈Gを算出し、当該演算結果Rを出力するステップと、
第1ハッシュ演算部が、出力ビット長がL+Mビット(Lは署名検証装置と共有される正の整数)のハッシュ関数H0:{0,1}*→{0,1}L+Mを、少なくとも上記演算結果Rに依存して定まる値βに作用させ、その演算結果であるL+Mビットのハッシュ値Π=H0(β)∈{0,1}L+Mを出力するステップと、
第2ハッシュ演算部が、出力ビット長がLビットのハッシュ関数H1:{0,1}*→{0,1}Lを、少なくとも上記クリアメッセージmclrに依存して定まる値αに作用させ、その演算結果であるLビットのハッシュ値h=H1(α)∈{0,1}Lを出力するステップと、
ビット結合部が、上記ハッシュ値h=H 1 (α)∈{0,1}Lを第1ビット位置に配置し、上記リカバリメッセージmrec∈{0,1}Mを第2ビット位置に配置したL+Mビットのビット結合値d=h|mrec∈{0,1}L+Mを算出し、当該ビット結合値dを出力するステップと、
排他的論理和演算部が、上記ハッシュ値Πと上記ビット結合値dとの排他的論理和r=Π(+)d∈{0,1}L+Mを算出し、当該排他的論理和値rを出力するステップと、
第3ハッシュ演算部が、出力値が整数のハッシュ関数H3:{0,1}*→Zを、少なくとも上記排他的論理和値rと上記クリアメッセージmclrとに依存して定まる値γに作用させ、その演算結果であるハッシュ値t=H3(γ)∈Zを出力するステップと、
整数演算部が、s=k−t・x∈Zを算出し、当該演算結果sを出力するステップと、
署名出力部が、署名σ=(r,s)と上記クリアメッセージmclrとを出力するステップと、
を有することを特徴とする署名生成方法。 - 署名検証する署名検証方法であって、
位数qの巡回群をGとし、当該巡回群Gの生成元をgとした場合における、署名生成装置の秘密鍵x∈Zに対応する公開鍵y=gx∈Gを第1記憶部に格納するステップと、
署名σ’=(r’,s’)と上記クリアメッセージmclr’とが署名入力部に入力されるステップと、
上記署名σ’=(r’,s’)と上記クリアメッセージmclr’とを第2記憶部に格納するステップと、
ビット長抽出部が、上記署名σ’のr’のビット長から値L(Lは署名生成装置と共有される正の整数)を減じた値M’を、上記署名σ’に対応するリカバリメッセージmrec’のビット長M’として抽出するステップと、
上記ビット長M’を第3記憶部に格納するステップと、
第1ハッシュ演算部が、整数のハッシュ値を出力するハッシュ関数H3:{0,1}*→Zを、少なくとも上記署名σ’が有するr’と上記クリアメッセージmclr’とに依存して定まる値γ’に作用させ、その演算結果であるハッシュ値t’=H3(γ’)∈Zを出力するステップと、
群演算部が、R’=gs’・yt’∈Gの演算を行い、その演算結果R’を出力するステップと、
第2ハッシュ演算部が、出力ビット長がL+M’ビットのハッシュ関数H0:{0,1}*→{0,1}L+M’を、少なくとも上記演算結果R’に依存して定まる値β’に作用させ、その演算結果であるL+M’ビットのハッシュ値Π’=H0(β’)∈{0,1}L+M’を出力するステップと、
排他的論理和演算部が、上記ハッシュ値Π’と、上記署名σ’が有するr’との排他的論理和d’=Π’(+)r’∈{0,1}L+M’を算出し、当該排他的論理和値d’を出力するステップと、
比較部が、署名生成装置との共有値h∈{0,1}Lと、上記排他的論理和値d’の第1ビット位置のLビットの値h’∈{0,1}Lとを比較し、h’=hであることを条件に、検証が成功である旨の情報を出力するステップと、を有し、
上記値β’及び上記値γ’の少なくとも一方の値は、
さらに、上記リカバリメッセージmrec’のビット長M’に依存して決まる値である、
ことを特徴とする署名検証方法。 - 署名検証する署名検証方法であって、
位数qの巡回群をGとし、当該巡回群Gの生成元をgとした場合における、署名生成装置の秘密鍵x∈Zに対応する公開鍵y=gx∈Gを第1記憶部に格納するステップと、
署名σ’=(r’,s’)と上記クリアメッセージmclr’とが署名入力部に入力されるステップと、
上記署名σ’=(r’,s’)と上記クリアメッセージmclr’とを第2記憶部に格納するステップと、
上記署名σ’に対応するリカバリメッセージmrec’のビット長M’を第3記憶部に格納するステップと、
上記クリアメッセージmclr’のビット長N’を第4記憶部に格納するステップと、
第1ハッシュ演算部が、整数のハッシュ値を出力するハッシュ関数H3:{0,1}*→Zを、少なくとも上記署名σ’が有するr’と上記クリアメッセージmclr’とに依存して定まる値γ’に作用させ、その演算結果であるハッシュ値t’=H3(γ’)∈Zを出力するステップと、
群演算部が、R’=gs’・yt’∈Gの演算を行い、その演算結果R’を出力するステップと、
第2ハッシュ演算部が、出力ビット長がL+M’ビット(Lは署名生成装置と共有される正の整数)のハッシュ関数H0:{0,1}*→{0,1}L+M’を、少なくとも上記演算結果R’に依存して定まる値β’に作用させ、その演算結果であるL+M’ビットのハッシュ値Π’=H0(β’)∈{0,1}L+M’を出力するステップと、
排他的論理和演算部が、上記ハッシュ値Π’と、上記署名σ’が有するr’との排他的論理和d’=Π’(+)r’∈{0,1}L+M’を算出し、当該排他的論理和値d’を出力するステップと、
比較部が、署名生成装置との共有値h∈{0,1}Lと、上記排他的論理和値d’の第1ビット位置のLビットの値h’∈{0,1}Lとを比較し、h’=hであることを条件に、検証が成功である旨の情報を出力するステップと、を有し、
上記値β’及び上記値γ’の少なくとも一方の値は、
さらに、上記クリアメッセージmclr’のビット長N’に依存して決まる値である、
ことを特徴とする署名検証方法。 - 署名検証する署名検証方法であって、
位数qの巡回群をGとし、当該巡回群Gの生成元をgとした場合における、署名生成装置の秘密鍵x∈Zに対応する公開鍵y=gx∈Gを第1記憶部に格納するステップと、
署名σ’=(r’,s’)と上記クリアメッセージmclr’とが署名入力部に入力されるステップと、
上記署名σ’=(r’,s’)と上記クリアメッセージmclr’とを第2記憶部に格納するステップと、
上記署名σ’に対応するリカバリメッセージmrec’のビット長M’を第3記憶部に格納するステップと、
第1ハッシュ演算部が、整数のハッシュ値を出力するハッシュ関数H3:{0,1}*→Zを、少なくとも上記署名σ’が有するr’と上記クリアメッセージmclr’とに依存して定まる値γ’に作用させ、その演算結果であるハッシュ値t’=H3(γ’)∈Zを出力するステップと、
群演算部が、R’=gs’・yt’∈Gの演算を行い、その演算結果R’を出力するステップと、
第2ハッシュ演算部が、出力ビット長がL+M’ビット(Lは署名生成装置と共有される正の整数)のハッシュ関数H0:{0,1}*→{0,1}L+M’を、少なくとも上記演算結果R’に依存して定まる値β’に作用させ、その演算結果であるL+M’ビットのハッシュ値Π’=H0(β’)∈{0,1}L+M’を出力するステップと、
排他的論理和演算部が、上記ハッシュ値Π’と、上記署名σ’が有するr’との排他的論理和d’=Π’(+)r’∈{0,1}L+M’を算出し、当該排他的論理和値d’を出力するステップと、
第3ハッシュ演算部が、出力ビット長がLビットのハッシュ関数H1:{0,1}*→{0,1}Lを、少なくとも上記排他的論理和値d’の第2ビット位置のM’ビットの値mrec’∈{0,1}M’に依存して定まる値α’に作用させ、その演算結果であるLビットのハッシュ値H1(α’)∈{0,1}Lを出力するステップと、
比較部が、上記排他的論理和値d’の第1ビット位置のLビットの値h’∈{0,1}Lと、上記ハッシュ値H1(α’)とを比較し、h’=H1(α’)が満たされることを条件に、検証が成功である旨の情報を出力するステップと、
を有することを特徴とする署名検証方法。 - 署名検証する署名検証方法であって、
位数qの巡回群をGとし、当該巡回群Gの生成元をgとした場合における、署名生成装置の秘密鍵x∈Zに対応する公開鍵y=gx∈Gを第1記憶部に格納するステップと、
署名σ’=(r’,s’)と上記クリアメッセージmclr’とが署名入力部に入力されるステップと、
上記署名σ’=(r’,s’)と上記クリアメッセージmclr’とを第2記憶部に格納するステップと、
上記署名σ’に対応するリカバリメッセージmrec’のビット長M’を第3記憶部に格納するステップと、
第1ハッシュ演算部が、整数のハッシュ値を出力するハッシュ関数H3:{0,1}*→Zを、少なくとも上記署名σ’が有するr’と上記クリアメッセージmclr’とに依存して定まる値γ’に作用させ、その演算結果であるハッシュ値t’=H3(γ’)∈Zを出力するステップと、
群演算部が、R’=gs’・yt’∈Gの演算を行い、その演算結果R’を出力するステップと、
第2ハッシュ演算部が、出力ビット長がL+M’ビット(Lは署名生成装置と共有される正の整数)のハッシュ関数H0:{0,1}*→{0,1}L+M’を、少なくとも上記演算結果R’に依存して定まる値β’に作用させ、その演算結果であるL+M’ビットのハッシュ値Π’=H0(β’)∈{0,1}L+M’を出力するステップと、
排他的論理和演算部が、上記ハッシュ値Π’と、上記署名σ’が有するr’との排他的論理和d’=Π’(+)r’∈{0,1}L+M’を算出し、当該排他的論理和値d’を出力するステップと、
第3ハッシュ演算部が、出力ビット長がLビットのハッシュ関数H1:{0,1}*→{0,1}Lを、少なくとも上記クリアメッセージmclr’に依存して定まる値α’に作用させ、その演算結果であるLビットのハッシュ値H1(α’)∈{0,1}Lを出力するステップと、
比較部が、上記排他的論理和値d’の第1ビット位置のLビットの値h’∈{0,1}Lと、上記ハッシュ値H1(α’)とを比較し、h’=H1(α’)が満たされることを条件に、検証が成功である旨の情報を出力するステップと、
を有することを特徴とする署名検証方法。 - 請求項1から6の何れかに記載の署名生成装置としてコンピュータを機能させるためのプログラム。
- 請求項7から12の何れかに記載の署名検証装置としてコンピュータを機能させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006295599A JP4814755B2 (ja) | 2006-10-31 | 2006-10-31 | 署名生成装置、署名検証装置、それらの方法及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006295599A JP4814755B2 (ja) | 2006-10-31 | 2006-10-31 | 署名生成装置、署名検証装置、それらの方法及びプログラム |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2008113315A JP2008113315A (ja) | 2008-05-15 |
JP2008113315A5 JP2008113315A5 (ja) | 2009-04-02 |
JP4814755B2 true JP4814755B2 (ja) | 2011-11-16 |
Family
ID=39445574
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006295599A Expired - Fee Related JP4814755B2 (ja) | 2006-10-31 | 2006-10-31 | 署名生成装置、署名検証装置、それらの方法及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4814755B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110768799B (zh) * | 2019-12-30 | 2020-04-14 | 中国银联股份有限公司 | 数字签名方法、装置、设备及介质、系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2702280C (en) * | 2007-10-29 | 2013-08-20 | Nippon Telegraph And Telephone Corporation | Signature generating apparatus, signature verifying apparatus and methods therefor |
JP2009246657A (ja) * | 2008-03-31 | 2009-10-22 | Nippon Telegr & Teleph Corp <Ntt> | メッセージ復元システムおよび方法 |
-
2006
- 2006-10-31 JP JP2006295599A patent/JP4814755B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2008113315A (ja) | 2008-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2207156B1 (en) | Signature generating device, signature verifying device, their methods, and their programs | |
US10521616B2 (en) | Remote re-enrollment of physical unclonable functions | |
CN106878013B (zh) | 一种文件的加密、解密方法和装置 | |
US20190058580A1 (en) | System and method for publication of private data using a blockchain network | |
JP5299286B2 (ja) | 分散情報生成装置、復元装置、検証装置及び秘密情報分散システム | |
CN111325535A (zh) | 基于椭圆曲线偏移的区块链私钥管理方法、系统及存储介质 | |
Chen et al. | Complete and improved FPGA implementation of classic McEliece | |
CN110716728A (zh) | Fpga逻辑的可信更新方法及装置 | |
JP4928412B2 (ja) | 署名生成装置、署名検証装置、それらの方法及びプログラム | |
JP5511803B2 (ja) | 対称暗号を実行するための技法 | |
WO2018216512A1 (ja) | 秘密改ざん検知システム、秘密改ざん検知装置、秘密改ざん検知方法、およびプログラム | |
JP4814755B2 (ja) | 署名生成装置、署名検証装置、それらの方法及びプログラム | |
WO2019163636A1 (ja) | 秘密計算装置、秘密計算認証システム、秘密計算方法、およびプログラム | |
CN116015633A (zh) | 数据加密方法、数据解密方法及相关装置 | |
WO2015032921A1 (fr) | Procédé de gestion de cohérence de caches | |
JPWO2006114841A1 (ja) | 情報処理方法および情報処理システム | |
JP5381981B2 (ja) | 分散情報生成装置 | |
KR101987752B1 (ko) | 차량 내 탑재되어 있는 ecu들에 대해 암호화된 방식으로 세션 키의 배포를 처리하는 키 배포 처리 장치 및 그 동작 방법 | |
JP5573041B2 (ja) | 情報処理装置、コード生成方法、コード検証方法およびプログラム | |
WO2024012431A1 (zh) | 一种格基签名高效并行快速实现方法 | |
JP7317261B2 (ja) | 暗号化装置、復号装置、暗号化方法、暗号化プログラム、復号方法及び復号プログラム | |
JP6830868B2 (ja) | 追加データ付き認証暗号システム、復号装置、追加データ付き認証暗号方法、およびプログラム | |
WO2024057411A1 (ja) | メモリ更新装置、情報処理システム、メモリ更新方法及びコンピュータ可読媒体 | |
JP3881273B2 (ja) | 暗号鍵生成装置、暗号鍵生成プログラムおよびそのプログラムを記録した記録媒体 | |
US20240121082A1 (en) | Method for creating a trusted map of verified secure nodes for a network of nodes in a quantum internet |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090210 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090210 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110621 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110727 |
|
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: 20110816 |
|
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: 20110826 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4814755 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140902 Year of fee payment: 3 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |