JPWO2009104260A1 - 検証装置 - Google Patents

検証装置 Download PDF

Info

Publication number
JPWO2009104260A1
JPWO2009104260A1 JP2009554166A JP2009554166A JPWO2009104260A1 JP WO2009104260 A1 JPWO2009104260 A1 JP WO2009104260A1 JP 2009554166 A JP2009554166 A JP 2009554166A JP 2009554166 A JP2009554166 A JP 2009554166A JP WO2009104260 A1 JPWO2009104260 A1 JP WO2009104260A1
Authority
JP
Japan
Prior art keywords
integer
unit
verification
input
ciphertext
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.)
Granted
Application number
JP2009554166A
Other languages
English (en)
Other versions
JP5079024B2 (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of JPWO2009104260A1 publication Critical patent/JPWO2009104260A1/ja
Application granted granted Critical
Publication of JP5079024B2 publication Critical patent/JP5079024B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • H04L9/3073Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves involving pairings, e.g. identity based encryption [IBE], bilinear mappings or bilinear pairings, e.g. Weil or Tate pairing
    • 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
    • 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/3252Cryptographic 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 DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Physics (AREA)
  • Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Algebra (AREA)
  • Storage Device Security (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

整数分割処理S701において、整数分割部110は、有限群Gの位数pと、整数eとを入力し、入力した位数pと整数eとに基づいて、e1・e≡e2(mod p)を満たす整数e1と整数e2とを算出する。検証値算出処理S702において、検証値算出部130は、有限群Gの元sと、加法群Gの元hとを入力し、入力した元sと元hと、整数分割処理S701で整数分割部110が算出した整数e1と整数e2とに基づいて、有限群Gの元a(=e1・h−e2・s)を算出する。検証判定処理S703において、検証判定部150は、検証値算出部130が算出した元aに基づいて、元aが有限群Gの単位元Oであるか否かを判定する。これにより、h=e・sが成立するか否かを高速に判定する。

Description

この発明は、公開鍵暗号システムなどの暗号システムにおいて、暗号文などの整合性を検証する検証装置に関する。
整数の剰余類が乗法についてなす群や楕円曲線上の点がなす群などの有限群(finite group)を利用した暗号システムがある。
有限群を利用した暗号システムにおいて、暗号文の整合性を検証するなどのために、有限群の元h、s及び整数eに基づいて、h=e・s(有限群の群演算を加法的に記述した場合)またはh=s(有限群の群演算を乗法的に記述した場合)であるか否かを判定する場合がある。
特開2004−201124号公報 国際公開00/39668号公報 米国特許7110538号公報 R.P.Gallant、R.J.Lambert、S.A.Vanstone「Faster Point Multiplication on Elliptic Curves with Efficient Endomorphisms"Crypto 2001、LNCS 2139、190〜200ページ、2001年。 「18033−2:Information Technology―Security techniques―Encryption algorithms―Part2:Asymmetric ciphers」ISO/IEC 18033−2、2006年。 R.Cramer、V.Shoup「Design and Analysis of Practical Public−Key Encryption Schemes secure against Adaptive Chosn Ciphertext Attack」Cryptology ePrint Archive、http://eprint.iacr.org、2001年。 D.Boneh、X.Boyen「Efficient Selective−ID Secure Identity Based Encryption Without Random Oracle」EUROCRYPT 2004、LNCS 3027、223〜238ページ、2004年。 X.Boyen「The BB1 Identity−Based Cryptosystem:A Standard for Encryption and Key Encapsulation」Submissions for IEEE P1363.3、http://grouper.ieee.org/groups/1363/IBC/submissions/index.html、2006年。 M.Barbosa、L.Chen,Z.Cheng、M.Chimley、A.Dent、P.Farshim、K.Harrison、J.Malone−Lee、N.P.Smart、F.Vercauteren「SK−KEM:An Identity−Based KEM」Submissions for IEEE P1363.3、http://grouper.ieee.org/groups/1363/IBC/submissions/index.html。 M.Bellare、C.Namprempre、G.Neven「Security Proofs for Identity−Based Identification and Signature Schemes」EUROCRYPT 2004、LNCS 3027、2004年
暗号システムに利用される有限群は、位数が非常に大きく、コンピュータなどの処理装置が1回の群演算をするのに、多くの時間がかかる場合がある。
この発明は、例えば、上記のような課題を解決するためになされたものであり、コンピュータなどの処理装置を用いてh=s・eであるか否かを高速に判定することを目的とする。
この発明にかかる検証装置は、
データを処理する処理装置と、整数分割部と、検証値算出部と、検証判定部とを有し、
上記整数分割部は、上記処理装置を用いて、有限群Gの位数pと、整数eとを入力し、入力した位数pと整数eとに基づいて、e・e≡e(mod p)を満たす整数eと整数eとを算出し、
上記検証値算出部は、上記処理装置を用いて、上記有限群Gの元sと、上記有限群Gの元hとを入力し、入力した元sと元hと、上記整数分割部が算出した整数eと整数eとに基づいて、上記有限群Gの元a(=e・h−e・s)を算出し、
上記検証判定部は、上記処理装置を用いて、上記検証値算出部が算出した元aに基づいて、上記元aが上記有限群Gの単位元である場合に、検証成功と判定することを特徴とする。
この発明にかかる検証装置は、
上記整数分割部が、上記処理装置を用いて、上記整数eの絶対値が上記位数pの平方根よりも小さく、かつ、上記整数eが上記位数pの平方根よりも小さいという条件を満たす整数eと整数eとを算出することを特徴とする。
この発明にかかる検証装置は、更に、データを記憶する記憶装置を有し、
上記整数分割部は、第一剰余記憶部と、第二剰余記憶部と、初期値設定部と、適合性判定部と、第三剰余算出部と、分割整数出力部とを有し、
上記第一剰余記憶部は、上記記憶装置を用いて、整数vを記憶し、
上記第二剰余記憶部は、上記記憶装置を用いて、整数vを記憶し、
上記初期値設定部は、上記処理装置を用いて、上記位数pを上記整数vとして上記第一剰余記憶部に記憶させ、上記整数eを上記整数vとして上記第二剰余記憶部に記憶させ、
上記適合性判定部は、上記処理装置を用いて、上記第二剰余記憶部が記憶した整数vが上記位数pの平方根よりも小さい場合に、出力条件を満たしたと判定し、
上記第三剰余算出部は、上記処理装置を用いて、上記適合性判定部が出力条件を満たしたと判定しない場合に、上記第一剰余記憶部が記憶した整数vと、上記第二剰余記憶部が記憶した整数vとに基づいて、上記整数vを上記整数vで割った余りを算出して、整数vとし、上記第二剰余記憶部が記憶した整数vを上記整数vとして上記第一剰余記憶部に記憶させ、算出した整数vを上記整数vとして上記第二剰余記憶部に記憶させ、
上記分割整数出力部は、上記処理装置を用いて、上記適合性判定部が出力条件を満たしたと判定した場合に、上記第二剰余記憶部が記憶した整数vを上記整数eとして出力することを特徴とする。
この発明にかかる検証装置は、
上記整数分割部が、更に、第一係数記憶部と、第二係数記憶部と、商算出部と、第三係数算出部とを有し、
上記第一係数記憶部は、上記記憶装置を用いて、整数tを記憶し、
上記第二係数記憶部は、上記記憶装置を用いて、整数tを記憶し、
上記初期値設定部は、更に、上記処理装置を用いて、上記整数tとして0を上記第一係数記憶部に記憶させ、上記整数tとして1を上記第二係数記憶部に記憶させ、
上記商算出部は、上記処理装置を用いて、上記第一剰余記憶部が記憶した整数vと、上記第二剰余記憶部が記憶した整数vとに基づいて、上記整数vを上記整数vで割った商を超えない最大の整数を算出して、整数qとし、
上記第三係数算出部は、上記処理装置を用いて、上記適合性判定部が出力条件を満たしたと判定しない場合に、上記第一係数記憶部が記憶した整数tと、上記第二係数記憶部が記憶した整数tと、上記商算出部が算出した整数qとに基づいて、上記整数tと上記整数qとの積を、上記整数tから減算した整数を算出して、整数tとし、上記第二係数記憶部が記憶した整数tを上記整数tとして上記第一係数記憶部に記憶させ、算出した整数tを上記整数tとして上記第二係数記憶部に記憶させ、
上記分割整数出力部は、更に、上記処理装置を用いて、上記適合性判定部が出力条件を満たしたと判定した場合に、上記第二係数記憶部が記憶した整数tを上記整数eとして出力することを特徴とする。
この発明にかかる検証装置は、
上記検証値算出部が、上記処理装置を用いて、Σ(n・P)(ただし、nは2以上の所定の整数。iは0以上k以下の整数。kは上記整数eの絶対値及び上記整数eをn進法で表記した場合の桁数の最大値。Pは、上記有限群Gの元で、P=e1,sg ・e1,i・h−e2,i・s。e1,sgnは1または−1。e1,i及びe2,iは0以上n−1以下の整数で、e=e1,sgn・Σ(n・e1,i)、e=Σ(n・e2,i)。)を算出して、上記有限群Gの元aとすることを特徴とする。
この発明にかかる暗号文復号装置は、
データを記憶する記憶装置と、データを処理する処理装置と、鍵記憶部と、暗号文入力部と、暗号文検証部と、検証装置と、復号文生成部とを有し、
上記鍵記憶部は、上記記憶装置を用いて、暗号文を復号する鍵を記憶し、
上記暗号文入力部は、上記処理装置を用いて、暗号文を入力し、
上記暗号文検証部は、上記処理装置を用いて、上記鍵記憶部が記憶した鍵と、上記暗号文入力部が入力した暗号文とに基づいて、上記検証装置に入力する整数eと、上記有限群Gの元sと、上記有限群Gの元hとを算出し、
上記検証装置は、上記暗号文検証部が算出した整数eと、上記有限群Gの元sと、上記有限群Gの元hとを入力して、検証成功か否かを判定し、
上記復号文生成部は、上記処理装置を用いて、上記検証装置が検証成功と判定した場合に、上記暗号文入力部が入力した暗号文を上記鍵記憶部が記憶した鍵により復号して、復号文を生成することを特徴とする。
この発明にかかる暗号文復号装置は、更に、暗号パラメータ記憶部と、識別記憶部と、識別元算出部と、識別元記憶部とを有し、
上記暗号パラメータ記憶部は、上記記憶装置を用いて、上記有限群Gの位数pと、上記有限群Gの生成元gと、上記有限群Gの元Rとを記憶し、
上記識別記憶部は、上記記憶装置を用いて、上記暗号文復号装置を識別するビット列IDを記憶し、
上記識別元算出部は、上記処理装置を用いて、上記識別記憶部が記憶したビット列IDに基づいて、所定のハッシュ関数Hにより上記ビット列IDをハッシュしたハッシュ値を算出して、整数H(ID)とし、上記暗号パラメータ記憶部が記憶した生成元gと、上記暗号パラメータ記憶部が記憶した元Rと、算出した整数H(ID)とに基づいて、上記生成元gを整数H(ID)倍した元と、上記元Rとを加算して、上記有限群Gの元Q(=R+H(ID)・g)とし、
上記識別元記憶部は、上記記憶装置を用いて、上記識別元算出部が算出した元Qを記憶し、
上記鍵記憶部は、上記記憶装置を用いて、有限群Gの元DIDを記憶し、
上記暗号文入力部は、上記処理装置を用いて、上記有限群Gの元Uと、ビット列Vとを上記暗号文として入力し、
上記暗号文検証部は、ペアリング値算出部と、ビット列算出部と、整数算出部とを有し、
上記ペアリング値算出部は、上記処理装置を用いて、上記暗号文入力部が入力した元Uと、上記鍵記憶部が記憶した元DIDとに基づいて、所定のペアリング関数eにより上記元Uと上記元DIDとのペアリング値を算出して、ペアリング値α(=e(U,DID))とし、
上記ビット列算出部は、上記処理装置を用いて、上記ペアリング値算出部が算出したペアリング値αに基づいて、所定のハッシュ関数Hにより上記ペアリング値αをハッシュしたハッシュ値を算出して、ビット列H(α)とし、上記暗号文入力部が入力したビット列Vと、算出したビット列H(α)とに基づいて、上記ビット列Vと上記ビット列H(α)との排他的論理和を取って、ビット列m(=V XOR H(α))とし、
上記整数算出部は、上記処理装置を用いて、上記ビット列算出部が算出したビット列mに基づいて、所定のハッシュ関数Hにより上記ビット列mをハッシュしたハッシュ値を算出して、整数r(=H(m))とし、
上記検証装置は、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数rと、上記元sとして上記識別元記憶部が記憶した元Qと、上記元hとして上記暗号文入力部が入力した元Uとを入力して、検証成功か否かを判定し、
上記復号文生成部は、上記処理装置を用いて、上記検証装置が検証成功と判定した場合に、上記ビット列算出部が算出したビット列mに基づいて、所定のハッシュ関数Hにより上記ビット列mをハッシュしたハッシュ値を算出して、共通鍵K(=H(m))とし、算出した共通鍵Kを上記復号文として出力することを特徴とする。
この発明にかかる暗号文復号装置は、
上記識別元算出部が、上記暗号文入力部が上記暗号文を入力するよりも前に、上記元Qを算出することを特徴とする。
この発明にかかる暗号文復号装置は、更に、共通鍵記憶部と、暗号化メッセージ入力部と、メッセージ復号部とを有し、
上記共通鍵記憶部は、上記記憶装置を用いて、上記復号文生成部が出力した共通鍵Kを記憶し、
上記暗号化メッセージ入力部は、上記処理装置を用いて、暗号化メッセージを入力し、
上記メッセージ復号部は、上記処理装置を用いて、上記共通鍵記憶部が記憶した共通鍵Kにより上記暗号化メッセージ入力部が入力した暗号化メッセージを復号することを特徴とする。
この発明にかかる暗号文復号装置は、更に、暗号パラメータ記憶部を有し、
上記暗号パラメータ記憶部は、上記記憶装置を用いて、上記有限群Gの位数pを記憶し、
上記鍵記憶部は、上記記憶装置を用いて、1以上p−1以下の整数wと、1以上p−1以下の整数xと、1以上p−1以下の整数yと、1以上p−1以下の整数zとを記憶し、
上記暗号文入力部は、上記処理装置を用いて、上記有限群Gの元uと、上記有限群Gの元u’と、上記有限群Gの元vとを上記暗号文として入力し、
上記暗号文検証部は、ハッシュ値算出部と、整数算出部とを有し、
上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号文入力部が入力した元uと元u’とに基づいて、所定のハッシュ関数Hにより上記元uと上記元u’とをハッシュしたハッシュ値を算出して、整数α(=H(u,u’))とし、
上記整数算出部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した位数pと、上記鍵記憶部が記憶した整数xと整数yと、上記ハッシュ値算出部が算出した整数αとに基づいて、上記整数yと上記整数αとの積と、上記整数xとの和を、上記位数pで割った余りを算出して、整数t(=(x+y・α)mod p)とし、
上記検証装置は、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記鍵記憶部が記憶した整数wと、上記元sとして上記暗号文入力部が入力した元uと、上記元hとして上記暗号文入力部が入力した元u’とを入力し、検証成功か否かを判定して、第一の検証結果とし、上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数tと、上記元sとして上記暗号文入力部が入力した元uと、上記元hとして上記暗号文入力部が入力した元vとを入力し、検証成功か否かを判定して、第二の検証結果とし、
上記復号文生成部は、上記処理装置を用いて、上記検証装置が上記第一の検証結果及び上記第二の検証結果においてともに検証成功と判定した場合に、上記鍵記憶部が記憶した整数zと、上記暗号文入力部が入力した元uとに基づいて、上記元uを上記整数z回加算して、上記有限群Gの元h(=z・u)とし、上記暗号文入力部が入力した元uと、算出した元hとに基づいて、所定の鍵導出関数KDFにより上記元uと上記元hとから共通鍵K(=KDF(u,h))を生成し、生成した共通鍵Kを上記復号文として出力することを特徴とする。
この発明にかかる暗号文復号装置は、更に、共通鍵記憶部と、暗号化メッセージ入力部と、メッセージ復号部とを有し、
上記共通鍵記憶部は、上記記憶装置を用いて、上記復号文生成部が出力した共通鍵Kを記憶し、
上記暗号化メッセージ入力部は、上記処理装置を用いて、暗号化メッセージを入力し、
上記メッセージ復号部は、上記処理装置を用いて、上記共通鍵記憶部が記憶した共通鍵Kにより上記暗号化メッセージ入力部が入力した暗号化メッセージを復号することを特徴とする。
この発明にかかる暗号文復号装置は、更に、暗号パラメータ記憶部を有し、
上記暗号パラメータ記憶部は、上記記憶装置を用いて、加法群Gの位数pと、上記加法群Gの生成元gと、上記位数pを位数とする乗法群Gの元vとを記憶し、
上記鍵記憶部は、上記記憶装置を用いて、上記位数pを位数とする加法群Gの元dと、上記加法群Gの元dとを記憶し、
上記暗号文入力部は、上記処理装置を用いて、ビット列cと、上記加法群Gの元cと、上記加法群Gの元cと、1以上p−1以下の整数tとを上記暗号文として入力し、
上記暗号文検証部は、ペアリング値算出部と、整数算出部とを有し、
上記ペアリング値算出部は、上記処理装置を用いて、上記暗号文入力部が入力した元cと、上記秘密鍵記憶部が記憶した元dとに基づいて、所定のペアリング関数eにより上記元cと上記元dとのペアリング値を算出して、上記乗法群Gの元k(=e(c,d))とし、上記暗号文入力部が入力した元cと、上記秘密鍵記憶部が記憶した元dとに基づいて、上記ペアリング関数eにより上記元cと上記元dとのペアリング値を算出して、上記乗法群Gの元k(=e(c,d))とし、算出した上記元kと、算出した上記元kとに基づいて、上記元kを上記元kで除算して、上記乗法群Gの元k(=k/k)とし、
上記整数算出部は、上記処理装置を用いて、上記ペアリング値算出部が算出した元kと、上記暗号文入力部が入力したビット列cと元cと元cとに基づいて、所定のハッシュ関数H”により上記元kと上記ビット列cと上記元cと上記元cとをハッシュしたハッシュ値を算出して、整数H”(k,c,c,c)とし、上記暗号文入力部が入力した整数tと、算出した整数H”(k,c,c,c)と、上記暗号パラメータ記憶部が機記憶した位数pとに基づいて、上記整数tから上記整数H”(k,c,c,c)を減算した整数を位数pで割った余りを算出して、整数s(=t−H”(k,c,c,c)mod p)とし、
上記検証装置は、上記加法群Gを上記有限群Gとして、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数sと、上記元sとして上記暗号パラメータ記憶部が記憶した生成元gと、上記元hとして上記暗号文入力部が入力した元cとを入力し、検証成功か否かを判定して、第一の検証結果とし、上記乗法群Gを上記有限群Gとして、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数sと、上記元sとして上記暗号パラメータ記憶部が記憶した元vと、上記元hとして上記ペアリング値算出部が算出した元kとを入力し、検証成功か否かを判定して、第二の検証結果とし、
上記復号文生成部は、上記処理装置を用いて、上記検証装置が上記第一の検証結果及び上記第二の検証結果おいてともに検証成功と判定した場合に、上記ペアリング値算出部が算出した元kとに基づいて、所定のハッシュ関数H’により上記元kをハッシュしたハッシュ値を算出して、ビット列H’(k)とし、上記暗号文入力部が入力したビット列cと、算出したビット列H’(k)とに基づいて、上記ビット列cと上記ビット列H’(k)との排他的論理和を取って、ビット列M’(=c XOR H’(k))とし、算出したビット列M’を上記復号文として出力することを特徴とする。
この発明にかかる署名検証装置は、
データを処理する処理装置と、メッセージ入力部と、署名入力部と、署名検証部と、検証装置と、検証結果出力部とを有し、
上記メッセージ入力部は、上記処理装置を用いて、メッセージを入力し、
上記署名入力部は、上記処理装置を用いて、上記メッセージ入力部が入力したメッセージに対する署名を入力し、
上記署名検証部は、上記処理装置を用いて、上記メッセージ入力部が入力したメッセージと、上記署名入力部が入力した署名とに基づいて、上記検証装置に入力する整数eと、上記有限群Gの元sと、上記有限群Gの元hとを算出し、
上記検証装置は、上記署名検証部が算出した整数eと、上記有限群Gの元sと、上記有限群Gの元hとを入力して、検証成功か否かを判定し、
上記検証結果出力部は、上記処理装置を用いて、上記検証装置が検証した結果に基づいて、検証成功であるか否か表わす検証結果を出力することを特徴とする。
この発明にかかる署名検証装置は、更に、データを記憶する記憶装置と、暗号パラメータ記憶部と、識別記憶部とを有し、
上記暗号パラメータ記憶部は、上記記憶装置を用いて、上記有限群Gの位数pと、上記有限群Gの生成元gと、上記有限群Gの元Xとを記憶し、
上記識別記憶部は、上記記憶装置を用いて、署名装置を識別するビット列IDを記憶し、
上記メッセージ入力部は、上記処理装置を用いて、ビット列Mを上記メッセージとして入力し、
上記署名入力部は、上記処理装置を用いて、上記有限群Gの元Rと、上記有限群Gの元Sと、上記有限群Gの元Yと、1以上p−1以下の整数zとを上記署名として入力し、
上記署名検証部は、整数算出部と、検証元算出部と、チャレンジ算出部と、第一検証部とを有し、
上記整数算出部は、上記処理装置を用いて、上記署名入力部が入力した元Rと、上記識別記憶部が記憶したビット列IDとに基づいて、所定のハッシュ関数Hにより上記元Rと上記ビット列IDとをハッシュしたハッシュ値を算出して、整数h(=H(R,ID))とし、
上記検証元算出部は、上記処理装置を用いて、上記署名入力部が入力した元Rと元Sとに基づいて、上記元Sと、上記元Rの逆元とを加算して、上記有限群Gの元R’(=S−R)とし、
上記チャレンジ算出部は、上記処理装置を用いて、上記識別記憶部が記憶したビット列IDと、上記署名入力部が入力した元Rと元Sと元Yと、上記メッセージ入力部が入力したビット列Mとに基づいて、所定のハッシュ関数H’により上記ビット列IDと上記元Rと上記元Sと上記元Yと上記ビット列Mとをハッシュしたハッシュ値を算出して、整数c(=H’(I,R,S,Y,M))とし、
上記第一検証部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した生成元gと、上記署名入力部が入力した元Sと元Yと整数zと、上記チャレンジ算出部が算出した整数cとに基づいて、上記元Sを上記整数c回加算した元c・Sと上記元Yとを加算した元Y+c・Sが、上記元gを上記整数z回加算した元z・gと等しいか否かを判定し、上記元Y+c・Sと上記元z・gとが等しい場合に、検証成功と判定して、第一の検証結果とし、
上記検証装置は、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数hと、上記元sとして上記暗号パラメータ記憶部が記憶した元Xと、上記元hとして上記検証元算出部が算出した元R’とを入力し、検証成功か否かを判定して、第二の検証結果とし、
上記検証結果出力部は、上記処理装置を用いて、上記第一検証部が検証した第一の検証結果と、上記検証装置が検証した第二の検証結果とに基づいて、上記第一の検証結果及び上記第二の検証結果においてともに検証成功と判定した場合に、検証成功であることを表わす検証結果を出力することを特徴とする。
この発明にかかる認証装置は、
データを処理する処理装置と、データを送信する送信装置と、データを受信する受信装置と、認証要求受信部と、質問送信部と、回答受信部と、署名検証部と、検証装置と、認証結果出力部とを有し、
上記認証要求受信部は、上記受信装置を用いて、認証要求メッセージを受信し、
上記質問送信部は、上記送信装置を用いて、上記認証要求受信部が受信した認証要求メッセージに対する応答として、質問メッセージを送信し、
上記回答受信部は、上記受信装置を用いて、送信した質問メッセージに対する回答メッセージを受信し、
上記署名検証部は、上記処理装置を用いて、上記認証要求受信部が受信した認証要求メッセージと、上記回答受信部が受信した回答メッセージとに基づいて、上記検証装置に入力する整数eと、上記有限群Gの元sと、上記有限群Gの元hとを算出し、
上記検証装置は、上記署名検証部が算出した整数eと、上記有限群Gの元sと、上記有限群Gの元hとを入力して、検証成功か否かを判定し、
上記認証結果出力部は、上記処理装置を用いて、上記検証装置が検証した結果に基づいて、認証成功であるか否か表わす認証結果を出力することを特徴とする。
上記認証装置は、更に、データを記憶する記憶装置と、暗号パラメータ記憶部と、識別記憶部と、チャレンジ生成部とを有し、
上記暗号パラメータ記憶部は、上記記憶装置を用いて、上記有限群Gの位数pと、上記有限群Gの生成元gと、上記有限群Gの元Xとを記憶し、
上記識別記憶部は、上記記憶装置を用いて、証明装置を識別するビット列IDを記憶し、
上記認証要求受信部は、上記受信装置を用いて、上記有限群Gの元Rと、上記有限群Gの元Sと、上記有限群の元Yとを上記認証要求メッセージとして上記証明装置から受信し、
上記チャレンジ生成部は、上記処理装置を用いて、1以上p−1以下の整数cをランダムに生成し、
上記質問送信部は、上記送信装置を用いて、上記チャレンジ生成部が生成した整数cを上記質問メッセージとして上記証明装置に対して送信し、
上記回答受信部は、上記受信装置を用いて、1以上p−1以下の整数zを上記回答メッセージとして上記証明装置から受信し、
上記署名検証部は、整数算出部と、検証元算出部と、第一検証部とを有し、
上記整数算出部は、上記処理装置を用いて、上記認証要求受信部が受信した元Rと、上記識別記憶部が記憶したビット列IDとに基づいて、所定のハッシュ関数Hにより上記元Rと上記ビット列IDとをハッシュしたハッシュ値を算出して、整数h(=H(R,ID))とし、
上記検証元算出部は、上記処理装置を用いて、上記認証要求受信部が受信した元Rと元Sとに基づいて、上記元Sと、上記元Rの逆元とを加算して、上記有限群Gの元R’(=S−R)とし、
上記第一検証部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した生成元gと、上記認証要求受信部が受信した元Sと元Yと、上記チャレンジ生成部が生成した整数cと、上記回答受信部が受信した整数zとに基づいて、上記元Sを上記整数c回加算した元c・Sと上記元Yとを加算した元Y+c・Sが、上記元gを上記整数z回加算した元z・gと等しいか否かを判定し、上記元Y+c・Sと上記元z・gとが等しい場合に、検証成功と判定して、第一の検証結果とし、
上記検証装置は、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数hと、上記元sとして上記暗号パラメータ記憶部が記憶した元Xと、上記元hとして上記検証元算出部が算出した元R’とを入力し、検証成功か否かを判定して、第二の検証結果とし、
上記認証結果出力部は、上記処理装置を用いて、上記第一検証部が検証した第一の検証結果と、上記検証装置が検証した第二の検証結果とに基づいて、上記第一の検証結果及び上記第二の検証結果においてともに検証成功と判定した場合に、認証成功であることを表わす認証結果を出力することを特徴とする。
この発明にかかる暗号システムは、上記検証装置を有することを特徴とする。
この発明にかかるコンピュータプログラムは、データを処理する処理装置を有するコンピュータを、上記検証装置として機能させることを特徴とする。
この発明にかかる検証方法は、
データを処理する処理装置を有する検証装置が、整合性を検証する検証方法において、
上記処理装置が、有限群Gの位数pと、整数eとを入力し、入力した位数pと整数eとに基づいて、e・e≡e(mod p)を満たす整数eと整数eとを算出し、
上記処理装置が、上記有限群Gの元sと、上記有限群Gの元hとを入力し、入力した元sと元hと、算出した整数eと整数eとに基づいて、上記有限群Gの元a(=e・h−e・s)を算出し、
上記処理装置が、算出した元aに基づいて、上記元aが上記有限群Gの単位元である場合に、検証成功と判定することを特徴とする。
この発明によれば、例えば、整数分割部が算出した整数e及び整数eに基づいて検証値算出部が算出した元aが有限群Gの単位元である場合に、検証判定部が検証成功と判定するので、h=e・sである場合に検証成功と判定することができる。検証値算出部において元aを算出する処理にかかる時間が、e・sを算出するのにかかる時間より短ければ、h=e・sであるか否かを判定する処理にかかる時間を短縮することができるという効果を奏する。
実施の形態1.
実施の形態1について、図1〜図9を用いて説明する。
以下の説明において、暗号システムが利用する有限群をGとする。
また、有限群Gにおける演算は、加法的に記述する。なお、これは、説明の便宜のためであって、群演算を乗法的に記述する群を除外するものではない。
有限群Gの位数pは、素数であるものとする。したがって、有限群Gは巡回群である。
図1は、この実施の形態における暗号文復号装置200の機能ブロックの構成の一例を示すブロック構成図である。
暗号文復号装置200は、暗号文を入力し、入力した暗号文を復号して、復号文を生成する。
暗号文復号装置200は、鍵記憶部210、暗号文入力部220、暗号文検証部230、検証装置100、復号文生成部260を有する。
鍵記憶部210は、暗号文を復号する鍵(秘密鍵)を記憶する。
暗号文入力部220は、暗号文を入力する。
暗号文検証部230は、鍵記憶部210が記憶した鍵と、暗号文入力部220が入力した暗号文とに基づいて、暗号文入力部220が入力した暗号文を検証するために必要な値を算出する。
検証装置100は、暗号文検証部230が算出した値に基づいて、暗号文入力部220が入力した暗号文を検証する。
復号文生成部260は、検証装置100が検証に成功した場合に、暗号文入力部220が入力した暗号文を、鍵記憶部210が記憶した鍵により復号して、復号文を生成する。
不正者は、暗号文復号装置200に不正な暗号文を入力して、暗号文復号装置200が生成した復号文を解析することにより、正規の暗号文を解読する手がかりを得ようとする場合がある。
暗号文復号装置200は、暗号文の整合性を検証して検証に成功した場合にのみ、復号文を生成することにより、正規の暗号文を解読する手がかりを不正者に与えるのを防ぐ。
図2は、この実施の形態における暗号文復号装置200の外観の一例を示す図である。
暗号文復号装置200は、システムユニット910、CRT(Cathode・Ray・Tube)やLCD(液晶)の表示画面を有する表示装置901、キーボード902(Key・Board:K/B)、マウス903、FDD904(Flexible・Disk・Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。
システムユニット910は、コンピュータであり、ファクシミリ機932、電話器931とケーブルで接続され、また、ローカルエリアネットワーク942(LAN)、ゲートウェイ941を介してインターネット940に接続されている。
図3は、この実施の形態における暗号文復号装置200のハードウェア資源の一例を示す図である。
暗号文復号装置200は、プログラムを実行するCPU911(Central・Processing・Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。CPU911は、バス912を介してROM913、RAM914、通信装置915、表示装置901、キーボード902、マウス903、FDD904、CDD905、プリンタ装置906、スキャナ装置907、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置920の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。
通信装置915、キーボード902、スキャナ装置907、FDD904などは、入力部、入力装置の一例である。
また、通信装置915、表示装置901、プリンタ装置906などは、出力部、出力装置の一例である。
通信装置915は、ファクシミリ機932、電話器931、LAN942等に接続されている。通信装置915は、LAN942に限らず、インターネット940、ISDN等のWAN(ワイドエリアネットワーク)などに接続されていても構わない。インターネット940或いはISDN等のWANに接続されている場合、ゲートウェイ941は不用となる。
磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。プログラム群923のプログラムは、CPU911、オペレーティングシステム921、ウィンドウシステム922により実行される。
上記プログラム群923には、以下に述べる実施の形態の説明において「〜部」として説明する機能を実行するプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。
ファイル群924には、以下に述べる実施の形態の説明において、「〜の判定結果」、「〜の計算結果」、「〜の処理結果」として説明する情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリになどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのCPUの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
また、以下に述べる実施の形態の説明において説明するフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD(Digital・Versatile・Disk)等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
また、以下に述べる実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ROM913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。すなわち、プログラムは、以下に述べる「〜部」としてコンピュータを機能させるものである。あるいは、以下に述べる「〜部」の手順や方法をコンピュータに実行させるものである。
図4は、この実施の形態における検証装置100の内部ブロックの構成の一例を示すブロック構成図である。
検証装置100は、有限群Gの元s及び元h、有限群Gの位数p、整数eを入力し、h=e・sであるか否かを判定する。なお、整数eは1以上p−1以下であるものとする。
検証装置100は、整数分割部110、検証値算出部130、検証判定部150を有する。
整数分割部110は、CPU911を用いて、有限群Gの位数pと、整数eとを入力して、2つの整数e,eを算出する。
検証値算出部130は、CPU911を用いて、有限群Gの元s及び元hと、整数分割部110が算出した整数e及び整数eとに基づいて、有限群Gの元aを算出する。
検証判定部150は、CPU911を用いて、検証値算出部130が算出した元aが有限群Gの単位元であるか否かを判定する。元aが有限群Gの単位元である場合、検証判定部150は、検証成功(すなわち、h=e・sである)と判定する。
図5は、この実施の形態における検証装置100がh=e・sであるか否かを判定する検証処理の流れの一例を示すフローチャート図である。
整数分割処理S701において、整数分割部110は、CPU911を用いて、入力した位数pと整数eとに基づいて、2つの整数e,eを算出する。整数分割部110は、e・e≡e(mod p)、|e|<√p、0<|e|<√pという条件を満たす整数e及び整数eを算出する。
検証値算出処理S702において、検証値算出部130は、CPU911を用いて、入力した元sと元hと、整数分割処理S701で整数分割部110が算出した整数eと整数eとに基づいて、有限群Gの元a=e・h−e・sを算出する。
検証判定処理S703において、検証判定部150は、CPU911を用いて、検証値算出処理S702で検証値算出部130が算出した元aが、有限群Gの単位元(以下「O」と記述する。)であるか否かを判定する。
元aが単位元Oであると判定した場合、成功判定処理S704へ進む。
元aが単位元Oでないと判定した場合、失敗判定処理S705へ進む。
成功判定処理S704において、検証判定部150は、CPU911を用いて、検証成功と判定し、検証処理を終了する。
失敗判定処理S705において、検証判定部150は、CPU911を用いて、憲章失敗と判定し、検証処理を終了する。
図6は、この実施の形態における整数分割部110の内部ブロックの構成の一例を示す詳細ブロック図である。
整数分割部110は、有限群Gの位数pと、整数eとに基づいて、e・e≡e(mod p)を満たす整数e及び整数eを算出する。すなわち、整数分割部110は、整数eと整数eとの積を位数pで割った余りが、整数eと等しくなるよう、整数e及び整数eを定める。
なお、検証値算出部130における計算を高速化するため、整数分割部110は、e・e≡e(mod p)を満たす整数e及び整数eのうち、絶対値が位数pの平方根よりも小さい整数eと、位数pの平方根よりも小さい1以上の整数である整数eとを選択する。
整数分割部110は、位数入力部111、整数入力部112、初期値設定部113、第一剰余記憶部114、第二剰余記憶部115、適合性判定部116、第三剰余算出部117、第一係数記憶部124、第二係数記憶部125、商算出部126、第三係数算出部127、分割整数出力部129を有する。
位数入力部111は、CPU911を用いて、有限群Gの位数pを表わすデータを入力する。位数入力部111は、RAM914を用いて、入力した位数pを表わすデータを記憶する。
整数入力部112は、CPU911を用いて、整数eを表わすデータを入力する。整数入力部112は、RAM914を用いて、入力した整数eを表わすデータを記憶する。
第一剰余記憶部114は、RAM914を用いて、整数vを表わすデータを記憶する。
第二剰余記憶部115は、RAM914を用いて、整数vを表わすデータを記憶する。
第一係数記憶部124は、RAM914を用いて、整数tを表わすデータを記憶する。
第二係数記憶部125は、RAM914を用いて、整数tを表わすデータを記憶する。
初期値設定部113は、第一剰余記憶部114、第二剰余記憶部115、第一係数記憶部124、第二係数記憶部125に初期値を設定する。
初期値設定部113は、CPU911を用いて、位数入力部111が記憶した位数pを表わすデータと、整数入力部112が記憶した整数eを表わすデータとを入力する。初期値設定部113は、CPU911を用いて、入力した位数pを表わすデータを、整数vを表わすデータとして第一剰余記憶部114に記憶させる。初期値設定部113は、CPU911を用いて、入力した整数eを表わすデータを、整数vを表わすデータとして第二剰余記憶部115に記憶させる。初期値設定部113は、CPU911を用いて、整数tを表わすデータとして0を表わすデータを第一係数記憶部124に記憶させる。初期値設定部113は、CPU911を用いて、整数tを表わすデータとして1を表わすデータを第二係数記憶部125に記憶させる。
ここで、v=p、v=e、t=0、t=1だから、k、kを整数とすると、
Figure 2009104260
Figure 2009104260
Figure 2009104260
Figure 2009104260
Figure 2009104260
適合性判定部116は、CPU911を用いて、位数入力部111が記憶した位数pを表わすデータと、第二剰余記憶部115が整数vを表わすデータを入力する。適合性判定部116は、CPU911を用いて、入力したデータが表わす位数pと整数vとに基づいて、出力条件を満たしたか否かを判定する。具体的には、適合性判定部116は、CPU911を用いて、整数vと位数pの平方根とを比較して、整数vのほうが位数pの平方根よりも小さい場合に、出力条件を満たしたと判定する。
なお、適合性判定部116は、あらかじめ、CPU911を用いて、位数pの平方根を超えない最大の整数を算出しておいてもよい。
また、位数pの平方根を算出する代わりに、整数vの2進表記における桁数と、位数pの2進表記における桁数とを比較することにより、出力条件を満たしたか否かを判定してもよい。すなわち、適合性判定部116は、あらかじめ、CPU911を用いて、位数pを表わすデータのビット数を求め、求めたビット数を2で割って(割り切れない場合は切り上げ)、平方根ビット数とする。平方根ビット数は、位数pの平方根を超えない整数の2進表記における桁数を表わす。適合性判定部116は、RAM914を用いて、算出した平方根ビット数を記憶しておき、CPU911を用いて、整数vを表わすデータのビット数を算出する。適合性判定部116は、CPU911を用いて、算出したビット数と、記憶した平方根ビット数とを比較し、整数vを表わすデータのビット数が、平方根ビット数以下である場合に、整数vのほうが位数pの平方根よりも小さいものとみなし、出力条件を満たしたと判定する。
適合性判定部116が出力条件を満たしていないと判定した場合、第三剰余算出部117は、CPU911を用いて、第一剰余記憶部114が記憶した整数vを表わすデータと、第二剰余記憶部115が記憶した整数vを表わすデータとを入力する。第三剰余算出部117は、入力したデータが表わす整数vと整数vとに基づいて、整数vを整数vで割った余りを算出し、整数vとする。
また、適合性判定部116が出力条件を満たしていないと判定した場合、商算出部126は、CPU911を用いて、第一剰余記憶部114が記憶した整数vを表わすデータと、第二剰余記憶部115が記憶した整数vを表わすデータとを入力する。商算出部126は、入力したデータが表わす整数vと整数vとに基づいて、整数vを整数vで割った商を超えない最大の整数を算出し、整数qとする。商算出部126は、RAM914を用いて、算出した整数qを表わすデータを記憶する。
第三係数算出部127は、CPU911を用いて、第一係数記憶部124が記憶した整数tを表わすデータと、第二係数記憶部125が記憶した整数tを表わすデータと、商算出部126が算出した整数qを表わすデータとを入力する。第三係数算出部127は、CPU911を用いて、入力したデータが表わす整数tと整数tと整数qとに基づいて、整数tから、整数qと整数tとの積を減算した整数t(=t−q・t)を算出する。
ここで、kを整数とすると、
Figure 2009104260
また、整数vは、整数vを整数vで割った余りだから、
Figure 2009104260
また、v>v>0であれば、q≧1なので、t≦0、t>0ならば、
Figure 2009104260
>0、t<0ならば、
Figure 2009104260
したがって、いずれの場合も、
Figure 2009104260
よって、
Figure 2009104260
第三剰余算出部117は、CPU911を用いて、入力した整数vを表わすデータを、整数vを表わすデータとして第一剰余記憶部114に記憶させる。第三剰余算出部117は、CPU911を用いて、算出した整数vに基づいて、整数vを表わすデータを、整数vを表わすデータとして第二剰余記憶部115に記憶させる。
第三係数算出部127は、CPU911を用いて、入力した整数tを表わすデータを、整数tを表わすデータとして第一係数記憶部124に記憶させる。第三係数算出部127は、CPU911を用いて、算出した整数tに基づいて、整数tを表わすデータを、整数tを表わすデータとして第二係数記憶部125に記憶させる。
数6〜数11より、第一剰余記憶部114、第二剰余記憶部115、第一係数記憶部124、第二係数記憶部125が新たに記憶したデータが表わす整数v、整数v、整数t、整数tの間にも、数1〜数5が成り立つ。
適合性判定部116が出力条件を満たしたと判定した場合、分割整数出力部129は、CPU911を用いて、第二剰余記憶部115が記憶した整数vを表わすデータと、第二係数記憶部125が記憶した整数tを表わすデータとを入力する。分割整数出力部129は、CPU911を用いて、入力した整数tを表わすデータを、整数eを表わすデータとして出力する。また、分割整数出力部129は、CPU911を用いて、入力した整数vを表わすデータを、整数eを表わすデータとして出力する。
第三剰余算出部117及び第三係数算出部127がこの計算を繰り返すと、vはやがて位数pと整数eとの最大公約数になる。位数pは素数なので、位数pと整数eとの最大公約数は1である。したがって、必ず0<v<√pとなり、分割整数出力部129が整数e及び整数eを表わすデータを出力する。
図7は、この実施の形態における整数分割部110が整数eを分割する整数分割処理の流れの一例を示すフローチャート図である。
初期値設定工程S711において、初期値設定部113は、CPU911を用いて、第一剰余記憶部114、第二剰余記憶部115、第一係数記憶部124、第二係数記憶部125に初期値を設定する。第一剰余記憶部114は、RAM914を用いて、位数入力部111が入力した位数pを整数vとして記憶する。第二剰余記憶部115は、RAM914を用いて、整数入力部112が入力した整数eを整数vとして記憶する。第一係数記憶部124は、RAM914を用いて、整数tとして0を記憶する。第二係数記憶部125は、RAM914を用いて、整数tとして1を記憶する。
適合性判定工程S712において、適合性判定部116は、CPU911を用いて、第二剰余記憶部115が記憶した整数vが、位数入力部111が入力した位数pの平方根より小さいか否かを判定する。
整数vが位数pの平方根より小さいと判定した場合、分割整数出力工程S718へ進む。
整数vが位数pの平方根より大きいと判定した場合、剰余算出工程S713へ進む。
剰余算出工程S713において、第三剰余算出部117は、CPU911を用いて、第一剰余記憶部114が記憶した整数vを、第二剰余記憶部115が記憶した整数vで割った余りを算出し、整数vとする。
商算出工程S714において、商算出部126は、CPU911を用いて、第一剰余記憶部114が記憶した整数vを、第二剰余記憶部115が記憶した整数vで割った商を超えない最大の整数を算出し、整数qとする。
係数算出工程S715において、第三係数算出部127は、CPU911を用いて、第一係数記憶部124が記憶した整数tから、第二係数記憶部125が記憶した整数tと商算出工程S714で商算出部126が算出した整数qとの積を減算した整数を算出して、整数tとする。
剰余更新工程S716において、第三剰余算出部117は、CPU911を用いて、第一剰余記憶部114、第二剰余記憶部115を更新する。第一剰余記憶部114は、RAM914を用いて、第二剰余記憶部115が記憶した整数vを、整数vとして記憶する。第二剰余記憶部115は、RAM914を用いて、剰余算出工程S713で第三剰余算出部117が算出した整数vを、整数vとして記憶する。
係数更新工程S717において、第三係数算出部127は、CPU911を用いて、第一係数記憶部124、第二係数記憶部125を更新する。第一係数記憶部124は、RAM914を用いて、第二係数記憶部125が記憶した整数tを、整数tとして記憶する。第二係数記憶部125は、RAM914を用いて、係数算出工程S715で第三係数算出部127が算出した整数tを、整数tとして記憶する。
その後、適合性判定工程S712に戻る。
分割整数出力工程S718において、分割整数出力部129は、CPU911を用いて、第二係数記憶部125が記憶した整数tを、整数eとして出力する。分割整数出力部129は、CPU911を用いて、第二剰余記憶部115が記憶した整数vを、整数eとして出力する。
その後、整数分割処理を終了する。
分割整数出力部129が出力する整数e及び整数eは、数2より、
Figure 2009104260
また、適合性判定工程S712で出力条件を満たすと判定されたので、
Figure 2009104260
適合性判定工程S712を2回以上実行した場合、前回の適合性判定工程S712では出力条件を満たさないと判定されたので、
Figure 2009104260
このとき、数5より、
Figure 2009104260
なお、適合性判定工程S712を1回しか実行しなかった場合も、e=1なので、数15は満たされている。
以上のように、整数分割部110は、拡張ユークリッド互除法を利用して、e・e≡e(mod p)、|e|<√p、0<e<√pを満たす整数e及び整数eを算出する。
図8は、この実施の形態における検証値算出部130の内部ブロックの構成の一例を示す詳細ブロック図である。
検証値算出部130は、有限群Gの元s及び元hと、整数分割部110が算出した整数e及び整数eとに基づいて、有限群Gの元a(=e・h−e・s)を算出する。
検証値算出部130は、分割整数入力部131、元入力部132、索引算出部133、テーブル生成部134、テーブル記憶部135、検証初期値設定部141、倍算結果記憶部142、二基底加算部143、加算結果記憶部144、倍算部145、検証値出力部149を有する。
分割整数入力部131は、CPU911を用いて、整数分割部110が出力した整数e及び整数eを表わすデータを入力する。分割整数入力部131は、RAM914を用いて、入力した整数e及び整数eを表わすデータを記憶する。
元入力部132は、CPU911を用いて、有限群Gの元s及び元hを表わすデータを入力する。元入力部132は、RAM914を用いて、入力した元s及び元hを表わすデータを記憶する。
索引算出部133は、CPU911を用いて、分割整数入力部131が記憶した整数e及び整数eを表わすデータを入力する。索引算出部133は、CPU911を用いて、整数eが正の整数であるか負の整数であるかを判定する。索引算出部133は、RAM914を用いて、判定結果を表わすデータを記憶する。索引算出部133は、CPU911を用いて、整数eが負の整数であると判定した場合、整数eの符号を反転して、正の整数にする。
索引算出部133は、CPU911を用いて、算出した整数eの絶対値に基づいて、整数eの絶対値をn進法で表わした各桁である整数の組(e1,i)(ただし、iは0以上k−1以下の整数。nはあらかじめ定めた2以上の整数。)を算出する。すなわち、索引算出部133は、CPU911を用いて、以下の条件を満たす整数の組(e1,i)を算出する。
Figure 2009104260
同様に、索引算出部133は、CPU911を用いて、整数eに基づいて、整数eをn進法で表わした各桁である整数の組(e2,i)を算出する。すなわち、
Figure 2009104260
例えば、n=2の場合、索引算出部133は、CPU911を用いて、整数eの絶対値及び整数eをそれぞれ表わすデータを1ビットごとに分解して、(e1,i)、(e2,i)とする。n=4の場合、索引算出部133は、整数eの絶対値及び整数eをそれぞれ表わすデータを2ビットごとに分解して、(e1,i)、(e2,i)とする。
なお、kは、i≧kであるすべてのiについて、e1,i=0、e2,i=0である最小の整数である。
例えば、n=2、e=23、e=34であれば、e=(10111)、e=(100010)であるから、k=6である。
索引算出部133は、RAM914を用いて、算出した整数の組(e1,i)及び(e2,i)を表わすデータを記憶する。
テーブル生成部134は、CPU911を用いて、元入力部132が記憶した元s及び元hを表わすデータと、索引算出部133が判定した整数eが正であるか負であるかの判定結果を表わすデータとを入力する。
テーブル生成部134は、CPU911を用いて、入力したデータが表わす元sと元hと判定結果とに基づいて、n×n個の有限群Gの元px,y(=e1,sgn・x・h−y・s。ただし、x及びyは0以上n−1以下の整数。e1,sgnは、整数eが正の場合、1。整数eが負の場合、−1。)を算出する。
例えば、n=2の場合、テーブル生成部134は、4つの元p0,0、p1,0、p ,1、p1,1を算出する。なお、元p0,0は常に単位元であるから、テーブル生成部134は、他の3つの元だけを算出してもよい。
テーブル記憶部135は、RAM914を用いて、テーブル生成部134が算出したn×n個の元px,yを表わすデータを記憶する。
倍算結果記憶部142は、RAM914を用いて、有限群Gの元aを算出する途中の値である有限群Gの元a’を表わすデータを記憶する。
加算結果記憶部144は、RAM914を用いて、有限群Gの元aを算出する途中の値である有限群Gの元a”を表わすデータを記憶する。
検証初期値設定部141は、CPU911を用いて、有限群Gの単位元を表わすデータを、元a’を表わすデータとして倍算結果記憶部142に記憶させる。
二基底加算部143は、CPU911を用いて、索引算出部133が記憶した整数の組(e1,i)及び(e2,i)を表わすデータを、iが大きいほうから1つずつ順に入力する。
二基底加算部143は、CPU911を用いて、入力したデータが表わす整数e1,i及び整数e2,iに基づいて、テーブル記憶部135が記憶した有限群Gの元px,yを表わすデータのなかから、x=e1,i、y=e2,iである元px,yを表わすデータを元Pを表わすデータとして取得する。
二基底加算部143は、CPU911を用いて、倍算結果記憶部142が記憶した有限群Gの元a’を表わすデータを入力する。
二基底加算部143は、CPU911を用いて、入力したデータが表わす有限群Gの元a’と、元Pとに基づいて、元a’と元Pとを加算した元a’+Pを算出する。
二基底加算部143は、CPU911を用いて、算出した元a’+Pを表わすデータを、元a”を表わすデータとして加算結果記憶部144に記憶させる。
倍算部145は、CPU911を用いて、加算結果記憶部144が記憶した有限群Gの元a”を表わすデータを入力する。倍算部145は、CPU911を用いて、入力したデータが表わす元a”に基づいて、元a”をn回加算した元n・a”を算出する。例えば、n=2の場合、倍算部145は、元a”と元a”とを加算して、元2・a”を算出する。n=4の場合であれば、倍算部145は、元a”と元a”とを加算して元2・a”を算出し、更に、算出した元2・a”と元2・a”とを加算して元4・a”を算出する。
倍算部145は、CPU911を用いて、算出した元n・a”を表わすデータを、元a’を表わすデータとして倍算結果記憶部142に記憶させる。
以上を繰り返し、索引算出部133が記憶した整数e1,i及び整数e2,iを二基底加算部143がすべて入力した場合、検証値出力部149は、CPU911を用いて、加算結果記憶部144が記憶した有限群Gの元a”を表わすデータを入力する。検証値出力部149は、CPU911を用いて、入力した元a”を表わすデータを、元aを表わすデータとして出力する。
図9は、この実施の形態における検証値算出部130が有限群Gの元aを算出する検証値算出処理の流れの一例を示すフローチャート図である。
索引算出工程S721において、索引算出部133は、CPU911を用いて、分割整数入力部131が入力した整数eに基づいて、整数e1,sgnを算出する。索引算出部133は、CPU911を用いて、整数eが正なら、整数e1,sgnを1にし、整数eが負なら、整数e1,sgnを−1にする。
索引算出部133は、CPU911を用いて、分割整数入力部131が入力した整数eに基づいて、k個の整数e1,i(ただし、iは0以上k−1以下の整数。)を算出する。例えば、索引算出部133は、CPU911を用いて、整数eの絶対値をnのi乗で割った商を超えない最大の整数をnで割った余りを算出して、e1,iとする。
同様に、索引算出部133は、CPU911を用いて分割整数入力部131が入力した整数eに基づいて、k個の整数e2,i(ただし、iは0以上k−1以下の整数。)を算出する。例えば、索引算出部133は、CPU911を用いて、整数eをnのi乗で割った商を超えない最大の整数をnで割った余りを算出して、e2,iとする。
テーブル生成工程S722において、テーブル生成部134は、CPU911を用いて、元入力部132が入力した元sと元hと、索引算出工程S721で索引算出部133が算出した整数e1,sgnとに基づいて、n個の有限群Gの元px,y(ただし、x及びyは0以上n−1以下の整数。)を算出する。テーブル生成部134は、CPU911を用いて、元hをe1,sgn・x回加算した元から、元sをy回加算した元を減算した元を算出して、元px,yとする。
テーブル記憶部135は、RAM914を用いて、テーブル生成部134が算出したn個の元px,yを記憶する。
検証初期値設定工程S723において、検証初期値設定部141は、CPU911を用いて、倍算結果記憶部142を初期化する。倍算結果記憶部142は、RAM914を用いて、有限群Gの単位元を元a’として記憶する。
繰り返し初期値設定工程S724において、二基底加算部143は、RAM914を用いて、整数kから1を減算した整数を、整数jとして記憶する。
二基底加算工程S725において、二基底加算部143は、CPU911を用いて、記憶した整数jに基づいて、索引算出工程S721で索引算出部133が算出したk個の整数e1,i及び整数e2,iのなかから、i=jである整数e1,jと整数e2,jとを取得する。
二基底加算部143は、CPU911を用いて、取得した整数e1,iと整数e2,iとに基づいて、テーブル記憶部135が記憶したn個の有限群Gの元px,yのなかから、x=e1,j、y=e2,jである元px,yを取得して、元Pとする。
二基底加算部143は、CPU911を用いて、倍算結果記憶部142が記憶した有限群Gの元a’と、取得した元Pとに基づいて、有限群Gにおける演算により、元a’と元Pとを加算した元a’+Pを算出する。
加算結果記憶部144は、RAM914を用いて、二基底加算部143が算出した元a’+Pを、元a”として記憶する。
繰り返し更新工程S726において、二基底加算部143は、CPU911を用いて、記憶した整数jから1を減算した整数j−1を算出する。二基底加算部143は、RAM914を用いて算出した整数j−1を、整数jとして記憶する。
算出した整数jが正または0である場合、倍算工程S727へ進む。
算出した整数jが負になった場合、検証値出力工程S728へ進む。
倍算工程S727において、倍算部145は、CPU911を用いて、加算結果記憶部144が記憶した有限群Gの元a”に基づいて、有限群Gにおける演算により、元a”をn回加算した元n・a”を算出する。
倍算結果記憶部142は、RAM914を用いて、倍算部145が算出した元n・a”を、元a’として記憶する。
その後、二基底加算工程S725に戻る。
検証値出力工程S728において、検証値出力部149は、CPU911を用いて、加算結果記憶部144が記憶した有限群Gの元a”を、元aとして出力する。
その後、検証値算出処理を終了する。
以上のように、検証値算出部130は、加法群における二基底スカラー倍算(あるいは、乗法群における二基底べき乗算)を利用して、元aを算出する。
以上の処理において、j=iのときに二基底加算工程S725で加算結果記憶部144が記憶する元a”をaを書くと、
Figure 2009104260
ここで、有限群Gの元Pは、
Figure 2009104260
したがって、
Figure 2009104260
ここで、e・e≡e(mod p)なので、
Figure 2009104260
h=e・sであれば、元aは、有限群Gの単位元となる。また、h≠e・sであれば、有限群Gの位数pが素数なので、e=0でない限り、元aは、有限群Gの単位元とはならない。したがって、検証値算出部130が算出した元aが単位元であるか否かを判定することにより、h=e・sであるか否かを判定できる。
次に、検証値算出部130が有限群Gの元aを算出する計算にかかる時間について説明する。
なお、以下の説明において、有限群Gの群演算を1回するのにかかる時間をTとする。また、それ以外の計算やデータの取得などにかかる時間は、Tよりもはるかに短いので、無視する。
テーブル生成工程S722において、テーブル生成部134は、元p0,y(y≠0,1)を算出するために群演算をn−2回、元px,0(x≠0,1)を算出するために群演算をn−2回、元px,y(x≠0、y≠0)を算出するために群演算を(n−1)回するので、テーブル生成工程S722にかかる時間は、(n−3)Tである。
二基底可算工程S725において、二基底加算部143は、元a”を算出するために群演算を1回する。二基底可算工程S725はk回繰り返されるので、二基底可算工程S725にかかる時間は、全部でkTである。
nが2のべき乗である場合、倍算工程S727において、倍算部145は、元a’を算出するために群演算をlogn回する。倍算工程S727はk−1回繰り返されるので、倍算工程S727にかかる時間は、全部でlogn(k−1)Tである。
したがって、検証値算出処理全体にかかる時間は、[n−3+k+logn(k−1)]Tである。例えば、n=2の場合は2kT、n=4の場合は(3k+12)Tである。
比較のため、整数eを分割せず、e・sを算出する場合にかかる時間について述べる。
整数eをn進法で表わした場合の桁数をk’とする。
算出手順は、検証値算出処理と同様とする。ただし、基底となる元が一つなので、あらかじめ算出しておくテーブルには、n個の元x・s(xは0以上n−1以下の整数。)を記憶する。
テーブルの生成にかかる時間は、(n−2)Tである。
加算にかかる時間は、全部でk’Tである。
倍算にかかる時間は、全部でlogn(k’−1)Tである。
したがって、e・sの算出全体にかかる時間は、[n−2+k’+logn(k’−1)]Tである。例えば、n=2の場合は(2k’−1)T、n=4の場合は3k’Tである。
ここで、eは1以上p−1以下の整数なので、k’は、pをn進法で表わした場合の桁数と、確率的にほぼ等しい。
これに対して、eの絶対値及びeは1以上√p未満の整数なので、kは、√pをn進法で表わした場合の桁数と、確率的にほぼ等しく、k’の約半分である。
そこで、k=k’/2と仮定すると、検証値算出処理全体にかかる時間は、n=2の場合はk’T、n=4の場合は(1.5k’+12)Tとなる。有限群Gの位数pが十分大きいとすると、検証値算出処理全体にかかる時間は、e・sを算出する処理にかかる時間の約半分である。
したがって、h=e・sであるか否かを判定するのにかかる時間が、約半分になる。
この実施の形態における検証装置100は、データを処理する処理装置(CPU911)と、整数分割部110と、検証値算出部130と、検証判定部150とを有する。
上記整数分割部110は、上記処理装置(CPU911)を用いて、有限群Gの位数pと、整数eとを入力し、入力した位数pと整数eとに基づいて、e・e≡e(mod
p)を満たす整数eと整数eとを算出する。
上記検証値算出部130は、上記処理装置(CPU911)を用いて、上記有限群Gの元sと、上記有限群Gの元hとを入力し、入力した元sと元hと、上記整数分割部110が算出した整数eと整数eとに基づいて、上記有限群Gの元a(=e・h−e・s)を算出する。
上記検証判定部150は、上記処理装置(CPU911)を用いて、上記検証値算出部130が算出した元aに基づいて、上記元aが上記有限群Gの単位元である場合に、検証成功と判定する。
この実施の形態における検証装置100によれば、整数分割部110が算出した整数e及び整数eに基づいて検証値算出部130が算出した元aが有限群Gの単位元である場合に、検証判定部150が検証成功と判定するので、h=e・sである場合に検証成功と判定することができる。検証値算出部130において元aを算出する処理にかかる時間が、e・sを算出するのにかかる時間より短ければ、h=e・sであるか否かを判定する処理にかかる時間を短縮することができるという効果を奏する。
この実施の形態における整数分割部110は、上記処理装置(CPU911)を用いて、上記整数eの絶対値が上記位数pの平方根よりも小さく、かつ、上記整数eが上記位数pの平方根よりも小さいという条件を満たす整数eと整数eとを算出する。
この実施の形態における検証装置100によれば、整数eの絶対値が位数pの平方根よりも小さく、かつ、整数eが位数pの平方根よりも小さいという条件を満たす整数eと整数eと整数分割部110が算出するので、検証値算出部130において元aを算出する処理にかかる時間を短くすることができるという効果を奏する。
この実施の形態における検証装置100は、更に、データを記憶する記憶装置(RAM914、磁気ディスク装置920など)を有する。
上記整数分割部110は、第一剰余記憶部114と、第二剰余記憶部115と、初期値設定部113と、適合性判定部116と、第三剰余算出部117と、分割整数出力部129とを有する。
上記第一剰余記憶部114は、上記記憶装置(RAM914)を用いて、整数vを記憶する。
上記第二剰余記憶部115は、上記記憶装置(RAM914)を用いて、整数vを記憶する。
上記初期値設定部113は、上記処理装置(CPU911)を用いて、上記位数pを上記整数vとして上記第一剰余記憶部114に記憶させ、上記整数eを上記整数vとして上記第二剰余記憶部115に記憶させる。
上記適合性判定部116は、上記処理装置(CPU911)を用いて、上記第二剰余記憶部115が記憶した整数vが上記位数pの平方根よりも小さい場合に、出力条件を満たしたと判定する。
上記第三剰余算出部117は、上記処理装置(CPU911)を用いて、上記適合性判定部116が出力条件を満たしたと判定しない場合に、上記第一剰余記憶部114が記憶した整数vと、上記第二剰余記憶部115が記憶した整数vとに基づいて、上記整数vを上記整数vで割った余りを算出して、整数vとし、上記第二剰余記憶部115が記憶した整数vを上記整数vとして上記第一剰余記憶部114に記憶させ、算出した整数vを上記整数vとして上記第二剰余記憶部115に記憶させる。
上記分割整数出力部129は、上記処理装置(CPU911)を用いて、上記適合性判定部116が出力条件を満たしたと判定した場合に、上記第二剰余記憶部115が記憶した整数vを上記整数eとして出力する。
この実施の形態における検証装置100によれば、e・e≡e(mod p)、|e|<√p、0<e<√pという条件を満たす整数eを、短い時間で算出することができるという効果を奏する。
この実施の形態における整数分割部110は、更に、第一係数記憶部124と、第二係
数記憶部125と、商算出部126と、第三係数算出部127とを有する。
上記第一係数記憶部124は、上記記憶装置(RAM914)を用いて、整数tを記憶する。
上記第二係数記憶部125は、上記記憶装置(RAM914)を用いて、整数tを記憶する。
上記初期値設定部113は、更に、上記処理装置(CPU911)を用いて、上記整数tとして0を上記第一係数記憶部124に記憶させ、上記整数tとして1を上記第二係数記憶部125に記憶させる。
上記商算出部126は、上記処理装置(CPU911)を用いて、上記第一剰余記憶部114が記憶した整数vと、上記第二剰余記憶部115が記憶した整数vとに基づいて、上記整数vを上記整数vで割った商を超えない最大の整数を算出して、整数qとする。
上記第三係数算出部127は、上記処理装置(CPU911)を用いて、上記適合性判定部116が出力条件を満たしたと判定しない場合に、上記第一係数記憶部124が記憶した整数tと、上記第二係数記憶部125が記憶した整数tと、上記商算出部126が算出した整数qとに基づいて、上記整数tと上記整数qとの積を、上記整数tから減算した整数を算出して、整数tとし、上記第二係数記憶部125が記憶した整数tを上記整数tとして上記第一係数記憶部124に記憶させ、算出した整数tを上記整数tとして上記第二係数記憶部125に記憶させる。
上記分割整数出力部129は、更に、上記処理装置(CPU911)を用いて、上記適合性判定部116が出力条件を満たしたと判定した場合に、上記第二係数記憶部125が記憶した整数tを上記整数eとして出力する。
この実施の形態における検証装置100によれば、e・e≡e(mod p)、|e|<√p、0<e<√pという条件を満たす整数eを、短い時間で算出することができるという効果を奏する。
この実施の形態における検証値算出部130は、上記処理装置(CPU911)を用いて、Σ(n・P)(ただし、nは2以上の所定の整数。iは0以上k以下の整数。kは上記整数eの絶対値及び上記整数eをn進法で表記した場合の桁数の最大値。Pは、上記有限群Gの元で、P=e1,sgn・e1,i・h−e2,i・s。e1,s gnは1または−1。e1,i及びe2,iは0以上n−1以下の整数で、e=e1, sgn・Σ(n・e1,i)、e=Σ(n・e2,i)。)を算出して、上記有限群Gの元aとする。
この実施の形態における検証装置100によれば、検証値算出部130が元aを算出するのにかかる時間が、整数eの絶対値及び整数eをn進法で表記した場合の桁数kに比例するので、元aを算出するのにかかる時間を短縮することができるという効果を奏する。
この実施の形態における暗号文復号装置200は、データを記憶する記憶装置(RAM914や磁気ディスク装置920など)と、データを処理する処理装置(CPU911など)と、鍵記憶部210と、暗号文入力部220と、暗号文検証部230と、検証装置100と、復号文生成部260とを有する。
上記鍵記憶部210は、上記記憶装置を用いて、暗号文を復号する鍵を記憶する。
上記暗号文入力部220は、上記処理装置を用いて、暗号文を入力する。
上記暗号文検証部230は、上記処理装置を用いて、上記鍵記憶部210が記憶した鍵と、上記暗号文入力部220が入力した暗号文とに基づいて、上記検証装置100に入力する整数eと、上記有限群Gの元sと、上記有限群Gの元hとを算出する。
上記検証装置100は、上記暗号文検証部230が算出した整数eと、上記有限群Gの元sと、上記有限群Gの元hとを入力して、検証成功か否かを判定する。
上記復号文生成部260は、上記処理装置を用いて、上記検証装置100が検証成功と判定した場合に、上記暗号文入力部220が入力した暗号文を上記鍵記憶部210が記憶した鍵により復号して、復号文を生成する。
この実施の形態における暗号文復号装置200によれば、入力した暗号文の整合性を検証し、検証に成功した場合に復号文を生成するので、不正者に暗号文を解読する手がかりを与えるのを防ぐことができる。また、検証装置100がh=e・sであるか否かを判定することにより暗号文の整合性を検証するので、検証にかかる時間を短縮することができるという効果を奏する。
この実施の形態における検証装置100は、コンピュータを検証装置100として機能させるコンピュータプログラムを、コンピュータが実行することにより、実現することができる。
この実施の形態におけるコンピュータプログラムによれば、整数分割部110が算出した整数e及び整数eに基づいて検証値算出部130が算出した元aが有限群Gの単位元である場合に、検証判定部150が検証成功と判定するので、h=e・sである場合に検証成功と判定でき、検証値算出部130において元aを算出する処理にかかる時間が、e・sを算出するのにかかる時間より短ければ、h=e・sであるか否かを判定する処理にかかる時間を短縮できる検証装置100を実現することができるという効果を奏する。
この実施の形態における検証装置100が、整合性を検証する検証方法は、以下の工程を有する。
上記処理装置(CPU911)が、有限群Gの位数pと、整数eとを入力し、入力した位数pと整数eとに基づいて、e・e≡e(mod p)を満たす整数eと整数eとを算出する。
上記処理装置(CPU911)が、上記有限群Gの元sと、上記有限群Gの元hとを入力し、入力した元sと元hと、算出した整数eと整数eとに基づいて、上記有限群Gの元a(=e・h−e・s)を算出する。
上記処理装置(CPU911)が、算出した元aに基づいて、上記元aが上記有限群Gの単位元である場合に、検証成功と判定する。
この実施の形態における検証方法によれば、処理装置(CPU911)が、算出した整数e及び整数eに基づいて算出した元aが有限群Gの単位元である場合に、検証成功と判定するので、h=e・sである場合に検証成功と判定でき、元aを算出する処理にかかる時間が、e・sを算出するのにかかる時間より短ければ、h=e・sであるか否かを判定する処理にかかる時間を短縮できるという効果を奏する。
以上説明した暗号文復号装置200は、公開鍵暗号復号装置である。暗号文復号装置200は、整数の剰余類がなす群などの乗法群における指数べき乗算、または、(超)楕円曲線上の点がなす群などの加法群におけるスカラー倍算により、乗法群の元sをe回乗算した元sまたは加法群の元sをe回加算した元e・sが、既知の元hと一致するかどうか検証することにより、暗号文が正しいか否かを判定する暗号文正当性検証装置(検証装置100)を有する。
暗号文正当性検証装置(検証装置100)は、
指数部(整数e)を分割する装置(整数分割部110)と、
分割された指数(整数e及び整数e)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をした値(he1−se2またはe・h−e・s)を計算する装置(検証値算出部130)と、
その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
以上説明した整数分割部110は、指数(整数)eと、暗号で使用する乗法群または加法群の群位数pとを入力して、群位数pのビット長の半分のビット長を有する二つの整数e,e(ただし、e・e ≡ e (mod p))を計算する計算装置である。
検証装置100は、se2・h−e1=1(乗法的記述)またはe・s−e・h=0(加法的記述)を検証する。
以上説明した整数分割部110は、拡張ユークリッド互除法を計算することにより、指数部を分割する。
以上説明した整数分割部110は、二つの整数の繰り返し除算において、
除算をする整数v、及び除算される整数vが、それぞれ、前ステップの除算の剰余v、及び前ステップの除算をする整数vである計算装置(第三剰余算出部117)と、
各ステップの除算結果の剰余vがある一定の数(√p)以上、又はある一定の数(√p)以下であることを判定する計算装置(適合性判定部116)とを有する。
整数分割部110は、上記説明した手順のほか、例えば、以下の手順により、整数e及びeを算出してもよい。
最初に、整数分割部110は、CPU911を用いて、正の整数p、1<e<pである整数e、pの平方根√pを入力する。
次に、整数分割部110は、RAM914を用いて、u←1,v←p,u←0,v←eを初期値として記憶する。
次に、整数分割部110は、CPU911を用いて、v<√pかどうかをチェックする。
>√pならば、整数分割部110は、CPU911を用いて、q←v/v(端数切捨て)、v←v mod v、u←u−q・uを計算し、RAM914を用いて、v←v、v←v、u←u、u←uとして記憶する。その後、v<√pかどうかのチェックに戻り、v>√pなら、同じ計算を繰り返す。
<√pになったら、整数分割部110は、CPU911を用いて、e←(v−u・p)/vを計算し、e←vとする。
最後に、整数分割部110は、CPU911を用いて、e,eを出力する。
このような手順でも、e・e≡e(mod p)となり、e,eのビット長はpのビット長の約半分となる。
実施の形態2.
実施の形態2について、図10〜図15を用いて説明する。
図10は、この実施の形態におけるIDベース公開鍵暗号システム820Aの全体構成の一例を示すシステム構成図である。
IDベース公開鍵暗号システム820Aは、暗号文復号装置200Aを識別するメールアドレスなどの識別データを、暗号文復号装置200Aの公開鍵として利用する暗号通信システムである。暗号文復号装置200Aと公開鍵との対応関係を証明する必要がないので、公開鍵証明書や認証局などが必要ない。
IDベース公開鍵暗号システム820Aは、暗号パラメータ設定装置810A、鍵生成装置300A、暗号文生成装置400A、暗号文復号装置200Aを有する。
暗号パラメータ設定装置810Aは、IDベース公開鍵暗号システム820Aで利用される暗号パラメータを定める。暗号パラメータ設定装置810Aが定めた暗号パラメータは、IDベース公開鍵暗号システム820Aの利用者に公開される。暗号パラメータ設定装置810Aが定める暗号パラメータには、例えば、位数p、加法群G、加法群Gの元g、加法群G、加法群Gの元g、乗法群G、ペアリングe、ハッシュ関数H、ハッシュ関数H、ハッシュ関数H、ハッシュ関数Hなどがある。
位数pは、素数である。
加法群Gの位数は、pである。元gは、加法群Gの生成元である。
加法群Gの位数は、加法群Gと同じpである。元gは、加法群Gの生成元である。
乗法群Gの位数は、加法群G及び加法群Gと同じpである。
ペアリングeは、加法群Gの元と加法群Gの元との組を、乗法群Gの元(ペアリング値)へ写す写像である。ペアリングeは、双線形を有する。すなわち、すべてのu、v、a、bについて、e(a・u,b・v)=e(u,v)ab(ただし、uは加法群Gの元。vは加法群Gの元。a及びbは整数。)である。また、加法群Gの元gと加法群Gの元gとのペアリング値e(g,g)は、乗法群Gの単位元ではない。
ハッシュ関数Hは、任意の長さのビット列から、1以上p−1以下の整数を生成するハッシュ関数である。
ハッシュ関数Hは、乗法群Gの元から、所定の長さのビット列を生成するハッシュ関数である。
ハッシュ関数Hは、所定の長さのビット列から、1以上p−1以下の整数を生成するハッシュ関数である。
ハッシュ関数Hは、所定の長さのビット列から、所定の長さのビット列を生成するハッシュ関数である。
なお、これらの暗号パラメータがあらかじめ定められている場合には、暗号パラメータ設定装置810Aは、これらの暗号パラメータを定めなくてもよい。
また、暗号パラメータ設定装置810Aは、秘密乱数sと、秘密乱数sに基づいて生成した公開元Rとを生成する。暗号パラメータ設定装置810Aが生成した秘密乱数sは、鍵生成装置300Aに対して秘密裡に通知される。また、暗号パラメータ設定装置810Aが生成した公開元Rは、IDベース公開鍵暗号システム820Aの利用者に公開される。公開元Rには、秘密乱数sに関する情報が含まれているが、公開元Rから秘密乱数sを求めることが事実上不可能であるようになっている。このため、IDベース公開鍵暗号システム820Aの利用者は、公開元Rを用いて演算することにより、秘密情報を知ることなく、秘密情報を利用することができる。
鍵生成装置300Aは、暗号パラメータ設定装置810Aから通知された秘密乱数sを秘密裡に保持する。鍵生成装置300Aは、公開された暗号パラメータと、公開された暗号文復号装置200Aの識別データIDと、保持した秘密乱数sとに基づいて、暗号文復号装置200Aの秘密鍵DIDを生成する。鍵生成装置300Aが生成した秘密鍵DIDは、暗号文復号装置200Aに対して秘密裡に通知される。
暗号文生成装置400Aは、公開された暗号パラメータ、公開元R、暗号文復号装置200Aの識別データIDに基づいて、暗号文cと、共通鍵Kとを生成する。暗号文生成装置400Aは、生成した共通鍵Kにより、メッセージMを暗号化して、暗号化メッセージCMを生成する。暗号文生成装置400Aは、生成した暗号文cと暗号化メッセージCMとを、暗号文復号装置200Aに対して送信する。
暗号文復号装置200Aは、鍵生成装置300Aが生成した秘密鍵DIDを秘密裡に保持する。暗号文復号装置200Aは、暗号文生成装置400Aが送信した暗号文cと暗号化メッセージCMとを受信する。暗号文復号装置200Aは、公開された暗号パラメータに基づいて、保持した秘密鍵DIDにより、受信した暗号文cを復号し、暗号文生成装置400Aと同じ共通鍵Kを生成する。暗号文復号装置200Aは、生成した共通鍵Kにより、暗号化メッセージCMを復号して、メッセージMと同じメッセージM’を生成する。
なお、暗号パラメータ設定装置810A、鍵生成装置300A、暗号文生成装置400A、暗号文復号装置200Aの外観、ハードウェア資源は、実施の形態1で説明した暗号文復号装置200の外観、ハードウェア資源と同様である。
図11は、この実施の形態における暗号パラメータ設定装置810Aの一部の機能ブロックの構成の一例を示すブロック構成図である。
暗号パラメータ設定装置810Aは、暗号パラメータ記憶部819A、公開元生成部811A、秘密乱数出力部814A、公開元出力部815Aを有する。
暗号パラメータ記憶部819Aは、磁気ディスク装置920を用いて、公開した暗号パラメータを表わすデータを記憶する。
公開元生成部811Aは、暗号パラメータ記憶部819Aが記憶した暗号パラメータに基づいて、秘密乱数sと、公開元Rとを生成する。
公開元生成部811Aは、秘密乱数生成部812A、公開元算出部813Aを有する。
秘密乱数生成部812Aは、CPU911を用いて、暗号パラメータ記憶部819Aが記憶した暗号パラメータのうち位数pを表わすデータを入力する。秘密乱数生成部812Aは、CPU911を用いて、入力したデータが表わす位数pに基づいて、1以上p−1以下の整数をランダムに生成して、秘密乱数sとする。秘密乱数生成部812Aは、RAM914を用いて、生成した秘密乱数sを表わすデータを記憶する。
公開元算出部813Aは、CPU911を用いて、暗号パラメータ記憶部819Aが記憶した暗号パラメータのうち加法群Gと元gとを表わすデータと、秘密乱数生成部812Aが記憶した秘密乱数sを表わすデータとを入力する。公開元算出部813Aは、CPU911を用いて、入力したデータが表わす加法群Gと元gと秘密乱数sとに基づいて、加法群Gにおける演算により、元gをs回加算した元を算出して、公開元Rとする。公開元算出部813Aは、RAM914を用いて、算出した公開元Rを表わすデータを記憶する。
秘密乱数出力部814Aは、CPU911を用いて、秘密乱数生成部812Aが記憶した秘密乱数sを表わすデータを入力する。秘密乱数出力部814Aは、CPU911を用いて、入力した秘密乱数sを表わすデータを出力する。
秘密乱数出力部814Aが出力した秘密乱数sは、鍵生成装置300Aに対して秘密裡に通知される。
公開元出力部815Aは、CPU911を用いて、公開元算出部813Aが記憶した公開元Rを表わすデータを入力する。公開元出力部815Aは、CPU911を用いて、入力した公開元Rを表わすデータを出力する。
公開元出力部815Aが出力した公開元Rは、IDベース公開鍵暗号システム820Aの利用者に公開される。
図12は、この実施の形態における鍵生成装置300Aの機能ブロックの構成の一例を示すブロック構成図である。
鍵生成装置300Aは、暗号パラメータ記憶部390A、秘密乱数記憶部330A、識別入力部340A、秘密鍵生成部350A、秘密鍵出力部360Aを有する。
暗号パラメータ記憶部390Aは、磁気ディスク装置920を用いて、公開された暗号パラメータを表わすデータを、あらかじめ記憶している。
秘密乱数記憶部330Aは、耐タンパ性のある記憶装置を用いて、暗号パラメータ設定装置810Aから通知された秘密乱数sを表わすデータを秘密裡に記憶する。
識別入力部340Aは、CPU911を用いて、秘密鍵を生成すべき暗号文復号装置200Aについて、暗号文復号装置200Aを識別する識別データである任意の長さのビット列IDを入力する。ビット列IDは、例えば、暗号文復号装置200Aのメールアドレスである文字列を表わすデータである。識別入力部340Aは、RAM914を用いて、入力したビット列IDを記憶する。
秘密鍵生成部350Aは、暗号パラメータ記憶部390Aが記憶した暗号パラメータと、秘密乱数記憶部330Aが記憶した秘密乱数sと、識別入力部340Aが入力したビット列IDとに基づいて、秘密鍵DIDを生成する。
秘密鍵生成部350Aは、ハッシュ値算出部351A、整数加算部352A、逆数算出部353A、秘密鍵算出部354Aを有する。
ハッシュ値算出部351Aは、CPU911を用いて、暗号パラメータ記憶部390Aが記憶した暗号パラメータのうちハッシュ関数Hを表わすデータと、識別入力部340Aが記憶したビット列IDとを入力する。ハッシュ値算出部351Aは、CPU911を用いて、入力したデータが表わすハッシュ関数Hと、入力したビット列IDとに基づいて、ビット列IDをハッシュ関数Hによりハッシュしたハッシュ値H(ID)を算出する。なお、ハッシュ値H(ID)は、1以上p−1以下の整数である。ハッシュ値算出部351Aは、RAM914を用いて、算出したハッシュ値H(ID)を表わすデータを記憶する。
整数加算部352Aは、CPU911を用いて、暗号パラメータ記憶部390Aが記憶した暗号パラメータのうち位数pを表わすデータと、秘密乱数記憶部330Aが記憶した秘密乱数sを表わすデータと、ハッシュ値算出部351Aが記憶したハッシュ値H(ID)を表わすデータとを入力する。整数加算部352Aは、CPU911を用いて、入力したデータが表わす位数pと秘密乱数sとハッシュ値H(ID)とに基づいて、秘密乱数sとハッシュ値H(ID)との和を位数pで割った余りである整数s+H(ID)を算出する。整数加算部352Aは、RAM914を用いて、算出した整数s+H(ID)を表わすデータを記憶する。
逆数算出部353Aは、CPU911を用いて、暗号パラメータ記憶部390Aが記憶した暗号パラメータのうち位数pを表わすデータと、整数加算部352Aが記憶した整数s+H(ID)を表わすデータとを入力する。逆数算出部353Aは、CPU911を用いて、入力したデータが表わす位数pと整数s+H(ID)とに基づいて、整数s+H(ID)との積を位数pで割った余りが1になる整数1/[s+H(ID)]を算出する。逆数算出部353Aは、RAM914を用いて、算出した整数1/[s+H(ID)]を表わすデータを記憶する。
秘密鍵算出部354Aは、CPU911を用いて、暗号パラメータ記憶部390Aが記憶した暗号パラメータのうち加法群Gと元gとを表わすデータと、逆数算出部353Aが算出した整数1/[s+H(ID)]を表わすデータとを入力する。秘密鍵算出部354Aは、CPU911を用いて、入力したデータが表わす加法群Gと元gと整数1/[s+H(ID)]とに基づいて、加法群Gにおける演算により、元gを1/[s+H(ID)]回加算した元を算出して、秘密鍵DIDとする。秘密鍵算出部354Aは、RAM914を用いて、算出した秘密鍵DIDを表わすデータを記憶する。
秘密鍵出力部360Aは、CPU911を用いて、秘密鍵算出部354Aが記憶した秘密鍵DIDを表わすデータを入力する。秘密鍵出力部360Aは、CPU911を用いて、入力した秘密鍵DIDを表わすデータを出力する。
秘密鍵出力部360Aが出力した秘密鍵DIDは、暗号文復号装置200Aに対して秘密裡に通知される。
図13は、この実施の形態における暗号文生成装置400Aの機能ブロックの構成の一例を示すブロック構成図である。
暗号文生成装置400Aは、暗号パラメータ記憶部490A、識別記憶部410A、共通鍵生成部420A、共通鍵記憶部430A、メッセージ入力部440A、メッセージ暗号化部450A、暗号化メッセージ出力部460A、暗号文出力部470Aを有する。
暗号パラメータ記憶部490Aは、磁気ディスク装置920を用いて、公開された暗号パラメータ(公開元Rを含む)を表わすデータを、あらかじめ記憶している。
識別記憶部410Aは、磁気ディスク装置920を用いて、暗号文の送信相手である暗号文復号装置200Aの識別データであるビット列IDを記憶している。
共通鍵生成部420Aは、暗号パラメータ記憶部490Aが記憶した暗号パラメータと、識別記憶部410Aが記憶したビット列IDとに基づいて、共通鍵Kと、共通鍵Kを暗号文復号装置200Aに通知するための暗号文とを生成する。
共通鍵生成部420Aは、秘密ビット列生成部421A、秘密整数算出部422A、識別元算出部423A、暗号元算出部424A、秘密ペアリング値算出部425A、暗号ビット列算出部426A、共通鍵算出部427Aを有する。
秘密ビット列生成部421Aは、CPU911を用いて、所定の長さのビット列mをランダムに生成する。秘密ビット列生成部421Aは、RAM914を用いて、生成したビット列mを記憶する。
秘密整数算出部422Aは、CPU911を用いて、暗号パラメータ記憶部490Aが記憶した暗号パラメータのうちハッシュ関数Hを表わすデータと、秘密ビット列生成部421Aが記憶したビット列mとを入力する。秘密整数算出部422Aは、CPU911を用いて、入力したデータが表わすハッシュ関数Hと、入力したビット列mとに基づいて、ビット列mをハッシュ関数Hによりハッシュしたハッシュ値rを算出する。ハッシュ値rは、1以上p−1以下の整数である。秘密整数算出部422Aは、RAM914を用いて、算出したハッシュ値rを表わすデータを記憶する。
識別元算出部423Aは、CPU911を用いて、暗号パラメータ記憶部490Aが記憶した暗号パラメータのうちハッシュ関数Hと加法群Gと元gと公開元Rとを表わすデータと、識別記憶部410Aが記憶したビット列IDとを入力する。識別元算出部423Aは、CPU911を用いて、入力したデータが表わすハッシュ関数Hと、入力したビット列IDとに基づいて、ビット列IDをハッシュ関数Hによりハッシュしたハッシュ値H(ID)を算出する。ハッシュ値H(ID)は、1以上p−1以下の整数である。識別元算出部423Aは、CPU911を用いて、入力したデータが表わす加法群Gと元gと、算出したハッシュ値H(ID)とに基づいて、加法群Gにおける演算により、元gをH(ID)回加算した元H(ID)・gを算出する。識別元算出部423Aは、CPU911を用いて、入力したデータが表わす加法群Gと公開元Rと、算出した元H(ID)・gとに基づいて、加法群Gにおける演算により、公開元Rと元H(ID)・gとを加算した元を算出し、元Qとする。識別元算出部423Aは、RAM914を用いて、算出した元Qを表わすデータを記憶する。
識別元算出部423Aが算出する元Qは、R=s・gだから、
Figure 2009104260
暗号元算出部424Aは、CPU911を用いて、暗号パラメータ記憶部490Aが記憶した暗号パラメータのうち加法群Gを表わすデータと、秘密整数算出部422Aが記憶したハッシュ値rを表わすデータと、識別元算出部423Aが記憶した元Qを表わすデータとを入力する。暗号元算出部424Aは、CPU911を用いて、入力したデータが表わす加法群Gとハッシュ値rと元Qとに基づいて、加法群Gにおける演算により、元Qをr回加算した元を算出して、元Uとする。暗号元算出部424Aは、RAM914を用いて、算出した元Uを表わすデータを記憶する。
秘密ペアリング値算出部425Aは、CPU911を用いて、暗号パラメータ記憶部490Aが記憶した暗号パラメータのうち元gと元gとペアリングeと乗法群Gとを表わすデータと、秘密整数算出部422Aが記憶したハッシュ値rを表わすデータとを入力する。秘密ペアリング値算出部425Aは、CPU911を用いて、入力したデータが表わす元gと元gとペアリングeとに基づいて、元gと元gとペアリング値e(g,g)を算出する。ペアリング値e(g,g)は、乗法群Gの元である。なお、秘密ペアリング値算出部425Aは、あらかじめ、ペアリング値e(g,g)を算出し、磁気ディスク装置920を用いて、算出したペアリング値e(g,g)を表わすデータを記憶しておいてもよい。秘密ペアリング値算出部425Aは、CPU911を用いて、入力したデータが表わすハッシュ値rと、算出したペアリング値e(g,g)とに基づいて、乗法群Gにおける演算により、ペアリング値e(g,g)をr回乗算した元を算出し、元αとする。秘密ペアリング値算出部425Aは、RAM914を用いて、算出した元αを表わすデータを記憶する。
暗号ビット列算出部426Aは、CPU911を用いて、暗号パラメータ記憶部490Aが記憶した暗号パラメータのうちハッシュ関数Hを表わすデータと、秘密ビット列生成部421Aが記憶したビット列mと、秘密ペアリング値算出部425Aが記憶した元αを表わすデータとを入力する。暗号ビット列算出部426Aは、CPU911を用いて、入力したデータが表わすハッシュ関数Hと元αとに基づいて、元αをハッシュ関数Hによりハッシュしたハッシュ値H(α)を算出する。ハッシュ値H(α)は、所定の長さのビット列である。暗号ビット列算出部426Aは、CPU911を用いて、入力したビット列mと、算出したハッシュ値H(α)とに基づいて、ビット列mとハッシュ値H(α)との間のビットごとの排他的論理和をとり、ビット列Vとする。暗号ビット列算出部426Aは、RAM914を用いて、算出したビット列Vを記憶する。
共通鍵算出部427Aは、CPU911を用いて、暗号パラメータ記憶部490Aが記憶した暗号パラメータのうちハッシュ関数Hを表わすデータと、秘密ビット列生成部421Aが記憶したビット列mとを入力する。共通鍵算出部427Aは、CPU911を用いて、入力したデータが表わすハッシュ関数Hと、入力したビット列mとに基づいて、ビット列mをハッシュ関数Hによりハッシュしたハッシュ値を算出し、共通鍵Kとする。共通鍵Kは、所定の長さのビット列である。共通鍵算出部427Aは、RAM914を用いて、算出した共通鍵Kを記憶する。
共通鍵記憶部430Aは、CPU911を用いて、共通鍵算出部427Aが記憶した共通鍵Kを入力する。共通鍵記憶部430Aは、RAM914を用いて、入力した共通鍵Kを記憶する。
暗号文出力部470Aは、CPU911を用いて、暗号元算出部424Aが記憶した元Uを表わすデータと、暗号ビット列算出部426Aが記憶したビット列Vとを入力する。暗号文出力部470Aは、CPU911を用いて、入力した元Uを表わすデータとビット列Vとを含むデータを生成し、暗号文cとして出力する。
メッセージ入力部440Aは、CPU911を用いて、暗号文復号装置200Aに対して送信しようとするメッセージMを入力する。メッセージ入力部440Aは、磁気ディスク装置920を用いて、入力したメッセージMを記憶する。
メッセージ暗号化部450Aは、CPU911を用いて、共通鍵記憶部430Aが記憶した共通鍵Kと、メッセージ入力部440Aが記憶したメッセージMとを入力する。メッセージ暗号化部450Aは、CPU911を用いて、入力したメッセージMと共通鍵Kとに基づいて、共通鍵KによりメッセージMを暗号化して、暗号化メッセージCMとする。メッセージ暗号化部450Aは、磁気ディスク装置920を用いて、生成した暗号化メッセージCMを記憶する。
暗号化メッセージ出力部460Aは、CPU911を用いて、メッセージ暗号化部450Aが記憶した暗号化メッセージCMを入力する。暗号化メッセージ出力部460Aは、CPU911を用いて、入力した暗号化メッセージCMを出力する。
暗号文出力部470Aが出力した暗号文cと、暗号化メッセージ出力部460Aが出力した暗号化メッセージCMとは、暗号文復号装置200Aに対して送信される。
図14は、この実施の形態における暗号文復号装置200Aの機能ブロックの構成の一例を示すブロック構成図である。
暗号文復号装置200Aは、暗号パラメータ記憶部290A、識別記憶部241A、識別元算出部242A、識別元記憶部243A、鍵記憶部210A、暗号文入力部220A、暗号文検証部230A、検証装置100A、復号文生成部260A、共通鍵記憶部270A、暗号化メッセージ入力部281A、メッセージ復号部282A、復号メッセージ出力部283Aを有する。
暗号パラメータ記憶部290Aは、磁気ディスク装置920を用いて、公開された暗号パラメータ(公開元Rを含む)を表わすデータを、あらかじめ記憶している。
識別記憶部241Aは、磁気ディスク装置920を用いて、暗号文復号装置200A自身を識別するビット列IDを記憶している。
識別元算出部242Aは、CPU911を用いて、暗号パラメータ記憶部290Aが記憶した暗号パラメータのうちハッシュ関数Hと加法群Gと元gと公開元Rとを表わすデータと、識別記憶部241Aが記憶したビット列IDとを入力する。識別元算出部242Aは、CPU911を用いて、入力したデータが表わすハッシュ関数Hと、入力したビット列IDとに基づいて、ビット列IDをハッシュ関数Hによりハッシュしたハッシュ値H(ID)を算出する。ハッシュ値H(ID)は、1以上p−1以下の整数である。識別元算出部242Aは、CPU911を用いて、入力したデータが表わす加法群Gと元gと、算出したハッシュ値H(ID)とに基づいて、加法群Gにおける演算により、元gをH(ID)回加算した元H(ID)・gを算出する。識別元算出部242Aは、CPU911を用いて、入力したデータが表わす加法群Gと公開元Rと、算出した元H(ID)・gとに基づいて、加法群Gにおける演算により、公開元Rと元H(ID)・gとを加算した元を算出して、元Qとする。識別元算出部242Aは、RAM914を用いて、算出した元Qを表わすデータを記憶する。
識別元記憶部243Aは、CPU911を用いて、識別元算出部242Aが記憶した元Qを表わすデータを入力する。識別元記憶部243Aは、磁気ディスク装置920を用いて、入力した元Qを表わすデータを記憶する。
暗号文復号装置200Aにとって、自身を識別するビット列IDは一定であるから、元Qの値も一定である。したがって、暗号文復号装置200Aが暗号文cを入力するたびに、元Qを計算し直す必要はなく、暗号文cを入力する前に、識別元算出部242Aが元Qを算出して、識別元記憶部243Aが記憶しておけば、暗号文cを入力したときの計算量を減らすことができる。
鍵記憶部210Aは、耐タンパ性のある記憶装置を用いて、あらかじめ鍵生成装置300Aが生成した秘密鍵DIDを表わすデータを秘密裡に記憶している。
暗号文入力部220Aは、CPU911を用いて、暗号文生成装置400Aから受信した暗号文cを入力する。暗号文入力部220Aは、CPU911を用いて、入力した暗号文cから、元Uとビット列Vとを表わすデータを取得する。暗号文入力部220Aは、RAM914を用いて、取得した元Uとビット列Vとを表わすデータを記憶する。
暗号文検証部230Aは、暗号パラメータ記憶部290Aが記憶した暗号パラメータと、鍵記憶部210が記憶した秘密鍵DIDと、暗号文入力部220Aが入力した暗号文cが表わす元Uとビット列Vとに基づいて、検証装置100Aに入力するデータを生成する。
暗号文検証部230Aは、ペアリング値算出部231A、ビット列算出部232A、整数算出部233Aを有する。
ペアリング値算出部231Aは、CPU911を用いて、暗号パラメータ記憶部290Aが記憶した暗号パラメータのうちペアリングeを表わすデータと、鍵記憶部210Aが記憶した秘密鍵DIDを表わすデータと、暗号文入力部220が記憶した元Uを表わすデータとを入力する。ペアリング値算出部231Aは、CPU911を用いて、入力したデータが表わすペアリングeと元Uと秘密鍵DIDとに基づいて、ペアリングeにより、元Uと秘密鍵DIDとのペアリング値を算出して、ペアリング値αとする。ペアリング値αは、乗法群Gの元である。ペアリング値算出部231Aは、RAM914を用いて、算出したペアリング値αを表わすデータを記憶する。
ペアリング値算出部231Aが算出するペアリング値αは、ペアリングeの双線形より、
Figure 2009104260
すなわち、ペアリング値算出部231Aが算出するペアリング値αは、暗号文生成装置400Aの秘密ペアリング値算出部425Aが算出した乗法群Gの元αと等しい。
ビット列算出部232Aは、CPU911を用いて、暗号パラメータ記憶部290Aが記憶した暗号パラメータのうちハッシュ関数Hを表わすデータと、暗号文入力部220が記憶したビット列Vと、ペアリング値算出部231Aが記憶したペアリング値αを表わすデータとを入力する。ビット列算出部232Aは、CPU911を用いて、入力したデータが表わすハッシュ関数Hとペアリング値αとに基づいて、ハッシュ関数Hによりペアリング値αをハッシュしたハッシュ値H(α)を算出する。ハッシュ値H(α)は、所定の長さのビット列である。ビット列算出部232Aは、CPU911を用いて、入力したビット列Vと、算出したハッシュ値H(α)とに基づいて、ビット列Vとハッシュ値H(α)との間のビットごとの排他的論理和をとり、ビット列mとする。ビット列算出部232Aは、RAM914を用いて、算出したビット列mを記憶する。
ペアリング値算出部231Aが算出したペアリング値αが暗号文生成装置400Aの秘密ペアリング値算出部425Aが算出した乗法群Gの元αと等しいので、ビット列算出部232Aが算出するビット列mは、暗号文生成装置400Aの秘密ビット列生成部421Aが生成したビット列mと等しい。
整数算出部233Aは、CPU911を用いて、暗号パラメータ記憶部290Aが記憶した暗号パラメータのうちハッシュ関数Hを表わすデータと、ビット列算出部232Aが記憶したビット列mとを入力する。整数算出部233Aは、CPU911を用いて、入力したデータが表わすハッシュ関数Hと、入力したビット列mとに基づいて、ハッシュ関数Hによりビット列mをハッシュしたハッシュ値を算出し、ハッシュ値rとする。ハッシュ値rは、1以上p−1以下の整数である。整数算出部233Aは、RAM914を用いて、算出したハッシュ値rを表わすデータを記憶する。
ビット列算出部232Aが算出したビット列mが暗号文生成装置400Aの秘密ビット列生成部421Aが生成したビット列mと等しいので、整数算出部233Aが算出したハッシュ値rは、暗号文生成装置400Aの秘密整数算出部422Aが算出したハッシュ値rと等しい。
したがって、暗号文入力部220Aが入力した暗号文cが正当な暗号文であれば、U=r・Qが成り立つ。
検証装置100Aは、U=r・Qであるか否かを判断し、U=r・Qである場合に、検証成功と判定する。
検証装置100Aは、実施の形態1で説明した検証装置100と同様の装置である。
検証装置100Aは、CPU911を用いて、暗号パラメータ記憶部290Aが記憶した暗号パラメータのうち位数pを表わすデータを、実施の形態1で説明した位数pを表わすデータとして入力する。
検証装置100Aは、CPU911を用いて、整数算出部233Aが記憶したハッシュ値rを表わすデータを、実施の形態1で説明した整数eを表わすデータとして入力する。
検証装置100Aは、CPU911を用いて、暗号文入力部220が記憶した元Uを表わすデータを、実施の形態1で説明した元hを表わすデータとして入力する。
検証装置100Aは、CPU911を用いて、識別元記憶部243Aが記憶した元Qを表わすデータを、実施の形態1で説明した元sを表わすデータとして入力する。
検証装置100Aは、CPU911を用いて、入力したデータが表わす位数pとハッシュ値rとに基づいて、e・r≡e(mod p)、|e|<√p、0<e<√pを満たす整数e及び整数eを算出する。検証装置100Aは、CPU911を用いて、入力したデータが表わす元Uと元Qと、算出した整数eと整数eとに基づいて、加法群Gにおける演算により、加法群Gの元a=e・U−e・Qを算出する。検証装置100Aは、CPU911を用いて、算出した元aに基づいて、元aが加法群Gの単位元であるか否かを判定する。検証装置100Aは、CPU911を用いて、元aが加法群Gの単位元である場合、「検証成功」と判定し、元aが加法群Gの単位元でない場合、「検証失敗」と判定する。
検証装置100Aは、CPU911を用いて、検証結果を表わすデータを出力する。
復号文生成部260Aは、CPU911を用いて、検証装置100Aが出力した検証結果を表わすデータを入力する。復号文生成部260Aは、入力したデータが表わす検証結果が「検証成功」である場合、CPU911を用いて、共通鍵Kを生成する。復号文生成部260Aは、検証結果が「検証失敗」である場合、共通鍵Kを生成しない。なお、検証結果が「検証失敗」である場合、復号文生成部260Aは、不正者に手がかりを与えないランダムな共通鍵Kを生成してもよい。
判定結果が「検証成功」である場合、復号文生成部260Aは、CPU911を用いて、暗号パラメータ記憶部290Aが記憶した暗号パラメータのうちハッシュ関数Hを表わすデータと、ビット列算出部232Aが記憶したビット列mとを入力する。復号文生成部260Aは、CPU911を用いて、入力したデータが表わすハッシュ関数Hと、入力したビット列mとに基づいて、ハッシュ関数Hにより、ビット列mをハッシュしたハッシュ値を算出して、共通鍵Kとする。共通鍵Kは、所定の長さのビット列である。復号文生成部260Aは、RAM914を用いて、算出した共通鍵Kを記憶する。
暗号文入力部220Aが入力した暗号文cが正当な暗号文であれば、ビット列算出部232Aが算出したビット列mが、暗号文生成装置400Aの秘密ビット列生成部421Aが生成したビット列mと等しいので、復号文生成部260Aが算出する共通鍵Kは、暗号文生成装置400Aの共通鍵算出部427Aが算出した共通鍵Kと等しい。
したがって、暗号文生成装置400Aと暗号文復号装置200Aとが同じ共通鍵Kを共有できる。
共通鍵記憶部270Aは、CPU911を用いて、復号文生成部260Aが記憶した共通鍵Kを入力する。共通鍵記憶部270Aは、RAM914を用いて、入力した共通鍵Kを記憶する。
暗号化メッセージ入力部281Aは、CPU911を用いて、暗号文生成装置400Aから受信した暗号化メッセージCMを入力する。暗号化メッセージ入力部281Aは、磁気ディスク装置920を用いて、入力した暗号化メッセージCMを記憶する。
メッセージ復号部282Aは、CPU911を用いて、共通鍵記憶部270Aが記憶した共通鍵Kと、暗号化メッセージ入力部281Aが記憶した暗号化メッセージCMとを入力する。メッセージ復号部282Aは、CPU911を用いて、入力した共通鍵Kにより、入力した暗号化メッセージCMを復号して、メッセージM’を生成する。メッセージ復号部282Aは、磁気ディスク装置920を用いて、生成したメッセージM’を記憶する。
暗号文生成装置400Aと暗号文復号装置200Aとが同じ共通鍵Kを共有しているので、メッセージ復号部282Aが生成するメッセージM’は、暗号文生成装置400Aのメッセージ入力部440Aが入力したメッセージMと同じになる。
復号メッセージ出力部283Aは、CPU911を用いて、メッセージ復号部282Aが記憶したメッセージM’を入力する。復号メッセージ出力部283Aは、CPU911を用いて、入力したメッセージM’を出力する。
図15は、この実施の形態における暗号文復号装置200Aが暗号文cを復号する暗号文復号処理の流れの一例を示すフローチャート図である。
ペアリング値算出工程S731Aにおいて、ペアリング値算出部231Aは、CPU911を用いて、暗号文入力部220Aが入力した元Uと、鍵記憶部210Aが記憶した秘密鍵DIDとに基づいて、ペアリングeにより、元Uと秘密鍵DIDとのペアリング値を算出し、ペアリング値αとする。
ビット列算出工程S732Aにおいて、ビット列算出部232Aは、CPU911を用いて、ペアリング値算出工程S731Aでペアリング値算出部231Aが算出したペアリング値αに基づいて、ハッシュ関数Hにより、ペアリング値αをハッシュしたハッシュ値H(α)を算出する。ビット列算出部232Aは、CPU911を用いて、暗号文入力部220Aが入力したビット列Vと、算出したハッシュ値H(α)とに基づいて、ビット列Vとハッシュ値H(α)との間のビットごとの排他的論理和をとり、ビット列mとする。
整数算出工程S733Aにおいて、整数算出部233Aは、CPU911を用いて、ビット列算出工程S732Aでビット列算出部232Aが算出したビット列mに基づいて、ハッシュ関数Hにより、ビット列mをハッシュしたハッシュ値を算出し、ハッシュ値rとする。
暗号文検証工程S734Aにおいて、検証装置100Aは、CPU911を用いて、識別元記憶部243Aが記憶した元Qと、暗号文入力部220Aが入力した元Uと、整数算出工程S733Aで整数算出部233Aが算出したハッシュ値rとに基づいて、U=r・Qであるかを検証する。
U=r・Qである場合、復号文生成工程S735Aへ進む。
U≠r・Qである場合、暗号文復号処理を終了する。
復号文生成工程S735Aにおいて、復号文生成部260Aは、CPU911を用いて、ビット列算出工程S732Aでビット列算出部232Aが算出したビット列mに基づいて、ハッシュ関数Hにより、ビット列mをハッシュしたハッシュ値を算出し、共通鍵Kとする。
その後、暗号文復号処理を終了し、算出した共通鍵Kにより、暗号化メッセージCMを復号する。
不正に暗号を解読しようとする不正者に対して、暗号を解読する手がかりを与えないためには、暗号文復号装置200Aが、暗号文に整合性があるかを検証することが必要である。
この実施の形態における暗号文復号装置200Aは、暗号文の整合性を検証するため、検証装置100AがU=r・Qであるか否かを判定する。
実施の形態1で説明したように、検証装置100Aは、U=r・Qであるか否かを高速に検証することができる。
したがって、暗号文復号装置200Aは、高速に暗号文を復号することができる。
この実施の形態における暗号文復号装置200Aは、データを記憶する記憶装置(RAM914、磁気ディスク装置920など)と、データを処理する処理装置(CPU911)と、鍵記憶部210Aと、暗号文入力部220Aと、暗号文検証部230Aと、検証装置100Aと、復号文生成部260Aとを有する。
上記鍵記憶部210は、上記記憶装置を用いて、暗号文を復号する鍵(秘密鍵DID)を記憶する。
上記暗号文入力部220Aは、上記処理装置(CPU911)を用いて、暗号文cを入力する。
上記暗号文検証部230は、上記処理装置(CPU911)を用いて、上記鍵記憶部210Aが記憶した鍵(秘密鍵DID)と、上記暗号文入力部220Aが入力した暗号文cとに基づいて、上記検証装置100Aに入力する整数e(ハッシュ値r)と、上記有限群G(加法群G)の元s(元Q)と、上記有限群G(加法群G)の元h(元U)とを算出する。
上記検証装置100Aは、上記暗号文検証部230Aが算出した整数e(ハッシュ値r)と、上記有限群G(加法群G)の元s(元Q)と、上記有限群G(加法群G)の元h(元U)とを入力して、検証成功か否かを判定する。
上記復号文生成部260Aは、上記処理装置(CPU911)を用いて、上記検証装置100Aが検証成功と判定した場合に、上記暗号文入力部220Aが入力した暗号文cを上記鍵記憶部210Aが記憶した鍵(秘密鍵DID)により復号して、復号文(共通鍵K)を生成する。
この実施の形態における暗号文復号装置200Aによれば、検証装置100Aが暗号文の整合性を検証して検証成功と判定した場合に、復号文生成部260Aが復号文を生成するので、暗号文復号装置200Aに不正な暗号文を入力して、復号結果から、暗号を解読する手がかりを得ようとする不正者に対して、暗号を解読する手がかりを与えるのを防ぐことができる。また、検証装置100Aが暗号文の整合性を検証する処理にかかる時間を短縮できるので、暗号文復号装置200Aが暗号文を復号する処理全体にかかる時間を短縮することができるという効果を奏する。
この実施の形態における暗号文復号装置200Aは、更に、暗号パラメータ記憶部290Aと、識別記憶部241Aと、識別元算出部242Aと、識別元記憶部243Aとを有する。
上記暗号パラメータ記憶部290Aは、上記記憶装置(磁気ディスク装置920)を用いて、上記有限群G(加法群G)の位数pと、上記有限群G(加法群G)の生成元gと、上記有限群G(加法群G)の元Rとを記憶する。
上記識別記憶部241Aは、上記記憶装置(磁気ディスク装置920)を用いて、上記暗号文復号装置200Aを識別するビット列IDを記憶する。
上記識別元算出部242Aは、上記処理装置を用いて、上記識別記憶部241Aが記憶したビット列IDに基づいて、所定のハッシュ関数Hにより上記ビット列IDをハッシュしたハッシュ値を算出して、整数(ハッシュ値)H(ID)とし、上記暗号パラメータ記憶部290Aが記憶した生成元gと、上記暗号パラメータ記憶部290Aが記憶した元Rと、算出した整数(ハッシュ値)H(ID)とに基づいて、上記生成元gを整数(ハッシュ値)H(ID)倍した元と、上記元Rとを加算して、上記有限群G(加法群G)の元Q(=R+H(ID)・g)とする。
上記識別元記憶部243Aは、上記記憶装置(磁気ディスク装置920)を用いて、上記識別元算出部242Aが算出した元Qを記憶する。
上記鍵記憶部210Aは、上記記憶装置を用いて、有限群(加法群)Gの元DIDを記憶する。
上記暗号文入力部220Aは、上記処理装置(CPU911)を用いて、上記有限群G(加法群G)の元Uと、ビット列Vとを上記暗号文cとして入力する。
上記暗号文検証部230Aは、ペアリング値算出部231Aと、ビット列算出部232Aと、整数算出部233Aとを有する。
上記ペアリング値算出部231Aは、上記処理装置(CPU911)を用いて、上記暗号文入力部220Aが入力した元Uと、上記鍵記憶部210Aが記憶した元DIDとに基づいて、所定のペアリング関数eにより上記元Uと上記元DIDとのペアリング値を算出して、ペアリング値α(=e(U,DID))とする。
上記ビット列算出部232Aは、上記処理装置(CPU911)を用いて、上記ペアリング値算出部231Aが算出したペアリング値αに基づいて、所定のハッシュ関数Hにより上記ペアリング値αをハッシュしたハッシュ値を算出して、ビット列(ハッシュ値)H(α)とし、上記暗号文入力部220Aが入力したビット列Vと、算出したビット列(ハッシュ値)H(α)とに基づいて、上記ビット列Vと上記ビット列(ハッシュ値)H(α)との排他的論理和を取って、ビット列m(=V XOR H(α))とする。
上記整数算出部233Aは、上記処理装置(CPU911)を用いて、上記ビット列算出部232Aが算出したビット列mに基づいて、所定のハッシュ関数Hにより上記ビット列mをハッシュしたハッシュ値を算出して、整数(ハッシュ値)r(=H(m))とする。
上記検証装置100Aは、上記暗号パラメータ記憶部290Aが記憶した位数pと、上記整数eとして上記整数算出部233Aが算出した整数(ハッシュ値)rと、上記元sとして上記識別元記憶部243Aが記憶した元Qと、上記元hとして上記暗号文入力部220Aが入力した元Uとを入力して、検証成功か否かを判定する。
上記復号文生成部260Aは、上記処理装置(CPU911)を用いて、上記検証装置100Aが検証成功と判定した場合に、上記ビット列算出部232Aが算出したビット列mに基づいて、所定のハッシュ関数Hにより上記ビット列mをハッシュしたハッシュ値を算出して、共通鍵K(=H(m))とし、算出した共通鍵Kを上記復号文として出力する。
この実施の形態における暗号文復号装置200Aによれば、検証装置100AがU=r・Qであるかを検証して検証成功と判定した場合に、復号文生成部260Aが復号文を生成するので、不正者に対して、暗号を解読する手がかりを与えるのを防ぐことができる。また、検証装置100AがU=r・Qであるかを検証する処理にかかる時間を短縮できるので、暗号文復号装置200Aが暗号文を復号する処理全体にかかる時間を短縮することができるという効果を奏する。
この実施の形態における識別元算出部242Aは、上記暗号文入力部220Aが上記暗号文cを入力するよりも前に、上記元Qを算出する。
この実施の形態における暗号文復号装置200Aによれば、元Qを算出する処理を暗号文入力部220Aが暗号文cを入力するよりも前に実行するので、暗号文入力部220Aが暗号文cを入力してから、復号文生成部260Aが共通鍵Kを算出するまでにかかる時間を更に短縮することができるという効果を奏する。
この実施の形態における暗号文復号装置200Aは、更に、共通鍵記憶部270Aと、暗号化メッセージ入力部281Aと、メッセージ復号部282Aとを有する。
上記共通鍵記憶部270Aは、上記記憶装置(RAM914)を用いて、上記復号文生成部260Aが出力した共通鍵Kを記憶する。
上記暗号化メッセージ入力部281Aは、上記処理装置(CPU911)を用いて、暗号化メッセージCMを入力する。
上記メッセージ復号部282Aは、上記処理装置(CPU911)を用いて、上記共通鍵記憶部270Aが記憶した共通鍵Kにより上記暗号化メッセージ入力部281Aが入力した暗号化メッセージCMを復号する。
この実施の形態における暗号文復号装置200Aによれば、暗号文cを介して暗号文生成装置400Aと共有した共通鍵Kにより、メッセージ復号部282Aが暗号化メッセージCMを復号するので、暗号化メッセージCMの生成・復号には、高速に処理が可能な共通鍵暗号方式を用いることができるという効果を奏する。
この実施の形態における暗号システム(IDベース公開鍵暗号システム820A)は、検証装置100Aを有する。
この実施の形態における暗号システム(IDベース公開鍵暗号システム820A)によれば、検証装置100Aが暗号文の整合性を検証するので、不正者に対して、暗号を解読する手がかりを与えるのを防ぐことができる。また、検証装置100Aが暗号文の整合性を検証する処理にかかる時間を短縮できるので、暗号通信全体にかかる時間を短縮することができるという効果を奏する。
以上説明した暗号文復号装置200A(公開鍵暗号復号装置)は、公開鍵暗号システム(IDベース公開鍵暗号システム820A)内における鍵デカプセル化装置であって、整数の剰余類がなす群などの乗法群における指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群におけるスカラー倍算により、乗法群の元sをe回乗算した元sまたは加法群の元sをe回加算した元e・sが、既知の元hと一致するかどうか検証することにより、暗号文が正しいか否かを判定する暗号文正当性検証装置(検証装置100A)を有する。
暗号文正当性検証装置(検証装置100A)は、
指数部(整数e)を分割する装置(整数分割部110)と、
分割された指数(整数e及び整数e)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値he1−se2またはe・h−e・sを計算する装置(検証値算出部130)と、
その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
以上説明した暗号文復号装置200Aは、IDベース暗号復号装置である。
暗号文復号装置200Aは、
公開パラメータ(元g及び公開元R)と、受信者(暗号文復号装置200A)のIDから計算される値(元Q=R+H(ID)・g)を事前に計算する事前計算装置(識別元算出部242A)と、
その事前計算値(元Q)を記憶する記憶装置(識別元記憶部243A)とを有する。
以上説明した暗号文復号装置200A(IDベース暗号復号装置)は、
公開パラメータ(元g及び公開元R)と、受信者(暗号文復号装置200A)のIDから計算される値(元Q)を事前に計算する事前計算装置(識別元算出部242A)と、
その事前計算値(元Q)を記憶する記憶装置(識別元記憶部243A)と、
その事前計算値(元Q)に対する、乗法群におけるべき乗算、または(超)楕円曲線上の点がなす群などの加法群におけるスカラー倍算をした値(Qまたはr・Q)を検証する検証装置100Aとを有する。
検証装置100Aは、
指数部(ハッシュ値r)を分割する装置(整数分割部110)と、
分割された指数(整数e及び整数e)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値Ue1・Q−e2またはe・U−e・Qを計算する装置(検証値算出部130)と、
その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
以上説明した暗号文復号装置200Aは、SK(境−笠原)−IDベース暗号復号装置である。
暗号文復号装置200Aは、
公開パラメータ(暗号パラメータ)である乗法群または加法群の元R,元gと、受信者(暗号文復号装置200A)を識別するビット列IDのハッシュ値h=H(ID)とから計算される元Q=R・g またはQ=R+h・gを事前に計算する事前計算装置(識別元算出部242A)と、
その元Qを記憶する記憶装置(識別元記憶部243A)と、
ランダムなビット列mのハッシュ値である整数rに対して、Qまたはr・Qが既知のUと一致するかどうか検証することにより、暗号文が正しいか判定する暗号文正当性検証装置(検証装置100A)とを有する。
以上説明した暗号文復号装置200Aは、SK−IDベース暗号システム(IDベース公開鍵暗号システム820A)内における鍵デカプセル化装置(SK−IDベース暗号鍵デカプセル化装置)である。
暗号文復号装置200Aは、
公開パラメータ(暗号パラメータ)である乗法群または加法群の元R,元gと、受信者(暗号文復号装置200A)を識別するビット列IDのハッシュ値h=H(ID)とから計算される元Q=R・g またはQ=R+h・gを事前に計算する事前計算装置(識別元算出部242A)と、
その元Qを記憶する記憶装置(識別元記憶部243A)と、
ランダムなビット列mのハッシュ値である整数rに対して、Qまたはr・Qが既知のUと一致するかどうか検証することにより、暗号文が正しいか判定する暗号文正当性検証装置(検証装置100A)とを有する。
以上説明した暗号文復号装置200A(SK−IDベース暗号復号装置)は、
公開パラメータ(暗号パラメータ)である乗法群または加法群の元R,元gと、受信者(暗号文復号装置200A)を識別するビット列IDのハッシュ値h=H(ID)とから計算される元Q=R・g またはQ=R+h・gを事前に計算する事前計算装置(識別元算出部242A)と、
その元Qを記憶する記憶装置(識別元記憶部243A)と、
ランダムなビット列mのハッシュ値(整数r)を計算する装置(整数算出部233A)と、
指数部(整数r)を分割する装置(整数分割部110)と、
分割された指数(整数e及び整数e)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値Ue1・Q−e2またはe・U−e・Qを計算する装置(検証値算出部130)と、
その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
以上説明した暗号文復号装置200A(SK−IDベース暗号鍵デカプセル化装置)は、
公開パラメータ(暗号パラメータ)である乗法群または加法群の元R,元gと、受信者(暗号文復号装置200A)を識別するビット列IDのハッシュ値h=H(ID)とから計算される元Q=R・g またはQ=R+h・gを事前に計算する事前計算装置(識別元算出部242A)と、
その元Qを記憶する記憶装置(識別元記憶部243A)と、
ランダムなビット列mのハッシュ値である整数rを計算する装置(整数算出部233A)と、
指数部(整数r)を分割する装置(整数分割部110)と、
分割された指数(整数e及び整数e)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値Ue1・Q−e2またはe・U−e・Qを計算する装置(検証値算出部130)と、
その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
以上説明したIDベース公開鍵暗号システム820Aは、(超)楕円曲線上のペアリング演算を利用したIDベース暗号であるSK−IBKEM暗号システムである。
IDベース公開鍵暗号システム820Aでは、位数pが素数である加法群G,加法群G,乗法群Gと、群G内の基点(生成元)g,群G内の基点g、ペアリングeを用いる。
まず、暗号パラメータ設定装置810A(暗号パラメータ生成装置)は、CPU911を用いて、1以上p−1以下の整数sをランダムに選ぶ。次に、暗号パラメータ設定装置810Aは、CPU911を用いて、群Gの元R=s・gを計算する。暗号パラメータ設定装置810Aは、CPU911を用いて、鍵生成装置300A(鍵生成センタ。PKG:Private Key Generator)用の秘密鍵(秘密乱数)sと、PKG用の公開鍵(公開元)Rとを出力する。
鍵生成装置300A(秘密鍵導出装置)は、CPU911を用いて、暗号文復号装置200Aを識別するビット列IDを入力する。まず、鍵生成装置300Aは、CPU911を用いて、ハッシュ値h=H1(ID)を計算する。次に、鍵生成装置300Aは、CPU911を用いて、整数e=1/(s+h) mod pを計算し、ID用の秘密鍵である群Gの元dID=e・gを計算して、出力する。
暗号文生成装置400A(暗号化装置)は、まず、CPU911を用いて、ランダムなビット列mを生成する。次に、暗号文生成装置400Aは、CPU911を用いて、ハッシュ値r=H(m),ハッシュ値h=H(ID)を計算し、群Gの元Q=R+h・gを計算する。暗号文生成装置400Aは、CPU911を用いて、群Gの元U=r・Qを計算し、ビット列mとハッシュ値H(e(g,g)との排他的論理和であるビット列V=XOR(m,H(e(g,g))を計算する。暗号文生成装置400Aは、CPU911を用いて、鍵(共通鍵)K=H(m),暗号文c=(U,V)を出力する。
暗号文復号装置200A(復号装置)は、自身を識別するビット列IDと、鍵生成装置300Aが生成した秘密鍵dIDと、暗号文生成装置400Aが出力した暗号文c=(U,V)とを入力する。暗号文復号装置200Aは、ペアリング値α=e(U,dID)を計算し、ビット列Vと、ハッシュ値H(α)との排他的論理和であるビット列m=XOR(V,H(α))を計算する。暗号文復号装置200Aは、ハッシュ値r=H(m),ハッシュ値h=H(ID)を計算し、群Gの元Q=R+h・gを計算する。暗号文復号装置200Aは、CPU911を用いて、r・Q=Uが成り立つかどうかをチェックする。成立しなければ、暗号文復号装置200Aは、「拒絶」を出力する。成立すれば、暗号文復号装置200Aは、CPU911を用いて、共通鍵K=H(m)を計算し、出力する。
以上説明した検証装置100Aは、このようなSK−IBKEM暗号システムにおいて、r・Q=Uが成立するかどうかをチェックする処理を、高速化する。
識別元算出部242Aは、CPU911を用いて、システム全体で共通に用いられる暗号パラメータである元gと、元Rと、受信者(暗号文復号装置200A)自身のIDのハッシュ値h=H(ID)とに基づいて、暗号文生成装置400Aとの通信の内容とは無関係に、群Gにおける二基底スカラー倍算により、群Gの元Q=R+h・gを事前に計算しておく。
検証装置100Aでは、整数分割部110が、CPU911を用いて、rとpとを入力して、e・r≡e(mod p)となる整数e,eを算出し、検証値算出部130が、CPU911を用いて、群Gにおける二基底スカラー倍算により、群Gの元W=e・Q−e・Uを計算し、検証判定部150が、CPU911をもちいて、元Wが群Gの単位元Oであるかどうかをチェックすることにより、r・Q=Uが成立するかを高速にチェックする。
実施の形態3.
実施の形態3について、図16〜図20を用いて説明する。
図16は、この実施の形態における公開鍵暗号システム820Bの全体構成の一例を示すシステム構成図である。
公開鍵暗号システム820Bは、暗号文生成装置400Bが暗号文復号装置200Bの公開鍵を使って暗号文を生成し、暗号文復号装置200Bが公開鍵に対応する秘密鍵を使って暗号文を復号するシステムである。
公開鍵暗号システム820Bは、暗号パラメータ設定装置810B、鍵生成装置300B、暗号文生成装置400B、暗号文復号装置200Bを有する。
暗号パラメータ設定装置810Bは、公開鍵暗号システム820Bで利用される暗号パラメータを定める。暗号パラメータ設定装置810Bが定めた暗号パラメータは、公開鍵暗号システム820Bの利用者に公開される。暗号パラメータ設定装置810Bが定める暗号パラメータには、例えば、位数p、加法群G、加法群Gの元g、ハッシュ関数H、鍵導出関数KDFなどがある。
位数pは、素数である。
加法群Gの位数は、pである。元gは、加法群Gの生成元である。
ハッシュ関数Hは、加法群Gの二つの元の順序対から、1以上p−1以下の整数を生成するハッシュ関数である。
鍵導出関数KDFは、加法群Gの二つの元の順序対から、所定の長さのビット列を生成する関数である。
なお、これらの暗号パラメータがあらかじめ定められている場合には、暗号パラメータ設定装置810Aは、なくてもよい。
鍵生成装置300Bは、公開された暗号パラメータに基づいて、秘密鍵と公開鍵とのペアを生成する。鍵生成装置300Bが生成した秘密鍵は、暗号文復号装置200Bに秘密裡に通知される。鍵生成装置300Bが生成した公開鍵は、例えば、公開鍵証明書などの形で、暗号文復号装置200Bの公開鍵として公開される。
鍵生成装置300Bは、公開鍵として、加法群Gの四つの元g’、c、d、hを生成する。鍵生成装置300Bは、秘密鍵として、1以上p−1以下の四つの整数w、x、y、zを生成する。
なお、鍵生成装置300Bは、暗号文復号装置200Bの一部であってもよい。
暗号文生成装置400Bは、公開された暗号パラメータと公開鍵とに基づいて、暗号文cと、共通鍵Kとを生成する。暗号文生成装置400Bは、生成した共通鍵Kにより、メッセージMを暗号化して暗号化メッセージCMを生成する。暗号文生成装置400Bは、生成した暗号文cと暗号化メッセージCMとを、暗号文復号装置200Bに対して送信する。
暗号文復号装置200Bは、鍵生成装置300Bが生成した秘密鍵を秘密裡に保持する。暗号文復号装置200Bは、暗号文生成装置400Bが送信した暗号文cと暗号化メッセージCMとを受信する。暗号文復号装置200Bは、公開された暗号パラメータに基づいて、保持した秘密鍵により受信した暗号文cを復号し、暗号文生成装置400Bと同じ共通鍵Kを生成する。暗号文復号装置200Bは、生成した共通鍵により、暗号化メッセージCMを復号して、メッセージMと同じメッセージM’を生成する。
なお、暗号パラメータ設定装置810B、鍵生成装置300B、暗号文生成装置400B、暗号文復号装置200Bの外観、ハードウェア資源は、実施の形態1で説明した暗号文復号装置200の外観、ハードウェア資源と同様である。
図17は、この実施の形態における鍵生成装置300Bの機能ブロックの構成の一例を示すブロック構成図である。
鍵生成装置300Bは、暗号パラメータ記憶部390B、秘密鍵生成部350B、公開鍵生成部370B、秘密鍵出力部360B、公開鍵出力部380Bを有する。
暗号パラメータ記憶部390Bは、磁気ディスク装置920を用いて、公開された暗号パラメータを表わすデータを、あらかじめ記憶している。
秘密鍵生成部350Bは、暗号パラメータ記憶部390Bが記憶した暗号パラメータに基づいて、秘密鍵を生成する。
秘密鍵生成部350Bは、四つの秘密乱数生成部351B〜354Bを有する。
四つの秘密乱数生成部351B〜354Bは、それぞれ、CPU911を用いて、暗号パラメータ記憶部390Bが記憶した暗号パラメータのうち位数pを表わすデータを入力する。四つの秘密乱数生成部351B〜354Bは、それぞれ、CPU911を用いて、入力したデータが表わす位数pに基づいて、1以上p−1以下の整数をランダムに生成する。
第一の秘密乱数生成部351Bは、生成した整数を整数wとし、RAM914を用いて、生成した整数wを表わすデータを記憶する。
第二の秘密乱数生成部352Bは、生成した整数を整数xとし、RAM914を用いて、生成した整数xを表わすデータを記憶する。
第三の秘密乱数生成部353Bは、生成した整数を整数yとし、RAM914を用いて、生成した整数yを表わすデータを記憶する。
第四の秘密乱数生成部354Bは、生成した整数を整数zとし、RAM914を用いて、生成した整数zを表わすデータを記憶する。
公開鍵生成部370Bは、暗号パラメータ記憶部390Bが記憶した暗号パラメータと、秘密鍵生成部350Bが生成した秘密鍵とに基づいて、公開鍵を生成する。
公開鍵生成部370Bは、四つの公開元算出部371B〜374Bを有する。
四つの公開元算出部371B〜374Bは、それぞれ、CPU911を用いて、暗号パラメータ記憶部390Bが記憶した暗号パラメータのうち加法群Gと元gとを表わすデータを入力する。
第一の公開元算出部371Bは、CPU911を用いて、第一の秘密乱数生成部351Bが記憶した整数wを表わすデータを入力する。第一の公開元算出部371Bは、CPU911を用いて、入力したデータが表わす加法群Gと元gと整数wとに基づいて、加法群Gにおける演算により、元gをw回加算した元を算出し、元g’とする。第一の公開元算出部371Bは、RAM914を用いて、算出した元g’を表わすデータを記憶する。
第二の公開元算出部372Bは、CPU911を用いて、第二の秘密乱数生成部352Bが記憶した整数xを表わすデータを入力する。第二の公開元算出部372Bは、CPU911を用いて、入力したデータが表わす加法群Gと元gと整数xとに基づいて、加法群Gにおける演算により、元gをx回加算した元を算出し、元cとする。第二の公開元算出部372Bは、RAM914を用いて、算出した元cを表わすデータを記憶する。
第三の公開元算出部373Bは、CPU911を用いて、第三の秘密乱数生成部353Bが記憶した整数yを表わすデータを入力する。第三の公開元算出部373Bは、CPU911を用いて、入力したデータが表わす加法群Gと元gと整数yとに基づいて、加法群Gにおける演算により、元gをy回加算した元を算出し、元dとする。第三の公開元算出部373Bは、RAM914を用いて、算出した元dを表わすデータを記憶する。
第四の公開元算出部374Bは、CPU911を用いて、第四の秘密乱数生成部354Bが記憶した整数zを表わすデータを入力する。第四の公開元算出部374Bは、CPU911を用いて、入力したデータが表わす加法群Gと元gと整数zとに基づいて、加法群Gにおける演算により、元gをz回加算した元を算出し、元hとする。第四の公開元算出部374Bは、RAM914を用いて、算出した元hを表わすデータを記憶する。
秘密鍵出力部360Bは、CPU911を用いて、四つの秘密乱数生成部351B〜354Bが記憶した整数wと整数xと整数yと整数zとを表わすデータを入力する。秘密鍵出力部360Bは、CPU911を用いて、入力した整数wと整数xと整数yと整数zとを表わすデータを、秘密鍵として出力する。
秘密鍵出力部360Bが出力した秘密鍵は、暗号文復号装置200Bに対して秘密裡に通知される。
公開鍵出力部380Bは、CPU911を用いて、四つの公開元算出部371B〜374Bが記憶した元g’と元cと元dと元hとを表わすデータを入力する。公開鍵出力部380Bは、CPU911を用いて、入力した元g’と元cと元dと元hとを表わすデータを、公開鍵として出力する。
公開鍵出力部380Bが出力した公開鍵は、暗号文復号装置200の公開鍵として公開鍵暗号システム820Bの利用者に公開される。
図18は、この実施の形態における暗号文生成装置400Bの機能ブロックの構成の一例を示すブロック構成図である。
暗号文生成装置400Bは、暗号パラメータ記憶部490B、公開鍵記憶部410B、共通鍵生成部420B、暗号文出力部470B、共通鍵記憶部430B、メッセージ入力部440B、メッセージ暗号化部450B、暗号化メッセージ出力部460Bを有する。
暗号パラメータ記憶部490Bは、磁気ディスク装置920を用いて、公開された暗号パラメータを表わすデータを、あらかじめ記憶している。
公開鍵記憶部410Bは、磁気ディスク装置920を用いて、暗号文の送信相手である暗号文復号装置200Bの公開鍵を表わすデータを記憶している。
共通鍵生成部420Bは、暗号パラメータ記憶部490Bが記憶した暗号パラメータと、公開鍵記憶部410Bが記憶した公開鍵とに基づいて、共通鍵Kと、共通鍵Kを暗号文復号装置200Bに通知するための暗号文とを生成する。
共通鍵生成部420Bは、秘密乱数生成部421B、第一暗号元算出部422B、第二暗号元算出部423B、ハッシュ値算出部424B、整数算出部425B、第三暗号元算出部426B、秘密元算出部427B、共通鍵算出部428Bを有する。
秘密乱数生成部421Bは、CPU911を用いて、暗号パラメータ記憶部490Bが記憶した暗号パラメータのうち位数pを表わすデータを入力する。秘密乱数生成部421Bは、CPU911を用いて、入力したデータが表わす位数pに基づいて、1以上p−1以下の整数をランダムに生成して、秘密乱数rとする。秘密乱数生成部421Bは、RAM914を用いて、生成した秘密乱数rを表わすデータを記憶する。
第一暗号元算出部422Bは、CPU911を用いて、暗号パラメータ記憶部490Bが記憶した暗号パラメータのうち加法群Gと元gとを表わすデータと、秘密乱数生成部421Bが記憶した秘密乱数rを表わすデータとを入力する。第一暗号元算出部422Bは、CPU911を用いて、入力したデータが表わす加法群Gと元gと秘密乱数rとに基づいて、加法群Gにおける演算により、元gをr回加算した元を算出して、元uとする。第一暗号元算出部422Bは、RAM914を用いて、算出した元uを表わすデータを記憶する。
第二暗号元算出部423Bは、CPU911を用いて、暗号パラメータ記憶部490Bが記憶した暗号パラメータのうち加法群Gを表わすデータと、公開鍵記憶部410Bが記憶した暗号文復号装置200Bの公開鍵のうち元g’を表わすデータと、秘密乱数生成部421Bが記憶した秘密乱数rを表わすデータとを入力する。第二暗号元算出部423Bは、CPU911を用いて、入力したデータが表わす加法群Gと元g’と秘密乱数rとに基づいて、加法群Gにおける演算により、元g’をr回加算した元を算出して、元u’とする。第二暗号元算出部423Bは、RAM914を用いて、算出した元u’を表わすデータを記憶する。
第二暗号元算出部423Bが算出する元u’は、g’=w・g、u=r・gだから、
Figure 2009104260
ハッシュ値算出部424Bは、CPU911を用いて、暗号パラメータ記憶部490Bが記憶した暗号パラメータのうちハッシュ関数Hを表わすデータと、第一暗号元算出部422Bが記憶した元uを表わすデータと、第二暗号元算出部423Bが記憶した元u’を表わすデータとを入力する。ハッシュ値算出部424Bは、CPU911を用いて、入力したデータが表わすハッシュ関数Hと元uと元u’とに基づいて、元uと元u’との順序対をハッシュしたハッシュ値を算出して、ハッシュ値αとする。ハッシュ値αは、1以上p−1以下の整数である。ハッシュ値算出部424Bは、RAM914を用いて、算出したハッシュ値αを表わすデータを記憶する。
整数算出部425Bは、CPU911を用いて、暗号パラメータ記憶部490Bが記憶した暗号パラメータのうち位数pを表わすデータと、秘密乱数生成部421Bが記憶した秘密乱数rを表わすデータと、ハッシュ値算出部424Bが算出したハッシュ値αを表わすデータとを入力する。整数算出部425Bは、CPU911を用いて、入力したデータが表わす位数pと秘密乱数rとハッシュ値αとに基づいて、ハッシュ値αと秘密乱数rとの積を、位数pで割った余りを算出して、整数r’とする。整数算出部425Bは、RAM914を用いて、算出した整数r’を表わすデータを記憶する。
第三暗号元算出部426Bは、CPU911を用いて、暗号パラメータ記憶部490Bが記憶した暗号パラメータのうち加法群Gを表わすデータと、公開鍵記憶部410Bが記憶した暗号文復号装置200Bの公開鍵のうち元cと元dとを表わすデータと、秘密乱数生成部421Bが記憶した秘密乱数rを表わすデータと、整数算出部425Bが記憶した整数r’を表わすデータとを入力する。第三暗号元算出部426Bは、CPU911を用いて、入力したデータが表わす加法群Gと元cと元dと秘密乱数rと整数r’とに基づいて、加法群Gにおける演算により、元cをr回加算した元と、元dをr’回加算した元とを加算した元を算出し、元vとする。第三暗号元算出部426Bは、RAM914を用いて、算出した元vを表わすデータを記憶する。
第三暗号元算出部426Bが算出する元vは、c=x・g、d=y・g、u=r・gだから、
Figure 2009104260
秘密元算出部427Bは、CPU911を用いて、暗号パラメータ記憶部490Bが記憶した暗号パラメータのうち加法群Gを表わすデータと、公開鍵記憶部410Bが記憶した暗号文復号装置200Bの公開鍵のうち元hを表わすデータと、秘密乱数生成部421Bが記憶した秘密乱数rを表わすデータとを入力する。秘密元算出部427Bは、CPU911を用いて、入力したデータが表わす加法群Gと元hと秘密乱数rとに基づいて、加法群Gにおける演算により、元hをr回加算した元を算出して、元hとする。秘密元算出部427Bは、CPU911を用いて、算出した元hを表わすデータを記憶する。
秘密元算出部427Bが算出する元hは、h=z・g、u=r・gだから、
Figure 2009104260
共通鍵算出部428Bは、CPU911を用いて、暗号パラメータ記憶部490Bが記憶した暗号パラメータのうち鍵導出関数KDFを表わすデータと、第一暗号元算出部422Bが記憶した元uを表わすデータと、秘密元算出部427Bが記憶した元hを表わすデータとを入力する。共通鍵算出部428Bは、入力したデータが表わす鍵導出関数KDFと元uと元hとに基づいて、鍵導出関数により、元uと元hとの順序対からビット列を算出して、共通鍵Kとする。共通鍵算出部428Bは、RAM914を用いて、算出した共通鍵Kを記憶する。
共通鍵記憶部430Bは、CPU911を用いて、共通鍵算出部428Bが記憶した共通鍵Kを入力する。共通鍵記憶部430Bは、RAM914を用いて、入力した共通鍵Kを記憶する。
暗号文出力部470Bは、CPU911を用いて、第一暗号元算出部422Bが記憶した元uを表わすデータと、第二暗号元算出部423Bが記憶した元u’を表わすデータと、第三暗号元算出部426Bが記憶した元vを表わすデータとを入力する。暗号文出力部470Bは、CPU911を用いて、入力した元uと元u’と元vとを表わすデータを、暗号文cとして出力する。
メッセージ入力部440Bは、CPU911を用いて、暗号文復号装置200Bに対して送信しようとするメッセージMを入力する。メッセージ入力部440Bは、磁気ディスク装置920を用いて、入力したメッセージMを記憶する。
メッセージ暗号化部450Bは、CPU911を用いて、共通鍵記憶部430Bが記憶した共通鍵Kと、メッセージ入力部440Bが記憶したメッセージMとを入力する。メッセージ暗号化部450Bは、CPU911を用いて、入力したメッセージMと共通鍵Kとに基づいて、共通鍵KによりメッセージMを暗号化して、暗号化メッセージCMとする。メッセージ暗号化部450Bは、磁気ディスク装置920を用いて、生成した暗号化メッセージCMを記憶する。
暗号化メッセージ出力部460Bは、CPU911を用いて、メッセージ暗号化部450Bが記憶した暗号化メッセージCMを入力する。暗号化メッセージ出力部460Bは、CPU911を用いて、入力した暗号化メッセージCMを出力する。
暗号文出力部470Bが出力した暗号文cと、暗号化メッセージ出力部460Bが出力した暗号化メッセージCMとは、暗号文復号装置200Bに対して送信される。
図19は、この実施の形態における暗号文復号装置200Bの機能ブロックの構成の一例を示すブロック構成図である。
暗号文復号装置200Bは、暗号パラメータ記憶部290B、鍵記憶部210B、暗号文入力部220B、暗号文検証部230B、検証装置100B、復号文生成部260B、共通鍵記憶部270B、暗号化メッセージ入力部281B、メッセージ復号部282B、復号メッセージ出力部283Bを有する。
暗号パラメータ記憶部290Bは、磁気ディスク装置920を用いて、公開された暗号パラメータを表わすデータを、あらかじめ記憶している。
鍵記憶部210Bは、耐タンパ性のある記憶装置を用いて、あらかじめ鍵生成装置300Bが生成した秘密鍵を表わすデータを秘密裡に記憶している。
暗号文入力部220Bは、CPU911を用いて、暗号文生成装置400Bから受信した暗号文cを入力する。暗号文入力部220Bは、CPU911を用いて、入力した暗号文cから、元uと元u’と元vとを表わすデータを取得する。暗号文入力部220Bは、RAM914を用いて、取得した元uと元u’と元vとを表わすデータを記憶する。
暗号文検証部230Bは、ハッシュ値算出部231B、整数算出部232Bを有する。
ハッシュ値算出部231Bは、CPU911を用いて、暗号パラメータ記憶部290Bが記憶した暗号パラメータのうちハッシュ関数Hを表わすデータと、暗号文入力部220Bが記憶した元uと元u’とを表わすデータとを入力する。ハッシュ値算出部231Bは、CPU911を用いて、入力したデータが表わすハッシュ関数Hと元uと元u’とに基づいて、ハッシュ関数Hにより、元uと元u’との順序対をハッシュしたハッシュ値を算出して、ハッシュ値αとする。ハッシュ値αは、1以上p−1以下の整数である。ハッシュ値算出部231Bは、RAM914を用いて、算出したハッシュ値αを表わすデータを記憶する。
ハッシュ値算出部231Bが算出するハッシュ値αは、暗号文生成装置400Bのハッシュ値算出部424Bが算出したハッシュ値αと等しい。
整数算出部232Bは、CPU911を用いて、暗号パラメータ記憶部290Bが記憶した暗号パラメータのうち位数pを表わすデータと、鍵記憶部210Bが記憶した秘密鍵のうち整数xと整数yとを表わすデータと、ハッシュ値算出部231Bが記憶したハッシュ値αとを入力する。整数算出部232Bは、CPU911を用いて、入力したデータが表わす位数pと整数xと整数yとハッシュ値αとに基づいて、整数yとハッシュ値αとの積と、整数xとの和を、位数pで割った余りを算出して、整数tとする。整数算出部232Bは、CPU911を用いて、算出した整数tを表わすデータを記憶する。
暗号文入力部220Aが入力した暗号文cが正当な暗号文であれば、数24及び数25が成り立つ。したがって、u’=w・uであるか、v=t・uであるかを検証することにより、暗号文入力部220Aが入力した暗号文cが正当な暗号文であるか判定することができる。
検証装置100Bは、u’=w・uであるか否かを判断し、v=t・uであるか否かを判断し、u’=w・uかつv=t・uである場合に、検証成功と判定する。
判断の順序はどちらが先でもよいが、以下では、まず、u’=w・uであるか否かを判断し、次に、v=t・uであるか否かを判断するものとして、説明する。
検証装置100Bは、実施の形態1で説明した検証装置100と同様の装置である。
まず、検証装置100Bは、u’=w・uであるか否かを判定する。
検証装置100Bは、CPU911を用いて、暗号パラメータ記憶部290Bが記憶した暗号パラメータのうち位数pを表わすデータを、実施の形態1で説明した位数pを表わすデータとして入力する。
検証装置100Bは、CPU911を用いて、鍵記憶部210Bが記憶した秘密鍵のうち整数wを表わすデータを、実施の形態1で説明した整数eを表わすデータとして入力する。
検証装置100Bは、CPU911を用いて、暗号文入力部220Bが記憶した元u’を表わすデータを、実施の形態1で説明した元hを表わすデータとして入力する。
検証装置100Bは、CPU911を用いて、暗号文入力部220Bが記憶した元uを表わすデータを、実施の形態1で説明した元sを表わすデータとして入力する。
検証装置100Bは、CPU911を用いて、入力したデータが表わす位数pと整数wとに基づいて、e・w≡e(mod p)、|e|<√p、0<e<√pを満たす整数e及び整数eを算出する。なお、整数wは、暗号文復号装置200の秘密鍵の一部であり、暗号文入力部220Bが暗号文cを入力する前からわかっているので、検証装置100Bは、暗号文入力部220Bが暗号文cを入力する前に、CPU911を用いて、あらかじめ整数e及び整数eを算出し、耐タンパ性のある記憶装置を用いて記憶しておいてもよい。
検証装置100Bは、CPU911を用いて、入力したデータが表わす元u’と元uと、算出した整数eと整数eとに基づいて、加法群Gにおける演算により、加法群Gの元a=e・u’−e・uを算出する。検証装置100Bは、CPU911を用いて、算出した元aに基づいて、元aが加法群Gの単位元であるか否かを判定する。検証装置100Bは、CPU911を用いて、元aが加法群Gの単位元である場合、第一の検証に成功したと判定し、元aが加法群Gの単位元でない場合、「検証失敗」と判定する。
第一の検証に成功したと判定した場合、検証装置100Bは、v=t・uであるか否かを判定する。
検証装置100Bは、CPU911を用いて、暗号パラメータ記憶部290Bが記憶した暗号パラメータのうち位数pを表わすデータを、実施の形態1で説明した位数pを表わすデータとして入力する。
検証装置100Bは、CPU911を用いて、整数算出部232Bが記憶した整数tを表わすデータを、実施の形態1で説明した整数eを表わすデータとして入力する。
検証装置100Bは、CPU911を用いて、暗号文入力部220が記憶した元vを表わすデータを、実施の形態1で説明した元hを表わすデータとして入力する。
検証装置100Bは、CPU911を用いて、暗号文入力部220が記憶した元uを表わすデータを、実施の形態1で説明した元sを表わすデータとして入力する。
検証装置100Bは、CPU911を用いて、入力したデータが表わす位数pと整数tとに基づいて、e・t≡e(mod p)、|e|<√p、0<e<√pを満たす整数e及び整数eを算出する。検証装置100Bは、CPU911を用いて、入力したデータが表わす元vと元uと、算出した整数eと整数eとに基づいて、加法群Gにおける演算により、加法群Gの元a=e・v−e・uを算出する。検証装置100Bは、CPU911を用いて、算出した元aに基づいて、元aが加法群Gの単位元であるか否かを判定する。検証装置100Bは、CPU911を用いて、元aが加法群Gの単位元である場合、第二の検証にも成功したと判定して「検証成功」と判定し、元aが加法群Gの単位元でない場合、「検証失敗」と判定する。
検証装置100Bは、CPU911を用いて、検証結果を表わすデータを出力する。
復号文生成部260Bは、検証装置100Bが「検証成功」と判定した場合に、共通鍵Kを生成する。
復号文生成部260Bは、秘密元算出部261B、共通鍵算出部262Bを有する。
秘密元算出部261Bは、CPU911を用いて、検証装置100Bが出力した検証結果を表わすデータを入力する。秘密元算出部261Bは、入力したデータが表わす検証結果が「検証成功」である場合、CPU911を用いて、暗号パラメータ記憶部290Bが記憶した暗号パラメータのうち加法群Gを表わすデータと、鍵記憶部210Bが記憶した秘密鍵のうち整数zを表わすデータと、暗号文入力部220Bが記憶した元uを表わすデータとを入力する。秘密元算出部261Bは、CPU911を用いて、入力したデータが表わす加法群Gと整数zと元uとに基づいて、加法群Gにおける演算により、元uをz回加算した元を算出して、元hとする。秘密元算出部261Bは、RAM914を用いて、算出した元hを表わすデータを記憶する。
暗号文入力部220Aが入力した暗号文cが正当な暗号文であれば、数26より、秘密元算出部261Bが算出する元hは、暗号文生成装置400Bの秘密元算出部427Bが算出した元hと等しい。
共通鍵算出部262Bは、CPU911を用いて、暗号パラメータ記憶部290Bが記憶した暗号パラメータのうち鍵導出関数KDFを表わすデータと、暗号文入力部220Bが記憶した元uを表わすデータと、秘密元算出部261Bが記憶した元hを表わすデータとを入力する。共通鍵算出部262Bは、CPU911を用いて、入力したデータが表わす鍵導出関数KDFと元uと元hとに基づいて、鍵導出関数KDFにより、元uと元hとの順序対からビット列を算出して、共通鍵Kとする。共通鍵算出部262Bは、RAM914を用いて、算出した共通鍵Kを記憶する。
秘密元算出部261Bが算出した元hが、暗号文生成装置400Bの秘密元算出部427Bが算出した元hと等しいので、共通鍵算出部262Bが算出する共通鍵Kは、暗号文生成装置400Bの共通鍵算出部428Bが算出した共通鍵Kと等しい。
したがって、暗号文生成装置400Bと暗号文復号装置200Bとが同じ共通鍵Kを共有できる。
共通鍵記憶部270Bは、CPU911を用いて、共通鍵算出部262Bが記憶した共通鍵Kを入力する。共通鍵記憶部270Bは、RAM914を用いて、入力した共通鍵Kを記憶する。
暗号化メッセージ入力部281Bは、CPU911を用いて、暗号文生成装置400Bから受信した暗号化メッセージCMを入力する。暗号化メッセージ入力部281Bは、磁気ディスク装置920を用いて、入力した暗号化メッセージCMを記憶する。
メッセージ復号部282Bは、CPU911を用いて、共通鍵記憶部270Bが記憶した共通鍵Kと、暗号化メッセージ入力部281Bが記憶した暗号化メッセージCMとを入力する。メッセージ復号部282Bは、CPU911を用いて、入力した共通鍵Kにより、入力した暗号化メッセージCMを復号して、メッセージM’を生成する。メッセージ復号部282Bは、磁気ディスク装置920を用いて、生成したメッセージM’を記憶する。
暗号文生成装置400Bと暗号文復号装置200Bとが同じ共通鍵Kを共有しているので、メッセージ復号部282Bが生成するメッセージM’は、暗号文生成装置400Bのメッセージ入力部440Bが入力したメッセージMと同じになる。
復号メッセージ出力部283Bは、CPU911を用いて、メッセージ復号部282Bが記憶したメッセージM’を入力する。復号メッセージ出力部283Bは、CPU911を用いて、入力したメッセージM’を出力する。
図20は、この実施の形態における暗号文復号装置200Aが暗号文cを復号する暗号文復号処理の流れの一例を示すフローチャート図である。
ハッシュ値算出工程S731Bにおいて、ハッシュ値算出部231Bは、CPU911を用いて、暗号文入力部220Bが入力した元uと元u’とに基づいて、ハッシュ関数Hにより、元uと元u’との順序対をハッシュしたハッシュ値を算出し、ハッシュ値αとする。
整数算出工程S732Bにおいて、整数算出部232Bは、CPU911を用いて、暗号パラメータ記憶部290Bが記憶した位数pと、鍵記憶部210Bが記憶した整数xと整数yと、ハッシュ値算出工程S731Bでハッシュ値算出部231Bが算出したハッシュ値αとに基づいて、整数yとハッシュ値αとの積と、整数xとの和を、位数pで割った余りを算出して、整数tとする。
第一検証工程S733Bにおいて、検証装置100Bは、CPU911を用いて、鍵記憶部210が記憶した整数wと、暗号文入力部220Aが入力した元uと元u’とに基づいて、u’=w・uであるかを検証する。
u’=w・uである場合、第二検証工程S734Bへ進む。
u’≠w・uである場合、暗号文復号処理を終了する。
第二検証工程S734Bにおいて、検証装置100Bは、CPU911を用いて、暗号文入力部220Bが入力した元uと元vと、整数算出工程S732Bで整数算出部232Bが算出した整数tとに基づいて、v=t・uであるかを検証する。
v=t・uである場合、秘密元算出工程S735Bへ進む。
v≠t・uである場合、暗号文復号処理を終了する。
秘密元算出工程S735Bにおいて、秘密元算出部261Bは、CPU911を用いて、鍵記憶部210Bが記憶した整数zと、暗号文入力部220Bが入力した元uとに基づいて、加法群Gにおける演算により、元uをz回加算した元を算出して、元hとする。
共通鍵算出工程S736において、共通鍵算出部262Bは、CPU911を用いて、暗号文入力部220Bが入力した元uと、秘密元算出工程S735Bで秘密元算出部261Bが算出した元hとに基づいて、鍵導出関数KDFにより、元uと元hとの順序対からビット列を算出して、共通鍵Kとする。
その後、暗号文復号処理を終了し、算出した共通鍵Kにより、暗号化メッセージCMを復号する。
この実施の形態における暗号文復号装置200Bは、更に、暗号パラメータ記憶部290Bを有する。
上記暗号パラメータ記憶部290Bは、上記記憶装置(磁気ディスク装置920)を用いて、上記有限群(加法群)Gの位数pを記憶する。
上記鍵記憶部210Bは、上記記憶装置を用いて、1以上p−1以下の整数wと、1以上p−1以下の整数xと、1以上p−1以下の整数yと、1以上p−1以下の整数zとを記憶する。
上記暗号文入力部220Bは、上記処理装置(CPU911)を用いて、上記有限群(加法群)Gの元uと、上記有限群(加法群)Gの元u’と、上記有限群(加法群)Gの元vとを上記暗号文cとして入力する。
上記暗号文検証部230Bは、ハッシュ値算出部231Bと、整数算出部232Bとを有する。
上記ハッシュ値算出部231Bは、上記処理装置(CPU911)を用いて、上記暗号文入力部220Bが入力した元uと元u’とに基づいて、所定のハッシュ関数Hにより上記元uと上記元u’とをハッシュしたハッシュ値を算出して、整数(ハッシュ値)α(=H(u,u’))とする。
上記整数算出部232Bは、上記処理装置(CPU911)を用いて、上記暗号パラメータ記憶部290Bが記憶した位数pと、上記鍵記憶部210Bが記憶した整数xと整数yと、上記ハッシュ値算出部231Bが算出した整数(ハッシュ値)αとに基づいて、上記整数yと上記整数(ハッシュ値)αとの積と、上記整数xとの和を、上記位数pで割った余りを算出して、整数t(=(x+y・α)mod p)とする。
上記検証装置100Bは、上記暗号パラメータ記憶部290Bが記憶した位数pと、上記整数eとして上記鍵記憶部210Bが記憶した整数wと、上記元sとして上記暗号文入力部220Bが入力した元uと、上記元hとして上記暗号文入力部220Bが入力した元u’とを入力し、検証成功か否かを判定して、第一の検証結果とし、上記暗号パラメータ記憶部290Bが記憶した位数pと、上記整数eとして上記整数算出部232Bが算出した整数tと、上記元sとして上記暗号文入力部220Bが入力した元uと、上記元hとして上記暗号文入力部220Bが入力した元vとを入力し、検証成功か否かを判定して、第二の検証結果とする。
上記復号文生成部260Bは、上記処理装置(CPU911)を用いて、上記検証装置100Bが上記第一の検証結果及び上記第二の検証結果においてともに検証成功と判定した場合に、上記鍵記憶部210Bが記憶した整数zと、上記暗号文入力部220Bが入力した元uとに基づいて、上記元uを上記整数z回加算した元を算出して、上記有限群Gの元h(=z・u)とし、上記暗号文入力部220Bが入力した元uと、算出した元hとに基づいて、所定の鍵導出関数KDFにより上記元uと上記元hとから共通鍵K(=KDF(u,h))を生成し、生成した共通鍵Kを上記復号文として出力する。
この実施の形態における暗号文復号装置200Bによれば、検証装置100Bがu’=w・uかつv=t・uであるかを検証して検証成功と判定した場合に、復号文生成部260Bが復号文を生成するので、不正者に対して、暗号を解読する手がかりを与えるのを防ぐことができる。また、検証装置100Bがu’=w・uかつv=t・uであるかを検証する処理にかかる時間を短縮できるので、暗号文復号装置200Bが暗号文を復号する処理全体にかかる時間を短縮することができるという効果を奏する。
この実施の形態における暗号文復号装置200Bは、更に、共通鍵記憶部270Bと、暗号化メッセージ入力部281Bと、メッセージ復号部282Bとを有する。
上記共通鍵記憶部270Bは、上記記憶装置(RAM914)を用いて、上記復号文生成部260Bが出力した共通鍵Kを記憶する。
上記暗号化メッセージ入力部281Bは、上記処理装置(CPU911)を用いて、暗号化メッセージCMを入力する。
上記メッセージ復号部282Bは、上記処理装置(CPU911)を用いて、上記共通鍵記憶部270Bが記憶した共通鍵Kにより上記暗号化メッセージ入力部281Bが入力した暗号化メッセージCMを復号する。
この実施の形態における暗号文復号装置200Bによれば、暗号文cを介して暗号文生成装置400Bと共有した共通鍵Kにより、メッセージ復号部282Bが暗号化メッセージCMを復号するので、暗号化メッセージCMの生成・復号には、高速に処理が可能な共通鍵暗号方式を用いることができるという効果を奏する。
以上説明した暗号文復号装置200B(公開鍵暗号復号装置)は、暗号文の一部である乗法群または加法群の元u及び元u’と、秘密鍵の一部である整数wとの間に、関係u’=u(乗法的記述)またはu’=w・u(加法的記述)が成り立つかを検証するため、
指数部(整数w)を分割する装置(整数分割部110)と、
分割された指数(整数e及び整数e)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値u’e1・u−e2またはe・u’−e・uを計算する装置(検証値算出部130)と、
その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
以上説明した暗号文復号装置200B(公開鍵暗号復号装置)は、暗号文の一部(元u及び元u’)から算出したハッシュ値αに基づいて計算した指数(整数)tと、暗号文の一部である元u及び元vとの間に、関係v=u(乗法的記述)またはt・u=v(加法的記述)が成り立つかを検証するため、
指数部(整数t)を分割する装置(整数分割部110)と、
分割された指数(整数e及び整数e)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値ve1・u−e2またはe・v−e・uを計算する装置(検証値算出部130)と、
その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
以上説明した公開鍵暗号システム820Bは、Cramer−Shoup公開鍵暗号をもとに標準化された鍵カプセル化方式のACE−KEM暗号システムである。
公開鍵暗号システム820Bでは、素数位数pの群(加法群)Gと群G内の基点(生成元)gとを用いる。
鍵生成装置300Bは、CPU911を用いて、0以上p−1以下の整数w,整数x,整数y,整数zをランダムに選ぶ。鍵生成装置300Bは、CPU911を用いて、群Gの元g’=w・g,群Gの元c=x・g,群Gの元d=y・g,群Gの元h=z・gを計算する。鍵生成装置300Bは、CPU911を用いて、公開鍵(g’,c,d,h)と、秘密鍵(w,x,y,z)とを出力する。
暗号文生成装置400B(暗号化装置)は、CPU911を用いて、公開鍵(g’,c,d,h)を入力する。暗号文生成装置400Bは、CPU911を用いて、0以上p−1以下の乱数rを生成し、群Gの元u=r・g,群Gの元u’=r・g’,群Gの元h=r・hを計算する。暗号文生成装置400Bは、CPU911を用いて、元uを表わすビット列と元u’を表わすビット列とを連接したビット列u‖u’をハッシュしたハッシュ値α=H(u‖u’)を計算し、整数r’=α・r mod pを計算する。暗号文生成装置400Bは、CPU911を用いて、群Gの元v=r・c+r’・dを計算する。暗号文生成装置400Bは、CPU911を用いて、元uを表わすビット列と元hを表わすビット列とを連接したビット列u‖hに基づいて鍵導出した鍵K=KDF(u‖h)を計算する。暗号文生成装置400Bは、CPU911を用いて、暗号文C=(u,u’,v)と、鍵Kとを出力する。
暗号文復号装置200B(復号装置)は、CPU911を用いて、秘密鍵(w,x,y,z)と、暗号文C=(u,u’,v)を入力する。暗号文復号装置200Bは、CPU911を用いて、元uを表わすビット列と元u’を表わすビット列とを連接したビット列u‖u’をハッシュしたハッシュ値α=H(u‖u’)を計算する。暗号文復号装置200Bは、CPU911を用いて、整数t=x+y・α mod pを計算する。暗号文復号装置200Bは、CPU911を用いて、w・u=u’とt・u=vが成立するかどうかをチェックする。成立しなければ、暗号文復号装置200Bは、「拒絶」を出力する。成立すれば、暗号文復号装置200Bは、CPU911を用いて、群Gの元h=z・uを計算し、鍵K=KDF(u‖h)を計算して、出力する。
以上説明した検証装置100Bは、このようなACE−KEM暗号システムにおいて、w・u=u’とt・u=vが成立するかどうかをチェックする処理を、高速化する。
検証装置100Bでは、整数分割部110が、CPU911を用いて、wとpとを入力して、e・w≡e(mod p)となる整数e,eを算出し、検証値算出部130が、CPU911を用いて、群Gにおける二基底スカラー倍算により、群Gの元U=e・u−e・u’を算出し、検証判定部150が、CPU911を用いて、元Uが群Gの単位元Oであるかをチェックすることにより、w・u=u’であるかを高速にチェックする。また、整数分割部110が、CPU911を用いて、tとpとを入力して、e・t≡e(mod p)となる整数e,eを算出し、検証値算出部130が、CPU911を用いて、群Gにおける二基底スカラー倍算により、群Gの元V=e・u−e・vを算出し、検証判定部150が、CPU911を用いて、元Vが群Gの単位元Oであるかどうかをチェックすることにより、t・u=vが成立するかを高速にチェックする。
実施の形態4.
実施の形態4について、図21〜図27を用いて説明する。
図21は、この実施の形態におけるIDベース公開鍵暗号システム820Cの全体構成の一例を示すシステム構成図である。
IDベース公開鍵暗号システム820Cは、実施の形態2で説明したIDベース公開鍵暗号システム820Aと同様、暗号文復号装置200Cを識別する識別データを、暗号文復号装置200Cの公開鍵として利用する暗号通信システムである。
IDベース公開鍵暗号システム820Cは、暗号パラメータ設定装置810C、鍵生成装置300C、暗号文生成装置400C、暗号文復号装置200Cを有する。
暗号パラメータ設定装置810Cは、IDベース公開鍵暗号システム820Cで利用される暗号パラメータを定める。暗号パラメータ設定装置810Cが定める暗号パラメータは、IDベース公開鍵暗号システム820Cの利用者に公開される。暗号パラメータ設定装置810Cが定める暗号パラメータには、例えば、位数p、加法群G、加法群Gの元g、加法群G’、加法群G’の元g’、乗法群G、ペアリングe、ハッシュ関数H、ハッシュ関数H’、ハッシュ関数H”などがある。
位数pは、素数である。
加法群Gの位数は、pである。元gは、加法群Gの生成元である。
加法群G’の位数は、加法群Gと同じpである。元g’は、加法群G’の生成元である。
乗法群Gの位数は、加法群G及び加法群G’と同じpである。
ペアリングeは、加法群Gの元と加法群G’の元との組を、乗法群Gの元(ペアリング値)へ写す写像である。ペアリングeは、双線形を有する。また、加法群Gの元gと加法群G’の元g’とのペアリング値e(g,g’)は、乗法群Gの単位元ではない。
ハッシュ関数Hは、任意の長さのビット列から、1以上p−1以下の整数を生成するハッシュ関数である。
ハッシュ関数H’は、乗法群Gの元から、所定の長さのビット列を生成するハッシュ関数である。
ハッシュ関数H”は、乗法群Gの元と、所定の長さのビット列と、二つの加法群Gの元の順序対との組から、1以上p−1以下の整数を生成するハッシュ関数である。
なお、加法群G’の元g’は、鍵生成装置300Cだけが使用するので、他の利用者に対して公開しなくてもよい。
また、これらの暗号パラメータがあらかじめ定められている場合には、暗号パラメータ設定装置810Cは、これらの暗号パラメータを定めなくてもよい。
また、暗号パラメータ設定装置810Cは、マスター鍵と、マスター鍵に基づいて生成した公開パラメータを生成する。暗号パラメータ設定装置810Cが生成するマスター鍵は、三つの整数α、β、γを含む。暗号パラメータ設定装置810Cが生成する公開パラメータは、加法群Gの元g、加法群Gの元g、乗法群Gの元vを含む。暗号パラメータ設定装置810Cが生成したマスター鍵は、鍵生成装置300Cに対して秘密裡に通知される。暗号パラメータ設定装置810Cが生成した公開パラメータは、IDベース公開鍵暗号システム820Cの利用者に公開される。
鍵生成装置300Cは、暗号パラメータ設定装置810Cから通知されたマスター鍵を秘密裡に保持する。鍵生成装置300Aは、公開された暗号パラメータと、公開された暗号文復号装置200Cの識別データIDと、保持したマスター鍵とに基づいて、暗号文復号装置200Cの秘密鍵を生成する。鍵生成装置300Cが生成する秘密鍵は、加法群G’の元dと、加法群G’の元dとを含む。鍵生成装置300Aが生成した秘密鍵は、暗号文復号装置200Cに対して秘密裡に通知される。
暗号文生成装置400Cは、公開された暗号パラメータ、公開パラメータ、暗号文復号装置200Cの識別データIDに基づいて、メッセージMを暗号化して、暗号文Cを生成する。暗号文生成装置400Cは、生成した暗号文Cを、暗号文復号装置200Cに対して送信する。
暗号文復号装置200Cは、鍵生成装置300Cが生成した秘密鍵を秘密裡に保持する。暗号文復号装置200Cは、暗号文生成装置400Cが送信した暗号文Cを受信する。暗号文復号装置200Cは、公開された暗号パラメータと、保持した秘密鍵とに基づいて、受信した暗号文Cを復号して、メッセージMと同じメッセージM’を生成する。
なお、暗号パラメータ設定装置810C、鍵生成装置300C、暗号文生成装置400C、暗号文復号装置200Cの外観、ハードウェア資源は、実施の形態1で説明した暗号文復号装置200の外観、ハードウェア資源と同様である。
図22は、この実施の形態における暗号パラメータ設定装置810Cの一部の機能ブロックの構成の一例を示すブロック構成図である。
暗号パラメータ設定装置810Cは、暗号パラメータ記憶部819C、マスター鍵生成部812C、公開パラメータ生成部813C、マスター鍵出力部814C、公開パラメータ出力部815Cを有する。
暗号パラメータ記憶部819Cは、磁気ディスク装置920を用いて、公開した暗号パラメータを表わすデータを記憶する。
マスター鍵生成部812Cは、暗号パラメータ記憶部819Cが記憶した暗号パラメータに基づいて、マスター鍵を生成する。
マスター鍵生成部812Cは、三つの秘密乱数生成部816C〜818Cを有する。
三つの秘密乱数生成部816C〜818Cは、それぞれ、CPU911を用いて、暗号パラメータ記憶部819Cが記憶した暗号パラメータのうち位数pを表わすデータを入力する。三つの秘密乱数生成部816C〜818Cは、それぞれ、CPU911を用いて、入力したデータが表わす位数pに基づいて、1以上p−1以下の整数をランダムに生成する。
第一の秘密乱数生成部816Cは、生成した整数を整数αとし、RAM914を用いて、生成した整数αを表わすデータを記憶する。
第二の秘密乱数生成部817Cは、生成した整数を整数βとし、RAM914を用いて、生成した整数βを表わすデータを記憶する。
第三の秘密乱数生成部818Cは、生成した整数を整数γとし、RAM914を用いて、生成した整数γを表わすデータを記憶する。
公開パラメータ生成部813Cは、暗号パラメータ記憶部819Cが記憶した暗号パラメータと、マスター鍵生成部812Cが生成したマスター鍵とに基づいて、公開パラメータを生成する。
公開パラメータ生成部813Cは、第一公開元算出部831C、公開ペアリング値算出部832C、第二公開元算出部833Cを有する。
第一公開元算出部831Cは、CPU911を用いて、暗号パラメータ記憶部819Cが記憶した暗号パラメータのうち加法群Gと元gとを表わすデータと、秘密乱数生成部816Cが記憶した整数αを表わすデータとを入力する。第一公開元算出部831Cは、CPU911を用いて、入力したデータが表わす加法群Gと元gと整数αとに基づいて、加法群Gにおける演算により、元gをα回加算した元を算出して、元gとする。第一公開元算出部831Cは、RAM914を用いて、算出した元gを表わすデータを記憶する。
公開ペアリング値算出部832Cは、CPU911を用いて、暗号パラメータ記憶部819Cが記憶した暗号パラメータのうち元gと元g’とペアリングeとを表わすデータと、秘密乱数生成部816Cが記憶した整数αを表わすデータと、秘密乱数生成部817Cが記憶した整数βを表わすデータとを入力する。公開ペアリング値算出部832Cは、CPU911を用いて、入力したデータが表わす元gと元g’とペアリングeとに基づいて、ペアリングeにより、元gと元g’とのペアリング値e(g,g’)を算出する。ペアリング値e(g,g’)は、乗法群Gの元である。公開ペアリング値算出部832Cは、CPU911を用いて、入力したデータが表わす整数αと整数βと、算出したペアリング値e(g,g’)とに基づいて、乗法群Gにおける演算により、ペアリング値e(g,g’)を、整数αと整数βとの積αβ回乗算した元を算出して、元vとする。公開ペアリング値算出部832Cは、RAM914を用いて、算出した元vを表わすデータを記憶する。
第二公開元算出部833Cは、CPU911を用いて、暗号パラメータ記憶部819Cが記憶した暗号パラメータのうち加法群Gと元gとを表わすデータと、秘密乱数生成部818Cが記憶した整数γを表わすデータとを入力する。第二公開元算出部833Cは、CPU911を用いて、入力したデータが表わす加法群Gと元gと整数γとに基づいて、加法群Gにおける演算により、元gをγ回加算した元を算出して、元gとする。第二公開元算出部833Cは、RAM914を用いて、算出した元gを表わすデータを記憶する。
マスター鍵出力部814Cは、CPU911を用いて、三つの秘密乱数生成部816C〜818Cが記憶した整数αと整数βと整数γとを表わすデータを入力する。マスター鍵出力部814Cは、CPU911を用いて、入力した整数αと整数βと整数γとを表わすデータを、マスター鍵として出力する。
マスター鍵出力部814Cが出力したマスター鍵は、鍵生成装置300Cに対して秘密裡に通知される。
公開パラメータ出力部815Cは、CPU911を用いて、第一公開元算出部831Cが記憶した元gを表わすデータと、公開ペアリング値算出部832Cが記憶した元vを表わすデータと、第二公開元算出部833Cが記憶した元gを表わすデータとを入力する。公開パラメータ出力部815Cは、CPU911を用いて、入力した元gと元gと元vとを表わすデータを、公開パラメータとして出力する。
公開パラメータ出力部815Cが出力した公開パラメータは、IDベース公開鍵暗号システム820Cの利用者に公開される。
図23は、この実施の形態における鍵生成装置300Cの機能ブロックの構成の一例を示すブロック構成図である。
鍵生成装置300Cは、暗号パラメータ記憶部390C、マスター鍵記憶部330C、識別入力部340C、秘密鍵生成部350C、秘密鍵出力部360Cを有する。
暗号パラメータ記憶部390Cは、磁気ディスク装置920を用いて、公開された暗号パラメータを表わすデータを、あらかじめ記憶している。
マスター鍵記憶部330Cは、耐タンパ性のある記憶装置を用いて、暗号パラメータ設定装置810Cから通知されたマスター鍵を秘密裡に記憶している。
識別入力部340Cは、CPU911を用いて、秘密鍵を生成すべき暗号文復号装置200Cについて、暗号文復号装置200Cを識別する識別データである任意の長さのビット列IDを入力する。識別入力部340Cは、RAM914を用いて、入力したビット列IDを記憶する。
秘密鍵生成部350Cは、暗号パラメータ記憶部390Cが記憶した暗号パラメータと、マスター鍵記憶部330Cが記憶したマスター鍵と、識別入力部340Cが入力したビット列IDとに基づいて、暗号文復号装置200Cの秘密鍵を生成する。
秘密鍵生成部350Cは、秘密乱数生成部351C、第一秘密元算出部352C、第二秘密元算出部353Cを有する。
秘密乱数生成部351Cは、CPU911を用いて、暗号パラメータ記憶部390Cが記憶した暗号パラメータのうち位数pを表わすデータを入力する。秘密乱数生成部351Cは、CPU911を用いて、入力したデータが表わす位数pに基づいて、1以上p−1以下の整数をランダムに生成し、秘密乱数rとする。秘密乱数生成部351Cは、RAM914を用いて、生成した秘密乱数rを表わすデータを記憶する。
第一秘密元算出部352Cは、CPU911を用いて、暗号パラメータ記憶部390Cが記憶した暗号パラメータのうち加法群G’と元g’とハッシュ関数Hとを表わすデータと、マスター鍵記憶部330Cが記憶したマスター鍵のうち整数αと整数βと整数γとを表わすデータと、識別入力部340Cが記憶したビット列IDと、秘密乱数生成部351Cが記憶した秘密乱数rを表わすデータとを入力する。第一秘密元算出部352Cは、CPU911を用いて、入力したデータが表わすハッシュ関数Hと、入力したビット列IDとに基づいて、ハッシュ関数Hにより、ビット列IDをハッシュしたハッシュ値H(ID)を算出する。第一秘密元算出部352Cは、CPU911を用いて、入力したデータが表わす整数αと整数βと整数γと秘密乱数rと、算出したハッシュ値H(ID)とに基づいて、整数αとハッシュ値H(ID)との積に整数γを加算した整数(α・H(ID)+γ)と秘密乱数rとの積と、整数αと整数βとの積とを加算した整数{α・β+[α・H(ID)+γ]・r}を算出する。第一秘密元算出部352Cは、CPU911を用いて、入力したデータが表わす加法群G’と元g’と、算出した整数{α・β+[α・H(ID)+γ]・r}とに基づいて、加法群G’における演算により、元g’を{α・β+[α・H(ID)+γ]・r}回加算した元を算出して、秘密元dとする。第一秘密元算出部352Cは、RAM914を用いて、算出した秘密元dを表わすデータを記憶する。
第二秘密元算出部353Cは、CPU911を用いて、暗号パラメータ記憶部390Cが記憶した暗号パラメータのうち加法群G’と元g’とを表わすデータと、秘密乱数生成部351Cが記憶した秘密乱数rを表わすデータとを入力する。第二秘密元算出部353Cは、CPU911を用いて、入力したデータが表わす加法群G’と元g’と秘密乱数rとに基づいて、加法群G’における演算により、元g’をr回加算した元を算出して、秘密元dとする。第二秘密元算出部353Cは、RAM914を用いて、算出した秘密元dを表わすデータを記憶する。
秘密鍵出力部360Cは、CPU911を用いて、第一秘密元算出部352Cが記憶した秘密元dを表わすデータと、第二秘密元算出部353Cが記憶した秘密元dを表わすデータとを入力する。秘密鍵出力部360Cは、CPU911を用いて、入力した秘密元dと秘密元dとを表わすデータを、暗号文復号装置200Cの秘密鍵として出力する。
秘密鍵出力部360Cが出力した暗号文復号装置200Cの秘密鍵は、暗号文復号装置200Cに対して秘密裡に通知される。
図24は、この実施の形態における暗号文生成装置400Cの機能ブロックの構成の一例を示すブロック構成図である。
暗号文生成装置400Cは、暗号パラメータ記憶部490C、識別記憶部410C、メッセージ入力部440C、メッセージ暗号化部450C、暗号文出力部470Cを有する。
暗号パラメータ記憶部490Cは、磁気ディスク装置920を用いて、公開された暗号パラメータ(公開パラメータを含む)を、あらかじめ記憶している。
識別記憶部410Cは、磁気ディスク装置920を用いて、暗号文の送信相手である暗号文復号装置200Cの識別データであるビット列IDを記憶している。
メッセージ入力部440Cは、CPU911を用いて、暗号文復号装置200Cに対して送信したいメッセージである所定の長さのビット列Mを入力する。なお、暗号文復号装置200Cに対して送信したいメッセージの長さが所定の長さ以上である場合、メッセージ入力部440Cは、メッセージを所定の長さに分割して、複数のビット列Mとしたものを入力する。メッセージ入力部440Cは、RAM914を用いて、入力したビット列Mを記憶する。
メッセージ暗号化部450Cは、暗号パラメータ記憶部490Cが記憶した暗号パラメータ(公開パラメータを含む)と、識別記憶部410Cが記憶したビット列IDとに基づいて、メッセージ入力部440Cが入力したビット列Mを暗号化して、暗号文Cを生成する。
メッセージ暗号化部450Cは、秘密乱数生成部451C、ペアリング値算出部452C、暗号ビット列算出部453C、第一暗号元算出部454C、第二暗号元算出部455C、暗号整数算出部456Cを有する。
秘密乱数生成部451Cは、CPU911を用いて、暗号パラメータ記憶部490Cが記憶した暗号パラメータのうち位数pを表わすデータを入力する。秘密乱数生成部451Cは、CPU911を用いて、入力したデータが表わす位数pに基づいて、1以上p−1以下の整数をランダムに生成して、秘密乱数sとする。秘密乱数生成部451Cは、RAM914を用いて、生成した秘密乱数sを表わすデータを記憶する。
ペアリング値算出部452Cは、CPU911を用いて、暗号パラメータ記憶部490Cが記憶した暗号パラメータのうち乗法群Gと元vとを表わすデータと、秘密乱数生成部451Cが記憶した秘密乱数sを表わすデータとを入力する。ペアリング値算出部452Cは、CPU911を用いて、入力したデータが表わす乗法群Gと元vと秘密乱数sとに基づいて、乗法群Gにおける演算により、元vをs回乗算した元を算出して、元kとする。ペアリング値算出部452Cは、RAM914を用いて、算出した元kを表わすデータを記憶する。
暗号ビット列算出部453Cは、CPU911を用いて、暗号パラメータ記憶部490Cが記憶した暗号パラメータのうちハッシュ関数H’を表わすデータと、メッセージ入力部440Cが記憶したビット列Mと、ペアリング値算出部452Cが記憶した元kを表わすデータとを入力する。暗号ビット列算出部453Cは、CPU911を用いて、入力したデータが表わすハッシュ関数H’と元kとに基づいて、ハッシュ関数H’により、元kをハッシュしたハッシュ値H’(k)を算出する。ハッシュ値H’(k)は、所定の長さのビット列である。暗号ビット列算出部453Cは、CPU911を用いて、入力したビット列Mと、算出したハッシュ値H’(k)とに基づいて、ビット列Mとハッシュ値H(k)との間のビットごとの排他的論理和をとり、ビット列cとする。暗号ビット列算出部453Cは、RAM914を用いて、算出したビット列cを記憶する。
第一暗号元算出部454Cは、CPU911を用いて、暗号パラメータ記憶部490Cが記憶した暗号パラメータのうち加法群Gと元gとを表わすデータと、秘密乱数生成部451Cが記憶した秘密乱数sを表わすデータとを入力する。第一暗号元算出部454Cは、CPU911を用いて、入力したデータが表わす加法群Gと元gと秘密乱数sとに基づいて、加法群Gにおける演算により、元gをs回加算した元を算出して、元cとする。第一暗号元算出部454Cは、RAM914を用いて、算出した元cを表わすデータを記憶する。
第二暗号元算出部455Cは、CPU911を用いて、暗号パラメータ記憶部490Cが記憶した暗号パラメータのうち加法群Gとハッシュ関数Hと元gと元gとを表わすデータと、識別記憶部410Cが記憶したビット列IDと、秘密乱数生成部451Cが記憶した秘密乱数sを表わすデータとを入力する。第二暗号元算出部455Cは、CPU911を用いて、入力したデータが表わすハッシュ関数Hと、入力したビット列IDとに基づいて、ハッシュ関数Hにより、ビット列IDをハッシュしたハッシュ値H(ID)を算出する。ハッシュ値H(ID)は、1以上p−1以下の整数である。第二暗号元算出部455Cは、CPU911を用いて、入力したデータが表わす加法群Gと元gと元gと秘密乱数sと、算出したハッシュ値H(ID)とに基づいて、加法群Gにおける演算により、元gをハッシュ値H(ID)と秘密乱数sとの積H(ID)・s回加算した元と、元gをs回加算した元とを加算した元を算出して、元cとする。第二暗号元算出部455Cは、RAM914を用いて、算出した元cを表わすデータを記憶する。
第二暗号元算出部455Cは算出する元cは、g=α・g、g=γ・gであるから、
Figure 2009104260
暗号整数算出部456Cは、CPU911を用いて、暗号パラメータ記憶部490Cが記憶した暗号パラメータのうち位数pとハッシュ関数H”とを表わすデータと、秘密乱数生成部451Cが記憶した秘密乱数sを表わすデータと、ペアリング値算出部452Cが記憶した元kを表わすデータと、暗号ビット列算出部453Cが記憶したビット列cと、第一暗号元算出部454Cが記憶した元cを表わすデータと、第二暗号元算出部455Cが記憶した元cを表わすデータとを入力する。暗号整数算出部456Cは、CPU911を用いて、入力したデータが表わすハッシュ関数H”と元kと元cと元cと、入力したビット列cとに基づいて、ハッシュ関数H”により、元kと、ビット列cと、元cと元cとの順序対とをハッシュしたハッシュ値H”(k,c,c,c)を算出する。ハッシュ値H”(k,c,c,c)は、1以上p−1以下の整数である。暗号整数算出部456Cは、CPU911を用いて、入力したデータが表わす位数pと秘密乱数sと、算出したハッシュ値H”(k,c,c,c)とに基づいて、秘密乱数sとハッシュ値H”(k,c,c,c)との和を、位数pで割った余りを算出して、整数tとする。暗号整数算出部456Cは、CPU911を用いて、算出した整数tを表わすデータを記憶する。
暗号文出力部470Cは、CPU911を用いて、暗号ビット列算出部453Cが記憶したビット列cと、第一暗号元算出部454Cが記憶した元cを表わすデータと、第二暗号元算出部455Cが記憶した元cを表わすデータと、暗号整数算出部456Cが記憶した整数tを表わすデータとを入力する。暗号文出力部470Cは、CPU911を用いて、入力したビット列cと、入力した元cと元cと整数tとを表わすデータとを含む暗号文Cを生成する。暗号文出力部470Cは、CPU911を用いて、生成した暗号文Cを出力する。
暗号文出力部470Cが出力した暗号文Cは、暗号文復号装置200Cに対して送信される。
図25は、この実施の形態における暗号文復号装置200Cの機能ブロックの構成の一例を示すブロック構成図である。
暗号文復号装置200Cは、暗号パラメータ記憶部290C、鍵記憶部210C、暗号文入力部220C、暗号文検証部230C、検証装置100C、復号文生成部260C、復号メッセージ出力部283Cを有する。
暗号パラメータ記憶部290Cは、磁気ディスク装置920を用いて、公開された暗号パラメータを表わすデータを、あらかじめ記憶している。
鍵記憶部210Cは、耐タンパ性のある記憶装置を用いて、あらかじめ鍵生成装置300Cが生成した秘密鍵を秘密裡に記憶している。
暗号文入力部220Cは、CPU911を用いて、暗号文生成装置400Cから受信した暗号文Cを入力する。暗号文入力部220Cは、CPU911を用いて、入力した暗号文Cに基づいて、ビット列cと、元cと元cと整数tとを表わすデータとを取得する。暗号文入力部220Cは、RAM914を用いて、取得したビット列cと、元cと元cと整数tとを表わすデータとを記憶する。
暗号文検証部230Cは、暗号パラメータ記憶部290Cが記憶した暗号パラメータと、鍵記憶部210Cが記憶した秘密鍵と、暗号文入力部220Cが入力した暗号文Cとに基づいて、検証装置100Cに入力するデータを生成する。
暗号文検証部230Cは、ペアリング値算出部231C、整数算出部232Cを有する。
ペアリング値算出部231Cは、CPU911を用いて、暗号パラメータ記憶部290Cが表わす暗号パラメータのうち乗法群Gとペアリングeとを表わすデータと、鍵記憶部210Cが記憶した秘密鍵のうち秘密元dと秘密元dとを表わすデータと、暗号文入力部220Cが記憶した元cと元cとを表わすデータとを入力する。ペアリング値算出部231Cは、CPU911を用いて、入力したデータが表わすペアリングeと元cと秘密元dとに基づいて、ペアリングeにより、元cと秘密元dとのペアリング値を算出して、ペアリング値kとする。ペアリング値kは、乗法群Gの元である。ペアリング値算出部231Cは、CPU911を用いて、入力したデータが表わすペアリングeと元cと秘密元dとに基づいて、ペアリングeにより、元cと秘密元dとのペアリング値を算出して、ペアリング値kとする。ペアリング値kは、乗法群Gの元である。ペアリング値算出部231Cは、CPU911を用いて、入力したデータが表わす乗法群Gと、算出したペアリング値kとペアリング値kとに基づいて、乗法群Gにおける演算により、ペアリング値kと、ペアリング値kの逆元とを乗算した元を算出して、元kとする。ペアリング値算出部231Cは、算出した元kを表わすデータを記憶する。
ペアリング値算出部231Cが算出した元kは、ペアリングeの双線形より、
Figure 2009104260
したがって、暗号文入力部220Cが入力した暗号文Cが正当な暗号文であれば、ペアリング値算出部231Cが算出する元kは、暗号文生成装置400Cのペアリング値算出部452Cが算出した元kと等しい。
整数算出部232Cは、CPU911を用いて、暗号パラメータ記憶部290Cが記憶した暗号パラメータのうち位数pとハッシュ関数H”とを表わすデータと、暗号文入力部220Cが記憶したビット列cと、元cと元cと整数tとを表わすデータと、ペアリング値算出部231Cが記憶した元kを表わすデータとを入力する。整数算出部232Cは、CPU911を用いて、入力したデータが表わすハッシュ関数H”とビット列cと元cと元cと、入力した元kとに基づいて、ハッシュ関数H”により、元kとビット列cと、元cと元cとの順序対とをハッシュしたハッシュ値H”(k,c,c,c)を算出する。ハッシュ値H”(k,c,c,c)は、1以上p−1以下の整数である。整数算出部232Cは、CPU911を用いて、入力したデータが表わす位数pと整数tと、算出したハッシュ値H”(k,c,c,c)とに基づいて、整数tからハッシュ値H”(k,c,c,c)を減算した整数を、位数pで割った余りを算出して、整数sとする。
ペアリング値算出部231Cが算出した元kが、暗号文生成装置400Cのペアリング値算出部452Cが算出した元kと等しければ、整数算出部232Cが算出する整数sは、秘密乱数生成部451Cが生成した秘密乱数sと等しい。
検証装置100Cは、k=v であるか及びc=s・gであるかを判断し、k=v かつc=s・gである場合に、検証成功と判定する。
検証装置100Cは、検証結果を表わすデータを出力する。
復号文生成部260Cは、CPU911を用いて、検証装置100Cが出力した検証結果を表わすデータを入力する。復号文生成部260Cは、入力したデータが表わす検証結果が「検証成功」である場合、CPU911を用いて、暗号パラメータ記憶部290Cが記憶した暗号パラメータのうちハッシュ関数H’を表わすデータと、暗号文入力部220Cが記憶したビット列cと、ペアリング値算出部231Cが記憶した元kを表わすデータとを入力する。復号文生成部260Cは、CPU911を用いて、入力したデータが表わすハッシュ関数H’と元kとに基づいて、ハッシュ関数H’により、元kをハッシュしたハッシュ値H’(k)を算出する。ハッシュ値H’(k)は、所定の長さのビット列である。復号文生成部260Cは、CPU911を用いて、入力したビット列cと、算出したハッシュ値H’(k)とに基づいて、ビット列cとハッシュ値H’(k)との間のビットごとの排他的論理和をとり、ビット列M’とする。復号文生成部260Cは、RAM914を用いて、算出したビット列M’を記憶する。
暗号文入力部220Cが入力した暗号文cが正当な暗号文であれば、ペアリング値算出部231Cが算出した元kが、暗号文生成装置400Aのペアリング値算出部452Cが算出した元kと等しいので、復号文生成部260Cが算出するビット列M’は、暗号文生成装置400Cのメッセージ入力部440Cが入力したビット列Mと等しい。
復号メッセージ出力部283Cは、CPU911を用いて、復号文生成部260Cが記憶したビット列M’を入力する。復号メッセージ出力部283Cは、CPU911を用いて、入力したビット列M’を、復号されたメッセージとして出力する。
図26は、この実施の形態における検証装置100Cの内部ブロックの構成の一例を示す詳細ブロック図である。
検証装置100Cは、整数分割部110C、二つの検証値算出部130C,130C、検証判定部150Cを有する。
検証装置100Cは、実施の形態1で説明した検証装置100と同様の装置であるが、加法群Gにおける演算と、乗法群Gにおける演算とをするため、二つの検証値算出部130C,130Cを有する。
整数分割部110Cは、CPU911を用いて、暗号パラメータ記憶部290Cが記憶した暗号パラメータのうち位数pを表わすデータを、実施の形態1で説明した位数pを表わすデータとして入力する。
整数分割部110Cは、CPU911を用いて、整数算出部232Cが記憶した整数sを表わすデータを、実施の形態1で説明した整数eを表わすデータとして入力する。
整数分割部110Cは、CPU911を用いて、入力したデータが表わす位数pと整数sとに基づいて、e・s≡e(mod p)、|e|<√p、0<e<√pを満たす整数e及び整数eを算出する。
整数分割部110Cは、RAM914を用いて、算出した整数e及び整数eを表わすデータを記憶する。
検証値算出部130Cは、加法群Gにおける演算により、加法群Gの元a=e・c−e・gを算出する。
検証値算出部130Cは、CPU911を用いて、暗号パラメータ記憶部290Cが記憶した暗号パラメータのうち元gを表わすデータを、実施の形態1で説明した元sを表わすデータとして入力する。
検証値算出部130Cは、CPU911を用いて、暗号文入力部220Cが記憶した元cを表わすデータを、実施の形態1で説明した元hを表わすデータとして入力する。
検証値算出部130Cは、CPU911を用いて、整数分割部110Cが記憶した整数eと整数eとを表わすデータを入力する。
検証値算出部130Cは、CPU911を用いて、入力したデータが表わす元gと元cと整数eと整数eとに基づいて、加法群Gにおける演算により、元cをe回加算した元と、元gをe回加算した元の逆元とを加算した元を算出して、元aとする。
検証値算出部130Cは、RAM914を用いて、算出した元aを表わすデータを記憶する。
検証値算出部130Cは、乗法群Gにおける演算により、乗法群Gの元a’=ke1・v −e2を算出する。なお、乗法群Gにおける演算を加法的に記述すれば、a’=e・k−e・vであるから、群演算の具体的計算方法が異なる点を除けば、検証値算出部130Cが行う処理は、検証値算出部130Cが行う処理と実質的に同一である。
検証値算出部130Cは、CPU911を用いて、暗号パラメータ記憶部290Cが記憶した暗号パラメータのうち元vを表わすデータを、実施の形態1で説明した元sを表わすデータとして入力する。
検証値算出部130Cは、CPU911を用いて、ペアリング値算出部231Cが記憶した元kを表わすデータを、実施の形態1で説明した元hを表わすデータとして入力する。
検証値算出部130Cは、CPU911を用いて、整数分割部110Cが記憶した整数eと整数eとを表わすデータを入力する。
検証値算出部130Cは、CPU911を用いて、入力したデータが表わす元vと元kと整数eと整数eとに基づいて、乗法群Gにおける演算により、元kをe回乗算した元と、元vをe回乗算した元の逆元とを加算した元を算出して、元a’とする。
検証値算出部130Cは、RAM914を用いて、算出した元a’を表わすデータを記憶する。
検証判定部150Cは、CPU911を用いて、検証値算出部130Cが記憶した元aを表わすデータと、検証値算出部130Cが記憶した元a’を表わすデータとを入力する。検証判定部150Cは、CPU911を用いて、入力したデータが表わす元aに基づいて、元aが加法群Gの単位元であるか否かを判定する。元aが加法群Gの単位元であれば、c=s・gなので、検証判定部150Cは、CPU911を用いて、第一の検証に成功したと判定する。検証値算出部130Cは、CPU911を用いて、入力したデータが表わす元a’に基づいて、元a’が乗法群Gの単位元であるか否かを判定する。元a’が乗法群Gの単位元であれば、k=v なので、検証判定部150Cは、CPU911を用いて、第二の検証に成功したと判定する。検証判定部150Cは、第一の検証に成功したと判定し、かつ、第二の検証に成功したと判定した場合、「検証成功」と判定し、それ以外の場合、「検証失敗」と判定する。
検証判定部150Cは、CPU911を用いて、検証結果を表わすデータを出力する。
図27は、この実施の形態における暗号文復号装置200Cが暗号文Cを復号する暗号文復号処理の流れの一例を示すフローチャート図である。
ペアリング値算出工程S731Cにおいて、ペアリング値算出部231Cは、CPU911を用いて、鍵記憶部210Cが記憶した秘密元dと、暗号文入力部220Cが入力した元cとに基づいて、ペアリングeにより、元cと元dとのペアリング値k=e(c,d)を算出する。ペアリング値算出部231Cは、CPU911を用いて、鍵記憶部210Cが記憶した秘密元dと、暗号文入力部220Cが入力した元cとに基づいて、ペアリングeにより、元cと元dとのペアリング値k=e(c,d)を算出する。ペアリング値算出部231Cは、CPU911を用いて、算出したペアリング値kとペアリング値kとに基づいて、乗法群Gにおける演算により、ペアリング値kと、ペアリング値kの逆元とを乗算した元k=k/kを算出する。
整数算出工程S732Cにおいて、整数算出部232Cは、CPU911を用いて、暗号文入力部220Cが入力したビット列cと元cと元cと、ペアリング値算出工程S731Cでペアリング値算出部231Cが算出した元kとに基づいて、ハッシュ関数H”により、元kと、ビット列cと、元cと元cとの順序対とをハッシュしたハッシュ値H”(k,c,c,c)を算出する。整数算出部232Cは、CPU911を用いて、暗号パラメータ記憶部290Cが記憶した位数pと、暗号文入力部220が入力した整数tと、算出したハッシュ値H”(k,c,c,c)とに基づいて、整数tからハッシュ値H”(k,c,c,c)を減算した整数を、位数pで割った余りを算出し、整数sとする。
整数分割工程S733Cにおいて、整数分割部110Cは、CPU911を用いて、暗号パラメータ記憶部290Cが記憶した位数pと、整数算出工程S732Cで整数算出部232Cが算出した整数sとに基づいて、e・s≡e(mod p)、|e|<√p、0<e<√pを満たす整数e及び整数eを算出する。
第一検証工程S734Cにおいて、検証値算出部130Cは、CPU911を用いて、暗号パラメータ記憶部290Cが記憶した元gと、暗号文入力部220Cが入力した元cと、整数分割工程S733Cで整数分割部110Cが算出した整数eと整数eとに基づいて、加法群Gにおける演算により、元cをe回加算した元と、元gをe回加算した元の逆元とを加算した元を算出して、元aとする。
検証判定部150Cは、CPU911を用いて、検証値算出部130Cが算出した元aに基づいて、元aが加法群Gの単位元であるか否かを判定する。
元aが加法群Gの単位元である場合(すなわち、c=s・gである場合)、第二検証工程S735Cへ進む。
元aが加法群Gの単位元でない場合(すなわち、c≠s・gである場合)、暗号文復号処理を終了する。
第二検証工程S735Cにおいて、検証値算出部130Cは、CPU911を用いて、暗号パラメータ記憶部290Cが記憶した元vと、ペアリング算出工程S731Cでペアリング値算出部231Cが算出した元kと、整数分割工程S733Cで整数分割部110Cが算出した整数eと整数eとに基づいて、乗法群Gにおける演算により、元kをe回乗算した元と、元vをe回乗算した元の逆元とを乗算した元を算出して、元a’とする。
検証判定部150Cは、CPU911を用いて、検証値算出部130Cが算出した元a’に基づいて、元a’が乗法群Gの単位元であるか否かを判定する。
元a’が乗法群Gの単位元である場合(すなわち、k=v である場合)、復号文生成工程S736Cへ進む。
元a’が乗法群Gの単位元でない場合(すなわち、k≠v である場合)、暗号文復号処理を終了する。
復号文生成工程S736Cにおいて、復号文生成部260Cは、CPU911を用いて、ペアリング値算出工程S731Cでペアリング値算出部231Cが算出した元kに基づいて、ハッシュ関数H’により、元kをハッシュしたハッシュ値H’(k)を算出する。復号文生成部260Cは、CPU911を用いて、暗号文入力部220Cが入力したビット列cと、算出したハッシュ値H’(k)とに基づいて、ビット列cとハッシュ値H’(k)との間のビットごとの排他的論理和をとり、ビット列M’とする。
復号メッセージ出力部283Cは、CPU911を用いて、復号文生成部260Cが算出したビット列M’を、復号したメッセージとして出力する。
その後、暗号文復号処理を終了する。
なお、この例では、最初に、c=s・gであるかを検証し、その後、k=v であるかを検証しているが、検証の順序は逆でもよい。また、検証値算出部130Cと検証値算出部130Cとが同時に並行して、元aと元a’を算出してもよい。
この実施の形態における暗号文復号装置200Cは、更に、暗号パラメータ記憶部290Cを有する。
上記暗号パラメータ記憶部290Cは、上記記憶装置(磁気ディスク装置920)を用いて、加法群G(加法群G)の位数pと、上記加法群G(加法群G)の生成元gと、上記位数pを位数とする乗法群Gの元vとを記憶する。
上記鍵記憶部210Cは、上記記憶装置を用いて、上記位数pを位数とする加法群G(加法群G’)の元(秘密元)dと、上記加法群G(加法群G’)の元(秘密元)dとを記憶する。
上記暗号文入力部220Cは、上記処理装置(CPU911)を用いて、ビット列cと、上記加法群Gの元cと、上記加法群Gの元cと、1以上p−1以下の整数tとを上記暗号文Cとして入力する。
上記暗号文検証部230Cは、ペアリング値算出部231Cと、整数算出部232Cとを有する。
上記ペアリング値算出部231Cは、上記処理装置(CPU911)を用いて、上記暗号文入力部220が入力した元cと、上記鍵記憶部210Cが記憶した元(秘密元)dとに基づいて、所定のペアリング関数eにより上記元cと上記元(秘密元)dとのペアリング値を算出して、上記乗法群Gの元k(=e(c,d))とし、上記暗号文入力部220Cが入力した元cと、上記鍵記憶部210Cが記憶した元dとに基づいて、上記ペアリング関数eにより上記元cと上記元dとのペアリング値を算出して、上記乗法群Gの元k(=e(c,d))とし、算出した上記元kと、算出した上記元kとに基づいて、上記元kと上記元kの逆元とを乗算して、上記乗法群Gの元k(=k/k)とする。
上記整数算出部232Cは、上記処理装置(CPU911)を用いて、上記ペアリング値算出部231Cが算出した元kと、上記暗号文入力部220Cが入力したビット列cと元cと元cとに基づいて、所定のハッシュ関数H”により上記元kと上記ビット列cと上記元cと上記元cとをハッシュしたハッシュ値を算出して、整数(ハッシュ値)H”(k,c,c,c)とし、上記暗号文入力部220Cが入力した整数tと、算出した整数H”(k,c,c,c)と、上記暗号パラメータ記憶部290Cが記憶した位数pとに基づいて、上記整数tから上記整数H”(k,c,c,c)を減算した整数を位数pで割った余りを算出して、整数s(=t−H”(k,c,c,c)mod
p)とする。
上記検証装置100Cは、上記加法群G(加法群G)を上記有限群Gとして、上記位数pとして上記暗号パラメータ記憶部290Cが記憶した位数pと、上記整数eとして上記整数算出部232Cが算出した整数sと、上記元sとして上記暗号パラメータ記憶部290Cが記憶した生成元gと、上記元hとして上記暗号文入力部220Cが入力した元cとを入力し、検証成功か否かを判定して、第一の検証結果とし、上記乗法群Gを上記有限群Gとして、上記位数pとして上記暗号パラメータ記憶部290Cが記憶した位数pと、上記整数eとして上記整数算出部232Cが算出した整数sと、上記元sとして上記暗号パラメータ記憶部290Cが記憶した元vと、上記元hとして上記ペアリング値算出部231Cが算出した元kとを入力し、検証成功か否かを判定して、第二の検証結果とする。
上記復号文生成部260Cは、上記処理装置(CPU911)を用いて、上記検証装置100Cが上記第一の検証結果及び上記第二の検証結果おいてともに検証成功と判定した場合に、上記ペアリング値算出部231Cが算出した元kに基づいて、所定のハッシュ関数H’により上記元kをハッシュしたハッシュ値を算出して、ビット列H’(k)とし、上記暗号文入力部220Cが入力したビット列cと、算出したビット列H’(k)とに基づいて、上記ビット列cと上記ビット列H’(k)との排他的論理和を取って、ビット列M’(=c XOR H’(k))とし、算出したビット列M’を上記復号文として出力する。
この実施の形態における暗号文復号装置200Cによれば、検証装置100Cがc=s・gかつk=v であるかを検証して検証成功と判定した場合に、復号文生成部260Cが復号文を生成するので、不正者に対して、暗号を解読する手がかりを与えるのを防ぐことができる。また、検証装置100Cがc=s・gかつk=v であるかを検証する処理にかかる時間を短縮できるので、暗号文復号装置200Cが暗号文を復号する処理全体にかかる時間を短縮することができるという効果を奏する。
以上説明した暗号文復号装置200Cは、BB(Boneh−Boyen)1−IDベース暗号復号装置である。
暗号文復号装置200Cは、
秘密鍵dID=(d,d)と、暗号文C=(c,c,c,t)とを入力し、
ペアリング値の比k=e(c,d)/e(c,d)を計算する計算装置(ペアリング値算出部231C)と、
整数s=t−H”(k,c,c,c)を計算する計算装置(整数算出部232C)と、
指数部(整数)sを分割する装置(整数分割部110C)と、
分割された指数(整数e及び整数e)を用いて、乗法群Gにおける二基底指数べき乗算をして、値ke1・v −e2を計算する装置(検証値算出部130C)と、
その値が乗法群Gの単位元1に等しいかどうか判定する装置(検証判定部150C)とを有する。
以上説明した暗号文復号装置200Cは、BB1−IDベース暗号システム(IDベース公開鍵暗号システム820C)内における鍵デカプセル化装置である。
暗号文復号装置200C(BB1−IDベース暗号鍵デカプセル化装置)は、
秘密鍵dID=(d,d)と、暗号文C=(c,c,c,t)とを入力し、
ペアリング値の比k=e(c,d)/e(c,d1)を計算する計算装置(ペアリング値算出部231C)と、
整数s=t−H”(k,c,c,c)を計算する計算装置(整数算出部232C)と、
指数部(整数)sを分割する装置(整数分割部110C)と、
分割された指数(整数e及び整数e)を用いて、乗法群Gにおける二基底指数べき乗算をして、値ke1・v −e2を計算する装置(検証値算出部130C)と、
その値が乗法群Gの単位元1に等しいかどうか判定する装置(検証判定部150C)とを有する。
以上説明した暗号文復号装置200C(BB1−IDベース暗号復号装置)は、
秘密鍵dID=(d,d)と、暗号文C=(c,c,c,t)とを入力し、
ペアリング値の比k=e(c,d)/e(c,d)を計算する計算装置(ペアリング値算出部231C)と、
整数s=t−H”(k,c,c,c)を計算する計算装置(整数算出部232C)と、
指数部(整数)sを分割する装置(整数分割部110C)と、
分割された指数(整数e及び整数e)を用いて、乗法群Gにおける二基底指数べき乗算をして、値ke1・v −e2を計算する装置(検証値算出部130C)と、
その値が乗法群Gの単位元1に等しいかどうか判定する装置(検証判定部150C)とを有する。
以上説明した暗号文復号装置200C(BB1−IDベース暗号鍵デカプセル化装置)は、
秘密鍵dID=(d,d)と、暗号文C=(c,c,c,t)とを入力し、
ペアリング値の比k=e(c,d)/e(c,d)を計算する計算装置(ペアリング値算出部231C)と、
整数s=t−H”(k,c,c,c)を計算する計算装置(整数算出部232C)と、
指数部(整数)sを分割する装置(整数分割部110C)と、
分割された指数(整数e及び整数e)を用いて、(超)楕円曲線上の点がなす元などの加法群Gにおける二基底スカラー倍算をして、値(e・c−e・g)を計算する装置(検証値算出部130C)と、
その値が加法群Gの単位元0に等しいかどうか判定する装置(検証判定部150C)とを有する。
以上説明したIDベース公開鍵暗号システム820Cは、BB1−IDベース暗号システムである。
IDベース公開鍵暗号システム820Cでは、位数pが素数である加法群G、加法群G’、乗法群G、加法群Gの生成元g、加法群G’の生成元g’、ペアリングeを用いる。
暗号パラメータ設定装置810Cは、設定処理(Setup)をする。暗号パラメータ設定装置810Cは、CPU911を用いて、1以上p−1以下のランダムな整数α、整数β、整数γを生成し、群Gの元g=α・g、群Gの元g =β・g、群Gの元g
=γ・gを計算する。暗号パラメータ設定装置810Cは、CPU911を用いて、群G’の元g’=α・g’、群G’の元g’=β・g’、群G’の元g’=γ・g’を計算する。暗号パラメータ設定装置810Cは、CPU911を用いて、群G’の元g’=(α・β)・g’と、乗法群Gの元であるペアリング値v=e(g,g’)(すなわち、v=e(g,g’)α・β)を計算する。暗号パラメータ設定装置810Cは、PKGの公開鍵として(g,g,g,v)を、PKGの秘密鍵として(g’,α,β,γ)を出力する。
鍵生成装置300Cは、秘密鍵導出処理(Extract)をする。鍵生成装置300Cは、CPU911を用いて、暗号文復号装置200Cを識別するビット列IDを入力し、1以上p−1以下のランダムな整数(秘密乱数)rを生成する。鍵生成装置300Cは、CPU911を用いて、整数e=α・β+(α・H(ID)+γ)・rと、群G’の元d=e・g’と、群G’の元d=r・g’とを計算し、(d,d)をIDに対する秘密鍵dIDとして出力する。
暗号文生成装置400Cは、暗号化処理(Encrypt)をする。暗号文生成装置400Cは、CPU911を用いて、平文(ビット列)Mと、受信者ID(暗号文復号装置200Cを識別するビット列ID)とを入力する。暗号文生成装置400Cは、CPU911を用いて、1以上p−1以下のランダムな整数(秘密乱数)sを生成する。暗号文生成装置400Cは、CPU911を用いて、Gの元k=v を計算する。暗号文生成装置400Cは、CPU911を用いて、ハッシュ関数H, H’, H”により、ビット列c=XOR(M,H’(k)),群Gの元c=s・g,群Gの元c=s・g+(H(ID)・s)・g,整数t=s+H”(k,c,c,c)を計算する。暗号文生成装置400Cは、CPU911を用いて、暗号文C=(c,c,c,t)を出力する。
暗号文復号装置200Cは、復号処理(Decrypt)をする。暗号文復号装置200Cは、CPU911を用いて、秘密鍵dID=(d,d)と、暗号文C=(c,c,c,t)とを入力する。暗号文復号装置200Cは、CPU911を用いて、乗法群Gの元k=e(c,d)/e(c,d)と、整数s=t−H”(k,c,c,c)とを計算し、k=v とc=s・gとが成り立つかどうかをチェックする。成立しなければ、暗号文復号装置200Cは、CPU911を用いて、「拒絶」を出力する。成立すれば、暗号文復号装置200Cは、CPU911を用いて、ビット列M=XOR(c,H’(k))を算出し、出力する。
以上説明した検証装置100Cは、このようなBB1−IDベース暗号システムにおいて、k=v とc=s・gとが成り立つかどうかをチェックする処理を、高速化する。
検証装置100Cでは、整数分割部110Cが、CPU911を用いて、sとpとを入力して、e・s≡e(mod p)となる整数e及び整数eを算出する。検証値算出部130Cは、CPU911を用いて、乗法群Gにおける二基底べき乗算により、v=ke1・v −s2を計算する。検証判定部150Cは、CPU911を用いて、v=1かどうかをチェックすることにより、k=v が成立するかを高速にチェックする。
=1が成立した場合、検証値算出部130Cは、CPU911を用いて、加法群Gにおける二基底スカラー倍算により、W=e・c−e・gを計算する。検証判定部150Cは、CPU911を用いて、W=0かどうかをチェックすることにより、c=s・gが成立するかを高速にチェックする。
実施の形態5.
実施の形態5について、図28〜図33を用いて説明する。
図28は、この実施の形態におけるIDベース署名システム820Dの全体構成の一例を示すシステム構成図である。
IDベース署名システム820Dは、署名装置400Dを識別する識別データを、署名装置400Dの公開鍵として利用する電子署名システムである。
IDベース署名システム820Dは、暗号パラメータ設定装置810D、鍵生成装置300D、署名装置400D、署名検証装置200Dを有する。
暗号パラメータ設定装置810Dは、IDベース署名システム820Dで利用される暗号パラメータを定める。暗号パラメータ設定装置810Dが定めた暗号パラメータは、IDベース署名システム820Dの利用者に公開される。暗号パラメータ設定装置810Dが定める暗号パラメータには、例えば、位数p、加法群G、加法群Gの元g、ハッシュ関数H、ハッシュ関数H’などがある。
位数pは、素数である。
加法群Gの位数は、位数pである。元gは、加法群Gの生成元である。
ハッシュ関数Hは、加法群Gの元と、任意の長さのビット列との組から、1以上p−1以下の整数を生成するハッシュ関数である。
ハッシュ関数H’は、任意の長さの二つのビット列の順序対と、加法群Gの三つの元の順序対との組から、1以上p−1以下の整数を生成するハッシュ関数である。
なお、これらの暗号パラメータがあらかじめ定められている場合には、暗号パラメータ設定装置810Dは、これらの暗号パラメータを定めなくてもよい。
また、暗号パラメータ設定装置810Dは、マスター鍵と、マスター鍵に基づいて生成した公開パラメータとを生成する。暗号パラメータ設定装置810Dが生成するマスター鍵には、1以上p−1以下の整数xが含まれる。暗号パラメータ設定装置810Dが生成したマスター鍵は、鍵生成装置300Dに対して秘密裡に通知される。また、暗号パラメータ設定装置810Dが生成する公開パラメータには、加法群Gの元Xが含まれる。暗号パラメータ設定装置810Dが生成した公開パラメータは、IDベース署名システム820Dの利用者に公開される。
鍵生成装置300Dは、暗号パラメータ設定装置810Dから通知されたマスター鍵を秘密裡に保持する。鍵生成装置300Dは、公開された暗号パラメータと、公開された署名装置400Dの識別データIDと、保持したマスター鍵とに基づいて、署名装置400Dの署名鍵を生成する。鍵生成装置300Dが生成する署名鍵には、1以上p−1以下の整数sと、加法群Gの元Rとが含まれる。鍵生成装置300Dが生成した署名鍵は、署名装置400Dに対して秘密裡に通知される。
署名装置400Dは、鍵生成装置300Dから通知された署名鍵を秘密裡に保持する。署名装置400Dは、公開された暗号パラメータ、公開パラメータと、保持した署名鍵に基づいて、メッセージMに対する署名σを生成する。署名σは、メッセージMの内容が改変されていないことを保証するものである。
署名検証装置200Dは、公開された暗号パラメータ、公開パラメータと、署名装置400Dの識別データIDとに基づいて、メッセージMに付された署名σを検証して、メッセージMが改変されていないかを判定する。署名検証装置200Dは、検証結果を出力する。
図29は、この実施の形態における暗号パラメータ設定装置810Dの一部の機能ブロックの構成の一例を示すブロック構成図である。
暗号パラメータ設定装置810Dは、暗号パラメータ記憶部819D、秘密乱数生成部812D、公開元算出部813D、マスター鍵出力部814D、公開パラメータ出力部815Dを有する。
暗号パラメータ記憶部819Dは、磁気ディスク装置920を用いて、公開した暗号パラメータを記憶する。
秘密乱数生成部812Dは、CPU911を用いて、暗号パラメータ記憶部819Dが記憶した暗号パラメータのうち位数pを表わすデータを入力する。秘密乱数生成部812Dは、CPU911を用いて、入力したデータが表わす位数pに基づいて、1以上p−1以下の整数をランダムに生成し、秘密乱数xとする。秘密乱数生成部812Dは、RAM914を用いて、生成した秘密乱数xを表わすデータを記憶する。
公開元算出部813Dは、CPU911を用いて、暗号パラメータ記憶部819Dが記憶した暗号パラメータのうち加法群Gと元gとを表わすデータと、秘密乱数生成部812Dが記憶した秘密乱数xを表わすデータとを入力する。公開元算出部813Dは、入力したデータが表わす加法群Gと元gと秘密乱数xとに基づいて、加法群Gにおける演算により、元gをx回加算した元を算出して、公開元Xとする。公開元算出部813Dは、RAM914を用いて、算出した公開元Xを表わすデータを記憶する。
マスター鍵出力部814Dは、CPU911を用いて、秘密乱数生成部812Dが記憶した秘密乱数xを表わすデータを入力する。マスター鍵出力部814Dは、CPU911を用いて、入力した秘密乱数xを表わすデータを、マスター鍵として出力する。
マスター鍵出力部814Dが出力したマスター鍵は、鍵生成装置300Dに対して秘密裡に通知される。
公開パラメータ出力部815Dは、CPU911を用いて、公開元算出部813Dが記憶した公開元Xを表わすデータを入力する。公開パラメータ出力部815Dは、CPU911を用いて、入力した公開元Xを表わすデータを、公開パラメータとして出力する。
公開パラメータ出力部815Dが出力した公開パラメータは、暗号パラメータとともに、IDベース署名システム820Dの利用者に公開される。
図30は、この実施の形態における鍵生成装置300Dの機能ブロックの構成の一例を示すブロック構成図である。
鍵生成装置300Dは、暗号パラメータ記憶部390D、マスター鍵記憶部330D、識別入力部340D、署名鍵生成部350D、署名鍵出力部360Dを有する。
暗号パラメータ記憶部390Dは、磁気ディスク装置920を用いて、公開された暗号パラメータを表わすデータを、あらかじめ記憶している。
マスター鍵記憶部330Dは、耐タンパ性のある記憶装置を用いて、暗号パラメータ設定装置810Dから通知されたマスター鍵を記憶する。
識別入力部340Dは、CPU911を用いて、署名鍵を生成すべき署名装置400Dを識別する識別データである任意の長さのビット列IDを入力する。識別入力部340Dは、RAM914を用いて、入力したビット列IDを表わすデータを記憶する。
署名鍵生成部350Dは、暗号パラメータ記憶部390Dが記憶した暗号パラメータと、マスター鍵記憶部330Dが記憶したマスター鍵と、識別入力部340Dが入力したビット列IDとに基づいて、署名装置400Dの署名鍵を生成する。
署名鍵生成部350Dは、秘密乱数生成部351D、鍵元算出部352D、鍵整数算出部353Dを有する。
秘密乱数生成部351Dは、CPU911を用いて、暗号パラメータ記憶部390Dが記憶した暗号パラメータのうち位数pを表わすデータを入力する。秘密乱数生成部351Dは、CPU911を用いて、入力したデータが表わす位数pに基づいて、1以上p−1以下の整数をランダムに生成して、秘密乱数rとする。秘密乱数生成部351Dは、RAM914を用いて、生成した秘密乱数rを表わすデータを記憶する。
鍵元算出部352Dは、CPU911を用いて、暗号パラメータ記憶部390Dが記憶した暗号パラメータのうち加法群Gと元gとを表わすデータと、秘密乱数生成部351Dが記憶した秘密乱数rを表わすデータとを入力する。鍵元算出部352Dは、CPU911を用いて、入力したデータが表わす加法群Gと元gと秘密乱数rとに基づいて、加法群Gにおける演算により、元gをr回加算した元r・gを算出して、元Rとする。鍵元算出部352Dは、RAM914を用いて、算出した元Rを表わすデータを記憶する。
鍵整数算出部353Dは、CPU911を用いて、暗号パラメータ記憶部390Dが記憶した暗号パラメータのうち位数pとハッシュ関数Hとを表わすデータと、マスター鍵記憶部330Dが記憶したマスター鍵のうち秘密乱数xを表わすデータと、識別入力部340Dが記憶したビット列IDと、秘密乱数生成部351Dが記憶した秘密乱数rを表わすデータと、鍵元算出部352Dが算出した元Rを表わすデータとを入力する。鍵整数算出部353Dは、CPU911を用いて、入力したデータが表わすハッシュ関数Hと元Rと、入力したビット列IDとに基づいて、ハッシュ関数Hにより、元Rとビット列IDとの組をハッシュしたハッシュ値H(R,ID)を算出する。鍵整数算出部353Dは、CPU911を用いて、入力したデータが表わす位数pと秘密乱数xと秘密乱数rと、算出したハッシュ値H(R,ID)とに基づいて、ハッシュ値H(R,ID)と秘密乱数xとの積と、秘密乱数rとの和を、位数pで割った余りを算出して、整数sとする。鍵整数算出部353Dは、RAM914を用いて、算出した整数sを表わすデータを記憶する。
署名鍵出力部360Dは、CPU911を用いて、鍵元算出部352Dが記憶した元Rを表わすデータと、鍵整数算出部353Dが記憶した整数sを表わすデータとを入力する。署名鍵出力部360Dは、CPU911を用いて、入力した整数sと元Rとを表わすデータを、署名鍵として出力する。
署名鍵出力部360Dが出力した署名鍵は、署名装置400Dに対して秘密裡に通知される。
図31は、この実施の形態における署名装置400Dの機能ブロックの構成の一例を示すブロック構成図である。
署名装置400Dは、暗号パラメータ記憶部490D、識別記憶部410D、署名鍵記憶部420D、メッセージ入力部440D、署名生成部450D、署名出力部470Dを有する。
暗号パラメータ記憶部490Dは、磁気ディスク装置920を用いて、公開された暗号パラメータを表わすデータを、あらかじめ記憶している。
識別記憶部410Dは、磁気ディスク装置920を用いて、署名装置400D自身を識別するビット列IDを記憶している。
署名鍵記憶部420Dは、耐タンパ性のある記憶装置を用いて、鍵生成装置300Dが生成した署名鍵を表わすデータを記憶している。
メッセージ入力部440Dは、CPU911を用いて、署名すべきメッセージである任意の長さのビット列Mを入力する。メッセージ入力部440Dは、RAM914を用いて、入力したビット列Mを記憶する。
署名生成部450Dは、暗号パラメータ記憶部490Dが記憶した暗号パラメータと、識別記憶部410Dが記憶したビット列IDと、署名鍵記憶部420Dが記憶した署名鍵と、メッセージ入力部440Dが入力したビット列Mとに基づいて、署名σを生成する。
署名生成部450Dは、第一署名元算出部451D、秘密乱数生成部452D、第二署名元算出部453D、チャレンジ算出部454D、署名整数算出部455Dを有する。
第一署名元算出部451Dは、CPU911を用いて、暗号パラメータ記憶部490Dが記憶した暗号パラメータのうち加法群Gと元gとを表わすデータと、署名鍵記憶部420Dが記憶した署名鍵のうち整数sを表わすデータとを入力する。第一署名元算出部451Dは、CPU911を用いて、入力したデータが表わす加法群Gと元gと整数sとに基づいて、加法群Gにおける演算により、元gをs回加算した元を算出して、元Sとする。第一署名元算出部451Dは、RAM914を用いて、算出した元Sを表わすデータを記憶する。
なお、元Sはビット列Mにかかわらず一定なので、第一署名元算出部451Dは、メッセージ入力部440Dがビット列Mを入力する前に、あらかじめ元Sを算出し、磁気ディスク装置920を用いて記憶しておいてもよい。
秘密乱数生成部452Dは、CPU911を用いて、暗号パラメータ記憶部490Dが記憶した暗号パラメータのうち位数pを表わすデータを入力する。秘密乱数生成部452Dは、CPU911を用いて、入力したデータが表わす位数pに基づいて、1以上p−1以下の整数をランダムに生成し、秘密乱数yとする。秘密乱数生成部452Dは、RAM914を用いて、生成した秘密乱数yを表わすデータを記憶する。
第二署名元算出部453Dは、CPU911を用いて、暗号パラメータ記憶部490Dが記憶した暗号パラメータのうち加法群Gと元gとを表わすデータと、秘密乱数生成部452Dが記憶した秘密乱数yを表わすデータとを入力する。第二署名元算出部453Dは、CPU911を用いて、入力したデータが表わす加法群Gと元gと秘密乱数yとに基づいて、加法群Gにおける演算により、元gをy回加算した元を算出して、元Yとする。第二署名元算出部453Dは、RAM914を用いて、算出した元Yを表わすデータを記憶する。
チャレンジ算出部454Dは、CPU911を用いて、暗号パラメータ記憶部490Dが記憶した暗号パラメータのうちハッシュ関数H’を表わすデータと、識別記憶部410Dが記憶したビット列IDと、署名鍵記憶部420Dが記憶した署名鍵のうち元Rを表わすデータと、メッセージ入力部440Dが記憶したビット列Mと、第一署名元算出部451Dが記憶した元Sを表わすデータと、第二署名元算出部453Dが記憶した元Yを表わすデータとを入力する。チャレンジ算出部454Dは、CPU911を用いて、入力したデータが表わす元Rと元Sと元Yと、入力したビット列IDとビット列Mとに基づいて、ハッシュ関数H’により、ビット列IDとビット列Mとの順序対と、元Rと元Sと元Yとの順序対との組をハッシュしたハッシュ値を算出し、ハッシュ値cとする。ハッシュ値cは、1以上p−1以下の整数である。チャレンジ算出部454Dは、RAM914を用いて、算出したハッシュ値cを表わすデータを記憶する。
署名整数算出部455Dは、CPU911を用いて、暗号パラメータ記憶部490Dが記憶した暗号パラメータのうち位数pを表わすデータと、署名鍵記憶部420Dが記憶した署名鍵のうち整数sを表わすデータと、秘密乱数生成部452Dが記憶した秘密乱数yを表わすデータと、チャレンジ算出部454Dが記憶したハッシュ値cを表わすデータとを入力する。署名整数算出部455Dは、CPU911を用いて、入力したデータが表わす位数pと整数sと秘密乱数yとハッシュ値cとに基づいて、ハッシュ値cと整数sとの積と、秘密乱数yとの和を、位数pで割った余りを算出して、整数zとする。署名整数算出部455Dは、RAM914を用いて、算出した整数zを表わすデータを記憶する。
署名出力部470Dは、CPU911を用いて、署名鍵記憶部420Dが記憶した署名鍵のうち元Rを表わすデータと、第一署名元算出部451Dが記憶した元Sを表わすデータと、第二署名元算出部453Dが記憶した元Yを表わすデータと、署名整数算出部455Dが記憶した整数zを表わすデータとを入力する。署名出力部470Dは、CPU911を用いて、入力したデータに基づいて、入力した元Rと元Sと元Yと整数zとを表わすデータを含む署名σを生成する。署名出力部470Dは、CPU911を用いて、生成した署名σを出力する。
図32は、この実施の形態における署名検証装置200Dの機能ブロックの構成の一例を示すブロック構成図である。
署名検証装置200Dは、暗号パラメータ記憶部290D、識別記憶部210D、メッセージ入力部225D、署名入力部220D、署名検証部230D、検証装置100D、検証結果出力部260Dを有する。
暗号パラメータ記憶部290Dは、磁気ディスク装置920を用いて、公開された暗号パラメータ(公開パラメータも含む)を表わすデータを、あらかじめ記憶している。
識別記憶部210Dは、磁気ディスク装置920を用いて、署名装置400Dを識別するビット列IDを記憶している。
メッセージ入力部225Dは、CPU911を用いて、署名σを付されたメッセージであるビット列Mを入力する。メッセージ入力部225Dは、RAM914を用いて、入力したビット列Mを記憶する。
署名入力部220Dは、CPU911を用いて、メッセージ入力部225Dが入力したビット列Mに付された署名σを入力する。署名入力部220Dは、CPU911を用いて、入力した署名σから、元Rと元Sと元Yと整数zとを表わすデータを取得する。署名入力部220Dは、RAM914を用いて、取得した元Rと元Sと元Yと整数zとを表わすデータを記憶する。
署名検証部230Dは、チャレンジ算出部231D、整数算出部232D、検証元算出部233D、第一検証部250Dを有する。
チャレンジ算出部231Dは、CPU911を用いて、暗号パラメータ記憶部290Dが記憶したハッシュ関数H’を表わすデータと、識別記憶部210Dが記憶した署名装置400Dを識別するビット列IDと、署名入力部220Dが記憶した元Rと元Sと元Yとを表わすデータと、メッセージ入力部225Dが記憶したビット列Mとを入力する。チャレンジ算出部231Dは、CPU911を用いて、入力したデータが表わすハッシュ関数H’と元Rと元Sと元Yと、入力したビット列IDとビット列Mとに基づいて、ハッシュ関数H’により、ビット列IDとビット列Mとの順序対と、元Rと元Sと元Yとの順序対との組をハッシュしたハッシュ値を算出して、ハッシュ値cとする。ハッシュ値cは、1以上p−1以下の整数である。チャレンジ算出部231Dは、RAM914を用いて、算出したハッシュ値cを表わすデータを記憶する。
ビット列Mが改変されていなければ、チャレンジ算出部231Dが算出するハッシュ値cは、署名装置400Dのチャレンジ算出部454Dが算出したハッシュ値cと等しい。
整数算出部232Dは、CPU911を用いて、暗号パラメータ記憶部290Dが記憶した暗号パラメータのうちハッシュ関数Hを表わすデータと、識別記憶部210Dが記憶した署名装置400Dを識別するビット列IDと、署名入力部220Dが記憶した元Rを表わすデータとを入力する。整数算出部232Dは、CPU911を用いて、入力したデータが表わすハッシュ関数Hと元Rと、入力したビット列IDとに基づいて、ハッシュ関数Hにより、元Rとビット列IDとの組をハッシュしたハッシュ値を算出して、ハッシュ値hとする。ハッシュ値hは、1以上p−1以下の整数である。整数算出部232Dは、CPU911を用いて、算出したハッシュ値hを表わすデータを記憶する。
検証元算出部233Dは、CPU911を用いて、暗号パラメータ記憶部290Dが記憶した暗号パラメータのうち加法群Gを表わすデータと、署名入力部220Dが記憶した元Rと元Sとを表わすデータとを入力する。検証元算出部233Dは、CPU911を用いて、入力したデータが表わす加法群Gと元Rと元Sとに基づいて、加法群Gにおける演算により、元Sと、元Rの逆元とを加算した元を算出して、元R’とする。検証元算出部233Dは、RAM914を用いて、算出した元R’を表わすデータを記憶する。
第一検証部250Dは、z・g=Y+c・Sであるかを検証する。
第一検証部250Dは、CPU911を用いて、暗号パラメータ記憶部290Dが記憶した暗号パラメータのうち加法群Gと元gとを表わすデータと、署名入力部220Dが記憶した元Sと元Yと整数zとを表わすデータと、チャレンジ算出部231Dが記憶したハッシュ値cを表わすデータとを入力する。第一検証部250Dは、CPU911を用いて、入力したデータが表わす加法群Gと元gと元Sと元Yと整数zとハッシュ値cとに基づいて、加法群Gにおける演算により、元Sをc回加算した元と、元Yとを加算した元Y+c・Sが、元gをz回加算した元z・gと等しいか否かを判定する。第一検証部250Dは、CPU911を用いて、元z・gと元Y+c・Sとが等しい場合、「検証成功」と判定し、元z・gと元Y+c・Sとが等しくない場合、「検証失敗」と判定する。第一検証部250Dは、CPU911を用いて、検証結果を表わすデータを記憶する。
Y=y・g、S=s・g、z=y+c・s mod pなので、
Figure 2009104260
したがって、ビット列Mが改変されていなければ、z・g=Y+c・Sが成立する。
検証装置100Dは、R’=h・Xであるかを検証する。
検証装置100Dは、実施の形態1で説明した検証装置100と同様の装置である。
検証装置100Dは、CPU911を用いて、暗号パラメータ記憶部290Dが記憶した暗号パラメータのうち位数pを表わすデータを、実施の形態1で説明した位数pを表わすデータとして入力する。
検証装置100Dは、CPU911を用いて、整数算出部232Dが記憶したハッシュ値hを表わすデータを、実施の形態1で説明した整数eを表わすデータとして入力する。
検証装置100Dは、CPU911を用いて、検証元算出部233Dが記憶した元R’を表わすデータを、実施の形態1で説明した元hを表わすデータとして入力する。
検証装置100Dは、CPU911を用いて、暗号パラメータ記憶部290Dが記憶した暗号パラメータのうち公開元Xを表わすデータを、実施の形態1で説明した元sを表わすデータとして入力する。
検証装置100Dは、CPU911を用いて、入力したデータが表わす位数pとハッシュ値hと元R’と公開元Xとに基づいて、R’=h・Xであるかを検証する。
検証装置100Dは、CPU911を用いて、R’=h・Xである場合、「検証成功」と判定し、R’≠h・Xである場合、「検証失敗」と判定する。
検証装置100Dは、CPU911を用いて、検証結果を表わすデータを出力する。
R=r・g、S=s・g=r+H(R,ID)・x mod p、h=H(R,ID)、X=x・g、なので、
Figure 2009104260
したがって、ビット列Mが改変されていなければ、R’=h・Xが成立する。
検証結果出力部260Dは、CPU911を用いて、第一検証部250Dが記憶した検証結果を表わすデータと、検証結果出力部260Dが出力した検証結果を表わすデータとを入力する。検証結果出力部260Dは、CPU911を用いて、入力した二つの検証結果に基づいて、第一検証部250D及び検証装置100Dがともに「検証成功」と判定した場合に「検証成功」と判定し、それ以外の場合に「検証失敗」と判定する。検証結果出力部260Dは、CPU911を用いて、検証結果を表わすデータを出力する。
図33は、この実施の形態における署名検証装置200Dは、署名σを検証する署名検証処理の流れの一例を示すフローチャート図である。
チャレンジ算出工程S731Dにおいて、チャレンジ算出部231Dは、CPU911を用いて、識別記憶部210Dが記憶したビット列IDと、署名入力部220Dが入力した元Rと元Sと元Yと、メッセージ入力部225Dが入力したビット列Mとに基づいて、ハッシュ関数H’により、ビット列IDとビット列Mとの順序対と、元Rと元Sと元Yとの順序対との組をハッシュしたハッシュ値H’(ID,R,S,Y,M)を算出して、ハッシュ値cとする。
第一検証工程S732Dにおいて、第一検証部250Dは、CPU911を用いて、暗号パラメータ記憶部290Dが記憶した位数pと元gと、署名入力部220Dが入力した元Sと元Yと整数zと、チャレンジ算出工程S731Dでチャレンジ算出部231Dが算出したハッシュ値cとに基づいて、z・g=Y+c・Sであるか検証する。
z・g=Y+c・Sである場合、整数算出工程S733Dへ進む。
z・g≠Y+c・Sである場合、失敗判定工程S737Dへ進む。
整数算出工程S733において、整数算出部232Dは、CPU911を用いて、識別記憶部210Dが記憶したビット列IDと、署名入力部220Dが入力した元Rとに基づいて、ハッシュ関数Hにより、元Rとビット列IDとの組をハッシュしたハッシュ値H(R,ID)を算出して、ハッシュ値hとする。
検証元算出工程S734Dにおいて、検証元算出部233Dは、CPU911を用いて、署名入力部220Dが入力した元Rと元Sとに基づいて、加法群Gにおける演算により、元Sと、元Rの逆元とを加算した元S−Rを算出して、元R’とする。
第二検証工程S735Dにおいて、検証装置100Dは、CPU911を用いて、暗号パラメータ記憶部290Dが記憶した位数pと元Xと、整数算出工程S733Dで整数算出部232Dが算出したハッシュ値hと、検証元算出工程S734Dで検証元算出部233Dが算出した元R’とに基づいて、R’=h・Xであるか検証する。
R’=h・Xである場合、成功判定工程S736Dへ進む。
R’≠h・Xである場合、失敗判定工程S737Dへ進む。
成功判定工程S736において、検証結果出力部260Dは、CPU911を用いて、検証成功と判定し、検証結果を出力する。
その後、署名検証処理を終了する。
失敗判定工程S737Dにおいて、検証結果出力部260Dは、CPU911を用いて、検証失敗と判定し、検証結果を出力する。
その後、署名検証処理を終了する。
なお、この例では、最初にz・g=Y+c・Sであるか検証し、次にR’=h・Xであるか検証しているが、検証の順序は、いずれが先であってもよい。
この実施の形態における署名検証装置200Dは、データを処理する処理装置(CPU911)と、メッセージ入力部225Dと、署名入力部220Dと、署名検証部230Dと、検証装置100Dと、検証結果出力部260Dとを有する。
上記メッセージ入力部225Dは、上記処理装置(CPU911)を用いて、メッセージ(ビット列M)を入力する。
上記署名入力部220Dは、上記処理装置(CPU911)を用いて、上記メッセージ入力部225Dが入力したメッセージ(ビット列M)に対する署名σを入力する。
上記署名検証部230Dは、上記処理装置(CPU911)を用いて、上記メッセージ入力部225Dが入力したメッセージ(ビット列M)と、上記署名入力部220Dが入力した署名σとに基づいて、上記検証装置100Dに入力する整数e(ハッシュ値h)と、上記有限群(加法群)Gの元s(公開元X)と、上記有限群(加法群)Gの元h(元R’)とを算出する。
上記検証装置100Dは、上記署名検証部230Dが算出した整数e(ハッシュ値h)と、上記有限群(加法群)Gの元s(公開元X)と、上記有限群(加法群)Gの元h(元R’)とを入力して、検証成功か否かを判定する。
上記検証結果出力部260Dは、上記処理装置(CPU911)を用いて、上記検証装置100Dが検証した結果に基づいて、検証成功であるか否か表わす検証結果を出力する。
この実施の形態における署名検証装置200Dによれば、検証装置100Dがh=e・sであるかを判定することにより、署名を検証することができる。また、検証装置100Dが署名の整合性を検証する処理にかかる時間を短縮することができるので、署名検証装置200Dが署名を検証する処理全体にかかる時間を短縮することができるという効果を奏する。
この実施の形態における署名検証装置200Dは、更に、データを記憶する記憶装置(磁気ディスク装置920、RAM914など)と、暗号パラメータ記憶部290Dと、識別記憶部210Dとを有する。
上記暗号パラメータ記憶部290Dは、上記記憶装置(磁気ディスク装置920)を用いて、上記有限群(加法群)Gの位数pと、上記有限群(加法群)Gの生成元gと、上記有限群(加法群)Gの元(公開元)Xとを記憶する。
上記識別記憶部210Dは、上記記憶装置(磁気ディスク装置920)を用いて、署名装置400Dを識別するビット列IDを記憶する。
上記メッセージ入力部225Dは、上記処理装置(CPU911)を用いて、ビット列Mを上記メッセージとして入力する。
上記署名入力部220Dは、上記処理装置(CPU911)を用いて、上記有限群(加法群)Gの元Rと、上記有限群(加法群)Gの元Sと、上記有限群(加法群)Gの元Yと、1以上p−1以下の整数zとを上記署名σとして入力する。
上記署名検証部230Dは、整数算出部232Dと、検証元算出部233Dと、チャレンジ算出部231Dと、第一検証部250Dとを有する。
上記整数算出部232Dは、上記処理装置(CPU911)を用いて、上記署名入力部220Dが入力した元Rと、上記識別記憶部210Dが記憶したビット列IDとに基づいて、所定のハッシュ関数Hにより上記元Rと上記ビット列Iとをハッシュしたハッシュ値を算出して、整数h(=H(R,ID))とする。
上記検証元算出部233Dは、上記処理装置(CPU911)を用いて、上記署名入力部220Dが入力した元Rと元Sとに基づいて、上記元Sと、上記元Rの逆元とを加算して、上記有限群(加法群)Gの元R’(=S−R)とする。
上記チャレンジ算出部231Dは、上記処理装置(CPU911)を用いて、上記識別記憶部210Dが記憶したビット列IDと、上記署名入力部220Dが入力した元Rと元Sと元Yと、上記メッセージ入力部225Dが入力したビット列Mとに基づいて、所定のハッシュ関数H’により上記ビット列IDと上記元Rと上記元Sと上記元Yと上記ビット列Mとをハッシュしたハッシュ値を算出して、整数(ハッシュ値)c(=H’(ID,R,S,Y,M))とする。
上記第一検証部250Dは、上記処理装置(CPU911)を用いて、上記暗号パラメータ記憶部290Dが記憶した生成元gと、上記署名入力部220Dが入力した元Sと元Yと整数zと、上記チャレンジ算出部231Dが算出した整数(ハッシュ値)cとに基づいて、上記元Sを上記整数(ハッシュ値)c回加算した元c・Sと上記元Yとを加算した元Y+c・Sが、上記生成元gを上記整数z回加算した元z・gと等しいか否かを判定し、上記元Y+c・Sと上記元z・gとが等しい場合に、検証成功と判定して、第一の検証結果とする。
上記検証装置100Dは、上記位数pとして上記暗号パラメータ記憶部290Dが記憶した位数pと、上記整数eとして上記整数算出部232Dが算出した整数hと、上記元sとして上記暗号パラメータ記憶部290Dが記憶した元Xと、上記元hとして上記検証元算出部233Dが算出した元R’とを入力し、検証成功か否かを判定して、第二の検証結果とする。
上記検証結果出力部260Dは、上記処理装置(CPU911)を用いて、上記第一検証部250Dが検証した第一の検証結果と、上記検証装置100Dが検証した第二の検証結果とに基づいて、上記第一の検証結果及び上記第二の検証結果においてともに検証成功と判定した場合に、検証成功であることを表わす検証結果を出力する。
この実施の形態における署名検証装置200Dによれば、検証装置100DがR’=h・Xであるかを検証するので、署名σを検証することができる。また、検証装置100DがR’=h・Xであるかを検証する処理にかかる時間を短縮することができるので、署名検証装置200Dが署名を検証する処理全体にかかる時間を短縮することができるという効果を奏する。
以上説明した署名検証装置200Dは、乗法群における指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群におけるスカラー倍算により、乗法群の元sをe回乗算した元sまたは加法群の元sをe回加算した元e・sが、既知の元hと一致するかどうかを検証することにより、署名が正しいか否かを判定するディジタル署名検証装置である。
署名検証装置200Dは、
指数部(整数e)を分割する装置(整数分割部110)と、
分割された指数(整数e及び整数e)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値he1・e−e2またはe・h−e・sを計算する装置(検証値算出部130)と、
その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
以上説明した署名検証装置200D(ディジタル署名検証装置)は、
指数(整数)eと、暗号で使用する乗法群または加法群の群位数pとを入力して、位数pのビット長の半分のビット長を有する二つの整数e,e(ただし、e・e≡e(mod p)。)を計算する計算装置(整数分割部110)と、
e2・h−e1=1またはe・s−e・h=0を検証する検証装置(検証値算出部130、検証判定部150)とを有する。
以上説明した整数分割部110は、拡張ユークリッド互除法を計算することにより、指数部(整数e)を分割する。
以上説明した整数分割部110は、二つの整数の繰り返し除算において、
除算をする整数v及び除算される整数vが、それぞれ、前ステップの除算の剰余v、及び前ステップの除算をする整数vである計算装置(第三剰余算出部117)と、
各ステップの除算結果の剰余vがある一定の数(√p)以上、又はある一定の数(√p)以下であることを判定する計算装置(適合性判定部116)とを有する。
以上説明した署名検証装置200Dは、BNN(Bellare−Namprempre−Neven)−IDベース署名検証装置である。
署名検証装置200Dは、
秘密鍵生成センタ(鍵生成装置300D)の公開鍵である乗法群または加法群の元Xと、署名者(署名装置400D)の秘密鍵(署名鍵)の一部である元Rと、署名σの一部である元Sと、署名者を識別するビット列IDとに基づいて、元R・XH(R,ID)またはR+H(R,ID)・Xが元Sと一致するかどうか検証するため、
指数部(ハッシュ値h=H(R,ID))を分割する装置(整数分割部110)と、
分割された指数(整数e及び整数e)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値(S/R)e1・X−e2またはe・(S−R)−e・Xを計算する装置(検証値算出部130)と、
その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
以上説明したIDベース署名システム820Dは、BNN−IDベース認証法をFiat−Shamir変換したBNN−IDベース署名法による署名システムである。
IDベース認証システム820Eでは、位数pが素数である乗法群Gと、乗法群Gの生成元gとを用いる。
暗号パラメータ設定装置810Dは、PKG用鍵生成処理をする。暗号パラメータ設定装置810Dは、CPU911を用いて、1以上p−1以下のランダムな整数xを生成する。暗号パラメータ設定装置810Dは、CPU911を用いて、乗法群Gの元X=gを計算する。暗号パラメータ設定装置810Dは、CPU911を用いて、群Gの元XをPKG公開鍵、整数xをPKG秘密鍵として出力する。
鍵生成装置300Dは、ユーザ秘密鍵導出処理をする。鍵生成装置300Dは、CPU911を用いて、PKG秘密鍵xと、証明装置400Eを識別するビット列IDとを入力する。まず、鍵生成装置300Dは、CPU911を用いて、1以上p−1以下のランダムな整数(秘密乱数)rを生成する。鍵生成装置300Dは、CPU911を用いて、群Gの元R=gと、整数s=r+H(R,ID)・xとを計算し、(R,s)をユーザ秘密鍵として出力する。
署名装置400Dは、署名生成処理をする。署名装置400Dは、CPU911を用いて、メッセージMと秘密鍵(R,s)とを入力する。まず、署名装置400Dは、CPU911を用いて、1以上p−1以下のランダムな整数(秘密乱数)yを生成する。署名装置400Dは、CPU911を用いて、群Gの元S=gと、群Gの元Y=gとを計算し、整数c=H(S,Y,R,M)を計算する。署名装置400Dは、CPU911を用いて、整数z=y+c・s mod pを計算し、(c,z,S,Y,R)を署名として出力する。
署名検証装置200Dは、署名検証処理をする。署名検証装置200Dは、CPU911を用いて、署名(c,z,S,Y,R)と、署名装置400Dを識別するビット列IDとを入力する。署名検証装置200Dは、g=Y・SとS=R・XH(R,ID)とが成立するか、元S,元YがGの元であるか、整数zが1以上p−1以下であるかを検証する。すべて成立すれば、署名検証装置200Dは、CPU911を用いて、署名検証合格と判定し、そうでなければ、署名検証不合格と判定する。
以上説明した検証装置100Dは、このようなBNN−IDベース署名システムにおいて、S=R・XH(R,ID)であるかどうかを検証する処理を、高速化する。
検証装置100Dでは、整数分割部110が、CPU911を用いて、h(=H(R,ID))とpとを入力し、e・h≡e(mod p)となる整数e及び整数eを算出する。検証値算出部130は、CPU911を用いて、乗法群Gにおける二基底べき乗算により、X=Xe1・R’e2(ただし、R’=S・R−1。)を計算する。検証装置100Eは、X=1かどうかをチェックすることにより、S=R・XH(R,ID が成立するかを、高速にチェックする。
実施の形態6.
実施の形態6について、図34〜図37を用いて説明する。
図34は、この実施の形態におけるIDベース認証システム820Eの全体構成の一例を示すシステム構成図である。
IDベース認証システム820Eは、証明装置400Eが偽物ではないことを、認証装置200Eが認証するシステムである。このとき、認証装置200Eは、証明装置400Eを識別する識別データを証明装置400Eの公開鍵として利用する。
IDベース認証システム820Eは、暗号パラメータ設定装置810D、鍵生成装置300D、証明装置400E、認証装置200Eを有する。
暗号パラメータ設定装置810D、鍵生成装置300Dは、実施の形態5で説明したものと同様なので、ここでは説明を省略する。
証明装置400Eは、認証装置200Eに対して、認証要求メッセージを送信する。証明装置400Eが送信する認証要求メッセージには、加法群Gの元R、元S、元Yが含まれる。
認証装置200Eは、認証要求メッセージを受信すると、証明装置400Eに対して、質問メッセージを送信する。認証装置200Eが送信する質問メッセージには、1以上p−1以下の整数cが含まれる。
証明装置400Eは、質問メッセージを受信すると、認証装置200Eに対して回答メッセージを送信する。証明装置400Eが送信する回答メッセージには、整数cに基づいて算出した1以上p−1以下の整数zが含まれる。
認証装置200Eは、受信した認証要求メッセージに含まれる元R、元S、元Yと、受信した回答メッセージに含まれる整数zとを検証して、整合性があれば、証明装置400Eが偽物ではないことを認証する。
図35は、この実施の形態における証明装置400Eの機能ブロックの構成の一例を示すブロック構成図である。
なお、実施の形態5で説明した署名装置400Dと共通する部分については、同一の符号を付し、ここでは説明を省略する。
証明装置400Eは、暗号パラメータ記憶部490D、署名鍵記憶部420D、署名生成部450D、認証要求送信部470E、質問受信部454E、回答送信部475Eを有する。
認証要求送信部470Eは、CPU911を用いて、署名鍵記憶部420Dが記憶した署名鍵のうち元Rを表わすデータと、第一署名元算出部451Dが記憶した元Sを表わすデータと、第二署名元算出部453Dが記憶した元Yを表わすデータとを入力する。認証要求送信部470Eは、CPU911を用いて、入力した元Rと元Sと元Yとを表わすデータを含む認証要求メッセージを生成する。認証要求送信部470Eは、通信装置915を用いて、生成した認証要求メッセージを、認証装置200Eに対して送信する。
質問受信部454Eは、通信装置915を用いて、認証装置200Eが送信した質問メッセージを受信する。質問受信部454Eは、CPU911を用いて、受信した質問メッセージに含まれる整数cを表わすデータを取得する。質問受信部454Eは、RAM914を用いて、取得した整数cを表わすデータを記憶する。
署名整数算出部455Dは、CPU911を用いて、暗号パラメータ記憶部490Dが記憶した暗号パラメータのうち位数pを表わすデータと、署名鍵記憶部420Dが記憶した署名鍵のうち整数sを表わすデータと、秘密乱数生成部452Dが記憶した秘密乱数yを表わすデータと、質問受信部454Eが記憶した整数cを表わすデータとを入力する。署名整数算出部455Dは、CPU911を用いて、入力したデータが表わす位数pと整数sと秘密乱数yと整数cとに基づいて、整数cと整数sとの積と、秘密乱数yとの和を、位数pで割った余りを算出して、整数zとする。署名整数算出部455Dは、RAM914を用いて、算出した整数zを表わすデータを記憶する。
回答送信部475Eは、CPU911を用いて、署名整数算出部455Dが記憶した整数zを表わすデータを入力する。回答送信部475Eは、CPU911を用いて、入力した整数zを表わすデータを含む回答メッセージを生成する。回答送信部475Eは、通信装置915を用いて、生成した回答メッセージを、認証装置200Eに対して送信する。
図36は、この実施の形態における認証装置200Eの機能ブロックの構成の一例を示すブロック構成図である。
なお、実施の形態5で説明した署名検証装置200Dと共通する部分については、同一の符号を付し、ここでは説明を省略する。
認証装置200Eは、暗号パラメータ記憶部290D、識別記憶部210D、認証要求受信部220E、チャレンジ生成部231E、質問送信部226E、回答受信部227E、署名検証部230D、検証装置100D、認証結果出力部260Eを有する。
認証要求受信部220Eは、通信装置915を用いて、証明装置400Eが送信した認証要求メッセージを受信する。認証要求受信部220Eは、CPU911を用いて、受信した認証要求メッセージに含まれる元Rと元Sと元Yとを表わすデータを取得する。認証要求受信部220Eは、RAM914を用いて、取得した元Rと元Sと元Yとを表わすデータを記憶する。
チャレンジ生成部231Eは、認証要求受信部220Eが認証要求メッセージを受信した場合に、CPU911を用いて、1以上p−1以下の整数をランダムに生成して、整数cとする。チャレンジ生成部231Eは、RAM914を用いて、生成した整数cを表わすデータを記憶する。
質問送信部226Eは、CPU911を用いて、チャレンジ生成部231Eが記憶した整数cを表わすデータを入力する。質問送信部226Eは、CPU911を用いて、入力した整数cを表わすデータを含む質問メッセージを生成する。質問送信部226Eは、通信装置915を用いて、生成した質問メッセージを、証明装置400Eに対して送信する。
回答受信部227Eは、通信装置915を用いて、証明装置400Eが送信した回答メッセージを受信する。回答受信部227Eは、CPU911を用いて、受信した回答メッセージに含まれる整数zを表わすデータを取得する。回答受信部227Eは、RAM914を用いて、取得した整数zを表わすデータを記憶する。
第一検証部250Dは、z・g=Y+c・Sであるかを検証する。
第一検証部250Dは、CPU911を用いて、暗号パラメータ記憶部290Dが記憶した暗号パラメータのうち加法群Gと元gとを表わすデータと、認証要求受信部220Eが記憶した元Sと元Yとを表わすデータと、チャレンジ生成部231Eが記憶した整数値cを表わすデータと、回答受信部227Eが記憶した整数zを表わすデータとを入力する。第一検証部250Dは、CPU911を用いて、入力したデータが表わす加法群Gと元gと元Sと元Yと整数zとハッシュ値cとに基づいて、加法群Gにおける演算により、元Sをc回加算した元と、元Yとを加算した元Y+c・Sが、元gをz回加算した元z・gと等しいか否かを判定する。第一検証部250Dは、CPU911を用いて、元z・gと元Y+c・Sとが等しい場合、「検証成功」と判定し、元z・gと元Y+c・Sとが等しくない場合、「検証失敗」と判定する。第一検証部250Dは、CPU911を用いて、検証結果を表わすデータを記憶する。
認証結果出力部260Eは、CPU911を用いて、第一検証部250Dが記憶した検証結果を表わすデータと、検証装置100Dが出力した検証結果を表わすデータとを入力する。認証結果出力部260Eは、CPU911を用いて、入力した二つの検証結果に基づいて、第一検証部250D及び検証装置100Dがともに「検証成功」と判定した場合に「認証成功」と判定し、それ以外の場合に「認証失敗」と判定する。認証結果出力部260Eは、CPU911を用いて、認証結果を表わすデータを出力する。
図37は、この実施の形態における認証装置200Eが証明装置400Eを認証する認証処理の流れの一例を示すフローチャート図である。
なお、実施の形態5で説明した署名検証処理と共通する部分については、同一の符号を付し、ここでは説明を省略する。
秘密乱数生成工程S741Eにおいて、証明装置400Eの秘密乱数生成部452Dは、CPU911を用いて、1以上p−1以下の秘密乱数yをランダムに生成する。
署名元算出工程S742Eにおいて、第二署名元算出部453Dは、CPU911を用いて、秘密乱数生成部452Dが生成した秘密乱数yに基づいて、加法群Gの元Y(=y・g)を算出する。
認証要求送信工程S743Eにおいて、証明装置400Eの認証要求送信部470Eは、通信装置915を用いて、署名鍵記憶部420Dが記憶した元Rと、第一署名元算出部451Dが算出した元S(=s・g)と、秘密乱数生成工程S741Eで第二署名元算出部453Dが算出した元Yとを含む認証要求メッセージを、認証装置200Eに対して送信する。
認証要求受信工程S751Eにおいて、認証装置200Eの認証要求受信部220Eは、通信装置915を用いて、認証要求送信工程S743Eで証明装置400Eが送信した認証要求メッセージを受信する。
チャレンジ生成工程S752Eにおいて、認証装置200Eのチャレンジ生成部231Eは、CPU911を用いて、1以上p−1以下の整数cをランダムに生成する。
質問送信工程S753Eにおいて、認証装置200Eの質問送信部226Eは、通信装置915を用いて、チャレンジ生成工程S752Eでチャレンジ生成部231Eが生成した整数cを含む質問メッセージを、証明装置400Eに対して送信する。
質問受信工程S744Eにおいて、証明装置400Eの質問受信部454Eは、通信装置915を用いて、質問送信工程S753Eで認証装置200Eが送信した質問メッセージを受信する。
署名整数算出工程S745Eにおいて、証明装置400Eの署名整数算出部455Dは、CPU911を用いて、暗号パラメータ記憶部490Dが記憶した位数pと、署名鍵記憶部420Dが記憶した整数sと、秘密乱数生成工程S741Eで秘密乱数生成部452Dが生成した秘密乱数yと、質問受信工程S744Eで質問受信部454Eが受信した質問メッセージに含まれる整数yとに基づいて、整数z(=y+c・s mod p)を算出する。
回答送信工程S746Eにおいて、証明装置400Eの回答送信部475Eは、通信装置915を用いて、署名整数算出工程S745Eで署名整数算出部455Dが算出した整数zを含む回答メッセージを、認証装置200Eに対して送信する。
回答受信工程S754Eにおいて、認証装置200Eの回答受信部227Eは、通信装置915を用いて、回答送信工程S746Eで証明装置400Eが送信した回答メッセージを受信する。
第一検証工程S732D〜第二検証工程S735Dは、実施の形態5で説明した工程と同様である。
成功判定工程S736Eにおいて、認証結果出力部260Eは、CPU911を用いて、認証成功と判定し、認証結果を出力する。
その後、認証処理を終了する。
失敗判定工程S737Eにおいて、認証結果出力部260Eは、CPU911を用いて、認証失敗と判定し、認証結果を出力する。
この実施の形態における認証装置200Eは、データを処理する処理装置(CPU911)と、データを送信する送信装置(通信装置915)と、データを受信する受信装置(通信装置915)と、認証要求受信部220Eと、質問送信部226Eと、回答受信部227Eと、署名検証部230Dと、検証装置100Dと、認証結果出力部260Eとを有する。
上記認証要求受信部220Eは、上記受信装置(通信装置915)を用いて、認証要求メッセージを受信する。
上記質問送信部226Eは、上記送信装置(通信装置915)を用いて、上記認証要求受信部220Eが受信した認証要求メッセージに対する応答として、質問メッセージを送信する。
上記回答受信部227Eは、上記受信装置(通信装置915)を用いて、送信した質問メッセージに対する回答メッセージを受信する。
上記署名検証部230Dは、上記処理装置(CPU911)を用いて、上記認証要求受信部220Eが受信した認証要求メッセージと、上記回答受信部227Eが受信した回答メッセージとに基づいて、上記検証装置100Dに入力する整数e(ハッシュ値h)と、上記有限群(加法群)Gの元s(元X)と、上記有限群(加法群)Gの元h(元R’)とを算出する。
上記検証装置100Dは、上記署名検証部230Dが算出した整数e(ハッシュ値h)と、上記有限群(加法群)Gの元s(元X)と、上記有限群(加法群)Gの元h(元R’)とを入力して、検証成功か否かを判定する。
上記認証結果出力部260Eは、上記処理装置(CPU911)を用いて、上記検証装置100Dが検証した結果に基づいて、認証成功であるか否か表わす認証結果を出力する。
この実施の形態における認証装置200Eによれば、検証装置100Dがh=e・sであるかを判定することにより、証明装置400Eを認証することができる。また、検証装置100Dが署名の整合性を検証する処理にかかる時間を短縮することができるので、認証装置200Eが証明装置400Eを検証する処理全体にかかる時間を短縮することができるという効果を奏する。
この実施の形態における認証装置200Eは、更に、データを記憶する記憶装置(磁気ディスク装置920やRAM914など)と、暗号パラメータ記憶部290Dと、識別記憶部210Dと、チャレンジ生成部231Eとを有する。
上記暗号パラメータ記憶部290Dは、上記記憶装置(磁気ディスク装置920)を用いて、上記有限群(加法群)Gの位数pと、上記有限群(加法群)Gの生成元gと、上記有限群(加法群)Gの元Xとを記憶する。
上記識別記憶部210Dは、上記記憶装置(磁気ディスク装置920)を用いて、証明装置400Eを識別するビット列IDを記憶する。
上記認証要求受信部220Eは、上記受信装置(通信装置915)を用いて、上記有限群(加法群)Gの元Rと、上記有限群(加法群)Gの元Sと、上記有限群(加法群)の元Yとを上記認証要求メッセージとして上記証明装置400Eから受信する。
上記チャレンジ生成部231Eは、上記処理装置(CPU911)を用いて、1以上p−1以下の整数cをランダムに生成する。
上記質問送信部226Eは、上記送信装置(通信装置915)を用いて、上記チャレンジ生成部231Eが生成した整数cを上記質問メッセージとして上記証明装置400Eに対して送信する。
上記回答受信部227Eは、上記受信装置(通信装置915)を用いて、1以上p−1以下の整数zを上記回答メッセージとして上記証明装置400Eから受信する。
上記署名検証部230Dは、整数算出部232Dと、検証元算出部233Dと、第一検証部250Dとを有する。
上記整数算出部232Dは、上記処理装置(CPU911)を用いて、上記認証要求受信部220Eが受信した元Rと、上記識別記憶部210Dが記憶したビット列IDとに基づいて、所定のハッシュ関数Hにより上記元Rと上記ビット列IDとをハッシュしたハッシュ値を算出して、整数h(=H(R,ID))とする。
上記検証元算出部233Dは、上記処理装置(CPU911)を用いて、上記認証要求受信部220Eが受信した元Rと元Sとに基づいて、上記元Sと、上記元Rの逆元とを加算して、上記有限群Gの元R’(=S−R)とする。
上記第一検証部250Dは、上記処理装置(CPU911)を用いて、上記暗号パラメータ記憶部290Dが記憶した生成元gと、上記認証要求受信部220Eが受信した元Sと元Yと、上記チャレンジ生成部231Eが生成した整数cと、上記回答受信部227Eが受信した整数zとに基づいて、上記元Sを上記整数c回加算した元c・Sと上記元Yとを加算した元Y+c・Sが、上記元gを上記整数z回加算した元z・gと等しいか否かを判定し、上記元Y+c・Sと上記元z・gとが等しい場合に、検証成功と判定して、第一の検証結果とする。
上記検証装置100Dは、上記位数pとして上記暗号パラメータ記憶部290Dが記憶した位数pと、上記整数eとして上記整数算出部232Dが算出した整数hと、上記元sとして上記暗号パラメータ記憶部290Dが記憶した元Xと、上記元hとして上記検証元算出部233Dが算出した元R’とを入力し、検証成功か否かを判定して、第二の検証結果とする。
上記認証結果出力部260Eは、上記処理装置(CPU911)を用いて、上記第一検証部250Dが検証した第一の検証結果と、上記検証装置100Dが検証した第二の検証結果とに基づいて、上記第一の検証結果及び上記第二の検証結果においてともに検証成功と判定した場合に、認証成功であることを表わす認証結果を出力する。
この実施の形態における認証装置200Eによれば、検証装置100DがR’=h・Xであるかを検証するので、証明装置400Eを認証することができる。また、検証装置100DがR’=h・Xであるかを検証する処理にかかる時間を短縮することができるので、認証装置200Eが証明装置400Eを認証する処理全体にかかる時間を短縮することができるという効果を奏する。
以上説明した認証装置200Eは、乗法群における指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群におけるスカラー倍算により、乗法群の元sをe回乗算した元sまたは加法群の元sをe回加算した元e・sが、既知の元hと一致するかどうかを検証することにより、証明装置400Eを認証する認証法検証装置である。
認証装置200Eは、
指数部(整数e)を分割する装置(整数分割部110)と、
分割された指数(整数e及び整数e)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値he1・e−e2またはe・h−e・sを計算する装置(検証値算出部130)と、
その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
以上説明した認証装置200E(認証法検証装置)は、
指数(整数)eと、暗号で使用する乗法群または加法群の群位数pとを入力して、位数pのビット長の半分のビット長を有する二つの整数e,e(ただし、e・e = e(mod p)。)を計算する計算装置(整数分割部110)と、
e2・h−e1=1またはe・s−e・h=0を検証する検証装置(検証値算出部130、検証判定部150)とを有する。
以上説明した整数分割部110は、拡張ユークリッド互除法を計算することにより、指数部(整数e)を分割する。
以上説明した整数分割部110は、二つの整数の繰り返し除算において、
除算をする整数v、及び除算される整数vが、それぞれ、前ステップの除算の剰余v、及び前ステップの除算をする整数vである計算装置(第三剰余算出部117)と、
各ステップの除算結果の剰余vがある一定の数(√p)以上、又はある一定の数(√p)以下であることを判定する計算装置(適合性判定部116)とを有する。
以上説明した認証装置200Eは、BNN−IDベース認証法検証装置である。
認証装置200Eは、
秘密鍵生成センタ(鍵生成装置300D)の公開鍵である乗法群または加法群の元Xと、被認証者(証明装置400E)の秘密鍵(署名鍵)の一部である元Rと、被認証者のコミット値(元)Sと、被認証者を識別するビット列IDとに基づいて、元R・X{H(R,ID)またはR+H(R,ID)・Xが元Sと一致するかどうか検証するため、
指数部(ハッシュ値h=H(R,ID))を分割する装置(整数分割部110)と、
分割された指数(整数e及び整数e)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値(S/R)e1・X−e2またはe・(S−R)−e・Xを計算する装置(検証値算出部130)と、
その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
以上説明したIDベース認証システム820Eは、BNN−IDベース認証法による認証システムである。
IDベース認証システム820Eは、証明者(証明装置400E)と認証者(認証装置200E)とを有する。最初に、証明者(証明装置400E)が、検証者(認証装置200E)にコミットメントCmt(認証要求メッセージ)を送付する。検証者(認証装置200E)は、コミットメントCmtを受け取り、コミットメントCmtと公開情報(暗号パラメータ、公開パラメータ)からチャレンジデータCh(質問メッセージ)を計算し、証明者(証明装置400E)に送付する。証明者(証明装置400E)は、チャレンジデータChを受け取り、回答データRspを計算して、検証者(認証装置200E)に送付する。検証者(認証装置200E)は、回答データRspを受け取り、それが正しいデータかどうかを検証する。検証者(認証装置200E)は、回答データが正しければ認証合格、そうでなければ認証不合格と判定する。
IDベース認証システム820Eでは、位数pが素数である乗法群Gと、乗法群Gの生成元gとを用いる。
暗号パラメータ設定装置810Dは、PKG用鍵生成処理をする。暗号パラメータ設定装置810Dは、CPU911を用いて、1以上p−1以下のランダムな整数xを生成する。暗号パラメータ設定装置810Dは、CPU911を用いて、乗法群Gの元X=gを計算する。暗号パラメータ設定装置810Dは、CPU911を用いて、群Gの元XをPKG公開鍵、整数xをPKG秘密鍵として出力する。
鍵生成装置300Dは、ユーザ秘密鍵導出処理をする。鍵生成装置300Dは、CPU911を用いて、PKG秘密鍵xと、証明装置400Eを識別するビット列IDとを入力する。まず、鍵生成装置300Dは、CPU911を用いて、1以上p−1以下のランダムな整数(秘密乱数)rを生成する。鍵生成装置300Dは、CPU911を用いて、群Gの元R=gと、整数s=r+H(R,ID)・xとを計算し、(R,s)をユーザ秘密鍵として出力する。
証明装置400Eは、Cmt計算処理において、CPU911を用いて、まず、1以上p−1以下のランダムな整数(秘密乱数)yを生成する。証明装置400Eは、CPU911を用いて、群Gの元S=gと、群Gの元Y=gとを計算し、元Sと元Yと元RとをコミットメントCmt(認証要求データ)とする。
認証装置200Eは、Ch計算処理において、CPU911を用いて、1以上p−1以下のランダムな整数cを生成し、チャレンジデータCh(質問データ)とする。
証明装置400Eは、Rsp計算処理において、CPU911を用いて、整数z=y+c・s mod pを計算し、回答データRspとする。
認証装置200Eは、CPU911を用いて、Rspを受け取り、g=Y・SとS=R・XH(R,ID)が成立するかどうか、元S及び元Yとが群Gの元であるかどうか、整数zが1以上p−1以下であるかどうかを検証する。すべて成立すれば、認証装置200Eは、CPU911を用いて、認証合格と判定し、そうでなければ、認証不合格と判定する。
以上説明した検証装置100Eは、このようなBNN−IDベース認証システムにおいて、S=R・XH(R,ID)であるかどうかを検証する処理を、高速化する。
検証装置100Eでは、整数分割部110が、CPU911を用いて、h(=H(R,ID))とpとを入力し、e・h=e(mod p)となる整数e及び整数eを算出する。検証値算出部130は、CPU911を用いて、乗法群Gにおける二基底べき乗算により、X=Xe1・R’e2(ただし、R’=S・R−1。)を計算する。検証装置100Eは、X=1かどうかをチェックすることにより、S=R・XH(R,ID が成立するかを、高速にチェックする。
以上、いくつかの暗号通信システム、署名システム、認証システムにおいて、検証装置100が検証処理を高速化する例を説明したが、この技術は、上記説明した例に限るものではなく、広く離散対数型の暗号通信システム、認証システム、署名システムなどの暗号システムに適用することができる。
また、説明の都合上、主に、群演算を加法的に記述する場合について説明したが、群演算が加法で記述されているか、乗法で記述されているかは、本質的ではない。
暗号システムが利用する有限群において、群演算がコンピュータなどの処理装置を用いて計算可能であり、1回の群演算に多くの時間がかかる場合であれば、この技術による格段の高速化が可能である。
実施の形態1における暗号文復号装置200の機能ブロックの構成の一例を示すブロック構成図。 実施の形態1における暗号文復号装置200の外観の一例を示す図。 実施の形態1における暗号文復号装置200のハードウェア資源の一例を示す図。 実施の形態1における検証装置100の内部ブロックの構成の一例を示すブロック構成図。 実施の形態1における検証装置100がh=e・sであるか否かを判定する検証処理の流れの一例を示すフローチャート図。 実施の形態1における整数分割部110の内部ブロックの構成の一例を示す詳細ブロック図。 実施の形態1における整数分割部110が整数eを分割する整数分割処理の流れの一例を示すフローチャート図。 実施の形態1における検証値算出部130の内部ブロックの構成の一例を示す詳細ブロック図。 実施の形態1における検証値算出部130が有限群Gの元aを算出する検証値算出処理の流れの一例を示すフローチャート図。 実施の形態2におけるIDベース公開鍵暗号システム820Aの全体構成の一例を示すシステム構成図。 実施の形態2における暗号パラメータ設定装置810Aの一部の機能ブロックの構成の一例を示すブロック構成図。 実施の形態2における鍵生成装置300Aの機能ブロックの構成の一例を示すブロック構成図。 実施の形態2における暗号文生成装置400Aの機能ブロックの構成の一例を示すブロック構成図。 実施の形態2における暗号文復号装置200Aの機能ブロックの構成の一例を示すブロック構成図。 実施の形態2における暗号文復号装置200Aが暗号文cを復号する暗号文復号処理の流れの一例を示すフローチャート図。 実施の形態3における公開鍵暗号システム820Bの全体構成の一例を示すシステム構成図。 実施の形態3における鍵生成装置300Bの機能ブロックの構成の一例を示すブロック構成図。 実施の形態3における暗号文生成装置400Bの機能ブロックの構成の一例を示すブロック構成図。 実施の形態3における暗号文復号装置200Bの機能ブロックの構成の一例を示すブロック構成図。 実施の形態3における暗号文復号装置200Aが暗号文cを復号する暗号文復号処理の流れの一例を示すフローチャート図。 実施の形態4におけるIDベース公開鍵暗号システム820Cの全体構成の一例を示すシステム構成図。 実施の形態4における暗号パラメータ設定装置810Cの一部の機能ブロックの構成の一例を示すブロック構成図。 実施の形態4における鍵生成装置300Cの機能ブロックの構成の一例を示すブロック構成図。 実施の形態4における暗号文生成装置400Cの機能ブロックの構成の一例を示すブロック構成図。 実施の形態4における暗号文復号装置200Cの機能ブロックの構成の一例を示すブロック構成図。 実施の形態4における検証装置100Cの内部ブロックの構成の一例を示す詳細ブロック図。 実施の形態4における暗号文復号装置200Cが暗号文Cを復号する暗号文復号処理の流れの一例を示すフローチャート図。 実施の形態5におけるIDベース署名システム820Dの全体構成の一例を示すシステム構成図。 実施の形態5における暗号パラメータ設定装置810Dの一部の機能ブロックの構成の一例を示すブロック構成図。 実施の形態5における鍵生成装置300Dの機能ブロックの構成の一例を示すブロック構成図。 実施の形態5における署名装置400Dの機能ブロックの構成の一例を示すブロック構成図。 実施の形態5における署名検証装置200Dの機能ブロックの構成の一例を示すブロック構成図。 実施の形態5における署名検証装置200Dは、署名σを検証する署名検証処理の流れの一例を示すフローチャート図。 実施の形態6におけるIDベース認証システム820Eの全体構成の一例を示すシステム構成図。 実施の形態6における証明装置400Eの機能ブロックの構成の一例を示すブロック構成図。 実施の形態6における認証装置200Eの機能ブロックの構成の一例を示すブロック構成図。 実施の形態6における認証装置200Eが証明装置400Eを認証する認証処理の流れの一例を示すフローチャート図。
100,100A,100B,100C,100D 検証装置、110,110C 整数分割部、111 位数入力部、112 整数入力部、113 初期値設定部、114 第一剰余記憶部、115 第二剰余記憶部、116 適合性判定部、117 第三剰余算出部、124 第一係数記憶部、125 第二係数記憶部、126 商算出部、127 第三係数算出部、129 分割整数出力部、130,130C 検証値算出部、131 分割整数入力部、132 元入力部、133 索引算出部、134 テーブル生成部、135 テーブル記憶部、141 検証初期値設定部、142 倍算結果記憶部、143 二基底加算部、144 加算結果記憶部、145 倍算部、149 検証値出力部、150,150C 検証判定部、200,200A,200B,200C 暗号文復号装置、200D 署名検証装置、200E 認証装置、210,210A,210B,210C
鍵記憶部、210D 識別記憶部、220,220A,220B,220C 暗号文入力部、220D 署名入力部、225D メッセージ入力部、220E 認証要求受信部、226E 質問送信部、227E 回答受信部、230,230A,230B,230C 暗号文検証部、230D 署名検証部、231A ペアリング値算出部、232A ビット列算出部、233A 整数算出部、231B ハッシュ値算出部、232B 整数算出部、231C ペアリング値算出部、232C 整数算出部、231D チャレンジ算出部、232D 整数算出部、233D 検証元算出部、231E チャレンジ生成部、241A 識別記憶部、242A 識別元算出部、243A 識別元記憶部、250D
第一検証部、260,260A,260B,260C 復号文生成部、260D 検証結果出力部、260E 認証結果出力部、261B 秘密元算出部、262B 共通鍵算出部、270A,270B 共通鍵記憶部、281A,281B 暗号化メッセージ入力部、282A,282B メッセージ復号部、283A,283B,283C 復号メッセージ出力部、290A,290B,290C,290D,390A,390B,390C,390D,490A,490B,490C,490D,819A,819C,819D 暗号パラメータ記憶部、300A,300B,300C,300D 鍵生成装置、330A 秘密乱数記憶部、330C,330D マスター鍵記憶部、340A,340C,340D 識別入力部、350A,350B,350C 秘密鍵生成部、350D 署名鍵生成部、351A ハッシュ値算出部、352A 整数加算部、353A 逆数算出部、354A 秘密鍵算出部、351B,352B,353B,354B 秘密乱数生成部、351C 秘密乱数生成部、352C 第一秘密元算出部、353C 第二秘密元算出部、351D 秘密乱数生成部、352D 鍵元算出部、353D 鍵整数算出部、360A,360B,360C 秘密鍵出力部、360D 署名鍵出力部、370B 公開鍵生成部、371B,372B,373B,374B 公開元算出部、380B 公開鍵出力部、400A,400B,400C 暗号文生成装置、400D 署名装置、400E 証明装置、410A,410C,410D 識別記憶部、410B 公開鍵記憶部、420A,420B 共通鍵生成部、420D 署名鍵記憶部、421A 秘密ビット列生成部、422A 秘密整数算出部、423A 識別元算出部、424A 暗号元算出部、425A 秘密ペアリング値算出部、426A 暗号ビット列算出部、427A 共通鍵算出部、421B 秘密乱数生成部、422B 第一暗号元算出部、423B 第二暗号元算出部、424B ハッシュ値算出部、425B 整数算出部、426B 第三暗号元算出部、427B 秘密元算出部、428B 共通鍵算出部、430A,430B 共通鍵記憶部、440A,440B,440C,440D メッセージ入力部、450A,450B,450C メッセージ暗号化部、450D 署名生成部、451C 秘密乱数生成部、452C ペアリング値算出部、453C 暗号ビット列算出部、454C 第一暗号元算出部、455C 第二暗号元算出部、456C 暗号整数算出部、451D 第一署名元算出部、452D 秘密乱数生成部、453D 第二署名元算出部、454D
チャレンジ算出部、455D 署名整数算出部、454E 質問受信部、460A,460B 暗号化メッセージ出力部、470A,470B,470C 暗号文出力部、470D 署名出力部、470E 認証要求送信部、475E 回答送信部、810A,810B,810C,810D 暗号パラメータ設定装置、811A 公開元生成部、812A 秘密乱数生成部、813A 公開元算出部、814A 秘密乱数出力部、815A 公開元出力部、812C マスター鍵生成部、813C 公開パラメータ生成部、814C マスター鍵出力部、815C 公開パラメータ出力部、816C,817C,818C 秘密乱数生成部、831C 第一公開元算出部、832C 公開ペアリング値算出部、833C 第二公開元算出部、812D 秘密乱数生成部、813D 公開元算出部、814D マスター鍵出力部、815D 公開パラメータ出力部、820A,820C IDベース公開鍵暗号システム、820B 公開鍵暗号システム、820D IDベース署名システム、820E IDベース認証システム、901 表示装置、902 キーボード、903 マウス、904 FDD、905 CDD、906 プリンタ装置、907 スキャナ装置、910 システムユニット、911 CPU、912 バス、913
ROM、914 RAM、915 通信装置、920 磁気ディスク装置、921 OS、922 ウィンドウシステム、923 プログラム群、924 ファイル群、931
電話器、932 ファクシミリ機、940 インターネット、941 ゲートウェイ、942 LAN。

Claims (19)

  1. データを処理する処理装置と、整数分割部と、検証値算出部と、検証判定部とを有し、
    上記整数分割部は、上記処理装置を用いて、有限群Gの位数pと、整数eとを入力し、入力した位数pと整数eとに基づいて、e・e≡e(mod p)を満たす整数eと整数eとを算出し、
    上記検証値算出部は、上記処理装置を用いて、上記有限群Gの元sと、上記有限群Gの元hとを入力し、入力した元sと元hと、上記整数分割部が算出した整数eと整数eとに基づいて、上記有限群Gの元a(=e・h−e・s)を算出し、
    上記検証判定部は、上記処理装置を用いて、上記検証値算出部が算出した元aに基づいて、上記元aが上記有限群Gの単位元である場合に、検証成功と判定することを特徴とする検証装置。
  2. 上記整数分割部は、上記処理装置を用いて、上記整数eの絶対値が上記位数pの平方根よりも小さく、かつ、上記整数eが上記位数pの平方根よりも小さいという条件を満たす整数eと整数eとを算出することを特徴とする請求項1に記載の検証装置。
  3. 上記検証装置は、更に、データを記憶する記憶装置を有し、
    上記整数分割部は、第一剰余記憶部と、第二剰余記憶部と、初期値設定部と、適合性判定部と、第三剰余算出部と、分割整数出力部とを有し、
    上記第一剰余記憶部は、上記記憶装置を用いて、整数vを記憶し、
    上記第二剰余記憶部は、上記記憶装置を用いて、整数vを記憶し、
    上記初期値設定部は、上記処理装置を用いて、上記位数pを上記整数vとして上記第一剰余記憶部に記憶させ、上記整数eを上記整数vとして上記第二剰余記憶部に記憶させ、
    上記適合性判定部は、上記処理装置を用いて、上記第二剰余記憶部が記憶した整数vが上記位数pの平方根よりも小さい場合に、出力条件を満たしたと判定し、
    上記第三剰余算出部は、上記処理装置を用いて、上記適合性判定部が出力条件を満たしたと判定しない場合に、上記第一剰余記憶部が記憶した整数vと、上記第二剰余記憶部が記憶した整数vとに基づいて、上記整数vを上記整数vで割った余りを算出して、整数vとし、上記第二剰余記憶部が記憶した整数vを上記整数vとして上記第一剰余記憶部に記憶させ、算出した整数vを上記整数vとして上記第二剰余記憶部に記憶させ、
    上記分割整数出力部は、上記処理装置を用いて、上記適合性判定部が出力条件を満たしたと判定した場合に、上記第二剰余記憶部が記憶した整数vを上記整数eとして出力することを特徴とする請求項2に記載の検証装置。
  4. 上記整数分割部は、更に、第一係数記憶部と、第二係数記憶部と、商算出部と、第三係数算出部とを有し、
    上記第一係数記憶部は、上記記憶装置を用いて、整数tを記憶し、
    上記第二係数記憶部は、上記記憶装置を用いて、整数tを記憶し、
    上記初期値設定部は、更に、上記処理装置を用いて、上記整数tとして0を上記第一係数記憶部に記憶させ、上記整数tとして1を上記第二係数記憶部に記憶させ、
    上記商算出部は、上記処理装置を用いて、上記第一剰余記憶部が記憶した整数vと、上記第二剰余記憶部が記憶した整数vとに基づいて、上記整数vを上記整数vで割った商を超えない最大の整数を算出して、整数qとし、
    上記第三係数算出部は、上記処理装置を用いて、上記適合性判定部が出力条件を満たしたと判定しない場合に、上記第一係数記憶部が記憶した整数tと、上記第二係数記憶部が記憶した整数tと、上記商算出部が算出した整数qとに基づいて、上記整数tと上記整数qとの積を、上記整数tから減算した整数を算出して、整数tとし、上記第二係数記憶部が記憶した整数tを上記整数tとして上記第一係数記憶部に記憶させ、算出した整数tを上記整数tとして上記第二係数記憶部に記憶させ、
    上記分割整数出力部は、更に、上記処理装置を用いて、上記適合性判定部が出力条件を満たしたと判定した場合に、上記第二係数記憶部が記憶した整数tを上記整数eとして出力することを特徴とする請求項3に記載の検証装置。
  5. 上記検証値算出部は、上記処理装置を用いて、Σ(n・P)(ただし、nは2以上の所定の整数。iは0以上k以下の整数。kは上記整数eの絶対値及び上記整数eをn進法で表記した場合の桁数の最大値。Pは、上記有限群Gの元で、P=e1,sg ・e1,i・h−e2,i・s。e1,sgnは1または−1。e1,i及びe2,iは0以上n−1以下の整数で、e=e1,sgn・Σ(n・e1,i)、e=Σ(n・e2,i)。)を算出して、上記有限群Gの元aとすることを特徴とする請求項1に記載の検証装置。
  6. データを記憶する記憶装置と、データを処理する処理装置と、鍵記憶部と、暗号文入力部と、暗号文検証部と、請求項1に記載の検証装置と、復号文生成部とを有し、
    上記鍵記憶部は、上記記憶装置を用いて、暗号文を復号する鍵を記憶し、
    上記暗号文入力部は、上記処理装置を用いて、暗号文を入力し、
    上記暗号文検証部は、上記処理装置を用いて、上記鍵記憶部が記憶した鍵と、上記暗号文入力部が入力した暗号文とに基づいて、上記検証装置に入力する整数eと、上記有限群Gの元sと、上記有限群Gの元hとを算出し、
    上記検証装置は、上記暗号文検証部が算出した整数eと、上記有限群Gの元sと、上記有限群Gの元hとを入力して、検証成功か否かを判定し、
    上記復号文生成部は、上記処理装置を用いて、上記検証装置が検証成功と判定した場合に、上記暗号文入力部が入力した暗号文を上記鍵記憶部が記憶した鍵により復号して、復号文を生成することを特徴とする暗号文復号装置。
  7. 上記暗号文復号装置は、更に、暗号パラメータ記憶部と、識別記憶部と、識別元算出部と、識別元記憶部とを有し、
    上記暗号パラメータ記憶部は、上記記憶装置を用いて、上記有限群Gの位数pと、上記有限群Gの生成元gと、上記有限群Gの元Rとを記憶し、
    上記識別記憶部は、上記記憶装置を用いて、上記暗号文復号装置を識別するビット列IDを記憶し、
    上記識別元算出部は、上記処理装置を用いて、上記識別記憶部が記憶したビット列IDに基づいて、所定のハッシュ関数Hにより上記ビット列IDをハッシュしたハッシュ値を算出して、整数H(ID)とし、上記暗号パラメータ記憶部が記憶した生成元gと、上記暗号パラメータ記憶部が記憶した元Rと、算出した整数H(ID)とに基づいて、上記生成元gを整数H(ID)倍した元と、上記元Rとを加算して、上記有限群Gの元Q(=R+H(ID)・g)とし、
    上記識別元記憶部は、上記記憶装置を用いて、上記識別元算出部が算出した元Qを記憶し、
    上記鍵記憶部は、上記記憶装置を用いて、有限群Gの元DIDを記憶し、
    上記暗号文入力部は、上記処理装置を用いて、上記有限群Gの元Uと、ビット列Vとを上記暗号文として入力し、
    上記暗号文検証部は、ペアリング値算出部と、ビット列算出部と、整数算出部とを有し、
    上記ペアリング値算出部は、上記処理装置を用いて、上記暗号文入力部が入力した元Uと、上記鍵記憶部が記憶した元DIDとに基づいて、所定のペアリング関数eにより上記元Uと上記元DIDとのペアリング値を算出して、ペアリング値α(=e(U,DID))とし、
    上記ビット列算出部は、上記処理装置を用いて、上記ペアリング値算出部が算出したペアリング値αに基づいて、所定のハッシュ関数Hにより上記ペアリング値αをハッシュしたハッシュ値を算出して、ビット列H(α)とし、上記暗号文入力部が入力したビット列Vと、算出したビット列H(α)とに基づいて、上記ビット列Vと上記ビット列H (α)との排他的論理和を取って、ビット列m(=V XOR H(α))とし、
    上記整数算出部は、上記処理装置を用いて、上記ビット列算出部が算出したビット列mに基づいて、所定のハッシュ関数Hにより上記ビット列mをハッシュしたハッシュ値を算出して、整数r(=H(m))とし、
    上記検証装置は、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数rと、上記元sとして上記識別元記憶部が記憶した元Qと、上記元hとして上記暗号文入力部が入力した元Uとを入力して、検証成功か否かを判定し、
    上記復号文生成部は、上記処理装置を用いて、上記検証装置が検証成功と判定した場合に、上記ビット列算出部が算出したビット列mに基づいて、所定のハッシュ関数Hにより上記ビット列mをハッシュしたハッシュ値を算出して、共通鍵K(=H(m))とし、算出した共通鍵Kを上記復号文として出力することを特徴とする請求項6に記載の暗号文復号装置。
  8. 上記識別元算出部は、上記暗号文入力部が上記暗号文を入力するよりも前に、上記元Qを算出することを特徴とする請求項7に記載の暗号文復号装置。
  9. 上記暗号文復号装置は、更に、共通鍵記憶部と、暗号化メッセージ入力部と、メッセージ復号部とを有し、
    上記共通鍵記憶部は、上記記憶装置を用いて、上記復号文生成部が出力した共通鍵Kを記憶し、
    上記暗号化メッセージ入力部は、上記処理装置を用いて、暗号化メッセージを入力し、
    上記メッセージ復号部は、上記処理装置を用いて、上記共通鍵記憶部が記憶した共通鍵Kにより上記暗号化メッセージ入力部が入力した暗号化メッセージを復号することを特徴とする請求項7に記載の暗号文復号装置。
  10. 上記暗号文復号装置は、更に、暗号パラメータ記憶部を有し、
    上記暗号パラメータ記憶部は、上記記憶装置を用いて、上記有限群Gの位数pを記憶し、
    上記鍵記憶部は、上記記憶装置を用いて、1以上p−1以下の整数wと、1以上p−1以下の整数xと、1以上p−1以下の整数yと、1以上p−1以下の整数zとを記憶し、
    上記暗号文入力部は、上記処理装置を用いて、上記有限群Gの元uと、上記有限群Gの元u’と、上記有限群Gの元vとを上記暗号文として入力し、
    上記暗号文検証部は、ハッシュ値算出部と、整数算出部とを有し、
    上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号文入力部が入力した元uと元u’とに基づいて、所定のハッシュ関数Hにより上記元uと上記元u’とをハッシュしたハッシュ値を算出して、整数α(=H(u,u’))とし、
    上記整数算出部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した位数pと、上記鍵記憶部が記憶した整数xと整数yと、上記ハッシュ値算出部が算出した整数αとに基づいて、上記整数yと上記整数αとの積と、上記整数xとの和を、上記位数pで割った余りを算出して、整数t(=(x+y・α)mod p)とし、
    上記検証装置は、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記鍵記憶部が記憶した整数wと、上記元sとして上記暗号文入力部が入力した元uと、上記元hとして上記暗号文入力部が入力した元u’とを入力し、検証成功か否かを判定して、第一の検証結果とし、上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数tと、上記元sとして上記暗号文入力部が入力した元uと、上記元hとして上記暗号文入力部が入力した元vとを入力し、検証成功か否かを判定して、第二の検証結果とし、
    上記復号文生成部は、上記処理装置を用いて、上記検証装置が上記第一の検証結果及び上記第二の検証結果においてともに検証成功と判定した場合に、上記鍵記憶部が記憶した整数zと、上記暗号文入力部が入力した元uとに基づいて、上記元uを上記整数z回加算して、上記有限群Gの元h(=z・u)とし、上記暗号文入力部が入力した元uと、算出した元hとに基づいて、所定の鍵導出関数KDFにより上記元uと上記元hとから共通鍵K(=KDF(u,h))を生成し、生成した共通鍵Kを上記復号文として出力することを特徴とする請求項6に記載の暗号文復号装置。
  11. 上記暗号文復号装置は、更に、共通鍵記憶部と、暗号化メッセージ入力部と、メッセージ復号部とを有し、
    上記共通鍵記憶部は、上記記憶装置を用いて、上記復号文生成部が出力した共通鍵Kを記憶し、
    上記暗号化メッセージ入力部は、上記処理装置を用いて、暗号化メッセージを入力し、
    上記メッセージ復号部は、上記処理装置を用いて、上記共通鍵記憶部が記憶した共通鍵Kにより上記暗号化メッセージ入力部が入力した暗号化メッセージを復号することを特徴とする請求項10に記載の暗号文復号装置。
  12. 上記暗号文復号装置は、更に、暗号パラメータ記憶部を有し、
    上記暗号パラメータ記憶部は、上記記憶装置を用いて、加法群Gの位数pと、上記加法群Gの生成元gと、上記位数pを位数とする乗法群Gの元vとを記憶し、
    上記鍵記憶部は、上記記憶装置を用いて、上記位数pを位数とする加法群Gの元dと、上記加法群Gの元dとを記憶し、
    上記暗号文入力部は、上記処理装置を用いて、ビット列cと、上記加法群Gの元cと、上記加法群Gの元cと、1以上p−1以下の整数tとを上記暗号文として入力し、
    上記暗号文検証部は、ペアリング値算出部と、整数算出部とを有し、
    上記ペアリング値算出部は、上記処理装置を用いて、上記暗号文入力部が入力した元c と、上記秘密鍵記憶部が記憶した元dとに基づいて、所定のペアリング関数eにより上記元cと上記元dとのペアリング値を算出して、上記乗法群Gの元k(=e(c,d))とし、上記暗号文入力部が入力した元cと、上記秘密鍵記憶部が記憶した元dとに基づいて、上記ペアリング関数eにより上記元cと上記元dとのペアリング値を算出して、上記乗法群Gの元k(=e(c,d))とし、算出した上記元kと、算出した上記元kとに基づいて、上記元kを上記元kで除算して、上記乗法群Gの元k(=k/k)とし、
    上記整数算出部は、上記処理装置を用いて、上記ペアリング値算出部が算出した元kと、上記暗号文入力部が入力したビット列cと元cと元cとに基づいて、所定のハッシュ関数H”により上記元kと上記ビット列cと上記元cと上記元cとをハッシュしたハッシュ値を算出して、整数H”(k,c,c,c)とし、上記暗号文入力部が入力した整数tと、算出した整数H”(k,c,c,c)と、上記暗号パラメータ記憶部が機記憶した位数pとに基づいて、上記整数tから上記整数H”(k,c,c,c)を減算した整数を位数pで割った余りを算出して、整数s(=t−H”(k,c,c,c)mod p)とし、
    上記検証装置は、上記加法群Gを上記有限群Gとして、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数sと、上記元sとして上記暗号パラメータ記憶部が記憶した生成元gと、上記元hとして上記暗号文入力部が入力した元cとを入力し、検証成功か否かを判定して、第一の検証結果とし、上記乗法群Gを上記有限群Gとして、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数sと、上記元sとして上記暗号パラメータ記憶部が記憶した元vと、上記元hとして上記ペアリング値算出部が算出した元kとを入力し、検証成功か否かを判定して、第二の検証結果とし、
    上記復号文生成部は、上記処理装置を用いて、上記検証装置が上記第一の検証結果及び上記第二の検証結果おいてともに検証成功と判定した場合に、上記ペアリング値算出部が算出した元kとに基づいて、所定のハッシュ関数H’により上記元kをハッシュしたハッシュ値を算出して、ビット列H’(k)とし、上記暗号文入力部が入力したビット列cと、算出したビット列H’(k)とに基づいて、上記ビット列cと上記ビット列H’(k)との排他的論理和を取って、ビット列M’(=c XOR H’(k))とし、算出したビット列M’を上記復号文として出力することを特徴とする請求項6に記載の暗号文復号装置。
  13. データを処理する処理装置と、メッセージ入力部と、署名入力部と、署名検証部と、請求項1に記載の検証装置と、検証結果出力部とを有し、
    上記メッセージ入力部は、上記処理装置を用いて、メッセージを入力し、
    上記署名入力部は、上記処理装置を用いて、上記メッセージ入力部が入力したメッセージに対する署名を入力し、
    上記署名検証部は、上記処理装置を用いて、上記メッセージ入力部が入力したメッセージと、上記署名入力部が入力した署名とに基づいて、上記検証装置に入力する整数eと、上記有限群Gの元sと、上記有限群Gの元hとを算出し、
    上記検証装置は、上記署名検証部が算出した整数eと、上記有限群Gの元sと、上記有限群Gの元hとを入力して、検証成功か否かを判定し、
    上記検証結果出力部は、上記処理装置を用いて、上記検証装置が検証した結果に基づいて、検証成功であるか否か表わす検証結果を出力することを特徴とする署名検証装置。
  14. 上記署名検証装置は、更に、データを記憶する記憶装置と、暗号パラメータ記憶部と、識別記憶部とを有し、
    上記暗号パラメータ記憶部は、上記記憶装置を用いて、上記有限群Gの位数pと、上記有限群Gの生成元gと、上記有限群Gの元Xとを記憶し、
    上記識別記憶部は、上記記憶装置を用いて、署名装置を識別するビット列IDを記憶し、
    上記メッセージ入力部は、上記処理装置を用いて、ビット列Mを上記メッセージとして入力し、
    上記署名入力部は、上記処理装置を用いて、上記有限群Gの元Rと、上記有限群Gの元Sと、上記有限群Gの元Yと、1以上p−1以下の整数zとを上記署名として入力し、
    上記署名検証部は、整数算出部と、検証元算出部と、チャレンジ算出部と、第一検証部とを有し、
    上記整数算出部は、上記処理装置を用いて、上記署名入力部が入力した元Rと、上記識別記憶部が記憶したビット列IDとに基づいて、所定のハッシュ関数Hにより上記元Rと上記ビット列IDとをハッシュしたハッシュ値を算出して、整数h(=H(R,ID))とし、
    上記検証元算出部は、上記処理装置を用いて、上記署名入力部が入力した元Rと元Sとに基づいて、上記元Sと、上記元Rの逆元とを加算して、上記有限群Gの元R’(=S−R)とし、
    上記チャレンジ算出部は、上記処理装置を用いて、上記識別記憶部が記憶したビット列IDと、上記署名入力部が入力した元Rと元Sと元Yと、上記メッセージ入力部が入力したビット列Mとに基づいて、所定のハッシュ関数H’により上記ビット列IDと上記元Rと上記元Sと上記元Yと上記ビット列Mとをハッシュしたハッシュ値を算出して、整数c(=H’(I,R,S,Y,M))とし、
    上記第一検証部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した生成元gと、上記署名入力部が入力した元Sと元Yと整数zと、上記チャレンジ算出部が算出した整数cとに基づいて、上記元Sを上記整数c回加算した元c・Sと上記元Yとを加算した元Y+c・Sが、上記元gを上記整数z回加算した元z・gと等しいか否かを判定し、上記元Y+c・Sと上記元z・gとが等しい場合に、検証成功と判定して、第一の検証結果とし、
    上記検証装置は、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数hと、上記元sとして上記暗号パラメータ記憶部が記憶した元Xと、上記元hとして上記検証元算出部が算出した元R’とを入力し、検証成功か否かを判定して、第二の検証結果とし、
    上記検証結果出力部は、上記処理装置を用いて、上記第一検証部が検証した第一の検証結果と、上記検証装置が検証した第二の検証結果とに基づいて、上記第一の検証結果及び上記第二の検証結果においてともに検証成功と判定した場合に、検証成功であることを表わす検証結果を出力することを特徴とする請求項13に記載の署名検証装置。
  15. データを処理する処理装置と、データを送信する送信装置と、データを受信する受信装置と、認証要求受信部と、質問送信部と、回答受信部と、署名検証部と、請求項1に記載の検証装置と、認証結果出力部とを有し、
    上記認証要求受信部は、上記受信装置を用いて、認証要求メッセージを受信し、
    上記質問送信部は、上記送信装置を用いて、上記認証要求受信部が受信した認証要求メッセージに対する応答として、質問メッセージを送信し、
    上記回答受信部は、上記受信装置を用いて、送信した質問メッセージに対する回答メッセージを受信し、
    上記署名検証部は、上記処理装置を用いて、上記認証要求受信部が受信した認証要求メッセージと、上記回答受信部が受信した回答メッセージとに基づいて、上記検証装置に入力する整数eと、上記有限群Gの元sと、上記有限群Gの元hとを算出し、
    上記検証装置は、上記署名検証部が算出した整数eと、上記有限群Gの元sと、上記有限群Gの元hとを入力して、検証成功か否かを判定し、
    上記認証結果出力部は、上記処理装置を用いて、上記検証装置が検証した結果に基づいて、認証成功であるか否か表わす認証結果を出力することを特徴とする認証装置。
  16. 上記認証装置は、更に、データを記憶する記憶装置と、暗号パラメータ記憶部と、識別記憶部と、チャレンジ生成部とを有し、
    上記暗号パラメータ記憶部は、上記記憶装置を用いて、上記有限群Gの位数pと、上記有限群Gの生成元gと、上記有限群Gの元Xとを記憶し、
    上記識別記憶部は、上記記憶装置を用いて、証明装置を識別するビット列IDを記憶し、
    上記認証要求受信部は、上記受信装置を用いて、上記有限群Gの元Rと、上記有限群Gの元Sと、上記有限群の元Yとを上記認証要求メッセージとして上記証明装置から受信し、
    上記チャレンジ生成部は、上記処理装置を用いて、1以上p−1以下の整数cをランダムに生成し、
    上記質問送信部は、上記送信装置を用いて、上記チャレンジ生成部が生成した整数cを上記質問メッセージとして上記証明装置に対して送信し、
    上記回答受信部は、上記受信装置を用いて、1以上p−1以下の整数zを上記回答メッセージとして上記証明装置から受信し、
    上記署名検証部は、整数算出部と、検証元算出部と、第一検証部とを有し、
    上記整数算出部は、上記処理装置を用いて、上記認証要求受信部が受信した元Rと、上記識別記憶部が記憶したビット列IDとに基づいて、所定のハッシュ関数Hにより上記元Rと上記ビット列IDとをハッシュしたハッシュ値を算出して、整数h(=H(R,ID))とし、
    上記検証元算出部は、上記処理装置を用いて、上記認証要求受信部が受信した元Rと元Sとに基づいて、上記元Sと、上記元Rの逆元とを加算して、上記有限群Gの元R’(=S−R)とし、
    上記第一検証部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した生成元gと、上記認証要求受信部が受信した元Sと元Yと、上記チャレンジ生成部が生成した整数cと、上記回答受信部が受信した整数zとに基づいて、上記元Sを上記整数c回加算した元c・Sと上記元Yとを加算した元Y+c・Sが、上記元gを上記整数z回加算した元z・gと等しいか否かを判定し、上記元Y+c・Sと上記元z・gとが等しい場合に、検証成功と判定して、第一の検証結果とし、
    上記検証装置は、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数hと、上記元sとして上記暗号パラメータ記憶部が記憶した元Xと、上記元hとして上記検証元算出部が算出した元R’とを入力し、検証成功か否かを判定して、第二の検証結果とし、
    上記認証結果出力部は、上記処理装置を用いて、上記第一検証部が検証した第一の検証結果と、上記検証装置が検証した第二の検証結果とに基づいて、上記第一の検証結果及び上記第二の検証結果においてともに検証成功と判定した場合に、認証成功であることを表わす認証結果を出力することを特徴とする請求項15に記載の認証装置。
  17. 請求項1に記載の検証装置を有することを特徴とする暗号システム。
  18. データを処理する処理装置を有するコンピュータを、請求項1に記載の検証装置として機能させることを特徴とするコンピュータプログラム。
  19. データを処理する処理装置を有する検証装置が、整合性を検証する検証方法において、
    上記処理装置が、有限群Gの位数pと、整数eとを入力し、入力した位数pと整数eとに基づいて、e・e≡e(mod p)を満たす整数eと整数eとを算出し、
    上記処理装置が、上記有限群Gの元sと、上記有限群Gの元hとを入力し、入力した元gと元hと、算出した整数eと整数eとに基づいて、上記有限群Gの元a(=e・h−e・s)を算出し、
    上記処理装置が、算出した元aに基づいて、上記元aが上記有限群Gの単位元である場合に、検証成功と判定することを特徴とする検証方法。
JP2009554166A 2008-02-20 2008-02-20 検証装置及び暗号文復号装置及び署名検証装置及び認証装置及び暗号システム及びコンピュータプログラム Active JP5079024B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2008/052884 WO2009104260A1 (ja) 2008-02-20 2008-02-20 検証装置

Publications (2)

Publication Number Publication Date
JPWO2009104260A1 true JPWO2009104260A1 (ja) 2011-06-16
JP5079024B2 JP5079024B2 (ja) 2012-11-21

Family

ID=40985155

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009554166A Active JP5079024B2 (ja) 2008-02-20 2008-02-20 検証装置及び暗号文復号装置及び署名検証装置及び認証装置及び暗号システム及びコンピュータプログラム

Country Status (5)

Country Link
US (1) US8458479B2 (ja)
EP (1) EP2244243B1 (ja)
JP (1) JP5079024B2 (ja)
CN (1) CN101925942B (ja)
WO (1) WO2009104260A1 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100208884A1 (en) * 2009-02-19 2010-08-19 Thomson Licensing Method and device for hashing onto points of an elliptic curve
WO2013108698A1 (ja) * 2012-01-19 2013-07-25 インターナショナル・ビジネス・マシーンズ・コーポレーション 文字列がオートマトンに受理されるか否かを認証するシステム
KR101380895B1 (ko) * 2012-06-12 2014-04-10 한국전자통신연구원 보안 서비스 제공 장치 및 이를 이용한 보안 서비스 방법
US9189581B2 (en) * 2012-07-30 2015-11-17 Synopsys, Inc. Equivalence checking between two or more circuit designs that include division circuits
US8806625B1 (en) * 2012-10-02 2014-08-12 Symantec Corporation Systems and methods for performing security scans
WO2014076927A1 (ja) 2012-11-13 2014-05-22 パナソニック株式会社 機器を遠隔操作するシステムにおいて用いられる方法
JP6317099B2 (ja) * 2013-01-08 2018-04-25 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America プログラムの正当性を確認するための確認方法及び、確認システム
US8930687B1 (en) * 2013-03-15 2015-01-06 Emc Corporation Secure distributed deduplication in encrypted data storage
GB2515057B (en) 2013-06-12 2016-02-24 Cryptomathic Ltd System and Method for Obtaining a Digital Signature
US9350550B2 (en) 2013-09-10 2016-05-24 M2M And Iot Technologies, Llc Power management and security for wireless modules in “machine-to-machine” communications
US9100175B2 (en) 2013-11-19 2015-08-04 M2M And Iot Technologies, Llc Embedded universal integrated circuit card supporting two-factor authentication
US10498530B2 (en) 2013-09-27 2019-12-03 Network-1 Technologies, Inc. Secure PKI communications for “machine-to-machine” modules, including key derivation by modules and authenticating public keys
US10700856B2 (en) 2013-11-19 2020-06-30 Network-1 Technologies, Inc. Key derivation for a module using an embedded universal integrated circuit card
EP3114806B1 (en) * 2014-03-06 2020-06-17 Telefonaktiebolaget LM Ericsson (publ) Network node, device and methods for providing an authentication module
US9565114B1 (en) * 2014-03-08 2017-02-07 Google Inc. Weighted load balancing using scaled parallel hashing
US9853977B1 (en) 2015-01-26 2017-12-26 Winklevoss Ip, Llc System, method, and program product for processing secure transactions within a cloud computing system
JP6490613B2 (ja) * 2016-03-14 2019-03-27 株式会社東芝 通信装置、量子鍵配送システム、量子鍵配送方法およびプログラム
WO2018109897A1 (ja) * 2016-12-15 2018-06-21 日本電気株式会社 アクセストークンシステム、情報処理装置、情報処理方法および情報処理プログラム
JP2018146766A (ja) * 2017-03-06 2018-09-20 キヤノン株式会社 スカラー倍演算装置、スカラー倍演算方法及びプログラム
US10742413B2 (en) * 2017-04-25 2020-08-11 International Business Machines Corporation Flexible verifiable encryption from lattices
US10256974B1 (en) * 2018-04-25 2019-04-09 Blockchain Asics Llc Cryptographic ASIC for key hierarchy enforcement
AU2019259262B2 (en) * 2018-04-26 2021-07-22 Nippon Telegraph And Telephone Corporation Secure aggregate median system, secure computation apparatus, secure aggregate median method, and program
US10673625B1 (en) * 2019-06-15 2020-06-02 University Of South Florida Efficient identity-based and certificateless cryptosystems
US11997212B2 (en) * 2019-06-26 2024-05-28 Micron Technology, Inc. Payload validation for a memory system

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5497423A (en) * 1993-06-18 1996-03-05 Matsushita Electric Industrial Co., Ltd. Method of implementing elliptic curve cryptosystems in digital signatures or verification and privacy communication
US7567669B2 (en) * 1996-05-17 2009-07-28 Certicom Corp. Strengthened public key protocol
EP0917047B1 (en) * 1997-11-04 2004-10-13 Nippon Telegraph and Telephone Corporation Apparatus for modular inversion for information security
US6295359B1 (en) * 1998-05-21 2001-09-25 Pitney Bowes Inc. Method and apparatus for distributing keys to secure devices such as a postage meter
CA2257008C (en) 1998-12-24 2007-12-11 Certicom Corp. A method for accelerating cryptographic operations on elliptic curves
JP3551853B2 (ja) * 1999-08-27 2004-08-11 日本電気株式会社 αYa+βXb+1=0という形の定義方程式をもつ代数曲線暗号における安全なパラメータの生成装置、生成方法、および記録媒体
US7200225B1 (en) * 1999-11-12 2007-04-03 Richard Schroeppel Elliptic curve point ambiguity resolution apparatus and method
US6836784B2 (en) * 2001-01-17 2004-12-28 Matsushita Electric Industrial Co., Ltd. Efficient greatest common divisor algorithm using multiprecision arithmetic
JP3892229B2 (ja) * 2001-01-18 2007-03-14 三菱電機株式会社 超楕円曲線暗号パラメータ生成方法及び超楕円曲線暗号パラメータ生成装置
US7308469B2 (en) * 2001-06-15 2007-12-11 Robert Joseph Harley Method for generating secure elliptic curves using an arithmetic-geometric mean iteration
AU2002334409A1 (en) * 2001-09-27 2003-04-14 Matsushita Electric Industrial Co., Ltd. An encryption device, a decrypting device, a secret key generation device,a copyright protection system and a cipher communication device
JP4103401B2 (ja) * 2002-01-28 2008-06-18 日本電気株式会社 確率公開鍵暗号文の冪乗剰余積の各指数係数が区間内にあることの証明システム及び方法並びにプログラム
US7458006B2 (en) * 2002-02-22 2008-11-25 Avago Technologies General Ip (Singapore) Pte. Ltd. Methods for computing the CRC of a message from the incremental CRCs of composite sub-messages
US7724898B2 (en) * 2002-10-17 2010-05-25 Telefonaktiebolaget L M Ericsson (Publ) Cryptography using finite fields of odd characteristic on binary hardware
US7197527B2 (en) * 2002-10-17 2007-03-27 Telefonaktiebolaget Lm Ericsson (Publ) Efficient arithmetic in finite fields of odd characteristic on binary hardware
JP4485122B2 (ja) 2002-12-19 2010-06-16 村田機械株式会社 公開鍵暗号システム,署名システム,暗号通信システム,秘密鍵生成器,公開鍵生成器及びコンピュータプログラム
US20050135610A1 (en) * 2003-11-01 2005-06-23 Liqun Chen Identifier-based signcryption
US7499544B2 (en) * 2003-11-03 2009-03-03 Microsoft Corporation Use of isogenies for design of cryptosystems
JP4629972B2 (ja) 2003-12-12 2011-02-09 三菱電機株式会社 ベクトル演算装置及び分割値演算装置及び楕円曲線スカラー倍演算装置及び楕円暗号演算装置及びベクトル演算方法及びプログラム及びプログラムを記録したコンピュータ読み取り可能な記録媒体
US7395494B2 (en) * 2003-12-22 2008-07-01 Electronics And Telecommunications Research Institute Apparatus for encoding and decoding of low-density parity-check codes, and method thereof
US7664957B2 (en) * 2004-05-20 2010-02-16 Ntt Docomo, Inc. Digital signatures including identity-based aggregate signatures
JP4620669B2 (ja) * 2005-04-18 2011-01-26 パナソニック株式会社 署名生成装置、署名検証装置、それらの方法、および集積回路
WO2007080633A1 (ja) 2006-01-11 2007-07-19 Mitsubishi Denki Kabushiki Kaisha 楕円曲線暗号パラメータ生成装置及び楕円曲線暗号演算装置及び楕円曲線暗号パラメータ生成プログラム及び楕円曲線暗号演算プログラム
JP4859933B2 (ja) 2007-01-19 2012-01-25 三菱電機株式会社 暗号文生成装置及び暗号通信システム及び群パラメータ生成装置

Also Published As

Publication number Publication date
CN101925942A (zh) 2010-12-22
EP2244243B1 (en) 2017-12-13
US20100275028A1 (en) 2010-10-28
EP2244243A1 (en) 2010-10-27
EP2244243A4 (en) 2013-11-13
CN101925942B (zh) 2013-11-27
WO2009104260A1 (ja) 2009-08-27
JP5079024B2 (ja) 2012-11-21
US8458479B2 (en) 2013-06-04

Similar Documents

Publication Publication Date Title
JP5079024B2 (ja) 検証装置及び暗号文復号装置及び署名検証装置及び認証装置及び暗号システム及びコンピュータプログラム
CN111106936B (zh) 一种基于sm9的属性加密方法与系统
US7594261B2 (en) Cryptographic applications of the Cartier pairing
Rodriguez-Henriquez et al. A brief introduction to modern cryptography
CN104270249B (zh) 一种从无证书环境到基于身份环境的签密方法
JP3872107B2 (ja) 暗号キー回復システム
JP4859933B2 (ja) 暗号文生成装置及び暗号通信システム及び群パラメータ生成装置
CN110830236B (zh) 基于全域哈希的身份基加密方法
CN104301108B (zh) 一种从基于身份环境到无证书环境的签密方法
CN110113150B (zh) 基于无证书环境的可否认认证的加密方法和系统
CN108337092B (zh) 用于在通信网络中执行集体认证的方法和系统
JP4869824B2 (ja) 受信者装置及び送信者装置及び暗号通信システム及びプログラム
US20150006900A1 (en) Signature protocol
CN114448641A (zh) 一种隐私加密方法、电子设备、存储介质以及芯片
CN115442057A (zh) 一种具有强不可链接性的可随机化盲签名方法及系统
CN111669275B (zh) 一种无线网络环境下可选择从节点的主从协作签名方法
CN116346336B (zh) 一种基于多层密钥生成中心的密钥分发方法及相关系统
CN106534077B (zh) 一种基于对称密码的可认证的代理重加密系统及方法
CN116915414A (zh) 一种实现门限签名的方法、计算机设备和存储介质
Yang et al. Certificateless universal designated verifier signature schemes
Liao et al. Cryptanalysis of an identity-based encryption scheme with equality test and improvement
JP5679344B2 (ja) 署名鍵難読化システム、署名鍵難読化方法、難読化された署名鍵を用いた暗号化署名システム、難読化された署名鍵を用いた暗号化署名方法とプログラム
KR20240045231A (ko) 디지털 서명 셰어의 생성
Lee Cryptanalysis of Zhu et al.’s Identity-Based Encryption with Equality Test without Random Oracles
Dugardin et al. A New Fair Identity Based Encryption Scheme

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120626

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120706

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

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

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

Free format text: PAYMENT UNTIL: 20150907

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5079024

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250