JPWO2008087734A1 - 暗号文生成装置及び暗号通信システム及び群パラメータ生成装置 - Google Patents
暗号文生成装置及び暗号通信システム及び群パラメータ生成装置 Download PDFInfo
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
- H04L9/3073—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves involving pairings, e.g. identity based encryption [IBE], bilinear mappings or bilinear pairings, e.g. Weil or Tate pairing
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
Description
従来、公開鍵が送信相手のものであることを保証するため、公開鍵認証機関が発行する公開鍵証明書を検証することが行われている。
また、公開鍵認証機関のようなインフラストラクチャがなくても、公開鍵とその所有者との対応を保証するため、送信相手の名前や名前や機器番号のような識別名(ID)を公開鍵として用いるIDベース暗号通信方式が提案されている。
すなわち、その暗号を確率的に解読できる攻撃者がいると仮定して、その攻撃者を利用することにより、その数学的な問題を解くことができるアルゴリズムが存在する場合、その暗号方式はその数学的な問題に帰着するという。
帰着する数学的な問題の良し悪しとは、その問題を解くことの難しさのことである。解くことが難しい問題に帰着させることができる公開鍵暗号方式は、その分、安全性が高いと言うことができる。
帰着効率の良し悪しとは、攻撃者が暗号を解読するために利用する資源(時間・メモリなど)と、攻撃者を利用して数学的な問題を解くために利用する資源との間の関係のことである。暗号解読に必要な資源と、数学的な問題を解くために必要な資源との間に、あまり差がなければ、帰着効率が良いという。この場合、暗号が解読できれば、すなわち数学的な問題を解くことができるということになるので、対偶をとれば、数学的な問題を解くことが困難であれば、暗号を解読することも同じくらい困難だといえる。これに対して、帰着効率が悪い場合、すなわち、暗号解読に必要な資源との比較において数学的な問題を解くために必要な資源が非常に大きいのであれば、数学的な問題を解くことが困難であっても、暗号を解読することが同じくらい困難だとは限らない。
モデルの良し悪しとは、証明の前提となるモデルが現実に即しているか否かのことである。例えば、ランダムオラクルを用いないモデルは、ランダムオラクルを仮定するモデルよりも、良いモデルである。
公開鍵暗号方式では、暗号処理に時間がかかることから、通常、セッション鍵を暗号化して受信者に対して送信し、暗号処理の速い共通鍵暗号方式により、送信したセッション鍵を用いて、送信したいデータを暗号化する。
公開鍵暗号方式では、平文(セッション鍵)を、それぞれの受信者の公開鍵で暗号化して複数の暗号文を生成し、生成した複数の暗号文を1つにまとめて、メール通信や、データ放送などにより送信する。
平文Mをn人の受信者(nは、1以上の整数。)に対して通知する暗号文Cを生成する暗号文生成装置において、
情報を記憶する記憶装置と、情報を処理する処理装置と、暗号パラメータ記憶部と、受信者識別入力部と、平文入力部と、暗号文主文生成部と、ハッシュ値算出部と、暗号文検証文生成部と、暗号文結合部とを有し、
上記暗号パラメータ記憶部は、上記記憶装置を用いて、公開暗号パラメータを記憶し、
上記受信者識別入力部は、上記処理装置を用いて、n人の受信者をそれぞれ識別するn個の受信者識別情報IDi(iは、1以上n以下の整数。)を入力し、
上記平文入力部は、上記処理装置を用いて、平文Mを入力し、
上記暗号文主文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記受信者識別入力部が入力したn個の受信者識別情報IDiと、上記平文入力部が入力した平文Mとに基づいて、n人の受信者に対応するn個の暗号文主文CBi(iは、1以上n以下の整数。)を生成し、
上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号文主文生成部が生成したn個の暗号文主文CBiを結合して、結合暗号文を生成し、上記処理装置を用いて、生成した結合暗号文に基づいて、ハッシュ値Hを算出し、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記ハッシュ値算出部が算出したハッシュ値Hとに基づいて、暗号文検証文CCを生成し、
上記暗号文結合部は、上記処理装置を用いて、上記暗号文主文生成部が生成したn個の暗号文主文CBiと、上記暗号文検証文生成部が生成した暗号文検証文CCとを結合して、1つの暗号文Cとすることを特徴とする。
上記乱数生成部は、上記処理装置を用いて、n人の受信者に対応するn個の整数si(iは、1以上n以下の整数。)をランダムに生成し、
上記暗号文主文生成部は、第一暗号文生成部と、第二暗号文生成部と、第三暗号文生成部とを有し、
上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記平文入力部が入力した平文Mと、上記乱数生成部が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の第一暗号文C1i(iは、1以上n以下の整数。)を生成し、
上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記受信者識別入力部が入力したn個の受信者識別情報IDiと、上記乱数生成部が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の第二暗号文C2i(iは、1以上n以下の整数。)を生成し、
上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記乱数生成部が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の第三暗号文C3i(iは、1以上n以下の整数。)を生成し、
上記第一暗号文生成部が生成したn個の第一暗号文C1iと、上記第二暗号文生成部が生成したn個の第二暗号文C2iと、上記第三暗号文生成部が生成したn個の第三暗号文C3iとを、n人の受信者に対応するn個の暗号文主文CBiとし、
上記ハッシュ値算出部は、上記処理装置を用いて、上記第一暗号文生成部が生成したn個の第一暗号文C1iと、上記第二暗号文生成部が生成したn個の第二暗号文C2iと、上記第三暗号文生成部が生成したn個の第三暗号文C3iとを結合して、1つの結合暗号文とし、上記処理装置を用いて、結合した1つの結合暗号文に基づいて、1つのハッシュ値Hを算出し、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記乱数生成部が生成したn個の整数siと、上記ハッシュ値算出部が算出した1つのハッシュ値Hとに基づいて、n人の受信者に対応するn個の暗号文検証文CCi(iは、1以上n以下の整数。)を生成し、
上記暗号文結合部は、上記処理装置を用いて、上記第一暗号文生成部が生成したn個の第一暗号文C1iと、上記第二暗号文生成部が生成したn個の第二暗号文C2iと、上記第三暗号文生成部が生成したn個の第三暗号文C3iと、上記暗号文検証文生成部が生成したn個の暗号文検証文CCiとを結合して、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個の整数IDiをn個の受信者識別情報として入力し、
上記乱数生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす自然数rに基づいて、n人の受信者に対応するn個の1以上自然数r未満の整数si(iは、1以上n以下の整数。)をランダムに生成し、
上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素h1とペアリングeと、鍵生成関数KDFと、上記乱数生成部が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の鍵ビット列ki=KDF(e(g,h1)^si)(iは、1以上n以下の整数。)を算出し、上記処理装置を用いて、算出したn個の鍵ビット列kiにより、上記平文入力部が入力した平文Mをそれぞれ暗号化して、n人の受信者に対応するn個の第一暗号文C1i(iは、1以上n以下の整数。)とし、
上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと、乗法群G1の要素g1と、上記受信者識別入力部が入力したn個の整数IDiと、上記乱数生成部が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の乗法群G1の要素ui=(g1・g^−IDi)^si(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G1の要素uiをそれぞれ表わすビット列を、n人の受信者に対応するn個の第二暗号文C2i(iは、1以上n以下の整数。)とし、
上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素g2とペアリングeと、上記乱数生成部が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の乗法群GTの要素vi=e(g,g2)^si(iは、1以上n以下の整数。)を算出し、算出した乗法群GTの要素viをそれぞれ表わすビット列を、n人の受信者に対応するn個の第三暗号文C3i(iは、1以上n以下の整数。)とし、
上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わすハッシュ関数HFに基づいて、1つの自然数β0を算出して、ハッシュ値Hとし、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素h2と乗法群G2の要素h3とペアリングeと、上記乱数生成部が生成したn個の整数siと、上記ハッシュ値算出部が算出した1つの自然数β0とに基づいて、n人の受信者に対応するn個の乗法群GTの要素yi=e(g,h2)^si・e(g,h3)^(si・β0)(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群GTの要素yiをそれぞれ表わすビット列を、n人の受信者に対応するn個の暗号文検証文CCi(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個の所定の長さのビット列IDiをn個の受信者識別情報として入力し、
上記乱数生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす自然数rに基づいて、n人の受信者に対応するn個の1以上自然数r未満の整数si(iは、1以上n以下の整数。)をランダムに生成し、
上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素g1と乗法群G2の要素g2とペアリングeと鍵生成関数KDFと、上記乱数生成部が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の鍵ビット列ki=KDF(e(g1,g2)^si)(iは、1以上n以下の整数。)を算出し、上記処理装置を用いて、算出したn個の鍵ビット列kiにより、上記平文入力部が入力した平文Mをそれぞれ暗号化して、n人の受信者に対応するn個の第一暗号文C1i(iは、1以上n以下の整数。)とし、
上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす関数V1と、上記乱数生成部が生成したn個の整数siと、上記受信者識別入力部が入力したn個の所定の長さのビット列IDiとに基づいて、n人の受信者に対応するn個の乗法群G2の要素ui=V1(IDi)^si(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G2の要素uiをそれぞれ表わすビット列を、n人の受信者に対応するn個の第二暗号文C2i(iは、1以上n以下の整数。)とし、
上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと、上記乱数生成部が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の乗法群G1の要素vi=g^si(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G1の要素viをそれぞれ表わすビット列を、n人の受信者に対応するn個の第三暗号文C3i(iは、1以上n以下の整数。)とし、
上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わすハッシュ関数HFに基づいて、1つの所定の長さのビット列w0を算出して、ハッシュ値Hとし、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす関数V2と、上記乱数生成部が生成したn個の整数siと、上記ハッシュ値算出部が算出した1つの所定の長さのビット列w0とに基づいて、n人の受信者に対応するn個の乗法群G2の要素yi=V2(w0)^si(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G2の要素yiをそれぞれ表わすビット列を、n人の受信者に対応するn個の暗号文検証文CCi(iは、1以上n以下の整数。)とすることを特徴とする。
上記暗号パラメータ記憶部は、上記記憶装置を用いて、2つの関数V1及びV2を表わす情報として、m1個の乗法群G2の要素hξ(ξは、1以上m1以下の整数。)と、2つの乗法群G2の要素h1’及びh2’とを表わす情報を記憶し、
上記第二暗号文生成部は、上記処理装置を用いて、上記受信者識別入力部が入力したn個の所定の長さのビット列IDiそれぞれを、m1個の所定の長さのビット列νiξ(ξは、1以上m1以下の整数。)に分割し、分割したm1個の所定の長さのビット列νiξをm1個の整数として取り扱い、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わすm1個の乗法群G2の要素hξ(ξは、1以上m1以下の整数。)と乗法群G2の要素h1’と、分割したm1個の整数νiξとに基づいて、関数V1の値である乗法群G2の要素V1(IDi)=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個の受信者識別情報IDiを含むn個の暗号文主文CBiを生成することを特徴とする。
上記暗号文通知部は、上記処理装置を用いて、上記受信者識別入力部が入力したn個の受信者識別情報IDiによって識別されるn人の受信者に対して、上記暗号文結合部が結合した1つの暗号文Cを通知することを特徴とする。
上記セッション鍵生成部は、上記処理装置を用いて、所定の長さのビット列をランダムに生成して、セッション鍵Kとし、
上記平文入力部は、上記処理装置を用いて、平文Mとして、上記セッション鍵生成部が生成したセッション鍵Kを入力することを特徴とする。
上記データ入力部は、上記処理装置を用いて、n人の受信者に対して送信すべき1つの平文データを入力し、
上記データ暗号化部は、上記処理装置を用いて、上記セッション鍵生成部が生成したセッション鍵Kにより、上記データ入力部が入力した1つの平文データを暗号化して、1つの暗号化データとし、
上記暗号文通知部は、上記処理装置を用いて、上記受信者識別入力部が入力したn個の受信者識別情報IDiによって識別されるn人の受信者に対して、上記暗号文結合部が結合した1つの暗号文Cと、上記データ暗号化部が暗号化した1つの暗号化データとを通知することを特徴とする。
それぞれが対応する暗号文受信装置を有するn人の受信者(nは、1以上の整数。)に対して、平文Mを1つの暗号文Cにより通知する暗号通信システムにおいて、
暗号パラメータ生成装置と、暗号文生成装置と、複数の暗号文受信装置とを有し、
上記暗号パラメータ生成装置は、
情報を記憶する記憶装置と、情報を処理する処理装置と、秘密情報生成部と、秘密情報記憶部と、公開パラメータ生成部と、公開パラメータ公開部と、識別情報入力部と、秘密鍵生成部と、秘密鍵通知部とを有し、
上記秘密情報生成部は、上記処理装置を用いて、秘密情報をランダムに生成し、
上記秘密情報記憶部は、上記記憶装置を用いて、上記秘密情報生成部が生成した秘密情報を記憶し、
上記公開パラメータ生成部は、上記処理装置を用いて、上記秘密情報生成部が生成した秘密情報に基づいて、公開暗号パラメータを生成し、
上記公開パラメータ公開部は、上記処理装置を用いて、上記公開パラメータ生成部が生成した公開暗号パラメータを公開し、
上記識別情報入力部は、上記処理装置を用いて、上記複数の暗号文受信装置のうち1つの暗号文受信装置に対応する1人の受信者を識別する受信者識別情報IDを入力し、
上記秘密鍵生成部は、上記処理装置を用いて、上記秘密情報記憶部が記憶した秘密情報と、上記公開パラメータ生成部が生成した公開暗号パラメータと、上記識別情報入力部が入力した受信者識別情報IDとに基づいて、上記1人の受信者に対応する秘密鍵dIDを生成し、
上記秘密鍵通知部は、上記処理装置を用いて、上記1人の受信者に対応する1つの暗号文受信装置に対して、上記秘密鍵生成部が生成した秘密鍵dIDを秘密裏に通知し、
上記暗号文生成装置は、
情報を記憶する記憶装置と、情報を処理する処理装置と、暗号パラメータ記憶部と、受信者識別入力部と、平文入力部と、暗号文主文生成部と、ハッシュ値算出部と、暗号文検証文生成部と、暗号文結合部と、暗号文通知部とを有し、
上記暗号パラメータ記憶部は、上記記憶装置を用いて、上記暗号パラメータ生成装置が公開した公開暗号パラメータを記憶し、
上記受信者識別入力部は、上記処理装置を用いて、n人の受信者をそれぞれ識別するn個の受信者識別情報IDi(iは、1以上n以下の整数。)を入力し、
上記平文入力部は、上記処理装置を用いて、平文Mを入力し、
上記暗号文主文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記受信者識別入力部が入力したn個の受信者識別情報IDiと、上記平文入力部が入力した平文Mとに基づいて、n人の受信者に対応するn個の暗号文主文CBi(iは、1以上n以下の整数。)を生成し、
上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号文主文生成部が生成したn個の暗号文主文CBiを結合して、結合暗号文を生成し、上記処理装置を用いて、生成した結合暗号文に基づいて、ハッシュ値Hを算出し、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記ハッシュ値算出部が算出したハッシュ値Hとに基づいて、暗号文検証文CCを生成し、
上記暗号文結合部は、上記処理装置を用いて、上記暗号文主文生成部が生成したn個の暗号文主文CBiと、上記暗号文検証文生成部が生成した暗号文検証文CCとを結合して、1つの暗号文Cとし、
上記暗号文通知部は、上記処理装置を用いて、上記n人の受信者に対応するn個の暗号文受信装置に対して、上記暗号文結合部が結合した1つの暗号文Cを通知し、
上記複数の暗号文受信装置は、それぞれ、
情報を記憶する記憶装置と、情報を処理する処理装置と、公開パラメータ記憶部と、秘密鍵記憶部と、暗号文受信部と、暗号文分解部と、検証ハッシュ値算出部と、暗号文検証部と、暗号文復号部とを有し、
上記公開パラメータ記憶部は、上記記憶装置を用いて、上記暗号パラメータ生成装置が公開した公開暗号パラメータを記憶し、
上記秘密鍵記憶部は、上記記憶装置を用いて、上記暗号パラメータ生成装置が通知した秘密鍵dIDを記憶し、
上記暗号文受信部は、上記処理装置を用いて、上記暗号文生成装置が通知した1つの暗号文Cを受信し、
上記暗号文分解部は、上記処理装置を用いて、上記暗号文受信部が受信した1つの暗号文Cに基づいて、n個の暗号文主文CBiと、暗号文検証文CCとを取得し、
上記検証ハッシュ値算出部は、上記処理装置を用いて、上記暗号文分解部が取得したn個の暗号文主文CBiを結合した検証結合暗号文に基づいて、検証ハッシュ値H’を算出し、
上記暗号文検証部は、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータと、上記暗号文分解部が取得したn個の暗号文主文CBiのうち、暗号文受信装置が対応する受信者に対応する1つの対応暗号文主文CBIDと、暗号文検証文CCと、上記検証ハッシュ値算出部が算出した検証ハッシュ値H’とに基づいて、上記暗号文受信部が受信した1つの暗号文Cに整合性があるか否かを判定し、
上記暗号文復号部は、上記暗号文受信部が受信した1つの暗号文Cに整合性があると、上記暗号文検証部が判定した場合に、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータと、上記秘密鍵記憶部が記憶した秘密鍵dIDと、上記暗号文分解部が取得したn個の暗号文主文CBiのうち、暗号文受信装置が対応する受信者に対応する1つの対応暗号文主文CBIDとに基づいて、平文Mを復元することを特徴とする。
上記暗号文生成装置は、更に、乱数生成部を有し、
上記乱数生成部は、上記処理装置を用いて、n人の受信者に対応するn個の整数si(iは、1以上n以下の整数。)をランダムに生成し、
上記暗号文主文生成部は、第一暗号文生成部と、第二暗号文生成部と、第三暗号文生成部とを有し、
上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記平文入力部が入力した平文Mと、上記乱数生成部が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の第一暗号文C1i(iは、1以上n以下の整数。)を生成し、
上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記受信者識別入力部が入力したn個の受信者識別情報IDiと、上記乱数生成部が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の第二暗号文C2i(iは、1以上n以下の整数。)を生成し、
上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記乱数生成部が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の第三暗号文C3i(iは、1以上n以下の整数。)を生成し、
上記第一暗号文生成部が生成したn個の第一暗号文C1iと、上記第二暗号文生成部が生成したn個の第二暗号文C2iと、上記第三暗号文生成部が生成したn個の第三暗号文C3iとを、n人の受信者に対応するn個の暗号文主文CBiとし、
上記ハッシュ値算出部は、上記処理装置を用いて、上記第一暗号文生成部が生成したn個の第一暗号文C1iと、上記第二暗号文生成部が生成したn個の第二暗号文C2iと、上記第三暗号文生成部が生成したn個の第三暗号文C3iとを結合して、1つの結合暗号文とし、上記処理装置を用いて、結合した1つの結合暗号文に基づいて、1つのハッシュ値Hを算出し、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記乱数生成部が生成したn個の整数siと、上記ハッシュ値算出部が算出した1つのハッシュ値Hとに基づいて、n人の受信者に対応するn個の暗号文検証文CCi(iは、1以上n以下の整数。)を生成し、
上記暗号文結合部は、上記処理装置を用いて、上記第一暗号文生成部が生成したn個の第一暗号文C1iと、上記第二暗号文生成部が生成したn個の第二暗号文C2iと、上記第三暗号文生成部が生成したn個の第三暗号文C3iと、上記暗号文検証文生成部が生成したn個の暗号文検証文CCiとを結合して、1つの暗号文Cとし、
上記暗号文分解部は、上記処理装置を用いて、上記暗号文受信部が受信した1つの暗号文Cに基づいて、n個の第一暗号文C1iと、n個の第二暗号文C2iと、n個の第三暗号文C3iと、n個の暗号文検証文CCiとを取得し、上記処理装置を用いて、取得したn個の第一暗号文C1iとn個の第二暗号文C2iとn個の第三暗号文C3iとn個の暗号文検証文CCiとのうち、暗号文受信装置が対応する受信者に対応する1つの対応第一暗号文C1IDと1つの対応第二暗号文C2IDと1つの対応第三暗号文C3IDと1つの対応暗号文検証文CCIDとを取得し、
上記検証ハッシュ値算出部は、上記処理装置を用いて、上記暗号文分解部が取得したn個の第一暗号文C1iとn個の第二暗号文C2iとn個の第三暗号文C3iとを結合した検証結合暗号文に基づいて、検証ハッシュ値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個の整数IDiをn個の受信者識別情報として入力し、
上記乱数生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす自然数rに基づいて、n人の受信者に対応するn個の1以上自然数r未満の整数si(iは、1以上n以下の整数。)をランダムに生成し、
上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素h1とペアリングeと、鍵生成関数KDFと、上記乱数生成部が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の鍵ビット列ki=KDF(e(g,h1)^si)(iは、1以上n以下の整数。)を算出し、上記処理装置を用いて、算出したn個の鍵ビット列kiにより、上記平文入力部が入力した平文Mをそれぞれ暗号化して、n人の受信者に対応するn個の第一暗号文C1i(iは、1以上n以下の整数。)とし、
上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと、乗法群G1の要素g1と、上記受信者識別入力部が入力したn個の整数IDiと、上記乱数生成部が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の乗法群G1の要素ui=(g1・g^(−IDi))^si(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G1の要素uiをそれぞれ表わすビット列を、n人の受信者に対応するn個の第二暗号文C2i(iは、1以上n以下の整数。)とし、
上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素g2とペアリングeと、上記乱数生成部が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の乗法群GTの要素vi=e(g,g2)^si(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群GTの要素viをそれぞれ表わすビット列を、n人の受信者に対応するn個の第三暗号文C3とし、
上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わすハッシュ関数HFに基づいて、1つの自然数β0を算出して、ハッシュ値Hとし、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素h2と乗法群G2の要素h3とペアリングeと、上記乱数生成部が生成したn個の整数siと、上記ハッシュ値算出部が算出した1つの自然数β0とに基づいて、n人の受信者に対応するn個の乗法群GTの要素yi=e(g,h2)^si・e(g,h3)^(si・β0)(iは、1以上n以下の整数。)を算出し、算出した乗法群GTの要素yiをそれぞれ表わすビット列を、n人の受信者に対応するn個の暗号文検証文CCi(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個の所定の長さのビット列IDiをn個の受信者識別情報として入力し、
上記乱数生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす自然数rに基づいて、n人の受信者に対応するn個の1以上自然数r未満の整数si(iは、1以上n以下の整数。)をランダムに生成し、
上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素g1と乗法群G2の要素g2とペアリングeと鍵生成関数KDFと、上記乱数生成部が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の鍵ビット列ki=KDF(e(g1,g2)^si)(iは、1以上n以下の整数。)を算出し、上記処理装置を用いて、算出したn個の鍵ビット列kiにより、上記平文入力部が入力した平文Mをそれぞれ暗号化して、n人の受信者に対応するn個の第一暗号文C1i(iは、1以上n以下の整数。)とし、
上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす関数V1と、上記受信者識別入力部が入力したn個の所定の長さのビット列IDiと、上記乱数生成部が生成したn個の整数si(iは、1以上n以下の整数。)とに基づいて、n人の受信者に対応するn個の乗法群G2の要素ui=V1(IDi)^si(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G2の要素uiをそれぞれ表わすビット列を、n人の受信者に対応するn個の第二暗号文C2i(iは、1以上n以下の整数。)とし、
上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと、上記乱数生成部が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の乗法群G1の要素vi=g^si(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G1の要素viをそれぞれ表わすビット列を、n人の受信者に対応するn個の第三暗号文C3i(iは、1以上n以下の整数。)とし、
上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わすハッシュ関数HFに基づいて、1つの所定の長さのビット列w0を算出して、ハッシュ値Hとし、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす関数V2と、上記乱数生成部が生成したn個の整数siと、上記ハッシュ値算出部が算出した1つの所定の長さのビット列w0とに基づいて、n人の受信者に対応するn個の乗法群G2の要素yi=V2(w0)^si(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G2の要素yiをそれぞれ表わすビット列を、n人の受信者に対応するn個の暗号文検証文CCiとし、
上記検証ハッシュ値算出部は、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータが表わすハッシュ関数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個の受信者識別情報IDiを含むn個の暗号文主文CBiを生成することを特徴とする。
上記暗号文生成装置は、更に、セッション鍵生成部と、データ入力部と、データ暗号化部と、暗号文通知部とを有し、
上記セッション鍵生成部は、上記処理装置を用いて、所定の長さのビット列をランダムに生成して、セッション鍵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が安全な群位数でないと判定することを特徴とする。
実施の形態1を、図1〜図10を用いて説明する。
IDベース暗号通信システム800は、暗号パラメータ生成装置100、暗号文生成装置200、複数の暗号文受信装置301〜303を有する。
受信者識別情報531〜533は、例えば、受信者の住所・氏名、メールアドレスなど、受信者を一意に識別することができる情報である。受信者識別情報531〜533は、IDベース暗号通信システム800において公開された情報500の一部であり、対応関係が正しいか否かを容易に検証可能な情報である。
暗号文生成装置200は、暗号文受信装置301及び暗号文受信装置303に対して、通知データ720を通知する。
通知データ720は公開を意図するものではないが、暗号文生成装置200が通知データ720を通知する経路は、例えば、インターネットやデータ放送など、第三者が容易に通知データ720を傍受可能な環境である。そのため、通知データ720は、平文データ710を暗号化した暗号化データ722を含む。
また、平文データ710は、例えば、動画データなど巨大なデータである場合もあるので、通知相手に関わらず、共通のセッション鍵Kを用いて暗号化する。通知相手ごとにセッション鍵Kを変えると、通知相手の数と同じ数の暗号化データ722を生成する必要があるので、暗号文生成装置200の暗号化処理の負荷が増え、通知経路のトラフィックを増大させてしまうからである。
暗号文受信装置301は、鍵暗号文C721を復号することにより、セッション鍵Kを取得し、取得したセッション鍵Kで暗号化データ722を復号することにより、平文データ710を取得する。
暗号文生成装置200は、入力した情報に基づいて、IDベース暗号方式の暗号処理をし、セッション鍵Kと鍵暗号文C721とを生成する。
暗号文生成装置200は、生成したセッション鍵Kにより、平文データ710を暗号化して暗号化データ722を生成する。
暗号文生成装置200は、生成した鍵暗号文C721と暗号化データ722とを含む通知データ720を、暗号文受信装置301及び暗号文受信装置303に対して通知する。
暗号文受信装置301は、鍵暗号文C721のなかから、暗号文受信装置301に対応する部分(及び共通の部分)を取得し、秘密鍵601を用いて、IDベース暗号方式の復号処理をして、セッション鍵Kを取得する。
暗号文受信装置303も同様に、秘密鍵601を用いて、セッション鍵Kを取得する。
暗号パラメータ生成装置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に接続されている。
暗号パラメータ生成装置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などは、出力部、出力装置の一例である。
磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。プログラム群923のプログラムは、CPU911、オペレーティングシステム921、ウィンドウシステム922により実行される。
ファイル群924には、以下に述べる実施の形態の説明において、「〜の判定結果」、「〜の計算結果」、「〜の処理結果」として説明する情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリになどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのCPUの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
また、以下に述べる実施の形態の説明において説明するフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD(Digital・Versatile・Disc)等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
暗号パラメータ生成装置100は、パラメータ設定部110と秘密鍵設定部130とを有する。
なお、暗号パラメータ生成装置100は、パラメータ設定部110を有するパラメータ設定装置と、秘密鍵設定部130を有する秘密鍵設定装置とに分かれていてもよい。その場合、1つのパラメータ設定装置に対して、複数の秘密鍵設定装置があってもよい。
パラメータ設定部110は、群パラメータ記憶部111と、秘密情報生成部112と、公開パラメータ生成部113と、公開パラメータ公開部114と、秘密情報記憶部121と、パラメータ記憶部122とを有する。
群パラメータとは、IDベース暗号方式における群演算を行う群を定義するパラメータを表わす情報である。
例えば、IDベース暗号方式における群演算を行う群として、楕円曲線上の点がなす群を用いる場合、群パラメータ記憶部111は、群パラメータとして、楕円曲線Y2=X3+aX+bを定義する係数a、係数bなどを記憶する。
なお、群パラメータ記憶部111が記憶する群パラメータが表わす乗法群における乗算は、実用的な時間内に所定のアルゴリズムにより計算可能であるものとする。したがって、CPU911などの処理装置を用いて、乗算結果を算出することができる。
秘密情報生成部112は、CPU911などの処理装置を用いて、秘密情報をランダムに生成する。
秘密情報生成部112は、CPU911などの処理装置を用いて、生成した秘密情報を出力する。
秘密情報が表わす内容は、IDベース暗号方式として、どのような暗号方式を採用するかによって異なる。秘密情報は、例えば、群パラメータが表わす乗法群の位数rより小さく、1以上の整数を表わす情報である。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、入力した群パラメータと、秘密情報とに基づいて、公開暗号パラメータを生成する。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、生成した公開暗号パラメータを出力する。
公開暗号パラメータには、秘密情報が巧みに織り込まれており、暗号文生成装置200や暗号文受信装置301〜303は、公開暗号パラメータを利用することで、秘密情報を間接的に利用できるが、公開暗号パラメータから秘密情報を逆算することはできないようにする。
例えば、秘密情報は整数αを表わし、公開暗号パラメータは、群パラメータが表わす乗法群Gの要素gと、乗法群Gの要素g^αとを表わす情報を含む。なお、「^」は冪乗演算を示し、「g^α」はgのα乗、すなわちα個のgを互いに乗算することを意味する。乗法群GがDH問題(Diffie−Hellmann Problem)を解くことが困難な群であれば、gとg^αからαを求めることはできない。
このため、公開暗号パラメータを公開しても、秘密情報の秘密は守られる。
公開パラメータ公開部114は、CPU911などの処理装置を用いて、入力した公開パラメータを公開する。ここで、「公開」とは、暗号文生成装置200や暗号文受信装置301〜303に通知することを含むが、暗号文生成装置200や暗号文受信装置301〜303が、正しい公開暗号パラメータを取得でき、万が一改竄された公開暗号パラメータを取得した場合、それが改竄されたものであるか否かを容易に判別できるようにすることである。例えば、公開パラメータ公開部114は、公開暗号パラメータをホームページに掲載することにより、公開する。第三者の攻撃により、ホームページを改竄される可能性がないわけではないが、公開暗号パラメータ生成装置100がホームページをチェックすることにより、改竄を発見できる。また、複数のサーバ装置を用いて、同一の公開暗号パラメータを公開し、両者が一致するか否かを判断することにより、改竄を発見できるようにしてもよい。
秘密情報記憶部121は、磁気ディスク装置920などの記憶装置を用いて、入力した秘密情報を記憶する。
パラメータ記憶部122は、磁気ディスク装置920などの記憶装置を用いて、入力した公開暗号パラメータを記憶する。
秘密鍵設定部130は、識別情報入力部131と、秘密鍵生成部132と、秘密鍵通知部133とを有する。
識別情報入力部131は、CPU911などの処理装置を用いて、入力した受信者識別情報が、正しく暗号文受信装置に対応する受信者を識別するものであるかを、公開された情報500に基づいて検証する。
検証の結果、問題がなければ、識別情報入力部131は、CPU911などの処理装置を用いて、入力した受信者識別情報を出力する。
秘密鍵生成部132は、CPU911などの処理装置を用いて、入力した受信者識別情報と秘密情報と公開暗号パラメータとに基づいて、秘密鍵を生成する。
秘密鍵生成部132は、CPU911などの処理装置を用いて、生成した秘密鍵を出力する。
秘密鍵通知部133は、CPU911などの処理装置を用いて、入力した秘密鍵を、対応する受信者の暗号文受信装置に対して、秘密裏に通知する。例えば、秘密鍵通知部133は、受信者識別情報531に基づいて秘密鍵生成部132が生成した秘密鍵601を、受信者識別情報531によって識別される受信者に対応する暗号文受信装置301に対して通知する。
暗号文生成装置200は、鍵暗号化部290と、データ入力部251と、データ暗号化部252と、暗号文通知部261とを有する。
鍵暗号文Cは、鍵暗号化部290が生成したセッション鍵Kを暗号化したものである。鍵暗号文Cは、暗号文Cの一例である。
鍵暗号化部290は、暗号パラメータ記憶部210と、セッション鍵生成部221と、乱数生成部222と、平文入力部231と、受信者識別入力部232と、暗号文主文生成部240と、ハッシュ値算出部244と、暗号文検証文生成部245と、暗号文結合部246とを有する。
セッション鍵生成部221は、CPU911などの処理装置を用いて、生成したセッション鍵Kを出力する。
平文入力部231は、CPU911などの処理装置を用いて、入力した平文Mを出力する。
以下、平文データ710を送信したい相手の数をnと記述する。また、複数の受信者識別情報を区別するため、添え字を用いて、受信者識別情報ID1、受信者識別情報ID2、…、受信者識別情報IDnのように記述する。n個の受信者識別情報ID1、ID2、…、IDnをまとめて、「受信者識別情報IDi(iは、1以上n以下の整数。)」のように記述する場合もある。以下の説明において、添え字「i」は、原則として、n人の受信者それぞれに対応するものを示す。
受信者識別入力部232は、n人の受信者にそれぞれ対応するn個の受信者識別情報IDi(iは、1以上n以下の整数。)を入力する。
受信者識別入力部232は、CPU911などの処理装置を用いて、入力したn個の受信者識別情報IDiを出力する。
IDベース暗号通信システム800は、任意の数の受信者に対してデータを送信できる暗号通信システムである。そのときの必要に応じて、n=1かもしれないし、n=100かもしれない。
暗号文生成装置200は、例えば、受信者識別入力部232が受信者識別情報を入力したときに受信者の数nを知る。暗号文生成装置200は、nが1以上のいずれの数であっても、1つの鍵暗号文C(と暗号化データ)を生成する。
乱数生成部222は、CPU911などの処理装置を用いて、n個の乱数をランダムに生成する。乱数生成部222が生成する乱数は、例えば、入力した公開暗号パラメータが表わす乗法群の位数rより小さく1以上の整数sである。
また、乱数生成部222が生成するn個の乱数は、n人の受信者それぞれに対応づけられる。すなわち、乱数生成部222は、n人の受信者にそれぞれ対応するn個の乱数を生成する。
乱数生成部222は、生成したn個の乱数を表わす情報を出力する。
暗号文主文生成部240は、CPU911などの処理装置を用いて、入力した情報に基づいて、n人の受信者にそれぞれ対応するn個の暗号文主文CBi(iは、1以上n以下の整数。)を生成する。
暗号文主文生成部240は、CPU911などの処理装置を用いて、生成したn個の暗号文主文CBiを出力する。
なお、暗号文主文は、いくつかの部分に分節できるものであってもよい。暗号文主文を分節した部分のなかには、すべての受信者に共通する部分があってもよい。暗号文主文を分節した部分のうちすべての受信者に共通する部分は、1つにまとめることにより、n個の暗号文主文CBiの全体を短くしてもよい。
暗号文主文生成部240が出力する暗号文主文CBiは、第一暗号文生成部241が出力する第一暗号文C1iと、第二暗号文生成部242が出力する第二暗号文C2iと、第三暗号文生成部243が出力する第三暗号文C3iとから構成される。
暗号文主文CBiは、第一暗号文C1iと第二暗号文C2iと第三暗号文C3iとを結合したものであってもよいし、第一暗号文C1iと第二暗号文C2iと第三暗号文C3iとを組としたものであってもよい。
なお、この例では、暗号文主文CBiが3つの暗号文から構成されるが、これは一例であって、他の構成であってもよい。
ここで、「含む」とは、例えば、暗号文主文CBiが、受信者識別情報IDiと第一暗号文C1iと第二暗号文C2iと第三暗号文C3iとを結合したものである場合など、その暗号文主文CBiが対応する受信者の受信者識別情報IDiを容易に判別でき、必要なら検証できる形式で含むことをいう。
第一暗号文生成部241は、CPU911などの処理装置を用いて、入力した情報に基づいて、n人の受信者にそれぞれ対応するn個の第一暗号文C1i(iは、1以上n以下の整数。)を生成する。
第一暗号文生成部241は、CPU911などの処理装置を用いて、生成したn個の第一暗号文C1iを出力する。
第二暗号文生成部242は、CPU911などの処理装置を用いて、入力した情報に基づいて、n人の受信者にそれぞれ対応するn個の第二暗号文C2i(iは、1以上n以下の整数。)を生成する。
第二暗号文生成部242は、CPU911などの処理装置を用いて、生成したn個の第二暗号文C2iを出力する。
第三暗号文生成部243は、CPU911などの処理装置を用いて、入力した情報に基づいて、n人の受信者にそれぞれ対応するn個の第三暗号文C3i(iは、1以上n以下の整数。)を生成する。
第三暗号文生成部243は、CPU911などの処理装置を用いて、生成したn個の第三暗号文C3iを出力する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、入力したn個の暗号文主文CBiに基づいて、1つのハッシュ値Hを算出する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、算出した1つのハッシュ値Hを出力する。
また、公開暗号パラメータにおいて、ハッシュ値Hを算出するためのハッシュ関数HFを定義しておいてもよい。その場合、ハッシュ値算出部244は、公開暗号パラメータが表わすハッシュ関数HFにより、ハッシュ値Hを算出する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、入力した情報に基づいて、n人の受信者にそれぞれ対応するn個の暗号文検証文CCi(iは、1以上n以下の整数。)を生成する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、生成した暗号文検証文CCiを出力する。
暗号文結合部246は、CPU911などの処理装置を用いて、入力したn個の第一暗号文C1iと、n個の第二暗号文C2iと、n個の第三暗号文C3iと、暗号文検証文CCとに基づいて、1つの鍵暗号文Cを生成する。例えば、暗号文結合部246は、CPU911などの処理装置を用いて、入力したn個の第一暗号文C1iと、n個の第二暗号文C2iと、n個の第三暗号文C3iと、暗号文検証文CCとを結合して、1つの鍵暗号文Cとする。
なお、結合した1つの鍵暗号文Cのうち、どの部分がどの受信者に対応する部分であるかは、あらかじめ定められた結合の順序などによって表わされ、暗号文受信装置301〜303は、鍵暗号文Cから、自分に対応する部分を容易に抽出できるものとする。
暗号文結合部246は、CPU911などの処理装置を用いて、生成した1つの鍵暗号文Cを出力する。
データ入力部251は、CPU911などの処理装置を用いて、入力した平文データ710を出力する。
データ暗号化部252は、CPU911などの処理装置を用いて、入力した平文データ710を、入力したセッション鍵Kにより暗号化し、暗号化データとする。
データ暗号化部252は、CPU911などの処理装置を用いて、生成した暗号化データを出力する。
暗号文通知部261は、CPU911などの処理装置を用いて、入力した鍵暗号文Cと、暗号化データ722とを含む通知データ720を生成する。
暗号文通知部261は、CPU911などの処理装置を用いて、生成した通知データ720を、通知相手である複数の暗号文受信装置に通知する。
通知データ720は、例えば、メール通信において、受信者を複数指定して送信することにより、複数の暗号文受信装置に通知される。通知データ720は、受信者ごとに異なるものではなく、すべての受信者に共通である。
暗号文受信装置301は、暗号文受信部351と、鍵復号部390と、データ復号部352とを有する。
なお、暗号文受信装置302、暗号文受信装置303のブロック構成も暗号文受信装置301と同様である。
暗号文受信部351は、CPU911などの処理装置を用いて、受信した通知データ720に含まれる1つの鍵暗号文Cと、暗号化データとを取得する。
暗号文受信部351は、CPU911などの処理装置を用いて、取得した1つの鍵暗号文Cと、暗号化データとを出力する。
鍵復号部390は、公開パラメータ記憶部310と、秘密鍵記憶部323と、暗号文受信部351と、暗号文分解部346と、検証ハッシュ値算出部344と、暗号文検証部345と、暗号文復号部341と、データ復号部352とを有する。
暗号文分解部346は、CPU911などの処理装置を用いて、入力した1つの鍵暗号文Cを分解し、n個の暗号文主文CBi(すなわち、n個の第一暗号文C1iと、n個の第二暗号文C2iと、n個の第三暗号文C3i)と、暗号文検証文CCとを取得する。
同様に、暗号文分解部346は、CPU911などの処理装置を用いて、対応暗号文検証文CCIDを取得する。
なお、暗号文検証文が受信者に関わらず共通の1つの暗号文検証文である場合には、暗号文分解部346が取得する対応暗号文検証文CCIDは、暗号文検証文そのものである。
なお、n個の暗号文主文CBiのなかに、どの暗号文主文がどのIDに対応する対応暗号文主文CBIDであるかを示す情報が含まれている場合には、暗号文分解部346が、対応暗号文主文CBIDを取得しなくてもよい。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、暗号文生成装置200のハッシュ値算出部244がハッシュ値Hを算出したのと同様の方式により、検証ハッシュ値H’を算出する。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、算出した検証ハッシュ値H’を出力する。
例えば、検証ハッシュ値算出部344は、入力したn個の暗号文主文CBiをすべて結合した検証結合暗号文に基づいて、検証ハッシュ値H’を算出する。
暗号文検証部345は、CPU911などの処理装置を用いて、入力した情報に基づいて、検証情報を生成する。
例えば、暗号文分解部346は、生成した検証情報と、入力した対応暗号文検証文CCIDとが一致する場合に、暗号文受信部351が受信した1つの鍵暗号文Cに整合性があると判定する。
あるいは、暗号文検証部345は、入力した対応暗号文検証文CCID(及び公開暗号パラメータや秘密鍵)に基づいて、もう一つの検証情報を生成し、生成した2つの検証情報が一致する場合に、暗号文受信部351が受信した1つの鍵暗号文Cに整合性があると判定してもよい。
暗号文復号部341は、CPU911などの処理装置を用いて、入力した情報に基づいて、暗号文受信部351が受信した1つの鍵暗号文Cに整合性があると暗号文検証部345が判定した場合に、平文Mを復元する。
暗号文復号部341は、CPU911などの処理装置を用いて、復元した平文Mを出力する。
データ復号部352は、CPU911などの処理装置を用いて、入力した暗号化データを、入力したセッション鍵K’により復号して、復号データとする。
データ復号部352は、CPU911などの処理装置を用いて、復号した復号データを出力する。
秘密情報生成部112は、CPU911などの処理装置を用いて、入力した群パラメータに基づいて、秘密情報をランダムに生成する。
秘密情報生成部112は、CPU911などの処理装置を用いて、生成した秘密情報を出力する。
秘密情報記憶部121は、CPU911などの処理装置を用いて、秘密情報生成部112が出力した秘密情報を入力する。
秘密情報記憶部121は、磁気ディスク装置920などの記憶装置を用いて、入力した秘密情報を記憶する。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、秘密情報生成工程S11で秘密情報生成部112が出力した秘密情報を入力する。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、入力した群パラメータと、入力した秘密情報とに基づいて、公開暗号パラメータを生成する。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、生成した公開暗号パラメータを出力する。
パラメータ記憶部122は、CPU911などの処理装置を用いて、公開パラメータ生成部113が出力した公開暗号パラメータを入力する。
パラメータ記憶部122は、磁気ディスク装置920などの記憶装置を用いて、入力した公開暗号パラメータを記憶する。
公開パラメータ公開部114は、CPU911などの処理装置を用いて、入力した公開暗号パラメータを公開する。
公開パラメータ公開部114が公開した公開暗号パラメータは、暗号文生成装置200及び暗号文受信装置301〜303が取得し、暗号パラメータ記憶部210及び公開パラメータ記憶部310が磁気ディスク装置920などの記憶装置を用いて記憶する。
識別情報入力部131は、CPU911などの処理装置を用いて、入力した受信者識別情報IDを出力する。
秘密鍵生成部132は、CPU911などの処理装置を用いて、秘密情報記憶部121が記憶した秘密情報を入力する。
秘密鍵生成部132は、CPU911などの処理装置を用いて、パラメータ記憶部122が記憶した公開暗号パラメータを入力する。
秘密鍵生成部132は、CPU911などの処理装置を用いて、入力した秘密情報と、入力した公開暗号パラメータと、入力した受信者識別情報IDとに基づいて、秘密鍵dIDを生成する。
秘密鍵生成部132は、CPU911などの処理装置を用いて、生成した秘密鍵dIDを出力する。
秘密鍵通知部133は、CPU911などの処理装置を用いて、S22で秘密鍵生成部132が出力した秘密鍵dIDを入力する。
秘密鍵通知部133は、CPU911などの処理装置を用いて、入力した受信者識別情報IDによって識別される受信者に対応する暗号文受信装置に対して、入力した秘密鍵dIDを秘密裏に通知する。
秘密鍵通知部133が通知した秘密鍵dIDは、通知された暗号文受信装置が取得し、秘密鍵記憶部323が磁気ディスク装置920などの記憶装置を用いて記憶する。
データ入力部251は、CPU911などの処理装置を用いて、入力した平文データを出力する。
受信者識別入力部232は、CPU911などの処理装置を用いて、入力したn個の受信者識別情報IDiを出力する。
セッション鍵生成部221は、CPU911などの処理装置を用いて、生成したセッション鍵Kを出力する。
平文入力部231は、CPU911などの処理装置を用いて、セッション鍵生成部221が出力したセッション鍵Kを入力する。
平文入力部231は、CPU911などの処理装置を用いて、入力したセッション鍵Kを、平文Mとして出力する。
乱数生成部222は、CPU911などの処理装置を用いて、生成したn個の乱数を表わす情報を出力する。
第一暗号文生成部241は、CPU911などの処理装置を用いて、セッション鍵生成工程S33で平文入力部231が出力した平文Mを入力する。
第一暗号文生成部241は、CPU911などの処理装置を用いて、乱数生成工程S34で乱数生成部222が出力したn個の乱数を表わす情報を入力する。
第一暗号文生成部241は、CPU911などの処理装置を用いて、入力した情報に基づいて、n人の受信者に対応するn個の第一暗号文C1i(iは、1以上n以下の整数)を生成する。
第一暗号文生成部241は、CPU911などの処理装置を用いて、生成したn個の第一暗号文C1iを出力する。
第二暗号文生成部242は、CPU911などの処理装置を用いて、受信者識別入力工程S32で受信者識別入力部232が出力したn個の受信者識別情報IDiを入力する。
第二暗号文生成部242は、CPU911などの処理装置を用いて、乱数生成工程S34で乱数生成部222が出力したn個の乱数を表わす情報を入力する。
第二暗号文生成部242は、CPU911などの処理装置を用いて、入力した情報に基づいて、n人の受信者にそれぞれ対応するn個の第二暗号文C2i(iは、1以上n以下の整数)を生成する。
第二暗号文生成部242は、CPU911などの処理装置を用いて、生成したn個の第二暗号文C2iを出力する。
第三暗号文生成部243は、CPU911などの処理装置を用いて、乱数生成工程S34で乱数生成部222が出力したn個の乱数を表わす情報を入力する。
第三暗号文生成部243は、CPU911などの処理装置を用いて、入力した情報に基づいて、n人の受信者にそれぞれ対応するn個の第三暗号文C3i(iは、1以上n以下の整数)を生成する。
第三暗号文生成部243は、CPU911などの処理装置を用いて、生成したn個の第三暗号文C3iを出力する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、第一暗号文生成工程S35で第一暗号文生成部241が出力したn個の第一暗号文C1iを入力する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、第二暗号文生成工程S36で第二暗号文生成部242が出力したn個の第二暗号文C2iを入力する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、第三暗号文生成工程S37で第三暗号文生成部243が出力したn個の第三暗号文C3iを入力する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、入力した情報に基づいて、ハッシュ値Hを算出する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、算出したハッシュ値Hを出力する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、乱数生成工程S34で乱数生成部222が出力したn個の乱数を表わす情報を入力する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、ハッシュ値算出工程S38でハッシュ値算出部244が出力したハッシュ値Hを入力する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、入力した情報に基づいて、n人の受信者に対応するn個の暗号文検証文CCi(iは、1以上n以下の整数)を生成する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、生成したn個の暗号文検証文CCiを出力する。
暗号文結合部246は、CPU911などの処理装置を用いて、第二暗号文生成工程S36で第二暗号文生成部242が出力したn個の第二暗号文C2iを入力する。
暗号文結合部246は、CPU911などの処理装置を用いて、第三暗号文生成工程S37で第三暗号文生成部243が出力したn個の第三暗号文C3iを入力する。
暗号文結合部246は、CPU911などの処理装置を用いて、暗号文検証文生成工程S39で暗号文検証文生成部245が出力したn個の暗号文検証文CCiを入力する。
暗号文結合部246は、CPU911などの処理装置を用いて、入力したn個の第一暗号文C1iと、入力したn個の第二暗号文C2iと、入力したn個の第三暗号文C3iと、入力したn個の暗号文検証文CCiとを結合して、1つの鍵暗号文Cとする。
暗号文結合部246は、CPU911などの処理装置を用いて、結合した1つの鍵暗号文Cを出力する。
データ暗号化部252は、CPU911などの処理装置を用いて、セッション鍵生成工程S33でセッション鍵生成部221が出力したセッション鍵Kを入力する。
データ暗号化部252は、CPU911などの処理装置を用いて、入力したセッション鍵Kにより、入力した平文データを暗号化して、暗号化データとする。
データ暗号化部252は、CPU911などの処理装置を用いて、暗号化した暗号化データを出力する。
暗号文通知部261は、CPU911などの処理装置を用いて、暗号文結合工程S40で暗号文結合部246が出力した1つの鍵暗号文Cを入力する。
暗号文通知部261は、CPU911などの処理装置を用いて、データ暗号化工程S41でデータ暗号化部252が出力した暗号化データを入力する。
暗号文通知部261は、CPU911などの処理装置を用いて、入力した1つの鍵暗号文Cと、入力した暗号化データとを含むデータを生成して、通知データとする。
暗号文通知部261は、CPU911などの処理装置を用いて、入力したn個の受信者識別情報IDiによって識別される受信者に対応する暗号文受信装置に対して、生成した通知データを通知する。
暗号文受信部351は、CPU911などの処理装置を用いて、受信した通知データに含まれる1つの鍵暗号文Cと、暗号化データとを取得する。
暗号文受信部351は、CPU911などの処理装置を用いて、取得した1つの鍵暗号文Cと、暗号化データとを出力する。
暗号文分解部346は、CPU911などの処理装置を用いて、入力した1つの鍵暗号文Cに基づいて、n個の第一暗号文C1iと、n個の第二暗号文C2iと、n個の第三暗号文C3iと、n個の暗号文検証文CCiとを取得する。
暗号文分解部346は、CPU911などの処理装置を用いて、取得したn個の第一暗号文C1iと、n個の第二暗号文C2iと、n個の第三暗号文C3iと、n個の暗号文検証文CCiとを出力する。
暗号文分解部346は、CPU911などの処理装置を用いて、取得した対応第一暗号文C1IDと、対応第二暗号文C2IDと、対応第三暗号文C3IDと、対応暗号文検証文CCIDとを出力する。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、暗号文分解工程S52で暗号文分解部346が出力したn個の第一暗号文C1iと、n個の第二暗号文C2iと、n個の第三暗号文C3iとを入力する。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、入力した情報に基づいて、検証ハッシュ値H’を算出する。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、算出した検証ハッシュ値H’を出力する。
暗号文検証部345は、CPU911などの処理装置を用いて、秘密鍵記憶部323が記憶した秘密鍵を入力する。
暗号文検証部345は、CPU911などの処理装置を用いて、暗号文分解工程S52で暗号文分解部346が出力した対応第二暗号文C2IDと、対応第三暗号文C3IDと、対応暗号文検証文CCIDとを入力する。
暗号文検証部345は、CPU911などの処理装置を用いて、検証ハッシュ値算出工程S53で検証ハッシュ値算出部344が出力した検証ハッシュ値H’を入力する。
暗号文検証部345は、CPU911などの処理装置を用いて、入力した情報に基づいて、検証情報を生成する。
暗号文検証部345は、CPU911などの処理装置を用いて、生成した検証情報と、入力した対応暗号文検証文CCIDとに基づいて、暗号文受信部351が受信した1つの鍵暗号文Cに整合性があるか否かを判定する。
整合性があると判定した場合、暗号文復号工程S55へ進む。
整合性がないと判定した場合、暗号文受信処理を終了する。
暗号文復号部341は、CPU911などの処理装置を用いて、秘密鍵記憶部323が記憶した秘密鍵を入力する。
暗号文復号部341は、CPU911などの処理装置を用いて、暗号文分解工程S52で暗号文分解部346が出力した対応第一暗号文C1IDと、対応第二暗号文C2IDと、対応第三暗号文C3IDとを入力する。
暗号文復号部341は、CPU911などの処理装置を用いて、入力した情報に基づいて、平文Mを復元する。
暗号文復号部341は、CPU911などの処理装置を用いて、復元した平文Mを出力する。
データ復号部352は、CPU911などの処理装置を用いて、暗号文復号工程S55で暗号文復号部341が出力した平文Mを、セッション鍵K’として入力する。
データ復号部352は、CPU911などの処理装置を用いて、入力したセッション鍵K’により、入力した暗号化データを復号して、復号データとする。
データ復号部352は、CPU911などの処理装置を用いて、復号した復号データを出力する。
ここで、「MU−IND−ID−CCA2安全性」とは、複数ユーザ(Multi−User)において、ターゲットIDを適応的に選択可能な攻撃者に対する安全性を意味する。
PKG用鍵生成機能Sは、IDベース暗号通信システム800における公開暗号パラメータ生成装置100のパラメータ設定部110の機能に相当する。初期情報Γは、群パラメータに相当する。PKG用マスタ鍵mskは、秘密情報に相当する。共通パラメータparamsは、公開暗号パラメータに相当する。
秘密鍵導出機能Xは、IDベース暗号通信システム800における暗号パラメータ生成装置100の秘密鍵設定部130の機能に相当する。ユーザの識別情報IDは、受信者識別情報に相当する。
暗号化機能Eは、IDベース暗号通信システム800における暗号文生成装置200の機能に相当する。メッセージMは、平文M(=セッション鍵K)に相当する。
復号機能Dは、IDベース暗号通信システム800における暗号文受信装置301〜303の機能に相当する。
また、n=n(k)をkの多項式とする。
暗号化オラクルOEは、あらかじめ0か1かのいずれかをランダムに選択してbとしておく。
暗号化オラクルOEは、ユーザの識別情報ID*と、2つのメッセージM0*及びM1*とを入力する。
暗号化オラクルOEは、あらかじめ選択してあるbに基づいて、メッセージM0*及びメッセージM1*のうちから一方を選択し、暗号化機能Eにより、入力したユーザの識別情報ID*と、共通パラメータparamsと、選択したメッセージとに基づいて、暗号文C*を生成し、回答する。
攻撃者Aは、異なるユーザの識別情報ID*について、暗号化オラクルOEを呼び出すことができる。ただし、攻撃者Aが、暗号化オラクルOEを呼び出す際に、暗号オラクルOEに入力できるユーザの識別情報ID*の個数は、n以下とする。
また、攻撃者Aは、同じユーザの識別情報ID*について、異なるメッセージM0*及びM1*を入力して暗号化オラクルOEを呼び出すこともできる。
このように、攻撃者Aは、暗号化オラクルOEを複数回呼び出す。暗号化オラクルOEは、入力した2つのメッセージのうち、常に同じ方(前者なら常に前者、後者なら常に後者)を選択する。
鍵導出オラクルOXは、ユーザの識別情報IDを入力する。
鍵導出オラクルOXは、鍵導出機能Xにより、攻撃者Aには知らされていないPKG用マスタ鍵mskと、入力したユーザの識別情報IDとに基づいて、秘密鍵dIDを生成し、回答する。
復号オラクルODは、ユーザの識別情報IDと、暗号文Cとを入力する。
復号オラクルODは、鍵導出機能Xにより、攻撃者Aには知らされていないPKG用マスタ鍵mskと、入力したユーザの識別情報IDとに基づいて、秘密鍵dIDを生成する。
復号オラクルODは、復号機能Eにより、生成した秘密鍵dIDと、共通パラメータparamsと、入力した暗号文Cとに基づいて、メッセージを復号する。
復号オラクルODは、復号したメッセージ(または「拒絶」)を回答する。
攻撃者Aは、鍵導出オラクルOXに入力したことのあるユーザの識別情報IDを、暗号化オラクルOEに入力することはできない。攻撃者Aが秘密鍵dIDを知っていれば、暗号化オラクルが出力した暗号文C*を復号できるので、どちらのメッセージを暗号化したものか当てることは容易であり、なんら暗号を解読したとは言えないからである。
攻撃者Aは、逆に、暗号化オラクルOEに入力したことのあるユーザの識別情報ID*を、鍵導出オラクルOXに入力することもできない。
また、攻撃者Aは、暗号化オラクルOEに入力したことのあるユーザの識別情報ID*と、それに対して暗号化オラクルOEが出力した暗号文Cとの組み合わせを、復号オラクルODに入力することもできない。暗号化オラクルが出力した暗号文C*を復号オラクルODにより復号した場合も、どちらのメッセージを暗号化したものか当てることは容易であり、なんら暗号を解読したとは言えないからである。
ここで、攻撃者Aが、ユーザの識別情報ID1個につき暗号化オラクルOEを呼び出した回数をqeとする。すなわち、暗号化オラクルOEは、最大n・qe回呼び出される可能性がある。
また、攻撃者Aが、復号オラクルODを呼び出した回数をqd、鍵導出オラクルOXを呼び出した回数をqxとする。
そこで、攻撃者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との間の値となる。
Advmu n,Π,Γ(t,qe,qd,qx)が、全てのkの多項式n(k)に対して無視できる(negligible)とき、暗号システムΠは(t,qe,qd,qx)−MU安全であるという。
従来、IDベース暗号方式の安全性として定義されていたものは、ここで定義した安全性の特殊な場合であり、qe=1かつn=1の場合のMU安全性である。
ここで、「SMMR−IND−ID−CCA2安全性」とは、複数受信者(Multi−Recipient)に単一のメッセージ(Single Message)を送信する場合において、ターゲットIDを適応的に選択可能な攻撃者に対する安全性を意味する。
暗号文分節機能T’は、IDベース暗号通信システム800の暗号文受信装置の暗号文分解部346の機能に相当する。
暗号化オラクルOE’は、n人のユーザそれぞれの識別情報ID*=(ID1 *,ID2 *,…,IDn *)と、2つのメッセージM0*及びM1*とを入力する。
暗号化オラクルOE’は、0か1かのいずれかをランダムに選択してbとする。
暗号化オラクルOE’は、選択したbに基づいて、入力した2つのメッセージM0*及びM1*のうちから一方を選択し、暗号化機能Eにより、入力したn人のユーザそれぞれの識別情報ID*と、共通パラメータparamsと、選択したメッセージとに基づいて、暗号文C*を生成し、回答する。
鍵導出オラクルOX’は、(1人の)ユーザの識別情報IDを入力する。
鍵導出オラクルOX’は、鍵導出機能X’により、攻撃者Aには知らされていないPKG用マスタ鍵mskと、入力したユーザの識別情報IDとに基づいて、秘密鍵dIDを生成し、回答する。
復号オラクルOD’は、ユーザの識別情報IDと、そのIDに対する(分節された)暗号文CIDとを入力する。
復号オラクルOD’は、鍵導出機能X’により、攻撃者Aには知らされていないPKG用マスタ鍵mskと、入力したユーザの識別情報IDとに基づいて、秘密鍵dIDを生成する。
復号オラクルOD’は、復号機能D’により、生成した秘密鍵dIDと、共通パラメータparamsと、入力した暗号文CIDとに基づいて、メッセージを復号する。
復号オラクルOD’は、復号したメッセージ(または「拒絶」)を回答する。
攻撃者Aは、暗号化オラクルOE’を呼び出す前及び後のいずれにおいても、鍵導出オラクルOX’及び復号オラクルOD’を複数回呼び出すことができる。
ただし、暗号化オラクルOE’に入力した(入力する)n人のユーザそれぞれの識別情報ID*に含まれるユーザの識別情報を、鍵導出オラクルOX’に入力することはできない。
また、攻撃者Aは、暗号化オラクルOE’に入力したn人のユーザそれぞれの識別情報ID*に含まれるユーザの識別情報と、それに対して暗号化オラクルOE’が出力した暗号文Cのうち、その識別情報に対する暗号文CIDとの組み合わせを、復号オラクルOD’に入力することもできない。
上記の制限を除き、攻撃者Aは、自由に鍵導出オラクルOX’及び復号オラクルOD’を呼び出し、bが0か1かを推測する。攻撃者Aは、推測結果b’を出力する。
また、暗号システムΠ’のn人受信者安全性も同様に、Advsmmr n,Π’,Γ(t,qd,qx)=max{Advsmmr n,Π’,Γ(A)}と定義する。これは、復号オラクルOD’をqd回、鍵導出オラクルOX’をqx回呼び出して、時間tの間に答えを出す攻撃者Aのうち、最も高いアドバンテージを有する攻撃者のアドバンテージを意味する。
これに対して、ハッシュ値算出部244がn人の受信者に対応するn個の暗号文主文CBiそれぞれに基づいてハッシュ値を算出し、n人の受信者に対応するn個のハッシュ値を算出する方式もあり得る。このような方式のことを、以下では「連接方式」と呼ぶ。
ここでは、まず連接方式の安全性について説明する。
これに対して、MU−IND−ID−CCA2安全性の定義における暗号化オラクルOEは、(1人の)ユーザの識別情報ID*を入力して、暗号化処理をする。
したがって、MU−IND−ID−CCA2安全性の定義における暗号化オラクルOEをn回呼び出して、それぞれのユーザの識別情報についての暗号化処理をすれば、SMMR−IND−ID−CCA2安全性の定義における暗号化オラクルOE’と同等である。
また、暗号文検証文生成部245が暗号文検証文CCを生成する処理についても、連接方式では、ほとんどの演算をn回繰り返す必要があるのに対して、ハッシュ値共通化方式では、途中までの演算を共通化して1回で済ますことができるので、暗号文検証文生成部245が暗号文検証文CCを生成する処理の処理量も削減できる。
これにより、暗号文生成装置200における暗号文生成処理の処理速度が速くなり、暗号文生成装置200のCPU911などの処理装置の処理能力が低くても、実用的な時間内に暗号文生成処理をすることができる。
平文Mをn人の受信者(nは、1以上の整数。)に対して通知する暗号文C(鍵暗号文C)を生成する暗号文生成装置200において、
情報を記憶する磁気ディスク装置920などの記憶装置と、情報を処理するCPU911などの処理装置と、暗号パラメータ記憶部210と、受信者識別入力部232と、平文入力部231と、暗号文主文生成部240と、ハッシュ値算出部244と、暗号文検証文生成部245と、暗号文結合部246とを有することを特徴とする。
暗号パラメータ記憶部210は、磁気ディスク装置920などの記憶装置を用いて、公開暗号パラメータを記憶することを特徴とする。
受信者識別入力部232は、CPU911などの処理装置を用いて、n人の受信者をそれぞれ識別するn個の受信者識別情報IDi(iは、1以上n以下の整数。)を入力することを特徴とする。
平文入力部231は、CPU911などの処理装置を用いて、平文Mを入力することを特徴とする。
暗号文主文生成部240は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、受信者識別入力部232が入力したn個の受信者識別情報IDiと、平文入力部231が入力した平文Mとに基づいて、n人の受信者に対応するn個の暗号文主文CBi(iは、1以上n以下の整数。)を生成することを特徴とする。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、暗号文主文生成部240が生成したn個の暗号文主文CBiを結合して、結合暗号文を生成し、CPU911などの処理装置を用いて、生成した結合暗号文に基づいて、ハッシュ値Hを算出することを特徴とする。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、ハッシュ値算出部244が算出したハッシュ値Hとに基づいて、暗号文検証文CCを生成することを特徴とする。
暗号文結合部246は、CPU911などの処理装置を用いて、暗号文主文生成部240が生成したn個の暗号文主文CBiと、暗号文検証文生成部245が生成した暗号文検証文CCとを結合して、1つの暗号文Cとすることを特徴とする。
乱数生成部222は、CPU911などの処理装置を用いて、n人の受信者に対応するn個の整数si(iは、1以上n以下の整数。)をランダムに生成することを特徴とする。
暗号文主文生成部240は、第一暗号文生成部241と、第二暗号文生成部242と、第三暗号文生成部243とを有することを特徴とする。
第一暗号文生成部241は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、平文入力部231が入力した平文Mと、乱数生成部222が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の第一暗号文C1i(iは、1以上n以下の整数。)を生成することを特徴とする。
第二暗号文生成部242は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、受信者識別入力部232が入力したn個の受信者識別情報IDiと、乱数生成部222が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の第二暗号文C2i(iは、1以上n以下の整数。)を生成することを特徴とする。
第三暗号文生成部243は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、乱数生成部222が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の第三暗号文C3i(iは、1以上n以下の整数。)を生成することを特徴とする。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、第一暗号文生成部241が生成したn個の第一暗号文C1iと、第二暗号文生成部242が生成したn個の第二暗号文C2iと、第三暗号文生成部243が生成したn個の第三暗号文C3iとを結合して、1つの結合暗号文とし、CPU911などの処理装置を用いて、結合した1つの結合暗号文に基づいて、1つのハッシュ値H0を算出することを特徴とする。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、乱数生成部222が生成したn個の整数siと、ハッシュ値算出部244が算出した1つのハッシュ値H0とに基づいて、n人の受信者に対応するn個の暗号文検証文CCi(iは、1以上n以下の整数。)を生成することを特徴とする。
暗号文結合部246は、CPU911などの処理装置を用いて、第一暗号文生成部241が生成したn個の第一暗号文C1iと、第二暗号文生成部242が生成したn個の第二暗号文C2iと、第三暗号文生成部243が生成したn個の第三暗号文C3iと、暗号文検証文生成部245が生成したn個の暗号文検証文CCiとを結合して、1つの暗号文C(鍵暗号文C)とすることを特徴とする。
また、単独受信者の場合について安全性が証明されたIDベース暗号通信方式を複数受信者に拡張したIDベース暗号通信方式において、単独受信者の場合と同様の安全性を証明できるという効果を奏する。
暗号文主文生成部240は、CPU911などの処理装置を用いて、受信者識別入力部232が入力したn個の受信者識別情報IDiを含むn個の暗号文主文CBiを生成することを特徴とする。
暗号文通知部261は、CPU911などの処理装置を用いて、受信者識別入力部232が入力したn個の受信者識別情報IDiによって識別されるn人の受信者に対して、上記暗号文結合部246が結合した1つの暗号文C(鍵暗号文C)を通知することを特徴とする。
セッション鍵生成部221は、CPU911などの処理装置を用いて、所定の長さのビット列をランダムに生成して、セッション鍵Kとすることを特徴とする。
平文入力部231は、CPU911などの処理装置を用いて、平文Mとして、上記セッション鍵生成部が生成したセッション鍵Kを入力することを特徴とする。
データ入力部251は、CPU911などの処理装置を用いて、n人の受信者に対して送信すべき1つの平文データを入力することを特徴とする。
データ暗号化部252は、CPU911などの処理装置を用いて、セッション鍵生成部221が生成したセッション鍵Kにより、データ入力部251が入力した1つの平文データを暗号化して、1つの暗号化データとすることを特徴とする。
暗号文通知部261は、CPU911などの処理装置を用いて、受信者識別入力部232が入力したn個の受信者識別情報IDiによって識別されるn人の受信者に対して、暗号文結合部246が結合した1つの暗号文C(鍵暗号文C)と、データ暗号化部252が暗号化した1つの暗号化データとを通知することを特徴とする。
それぞれが対応する暗号文受信装置を有する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個の受信者識別情報IDi(iは、1以上n以下の整数。)を入力することを特徴とする。
平文入力部231は、CPU911などの処理装置を用いて、平文Mを入力することを特徴とする。
第二暗号文生成部242は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、受信者識別入力部232が入力したn個の受信者識別情報IDiと、平文入力部231が入力した平文Mとに基づいて、n人の受信者に対応するn個の暗号文主文CBi(iは、1以上n以下の整数。)を生成することを特徴とする。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、暗号文主文生成部240が生成したn個の暗号文主文CBiを結合して、結合暗号文を生成し、CPU911などの処理装置を用いて、生成した結合暗号文に基づいて、ハッシュ値Hを算出することを特徴とする。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、ハッシュ値算出部244が算出したハッシュ値Hとに基づいて、暗号文検証文CCを生成することを特徴とする。
暗号文結合部246は、CPU911などの処理装置を用いて、暗号文主文生成部240が生成したn個の暗号文主文CBiと、暗号文検証文生成部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個の暗号文主文C2iと、暗号文検証文CCとを取得し、CPU911などの処理装置を用いて、取得したn個の暗号文主文CBiのうち、暗号文受信装置が対応する受信者に対応する1つの対応暗号文主文CBIDを取得することを特徴とする。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、暗号文分解部346が取得したn個の暗号文主文CBiを結合した検証結合暗号文に基づいて、検証ハッシュ値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を復元することを特徴とする。
暗号文生成装置200は、更に、乱数生成部222を有することを特徴とする。
乱数生成部222は、CPU911などの処理装置を用いて、n人の受信者に対応するn個の整数si(iは、1以上n以下の整数。)をランダムに生成することを特徴とする。
暗号文主文生成部240は、第一暗号文生成部241と、第二暗号文生成部242と、第三暗号文生成部243とを有することを特徴とする。
第一暗号文生成部241は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、平文入力部231が入力した平文Mと、乱数生成部222が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の第一暗号文C1i(iは、1以上n以下の整数。)を生成することを特徴とする。
第二暗号文生成部242は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、受信者識別入力部232が入力したn個の受信者識別情報IDiと、乱数生成部222が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の第二暗号文C2i(iは、1以上n以下の整数。)を生成することを特徴とする。
第三暗号文生成部243は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、乱数生成部222が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の第三暗号文C3i(iは、1以上n以下の整数。)を生成することを特徴とする。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、第一暗号文生成部241が生成したn個の第一暗号文C1iと、第二暗号文生成部242が生成したn個の第二暗号文C2iと、第三暗号文生成部243が生成したn個の第三暗号文C3iとを結合して、1つの結合暗号文とし、CPU911などの処理装置を用いて、結合した1つの結合暗号文に基づいて、1つのハッシュ値H0を算出することを特徴とする。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータと、乱数生成部222が生成したn個の整数siと、ハッシュ値算出部244が算出した1つのハッシュ値H0とに基づいて、n人の受信者に対応するn個の暗号文検証文CCi(iは、1以上n以下の整数。)を生成することを特徴とする。
暗号文結合部246は、CPU911などの処理装置を用いて、第一暗号文生成部241が生成したn個の第一暗号文C1iと、第二暗号文生成部242が生成したn個の第二暗号文C2iと、第三暗号文生成部243が生成したn個の第三暗号文C3iと、暗号文検証文生成部245が生成したn個の暗号文検証文CCiとを結合して、1つの暗号文C(鍵暗号文C)とすることを特徴とする。
暗号文分解部346は、CPU911などの処理装置を用いて、暗号文受信部351が受信した1つの暗号文Cに基づいて、n個の第一暗号文C1iと、n個の第二暗号文C2iと、n個の第三暗号文C3iと、n個の暗号文検証文CCiとを取得し、CPU911などの処理装置を用いて、取得したn個の第一暗号文C1iとn個の第二暗号文C2iとn個の第三暗号文C3iとn個の暗号文検証文CCiとのうち、暗号文受信装置が対応する受信者に対応する1つの対応第一暗号文C1IDと1つの対応第二暗号文C2IDと1つの対応第三暗号文C3IDと1つの対応暗号文検証文CCIDとを取得することを特徴とする。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、暗号文分解部346が取得したn個の第一暗号文C1iとn個の第二暗号文C2iとn個の第三暗号文C3iとを結合した検証結合暗号文に基づいて、検証ハッシュ値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ベース暗号通信方式を複数受信者に拡張したIDベース暗号通信方式において、単独受信者の場合と同様の安全性を証明できるという効果を奏する。
暗号文主文生成部240は、CPU911などの処理装置を用いて、受信者識別入力部232が入力したn個の受信者識別情報IDiを含むn個の暗号文主文CBiを生成することを特徴とする。
暗号文生成装置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つの暗号化データを復号することを特徴とする。
例えば、受信者が一人で確定している場合であればn=1で固定してもよい。あるいは、n=10で固定でもよい。
また、受信者の数nの範囲をあらかじめ定め、データを送信する際に、その範囲内でnを指定する構成であってもよい。例えば、1≦n<100の範囲でnが可変であってもよい。
つまり、IDベース暗号通信システム800は、受信者の数があらかじめ固定である暗号通信システムでもよいし、データを送信する際に受信者の数を可変にするようにした暗号通信システムでもよい。
実施の形態2について、図11〜図18を用いて説明する。
暗号パラメータ生成装置100のブロック構成は、実施の形態1で説明したものと同様なので、図4を用いて、実施の形態1と異なる部分について説明する。
自然数rは、DH問題を解くことが困難な大素数である。
乗法群G1及び乗法群G2及び乗法群GTは、位数が自然数rである乗法群である。
なお、乗法群G1と乗法群G2とは、同じ乗法群でもよいし、異なる乗法群でもよい。乗法群G1と乗法群G2とが同じ乗法群である場合には、群パラメータ記憶部111は、乗法群G2を表わす情報を記憶しなくてもよい。
また、ペアリング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などの処理装置を用いて、入力した群パラメータが表わす自然数rに基づいて、1以上自然数r未満の整数αをランダムに生成する。
秘密情報生成部112は、CPU911などの処理装置を用いて、生成した整数αを表わす情報(秘密情報)を出力する。
鍵生成関数KDFは、乗法群GTの要素から、所定の長さのビット列を算出する関数である。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、入力した群パラメータが表わす自然数rに基づいて、ハッシュ関数HFを決定する。
ハッシュ関数HFは、任意の長さのビット列から、自然数r未満の自然数を算出する関数である。なお、ハッシュ関数HFは、異なるビット列から同じ自然数を算出する確率が極めて低いものとする。
公開パラメータ生成部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とが、同一の要素であってもよい。
以下の説明において、暗号パラメータ生成装置100は、受信者識別情報IDを整数として取り扱う。
例えば、暗号パラメータ生成装置100は、メールアドレスなどの任意の長さのビット列を、整数値を表わすビット列として取り扱うことにより、受信者識別情報を整数として取り扱う。
あるいは、暗号パラメータ生成装置100は、メールアドレスなどの任意の長さのビット列を、ハッシュ関数(公開パラメータ生成部113が決定したハッシュ関数HFと同じハッシュ関数であってもよいし、異なるハッシュ関数であってもよい。)の入力とし、ハッシュ関数により算出した整数を取得して、受信者識別情報としてもよい。
識別情報入力部131は、CPU911などの処理装置を用いて、入力した整数IDを出力する。
なお、自然数rは素数であるから、α−IDが0(または自然数rの倍数)でない限り、(α−ID)の逆数が1つ存在し、コンピュータのCPU911などの処理装置を用いて、実用的な時間内に算出可能である。
ここで、自然数rは非常に大きな自然数なので、α−IDが0(または自然数rの倍数)となる確率は極めて低く、無視してもよい。
暗号文生成装置200の機能ブロックの構成も、実施の形態1で説明したものと同様なので、図5を用いて、実施の形態1と異なる部分について説明する。
受信者識別入力部232は、CPU911などの処理装置を用いて、入力したn個の整数IDiを出力する。
乱数生成部222は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす自然数rに基づいて、n人の受信者にそれぞれ対応するn個の1以上自然数r未満の整数si(iは、1以上n以下の整数。)をランダムに生成する。
乱数生成部222は、CPU911などの処理装置を用いて、生成したn個の整数siを表わす情報を出力する。
なお、乗法群GTの要素e(g,h1)は、整数siや平文Mにかかわらず一定なので、前もって算出し、磁気ディスク装置920などの記憶装置を用いて記憶しておいてもよい。
平文Mのビット長と鍵ビット列kiのビット長とが等しい場合、例えば、第一暗号文生成部241は、平文Mと鍵ビット列kiとの間のビットごとの排他的論理和を算出し、第一暗号文C1iとする。
なお、平文Mを暗号化する方式は、排他的論理和演算を用いる方式に限らず、鍵ビット列kiと同一のビット列があれば第一暗号文C1iから平文Mを復元できる暗号方式なら、他の暗号方式であってもよい。
第二暗号文生成部242は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群G1と、乗法群G1の要素g1と、算出したn個乗法群G1の要素g^(−IDi)とに基づいて、乗法群G1の要素g1と乗法群G1の要素g^(−IDi)との積である乗法群G1の要素g1・g^(−IDi)(iは、1以上n以下の整数。)を算出する。
第二暗号文生成部242は、CPU911などの処理装置を用いて、算出したn個の乗法群G1の要素uiをそれぞれ表わすビット列を、n個の第二暗号文C2i(iは、1以上n以下の整数。)として出力する。
なお、乗法群GTの要素e(g,g2)は、整数siにかかわらず一定なので、前もって算出し、磁気ディスク装置920などの記憶装置を用いて記憶しておいてもよい。
第三暗号文生成部243は、CPU911などの処理装置を用いて、算出したn個の乗法群GTの要素e(g,g2)^siをそれぞれ表わすビット列を、n個の第三暗号文C3i(iは、1以上n以下の整数。)を出力する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、入力したn個の第一暗号文C1iと、n個の第二暗号文C2iと、n個の第三暗号文C3iとをそれぞれ結合して、n個の結合暗号文を生成する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、算出したn個の自然数βiを表わす情報と、生成したn個の結合暗号文とを出力する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わすペアリングeと、乗法群G1の要素gと、乗法群G2の要素h3とに基づいて、乗法群G1の要素gと乗法群G2の要素h3とのペアリング値である乗法群GTの要素e(g,h3)を算出する。
なお、乗法群GTの要素e(g,h2)及び乗法群GTの要素e(g,h3)は、整数siにかかわらず一定なので、前もって算出し、磁気ディスク装置920などの記憶装置を用いて記憶しておいてもよい。
暗号文結合部246は、CPU911などの処理装置を用いて、入力したn個の結合暗号文と、入力したn個の暗号文検証文とをすべて結合して、1つの鍵暗号文Cを生成する。
暗号文結合部246は、CPU911などの処理装置を用いて、生成した1つの鍵暗号文Cを出力する。
乱数生成部222は、受信者識別入力部232が入力した受信者識別情報ID1、ID2、…、IDnの数と同じ数であるn個の整数s1、s2、…、snを生成する。
第一暗号文生成部241は、平文Mと整数s1とに基づいて第一暗号文C11を生成し、平文Mと整数s2とに基づいて第一暗号文C12を生成し、…、平文Mと整数snとに基づいて第一暗号文C1nを生成する。
第二暗号文生成部242は、受信者識別情報ID1と整数s1とに基づいて第二暗号文C21を生成し、受信者識別情報ID2と整数s2とに基づいて第二暗号文C22を生成し、…、受信者識別情報IDnと整数snとに基づいて第二暗号文C2nを生成する。
第三暗号文生成部243は、整数s1に基づいて第三暗号文C31を生成し、整数s2に基づいて第三暗号文C32を生成し、…、整数snに基づいて第三暗号文C3nを生成する。
ハッシュ値算出部244は、生成した結合暗号文(C11|C21|C31)に基づいてハッシュ値H1を算出し、生成した結合暗号文(C12|C22|C32)に基づいてハッシュ値H2を算出し、…、生成した結合暗号文(C1n|C2n|C3n)に基づいてハッシュ値Hnを算出する。
暗号文検証文生成部245は、整数s1とハッシュ値H1とに基づいて暗号文検証文CC1を生成し、整数s2とハッシュ値H2とに基づいて暗号文検証文CC2を生成し、…、整数snとハッシュ値Hnとに基づいて暗号文検証文CCnを生成する。
なお、この例では、1人の受信者に対応する第一暗号文〜暗号文検証文を一箇所にまとめる順序で暗号文を結合して鍵暗号文Cを生成するが、結合の順序はこれと異なる順序であってもよい。例えば、(C11|C12|…|C1n|C21|C22|…|C2n|C31|C32|…|C3n|CC1|CC2|…|CCn)のように、第一暗号文は第一暗号文同士、第二暗号文は第二暗号文同士を1箇所にまとめる順序で結合してもよい。
この例のように、1人の受信者に対応する第一暗号文〜暗号文検証文を一箇所にまとめる順序で結合するほうが、ハッシュ値算出部244が結合した結合暗号文をそのまま結合して鍵暗号文Cを生成できるので、好ましい。また、暗号文受信装置が対応する受信者に対応する暗号文を容易に見つけることができる利点もある。
暗号文受信装置301〜303の機能ブロックの構成も、実施の形態1で説明したものと同様なので、図6を用いて、実施の形態1と異なる部分について説明する。
暗号文分解部346は、CPU911などの処理装置を用いて、入力した1つの鍵暗号文Cから、自身が対応する受信者に対応する対応第一暗号文C1IDと、対応第二暗号文C2IDと、対応第三暗号文C3IDと、対応暗号文検証文CCIDとを取得する。
暗号文分解部346は、CPU911などの処理装置を用いて、取得した対応第一暗号文C1IDと、対応第二暗号文C2IDと、対応第三暗号文C3IDと、対応暗号文検証文CCIDとを出力する。
暗号文分解部346は、例えば、1つの鍵暗号文Cを、第一暗号文〜暗号文検証文のビット長の和ごとに分割して、(C11|C21|C31|CC1)、(C12|C22|C32|CC2)、…、(C1n|C2n|C3n|CCn)とし、そのなかから、自分に対応する対応暗号文(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などの処理装置を用いて、入力した対応第一暗号文C1IDと、対応第二暗号文C2IDと、対応第三暗号文C3IDとを結合して、検証結合暗号文(C1ID|C2ID|C3ID)を生成する。なお、結合の順序は、暗号文生成装置200のハッシュ値算出部244が結合暗号文を生成する際の順序と同一であれば、これと異なる順序であってもよい。
また、上述した例のように、暗号文分解部346が検証結合暗号文(C1ID|C2ID|C3ID)を出力する場合には、検証ハッシュ値算出部344は、検証結合暗号文(C1ID|C2ID|C3ID)を生成する代わりに、暗号文分解部346が出力した検証結合暗号文(C1ID|C2ID|C3ID)を入力してもよい。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わすハッシュ関数HFと、生成あるいは入力した検証結合暗号文(C1ID|C2ID|C3ID)とに基づいて、検証結合暗号文(C1ID|C2ID|C3ID)をハッシュ関数HFにより変換した自然数β’を算出し、ハッシュ値H’とする。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、算出した自然数β’を表わす情報を出力する。
暗号文検証部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などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群GTと、入力した対応第三暗号文C3IDが表わす乗法群GTの要素vIDと、算出した整数rID,2+rID,3・β’とに基づいて、乗法群GTの要素vIDのrID,2+rID,3・β’乗である乗法群GTの要素vID^(rID,2+rID,3・β’)を算出する。
また、暗号文生成装置200の第二暗号文生成部242が算出した乗法群G1の要素uiは、ui=(g1・g^(−IDi))^siであり、暗号パラメータ生成装置100の公開パラメータ生成部113が算出した乗法群G1の要素g1は、g1=g^αであるから、ui=g^(si・(α−IDi))である。
また、暗号文生成装置200の第三暗号文生成部243が算出した乗法群GTの要素viは、vi=e(g,g2)^siである。
また、暗号パラメータ生成装置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となる。
暗号文復号部341は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わすペアリングeと、入力した秘密鍵dIDが表わす乗法群G2の要素hID,1と、入力した対応第二暗号文C2IDが表わす乗法群G1の要素uIDとに基づいて、乗法群G1の要素uIDと乗法群G2の要素hID,1とのペアリング値である乗法群GTの要素e(uID,hID,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などの処理装置を用いて、入力した対応第一暗号文C1IDと、算出した鍵ビット列k’とに基づいて、対応第一暗号文C1IDを鍵ビット列k’により復号したビット列を生成する。
一方、暗号文復号部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となる。
なお、実施の形態1で説明したパラメータ設定処理の工程と共通する工程については、同一の符号を付す。
秘密情報記憶部121は、磁気ディスク装置920などの記憶装置を用いて、秘密情報生成部112が生成した整数αを表わす情報を記憶する。
公開パラメータ生成部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とを表わす情報を、公開暗号パラメータとして記憶する。
公開パラメータ公開部114が公開した公開暗号パラメータは、暗号文生成装置200及び暗号文受信装置301〜303が取得し、暗号パラメータ記憶部210及び公開パラメータ記憶部310が磁気ディスク装置920などの記憶装置を用いて記憶する。
なお、実施の形態1で説明した秘密鍵設定処理の工程と共通する工程については、同一の符号を付す。
秘密鍵生成部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))を算出する。
秘密鍵通知部133が通知した秘密鍵dIDは、対応する暗号文受信装置が取得し、秘密鍵記憶部323が磁気ディスク装置920などの記憶装置を用いて記憶する。
なお、実施の形態1で説明した暗号文生成処理の工程と共通する工程については、同一の符号を付す。
第一暗号文生成部241は、CPU911などの処理装置を用いて、セッション鍵生成工程S33でセッション鍵生成部221が生成したセッション鍵K(=平文M)と、算出したn人の受信者にそれぞれ対応するn個の鍵ビット列kiとに基づいて、1つのセッション鍵Kをn人の受信者にそれぞれ対応するn個の鍵ビット列kiによりそれぞれ暗号化して、n人の受信者にそれぞれ対応するn個の第一暗号文C1iを生成する。
第二暗号文生成部242は、CPU911などの処理装置を用いて、算出したn人の受信者にそれぞれ対応するn個の乗法群G1の要素uiをそれぞれ表わすビット列を、n人の受信者にそれぞれ対応するn個の第二暗号文C2iとする。
第三暗号文生成部243は、CPU911などの処理装置を用いて、算出したn人の受信者にそれぞれ対応するn個の乗法群GTの要素viをそれぞれ表わすビット列を、n人の受信者にそれぞれ対応するn個の第三暗号文C3iとする。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わすハッシュ関数HFと、生成したn人の受信者にそれぞれ対応するn個の結合暗号文(C1i|C2i|C3i)とに基づいて、n人の受信者にそれぞれ対応するn個の結合暗号文(C1i|C2i|C3i)をそれぞれハッシュ関数HFにより変換したn人の受信者にそれぞれ対応するn個の整数βi=HF(C1i|C2i|C3i)を算出する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、算出したn人の受信者にそれぞれ対応するn個の乗法群GTの要素yiをそれぞれ表わすビット列を、n人の受信者にそれぞれ対応するn個の暗号文検証文CCiとする。
なお、実施の形態1で説明した暗号文受信処理の工程と共通する工程については、同一の符号を付す。
暗号文検証部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に整合性がないと判定し、暗号文受信処理を終了する。
暗号文復号部341は、CPU911などの処理装置を用いて、暗号文分解工程S52で暗号文分解部346が取得した1つの対応第一暗号文C1IDと、算出した1つの鍵ビット列k’とに基づいて、鍵ビット列k’により対応第一暗号文C1IDを復号して、所定の長さのビット列を生成し、セッション鍵K’(=平文M)とする。
上述したように、暗号文復号部341が生成するセッション鍵K’は、暗号文生成装置200のセッション鍵生成部221が生成したセッション鍵Kと同一のビット列となる。
なお、以下の証明においては、簡単のため、乗法群G1と乗法群G2とは同一の乗法群Gであるものとする。
乗法群Gの要素g及びg’は、ランダムに選択された乗法群Gの要素である。
乗法群Gの要素gi(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と等しいか否かを判別する問題に答える。
解答者Bのアドバンテージを、Advq−d−tabdhe k、G,GT(B)=|Pr[B(1k,I)=1:I←P]−Pr[B(1k,I)=1:I←R]|と定義する。ここで、B(1k,I)は、解答者Bの判断結果を表わし、「B(1k,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)≦εであるとき、(G,GT)で(t,ε,q)−D−tABDHE仮定(あるいは、単に、「q−D−tABDHE仮定」)が成り立つという。
また、q=qx+n+1であるとする。
以下、同様に、ゲームGλ(λは、1以上6以下の整数。)において、b=b’となる事象を、Tλと呼ぶ。
解答者Bは、1以上乗法群Gの位数r未満の整数αをランダムに生成する。
解答者Bは、0以上r未満のランダムな整数係数を有する3つのq次多項式fj(x)(jは、1以上3以下の整数。)を生成する。
解答者Bは、鍵生成関数KDFと、衝突困難なハッシュ関数HFとをランダムに生成する。
解答者Bは、乗法群Gの要素g1=g^αを算出する。
解答者Bは、3つの乗法群Gの要素h1=g^f1(α)、h2=g^f2(α)、h3=g^f3(α)を算出する。
解答者Bは、1以上r未満の整数s0をランダムに生成する。
解答者Bは、乗法群Gの要素g’=g^s0を算出する。
ここで、g、α、fj(x)、s0はランダムであるから、共通パラメータparamsの分布は、実際のPKG用鍵生成機能Sと同じ分布となる。
解答者Bは、入力したユーザの識別情報ID(整数として取り扱う)が整数αと等しい場合、拒絶する。これは、実際の暗号システムΠにおいても同様である。
解答者Bは、(q−1)次多項式FID,j(x)=(fj(x)−fj(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)を出力する。
解答者Bは、上述した手順で鍵導出オラクルOXをシミュレートして、秘密鍵dIDを生成する。
解答者Bは、生成した秘密鍵dIDに基づいて、実際の暗号システムΠと同様の手順により、暗号文Cを復号する。
解答者Bは、入力したユーザの識別情報ID*が整数αと等しい場合、実際の暗号システムΠと同様の手順により、暗号文Cを生成する。
解答者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を生成し、出力する。
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*である。
また、s*は、暗号化オラクルOEの呼び出しごとに独立ランダムなので、暗号文の分布も、実際の暗号システムΠと同一の分布を有する。
よって、ゲームG1における攻撃者Aのアドバンテージは、ゲームG0におけるアドバンテージと同じであり、Pr[T1]=Pr[T0]である。
解答者Bは、乗法群GTの要素Z=e(g,g’)^zを算出する。
すなわち、解答者Bは、q−D−tABDHE問題において与えられた乗法群Gの要素gを、PKG用鍵生成機能Sのシミュレートにおいて選択する乗法群Gの要素gとする。
また、解答者Bは、整数s0をランダムに生成する代わりに、q−D−tABDHE問題において与えられた乗法群Gの要素g’を、PKG用鍵生成機能Sのシミュレートにおいて算出する乗法群Gの要素g’(=g^s0)とする。
したがって、解答者Bは、αを知らなくても、PKG用鍵生成機能Sをシミュレートできる。
同様に、解答者Bは、αを知らなくても、鍵導出オラクルOX及び復号オラクルODをシミュレートできる。また、解答者Bは、乗法群GTの要素Zの算出を除いて、暗号化オラクルOEもシミュレートできる。
Z=(g,g’)^(α^(q+1))であれば、解答者Bは、ゲームG1を行っていることになる。
Z≠(g,g’)^(α^(q+1))であれば、解答者Bは、ゲームG2を行っていることになる。
解答者Bは、ゲーム内における攻撃者Aの挙動の違いからこれを判別し、Z=(g,g’)^(α^(q+1))であるか否かを判断して、与えられたq−D−tABDHE問題に答える。
また、鍵導出オラクルOXのシミュレートにおいて、解答者Bは、IDに対して、整数rID,jをランダムに生成し、乗法群Gの要素hID,1=(h1・g^(−rID,j))^(1/(α−ID)を算出する。hID,2、hID,3も同様に算出する。
解答者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・β*))を算出する。
成立した場合、解答者Bは、鍵ビット列k’=KDF(e(u,h1)^(1/(α−ID)))を算出し、メッセージを復号する。
判定方法が異なるので、実際の暗号システムΠでは拒絶されない暗号文を拒絶する場合がある。その事象をR4とすると、|Pr[T4]−Pr[T3]|≦Pr[R4]である。
解答者Bは、鍵ビット列k*=KDF(e(g,g)^r*)を算出する。
解答者Bは、暗号化オラクルOEが入力したメッセージM0 *、M1 *に関わりなく、算出した鍵ビット列k*を、そのまま暗号化したメッセージとする。
したがって、まずrID * ,1をランダムに生成し、それと整合するようにr*を算出するのと、まずr*をランダムに生成し、それと整合するようにrID * ,1を算出するのとでは、(g,h1,z’*,s*,M*)が固定されたときに(r*,rID * ,1)に対して同じ分布を与える。
したがって、攻撃者Aから見ると、ゲームG4とゲームG5とは同じに見える。
等しいhis* iがある場合、解答者Bは、そのhis* iに含まれる暗号文C* iのうち(暗号文検証文CC* iを除いた)暗号文主文CB* iにあたる部分と、入力した暗号文Cのうち(暗号文検証文CCを除いた)暗号文主文CBにあたる部分とを比較し、等しくなけば「拒絶」を返す。
(rID,2,rID,3)は、各IDに対してランダムなので、IDが暗号化オラクルOEに入力される前に、そのようなyを選択する確率は、1/r以下(rは、乗法群GTの位数)である。
また、ID=ID* iを暗号化オラクルに入力したあとにおいて、β=β* iであれば、追加した判定により拒絶される。したがって、β≠β* iであり、上記条件を満たすyを選択する確率は、やはり1/r以下である。
したがって、Pr[R6]≦qd/rが成立する。
実施の形態1で述べたように、連接方式により複数受信者に拡張した暗号方式のSMMR安全性はAdvsmmr n,Π’,Γ(t,qd,qx)≦Advmu n,Π,Γ(t,1,qd,qx)なので、この実施の形態における対比例であるIDベース暗号方式のSMMR安全性は、Advsmmr n,Π’,Γ(t,qd,qx)≦Advq−d−tabdhe k,G,GT(t1)+Advcr H(t2)+(qd+3)/rである。
すなわち、この実施の形態における対比例であるIDベース暗号方式は、一般の場合と比較して、SMMR安全性が、数学的な問題にタイトに帰着する(帰着効率がよい)。
このように、この実施の形態における対比例であるIDベース暗号方式は、よりよい安全性証明をすることできる。
この実施の形態におけるIDベース暗号通信システム800の全体構成及び暗号パラメータ生成装置100のブロック構成は、対比例で説明したものと同様なので、ここでは説明を省略する。
この実施の形態におけるIDベース暗号通信システム800は、対比例で説明した複数受信者IDベース暗号方式を、ハッシュ値共通化により効率化したものである。
暗号文生成装置200のブロック構成は、対比例で説明したものと同様なので、図4を用いて、対比例と異なる部分について説明する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、暗号文主文生成部240が出力したn個の暗号文主文CBiとして、第一暗号文生成部241が出力したn個の第一暗号文C1iと、第二暗号文生成部242出力したn個の第二暗号文C2iと、第三暗号文生成部243が出力したn個の第三暗号文C3iとを入力する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、入力したn個の第一暗号文C1iと、n個の第二暗号文C2iと、n個の第三暗号文C3iとをすべて結合して、1つの結合暗号文を生成する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、算出した1つの自然数β0を表わす情報と、生成した1つの結合暗号文とを出力する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わすペアリングeと、乗法群G1の要素gと、乗法群G2の要素h3とに基づいて、乗法群G1の要素gと乗法群G2の要素h3とのペアリング値である乗法群GTの要素e(g,h3)を算出する。
なお、乗法群GTの要素e(g,h2)及び乗法群GTの要素e(g,h3)は、整数siにかかわらず一定なので、前もって算出し、磁気ディスク装置920などの記憶装置を用いて記憶しておいてもよい。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群GTと、算出した乗法群GTの要素e(g,h2)と、算出した1つの乗法群GTの要素e(g,h3)^β0とに基づいて、乗法群GTの要素e(g,h2)と乗法群GTの要素e(g,h3)^β0との積である1つの乗法群GTの要素e(g,h2)・e(g,h3)^β0を算出する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、算出したn個の乗法群GTの要素yiをそれぞれ表わすn個のビット列を、n個の暗号文検証文CCi(iは、1以上n以下の整数。)として出力する。
暗号文結合部246は、CPU911などの処理装置を用いて、入力した1つの結合暗号文と、入力したn個の暗号文検証文とをすべて結合して、1つの鍵暗号文Cを生成する。
暗号文結合部246は、CPU911などの処理装置を用いて、生成した1つの鍵暗号文Cを出力する。
乱数生成部222は、受信者識別入力部232が入力した受信者識別情報ID1、ID2、…、IDnの数と同じ数であるn個の整数s1、s2、…、snを生成する。
第一暗号文生成部241は、平文Mと整数s1とに基づいて第一暗号文C11を生成し、平文Mと整数s2とに基づいて第一暗号文C12を生成し、…、平文Mと整数snとに基づいて第一暗号文C1nを生成する。
第二暗号文生成部242は、受信者識別情報ID1と整数s1とに基づいて第二暗号文C21を生成し、受信者識別情報ID2と整数s2とに基づいて第二暗号文C22を生成し、…、受信者識別情報IDnと整数snとに基づいて第二暗号文C2nを生成する。
第三暗号文生成部243は、整数s1に基づいて第三暗号文C31を生成し、整数s2に基づいて第三暗号文C32を生成し、…、整数snに基づいて第三暗号文C3nを生成する。
ここまでの流れは、対比例と同様である。
ハッシュ値算出部244は、生成した1つの結合暗号文(C11|C21|C31|C12|C22|C32|…|C1n|C2n|C3n)に基づいて、1つのハッシュ値H0を算出する。
暗号文検証文生成部245は、整数s1とハッシュ値H0とに基づいて暗号文検証文CC1を生成し、整数s2とハッシュ値H0とに基づいて暗号文検証文CC2を生成し、…、整数snとハッシュ値H0とに基づいて暗号文検証文CCnを生成する。
なお、この例では、ハッシュ値算出部244が生成した結合暗号文をそのまま利用するため、暗号文の結合順序が対比例と異なっているが、暗号文の結合順序はこの順序に限らない。対比例で説明したのと同じ順序であってもよいし、他の順序であってもよい。
暗号文受信装置301〜303のブロック構成も、対比例で説明したものと同様なので、図6を用いて、対比例と異なる部分について説明する。
暗号文分解部346は、CPU911などの処理装置を用いて、入力した1つの鍵暗号文Cから、自身が対応する受信者に対応する対応第一暗号文C1IDと、対応第二暗号文C2IDと、対応第三暗号文C3IDと、対応暗号文検証文CCIDとを取得する。
暗号文分解部346は、CPU911などの処理装置を用いて、取得した対応第一暗号文C1IDと、対応第二暗号文C2IDと、対応第三暗号文C3IDと、対応暗号文検証文CCIDとを出力する。
暗号文分解部346は、例えば、1つの鍵暗号文Cを、第一暗号文〜第三暗号文のビット長の和のn倍と、暗号文検証文のビット長のn倍とに分割して、検証結合暗号文(C11|C21|C31|C12|C22|C32|…|C1n|C2n|C3n)と、結合暗号文検証文(CC1|CC2|…|CCn)とを取得する。
暗号文分解部346は、検証結合暗号文(C11|C21|C31|C12|C22|C32|…|C1n|C2n|C3n)を更に分割して、(C11|C21|C31)、(C12|C22|C32)、…、(C1n|C2n|C3n)とし、そのなかから、自分に対応する対応暗号文(C1ID|C2ID|C3ID)を取得する。
暗号文分解部346は、取得した対応暗号文(C1ID|C2ID|C3ID)を分割して、対応第一暗号文C1IDと、対応第二暗号文C2IDと、対応第三暗号文C3IDとを取得する。
また、暗号文分解部346は、取得した結合暗号文検証文(CC1|CC2|…|CCn)を分割して、CC1、CC2、…、CCnとし、そのなかから、自分に対応する対応暗号文検証文CCIDを取得する。
暗号文分解部346は、取得した対応第一暗号文C1IDと、対応第二暗号文C2IDと、対応第三暗号文C3IDと、対応暗号文検証文CCIDとを出力する。
また、この例では、検証ハッシュ値算出部344が検証結合暗号文(C11|C21|C31|C12|C22|C32|…|C1n|C2n|C3n)を生成する手間を省くため、暗号文分解部346は、CPU911などの処理装置を用いて、取得した検証結合暗号文(C11|C21|C31|C12|C22|C32|…|C1n|C2n|C3n)も、あわせて出力する。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わすハッシュ関数HFと、入力あるいは生成した検証結合暗号文(C11|C21|C31|C12|C22|C32|…|C1n|C2n|C3n)とに基づいて、検証結合暗号文(C11|C21|C31|C12|C22|C32|…|C1n|C2n|C3n)をハッシュ関数HFにより変換した自然数β’を算出し、ハッシュ値H’とする。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、算出した自然数β’を表わす情報を出力する。
なお、対比例で説明した暗号文生成処理の工程と共通する工程については、同一の符号を付す。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わすハッシュ関数HFと、生成した1つの結合暗号文(C11|C21|C31|C12|C22|C32|…|C1n|C2n|C3n)とに基づいて、1つの結合暗号文(C11|C21|C31|C12|C22|C32|…|C1n|C2n|C3n)をハッシュ関数HFにより変換した1つの整数β0=HF(C11|C21|C31|C12|C22|C32|…|C1n|C2n|C3n)を算出する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、算出したn人の受信者にそれぞれ対応するn個の乗法群GTの要素yiをそれぞれ表わすビット列を、n人の受信者にそれぞれ対応するn個の暗号文検証文CCiとする。
なお、対比例で説明した暗号文受信処理の工程と共通する工程については、同一の符号を付す。
特に、ハッシュ値算出工程S38において、対比例で説明した方式の場合、n回のハッシュ値計算が必要だが、この方式の場合、1回のハッシュ値計算で済む。
また、暗号文検証文生成工程S39において、対比例で説明した方式の場合、2n回の乗法群GTにおける冪乗算と、n回の乗法群GTにおける乗算とが必要だが、この方式の場合、(n+1)回の乗法群GTにおける冪乗算と、1回の乗法群GTにおける乗算とをすればよく、受信者の人数が多い場合に、計算量を大幅に削減できる。
なお、以下の説明では、暗号文主文CBiに、それに対応する受信者を識別する受信者識別情報IDiが含まれているものとする。
ここでは、証明のうち共通する部分についての説明は省略し、異なる部分を説明する。
ここで、(分節された)暗号文CIDは、n個の暗号文主文CBiと、n個の暗号文主文CBiのうちそのIDに対応する対応暗号文主文CBIDがどれであるかを示す情報と、対応暗号文検証文CCIDとからなる。
復号オラクルOD’は、入力した情報が示す対応暗号文主文CBIDと、入力した対応暗号文検証文CCIDと、算出したハッシュ値β’と、鍵導出機能X’により生成した秘密鍵dIDとに基づいて、暗号文を検証する。
検証に失敗した場合、復号オラクルOD’は、「拒絶」を返す。
検証に成功した場合、復号オラクルOD’は、復号処理をして、復号したメッセージを返す。
等しい場合、解答者Bは、保持したID*のなかに、入力したIDと等しいID* iがあるか判定し、入力したIDと等しいID* iがある場合、保持したn個の暗号文主文CB*のうち、そのID* iに対応する暗号文主文CB* iと、入力した情報が示す対応暗号文主文CBIDとを比較し、等しくなければ「拒絶」を返す。
暗号パラメータ記憶部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個の整数IDiをn個の受信者識別情報として入力することを特徴とする。
乱数生成部222は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす自然数rに基づいて、n人の受信者に対応するn個の1以上自然数r未満の整数si(iは、1以上n以下の整数。)をランダムに生成することを特徴とする。
第一暗号文生成部241は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素h1とペアリングeと、鍵生成関数KDFと、乱数生成部222が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の鍵ビット列ki=KDF(e(g,h1)^si)(iは、1以上n以下の整数。)を算出し、CPU911などの処理装置を用いて、算出したn個の鍵ビット列kiにより、平文入力部231が入力した平文Mをそれぞれ暗号化して、n人の受信者に対応するn個の第一暗号文C1i(iは、1以上n以下の整数。)とすることを特徴とする。
第二暗号文生成部242は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす乗法群G1の要素gと、乗法群G1の要素g1と、受信者識別入力部232が入力したn個の整数IDiと、乱数生成部222が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の乗法群G1の要素ui=(g1・g^−IDi)^si(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G1の要素uiをそれぞれ表わすビット列を、n人の受信者に対応するn個の第二暗号文C2i(iは、1以上n以下の整数。)とすることを特徴とする。
第三暗号文生成部243は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素g2とペアリングeと、乱数生成部222が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の乗法群GTの要素vi=e(g,g2)^si(iは、1以上n以下の整数。)を算出し、算出した乗法群GTの要素viをそれぞれ表わすビット列を、n人の受信者に対応するn個の第三暗号文C3i(iは、1以上n以下の整数。)とすることを特徴とする。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わすハッシュ関数HFに基づいて、1つの自然数β0を算出して、ハッシュ値H0とすることを特徴とする。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素h2と乗法群G2の要素h3とペアリングeと、乱数生成部222が生成したn個の整数siと、ハッシュ値算出部244が算出した1つの自然数β0とに基づいて、n人の受信者に対応するn個の乗法群GTの要素yi=e(g,h2)^si・e(g,h3)^(si・β0)(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群GTの要素yiをそれぞれ表わすビット列を、n人の受信者に対応するn個の暗号文検証文CCi(iは、1以上n以下の整数。)とすることを特徴とする。
暗号パラメータ生成装置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個の整数IDiをn個の受信者識別情報として入力することを特徴とする。
乱数生成部222は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす自然数rに基づいて、n人の受信者に対応するn個の1以上自然数r未満の整数si(iは、1以上n以下の整数。)をランダムに生成することを特徴とする。
第一暗号文生成部241は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素h1とペアリングeと、鍵生成関数KDFと、乱数生成部222が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の鍵ビット列ki=KDF(e(g,h1)^si)(iは、1以上n以下の整数。)を算出し、CPU911などの処理装置を用いて、算出したn個の鍵ビット列kiにより、平文入力部231が入力した平文Mをそれぞれ暗号化して、n人の受信者に対応するn個の第一暗号文C1i(iは、1以上n以下の整数。)とすることを特徴とする。
第二暗号文生成部242は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす乗法群G1の要素gと、乗法群G1の要素g1と、受信者識別入力部232が入力したn個の整数IDiと、乱数生成部222が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の乗法群G1の要素ui=(g1・g^−IDi)^si(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G1の要素uiをそれぞれ表わすビット列を、n人の受信者に対応するn個の第二暗号文C2i(iは、1以上n以下の整数。)とすることを特徴とする。
第三暗号文生成部243は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素g2とペアリングeと、乱数生成部222が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の乗法群GTの要素vi=e(g,g2)^si(iは、1以上n以下の整数。)を算出し、算出した乗法群GTの要素viをそれぞれ表わすビット列を、n人の受信者に対応するn個の第三暗号文C3i(iは、1以上n以下の整数。)とすることを特徴とする。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わすハッシュ関数HFに基づいて、1つの自然数β0を算出して、ハッシュ値H0とすることを特徴とする。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素h2と乗法群G2の要素h3とペアリングeと、乱数生成部222が生成したn個の整数siと、ハッシュ値算出部244が算出した1つの自然数β0とに基づいて、n人の受信者に対応するn個の乗法群GTの要素yi=e(g,h2)^si・e(g,h3)^(si・β0)(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群GTの要素yiをそれぞれ表わすビット列を、n人の受信者に対応するn個の暗号文検証文CCi(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を復元することを特徴とする。
実施の形態3について、図18〜図24を用いて説明する。
暗号パラメータ生成装置100のブロック構成は、実施の形態1で説明したものと同様なので、図4を用いて、実施の形態1と異なる部分について説明する。
自然数rは、DH問題を解くことが困難な大素数である。
乗法群G1及び乗法群G2及び乗法群GTは、位数が自然数rである乗法群である。
なお、乗法群G1と乗法群G2とは、同じ乗法群でもよいし、異なる乗法群でもよい。乗法群G1と乗法群G2とが同じ乗法群である場合には、群パラメータ記憶部111は、乗法群G2を表わす情報を記憶しなくてもよい。
秘密情報生成部112は、CPU911などの処理装置を用いて、入力した群パラメータが表わす自然数rに基づいて、1以上自然数r未満の整数αをランダムに生成する。
秘密情報生成部112は、CPU911などの処理装置を用いて、生成した整数αを表わす情報を出力する。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、入力した群パラメータが表わす乗法群GTに基づいて、鍵生成関数KDFを決定する。
鍵生成関数KDFは、乗法群GTの要素から、所定の長さのビット列を算出する関数である。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、ハッシュ関数HFを決定する。
ハッシュ関数HFは、任意の長さのビット列から、所定の長さのビット列を算出する関数である。なお、ハッシュ関数HFは、異なるビット列から同じビット列を算出する確率が極めて低いものとする。
以下、ハッシュ関数HFが出力するビット列の長さは、mビットであるものとする。
関数V1及びV2は、所定の長さのビット列から、乗法群G2の要素を算出する関数である。
関数V1及びV2が入力するビット列の長さは、ハッシュ関数HFが出力するビット列の長さと等しく、mビットである。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、入力した群パラメータが表わす乗法群G2に基づいて、(m1+2)個の乗法群G2の要素h1、h2、…、hm1、h1’、h2’をランダムに選択する。
関数V1及びV2の入力となるmビットのビット列をID=(ν1|ν2|…|νm1)(νξ(ξは、1以上m1以下の整数。)は、m2ビットのビット列。)とする。
関数V1は、νξを0以上2m2未満の整数と解釈して、公開パラメータ生成部113が選択した(m1+1)個の乗法群G2の要素h1、h2、…、hm1、h1’に基づいて、乗法群G2の要素h1のν1乗と、乗法群G2の要素h2のν2乗と、…、乗法群G2の要素hm1のνm1乗と、乗法群G2の要素h1’との総積である乗法群G2の要素h1’・Π(hξ^νξ)(ξは、1以上m1以下の整数。)を、関数V1が出力する乗法群G2の要素V1(ID)とするものと定義する。
関数V2も同様に、公開パラメータ生成部113が選択した(m1+1)個の乗法群G2の要素h1、h2、…、hm1、h2’に基づいて、乗法群G2の要素h1のν1乗と、乗法群G2の要素h2のν2乗と、…、乗法群G2の要素hm1のνm1乗と、乗法群G2の要素h2’との総積である乗法群G2の要素h2’・Π(hξ^νξ)(ξは、1以上m1以下の整数。)を、関数V2が出力する乗法群G2の要素V2(ID)とするものと定義する。
公開パラメータ生成部113は、関数V1及びV2を計算するために必要な(m1+2)個の乗法群G2の要素h1、h2、…、hm1、h1’、h2’を選択することにより、関数V1及びV2を決定する。
公開パラメータ生成部113は、CPU911などの処理装置を用いて、入力した群パラメータが表わす乗法群G2に基づいて、乗法群G2の要素g2をランダムに選択する。
ただし、乗法群G1の要素gと乗法群G2の要素g2とのペアリング値である乗法群GTの要素e(g,g2)が乗法群GTの単位元とならないように、乗法群G1の要素gと乗法群G2の要素g2とを選択する。
なお、乗法群G1と乗法群G2とが同じ乗法群である場合には、乗法群G1の要素gと乗法群G2の要素g2とは、異なる要素を選択する。
なお、公開暗号パラメータは、関数V1及びV2を表わす情報として、(m1+2)個の乗法群G2の要素h1、h2、…、hm1、h1’、h2’を表わす情報を含む。
秘密情報生成部112は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群G2と乗法群G2の要素g2と、生成した整数αとに基づいて、乗法群G2の要素g2のα乗である乗法群G2の要素g2^αを算出する。
秘密情報生成部112は、CPU911などの処理装置を用いて、算出した乗法群G2の要素g2^αを表わす情報を出力する。
秘密情報記憶部121は、磁気ディスク装置920などの記憶装置を用いて、入力した乗法群G2の要素msk=g2^αを表わす情報を記憶する。
以下の説明において、暗号パラメータ生成装置100は、受信者識別情報IDをmビットのビット列として取り扱う。
例えば、暗号パラメータ生成装置100は、メールアドレスなどの任意の長さのビット列にパディングビット列を付加することにより、mビットのビット列とし、受信者識別情報とする。
あるいは、暗号パラメータ生成装置100は、メールアドレスなどの任意の長さのビット列を、ハッシュ関数(公開パラメータ生成部113が決定したハッシュ関数HFと同じハッシュ関数であってもよいし、異なるハッシュ関数であってもよい。)の入力とし、ハッシュ関数により算出したmビットのビット列を取得して、受信者識別情報としてもよい。
識別情報入力部131は、CPU911などの処理装置を用いて、入力したmビットのビット列IDを出力する。
秘密鍵生成部132は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす自然数rに基づいて、整数rIDをランダムに生成する。整数rIDは、1以上r未満の整数である。
秘密鍵生成部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などの処理装置を用いて、算出した乗法群G2の要素d0IDと、算出した乗法群G1の要素d1IDとを表わす情報を、秘密鍵dIDとして出力する。
暗号文生成装置200の機能ブロックの構成も、実施の形態1で説明したものと同様なので、図5を用いて、実施の形態1と異なる部分について説明する。
受信者識別入力部232は、CPU911などの処理装置を用いて、入力したn個のmビットのビット列IDiを出力する。
乱数生成部222は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす自然数rに基づいて、n人の受信者にそれぞれ対応するn個の1以上自然数r未満の整数si(iは、1以上n以下の整数。)をランダムに生成する。
乱数生成部222は、CPU911などの処理装置を用いて、生成したn個の整数siを表わす情報を出力する。
なお、乗法群GTの要素e(g1,g2)は、整数siや平文Mにかかわらず一定なので、前もって算出し、磁気ディスク装置920などの記憶装置を用いて記憶しておいてもよい。
第一暗号文生成部241は、CPU911などの処理装置を用いて、生成したn個の第一暗号文C1iを出力する。
第二暗号文生成部242は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす関数V1と、入力したn個のmビットのビット列IDiとに基づいて、mビットのビット列IDiを関数V1により変換したn個の乗法群G2の要素V1(IDi)(iは、1以上n以下の整数。)を算出する。
第二暗号文生成部242は、CPU911などの処理装置を用いて、入力したn個のmビットのビット列IDiそれぞれを、m1個のm2ビットのビット列νiξ(iは、1以上n以下の整数。ξは、1以上m1以下の整数。m=m1・m2。)に分解する。結果として、分解したm2ビットのビット列νiξの数は、全部でn・m1個になる。以下の説明では、煩雑さを避けるため、1つのmビットのビット列IDiについて、関数V1の値V1(IDi)を計算する手順を述べる。
第二暗号文生成部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(IDi)とする。
第二暗号文生成部242は、CPU911などの処理装置を用いて、算出したn個の乗法群G2の要素uiをそれぞれ表わすn個のビット列を、n個の第二暗号文C2i(iは、1以上n以下の整数。)として出力する。
第三暗号文生成部243は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす乗法群G1と乗法群G1の要素gと、入力した情報が表わすn個の整数siとに基づいて、乗法群G1の要素gのsi乗であるn個の乗法群G1の要素vi=g^si(iは、1以上n以下の整数。)を算出する。
第三暗号文生成部243は、CPU911などの処理装置を用いて、算出したn個の乗法群G1の要素viをそれぞれ表わすn個のビット列を、n個の第三暗号文C3i(iは、1以上n以下の整数。)として出力する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、暗号文主文生成部240が出力したn個の暗号文主文CBiとして、第一暗号文生成部241が出力したn個の第一暗号文C1iと、第二暗号文生成部242が出力したn個の第二暗号文C2iと、第三暗号文生成部243が出力したn個の第三暗号文C3iとを入力する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、入力したn個の第一暗号文C1iと、n個の第二暗号文C2iと、n個の第三暗号文C3iとをそれぞれ結合して、n個の結合暗号文を生成する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、算出したn個のmビットのビット列wiを表わす情報と、生成したn個の結合暗号文とを出力する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす関数V2と、入力したn個のmビットのビット列wiとに基づいて、mビットのビット列wiを関数V2によりそれぞれ変換したn個の乗法群G2の要素V2(wi)(iは、1以上n以下の整数。)を算出する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、入力したn個のmビットのビット列wiそれぞれを、m1個のm2ビットのビット列νiξ(iは、1以上n以下の整数。ξは、1以上m1以下の整数。m=m1・m2。)に分解する。結果として、分解したm2ビットのビット列νiξの数は、全部でn・m1個になる。以下の説明では、1つのmビットのビット列wiについて、関数V2の値V2(wi)を計算する手順を述べる。
暗号文検証文生成部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(IDi)とする。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、算出したn個の乗法群G2の要素yiをそれぞれ表わすn個のビット列を、n個の暗号文検証文CCi(iは、1以上n以下の整数。)として出力する。
暗号文結合部246は、CPU911などの処理装置を用いて、入力したn個の結合暗号文と、入力したn個の暗号文検証文とをすべて結合して、1つの鍵暗号文Cを生成する。
暗号文結合部246は、CPU911などの処理装置を用いて、生成した1つの鍵暗号文Cを出力する。
暗号文受信装置301〜303の機能ブロックの構成も、実施の形態1で説明したものと同様なので、図6を用いて、実施の形態1と異なる部分について説明する。
暗号文分解部346は、CPU911などの処理装置を用いて、入力した1つの鍵暗号文Cから、自身が対応する受信者に対応する対応第一暗号文C1IDと、対応第二暗号文C2IDと、対応第三暗号文C3IDと、対応暗号文検証文CCIDとを取得する。
暗号文分解部346は、CPU911などの処理装置を用いて、取得した対応第一暗号文C1IDと、対応第二暗号文C2IDと、対応第三暗号文C3IDと、対応暗号文検証文CCIDとを出力する。
また、暗号文分解部346は、CPU911などの処理装置を用いて、検証結合暗号文(C1ID|C2ID|C3ID)を取得し、出力してもよい。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、入力した対応第一暗号文C1IDと、対応第二暗号文C2IDと、対応第三暗号文C3IDとを結合して、検証結合暗号文(C1ID|C2ID|C3ID)を生成する。
あるいは、検証ハッシュ値算出部344は、検証結合暗号文(C1ID|C2ID|C3ID)を生成する代わりに、暗号文分解部346が出力した検証結合暗号文(C1ID|C2ID|C3ID)を入力してもよい。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わすハッシュ関数HFと、生成あるいは入力した検証結合暗号文(C1ID|C2ID|C3ID)とに基づいて、検証結合暗号文(C1ID|C2ID|C3ID)をハッシュ関数HFにより変換したmビットのビット列w’を算出し、ハッシュ値H’とする。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、算出したmビットのビット列w’を表わす情報を出力する。
なお、暗号文検証部345が関数V1を計算する手順は、例えば、上記説明した暗号文生成装置200の第二暗号文生成部242が関数V1を計算する手順と同様なので、ここでは説明を省略する。
暗号文検証部345は、CPU911などの処理装置を用いて、算出した乗法群GTの要素e(vID,V1(ID))と、算出した乗法群GTの要素e(g,uID)とを比較し、一致しない場合に、暗号文受信部351が入力した1つの鍵暗号文Cに整合性がないと判定する。
なお、暗号文検証部345が関数V2を計算する手順は、例えば、上記説明した暗号文生成装置200の暗号文検証文生成部245が関数V2を計算する手順と同様なので、ここでは説明を省略する。
暗号文検証部345は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わすペアリングeと乗法群G1の要素gと、入力した対応暗号文検証文CCIDが表わす乗法群G2の要素yIDとに基づいて、乗法群G1の要素gと乗法群G2の要素yIDとのペアリング値である乗法群GTの要素e(g,yID)を算出する。
また、yID=V2(wID)^sIDなので、w’=wIDなら、e(vID,V2(w’)=e(g,yID)=e(g,V2(wID))^sIDとなる。
暗号文復号部341は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わすペアリングeと、入力した秘密鍵dIDが表わす乗法群G2の要素d0IDと、入力した対応第三暗号文C3IDが表わす乗法群G1の要素vIDとに基づいて、乗法群G1の要素vIDと乗法群G2の要素d0IDとのペアリング値である乗法群GTの要素e(vID,d0ID)を算出する。
ここで、乗法群GTの要素e(d1ID,uID)の逆数とは、乗法群GTにおける逆数を意味する。すなわち、乗法群GTの要素e(dID,2,uID)の逆数とは、乗法群GTの要素e(d1ID,uID)との積が乗法群GTの単位元となる乗法群GTの要素のことである。
暗号文復号部341は、CPU911などの処理装置を用いて、入力した対応第一暗号文C1IDと、算出した鍵ビット列k’とに基づいて、対応第一暗号文C1IDを鍵ビット列k’により復号したビット列を生成する。
一方、暗号文復号部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となる。
なお、実施の形態1で説明したパラメータ設定処理の工程と共通する工程については、同一の符号を付す。
公開パラメータ生成部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とを表わす情報を、公開暗号パラメータとして記憶する。
秘密情報記憶部121は、磁気ディスク装置920などの記憶装置を用いて、秘密情報生成部112が算出した乗法群G2の要素mskを表わす情報を記憶する。
公開パラメータ公開部114が公開した公開暗号パラメータは、暗号文生成装置200及び暗号文受信装置301〜303が取得し、暗号パラメータ記憶部210及び公開パラメータ記憶部310が磁気ディスク装置920などの記憶装置を用いて記憶する。
なお、実施の形態1で説明した秘密鍵設定処理の工程と共通する工程については、同一の符号を付す。
秘密鍵生成部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が通知した秘密鍵dIDは、対応する暗号文受信装置が取得し、秘密鍵記憶部323が磁気ディスク装置920などの記憶装置を用いて記憶する。
なお、実施の形態1で説明した暗号文生成処理の工程と共通する工程については、同一の符号を付す。
第一暗号文生成部241は、CPU911などの処理装置を用いて、セッション鍵生成工程S33でセッション鍵生成部221が生成したセッション鍵K(=平文M)と、算出したn人の受信者にそれぞれ対応するn個の鍵ビット列kiとに基づいて、1つのセッション鍵Kをn人の受信者にそれぞれ対応するn個の鍵ビット列kiによりそれぞれ暗号化して、n人の受信者にそれぞれ対応するn個の第一暗号文C1iを生成する。
第二暗号文生成部242は、CPU911などの処理装置を用いて、算出したn人の受信者にそれぞれ対応するn個の乗法群G2の要素uiをそれぞれ表わすビット列を、n人の受信者にそれぞれ対応するn個の第二暗号文C2iとする。
第三暗号文生成部243は、CPU911などの処理装置を用いて、算出したn人の受信者にそれぞれ対応するn個の乗法群G1の要素viをそれぞれ表わすビット列を、n人の受信者にそれぞれ対応するn個の第三暗号文C3iとする。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わすハッシュ関数HFと、生成したn人の受信者にそれぞれ対応するn個の結合暗号文(C1i|C2i|C3i)とに基づいて、n人の受信者にそれぞれ対応するn個の結合暗号文(C1i|C2i|C3i)をそれぞれハッシュ関数HFにより変換したn人の受信者にそれぞれ対応するn個のmビットのビット列wi=HF(C1i|C2i|C3i)を算出する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、算出したn人の受信者にそれぞれ対応するn個の乗法群G2の要素yiをそれぞれ表わすビット列を、n人の受信者にそれぞれ対応するn個の暗号文検証文CCiとする。
なお、実施の形態1で説明した暗号文受信処理の工程と共通する工程については、同一の符号を付す。
暗号文検証部345は、CPU911などの処理装置を用いて、公開パラメータ記憶部310が記憶した公開暗号パラメータが表わすペアリングeと乗法群G1の要素gと、暗号文分解工程S52で暗号文分解部346が取得した1つの対応第二暗号文C2IDが表わす1つの乗法群G2の要素uIDとに基づいて、1つの乗法群GTの要素e(g,uID)を算出する。
暗号文検証部345は、CPU911などの処理装置を用いて、公開パラメータ記憶部310が記憶した公開暗号パラメータが表わすペアリングeと乗法群G1の要素gと、暗号文分解工程S52で暗号文分解部346が取得した1つの対応暗号文検証文CCIDが表わす1つの乗法群G2の要素yIDとに基づいて、1つの乗法群GTの要素e(g,yID)を算出する。
2つの等式が成立する場合、暗号文検証部345は、暗号文受信部351が受信した1つの鍵暗号文Cに整合性があると判定し、暗号文復号工程S55へ進む。
いずれかまたは両方の等式が成立しない場合、暗号文検証部345は、暗号文受信部351が受信した1つの鍵暗号文Cに整合性がないと判定し、暗号文受信処理を終了する。
暗号文復号部341は、CPU911などの処理装置を用いて、暗号文分解工程S52で暗号文分解部346が取得した1つの対応第一暗号文C1IDと、算出した1つの鍵ビット列k’とに基づいて、鍵ビット列k’により対応第一暗号文C1IDを復号して、所定の長さのビット列を生成し、セッション鍵K’(=平文M)とする。
上述したように、暗号文復号部341が生成するセッション鍵K’は、暗号文生成装置200のセッション鍵生成部221が生成したセッション鍵Kと同一のビット列となる。
ここで、Advmu 1,Π,Γ(t’,1,qd,qx)は、この実施の形態における対比例である複数受信者のIDベース暗号方式のもととなっている単独受信者のIDベース暗号方式の従来の意味における安全性を表わす。
ここで、D−BDH問題とは、以下に定義する数学的な問題である。
乗法群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と等しいか否かを判別する問題に答える。
この実施の形態におけるIDベース暗号通信システム800の全体構成及び暗号パラメータ生成装置100のブロック構成は、対比例で説明したものと同様なので、ここでは説明を省略する。
暗号文生成装置200のブロック構成は、対比例で説明したものと同様なので、図4を用いて、対比例と異なる部分について説明する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、入力したn個の第一暗号文C1iと、n個の第二暗号文C2iと、n個の第三暗号文C3iとをすべて結合して、1つの結合暗号文を生成する。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、算出した1つのmビットのビット列w0を表わす情報と、生成した1つの結合暗号文とを出力する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わす関数V2と、入力した情報が表わす1つのmビットのビット列w0とに基づいて、mビットのビット列w0を関数V2により変換した1つの乗法群G2の要素V2(w0)を算出する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、算出したn個の乗法群G2の要素yiをそれぞれ表わすn個のビット列を、n個の暗号文検証文CCi(iは、1以上n以下の整数。)として出力する。
暗号文結合部246は、CPU911などの処理装置を用いて、入力した1つの結合暗号文と、入力したn個の暗号文検証文とをすべて結合して、1つの鍵暗号文Cを生成する。
暗号文結合部246は、CPU911などの処理装置を用いて、生成した1つの鍵暗号文Cを出力する。
暗号文受信装置301〜303のブロック構成も、対比例で説明したものと同様なので、図6を用いて、対比例と異なる部分について説明する。
暗号文分解部346は、CPU911などの処理装置を用いて、入力した1つの鍵暗号文Cから、自身が対応する受信者に対応する対応第一暗号文C1IDと、対応第二暗号文C2IDと、対応第三暗号文C3IDと、対応暗号文検証文CCIDとを取得する。
暗号文分解部346は、CPU911などの処理装置を用いて、取得した対応第一暗号文C1IDと、対応第二暗号文C2IDと、対応第三暗号文C3IDと、対応暗号文検証文CCIDとを出力する。
暗号文分解部346は、また、CPU911などの処理装置を用いて、1つの鍵暗号文Cから、検証結合暗号文(C11|C21|C31|C12|C22|C32|…|C1n|C2n|C3n)を取得し、出力する。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、入力した公開暗号パラメータが表わすハッシュ関数HFと、入力あるいは生成した検証結合暗号文(C11|C21|C31|C12|C22|C32|…|C1n|C2n|C3n)とに基づいて、検証結合暗号文(C11|C21|C31|C12|C22|C32|…|C1n|C2n|C3n)をハッシュ関数HFにより変換したmビットのビット列w’を算出し、ハッシュ値H’とする。
検証ハッシュ値算出部344は、CPU911などの処理装置を用いて、算出したmビットのビット列w’を表わす情報を出力する。
なお、対比例で説明した暗号文生成処理の工程と共通する工程については、同一の符号を付す。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わすハッシュ関数HFと、生成した1つの結合暗号文(C11|C21|C31|C12|C22|C32|…|C1n|C2n|C3n)とに基づいて、1つの結合暗号文(C11|C21|C31|C12|C22|C32|…|C1n|C2n|C3n)をハッシュ関数HFにより変換した1つのmビットのビット列w0=HF(C11|C21|C31|C12|C22|C32|…|C1n|C2n|C3n)を算出する。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、算出したn人の受信者にそれぞれ対応するn個の乗法群G2の要素yiをそれぞれ表わすビット列を、n人の受信者にそれぞれ対応するn個の暗号文検証文CCiとする。
なお、対比例で説明した暗号文受信処理の工程と共通する工程については、同一の符号を付す。
特に、ハッシュ値算出工程S38において、対比例で説明した方式の場合、n回のハッシュ値計算が必要だが、この方式の場合、1回のハッシュ値計算で済む。
また、暗号文検証文生成工程S39において、関数V2の計算が必要になる。関数V2を対比例で説明した手順で計算するものとすると、関数V2を1回計算するために、m1回の乗法群G2における冪乗算と、m1回の乗法群G2における乗算とが必要になる。対比例で説明した方式の場合、関数V2をn回計算する必要があるのに対し、この方式の場合、関数V2を1回計算すればよく、受信者の人数が多い場合に、計算量を大幅に削減できる。
なお、以下の説明では、暗号文主文CBiに、それに対応する受信者を識別する受信者識別情報IDiが含まれているものとする。
ID* jが、シミュレート可能なIDである場合、解答者Bは、1≦i<jであるiについて、M* 0を選択して暗号文主文CBiを生成し、j<i≦nであるiについて、M* 1を選択して暗号文主文CBiを生成し、i=jであるiについて、与えられたD−BDH問題のパラメータを使ったシミュレートにより、暗号文主文CBiを生成する。
解答者Bは、生成したn個の暗号文主文CBi(iは、1以上n以下の整数。)を結合して、ハッシュ値w* 0を算出する。
解答者Bは、i≠jであるiについて、暗号文主文の生成に使用した乱数siを使って、暗号文検証文CCiを生成し、i=jであるiについて、与えられたD−BDH問題のパラメータを使ったシミュレートにより、暗号文検証文CCiを生成する。
したがって、この実施の形態におけるIDベース暗号方式のSMMR安全性が証明できる。
暗号パラメータ記憶部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個の所定の長さのビット列IDiをn個の受信者識別情報として入力することを特徴とする。
乱数生成部222は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす自然数rに基づいて、n人の受信者に対応するn個の1以上自然数r未満の整数si(iは、1以上n以下の整数。)をランダムに生成することを特徴とする。
第一暗号文生成部241は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす乗法群G1の要素g1と乗法群G2の要素g2とペアリングeと鍵生成関数KDFと、乱数生成部222が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の鍵ビット列ki=KDF(e(g1,g2)^si)(iは、1以上n以下の整数。)を算出し、CPU911などの処理装置を用いて、算出したn個の鍵ビット列kiにより、平文入力部231が入力した平文Mをそれぞれ暗号化して、n人の受信者に対応するn個の第一暗号文C1i(iは、1以上n以下の整数。)とすることを特徴とする。
第二暗号文生成部242は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす関数V1と、乱数生成部222が生成したn個の整数siと、受信者識別入力部232が入力したn個の所定の長さのビット列IDiとに基づいて、n人の受信者に対応するn個の乗法群G2の要素ui=V1(IDi)^si(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G2の要素uiをそれぞれ表わすビット列を、n人の受信者に対応するn個の第二暗号文C2i(iは、1以上n以下の整数。)とすることを特徴とする。
第三暗号文生成部243は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす乗法群G1の要素gと、乱数生成部222が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の乗法群G1の要素vi=g^si(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G1の要素viをそれぞれ表わすビット列を、n人の受信者に対応するn個の第三暗号文C3i(iは、1以上n以下の整数。)とすることを特徴とする。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わすハッシュ関数HFに基づいて、1つの所定の長さのビット列w0を算出して、ハッシュ値Hとすることを特徴とする。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす関数V2と、乱数生成部222が生成したn個の整数siと、ハッシュ値算出部244が算出した1つの所定の長さのビット列w0とに基づいて、n人の受信者に対応するn個の乗法群G2の要素yi=V2(w0)^si(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G2の要素yiをそれぞれ表わすビット列を、n人の受信者に対応するn個の暗号文検証文CCi(iは、1以上n以下の整数。)とすることを特徴とする。
暗号パラメータ記憶部210は、磁気ディスク装置920などの記憶装置を用いて、2つの関数V1及びV2を表わす情報として、m1個の乗法群G2の要素hξ(ξは、1以上m1以下の整数。)と、2つの乗法群G2の要素h1’及びh2’とを表わす情報を記憶することを特徴とする。
第二暗号文生成部242は、CPU911などの処理装置を用いて、受信者識別入力部232が入力したn個の所定の長さのビット列IDiそれぞれを、m1個の所定の長さのビット列νiξ(ξは、1以上m1以下の整数。)に分割し、分割したm1個の所定の長さのビット列νiξをm1個の整数として取り扱い、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わすm1個の乗法群G2の要素hξ(ξは、1以上m1以下の整数。)と乗法群G2の要素h1’と、分割したm1個の整数νiξとに基づいて、関数V1の値である乗法群G2の要素V1(IDi)=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以下の整数。)を算出することを特徴とする。
暗号パラメータ生成装置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個の所定の長さのビット列IDiをn個の受信者識別情報として入力することを特徴とする。
乱数生成部222は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす自然数rに基づいて、n人の受信者に対応するn個の1以上自然数r未満の整数si(iは、1以上n以下の整数。)をランダムに生成することを特徴とする。
第一暗号文生成部241は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす乗法群G1の要素g1と乗法群G2の要素g2とペアリングeと鍵生成関数KDFと、乱数生成部222が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の鍵ビット列ki=KDF(e(g1,g2)^si)(iは、1以上n以下の整数。)を算出し、CPU911などの処理装置を用いて、算出したn個の鍵ビット列kiにより、平文入力部231が入力した平文Mをそれぞれ暗号化して、n人の受信者に対応するn個の第一暗号文C1i(iは、1以上n以下の整数。)とすることを特徴とする。
第二暗号文生成部242は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす関数V1と、受信者識別入力部232が入力したn個の所定の長さのビット列IDiと、乱数生成部222が生成したn個の整数si(iは、1以上n以下の整数。)とに基づいて、n人の受信者に対応するn個の乗法群G2の要素ui=V1(IDi)^si(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G2の要素uiをそれぞれ表わすビット列を、n人の受信者に対応するn個の第二暗号文C2i(iは、1以上n以下の整数。)とすることを特徴とする。
第三暗号文生成部243は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす乗法群G1の要素gと、乱数生成部222が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の乗法群G1の要素vi=g^si(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G1の要素viをそれぞれ表わすビット列を、n人の受信者に対応するn個の第三暗号文C3i(iは、1以上n以下の整数。)とすることを特徴とする。
ハッシュ値算出部244は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わすハッシュ関数HFに基づいて、1つの所定の長さのビット列w0を算出して、ハッシュ値Hとすることを特徴とする。
暗号文検証文生成部245は、CPU911などの処理装置を用いて、暗号パラメータ記憶部210が記憶した公開暗号パラメータが表わす関数V2と、乱数生成部222が生成したn個の整数siと、ハッシュ値算出部244が算出した1つの所定の長さのビット列w0とに基づいて、n人の受信者に対応するn個の乗法群G2の要素yi=V2(w0)^si(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G2の要素yiをそれぞれ表わすビット列を、n人の受信者に対応するn個の暗号文検証文CCiとすることを特徴とする。
検証ハッシュ値算出部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を復元することを特徴とする。
実施の形態4について、図25〜図28を用いて説明する。
IDベース暗号通信システム800は、暗号パラメータ生成装置100と、暗号文生成装置200と、暗号文受信装置301〜暗号文受信装置303と、群パラメータ生成装置400とを有する。
なお、群パラメータ生成装置400は、暗号パラメータ生成装置100の内部にあってもよい。
群パラメータ生成装置400は、パラメータ生成条件記憶部410と、群位数候補生成部420と、群位数安全性判定部430と、パラメータ生成部440とを有する。
パラメータ生成条件情報とは、群パラメータ生成装置400が生成する群パラメータについての条件を表わす情報である。群パラメータ生成装置400が生成する群パラメータについての条件は、その群パラメータを使用したIDベース暗号通信システム800の安全性などの観点から、あらかじめ定められたものである。
ここで、整数kは、埋め込み次数(embeding degree)を示す。整数Dは、判別式を示す。整数B1は、第一閾値を示す。整数B2は、第二閾値を示す。
群位数候補生成部420は、CPU911などの処理装置を用いて、パラメータ生成条件記憶部410が記憶したパラメータ生成条件情報を入力する。
群位数候補生成部420は、CPU911などの処理装置を用いて、入力したパラメータ生成条件情報が表わす整数kと整数Dとに基づいて、以下の3つの条件を満たす自然数rを生成する。
第二の条件は、自然数rが、整数kの倍数+1であるという条件である。
第三の条件は、自然数rを法としたとき、整数Dが平方剰余であるという条件である。
これは、q−D−tABDHE問題について、(r−1)または(r+1)の因数を利用してαを求めるアルゴリズムが存在するため、q−D−ABDHE問題に帰着する暗号方式を採用する場合には、そのようなrを避けたほうがよいからである。
また、上述した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を選択する。
剰余算出部431は、CPU911などの処理装置を用いて、入力した情報が表わす自然数rを4で割った余りを算出する。
剰余算出部431は、CPU911などの処理装置を用いて、算出した余りを表わす情報を出力する。
判定値算出部432は、CPU911などの処理装置を用いて、入力した情報が表わす余りに基づいて、自然数rを4で割った余りが1であるか3であるかを判定する。
また、判定値算出部432は、CPU911などの処理装置を用いて、入力した情報が表わす自然数rに基づいて、自然数rと1との和(r+1)を2で割った商(r+1)/2を算出し、整数r2とする。
また、判定値算出部432は、CPU911などの処理装置を用いて、入力した情報が表わす自然数rに基づいて、自然数rと1との和(r+1)を4で割った商(r+1)/4を算出し、整数r2とする。
素因数判定部433は、CPU911などの処理装置を用いて、入力したパラメータ生成条件情報が表わす整数B1と、入力した情報が表わす整数r1とに基づいて、整数r1が整数B1より小さい素因数を持つか否かを判定する。
整数r1が整数B1より小さい素因数を持つと判定した場合、素因数判定部433は、CPU911などの処理装置を用いて、自然数rが適切でないと判定する。
整数r2が整数B2より小さい素因数を持つと判定した場合、素因数判定部433は、CPU911などの処理装置を用いて、自然数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とを表わす情報を、群パラメータとして出力する。
ペアリングeは、例えば、ベイユペアリングやテイトペアリングである。
乗法群GTは、例えば、位数qk(qは素数。kは2以上の整数。)の有限体GF(qk)の乗法群の部分群である。
自然数rを楕円曲線E上の点がなす群の位数とし、整数Dを判別式とし、整数kを有限体GF(qk)の埋め込み次数とする楕円曲線Eのパラメータを求めるアルゴリズムとしては、例えば、コックスピンチ(Cocks−Pinch)法がある。
パラメータ生成部440は、CPU911などの処理装置を用いて、判別式Dに対するヒルベルト類多項式HD(x)を算出する。
パラメータ生成部440は、CPU911などの処理装置を用いて、算出したヒルベルト類多項式HD(x)の法p還元多項式の根である有限体GF(p)の要素jを算出する。パラメータ生成部440は、例えば、バールカンプのアルゴリズムにより、有限体GF(p)の要素jを算出する。
パラメータ生成部440は、CPU911などの処理装置を用いて、求めた有限体GF(p)の要素jに基づいて、j=1728a3/(a3+27b2)を満たす有限体GF(p)の要素a及びbを算出し、楕円曲線E:Y2=X3+aX+bの係数とする。
自然数rが素数であると判定した場合、倍数判定工程S63へ進む。
自然数rが素数でないと判定した場合、自然数生成工程S61に戻り、異なる自然数rを生成する。
自然数rが整数kの倍数+1であると判定した場合、平方剰余判定工程S64へ進む。
自然数rが整数kの倍数+1でないと判定した場合、自然数生成工程S61に戻り、異なる自然数rを生成する。
整数Dが法rにおける平方剰余であると判定した場合、第一剰余算出工程S65へ進む。
整数Dが法rにおける平方剰余でないと判定した場合、自然数生成工程S61に戻り、異なる自然数rを生成する。
自然数rを4で割った余りが3である場合、第一判定値算出工程S66へ進む。
自然数rを4で割った余りが1である場合、第三判定値算出工程S68へ進む。
判定値算出部432は、CPU911などの処理装置を用いて、自然数生成工程S61で生成した自然数rと、算出した最小公倍数LCM(k,2)とに基づいて、自然数rと1との差(r−1)を最小公倍数LCM(k,2)で割った商(r−1)/LCM(k,2)を算出し、整数r1とする。
その後、第一素因数判定工程S70へ進む。
判定値算出部432は、CPU911などの処理装置を用いて、自然数生成工程S61で生成した自然数rと、算出した最小公倍数LCM(k,4)とに基づいて、自然数rと1との差(r−1)を最小公倍数LCM(k,4)で割った商(r−1)/LCM(k,4)を算出し、整数r1とする。
整数r1が整数B1未満の素因数を有すると判定した場合、自然数生成工程S61に戻り、異なる自然数rを生成する。
整数r1が整数B1未満の素因数を有しないと判定した場合、第二素因数判定工程S71へ進む。
整数r2が整数B2未満の素因数を有すると判定した場合、自然数生成工程S61に戻り、異なる自然数rを生成する。
整数r2が整数B2未満の素因数を有しないと判定した場合、群パラメータ生成工程S85へ進む。
パラメータ生成部440は、CPU911などの処理装置を用いて、算出した乗法群を表わす情報を含む群パラメータを生成する。
なお、図27で説明した群パラメータ生成処理の工程と共通する工程については、同一の符号を付し、説明を省略する。
整数kが偶数であると判定した場合、第一自然数算出工程S83へ進む。
整数kが奇数であると判定した場合、第二自然数算出工程S84へ進む。
その後、素数判定工程S62へ進む。
整数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へ進む。
算出した余りが0の場合は、第二判定値算出工程S86へ進む。
算出した余りが0以外の場合は、第四判定値算出肯定S89へ進む。
整数kが奇数の場合、r1=(r−1)/4kとなる。したがって、自然数r1は、(r−1)をkと4との最小公倍数で割った商である。
整数kが偶数の場合、整数kを4で割った余りは2であり、r1=(r−1)/2kとなる。したがって、整数r1は、(r−1)をkと4との最小公倍数で割った商である。
群パラメータ生成装置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が生成した群パラメータを記憶することを特徴とする。
群位数候補生成部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が安全な群位数でないと判定することを特徴とする。
それぞれが対応する暗号文受信装置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などの処理装置を用いて、算出した乗法群を表わす情報を含む群パラメータを生成することを特徴とする。
群位数候補生成部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が安全な群位数でないと判定することを特徴とする。
実施の形態5について、図29を用いて説明する。
この実施の形態におけるIDベース暗号通信システム800の全体構成、暗号パラメータ生成装置100及び暗号文生成装置200及び暗号文受信装置301〜303のブロック構成は、実施の形態4で説明したものと同様なので、ここでは説明を省略する。
この実施の形態における群パラメータ生成装置400のブロック構成は、実施の形態4で説明したものと同様なので、図26を用いて、異なる部分を説明する。
素因数判定部433は、CPU911などの処理装置を用いて、入力した情報が表わす整数r1に基づいて、整数r1が素数であるか否かを判定する。
整数r1が素数でないと判定した場合、素因数判定部433は、CPU911などの処理装置を用いて、群位数候補生成部420が生成した自然数rが安全な群位数でなく、群位数として適切でないと判定する。
整数r2が素数でないと判定した場合、素因数判定部433は、CPU911などの処理装置を用いて、群位数候補生成部420が生成した自然数rが安全な群位数でなく、群位数として適切でないと判定する。
なお、実施の形態4で説明した群パラメータ生成処理の工程と共通する工程については、同一の符号を付す。
整数r1が素数でないと判定した場合、自然数生成工程S61に戻り、異なる自然数rを生成する。
整数r1が素数であると判定した場合、第二素因数判定工程S71へ進む。
整数r2が素数でないと判定した場合、自然数生成工程S61に戻り、異なる自然数rを生成する。
整数r2が素数であると判定した場合、群パラメータ生成工程S85へ進む。
群位数候補生成部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が安全な群位数でないと判定することを特徴とする。
群位数候補生成部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が安全な群位数でないと判定することを特徴とする。
Claims (21)
- 平文Mをn人の受信者(nは、1以上の整数。)に対して通知する暗号文Cを生成する暗号文生成装置において、
情報を記憶する記憶装置と、情報を処理する処理装置と、暗号パラメータ記憶部と、受信者識別入力部と、平文入力部と、暗号文主文生成部と、ハッシュ値算出部と、暗号文検証文生成部と、暗号文結合部とを有し、
上記暗号パラメータ記憶部は、上記記憶装置を用いて、公開暗号パラメータを記憶し、
上記受信者識別入力部は、上記処理装置を用いて、n人の受信者をそれぞれ識別するn個の受信者識別情報IDi(iは、1以上n以下の整数。)を入力し、
上記平文入力部は、上記処理装置を用いて、平文Mを入力し、
上記暗号文主文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記受信者識別入力部が入力したn個の受信者識別情報IDiと、上記平文入力部が入力した平文Mとに基づいて、n人の受信者に対応するn個の暗号文主文CBi(iは、1以上n以下の整数。)を生成し、
上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号文主文生成部が生成したn個の暗号文主文CBiを結合して、結合暗号文を生成し、上記処理装置を用いて、生成した結合暗号文に基づいて、ハッシュ値Hを算出し、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記ハッシュ値算出部が算出したハッシュ値Hとに基づいて、暗号文検証文CCを生成し、
上記暗号文結合部は、上記処理装置を用いて、上記暗号文主文生成部が生成したn個の暗号文主文CBiと、上記暗号文検証文生成部が生成した暗号文検証文CCとを結合して、1つの暗号文Cとする
ことを特徴とする暗号文生成装置。 - 上記暗号文生成装置は、更に、乱数生成部を有し、
上記乱数生成部は、上記処理装置を用いて、n人の受信者に対応するn個の整数si(iは、1以上n以下の整数。)をランダムに生成し、
上記暗号文主文生成部は、第一暗号文生成部と、第二暗号文生成部と、第三暗号文生成部とを有し、
上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記平文入力部が入力した平文Mと、上記乱数生成部が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の第一暗号文C1i(iは、1以上n以下の整数。)を生成し、
上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記受信者識別入力部が入力したn個の受信者識別情報IDiと、上記乱数生成部が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の第二暗号文C2i(iは、1以上n以下の整数。)を生成し、
上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記乱数生成部が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の第三暗号文C3i(iは、1以上n以下の整数。)を生成し、
上記第一暗号文生成部が生成したn個の第一暗号文C1iと、上記第二暗号文生成部が生成したn個の第二暗号文C2iと、上記第三暗号文生成部が生成したn個の第三暗号文C3iとを、n人の受信者に対応するn個の暗号文主文CBiとし、
上記ハッシュ値算出部は、上記処理装置を用いて、上記第一暗号文生成部が生成したn個の第一暗号文C1iと、上記第二暗号文生成部が生成したn個の第二暗号文C2iと、上記第三暗号文生成部が生成したn個の第三暗号文C3iとを結合して、1つの結合暗号文とし、上記処理装置を用いて、結合した1つの結合暗号文に基づいて、1つのハッシュ値Hを算出し、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記乱数生成部が生成したn個の整数siと、上記ハッシュ値算出部が算出した1つのハッシュ値Hとに基づいて、n人の受信者に対応するn個の暗号文検証文CCi(iは、1以上n以下の整数。)を生成し、
上記暗号文結合部は、上記処理装置を用いて、上記第一暗号文生成部が生成したn個の第一暗号文C1iと、上記第二暗号文生成部が生成したn個の第二暗号文C2iと、上記第三暗号文生成部が生成したn個の第三暗号文C3iと、上記暗号文検証文生成部が生成したn個の暗号文検証文CCiとを結合して、1つの暗号文Cとする
ことを特徴とする請求項1に記載の暗号文生成装置。 - 上記暗号パラメータ記憶部は、上記記憶装置を用いて、公開暗号パラメータとして、自然数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個の整数IDiをn個の受信者識別情報として入力し、
上記乱数生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす自然数rに基づいて、n人の受信者に対応するn個の1以上自然数r未満の整数si(iは、1以上n以下の整数。)をランダムに生成し、
上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素h1とペアリングeと、鍵生成関数KDFと、上記乱数生成部が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の鍵ビット列ki=KDF(e(g,h1)^si)(iは、1以上n以下の整数。)を算出し、上記処理装置を用いて、算出したn個の鍵ビット列kiにより、上記平文入力部が入力した平文Mをそれぞれ暗号化して、n人の受信者に対応するn個の第一暗号文C1i(iは、1以上n以下の整数。)とし、
上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと、乗法群G1の要素g1と、上記受信者識別入力部が入力したn個の整数IDiと、上記乱数生成部が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の乗法群G1の要素ui=(g1・g^−IDi)^si(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G1の要素uiをそれぞれ表わすビット列を、n人の受信者に対応するn個の第二暗号文C2i(iは、1以上n以下の整数。)とし、
上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素g2とペアリングeと、上記乱数生成部が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の乗法群GTの要素vi=e(g,g2)^si(iは、1以上n以下の整数。)を算出し、算出した乗法群GTの要素viをそれぞれ表わすビット列を、n人の受信者に対応するn個の第三暗号文C3i(iは、1以上n以下の整数。)とし、
上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わすハッシュ関数HFに基づいて、1つの自然数β0を算出して、ハッシュ値Hとし、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素h2と乗法群G2の要素h3とペアリングeと、上記乱数生成部が生成したn個の整数siと、上記ハッシュ値算出部が算出した1つの自然数β0とに基づいて、n人の受信者に対応するn個の乗法群GTの要素yi=e(g,h2)^si・e(g,h3)^(si・β0)(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群GTの要素yiをそれぞれ表わすビット列を、n人の受信者に対応するn個の暗号文検証文CCi(iは、1以上n以下の整数。)とする
ことを特徴とする請求項2に記載の暗号文生成装置。 - 上記暗号パラメータ記憶部は、上記記憶装置を用いて、公開暗号パラメータとして、自然数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個の所定の長さのビット列IDiをn個の受信者識別情報として入力し、
上記乱数生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす自然数rに基づいて、n人の受信者に対応するn個の1以上自然数r未満の整数si(iは、1以上n以下の整数。)をランダムに生成し、
上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素g1と乗法群G2の要素g2とペアリングeと鍵生成関数KDFと、上記乱数生成部が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の鍵ビット列ki=KDF(e(g1,g2)^si)(iは、1以上n以下の整数。)を算出し、上記処理装置を用いて、算出したn個の鍵ビット列kiにより、上記平文入力部が入力した平文Mをそれぞれ暗号化して、n人の受信者に対応するn個の第一暗号文C1i(iは、1以上n以下の整数。)とし、
上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす関数V1と、上記乱数生成部が生成したn個の整数siと、上記受信者識別入力部が入力したn個の所定の長さのビット列IDiとに基づいて、n人の受信者に対応するn個の乗法群G2の要素ui=V1(IDi)^si(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G2の要素uiをそれぞれ表わすビット列を、n人の受信者に対応するn個の第二暗号文C2i(iは、1以上n以下の整数。)とし、
上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと、上記乱数生成部が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の乗法群G1の要素vi=g^si(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G1の要素viをそれぞれ表わすビット列を、n人の受信者に対応するn個の第三暗号文C3i(iは、1以上n以下の整数。)とし、
上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わすハッシュ関数HFに基づいて、1つの所定の長さのビット列w0を算出して、ハッシュ値Hとし、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす関数V2と、上記乱数生成部が生成したn個の整数siと、上記ハッシュ値算出部が算出した1つの所定の長さのビット列w0とに基づいて、n人の受信者に対応するn個の乗法群G2の要素yi=V2(w0)^si(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G2の要素yiをそれぞれ表わすビット列を、n人の受信者に対応するn個の暗号文検証文CCi(iは、1以上n以下の整数。)とする
ことを特徴とする請求項2に記載の暗号文生成装置。 - 上記暗号パラメータ記憶部は、上記記憶装置を用いて、2つの関数V1及びV2を表わす情報として、m1個の乗法群G2の要素hξ(ξは、1以上m1以下の整数。)と、2つの乗法群G2の要素h1’及びh2’とを表わす情報を記憶し、
上記第二暗号文生成部は、上記処理装置を用いて、上記受信者識別入力部が入力したn個の所定の長さのビット列IDiそれぞれを、m1個の所定の長さのビット列νiξ(ξは、1以上m1以下の整数。)に分割し、分割したm1個の所定の長さのビット列νiξをm1個の整数として取り扱い、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わすm1個の乗法群G2の要素hξ(ξは、1以上m1以下の整数。)と乗法群G2の要素h1’と、分割したm1個の整数νiξとに基づいて、関数V1の値である乗法群G2の要素V1(IDi)=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に記載の暗号文生成装置。 - 上記暗号文主文生成部は、上記処理装置を用いて、上記受信者識別入力部が入力したn個の受信者識別情報IDiを含むn個の暗号文主文CBiを生成する
ことを特徴とする請求項1に記載の暗号文生成装置。 - 上記暗号文生成装置は、更に、暗号文通知部を有し、
上記暗号文通知部は、上記処理装置を用いて、上記受信者識別入力部が入力したn個の受信者識別情報IDiによって識別されるn人の受信者に対して、上記暗号文結合部が結合した1つの暗号文Cを通知する
ことを特徴とする請求項1に記載の暗号文生成装置。 - 上記暗号文生成装置は、更に、セッション鍵生成部を有し、
上記セッション鍵生成部は、上記処理装置を用いて、所定の長さのビット列をランダムに生成して、セッション鍵Kとし、
上記平文入力部は、上記処理装置を用いて、平文Mとして、上記セッション鍵生成部が生成したセッション鍵Kを入力する
ことを特徴とする請求項1に記載の暗号文生成装置。 - 上記暗号文生成装置は、更に、データ入力部と、データ暗号化部と、暗号文通知部とを有し、
上記データ入力部は、上記処理装置を用いて、n人の受信者に対して送信すべき1つの平文データを入力し、
上記データ暗号化部は、上記処理装置を用いて、上記セッション鍵生成部が生成したセッション鍵Kにより、上記データ入力部が入力した1つの平文データを暗号化して、1つの暗号化データとし、
上記暗号文通知部は、上記処理装置を用いて、上記受信者識別入力部が入力したn個の受信者識別情報IDiによって識別されるn人の受信者に対して、上記暗号文結合部が結合した1つの暗号文Cと、上記データ暗号化部が暗号化した1つの暗号化データとを通知する
ことを特徴とする請求項8に記載の暗号文生成装置。 - それぞれが対応する暗号文受信装置を有するn人の受信者(nは、1以上の整数。)に対して、平文Mを1つの暗号文Cにより通知する暗号通信システムにおいて、
暗号パラメータ生成装置と、暗号文生成装置と、複数の暗号文受信装置とを有し、
上記暗号パラメータ生成装置は、
情報を記憶する記憶装置と、情報を処理する処理装置と、秘密情報生成部と、秘密情報記憶部と、公開パラメータ生成部と、公開パラメータ公開部と、識別情報入力部と、秘密鍵生成部と、秘密鍵通知部とを有し、
上記秘密情報生成部は、上記処理装置を用いて、秘密情報をランダムに生成し、
上記秘密情報記憶部は、上記記憶装置を用いて、上記秘密情報生成部が生成した秘密情報を記憶し、
上記公開パラメータ生成部は、上記処理装置を用いて、上記秘密情報生成部が生成した秘密情報に基づいて、公開暗号パラメータを生成し、
上記公開パラメータ公開部は、上記処理装置を用いて、上記公開パラメータ生成部が生成した公開暗号パラメータを公開し、
上記識別情報入力部は、上記処理装置を用いて、上記複数の暗号文受信装置のうち1つの暗号文受信装置に対応する1人の受信者を識別する受信者識別情報IDを入力し、
上記秘密鍵生成部は、上記処理装置を用いて、上記秘密情報記憶部が記憶した秘密情報と、上記公開パラメータ生成部が生成した公開暗号パラメータと、上記識別情報入力部が入力した受信者識別情報IDとに基づいて、上記1人の受信者に対応する秘密鍵dIDを生成し、
上記秘密鍵通知部は、上記処理装置を用いて、上記1人の受信者に対応する1つの暗号文受信装置に対して、上記秘密鍵生成部が生成した秘密鍵dIDを秘密裏に通知し、
上記暗号文生成装置は、
情報を記憶する記憶装置と、情報を処理する処理装置と、暗号パラメータ記憶部と、受信者識別入力部と、平文入力部と、暗号文主文生成部と、ハッシュ値算出部と、暗号文検証文生成部と、暗号文結合部と、暗号文通知部とを有し、
上記暗号パラメータ記憶部は、上記記憶装置を用いて、上記暗号パラメータ生成装置が公開した公開暗号パラメータを記憶し、
上記受信者識別入力部は、上記処理装置を用いて、n人の受信者をそれぞれ識別するn個の受信者識別情報IDi(iは、1以上n以下の整数。)を入力し、
上記平文入力部は、上記処理装置を用いて、平文Mを入力し、
上記暗号文主文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記受信者識別入力部が入力したn個の受信者識別情報IDiと、上記平文入力部が入力した平文Mとに基づいて、n人の受信者に対応するn個の暗号文主文CBi(iは、1以上n以下の整数。)を生成し、
上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号文主文生成部が生成したn個の暗号文主文CBiを結合して、結合暗号文を生成し、上記処理装置を用いて、生成した結合暗号文に基づいて、ハッシュ値Hを算出し、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記ハッシュ値算出部が算出したハッシュ値Hとに基づいて、暗号文検証文CCを生成し、
上記暗号文結合部は、上記処理装置を用いて、上記暗号文主文生成部が生成したn個の暗号文主文CBiと、上記暗号文検証文生成部が生成した暗号文検証文CCとを結合して、1つの暗号文Cとし、
上記暗号文通知部は、上記処理装置を用いて、上記n人の受信者に対応するn個の暗号文受信装置に対して、上記暗号文結合部が結合した1つの暗号文Cを通知し、
上記複数の暗号文受信装置は、それぞれ、
情報を記憶する記憶装置と、情報を処理する処理装置と、公開パラメータ記憶部と、秘密鍵記憶部と、暗号文受信部と、暗号文分解部と、検証ハッシュ値算出部と、暗号文検証部と、暗号文復号部とを有し、
上記公開パラメータ記憶部は、上記記憶装置を用いて、上記暗号パラメータ生成装置が公開した公開暗号パラメータを記憶し、
上記秘密鍵記憶部は、上記記憶装置を用いて、上記暗号パラメータ生成装置が通知した秘密鍵dIDを記憶し、
上記暗号文受信部は、上記処理装置を用いて、上記暗号文生成装置が通知した1つの暗号文Cを受信し、
上記暗号文分解部は、上記処理装置を用いて、上記暗号文受信部が受信した1つの暗号文Cに基づいて、n個の暗号文主文CBiと、暗号文検証文CCとを取得し、
上記検証ハッシュ値算出部は、上記処理装置を用いて、上記暗号文分解部が取得したn個の暗号文主文CBiを結合した検証結合暗号文に基づいて、検証ハッシュ値H’を算出し、
上記暗号文検証部は、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータと、上記暗号文分解部が取得したn個の暗号文主文CBiのうち、暗号文受信装置が対応する受信者に対応する1つの対応暗号文主文CBIDと、暗号文検証文CCと、上記検証ハッシュ値算出部が算出した検証ハッシュ値H’とに基づいて、上記暗号文受信部が受信した1つの暗号文Cに整合性があるか否かを判定し、
上記暗号文復号部は、上記暗号文受信部が受信した1つの暗号文Cに整合性があると、上記暗号文検証部が判定した場合に、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータと、上記秘密鍵記憶部が記憶した秘密鍵dIDと、上記暗号文分解部が取得したn個の暗号文主文CBiのうち、暗号文受信装置が対応する受信者に対応する1つの対応暗号文主文CBIDとに基づいて、平文Mを復元する
ことを特徴とする暗号通信システム。 - 上記暗号文生成装置は、更に、乱数生成部を有し、
上記乱数生成部は、上記処理装置を用いて、n人の受信者に対応するn個の整数si(iは、1以上n以下の整数。)をランダムに生成し、
上記暗号文主文生成部は、第一暗号文生成部と、第二暗号文生成部と、第三暗号文生成部とを有し、
上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記平文入力部が入力した平文Mと、上記乱数生成部が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の第一暗号文C1i(iは、1以上n以下の整数。)を生成し、
上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記受信者識別入力部が入力したn個の受信者識別情報IDiと、上記乱数生成部が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の第二暗号文C2i(iは、1以上n以下の整数。)を生成し、
上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記乱数生成部が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の第三暗号文C3i(iは、1以上n以下の整数。)を生成し、
上記第一暗号文生成部が生成したn個の第一暗号文C1iと、上記第二暗号文生成部が生成したn個の第二暗号文C2iと、上記第三暗号文生成部が生成したn個の第三暗号文C3iとを、n人の受信者に対応するn個の暗号文主文CBiとし、
上記ハッシュ値算出部は、上記処理装置を用いて、上記第一暗号文生成部が生成したn個の第一暗号文C1iと、上記第二暗号文生成部が生成したn個の第二暗号文C2iと、上記第三暗号文生成部が生成したn個の第三暗号文C3iとを結合して、1つの結合暗号文とし、上記処理装置を用いて、結合した1つの結合暗号文に基づいて、1つのハッシュ値Hを算出し、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータと、上記乱数生成部が生成したn個の整数siと、上記ハッシュ値算出部が算出した1つのハッシュ値Hとに基づいて、n人の受信者に対応するn個の暗号文検証文CCi(iは、1以上n以下の整数。)を生成し、
上記暗号文結合部は、上記処理装置を用いて、上記第一暗号文生成部が生成したn個の第一暗号文C1iと、上記第二暗号文生成部が生成したn個の第二暗号文C2iと、上記第三暗号文生成部が生成したn個の第三暗号文C3iと、上記暗号文検証文生成部が生成したn個の暗号文検証文CCiとを結合して、1つの暗号文Cとし、
上記暗号文分解部は、上記処理装置を用いて、上記暗号文受信部が受信した1つの暗号文Cに基づいて、n個の第一暗号文C1iと、n個の第二暗号文C2iと、n個の第三暗号文C3iと、n個の暗号文検証文CCiとを取得し、上記処理装置を用いて、取得したn個の第一暗号文C1iとn個の第二暗号文C2iとn個の第三暗号文C3iとn個の暗号文検証文CCiとのうち、暗号文受信装置が対応する受信者に対応する1つの対応第一暗号文C1IDと1つの対応第二暗号文C2IDと1つの対応第三暗号文C3IDと1つの対応暗号文検証文CCIDとを取得し、
上記検証ハッシュ値算出部は、上記処理装置を用いて、上記暗号文分解部が取得したn個の第一暗号文C1iとn個の第二暗号文C2iとn個の第三暗号文C3iとを結合した検証結合暗号文に基づいて、検証ハッシュ値H’を算出し、
上記暗号文検証部は、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータと、上記暗号文分解部が取得した1つの対応第二暗号文C2IDと1つの対応第三暗号文C3IDとの少なくともいずれかと1つの対応暗号文検証文CCIDと、上記検証ハッシュ値算出部が算出した検証ハッシュ値H’とに基づいて、上記暗号文受信部が受信した1つの暗号文Cに整合性があるか否かを判定し、
上記暗号文復号部は、上記暗号文受信部が受信した1つの暗号文Cに整合性があると、上記暗号文検証部が判定した場合に、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータと、上記秘密鍵記憶部が記憶した秘密鍵dIDと、上記暗号文分解部が取得した1つの対応第一暗号文C1IDと1つの対応第二暗号文C2IDと1つの対応第三暗号文C3IDとに基づいて、平文Mを復元する
ことを特徴とする請求項10に記載の暗号通信システム。 - 上記暗号パラメータ生成装置は、更に、群パラメータ記憶部を有し、
上記群パラメータ記憶部は、上記記憶装置を用いて、群パラメータとして、自然数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個の整数IDiをn個の受信者識別情報として入力し、
上記乱数生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす自然数rに基づいて、n人の受信者に対応するn個の1以上自然数r未満の整数si(iは、1以上n以下の整数。)をランダムに生成し、
上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素h1とペアリングeと、鍵生成関数KDFと、上記乱数生成部が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の鍵ビット列ki=KDF(e(g,h1)^si)(iは、1以上n以下の整数。)を算出し、上記処理装置を用いて、算出したn個の鍵ビット列kiにより、上記平文入力部が入力した平文Mをそれぞれ暗号化して、n人の受信者に対応するn個の第一暗号文C1i(iは、1以上n以下の整数。)とし、
上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと、乗法群G1の要素g1と、上記受信者識別入力部が入力したn個の整数IDiと、上記乱数生成部が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の乗法群G1の要素ui=(g1・g^(−IDi))^si(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G1の要素uiをそれぞれ表わすビット列を、n人の受信者に対応するn個の第二暗号文C2i(iは、1以上n以下の整数。)とし、
上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素g2とペアリングeと、上記乱数生成部が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の乗法群GTの要素vi=e(g,g2)^si(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群GTの要素viをそれぞれ表わすビット列を、n人の受信者に対応するn個の第三暗号文C3とし、
上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わすハッシュ関数HFに基づいて、1つの自然数β0を算出して、ハッシュ値Hとし、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと乗法群G2の要素h2と乗法群G2の要素h3とペアリングeと、上記乱数生成部が生成したn個の整数siと、上記ハッシュ値算出部が算出した1つの自然数β0とに基づいて、n人の受信者に対応するn個の乗法群GTの要素yi=e(g,h2)^si・e(g,h3)^(si・β0)(iは、1以上n以下の整数。)を算出し、算出した乗法群GTの要素yiをそれぞれ表わすビット列を、n人の受信者に対応するn個の暗号文検証文CCi(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に記載の暗号通信システム。 - 上記暗号通信システムは、更に、群パラメータ生成装置を有し、
上記群パラメータ生成装置は、
情報を処理する処理装置と、群位数候補生成部と、群位数安全性判定部と、パラメータ生成部とを有し、
上記群位数候補生成部は、上記処理装置を用いて、素数rを群位数の候補として生成し、
上記群位数安全性判定部は、上記処理装置を用いて、上記群位数候補生成部が生成した素数rに基づいて、素数rと1との差(r−1)の因数と、素数rと1との和(r+1)の因数とを算出し、上記処理装置を用いて、算出した(r−1)の因数と(r+1)の因数とに基づいて、上記群位数候補生成部が生成した素数rが安全な群位数であるか否かを判定し、
上記パラメータ生成部は、上記群位数候補生成部が生成した素数rが安全な群位数であると群位数安全性判定部が判定した場合に、上記処理装置を用いて、上記群位数候補生成部が生成した素数rに基づいて、素数rを群位数とする乗法群を算出し、上記処理装置を用いて、算出した乗法群を表わす情報を含む群パラメータを生成し、
上記群パラメータ記憶部は、上記記憶装置を用いて、上記群パラメータ生成装置が生成した群パラメータを記憶する
ことを特徴とする請求項12に記載の暗号通信システム。 - 上記群位数候補生成部は、上記処理装置を用いて、所定の整数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に記載の暗号通信システム。 - 上記群位数候補生成部は、上記処理装置を用いて、所定の整数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に記載の暗号通信システム。 - 上記暗号パラメータ生成装置は、更に、群パラメータ記憶部を有し、
上記群パラメータ記憶部は、上記記憶装置を用いて、群パラメータとして、自然数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個の所定の長さのビット列IDiをn個の受信者識別情報として入力し、
上記乱数生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす自然数rに基づいて、n人の受信者に対応するn個の1以上自然数r未満の整数si(iは、1以上n以下の整数。)をランダムに生成し、
上記第一暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素g1と乗法群G2の要素g2とペアリングeと鍵生成関数KDFと、上記乱数生成部が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の鍵ビット列ki=KDF(e(g1,g2)^si)(iは、1以上n以下の整数。)を算出し、上記処理装置を用いて、算出したn個の鍵ビット列kiにより、上記平文入力部が入力した平文Mをそれぞれ暗号化して、n人の受信者に対応するn個の第一暗号文C1i(iは、1以上n以下の整数。)とし、
上記第二暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす関数V1と、上記受信者識別入力部が入力したn個の所定の長さのビット列IDiと、上記乱数生成部が生成したn個の整数si(iは、1以上n以下の整数。)とに基づいて、n人の受信者に対応するn個の乗法群G2の要素ui=V1(IDi)^si(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G2の要素uiをそれぞれ表わすビット列を、n人の受信者に対応するn個の第二暗号文C2i(iは、1以上n以下の整数。)とし、
上記第三暗号文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす乗法群G1の要素gと、上記乱数生成部が生成したn個の整数siとに基づいて、n人の受信者に対応するn個の乗法群G1の要素vi=g^si(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G1の要素viをそれぞれ表わすビット列を、n人の受信者に対応するn個の第三暗号文C3i(iは、1以上n以下の整数。)とし、
上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わすハッシュ関数HFに基づいて、1つの所定の長さのビット列w0を算出して、ハッシュ値Hとし、
上記暗号文検証文生成部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した公開暗号パラメータが表わす関数V2と、上記乱数生成部が生成したn個の整数siと、上記ハッシュ値算出部が算出した1つの所定の長さのビット列w0とに基づいて、n人の受信者に対応するn個の乗法群G2の要素yi=V2(w0)^si(iは、1以上n以下の整数。)を算出し、算出したn個の乗法群G2の要素yiをそれぞれ表わすビット列を、n人の受信者に対応するn個の暗号文検証文CCiとし、
上記検証ハッシュ値算出部は、上記処理装置を用いて、上記公開パラメータ記憶部が記憶した公開暗号パラメータが表わすハッシュ関数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に記載の暗号通信システム。 - 上記暗号文主文生成部は、上記処理装置を用いて、上記受信者識別入力部が入力したn個の受信者識別情報IDiを含むn個の暗号文主文CBiを生成する
ことを特徴とする請求項10に記載の暗号通信システム。 - 上記暗号文生成装置は、更に、セッション鍵生成部と、データ入力部と、データ暗号化部と、暗号文通知部とを有し、
上記セッション鍵生成部は、上記処理装置を用いて、所定の長さのビット列をランダムに生成して、セッション鍵Kとし、
上記平文入力部は、上記処理装置を用いて、平文Mとして、上記セッション鍵生成部が生成したセッション鍵Kを入力し、
上記データ入力部は、上記処理装置を用いて、n人の受信者に対して送信すべき1つの平文データを入力し、
上記データ暗号化部は、上記処理装置を用いて、上記セッション鍵生成部が生成したセッション鍵Kにより、上記データ入力部が入力した1つの平文データを暗号化して、1つの暗号化データとし、
上記暗号文通知部は、上記処理装置を用いて、上記受信者識別入力部が入力したn個の受信者識別情報によって識別されるn人の受信者に対して、上記暗号文結合部が結合した1つの暗号文Cと、上記データ暗号化部が暗号化した1つの暗号化データとを通知し、
上記複数の暗号文受信装置は、更に、それぞれ、データ復号部を有し、
上記暗号文受信部は、上記処理装置を用いて、上記暗号文生成装置が通知した1つの暗号文Cと1つの暗号化データとを受信し、
上記データ復号部は、上記暗号文復号部が復元した平文Mをセッション鍵K’とし、上記処理装置を用いて、上記セッション鍵K’により、上記暗号文受信部が受信した1つの暗号化データを復号する
ことを特徴とする請求項10に記載の暗号通信システム。 - それぞれが対応する暗号文受信装置を有する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が安全な群位数でないと判定する
ことを特徴とする請求項19に記載の群パラメータ生成装置。 - 上記群位数候補生成部は、上記処理装置を用いて、所定の整数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に記載の群パラメータ生成装置。
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)
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)
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 | 燕山大学 | 高效的不可展的公钥加密系统 |
-
2007
- 2007-01-19 WO PCT/JP2007/050766 patent/WO2008087734A1/ja active Application Filing
- 2007-01-19 EP EP07713653.9A patent/EP2120227B1/en not_active Not-in-force
- 2007-01-19 US US12/523,827 patent/US8290146B2/en not_active Expired - Fee Related
- 2007-01-19 CN CN200780051866.3A patent/CN101617351B/zh not_active Expired - Fee Related
- 2007-01-19 JP JP2008553935A patent/JP4859933B2/ja active Active
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 |