JPWO2008087734A1 - 暗号文生成装置及び暗号通信システム及び群パラメータ生成装置 - Google Patents

暗号文生成装置及び暗号通信システム及び群パラメータ生成装置 Download PDF

Info

Publication number
JPWO2008087734A1
JPWO2008087734A1 JP2008553935A JP2008553935A JPWO2008087734A1 JP WO2008087734 A1 JPWO2008087734 A1 JP WO2008087734A1 JP 2008553935 A JP2008553935 A JP 2008553935A JP 2008553935 A JP2008553935 A JP 2008553935A JP WO2008087734 A1 JPWO2008087734 A1 JP WO2008087734A1
Authority
JP
Japan
Prior art keywords
ciphertext
unit
processing device
group
integer
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
JP2008553935A
Other languages
English (en)
Other versions
JP4859933B2 (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 JPWO2008087734A1 publication Critical patent/JPWO2008087734A1/ja
Application granted granted Critical
Publication of JP4859933B2 publication Critical patent/JP4859933B2/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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Computer And Data Communications (AREA)

Abstract

乱数生成部222は、整数sをランダムに生成する。第一暗号文生成部241は、整数sに基づいて平文Mを暗号化して第一暗号文C1を生成する。第二暗号文生成部242は、整数sと受信者IDとに基づいて、第二暗号文C2を生成する。第三暗号文生成部243は、整数sに基づいて第三暗号文C3を生成する。ハッシュ値算出部244は、第一暗号文C1と第二暗号文C2と第三暗号文C3とを結合してハッシュ値H0を算出する。第四暗号文生成部245は、ハッシュ値H0に基づいて、第四暗号文C4を生成する。暗号文結合部246は、第一暗号文C1と第二暗号文C2と第三暗号文C3と第四暗号文C4とを結合して、暗号文Cを生成する。これにより、同一の平文を暗号化した暗号文を複数受信者に対して送信しても安全なIDベース公開鍵暗号通信システムを提供できる。

Description

この発明は、IDベース暗号通信方式を用いた暗号通信システムに関する。
公開鍵暗号方式は、送信相手の公開鍵により暗号化したデータを送信し、送信相手が公開鍵とペアである秘密鍵で復号することにより、送信相手しか復号できない暗号通信を実現する。
従来、公開鍵が送信相手のものであることを保証するため、公開鍵認証機関が発行する公開鍵証明書を検証することが行われている。
また、公開鍵認証機関のようなインフラストラクチャがなくても、公開鍵とその所有者との対応を保証するため、送信相手の名前や名前や機器番号のような識別名(ID)を公開鍵として用いるIDベース暗号通信方式が提案されている。
公開鍵暗号方式の安全性を保証するため、公開鍵暗号方式の安全性を数学的な問題を解くことの困難性に帰着させて証明することが行われる。
すなわち、その暗号を確率的に解読できる攻撃者がいると仮定して、その攻撃者を利用することにより、その数学的な問題を解くことができるアルゴリズムが存在する場合、その暗号方式はその数学的な問題に帰着するという。
この証明において重要なのは、帰着する数学的な問題の良し悪し、帰着効率の良し悪し、モデルの良し悪しである。
帰着する数学的な問題の良し悪しとは、その問題を解くことの難しさのことである。解くことが難しい問題に帰着させることができる公開鍵暗号方式は、その分、安全性が高いと言うことができる。
帰着効率の良し悪しとは、攻撃者が暗号を解読するために利用する資源(時間・メモリなど)と、攻撃者を利用して数学的な問題を解くために利用する資源との間の関係のことである。暗号解読に必要な資源と、数学的な問題を解くために必要な資源との間に、あまり差がなければ、帰着効率が良いという。この場合、暗号が解読できれば、すなわち数学的な問題を解くことができるということになるので、対偶をとれば、数学的な問題を解くことが困難であれば、暗号を解読することも同じくらい困難だといえる。これに対して、帰着効率が悪い場合、すなわち、暗号解読に必要な資源との比較において数学的な問題を解くために必要な資源が非常に大きいのであれば、数学的な問題を解くことが困難であっても、暗号を解読することが同じくらい困難だとは限らない。
モデルの良し悪しとは、証明の前提となるモデルが現実に即しているか否かのことである。例えば、ランダムオラクルを用いないモデルは、ランダムオラクルを仮定するモデルよりも、良いモデルである。
国際公開2005−050908号 境隆一、大岸聖史、笠原正雄「楕円曲線上のペアリングを用いた暗号方式」暗号と情報セキュリティシンポジウム(SCIS 2001)、2001年 Dan Boneh、Matt Franklin「Identity−Based Encryption from the Weil Pairing」Crypto 2001、LNCS 2139、213〜229ページ、2001年 Xavier Boyen「The BB1 Identity−Based Cryptosystem:A Standard for Encryption and Key Encapsulation」Submissions for IEEE P1363.3、2006年(http://grouper.ieee.org/groups/1363/IBC/submissions/index.html) Craig Gentry「Practical Identity−Based Encryption Without Random Oracles」Eurocrypt 2006、LNCS 4004、445〜464ページ、2006年 Jung Hee Cheon「Security Analysis of the Strong Diffie−Hellman Problem」Eurocrypt 2006、1〜13ページ、2006年 Mihir Bellare、Alexandra Boldyreva、Silvio Micali「Public−key Encryption in a Multi−User Setting: Secutrity Proofs and Improvements」Eurocrypt 2000、LNCS 1807、2000年(http://www−cse.ucsd.edu/users/mihir/crypto−research−papers.html) Mihir Bellare、Alexandra Boldyreva、Jessica Staddon「Multi−Recipient Encryption Schemes:Security Notions and Randomness Re−Use」PKC 2003、LNCS 2567、2003年(http://www−cse.uscd.edu/users.mihir/crypto−research−papers.html) Ronald Cramer、Victor Shoup「Design and Analysis of Practical Public−Key Encryption Schemes Secure against Adaptive Chosen Ciphertext Attack」SIAM J.Comput、vol.33、2003年 Dan Boneh、Xavier Boyen「Efficient Selective−ID Secure Identity Based Encryption Without Random Oracles」Eurocrypt 2004、LNCS 3027、223〜238ページ、2004年(http://crypto.stanford.edu/〜dabo/) Brent Waters「Efficient Identity−Based Encryption Without Random Oracles」Eurocrypt 2005(http://www.cs1.sri.com/users/bwaters/publications/publications.html) David Naccache「Secure and Practical Identity−Based Encryption」(http://eprint.iacr.org/2005/369) Sanjit Chatterjee、Palash Sarkar「Trading Time for Space:Towards an Efficient IBE Scheme with Short(er) Public Parameters in the Standard Model」ICISC 2005、LNCS 3935、424〜440ページ、2006年 N.P.Smart「Efficient Key Encapsulation to Multiple Parties」SCN 2004、LNCS 3352、208〜219ページ、2005年 M.Barbosa、P.Farshim「Efficient Identity−Based Key Encapsulation to Multiple Parties」Cryptography and Coding、10th IMA Int.Cof.2005、LNCS 3796、Springer Verlog、428〜441ページ、2005年 Joonsang Baek、Reihaneh Safavi−Naini、Willy Susilo「Efficient Multi−receiver Identity−Based Encryption and Its Application to Broadcast Encryption」PKC 2005、LNCS 3386、380〜397ページ、2005年 Sanjit Chatterjee、Palash Sarkar「Generalization of the Selective−ID Security Model for HIBE Protocols」PKC 2006、2006年 Sanjit Chatterjee、Palash Sarkar「Multi−receiver Identity−Based Key Encapsulation with Shortened Ciphertext」Indocrypt 2006、LNCS 4329、394〜408ページ、2006年 Xavier Boyen、Qixiang Mei、Brent Waters「Direct Chosen Ciphertext Security from Identity−Based Techniques」ACM−CCS 2005、320〜329ページ、2005年
暗号の利用方法として、同一の平文を暗号化した暗号文を、複数の異なる受信者に対して送信するという使い方がある。
公開鍵暗号方式では、暗号処理に時間がかかることから、通常、セッション鍵を暗号化して受信者に対して送信し、暗号処理の速い共通鍵暗号方式により、送信したセッション鍵を用いて、送信したいデータを暗号化する。
公開鍵暗号方式では、平文(セッション鍵)を、それぞれの受信者の公開鍵で暗号化して複数の暗号文を生成し、生成した複数の暗号文を1つにまとめて、メール通信や、データ放送などにより送信する。
従来の公開鍵暗号方式においては、このような複数受信者に対して送信する使い方をした場合の安全性についての議論が行われているが、IDベース暗号方式においては、まだ、このような複数受信者の場合における安全性についての議論が不十分である。
また、受信者が多数の場合、セッション鍵を暗号化する処理だけでも多くの時間が必要となるので、処理を効率化する必要がある。
この発明は、例えば、上記のような課題を解決するためになされたものであり、同一の平文を暗号化して複数の受信者に対して送信する複数受信者環境において、暗号処理に必要な資源が少なくて済み、高速に処理可能なIDベース暗号方式を提供することを目的とする。
この発明にかかる暗号文生成装置は、
平文Mをn人の受信者(nは、1以上の整数。)に対して通知する暗号文Cを生成する暗号文生成装置において、
情報を記憶する記憶装置と、情報を処理する処理装置と、暗号パラメータ記憶部と、受信者識別入力部と、平文入力部と、暗号文主文生成部と、ハッシュ値算出部と、暗号文検証文生成部と、暗号文結合部とを有し、
上記暗号パラメータ記憶部は、上記記憶装置を用いて、公開暗号パラメータを記憶し、
上記受信者識別入力部は、上記処理装置を用いて、n人の受信者をそれぞれ識別するn個の受信者識別情報ID(iは、1以上n以下の整数。)を入力し、
上記平文入力部は、上記処理装置を用いて、平文Mを入力し、
上記暗号文主文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記受信者識別入力部が入力したn個の受信者識別情報IDと、上記平文入力部が入力した平文Mとに基づいて、n人の受信者に対応するn個の暗号文主文CB(iは、1以上n以下の整数。)を生成し、
上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号文主文生成部が生成したn個の暗号文主文CBを結合して、結合暗号文を生成し、上記処理装置を用いて、生成した結合暗号文に基づいて、ハッシュ値Hを算出し、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記ハッシュ値算出部が算出したハッシュ値Hとに基づいて、暗号文検証文CCを生成し、
上記暗号文結合部は、上記処理装置を用いて、上記暗号文主文生成部が生成したn個の暗号文主文CBと、上記暗号文検証文生成部が生成した暗号文検証文CCとを結合して、1つの暗号文Cとすることを特徴とする。
この発明にかかる暗号文生成装置は、更に、乱数生成部を有し、
上記乱数生成部は、上記処理装置を用いて、n人の受信者に対応するn個の整数s(iは、1以上n以下の整数。)をランダムに生成し、
上記暗号文主文生成部は、第一暗号文生成部と、第二暗号文生成部と、第三暗号文生成部とを有し、
上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記平文入力部が入力した平文Mと、上記乱数生成部が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の第一暗号文C1(iは、1以上n以下の整数。)を生成し、
上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記受信者識別入力部が入力したn個の受信者識別情報IDと、上記乱数生成部が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の第二暗号文C2(iは、1以上n以下の整数。)を生成し、
上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記乱数生成部が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の第三暗号文C3(iは、1以上n以下の整数。)を生成し、
上記第一暗号文生成部が生成したn個の第一暗号文C1と、上記第二暗号文生成部が生成したn個の第二暗号文C2と、上記第三暗号文生成部が生成したn個の第三暗号文C3とを、n人の受信者に対応するn個の暗号文主文CBとし、
上記ハッシュ値算出部は、上記処理装置を用いて、上記第一暗号文生成部が生成したn個の第一暗号文C1と、上記第二暗号文生成部が生成したn個の第二暗号文C2と、上記第三暗号文生成部が生成したn個の第三暗号文C3とを結合して、1つの結合暗号文とし、上記処理装置を用いて、結合した1つの結合暗号文に基づいて、1つのハッシュ値Hを算出し、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記乱数生成部が生成したn個の整数sと、上記ハッシュ値算出部が算出した1つのハッシュ値Hとに基づいて、n人の受信者に対応するn個の暗号文検証文CC(iは、1以上n以下の整数。)を生成し、
上記暗号文結合部は、上記処理装置を用いて、上記第一暗号文生成部が生成したn個の第一暗号文C1と、上記第二暗号文生成部が生成したn個の第二暗号文C2と、上記第三暗号文生成部が生成したn個の第三暗号文C3と、上記暗号文検証文生成部が生成したn個の暗号文検証文CCとを結合して、1つの暗号文Cとすることを特徴とする。
この発明にかかる暗号文生成装置は、更に、以下の点を特徴とする。
上記暗号パラメータ記憶部は、上記記憶装置を用いて、公開暗号パラメータとして、自然数rと、位数が上記自然数rである乗法群G1と、位数が上記自然数rである乗法群G2と、位数が上記自然数rである乗法群GTと、乗法群G1の要素と乗法群G2の要素とから乗法群GTの要素を算出するペアリングeと、乗法群GTの要素から所定の長さのビット列を算出する鍵生成関数KDFと、任意の長さのビット列から上記自然数r未満の自然数を算出するハッシュ関数HFと、乗法群G1の要素gと、乗法群G1の要素g1と、乗法群G2の要素g2と、乗法群G2の要素h1と、乗法群G2の要素h2と、乗法群G2の要素h3とを表わす情報を記憶し、
上記受信者識別入力部は、上記処理装置を用いて、n個の整数IDをn個の受信者識別情報として入力し、
上記乱数生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす自然数rに基づいて、n人の受信者に対応するn個の1以上自然数r未満の整数s(iは、1以上n以下の整数。)をランダムに生成し、
上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素h1とペアリングeと、鍵生成関数KDFと、上記乱数生成部が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の鍵ビット列k=KDF(e(g,h1)^s)(iは、1以上n以下の整数。)を算出し、上記処理装置を用いて、算出したn個の鍵ビット列kにより、上記平文入力部が入力した平文Mをそれぞれ暗号化して、n人の受信者に対応するn個の第一暗号文C1(iは、1以上n以下の整数。)とし、
上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと、乗法群G1の要素g1と、上記受信者識別入力部が入力したn個の整数IDと、上記乱数生成部が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の乗法群G1の要素u=(g1・g^−ID)^s(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G1の要素uをそれぞれ表わすビット列を、n人の受信者に対応するn個の第二暗号文C2(iは、1以上n以下の整数。)とし、
上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素g2とペアリングeと、上記乱数生成部が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の乗法群GTの要素v=e(g,g2)^s(iは、1以上n以下の整数。)を算出し、算出した乗法群GTの要素vをそれぞれ表わすビット列を、n人の受信者に対応するn個の第三暗号文C3(iは、1以上n以下の整数。)とし、
上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わすハッシュ関数HFに基づいて、1つの自然数βを算出して、ハッシュ値Hとし、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素h2と乗法群G2の要素h3とペアリングeと、上記乱数生成部が生成したn個の整数sと、上記ハッシュ値算出部が算出した1つの自然数βとに基づいて、n人の受信者に対応するn個の乗法群GTの要素y=e(g,h2)^s・e(g,h3)^(s・β)(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群GTの要素yをそれぞれ表わすビット列を、n人の受信者に対応するn個の暗号文検証文CC(iは、1以上n以下の整数。)とすることを特徴とする。
この発明にかかる暗号文生成装置は、更に、以下の点を特徴とする。
上記暗号パラメータ記憶部は、上記記憶装置を用いて、公開暗号パラメータとして、自然数rと、位数が上記自然数rである乗法群G1と、位数が上記自然数rである乗法群G2と、位数が上記自然数rである乗法群GTと、乗法群G1の要素と乗法群G2の要素とから乗法群GTの要素を算出するペアリングeと、乗法群GTの要素から所定の長さのビット列を算出する鍵生成関数KDFと、所定の長さのビット列から乗法群GTの要素を算出する2つの関数V1及びV2と、任意の長さのビット列から所定の長さのビット列を算出するハッシュ関数HFと、乗法群G1の要素gと、乗法群G1の要素g1と、乗法群G2の要素g2とを表わす情報を記憶し、
上記受信者識別入力部は、上記処理装置を用いて、n個の所定の長さのビット列IDをn個の受信者識別情報として入力し、
上記乱数生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす自然数rに基づいて、n人の受信者に対応するn個の1以上自然数r未満の整数s(iは、1以上n以下の整数。)をランダムに生成し、
上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素g1と乗法群G2の要素g2とペアリングeと鍵生成関数KDFと、上記乱数生成部が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の鍵ビット列k=KDF(e(g1,g2)^s)(iは、1以上n以下の整数。)を算出し、上記処理装置を用いて、算出したn個の鍵ビット列kにより、上記平文入力部が入力した平文Mをそれぞれ暗号化して、n人の受信者に対応するn個の第一暗号文C1(iは、1以上n以下の整数。)とし、
上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす関数V1と、上記乱数生成部が生成したn個の整数sと、上記受信者識別入力部が入力したn個の所定の長さのビット列IDとに基づいて、n人の受信者に対応するn個の乗法群G2の要素u=V1(ID)^s(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G2の要素uをそれぞれ表わすビット列を、n人の受信者に対応するn個の第二暗号文C2(iは、1以上n以下の整数。)とし、
上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと、上記乱数生成部が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の乗法群G1の要素v=g^s(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G1の要素vをそれぞれ表わすビット列を、n人の受信者に対応するn個の第三暗号文C3(iは、1以上n以下の整数。)とし、
上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わすハッシュ関数HFに基づいて、1つの所定の長さのビット列wを算出して、ハッシュ値Hとし、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす関数V2と、上記乱数生成部が生成したn個の整数sと、上記ハッシュ値算出部が算出した1つの所定の長さのビット列wとに基づいて、n人の受信者に対応するn個の乗法群G2の要素y=V2(w)^s(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G2の要素yをそれぞれ表わすビット列を、n人の受信者に対応するn個の暗号文検証文CC(iは、1以上n以下の整数。)とすることを特徴とする。
この発明にかかる暗号文生成装置は、更に、以下の点を特徴とする。
上記暗号パラメータ記憶部は、上記記憶装置を用いて、2つの関数V1及びV2を表わす情報として、m1個の乗法群G2の要素hξ(ξは、1以上m1以下の整数。)と、2つの乗法群G2の要素h1’及びh2’とを表わす情報を記憶し、
上記第二暗号文生成部は、上記処理装置を用いて、上記受信者識別入力部が入力したn個の所定の長さのビット列IDそれぞれを、m1個の所定の長さのビット列νiξ(ξは、1以上m1以下の整数。)に分割し、分割したm1個の所定の長さのビット列νiξをm1個の整数として取り扱い、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わすm1個の乗法群G2の要素hξ(ξは、1以上m1以下の整数。)と乗法群G2の要素h1’と、分割したm1個の整数νiξとに基づいて、関数V1の値である乗法群G2の要素V1(ID)=h1’・Π(hξ^νiξ)(ξは、1以上m1以下の整数。)を算出し、
上記暗号文検証文生成部は、上記処理装置を用いて、上記ハッシュ値算出部が算出した所定の長さのビット列wを、m1個の所定の長さのビット列νξ(ξは、1以上m1以下の整数。)に分割し、分割したm1個の所定の長さのビット列νξをm1個の整数として取り扱い、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わすm1個の乗法群G2の要素hξ(ξは、1以上m1以下の整数。)と乗法群G2の要素h2’と、分割したm1個の整数νξとに基づいて、関数V2の値である乗法群G2の要素V2(w)=h2’・Π(hξ^νξ)(ξは、1以上m1以下の整数。)を算出することを特徴とする。
この発明にかかる暗号文生成装置は、更に、以下の点を特徴とする。
上記暗号文主文生成部は、上記処理装置を用いて、上記受信者識別入力部が入力したn個の受信者識別情報IDを含むn個の暗号文主文CBを生成することを特徴とする。
この発明にかかる暗号文生成装置は、更に、暗号文通知部を有し、
上記暗号文通知部は、上記処理装置を用いて、上記受信者識別入力部が入力したn個の受信者識別情報IDによって識別されるn人の受信者に対して、上記暗号文結合部が結合した1つの暗号文Cを通知することを特徴とする。
この発明にかかる暗号文生成装置は、更に、セッション鍵生成部を有し、
上記セッション鍵生成部は、上記処理装置を用いて、所定の長さのビット列をランダムに生成して、セッション鍵Kとし、
上記平文入力部は、上記処理装置を用いて、平文Mとして、上記セッション鍵生成部が生成したセッション鍵Kを入力することを特徴とする。
この発明にかかる暗号文生成装置は、更に、データ入力部と、データ暗号化部と、暗号文通知部とを有し、
上記データ入力部は、上記処理装置を用いて、n人の受信者に対して送信すべき1つの平文データを入力し、
上記データ暗号化部は、上記処理装置を用いて、上記セッション鍵生成部が生成したセッション鍵Kにより、上記データ入力部が入力した1つの平文データを暗号化して、1つの暗号化データとし、
上記暗号文通知部は、上記処理装置を用いて、上記受信者識別入力部が入力したn個の受信者識別情報IDによって識別されるn人の受信者に対して、上記暗号文結合部が結合した1つの暗号文Cと、上記データ暗号化部が暗号化した1つの暗号化データとを通知することを特徴とする。
この発明にかかる暗号通信システムは、
それぞれが対応する暗号文受信装置を有するn人の受信者(nは、1以上の整数。)に対して、平文Mを1つの暗号文Cにより通知する暗号通信システムにおいて、
暗号パラメータ生成装置と、暗号文生成装置と、複数の暗号文受信装置とを有し、
上記暗号パラメータ生成装置は、
情報を記憶する記憶装置と、情報を処理する処理装置と、秘密情報生成部と、秘密情報記憶部と、公開パラメータ生成部と、公開パラメータ公開部と、識別情報入力部と、秘密鍵生成部と、秘密鍵通知部とを有し、
上記秘密情報生成部は、上記処理装置を用いて、秘密情報をランダムに生成し、
上記秘密情報記憶部は、上記記憶装置を用いて、上記秘密情報生成部が生成した秘密情報を記憶し、
上記公開パラメータ生成部は、上記処理装置を用いて、上記秘密情報生成部が生成した秘密情報に基づいて、公開暗号パラメータを生成し、
上記公開パラメータ公開部は、上記処理装置を用いて、上記公開パラメータ生成部が生成した公開暗号パラメータを公開し、
上記識別情報入力部は、上記処理装置を用いて、上記複数の暗号文受信装置のうち1つの暗号文受信装置に対応する1人の受信者を識別する受信者識別情報IDを入力し、
上記秘密鍵生成部は、上記処理装置を用いて、上記秘密情報記憶部が記憶した秘密情報と、上記公開パラメータ生成部が生成した公開暗号パラメータと、上記識別情報入力部が入力した受信者識別情報IDとに基づいて、上記1人の受信者に対応する秘密鍵dIDを生成し、
上記秘密鍵通知部は、上記処理装置を用いて、上記1人の受信者に対応する1つの暗号文受信装置に対して、上記秘密鍵生成部が生成した秘密鍵dIDを秘密裏に通知し、
上記暗号文生成装置は、
情報を記憶する記憶装置と、情報を処理する処理装置と、暗号パラメータ記憶部と、受信者識別入力部と、平文入力部と、暗号文主文生成部と、ハッシュ値算出部と、暗号文検証文生成部と、暗号文結合部と、暗号文通知部とを有し、
上記暗号パラメータ記憶部は、上記記憶装置を用いて、上記暗号パラメータ生成装置が公開した公開暗号パラメータを記憶し、
上記受信者識別入力部は、上記処理装置を用いて、n人の受信者をそれぞれ識別するn個の受信者識別情報ID(iは、1以上n以下の整数。)を入力し、
上記平文入力部は、上記処理装置を用いて、平文Mを入力し、
上記暗号文主文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記受信者識別入力部が入力したn個の受信者識別情報IDと、上記平文入力部が入力した平文Mとに基づいて、n人の受信者に対応するn個の暗号文主文CB(iは、1以上n以下の整数。)を生成し、
上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号文主文生成部が生成したn個の暗号文主文CBを結合して、結合暗号文を生成し、上記処理装置を用いて、生成した結合暗号文に基づいて、ハッシュ値Hを算出し、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記ハッシュ値算出部が算出したハッシュ値Hとに基づいて、暗号文検証文CCを生成し、
上記暗号文結合部は、上記処理装置を用いて、上記暗号文主文生成部が生成したn個の暗号文主文CBと、上記暗号文検証文生成部が生成した暗号文検証文CCとを結合して、1つの暗号文Cとし、
上記暗号文通知部は、上記処理装置を用いて、上記n人の受信者に対応するn個の暗号文受信装置に対して、上記暗号文結合部が結合した1つの暗号文Cを通知し、
上記複数の暗号文受信装置は、それぞれ、
情報を記憶する記憶装置と、情報を処理する処理装置と、公開パラメータ記憶部と、秘密鍵記憶部と、暗号文受信部と、暗号文分解部と、検証ハッシュ値算出部と、暗号文検証部と、暗号文復号部とを有し、
上記公開パラメータ記憶部は、上記記憶装置を用いて、上記暗号パラメータ生成装置が公開した公開暗号パラメータを記憶し、
上記秘密鍵記憶部は、上記記憶装置を用いて、上記暗号パラメータ生成装置が通知した秘密鍵dIDを記憶し、
上記暗号文受信部は、上記処理装置を用いて、上記暗号文生成装置が通知した1つの暗号文Cを受信し、
上記暗号文分解部は、上記処理装置を用いて、上記暗号文受信部が受信した1つの暗号文Cに基づいて、n個の暗号文主文CBと、暗号文検証文CCとを取得し、
上記検証ハッシュ値算出部は、上記処理装置を用いて、上記暗号文分解部が取得したn個の暗号文主文CBを結合した検証結合暗号文に基づいて、検証ハッシュ値H’を算出し、
上記暗号文検証部は、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータと、上記暗号文分解部が取得したn個の暗号文主文CBのうち、暗号文受信装置が対応する受信者に対応する1つの対応暗号文主文CBIDと、暗号文検証文CCと、上記検証ハッシュ値算出部が算出した検証ハッシュ値H’とに基づいて、上記暗号文受信部が受信した1つの暗号文Cに整合性があるか否かを判定し、
上記暗号文復号部は、上記暗号文受信部が受信した1つの暗号文Cに整合性があると、上記暗号文検証部が判定した場合に、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータと、上記秘密鍵記憶部が記憶した秘密鍵dIDと、上記暗号文分解部が取得したn個の暗号文主文CBのうち、暗号文受信装置が対応する受信者に対応する1つの対応暗号文主文CBIDとに基づいて、平文Mを復元することを特徴とする。
この発明にかかる暗号通信システムは、更に、以下の点を特徴とする。
上記暗号文生成装置は、更に、乱数生成部を有し、
上記乱数生成部は、上記処理装置を用いて、n人の受信者に対応するn個の整数s(iは、1以上n以下の整数。)をランダムに生成し、
上記暗号文主文生成部は、第一暗号文生成部と、第二暗号文生成部と、第三暗号文生成部とを有し、
上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記平文入力部が入力した平文Mと、上記乱数生成部が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の第一暗号文C1(iは、1以上n以下の整数。)を生成し、
上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記受信者識別入力部が入力したn個の受信者識別情報IDと、上記乱数生成部が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の第二暗号文C2(iは、1以上n以下の整数。)を生成し、
上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記乱数生成部が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の第三暗号文C3(iは、1以上n以下の整数。)を生成し、
上記第一暗号文生成部が生成したn個の第一暗号文C1と、上記第二暗号文生成部が生成したn個の第二暗号文C2と、上記第三暗号文生成部が生成したn個の第三暗号文C3とを、n人の受信者に対応するn個の暗号文主文CBとし、
上記ハッシュ値算出部は、上記処理装置を用いて、上記第一暗号文生成部が生成したn個の第一暗号文C1と、上記第二暗号文生成部が生成したn個の第二暗号文C2と、上記第三暗号文生成部が生成したn個の第三暗号文C3とを結合して、1つの結合暗号文とし、上記処理装置を用いて、結合した1つの結合暗号文に基づいて、1つのハッシュ値Hを算出し、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記乱数生成部が生成したn個の整数sと、上記ハッシュ値算出部が算出した1つのハッシュ値Hとに基づいて、n人の受信者に対応するn個の暗号文検証文CC(iは、1以上n以下の整数。)を生成し、
上記暗号文結合部は、上記処理装置を用いて、上記第一暗号文生成部が生成したn個の第一暗号文C1と、上記第二暗号文生成部が生成したn個の第二暗号文C2と、上記第三暗号文生成部が生成したn個の第三暗号文C3と、上記暗号文検証文生成部が生成したn個の暗号文検証文CCとを結合して、1つの暗号文Cとし、
上記暗号文分解部は、上記処理装置を用いて、上記暗号文受信部が受信した1つの暗号文Cに基づいて、n個の第一暗号文C1と、n個の第二暗号文C2と、n個の第三暗号文C3と、n個の暗号文検証文CCとを取得し、上記処理装置を用いて、取得したn個の第一暗号文C1とn個の第二暗号文C2とn個の第三暗号文C3とn個の暗号文検証文CCとのうち、暗号文受信装置が対応する受信者に対応する1つの対応第一暗号文C1IDと1つの対応第二暗号文C2IDと1つの対応第三暗号文C3IDと1つの対応暗号文検証文CCIDとを取得し、
上記検証ハッシュ値算出部は、上記処理装置を用いて、上記暗号文分解部が取得したn個の第一暗号文C1とn個の第二暗号文C2とn個の第三暗号文C3とを結合した検証結合暗号文に基づいて、検証ハッシュ値H’を算出し、
上記暗号文検証部は、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータと、上記暗号文分解部が取得した1つの対応第二暗号文C2IDと1つの対応第三暗号文C3IDとの少なくともいずれかと1つの対応暗号文検証文CCIDと、上記検証ハッシュ値算出部が算出した検証ハッシュ値H’とに基づいて、上記暗号文受信部が受信した1つの暗号文Cに整合性があるか否かを判定し、
上記暗号文復号部は、上記暗号文受信部が受信した1つの暗号文Cに整合性があると、上記暗号文検証部が判定した場合に、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータと、上記秘密鍵記憶部が記憶した秘密鍵dIDと、上記暗号文分解部が取得した1つの対応第一暗号文C1IDと1つの対応第二暗号文C2IDと1つの対応第三暗号文C3IDとに基づいて、平文Mを復元することを特徴とする。
この発明にかかる暗号通信システムは、更に、以下の点を特徴とする。
上記暗号パラメータ生成装置は、更に、群パラメータ記憶部を有し、
上記群パラメータ記憶部は、上記記憶装置を用いて、群パラメータとして、自然数rと、位数が上記自然数rである乗法群G1と、位数が上記自然数rである乗法群G2と、位数が上記自然数rである乗法群GTと、乗法群G1の要素と乗法群G2の要素とから乗法群GTの要素を算出するペアリングeとを表わす情報を記憶し、
上記秘密情報生成部は、上記処理装置を用いて、上記群パラメータ記憶部が記憶した群パラメータが表わす自然数rに基づいて、1以上自然数r未満の整数αをランダムに生成し、
上記秘密情報記憶部は、上記記憶装置を用いて、上記秘密情報生成部が生成した整数αを表わす情報を秘密情報として記憶し、
上記公開パラメータ生成部は、上記処理装置を用いて、乗法群GTの要素から所定の長さのビット列を算出する鍵生成関数KDFと、任意の長さのビット列から上記自然数r未満の自然数を算出するハッシュ関数HFとを決定し、上記処理装置を用いて、上記群パラメータ記憶部が記憶した群パラメータが表わす乗法群G1と乗法群G2とに基づいて、乗法群G1の要素gと乗法群G2の要素g2と乗法群G2の要素h1と乗法群G2の要素h2と乗法群G2の要素h3とをランダムに選択し、上記処理装置を用いて、上記秘密情報生成部が生成した秘密情報が表わす整数αと、選択した乗法群G1の要素gとに基づいて、乗法群G1の要素g1=g^αを算出し、上記群パラメータ記憶部が記憶した群パラメータと、決定した鍵生成関数KDFとハッシュ関数HFと、選択した乗法群G1の要素gと乗法群G2の要素g2と乗法群G2の要素h1と乗法群G2の要素h2と乗法群G2の要素h3と、算出した乗法群G1の要素g1とを表わす情報を公開暗号パラメータとし、
上記識別情報入力部は、上記処理装置を用いて、整数IDを受信者識別情報として入力し、
上記秘密鍵生成部は、上記処理装置を用いて、上記公開パラメータ生成部が生成した公開暗号パラメータが表わす自然数rに基づいて、1以上自然数r未満の整数rID,1と、1以上自然数r未満の整数rID,2と、1以上自然数r未満の整数rID,3とをランダムに生成し、上記処理装置を用いて、上記公開パラメータ生成部が生成した公開暗号パラメータが表わす乗法群G2の要素g2と乗法群G2の要素h1と乗法群G2の要素h2と乗法群G2の要素h3と、上記秘密情報記憶部が記憶した整数αと、上記識別情報入力部が入力した整数IDと、生成した整数rID,1と整数rID,2と整数rID,3とに基づいて、乗法群G2の要素hID,1=(h1・g2^(−rID,1))^(1/(α−ID))と、乗法群G2の要素hID,2=(h2・g2^(−rID,2))^(1/(α−ID))と、乗法群G2の要素hID,3=(h3・g2^(−rID,3))^(1/(α−ID))とを算出し、生成した整数rID,1と整数rID,2と整数rID,3と、算出した乗法群G2の要素hID,1と乗法群G2の要素hID,2と乗法群G2の要素hID,3とを表わす情報を秘密鍵dIDとし、
上記受信者識別入力部は、上記処理装置を用いて、n個の整数IDをn個の受信者識別情報として入力し、
上記乱数生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす自然数rに基づいて、n人の受信者に対応するn個の1以上自然数r未満の整数s(iは、1以上n以下の整数。)をランダムに生成し、
上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素h1とペアリングeと、鍵生成関数KDFと、上記乱数生成部が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の鍵ビット列k=KDF(e(g,h1)^s)(iは、1以上n以下の整数。)を算出し、上記処理装置を用いて、算出したn個の鍵ビット列kにより、上記平文入力部が入力した平文Mをそれぞれ暗号化して、n人の受信者に対応するn個の第一暗号文C1(iは、1以上n以下の整数。)とし、
上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと、乗法群G1の要素g1と、上記受信者識別入力部が入力したn個の整数IDと、上記乱数生成部が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の乗法群G1の要素u=(g1・g^(−ID))^s(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G1の要素uをそれぞれ表わすビット列を、n人の受信者に対応するn個の第二暗号文C2(iは、1以上n以下の整数。)とし、
上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素g2とペアリングeと、上記乱数生成部が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の乗法群GTの要素v=e(g,g2)^s(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群GTの要素vをそれぞれ表わすビット列を、n人の受信者に対応するn個の第三暗号文C3とし、
上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わすハッシュ関数HFに基づいて、1つの自然数βを算出して、ハッシュ値Hとし、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素h2と乗法群G2の要素h3とペアリングeと、上記乱数生成部が生成したn個の整数sと、上記ハッシュ値算出部が算出した1つの自然数βとに基づいて、n人の受信者に対応するn個の乗法群GTの要素y=e(g,h2)^s・e(g,h3)^(s・β)(iは、1以上n以下の整数。)を算出し、算出した乗法群GTの要素yをそれぞれ表わすビット列を、n人の受信者に対応するn個の暗号文検証文CC(iは、1以上n以下の整数。)とし、
上記検証ハッシュ値算出部は、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータが表わすハッシュ関数HFに基づいて、自然数β’を算出して、検証ハッシュ値H’とし、
上記暗号文検証部は、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータが表わすペアリングeと、上記秘密鍵記憶部が記憶した秘密鍵dIDが表わす整数rID,2と整数rID,3と乗法群G2の要素hID,2と乗法群G2の要素hID,3と、上記暗号文分解部が取得した1つの対応第二暗号文C2IDが表わす乗法群G1の要素uIDと1つの対応第三暗号文C3IDが表わす乗法群GTの要素vIDと、上記検証ハッシュ値算出部が算出した自然数β’とに基づいて、乗法群GTの要素y’=e(uID,hID,2・hID,3^β’)・vID^(rID,2+rID,3・β’)を算出し、上記処理装置を用いて、算出した乗法群GTの要素y’と、上記暗号文分解部が取得した対応暗号文検証文CCIDが表わす乗法群GTの要素yIDとを比較し、乗法群GTの要素y’と乗法群GTの要素yIDとが一致する場合に、上記暗号文受信部が受信した1つの暗号文Cに整合性があると判定し、
上記暗号文復号部は、上記暗号文受信部が受信した1つの暗号文Cに整合性があると、上記暗号文検証部が判定した場合に、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータが表わすペアリングeと鍵生成関数KDFと、上記秘密鍵記憶部が記憶した秘密鍵dIDが表わす整数rID,1と乗法群G2の要素hID,1と、上記暗号文分解部が取得した1つの対応第二暗号文C2IDが表わす乗法群G1の要素uIDと、対応第三暗号文C3IDが表わす乗法群G2の要素vIDとに基づいて、鍵ビット列k’=KDF(e(uID,hID,1)・vID^rID,1)を算出し、上記処理装置を用いて、算出した鍵ビット列k’により、上記暗号文分解部が取得した対応第一暗号文C1IDを復号して、平文Mを復元することを特徴とする。
この発明にかかる暗号通信システムは、更に、群パラメータ生成装置を有し、
上記群パラメータ生成装置は、
情報を処理する処理装置と、群位数候補生成部と、群位数安全性判定部と、パラメータ生成部とを有し、
上記群位数候補生成部は、上記処理装置を用いて、素数rを群位数の候補として生成し、
上記群位数安全性判定部は、上記処理装置を用いて、上記群位数候補生成部が生成した素数rに基づいて、素数rと1との差(r−1)の因数と、素数rと1との和(r+1)の因数とを算出し、上記処理装置を用いて、算出した(r−1)の因数と(r+1)の因数とに基づいて、上記群位数候補生成部が生成した素数rが安全な群位数であるか否かを判定し、
上記パラメータ生成部は、上記群位数候補生成部が生成した素数rが安全な群位数であると群位数安全性判定部が判定した場合に、上記処理装置を用いて、上記群位数候補生成部が生成した素数rに基づいて、素数rを群位数とする乗法群を算出し、上記処理装置を用いて、算出した乗法群を表わす情報を含む群パラメータを生成し、
上記群パラメータ記憶部は、上記記憶装置を用いて、上記群パラメータ生成装置が生成した群パラメータを記憶することを特徴とする。
この発明にかかる暗号通信システムは、更に、以下の点を特徴とする。
上記群位数候補生成部は、上記処理装置を用いて、所定の整数kの倍数に1を加えた素数rを群位数の候補として生成し、
上記群位数安全性判定部は、剰余算出部と、判定値算出部と、素因数判定部とを有し、
上記剰余算出部は、上記処理装置を用いて、上記群位数候補生成部が生成した素数rに基づいて、素数rを4で割った余りを算出し、
上記判定値算出部は、上記剰余算出部が算出した余りが1である場合に、上記処理装置を用いて、上記所定の整数kと、上記群位数候補生成部が生成した素数rとに基づいて、素数rと1との差(r−1)を、整数kと4との最小公倍数LCM(k,4)で割った商である整数r1=(r−1)/LCM(k,4)を算出し、上記処理装置を用いて、上記群位数候補生成部が生成した素数rに基づいて、素数rと1との和(r+1)を2で割った商である整数r2=(r+1)/2を算出し、上記剰余算出部が算出した余りが3である場合に、上記処理装置を用いて、上記所定の整数kと、上記群位数候補生成部が生成した素数rとに基づいて、素数rと1との差(r−1)を、整数kと2との最小公倍数LCM(k,2)で割った商である整数r1=(r−1)/LCM(k,2)を算出し、上記処理装置を用いて、上記群位数候補生成部が生成した素数rに基づいて、素数rと1との和(r+1)を4で割った商である整数r2=(r+1)/4を算出し、
上記素因数判定部は、上記処理装置を用いて、上記判定値算出部が算出した整数r1に基づいて、整数r1が所定の整数B1より小さい素因数を有するか否かを判定し、上記処理装置を用いて、上記判定値算出部が算出した整数r2に基づいて、整数r2が所定の整数B2より小さい素因数を有するか否かを判定し、整数r1が所定の整数B1より小さい素因数を有すると判定した場合、及び、整数r2が所定の整数B2よりも小さい素因数を有すると判定した場合に、上記群位数候補生成部が生成した素数rが安全な群位数でないと判定することを特徴とする。
この発明にかかる暗号通信システムは、更に、以下の点を特徴とする。
上記群位数候補生成部は、上記処理装置を用いて、所定の整数kの倍数に1を加えた素数rを群位数の候補として生成し、
上記群位数安全性判定部は、剰余算出部と、判定値算出部と、素因数判定部とを有し、
上記剰余算出部は、上記処理装置を用いて、上記群位数候補生成部が生成した素数rに基づいて、素数rを4で割った余りを算出し、
上記判定値算出部は、上記剰余算出部が算出した余りが1である場合に、上記処理装置を用いて、上記所定の整数kと、上記群位数候補生成部が生成した素数rとに基づいて、素数rと1との差(r−1)を、整数kと4との最小公倍数LCM(k,4)で割った商である整数r1=(r−1)/LCM(k,4)を算出し、上記処理装置を用いて、上記群位数候補生成部が生成した素数rに基づいて、素数rと1との和(r+1)を2で割った商である整数r2=(r+1)/2を算出し、上記剰余算出部が算出した余りが3である場合に、上記処理装置を用いて、上記所定の整数kと、上記群位数候補生成部が生成した素数rとに基づいて、素数rと1との差(r−1)を、整数kと2との最小公倍数LCM(k,2)で割った商である整数r1=(r−1)/LCM(k,2)を算出し、上記処理装置を用いて、上記群位数候補生成部が生成した素数rに基づいて、素数rと1との和(r+1)を4で割った商である整数r2=(r+1)/4を算出し、
上記素因数判定部は、上記処理装置を用いて、上記判定値算出部が算出した整数r1に基づいて、整数r1が素数であるか否かを判定し、上記処理装置を用いて、上記判定値算出部が算出した整数r2に基づいて、整数r2が素数であるか否かを判定し、整数r1が素数でないと判定した場合、及び、整数r2が素数でないと判定した場合に、上記群位数候補生成部が生成した素数rが安全な群位数でないと判定することを特徴とする。
この発明にかかる暗号通信システムは、更に、以下の点を特徴とする。
上記暗号パラメータ生成装置は、更に、群パラメータ記憶部を有し、
上記群パラメータ記憶部は、上記記憶装置を用いて、群パラメータとして、自然数rと、位数が上記自然数rである乗法群G1と、位数が上記自然数rである乗法群G2と、位数が上記自然数rである乗法群GTと、乗法群G1の要素と乗法群G2の要素とから乗法群GTの要素を算出するペアリングeとを表わす情報を記憶し、
上記秘密情報生成部は、上記処理装置を用いて、上記群パラメータ記憶部が記憶した群パラメータが表わす自然数rに基づいて、1以上自然数r未満の整数αをランダムに生成し、
上記公開パラメータ生成部は、上記処理装置を用いて、乗法群GTの要素から所定の長さのビット列を算出する鍵生成関数KDFと、所定の長さのビット列から乗法群GTの要素を算出する2つの関数V1及びV2と、任意の長さのビット列から所定の長さのビット列を算出するハッシュ関数HFとを決定し、上記処理装置を用いて、上記群パラメータ記憶部が記憶した群パラメータが表わす乗法群G1と乗法群G2とに基づいて、乗法群G1の要素gと乗法群G2の要素g2とをランダムに選択し、上記秘密情報生成部が生成した整数αと、選択した乗法群G1の要素gとに基づいて、乗法群G1の要素g1=g^αを算出し、上記処理装置を用いて、上記群パラメータ記憶部が記憶した群パラメータと、決定した鍵生成関数KDFと2つの関数V1及びV2とハッシュ関数HFと、選択した乗法群G1の要素gと乗法群G2の要素g2と、算出した乗法群G1の要素g1とを表わす情報を公開暗号パラメータとし、
上記秘密情報生成部は、更に、上記処理装置を用いて、生成した整数αと、上記公開パラメータ生成部が選択した乗法群G2の要素g2とに基づいて、乗法群G2の要素msk=g2^αを算出し、
上記秘密情報記憶部は、上記記憶装置を用いて、上記秘密情報生成部が算出した乗法群G2の要素mskを表わす情報を秘密情報として記憶し、
上記識別情報入力部は、上記処理装置を用いて、所定の長さのビット列IDを受信者識別情報として入力し、
上記秘密鍵生成部は、上記処理装置を用いて、上記公開パラメータ生成部が生成した公開暗号パラメータが表わす自然数rに基づいて、1以上自然数r未満の整数rIDをランダムに生成し、上記処理装置を用いて、上記公開パラメータ生成部が生成した公開暗号パラメータが表わす乗法群G1の要素gと関数V1と、上記秘密情報記憶部が記憶した秘密情報が表わす乗法群G2の要素mskと、生成した整数rIDとに基づいて、乗法群G2の要素d0ID=msk・V1(ID)^rIDと、乗法群G1の要素d1ID=g^rIDとを算出し、算出した乗法群G2の要素d0IDと乗法群G1の要素d1IDとを表わす情報を、秘密鍵dIDとし、
上記受信者識別入力部は、上記処理装置を用いて、n個の所定の長さのビット列IDをn個の受信者識別情報として入力し、
上記乱数生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす自然数rに基づいて、n人の受信者に対応するn個の1以上自然数r未満の整数s(iは、1以上n以下の整数。)をランダムに生成し、
上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素g1と乗法群G2の要素g2とペアリングeと鍵生成関数KDFと、上記乱数生成部が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の鍵ビット列k=KDF(e(g1,g2)^s)(iは、1以上n以下の整数。)を算出し、上記処理装置を用いて、算出したn個の鍵ビット列kにより、上記平文入力部が入力した平文Mをそれぞれ暗号化して、n人の受信者に対応するn個の第一暗号文C1(iは、1以上n以下の整数。)とし、
上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす関数V1と、上記受信者識別入力部が入力したn個の所定の長さのビット列IDと、上記乱数生成部が生成したn個の整数s(iは、1以上n以下の整数。)とに基づいて、n人の受信者に対応するn個の乗法群G2の要素u=V1(ID)^s(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G2の要素uをそれぞれ表わすビット列を、n人の受信者に対応するn個の第二暗号文C2(iは、1以上n以下の整数。)とし、
上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと、上記乱数生成部が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の乗法群G1の要素v=g^s(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G1の要素vをそれぞれ表わすビット列を、n人の受信者に対応するn個の第三暗号文C3(iは、1以上n以下の整数。)とし、
上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わすハッシュ関数HFに基づいて、1つの所定の長さのビット列wを算出して、ハッシュ値Hとし、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす関数V2と、上記乱数生成部が生成したn個の整数sと、上記ハッシュ値算出部が算出した1つの所定の長さのビット列wとに基づいて、n人の受信者に対応するn個の乗法群G2の要素y=V2(w)^s(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G2の要素yをそれぞれ表わすビット列を、n人の受信者に対応するn個の暗号文検証文CCとし、
上記検証ハッシュ値算出部は、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータが表わすハッシュ関数HFに基づいて、所定の長さのビット列w’を算出して、検証ハッシュ値H’とし、
上記暗号文検証部は、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータが表わすペアリングeと関数V2と、上記暗号文分解部が取得した対応第三暗号文C3IDが表わす乗法群G1の要素vIDと上記検証ハッシュ値算出部が算出した所定の長さのビット列w’とに基づいて、乗法群GTの要素e(vID,V2(w’))を算出し、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gとペアリングeと、上記暗号文分解部が取得した対応暗号文検証文CCIDが表わす乗法群G2の要素yIDとに基づいて、乗法群GTの要素e(g,yID)を算出し、上記処理装置を用いて、算出した乗法群GTの要素e(vID,V2(w’))と、算出した乗法群GTの要素e(g,yID)とを比較し、乗法群GTの要素e(vID,V2(w’))と乗法群GTの要素e(g,yID)とが一致する場合に、上記暗号文受信部が受信した1つの暗号文Cに整合性があると判定し、
上記暗号文復号部は、上記暗号文受信部が受信した1つの暗号文Cに整合性があると、上記暗号文検証部が判定した場合に、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータが表わすペアリングeと鍵生成関数KDFと、上記秘密鍵記憶部が記憶した秘密鍵dIDが表わす乗法群G2の要素d0IDと乗法群G1の要素d1IDと、上記暗号文分解部が取得した1つの対応第二暗号文C2IDが表わす乗法群G2の要素uIDと対応第三暗号文C3IDが表わす乗法群G1の要素vIDとに基づいて、鍵ビット列k’=KDF(e(vID,d0ID)/e(d1ID,uID))を算出し、上記処理装置を用いて、算出した鍵ビット列k’により、上記暗号文分解部が取得した対応第一暗号文C1IDを復号して、平文Mを復元することを特徴とする。
この発明にかかる暗号通信システムは、更に、以下の点を特徴とする。
上記暗号文主文生成部は、上記処理装置を用いて、上記受信者識別入力部が入力したn個の受信者識別情報IDを含むn個の暗号文主文CBを生成することを特徴とする。
この発明にかかる暗号通信システムは、更に、以下の点を特徴とする。
上記暗号文生成装置は、更に、セッション鍵生成部と、データ入力部と、データ暗号化部と、暗号文通知部とを有し、
上記セッション鍵生成部は、上記処理装置を用いて、所定の長さのビット列をランダムに生成して、セッション鍵Kとし、
上記平文入力部は、上記処理装置を用いて、平文Mとして、上記セッション鍵生成部が生成したセッション鍵Kを入力し、
上記データ入力部は、上記処理装置を用いて、n人の受信者に対して送信すべき1つの平文データを入力し、
上記データ暗号化部は、上記処理装置を用いて、上記セッション鍵生成部が生成したセッション鍵Kにより、上記データ入力部が入力した1つの平文データを暗号化して、1つの暗号化データとし、
上記暗号文通知部は、上記処理装置を用いて、上記受信者識別入力部が入力したn個の受信者識別情報によって識別されるn人の受信者に対して、上記暗号文結合部が結合した1つの暗号文Cと、上記データ暗号化部が暗号化した1つの暗号化データとを通知し、
上記複数の暗号文受信装置は、更に、それぞれ、データ復号部を有し、
上記暗号文受信部は、上記処理装置を用いて、上記暗号文生成装置が通知した1つの暗号文Cと1つの暗号化データとを受信し、
上記データ復号部は、上記暗号文復号部が復元した平文Mをセッション鍵K’とし、上記処理装置を用いて、上記セッション鍵K’により、上記暗号文受信部が受信した1つの暗号化データを復号することを特徴とする。
この発明にかかる群パラメータ生成装置は、
それぞれが対応する暗号文受信装置を有するn人の受信者(nは、1以上の整数。)に対して、平文Mを1つの暗号文Cにより通知する暗号通信システムにおける暗号処理に使用する乗法群のパラメータを生成する群パラメータ生成装置において、
情報を処理する処理装置と、群位数候補生成部と、群位数安全性判定部と、パラメータ生成部とを有し、
上記群位数候補生成部は、上記処理装置を用いて、素数rを群位数の候補として生成し、
上記群位数安全性判定部は、上記処理装置を用いて、上記群位数候補生成部が生成した素数rに基づいて、素数rと1との差(r−1)の因数と、素数rと1との和(r+1)の因数とを算出し、上記処理装置を用いて、算出した(r−1)の因数と(r+1)の因数とに基づいて、上記群位数候補生成部が生成した素数rが安全な群位数であるか否かを判定し、
上記パラメータ生成部は、上記群位数候補生成部が生成した素数rが安全な群位数であると群位数安全性判定部が判定した場合に、上記処理装置を用いて、上記群位数候補生成部が生成した素数rに基づいて、素数rを群位数とする乗法群を算出し、上記処理装置を用いて、算出した乗法群を表わす情報を含む群パラメータを生成し、
上記群パラメータ記憶部は、上記記憶装置を用いて、上記群パラメータ生成装置が生成した群パラメータを記憶することを特徴とする。
この発明にかかる群パラメータ生成装置は、更に、以下の点を特徴とする。
上記群位数候補生成部は、上記処理装置を用いて、所定の整数kの倍数に1を加えた素数rを群位数の候補として生成し、
上記群位数安全性判定部は、剰余算出部と、判定値算出部と、素因数判定部とを有し、
上記剰余算出部は、上記処理装置を用いて、上記群位数候補生成部が生成した素数rに基づいて、素数rを4で割った余りを算出し、
上記判定値算出部は、上記剰余算出部が算出した余りが1である場合に、上記処理装置を用いて、上記所定の整数kと、上記群位数候補生成部が生成した素数rとに基づいて、素数rと1との差(r−1)を、整数kと4との最小公倍数LCM(k,4)で割った商である整数r1=(r−1)/LCM(k,4)を算出し、上記処理装置を用いて、上記群位数候補生成部が生成した素数rに基づいて、素数rと1との和(r+1)を2で割った商である整数r2=(r+1)/2を算出し、上記剰余算出部が算出した余りが3である場合に、上記処理装置を用いて、上記所定の整数kと、上記群位数候補生成部が生成した素数rとに基づいて、素数rと1との差(r−1)を、整数kと2との最小公倍数LCM(k,2)で割った商である整数r1=(r−1)/LCM(k,2)を算出し、上記処理装置を用いて、上記群位数候補生成部が生成した素数rに基づいて、素数rと1との和(r+1)を4で割った商である整数r2=(r+1)/4を算出し、
上記素因数判定部は、上記処理装置を用いて、上記判定値算出部が算出した整数r1に基づいて、整数r1が所定の整数B1より小さい素因数を有するか否かを判定し、上記処理装置を用いて、上記判定値算出部が算出した整数r2に基づいて、整数r2が所定の整数B2より小さい素因数を有するか否かを判定し、整数r1が所定の整数B1より小さい素因数を有すると判定した場合、及び、整数r2が所定の整数B2よりも小さい素因数を有すると判定した場合に、上記群位数候補生成部が生成した素数rが安全な群位数でないと判定することを特徴とする。
この発明にかかる群パラメータ生成装置は、更に、以下の点を特徴とする。
上記群位数候補生成部は、上記処理装置を用いて、所定の整数kの倍数に1を加えた素数rを群位数の候補として生成し、
上記群位数安全性判定部は、剰余算出部と、判定値算出部と、素因数判定部とを有し、
上記剰余算出部は、上記処理装置を用いて、上記群位数候補生成部が生成した素数rに基づいて、素数rを4で割った余りを算出し、
上記判定値算出部は、上記剰余算出部が算出した余りが1である場合に、上記処理装置を用いて、上記所定の整数kと、上記群位数候補生成部が生成した素数rとに基づいて、素数rと1との差(r−1)を、整数kと4との最小公倍数LCM(k,4)で割った商である整数r1=(r−1)/LCM(k,4)を算出し、上記処理装置を用いて、上記群位数候補生成部が生成した素数rに基づいて、素数rと1との和(r+1)を2で割った商である整数r2=(r+1)/2を算出し、上記剰余算出部が算出した余りが3である場合に、上記処理装置を用いて、上記所定の整数kと、上記群位数候補生成部が生成した素数rとに基づいて、素数rと1との差(r−1)を、整数kと2との最小公倍数LCM(k,2)で割った商である整数r1=(r−1)/LCM(k,2)を算出し、上記処理装置を用いて、上記群位数候補生成部が生成した素数rに基づいて、素数rと1との和(r+1)を4で割った商である整数r2=(r+1)/4を算出し、
上記素因数判定部は、上記処理装置を用いて、上記判定値算出部が算出した整数r1に基づいて、整数r1が素数であるか否かを判定し、上記処理装置を用いて、上記判定値算出部が算出した整数r2に基づいて、整数r2が素数であるか否かを判定し、整数r1が素数でないと判定した場合、及び、整数r2が素数でないと判定した場合に、上記群位数候補生成部が生成した素数rが安全な群位数でないと判定することを特徴とする。
この実施の形態における暗号文生成装置によれば、IDベース暗号通信方式において、同一の平文Mを複数の受信者に対して通知する1つの暗号文Cを生成する処理の一部であるハッシュ値を算出する処理と、算出したハッシュ値に基づく処理とをそれぞれ1回で済ますことができるので、処理が効率化し、高速な暗号処理が可能になるという効果を奏する。
実施の形態1.
実施の形態1を、図1〜図10を用いて説明する。
図1は、この実施の形態におけるIDベース暗号通信システム800の全体構成の一例を示すシステム構成図である。
IDベース暗号通信システム800は、暗号パラメータ生成装置100、暗号文生成装置200、複数の暗号文受信装置301〜303を有する。
暗号文受信装置301〜303は、それぞれ受信者に対応し、対応する受信者を識別する受信者識別情報531〜533と対応づけられている。
受信者識別情報531〜533は、例えば、受信者の住所・氏名、メールアドレスなど、受信者を一意に識別することができる情報である。受信者識別情報531〜533は、IDベース暗号通信システム800において公開された情報500の一部であり、対応関係が正しいか否かを容易に検証可能な情報である。
暗号パラメータ生成装置100は、IDベース暗号通信システム800における暗号処理に必要な公開暗号パラメータ510を生成する。暗号パラメータ生成装置100は、生成した公開暗号パラメータ510を公開し、公開暗号パラメータ510は、IDベース暗号通信システム800において公開された情報500の一部となる。
また、暗号パラメータ生成装置100は、暗号文受信装置301〜303の受信者識別情報531〜533を入力し、入力した受信者識別情報531〜533に基づいて、暗号文受信装置301〜303の秘密鍵601〜603を生成する。暗号パラメータ生成装置100は、生成した秘密鍵601〜603を、それぞれの暗号文受信装置301〜303に対して、第三者に知られる可能性のない安全な方法で、秘密裏に通知する。例えば、暗号パラメータ生成装置100は生成した秘密鍵601〜603をそれぞれフレキシブルディスクなどの記憶媒体に記録し、秘密鍵601を記録したフレキシブルディスクを暗号文受信装置301に対応する受信者本人に直接手渡しして、受信者本人が暗号文受信装置301に秘密鍵601をインストールすることにより、暗号文受信装置301に秘密鍵601を通知する。秘密鍵602,603も同様にして、暗号文受信装置302,303に通知する。
暗号文生成装置200は、暗号文受信装置301〜303の全部または一部である複数の暗号文受信装置に対して、通知したいデータ(平文データ710)を入力する。ここでは、平文データ710を、暗号文受信装置301と暗号文受信装置303に対して通知したいが、暗号文受信装置302には通知したくない場合を例として説明する。
暗号文生成装置200は、暗号文受信装置301及び暗号文受信装置303に対して、通知データ720を通知する。
通知データ720は、例えば、メール通信やデータ放送などを介して、暗号文受信装置301及び暗号文受信装置303に通知される。したがって、通知データ720は、すべての受信者に対して同一のデータである。
通知データ720は公開を意図するものではないが、暗号文生成装置200が通知データ720を通知する経路は、例えば、インターネットやデータ放送など、第三者が容易に通知データ720を傍受可能な環境である。そのため、通知データ720は、平文データ710を暗号化した暗号化データ722を含む。
また、平文データ710は、例えば、動画データなど巨大なデータである場合もあるので、通知相手に関わらず、共通のセッション鍵Kを用いて暗号化する。通知相手ごとにセッション鍵Kを変えると、通知相手の数と同じ数の暗号化データ722を生成する必要があるので、暗号文生成装置200の暗号化処理の負荷が増え、通知経路のトラフィックを増大させてしまうからである。
通知データ720は、更に、平文データ710を暗号化したセッション鍵Kを暗号化した鍵暗号文C721を含む。
暗号文受信装置301は、鍵暗号文C721を復号することにより、セッション鍵Kを取得し、取得したセッション鍵Kで暗号化データ722を復号することにより、平文データ710を取得する。
暗号文生成装置200は、暗号パラメータ生成装置100が公開した公開暗号パラメータ510と、暗号文受信装置301及び暗号文受信装置303の公開された受信者識別情報531及び受信者識別情報533とを入力する。
暗号文生成装置200は、入力した情報に基づいて、IDベース暗号方式の暗号処理をし、セッション鍵Kと鍵暗号文C721とを生成する。
暗号文生成装置200は、生成したセッション鍵Kにより、平文データ710を暗号化して暗号化データ722を生成する。
暗号文生成装置200は、生成した鍵暗号文C721と暗号化データ722とを含む通知データ720を、暗号文受信装置301及び暗号文受信装置303に対して通知する。
鍵暗号文C721は、それぞれの通知相手に対応する部分を含む。鍵暗号文C721は、更に、通知相手にかかわらず共通の部分を含んでいてもよい。
暗号文受信装置301は、鍵暗号文C721のなかから、暗号文受信装置301に対応する部分(及び共通の部分)を取得し、秘密鍵601を用いて、IDベース暗号方式の復号処理をして、セッション鍵Kを取得する。
暗号文受信装置303も同様に、秘密鍵601を用いて、セッション鍵Kを取得する。
一方、鍵暗号文C721は、暗号文受信装置302に対応する部分を含まないので、暗号文受信装置302は、通知データ720を傍受したとしても、秘密鍵602で復号することはできず、セッション鍵Kを取得できない。したがって、暗号文受信装置302は、平文データ710を取得できない。
図2は、この実施の形態における暗号パラメータ生成装置100及び暗号文生成装置200及び暗号文受信装置301〜303の外観の一例を示す図である。
暗号パラメータ生成装置100及び暗号文生成装置200及び暗号文受信装置301〜303は、システムユニット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は、この実施の形態における暗号パラメータ生成装置100及び暗号文生成装置200及び暗号文受信装置301〜303のハードウェア資源の一例を示す図である。
暗号パラメータ生成装置100及び暗号文生成装置200及び暗号文受信装置301〜303は、プログラムを実行する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・Disc)等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
また、以下に述べる実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ROM913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。すなわち、プログラムは、以下に述べる「〜部」としてコンピュータを機能させるものである。あるいは、以下に述べる「〜部」の手順や方法をコンピュータに実行させるものである。
図4は、この実施の形態における暗号パラメータ生成装置100の機能ブロックの構成の一例を示すブロック構成図である。
暗号パラメータ生成装置100は、パラメータ設定部110と秘密鍵設定部130とを有する。
なお、暗号パラメータ生成装置100は、パラメータ設定部110を有するパラメータ設定装置と、秘密鍵設定部130を有する秘密鍵設定装置とに分かれていてもよい。その場合、1つのパラメータ設定装置に対して、複数の秘密鍵設定装置があってもよい。
パラメータ設定部110は、IDベース暗号通信システム800におけるIDベース暗号方式の暗号処理・復号処理の基礎となる公開暗号パラメータを生成し、公開する。
パラメータ設定部110は、群パラメータ記憶部111と、秘密情報生成部112と、公開パラメータ生成部113と、公開パラメータ公開部114と、秘密情報記憶部121と、パラメータ記憶部122とを有する。
群パラメータ記憶部111は、磁気ディスク装置920などの記憶装置を用いて、群パラメータを記憶する。
群パラメータとは、IDベース暗号方式における群演算を行う群を定義するパラメータを表わす情報である。
例えば、IDベース暗号方式における群演算を行う群として、楕円曲線上の点がなす群を用いる場合、群パラメータ記憶部111は、群パラメータとして、楕円曲線Y=X+aX+bを定義する係数a、係数bなどを記憶する。
なお、楕円曲線上の点がなす群における演算として、通常、楕円曲線上の点の加算が定義されている。群パラメータ記憶部111が記憶する群パラメータが表わす群は、楕円曲線上の点がなす群とは限らず、他の群であってもよい。ここでは、群パラメータ記憶部111が記憶する群パラメータが表わす群は、乗法群であるものとする。すなわち、群パラメータ記憶部111が記憶する群パラメータが表わす群の要素の間の演算として、乗法が定義されており、乗法について群をなしているものとする。したがって、以下の説明において、「乗法群」として言及する群には、楕円曲線上の点がなす群を含むものとし、「乗法・乗算」として言及する演算には、通常、楕円曲線上の点の加算と呼ばれているものを含むものとする。また、数式のなかで「乗法・乗算」を記述する場合には、「・」を用いる。
なお、群パラメータ記憶部111が記憶する群パラメータが表わす乗法群における乗算は、実用的な時間内に所定のアルゴリズムにより計算可能であるものとする。したがって、CPU911などの処理装置を用いて、乗算結果を算出することができる。
秘密情報生成部112は、CPU911などの処理装置を用いて、群パラメータ記憶部111が記憶した群パラメータを入力する。
秘密情報生成部112は、CPU911などの処理装置を用いて、秘密情報をランダムに生成する。
秘密情報生成部112は、CPU911などの処理装置を用いて、生成した秘密情報を出力する。
秘密情報とは、IDベース暗号方式において公開される公開暗号パラメータを生成するための基礎となる情報である。また、秘密情報は、秘密鍵を生成するための基礎ともなるものであり、絶対に第三者に知られてはならない。
秘密情報が表わす内容は、IDベース暗号方式として、どのような暗号方式を採用するかによって異なる。秘密情報は、例えば、群パラメータが表わす乗法群の位数rより小さく、1以上の整数を表わす情報である。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、群パラメータ記憶部111が記憶した群パラメータと、秘密情報生成部112が出力した秘密情報とを入力する。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、入力した群パラメータと、秘密情報とに基づいて、公開暗号パラメータを生成する。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、生成した公開暗号パラメータを出力する。
公開暗号パラメータが表わす内容は、IDベース暗号方式として、どのような暗号方式を採用するかによって異なる。公開暗号パラメータは、例えば、群パラメータが表わす乗法群の要素を表わす情報である。
公開暗号パラメータには、秘密情報が巧みに織り込まれており、暗号文生成装置200や暗号文受信装置301〜303は、公開暗号パラメータを利用することで、秘密情報を間接的に利用できるが、公開暗号パラメータから秘密情報を逆算することはできないようにする。
例えば、秘密情報は整数αを表わし、公開暗号パラメータは、群パラメータが表わす乗法群Gの要素gと、乗法群Gの要素g^αとを表わす情報を含む。なお、「^」は冪乗演算を示し、「g^α」はgのα乗、すなわちα個のgを互いに乗算することを意味する。乗法群GがDH問題(Diffie−Hellmann Problem)を解くことが困難な群であれば、gとg^αからαを求めることはできない。
このため、公開暗号パラメータを公開しても、秘密情報の秘密は守られる。
公開パラメータ公開部114は、CPU911などの処理装置を用いて、公開パラメータ生成部113が出力した公開暗号パラメータを入力する。
公開パラメータ公開部114は、CPU911などの処理装置を用いて、入力した公開パラメータを公開する。ここで、「公開」とは、暗号文生成装置200や暗号文受信装置301〜303に通知することを含むが、暗号文生成装置200や暗号文受信装置301〜303が、正しい公開暗号パラメータを取得でき、万が一改竄された公開暗号パラメータを取得した場合、それが改竄されたものであるか否かを容易に判別できるようにすることである。例えば、公開パラメータ公開部114は、公開暗号パラメータをホームページに掲載することにより、公開する。第三者の攻撃により、ホームページを改竄される可能性がないわけではないが、公開暗号パラメータ生成装置100がホームページをチェックすることにより、改竄を発見できる。また、複数のサーバ装置を用いて、同一の公開暗号パラメータを公開し、両者が一致するか否かを判断することにより、改竄を発見できるようにしてもよい。
秘密情報記憶部121は、CPU911などの処理装置を用いて、秘密情報生成部112が出力した秘密情報を入力する。
秘密情報記憶部121は、磁気ディスク装置920などの記憶装置を用いて、入力した秘密情報を記憶する。
パラメータ記憶部122は、CPU911などの処理装置を用いて、公開パラメータ生成部113が出力した公開暗号パラメータを入力する。
パラメータ記憶部122は、磁気ディスク装置920などの記憶装置を用いて、入力した公開暗号パラメータを記憶する。
秘密鍵設定部130は、IDベース暗号通信システム800におけるIDベース暗号方式の復号処理に必要な秘密鍵を生成し、それぞれの暗号文受信装置301〜303に秘密裏に通知する。
秘密鍵設定部130は、識別情報入力部131と、秘密鍵生成部132と、秘密鍵通知部133とを有する。
識別情報入力部131は、CPU911などの処理装置を用いて、受信者識別情報を入力する。識別情報入力部131が入力する受信者識別情報は、暗号文受信装置301〜303のいずれかに対応する受信者を識別する情報であり、公開された情報500の一部である。例えば、識別情報入力部131は、公開された情報500から、暗号文受信装置301に対応する受信者を識別する受信者識別情報531を入力する。
識別情報入力部131は、CPU911などの処理装置を用いて、入力した受信者識別情報が、正しく暗号文受信装置に対応する受信者を識別するものであるかを、公開された情報500に基づいて検証する。
検証の結果、問題がなければ、識別情報入力部131は、CPU911などの処理装置を用いて、入力した受信者識別情報を出力する。
秘密鍵生成部132は、CPU911などの処理装置を用いて、識別情報入力部131が出力した受信者識別情報と、秘密情報記憶部121が記憶した秘密情報と、パラメータ記憶部122が記憶した公開暗号パラメータとを入力する。
秘密鍵生成部132は、CPU911などの処理装置を用いて、入力した受信者識別情報と秘密情報と公開暗号パラメータとに基づいて、秘密鍵を生成する。
秘密鍵生成部132は、CPU911などの処理装置を用いて、生成した秘密鍵を出力する。
秘密鍵通知部133は、CPU911などの処理装置を用いて、秘密鍵生成部132が出力した秘密鍵を入力する。
秘密鍵通知部133は、CPU911などの処理装置を用いて、入力した秘密鍵を、対応する受信者の暗号文受信装置に対して、秘密裏に通知する。例えば、秘密鍵通知部133は、受信者識別情報531に基づいて秘密鍵生成部132が生成した秘密鍵601を、受信者識別情報531によって識別される受信者に対応する暗号文受信装置301に対して通知する。
このように、パラメータ設定部110が生成した公開暗号パラメータが公開され、秘密鍵設定部130が生成した秘密鍵601〜603がそれぞれの暗号文受信装置301〜303に通知されることにより、IDベース暗号方式による暗号通信の準備が整う。
図5は、この実施の形態における暗号文生成装置200の機能ブロックの構成の一例を示すブロック構成図である。
暗号文生成装置200は、鍵暗号化部290と、データ入力部251と、データ暗号化部252と、暗号文通知部261とを有する。
鍵暗号化部290は、CPU911などの処理装置を用いて、セッション鍵Kを生成するとともに、鍵暗号文Cを生成する。
鍵暗号文Cは、鍵暗号化部290が生成したセッション鍵Kを暗号化したものである。鍵暗号文Cは、暗号文Cの一例である。
鍵暗号化部290は、暗号パラメータ記憶部210と、セッション鍵生成部221と、乱数生成部222と、平文入力部231と、受信者識別入力部232と、暗号文主文生成部240と、ハッシュ値算出部244と、暗号文検証文生成部245と、暗号文結合部246とを有する。
暗号パラメータ記憶部210は、磁気ディスク装置920などの記憶装置を用いて、暗号パラメータ生成装置100が公開した公開暗号パラメータを記憶する。
セッション鍵生成部221は、CPU911などの処理装置を用いて、セッション鍵Kをランダムに生成する。セッション鍵Kは、平文データ710を暗号化するための鍵であり、例えば、所定の長さのビット列である。平文データ710を暗号化する暗号方式は、例えば、AES(Advanced Encryption Standard)やMISTY(登録商標)などの共通鍵暗号方式である。
セッション鍵生成部221は、CPU911などの処理装置を用いて、生成したセッション鍵Kを出力する。
平文入力部231は、CPU911などの処理装置を用いて、セッション鍵生成部221が出力したセッション鍵Kを、平文Mとして入力する。
平文入力部231は、CPU911などの処理装置を用いて、入力した平文Mを出力する。
受信者識別入力部232は、CPU911などの処理装置を用いて、平文データ710を送信すべき暗号文受信装置に対応する受信者の受信者識別情報を入力する。例えば、暗号文受信装置301と暗号文受信装置303とに平文データ710を送信したい場合であれば、受信者識別入力部232は、暗号文受信装置301に対応する受信者の受信者識別情報531と、暗号文受信装置303に対応する受信者の受信者識別情報533とを入力する。
以下、平文データ710を送信したい相手の数をnと記述する。また、複数の受信者識別情報を区別するため、添え字を用いて、受信者識別情報ID、受信者識別情報ID、…、受信者識別情報IDのように記述する。n個の受信者識別情報ID、ID、…、IDをまとめて、「受信者識別情報ID(iは、1以上n以下の整数。)」のように記述する場合もある。以下の説明において、添え字「i」は、原則として、n人の受信者それぞれに対応するものを示す。
受信者識別入力部232は、n人の受信者にそれぞれ対応するn個の受信者識別情報ID(iは、1以上n以下の整数。)を入力する。
受信者識別入力部232は、CPU911などの処理装置を用いて、入力したn個の受信者識別情報IDを出力する。
なお、受信者の数nは、あらかじめ(例えば、公開暗号パラメータ生成時に)定まっているものではなく、実際にデータを送信するときに定まるものである。
IDベース暗号通信システム800は、任意の数の受信者に対してデータを送信できる暗号通信システムである。そのときの必要に応じて、n=1かもしれないし、n=100かもしれない。
暗号文生成装置200は、例えば、受信者識別入力部232が受信者識別情報を入力したときに受信者の数nを知る。暗号文生成装置200は、nが1以上のいずれの数であっても、1つの鍵暗号文C(と暗号化データ)を生成する。
また、受信者識別入力部232が入力する複数の受信者識別情報は、すべて互いに異なるものとする。あるいは、受信者識別入力部232が、入力した複数の受信者識別情報のなかに重複するものがあるかを判別し、重複する受信者識別情報を1つにまとめて、重複を排除することとしてもよい。
乱数生成部222は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータを入力する。
乱数生成部222は、CPU911などの処理装置を用いて、n個の乱数をランダムに生成する。乱数生成部222が生成する乱数は、例えば、入力した公開暗号パラメータが表わす乗法群の位数rより小さく1以上の整数sである。
また、乱数生成部222が生成するn個の乱数は、n人の受信者それぞれに対応づけられる。すなわち、乱数生成部222は、n人の受信者にそれぞれ対応するn個の乱数を生成する。
乱数生成部222は、生成したn個の乱数を表わす情報を出力する。
暗号文主文生成部240は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、平文入力部231が出力した平文Mと、受信者識別入力部232が出力したn個の受信者識別情報と、乱数生成部222が出力したn個の乱数を表わす情報とを入力する。
暗号文主文生成部240は、CPU911などの処理装置を用いて、入力した情報に基づいて、n人の受信者にそれぞれ対応するn個の暗号文主文CB(iは、1以上n以下の整数。)を生成する。
暗号文主文生成部240は、CPU911などの処理装置を用いて、生成したn個の暗号文主文CBを出力する。
暗号文主文とは、平文M(セッション鍵K)を、IDベース暗号方式により、各受信者の受信者識別情報IDを用いて各受信者向けに暗号化したものである。n個の暗号文主文CBは、それぞれが1人の受信者に対応する。
なお、暗号文主文は、いくつかの部分に分節できるものであってもよい。暗号文主文を分節した部分のなかには、すべての受信者に共通する部分があってもよい。暗号文主文を分節した部分のうちすべての受信者に共通する部分は、1つにまとめることにより、n個の暗号文主文CBの全体を短くしてもよい。
暗号文主文生成部240は、第一暗号文生成部241と、第二暗号文生成部242と、第三暗号文生成部243とを有する。
暗号文主文生成部240が出力する暗号文主文CBは、第一暗号文生成部241が出力する第一暗号文C1と、第二暗号文生成部242が出力する第二暗号文C2と、第三暗号文生成部243が出力する第三暗号文C3とから構成される。
暗号文主文CBは、第一暗号文C1と第二暗号文C2と第三暗号文C3とを結合したものであってもよいし、第一暗号文C1と第二暗号文C2と第三暗号文C3とを組としたものであってもよい。
なお、この例では、暗号文主文CBが3つの暗号文から構成されるが、これは一例であって、他の構成であってもよい。
例えば、暗号文主文CBは、3つの暗号文のほかに、受信者識別情報IDを含んでいてもよい。
ここで、「含む」とは、例えば、暗号文主文CBが、受信者識別情報IDと第一暗号文C1と第二暗号文C2と第三暗号文C3とを結合したものである場合など、その暗号文主文CBが対応する受信者の受信者識別情報IDを容易に判別でき、必要なら検証できる形式で含むことをいう。
第一暗号文生成部241は、CPU911などの処理装置を用いて、平文入力部231が出力した平文Mと、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、乱数生成部222が出力したn個の乱数を表わす情報とを入力する。
第一暗号文生成部241は、CPU911などの処理装置を用いて、入力した情報に基づいて、n人の受信者にそれぞれ対応するn個の第一暗号文C1(iは、1以上n以下の整数。)を生成する。
第一暗号文生成部241は、CPU911などの処理装置を用いて、生成したn個の第一暗号文C1を出力する。
第二暗号文生成部242は、CPU911などの処理装置を用いて、受信者識別入力部232が出力したn個の受信者識別情報IDと、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、乱数生成部222が出力したn個の乱数を表わす情報とを入力する。
第二暗号文生成部242は、CPU911などの処理装置を用いて、入力した情報に基づいて、n人の受信者にそれぞれ対応するn個の第二暗号文C2(iは、1以上n以下の整数。)を生成する。
第二暗号文生成部242は、CPU911などの処理装置を用いて、生成したn個の第二暗号文C2を出力する。
第三暗号文生成部243は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、乱数生成部222が出力したn個の乱数を表わす情報とを入力する。
第三暗号文生成部243は、CPU911などの処理装置を用いて、入力した情報に基づいて、n人の受信者にそれぞれ対応するn個の第三暗号文C3(iは、1以上n以下の整数。)を生成する。
第三暗号文生成部243は、CPU911などの処理装置を用いて、生成したn個の第三暗号文C3を出力する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、暗号文主文生成部240が生成したn個の暗号文主文CB(すなわち、第一暗号文生成部241が生成したn個の第一暗号文C1と、第二暗号文生成部242が生成したn個の第二暗号文C2と、第三暗号文生成部243が生成したn個の第三暗号文C3)とを入力する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、入力したn個の暗号文主文CBに基づいて、1つのハッシュ値Hを算出する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、算出した1つのハッシュ値Hを出力する。
ハッシュ値算出部244が算出するハッシュ値Hは、使用するIDベース暗号方式により異なる。例えば、ハッシュ値Hは、公開暗号パラメータによって定められた所定の長さのビット列である。あるいは、ハッシュ値Hは、公開暗号パラメータが表わす乗法群の位数r未満、1以上の整数を表わす情報である。
また、公開暗号パラメータにおいて、ハッシュ値Hを算出するためのハッシュ関数HFを定義しておいてもよい。その場合、ハッシュ値算出部244は、公開暗号パラメータが表わすハッシュ関数HFにより、ハッシュ値Hを算出する。
ハッシュ値算出部244は、n個の暗号文主文CBすべてに基づいて1つのハッシュ値Hを算出する。例えば、ハッシュ値算出部244は、n個の暗号文主文CBをすべて結合して1つの結合暗号文を生成し、生成した1つの結合暗号文のハッシュ値Hを算出する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、ハッシュ値算出部244が出力したハッシュ値Hと、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、乱数生成部222が出力したn個の乱数を表わす情報とを入力する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、入力した情報に基づいて、n人の受信者にそれぞれ対応するn個の暗号文検証文CC(iは、1以上n以下の整数。)を生成する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、生成した暗号文検証文CCを出力する。
なお、この例では、暗号文検証文生成部245が生成する暗号文検証文の数を、n個としているが、受信者に関わらず共通の1つの暗号文検証文を生成する構成としてもよい。
暗号文結合部246は、CPU911などの処理装置を用いて、暗号文主文生成部240が出力したn個の暗号文主文CB(すなわち、第一暗号文生成部241が出力したn個の第一暗号文C1と、第二暗号文生成部242が出力したn個の第二暗号文C2と、第三暗号文生成部243が出力したn個の第三暗号文C3)と、暗号文検証文生成部245が出力した暗号文検証文CCとを入力する。
暗号文結合部246は、CPU911などの処理装置を用いて、入力したn個の第一暗号文C1と、n個の第二暗号文C2と、n個の第三暗号文C3と、暗号文検証文CCとに基づいて、1つの鍵暗号文Cを生成する。例えば、暗号文結合部246は、CPU911などの処理装置を用いて、入力したn個の第一暗号文C1と、n個の第二暗号文C2と、n個の第三暗号文C3と、暗号文検証文CCとを結合して、1つの鍵暗号文Cとする。
暗号文結合部246が結合した1つの鍵暗号文Cは、n人の受信者に対応する暗号文受信装置すべてに対して等しく送信されるものである。
なお、結合した1つの鍵暗号文Cのうち、どの部分がどの受信者に対応する部分であるかは、あらかじめ定められた結合の順序などによって表わされ、暗号文受信装置301〜303は、鍵暗号文Cから、自分に対応する部分を容易に抽出できるものとする。
暗号文結合部246は、CPU911などの処理装置を用いて、生成した1つの鍵暗号文Cを出力する。
データ入力部251は、CPU911などの処理装置を用いて、平文データ710を入力する。
データ入力部251は、CPU911などの処理装置を用いて、入力した平文データ710を出力する。
データ暗号化部252は、CPU911などの処理装置を用いて、データ入力部251が出力した平文データ710と、セッション鍵生成部221が出力したセッション鍵Kとを入力する。
データ暗号化部252は、CPU911などの処理装置を用いて、入力した平文データ710を、入力したセッション鍵Kにより暗号化し、暗号化データとする。
データ暗号化部252は、CPU911などの処理装置を用いて、生成した暗号化データを出力する。
暗号文通知部261は、CPU911などの処理装置を用いて、暗号文結合部246が出力した1つの鍵暗号文Cと、データ暗号化部252が出力した暗号化データとを入力する。
暗号文通知部261は、CPU911などの処理装置を用いて、入力した鍵暗号文Cと、暗号化データ722とを含む通知データ720を生成する。
暗号文通知部261は、CPU911などの処理装置を用いて、生成した通知データ720を、通知相手である複数の暗号文受信装置に通知する。
通知データ720は、例えば、メール通信において、受信者を複数指定して送信することにより、複数の暗号文受信装置に通知される。通知データ720は、受信者ごとに異なるものではなく、すべての受信者に共通である。
図6は、この実施の形態における暗号文受信装置301の機能ブロックの構成の一例を示すブロック構成図である。
暗号文受信装置301は、暗号文受信部351と、鍵復号部390と、データ復号部352とを有する。
なお、暗号文受信装置302、暗号文受信装置303のブロック構成も暗号文受信装置301と同様である。
暗号文受信部351は、CPU911などの処理装置を用いて、暗号文生成装置200が通知した通知データ720を受信する。
暗号文受信部351は、CPU911などの処理装置を用いて、受信した通知データ720に含まれる1つの鍵暗号文Cと、暗号化データとを取得する。
暗号文受信部351は、CPU911などの処理装置を用いて、取得した1つの鍵暗号文Cと、暗号化データとを出力する。
鍵復号部390は、暗号文受信部351が出力した鍵暗号文Cを復号し、暗号化データを復号するためのセッション鍵を取得する。
鍵復号部390は、公開パラメータ記憶部310と、秘密鍵記憶部323と、暗号文受信部351と、暗号文分解部346と、検証ハッシュ値算出部344と、暗号文検証部345と、暗号文復号部341と、データ復号部352とを有する。
公開パラメータ記憶部310は、磁気ディスク装置920などの記憶装置を用いて、暗号パラメータ生成装置100が公開した公開暗号パラメータを記憶する。
秘密鍵記憶部323は、磁気ディスク装置920などの記憶装置を用いて、暗号パラメータ生成装置100が通知した秘密鍵を記憶する。
暗号文分解部346は、CPU911などの処理装置を用いて、暗号文受信部351が出力した1つの鍵暗号文Cを入力する。
暗号文分解部346は、CPU911などの処理装置を用いて、入力した1つの鍵暗号文Cを分解し、n個の暗号文主文CB(すなわち、n個の第一暗号文C1と、n個の第二暗号文C2と、n個の第三暗号文C3)と、暗号文検証文CCとを取得する。
以下、n人の受信者に対応するn個の暗号文主文CBのうち、暗号文受信装置301が対応する受信者に対応する第二暗号文を、対応暗号文主文CBIDと呼ぶ。第一暗号文、第二暗号文、第三暗号文、暗号文検証文についても同様である。
暗号文分解部346は、CPU911などの処理装置を用いて、n個の暗号文主文CBのなかから、対応暗号文主文CBID(すなわち、対応第一暗号文C1IDと、対応第二暗号文C2IDと、対応第三暗号文C3ID)を取得する。
同様に、暗号文分解部346は、CPU911などの処理装置を用いて、対応暗号文検証文CCIDを取得する。
なお、暗号文検証文が受信者に関わらず共通の1つの暗号文検証文である場合には、暗号文分解部346が取得する対応暗号文検証文CCIDは、暗号文検証文そのものである。
暗号文分解部346は、CPU911などの処理装置を用いて、取得したn個の暗号文主文CBと、対応暗号文主文CBIDと、対応暗号文検証文CCIDとを出力する。
なお、n個の暗号文主文CBのなかに、どの暗号文主文がどのIDに対応する対応暗号文主文CBIDであるかを示す情報が含まれている場合には、暗号文分解部346が、対応暗号文主文CBIDを取得しなくてもよい。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、暗号文分解部346が出力したn個の暗号文主文CBと、公開パラメータ記憶部310が記憶した公開暗号パラメータとを入力する。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、暗号文生成装置200のハッシュ値算出部244がハッシュ値Hを算出したのと同様の方式により、検証ハッシュ値H’を算出する。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、算出した検証ハッシュ値H’を出力する。
検証ハッシュ値算出部344は、入力したn個の暗号文主文CBに基づいて、ハッシュ値算出部244と同様の方式により、1つの検証ハッシュ値H’を算出する。
例えば、検証ハッシュ値算出部344は、入力したn個の暗号文主文CBをすべて結合した検証結合暗号文に基づいて、検証ハッシュ値H’を算出する。
暗号文検証部345は、CPU911などの処理装置を用いて、暗号文分解部346が出力した対応暗号文主文CBIDと、対応暗号文検証文CCIDと、検証ハッシュ値算出部344が出力した検証ハッシュ値H’と、公開パラメータ記憶部310が記憶した公開暗号パラメータと、秘密鍵記憶部323が記憶した秘密鍵とを入力する。
暗号文検証部345は、CPU911などの処理装置を用いて、入力した情報に基づいて、検証情報を生成する。
暗号文検証部345は、CPU911などの処理装置を用いて、生成した検証情報と、入力した対応暗号文検証文CCIDとに基づいて、暗号文受信部351が受信した1つの鍵暗号文Cに整合性があるか否かを判定する。
例えば、暗号文分解部346は、生成した検証情報と、入力した対応暗号文検証文CCIDとが一致する場合に、暗号文受信部351が受信した1つの鍵暗号文Cに整合性があると判定する。
あるいは、暗号文検証部345は、入力した対応暗号文検証文CCID(及び公開暗号パラメータや秘密鍵)に基づいて、もう一つの検証情報を生成し、生成した2つの検証情報が一致する場合に、暗号文受信部351が受信した1つの鍵暗号文Cに整合性があると判定してもよい。
暗号文検証部345は、CPU911などの処理装置を用いて、判定した判定結果を表わす情報を出力する。
暗号文復号部341は、CPU911などの処理装置を用いて、暗号文分解部346が出力した判定結果を表わす情報と、暗号文分解部346が出力した対応暗号文主文CBIDと、公開パラメータ記憶部310が記憶した公開暗号パラメータと、秘密鍵記憶部323が記憶した秘密鍵とを入力する。
暗号文復号部341は、CPU911などの処理装置を用いて、入力した情報に基づいて、暗号文受信部351が受信した1つの鍵暗号文Cに整合性があると暗号文検証部345が判定した場合に、平文Mを復元する。
暗号文復号部341は、CPU911などの処理装置を用いて、復元した平文Mを出力する。
データ復号部352は、CPU911などの処理装置を用いて、暗号文復号部341が出力した平文Mと、暗号文受信部351が出力した暗号化データとを入力し、入力した平文Mを、セッション鍵K’とする。
データ復号部352は、CPU911などの処理装置を用いて、入力した暗号化データを、入力したセッション鍵K’により復号して、復号データとする。
データ復号部352は、CPU911などの処理装置を用いて、復号した復号データを出力する。
次に、動作について説明する。
図7は、この実施の形態における暗号パラメータ生成装置100が公開暗号パラメータを設定するパラメータ設定処理の流れの一例を示すフローチャート図である。
秘密情報生成工程S11において、秘密情報生成部112は、CPU911などの処理装置を用いて、群パラメータ記憶部111が記憶した群パラメータを入力する。
秘密情報生成部112は、CPU911などの処理装置を用いて、入力した群パラメータに基づいて、秘密情報をランダムに生成する。
秘密情報生成部112は、CPU911などの処理装置を用いて、生成した秘密情報を出力する。
秘密情報記憶部121は、CPU911などの処理装置を用いて、秘密情報生成部112が出力した秘密情報を入力する。
秘密情報記憶部121は、磁気ディスク装置920などの記憶装置を用いて、入力した秘密情報を記憶する。
暗号パラメータ生成工程S12において、公開パラメータ生成部113は、CPU911などの処理装置を用いて、群パラメータ記憶部111が記憶した群パラメータを入力する。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、秘密情報生成工程S11で秘密情報生成部112が出力した秘密情報を入力する。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、入力した群パラメータと、入力した秘密情報とに基づいて、公開暗号パラメータを生成する。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、生成した公開暗号パラメータを出力する。
パラメータ記憶部122は、CPU911などの処理装置を用いて、公開パラメータ生成部113が出力した公開暗号パラメータを入力する。
パラメータ記憶部122は、磁気ディスク装置920などの記憶装置を用いて、入力した公開暗号パラメータを記憶する。
暗号パラメータ公開工程S13において、公開パラメータ公開部114は、CPU911などの処理装置を用いて、暗号パラメータ生成工程S12で公開パラメータ生成部113が出力した公開暗号パラメータを入力する。
公開パラメータ公開部114は、CPU911などの処理装置を用いて、入力した公開暗号パラメータを公開する。
公開パラメータ公開部114が公開した公開暗号パラメータは、暗号文生成装置200及び暗号文受信装置301〜303が取得し、暗号パラメータ記憶部210及び公開パラメータ記憶部310が磁気ディスク装置920などの記憶装置を用いて記憶する。
パラメータ設定処理は、IDベース暗号通信システム800の運用開始前に1回だけ実行すればよい処理である。しかし、暗号通信の安全を保つため、定期的にパラメータ設定処理を実行して、公開暗号パラメータを変えてもよいし、暗号強度を高めるため、使用する乗法群を変更して、パラメータ設定処理を実行してもよい。
図8は、この実施の形態における暗号パラメータ生成装置100が秘密鍵を設定する秘密鍵設定処理の流れの一例を示すフローチャート図である。
識別入力工程S21において、識別情報入力部131は、CPU911などの処理装置を用いて、受信者識別情報IDを入力する。
識別情報入力部131は、CPU911などの処理装置を用いて、入力した受信者識別情報IDを出力する。
秘密鍵生成工程S22において、秘密鍵生成部132は、CPU911などの処理装置を用いて、S21で識別情報入力部131が出力した受信者識別情報IDを入力する。
秘密鍵生成部132は、CPU911などの処理装置を用いて、秘密情報記憶部121が記憶した秘密情報を入力する。
秘密鍵生成部132は、CPU911などの処理装置を用いて、パラメータ記憶部122が記憶した公開暗号パラメータを入力する。
秘密鍵生成部132は、CPU911などの処理装置を用いて、入力した秘密情報と、入力した公開暗号パラメータと、入力した受信者識別情報IDとに基づいて、秘密鍵dIDを生成する。
秘密鍵生成部132は、CPU911などの処理装置を用いて、生成した秘密鍵dIDを出力する。
秘密鍵通知工程S23において、秘密鍵通知部133は、CPU911などの処理装置を用いて、S21で識別情報入力部131が出力した受信者識別情報IDを入力する。
秘密鍵通知部133は、CPU911などの処理装置を用いて、S22で秘密鍵生成部132が出力した秘密鍵dIDを入力する。
秘密鍵通知部133は、CPU911などの処理装置を用いて、入力した受信者識別情報IDによって識別される受信者に対応する暗号文受信装置に対して、入力した秘密鍵dIDを秘密裏に通知する。
秘密鍵通知部133が通知した秘密鍵dIDは、通知された暗号文受信装置が取得し、秘密鍵記憶部323が磁気ディスク装置920などの記憶装置を用いて記憶する。
秘密鍵設定処理は、IDベース暗号通信システム800内の暗号文受信装置それぞれに対応する秘密鍵を設定する処理である。暗号パラメータ生成装置100は、あらかじめ秘密鍵を生成し、IDベース暗号通信システム800内のすべての暗号文受信装置301〜303に対して秘密鍵を通知しておいてよいし、暗号文受信装置301〜303からの要求に応じて、実行してもよい。秘密鍵設定処理の実行は、暗号文生成装置200が通知データ720を通知した後であってもよい。
図9は、この実施の形態における暗号文生成装置200が暗号文を生成する暗号文生成処理の流れの一例を示すフローチャート図である。
平文データ入力工程S31において、データ入力部251は、CPU911などの処理装置を用いて、n個の暗号文受信装置に対して通知すべき平文データを入力する。
データ入力部251は、CPU911などの処理装置を用いて、入力した平文データを出力する。
受信者識別入力工程S32において、受信者識別入力部232は、CPU911などの処理装置を用いて、平文データ入力工程S31でデータ入力部251が入力した平文データを通知すべきn個の暗号文受信装置に対応するn人の受信者をそれぞれ識別するn個の受信者識別情報ID(iは、1以上n以下の整数)を入力する。
受信者識別入力部232は、CPU911などの処理装置を用いて、入力したn個の受信者識別情報IDを出力する。
セッション鍵生成工程S33において、セッション鍵生成部221は、CPU911などの処理装置を用いて、セッション鍵Kをランダムに生成する。
セッション鍵生成部221は、CPU911などの処理装置を用いて、生成したセッション鍵Kを出力する。
平文入力部231は、CPU911などの処理装置を用いて、セッション鍵生成部221が出力したセッション鍵Kを入力する。
平文入力部231は、CPU911などの処理装置を用いて、入力したセッション鍵Kを、平文Mとして出力する。
乱数生成工程S34において、乱数生成部222は、CPU911などの処理装置を用いて、n人の受信者にそれぞれ対応するn個の乱数をランダムに生成する。
乱数生成部222は、CPU911などの処理装置を用いて、生成したn個の乱数を表わす情報を出力する。
第一暗号文生成工程S35において、第一暗号文生成部241は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータを入力する。
第一暗号文生成部241は、CPU911などの処理装置を用いて、セッション鍵生成工程S33で平文入力部231が出力した平文Mを入力する。
第一暗号文生成部241は、CPU911などの処理装置を用いて、乱数生成工程S34で乱数生成部222が出力したn個の乱数を表わす情報を入力する。
第一暗号文生成部241は、CPU911などの処理装置を用いて、入力した情報に基づいて、n人の受信者に対応するn個の第一暗号文C1(iは、1以上n以下の整数)を生成する。
第一暗号文生成部241は、CPU911などの処理装置を用いて、生成したn個の第一暗号文C1を出力する。
第二暗号文生成工程S36において、第二暗号文生成部242は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータを入力する。
第二暗号文生成部242は、CPU911などの処理装置を用いて、受信者識別入力工程S32で受信者識別入力部232が出力したn個の受信者識別情報IDを入力する。
第二暗号文生成部242は、CPU911などの処理装置を用いて、乱数生成工程S34で乱数生成部222が出力したn個の乱数を表わす情報を入力する。
第二暗号文生成部242は、CPU911などの処理装置を用いて、入力した情報に基づいて、n人の受信者にそれぞれ対応するn個の第二暗号文C2(iは、1以上n以下の整数)を生成する。
第二暗号文生成部242は、CPU911などの処理装置を用いて、生成したn個の第二暗号文C2を出力する。
第三暗号文生成工程S37において、第三暗号文生成部243は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータを入力する。
第三暗号文生成部243は、CPU911などの処理装置を用いて、乱数生成工程S34で乱数生成部222が出力したn個の乱数を表わす情報を入力する。
第三暗号文生成部243は、CPU911などの処理装置を用いて、入力した情報に基づいて、n人の受信者にそれぞれ対応するn個の第三暗号文C3(iは、1以上n以下の整数)を生成する。
第三暗号文生成部243は、CPU911などの処理装置を用いて、生成したn個の第三暗号文C3を出力する。
ハッシュ値算出工程S38において、ハッシュ値算出部244は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータを入力する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、第一暗号文生成工程S35で第一暗号文生成部241が出力したn個の第一暗号文C1を入力する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、第二暗号文生成工程S36で第二暗号文生成部242が出力したn個の第二暗号文C2を入力する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、第三暗号文生成工程S37で第三暗号文生成部243が出力したn個の第三暗号文C3を入力する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、入力した情報に基づいて、ハッシュ値Hを算出する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、算出したハッシュ値Hを出力する。
暗号文検証文生成工程S39において、暗号文検証文生成部245は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータを入力する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、乱数生成工程S34で乱数生成部222が出力したn個の乱数を表わす情報を入力する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、ハッシュ値算出工程S38でハッシュ値算出部244が出力したハッシュ値Hを入力する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、入力した情報に基づいて、n人の受信者に対応するn個の暗号文検証文CC(iは、1以上n以下の整数)を生成する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、生成したn個の暗号文検証文CCを出力する。
暗号文結合工程S40において、暗号文結合部246は、CPU911などの処理装置を用いて、第一暗号文生成工程S35で第一暗号文生成部241が出力したn個の第一暗号文C1を入力する。
暗号文結合部246は、CPU911などの処理装置を用いて、第二暗号文生成工程S36で第二暗号文生成部242が出力したn個の第二暗号文C2を入力する。
暗号文結合部246は、CPU911などの処理装置を用いて、第三暗号文生成工程S37で第三暗号文生成部243が出力したn個の第三暗号文C3を入力する。
暗号文結合部246は、CPU911などの処理装置を用いて、暗号文検証文生成工程S39で暗号文検証文生成部245が出力したn個の暗号文検証文CCを入力する。
暗号文結合部246は、CPU911などの処理装置を用いて、入力したn個の第一暗号文C1と、入力したn個の第二暗号文C2と、入力したn個の第三暗号文C3と、入力したn個の暗号文検証文CCとを結合して、1つの鍵暗号文Cとする。
暗号文結合部246は、CPU911などの処理装置を用いて、結合した1つの鍵暗号文Cを出力する。
データ暗号化工程S41において、データ暗号化部252は、CPU911などの処理装置を用いて、平文データ入力工程S31でデータ入力部251が出力した平文データを入力する。
データ暗号化部252は、CPU911などの処理装置を用いて、セッション鍵生成工程S33でセッション鍵生成部221が出力したセッション鍵Kを入力する。
データ暗号化部252は、CPU911などの処理装置を用いて、入力したセッション鍵Kにより、入力した平文データを暗号化して、暗号化データとする。
データ暗号化部252は、CPU911などの処理装置を用いて、暗号化した暗号化データを出力する。
暗号文通知工程S42において、暗号文通知部261は、CPU911などの処理装置を用いて、受信者識別入力工程S32で受信者識別入力部232が出力したn個の受信者識別情報IDを入力する。
暗号文通知部261は、CPU911などの処理装置を用いて、暗号文結合工程S40で暗号文結合部246が出力した1つの鍵暗号文Cを入力する。
暗号文通知部261は、CPU911などの処理装置を用いて、データ暗号化工程S41でデータ暗号化部252が出力した暗号化データを入力する。
暗号文通知部261は、CPU911などの処理装置を用いて、入力した1つの鍵暗号文Cと、入力した暗号化データとを含むデータを生成して、通知データとする。
暗号文通知部261は、CPU911などの処理装置を用いて、入力したn個の受信者識別情報IDによって識別される受信者に対応する暗号文受信装置に対して、生成した通知データを通知する。
図10は、この実施の形態における暗号文受信装置301〜303が暗号文を受信する暗号文受信処理の流れの一例を示すフローチャート図である。
通知データ受信工程S51において、暗号文受信部351は、CPU911などの処理装置を用いて、暗号文生成装置200が通知した通知データを受信する。
暗号文受信部351は、CPU911などの処理装置を用いて、受信した通知データに含まれる1つの鍵暗号文Cと、暗号化データとを取得する。
暗号文受信部351は、CPU911などの処理装置を用いて、取得した1つの鍵暗号文Cと、暗号化データとを出力する。
暗号文分解工程S52において、暗号文分解部346は、CPU911などの処理装置を用いて、通知データ受信工程S51で暗号文受信部351が出力した1つの鍵暗号文Cを入力する。
暗号文分解部346は、CPU911などの処理装置を用いて、入力した1つの鍵暗号文Cに基づいて、n個の第一暗号文C1と、n個の第二暗号文C2と、n個の第三暗号文C3と、n個の暗号文検証文CCとを取得する。
暗号文分解部346は、CPU911などの処理装置を用いて、取得したn個の第一暗号文C1と、n個の第二暗号文C2と、n個の第三暗号文C3と、n個の暗号文検証文CCとを出力する。
また、暗号文分解部346は、CPU911などの処理装置を用いて、対応第一暗号文C1IDと、対応第二暗号文C2IDと、対応第三暗号文C3IDと、対応暗号文検証文CCIDとを取得する。
暗号文分解部346は、CPU911などの処理装置を用いて、取得した対応第一暗号文C1IDと、対応第二暗号文C2IDと、対応第三暗号文C3IDと、対応暗号文検証文CCIDとを出力する。
検証ハッシュ値算出工程S53において、検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、公開パラメータ記憶部310が記憶した公開暗号パラメータを入力する。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、暗号文分解工程S52で暗号文分解部346が出力したn個の第一暗号文C1と、n個の第二暗号文C2と、n個の第三暗号文C3とを入力する。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、入力した情報に基づいて、検証ハッシュ値H’を算出する。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、算出した検証ハッシュ値H’を出力する。
暗号文検証工程S54において、暗号文検証部345は、CPU911などの処理装置を用いて、公開パラメータ記憶部310が記憶した公開暗号パラメータを入力する。
暗号文検証部345は、CPU911などの処理装置を用いて、秘密鍵記憶部323が記憶した秘密鍵を入力する。
暗号文検証部345は、CPU911などの処理装置を用いて、暗号文分解工程S52で暗号文分解部346が出力した対応第二暗号文C2IDと、対応第三暗号文C3IDと、対応暗号文検証文CCIDとを入力する。
暗号文検証部345は、CPU911などの処理装置を用いて、検証ハッシュ値算出工程S53で検証ハッシュ値算出部344が出力した検証ハッシュ値H’を入力する。
暗号文検証部345は、CPU911などの処理装置を用いて、入力した情報に基づいて、検証情報を生成する。
暗号文検証部345は、CPU911などの処理装置を用いて、生成した検証情報と、入力した対応暗号文検証文CCIDとに基づいて、暗号文受信部351が受信した1つの鍵暗号文Cに整合性があるか否かを判定する。
整合性があると判定した場合、暗号文復号工程S55へ進む。
整合性がないと判定した場合、暗号文受信処理を終了する。
暗号文復号工程S55において、暗号文復号部341は、CPU911などの処理装置を用いて、公開パラメータ記憶部310が記憶した公開暗号パラメータを入力する。
暗号文復号部341は、CPU911などの処理装置を用いて、秘密鍵記憶部323が記憶した秘密鍵を入力する。
暗号文復号部341は、CPU911などの処理装置を用いて、暗号文分解工程S52で暗号文分解部346が出力した対応第一暗号文C1IDと、対応第二暗号文C2IDと、対応第三暗号文C3IDとを入力する。
暗号文復号部341は、CPU911などの処理装置を用いて、入力した情報に基づいて、平文Mを復元する。
暗号文復号部341は、CPU911などの処理装置を用いて、復元した平文Mを出力する。
データ復号工程S56において、データ復号部352は、CPU911などの処理装置を用いて、通知データ受信工程S51で暗号文受信部351が出力した暗号化データを入力する。
データ復号部352は、CPU911などの処理装置を用いて、暗号文復号工程S55で暗号文復号部341が出力した平文Mを、セッション鍵K’として入力する。
データ復号部352は、CPU911などの処理装置を用いて、入力したセッション鍵K’により、入力した暗号化データを復号して、復号データとする。
データ復号部352は、CPU911などの処理装置を用いて、復号した復号データを出力する。
以上のようにして、平文データを通知したい受信者だけが、セッション鍵Kを復元できるので、暗号化データを復号できる。
以下、この実施の形態におけるIDベース暗号通信システム800の安全性について議論する。
まず、IDベース暗号方式の複数ユーザにおける安全性として、MU−IND−ID−CCA2安全性を以下のように定義する。
ここで、「MU−IND−ID−CCA2安全性」とは、複数ユーザ(Multi−User)において、ターゲットIDを適応的に選択可能な攻撃者に対する安全性を意味する。
暗号システムΠは、PKG(Private Key Generator)用鍵生成機能Sと、秘密鍵導出機能Xと、暗号化機能Cと、復号機能Dとを有するIDベース暗号通信システムである。
PKG用鍵生成機能Sは、初期情報Γを入力とし、PKG用マスタ鍵mskと、共通パラメータparamsとを生成する。
PKG用鍵生成機能Sは、IDベース暗号通信システム800における公開暗号パラメータ生成装置100のパラメータ設定部110の機能に相当する。初期情報Γは、群パラメータに相当する。PKG用マスタ鍵mskは、秘密情報に相当する。共通パラメータparamsは、公開暗号パラメータに相当する。
秘密鍵導出機能Xは、ユーザの識別情報IDと、PKG用マスタ鍵mskとを入力とし、秘密鍵dIDを出力する。
秘密鍵導出機能Xは、IDベース暗号通信システム800における暗号パラメータ生成装置100の秘密鍵設定部130の機能に相当する。ユーザの識別情報IDは、受信者識別情報に相当する。
暗号化機能Eは、ユーザの識別情報IDと、共通パラメータparamsと、メッセージMとから、暗号文Cを生成する。暗号文Cは、鍵暗号文Cに相当する。
暗号化機能Eは、IDベース暗号通信システム800における暗号文生成装置200の機能に相当する。メッセージMは、平文M(=セッション鍵K)に相当する。
復号機能Dは、秘密鍵dIDと、共通パラメータparamsと、暗号文Cとを入力として、メッセージを復号する。復号機能Dは、復号したメッセージを返す。なお、復号に失敗した場合には、メッセージではなく「拒絶」を返す。
復号機能Dは、IDベース暗号通信システム800における暗号文受信装置301〜303の機能に相当する。
以上のように構成された暗号システムΠに対する攻撃者をAとする。
また、n=n(k)をkの多項式とする。
攻撃者Aは、暗号化オラクルOを利用できる。
暗号化オラクルOは、あらかじめ0か1かのいずれかをランダムに選択してbとしておく。
暗号化オラクルOは、ユーザの識別情報IDと、2つのメッセージM0及びM1とを入力する。
暗号化オラクルOは、あらかじめ選択してあるbに基づいて、メッセージM0及びメッセージM1のうちから一方を選択し、暗号化機能Eにより、入力したユーザの識別情報IDと、共通パラメータparamsと、選択したメッセージとに基づいて、暗号文Cを生成し、回答する。
攻撃者Aは、異なるユーザの識別情報IDについて、暗号化オラクルOを呼び出すことができる。ただし、攻撃者Aが、暗号化オラクルOを呼び出す際に、暗号オラクルOに入力できるユーザの識別情報IDの個数は、n以下とする。
また、攻撃者Aは、同じユーザの識別情報IDについて、異なるメッセージM0及びM1を入力して暗号化オラクルOを呼び出すこともできる。
このように、攻撃者Aは、暗号化オラクルOを複数回呼び出す。暗号化オラクルOは、入力した2つのメッセージのうち、常に同じ方(前者なら常に前者、後者なら常に後者)を選択する。
また、攻撃者Aは、鍵導出オラクルOを利用できる。
鍵導出オラクルOは、ユーザの識別情報IDを入力する。
鍵導出オラクルOは、鍵導出機能Xにより、攻撃者Aには知らされていないPKG用マスタ鍵mskと、入力したユーザの識別情報IDとに基づいて、秘密鍵dIDを生成し、回答する。
また、攻撃者Aは、復号オラクルOを利用できる。
復号オラクルOは、ユーザの識別情報IDと、暗号文Cとを入力する。
復号オラクルOは、鍵導出機能Xにより、攻撃者Aには知らされていないPKG用マスタ鍵mskと、入力したユーザの識別情報IDとに基づいて、秘密鍵dIDを生成する。
復号オラクルOは、復号機能Eにより、生成した秘密鍵dIDと、共通パラメータparamsと、入力した暗号文Cとに基づいて、メッセージを復号する。
復号オラクルOは、復号したメッセージ(または「拒絶」)を回答する。
攻撃者Aは、これらのオラクルを利用して、bが0か1かを当てるゲームに挑戦する。
攻撃者Aは、鍵導出オラクルOに入力したことのあるユーザの識別情報IDを、暗号化オラクルOに入力することはできない。攻撃者Aが秘密鍵dIDを知っていれば、暗号化オラクルが出力した暗号文Cを復号できるので、どちらのメッセージを暗号化したものか当てることは容易であり、なんら暗号を解読したとは言えないからである。
攻撃者Aは、逆に、暗号化オラクルOに入力したことのあるユーザの識別情報IDを、鍵導出オラクルOに入力することもできない。
また、攻撃者Aは、暗号化オラクルOに入力したことのあるユーザの識別情報IDと、それに対して暗号化オラクルOが出力した暗号文Cとの組み合わせを、復号オラクルOに入力することもできない。暗号化オラクルが出力した暗号文Cを復号オラクルOにより復号した場合も、どちらのメッセージを暗号化したものか当てることは容易であり、なんら暗号を解読したとは言えないからである。
上記の制限を除き、攻撃者Aは、自由にオラクルを呼び出し、bが0か1かを推測する。攻撃者Aは、推測結果b’を出力する。
ここで、攻撃者Aが、ユーザの識別情報ID1個につき暗号化オラクルOを呼び出した回数をqとする。すなわち、暗号化オラクルOは、最大n・q回呼び出される可能性がある。
また、攻撃者Aが、復号オラクルOを呼び出した回数をq、鍵導出オラクルOを呼び出した回数をqとする。
攻撃者Aが暗号を全く解読できない場合、b=b’となる確率は1/2である。攻撃者Aが暗号を常に解読できる場合、b=b’となる確率は1である。攻撃者Aが暗号を解読できる場合がある場合、b=b’となる確率は1/2と1との間になる。また、b=b’となる確率が1/2未満になる可能性もあるが、その場合、逆の意味で攻撃者Aは暗号を解読したと言える。
そこで、攻撃者AのアドバンテージAdvを、Advmu n,Π,Γ(A)=|Pr[Gamemu n,Π,Γ(A,0)=0]−Pr[Gamemu n,Π,Γ(A,1)=0]|と定義する。
ここで、Pr[…]は、その事象が発生する確率を表わす。
Gamemu n,Π,Γ(A,0)は、b=0の場合に攻撃者Aが推測した推測結果b’の値を表わす。したがって、Gamemu n,Π,Γ(A,0)=0は、b=0の場合に攻撃者Aの推測が当たる事象を示す。
また、Gamemu n,Π,Γ(A,1)は、b=1の場合に攻撃者Aが推測した推測結果b’の値を表わす。したがって、Gamemu n,Π,Γ(A,1)=0は、b=1の場合に攻撃者Aの推測が外れる事象を示す。
すなわち、Advmu n,Π,Γ(A)は、攻撃者Aが推測結果b’=0を出力した場合において、その推測が当たっている確率と外れている確率との差の絶対値を表わす。
攻撃者Aが暗号を全く解読できない場合、Advmu n,Π,Γ(A)は0となる。攻撃者Aが暗号を常に解読できる場合、Advmu n,Π,Γ(A)は1となる。攻撃者Aが暗号を解読できる場合がある場合、Advmu n,Π,Γ(A)は0と1との間の値となる。
暗号システムΠのn人ユーザ安全性を、Advmu n,Π,Γ(t,q,q,q)=max{Advmu n,Π,Γ(A)}と定義する。これは、暗号化オラクルOをID1個当たりq回、復号オラクルOをq回、鍵導出オラクルOをq回呼び出して、時間tの間に答えを出す攻撃者Aのうち、最も高いアドバンテージを有する攻撃者のアドバンテージを意味する。
Advmu n,Π,Γ(t,q,q,q)が、全てのkの多項式n(k)に対して無視できる(negligible)とき、暗号システムΠは(t,q,q,q)−MU安全であるという。
従来、IDベース暗号方式の安全性として定義されていたものは、ここで定義した安全性の特殊な場合であり、q=1かつn=1の場合のMU安全性である。
次に、IDベース暗号方式の複数受信者における安全性として、SMMR−IND−ID−CCA2安全性を以下のように定義する。
ここで、「SMMR−IND−ID−CCA2安全性」とは、複数受信者(Multi−Recipient)に単一のメッセージ(Single Message)を送信する場合において、ターゲットIDを適応的に選択可能な攻撃者に対する安全性を意味する。
暗号システムΠ’は、単一のメッセージをマルチキャストする複数受信者IDベース暗号システムである。暗号システムΠ’は、PKG用鍵生成機能S’と、秘密鍵導出機能X’と、暗号化機能E’と、暗号文分節機能T’と、復号機能D’とを有する。
PKG用鍵生成機能S’及び秘密鍵導出機能X’は、MU−IND−ID−CCA2安全の定義におけるPKG用鍵生成機能S及び秘密鍵導出機能X’と同様なので、説明を省略する。
暗号化機能E’は、複数のユーザの識別情報ID=(ID,ID,…,ID)と、共通パラメータparamsと、メッセージMとを入力し、暗号文Cを生成する。
暗号文分節機能T’は、暗号文Cを入力し、各ID向けに分節して、暗号文CIDを生成する。
暗号文分節機能T’は、IDベース暗号通信システム800の暗号文受信装置の暗号文分解部346の機能に相当する。
復号機能D’は、秘密鍵dIDと、共通パラメータparamsと、そのIDに対する(分節された)暗号文CIDとを入力し、復号したメッセージ(または「拒絶」)を返す。
以上のように構成された暗号システムΠ’に対する攻撃者をAとする。
攻撃者Aは、暗号化オラクルOE’を利用できる。
暗号化オラクルOE’は、n人のユーザそれぞれの識別情報ID=(ID ,ID ,…,ID )と、2つのメッセージM0及びM1とを入力する。
暗号化オラクルOE’は、0か1かのいずれかをランダムに選択してbとする。
暗号化オラクルOE’は、選択したbに基づいて、入力した2つのメッセージM0及びM1のうちから一方を選択し、暗号化機能Eにより、入力したn人のユーザそれぞれの識別情報IDと、共通パラメータparamsと、選択したメッセージとに基づいて、暗号文Cを生成し、回答する。
また、攻撃者Aは、鍵導出オラクルOX’を利用できる。
鍵導出オラクルOX’は、(1人の)ユーザの識別情報IDを入力する。
鍵導出オラクルOX’は、鍵導出機能X’により、攻撃者Aには知らされていないPKG用マスタ鍵mskと、入力したユーザの識別情報IDとに基づいて、秘密鍵dIDを生成し、回答する。
また、攻撃者Aは、復号オラクルOD’を利用できる。
復号オラクルOD’は、ユーザの識別情報IDと、そのIDに対する(分節された)暗号文CIDとを入力する。
復号オラクルOD’は、鍵導出機能X’により、攻撃者Aには知らされていないPKG用マスタ鍵mskと、入力したユーザの識別情報IDとに基づいて、秘密鍵dIDを生成する。
復号オラクルOD’は、復号機能D’により、生成した秘密鍵dIDと、共通パラメータparamsと、入力した暗号文CIDとに基づいて、メッセージを復号する。
復号オラクルOD’は、復号したメッセージ(または「拒絶」)を回答する。
攻撃者Aは、暗号化オラクルOE’を1回呼び出し、bが0か1かを当てるゲームに挑戦する。
攻撃者Aは、暗号化オラクルOE’を呼び出す前及び後のいずれにおいても、鍵導出オラクルOX’及び復号オラクルOD’を複数回呼び出すことができる。
ただし、暗号化オラクルOE’に入力した(入力する)n人のユーザそれぞれの識別情報IDに含まれるユーザの識別情報を、鍵導出オラクルOX’に入力することはできない。
また、攻撃者Aは、暗号化オラクルOE’に入力したn人のユーザそれぞれの識別情報IDに含まれるユーザの識別情報と、それに対して暗号化オラクルOE’が出力した暗号文Cのうち、その識別情報に対する暗号文CIDとの組み合わせを、復号オラクルOD’に入力することもできない。
上記の制限を除き、攻撃者Aは、自由に鍵導出オラクルOX’及び復号オラクルOD’を呼び出し、bが0か1かを推測する。攻撃者Aは、推測結果b’を出力する。
上記ゲームに基づいて、MU−IND−ID−CCA2安全性の場合と同様に、攻撃者AのアドバンテージAdvを、Advsmmr n,Π’,Γ(A)=|Pr[Gamesmmr n,Π’,Γ(A,0)=0]−Pr[Gamesmmr n,Π’,Γ(A,1)=0]|と定義する。
また、暗号システムΠ’のn人受信者安全性も同様に、Advsmmr n,Π’,Γ(t,q,q)=max{Advsmmr n,Π’,Γ(A)}と定義する。これは、復号オラクルOD’をq回、鍵導出オラクルOX’をq回呼び出して、時間tの間に答えを出す攻撃者Aのうち、最も高いアドバンテージを有する攻撃者のアドバンテージを意味する。
そして、Advsmmr n,Π’,Γ(t,q,q)が、全てのkの多項式n(k)に対して無視できるとき、暗号システムΠ’は(t,q,q)−SMMR安全であるという。
以上の定義に基づいて、この実施の形態におけるIDベース暗号通信システム800のSMMR−IND−ID−CCA2安全性を説明する。
この実施の形態におけるIDベース暗号通信システム800は、ハッシュ値算出部244が、n人の受信者に対応するn個の暗号文主文CBに基づいて、1つのハッシュ値Hを算出する。この方式を「ハッシュ値共通化方式」と呼ぶ。
これに対して、ハッシュ値算出部244がn人の受信者に対応するn個の暗号文主文CBそれぞれに基づいてハッシュ値を算出し、n人の受信者に対応するn個のハッシュ値を算出する方式もあり得る。このような方式のことを、以下では「連接方式」と呼ぶ。
ここでは、まず連接方式の安全性について説明する。
SMMR−IND−ID−CCA2安全性の定義における暗号化オラクルOE’は、n人のユーザそれぞれの識別情報ID=(ID ,ID ,…,ID )を入力して、暗号化処理をする。
これに対して、MU−IND−ID−CCA2安全性の定義における暗号化オラクルOは、(1人の)ユーザの識別情報IDを入力して、暗号化処理をする。
したがって、MU−IND−ID−CCA2安全性の定義における暗号化オラクルOをn回呼び出して、それぞれのユーザの識別情報についての暗号化処理をすれば、SMMR−IND−ID−CCA2安全性の定義における暗号化オラクルOE’と同等である。
また、MU−IND−ID−CCA2安全性の定義における鍵導出オラクルO及び復号オラクルOは、SMMR−IND−ID−CCA2安全性の定義における鍵導出オラクルOX’及び復号オラクルOD’と同等である。
以上より、連接方式による暗号システムΠ’のn人受信者SMMR安全性は、元となる暗号システムΠにおいて、q=1の場合におけるn人ユーザMU安全性と同等となる。すなわち、Advsmmr n,Π’,Γ(t,q,q)=Advmu n,Π,Γ(t,1,q,q)である。
また、一般的な公開鍵暗号方式Πに対するMU安全性は、Advmu n,Π,Γ(t,q,q,q)≦q・n・Advmu 1,Π,Γ(t’,1,q,q)であることが証明できる。これは、IDベース暗号方式の場合も同様である。
ここで、Advmu 1,Π,Γ(t’,1,q,q)は、n人ユーザMU安全性のn=1かつq=1の場合における安全性であるから、従来、IDベース暗号方式の安全性として定義されていたものである。
したがって、従来の意味で安全性が証明されたIDベース暗号方式を連接方式により拡張した複数受信者IDベース暗号方式のSMMR安全性はAdvsmmr n,Π’,Γ(t,q,q)≦n・Advmu 1,Π,Γ(t’,1,q,q)となり、安全性を証明することができる。
このように、連接方式のSMMR安全性は、もととなる(単独受信者)IDベース暗号方式のMU安全性から直接導くことができるが、ハッシュ値共通化方式のSMMR安全性は、それぞれ具体的な証明が必要である。
ハッシュ値共通化方式において、ハッシュ値算出部244は、1つのハッシュ値Hを算出すればよいので、n人の受信者に対応するn個のハッシュ値を算出する連接方式と比較して、ハッシュ値算出部244がハッシュ値を算出する処理の処理量が削減できる。
また、暗号文検証文生成部245が暗号文検証文CCを生成する処理についても、連接方式では、ほとんどの演算をn回繰り返す必要があるのに対して、ハッシュ値共通化方式では、途中までの演算を共通化して1回で済ますことができるので、暗号文検証文生成部245が暗号文検証文CCを生成する処理の処理量も削減できる。
これにより、暗号文生成装置200における暗号文生成処理の処理速度が速くなり、暗号文生成装置200のCPU911などの処理装置の処理能力が低くても、実用的な時間内に暗号文生成処理をすることができる。
この実施の形態における暗号文生成装置200は、
平文Mをn人の受信者(nは、1以上の整数。)に対して通知する暗号文C(鍵暗号文C)を生成する暗号文生成装置200において、
情報を記憶する磁気ディスク装置920などの記憶装置と、情報を処理するCPU911などの処理装置と、暗号パラメータ記憶部210と、受信者識別入力部232と、平文入力部231と、暗号文主文生成部240と、ハッシュ値算出部244と、暗号文検証文生成部245と、暗号文結合部246とを有することを特徴とする。
暗号パラメータ記憶部210は、磁気ディスク装置920などの記憶装置を用いて、公開暗号パラメータを記憶することを特徴とする。
受信者識別入力部232は、CPU911などの処理装置を用いて、n人の受信者をそれぞれ識別するn個の受信者識別情報ID(iは、1以上n以下の整数。)を入力することを特徴とする。
平文入力部231は、CPU911などの処理装置を用いて、平文Mを入力することを特徴とする。
暗号文主文生成部240は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、受信者識別入力部232が入力したn個の受信者識別情報IDと、平文入力部231が入力した平文Mとに基づいて、n人の受信者に対応するn個の暗号文主文CB(iは、1以上n以下の整数。)を生成することを特徴とする。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、暗号文主文生成部240が生成したn個の暗号文主文CBを結合して、結合暗号文を生成し、CPU911などの処理装置を用いて、生成した結合暗号文に基づいて、ハッシュ値Hを算出することを特徴とする。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、ハッシュ値算出部244が算出したハッシュ値Hとに基づいて、暗号文検証文CCを生成することを特徴とする。
暗号文結合部246は、CPU911などの処理装置を用いて、暗号文主文生成部240が生成したn個の暗号文主文CBと、暗号文検証文生成部245が生成した暗号文検証文CCとを結合して、1つの暗号文Cとすることを特徴とする。
この実施の形態における暗号文生成装置200によれば、IDベース暗号通信方式において、同一の平文Mを複数の受信者に対して通知する1つの暗号文Cを生成する処理の一部であるハッシュ値を算出する処理と、算出したハッシュ値に基づく処理とをそれぞれ1回で済ますことができるので、処理が効率化し、高速な暗号処理が可能になるという効果を奏する。
この実施の形態における暗号文生成装置200は、更に、乱数生成部222を有することを特徴とする。
乱数生成部222は、CPU911などの処理装置を用いて、n人の受信者に対応するn個の整数s(iは、1以上n以下の整数。)をランダムに生成することを特徴とする。
暗号文主文生成部240は、第一暗号文生成部241と、第二暗号文生成部242と、第三暗号文生成部243とを有することを特徴とする。
第一暗号文生成部241は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、平文入力部231が入力した平文Mと、乱数生成部222が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の第一暗号文C1(iは、1以上n以下の整数。)を生成することを特徴とする。
第二暗号文生成部242は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、受信者識別入力部232が入力したn個の受信者識別情報IDと、乱数生成部222が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の第二暗号文C2(iは、1以上n以下の整数。)を生成することを特徴とする。
第三暗号文生成部243は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、乱数生成部222が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の第三暗号文C3(iは、1以上n以下の整数。)を生成することを特徴とする。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、第一暗号文生成部241が生成したn個の第一暗号文C1と、第二暗号文生成部242が生成したn個の第二暗号文C2と、第三暗号文生成部243が生成したn個の第三暗号文C3とを結合して、1つの結合暗号文とし、CPU911などの処理装置を用いて、結合した1つの結合暗号文に基づいて、1つのハッシュ値Hを算出することを特徴とする。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、乱数生成部222が生成したn個の整数sと、ハッシュ値算出部244が算出した1つのハッシュ値Hとに基づいて、n人の受信者に対応するn個の暗号文検証文CC(iは、1以上n以下の整数。)を生成することを特徴とする。
暗号文結合部246は、CPU911などの処理装置を用いて、第一暗号文生成部241が生成したn個の第一暗号文C1と、第二暗号文生成部242が生成したn個の第二暗号文C2と、第三暗号文生成部243が生成したn個の第三暗号文C3と、暗号文検証文生成部245が生成したn個の暗号文検証文CCとを結合して、1つの暗号文C(鍵暗号文C)とすることを特徴とする。
この実施の形態における暗号文生成装置200によれば、ハッシュ値算出部244が受信者にかかわらず共通の1つのハッシュ値Hを算出するので、暗号文生成装置200における暗号文生成処理の処理量を削減することができるという効果を奏する。
また、単独受信者の場合について安全性が証明されたIDベース暗号通信方式を複数受信者に拡張したIDベース暗号通信方式において、単独受信者の場合と同様の安全性を証明できるという効果を奏する。
この実施の形態における暗号文生成装置200は、また、以下の点を特徴とする。
暗号文主文生成部240は、CPU911などの処理装置を用いて、受信者識別入力部232が入力したn個の受信者識別情報IDを含むn個の暗号文主文CBを生成することを特徴とする。
この実施の形態における暗号文生成装置200によれば、ハッシュ値算出部244が算出するハッシュ値のもととなるn個の暗号文主文CBが、n個の受信者識別情報を含むので、IDベース暗号通信方式の安全性が高くなるという効果を奏する。
この実施の形態における暗号文生成装置200は、更に、暗号文通知部261を有することを特徴とする。
暗号文通知部261は、CPU911などの処理装置を用いて、受信者識別入力部232が入力したn個の受信者識別情報IDによって識別されるn人の受信者に対して、上記暗号文結合部246が結合した1つの暗号文C(鍵暗号文C)を通知することを特徴とする。
この実施の形態における暗号文生成装置200によれば、暗号文通知部261がn人の受信者に対して同一の暗号文Cを通知するので、暗号文を通知する通信経路のトラフィックにかける負荷が小さいという効果を奏する。
この実施の形態における暗号文生成装置200は、更に、セッション鍵生成部221を有することを特徴とする。
セッション鍵生成部221は、CPU911などの処理装置を用いて、所定の長さのビット列をランダムに生成して、セッション鍵Kとすることを特徴とする。
平文入力部231は、CPU911などの処理装置を用いて、平文Mとして、上記セッション鍵生成部が生成したセッション鍵Kを入力することを特徴とする。
この実施の形態における暗号文生成装置200は、セッション鍵生成部221がセッション鍵Kを生成し、生成したセッション鍵を通知相手に通知する暗号文Cを生成するので、セッション鍵Kを外部から入力する場合と比較して、安全性が高いという効果を奏する。
この実施の形態における暗号文生成装置200は、更に、データ入力部251と、データ暗号化部252と、暗号文通知部261とを有することを特徴とする。
データ入力部251は、CPU911などの処理装置を用いて、n人の受信者に対して送信すべき1つの平文データを入力することを特徴とする。
データ暗号化部252は、CPU911などの処理装置を用いて、セッション鍵生成部221が生成したセッション鍵Kにより、データ入力部251が入力した1つの平文データを暗号化して、1つの暗号化データとすることを特徴とする。
暗号文通知部261は、CPU911などの処理装置を用いて、受信者識別入力部232が入力したn個の受信者識別情報IDによって識別されるn人の受信者に対して、暗号文結合部246が結合した1つの暗号文C(鍵暗号文C)と、データ暗号化部252が暗号化した1つの暗号化データとを通知することを特徴とする。
この実施の形態における暗号文生成装置200によれば、データ暗号化部252が受信者にかかわらず共通の1つのセッション鍵Kにより平文データを暗号化し、暗号文通知部261が受信者にかかわらず共通の1つの暗号文C及び1つの暗号化データを、受信者に通知するので、通信経路のトラフィックにかける負荷が小さいという効果を奏する。
この実施の形態におけるIDベース暗号通信システム800(暗号通信システム)は、
それぞれが対応する暗号文受信装置を有するn人の受信者(nは、1以上の整数。)に対して、平文M(セッション鍵K)を1つの暗号文C(鍵暗号文C)により通知する暗号通信システムにおいて、
暗号パラメータ生成装置100と、暗号文生成装置200と、複数の暗号文受信装置301〜303とを有することを特徴とする。
暗号パラメータ生成装置100は、
情報を記憶する磁気ディスク装置920などの記憶装置と、情報を処理するCPU911などの処理装置と、秘密情報生成部112と、秘密情報記憶部121と、公開パラメータ生成部113と、公開パラメータ公開部114と、識別情報入力部131と、秘密鍵生成部132と、秘密鍵通知部133とを有することを特徴とする。
秘密情報生成部112は、CPU911などの処理装置を用いて、秘密情報をランダムに生成することを特徴とする。
秘密情報記憶部121は、磁気ディスク装置920などの記憶装置を用いて、秘密情報生成部112が生成した秘密情報を記憶することを特徴とする。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、秘密情報生成部112が生成した秘密情報に基づいて、公開暗号パラメータを生成することを特徴とする。
公開パラメータ公開部114は、CPU911などの処理装置を用いて、公開パラメータ生成部113が生成した公開暗号パラメータを公開することを特徴とする。
識別情報入力部131は、CPU911などの処理装置を用いて、複数の暗号文受信装置301〜303のうち1つの暗号文受信装置に対応する1人の受信者を識別する受信者識別情報IDを入力することを特徴とする。
秘密鍵生成部132は、CPU911などの処理装置を用いて、秘密情報記憶部121が記憶した秘密情報と、公開パラメータ生成部113が生成した公開暗号パラメータと、識別情報入力部131が入力した受信者識別情報IDとに基づいて、上記1人の受信者に対応する秘密鍵dIDを生成することを特徴とする。
秘密鍵通知部133は、CPU911などの処理装置を用いて、上記1人の受信者に対応する1つの暗号文受信装置に対して、秘密鍵生成部132が生成した秘密鍵dIDを秘密裏に通知することを特徴とする。
暗号文生成装置200は、
情報を記憶する磁気ディスク装置920などの記憶装置と、情報を処理するCPU911などの処理装置と、暗号パラメータ記憶部210と、受信者識別入力部232と、平文入力部231と、乱数生成部222と、暗号文主文生成部240と、ハッシュ値算出部244と、暗号文検証文生成部245と、暗号文結合部246と、暗号文通知部261とを有することを特徴とする。
暗号パラメータ記憶部210は、磁気ディスク装置920などの記憶装置を用いて、暗号パラメータ生成装置100が公開した公開暗号パラメータを記憶することを特徴とする。
受信者識別入力部232は、CPU911などの処理装置を用いて、n人の受信者をそれぞれ識別するn個の受信者識別情報ID(iは、1以上n以下の整数。)を入力することを特徴とする。
平文入力部231は、CPU911などの処理装置を用いて、平文Mを入力することを特徴とする。
第二暗号文生成部242は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、受信者識別入力部232が入力したn個の受信者識別情報IDと、平文入力部231が入力した平文Mとに基づいて、n人の受信者に対応するn個の暗号文主文CB(iは、1以上n以下の整数。)を生成することを特徴とする。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、暗号文主文生成部240が生成したn個の暗号文主文CBを結合して、結合暗号文を生成し、CPU911などの処理装置を用いて、生成した結合暗号文に基づいて、ハッシュ値Hを算出することを特徴とする。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、ハッシュ値算出部244が算出したハッシュ値Hとに基づいて、暗号文検証文CCを生成することを特徴とする。
暗号文結合部246は、CPU911などの処理装置を用いて、暗号文主文生成部240が生成したn個の暗号文主文CBと、暗号文検証文生成部245が生成した暗号文検証文CCとを結合して、1つの暗号文C(鍵暗号文C)とすることを特徴とする。
暗号文通知部261は、CPU911などの処理装置を用いて、上記n人の受信者に対応するn個の暗号文受信装置に対して、暗号文結合部246が結合した1つの暗号文Cを通知することを特徴とする。
複数の暗号文受信装置301〜303は、それぞれ、
情報を記憶する磁気ディスク装置920などの記憶装置と、情報を処理するCPU911などの処理装置と、公開パラメータ記憶部310と、秘密鍵記憶部323と、暗号文受信部351と、暗号文分解部346と、検証ハッシュ値算出部344と、暗号文検証部345と、暗号文復号部341とを有することを特徴とする。
公開パラメータ記憶部310は、磁気ディスク装置920などの記憶装置を用いて、暗号パラメータ生成装置100が公開した公開暗号パラメータを記憶することを特徴とする。
秘密鍵記憶部323は、磁気ディスク装置920などの記憶装置を用いて、暗号パラメータ生成装置100が通知した秘密鍵dIDを記憶することを特徴とする。
暗号文受信部351は、CPU911などの処理装置を用いて、暗号文生成装置200が通知した1つの暗号文C(鍵暗号文C)を受信することを特徴とする。
暗号文分解部346は、CPU911などの処理装置を用いて、暗号文受信部351が受信した1つの暗号文Cに基づいて、n個の暗号文主文C2と、暗号文検証文CCとを取得し、CPU911などの処理装置を用いて、取得したn個の暗号文主文CBのうち、暗号文受信装置が対応する受信者に対応する1つの対応暗号文主文CBIDを取得することを特徴とする。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、暗号文分解部346が取得したn個の暗号文主文CBを結合した検証結合暗号文に基づいて、検証ハッシュ値H’を算出することを特徴とする。
暗号文検証部345は、CPU911などの処理装置を用いて、公開パラメータ記憶部310が記憶した公開暗号パラメータと、暗号文分解部346が取得した1つの対応暗号文主文CBIDと暗号文検証文CCと、検証ハッシュ値算出部344が算出した検証ハッシュ値H’とに基づいて、暗号文受信部351が受信した1つの暗号文Cに整合性があるか否かを判定することを特徴とする。
暗号文復号部341は、暗号文受信部351が受信した1つの暗号文Cに整合性があると、暗号文検証部345が判定した場合に、CPU911などの処理装置を用いて、公開パラメータ記憶部310が記憶した公開暗号パラメータと、秘密鍵記憶部323が記憶した秘密鍵dIDと、暗号文分解部346が取得した1つの対応暗号文主文CBIDとに基づいて、平文Mを復元することを特徴とする。
この実施の形態におけるIDベース暗号通信システム800によれば、IDベース暗号通信方式において、同一の平文Mを、複数の受信者に対して1つの暗号文Cにより通知し、他の受信者は暗号文Cを解読できないという効果を奏する。
この実施の形態におけるIDベース暗号通信システム800(暗号通信システム)は、また、以下の点を特徴とする。
暗号文生成装置200は、更に、乱数生成部222を有することを特徴とする。
乱数生成部222は、CPU911などの処理装置を用いて、n人の受信者に対応するn個の整数s(iは、1以上n以下の整数。)をランダムに生成することを特徴とする。
暗号文主文生成部240は、第一暗号文生成部241と、第二暗号文生成部242と、第三暗号文生成部243とを有することを特徴とする。
第一暗号文生成部241は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、平文入力部231が入力した平文Mと、乱数生成部222が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の第一暗号文C1(iは、1以上n以下の整数。)を生成することを特徴とする。
第二暗号文生成部242は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、受信者識別入力部232が入力したn個の受信者識別情報IDと、乱数生成部222が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の第二暗号文C2(iは、1以上n以下の整数。)を生成することを特徴とする。
第三暗号文生成部243は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、乱数生成部222が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の第三暗号文C3(iは、1以上n以下の整数。)を生成することを特徴とする。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、第一暗号文生成部241が生成したn個の第一暗号文C1と、第二暗号文生成部242が生成したn個の第二暗号文C2と、第三暗号文生成部243が生成したn個の第三暗号文C3とを結合して、1つの結合暗号文とし、CPU911などの処理装置を用いて、結合した1つの結合暗号文に基づいて、1つのハッシュ値Hを算出することを特徴とする。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、乱数生成部222が生成したn個の整数sと、ハッシュ値算出部244が算出した1つのハッシュ値Hとに基づいて、n人の受信者に対応するn個の暗号文検証文CC(iは、1以上n以下の整数。)を生成することを特徴とする。
暗号文結合部246は、CPU911などの処理装置を用いて、第一暗号文生成部241が生成したn個の第一暗号文C1と、第二暗号文生成部242が生成したn個の第二暗号文C2と、第三暗号文生成部243が生成したn個の第三暗号文C3と、暗号文検証文生成部245が生成したn個の暗号文検証文CCとを結合して、1つの暗号文C(鍵暗号文C)とすることを特徴とする。
暗号文分解部346は、CPU911などの処理装置を用いて、暗号文受信部351が受信した1つの暗号文Cに基づいて、n個の第一暗号文C1と、n個の第二暗号文C2と、n個の第三暗号文C3と、n個の暗号文検証文CCとを取得し、CPU911などの処理装置を用いて、取得したn個の第一暗号文C1とn個の第二暗号文C2とn個の第三暗号文C3とn個の暗号文検証文CCとのうち、暗号文受信装置が対応する受信者に対応する1つの対応第一暗号文C1IDと1つの対応第二暗号文C2IDと1つの対応第三暗号文C3IDと1つの対応暗号文検証文CCIDとを取得することを特徴とする。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、暗号文分解部346が取得したn個の第一暗号文C1とn個の第二暗号文C2とn個の第三暗号文C3とを結合した検証結合暗号文に基づいて、検証ハッシュ値H’を算出することを特徴とする。
暗号文検証部345は、CPU911などの処理装置を用いて、公開パラメータ記憶部310が記憶した公開暗号パラメータと、暗号文分解部346が取得した1つの対応第二暗号文C2IDと1つの対応第三暗号文C3IDとの少なくともいずれかと1つの対応暗号文検証文と、検証ハッシュ値算出部344が算出した検証ハッシュ値H’とに基づいて、暗号文受信部351が受信した1つの暗号文Cに整合性があるか否かを判定することを特徴とする。
暗号文復号部341は、暗号文受信部351が受信した1つの暗号文Cに整合性があると、暗号文検証部345が判定した場合に、CPU911などの処理装置を用いて、公開パラメータ記憶部310が記憶した公開暗号パラメータと、秘密鍵記憶部323が記憶した秘密鍵dIDと、暗号文分解部346が取得した1つの対応第一暗号文C1IDと1つの対応第二暗号文C2IDと1つの対応第三暗号文C3IDとに基づいて、平文Mを復元することを特徴とする。
この実施の形態におけるIDベース暗号通信システム800によれば、ハッシュ値算出部244が受信者にかかわらず共通の1つのハッシュ値Hを算出するので、暗号文生成装置200における暗号文生成処理の処理量を削減することができるという効果を奏する。
また、単独受信者の場合について安全性が証明されたIDベース暗号通信方式を複数受信者に拡張したIDベース暗号通信方式において、単独受信者の場合と同様の安全性を証明できるという効果を奏する。
この実施の形態におけるIDベース暗号通信システム800(暗号通信システム)は、また、以下の点を特徴とする。
暗号文主文生成部240は、CPU911などの処理装置を用いて、受信者識別入力部232が入力したn個の受信者識別情報IDを含むn個の暗号文主文CBを生成することを特徴とする。
この実施の形態におけるIDベース暗号通信システム800によれば、ハッシュ値算出部244が算出するハッシュ値のもととなるn個の暗号文主文CBが、n個の受信者識別情報を含むので、IDベース暗号通信方式の安全性が高くなるという効果を奏する。
この実施の形態におけるIDベース暗号通信システム800(暗号通信システム)は、また、以下の点を特徴とする。
暗号文生成装置200は、更に、セッション鍵生成部221と、データ入力部251と、データ暗号化部252と、暗号文通知部261とを有することを特徴とする。
セッション鍵生成部221は、CPU911などの処理装置を用いて、所定の長さのビット列をランダムに生成して、セッション鍵Kとすることを特徴とする。
平文入力部231は、CPU911などの処理装置を用いて、平文Mとして、セッション鍵生成部221が生成したセッション鍵Kを入力することを特徴とする。
データ入力部251は、CPU911などの処理装置を用いて、n人の受信者に対して送信すべき1つの平文データを入力することを特徴とする。
データ暗号化部252は、CPU911などの処理装置を用いて、セッション鍵生成部221が生成したセッション鍵Kにより、データ入力部251が入力した1つの平文データを暗号化して、1つの暗号化データとすることを特徴とする。
暗号文通知部261は、CPU911などの処理装置を用いて、受信者識別入力部232が入力したn個の受信者識別情報によって識別されるn人の受信者に対して、暗号文結合部246が結合した1つの暗号文C(鍵暗号文C)と、データ暗号化部252が暗号化した1つの暗号化データとを通知することを特徴とする。
複数の暗号文受信装置301〜303は、更に、それぞれ、データ復号部352を有することを特徴とする。
暗号文受信部351は、CPU911などの処理装置を用いて、暗号文生成装置200が通知した1つの暗号文Cと1つの暗号化データとを受信することを特徴とする。
データ復号部352は、暗号文復号部341が復元した平文Mをセッション鍵K’とし、CPU911などの処理装置を用いて、上記セッション鍵K’により、暗号文受信部351が受信した1つの暗号化データを復号することを特徴とする。
この実施の形態におけるIDベース暗号通信システム800によれば、データ暗号化部252が受信者にかかわらず共通の1つのセッション鍵Kにより平文データを暗号化し、暗号文通知部261が受信者にかかわらず共通の1つの暗号文C及び1つの暗号化データを、受信者に通知するので、通信経路のトラフィックにかける負荷が小さいという効果を奏する。
なお、この実施の形態では、受信者の数nは、あらかじめ(例えば、公開暗号パラメータ生成時に)定まっているものではなく、実際にデータを送信するときに定まるものである場合について説明したが、受信者の数nをあらかじめ固定としてもよい。
例えば、受信者が一人で確定している場合であればn=1で固定してもよい。あるいは、n=10で固定でもよい。
また、受信者の数nの範囲をあらかじめ定め、データを送信する際に、その範囲内でnを指定する構成であってもよい。例えば、1≦n<100の範囲でnが可変であってもよい。
つまり、IDベース暗号通信システム800は、受信者の数があらかじめ固定である暗号通信システムでもよいし、データを送信する際に受信者の数を可変にするようにした暗号通信システムでもよい。
実施の形態2.
実施の形態2について、図11〜図18を用いて説明する。
この実施の形態におけるIDベース暗号通信システム800を説明する前に、まず、対比例であるIDベース暗号通信システムについて説明する。
この実施の形態における対比例であるIDベース暗号通信システムの全体構成は、実施の形態1で説明したものと同様なので、ここでは説明を省略する。
最初に、暗号パラメータ生成装置100について説明する。
暗号パラメータ生成装置100のブロック構成は、実施の形態1で説明したものと同様なので、図4を用いて、実施の形態1と異なる部分について説明する。
群パラメータ記憶部111は、磁気ディスク装置920などの記憶装置を用いて、群パラメータとして、自然数rと、乗法群G1と、乗法群G2と、乗法群GTと、ペアリングeを表わす情報を記憶する。
自然数rは、DH問題を解くことが困難な大素数である。
乗法群G1及び乗法群G2及び乗法群GTは、位数が自然数rである乗法群である。
なお、乗法群G1と乗法群G2とは、同じ乗法群でもよいし、異なる乗法群でもよい。乗法群G1と乗法群G2とが同じ乗法群である場合には、群パラメータ記憶部111は、乗法群G2を表わす情報を記憶しなくてもよい。
ペアリングeは、乗法群G1の要素と乗法群G2の要素とから、乗法群GTの要素を算出する写像である。以下、乗法群G1の要素pと乗法群G2の要素qとから算出した乗法群GTの要素を、ペアリング値e(p,q)と記述する。
また、ペアリングeは、双線形ペアリング(Bilinear Pairing)であるものとする。すなわち、ペアリングeは、乗法群G1の要素pのa乗(aは、0以上自然数r未満の整数。)と乗法群G2の要素qのb乗(bは、0以上自然数r未満の整数。)とのペアリング値e(p^a,q^b)は、乗法群G1の要素pと乗法群G2の要素qとのペアリング値e(p,q)のc乗(cは、整数aと整数bとの積を自然数rで割った余り。)と等しい(数式で表現すると、「e(p^a,q^b)=e(p,q)^(a・b)」)という性質を有するものとする。
なお、コンピュータのCPU911などの処理装置を用いて実用的な時間内に計算可能な双線形ペアリングとして、テイトペアリング(Tate Pairing)やヴェイユペアリング(Weil Pairing)などが知られている。
ペアリングeは、特定のペアリングに限らず、双線形ペアリングであればどのようなペアリングであってもよいが、コンピュータのCPU911などの処理装置を用いて実用的な時間内に計算可能なペアリングであるものとする。
秘密情報生成部112は、CPU911などの処理装置を用いて、群パラメータ記憶部111が記憶した群パラメータを入力する。
秘密情報生成部112は、CPU911などの処理装置を用いて、入力した群パラメータが表わす自然数rに基づいて、1以上自然数r未満の整数αをランダムに生成する。
秘密情報生成部112は、CPU911などの処理装置を用いて、生成した整数αを表わす情報(秘密情報)を出力する。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、群パラメータ記憶部111が記憶した群パラメータと、秘密情報生成部112が出力した整数αを表わす情報とを入力する。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、入力した群パラメータが表わす乗法群GTに基づいて、鍵生成関数KDFを決定する。
鍵生成関数KDFは、乗法群GTの要素から、所定の長さのビット列を算出する関数である。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、入力した群パラメータが表わす自然数rに基づいて、ハッシュ関数HFを決定する。
ハッシュ関数HFは、任意の長さのビット列から、自然数r未満の自然数を算出する関数である。なお、ハッシュ関数HFは、異なるビット列から同じ自然数を算出する確率が極めて低いものとする。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、入力した群パラメータが表わす乗法群G1に基づいて、乗法群G1の要素gをランダムに選択する。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、入力した群パラメータが表わす乗法群G2に基づいて、4つの乗法群G2の要素g2、h1、h2、h3をランダムに選択する。
ただし、乗法群G2の要素g2、h1、h2、h3は、互いに異なる要素を選択する。
また、乗法群G1の要素gと乗法群G2の要素g2とのペアリング値である乗法群GTの要素e(g,g2)が乗法群GTの単位元とならないように、乗法群G1の要素gと乗法群G2の要素g2とを選択する。
なお、乗法群G1と乗法群G2とが同じ乗法群である場合には、乗法群G1の要素gと乗法群G2の要素g2とが、同一の要素であってもよい。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、入力した群パラメータが表わす乗法群G1と、選択した乗法群G1の要素gと、入力した情報が表わす整数αとに基づいて、乗法群G1の要素g1=g^αを算出する。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、入力した群パラメータと、決定した鍵生成関数KDFと、決定したハッシュ関数HFと、選択した乗法群G1の要素gと、算出した乗法群G1の要素g1と、選択した4つの乗法群G2の要素g2、h1、h2、h3とを表わす情報を、公開暗号パラメータとして出力する。
識別情報入力部131は、CPU911などの処理装置を用いて、受信者識別情報IDを入力する。
以下の説明において、暗号パラメータ生成装置100は、受信者識別情報IDを整数として取り扱う。
例えば、暗号パラメータ生成装置100は、メールアドレスなどの任意の長さのビット列を、整数値を表わすビット列として取り扱うことにより、受信者識別情報を整数として取り扱う。
あるいは、暗号パラメータ生成装置100は、メールアドレスなどの任意の長さのビット列を、ハッシュ関数(公開パラメータ生成部113が決定したハッシュ関数HFと同じハッシュ関数であってもよいし、異なるハッシュ関数であってもよい。)の入力とし、ハッシュ関数により算出した整数を取得して、受信者識別情報としてもよい。
すなわち、識別情報入力部131は、CPU911などの処理装置を用いて、整数IDを受信者識別情報として入力する。
識別情報入力部131は、CPU911などの処理装置を用いて、入力した整数IDを出力する。
秘密鍵生成部132は、CPU911などの処理装置を用いて、秘密情報記憶部121が記憶した整数αを表わす情報と、パラメータ記憶部122が記憶した公開暗号パラメータと、識別情報入力部131が出力した整数IDとを入力する。
秘密鍵生成部132は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす自然数rに基づいて、3つの整数rID,1、rID,2、rID,3をランダムに生成する。3つの整数rID,1、rID,2、rID,3は、いずれも1以上自然数r未満の整数であり、互いに異なる整数を生成する。
秘密鍵生成部132は、CPU911などの処理装置を用いて、入力した情報が表わす整数αと、入力した整数IDとに基づいて、αとIDとの差(α−ID)の逆数1/(α−ID)を算出する。なお、ここでいう逆数とは、有限体Z/rZ上における逆数のことである。すなわち、(α−ID)と逆数(仮に、xとする。)との積(α−ID)・xを自然数rで割った余りが1となる1以上r未満の整数xのことを、(α−ID)の逆数と呼び、1/(α−ID)と記述する。
なお、自然数rは素数であるから、α−IDが0(または自然数rの倍数)でない限り、(α−ID)の逆数が1つ存在し、コンピュータのCPU911などの処理装置を用いて、実用的な時間内に算出可能である。
ここで、自然数rは非常に大きな自然数なので、α−IDが0(または自然数rの倍数)となる確率は極めて低く、無視してもよい。
秘密鍵生成部132は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群G2と、乗法群G2の要素g2と、生成した整数rID,1とに基づいて、乗法群G2の要素g2の(−rID,1)乗である乗法群G2の要素g2^(−rID,1)を算出する。
秘密鍵生成部132は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群G2と、乗法群G2の要素h1と、算出した乗法群G2の要素g2^(−rID,1)とに基づいて、乗法群G2の要素h1と乗法群G2の要素g2^(−rID,1)との積である乗法群G2の要素h1・g2^(−rID,1)を算出する。
秘密鍵生成部132は、CPU911などの処理装置を用いて、算出した乗法群G2の要素h1・g2^(−rID,1)と、算出した整数1/(α−ID)とに基づいて、乗法群G2の要素h1・g2^(−rID,1)の1/(α−ID)乗である乗法群G2の要素hID,1=(h1・g2^(−rID,1))^(1/(α−ID))を算出する。
秘密鍵生成部132は、CPU911などの処理装置を用いて、同様に、乗法群G2の要素hID,2=(h2・g2^(−rID,2))^(1/(α−ID))と、乗法群G2の要素hID,3=(h3・g2^(−rID,3))^(1/(α−ID))とを算出する。
秘密鍵生成部132は、CPU911などの処理装置を用いて、算出した3つの整数rID,1、rID,2、rID,3と、算出した3つの乗法群G2の要素hID,1、hID,2、hID,3とを表わす情報を、秘密鍵dIDとして出力する。
次に、暗号文生成装置200について説明する。
暗号文生成装置200の機能ブロックの構成も、実施の形態1で説明したものと同様なので、図5を用いて、実施の形態1と異なる部分について説明する。
暗号文生成装置200は、暗号パラメータ生成装置100と同様、受信者識別情報IDを整数として取り扱う。
受信者識別入力部232は、CPU911などの処理装置を用いて、n人の受信者(nは、1以上の整数。)をそれぞれ識別するn個の受信者識別情報として、n個の整数ID(iは、1以上n以下の整数。)を入力する。
受信者識別入力部232は、CPU911などの処理装置を用いて、入力したn個の整数IDを出力する。
乱数生成部222は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータを入力する。
乱数生成部222は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす自然数rに基づいて、n人の受信者にそれぞれ対応するn個の1以上自然数r未満の整数s(iは、1以上n以下の整数。)をランダムに生成する。
乱数生成部222は、CPU911などの処理装置を用いて、生成したn個の整数sを表わす情報を出力する。
第一暗号文生成部241は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、乱数生成部222が出力したn個の整数sを表わす情報と、平文入力部231が出力した平文Mとを入力する。
第一暗号文生成部241は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わすペアリングeと、乗法群G1の要素gと、乗法群G2の要素h1とに基づいて、乗法群G1の要素gと乗法群G2の要素h1とのペアリング値である乗法群GTの要素e(g,h1)を算出する。
なお、乗法群GTの要素e(g,h1)は、整数sや平文Mにかかわらず一定なので、前もって算出し、磁気ディスク装置920などの記憶装置を用いて記憶しておいてもよい。
第一暗号文生成部241は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群GTと、算出した乗法群GTの要素e(g,h1)と、入力した情報が表わすn個の整数sとに基づいて、乗法群GTの要素e(g,h1)のs乗であるn個の乗法群GTの要素e(g,h1)^s(iは、1以上n以下の整数。)を算出する。
第一暗号文生成部241は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす鍵生成関数KDFと、算出したn個の乗法群GTの要素e(g,h1)^sとに基づいて、乗法群GTの要素e(g,h1)^sを鍵生成関数KDFにより変換した所定の長さのビット列であるn個の鍵ビット列k=KDF(e(g,h1)^s)(iは、1以上n以下の整数。)を算出する。
第一暗号文生成部241は、CPU911などの処理装置を用いて、入力した平文Mと、算出したn個の鍵ビット列kとに基づいて、平文Mをn個の鍵ビット列kによりそれぞれ暗号化したn個のビット列を生成して、n個の第一暗号文C1(iは、1以上n以下の整数。)とする。
平文Mのビット長と鍵ビット列kのビット長とが等しい場合、例えば、第一暗号文生成部241は、平文Mと鍵ビット列kとの間のビットごとの排他的論理和を算出し、第一暗号文C1とする。
なお、平文Mを暗号化する方式は、排他的論理和演算を用いる方式に限らず、鍵ビット列kと同一のビット列があれば第一暗号文C1から平文Mを復元できる暗号方式なら、他の暗号方式であってもよい。
第一暗号文生成部241は、CPU911などの処理装置を用いて、生成したn個の第一暗号文C1を出力する。
第二暗号文生成部242は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、乱数生成部222が出力したn個の整数sを表わす情報と、受信者識別入力部232が出力したn個の整数IDとを入力する。
第二暗号文生成部242は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群G1と、乗法群G1の要素gと、入力したn個の整数IDとに基づいて、乗法群G1の要素gの(−ID)乗であるn個の乗法群G1の要素g^(−ID)(iは、1以上n以下の整数。)を算出する。
第二暗号文生成部242は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群G1と、乗法群G1の要素g1と、算出したn個乗法群G1の要素g^(−ID)とに基づいて、乗法群G1の要素g1と乗法群G1の要素g^(−ID)との積である乗法群G1の要素g1・g^(−ID)(iは、1以上n以下の整数。)を算出する。
第二暗号文生成部242は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群G1と、入力した情報が表わすn個の整数sと、算出したn個の乗法群G1の要素g1・g^(−ID)とに基づいて、乗法群G1の要素g1・g^(−ID)のs乗であるn個の乗法群G1の要素u=(g1・g^(−ID))^s(iは、1以上n以下の整数。)を算出する。
第二暗号文生成部242は、CPU911などの処理装置を用いて、算出したn個の乗法群G1の要素uをそれぞれ表わすビット列を、n個の第二暗号文C2(iは、1以上n以下の整数。)として出力する。
第三暗号文生成部243は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、乱数生成部222が出力したn個の整数sを表わす情報とを入力する。
第三暗号文生成部243は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わすペアリングeと、乗法群G1の要素gと、乗法群G2の要素g2とに基づいて、乗法群G1の要素gと乗法群G2の要素g2とのペアリング値である乗法群GTの要素e(g,g2)を算出する。
なお、乗法群GTの要素e(g,g2)は、整数sにかかわらず一定なので、前もって算出し、磁気ディスク装置920などの記憶装置を用いて記憶しておいてもよい。
第三暗号文生成部243は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群GTと、入力した情報が表わすn個の整数sと、算出した乗法群GTの要素e(g,g2)とに基づいて、乗法群GTの要素e(g,g2)のs乗であるn個の乗法群GTの要素e(g,g2)^s(iは、1以上n以下の整数。)を算出する。
第三暗号文生成部243は、CPU911などの処理装置を用いて、算出したn個の乗法群GTの要素e(g,g2)^sをそれぞれ表わすビット列を、n個の第三暗号文C3(iは、1以上n以下の整数。)を出力する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、第一暗号文生成部241が出力したn個の第一暗号文C1と、第二暗号文生成部242が出力したn個の第二暗号文C2と、第三暗号文生成部243が出力したn個の第三暗号文C3とを入力する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、入力したn個の第一暗号文C1と、n個の第二暗号文C2と、n個の第三暗号文C3とをそれぞれ結合して、n個の結合暗号文を生成する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わすハッシュ関数HFと、生成したn個の結合暗号文とに基づいて、n個の結合暗号文をハッシュ関数HFによりそれぞれ変換したn個の自然数βを算出し、n個のハッシュ値Hとする。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、算出したn個の自然数βを表わす情報と、生成したn個の結合暗号文とを出力する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、乱数生成部222が出力したn個の整数sを表わす情報と、ハッシュ値算出部244が出力したn個の自然数βを表わす情報とを入力する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わすペアリングeと、乗法群G1の要素gと、乗法群G2の要素h2とに基づいて、乗法群G1の要素gと乗法群G2の要素h2とのペアリング値である乗法群GTの要素e(g,h2)を算出する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わすペアリングeと、乗法群G1の要素gと、乗法群G2の要素h3とに基づいて、乗法群G1の要素gと乗法群G2の要素h3とのペアリング値である乗法群GTの要素e(g,h3)を算出する。
なお、乗法群GTの要素e(g,h2)及び乗法群GTの要素e(g,h3)は、整数sにかかわらず一定なので、前もって算出し、磁気ディスク装置920などの記憶装置を用いて記憶しておいてもよい。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群GTと、入力した情報が表わすn個の整数sと、算出した乗法群GTの要素e(g,h2)とに基づいて、乗法群GTの要素e(g,h2)のs乗であるn個の乗法群GTの要素e(g,h2)^s(iは、1以上n以下の整数。)を算出する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、入力した情報が表わすn個の整数sと、入力した情報が表わすn個の自然数βとに基づいて、整数sと自然数βとの積であるn個の整数(s・β)(iは、1以上n以下の整数。)をそれぞれ算出する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群GTと、算出した乗法群GTの要素e(g,h3)と、算出したn個の整数(s・β)とに基づいて、乗法群GTの要素e(g,h3)の(s・β)乗であるn個の乗法群GTの要素e(g,h3)^(s・β)(iは、1以上n以下の整数。)を算出する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群GTと、算出したn個の乗法群GTの要素e(g,h2)^sと、算出したn個の乗法群GTの要素e(g,h3)^(s・β)とに基づいて、乗法群GTの要素e(g,h2)^sと乗法群GTの要素e(g,h3)^(s・β)との積であるn個の乗法群GTの要素y=e(g,h2)^s・e(g,h3)^(s・β)(iは、1以上n以下の整数。)を算出する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、算出したn個の乗法群GTの要素yをそれぞれ表わすビット列を、n個の暗号文検証文CC(iは、1以上n以下の整数。)として出力する。
暗号文結合部246は、CPU911などの処理装置を用いて、ハッシュ値算出部244が出力したn個の結合暗号文と、暗号文検証文生成部245が出力したn個の暗号文検証文CCとを入力する。
暗号文結合部246は、CPU911などの処理装置を用いて、入力したn個の結合暗号文と、入力したn個の暗号文検証文とをすべて結合して、1つの鍵暗号文Cを生成する。
暗号文結合部246は、CPU911などの処理装置を用いて、生成した1つの鍵暗号文Cを出力する。
なお、この例において、暗号文結合部246は、ハッシュ値算出部244が出力したn個の結合暗号文を入力するが、結合暗号文は第一暗号文C1と第二暗号文C2と第三暗号文C3とを結合したものなので、暗号文結合部246は、n個の第一暗号文C1とn個の第二暗号文C2とn個の第三暗号文C3とを入力したことになる。
図11は、この実施の形態における対比例である暗号文生成装置200のなかでやり取りされる情報の流れの一例を示す図である。
受信者識別入力部232は、n個の受信者識別情報ID、ID、…、IDを入力する。
乱数生成部222は、受信者識別入力部232が入力した受信者識別情報ID、ID、…、IDの数と同じ数であるn個の整数s、s、…、sを生成する。
第一暗号文生成部241は、平文Mと整数sとに基づいて第一暗号文C1を生成し、平文Mと整数sとに基づいて第一暗号文C1を生成し、…、平文Mと整数sとに基づいて第一暗号文C1を生成する。
第二暗号文生成部242は、受信者識別情報IDと整数sとに基づいて第二暗号文C2を生成し、受信者識別情報IDと整数sとに基づいて第二暗号文C2を生成し、…、受信者識別情報IDと整数sとに基づいて第二暗号文C2を生成する。
第三暗号文生成部243は、整数sに基づいて第三暗号文C3を生成し、整数sに基づいて第三暗号文C3を生成し、…、整数sに基づいて第三暗号文C3を生成する。
ハッシュ値算出部244は、第一暗号文C1と第二暗号文C2と第三暗号文C3とを結合して結合暗号文(C1|C2|C3)を生成し、第一暗号文C1と第二暗号文C2と第三暗号文C3とを結合して結合暗号文(C1|C2|C3)を生成し、…、第一暗号文C1と第二暗号文C2と第三暗号文C3とを結合して結合暗号文(C1|C2|C3)を生成する。ここで、「|」は結合を表わす。例えば、(C1|C2|C3)は、ビット列C1の後ろにビット列C2を結合し、更にその後にビット列C3を結合したビット列を表わす。なお、結合の順序は、これと異なる順序であってもよい。
ハッシュ値算出部244は、生成した結合暗号文(C1|C2|C3)に基づいてハッシュ値Hを算出し、生成した結合暗号文(C1|C2|C3)に基づいてハッシュ値Hを算出し、…、生成した結合暗号文(C1|C2|C3)に基づいてハッシュ値Hを算出する。
暗号文検証文生成部245は、整数sとハッシュ値Hとに基づいて暗号文検証文CCを生成し、整数sとハッシュ値Hとに基づいて暗号文検証文CCを生成し、…、整数sとハッシュ値Hとに基づいて暗号文検証文CCを生成する。
暗号文結合部246は、n個の結合暗号文(C1|C2|C3)、(C1|C2|C3)、…、(C1|C2|C3)と、n個の暗号文検証文CC、CC、…、CCとをすべて結合して、1つの鍵暗号文C=(C1|C2|C3|CC|C1|C2|C3|CC|…|C1|C2|C3|CC)を生成する。
なお、この例では、1人の受信者に対応する第一暗号文〜暗号文検証文を一箇所にまとめる順序で暗号文を結合して鍵暗号文Cを生成するが、結合の順序はこれと異なる順序であってもよい。例えば、(C1|C1|…|C1|C2|C2|…|C2|C3|C3|…|C3|CC|CC|…|CC)のように、第一暗号文は第一暗号文同士、第二暗号文は第二暗号文同士を1箇所にまとめる順序で結合してもよい。
この例のように、1人の受信者に対応する第一暗号文〜暗号文検証文を一箇所にまとめる順序で結合するほうが、ハッシュ値算出部244が結合した結合暗号文をそのまま結合して鍵暗号文Cを生成できるので、好ましい。また、暗号文受信装置が対応する受信者に対応する暗号文を容易に見つけることができる利点もある。
次に、暗号文受信装置301〜303について説明する。
暗号文受信装置301〜303の機能ブロックの構成も、実施の形態1で説明したものと同様なので、図6を用いて、実施の形態1と異なる部分について説明する。
暗号文分解部346は、CPU911などの処理装置を用いて、暗号文受信部351が出力した1つの鍵暗号文Cを入力する。
暗号文分解部346は、CPU911などの処理装置を用いて、入力した1つの鍵暗号文Cから、自身が対応する受信者に対応する対応第一暗号文C1IDと、対応第二暗号文C2IDと、対応第三暗号文C3IDと、対応暗号文検証文CCIDとを取得する。
暗号文分解部346は、CPU911などの処理装置を用いて、取得した対応第一暗号文C1IDと、対応第二暗号文C2IDと、対応第三暗号文C3IDと、対応暗号文検証文CCIDとを出力する。
例えば、1つの鍵暗号文Cが、図11に示したように、(C1|C2|C3|CC|C1|C2|C3|CC|…|C1|C2|C3|CC)という順序で暗号文を結合したものであるとする。
暗号文分解部346は、例えば、1つの鍵暗号文Cを、第一暗号文〜暗号文検証文のビット長の和ごとに分割して、(C1|C2|C3|CC)、(C1|C2|C3|CC)、…、(C1|C2|C3|CC)とし、そのなかから、自分に対応する対応暗号文(C1ID|C2ID|C3ID|CCID)を取得する。
暗号文分解部346は、例えば、暗号文受信部351が受信した通知データ720の他の部分から、自分に対応する対応暗号文が何番目を判断し、判断結果に基づいて、対応暗号文を取得する。
次に、暗号文分解部346は、取得した対応暗号文(C1ID|C2ID|C3ID|CCID)を分割して、検証結合暗号文(C1ID|C2ID|C3ID)と、対応暗号文検証文CCIDとを取得する。
更に、暗号文分解部346は、取得した検証結合暗号文(C1ID|C2ID|C3ID)を分割して、対応第一暗号文C1IDと、対応第二暗号文C2IDと、対応第三暗号文C3IDとを取得する。
暗号文分解部346は、取得した対応第一暗号文C1IDと、対応第二暗号文C2IDと、対応第三暗号文C3IDと、対応暗号文検証文CCIDとを出力する。
また、この例では、検証ハッシュ値算出部344が検証結合暗号文(C1ID|C2ID|C3ID)を生成する手間を省くため、暗号文分解部346は、CPU911などの処理装置を用いて、取得した検証結合暗号文(C1ID|C2ID|C3ID)も、あわせて出力する。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、暗号文分解部346が出力した対応第一暗号文C1IDと、対応第二暗号文C2IDと、対応第三暗号文C3IDとを入力する。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、入力した対応第一暗号文C1IDと、対応第二暗号文C2IDと、対応第三暗号文C3IDとを結合して、検証結合暗号文(C1ID|C2ID|C3ID)を生成する。なお、結合の順序は、暗号文生成装置200のハッシュ値算出部244が結合暗号文を生成する際の順序と同一であれば、これと異なる順序であってもよい。
また、上述した例のように、暗号文分解部346が検証結合暗号文(C1ID|C2ID|C3ID)を出力する場合には、検証ハッシュ値算出部344は、検証結合暗号文(C1ID|C2ID|C3ID)を生成する代わりに、暗号文分解部346が出力した検証結合暗号文(C1ID|C2ID|C3ID)を入力してもよい。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、公開パラメータ記憶部310が記憶した公開暗号パラメータを入力する。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わすハッシュ関数HFと、生成あるいは入力した検証結合暗号文(C1ID|C2ID|C3ID)とに基づいて、検証結合暗号文(C1ID|C2ID|C3ID)をハッシュ関数HFにより変換した自然数β’を算出し、ハッシュ値H’とする。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、算出した自然数β’を表わす情報を出力する。
暗号文検証部345は、CPU911などの処理装置を用いて、公開パラメータ記憶部310が記憶した公開暗号パラメータと、秘密鍵記憶部323が記憶した秘密鍵dIDと、暗号文分解部346が出力した対応第二暗号文C2IDと対応第三暗号文C3IDと対応暗号文検証文CCIDと、検証ハッシュ値算出部344が出力した自然数β’を表わす情報とを入力する。
暗号文検証部345は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群G2と、入力した秘密鍵dIDが表わす乗法群G2の要素hID,3と、入力した情報が表わす自然数β’とに基づいて、乗法群G2の要素hID,3のβ’乗である乗法群G2の要素hID,3^β’を算出する。
暗号文検証部345は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群G2と、入力した秘密鍵dIDが表わす乗法群G2の要素hID,2と、算出した乗法群G2の要素hID,3^β’とに基づいて、乗法群G2の要素hID,2と乗法群G2の要素hID,3^β’との積である乗法群G2の要素hID,2・hID,3^β’を算出する。
暗号文検証部345は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わすペアリングeと、入力した対応第二暗号文C2IDが表わす乗法群G1の要素uIDと、算出した乗法群G2の要素hID,2・hID,3^β’とに基づいて、乗法群G1の要素uIDと乗法群G2の要素hID,2・hID,3^β’とのペアリング値である乗法群GTの要素e(uID,hID,2・hID,3^β’)を算出する。
暗号文検証部345は、CPU911などの処理装置を用いて、入力した秘密鍵dIDが表わす整数rID,2と整数rID,3と、入力した情報が表わす自然数β’とに基づいて、整数rID,3と自然数β’との積と、整数rID,2との和である整数rID,2+rID,3・β’を算出する。
暗号文検証部345は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群GTと、入力した対応第三暗号文C3IDが表わす乗法群GTの要素vIDと、算出した整数rID,2+rID,3・β’とに基づいて、乗法群GTの要素vIDのrID,2+rID,3・β’乗である乗法群GTの要素vID^(rID,2+rID,3・β’)を算出する。
暗号文検証部345は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群GTと、算出した乗法群GTの要素e(uID,hID,2・hID,3^β’)と、算出した乗法群GTの要素vID^(rID,2+rID,3・β)とに基づいて、乗法群GTの要素e(uID,hID,2・hID,3^β’)と乗法群GTの要素vID^(rID,2+rID,3・β’)との積である乗法群GTの要素y’=e(uID,hID,2・hID,3^β’)・vID^(rID,2+rID,3・β’)を算出する。
暗号文検証部345は、CPU911などの処理装置を用いて、入力した対応暗号文検証文CCIDが表わす乗法群GTの要素yIDと、算出した乗法群GTの要素y’とを比較し、乗法群GTの要素yIDと算出した乗法群GTの要素y’とが一致する場合に、暗号文受信部351が入力した1つの鍵暗号文Cに整合性があると判定し、一致しない場合に、暗号文受信部351が入力した1つの鍵暗号文Cに整合性がないと判定する。
ここで、暗号文生成装置200の暗号文検証文生成部245が算出する乗法群GTの要素yは、y=e(g,h2)^s・e(g,h3)^(s・β)である。
また、暗号文生成装置200の第二暗号文生成部242が算出した乗法群G1の要素uは、u=(g1・g^(−ID))^sであり、暗号パラメータ生成装置100の公開パラメータ生成部113が算出した乗法群G1の要素g1は、g1=g^αであるから、u=g^(s・(α−ID))である。
また、暗号文生成装置200の第三暗号文生成部243が算出した乗法群GTの要素vは、v=e(g,g2)^sである。
一方、暗号文検証文生成部245が算出する乗法群GTの要素y’は、y’=e(uID,hID,2・hID,3^β’)・vID^(rID,2+rID,3・β’)である。ペアリングeの双線形より、y’=e(uID,hID,2)・e(uID,hID,3)^β’・vID^(rID,2+rID,3・β’)である。
また、暗号パラメータ生成装置100の秘密鍵生成部132が算出した乗法群G2の要素hID,2、hID,3は、hID,2=(h2・g2^(−rID,2))^(1/(α−ID))、hID,3=(h3・g2^(−rID,3))^(1/(α−ID))であるから、e(uID,hID,2)=e(g,h2・g2^(−rID,2))^sID、e(uID,hID,3)=e(g,h3・g2^(−rID,3))^sIDである。
したがって、y’=e(g,h2)^sID・e(g,h3)^(sID・β’)である。1つの鍵暗号文Cに整合性があれば、β’=βIDなので、y’=yIDとなる。
暗号文受信部351が入力した1つの鍵暗号文Cに整合性があると、暗号文検証部345が判定した場合、暗号文復号部341は、平文Mを復元するため、以下の処理をする。
暗号文復号部341は、CPU911などの処理装置を用いて、公開パラメータ記憶部310が記憶した公開暗号パラメータと、秘密鍵記憶部323が記憶した秘密鍵dIDと、暗号文分解部346が出力した対応第一暗号文C1IDと対応第二暗号文C2IDと対応第三暗号文C3IDとを入力する。
暗号文復号部341は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わすペアリングeと、入力した秘密鍵dIDが表わす乗法群G2の要素hID,1と、入力した対応第二暗号文C2IDが表わす乗法群G1の要素uIDとに基づいて、乗法群G1の要素uIDと乗法群G2の要素hID,1とのペアリング値である乗法群GTの要素e(uID,hID,1)を算出する。
暗号文復号部341は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群GTと、入力した秘密鍵dIDが表わす整数rID,1と、入力した対応第三暗号文C3IDが表わす乗法群GTの要素vIDとに基づいて、乗法群GTの要素vIDのrID,1乗である乗法群GTの要素vID^rID,1を算出する。
暗号文復号部341は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群GTと、算出した乗法群GTの要素e(uID,hID,1)と、算出した乗法群GTの要素vID^rID,1とに基づいて、乗法群GTの要素e(uID,hID,1)と乗法群GTの要素vID^rID,1との積である乗法群GTの要素e(uID,hID,1)・vID^rID,1を算出する。
暗号文復号部341は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす鍵生成関数KDFと、算出した乗法群GTの要素e(uID,hID,1)・vID^rID,1とに基づいて、乗法群GTの要素e(uID,hID,1)・vID^rID,1を鍵生成関数KDFにより変換した所定の長さのビット列である鍵ビット列k’=KDF(e(uID,hID,1)・vID^rID,1)を算出する。
暗号文復号部341は、CPU911などの処理装置を用いて、入力した対応第一暗号文C1IDと、算出した鍵ビット列k’とに基づいて、対応第一暗号文C1IDを鍵ビット列k’により復号したビット列を生成する。
ここで、暗号文生成装置200の第一暗号文生成部241が算出する鍵ビット列kは、k=KDF(e(g,h1)^s)である。
一方、暗号文復号部341が算出する鍵ビット列k’は、k’=KDF(e(uID,hID,1)・vID^rID,1)である。
また、暗号パラメータ生成装置100の秘密鍵生成部132が算出した乗法群G2の要素hID,1は、hID,1=(h1・g2^(−rID,1))^(1/(α−ID))である。
したがって、k’=KDF(e(g,h1)^sID)なので、k’=kIDとなる。
暗号文復号部341は、暗号文生成装置200の第一暗号文生成部241が平文Mを暗号化した鍵ビット列と同一の鍵ビット列k’により、対応第一暗号文C1IDを復号するので、平文Mが復元できる。
次に、動作について説明する。
図12は、この実施の形態における対比例である暗号パラメータ生成装置100が公開暗号パラメータを設定するパラメータ設定処理の流れの一例を示すフローチャート図である。
なお、実施の形態1で説明したパラメータ設定処理の工程と共通する工程については、同一の符号を付す。
秘密情報生成工程S11において、秘密情報生成部112は、CPU911などの処理装置を用いて、群パラメータ記憶部111が記憶した群パラメータが表わす自然数rに基づいて、1以上自然数r未満の整数αをランダムに生成する。
秘密情報記憶部121は、磁気ディスク装置920などの記憶装置を用いて、秘密情報生成部112が生成した整数αを表わす情報を記憶する。
暗号パラメータ生成工程S12において、公開パラメータ生成部113は、CPU911などの処理装置を用いて、群パラメータ記憶部111が記憶した群パラメータが表わす乗法群GTと自然数rとに基づいて、鍵生成関数KDFとハッシュ関数HFとを決定する。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、群パラメータ記憶部111が記憶した群パラメータが表わす乗法群G1と乗法群G2とに基づいて、合法群G1の要素gと、4つの乗法群G2の要素g2、h1、h2、h3とをランダムに選択する。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、群パラメータ記憶部111が記憶した群パラメータが表わす乗法群G1と、秘密情報生成工程S11で秘密情報生成部112が生成した整数αと、選択した乗法群G1の要素gとに基づいて、乗法群G1の要素g1=g^αを算出する。
パラメータ記憶部122は、磁気ディスク装置920などの記憶装置を用いて、群パラメータ記憶部111が記憶した群パラメータと、決定した鍵生成関数KDFと、決定したハッシュ関数HFと、選択した乗法群G1の要素gと、算出した乗法群G1の要素g1と、選択した4つの乗法群G2の要素g2、h1、h2、h3とを表わす情報を、公開暗号パラメータとして記憶する。
暗号パラメータ公開工程S13において、公開パラメータ公開部114は、CPU911などの処理装置を用いて、群パラメータ記憶部111が記憶した群パラメータと、公開パラメータ生成部113が決定した鍵生成関数KDFとハッシュ関数HFと、公開パラメータ生成部113が選択した乗法群G1の要素gと4つの乗法群G2の要素g2、h1、h2、h3と、公開パラメータ生成部113が算出した乗法群G1の要素g1とを表わす情報を、公開暗号パラメータとして公開する。
公開パラメータ公開部114が公開した公開暗号パラメータは、暗号文生成装置200及び暗号文受信装置301〜303が取得し、暗号パラメータ記憶部210及び公開パラメータ記憶部310が磁気ディスク装置920などの記憶装置を用いて記憶する。
図13は、この実施の形態における対比例である暗号パラメータ生成装置100が秘密鍵を設定する秘密鍵設定処理の流れの一例を示すフローチャート図である。
なお、実施の形態1で説明した秘密鍵設定処理の工程と共通する工程については、同一の符号を付す。
識別入力工程S21において、識別情報入力部131は、CPU911などの処理装置を用いて、受信者識別情報として整数IDを入力する。
秘密鍵生成工程S22において、秘密鍵生成部132は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす自然数rに基づいて、1以上自然数r未満の3つの整数rID,1、rID,2、rID,3をランダムに生成する。
秘密鍵生成部132は、CPU911などの処理装置を用いて、パラメータ記憶部122が記憶した公開暗号パラメータが表わす乗法群G2と、3つの乗法群G2の要素h1、h2、h3と、生成した3つの整数rID,1、rID,2、rID,3とに基づいて、3つの乗法群G2の要素hID,1=(h1・g2^(−rID,1))^(1/(α−ID))、hID,2=(h2・g2^(−rID,2))^(1/(α−ID))、hID,3=(h3・g2^(−rID,3))^(1/(α−ID))を算出する。
秘密鍵通知工程S23において、秘密鍵通知部133は、CPU911などの処理装置を用いて、秘密鍵生成工程S22で秘密鍵生成部132が生成した3つの整数rID,1、rID,2、rID,3と、秘密鍵生成工程S22で秘密鍵生成部132が算出した3つの乗法群G2の要素hID,1、hID,2、hID,3とを表わす情報を秘密鍵dIDとして、対応する暗号文受信装置に対して秘密裏に通知する。
秘密鍵通知部133が通知した秘密鍵dIDは、対応する暗号文受信装置が取得し、秘密鍵記憶部323が磁気ディスク装置920などの記憶装置を用いて記憶する。
図14は、この実施の形態における対比例である暗号文生成装置200が暗号文を生成する暗号文生成処理の流れの一例を示すフローチャート図である。
なお、実施の形態1で説明した暗号文生成処理の工程と共通する工程については、同一の符号を付す。
受信者識別入力工程S32において、受信者識別入力部232は、CPU911などの処理装置を用いて、n人の受信者をそれぞれ識別するn個の受信者識別情報として、n人の受信者にそれぞれ対応するn個の整数IDを入力する。
乱数生成工程S34において、乱数生成部222は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす自然数rに基づいて、n人の受信者にそれぞれ対応するn個の1以上自然数r未満の整数sをランダムに生成する。
第一暗号文生成工程S35において、第一暗号文生成部241は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす乗法群GTとペアリングeと乗法群G1の要素gと乗法群G2の要素h1と鍵生成関数KDFと、乱数生成工程S34で乱数生成部222が生成したn人の受信者にそれぞれ対応するn個の整数sとに基づいて、n人の受信者にそれぞれ対応するn個の鍵ビット列k=KDF(e(g,h1)^s)を算出する。
第一暗号文生成部241は、CPU911などの処理装置を用いて、セッション鍵生成工程S33でセッション鍵生成部221が生成したセッション鍵K(=平文M)と、算出したn人の受信者にそれぞれ対応するn個の鍵ビット列kとに基づいて、1つのセッション鍵Kをn人の受信者にそれぞれ対応するn個の鍵ビット列kによりそれぞれ暗号化して、n人の受信者にそれぞれ対応するn個の第一暗号文C1を生成する。
第二暗号文生成工程S36において、第二暗号文生成部242は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす乗法群G1と乗法群G1の要素gと乗法群G1の要素g1と、受信者識別入力工程S32で受信者識別入力部232が入力したn人の受信者にそれぞれ対応するn個の整数IDと、乱数生成工程S34で乱数生成部222が生成したn人の受信者にそれぞれ対応するn個の整数sとに基づいて、n人の受信者にそれぞれ対応するn個の乗法群G1の要素u=(g1・g^(−ID))^sを算出する。
第二暗号文生成部242は、CPU911などの処理装置を用いて、算出したn人の受信者にそれぞれ対応するn個の乗法群G1の要素uをそれぞれ表わすビット列を、n人の受信者にそれぞれ対応するn個の第二暗号文C2とする。
第三暗号文生成工程S37において、第三暗号文生成部243は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす乗法群GTとペアリングeと乗法群G1の要素gと乗法群G2の要素g2と、乱数生成工程S34で乱数生成部222が生成したn人の受信者にそれぞれ対応するn個の整数sとに基づいて、n人の受信者にそれぞれ対応するn個の乗法群GTの要素v=e(g,g2)^sを算出する。
第三暗号文生成部243は、CPU911などの処理装置を用いて、算出したn人の受信者にそれぞれ対応するn個の乗法群GTの要素vをそれぞれ表わすビット列を、n人の受信者にそれぞれ対応するn個の第三暗号文C3とする。
ハッシュ値算出工程S38において、ハッシュ値算出部244は、CPU911などの処理装置を用いて、第一暗号文生成工程S35で第一暗号文生成部241が生成したn人の受信者にそれぞれ対応するn個の第一暗号文C1と、第二暗号文生成工程S36で第二暗号文生成部242が生成したn人の受信者にそれぞれ対応するn個の第二暗号文C2と、第三暗号文生成工程S37で第三暗号文生成部243が生成したn人の受信者にそれぞれ対応するn個の第三暗号文C3とに基づいて、n人の受信者にそれぞれ対応するn個の第一暗号文C1と、n人の受信者にそれぞれ対応するn個の第一暗号文C2と、n人の受信者にそれぞれ対応するn個の第三暗号文C3とをそれぞれ結合したn人の受信者にそれぞれ対応するn個の結合暗号文(C1|C2|C3)を生成する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わすハッシュ関数HFと、生成したn人の受信者にそれぞれ対応するn個の結合暗号文(C1|C2|C3)とに基づいて、n人の受信者にそれぞれ対応するn個の結合暗号文(C1|C2|C3)をそれぞれハッシュ関数HFにより変換したn人の受信者にそれぞれ対応するn個の整数β=HF(C1|C2|C3)を算出する。
暗号文検証文生成工程S39において、暗号文検証文生成部245は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす乗法群GTとペアリングeと乗法群G1の要素gと2つの乗法群G2の要素h2、h3と、乱数生成工程S34で乱数生成部222が生成したn人の受信者にそれぞれ対応するn個の整数sと、ハッシュ値算出工程S38でハッシュ値算出部244が算出したn人の受信者にそれぞれ対応するn個の整数βとに基づいて、n人の受信者にそれぞれ対応するn個の乗法群GTの要素y=e(g,h2)^s・e(g,h3)^(s・β)を算出する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、算出したn人の受信者にそれぞれ対応するn個の乗法群GTの要素yをそれぞれ表わすビット列を、n人の受信者にそれぞれ対応するn個の暗号文検証文CCとする。
図15は、この実施の形態における対比例である暗号文受信装置301〜303が暗号文を受信する暗号文受信処理の流れの一例を示すフローチャート図である。
なお、実施の形態1で説明した暗号文受信処理の工程と共通する工程については、同一の符号を付す。
暗号文分解工程S52において、暗号文分解部346は、CPU911などの処理装置を用いて、通知データ受信工程で暗号文受信部351が出力した1つの鍵暗号文Cに基づいて、暗号文受信装置が対応する受信者に対応する1つの対応第一暗号文C1IDと、1つの対応第二暗号文C2IDと、1つの対応第三暗号文C3IDと、1つの対応暗号文検証文CCIDとを取得する。
検証ハッシュ値算出工程S53において、検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、公開パラメータ記憶部310が記憶した公開暗号パラメータが表わすハッシュ関数HFと、暗号文分解工程S52で暗号文分解部346が取得した1つの対応第一暗号文C1IDと1つの対応第二暗号文C2IDと1つの対応第三暗号文C3IDとを結合した1つの対応結合暗号文(C1ID|C2ID|C3ID)とに基づいて、1つの対応結合暗号文(C1ID|C2ID|C3ID)をハッシュ関数HFにより変換した1つの整数β’を、検証ハッシュ値H’として算出する。
暗号文検証工程S54において、暗号文検証部345は、CPU911などの処理装置を用いて、公開パラメータ記憶部310が記憶した公開暗号パラメータが表わす乗法群GTとペアリングeと、秘密鍵記憶部323が記憶した秘密鍵dIDが表わす2つの整数rID,2とrID,3と2つの乗法群G2の要素hID,2とhID,3と、暗号文分解工程S52で暗号文分解部346が取得した1つの検証第二暗号文C2IDが表わす1つの乗法群G1の要素uIDと1つの検証第三暗号文C3IDが表わす1つの乗法群GTの要素vIDと、検証ハッシュ値算出工程S53で検証ハッシュ値算出部344が算出した1つの整数β’とに基づいて、1つの乗法群GTの要素y’=e(uID,hID,2・hID,3^β’)・vID^(rID,2+rID,3・β’)を算出する。
暗号文検証部345は、CPU911などの処理装置を用いて、暗号文分解工程S52で暗号文分解部346が取得した1つの対応暗号文検証文CCIDが表わす1つの乗法群GTの要素yIDと、算出した1つの乗法群GTの要素y’とを比較する。
乗法群GTの要素yIDと乗法群GTの要素y’とが等しい場合、暗号文検証部345は、暗号文受信部351が受信した1つの鍵暗号文Cに整合性があると判定し、暗号文復号工程S55へ進む。
乗法群GTの要素yIDと乗法群GTの要素y’とが等しくない場合、暗号文検証部345は、暗号文受信部351が受信した1つの鍵暗号文Cに整合性がないと判定し、暗号文受信処理を終了する。
暗号文復号工程S55において、暗号文復号部341は、CPU911などの処理装置を用いて、公開パラメータ記憶部310が記憶した乗法群GTとペアリングeと鍵生成関数KDFと、秘密鍵記憶部323が記憶した秘密鍵dIDが表わす整数rID,1と乗法群G2の要素hID,1と、暗号文分解工程S52で暗号文分解部346が取得した1つの対応第二暗号文C2IDが表わす1つの乗法群G1の要素uIDと1つの対応第三暗号文C3IDが表わす1つの乗法群GTの要素vIDとに基づいて、1つの鍵ビット列k’=KDF(e(uID,hID,1)・vID^rID,1)を算出する。
暗号文復号部341は、CPU911などの処理装置を用いて、暗号文分解工程S52で暗号文分解部346が取得した1つの対応第一暗号文C1IDと、算出した1つの鍵ビット列k’とに基づいて、鍵ビット列k’により対応第一暗号文C1IDを復号して、所定の長さのビット列を生成し、セッション鍵K’(=平文M)とする。
上述したように、暗号文復号部341が生成するセッション鍵K’は、暗号文生成装置200のセッション鍵生成部221が生成したセッション鍵Kと同一のビット列となる。
次に、この実施の形態における対比例であるIDベース暗号通信システムが使用するIDベース暗号方式の安全性について議論する。
なお、以下の証明においては、簡単のため、乗法群G1と乗法群G2とは同一の乗法群Gであるものとする。
まず、この実施の形態における対比例であるIDベース暗号方式が帰着する数学的な問題として、q−D−tABDHE問題(q Decisional Trancated Augmented Bilinear Diffie−Hellman Exponent Problem)を定義する。
q−D−tABDHE問題において、解答者Bには、q+3個の乗法群Gの要素g’、g’q+2、g、g、…、gと、1つの乗法群GTの要素Zとが与えられる。また、解答者Bには秘密の情報として、1以上乗法群Gの位数未満の整数αがある。
乗法群Gの要素g及びg’は、ランダムに選択された乗法群Gの要素である。
乗法群Gの要素g(iは、1以上q以下の整数。)は、整数αのi乗を整数α^iとし、乗法群Gの要素gのα^i乗である乗法群Gの要素g^(α^i)である。
乗法群Gの要素g’q+2も同様である。すなわち、乗法群Gの要素g’q+2=g’^(α^(q+2))である。
解答者Bは、乗法群Gの要素gq+1=g^(α^(q+1))と、乗法群Gの要素g’とのペアリング値である乗法群GTの要素e(gq+1,g’)が、与えられた乗法群GTの要素Zと等しいか否かを判別する問題に答える。
実際にZ=e(gq+1,g’)である分布をP、Zがランダムに選択した乗法群GTの要素である分布をRとする。
解答者Bのアドバンテージを、Advq−d−tabdhe k、G,GT(B)=|Pr[B(1,I)=1:I←P]−Pr[B(1,I)=1:I←R]|と定義する。ここで、B(1,I)は、解答者Bの判断結果を表わし、「B(1,I)=1」は、Z=e(gq+1,g’)であると判断したことを示す。また、「I←P」は実際にZ=e(gq+1,g’)である事象、「I←R」はZがランダムに選択した乗法群GTの要素である事象を示す。すなわち、Advq−d−tabdhe k、G,GT(B)は、実際にZ=e(gq+1,g’)である場合において、解答者BがZ=e(gq+1,g’)であると判断する(すなわち、解答者Bの判断が正しい)確率と、Zがランダムに選択した乗法群GTの要素である場合において、解答者BがZ=e(gq+1,g’)であると判断する(すなわち、解答者Bの判断が間違っている)確率との差の絶対値である。
また、Advq−d−tabdhe k、G,GT(t)=max(Advq−d−tabdhe k、G,GT(B))とする。これは、時間tの間に解答する解答者Bのうち、最も高いアドバンテージを有する解答者のアドバンテージを意味する。
Advq−d−tabdhe k、G,GT(t)≦εであるとき、(G,GT)で(t,ε,q)−D−tABDHE仮定(あるいは、単に、「q−D−tABDHE仮定」)が成り立つという。
まず、この実施の形態における対比例である複数受信者のIDベース暗号方式Π’のもととなっている単独受信者のIDベース暗号方式ΠのMU−IND−ID−CCA2安全性を証明する。
攻撃者Aは、暗号方式Πに対するアドバンテージAdvmu n,Π,Γ(A)=|Pr[T]−1/2|を有するものとする。ここで、Tは、MU−IND−ID−CCA2安全性の定義において攻撃者Aが挑戦するゲーム(以下、「G」と呼ぶ。)で、b=b’となる(すなわち、攻撃者Aが正解する)事象を示す。Pr[T]は、事象Tが発生する確率を示す。
また、q=q+n+1であるとする。
以下、同様に、ゲームGλ(λは、1以上6以下の整数。)において、b=b’となる事象を、Tλと呼ぶ。
ゲームGは、攻撃者Aが攻撃する対象が暗号システムΠではなく、解答者Bによってシミュレートされた暗号化オラクルO、鍵導出オラクルO、復号オラクルOである点が、ゲームGと異なる。
まず、解答者Bは、以下のようにして、PKG用鍵生成機能Sをシミュレートする。
解答者Bは、1以上乗法群Gの位数r未満の整数αをランダムに生成する。
解答者Bは、0以上r未満のランダムな整数係数を有する3つのq次多項式f(x)(jは、1以上3以下の整数。)を生成する。
解答者Bは、鍵生成関数KDFと、衝突困難なハッシュ関数HFとをランダムに生成する。
解答者Bは、乗法群Gの要素gをランダムに選択する。
解答者Bは、乗法群Gの要素g1=g^αを算出する。
解答者Bは、3つの乗法群Gの要素h1=g^f(α)、h2=g^f(α)、h3=g^f(α)を算出する。
解答者Bは、1以上r未満の整数s0をランダムに生成する。
解答者Bは、乗法群Gの要素g’=g^s0を算出する。
解答者Bは、共通パラメータparams=(g,g1,h1,h2,h3,KDF,HF)を出力する。
ここで、g、α、f(x)、s0はランダムであるから、共通パラメータparamsの分布は、実際のPKG用鍵生成機能Sと同じ分布となる。
また、解答者Bは、以下のようにして、鍵導出オラクルOをシミュレートする。
解答者Bは、入力したユーザの識別情報ID(整数として取り扱う)が整数αと等しい場合、拒絶する。これは、実際の暗号システムΠにおいても同様である。
ID≠αである場合、解答者Bは、3つの整数rID,j=f(ID)(jは、1以上3以下の整数。)を算出する。
解答者Bは、(q−1)次多項式FID,j(x)=(f(x)−f(ID))/(x−ID)を算出する。
解答者Bは、3つの乗法群Gの要素hID,j=g^FID,j(α)(jは、1以上3以下の整数。)を算出する。
解答者Bは、秘密鍵dIDとして、dID=(rID,1,rID,2,rID,3,hID,1,hID,2,hID,3)を出力する。
ここで、h1=g^f(α)なので、hID,1=g^((f(α)−f(ID))/(α−ID))=(h1・g^(−f(ID)))^(1/(α−ID))である。hID,2、hID,3も同様である。rID,j=f(ID)なので、rID,jとhID,jとの関係は、実際の暗号システムΠと同じ関係になっている。
また、解答者Bは、以下のようにして、復号オラクルOをシミュレートする。
解答者Bは、上述した手順で鍵導出オラクルOをシミュレートして、秘密鍵dIDを生成する。
解答者Bは、生成した秘密鍵dIDに基づいて、実際の暗号システムΠと同様の手順により、暗号文Cを復号する。
更に、解答者Bは、以下のようにして、暗号化オラクルOをシミュレートする。
解答者Bは、入力したユーザの識別情報IDが整数αと等しい場合、実際の暗号システムΠと同様の手順により、暗号文Cを生成する。
ID≠αである場合、解答者Bは、上述した手順で鍵導出オラクルOをシミュレートして、秘密鍵dID =(rID ,1,rID ,2,rID ,3,hID ,1,hID ,2,hID ,3)を生成する。
解答者Bは、乗法群GTの要素Z=e(g,g’)^(α^(q+1))を算出する。
解答者Bは、(q+2)次多項式φ(x)=x^(q+2)に基づいて、(q+1)次多項式ΦID (x)=(φ(x)−φ(ID))/(x−ID)を算出する。算出した(q+1)次多項式ΦID (x)のτ次係数(τは、0以上q以下の整数。)を、ΦID ,τとする。
解答者Bは、1以上r未満の整数s’をランダムに生成する。
解答者Bは、乗法群Gの要素u=(g’^(φ(α)−φ(ID))^s’を算出する。
解答者Bは、乗法群GTの要素v=(Z・e(g’,Π(g^(ΦID ,τ・α^τ)))^s’を算出する。
解答者Bは、鍵ビット列k=KDF(e(u,hID ,1)・v^rID ,1)を算出する。
解答者Bは、鍵ビット列kにより、選択したメッセージを暗号化する。
解答者Bは、暗号化したメッセージを表わすビット列(第一暗号文C1)と、乗法群Gの要素uを表わすビット列(第二暗号文C2)と、乗法群Gの要素vを表わすビット列(第三暗号文C3)とを結合し、ハッシュ関数HFによりハッシュ値βを算出する。
解答者Bは、乗法群GTの要素y=e(u,hID ,2・hID ,3^β)・v^(rID ,2+rID ,3・β)を算出する。
解答者Bは、暗号文Cを生成し、出力する。
ここで、s=s’・s0・ΦID (α)とおく。
g’=g^s0、φ(α)−φ(ID)=ΦID (α)・(α−ID)、g1=g^αであるから、u=g^(s・(α−ID))=(g1・g^(−ID))^sである。
また、Π(g^(ΦID,τ・α^τ))=g^Σ(ΦID,τ・α^τ)=g^(ΦID(α)−α^(q+1))であるから、ペアリングeの双線形より、v=e(g,g)^sである。
更に、rID,j=f(ID)、hID,1=g^((f(α)−f(ID))/(α−ID))なので、k=KDF(e(g^(s・(α−ID)),g^((f(α)−f(ID))/(α−ID)))・e(g,g)^(s・f(ID))=KDF(e(g,g)^(s・f(ID)))=KDF(e(g,h1)^s)である。同様に、y=e(g,h2)^s・e(g,h3)^(s・β)である。
したがって、各暗号文の間の関係も、実際の暗号システムΠと同じ関係になっている。
また、sは、暗号化オラクルOの呼び出しごとに独立ランダムなので、暗号文の分布も、実際の暗号システムΠと同一の分布を有する。
更に、q=q+n+1であるから、鍵導出オラクルO、暗号化オラクルO、復号オラクルOで用いられる{f(ID)}及び{f(α)}は全て独立ランダムであり、解答者Bによるシミュレーションは完全である。
よって、ゲームGにおける攻撃者Aのアドバンテージは、ゲームGにおけるアドバンテージと同じであり、Pr[T]=Pr[T]である。
ゲームGは、ゲームGを以下のように変更したゲームである。
暗号化オラクルOのシミュレートにおいて、解答者Bは、乗法群GTの要素Z=e(g,g’)^(α^q+1))を算出する代わりに、以下の手順により、あらかじめ(例えば、PKG用鍵生成機能Sのシミュレート時に)Zを算出しておく。
解答者Bは、1以上乗法群Gの位数r未満の整数zをランダムに生成する。ただし、z≠α^(q+1)であるものとする。
解答者Bは、乗法群GTの要素Z=e(g,g’)^zを算出する。
もし、ゲームGにおける攻撃者Aの挙動と、ゲームGにおける攻撃者Aの挙動との間に何か違いがあるのであれば、解答者Bは、その違いを判別することにより、Z=e(g,g’)^(α^(q+1))であるか否かを判断できる。
そこで、解答者Bは、与えられたq−D−tABHE問題において与えられたパラメータを利用して、オラクルのシミュレートをする場合を考える。
解答者Bは、与えられたq−D−tABDHE問題において、解答者Bに知らされていない秘密の整数αを知らない代わりに、q+3個の乗法群Gの要素g’、g’q+2、g、g、…、gを知っているので、これを利用してシミュレーションを行うことができる。
すなわち、解答者Bは、q−D−tABDHE問題において与えられた乗法群Gの要素gを、PKG用鍵生成機能Sのシミュレートにおいて選択する乗法群Gの要素gとする。
また、解答者Bは、整数s0をランダムに生成する代わりに、q−D−tABDHE問題において与えられた乗法群Gの要素g’を、PKG用鍵生成機能Sのシミュレートにおいて算出する乗法群Gの要素g’(=g^s0)とする。
q次多項式f(x)のτ次係数をfj,τ(τは、0以上q以下の整数。)とすると、乗法群Gの要素h1は、h1=g^f(α)=Π(g^(fj,τ・α^τ))=Π(gτ^fj,τ)なので、解答者Bは、αを知らなくても、乗法群Gの要素h1を算出できる。h2、h3も同様である。
したがって、解答者Bは、αを知らなくても、PKG用鍵生成機能Sをシミュレートできる。
同様に、解答者Bは、αを知らなくても、鍵導出オラクルO及び復号オラクルOをシミュレートできる。また、解答者Bは、乗法群GTの要素Zの算出を除いて、暗号化オラクルOもシミュレートできる。
解答者Bは、乗法群GTの要素Zとして、q−D−tABDHE問題において与えられた乗法群GTの要素Zを使って、暗号化オラクルOをシミュレートする。
Z=(g,g’)^(α^(q+1))であれば、解答者Bは、ゲームGを行っていることになる。
Z≠(g,g’)^(α^(q+1))であれば、解答者Bは、ゲームGを行っていることになる。
解答者Bは、ゲーム内における攻撃者Aの挙動の違いからこれを判別し、Z=(g,g’)^(α^(q+1))であるか否かを判断して、与えられたq−D−tABDHE問題に答える。
したがって、|Pr[T]−Pr[T]|≦Advq−d−tabdhe k,G,GT(t)+3/p(ただし、t=t+O(q・t)。tは、乗法群Gにおける冪乗算にかかる時間。)が成り立つ。
ゲームGは、ゲームGを以下のように変更したゲームである。
解答者Bは、PKG用鍵生成機能Sのシミュレートにおいて、ランダムに生成したq次多項式f(x)を用いて乗法群Gの要素h1、h2、h3を算出するのではなく、乗法群Gの要素h1、h2、h3をランダムに選択する。
また、鍵導出オラクルOのシミュレートにおいて、解答者Bは、IDに対して、整数rID,jをランダムに生成し、乗法群Gの要素hID,1=(h1・g^(−rID,j))^(1/(α−ID)を算出する。hID,2、hID,3も同様に算出する。
解答者Bは、以下の手順により、暗号化オラクルOをシミュレートする。
解答者Bは、整数z’=(z−α^(q+1))/ΦID (α)を算出する。
解答者Bは、1以上乗法群Gの位数r未満の整数sをランダムに生成する。
解答者Bは、乗法群Gの要素u=g^(s・(α−ID))を算出する。
解答者Bは、乗法群GTの要素v=e(g,g)^(s・(1+z’))を算出する。
解答者Bは、鍵ビット列k=KDF(e(g,h1・g^(z’・rID,1)^s)を算出する。
解答者Bは、乗法群GTの要素y=e(g,h2・h3^β)^s・e(g,g)^(s・z’・(rID ,2+rID ,3・β))を算出する。
上記以外の部分は、ゲームGと同じである。
攻撃者Aから見ると、ゲームGとゲームGとは同じに見えるので、Pr[T]=Pr[T]である。
ゲームGは、ゲームGを以下のように変更したゲームである。
復号オラクルOのシミュレートにおいて、解答者Bは、v=e(u,g)^(1/(α−ID)及びy=e(u,h2・h3^β)が成立するか否かを判定し、成立しなければ「拒絶」を返す。
成立した場合、解答者Bは、鍵ビット列k’=KDF(e(u,h1)^(1/(α−ID)))を算出し、メッセージを復号する。
このように、解答者Bは、暗号文の整合性判定及び鍵ビット列k’の生成に、秘密鍵dIDを用いるのではなく、整数αを用いる。
暗号文の整合性判定において、実際の暗号システムΠでは、y=e(u,hID,2・hID,3^β)・v^(rID,2+rID,3・β)であるか否かを判定する。
判定方法が異なるので、実際の暗号システムΠでは拒絶されない暗号文を拒絶する場合がある。その事象をRとすると、|Pr[T4]−Pr[T3]|≦Pr[R]である。
ゲームGは、ゲームGを以下のように変更したゲームである。
暗号化オラクルOにおいて、解答者Bは、1以上乗法群Gの位数r未満の整数rをランダムに生成する。
解答者Bは、鍵ビット列k=KDF(e(g,g)^r)を算出する。
解答者Bは、暗号化オラクルOEが入力したメッセージM 、M に関わりなく、算出した鍵ビット列kを、そのまま暗号化したメッセージとする。
暗号化オラクルOの出力がb、M 、M とは独立なので、攻撃者Aにはアドバンテージがない。したがって、Pr[T]=1/2である。
ゲームGの説明で述べたように、復号オラクルOのシミュレートにおいて、解答者Bは整数rID,1を用いない。rID ,1が初めて(かつ唯一)用いられるのは、IDが暗号化オラクルOに入力されたときである。
したがって、まずrID ,1をランダムに生成し、それと整合するようにrを算出するのと、まずrをランダムに生成し、それと整合するようにrID ,1を算出するのとでは、(g,h1,z’,s,M)が固定されたときに(r,rID ,1)に対して同じ分布を与える。
したがって、攻撃者Aから見ると、ゲームGとゲームGとは同じに見える。
また、rID ,1は、この暗号化オラクルOEのシミュレート内以外で参照されることはないので、rに基づいて算出する必要はない。
以上より、Pr[T]=Pr「T]=1/2、Pr[R]=Pr[R]が成り立つ。なお、Rは、ゲームGにおいて、実際の暗号システムΠで拒絶されない暗号文を拒絶する事象を示す。
ゲームGは、ゲームGを以下のように変更したゲームである。
i番目の暗号化オラクルOのシミュレートにおいて、解答者Bは、入力したIDと、生成した暗号文Cと、算出したハッシュ値βとの組his =(ID ,C ,β )を、リストClistに保持する。
復号オラクルOのシミュレートにおいて、解答者Bは、暗号文の整合性判定の前に、以下の判定をする。
解答者Bは、保持したリストClistのなかに、ID と、入力したIDとが等しく、かつ、β と、入力した暗号文Cから算出したβとが等しいhis があるか否かを判定する。
等しいhis がある場合、解答者Bは、そのhis に含まれる暗号文C のうち(暗号文検証文CC を除いた)暗号文主文CB にあたる部分と、入力した暗号文Cのうち(暗号文検証文CCを除いた)暗号文主文CBにあたる部分とを比較し、等しくなけば「拒絶」を返す。
この判定により暗号文が拒絶される事象をCとする。また、実際の暗号システムΠでも、この判定でも拒絶されない暗号文が、ゲームGで変更した判定方法で拒絶される事象をRとすると、|Pr[R]−Pr[R]|≦Pr[C]である。
ここで、事象Cは、ハッシュ値算出のもととなるビット列が異なるのにハッシュ値βが等しい場合であるから、Pr[C]≦Advcr (t)である。なお、Advcr (t)は、ハッシュ関数HFの衝突困難性アドバンテージを表わす。
また、事象Rが成立するためには、0でないz’に対して、y=e(g,h2・h3^β)^s・e(g,g)^(s・z’・(rID,2+rID,3・β))となるyを復号オラクルOに入力する必要がある。
(rID,2,rID,3)は、各IDに対してランダムなので、IDが暗号化オラクルOEに入力される前に、そのようなyを選択する確率は、1/r以下(rは、乗法群GTの位数)である。
また、ID=ID を暗号化オラクルに入力したあとにおいて、β=β であれば、追加した判定により拒絶される。したがって、β≠β であり、上記条件を満たすyを選択する確率は、やはり1/r以下である。
したがって、Pr[R]≦q/rが成立する。
以上より、Advmu n,Π,Γ(t,q,q,q)≦q・Advq−d−tabdhe k,G,GT(t)+q・Advcr (t)+q・(q+3)/rとなる。
この実施の形態における対比例であるIDベース暗号方式Π’は、以上説明した単独受信者の暗号方式Πを、連接方式により複数受信者に拡張したものである。
実施の形態1で述べたように、連接方式により複数受信者に拡張した暗号方式のSMMR安全性はAdvsmmr n,Π’,Γ(t,q,q)≦Advmu n,Π,Γ(t,1,q,q)なので、この実施の形態における対比例であるIDベース暗号方式のSMMR安全性は、Advsmmr n,Π’,Γ(t,q,q)≦Advq−d−tabdhe k,G,GT(t)+Advcr (t)+(q+3)/rである。
これに対して、一般の単独受信者暗号方式を連接方式により複数受信者に拡張した場合のSMMR安全性は、Advsmmr n,Π’,Γ(t,q,q)≦n・Advmu 1,Π,Γ(t’,1,q,q)であるから、数学的な問題のアドバンテージとの間の関係を示す不等式に受信者数nが現れる。
すなわち、この実施の形態における対比例であるIDベース暗号方式は、一般の場合と比較して、SMMR安全性が、数学的な問題にタイトに帰着する(帰着効率がよい)。
このように、この実施の形態における対比例であるIDベース暗号方式は、よりよい安全性証明をすることできる。
次に、この実施の形態におけるIDベース暗号通信システム800について、説明する。
この実施の形態におけるIDベース暗号通信システム800の全体構成及び暗号パラメータ生成装置100のブロック構成は、対比例で説明したものと同様なので、ここでは説明を省略する。
この実施の形態におけるIDベース暗号通信システム800は、対比例で説明した複数受信者IDベース暗号方式を、ハッシュ値共通化により効率化したものである。
まず、暗号文生成装置200について説明する。
暗号文生成装置200のブロック構成は、対比例で説明したものと同様なので、図4を用いて、対比例と異なる部分について説明する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータを入力する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、暗号文主文生成部240が出力したn個の暗号文主文CBとして、第一暗号文生成部241が出力したn個の第一暗号文C1と、第二暗号文生成部242出力したn個の第二暗号文C2と、第三暗号文生成部243が出力したn個の第三暗号文C3とを入力する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、入力したn個の第一暗号文C1と、n個の第二暗号文C2と、n個の第三暗号文C3とをすべて結合して、1つの結合暗号文を生成する。
なお、ハッシュ値算出部244は、n個の暗号文主文CB(の一部)として、更に、受信者識別入力部232が出力したn個の受信者識別情報IDを入力し、入力したn個の受信者識別情報IDと、n個の第一暗号文C1と、n個の第二暗号文C2と、n個の第三暗号文C3とをすべて結合して、1つの結合暗号文を生成してもよい。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わすハッシュ関数HFと、生成した1つの結合暗号文とに基づいて、1つの結合暗号文をハッシュ関数HFにより変換した1つの自然数βを算出し、1つのハッシュ値Hとする。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、算出した1つの自然数βを表わす情報と、生成した1つの結合暗号文とを出力する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、乱数生成部222が出力したn個の整数sを表わす情報と、ハッシュ値算出部244が出力した1つの自然数βを表わす情報とを入力する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わすペアリングeと、乗法群G1の要素gと、乗法群G2の要素h2とに基づいて、乗法群G1の要素gと乗法群G2の要素h2とのペアリング値である乗法群GTの要素e(g,h2)を算出する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わすペアリングeと、乗法群G1の要素gと、乗法群G2の要素h3とに基づいて、乗法群G1の要素gと乗法群G2の要素h3とのペアリング値である乗法群GTの要素e(g,h3)を算出する。
なお、乗法群GTの要素e(g,h2)及び乗法群GTの要素e(g,h3)は、整数sにかかわらず一定なので、前もって算出し、磁気ディスク装置920などの記憶装置を用いて記憶しておいてもよい。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群GTと、入力した情報が表わす1つの自然数βと、算出した乗法群GTの要素e(g,h3)とに基づいて、乗法群GTの要素e(g,h3)のβ乗である1つの乗法群GTの要素e(g,h3)^βを算出する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群GTと、算出した乗法群GTの要素e(g,h2)と、算出した1つの乗法群GTの要素e(g,h3)^βとに基づいて、乗法群GTの要素e(g,h2)と乗法群GTの要素e(g,h3)^βとの積である1つの乗法群GTの要素e(g,h2)・e(g,h3)^βを算出する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群GTと、入力した情報が表わすn個の整数sと、算出した1つの乗法群GTの要素e(g,h2)・e(g,h3)^βとに基づいて、乗法群GTの要素e(g,h2)・e(g,h3)^βのs乗であるn個の乗法群GTの要素y=(e(g,h2)・e(g,h3)^β)^s(iは、1以上n以下の整数。)を算出する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、算出したn個の乗法群GTの要素yをそれぞれ表わすn個のビット列を、n個の暗号文検証文CC(iは、1以上n以下の整数。)として出力する。
暗号文結合部246は、CPU911などの処理装置を用いて、ハッシュ値算出部244が出力した1つの結合暗号文と、暗号文検証文生成部245が出力したn個の暗号文検証文CCとを入力する。
暗号文結合部246は、CPU911などの処理装置を用いて、入力した1つの結合暗号文と、入力したn個の暗号文検証文とをすべて結合して、1つの鍵暗号文Cを生成する。
暗号文結合部246は、CPU911などの処理装置を用いて、生成した1つの鍵暗号文Cを出力する。
図16は、この実施の形態における暗号文生成装置200のなかでやり取りされる情報の流れの一例を示す図である。
受信者識別入力部232は、n個の受信者識別情報ID、ID、…、IDを入力する。
乱数生成部222は、受信者識別入力部232が入力した受信者識別情報ID、ID、…、IDの数と同じ数であるn個の整数s、s、…、sを生成する。
第一暗号文生成部241は、平文Mと整数sとに基づいて第一暗号文C1を生成し、平文Mと整数sとに基づいて第一暗号文C1を生成し、…、平文Mと整数sとに基づいて第一暗号文C1を生成する。
第二暗号文生成部242は、受信者識別情報IDと整数sとに基づいて第二暗号文C2を生成し、受信者識別情報IDと整数sとに基づいて第二暗号文C2を生成し、…、受信者識別情報IDと整数sとに基づいて第二暗号文C2を生成する。
第三暗号文生成部243は、整数sに基づいて第三暗号文C3を生成し、整数sに基づいて第三暗号文C3を生成し、…、整数sに基づいて第三暗号文C3を生成する。
ここまでの流れは、対比例と同様である。
ハッシュ値算出部244は、第一暗号文C1と第二暗号文C2と第三暗号文C3と第一暗号文C1と第二暗号文C2と第三暗号文C3と…第一暗号文C1と第二暗号文C2と第三暗号文C3とをすべて結合して1つの結合暗号文(C1|C2|C3|C1|C2|C3|…|C1|C2|C3)を生成する。なお、結合の順序は、これと異なる順序であってもよい。
ハッシュ値算出部244は、生成した1つの結合暗号文(C1|C2|C3|C1|C2|C3|…|C1|C2|C3)に基づいて、1つのハッシュ値Hを算出する。
暗号文検証文生成部245は、整数sとハッシュ値Hとに基づいて暗号文検証文CCを生成し、整数sとハッシュ値Hとに基づいて暗号文検証文CCを生成し、…、整数sとハッシュ値Hとに基づいて暗号文検証文CCを生成する。
暗号文結合部246は、1つの結合暗号文(C1|C2|C3|C1|C2|C3|…|C1|C2|C3)と、暗号文検証文CCと暗号文検証文CCと…暗号文検証文CCとをすべて結合して、1つの鍵暗号文C=(C1|C2|C3|C1|C2|C3|…|C1|C2|C3|CC|CC|…|CC)を生成する。
なお、この例では、ハッシュ値算出部244が生成した結合暗号文をそのまま利用するため、暗号文の結合順序が対比例と異なっているが、暗号文の結合順序はこの順序に限らない。対比例で説明したのと同じ順序であってもよいし、他の順序であってもよい。
次に、暗号文受信装置301〜303について説明する。
暗号文受信装置301〜303のブロック構成も、対比例で説明したものと同様なので、図6を用いて、対比例と異なる部分について説明する。
暗号文分解部346は、CPU911などの処理装置を用いて、暗号文受信部351が出力した1つの鍵暗号文Cを入力する。
暗号文分解部346は、CPU911などの処理装置を用いて、入力した1つの鍵暗号文Cから、自身が対応する受信者に対応する対応第一暗号文C1IDと、対応第二暗号文C2IDと、対応第三暗号文C3IDと、対応暗号文検証文CCIDとを取得する。
暗号文分解部346は、CPU911などの処理装置を用いて、取得した対応第一暗号文C1IDと、対応第二暗号文C2IDと、対応第三暗号文C3IDと、対応暗号文検証文CCIDとを出力する。
例えば、1つの鍵暗号文Cが、図16に示したように、(C1|C2|C3|C1|C2|C3|…|C1|C2|C3|CC|CC|…|CC)という順序で暗号文を結合したものであるとする。
暗号文分解部346は、例えば、1つの鍵暗号文Cを、第一暗号文〜第三暗号文のビット長の和のn倍と、暗号文検証文のビット長のn倍とに分割して、検証結合暗号文(C1|C2|C3|C1|C2|C3|…|C1|C2|C3)と、結合暗号文検証文(CC|CC|…|CC)とを取得する。
暗号文分解部346は、検証結合暗号文(C1|C2|C3|C1|C2|C3|…|C1|C2|C3)を更に分割して、(C1|C2|C3)、(C1|C2|C3)、…、(C1|C2|C3)とし、そのなかから、自分に対応する対応暗号文(C1ID|C2ID|C3ID)を取得する。
暗号文分解部346は、取得した対応暗号文(C1ID|C2ID|C3ID)を分割して、対応第一暗号文C1IDと、対応第二暗号文C2IDと、対応第三暗号文C3IDとを取得する。
また、暗号文分解部346は、取得した結合暗号文検証文(CC|CC|…|CC)を分割して、CC、CC、…、CCとし、そのなかから、自分に対応する対応暗号文検証文CCIDを取得する。
暗号文分解部346は、取得した対応第一暗号文C1IDと、対応第二暗号文C2IDと、対応第三暗号文C3IDと、対応暗号文検証文CCIDとを出力する。
また、この例では、検証ハッシュ値算出部344が検証結合暗号文(C1|C2|C3|C1|C2|C3|…|C1|C2|C3)を生成する手間を省くため、暗号文分解部346は、CPU911などの処理装置を用いて、取得した検証結合暗号文(C1|C2|C3|C1|C2|C3|…|C1|C2|C3)も、あわせて出力する。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、暗号文分解部346が出力した検証結合暗号文(C1|C2|C3|C1|C2|C3|…|C1|C2|C3)を入力する。あるいは、検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、暗号文を結合し、検証結合暗号文(C1|C2|C3|C1|C2|C3|…|C1|C2|C3)を生成してもよい。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、公開パラメータ記憶部310が記憶した公開暗号パラメータを入力する。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わすハッシュ関数HFと、入力あるいは生成した検証結合暗号文(C1|C2|C3|C1|C2|C3|…|C1|C2|C3)とに基づいて、検証結合暗号文(C1|C2|C3|C1|C2|C3|…|C1|C2|C3)をハッシュ関数HFにより変換した自然数β’を算出し、ハッシュ値H’とする。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、算出した自然数β’を表わす情報を出力する。
次に、動作について説明する。
図17は、この実施の形態における暗号文生成装置200が暗号文を生成する暗号文生成処理の流れの一例を示すフローチャート図である。
なお、対比例で説明した暗号文生成処理の工程と共通する工程については、同一の符号を付す。
ハッシュ値算出工程S38において、ハッシュ値算出部244は、CPU911などの処理装置を用いて、第一暗号文生成工程S35で第一暗号文生成部241が生成したn人の受信者にそれぞれ対応するn個の第一暗号文C1と、第二暗号文生成工程S36で第二暗号文生成部242が生成したn人の受信者にそれぞれ対応するn個の第二暗号文C2と、第三暗号文生成工程S37で第三暗号文生成部243が生成したn人の受信者にそれぞれ対応するn個の第三暗号文C3とに基づいて、n人の受信者にそれぞれ対応するn個の第一暗号文C1と、n人の受信者にそれぞれ対応するn個の第一暗号文C2と、n人の受信者にそれぞれ対応するn個の第三暗号文C3とをすべて結合した1つの結合暗号文(C1|C2|C3|C1|C2|C3|…|C1|C2|C3)を生成する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わすハッシュ関数HFと、生成した1つの結合暗号文(C1|C2|C3|C1|C2|C3|…|C1|C2|C3)とに基づいて、1つの結合暗号文(C1|C2|C3|C1|C2|C3|…|C1|C2|C3)をハッシュ関数HFにより変換した1つの整数β=HF(C1|C2|C3|C1|C2|C3|…|C1|C2|C3)を算出する。
暗号文検証文生成工程S39において、暗号文検証文生成部245は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす乗法群GTとペアリングeと乗法群G1の要素gと2つの乗法群G2の要素h2、h3と、乱数生成工程S34で乱数生成部222が生成したn人の受信者にそれぞれ対応するn個の自然数sと、ハッシュ値算出工程S38でハッシュ値算出部244が算出した1つの整数βとに基づいて、n人の受信者にそれぞれ対応するn個の乗法群GTの要素y=e(g,h2)^s・e(g,h3)^(s・β)を算出する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、算出したn人の受信者にそれぞれ対応するn個の乗法群GTの要素yをそれぞれ表わすビット列を、n人の受信者にそれぞれ対応するn個の暗号文検証文CCとする。
図18は、この実施の形態における暗号文受信装置301〜303が暗号文を受信する暗号文受信処理の流れの一例を示すフローチャート図である。
なお、対比例で説明した暗号文受信処理の工程と共通する工程については、同一の符号を付す。
検証ハッシュ値算出工程S53において、検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、公開パラメータ記憶部310が記憶した公開暗号パラメータが表わすハッシュ関数HFと、検証結合暗号文(C1|C2|C3|C1|C2|C3|…|C1|C2|C3)とに基づいて、検証結合暗号文(C1|C2|C3|C1|C2|C3|…|C1|C2|C3)をハッシュ関数HFにより変換した整数β’=HF(C1|C2|C3|C1|C2|C3|…|C1|C2|C3)を算出する。
上記説明した以外の工程は、対比例で説明した工程と同様なので、ここでは説明を省略する。
以上のように、この実施の形態におけるIDベース暗号通信システム800は、対比例で説明したIDベース暗号通信システム800と比較して、1つの鍵暗号文Cの長さは変わらないが、暗号文生成処理に必要な計算量が減るので、暗号通信のコストを削減できる。
特に、ハッシュ値算出工程S38において、対比例で説明した方式の場合、n回のハッシュ値計算が必要だが、この方式の場合、1回のハッシュ値計算で済む。
また、暗号文検証文生成工程S39において、対比例で説明した方式の場合、2n回の乗法群GTにおける冪乗算と、n回の乗法群GTにおける乗算とが必要だが、この方式の場合、(n+1)回の乗法群GTにおける冪乗算と、1回の乗法群GTにおける乗算とをすればよく、受信者の人数が多い場合に、計算量を大幅に削減できる。
次に、この実施の形態におけるIDベース暗号通信システム800が使用するIDベース暗号方式のSMMR安全性について説明する。
なお、以下の説明では、暗号文主文CBに、それに対応する受信者を識別する受信者識別情報IDが含まれているものとする。
この実施の形態におけるIDベース暗号方式のSMMR安全性の証明は、対比例で説明したID暗号方式のもととなっている単独受信者のIDベース暗号方式のMU安全性の証明と並行した議論によって証明することができる。
ここでは、証明のうち共通する部分についての説明は省略し、異なる部分を説明する。
復号オラクルOD’は、ユーザの識別情報IDと、そのIDに対する(分節された)暗号文CIDとを入力する。
ここで、(分節された)暗号文CIDは、n個の暗号文主文CBと、n個の暗号文主文CBのうちそのIDに対応する対応暗号文主文CBIDがどれであるかを示す情報と、対応暗号文検証文CCIDとからなる。
復号オラクルOD’は、入力したn個の暗号文主文CBを結合して、検証結合暗号文を生成し、ハッシュ値β’を算出する。
復号オラクルOD’は、入力した情報が示す対応暗号文主文CBIDと、入力した対応暗号文検証文CCIDと、算出したハッシュ値β’と、鍵導出機能X’により生成した秘密鍵dIDとに基づいて、暗号文を検証する。
検証に失敗した場合、復号オラクルOD’は、「拒絶」を返す。
検証に成功した場合、復号オラクルOD’は、復号処理をして、復号したメッセージを返す。
ゲームGは、ゲームGを以下のように変更したゲームである。
暗号化オラクルOE’のシミュレートにおいて、解答者Bは、入力したID=(ID ,ID ,…,ID )と、生成したn個の暗号文主文CB=(CB ,CB ,…,CB )と、算出したハッシュ値β とを保持する。
復号オラクルOD’のシミュレートにおいて、解答者Bは、保持したβ と、入力したn個の暗号文主文CBに基づいて算出したハッシュ値β’とが等しいか否かを判定する。
等しい場合、解答者Bは、保持したIDのなかに、入力したIDと等しいID があるか判定し、入力したIDと等しいID がある場合、保持したn個の暗号文主文CBのうち、そのID に対応する暗号文主文CB と、入力した情報が示す対応暗号文主文CBIDとを比較し、等しくなければ「拒絶」を返す。
以上の相違点を除いて、証明の主要な部分の構成は変わらないので、この実施の形態におけるIDベース暗号方式のSMMR安全性は、Advsmmr n,Π’,Γ(t,q,q)≦Advq−d−tabdhe k,G,GT(t)+Advcr (t)+(q+3)/rである。
この実施の形態におけるIDベース暗号通信システム800によれば、SMMR−IND−ID−CCA2安全性を、数学的な問題にタイトに帰着する証明により証明することができるので、IDベース暗号通信システム800を使用して、安全な暗号通信を実現できるという効果を奏する。
この実施の形態における暗号文生成装置200は、以下の点を特徴とする。
暗号パラメータ記憶部210は、磁気ディスク装置920などの記憶装置を用いて、公開暗号パラメータとして、自然数rと、位数が上記自然数rである乗法群G1と、位数が上記自然数rである乗法群G2と、位数が上記自然数rである乗法群GTと、乗法群G1の要素と乗法群G2の要素とから乗法群GTの要素を算出するペアリングeと、乗法群GTの要素から所定の長さのビット列を算出する鍵生成関数KDFと、任意の長さのビット列から上記自然数r未満の自然数を算出するハッシュ関数HFと、乗法群G1の要素gと、乗法群G1の要素g1と、乗法群G2の要素g2と、乗法群G2の要素h1と、乗法群G2の要素h2と、乗法群G2の要素h3とを表わす情報を記憶することを特徴とする。
受信者識別入力部232は、CPU911などの処理装置を用いて、n個の整数IDをn個の受信者識別情報として入力することを特徴とする。
乱数生成部222は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす自然数rに基づいて、n人の受信者に対応するn個の1以上自然数r未満の整数s(iは、1以上n以下の整数。)をランダムに生成することを特徴とする。
第一暗号文生成部241は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素h1とペアリングeと、鍵生成関数KDFと、乱数生成部222が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の鍵ビット列k=KDF(e(g,h1)^s)(iは、1以上n以下の整数。)を算出し、CPU911などの処理装置を用いて、算出したn個の鍵ビット列kにより、平文入力部231が入力した平文Mをそれぞれ暗号化して、n人の受信者に対応するn個の第一暗号文C1(iは、1以上n以下の整数。)とすることを特徴とする。
第二暗号文生成部242は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす乗法群G1の要素gと、乗法群G1の要素g1と、受信者識別入力部232が入力したn個の整数IDと、乱数生成部222が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の乗法群G1の要素u=(g1・g^−ID)^s(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G1の要素uをそれぞれ表わすビット列を、n人の受信者に対応するn個の第二暗号文C2(iは、1以上n以下の整数。)とすることを特徴とする。
第三暗号文生成部243は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素g2とペアリングeと、乱数生成部222が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の乗法群GTの要素v=e(g,g2)^s(iは、1以上n以下の整数。)を算出し、算出した乗法群GTの要素vをそれぞれ表わすビット列を、n人の受信者に対応するn個の第三暗号文C3(iは、1以上n以下の整数。)とすることを特徴とする。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わすハッシュ関数HFに基づいて、1つの自然数βを算出して、ハッシュ値Hとすることを特徴とする。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素h2と乗法群G2の要素h3とペアリングeと、乱数生成部222が生成したn個の整数sと、ハッシュ値算出部244が算出した1つの自然数βとに基づいて、n人の受信者に対応するn個の乗法群GTの要素y=e(g,h2)^s・e(g,h3)^(s・β)(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群GTの要素yをそれぞれ表わすビット列を、n人の受信者に対応するn個の暗号文検証文CC(iは、1以上n以下の整数。)とすることを特徴とする。
この実施の形態における暗号文生成装置200によれば、暗号処理に必要な資源が少なくて済み、SMMR−IND−ID−CCA2安全性を数学的に証明できるIDベース暗号方式を利用した暗号通信を実現できるという効果を奏する。
この実施の形態におけるIDベース暗号通信システム800(暗号通信システム)は、以下の点を特徴とする。
暗号パラメータ生成装置100は、更に、群パラメータ記憶部111を有することを特徴とする。
群パラメータ記憶部111は、磁気ディスク装置920などの記憶装置を用いて、群パラメータとして、自然数rと、位数が上記自然数rである乗法群G1と、位数が上記自然数rである乗法群G2と、位数が上記自然数rである乗法群GTと、乗法群G1の要素と乗法群G2の要素とから乗法群GTの要素を算出するペアリングeとを表わす情報を記憶することを特徴とする。
秘密情報生成部112は、CPU911などの処理装置を用いて、群パラメータ記憶部が記憶した群パラメータが表わす自然数rに基づいて、1以上自然数r未満の整数αをランダムに生成することを特徴とする。
秘密情報記憶部121は、磁気ディスク装置920などの記憶装置を用いて、秘密情報生成部112が生成した整数αを表わす情報を秘密情報として記憶することを特徴とする。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、乗法群GTの要素から所定の長さのビット列を算出する鍵生成関数KDFと、任意の長さのビット列から上記自然数r未満の自然数を算出するハッシュ関数HFとを決定し、CPU911などの処理装置を用いて、群パラメータ記憶部111が記憶した群パラメータが表わす乗法群G1と乗法群G2とに基づいて、乗法群G1の要素gと乗法群G2の要素g2と乗法群G2の要素h1と乗法群G2の要素h2と乗法群G2の要素h3とをランダムに選択し、CPU911などの処理装置を用いて、秘密情報生成部112が生成した秘密情報が表わす整数αと、選択した乗法群G1の要素gとに基づいて、乗法群G1の要素g1=g^αを算出し、群パラメータ記憶部111が記憶した群パラメータと、決定した鍵生成関数KDFとハッシュ関数HFと、選択した乗法群G1の要素gと乗法群G2の要素g2と乗法群G2の要素h1と乗法群G2の要素h2と乗法群G2の要素h3と、算出した乗法群G1の要素g1とを表わす情報を公開暗号パラメータとすることを特徴とする。
識別情報入力部131は、CPU911などの処理装置を用いて、整数IDを受信者識別情報として入力することを特徴とする。
秘密鍵生成部132は、CPU911などの処理装置を用いて、公開パラメータ生成部113が生成した公開暗号パラメータが表わす自然数rに基づいて、1以上自然数r未満の整数rID,1と、1以上自然数r未満の整数rID,2と、1以上自然数r未満の整数rID,3とをランダムに生成し、CPU911などの処理装置を用いて、公開パラメータ生成部113が生成した公開暗号パラメータが表わす乗法群G2の要素g2と乗法群G2の要素h1と乗法群G2の要素h2と乗法群G2の要素h3と、秘密情報記憶部121が記憶した整数αと、識別情報入力部131が入力した整数IDと、生成した整数rID,1と整数rID,2と整数rID,3とに基づいて、乗法群G2の要素hID,1=(h1・g2^(−rID,1))^(1/(α−ID))と、乗法群G2の要素hID,2=(h2・g2^(−rID,2))^(1/(α−ID))と、乗法群G2の要素hID,3=(h3・g2^(−rID,3))^(1/(α−ID))とを算出し、生成した整数rID,1と整数rID,2と整数rID,3と、算出した乗法群G2の要素hID,1と乗法群G2の要素hID,2と乗法群G2の要素hID,3とを表わす情報を秘密鍵dIDとすることを特徴とする。
受信者識別入力部232は、CPU911などの処理装置を用いて、n個の整数IDをn個の受信者識別情報として入力することを特徴とする。
乱数生成部222は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす自然数rに基づいて、n人の受信者に対応するn個の1以上自然数r未満の整数s(iは、1以上n以下の整数。)をランダムに生成することを特徴とする。
第一暗号文生成部241は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素h1とペアリングeと、鍵生成関数KDFと、乱数生成部222が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の鍵ビット列k=KDF(e(g,h1)^s)(iは、1以上n以下の整数。)を算出し、CPU911などの処理装置を用いて、算出したn個の鍵ビット列kにより、平文入力部231が入力した平文Mをそれぞれ暗号化して、n人の受信者に対応するn個の第一暗号文C1(iは、1以上n以下の整数。)とすることを特徴とする。
第二暗号文生成部242は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす乗法群G1の要素gと、乗法群G1の要素g1と、受信者識別入力部232が入力したn個の整数IDと、乱数生成部222が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の乗法群G1の要素u=(g1・g^−ID)^s(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G1の要素uをそれぞれ表わすビット列を、n人の受信者に対応するn個の第二暗号文C2(iは、1以上n以下の整数。)とすることを特徴とする。
第三暗号文生成部243は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素g2とペアリングeと、乱数生成部222が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の乗法群GTの要素v=e(g,g2)^s(iは、1以上n以下の整数。)を算出し、算出した乗法群GTの要素vをそれぞれ表わすビット列を、n人の受信者に対応するn個の第三暗号文C3(iは、1以上n以下の整数。)とすることを特徴とする。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わすハッシュ関数HFに基づいて、1つの自然数βを算出して、ハッシュ値Hとすることを特徴とする。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素h2と乗法群G2の要素h3とペアリングeと、乱数生成部222が生成したn個の整数sと、ハッシュ値算出部244が算出した1つの自然数βとに基づいて、n人の受信者に対応するn個の乗法群GTの要素y=e(g,h2)^s・e(g,h3)^(s・β)(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群GTの要素yをそれぞれ表わすビット列を、n人の受信者に対応するn個の暗号文検証文CC(iは、1以上n以下の整数。)とすることを特徴とする。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、公開パラメータ記憶部310が記憶した公開暗号パラメータが表わすハッシュ関数HFに基づいて、自然数β’を算出して、検証ハッシュ値H’とすることを特徴とする。
暗号文検証部345は、CPU911などの処理装置を用いて、公開パラメータ記憶部310が記憶した公開暗号パラメータが表わすペアリングeと、秘密鍵記憶部323が記憶した秘密鍵dIDが表わす整数rID,2と整数rID,3と乗法群G2の要素hID,2と乗法群G2の要素hID,3と、暗号文分解部346が取得した1つの対応第二暗号文C2IDが表わす乗法群G1の要素uIDと1つの対応第三暗号文C3IDが表わす乗法群GTの要素vIDと、検証ハッシュ値算出部344が算出した自然数β’とに基づいて、乗法群GTの要素y’=e(uID,hID,2・hID,3^β’)・vID^(rID,2+rID,3・β’)を算出し、CPU911などの処理装置を用いて、算出した乗法群GTの要素y’と、暗号文分解部346が取得した対応暗号文検証文CCIDが表わす乗法群GTの要素yIDとを比較し、乗法群GTの要素y’と乗法群GTの要素yIDとが一致する場合に、暗号文受信部351が受信した1つの暗号文C(鍵暗号文C)に整合性があると判定することを特徴とする。
暗号文復号部341は、暗号文受信部351が受信した1つの暗号文Cに整合性があると、暗号文検証部345が判定した場合に、CPU911などの処理装置を用いて、公開パラメータ記憶部310が記憶した公開暗号パラメータが表わすペアリングeと鍵生成関数KDFと、秘密鍵記憶部323が記憶した秘密鍵dIDが表わす整数rID,1と乗法群G2の要素hID,1と、上記暗号文分解部が取得した1つの対応第二暗号文C2IDが表わす乗法群G1の要素uIDと、対応第三暗号文C3IDが表わす乗法群G2の要素vIDとに基づいて、鍵ビット列k’=KDF(e(uID,hID,1)・vID^rID,1)を算出し、CPU911などの処理装置を用いて、算出した鍵ビット列k’により、暗号文分解部346が取得した対応第一暗号文C1IDを復号して、平文Mを復元することを特徴とする。
この実施の形態におけるIDベース暗号通信システム800によれば、暗号処理に必要な資源が少なくて済み、SMMR−IND−ID−CCA2安全性を数学的に証明できるIDベース暗号方式を利用した暗号通信を実現できるという効果を奏する。
実施の形態3.
実施の形態3について、図18〜図24を用いて説明する。
この実施の形態におけるIDベース暗号通信システム800を説明する前に、まず、対比例であるIDベース暗号通信システムについて説明する。
この実施の形態における対比例であるIDベース暗号通信システムの全体構成は、実施の形態1で説明したものと同様なので、ここでは説明を省略する。
最初に、暗号パラメータ生成装置100について説明する。
暗号パラメータ生成装置100のブロック構成は、実施の形態1で説明したものと同様なので、図4を用いて、実施の形態1と異なる部分について説明する。
群パラメータ記憶部111は、磁気ディスク装置920などの記憶装置を用いて、群パラメータとして、自然数rと、乗法群G1と、乗法群G2と、乗法群GTと、ペアリングeを表わす情報を記憶する。
自然数rは、DH問題を解くことが困難な大素数である。
乗法群G1及び乗法群G2及び乗法群GTは、位数が自然数rである乗法群である。
なお、乗法群G1と乗法群G2とは、同じ乗法群でもよいし、異なる乗法群でもよい。乗法群G1と乗法群G2とが同じ乗法群である場合には、群パラメータ記憶部111は、乗法群G2を表わす情報を記憶しなくてもよい。
ペアリングeは、乗法群G1の要素と乗法群G2の要素とから、乗法群GTの要素を算出する写像である。ペアリングeは、双線形ペアリングであって、コンピュータのCPU911などの処理装置を用いて実用的な時間内に計算可能なペアリングであるものとする。
秘密情報生成部112は、CPU911などの処理装置を用いて、群パラメータ記憶部111が記憶した群パラメータを入力する。
秘密情報生成部112は、CPU911などの処理装置を用いて、入力した群パラメータが表わす自然数rに基づいて、1以上自然数r未満の整数αをランダムに生成する。
秘密情報生成部112は、CPU911などの処理装置を用いて、生成した整数αを表わす情報を出力する。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、群パラメータ記憶部111が記憶した群パラメータと、秘密情報生成部112が出力した整数αとを入力する。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、入力した群パラメータが表わす乗法群GTに基づいて、鍵生成関数KDFを決定する。
鍵生成関数KDFは、乗法群GTの要素から、所定の長さのビット列を算出する関数である。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、ハッシュ関数HFを決定する。
ハッシュ関数HFは、任意の長さのビット列から、所定の長さのビット列を算出する関数である。なお、ハッシュ関数HFは、異なるビット列から同じビット列を算出する確率が極めて低いものとする。
以下、ハッシュ関数HFが出力するビット列の長さは、mビットであるものとする。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、入力した群パラメータが表わす乗法群G2に基づいて、2つの関数V1及びV2を決定する。
関数V1及びV2は、所定の長さのビット列から、乗法群G2の要素を算出する関数である。
関数V1及びV2が入力するビット列の長さは、ハッシュ関数HFが出力するビット列の長さと等しく、mビットである。
この対比例において、関数V1及びV2が入力するmビットのビット列は、m1個のm2ビットのビット列に分解できるものとする。すなわち、m=m1・m2であるとする。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、入力した群パラメータが表わす乗法群G2に基づいて、(m1+2)個の乗法群G2の要素h、h、…、hm1、h’、h’をランダムに選択する。
関数V1及びV2の入力となるmビットのビット列をID=(ν|ν|…|νm1)(νξ(ξは、1以上m1以下の整数。)は、m2ビットのビット列。)とする。
関数V1は、νξを0以上2m2未満の整数と解釈して、公開パラメータ生成部113が選択した(m1+1)個の乗法群G2の要素h、h、…、hm1、h’に基づいて、乗法群G2の要素hのν乗と、乗法群G2の要素hのν乗と、…、乗法群G2の要素hm1のνm1乗と、乗法群G2の要素h’との総積である乗法群G2の要素h’・Π(hξ^νξ)(ξは、1以上m1以下の整数。)を、関数V1が出力する乗法群G2の要素V1(ID)とするものと定義する。
関数V2も同様に、公開パラメータ生成部113が選択した(m1+1)個の乗法群G2の要素h、h、…、hm1、h’に基づいて、乗法群G2の要素hのν乗と、乗法群G2の要素hのν乗と、…、乗法群G2の要素hm1のνm1乗と、乗法群G2の要素h’との総積である乗法群G2の要素h’・Π(hξ^νξ)(ξは、1以上m1以下の整数。)を、関数V2が出力する乗法群G2の要素V2(ID)とするものと定義する。
公開パラメータ生成部113は、関数V1及びV2を計算するために必要な(m1+2)個の乗法群G2の要素h、h、…、hm1、h’、h’を選択することにより、関数V1及びV2を決定する。
なお、関数V1及びV2は、上記説明した定義によるものでなくてもよい。また、関数V1と関数V2とが、同じ関数であってもよい。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、入力した群パラメータが表わす乗法群G1に基づいて、乗法群G1の要素gをランダムに選択する。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、入力した群パラメータが表わす乗法群G2に基づいて、乗法群G2の要素g2をランダムに選択する。
ただし、乗法群G1の要素gと乗法群G2の要素g2とのペアリング値である乗法群GTの要素e(g,g2)が乗法群GTの単位元とならないように、乗法群G1の要素gと乗法群G2の要素g2とを選択する。
なお、乗法群G1と乗法群G2とが同じ乗法群である場合には、乗法群G1の要素gと乗法群G2の要素g2とは、異なる要素を選択する。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、入力した群パラメータが表わす乗法群G1と、選択した乗法群G1の要素gと、入力した情報が表わす整数αとに基づいて、乗法群G1の要素gのα乗である乗法群G1の要素g1=g^αを算出する。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、入力した群パラメータと、決定した鍵生成関数KDFと、決定したハッシュ関数HFと、決定した2つの関数V1、V2と、選択した乗法群G1の要素gと、算出した乗法群G1の要素g1と、選択した乗法群G2の要素g2とを表わす情報を、公開暗号パラメータとして出力する。
なお、公開暗号パラメータは、関数V1及びV2を表わす情報として、(m1+2)個の乗法群G2の要素h、h、…、hm1、h’、h’を表わす情報を含む。
秘密情報生成部112は、CPU911などの処理装置を用いて、公開パラメータ生成部113が出力した公開暗号パラメータを入力する。
秘密情報生成部112は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群G2と乗法群G2の要素g2と、生成した整数αとに基づいて、乗法群G2の要素g2のα乗である乗法群G2の要素g2^αを算出する。
秘密情報生成部112は、CPU911などの処理装置を用いて、算出した乗法群G2の要素g2^αを表わす情報を出力する。
秘密情報記憶部121は、CPU911などの処理装置を用いて、秘密情報生成部112が出力した乗法群G2の要素g2^αを表わす情報を、秘密情報として入力する。
秘密情報記憶部121は、磁気ディスク装置920などの記憶装置を用いて、入力した乗法群G2の要素msk=g2^αを表わす情報を記憶する。
なお、秘密情報記憶部121は、秘密情報生成部112が算出した乗法群G2の要素mskを表わす情報の代わりに、秘密情報生成部112が生成した整数αを表わす情報を記憶してもよい。
識別情報入力部131は、CPU911などの処理装置を用いて、受信者識別情報IDを入力する。
以下の説明において、暗号パラメータ生成装置100は、受信者識別情報IDをmビットのビット列として取り扱う。
例えば、暗号パラメータ生成装置100は、メールアドレスなどの任意の長さのビット列にパディングビット列を付加することにより、mビットのビット列とし、受信者識別情報とする。
あるいは、暗号パラメータ生成装置100は、メールアドレスなどの任意の長さのビット列を、ハッシュ関数(公開パラメータ生成部113が決定したハッシュ関数HFと同じハッシュ関数であってもよいし、異なるハッシュ関数であってもよい。)の入力とし、ハッシュ関数により算出したmビットのビット列を取得して、受信者識別情報としてもよい。
すなわち、識別情報入力部131は、CPU911などの処理装置を用いて、mビットのビット列IDを受信者識別情報として入力する。
識別情報入力部131は、CPU911などの処理装置を用いて、入力したmビットのビット列IDを出力する。
秘密鍵生成部132は、CPU911などの処理装置を用いて、秘密情報記憶部121が記憶した乗法群G2の要素mskを表わす情報と、パラメータ記憶部122が記憶した公開暗号パラメータと、識別情報入力部131が出力したmビットのビット列IDとを入力する。
秘密鍵生成部132は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす自然数rに基づいて、整数rIDをランダムに生成する。整数rIDは、1以上r未満の整数である。
秘密鍵生成部132は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす関数V1と、入力した長さmのビット列IDとに基づいて、mビットのビット列IDを、関数V1により変換した乗法群G2の要素V1(ID)を算出する。
秘密鍵生成部132は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群G2と、算出した乗法群G2の要素V1(ID)と、生成した整数rIDとに基づいて、乗法群G2の要素V1(ID)のrID乗である乗法群G2の要素V1(ID)^rIDを算出する。
秘密鍵生成部132は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群G2と、入力した情報が表わす乗法群G2の要素mskと、算出した乗法群G2の要素V1(ID)^rIDとに基づいて、乗法群G2の要素mskと乗法群G2の要素V1(ID)^rIDとの積である乗法群G2の要素d0ID=msk・V1(ID)^rIDを算出する。
秘密鍵生成部132は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群G1と乗法群G1の要素gと、生成した整数rIDとに基づいて、乗法群G1の要素gのrID乗である乗法群G1の要素d1ID=g^rIDを算出する。
秘密鍵生成部132は、CPU911などの処理装置を用いて、算出した乗法群G2の要素d0IDと、算出した乗法群G1の要素d1IDとを表わす情報を、秘密鍵dIDとして出力する。
次に、、暗号文生成装置200について説明する。
暗号文生成装置200の機能ブロックの構成も、実施の形態1で説明したものと同様なので、図5を用いて、実施の形態1と異なる部分について説明する。
暗号文生成装置200は、暗号パラメータ生成装置100と同様、受信者識別情報IDをmビットのビット列として取り扱う。
受信者識別入力部232は、CPU911などの処理装置を用いて、n人の受信者(nは、1以上の整数。)をそれぞれ識別するn個の受信者識別情報として、n個のmビットのビット列ID(iは、1以上n以下の整数。)を入力する。
受信者識別入力部232は、CPU911などの処理装置を用いて、入力したn個のmビットのビット列IDを出力する。
乱数生成部222は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータを入力する。
乱数生成部222は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす自然数rに基づいて、n人の受信者にそれぞれ対応するn個の1以上自然数r未満の整数s(iは、1以上n以下の整数。)をランダムに生成する。
乱数生成部222は、CPU911などの処理装置を用いて、生成したn個の整数siを表わす情報を出力する。
第一暗号文生成部241は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、乱数生成部222が出力したn個の整数sを表わす情報と、平文入力部231が出力した平文Mとを入力する。
第一暗号文生成部241は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わすペアリングeと乗法群G1の要素g1と乗法群G2の要素g2とに基づいて、乗法群G1の要素g1と乗法群G2の要素g2とのペアリング値である乗法群GTの要素e(g1,g2)を算出する。
なお、乗法群GTの要素e(g1,g2)は、整数sや平文Mにかかわらず一定なので、前もって算出し、磁気ディスク装置920などの記憶装置を用いて記憶しておいてもよい。
第一暗号文生成部241は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群GTと、算出した乗法群GTの要素e(g1,g2)と、入力した情報が表わすn個の整数sとに基づいて、乗法群GTの要素e(g1,g2)のs乗であるn個の乗法群GTの要素e(g1,g2)^s(iは、1以上n以下の整数。)を算出する。
第一暗号文生成部241は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす鍵生成関数KDFと、算出したn個の乗法群GTの要素e(g1,g2)^sとに基づいて、乗法群GTの要素e(g1,g2)^sを鍵生成関数KDFにより変換した所定の長さのビット列であるn個の鍵ビット列k=KDF(e(g1,g2)^s)(iは、1以上n以下の整数。)を算出する。
第一暗号文生成部241は、CPU911などの処理装置を用いて、入力した平文Mと、算出したn個の鍵ビット列kとに基づいて、平文Mをn個の鍵ビット列kによりそれぞれ暗号化したn個のビット列を生成して、n個の第一暗号文C1(iは、1以上n以下の整数。)とする。
第一暗号文生成部241は、CPU911などの処理装置を用いて、生成したn個の第一暗号文C1を出力する。
第二暗号文生成部242は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、乱数生成部222が出力したn個の整数sを表わす情報と、受信者識別入力部232が出力したn個のmビットのビット列IDとを入力する。
第二暗号文生成部242は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす関数V1と、入力したn個のmビットのビット列IDとに基づいて、mビットのビット列IDを関数V1により変換したn個の乗法群G2の要素V1(ID)(iは、1以上n以下の整数。)を算出する。
なお、関数V1の計算は、例えば、以下の手順による。
第二暗号文生成部242は、CPU911などの処理装置を用いて、入力したn個のmビットのビット列IDそれぞれを、m1個のm2ビットのビット列νiξ(iは、1以上n以下の整数。ξは、1以上m1以下の整数。m=m1・m2。)に分解する。結果として、分解したm2ビットのビット列νiξの数は、全部でn・m1個になる。以下の説明では、煩雑さを避けるため、1つのmビットのビット列IDについて、関数V1の値V1(ID)を計算する手順を述べる。
第二暗号文生成部242は、分解したm2ビットのビット列νiξを、0以上2のm2乗未満の整数として取り扱う。例えば、すべてのビットが「0」のビット列νiξを整数0として取り扱い、すべてのビットが「1」のビット列νiξを整数2m2−1として取り扱う。どのビット列をどの整数として取り扱ってもよいが、CPU911などの処理装置内部における整数の表現形式により定まる対応関係に基づいた取り扱いをするほうが、変換の手間が省けるので好ましい。以下の記述において、「整数νiξ」とは、m2ビットのビット列νiξを整数として取り扱った場合の整数を意味する。
第二暗号文生成部242は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群G2とm1個の乗法群G2の要素hξ(ξは、1以上m1以下の整数。)と、m1個の整数νiξとに基づいて、乗法群G2の要素hξのνiξ乗であるm1個の乗法群G2の要素hξ^νiξを算出する。
第二暗号文生成部242は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群G2と乗法群G2の要素h1’と、算出したm1個の乗法群G2の要素hξ^νiξとに基づいて、乗法群G2の要素h1’とm1個の乗法群G2の要素hξ^νiξとをすべて乗じた結果である1つの乗法群G2の要素h1’・Π(hξ^νiξ)(ξは、1以上m1以下の整数。)を算出する。
第二暗号文生成部242は、算出した1つの乗法群G2の要素h1’・Π(hξ^νiξ)を、関数V1の値V1(ID)とする。
n個の乗法群G2の要素V1(ID)を算出するには、以上の手順をn回行う。
第二暗号文生成部242は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群G2と、算出したn個の乗法群G2の要素V1(ID)と、入力した情報が表わすn個の整数sとに基づいて、乗法群G2の要素V1(ID)のs乗であるn個の乗法群G2の要素u=V1(ID)^s(iは、1以上n以下の整数。)を算出する。
第二暗号文生成部242は、CPU911などの処理装置を用いて、算出したn個の乗法群G2の要素uをそれぞれ表わすn個のビット列を、n個の第二暗号文C2(iは、1以上n以下の整数。)として出力する。
第三暗号文生成部243は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、乱数生成部222が出力したn個の整数sを表わす情報とを入力する。
第三暗号文生成部243は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群G1と乗法群G1の要素gと、入力した情報が表わすn個の整数sとに基づいて、乗法群G1の要素gのs乗であるn個の乗法群G1の要素v=g^s(iは、1以上n以下の整数。)を算出する。
第三暗号文生成部243は、CPU911などの処理装置を用いて、算出したn個の乗法群G1の要素vをそれぞれ表わすn個のビット列を、n個の第三暗号文C3(iは、1以上n以下の整数。)として出力する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータを入力する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、暗号文主文生成部240が出力したn個の暗号文主文CBとして、第一暗号文生成部241が出力したn個の第一暗号文C1と、第二暗号文生成部242が出力したn個の第二暗号文C2と、第三暗号文生成部243が出力したn個の第三暗号文C3とを入力する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、入力したn個の第一暗号文C1と、n個の第二暗号文C2と、n個の第三暗号文C3とをそれぞれ結合して、n個の結合暗号文を生成する。
なお、ハッシュ値算出部244は、n個の暗号文主文CB(の一部)として、更に、受信者識別入力部232が出力したn個の受信者識別情報IDを入力し、入力したn個の受信者識別情報IDと、n個の第一暗号文C1と、n個の第二暗号文C2と、n個の第三暗号文C3とをすべて結合して、1つの結合暗号文を生成してもよい。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わすハッシュ関数HFと、生成したn個の結合暗号文とに基づいて、n個の結合暗号文をハッシュ関数HFによりそれぞれ変換したn個のmビットのビット列wを算出し、n個のハッシュ値Hとする。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、算出したn個のmビットのビット列wを表わす情報と、生成したn個の結合暗号文とを出力する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、乱数生成部222が出力したn個の整数sを表わす情報と、ハッシュ値算出部244が出力したn個のmビットのビット列wを表わす情報とを入力する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす関数V2と、入力したn個のmビットのビット列wとに基づいて、mビットのビット列wを関数V2によりそれぞれ変換したn個の乗法群G2の要素V2(w)(iは、1以上n以下の整数。)を算出する。
なお、関数V2の計算は、例えば、以下の手順による。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、入力したn個のmビットのビット列wそれぞれを、m1個のm2ビットのビット列νiξ(iは、1以上n以下の整数。ξは、1以上m1以下の整数。m=m1・m2。)に分解する。結果として、分解したm2ビットのビット列νiξの数は、全部でn・m1個になる。以下の説明では、1つのmビットのビット列wについて、関数V2の値V2(w)を計算する手順を述べる。
暗号文検証文生成部245は、分解したm2ビットのビット列νiξを、0以上2のm2乗未満の整数として取り扱う。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群G2とm1個の乗法群G2の要素hξ(ξは、1以上m1以下の整数。)と、m1個の整数νiξとに基づいて、乗法群G2の要素hξのνiξ乗であるm1個の乗法群G2の要素hξ^νiξを算出する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群G2と乗法群G2の要素h2’と、算出したm1個の乗法群G2の要素hξ^νiξとに基づいて、乗法群G2の要素h2’とm1個の乗法群G2の要素hξ^νiξとをすべて乗じた結果である1つの乗法群G2の要素h2’・Π(hξ^νiξ)(ξは、1以上m1以下の整数。)を算出する。
暗号文検証文生成部245は、算出した1つの乗法群G2の要素h2’・Π(hξ^νiξ)を、関数V2の値V2(ID)とする。
n個の乗法群G2の要素V2(ID)を算出するには、以上の手順をn回行う。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、入力した情報が表わすn個の整数sと、算出したn個の乗法群G2の要素V2(w)とに基づいて、乗法群G2の要素V2(w)のs乗であるn個の乗法群G2の要素y=V2(w)^s(iは、1以上n以下の整数。)を算出する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、算出したn個の乗法群G2の要素yをそれぞれ表わすn個のビット列を、n個の暗号文検証文CC(iは、1以上n以下の整数。)として出力する。
暗号文結合部246は、CPU911などの処理装置を用いて、ハッシュ値算出部244が出力したn個の結合暗号文と、暗号文検証文生成部245が出力したn個の暗号文検証文CCとを入力する。
暗号文結合部246は、CPU911などの処理装置を用いて、入力したn個の結合暗号文と、入力したn個の暗号文検証文とをすべて結合して、1つの鍵暗号文Cを生成する。
暗号文結合部246は、CPU911などの処理装置を用いて、生成した1つの鍵暗号文Cを出力する。
なお、この例において、暗号文結合部246は、ハッシュ値算出部244が出力したn個の結合暗号文を入力するが、結合暗号文は第一暗号文C1と第二暗号文C2と第三暗号文C3とを結合したものなので、暗号文結合部246は、n個の第一暗号文C1とn個の第二暗号文C2とn個の第三暗号文C3とを入力したことになる。
この実施の形態における対比例である暗号文生成装置200のなかでやり取りされる情報の流れは、実施の形態2で図11を用いて説明したものと同様である。
次に、暗号文受信装置301〜303について説明する。
暗号文受信装置301〜303の機能ブロックの構成も、実施の形態1で説明したものと同様なので、図6を用いて、実施の形態1と異なる部分について説明する。
暗号文分解部346は、CPU911などの処理装置を用いて、暗号文受信部351が出力した1つの鍵暗号文Cを入力する。
暗号文分解部346は、CPU911などの処理装置を用いて、入力した1つの鍵暗号文Cから、自身が対応する受信者に対応する対応第一暗号文C1IDと、対応第二暗号文C2IDと、対応第三暗号文C3IDと、対応暗号文検証文CCIDとを取得する。
暗号文分解部346は、CPU911などの処理装置を用いて、取得した対応第一暗号文C1IDと、対応第二暗号文C2IDと、対応第三暗号文C3IDと、対応暗号文検証文CCIDとを出力する。
また、暗号文分解部346は、CPU911などの処理装置を用いて、検証結合暗号文(C1ID|C2ID|C3ID)を取得し、出力してもよい。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、暗号文分解部346が出力した対応第一暗号文C1IDと、対応第二暗号文C2IDと、対応第三暗号文C3IDとを入力する。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、入力した対応第一暗号文C1IDと、対応第二暗号文C2IDと、対応第三暗号文C3IDとを結合して、検証結合暗号文(C1ID|C2ID|C3ID)を生成する。
あるいは、検証ハッシュ値算出部344は、検証結合暗号文(C1ID|C2ID|C3ID)を生成する代わりに、暗号文分解部346が出力した検証結合暗号文(C1ID|C2ID|C3ID)を入力してもよい。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、公開パラメータ記憶部310が記憶した公開暗号パラメータを入力する。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わすハッシュ関数HFと、生成あるいは入力した検証結合暗号文(C1ID|C2ID|C3ID)とに基づいて、検証結合暗号文(C1ID|C2ID|C3ID)をハッシュ関数HFにより変換したmビットのビット列w’を算出し、ハッシュ値H’とする。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、算出したmビットのビット列w’を表わす情報を出力する。
暗号文検証部345は、CPU911などの処理装置を用いて、公開パラメータ記憶部310が記憶した公開暗号パラメータと、暗号文分解部346が出力した対応第二暗号文C2IDと対応第三暗号文C3IDと、自身が対応する受信者を識別するmビットのビット列IDと、検証ハッシュ値算出部344が出力したmビットのビット列w’とを入力する。
暗号文検証部345は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす関数V1と、入力したmビットのビット列IDとに基づいて、mビットのビット列IDを関数V1により変換した乗法群G2の要素V1(ID)を算出する。
なお、暗号文検証部345が関数V1を計算する手順は、例えば、上記説明した暗号文生成装置200の第二暗号文生成部242が関数V1を計算する手順と同様なので、ここでは説明を省略する。
暗号文検証部345は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わすペアリングeと、入力した対応第三暗号文C3IDが表わす乗法群G1の要素vIDと、算出した乗法群G2の要素V1(ID)とに基づいて、乗法群G1の要素vIDと乗法群G2の要素V1(ID)とのペアリング値である乗法群GTの要素e(vID,V1(ID))を算出する。
暗号文検証部345は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わすペアリングeと乗法群G1の要素gと、入力した対応第二暗号文C2IDが表わす乗法群G2の要素uIDとに基づいて、乗法群G1の要素gと乗法群G2の要素uIDとのペアリング値である乗法群GTの要素e(g,uID)を算出する。
暗号文検証部345は、CPU911などの処理装置を用いて、算出した乗法群GTの要素e(vID,V1(ID))と、算出した乗法群GTの要素e(g,uID)とを比較し、一致しない場合に、暗号文受信部351が入力した1つの鍵暗号文Cに整合性がないと判定する。
算出した乗法群GTの要素e(vID,V1(ID))と、算出した乗法群GTの要素e(g,uID)とが一致する場合、暗号文検証部345は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす関数V2と、入力したmビットのビット列w’とに基づいて、mビットのビット列w’を関数V2により変換した乗法群G2の要素V2(w’)を算出する。
なお、暗号文検証部345が関数V2を計算する手順は、例えば、上記説明した暗号文生成装置200の暗号文検証文生成部245が関数V2を計算する手順と同様なので、ここでは説明を省略する。
暗号文検証部345は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わすペアリングeと、入力した対応第三暗号文C3IDが表わす乗法群G1の要素vIDと、算出した乗法群G2の要素V2(w’)とに基づいて、乗法群G1の要素vIDと乗法群G2の要素V2(w’)とのペアリング値である乗法群GTの要素e(vID,V2(w’))を算出する。
暗号文検証部345は、CPU911などの処理装置を用いて、暗号文分解部346が出力した対応暗号文検証文CCIDを入力する。
暗号文検証部345は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わすペアリングeと乗法群G1の要素gと、入力した対応暗号文検証文CCIDが表わす乗法群G2の要素yIDとに基づいて、乗法群G1の要素gと乗法群G2の要素yIDとのペアリング値である乗法群GTの要素e(g,yID)を算出する。
暗号文検証部345は、CPU911などの処理装置を用いて、算出した乗法群GTの要素e(vID,V2(w’))と、算出した乗法群GTの要素e(g,yID)とを比較する。一致する場合に、暗号文検証部345は、CPU911などの処理装置を用いて、暗号文受信部351が入力した1つの鍵暗号文Cに整合性があると判定し、一致しない場合に、暗号文受信部351が入力した1つの鍵暗号文Cに整合性がないと判定する。
ここで、暗号文受信部351が入力した1つの鍵暗号文Cに整合性があれば、uID=V1(ID)^sID、vID=g^sIDなので、ペアリングeの双線形より、e(vID,V1(ID))=e(g,uID)=e(g,V1(ID))^sIDとなる。
また、yID=V2(wID)^sIDなので、w’=wIDなら、e(vID,V2(w’)=e(g,yID)=e(g,V2(wID))^sIDとなる。
暗号文受信部351が入力した1つの鍵暗号文Cに整合性があると、暗号文検証部345が判定した場合、暗号文復号部341は、平文Mを復元するため、以下の処理をする。
暗号文復号部341は、CPU911などの処理装置を用いて、公開パラメータ記憶部310が記憶した公開暗号パラメータと、秘密鍵記憶部323が記憶した秘密鍵dIDと、暗号文分解部346が出力した対応第一暗号文C1IDと対応第二暗号文C2IDと対応第三暗号文C3IDとを入力する。
暗号文復号部341は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わすペアリングeと、入力した秘密鍵dIDが表わす乗法群G2の要素d0IDと、入力した対応第三暗号文C3IDが表わす乗法群G1の要素vIDとに基づいて、乗法群G1の要素vIDと乗法群G2の要素d0IDとのペアリング値である乗法群GTの要素e(vID,d0ID)を算出する。
暗号文復号部341は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わすペアリングeと、入力した秘密鍵dIDが表わす乗法群G1の要素d1IDと、入力した対応第二暗号文C2IDが表わす乗法群G2の要素uIDとに基づいて、乗法群G1の要素d1IDと乗法群G2の要素uIDとのペアリング値である乗法群GTの要素e(d1ID,uID)を算出する。
暗号文復号部341は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群GTと、算出した乗法群GTの要素e(vID,d0ID)と、算出した乗法群GTの要素e(d1ID,uID)とに基づいて、乗法群GTの要素e(vID,d0ID)と乗法群GTの要素e(d1ID,uID)の逆数との積である乗法群GTの要素e(vID,d0ID)/e(d1ID,uID)を算出する。
ここで、乗法群GTの要素e(d1ID,uID)の逆数とは、乗法群GTにおける逆数を意味する。すなわち、乗法群GTの要素e(dID,2,uID)の逆数とは、乗法群GTの要素e(d1ID,uID)との積が乗法群GTの単位元となる乗法群GTの要素のことである。
暗号文復号部341は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす鍵生成関数KDFと、算出した乗法群GTの要素e(vID,d0ID)/e(d1ID,uID)とに基づいて、乗法群GTの要素e(vID,d0ID)/e(d1ID,uID)を鍵生成関数KDFにより変換した鍵ビット列k’=KDF(e(vID,d0ID)/e(d1ID,uID))を算出する。
暗号文復号部341は、CPU911などの処理装置を用いて、入力した対応第一暗号文C1IDと、算出した鍵ビット列k’とに基づいて、対応第一暗号文C1IDを鍵ビット列k’により復号したビット列を生成する。
ここで、暗号文生成装置200の第一暗号文生成部241が算出する鍵ビット列kは、k=KDF(e(g1,g2)^s)である。g1=g^αなので、ペアリングeの双線形より、e(g1,g2)^s=e(g,g2)^(α・s)である。
一方、暗号文復号部341が算出する鍵ビット列k’は、k’=KDF(e(vID,d0ID)/e(d1ID,uID))である。d0ID=g2^α・V1(ID)^rID、d1ID=g^rID、uID=V1(ID)^sID、vID=g^sIDなので、ペアリングeの双線形より、e(vID,d0ID)=e(g,g2)^(α・sID)・e(g,V1(ID))^(rID・sID)、e(d1ID,uID)=e(g,V1(ID))^(rID・sID)である。
したがって、k’=KDF(e(g,g2)^(α・sID))なので、k’=kIDとなる。
暗号文復号部341は、暗号文生成装置200の第一暗号文生成部241が平文Mを暗号化した鍵ビット列と同一の鍵ビット列k’により、対応第一暗号文C1IDを復号するので、平文Mが復元できる。
次に、動作について説明する。
図19は、この実施の形態における対比例である暗号パラメータ生成装置100が公開暗号パラメータを設定するパラメータ設定処理の流れの一例を示すフローチャート図である。
なお、実施の形態1で説明したパラメータ設定処理の工程と共通する工程については、同一の符号を付す。
秘密情報生成工程S11において、秘密情報生成部112は、CPU911などの処理装置を用いて、群パラメータ記憶部111が記憶した群パラメータが表わす自然数rに基づいて、1以上自然数r未満の整数αをランダムに生成する。
暗号パラメータ生成工程S12において、公開パラメータ生成部113は、CPU911などの処理装置を用いて、群パラメータ記憶部111が記憶した群パラメータが表わす乗法群GTと自然数rとに基づいて、鍵生成関数KDFとハッシュ関数HFとを決定する。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、群パラメータ記憶部111が記憶した群パラメータが表わす乗法群G2に基づいて、関数V1と関数V2とを決定する。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、群パラメータ記憶部111が記憶した群パラメータが表わす乗法群G1と乗法群G2とに基づいて、合法群G1の要素gと、乗法群G2の要素g2とをランダムに選択する。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、群パラメータ記憶部111が記憶した群パラメータが表わす乗法群G1と、秘密情報生成工程S11で秘密情報生成部112が生成した整数αと、選択した乗法群G1の要素gとに基づいて、乗法群G1の要素g1=g^αを算出する。
パラメータ記憶部122は、磁気ディスク装置920などの記憶装置を用いて、群パラメータ記憶部111が記憶した群パラメータと、決定した鍵生成関数KDFと、決定したハッシュ関数HFと、決定した関数V1と、決定した関数V2と、選択した乗法群G1の要素gと、算出した乗法群G1の要素g1と、選択した乗法群G2の要素g2とを表わす情報を、公開暗号パラメータとして記憶する。
第二秘密情報生成工程S16において、秘密情報生成部112は、CPU911などの処理装置を用いて、群パラメータ記憶部111が記憶した群パラメータが表わす乗法群G2と、秘密情報生成工程S11で生成した整数αと、暗号パラメータ生成工程S12で公開パラメータ生成部113が選択した乗法群G2の要素g2とに基づいて、乗法群G2の要素msk=g2^αを算出する。
秘密情報記憶部121は、磁気ディスク装置920などの記憶装置を用いて、秘密情報生成部112が算出した乗法群G2の要素mskを表わす情報を記憶する。
暗号パラメータ公開工程S13において、公開パラメータ公開部114は、CPU911などの処理装置を用いて、群パラメータ記憶部111が記憶した群パラメータと、公開パラメータ生成部113が決定した鍵生成関数KDFとハッシュ関数HFと関数V1と関数V2と、公開パラメータ生成部113が選択した乗法群G1の要素gと乗法群G2の要素g2と、公開パラメータ生成部113が算出した乗法群G1の要素g1とを表わす情報を、公開暗号パラメータとして公開する。
公開パラメータ公開部114が公開した公開暗号パラメータは、暗号文生成装置200及び暗号文受信装置301〜303が取得し、暗号パラメータ記憶部210及び公開パラメータ記憶部310が磁気ディスク装置920などの記憶装置を用いて記憶する。
図20は、この実施の形態における対比例である暗号パラメータ生成装置100が秘密鍵を設定する秘密鍵設定処理の流れの一例を示すフローチャート図である。
なお、実施の形態1で説明した秘密鍵設定処理の工程と共通する工程については、同一の符号を付す。
識別入力工程S21において、識別情報入力部131は、CPU911などの処理装置を用いて、受信者識別情報としてmビットのビット列IDを入力する。
秘密鍵生成工程S22において、秘密鍵生成部132は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす自然数rに基づいて、1以上自然数r未満の整数rIDをランダムに生成する。
秘密鍵生成部132は、CPU911などの処理装置を用いて、パラメータ記憶部122が記憶した公開暗号パラメータが表わす乗法群G2と関数V1と、秘密情報記憶部121が記憶した乗法群G2の要素mskと、識別入力工程S21で入力したmビットのビット列IDと、生成した整数rIDとに基づいて、乗法群G2の要素d0ID=msk・V1(ID)^rIDを算出する。
秘密鍵生成部132は、CPU911などの処理装置を用いて、パラメータ記憶部122が記憶した公開暗号パラメータが表わす乗法群G1と乗法群G1の要素gと、生成した整数rIDとに基づいて、乗法群G1の要素d1ID=g^rIDを算出する。
秘密鍵通知部133は、CPU911などの処理装置を用いて、秘密鍵生成工程S22で秘密鍵生成部132が算出した乗法群G2の要素d0IDと乗法群G1の要素d1IDとを表わす情報を秘密鍵dIDとして、対応する暗号文受信装置に対して秘密裏に通知する。
秘密鍵通知部133が通知した秘密鍵dIDは、対応する暗号文受信装置が取得し、秘密鍵記憶部323が磁気ディスク装置920などの記憶装置を用いて記憶する。
図21は、この実施の形態における対比例である暗号文生成装置200が暗号文を生成する暗号文生成処理の流れの一例を示すフローチャート図である。
なお、実施の形態1で説明した暗号文生成処理の工程と共通する工程については、同一の符号を付す。
受信者識別入力工程S32において、受信者識別入力部232は、CPU911などの処理装置を用いて、n人の受信者をそれぞれ識別するn個の受信者識別情報として、n人の受信者にそれぞれ対応するn個のmビットのビット列IDを入力する。
乱数生成工程S34において、乱数生成部222は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす自然数rに基づいて、n人の受信者にそれぞれ対応するn個の1以上自然数r未満の整数sをランダムに生成する。
第一暗号文生成工程S35において、第一暗号文生成部241は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす乗法群GTとペアリングeと乗法群G1の要素g1と乗法群G2の要素g2と鍵生成関数KDFと、乱数生成工程S34で乱数生成部222が生成したn人の受信者にそれぞれ対応するn個の整数sとに基づいて、n人の受信者にそれぞれ対応するn個の鍵ビット列k=KDF(e(g1,g2)^s)を算出する。
第一暗号文生成部241は、CPU911などの処理装置を用いて、セッション鍵生成工程S33でセッション鍵生成部221が生成したセッション鍵K(=平文M)と、算出したn人の受信者にそれぞれ対応するn個の鍵ビット列kとに基づいて、1つのセッション鍵Kをn人の受信者にそれぞれ対応するn個の鍵ビット列kによりそれぞれ暗号化して、n人の受信者にそれぞれ対応するn個の第一暗号文C1を生成する。
第二暗号文生成工程S36において、第二暗号文生成部242は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす関数V1と、受信者識別入力工程S32で受信者識別入力部232が入力したn人の受信者にそれぞれ対応するn個のmビットのビット列IDと、乱数生成工程S34で乱数生成部222が生成したn人の受信者にそれぞれ対応するn個の整数sとに基づいて、n人の受信者にそれぞれ対応するn個の乗法群G2の要素u=V1(ID)^sを算出する。
第二暗号文生成部242は、CPU911などの処理装置を用いて、算出したn人の受信者にそれぞれ対応するn個の乗法群G2の要素uをそれぞれ表わすビット列を、n人の受信者にそれぞれ対応するn個の第二暗号文C2とする。
第三暗号文生成工程S37において、第三暗号文生成部243は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす乗法群G1と乗法群G1の要素gと、乱数正視工程S34で乱数生成部222が生成したn人の受信者にそれぞれ対応するn個の整数sとに基づいて、n人の受信者にそれぞれ対応するn個の乗法群G1の要素v=g^sを算出する。
第三暗号文生成部243は、CPU911などの処理装置を用いて、算出したn人の受信者にそれぞれ対応するn個の乗法群G1の要素vをそれぞれ表わすビット列を、n人の受信者にそれぞれ対応するn個の第三暗号文C3とする。
ハッシュ値算出工程S38において、ハッシュ値算出部244は、CPU911などの処理装置を用いて、第一暗号文生成工程S35で第一暗号文生成部241が生成したn人の受信者にそれぞれ対応するn個の第一暗号文C1と、第二暗号文生成工程S36で第二暗号文生成部242が生成したn人の受信者にそれぞれ対応するn個の第二暗号文C2と、第三暗号文生成工程S37で第三暗号文生成部243が生成したn人の受信者にそれぞれ対応するn個の第三暗号文C3とに基づいて、n人の受信者にそれぞれ対応するn個の第一暗号文C1と、n人の受信者にそれぞれ対応するn個の第一暗号文C2と、n人の受信者にそれぞれ対応するn個の第三暗号文C3とをそれぞれ結合したn人の受信者にそれぞれ対応するn個の結合暗号文(C1|C2|C3)を生成する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わすハッシュ関数HFと、生成したn人の受信者にそれぞれ対応するn個の結合暗号文(C1|C2|C3)とに基づいて、n人の受信者にそれぞれ対応するn個の結合暗号文(C1|C2|C3)をそれぞれハッシュ関数HFにより変換したn人の受信者にそれぞれ対応するn個のmビットのビット列w=HF(C1|C2|C3)を算出する。
暗号文検証文生成工程S39において、暗号文検証文生成部245は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす乗法群G2と関数V2と、乱数生成工程S34で乱数生成部222が生成したn人の受信者にそれぞれ対応するn個の整数sと、ハッシュ値算出工程S38でハッシュ値算出部244が算出したn人の受信者にそれぞれ対応するn個のmビットのビット列wとに基づいて、n人の受信者にそれぞれ対応するn個の乗法群G2の要素y=V2(w)^sを算出する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、算出したn人の受信者にそれぞれ対応するn個の乗法群G2の要素yをそれぞれ表わすビット列を、n人の受信者にそれぞれ対応するn個の暗号文検証文CCとする。
図22は、この実施の形態における対比例である暗号文受信装置301〜303が暗号文を受信する暗号文受信処理の流れの一例を示すフローチャート図である。
なお、実施の形態1で説明した暗号文受信処理の工程と共通する工程については、同一の符号を付す。
暗号文分解工程S52において、暗号文分解部346は、CPU911などの処理装置を用いて、通知データ受信工程で暗号文受信部351が出力した1つの鍵暗号文Cに基づいて、暗号文受信装置が対応する受信者に対応する1つの対応第一暗号文C1IDと、1つの対応第二暗号文C2IDと、1つの対応第三暗号文C3IDと、1つの対応暗号文検証文CCIDとを取得する。
検証ハッシュ値算出工程S53において、検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、公開パラメータ記憶部310が記憶した公開暗号パラメータが表わすハッシュ関数HFと、暗号文分解工程S52で暗号文分解部346が取得した1つの対応第一暗号文C1IDと1つの対応第二暗号文C2IDと1つの対応第三暗号文C3IDとを結合した1つの対応結合暗号文(C1ID|C2ID|C3ID)とに基づいて、1つの対応結合暗号文(C1ID|C2ID|C3ID)をハッシュ関数HFにより変換した1つのmビットのビット列w’を、検証ハッシュ値H’として算出する。
暗号文検証工程S54において、暗号文検証部345は、CPU911などの処理装置を用いて、公開パラメータ記憶部310が記憶した公開暗号パラメータが表わすペアリングeと関数V1と、暗号文分解工程S52で暗号文分解部346が取得した1つの対応第三暗号文C3IDが表わす1つの乗法群G1の要素vIDと、自身が対応する受信者を識別するmビットのビット列IDとに基づいて、1つの乗法群GTの要素e(vID,V1(ID))を算出する。
暗号文検証部345は、CPU911などの処理装置を用いて、公開パラメータ記憶部310が記憶した公開暗号パラメータが表わすペアリングeと乗法群G1の要素gと、暗号文分解工程S52で暗号文分解部346が取得した1つの対応第二暗号文C2IDが表わす1つの乗法群G2の要素uIDとに基づいて、1つの乗法群GTの要素e(g,uID)を算出する。
暗号文検証部345は、CPU911などの処理装置を用いて、公開パラメータ記憶部310が記憶した公開暗号パラメータが表わすペアリングeと関数V2と、暗号文分解工程S52で暗号文分解部346が取得した1つの対応第三暗号文C3IDが表わす1つの乗法群G1の要素vIDと、検証ハッシュ値算出工程S53で検証ハッシュ値算出部344が算出したmビットのビット列w’とに基づいて、1つの乗法群GTの要素e(vID,V2(w’))を算出する。
暗号文検証部345は、CPU911などの処理装置を用いて、公開パラメータ記憶部310が記憶した公開暗号パラメータが表わすペアリングeと乗法群G1の要素gと、暗号文分解工程S52で暗号文分解部346が取得した1つの対応暗号文検証文CCIDが表わす1つの乗法群G2の要素yIDとに基づいて、1つの乗法群GTの要素e(g,yID)を算出する。
暗号文検証部345は、CPU911などの処理装置を用いて、算出した1つの乗法群GTの要素e(vID,V1(ID))と、算出した1つの乗法群GTの要素e(g,uID)と、算出した1つの乗法群GTの要素e(vID,V2(w’))と、算出した1つの乗法群GTの要素e(g,yID)とに基づいて、e(vID,V1(ID))=e(g,uID)、かつ、e(vID,V2(w’))=e(g,yID)であるか否かを判定する。
2つの等式が成立する場合、暗号文検証部345は、暗号文受信部351が受信した1つの鍵暗号文Cに整合性があると判定し、暗号文復号工程S55へ進む。
いずれかまたは両方の等式が成立しない場合、暗号文検証部345は、暗号文受信部351が受信した1つの鍵暗号文Cに整合性がないと判定し、暗号文受信処理を終了する。
暗号文復号工程S55において、暗号文復号部341は、CPU911などの処理装置を用いて、公開パラメータ記憶部310が記憶した乗法群GTとペアリングeと鍵生成関数KDFと、秘密鍵記憶部323が記憶した秘密鍵dIDが表わす乗法群G2の要素d0IDと乗法群G1の要素d1IDと、暗号文分解工程S52で暗号文分解部346が取得した1つの対応第二暗号文C2IDが表わす1つの乗法群G2の要素uIDと1つの対応第三暗号文C3IDが表わす1つの乗法群G1の要素vIDとに基づいて、1つの鍵ビット列k’=KDF(e(vID,d0ID)/e(d1ID,uID))を算出する。
暗号文復号部341は、CPU911などの処理装置を用いて、暗号文分解工程S52で暗号文分解部346が取得した1つの対応第一暗号文C1IDと、算出した1つの鍵ビット列k’とに基づいて、鍵ビット列k’により対応第一暗号文C1IDを復号して、所定の長さのビット列を生成し、セッション鍵K’(=平文M)とする。
上述したように、暗号文復号部341が生成するセッション鍵K’は、暗号文生成装置200のセッション鍵生成部221が生成したセッション鍵Kと同一のビット列となる。
次に、この実施の形態における対比例であるIDベース暗号通信システムが使用するIDベース暗号方式の安全性について議論する。
この実施の形態における対比例である複数受信者のIDベース暗号方式は、単独受信者のIDベース暗号方式を連接方式により拡張したものであるから、SMMR安全性は、Advsmmr n,Π’,Γ(t,q,q)≦n・Advmu 1,Π,Γ(t’,1,q,q)である。
ここで、Advmu 1,Π,Γ(t’,1,q,q)は、この実施の形態における対比例である複数受信者のIDベース暗号方式のもととなっている単独受信者のIDベース暗号方式の従来の意味における安全性を表わす。
この実施の形態における対比例である複数受信者のIDベース暗号方式のもととなっている単独受信者のIDベース暗号方式の従来の意味における安全性Advmu 1,Π,Γ(t’,1,q,q)は、D−BDH問題(Decisional Bilinear Diffie−Hellman Problem)に帰着することが証明できる。
ここで、D−BDH問題とは、以下に定義する数学的な問題である。
D−BDH問題において、解答者Bには、4つの乗法群Gの要素g、g1、g2、g3と、1つの乗法群GTの要素Zとが与えられる。また、解答者Bには秘密の情報として、1以上乗法群Gの位数未満の3つの整数a、b、cがある。
乗法群Gの要素gは、ランダムに選択された乗法群Gの要素である。
乗法群Gの要素g1は、乗法群Gの要素gのa乗である乗法群Gの要素g^aである。
乗法群Gの要素g2は、乗法群Gの要素gのb乗である乗法群Gの要素g^bである。
乗法群Gの要素g3は、乗法群Gの要素gのc乗である乗法群Gの要素g^cである。
解答者Bは、乗法群Gの要素g同士のペアリング値である乗法群GTの要素e(g,g)の、整数aと整数bと整数cとの積(a・b・c)乗である乗法群GTの要素e(g,g)^(a・b・c)が、与えられた乗法群GTの要素Zと等しいか否かを判別する問題に答える。
q−D−ABDHE問題と同様に、Advd−bhd k,G,GT(t)を定義し、Advd−bhd k,G,GT(t)≦εでるとき、D−BDH仮定が成り立つという。
以上より、この実施の形態における対比例であるIDベース暗号方式のSMMR安全性は、D−BDH問題に帰着することが証明できる。
次に、この実施の形態におけるIDベース暗号通信システム800について、説明する。
この実施の形態におけるIDベース暗号通信システム800の全体構成及び暗号パラメータ生成装置100のブロック構成は、対比例で説明したものと同様なので、ここでは説明を省略する。
まず、暗号文生成装置200について説明する。
暗号文生成装置200のブロック構成は、対比例で説明したものと同様なので、図4を用いて、対比例と異なる部分について説明する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、第一暗号文生成部241が出力したn個の第一暗号文C1と、第二暗号文生成部242出力したn個の第二暗号文C2と、第三暗号文生成部243が出力したn個の第三暗号文C3とを入力する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、入力したn個の第一暗号文C1と、n個の第二暗号文C2と、n個の第三暗号文C3とをすべて結合して、1つの結合暗号文を生成する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わすハッシュ関数HFと、生成した1つの結合暗号文とに基づいて、1つの結合暗号文をハッシュ関数HFにより変換した1つのmビットのビット列wを算出し、1つのハッシュ値Hとする。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、算出した1つのmビットのビット列wを表わす情報と、生成した1つの結合暗号文とを出力する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、乱数生成部222が出力したn個の整数sを表わす情報と、ハッシュ値算出部244が出力した1つのmビットのビット列wを表わす情報とを入力する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす関数V2と、入力した情報が表わす1つのmビットのビット列wとに基づいて、mビットのビット列wを関数V2により変換した1つの乗法群G2の要素V2(w)を算出する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群G2と、入力した情報が表わすn個の整数sと、算出した乗法群G2の要素V2(w)とに基づいて、乗法群G2の要素V2(w)のs乗であるn個の乗法群G2の要素y=V2(w)^s(iは、1以上n以下の整数。)を算出する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、算出したn個の乗法群G2の要素yをそれぞれ表わすn個のビット列を、n個の暗号文検証文CC(iは、1以上n以下の整数。)として出力する。
暗号文結合部246は、CPU911などの処理装置を用いて、ハッシュ値算出部244が出力した1つの結合暗号文と、暗号文検証文生成部245が出力したn個の暗号文検証文CCとを入力する。
暗号文結合部246は、CPU911などの処理装置を用いて、入力した1つの結合暗号文と、入力したn個の暗号文検証文とをすべて結合して、1つの鍵暗号文Cを生成する。
暗号文結合部246は、CPU911などの処理装置を用いて、生成した1つの鍵暗号文Cを出力する。
この実施の形態における暗号文生成装置200のなかでやり取りされる情報の流れは、実施の形態2で図16を用いて説明したものと同様なので、ここでは説明を省略する。
次に、暗号文受信装置301〜303について説明する。
暗号文受信装置301〜303のブロック構成も、対比例で説明したものと同様なので、図6を用いて、対比例と異なる部分について説明する。
暗号文分解部346は、CPU911などの処理装置を用いて、暗号文受信部351が出力した1つの鍵暗号文Cを入力する。
暗号文分解部346は、CPU911などの処理装置を用いて、入力した1つの鍵暗号文Cから、自身が対応する受信者に対応する対応第一暗号文C1IDと、対応第二暗号文C2IDと、対応第三暗号文C3IDと、対応暗号文検証文CCIDとを取得する。
暗号文分解部346は、CPU911などの処理装置を用いて、取得した対応第一暗号文C1IDと、対応第二暗号文C2IDと、対応第三暗号文C3IDと、対応暗号文検証文CCIDとを出力する。
暗号文分解部346は、また、CPU911などの処理装置を用いて、1つの鍵暗号文Cから、検証結合暗号文(C1|C2|C3|C1|C2|C3|…|C1|C2|C3)を取得し、出力する。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、暗号文分解部346が出力した検証結合暗号文(C1|C2|C3|C1|C2|C3|…|C1|C2|C3)を入力する。あるいは、検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、暗号文を結合し、検証結合暗号文(C1|C2|C3|C1|C2|C3|…|C1|C2|C3)を生成してもよい。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、公開パラメータ記憶部310が記憶した公開暗号パラメータを入力する。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わすハッシュ関数HFと、入力あるいは生成した検証結合暗号文(C1|C2|C3|C1|C2|C3|…|C1|C2|C3)とに基づいて、検証結合暗号文(C1|C2|C3|C1|C2|C3|…|C1|C2|C3)をハッシュ関数HFにより変換したmビットのビット列w’を算出し、ハッシュ値H’とする。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、算出したmビットのビット列w’を表わす情報を出力する。
次に、動作について説明する。
図23は、この実施の形態における暗号文生成装置200が暗号文を生成する暗号文生成処理の流れの一例を示すフローチャート図である。
なお、対比例で説明した暗号文生成処理の工程と共通する工程については、同一の符号を付す。
ハッシュ値算出工程S38において、ハッシュ値算出部244は、CPU911などの処理装置を用いて、第一暗号文生成工程S35で第一暗号文生成部241が生成したn人の受信者にそれぞれ対応するn個の第一暗号文C1と、第二暗号文生成工程S36で第二暗号文生成部242が生成したn人の受信者にそれぞれ対応するn個の第二暗号文C2と、第三暗号文生成工程S37で第三暗号文生成部243が生成したn人の受信者にそれぞれ対応するn個の第三暗号文C3とに基づいて、n人の受信者にそれぞれ対応するn個の第一暗号文C1と、n人の受信者にそれぞれ対応するn個の第一暗号文C2と、n人の受信者にそれぞれ対応するn個の第三暗号文C3とをすべて結合した1つの結合暗号文(C1|C2|C3|C1|C2|C3|…|C1|C2|C3)を生成する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わすハッシュ関数HFと、生成した1つの結合暗号文(C1|C2|C3|C1|C2|C3|…|C1|C2|C3)とに基づいて、1つの結合暗号文(C1|C2|C3|C1|C2|C3|…|C1|C2|C3)をハッシュ関数HFにより変換した1つのmビットのビット列w=HF(C1|C2|C3|C1|C2|C3|…|C1|C2|C3)を算出する。
暗号文検証文生成工程S39において、暗号文検証文生成部245は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす乗法群G2と関数V2と、乱数生成工程S34で乱数生成部222が生成したn人の受信者にそれぞれ対応するn個の自然数sと、ハッシュ値算出工程S38でハッシュ値算出部244が算出した1つのmビットのビット列wとに基づいて、n人の受信者にそれぞれ対応するn個の乗法群GTの要素y=V2(w)^sを算出する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、算出したn人の受信者にそれぞれ対応するn個の乗法群G2の要素yをそれぞれ表わすビット列を、n人の受信者にそれぞれ対応するn個の暗号文検証文CCとする。
図24は、この実施の形態における暗号文受信装置301〜303が暗号文を受信する暗号文受信処理の流れの一例を示すフローチャート図である。
なお、対比例で説明した暗号文受信処理の工程と共通する工程については、同一の符号を付す。
検証ハッシュ値算出工程S53において、検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、公開パラメータ記憶部310が記憶した公開暗号パラメータが表わすハッシュ関数HFと、検証結合暗号文(C1|C2|C3|C1|C2|C3|…|C1|C2|C3)とに基づいて、検証結合暗号文(C1|C2|C3|C1|C2|C3|…|C1|C2|C3)をハッシュ関数HFにより変換したmビットのビット列w’=HF(C1|C2|C3|C1|C2|C3|…|C1|C2|C3)を算出する。
上記説明した以外の工程は、対比例で説明した工程と同様なので、ここでは説明を省略する。
以上のように、この実施の形態におけるIDベース暗号通信システム800は、対比例で説明したIDベース暗号通信システム800と比較して、1つの鍵暗号文Cの長さは変わらないが、暗号文生成処理に必要な計算量が減るので、暗号通信のコストを削減できる。
特に、ハッシュ値算出工程S38において、対比例で説明した方式の場合、n回のハッシュ値計算が必要だが、この方式の場合、1回のハッシュ値計算で済む。
また、暗号文検証文生成工程S39において、関数V2の計算が必要になる。関数V2を対比例で説明した手順で計算するものとすると、関数V2を1回計算するために、m1回の乗法群G2における冪乗算と、m1回の乗法群G2における乗算とが必要になる。対比例で説明した方式の場合、関数V2をn回計算する必要があるのに対し、この方式の場合、関数V2を1回計算すればよく、受信者の人数が多い場合に、計算量を大幅に削減できる。
次に、この実施の形態におけるIDベース暗号通信システム800が使用するIDベース暗号方式のSMMR安全性について説明する。
なお、以下の説明では、暗号文主文CBに、それに対応する受信者を識別する受信者識別情報IDが含まれているものとする。
この実施の形態におけるIDベース暗号通信システム800が使用するIDベース暗号方式のSMMR安全性は、非特許文献18に記載の証明と、非特許文献6に記載の証明とを組み合わせることにより、証明できる。
暗号化オラクルのシミュレートにおいて、解答者Bは、1以上m2以下の整数jをランダムに生成し、ID が、シミュレート可能なIDであるか否かを判定する。
ID が、シミュレート可能なIDである場合、解答者Bは、1≦i<jであるiについて、M を選択して暗号文主文CBを生成し、j<i≦nであるiについて、M を選択して暗号文主文CBを生成し、i=jであるiについて、与えられたD−BDH問題のパラメータを使ったシミュレートにより、暗号文主文CBを生成する。
解答者Bは、生成したn個の暗号文主文CB(iは、1以上n以下の整数。)を結合して、ハッシュ値w を算出する。
解答者Bは、i≠jであるiについて、暗号文主文の生成に使用した乱数sを使って、暗号文検証文CCを生成し、i=jであるiについて、与えられたD−BDH問題のパラメータを使ったシミュレートにより、暗号文検証文CCを生成する。
これにより、ID がシミュレート可能なIDである場合、解答者Bは、D−BDH問題に正しく解答できる。また、ID がシミュレート可能なIDでない場合、解答者Bがシミュレートした暗号化オラクルの出力分布はbと独立である。
したがって、この実施の形態におけるIDベース暗号方式のSMMR安全性が証明できる。
この実施の形態におけるIDベース暗号通信システム800によれば、MR−IND−ID−CCA安全性を数学的に証明できるので、IDベース暗号通信システム800を使用して、安全な暗号通信を実現できるという効果を奏する。
この実施の形態における暗号文生成装置200は、以下の点を特徴とする。
暗号パラメータ記憶部210は、磁気ディスク装置920などの記憶装置を用いて、公開暗号パラメータとして、自然数rと、位数が上記自然数rである乗法群G1と、位数が上記自然数rである乗法群G2と、位数が上記自然数rである乗法群GTと、乗法群G1の要素と乗法群G2の要素とから乗法群GTの要素を算出するペアリングeと、乗法群GTの要素から所定の長さのビット列を算出する鍵生成関数KDFと、所定の長さのビット列から乗法群GTの要素を算出する2つの関数V1及びV2と、任意の長さのビット列から所定の長さのビット列を算出するハッシュ関数HFと、乗法群G1の要素gと、乗法群G1の要素g1と、乗法群G2の要素g2とを表わす情報を記憶することを特徴とする。
受信者識別入力部232は、CPU911などの処理装置を用いて、n個の所定の長さのビット列IDをn個の受信者識別情報として入力することを特徴とする。
乱数生成部222は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす自然数rに基づいて、n人の受信者に対応するn個の1以上自然数r未満の整数s(iは、1以上n以下の整数。)をランダムに生成することを特徴とする。
第一暗号文生成部241は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす乗法群G1の要素g1と乗法群G2の要素g2とペアリングeと鍵生成関数KDFと、乱数生成部222が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の鍵ビット列k=KDF(e(g1,g2)^s)(iは、1以上n以下の整数。)を算出し、CPU911などの処理装置を用いて、算出したn個の鍵ビット列kにより、平文入力部231が入力した平文Mをそれぞれ暗号化して、n人の受信者に対応するn個の第一暗号文C1(iは、1以上n以下の整数。)とすることを特徴とする。
第二暗号文生成部242は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす関数V1と、乱数生成部222が生成したn個の整数sと、受信者識別入力部232が入力したn個の所定の長さのビット列IDとに基づいて、n人の受信者に対応するn個の乗法群G2の要素u=V1(ID)^s(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G2の要素uをそれぞれ表わすビット列を、n人の受信者に対応するn個の第二暗号文C2(iは、1以上n以下の整数。)とすることを特徴とする。
第三暗号文生成部243は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす乗法群G1の要素gと、乱数生成部222が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の乗法群G1の要素v=g^s(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G1の要素vをそれぞれ表わすビット列を、n人の受信者に対応するn個の第三暗号文C3(iは、1以上n以下の整数。)とすることを特徴とする。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わすハッシュ関数HFに基づいて、1つの所定の長さのビット列wを算出して、ハッシュ値Hとすることを特徴とする。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす関数V2と、乱数生成部222が生成したn個の整数sと、ハッシュ値算出部244が算出した1つの所定の長さのビット列wとに基づいて、n人の受信者に対応するn個の乗法群G2の要素y=V2(w)^s(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G2の要素yをそれぞれ表わすビット列を、n人の受信者に対応するn個の暗号文検証文CC(iは、1以上n以下の整数。)とすることを特徴とする。
この実施の形態における暗号文生成装置200によれば、暗号処理に必要な資源が少なくて済み、SMMR−IND−ID−CCA2安全性を数学的に証明できるIDベース暗号方式を利用した暗号通信を実現できるという効果を奏する。
この実施の形態における暗号文生成装置200は、また、以下の点を特徴とする。
暗号パラメータ記憶部210は、磁気ディスク装置920などの記憶装置を用いて、2つの関数V1及びV2を表わす情報として、m1個の乗法群G2の要素hξ(ξは、1以上m1以下の整数。)と、2つの乗法群G2の要素h1’及びh2’とを表わす情報を記憶することを特徴とする。
第二暗号文生成部242は、CPU911などの処理装置を用いて、受信者識別入力部232が入力したn個の所定の長さのビット列IDそれぞれを、m1個の所定の長さのビット列νiξ(ξは、1以上m1以下の整数。)に分割し、分割したm1個の所定の長さのビット列νiξをm1個の整数として取り扱い、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わすm1個の乗法群G2の要素hξ(ξは、1以上m1以下の整数。)と乗法群G2の要素h1’と、分割したm1個の整数νiξとに基づいて、関数V1の値である乗法群G2の要素V1(ID)=h1’・Π(hξ^νiξ)(ξは、1以上m1以下の整数。)を算出することを特徴とする。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、ハッシュ値算出部244が算出した所定の長さのビット列wを、m1個の所定の長さのビット列νξ(ξは、1以上m1以下の整数。)に分割し、分割したm1個の所定の長さのビット列νξをm1個の整数として取り扱い、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わすm1個の乗法群G2の要素hξ(ξは、1以上m1以下の整数。)と乗法群G2の要素h2’と、分割したm1個の整数νξとに基づいて、関数V2の値である乗法群G2の要素V2(w)=h2’・Π(hξ^νξ)(ξは、1以上m1以下の整数。)を算出することを特徴とする。
この実施の形態における暗号文生成装置200によれば、暗号処理に必要な資源が少なくて済み、SMMR−IND−ID−CCA2安全性を数学的に証明できるIDベース暗号方式を利用した暗号通信を実現できるという効果を奏する。
この実施の形態におけるIDベース暗号通信システム800は、以下の点を特徴とする。
暗号パラメータ生成装置100は、更に、群パラメータ記憶部111を有することを特徴とする。
群パラメータ記憶部111は、磁気ディスク装置920などの記憶装置を用いて、群パラメータとして、自然数rと、位数が上記自然数rである乗法群G1と、位数が上記自然数rである乗法群G2と、位数が上記自然数rである乗法群GTと、乗法群G1の要素と乗法群G2の要素とから乗法群GTの要素を算出するペアリングeとを表わす情報を記憶することを特徴とする。
秘密情報生成部112は、CPU911などの処理装置を用いて、群パラメータ記憶部111が記憶した群パラメータが表わす自然数rに基づいて、1以上自然数r未満の整数αをランダムに生成することを特徴とする。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、乗法群GTの要素から所定の長さのビット列を算出する鍵生成関数KDFと、所定の長さのビット列から乗法群GTの要素を算出する2つの関数V1及びV2と、任意の長さのビット列から所定の長さのビット列を算出するハッシュ関数HFとを決定し、CPU911などの処理装置を用いて、群パラメータ記憶部111が記憶した群パラメータが表わす乗法群G1と乗法群G2とに基づいて、乗法群G1の要素gと乗法群G2の要素g2とをランダムに選択し、秘密情報生成部112が生成した整数αと、選択した乗法群G1の要素gとに基づいて、乗法群G1の要素g1=g^αを算出し、CPU911などの処理装置を用いて、群パラメータ記憶部111が記憶した群パラメータと、決定した鍵生成関数KDFと2つの関数V1及びV2とハッシュ関数HFと、選択した乗法群G1の要素gと乗法群G2の要素g2と、算出した乗法群G1の要素g1とを表わす情報を公開暗号パラメータとすることを特徴とする。
秘密情報生成部112は、更に、CPU911などの処理装置を用いて、生成した整数αと、公開パラメータ生成部113が選択した乗法群G2の要素g2とに基づいて、乗法群G2の要素msk=g2^αを算出することを特徴とする。
秘密情報記憶部121は、磁気ディスク装置920などの記憶装置を用いて、秘密情報生成部112が算出した乗法群G2の要素mskを表わす情報を秘密情報として記憶することを特徴とする。
識別情報入力部131は、CPU911などの処理装置を用いて、所定の長さのビット列IDを受信者識別情報として入力することを特徴とする。
秘密鍵生成部132は、CPU911などの処理装置を用いて、公開パラメータ生成部113が生成した公開暗号パラメータが表わす自然数rに基づいて、1以上自然数r未満の整数rIDをランダムに生成し、CPU911などの処理装置を用いて、公開パラメータ生成部113が生成した公開暗号パラメータが表わす乗法群G1の要素gと関数V1と、秘密情報記憶部121が記憶した秘密情報が表わす乗法群G2の要素mskと、生成した整数rIDとに基づいて、乗法群G2の要素d0ID=msk・V1(ID)^rIDと、乗法群G1の要素d1ID=g^rIDとを算出し、算出した乗法群G2の要素d0IDと乗法群G1の要素d1IDとを表わす情報を、秘密鍵dIDとすることを特徴とする。
受信者識別入力部232は、CPU911などの処理装置を用いて、n個の所定の長さのビット列IDをn個の受信者識別情報として入力することを特徴とする。
乱数生成部222は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす自然数rに基づいて、n人の受信者に対応するn個の1以上自然数r未満の整数s(iは、1以上n以下の整数。)をランダムに生成することを特徴とする。
第一暗号文生成部241は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす乗法群G1の要素g1と乗法群G2の要素g2とペアリングeと鍵生成関数KDFと、乱数生成部222が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の鍵ビット列k=KDF(e(g1,g2)^s)(iは、1以上n以下の整数。)を算出し、CPU911などの処理装置を用いて、算出したn個の鍵ビット列kにより、平文入力部231が入力した平文Mをそれぞれ暗号化して、n人の受信者に対応するn個の第一暗号文C1(iは、1以上n以下の整数。)とすることを特徴とする。
第二暗号文生成部242は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす関数V1と、受信者識別入力部232が入力したn個の所定の長さのビット列IDと、乱数生成部222が生成したn個の整数s(iは、1以上n以下の整数。)とに基づいて、n人の受信者に対応するn個の乗法群G2の要素u=V1(ID)^s(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G2の要素uをそれぞれ表わすビット列を、n人の受信者に対応するn個の第二暗号文C2(iは、1以上n以下の整数。)とすることを特徴とする。
第三暗号文生成部243は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす乗法群G1の要素gと、乱数生成部222が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の乗法群G1の要素v=g^s(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G1の要素vをそれぞれ表わすビット列を、n人の受信者に対応するn個の第三暗号文C3(iは、1以上n以下の整数。)とすることを特徴とする。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わすハッシュ関数HFに基づいて、1つの所定の長さのビット列wを算出して、ハッシュ値Hとすることを特徴とする。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす関数V2と、乱数生成部222が生成したn個の整数sと、ハッシュ値算出部244が算出した1つの所定の長さのビット列wとに基づいて、n人の受信者に対応するn個の乗法群G2の要素y=V2(w)^s(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G2の要素yをそれぞれ表わすビット列を、n人の受信者に対応するn個の暗号文検証文CCとすることを特徴とする。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、公開パラメータ記憶部310が記憶した公開暗号パラメータが表わすハッシュ関数HFに基づいて、所定の長さのビット列w’を算出して、検証ハッシュ値H’とすることを特徴とする。
暗号文検証部345は、CPU911などの処理装置を用いて、公開パラメータ記憶部310が記憶した公開暗号パラメータが表わすペアリングeと関数V2と、暗号文分解部346が取得した対応第三暗号文C3IDが表わす乗法群G1の要素vIDと検証ハッシュ値算出部344が算出した所定の長さのビット列w’とに基づいて、乗法群GTの要素e(vID,V2(w’))を算出し、CPU911などの処理装置を用いて、公開パラメータ記憶部310が記憶した公開暗号パラメータが表わす乗法群G1の要素gとペアリングeと、暗号文分解部346が取得した対応暗号文検証文CCIDが表わす乗法群G2の要素yIDとに基づいて、乗法群GTの要素e(g,yID)を算出し、CPU911などの処理装置を用いて、算出した乗法群GTの要素e(vID,V2(w’))と、算出した乗法群GTの要素e(g,yID)とを比較し、乗法群GTの要素e(vID,V2(w’))と乗法群GTの要素e(g,yID)とが一致する場合に、暗号文受信部351が受信した1つの暗号文C(鍵暗号文C)に整合性があると判定することを特徴とする。
暗号文復号部341は、暗号文受信部351が受信した1つの暗号文Cに整合性があると、暗号文検証部345が判定した場合に、CPU911などの処理装置を用いて、公開パラメータ記憶部310が記憶した公開暗号パラメータが表わすペアリングeと鍵生成関数KDFと、秘密鍵記憶部323が記憶した秘密鍵dIDが表わす乗法群G2の要素d0IDと乗法群G1の要素d1IDと、暗号文分解部346が取得した1つの対応第二暗号文C2IDが表わす乗法群G2の要素uIDと対応第三暗号文C3IDが表わす乗法群G1の要素vIDとに基づいて、鍵ビット列k’=KDF(e(vID,d0ID)/e(d1ID,uID))を算出し、CPU911などの処理装置を用いて、算出した鍵ビット列k’により、暗号文分解部346が取得した対応第一暗号文C1IDを復号して、平文Mを復元することを特徴とする。
この実施の形態におけるIDベース暗号通信システム800によれば、暗号処理に必要な資源が少なくて済み、SMMR−IND−ID−CCA2安全性を数学的に証明できるIDベース暗号方式を利用した暗号通信を実現できるという効果を奏する。
実施の形態4.
実施の形態4について、図25〜図28を用いて説明する。
図25は、この実施の形態におけるIDベース暗号通信システム800の全体構成の一例を示すシステム構成図である。
IDベース暗号通信システム800は、暗号パラメータ生成装置100と、暗号文生成装置200と、暗号文受信装置301〜暗号文受信装置303と、群パラメータ生成装置400とを有する。
このうち、暗号パラメータ生成装置100及び暗号文生成装置200及び暗号文受信装置301〜暗号文受信装置303は、実施の形態2で説明したものと同様なので、ここでは説明を省略する。
群パラメータ生成装置400は、群パラメータを生成する。群パラメータ生成装置400が生成した群パラメータは、暗号パラメータ生成装置100が入力し、群パラメータ記憶部111が記憶する。
なお、群パラメータ生成装置400は、暗号パラメータ生成装置100の内部にあってもよい。
図26は、この実施の形態における群パラメータ生成装置400の機能ブロックの構成の一例を示すブロック構成図である。
群パラメータ生成装置400は、パラメータ生成条件記憶部410と、群位数候補生成部420と、群位数安全性判定部430と、パラメータ生成部440とを有する。
パラメータ生成条件記憶部410は、磁気ディスク装置920などの記憶装置を用いて、パラメータ生成条件情報を記憶する。
パラメータ生成条件情報とは、群パラメータ生成装置400が生成する群パラメータについての条件を表わす情報である。群パラメータ生成装置400が生成する群パラメータについての条件は、その群パラメータを使用したIDベース暗号通信システム800の安全性などの観点から、あらかじめ定められたものである。
パラメータ生成条件記憶部410は、パラメータ生成条件情報として、整数kと、整数Dと、整数B1と、整数B2とを表わす情報を記憶する。
ここで、整数kは、埋め込み次数(embeding degree)を示す。整数Dは、判別式を示す。整数B1は、第一閾値を示す。整数B2は、第二閾値を示す。
群位数候補生成部420は、群パラメータのうち、自然数r(乗法群G1及び乗法群G2及び乗法群GTの位数)の候補となる自然数を生成する。
群位数候補生成部420は、CPU911などの処理装置を用いて、パラメータ生成条件記憶部410が記憶したパラメータ生成条件情報を入力する。
群位数候補生成部420は、CPU911などの処理装置を用いて、入力したパラメータ生成条件情報が表わす整数kと整数Dとに基づいて、以下の3つの条件を満たす自然数rを生成する。
第一の条件は、自然数rは十分に大きな素数であるという条件である。ここで、「十分に大きい」とは、自然数rを位数とする乗法群においてDH問題を解くことが困難であることを意味する。
第二の条件は、自然数rが、整数kの倍数+1であるという条件である。
第三の条件は、自然数rを法としたとき、整数Dが平方剰余であるという条件である。
群位数候補生成部420は、以上の3つの条件を満たす自然数rを生成し、CPU911などの処理装置を用いて、生成した自然数rを表わす情報を出力する。
群位数安全性判定部430は、IDベース暗号通信システム800の安全性の観点から、群位数候補生成部420が生成した自然数rが適切であるか否かを判定する。
この実施の形態では、(r−1)及び(r+1)が素因数分解できないとき、最も安全性が高いと考える。
これは、q−D−tABDHE問題について、(r−1)または(r+1)の因数を利用してαを求めるアルゴリズムが存在するため、q−D−ABDHE問題に帰着する暗号方式を採用する場合には、そのようなrを避けたほうがよいからである。
しかし、現実には、そのような条件を満たすrは存在しない。なぜなら、rは大きな素数なので、奇数であり、(r−1)及び(r+1)は、それぞれ2で割り切れる。
また、上述したrの選択条件より、(r−1)は、kで割り切れる。
更に、(r−1)及び(r+1)のいずれか一方は、4で割り切れる。なぜなら、(r+1)が4で割り切れないと仮定すると、(r+1)は2で割り切れるから(r+1)を4で割った余りは2であり、したがって(r−1)が4で割り切れるからである。
そこで、(r−1)及び(r+1)が上記以外の素因数を持たないことを目指して、自然数rを選択する。
群位数安全性判定部430は、剰余算出部431と、判定値算出部432と、素因数判定部433とを有する。
剰余算出部431は、CPU911などの処理装置を用いて、群位数候補生成部420が出力した自然数rを表わす情報を入力する。
剰余算出部431は、CPU911などの処理装置を用いて、入力した情報が表わす自然数rを4で割った余りを算出する。
剰余算出部431は、CPU911などの処理装置を用いて、算出した余りを表わす情報を出力する。
自然数rが満たすべき条件は、自然数rを4で割った余りが1であるか3であるかによって異なる。
判定値算出部432は、CPU911などの処理装置を用いて、パラメータ生成条件記憶部410が記憶したパラメータ生成条件情報と、群位数候補生成部420が出力した自然数rを表わす情報と、剰余算出部431が出力した余りを表わす情報とを入力する。
判定値算出部432は、CPU911などの処理装置を用いて、入力した情報が表わす余りに基づいて、自然数rを4で割った余りが1であるか3であるかを判定する。
自然数rを4で割った余りが1の場合、(r−1)は4で割り切れる。そこで、(r−1)を整数kと4との最小公倍数で割った商が、整数B1より小さい素因数を持たず、かつ、(r+1)を2で割った商が、整数B2より小さい素因数を持たないことを条件として、自然数rを選択する。
そのため、自然数rを4で割った余りが1であると判定した場合、判定値算出部432は、CPU911などの処理装置を用いて、入力したパラメータ生成条件情報が表わす整数kと、入力した情報が表わす自然数rとに基づいて、自然数rと1との差(r−1)を、整数kと4との最小公倍数LCM(k,4)で割った商(r−1)/CM(k,4)を算出し、整数r1とする。
また、判定値算出部432は、CPU911などの処理装置を用いて、入力した情報が表わす自然数rに基づいて、自然数rと1との和(r+1)を2で割った商(r+1)/2を算出し、整数r2とする。
自然数rを4で割った余りが3の場合、(r+1)は4で割り切れる。そこで、(r−1)を整数kと2との最小公倍数で割った商が、整数B1より小さい素因数を持たず、かつ、(r+1)を4で割った商が、整数B2より小さい素因数を持たないことを条件として、自然数rを選択する。
そのため、自然数rを4で割った余りが3であると判定した場合、判定値算出部432は、CPU911などの処理装置を用いて、入力したパラメータ生成条件情報が表わす整数kと、入力した情報が表わす自然数rとに基づいて、自然数rと1との差(r−1)を、整数kと2との最小公倍数LCM(k,2)で割った商(r−1)/LCM(k,2)を算出し、整数r1とする。
また、判定値算出部432は、CPU911などの処理装置を用いて、入力した情報が表わす自然数rに基づいて、自然数rと1との和(r+1)を4で割った商(r+1)/4を算出し、整数r2とする。
判定値算出部432は、CPU911などの処理装置を用いて、算出した整数r1と整数r2とを表わす情報を出力する。
素因数判定部433は、CPU911などの処理装置を用いて、パラメータ生成条件記憶部410が記憶したパラメータ生成条件情報と、判定値算出部432が出力した整数r1と整数r2とを表わす情報とを入力する。
素因数判定部433は、CPU911などの処理装置を用いて、入力したパラメータ生成条件情報が表わす整数B1と、入力した情報が表わす整数r1とに基づいて、整数r1が整数B1より小さい素因数を持つか否かを判定する。
整数r1が整数B1より小さい素因数を持つと判定した場合、素因数判定部433は、CPU911などの処理装置を用いて、自然数rが適切でないと判定する。
素因数判定部433は、CPU911などの処理装置を用いて、入力したパラメータ生成条件情報が表わす整数B2と、入力した情報が表わす整数r2とに基づいて、整数r2が整数B2より小さい素因数を持つか否かを判定する。
整数r2が整数B2より小さい素因数を持つと判定した場合、素因数判定部433は、CPU911などの処理装置を用いて、自然数rが適切でないと判定する。
整数r1が整数B1より小さい素因数を持たず、かつ、整数r2が整数B2より小さい素因数を持たないと判定した場合のみ、素因数判定部433は、CPU911などの処理装置を用いて、自然数rが適切であると判定する。
自然数rが適切であると群位数安全性判定部430が判定した場合、パラメータ生成部440は、自然数rに基づいて、群パラメータを生成する。
パラメータ生成部440は、CPU911などの処理装置を用いて、パラメータ生成条件記憶部410が記憶したパラメータ生成条件情報と、群位数候補生成部420が出力した自然数rを表わす情報とを入力する。
パラメータ生成部440は、CPU911などの処理装置を用いて、入力したパラメータ生成条件情報が表わす整数kと整数Dと、入力した情報が表わす自然数rとに基づいて、乗法群G1及び乗法群G2を決定する。
パラメータ生成部440は、CPU911などの処理装置を用いて、決定した乗法群G1及び乗法群G2に基づいて、乗法群G1の要素と乗法群G2の要素とのペアリングeと、ペアリングeの値を要素とする乗法群GTとを決定する。
パラメータ生成部440は、CPU911などの処理装置を用いて、決定した乗法群G1と乗法群G2と乗法群GTとペアリングeとを表わす情報を、群パラメータとして出力する。
ここで、乗法群G1及び乗法群G2は、例えば、楕円曲線E:Y=X+aX+b(X、Y、a、bは、位数p(pは素数。)の有限体GF(p)の要素。)上の点がなす群である。
ペアリングeは、例えば、ベイユペアリングやテイトペアリングである。
乗法群GTは、例えば、位数q(qは素数。kは2以上の整数。)の有限体GF(q)の乗法群の部分群である。
自然数rを楕円曲線E上の点がなす群の位数とし、整数Dを判別式とし、整数kを有限体GF(q)の埋め込み次数とする楕円曲線Eのパラメータを求めるアルゴリズムとしては、例えば、コックスピンチ(Cocks−Pinch)法がある。
パラメータ生成部440は、CPU911などの処理装置を用いて、例えば、コックスピンチ法により、有限体GF(p)の位数pと、p+1−tまたはp+1+tが素数となる整数tとを算出する。
パラメータ生成部440は、CPU911などの処理装置を用いて、判別式Dに対するヒルベルト類多項式H(x)を算出する。
パラメータ生成部440は、CPU911などの処理装置を用いて、算出したヒルベルト類多項式H(x)の法p還元多項式の根である有限体GF(p)の要素jを算出する。パラメータ生成部440は、例えば、バールカンプのアルゴリズムにより、有限体GF(p)の要素jを算出する。
パラメータ生成部440は、CPU911などの処理装置を用いて、求めた有限体GF(p)の要素jに基づいて、j=1728a/(a+27b)を満たす有限体GF(p)の要素a及びbを算出し、楕円曲線E:Y=X+aX+bの係数とする。
パラメータ生成部440は、例えば、上記のようにして、乗法群G1及び乗法群G2及び乗法群GT及びペアリングeを決定する。
パラメータ生成部440が出力した群パラメータは、暗号パラメータ生成装置100の群パラメータ記憶部111が、CPU911などの処理装置を用いて入力し、磁気ディスク装置920などの記憶装置を用いて記憶する。
図27は、この実施の形態における群パラメータ生成装置400が群パラメータを生成する群パラメータ生成処理の流れの一例を示すフローチャート図である。
自然数生成工程S61において、群位数候補生成部420は、CPU911などの処理装置を用いて、自然数rを生成する。
素数判定工程S62において、群位数候補生成部420は、CPU911などの処理装置を用いて、自然数生成工程S61で生成した自然数rに基づいて、自然数rが素数か否かを判定する。
自然数rが素数であると判定した場合、倍数判定工程S63へ進む。
自然数rが素数でないと判定した場合、自然数生成工程S61に戻り、異なる自然数rを生成する。
倍数判定工程S63において、群位数候補生成部420は、CPU911などの処理装置を用いて、パラメータ生成条件記憶部410が記憶したパラメータ生成条件情報が表わす整数kと、自然数生成工程S61で生成した自然数rとに基づいて、自然数rが整数kの倍数+1であるか否かを判定する。
自然数rが整数kの倍数+1であると判定した場合、平方剰余判定工程S64へ進む。
自然数rが整数kの倍数+1でないと判定した場合、自然数生成工程S61に戻り、異なる自然数rを生成する。
平方剰余判定工程S64において、群位数候補生成部420は、CPU911などの処理装置を用いて、パラメータ生成条件記憶部410が記憶したパラメータ生成条件情報が表わす整数Dと、自然数生成工程S61で生成した自然数rとに基づいて、整数Dが法rにおける平方剰余であるか否かを判定する。
整数Dが法rにおける平方剰余であると判定した場合、第一剰余算出工程S65へ進む。
整数Dが法rにおける平方剰余でないと判定した場合、自然数生成工程S61に戻り、異なる自然数rを生成する。
第一剰余算出工程S65において、剰余算出部431は、CPU911などの処理装置を用いて、自然数生成工程S61で生成した自然数rに基づいて、自然数rを4で割った余りを算出する。
自然数rを4で割った余りが3である場合、第一判定値算出工程S66へ進む。
自然数rを4で割った余りが1である場合、第三判定値算出工程S68へ進む。
第一判定値算出工程S66において、判定値算出部432は、CPU911などの処理装置を用いて、自然数生成工程S61で生成した自然数rに基づいて、自然数rと1との和(r+1)を4で割った商(r+1)/4を算出し、整数r2とする。
第二判定値算出工程S67において、判定値算出部432は、CPU911などの処理装置を用いて、パラメータ生成条件記憶部410が記憶したパラメータ生成条件情報が表わす整数kに基づいて、整数kと2との最小公倍数LCM(k,2)を算出する。
判定値算出部432は、CPU911などの処理装置を用いて、自然数生成工程S61で生成した自然数rと、算出した最小公倍数LCM(k,2)とに基づいて、自然数rと1との差(r−1)を最小公倍数LCM(k,2)で割った商(r−1)/LCM(k,2)を算出し、整数r1とする。
その後、第一素因数判定工程S70へ進む。
第三判定値算出工程S68において、判定値算出部432は、CPU911などの処理装置を用いて、自然数生成工程S61で生成した自然数rに基づいて、自然数rと1との和(r+1)を2で割った商(r+1)/2を算出し、整数r2とする。
第四判定値算出工程S69において、判定値算出部432は、CPU911などの処理装置を用いて、パラメータ生成条件記憶部410が記憶したパラメータ生成条件情報が表わす整数kに基づいて、整数kと4との最小公倍数LCM(k,4)を算出する。
判定値算出部432は、CPU911などの処理装置を用いて、自然数生成工程S61で生成した自然数rと、算出した最小公倍数LCM(k,4)とに基づいて、自然数rと1との差(r−1)を最小公倍数LCM(k,4)で割った商(r−1)/LCM(k,4)を算出し、整数r1とする。
第一素因数判定工程S70において、群位数安全性判定部430は、CPU911などの処理装置を用いて、パラメータ生成条件記憶部410が記憶したパラメータ生成条件情報が表わす整数B1と、第二判定値算出工程S67または第四判定値算出工程S69で算出した整数r1とに基づいて、整数r1が整数B1未満の素因数を有するか否かを判定する。
整数r1が整数B1未満の素因数を有すると判定した場合、自然数生成工程S61に戻り、異なる自然数rを生成する。
整数r1が整数B1未満の素因数を有しないと判定した場合、第二素因数判定工程S71へ進む。
第二素因数判定工程S71において、群位数安全性判定部430は、CPU911などの処理装置を用いて、パラメータ生成条件記憶部410が記憶したパラメータ生成条件情報が表わす整数B2と、第一判定値算出工程S66または第三判定値算出工程S68で算出した整数r2とに基づいて、整数r2が整数B2未満の素因数を有するか否かを判定する。
整数r2が整数B2未満の素因数を有すると判定した場合、自然数生成工程S61に戻り、異なる自然数rを生成する。
整数r2が整数B2未満の素因数を有しないと判定した場合、群パラメータ生成工程S85へ進む。
こうして、群位数安全性判定部430は、乗法群の位数として安全な自然数rを選択する。
群パラメータ生成工程S72において、パラメータ生成部440は、CPU911などの処理装置を用いて、パラメータ生成条件記憶部410が記憶したパラメータ生成条件情報と、自然数生成工程S61で生成した自然数rとに基づいて、自然数rを群位数とする乗法群を算出する。
パラメータ生成部440は、CPU911などの処理装置を用いて、算出した乗法群を表わす情報を含む群パラメータを生成する。
以上のようにして、安全な群位数を使用したIDベース暗号通信システム800を実現する。
図28は、この実施の形態における群パラメータ生成装置400が群パラメータを生成する群パラメータ生成処理の流れの別の例を示すフローチャート図である。
なお、図27で説明した群パラメータ生成処理の工程と共通する工程については、同一の符号を付し、説明を省略する。
自然数生成工程S81において、群位数候補生成部420は、CPU911などの処理装置を用いて、自然数nを生成する。
埋め込み次数判定工程S82において、群位数候補生成部420は、CPU911などの処理装置を用いて、パラメータ生成条件記憶部410が記憶したパラメータ生成条件情報が表わす整数kに基づいて、整数kが偶数か奇数かを判定する。
整数kが偶数であると判定した場合、第一自然数算出工程S83へ進む。
整数kが奇数であると判定した場合、第二自然数算出工程S84へ進む。
第一自然数算出工程S83において、群位数候補生成部420は、CPU911などの処理装置を用いて、パラメータ生成条件記憶部410が記憶したパラメータ生成条件情報が表わす整数kと、自然数生成工程S81で生成した自然数nとに基づいて、整数kと自然数nとの積に1を加えた自然数r=n・k+1を算出する。
その後、素数判定工程S62へ進む。
第二自然数算出工程S84において、群位数候補生成部420は、CPU911などの処理装置を用いて、パラメータ生成条件記憶部410が記憶したパラメータ生成条件情報が表わす整数kと、自然数生成工程S81で生成した自然数nとに基づいて、整数kと自然数nの2倍との積に1を加えた自然数r=2n・k+1を算出する。
これにより、上述した条件のうち、自然数rが整数kの倍数+1であるという条件が満たされる。また、自然数rは常に奇数なので、素数である可能性がある。
第一判定値算出工程S85において、群位数安全性判定部430は、CPU911などの処理装置を用いて、第一自然数算出工程S83または第二自然数算出工程S84で算出した自然数rに基づいて、自然数rと1との和(r+1)を4で割った商(r+1)/4を算出し、整数r2とする。
第二判定値算出工程S86において、群位数安全性判定部430は、CPU911などの処理装置を用いて、自然数生成工程S81で生成した自然数nに基づいて、自然数nを、整数r1とする。
整数kが奇数の場合、r=2n・k+1なので、n=(r−1)/2kである。したがって、整数r1は、(r−1)をkと2との最小公倍数(整数kが奇数なので、2kと等しい)で割った商である。
整数kが偶数の場合、r=n・k+1なので、n=(r−1)/kである。したがって、整数r1は、(r−1)をkと2との最小公倍数(整数kが偶数なので、kと等しい)で割った商である。
また、kが4の倍数の場合には、整数r1は、(r−1)をkと4との最小公倍数で合った商でもある。
その後、第一素因数判定工程S70へ進む。
第三判定値算出工程S87において、群位数安全性判定部430は、CPU911などの処理装置を用いて、第一自然数算出工程S83または第二自然数算出工程S84で算出した自然数rに基づいて、自然数rと1との和(r+1)を2で割った商(r+1)/2を算出し、整数r2とする。
第二剰余算出工程S88において、群位数安全性判定部430は、CPU911などの処理装置を用いて、パラメータ生成条件記憶部410が記憶したパラメータ生成条件情報が表わす整数kに基づいて、整数kを4で割った余りを算出する。
算出した余りが0の場合は、第二判定値算出工程S86へ進む。
算出した余りが0以外の場合は、第四判定値算出肯定S89へ進む。
第四判定値算出工程S89において、群位数安全性判定部430は、CPU911などの処理装置を用いて、自然数生成工程S81で生成した自然数nに基づいて、自然数nを2で割った商n/2を算出し、整数r1とする。
整数kが奇数の場合、r1=(r−1)/4kとなる。したがって、自然数r1は、(r−1)をkと4との最小公倍数で割った商である。
整数kが偶数の場合、整数kを4で割った余りは2であり、r1=(r−1)/2kとなる。したがって、整数r1は、(r−1)をkと4との最小公倍数で割った商である。
このようにして、自然数rが、乗法群の位数として満たすべき条件をすべて満たす自然数rを選択する。
なお、上述した2つの処理の流れに限らず、他の手順で自然数rを選択してもよい。上述した自然数rが満たすべき条件を満足する自然数rが選択できればよく、判定の順序や細かい手順は、異なっていてもよい。
この実施の形態におけるIDベース暗号通信システム800(暗号通信システム)は、更に、群パラメータ生成装置400を有することを特徴とする。
群パラメータ生成装置400は、情報を処理するCPU911などの処理装置と、群位数候補生成部420と、群位数安全性判定部430と、パラメータ生成部440とを有することを特徴とする。
群位数候補生成部420は、CPU911などの処理装置を用いて、素数r(自然数r)を群位数の候補として生成することを特徴とする。
群位数安全性判定部430は、CPU911などの処理装置を用いて、群位数候補生成部420が生成した素数rに基づいて、素数rと1との差(r−1)の因数と、素数rと1との和(r+1)の因数とを算出し、CPU911などの処理装置を用いて、算出した(r−1)の因数と(r+1)の因数とに基づいて、群位数候補生成部420が生成した素数rが安全な群位数であるか否かを判定することを特徴とする。
パラメータ生成部440は、群位数候補生成部420が生成した素数rが安全な群位数であると群位数安全性判定部430が判定した場合に、CPU911などの処理装置を用いて、群位数候補生成部420が生成した素数rに基づいて、素数rを群位数とする乗法群を算出し、CPU911などの処理装置を用いて、算出した乗法群を表わす情報を含む群パラメータを生成することを特徴とする。
群パラメータ記憶部111は、磁気ディスク装置920などの記憶装置を用いて、群パラメータ生成装置400が生成した群パラメータを記憶することを特徴とする。
この実施の形態におけるIDベース暗号通信システム800によれば、安全な群位数を有する乗法群に基づいて、IDベース暗号通信をすることができるという効果を奏する。
この実施の形態におけるIDベース暗号通信システム800(暗号通信システム)は、また、以下の点を特徴とする。
群位数候補生成部420は、CPU911などの処理装置を用いて、所定の整数kの倍数に1を加えた素数r(自然数r)を群位数の候補として生成することを特徴とする。
群位数安全性判定部430は、剰余算出部431と、判定値算出部432と、素因数判定部433とを有することを特徴とする。
剰余算出部431は、CPU911などの処理装置を用いて、群位数候補生成部420が生成した素数rに基づいて、素数rを4で割った余りを算出することを特徴とする。
判定値算出部432は、上記剰余算出部が算出した余りが1である場合に、CPU911などの処理装置を用いて、上記所定の整数kと、群位数候補生成部420が生成した素数rに基づいて、素数rと1との差(r−1)を、整数kと4との最小公倍数LCM(k,4)で割った商である整数r1=(r−1)/LCM(k,4)を算出し、CPU911などの処理装置を用いて、群位数候補生成部420が生成した素数rに基づいて、素数rと1との和(r+1)を2で割った商である整数r2=(r+1)/2を算出し、剰余算出部431が算出した余りが3である場合に、CPU911などの処理装置を用いて、上記所定の整数kと、群位数候補生成部420が生成した素数rに基づいて、素数rと1との差(r−1)を、整数kと2との最小公倍数LCM(k,2)で割った商である整数r1=(r−1)/LCM(k,2)を算出し、CPU911などの処理装置を用いて、群位数候補生成部420が生成した素数rに基づいて、素数rと1との和(r+1)を4で割った商である整数r2=(r+1)/4を算出することを特徴とする。
素因数判定部433は、CPU911などの処理装置を用いて、判定値算出部432が算出した整数r1に基づいて、整数r1が所定の整数B1より小さい素因数を有するか否かを判定し、CPU911などの処理装置を用いて、判定値算出部432が算出した整数r2に基づいて、整数r2が所定の整数B2より小さい素因数を有するか否かを判定し、整数r1が所定の整数B1より小さい素因数を有すると判定した場合、及び、整数r2が所定の整数B2より小さい素因数を有すると判定した場合に、群位数候補生成部420が生成した素数rが安全な群位数でないと判定することを特徴とする。
この実施の形態におけるIDベース暗号通信システム800によれば、攻撃法が判明している群位数を避けることができるので、安全な群位数を有する乗法群に基づいて、IDベース暗号通信をすることができるという効果を奏する。
この実施の形態における群パラメータ生成装置400は、以下の点を特徴とする。
それぞれが対応する暗号文受信装置301〜303を有するn人の受信者(nは、1以上の整数。)に対して、平文M(セッション鍵K)を1つの暗号文C(鍵暗号文C)により通知する暗号通信システム(IDベース暗号通信システム800)における暗号処理に使用する乗法群のパラメータを生成する群パラメータ生成装置400において、
情報を処理するCPU911などの処理装置と、群位数候補生成部420と、群位数安全性判定部430と、パラメータ生成部440とを有することを特徴とする。
群位数候補生成部420は、CPU911などの処理装置を用いて、素数rを群位数の候補として生成することを特徴とする。
群位数安全性判定部430は、CPU911などの処理装置を用いて、群位数候補生成部420が生成した素数rに基づいて、素数rと1との差(r−1)の因数と、素数rと1との和(r+1)の因数とを算出し、CPU911などの処理装置を用いて、算出した(r−1)の因数と(r+1)の因数とに基づいて、群位数候補生成部420が生成した素数rが安全な群位数であるか否かを判定することを特徴とする。
パラメータ生成部440は、群位数候補生成部420が生成した素数rが安全な群位数であると群位数安全性判定部430が判定した場合に、CPU911などの処理装置を用いて、群位数候補生成部420が生成した素数rに基づいて、素数rを群位数とする乗法群を算出し、CPU911などの処理装置を用いて、算出した乗法群を表わす情報を含む群パラメータを生成することを特徴とする。
この実施の形態における群パラメータ生成装置400によれば、安全な群位数を有する乗法群に基づいて、IDベース暗号通信システム800における暗号処理に使用する群パラメータを生成できるので、IDベース暗号通信システム800における暗号通信の安全を確保できるという効果を奏する。
この実施の形態における群パラメータ生成装置400は、また、以下の点を特徴とする。
群位数候補生成部420は、CPU911などの処理装置を用いて、所定の整数kの倍数に1を加えた素数rを群位数の候補として生成することを特徴とする。
群位数安全性判定部430は、剰余算出部431と、判定値算出部432と、素因数判定部433とを有することを特徴とする。
剰余算出部431は、CPU911などの処理装置を用いて、群位数候補生成部420が生成した素数rに基づいて、素数rを4で割った余りを算出することを特徴とする。
判定値算出部432は、剰余算出部431が算出した余りが1である場合に、CPU911などの処理装置を用いて、上記所定の整数kと、群位数候補生成部420が生成した素数rに基づいて、素数rと1との差(r−1)を、整数kと4との最小公倍数LCM(k,4)で割った商である整数r1=(r−1)/LCM(k,4)を算出し、CPU911などの処理装置を用いて、群位数候補生成部420が生成した素数rに基づいて、素数rと1との和(r+1)を2で割った商である整数r2=(r+1)/2を算出し、剰余算出部431が算出した余りが3である場合に、CPU911などの処理装置を用いて、上記所定の整数kと、群位数候補生成部420が生成した素数rに基づいて、素数rと1との差(r−1)を、整数kと2との最小公倍数LCM(k,2)で割った商である整数r1=(r−1)/LCM(k,2)を算出し、CPU911などの処理装置を用いて、群位数候補生成部420が生成した素数rに基づいて、素数rと1との和(r+1)を4で割った商である整数r2=(r+1)/4を算出することを特徴とする。
素因数判定部433は、CPU911などの処理装置を用いて、判定値算出部432が算出した整数r1に基づいて、整数r1が所定の整数B1より小さい素因数を有するか否かを判定し、CPU911などの処理装置を用いて、判定値算出部432が算出した整数r2に基づいて、整数r2が所定の整数B2より小さい素因数を有するか否かを判定し、整数r1が所定の整数B1より小さい素因数を有すると判定した場合、及び、整数r2が所定の整数B2より小さい素因数を有すると判定した場合に、群位数候補生成部420が生成した素数rが安全な群位数でないと判定することを特徴とする。
この実施の形態における群パラメータ生成装置400によれば、攻撃法の判明している群位数を避けることができるので、安全な群位数を有する乗法群に基づいて、IDベース暗号通信システム800における暗号処理に使用する群パラメータを生成でき、IDベース暗号通信システム800における暗号通信の安全を確保できるという効果を奏する。
実施の形態5.
実施の形態5について、図29を用いて説明する。
この実施の形態におけるIDベース暗号通信システム800の全体構成、暗号パラメータ生成装置100及び暗号文生成装置200及び暗号文受信装置301〜303のブロック構成は、実施の形態4で説明したものと同様なので、ここでは説明を省略する。
群パラメータ生成装置400について説明する。
この実施の形態における群パラメータ生成装置400のブロック構成は、実施の形態4で説明したものと同様なので、図26を用いて、異なる部分を説明する。
パラメータ生成条件記憶部410は、パラメータ生成条件情報として、整数kと、整数Dとを表わす情報を記憶する。
素因数判定部433は、CPU911などの処理装置を用いて、判定値算出部432が出力した整数r1と整数r2とを表わす情報を入力する。
素因数判定部433は、CPU911などの処理装置を用いて、入力した情報が表わす整数r1に基づいて、整数r1が素数であるか否かを判定する。
整数r1が素数でないと判定した場合、素因数判定部433は、CPU911などの処理装置を用いて、群位数候補生成部420が生成した自然数rが安全な群位数でなく、群位数として適切でないと判定する。
素因数判定部433は、CPU911などの処理装置を用いて、入力した情報が表わす整数r2に基づいて、整数r2が素数であるか否かを判定する。
整数r2が素数でないと判定した場合、素因数判定部433は、CPU911などの処理装置を用いて、群位数候補生成部420が生成した自然数rが安全な群位数でなく、群位数として適切でないと判定する。
素因数判定部433は、整数r1と整数r2とがともに素数であると判定した場合のみ、群位数候補生成部420が生成した自然数rが安全な群位数であり、群位数として適切であると判定する。
次に、動作について説明する。
図29は、この実施の形態における群パラメータ生成装置400が群パラメータを生成する群パラメータ生成処理の流れの一例を示すフローチャート図である。
なお、実施の形態4で説明した群パラメータ生成処理の工程と共通する工程については、同一の符号を付す。
第一素因数判定工程S70において、群位数安全性判定部430は、CPU911などの処理装置を用いて、第二判定値算出工程S67または第四判定値算出工程S69で算出した整数r1に基づいて、整数r1が素数であるか否かを判定する。
整数r1が素数でないと判定した場合、自然数生成工程S61に戻り、異なる自然数rを生成する。
整数r1が素数であると判定した場合、第二素因数判定工程S71へ進む。
第二素因数判定工程S71において、群位数安全性判定部430は、CPU911などの処理装置を用いて、第一判定値算出工程S66または第二判定値算出工程S68で算出した整数r2に基づいて、整数r2が素数であるか否かを判定する。
整数r2が素数でないと判定した場合、自然数生成工程S61に戻り、異なる自然数rを生成する。
整数r2が素数であると判定した場合、群パラメータ生成工程S85へ進む。
実施の形態4では、整数r1及びr2が、ある程度の大きさまでの素因数を持たなければ安全であるとみなしたが、この実施の形態では、整数r1及びr2が素数であるか否かを判定することにより、自然数rが安全な群位数であるか否かを判定するので、より安全性が高くなる。
この実施の形態におけるIDベース暗号通信システム800(暗号通信システム)は、以下の点を特徴とする。
群位数候補生成部420は、CPU911などの処理装置を用いて、所定の整数kの倍数に1を加えた素数rを群位数の候補として生成することを特徴とする。
群位数安全性判定部430は、剰余算出部431と、判定値算出部432と、素因数判定部433とを有することを特徴とする。
剰余算出部431は、CPU911などの処理装置を用いて、群位数候補生成部420が生成した素数rに基づいて、素数rを4で割った余りを算出することを特徴とする。
判定値算出部432は、剰余算出部431が算出した余りが1である場合に、CPU911などの処理装置を用いて、上記所定の整数kと、群位数候補生成部420が生成した素数rに基づいて、素数rと1との差(r−1)を、整数kと4との最小公倍数LCM(k,4)で割った商である整数r1=(r−1)/LCM(k,4)を算出し、CPU911などの処理装置を用いて、群位数候補生成部420が生成した素数rに基づいて、素数rと1との和(r+1)を2で割った商である整数r2=(r+1)/2を算出し、剰余算出部431が算出した余りが3である場合に、CPU911などの処理装置を用いて、上記所定の整数kと、群位数候補生成部420が生成した素数rに基づいて、素数rと1との差(r−1)を、整数kと2との最小公倍数LCM(k,2)で割った商である整数r1=(r−1)/LCM(k,2)を算出し、CPU911などの処理装置を用いて、群位数候補生成部420が生成した素数rに基づいて、素数rと1との和(r+1)を4で割った商である整数r2=(r+1)/4を算出することを特徴とする。
素因数判定部433は、CPU911などの処理装置を用いて、判定値算出部432が算出した整数r1に基づいて、整数r1が素数であるか否かを判定し、CPU911などの処理装置を用いて、判定値算出部432が算出した整数r2に基づいて、整数r2が素数であるか否かを判定し、整数r1が素数でないと判定した場合、及び、整数r2が素数でないと判定した場合に、群位数候補生成部420が生成した素数rが安全な群位数でないと判定することを特徴とする。
この実施の形態におけるIDベース暗号通信システム800によれば、攻撃法の判明している群位数を確実に避けることができるので、安全な群位数を有する乗法群に基づいて、IDベース暗号通信システム800における暗号処理に使用する群パラメータを生成でき、IDベース暗号通信システム800における暗号通信の安全を確保できるという効果を奏する。
この実施の形態における群パラメータ生成装置400は、以下の点を特徴とする。
群位数候補生成部420は、CPU911などの処理装置を用いて、所定の整数kの倍数に1を加えた素数rを群位数の候補として生成することを特徴とする。
群位数安全性判定部430は、剰余算出部431と、判定値算出部432と、素因数判定部433とを有することを特徴とする。
剰余算出部431は、CPU911などの処理装置を用いて、群位数候補生成部420が生成した素数rに基づいて、素数rを4で割った余りを算出することを特徴とする。
判定値算出部432は、剰余算出部431が算出した余りが1である場合に、CPU911などの処理装置を用いて、上記所定の整数kと、群位数候補生成部420が生成した素数rに基づいて、素数rと1との差(r−1)を、整数kと4との最小公倍数LCM(k,4)で割った商である整数r1=(r−1)/LCM(k,4)を算出し、CPU911などの処理装置を用いて、群位数候補生成部420が生成した素数rに基づいて、素数rと1との和(r+1)を2で割った商である整数r2=(r+1)/2を算出し、剰余算出部431が算出した余りが3である場合に、CPU911などの処理装置を用いて、上記所定の整数kと、群位数候補生成部420が生成した素数rに基づいて、素数rと1との差(r−1)を、整数kと2との最小公倍数LCM(k,2)で割った商である整数r1=(r−1)/LCM(k,2)を算出し、CPU911などの処理装置を用いて、群位数候補生成部420が生成した素数rに基づいて、素数rと1との和(r+1)を4で割った商である整数r2=(r+1)/4を算出することを特徴とする。
素因数判定部433は、CPU911などの処理装置を用いて、判定値算出部432が算出した整数r1に基づいて、整数r1が素数であるか否かを判定し、CPU911などの処理装置を用いて、判定値算出部432が算出した整数r2に基づいて、整数r2が素数であるか否かを判定し、整数r1が素数でないと判定した場合、及び、整数r2が素数でないと判定した場合に、群位数候補生成部420が生成した素数rが安全な群位数でないと判定することを特徴とする。
この実施の形態における群パラメータ生成装置400によれば、攻撃法の判明している群位数を確実に避けることができるので、安全な群位数を有する乗法群に基づいて、IDベース暗号通信システム800における暗号処理に使用する群パラメータを生成でき、IDベース暗号通信システム800における暗号通信の安全を確保できるという効果を奏する。
実施の形態1におけるIDベース暗号通信システム800の全体構成の一例を示すシステム構成図。 実施の形態1における暗号パラメータ生成装置100及び暗号文生成装置200及び暗号文受信装置301〜303の外観の一例を示す図。 実施の形態1における暗号パラメータ生成装置100及び暗号文生成装置200及び暗号文受信装置301〜303のハードウェア資源の一例を示す図。 実施の形態1における暗号パラメータ生成装置100の機能ブロックの構成の一例を示すブロック構成図。 実施の形態1における暗号文生成装置200の機能ブロックの構成の一例を示すブロック構成図。 実施の形態1における暗号文受信装置301の機能ブロックの構成の一例を示すブロック構成図。 実施の形態1における暗号パラメータ生成装置100が公開暗号パラメータを設定するパラメータ設定処理の流れの一例を示すフローチャート図。 実施の形態1における暗号パラメータ生成装置100が秘密鍵を設定する秘密鍵設定処理の流れの一例を示すフローチャート図。 実施の形態1における暗号文生成装置200が暗号文を生成する暗号文生成処理の流れの一例を示すフローチャート図。 実施の形態1における暗号文受信装置301〜303が暗号文を受信する暗号文受信処理の流れの一例を示すフローチャート図。 実施の形態2における対比例である暗号文生成装置200のなかでやり取りされる情報の流れの一例を示す図。 実施の形態2における対比例である暗号パラメータ生成装置100が公開暗号パラメータを設定するパラメータ設定処理の流れの一例を示すフローチャート図。 実施の形態2における対比例である暗号パラメータ生成装置100が秘密鍵を設定する秘密鍵設定処理の流れの一例を示すフローチャート図。 実施の形態2における対比例である暗号文生成装置200が暗号文を生成する暗号文生成処理の流れの一例を示すフローチャート図。 実施の形態2における対比例である暗号文受信装置301〜303が暗号文を受信する暗号文受信処理の流れの一例を示すフローチャート図。 実施の形態2における暗号文生成装置200のなかでやり取りされる情報の流れの一例を示す図。 実施の形態2における暗号文生成装置200が暗号文を生成する暗号文生成処理の流れの一例を示すフローチャート図。 実施の形態2における暗号文受信装置301〜303が暗号文を受信する暗号文受信処理の流れの一例を示すフローチャート図。 実施の形態3における対比例である暗号パラメータ生成装置100が公開暗号パラメータを設定するパラメータ設定処理の流れの一例を示すフローチャート図。 実施の形態3における対比例である暗号パラメータ生成装置100が秘密鍵を設定する秘密鍵設定処理の流れの一例を示すフローチャート図。 実施の形態3における対比例である暗号文生成装置200が暗号文を生成する暗号文生成処理の流れの一例を示すフローチャート図。 実施の形態3における対比例である暗号文受信装置301〜303が暗号文を受信する暗号文受信処理の流れの一例を示すフローチャート図。 実施の形態3における暗号文生成装置200が暗号文を生成する暗号文生成処理の流れの一例を示すフローチャート図。 実施の形態3における暗号文受信装置301〜303が暗号文を受信する暗号文受信処理の流れの一例を示すフローチャート図。 実施の形態4におけるIDベース暗号通信システム800の全体構成の一例を示すシステム構成図。 実施の形態4における群パラメータ生成装置400の機能ブロックの構成の一例を示すブロック構成図。 実施の形態4における群パラメータ生成装置400が群パラメータを生成する群パラメータ生成処理の流れの一例を示すフローチャート図。 実施の形態5における群パラメータ生成装置400が群パラメータを生成する群パラメータ生成処理の流れの一例を示すフローチャート図。 実施の形態5における群パラメータ生成装置400が群パラメータを生成する群パラメータ生成処理の流れの一例を示すフローチャート図。
符号の説明
100 暗号パラメータ生成装置、110 パラメータ設定部、111 群パラメータ記憶部、112 秘密情報生成部、113 公開パラメータ生成部、114 公開パラメータ公開部、121 秘密情報記憶部、122 パラメータ記憶部、130 秘密鍵設定部、131 識別情報入力部、132 秘密鍵生成部、133 秘密鍵通知部、200 暗号文生成装置、210 暗号パラメータ記憶部、221 セッション鍵生成部、222 乱数生成部、231 平文入力部、232 受信者識別入力部、240 暗号文主文生成部、241 第一暗号文生成部、242 第二暗号文生成部、243 第三暗号文生成部、244 ハッシュ値算出部、245 暗号文検証文生成部、246 暗号文結合部、251 データ入力部、252 データ暗号化部、261 暗号文通知部、290 鍵暗号化部、301〜303 暗号文受信装置、310 公開パラメータ記憶部、323 秘密鍵記憶部、341 暗号文復号部、344 検証ハッシュ値算出部、345 暗号文検証部、346 暗号文分解部、351 暗号文受信部、352 データ復号部、390 鍵復号部、400 群パラメータ生成装置、410 パラメータ生成条件記憶部、420 群位数候補生成部、430 群位数安全性判定部、431 剰余算出部、432 判定値算出部、433 素因数判定部、440 パラメータ生成部、500 公開された情報、510 公開暗号パラメータ、531〜533 受信者識別情報、600 秘密裏に通知される情報、601〜603 秘密鍵、710 平文データ、720 通知データ、721 鍵暗号文C、722 暗号化データ、800 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 (21)

  1. 平文Mをn人の受信者(nは、1以上の整数。)に対して通知する暗号文Cを生成する暗号文生成装置において、
    情報を記憶する記憶装置と、情報を処理する処理装置と、暗号パラメータ記憶部と、受信者識別入力部と、平文入力部と、暗号文主文生成部と、ハッシュ値算出部と、暗号文検証文生成部と、暗号文結合部とを有し、
    上記暗号パラメータ記憶部は、上記記憶装置を用いて、公開暗号パラメータを記憶し、
    上記受信者識別入力部は、上記処理装置を用いて、n人の受信者をそれぞれ識別するn個の受信者識別情報ID(iは、1以上n以下の整数。)を入力し、
    上記平文入力部は、上記処理装置を用いて、平文Mを入力し、
    上記暗号文主文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記受信者識別入力部が入力したn個の受信者識別情報IDと、上記平文入力部が入力した平文Mとに基づいて、n人の受信者に対応するn個の暗号文主文CB(iは、1以上n以下の整数。)を生成し、
    上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号文主文生成部が生成したn個の暗号文主文CBを結合して、結合暗号文を生成し、上記処理装置を用いて、生成した結合暗号文に基づいて、ハッシュ値Hを算出し、
    上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記ハッシュ値算出部が算出したハッシュ値Hとに基づいて、暗号文検証文CCを生成し、
    上記暗号文結合部は、上記処理装置を用いて、上記暗号文主文生成部が生成したn個の暗号文主文CBと、上記暗号文検証文生成部が生成した暗号文検証文CCとを結合して、1つの暗号文Cとする
    ことを特徴とする暗号文生成装置。
  2. 上記暗号文生成装置は、更に、乱数生成部を有し、
    上記乱数生成部は、上記処理装置を用いて、n人の受信者に対応するn個の整数s(iは、1以上n以下の整数。)をランダムに生成し、
    上記暗号文主文生成部は、第一暗号文生成部と、第二暗号文生成部と、第三暗号文生成部とを有し、
    上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記平文入力部が入力した平文Mと、上記乱数生成部が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の第一暗号文C1(iは、1以上n以下の整数。)を生成し、
    上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記受信者識別入力部が入力したn個の受信者識別情報IDと、上記乱数生成部が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の第二暗号文C2(iは、1以上n以下の整数。)を生成し、
    上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記乱数生成部が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の第三暗号文C3(iは、1以上n以下の整数。)を生成し、
    上記第一暗号文生成部が生成したn個の第一暗号文C1と、上記第二暗号文生成部が生成したn個の第二暗号文C2と、上記第三暗号文生成部が生成したn個の第三暗号文C3とを、n人の受信者に対応するn個の暗号文主文CBとし、
    上記ハッシュ値算出部は、上記処理装置を用いて、上記第一暗号文生成部が生成したn個の第一暗号文C1と、上記第二暗号文生成部が生成したn個の第二暗号文C2と、上記第三暗号文生成部が生成したn個の第三暗号文C3とを結合して、1つの結合暗号文とし、上記処理装置を用いて、結合した1つの結合暗号文に基づいて、1つのハッシュ値Hを算出し、
    上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記乱数生成部が生成したn個の整数sと、上記ハッシュ値算出部が算出した1つのハッシュ値Hとに基づいて、n人の受信者に対応するn個の暗号文検証文CC(iは、1以上n以下の整数。)を生成し、
    上記暗号文結合部は、上記処理装置を用いて、上記第一暗号文生成部が生成したn個の第一暗号文C1と、上記第二暗号文生成部が生成したn個の第二暗号文C2と、上記第三暗号文生成部が生成したn個の第三暗号文C3と、上記暗号文検証文生成部が生成したn個の暗号文検証文CCとを結合して、1つの暗号文Cとする
    ことを特徴とする請求項1に記載の暗号文生成装置。
  3. 上記暗号パラメータ記憶部は、上記記憶装置を用いて、公開暗号パラメータとして、自然数rと、位数が上記自然数rである乗法群G1と、位数が上記自然数rである乗法群G2と、位数が上記自然数rである乗法群GTと、乗法群G1の要素と乗法群G2の要素とから乗法群GTの要素を算出するペアリングeと、乗法群GTの要素から所定の長さのビット列を算出する鍵生成関数KDFと、任意の長さのビット列から上記自然数r未満の自然数を算出するハッシュ関数HFと、乗法群G1の要素gと、乗法群G1の要素g1と、乗法群G2の要素g2と、乗法群G2の要素h1と、乗法群G2の要素h2と、乗法群G2の要素h3とを表わす情報を記憶し、
    上記受信者識別入力部は、上記処理装置を用いて、n個の整数IDをn個の受信者識別情報として入力し、
    上記乱数生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす自然数rに基づいて、n人の受信者に対応するn個の1以上自然数r未満の整数s(iは、1以上n以下の整数。)をランダムに生成し、
    上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素h1とペアリングeと、鍵生成関数KDFと、上記乱数生成部が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の鍵ビット列k=KDF(e(g,h1)^s)(iは、1以上n以下の整数。)を算出し、上記処理装置を用いて、算出したn個の鍵ビット列kにより、上記平文入力部が入力した平文Mをそれぞれ暗号化して、n人の受信者に対応するn個の第一暗号文C1(iは、1以上n以下の整数。)とし、
    上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと、乗法群G1の要素g1と、上記受信者識別入力部が入力したn個の整数IDと、上記乱数生成部が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の乗法群G1の要素u=(g1・g^−ID)^s(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G1の要素uをそれぞれ表わすビット列を、n人の受信者に対応するn個の第二暗号文C2(iは、1以上n以下の整数。)とし、
    上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素g2とペアリングeと、上記乱数生成部が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の乗法群GTの要素v=e(g,g2)^s(iは、1以上n以下の整数。)を算出し、算出した乗法群GTの要素vをそれぞれ表わすビット列を、n人の受信者に対応するn個の第三暗号文C3(iは、1以上n以下の整数。)とし、
    上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わすハッシュ関数HFに基づいて、1つの自然数βを算出して、ハッシュ値Hとし、
    上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素h2と乗法群G2の要素h3とペアリングeと、上記乱数生成部が生成したn個の整数sと、上記ハッシュ値算出部が算出した1つの自然数βとに基づいて、n人の受信者に対応するn個の乗法群GTの要素y=e(g,h2)^s・e(g,h3)^(s・β)(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群GTの要素yをそれぞれ表わすビット列を、n人の受信者に対応するn個の暗号文検証文CC(iは、1以上n以下の整数。)とする
    ことを特徴とする請求項2に記載の暗号文生成装置。
  4. 上記暗号パラメータ記憶部は、上記記憶装置を用いて、公開暗号パラメータとして、自然数rと、位数が上記自然数rである乗法群G1と、位数が上記自然数rである乗法群G2と、位数が上記自然数rである乗法群GTと、乗法群G1の要素と乗法群G2の要素とから乗法群GTの要素を算出するペアリングeと、乗法群GTの要素から所定の長さのビット列を算出する鍵生成関数KDFと、所定の長さのビット列から乗法群GTの要素を算出する2つの関数V1及びV2と、任意の長さのビット列から所定の長さのビット列を算出するハッシュ関数HFと、乗法群G1の要素gと、乗法群G1の要素g1と、乗法群G2の要素g2とを表わす情報を記憶し、
    上記受信者識別入力部は、上記処理装置を用いて、n個の所定の長さのビット列IDをn個の受信者識別情報として入力し、
    上記乱数生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす自然数rに基づいて、n人の受信者に対応するn個の1以上自然数r未満の整数s(iは、1以上n以下の整数。)をランダムに生成し、
    上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素g1と乗法群G2の要素g2とペアリングeと鍵生成関数KDFと、上記乱数生成部が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の鍵ビット列k=KDF(e(g1,g2)^s)(iは、1以上n以下の整数。)を算出し、上記処理装置を用いて、算出したn個の鍵ビット列kにより、上記平文入力部が入力した平文Mをそれぞれ暗号化して、n人の受信者に対応するn個の第一暗号文C1(iは、1以上n以下の整数。)とし、
    上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす関数V1と、上記乱数生成部が生成したn個の整数sと、上記受信者識別入力部が入力したn個の所定の長さのビット列IDとに基づいて、n人の受信者に対応するn個の乗法群G2の要素u=V1(ID)^s(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G2の要素uをそれぞれ表わすビット列を、n人の受信者に対応するn個の第二暗号文C2(iは、1以上n以下の整数。)とし、
    上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと、上記乱数生成部が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の乗法群G1の要素v=g^s(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G1の要素vをそれぞれ表わすビット列を、n人の受信者に対応するn個の第三暗号文C3(iは、1以上n以下の整数。)とし、
    上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わすハッシュ関数HFに基づいて、1つの所定の長さのビット列wを算出して、ハッシュ値Hとし、
    上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす関数V2と、上記乱数生成部が生成したn個の整数sと、上記ハッシュ値算出部が算出した1つの所定の長さのビット列wとに基づいて、n人の受信者に対応するn個の乗法群G2の要素y=V2(w)^s(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G2の要素yをそれぞれ表わすビット列を、n人の受信者に対応するn個の暗号文検証文CC(iは、1以上n以下の整数。)とする
    ことを特徴とする請求項2に記載の暗号文生成装置。
  5. 上記暗号パラメータ記憶部は、上記記憶装置を用いて、2つの関数V1及びV2を表わす情報として、m1個の乗法群G2の要素hξ(ξは、1以上m1以下の整数。)と、2つの乗法群G2の要素h1’及びh2’とを表わす情報を記憶し、
    上記第二暗号文生成部は、上記処理装置を用いて、上記受信者識別入力部が入力したn個の所定の長さのビット列IDそれぞれを、m1個の所定の長さのビット列νiξ(ξは、1以上m1以下の整数。)に分割し、分割したm1個の所定の長さのビット列νiξをm1個の整数として取り扱い、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わすm1個の乗法群G2の要素hξ(ξは、1以上m1以下の整数。)と乗法群G2の要素h1’と、分割したm1個の整数νiξとに基づいて、関数V1の値である乗法群G2の要素V1(ID)=h1’・Π(hξ^νiξ)(ξは、1以上m1以下の整数。)を算出し、
    上記暗号文検証文生成部は、上記処理装置を用いて、上記ハッシュ値算出部が算出した所定の長さのビット列wを、m1個の所定の長さのビット列νξ(ξは、1以上m1以下の整数。)に分割し、分割したm1個の所定の長さのビット列νξをm1個の整数として取り扱い、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わすm1個の乗法群G2の要素hξ(ξは、1以上m1以下の整数。)と乗法群G2の要素h2’と、分割したm1個の整数νξとに基づいて、関数V2の値である乗法群G2の要素V2(w)=h2’・Π(hξ^νξ)(ξは、1以上m1以下の整数。)を算出する
    ことを特徴とする請求項4に記載の暗号文生成装置。
  6. 上記暗号文主文生成部は、上記処理装置を用いて、上記受信者識別入力部が入力したn個の受信者識別情報IDを含むn個の暗号文主文CBを生成する
    ことを特徴とする請求項1に記載の暗号文生成装置。
  7. 上記暗号文生成装置は、更に、暗号文通知部を有し、
    上記暗号文通知部は、上記処理装置を用いて、上記受信者識別入力部が入力したn個の受信者識別情報IDによって識別されるn人の受信者に対して、上記暗号文結合部が結合した1つの暗号文Cを通知する
    ことを特徴とする請求項1に記載の暗号文生成装置。
  8. 上記暗号文生成装置は、更に、セッション鍵生成部を有し、
    上記セッション鍵生成部は、上記処理装置を用いて、所定の長さのビット列をランダムに生成して、セッション鍵Kとし、
    上記平文入力部は、上記処理装置を用いて、平文Mとして、上記セッション鍵生成部が生成したセッション鍵Kを入力する
    ことを特徴とする請求項1に記載の暗号文生成装置。
  9. 上記暗号文生成装置は、更に、データ入力部と、データ暗号化部と、暗号文通知部とを有し、
    上記データ入力部は、上記処理装置を用いて、n人の受信者に対して送信すべき1つの平文データを入力し、
    上記データ暗号化部は、上記処理装置を用いて、上記セッション鍵生成部が生成したセッション鍵Kにより、上記データ入力部が入力した1つの平文データを暗号化して、1つの暗号化データとし、
    上記暗号文通知部は、上記処理装置を用いて、上記受信者識別入力部が入力したn個の受信者識別情報IDによって識別されるn人の受信者に対して、上記暗号文結合部が結合した1つの暗号文Cと、上記データ暗号化部が暗号化した1つの暗号化データとを通知する
    ことを特徴とする請求項8に記載の暗号文生成装置。
  10. それぞれが対応する暗号文受信装置を有するn人の受信者(nは、1以上の整数。)に対して、平文Mを1つの暗号文Cにより通知する暗号通信システムにおいて、
    暗号パラメータ生成装置と、暗号文生成装置と、複数の暗号文受信装置とを有し、
    上記暗号パラメータ生成装置は、
    情報を記憶する記憶装置と、情報を処理する処理装置と、秘密情報生成部と、秘密情報記憶部と、公開パラメータ生成部と、公開パラメータ公開部と、識別情報入力部と、秘密鍵生成部と、秘密鍵通知部とを有し、
    上記秘密情報生成部は、上記処理装置を用いて、秘密情報をランダムに生成し、
    上記秘密情報記憶部は、上記記憶装置を用いて、上記秘密情報生成部が生成した秘密情報を記憶し、
    上記公開パラメータ生成部は、上記処理装置を用いて、上記秘密情報生成部が生成した秘密情報に基づいて、公開暗号パラメータを生成し、
    上記公開パラメータ公開部は、上記処理装置を用いて、上記公開パラメータ生成部が生成した公開暗号パラメータを公開し、
    上記識別情報入力部は、上記処理装置を用いて、上記複数の暗号文受信装置のうち1つの暗号文受信装置に対応する1人の受信者を識別する受信者識別情報IDを入力し、
    上記秘密鍵生成部は、上記処理装置を用いて、上記秘密情報記憶部が記憶した秘密情報と、上記公開パラメータ生成部が生成した公開暗号パラメータと、上記識別情報入力部が入力した受信者識別情報IDとに基づいて、上記1人の受信者に対応する秘密鍵dIDを生成し、
    上記秘密鍵通知部は、上記処理装置を用いて、上記1人の受信者に対応する1つの暗号文受信装置に対して、上記秘密鍵生成部が生成した秘密鍵dIDを秘密裏に通知し、
    上記暗号文生成装置は、
    情報を記憶する記憶装置と、情報を処理する処理装置と、暗号パラメータ記憶部と、受信者識別入力部と、平文入力部と、暗号文主文生成部と、ハッシュ値算出部と、暗号文検証文生成部と、暗号文結合部と、暗号文通知部とを有し、
    上記暗号パラメータ記憶部は、上記記憶装置を用いて、上記暗号パラメータ生成装置が公開した公開暗号パラメータを記憶し、
    上記受信者識別入力部は、上記処理装置を用いて、n人の受信者をそれぞれ識別するn個の受信者識別情報ID(iは、1以上n以下の整数。)を入力し、
    上記平文入力部は、上記処理装置を用いて、平文Mを入力し、
    上記暗号文主文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記受信者識別入力部が入力したn個の受信者識別情報IDと、上記平文入力部が入力した平文Mとに基づいて、n人の受信者に対応するn個の暗号文主文CB(iは、1以上n以下の整数。)を生成し、
    上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号文主文生成部が生成したn個の暗号文主文CBを結合して、結合暗号文を生成し、上記処理装置を用いて、生成した結合暗号文に基づいて、ハッシュ値Hを算出し、
    上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記ハッシュ値算出部が算出したハッシュ値Hとに基づいて、暗号文検証文CCを生成し、
    上記暗号文結合部は、上記処理装置を用いて、上記暗号文主文生成部が生成したn個の暗号文主文CBと、上記暗号文検証文生成部が生成した暗号文検証文CCとを結合して、1つの暗号文Cとし、
    上記暗号文通知部は、上記処理装置を用いて、上記n人の受信者に対応するn個の暗号文受信装置に対して、上記暗号文結合部が結合した1つの暗号文Cを通知し、
    上記複数の暗号文受信装置は、それぞれ、
    情報を記憶する記憶装置と、情報を処理する処理装置と、公開パラメータ記憶部と、秘密鍵記憶部と、暗号文受信部と、暗号文分解部と、検証ハッシュ値算出部と、暗号文検証部と、暗号文復号部とを有し、
    上記公開パラメータ記憶部は、上記記憶装置を用いて、上記暗号パラメータ生成装置が公開した公開暗号パラメータを記憶し、
    上記秘密鍵記憶部は、上記記憶装置を用いて、上記暗号パラメータ生成装置が通知した秘密鍵dIDを記憶し、
    上記暗号文受信部は、上記処理装置を用いて、上記暗号文生成装置が通知した1つの暗号文Cを受信し、
    上記暗号文分解部は、上記処理装置を用いて、上記暗号文受信部が受信した1つの暗号文Cに基づいて、n個の暗号文主文CBと、暗号文検証文CCとを取得し、
    上記検証ハッシュ値算出部は、上記処理装置を用いて、上記暗号文分解部が取得したn個の暗号文主文CBを結合した検証結合暗号文に基づいて、検証ハッシュ値H’を算出し、
    上記暗号文検証部は、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータと、上記暗号文分解部が取得したn個の暗号文主文CBのうち、暗号文受信装置が対応する受信者に対応する1つの対応暗号文主文CBIDと、暗号文検証文CCと、上記検証ハッシュ値算出部が算出した検証ハッシュ値H’とに基づいて、上記暗号文受信部が受信した1つの暗号文Cに整合性があるか否かを判定し、
    上記暗号文復号部は、上記暗号文受信部が受信した1つの暗号文Cに整合性があると、上記暗号文検証部が判定した場合に、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータと、上記秘密鍵記憶部が記憶した秘密鍵dIDと、上記暗号文分解部が取得したn個の暗号文主文CBのうち、暗号文受信装置が対応する受信者に対応する1つの対応暗号文主文CBIDとに基づいて、平文Mを復元する
    ことを特徴とする暗号通信システム。
  11. 上記暗号文生成装置は、更に、乱数生成部を有し、
    上記乱数生成部は、上記処理装置を用いて、n人の受信者に対応するn個の整数s(iは、1以上n以下の整数。)をランダムに生成し、
    上記暗号文主文生成部は、第一暗号文生成部と、第二暗号文生成部と、第三暗号文生成部とを有し、
    上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記平文入力部が入力した平文Mと、上記乱数生成部が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の第一暗号文C1(iは、1以上n以下の整数。)を生成し、
    上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記受信者識別入力部が入力したn個の受信者識別情報IDと、上記乱数生成部が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の第二暗号文C2(iは、1以上n以下の整数。)を生成し、
    上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記乱数生成部が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の第三暗号文C3(iは、1以上n以下の整数。)を生成し、
    上記第一暗号文生成部が生成したn個の第一暗号文C1と、上記第二暗号文生成部が生成したn個の第二暗号文C2と、上記第三暗号文生成部が生成したn個の第三暗号文C3とを、n人の受信者に対応するn個の暗号文主文CBとし、
    上記ハッシュ値算出部は、上記処理装置を用いて、上記第一暗号文生成部が生成したn個の第一暗号文C1と、上記第二暗号文生成部が生成したn個の第二暗号文C2と、上記第三暗号文生成部が生成したn個の第三暗号文C3とを結合して、1つの結合暗号文とし、上記処理装置を用いて、結合した1つの結合暗号文に基づいて、1つのハッシュ値Hを算出し、
    上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記乱数生成部が生成したn個の整数sと、上記ハッシュ値算出部が算出した1つのハッシュ値Hとに基づいて、n人の受信者に対応するn個の暗号文検証文CC(iは、1以上n以下の整数。)を生成し、
    上記暗号文結合部は、上記処理装置を用いて、上記第一暗号文生成部が生成したn個の第一暗号文C1と、上記第二暗号文生成部が生成したn個の第二暗号文C2と、上記第三暗号文生成部が生成したn個の第三暗号文C3と、上記暗号文検証文生成部が生成したn個の暗号文検証文CCとを結合して、1つの暗号文Cとし、
    上記暗号文分解部は、上記処理装置を用いて、上記暗号文受信部が受信した1つの暗号文Cに基づいて、n個の第一暗号文C1と、n個の第二暗号文C2と、n個の第三暗号文C3と、n個の暗号文検証文CCとを取得し、上記処理装置を用いて、取得したn個の第一暗号文C1とn個の第二暗号文C2とn個の第三暗号文C3とn個の暗号文検証文CCとのうち、暗号文受信装置が対応する受信者に対応する1つの対応第一暗号文C1IDと1つの対応第二暗号文C2IDと1つの対応第三暗号文C3IDと1つの対応暗号文検証文CCIDとを取得し、
    上記検証ハッシュ値算出部は、上記処理装置を用いて、上記暗号文分解部が取得したn個の第一暗号文C1とn個の第二暗号文C2とn個の第三暗号文C3とを結合した検証結合暗号文に基づいて、検証ハッシュ値H’を算出し、
    上記暗号文検証部は、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータと、上記暗号文分解部が取得した1つの対応第二暗号文C2IDと1つの対応第三暗号文C3IDとの少なくともいずれかと1つの対応暗号文検証文CCIDと、上記検証ハッシュ値算出部が算出した検証ハッシュ値H’とに基づいて、上記暗号文受信部が受信した1つの暗号文Cに整合性があるか否かを判定し、
    上記暗号文復号部は、上記暗号文受信部が受信した1つの暗号文Cに整合性があると、上記暗号文検証部が判定した場合に、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータと、上記秘密鍵記憶部が記憶した秘密鍵dIDと、上記暗号文分解部が取得した1つの対応第一暗号文C1IDと1つの対応第二暗号文C2IDと1つの対応第三暗号文C3IDとに基づいて、平文Mを復元する
    ことを特徴とする請求項10に記載の暗号通信システム。
  12. 上記暗号パラメータ生成装置は、更に、群パラメータ記憶部を有し、
    上記群パラメータ記憶部は、上記記憶装置を用いて、群パラメータとして、自然数rと、位数が上記自然数rである乗法群G1と、位数が上記自然数rである乗法群G2と、位数が上記自然数rである乗法群GTと、乗法群G1の要素と乗法群G2の要素とから乗法群GTの要素を算出するペアリングeとを表わす情報を記憶し、
    上記秘密情報生成部は、上記処理装置を用いて、上記群パラメータ記憶部が記憶した群パラメータが表わす自然数rに基づいて、1以上自然数r未満の整数αをランダムに生成し、
    上記秘密情報記憶部は、上記記憶装置を用いて、上記秘密情報生成部が生成した整数αを表わす情報を秘密情報として記憶し、
    上記公開パラメータ生成部は、上記処理装置を用いて、乗法群GTの要素から所定の長さのビット列を算出する鍵生成関数KDFと、任意の長さのビット列から上記自然数r未満の自然数を算出するハッシュ関数HFとを決定し、上記処理装置を用いて、上記群パラメータ記憶部が記憶した群パラメータが表わす乗法群G1と乗法群G2とに基づいて、乗法群G1の要素gと乗法群G2の要素g2と乗法群G2の要素h1と乗法群G2の要素h2と乗法群G2の要素h3とをランダムに選択し、上記処理装置を用いて、上記秘密情報生成部が生成した秘密情報が表わす整数αと、選択した乗法群G1の要素gとに基づいて、乗法群G1の要素g1=g^αを算出し、上記群パラメータ記憶部が記憶した群パラメータと、決定した鍵生成関数KDFとハッシュ関数HFと、選択した乗法群G1の要素gと乗法群G2の要素g2と乗法群G2の要素h1と乗法群G2の要素h2と乗法群G2の要素h3と、算出した乗法群G1の要素g1とを表わす情報を公開暗号パラメータとし、
    上記識別情報入力部は、上記処理装置を用いて、整数IDを受信者識別情報として入力し、
    上記秘密鍵生成部は、上記処理装置を用いて、上記公開パラメータ生成部が生成した公開暗号パラメータが表わす自然数rに基づいて、1以上自然数r未満の整数rID,1と、1以上自然数r未満の整数rID,2と、1以上自然数r未満の整数rID,3とをランダムに生成し、上記処理装置を用いて、上記公開パラメータ生成部が生成した公開暗号パラメータが表わす乗法群G2の要素g2と乗法群G2の要素h1と乗法群G2の要素h2と乗法群G2の要素h3と、上記秘密情報記憶部が記憶した整数αと、上記識別情報入力部が入力した整数IDと、生成した整数rID,1と整数rID,2と整数rID,3とに基づいて、乗法群G2の要素hID,1=(h1・g2^(−rID,1))^(1/(α−ID))と、乗法群G2の要素hID,2=(h2・g2^(−rID,2))^(1/(α−ID))と、乗法群G2の要素hID,3=(h3・g2^(−rID,3))^(1/(α−ID))とを算出し、生成した整数rID,1と整数rID,2と整数rID,3と、算出した乗法群G2の要素hID,1と乗法群G2の要素hID,2と乗法群G2の要素hID,3とを表わす情報を秘密鍵dIDとし、
    上記受信者識別入力部は、上記処理装置を用いて、n個の整数IDをn個の受信者識別情報として入力し、
    上記乱数生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす自然数rに基づいて、n人の受信者に対応するn個の1以上自然数r未満の整数s(iは、1以上n以下の整数。)をランダムに生成し、
    上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素h1とペアリングeと、鍵生成関数KDFと、上記乱数生成部が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の鍵ビット列k=KDF(e(g,h1)^s)(iは、1以上n以下の整数。)を算出し、上記処理装置を用いて、算出したn個の鍵ビット列kにより、上記平文入力部が入力した平文Mをそれぞれ暗号化して、n人の受信者に対応するn個の第一暗号文C1(iは、1以上n以下の整数。)とし、
    上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと、乗法群G1の要素g1と、上記受信者識別入力部が入力したn個の整数IDと、上記乱数生成部が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の乗法群G1の要素u=(g1・g^(−ID))^s(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G1の要素uをそれぞれ表わすビット列を、n人の受信者に対応するn個の第二暗号文C2(iは、1以上n以下の整数。)とし、
    上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素g2とペアリングeと、上記乱数生成部が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の乗法群GTの要素v=e(g,g2)^s(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群GTの要素vをそれぞれ表わすビット列を、n人の受信者に対応するn個の第三暗号文C3とし、
    上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わすハッシュ関数HFに基づいて、1つの自然数βを算出して、ハッシュ値Hとし、
    上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素h2と乗法群G2の要素h3とペアリングeと、上記乱数生成部が生成したn個の整数sと、上記ハッシュ値算出部が算出した1つの自然数βとに基づいて、n人の受信者に対応するn個の乗法群GTの要素y=e(g,h2)^s・e(g,h3)^(s・β)(iは、1以上n以下の整数。)を算出し、算出した乗法群GTの要素yをそれぞれ表わすビット列を、n人の受信者に対応するn個の暗号文検証文CC(iは、1以上n以下の整数。)とし、
    上記検証ハッシュ値算出部は、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータが表わすハッシュ関数HFに基づいて、自然数β’を算出して、検証ハッシュ値H’とし、
    上記暗号文検証部は、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータが表わすペアリングeと、上記秘密鍵記憶部が記憶した秘密鍵dIDが表わす整数rID,2と整数rID,3と乗法群G2の要素hID,2と乗法群G2の要素hID,3と、上記暗号文分解部が取得した1つの対応第二暗号文C2IDが表わす乗法群G1の要素uIDと1つの対応第三暗号文C3IDが表わす乗法群GTの要素vIDと、上記検証ハッシュ値算出部が算出した自然数β’とに基づいて、乗法群GTの要素y’=e(uID,hID,2・hID,3^β’)・vID^(rID,2+rID,3・β’)を算出し、上記処理装置を用いて、算出した乗法群GTの要素y’と、上記暗号文分解部が取得した対応暗号文検証文CCIDが表わす乗法群GTの要素yIDとを比較し、乗法群GTの要素y’と乗法群GTの要素yIDとが一致する場合に、上記暗号文受信部が受信した1つの暗号文Cに整合性があると判定し、
    上記暗号文復号部は、上記暗号文受信部が受信した1つの暗号文Cに整合性があると、上記暗号文検証部が判定した場合に、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータが表わすペアリングeと鍵生成関数KDFと、上記秘密鍵記憶部が記憶した秘密鍵dIDが表わす整数rID,1と乗法群G2の要素hID,1と、上記暗号文分解部が取得した1つの対応第二暗号文C2IDが表わす乗法群G1の要素uIDと、対応第三暗号文C3IDが表わす乗法群G2の要素vIDとに基づいて、鍵ビット列k’=KDF(e(uID,hID,1)・vID^rID,1)を算出し、上記処理装置を用いて、算出した鍵ビット列k’により、上記暗号文分解部が取得した対応第一暗号文C1IDを復号して、平文Mを復元する
    ことを特徴とする請求項11に記載の暗号通信システム。
  13. 上記暗号通信システムは、更に、群パラメータ生成装置を有し、
    上記群パラメータ生成装置は、
    情報を処理する処理装置と、群位数候補生成部と、群位数安全性判定部と、パラメータ生成部とを有し、
    上記群位数候補生成部は、上記処理装置を用いて、素数rを群位数の候補として生成し、
    上記群位数安全性判定部は、上記処理装置を用いて、上記群位数候補生成部が生成した素数rに基づいて、素数rと1との差(r−1)の因数と、素数rと1との和(r+1)の因数とを算出し、上記処理装置を用いて、算出した(r−1)の因数と(r+1)の因数とに基づいて、上記群位数候補生成部が生成した素数rが安全な群位数であるか否かを判定し、
    上記パラメータ生成部は、上記群位数候補生成部が生成した素数rが安全な群位数であると群位数安全性判定部が判定した場合に、上記処理装置を用いて、上記群位数候補生成部が生成した素数rに基づいて、素数rを群位数とする乗法群を算出し、上記処理装置を用いて、算出した乗法群を表わす情報を含む群パラメータを生成し、
    上記群パラメータ記憶部は、上記記憶装置を用いて、上記群パラメータ生成装置が生成した群パラメータを記憶する
    ことを特徴とする請求項12に記載の暗号通信システム。
  14. 上記群位数候補生成部は、上記処理装置を用いて、所定の整数kの倍数に1を加えた素数rを群位数の候補として生成し、
    上記群位数安全性判定部は、剰余算出部と、判定値算出部と、素因数判定部とを有し、
    上記剰余算出部は、上記処理装置を用いて、上記群位数候補生成部が生成した素数rに基づいて、素数rを4で割った余りを算出し、
    上記判定値算出部は、上記剰余算出部が算出した余りが1である場合に、上記処理装置を用いて、上記所定の整数kと、上記群位数候補生成部が生成した素数rとに基づいて、素数rと1との差(r−1)を、整数kと4との最小公倍数LCM(k,4)で割った商である整数r1=(r−1)/LCM(k,4)を算出し、上記処理装置を用いて、上記群位数候補生成部が生成した素数rに基づいて、素数rと1との和(r+1)を2で割った商である整数r2=(r+1)/2を算出し、上記剰余算出部が算出した余りが3である場合に、上記処理装置を用いて、上記所定の整数kと、上記群位数候補生成部が生成した素数rとに基づいて、素数rと1との差(r−1)を、整数kと2との最小公倍数LCM(k,2)で割った商である整数r1=(r−1)/LCM(k,2)を算出し、上記処理装置を用いて、上記群位数候補生成部が生成した素数rに基づいて、素数rと1との和(r+1)を4で割った商である整数r2=(r+1)/4を算出し、
    上記素因数判定部は、上記処理装置を用いて、上記判定値算出部が算出した整数r1に基づいて、整数r1が所定の整数B1より小さい素因数を有するか否かを判定し、上記処理装置を用いて、上記判定値算出部が算出した整数r2に基づいて、整数r2が所定の整数B2より小さい素因数を有するか否かを判定し、整数r1が所定の整数B1より小さい素因数を有すると判定した場合、及び、整数r2が所定の整数B2よりも小さい素因数を有すると判定した場合に、上記群位数候補生成部が生成した素数rが安全な群位数でないと判定する
    ことを特徴とする請求項13に記載の暗号通信システム。
  15. 上記群位数候補生成部は、上記処理装置を用いて、所定の整数kの倍数に1を加えた素数rを群位数の候補として生成し、
    上記群位数安全性判定部は、剰余算出部と、判定値算出部と、素因数判定部とを有し、
    上記剰余算出部は、上記処理装置を用いて、上記群位数候補生成部が生成した素数rに基づいて、素数rを4で割った余りを算出し、
    上記判定値算出部は、上記剰余算出部が算出した余りが1である場合に、上記処理装置を用いて、上記所定の整数kと、上記群位数候補生成部が生成した素数rとに基づいて、素数rと1との差(r−1)を、整数kと4との最小公倍数LCM(k,4)で割った商である整数r1=(r−1)/LCM(k,4)を算出し、上記処理装置を用いて、上記群位数候補生成部が生成した素数rに基づいて、素数rと1との和(r+1)を2で割った商である整数r2=(r+1)/2を算出し、上記剰余算出部が算出した余りが3である場合に、上記処理装置を用いて、上記所定の整数kと、上記群位数候補生成部が生成した素数rとに基づいて、素数rと1との差(r−1)を、整数kと2との最小公倍数LCM(k,2)で割った商である整数r1=(r−1)/LCM(k,2)を算出し、上記処理装置を用いて、上記群位数候補生成部が生成した素数rに基づいて、素数rと1との和(r+1)を4で割った商である整数r2=(r+1)/4を算出し、
    上記素因数判定部は、上記処理装置を用いて、上記判定値算出部が算出した整数r1に基づいて、整数r1が素数であるか否かを判定し、上記処理装置を用いて、上記判定値算出部が算出した整数r2に基づいて、整数r2が素数であるか否かを判定し、整数r1が素数でないと判定した場合、及び、整数r2が素数でないと判定した場合に、上記群位数候補生成部が生成した素数rが安全な群位数でないと判定する
    ことを特徴とする請求項13に記載の暗号通信システム。
  16. 上記暗号パラメータ生成装置は、更に、群パラメータ記憶部を有し、
    上記群パラメータ記憶部は、上記記憶装置を用いて、群パラメータとして、自然数rと、位数が上記自然数rである乗法群G1と、位数が上記自然数rである乗法群G2と、位数が上記自然数rである乗法群GTと、乗法群G1の要素と乗法群G2の要素とから乗法群GTの要素を算出するペアリングeとを表わす情報を記憶し、
    上記秘密情報生成部は、上記処理装置を用いて、上記群パラメータ記憶部が記憶した群パラメータが表わす自然数rに基づいて、1以上自然数r未満の整数αをランダムに生成し、
    上記公開パラメータ生成部は、上記処理装置を用いて、乗法群GTの要素から所定の長さのビット列を算出する鍵生成関数KDFと、所定の長さのビット列から乗法群GTの要素を算出する2つの関数V1及びV2と、任意の長さのビット列から所定の長さのビット列を算出するハッシュ関数HFとを決定し、上記処理装置を用いて、上記群パラメータ記憶部が記憶した群パラメータが表わす乗法群G1と乗法群G2とに基づいて、乗法群G1の要素gと乗法群G2の要素g2とをランダムに選択し、上記秘密情報生成部が生成した整数αと、選択した乗法群G1の要素gとに基づいて、乗法群G1の要素g1=g^αを算出し、上記処理装置を用いて、上記群パラメータ記憶部が記憶した群パラメータと、決定した鍵生成関数KDFと2つの関数V1及びV2とハッシュ関数HFと、選択した乗法群G1の要素gと乗法群G2の要素g2と、算出した乗法群G1の要素g1とを表わす情報を公開暗号パラメータとし、
    上記秘密情報生成部は、更に、上記処理装置を用いて、生成した整数αと、上記公開パラメータ生成部が選択した乗法群G2の要素g2とに基づいて、乗法群G2の要素msk=g2^αを算出し、
    上記秘密情報記憶部は、上記記憶装置を用いて、上記秘密情報生成部が算出した乗法群G2の要素mskを表わす情報を秘密情報として記憶し、
    上記識別情報入力部は、上記処理装置を用いて、所定の長さのビット列IDを受信者識別情報として入力し、
    上記秘密鍵生成部は、上記処理装置を用いて、上記公開パラメータ生成部が生成した公開暗号パラメータが表わす自然数rに基づいて、1以上自然数r未満の整数rIDをランダムに生成し、上記処理装置を用いて、上記公開パラメータ生成部が生成した公開暗号パラメータが表わす乗法群G1の要素gと関数V1と、上記秘密情報記憶部が記憶した秘密情報が表わす乗法群G2の要素mskと、生成した整数rIDとに基づいて、乗法群G2の要素d0ID=msk・V1(ID)^rIDと、乗法群G1の要素d1ID=g^rIDとを算出し、算出した乗法群G2の要素d0IDと乗法群G1の要素d1IDとを表わす情報を、秘密鍵dIDとし、
    上記受信者識別入力部は、上記処理装置を用いて、n個の所定の長さのビット列IDをn個の受信者識別情報として入力し、
    上記乱数生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす自然数rに基づいて、n人の受信者に対応するn個の1以上自然数r未満の整数s(iは、1以上n以下の整数。)をランダムに生成し、
    上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素g1と乗法群G2の要素g2とペアリングeと鍵生成関数KDFと、上記乱数生成部が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の鍵ビット列k=KDF(e(g1,g2)^s)(iは、1以上n以下の整数。)を算出し、上記処理装置を用いて、算出したn個の鍵ビット列kにより、上記平文入力部が入力した平文Mをそれぞれ暗号化して、n人の受信者に対応するn個の第一暗号文C1(iは、1以上n以下の整数。)とし、
    上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす関数V1と、上記受信者識別入力部が入力したn個の所定の長さのビット列IDと、上記乱数生成部が生成したn個の整数s(iは、1以上n以下の整数。)とに基づいて、n人の受信者に対応するn個の乗法群G2の要素u=V1(ID)^s(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G2の要素uをそれぞれ表わすビット列を、n人の受信者に対応するn個の第二暗号文C2(iは、1以上n以下の整数。)とし、
    上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと、上記乱数生成部が生成したn個の整数sとに基づいて、n人の受信者に対応するn個の乗法群G1の要素v=g^s(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G1の要素vをそれぞれ表わすビット列を、n人の受信者に対応するn個の第三暗号文C3(iは、1以上n以下の整数。)とし、
    上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わすハッシュ関数HFに基づいて、1つの所定の長さのビット列wを算出して、ハッシュ値Hとし、
    上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす関数V2と、上記乱数生成部が生成したn個の整数sと、上記ハッシュ値算出部が算出した1つの所定の長さのビット列wとに基づいて、n人の受信者に対応するn個の乗法群G2の要素y=V2(w)^s(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G2の要素yをそれぞれ表わすビット列を、n人の受信者に対応するn個の暗号文検証文CCとし、
    上記検証ハッシュ値算出部は、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータが表わすハッシュ関数HFに基づいて、所定の長さのビット列w’を算出して、検証ハッシュ値H’とし、
    上記暗号文検証部は、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータが表わすペアリングeと関数V2と、上記暗号文分解部が取得した対応第三暗号文C3IDが表わす乗法群G1の要素vIDと上記検証ハッシュ値算出部が算出した所定の長さのビット列w’とに基づいて、乗法群GTの要素e(vID,V2(w’))を算出し、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gとペアリングeと、上記暗号文分解部が取得した対応暗号文検証文CCIDが表わす乗法群G2の要素yIDとに基づいて、乗法群GTの要素e(g,yID)を算出し、上記処理装置を用いて、算出した乗法群GTの要素e(vID,V2(w’))と、算出した乗法群GTの要素e(g,yID)とを比較し、乗法群GTの要素e(vID,V2(w’))と乗法群GTの要素e(g,yID)とが一致する場合に、上記暗号文受信部が受信した1つの暗号文Cに整合性があると判定し、
    上記暗号文復号部は、上記暗号文受信部が受信した1つの暗号文Cに整合性があると、上記暗号文検証部が判定した場合に、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータが表わすペアリングeと鍵生成関数KDFと、上記秘密鍵記憶部が記憶した秘密鍵dIDが表わす乗法群G2の要素d0IDと乗法群G1の要素d1IDと、上記暗号文分解部が取得した1つの対応第二暗号文C2IDが表わす乗法群G2の要素uIDと対応第三暗号文C3IDが表わす乗法群G1の要素vIDとに基づいて、鍵ビット列k’=KDF(e(vID,d0ID)/e(d1ID,uID))を算出し、上記処理装置を用いて、算出した鍵ビット列k’により、上記暗号文分解部が取得した対応第一暗号文C1IDを復号して、平文Mを復元する
    ことを特徴とする請求項11に記載の暗号通信システム。
  17. 上記暗号文主文生成部は、上記処理装置を用いて、上記受信者識別入力部が入力したn個の受信者識別情報IDを含むn個の暗号文主文CBを生成する
    ことを特徴とする請求項10に記載の暗号通信システム。
  18. 上記暗号文生成装置は、更に、セッション鍵生成部と、データ入力部と、データ暗号化部と、暗号文通知部とを有し、
    上記セッション鍵生成部は、上記処理装置を用いて、所定の長さのビット列をランダムに生成して、セッション鍵Kとし、
    上記平文入力部は、上記処理装置を用いて、平文Mとして、上記セッション鍵生成部が生成したセッション鍵Kを入力し、
    上記データ入力部は、上記処理装置を用いて、n人の受信者に対して送信すべき1つの平文データを入力し、
    上記データ暗号化部は、上記処理装置を用いて、上記セッション鍵生成部が生成したセッション鍵Kにより、上記データ入力部が入力した1つの平文データを暗号化して、1つの暗号化データとし、
    上記暗号文通知部は、上記処理装置を用いて、上記受信者識別入力部が入力したn個の受信者識別情報によって識別されるn人の受信者に対して、上記暗号文結合部が結合した1つの暗号文Cと、上記データ暗号化部が暗号化した1つの暗号化データとを通知し、
    上記複数の暗号文受信装置は、更に、それぞれ、データ復号部を有し、
    上記暗号文受信部は、上記処理装置を用いて、上記暗号文生成装置が通知した1つの暗号文Cと1つの暗号化データとを受信し、
    上記データ復号部は、上記暗号文復号部が復元した平文Mをセッション鍵K’とし、上記処理装置を用いて、上記セッション鍵K’により、上記暗号文受信部が受信した1つの暗号化データを復号する
    ことを特徴とする請求項10に記載の暗号通信システム。
  19. それぞれが対応する暗号文受信装置を有するn人の受信者(nは、1以上の整数。)に対して、平文Mを1つの暗号文Cにより通知する暗号通信システムにおける暗号処理に使用する乗法群のパラメータを生成する群パラメータ生成装置において、
    情報を処理する処理装置と、群位数候補生成部と、群位数安全性判定部と、パラメータ生成部とを有し、
    上記群位数候補生成部は、上記処理装置を用いて、素数rを群位数の候補として生成し、
    上記群位数安全性判定部は、上記処理装置を用いて、上記群位数候補生成部が生成した素数rに基づいて、素数rと1との差(r−1)の因数と、素数rと1との和(r+1)の因数とを算出し、上記処理装置を用いて、算出した(r−1)の因数と(r+1)の因数とに基づいて、上記群位数候補生成部が生成した素数rが安全な群位数であるか否かを判定し、
    上記パラメータ生成部は、上記群位数候補生成部が生成した素数rが安全な群位数であると群位数安全性判定部が判定した場合に、上記処理装置を用いて、上記群位数候補生成部が生成した素数rに基づいて、素数rを群位数とする乗法群を算出し、上記処理装置を用いて、算出した乗法群を表わす情報を含む群パラメータを生成し、
    上記群パラメータ記憶部は、上記記憶装置を用いて、上記群パラメータ生成装置が生成した群パラメータを記憶する
    ことを特徴とする群パラメータ生成装置。
  20. 上記群位数候補生成部は、上記処理装置を用いて、所定の整数kの倍数に1を加えた素数rを群位数の候補として生成し、
    上記群位数安全性判定部は、剰余算出部と、判定値算出部と、素因数判定部とを有し、
    上記剰余算出部は、上記処理装置を用いて、上記群位数候補生成部が生成した素数rに基づいて、素数rを4で割った余りを算出し、
    上記判定値算出部は、上記剰余算出部が算出した余りが1である場合に、上記処理装置を用いて、上記所定の整数kと、上記群位数候補生成部が生成した素数rとに基づいて、素数rと1との差(r−1)を、整数kと4との最小公倍数LCM(k,4)で割った商である整数r1=(r−1)/LCM(k,4)を算出し、上記処理装置を用いて、上記群位数候補生成部が生成した素数rに基づいて、素数rと1との和(r+1)を2で割った商である整数r2=(r+1)/2を算出し、上記剰余算出部が算出した余りが3である場合に、上記処理装置を用いて、上記所定の整数kと、上記群位数候補生成部が生成した素数rとに基づいて、素数rと1との差(r−1)を、整数kと2との最小公倍数LCM(k,2)で割った商である整数r1=(r−1)/LCM(k,2)を算出し、上記処理装置を用いて、上記群位数候補生成部が生成した素数rに基づいて、素数rと1との和(r+1)を4で割った商である整数r2=(r+1)/4を算出し、
    上記素因数判定部は、上記処理装置を用いて、上記判定値算出部が算出した整数r1に基づいて、整数r1が所定の整数B1より小さい素因数を有するか否かを判定し、上記処理装置を用いて、上記判定値算出部が算出した整数r2に基づいて、整数r2が所定の整数B2より小さい素因数を有するか否かを判定し、整数r1が所定の整数B1より小さい素因数を有すると判定した場合、及び、整数r2が所定の整数B2よりも小さい素因数を有すると判定した場合に、上記群位数候補生成部が生成した素数rが安全な群位数でないと判定する
    ことを特徴とする請求項19に記載の群パラメータ生成装置。
  21. 上記群位数候補生成部は、上記処理装置を用いて、所定の整数kの倍数に1を加えた素数rを群位数の候補として生成し、
    上記群位数安全性判定部は、剰余算出部と、判定値算出部と、素因数判定部とを有し、
    上記剰余算出部は、上記処理装置を用いて、上記群位数候補生成部が生成した素数rに基づいて、素数rを4で割った余りを算出し、
    上記判定値算出部は、上記剰余算出部が算出した余りが1である場合に、上記処理装置を用いて、上記所定の整数kと、上記群位数候補生成部が生成した素数rとに基づいて、素数rと1との差(r−1)を、整数kと4との最小公倍数LCM(k,4)で割った商である整数r1=(r−1)/LCM(k,4)を算出し、上記処理装置を用いて、上記群位数候補生成部が生成した素数rに基づいて、素数rと1との和(r+1)を2で割った商である整数r2=(r+1)/2を算出し、上記剰余算出部が算出した余りが3である場合に、上記処理装置を用いて、上記所定の整数kと、上記群位数候補生成部が生成した素数rとに基づいて、素数rと1との差(r−1)を、整数kと2との最小公倍数LCM(k,2)で割った商である整数r1=(r−1)/LCM(k,2)を算出し、上記処理装置を用いて、上記群位数候補生成部が生成した素数rに基づいて、素数rと1との和(r+1)を4で割った商である整数r2=(r+1)/4を算出し、
    上記素因数判定部は、上記処理装置を用いて、上記判定値算出部が算出した整数r1に基づいて、整数r1が素数であるか否かを判定し、上記処理装置を用いて、上記判定値算出部が算出した整数r2に基づいて、整数r2が素数であるか否かを判定し、整数r1が素数でないと判定した場合、及び、整数r2が素数でないと判定した場合に、上記群位数候補生成部が生成した素数rが安全な群位数でないと判定する
    ことを特徴とする請求項19に記載の群パラメータ生成装置。
JP2008553935A 2007-01-19 2007-01-19 暗号文生成装置及び暗号通信システム及び群パラメータ生成装置 Active JP4859933B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2007/050766 WO2008087734A1 (ja) 2007-01-19 2007-01-19 暗号文生成装置及び暗号通信システム及び群パラメータ生成装置

Publications (2)

Publication Number Publication Date
JPWO2008087734A1 true JPWO2008087734A1 (ja) 2010-05-06
JP4859933B2 JP4859933B2 (ja) 2012-01-25

Family

ID=39635743

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008553935A Active JP4859933B2 (ja) 2007-01-19 2007-01-19 暗号文生成装置及び暗号通信システム及び群パラメータ生成装置

Country Status (5)

Country Link
US (1) US8290146B2 (ja)
EP (1) EP2120227B1 (ja)
JP (1) JP4859933B2 (ja)
CN (1) CN101617351B (ja)
WO (1) WO2008087734A1 (ja)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8625784B2 (en) * 2006-12-22 2014-01-07 Samsung Electronics Co., Ltd. Broadcast encryption method and broadcast decryption method thereof
JP5273047B2 (ja) * 2007-08-09 2013-08-28 日本電気株式会社 鍵交換装置
WO2009104260A1 (ja) * 2008-02-20 2009-08-27 三菱電機株式会社 検証装置
JP5285778B2 (ja) * 2009-08-03 2013-09-11 日本電信電話株式会社 関数暗号応用システム及び方法
EP2330772A1 (fr) * 2009-12-01 2011-06-08 Gemalto SA Procédé de chiffrement à clef publique sans certificat
US8386800B2 (en) * 2009-12-04 2013-02-26 Cryptography Research, Inc. Verifiable, leak-resistant encryption and decryption
US8626921B2 (en) * 2010-04-22 2014-01-07 Cisco Technology, Inc. Device and service management based on layer 2 through layer 7 device attributes
JP5424974B2 (ja) * 2010-04-27 2014-02-26 三菱電機株式会社 暗号処理システム、鍵生成装置、暗号化装置、復号装置、署名処理システム、署名装置及び検証装置
CN101938481A (zh) * 2010-09-06 2011-01-05 华南理工大学 基于数字证书的文件加密和分发方法
JP2012084071A (ja) 2010-10-14 2012-04-26 Toshiba Corp デジタルコンテンツの保護方法、復号方法、再生装置、記憶媒体、暗号装置
KR20130106884A (ko) * 2011-02-16 2013-09-30 미쓰비시덴키 가부시키가이샤 프로그래머블 로직 컨트롤러, 및 프로그래머블 로직 컨트롤러의 패스워드 보존 방법
KR101233254B1 (ko) * 2011-04-26 2013-02-14 숭실대학교산학협력단 가변길이 인증코드를 사용하는 무선 통신 단말간 세션키 공유 방법
CN103650410A (zh) * 2011-05-31 2014-03-19 三星Sds株式会社 基于id的加密及签名方法以及终端
US8661527B2 (en) 2011-08-31 2014-02-25 Kabushiki Kaisha Toshiba Authenticator, authenticatee and authentication method
US8984114B2 (en) * 2011-10-06 2015-03-17 Varmour Networks, Inc. Dynamic session migration between network security gateways
JP5275432B2 (ja) 2011-11-11 2013-08-28 株式会社東芝 ストレージメディア、ホスト装置、メモリ装置、及びシステム
JP5204291B1 (ja) 2011-12-02 2013-06-05 株式会社東芝 ホスト装置、装置、システム
JP5112555B1 (ja) 2011-12-02 2013-01-09 株式会社東芝 メモリカード、ストレージメディア、及びコントローラ
JP5204290B1 (ja) 2011-12-02 2013-06-05 株式会社東芝 ホスト装置、システム、及び装置
JP5100884B1 (ja) 2011-12-02 2012-12-19 株式会社東芝 メモリ装置
US8774410B1 (en) * 2011-12-23 2014-07-08 Emc Corporation Secret sharing in cryptographic devices via controlled release of plaintext information
JP5275482B2 (ja) 2012-01-16 2013-08-28 株式会社東芝 ストレージメディア、ホスト装置、メモリ装置、及びシステム
KR101493212B1 (ko) * 2012-10-31 2015-02-23 삼성에스디에스 주식회사 아이디 기반 암호화, 복호화 방법 및 이를 수행하기 위한 장치
JP5905128B2 (ja) * 2013-01-16 2016-04-20 三菱電機株式会社 暗号システム、再暗号化装置及び暗号方法
US9201811B2 (en) 2013-02-14 2015-12-01 Kabushiki Kaisha Toshiba Device and authentication method therefor
US8984294B2 (en) 2013-02-15 2015-03-17 Kabushiki Kaisha Toshiba System of authenticating an individual memory device via reading data including prohibited data and readable data
JP6238774B2 (ja) * 2013-02-21 2017-11-29 キヤノン株式会社 ハッシュ値生成装置
US20140245024A1 (en) * 2013-02-28 2014-08-28 Kabushiki Kaisha Toshiba Device and authentication method therefor
JP6113091B2 (ja) 2013-03-07 2017-04-12 キヤノン株式会社 ハッシュ値生成装置
WO2015014189A1 (zh) 2013-08-02 2015-02-05 优视科技有限公司 一种访问网站的方法及装置
EP2860905A1 (en) * 2013-10-09 2015-04-15 Thomson Licensing Method for ciphering a message via a keyed homomorphic encryption function, corresponding electronic device and computer program product
CN105850071B (zh) * 2014-01-14 2019-06-25 三菱电机株式会社 加密系统、重加密密钥生成装置以及重加密装置
US9973472B2 (en) 2015-04-02 2018-05-15 Varmour Networks, Inc. Methods and systems for orchestrating physical and virtual switches to enforce security boundaries
JP6199335B2 (ja) * 2014-06-05 2017-09-20 Kddi株式会社 通信ネットワークシステム及びメッセージ検査方法
US9525697B2 (en) 2015-04-02 2016-12-20 Varmour Networks, Inc. Delivering security functions to distributed networks
US9483317B1 (en) 2015-08-17 2016-11-01 Varmour Networks, Inc. Using multiple central processing unit cores for packet forwarding in virtualized networks
DE102015225651A1 (de) * 2015-12-17 2017-06-22 Robert Bosch Gmbh Verfahren und Vorrichtung zum Übertragen einer Software
CN106911466A (zh) * 2015-12-22 2017-06-30 武汉奇致激光技术股份有限公司 一种软硬件结合的加密方法
US10129026B2 (en) * 2016-05-03 2018-11-13 Certicom Corp. Method and system for cheon resistant static diffie-hellman security
DE102016008267A1 (de) * 2016-07-07 2018-01-11 Giesecke+Devrient Mobile Security Gmbh Einrichtung eines sicheren Kommunikationskanals
CN110089071B (zh) * 2016-11-04 2023-02-17 诺基亚技术有限公司 安全的分布式数据处理
WO2018216512A1 (ja) * 2017-05-25 2018-11-29 日本電信電話株式会社 秘密改ざん検知システム、秘密改ざん検知装置、秘密改ざん検知方法、およびプログラム
CN109241490B (zh) * 2018-07-26 2023-05-09 南京思利华信息科技有限公司 一种面向区块链的x11动态哈希方法及装置
US11005663B2 (en) * 2018-08-13 2021-05-11 Seagate Technology Llc Secure audit scheme in a distributed data storage system

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10207363A (ja) * 1997-01-28 1998-08-07 Mitsubishi Electric Corp 素数生成装置及び方法
JP3835896B2 (ja) * 1997-07-30 2006-10-18 富士通株式会社 素数生成装置,B−smooth性判定装置及び記録媒体
JP3990793B2 (ja) * 1998-01-28 2007-10-17 富士通株式会社 楕円曲線パラメータの安全性高速判定装置および記録媒体
US6285761B1 (en) 1998-03-04 2001-09-04 Lucent Technologies, Inc. Method for generating pseudo-random numbers
JP3518672B2 (ja) * 1998-11-27 2004-04-12 村田機械株式会社 素数生成装置及び暗号システム
US20020041684A1 (en) * 1999-01-29 2002-04-11 Mototsugu Nishioka Public-key encryption and key-sharing methods
US7111175B2 (en) 2000-12-28 2006-09-19 Intel Corporation Method and apparatus for verifying the integrity of a media key block
US6912634B2 (en) 2000-12-28 2005-06-28 Intel Corporation Verifying the integrity of a media key block by storing validation data in a validation area of media
AU2002332671A1 (en) * 2001-08-13 2003-03-03 Board Of Trustees Of The Leland Stanford Junior University Systems and methods for identity-based encryption and related cryptographic techniques
HUP0401720A2 (hu) * 2001-09-27 2005-07-28 Matsushita Electric Industrial Co., Ltd. Kódoló, dekódoló, és titkos kulcsot képző eszközé és eljárás, valamint eszközkészlet szerzői jog védelmére és távközlési eszköz titkosított összeköttetés létesítésére
US7353395B2 (en) 2002-03-21 2008-04-01 Ntt Docomo Inc. Authenticated ID-based cryptosystem with no key escrow
ES2195787B1 (es) * 2002-05-20 2005-06-01 Diverdrugs, S.L. Compuestos capaces de bloquear la respuesta a sustancias quimicas o estimulos termicos o mediadores de la inflamacion de los nociceptores, un metodo para su obtencion y composiciones que los continen.
EP1540875A4 (en) * 2002-08-28 2011-01-26 Ntt Docomo Inc ENCRYPTION ON THE BASIS OF CERTIFICATES AND PUBLIC KEY INFRASTRUCTURE
US7724898B2 (en) * 2002-10-17 2010-05-25 Telefonaktiebolaget L M Ericsson (Publ) Cryptography using finite fields of odd characteristic on binary hardware
DE602004007160D1 (de) 2003-10-29 2007-08-02 Argelcom Ltd Sicheres kryptographisches kommunikationssystem mit kem-dem
US7957525B2 (en) * 2003-10-31 2011-06-07 Ntt Docomo, Inc. Encryption and signature schemes using message mappings to reduce the message size
CN100544249C (zh) * 2004-10-29 2009-09-23 大唐移动通信设备有限公司 移动通信用户认证与密钥协商方法
JP4546231B2 (ja) * 2004-12-09 2010-09-15 株式会社日立製作所 Idベース署名及び暗号化システムおよび方法
US8111826B2 (en) 2006-01-11 2012-02-07 Mitsubishi Electric Corporation Apparatus for generating elliptic curve cryptographic parameter, apparatus for processing elliptic curve cryptograph, program for generating elliptic curve cryptographic parameter, and program for processing elliptic cyptograph
CN1805334A (zh) * 2006-01-12 2006-07-19 燕山大学 高效的不可展的公钥加密系统

Also Published As

Publication number Publication date
EP2120227A1 (en) 2009-11-18
EP2120227A4 (en) 2012-05-30
JP4859933B2 (ja) 2012-01-25
WO2008087734A1 (ja) 2008-07-24
US8290146B2 (en) 2012-10-16
CN101617351B (zh) 2011-06-22
US20100104094A1 (en) 2010-04-29
EP2120227B1 (en) 2015-04-15
CN101617351A (zh) 2009-12-30

Similar Documents

Publication Publication Date Title
JP4859933B2 (ja) 暗号文生成装置及び暗号通信システム及び群パラメータ生成装置
Xiong et al. Partially policy-hidden attribute-based broadcast encryption with secure delegation in edge computing
Wang et al. Panda: Public auditing for shared data with efficient user revocation in the cloud
Green et al. Identity-based proxy re-encryption
Kim et al. Adaptively secure identity-based broadcast encryption with a constant-sized ciphertext
CN111510281B (zh) 一种同态加密方法及装置
Rao et al. Efficient attribute-based signature and signcryption realizing expressive access structures
Zhou et al. Identity-based proxy re-encryption version 2: Making mobile access easy in cloud
KR20060052556A (ko) 보안 통신 시스템에서 익명의 공개 키를 발생시키는 방법,장치 및 시스템
JP4869824B2 (ja) 受信者装置及び送信者装置及び暗号通信システム及びプログラム
Bayat et al. A lightweight and efficient data sharing scheme for cloud computing
WO2007011071A1 (ja) タイム装置、暗号化装置、復号化装置、暗号化/復号化システム
JP2024506026A (ja) 閾値鍵交換
WO2018043049A1 (ja) 暗号システム、暗号方法及び暗号プログラム
JP2002026892A (ja) 鍵共有方法,秘密鍵生成方法,共通鍵生成方法,暗号通信方法,秘密鍵生成器,共通鍵生成器,暗号通信システム及び記録媒体
KR101533422B1 (ko) 브로드캐스트 암호화 방법 및 시스템
CN114095171A (zh) 一种基于身份的可穿刺代理重加密方法
JP2006227411A (ja) 通信システム、暗号化装置、鍵生成装置、鍵生成方法、復元装置、通信方法、暗号化方法、暗号復元方法
Nalwaya et al. A cryptographic approach based on integrating running key in feedback mode of elgamal system
Wu et al. Identity-based threshold proxy re-encryption scheme from lattices and its applications
JP5097137B2 (ja) 暗号通信システム、端末装置、秘密鍵生成方法及びプログラム
Hadabi et al. Proxy re-encryption with plaintext checkable encryption for integrating digital twins into IIoT
JP2002023626A (ja) 公開鍵暗号方法および公開鍵暗号を用いた通信システム
JP4143036B2 (ja) 鍵生成システム、鍵生成サーバ及び鍵生成方法
JP4230162B2 (ja) 公開鍵暗号通信方法

Legal Events

Date Code Title Description
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: 20111101

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

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4859933

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20141111

Year of fee payment: 3

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