JP4928412B2 - 署名生成装置、署名検証装置、それらの方法及びプログラム - Google Patents

署名生成装置、署名検証装置、それらの方法及びプログラム Download PDF

Info

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
Application number
JP2007280287A
Other languages
English (en)
Other versions
JP2008136193A5 (ja
JP2008136193A (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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
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
Priority to JP2007280287A priority Critical patent/JP4928412B2/ja
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to CN200880111550.3A priority patent/CN101828210B/zh
Priority to CA2702280A priority patent/CA2702280C/en
Priority to US12/682,896 priority patent/US8458478B2/en
Priority to PCT/JP2008/057962 priority patent/WO2009057338A1/ja
Priority to EP08752053.2A priority patent/EP2207156B1/en
Publication of JP2008136193A publication Critical patent/JP2008136193A/ja
Publication of JP2008136193A5 publication Critical patent/JP2008136193A5/ja
Application granted granted Critical
Publication of JP4928412B2 publication Critical patent/JP4928412B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、情報セキュリティ技術の応用技術に関し、特に、署名からメッセージが復元できるメッセージ復元署名に関する。
メッセージ復元署名の従来技術として非特許文献1に示すものがある。この方式は、ランダムオラクルモデルで安全性が証明される方式である。以下にこの方式の概要を示す。
この方式では、
メッセージm∈{0,1}
関数F:{0,1}k2→{0,1}k1
関数F:{0,1}k1→{0,1}k2
関数H:{0,1}k1+k2→{0,1}
E:有限体F上で定義された楕円曲線
p:楕円曲線E上の点Rに対して楕円スカラー倍値p・R=O(Oは無限遠点)を満たす素数
G1:楕円曲線E上の位数pの部分集合の点
w∈Z/pZ
秘密鍵:x∈Z/pZ
公開鍵:(F,E,G1,Y)(Y=−x・G1(∈E))
とする。なお、{0,1}δは、2進δ桁のビットデータを示し、{0,1}δ→{0,1}εは、2進δ桁のビットデータから2進ε桁のビットデータへの写像である関数を示す。
<署名生成>
署名生成は以下のように行う。ただし、Rは点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
しかし、非特許文献1の方式では、式(1)の(F(F(m))や式(2)のR のビット長が固定長であり、メッセージmのビット長も固定長としなければならない。
このため、メッセージmの長さが固定長より短い場合であっても、それに併せて署名σの一部分rのビット長を短くすることができず、非効率である。また、メッセージmのビット長が固定長よりも長い場合には、式(1)にメッセージmの一部分しか代入することができず、メッセージmの全てのビットを対象としたメッセージ復元署名を構成できない。
本発明はこのような点に鑑みてなされたものであり、様々なビット長のメッセージに柔軟に対応可能なメッセージ復元署名技術を提供することを目的とする。
請求項2及び14の発明では上記課題を解決するために、以下のように署名生成を行う。
まず、整数の秘密鍵をxとし、Mビットのリカバリメッセージをmrec∈{0,1}とする。ここで、リカバリメッセージmrecが、署名対象の少なくとも一部となる。そして、署名生成装置の任意値生成部が、整数の任意値kを生成し、群演算部が、位数qの巡回群をGとし、当該巡回群Gの生成元をgとした場合におけるR=g∈Gを算出し、当該演算結果Rを得る。なお、「g∈G」とは、巡回群Gをなす演算をgについてk回実行することを意味する(詳細は後述)。次に、署名生成装置の第1ハッシュ演算部が、リカバリメッセージmrecのビット長Mに応じて出力ビット長がL+Mビット(Lは署名検証装置と共有される正の整数)に定まるハッシュ関数H:{0,1}→{0,1}L+Mを、演算結果Rに作用させ、その演算結果であるL+Mビットのハッシュ値Π=H(R)∈{0,1}L+Mを得る。なお、「関数εをδに作用させる」とは、「δ又はδを特定するための値を関数εに代入する」ことを意味する。次に、署名生成装置の第2ハッシュ演算部が、入力値に対してLビットのハッシュ値を出力するハッシュ関数H:{0,1}→{0,1}を、ハッシュ値Πとリカバリメッセージmrecとに対応する値αに作用させ、その演算結果であるLビットのハッシュ値h=H(α)∈{0,1}を得る。また、署名生成装置の第3ハッシュ演算部が、リカバリメッセージmrecのビット長Mに応じて出力ビット長がMビットに定まるハッシュ関数H:{0,1}→{0,1}を、ハッシュ値Πとハッシュ値hとに対応する値βに作用させ、その演算結果であるMビットのハッシュ値u=H(β)∈{0,1}を得る。さらに、署名生成装置の第1排他的論理和演算部が、リカバリメッセージmrecとハッシュ値uとの排他的論理和w=mrec(+)u∈{0,1}((+)は排他的論理和演算子)を算出し、当該排他的論理和値wを得る。またビット結合部が、ハッシュ値h∈{0,1}を第1ビット位置に配置し、排他的論理和値w∈{0,1}を第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ハッシュ演算部が、入力値に対して整数を出力するハッシュ関数H:{0,1}→Zを、排他的論理和値rに対応する値γに作用させ、その演算結果であるハッシュ値t=H(γ)∈Zを得る。そして、整数演算部が、s=k−t・x∈Zを算出し、当該演算結果sを得、署名出力部が署名σ=(r,s)を出力する。
請求項8及び16の発明は、このように生成された署名を、以下のように検証する。なお、署名検証装置が受け取る署名をσ’=(r’,s’)と表現する。
署名生成装置の公開鍵をy=g∈Gとする。そして、署名検証装置の署名入力部に署名σ’=(r’,s’)が入力される。また、署名σ’に対応するリカバリメッセージmrec’のビット長M’とする。なお、署名検証装置がビット長M’の値を取得する方法については後述する。そして、署名検証装置の第1ハッシュ演算部が、入力値に対して整数を出力するハッシュ関数H:{0,1}→Zを、署名σ’が有するr’に対応する値γ’に作用させ、その演算結果であるハッシュ値t’=H(γ’)∈Zを得る。さらに、署名検証装置の群演算部が、R’=gs’・yt’∈Gの演算を行い、その演算結果R’を得る。なお、「gs’・yt’∈G」とは、巡回群Gをなす演算をgについてs’回施し、当該演算をyについてt’回施し、それらの各演算結果に対して当該演算を施す演算を意味する(詳細は後述)。次に、署名検証装置の第2ハッシュ演算部が、リカバリメッセージmrec’のビット長M’に応じて出力ビット長がL+M’ビット(Lは正の整数)に定まるハッシュ関数H:{0,1}→{0,1}L+M’を、演算結果R’に作用させ、その演算結果であるL+M’ビットのハッシュ値Π’=H(R’)∈{0,1}L+M’を得る。さらに、署名検証装置の第1排他的論理和演算部が、ハッシュ値Πと署名σ’が有するr’との排他的論理和d’=Π’(+)r’∈{0,1}L+M’を算出し、当該排他的論理和値d’を得る。また、署名検証装置の第3ハッシュ演算部が、リカバリメッセージmrec’のビット長M’に応じて出力ビット長がM’ビットに定まるハッシュ関数H:{0,1}→{0,1}M’を、ハッシュ値Π’と排他的論理和値d’の第1ビット位置のLビットの値h’∈{0,1}とに対応する値β’に作用させ、その演算結果であるM’ビットのハッシュ値u’=H(β’)∈{0,1}M’を得る。また、第2排他的論理和演算部が、排他的論理和値d’の第2ビット位置のM’ビットの値w’∈{0,1}M’とハッシュ値u’との排他的論理和w’(+)u’を算出し、その演算結果をリカバリメッセージmrec’∈{0,1}M’として得る。さらに、第4ハッシュ演算部が、入力値に対してLビットのハッシュ値を出力するハッシュ関数H:{0,1}→{0,1}を、ハッシュ値Π’と第2排他的論理和演算部で算出されたリカバリメッセージmrec’とに対応する値α’に作用させ、その演算結果であるLビットのハッシュ値H(α’)∈{0,1}を得る。そして、比較部が、Lビットの値h’とハッシュ値H(α’)とを比較する。
なお、「Πとmrecとに依存して定まる値α」には、値αがΠとmrecとのみに依存する場合のみならず、値αがΠとmrecと他の情報とに依存する場合も含まれる。また、「Πとhとに依存して定まる値β」には、値βがΠとhとのみに依存する場合のみならず、値βがΠとhと他の情報とに依存する場合も含まれ、「rに依存して定まる値γ」には、値γがrのみに依存する場合のみならず、値γがrと他の情報とに依存する場合も含まれる。同様に、「Π’とmrec’とに依存して定まる値α’」には、値α’がΠ’とmrecとのみに依存する場合のみならず、値α’がΠ’とmrec’と他の情報とに依存する場合も含まれ、「Π’とh’とに依存して定まる値β’」には、値β’がΠ’とh’とのみに依存する場合のみならず、値β’がΠ’とh’と他の情報とに依存する場合も含まれ、「r’に依存して定まる値γ’」には、値γ’がr’のみに依存する場合のみならず、値γ’がr’と他の情報とに依存する場合も含まれる。
ただし、署名生成装置で用いる値α,β,γのビット構成と、署名検証装置で用いる値α’,β’,γ’のビット構成とが、それぞれ同一である必要がある。例えば、署名生成装置において、Πを上位L+Mビットとし、mrecを下位Mビットとして結合したL+2Mビットの値をαとする場合、署名検証装置においても、Π’を上位L+M’ビットとし、mrec’を下位M’ビットとしたL+2M’ビットの値をα’としなければならない(詳細は後述)。
また、請求項1,7,13及び15の発明でも上記課題を解決できる。
ここで本発明では、リカバリメッセージのビット長に従って出力ビット長が変化するハッシュ関数用い、処理方法を工夫することにより、リカバリメッセージのビット長が変化しても、各排他的論理和演算の対象となる2つの被演算子のビット長を常に同一とできる。これにより、リカバリメッセージのビット長が短い場合には、それに併せて各演算過程での演算ビット数や署名σを構成するrのビット数を短くでき、効率的な署名方式が実現できる。同時に、リカバリメッセージのビット長が長くなっても、リカバリメッセージmrecの全てのビットを対象としたメッセージ復元署名が生成できる。
また、本発明では、署名生成装置で算出されたハッシュ値h,uと署名検証装置で算出されたハッシュ値h’,u’とがそれぞれ整合性を持たないと署名検証が成功とならないため、ハッシュ値hとハッシュ値h’との整合性のみで署名検証を行う場合より高い安全性を保証できる。
なお、本発明では、従来構成と異なり、メッセージの全てのビットを対象としたメッセージ復元署名を構成することもできる(m=mrecの場合)。しかし、メッセージmの全てのビットをメッセージ復元署名の対象としない構成であってもよい。この場合、メッセージ復元署名の対象とするMビットのリカバリメッセージmrecと、メッセージ復元署名ではない通常の署名の対象とするNビットのクリアメッセージmclrとが署名対象となる。この場合、上述した本発明において、さらに、署名生成装置が、Nビットのクリアメッセージmclr∈{0,1}を記憶部に格納し、署名生成装置の第4ハッシュ演算部が、ハッシュ関数H:{0,1}→Zを、排他的論理和値rとクリアメッセージmclrとに依存して定まる値γに作用させ、その演算結果であるハッシュ値t=H(γ)∈Zを出力し、署名生成装置の署名出力部が、署名σ=(r,s)とクリアメッセージmclrとを出力する。署名検証装置には署名σ’とクリアメッセージmclr’とが入力され、署名検証装置はこれらを格納する。署名検証装置の第1ハッシュ演算部は、ハッシュ関数H:{0,1}→Zを、署名σ’が有するr’とクリアメッセージmclr’とに依存して定まる値γ’に作用させ、その演算結果であるハッシュ値t’=H(γ’)∈Zを出力する。
これにより、メッセージの全てのビットをメッセージ復元署名の対象とする必要のない場合にまで、メッセージの全ビットをメッセージ復元署名の対象とし、各演算過程における演算ビット数が長くなってしまうことを回避できる。即ち、様々なビット長のメッセージ及び様々な用途に対し、柔軟に対応可能なメッセージ復元署名が実現できる。
本発明では、様々なビット長のメッセージに柔軟に対応可能なメッセージ復元署名を実現できる。
以下、本発明を実施するための最良の形態を図面を参照して説明する。
〔第1実施形態〕
まず、本発明の第1実施形態について説明する。
<全体構成>
図1は、第1実施形態の署名システム1の全体構成を示した概念図である。
図1に示すように、本形態の署名システム1は、署名生成を行う署名生成装置10と、署名検証を行う署名検証装置20と、署名生成装置10の効果鍵を公開する公開鍵サーバ装置30とを有し、相互にネットワーク40を通じて通信可能に接続される。なお、署名生成装置10、署名検証装置20及び公開鍵サーバ装置30は、それぞれ、公知のコンピュータに所定のプログラムが読み込まれることにより構成される装置である。
<署名生成装置10の構成>
次に、署名生成装置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は、CPU11にプログラムが読み込まれることにより構成される第1実施形態における署名生成装置10の機能構成を例示したブロック図である。なお、図3における矢印はデータの流れを示すが、一時メモリ10tや制御部10sに入出力されるデータの流れは省略してある。
図3に示すように、本形態の署名生成装置10は、記憶部10aと、秘密鍵生成部10bと、公開鍵生成部10cと、入力部10dと、メッセージ分割部10eと、任意値生成部10fと、群演算部10gと、ハッシュ演算部10h,10i,10j,10pと、排他的論理和演算部10k,10nと、ビット結合部10mと、整数演算部10qと、通信部10rと、制御部10sと、一時メモリ10tとを有する。
また、図4(a)は、ハッシュ演算部10hの機能構成の詳細を示した図であり、図4(b)は、ハッシュ演算部10jの機能構成の詳細を示した図である。図4に示すように、ハッシュ演算部10hは、ハッシュ回数演算部10haと、部分ハッシュ演算部10hbと、ビット結合部10hcと、ビット削除部10hdとを有する。また、ハッシュ演算部10jは、ハッシュ回数演算部10jaと、部分ハッシュ演算部10jbと、ビット結合部10jcと、ビット削除部10jdとを有する。
なお、記憶部10aと一時メモリ10tとは、例えば、図2に記載したレジスタ11c、補助記憶装置14、RAM16、或いはこれらを結合した記憶領域に相当する。また、秘密鍵生成部10bと、公開鍵生成部10cと、メッセージ分割部10eと、任意値生成部10fと、群演算部10gと、ハッシュ演算部10h,10i,10j,10pと、排他的論理和演算部10k,10nと、ビット結合部10mと、整数演算部10qと、制御部10sとは、それぞれの処理を実現するためのプログラムがCPU11に読み込まれることにより構成されるものである。また、入力部10dは、所定のプログラムが読み込まれたCPU11の制御のもと駆動する入力部12であり、通信部10rは、所定のプログラムが読み込まれたCPU11の制御のもと駆動する通信部18である。また、署名生成装置10は、制御部10sの制御のもと各処理を実行する。さらに、特に明示しない限り、演算過程の各データは逐一一時メモリ10tに読み書きされる。
また、上記のプログラムは単体でその機能を実現できるものでもよいし、当該プログラムがさらに他のライブラリ(記載していない)を読み出して各機能を実現するものでもよい。すなわち、各プログラムの少なくとも一部が、署名生成装置10の機能をコンピュータに実行させるためのプログラムに相当する。
<署名検証装置20の構成>
次に、署名検証装置20の構成を説明する。
[ハードウェア構成]
図2に示した署名生成装置10のハードウェア構成と同様である。
[ハードウェアとプログラムとの協働]
署名検証装置20も図2に示したようなコンピュータに所定のプログラムが読み込まれることにより構成される。図5は、このように構成される第1実施形態の署名検証装置20の機能構成を例示したブロック図である。なお、図5における矢印はデータの流れを示すが、一時メモリ20nや制御部20pに入出力されるデータの流れは省略してある。
図5に示すように、本形態の署名検証装置20は、記憶部20aと、通信部20bと、ビット長抽出部20cと、ハッシュ演算部20d,20f,20i,20kと、群演算部20eと、排他的論理和演算部20gと、ビット抽出部20hと、排他的論理和演算部20jと、比較部20lと、出力部20mと、制御部20nと、一時メモリ20pとを有する。
なお、記憶部20aと一時メモリ20pとは、例えば、コンピュータが具備するレジスタ、補助記憶装置、RAM、或いはこれらを結合した記憶領域に相当する。また、ビット長抽出部20cと、ハッシュ演算部20d,20f,20i,20kと、群演算部20eと、排他的論理和演算部20gと、ビット抽出部20hと、排他的論理和演算部20jと、比較部20lと、制御部20nとは、それぞれの処理を実現するためのプログラムがCPUに読み込まれることにより構成されるものである。また、出力部20mと通信部20bは、所定のプログラムが読み込まれたCPUの制御のもと駆動する。また、署名検証装置20は、制御部20nの制御のもと各処理を実行する。さらに、特に明示しない限り、演算過程の各データは逐一一時メモリ20pに読み書きされる。
また、上記のプログラムは単体でその機能を実現できるものでもよいし、当該プログラムがさらに他のライブラリ(記載していない)を読み出して各機能を実現するものでもよい。すなわち、各プログラムの少なくとも一部が、署名検証装置20の機能をコンピュータに実行させるためのプログラムに相当する。
<処理>
次に、本形態の処理について説明する。
[前処理]
まず、署名システム1で使用する位数qの離散対数問題の求解が困難な巡回群Gとその生成元g∈Gとを決定する。このような巡回群Gとしては、例えば、楕円曲線上の有理点のなす群や有限体の乗法群などを用いることができる。なお、楕円曲線上の有理点のなす群を用いる場合、生成元gは楕円曲線上の点g=(g,g)であり、有限体の乗法群を用いる場合、生成元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より大きな整数)を決定する。
さらに、後述するリカバリメッセージmrecのビット長Mに応じて出力ビット長がL+Mビットに定まる出力が可変長のハッシュ関数H:{0,1}→{0,1}L+Mを決定し、リカバリメッセージmrecのビット長Mに応じて出力ビット長がMビットに定まる出力が可変長のハッシュ関数H:{0,1}→{0,1}を決定する。なお、これらのハッシュ関数の処理方法については後述する。
また、入力値に対してLビットのハッシュ値を出力するハッシュ関数H:{0,1}→{0,1}と、また、入力値に対してZ(qを法とする完全剰余系)の元を出力するハッシュ関数H:{0,1}→Zとを決定する。ハッシュ関数Hは、ハッシュ関数Hやハッシュ関数Hと同様に構成でき、ハッシュ関数Hは、SHA−1等のハッシュ値に対し、qを法とした剰余演算を行うことで構成できる。
以上のように決定された巡回群Gや各ハッシュ関数H〜Hを特定する情報は、例えば、署名生成装置10や署名検証装置20を構成する各プログラムに書き込まれ、署名生成装置10や署名検証装置20は、決定された巡回群Gでの演算や、各ハッシュ関数H〜Hの演算が可能になるものとする。また、ビット長パラメータL∈Z>0や位数qや生成元g∈Gは、署名生成装置10の記憶部10aと署名検証装置20の記憶部20aに格納される。
[鍵生成処理]
次に、署名生成装置10が行う鍵生成処理について説明する。
まず、署名生成装置10の秘密鍵生成部10bが任意の秘密鍵x∈Zを生成する。なお、この秘密鍵xの生成は、擬似乱数をZにマッピングして行ってもよいし、署名生成者によって任意に決定された値を元に行ってもよい。生成された秘密鍵xは、署名生成装置10の記憶部10aに安全に格納される。すなわち、署名生成装置10の外部の装置は、記憶部10aから秘密鍵xを取得することができない。
次に、署名生成装置10の公開鍵生成部10cが、記憶部10aから秘密鍵xと巡回群Gの生成元g∈Gとを読み込み、巡回群Gで定義された演算
y=gx∈G …(3)
を行って秘密鍵xに対応する公開鍵y∈Gを生成し、記憶部10aに格納する。なお、例えば、巡回群Gが楕円曲線E上の有理点のなす群であった場合、式(3)の右辺は、楕円曲線E上の点である生成元g=(g,g)を楕円スカラー倍(楕円x倍)する演算(x・g∈E)を意味し、公開鍵yは楕円曲線E上の点となる。なお、楕円スカラー倍演算をコンピュータ上で実行する具体的な方法としては、二進展開法、移動窓法等の公知の演算方法を例示できる(例えば、参考文献1“イアン・F・ブラケ、ガディエル・セロッシ、ナイジェル・P・スマート=著、鈴木治郎=訳、「楕円曲線暗号」、出版=ピアソン・エデュケーション、ISBN4-89471-431-0”等参照)。また、例えば、巡回群Gが有限体の乗法群であった場合、式(3)の右辺は、gmod 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に従って本形態の署名生成処理を説明する。
まず、署名生成装置10(図3)の入力部10dに、メッセージm∈{0,1}N+Mとリカバリメッセージのビット長M≧1とが入力される(ステップS11)。入力されたこれらの情報は、それぞれ記憶部10aに格納される。
次に、メッセージ分割部10eが、記憶部10aからメッセージm∈{0,1}N+Mとリカバリメッセージのビット長M≧1とを読み込む。メッセージ分割部10eは、これらの情報を用い、
メッセージm∈{0,1}N+Mを、ビット長Mのリカバリメッセージmrec∈{0,1} と、ビット長N(N≧0)のクリアメッセージmclr∈{0,1}とに分割する(ステップS12)。例えば、メッセージm∈{0,1}N+Mの上位Mビットをリカバリメッセージmrec∈{0,1}とし、下位Nビットをクリアメッセージmclr∈{0,1}とする。なお、分割法はこれに限定されず、メッセージm∈{0,1}N+Mのどのビットをリカバリメッセージmrecとし、どのビットをクリアメッセージmclr

とするかは、任意に設定できる。このように分割されたビット長Mのリカバリメッセージmrec∈{0,1} と、ビット長Nのクリアメッセージmclr∈{0,1}とは、それぞれ記憶部10aに格納される。
次に、任意値生成部10fが任意値k∈Zを生成し、生成した任意値kを記憶部10aに格納する(ステップS13)。なお、任意値kの生成は、例えば、擬似乱数をZにマッピングすることにより行う。
次に、群演算部10gが、記憶部10aから生成元g∈Gと任意値k∈Zとを読み込み、
R=gk∈G …(4)
を算出し、当該演算結果R∈Gを記憶部10aに出力して格納する(ステップS14)。なお、例えば、巡回群Gが楕円曲線E上の有理点のなす群であった場合、式(4)の右辺は、楕円曲線E上の点である生成元g=(g,g)を楕円スカラー倍(楕円k倍)する演算(k・g∈E)を意味し、演算結果Rは楕円曲線E上の点となる。なお、楕円スカラー倍演算をコンピュータ上で実行する具体的な方法としては、二進展開法、移動窓法等の公知の演算方法を例示できる。また、例えば、巡回群Gが有限体の乗法群であった場合、式(4)の右辺は、gmod pの演算を意味し、演算結果Rはスカラー値となる。
次に、ハッシュ演算部10hが、記憶部10aから演算結果R∈Gとリカバリメッセージのビット長Mとビット長パラメータLを読み込む。ハッシュ演算部10hは、リカバリメッセージmrecのビット長Mに応じて出力ビット長がL+Mビットに定まるハッシュ関数H:{0,1}→{0,1}L+Mを演算結果Rに作用させ、その演算結果であるL+Mビットのハッシュ値
Π=H0(R)∈{0,1}L+M …(5)
を記憶部10aに出力して格納する(ステップS15)。なお、例えば、巡回群Gが楕円曲線E上の有理点のなす群であった場合、式(5)の右辺は、楕円曲線E上の点である演算結果Rを一義的又は限定的に特定できる値(例えば、点Rのx座標若しくはy座標、又は、点Rのx座標とy座標とのビット結合値)にハッシュ関数Hを作用させる演算を意味する。すなわち、この場合の「ハッシュ関数Hを演算結果Rに作用させる」とは、ハッシュ関数Hを、楕円曲線E上の点である演算結果Rを一義的又は限定的に特定できる値に作用させることを意味する。また、例えば、巡回群Gが有限体の乗法群であった場合、式(5)の右辺は、スカラー値である演算結果Rにハッシュ関数Hを作用させる演算を意味する。
[ステップS15の処理の例]
図7(a)は、ステップS15の処理の例を説明するためのフローチャートである。
まず、リカバリメッセージのビット長Mとビット長パラメータLとがハッシュ演算回数算出部10haに読み込まれる。ハッシュ演算回数算出部10haは、
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である。
次に、制御部10sは変数eに0を代入し、変数eを一時メモリ10tに格納する(ステップS15b)。
次に、部分ハッシュ演算部10hbが、一時メモリ10tから変数eを読み込み、記憶部10aから演算結果Rを読み込み、ハッシュ値
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とのビット結合値にハッシュ関数Hを作用させる演算を意味する。
次に、制御部10sが、一時メモリ10tからemaxと変数eとを読み込み、
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としたものをΠ=H(R)とする演算を意味する。
なお、ステップS15の処理方法はこれに限定されない。例えば、eを用いるのではなく、ハッシュチェインによってハッシュ値のビット長を拡張する方法でもよい。この場合、式(5−4)のHC(R)は、例えば、
HC(R)=H(R)|H(H(R))|H(H(H(R)))|…|H(H(H…(R)…))
となる([ステップS15の処理の例]の説明終わり)。
ステップS15の後、ハッシュ演算部10iが、記憶部10aからハッシュ値Πとリカバリメッセージmrecとビット長パラメータLとを読み込む。ハッシュ演算部10iは、入力値に対してLビットのハッシュ値を出力するハッシュ関数H:{0,1}→{0,1}を、ハッシュ値Πとリカバリメッセージmrecとに依存して定まる値αに作用させ、その演算結果であるLビットのハッシュ値
h=H1(α)∈{0,1}L …(6)
を記憶部10aに出力して格納する(ステップS16)。なお、第1実施形態では、αはハッシュ値Πとリカバリメッセージmrecとのみに依存する値α=(Π,mrec)である。なお、本形態のαの構成方法に限定はないが、αの構成方法は後述する署名検証装置20でのα’(後述)の構成方法と同一とする。αの構成例としては以下のようなものがある。
〔α−1〕Πを上位L+Mビットとし、mrecを下位Mビットとして結合したL+2Mビットの値をαとする。
〔α−2〕Πを下位L+Mビットとし、mrecを上位Mビットとして結合したL+2Mビットの値をαとする。
〔α−3〕mrecを上位から奇数番目のビット(合計Mビット)とし、Πをその他のL+Mビットとして結合したL+2Mビットの値をαとする。
次に、ハッシュ演算部10jが、記憶部10aからハッシュ値Πとハッシュ値hとリカバリメッセージのビット長Mとを読み込む。ハッシュ演算部10jは、リカバリメッセージmrecのビット長Mに応じて出力ビット長がMビットに定まるハッシュ関数H:{0,1}→{0,1}を、ハッシュ値Πとハッシュ値hとに依存して定まる値βに作用させ、その演算結果であるMビットのハッシュ値
u=H2(β)∈{0,1}M …(7)
を記憶部10aに出力して格納する(ステップS17)。なお、第1実施形態では、βはハッシュ値Πとハッシュ値hとのみに依存する値β=(Π,h)である。本形態のβの構成方法に限定はないが、βの構成方法は後述する署名検証装置20でのβ’(後述)の構成方法と同一とする。βの構成例としては以下のようなものがある。
〔β−1〕Πを上位L+Mビットとし、hを下位Lビットとして結合した2L+Mビットの値をβとする。
〔β−2〕Πを下位L+Mビットとし、hを上位Lビットとして結合した2L+Mビットの値をβとする。
〔β−3〕hを上位から奇数番目のビット(合計Lビット)とし、Πをその他のL+Mビットとして結合した2L+Mビットの値をβとする。
[ステップS17の処理の例]
図7(b)は、ステップS17の処理の例を説明するためのフローチャートである。
まず、リカバリメッセージのビット長Mがハッシュ演算回数算出部10jaに読み込まれる。ハッシュ演算回数算出部10jaは、
emax=rounddown{M/length(H)} …(7-1)
の演算を行ってemax
を一時メモリ10tに格納する(ステップS17a)。
次に、制御部10sは変数eに0を代入し、変数eを一時メモリ10tに格納する(ステップS17b)。
次に、部分ハッシュ演算部10jbが、一時メモリ10tから変数eを読み込み、記憶部10aからハッシュ値Π,hを読み込み、ハッシュ値
H(e,β),β=(Π,h) …(7-2)
を算出して一時メモリ10tに格納する(ステップS17c)。
次に、制御部10sが、一時メモリ10tからemaxと変数eとを読み込み、
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)。
次に、ビット削除部10jdが、一時メモリ10tから、ビット結合値HC(β)とリカバリメッセージのビット長Mを読み込み、
Π=H0(β)=delete{length(HC(β))-length(M),HC(β)} …(7-5)
を算出して記憶部10aに出力する(ステップS17g)。
なお、ステップS17の処理方法はこれに限定されない。例えば、eを用いるのではなく、ハッシュチェインによってハッシュ値のビット長を拡張する方法でもよい([ステップS17の詳細処理の例]の説明終わり)。
ステップS17の後、排他的論理和演算部10kが、記憶部10aからリカバリメッセージmrecとハッシュ値uとを読み込む。排他的論理和演算部10kは、リカバリメッセージmrecとハッシュ値uとの排他的論理和
w=mrec(+)u∈{0,1}M …(8)
((+)は排他的論理和演算子)を算出し、当該排他的論理和値wを記憶部10aに出力して格納する(ステップS18)。
次に、ビット結合部10mが、記憶部10aからハッシュ値h∈{0,1}と排他的論理和値w∈{0,1}とを読み込む。ビット結合部10mは、ハッシュ値h∈{0,1}を第1ビット位置に配置し、排他的論理和値w∈{0,1}を第2ビット位置に配置したL+Mビットのビット結合値
d=h|w∈{0,1}L+M …(9)
を算出し、当該ビット結合値dを記憶部10aに出力して格納する(ステップS19)。なお、「第1ビット位置」及び「第2ビット位置」をどのビット位置にするかについて特に限定はない。しかし、署名生成装置10と署名検証装置20との間では、「第1ビット位置」及び「第2ビット位置」をどのビット位置にするかの基準を同一にしなければならない。図9に「第1ビット位置」及び「第2ビット位置」の設定例を示す。
図9(a)の例は、連続した上位Lビットを「第1ビット位置」とし、連続した下位Mビットを「第2ビット位置」とした例である。図9(b)の例は、連続した上位Mビットを「第2ビット位置」とし、連続した下位Lビットを「第1ビット位置」とした例である。また、図9(c)の例は、L≧Mの場合の例であり、上位から奇数番目のビット(合計Mビット)の位置を「第2ビット位置」とし、その他のビット位置を「第1ビット位置」とした例である。
次に、排他的論理和演算部10nが、記憶部10aからハッシュ値Πとビット結合値dとを読み込む。排他的論理和演算部10nは、ハッシュ値Πとビット結合値dとの排他的論理和
r=Π(+)d∈{0,1}L+M …(10)
を算出し、当該排他的論理和値rを記憶部10aに出力して格納する(ステップS20)。
次に、ハッシュ演算部10pが、記憶部10aから排他的論理和値rとクリアメッセージmclrとを読み込む。ハッシュ演算部10pは、入力値に対して整数を出力するハッシュ関数H:{0,1}→Zを、排他的論理和値rとクリアメッセージmclrとに依存して定まる値γに作用させ、その演算結果であるハッシュ値
t=H3(γ)∈Zq …(11)
を記憶部10aに出力して格納する(ステップS21)。なお、第1実施形態では、γは排他的論理和値rとクリアメッセージmclrとのみに依存する値γ=(r,mclr)である。本形態のγの構成方法に限定はないが、γの構成方法は後述する署名検証装置20でのγ’(後述)の構成方法と同一とする。γの構成例としては以下のようなものがある。
〔γ−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 …(12)
を算出し、当該演算結果sを記憶部10aに出力して格納する(ステップS22)。
次に、通信部10rに、排他的論理和値rと演算結果sとクリアメッセージmclrとが読み込まれ、通信部10rは、署名σ=(r,s)とクリアメッセージmclrとをネットワーク40を通じて署名検証装置20に送信する(ステップS23)。
[署名検証処理]
次に、第1実施形態の署名検証処理について説明する。
図8は、第1実施形態の署名検証処理を説明するためのフローチャートである。以下、図8に従って本形態の署名検証処理を説明する。
まず、署名検証装置20(図5)の通信部20bが、署名σ’=(r’,s’)とクリアメッセージmclr’とを受信し(「入力を受け付け」に相当)、これらを記憶部20aに格納する(ステップS41)。なお、署名とリアメッセージとが正規なものであれば、σ’=(r’,s’)=σ=(r,s)であり、mclr’=mclrであるが、ここでは、検証対象の署名をσ’=(r’,s’)と表現し、検証対象のクリアメッセージをmclr’と表現する。
次に、ビット長抽出部20cが、記憶部20aから、ビット長パラメータLと署名σ’=(r’,s’)のr’とを読み込む。ビット長抽出部20cは、
M'=length(r')‐L …(13)
により、署名σ’に対応するリカバリメッセージmrec’のビット長M’を算出し、記憶部20aに格納する(ステップS42)。
次に、ハッシュ演算部20dが、記憶部20aからr’とクリアメッセージをmclr’とqとを読み込む。ハッシュ演算部20dは、署名生成装置10と同一のハッシュ関数H:{0,1}→Zを、r’とmclr’とに依存して定まる値γ’に作用させ、その演算結果であるハッシュ値
t’=H3(γ’) …(14)
を記憶部20aに出力して格納する(ステップS43)。なお、γ’の構成方法は前述した署名生成装置10でのγの構成方法と同一(r=r’とし、mclr=mclr’とした場合に同一)とする。
次に、群演算部20eが、記憶部20aから、生成元g∈Gと署名生成装置10の公開鍵y∈Gと署名σ’のs’とハッシュ値t’とを読み込み、
R’=gs’・yt’∈G …(15)
の演算を行い、その演算結果R’を記憶部20aに出力して格納する(ステップS44)。なお、例えば、巡回群Gが楕円曲線E上の有理点のなす群であった場合、式(15)の右辺は、楕円曲線E上の点である生成元g=(g,g)を楕円スカラー倍(楕円s’倍)し、公開鍵y=(y,y)を楕円スカラー倍(楕円t’倍)し、それらの演算結果を楕円加算する演算(s’・g+t’・y∈E)を意味し、演算結果R’は楕円曲線E上の点となる。なお、楕円スカラー倍演算をCPU上で実行する具体的な方法としては、二進展開法、移動窓法等の公知の演算方法を例示できる。また、例えば、巡回群Gが有限体の乗法群であった場合、式(15)の右辺は、gs’・yt’mod pの演算を意味し、演算結果R’はスカラー値となる。
次に、ハッシュ演算部20fが、記憶部20aから演算結果R’∈Gとリカバリメッセージmrec’のビット長M’とビット長パラメータLを読み込む。ハッシュ演算部20fは、署名生成装置10と同じハッシュ関数H:{0,1}→{0,1}L+Mを演算結果R’に作用させ、その演算結果であるL+M’ビットのハッシュ値
Π'=H0(R')∈{0,1}L+M' …(16)
を記憶部20aに出力して格納する(ステップS45)。なお、H(R’)の演算は、署名生成装置10の場合と同一(R=R’の場合に同一)とする。
次に、排他的論理和演算部20gが、記憶部20aから、ハッシュ値Π’と署名σ’が有するr’とを読み込み、それらの排他的論理和
d’=Π’(+)r’∈{0,1}L+M’ …(17)
を算出し、当該排他的論理和値d’を記憶部20aに出力して格納する(ステップS46)。
次に、ビット抽出部20hが、記憶部20aから排他的論理和値d’とリカバリメッセージmrec’のビット長M’とを読み込む。ビット抽出部20hは、排他的論理和値d’の第1ビット位置のLビットの値h’∈{0,1}と、排他的論理和値d’の第2ビット位置のM’ビットの値w’∈{0,1}M’とを抽出し、それらを記憶部20aに格納する(ステップS47)。なお、「第1ビット位置」及び「第2ビット位置」は、署名生成装置10の処理での「第1ビット位置」及び「第2ビット位置」と同一(d=d’とした場合に同一)とする。
次に、ハッシュ演算部20iが、記憶部20aからハッシュ値Π’とh’とリカバリメッセージmrec’のビット長M’とを読み込む。ハッシュ演算部20iは、署名生成装置10と同一のハッシュ関数H:{0,1}→{0,1}を、ハッシュ値Π’と値h’とに依存して定まる値β’に作用させ、その演算結果であるM’ビットのハッシュ値
u'=H2(β')∈{0,1}M' …(18)
を記憶部20aに出力して格納する(ステップS48)。なお、β'の構成方法は前述した署名生成装置10でのβの構成方法と同一(Π=Π’とし、h=h’とした場合に同一)とする。
排他的論理和演算部20jが、記憶部20aから値w’∈{0,1}M’とハッシュ値u’とを読み込む。排他的論理和演算部20jは、値w’とハッシュ値u’との排他的論理和
mrec’=w’(+)u’∈{0,1}M …(19)
を算出し、その演算結果をリカバリメッセージmrec’∈{0,1}M’として記憶部20aに出力して格納する(ステップS49)。
次に、ハッシュ演算部20kが、記憶部20aからハッシュ値Π’とリカバリメッセージmrec’とを読み込む。ハッシュ演算部20kは、署名生成装置10と同一のハッシュ関数H:{0,1}→{0,1}を、ハッシュ値Π’とリカバリメッセージmrec’とに依存して定まる値α’に作用させ、その演算結果であるLビットのハッシュ値
H1(α’)∈{0,1}L …(20)
を記憶部20aに出力して格納する(ステップS50)。なお、α’の構成方法は前述した署名生成装置10でのαの構成方法と同一(Π=Π’とし、mrec=mrec’とした場合に同一)とする。
次に、比較部20lが、記憶部20aからハッシュ値H(α’)と値h’とを読み込み、
h'=H1(α’) …(21)
を満たすか否かを判断する(ステップS51)。
ここで、式(21)を満たさない場合、比較部20lは0(検証失敗)を記憶部20aに出力して格納し、出力部20mは、記憶部20aから送られた0(検証失敗)を出力する(ステップS52)。一方、式(21)を満たす場合、比較部20lは1(検証成功)を記憶部20aに出力して格納し、出力部20mは、記憶部20aから送られた1(検証成功)を出力し(ステップS53)、さらにリカバリメッセージmrec’を出力する(ステップS54)。
〔第2実施形態〕
次に、本発明の第2実施形態について説明する。第2実施形態ではクリアメッセージを用いない。この点が第1実施形態との相違点である。以下では、第1実施形態との相違点を中心に説明し、第1実施形態と共通する事項については説明を省略する。
<全体構成>
第1実施形態の署名システム1の署名生成装置10が署名生成装置110に置換され、署名検証装置20が署名検証装置120に置換された構成である。
<署名生成装置110の構成>
次に、署名生成装置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とを有する。
なお、ビット長抽出部110eとハッシュ演算部110pは、それぞれの処理を実現するためのプログラムがCPUに読み込まれることにより構成されるものである。また、入力部110dは、所定のプログラムが読み込まれたCPUの制御のもと駆動し、通信部110rは、所定のプログラムが読み込まれたCPUの制御のもと駆動する。
また、上記のプログラムは単体でその機能を実現できるものでもよいし、当該プログラムがさらに他のライブラリ(記載していない)を読み出して各機能を実現するものでもよい。すなわち、各プログラムの少なくとも一部が、署名生成装置110の機能をコンピュータに実行させるためのプログラムに相当する。
<署名検証装置120の構成>
次に、署名検証装置120の構成を説明する。
[ハードウェア構成]
第1実施形態の署名検証装置20と同じである。
[ハードウェアとプログラムとの協働]
署名検証装置120もコンピュータに所定のプログラムが読み込まれることにより構成される。図11は、このように構成される第2実施形態の署名検証装置120の機能構成を例示したブロック図である。
図11に示すように、本形態の署名検証装置120は、記憶部20aと、通信部120bと、ビット長抽出部20cと、ハッシュ演算部120d,20f,20i,20kと、群演算部20eと、排他的論理和演算部20gと、ビット抽出部20hと、排他的論理和演算部20jと、比較部20lと、出力部20mと、制御部20nと、一時メモリ20pとを有する。
なお、ハッシュ演算部120dは、処理を実現するためのプログラムがCPUに読み込まれることにより構成されるものである。また、通信部120bは、所定のプログラムが読み込まれたCPUの制御のもと駆動する。また、上記のプログラムは単体でその機能を実現できるものでもよいし、当該プログラムがさらに他のライブラリ(記載していない)を読み出して各機能を実現するものでもよい。すなわち、各プログラムの少なくとも一部が、署名検証装置120の機能をコンピュータに実行させるためのプログラムに相当する。
<処理>
次に、本形態の処理について説明する。
[前処理・鍵生成処理]
第1実施形態と同じである。
[署名生成処理]
次に、第2実施形態の署名生成処理について説明する。
図12は、第2実施形態の署名生成処理を説明するためのフローチャートである。以下、図12に従って本形態の署名生成処理を説明する。
まず、署名生成装置110(図10)の入力部110dに、リカバリメッセージmrec∈{0,1}が入力される(ステップS111)。入力されたリカバリメッセージmrecは、記憶部10aに格納される。なお、第2実施形態ではm=mrecである。
次に、ビット長抽出部110eが、記憶部10aからリカバリメッセージmrec∈{0,1}を読み込み、そのビット長Mを抽出して記憶部10aに格納する(ステップS112)。
その後、署名生成装置110において第1実施形態のステップS13〜S20と同じ処理(ステップS113〜S120)が実行された後、ハッシュ演算部110pが、記憶部10aから排他的論理和値rを読み込む。ハッシュ演算部110pは、第1実施形態と同じハッシュ関数H:{0,1}→Zを、排他的論理和値rに依存して定まる値γに作用させ、その演算結果であるハッシュ値
t=H3(γ)∈Zq …(22)
を記憶部10aに出力して格納する(ステップS121)。なお、第2実施形態では、γは排他的論理和値rのみに依存する値γ=(r)である。本形態のγの構成方法に限定はないが、γの構成方法は後述する署名検証装置120でのγ’(後述)の構成方法と同一とする。
次に、整数演算部10qが、記憶部10aから任意値kとハッシュ値tと秘密鍵xとqとを読み込み、前述の式(12)によってsを算出し、当該演算結果sを記憶部10aに出力して格納する(ステップS122)。
次に、通信部110rに、排他的論理和値rと演算結果sが読み込まれ、通信部10rは、署名σ=(r,s)をネットワーク40を通じて署名検証装置120に送信する(ステップS123)。
[署名検証処理]
次に、第2実施形態の署名検証処理について説明する。
図13は、第2実施形態の署名検証処理を説明するためのフローチャートである。以下、図13に従って本形態の署名検証処理を説明する。
まず、署名検証装置120(図11)の通信部120bが、署名σ’=(r’,s’)を受信し(「入力を受け付け」に相当)、これらを記憶部20aに格納する(ステップS141)。
次に、ビット長抽出部20cが、記憶部20aから、ビット長パラメータLと署名σ’=(r’,s’)のr’とを読み込み、前述の式(13)によって署名σ’に対応するリカバリメッセージmrec’のビット長M’を算出し、記憶部20aに格納する(ステップS142)。
次に、ハッシュ演算部120dが、記憶部20aからr’とqとを読み込む。ハッシュ演算部120dは、署名生成装置110と同一のハッシュ関数H:{0,1}→Zを、r’に依存して定まる値γ’に作用させ、その演算結果であるハッシュ値
t’=H3(γ’) …(23)
を記憶部20aに出力して格納する(ステップS143)。なお、γ’の構成方法は前述した署名生成装置110でのγの構成方法と同一(r=r’とした場合に同一)とする。
その後、第1実施形態のステップS44〜S54と同じ処理によって署名検証を行う(ステップS144〜S154)。
〔第3実施形態〕
次に、本発明の第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の構成>
次に、署名生成装置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とを有する。
なお、ハッシュ演算部210i,210j,210pとビット結合部210mとは、それぞれの処理を実現するためのプログラムがCPUに読み込まれることにより構成されるものである。
また、上記のプログラムは単体でその機能を実現できるものでもよいし、当該プログラムがさらに他のライブラリ(記載していない)を読み出して各機能を実現するものでもよい。すなわち、各プログラムの少なくとも一部が、署名生成装置210の機能をコンピュータに実行させるためのプログラムに相当する。
<署名検証装置220の構成>
次に、署名検証装置220の構成を説明する。
[ハードウェア構成]
第1実施形態の署名検証装置20と同じである。
[ハードウェアとプログラムとの協働]
署名検証装置220もコンピュータに所定のプログラムが読み込まれることにより構成される。図11は、このように構成される第2実施形態の署名検証装置120の機能構成を例示したブロック図である。
図15に示すように、本形態の署名検証装置220は、記憶部20aと、通信部20bと、ビット長抽出部20cと、ハッシュ演算部20d,220i,220kと、群演算部20eと、ビット抽出部20hと、排他的論理和演算部20jと、比較部20lと、出力部20mと、制御部20nと、一時メモリ20pとを有する。
なお、ハッシュ演算部220i,220kと比較部20lは、処理を実現するためのプログラムがCPUに読み込まれることにより構成されるものである。また、上記のプログラムは単体でその機能を実現できるものでもよいし、当該プログラムがさらに他のライブラリ(記載していない)を読み出して各機能を実現するものでもよい。すなわち、各プログラムの少なくとも一部が、署名検証装置120の機能をコンピュータに実行させるためのプログラムに相当する。
<処理>
次に、本形態の処理について説明する。
[前処理]
ハッシュ関数Hが設定されない点が第1実施形態との相違点である。
[鍵生成処理]
第1実施形態と同じである。
[署名生成処理]
次に、第3実施形態の署名生成処理について説明する。
図16は、第3実施形態の署名生成処理を説明するためのフローチャートである。以下、第1実施形態との相違点を中心に説明する。
まず、署名生成装置210が、第1実施形態のステップS11〜S14と同じ処理を実行する(ステップS211〜S214)。次に、ハッシュ演算部10iが、記憶部10aからステップS114の演算結果Rとリカバリメッセージmrecとビット長パラメータLとを読み込む。ハッシュ演算部10iは、入力値に対してLビットのハッシュ値を出力するハッシュ関数H:{0,1}→{0,1}を、演算結果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実施形態と同様である。
次に、ハッシュ演算部210jが、記憶部10aから演算結果Rとハッシュ値hとリカバリメッセージのビット長Mとを読み込む。ハッシュ演算部210jは、リカバリメッセージmrecのビット長Mに応じて出力ビット長がMビットに定まるハッシュ関数H:{0,1}→{0,1}を、演算結果Rとハッシュ値hとに依存して定まる値βに作用させ(式(7))、その演算結果であるMビットのハッシュ値uを記憶部10aに出力して格納する(ステップS216)。なお、第3実施形態では、βは演算結果Rとハッシュ値hとのみに依存する値β=(R,h)である。なお、巡回群Gが有限体の乗法群であった場合、本形態のβの構成は、ΠがRに置換される点を除き、第1実施形態と同様である。また、巡回群Gが楕円曲線E上の有理点のなす群である場合、本形態のβの構成は、Πが、楕円曲線E上の点である演算結果Rを一義的又は限定的に特定できる値(例えば、点Rのx座標若しくはy座標、又は、点Rのx座標とy座標とのビット結合値)に置換される点を除き、第1実施形態と同様である。
次に、排他的論理和演算部10kが、記憶部10aからリカバリメッセージmrecとハッシュ値uとを読み込む。排他的論理和演算部10kは、リカバリメッセージmrecとハッシュ値uとの排他的論理和w(式(8))を算出し、当該排他的論理和値wを記憶部10aに出力して格納する(ステップS217)。
次に、ビット結合部210mが、記憶部10aからハッシュ値h∈{0,1}と排他的論理和値w∈{0,1}とを読み込む。ビット結合部210mは、ハッシュ値h∈{0,1}を第1ビット位置に配置し、排他的論理和値w∈{0,1}を第2ビット位置に配置したL+Mビットのビット結合値
r=h|w∈{0,1}L+M …(24)
を算出し、当該ビット結合値rを記憶部10aに出力して格納する(ステップS218)。「第1ビット位置」及び「第2ビット位置」をどのビット位置にするかについては第1実施形態と同様である。
その後、第1実施形態のステップS21〜S23と同じ処理が実行される(ステップS219〜S221)。
[署名検証処理]
次に、第3実施形態の署名検証処理について説明する。
図17は、第1実施形態の署名検証処理を説明するためのフローチャートである。以下、第1実施形態との相違点を中心に説明する。
まず、署名検証装置220が、第1実施形態のステップS41〜S44と同じ処理を実行する(ステップS241〜S244)。
次に、ビット抽出部220hが、記憶部20aから署名σ’=(r’,s’)のr’とリカバリメッセージmrec’のビット長M’とを読み込む。ビット抽出部220hは、r’の第1ビット位置のLビットの値h’∈{0,1}と、r’の第2ビット位置のM’ビットの値w’∈{0,1}M’とを抽出し、それらを記憶部20aに格納する(ステップS245)。なお、「第1ビット位置」及び「第2ビット位置」は、署名生成装置210の処理での「第1ビット位置」及び「第2ビット位置」と同一(d=d’とした場合に同一)とする。
次に、ハッシュ演算部220iが、記憶部20aからステップS244での演算結果R’とh’とリカバリメッセージmrec’のビット長M’とを読み込む。ハッシュ演算部20iは、署名生成装置210と同一のハッシュ関数H:{0,1}→{0,1}を、演算結果R’と値h’とに依存して定まる値β’に作用させ(式(18))、その演算結果であるM’ビットのハッシュ値u’を記憶部20aに出力して格納する(ステップS246)。なお、β’の構成方法は署名生成装置210でのβの構成方法と同一(Π=Π’とし、h=h’とした場合に同一)とする。
次に、排他的論理和演算部20jが、記憶部20aから値w’∈{0,1}M’とハッシュ値u’とを読み込む。排他的論理和演算部20jは、値w’とハッシュ値u’との排他的論理和を算出し(式(10))、その演算結果をリカバリメッセージmrec’∈{0,1}M’として記憶部20aに出力して格納する(ステップS247)。
次に、ハッシュ演算部220kが、記憶部20aから演算結果R’とリカバリメッセージmrec’とを読み込む。ハッシュ演算部220kは、署名生成装置210と同一のハッシュ関数H:{0,1}→{0,1}を、演算結果R’とリカバリメッセージmrec’とに依存して定まる値α’に作用させ、その演算結果であるLビットのハッシュ値(式(20))を記憶部20aに出力して格納する(ステップS248)。なお、α’の構成方法は署名生成装置210でのαの構成方法と同一(Π=Π’とし、mrec=mrec’とした場合に同一)とする。
その後、第1実施形態のステップS51〜S54と同じ処理が実行される(ステップS249〜S252)。
〔第4実施形態〕
次に、本発明の第4実施形態について説明する。本形態は第3実施形態の変形例である。第4実施形態ではクリアメッセージを用いない。この点が第3実施形態との相違点である。以下では、第1〜3実施形態との相違点を中心に説明し、第1〜3実施形態と共通する事項については説明を省略する。
<全体構成>
第1実施形態の署名システム1の署名生成装置10が署名生成装置310に置換され、署名検証装置20が署名検証装置320に置換された構成である。
<署名生成装置310の構成>
次に、署名生成装置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の構成>
次に、署名検証装置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の処理が署名検証となる理由について説明する。
<第1,2実施形態について>
署名検証装置20,120では、署名σ’=(r’,s’)を用い、r’に依存して定まる値γ’に対してハッシュ値t’=H(γ’)を演算し(式(14)(23))、R’=gs’・yt’∈Gの演算を行い(式(15))、ハッシュ値Π’=H(R’)の演算を行っている(式(16))。署名σ’が正規なものであればr’=r及びs’=s(s=k−t・x∈Z)を満たすため、γ’=γを満たし、t’=H(γ’)=H(γ)=tを満たし、y=g∈Gを満たすため、R’=gs’・yt’=g・y=gk−t・x・gt・x=g∈Gとなる。そのため、Π’=H(R’)=H(g)=Πとなる。
また、署名検証装置20,120では、排他的論理和値d’=Π’(+)r’を求めているが(式(17))、署名σ’が正規なものであればr’=rを満たし、r=Π(+)dを満たし、Π’=Πを満たすため、d’=dを満たす。さらに、署名検証装置20,120では、ハッシュ値Π’と排他的論理和値d’の第1ビット位置のLビットの値h’∈{0,1}とに依存して定まる値β’のハッシュ値u’=H(β’)を求めているが(式(18))、署名σ’が正規なものであればd’=dを満たすため、h’=hを満たし、さらにΠ’=Πを満たすため、β’=βを満たし、u’=uを満たす。
さらに、署名検証装置20,120では、排他的論理和値d’の第2ビット位置のM’ビットの値w’∈{0,1}とハッシュ値u’との排他的論理和w’(+)u’を算出し、その演算結果をリカバリメッセージmrec’∈{0,1}としているが(式(19))、署名σ’が正規なものであればu’=u、M’=M及びd’=dを満たす。この場合、w’=wも満たすため、mrec’=w’(+)u’=w(+)u=mrec(+)u(+)u=mrecを満たす。
その後、署名検証装置20,120では、ハッシュ値Π’とリカバリメッセージmrec’とに依存して定まる値α’にハッシュ値Hを作用させたハッシュ値H(α’)∈{0,1}を求めている(式(20))。署名σ’が正規なものであればΠ’=Π,mrec’=mrec,α’=α,h’=hを満たし、署名生成装置ではh=H(α)としていたため、h’=H(α’)も満たす。つまり、署名σ’が正規なものであればh’=H(α’)を満たすことがいえる。
一方、巡回群Gでの離散対数問題の求解が困難であると仮定すると、秘密鍵xを知らない第三者は公開鍵y=g∈Gから秘密鍵xを知ることができず、上記の検証に合格する署名σ’=(r’,s’)を生成することができない。よって、上記の検証に合格する署名σ’=(r’,s’)が秘密鍵xを知る者が正規に生成した署名であるといえる。
<第3,4実施形態について>
署名検証装置220,320では、署名σ’=(r’,s’)を用い、r’に依存して定まる値γ’に対してハッシュ値t’=H(γ’)を演算し、R’=gs’・yt’∈Gの演算を行っている。署名σ’が正規なものであればr’=r及びs’=s(s=k−t・x∈Z)を満たすため、γ’=γを満たし、t’=H(γ’)=H(γ)=tを満たし、y=g∈Gを満たすため、R’=gs’・yt’=g・y=gk−t・x・gt・x=g=Rとなる。
また、署名検証装置220,320では、演算結果R’と署名σ’のr’の第1ビット位置のLビットの値h’∈{0,1}とに依存して定まる値β’のハッシュ値u’=H(β’)を求めているが、署名σ’が正規なものであればr’=rを満たすため、h’=hを満たし、さらにR’=Rを満たすため、β’=βを満たし、u’=uを満たす。

さらに、署名検証装置220,320では、署名σ’のr’の第2ビット位置のM’ビットの値w’∈{0,1}とハッシュ値u’との排他的論理和w’(+)u’を算出し、その演算結果をリカバリメッセージmrec’∈{0,1}としているが)、署名σ’が正規なものであればu’=u、M’=M及びr’=rを満たす。この場合、w’=wも満たすため、mrec’=w’(+)u’=w(+)u=mrec(+)u(+)u=mrecを満たす。
その後、署名検証装置220,320では、演算結果R’とリカバリメッセージmrec’とに依存して定まる値α’にハッシュ値Hを作用させたハッシュ値H(α’)∈{0,1}を求めている。署名σ’が正規なものであればR’=R,mrec’=mrec,α’=α,h’=hを満たし、署名生成装置ではh=H(α)としていたため、h’=H(α’)も満たす。つまり、署名σ’が正規なものであればh’=H(α’)を満たすことがいえる。
一方、巡回群Gでの離散対数問題の求解が困難であると仮定すると、秘密鍵xを知らない第三者は公開鍵y=g∈Gから秘密鍵xを知ることができず、上記の検証に合格する署名σ’=(r’,s’)を生成することができない。よって、上記の検証に合格する署名σ’=(r’,s’)が秘密鍵xを知る者が正規に生成した署名であるといえる。
〔変形例〕
本発明は上述の各実施の形態に限定されるものではない。例えば、第1,2実施形態では、αをΠとmrecとのみに依存する値とし、α’をΠ’とmrec’とのみに依存する値とした。しかし、αをΠとmrecと第三情報とに依存する値とし、α’をΠ’とmrec’と第三情報とに依存する値としてもよい。なお、第三情報としては、クリアメッセージmclrや公開鍵yや群Gを特定するためのパラメータなどを例示できる。βとβ’及びγとγ’についても同様である。これにより、署名検証精度をより向上させることができる。特に、第三情報として群Gを特定するためのパラメータを用いた場合には、不正な群(例えば、離散対数問題が容易であって群演算部20eでの演算結果が正規の巡回群Gでの演算結果と同一となる群)を用いて生成された不正な署名が検証に合格してしまうことを防止できる。
同様に、第3,4実施形態では、αをRとmrecとのみに依存する値とし、α’をR’とmrec’とのみに依存する値とした。しかし、αをRとmrecと第三情報とに依存する値とし、α’をR’とmrec’と第三情報とに依存する値としてもよい。βとβ’及びγとγ’についても同様である。
また、各実施形態では、署名生成装置10,110,210,310が鍵生成を行ったが、別の装置が鍵生成を行ってもよい。また、各実施形態では、公開鍵サーバ装置30が公開鍵yを公開したが署名生成装置10,110,210,310が署名検証装置20,120,220,320に公開鍵yを送信する構成であってもよい。また、各処理におけるZ(qを法とする完全剰余系)をZ(整数)に置換した構成であってもよい。
また、各実施形態では、署名検証装置20,120,220,320が、署名σ’が具備するr’のビット長とビット長パラメータLとからリカバリメッセージのビット長を算出したが、署名生成装置10,110,210,310が署名検証装置20,120,220,320にリカバリメッセージのビット長を送信する構成であってもよい。
また、本発明における「ハッシュ関数」とは、あるデータに対し、そのデータを代表する値を算出する関数を意味する。本発明では、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)等を用いることができる。
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
本発明は、電子署名を用いる様々な用途に適用可能である。
図1は、第1実施形態の署名システムの全体構成を示した概念図である。 図2は、第1実施形態における署名生成装置のハードウェア構成を例示したブロック図である。 図3は、第1実施形態における署名生成装置の機能構成を例示したブロック図である。 図4(a)は、ハッシュ演算部の機能構成の詳細を示した図であり、図4(b)は、ハッシュ演算部の機能構成の詳細を示した図である。 図5は、第1実施形態の署名検証装置の機能構成を例示したブロック図である。 図6は、第1実施形態の署名生成処理を説明するためのフローチャートである。 図7(a)は、ステップS15の処理の例を説明するためのフローチャートであり、図7(b)は、ステップS17の処理の例を説明するためのフローチャートである。 図8は、第1実施形態の署名検証処理を説明するためのフローチャートである。 図9(a)(b)(c)は「第1ビット位置」及び「第2ビット位置」の設定例を示した図である。 図10は、第2実施形態における署名生成装置の機能構成を例示したブロック図である。 図11は、第2実施形態の署名検証装置の機能構成を例示したブロック図である。 図12は、第2実施形態の署名生成処理を説明するためのフローチャートである。 図13は、第2実施形態の署名検証処理を説明するためのフローチャートである。 図14は、第3実施形態における署名生成装置の機能構成を例示したブロック図である。 図15は、第3実施形態の署名検証装置の機能構成を例示したブロック図である。 図16は、第3実施形態の署名生成処理を説明するためのフローチャートである。 図17は、第3実施形態の署名検証処理を説明するためのフローチャートである。 図18は、第4実施形態における署名生成装置の機能構成を例示したブロック図である。 図19は、第4実施形態の署名検証装置の機能構成を例示したブロック図である。 図20は、第4実施形態の署名生成処理を説明するためのフローチャートである。 図21は、第4実施形態の署名検証処理を説明するためのフローチャートである。
符号の説明
1 署名システム
10,110,210,310 署名生成装置
20,120,220,320 署名検証装置

Claims (18)

  1. 署名生成を行う署名生成装置であって、
    整数の秘密鍵をxとし、Mビットのリカバリメッセージをmrec∈{0,1}とした場合における、
    整数の任意値kを選択する任意値生成部と、
    位数qの巡回群をGとし、当該巡回群Gの生成元をgとした場合におけるR=g∈Gを算出し、当該演算結果Rを得る群演算部と、
    入力値に対してLビット(Lは署名検証装置と共有される正の整数)のハッシュ値を出力するハッシュ関数H:{0,1}→{0,1}を、上記演算結果Rとリカバリメッセージmrecとに対応する値αに作用させ、その演算結果であるLビットのハッシュ値h=H(α)∈{0,1}を得る第2ハッシュ演算部と、
    上記リカバリメッセージmrecのビット長Mに応じて出力ビット長がMビットに定まるハッシュ関数H:{0,1}→{0,1}を、上記演算結果Rと上記ハッシュ値hとに対応する値βに作用させ、その演算結果であるMビットのハッシュ値u=H(β)∈{0,1}を得る第3ハッシュ演算部と、
    上記リカバリメッセージmrecと上記ハッシュ値uとの排他的論理和をw=mrec(+)u∈{0,1}((+)は排他的論理和演算子)とし、上記ハッシュ値h∈{0,1}を第1ビット位置に配置し、上記排他的論理和値w∈{0,1}を第2ビット位置に配置したL+Mビットのビット結合値r=h|w∈{0,1}L+Mを算出し、当該ビット結合値rを得るビット結合部と、
    入力値に対して整数を出力するハッシュ関数H:{0,1}→Z(整数)を、上記ビット結合値rに対応する値γに作用させ、その演算結果であるハッシュ値t=H(γ)∈Zを得る第4ハッシュ演算部と、
    s=k−t・x∈Zを算出し、当該演算結果sを得る整数演算部と、
    署名σ=(r,s)を出力する署名出力部と、
    を有することを特徴とする署名生成装置。
  2. 署名生成を行う署名生成装置であって、
    整数の秘密鍵をxとし、Mビットのリカバリメッセージをmrec∈{0,1}とした場合における、
    整数の任意値kを生成する任意値生成部と、
    位数qの巡回群をGとし、当該巡回群Gの生成元をgとした場合におけるR=g∈Gを算出し、当該演算結果Rを得る群演算部と、
    上記リカバリメッセージmrecのビット長Mに応じて出力ビット長がL+Mビット(Lは署名検証装置と共有される正の整数)に定まるハッシュ関数H:{0,1}→{0,1}L+Mを上記演算結果Rに作用させ、その演算結果であるL+Mビットのハッシュ値Π=H(R)∈{0,1}L+Mを得る第1ハッシュ演算部と、
    入力値に対してLビットのハッシュ値を出力するハッシュ関数H:{0,1}→{0,1}を、上記ハッシュ値Πとリカバリメッセージmrecとに対応する値αに作用させ、その演算結果であるLビットのハッシュ値h=H(α)∈{0,1}を得る第2ハッシュ演算部と、
    上記リカバリメッセージmrecのビット長Mに応じて出力ビット長がMビットに定まるハッシュ関数H:{0,1}→{0,1}を、上記ハッシュ値Πと上記ハッシュ値hとに対応する値βに作用させ、その演算結果であるMビットのハッシュ値u=H(β)∈{0,1}を得る第3ハッシュ演算部と、
    上記リカバリメッセージmrecと上記ハッシュ値uとの排他的論理和w=mrec(+)u∈{0,1}((+)は排他的論理和演算子)を算出し、当該排他的論理和値wを得る第1排他的論理和演算部と、
    上記ハッシュ値h∈{0,1}を第1ビット位置に配置し、上記排他的論理和値w∈{0,1}を第2ビット位置に配置したL+Mビットのビット結合値d=h|w∈{0,1}L+Mを算出し、当該ビット結合値dを得るビット結合部と、
    上記ハッシュ値Πと上記ビット結合値dとの排他的論理和r=Π(+)d∈{0,1}L+Mを算出し、当該排他的論理和値rを得る第2排他的論理和演算部と、
    入力値に対して整数を出力するハッシュ関数H:{0,1}→Z(整数)を、上記排他的論理和値rに対応する値γに作用させ、その演算結果であるハッシュ値t=H(γ)∈Zを得る第4ハッシュ演算部と、
    s=k−t・x∈Zを算出し、当該演算結果sを得る整数演算部と、
    署名σ=(r,s)を出力する署名出力部と、
    を有することを特徴とする署名生成装置。
  3. 請求項1又は2に記載の署名生成装置であって、
    Nビットのクリアメッセージをmclr∈{0,1}とし、
    上記第4ハッシュ演算部は、
    上記ハッシュ関数H:{0,1}→Zを、上記rと上記クリアメッセージmclrとに対応する値γに作用させ、その演算結果であるハッシュ値t=H(γ)∈Zを得、
    上記署名出力部は、
    上記署名σ=(r,s)と上記クリアメッセージmclrとを出力する、
    ことを特徴とする署名生成装置。
  4. 請求項2に記載の署名生成装置であって、
    上記R=g∈Gは、楕円曲線上の点gの楕円スカラー倍(k倍)演算であり、
    上記ハッシュ関数H:{0,1}→{0,1}L+Mを上記演算結果Rに作用させる演算は、楕円曲線上の点である上記演算結果Rを一義的又は限定的に特定する値に、上記ハッシュ関数Hを作用させる演算である、
    ことを特徴とする署名生成装置。
  5. 請求項1に記載の署名生成装置であって、
    上記巡回群Gの生成元は、楕円曲線E上の点であり、
    上記R=g∈Gは、上記楕円曲線E上の点k・g∈Eである、
    ことを特徴とする署名生成装置。
  6. 請求項1又は2に記載の署名生成装置であって、
    上記R=g∈Gは、g mod p(ただし、gは2以上の整数,p=2q+1)である、
    ことを特徴とする署名生成装置。
  7. 署名検証を行う署名検証装置であって、
    位数qの巡回群をGとし、当該巡回群Gの生成元をgとし、署名生成装置の秘密鍵x∈Zに対応する公開鍵をy=g∈Gとした場合における、
    署名σ’=(r’,s’)の入力を受け付ける署名入力部と、
    入力値に対して整数を出力するハッシュ関数H:{0,1}→Z(整数)を、上記署名σ’が有するr’に対応する値γ’に作用させ、その演算結果であるハッシュ値t’=H(γ’)∈Zを得る第1ハッシュ演算部と、
    R’=gs’・yt’∈Gの演算を行い、その演算結果R’を得る群演算部と、
    上記署名σ’に対応するリカバリメッセージmrec’のビット長M’に応じて出力ビット長がM’ビットに定まるハッシュ関数H:{0,1}→{0,1}M’を、上記演算結果R’とr’の第1ビット位置のLビット(Lは署名生成装置と共有される正の整数)の値h’∈{0,1}とに対応する値β’に作用させ、その演算結果であるM’ビットのハッシュ値u’=H(β’)∈{0,1}M’を得る第3ハッシュ演算部と、
    上記r’の第2ビット位置のM’ビットの値w’∈{0,1}M’と上記ハッシュ値u’との排他的論理和w’(+)u’を算出し、その演算結果をリカバリメッセージmrec’∈{0,1}M’として得る第2排他的論理和演算部と、
    入力値に対してLビットのハッシュ値を出力するハッシュ関数H:{0,1}→{0,1}を、上記演算結果R’と上記リカバリメッセージmrec’とに対応する値α’に作用させ、その演算結果であるLビットのハッシュ値H(α’)∈{0,1}を得る第4ハッシュ演算部と、
    上記Lビットの値h’と上記ハッシュ値H(α’)とを比較する比較部と、
    を有することを特徴とする署名検証装置。
  8. 署名検証を行う署名検証装置であって、
    位数qの巡回群をGとし、当該巡回群Gの生成元をgとし、署名生成装置の秘密鍵x∈Zに対応する公開鍵をy=g∈Gとし、
    署名σ’=(r’,s’)の入力を受け付ける署名入力部と、
    入力値に対して整数を出力するハッシュ関数H:{0,1}→Z(整数)を、上記署名σ’が有するr’に対応する値γ’に作用させ、その演算結果であるハッシュ値t’=H(γ’)∈Zを得る第1ハッシュ演算部と、
    R’=gs’・yt’∈Gの演算を行い、その演算結果R’を得る群演算部と、
    上記署名σ’に対応するリカバリメッセージmrec’のビット長M’に応じて出力ビット長がL+M’ビット(Lは署名生成装置と共有される正の整数)に定まるハッシュ関数H:{0,1}→{0,1}L+M’を上記演算結果R’に作用させ、その演算結果であるL+M’ビットのハッシュ値Π’=H(R’)∈{0,1}L+M’を得る第2ハッシュ演算部と、
    上記ハッシュ値Π’と上記署名σ’が有するr’との排他的論理和d’=Π’(+)r’∈{0,1}L+M’を算出し、当該排他的論理和値d’を得る第1排他的論理和演算部と、
    上記リカバリメッセージmrec’のビット長M’に応じて出力ビット長がM’ビットに定まるハッシュ関数H:{0,1}→{0,1}M’を、上記ハッシュ値Π’と上記排他的論理和値d’の第1ビット位置のLビットの値h’∈{0,1}とに対応する値β’に作用させ、その演算結果であるM’ビットのハッシュ値u’=H(β’)∈{0,1}M’を得る第3ハッシュ演算部と、
    上記排他的論理和値d’の第2ビット位置のM’ビットの値w’∈{0,1}M’と上記ハッシュ値u’との排他的論理和w’(+)u’を算出し、その演算結果をリカバリメッセージmrec’∈{0,1}M’とする第2排他的論理和演算部と、
    入力値に対してLビットのハッシュ値を出力するハッシュ関数H:{0,1}→{0,1}を、上記ハッシュ値Π’と上記第2排他的論理和演算部で算出された上記リカバリメッセージmrec’とに対応する値α’に作用させ、その演算結果であるLビットのハッシュ値H(α’)∈{0,1}を得る第4ハッシュ演算部と、
    上記Lビットの値h’と上記ハッシュ値H(α’)とを比較する比較部と、
    を有することを特徴とする署名検証装置。
  9. 請求項7又は8に記載の署名検証装置であって、
    上記署名入力部は、
    上記署名σ’と上記署名σ’に対応するクリアメッセージmclr’との入力を受け付け、
    上記第1ハッシュ演算部は、
    上記ハッシュ関数H:{0,1}→Zを、上記署名σ’が有するr’と上記クリアメッセージmclr’とに対応する値γ’に作用させ、その演算結果であるハッシュ値t’=H(γ’)∈Zを得る、
    ことを特徴とする署名検証装置。
  10. 請求項8に記載の署名検証装置であって、
    上記巡回群Gの生成元は、楕円曲線E上の点であり、
    上記公開鍵y=g∈Gは、上記楕円曲線E上の点k・g∈Eであり、
    上記R’=gs’・yt’∈Gは、上記楕円曲線E上の点s’・g+t’・y∈Eであり、
    上記ハッシュ関数H:{0,1}→{0,1}L+M’を上記演算結果R’に作用させる演算は、楕円曲線E上の点である上記演算結果R’を一義的又は限定的に特定する値に、上記ハッシュ関数Hを作用させる演算である、
    ことを特徴とする署名検証装置。
  11. 請求項7に記載の署名検証装置であって、
    上記巡回群Gの生成元は、楕円曲線E上の点であり、
    上記公開鍵y=g∈Gは、上記楕円曲線E上の点k・g∈Eであり、
    上記R’=gs’・yt’∈Gは、上記楕円曲線E上の点s’・g+t’・y∈Eである、
    ことを特徴とする署名検証装置。
  12. 請求項7又は8に記載の署名検証装置であって、
    上記公開鍵y=g∈Gは、g mod p(ただし、gは2以上の整数,p=2q+1)であり、
    上記R’=gs’・yt’∈Gは、gs’・yt’ mod pである、
    ことを特徴とする署名検証装置。
  13. 署名生成装置の署名生成方法であって、
    整数の秘密鍵をxとし、Mビットのリカバリメッセージをmrec∈{0,1}とした場合における、
    任意値生成部が、整数の任意値kを選択するステップと、
    群演算部が、位数qの巡回群をGとし、当該巡回群Gの生成元をgとした場合におけるR=g∈Gを算出し、当該演算結果Rを得るステップと、
    第2ハッシュ演算部が、入力値に対してLビット(Lは署名検証装置と共有される正の整数)のハッシュ値を出力するハッシュ関数H:{0,1}→{0,1}を、上記演算結果Rとリカバリメッセージmrecとに対応する値αに作用させ、その演算結果であるLビットのハッシュ値h=H(α)∈{0,1}を得るステップと、
    第3ハッシュ演算部が、上記リカバリメッセージmrecのビット長Mに応じて出力ビット長がMビットに定まるハッシュ関数H:{0,1}→{0,1}を、上記演算結果Rと上記ハッシュ値hとに対応する値βに作用させ、その演算結果であるMビットのハッシュ値u=H(β)∈{0,1}を得るステップと、
    ビット結合部が、上記リカバリメッセージmrecと上記ハッシュ値uとの排他的論理和をw=mrec(+)u∈{0,1}((+)は排他的論理和演算子)とし、上記ハッシュ値h∈{0,1}を第1ビット位置に配置し、上記排他的論理和値w∈{0,1}を第2ビット位置に配置したL+Mビットのビット結合値r=h|w∈{0,1}L+Mを算出し、当該ビット結合値rを得るステップと、
    第4ハッシュ演算部が、入力値に対して整数を出力するハッシュ関数H:{0,1}→Z(整数)を、上記ビット結合値rに対応する値γに作用させ、その演算結果であるハッシュ値t=H(γ)∈Zを得るステップと、
    整数演算部が、s=k−t・x∈Zを算出し、当該演算結果sを得るステップと、
    署名出力部が、署名σ=(r,s)を出力するステップと、
    を有することを特徴とする署名生成方法。
  14. 署名生成装置の署名生成方法であって、
    整数の秘密鍵をxとし、Mビットのリカバリメッセージをmrec∈{0,1}とした場合における、
    任意値生成部が、整数の任意値kを生成するステップと、
    群演算部が、位数qの巡回群をGとし、当該巡回群Gの生成元をgとした場合におけるR=g∈Gを算出し、当該演算結果Rを得るステップと、
    第1ハッシュ演算部が、上記リカバリメッセージmrecのビット長Mに応じて出力ビット長がL+Mビット(Lは署名検証装置と共有される正の整数)に定まるハッシュ関数H:{0,1}→{0,1}L+Mを、上記演算結果Rに作用させ、その演算結果であるL+Mビットのハッシュ値Π=H(R)∈{0,1}L+Mを得るステップと、
    第2ハッシュ演算部が、入力値に対してLビットのハッシュ値を出力するハッシュ関数H:{0,1}→{0,1}を、上記ハッシュ値Πとリカバリメッセージmrecとに対応する値αに作用させ、その演算結果であるLビットのハッシュ値h=H(α)∈{0,1}を得るステップと、
    第3ハッシュ演算部が、上記リカバリメッセージmrecのビット長Mに応じて出力ビット長がMビットに定まるハッシュ関数H:{0,1}→{0,1}を、上記ハッシュ値Πと上記ハッシュ値hとに対応する値βに作用させ、その演算結果であるMビットのハッシュ値u=H(β)∈{0,1}を得るステップと、
    第1排他的論理和演算部が、上記リカバリメッセージmrecと上記ハッシュ値uとの排他的論理和w=mrec(+)u∈{0,1}((+)は排他的論理和演算子)を算出し、当該排他的論理和値wを得るステップと、
    ビット結合部が、上記ハッシュ値h∈{0,1}を第1ビット位置に配置し、上記排他的論理和値w∈{0,1}を第2ビット位置に配置したL+Mビットのビット結合値d=h|w∈{0,1}L+Mを算出し、当該ビット結合値dを得るステップと、
    第2排他的論理和演算部が、上記ハッシュ値Πと上記ビット結合値dとの排他的論理和r=Π(+)d∈{0,1}L+Mを算出し、当該排他的論理和値rを得るステップと、
    第4ハッシュ演算部が、入力値に対して整数を出力するハッシュ関数H:{0,1}→Z(整数)を、上記排他的論理和値rに対応する値γに作用させ、その演算結果であるハッシュ値t=H(γ)∈Zを得るステップと、
    整数演算部が、s=k−t・x∈Zを算出し、当該演算結果sを得るステップと、
    署名出力部が署名σ=(r,s)を出力するステップと、
    を有することを特徴とする署名生成方法。
  15. 署名検証装置の署名検証方法であって、
    位数qの巡回群をGとし、当該巡回群Gの生成元をgとし、署名生成装置の秘密鍵x∈Z(整数)に対応する公開鍵をy=g∈Gをとした場合における、
    署名入力部が、署名σ’=(r’,s’)の入力を受け付けるステップと、
    第1ハッシュ演算部が、入力値に対して整数を出力するハッシュ関数H:{0,1}→Zを、上記署名σ’が有するr’に対応する値γ’に作用させ、その演算結果であるハッシュ値t’=H(γ’)∈Z(整数)を得るステップと、
    群演算部が、R’=gs’・yt’∈Gの演算を行い、その演算結果R’を得るステップと、
    第3ハッシュ演算部が、上記署名σ’に対応するリカバリメッセージmrec’のビット長M’に応じて出力ビット長がM’ビットに定まるハッシュ関数H:{0,1}→{0,1}M’を、上記演算結果R’と上記r’の第1ビット位置のLビット(Lは署名生成装置と共有される正の整数)の値h’∈{0,1}とに対応する値β’に作用させ、その演算結果であるM’ビットのハッシュ値u’=H(β’)∈{0,1}M’を得るステップと、
    第2排他的論理和演算部が、上記r’の第2ビット位置のM’ビットの値w’∈{0,1}M’と上記ハッシュ値u’との排他的論理和w’(+)u’を算出し、その演算結果をリカバリメッセージmrec’∈{0,1}M’として得るステップと、
    第4ハッシュ演算部が、入力値に対してLビットのハッシュ値を出力するハッシュ関数H:{0,1}→{0,1}を、上記演算結果R’と上記リカバリメッセージmrec’とに対応する値α’に作用させ、その演算結果であるLビットのハッシュ値H(α’)∈{0,1}を得るステップと、
    比較部が、上記Lビットの値h’と上記ハッシュ値H(α’)とを比較するステップと、
    を有することを特徴とする署名検証方法。
  16. 署名検証装置の署名検証方法であって、
    位数qの巡回群をGとし、当該巡回群Gの生成元をgとし、署名生成装置の秘密鍵x∈Z(整数)に対応する公開鍵をy=g∈Gとした場合における、
    署名入力部が、署名σ’=(r’,s’)の入力を受け付けるステップと、
    第1ハッシュ演算部が、入力値に対して整数を出力するハッシュ関数H:{0,1}→Zを、上記署名σ’が有するr’に対応する値γ’に作用させ、その演算結果であるハッシュ値t’=H(γ’)∈Zを出力するステップと、
    群演算部が、R’=gs’・yt’∈Gの演算を行い、その演算結果R’を得るステップと、
    第2ハッシュ演算部が、上記署名σ’に対応するリカバリメッセージmrec’のビット長M’に応じて出力ビット長がL+M’ビット(Lは署名生成装置と共有される正の整数)に定まるハッシュ関数H:{0,1}→{0,1}L+M’を、上記演算結果R’に作用させ、その演算結果であるL+M’ビットのハッシュ値Π’=H(R’)∈{0,1}L+M’を得るステップと、
    第1排他的論理和演算部が、上記ハッシュ値Π’と上記署名σ’が有するr’との排他的論理和d’=Π’(+)r’∈{0,1}L+M’を算出し、当該排他的論理和値d’を得るステップと、
    第3ハッシュ演算部が、上記リカバリメッセージmrec’のビット長M’に応じて出力ビット長がM’ビットに定まるハッシュ関数H:{0,1}→{0,1}M’を、上記ハッシュ値Π’と上記排他的論理和値d’の第1ビット位置のLビットの値h’∈{0,1}とに対応する値β’に作用させ、その演算結果であるM’ビットのハッシュ値u’=H(β’)∈{0,1}M’を得るステップと、
    第2排他的論理和演算部が、上記排他的論理和値d’の第2ビット位置のM’ビットの値w’∈{0,1}M’と上記ハッシュ値u’との排他的論理和w’(+)u’を算出し、その演算結果をリカバリメッセージmrec’∈{0,1}M’とするステップと、
    第4ハッシュ演算部が、入力値に対してLビットのハッシュ値を出力するハッシュ関数H:{0,1}→{0,1}を、上記ハッシュ値Π’と上記第2排他的論理和演算部で算出された上記リカバリメッセージmrec’とに対応する値α’に作用させ、その演算結果であるLビットのハッシュ値H(α’)∈{0,1}を得るステップと、
    比較部が、上記Lビットの値h’と上記ハッシュ値H(α’)とを比較するステップと、
    を有することを特徴とする署名検証方法。
  17. 請求項1又は2に記載の署名生成装置としてコンピュータを機能させるためのプログラム。
  18. 請求項7又は8に記載の署名検証装置としてコンピュータを機能させるためのプログラム。
JP2007280287A 2006-10-31 2007-10-29 署名生成装置、署名検証装置、それらの方法及びプログラム Active JP4928412B2 (ja)

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)

* Cited by examiner, † Cited by third party
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 飞天诚信科技股份有限公司 数据签名方法、电子设备及计算机可读存储介质

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