JP5079024B2 - 検証装置及び暗号文復号装置及び署名検証装置及び認証装置及び暗号システム及びコンピュータプログラム - Google Patents
検証装置及び暗号文復号装置及び署名検証装置及び認証装置及び暗号システム及びコンピュータプログラム Download PDFInfo
- Publication number
- JP5079024B2 JP5079024B2 JP2009554166A JP2009554166A JP5079024B2 JP 5079024 B2 JP5079024 B2 JP 5079024B2 JP 2009554166 A JP2009554166 A JP 2009554166A JP 2009554166 A JP2009554166 A JP 2009554166A JP 5079024 B2 JP5079024 B2 JP 5079024B2
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public 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/3073—Public 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3247—Cryptographic 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3247—Cryptographic 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/3252—Cryptographic 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)
Description
有限群を利用した暗号システムにおいて、暗号文の整合性を検証するなどのために、有限群の元h、s及び整数eに基づいて、h=e・s(有限群の群演算を加法的に記述した場合)またはh=se(有限群の群演算を乗法的に記述した場合)であるか否かを判定する場合がある。
この発明は、例えば、上記のような課題を解決するためになされたものであり、コンピュータなどの処理装置を用いてh=s・eであるか否かを高速に判定することを目的とする。
データを処理する処理装置と、整数分割部と、検証値算出部と、検証判定部とを有し、
上記整数分割部は、上記処理装置を用いて、有限群Gの位数pと、整数eとを入力し、入力した位数pと整数eとに基づいて、e1・e≡e2(mod p)を満たす整数e1と整数e2とを算出し、
上記検証値算出部は、上記処理装置を用いて、上記有限群Gの元sと、上記有限群Gの元hとを入力し、入力した元sと元hと、上記整数分割部が算出した整数e1と整数e2とに基づいて、上記有限群Gの元a(=e1・h−e2・s)を算出し、
上記検証判定部は、上記処理装置を用いて、上記検証値算出部が算出した元aに基づいて、上記元aが上記有限群Gの単位元である場合に、検証成功と判定することを特徴とする。
上記整数分割部が、上記処理装置を用いて、上記整数e1の絶対値が上記位数pの平方根よりも小さく、かつ、上記整数e2が上記位数pの平方根よりも小さいという条件を満たす整数e1と整数e2とを算出することを特徴とする。
上記整数分割部は、第一剰余記憶部と、第二剰余記憶部と、初期値設定部と、適合性判定部と、第三剰余算出部と、分割整数出力部とを有し、
上記第一剰余記憶部は、上記記憶装置を用いて、整数v1を記憶し、
上記第二剰余記憶部は、上記記憶装置を用いて、整数v2を記憶し、
上記初期値設定部は、上記処理装置を用いて、上記位数pを上記整数v1として上記第一剰余記憶部に記憶させ、上記整数eを上記整数v2として上記第二剰余記憶部に記憶させ、
上記適合性判定部は、上記処理装置を用いて、上記第二剰余記憶部が記憶した整数v2が上記位数pの平方根よりも小さい場合に、出力条件を満たしたと判定し、
上記第三剰余算出部は、上記処理装置を用いて、上記適合性判定部が出力条件を満たしたと判定しない場合に、上記第一剰余記憶部が記憶した整数v1と、上記第二剰余記憶部が記憶した整数v2とに基づいて、上記整数v1を上記整数v2で割った余りを算出して、整数v3とし、上記第二剰余記憶部が記憶した整数v2を上記整数v1として上記第一剰余記憶部に記憶させ、算出した整数v3を上記整数v2として上記第二剰余記憶部に記憶させ、
上記分割整数出力部は、上記処理装置を用いて、上記適合性判定部が出力条件を満たしたと判定した場合に、上記第二剰余記憶部が記憶した整数v2を上記整数e2として出力することを特徴とする。
上記整数分割部が、更に、第一係数記憶部と、第二係数記憶部と、商算出部と、第三係数算出部とを有し、
上記第一係数記憶部は、上記記憶装置を用いて、整数t1を記憶し、
上記第二係数記憶部は、上記記憶装置を用いて、整数t2を記憶し、
上記初期値設定部は、更に、上記処理装置を用いて、上記整数t1として0を上記第一係数記憶部に記憶させ、上記整数t2として1を上記第二係数記憶部に記憶させ、
上記商算出部は、上記処理装置を用いて、上記第一剰余記憶部が記憶した整数v1と、上記第二剰余記憶部が記憶した整数v2とに基づいて、上記整数v1を上記整数v2で割った商を超えない最大の整数を算出して、整数qとし、
上記第三係数算出部は、上記処理装置を用いて、上記適合性判定部が出力条件を満たしたと判定しない場合に、上記第一係数記憶部が記憶した整数t1と、上記第二係数記憶部が記憶した整数t2と、上記商算出部が算出した整数qとに基づいて、上記整数t2と上記整数qとの積を、上記整数t1から減算した整数を算出して、整数t3とし、上記第二係数記憶部が記憶した整数t2を上記整数t1として上記第一係数記憶部に記憶させ、算出した整数t3を上記整数t2として上記第二係数記憶部に記憶させ、
上記分割整数出力部は、更に、上記処理装置を用いて、上記適合性判定部が出力条件を満たしたと判定した場合に、上記第二係数記憶部が記憶した整数t2を上記整数e1として出力することを特徴とする。
上記検証値算出部が、上記処理装置を用いて、Σ(ni・Pi)(ただし、nは2以上の所定の整数。iは0以上k以下の整数。kは上記整数e1の絶対値及び上記整数e2をn進法で表記した場合の桁数の最大値。Piは、上記有限群Gの元で、Pi=e1,sg n・e1,i・h−e2,i・s。e1,sgnは1または−1。e1,i及びe2,iは0以上n−1以下の整数で、e1=e1,sgn・Σ(ni・e1,i)、e2=Σ(ni・e2,i)。)を算出して、上記有限群Gの元aとすることを特徴とする。
データを記憶する記憶装置と、データを処理する処理装置と、鍵記憶部と、暗号文入力部と、暗号文検証部と、検証装置と、復号文生成部とを有し、
上記鍵記憶部は、上記記憶装置を用いて、暗号文を復号する鍵を記憶し、
上記暗号文入力部は、上記処理装置を用いて、暗号文を入力し、
上記暗号文検証部は、上記処理装置を用いて、上記鍵記憶部が記憶した鍵と、上記暗号文入力部が入力した暗号文とに基づいて、上記検証装置に入力する整数eと、上記有限群Gの元sと、上記有限群Gの元hとを算出し、
上記検証装置は、上記暗号文検証部が算出した整数eと、上記有限群Gの元sと、上記有限群Gの元hとを入力して、検証成功か否かを判定し、
上記復号文生成部は、上記処理装置を用いて、上記検証装置が検証成功と判定した場合に、上記暗号文入力部が入力した暗号文を上記鍵記憶部が記憶した鍵により復号して、復号文を生成することを特徴とする。
上記暗号パラメータ記憶部は、上記記憶装置を用いて、上記有限群Gの位数pと、上記有限群Gの生成元g1と、上記有限群Gの元Rとを記憶し、
上記識別記憶部は、上記記憶装置を用いて、上記暗号文復号装置を識別するビット列IDを記憶し、
上記識別元算出部は、上記処理装置を用いて、上記識別記憶部が記憶したビット列IDに基づいて、所定のハッシュ関数H1により上記ビット列IDをハッシュしたハッシュ値を算出して、整数H1(ID)とし、上記暗号パラメータ記憶部が記憶した生成元g1と、上記暗号パラメータ記憶部が記憶した元Rと、算出した整数H1(ID)とに基づいて、上記生成元g1を整数H1(ID)倍した元と、上記元Rとを加算して、上記有限群Gの元Q(=R+H1(ID)・g1)とし、
上記識別元記憶部は、上記記憶装置を用いて、上記識別元算出部が算出した元Qを記憶し、
上記鍵記憶部は、上記記憶装置を用いて、有限群G2の元DIDを記憶し、
上記暗号文入力部は、上記処理装置を用いて、上記有限群Gの元Uと、ビット列Vとを上記暗号文として入力し、
上記暗号文検証部は、ペアリング値算出部と、ビット列算出部と、整数算出部とを有し、
上記ペアリング値算出部は、上記処理装置を用いて、上記暗号文入力部が入力した元Uと、上記鍵記憶部が記憶した元DIDとに基づいて、所定のペアリング関数eにより上記元Uと上記元DIDとのペアリング値を算出して、ペアリング値α(=e(U,DID))とし、
上記ビット列算出部は、上記処理装置を用いて、上記ペアリング値算出部が算出したペアリング値αに基づいて、所定のハッシュ関数H2により上記ペアリング値αをハッシュしたハッシュ値を算出して、ビット列H2(α)とし、上記暗号文入力部が入力したビット列Vと、算出したビット列H2(α)とに基づいて、上記ビット列Vと上記ビット列H2(α)との排他的論理和を取って、ビット列m(=V XOR H2(α))とし、
上記整数算出部は、上記処理装置を用いて、上記ビット列算出部が算出したビット列mに基づいて、所定のハッシュ関数H3により上記ビット列mをハッシュしたハッシュ値を算出して、整数r(=H3(m))とし、
上記検証装置は、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数rと、上記元sとして上記識別元記憶部が記憶した元Qと、上記元hとして上記暗号文入力部が入力した元Uとを入力して、検証成功か否かを判定し、
上記復号文生成部は、上記処理装置を用いて、上記検証装置が検証成功と判定した場合に、上記ビット列算出部が算出したビット列mに基づいて、所定のハッシュ関数H4により上記ビット列mをハッシュしたハッシュ値を算出して、共通鍵K(=H4(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により上記暗号化メッセージ入力部が入力した暗号化メッセージを復号することを特徴とする。
上記暗号パラメータ記憶部は、上記記憶装置を用いて、加法群G1の位数pと、上記加法群G1の生成元gと、上記位数pを位数とする乗法群GTの元v0とを記憶し、
上記鍵記憶部は、上記記憶装置を用いて、上記位数pを位数とする加法群G2の元d0と、上記加法群G2の元d1とを記憶し、
上記暗号文入力部は、上記処理装置を用いて、ビット列cと、上記加法群G1の元c0と、上記加法群G1の元c1と、1以上p−1以下の整数tとを上記暗号文として入力し、
上記暗号文検証部は、ペアリング値算出部と、整数算出部とを有し、
上記ペアリング値算出部は、上記処理装置を用いて、上記暗号文入力部が入力した元c0と、上記秘密鍵記憶部が記憶した元d0とに基づいて、所定のペアリング関数eにより上記元c0と上記元d0とのペアリング値を算出して、上記乗法群GTの元k0(=e(c0,d0))とし、上記暗号文入力部が入力した元c1と、上記秘密鍵記憶部が記憶した元d1とに基づいて、上記ペアリング関数eにより上記元c1と上記元d1とのペアリング値を算出して、上記乗法群GTの元k1(=e(c1,d1))とし、算出した上記元k0と、算出した上記元k1とに基づいて、上記元k0を上記元k1で除算して、上記乗法群GTの元k(=k0/k1)とし、
上記整数算出部は、上記処理装置を用いて、上記ペアリング値算出部が算出した元kと、上記暗号文入力部が入力したビット列cと元c0と元c1とに基づいて、所定のハッシュ関数H”により上記元kと上記ビット列cと上記元c0と上記元c1とをハッシュしたハッシュ値を算出して、整数H”(k,c,c0,c1)とし、上記暗号文入力部が入力した整数tと、算出した整数H”(k,c,c0,c1)と、上記暗号パラメータ記憶部が機記憶した位数pとに基づいて、上記整数tから上記整数H”(k,c,c0,c1)を減算した整数を位数pで割った余りを算出して、整数s(=t−H”(k,c,c0,c1)mod p)とし、
上記検証装置は、上記加法群G1を上記有限群Gとして、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数sと、上記元sとして上記暗号パラメータ記憶部が記憶した生成元gと、上記元hとして上記暗号文入力部が入力した元c0とを入力し、検証成功か否かを判定して、第一の検証結果とし、上記乗法群GTを上記有限群Gとして、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数sと、上記元sとして上記暗号パラメータ記憶部が記憶した元v0と、上記元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とに基づいて、e1・e≡e2(mod p)を満たす整数e1と整数e2とを算出し、
上記処理装置が、上記有限群Gの元sと、上記有限群Gの元hとを入力し、入力した元sと元hと、算出した整数e1と整数e2とに基づいて、上記有限群Gの元a(=e1・h−e2・s)を算出し、
上記処理装置が、算出した元aに基づいて、上記元aが上記有限群Gの単位元である場合に、検証成功と判定することを特徴とする。
実施の形態1について、図1〜図9を用いて説明する。
また、有限群Gにおける演算は、加法的に記述する。なお、これは、説明の便宜のためであって、群演算を乗法的に記述する群を除外するものではない。
有限群Gの位数pは、素数であるものとする。したがって、有限群Gは巡回群である。
暗号文復号装置200は、暗号文を入力し、入力した暗号文を復号して、復号文を生成する。
暗号文復号装置200は、鍵記憶部210、暗号文入力部220、暗号文検証部230、検証装置100、復号文生成部260を有する。
暗号文入力部220は、暗号文を入力する。
暗号文検証部230は、鍵記憶部210が記憶した鍵と、暗号文入力部220が入力した暗号文とに基づいて、暗号文入力部220が入力した暗号文を検証するために必要な値を算出する。
検証装置100は、暗号文検証部230が算出した値に基づいて、暗号文入力部220が入力した暗号文を検証する。
復号文生成部260は、検証装置100が検証に成功した場合に、暗号文入力部220が入力した暗号文を、鍵記憶部210が記憶した鍵により復号して、復号文を生成する。
暗号文復号装置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に接続されている。
暗号文復号装置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などは、出力部、出力装置の一例である。
磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。プログラム群923のプログラムは、CPU911、オペレーティングシステム921、ウィンドウシステム922により実行される。
ファイル群924には、以下に述べる実施の形態の説明において、「〜の判定結果」、「〜の計算結果」、「〜の処理結果」として説明する情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリになどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのCPUの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
また、以下に述べる実施の形態の説明において説明するフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD(Digital・Versatile・Disk)等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
検証装置100は、有限群Gの元s及び元h、有限群Gの位数p、整数eを入力し、h=e・sであるか否かを判定する。なお、整数eは1以上p−1以下であるものとする。
整数分割部110は、CPU911を用いて、有限群Gの位数pと、整数eとを入力して、2つの整数e1,e2を算出する。
検証値算出部130は、CPU911を用いて、有限群Gの元s及び元hと、整数分割部110が算出した整数e1及び整数e2とに基づいて、有限群Gの元aを算出する。
検証判定部150は、CPU911を用いて、検証値算出部130が算出した元aが有限群Gの単位元であるか否かを判定する。元aが有限群Gの単位元である場合、検証判定部150は、検証成功(すなわち、h=e・sである)と判定する。
元aが単位元Oであると判定した場合、成功判定処理S704へ進む。
元aが単位元Oでないと判定した場合、失敗判定処理S705へ進む。
整数分割部110は、有限群Gの位数pと、整数eとに基づいて、e1・e≡e2(mod p)を満たす整数e1及び整数e2を算出する。すなわち、整数分割部110は、整数e1と整数eとの積を位数pで割った余りが、整数e2と等しくなるよう、整数e1及び整数e2を定める。
なお、検証値算出部130における計算を高速化するため、整数分割部110は、e1・e≡e2(mod p)を満たす整数e1及び整数e2のうち、絶対値が位数pの平方根よりも小さい整数e1と、位数pの平方根よりも小さい1以上の整数である整数e2とを選択する。
整数入力部112は、CPU911を用いて、整数eを表わすデータを入力する。整数入力部112は、RAM914を用いて、入力した整数eを表わすデータを記憶する。
第二剰余記憶部115は、RAM914を用いて、整数v2を表わすデータを記憶する。
第一係数記憶部124は、RAM914を用いて、整数t1を表わすデータを記憶する。
第二係数記憶部125は、RAM914を用いて、整数t2を表わすデータを記憶する。
初期値設定部113は、CPU911を用いて、位数入力部111が記憶した位数pを表わすデータと、整数入力部112が記憶した整数eを表わすデータとを入力する。初期値設定部113は、CPU911を用いて、入力した位数pを表わすデータを、整数v1を表わすデータとして第一剰余記憶部114に記憶させる。初期値設定部113は、CPU911を用いて、入力した整数eを表わすデータを、整数v2を表わすデータとして第二剰余記憶部115に記憶させる。初期値設定部113は、CPU911を用いて、整数t1を表わすデータとして0を表わすデータを第一係数記憶部124に記憶させる。初期値設定部113は、CPU911を用いて、整数t2を表わすデータとして1を表わすデータを第二係数記憶部125に記憶させる。
なお、適合性判定部116は、あらかじめ、CPU911を用いて、位数pの平方根を超えない最大の整数を算出しておいてもよい。
また、位数pの平方根を算出する代わりに、整数v2の2進表記における桁数と、位数pの2進表記における桁数とを比較することにより、出力条件を満たしたか否かを判定してもよい。すなわち、適合性判定部116は、あらかじめ、CPU911を用いて、位数pを表わすデータのビット数を求め、求めたビット数を2で割って(割り切れない場合は切り上げ)、平方根ビット数とする。平方根ビット数は、位数pの平方根を超えない整数の2進表記における桁数を表わす。適合性判定部116は、RAM914を用いて、算出した平方根ビット数を記憶しておき、CPU911を用いて、整数v2を表わすデータのビット数を算出する。適合性判定部116は、CPU911を用いて、算出したビット数と、記憶した平方根ビット数とを比較し、整数v2を表わすデータのビット数が、平方根ビット数以下である場合に、整数v2のほうが位数pの平方根よりも小さいものとみなし、出力条件を満たしたと判定する。
整数v2が位数pの平方根より小さいと判定した場合、分割整数出力工程S718へ進む。
整数v2が位数pの平方根より大きいと判定した場合、剰余算出工程S713へ進む。
その後、適合性判定工程S712に戻る。
その後、整数分割処理を終了する。
検証値算出部130は、有限群Gの元s及び元hと、整数分割部110が算出した整数e1及び整数e2とに基づいて、有限群Gの元a(=e1・h−e2・s)を算出する。
索引算出部133は、CPU911を用いて、算出した整数e1の絶対値に基づいて、整数e1の絶対値をn進法で表わした各桁である整数の組(e1,i)(ただし、iは0以上k−1以下の整数。nはあらかじめ定めた2以上の整数。)を算出する。すなわち、索引算出部133は、CPU911を用いて、以下の条件を満たす整数の組(e1,i)を算出する。
例えば、n=2、e1=23、e2=34であれば、e1=(10111)2、e2=(100010)2であるから、k=6である。
テーブル生成部134は、CPU911を用いて、入力したデータが表わす元sと元hと判定結果とに基づいて、n×n個の有限群Gの元px,y(=e1,sgn・x・h−y・s。ただし、x及びyは0以上n−1以下の整数。e1,sgnは、整数e1が正の場合、1。整数e1が負の場合、−1。)を算出する。
例えば、n=2の場合、テーブル生成部134は、4つの元p0,0、p1,0、p0 ,1、p1,1を算出する。なお、元p0,0は常に単位元であるから、テーブル生成部134は、他の3つの元だけを算出してもよい。
テーブル記憶部135は、RAM914を用いて、テーブル生成部134が算出したn×n個の元px,yを表わすデータを記憶する。
加算結果記憶部144は、RAM914を用いて、有限群Gの元aを算出する途中の値である有限群Gの元a”を表わすデータを記憶する。
二基底加算部143は、CPU911を用いて、入力したデータが表わす整数e1,i及び整数e2,iに基づいて、テーブル記憶部135が記憶した有限群Gの元px,yを表わすデータのなかから、x=e1,i、y=e2,iである元px,yを表わすデータを元Piを表わすデータとして取得する。
二基底加算部143は、CPU911を用いて、倍算結果記憶部142が記憶した有限群Gの元a’を表わすデータを入力する。
二基底加算部143は、CPU911を用いて、入力したデータが表わす有限群Gの元a’と、元Piとに基づいて、元a’と元Piとを加算した元a’+Piを算出する。
二基底加算部143は、CPU911を用いて、算出した元a’+Piを表わすデータを、元a”を表わすデータとして加算結果記憶部144に記憶させる。
倍算部145は、CPU911を用いて、算出した元n・a”を表わすデータを、元a’を表わすデータとして倍算結果記憶部142に記憶させる。
索引算出部133は、CPU911を用いて、分割整数入力部131が入力した整数e1に基づいて、k個の整数e1,i(ただし、iは0以上k−1以下の整数。)を算出する。例えば、索引算出部133は、CPU911を用いて、整数e1の絶対値をnのi乗で割った商を超えない最大の整数をnで割った余りを算出して、e1,iとする。
同様に、索引算出部133は、CPU911を用いて分割整数入力部131が入力した整数e2に基づいて、k個の整数e2,i(ただし、iは0以上k−1以下の整数。)を算出する。例えば、索引算出部133は、CPU911を用いて、整数e2をnのi乗で割った商を超えない最大の整数をnで割った余りを算出して、e2,iとする。
テーブル記憶部135は、RAM914を用いて、テーブル生成部134が算出したn2個の元px,yを記憶する。
二基底加算部143は、CPU911を用いて、取得した整数e1,iと整数e2,iとに基づいて、テーブル記憶部135が記憶したn2個の有限群Gの元px,yのなかから、x=e1,j、y=e2,jである元px,yを取得して、元Piとする。
二基底加算部143は、CPU911を用いて、倍算結果記憶部142が記憶した有限群Gの元a’と、取得した元Piとに基づいて、有限群Gにおける演算により、元a’と元Piとを加算した元a’+Piを算出する。
加算結果記憶部144は、RAM914を用いて、二基底加算部143が算出した元a’+Piを、元a”として記憶する。
算出した整数jが正または0である場合、倍算工程S727へ進む。
算出した整数jが負になった場合、検証値出力工程S728へ進む。
倍算結果記憶部142は、RAM914を用いて、倍算部145が算出した元n・a”を、元a’として記憶する。
その後、二基底加算工程S725に戻る。
その後、検証値算出処理を終了する。
なお、以下の説明において、有限群Gの群演算を1回するのにかかる時間をTとする。また、それ以外の計算やデータの取得などにかかる時間は、Tよりもはるかに短いので、無視する。
二基底可算工程S725において、二基底加算部143は、元a”を算出するために群演算を1回する。二基底可算工程S725はk回繰り返されるので、二基底可算工程S725にかかる時間は、全部でkTである。
nが2のべき乗である場合、倍算工程S727において、倍算部145は、元a’を算出するために群演算をlog2n回する。倍算工程S727はk−1回繰り返されるので、倍算工程S727にかかる時間は、全部でlog2n(k−1)Tである。
したがって、検証値算出処理全体にかかる時間は、[n2−3+k+log2n(k−1)]Tである。例えば、n=2の場合は2kT、n=4の場合は(3k+12)Tである。
算出手順は、検証値算出処理と同様とする。ただし、基底となる元が一つなので、あらかじめ算出しておくテーブルには、n個の元x・s(xは0以上n−1以下の整数。)を記憶する。
テーブルの生成にかかる時間は、(n−2)Tである。
加算にかかる時間は、全部でk’Tである。
倍算にかかる時間は、全部でlog2n(k’−1)Tである。
したがって、e・sの算出全体にかかる時間は、[n−2+k’+log2n(k’−1)]Tである。例えば、n=2の場合は(2k’−1)T、n=4の場合は3k’Tである。
これに対して、e1の絶対値及びe2は1以上√p未満の整数なので、kは、√pをn進法で表わした場合の桁数と、確率的にほぼ等しく、k’の約半分である。
したがって、h=e・sであるか否かを判定するのにかかる時間が、約半分になる。
上記整数分割部110は、上記処理装置(CPU911)を用いて、有限群Gの位数pと、整数eとを入力し、入力した位数pと整数eとに基づいて、e1・e≡e2(mod
p)を満たす整数e1と整数e2とを算出する。
上記検証値算出部130は、上記処理装置(CPU911)を用いて、上記有限群Gの元sと、上記有限群Gの元hとを入力し、入力した元sと元hと、上記整数分割部110が算出した整数e1と整数e2とに基づいて、上記有限群Gの元a(=e1・h−e2・s)を算出する。
上記検証判定部150は、上記処理装置(CPU911)を用いて、上記検証値算出部130が算出した元aに基づいて、上記元aが上記有限群Gの単位元である場合に、検証成功と判定する。
上記整数分割部110は、第一剰余記憶部114と、第二剰余記憶部115と、初期値設定部113と、適合性判定部116と、第三剰余算出部117と、分割整数出力部129とを有する。
上記第一剰余記憶部114は、上記記憶装置(RAM914)を用いて、整数v1を記憶する。
上記第二剰余記憶部115は、上記記憶装置(RAM914)を用いて、整数v2を記憶する。
上記初期値設定部113は、上記処理装置(CPU911)を用いて、上記位数pを上記整数v1として上記第一剰余記憶部114に記憶させ、上記整数eを上記整数v2として上記第二剰余記憶部115に記憶させる。
上記適合性判定部116は、上記処理装置(CPU911)を用いて、上記第二剰余記憶部115が記憶した整数v2が上記位数pの平方根よりも小さい場合に、出力条件を満たしたと判定する。
上記第三剰余算出部117は、上記処理装置(CPU911)を用いて、上記適合性判定部116が出力条件を満たしたと判定しない場合に、上記第一剰余記憶部114が記憶した整数v1と、上記第二剰余記憶部115が記憶した整数v2とに基づいて、上記整数v1を上記整数v2で割った余りを算出して、整数v3とし、上記第二剰余記憶部115が記憶した整数v2を上記整数v1として上記第一剰余記憶部114に記憶させ、算出した整数v3を上記整数v2として上記第二剰余記憶部115に記憶させる。
上記分割整数出力部129は、上記処理装置(CPU911)を用いて、上記適合性判定部116が出力条件を満たしたと判定した場合に、上記第二剰余記憶部115が記憶した整数v2を上記整数e2として出力する。
数記憶部125と、商算出部126と、第三係数算出部127とを有する。
上記第一係数記憶部124は、上記記憶装置(RAM914)を用いて、整数t1を記憶する。
上記第二係数記憶部125は、上記記憶装置(RAM914)を用いて、整数t2を記憶する。
上記初期値設定部113は、更に、上記処理装置(CPU911)を用いて、上記整数t1として0を上記第一係数記憶部124に記憶させ、上記整数t2として1を上記第二係数記憶部125に記憶させる。
上記商算出部126は、上記処理装置(CPU911)を用いて、上記第一剰余記憶部114が記憶した整数v1と、上記第二剰余記憶部115が記憶した整数v2とに基づいて、上記整数v1を上記整数v2で割った商を超えない最大の整数を算出して、整数qとする。
上記第三係数算出部127は、上記処理装置(CPU911)を用いて、上記適合性判定部116が出力条件を満たしたと判定しない場合に、上記第一係数記憶部124が記憶した整数t1と、上記第二係数記憶部125が記憶した整数t2と、上記商算出部126が算出した整数qとに基づいて、上記整数t2と上記整数qとの積を、上記整数t1から減算した整数を算出して、整数t3とし、上記第二係数記憶部125が記憶した整数t2を上記整数t1として上記第一係数記憶部124に記憶させ、算出した整数t3を上記整数t2として上記第二係数記憶部125に記憶させる。
上記分割整数出力部129は、更に、上記処理装置(CPU911)を用いて、上記適合性判定部116が出力条件を満たしたと判定した場合に、上記第二係数記憶部125が記憶した整数t2を上記整数e1として出力する。
上記鍵記憶部210は、上記記憶装置を用いて、暗号文を復号する鍵を記憶する。
上記暗号文入力部220は、上記処理装置を用いて、暗号文を入力する。
上記暗号文検証部230は、上記処理装置を用いて、上記鍵記憶部210が記憶した鍵と、上記暗号文入力部220が入力した暗号文とに基づいて、上記検証装置100に入力する整数eと、上記有限群Gの元sと、上記有限群Gの元hとを算出する。
上記検証装置100は、上記暗号文検証部230が算出した整数eと、上記有限群Gの元sと、上記有限群Gの元hとを入力して、検証成功か否かを判定する。
上記復号文生成部260は、上記処理装置を用いて、上記検証装置100が検証成功と判定した場合に、上記暗号文入力部220が入力した暗号文を上記鍵記憶部210が記憶した鍵により復号して、復号文を生成する。
上記処理装置(CPU911)が、有限群Gの位数pと、整数eとを入力し、入力した位数pと整数eとに基づいて、e1・e≡e2(mod p)を満たす整数e1と整数e2とを算出する。
上記処理装置(CPU911)が、上記有限群Gの元sと、上記有限群Gの元hとを入力し、入力した元sと元hと、算出した整数e1と整数e2とに基づいて、上記有限群Gの元a(=e1・h−e2・s)を算出する。
上記処理装置(CPU911)が、算出した元aに基づいて、上記元aが上記有限群Gの単位元である場合に、検証成功と判定する。
暗号文正当性検証装置(検証装置100)は、
指数部(整数e)を分割する装置(整数分割部110)と、
分割された指数(整数e1及び整数e2)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をした値(he1−se2またはe1・h−e2・s)を計算する装置(検証値算出部130)と、
その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
検証装置100は、se2・h−e1=1(乗法的記述)またはe2・s−e1・h=0(加法的記述)を検証する。
除算をする整数v2、及び除算される整数v1が、それぞれ、前ステップの除算の剰余v3、及び前ステップの除算をする整数v2である計算装置(第三剰余算出部117)と、
各ステップの除算結果の剰余v2がある一定の数(√p)以上、又はある一定の数(√p)以下であることを判定する計算装置(適合性判定部116)とを有する。
最初に、整数分割部110は、CPU911を用いて、正の整数p、1<e<pである整数e、pの平方根√pを入力する。
次に、整数分割部110は、RAM914を用いて、u1←1,v1←p,u2←0,v2←eを初期値として記憶する。
次に、整数分割部110は、CPU911を用いて、v2<√pかどうかをチェックする。
v2>√pならば、整数分割部110は、CPU911を用いて、q←v1/v2(端数切捨て)、v3←v1 mod v2、u3←u1−q・u2を計算し、RAM914を用いて、v1←v2、v2←v3、u1←u2、u2←u3として記憶する。その後、v2<√pかどうかのチェックに戻り、v2>√pなら、同じ計算を繰り返す。
v2<√pになったら、整数分割部110は、CPU911を用いて、e1←(v2−u2・p)/v1を計算し、e2←v2とする。
最後に、整数分割部110は、CPU911を用いて、e1,e2を出力する。
このような手順でも、e1・e≡e2(mod p)となり、e1,e2のビット長はpのビット長の約半分となる。
実施の形態2について、図10〜図15を用いて説明する。
IDベース公開鍵暗号システム820Aは、暗号文復号装置200Aを識別するメールアドレスなどの識別データを、暗号文復号装置200Aの公開鍵として利用する暗号通信システムである。暗号文復号装置200Aと公開鍵との対応関係を証明する必要がないので、公開鍵証明書や認証局などが必要ない。
位数pは、素数である。
加法群G1の位数は、pである。元g1は、加法群G1の生成元である。
加法群G2の位数は、加法群G1と同じpである。元g2は、加法群G2の生成元である。
乗法群GTの位数は、加法群G1及び加法群G2と同じpである。
ペアリングeは、加法群G1の元と加法群G2の元との組を、乗法群GTの元(ペアリング値)へ写す写像である。ペアリングeは、双線形を有する。すなわち、すべてのu、v、a、bについて、e(a・u,b・v)=e(u,v)ab(ただし、uは加法群G1の元。vは加法群G2の元。a及びbは整数。)である。また、加法群G1の元g1と加法群G2の元g2とのペアリング値e(g1,g2)は、乗法群GTの単位元ではない。
ハッシュ関数H1は、任意の長さのビット列から、1以上p−1以下の整数を生成するハッシュ関数である。
ハッシュ関数H2は、乗法群GTの元から、所定の長さのビット列を生成するハッシュ関数である。
ハッシュ関数H3は、所定の長さのビット列から、1以上p−1以下の整数を生成するハッシュ関数である。
ハッシュ関数H4は、所定の長さのビット列から、所定の長さのビット列を生成するハッシュ関数である。
暗号パラメータ設定装置810Aは、暗号パラメータ記憶部819A、公開元生成部811A、秘密乱数出力部814A、公開元出力部815Aを有する。
公開元生成部811Aは、秘密乱数生成部812A、公開元算出部813Aを有する。
秘密乱数出力部814Aが出力した秘密乱数sは、鍵生成装置300Aに対して秘密裡に通知される。
公開元出力部815Aが出力した公開元Rは、IDベース公開鍵暗号システム820Aの利用者に公開される。
鍵生成装置300Aは、暗号パラメータ記憶部390A、秘密乱数記憶部330A、識別入力部340A、秘密鍵生成部350A、秘密鍵出力部360Aを有する。
秘密鍵生成部350Aは、ハッシュ値算出部351A、整数加算部352A、逆数算出部353A、秘密鍵算出部354Aを有する。
秘密鍵出力部360Aが出力した秘密鍵DIDは、暗号文復号装置200Aに対して秘密裡に通知される。
暗号文生成装置400Aは、暗号パラメータ記憶部490A、識別記憶部410A、共通鍵生成部420A、共通鍵記憶部430A、メッセージ入力部440A、メッセージ暗号化部450A、暗号化メッセージ出力部460A、暗号文出力部470Aを有する。
共通鍵生成部420Aは、秘密ビット列生成部421A、秘密整数算出部422A、識別元算出部423A、暗号元算出部424A、秘密ペアリング値算出部425A、暗号ビット列算出部426A、共通鍵算出部427Aを有する。
識別元算出部423Aが算出する元Qは、R=s・g1だから、
暗号文復号装置200Aは、暗号パラメータ記憶部290A、識別記憶部241A、識別元算出部242A、識別元記憶部243A、鍵記憶部210A、暗号文入力部220A、暗号文検証部230A、検証装置100A、復号文生成部260A、共通鍵記憶部270A、暗号化メッセージ入力部281A、メッセージ復号部282A、復号メッセージ出力部283Aを有する。
暗号文検証部230Aは、ペアリング値算出部231A、ビット列算出部232A、整数算出部233Aを有する。
ペアリング値算出部231Aが算出するペアリング値αは、ペアリングeの双線形より、
したがって、暗号文入力部220Aが入力した暗号文cが正当な暗号文であれば、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とに基づいて、e1・r≡e2(mod p)、|e1|<√p、0<e2<√pを満たす整数e1及び整数e2を算出する。検証装置100Aは、CPU911を用いて、入力したデータが表わす元Uと元Qと、算出した整数e1と整数e2とに基づいて、加法群G1における演算により、加法群G1の元a=e1・U−e2・Qを算出する。検証装置100Aは、CPU911を用いて、算出した元aに基づいて、元aが加法群G1の単位元であるか否かを判定する。検証装置100Aは、CPU911を用いて、元aが加法群G1の単位元である場合、「検証成功」と判定し、元aが加法群G1の単位元でない場合、「検証失敗」と判定する。
検証装置100Aは、CPU911を用いて、検証結果を表わすデータを出力する。
したがって、暗号文生成装置400Aと暗号文復号装置200Aとが同じ共通鍵Kを共有できる。
暗号文生成装置400Aと暗号文復号装置200Aとが同じ共通鍵Kを共有しているので、メッセージ復号部282Aが生成するメッセージM’は、暗号文生成装置400Aのメッセージ入力部440Aが入力したメッセージMと同じになる。
U=r・Qである場合、復号文生成工程S735Aへ進む。
U≠r・Qである場合、暗号文復号処理を終了する。
その後、暗号文復号処理を終了し、算出した共通鍵Kにより、暗号化メッセージCMを復号する。
この実施の形態における暗号文復号装置200Aは、暗号文の整合性を検証するため、検証装置100AがU=r・Qであるか否かを判定する。
実施の形態1で説明したように、検証装置100Aは、U=r・Qであるか否かを高速に検証することができる。
したがって、暗号文復号装置200Aは、高速に暗号文を復号することができる。
上記鍵記憶部210は、上記記憶装置を用いて、暗号文を復号する鍵(秘密鍵DID)を記憶する。
上記暗号文入力部220Aは、上記処理装置(CPU911)を用いて、暗号文cを入力する。
上記暗号文検証部230は、上記処理装置(CPU911)を用いて、上記鍵記憶部210Aが記憶した鍵(秘密鍵DID)と、上記暗号文入力部220Aが入力した暗号文cとに基づいて、上記検証装置100Aに入力する整数e(ハッシュ値r)と、上記有限群G(加法群G1)の元s(元Q)と、上記有限群G(加法群G1)の元h(元U)とを算出する。
上記検証装置100Aは、上記暗号文検証部230Aが算出した整数e(ハッシュ値r)と、上記有限群G(加法群G1)の元s(元Q)と、上記有限群G(加法群G1)の元h(元U)とを入力して、検証成功か否かを判定する。
上記復号文生成部260Aは、上記処理装置(CPU911)を用いて、上記検証装置100Aが検証成功と判定した場合に、上記暗号文入力部220Aが入力した暗号文cを上記鍵記憶部210Aが記憶した鍵(秘密鍵DID)により復号して、復号文(共通鍵K)を生成する。
上記暗号パラメータ記憶部290Aは、上記記憶装置(磁気ディスク装置920)を用いて、上記有限群G(加法群G1)の位数pと、上記有限群G(加法群G1)の生成元g1と、上記有限群G(加法群G1)の元Rとを記憶する。
上記識別記憶部241Aは、上記記憶装置(磁気ディスク装置920)を用いて、上記暗号文復号装置200Aを識別するビット列IDを記憶する。
上記識別元算出部242Aは、上記処理装置を用いて、上記識別記憶部241Aが記憶したビット列IDに基づいて、所定のハッシュ関数H1により上記ビット列IDをハッシュしたハッシュ値を算出して、整数(ハッシュ値)H1(ID)とし、上記暗号パラメータ記憶部290Aが記憶した生成元g1と、上記暗号パラメータ記憶部290Aが記憶した元Rと、算出した整数(ハッシュ値)H1(ID)とに基づいて、上記生成元g1を整数(ハッシュ値)H1(ID)倍した元と、上記元Rとを加算して、上記有限群G(加法群G1)の元Q(=R+H1(ID)・g1)とする。
上記識別元記憶部243Aは、上記記憶装置(磁気ディスク装置920)を用いて、上記識別元算出部242Aが算出した元Qを記憶する。
上記鍵記憶部210Aは、上記記憶装置を用いて、有限群(加法群)G2の元DIDを記憶する。
上記暗号文入力部220Aは、上記処理装置(CPU911)を用いて、上記有限群G(加法群G1)の元Uと、ビット列Vとを上記暗号文cとして入力する。
上記暗号文検証部230Aは、ペアリング値算出部231Aと、ビット列算出部232Aと、整数算出部233Aとを有する。
上記ペアリング値算出部231Aは、上記処理装置(CPU911)を用いて、上記暗号文入力部220Aが入力した元Uと、上記鍵記憶部210Aが記憶した元DIDとに基づいて、所定のペアリング関数eにより上記元Uと上記元DIDとのペアリング値を算出して、ペアリング値α(=e(U,DID))とする。
上記ビット列算出部232Aは、上記処理装置(CPU911)を用いて、上記ペアリング値算出部231Aが算出したペアリング値αに基づいて、所定のハッシュ関数H2により上記ペアリング値αをハッシュしたハッシュ値を算出して、ビット列(ハッシュ値)H2(α)とし、上記暗号文入力部220Aが入力したビット列Vと、算出したビット列(ハッシュ値)H2(α)とに基づいて、上記ビット列Vと上記ビット列(ハッシュ値)H2(α)との排他的論理和を取って、ビット列m(=V XOR H2(α))とする。
上記整数算出部233Aは、上記処理装置(CPU911)を用いて、上記ビット列算出部232Aが算出したビット列mに基づいて、所定のハッシュ関数H3により上記ビット列mをハッシュしたハッシュ値を算出して、整数(ハッシュ値)r(=H3(m))とする。
上記検証装置100Aは、上記暗号パラメータ記憶部290Aが記憶した位数pと、上記整数eとして上記整数算出部233Aが算出した整数(ハッシュ値)rと、上記元sとして上記識別元記憶部243Aが記憶した元Qと、上記元hとして上記暗号文入力部220Aが入力した元Uとを入力して、検証成功か否かを判定する。
上記復号文生成部260Aは、上記処理装置(CPU911)を用いて、上記検証装置100Aが検証成功と判定した場合に、上記ビット列算出部232Aが算出したビット列mに基づいて、所定のハッシュ関数H4により上記ビット列mをハッシュしたハッシュ値を算出して、共通鍵K(=H4(m))とし、算出した共通鍵Kを上記復号文として出力する。
上記共通鍵記憶部270Aは、上記記憶装置(RAM914)を用いて、上記復号文生成部260Aが出力した共通鍵Kを記憶する。
上記暗号化メッセージ入力部281Aは、上記処理装置(CPU911)を用いて、暗号化メッセージCMを入力する。
上記メッセージ復号部282Aは、上記処理装置(CPU911)を用いて、上記共通鍵記憶部270Aが記憶した共通鍵Kにより上記暗号化メッセージ入力部281Aが入力した暗号化メッセージCMを復号する。
暗号文正当性検証装置(検証装置100A)は、
指数部(整数e)を分割する装置(整数分割部110)と、
分割された指数(整数e1及び整数e2)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値he1−se2またはe1・h−e2・sを計算する装置(検証値算出部130)と、
その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
暗号文復号装置200Aは、
公開パラメータ(元g1及び公開元R)と、受信者(暗号文復号装置200A)のIDから計算される値(元Q=R+H1(ID)・g1)を事前に計算する事前計算装置(識別元算出部242A)と、
その事前計算値(元Q)を記憶する記憶装置(識別元記憶部243A)とを有する。
公開パラメータ(元g1及び公開元R)と、受信者(暗号文復号装置200A)のIDから計算される値(元Q)を事前に計算する事前計算装置(識別元算出部242A)と、
その事前計算値(元Q)を記憶する記憶装置(識別元記憶部243A)と、
その事前計算値(元Q)に対する、乗法群におけるべき乗算、または(超)楕円曲線上の点がなす群などの加法群におけるスカラー倍算をした値(Qrまたはr・Q)を検証する検証装置100Aとを有する。
検証装置100Aは、
指数部(ハッシュ値r)を分割する装置(整数分割部110)と、
分割された指数(整数e1及び整数e2)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値Ue1・Q−e2またはe1・U−e2・Qを計算する装置(検証値算出部130)と、
その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
暗号文復号装置200Aは、
公開パラメータ(暗号パラメータ)である乗法群または加法群の元R,元g1と、受信者(暗号文復号装置200A)を識別するビット列IDのハッシュ値h=H1(ID)とから計算される元Q=R・g1 hまたはQ=R+h・g1を事前に計算する事前計算装置(識別元算出部242A)と、
その元Qを記憶する記憶装置(識別元記憶部243A)と、
ランダムなビット列mのハッシュ値である整数rに対して、Qrまたはr・Qが既知のUと一致するかどうか検証することにより、暗号文が正しいか判定する暗号文正当性検証装置(検証装置100A)とを有する。
暗号文復号装置200Aは、
公開パラメータ(暗号パラメータ)である乗法群または加法群の元R,元g1と、受信者(暗号文復号装置200A)を識別するビット列IDのハッシュ値h=H1(ID)とから計算される元Q=R・g1 hまたはQ=R+h・g1を事前に計算する事前計算装置(識別元算出部242A)と、
その元Qを記憶する記憶装置(識別元記憶部243A)と、
ランダムなビット列mのハッシュ値である整数rに対して、Qrまたはr・Qが既知のUと一致するかどうか検証することにより、暗号文が正しいか判定する暗号文正当性検証装置(検証装置100A)とを有する。
公開パラメータ(暗号パラメータ)である乗法群または加法群の元R,元g1と、受信者(暗号文復号装置200A)を識別するビット列IDのハッシュ値h=H1(ID)とから計算される元Q=R・g1 hまたはQ=R+h・g1を事前に計算する事前計算装置(識別元算出部242A)と、
その元Qを記憶する記憶装置(識別元記憶部243A)と、
ランダムなビット列mのハッシュ値(整数r)を計算する装置(整数算出部233A)と、
指数部(整数r)を分割する装置(整数分割部110)と、
分割された指数(整数e1及び整数e2)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値Ue1・Q−e2またはe1・U−e2・Qを計算する装置(検証値算出部130)と、
その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
公開パラメータ(暗号パラメータ)である乗法群または加法群の元R,元g1と、受信者(暗号文復号装置200A)を識別するビット列IDのハッシュ値h=H1(ID)とから計算される元Q=R・g1 hまたはQ=R+h・g1を事前に計算する事前計算装置(識別元算出部242A)と、
その元Qを記憶する記憶装置(識別元記憶部243A)と、
ランダムなビット列mのハッシュ値である整数rを計算する装置(整数算出部233A)と、
指数部(整数r)を分割する装置(整数分割部110)と、
分割された指数(整数e1及び整数e2)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値Ue1・Q−e2またはe1・U−e2・Qを計算する装置(検証値算出部130)と、
その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
IDベース公開鍵暗号システム820Aでは、位数pが素数である加法群G1,加法群G2,乗法群GTと、群G1内の基点(生成元)g1,群G2内の基点g2、ペアリングeを用いる。
まず、暗号パラメータ設定装置810A(暗号パラメータ生成装置)は、CPU911を用いて、1以上p−1以下の整数sをランダムに選ぶ。次に、暗号パラメータ設定装置810Aは、CPU911を用いて、群G1の元R=s・g1を計算する。暗号パラメータ設定装置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用の秘密鍵である群G2の元dID=e・g2を計算して、出力する。
暗号文生成装置400A(暗号化装置)は、まず、CPU911を用いて、ランダムなビット列mを生成する。次に、暗号文生成装置400Aは、CPU911を用いて、ハッシュ値r=H3(m),ハッシュ値h=H1(ID)を計算し、群G1の元Q=R+h・g1を計算する。暗号文生成装置400Aは、CPU911を用いて、群G1の元U=r・Qを計算し、ビット列mとハッシュ値H2(e(g1,g2)r)との排他的論理和であるビット列V=XOR(m,H2(e(g1,g2)r))を計算する。暗号文生成装置400Aは、CPU911を用いて、鍵(共通鍵)K=H4(m),暗号文c=(U,V)を出力する。
暗号文復号装置200A(復号装置)は、自身を識別するビット列IDと、鍵生成装置300Aが生成した秘密鍵dIDと、暗号文生成装置400Aが出力した暗号文c=(U,V)とを入力する。暗号文復号装置200Aは、ペアリング値α=e(U,dID)を計算し、ビット列Vと、ハッシュ値H2(α)との排他的論理和であるビット列m=XOR(V,H2(α))を計算する。暗号文復号装置200Aは、ハッシュ値r=H3(m),ハッシュ値h=H1(ID)を計算し、群G1の元Q=R+h・g1を計算する。暗号文復号装置200Aは、CPU911を用いて、r・Q=Uが成り立つかどうかをチェックする。成立しなければ、暗号文復号装置200Aは、「拒絶」を出力する。成立すれば、暗号文復号装置200Aは、CPU911を用いて、共通鍵K=H4(m)を計算し、出力する。
検証装置100Aでは、整数分割部110が、CPU911を用いて、rとpとを入力して、e1・r≡e2(mod p)となる整数e1,e2を算出し、検証値算出部130が、CPU911を用いて、群G1における二基底スカラー倍算により、群G1の元W=e2・Q−e1・Uを計算し、検証判定部150が、CPU911をもちいて、元Wが群G1の単位元Oであるかどうかをチェックすることにより、r・Q=Uが成立するかを高速にチェックする。
実施の形態3について、図16〜図20を用いて説明する。
公開鍵暗号システム820Bは、暗号文生成装置400Bが暗号文復号装置200Bの公開鍵を使って暗号文を生成し、暗号文復号装置200Bが公開鍵に対応する秘密鍵を使って暗号文を復号するシステムである。
位数pは、素数である。
加法群Gの位数は、pである。元gは、加法群Gの生成元である。
ハッシュ関数Hは、加法群Gの二つの元の順序対から、1以上p−1以下の整数を生成するハッシュ関数である。
鍵導出関数KDFは、加法群Gの二つの元の順序対から、所定の長さのビット列を生成する関数である。
鍵生成装置300Bは、公開鍵として、加法群Gの四つの元g’、c、d、hを生成する。鍵生成装置300Bは、秘密鍵として、1以上p−1以下の四つの整数w、x、y、zを生成する。
鍵生成装置300Bは、暗号パラメータ記憶部390B、秘密鍵生成部350B、公開鍵生成部370B、秘密鍵出力部360B、公開鍵出力部380Bを有する。
秘密鍵生成部350Bは、四つの秘密乱数生成部351B〜354Bを有する。
第一の秘密乱数生成部351Bは、生成した整数を整数wとし、RAM914を用いて、生成した整数wを表わすデータを記憶する。
第二の秘密乱数生成部352Bは、生成した整数を整数xとし、RAM914を用いて、生成した整数xを表わすデータを記憶する。
第三の秘密乱数生成部353Bは、生成した整数を整数yとし、RAM914を用いて、生成した整数yを表わすデータを記憶する。
第四の秘密乱数生成部354Bは、生成した整数を整数zとし、RAM914を用いて、生成した整数zを表わすデータを記憶する。
公開鍵生成部370Bは、四つの公開元算出部371B〜374Bを有する。
第一の公開元算出部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が出力した秘密鍵は、暗号文復号装置200Bに対して秘密裡に通知される。
公開鍵出力部380Bが出力した公開鍵は、暗号文復号装置200の公開鍵として公開鍵暗号システム820Bの利用者に公開される。
暗号文生成装置400Bは、暗号パラメータ記憶部490B、公開鍵記憶部410B、共通鍵生成部420B、暗号文出力部470B、共通鍵記憶部430B、メッセージ入力部440B、メッセージ暗号化部450B、暗号化メッセージ出力部460Bを有する。
共通鍵生成部420Bは、秘密乱数生成部421B、第一暗号元算出部422B、第二暗号元算出部423B、ハッシュ値算出部424B、整数算出部425B、第三暗号元算出部426B、秘密元算出部427B、共通鍵算出部428Bを有する。
第二暗号元算出部423Bが算出する元u’は、g’=w・g、u=r・gだから、
第三暗号元算出部426Bが算出する元vは、c=x・g、d=y・g、u=r・gだから、
秘密元算出部427Bが算出する元h〜は、h=z・g、u=r・gだから、
暗号文復号装置200Bは、暗号パラメータ記憶部290B、鍵記憶部210B、暗号文入力部220B、暗号文検証部230B、検証装置100B、復号文生成部260B、共通鍵記憶部270B、暗号化メッセージ入力部281B、メッセージ復号部282B、復号メッセージ出力部283Bを有する。
ハッシュ値算出部231Bが算出するハッシュ値αは、暗号文生成装置400Bのハッシュ値算出部424Bが算出したハッシュ値αと等しい。
判断の順序はどちらが先でもよいが、以下では、まず、u’=w・uであるか否かを判断し、次に、v=t・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とに基づいて、e1・w≡e2(mod p)、|e1|<√p、0<e2<√pを満たす整数e1及び整数e2を算出する。なお、整数wは、暗号文復号装置200の秘密鍵の一部であり、暗号文入力部220Bが暗号文cを入力する前からわかっているので、検証装置100Bは、暗号文入力部220Bが暗号文cを入力する前に、CPU911を用いて、あらかじめ整数e1及び整数e2を算出し、耐タンパ性のある記憶装置を用いて記憶しておいてもよい。
検証装置100Bは、CPU911を用いて、入力したデータが表わす元u’と元uと、算出した整数e1と整数e2とに基づいて、加法群Gにおける演算により、加法群Gの元a=e1・u’−e2・uを算出する。検証装置100Bは、CPU911を用いて、算出した元aに基づいて、元aが加法群Gの単位元であるか否かを判定する。検証装置100Bは、CPU911を用いて、元aが加法群Gの単位元である場合、第一の検証に成功したと判定し、元aが加法群Gの単位元でない場合、「検証失敗」と判定する。
検証装置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とに基づいて、e1・t≡e2(mod p)、|e1|<√p、0<e2<√pを満たす整数e1及び整数e2を算出する。検証装置100Bは、CPU911を用いて、入力したデータが表わす元vと元uと、算出した整数e1と整数e2とに基づいて、加法群Gにおける演算により、加法群Gの元a=e1・v−e2・uを算出する。検証装置100Bは、CPU911を用いて、算出した元aに基づいて、元aが加法群Gの単位元であるか否かを判定する。検証装置100Bは、CPU911を用いて、元aが加法群Gの単位元である場合、第二の検証にも成功したと判定して「検証成功」と判定し、元aが加法群Gの単位元でない場合、「検証失敗」と判定する。
検証装置100Bは、CPU911を用いて、検証結果を表わすデータを出力する。
復号文生成部260Bは、秘密元算出部261B、共通鍵算出部262Bを有する。
暗号文入力部220Aが入力した暗号文cが正当な暗号文であれば、数26より、秘密元算出部261Bが算出する元h〜は、暗号文生成装置400Bの秘密元算出部427Bが算出した元h〜と等しい。
秘密元算出部261Bが算出した元h〜が、暗号文生成装置400Bの秘密元算出部427Bが算出した元h〜と等しいので、共通鍵算出部262Bが算出する共通鍵Kは、暗号文生成装置400Bの共通鍵算出部428Bが算出した共通鍵Kと等しい。
したがって、暗号文生成装置400Bと暗号文復号装置200Bとが同じ共通鍵Kを共有できる。
暗号文生成装置400Bと暗号文復号装置200Bとが同じ共通鍵Kを共有しているので、メッセージ復号部282Bが生成するメッセージM’は、暗号文生成装置400Bのメッセージ入力部440Bが入力したメッセージMと同じになる。
u’=w・uである場合、第二検証工程S734Bへ進む。
u’≠w・uである場合、暗号文復号処理を終了する。
v=t・uである場合、秘密元算出工程S735Bへ進む。
v≠t・uである場合、暗号文復号処理を終了する。
その後、暗号文復号処理を終了し、算出した共通鍵Kにより、暗号化メッセージCMを復号する。
上記暗号パラメータ記憶部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を上記復号文として出力する。
上記共通鍵記憶部270Bは、上記記憶装置(RAM914)を用いて、上記復号文生成部260Bが出力した共通鍵Kを記憶する。
上記暗号化メッセージ入力部281Bは、上記処理装置(CPU911)を用いて、暗号化メッセージCMを入力する。
上記メッセージ復号部282Bは、上記処理装置(CPU911)を用いて、上記共通鍵記憶部270Bが記憶した共通鍵Kにより上記暗号化メッセージ入力部281Bが入力した暗号化メッセージCMを復号する。
指数部(整数w)を分割する装置(整数分割部110)と、
分割された指数(整数e1及び整数e2)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値u’e1・u−e2またはe1・u’−e2・uを計算する装置(検証値算出部130)と、
その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
指数部(整数t)を分割する装置(整数分割部110)と、
分割された指数(整数e1及び整数e2)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値ve1・u−e2またはe1・v−e2・uを計算する装置(検証値算出部130)と、
その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
公開鍵暗号システム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を用いて、暗号文C0=(u,u’,v)と、鍵Kとを出力する。
暗号文復号装置200B(復号装置)は、CPU911を用いて、秘密鍵(w,x,y,z)と、暗号文C0=(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〜)を計算して、出力する。
実施の形態4について、図21〜図27を用いて説明する。
IDベース公開鍵暗号システム820Cは、実施の形態2で説明したIDベース公開鍵暗号システム820Aと同様、暗号文復号装置200Cを識別する識別データを、暗号文復号装置200Cの公開鍵として利用する暗号通信システムである。
位数pは、素数である。
加法群Gの位数は、pである。元gは、加法群Gの生成元である。
加法群G’の位数は、加法群Gと同じpである。元g’は、加法群G’の生成元である。
乗法群Gtの位数は、加法群G及び加法群G’と同じpである。
ペアリングeは、加法群Gの元と加法群G’の元との組を、乗法群Gtの元(ペアリング値)へ写す写像である。ペアリングeは、双線形を有する。また、加法群Gの元gと加法群G’の元g’とのペアリング値e(g,g’)は、乗法群Gtの単位元ではない。
ハッシュ関数Hは、任意の長さのビット列から、1以上p−1以下の整数を生成するハッシュ関数である。
ハッシュ関数H’は、乗法群Gtの元から、所定の長さのビット列を生成するハッシュ関数である。
ハッシュ関数H”は、乗法群Gtの元と、所定の長さのビット列と、二つの加法群Gの元の順序対との組から、1以上p−1以下の整数を生成するハッシュ関数である。
また、これらの暗号パラメータがあらかじめ定められている場合には、暗号パラメータ設定装置810Cは、これらの暗号パラメータを定めなくてもよい。
暗号パラメータ設定装置810Cは、暗号パラメータ記憶部819C、マスター鍵生成部812C、公開パラメータ生成部813C、マスター鍵出力部814C、公開パラメータ出力部815Cを有する。
マスター鍵生成部812Cは、三つの秘密乱数生成部816C〜818Cを有する。
三つの秘密乱数生成部816C〜818Cは、それぞれ、CPU911を用いて、暗号パラメータ記憶部819Cが記憶した暗号パラメータのうち位数pを表わすデータを入力する。三つの秘密乱数生成部816C〜818Cは、それぞれ、CPU911を用いて、入力したデータが表わす位数pに基づいて、1以上p−1以下の整数をランダムに生成する。
第一の秘密乱数生成部816Cは、生成した整数を整数αとし、RAM914を用いて、生成した整数αを表わすデータを記憶する。
第二の秘密乱数生成部817Cは、生成した整数を整数βとし、RAM914を用いて、生成した整数βを表わすデータを記憶する。
第三の秘密乱数生成部818Cは、生成した整数を整数γとし、RAM914を用いて、生成した整数γを表わすデータを記憶する。
公開パラメータ生成部813Cは、第一公開元算出部831C、公開ペアリング値算出部832C、第二公開元算出部833Cを有する。
マスター鍵出力部814Cが出力したマスター鍵は、鍵生成装置300Cに対して秘密裡に通知される。
公開パラメータ出力部815Cが出力した公開パラメータは、IDベース公開鍵暗号システム820Cの利用者に公開される。
鍵生成装置300Cは、暗号パラメータ記憶部390C、マスター鍵記憶部330C、識別入力部340C、秘密鍵生成部350C、秘密鍵出力部360Cを有する。
秘密鍵生成部350Cは、秘密乱数生成部351C、第一秘密元算出部352C、第二秘密元算出部353Cを有する。
秘密鍵出力部360Cが出力した暗号文復号装置200Cの秘密鍵は、暗号文復号装置200Cに対して秘密裡に通知される。
暗号文生成装置400Cは、暗号パラメータ記憶部490C、識別記憶部410C、メッセージ入力部440C、メッセージ暗号化部450C、暗号文出力部470Cを有する。
メッセージ暗号化部450Cは、秘密乱数生成部451C、ペアリング値算出部452C、暗号ビット列算出部453C、第一暗号元算出部454C、第二暗号元算出部455C、暗号整数算出部456Cを有する。
第二暗号元算出部455Cは算出する元c1は、g1=α・g、g3=γ・gであるから、
暗号文出力部470Cが出力した暗号文Cは、暗号文復号装置200Cに対して送信される。
暗号文復号装置200Cは、暗号パラメータ記憶部290C、鍵記憶部210C、暗号文入力部220C、暗号文検証部230C、検証装置100C、復号文生成部260C、復号メッセージ出力部283Cを有する。
暗号文検証部230Cは、ペアリング値算出部231C、整数算出部232Cを有する。
ペアリング値算出部231Cが算出した元kが、暗号文生成装置400Cのペアリング値算出部452Cが算出した元kと等しければ、整数算出部232Cが算出する整数sは、秘密乱数生成部451Cが生成した秘密乱数sと等しい。
検証装置100Cは、検証結果を表わすデータを出力する。
検証装置100Cは、整数分割部110C、二つの検証値算出部130C1,130C2、検証判定部150Cを有する。
検証装置100Cは、実施の形態1で説明した検証装置100と同様の装置であるが、加法群Gにおける演算と、乗法群Gtにおける演算とをするため、二つの検証値算出部130C1,130C2を有する。
整数分割部110Cは、CPU911を用いて、整数算出部232Cが記憶した整数sを表わすデータを、実施の形態1で説明した整数eを表わすデータとして入力する。
整数分割部110Cは、CPU911を用いて、入力したデータが表わす位数pと整数sとに基づいて、e1・s≡e2(mod p)、|e1|<√p、0<e2<√pを満たす整数e1及び整数e2を算出する。
整数分割部110Cは、RAM914を用いて、算出した整数e1及び整数e2を表わすデータを記憶する。
検証値算出部130C1は、CPU911を用いて、暗号パラメータ記憶部290Cが記憶した暗号パラメータのうち元gを表わすデータを、実施の形態1で説明した元sを表わすデータとして入力する。
検証値算出部130C1は、CPU911を用いて、暗号文入力部220Cが記憶した元c0を表わすデータを、実施の形態1で説明した元hを表わすデータとして入力する。
検証値算出部130C1は、CPU911を用いて、整数分割部110Cが記憶した整数e1と整数e2とを表わすデータを入力する。
検証値算出部130C1は、CPU911を用いて、入力したデータが表わす元gと元c0と整数e1と整数e2とに基づいて、加法群Gにおける演算により、元c0をe1回加算した元と、元gをe2回加算した元の逆元とを加算した元を算出して、元aとする。
検証値算出部130C1は、RAM914を用いて、算出した元aを表わすデータを記憶する。
検証値算出部130C2は、CPU911を用いて、ペアリング値算出部231Cが記憶した元kを表わすデータを、実施の形態1で説明した元hを表わすデータとして入力する。
検証値算出部130C2は、CPU911を用いて、整数分割部110Cが記憶した整数e1と整数e2とを表わすデータを入力する。
検証値算出部130C2は、CPU911を用いて、入力したデータが表わす元v0と元kと整数e1と整数e2とに基づいて、乗法群Gtにおける演算により、元kをe1回乗算した元と、元v0をe2回乗算した元の逆元とを加算した元を算出して、元a’とする。
検証値算出部130C2は、RAM914を用いて、算出した元a’を表わすデータを記憶する。
検証判定部150Cは、CPU911を用いて、検証結果を表わすデータを出力する。
検証判定部150Cは、CPU911を用いて、検証値算出部130C1が算出した元aに基づいて、元aが加法群Gの単位元であるか否かを判定する。
元aが加法群Gの単位元である場合(すなわち、c0=s・gである場合)、第二検証工程S735Cへ進む。
元aが加法群Gの単位元でない場合(すなわち、c0≠s・gである場合)、暗号文復号処理を終了する。
検証判定部150Cは、CPU911を用いて、検証値算出部130C2が算出した元a’に基づいて、元a’が乗法群Gtの単位元であるか否かを判定する。
元a’が乗法群Gtの単位元である場合(すなわち、k=v0 sである場合)、復号文生成工程S736Cへ進む。
元a’が乗法群Gtの単位元でない場合(すなわち、k≠v0 sである場合)、暗号文復号処理を終了する。
復号メッセージ出力部283Cは、CPU911を用いて、復号文生成部260Cが算出したビット列M’を、復号したメッセージとして出力する。
その後、暗号文復号処理を終了する。
上記暗号パラメータ記憶部290Cは、上記記憶装置(磁気ディスク装置920)を用いて、加法群G1(加法群G)の位数pと、上記加法群G1(加法群G)の生成元gと、上記位数pを位数とする乗法群Gtの元v0とを記憶する。
上記鍵記憶部210Cは、上記記憶装置を用いて、上記位数pを位数とする加法群G2(加法群G’)の元(秘密元)d0と、上記加法群G2(加法群G’)の元(秘密元)d1とを記憶する。
上記暗号文入力部220Cは、上記処理装置(CPU911)を用いて、ビット列cと、上記加法群G1の元c0と、上記加法群G1の元c1と、1以上p−1以下の整数tとを上記暗号文Cとして入力する。
上記暗号文検証部230Cは、ペアリング値算出部231Cと、整数算出部232Cとを有する。
上記ペアリング値算出部231Cは、上記処理装置(CPU911)を用いて、上記暗号文入力部220が入力した元c0と、上記鍵記憶部210Cが記憶した元(秘密元)d0とに基づいて、所定のペアリング関数eにより上記元c0と上記元(秘密元)d0とのペアリング値を算出して、上記乗法群Gtの元k0(=e(c0,d0))とし、上記暗号文入力部220Cが入力した元c1と、上記鍵記憶部210Cが記憶した元d1とに基づいて、上記ペアリング関数eにより上記元c1と上記元d1とのペアリング値を算出して、上記乗法群GTの元k1(=e(c1,d1))とし、算出した上記元k0と、算出した上記元k1とに基づいて、上記元k0と上記元k1の逆元とを乗算して、上記乗法群Gtの元k(=k0/k1)とする。
上記整数算出部232Cは、上記処理装置(CPU911)を用いて、上記ペアリング値算出部231Cが算出した元kと、上記暗号文入力部220Cが入力したビット列cと元c0と元c1とに基づいて、所定のハッシュ関数H”により上記元kと上記ビット列cと上記元c0と上記元c1とをハッシュしたハッシュ値を算出して、整数(ハッシュ値)H”(k,c,c0,c1)とし、上記暗号文入力部220Cが入力した整数tと、算出した整数H”(k,c,c0,c1)と、上記暗号パラメータ記憶部290Cが記憶した位数pとに基づいて、上記整数tから上記整数H”(k,c,c0,c1)を減算した整数を位数pで割った余りを算出して、整数s(=t−H”(k,c,c0,c1)mod
p)とする。
上記検証装置100Cは、上記加法群G1(加法群G)を上記有限群Gとして、上記位数pとして上記暗号パラメータ記憶部290Cが記憶した位数pと、上記整数eとして上記整数算出部232Cが算出した整数sと、上記元sとして上記暗号パラメータ記憶部290Cが記憶した生成元gと、上記元hとして上記暗号文入力部220Cが入力した元c0とを入力し、検証成功か否かを判定して、第一の検証結果とし、上記乗法群Gtを上記有限群Gとして、上記位数pとして上記暗号パラメータ記憶部290Cが記憶した位数pと、上記整数eとして上記整数算出部232Cが算出した整数sと、上記元sとして上記暗号パラメータ記憶部290Cが記憶した元v0と、上記元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は、
秘密鍵dID=(d0,d1)と、暗号文C=(c,c0,c1,t)とを入力し、
ペアリング値の比k=e(c0,d0)/e(c1,d1)を計算する計算装置(ペアリング値算出部231C)と、
整数s=t−H”(k,c,c0,c1)を計算する計算装置(整数算出部232C)と、
指数部(整数)sを分割する装置(整数分割部110C)と、
分割された指数(整数e1及び整数e2)を用いて、乗法群GTにおける二基底指数べき乗算をして、値ke1・v0 −e2を計算する装置(検証値算出部130C2)と、
その値が乗法群GTの単位元1に等しいかどうか判定する装置(検証判定部150C)とを有する。
暗号文復号装置200C(BB1−IDベース暗号鍵デカプセル化装置)は、
秘密鍵dID=(d0,d1)と、暗号文C=(c,c0,c1,t)とを入力し、
ペアリング値の比k=e(c0,d0)/e(c1,d1)を計算する計算装置(ペアリング値算出部231C)と、
整数s=t−H”(k,c,c0,c1)を計算する計算装置(整数算出部232C)と、
指数部(整数)sを分割する装置(整数分割部110C)と、
分割された指数(整数e1及び整数e2)を用いて、乗法群GTにおける二基底指数べき乗算をして、値ke1・v0 −e2を計算する装置(検証値算出部130C2)と、
その値が乗法群GTの単位元1に等しいかどうか判定する装置(検証判定部150C)とを有する。
秘密鍵dID=(d0,d1)と、暗号文C=(c,c0,c1,t)とを入力し、
ペアリング値の比k=e(c0,d0)/e(c1,d1)を計算する計算装置(ペアリング値算出部231C)と、
整数s=t−H”(k,c,c0,c1)を計算する計算装置(整数算出部232C)と、
指数部(整数)sを分割する装置(整数分割部110C)と、
分割された指数(整数e1及び整数e2)を用いて、乗法群GTにおける二基底指数べき乗算をして、値ke1・v0 −e2を計算する装置(検証値算出部130C2)と、
その値が乗法群GTの単位元1に等しいかどうか判定する装置(検証判定部150C)とを有する。
秘密鍵dID=(d0,d1)と、暗号文C=(c,c0,c1,t)とを入力し、
ペアリング値の比k=e(c0,d0)/e(c1,d1)を計算する計算装置(ペアリング値算出部231C)と、
整数s=t−H”(k,c,c0,c1)を計算する計算装置(整数算出部232C)と、
指数部(整数)sを分割する装置(整数分割部110C)と、
分割された指数(整数e1及び整数e2)を用いて、(超)楕円曲線上の点がなす元などの加法群Gにおける二基底スカラー倍算をして、値(e1・c0−e2・g)を計算する装置(検証値算出部130C1)と、
その値が加法群Gの単位元0に等しいかどうか判定する装置(検証判定部150C)とを有する。
IDベース公開鍵暗号システム820Cでは、位数pが素数である加法群G、加法群G’、乗法群Gt、加法群Gの生成元g、加法群G’の生成元g’、ペアリングeを用いる。
暗号パラメータ設定装置810Cは、設定処理(Setup)をする。暗号パラメータ設定装置810Cは、CPU911を用いて、1以上p−1以下のランダムな整数α、整数β、整数γを生成し、群Gの元g1=α・g、群Gの元g2 =β・g、群Gの元g3
=γ・gを計算する。暗号パラメータ設定装置810Cは、CPU911を用いて、群G’の元g’1=α・g’、群G’の元g’2=β・g’、群G’の元g’3=γ・g’を計算する。暗号パラメータ設定装置810Cは、CPU911を用いて、群G’の元g’0=(α・β)・g’と、乗法群Gtの元であるペアリング値v0=e(g,g’0)(すなわち、v0=e(g,g’)α・β)を計算する。暗号パラメータ設定装置810Cは、PKGの公開鍵として(g,g1,g3,v0)を、PKGの秘密鍵として(g’,α,β,γ)を出力する。
鍵生成装置300Cは、秘密鍵導出処理(Extract)をする。鍵生成装置300Cは、CPU911を用いて、暗号文復号装置200Cを識別するビット列IDを入力し、1以上p−1以下のランダムな整数(秘密乱数)rを生成する。鍵生成装置300Cは、CPU911を用いて、整数e=α・β+(α・H(ID)+γ)・rと、群G’の元d0=e・g’と、群G’の元d1=r・g’とを計算し、(d0,d1)をIDに対する秘密鍵dIDとして出力する。
暗号文生成装置400Cは、暗号化処理(Encrypt)をする。暗号文生成装置400Cは、CPU911を用いて、平文(ビット列)Mと、受信者ID(暗号文復号装置200Cを識別するビット列ID)とを入力する。暗号文生成装置400Cは、CPU911を用いて、1以上p−1以下のランダムな整数(秘密乱数)sを生成する。暗号文生成装置400Cは、CPU911を用いて、Gtの元k=v0 sを計算する。暗号文生成装置400Cは、CPU911を用いて、ハッシュ関数H, H’, H”により、ビット列c=XOR(M,H’(k)),群Gの元c0=s・g,群Gの元c1=s・g3+(H(ID)・s)・g1,整数t=s+H”(k,c,c0,c1)を計算する。暗号文生成装置400Cは、CPU911を用いて、暗号文C=(c,c0,c1,t)を出力する。
暗号文復号装置200Cは、復号処理(Decrypt)をする。暗号文復号装置200Cは、CPU911を用いて、秘密鍵dID=(d0,d1)と、暗号文C=(c,c0,c1,t)とを入力する。暗号文復号装置200Cは、CPU911を用いて、乗法群Gtの元k=e(c0,d0)/e(c1,d1)と、整数s=t−H”(k,c,c0,c1)とを計算し、k=v0 sとc0=s・gとが成り立つかどうかをチェックする。成立しなければ、暗号文復号装置200Cは、CPU911を用いて、「拒絶」を出力する。成立すれば、暗号文復号装置200Cは、CPU911を用いて、ビット列M=XOR(c,H’(k))を算出し、出力する。
v1=1が成立した場合、検証値算出部130C1は、CPU911を用いて、加法群Gにおける二基底スカラー倍算により、W=e1・c0−e2・gを計算する。検証判定部150Cは、CPU911を用いて、W=0かどうかをチェックすることにより、c0=s・gが成立するかを高速にチェックする。
実施の形態5について、図28〜図33を用いて説明する。
IDベース署名システム820Dは、署名装置400Dを識別する識別データを、署名装置400Dの公開鍵として利用する電子署名システムである。
位数pは、素数である。
加法群Gの位数は、位数pである。元gは、加法群Gの生成元である。
ハッシュ関数Hは、加法群Gの元と、任意の長さのビット列との組から、1以上p−1以下の整数を生成するハッシュ関数である。
ハッシュ関数H’は、任意の長さの二つのビット列の順序対と、加法群Gの三つの元の順序対との組から、1以上p−1以下の整数を生成するハッシュ関数である。
暗号パラメータ設定装置810Dは、暗号パラメータ記憶部819D、秘密乱数生成部812D、公開元算出部813D、マスター鍵出力部814D、公開パラメータ出力部815Dを有する。
マスター鍵出力部814Dが出力したマスター鍵は、鍵生成装置300Dに対して秘密裡に通知される。
公開パラメータ出力部815Dが出力した公開パラメータは、暗号パラメータとともに、IDベース署名システム820Dの利用者に公開される。
鍵生成装置300Dは、暗号パラメータ記憶部390D、マスター鍵記憶部330D、識別入力部340D、署名鍵生成部350D、署名鍵出力部360Dを有する。
署名鍵生成部350Dは、秘密乱数生成部351D、鍵元算出部352D、鍵整数算出部353Dを有する。
署名鍵出力部360Dが出力した署名鍵は、署名装置400Dに対して秘密裡に通知される。
署名装置400Dは、暗号パラメータ記憶部490D、識別記憶部410D、署名鍵記憶部420D、メッセージ入力部440D、署名生成部450D、署名出力部470Dを有する。
識別記憶部410Dは、磁気ディスク装置920を用いて、署名装置400D自身を識別するビット列IDを記憶している。
署名鍵記憶部420Dは、耐タンパ性のある記憶装置を用いて、鍵生成装置300Dが生成した署名鍵を表わすデータを記憶している。
署名生成部450Dは、第一署名元算出部451D、秘密乱数生成部452D、第二署名元算出部453D、チャレンジ算出部454D、署名整数算出部455Dを有する。
なお、元Sはビット列Mにかかわらず一定なので、第一署名元算出部451Dは、メッセージ入力部440Dがビット列Mを入力する前に、あらかじめ元Sを算出し、磁気ディスク装置920を用いて記憶しておいてもよい。
署名検証装置200Dは、暗号パラメータ記憶部290D、識別記憶部210D、メッセージ入力部225D、署名入力部220D、署名検証部230D、検証装置100D、検証結果出力部260Dを有する。
識別記憶部210Dは、磁気ディスク装置920を用いて、署名装置400Dを識別するビット列IDを記憶している。
署名入力部220Dは、CPU911を用いて、メッセージ入力部225Dが入力したビット列Mに付された署名σを入力する。署名入力部220Dは、CPU911を用いて、入力した署名σから、元Rと元Sと元Yと整数zとを表わすデータを取得する。署名入力部220Dは、RAM914を用いて、取得した元Rと元Sと元Yと整数zとを表わすデータを記憶する。
ビット列Mが改変されていなければ、チャレンジ算出部231Dが算出するハッシュ値cは、署名装置400Dのチャレンジ算出部454Dが算出したハッシュ値cと等しい。
第一検証部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を用いて、検証結果を表わすデータを記憶する。
検証装置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を用いて、検証結果を表わすデータを出力する。
z・g=Y+c・Sである場合、整数算出工程S733Dへ進む。
z・g≠Y+c・Sである場合、失敗判定工程S737Dへ進む。
R’=h・Xである場合、成功判定工程S736Dへ進む。
R’≠h・Xである場合、失敗判定工程S737Dへ進む。
その後、署名検証処理を終了する。
その後、署名検証処理を終了する。
上記メッセージ入力部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が署名を検証する処理全体にかかる時間を短縮することができるという効果を奏する。
上記暗号パラメータ記憶部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は、
指数部(整数e)を分割する装置(整数分割部110)と、
分割された指数(整数e1及び整数e2)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値he1・e−e2またはe1・h−e2・sを計算する装置(検証値算出部130)と、
その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
指数(整数)eと、暗号で使用する乗法群または加法群の群位数pとを入力して、位数pのビット長の半分のビット長を有する二つの整数e1,e2(ただし、e1・e≡e2(mod p)。)を計算する計算装置(整数分割部110)と、
se2・h−e1=1またはe2・s−e1・h=0を検証する検証装置(検証値算出部130、検証判定部150)とを有する。
除算をする整数v2及び除算される整数v1が、それぞれ、前ステップの除算の剰余v3、及び前ステップの除算をする整数v2である計算装置(第三剰余算出部117)と、
各ステップの除算結果の剰余v3がある一定の数(√p)以上、又はある一定の数(√p)以下であることを判定する計算装置(適合性判定部116)とを有する。
署名検証装置200Dは、
秘密鍵生成センタ(鍵生成装置300D)の公開鍵である乗法群または加法群の元Xと、署名者(署名装置400D)の秘密鍵(署名鍵)の一部である元Rと、署名σの一部である元Sと、署名者を識別するビット列IDとに基づいて、元R・XH(R,ID)またはR+H(R,ID)・Xが元Sと一致するかどうか検証するため、
指数部(ハッシュ値h=H(R,ID))を分割する装置(整数分割部110)と、
分割された指数(整数e1及び整数e2)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値(S/R)e1・X−e2またはe1・(S−R)−e2・Xを計算する装置(検証値算出部130)と、
その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
IDベース認証システム820Eでは、位数pが素数である乗法群Gと、乗法群Gの生成元gとを用いる。
鍵生成装置300Dは、ユーザ秘密鍵導出処理をする。鍵生成装置300Dは、CPU911を用いて、PKG秘密鍵xと、証明装置400Eを識別するビット列IDとを入力する。まず、鍵生成装置300Dは、CPU911を用いて、1以上p−1以下のランダムな整数(秘密乱数)rを生成する。鍵生成装置300Dは、CPU911を用いて、群Gの元R=grと、整数s=r+H(R,ID)・xとを計算し、(R,s)をユーザ秘密鍵として出力する。
署名装置400Dは、署名生成処理をする。署名装置400Dは、CPU911を用いて、メッセージMと秘密鍵(R,s)とを入力する。まず、署名装置400Dは、CPU911を用いて、1以上p−1以下のランダムな整数(秘密乱数)yを生成する。署名装置400Dは、CPU911を用いて、群Gの元S=gsと、群Gの元Y=gyとを計算し、整数c=H1(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は、gz=Y・ScとS=R・XH(R,ID)とが成立するか、元S,元YがGの元であるか、整数zが1以上p−1以下であるかを検証する。すべて成立すれば、署名検証装置200Dは、CPU911を用いて、署名検証合格と判定し、そうでなければ、署名検証不合格と判定する。
実施の形態6について、図34〜図37を用いて説明する。
IDベース認証システム820Eは、証明装置400Eが偽物ではないことを、認証装置200Eが認証するシステムである。このとき、認証装置200Eは、証明装置400Eを識別する識別データを証明装置400Eの公開鍵として利用する。
認証装置200Eは、認証要求メッセージを受信すると、証明装置400Eに対して、質問メッセージを送信する。認証装置200Eが送信する質問メッセージには、1以上p−1以下の整数cが含まれる。
証明装置400Eは、質問メッセージを受信すると、認証装置200Eに対して回答メッセージを送信する。証明装置400Eが送信する回答メッセージには、整数cに基づいて算出した1以上p−1以下の整数zが含まれる。
認証装置200Eは、受信した認証要求メッセージに含まれる元R、元S、元Yと、受信した回答メッセージに含まれる整数zとを検証して、整合性があれば、証明装置400Eが偽物ではないことを認証する。
なお、実施の形態5で説明した署名装置400Dと共通する部分については、同一の符号を付し、ここでは説明を省略する。
なお、実施の形態5で説明した署名検証装置200Dと共通する部分については、同一の符号を付し、ここでは説明を省略する。
第一検証部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を用いて、検証結果を表わすデータを記憶する。
なお、実施の形態5で説明した署名検証処理と共通する部分については、同一の符号を付し、ここでは説明を省略する。
署名元算出工程S742Eにおいて、第二署名元算出部453Dは、CPU911を用いて、秘密乱数生成部452Dが生成した秘密乱数yに基づいて、加法群Gの元Y(=y・g)を算出する。
認証要求送信工程S743Eにおいて、証明装置400Eの認証要求送信部470Eは、通信装置915を用いて、署名鍵記憶部420Dが記憶した元Rと、第一署名元算出部451Dが算出した元S(=s・g)と、秘密乱数生成工程S741Eで第二署名元算出部453Dが算出した元Yとを含む認証要求メッセージを、認証装置200Eに対して送信する。
チャレンジ生成工程S752Eにおいて、認証装置200Eのチャレンジ生成部231Eは、CPU911を用いて、1以上p−1以下の整数cをランダムに生成する。
質問送信工程S753Eにおいて、認証装置200Eの質問送信部226Eは、通信装置915を用いて、チャレンジ生成工程S752Eでチャレンジ生成部231Eが生成した整数cを含む質問メッセージを、証明装置400Eに対して送信する。
署名整数算出工程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に対して送信する。
その後、認証処理を終了する。
上記認証要求受信部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が検証した結果に基づいて、認証成功であるか否か表わす認証結果を出力する。
上記暗号パラメータ記憶部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は、
指数部(整数e)を分割する装置(整数分割部110)と、
分割された指数(整数e1及び整数e2)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値he1・e−e2またはe1・h−e2・sを計算する装置(検証値算出部130)と、
その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
指数(整数)eと、暗号で使用する乗法群または加法群の群位数pとを入力して、位数pのビット長の半分のビット長を有する二つの整数e1,e2(ただし、e1・e = e2(mod p)。)を計算する計算装置(整数分割部110)と、
se2・h−e1=1またはe2・s−e1・h=0を検証する検証装置(検証値算出部130、検証判定部150)とを有する。
除算をする整数v2、及び除算される整数v1が、それぞれ、前ステップの除算の剰余v3、及び前ステップの除算をする整数v2である計算装置(第三剰余算出部117)と、
各ステップの除算結果の剰余v3がある一定の数(√p)以上、又はある一定の数(√p)以下であることを判定する計算装置(適合性判定部116)とを有する。
認証装置200Eは、
秘密鍵生成センタ(鍵生成装置300D)の公開鍵である乗法群または加法群の元Xと、被認証者(証明装置400E)の秘密鍵(署名鍵)の一部である元Rと、被認証者のコミット値(元)Sと、被認証者を識別するビット列IDとに基づいて、元R・X{H(R,ID)またはR+H(R,ID)・Xが元Sと一致するかどうか検証するため、
指数部(ハッシュ値h=H(R,ID))を分割する装置(整数分割部110)と、
分割された指数(整数e1及び整数e2)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値(S/R)e1・X−e2またはe1・(S−R)−e2・Xを計算する装置(検証値算出部130)と、
その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
IDベース認証システム820Eは、証明者(証明装置400E)と認証者(認証装置200E)とを有する。最初に、証明者(証明装置400E)が、検証者(認証装置200E)にコミットメントCmt(認証要求メッセージ)を送付する。検証者(認証装置200E)は、コミットメントCmtを受け取り、コミットメントCmtと公開情報(暗号パラメータ、公開パラメータ)からチャレンジデータCh(質問メッセージ)を計算し、証明者(証明装置400E)に送付する。証明者(証明装置400E)は、チャレンジデータChを受け取り、回答データRspを計算して、検証者(認証装置200E)に送付する。検証者(認証装置200E)は、回答データRspを受け取り、それが正しいデータかどうかを検証する。検証者(認証装置200E)は、回答データが正しければ認証合格、そうでなければ認証不合格と判定する。
暗号パラメータ設定装置810Dは、PKG用鍵生成処理をする。暗号パラメータ設定装置810Dは、CPU911を用いて、1以上p−1以下のランダムな整数xを生成する。暗号パラメータ設定装置810Dは、CPU911を用いて、乗法群Gの元X=gxを計算する。暗号パラメータ設定装置810Dは、CPU911を用いて、群Gの元XをPKG公開鍵、整数xをPKG秘密鍵として出力する。
鍵生成装置300Dは、ユーザ秘密鍵導出処理をする。鍵生成装置300Dは、CPU911を用いて、PKG秘密鍵xと、証明装置400Eを識別するビット列IDとを入力する。まず、鍵生成装置300Dは、CPU911を用いて、1以上p−1以下のランダムな整数(秘密乱数)rを生成する。鍵生成装置300Dは、CPU911を用いて、群Gの元R=grと、整数s=r+H(R,ID)・xとを計算し、(R,s)をユーザ秘密鍵として出力する。
証明装置400Eは、Cmt計算処理において、CPU911を用いて、まず、1以上p−1以下のランダムな整数(秘密乱数)yを生成する。証明装置400Eは、CPU911を用いて、群Gの元S=gsと、群Gの元Y=gyとを計算し、元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を受け取り、gz=Y・ScとS=R・XH(R,ID)が成立するかどうか、元S及び元Yとが群Gの元であるかどうか、整数zが1以上p−1以下であるかどうかを検証する。すべて成立すれば、認証装置200Eは、CPU911を用いて、認証合格と判定し、そうでなければ、認証不合格と判定する。
また、説明の都合上、主に、群演算を加法的に記述する場合について説明したが、群演算が加法で記述されているか、乗法で記述されているかは、本質的ではない。
暗号システムが利用する有限群において、群演算がコンピュータなどの処理装置を用いて計算可能であり、1回の群演算に多くの時間がかかる場合であれば、この技術による格段の高速化が可能である。
鍵記憶部、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 (18)
- データを処理する処理装置と、整数分割部と、検証値算出部と、検証判定部とを有し、
上記整数分割部は、上記処理装置を用いて、有限群Gの位数pと、整数eとを入力し、入力した位数pと整数eとに基づいて、e1・e≡e2(mod p)を満たす整数e1と整数e2とを算出し、
上記検証値算出部は、上記処理装置を用いて、上記有限群Gの元sと、上記有限群Gの元hとを入力し、入力した元sと元hと、上記整数分割部が算出した整数e1と整数e2とに基づいて、上記有限群Gの元a(=e1・h−e2・s)を算出し、
上記検証判定部は、上記処理装置を用いて、上記検証値算出部が算出した元aに基づいて、上記元aが上記有限群Gの単位元である場合に、検証成功と判定することを特徴とする検証装置。 - 上記整数分割部は、上記処理装置を用いて、上記整数e1の絶対値が上記位数pの平方根よりも小さく、かつ、上記整数e2が上記位数pの平方根よりも小さいという条件を満たす整数e1と整数e2とを算出することを特徴とする請求項1に記載の検証装置。
- 上記検証装置は、更に、データを記憶する記憶装置を有し、
上記整数分割部は、第一剰余記憶部と、第二剰余記憶部と、初期値設定部と、適合性判定部と、第三剰余算出部と、分割整数出力部とを有し、
上記第一剰余記憶部は、上記記憶装置を用いて、整数v1を記憶し、
上記第二剰余記憶部は、上記記憶装置を用いて、整数v2を記憶し、
上記初期値設定部は、上記処理装置を用いて、上記位数pを上記整数v1として上記第一剰余記憶部に記憶させ、上記整数eを上記整数v2として上記第二剰余記憶部に記憶させ、
上記適合性判定部は、上記処理装置を用いて、上記第二剰余記憶部が記憶した整数v2が上記位数pの平方根よりも小さい場合に、出力条件を満たしたと判定し、
上記第三剰余算出部は、上記処理装置を用いて、上記適合性判定部が出力条件を満たしたと判定しない場合に、上記第一剰余記憶部が記憶した整数v1と、上記第二剰余記憶部が記憶した整数v2とに基づいて、上記整数v1を上記整数v2で割った余りを算出して、整数v3とし、上記第二剰余記憶部が記憶した整数v2を上記整数v1として上記第一剰余記憶部に記憶させ、算出した整数v3を上記整数v2として上記第二剰余記憶部に記憶させ、
上記分割整数出力部は、上記処理装置を用いて、上記適合性判定部が出力条件を満たしたと判定した場合に、上記第二剰余記憶部が記憶した整数v2を上記整数e2として出力することを特徴とする請求項2に記載の検証装置。 - 上記整数分割部は、更に、第一係数記憶部と、第二係数記憶部と、商算出部と、第三係数算出部とを有し、
上記第一係数記憶部は、上記記憶装置を用いて、整数t1を記憶し、
上記第二係数記憶部は、上記記憶装置を用いて、整数t2を記憶し、
上記初期値設定部は、更に、上記処理装置を用いて、上記整数t1として0を上記第一係数記憶部に記憶させ、上記整数t2として1を上記第二係数記憶部に記憶させ、
上記商算出部は、上記処理装置を用いて、上記第一剰余記憶部が記憶した整数v1と、上記第二剰余記憶部が記憶した整数v2とに基づいて、上記整数v1を上記整数v2で割った商を超えない最大の整数を算出して、整数qとし、
上記第三係数算出部は、上記処理装置を用いて、上記適合性判定部が出力条件を満たしたと判定しない場合に、上記第一係数記憶部が記憶した整数t1と、上記第二係数記憶部が記憶した整数t2と、上記商算出部が算出した整数qとに基づいて、上記整数t2と上記整数qとの積を、上記整数t1から減算した整数を算出して、整数t3とし、上記第二係数記憶部が記憶した整数t2を上記整数t1として上記第一係数記憶部に記憶させ、算出した整数t3を上記整数t2として上記第二係数記憶部に記憶させ、
上記分割整数出力部は、更に、上記処理装置を用いて、上記適合性判定部が出力条件を満たしたと判定した場合に、上記第二係数記憶部が記憶した整数t2を上記整数e1として出力することを特徴とする請求項3に記載の検証装置。 - 上記検証値算出部は、上記処理装置を用いて、Σ(ni・Pi)(ただし、nは2以上の所定の整数。iは0以上k以下の整数。kは上記整数e1の絶対値及び上記整数e2をn進法で表記した場合の桁数の最大値。Piは、上記有限群Gの元で、Pi=e1,sgn・e1,i・h−e2,i・s。e1,sgnは1または−1。e1,i及びe2,iは0以上n−1以下の整数で、e1=e1,sgn・Σ(ni・e1,i)、e2=Σ(ni・e2,i)。)を算出して、上記有限群Gの元aとすることを特徴とする請求項1に記載の検証装置。
- データを記憶する記憶装置と、データを処理する処理装置と、鍵記憶部と、暗号文入力部と、暗号文検証部と、請求項1に記載の検証装置と、復号文生成部とを有し、
上記鍵記憶部は、上記記憶装置を用いて、暗号文を復号する鍵を記憶し、
上記暗号文入力部は、上記処理装置を用いて、暗号文を入力し、
上記暗号文検証部は、上記処理装置を用いて、上記鍵記憶部が記憶した鍵と、上記暗号文入力部が入力した暗号文とに基づいて、上記検証装置に入力する整数eと、上記有限群Gの元sと、上記有限群Gの元hとを算出し、
上記検証装置は、上記暗号文検証部が算出した整数eと、上記有限群Gの元sと、上記有限群Gの元hとを入力して、検証成功か否かを判定し、
上記復号文生成部は、上記処理装置を用いて、上記検証装置が検証成功と判定した場合に、上記暗号文入力部が入力した暗号文を上記鍵記憶部が記憶した鍵により復号して、復号文を生成することを特徴とする暗号文復号装置。 - 上記暗号文復号装置は、更に、暗号パラメータ記憶部と、識別記憶部と、識別元算出部と、識別元記憶部とを有し、
上記暗号パラメータ記憶部は、上記記憶装置を用いて、上記有限群Gの位数pと、上記有限群Gの生成元g1と、上記有限群Gの元Rとを記憶し、
上記識別記憶部は、上記記憶装置を用いて、上記暗号文復号装置を識別するビット列IDを記憶し、
上記識別元算出部は、上記処理装置を用いて、上記識別記憶部が記憶したビット列IDに基づいて、所定のハッシュ関数H1により上記ビット列IDをハッシュしたハッシュ値を算出して、整数H1(ID)とし、上記暗号パラメータ記憶部が記憶した生成元g1と、上記暗号パラメータ記憶部が記憶した元Rと、算出した整数H1(ID)とに基づいて、上記生成元g1を整数H1(ID)倍した元と、上記元Rとを加算して、上記有限群Gの元Q(=R+H1(ID)・g1)とし、
上記識別元記憶部は、上記記憶装置を用いて、上記識別元算出部が算出した元Qを記憶し、
上記鍵記憶部は、上記記憶装置を用いて、有限群G2の元DIDを記憶し、
上記暗号文入力部は、上記処理装置を用いて、上記有限群Gの元Uと、ビット列Vとを上記暗号文として入力し、
上記暗号文検証部は、ペアリング値算出部と、ビット列算出部と、整数算出部とを有し、
上記ペアリング値算出部は、上記処理装置を用いて、上記暗号文入力部が入力した元Uと、上記鍵記憶部が記憶した元DIDとに基づいて、所定のペアリング関数eにより上記元Uと上記元DIDとのペアリング値を算出して、ペアリング値α(=e(U,DID))とし、
上記ビット列算出部は、上記処理装置を用いて、上記ペアリング値算出部が算出したペアリング値αに基づいて、所定のハッシュ関数H2により上記ペアリング値αをハッシュしたハッシュ値を算出して、ビット列H2(α)とし、上記暗号文入力部が入力したビット列Vと、算出したビット列H2(α)とに基づいて、上記ビット列Vと上記ビット列H2(α)との排他的論理和を取って、ビット列m(=V XOR H2(α))とし、
上記整数算出部は、上記処理装置を用いて、上記ビット列算出部が算出したビット列mに基づいて、所定のハッシュ関数H3により上記ビット列mをハッシュしたハッシュ値を算出して、整数r(=H3(m))とし、
上記検証装置は、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数rと、上記元sとして上記識別元記憶部が記憶した元Qと、上記元hとして上記暗号文入力部が入力した元Uとを入力して、検証成功か否かを判定し、
上記復号文生成部は、上記処理装置を用いて、上記検証装置が検証成功と判定した場合に、上記ビット列算出部が算出したビット列mに基づいて、所定のハッシュ関数H4により上記ビット列mをハッシュしたハッシュ値を算出して、共通鍵K(=H4(m))とし、算出した共通鍵Kを上記復号文として出力することを特徴とする請求項6に記載の暗号文復号装置。 - 上記識別元算出部は、上記暗号文入力部が上記暗号文を入力するよりも前に、上記元Qを算出することを特徴とする請求項7に記載の暗号文復号装置。
- 上記暗号文復号装置は、更に、共通鍵記憶部と、暗号化メッセージ入力部と、メッセージ復号部とを有し、
上記共通鍵記憶部は、上記記憶装置を用いて、上記復号文生成部が出力した共通鍵Kを記憶し、
上記暗号化メッセージ入力部は、上記処理装置を用いて、暗号化メッセージを入力し、
上記メッセージ復号部は、上記処理装置を用いて、上記共通鍵記憶部が記憶した共通鍵Kにより上記暗号化メッセージ入力部が入力した暗号化メッセージを復号することを特徴とする請求項7に記載の暗号文復号装置。 - 上記暗号文復号装置は、更に、暗号パラメータ記憶部を有し、
上記暗号パラメータ記憶部は、上記記憶装置を用いて、上記有限群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に記載の暗号文復号装置。 - 上記暗号文復号装置は、更に、共通鍵記憶部と、暗号化メッセージ入力部と、メッセージ復号部とを有し、
上記共通鍵記憶部は、上記記憶装置を用いて、上記復号文生成部が出力した共通鍵Kを記憶し、
上記暗号化メッセージ入力部は、上記処理装置を用いて、暗号化メッセージを入力し、
上記メッセージ復号部は、上記処理装置を用いて、上記共通鍵記憶部が記憶した共通鍵Kにより上記暗号化メッセージ入力部が入力した暗号化メッセージを復号することを特徴とする請求項10に記載の暗号文復号装置。 - 上記暗号文復号装置は、更に、暗号パラメータ記憶部を有し、
上記暗号パラメータ記憶部は、上記記憶装置を用いて、加法群G1の位数pと、上記加法群G1の生成元gと、上記位数pを位数とする乗法群GTの元v0とを記憶し、
上記鍵記憶部は、上記記憶装置を用いて、上記位数pを位数とする加法群G2の元d0と、上記加法群G2の元d1とを記憶し、
上記暗号文入力部は、上記処理装置を用いて、ビット列cと、上記加法群G1の元c0と、上記加法群G1の元c1と、1以上p−1以下の整数tとを上記暗号文として入力し、
上記暗号文検証部は、ペアリング値算出部と、整数算出部とを有し、
上記ペアリング値算出部は、上記処理装置を用いて、上記暗号文入力部が入力した元c0と、上記秘密鍵記憶部が記憶した元d0とに基づいて、所定のペアリング関数eにより上記元c0と上記元d0とのペアリング値を算出して、上記乗法群GTの元k0(=e(c0,d0))とし、上記暗号文入力部が入力した元c1と、上記秘密鍵記憶部が記憶した元d1とに基づいて、上記ペアリング関数eにより上記元c1と上記元d1とのペアリング値を算出して、上記乗法群GTの元k1(=e(c1,d1))とし、算出した上記元k0と、算出した上記元k1とに基づいて、上記元k0を上記元k1で除算して、上記乗法群GTの元k(=k0/k1)とし、
上記整数算出部は、上記処理装置を用いて、上記ペアリング値算出部が算出した元kと、上記暗号文入力部が入力したビット列cと元c0と元c1とに基づいて、所定のハッシュ関数H”により上記元kと上記ビット列cと上記元c0と上記元c1とをハッシュしたハッシュ値を算出して、整数H”(k,c,c0,c1)とし、上記暗号文入力部が入力した整数tと、算出した整数H”(k,c,c0,c1)と、上記暗号パラメータ記憶部が機記憶した位数pとに基づいて、上記整数tから上記整数H”(k,c,c0,c1)を減算した整数を位数pで割った余りを算出して、整数s(=t−H”(k,c,c0,c1)mod p)とし、
上記検証装置は、上記加法群G1を上記有限群Gとして、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数sと、上記元sとして上記暗号パラメータ記憶部が記憶した生成元gと、上記元hとして上記暗号文入力部が入力した元c0とを入力し、検証成功か否かを判定して、第一の検証結果とし、上記乗法群GTを上記有限群Gとして、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数sと、上記元sとして上記暗号パラメータ記憶部が記憶した元v0と、上記元hとして上記ペアリング値算出部が算出した元kとを入力し、検証成功か否かを判定して、第二の検証結果とし、
上記復号文生成部は、上記処理装置を用いて、上記検証装置が上記第一の検証結果及び上記第二の検証結果おいてともに検証成功と判定した場合に、上記ペアリング値算出部が算出した元kとに基づいて、所定のハッシュ関数H’により上記元kをハッシュしたハッシュ値を算出して、ビット列H’(k)とし、上記暗号文入力部が入力したビット列cと、算出したビット列H’(k)とに基づいて、上記ビット列cと上記ビット列H’(k)との排他的論理和を取って、ビット列M’(=c XOR H’(k))とし、算出したビット列M’を上記復号文として出力することを特徴とする請求項6に記載の暗号文復号装置。 - データを処理する処理装置と、メッセージ入力部と、署名入力部と、署名検証部と、請求項1に記載の検証装置と、検証結果出力部とを有し、
上記メッセージ入力部は、上記処理装置を用いて、メッセージを入力し、
上記署名入力部は、上記処理装置を用いて、上記メッセージ入力部が入力したメッセージに対する署名を入力し、
上記署名検証部は、上記処理装置を用いて、上記メッセージ入力部が入力したメッセージと、上記署名入力部が入力した署名とに基づいて、上記検証装置に入力する整数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’とを入力し、検証成功か否かを判定して、第二の検証結果とし、
上記検証結果出力部は、上記処理装置を用いて、上記第一検証部が検証した第一の検証結果と、上記検証装置が検証した第二の検証結果とに基づいて、上記第一の検証結果及び上記第二の検証結果においてともに検証成功と判定した場合に、検証成功であることを表わす検証結果を出力することを特徴とする請求項13に記載の署名検証装置。 - データを処理する処理装置と、データを送信する送信装置と、データを受信する受信装置と、認証要求受信部と、質問送信部と、回答受信部と、署名検証部と、請求項1に記載の検証装置と、認証結果出力部とを有し、
上記認証要求受信部は、上記受信装置を用いて、認証要求メッセージを受信し、
上記質問送信部は、上記送信装置を用いて、上記認証要求受信部が受信した認証要求メッセージに対する応答として、質問メッセージを送信し、
上記回答受信部は、上記受信装置を用いて、送信した質問メッセージに対する回答メッセージを受信し、
上記署名検証部は、上記処理装置を用いて、上記認証要求受信部が受信した認証要求メッセージと、上記回答受信部が受信した回答メッセージとに基づいて、上記検証装置に入力する整数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’とを入力し、検証成功か否かを判定して、第二の検証結果とし、
上記認証結果出力部は、上記処理装置を用いて、上記第一検証部が検証した第一の検証結果と、上記検証装置が検証した第二の検証結果とに基づいて、上記第一の検証結果及び上記第二の検証結果においてともに検証成功と判定した場合に、認証成功であることを表わす認証結果を出力することを特徴とする請求項15に記載の認証装置。 - 請求項1に記載の検証装置を有することを特徴とする暗号システム。
- データを処理する処理装置を有するコンピュータを、請求項1に記載の検証装置として機能させることを特徴とするコンピュータプログラム。
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 JPWO2009104260A1 (ja) | 2011-06-16 |
JP5079024B2 true 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)
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 |
DE112013000357B4 (de) * | 2012-01-19 | 2018-02-15 | Globalfoundries Inc. | System zum Authentifizieren einer Annahme einer Zeichenfolge durch einen Automaten |
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 |
US10263980B2 (en) * | 2014-03-06 | 2019-04-16 | 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 |
US10404454B1 (en) | 2018-04-25 | 2019-09-03 | Blockchain Asics Llc | Cryptographic ASIC for derivative key hierarchy |
CN112005288B (zh) * | 2018-04-26 | 2023-08-04 | 日本电信电话株式会社 | 秘密聚合中值***、秘密计算装置、秘密聚合中值方法、以及记录介质 |
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 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002215023A (ja) * | 2001-01-18 | 2002-07-31 | Mitsubishi Electric Corp | 超楕円曲線暗号生成方法及び超楕円曲線暗号生成装置 |
JP2003216027A (ja) * | 2002-01-28 | 2003-07-30 | Nec Corp | 確率公開鍵暗号文の冪乗剰余積の各指数係数が区間内にあることの証明システム及び方法並びにプログラム |
Family Cites Families (22)
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 |
CA2253009C (en) * | 1997-11-04 | 2002-06-25 | Nippon Telegraph And Telephone Corporation | Method and apparatus for modular inversion for information security and recording medium with a program for implementing the method |
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 |
US7308469B2 (en) * | 2001-06-15 | 2007-12-11 | Robert Joseph Harley | Method for generating secure elliptic curves using an arithmetic-geometric mean iteration |
MXPA04002721A (es) * | 2001-09-27 | 2004-07-05 | Matsushita Electric Ind Co Ltd | Un dispositivo de cifrado, un dispositivo de descifrado, un dispositivo de generacion de claves secretas, un sistema de proteccion de derechos de autor y un dispositivo de comunicacion cifrada. |
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 |
US7792286B2 (en) * | 2005-04-18 | 2010-09-07 | Panasonic Corporation | Signature generation device and signature verification device |
JP4688886B2 (ja) * | 2006-01-11 | 2011-05-25 | 三菱電機株式会社 | 楕円曲線暗号パラメータ生成装置及び楕円曲線暗号システム及び楕円曲線暗号パラメータ生成プログラム |
WO2008087734A1 (ja) * | 2007-01-19 | 2008-07-24 | Mitsubishi Electric Corporation | 暗号文生成装置及び暗号通信システム及び群パラメータ生成装置 |
-
2008
- 2008-02-20 US US12/809,440 patent/US8458479B2/en active Active
- 2008-02-20 EP EP08720765.0A patent/EP2244243B1/en not_active Not-in-force
- 2008-02-20 JP JP2009554166A patent/JP5079024B2/ja active Active
- 2008-02-20 WO PCT/JP2008/052884 patent/WO2009104260A1/ja active Application Filing
- 2008-02-20 CN CN2008801253575A patent/CN101925942B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002215023A (ja) * | 2001-01-18 | 2002-07-31 | Mitsubishi Electric Corp | 超楕円曲線暗号生成方法及び超楕円曲線暗号生成装置 |
JP2003216027A (ja) * | 2002-01-28 | 2003-07-30 | Nec Corp | 確率公開鍵暗号文の冪乗剰余積の各指数係数が区間内にあることの証明システム及び方法並びにプログラム |
Also Published As
Publication number | Publication date |
---|---|
JPWO2009104260A1 (ja) | 2011-06-16 |
CN101925942B (zh) | 2013-11-27 |
EP2244243B1 (en) | 2017-12-13 |
US8458479B2 (en) | 2013-06-04 |
EP2244243A4 (en) | 2013-11-13 |
WO2009104260A1 (ja) | 2009-08-27 |
EP2244243A1 (en) | 2010-10-27 |
CN101925942A (zh) | 2010-12-22 |
US20100275028A1 (en) | 2010-10-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5079024B2 (ja) | 検証装置及び暗号文復号装置及び署名検証装置及び認証装置及び暗号システム及びコンピュータプログラム | |
CN111106936B (zh) | 一种基于sm9的属性加密方法与*** | |
CN104270249B (zh) | 一种从无证书环境到基于身份环境的签密方法 | |
US7594261B2 (en) | Cryptographic applications of the Cartier pairing | |
JP3872107B2 (ja) | 暗号キー回復システム | |
CN110830236B (zh) | 基于全域哈希的身份基加密方法 | |
CN104301108B (zh) | 一种从基于身份环境到无证书环境的签密方法 | |
CN110113150B (zh) | 基于无证书环境的可否认认证的加密方法和*** | |
US20150288527A1 (en) | Verifiable Implicit Certificates | |
CN110896351B (zh) | 基于全域哈希的身份基数字签名方法 | |
CN108337092B (zh) | 用于在通信网络中执行集体认证的方法和*** | |
US20150006900A1 (en) | Signature protocol | |
CN114448641A (zh) | 一种隐私加密方法、电子设备、存储介质以及芯片 | |
CN115442057A (zh) | 一种具有强不可链接性的可随机化盲签名方法及*** | |
CN106453253B (zh) | 一种高效的基于身份的匿签密方法 | |
CN111669275B (zh) | 一种无线网络环境下可选择从节点的主从协作签名方法 | |
CN116346336B (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) | 디지털 서명 셰어의 생성 | |
Dugardin et al. | A New Fair Identity Based Encryption Scheme | |
Lee | Cryptanalysis of Zhu et al.’s Identity-Based Encryption with Equality Test without Random Oracles | |
Ricci et al. | Privacy-enhancing group signcryption 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 |