JP4928412B2 - 署名生成装置、署名検証装置、それらの方法及びプログラム - Google Patents
署名生成装置、署名検証装置、それらの方法及びプログラム Download PDFInfo
- Publication number
- JP4928412B2 JP4928412B2 JP2007280287A JP2007280287A JP4928412B2 JP 4928412 B2 JP4928412 B2 JP 4928412B2 JP 2007280287 A JP2007280287 A JP 2007280287A JP 2007280287 A JP2007280287 A JP 2007280287A JP 4928412 B2 JP4928412 B2 JP 4928412B2
- Authority
- JP
- Japan
- Prior art keywords
- value
- hash
- signature
- bit
- exclusive
- 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.)
- Active
Links
Images
Description
メッセージm∈{0,1}k2
関数F1:{0,1}k2→{0,1}k1
関数F2:{0,1}k1→{0,1}k2
関数H:{0,1}k1+k2→{0,1}k
E:有限体Fq上で定義された楕円曲線
p:楕円曲線E上の点Rに対して楕円スカラー倍値p・R=O(Oは無限遠点)を満たす素数
G1:楕円曲線E上の位数pの部分集合の点
w∈Z/pZ
秘密鍵:x∈Z/pZ
公開鍵:(Fq,E,G1,Y)(Y=−x・G1(∈E))
とする。なお、{0,1}δは、2進δ桁のビットデータを示し、{0,1}δ→{0,1}εは、2進δ桁のビットデータから2進ε桁のビットデータへの写像である関数を示す。
署名生成は以下のように行う。ただし、Rxは点R∈Eのx座標を示し、(+)は排他的論理和演算子を示す。
m’=F1(m)|(F2(F1(m))(+)m) …(1)
R x =(w・G1)x
r=R x (+)m’ …(2)
c=H(r)
z=w+c・x mod p
署名σ=(r,z)
署名検証は以下のように行う。ただし、[m’]k1はm’の先頭k1ビットを示し、[m’]k2はm’の残りのk2ビットを示す。
m’=r(+)(z・G1+H(r)・Y)x
m=[m’]k2(+)F2([m’]k1)
[m’]k1=F1(m)であれば検証合格
Masayuki Abe, Tatsuaki Okamoto, "A Signature Scheme with Message Recovery as Secure as Discrete Logarithm," ASIACRYPT 1999, pp.378-389
まず、整数の秘密鍵をxとし、Mビットのリカバリメッセージをmrec∈{0,1}Mとする。ここで、リカバリメッセージmrecが、署名対象の少なくとも一部となる。そして、署名生成装置の任意値生成部が、整数の任意値kを生成し、群演算部が、位数qの巡回群をGとし、当該巡回群Gの生成元をgとした場合におけるR=gk∈Gを算出し、当該演算結果Rを得る。なお、「gk∈G」とは、巡回群Gをなす演算をgについてk回実行することを意味する(詳細は後述)。次に、署名生成装置の第1ハッシュ演算部が、リカバリメッセージmrecのビット長Mに応じて出力ビット長がL+Mビット(Lは署名検証装置と共有される正の整数)に定まるハッシュ関数H0:{0,1}*→{0,1}L+Mを、演算結果Rに作用させ、その演算結果であるL+Mビットのハッシュ値Π=H0(R)∈{0,1}L+Mを得る。なお、「関数εをδに作用させる」とは、「δ又はδを特定するための値を関数εに代入する」ことを意味する。次に、署名生成装置の第2ハッシュ演算部が、入力値に対してLビットのハッシュ値を出力するハッシュ関数H1:{0,1}*→{0,1}Lを、ハッシュ値Πとリカバリメッセージmrecとに対応する値αに作用させ、その演算結果であるLビットのハッシュ値h=H1(α)∈{0,1}Lを得る。また、署名生成装置の第3ハッシュ演算部が、リカバリメッセージmrecのビット長Mに応じて出力ビット長がMビットに定まるハッシュ関数H2:{0,1}*→{0,1}Mを、ハッシュ値Πとハッシュ値hとに対応する値βに作用させ、その演算結果であるMビットのハッシュ値u=H2(β)∈{0,1}Mを得る。さらに、署名生成装置の第1排他的論理和演算部が、リカバリメッセージmrecとハッシュ値uとの排他的論理和w=mrec(+)u∈{0,1}M((+)は排他的論理和演算子)を算出し、当該排他的論理和値wを得る。またビット結合部が、ハッシュ値h∈{0,1}Lを第1ビット位置に配置し、排他的論理和値w∈{0,1}Mを第2ビット位置に配置したL+Mビットのビット結合値d=h|w∈{0,1}L+Mを算出し、当該ビット結合値dを得る。なお、第1ビット位置は必ずしも連続したLビットの位置である必要はなく、離散的に配置された合計Lビットの位置でもよい。同様に、第2ビット位置も必ずしも連続したMビットの位置である必要はなく、離散的に配置された合計Mビットの位置でもよい。ただし、「第1ビット位置」及び「第2ビット位置」がどのビット位置であるかについては、署名生成装置と署名検証装置とで統一しておく。次に、署名生成装置の第2排他的論理和演算部が、ハッシュ値Πとビット結合値dとの排他的論理和r=Π(+)d∈{0,1}L+Mを算出し、当該排他的論理和値rを得る。また署名生成装置の第4ハッシュ演算部が、入力値に対して整数を出力するハッシュ関数H3:{0,1}*→Zを、排他的論理和値rに対応する値γに作用させ、その演算結果であるハッシュ値t=H3(γ)∈Zを得る。そして、整数演算部が、s=k−t・x∈Zを算出し、当該演算結果sを得、署名出力部が署名σ=(r,s)を出力する。
ここで本発明では、リカバリメッセージのビット長に従って出力ビット長が変化するハッシュ関数を用い、処理方法を工夫することにより、リカバリメッセージのビット長が変化しても、各排他的論理和演算の対象となる2つの被演算子のビット長を常に同一とできる。これにより、リカバリメッセージのビット長が短い場合には、それに併せて各演算過程での演算ビット数や署名σを構成するrのビット数を短くでき、効率的な署名方式が実現できる。同時に、リカバリメッセージのビット長が長くなっても、リカバリメッセージmrecの全てのビットを対象としたメッセージ復元署名が生成できる。
まず、本発明の第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(図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,10i,10j,10pと、排他的論理和演算部10k,10nと、ビット結合部10mと、整数演算部10qと、通信部10rと、制御部10sと、一時メモリ10tとを有する。
次に、署名検証装置20の構成を説明する。
図2に示した署名生成装置10のハードウェア構成と同様である。
署名検証装置20も図2に示したようなコンピュータに所定のプログラムが読み込まれることにより構成される。図5は、このように構成される第1実施形態の署名検証装置20の機能構成を例示したブロック図である。なお、図5における矢印はデータの流れを示すが、一時メモリ20nや制御部20pに入出力されるデータの流れは省略してある。
次に、本形態の処理について説明する。
まず、署名システム1で使用する位数qの離散対数問題の求解が困難な巡回群Gとその生成元g∈Gとを決定する。このような巡回群Gとしては、例えば、楕円曲線上の有理点のなす群や有限体の乗法群などを用いることができる。なお、楕円曲線上の有理点のなす群を用いる場合、生成元gは楕円曲線上の点g=(g1,g2)であり、有限体の乗法群を用いる場合、生成元gは2以上の整数である。また、楕円曲線上の有理点のなす群をコンピュータ上で実現するための具体的方法には様々なもの(例えば、「N. Koblitz. Elliptic Curve Cryptosystems. Math. Comp., Vol. 48, No. 17, pp. 203-209, 1987.」「Victor S. Miller. Use of Elliptic Curves in Cryptography. In Advances in Cryptology - CRYPTO ’85, Vol. 218 of Lecture Notes in Computer Science, pp. 417-426. Springer, 1986.」)が存在し、実際、楕円曲線上の有理点のなす群で構成され、コンピュータ上で実装可能な様々な暗号方式が存在する。また、安全性の面から位数qは素数であることが望ましいが、qの素因数分解が困難であるならqは素数でなくてもかまわない。また、署名システム1で使用するビット長パラメータL∈Z>0(0より大きな整数)を決定する。
次に、署名生成装置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上の点となる。なお、楕円スカラー倍演算をコンピュータ上で実行する具体的な方法としては、二進展開法、移動窓法等の公知の演算方法を例示できる(例えば、参考文献1“イアン・F・ブラケ、ガディエル・セロッシ、ナイジェル・P・スマート=著、鈴木治郎=訳、「楕円曲線暗号」、出版=ピアソン・エデュケーション、ISBN4-89471-431-0”等参照)。また、例えば、巡回群Gが有限体の乗法群であった場合、式(3)の右辺は、gxmod p(ただし、gは2以上の整数、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に従って本形態の署名生成処理を説明する。
メッセージ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に格納される。
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(R)∈{0,1}L+M …(5)
を記憶部10aに出力して格納する(ステップS15)。なお、例えば、巡回群Gが楕円曲線E上の有理点のなす群であった場合、式(5)の右辺は、楕円曲線E上の点である演算結果Rを一義的又は限定的に特定できる値(例えば、点Rのx座標若しくはy座標、又は、点Rのx座標とy座標とのビット結合値)にハッシュ関数H0を作用させる演算を意味する。すなわち、この場合の「ハッシュ関数H0を演算結果Rに作用させる」とは、ハッシュ関数H0を、楕円曲線E上の点である演算結果Rを一義的又は限定的に特定できる値に作用させることを意味する。また、例えば、巡回群Gが有限体の乗法群であった場合、式(5)の右辺は、スカラー値である演算結果Rにハッシュ関数H0を作用させる演算を意味する。
図7(a)は、ステップ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である。
H(e,R) …(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)。
Π=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の処理の例]の説明終わり)。
h=H1(α)∈{0,1}L …(6)
を記憶部10aに出力して格納する(ステップS16)。なお、第1実施形態では、αはハッシュ値Πとリカバリメッセージmrecとのみに依存する値α=(Π,mrec)である。なお、本形態のαの構成方法に限定はないが、αの構成方法は後述する署名検証装置20でのα’(後述)の構成方法と同一とする。αの構成例としては以下のようなものがある。
〔α−2〕Πを下位L+Mビットとし、mrecを上位Mビットとして結合したL+2Mビットの値をαとする。
〔α−3〕mrecを上位から奇数番目のビット(合計Mビット)とし、Πをその他のL+Mビットとして結合したL+2Mビットの値をαとする。
u=H2(β)∈{0,1}M …(7)
を記憶部10aに出力して格納する(ステップS17)。なお、第1実施形態では、βはハッシュ値Πとハッシュ値hとのみに依存する値β=(Π,h)である。本形態のβの構成方法に限定はないが、βの構成方法は後述する署名検証装置20でのβ’(後述)の構成方法と同一とする。βの構成例としては以下のようなものがある。
〔β−2〕Πを下位L+Mビットとし、hを上位Lビットとして結合した2L+Mビットの値をβとする。
〔β−3〕hを上位から奇数番目のビット(合計Lビット)とし、Πをその他のL+Mビットとして結合した2L+Mビットの値をβとする。
図7(b)は、ステップS17の処理の例を説明するためのフローチャートである。
まず、リカバリメッセージのビット長Mがハッシュ演算回数算出部10jaに読み込まれる。ハッシュ演算回数算出部10jaは、
emax=rounddown{M/length(H)} …(7-1)
の演算を行ってemax
を一時メモリ10tに格納する(ステップS17a)。
次に、部分ハッシュ演算部10jbが、一時メモリ10tから変数eを読み込み、記憶部10aからハッシュ値Π,hを読み込み、ハッシュ値
H(e,β),β=(Π,h) …(7-2)
を算出して一時メモリ10tに格納する(ステップS17c)。
e=emax …(7-3)
を満たすか否かを判断する(ステップS17d)。ここで、式(7−3)を満たさないのであれば、制御部10sはe+1を新たなeとし、新たなeを一時メモリ10tに格納した後(ステップS17e)、処理をステップS17cに戻す。一方、式(7−3)を満たすのであれば、制御部10sはビット結合部10jcに指示を与え、ビット結合部10jcは、一時メモリ10tから各ハッシュ値H(0,β),H(1,β),H(2,β),…,H(emax,β)を読み込み、それらのビット結合値
HC(β)=H(0,β)|・・・|H(emax,β) …(7-4)
を算出して一時メモリ10tに格納する(ステップS17f)。
Π=H0(β)=delete{length(HC(β))-length(M),HC(β)} …(7-5)
を算出して記憶部10aに出力する(ステップS17g)。
w=mrec(+)u∈{0,1}M …(8)
((+)は排他的論理和演算子)を算出し、当該排他的論理和値wを記憶部10aに出力して格納する(ステップS18)。
d=h|w∈{0,1}L+M …(9)
を算出し、当該ビット結合値dを記憶部10aに出力して格納する(ステップS19)。なお、「第1ビット位置」及び「第2ビット位置」をどのビット位置にするかについて特に限定はない。しかし、署名生成装置10と署名検証装置20との間では、「第1ビット位置」及び「第2ビット位置」をどのビット位置にするかの基準を同一にしなければならない。図9に「第1ビット位置」及び「第2ビット位置」の設定例を示す。
r=Π(+)d∈{0,1}L+M …(10)
を算出し、当該排他的論理和値rを記憶部10aに出力して格納する(ステップS20)。
t=H3(γ)∈Zq …(11)
を記憶部10aに出力して格納する(ステップS21)。なお、第1実施形態では、γは排他的論理和値rとクリアメッセージmclrとのみに依存する値γ=(r,mclr)である。本形態のγの構成方法に限定はないが、γの構成方法は後述する署名検証装置20でのγ’(後述)の構成方法と同一とする。γの構成例としては以下のようなものがある。
〔γ−2〕rを下位L+Mビットとし、mclrを上位Nビットとして結合したL+M+Nビットの値をγとする。
〔γ−3〕mclrを上位から奇数番目のビット(合計Nビット)とし、rをその他のL+Mビットとして結合したL+M+Nビットの値をγとする。
s=k-t・x∈Zq …(12)
を算出し、当該演算結果sを記憶部10aに出力して格納する(ステップS22)。
次に、第1実施形態の署名検証処理について説明する。
図8は、第1実施形態の署名検証処理を説明するためのフローチャートである。以下、図8に従って本形態の署名検証処理を説明する。
M'=length(r')‐L …(13)
により、署名σ’に対応するリカバリメッセージmrec’のビット長M’を算出し、記憶部20aに格納する(ステップS42)。
t’=H3(γ’) …(14)
を記憶部20aに出力して格納する(ステップS43)。なお、γ’の構成方法は前述した署名生成装置10でのγの構成方法と同一(r=r’とし、mclr=mclr’とした場合に同一)とする。
R’=gs’・yt’∈G …(15)
の演算を行い、その演算結果R’を記憶部20aに出力して格納する(ステップS44)。なお、例えば、巡回群Gが楕円曲線E上の有理点のなす群であった場合、式(15)の右辺は、楕円曲線E上の点である生成元g=(g1,g2)を楕円スカラー倍(楕円s’倍)し、公開鍵y=(y1,y2)を楕円スカラー倍(楕円t’倍)し、それらの演算結果を楕円加算する演算(s’・g+t’・y∈E)を意味し、演算結果R’は楕円曲線E上の点となる。なお、楕円スカラー倍演算をCPU上で実行する具体的な方法としては、二進展開法、移動窓法等の公知の演算方法を例示できる。また、例えば、巡回群Gが有限体の乗法群であった場合、式(15)の右辺は、gs’・yt’mod pの演算を意味し、演算結果R’はスカラー値となる。
Π'=H0(R')∈{0,1}L+M' …(16)
を記憶部20aに出力して格納する(ステップS45)。なお、H0(R’)の演算は、署名生成装置10の場合と同一(R=R’の場合に同一)とする。
d’=Π’(+)r’∈{0,1}L+M’ …(17)
を算出し、当該排他的論理和値d’を記憶部20aに出力して格納する(ステップS46)。
u'=H2(β')∈{0,1}M' …(18)
を記憶部20aに出力して格納する(ステップS48)。なお、β'の構成方法は前述した署名生成装置10でのβの構成方法と同一(Π=Π’とし、h=h’とした場合に同一)とする。
mrec’=w’(+)u’∈{0,1}M …(19)
を算出し、その演算結果をリカバリメッセージmrec’∈{0,1}M’として記憶部20aに出力して格納する(ステップS49)。
H1(α’)∈{0,1}L …(20)
を記憶部20aに出力して格納する(ステップS50)。なお、α’の構成方法は前述した署名生成装置10でのαの構成方法と同一(Π=Π’とし、mrec=mrec’とした場合に同一)とする。
h'=H1(α’) …(21)
を満たすか否かを判断する(ステップS51)。
次に、本発明の第2実施形態について説明する。第2実施形態ではクリアメッセージを用いない。この点が第1実施形態との相違点である。以下では、第1実施形態との相違点を中心に説明し、第1実施形態と共通する事項については説明を省略する。
第1実施形態の署名システム1の署名生成装置10が署名生成装置110に置換され、署名検証装置20が署名検証装置120に置換された構成である。
次に、署名生成装置110の構成を説明する。
第1実施形態の署名生成装置10と同じである。
署名生成装置110もコンピュータに所定のプログラムが読み込まれることにより構成される。
図10は、このように構成される第2実施形態における署名生成装置110の機能構成を例示したブロック図である。なお、署名生成装置110において署名生成装置10と共通する部分には図3と同じ符号を付して説明を簡略化する。
図10に示すように、本形態の署名生成装置110は、記憶部10aと、秘密鍵生成部10bと、公開鍵生成部10cと、入力部110dと、ビット長抽出部110eと、任意値生成部10fと、群演算部10gと、ハッシュ演算部10h,10i,10j,110pと、排他的論理和演算部10k,10nと、ビット結合部10mと、整数演算部10qと、通信部110rと、制御部10sと、一時メモリ10tとを有する。
次に、署名検証装置120の構成を説明する。
第1実施形態の署名検証装置20と同じである。
署名検証装置120もコンピュータに所定のプログラムが読み込まれることにより構成される。図11は、このように構成される第2実施形態の署名検証装置120の機能構成を例示したブロック図である。
図11に示すように、本形態の署名検証装置120は、記憶部20aと、通信部120bと、ビット長抽出部20cと、ハッシュ演算部120d,20f,20i,20kと、群演算部20eと、排他的論理和演算部20gと、ビット抽出部20hと、排他的論理和演算部20jと、比較部20lと、出力部20mと、制御部20nと、一時メモリ20pとを有する。
次に、本形態の処理について説明する。
第1実施形態と同じである。
次に、第2実施形態の署名生成処理について説明する。
図12は、第2実施形態の署名生成処理を説明するためのフローチャートである。以下、図12に従って本形態の署名生成処理を説明する。
次に、ビット長抽出部110eが、記憶部10aからリカバリメッセージmrec∈{0,1}Mを読み込み、そのビット長Mを抽出して記憶部10aに格納する(ステップS112)。
t=H3(γ)∈Zq …(22)
を記憶部10aに出力して格納する(ステップS121)。なお、第2実施形態では、γは排他的論理和値rのみに依存する値γ=(r)である。本形態のγの構成方法に限定はないが、γの構成方法は後述する署名検証装置120でのγ’(後述)の構成方法と同一とする。
次に、通信部110rに、排他的論理和値rと演算結果sが読み込まれ、通信部10rは、署名σ=(r,s)をネットワーク40を通じて署名検証装置120に送信する(ステップS123)。
次に、第2実施形態の署名検証処理について説明する。
t’=H3(γ’) …(23)
を記憶部20aに出力して格納する(ステップS143)。なお、γ’の構成方法は前述した署名生成装置110でのγの構成方法と同一(r=r’とした場合に同一)とする。
次に、本発明の第3実施形態について説明する。本形態は第1実施形態の変形例であり、署名σ=(r,s)を構成するrを簡略化した例である。すなわち、第1実施形態においてr=H0(R)(+)H1(H0(R), mrec)|mrec(+)H2(H0(R),H1(H0(R),mrec))としていたのに対し、第3実施形態ではr=H1(R, mrec)|mrec(+) H2(R, H1(R, mrec))とする。これにより演算量を削減できる。以下では、第1実施形態との相違点を中心に説明し、第1実施形態と共通する事項については説明を省略する。
第1実施形態の署名システム1の署名生成装置10が署名生成装置210に置換され、署名検証装置20が署名検証装置220に置換された構成である。
次に、署名生成装置210の構成を説明する。
第1実施形態の署名生成装置10と同じである。
署名生成装置210もコンピュータに所定のプログラムが読み込まれることにより構成される。
図14は、このように構成される第3実施形態における署名生成装置210の機能構成を例示したブロック図である。なお、署名生成装置210において署名生成装置10と共通する部分には図3と同じ符号を付して説明を簡略化する。
図14に示すように、本形態の署名生成装置210は、記憶部10aと、秘密鍵生成部10bと、公開鍵生成部10cと、入力部10dと、メッセージ分割部10eと、任意値生成部10fと、群演算部10gと、ハッシュ演算部210i,210j,210pと、排他的論理和演算部10kと、ビット結合部210mと、整数演算部10qと、通信部10rと、制御部10sと、一時メモリ10tとを有する。
また、上記のプログラムは単体でその機能を実現できるものでもよいし、当該プログラムがさらに他のライブラリ(記載していない)を読み出して各機能を実現するものでもよい。すなわち、各プログラムの少なくとも一部が、署名生成装置210の機能をコンピュータに実行させるためのプログラムに相当する。
次に、署名検証装置220の構成を説明する。
第1実施形態の署名検証装置20と同じである。
署名検証装置220もコンピュータに所定のプログラムが読み込まれることにより構成される。図11は、このように構成される第2実施形態の署名検証装置120の機能構成を例示したブロック図である。
図15に示すように、本形態の署名検証装置220は、記憶部20aと、通信部20bと、ビット長抽出部20cと、ハッシュ演算部20d,220i,220kと、群演算部20eと、ビット抽出部20hと、排他的論理和演算部20jと、比較部20lと、出力部20mと、制御部20nと、一時メモリ20pとを有する。
次に、本形態の処理について説明する。
ハッシュ関数H0が設定されない点が第1実施形態との相違点である。
第1実施形態と同じである。
次に、第3実施形態の署名生成処理について説明する。
まず、署名生成装置210が、第1実施形態のステップS11〜S14と同じ処理を実行する(ステップS211〜S214)。次に、ハッシュ演算部10iが、記憶部10aからステップS114の演算結果Rとリカバリメッセージmrecとビット長パラメータLとを読み込む。ハッシュ演算部10iは、入力値に対してLビットのハッシュ値を出力するハッシュ関数H1:{0,1}*→{0,1}Lを、演算結果Rとリカバリメッセージmrecとに依存して定まる値αに作用させ(式(6))、その演算結果であるLビットのハッシュ値hを記憶部10aに出力して格納する(ステップS215)。なお、第3実施形態では、αは演算結果R∈Gとリカバリメッセージmrecとのみに依存する値α=(R,mrec)である。なお、巡回群Gが有限体の乗法群であった場合、本形態のαの構成は、ΠがRに置換される点を除き、第1実施形態と同様である。また、巡回群Gが楕円曲線E上の有理点のなす群である場合、本形態のαの構成は、Πが、楕円曲線E上の点である演算結果Rを一義的又は限定的に特定できる値(例えば、点Rのx座標若しくはy座標、又は、点Rのx座標とy座標とのビット結合値)に置換される点を除き、第1実施形態と同様である。
r=h|w∈{0,1}L+M …(24)
を算出し、当該ビット結合値rを記憶部10aに出力して格納する(ステップS218)。「第1ビット位置」及び「第2ビット位置」をどのビット位置にするかについては第1実施形態と同様である。
その後、第1実施形態のステップS21〜S23と同じ処理が実行される(ステップS219〜S221)。
次に、第3実施形態の署名検証処理について説明する。
図17は、第1実施形態の署名検証処理を説明するためのフローチャートである。以下、第1実施形態との相違点を中心に説明する。
次に、本発明の第4実施形態について説明する。本形態は第3実施形態の変形例である。第4実施形態ではクリアメッセージを用いない。この点が第3実施形態との相違点である。以下では、第1〜3実施形態との相違点を中心に説明し、第1〜3実施形態と共通する事項については説明を省略する。
第1実施形態の署名システム1の署名生成装置10が署名生成装置310に置換され、署名検証装置20が署名検証装置320に置換された構成である。
次に、署名生成装置310の構成を説明する。
第1実施形態の署名生成装置10と同じである。
署名生成装置310もコンピュータに所定のプログラムが読み込まれることにより構成される。
図18は、このように構成される第4実施形態における署名生成装置310の機能構成を例示したブロック図である。なお、署名生成装置410において署名生成装置10,110,210と共通する部分には図3,図10,図14と同じ符号を付して説明を簡略化する。
図18に示すように、本形態の署名生成装置310は、記憶部10aと、秘密鍵生成部10bと、公開鍵生成部10cと、入力部110dと、ビット長抽出部110eと、任意値生成部10fと、群演算部10gと、ハッシュ演算部210i,210j,110pと、排他的論理和演算部10kと、ビット結合部210mと、整数演算部10qと、通信部110rと、制御部10sと、一時メモリ10tとを有する。
次に、署名検証装置320の構成を説明する。
第1実施形態の署名検証装置20と同じである。
署名検証装置320もコンピュータに所定のプログラムが読み込まれることにより構成される。図19は、このように構成される第2実施形態の署名検証装置120の機能構成を例示したブロック図である。なお、署名検証装置320において署名検証装置20,120,220と共通する部分には図5,図11,図15と同じ符号を付して説明を簡略化する。
図19に示すように、本形態の署名検証装置320は、記憶部20aと、通信部120bと、ビット長抽出部20cと、ハッシュ演算部120d,220i,220kと、群演算部20eと、ビット抽出部220hと、排他的論理和演算部20jと、比較部20lと、出力部20mと、制御部20nと、一時メモリ20pとを有する。
次に、本形態の処理について説明する。
第1実施形態と同じである。
次に、第4実施形態の署名生成処理について説明する。
図20は、第4実施形態の署名生成処理を説明するためのフローチャートである。以下、図20に従って本形態の署名生成処理を説明する。
まず、署名生成装置310が、第2実施形態のステップS111〜S114と同じ処理を実行し(ステップS311〜S314)、次に、第3実施形態のステップS215〜S218と同じ処理を実行する(ステップS315〜S318)。次に、署名生成装置310が、第2実施形態のステップS121〜123と同じ処理を実行する(ステップS319〜S321)。
次に、第4実施形態の署名検証処理について説明する。
図21は、第4実施形態の署名検証処理を説明するためのフローチャートである。以下、図21に従って本形態の署名検証処理を説明する。
まず、署名検証装置320が、第2実施形態のステップS141〜S144と同じ処理を実行し(ステップS341〜S344)、次に、第3実施形態のステップS245〜252と同じ処理を実行する(ステップS345〜S352)。
次に、署名検証装置20,120,220,320の処理が署名検証となる理由について説明する。
署名検証装置20,120では、署名σ’=(r’,s’)を用い、r’に依存して定まる値γ’に対してハッシュ値t’=H3(γ’)を演算し(式(14)(23))、R’=gs’・yt’∈Gの演算を行い(式(15))、ハッシュ値Π’=H0(R’)の演算を行っている(式(16))。署名σ’が正規なものであればr’=r及びs’=s(s=k−t・x∈Z)を満たすため、γ’=γを満たし、t’=H3(γ’)=H3(γ)=tを満たし、y=gx∈Gを満たすため、R’=gs’・yt’=gs・yt=gk−t・x・gt・x=gk∈Gとなる。そのため、Π’=H0(R’)=H0(gk)=Πとなる。
署名検証装置220,320では、署名σ’=(r’,s’)を用い、r’に依存して定まる値γ’に対してハッシュ値t’=H3(γ’)を演算し、R’=gs’・yt’∈Gの演算を行っている。署名σ’が正規なものであればr’=r及びs’=s(s=k−t・x∈Z)を満たすため、γ’=γを満たし、t’=H3(γ’)=H3(γ)=tを満たし、y=gx∈Gを満たすため、R’=gs’・yt’=gs・yt=gk−t・x・gt・x=gk=Rとなる。
さらに、署名検証装置220,320では、署名σ’のr’の第2ビット位置のM’ビットの値w’∈{0,1}Mとハッシュ値u’との排他的論理和w’(+)u’を算出し、その演算結果をリカバリメッセージmrec’∈{0,1}Mとしているが)、署名σ’が正規なものであればu’=u、M’=M及びr’=rを満たす。この場合、w’=wも満たすため、mrec’=w’(+)u’=w(+)u=mrec(+)u(+)u=mrecを満たす。
本発明は上述の各実施の形態に限定されるものではない。例えば、第1,2実施形態では、αをΠとmrecとのみに依存する値とし、α’をΠ’とmrec’とのみに依存する値とした。しかし、αをΠとmrecと第三情報とに依存する値とし、α’をΠ’とmrec’と第三情報とに依存する値としてもよい。なお、第三情報としては、クリアメッセージmclrや公開鍵yや群Gを特定するためのパラメータなどを例示できる。βとβ’及びγとγ’についても同様である。これにより、署名検証精度をより向上させることができる。特に、第三情報として群Gを特定するためのパラメータを用いた場合には、不正な群(例えば、離散対数問題が容易であって群演算部20eでの演算結果が正規の巡回群Gでの演算結果と同一となる群)を用いて生成された不正な署名が検証に合格してしまうことを防止できる。
10,110,210,310 署名生成装置
20,120,220,320 署名検証装置
Claims (18)
- 署名生成を行う署名生成装置であって、
整数の秘密鍵をxとし、Mビットのリカバリメッセージをmrec∈{0,1}Mとした場合における、
整数の任意値kを選択する任意値生成部と、
位数qの巡回群をGとし、当該巡回群Gの生成元をgとした場合におけるR=gk∈Gを算出し、当該演算結果Rを得る群演算部と、
入力値に対してLビット(Lは署名検証装置と共有される正の整数)のハッシュ値を出力するハッシュ関数H1:{0,1}*→{0,1}Lを、上記演算結果Rとリカバリメッセージmrecとに対応する値αに作用させ、その演算結果であるLビットのハッシュ値h=H1(α)∈{0,1}Lを得る第2ハッシュ演算部と、
上記リカバリメッセージmrecのビット長Mに応じて出力ビット長がMビットに定まるハッシュ関数H2:{0,1}*→{0,1}Mを、上記演算結果Rと上記ハッシュ値hとに対応する値βに作用させ、その演算結果であるMビットのハッシュ値u=H2(β)∈{0,1}Mを得る第3ハッシュ演算部と、
上記リカバリメッセージmrecと上記ハッシュ値uとの排他的論理和をw=mrec(+)u∈{0,1}M((+)は排他的論理和演算子)とし、上記ハッシュ値h∈{0,1}Lを第1ビット位置に配置し、上記排他的論理和値w∈{0,1}Mを第2ビット位置に配置したL+Mビットのビット結合値r=h|w∈{0,1}L+Mを算出し、当該ビット結合値rを得るビット結合部と、
入力値に対して整数を出力するハッシュ関数H3:{0,1}*→Z(整数)を、上記ビット結合値rに対応する値γに作用させ、その演算結果であるハッシュ値t=H3(γ)∈Zを得る第4ハッシュ演算部と、
s=k−t・x∈Zを算出し、当該演算結果sを得る整数演算部と、
署名σ=(r,s)を出力する署名出力部と、
を有することを特徴とする署名生成装置。 - 署名生成を行う署名生成装置であって、
整数の秘密鍵をxとし、Mビットのリカバリメッセージをmrec∈{0,1}Mとした場合における、
整数の任意値kを生成する任意値生成部と、
位数qの巡回群をGとし、当該巡回群Gの生成元をgとした場合におけるR=gk∈Gを算出し、当該演算結果Rを得る群演算部と、
上記リカバリメッセージmrecのビット長Mに応じて出力ビット長がL+Mビット(Lは署名検証装置と共有される正の整数)に定まるハッシュ関数H0:{0,1}*→{0,1}L+Mを上記演算結果Rに作用させ、その演算結果であるL+Mビットのハッシュ値Π=H0(R)∈{0,1}L+Mを得る第1ハッシュ演算部と、
入力値に対してLビットのハッシュ値を出力するハッシュ関数H1:{0,1}*→{0,1}Lを、上記ハッシュ値Πとリカバリメッセージmrecとに対応する値αに作用させ、その演算結果であるLビットのハッシュ値h=H1(α)∈{0,1}Lを得る第2ハッシュ演算部と、
上記リカバリメッセージmrecのビット長Mに応じて出力ビット長がMビットに定まるハッシュ関数H2:{0,1}*→{0,1}Mを、上記ハッシュ値Πと上記ハッシュ値hとに対応する値βに作用させ、その演算結果であるMビットのハッシュ値u=H2(β)∈{0,1}Mを得る第3ハッシュ演算部と、
上記リカバリメッセージmrecと上記ハッシュ値uとの排他的論理和w=mrec(+)u∈{0,1}M((+)は排他的論理和演算子)を算出し、当該排他的論理和値wを得る第1排他的論理和演算部と、
上記ハッシュ値h∈{0,1}Lを第1ビット位置に配置し、上記排他的論理和値w∈{0,1}Mを第2ビット位置に配置したL+Mビットのビット結合値d=h|w∈{0,1}L+Mを算出し、当該ビット結合値dを得るビット結合部と、
上記ハッシュ値Πと上記ビット結合値dとの排他的論理和r=Π(+)d∈{0,1}L+Mを算出し、当該排他的論理和値rを得る第2排他的論理和演算部と、
入力値に対して整数を出力するハッシュ関数H3:{0,1}*→Z(整数)を、上記排他的論理和値rに対応する値γに作用させ、その演算結果であるハッシュ値t=H3(γ)∈Zを得る第4ハッシュ演算部と、
s=k−t・x∈Zを算出し、当該演算結果sを得る整数演算部と、
署名σ=(r,s)を出力する署名出力部と、
を有することを特徴とする署名生成装置。 - 請求項1又は2に記載の署名生成装置であって、
Nビットのクリアメッセージをmclr∈{0,1}Nとし、
上記第4ハッシュ演算部は、
上記ハッシュ関数H3:{0,1}*→Zを、上記rと上記クリアメッセージmclrとに対応する値γに作用させ、その演算結果であるハッシュ値t=H3(γ)∈Zを得、
上記署名出力部は、
上記署名σ=(r,s)と上記クリアメッセージmclrとを出力する、
ことを特徴とする署名生成装置。 - 請求項2に記載の署名生成装置であって、
上記R=gk∈Gは、楕円曲線上の点gの楕円スカラー倍(k倍)演算であり、
上記ハッシュ関数H0:{0,1}*→{0,1}L+Mを上記演算結果Rに作用させる演算は、楕円曲線上の点である上記演算結果Rを一義的又は限定的に特定する値に、上記ハッシュ関数H0を作用させる演算である、
ことを特徴とする署名生成装置。 - 請求項1に記載の署名生成装置であって、
上記巡回群Gの生成元は、楕円曲線E上の点であり、
上記R=gk∈Gは、上記楕円曲線E上の点k・g∈Eである、
ことを特徴とする署名生成装置。 - 請求項1又は2に記載の署名生成装置であって、
上記R=gk∈Gは、gx mod p(ただし、gは2以上の整数,p=2q+1)である、
ことを特徴とする署名生成装置。 - 署名検証を行う署名検証装置であって、
位数qの巡回群をGとし、当該巡回群Gの生成元をgとし、署名生成装置の秘密鍵x∈Zに対応する公開鍵をy=gx∈Gとした場合における、
署名σ’=(r’,s’)の入力を受け付ける署名入力部と、
入力値に対して整数を出力するハッシュ関数H3:{0,1}*→Z(整数)を、上記署名σ’が有するr’に対応する値γ’に作用させ、その演算結果であるハッシュ値t’=H3(γ’)∈Zを得る第1ハッシュ演算部と、
R’=gs’・yt’∈Gの演算を行い、その演算結果R’を得る群演算部と、
上記署名σ’に対応するリカバリメッセージmrec’のビット長M’に応じて出力ビット長がM’ビットに定まるハッシュ関数H2:{0,1}*→{0,1}M’を、上記演算結果R’とr’の第1ビット位置のLビット(Lは署名生成装置と共有される正の整数)の値h’∈{0,1}Lとに対応する値β’に作用させ、その演算結果であるM’ビットのハッシュ値u’=H2(β’)∈{0,1}M’を得る第3ハッシュ演算部と、
上記r’の第2ビット位置のM’ビットの値w’∈{0,1}M’と上記ハッシュ値u’との排他的論理和w’(+)u’を算出し、その演算結果をリカバリメッセージmrec’∈{0,1}M’として得る第2排他的論理和演算部と、
入力値に対してLビットのハッシュ値を出力するハッシュ関数H1:{0,1}*→{0,1}Lを、上記演算結果R’と上記リカバリメッセージmrec’とに対応する値α’に作用させ、その演算結果であるLビットのハッシュ値H1(α’)∈{0,1}Lを得る第4ハッシュ演算部と、
上記Lビットの値h’と上記ハッシュ値H1(α’)とを比較する比較部と、
を有することを特徴とする署名検証装置。 - 署名検証を行う署名検証装置であって、
位数qの巡回群をGとし、当該巡回群Gの生成元をgとし、署名生成装置の秘密鍵x∈Zに対応する公開鍵をy=gx∈Gとし、
署名σ’=(r’,s’)の入力を受け付ける署名入力部と、
入力値に対して整数を出力するハッシュ関数H3:{0,1}*→Z(整数)を、上記署名σ’が有するr’に対応する値γ’に作用させ、その演算結果であるハッシュ値t’=H3(γ’)∈Zを得る第1ハッシュ演算部と、
R’=gs’・yt’∈Gの演算を行い、その演算結果R’を得る群演算部と、
上記署名σ’に対応するリカバリメッセージmrec’のビット長M’に応じて出力ビット長がL+M’ビット(Lは署名生成装置と共有される正の整数)に定まるハッシュ関数H0:{0,1}*→{0,1}L+M’を上記演算結果R’に作用させ、その演算結果であるL+M’ビットのハッシュ値Π’=H0(R’)∈{0,1}L+M’を得る第2ハッシュ演算部と、
上記ハッシュ値Π’と上記署名σ’が有するr’との排他的論理和d’=Π’(+)r’∈{0,1}L+M’を算出し、当該排他的論理和値d’を得る第1排他的論理和演算部と、
上記リカバリメッセージmrec’のビット長M’に応じて出力ビット長がM’ビットに定まるハッシュ関数H2:{0,1}*→{0,1}M’を、上記ハッシュ値Π’と上記排他的論理和値d’の第1ビット位置のLビットの値h’∈{0,1}Lとに対応する値β’に作用させ、その演算結果であるM’ビットのハッシュ値u’=H2(β’)∈{0,1}M’を得る第3ハッシュ演算部と、
上記排他的論理和値d’の第2ビット位置のM’ビットの値w’∈{0,1}M’と上記ハッシュ値u’との排他的論理和w’(+)u’を算出し、その演算結果をリカバリメッセージmrec’∈{0,1}M’とする第2排他的論理和演算部と、
入力値に対してLビットのハッシュ値を出力するハッシュ関数H1:{0,1}*→{0,1}Lを、上記ハッシュ値Π’と上記第2排他的論理和演算部で算出された上記リカバリメッセージmrec’とに対応する値α’に作用させ、その演算結果であるLビットのハッシュ値H1(α’)∈{0,1}Lを得る第4ハッシュ演算部と、
上記Lビットの値h’と上記ハッシュ値H1(α’)とを比較する比較部と、
を有することを特徴とする署名検証装置。 - 請求項7又は8に記載の署名検証装置であって、
上記署名入力部は、
上記署名σ’と上記署名σ’に対応するクリアメッセージmclr’との入力を受け付け、
上記第1ハッシュ演算部は、
上記ハッシュ関数H3:{0,1}*→Zを、上記署名σ’が有するr’と上記クリアメッセージmclr’とに対応する値γ’に作用させ、その演算結果であるハッシュ値t’=H3(γ’)∈Zを得る、
ことを特徴とする署名検証装置。 - 請求項8に記載の署名検証装置であって、
上記巡回群Gの生成元は、楕円曲線E上の点であり、
上記公開鍵y=gx∈Gは、上記楕円曲線E上の点k・g∈Eであり、
上記R’=gs’・yt’∈Gは、上記楕円曲線E上の点s’・g+t’・y∈Eであり、
上記ハッシュ関数H0:{0,1}*→{0,1}L+M’を上記演算結果R’に作用させる演算は、楕円曲線E上の点である上記演算結果R’を一義的又は限定的に特定する値に、上記ハッシュ関数H0を作用させる演算である、
ことを特徴とする署名検証装置。 - 請求項7に記載の署名検証装置であって、
上記巡回群Gの生成元は、楕円曲線E上の点であり、
上記公開鍵y=gx∈Gは、上記楕円曲線E上の点k・g∈Eであり、
上記R’=gs’・yt’∈Gは、上記楕円曲線E上の点s’・g+t’・y∈Eである、
ことを特徴とする署名検証装置。 - 請求項7又は8に記載の署名検証装置であって、
上記公開鍵y=gx∈Gは、gx mod p(ただし、gは2以上の整数,p=2q+1)であり、
上記R’=gs’・yt’∈Gは、gs’・yt’ mod pである、
ことを特徴とする署名検証装置。 - 署名生成装置の署名生成方法であって、
整数の秘密鍵をxとし、Mビットのリカバリメッセージをmrec∈{0,1}Mとした場合における、
任意値生成部が、整数の任意値kを選択するステップと、
群演算部が、位数qの巡回群をGとし、当該巡回群Gの生成元をgとした場合におけるR=gk∈Gを算出し、当該演算結果Rを得るステップと、
第2ハッシュ演算部が、入力値に対してLビット(Lは署名検証装置と共有される正の整数)のハッシュ値を出力するハッシュ関数H1:{0,1}*→{0,1}Lを、上記演算結果Rとリカバリメッセージmrecとに対応する値αに作用させ、その演算結果であるLビットのハッシュ値h=H1(α)∈{0,1}Lを得るステップと、
第3ハッシュ演算部が、上記リカバリメッセージmrecのビット長Mに応じて出力ビット長がMビットに定まるハッシュ関数H2:{0,1}*→{0,1}Mを、上記演算結果Rと上記ハッシュ値hとに対応する値βに作用させ、その演算結果であるMビットのハッシュ値u=H2(β)∈{0,1}Mを得るステップと、
ビット結合部が、上記リカバリメッセージmrecと上記ハッシュ値uとの排他的論理和をw=mrec(+)u∈{0,1}M((+)は排他的論理和演算子)とし、上記ハッシュ値h∈{0,1}Lを第1ビット位置に配置し、上記排他的論理和値w∈{0,1}Mを第2ビット位置に配置したL+Mビットのビット結合値r=h|w∈{0,1}L+Mを算出し、当該ビット結合値rを得るステップと、
第4ハッシュ演算部が、入力値に対して整数を出力するハッシュ関数H3:{0,1}*→Z(整数)を、上記ビット結合値rに対応する値γに作用させ、その演算結果であるハッシュ値t=H3(γ)∈Zを得るステップと、
整数演算部が、s=k−t・x∈Zを算出し、当該演算結果sを得るステップと、
署名出力部が、署名σ=(r,s)を出力するステップと、
を有することを特徴とする署名生成方法。 - 署名生成装置の署名生成方法であって、
整数の秘密鍵をxとし、Mビットのリカバリメッセージをmrec∈{0,1}Mとした場合における、
任意値生成部が、整数の任意値kを生成するステップと、
群演算部が、位数qの巡回群をGとし、当該巡回群Gの生成元をgとした場合におけるR=gk∈Gを算出し、当該演算結果Rを得るステップと、
第1ハッシュ演算部が、上記リカバリメッセージmrecのビット長Mに応じて出力ビット長がL+Mビット(Lは署名検証装置と共有される正の整数)に定まるハッシュ関数H0:{0,1}*→{0,1}L+Mを、上記演算結果Rに作用させ、その演算結果であるL+Mビットのハッシュ値Π=H0(R)∈{0,1}L+Mを得るステップと、
第2ハッシュ演算部が、入力値に対してLビットのハッシュ値を出力するハッシュ関数H1:{0,1}*→{0,1}Lを、上記ハッシュ値Πとリカバリメッセージmrecとに対応する値αに作用させ、その演算結果であるLビットのハッシュ値h=H1(α)∈{0,1}Lを得るステップと、
第3ハッシュ演算部が、上記リカバリメッセージmrecのビット長Mに応じて出力ビット長がMビットに定まるハッシュ関数H2:{0,1}*→{0,1}Mを、上記ハッシュ値Πと上記ハッシュ値hとに対応する値βに作用させ、その演算結果であるMビットのハッシュ値u=H2(β)∈{0,1}Mを得るステップと、
第1排他的論理和演算部が、上記リカバリメッセージmrecと上記ハッシュ値uとの排他的論理和w=mrec(+)u∈{0,1}M((+)は排他的論理和演算子)を算出し、当該排他的論理和値wを得るステップと、
ビット結合部が、上記ハッシュ値h∈{0,1}Lを第1ビット位置に配置し、上記排他的論理和値w∈{0,1}Mを第2ビット位置に配置したL+Mビットのビット結合値d=h|w∈{0,1}L+Mを算出し、当該ビット結合値dを得るステップと、
第2排他的論理和演算部が、上記ハッシュ値Πと上記ビット結合値dとの排他的論理和r=Π(+)d∈{0,1}L+Mを算出し、当該排他的論理和値rを得るステップと、
第4ハッシュ演算部が、入力値に対して整数を出力するハッシュ関数H3:{0,1}*→Z(整数)を、上記排他的論理和値rに対応する値γに作用させ、その演算結果であるハッシュ値t=H3(γ)∈Zを得るステップと、
整数演算部が、s=k−t・x∈Zを算出し、当該演算結果sを得るステップと、
署名出力部が署名σ=(r,s)を出力するステップと、
を有することを特徴とする署名生成方法。 - 署名検証装置の署名検証方法であって、
位数qの巡回群をGとし、当該巡回群Gの生成元をgとし、署名生成装置の秘密鍵x∈Z(整数)に対応する公開鍵をy=gx∈Gをとした場合における、
署名入力部が、署名σ’=(r’,s’)の入力を受け付けるステップと、
第1ハッシュ演算部が、入力値に対して整数を出力するハッシュ関数H3:{0,1}*→Zを、上記署名σ’が有するr’に対応する値γ’に作用させ、その演算結果であるハッシュ値t’=H3(γ’)∈Z(整数)を得るステップと、
群演算部が、R’=gs’・yt’∈Gの演算を行い、その演算結果R’を得るステップと、
第3ハッシュ演算部が、上記署名σ’に対応するリカバリメッセージmrec’のビット長M’に応じて出力ビット長がM’ビットに定まるハッシュ関数H2:{0,1}*→{0,1}M’を、上記演算結果R’と上記r’の第1ビット位置のLビット(Lは署名生成装置と共有される正の整数)の値h’∈{0,1}Lとに対応する値β’に作用させ、その演算結果であるM’ビットのハッシュ値u’=H2(β’)∈{0,1}M’を得るステップと、
第2排他的論理和演算部が、上記r’の第2ビット位置のM’ビットの値w’∈{0,1}M’と上記ハッシュ値u’との排他的論理和w’(+)u’を算出し、その演算結果をリカバリメッセージmrec’∈{0,1}M’として得るステップと、
第4ハッシュ演算部が、入力値に対してLビットのハッシュ値を出力するハッシュ関数H1:{0,1}*→{0,1}Lを、上記演算結果R’と上記リカバリメッセージmrec’とに対応する値α’に作用させ、その演算結果であるLビットのハッシュ値H1(α’)∈{0,1}Lを得るステップと、
比較部が、上記Lビットの値h’と上記ハッシュ値H1(α’)とを比較するステップと、
を有することを特徴とする署名検証方法。 - 署名検証装置の署名検証方法であって、
位数qの巡回群をGとし、当該巡回群Gの生成元をgとし、署名生成装置の秘密鍵x∈Z(整数)に対応する公開鍵をy=gx∈Gとした場合における、
署名入力部が、署名σ’=(r’,s’)の入力を受け付けるステップと、
第1ハッシュ演算部が、入力値に対して整数を出力するハッシュ関数H3:{0,1}*→Zを、上記署名σ’が有するr’に対応する値γ’に作用させ、その演算結果であるハッシュ値t’=H3(γ’)∈Zを出力するステップと、
群演算部が、R’=gs’・yt’∈Gの演算を行い、その演算結果R’を得るステップと、
第2ハッシュ演算部が、上記署名σ’に対応するリカバリメッセージmrec’のビット長M’に応じて出力ビット長がL+M’ビット(Lは署名生成装置と共有される正の整数)に定まるハッシュ関数H0:{0,1}*→{0,1}L+M’を、上記演算結果R’に作用させ、その演算結果であるL+M’ビットのハッシュ値Π’=H0(R’)∈{0,1}L+M’を得るステップと、
第1排他的論理和演算部が、上記ハッシュ値Π’と上記署名σ’が有するr’との排他的論理和d’=Π’(+)r’∈{0,1}L+M’を算出し、当該排他的論理和値d’を得るステップと、
第3ハッシュ演算部が、上記リカバリメッセージmrec’のビット長M’に応じて出力ビット長がM’ビットに定まるハッシュ関数H2:{0,1}*→{0,1}M’を、上記ハッシュ値Π’と上記排他的論理和値d’の第1ビット位置のLビットの値h’∈{0,1}Lとに対応する値β’に作用させ、その演算結果であるM’ビットのハッシュ値u’=H2(β’)∈{0,1}M’を得るステップと、
第2排他的論理和演算部が、上記排他的論理和値d’の第2ビット位置のM’ビットの値w’∈{0,1}M’と上記ハッシュ値u’との排他的論理和w’(+)u’を算出し、その演算結果をリカバリメッセージmrec’∈{0,1}M’とするステップと、
第4ハッシュ演算部が、入力値に対してLビットのハッシュ値を出力するハッシュ関数H1:{0,1}*→{0,1}Lを、上記ハッシュ値Π’と上記第2排他的論理和演算部で算出された上記リカバリメッセージmrec’とに対応する値α’に作用させ、その演算結果であるLビットのハッシュ値H1(α’)∈{0,1}Lを得るステップと、
比較部が、上記Lビットの値h’と上記ハッシュ値H1(α’)とを比較するステップと、
を有することを特徴とする署名検証方法。 - 請求項1又は2に記載の署名生成装置としてコンピュータを機能させるためのプログラム。
- 請求項7又は8に記載の署名検証装置としてコンピュータを機能させるためのプログラム。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007280287A JP4928412B2 (ja) | 2006-10-31 | 2007-10-29 | 署名生成装置、署名検証装置、それらの方法及びプログラム |
CA2702280A CA2702280C (en) | 2007-10-29 | 2008-04-24 | Signature generating apparatus, signature verifying apparatus and methods therefor |
US12/682,896 US8458478B2 (en) | 2007-10-29 | 2008-04-24 | Signature generating apparatus, signature verifying apparatus, and methods and programs therefor |
PCT/JP2008/057962 WO2009057338A1 (ja) | 2007-10-29 | 2008-04-24 | 署名生成装置、署名検証装置、それらの方法及びプログラム |
CN200880111550.3A CN101828210B (zh) | 2007-10-29 | 2008-04-24 | 署名生成装置、署名验证装置及它们的方法 |
EP08752053.2A EP2207156B1 (en) | 2007-10-29 | 2008-04-24 | Signature generating device, signature verifying device, their methods, and their programs |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006295598 | 2006-10-31 | ||
JP2006295598 | 2006-10-31 | ||
JP2007280287A JP4928412B2 (ja) | 2006-10-31 | 2007-10-29 | 署名生成装置、署名検証装置、それらの方法及びプログラム |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2008136193A JP2008136193A (ja) | 2008-06-12 |
JP2008136193A5 JP2008136193A5 (ja) | 2011-01-20 |
JP4928412B2 true JP4928412B2 (ja) | 2012-05-09 |
Family
ID=39560667
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007280287A Active JP4928412B2 (ja) | 2006-10-31 | 2007-10-29 | 署名生成装置、署名検証装置、それらの方法及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4928412B2 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2222015A1 (en) * | 2009-02-19 | 2010-08-25 | Thomson Licensing | Method and device for hashing onto points of an elliptic curve |
KR101325484B1 (ko) | 2012-11-09 | 2013-11-07 | 한국기초과학지원연구원 | 메시지 복원 기능을 가지는 신원 기반 전자서명 방법 및 이를 이용한 신원 기반 다사용자 브로드캐스트 인증 방법 |
JP5956321B2 (ja) | 2012-12-05 | 2016-07-27 | 株式会社デンソーアイティーラボラトリ | 行先提案システム、行先提案方法、及びプログラム |
JP2020195100A (ja) * | 2019-05-29 | 2020-12-03 | 株式会社bitFlyer Blockchain | 公開鍵の信頼性を証明するための装置、方法及びそのためのプログラム |
CN111130791B (zh) * | 2019-12-09 | 2022-12-20 | 飞天诚信科技股份有限公司 | 数据签名方法、电子设备及计算机可读存储介质 |
-
2007
- 2007-10-29 JP JP2007280287A patent/JP4928412B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2008136193A (ja) | 2008-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6841911B2 (ja) | 情報保護用のシステム及び方法 | |
EP2207156B1 (en) | Signature generating device, signature verifying device, their methods, and their programs | |
JP4575283B2 (ja) | 暗号装置、復号装置、プログラム及び方法 | |
EP2526505B1 (en) | Device and method for obtaining a cryptographic key | |
US10951394B2 (en) | System and method for publication of private data using a blockchain network | |
CN111066285A (zh) | 基于sm2签名恢复公钥的方法 | |
JP4928412B2 (ja) | 署名生成装置、署名検証装置、それらの方法及びプログラム | |
CN111325535A (zh) | 基于椭圆曲线偏移的区块链私钥管理方法、系统及存储介质 | |
JP2022504932A (ja) | コンピュータにより実施される、デジタル署名されたデータのシェアを分配するシステム及び方法 | |
JPWO2007105749A1 (ja) | グループ署名システムおよび情報処理方法 | |
WO2023115873A1 (zh) | 基于区块链的数据处理方法及设备 | |
TW202318833A (zh) | 臨界簽章方案 | |
JP4875448B2 (ja) | 鍵生成装置、匿名署名システム、管理装置、匿名署名方法及びプログラム | |
Chen et al. | An efficient date-constraint hierarchical key management scheme for mobile agents | |
JP4685621B2 (ja) | 鍵生成装置、暗号化装置、復号化装置、乗法型ナップザック暗号システム、乗法型ナップザック暗号復号方法およびプログラム | |
JP4814755B2 (ja) | 署名生成装置、署名検証装置、それらの方法及びプログラム | |
JP4861369B2 (ja) | リカバリ署名システム、署名生成装置、署名検証装置、それらの方法、及びプログラム | |
JP4692022B2 (ja) | 楕円曲線暗号におけるスカラー倍計算装置、及び、そのプログラム | |
JP4861286B2 (ja) | データバックアップ方法、復元処理装置、プログラム及び記録媒体 | |
JP4676873B2 (ja) | パラメータ生成装置、暗号鍵生成装置、それらの方法及びプログラム | |
Easttom | More approaches to quantum-resistant cryptography | |
WO2022215249A1 (ja) | 暗号化装置、復号装置、暗号化方法、暗号化プログラム、復号方法及び復号プログラム | |
JP3881273B2 (ja) | 暗号鍵生成装置、暗号鍵生成プログラムおよびそのプログラムを記録した記録媒体 | |
JP4802228B2 (ja) | 鍵生成装置及びプログラム | |
WO2023242955A1 (ja) | 秘匿情報処理システム、秘匿情報処理方法、及び秘匿情報処理プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100217 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20100217 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20101130 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110621 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110801 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20110812 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20111108 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20111228 |
|
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: 20120124 |
|
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: 20120210 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150217 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4928412 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
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 |