JP4869824B2 - 受信者装置及び送信者装置及び暗号通信システム及びプログラム - Google Patents

受信者装置及び送信者装置及び暗号通信システム及びプログラム Download PDF

Info

Publication number
JP4869824B2
JP4869824B2 JP2006215267A JP2006215267A JP4869824B2 JP 4869824 B2 JP4869824 B2 JP 4869824B2 JP 2006215267 A JP2006215267 A JP 2006215267A JP 2006215267 A JP2006215267 A JP 2006215267A JP 4869824 B2 JP4869824 B2 JP 4869824B2
Authority
JP
Japan
Prior art keywords
information
processing device
input
session key
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2006215267A
Other languages
English (en)
Other versions
JP2008042590A (ja
Inventor
克幸 高島
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2006215267A priority Critical patent/JP4869824B2/ja
Publication of JP2008042590A publication Critical patent/JP2008042590A/ja
Application granted granted Critical
Publication of JP4869824B2 publication Critical patent/JP4869824B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

この発明は、IDベース公開鍵暗号方式の安全性を高める技術に関する。
楕円暗号ペアリングを用いたIDベース公開鍵暗号を安全に行うためには、より良い安全性の証明を有する方式を用いることが重要である。これまでも安全性が数学的に証明された方法が提案されている。また、ペアリング応用技術は、超楕円曲線を含む一般の代数曲線を用いても実現できる。
特開2002−26892号公報。 特表2005−500740号公報。 境隆一、大岸聖史、笠原正雄「楕円曲線上のペアリングを用いた暗号方式」暗号と情報セキュリティシンポジウム(SCIS 2001)、369〜373ページ、2001年。 Dan Boneh、Matt Franklin「Identity−based Encryption from the Weil Pairing」Crypto 2001、213〜229ページ、2001年。 Ben Lynn「Authenticated Identity−Based Encryption」http://eprint.iacr.org、2002年。 Victor Shoup「A Proposal for an ISO Standard for Public Key Encryption」http://shoup.net/papers/、2001年。 K.Bentahar、P.Farshim、J.Malone−Lee、N.P.Smart「Generic Constructions of Identity−Based and Certificateless KEMs"http://eprint.iacr.org。 Ronald Cramer、Victor Shoup「Design and Analysis of Practical Public−Key Encryption Schemes Secure against Adaptive Chosen Ciphertext Attack」SIAM Journal on Computing 33、167〜226ページ、2003年。
近年の高度情報通信技術の実用化に伴い、楕円暗号を含む公開鍵暗号も既に実用化段階に入っているが、従来、公開鍵証明の必要性からPKI(Public Key Infrastructure)というインフラストラクチャが必要であり、それが公開鍵暗号技術の多方面への展開の妨げとなってきた。近年、名前や機器番号のような識別名(ID情報)を公開鍵に用いることでPKIを不要化する公開鍵暗号が実現された。その実現には、(超)楕円曲線上のペアリング演算が本質的に重要である。
また、公開鍵暗号の安全性を数学的な問題の困難性に帰着させて示すことは、現在、暗号方式の安全性保証のために標準的に行われ、また、その帰着効率の評価が暗号方式の評価に繋がっている。それは、暗号解読によって得られる優位性と共に、その実行時間の評価も含む。即ち、ある公開鍵暗号を破ることがある数学的な問題を解くことに変換できたとしても(そして、その数学的な問題を解くには著しく時間がかかることがわかっていたとしても)、その変換後の数学問題解法アルゴリズム自身が著しく時間がかかることになってしまっては、元来の公開鍵暗号に対し、なんら安全性を保証することができなくなってしまうからである。
また、安全性証明を行う手法の一つとして、従来、ランダムオラクルモデルというものを用いれば効率的に安全な公開鍵暗号系を構成できることが知られており、公開鍵暗号の標準を定めたISO 18033−2等ではランダムオラクルモデルで安全性が保証された方式がいくつも採用されている。IDベース暗号に関してもランダムオラクルモデルで安全性が証明された方式がいくつか存在する。
また、ISO 18033−2等では、公開鍵暗号は、鍵カプセル化(KEM、Key Encapsulation Mechanism)として規定されており、IDベース暗号に関しても多くはIDベースKEMの形で規定されている。例えば、非特許文献1及び非特許文献2のIDベース暗号化方式をIDベースKEMに変換した非特許文献3のIDベースKEMなどが知られており、それの安全性はランダムオラクルモデルで与えられている。それらの安全性を更に高めることが課題とされている。
この発明は、上記のような課題を解決するためになされたものである。
この発明にかかる受信者装置は、
情報を記憶する記憶装置と、
情報を処理する処理装置と、
送信者装置が送信した情報を受信する受信装置と、
上記記憶装置を用いて、加法群Gの要素dIDを示す情報をユーザ秘密鍵情報として記憶する秘密鍵記憶部と、
上記受信装置を用いて、送信者装置が送信した暗号化セッション鍵を受信し、上記処理装置を用いて、受信した暗号化セッション鍵に含まれる加法群Gの要素Rを示す情報を第四要素情報として出力する暗号化セッション鍵受信部と、
上記処理装置を用いて、上記秘密鍵記憶部が記憶したユーザ秘密鍵情報と上記暗号化セッション鍵受信部が出力した第四要素情報とを入力し、上記処理装置を用いて、入力したユーザ秘密鍵情報と第四要素情報とに基づいて、加法群Gの要素Rと加法群Gの要素dIDとのペアリング値を算出して乗法群Gの要素w’とし、上記処理装置を用いて、算出した乗法群Gの要素w’を示す情報を受信ペアリング値情報として出力する受信ペアリング値算出部と、
上記処理装置を用いて、上記暗号化セッション鍵受信部が出力した第四要素情報と上記受信ペアリング値算出部が出力した受信ペアリング値情報とを入力し、上記処理装置を用いて、入力した第四要素情報と受信ペアリング値情報とに基づいて、ハッシュ値を算出し、上記処理装置を用いて、算出したハッシュ値に基づいて、送信者装置が生成したセッション鍵と同一のセッション鍵を復元するセッション鍵復元部と、
を有することを特徴とする。
この発明にかかる受信者装置によれば、セッション鍵復元部が、加法群Gの要素Rを示す第四要素情報と、ペアリング値w’を示す受信ペアリング値情報とに基づいてハッシュ値を算出し、算出したハッシュ値に基づいて、セッション鍵Kを復元するので、G−BDH問題に効率良く帰着する安全性の高い暗号方式を実現することができるという効果を奏する。
最初に、用語を定義する。
有限体GF(p)(pは、2でない素数。lは、自然数。)上の楕円曲線(以下、単に「楕円曲線」という。)とは、式Y=X+aX+b(X,Y,a,bは、有限体GF(p)の要素。)を満たす点(X,Y)の集合である。楕円曲線に含まれる点およびY軸方向の無限遠点Oを、楕円曲線上の点という。
なお、ここに示した楕円曲線の方程式は、標数が2でない場合の標準形であり、標数が2の場合の標準形は若干異なる。以下の説明は、すべての標数について適用可能であり、標数が2でない場合に限るものではない。
楕円曲線上の点の加算とは、楕円曲線上の点について定義された演算である。
楕円曲線上の点A及び点Bが与えられたとき、点Aと点Bとを通る直線が、楕円曲線と交わる点をC(X,Y)とすると、点(X,−Y)を点Aと点Bとの和と定義する。なお、点Aと点Bとが同一の点である場合は、点A(=点B)における楕円曲線の接線が楕円曲線と交わる点を点Cとする。また、点Aと点Bとを通る直線が、点A(または点B)で楕円曲線と接する場合は、点A(または点B)を点Cとする。
楕円曲線上の点の加算は、コンピュータを用いて計算できることが知られている。
上述の定義より、楕円曲線上の点の和は楕円曲線上の点となる。すなわち、楕円曲線上の点は、加法について閉じている。楕円曲線上の点を要素とする加法群を、楕円曲線上の点がなす群という。
楕円曲線上の点のスカラー倍とは、楕円曲線上の点Aをn回加算した点のことである。これを、nA(nは自然数。Aは楕円曲線上の点。)と表記する。例えば、2Aは、楕円曲線上の点Aと点Aとの和(A+A)である。3Aは、楕円曲線上の点2Aと点Aとの和(2A+A)である。
楕円曲線上の点Aのn倍が、nA=O(Oは、Y軸方向の無限遠点。)となるnのうち、最小のものを楕円曲線上の点Aの位数という。
また、楕円曲線上の点Aの位数のうち最大のものを、楕円曲線上の点がなす群の位数という。
ここでは楕円曲線について説明したが、超楕円曲線やその他一般の代数曲線についても、代数曲線に基づく加法群を定義することができる。
以下の説明において「加法群」という場合、楕円曲線上の点がなす群だけでなく、一般の代数曲線に基づく加法群も含むものとする。
ペアリング(Pairing)とは、加法群Gの要素Pと加法群Gの要素Qとから、乗法群Gの要素w=e(P,Q)への写像G×G→Gである。ここで、加法群Gと加法群Gとは、必ずしも同じ群である必要はない。特に、GとGが同じ群である場合を、対称的なペアリング(Symmetric Pairing)といい、GとGが異なる群である場合を、非対称的なペアリング(Asymmetric Pairing)という。
双線形ペアリング(Bilinear Pairing)とは、e(aP,bQ)=e(P,Q)ab(a,bは、自然数。)を満たすペアリングをいう。コンピュータを用いてペアリングの値(乗法群Gの要素)を計算できる双線形ペアリングとして、楕円曲線上の点についてのヴェイユ(Weil)ペアリング、テイト(Tate)ペアリングなどが知られている。
離散対数問題(Discrete Logarithm Problem)とは、「加法群Gの2つの要素g、gに対して、g=mgを満たすようなmを求めよ」という数学上の問題である。代数群Gの要素の数が大きい場合、多くの離散対数問題を解くことは、計算量的に非常に困難になることが知られている。この事実を利用して、公開鍵暗号を設計することができる。
楕円曲線ディフィー・へルマン問題(Elliptic Curve Diffie−Hellman Problem。以下、単に「ディフィー・へルマン問題」または「DH問題」という。)とは、「P、aP及びbP(ただし、Pは楕円曲線上の点。a及びbは自然数。)が与えられたとき、abPを計算せよ。」という数学上の問題をいう。
双線形ディフィー・ヘルマン問題(Bilinear Diffie−Hellman Problem。以下「BDH問題」という。)とは、「P、aP、bP、P、aP及びcP(ただし、Pは加法群G(例えば楕円曲線上の点がなす群)の要素。Pは加法群G(加法群Gと同一の加法群でもよいし、異なる加法群でもよい)の要素。a、b及びcは自然数。)が与えられたとき、e(P,Pabc(ただし、eは双線形ペアリング)を計算せよ。」という数学上の問題をいう。ペアリングeは、対称的なペアリングでもよいし、非対称的なペアリングでもよい。
多くのIDベース公開鍵暗号方式は、BDH問題の困難性に基づく。
BDH問題の困難性を確保するには、加法群G及びGにおける離散対数問題の困難性と、乗法群Gにおける離散対数問題の困難性との双方を確保する必要がある。
双線形ディフィー・ヘルマン決定問題(Decisional Bilinear Diffie−Hellman Problem。以下「BDH決定問題」という。)とは、「P、aP、bP、P、aP、cP、z(ただし、Pは加法群Gの要素。Pは加法群Gの要素。a、b、cは自然数。zは乗法群Gの要素。)が与えられたとき、z=e(P,Pabc(ただし、eは双線形ペアリング)であるか否かを判定せよ。」という数学上の問題をいう。
ギャップ双線形ディフィー・ヘルマン問題(Gap Bilinear Diffie−Hellman Problem。以下「G−BDH問題」という。)とは、「BDH決定問題に答えるオラクルを利用できるという仮定のもとで、BDH問題に答えよ。」という数学上の問題をいう。
なお、オラクルとは、特定の機能を有する入出力インターフェースのことをいう。すなわち、オラクルは、なんらかの値を入力し、入力した値に対してなんらかの処理を行い、その結果を出力する。BDH決定問題に答えるオラクル(以下、「BDH決定オラクル」という。)は、P、aP、bP、P、aP、cP、zを入力すると、z=e(P,Q)abcであるか否かを判定し、判定結果を(例えば「YES」「NO」として)出力する。
G−BDH問題などのギャップ問題の困難性を仮定することで、多くの暗号方式の安全性を証明することができる。
公開鍵暗号技術は、上記のような数学上の問題を解くことが極めて困難であることに、安全性の根拠を持つ。
すなわち、攻撃者が、公開鍵や暗号文などの情報から秘密鍵や(暗号文を復号した)平文などの情報を得ることができると仮定すると、上記のような数学上の問題を解くことも可能となる。しかし、上記のような数学上の問題を解くことは極めて困難なので、背理法により、攻撃者が秘密鍵などの情報を得ることも極めて困難であるという結論に達する。
このように、暗号技術の安全性を、数学上の問題を解くことの困難性に基づいて証明することを、「安全性の帰着」という。
したがって、暗号技術の安全性は、それが帰着する数学上の問題を解くことがどれほど困難であるかによって決まる。
例えば、ある数学上の問題を理論上解くことができるとしても、その問題を解くアルゴリズムを現存するスーパーコンピュータに実行させて、答えを出すのに一万年かかるとすれば、その数学上の問題に帰着する暗号技術は安全であるといえる。
また、別の数学上の問題を解くアルゴリズムを現存するスーパーコンピュータに実行させて、答えを出すのに十万年かかるとすれば、その数学上の問題に帰着する暗号技術のほうが、更に安全であるといえる。
しかし、暗号を解読するために必要な計算量と、それが帰着する数学上の問題を解くために必要な計算量とは同一ではないので、例えば、数学上の問題を解くのには十万年かかるとしても、その問題に帰着する暗号を解読するには、千年しかかからない場合もあれば、一万年かかる場合もある。
暗号を解読するために必要な計算量と、それが帰着する数学上の問題を解くために必要な計算量とが近い場合を、「帰着の効率が良い」という。
したがって、同じ数学上の問題に帰着する暗号方式であれば、帰着の効率が良い暗号方式のほうが、安全性が高いといえる。
ランダムオラクル(Random Oracle)とは、例えば、文字列を入力して数値を出力するオラクルであって、同じ文字列を入力すると同じ数値を出力し、ある文字列に対する出力に基づいて他の文字列に対する出力を予想することができないものをいう。
対応する入力を知らなければ、出力から入力を求めることができないので、ランダムオラクルは、一方向性関数とも呼ばれる。
IDベース公開鍵暗号方式とは、個人の名前や機器番号のような識別名(ID)を公開鍵として、データ暗号化である秘密鍵暗号用のセッション鍵を生成する暗号方式である。
鍵カプセル化方式(Key Encapsulation Mechanism。以下「KEM」という。)とは、セッション鍵を暗号化した暗号化セッション鍵を送信することにより、送信者と受信者とがセッション鍵を共有する暗号方式のうち、送信者がセッション鍵を選択することができないものをいう。
次に、KEMに対する安全性を定義する。
IND−ID−CCA(Indistinguishablity for ID−based KEM against adaptive chosen ciphertext attacks:IDベース暗号における適応的選択暗号文攻撃に対する暗号文識別不可能)安全性とは、攻撃者Aが、以下の攻撃シナリオに基づく攻撃をした場合における安全性をいう。
(1)攻撃者Aは、セットアップオラクルを呼び出す。
セットアップオラクルとは、IDベース公開鍵暗号の鍵生成パラメータを出力するオラクルである。
実際のIDベース公開鍵暗号方式では、秘密鍵生成装置が鍵生成パラメータを生成し、公開するので、攻撃者Aは、公開された情報から鍵生成パラメータを入手することが可能である。
(2)攻撃者Aは、鍵漏洩オラクルに対する質問をする。
鍵漏洩オラクルとは、IDを入力し、そのIDに対応するユーザ秘密鍵を出力するオラクルである。
実際のIDベース公開鍵暗号方式では、ユーザ秘密鍵は各ユーザが秘密裏に保管している。そこでは、複数の攻撃者が結託すれば、複数のIDについてのユーザ秘密鍵を入手することができる。したがって、攻撃者が任意のIDに対するユーザ秘密鍵を入手することができるという、もっとも厳しい条件での安全性を保証できれば、実際の環境での安全性はより高いものとなる。したがって、任意のIDに対するユーザ秘密鍵を入手できるという仮定での安全性を検討するものである。
(3)攻撃者Aは、復号オラクルに対する質問をする。
復号オラクルとは、IDと、そのIDが示すユーザに対して送信される暗号文とを入力し、その暗号文を復号した平文を出力するオラクルである。
実際のIDベース公開鍵暗号方式では、暗号文がインターネットなどを流れている。したがって、攻撃者は暗号文を入手できる。暗号文を受信したユーザが復号した結果を、なんらかの手段で攻撃者が入手したとすると、攻撃者は、暗号文とそれを復号した復号結果の組を入手可能である。したがって、そのような厳しい条件での安全性を検討するものである。
(4)攻撃者Aは、(2)及び(3)を必要な回数だけ繰り返す。
(5)攻撃者Aは、攻撃対象となるID(以下「攻撃対象ID」という)を選択する。
なお、攻撃対象IDは、(2)でユーザ秘密鍵を入手したID以外のIDとする。
(6)攻撃者Aは、暗号化オラクルを呼び出す。
暗号化オラクルとは、攻撃対象IDを入力し、攻撃対象IDが示す受信者に対して情報を送信しようとする送信者が生成するセッション鍵と、受信者がそのセッション鍵をユーザ秘密鍵を用いて復元するための情報(以下「暗号化セッション鍵」という。)とを出力するオラクルである。ただし、暗号化オラクルは、1/2の確率で、正しく対応するセッション鍵と暗号化セッション鍵の対を出力するが、1/2の確率で、正しく対応しないセッション鍵と暗号化セッション鍵の対を出力する。
実際のIDベース公開鍵暗号方式では、送信者と受信者とがセッション鍵を共有するため、送信者が受信者に対して暗号化セッション鍵を送信する。したがって、攻撃者は暗号化セッション鍵を入手可能である。もし、攻撃者が、セッション鍵と暗号化セッション鍵とが正しく対応しているか否かを(確率的に)判定できるならば、その暗号方式は安全でないことになる。
(7)攻撃者Aは、必要に応じて、(2)及び(3)を必要な回数だけ繰り返してもよい。
ただし、鍵漏洩オラクルに対して、攻撃対象IDを入力してはならない。また、復号オラクルに対して、攻撃対象IDと(5)で暗号化オラクルが出力した暗号化セッション鍵との組を入力してもならない。そのような情報は、直接的な答えになってしまうからである。しかし、復号オラクルに対して、攻撃対象IDと他の暗号文との組を入力したり、他のIDと暗号化セッション鍵との組を入力したりすることは許される。
(8)攻撃者Aは、(6)で暗号化オラクルが出力したセッション鍵と暗号化セッション鍵とが、正しく対応するものであるか否かを判定する。
攻撃者Aがまったく暗号を解読できないとすると、攻撃者Aの判定した結果が正しい確率は1/2である。攻撃者Aが暗号を解読できる場合があれば、攻撃者Aの判定した結果が正しい確率は1/2を上回る。
そこで、攻撃者Aの判定した結果が正しい確率から1/2を減算したものを、攻撃者Aの優位性(Advantage)と呼ぶ。
一般的に、暗号方式が用いる有限体の要素の数が少なければ、その暗号は解読されやすく、多ければ、その暗号は解読されにくい傾向がある。したがって、暗号方式が用いる有限体の要素の数が多ければ、攻撃者Aの優位性は低くなる。
そこで、攻撃者Aの優位性εを、暗号方式が用いる有限体の要素の数の関数ε(n)(nは、有限体の要素の数)と考える。
ε(n)が、任意の多項式p(n)(ただし、最高次係数が正)に対して、n>nであるすべてのnについてε(n)<1/p(n)となるnが存在する場合に、「ε(n)は漸近的に無視できる(negligible)」という。
攻撃者Aの優位性が漸近的に無視できる値であれば、その暗号方式は安全であると考える。攻撃者Aの優位性が漸近的に無視できる値でない場合、その暗号方式は安全でないと考える。
実施の形態1.
実施の形態1を、図1〜図23を用いて説明する。
図1は、この実施の形態におけるIDベース公開鍵暗号通信システム800の全体構成の一例を示すシステム構成図である。
なお、IDベース公開鍵暗号通信システム800は、暗号通信システムの一例である。
IDベース公開鍵暗号通信システム800は、ユーザ秘密鍵生成センタ100、送信者装置200、受信者装置300を有する。
なお、ユーザ秘密鍵生成センタ100は、鍵生成装置の一例である。また、ユーザ秘密鍵生成センタ100は、秘密鍵生成装置(Private Key Generator。PKG)とも呼ばれる。
ユーザ秘密鍵生成センタ100は、IDベース公開鍵暗号通信システム800で使用する暗号のパラメータを設定し、設定したパラメータを示すパラメータ情報を公開する。
また、ユーザ秘密鍵生成センタ100は、受信者装置300のIDに基づいて、ユーザ秘密鍵情報を生成し、受信者装置300に対して秘密裡に通知する。
受信者装置300のIDは、例えばメールアドレスなど、本人のものであることが明白なものを用いる。これにより、公開鍵証明書などを用いることなく、受信者装置300だけが暗号文を復号できることを保証する。
送信者装置200は、ユーザ秘密鍵生成センタ100が公開したパラメータ情報と、受信者装置300のIDとを入力し、受信者装置300に対して送信すべき情報を暗号化するためのセッション鍵を生成する。
送信者装置200は、セッション鍵についての情報を含む暗号化セッション鍵情報を、受信者装置300に対して送信する。また、送信者装置200は、セッション鍵により暗号化した暗号文情報を、受信者装置300に対して送信する。
受信者装置300は、送信者装置200が送信した暗号化セッション鍵情報を受信する。受信者装置300は、受信した暗号化セッション鍵情報と、ユーザ秘密鍵生成センタ100が通知したユーザ秘密鍵情報とに基づいて、セッション鍵を復元する。受信者装置300は、送信者装置200が送信した暗号文情報を受信し、復元したセッション鍵で復号して、元の情報を取得する。
暗号化セッション鍵情報や暗号文情報は、インターネットなどオープンなネットワークを介して送受信されるので、攻撃者はこれらの情報を入手することができる。しかし、ユーザ秘密鍵情報は、秘密裡に通知されるので、攻撃者が入手することはできない。
攻撃者は、ユーザ秘密鍵情報がなければ、暗号化セッション鍵情報からセッション鍵を復元することができない。また、攻撃者は、セッション鍵がなければ、暗号文情報を復号することができない。したがって、送信者装置200が受信者装置300に対して通知した情報の秘密が守られる。
図2は、この実施の形態におけるユーザ秘密鍵生成センタ100及び送信者装置200及び受信者装置300の外観の一例を示す図である。
ユーザ秘密鍵生成センタ100及び送信者装置200及び受信者装置300は、システムユニット910、CRT(Cathode・Ray・Tube)やLCD(液晶)の表示画面を有する表示装置901、キーボード902(Key・Board:K/B)、マウス903、FDD904(Flexible・Disk・Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。
システムユニット910は、コンピュータであり、ファクシミリ機932、電話器931とケーブルで接続され、また、ローカルエリアネットワーク942(LAN)、ゲートウェイ941を介してインターネット940に接続されている。
図3は、この実施の形態におけるユーザ秘密鍵生成センタ100及び送信者装置200及び受信者装置300のハードウェア資源の一例を示す図である。
ユーザ秘密鍵生成センタ100及び送信者装置200及び受信者装置300は、プログラムを実行するCPU911(Central・Processing・Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。CPU911は、バス912を介してROM913、RAM914、通信装置915、表示装置901、キーボード902、マウス903、FDD904、CDD905、プリンタ装置906、スキャナ装置907、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置920の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。
通信装置915、キーボード902、スキャナ装置907、FDD904などは、入力部、入力装置の一例である。
また、通信装置915、表示装置901、プリンタ装置906などは、出力部、出力装置の一例である。
通信装置915は、送信装置の一例である。また、通信装置915は、受信装置の一例である。
通信装置915は、ファクシミリ機932、電話器931、LAN942等に接続されている。通信装置915は、LAN942に限らず、インターネット940、ISDN等のWAN(ワイドエリアネットワーク)などに接続されていても構わない。インターネット940或いはISDN等のWANに接続されている場合、ゲートウェイ941は不要となる。
磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。プログラム群923のプログラムは、CPU911、オペレーティングシステム921、ウィンドウシステム922により実行される。
上記プログラム群923には、以下に述べる実施の形態の説明において「〜部」、「〜手段」として説明する機能を実行するプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。
ファイル群924には、以下に述べる実施の形態の説明において、「〜の判定結果」、「〜の計算結果」、「〜の処理結果」として説明する情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのCPUの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
また、以下に述べる実施の形態の説明において説明するフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD(Digital・Versatile・Disc)等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
また、以下に述べる実施の形態の説明において「〜部」、「〜手段」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」、「〜手段」として説明するものは、ROM913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。すなわち、プログラムは、以下に述べる「〜部」、「〜手段」としてコンピュータを機能させるものである。あるいは、以下に述べる「〜部」、「〜手段」の手順や方法をコンピュータに実行させるものである。
図4は、この実施の形態におけるユーザ秘密鍵生成センタ100の機能ブロックの構成の一例を示すブロック構成図である。
ユーザ秘密鍵生成センタ100は、公開パラメータ生成部110、ユーザ秘密鍵生成部130を有する。
公開パラメータ生成部110は、第一要素選択部111、マスターキー選択部112、マスターキー記憶部113、第二要素算出部121、パラメータ公開部122を有する。
ユーザ秘密鍵生成部130は、識別情報取得部131、第三要素算出部132、秘密鍵算出部133、秘密鍵通知部134を有する。
公開パラメータ生成部110とユーザ秘密鍵生成部130とは、異なる装置であってもよい。公開パラメータ生成部110とユーザ秘密鍵生成部130とを異なる装置とする場合、公開パラメータ生成部110を有する装置1つに対応して、ユーザ秘密鍵生成部130を有する装置が複数あってもよい。
ユーザ秘密鍵生成センタ100は、CPU911などの処理装置を用いて、IDベース公開鍵暗号通信システム800で使用する加法群G(例えば楕円曲線E上の点がなす群)、加法群G(例えば、加法群Gと同一の群であってもよいし、加法群Gと同一の楕円曲線E上の点がなす加法群Gと異なる群であってもよい。)、乗法群G、ペアリング関数e:G×G→G、鍵導出関数(Key Derivation Function)G、IDを加法群Gの要素に変換する変換関数Hなどのパラメータを決定しておく。
加法群G、加法群G及び乗法群Gは、位数が同一の素数であるものとする。
加法群Gとして、楕円曲線E上の点がなす群を用いる場合、楕円曲線Eには、DH問題を解くことが困難な楕円曲線を用いる。
ペアリング関数eには、例えば、テイトペアリングやヴェイユペアリングなど、双線形ペアリングを用いる。また、ペアリング関数eは、G−BDH問題を解くことが困難であるものとする。
鍵導出関数Gは、任意のビット列を入力し、入力したビット列に対応する(所定のビット長を有する)ビット列を出力する関数である。例えば、現在一般に使用されているSHA(Secure Hash Algorithm)−1などのハッシュ関数を用いて、鍵導出関数Gを構成する。のちに説明する安全性証明は、ランダムオラクルモデルという枠組みにおいて行われるものであり、鍵導出関数Gをランダムオラクルとみなして暗号方式の安全性を証明する。
変換関数Hは、任意のビット列を入力し、入力したビット列に対応する加法群Gの要素を出力する関数である。のちに説明する安全性証明では、変換関数Hもランダムオラクルとみなして暗号方式の安全性を証明する。
第一要素選択部111は、CPU911などの処理装置を用いて、加法群Gの要素(例えば楕円曲線E上の点)Pを選択する。このとき、第一要素選択部111は、加法群Gの要素のなかから、任意の要素Pをランダムに選択する。
第一要素選択部111は、CPU911などの処理装置を用いて、選択した要素Pを示す情報を、第一要素情報として出力する。
マスターキー選択部112は、CPU911などの処理装置を用いて、自然数sを選択する。このとき、マスターキー選択部112は、加法群Gの位数nより小さい自然数のなかから、自然数sをランダムに選択する。
マスターキー選択部112は、CPU911などの処理装置を用いて、選択した自然数sを示す情報を、マスターキー情報として出力する。
マスターキー記憶部113は、CPU911などの処理装置を用いて、マスターキー選択部112が出力したマスターキー情報を入力する。
マスターキー記憶部113は、磁気ディスク装置920などの記憶装置を用いて、入力したマスターキー情報を記憶する。マスターキー情報が外部に漏れると、第三者がユーザ秘密鍵を生成できてしまうので、ユーザ秘密鍵生成センタ100は、マスターキー記憶部113が記憶したマスターキー情報が外部に漏れないよう、厳重に管理する。
なお、公開パラメータ生成部110とユーザ秘密鍵生成部130とを異なる装置とする場合、ユーザ秘密鍵生成部130を有する装置もマスターキー記憶部113を有し、公開パラメータ生成部110を有する装置から、秘密裡にマスターキー情報の通知を受け、通知されたマスターキー情報を記憶する。
第二要素算出部121は、CPU911などの処理装置を用いて、第一要素選択部111が出力した第一要素情報を入力する。
第二要素算出部121は、CPU911などの処理装置を用いて、マスターキー記憶部113が記憶したマスターキー情報を入力する。
第二要素算出部121は、CPU911などの処理装置を用いて、入力した第一要素情報と、入力したマスターキー情報とに基づいて、加法群Gの要素Ppubを算出する。このとき、第二要素算出部121は、第一要素情報が示す加法群Gの要素Pと、マスターキー情報が示す自然数sとから、要素Pのs倍を計算し、加法群Gの要素Ppubとする。
ここで、加法群Gの要素Pのs倍とは、加法群Gの要素Pをs回加算した要素のことである。
第二要素算出部121は、CPU911などの処理装置を用いて、算出した加法群Gの要素Ppubを示す情報を、第二要素情報として出力する。
パラメータ公開部122は、CPU911などの処理装置を用いて、第一要素選択部111が出力した第一要素情報を入力する。
パラメータ公開部122は、CPU911などの処理装置を用いて、第二要素算出部121が出力した第二要素情報を入力する。
パラメータ公開部122は、CPU911などの処理装置を用いて、入力した第一要素情報と、入力した第二要素情報とを含む情報を、パラメータ情報として公開する。ここで、「公開する」とは、例えば、インターネットに接続したサーバ装置にパラメータ情報を記憶し、送信者装置200や受信者装置300の要求に応じてダウンロードできるようにしたり、送信者装置200や受信者装置300に対して、パラメータ情報を含む電子メールなどを送信したりすることである。
なお、パラメータ公開部122が公開するパラメータ情報には、上記のほか、加法群G、加法群G、乗法群Gを示す情報(例えば、楕円曲線Eの係数や位数)、ペアリング関数e:G×G→G、鍵導出関数G、変換関数Hなどを示す情報が含まれる。
識別情報取得部131は、CPU911などの処理装置を用いて、受信者装置300のIDを示す情報(識別情報)を取得する。
識別情報取得部131は、CPU911などの処理装置を用いて、取得したIDを示す情報を出力する。
受信者装置300のIDは、公開された情報であり、受信者装置300本人のものであることが明白なものであるから、識別情報取得部131は、必ずしも受信者装置300のIDを、受信者装置300自身から取得する必要はない。
第三要素算出部132は、CPU911などの処理装置を用いて、識別情報取得部131が出力した受信者装置300のIDを示す情報を入力する。
第三要素算出部132は、CPU911などの処理装置を用いて、入力した受信者装置300のIDを示す情報に対応する加法群Gの要素QIDを算出する。このとき、第三要素算出部132は、パラメータ公開部122が公開した変換関数Hを用いて、受信者装置300のIDを示す情報を、加法群Gの要素QIDに変換する。
第三要素算出部132は、CPU911などの処理装置を用いて、算出した加法群Gの要素QIDを示す情報を、第三要素情報として出力する。
秘密鍵算出部133は、CPU911などの処理装置を用いて、第三要素算出部132が出力した第三要素情報を入力する。
秘密鍵算出部133は、CPU911などの処理装置を用いて、マスターキー記憶部113が記憶したマスターキー情報を入力する。
秘密鍵算出部133は、CPU911などの処理装置を用いて、入力した第三要素情報と、入力したマスターキー情報とに基づいて、加法群Gの要素dIDを算出する。このとき、秘密鍵算出部133は、第三要素情報が示す加法群Gの要素QIDと、マスターキー情報が示す自然数sとから、要素QIDのs倍を計算し、加法群Gの要素dIDとする。
秘密鍵算出部133は、CPU911などの処理装置を用いて、算出した加法群Gの要素dIDを示す情報を、ユーザ秘密鍵情報として出力する。
秘密鍵通知部134は、CPU911などの処理装置を用いて、秘密鍵算出部133が出力したユーザ秘密鍵情報を入力する。
秘密鍵通知部134は、CPU911などの処理装置を用いて、入力したユーザ秘密鍵情報を、受信者装置300に対して、秘密裡に通知する。
ユーザ秘密鍵情報が受信者装置300以外の第三者に漏れると、その第三者は、暗号化セッション鍵からセッション鍵を復元できてしまうので、ユーザ秘密鍵生成センタ100は、受信者装置300以外の第三者にユーザ秘密鍵情報が漏れないよう、安全な方法で受信者装置300にユーザ秘密鍵情報を通知する。
図5は、この実施の形態における送信者装置200の機能ブロックの一例を示すブロック構成図である。
送信者装置200は、パラメータ取得部211、第一要素記憶部212、第二要素記憶部213、自然数選択部221、第四要素算出部222、暗号化セッション鍵送信部223、送信識別情報取得部231、第五要素算出部232、送信ペアリング値算出部233、セッション鍵生成部234、セッション鍵記憶部235、平文記憶部241、暗号文生成部242、暗号文送信部243を有する。
パラメータ取得部211は、CPU911などの処理装置を用いて、ユーザ秘密鍵生成センタ100が公開したパラメータ情報を取得する。例えば、ユーザ秘密鍵生成センタ100がパラメータ情報を登録したサーバ装置に接続して、パラメータ情報をダウンロードしたり、ユーザ秘密鍵生成センタ100からパラメータ情報を含む電子メールを受信したりする。
パラメータ取得部211は、CPU911などの処理装置を用いて、取得したパラメータ情報に含まれる第一要素情報と、第二要素情報とを出力する。
第一要素情報は、ユーザ秘密鍵生成センタ100が選択した加法群Gの要素Pを示す情報である。
第二要素情報は、ユーザ秘密鍵生成センタ100が算出した加法群Gの要素Ppubを示す情報である。
第一要素記憶部212は、CPU911などの処理装置を用いて、パラメータ取得部211が出力した第一要素情報を入力する。
第一要素記憶部212は、磁気ディスク装置920などの記憶装置を用いて、入力した第一要素情報を記憶する。
第二要素記憶部213は、CPU911などの処理装置を用いて、パラメータ取得部211が出力した第二要素情報を入力する。
第二要素記憶部213は、磁気ディスク装置920などの記憶装置を用いて、入力した第二要素情報を記憶する。
自然数選択部221は、CPU911などの処理装置を用いて、自然数rを選択する。このとき、自然数選択部221は、加法群Gの位数n未満の自然数のなかから、自然数rをランダムに選択する。なお、加法群Gの位数nを示す情報は、ユーザ秘密鍵生成センタ100が公開したパラメータ情報に含まれている。自然数選択部221は、パラメータ取得部211が取得したパラメータ情報から、加法群Gの位数nを示す情報を取得し、これに基づいて、自然数rを選択する。
自然数選択部221は、CPU911などの処理装置を用いて、選択した自然数rを示す情報を、乱数情報として出力する。
自然数選択部221が選択する自然数rは、受信者装置300との通信に用いるセッション鍵を生成する原料になるものである。
第四要素算出部222は、CPU911などの処理装置を用いて、第一要素記憶部212が記憶した第一要素情報を入力する。
第四要素算出部222は、CPU911などの処理装置を用いて、自然数選択部221が出力した乱数情報を入力する。
第四要素算出部222は、CPU911などの処理装置を用いて、入力した第一要素情報と、入力した乱数情報とに基づいて、加法群Gの要素Rを算出する。このとき、第四要素算出部222は、第一要素情報が示す加法群Gの要素Pと、乱数情報が示す自然数rとから、要素Pのr倍を計算し、加法群Gの要素Rとする。
第四要素算出部222は、CPU911などの処理装置を用いて、算出した加法群Gの要素Rを示す情報を、第四要素情報として出力する。
暗号化セッション鍵送信部223は、CPU911などの処理装置を用いて、第四要素算出部222が出力した第四要素情報を入力する。
暗号化セッション鍵送信部223は、通信装置915を用いて、入力した第四要素情報を、暗号化セッション鍵Cとして、受信者装置300に対して送信する。
暗号化セッション鍵Cは、インターネットなどのオープンなネットワークを介して送信する。したがって、攻撃者が暗号化セッション鍵Cを入手する可能性がある。また、攻撃者は、ユーザ秘密鍵生成センタ100が公開したパラメータ情報から、第一要素情報及び第二要素情報を入手することができる。
したがって、攻撃者は、加法群Gの要素P、Ppub(=sP)、R(=rP)を知ることができる。しかし、例えば、加法群Gが楕円曲線E上の点がなす群である場合、楕円曲線EはDH問題を解くことが困難な楕円曲線なので、攻撃者が、これらの情報から自然数sや自然数rを算出することは極めて困難である。
送信識別情報取得部231は、CPU911などの処理装置を用いて、受信者装置300のIDを示す情報(識別情報)を取得する。
送信識別情報取得部231は、CPU911などの処理装置を用いて、取得した受信者装置300のIDを示す情報を出力する。
第五要素算出部232は、CPU911などの処理装置を用いて、送信識別情報取得部231が出力した受信者装置300のIDを示す情報を入力する。
第五要素算出部232は、CPU911などの処理装置を用いて、入力した受信者装置300のIDを示す情報に対応する加法群Gの要素QIDを算出する。このとき、第五要素算出部232は、ユーザ秘密鍵生成センタ100が公開した変換関数Hを用いて、受信者装置300のIDを示す情報を、加法群Gの要素QIDに変換する。したがって、第五要素算出部232が算出する要素QIDは、ユーザ秘密鍵生成センタ100の第三要素算出部132が算出する要素QIDと同一である。
第五要素算出部232は、CPU911などの処理装置を用いて、算出した加法群Gの要素QIDを示す情報を、第五要素情報として出力する。
送信ペアリング値算出部233は、CPU911などの処理装置を用いて、第二要素記憶部213が記憶した第二要素情報を入力する。
送信ペアリング値算出部233は、CPU911などの処理装置を用いて、第五要素算出部232が出力した第五要素情報を入力する。
送信ペアリング値算出部233は、CPU911などの処理装置を用いて、自然数選択部221が出力した乱数情報を入力する。
送信ペアリング値算出部233は、CPU911などの処理装置を用いて、入力した第二要素情報と、入力した第五要素情報と、入力した乱数情報とに基づいて、加法群Gの要素Ppubと、加法群Gの要素QIDとのペアリング値のr乗を算出して、乗法群Gの要素wとする。このとき、送信ペアリング値算出部233は、ユーザ秘密鍵生成センタ100が公開したペアリング関数e:G×G→Gを用いて、第二要素情報が示す加法群Gの要素Ppubと、第五要素情報が示す加法群Gの要素QIDと、乱数情報が示す自然数rとから、e(Ppub,QIDを計算し、wとする。
送信ペアリング値算出部233は、CPU911などの処理装置を用いて、算出した乗法群Gの要素wを示す情報を、送信ペアリング値情報として出力する。
セッション鍵生成部234は、CPU911などの処理装置を用いて、第四要素算出部222が出力した第四要素情報を入力する。
セッション鍵生成部234は、CPU911などの処理装置を用いて、送信ペアリング値算出部233が出力した送信ペアリング値情報を入力する。
セッション鍵生成部234は、CPU911などの処理装置を用いて、入力した第四要素情報と、入力した送信ペアリング値情報とに基づいて、ハッシュ値を算出する。このとき、セッション鍵生成部234は、ユーザ秘密鍵生成センタ100が公開した鍵導出関数Gを用いて、ハッシュ値を算出する。セッション鍵生成部234は、CPU911などの処理装置を用いて、第四要素情報と送信ペアリング値情報とを結合してビット列情報を生成し、生成したビット列情報を鍵導出関数Gの入力とする。
ここで情報Aと情報Bとの「結合」とは、情報Aを構成するビット列(ビット長a)と情報Bを構成するビット列(ビット長b)とをすべて含むビット列(ビット長a+b)を生成することである。例えば、情報Aを構成するビット列のあとに、情報Bを構成するビット列をつなげて、全体として1つのビット列を構成する。情報Aと情報Bの順序は逆でもよいし、情報Aのビットと情報Bのビットとを交互に並べてもよい。
セッション鍵生成部234は、CPU911などの処理装置を用いて、算出したハッシュ値に基づいて、セッション鍵Kを生成する。この例において、セッション鍵生成部234は、算出したハッシュ値を示す情報をそのままセッション鍵Kとする。
セッション鍵生成部234は、CPU911などの処理装置を用いて、生成したセッション鍵Kを出力する。
セッション鍵生成部234が生成したセッション鍵Kは、受信者装置300との通信を暗号化するために用いるものである。
セッション鍵記憶部235は、CPU911などの処理装置を用いて、セッション鍵生成部234が出力したセッション鍵Kを入力する。
セッション鍵記憶部235は、磁気ディスク装置920などの記憶装置を用いて、入力したセッション鍵Kを記憶する。
平文記憶部241は、磁気ディスク装置920などの記憶装置を用いて、受信者装置300に対して通知すべき平文情報を記憶している。
暗号文生成部242は、CPU911などの処理装置を用いて、平文記憶部241が記憶した平文情報を入力する。
暗号文生成部242は、CPU911などの処理装置を用いて、セッション鍵記憶部235が記憶したセッション鍵Kを入力する。
暗号文生成部242は、CPU911などの処理装置を用いて、入力した平文情報を、入力したセッション鍵Kで暗号化して、暗号文情報を生成する。
なお、暗号文生成部242が平文情報を暗号化する際に使用する暗号方式は、共通鍵暗号方式とする。例えば、暗号文生成部242は、CPU911などの処理装置を用いて、平文情報をセッション鍵Kと同じビット長のブロックに分割して平文ブロックとし、それぞれの平文ブロックとセッション鍵Kとのビットごとの排他的論理和を算出して暗号文ブロックとし、暗号文ブロックをすべて結合して暗号文情報を生成する。
暗号文生成部242は、CPU911などの処理装置を用いて、生成した暗号文情報を出力する。
暗号文送信部243は、CPU911などの処理装置を用いて、暗号文生成部242が出力した暗号文情報を入力する。
暗号文送信部243は、通信装置915を用いて、入力した暗号文情報を、受信者装置300に対して送信する。
暗号文情報は、インターネットなどのオープンなネットワークを介して送信する。したがって、攻撃者が暗号文情報を入手する可能性がある。暗号文情報は、共通鍵暗号方式により暗号化されているので、暗号文情報を復号するには、暗号化に用いたセッション鍵Kと同一の鍵が必要である。
セッション鍵Kは、送信者装置200が外部に漏れないよう、厳重に保管する。したがって、攻撃者がセッション鍵Kを入手することはできない。攻撃者は、暗号化セッション鍵Cを入手することはできる。しかし、暗号化セッション鍵Cからセッション鍵Kを復元するには、ユーザ秘密鍵情報が必要なので、攻撃者が暗号化セッション鍵Cからセッション鍵Kを復元することもできない。したがって、攻撃者は暗号文を復号することができない。
図6は、この実施の形態における受信者装置300の機能ブロックの一例を示すブロック構成図である。
受信者装置300は、受信パラメータ取得部311、秘密鍵取得部321、秘密鍵記憶部322、暗号化セッション鍵受信部331、受信ペアリング値算出部333、セッション鍵復元部334、受信セッション鍵記憶部335、暗号文受信部341、暗号文復号部342を有する。
受信パラメータ取得部311は、CPU911などの処理装置を用いて、ユーザ秘密鍵生成センタ100が公開したパラメータ情報を取得する。
秘密鍵取得部321は、CPU911などの処理装置を用いて、ユーザ秘密鍵生成センタ100が秘密裡に通知したユーザ秘密鍵情報を取得する。
秘密鍵取得部321は、磁気ディスク装置920などの記憶装置を用いて、ユーザ秘密鍵情報を記憶する。
ユーザ秘密鍵情報は、加法群Gの要素dIDを示す情報である。ユーザ秘密鍵情報は、暗号化セッション鍵Cからセッション鍵Kを復元するための情報なので、受信者装置300は、秘密鍵記憶部322が記憶したユーザ秘密鍵情報が外部に漏れないよう、厳重に保管する。
暗号化セッション鍵受信部331は、通信装置915を用いて、送信者装置200が送信してきた暗号化セッション鍵Cを受信する。
暗号化セッション鍵受信部331は、CPU911などの処理装置を用いて、受信した暗号化セッション鍵Cに含まれる第四要素情報を出力する。
第四要素情報は、加法群Gの要素Rを示す情報である。
受信ペアリング値算出部333は、CPU911などの処理装置を用いて、秘密鍵記憶部322が記憶したユーザ秘密鍵情報を入力する。
受信ペアリング値算出部333は、CPU911などの処理装置を用いて、暗号化セッション鍵受信部331が出力した第四要素情報を入力する。
受信ペアリング値算出部333は、CPU911などの処理装置を用いて、入力したユーザ秘密鍵情報と、入力した第四要素情報とに基づいて、楕円曲線E上の点Rと、楕円曲線E上の点dIDとのペアリング値を算出して、乗法群Gの要素w’とする。このとき、受信ペアリング値算出部333は、ユーザ秘密鍵生成センタ100が公開したペアリング関数e:G×G→Gを用いて、第四要素情報が示す加法群Gの要素Rと、ユーザ秘密鍵情報が示す加法群Gの要素dIDとから、e(R,dID)を計算し、w’とする。
受信ペアリング値算出部333は、CPU911などの処理装置を用いて、算出した乗法群Gの要素w’を示す情報を、受信ペアリング値情報として出力する。
ここで、受信ペアリング値算出部333が算出した乗法群Gの要素w’は、送信者装置200の送信ペアリング値算出部233が算出した乗法群Gの要素wと等しい。
なぜなら、R=rP、dID=sQIDであるから、w’=e(R,dID)=e(rP,sQID)である。ペアリング関数e:G×G→Gは双線形なので、w’=e(P,QIDrsである。
一方、Ppub=sPであるから、w=e(Ppub,QID=e(sP,QID=e(P,QIDrsであり、w=w’となる。
セッション鍵復元部334は、CPU911などの処理装置を用いて、暗号化セッション鍵受信部331が出力した第四要素情報を入力する。
セッション鍵復元部334は、CPU911などの処理装置を用いて、受信ペアリング値算出部333が出力した受信ペアリング値情報を入力する。
セッション鍵復元部334は、CPU911などの処理装置を用いて、入力した第四要素情報と、入力した受信ペアリング値情報とに基づいて、ハッシュ値を算出する。このとき、セッション鍵復元部334は、ユーザ秘密鍵生成センタ100が公開した鍵導出関数Gを用いて、ハッシュ値を算出する。セッション鍵生成部234は、CPU911などの処理装置を用いて、第四要素情報と受信ペアリング情報とを結合してビット列情報を生成し、生成したビット列情報を鍵導出関数Gの入力とする。
受信ペアリング値算出部333が算出した乗法群Gの要素w’は、送信者装置200の送信ペアリング値算出部233が算出した乗法群Gの要素wと等しいので、受信ペアリング値算出部333が出力した受信ペアリング値情報は、送信者装置200の送信ペアリング値算出部233が出力した送信ペアリング値情報と同一である。
したがって、セッション鍵復元部334が鍵導出関数Gの入力として生成したビット列情報は、送信者装置200のセッション鍵生成部234が鍵導出関数Gの入力として生成したビット列情報と同一である。鍵導出関数Gは、同一の入力に対して常に同一の出力をする関数であるから、セッション鍵復元部334が算出したハッシュ値は、送信者装置200のセッション鍵生成部234が算出したハッシュ値と同一となる。
セッション鍵復元部334は、CPU911などの処理装置を用いて、算出したハッシュ値に基づいて、セッション鍵Kを復元する。この例において、セッション鍵復元部334は、算出したハッシュ値を示す情報を、そのままセッション鍵Kとする。
セッション鍵復元部334は、CPU911などの処理装置を用いて、復元したセッション鍵Kを出力する。
セッション鍵復元部334が算出したハッシュ値は、送信者装置200のセッション鍵生成部234が算出したハッシュ値と同一であるから、セッション鍵復元部334は、送信者装置200のセッション鍵生成部234が生成したセッション鍵Kと同一のセッション鍵を復元する。
受信セッション鍵記憶部335は、CPU911などの処理装置を用いて、セッション鍵復元部334が出力したセッション鍵Kを入力する。
受信セッション鍵記憶部335は、磁気ディスク装置920などの記憶装置を用いて、入力したセッション鍵Kを記憶する。
暗号文受信部341は、通信装置915を用いて、送信者装置200が送信してきた暗号文情報を受信する。
暗号文受信部341は、CPU911などの処理装置を用いて、受信した暗号文情報を出力する。
暗号文復号部342は、CPU911などの処理装置を用いて、暗号文受信部341が出力した暗号文情報を入力する。
暗号文復号部342は、CPU911などの処理装置を用いて、受信セッション鍵記憶部335が記憶したセッション鍵Kを入力する。
暗号文復号部342は、CPU911などの処理装置を用いて、入力した暗号文情報を、入力したセッション鍵Kで復号して、平文情報を生成する。例えば、暗号文復号部342は、CPU911などの処理装置を用いて、暗号文情報をセッション鍵Kと同じビット長のブロックに分割して暗号文ブロックとし、それぞれの暗号文ブロックとセッション鍵Kとのビットごとの排他的論理和を算出して平文ブロックとし、平文ブロックをすべて結合して平文情報を生成する。
暗号文復号部342は、CPU911などの処理装置を用いて、生成した平文情報を出力する。
セッション鍵復元部334が復元したセッション鍵Kは、送信者装置200の暗号文生成部242が暗号化に使用したセッション鍵と同一であるから、暗号文復号部342は、暗号文情報を正しく復号できる。
図7は、この実施の形態におけるユーザ秘密鍵生成センタ100がパラメータ情報を生成するパラメータ生成処理の流れの一例を示すフローチャート図である。
パラメータ生成処理は、セットアップ(Setup)処理とも呼ばれる。
S11において、第一要素選択部111は、CPU911などの処理装置を用いて、加法群Gの要素Pをランダムに選択する。
第一要素選択部111は、CPU911などの処理装置を用いて、選択した要素Pを示す情報を第一要素情報として出力する。
S12において、マスターキー選択部112は、CPU911などの処理装置を用いて、自然数sをランダムに選択する。
マスターキー選択部112は、CPU911などの処理装置を用いて、選択した自然数sを示す情報をマスターキー情報として出力する。
マスターキー記憶部113は、CPU911などの処理装置を用いて、マスターキー選択部112が出力したマスターキー情報を入力する。
マスターキー記憶部113は、磁気ディスク装置920などの記憶装置を用いて、入力したマスターキー情報を記憶する。
S13において、第二要素算出部121は、CPU911などの処理装置を用いて、S11で第一要素選択部111が出力した第一要素情報と、S12でマスターキー記憶部113が記憶したマスターキー情報とを入力する。
第二要素算出部121は、CPU911などの処理装置を用いて、入力した第一要素情報と、入力したマスターキー情報とに基づいて、要素Pのs倍を算出し、加法群Gの要素Ppubとする。
第二要素算出部121は、CPU911などの処理装置を用いて、算出した要素Ppubを示す情報を第二要素情報として出力する。
S14において、パラメータ公開部122は、CPU911などの処理装置を用いて、S11で第一要素選択部111が出力した第一要素情報と、S13で第二要素算出部121が出力した第二要素情報とを入力する。
パラメータ公開部122は、CPU911などの処理装置を用いて、入力した第一要素情報と、入力した第二要素情報とを含むパラメータ情報を公開する。
図8は、この実施の形態におけるユーザ秘密鍵生成センタ100がユーザ秘密鍵を生成する秘密鍵生成処理の流れの一例を示すフローチャート図である。
秘密鍵生成処理は、エクストラクト(Extract)処理とも呼ばれる。
S21において、識別情報取得部131は、CPU911などの処理装置を用いて、ユーザ秘密鍵を生成する受信者装置300のIDを示す情報を取得する。
識別情報取得部131は、CPU911などの処理装置を用いて、取得した受信者装置300のIDを示す情報を出力する。
S22において、第三要素算出部132は、CPU911などの処理装置を用いて、S21で識別情報取得部131が出力した受信者装置300のIDを示す情報を入力する。
第三要素算出部132は、CPU911などの処理装置を用いて、入力した受信者装置300のIDを示す情報に対応する加法群Gの要素QIDを算出する。
第三要素算出部132は、CPU911などの処理装置を用いて、算出した加法群Gの要素QIDを示す情報を第三要素情報として出力する。
S23において、秘密鍵算出部133は、S22で第三要素算出部132が出力した第三要素情報と、図7のS12でマスターキー記憶部113が記憶したマスターキー情報とを入力する。
秘密鍵算出部133は、CPU911などの処理装置を用いて、入力した第三要素情報とマスターキー情報とに基づいて、加法群Gの要素QIDのs倍を算出し、加法群Gの要素dIDとする。
秘密鍵算出部133は、CPU911などの処理装置を用いて、算出した加法群Gの要素dIDを示す情報をユーザ秘密鍵情報として出力する。
S24において、秘密鍵通知部134は、CPU911などの処理装置を用いて、S23で秘密鍵算出部133が出力したユーザ秘密鍵情報を入力する。
秘密鍵通知部134は、CPU911などの処理装置を用いて、入力したユーザ秘密鍵情報を、受信者装置300に対して秘密裡に通知する。
図9は、この実施の形態における送信者装置200がセッション鍵Kを生成するセッション鍵生成処理の流れの一例を示すフローチャート図である。
セッション鍵生成処理は、エンカプスレイト(Encapsulate)処理とも呼ばれる。
S31において、パラメータ取得部211は、CPU911などの処理装置を用いて、図7のS14でユーザ秘密鍵生成センタ100が公開したパラメータ情報を取得する。
パラメータ取得部211は、CPU911などの処理装置を用いて、取得したパラメータ情報に含まれる第一要素情報と第二要素情報とを出力する。
第一要素記憶部212は、CPU911などの処理装置を用いて、パラメータ取得部211が出力した第一要素情報を入力する。
第一要素記憶部212は、磁気ディスク装置920などの記憶装置を用いて、入力した第一要素情報を記憶する。
第二要素記憶部213は、CPU911などの処理装置を用いて、パラメータ取得部211が出力した第二要素情報を入力する。
第二要素記憶部213は、磁気ディスク装置920などの記憶装置を用いて、入力した第二要素情報を記憶する。
S32において、送信識別情報取得部231は、CPU911などの処理装置を用いて、平文情報を通知したい相手である受信者装置300のIDを示す情報を取得する。
送信識別情報取得部231は、CPU911などの処理装置を用いて、取得した受信者装置300のIDを示す情報を出力する。
S33において、自然数選択部221は、CPU911などの処理装置を用いて、自然数rをランダムに選択する。
自然数選択部221は、CPU911などの処理装置を用いて、選択した自然数rを示す情報を乱数情報として出力する。
S34において、第四要素算出部222は、CPU911などの処理装置を用いて、S31で第一要素記憶部212が記憶した第一要素情報と、S33で自然数選択部221が出力した乱数情報とを入力する。
第四要素算出部222は、CPU911などの処理装置を用いて、入力した第一要素情報と、入力した乱数情報とに基づいて、加法群Gの要素Pのr倍を算出し、加法群Gの要素Rとする。
第四要素算出部222は、CPU911などの処理装置を用いて、算出した加法群Gの要素点Rを示す情報を第四要素情報として出力する。
S35において、第五要素算出部232は、CPU911などの処理装置を用いて、S32で送信識別情報取得部231が出力した受信者装置300のIDを示す情報を入力する。
第五要素算出部232は、CPU911などの処理装置を用いて、入力した受信者装置300のIDを示す情報に対応する加法群Gの要素QIDを算出する。
第五要素算出部232は、CPU911などの処理装置を用いて、算出した加法群Gの要素QIDを示す情報を第五要素情報として出力する。
S36において、送信ペアリング値算出部233は、CPU911などの処理装置を用いて、S31で第二要素記憶部213が記憶した第二要素情報と、S35で第五要素算出部232が出力した第五要素情報と、S33で自然数選択部221が出力した乱数情報とを入力する。
送信ペアリング値算出部233は、CPU911などの処理装置を用いて、入力した第二要素情報と、入力した第五要素情報と、入力した乱数情報とに基づいて、加法群Gの要素Ppubと加法群Gの要素QIDとのペアリング値e(Ppub,QID)のr乗を算出し、乗法群Gの要素wとする。
送信ペアリング値算出部233は、CPU911などの処理装置を用いて、算出した乗法群Gの要素wを示す情報を、送信ペアリング値情報として出力する。
S37において、セッション鍵生成部234は、CPU911などの処理装置を用いて、S34で第四要素算出部222が出力した第四要素情報と、S36で送信ペアリング値算出部233が出力した送信ペアリング値情報とを入力する。
セッション鍵生成部234は、CPU911などの処理装置を用いて、入力した第四要素情報と、入力した送信ペアリング値情報とを結合してビット列情報を生成する。
セッション鍵生成部234は、CPU911などの処理装置を用いて、生成したビット列情報に対応するハッシュ値を算出し、セッション鍵Kとする。
セッション鍵生成部234は、CPU911などの処理装置を用いて、生成したセッション鍵Kを出力する。
セッション鍵記憶部235は、CPU911などの処理装置を用いて、セッション鍵生成部234が出力したセッション鍵Kを入力する。
セッション鍵記憶部235は、磁気ディスク装置920などの記憶装置を用いて、入力したセッション鍵Kを記憶する。
S38において、暗号化セッション鍵送信部223は、CPU911などの処理装置を用いて、S34で第四要素算出部222が出力した第四要素情報を入力する。
暗号化セッション鍵送信部223は、通信装置915を用いて、平文情報を通知したい受信者装置300に対して、入力した第四要素情報を、暗号化セッション鍵Cとして送信する。
図10は、この実施の形態における受信者装置300がセッション鍵Kを復元するセッション鍵復元処理の流れの一例を示すフローチャート図である。
セッション鍵復元処理は、デカプスレイト(Decapsulate)処理とも呼ばれる。
S41において、受信パラメータ取得部311は、CPU911などの処理装置を用いて、図7のS14でユーザ秘密鍵生成センタ100が公開したパラメータ情報を取得する。
S42において、秘密鍵取得部321は、CPU911などの処理装置を用いて、図8のS24でユーザ秘密鍵生成センタ100が通知したユーザ秘密鍵情報を取得する。
秘密鍵取得部321は、CPU911などの処理装置を用いて、取得したユーザ秘密鍵情報を出力する。
秘密鍵記憶部322は、CPU911などの処理装置を用いて、秘密鍵取得部321が出力したユーザ秘密鍵情報を入力する。
秘密鍵記憶部322は、磁気ディスク装置920などの記憶装置を用いて、入力したユーザ秘密鍵情報を記憶する。
S43において、暗号化セッション鍵受信部331は、通信装置915を用いて、図9のS38で送信者装置200が送信してきた暗号化セッション鍵Cを受信する。
暗号化セッション鍵受信部331は、CPU911などの処理装置を用いて、受信した暗号化セッション鍵Cに含まれる第四要素情報を出力する。
S44において、受信ペアリング値算出部333は、CPU911などの処理装置を用いて、S43で暗号化セッション鍵受信部331が出力した第四要素情報と、S42で秘密鍵記憶部322が記憶したユーザ秘密鍵情報とを入力する。
受信ペアリング値算出部333は、CPU911などの処理装置を用いて、入力した第四要素情報と、入力したユーザ秘密鍵情報とに基づいて、加法群Gの要素Rと、加法群Gの要素dIDとのペアリング値e(R,dID)を算出し、乗法群Gの要素w’とする。
受信ペアリング値算出部333は、CPU911などの処理装置を用いて、算出した乗法群Gの要素w’を示す情報を受信ペアリング値情報として出力する。
なお、入力した第四要素情報が正しく加法群Gの要素を示していない場合は、処理を続けることができないので、受信ペアリング値算出部333は、CPU911などの処理装置を用いて、第四要素情報が加法群Gの要素を示しているか否かを判断し、加法群Gの要素を示していると判断した場合に、上述の処理を行う。
第四要素情報が加法群Gの要素を示していないと判断した場合、受信ペアリング値算出部333は、CPU911などの処理装置を用いて、セッション鍵の復元に失敗したことを示す情報を出力し、セッション鍵復元処理を中断する。
S45において、セッション鍵復元部334は、CPU911などの処理装置を用いて、S43で暗号化セッション鍵受信部331が出力した第四要素情報と、S44で受信ペアリング値算出部333が出力した受信ペアリング値情報とを入力する。
セッション鍵復元部334は、CPU911などの処理装置を用いて、入力した第四要素情報と、入力した受信ペアリング値情報とを結合して、ビット列情報を生成する。
セッション鍵復元部334は、CPU911などの処理装置を用いて、生成したビット列情報に対応するハッシュ値を算出し、セッション鍵Kとする。
セッション鍵復元部334は、CPU911などの処理装置を用いて、復元したセッション鍵Kを出力する。
受信セッション鍵記憶部335は、CPU911などの処理装置を用いて、セッション鍵復元部334が出力したセッション鍵Kを入力する。
受信セッション鍵記憶部335は、磁気ディスク装置920などの記憶装置を用いて、入力したセッション鍵Kを記憶する。
次に、この実施の形態における暗号方式の安全性について説明する。
図11は、ここで議論するKEMにおけるIND−ID−CCA安全性の定義に登場する攻撃者Aを示す図である。
攻撃者Aは、セットアップオラクル、鍵漏洩オラクル、復号オラクル、ランダムオラクルを呼び出して、暗号を解読するために必要な情報を収集し、暗号化オラクルが出力したセッション鍵Kと暗号化セッション鍵cとの組み合わせが正しいか否かを判定する。
セットアップオラクルは、攻撃者Aからの要求を入力し、パラメータ情報を出力するオラクルである。
鍵漏洩オラクルは、ID(識別情報)を入力し、入力したIDに対応するユーザ秘密鍵情報(楕円曲線E上の点dID)を出力するオラクルである。
復号オラクルは、IDと暗号化セッション鍵cとを入力し、入力したIDに対応するユーザ秘密鍵を用いて、暗号化セッション鍵cから復元したセッション鍵Kを出力するオラクルである。なお、復元に失敗した場合は「拒否」を出力するものとする。
ランダムオラクルは、暗号化セッション鍵cとペアリング値情報(自然数w)とを入力し、暗号化セッション鍵cとペアリング値情報とを結合したビット列情報(c‖w)に対応するハッシュ値G(c‖w)を出力するオラクルである。
暗号化オラクルは、攻撃対象IDを入力し、セッション鍵Kと暗号化セッション鍵cとを出力する。セッション鍵Kは、入力したIDに対応するユーザ秘密鍵を用いて暗号化セッション鍵cから復元した(正しい)セッション鍵Kである場合と、暗号化セッション鍵cとは無関係の(正しくない)セッション鍵である場合とがあり、それぞれ1/2の確率である。
図12は、ここで議論する攻撃者Aの攻撃シナリオを示すフローチャート図である。
A01において、攻撃者Aは、セットアップオラクルを呼び出し、パラメータ情報を取得する。
A02において、攻撃者Aは、任意のIDを選択(生成)する。攻撃者Aは、選択したIDを鍵漏洩オラクルの入力として、鍵漏洩オラクルを呼び出し、鍵漏洩オラクルが出力したユーザ秘密鍵情報を取得する。
攻撃者Aは、必要な回数だけ鍵漏洩オラクルを呼び出してよい。
A03において、攻撃者Aは、任意のIDと任意の暗号化セッション鍵cとを選択(生成)する。攻撃者Aは、選択したIDと暗号化セッション鍵cとを復号オラクルの入力として、復号オラクルを呼び出し、復号オラクルが出力したセッション鍵K(または「拒否」)を取得する。
攻撃者Aは、必要な回数だけ復号オラクルを呼び出してよい。
次に、攻撃者Aは、暗号解読に十分な情報を収集できたか否かを判断する。不十分と判断した場合には、更に、鍵漏洩オラクルや復号オラクルを呼び出して、更に、情報を収集する。
攻撃者Aが十分な情報を収集したと判断した場合は、A04へ進む。
A04において、攻撃者Aは、攻撃対象となるIDを選択(生成)する。なお、攻撃対象IDは、鍵漏洩オラクルによりユーザ秘密鍵を取得したID以外のIDとする。
攻撃者Aは、攻撃対象IDを暗号化オラクルの入力として、暗号化オラクルを呼び出し、暗号化オラクルが出力したセッション鍵Kと暗号化セッション鍵cとを取得する。
攻撃者Aは、更に情報が必要であれば、鍵漏洩オラクルや復号オラクルを呼び出して、情報を収集する(A05・A06)。
ただし、鍵漏洩オラクルに入力するIDは、攻撃対象ID以外のIDとする。ユーザ秘密鍵情報があればセッション鍵を復元できるので、暗号を解読したことにはならないからである。
また、復号オラクルに入力するIDと暗号化セッション鍵cとは、攻撃対象IDと暗号化セッション鍵cとの組み合わせ以外のものとする。復号オラクルが暗号化セッション鍵cを復元したセッション鍵を取得したのでは、暗号を解読したことにならないからである。
ただし、攻撃対象IDと他の暗号化セッション鍵との組み合わせや、他のIDと暗号化セッション鍵cとの組み合わせであれば、復号オラクルに入力してよいものとする。
A07において、攻撃者Aは、A04で取得したセッション鍵Kと暗号化セッション鍵cとが正しい組み合わせであるか否かを判定する。
このように、攻撃者Aは、直接的な答え以外のあらゆる情報を収集することができるものとする。このような仮想的な攻撃者でも暗号を解読できないのであれば、現実の攻撃者は、それよりも収集できる情報が少ないので、暗号の解読は不可能であり、安全性が保証される。
次に、このような攻撃者Aの優位性εについて検討する。
図13は、この実施の形態における暗号方式の安全性をG−BDH問題に帰着させるために想定する(IDベースではない)公開鍵暗号方式を説明する説明図である。
鍵設定処理は、この実施の形態におけるユーザ秘密鍵生成センタ100に相当する装置が行う処理である。
鍵設定処理において、加法群Gの要素P、加法群Gの位数n未満の自然数s、加法群Gの要素P及びQをランダムに選択する。
加法群Gの要素Ppub=sP、加法群Gの要素Qpub=sPQ及びd=sQを算出する。
加法群Gの要素P及びPpub、加法群Gの要素P、Qpub及びQを公開する(パラメータ情報)。
加法群Gの要素dを秘密鍵として、通知する。
セッション鍵生成処理は、この実施の形態における送信者装置200に相当する装置が行う処理である。
セッション鍵生成処理において、公開された加法群Gの要素P及びPpub、加法群Gの要素P、Qpub及びQを取得する。
加法群Gの位数n未満の自然数rをランダムに選択する。
加法群Gの要素R=rPを算出し、暗号化セッション鍵cとして送信する。
加法群Gの要素Ppubと加法群Gの要素Qとのペアリング値e(Ppub,Q)のr乗を算出し、乗法群Gの要素wとする。
ハッシュ値G(c‖w)を算出し、セッション鍵Kとする。
セッション鍵復元処理は、この実施の形態における受信者装置300に相当する装置が行う処理である。
セッション鍵復元処理において、公開された加法群Gの要素P及びPpub、加法群Gの要素P、Qpub及びQと、秘密鍵(加法群Gの要素d)とを取得する。
セッション鍵生成処理で送信された暗号化セッション鍵c(加法群Gの要素Rを示す情報)を受信する。
加法群Gの要素Rと加法群Gの要素dとのペアリング値e(R,d)を算出し、乗法群Gの要素w’とする。
ハッシュ値G(c‖w’)を算出し、セッション鍵Kとする。
ここで、Ppub=sP、d=sQ、R=rPであるから、w=e(Ppub,Q)=e(sP,Q)=e(P,Q)sr、w’=e(R,d)=e(rP,sQ)=e(P,Q)srとなり、w=w’である。
したがって、セッション鍵生成処理で生成したセッション鍵と、セッション鍵復元処理で復元したセッション鍵とは同一である。
次に、優位性εの攻撃者Aが存在すると仮定して、攻撃者Aを利用して、上述した非IDベース公開鍵暗号方式を攻撃する攻撃者Bを想定する。
図14は、一般的な攻撃者Bの攻撃シナリオを示すフローチャート図である。
B01において、攻撃者Bは、セットアップオラクルを呼び出し、パラメータ情報を取得する。
この場合のセットアップオラクルは、攻撃者Bからの要求を入力し、図13の非IDベース公開鍵暗号方式におけるパラメータ情報を出力するオラクルである。
B02において、攻撃者Bは、任意の暗号化セッション鍵cを選択する。攻撃者Bは、選択した暗号化セッション鍵cを復号オラクルの入力として、復号オラクルを呼び出し、復号オラクルが出力したセッション鍵K(または「拒否」)を取得する。
この場合の復号オラクルは、暗号化セッション鍵cを入力し、秘密鍵dを用いて、入力した暗号化セッション鍵cから復元したセッション鍵Kを出力するオラクルである。
攻撃者Bは、暗号解読に十分な情報を得るまで、何回でも復号オラクルを呼び出して、情報を収集する。
攻撃者Bが十分な情報を収集したと判断した場合は、B03へ進む。
B03において、攻撃者Bは、暗号化オラクルを呼び出し、セッション鍵Kと暗号化セッション鍵cとを取得する。
この場合の暗号化オラクルは、攻撃者からの要求を入力し、図13の非IDベース公開鍵暗号方式におけるセッション鍵Kと暗号化セッション鍵cとを出力するオラクルである。暗号化オラクルは、やはり、1/2の確率で、正しい組み合わせのセッション鍵Kと暗号化セッション鍵cとを出力し、1/2の確率で、正しくない組み合わせのセッション鍵Kと暗号化セッション鍵cとを出力する。
攻撃者Bは、更に情報が必要であれば、復号オラクルを呼び出して、更に情報を収集する(B04)。
ただし、復号オラクルに入力する暗号化セッション鍵cは、暗号化セッション鍵c以外とする。
攻撃者Bが十分な情報を収集したと判断した場合は、B05へ進む。
B05において、攻撃者Bは、セッション鍵Kと暗号化セッション鍵cとが正しい組み合わせか否かを判定する。
図15は、攻撃者Aを利用して非IDベース公開鍵暗号方式を攻撃する攻撃者Bの構成を示す図である。
攻撃者Bは、攻撃者Aを利用するため、攻撃者Aを呼び出す。
攻撃者Aは、セットアップオラクルなどのオラクルを呼び出し、暗号の解読を試みる。ここで、攻撃者Aがオラクルと思って呼び出すブラックボックスの中身は、実は攻撃者Bである。攻撃者Bは、自分が攻撃している非IDベース公開鍵暗号方式の解読に必要な情報を攻撃者Aから引き出すための問題を設定し、攻撃者Aに攻撃される(この実施の形態における)暗号方式をシミュレートする。
攻撃者Aが、攻撃者Bにとって望ましくない方向へ進んだ場合、攻撃者Bは、攻撃者Aから情報を得るのを断念する。それ以外の場合は、攻撃者Aが判定結果を出力し、攻撃者Bが取得する。
攻撃者Bは、攻撃者Aの判定結果や攻撃者Aがオラクルに入力した情報などに基づいて、自身の攻撃対象である非IDベース公開鍵暗号方式を解読し、セッション鍵Kと暗号化セッション鍵cとが正しい組み合わせか否かを判定する。
図16は、攻撃者Aを利用して非IDベース公開鍵暗号方式を攻撃する攻撃者Bのアルゴリズムを示すフローチャート図である。
B11において、攻撃者Bは、非IDベース公開鍵暗号方式のセットアップオラクルを呼び出し、パラメータ情報(加法群Gの要素P及びPpub、加法群Gの要素P、Qpub及びQなど)を取得する(図14の攻撃シナリオにおけるB01)。
B12において、攻撃者Bは、非IDベース公開鍵暗号方式の暗号化オラクルを呼び出し、セッション鍵Kと暗号化セッション鍵cとの組を取得する(図14の攻撃シナリオにおけるB03)。
B13において、攻撃者Bは、攻撃者Aを呼び出す。
B14において、攻撃者Bは、攻撃者Aから呼び出されたオラクルをシミュレートする。
攻撃者Aは様々なオラクルを何回も呼び出すので、攻撃者Bは、それにしたがって、様々なオラクルのシミュレートを繰り返す。
攻撃者Aが判定結果を出力した場合など、攻撃者BがB12で取得したセッション鍵Kと暗号化セッション鍵cとの組み合わせが正しいか否かを判定するために必要な情報を、攻撃者Bが攻撃者Aから取得した場合、B15へ進む。
攻撃者Bは、攻撃者Aが呼び出したオラクルの入力に基づいて、攻撃者Aの判定結果などが、攻撃者Bにとって必要な情報となり得るか否かを判断する。
攻撃者Bが攻撃者Aから必要な情報を取得し得ないと判断した場合、B16へ進む。
B15において、攻撃者Bは、攻撃者Aから取得した情報に基づいて、B12で取得した非IDベース公開鍵暗号方式のセッション鍵Kと暗号化セッション鍵cとの組が、正しいか否かを判定する。
その後、B17へ進む。
B16において、攻撃者Bは、判定結果をランダムに生成する。攻撃者Bは、B12で取得したセッション鍵Kと暗号化セッション鍵cとの組み合わせが正しいか否かを判定するために必要な情報を、攻撃者Aからの得ることができなかったので、ランダムに判定する。ランダムな判定が当たる確率は、1/2である。
B17において、攻撃者Bは、判定した判定結果を出力する。
図17は、攻撃者Bがオラクルをシミュレートするオラクルシミュレート処理の流れを示すフローチャート図(その1)である。
これは、図16のB14に相当する処理である。
攻撃者Aは、図16のB13で呼び出されると、最初に(攻撃者Bがシミュレートする)セットアップオラクルを呼び出す(図12の攻撃シナリオにおけるA01)。
攻撃者Aが呼び出したオラクルが、セットアップオラクルである場合、B21へ進む。
B21において、攻撃者Bは、セットアップオラクルの出力として、攻撃者Aに対して、(この実施の形態の暗号方式の)パラメータ情報を出力する。
攻撃者Bは、非IDベース公開鍵暗号方式を攻撃するために必要な情報を攻撃者Aから取得できるように、攻撃者Aが攻撃する(この実施の形態の)暗号方式のパラメータを設定する。
B11で攻撃者Bが取得した(非IDベース公開鍵暗号方式の)パラメータ情報と、B21で攻撃者Aに対して出力する(この実施の形態の暗号方式の)パラメータ情報との間には、次のような関係がある。
攻撃者Aが攻撃する暗号に使用する加法群G、加法群G、乗法群G、ペアリング関数e:G×G→Gは、攻撃者Bが攻撃する非IDベース公開鍵暗号方式で使用するものと同一のものである。
攻撃者Aが攻撃する暗号に使用する加法群Gの要素P及びPpubは、攻撃者BがB11で取得したパラメータ情報が示す加法群Gの要素P及びPpubと同一である。
攻撃者Aが攻撃する暗号に使用する鍵導出関数Gは、やはり、攻撃者Bが攻撃する非IDベース公開鍵暗号方式で使用するものと同一のものである。
なお、以下の議論において、鍵導出関数G及び変換関数Hは、ランダムオラクルであるものとする。攻撃者Aは、鍵導出関数G及び変換関数Hの値が必要な場合、攻撃者Bがシミュレートしているランダムオラクルを呼び出すことにより、鍵導出関数Gや変換関数Hの値を取得する。
その後、セットアップオラクルのシミュレート処理を終了し、攻撃者Aが次のオラクルを呼び出すのを待つ。
攻撃者Aが呼び出したオラクルが、鍵導出関数Gであるランダムオラクル(以下「ランダムオラクルG」という。)である場合、B31へ進む。
B31において、攻撃者Bは、ランダムオラクルGの入力として、攻撃者Aから、暗号化セッション鍵c(加法群Gの要素Rを示す情報(第四要素情報)を含む)と、乗法群Gの要素wを示す情報(送信ペアリング値情報)とを入力する。
B32において、攻撃者Bは、入力した情報をそのまま非IDベース公開鍵暗号方式のランダムオラクルの入力として、非IDベース公開鍵暗号方式のランダムオラクルを呼び出す。
攻撃者Bは、非IDベース公開鍵暗号方式のランダムオラクルの出力を取得する。
B33において、攻撃者Bは、B32で取得した情報をそのまま、ランダムオラクルGの出力として、攻撃者Aに対して出力する。
攻撃者Aが攻撃する暗号方式の鍵導出関数Gは、攻撃者Bが攻撃する非IDベース公開鍵暗号方式の鍵導出関数Gと同一なので、攻撃者Bは、非IDベース公開鍵暗号方式のランダムオラクルを呼び出すことにより、ランダムオラクルGの出力を取得する。
その後、ランダムオラクルGのシミュレート処理を終了し、攻撃者Aが次のオラクルを呼び出すのを待つ。
攻撃者Aが呼び出したオラクルが、変換関数Hであるランダムオラクル(以下「ランダムオラクルH」という。)である場合、B41へ進む。
B41において、攻撃者Bは、ランダムオラクルHの入力として、攻撃者Aから、IDを示す情報を入力する。
B42において、攻撃者Bは、B41で入力した情報が示すIDが、攻撃者Aから問い合わせを受けたことがない(新しい)IDか、既に問い合わせを受けたことがある(古い)IDかを判断する。
攻撃者Bは、攻撃者Aに対してランダムオラクルHとして答えた出力をリストHlistに記憶しておく。攻撃者Bは、リストHlistに基づいて、B41で入力した情報が示すIDが新しいか古いかを判断する。
古いIDであると判断した場合、B43へ進む。
新しいIDであると判断した場合、B44へ進む。
B43において、攻撃者Bは、リストHlistに基づいて、ランダムオラクルHの出力として、攻撃者Aに対して、前の出力と同じ出力をする。
その後、ランダムオラクルHのシミュレート処理を終了し、攻撃者Aが次のオラクルを呼び出すのを待つ。
B44において、攻撃者Bは、ランダムオラクルHが呼ばれたのが何回目であるかを判断する。
攻撃者Bは、あらかじめ、ランダムオラクルHが呼ばれる回数の上限q以下の自然数jをランダムに選択しておく。
ランダムオラクルHが呼ばれたのがj回目でないと判断した場合、B45へ進む。
ランダムオラクルHが呼ばれたのがj回目であると判断した場合、B46へ進む。
B45において、攻撃者Bは、加法群Gの位数nより小さい自然数のなかから、自然数bをランダムに選択する。
攻撃者Bは、B11で取得したパラメータ情報が示す加法群Gの要素Pと、選択した自然数bとから、加法群Gの要素Pのb倍を算出し、加法群Gの要素Q(=b)とする。
攻撃者Bは、ランダムオラクルHの出力として、攻撃者Aに対して、算出した加法群Gの要素Qを示す情報を出力する。
攻撃者Bは、B41で入力した情報が示すID、算出した加法群Gの要素Q、選択した自然数bの組(ID,Q,b)を示す情報をリストHlistに追加して、記憶する。
なお、組(ID,Q,b)は、ランダムオラクルHの入力として、一番目の値「ID」を入力した場合に、ランダムオラクルHの出力として、二番目の値「Q」を出力したことを示す。また、三番目の値「b」は、二番目の値「Q」が、B11で取得したパラメータ情報が示す加法群Gの要素Pのb倍であることを示す。
その後、ランダムオラクルHのシミュレート処理を終了し、攻撃者Aが次のオラクルを呼び出すのを待つ。
B46において、攻撃者Bは、ランダムオラクルHの出力として、攻撃者Aに対して、B11で取得したパラメータ情報が示す加法群Gの要素Qを出力する。
攻撃者Bは、B41で入力した情報が示すID、出力した加法群Gの要素Q、「*」の組(ID,Q,*)を示す情報をリストHlistに追加して、記憶する。
ここで、組(ID,Q,*)の三番目の値「*」のところには、本来、二番目の値である加法群Gの要素Qが、B11で取得したパラメータ情報が示す加法群Gの要素Pの何倍であるかを示す自然数(B45におけるb)を記憶すべきである。しかし、攻撃者Bは、加法群Gの要素Qが加法群Gの要素Pの何倍であるかを知らないので、不明であることを示す印として「*」を記憶する。「*」は、B45で記憶するbとして有り得ない数値(例えば、0)であってもよい。
その後、ランダムオラクルHのシミュレート処理を終了し、攻撃者Aが次のオラクルを呼び出すのを待つ。
攻撃者Aがこれ以外のオラクルを呼び出した場合については、図18で説明する。
図18は、攻撃者Bがオラクルをシミュレートするオラクルシミュレート処理の流れを示すフローチャート図(その2)である。
これは、図17と同様に、図16のB14に相当する処理である。
攻撃者Aが呼び出したオラクルが、鍵漏洩オラクルである場合(図12の攻撃シナリオにおけるA02・A05)、B51へ進む。
B51において、攻撃者Bは、鍵漏洩オラクルの入力として、攻撃者Aから、IDを示す情報を入力する。
B52において、攻撃者Bは、ランダムオラクルHについてのオラクルシミュレート処理(図17のB41〜B46)を呼び出す。ランダムオラクルHの入力は、B51で入力したIDを示す情報である。ランダムオラクルHの出力は、攻撃者Aではなく、攻撃者B自身に渡される。
攻撃者Bは、リストHlistに基づいて、B51で入力した情報が示すIDに対応する組(ID,QID,bID)を取得する。
B53において、攻撃者Bは、B52で取得したbIDが「*」であるか否かを判断する。
IDが「*」でないと判断した場合、B54へ進む。
IDが「*」であると判断した場合、オラクルシミュレート処理を中断し、図16のB16へ進む。
B54において、攻撃者Bは、B11で取得したパラメータ情報が示す加法群Gの要素Qpubと、B52で取得したbIDとから、加法群Gの要素QpubのbID倍を算出し、加法群Gの要素dID(=bIDpub)とする。
攻撃者Bは、鍵漏洩オラクルの出力として、攻撃者Aに対して、算出した加法群Gの要素dID(ユーザ秘密鍵)を出力する。
その後、鍵漏洩オラクルのシミュレート処理を終了し、攻撃者Aが次のオラクルを呼び出すのを待つ。
非IDベース公開鍵暗号方式のパラメータ情報が示す加法群Gの要素Pと加法群Gの要素Qpubとの間には、Qpub=sPという関係がある(図13の鍵設定処理参照)。
したがって、攻撃者Bが、あるIDについて、ランダムオラクルHとして出力した加法群Gの要素QIDと、鍵漏洩オラクルとして出力した加法群Gの要素dIDとの間には、dID=sQIDという関係がある(∵QID=bID、dID=bIDpub=bIDsP)。
すなわち、攻撃者Bは、非IDベース公開鍵暗号方式のマスターキーである自然数sを知らされていないが、攻撃者Aが攻撃する暗号のマスターキーとして、攻撃者B自身が知らない自然数sを設定していることになる。
なお、B52で取得したbIDが「*」である場合には、攻撃者Bは、ユーザ秘密鍵dIDを算出できないので、鍵漏洩オラクルをシミュレートすることができない。そのため、B53でbIDが「*」であるか否かを判断し、bIDが「*」である場合には、シミュレート処理を中断する。
攻撃者Aが呼び出したオラクルが、復号オラクルである場合(図12の攻撃シナリオにおけるA03・A06)、B61へ進む。
B61において、攻撃者Bは、復号オラクルの入力として、攻撃者Aから、IDを示す情報と、暗号化セッション鍵cとを入力する。
B62において、攻撃者Bは、ランダムオラクルHについてのオラクルシミュレート処理(図17のB41〜B46)を呼び出す。ランダムオラクルHの入力は、B61で入力したIDを示す情報である。ランダムオラクルHの出力は、攻撃者Aではなく、攻撃者B自身に渡される。
攻撃者Bは、リストHlistに基づいて、B61で入力した情報が示すIDに対応する組(ID,QID,bID)を取得する。
B63において、攻撃者Bは、B62で取得したbIDが「*」であるか否かを判断する。
IDが「*」でないと判断した場合、B64へ進む。
IDが「*」であると判断した場合、B65へ進む。
B64において、攻撃者Bは、B61で入力したIDに対応するユーザ秘密鍵dIDを算出する。すなわち、攻撃者Bは、B11で取得したパラメータ情報が示す加法群Gの要素Qpubと、B62で取得した自然数bIDとから、加法群Gの要素QpubのbID倍を算出し、ユーザ秘密鍵、dIDとする。
攻撃者Bは、B61で入力した暗号化セッション鍵cを、算出したユーザ秘密鍵dIDで復号し、復号結果とする。
その後、B66へ進む。
B65において、攻撃者Bは、B61で入力した暗号化セッション鍵cを、そのまま非IDベース公開鍵暗号方式の復号オラクルの入力として、非IDベース公開鍵暗号方式の復号オラクルを呼び出す(図14の攻撃シナリオにおけるB02・B04)。
攻撃者Bは、非IDベース公開鍵暗号方式の復号オラクルの出力を取得し、復号結果とする。
B66において、攻撃者Bは、復号オラクルの出力として、攻撃者Aに対して、B64またはB65で取得した復号結果を出力する。
その後、復号オラクルのシミュレート処理を終了し、攻撃者Aが次のオラクルを呼び出すのを待つ。
鍵漏洩オラクルの説明で述べたように、攻撃者Bは、攻撃者Aが攻撃する暗号のマスターキーとして、攻撃者Bが攻撃する非IDベース公開鍵暗号方式のマスターキーである自然数sを設定している。
攻撃者Bは、自然数sを知らないが、bIDが「*」でない場合には、ユーザ秘密鍵dIDを算出できるので、これを用いて、暗号化セッション鍵cを復号する。
IDが「*」である場合、攻撃者Bは、ユーザ秘密鍵dID(=sQ)を算出できないが、この場合のユーザ秘密鍵dIDは、攻撃者Bが攻撃する非IDベース公開鍵暗号方式の秘密鍵dと同じである(図13の鍵設定処理参照)。
したがって、攻撃者Bは、非IDベース公開鍵暗号方式の復号オラクルを呼び出すことにより、暗号化セッション鍵cを復号した復号結果を取得し、攻撃者Aに対して出力することができる。
攻撃者Aが呼び出したオラクルが、暗号化オラクルである場合(図12の攻撃シナリオにおけるA04)、B71へ進む。
B71において、攻撃者Bは、暗号化オラクルの入力として、攻撃者Aから、攻撃対象IDを示す情報を入力する。
B72において、攻撃者Bは、ランダムオラクルHについてのオラクルシミュレート処理(図17のB41〜B46)を呼び出す。ランダムオラクルHの入力は、B71で入力したIDを示す情報である。ランダムオラクルHの出力は、攻撃者Aではなく、攻撃者B自身に渡される。
攻撃者Bは、リストHlistに基づいて、B71で入力した情報が示すIDに対応する組(ID,QID ,bID )を取得する。
B73において、攻撃者Bは、B72で取得したbID が「*」であるか否かを判断する。
ID が「*」であると判断した場合、B74へ進む。
ID が「*」でないと判断した場合、オラクルシミュレート処理を中断し、図16のB16へ進む。
B74において、攻撃者Bは、暗号化オラクルの出力として、攻撃者Aに対して、図16のB12で取得したセッション鍵Kと暗号化セッション鍵cとの組を出力する。
その後、暗号化オラクルのシミュレート処理を終了し、攻撃者Aが次のオラクルを呼び出すのを待つ。
図12の攻撃シナリオによれば、攻撃者Aは、暗号化オラクルを呼び出したあと、必要に応じて鍵漏洩オラクルや復号オラクルを呼び出す(A05、A06)。
攻撃者Bは、これに対しても同様に、オラクルシミュレート処理を行い、オラクルとしての出力を、攻撃者Aに対して、出力する。
その後、攻撃者Aは、セッション鍵Kと暗号化セッション鍵cとの組み合わせが正しいか否かを判定し(図12のA07)、判定結果を出力する。
攻撃者Bは、攻撃者Aが出力した判定結果を取得し、取得した判定結果をそのまま非IDベース公開鍵暗号方式に対する判定結果とする。
攻撃者Bは、取得した判定結果をそのまま出力する(図16のB15)。
非IDベース公開鍵暗号方式において暗号化セッション鍵cを復号する秘密鍵d=sQは、攻撃者Bに知らされていない。
攻撃者Bは、攻撃者AがランダムオラクルHや復号オラクルに入力した情報が示すIDに対応する加法群Gの要素QIDのうちの1つに、非IDベース公開鍵暗号方式のパラメータである加法群Gの要素Qを割り当てる。
攻撃者Bは、攻撃者Aが攻撃する暗号方式のマスターキーを、上述したように自然数sに設定しているので、点Qを割り当てたIDに対応するユーザ秘密鍵dIDは、sQである。
したがって、攻撃者Aが攻撃対象IDとして、点Qを割り当てたIDを選択した場合、攻撃者Bは、攻撃者Aの判定結果を、そのまま、非IDベース公開鍵暗号方式を攻撃する攻撃者Bの判定結果とすることができる。攻撃者Aの判定結果が正しければ、攻撃者Bの判定結果も正しく、攻撃者Aの判定結果が間違っていれば、攻撃者Bの判定結果も間違うこととなる。
攻撃者Bは、攻撃者Aが望ましくない方向へ進んだ場合に、オラクルシミュレート処理を中断し、ランダムな判定を行う(図16のB16)ので、攻撃者Bの優位性εは、攻撃者Aの優位性εより低い。
ここで、攻撃者Bがオラクルシミュレート処理を中断する確率について検討する。
攻撃者Bは、ランダムオラクルHに尋ねられたIDのうちの1つに、加法群Gの要素Qを割り当て、攻撃者AがそのIDを攻撃対象IDとして選択した場合に、攻撃者Aの判定結果を、自身の判定結果とする。
図12の攻撃シナリオによれば、攻撃者Aは、鍵漏洩オラクルによりユーザ秘密鍵を取得したIDを攻撃対象IDとすることはない。したがって、攻撃者Aが鍵漏洩オラクルに質問したIDが、攻撃者Bが点Qを割り当てたIDである場合、それ以上処理を続けても意味がない。
また、攻撃者Bは、点Qを割り当てたIDに対応するユーザ秘密鍵dIDを算出することができないので、そもそもオラクルシミュレート処理を続けることができない。
そこで、攻撃者Bはオラクルシミュレート処理を中断する(図18のB53で「bID=*」の場合)。
ここで、ランダムオラクルHが呼び出されて、対応する加法群Gの要素QIDを答えたIDの数を、q’とする。また、鍵漏洩オラクルが呼び出されて、対応するユーザ秘密鍵dIDを答えたIDの数をq’とする。
鍵漏洩オラクルが呼ばれた場合、攻撃者Bは、自分でランダムオラクルHを呼び出すので、鍵漏洩オラクルに尋ねられたIDの集合は、必ずランダムオラクルHに尋ねられたIDの集合の部分集合である。
したがって、攻撃者Aが鍵漏洩オラクルに質問したID(q’個)のなかに、攻撃者Bが点Qを割り当てたIDがある確率は、q’/q’である。
攻撃者Bがオラクルシミュレート処理を中断せず、攻撃者Aが図12の攻撃シナリオにおけるA04(暗号化オラクルの呼び出し)までたどり着く確率は、1−q’/q’である。
攻撃者Aが攻撃対象IDとして、攻撃者Bが点Qを割り当てたID以外のIDを選択した場合、攻撃者Bは、攻撃者Aの判定結果を、自身の判定結果とすることができない。
そこで、この場合も、攻撃者Bはオラクルシミュレート処理を中断する(図18のB73で「bID ≠*」の場合)。
攻撃者Aが、攻撃者Bが点Qを割り当てたIDを攻撃対象IDに選ぶ確率は、1/q’である。
攻撃者Bがオラクルシミュレート処理を中断せず、暗号化オラクルに答えた場合、攻撃者Aは、必要に応じて鍵漏洩オラクルを呼び出す場合がある(図12のA05)。
しかし、図12の攻撃シナリオによれば、A05における鍵漏洩オラクルの呼び出しにおいて、攻撃者Aは、攻撃対象IDについては質問しないことになっているので、この段階で、攻撃者Bがオラクルシミュレート処理を中断することはない。
以上より、攻撃者Bがオラクルシミュレート処理を中断せず、攻撃者Aの判定結果を取得する確率σは、σ=1/q’・(1−q’/q’)である。
ここで、ランダムオラクルHを呼び出す回数の上限をq、鍵漏洩オラクルを呼び出す回数の上限をqとする。
攻撃者が実際の暗号システムを攻撃する場合について考えると、ランダムオラクルHの出力を得る関数は、パラメータ情報として公開されているので、攻撃者は、何回でもランダムオラクルHを呼び出すことができる。これに対し、鍵漏洩オラクルは、例えば、複数の攻撃者が結託して複数のユーザ秘密鍵を入手した場合に相当するものであるから、攻撃者が鍵漏洩オラクルを呼び出す回数は、ランダムオラクルHを呼び出す回数と比較して、極めて少ない。
そこで、q≪qであるものとする。
ランダムオラクルHを呼び出すにあたり、ランダムオラクルHに同じIDを複数回入力してもよいので、q’≦qである。同様に、q’≦qである。
σは、q’が大きければ大きいほど小さくなる。また、2q’<q’である場合、σは、qが大きければ大きいほど小さくなる。
したがって、σ≧1/q・(1−q/q)である。
攻撃者Bが攻撃者Aの判定結果を取得した場合(確率σ)、攻撃者Bの判定結果が正しい確率は、攻撃者Aの判定結果が正しい確率と等しいので、ε+1/2(εは、この実施の形態の暗号方式に対する攻撃者Aの優位性。)である。
攻撃者Bがオラクルシミュレート処理を中断した場合(確率1−σ)、攻撃者Bは、ランダムに判定をするので、攻撃者Bの判定結果が正しい確率は、1/2である。
したがって、攻撃者Bの判定結果が正しい確率は、全体で、(ε+1/2)・σ+1/2・(1−σ)=ε・σ+1/2である。
以上より、ここで想定した非IDベース公開鍵暗号方式に対する攻撃者Bの優位性εは、ε=ε・σ≧ε/q・(1−q/q)である。
ここまでで、この実施の形態における暗号方式に対する優位性εの攻撃者Aが存在すると仮定すると、上述した非IDベース公開鍵暗号方式に対する優位性がε/q・(1−q/q)以上の攻撃者Bが構成できることが示された。
次に、上述した攻撃者Bを利用して、G−BDH問題に解答する解答者Cを想定する。
図19は、攻撃者Bを利用してG−BDH問題に解答する解答者Cの構成を示す図である。
解答者Cは、G−BDH問題を与えられる。
解答者Cは、与えられたG−BDH問題のパラメータとして、加法群Gの要素P、P (=a)及びP **(=b)、加法群Gの要素P、P (=a)、Q(=c)を取得する。ただし、解答者Cには、a、b、cは知らされない。
解答者Cの目標は、ペアリング値e(P,P を出力することである。
解答者Cは、ペアリング値e(P1,P2 の候補となる値を絞りこむため、攻撃者Bを呼び出す。
解答者Cは、攻撃者Bの攻撃を受ける非IDベース公開鍵暗号方式のオラクルをシミュレートして、攻撃者Bから情報を収集する。
解答者Cは、ペアリング値e(P1,P の候補となる値が見つかった場合、BDH決定オラクルを呼び出して、その候補値が正解であるか否かを判断させる。
解答者Cは、BDH決定オラクルが正解であると判断した場合に、その候補値を、解答者Cに与えられたG−BDH問題に対する解答として出力する。
ここで、攻撃者Bは攻撃者Aを利用して非IDベース公開鍵暗号方式を攻撃する攻撃者であるから、解答者Cは、攻撃者Aを利用してG−BDH問題に解答する解答者であるということができる。
あるいは、攻撃者Bと解答者Cとを含む全体(図の破線で示したブロック)を、攻撃者Aを利用してG−BDH問題に回答する解答者と考えてもよい。
図20は、攻撃者Bを利用してG−BDH問題に解答する解答者Cのアルゴリズムを示すフローチャート図である。
C11において、解答者Cは、加法群Gの要素P、P 、P **、P、P 、Qを取得する。
C12において、解答者Cは、攻撃者Bを呼び出す。
C13において、解答者Cは、攻撃者Bが呼び出した非IDベース公開鍵暗号方式のオラクルをシミュレートする。
C14において、解答者Cは、攻撃者Bがオラクルに入力した情報に基づいて、ペアリング値e(P,P の候補となる値wを取得する。
解答者Cは、BDH決定オラクルを呼び出して、w=e(P1,P であるか否かの判定結果を取得する。
BDH決定オラクルが、w=e(P,P であると判定した場合は、C15へ進む。
BDH決定オラクルが、w≠e(P1,P であると判定した場合は、C13に戻る。
C15において、解答者Cは、与えられたG−BDH問題に対する解答として、ペアリング値wを出力する。
図21は、解答者Cがオラクルをシミュレートするオラクルシミュレート処理の流れを示すフローチャート図(その1)である。
これは、図20のC13に相当する処理である。
攻撃者Bは、最初に、非IDベース公開鍵暗号方式のセットアップオラクルを呼び出す(図14のB01)。
攻撃者Bが呼び出したオラクルが、セットアップオラクルである場合、C21へ進む。
C21において、解答者Cは、セットアップオラクルの出力として、攻撃者Bに対して、攻撃者Bが攻撃する非IDベース公開鍵暗号方式のパラメータ情報を出力する。
解答者Cは、与えられたG−BDH問題に解答するために必要な情報を攻撃者Bから取得できるように、攻撃者Bが攻撃する非IDベース公開鍵暗号方式のパラメータを設定する。
C21で解答者Cが出力する非IDベース公開鍵暗号方式のパラメータと、C11で解答者Cが入力したG−BDH問題のパラメータとの間には、以下のような関係がある。
非IDベース公開鍵暗号方式で使用する加法群G、加法群G、乗法群G、ペアリング関数e:G×G→Gは、与えられたG−BDH問題と同一のものを使用する。
非IDベース公開鍵暗号方式のパラメータである加法群Gの要素Pは、与えられたG−BDH問題における加法群Gの要素Pである。
非IDベース公開鍵暗号方式のパラメータである加法群Gの要素Ppubは、与えられたG−BDH問題における加法群Gの要素P である。
非IDベース公開鍵暗号方式のパラメータである加法群Gの要素Pは、与えられたG−BDH問題における加法群Gの要素Pである。
非IDベース公開鍵暗号方式のパラメータである加法群Gの要素Qpubは、与えられたG−BDH問題における加法群Gの要素P である。
非IDベース公開鍵暗号方式のパラメータである加法群Gの要素Qは、与えられたG−BDH問題における加法群Gの要素Qである。
すなわち、解答者Cは、与えられたG−BDH問題の6つのパラメータのうち5つを、非IDベース公開鍵暗号方式のパラメータとして、攻撃者Bに渡す。
その後、セットアップオラクルのシミュレート処理を終了し、攻撃者Bが次のオラクルを呼び出すのを待つ。
攻撃者Bが呼び出したオラクルが、暗号化オラクルである場合(図14のB03)、C31へ進む。
C31において、解答者Cは、セッション鍵Kをランダムに生成する。
C32において、解答者Cは、暗号化オラクルとして、攻撃者Bに対して、C31で生成したセッション鍵Kと、暗号化セッション鍵cとを出力する。
なお、解答者Cは、C11で入力したG−BDH問題のパラメータである加法群Gの要素P **を示す情報を含む情報を、暗号化セッション鍵cとして出力する。
その後、暗号化オラクルのシミュレート処理を終了し、攻撃者Bが次のオラクルを呼び出すのを待つ。
セッション鍵Kがランダムな値なのは、解答者Cは、攻撃者Bが判定した判定結果には興味がなく、攻撃者Bが呼び出すオラクルの入力から情報を得ようとしているからである。
攻撃者Bが、これ以外のオラクルを呼び出した場合については、図22で説明する。
図22は、解答者Cがオラクルをシミュレートするオラクルシミュレート処理の流れを示すフローチャート図(その2)である。
これは、図20のC13に相当する処理である。
攻撃者Bが呼び出したオラクルが、ランダムオラクルである場合(図17のB32)、C41へ進む。
C41において、解答者Cは、ランダムオラクルの入力として、攻撃者Bから、暗号化セッション鍵cと、ペアリング値wを示す情報とを入力する。
暗号化セッション鍵cは、加法群Gの要素Rを示す情報(第四要素情報)を含む。また、ペアリング値wは、乗法群Gの要素である。
C42において、解答者Cは、リストνを検索する。リストνは、c、w、Kの組(c,w,K)のリストである。リストνは、解答者Cが、ランダムオラクルのシミュレート処理において、それまでに入力した(c,w)の組と、その入力(c,w)に対して出力したKとの対応関係を示すものである。
解答者Cは、リストνを検索し、C41で入力した(c,w)について、それまでに同じ(c,w)を入力したことがあるか否かを判断する。
同じ(c,w)を入力したことがある場合、リストνから、その入力(c,w)に対して出力したKを取得し、C50へ進む。
同じ(c,w)を入力したことがない場合、C43へ進む。
C43において、解答者Cは、BDH決定オラクルを呼び出す。解答者Cは、BDH決定オラクルに対して、P、P 、R、P、P 、Q、wを入力する。
なお、P、P 、P、P 、Qは、図20のC11で解答者Cが入力したG−BDH問題のパラメータである。Rは、C41で入力した暗号化セッション鍵cに含まれる情報(第四要素情報)が示す加法群Gの要素である。wは、C41で入力した情報が示すペアリング値(乗法群Gの要素)である。
BDH決定オラクルは、入力したP、P 、R、P、P 、Qに対応するペアリング値がwと等しいか否かを判定し、判定結果を出力する。
ここで、解答者Cに与えられたG−BDH問題のパラメータと、解答者CがBDH決定オラクルに入力するパラメータとの違いは、P **がRになっている点である。したがって、R=P **であれば、BDH決定オラクルは、wが解答者Cが答えるべきペアリング値であるか否かを判定することになる。
また、P =Ppub(=sP)、R=rP、P =Qpub(=sP)であるから、BDH決定オラクルは、w=e(P1,Q)srであるか否かを判定することになる(∵Q=cだから、ペアリングeの双線形より、e(P1,Psrc =e(P1,csr=e(P1,Q)sr)。
BDH決定オラクルは、w=e(P1,Q)srか否かを判定し、判定結果を出力する。
解答者Cは、BDH決定オラクルが出力した判定結果を取得する。
BDH決定オラクルが、w=e(P1,Q)srであると判定した場合には、C44へ進む。
BDH決定オラクルが、w≠e(P1,Q)srであると判定した場合には、C48へ進む。
C44において、解答者Cは、C41で入力した暗号化セッション鍵cが、C32で出力した暗号化セッション鍵cであるか否かを判断する。
c=cであると判断した場合、C45へ進む。
c≠cであると判断した場合、C46へ進む。
C45において、解答者Cは、G−BDH問題に対する解答として、wを出力し、処理を終了する(図20のC15)。
C41で入力した暗号化セッション鍵cが、C32で出力した暗号化セッション鍵cである場合、暗号化セッション鍵cに含まれる情報が示す加法群Gの要素Rは、C11で入力したGBDH問題のパラメータである加法群Gの要素P **である。
したがって、ペアリング値wは、解答者Cに対して与えられたG−BDH問題の解答となる。
C46において、解答者Cは、組(c,w)をリストνに追加する。リストνは、BDH決定オラクルがw=e(P1,Q)srであると判定した組(c,w)のリストである。
C47において、解答者Cは、リストνを検索する。リストνは、暗号化セッション鍵c、セッション鍵Kの組(c,K)のリストである。リストνは、解答者Cが、復号オラクルのシミュレート処理(C51〜C58)において、入力した暗号化セッション鍵cと、その入力cに対して出力したセッション鍵Kとの対応関係を示すものである。
解答者Cは、リストνを検索し、C41で入力した暗号化セッション鍵cについて、それまでに復号オラクルが同じ暗号化セッション鍵cを入力したことがあるか否かを判断する。
復号オラクルが同じ暗号化セッション鍵cを入力したことがあると判断した場合、解答者Cは、復号オラクルがその入力cに対して出力したセッション鍵Kを、リストνから取得し、C49へ進む。
復号オラクルが同じ暗号化セッション鍵cを入力したことがないと判断した場合、C48へ進む。
C48において、解答者Cは、セッション鍵Kをランダムに生成する。
C49において、解答者Cは、C41で入力したc、wと、C47で取得したKあるいはC48で生成したKとの組(c,w,K)を、リストνに追加する。
C50において、解答者Cは、ランダムオラクルの出力として、攻撃者Bに対して、C42あるいはC47で取得したK、またはC48で生成したKを、出力する。
その後、ランダムオラクルのシミュレート処理を終了し、攻撃者Bが次のオラクルを呼び出すのを待つ。
ランダムオラクルは、ランダムな値を出力するが、同じ入力に対しては同じ出力をする。
したがって、以前に入力したことがある(c,w)の組については、それに対応して出力したセッション鍵Kをリストνに記憶しておき、同じセッション鍵Kを出力する。
また、c,wの組み合わせが正しい場合、ランダムオラクルが出力するKは、暗号化セッション鍵cを復号したものになるはずなので、同じcを入力した復号オラクルが出力するKと等しい。
ここで、c,wの組み合わせが正しい場合とは、暗号化セッション鍵cに含まれる情報が示す加法群Gの要素Rに基づいて算出したペアリング値e(R,d)(ただし、dは非IDベース公開鍵暗号方式の秘密鍵)がwと等しい場合のことである。
非IDベース公開鍵暗号方式の構成によれば、e(R,d)=e(Ppub,Q)=e(P1,Q)srであるから、解答者Cは、c,wの組み合わせが正しいか否かを、BDH決定オラクルの判定結果によって知ることができる。
したがって、以前に復号オラクルが入力したことがある暗号化セッション鍵cについては、それに対応して復号オラクルが出力したKをリストνに記憶しておき、BDH決定オラクルがw=e(P1,Q)srであると判定した場合、同じセッション鍵Kを出力する。
それ以外の場合、すなわち、c,wの組み合わせが正しくない場合や、同じcや(c,w)を入力したことがない場合には、ランダムに生成したセッション鍵Kを出力する。
このようにして、解答者Cは、攻撃者Bから見たランダムオラクルをシミュレートする。
攻撃者Bが呼び出したオラクルが、復号オラクルである場合、C51へ進む。
C51において、解答者Cは、復号オラクルの入力として、攻撃者Bから暗号化セッション鍵cを入力する。
暗号化セッション鍵cは、加法群Gの要素Rを示す情報(第四要素情報)を含む。
C52において、解答者Cは、加法群Gの要素Rが、G−BDH問題における加法群Gの要素P **と等しいか否かを判断する。
等しい場合、解答者Cは、G−BDH問題に対する解答に失敗したものとして、処理を打ち切る。
等しくない場合、C53へ進む。
これは、G−BDH問題における加法群Gの要素P **を示す情報を含む暗号化セッション鍵cについての復号結果を攻撃者Bに知らせてしまうと、解答者Cは、暗号化オラクルとして、加法群Gの要素P **を示す情報を含む暗号化セッション鍵を、暗号化セッション鍵cとして、攻撃者Bに対して出力する(図21のC32)ことができなくなってしまうからである。
C53において、解答者Cは、リストνを検索する。
解答者Cは、リストνを検索し、C51で入力した暗号化セッション鍵cについて、正しい組み合わせの(c,w)を、それまでにランダムオラクルが入力したことがあるか否かを判断する。
ランダムオラクルが正しい組み合わせの(c,w)を入力したことがある場合、解答者Cは、更にリストνを検索し、正しい組み合わせの(c,w)に対して、ランダムオラクルが出力したセッション鍵Kを取得し、C57へ進む。
ランダムオラクルが正しい組み合わせの(c,w)を入力したことがない場合、C54へ進む。
C54において、解答者Cは、リストνを検索する。
解答者Cは、リストνを検索し、C51で入力した暗号化セッション鍵cについて、それまでに復号オラクルが同じ暗号化セッション鍵cを入力したことがあるか否かを判断する。
復号オラクルが同じ暗号化セッション鍵cを入力したことがない場合、C55へ進む。
復号オラクルが同じ暗号化セッション鍵cを入力したことがある場合、解答者Cは、リストνから、その入力cに対応して出力したセッション鍵Kを取得し、C57へ進む。
C55において、解答者Cは、セッション鍵Kをランダムに生成する。
C56において、解答者Cは、C51で入力した暗号化セッション鍵cとC55で生成したセッション鍵Kとの組(c,K)を、リストνに追加する。
C57において、解答者Cは、復号オラクルの出力として、攻撃者Bに対して、C54あるいはC54で取得したK、またはC55で生成したKを、出力する。
その後、復号オラクルのシミュレート処理を終了し、攻撃者Bが次のオラクルを呼び出すのを待つ。
復号オラクルが出力するセッション鍵Kは、入力した暗号化セッション鍵cを復号したものであり、ランダムオラクルが正しい組み合わせの(c,w)を入力した場合に出力するセッション鍵Kと等しい。
そのため、ランダムオラクルが入力した正しい組み合わせの(c,w)をリストνに記憶しておく。それに対応してランダムオラクルが出力したセッション鍵Kはリストνに記憶しておき、同じセッション鍵Kを出力する。
また、同じ暗号化セッション鍵cを復号すれば、当然同じセッション鍵Kになるはずなので、復号オラクルが以前に入力したことがある暗号化セッション鍵cについては、それに対応して出力したセッション鍵Kをリストνに記憶しておき、同じセッション鍵Kを出力する。
それ以外の場合には、ランダムに生成したセッション鍵Kを出力する。
このようにして、解答者Cは、攻撃者Bから見た復号オラクルをシミュレートする。
攻撃者Bは、非IDベース公開鍵暗号方式に対して優位性を有するので、暗号化オラクルが出力したセッション鍵Kと暗号化セッション鍵cとが正しく対応するものであるか否かを、(少なくとも確率的に)判断できる。
攻撃者Bがこの判断をするためには、復号オラクルによらず、独自に暗号化セッション鍵cを復号したセッション鍵Kを、なんらかの形で入手する必要がある。
セッション鍵Kは、鍵導出関数G(ランダムオラクル)の出力であるから、セッション鍵Kを入手するためには、ランダムオラクルに正しい値を入力する必要がある。
ランダムオラクルには、暗号化セッション鍵cと、cに正しく対応するペアリング値wとを入力する。
このうち、暗号化セッション鍵cは、暗号化オラクルから与えられるものであるが、ペアリング値wは、攻撃者Bが独自に生成する必要がある。
したがって、非IDベース公開鍵暗号方式に対する優位性を有する攻撃者Bは、暗号化セッション鍵cに正しく対応するペアリング値wを生成することができる。
上述したように、解答者Cは、暗号化セッション鍵cに正しく対応するペアリング値wが、解答者Cに対して与えられたG−BDH問題の解答となるように、非IDベース公開鍵暗号方式のパラメータを設定する。
解答者Cは、攻撃者Bがランダムオラクルに入力するc、wを監視し、暗号化セッション鍵cを入力した場合に、wがcに正しく対応するもの(=w)であるか否かを、BDH決定オラクルを使って判断する。
解答者Cは、攻撃者Bがcに正しく対応するwをランダムオラクルに入力した場合に、それをG−BDH問題に対する解答として出力する。
ここで、攻撃者Bは、セッション鍵Kと暗号化セッション鍵cとの対応を、常に正しく判断するとは限らないので、cに正しく対応するwをランダムオラクルに入力しない場合もある。
攻撃者Bがcに正しく対応するwをランダムオラクルに入力せず、判定結果を出力した場合、解答者Cの目論見は失敗し、解答者Cは、与えられたG−BDH問題に対する解答を、攻撃者Bから取得することができない。その場合、解答者Cは、攻撃者Bの助けなしで、与えられたG−BDH問題に対する解答を見つける必要がある。
攻撃者Bが、セッション鍵cと、cに正しく対応するペアリング値wとをランダムオラクルに入力する事象をFとし、事象Fが発生する確率をPr[F]とする。
また、解答者Cが、攻撃者Bの助けなしで、正解を見つける確率をεとする。
解答者Cが、与えられたG−BDH問題に正しく解答する確率を、G−BDH問題に対する解答者Cの優位性Adv G−BDHと定義すると、Adv G−BDH=Pr[F]+ε≧Pr[F](∵ε≧0)である。
事象Fが発生せず、攻撃者Bが判定結果を出力した場合、攻撃者Bは、セッション鍵cと、cに正しく対応するペアリング値wとをランダムオラクルに入力していないので、攻撃者Bは、セッション鍵Kと暗号化セッション鍵cとの対応を正しく判定することができない。したがって、攻撃者Bの判定結果が正解である事象Tが発生する確率Pr[T]は、1/2である。
一方、攻撃者Bが、セッション鍵cと、cに正しく対応するペアリング値wとをランダムオラクルに入力した場合でも、そこで処理を終了するのではなく、攻撃者Bが判定結果を出力するまで処理を続けたとすると、攻撃者Bは、非IDベース公開鍵暗号方式に対する優位性を有するので、攻撃者Bの判定結果が正解である事象Tが発生する確率Pr[T]は、1/2より大きい。
ここで、事象Tが発生する場合には、事象Fが発生した場合と、事象Fが発生せしなかった場合とが含まれる。
したがって、事象Tが発生する確率Pr[T]は、事象Fが発生し、かつ、攻撃者Bの判定結果が正解である確率(Pr[F∧T])と、事象Fが発生せず、攻撃者Bの判定結果が正解である確率(Pr[¬F∧T]=Pr[T])との和である(Pr[T]=Pr[F∧T]+Pr[T])。
また、事象Fが発生した場合であっても、必ずしも攻撃者Bの判定結果が正解であるとは限らないので、事象Fが発生し、かつ、攻撃者Bの判定結果が正解である確率Pr[F∧T]は、事象Fが発生する確率Pr[F]以下である(Pr[F∧T]≦Pr[F])。
以上より、Pr[T]≦Pr[F]+1/2であることがわかる。
解答者Cが処理を打ち切るもう一つのケースとして、攻撃者Bが暗号化オラクルを呼び出す前に、解答者Cが暗号化オラクルの出力として攻撃者Bに対して出力しようとしていたセッション鍵cを、攻撃者Bが復号オラクルに対して入力した場合がある。
この事象をFとし、Fが発生する確率をPr[F]とする。
攻撃者Bが、判定結果を出すまでに復号オラクルに対して入力する暗号化セッション鍵cの総数をq’とする。加法群Gの位数をnとすると、攻撃者Bは、加法群Gのn個の要素のなかから、暗号化セッション鍵に含まれる情報が示す加法群Gの要素Rを選択するので、Pr[F]=q’/nである。
攻撃者Bが復号オラクルを呼び出すのは、攻撃者Aが復号オラクルを呼び出した場合のうち「bID=*」である場合(図18のB65)なので、攻撃者Aが復号オラクルを呼び出す回数の最大値をqとすると、q’≦qである。したがって、Pr[F]≦q/nである。
一方、Fが発生した場合には、攻撃者Bに対して、異なる問題を与えて処理を続け、攻撃者Bが判定結果を出力したとすると、攻撃者Bの判定結果が正解である事象Tが発生する確率Pr[T]は、ε+1/2(ただし、εは、想定した非IDベース公開鍵暗号方式に対する攻撃者Bの優位性。)である。
ここで、事象Tが発生する場合には、事象Fが発生した場合と、事象Fが発生せしなかった場合とが含まれる。
したがって、事象Tが発生する確率Pr[T]は、事象Fが発生し、かつ、攻撃者Bの判定結果が正解である確率(Pr[F∧T])と、事象Fが発生せず、攻撃者Bの判定結果が正解である確率(Pr[¬F∧T]=Pr[T])との和である(Pr[T]=Pr[F∧T]+Pr[T])。
事象Fが発生し、かつ、攻撃者Bの判定結果が正解である確率Pr[F∧T]は、当然、事象Fが発生する確率Pr[F]以下である(Pr[F∧T]≦Pr[F])。
以上より、ε+1/2≦Pr[F]+Pr[T]≦q/n+Pr[F]+1/2。すなわち、ε≦q/n+Pr[F]であることがわかる。
ここで、Pr[F]≦Adv G−BDHだから、ε≦Adv G−BDH+q/n。
前述したように、攻撃者Bの優位性εは、ε≧ε/q・(1−q/q)(ただし、εは、攻撃者Aのこの実施の形態における暗号方式に対する優位性。qは、攻撃者AがランダムオラクルHを呼び出す回数の最大値。qは、攻撃者Aが鍵漏洩オラクルを呼び出す回数の最大値。)である。
したがって、解答者Cの優位性Adv G−BDHは、Adv G−BDH≧ε−q/n≧ε/q・(1−q/q)−q/nである。
≪qなので、Adv G−BDH≧ε/q−q/n。
以上、この実施の形態における暗号方式のIND−ID−CCA安全性が、G−BDH問題に帰着することを示した。
この実施の形態における暗号方式に対する攻撃者の優位性は、q(Adv G−BDH+q/n)以下である。
この実施の形態における暗号方式において、送信者装置200のセッション鍵生成部234及び受信者装置300のセッション鍵復元部334は、加法群Gの要素Rを示す第四要素情報とペアリング値wを示す送信ペアリング値情報(またはペアリング値w’(=w)を示す受信ペアリング値情報)とを結合したビット列情報を、鍵導出関数Gの入力としている。
比較のため、鍵導出関数Gの入力が、ペアリング値w(またはペアリング値w’)を示す情報だけである場合について検討する。以下、この暗号方式を、「比較例の暗号方式」という。
比較例の暗号方式について、上記説明したのと同様の安全性証明を行うため、比較例の暗号方式を攻撃する攻撃者A’を想定する。
攻撃者A’の構成・動作は、ランダムオラクルGに入力するのが、ペアリング値wを示す情報だけである点を除けば、上述した攻撃者Aと同様である。
比較例の暗号方式に対応する非IDベース公開鍵暗号方式として、鍵導出関数Gの入力がペアリング値wを示す情報だけである点を除いて、上述した非IDベース公開鍵暗号方式と同じ暗号方式を想定し、攻撃者A’を利用して、比較例の暗号方式に対応する非IDベース公開鍵暗号方式を攻撃する攻撃者B’を想定する。
攻撃者B’の構成・動作は、ランダムオラクルGのシミューレート処理において、攻撃者A’から入力するのが、ペアリング値wを示す情報だけである点と、呼び出すランダムオラクルに入力するのが、ペアリング値wを示す情報だけである点との2つの点が、攻撃者Bと異なる。
しかし、攻撃者B(攻撃者B’)は、攻撃者A(攻撃者A’)が呼び出したランダムオラクルGの入力をそのまま、ランダムオラクルの入力として呼び出し、ランダムオラクルの出力をそのまま、ランダムオラクルGの出力として攻撃者A(攻撃者A’)に返すので、攻撃者Bと攻撃者B’との間に実質的な違いはない。
次に、攻撃者B’を利用して、G−BDH問題に解答する解答者C’を想定する。
解答者C’の構成・動作は、ランダムオラクルをシミュレートするオラクルシミュレート処理を除き、解答者Cと同様である。
図23は、解答者C’がランダムオラクルをシミュレートするオラクルシミュレート処理の流れを示すフローチャート図である。
C41’において、解答者C’は、ランダムオラクルの入力として、攻撃者Bから、ペアリング値wを示す情報を入力する。
C42’において、解答者C’は、リストν’を検索する。リストνは、組(w,K)のリストである。リストν’は、解答者Cが、ランダムオラクルのシミュレート処理において、それまでに入力したペアリング値wと、その入力wに対して出力したセッション鍵Kとの対応関係を示すものである。
解答者C’は、リストν’を検索し、C41’で入力したwについて、それまでに同じwを入力したことがあるか否かを判断する。
同じwを入力したことがある場合、リストνから、その入力wに対して出力したKを取得し、C49’へ進む。
同じwを入力したことがない場合、C43’へ進む。
C43’において、解答者C’は、BDH決定オラクルを呼び出す。解答者C’は、BDH決定オラクルに対して、P、P 、P **、P、P 、Q、wを入力する。
なお、P、P 、P **、P、P 、Qは、解答者C’に与えられたG−BDH問題のパラメータである。したがって、BDH決定オラクルは、wが解答者Cの答えるべきペアリング値であるか否かを判定し、判定結果を出力する。
解答者C’は、BDH決定オラクルが出力した判定結果を取得する。
BDH決定オラクルが、wが解答者C’の答えるべきペアリング値であると判定した場合、C44’へ進む。
BDH決定オラクルが、wが解答者C’の答えるべきペアリング値でないと判定した場合、C45’へ進む。
C44’において、解答者C’は、G−BDH問題に対する解答として、wを出力し、処理を終了する。
C45’において、解答者C’は、リストν’から、組(c,K)を一つずつ取得し、C46’の処理を繰り返す。
リストν’は、解答者C’が、復号オラクルのシミュレート処理において、それまでに入力した暗号化セッション鍵cと、その入力cに対して出力したセッション鍵Kとの対応関係を示すものである。
C46’において、解答者C’は、BDH決定オラクルを呼び出す。解答者C’は、BDH決定オラクルに対して、P、P 、R、P、P 、Q、wを入力する。
ここで、Rは、暗号化セッション鍵cに含まれる情報が示す加法群Gの要素である。したがって、BDH決定オラクルは、w=e(P1,Q)srであるか否かを判定する。すなわち、cとwとが正しく対応するものであるか否かを判定する。
BDH決定オラクルは、判定結果を出力する。
解答者C’は、BDH決定オラクルが出力した判定結果を取得する。
BDH決定オラクルが、w=e(P1,Q)srであると判定した場合、解答者C’は、復号オラクルがその入力cに対して出力したセッション鍵Kを、リストν’から取得し、繰り返し処理から抜けて、C48’へ進む。
BDH決定オラクルが、w≠e(P1,Q)srであると判定した場合、C45’に戻る。
なお、リストνに含まれるすべての組(c,K)について処理した場合には、C47’へ進む。
C47’において、解答者C’は、セッション鍵Kをランダムに生成する。
C48’において、解答者C’は、C41’で入力したwと、C46’で取得したKあるいはC47’で生成したKとの組(w,K)を、リストνに追加する。
C49’において、解答者C’は、ランダムオラクルの出力として、攻撃者Bに対して、C42’あるいはC46’で取得したK、またはC47’で生成したKを、出力する。
ランダムオラクルは、ランダムな値を出力するが、同じ入力に対しては同じ出力をする。
したがって、以前に入力したことがあるwについては、それに対応して出力したセッション鍵Kをリストν’に記憶しておき、同じセッション鍵Kを出力する。
また、ランダムオラクルの出力と、復号オラクルの出力との整合を保つため、復号オラクルに入力したcと、ランダムオラクルに入力したwとが正しい組み合わせである場合、復号オラクルが出力するセッション鍵Kと、ランダムオラクルが出力するセッション鍵Kとは、同一である必要がある。
そこで、それまでに復号オラクルに入力したことがあるcについては、それに対応して復号オラクルが出力したKを、リストνに記憶しておく。解答者C’は、BDH決定オラクルを用いて、入力したcと正しい組み合わせになるwを、以前に復号オラクルが入力したことがあるか否かを判定し、ある場合には、復号オラクルが出力したセッション鍵Kと同一のセッション鍵Kを出力する。
このようにして、解答者C’は、攻撃者B’から見たランダムオラクルをシミュレートする。
ランダムオラクルのシミュレート処理以外の点では、解答者C’は解答者Cと同様なので、G−BDH問題に対する解答者C’の優位性は、G−BDH問題に対する解答者Cの優位性と等しい。
したがって、比較例の暗号方式のIND−ID−CCA安全性は、G−BDH問題に帰着する。比較例の暗号方式に対する攻撃者A’の優位性は、q(Adv G−BDH+q/n)以下であり、この実施の形態の暗号方式に対する攻撃者Aの優位性と等しい。
次に、解答者C及び解答者C’がBDH決定オラクルを呼び出す回数について検討する。
解答者CがBDH決定オラクルを呼び出す(図22のC43)のは、攻撃者Bがランダムオラクルを呼び出した場合である。攻撃者Bがランダムオラクルを呼び出すのは、攻撃者AがランダムオラクルGを呼び出した場合である。
したがって、解答者CがBDH決定オラクルを呼び出す回数qは、q≦q(ただし、qは、攻撃者AがランダムオラクルGを呼び出す回数の最大値)である。
解答者C’がBDH決定オラクルを呼び出す(図23のC43’及びC46’)のは、攻撃者B’がランダムオラクルを呼び出した場合である。
解答者C’は、攻撃者B’がランダムオラクルを1回呼び出したのに対応して、BDH決定オラクルを、最大q’回呼び出す。ここで、q’は、攻撃者B’が復号オラクルに対して入力する暗号化セッション鍵の総数であり、リストνに含まれる組(c,K)の最大数である。
したがって、解答者C’がBDH決定オラクルを呼び出す回数qC’は、qC’≦q・q(ただし、qは、攻撃者AがランダムオラクルGを呼び出す回数の最大値。qは、攻撃者Aが復号オラクルを呼び出す回数の最大値であり、q’≦q。)である。
この実施の形態における暗号方式の安全性と、比較例の暗号方式の安全性とを比較すると、帰着する数学上の問題は、G−BDH問題であり、同一である。
また、攻撃者Aの優位性と攻撃者A’の優位性とは、等しい。
したがって、この点では、2つの暗号方式の安全性に差はない。
しかし、解答者C’がBDH決定オラクルを呼び出す回数は、解答者CがBDH決定オラクルを呼び出す回数よりも多い(∵q>1)。
G−BDH問題は、BDH決定オラクルを利用することができるという仮定のもとで、BDH問題に答える問題である。もし、BDH決定オラクルを1回も利用しないでBDH問題に答えることができるならば、すなわち、G−BDH問題よりも難しいBDH問題に答えたことになる。暗号方式が帰着する数学上の問題がBDH問題である場合、G−BDH問題に帰着する暗号方式よりも、安全性が高いといえる。
また、同じG−BDH問題に帰着する暗号方式であれば、BDH決定オラクルを利用する回数が少ないほうが、より難しい問題に帰着したことになるので、安全性が高いといえる。
したがって、この実施の形態における暗号方式の安全性は、比較例の暗号方式よりも高いことが証明された。
この実施の形態における受信者装置300は、
情報を記憶する磁気ディスク装置920などの記憶装置と、
情報を処理するCPU911などの処理装置と、
送信者装置200が送信した情報を受信する受信装置(通信装置915)と、
磁気ディスク装置920などの記憶装置を用いて、加法群Gの要素dIDを示す情報をユーザ秘密鍵情報として記憶する秘密鍵記憶部322と、
受信装置(通信装置915)を用いて、送信者装置200が送信した暗号化セッション鍵Cを受信し、CPU911などの処理装置を用いて、受信した暗号化セッション鍵Cに含まれる加法群Gの要素Rを示す情報を第四要素情報として出力する暗号化セッション鍵受信部331と、
CPU911などの処理装置を用いて、秘密鍵記憶部322が記憶したユーザ秘密鍵情報と暗号化セッション鍵受信部331が出力した第四要素情報とを入力し、CPU911などの処理装置を用いて、入力したユーザ秘密鍵情報と第四要素情報とに基づいて、加法群Gの要素Rと加法群Gの要素dIDとのペアリング値を算出して乗法群Gの要素w’とし、CPU911などの処理装置を用いて、算出した乗法群Gの要素w’を示す情報を受信ペアリング値情報として出力する受信ペアリング値算出部333と、
CPU911などの処理装置を用いて、暗号化セッション鍵受信部331が出力した第四要素情報と受信ペアリング値算出部333が出力した受信ペアリング値情報とを入力し、CPU911などの処理装置を用いて、入力した第四要素情報と受信ペアリング値情報とに基づいて、ハッシュ値を算出し、CPU911などの処理装置を用いて、算出したハッシュ値に基づいて、送信者装置200が生成したセッション鍵Kと同一のセッション鍵を復元するセッション鍵復元部334と、
を有することを特徴とする。
この実施の形態における受信者装置300によれば、セッション鍵復元部334が、加法群Gの要素Rを示す第四要素情報と、ペアリング値w’を示す受信ペアリング値情報とに基づいてハッシュ値を算出し、算出したハッシュ値に基づいて、セッション鍵Kを復元するので、G−BDH問題に効率良く帰着する安全性の高い暗号方式を実現することができるという効果を奏する。
この実施の形態における送信者装置200は、
情報を記憶する磁気ディスク装置920などの記憶装置と、
情報を処理するCPU911などの処理装置と、
受信者装置300に対して情報を送信する送信装置(通信装置915)と、
磁気ディスク装置920などの記憶装置を用いて、加法群Gの要素P1を示す情報を第一要素情報として記憶する第一要素記憶部212と、
磁気ディスク装置920などの記憶装置を用いて、加法群Gの要素Ppubを示す情報を第二要素情報として記憶する第二要素記憶部213と、
CPU911などの処理装置を用いて、第一要素記憶部212が記憶した第一要素情報と自然数rを示す乱数情報とを入力し、CPU911などの処理装置を用いて、入力した第一要素情報と乱数情報とに基づいて、加法群Gの要素Rを算出し、CPU911などの処理装置を用いて、算出した加法群Gの要素Rを示す情報を第四要素情報として出力する第四要素算出部222と、
CPU911などの処理装置を用いて、受信者装置300を識別する識別情報(受信者装置300のIDを示す情報)を入力し、CPU911などの処理装置を用いて、入力した識別情報に対応する加法群Gの要素QIDを算出し、CPU911などの処理装置を用いて、算出した加法群Gの要素QIDを示す情報を第五要素情報として出力する第五要素算出部232と、
CPU911などの処理装置を用いて、第二要素記憶部213が記憶した第二要素情報と第五要素算出部232が出力した第五要素情報と上記乱数情報とを入力し、CPU911などの処理装置を用いて、入力した第二要素情報と第五要素情報とに基づいて、加法群Gの要素Ppubと加法群Gの要素QIDとのペアリング値を算出し、CPU911などの処理装置を用いて、算出したペアリング値と入力した乱数情報とに基づいて、乗法群Gの要素wを算出し、CPU911などの処理装置を用いて、算出した乗法群Gの要素wを示す情報を送信ペアリング値情報として出力する送信ペアリング値算出部233と、
CPU911などの処理装置を用いて、第四要素算出部222が出力した第四要素情報を入力し、送信装置(通信装置915)を用いて、入力した第四要素情報を含む情報を暗号化セッション鍵Cとして受信者装置300に対して送信する暗号化セッション鍵送信部223と、
CPU911などの処理装置を用いて、第四要素算出部222が出力した第四要素情報と送信ペアリング値算出部233が出力した送信ペアリング値情報とを入力し、CPU911などの処理装置を用いて、入力した第四要素情報と送信ペアリング値情報とに基づいて、ハッシュ値を算出し、CPU911などの処理装置を用いて、算出したハッシュ値に基づいて、セッション鍵Kを生成するセッション鍵生成部234と、
を有することを特徴とする。
この実施の形態における送信者装置200によれば、セッション鍵生成部234が、加法群Gの要素Rを示す第四要素情報と、ペアリング値wを示す送信ペアリング値情報とに基づいてハッシュ値を算出し、算出したハッシュ値に基づいて、セッション鍵Kを生成するので、G−BDH問題に効率良く帰着する安全性の高い暗号方式を実現することができるという効果を奏する。
この実施の形態における暗号通信システム(IDベース公開鍵暗号通信システム800)は、
鍵生成装置(ユーザ秘密鍵生成センタ100)と、送信者装置200と、受信者装置300とを備え、
鍵生成装置(ユーザ秘密鍵生成センタ100)は、
情報を処理するCPU911などの処理装置と、
CPU911などの処理装置を用いて、加法群Gの要素P1を選択し、CPU911などの処理装置を用いて、選択した加法群Gの要素P1を示す情報を第一要素情報として出力する第一要素選択部111と、
CPU911などの処理装置を用いて、自然数sを選択し、CPU911などの処理装置を用いて、選択した自然数sを示す情報をマスターキー情報として出力するマスターキー選択部112と、
CPU911などの処理装置を用いて、第一要素選択部111が出力した第一要素情報とマスターキー選択部112が出力したマスターキー情報とを入力し、CPU911などの処理装置を用いて、入力した第一要素情報とマスターキー情報とに基づいて、加法群Gの要素Ppubを算出し、CPU911などの処理装置を用いて、算出した加法群Gの要素Ppubを示す情報を第二要素情報として出力する第二要素算出部121と、
CPU911などの処理装置を用いて、第一要素選択部111が出力した第一要素情報と第二要素算出部121が出力した第二要素情報とを入力し、CPU911などの処理装置を用いて、入力した第一要素情報と第二要素情報とを含む情報をパラメータ情報として公開するパラメータ公開部122と、
CPU911などの処理装置を用いて、受信者装置300を識別する識別情報(受信者装置300のIDを示す情報)を入力し、CPU911などの処理装置を用いて、入力した識別情報に対応する加法群Gの要素QIDを算出し、CPU911などの処理装置を用いて、算出した加法群Gの要素QIDを示す情報を第三要素情報として出力する第三要素算出部132と、
CPU911などの処理装置を用いて、第三要素算出部132が出力した第三要素情報とマスターキー選択部112が出力したマスターキー情報とを入力し、CPU911などの処理装置を用いて、入力した第三要素情報とマスターキー情報とに基づいて、加法群Gの要素dIDを算出し、CPU911などの処理装置を用いて、算出した加法群Gの要素dIDを示す情報をユーザ秘密鍵情報として出力する秘密鍵算出部133と、
CPU911などの処理装置を用いて、秘密鍵算出部133が出力したユーザ秘密鍵情報を入力し、CPU911などの処理装置を用いて、入力したユーザ秘密鍵情報を受信者装置300に対して秘密裡に通知する秘密鍵通知部134と、
を有し、
送信者装置200は、
情報を記憶する磁気ディスク装置920などの記憶装置と、
情報を処理するCPU911などの処理装置と、
受信者装置300に対して情報を送信する送信装置(通信装置915)と、
CPU911などの処理装置を用いて、鍵生成装置(ユーザ秘密鍵生成センタ100)が公開したパラメータ情報を取得し、CPU911などの処理装置を用いて、取得したパラメータ情報に含まれる第一要素情報と第二要素情報とを出力するパラメータ取得部211と、
CPU911などの処理装置を用いて、パラメータ取得部211が出力した第一要素情報を入力し、磁気ディスク装置920などの記憶装置を用いて、入力した第一要素情報を記憶する第一要素記憶部212と、
CPU911などの処理装置を用いて、パラメータ取得部211が出力した第二要素情報を入力し、磁気ディスク装置920などの記憶装置を用いて、入力した第二要素情報を記憶する第二要素記憶部213と、
CPU911などの処理装置を用いて、第一要素記憶部212が記憶した第一要素情報と自然数rを示す乱数情報とを入力し、CPU911などの処理装置を用いて、入力した第一要素情報と乱数情報とに基づいて、加法群Gの要素Rを算出し、CPU911などの処理装置を用いて、算出した加法群Gの要素Rを示す情報を第四要素情報として出力する第四要素算出部222と、
CPU911などの処理装置を用いて、受信者装置300を識別する識別情報(受信者装置300のIDを示す情報)を入力し、CPU911などの処理装置を用いて、入力した識別情報に対応する加法群Gの要素QIDを算出し、CPU911などの処理装置を用いて、算出した加法群Gの要素QIDを示す情報を第五要素情報として出力する第五要素算出部232と、
CPU911などの処理装置を用いて、第二要素記憶部213が記憶した第二要素情報と第五要素算出部232が出力した第五要素情報と上記乱数情報とを入力し、CPU911などの処理装置を用いて、入力した第二要素情報と第五要素情報とに基づいて、加法群Gの要素Ppubと加法群Gの要素QIDとのペアリング値を算出し、CPU911などの処理装置を用いて、算出したペアリング値と入力した乱数情報とに基づいて、乗法群Gの要素wを算出し、CPU911などの処理装置を用いて、算出した乗法群Gの要素wを示す情報を送信ペアリング値情報として出力する送信ペアリング値算出部233と、
CPU911などの処理装置を用いて、第四要素算出部222が出力した第四要素情報を入力し、送信装置(通信装置915)を用いて、入力した第四要素情報を含む情報を暗号化セッション鍵Cとして受信者装置300に対して送信する暗号化セッション鍵送信部223と、
CPU911などの処理装置を用いて、第四要素算出部222が出力した第四要素情報と送信ペアリング値算出部233が出力した送信ペアリング値情報とを入力し、CPU911などの処理装置を用いて、入力した第四要素情報と送信ペアリング値情報とに基づいて、ハッシュ値を算出し、CPU911などの処理装置を用いて、算出したハッシュ値に基づいて、セッション鍵Kを生成するセッション鍵生成部234と、
を有し、
受信者装置300は、
情報を記憶する磁気ディスク装置920などの記憶装置と、
情報を処理するCPU911などの処理装置と、
送信者装置200が送信した情報を受信する受信装置(通信装置915)と、
CPU911などの処理装置を用いて、鍵生成装置(ユーザ秘密鍵生成センタ100)が通知したユーザ秘密鍵情報を取得し、CPU911などの処理装置を用いて、取得したユーザ秘密鍵情報を出力する秘密鍵取得部321と、
CPU911などの処理装置を用いて、秘密鍵取得部321が出力したユーザ秘密鍵情報を入力し、磁気ディスク装置920などの記憶装置を用いて、入力したユーザ秘密鍵情報を記憶する秘密鍵記憶部322と、
受信装置(通信装置915)を用いて、送信者装置200が送信した暗号化セッション鍵Cを受信し、CPU911などの処理装置を用いて、受信した暗号化セッション鍵Cに含まれる加法群Gの要素Rを示す情報を第四要素情報として出力する暗号化セッション鍵受信部331と、
CPU911などの処理装置を用いて、秘密鍵記憶部322が記憶したユーザ秘密鍵情報と暗号化セッション鍵受信部331が出力した第四要素情報とを入力し、CPU911などの処理装置を用いて、入力したユーザ秘密鍵情報と第四要素情報とに基づいて、加法群Gの要素Rと加法群Gの要素dIDとのペアリング値を算出して乗法群Gの要素w’とし、CPU911などの処理装置を用いて、算出した乗法群Gの要素w’を示す情報を受信ペアリング値情報として出力する受信ペアリング値算出部333と、
CPU911などの処理装置を用いて、暗号化セッション鍵受信部331が出力した第四要素情報と受信ペアリング値算出部333が出力した受信ペアリング値情報とを入力し、CPU911などの処理装置を用いて、入力した第四要素情報と受信ペアリング値情報とに基づいて、ハッシュ値を算出し、CPU911などの処理装置を用いて、算出したハッシュ値に基づいて、送信者装置200が生成したセッション鍵Kと同一のセッション鍵を復元するセッション鍵復元部334と、
を有することを特徴とする。
この実施の形態における暗号通信システム(IDベース公開鍵暗号通信システム800)によれば、送信者装置200のセッション鍵生成部234が、加法群Gの要素Rを示す第四要素情報と、ペアリング値wを示す送信ペアリング値情報とに基づいてハッシュ値を算出し、算出したハッシュ値に基づいて、セッション鍵Kを生成し、送信者装置200の暗号化セッション鍵送信部223が、受信者装置300に対して、加法群Gの要素Rを示す第四要素情報を含む暗号化セッション鍵Cを送信し、受信者装置300の暗号化セッション鍵受信部331が、送信者装置200から、加法群Gの要素Rを示す第四要素情報を含む暗号化セッション鍵Cを受信し、受信者装置300のセッション鍵復元部334が、加法群Gの要素Rを示す第四要素情報と、ペアリング値w’を示す受信ペアリング値情報とに基づいてハッシュ値を算出し、算出したハッシュ値に基づいて、送信者装置200が生成したセッション鍵Kと同一のセッション鍵を復元するので、G−BDH問題に効率良く帰着する安全性の高い暗号方式により、送信者装置200と受信者装置300とが同一のセッション鍵Kを共有することができるという効果を奏する。
この実施の形態における送信者装置200は、更に、
CPU911などの処理装置を用いて、加法群Gの位数nより小さい自然数rをランダムに選択し、CPU911などの処理装置を用いて、選択した自然数rを示す情報を、第四要素算出部222及び送信ペアリング値算出部233が入力する乱数情報として出力する自然数選択部221を有し、
セッション鍵生成部234が、
CPU911などの処理装置を用いて、第四要素情報と送信ペアリング値情報とを入力し、CPU911などの処理装置を用いて、入力した第四要素情報と送信ペアリング値情報とを結合してビット列情報を生成し、CPU911などの処理装置を用いて、生成したビット列情報に対応するハッシュ値を算出し、算出したハッシュ値をセッション鍵Kとすることを特徴とする。
この実施の形態における送信者装置200によれば、セッション鍵生成部234が、加法群Gの要素Rを示す第四要素情報と、ペアリング値wを示す送信ペアリング値情報とを結合してビット列情報を生成し、生成したビット列情報に対応するハッシュ値を算出して、セッション鍵Kとするので、G−BDH問題に効率良く帰着する安全性の高い暗号方式により受信者装置300と共有するセッション鍵Kを、効率的に生成することができるという効果を奏する。
この実施の形態における受信者装置300は、
セッション鍵復元部334が、
CPU911などの処理装置を用いて、第四要素情報と受信ペアリング値情報とを入力し、CPU911などの処理装置を用いて、入力した第四要素情報と受信ペアリング値情報とを結合してビット列情報を生成し、CPU911などの処理装置を用いて、生成したビット列情報に対応するハッシュ値を算出し、算出したハッシュ値をセッション鍵Kとすることを特徴とする。
この実施の形態における受信者装置300によれば、セッション鍵復元部334が、加法群Gの要素Rを示す第四要素情報と、ペアリング値w’を示す受信ペアリング値情報とを結合してビット列情報を生成し、生成したビット列情報に対応するハッシュ値を算出して、セッション鍵Kとするので、G−BDH問題に効率良く帰着する安全性の高い暗号方式により送信者装置200と共有するセッション鍵Kを、効率的に復元することができるという効果を奏する。
この実施の形態における送信者装置200は、
第四要素算出部222が、
CPU911などの処理装置を用いて、第一要素情報と乱数情報とを入力し、CPU911などの処理装置を用いて、入力した第一要素情報と乱数情報とに基づいて、加法群Gの要素P1をr回加算した要素を加法群Gの要素Rとして算出し、CPU911などの処理装置を用いて、算出した加法群Gの要素Rを示す情報を第四要素情報として出力し、
送信ペアリング値算出部233が、
CPU911などの処理装置を用いて、第二要素情報と第五要素情報と乱数情報とを入力し、CPU911などの処理装置を用いて、入力した第二要素情報と第五要素情報と乱数情報とに基づいて、加法群Gの要素Ppubと加法群Gの要素QIDとのペアリング値のr乗を、乗法群Gの要素wとして算出し、CPU911などの処理装置を用いて、算出した乗法群Gの要素wを示す情報を送信ペアリング値情報として出力することを特徴とする。
この実施の形態における送信者装置200によれば、第四要素算出部222が、加法群Gの要素R=rP1を示す情報を第四要素情報として出力し、送信ペアリング値算出部233が、ペアリング値w=e(Ppub,QIDを示す情報を送信ペアリング値情報として出力するので、加法群GがDH問題を解くことが困難な群であり、ペアリングeがG−BDH問題を解くことが困難な双線形ペアリングであれば、安全性の高い暗号方式を実現することができるという効果を奏する。
この実施の形態における暗号通信システム(IDベース公開鍵暗号通信システム800)は、
鍵生成装置(ユーザ秘密鍵生成センタ100)の第二要素算出部121が、
CPU911などの処理装置を用いて、第一要素情報とマスターキー情報とを入力し、CPU911などの処理装置を用いて、入力した第一要素情報とマスターキー情報とに基づいて、加法群Gの要素P1をs回加算した要素を加法群Gの要素Ppubとして算出し、CPU911などの処理装置を用いて、算出した加法群Gの要素Ppubを示す情報を第二要素情報として出力し、
鍵生成装置(ユーザ秘密鍵生成センタ100)の秘密鍵算出部133が、
CPU911などの処理装置を用いて、第三要素情報とマスターキー情報とを入力し、CPU911などの処理装置を用いて、入力した第三要素情報とマスターキー情報とに基づいて、加法群Gの要素QIDをs回加算した要素を加法群Gの要素dIDとして算出し、CPU911などの処理装置を用いて、算出した加法群Gの要素dIDを示す情報をユーザ秘密鍵情報として出力することを特徴とする。
この実施の形態における暗号通信システム(IDベース公開鍵暗号通信システム800)によれば、鍵生成装置(ユーザ秘密鍵生成センタ100)の第二要素算出部121が、加法群Gの要素Ppub=sPを示す情報を第二要素情報として出力し、鍵生成装置(ユーザ秘密鍵生成センタ100)の秘密鍵算出部133が、加法群Gの要素dID=sQIDを示す情報をユーザ秘密鍵情報として出力するので、加法群G及び加法群GがDH問題を解くことが困難な群であれば、安全性の高い暗号方式を実現することができるという効果を奏する。
この実施の形態における送信者装置200は、更に、
CPU911などの処理装置を用いて、受信者装置300に対して通知すべき情報を平文情報として入力し、CPU911などの処理装置を用いて、セッション鍵生成部234が生成したセッション鍵Kを入力し、CPU911などの処理装置を用いて、入力した平文情報を、入力したセッション鍵Kで暗号化して暗号文情報を生成し、CPU911などの処理装置を用いて、生成した暗号文情報を出力する暗号文生成部242と、
CPU911などの処理装置を用いて、暗号文生成部242が出力した暗号文情報を入力し、送信装置(通信装置915)を用いて、入力した暗号文情報を受信者装置300に対して送信する暗号文送信部243と、
を有することを特徴とする。
この実施の形態における送信者装置200によれば、安全性の高い暗号方式で受信者装置300と共有したセッション鍵Kを用いて、平文情報を暗号化して、受信者装置300に対して送信するので、第三者に秘密が漏洩することなく、平文情報を受信者装置300に対して通知することができるという効果を奏する。
この実施の形態における受信者装置300は、更に、
受信装置(通信装置915)を用いて、送信者装置200が送信した暗号文情報を受信し、CPU911などの処理装置を用いて、受信した暗号文情報を出力する暗号文受信部341と、
CPU911などの処理装置を用いて、暗号文受信部341が出力した暗号文情報を入力し、CPU911などの処理装置を用いて、セッション鍵復元部334が復元したセッション鍵Kを入力し、CPU911などの処理装置を用いて、入力した暗号文情報を、入力したセッション鍵Kで復号して、平文情報を生成し、CPU911などの処理装置を用いて、生成した平文情報を出力する暗号文復号部342と、
を有することを特徴とする。
この実施の形態における受信者装置300によれば、安全性の高い暗号方式で送信者装置200と共有したセッション鍵Kを用いて、送信者装置200から受信した暗号文情報を復号するので、第三者に秘密が漏洩することなく、平文情報を送信者装置200から取得することができるという効果を奏する。
この実施の形態における送信者装置200は、情報を記憶する磁気ディスク装置920などの記憶装置と、情報を処理するCPU911などの処理装置と、受信者装置300に対して情報を送信する送信装置(通信装置915)とを有するコンピュータを送信者装置200として機能させるプログラムを、コンピュータが実行することによって、実現することができる。
この実施の形態におけるプログラムは、
情報を記憶する磁気ディスク装置920などの記憶装置と、情報を処理するCPU911などの処理装置と、受信者装置300に対して情報を送信する送信装置(通信装置915)とを有するコンピュータを、この実施の形態における送信者装置200として機能させることを特徴とする。
この実施の形態におけるプログラムによれば、コンピュータが、加法群Gの要素Rを示す第四要素情報と、ペアリング値wを示す送信ペアリング値情報とに基づいてハッシュ値を算出し、算出したハッシュ値に基づいて、セッション鍵Kを生成するので、G−BDH問題に効率良く帰着する安全性の高い暗号方式を実現することができるという効果を奏する。
この実施の形態における受信者装置300は、情報を記憶する磁気ディスク装置920などの記憶装置と、情報を処理するCPU911などの処理装置と、送信者装置200が送信した情報を受信する受信装置(通信装置915)とを有するコンピュータを受信者装置300として機能させるプログラムを、コンピュータが実行することによって、実現することができる。
この実施の形態におけるプログラムは、
情報を記憶する磁気ディスク装置920などの記憶装置と、情報を処理するCPU911などの処理装置と、送信者装置200が送信した情報を受信する受信装置(通信装置915)とを有するコンピュータを、この実施の形態における受信者装置300として機能させることを特徴とする。
この実施の形態におけるプログラムによれば、コンピュータが、加法群Gの要素Rを示す第四要素情報と、ペアリング値w’を示す受信ペアリング値情報とに基づいてハッシュ値を算出し、算出したハッシュ値に基づいて、セッション鍵Kを復元するので、G−BDH問題に効率良く帰着する安全性の高い暗号方式を実現することができるという効果を奏する。
この実施の形態における送信者装置200及び受信者装置300は、セッション鍵共有装置ともいう。
以上説明したセッション鍵共有装置は、
ペアリングを用いたIDベース公開鍵暗号を用いたセッション鍵共有装置において、ペアリング値をハッシュするのに用いる鍵導出関数への入力として、ペアリング値だけでなく、セッション鍵を暗号化した値も入力に加わっていることを特徴とする。
以上説明したセッション鍵共有装置は、更に、
ペアリングを用いたIDベース鍵配送方式を用いたセッション鍵共有装置において、前記セッション鍵を暗号化するのに、
ID情報IDから一意的に決まるQIDを計算し、
1≦r≦nであるrをランダムに生成し、
pubとQIDのペアリング値のr乗w=e(Ppub,QIDを計算し、
=r・P1を計算し、
鍵導出関数Gを用いて、セッション鍵K=G(C,w)を計算し、
セッション鍵Kと前記セッション鍵の暗号化Cを出力することを特徴とする。
以上説明したセッション鍵共有装置は、更に、
ペアリングを用いたIDベース鍵配送方式を用いたセッション鍵共有装置において、暗号化されたセッション鍵を復号するのに、
∈Gであるかどうかをチェックし、
セッション鍵の暗号化Cとユーザプライベート鍵dIDのペアリング値w=e(C,dID)を計算し、
鍵導出関数Gを用いて、セッション鍵K=G(C,w)を計算し、
セッション鍵Kを出力することを特徴とする。
この実施の形態におけるプログラムは、セッション鍵共有プログラムともいう。
以上説明したセッション鍵共有プログラムは、
ペアリングを用いたIDベース公開鍵暗号を用いたセッション鍵共有プログラムにおいて、ペアリング値をハッシュするのに用いる鍵導出関数への入力として、ペアリング値だけでなく、セッション鍵を暗号化した値も入力に加わっていることを特徴とする。
以上説明したセッション鍵共有プログラムは、更に、
ペアリングを用いたIDベース鍵配送方式を用いたセッション鍵共有プログラムにおいて、前記セッション鍵を暗号化するのに、
ID情報IDから一意的に決まるQIDを計算し、
1≦r≦nであるrをランダムに生成し、
pubとQIDのペアリング値のr乗w=e(Ppub,QIDを計算し、
=r・P1を計算し、
鍵導出関数Gを用いて、セッション鍵K=G(C,w)を計算し、
セッション鍵Kと前記セッション鍵の暗号化Cを出力することを特徴とする。
以上説明したセッション鍵共有プログラムは、更に、
ペアリングを用いたIDベース鍵配送方式を用いたセッション鍵共有プログラムにおいて、暗号化された鍵を復号するのに、
∈Gであるかどうかをチェックし、
セッション鍵の暗号化Cとユーザプライベート鍵dIDのペアリング値w=e(C、dID)を計算し、
鍵導出関数Gを用いて、セッション鍵K=G(C、w)を計算し、
セッション鍵Kを出力することを特徴とする。
この実施の形態における送信者装置200及び受信者装置300は、IDベース公開鍵暗号装置ともいう。
以上説明したIDベース公開鍵暗号装置は、
ペアリングを用いたIDベース公開鍵暗号装置において、ペアリング値をハッシュするのに用いる鍵導出関数への入力として、ペアリング値だけでなく、セッション鍵を暗号化した値も入力に加わっていることを特徴とする。
以上説明したIDベース公開鍵暗号装置は、更に、
ペアリングを用いたIDベース公開鍵暗号装置において、平文Mを暗号化するのに、
ID情報IDから一意的に決まるQIDを計算し、
1≦r≦nであるrをランダムに生成し、
pubとQIDのペアリング値のr乗w=e(Ppub、QIDを計算し、
U=r・P1を計算し、
鍵導出関数Gを用いて、K=G(U、w)を計算し、
鍵Kを用いて計算されたMの暗号化を出力することを特徴とする。
以上説明したIDペース公開鍵暗号装置は、更に、
ビット毎の排他的論理和XORを用い、鍵Kを用いて計算されたMの暗号化として、XOR(M,K)を用いることを特徴とする。
以上説明したIDベース公開鍵暗号装置は、更に、
ペアリングを用いたIDベース公開鍵暗号装置において、暗号文Cを復号するのに、
暗号文の成分Uとユーザプライベート鍵dIDのペアリング値w=e(U、dID)を計算し、
鍵導出関数Gを用いて、K=G(U、w)を計算し、
鍵Kを用いて計算されたCの復号を出力することを特徴とする。
以上説明したIDベース公開鍵暗号装置は、更に、
ビット毎の排他的論理和XORを用い、鍵Kを用いて計算されたCの復号として、XOR(C,K)を用いることを特徴とする。
この実施の形態におけるプログラムは、IDベース公開鍵暗号プログラムともいう。
以上説明したIDベース公開鍵暗号プログラムは、
ペアリングを用いたIDベース公開鍵暗号プログラムにおいて、ペアリング値をハッシュするのに用いる鍵導出関数への入力として、ペアリング値だけでなく、セッション鍵を暗号化した値も入力に加わっていることを特徴とする。
以上説明したIDベース公開鍵暗号プログラムは、更に、
ペアリングを用いたIDベース公開鍵暗号プログラムにおいて、平文Mを暗号化するのに、
ID情報IDから一意的に決まるQIDを計算し、
1≦r≦nであるrをランダムに生成し、
pubとQIDのペアリング値のr乗w=e(Ppub,QIDを計算し、
U=r・P1を計算し、
鍵導出関数Gを用いて、K=G(U,w)を計算し、
鍵Kを用いて計算されたMの暗号化を出力することを特徴とする。
以上説明したIDペース公開鍵暗号プログラムは、更に、
ビット毎の排他的論理和XORを用い、鍵Kを用いて計算されたMの暗号化として、XOR(M,K)を用いることを特徴とする。
以上説明したIDペース公開鍵暗号プログラムは、更に、
ペアリングを用いたIDベース公開鍵暗号プログラムにおいて、暗号文Cを復号するのに、
暗号文の成分Uとユーザプライベート鍵dIDのペアリング値w=e(U,dID)を計算し、
鍵導出関数Gを用いて、K=G(U,w)を計算し、
鍵Kを用いて計算されたCの復号を出力することを特徴とする。
以上説明したIDペース公開鍵暗号プログラムは、更に、
ビット毎の排他的論理和XORを用い、鍵Kを用いて計算されたCの復号として、XOR(C,K)を用いることを特徴とする。
以上説明したIDベース公開鍵暗号通信システム800によれば、安全性が高められたIDベース暗号方式が実現される。それだけでなく、ペアリングを用い、ランダムオラクルモデルで安全性が保証されたいくつかの他の暗号、署名、認証法に対しても高い安全性を付与することができるようになる。
実施の形態2.
実施の形態2について、図24〜図27を用いて説明する。
この実施の形態におけるIDベース公開鍵暗号通信システム800(暗号通信システム)の全体構成、ユーザ秘密鍵生成センタ100・送信者装置200・受信者装置300のハードウェア構成は、実施の形態1で説明したものと同様なので、ここでは説明を省略する。
また、ユーザ秘密鍵生成センタ100の機能ブロックの構成は、実施の形態1で説明したものと同様なので、ここでは説明を省略する。
なお、ユーザ秘密鍵生成センタ100のパラメータ公開部122が公開するパラメータ情報には、実施の形態1で説明した情報のほか、マスク生成関数(Mask Generation Function)H及びハッシュ関数Hを示す情報が含まれている。
マスク生成関数H及びハッシュ関数Hは、任意のビット列を入力し、入力したビット列に対応する(所定のビット長を有する)ビット列を出力する関数である。マスク生成関数H及びハッシュ関数Hには、ランダムオラクルとみなせる関数を用いる。
図24は、この実施の形態における送信者装置200の機能ブロックの構成の一例を示すブロック構成図である。
送信者装置200は、パラメータ取得部211、第一要素記憶部212、第二要素記憶部213、第四要素算出部222、暗号化セッション鍵送信部223、文字列選択部224、自然数算出部225、送信識別情報取得部231、第五要素算出部232、送信ペアリング値算出部233、セッション鍵生成部234、セッション鍵記憶部235、平文記憶部241、暗号文生成部242、暗号文送信部243を有する。
このうち、パラメータ取得部211、第一要素記憶部212、第二要素記憶部213、第四要素算出部222、送信識別情報取得部231、第五要素算出部232、送信ペアリング値算出部233、セッション鍵記憶部235、平文記憶部241、暗号文生成部242、暗号文送信部243は、実施の形態1で説明した機能ブロックと同様なので、ここでは説明を省略する。
文字列選択部224は、CPU911などの処理装置を用いて、文字列mをランダムに選択する。このとき、文字列選択部224は、所定のビット長を有する文字列のなかから、任意の文字列をランダムに選択する。
文字列選択部224は、CPU911などの処理装置を用いて、選択した文字列mを示す情報を、文字列情報として出力する。
自然数算出部225は、CPU911などの処理装置を用いて、文字列選択部224が出力した文字列情報を入力する。
自然数算出部225は、CPU911などの処理装置を用いて、入力した文字列情報に対応するハッシュ値を算出する。このとき、自然数算出部225は、ユーザ秘密鍵生成センタ100が公開したハッシュ関数Hを用いて、ハッシュ値を算出する。ハッシュ関数Hは、文字列情報を入力し、入力した文字列情報に対応するハッシュ値として、加法群Gの位数より小さい自然数rを出力する関数である。自然数算出部225は、入力した文字列情報を、ハッシュ関数Hの入力とする。
自然数算出部225は、CPU911などの処理装置を用いて、算出したハッシュ値(自然数r)を示す情報を、第四要素算出部222及び送信ペアリング値算出部233が入力する乱数情報として出力する。
セッション鍵生成部234は、CPU911などの処理装置を用いて、第四要素算出部222が出力した第四要素情報を入力する。
セッション鍵生成部234は、CPU911などの処理装置を用いて、送信ペアリング値算出部233が出力した送信ペアリング値情報を入力する。
セッション鍵生成部234は、CPU911などの処理装置を用いて、文字列選択部224が出力した文字列情報を入力する。
セッション鍵生成部234は、CPU911などの処理装置を用いて、入力した第四要素情報と、入力した送信ペアリング値情報とを結合して、ビット列情報を生成する。
セッション鍵生成部234は、CPU911などの処理装置を用いて、生成したビット列情報に対応するハッシュ値を算出する。このとき、セッション鍵生成部234は、ユーザ秘密鍵生成センタ100が公開したマスク生成関数Hを用いて、ハッシュ値を算出する。マスク生成関数Hは、ビット列情報を入力し、入力したビット列情報に対応するハッシュ値として、文字列選択部224が出力した文字列情報と同じビット長の文字列情報を出力する関数である。セッション鍵生成部234は、生成したビット列情報を、マスク生成関数Hの入力とする。
セッション鍵生成部234は、CPU911などの処理装置を用いて、算出したハッシュ値を示す情報と、入力した文字列情報との排他的論理和を算出してマスク情報vとする。ここで、排他的論理和とは、ビットごとの排他的論理和のことである。
セッション鍵生成部234は、CPU911などの処理装置を用いて、算出したマスク情報vを出力する。
また、セッション鍵生成部234は、CPU911などの処理装置を用いて、入力した文字列情報に対応するハッシュ値を算出する。このとき、セッション鍵生成部234は、ユーザ秘密鍵生成センタ100が公開した鍵導出関数Gを用いて、ハッシュ値を算出する。セッション鍵生成部234は、入力した文字列情報を鍵導出関数Gの入力とする。
セッション鍵生成部234は、CPU911などの処理装置を用いて、算出したハッシュ値を、セッション鍵Kとして出力する。
暗号化セッション鍵送信部223は、CPU911などの処理装置を用いて、第四要素算出部222が出力した第四要素情報を入力する。
暗号化セッション鍵送信部223は、CPU911などの処理装置を用いて、セッション鍵生成部234が出力したマスク情報vを入力する。
暗号化セッション鍵送信部223は、通信装置915を用いて、受信者装置300に対して、入力した第四要素情報と、入力したマスク情報vとを含む情報を、暗号化セッション鍵Cとして送信する。
図25は、この実施の形態における受信者装置300の機能ブロックの構成の一例を示すブロック構成図である。
受信者装置300は、受信パラメータ取得部311、秘密鍵取得部321、秘密鍵記憶部322、暗号化セッション鍵受信部331、受信ペアリング値算出部333、セッション鍵復元部334、受信セッション鍵記憶部335、暗号文受信部341、暗号文復号部342を有する。
このうち、受信パラメータ取得部311、秘密鍵取得部321、秘密鍵記憶部322、受信ペアリング値算出部333、受信セッション鍵記憶部335、暗号文受信部341、暗号文復号部342は、実施の形態1で説明したものと同様なので、ここでは説明を省略する。
暗号化セッション鍵受信部331は、通信装置915を用いて、送信者装置200が送信してきた暗号化セッション鍵Cを受信する。
暗号化セッション鍵受信部331は、CPU911などの処理装置を用いて、受信した暗号化セッション鍵Cに含まれる第四要素情報と、マスク情報vとを出力する。
第四要素情報は、加法群Gの要素Rを示す情報である。
セッション鍵復元部334は、CPU911などの処理装置を用いて、暗号化セッション鍵受信部331が出力した第四要素情報を入力する。
セッション鍵復元部334は、CPU911などの処理装置を用いて、暗号化セッション鍵受信部331が出力したマスク情報vを入力する。
セッション鍵復元部334は、CPU911などの処理装置を用いて、受信ペアリング値算出部333が出力した受信ペアリング値情報を入力する。
受信ペアリング値情報は、乗法群Gの要素w’を示す情報である。
セッション鍵復元部334は、CPU911などの処理装置を用いて、入力した第四要素情報と、入力した受信ペアリング値情報とを結合して、ビット列情報を生成する。
セッション鍵復元部334は、CPU911などの処理装置を用いて、生成したビット列情報に対応するハッシュ値を算出する。このとき、セッション鍵復元部334は、ユーザ秘密鍵生成センタ100が公開したマスク生成関数Hを用いて、ハッシュ値を算出する。セッション鍵復元部334は、生成したビット列情報を、マスク生成関数Hの入力とする。
セッション鍵復元部334は、CPU911などの処理装置を用いて、算出したハッシュ値を示す情報と、入力したマスク情報vとの排他的論理和を算出して、復元文字列情報とする。
実施の形態1で説明したように、受信ペアリング値算出部333が算出したペアリング値w’は、送信者装置200の送信ペアリング値算出部233が算出したペアリング値wと等しい。
したがって、セッション鍵復元部334がマスク生成関数Hを用いて算出したハッシュ値は、送信者装置200のセッション鍵生成部234がマスク生成関数Hを用いて算出したハッシュ値と等しい。
マスク情報vは、文字列情報と、マスク生成関数Hを用いて算出したハッシュ値を示す情報との排他的論理和であるから、セッション鍵復元部334が算出した復元文字列情報は、送信者装置200の文字列選択部224が選択した文字列mを示す文字列情報と等しい。
セッション鍵復元部334は、CPU911などの処理装置を用いて、算出した復元文字列情報に対応するハッシュ値を算出して、自然数r’とする。このとき、セッション鍵復元部334は、ユーザ秘密鍵生成センタ100が公開したハッシュ関数Hを用いて、ハッシュ値を算出する。セッション鍵復元部334は、算出した復元文字列情報を、ハッシュ関数Hの入力とする。
セッション鍵復元部334は、CPU911などの処理装置を用いて、受信パラメータ取得部311が取得したパラメータ情報に含まれる第一要素情報を入力する。
セッション鍵復元部334は、CPU911などの処理装置を用いて、入力した第一要素情報が示す加法群Gの要素P1と、算出した自然数r’とから、加法群Gの要素P1のr’倍を算出し、加法群Gの要素R’とする。
セッション鍵復元部334は、入力した第四要素情報が示す加法群Gの要素Rと、算出した加法群Gの要素R’とを比較する。
セッション鍵復元部334は、加法群Gの要素Rと加法群Gの要素R’とが等しくない場合、復号に失敗したことを示す情報を出力して、処理を中断する。
セッション鍵復元部334が復元した復元文字列情報と、送信者装置200の文字列選択部224が出力した文字列情報とは等しいはずなので、自然数rと自然数r’とは等しく、したがって、加法群Gの要素RとR’とは等しいはずである。そのため、セッション鍵復元部334は、それを確認して、RとR’とが等しくない場合には、処理を中断する。
セッション鍵復元部334は、CPU911などの処理装置を用いて、算出した復元文字列情報に対応するハッシュ値を算出する。このとき、セッション鍵復元部334は、ユーザ秘密鍵生成センタ100が公開した鍵導出関数Gを用いて、ハッシュ値を算出する。セッション鍵復元部334は、算出した復元文字列情報を、鍵導出関数Gの入力とする。
セッション鍵復元部334は、CPU911などの処理装置を用いて、算出したハッシュ値を、セッション鍵Kとして出力する。
上述したように、セッション鍵復元部334が算出した復元文字列情報は、元の文字列情報と同じであるから、セッション鍵復元部334は、送信者装置200のセッション鍵生成部234が生成したセッション鍵Kと同一のセッション鍵を復元する。
こうして、送信者装置200と受信者装置300とは、同一のセッション鍵Kを共有するので、セッション鍵Kを用いた共通鍵暗号方式による通信を行うことができる。
図26は、この実施の形態における送信者装置200がセッション鍵Kを生成するセッション鍵生成処理の流れの一例を示すフローチャート図である。
なお、実施の形態1で図9を用いて説明した工程と共通する工程については、同一の符号を付し、説明を簡略化する。
S31において、パラメータ取得部211は、CPU911などの処理装置を用いて、ユーザ秘密鍵生成センタ100が公開したパラメータ情報を取得する。
S32において、送信識別情報取得部231は、CPU911などの処理装置を用いて、受信者装置300のIDを示す情報(識別情報)を取得する。
S53において、文字列選択部224は、CPU911などの処理装置を用いて、文字列mをランダムに選択する。
文字列選択部224は、CPU911などの処理装置を用いて、選択した文字列mを示す文字列情報を出力する。
S54において、自然数算出部225は、CPU911などの処理装置を用いて、S53で文字列選択部224が出力した文字列情報を入力する。
自然数算出部225は、CPU911などの処理装置を用いて、入力した文字列情報に対応するハッシュ値を算出し、自然数rとする。
自然数算出部225は、CPU911などの処理装置を用いて、算出した自然数rを示す情報を、乱数情報として出力する。
S34において、第四要素算出部222は、CPU911などの処理装置を用いて、第一要素記憶部212が記憶した第一要素情報が示す加法群Gの要素P1と、S54で自然数算出部225が出力した乱数情報が示す自然数rとに基づいて、加法群Gの要素P1のr倍を算出し、加法群Gの要素Rとする。
S35において、第五要素算出部232は、CPU911などの処理装置を用いて、受信者装置300のIDを示す情報に対応する加法群Gの要素QIDを算出する。
S36において、送信ペアリング値算出部233は、CPU911などの処理装置を用いて、第二要素記憶部213が記憶した第二要素情報が示す加法群Gの要素Ppubと、S35で第五要素算出部232が算出した加法群Gの要素QIDと、S54で自然数算出部225が出力した乱数情報が示す自然数rとに基づいて、ペアリング値e(Ppub,QIDを算出し、乗法群Gの要素wとする。
S58において、セッション鍵生成部234は、CPU911などの処理装置を用いて、S34で第四要素算出部222が算出した加法群Gの要素Rを示す第四要素情報と、S36で送信ペアリング値算出部233が算出した乗法群Gの要素wを示す送信ペアリング値情報と、S53で文字列選択部224が出力した文字列情報とを入力する。
セッション鍵生成部234は、CPU911などの処理装置を用いて、入力した第四要素情報と、入力した送信ペアリング情報とを結合して、ビット列情報を生成する。
セッション鍵生成部234は、CPU911などの処理装置を用いて、生成したビット列情報に対応するハッシュ値を算出する。
セッション鍵生成部234は、CPU911などの処理装置を用いて、算出したハッシュ値と、入力した文字列情報との排他的論理和を算出し、マスク情報vとする。
セッション鍵生成部234は、CPU911などの処理装置を用いて、算出したマスク情報vを出力する。
S59において、セッション鍵生成部234は、CPU911などの処理装置を用いて、S58で入力した文字列情報に対応するハッシュ値を算出し、セッション鍵Kとする。
セッション鍵生成部234は、算出したセッション鍵Kを出力する。
S60において、暗号化セッション鍵送信部223は、CPU911などの処理装置を用いて、S34で第四要素算出部222が算出した加法群Gの要素Rを示す第四要素情報と、S58でセッション鍵生成部234が出力したマスク情報vとを入力する。
暗号化セッション鍵送信部223は、通信装置915を用いて、受信者装置300に対して、入力した第四要素情報と、入力したマスク情報vとを含む情報を、暗号化セッション鍵Cとして送信する。
図27は、この実施の形態における受信者装置300がセッション鍵Kを復元するセッション鍵復元処理の流れの一例を示すフローチャート図である。
なお、実施の形態1で図10を用いて説明した工程と共通する工程については、同一の符号を付し、説明を簡略化する。
S41において、受信パラメータ取得部311は、CPU911などの処理装置を用いて、ユーザ秘密鍵生成センタ100が公開したパラメータ情報を取得する。
S42において、秘密鍵取得部321は、CPU911などの処理装置を用いて、ユーザ秘密鍵生成センタ100が秘密裡に通知したユーザ秘密鍵情報を取得する。
S63において、暗号化セッション鍵受信部331は、通信装置915を用いて、送信者装置200から送信してきた暗号化セッション鍵Cを受信する。
暗号化セッション鍵受信部331は、CPU911などの処理装置を用いて、受信した暗号化セッション鍵Cに含まれる第四要素情報とマスク情報vとを出力する。
S44において、受信ペアリング値算出部333は、CPU911などの処理装置を用いて、S63で暗号化セッション鍵受信部331が出力した第四要素情報が示す加法群Gの要素Rと、秘密鍵記憶部322が記憶したユーザ秘密鍵情報が示す加法群Gの要素dIDとに基づいて、ペアリング値e(R,dID)を算出し、乗法群Gの要素w’とする。
S65において、セッション鍵復元部334は、CPU911などの処理装置を用いて、S63で暗号化セッション鍵受信部331が出力した第四要素情報とマスク情報vと、S44で受信ペアリング値算出部333が算出した乗法群Gの要素w’を示す受信ペアリング値情報と、受信パラメータ取得部311が取得したパラメータ情報に含まれる第一要素情報とを入力する。
セッション鍵復元部334は、CPU911などの処理装置を用いて、入力した第四要素情報と、入力した受信ペアリング値情報とを結合して、ビット列情報を生成する。
セッション鍵復元部334は、CPU911などの処理装置を用いて、生成したビット列情報に対応するハッシュ値を算出する。
セッション鍵復元部334は、CPU911などの処理装置を用いて、算出したハッシュ値と、入力したマスク情報vとの排他的論理和を算出し、復元文字列情報とする。
セッション鍵復元部334は、CPU911などの処理装置を用いて、算出した復元文字列情報に対応するハッシュ値を算出して、自然数r’とする。
セッション鍵復元部334は、CPU911などの処理装置を用いて、入力した第一要素情報が示す加法群Gの要素P1と、算出した自然数r’とから、加法群Gの要素P1のr’倍を算出し、加法群Gの要素R’とする。
セッション鍵復元部334は、CPU911などの処理装置を用いて、入力した第四要素情報が示す加法群Gの要素Rと、算出した加法群Gの要素R’とを比較して、等しいか否かを判断する。
等しいと判断した場合、S66へ進む。
等しくないと判断した場合、セッション鍵復元処理を終了する。
S66において、セッション鍵復元部334は、CPU911などの処理装置を用いて、S65で算出した復元文字列情報に対応するハッシュ値を算出し、セッション鍵Kとする。
セッション鍵復元部334は、CPU911などの処理装置を用いて、算出したセッション鍵Kを出力する。
次に、この実施の形態における暗号方式の安全性について説明する。
この実施の形態における暗号方式において、マスク生成関数Hには、ランダムオラクルとみなすことができる関数を用いる。
マスク生成関数Hに入力するビット列情報は、加法群Gの要素Rを示す情報(第四要素情報)と、ペアリング値wを示す情報(送信ペアリング値情報)とを結合したものである。
したがって、実施の形態1における暗号方式の安全性の議論において、鍵導出関数Gであるランダムオラクルを、ランダムオラクルGとして議論したが、これを、マスク生成関数Hであるランダムオラクルに置き換えれば、まったく同じように、この実施の形態における暗号方式の安全性が証明できる。
以上より、この実施の形態の暗号方式は、G−BDH問題に効率良く帰着する安全性の高い暗号方式であることが証明された。
この実施の形態における送信者装置200は、
情報を記憶する磁気ディスク装置920などの記憶装置と、
情報を処理するCPU911などの処理装置と、
受信者装置に対して情報を送信する送信装置(通信装置915)と、
磁気ディスク装置920などの記憶装置を用いて、加法群Gの要素Pを示す情報を第一要素情報として記憶する第一要素記憶部212と、
磁気ディスク装置920などの記憶装置を用いて、加法群Gの要素Ppubを示す情報を第二要素情報として記憶する第二要素記憶部213と、
CPU911などの処理装置を用いて、第一要素記憶部212が記憶した第一要素情報と自然数rを示す乱数情報とを入力し、CPU911などの処理装置を用いて、入力した第一要素情報と乱数情報とに基づいて、加法群Gの要素Rを算出し、CPU911などの処理装置を用いて、算出した加法群Gの要素Rを示す情報を第四要素情報として出力する第四要素算出部222と、
CPU911などの処理装置を用いて、受信者装置300を識別する識別情報(IDを示す情報)を入力し、CPU911などの処理装置を用いて、入力した識別情報に対応する加法群Gの要素QIDを算出し、CPU911などの処理装置を用いて、算出した加法群Gの要素QIDを示す情報を第五要素情報として出力する第五要素算出部232と、
CPU911などの処理装置を用いて、第二要素記憶部213が記憶した第二要素情報と第五要素算出部232が出力した第五要素情報と上記乱数情報とを入力し、CPU911などの処理装置を用いて、入力した第二要素情報と第五要素情報とに基づいて、加法群Gの要素Ppubと加法群Gの要素QIDとのペアリング値を算出し、CPU911などの処理装置を用いて、算出したペアリング値と入力した乱数情報とに基づいて、乗法群Gの要素wを算出し、CPU911などの処理装置を用いて、算出した乗法群Gの要素wを示す情報を送信ペアリング値情報として出力する送信ペアリング値算出部233と、
CPU911などの処理装置を用いて、第四要素算出部222が出力した第四要素情報と送信ペアリング値算出部233が出力した送信ペアリング値情報とを入力し、CPU911などの処理装置を用いて、入力した第四要素情報と送信ペアリング値情報とに基づいて、ハッシュ値を算出し、CPU911などの処理装置を用いて、算出したハッシュ値に基づいて、受信者装置300がセッション鍵Kを復元するために用いるマスク情報vを生成し、CPU911などの処理装置を用いて、生成したマスク情報vを出力するセッション鍵生成部234と、
CPU911などの処理装置を用いて、第四要素算出部222が出力した第四要素情報と、セッション鍵生成部234が出力したマスク情報vとを入力し、送信装置(通信装置915)を用いて、入力した第四要素情報とマスク情報vとを含む情報を暗号化セッション鍵Cとして受信者装置300に対して送信する暗号化セッション鍵送信部と、
を有することを特徴とする。
この実施の形態における送信者装置200によれば、セッション鍵生成部234が、加法群Gの要素Rを示す第四要素情報と、ペアリング値wを示す送信ペアリング値情報とに基づいてハッシュ値を算出し、算出したハッシュ値に基づいて、受信者装置300がセッション鍵Kを復元するために用いるマスク情報vを生成するので、G−BDH問題に効率良く帰着する安全性の高い暗号方式を実現することができるという効果を奏する。
この実施の形態における送信者装置200は、更に、
CPU911などの処理装置を用いて、文字列mをランダムに選択し、CPU911などの処理装置を用いて、選択した文字列mを示す情報を文字列情報として出力する文字列選択部224と、
CPU911などの処理装置を用いて、文字列選択部224が出力した文字列情報を入力し、CPU911などの処理装置を用いて、入力した文字列情報に対応するハッシュ値を算出し、CPU911などの処理装置を用いて、算出したハッシュ値を示す情報を、第四要素算出部222及び上記送信ペアリング値算出部233が入力する乱数情報として出力する自然数算出部225と、
を有し、
セッション鍵生成部234が、
CPU911などの処理装置を用いて、第四要素情報と、送信ペアリング値情報と、文字列選択部224が出力した文字列情報とを入力し、CPU911などの処理装置を用いて、入力した第四要素情報と送信ペアリング値情報とを結合してビット列情報を生成し、CPU911などの処理装置を用いて、生成したビット列情報に対応するハッシュ値を算出し、CPU911などの処理装置を用いて、算出したハッシュ値を示す情報と入力した文字列情報との排他的論理和を算出してマスク情報vとし、CPU911などの処理装置を用いて、算出したマスク情報vを出力し、CPU911などの処理装置を用いて、入力した文字列情報に対応するハッシュ値を算出し、算出したハッシュ値をセッション鍵Kとし、
暗号化セッション鍵送信部223が、
CPU911などの処理装置を用いて、第四要素情報と、セッション鍵生成部234が出力したマスク情報vとを入力し、送信装置(通信装置915)を用いて、入力した第四要素情報とマスク情報vとを含む情報を暗号化セッション鍵Cとして受信者装置300に対して送信することを特徴とする。
この実施の形態における送信者装置200によれば、セッション鍵生成部234が、加法群Gの要素Rを示す第四要素情報と、ペアリング値wを示す送信ペアリング値情報とを結合してビット列情報を生成し、生成したビット列情報に対応するハッシュ値を算出し、算出したハッシュ値を示す情報に基づいて、マスク情報vを生成するので、G−BDH問題に効率良く帰着する安全性の高い暗号方式により受信者装置300と共有するセッション鍵Kを、効率的に生成することができるという効果を奏する。
この実施の形態における受信者装置300は、
暗号化セッション鍵受信部331が、
受信装置(通信装置915)を用いて、暗号化セッション鍵Cを受信し、CPU911などの処理装置を用いて、受信した暗号化セッション鍵Cに含まれる第四要素情報とマスク情報vとを出力し、
セッション鍵復元部334が、
CPU911などの処理装置を用いて、第四要素情報と、受信ペアリング値情報と、暗号化セッション鍵受信部331が出力したマスク情報vとを入力し、CPU911などの処理装置を用いて、入力した第四要素情報と受信ペアリング値情報とを結合してビット列情報を生成し、CPU911などの処理装置を用いて、生成したビット列情報に対応するハッシュ値を算出し、CPU911などの処理装置を用いて、算出したハッシュ値を示す情報と入力したマスク情報vとの排他的論理和を算出して、復元文字列情報とし、CPU911などの処理装置を用いて、算出した復元文字列情報に対応するハッシュ値を算出し、算出したハッシュ値をセッション鍵Kとすることを特徴とする。
この実施の形態における受信者装置300によれば、セッション鍵復元部334が、加法群Gの要素Rを示す第四要素情報と、ペアリング値w’を示す受信ペアリング値情報とを結合してビット列情報を生成し、生成したビット列情報に対応するハッシュ値を算出し、算出したハッシュ値を示す情報に基づいて、セッション鍵Kを復元するので、G−BDH問題に効率良く帰着する安全性の高い暗号方式により送信者装置200と共有するセッション鍵Kを、効率的に復元することができるという効果を奏する。
以上説明したセッション鍵共有装置は、
ペアリングを用いたIDベース公開鍵暗号を用いたセッション鍵共有装置において、ペアリング値をハッシュするのに用いるマスク生成関数への入力として、ペアリング値だけでなく、セッション鍵を暗号化した値も入力に加わっていることを特徴とする。
以上説明したセッション鍵共有装置は、
ペアリングを用いたIDベース鍵配送方式を用いたセッション鍵共有装置において、前記セッション鍵を暗号化するのに、
ID情報IDから一意的に決まるQIDを計算し、
データmをランダムに生成し、mのハッシュ値r=H(m)を計算し、R=rP1とし、
pubとQIDのペアリング値のr乗w=e(Ppub、QIDを計算し、
マスク生成関数Hを用いてv=XOR(m,H(R,w))を計算し、
鍵導出関数Gを用いて、セッション鍵K=G(m)を計算し、
セッション鍵Kと前記セッション鍵の暗号化C=(R,v)を出力することを特徴とする。
以上説明したセッション鍵共有装置は、
ペアリングを用いたIDベース鍵配送方式を用いたセッション鍵共有装置において、暗号化された鍵C=(R,v)を復号するのに、
Rとユーザプライベート鍵dIDのペアリング値w=e(R,dID)を計算し、
マスク生成関数Hを用いてm=XOR(v,H(R,w))を計算し、
r=H(m)を計算し、
R=rP1であるかどうかをチェックし、もし成立すれば、
鍵導出関数Gを用いて、セッション鍵K=G(m)を計算し、
セッション鍵Kを出力することを特徴とする。
以上説明したセッション鍵共有プログラムは、
ペアリングを用いたIDベース公開鍵暗号を用いたセッション鍵共有プログラムにおいて、ペアリング値をハッシュするのに用いるマスク生成関数への入力として、ペアリング値だけでなく、セッション鍵を暗号化した値も入力に加わっていることを特徴とする。
以上説明したセッション鍵共有プログラムは、
ペアリングを用いたIDベース鍵配送方式を用いたセッション鍵共有プログラムにおいて、前記セッション鍵を暗号化するのに、
ID情報IDから一意的に決まるQIDを計算し、
データmをランダムに生成し、mのハッシュ値r=H(m)を計算し、R=rP1とし、
pubとQIDのペアリング値のr乗w=e(Ppub,QIDを計算し、
マスク生成関数Hを用いてv=XOR(m,H(R,w))を計算し、
鍵導出関数Gを用いて、セッション鍵K=G(m)を計算し、
セッション鍵Kと前記セッション鍵の暗号化C=(R,v)を出力することを特徴とする。
以上説明したセッション鍵共有プログラムは、
ペアリングを用いたIDベース鍵配送方式を用いたセッション鍵共有プログラムにおいて、暗号化された鍵C=(R,v)を復号するのに、
Rとユーザプライベート鍵dIDのペアリング値w=e(R,dID)を計算し、
マスク生成関数Hを用いてm=XOR(v,H(R,w))を計算し、
r=H(m)を計算し、
R=rP1であるかどうかをチェックし、もし成立すれば、
鍵導出関数Gを用いて、セッション鍵K=G(m)を計算し、
セッション鍵Kを出力することを特徴とする。
以上説明したIDベース公開鍵暗号装置は、
ペアリングを用いたIDベース公開鍵暗号装置において、ペアリング値をハッシュするのに用いるマスク生成関数への入力として、ペアリング値だけでなく、セッション鍵を暗号化した値も入力に加わっていることを特徴とする。
以上説明したIDベース公開鍵暗号装置は、
ペアリングを用いたIDベース公開鍵暗号装置において、平文Mを暗号化するのに、
ID情報IDから一意的に決まるQIDを計算し、
データmをランダムに生成し、mのハッシュ値r=H(m)を計算し、R=rP1とし、
pubとQIDのペアリング値のr乗w=e(Ppub,QIDを計算し、
マスク生成関数Hを用いてv=XOR(m,H(R,w))を計算し、
鍵導出関数Gを用いて、セッション鍵K=G(m)を計算し、
鍵Kを用いて計算されたMの暗号化を出力することを特徴とする。
以上説明したIDベース公開鍵暗号装置は、
ビット毎の排他的論理和XOR(,)を用い、鍵Kを用いて計算されたMの暗号化として、XOR(M,K)を用いることを特徴とする。
以上説明したIDベース公開鍵暗号装置は、
ペアリングを用いたIDベース公開鍵暗号装置において、暗号化された鍵C=(R,v)を復号するのに、
Rとユーザプライベート鍵dIDのペアリング値w=e(R、dID)を計算し、
マスク生成関数Hを用いてm=XOR(v,H(R,w))を計算し、
r=H(m)を計算し、
R=rP1であるかどうかをチェックし、もし成立すれば、
鍵導出関数Gを用いて、セッション鍵K=G(m)を計算し、
鍵Kを用いて計算された暗号文Cの復号を出力することを特徴とする。
以上説明したIDベース公開鍵暗号装置は、
ビット毎の排他的論理和XOR(,)を用い、鍵Kを用いて計算されたCの復号として、XOR(C,K)を用いることを特徴とする。
以上説明したIDベース公開鍵暗号プログラムは、
ペアリングを用いたIDベース公開鍵暗号プログラムにおいて、ペアリング値をハッシュするのに用いるマスク生成関数への入力として、ペアリング値だけでなく、セッション鍵を暗号化した値も入力に加わっていることを特徴とする。
以上説明したIDベース公開鍵暗号プログラムは、
ペアリングを用いたIDベース公開鍵暗号プログラムにおいて、平文Mを暗号化するのに、
ID情報IDから一意的に決まるQIDを計算し、
データmをランダムに生成し、mのハッシュ値r=H(m)を計算し、R=rP1とし、
pubとQIDのペアリング値のr乗w=e(Ppub,QIDを計算し、
マスク生成関数Hを用いてv=XOR(m,H(R,w))を計算し、
鍵導出関数Gを用いて、セッション鍵K=G(m)を計算し、
鍵Kを用いて計算されたMの暗号化を出力することを特徴とする。
以上説明したIDベース公開鍵暗号プログラムは、
ビット毎の排他的論理和XOR(,)を用い、鍵Kを用いて計算されたMの暗号化として、XOR(M,K)を用いることを特徴とする。
以上説明したIDベース公開鍵暗号プログラムは、
ペアリングを用いたIDベース公開鍵暗号プログラムにおいて、暗号化された鍵C=(R,v)を復号するのに、
Rとユーザプライベート鍵dIDのペアリング値w=e(R,dID)を計算し、
マスク生成関数Hを用いてm=XOR(v,H(R,w))を計算し、
r=H(m)を計算し、
R=rP1であるかどうかをチェックし、もし成立すれば、
鍵導出関数Gを用いて、セッション鍵K=G(m)を計算し、
鍵Kを用いて計算された暗号文Cの復号を出力することを特徴とする。
以上説明したIDベース公開鍵暗号プログラムは、
ビット毎の排他的論理和XOR(,)を用い、鍵Kを用いて計算されたCの復号として、XOR(C,K)を用いることを特徴とする。
実施の形態3.
実施の形態3について、図28〜図29を用いて説明する。
この実施の形態におけるIDベース公開鍵暗号通信システム800(暗号通信システム)の全体構成、ユーザ秘密鍵生成センタ100・送信者装置200・受信者装置300のハードウェア構成は、実施の形態1で説明したものと同様なので、ここでは説明を省略する。
また、ユーザ秘密鍵生成センタ100の機能ブロックの構成は、実施の形態1で説明したものと同様なので、ここでは説明を省略する。
なお、ユーザ秘密鍵生成センタ100のパラメータ公開部122が公開するパラメータ情報には、実施の形態1で説明した情報のほか、マスク生成関数H及びハッシュ関数Hを示す情報が含まれている。
マスク生成関数H及びハッシュ関数Hには、ランダムオラクルとみなせる関数を用いる。
図28は、この実施の形態における送信者装置200の機能ブロックの構成の一例を示すブロック構成図である。
送信者装置200は、パラメータ取得部211、第一要素記憶部212、第二要素記憶部213、第四要素算出部222、暗号化セッション鍵送信部223、自然数算出部225、セッション鍵入力部226、送信識別情報取得部231、第五要素算出部232、送信ペアリング値算出部233、セッション鍵生成部234、セッション鍵記憶部235、平文記憶部241、暗号文生成部242、暗号文送信部243を有する。
このうち、パラメータ取得部211、第一要素記憶部212、第二要素記憶部213、第四要素算出部222、暗号化セッション鍵送信部223、送信識別情報取得部231、第五要素算出部232、送信ペアリング値算出部233、平文記憶部241、暗号文生成部242、暗号文送信部243は、実施の形態2で説明したものと同様なので、ここでは説明を省略する。
セッション鍵入力部226は、CPU911などの処理装置を用いて、文字列mを入力する。
セッション鍵入力部226は、CPU911などの処理装置を用いて、入力した文字列mを示す情報を、文字列情報(セッション鍵)として出力する。
自然数算出部225は、CPU911などの処理装置を用いて、セッション鍵入力部226が出力した文字列情報(セッション鍵)を入力し、ユーザ秘密鍵生成センタ100が公開したハッシュ関数Hを用いて、入力した文字列情報(セッション鍵)に対応するハッシュ値を算出し、自然数rとして出力する。
セッション鍵生成部234は、CPU911などの処理装置を用いて、第四要素算出部222が出力した第四要素情報と、送信ペアリング値算出部233が出力した送信ペアリング値情報と、セッション鍵入力部226が出力した文字列情報(セッション鍵)を入力し、入力した第四要素情報と、入力した送信ペアリング値情報とを結合して、ビット列情報を生成し、ユーザ秘密鍵生成センタ100が公開したマスク生成関数Hを用いて、生成したビット列情報に対応するハッシュ値を算出し、算出したハッシュ値と、入力した文字列情報(セッション鍵)との排他的論理和を算出して、マスク情報vとし、算出したマスク情報vを出力する。
セッション鍵記憶部235は、CPU911などの処理装置を用いて、セッション鍵入力部226が出力した文字列情報(セッション鍵)を入力する。
セッション鍵記憶部235は、磁気ディスク装置920などの記憶装置を用いて、入力した文字列情報(セッション鍵)を、セッション鍵Kとして記憶する。
図29は、この実施の形態における受信者装置300の機能ブロックの構成の一例を示すブロック構成図である。
受信者装置300は、受信パラメータ取得部311、秘密鍵取得部321、秘密鍵記憶部322、暗号化セッション鍵受信部331、受信ペアリング値算出部333、セッション鍵復元部334、受信セッション鍵記憶部335、暗号文受信部341、暗号文復号部342を有する。
このうち、受信パラメータ取得部311、秘密鍵取得部321、秘密鍵記憶部322、暗号化セッション鍵受信部331、受信ペアリング値算出部333、暗号文受信部341、暗号文復号部342は、実施の形態2で説明したものと同様なので、ここでは説明を省略する。
セッション鍵復元部334は、CPU911などの処理装置を用いて、暗号化セッション鍵受信部331が出力した第四要素情報及びマスク情報vと、受信ペアリング値算出部333が出力した受信ペアリング値情報とを入力する。
セッション鍵復元部334は、CPU911などの処理装置を用いて、入力した第四要素情報と、入力した受信ペアリング値情報とを結合して、ビット列情報を生成する。
セッション鍵復元部334は、CPU911などの処理装置を用いて、生成したビット列情報に対応するハッシュ値を、ユーザ秘密鍵生成センタ100が公開したマスク生成関数Hにより、算出する。
セッション鍵復元部334は、CPU911などの処理装置を用いて、算出したハッシュ値と、入力したマスク情報との排他的論理和を算出して、復元文字列情報(セッション鍵)とする。
セッション鍵復元部334は、CPU911などの処理装置を用いて、算出した復元文字列情報(セッション鍵)を出力する。
受信セッション鍵記憶部335は、CPU911などの処理装置を用いて、セッション鍵復元部334が出力した復元文字列情報(セッション鍵)を入力する。
受信セッション鍵記憶部335は、磁気ディスク装置920などの記憶装置を用いて、入力した復元文字列情報(セッション鍵)を、セッション鍵Kとして記憶する。
この実施の形態のIDベース公開鍵暗号通信システム800は、実施の形態1及び実施の形態2で説明した鍵カプセル化方式によるセッション鍵共有方式と異なり、入力した文字列mを示す情報を、そのままセッション鍵として用いるものである。
この実施の形態における暗号方式において、暗号化セッション鍵Cから、セッション鍵Kを復元するためには、加法群Gの要素Rを示す第四要素情報と、ペアリング値w’を示す受信ペアリング値情報とを結合したビット列情報に対応するハッシュ値を、マスク生成関数Hにより算出する必要がある。
マスク生成関数Hには、ランダムオラクルとみなすことができる関数を用いるので、実施の形態1の暗号方式の安全性についての議論と、並行する議論により、この実施の形態における暗号方式の安全性を証明することができる。
このように、鍵カプセル化方式でないセッション鍵共有方式であっても、加法群Gの要素Rを示す第四要素情報と、ペアリング値w’を示す受信ペアリング値情報とを結合したビット列情報を、マスク生成関数Hの入力とすることにより、G−BDH問題に効率良く帰着する安全性の高い暗号方式とすることができる。
この実施の形態における送信者装置200は、更に、
CPU911などの処理装置を用いて、文字列mを示す情報を入力し、CPU911などの処理装置を用いて、入力した文字列mを示す情報を、セッション鍵として出力するセッション鍵入力部226と、
CPU911などの処理装置を用いて、セッション鍵入力部226が出力したセッション鍵を入力し、CPU911などの処理装置を用いて、入力したセッション鍵に対応するハッシュ値を算出し、CPU911などの処理装置を用いて、算出したハッシュ値を示す情報を、第四要素算出部222及び送信ペアリング値算出部233が入力する乱数情報として出力する自然数算出部225と、
を有し、
セッション鍵生成部234が、
CPU911などの処理装置を用いて、第四要素情報と、送信ペアリング値情報と、セッション鍵入力部226が出力したセッション鍵とを入力し、CPU911などの処理装置を用いて、入力した第四要素情報と送信ペアリング値情報とを結合してビット列情報を生成し、CPU911などの処理装置を用いて、生成したビット列情報に対応するハッシュ値を算出し、CPU911などの処理装置を用いて、算出したハッシュ値を示す情報と入力した文字列情報との排他的論理和を算出してマスク情報vとし、CPU911などの処理装置を用いて、算出したマスク情報vを出力し、
暗号化セッション鍵送信部223が、
CPU911などの処理装置を用いて、第四要素情報と、セッション鍵生成部234が出力したマスク情報vとを入力し、送信装置(通信装置915)を用いて、入力した第四要素情報とマスク情報vとを含む情報を暗号化セッション鍵Cとして受信者装置300に対して送信することを特徴とする。
この実施の形態における送信者装置200によれば、セッション鍵生成部234が、加法群Gの要素Rを示す第四要素情報と、ペアリング値wを示す送信ペアリング値情報とを結合してビット列情報を生成し、生成したビット列情報に対応するハッシュ値を算出し、算出したハッシュ値を示す情報に基づいて、マスク情報vを生成するので、G−BDH問題に効率良く帰着する安全性の高い暗号方式により受信者装置300と共有するセッション鍵Kを、効率的に生成することができるという効果を奏する。
この実施の形態における受信者装置300は、
暗号化セッション鍵受信部331が、
受信装置(通信装置915)を用いて、暗号化セッション鍵Cを受信し、CPU911などの処理装置を用いて、受信した暗号化セッション鍵Cに含まれる第四要素情報とマスク情報vとを出力し、
セッション鍵復元部334が、
CPU911などの処理装置を用いて、第四要素情報と、受信ペアリング値情報と、暗号化セッション鍵受信部331が出力したマスク情報vとを入力し、CPU911などの処理装置を用いて、入力した第四要素情報と受信ペアリング値情報とを結合してビット列情報を生成し、CPU911などの処理装置を用いて、生成したビット列情報に対応するハッシュ値を算出し、CPU911などの処理装置を用いて、算出したハッシュ値を示す情報と入力したマスク情報vとの排他的論理和を算出して、セッション鍵Kとすることを特徴とする。
この実施の形態における受信者装置300によれば、セッション鍵復元部334が、加法群Gの要素Rを示す第四要素情報と、ペアリング値w’を示す受信ペアリング値情報とを結合してビット列情報を生成し、生成したビット列情報に対応するハッシュ値を算出し、算出したハッシュ値を示す情報に基づいて、セッション鍵Kを復元するので、G−BDH問題に効率良く帰着する安全性の高い暗号方式により送信者装置200と共有するセッション鍵Kを、効率的に復元することができるという効果を奏する。
実施の形態4.
実施の形態1〜実施の形態3では、特定の方式によるIDベース公開鍵暗号通信システム800について説明したが、上記の説明から明らかなように、以下の条件を満たす構成のIDベース暗号方式についても適用が可能である。
(1)G−BDH問題に帰着する暗号方式であること。
(2)セッション鍵を復元するために、鍵導出関数Gやマスク生成関数Hなどのランダムオラクルとみなすことができる関数を用いる暗号方式であること。
(3)送信者装置200が受信者装置300に対して送信する情報(暗号化セッション鍵C)に、双線形ペアリング関数の一方の入力である加法群の要素を示す情報が含まれていること。
(4)受信者装置300がセッション鍵を復元するために用いる秘密情報(ユーザ秘密鍵)に、双線形ペアリング関数の他方の入力である加法群の要素を示す情報が含まれていること。
以上の条件を満たすIDベース暗号方式において、
(5)(3)で述べた双線形ペアリング関数の一方の入力である加法群の要素を示す情報と、双線形ペアリング関数の出力であるペアリング値を示す情報とを結合した情報を、(2)で述べたランダムオラクルとみなすことができる関数の入力とすること。
これにより、G−BDH問題に効率良く帰着する安全性の高い暗号方式とすることができる。
実施の形態1におけるIDベース公開鍵暗号通信システム800の全体構成の一例を示すシステム構成図。 実施の形態1におけるユーザ秘密鍵生成センタ100及び送信者装置200及び受信者装置300の外観の一例を示す図。 実施の形態1におけるユーザ秘密鍵生成センタ100及び送信者装置200及び受信者装置300のハードウェア資源の一例を示す図。 実施の形態1におけるユーザ秘密鍵生成センタ100の機能ブロックの構成の一例を示すブロック構成図。 実施の形態1における送信者装置200の機能ブロックの一例を示すブロック構成図。 実施の形態1における受信者装置300の機能ブロックの一例を示すブロック構成図。 実施の形態1におけるユーザ秘密鍵生成センタ100がパラメータ情報を生成するパラメータ生成処理の流れの一例を示すフローチャート図。 実施の形態1におけるユーザ秘密鍵生成センタ100がユーザ秘密鍵を生成する秘密鍵生成処理の流れの一例を示すフローチャート図。 実施の形態1における送信者装置200がセッション鍵Kを生成するセッション鍵生成処理の流れの一例を示すフローチャート図。 実施の形態1における受信者装置300がセッション鍵Kを復元するセッション鍵復元処理の流れの一例を示すフローチャート図。 ここで議論するKEMにおけるIND−ID−CCA安全性の定義に登場する攻撃者Aを示す図。 ここで議論する攻撃者Aの攻撃シナリオを示すフローチャート図。 実施の形態1における暗号方式の安全性をG−BDH問題に帰着させるために想定する(IDベースではない)公開鍵暗号方式を説明する説明図。 一般的な攻撃者Bの攻撃シナリオを示すフローチャート図。 攻撃者Aを利用して非IDベース公開鍵暗号方式を攻撃する攻撃者Bの構成を示す図。 攻撃者Aを利用して非IDベース公開鍵暗号方式を攻撃する攻撃者Bのアルゴリズムを示すフローチャート図。 攻撃者Bがオラクルをシミュレートするオラクルシミュレート処理の流れを示すフローチャート図(その1)。 攻撃者Bがオラクルをシミュレートするオラクルシミュレート処理の流れを示すフローチャート図(その2)。 攻撃者Bを利用してG−BDH問題に解答する解答者Cの構成を示す図。 攻撃者Bを利用してG−BDH問題に解答する解答者Cのアルゴリズムを示すフローチャート図。 解答者Cがオラクルをシミュレートするオラクルシミュレート処理の流れを示すフローチャート図(その1)。 解答者Cがオラクルをシミュレートするオラクルシミュレート処理の流れを示すフローチャート図(その2)。 解答者C’がランダムオラクルをシミュレートするオラクルシミュレート処理の流れを示すフローチャート図。 実施の形態2における送信者装置200の機能ブロックの構成の一例を示すブロック構成図。 実施の形態2における受信者装置300の機能ブロックの構成の一例を示すブロック構成図。 実施の形態2における送信者装置200がセッション鍵Kを生成するセッション鍵生成処理の流れの一例を示すフローチャート図。 実施の形態2における受信者装置300がセッション鍵Kを復元するセッション鍵復元処理の流れの一例を示すフローチャート図。 実施の形態3における送信者装置200の機能ブロックの構成の一例を示すブロック構成図。 実施の形態3における受信者装置300の機能ブロックの構成の一例を示すブロック構成図。
符号の説明
100 ユーザ秘密鍵生成センタ、110 公開パラメータ生成部、111 第一要素選択部、112 マスターキー選択部、113 マスターキー記憶部、121 第二要素算出部、122 パラメータ公開部、130 ユーザ秘密鍵生成部、131 識別情報取得部、132 第三要素算出部、133 秘密鍵算出部、134 秘密鍵通知部、200 送信者装置、211 パラメータ取得部、212 第一要素記憶部、213 第二要素記憶部、221 自然数選択部、222 第四要素算出部、223 暗号化セッション鍵送信部、224 文字列選択部、225 自然数算出部、226 セッション鍵入力部、231 送信識別情報取得部、232 第五要素算出部、233 送信ペアリング値算出部、234 セッション鍵生成部、235 セッション鍵記憶部、241 平文記憶部、242 暗号文生成部、243 暗号文送信部、300 受信者装置、311 受信パラメータ取得部、321 秘密鍵取得部、322 秘密鍵記憶部、331 暗号化セッション鍵受信部、333 受信ペアリング値算出部、334 セッション鍵復元部、335 受信セッション鍵記憶部、341 暗号文受信部、342 暗号文復号部、800 IDベース公開鍵暗号通信システム、901 表示装置、902 キーボード、903 マウス、904 FDD、905 CDD、906 プリンタ装置、907 スキャナ装置、910 システムユニット、911 CPU、912 バス、913 ROM、914 RAM、915 通信装置、920 磁気ディスク装置、921 OS、922 ウィンドウシステム、923 プログラム群、924 ファイル群、931 電話器、932 ファクシミリ機、940 インターネット、941 ゲートウェイ、942 LAN。

Claims (16)

  1. 情報を記憶する記憶装置と、
    情報を処理する処理装置と、
    送信者装置が送信した情報を受信する受信装置と、
    上記記憶装置を用いて、加法群Gの要素dIDを示す情報をユーザ秘密鍵情報として記憶する秘密鍵記憶部と、
    上記受信装置を用いて、送信者装置が送信した暗号化セッション鍵を受信し、上記処理装置を用いて、受信した暗号化セッション鍵に含まれる加法群Gの要素Rを示す情報を第四要素情報として出力する暗号化セッション鍵受信部と、
    上記処理装置を用いて、上記秘密鍵記憶部が記憶したユーザ秘密鍵情報と上記暗号化セッション鍵受信部が出力した第四要素情報とを入力し、上記処理装置を用いて、入力したユーザ秘密鍵情報と第四要素情報とに基づいて、加法群Gの要素Rと加法群Gの要素dIDとのペアリング値を算出して乗法群Gの要素w’とし、上記処理装置を用いて、算出した乗法群Gの要素w’を示す情報を受信ペアリング値情報として出力する受信ペアリング値算出部と、
    上記処理装置を用いて、上記暗号化セッション鍵受信部が出力した第四要素情報と上記受信ペアリング値算出部が出力した受信ペアリング値情報とを入力し、上記処理装置を用いて、入力した第四要素情報と受信ペアリング値情報とに基づいて、ハッシュ値を算出し、上記処理装置を用いて、算出したハッシュ値に基づいて、送信者装置が生成したセッション鍵と同一のセッション鍵を復元するセッション鍵復元部と、
    を有することを特徴とする受信者装置。
  2. 情報を記憶する記憶装置と、
    情報を処理する処理装置と、
    受信者装置に対して情報を送信する送信装置と、
    上記記憶装置を用いて、加法群Gの要素Pを示す情報を第一要素情報として記憶する第一要素記憶部と、
    上記記憶装置を用いて、加法群Gの要素Ppubを示す情報を第二要素情報として記憶する第二要素記憶部と、
    上記処理装置を用いて、上記第一要素記憶部が記憶した第一要素情報と自然数rを示す乱数情報とを入力し、上記処理装置を用いて、入力した第一要素情報と乱数情報とに基づいて、加法群Gの要素Rを算出し、上記処理装置を用いて、算出した加法群Gの要素Rを示す情報を第四要素情報として出力する第四要素算出部と、
    上記処理装置を用いて、受信者装置を識別する識別情報を入力し、上記処理装置を用いて、入力した識別情報に対応する加法群Gの要素QIDを算出し、上記処理装置を用いて、算出した加法群Gの要素QIDを示す情報を第五要素情報として出力する第五要素算出部と、
    上記処理装置を用いて、上記第二要素記憶部が記憶した第二要素情報と上記第五要素算出部が出力した第五要素情報と上記乱数情報とを入力し、上記処理装置を用いて、入力した第二要素情報と第五要素情報とに基づいて、加法群Gの要素Ppubと加法群Gの要素QIDとのペアリング値を算出し、上記処理装置を用いて、算出したペアリング値と入力した乱数情報とに基づいて、乗法群Gの要素wを算出し、上記処理装置を用いて、算出した乗法群Gの要素wを示す情報を送信ペアリング値情報として出力する送信ペアリング値算出部と、
    上記処理装置を用いて、上記第四要素算出部が出力した第四要素情報と上記送信ペアリング値算出部が出力した送信ペアリング値情報とを入力し、上記処理装置を用いて、入力した第四要素情報と送信ペアリング値情報とに基づいて、ハッシュ値を算出し、上記処理装置を用いて、算出したハッシュ値に基づいて、セッション鍵を生成するセッション鍵生成部と、
    上記処理装置を用いて、上記第四要素算出部が出力した第四要素情報を入力し、上記送信装置を用いて、入力した第四要素情報を含む情報を暗号化セッション鍵として受信者装置に対して送信する暗号化セッション鍵送信部と、
    を有することを特徴とする送信者装置。
  3. 情報を記憶する記憶装置と、
    情報を処理する処理装置と、
    受信者装置に対して情報を送信する送信装置と、
    上記記憶装置を用いて、加法群Gの要素Pを示す情報を第一要素情報として記憶する第一要素記憶部と、
    上記記憶装置を用いて、加法群Gの要素Ppubを示す情報を第二要素情報として記憶する第二要素記憶部と、
    上記処理装置を用いて、上記第一要素記憶部が記憶した第一要素情報と自然数rを示す乱数情報とを入力し、上記処理装置を用いて、入力した第一要素情報と乱数情報とに基づいて、加法群Gの要素Rを算出し、上記処理装置を用いて、算出した加法群Gの要素Rを示す情報を第四要素情報として出力する第四要素算出部と、
    上記処理装置を用いて、受信者装置を識別する識別情報を入力し、上記処理装置を用いて、入力した識別情報に対応する加法群Gの要素QIDを算出し、上記処理装置を用いて、算出した加法群Gの要素QIDを示す情報を第五要素情報として出力する第五要素算出部と、
    上記処理装置を用いて、上記第二要素記憶部が記憶した第二要素情報と上記第五要素算出部が出力した第五要素情報と上記乱数情報とを入力し、上記処理装置を用いて、入力した第二要素情報と第五要素情報とに基づいて、加法群Gの要素Ppubと加法群Gの要素QIDとのペアリング値を算出し、上記処理装置を用いて、算出したペアリング値と入力した乱数情報とに基づいて、乗法群Gの要素wを算出し、上記処理装置を用いて、算出した乗法群Gの要素wを示す情報を送信ペアリング値情報として出力する送信ペアリング値算出部と、
    上記処理装置を用いて、上記第四要素算出部が出力した第四要素情報と上記送信ペアリング値算出部が出力した送信ペアリング値情報とを入力し、上記処理装置を用いて、入力した第四要素情報と送信ペアリング値情報とに基づいて、ハッシュ値を算出し、上記処理装置を用いて、算出したハッシュ値に基づいて、受信者装置がセッション鍵を復元するために用いるマスク情報を生成し、上記処理装置を用いて、生成したマスク情報を出力するセッション鍵生成部と、
    上記処理装置を用いて、上記第四要素算出部が出力した第四要素情報と、上記セッション鍵生成部が出力したマスク情報とを入力し、上記送信装置を用いて、入力した第四要素情報とマスク情報とを含む情報を暗号化セッション鍵として受信者装置に対して送信する暗号化セッション鍵送信部と、
    を有することを特徴とする送信者装置。
  4. 情報を処理する処理装置と、
    上記処理装置を用いて、加法群Gの要素Pを選択し、上記処理装置を用いて、選択した加法群Gの要素Pを示す情報を第一要素情報として出力する第一要素選択部と、
    上記処理装置を用いて、自然数sを選択し、上記処理装置を用いて、選択した自然数sを示す情報をマスターキー情報として出力するマスターキー選択部と、
    上記処理装置を用いて、上記第一要素選択部が出力した第一要素情報と上記マスターキー選択部が出力したマスターキー情報とを入力し、上記処理装置を用いて、入力した第一要素情報とマスターキー情報とに基づいて、加法群Gの要素Ppubを算出し、上記処理装置を用いて、算出した加法群Gの要素Ppubを示す情報を第二要素情報として出力する第二要素算出部と、
    上記処理装置を用いて、上記第一要素選択部が出力した第一要素情報と上記第二要素算出部が出力した第二要素情報とを入力し、上記処理装置を用いて、入力した第一要素情報と第二要素情報とを含む情報をパラメータ情報として公開するパラメータ公開部と、
    上記処理装置を用いて、受信者装置を識別する識別情報を入力し、上記処理装置を用いて、入力した識別情報に対応する加法群Gの要素QIDを算出し、上記処理装置を用いて、算出した加法群Gの要素QIDを示す情報を第三要素情報として出力する第三要素算出部と、
    上記処理装置を用いて、上記第三要素算出部が出力した第三要素情報と上記マスターキー選択部が出力したマスターキー情報とを入力し、上記処理装置を用いて、入力した第三要素情報とマスターキー情報とに基づいて、加法群Gの要素dIDを算出し、上記処理装置を用いて、算出した加法群Gの要素dIDを示す情報をユーザ秘密鍵情報として出力する秘密鍵算出部と、
    上記処理装置を用いて、上記秘密鍵算出部が出力したユーザ秘密鍵情報を入力し、上記処理装置を用いて、入力したユーザ秘密鍵情報を受信者装置に対して秘密裡に通知する秘密鍵通知部と、
    を有する鍵生成装置と、
    情報を記憶する記憶装置と、
    情報を処理する処理装置と、
    受信者装置に対して情報を送信する送信装置と、
    上記処理装置を用いて、上記鍵生成装置が公開したパラメータ情報を取得し、上記処理装置を用いて、取得したパラメータ情報に含まれる第一要素情報と第二要素情報とを出力するパラメータ取得部と、
    上記処理装置を用いて、上記パラメータ取得部が出力した第一要素情報を入力し、上記記憶装置を用いて、入力した第一要素情報を記憶する第一要素記憶部と、
    上記処理装置を用いて、上記パラメータ取得部が出力した第二要素情報を入力し、上記記憶装置を用いて、入力した第二要素情報を記憶する第二要素記憶部と、
    上記処理装置を用いて、上記第一要素記憶部が記憶した第一要素情報と自然数rを示す乱数情報とを入力し、上記処理装置を用いて、入力した第一要素情報と乱数情報とに基づいて、加法群Gの要素Rを算出し、上記処理装置を用いて、算出した加法群Gの要素Rを示す情報を第四要素情報として出力する第四要素算出部と、
    上記処理装置を用いて、受信者装置を識別する識別情報を入力し、上記処理装置を用いて、入力した識別情報に対応する加法群Gの要素QIDを算出し、上記処理装置を用いて、算出した加法群Gの要素QIDを示す情報を第五要素情報として出力する第五要素算出部と、
    上記処理装置を用いて、上記第二要素記憶部が記憶した第二要素情報と上記第五要素算出部が出力した第五要素情報と上記乱数情報とを入力し、上記処理装置を用いて、入力した第二要素情報と第五要素情報とに基づいて、加法群Gの要素Ppubと加法群Gの要素QIDとのペアリング値を算出し、上記処理装置を用いて、算出したペアリング値と入力した乱数情報とに基づいて、乗法群Gの要素wを算出し、上記処理装置を用いて、算出した乗法群Gの要素wを示す情報を送信ペアリング値情報として出力する送信ペアリング値算出部と、
    上記処理装置を用いて、上記第四要素算出部が出力した第四要素情報と上記送信ペアリング値算出部が出力した送信ペアリング値情報とを入力し、上記処理装置を用いて、入力した第四要素情報と送信ペアリング値情報とに基づいて、ハッシュ値を算出するセッション鍵生成部と、
    上記処理装置を用いて、上記第四要素算出部が出力した第四要素情報を入力し、上記送信装置を用いて、入力した第四要素情報を含む情報を暗号化セッション鍵として受信者装置に対して送信する暗号化セッション鍵送信部と、
    を有する送信者装置と、
    情報を記憶する記憶装置と、
    情報を処理する処理装置と、
    送信者装置が送信した情報を受信する受信装置と、
    上記処理装置を用いて、上記鍵生成装置が通知したユーザ秘密鍵情報を取得し、上記処理装置を用いて、取得したユーザ秘密鍵情報を出力する秘密鍵取得部と、
    上記処理装置を用いて、上記秘密鍵取得部が出力したユーザ秘密鍵情報を入力し、上記記憶装置を用いて、入力したユーザ秘密鍵情報を記憶する秘密鍵記憶部と、
    上記受信装置を用いて、送信者装置が送信した暗号化セッション鍵を受信し、上記処理装置を用いて、受信した暗号化セッション鍵に含まれる加法群Gの要素Rを示す情報を第四要素情報として出力する暗号化セッション鍵受信部と、
    上記処理装置を用いて、上記秘密鍵記憶部が記憶したユーザ秘密鍵情報と上記暗号化セッション鍵受信部が出力した第四要素情報とを入力し、上記処理装置を用いて、入力したユーザ秘密鍵情報と第四要素情報とに基づいて、加法群Gの要素Rと加法群Gの要素dIDとのペアリング値を算出して乗法群Gの要素w’とし、上記処理装置を用いて、算出した乗法群Gの要素w’を示す情報を受信ペアリング値情報として出力する受信ペアリング値算出部と、
    上記処理装置を用いて、上記暗号化セッション鍵受信部が出力した第四要素情報と上記受信ペアリング値算出部が出力した受信ペアリング値情報とを入力し、上記処理装置を用いて、入力した第四要素情報と受信ペアリング値情報とに基づいて、ハッシュ値を算出し、上記処理装置を用いて、算出したハッシュ値に基づいて、送信者装置が生成したセッション鍵と同一のセッション鍵を復元するセッション鍵復元部と、
    を有する受信者装置と、
    を備えることを特徴とする暗号通信システム。
  5. 上記送信者装置は、更に、
    上記処理装置を用いて、加法群Gの位数より小さい自然数rをランダムに選択し、上記処理装置を用いて、選択した自然数rを示す情報を、上記第四要素算出部及び上記送信ペアリング値算出部が入力する乱数情報として出力する自然数選択部
    を有し、
    上記セッション鍵生成部は、
    上記処理装置を用いて、第四要素情報と送信ペアリング値情報とを入力し、上記処理装置を用いて、入力した第四要素情報と送信ペアリング値情報とを結合してビット列情報を生成し、上記処理装置を用いて、生成したビット列情報に対応するハッシュ値を算出し、算出したハッシュ値をセッション鍵とする
    ことを特徴とする請求項2に記載の送信者装置。
  6. 上記セッション鍵復元部は、
    上記処理装置を用いて、第四要素情報と受信ペアリング値情報とを入力し、上記処理装置を用いて、入力した第四要素情報と受信ペアリング値情報とを結合してビット列情報を生成し、上記処理装置を用いて、生成したビット列情報に対応するハッシュ値を算出し、算出したハッシュ値をセッション鍵とする
    ことを特徴とする請求項1に記載の受信者装置。
  7. 上記送信者装置は、更に、
    上記処理装置を用いて、文字列mをランダムに選択し、上記処理装置を用いて、選択した文字列mを示す情報を文字列情報として出力する文字列選択部と、
    上記処理装置を用いて、上記文字列選択部が出力した文字列情報を入力し、上記処理装置を用いて、入力した文字列情報に対応するハッシュ値を算出し、上記処理装置を用いて、算出したハッシュ値を示す情報を、上記第四要素算出部及び上記送信ペアリング値算出部が入力する乱数情報として出力する自然数算出部と、
    を有し、
    上記セッション鍵生成部は、
    上記処理装置を用いて、第四要素情報と、送信ペアリング値情報と、上記文字列選択部が出力した文字列情報とを入力し、上記処理装置を用いて、入力した第四要素情報と送信ペアリング値情報とを結合してビット列情報を生成し、上記処理装置を用いて、生成したビット列情報に対応するハッシュ値を算出し、上記処理装置を用いて、算出したハッシュ値を示す情報と入力した文字列情報との排他的論理和を算出してマスク情報とし、上記処理装置を用いて、算出したマスク情報を出力し、上記処理装置を用いて、入力した文字列情報に対応するハッシュ値を算出し、算出したハッシュ値をセッション鍵として出力し、
    上記暗号化セッション鍵送信部は、
    上記処理装置を用いて、第四要素情報と、上記セッション鍵生成部が出力したマスク情報とを入力し、上記送信装置を用いて、入力した第四要素情報とマスク情報とを含む情報を暗号化セッション鍵として受信者装置に対して送信することを特徴とする請求項3に記載の送信者装置。
  8. 上記暗号化セッション鍵受信部は、
    上記受信装置を用いて、暗号化セッション鍵を受信し、上記処理装置を用いて、受信した暗号化セッション鍵に含まれる第四要素情報とマスク情報とを出力し、
    上記セッション鍵復元部は、
    上記処理装置を用いて、第四要素情報と、受信ペアリング値情報と、上記暗号化セッション鍵受信部が出力したマスク情報とを入力し、上記処理装置を用いて、入力した第四要素情報と受信ペアリング値情報とを結合してビット列情報を生成し、上記処理装置を用いて、生成したビット列情報に対応するハッシュ値を算出し、上記処理装置を用いて、算出したハッシュ値を示す情報と入力したマスク情報との排他的論理和を算出して、復元文字列情報とし、上記処理装置を用いて、算出した復元文字列情報に対応するハッシュ値を算出し、算出したハッシュ値をセッション鍵とする
    ことを特徴とする請求項1に記載の受信者装置。
  9. 上記送信者装置は、更に、
    上記処理装置を用いて、文字列mを示す文字列情報を入力し、上記処理装置を用いて、入力した文字列情報を、セッション鍵として出力するセッション鍵入力部と、
    上記処理装置を用いて、上記セッション鍵入力部が出力したセッション鍵を入力し、上記処理装置を用いて、入力したセッション鍵に対応するハッシュ値を算出し、上記処理装置を用いて、算出したハッシュ値を示す情報を、上記第四要素算出部及び上記送信ペアリング値算出部が入力する乱数情報として出力する自然数算出部と、
    を有し、
    上記セッション鍵生成部は、
    上記処理装置を用いて、第四要素情報と、送信ペアリング値情報と、上記セッション鍵入力部が出力したセッション鍵とを入力し、上記処理装置を用いて、入力した第四要素情報と送信ペアリング値情報とを結合してビット列情報を生成し、上記処理装置を用いて、生成したビット列情報に対応するハッシュ値を算出し、上記処理装置を用いて、算出したハッシュ値を示す情報と入力したセッション鍵との排他的論理和を算出してマスク情報とし、上記処理装置を用いて、算出したマスク情報を出力し、
    上記暗号化セッション鍵送信部は、
    上記処理装置を用いて、第四要素情報と、上記セッション鍵生成部が出力したマスク情報とを入力し、上記送信装置を用いて、入力した第四要素情報とマスク情報とを含む情報を暗号化セッション鍵として受信者装置に対して送信することを特徴とする請求項3に記載の送信者装置。
  10. 上記暗号化セッション鍵受信部は、
    上記受信装置を用いて、暗号化セッション鍵を受信し、上記処理装置を用いて、受信した暗号化セッション鍵に含まれる第四要素情報とマスク情報とを出力し、
    上記セッション鍵復元部は、
    上記処理装置を用いて、第四要素情報と、受信ペアリング値情報と、上記暗号化セッション鍵受信部が出力したマスク情報とを入力し、上記処理装置を用いて、入力した第四要素情報と受信ペアリング値情報とを結合してビット列情報を生成し、上記処理装置を用いて、生成したビット列情報に対応するハッシュ値を算出し、上記処理装置を用いて、算出したハッシュ値を示す情報と入力したマスク情報との排他的論理和を算出して、セッション鍵とする
    ことを特徴とする請求項1に記載の受信者装置。
  11. 上記第四要素算出部は、
    上記処理装置を用いて、第一要素情報と乱数情報とを入力し、上記処理装置を用いて、入力した第一要素情報と乱数情報とに基づいて、加法群Gの要素Pをr回加算した要素を加法群Gの要素Rとして算出し、上記処理装置を用いて、算出した加法群Gの要素Rを示す情報を第四要素情報として出力し、
    上記送信ペアリング値算出部は、
    上記処理装置を用いて、第二要素情報と第五要素情報と乱数情報とを入力し、上記処理装置を用いて、入力した第二要素情報と第五要素情報と乱数情報とに基づいて、加法群Gの要素Ppubと加法群Gの要素QIDとのペアリング値のr乗を、乗法群Gの要素wとして算出し、上記処理装置を用いて、算出した乗法群Gの要素wを示す情報を送信ペアリング値情報として出力する
    ことを特徴とする請求項2及び請求項3のいずれかに記載の送信者装置。
  12. 上記第二要素算出部は、
    上記処理装置を用いて、第一要素情報とマスターキー情報とを入力し、上記処理装置を用いて、入力した第一要素情報とマスターキー情報とに基づいて、加法群Gの要素Pをs回加算した要素を加法群Gの要素Ppubとして算出し、上記処理装置を用いて、算出した加法群Gの要素Ppubを示す情報を第二要素情報として出力し、
    上記秘密鍵算出部は、
    上記処理装置を用いて、第三要素情報とマスターキー情報とを入力し、上記処理装置を用いて、入力した第三要素情報とマスターキー情報とに基づいて、加法群Gの要素QIDをs回加算した要素を加法群Gの要素dIDとして算出し、上記処理装置を用いて、算出した加法群Gの要素dIDを示す情報をユーザ秘密鍵情報として出力する
    ことを特徴とする請求項4に記載の暗号通信システム。
  13. 上記送信者装置は、更に、
    上記処理装置を用いて、受信者装置に対して通知すべき情報を平文情報として入力し、上記処理装置を用いて、上記セッション鍵生成部が生成したセッション鍵を入力し、上記処理装置を用いて、入力した平文情報を、入力したセッション鍵で暗号化して暗号文情報を生成し、上記処理装置を用いて、生成した暗号文情報を出力する暗号文生成部と、
    上記処理装置を用いて、上記暗号文生成部が出力した暗号文情報を入力し、上記送信装置を用いて、入力した暗号文情報を受信者装置に対して送信する暗号文送信部と、
    を有することを特徴とする請求項2及び請求項3のいずれかに記載の送信者装置。
  14. 上記受信者装置は、更に、
    上記受信装置を用いて、送信者装置が送信した暗号文情報を受信し、上記処理装置を用いて、受信した暗号文情報を出力する暗号文受信部と、
    上記処理装置を用いて、上記暗号文受信部が出力した暗号文情報を入力し、上記処理装置を用いて、上記セッション鍵復元部が復元したセッション鍵を入力し、上記処理装置を用いて、入力した暗号文情報を、入力したセッション鍵で復号して、平文情報を生成し、上記処理装置を用いて、生成した平文情報を出力する暗号文復号部と、
    を有することを特徴とする請求項1に記載の受信者装置。
  15. 情報を記憶する記憶装置と、情報を処理する処理装置と、受信者装置に対して情報を送信する送信装置とを有するコンピュータを、請求項2及び請求項3のいずれかに記載の送信者装置として機能させることを特徴とするプログラム。
  16. 情報を記憶する記憶装置と、情報を処理する処理装置と、送信者装置が送信した情報を受信する受信装置とを有するコンピュータを、請求項1に記載の受信者装置として機能させることを特徴とするプログラム。
JP2006215267A 2006-08-08 2006-08-08 受信者装置及び送信者装置及び暗号通信システム及びプログラム Active JP4869824B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006215267A JP4869824B2 (ja) 2006-08-08 2006-08-08 受信者装置及び送信者装置及び暗号通信システム及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006215267A JP4869824B2 (ja) 2006-08-08 2006-08-08 受信者装置及び送信者装置及び暗号通信システム及びプログラム

Publications (2)

Publication Number Publication Date
JP2008042590A JP2008042590A (ja) 2008-02-21
JP4869824B2 true JP4869824B2 (ja) 2012-02-08

Family

ID=39177115

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006215267A Active JP4869824B2 (ja) 2006-08-08 2006-08-08 受信者装置及び送信者装置及び暗号通信システム及びプログラム

Country Status (1)

Country Link
JP (1) JP4869824B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011199325A (ja) * 2008-06-18 2011-10-06 Nec Corp 識別子に基づく鍵交換装置
JP5403955B2 (ja) * 2008-07-01 2014-01-29 三菱電機株式会社 権限検証装置及び実行装置及び利用者端末装置及びアクセス制御システム及びコンピュータプログラム及び権限検証方法及び操作要求通知方法及びアクセス制御方法
JP5097102B2 (ja) * 2008-12-25 2012-12-12 日本電信電話株式会社 階層型idベース暗号化装置及び復号化装置、それらの方法、プログラム及び記録媒体
EP2228942B1 (en) * 2009-03-13 2012-06-06 Sap Ag Securing communications sent by a first user to a second user
WO2010123112A1 (ja) * 2009-04-24 2010-10-28 日本電信電話株式会社 暗号化装置、復号装置、暗号化方法、復号方法、セキュリティ方法、プログラム及び記録媒体
JP5414558B2 (ja) * 2010-01-29 2014-02-12 Kddi株式会社 鍵交換システム、鍵交換方法及び鍵交換プログラム
JP5590953B2 (ja) * 2010-04-15 2014-09-17 三菱電機株式会社 鍵生成装置及びデータ提供装置及び端末装置及びプログラム
JP5480763B2 (ja) * 2010-09-21 2014-04-23 日本電信電話株式会社 復号システム、汎用端末、高信頼端末、鍵生成装置、復号方法、プログラム
CN116680673B (zh) * 2023-06-20 2024-04-16 深圳市彤兴电子有限公司 显示器的身份校验方法、装置以及计算机设备

Also Published As

Publication number Publication date
JP2008042590A (ja) 2008-02-21

Similar Documents

Publication Publication Date Title
Liu et al. An efficient privacy-preserving outsourced calculation toolkit with multiple keys
US10785019B2 (en) Data transmission method and apparatus
JP4869824B2 (ja) 受信者装置及び送信者装置及び暗号通信システム及びプログラム
JP4859933B2 (ja) 暗号文生成装置及び暗号通信システム及び群パラメータ生成装置
CN111510281B (zh) 一种同态加密方法及装置
CN104301108B (zh) 一种从基于身份环境到无证书环境的签密方法
CN111404952B (zh) 变电站数据加密传输方法、装置、计算机设备和存储介质
Mitra et al. Prevention of the man-in-the-middle attack on Diffie–Hellman key exchange algorithm: A review
Karati et al. Provably secure and authenticated data sharing protocol for IoT‐based crowdsensing network
US11411720B2 (en) Key distribution system, terminal device, key distribution method, and program
WO2018043049A1 (ja) 暗号システム、暗号方法及び暗号プログラム
US11271743B2 (en) Plaintext equivalence proof techniques in communication systems
KR101575681B1 (ko) 속성 기반 암호화 방법
US20190215148A1 (en) Method of establishing anti-attack public key cryptogram
JP2006227411A (ja) 通信システム、暗号化装置、鍵生成装置、鍵生成方法、復元装置、通信方法、暗号化方法、暗号復元方法
JP4485122B2 (ja) 公開鍵暗号システム,署名システム,暗号通信システム,秘密鍵生成器,公開鍵生成器及びコンピュータプログラム
JP4563037B2 (ja) 暗号化装置および復号化装置、並びにこれらを備えた暗号システム、暗号化方法および復号化方法
Ansah et al. Relevance of elliptic curve cryptography in modern-day technology
JP2005176144A (ja) 端末装置、通信システム及び通信方法
Chen et al. A novel k-out-of-n oblivious transfer protocols based on bilinear pairings
Eshghi et al. Security Enhancement of Wireless Sensor Networks: A Hybrid Efficient Encryption Algorithm Approach
AlDerai et al. A Study of Image Encryption/Decryption by Using Elliptic Curve Cryptography ECC
CN115442103B (zh) 一种群体学习抗毒化攻击方法、***、设备及存储介质
CN109951287B (zh) 基于私钥池的抗量子计算签密方法和***
Diffie et al. 6. New Directions in

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090520

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4869824

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20141125

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