JP4034743B2 - 多重署名方法、装置、プログラム及びシステム - Google Patents

多重署名方法、装置、プログラム及びシステム Download PDF

Info

Publication number
JP4034743B2
JP4034743B2 JP2004016109A JP2004016109A JP4034743B2 JP 4034743 B2 JP4034743 B2 JP 4034743B2 JP 2004016109 A JP2004016109 A JP 2004016109A JP 2004016109 A JP2004016109 A JP 2004016109A JP 4034743 B2 JP4034743 B2 JP 4034743B2
Authority
JP
Japan
Prior art keywords
signature
data
random function
bit
random
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004016109A
Other languages
English (en)
Other versions
JP2005210512A (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.)
Toshiba Corp
Original Assignee
Toshiba 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
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2004016109A priority Critical patent/JP4034743B2/ja
Priority to US11/037,089 priority patent/US7496759B2/en
Publication of JP2005210512A publication Critical patent/JP2005210512A/ja
Application granted granted Critical
Publication of JP4034743B2 publication Critical patent/JP4034743B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3255Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using group based signatures, e.g. ring or threshold signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3249Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using RSA or related signature schemes, e.g. Rabin scheme

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Description

本発明は、複数の署名者がある文書に対して順次署名生成処理を行うことで1つの署名を生成する多重署名方法、装置、プログラム及びシステムに関する。
一般に、暗号方法は共通鍵暗号方式と公開鍵暗号方式との二種類に類別できる。公開鍵暗号方式は、共通鍵方式で問題となる鍵配送を不要とする利点がある。
例えば公開鍵暗号方式においては、各利用者A,B,…は、公開鍵と秘密鍵との組を生成し、公開鍵を公開簿に登録する。ここで、各利用者A,B,…は利用者の総数とは無関係に1組の鍵の組のみを用意すればよい。利用時には、例えば利用者Aは、公開簿内の利用者Bの公開鍵を用いて暗号文を生成し、この暗号文を利用者Bに送信する。利用者Bは、受信した暗号文を自己の秘密鍵で復号する。このように、公開鍵暗号方式は、利用者A,B間の鍵配送を不要としている。代表的な公開鍵暗号方式として、RSA(Rivest-Shamir-Adleman)暗号、ElGamal暗号、楕円曲線暗号などが挙げられる。
以上のような公開鍵暗号方式は、落し戸付一方向性関数を利用している。落し戸付一方向性関数とは、ある向きの計算が容易に実行可能であるのに対し、逆向きの計算が秘密情報無しでは実行困難であるような関数である。
すなわち、公開鍵暗号方式の落し戸付一方向性関数は、公開簿内の公開鍵により、任意の利用者にある向きの計算(暗号文生成)を容易に実行可能とする性質と、各利用者が秘密鍵を保存することにより、第三者には逆向きの計算(暗号文復号)を実行困難とする性質とをもっている。
この落し戸付一方向性関数の性質を暗号方式と逆向きの使い方をすることで、署名方式が実現される。署名方式においては、秘密情報を持つ署名者のみが、第三者に検証可能な署名を生成できる。例えば各利用者A,B,…は、公開鍵と秘密鍵との組を生成し、公開鍵を公開簿に登録する。利用時には、例えば利用者Aは、自己の秘密鍵を用いて文書から署名を生成し、文書と署名を利用者Bに送信する。利用者Bは、署名と文書に対して、公開簿内の利用者Aの公開鍵を作用させて署名の正当性を検証する。代表的な署名方式としては、RSA署名、DSA(Digital Signature Algorithm)、ECDSA(Elliptic Curve Digital Signature Algorithm)などがある。
かかる署名方式を応用した技術として多重署名方式がある。多重署名方式とは、ある文書に対して複数の署名者が順次署名生成処理を行い、1つの署名を生成する方式である。多重署名方式は、例えば、ある組織内で文書を回覧して順次承認印を押すというシステムを電子的に実現する技術と考えられる。
多重署名方式と同様の効果をもたらす技術としては、ある文書に対して各署名者がそれぞれ署名を生成し、得られた各署名を連結する連結署名方式が考えられる。ここで、多重署名方式とは、生成する多重署名のサイズを、連結署名方式により得られる連結署名のサイズよりも小さくし得る方式をいう。
ここで、多重署名方式と連結署名方式の概念を図10を用いて説明する。図10(a)は多重署名方式の概念を示し、図10(b)は連結署名方式の概念を示す。
図10(a)では、1番目の署名者であるユーザ1が文書x に対する署名1を生成した後、2番目の署名者であるユーザ2に文書xと署名1を送る。 ユーザ2は文書xに対する署名として、署名1を利用して“署名1・2”を生成する。ここで、“署名1・2”はユーザ1,2が共に文書xを承認した旨を保証する署名であり、図10(b)に示す如き、ユーザ1の署名1と、ユーザ2の署名2とを連結したデータよりもサイズを小さくしている。以後、同様の作業をN番目の署名者であるユーザNまで行い、“多重署名1・2…N”を生成する。
また、“多重署名1・2…N”は、図11に示すように、正当性が検証される。ここで、多重署名の検証用装置は、文書xと“多重署名1…N”に対し、多重署名生成時の公開鍵1,…,Nに基づいて検証処理を実行し、その結果に応じて多重署名を受理又は棄却する。
このような多重署名方式には、幾つかの付加機能が提案されている。代表的な機能として、文書可変性(Message Flexibility)、署名順番可変性(Order Flexibility)、署名順番検証可能性(Order Verifiability)がある。ここで、文書可変性とは、複数のユーザが文書を回覧する際に、文書を更新又は変更しながら多重署名を生成できる性質をいう。
例えば図12に示すように、署名順番が1番目のユーザ1は、文書x1に対して署名1を生成する。次に、署名順番が2番目のユーザ2は、文書x1を更新又は変更し、差分情報としての文書x2を得ると、文書x1と文書x2に対し、署名1を利用して“署名1・2”を生成する。ここで、“署名1・2”は、ユーザ1が文書x1を承認した旨と、ユーザ2が文書x1,x2を承認した旨とを保証する署名である。
以下、同様にして、署名順番がN番の署名者であるユーザNまで順次、文書x1の更新又は変更と署名生成とが実行され、“多重署名1…N”が得られる。
署名順番可変性とは、署名生成の段階まで署名順番を自由に変更できる性質をいう。さらに、署名順番検証可能性とは、多重署名の検証処理において、署名を生成した署名者の順番が検証可能である性質をいう。例えば、ある多重署名方式が署名順番検証可能であるとき、N人の署名者により生成された多重署名が受理されると、検証者は、2番目の署名者が、文書を承認したことと、1番目の署名者の署名処理を承認したことと、を確認できる。本明細書中の多重署名方式は、文書可変性・署名順番可変性・署名順番検証可能性を備えているものとする。
一方、多重署名方式には、受動的な攻撃方法と能動的な攻撃方法が存在する。受動的な攻撃方法とは、攻撃者が公開情報のみを利用し、任意の文書に対する多重署名を偽造する方法である。能動的な攻撃方法とは、公開情報を利用し、任意の文書に対する多重署名を偽造する過程において、次の条件(i)〜(iii)を満たすときをいう。
(i)他の署名者の公開鍵を基に自らの公開鍵又は公開鍵と秘密鍵の組を作り、自ら正規の署名者として多重署名システムに参加できる。
(ii)何人かの署名者と結託して当該署名者の秘密鍵を受け取ることができる。
(iii)任意の文書の多重署名を任意の正規の署名者に生成してもらうことができる。
また、能動的な攻撃方法において、攻撃者がなりすましている署名者、及び攻撃者に結託している署名者を不正な署名者と呼ぶ。攻撃者が出力した署名が偽造署名であるとは、署名に関与したと考えられる署名者のグループのうち、少なくとも1人の署名者が不正な署名者でなく、署名に対応した文書に対して署名生成依頼を受けていないときをいう。
また、能動的な攻撃方法のうち、特に、鍵生成時に他の署名者の公開鍵を用いて自らの鍵を設定し、署名者の秘密鍵を用いずに多重署名を生成する方法が適応的内部者攻撃(Adaptive Insider Attack)として知られている。
このような能動的攻撃方法は、受動的攻撃方法よりも強力な攻撃方法である。よって、能動的攻撃方法に対しても安全な多重署名方法を構成することは、より強い安全性を保証できることを意味する。
この種の安全性に関し、多重署名方式は、第1の方式及び第2の方式の2通りに分類される。第1の方式は、離散対数問題の計算困難性を安全性の根拠として、ゼロ知識証明の概念により安全性証明が行われる方式である。代表的な方式としては、太田-岡本方式、及びMicali-太田-Reyzin方式がある。これら第1の方式は、多重署名のサイズが署名者の人数に依存せず1人の署名者による署名のサイズと同じであり、署名検証処理コストを抑制可能である、などの特徴がある。しかし、第1の方式の安全性は、ゼロ知識対話証明に基づくため、帰着の効率が悪く、緊密な安全性を有していない。ここで、緊密とは、ある問題を解く計算困難さと、別の問題を解く計算困難さの間の乖離度をいう。
一般に、多重署名方式の安全性を示すには、多重署名方式を破る問題を落し戸付一方向性関数の一方向性を破る問題に帰着させる。すなわち、多重署名方式を破ることができれば、落し戸付一方向性関数の一方向性を破ることができることを示すことで、多重署名方式の安全性を証明する。
詳しくは、多重署名方式を破ることができれば、高い確率で落し戸付一方向性関数の一方向性を破ることができることを示せるとき、当該多重署名方式を破る困難さは離散対数問題やRSA問題に代表される落し戸付一方向性関数の一方向性を破る困難さと同等と考えられる。このとき、多重署名方式は落し戸付一方向性関数の一方向性に対して緊密な安全性をもつといえる。
逆に、多重署名方式を破ることができても、低い確率でしか落し戸付一方向性関数の一方向性を破ることができないとき、多重署名方式は落し戸付一方向性関数の一方向性に対して緊密な安全性をもっていないという。
ここで、ある計算困難な問題を安全性の根拠とする2つの方式があり、一方が計算困難な問題に対して緊密な安全性をもち、他方が緊密な安全性を持たない場合を考える。この場合、緊密な安全性を持たない方式は、緊密な安全性をもつ方式と同等の安全性を保証するためには、より大きなサイズの鍵を用い、計算コストと保存領域を犠牲にする問題がある。上述した第1の方式はこれに該当する。
一方、多重署名方式の分類のうち、第2の方式は緊密な安全性を有するため、第1の方式の問題を解決するものとなっている。詳しくは、第2の方式は、素因数分解問題の計算困難さを安全性の根拠とする方式である。代表例としては、RSA問題の計算困難さを安全性の根拠とする見富-宮地方式(例えば、非特許文献1参照。)及び河内-多田方式(例えば、非特許文献2参照。)がある。
ここで、見富らの方式は、図13に示すように、第i番目の署名者が文書xにハッシュ関数Hを施し、得られたハッシュ値と前回の署名σi-1との排他的論理和をRSA署名関数に入力し、i番目の署名σを得る方式である。
また、河内らの方式は、図14に示すように、第i番目の署名者が文書x、前回の署名σi-1及び乱数rに第1のハッシュ関数Hを施し、得られた第1ハッシュ値wに第2のハッシュ関数Gを施し、第2ハッシュ値を得る。次に、第2ハッシュ値と、前回の署名σi-1及び乱数rとの排他的論理和を演算し、演算結果sを得る。更に、この演算結果sと第1ハッシュ値wとをRSA関数に入力し、i番目の署名σを得る方式である。
いずれにしても、これら第2の方式は、安全性がゼロ知識対話証明に基づく第1の方式に比べ、RSA問題の計算困難さに対して緊密な安全性を有している。
しかしながら、見富らの方式が有する安全性は、RSA問題の計算困難さに対して十分に緊密ではない。さらに、見富らの方式は署名者の署名鍵のサイズを署名順序が進むにつれて大きく取らなければならず、署名者の署名順番が限定される、署名鍵のサイズの増加に伴って計算量が増加する、などの問題がある。さらに、署名者の署名順番の制限を無くすには各署名者が異なるサイズの鍵を複数保存・登録しなければならない、という問題がある。
一方、河内らの方式が有する安全性は、RSA問題の計算困難さに対して十分に緊密である。しかしながら、河内らの方式は、見富らの方式と同様、署名者の署名鍵のサイズを署名順序が進むにつれて大きく取らなければならないため、署名順番が制限される、署名鍵のサイズの増加に伴い計算量が増加する、などの問題がある。
S.三富(S. Mitomi)、A.宮地(A. Miyaji)、"ア・ゼネラル・モデル・オブ・マルチシグネチャ・スキームズ・ウィズ・メッセージ・フレキシビリティ、オーダー・フレキシビリティ、アンド・オーダー・ベリファイアビリティ(A General Model of Multisignature Schemes with Message Flexibility, Order Flexibility, and Order Verifiability)"、アイイーアイシーイー・トランザクション・オブ・ファンダメンタルズ(IEICE Transaction of fundamentals)、2001年、E−84−A, pp.2488-2499 K.河内(K. Kawauchi)、M.多田(M. Tada)、"オン・ジ・イグザクト・セキュリティ・オブ.マルチシグネチャ・スキームズ・ベースト・オン・アールエスエイ(On the exact security of multisignature schemes based on RSA)"、ジ・エイトス・オーストララシアン・コンファレンス・インフォメーション・セキュリティ・アンド・プライバシ(エイシーアイエスピー 2003)(The Eighth Australasian Conference Information Security and Privacy (ACISP 2003)、シュプリンガー−フェアラーク(Springer-Verlag)、2003年、レクチャー・ノーツ・イン・コンピュータ・サイエンス・2727(Lecture Notes in Computer Science 2727)、 pp.336-349 M.ベラル(M. Bellare)、P.ロガウェイ(P. Rogaway)、"オプティマル・アシンメトリック・エンクリプション − ハウ・トゥー・エンクリプト・ウィズ・アールエスエイ(Optimal Asymmetric Encryption − How to encrypt with RSA)"、アドバンセズ・イン・クリプトロジー − ユーロクリプト’94 エルエヌシーエス(Advances in Cryptology − EUROCRYPT’94 LNCS)、シュプリンガー・フェアラーク(Springer-Verlag)、1995年
以上説明したように多重署名方式では、第2の方式のようにRSA問題の計算困難さに安全性の根拠をおく場合、署名順番が進むにつれて鍵のサイズを大きくしなければならないという問題がある。そのため、鍵のサイズに依存して署名順番が制限される、鍵が増加するにつれて計算量が増加するなどの問題がある。
本発明は上記実情を考慮してなされたもので、RSA問題に代表される落し戸付一方向性関数の逆関数演算の計算困難さに安全性の根拠をおく場合に、署名順番が進んでも鍵のサイズの増加を阻止し得る多重署名方法、装置、プログラム及びシステムを提供することを目的とする。
第1の発明は、他の多重署名生成装置により生成された第i−1番目の署名σi-1と文書データxとに基づいて、文書データxに対する第i番目の署名σiを生成し且つ入力手段、メモリ、分割手段、乱数生成手段、乱数メモリ、第1のランダム関数演算手段、第2のランダム関数演算手段、2項演算手段、署名値生成手段、連結手段及び出力手段を備えた多重署名生成装置による多重署名方法であって、前記入力手段が、署名者の操作により、前記第i−1番目の署名σ i-1 及び文書データxを前記メモリに書き込む工程と、前記分割手段が、前記メモリ内の第i−1番目の署名σi-1を2つに分割し、得られたビットの第2部分データσi-1,R及び残りの第1部分データσi-1,L前記メモリに書き込む工程と、前記乱数生成手段が、ビットの乱数データrを生成し、この乱数データr を前記乱数メモリに書き込む工程と、前記第1のランダム関数演算手段が、前記メモリ内の第1部分データσi-1,L 、前記第2部分データσi-1,R 、前記乱数メモリ内の乱数データr及び前記メモリ内の文書データxに第1ランダム関数H’を施し、得られたビットの第1ランダム関数値w前記メモリに書き込む工程と、前記第2のランダム関数演算手段が、前記メモリ内の第1ランダム関数値wに第2ランダム関数Gを施し、得られた(k+k)ビットの第2ランダム関数値g前記メモリに書き込む工程と、前記2項演算手段が、前記メモリ内の第2ランダム関数値gと、前記第2部分データσi-1,R及び前記乱数メモリ内の乱数データrとの2項演算を計算し、得られた(k+k)ビットの計算結果s前記メモリに書き込む工程と、前記署名値生成手段が、前記メモリ内の計算結果s及び前記第1ランダム関数値wに基づくkビットのデータに署名生成関数を施し、得られたkビットの署名値z前記メモリに書き込む工程と、前記連結手段が、前記メモリ内の第1部分データσi-1,Lを前記署名値zに連結し、第i番目の署名σ(=σi-1,L‖z)を生成する工程と、前記出力手段が、この第i番目の署名σを出力する工程と、を備えた多重署名方法である。
第2の発明は、他の多重署名生成装置により生成された第i−1番目の署名σi-1と文書データxとに基づいて、文書データxに対する第i番目の署名σiを生成し且つ入力手段、メモリ、分割手段、乱数生成手段、乱数メモリ、第1のランダム関数演算手段、第1の2項演算手段、第2のランダム関数演算手段、第2の2項演算手段、署名値生成手段、連結手段及び出力手段を備えた多重署名生成装置による多重署名方法であって、前記入力手段が、署名者の操作により、前記第i−1番目の署名σ i-1 及び文書データxを前記メモリに書き込む工程と、前記分割手段が、前記メモリ内の第i−1番目の署名σi-1を3つに分割し、得られたビットの第1部分データσi-1,L、kビットの第3部分データσi-1,R及び残りの第2部分データσi-1,M前記メモリに書き込む工程と、前記乱数生成手段が、ビットの乱数データrを生成し、この乱数データr を前記乱数メモリに書き込む工程と、前記第1のランダム関数演算手段が、前記メモリ内の第2部分データσi-1,M、前記第3部分データσi-1,R、前記乱数メモリ内の乱数データr及び前記メモリ内の文書データxに第1ランダム関数H’を施し、得られたビットの第1ランダム関数値w前記メモリに書き込む工程と、前記第1の2項演算手段が、前記メモリ内の第1ランダム関数値w及び前記第1部分データσi-1,Lの2項演算を計算し、得られたビットの計算結果w’を前記メモリに書き込む工程と、前記第2のランダム関数演算手段が、前記メモリ内の計算結果w’に第2ランダム関数Gを施し、得られた(k+k)ビットの第2ランダム関数値g前記メモリに書き込む工程と、前記第2の2項演算手段が、前記メモリ内の第2ランダム関数値gと、前記第3部分データσi-1,R及び前記乱数メモリ内の乱数データrとの2項演算を計算し、得られた(k+k)ビットの計算結果s前記メモリに書き込む工程と、前記署名値生成手段が、前記メモリ内の計算結果s及びw’に基づくkビットのデータに署名生成関数を施し、得られたkビットの署名値z前記メモリに書き込む工程と、前記連結手段が、前記第2部分データσi-1,Mを前記署名値zに連結し、第i番目の署名σ(=σi-1,M‖z)を生成する工程と、前記出力手段が、この第i番目の署名σを出力する工程と、を備えた多重署名方法である。
(作用)
第1及び第2の発明は、従来の方式(図13及び図14参照)とは異なり、図1又は図2に示すように、第i番目の署名σを生成する際に、第i−1番目の署名σi-1を分割し、kビットの部分データσi-1,R及び残りの部分データ(第1発明ではσi-1,L,第2の発明ではσi-1,L,σi-1,M)を得る。ここで、kビットの乱数rを連結したときに(k+k)ビットを越えてしまう部分データ(第1発明ではσi-1,L,第2の発明ではσi-1,L,σi-1,M)を、署名生成関数の入力側にある2項演算の入力から外す。これにより、2項演算の計算結果sのサイズを(k+k)ビットで一定とし、結果的に署名生成関数の入力サイズを一定にする。従って、RSA問題に代表される一方向性関数の逆関数演算の計算困難さに安全性の根拠をおく場合に、署名順番が進んでも鍵のサイズの増加を阻止することができる。
以上説明したように本発明によれば、RSA問題に代表される一方向性関数の逆関数演算の計算困難さに安全性の根拠をおく場合に、署名順番が進んでも鍵のサイズの増加を阻止することができる。
以下、本発明の各実施形態について図面を参照しながら説明するが、その前に各実施形態の概要を述べる。第1の実施形態は前述した第1の発明(図1参照)に対応し、第2の実施形態は第2の発明(図2参照)に対応している。
各実施形態では、多重署名システムの安全性を確保する観点から、署名生成関数としては、RSA署名に代表される署名方式を使用する。各実施形態で用いられる、第i−1晩目の署名者が用いる署名生成関数を一般にf −1で表す。fとしては、後に述べるRSA関数や、Rabin関数を用いることが可能である。以下では、まず、入出力サイズがkビットとなる署名生成関数を用いて各実施形態を説明する。さらに、RSA関数やRabin関数を用いる場合に生じる変形例について図15及び図16を用いて説明する。
2つのランダム関数H’,Gは、例えばSHAなどのハッシュ関数とする。なお、ランダム関数H’,Gの具体例は非特許文献3に挙げられている。続いて、各実施形態を具体的に述べる。
(第1の実施形態)
図3は本発明の第1の実施形態に係る多重署名システムの構成を示す模式図である。この多重署名システムは、N台の署名生成装置Sg〜Sg及び1台の署名検証装置Vが互いにネットワークを介して接続されている。
ここで、各署名生成装置Sg〜Sgは、互いに同一のハードウェア構成を有するので、ここでは署名生成装置Sgを代表例に挙げて説明する。
署名生成装置Sgは、図4に示すように、メモリ1、入出力部2、乱数発生器3、乱数メモリ4、演算器5、Hi’関数演算部6、Gi関数演算部7、公開鍵暗号署名生成部8s、秘密鍵メモリ9及び制御部10sを備えている。なお、乱数発生器3及び秘密鍵メモリ9を除く各要素1〜10は、互いにバスを介して接続されている。また、各部8s,10sの添字sは、署名生成処理を表している。同様に、後述する添字vは署名検証処理を表す。
ここで、メモリ1は、各部2〜10から読出書込可能な記憶部であり、例えば文書データx、署名σi-1、第1部分データσi-1,L、第2部分データσi-1,R、第1ランダム関数値w、第2ランダム関数値g、計算結果s、署名値z、署名σといったデータが記憶される。
文書データxは、第1番目乃至第i−1番目までの署名者の識別子を含む文書データx’に第i番目の署名者の識別情報IDを連結して得られるものである。
署名者の識別子IDは、署名順番可変性を持つ本実施形態の多重署名検証において、どの署名者の公開鍵をどの順番で作用させればよいかを知る上で重要な情報となる。補足すると、ここでは署名者の識別子IDを署名生成順番iと同一視して説明している。一般には、識別子IDの順番iと署名順番iとは無関係の場合が多いが、署名順番iと署名者の識別情報IDとを対応付けることで、識別子IDと署名順番iとを同一視することが可能である。
署名者の識別子IDは、署名に添付させて送信することが考えられるが、以下の各実施形態では文書可変性の性質を利用し、前の署名順番IDi-1の署名者から受けた文書データx’に自分の識別子IDを連結して新たな文書データxとして署名生成処理を行い、自らの識別子IDのついた新たな文書データxを次の署名順番i+1の署名者に送信することが可能である。
入出力部2は、署名生成装置Sと外部との間のインターフェイス装置であり、例えば、ユーザの操作により、文書データx及び署名σi-1を入力してメモリ1に書込む機能と、署名生成処理の結果、メモリ1に記憶された署名σ及び文書データxを出力する機能とをもっている。
乱数発生器3は、署名生成時に必要な乱数rを発生させる部分であり、生成された乱数rを乱数メモリ4に書込む機能をもっている。
乱数メモリ4は、乱数発生器3から書込まれた乱数rを演算器5及びH i ’関数演算部6から読出可能に保持するものである。
演算器5は、各部6〜10sに制御され、メモリ1内のデータに対する多倍長の演算を実行する部分であり、例えば、排他的論理和等の2項演算の計算、ビット連結・分割、ビットの比較、などを実行する機能と、実行結果をメモリ1に書込む機能をもっている。ここで、2項演算は、排他的論理和である場合を説明するが、これに限らず、排他的論理和に代えて、2のべき乗を法とした加算などを用いてもよい。但し、2のべき乗を法とした加算の場合、署名検証を可能にするための適切な処理を加える必要がある。適切な処理としては、例えば第1ランダム関数H’の出力を1ビット短くして先頭に0を添加する処理、署名検証時に桁あふれを検出するコードを追加する処理、複数の候補の中から正しい値を探す処理、などが挙げられる。
i’関数演算部6は、メモリ1内の第1部分データσi-1,L 、第2部分データσi-1,R 乱数メモリ4内の乱数データr及びメモリ1内の文書データxに第1ランダム関数H’を施す機能と、得られたkビットの第1ランダム関数値wをメモリ1に書込む機能とをもっている。
ここで、第1ランダム関数Hi’としては、例えばSHA1などのハッシュ関数を用い、任意の長さの入力に対し、k1ビットの乱数を出力するものとする。第1ランダム関数Hi’には一方向性と耐衝突性が要求されており、k1の値としては例えば100ビットから200ビットの値を用いる。また、第1ランダム関数Hi’は各利用者に特有のランダム関数を用いてもよいし、全て又は一部の利用者で同じランダム関数を用いることも可能である。いずれにしても第1ランダム関数H’は、添字iにより、署名者の識別子IDと対応付けて表している。また、第1のランダム関数H’と第2のランダム関数Gを同一の関数とし、関数演算部6,7を1つのみに削減することも可能である。
関数演算部7は、メモリ1内の第1ランダム関数値wに第2ランダム関数Gを施す機能と、得られた(k+k)ビットの第2ランダム関数値gをメモリ1に書込む機能とをもっている。
ここで、第2ランダム関数Gとしては、例えばSHA1などのハッシュ関数を用い、k1ビットの長さの入力に対し、k+kビットの乱数を出力するものとする。ここで、各ビット長k,k,k,kの間には、k=k+k+kの関係が成り立つものとする。kは、署名者が生成させる乱数のサイズを表し、例えば80ビットから200ビットの値を用いる。kは、署名者が多重署名を生成する際に、多重署名のサイズの増加を抑えるために、前の署名順番の署名者が生成した署名情報のうち該当ビットを自らの署名生成関数及び第1のランダム関数H’への入力とする部分のサイズを表し、具体的にはk2=k−k−kであり、例えば600ビットから800ビットの値を用いる。第2ランダム関数Giには一方向性と耐衝突性が要求される。また、Giは各利用者に特有のランダム関数を用いてもよいし、全て又は一部の利用者で同じランダム関数を用いることも可能である。いずれにしても、第2ランダム関数Gは、添字iにより、署名者の識別子IDと対応付けて表している。
公開鍵暗号署名生成部8sは、落し戸付一方向性関数fを用いた公開鍵暗号方式により、秘密鍵メモリ9内の秘密鍵に基づいて、メモリ1内の計算結果s及び第1ランダム関数値wに基づくk(=k+k+k)ビットのデータに署名生成関数を施す機能と、得られたkビットの署名値zをメモリ1に書込む機能とをもっている。また、落し戸付一方向性関数fは、RSA暗号方式に代表される公開鍵暗号方式が用いられる。落し戸付一方向性関数fの入出力値の長さをkで表すとき、一般にkは1024ビットや2048ビットなどが選択される。なお、各署名者が用いる署名生成関数の入出力サイズは署名順番に依存しないため、署名生成関数は通常の署名生成の用途で用いる署名生成関数を用いることが可能である。 秘密鍵メモリ9は、署名者(署名生成装置利用者)の公開鍵暗号方式に関する秘密鍵を格納するメモリであり、公開鍵暗号署名生成部8sから読出可能となっている。
制御部10sは、入力された第i−1番目の署名σi-1及び文書データxに基づいて、文書データxに対する第i番目の署名σを生成し、得られた署名σ及び文書データxを出力するように各部1〜9を制御するものである。具体的には制御部10sは、図5に示すように各部1〜9を制御する機能をもっている。
一方、署名検証装置Vは、図5に示すように、署名生成装置Sgの各要素1〜10sのうち、乱数発生器3、乱数メモリ4及び秘密鍵メモリ9が省略され、公開鍵暗号署名生成部8sに代えて、公開鍵暗号署名検証部8vを有し、署名生成処理のための制御部10sに代えて、署名検証処理のための制御部10vを備えている。なお、署名検証装置Vの残りの要素1,2,5〜7は、署名生成装置Sgとは入出力データの内容が異なるものの、署名生成装置で述べた要素1,2,5〜7と同様の処理機能をもっている。
ここで、公開鍵暗号署名検証部8vは、署名生成装置S〜Sと同一の公開鍵暗号方式により、メモリ1内の公開鍵に基づいて、メモリ1内の署名値zに鍵長kビットのRSA署名検証関数を施す機能と、得られた(k+k)ビットの計算結果s及びkビットの第1ランダム関数値wをメモリ1に書込む機能とをもっている。
制御部10vは、入力された第i番目の署名σi及び文書データxに基づいて、この署名σの正当性を検証するように各部1〜8vを制御するものである。具体的には制御部10vは、図5に示すように各部1〜8vを制御する機能をもっている。
次に、以上のように構成された多重署名システムの動作を図6及び図7のフローチャートを用いて説明する。
(署名生成処理)
署名者は、第i−1番目の署名者から受けた署名σi-1及び文書データx’に関し、文書データx’に自己の識別子IDを連結してなる文書データxに自己の署名を添付するため、署名生成装置Sgを利用する。ここで、文書データx’=x1‖…‖xi-1‖ID1‖…‖IDi-1である。但し、i番目の署名者が文書データx’を修正した場合、修正後の差分情報xiが連結され、文書データx’=x1‖…‖xi-1‖xi‖ID1‖…‖IDi-1となる。また、署名対象の文書データx=x’‖ID=x1‖…‖xi‖ID1‖…‖IDiである。この署名生成装置では、制御部10sにより、図1及び図5に示すように、各部1〜9が動作する。
署名順番が1番の署名者は、署名をつけるべき文書xを入手し、前の署名者の署名情報σ0として、0がk個連結した情報0k2を準備する。
入出力部2は、署名者の操作により、{k+(i−2)(k+k)}ビット(但し、k=k0+k+k)の第i−1番目の署名σi-1及び文書データxを読込み、それぞれメモリ1に書込む(ST1)。但し、署名順番が1番の場合、入出力部2は、署名初期値σとして0がk個連結した情報0k2をメモリ1に書込む。
演算器5は、メモリ1内の第i−1番目の署名σi-1を2つに分割し、得られた下位kビットの第2部分データσi-1,R及び残りの(i−1)(k+k)ビットの第1部分データσi-1,Lをメモリ1に書込む(ST2)。なお、署名順番が1番の場合、第2部分データσi-1,R=σ0であり、第1部分データσi-1,Lは存在しない。
乱数発生器3は、kビットの乱数データrを生成し、この乱数r乱数メモリに書込む(ST3)。
’関数演算部6は、メモリ1内の第1部分データσi-1,L 、第2部分データσi-1,R 乱数メモリ4内の乱数データr及びメモリ1内の文書データxに第1ランダム関数H’を施し、得られたkビットの第1ランダム関数値w(=H’(x‖σi-1,L‖σi-1,R‖r))をメモリ1に書込む(ST4)。
関数演算部7は、メモリ1内の第1ランダム関数値wに第2ランダム関数Gを施し、得られた(k+k)ビットの第2ランダム関数値g(=G(w))をメモリ1に書込む。
演算器5は、メモリ1内の第2ランダム関数値gと、第2部分データσi-1,R及び乱数メモリ4内の乱数データrの連結データ(σi-1,R‖r)との排他的論理和を計算し、得られた(k+k)ビットの計算結果sをメモリ1に書込む(ST5)。
公開鍵暗号署名生成部8sは、落し戸付一方向性関数fを用いた公開鍵暗号方式により、秘密鍵メモリ9内の秘密鍵に基づいて、メモリ1内の計算結果s及び第1ランダム関数値wの連結データ(s‖w)からなるk(=k+k+k)ビットのデータに署名生成関数を施し、得られたkビットの署名値z(=fi -1(s‖w))をメモリ1に書込む(ST6)。
入出力部2は、メモリ1内の第1部分データσi-1,Lを署名値zに連結し、得られた{k+(i−1)(k+k)}ビットの第i番目の署名σ(=σi-1,L‖z)及び文書データxを出力する(ST7)。但し、署名順番が1番の場合には、第1部分データσi-1,Lが存在しないので、署名値z=署名σとなる。
なお、以上のような第i番目の署名σの生成処理は、受け取った第i−1番目の署名σi-1を検証した後に行なってもよい。この検証は、後述する署名検証処理により実行可能である。
(署名検証処理)
署名検証者は、第i番目の署名σ及び文書データxが入力されたとき、この多重した署名σの正当性を検証するため、署名検証装置vを利用する。署名検証装置vは、署名検証処理を行う際に、各署名者の公開鍵を入出力部2から公開鍵暗号署名検証部8vに読み込むことにより、署名検証処理が可能となる。
署名検証装置vにおいては、図6に示すように、署名検証者の操作により、入出力部2が検証対象の文書データx及び第i番目の署名σをメモリ1に書込む(ST11)。
演算器5は、メモリ1内の第i番目の署名σiを2つに分割し、得られた下位kビットの署名値z及び残りの(i−1)(k+k)ビットの第1部分データσi-1,Lをメモリ1に書込む(ST12)。
公開鍵暗号署名検証部8vは、公開鍵暗号方式により、メモリ1内の公開鍵に基づいて、メモリ1内の署名値zに署名検証関数を施し(f(z)=s‖w)、得られた上位(k+k)ビットの計算結果s及び下位kビットの第1ランダム関数値wをメモリ1に書込む(ST13)。
関数演算部7は、メモリ1内の第1ランダム関数値wに第2ランダム関数Gを施し、得られた(k+k)ビットの第2ランダム関数値g(=G(w))をメモリ1に書込む。
演算器5は、メモリ1内の第2ランダム関数値gと計算結果sとの排他的論理和を計算し、(k+k)ビットの計算結果(σi-1,R‖r)を得る(ST14)。
’関数演算部7は、メモリ1内の第1部分データσi-1,L、計算結果(σi-1,R‖r)及び文書データxに第1ランダム関数H’を施し、得られたkビットの第1ランダム関数値w’(=H’(x‖σi-1,L‖σi-1,R‖r))をメモリ1内に書込む(ST15)。
制御部10vは、メモリ1内からステップST13により得られた第1ランダム関数値wとステップST15により得られた第1ランダム関数値w’とを読み出して両者を互いに検証し(ST16)、両者が一致したとき、第i番目の署名を正当であると判定する。
この第i番目の署名が正当のとき、演算器5は、メモリ1内の計算結果(σi-1,R‖r)を上位kビットの第2部分データσi-1,R及び下位kビットの乱数データrに分割し、それぞれメモリ1に書込む。
また、演算器5は、メモリ1内の第1部分データσi-1,L及び第2部分データσi-1,Rを連結して第i−1番目の署名σi-1(=σi-1,L‖σi-1,R)を復元する。
制御部10vは、この第i−1番目の署名σi-1及び文書データxを第i番目の署名σi及び文書データxとしてメモリ1を更新する。
制御部10vは、この更新の完了後、i=1か否かを判定し(ST17)、i=1でないときには、前述したステップST11〜ST17を再実行するように、各部1〜8vを制御する。但し、制御部10vは、再実行の制御の前に、文書データxから署名順番が第i番目の署名者の識別情報IDを削除し、得られた文書データx’を文書データxに置き換える。
一方、制御部10vは、i=1のとき(ST17;YES)には更新した署名σ0が予め設定された署名初期値0k2と一致するか否かを検証し(ST19)、両者が一致するときには、多重した署名σを受理し(ST20)、署名検証処理を終了する。
また、制御部10vは、ステップST19又はST16にて両者が不一致のとき、署名を棄却し(ST21)、署名検証処理を終了する。
(乱数ri及びランダム関数H’,Gの役割)
ここで、以上の動作における乱数r、第1のランダム関数Hi’、第2のランダム関数Giの役割を述べる。
乱数rは、安全性の向上、より厳密には帰着効率の向上に関与している。前述したように、一般に多重署名方式の安全性は、帰着により証明される。安全性証明は、多重署名方式が安全でなければ、RSA問題に代表される落し戸付一方向性関数の逆関数演算を実行することができることを示すことで行われる。すなわち、多重署名方式を破る偽造者が存在するならば、シミュレーション環境で偽造者を動作させ、偽造者から情報を得ることでRSA問題を破るようなアルゴリズムを構成する。
証明の中での乱数riの役割は、直観的には、シミュレーションにより署名依頼に適切に回答できなくなった文書に対して偽造者が当該文書の署名依頼を出力した際、新たな乱数により署名依頼への回答を適切にシミュレートできることにある。署名方式PSSにおける乱数も同様の役割を果たしている。このとき、偽造者に乱数がランダムに選ばれたことを保証するために、乱数は真にランダムに選ぶ必要があるが、ここで選んだ乱数が過去に選んだ乱数と同一であって、署名依頼への回答を適切にシミュレートできないときには安全性証明が破綻する。従って、ランダムに選んだ乱数は過去に選んだものと異なる必要があり、そのためには乱数のサイズを十分に大きく取る必要がある。一般的には、乱数rのサイズkとしては、80〜160ビットの値を選べば十分である。
第1及び第2のランダム関数Hi’,Giの第1の役割は、署名検証における署名の正当性を保証することである。すなわち、ステップST16において、署名検証処理の過程で計算された値wと第1のランダム関数の出力w’とが一致するかどうか、ステップST19において、署名検証処理の過程で計算された値sと第2のランダム関数Gの出力G(w)との排他的論理和から得られる値σ0,R=σが、署名順番が0番目の署名者が初期値として用いた値0k2に等しいかどうか、で署名を受理するか否かを判定している。
さらに、第1及び第2のランダム関数Hi’,Giの第2の役割は、安全性証明において偽造者を動作させる環境のシミュレートを適切に実現することが挙げられる。安全性証明はランダムオラクルの仮定の基で行われることに注意する。ここで、ランダムオラクルモデルとは、ランダム関数が理想的であり、同一の入力に対しては同一の出力を得るが、ある入力を与えて計算するまではその入力に対応する出力は1ビットとして予測できない状況をいう。
(多重署名方式が安全な理由)
本実施形態の多重署名方式が安全である直観的な理由は、次のように説明できる。多重署名方式が安全であるとは、直観的には、いかなる攻撃者も任意の文書に対して署名を偽造できないときをいう。このとき、攻撃者はN人の署名者による多重署名を偽造する際、少なくとも一人の署名者を除いて最大N-1人の署名者と結託して、N-1人の署名者の秘密鍵を入手することが許されている。今、攻撃者が少なくとも一人のある署名者の署名生成関数として用いられている落し戸付一方向性関数fiの一方向性を破らずに、偽造署名を生成する場合を考える。
このとき、攻撃者にとって最良の攻撃手順は、先に署名候補zi’を決めて、次に適切な文書xを定めることである。攻撃者はzi’を定めると、一方向性関数fiを計算可能な向きに作用させてsi‖wi=fi(zi’)を求めることができ、以下、多重署名検証手順に従ってσi-1、σi-2,・・・,σ1,σ0を計算することが可能である。
しかし、第1及び第2のランダム関数H’,Gの性質、及び、一方向性関数fiが一対一関数であることから、次の状況(a)(b)は偶然でしか起こりえない。
(a)ランダムに選んだziに対して各署名者の署名情報に対応するwiが第1のランダム関数H’にx,σi-1‖riを入力して得られる値と一致すること。
(b)ランダムなziに対して得られる署名σ0と初期値データ0k2とが一致すること。
従って、署名の偽造は困難である。
(能動的な攻撃に対する安全性)
本実施形態の多重署名に関し、能動的な攻撃を行う攻撃者を考える。攻撃者は正規署名者に対して、自ら選んだ文書に対して署名依頼を行い、対応する署名を受け取り、そこで得た情報を基に第1実施形態に対して攻撃を行う。
署名依頼を行うことで得られる情報は、受け取った署名σii-1,L‖zi’の署名検証を行うことで得られる情報、すなわち、文書xと前の署名順番の署名者の署名情報σi-1に対して乱数riが選ばれて、第1のランダム関数Hi’に文書と署名情報と乱数の連結データx‖σi-1,L‖σi-1,R‖riが入力されたときにwiが出力されること、wiを第2のランダム関数Giに入力して得られるGi(wi)とσi-1,R‖riとの排他的論理和を計算するとsiと等しくなること、落し戸付一方向性関数の逆関数演算f-1(si‖wi)がzi’と等しくなること、である。
能動的攻撃により本実施形態の署名方式の偽造が成功するか否かは、データsi‖wiに対して落し戸付一方向性関数の逆関数演算zi’=f-1(si‖wi)が計算できるか否かによる。今、攻撃者が能動的攻撃を行った結果、及び、自ら選んだzi’を落し戸付一方向性関数に入力することでsi‖wiを計算して、組(si‖wi,zi’=f-1(si‖wi))を多数所有しているとする。
一般に、文書x、σi-1、乱数riを任意に選んだとしても、第1及び第2のランダム関数H’,Gの性質から、計算されたsi‖wiが保有したリストにあるs‖wと一致することは起こりえない。
従って、受動的な攻撃と同様、攻撃者にとって最良の攻撃手順は、先に署名候補zi’を決めて、次に適切な文書xを定めることである。ここで、保有している(s‖w,z)の中で、特に能動的に得られた組に対して、データwから得られる値G(w)とデータsとの排他的論理和により計算されるσi-1,R‖rに、署名依頼として出力したσi-1,Lと文書xとは異なるσi-1,L’とx’を添加して連結データ(x‖σi-1,L’‖σi-1,R‖r)を得たとする。しかしながら、この連結データを第1のランダム関数Hi’に入力した際に、第1のランダム関数Hi’の出力がwと等しくなるようにσi-1,L’とx’を見つけることは、第1のランダム関数Hi’の性質から困難である。このため、攻撃は不可能である。
なお、署名依頼に出力したσi-1,Lとxとは異なるσi-1,L’とx’を選ぶ理由は、次の通りである。すなわち、署名依頼に出力したσi-1,Lとxを用いた場合、σi-1,R‖rにσi-1,Lとxを第1のランダム関数に入力して得られる値はwと一致はするが、仮にxとσi-1,L‖σi-1,Rに対する署名として署名σi-1,L‖zを出力したとしても、この署名は能動的攻撃である署名依頼により正規の署名者が生成した署名そのものである。従って、署名の偽造、すなわち、正規の署名者が承認していない文書に対して新たな署名を出力すること、には成功しないからである。
従って、本実施形態の多重署名方式に対しても能動的な攻撃により得られた情報を用いて偽造署名を出力することは困難であり、上述した理由から本実施形態の安全性が証明できる。安全性の議論と同様の議論は、後述する第2実施形態の安全性にも適用できる。
上述したように本実施形態によれば、図1に示すように、第i番目の署名σを生成する際に、第i−1番目の署名σi-1を分割し、kビットの乱数rを連結したときに(k+k)ビットを越える部分(σi-1,L)を、署名生成関数f −1の入力側にある2項演算の入力から外す。これにより、2項演算の計算結果sのサイズを(k+k)ビットで一定とし、結果的に署名生成関数の入力サイズ(kビット)を一定にする。従って、落し戸付一方向性関数の逆関数演算の計算困難さに安全性の根拠をおく場合に、署名順番が進んでも鍵のサイズの増加を阻止することができる。
詳しくは、当該署名者は、前の署名順番の署名者の署名情報を2つ以上の部分に分ける。そのうち1つは該当ビットが署名生成関数に入力される部分であり、残りの部分は該当ビットが第1のランダム関数H’に入力された後に署名生成関数の出力に添付されて当該署名者の署名として出力される部分である。この分割により、署名生成関数への入力の長さを署名順番に依存しないようにすることで、各署名者の鍵のサイズは署名順番や総署名者数に依存することなく一定にできる。
より詳しくは、本実施形態は、図14に示した方法とは異なり、第i−1番目の署名σi-1のうち、下位k2ビットの第2部分データ(σi-1,R)を署名生成関数f −1に入力し、残りの部分(σi-1,L)を署名生成関数に入力せずに署名値zに添付することにより、緊密な安全性を保ちつつ、各署名者が用いる署名生成関数の入力サイズ、すなわち、秘密鍵のサイズを署名順番や総署名者数に依存することなく一定にとることができる。
従って、本方法を実装する際には、署名順番を署名生成関数の入力サイズに制限されることなく自由に選ぶことが可能で(署名順番可変性)あり、さらに、既存技術と異なり署名生成関数の入力サイズが署名順番に依存して増加することがないため、署名順番が大きくなるにつれて計算量が増加する問題を解決できる。また、計算量の増加を抑えるとともに、実用的に署名順番可変性・署名順番検証可能性を実現できる。
なお、本実施形態は、次のように変形してもよい。
例えば、署名生成処理においては、署名初期値σとして、0がk個連結した情報0k2を用いていたが、これに限らず、kビット以上のサイズをもつ固定値を用いるように変形してもよい。
以上で説明した上記実施形態は、署名生成関数を一般化したものについて説明したが、具体的な例として、署名生成関数としてRSA関数やRabin関数を用いる場合には、実装等において制約を受ける。従って、厳密にはRSA署名方式やRabin署名方式は、kビットの値であっても法の値より大きい値を入力とすることはできないが、法の値より大きな値を入力するための技術が知られており、例えば図15や図16に示すような変形例を構成することが可能である。
図15の方法では、本実施形態の処理手順を示す図6のステップST1において、k+(i−2)(k+k)+i−2ビットの第i−1番目σi−1を読み込み、ステップST2において、kビットからなる第2の部分σi−1,Rと(i−1)(k+k)+i−1ビットからなる第一の部分σi−1,Lに分割した後、ステップST6において、sとwを連結した情報の先頭に0を連結して得られるk=1+k+k+kビットのデータ0‖s‖wに対して、zをf -1(0‖s‖w)により計算する.最後に、ステップST7において、(i−1)(k+k)+i−1ビットの第一の部分σi−1,Lとkビットのzを連結して、k+(i−1)(k+k)+i−1ビットの値の第i番目の署名σを計算する。この変形例における署名検証処理では、ステップST13において、RSA署名またはRabin署名の公開鍵を署名値ziに作用した後、先頭ビットが0になるか否かを検査し、先頭ビットが0のときには公開鍵を作用させて得られるデータのうち、2ビット目からk+kビットをs、下位kビットをwiとおき、署名検証処理を行う。検査の結果、先頭ビットが0でないときには、署名を棄却すればよい。
図16の方法では、本実施形態の処理手順を示す図6のステップST1において、k+(i−2)(k+k)+i−2ビットの第i−1番目σi−1を読み込み、ステップST2において、kビットからなる第2の部分σi−1,Rと(i−1)(k+k)+i−2ビットからなる第一の部分σi−1,Lに分割する。さらに、ステップST6において、sとwを連結して得られるk=1+k+k+kビットのデータの先頭ビットs と残りのk−1ビットからなるs’‖wに分割して、zをf -1(s’‖w)により計算する.最後に、ステップST7において、(i−1)(k+k)+i−2ビットの第一の部分σi−1,Lとsとwを連結して得られるデータの先頭ビットs とkビットのzを連結して、k+(i−1)(k+k)+i−1ビットからなるσi−1,L‖s ‖zの値の第i番目の署名σを計算する。 さらに、ステップST6では、計算結果siと第1ランダム関数値wiの連結データを署名生成関数に入力する場合を述べたが、これに限らず、計算結果siとwiから生成される別のデータを署名生成関数に入力するように変形してもよい。例えば、第3のランダム関数G’を用いてsiをsi’とし、w’とG’(si)との排他的論理和の計算結果をw”とし、これらのデータsi’,wi”を連結したデータ(si’‖wi”)を署名生成関数に入力する変形例などが考えられる。
(第2の実施形態)
次に、本発明の第2の実施形態に係る多重署名システムについて前述した図3乃至図5を参照しながら説明する。
すなわち、本実施形態は、ハードウェア構成としては第1の実施形態と同様であるが、第1の実施形態とは異なり、図1に示した方式に代えて、図2に示した方式を実行するものである。これに伴い、署名生成装置Sgの制御部10sが図8に示すように各部1〜9を制御するものとなっており、署名検証装置vの制御部10vが図9に示すように各部1〜8vを制御するものとなっている。
次に、以上のように構成された多重署名システムの動作を図8及び図9のフローチャートを用いて説明する。
(署名生成処理)
署名者は、第i−1番目の署名者から受けた署名σi-1及び文書データx’に関し、文書データx’に自己の識別子IDを連結してなる文書データxに自己の署名を添付するため、署名生成装置Sgを利用する。ここで、文書データx’=x1‖…‖xi-1‖ID1‖…‖IDi-1である。但し、i番目の署名者が文書データx’を修正した場合、修正後の差分情報xiが連結され、文書データx’=x1‖…‖xi-1‖xi‖ID1‖…‖IDi-1となる。また、署名対象の文書データx=x’‖ID=x1‖…‖xi‖ID1‖…‖IDiである。この署名生成装置では、制御部10sにより、図2及び図8に示すように、各部1〜9が動作する。
署名順番が1番の署名者は、署名をつけるべき文書xを入手し、前の署名者の署名情報σ0として、0が2k+k個連結した情報02k1+k2を準備する。
入出力部2は、署名者の操作により、{k+k+(i−2)k)}ビット(但し、k=k0+k+k)の第i−1番目の署名σi-1及び文書データxを読込み、それぞれメモリ1に書込む(ST31)。但し、署名順番が1番の場合、入出力部2は、署名初期値σとして0が2k+k個連結した情報02k1+k2をメモリ1に書込む。
演算器5は、メモリ1内の第i−1番目の署名σi-1を3つに分割し、得られた上位kビットの第1部分データσi-1,L、下位kビットの第3部分データσi-1,R及び残りの{k+(i−1)k}ビットの第2部分データσi-1,Mをメモリ1に書込む(ST32)。
乱数発生器3は、kビットの乱数データrを生成し、この乱数r乱数メモリに書込む(ST33)。
’関数演算部6は、メモリ1内の第2部分データσi-1,M 、第3部分データσi-1,R 乱数メモリ4内の乱数データr及びメモリ1内の文書データxに第1ランダム関数H’を施し、得られたkビットの第1ランダム関数値w(=H’(x‖σi-1,M‖σi-1,R‖r))をメモリ1に書込む(ST34)。
演算器5は、メモリ1内の第1ランダム関数値wと、第1部分データσi-1,Lとの排他的論理和を計算し、得られたkビットの計算結果w’をメモリ1に書込む(ST35)。
関数演算部7は、メモリ1内の計算結果w’に第2ランダム関数Gを施し、得られた(k+k)ビットの第2ランダム関数値g(=G(w))をメモリ1に書込む。
演算器5は、メモリ1内の第2ランダム関数値gと、第3部分データσi-1,R及び乱数メモリ4内の乱数データrの連結データ(σi-1,R‖r)との排他的論理和を計算し、得られた(k+k)ビットの計算結果sをメモリ1に書込む(ST36)。
公開鍵暗号署名生成部8sは、落し戸付一方向性関数fを用いた公開鍵暗号方式により、秘密鍵メモリ9内の秘密鍵に基づいて、メモリ1内の計算結果s及びw’の連結データ(s‖w’)に鍵長k(=k+k+k)ビットの署名生成関数f −1を施し、得られたkビットの署名値z(=fi -1(s‖w’))をメモリ1に書込む(ST37)。
入出力部2は、メモリ1内の第2部分データσi-1,Mを署名値zに連結し、得られた{k+k+(i−1)k)}ビットの第i番目の署名σ(=σi-1,M‖z)及び文書データxを出力する(ST38)。
なお、以上のような第i番目の署名σの生成処理は、受け取った第i−1番目の署名σi-1を検証した後に行なってもよい。この検証は、後述する署名検証処理により実行可能である。
(署名検証処理)
署名検証者は、第i番目の署名σ及び文書データxが入力されたとき、この多重した署名σの正当性を検証するため、署名検証装置vを利用する。署名検証装置vは、署名検証処理を行う際に、各署名者の公開鍵を入出力部2から公開鍵暗号署名検証部8vに読み込むことにより、署名検証処理が可能となる。
署名検証装置vにおいては、図9に示すように、署名検証者の操作により、入出力部2が検証対象の文書データx及び{k+k+(i−1)k)}ビットの第i番目の署名σをメモリ1に書込む(ST41)。
制御部10vは、メモリ1内の文書データxにおける識別子ID〜IDに基づいて署名順番iを読み込む(ST42)。
演算器5は、メモリ1内の第i番目の署名σiを2つに分割し、得られた下位kビットの署名値z及び残りの{k+(i−1)k)}ビットの第2部分データσi-1,Mをメモリ1に書込む(ST43)。
公開鍵暗号署名検証部8vは、公開鍵暗号方式により、メモリ1内の公開鍵に基づいて、メモリ1内の署名値zに鍵長kビットのRSA署名検証関数を施し(f(z)=s‖w’)、得られた上位(k+k)ビットの計算結果s及び下位kビットの計算結果w’をメモリ1に書込む(ST44)。
関数演算部7は、メモリ1内の計算結果w’に第2ランダム関数Gを施し、得られた(k+k)ビットの第2ランダム関数値g(=G(w’))をメモリ1に書込む。
演算器5は、メモリ1内の第2ランダム関数値gと計算結果sとの排他的論理和を計算し、得られた(k+k)ビットの計算結果(σi-1,R‖r)をメモリ1に書込む(ST45)。
また、演算器5は、メモリ1内の計算結果(σi-1,R‖r)を上位k2ビットの第3部分データσi-1,R及び下位kビットの乱数データrに分割し、それぞれメモリ1に書込む。
ここで、制御部10vは、ステップST42で読み込んだ署名順番iが3以上であれば(ST46;YES)、ステップST47に進む。
ステップST47では、H’関数演算部7は、メモリ1内の第2部分データσi-1,M、計算結果(σi-1,R‖r)及び文書データxに第1ランダム関数H’を施し、得られたkビットの第1ランダム関数値w(=H’(x‖σi-1,M‖σi-1,R‖r))をメモリ1に書込む。
演算器5は、メモリ1内の計算結果w’と第1ランダム関数値wとの排他的論理和を計算し、得られた第1部分データσi-1,Lをメモリ1に書込む(ST48)。
しかる後、演算器5は、メモリ1内の第1〜第3部分データσi-1,L,σi-1,M,σi-1,Rを連結して第i−1番目の署名σi-1を復元する。
制御部10vは、この第i−1番目の署名σi-1及び文書データxを第i番目の署名σi及び文書データxとしてメモリ1を更新する(ST49)。
制御部10vは、この更新の完了後、i−1をiとして(ST50)、前述したステップST41〜ST49を再実行するように、各部1〜8vを制御する。但し、制御部10vは、再実行の制御の前に、文書データxから署名順番が第i番目の署名者の識別情報IDを削除し、得られた文書データx’を文書データxに置き換える。
このようなステップST41〜ST50のループ処理により、ステップST42で読み込んだ署名順番iが3未満となり(ST46;NO)、i=2となったとする(ST51;YES)。
このとき、前述したステップST47,ST48と同様のステップST52,ST53が実行される。すなわち、H’関数演算部7は、メモリ1内の第2部分データσ1,M、計算結果(σ1,R‖r2)及び文書データxに第1ランダム関数H’を施し、得られたkビットの第1ランダム関数値w(=H’(x‖σ1,M‖σ1,R‖r2))をメモリ1に書込む(ST52)。演算器5は、メモリ1内の計算結果w2’と第1ランダム関数値w2との排他的論理和を計算し、得られた第1部分データσ1,Lをメモリ1に書込む(ST53)。
ここで、制御部10vは、ステップST53により得られた第1部分データσ1,Lが予め設定された値0k1と一致するか否かを検証し、両者が不一致のときには、ステップST55に進んで署名σを棄却する。但し、ここでは両者が一致する場合を述べる。
制御部10vは、両者が一致する場合、前述したステップST49に進む。
次に、このようなステップST49,ST50,ST41〜ST46に進み、ステップST42で読み込んだ署名順番iが3未満となり(ST46;NO)、i=2でなく(ST51;NO)、i=1となったとする。
このとき、制御部10vは、メモリ1内の第3部分データσ0,Rが予め設定した値0k2と一致するか否かを検証し、両者が不一致のときには、ステップST55に進んで署名σを棄却する。但し、ここでは両者が一致する場合を述べる。
このとき、前述したステップST47,ST48と同様のステップST57,ST58が実行される。すなわち、H’関数演算部7は、メモリ1内の第2部分データσ0,M、計算結果(σ0,R‖r1)及び文書データxに第1ランダム関数H1’を施し、得られたkビットの第1ランダム関数値w1(=H1’(x‖σ0,M‖σ0,R‖r1))をメモリ1に書込む(ST57)。演算器5は、メモリ1内の計算結果w1’と第1ランダム関数値w1との排他的論理和を計算し、得られた第1部分データσ0,Lをメモリ1に書込む(ST58)。
ここで、制御部10vは、ステップST58により得られた第1部分データσ0,Lが予め設定された値0k1と一致するか否かを検証し、両者が不一致のときには、ステップST55に進んで署名σを棄却して処理を終了する。一方、両者が一致するときには、制御部10vは、署名σを受理し(ST60)、署名検証処理を終了する。
(乱数ri及びランダム関数H’,Gの役割)
乱数ri、第1及び第2のランダム関数Hi’,Giの役割は、第1実施形態の場合と同様である。
(多重署名方式が安全な理由)
多重署名方式が安全である直観的な理由は、第1実施形態の場合と同様である。
(能動的な攻撃に対する安全性)
能動的な攻撃に対する安全性は、第1実施形態の場合と同様である。
上述したように本実施形態によれば、図2に示すように、第i番目の署名σを生成する際に、第i−1番目の署名σi-1を分割し、kビットの乱数rを連結したときに(k+k)ビットを越える部分(σi-1,L,σi-1,M)を、署名生成関数の入力側にある2項演算の入力から外す。これにより、2項演算の計算結果sのサイズを(k+k)ビットで一定とし、結果的に署名生成関数の入力サイズ(鍵長kビット)を一定にする。従って、RSA問題に代表される落し戸付一方向性関数の逆関数演算の計算困難さに安全性の根拠をおく場合に、署名順番が進んでも鍵のサイズの増加を阻止することができる。
詳しくは、本実施形態は、前回の署名σi-1の全てに第1のランダム関数H’を施した第1の実施形態とは異なり、前回の署名σi-1を3つに分割し、その第2及び第3部分データσi-1,M,σi-1,Rのみを第1のランダム関数の入力とし、第1部分データσi-1,Lを第1のランダム関数H’の出力に排他的論理和として反映させることにより、緊密な安全性を保ちつつ、多重署名のサイズを従来技術よりも小さくでき、通信コストを低減させることができる。
ここで、署名生成関数の入力に反映させる部分σi-1,Lのサイズは、第1のランダム関数H’の出力サイズkより小さくても良い。このときには、第1のランダム関数H’の出力の所定部分に対してσi-1,Lの排他的論理和を計算し、署名検証処理においても、当該部分からσi-1,Lを復元すればよい。
また、署名生成関数は、その入出力サイズが署名順番に依存しないため、通常の署名生成の用途で用いる署名生成関数を用いることができる。
なお、本実施形態は、次のように変形してもよい。
例えば署名生成処理においては、署名初期値σとして、0が2k+k個連結した情報02k1+k2を用いていたが、これに限らず、2k+kビット以上の任意の固定値を用いるように変形してもよい。さらに、kビット以上の値であれば、異なるサイズの固定値を利用するように変形することもできる。但し、kビット以上の固定値を用いる場合には、安全性を保証するために、第2実施形態の署名順番が1番目と2番目の署名に関する署名生成処理及び署名検証処理を、第1実施形態の署名順番が1番目と2番目の署名に関する署名生成処理と署名検証処理に置き換える必要がある。
なお、説明は省略するが、署名生成関数としてRSA関数を用いる場合には、本発明の第一の実施形態で説明したことと同様な変形例で実現可能であることは勿論である。 さらに、ステップST36では、計算結果siとwi’の連結データを署名生成関数に入力する場合を述べたが、これに限らず、計算結果siとwi’から生成される別のデータを署名生成関数に入力するように変形してもよい。例えば、第3のランダム関数G’を用いてsiをsi’とおき、wi’とG’(si)との排他的論理和の計算結果をw”とし、si’とwi”を連結したデータ(si’‖wi”)を署名生成関数に入力する変形例などが考えられる。
また、第1のランダム関数H1’〜HN’と第2のランダム関数G1〜GNのそれぞれについて、各署名者で共通のランダム関数H’,Gを使用してもよく、さらに、第1のランダム関数と第2のランダム関数を互いに同一の関数とし、ランダム関数演算部を1つのみに削減することも可能である。
なお、上記各実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク(フロッピー(登録商標)ディスク、ハードディスクなど)、光ディスク(CD−ROM、DVDなど)、光磁気ディスク(MO)、半導体メモリなどの記憶媒体に格納して頒布することもできる。
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているOS(オペレーティングシステム)や、データベース管理ソフト、ネットワークソフト等のMW(ミドルウェア)等が本実施形態を実現するための各処理の一部を実行しても良い。
さらに、本発明における記憶媒体は、コンピュータと独立した媒体に限らず、LANやインターネット等により伝送されたプログラムをダウンロードして記憶又は一時記憶した記憶媒体も含まれる。
また、記憶媒体は1つに限らず、複数の媒体から本実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
尚、本発明におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、本実施形態における各処理を実行するものであって、パソコン等の1つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
また、本発明におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
なお、本願発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
本発明の第1の実施形態に係る多重署名システムによる署名生成方式を示す模式図である。 本発明の第2の実施形態に係る多重署名システムによる署名生成方式を示す模式図である。 本発明の第1の実施形態に係る多重署名システムの構成を示す模式図である。 同実施形態における署名生成装置の構成を示す模式図である。 同実施形態における署名検証装置の構成を示す模式図である。 同実施形態における署名生成装置の動作を示すフローチャートである。 同実施形態における署名検証装置の動作を示すフローチャートである。 本発明の第2の実施形態における署名生成装置の動作を示すフローチャートである。 同実施形態における署名検証装置の動作を示すフローチャートである。 一般的な多重署名方式及び連結署名方式の概念を示す模式図である。 一般的な多重署名方式の検証用装置の概念を示す模式図である。 一般的な多重署名方式の文書可変性の概念を示す模式図である。 従来の多重署名方法における署名生成方式の一例を示す模式図である。 従来の多重署名方法における署名生成方式の一例を示す模式図である。 本発明の第1の実施形態における変形例を示す模式図である。 同実施形態における他の変形例を示す模式図である。
符号の説明
1…メモリ、2…入出力部、3…乱数生成器、4…乱数メモリ、5…演算器、6…H’関数演算部、7…G関数演算部、8s…公開鍵暗号署名生成部、8v…公開鍵暗号署名検証部、9…秘密鍵メモリ、10s,10v…制御部、Sg〜Sg…署名生成装置、V…署名検証装置。

Claims (33)

  1. 他の多重署名生成装置により生成された第i−1番目の署名σi-1と文書データxとに基づいて、文書データxに対する第i番目の署名σiを生成し且つ入力手段、メモリ、分割手段、乱数生成手段、乱数メモリ、第1のランダム関数演算手段、第2のランダム関数演算手段、2項演算手段、署名値生成手段、連結手段及び出力手段を備えた多重署名生成装置による多重署名方法であって、
    前記入力手段が、署名者の操作により、前記第i−1番目の署名σ i-1 及び文書データxを前記メモリに書き込む工程と、
    前記分割手段が、前記メモリ内の第i−1番目の署名σi-1を2つに分割し、得られたビットの第2部分データσi-1,R及び残りの第1部分データσi-1,L前記メモリに書き込む工程と、
    前記乱数生成手段が、ビットの乱数データrを生成し、この乱数データr を前記乱数メモリに書き込む工程と、
    前記第1のランダム関数演算手段が、前記メモリ内の第1部分データσi-1,L 、前記第2部分データσi-1,R 、前記乱数メモリ内の乱数データr及び前記メモリ内の文書データxに第1ランダム関数H’を施し、得られたビットの第1ランダム関数値w前記メモリに書き込む工程と、
    前記第2のランダム関数演算手段が、前記メモリ内の第1ランダム関数値wに第2ランダム関数Gを施し、得られた(k+k)ビットの第2ランダム関数値g前記メモリに書き込む工程と、
    前記2項演算手段が、前記メモリ内の第2ランダム関数値gと、前記第2部分データσi-1,R及び前記乱数メモリ内の乱数データrとの2項演算を計算し、得られた(k+k)ビットの計算結果s前記メモリに書き込む工程と、
    前記署名値生成手段が、前記メモリ内の計算結果s及び前記第1ランダム関数値wに基づくkビットのデータに署名生成関数を施し、得られたkビットの署名値z前記メモリに書き込む工程と、
    前記連結手段が、前記メモリ内の第1部分データσi-1,Lを前記署名値zに連結し、第i番目の署名σ(=σi-1,L‖z)を生成する工程と、
    前記出力手段が、この第i番目の署名σを出力する工程と、
    を備えたことを特徴とする多重署名方法。
  2. 他の多重署名生成装置により生成された第i−1番目の署名σi-1と文書データxとに基づいて、文書データxに対する第i番目の署名σiを生成し且つ入力手段、メモリ、分割手段、乱数生成手段、乱数メモリ、第1のランダム関数演算手段、第1の2項演算手段、第2のランダム関数演算手段、第2の2項演算手段、署名値生成手段、連結手段及び出力手段を備えた多重署名生成装置による多重署名方法であって、
    前記入力手段が、署名者の操作により、前記第i−1番目の署名σ i-1 及び文書データxを前記メモリに書き込む工程と、
    前記分割手段が、前記メモリ内の第i−1番目の署名σi-1を3つに分割し、得られたビットの第1部分データσi-1,L、kビットの第3部分データσi-1,R及び残りの第2部分データσi-1,M前記メモリに書き込む工程と、
    前記乱数生成手段が、ビットの乱数データrを生成し、この乱数データr を前記乱数メモリに書き込む工程と、
    前記第1のランダム関数演算手段が、前記メモリ内の第2部分データσi-1,M、前記第3部分データσi-1,R、前記乱数メモリ内の乱数データr及び前記メモリ内の文書データxに第1ランダム関数H’を施し、得られたビットの第1ランダム関数値w前記メモリに書き込む工程と、
    前記第1の2項演算手段が、前記メモリ内の第1ランダム関数値w及び前記第1部分データσi-1,Lの2項演算を計算し、得られたビットの計算結果w’を前記メモリに書き込む工程と、
    前記第2のランダム関数演算手段が、前記メモリ内の計算結果w’に第2ランダム関数Gを施し、得られた(k+k)ビットの第2ランダム関数値g前記メモリに書き込む工程と、
    前記第2の2項演算手段が、前記メモリ内の第2ランダム関数値gと、前記第3部分データσi-1,R及び前記乱数メモリ内の乱数データrとの2項演算を計算し、得られた(k+k)ビットの計算結果s前記メモリに書き込む工程と、
    前記署名値生成手段が、前記メモリ内の計算結果s及びw’に基づくkビットのデータに署名生成関数を施し、得られたkビットの署名値z前記メモリに書き込む工程と、
    前記連結手段が、前記第2部分データσi-1,Mを前記署名値zに連結し、第i番目の署名σ(=σi-1,M‖z)を生成する工程と、
    前記出力手段が、この第i番目の署名σを出力する工程と、
    を備えたことを特徴とする多重署名方法。
  3. 請求項1又は請求項2に記載の多重署名生成方法において、
    前記署名値生成手段は、前記署名生成関数として、RSA署名生成関数を用いることを特徴とする多重署名生成方法。
  4. 他の多重署名生成装置により生成された第i−1番目の署名σi-1と文書データxとに基づいて、文書データxに対する第i番目の署名σiを生成する多重署名生成装置であって、
    前記第i−1番目の署名σi-1及び前記文書データxを入力するための入力手段と、
    前記入力された第i−1番目の署名σi-1を2つに分割し、kビットの第2部分データσi-1,R及び残りの第1部分データσi-1,Lを得る分割手段と、
    ビットの乱数データrを生成する乱数生成手段と、
    前記第1部分データσi-1,L 、前記第2部分データσi-1,R 、前記乱数データr及び前記文書データxに第1ランダム関数H’を施し、kビットの第1ランダム関数値wを演算する第1のランダム関数演算手段と、
    前記第1ランダム関数値wに第2ランダム関数Gを施し、(k+k)ビットの第2ランダム関数値gを演算する第2のランダム関数演算手段と、
    前記第2ランダム関数値gと、前記第2部分データσi-1,R及び前記乱数データrとの2項演算を計算し、(k+k)ビットの計算結果sを得る2項演算手段と、
    前記計算結果s及び前記第1ランダム関数値wに基づくkビットのデータに署名生成関数を施し、kビットの署名値zを生成する署名値生成手段と、
    前記第1部分データσi-1,Lを前記署名値zに連結し、第i番目の署名σ(=σi-1,L‖z)を生成する連結手段と、
    この第i番目の署名σ及び前記文書データxを出力する出力手段と、
    を備えたことを特徴とする多重署名生成装置。
  5. 請求項4に記載の多重署名生成装置において、
    前記2項演算手段は、前記2項演算として排他的論理和を演算することを特徴とする多重署名生成装置。
  6. 請求項4に記載の多重署名生成装置において、
    前記入力手段は、i=1のとき、前記他の多重署名生成装置により生成された第i−1番目の署名σi-1として、kビット以上の定数σ0を入力することを特徴とする多重署名生成装置。
  7. 請求項4又は請求項5に記載の多重署名生成装置において、
    前記入力手段に文書データxを入力する前に、第1番目乃至第i−1番目までの署名者の識別情報を含む文書データx’に第i番目の署名者の識別情報IDを連結し、前記入力される文書データxを作成する識別情報連結手段を備えたことを特徴とする多重署名生成装置。
  8. 第i−1番目の署名σi-1を分割して得られるkビットの第2部分データσi-1,R及び残りの第1部分データσi-1,Lと、kビットの乱数データrと、前記第1部分データσi-1,L 、前記第2部分データσi-1,R 、前記乱数データr及び前記文書データxに第1ランダム関数H’を施して得られるkビットの第1ランダム関数値wと、前記第1ランダム関数値wに第2ランダム関数Gを施して得られる(k+k)ビットの第2ランダム関数値gと、前記第2ランダム関数値gと前記第2部分データσi-1,R及び前記乱数データrとの2項演算を計算して得られる(k+k)ビットの計算結果sと、前記計算結果s及び前記第1ランダム関数値wに基づくkビットのデータに署名生成関数を施して得られるkビットの署名値zとから作成され、前記第1部分データσi-1,Lを前記署名値zに連結して生成される第i番目の署名σ(=σi-1,L‖z)及び文書データxが入力されたとき、この多重した署名σの正当性を検証する多重署名検証装置であって、
    前記第i番目の署名σi及び前記文書データxが記憶される記憶手段と、
    前記第i番目の署名σi及び前記文書データxを前記記憶手段に入力するための入力手段と、
    前記記憶手段内の第i番目の署名σiを2つに分割し、kビットの署名値z及び残りの第1部分データσi-1,Lを得る第1分割手段と、
    前記署名値zに署名検証関数を施し、(k+k)ビットの計算結果s及びkビットの第1ランダム関数値wを演算する検証関数演算手段と、
    前記第1ランダム関数値wに第2ランダム関数Gを施し、(k+k)ビットの第2ランダム関数値gを演算する第2のランダム関数演算手段と、
    前記第2ランダム関数値gと前記計算結果sとの2項演算を計算し、(k+k)ビットの2項演算結果を得る2項演算手段と、
    前記第1部分データσi-1,L、前記2項演算結果及び前記文書データxに第1ランダム関数H’を施し、kビットの第1ランダム関数値w’を演算する第1のランダム関数演算手段と、
    前記検証関数演算手段により得られた第1ランダム関数値wと前記第1のランダム関数演算手段により得られた第1ランダム関数値w’とを互いに検証し、両者が一致したとき、第i番目の署名を正当であると判定する署名検証手段と、
    前記第i番目の署名が正当のとき、前記2項演算結果をkビットの第2部分データσi-1,R及びkビットの乱数データrに分割する第2分割手段と、
    前記第1部分データσi-1,L及び第2部分データσi-1,Rを連結して第i−1番目の署名σi-1を復元する署名復元手段と、
    前記第i−1番目の署名σi-1及び文書データxを前記第i番目の署名σi及び前記文書データxとして前記記憶手段を更新する更新手段と、
    前記更新手段による更新が完了すると、前記第1分割手段、前記検証関数演算手段、前記第2のランダム関数演算手段、前記2項演算手段、前記第1のランダム関数演算手段、前記署名検証手段、前記第2分割手段、前記署名復元手段及び前記更新手段を再実行するように制御する制御手段と、
    を備えたことを特徴とする多重署名検証装置。
  9. 請求項8に記載の多重署名検証装置において、
    前記制御手段は、前記更新手段により更新された署名σi-1が署名σ0の場合、前記再実行の制御に代えて、この署名σ0が予め設定された署名初期値σ0と一致するか否かを検証し、両者が一致するときには、前記多重した署名σを受理する署名受理手段を備えたことを特徴とする多重署名検証装置。
  10. 請求項8に記載の多重署名検証装置において、
    前記制御手段は、前記再実行の制御の前に、前記文書データxから署名順番が第i番目の署名者の識別情報IDを削除し、得られた文書データx’を前記文書データxに置き換える識別情報削除手段を備えたことを特徴とする多重署名検証装置。
  11. 他の多重署名生成装置により生成された第i−1番目の署名σi-1と文書データxとに基づいて、文書データxに対する第i番目の署名σiを生成する多重署名生成装置であって、
    前記第i−1番目の署名σi-1及び前記文書データxを入力するための入力手段と、
    前記第i−1番目の署名σi-1を3つに分割し、kビットの第1部分データσi-1,L、kビットの第3部分データσi-1,R及び残りの第2部分データσi-1,Mを得る分割手段と、
    ビットの乱数データrを生成する乱数生成手段と、
    前記第2部分データσi-1,M、前記第3部分データσi-1,R、前記乱数データr及び前記文書データxに第1ランダム関数H’を施し、kビットの第1ランダム関数値wを演算する第1のランダム関数演算手段と、
    前記第1ランダム関数値w及び前記第1部分データσi-1,Lの2項演算を計算し、kビットの計算結果w’を得る第1の2項演算手段と、
    前記計算結果w’に第2ランダム関数Gを施し、(k+k)ビットの第2ランダム関数値gを演算する第2のランダム関数演算手段と、
    前記第2ランダム関数値gと、前記第3部分データσi-1,R及び前記乱数データrとの2項演算を計算し、(k+k)ビットの計算結果sを得る第2の2項演算手段と、
    前記計算結果s及びw’に基づくkビットのデータに署名生成関数を施し、kビットの署名値zを生成する署名値生成手段と、
    前記第2部分データσi-1,Mを前記署名値zに連結し、第i番目の署名σ(=σi-1,M‖z)を生成する連結手段と、
    この第i番目の署名σを出力する出力手段と、
    を備えたことを特徴とする多重署名生成装置。
  12. 請求項11に記載の多重署名生成装置において、
    前記第1及び第2の2項演算手段は、前記2項演算として排他的論理和を演算することを特徴とする多重署名生成装置。
  13. 請求項11に記載の多重署名生成装置において、
    前記入力手段は、i=1のとき、前記他の多重署名生成装置により生成された第i−1番目の署名σi-1として、(2k+k)ビット以上の定数σ0を入力することを特徴とする多重署名生成装置。
  14. 請求項11又は請求項12に記載の多重署名生成装置において、
    前記入力手段に文書データxを入力する前に、第1番目乃至第i−1番目までの署名者の識別情報を含む文書データx’に第i番目の署名者の識別情報IDを連結し、前記入力される文書データxを作成する識別情報連結手段を備えたことを特徴とする多重署名生成装置。
  15. 第i−1番目の署名σi-1を分割して得られるkビットの第1部分データσi-1,L、kビットの第3部分データσi-1,R及び残りの第2部分データσi-1,Mと、kビットの乱数データrと、前記第2部分データσi-1,M、前記第3部分データσi-1,R 、前記乱数データr及び前記文書データxに第1ランダム関数H’を施して得られるkビットの第1ランダム関数値wと、前記第1ランダム関数値wと前記第1部分データσi-1,Lとの2項演算を計算して得られるkビットの計算結果w’と、前記計算結果w’に第2ランダム関数Gを施して得られる(k+k)ビットの第2ランダム関数値gと、前記第2ランダム関数値gと前記第3部分データσi-1,R及び前記乱数データrとの2項演算を計算して得られる(k+k)ビットの計算結果sと、前記計算結果s及びw’に基づくkビットのデータに署名生成関数を施して得られるkビットの署名値zとから作成され、前記第2部分データσi-1,Mを前記署名値zに連結して生成される第i番目の署名σ(=σi-1,M‖z)及び文書データxが入力されたとき、この多重した署名σの正当性を検証する多重署名検証装置であって、
    前記第i番目の署名σi及び前記文書データxが記憶される記憶手段と、
    前記第i番目の署名σi及び前記文書データxを前記記憶手段に入力するための入力手段と、
    前記記憶手段内の第i番目の署名σiを2つに分割し、kビットの署名値z及び}残りの第2部分データσi-1,Mを得る第1分割手段と、
    前記署名値zに署名検証関数を施し、(k+k)ビットの計算結果s及びkビットの計算結果w’を演算する検証関数演算手段と、
    前記計算結果w’に第2ランダム関数Gを施し、(k+k)ビットの第2ランダム関数値gを演算する第2のランダム関数演算手段と、
    前記第2ランダム関数値gと前記計算結果sとの2項演算を計算し、(k+k)ビットの2項演算結果を得る第1の2項演算手段と、
    前記2項演算結果をkビットの第3部分データσi-1,R及びkビットの乱数データrに分割する第2分割手段と、
    前記第2部分データσi-1,M、前記2項演算結果及び前記文書データxに第1ランダム関数H’を施し、kビットの第1ランダム関数値wを演算する第1のランダム関数演算手段と、
    前記検証関数演算手段により得られた計算結果w’と前記第1のランダム関数演算手段により得られた第1ランダム関数値wとの2項演算を計算し、kビットの第1部分データσi-1,Lを得る第2の2項演算手段と、
    前記第1部分データσi-1,L、前記第2部分データσi-1,M及び前記第3部分データσi-1,Rを連結して第i−1番目の署名σi-1を復元する署名復元手段と、
    前記第i−1番目の署名σi-1及び文書データxを前記第i番目の署名σi及び前記文書データxとして前記記憶手段を更新する更新手段と、
    前記更新手段による更新が完了すると、前記第1分割手段、前記検証関数演算手段、前記第2のランダム関数演算手段、前記第1の2項演算手段、前記第2分割手段、前記第1のランダム関数演算手段、前記第2の2項演算手段、前記署名復元手段及び前記更新手段を再実行するように制御する制御手段と、
    前記制御手段により署名順番i=2で前記第2の2項演算手段を再実行したとき、当該第2の2項演算手段により得られた第1部分データσ1,Lが予め設定された値と一致するか否かを検証し、両者が不一致のときには、前記多重した署名σを棄却する署名棄却手段と、
    前記制御手段により署名順番i=1で前記第2の2項演算手段を再実行したとき、当該第2の2項演算手段により得られた第1部分データσ0,Lが予め設定された部分初期値と一致するか否かを検証し、両者が一致するときには、前記多重した署名σを受理する署名受理手段と、
    を備えたことを特徴とする多重署名検証装置。
  16. 請求項15に記載の多重署名検証装置において、
    前記制御手段は、前記再実行の制御の前に、前記文書データxから署名順番が第i番目の署名者の識別情報IDを削除し、得られた文書データx’を前記文書データxに置き換える識別情報削除手段を備えたことを特徴とする多重署名検証装置。
  17. 他の多重署名生成装置により生成された第i−1番目の署名σi-1と文書データxとに基づいて、文書データxに対する第i番目の署名σiを生成する多重署名生成装置のコンピュータに用いられるプログラムであって、
    前記コンピュータを、
    前記第i−1番目の署名σi-1及び前記文書データxをメモリに入力するための入力手段、
    前記メモリ内の第i−1番目の署名σi-1を2つに分割し、kビットの第2部分データσi-1,R及び残りの第1部分データσi-1,Lを得る分割手段、
    ビットの乱数データrを生成する乱数生成手段、
    前記第1部分データσi-1,L 、前記第2部分データσi-1,R 、前記乱数データr及び前記文書データxに第1ランダム関数H’を施し、kビットの第1ランダム関数値wを演算する第1のランダム関数演算手段、
    前記第1ランダム関数値wに第2ランダム関数Gを施し、(k+k)ビットの第2ランダム関数値gを演算する第2のランダム関数演算手段、
    前記第2ランダム関数値gと、前記第2部分データσi-1,R及び前記乱数データrとの2項演算を計算し、(k+k)ビットの計算結果sを得る2項演算手段、
    前記計算結果s及び前記第1ランダム関数値wに基づくkビットのデータに署名生成関数を施し、kビットの署名値zを生成する署名値生成手段、
    前記第1部分データσi-1,Lを前記署名値zに連結し、第i番目の署名σ(=σi-1,L‖z)を生成する連結手段、
    この第i番目の署名σ及び前記文書データxを出力する出力手段、
    として機能させるためのプログラム。
  18. 請求項17に記載のプログラムにおいて、
    前記2項演算手段としては、2項演算として排他的論理和を演算する機能を実現させることを特徴とするプログラム。
  19. 請求項17に記載のプログラムにおいて、
    前記入力手段としては、i=1のとき、前記他の多重署名生成装置により生成された第i−1番目の署名σi-1として、kビット以上の定数σ0を入力する機能を実現させることを特徴とするプログラム。
  20. 請求項17又は請求項18に記載のプログラムにおいて、
    前記コンピュータを、
    前記入力手段に文書データxを入力する前に、第1番目乃至第i−1番目までの署名者の識別情報を含む文書データx’に第i番目の署名者の識別情報IDを連結し、前記入力される文書データxを作成する識別情報連結手段、
    として機能させるためのプログラム。
  21. 第i−1番目の署名σi-1を分割して得られるkビットの第2部分データσi-1,R及び残りの第1部分データσi-1,Lと、kビットの乱数データrと、前記第1部分データσi-1,L 、前記第2部分データσi-1,R 、前記乱数データr及び前記文書データxに第1ランダム関数H’を施して得られるkビットの第1ランダム関数値wと、前記第1ランダム関数値wに第2ランダム関数Gを施して得られる(k+k)ビットの第2ランダム関数値gと、前記第2ランダム関数値gと前記第2部分データσi-1,R及び前記乱数データrとの2項演算を計算して得られる(k+k)ビットの計算結果sと、前記計算結果s及び前記第1ランダム関数値wに基づくkビットのデータに署名生成関数を施して得られるkビットの署名値zとから作成され、前記第1部分データσi-1,Lを前記署名値zに連結して生成される第i番目の署名σ(=σi-1,L‖z)及び文書データxが入力されたとき、この多重した署名σの正当性を検証する多重署名検証装置のコンピュータに用いられるプログラムであって、
    前記コンピュータを、
    前記第i番目の署名σi及び前記文書データxをメモリに入力するための入力手段、
    前記メモリ内の第i番目の署名σiを2つに分割し、kビットの署名値z及び残りの第1部分データσi-1,Lを得る第1分割手段、
    前記署名値zに鍵長kビットの署名検証関数を施し、(k+k)ビットの計算結果s及びkビットの第1ランダム関数値wを演算する検証関数演算手段、
    前記第1ランダム関数値wに第2ランダム関数Gを施し、(k+k)ビットの第2ランダム関数値gを演算する第2のランダム関数演算手段、
    前記第2ランダム関数値gと前記計算結果sとの2項演算を計算し、(k+k)ビットの2項演算結果を得る2項演算手段、
    前記第1部分データσi-1,L、前記2項演算結果及び前記文書データxに第1ランダム関数H’を施し、kビットの第1ランダム関数値w’を演算する第1のランダム関数演算手段、
    前記検証関数演算手段により得られた第1ランダム関数値wと前記第1のランダム関数演算手段により得られた第1ランダム関数値w’とを互いに検証し、両者が一致したとき、第i番目の署名を正当であると判定する署名検証手段、
    前記第i番目の署名が正当のとき、前記2項演算結果をkビットの第2部分データσi-1,R及びkビットの乱数データrに分割する第2分割手段、
    前記第1部分データσi-1,L及び第2部分データσi-1,Rを連結して第i−1番目の署名σi-1を復元する署名復元手段、
    前記第i−1番目の署名σi-1及び文書データxを前記第i番目の署名σi及び前記文書データxとして前記メモリを更新する更新手段、
    前記更新手段による更新が完了すると、前記第1分割手段、前記検証関数演算手段、前記第2のランダム関数演算手段、前記2項演算手段、前記第1のランダム関数演算手段、前記署名検証手段、前記第2分割手段、前記署名復元手段及び前記更新手段を再実行するように制御する制御手段、
    として機能させるためのプログラム。
  22. 請求項21に記載のプログラムにおいて、
    前記制御手段は、前記更新手段により更新された署名σi-1が署名σ0の場合、前記再実行の制御に代えて、この署名σ0が予め設定された署名初期値σ0と一致するか否かを検証し、両者が一致するときには、前記多重した署名σを受理する署名受理手段を含むことを特徴とするプログラム。
  23. 請求項21に記載のプログラムにおいて、
    前記制御手段は、前記再実行の制御の前に、前記文書データxから署名順番が第i番目の署名者の識別情報IDを削除し、得られた文書データx’を前記文書データxに置き換える識別情報削除手段を含むことを特徴とするプログラム。
  24. 他の多重署名生成装置により生成された第i−1番目の署名σi-1と文書データxとに基づいて、文書データxに対する第i番目の署名σiを生成する多重署名生成装置のコンピュータに用いられるプログラムであって、
    前記コンピュータを、
    前記第i−1番目の署名σi-1及び前記文書データxをメモリに入力するための入力手段、
    前記メモリ内の第i−1番目の署名σi-1を3つに分割し、kビットの第1部分データσi-1,L、kビットの第3部分データσi-1,R及び残りの第2部分データσi-1,Mを得る分割手段、
    ビットの乱数データrを生成する乱数生成手段、
    前記第2部分データσi-1,M、前記第3部分データσi-1,R、前記乱数データr及び前記文書データxに第1ランダム関数H’を施し、kビットの第1ランダム関数値wを演算する第1のランダム関数演算手段、
    前記第1ランダム関数値w及び前記第1部分データσi-1,Lの2項演算を計算し、kビットの計算結果w’を得る第1の2項演算手段、
    前記計算結果w’に第2ランダム関数Gを施し、(k+k)ビットの第2ランダム関数値gを演算する第2のランダム関数演算手段、
    前記第2ランダム関数値gと、前記第3部分データσi-1,R及び前記乱数データrとの2項演算を計算し、(k+k)ビットの計算結果sを得る第2の2項演算手段、
    前記計算結果s及びw’に基づくkビットのデータに署名生成関数を施し、kビットの署名値zを生成する署名値生成手段、
    前記第2部分データσi-1,Mを前記署名値zに連結し、ビットの第i番目の署名σ(=σi-1,M‖z)を生成する連結手段、
    この第i番目の署名σを出力する出力手段、
    として機能させるためのプログラム。
  25. 請求項24に記載のプログラムにおいて、
    前記第1及び第2の2項演算手段としては、前記2項演算として排他的論理和を演算する機能を実現させることを特徴とするプログラム。
  26. 請求項24に記載のプログラムにおいて、
    前記入力手段としては、i=1のとき、前記他の多重署名生成装置により生成された第i−1番目の署名σi-1として、(2k+k)ビット以上の定数σ0を入力する機能を実現させることを特徴とするプログラム。
  27. 請求項24又は請求項25に記載のプログラムにおいて、
    前記コンピュータを、
    前記入力手段に文書データxを入力する前に、第1番目乃至第i−1番目までの署名者の識別情報を含む文書データx’に第i番目の署名者の識別情報IDを連結し、前記入力される文書データxを作成する識別情報連結手段、
    として機能させるためのプログラム。
  28. 第i−1番目の署名σi-1を分割して得られるkビットの第1部分データσi-1,L、kビットの第3部分データσi-1,R及び残りの第2部分データσi-1,Mと、kビットの乱数データrと、前記第2部分データσi-1,M、前記第3部分データσi-1,R 、前記乱数データr及び前記文書データxに第1ランダム関数H’を施して得られるkビットの第1ランダム関数値wと、前記第1ランダム関数値wと前記第1部分データσi-1,Lとの2項演算を計算して得られるkビットの計算結果w’と、前記計算結果w’に第2ランダム関数Gを施して得られる(k+k)ビットの第2ランダム関数値gと、前記第2ランダム関数値gと前記第3部分データσi-1,R及び前記乱数データrとの2項演算を計算して得られる(k+k)ビットの計算結果sと、前記計算結果s及びw’に基づくkビットのデータに署名生成関数を施して得られるkビットの署名値zとから作成され、前記第2部分データσi-1,Mを前記署名値zに連結して生成される第i番目の署名σ(=σi-1,M‖z)及び文書データxが入力されたとき、この多重した署名σの正当性を検証する多重署名検証装置のコンピュータに用いられるプログラムであって、
    前記コンピュータを、
    前記第i番目の署名σi及び前記文書データxをメモリに入力するための入力手段、
    前記メモリ内の第i番目の署名σiを2つに分割し、kビットの署名値z及び}残りの第2部分データσi-1,Mを得る第1分割手段、
    前記署名値zに署名検証関数を施し、(k+k)ビットの計算結果s及びkビットの計算結果w’を演算する検証関数演算手段、
    前記計算結果w’に第2ランダム関数Gを施し、(k+k)ビットの第2ランダム関数値gを演算する第2のランダム関数演算手段、
    前記第2ランダム関数値gと前記計算結果sとの2項演算を計算し、(k+k)ビットの2項演算結果を得る第1の2項演算手段、
    前記2項演算結果をkビットの第3部分データσi-1,R及びkビットの乱数データrに分割する第2分割手段、
    前記第2部分データσi-1,M、前記2項演算結果及び前記文書データxに第1ランダム関数H’を施し、kビットの第1ランダム関数値wを演算する第1のランダム関数演算手段、
    前記検証関数演算手段により得られた計算結果w’と前記第1のランダム関数演算手段により得られた第1ランダム関数値wとの2項演算を計算し、kビットの第1部分データσi-1,Lを得る第2の2項演算手段、
    前記第1部分データσi-1,L、前記第2部分データσi-1,M及び前記第3部分データσi-1,Rを連結して第i−1番目の署名σi-1を復元する署名復元手段、
    前記第i−1番目の署名σi-1及び文書データxを前記第i番目の署名σi及び前記文書データxとして前記記憶手段を更新する更新手段、
    前記更新手段による更新が完了すると、前記第1分割手段、前記検証関数演算手段、前記第2のランダム関数演算手段、前記第1の2項演算手段、前記第2分割手段、前記第1のランダム関数演算手段、前記第2の2項演算手段、前記署名復元手段及び前記更新手段を再実行するように制御する制御手段、
    前記制御手段により署名順番i=2で前記第2の2項演算手段を再実行したとき、当該第2の2項演算手段により得られた第1部分データσ1,Lが予め設定された値と一致するか否かを検証し、両者が不一致のときには、前記多重した署名σを棄却する署名棄却手段、
    前記制御手段により署名順番i=1で前記第2の2項演算手段を再実行したとき、当該第2の2項演算手段により得られた第1部分データσ0,Lが予め設定された部分初期値と一致するか否かを検証し、両者が一致するときには、前記多重した署名σを受理する署名受理手段、
    として機能させるためのプログラム。
  29. 請求項28に記載のプログラムにおいて、
    前記制御手段は、前記再実行の制御の前に、前記文書データxから署名順番が第i番目の署名者の識別情報IDを削除し、得られた文書データx’を前記文書データxに置き換える識別情報削除手段を含むことを特徴とするプログラム。
  30. それぞれ他の多重署名生成装置により生成された第i−1番目の署名σi-1に基づいて、文書データxに対する第i番目の署名σiを生成する機能を有するN台(N=1,2,…,i,…,N−1,N)の多重署名生成装置と、1台の多重署名検証装置とを備えた多重署名システムであって、
    前記各多重署名生成装置は、
    前記第i−1番目の署名σi-1及び前記文書データxを入力するための入力手段と、
    前記入力された第i−1番目の署名σi-1を2つに分割し、kビットの第2部分データσi-1,R及び残りの第1部分データσi-1,Lを得る分割手段と、
    ビットの乱数データrを生成する乱数生成手段と、
    前記第1部分データσi-1,L 、前記第2部分データσi-1,R 、前記乱数データr及び前記文書データxに第1ランダム関数H’を施し、kビットの第1ランダム関数値wを演算する第1のランダム関数演算手段と、
    前記第1ランダム関数値wに第2ランダム関数Gを施し、(k+k)ビットの第2ランダム関数値gを演算する第2のランダム関数演算手段と、
    前記第2ランダム関数値gと、前記第2部分データσi-1,R及び前記乱数データrとの2項演算を計算し、(k+k)ビットの計算結果sを得る2項演算手段と、
    前記計算結果s及び前記第1ランダム関数値wに基づくkビットのデータに署名生成関数を施し、kビットの署名値zを生成する署名値生成手段と、
    前記第1部分データσi-1,Lを前記署名値zに連結し、第i番目の署名σ(=σi-1,L‖z)を生成する連結手段と、
    この第i番目の署名σ及び前記文書データxを出力する出力手段と、
    を備えたことを特徴とする多重署名システム。
  31. 請求項30に記載の多重署名システムにおいて、
    前記多重署名検証装置は、
    前記第i番目の署名σi及び前記文書データxが記憶される記憶手段と、
    前記第i番目の署名σi及び前記文書データxを前記記憶手段に入力するための入力手段と、
    前記記憶手段内の第i番目の署名σiを2つに分割し、kビットの署名値z及び残りの第1部分データσi-1,Lを得る第1分割手段と、
    前記署名値zに署名検証関数を施し、(k+k)ビットの計算結果s及びkビットの第1ランダム関数値wを演算する検証関数演算手段と、
    前記第1ランダム関数値wに第2ランダム関数Gを施し、(k+k)ビットの第2ランダム関数値gを演算する第2のランダム関数演算手段と、
    前記第2ランダム関数値gと前記計算結果sとの2項演算を計算し、(k+k)ビットの2項演算結果を得る2項演算手段と、
    前記第1部分データσi-1,L、前記2項演算結果及び前記文書データxに第1ランダム関数H’を施し、kビットの第1ランダム関数値w’を演算する第1のランダム関数演算手段と、
    前記検証関数演算手段により得られた第1ランダム関数値wと前記第1のランダム関数演算手段により得られた第1ランダム関数値w’とを互いに検証し、両者が一致したとき、第i番目の署名を正当であると判定する署名検証手段と、
    前記第i番目の署名が正当のとき、前記2項演算結果をkビットの第2部分データσi-1,R及びkビットの乱数データrに分割する第2分割手段と、
    前記第1部分データσi-1,L及び第2部分データσi-1,Rを連結して第i−1番目の署名σi-1を復元する署名復元手段と、
    前記第i−1番目の署名σi-1及び文書データxを前記第i番目の署名σi及び前記文書データxとして前記記憶手段を更新する更新手段と、
    前記更新手段による更新が完了すると、前記第1分割手段、前記検証関数演算手段、前記第2のランダム関数演算手段、前記2項演算手段、前記第1のランダム関数演算手段、前記署名検証手段、前記第2分割手段、前記署名復元手段及び前記更新手段を再実行するように制御する制御手段と、
    を備えたことを特徴とする多重署名システム。
  32. それぞれ他の多重署名生成装置により生成された第i−1番目の署名σi-1と文書データxとに基づいて、文書データxに対する第i番目の署名σiを生成する機能を有するN台(N=1,2,…,i,…,N−1,N)の多重署名生成装置と、1台の多重署名検証装置とを備えた多重署名システムであって、
    前記各多重署名生成装置は、
    前記第i−1番目の署名σi-1及び前記文書データxを入力するための入力手段と、
    前記第i−1番目の署名σi-1を3つに分割し、kビットの第1部分データσi-1,L、kビットの第3部分データσi-1,R及び残りの第2部分データσi-1,Mを得る分割手段と、
    ビットの乱数データrを生成する乱数生成手段と、
    前記第2部分データσi-1,M、前記第3部分データσi-1,R、前記乱数データr及び前記文書データxに第1ランダム関数H’を施し、kビットの第1ランダム関数値wを演算する第1のランダム関数演算手段と、
    前記第1ランダム関数値w及び前記第1部分データσi-1,Lの2項演算を計算し、kビットの計算結果w’を得る第1の2項演算手段と、
    前記計算結果w’に第2ランダム関数Gを施し、(k+k)ビットの第2ランダム関数値gを演算する第2のランダム関数演算手段と、
    前記第2ランダム関数値gと、前記第3部分データσi-1,R及び前記乱数データrとの2項演算を計算し、(k+k)ビットの計算結果sを得る第2の2項演算手段と、
    前記計算結果s及びw’に基づくkビットのデータに署名生成関数を施し、kビットの署名値zを生成する署名値生成手段と、
    前記第2部分データσi-1,Mを前記署名値zに連結し、第i番目の署名σ(=σi-1,M‖z)を生成する連結手段と、
    この第i番目の署名σを出力する出力手段と、
    を備えたことを特徴とする多重署名システム。
  33. 請求項32に記載の多重署名システムにおいて、
    前記多重署名検証装置は、
    前記第i番目の署名σi及び前記文書データxが記憶される記憶手段と、
    前記第i番目の署名σi及び前記文書データxを前記記憶手段に入力するための入力手段と、
    前記記憶手段内の第i番目の署名σiを2つに分割し、kビットの署名値z及び}残りの第2部分データσi-1,Mを得る第1分割手段と、
    前記署名値zに署名検証関数を施し、(k+k)ビットの計算結果s及びkビットの計算結果w’を演算する検証関数演算手段と、
    前記計算結果w’に第2ランダム関数Gを施し、(k+k)ビットの第2ランダム関数値gを演算する第2のランダム関数演算手段と、
    前記第2ランダム関数値gと前記計算結果sとの2項演算を計算し、(k+k)ビットの2項演算結果を得る第1の2項演算手段と、
    前記2項演算結果をkビットの第3部分データσi-1,R及びkビットの乱数データrに分割する第2分割手段と、
    前記第2部分データσi-1,M、前記2項演算結果及び前記文書データxに第1ランダム関数H’を施し、kビットの第1ランダム関数値wを演算する第1のランダム関数演算手段と、
    前記検証関数演算手段により得られた計算結果w’と前記第1のランダム関数演算手段により得られた第1ランダム関数値wとの2項演算を計算し、kビットの第1部分データσi-1,Lを得る第2の2項演算手段と、
    前記第1部分データσi-1,L、前記第2部分データσi-1,M及び前記第3部分データσi-1,Rを連結して第i−1番目の署名σi-1を復元する署名復元手段と、
    前記第i−1番目の署名σi-1及び文書データxを前記第i番目の署名σi及び前記文書データxとして前記記憶手段を更新する更新手段と、
    前記更新手段による更新が完了すると、前記第1分割手段、前記検証関数演算手段、前記第2のランダム関数演算手段、前記第1の2項演算手段、前記第2分割手段、前記第1のランダム関数演算手段、前記第2の2項演算手段、前記署名復元手段及び前記更新手段を再実行するように制御する制御手段と、
    前記制御手段により署名順番i=2で前記第2の2項演算手段を再実行したとき、当該第2の2項演算手段により得られた第1部分データσ1,Lが予め設定された値と一致するか否かを検証し、両者が不一致のときには、前記多重した署名σを棄却する署名棄却手段と、
    前記制御手段により署名順番i=1で前記第2の2項演算手段を再実行したとき、当該第2の2項演算手段により得られた第1部分データσ0,Lが予め設定された部分初期値と一致するか否かを検証し、両者が一致するときには、前記多重した署名σを受理する署名受理手段と、
    を備えたことを特徴とする多重署名システム。
JP2004016109A 2004-01-23 2004-01-23 多重署名方法、装置、プログラム及びシステム Expired - Fee Related JP4034743B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004016109A JP4034743B2 (ja) 2004-01-23 2004-01-23 多重署名方法、装置、プログラム及びシステム
US11/037,089 US7496759B2 (en) 2004-01-23 2005-01-19 Multisignature method, apparatus, program, and system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004016109A JP4034743B2 (ja) 2004-01-23 2004-01-23 多重署名方法、装置、プログラム及びシステム

Publications (2)

Publication Number Publication Date
JP2005210512A JP2005210512A (ja) 2005-08-04
JP4034743B2 true JP4034743B2 (ja) 2008-01-16

Family

ID=34901364

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004016109A Expired - Fee Related JP4034743B2 (ja) 2004-01-23 2004-01-23 多重署名方法、装置、プログラム及びシステム

Country Status (2)

Country Link
US (1) US7496759B2 (ja)
JP (1) JP4034743B2 (ja)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1717896B (zh) * 2003-03-04 2010-06-30 国际商业机器公司 用于对电子文档进行数字签名的方法、计算机设备和***
JP4390570B2 (ja) * 2004-01-21 2009-12-24 株式会社エヌ・ティ・ティ・ドコモ 多段署名検証システム、電子署名付与装置、データ追加装置及び電子署名検証装置
JP2007232754A (ja) * 2006-02-27 2007-09-13 Toshiba Corp ハッシュ値生成装置及びハッシュ値生成方法
US20100082974A1 (en) * 2008-09-26 2010-04-01 Microsoft Corporation Parallel document processing
US9026571B2 (en) * 2008-10-27 2015-05-05 Microsoft Technology Licensing, Llc Random number generation failure detection and entropy estimation
JP5337582B2 (ja) * 2009-06-01 2013-11-06 株式会社日立製作所 正当性が保証されたidの生成方法及び正当性保証rfidタグ
US8752142B2 (en) 2009-07-17 2014-06-10 American Express Travel Related Services Company, Inc. Systems, methods, and computer program products for adapting the security measures of a communication network based on feedback
US8621636B2 (en) 2009-12-17 2013-12-31 American Express Travel Related Services Company, Inc. Systems, methods, and computer program products for collecting and reporting sensor data in a communication network
US9756076B2 (en) 2009-12-17 2017-09-05 American Express Travel Related Services Company, Inc. Dynamically reacting policies and protections for securing mobile financial transactions
US8650129B2 (en) * 2010-01-20 2014-02-11 American Express Travel Related Services Company, Inc. Dynamically reacting policies and protections for securing mobile financial transaction data in transit
US9654829B1 (en) 2010-03-04 2017-05-16 The Directv Group, Inc. Method and system for retrieving data from multiple sources
US8806198B1 (en) * 2010-03-04 2014-08-12 The Directv Group, Inc. Method and system for authenticating a request
US8924296B2 (en) 2010-06-22 2014-12-30 American Express Travel Related Services Company, Inc. Dynamic pairing system for securing a trusted communication channel
US8850539B2 (en) 2010-06-22 2014-09-30 American Express Travel Related Services Company, Inc. Adaptive policies and protections for securing financial transaction data at rest
US10360625B2 (en) 2010-06-22 2019-07-23 American Express Travel Related Services Company, Inc. Dynamically adaptive policy management for securing mobile financial transactions
US20120260096A1 (en) * 2011-04-08 2012-10-11 Helen Balinsky Method and system for monitoring a secure document
ES2400894B1 (es) 2011-05-13 2014-03-11 Telefónica, S.A. Procedimiento para una firma digital múltiple
CN105095726B (zh) * 2014-05-08 2018-05-11 阿里巴巴集团控股有限公司 生成验证码的方法及装置
CN104298933B (zh) * 2014-10-17 2018-02-06 浪潮(北京)电子信息产业有限公司 一种配置信息安全处理方法及***
US10313131B2 (en) 2017-01-26 2019-06-04 Infineon Technologies Ag Secured daisy chain communication
CN106888096B (zh) * 2017-03-23 2019-10-08 西安电子科技大学 基于混淆技术的安全广播多重签名方法
DE102017209014A1 (de) * 2017-05-30 2018-12-06 Robert Bosch Gmbh Verfahren und Vorrichtung zum Anfügen von Transaktionen an eine Blockkette
ES2716308A1 (es) * 2017-12-11 2019-06-11 Bano Pablo Diaz Método para autenticar una firma dinámica con el documento firmado mediante una firma electrónica.
US11138598B2 (en) * 2018-12-17 2021-10-05 Mastercard International Incorporated Method and system for consent to time-bound queries in a blockchain
GB2584154A (en) * 2019-05-24 2020-11-25 Nchain Holdings Ltd Knowledge proof
US11601284B2 (en) * 2019-06-14 2023-03-07 Planetway Corporation Digital signature system based on a cloud of dedicated local devices
WO2021095103A1 (ja) * 2019-11-11 2021-05-20 日本電信電話株式会社 電子透かしシステム、電子透かし方法及びプログラム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6266771B1 (en) 1997-02-10 2001-07-24 The Regents Of The University Of California Probabilistic signature scheme

Also Published As

Publication number Publication date
US20050201561A1 (en) 2005-09-15
JP2005210512A (ja) 2005-08-04
US7496759B2 (en) 2009-02-24

Similar Documents

Publication Publication Date Title
JP4034743B2 (ja) 多重署名方法、装置、プログラム及びシステム
JP4477678B2 (ja) 電子署名方式、電子署名プログラムおよび電子署名装置
JP3998640B2 (ja) 暗号化及び署名方法、装置及びプログラム
Song Practical forward secure group signature schemes
JP4830860B2 (ja) 署名装置、検証装置、証明装置、暗号化装置、及び復号化装置
Camenisch Better privacy for trusted computing platforms
US9882890B2 (en) Reissue of cryptographic credentials
US20230224147A1 (en) Generating shared private keys
CN115529141B (zh) 一种对数签名大小的可追踪环签名生成方法及***
CN112380584A (zh) 区块链数据更新方法、装置、电子设备和存储介质
EP2061178A1 (en) Electronic signature system and electronic signature verifying method
JP5029358B2 (ja) 鍵発行方法、グループ署名システム
CN112989436B (zh) 一种基于区块链平台的多重签名方法
El Bansarkhani et al. Pqchain: Strategic design decisions for distributed ledger technologies against future threats
CN111404685B (zh) 一种属性基签名方法及***
JP2000250408A (ja) ファイル認証システム、署名システム及び署名方法、認証システム及び認証方法、及び記録媒体
JP2009225356A (ja) デジタル署名システム、装置及びプログラム
CN110278073B (zh) 一种群组数字签名、验证方法及其设备和装置
JP4848957B2 (ja) 署名および検証方法ならびに署名および検証装置
Le et al. Flexible signatures: Making authentication suitable for real-time environments
Bringer et al. Efficient zero-knowledge identification schemes which respect privacy
JP2001166687A (ja) グループ署名生成方法及びシステム
JP4653504B2 (ja) グループ署名生成システム、装置、プログラム及び方法
Dahmen Post-quantum signatures for today
Shao Improvement of efficient proxy signature schemes using self-certified public keys

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070807

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070919

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: 20071023

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20071025

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

Free format text: PAYMENT UNTIL: 20101102

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20101102

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20101102

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20111102

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20121102

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20131102

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees