JP2004126514A - 公開鍵暗号通信方法 - Google Patents
公開鍵暗号通信方法 Download PDFInfo
- Publication number
- JP2004126514A JP2004126514A JP2003178295A JP2003178295A JP2004126514A JP 2004126514 A JP2004126514 A JP 2004126514A JP 2003178295 A JP2003178295 A JP 2003178295A JP 2003178295 A JP2003178295 A JP 2003178295A JP 2004126514 A JP2004126514 A JP 2004126514A
- Authority
- JP
- Japan
- Prior art keywords
- public key
- message
- key
- ciphertext
- receiver
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3006—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
- H04L9/3013—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the discrete logarithm problem, e.g. ElGamal or Diffie-Hellman systems
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/08—Randomization, e.g. dummy operations or using noise
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Mobile Radio Communication Systems (AREA)
- Storage Device Security (AREA)
Abstract
【課題】公開鍵暗号への攻撃者がランダムオラクルを与えるランダム関数を選んだ場合でも、安全であることが証明可能な公開鍵暗号通信技術を提供する。
【解決手段】送信者側装置100は、暗号文を作成する際に用いたランダムオラクルとしてのランダム関数への入力値(メッセージに限定されない)に関する部分情報を、暗号文から計算することが困難となるように、暗号文を作成する。また、ランダム関数への入力値を知っていることを証明する証明データを、暗号文の一部として作成する。そして暗号文を受信者側装置200に送信する。受信者側装置200は、受信した暗号文に含まれている証明データの正しく検証できた場合に、この暗号文の復号結果を出力する。
【選択図】図1
【解決手段】送信者側装置100は、暗号文を作成する際に用いたランダムオラクルとしてのランダム関数への入力値(メッセージに限定されない)に関する部分情報を、暗号文から計算することが困難となるように、暗号文を作成する。また、ランダム関数への入力値を知っていることを証明する証明データを、暗号文の一部として作成する。そして暗号文を受信者側装置200に送信する。受信者側装置200は、受信した暗号文に含まれている証明データの正しく検証できた場合に、この暗号文の復号結果を出力する。
【選択図】図1
Description
【0001】
【発明の属する技術分野】
本発明は、暗号通信技術に関する。特に、強化された適応的選択暗号文攻撃に対して強秘匿であることが証明可能な公開鍵暗号を用いた暗号通信技術に関する。また、ランダムオラクル(関数)に対して、暗号の攻撃者が不正な仕掛けを設けた場合においても、安全性が証明できる公開鍵暗号を用いた暗号通信技術に関する。
【0002】
【従来の技術】
現在、公開鍵暗号では非特許文献1で述べられているように、適応的選択暗号文攻撃に対して強秘匿(IND(Indistinguishability)−CCA2(Adaptive Chosen−Ciphertext Attack))であることが最も安全であると考えられている。
【0003】
IND−CCA2の意味において安全であることが証明可能な公開鍵暗号方式は、大きく2つに分類される。1つは、ランダムオラクル(入力値に対しランダムな値を正しく出力する)を前提とした計算機モデル上で安全性の証明を行うものである。ランダムオラクルという非現実的な仮定を必要とするものの、実用性に優れる公開鍵暗号方法を実現することが可能である。もう1つは、標準的計算モデル上で安全性の証明を行うものである。前者に比べると効率面で劣るが、実システム上で安全性証明が可能であるメリットを持つ。
【0004】
ランダムオラクルを前提とした計算機モデル上でIND−CCA2であることが証明可能な実用的暗号方法としては、非特許文献2に記載されている暗号方法や、非特許文献3に記載されている暗号方法や、非特許文献4に記載されている暗号方法などが知られている。
【0005】
一方、標準的計算機モデル上でIND−CCA2であることが証明可能な実用的暗号方法としては、非特許文献5に記載されている暗号方法が知られている。
【0006】
【非特許文献1】
M. Bellare, A. Desai, D. Pointcheval and P. Rogaway : Relations Among Notions of Security for Public−Key Encryption Schemes, Proc. of Crypto’98, LNCS1462, Springer−Verlag, pp.26−45 (1998)
【非特許文献2】
M. Bellare and P. Rogaway : Random Oracles are Practical −− A Paradigmfor Designing Efficient Protocol, First ACM Conference on Computer and Communications Security, pp.62−−73 (1993)
【非特許文献3】
M. Bellare and P. Rogaway : Optimal Asymmetric Encryption How to Encrypt with RSA, Proc. of Eurocrypt’94, LNCS950, Springer−Verlag, pp.92−111
(1994)
【非特許文献4】
V. Shoup : OAEP Reconsidered. Available on the e−print library (2000/060), November 2000
【非特許文献5】
R. Cramer and V. Shoup : A Practical Public Key Cryptosystem Provably Secure against Adaptive Chosen Ciphertext Attack, Proc. of Crypto98, LNCS1462, Springer−Verlag, pp.13−25 (1998)
【0007】
【発明が解決しようとする課題】
さて、本発明では、ランダムオラクルモデル上でIND−CCA2であることが証明可能な公開鍵暗号通信技術を対象とする。IND−CCA2の定義では、ランダムオラクルが公正に与えられる必要がある。しかし、現実世界において、ランダムオラクルを与えるランダム関数(例えばハッシュ関数)が公正であることを示すことは難しい。
【0008】
例えば、公開鍵暗号への攻撃者は、落し戸付きのハッシュ関数を作成し、既存システムのユーザに利用させることにより、そのシステムを破ろうとするかもしれない。また、一般に、公開鍵暗号およびハッシュ関数が別々にデザインされるため、公開鍵暗号の安全性がハッシュ関数により左右されることが起こり得る。
【0009】
以下、このことについて簡単に説明する。
【0010】
上記の非特許文献2には、メッセージxに対しその暗号文(u,v,w)が、
【0011】
【数35】
【0012】
により与えられる公開鍵暗号方法が記載されている。なお、数35において、fは公開された落し戸付き一方向性置換であり、G、Hはハッシュ関数である。この公開鍵暗号方法は、ハッシュ関数G、Hをランダムオラクルとするとき、IND−CCA2であることが同非特許文献2の中で示されている。
【0013】
さて、ハッシュ関数Gのデザイナである公開鍵暗号への攻撃者は、ハッシュ関数Gをハッシュ関数G’に対して、G=G’・fとなるように作成していたとする(但し、(f・g)(m)=f(g(m))とする)。ここで、G’をランダムオラクルとすると、Gもランダムオラクルになる点に注意する。
【0014】
攻撃者は、G(r)=(G’・f)(r)=G’(f(r))=G’(u)であるので、
【0015】
【数36】
【0016】
により、メッセージmを計算することができる。
【0017】
このように、従来のIND−CCA2の定義では、安全である公開鍵暗号であっても、ランダムオラクルを与えるランダム関数を攻撃者が選んだ場合に、不正にメッセージを入手できる場合がある。
【0018】
本発明は、上記事情に鑑みてなされたものであり、公開鍵暗号への攻撃者がランダムオラクルを与えるランダム関数を選んだ場合でも、安全であることが証明可能な公開鍵暗号を用いた暗号通信通信技術を提供することにある。
【0019】
具体的には、攻撃者がランダムオラクルを与えるランダム関数を選んで適応的選択暗号文攻撃を行なった場合でも、メッセージに関する部分情報を計算できないようにすることにある。
【0020】
【課題を解決するための手段】
上記課題を解決するために本発明の公開鍵暗号通信方法では、送信者側装置が、ランダム関数および受信者の公開鍵を用いてメッセージの暗号文を作成し、これを受信者側装置へ送信する。一方、前記受信者側装置が、前記ランダム関数および前記公開鍵と対の秘密鍵を用いて前記送信者側装置より受信した前記暗号文を復号化する。
【0021】
そして、前記送信者側装置は、前記暗号文から前記ランダム関数への入力値に関する部分情報が秘匿されるように、つまり、前記暗号文を作成する際に用いたランダムオラクルとしての前記ランダム関数への入力値(メッセージに限定されない)に関する部分情報を、前記暗号文から計算することが困難となるように前記暗号文を作成する。数35、数36に示す公開鍵暗号の例でいえば、ハッシュ関数Gに対する入力値rの部分情報f(r)を、暗号文から計算することが困難となるように当該暗号文を作成する。
【0022】
これにより、公開鍵暗号への攻撃者が、ランダム関数を自由に選ぶことができても、メッセージに関する部分情報を暗号文から計算することができない。数35、数36に示す公開鍵暗号の例でいえば、ハッシュ関数G’からG(r)を得ることができない。したがって、攻撃者による公開鍵暗号への攻撃を無効とすることができる。
【0023】
なお、本発明において、前記送信者側装置が、前記ランダム関数への入力値を知っていることを証明する証明データを、前記暗号文の一部として作成するようにしてもうよい。この場合、前記受信者側装置は、前記送信者側装置より受信した前記暗号文に含まれている前記証明データの正当性を確認し、前記正当性が確認された場合にのみ前記暗号文の復号化結果を出力する。
【0024】
このようにすることで、前記ランダム関数への入力値を知っていることが証明された場合にのみ、前記暗号文の復号結果が出力されるため、前記ランダム関数への入力値を知らない公開鍵暗号への攻撃者は、復号化オラクルから復号結果に関する情報を得ることができない。したがって、公開鍵暗号への攻撃者がランダムオラクルを与えるランダム関数を選んだ場合でも、安全な公開鍵暗号通信を実現できる。
【0025】
具体的には、例えば、受信者の秘密鍵を、
【0026】
【数37】
【0027】
とし、
前記秘密鍵と対の公開鍵を、
【0028】
【数38】
【0029】
とする(但し、Gは有限アーベル群を表わし、Gの元と{0,1}kの元との間に1対1対応があるものとする。また、nは、k1+k2以上でもよいし、あるいは未満でもよい)。
【0030】
この場合、前記送信者側装置は、
メッセージm∈{0,1}nに対して乱数r1∈{0,1}k1、r2∈{0,1}k2を選び、
【0031】
【数39】
【0032】
を計算して(但し、EK(m)は、メッセージ文mを鍵Kにより共通鍵暗号化アルゴリズムEを用いて暗号化した結果を意味する)、その結果(u,v,w)を前記メッセージmの暗号文とする。
【0033】
一方、前記受信者側装置は、
前記秘密鍵を用いて、
【0034】
【数40】
【0035】
なる(r1’,r2’)を計算して(但し、r1’∈{0,1}k1、r2’∈{0,1}k2であり、r1’,r2’のビット長は既知とする)、
【0036】
【数41】
【0037】
が成立することを確認することで、前記証明データの正当性を確認し、
前記確認に成功した場合にのみ、m’を、
【0038】
【数42】
【0039】
により計算し(但し、DK ’(w)は、暗号文wを鍵K’により共通鍵暗号化アルゴリズムDを用いて復号化した結果を意味する)、前記暗号文(u,v,w)のメッセージとして出力する。
【0040】
また、本発明において、前記送信者側装置が、前記暗号文の作成に先立って、前記ランダム関数への入力値を十分に大きな集合の中から一様に選ぶようにしてもよい。
【0041】
このようにすることで、公開鍵暗号への攻撃者は、前記ランダム関数への入力値を知ることがより困難になるため、復号化オラクルから復号結果に関する情報を得ることができない。したがって、公開鍵暗号への攻撃者がランダムオラクルを与えるランダム関数を選んだ場合でも、安全な公開鍵暗号通信を実現できる。
【0042】
具体的には、例えば、受信者の秘密鍵を、
【0043】
【数43】
【0044】
とし、
前記秘密鍵と対の公開鍵を、
【0045】
【数44】
【0046】
とする(但し、Gは有限アーベル群を表わし、{0,1}kの元をGの元とみなす1対1対応があるものとする)。
【0047】
この場合、前記送信者側装置は、
メッセージm∈{0,1}k0に対して乱数r1∈{0,1}k1、r2∈{0,1}k2を選び、
【0048】
【数45】
【0049】
を計算して、その結果(u,v)を前記メッセージmの暗号文とする。
【0050】
一方、前記受信者側装置は、
前記秘密鍵を用いて、
【0051】
【数46】
【0052】
なる(m’,r1’,r2’)を計算して(但し、m’∈{0,1}k0、r1’∈{0,1}k1、r2’∈{0,1}k2であり、m’,r1’,r2’のビット長は既知とする)、
【0053】
【数47】
【0054】
が成立することを確認し、
前記確認に成功した場合にのみ、m’を前記暗号文(u,v)のメッセージとする。
【0055】
なお、本発明において、暗号化対象となるメッセージは、文字列のみならず、画像や音、あるいは、送信データの暗号化のために使用する共通鍵など、あらゆるディジタルデータが該当する。
【0056】
【発明の実施の形態】
以下に、本発明の実施の形態について説明する。
【0057】
まず、以下の各実施形態に共通する公開鍵暗号通信システムの構成について説明する。
【0058】
図1は、本発明の各実施形態に共通する公開鍵暗号通信システムの概略構成図である。図示するように、公開鍵暗号通信システムは、暗号化処理を行なってメッセージの暗号文を作成する送信者側装置100と、復号化処理を行なってメッセージを復元する受信者側装置200とが、通信回線300を介して接続された構成を有している。
【0059】
図2は、図1に示す送信者側装置100の概略構成図である。図示するように、暗号化対象のメッセージを含む各種情報の入力を受け付ける入力部107と、乱数生成部101と、べき乗算部102と、暗号化部103と、剰余演算部104と、記憶部105と、通信回線300を介して受信者側装置200と通信を行なう通信部106と、を備えている。
【0060】
図3は、図1に示す受信者側装置200の概略構成図である。図示するように、通信回線300を介して送信者側装置100と通信を行なう通信部206と、鍵生成部201と、べき乗算部202と、復号化部203と、剰余演算部204と、記憶部205と、復号結果を含む各種情報を出力する出力部207と、を備えている。
【0061】
上記構成の送信者側装置100および受信者側装置200は、図4に示すような、CPU401と、メモリ402と、HDD等の外部記憶装置403と、CD−ROMやDVD−ROM等の可搬性を有する記憶媒体404から情報を読み出す読取装置405と、キーボードやマウスなどの入力装置406と、ディスプレイなどの出力装置407と、通信回線300を介して相手装置と通信を行なうための通信装置408と、を備えた一般的なコンピュータシステムにおいて、CPU401がメモリ402上にロードされた所定のプログラムを実行することにより実現することができる。この場合、メモリ402や外部記憶装置403が記憶部105、205に利用される。
【0062】
この所定のプログラムは、読取装置405を介して記憶媒体404から、あるいは、通信装置408を介して通信回線300から、外部記憶装置403にダウンロードされ、それから、メモリ402上にロードされてCPU401により実行されるようにしてもよい。また、読取装置405を介して記憶媒体404から、あるいは、通信装置408を介して通信回線300から、メモリ402上に直接ロードされ、CPU401により実行されるようにしてもよい。
【0063】
(第1実施形態)
次に、本発明の第1実施形態について、送信者Aが受信者Bに対して、送信データとなるメッセージmを暗号通信によって送信する場合を例にとり説明する。
図5は、本発明の第1実施形態の動作手順を説明するための図である。
【0064】
1.鍵生成処理
受信者側装置200において、鍵生成部201は、受信者B(受信者側装置200の操作者)よりの指示に従い、受信者Bの秘密鍵xと、受信者Bの公開鍵(g,h,H1,H2,H3)とを、それぞれ数48、数49により生成する。そして、生成情報を記憶部205に記憶する(ST1100)。
【0065】
【数48】
【0066】
【数49】
【0067】
ここで、Gは有限アーベル群を表わし、Gの元と{0,1}kの元との間に1対1対応があるものとする。また、k3は、k1+k2以上でもよいし、あるいは未満でもよい。
【0068】
次に、受信者Bは、受信者側装置200の鍵生成部201が生成した情報(g,h)を含む公開情報を、送信者A(送信者側装置100の操作者)に知らせる(ST1101)。例えば、受信者側装置200において、鍵生成部201は、受信者Bよりの指示に従い、公開情報を、通信部206を介して送信者側装置100へ送信する。あるいは、受信者Bは、例えば第3者(公開情報管理機関)への登録などの周知の方法により、公開情報を公開する。この公開情報は、送信者側装置100の記憶部105に記憶される。なお、公開鍵に含まれるランダム関数H1〜H3は、所定のものが送信者側装置100および受信者側装置200に予め設定されているようにしてもよい。あるいは、ランダム関数H1〜H3を、公開鍵の一部としてではなく、パブリックドメイン(public domain)に置くようしてもかまわない。
【0069】
2.暗号化処理
送信者側装置100において、入力部107は、送信者Aよりメッセージm(m∈{0,1}k1)の入力を受け付ける(ST1200)。これを受けて、乱数生成部101は、メッセージmに対して乱数r∈{0,1}k2を選ぶ。それから、暗号化部103は、この乱数rと、予め記憶部105に記憶しておいた受信者Bの公開鍵(g,h,H1,H2,H3)とを用いて、べき乗算部102を利用して数50を計算する(ST1201)。
【0070】
【数50】
【0071】
次に、暗号化部103は、数50の計算結果(u,v,w)を、メッセージmの暗号文として、通信回線300を介して、受信者側装置200に送信する(ST1202)。
【0072】
3.復号化処理
受信者側装置200において、通信部206は、通信回線300を介して送信者側装置100より暗号文(u,v,w)を受け取り、これを記憶部205に記憶する。さて、復号化部203は、受信者Bよりの指示に従い、べき乗算部202を利用して、記憶部205に記憶されている受信者の秘密鍵xを用いて、記憶部205に記憶されている暗号文(u,v,w)から数51を満たす(m’,r’)計算する(ST1300)。
【0073】
【数51】
【0074】
ここで、m’,r’のビット長は既知とする。
【0075】
次に、復号化部203は、数51の計算結果(m’,r’)を用いて、べき乗算部202を利用して、数52が成立するか否かを確認する(ST1301)。
【0076】
【数52】
【0077】
そして、復号化部203は、数52が成立することを確認できた場合のみ、復号結果m’を出力部207から出力する。一方、数52が成立することを確認できなかった場合は、復号結果m’の出力を拒否し、例えば代わりにエラーメッセージなどを出力部207から出力する(ST1302)。
【0078】
以上、本発明の第1実施形態について説明した。
【0079】
本実施形態では、群G上のDiffie−Hellman決定問題(定義については例えば非特許文献5を参照)の困難性を前提にして、IND−CCA2であることが証明できる。
【0080】
すなわち、IND−CCA2の意味において、本実施形態による公開鍵暗号を破ろうとする攻撃者(IND−CCA2の定義については、例えば、上記の文献4に記載されている)が、復号化オラクルから情報を得るためには、質問である暗号文に対する元のメッセージを知る必要がある。しかし、攻撃者は、復号化オラクルから新たな情報を得ることができない。また、上記の文献3に記載されている方法と同様の方法により、本実施形態が選択平文攻撃に対して強秘匿(IND−CPA(Chosen−Plaintext Attack))であることが証明できる。これより、本実施形態の公開鍵暗号通信は、IND−CCA2であることが証明できる。
【0081】
また、本実施形態において、乱数rをメッセージとみなすと(この場合、メッセージmは秘密である)、上記の文献3に記載されている方法と同様の方法により、群G上のDiffie−Hellman決定問題の困難性を前提にして、IND−CPAであることが証明できる。すなわち、暗号文から乱数rに関する部分情報を漏らしていないことを証明できる。つまり、本実施形態では、攻撃者がランダム関数に付随する情報を第3のランダム関数から得ても、メッセージに関する部分情報を暗号文から計算することが困難である。
【0082】
さらに、暗号文の一部であるデータwを正しく作成するためには、データmおよびデータrを知る必要がある。云いかえれば、ランダム関数への入力値を知る者しかデータmを作成することができない。本実施形態では、データwを正しく作成できない攻撃者は、復号化オラクルから新しい情報を得ることが困難である。
【0083】
以上のことから、公開鍵暗号への攻撃者がランダムオラクルを与えるランダム関数を選んだ場合でも安全な公開鍵暗号通信を実現できる。
【0084】
(第2実施形態)
次に、本発明の第2実施形態について、送信者Aが受信者Bに対して、送信データとなるメッセージmを暗号通信によって送信する場合を例にとり説明する。図6は、本発明の第2実施形態の動作手順を説明するための図である。
【0085】
1.鍵生成処理
受信者側装置200において、鍵生成部201は、受信者B(受信者側装置200の操作者)よりの指示に従い、受信者Bの秘密鍵xと、受信者Bの公開鍵(g,h,H1,H2,H3,(E,D))とを、それぞれ数53、数54により生成する。そして、生成情報を記憶部205に記憶する(ST1400)。
【0086】
【数53】
【0087】
【数54】
【0088】
ここで、Gは有限アーベル群を表わし、Gの元と{0,1}kの元との間に1対1対応があるものとする。また、nは、k1+k2以上でもよいし、あるいは未満でもよい。
【0089】
次に、受信者Bは、受信者側装置200の鍵生成部201が生成した情報(g,h)を含む公開情報を、送信者A(送信者側装置100の操作者)に知らせる(ST1401)。例えば、受信者側装置200において、鍵生成部201は、受信者Bよりの指示に従い、公開情報を、通信部206を介して送信者側装置100へ送信する。あるいは、受信者Bは、例えば第3者(公開情報管理機関)への登録などの周知の方法により、公開情報を公開する。この公開情報は、送信者側装置100の記憶部105に記憶される。なお、公開鍵に含まれるランダム関数H1〜H3および共通鍵暗号アルゴリズム(E,D)は、所定のものが送信者側装置100および受信者側装置200に予め設定されているようにしてもよい。あるいは、ランダム関数H1〜H3および共通鍵暗号アルゴリズム(E,D)を、公開鍵の一部としてではなく、パブリックドメイン(public domain)に置くようしてもかまわない。
【0090】
2.暗号化処理
送信者側装置100において、入力部107は、送信者Aよりメッセージm(m∈{0,1}n)の入力を受け付ける(ST1500)。これを受けて、乱数生成部101は、メッセージmに対して乱数r1∈{0,1}k1、r2∈{0,1}k2を選ぶ。それから、暗号化部103は、この乱数r1、r2と、予め記憶部105に記憶しておいた受信者Bの公開鍵(g,h,H1,H2,H3,(E,D))とを用いて、べき乗算部102を利用して数55を計算する(ST1501)。
【0091】
【数55】
【0092】
ここで、EK(m)は、メッセージ文mを鍵Kにより共通鍵暗号化アルゴリズムEを用いて暗号化した結果を意味する。
【0093】
次に、暗号化部103は、数55の計算結果(u,v,w)を、メッセージmの暗号文として、通信回線300を介して、受信者側装置200に送信する(ST1502)。
【0094】
3.復号化処理
受信者側装置200において、通信部206は、通信回線300を介して送信者側装置100より暗号文(u,v,w)を受け取り、これを記憶部205に記憶する。さて、復号化部203は、受信者Bよりの指示に従い、べき乗算部202を利用して、記憶部205に記憶されている受信者の秘密鍵xを用いて、記憶部205に記憶されている暗号文(u,v,w)から数56を満たす(r1’、r2’)計算する(ST1600)。
【0095】
【数56】
【0096】
ここで、r1’∈{0,1}k1、r2’∈{0,1}k2であり、r1’,r2’のビット長は既知とする。
【0097】
次に、復号化部203は、数56の計算結果(r1’、r2’)を用いて、べき乗算部202を利用し数57が成立するか否かを確認する(ST1601)。
【0098】
【数57】
【0099】
そして、復号化部203は、数57が成立することを確認できた場合のみm’を、
【0100】
【数58】
【0101】
により計算し、これを暗号文の復号結果として出力する。ここで、DK ’(w)は、暗号文wを鍵K’により共通鍵暗号化アルゴリズムDを用いて復号化した結果を意味する。一方、数57が成立することを確認できなかった場合は、m’の計算を拒否し、その代わりに例えばエラーメッセージなどを出力部207から出力する(ST1602)。
【0102】
以上、本発明の第2実施形態について説明した。
【0103】
本実施形態でも、上記の第1実施形態と同様の効果を奏する。
【0104】
(第3実施形態)
次に、本発明の第3実施形態について説明する。図7は、本発明の第3実施形態の動作手順を説明するための図である。
【0105】
1.鍵生成処理
受信者側装置200において、鍵生成部201は、受信者Bよりの指示に従い、受信者Bの秘密鍵xと、受信者Bの公開鍵(p,g,h,H1,H2,H3)とを、それぞれ数59、数60により生成する。そして、生成情報を記憶部205に記憶する(ST2100)。
【0106】
【数59】
【0107】
【数60】
【0108】
ここで、Z* pの元と{0,1}kの元との間に1対1対応があるものとする。また、k3は、k1+k2以上でもよいし、あるいは未満でもよい。
【0109】
次に、受信者Bは、受信者側装置200の鍵生成部201が生成した情報(p,g,h)を含む公開情報を、送信者Aに知らせる(ST2101)。例えば、受信者側装置200において、鍵生成部201は、受信者Bよりの指示に従い、公開情報を、通信部206を介して送信者側装置100へ送信する。あるいは、受信者Bは、例えば第3者(公開情報管理機関)への登録などの周知の方法により、公開情報を公開する。この公開情報は、送信者側装置100の記憶部105に記憶される。なお、公開鍵に含まれるランダム関数H1〜H3は、上記の第1実施形態と同様、所定のものが送信者側装置100および受信者側装置200に予め設定されているようにしてもよい。あるいは、ランダム関数H1〜H3を、公開鍵の一部としてではなく、パブリックドメイン(public domain)に置くようしてもかまわない。
【0110】
2.暗号化処理
送信者側装置100において、入力部107は、送信者Aよりメッセージm(m∈{0,1}k1)の入力を受け付ける(ST2200)。これを受けて、乱数生成部101は、メッセージmに対して乱数r∈{0,1}k2を選ぶ。それから、暗号化部103は、この乱数rと、予め記憶部105に記憶しておいた受信者Bの公開鍵(p,g,h,H1,H2,H3)とを用いて、べき乗算部102および剰余演算部104を利用して数61を計算する(ST2201)。
【0111】
【数61】
【0112】
次に、暗号化部103は、数61の計算結果(u,v,w)を、メッセージmの暗号文として、通信回線300を介して、受信者側装置200に送信する(ST2202)。
【0113】
3.復号化処理
受信者側装置200において、通信部206は、通信回線300を介して送信者側装置100より暗号文(u,v,w)を受け取り、これを記憶部205に記憶する。さて、復号化部203は、受信者Bよりの指示に従い、べき乗算部202を利用して、記憶部205に記憶されている受信者の秘密鍵xを用いて、記憶部205に記憶されている暗号文(u,v,w)から数62を満たす(m’,r’)計算する(ST2300)。
【0114】
【数62】
【0115】
ここで、m’、r’のビット長は既知とする。
【0116】
次に、復号化部203は、数62の計算結果(m’,r’)を用いて、べき乗算部202および剰余演算部204を利用して、数63が成立するか否かを確認する(ST2301)。
【0117】
【数63】
【0118】
そして、復号化部203は、数63が成立することを確認できた場合のみ、復号結果m’を出力部207から出力する。一方、数63が成立することを確認できなかった場合は、復号結果m’の出力を拒否し、例えば代わりにエラーメッセージなどを出力部207から出力する(ST2302)。
【0119】
以上、本発明の第3実施形態について説明した。
【0120】
本実施形態においても、上記の第1実施形態と同様の方法により、群Z* p上のDiffie−Hellman決定問題の困難性を前提にして、IND−CCA2であることを証明できる。
【0121】
また、上記の第1実施形態と同様、乱数rをメッセージとみなすと(この場合、メッセージmは秘密である)、群Z* p上のDiffie−Hellman決定問題の困難性を前提にして、IND−CPAであることが証明できる。すなわち、暗号文から乱数rに関する部分情報を漏らしていないことを証明できる。つまり、攻撃者がランダム関数に付随する情報を第3のランダム関数から得ても、メッセージに関する部分情報を暗号文から計算することが困難である。
【0122】
さらに、上記の第1実施形態と同様、暗号文の一部であるデータwを正しく作成するためには、データmおよびデータrを知る必要がある。云いかえれば、ランダム関数への入力値を知る者しかデータmを作成することができない。本実施形態では、データwを正しく作成できない攻撃者は、復号化オラクルから新しい情報を得ることが困難である。
【0123】
以上のことから、公開鍵暗号への攻撃者がランダムオラクルを与えるランダム関数を選んだ場合でも安全な公開鍵暗号通信を実現できる。
【0124】
(第4実施形態)
次に、本発明の第4実施形態について説明する。図8は、本発明の第4実施形態の動作手順を説明するための図である。
【0125】
1.鍵生成処理
受信者側装置200において、鍵生成部201は、受信者Bよりの指示に従い、受信者Bの秘密鍵xと、受信者Bの公開鍵(p,g,h,H1,H2,H3,(E,D))とを、それぞれ数64、数65により生成する。そして、生成情報を記憶部205に記憶する(ST2400)。
【0126】
【数64】
【0127】
【数65】
【0128】
ここで、Z* pの元と{0,1}kの元との間に1対1対応があるものとする。また、nは、k1+k2以上でもよいし、あるいは未満でもよい。
【0129】
次に、受信者Bは、受信者側装置200の鍵生成部201が生成した情報(p,g,h)を含む公開情報を、送信者Aに知らせる(ST2401)。例えば、受信者側装置200において、鍵生成部201は、受信者Bよりの指示に従い、公開情報を、通信部206を介して送信者側装置100へ送信する。あるいは、受信者Bは、例えば第3者(公開情報管理機関)への登録などの周知の方法により、公開情報を公開する。この公開情報は、送信者側装置100の記憶部105に記憶される。なお、公開鍵に含まれるランダム関数H1〜H3および共通鍵暗号アルゴリズム(E,D)は、上記の第1実施形態と同様、所定のものが送信者側装置100および受信者側装置200に予め設定されているようにしてもよい。あるいは、ランダム関数H1〜H3および共通鍵暗号アルゴリズム(E,D)を、公開鍵の一部としてではなく、パブリックドメイン(public domain)に置くようしてもかまわない。
【0130】
2.暗号化処理
送信者側装置100において、入力部107は、送信者Aよりメッセージm(m∈{0,1}n)の入力を受け付ける(ST2500)。これを受けて、乱数生成部101は、メッセージmに対して乱数r1∈{0,1}k1、r2∈{0,1}k2を選ぶ。それから、暗号化部103は、この乱数r1、r2と、予め記憶部105に記憶しておいた受信者Bの公開鍵(g,h,H1,H2,H3,(E,D))とを用いて、べき乗算部102および剰余演算部104を利用して数66を計算する(ST2501)。
【0131】
【数66】
【0132】
ここで、EK(m)は、メッセージ文mを鍵Kにより共通鍵暗号化アルゴリズムEを用いて暗号化した結果を意味する。
【0133】
次に、暗号化部103は、数66の計算結果(u,v,w)を、メッセージmの暗号文として、通信回線300を介して、受信者側装置200に送信する(ST2502)。
【0134】
3.復号化処理
受信者側装置200において、通信部206は、通信回線300を介して送信者側装置100より暗号文(u,v,w)を受け取り、これを記憶部205に記憶する。さて、復号化部203は、受信者Bよりの指示に従い、べき乗算部202および剰余演算部104を利用して、記憶部205に記憶されている受信者の秘密鍵xを用いて、記憶部205に記憶されている暗号文(u,v,w)から数67を満たす(r1’、r2’)を計算する(ST2600)。
【0135】
【数67】
【0136】
ここで、r1’∈{0,1}k1、r2’∈{0,1}k2であり、r1’,r2’のビット長は既知とする。
【0137】
次に、復号化部203は、数67の計算結果(r1’、r2’)を用いて、べき乗算部202および剰余演算部204を利用して、数68が成立するか否かを確認する(ST2601)。
【0138】
【数68】
【0139】
そして、復号化部203は、数68が成立することを確認できた場合のみm’を、
【0140】
【数69】
【0141】
により計算し、これを暗号文の復号結果として出力する。ここで、DK ’(w)は、暗号文wを鍵K’により共通鍵暗号化アルゴリズムDを用いて復号化した結果を意味する。一方、数68が成立することを確認できなかった場合は、m’の計算を拒否し、その代わりに例えばエラーメッセージなどを出力部207から出力する(ST2602)。
【0142】
以上、本発明の第4実施形態について説明した。
【0143】
本実施形態でも、上記の第1実施形態と同様の効果を奏する。
【0144】
(第5実施形態)
次に、本発明の第5実施形態について説明する。本実施形態は、上記の第1実施形態の変形例であり、上記の第1実施形態よりも平文空間(メッセージの長さ)を大きくできるようにしたものである。図9は、本発明の第5実施形態の動作手順を説明するための図である。
【0145】
1.鍵生成処理
受信者側装置200において、鍵生成部201は、受信者Bよりの指示に従い、受信者Bの秘密鍵xと、受信者Bの公開鍵(g,h,H1,H2,H3,G)とを、それぞれ数70、数71により生成する。そして、生成情報を記憶部205に記憶する(ST3100)。
【0146】
【数70】
【0147】
【数71】
【0148】
ここで、Gは有限アーベル群を表わし、Gの元と{0,1}kの元との間に1対1対応があるものとする。また、k3,nのそれぞれは、k1+k2以上でもよいし、あるいは未満でもよい。
【0149】
次に、受信者Bは、受信者側装置200の鍵生成部201が生成した情報(g,h)を含む公開情報を、送信者Aに知らせる(ST3101)。例えば、受信者側装置200において、鍵生成部201は、受信者Bよりの指示に従い、公開情報を、通信部206を介して送信者側装置100へ送信する。あるいは、受信者Bは、例えば第3者(公開情報管理機関)への登録などの周知の方法により、公開情報を公開する。この公開情報は、送信者側装置100の記憶部105に記憶される。なお、公開鍵に含まれるランダム関数H1〜H3、Gは、上記の第1実施形態と同様、所定のものが送信者側装置100および受信者側装置200に予め設定されているようにしてもよい。あるいは、ランダム関数H1〜H3、Gを、公開鍵の一部としてではなく、パブリックドメイン(public domain)に置くようしてもかまわない。
【0150】
2.暗号化処理
送信者側装置100において、入力部107は、送信者Aよりメッセージm(m∈{0,1}n)の入力を受け付ける(ST3200)。これを受けて、乱数生成部101は、メッセージmに対して乱数r1∈{0,1}k1、r2∈{0,1}k2を選ぶ。それから、暗号化部103は、この乱数r1、r2と、予め記憶部105に記憶しておいた受信者Bの公開鍵(g,h,H1,H2,H3、G)とを用いて、べき乗算部102および剰余演算部104を利用して数72を計算する(ST3201)。
【0151】
【数72】
【0152】
次に、暗号化部103は、数44の計算結果(u,v,w,z)を、メッセージmの暗号文として、通信回線300を介して、受信者側装置200に送信する(ST3202)。
【0153】
3.復号化処理
受信者側装置200において、通信部206は、通信回線300を介して送信者側装置100より暗号文(u,v,w,z)を受け取り、これを記憶部205に記憶する。さて、復号化部203は、受信者Bよりの指示に従い、べき乗算部202を利用して、記憶部205に記憶されている受信者の秘密鍵xを用いて、記憶部205に記憶されている暗号文(u,v,w,z)から数73を満たす(r1’,r2’)を計算する(ST3300)。
【0154】
【数73】
【0155】
ここで、r1’、r2’のビット長は既知とする。
【0156】
次に、復号化部203は、数73の計算結果(r1’,r2’)を用い、べき乗算部202を利用して、数74が成立するか否かを確認する(ST3301)。
【0157】
【数74】
【0158】
そして、復号化部203は、数74が成立することを確認できなかった場合、復号結果の出力を拒否して、例えばエラーメッセージなどを出力部207から出力する。一方、数74が成立することを確認できた場合は、記憶部205に記憶されている受信者の秘密鍵xと、記憶部205に記憶されている暗号文(u,v,w,z)と、数73の計算結果(r1’,r2’)とを用いて、数75を計算する。
【0159】
【数75】
【0160】
そして、数75の計算結果m’を、暗号文(u,v,w,z)のメッセージとして出力する(ST3302)。
【0161】
以上、本発明の第5実施形態について説明した。
【0162】
本実施形態は、上記の第1実施形態と同様の効果を奏する。それに加え、本実施形態では、メッセージの長さ(ビット長)nを任意に選ぶことができる。このため、上記の第1実施形態に比べてより長いメッセージを暗号化することが可能である。公開鍵暗号の利用目的として、共通鍵暗号のデータ暗号化鍵の配送に利用することがある。しかし、単にデータ暗号化鍵のみを暗号化するのではなく、ユーザのID情報等の付加情報を加えて暗号化することも少なくない。このような場合において、本実施形態は有効である。
【0163】
(第6実施形態)
次に、本発明の第6実施形態について説明する。本実施形態は、上記の第5実施形態において有限アーベル群Gを体から決定される乗法群として与えている。
図10は、本発明の第6実施形態の動作手順を説明するための図である。
【0164】
1.鍵生成処理
受信者側装置200において、鍵生成部201は、受信者Bよりの指示に従い、受信者Bの秘密鍵xと、受信者Bの公開鍵(p,g,h,H1,H2,H3,G)とを、それぞれ数76、数77により生成する。そして、生成情報を記憶部205に記憶する(ST4100)。
【0165】
【数76】
【0166】
【数77】
【0167】
ここで、Z* pの元と{0,1}kの元との間に1対1対応があるものとする。また、k3,nのそれぞれは、k1+k2以上でもよいし、あるいは未満でもよい。
【0168】
次に、受信者Bは、受信者側装置200の鍵生成部201が生成した情報(p,g,h)を含む公開情報を、送信者Aに知らせる(ST4101)。例えば、受信者側装置200において、鍵生成部201は、受信者Bよりの指示に従い、公開情報を、通信部206を介して送信者側装置100へ送信する。あるいは、受信者Bは、例えば第3者(公開情報管理機関)への登録などの周知の方法により、公開情報を公開する。この公開情報は、送信者側装置100の記憶部105に記憶される。なお、公開鍵に含まれるランダム関数H1〜H3、Gは、上記の第1実施形態と同様、所定のものが送信者側装置100および受信者側装置200に予め設定されているようにしてもよい。あるいは、ランダム関数H1〜H3、Gを、公開鍵の一部としてではなく、パブリックドメイン(public domain)に置くようしてもかまわない。
【0169】
2.暗号化処理
送信者側装置100において、入力部107は、送信者Aよりメッセージm(m∈{0,1}n)の入力を受け付ける(ST4200)。これを受けて、乱数生成部101は、メッセージmに対して乱数r1∈{0,1}k1、r2∈{0,1}k2を選ぶ。それから、暗号化部103は、この乱数r1、r2と、予め記憶部105に記憶しておいた受信者Bの公開鍵(p,g,h,H1,H2,H3、G)とを用いて、べき乗算部102および剰余演算部104を利用して数78を計算する(ST4201)。
【0170】
【数78】
【0171】
次に、暗号化部103は、数78の計算結果(u,v,w,z)を、メッセージmの暗号文として、通信回線300を介して、受信者側装置200に送信する(ST4202)。
【0172】
3.復号化処理
受信者側装置200において、通信部206は、通信回線300を介して送信者側装置100より暗号文(u,v,w,z)を受け取り、これを記憶部205に記憶する。さて、復号化部203は、受信者Bよりの指示に従い、べき乗算部202および剰余演算部204を利用して、記憶部205に記憶されている受信者Bの秘密鍵xを用いて、記憶部205に記憶されている暗号文(u,v,w,z)から数79を満たす(r1’,r2’)を計算する(ST4300)。
【0173】
【数79】
【0174】
ここで、r1’、r2’のビット長は既知とする。
【0175】
次に、復号化部203は、数79の計算結果(r1’,r2’)を用い、べき乗算部202および剰余演算部204を利用して、数80が成立するか否かを確認する(ST4301)。
【0176】
【数80】
【0177】
そして、復号化部203は、数80が成立することを確認できなかった場合、復号結果の出力を拒否して、例えばエラーメッセージなどを出力部207から出力する。一方、数80が成立することを確認できた場合は、記憶部205に記憶されている受信者の秘密鍵xと、記憶部205に記憶されている暗号文(u,v,w,z)と、数79の計算結果(r1’,r2’)とを用いて、数81を計算する。
【0178】
【数81】
【0179】
そして、数81の計算結果m’を、暗号文(u,v,w,z)のメッセージとして出力する(ST4302)。
【0180】
以上、本発明の第6実施形態について説明した。
【0181】
本実施形態は、上記の第3実施形態と同様の効果を奏する。それに加え、本実施形態では、メッセージの長さ(ビット長)nを任意に選ぶことができる。このため、上記の第3実施形態に比べてより長いメッセージを暗号化することが可能である。公開鍵暗号の利用目的として、共通鍵暗号のデータ暗号化鍵の配送に利用することがある。しかし、単にデータ暗号化鍵のみを暗号化するのではなく、ユーザのID情報等の付加情報を加えて暗号化することも少なくない。このような場合において、本実施形態は有効である。
【0182】
(第7実施形態)
次に、本発明の第7実施形態について、送信者Aが受信者Bに対して、送信データとなるメッセージmを暗号通信によって送信する場合を例にとり説明する。
図11は、本発明の第7実施形態の動作手順を説明するための図である。
【0183】
1.鍵生成処理
受信者側装置200において、鍵生成部201は、受信者B(受信者側装置200の操作者)よりの指示に従い、受信者Bの秘密鍵sと、受信者Bの公開鍵(g,h,H1,H2)とを、それぞれ数82、数83により生成する。そして、生成情報を記憶部205に記憶する(ST5100)。
【0184】
【数82】
【0185】
【数83】
【0186】
ここで、Gは有限アーベル群を表わし、{0,1}kの元をGの元とみなす1対1対応があるものとする。
【0187】
次に、受信者Bは、受信者側装置200の鍵生成部201が生成した情報(g,h)を含む公開情報を、送信者A(送信者側装置100の操作者)に知らせる(ST5101)。例えば、受信者側装置200において、鍵生成部201は、受信者Bよりの指示に従い、公開情報を、通信部206を介して送信者側装置100へ送信する。あるいは、受信者Bは、例えば第3者(公開情報管理機関)への登録などの周知の方法により、公開情報を公開する。この公開情報は、送信者側装置100の記憶部105に記憶される。なお、公開鍵に含まれるランダム関数H1、H2は、所定のものが送信者側装置100および受信者側装置200に予め設定されているようにしてもよい。あるいは、ランダム関数H1、H2を、公開鍵の一部としてではなく、パブリックドメイン(public domain)に置くようしてもかまわない。
【0188】
2.暗号化処理
送信者側装置100において、入力部107は、送信者Aよりメッセージm(m∈{0,1}k0)の入力を受け付ける(ST5200)。これを受けて、乱数生成部101は、メッセージmに対して、乱数r1∈{0,1}k1、r2∈{0,1}k2を選ぶ。ここで、乱数r1、r2は、十分に大きな集合の中から一様に、つまり、どの値が選択されたか予測できないように、選択されるものとする。それから、暗号化部103は、この乱数r1、r2と、予め記憶部105に記憶しておいた受信者Bの公開鍵(g,h,H1,H2)とを用いて、べき乗算部102を利用して数84を計算する(ST5201)。
【0189】
【数84】
【0190】
次に、暗号化部103は、数84の計算結果(u,v)を、メッセージmの暗号文として、通信回線300を介して、受信者側装置200に送信する(ST5202)。
【0191】
3.復号化処理
受信者側装置200において、通信部206は、通信回線300を介して送信者側装置100より暗号文(u,v)を受け取り、これを記憶部205に記憶する。さて、復号化部203は、受信者Bよりの指示に従い、べき乗算部202を利用して、記憶部205に記憶されている受信者の秘密鍵sを用いて、記憶部205に記憶されている暗号文(u,v)から数85を満たす(m’,r1’,r2’)計算する(ST5300)。
【0192】
【数85】
【0193】
ここで、m’∈{0,1}k0、r1’∈{0,1}k1、r2’∈{0,1}k2であり、m’,r1’,r2’のビット長は既知とする。
【0194】
次に、復号化部203は、数85の計算結果(m’,r1’,r2’)を用いて、べき乗算部202を利用して、数86が成立するか否かを確認する(ST5301)。
【0195】
【数86】
【0196】
そして、復号化部203は、数86が成立することを確認できた場合のみ、復号結果m’を出力部207から出力する。一方、数86が成立することを確認できなかった場合は、復号結果m’の出力を拒否し、例えば代わりにエラーメッセージなどを出力部207から出力する(ST5302)。
【0197】
以上、本発明の第7実施形態について説明した。
【0198】
本実施形態では、群G上のDiffie−Hellman決定問題の困難性を前提にして、攻撃者がランダムオラクル(関数)を不正に選んだ場合(以下、通常のランダムオラクルに対して攻撃的ランダムオラクルと呼ぶ)においても、安全性を証明できる。すなわち、本実施形態では、受動的攻撃に対して(攻撃者は復号化オラクルを利用しない)、メッセージのみならず、ランダムオラクルへの入力値さえ暗号文から計算することが(従来の強秘匿(semantic security)や識別不能(IND:Indistinguishability)の概念における数学的手法と類似の手法により)困難であることが証明できる。これにより、攻撃的ランダムオラクルは、通常のランダムオラクルに対して無視できる確率でしかアドバンテージを持っていないことが証明される。
【0199】
以上のことから、公開鍵暗号への攻撃者がランダムオラクルを与えるランダム関数を選んだ場合でも安全な公開鍵暗号通信を実現できる。
【0200】
(第8実施形態)
次に、本発明の第8実施形態について説明する。本実施形態は、上記の第7実施形態を共通鍵暗号とのハイブリッド方式にしたものである。図12は、本発明の第8実施形態の動作手順を説明するための図である。
【0201】
1.鍵生成処理
受信者側装置200において、鍵生成部201は、受信者B(受信者側装置200の操作者)よりの指示に従い、受信者Bの秘密鍵sと、受信者Bの公開鍵(g,h,H1,H2,(E,D),F)とを、それぞれ数87、数88により生成する。そして、生成情報を記憶部205に記憶する(ST6100)。
【0202】
【数87】
【0203】
【数88】
【0204】
ここで、Gは有限アーベル群を表わし、{0,1}kの元をGの元とみなす1対1対応があるものとする。
【0205】
次に、受信者Bは、受信者側装置200の鍵生成部201が生成した情報(g,h)を含む公開情報を、送信者A(送信者側装置100の操作者)に知らせる(ST6101)。例えば、受信者側装置200において、鍵生成部201は、受信者Bよりの指示に従い、公開情報を、通信部206を介して送信者側装置100へ送信する。あるいは、受信者Bは、例えば第3者(公開情報管理機関)への登録などの周知の方法により、公開情報を公開する。この公開情報は、送信者側装置100の記憶部105に記憶される。なお、公開鍵に含まれるランダム関数H1、H2、共通鍵暗号アルゴリズム(E,D)、および、鍵生成関数Fは、所定のものが送信者側装置100および受信者側装置200に予め設定されているようにしてもよい。あるいは、ランダム関数H1、H2、共通鍵暗号アルゴリズム(E,D)、および、鍵生成関数Fを、公開鍵の一部としてではなく、パブリックドメイン(public domain)に置くようしてもかまわない。
【0206】
2.暗号化処理
送信者側装置100において、入力部107は、送信者Aよりメッセージmの入力を受け付ける(ST6200)。これを受けて、乱数生成部101は、メッセージmに対して、乱数z∈{0,1}k0、r1∈{0,1}k1、r2∈{0,1}k2を選ぶ。ここで、乱数z、r1、r2は、十分に大きな集合の中から一様に、つまり、どの値が選択されたか予測できないように、選択されるものとする。それから、暗号化部103は、この乱数zと、予め記憶部105に記憶しておいた鍵生成関数Fとを用いて、鍵K=F(z)を計算する。次に、暗号化部103は、この鍵Kと、乱数z、r1、r2と、予め記憶部105に記憶しておいた受信者Bの公開鍵(g,h,H1,H2,(E,D))とを用いて、べき乗算部102を利用して数89を計算する(ST6201)。
【0207】
【数89】
【0208】
ここで、EK(m)は、メッセージ文mを鍵Kにより共通鍵暗号化アルゴリズムEを用いて暗号化した結果を意味する。
【0209】
次に、暗号化部103は、数89の計算結果(u,v,w)を、メッセージmの暗号文として、通信回線300を介して、受信者側装置200に送信する(ST6202)。
【0210】
3.復号化処理
受信者側装置200において、通信部206は、通信回線300を介して送信者側装置100より暗号文(u,v,w)を受け取り、これを記憶部205に記憶する。さて、復号化部203は、受信者Bよりの指示に従い、べき乗算部202を利用して、記憶部205に記憶されている受信者の秘密鍵sを用いて、記憶部205に記憶されている暗号文(u,v,w)から数90を満たす(z’,r1’,r2’)計算する(ST6300)。
【0211】
【数90】
【0212】
ここで、z’∈{0,1}k0、r1’∈{0,1}k1、r2’∈{0,1}k2であり、z’,r1’,r2’のビット長は既知とする。
【0213】
次に、復号化部203は、数90の計算結果(z’,r1’,r2’)を用いて、べき乗算部202を利用して、数91が成立するか否かを確認する(ST6301)。
【0214】
【数91】
【0215】
そして、復号化部203は、数91が成立することを確認できた場合のみ、予め記憶部205に記憶されている鍵生成関数Fを用いて、鍵K’=F(z’)を計算する。それから、この鍵K’と、予め記憶部205に記憶されている共通鍵暗号アルゴリズム(E,D)とを用いて、数92を計算する。次に、復号化部203は、数92の計算結果m’を前記暗号文(u,v,w)のメッセージとして出力する。
【0216】
【数92】
【0217】
ここで、DK ’(w)は、暗号文wを鍵K’により共通鍵暗号化アルゴリズムDを用いて復号化した結果を意味する。
【0218】
一方、数91が成立することを確認できなかった場合は、数92の計算を拒否し、例えば代わりにエラーメッセージなどを出力部207から出力する(ST6302)。
【0219】
以上、本発明の第8実施形態について説明した。
【0220】
本実施形態では、上記の第7実施形態を共通鍵暗号とのハイブリッド方式にしたものであるため、上記の第7実施形態の効果に加えて、任意長のメッセージを暗号通信できるという利点を有する。
【0221】
(第9実施形態)
次に、本発明の第9実施形態についてについて説明する。本実施形態は、上記の第7実施形態において、有限アーベル群Gを体Zpから決定される乗法群として与えたものである。図13は、本発明の第9実施形態の動作手順を説明するための図である。
【0222】
1.鍵生成処理
受信者側装置200において、鍵生成部201は、受信者B(受信者側装置200の操作者)よりの指示に従い、受信者Bの秘密鍵sと、受信者Bの公開鍵(p,q,g,h,H1,H2)とを、それぞれ数93、数94により生成する。そして、生成情報を記憶部205に記憶する(ST7100)。
【0223】
【数93】
【0224】
【数94】
【0225】
ここで、|p|=k+1とする。
【0226】
次に、受信者Bは、受信者側装置200の鍵生成部201が生成した情報(p,q,g,h)を含む公開情報を、送信者A(送信者側装置100の操作者)に知らせる(ST7101)。例えば、受信者側装置200において、鍵生成部201は、受信者Bよりの指示に従い、公開情報を、通信部206を介して送信者側装置100へ送信する。あるいは、受信者Bは、例えば第3者(公開情報管理機関)への登録などの周知の方法により、公開情報を公開する。この公開情報は、送信者側装置100の記憶部105に記憶される。なお、公開鍵に含まれるランダム関数H1、H2は、所定のものが送信者側装置100および受信者側装置200に予め設定されているようにしてもよい。あるいは、ランダム関数H1、H2を、公開鍵の一部としてではなく、パブリックドメイン(public domain)に置くようしてもかまわない。
【0227】
2.暗号化処理
送信者側装置100において、入力部107は、送信者Aよりメッセージm(m∈{0,1}k0)の入力を受け付ける(ST7200)。これを受けて、乱数生成部101は、メッセージmに対して、乱数r1∈{0,1}k1、r2∈{0,1}k2を選ぶ。ここで、乱数r1、r2は、十分に大きな集合の中から一様に、つまり、どの値が選択されたか予測できないように、選択されるものとする。それから、暗号化部103は、この乱数r1、r2と、予め記憶部105に記憶しておいた受信者Bの公開鍵(p,q,g,h,H1,H2)とを用いて、べき乗算部102および剰余演算部104を利用して数95を計算する(ST7201)。
【0228】
【数95】
【0229】
次に、暗号化部103は、数95の計算結果(u,v)を、メッセージmの暗号文として、通信回線300を介して、受信者側装置200に送信する(ST7202)。
【0230】
3.復号化処理
受信者側装置200において、通信部206は、通信回線300を介して送信者側装置100より暗号文(u,v)を受け取り、これを記憶部205に記憶する。さて、復号化部203は、受信者Bよりの指示に従い、べき乗算部202および剰余演算部204を利用して、記憶部205に記憶されている受信者の秘密鍵sを用いて、記憶部205に記憶されている暗号文(u,v)から数96を満たす(m’,r1’,r2’)計算する(ST7300)。
【0231】
【数96】
【0232】
ここで、m’∈{0,1}k0、r1’∈{0,1}k1、r2’∈{0,1}k2であり、m’,r1’,r2’のビット長は既知とする。
【0233】
次に、復号化部203は、数96の計算結果(m’,r1’,r2’)を用いて、べき乗算部202および剰余演算部204を利用して、数97が成立するか否かを確認する(ST7301)。
【0234】
【数97】
【0235】
そして、復号化部203は、数97が成立することを確認できた場合のみ、復号結果m’を出力部207から出力する。一方、数97が成立することを確認できなかった場合は、復号結果m’の出力を拒否し、例えば代わりにエラーメッセージなどを出力部207から出力する(ST7302)。
【0236】
以上、本発明の第9実施形態について説明した。
【0237】
本実施形態では、上記の第7実施形態の場合と同様の方法により、群Z* p上のDiffie−Hellman決定問題の困難性を前提にして、公開鍵暗号への攻撃者がランダムオラクルを与えるランダム関数を選んだ場合でも安全な公開鍵暗号通信を実現できる。
【0238】
(第10実施形態)
次に、本発明の第10実施形態について説明する。本実施形態は、上記の第9実施形態を共通鍵暗号とのハイブリッド方式にしたものである。図14は、本発明の第10実施形態の動作手順を説明するための図である。
【0239】
1.鍵生成処理
受信者側装置200において、鍵生成部201は、受信者B(受信者側装置200の操作者)よりの指示に従い、受信者Bの秘密鍵sと、受信者Bの公開鍵(p,q,g,h,H1,H2,(E,D),F)とを、それぞれ数98、数99により生成する。そして、生成情報を記憶部205に記憶する(ST8100)。
【0240】
【数98】
【0241】
【数99】
【0242】
ここで、Gはq個の元からなる乗法群Zp *の部分群を意味し、|p|=kに対してk=k0+k1+k2とする。
【0243】
次に、受信者Bは、受信者側装置200の鍵生成部201が生成した情報(p,q,g,h)を含む公開情報を、送信者A(送信者側装置100の操作者)に知らせる(ST8101)。例えば、受信者側装置200において、鍵生成部201は、受信者Bよりの指示に従い、公開情報を、通信部206を介して送信者側装置100へ送信する。あるいは、受信者Bは、例えば第3者(公開情報管理機関)への登録などの周知の方法により、公開情報を公開する。この公開情報は、送信者側装置100の記憶部105に記憶される。なお、公開鍵に含まれるランダム関数H1、H2、共通鍵暗号アルゴリズム(E,D)、および、鍵生成関数Fは、所定のものが送信者側装置100および受信者側装置200に予め設定されているようにしてもよい。あるいは、ランダム関数H1、H2、共通鍵暗号アルゴリズム(E,D)、および、鍵生成関数Fを、公開鍵の一部としてではなく、パブリックドメイン(public domain)に置くようしてもかまわない。
【0244】
2.暗号化処理
送信者側装置100において、入力部107は、送信者Aよりメッセージmの入力を受け付ける(ST8200)。これを受けて、乱数生成部101は、メッセージmに対して、乱数z∈{0,1}k0、r1∈{0,1}k1、r2∈{0,1}k2を、z‖r1‖r2が群Gの元となるように選ぶ。なお、x∈Z* pが群Gの元であるか否かの判断は、例えば数100が成立するか否かを調べればよい。
【0245】
【数100】
【0246】
ここで、乱数z、r1、r2は、十分に大きな集合の中から一様に、つまり、どの値が選択されたか予測できないように、選択されるものとする。それから、暗号化部103は、この乱数zと、予め記憶部105に記憶しておいた鍵生成関数Fとを用いて、鍵K=F(z)を計算する。次に、暗号化部103は、この鍵Kと、乱数z、r1、r2と、予め記憶部105に記憶しておいた受信者Bの公開鍵(g,h,H1,H2,(E,D))とを用いて、べき乗算部102および剰余演算部104を利用して数101を計算する(ST8201)。
【0247】
【数101】
【0248】
ここで、EK(m)は、メッセージ文mを鍵Kにより共通鍵暗号化アルゴリズムEを用いて暗号化した結果を意味する。
【0249】
次に、暗号化部103は、数101の計算結果(u,v,w)を、メッセージmの暗号文として、通信回線300を介して、受信者側装置200に送信する(ST8202)。
【0250】
3.復号化処理
受信者側装置200において、通信部206は、通信回線300を介して送信者側装置100より暗号文(u,v,w)を受け取り、これを記憶部205に記憶する。さて、復号化部203は、受信者Bよりの指示に従い、べき乗算部202および剰余演算部204を利用して、記憶部205に記憶されている受信者の秘密鍵sを用いて、記憶部205に記憶されている暗号文(u,v,w)から数102を満たす(z’,r1’,r2’)計算する(ST8300)。
【0251】
【数102】
【0252】
ここで、z’∈{0,1}k0、r1’∈{0,1}k1、r2’∈{0,1}k2であり、z’,r1’,r2’のビット長は既知とする。
【0253】
次に、復号化部203は、数102の計算結果(z’,r1’,r2’)を用いて、べき乗算部202および剰余演算部204を利用して、数103が成立するか否かを確認する(ST8301)。
【0254】
【数103】
【0255】
そして、復号化部203は、数103が成立することを確認できた場合のみ、予め記憶部205に記憶されている鍵生成関数Fを用いて、鍵K’=F(z’)を計算する。それから、この鍵K’と、予め記憶部205に記憶されている共通鍵暗号アルゴリズム(E,D)とを用いて、数104を計算する。次に、復号化部203は、数104の計算結果m’を前記暗号文(u,v,w)のメッセージとして出力する。
【0256】
【数104】
【0257】
ここで、DK ’(w)は、暗号文wを鍵K’により共通鍵暗号化アルゴリズムDを用いて復号化した結果を意味する。
【0258】
一方、数103が成立することを確認できなかった場合は、数104の計算を拒否し、例えば代わりにエラーメッセージなどを出力部207から出力する(ST8302)。
【0259】
以上、本発明の第10実施形態について説明した。
【0260】
本実施形態では、上記の第9実施形態を共通鍵暗号とのハイブリッド方式にしたものであるため、上記の第9実施形態の効果に加えて、任意長のメッセージを暗号通信できるという利点を有する。
【0261】
以上、本発明の各実施の形態について説明した。
【0262】
なお、本発明は、上記の各実施形態に限定されるものではなく、その要旨の範囲内で数々の変形が可能である。
【0263】
例えば、上記の各実施形態では、送信者と受信者とが各々の装置を利用して暗号通信を行うという一般的な通信システムを例にとり説明したが、本発明は、様々なシステムに適用可能である。
【0264】
例えば、電子ショッピングシステムでは、送信者はユーザであり、送信者側装置はパソコンなどの計算機であり、受信者は小売店であり、受信者側装置はパソコンなどの計算機となる。この場合、ユーザの商品等の注文書は、共通鍵暗号で暗号化されることが多く、その際の暗号化鍵が本発明の公開鍵暗号通信方法により暗号化されて、受信者(小売店)側装置に送信される。
【0265】
また、電子メールシステムでは、各々の装置はパソコンなどの計算機であり、送信文(メール)は共通鍵暗号で暗号化されることが多い。この場合、共通鍵が本発明の公開鍵暗号通信方法により暗号化されて、受信者の計算機に送信される。
【0266】
その他にも、従来の公開鍵暗号が使われている様々なシステムに適用することが可能である。
【0267】
また、上記の各実施形態での各計算は、CPUがメモリ上にロードされたプログラムを実行することにより行われるものとして説明した。しかし、プログラムだけではない。いずれかの計算を行なう装置は、ハードウエア化された演算装置であって、他の演算装置やCPUとデータのやりとりを行うものでもよい。
【0268】
【発明の効果】
以上説明したように、本発明によれば、公開鍵暗号への攻撃者がランダムオラクルを与えるランダム関数を選んだ場合でも、安全であることが証明可能な公開鍵暗号を用いた暗号通信通信技術を提供できる。
【図面の簡単な説明】
【図1】本発明の各実施形態に共通する公開鍵暗号通信システムの概略構成図である。
【図2】図1に示す送信者側装置100の概略構成図である。
【図3】図1に示す受信者側装置200の概略構成図である。
【図4】送信者側装置100および受信者側装置200のハードウエア構成例を示す図である。
【図5】本発明の第1実施形態の動作手順を説明するための図である。
【図6】本発明の第2実施形態の動作手順を説明するための図である。
【図7】本発明の第3実施形態の動作手順を説明するための図である。
【図8】本発明の第4実施形態の動作手順を説明するための図である。
【図9】本発明の第5実施形態の動作手順を説明するための図である。
【図10】本発明の第6実施形態の動作手順を説明するための図である。
【図11】本発明の第7実施形態の動作手順を説明するための図である。
【図12】本発明の第8実施形態の動作手順を説明するための図である。
【図13】本発明の第9実施形態の動作手順を説明するための図である。
【図14】本発明の第10実施形態の動作手順を説明するための図である。
【符号の説明】
100…送信者側装置、101…乱数生成部、102…べき乗算部、103…暗号化部、104…剰余演算部、105…記憶部、106…通信部、107…入力部、200…受信者側装置、201…鍵生成部、202…べき乗算部、203…復号化部、204…剰余演算部、205…記憶部、206…通信部、207…出力部、300…通信回線、401…CPU、402…メモリ、403…外部記憶装置、404…記憶媒体、405…読取装置、406…入力装置、407…出力装置、408…通信装置、409…バス
【発明の属する技術分野】
本発明は、暗号通信技術に関する。特に、強化された適応的選択暗号文攻撃に対して強秘匿であることが証明可能な公開鍵暗号を用いた暗号通信技術に関する。また、ランダムオラクル(関数)に対して、暗号の攻撃者が不正な仕掛けを設けた場合においても、安全性が証明できる公開鍵暗号を用いた暗号通信技術に関する。
【0002】
【従来の技術】
現在、公開鍵暗号では非特許文献1で述べられているように、適応的選択暗号文攻撃に対して強秘匿(IND(Indistinguishability)−CCA2(Adaptive Chosen−Ciphertext Attack))であることが最も安全であると考えられている。
【0003】
IND−CCA2の意味において安全であることが証明可能な公開鍵暗号方式は、大きく2つに分類される。1つは、ランダムオラクル(入力値に対しランダムな値を正しく出力する)を前提とした計算機モデル上で安全性の証明を行うものである。ランダムオラクルという非現実的な仮定を必要とするものの、実用性に優れる公開鍵暗号方法を実現することが可能である。もう1つは、標準的計算モデル上で安全性の証明を行うものである。前者に比べると効率面で劣るが、実システム上で安全性証明が可能であるメリットを持つ。
【0004】
ランダムオラクルを前提とした計算機モデル上でIND−CCA2であることが証明可能な実用的暗号方法としては、非特許文献2に記載されている暗号方法や、非特許文献3に記載されている暗号方法や、非特許文献4に記載されている暗号方法などが知られている。
【0005】
一方、標準的計算機モデル上でIND−CCA2であることが証明可能な実用的暗号方法としては、非特許文献5に記載されている暗号方法が知られている。
【0006】
【非特許文献1】
M. Bellare, A. Desai, D. Pointcheval and P. Rogaway : Relations Among Notions of Security for Public−Key Encryption Schemes, Proc. of Crypto’98, LNCS1462, Springer−Verlag, pp.26−45 (1998)
【非特許文献2】
M. Bellare and P. Rogaway : Random Oracles are Practical −− A Paradigmfor Designing Efficient Protocol, First ACM Conference on Computer and Communications Security, pp.62−−73 (1993)
【非特許文献3】
M. Bellare and P. Rogaway : Optimal Asymmetric Encryption How to Encrypt with RSA, Proc. of Eurocrypt’94, LNCS950, Springer−Verlag, pp.92−111
(1994)
【非特許文献4】
V. Shoup : OAEP Reconsidered. Available on the e−print library (2000/060), November 2000
【非特許文献5】
R. Cramer and V. Shoup : A Practical Public Key Cryptosystem Provably Secure against Adaptive Chosen Ciphertext Attack, Proc. of Crypto98, LNCS1462, Springer−Verlag, pp.13−25 (1998)
【0007】
【発明が解決しようとする課題】
さて、本発明では、ランダムオラクルモデル上でIND−CCA2であることが証明可能な公開鍵暗号通信技術を対象とする。IND−CCA2の定義では、ランダムオラクルが公正に与えられる必要がある。しかし、現実世界において、ランダムオラクルを与えるランダム関数(例えばハッシュ関数)が公正であることを示すことは難しい。
【0008】
例えば、公開鍵暗号への攻撃者は、落し戸付きのハッシュ関数を作成し、既存システムのユーザに利用させることにより、そのシステムを破ろうとするかもしれない。また、一般に、公開鍵暗号およびハッシュ関数が別々にデザインされるため、公開鍵暗号の安全性がハッシュ関数により左右されることが起こり得る。
【0009】
以下、このことについて簡単に説明する。
【0010】
上記の非特許文献2には、メッセージxに対しその暗号文(u,v,w)が、
【0011】
【数35】
【0012】
により与えられる公開鍵暗号方法が記載されている。なお、数35において、fは公開された落し戸付き一方向性置換であり、G、Hはハッシュ関数である。この公開鍵暗号方法は、ハッシュ関数G、Hをランダムオラクルとするとき、IND−CCA2であることが同非特許文献2の中で示されている。
【0013】
さて、ハッシュ関数Gのデザイナである公開鍵暗号への攻撃者は、ハッシュ関数Gをハッシュ関数G’に対して、G=G’・fとなるように作成していたとする(但し、(f・g)(m)=f(g(m))とする)。ここで、G’をランダムオラクルとすると、Gもランダムオラクルになる点に注意する。
【0014】
攻撃者は、G(r)=(G’・f)(r)=G’(f(r))=G’(u)であるので、
【0015】
【数36】
【0016】
により、メッセージmを計算することができる。
【0017】
このように、従来のIND−CCA2の定義では、安全である公開鍵暗号であっても、ランダムオラクルを与えるランダム関数を攻撃者が選んだ場合に、不正にメッセージを入手できる場合がある。
【0018】
本発明は、上記事情に鑑みてなされたものであり、公開鍵暗号への攻撃者がランダムオラクルを与えるランダム関数を選んだ場合でも、安全であることが証明可能な公開鍵暗号を用いた暗号通信通信技術を提供することにある。
【0019】
具体的には、攻撃者がランダムオラクルを与えるランダム関数を選んで適応的選択暗号文攻撃を行なった場合でも、メッセージに関する部分情報を計算できないようにすることにある。
【0020】
【課題を解決するための手段】
上記課題を解決するために本発明の公開鍵暗号通信方法では、送信者側装置が、ランダム関数および受信者の公開鍵を用いてメッセージの暗号文を作成し、これを受信者側装置へ送信する。一方、前記受信者側装置が、前記ランダム関数および前記公開鍵と対の秘密鍵を用いて前記送信者側装置より受信した前記暗号文を復号化する。
【0021】
そして、前記送信者側装置は、前記暗号文から前記ランダム関数への入力値に関する部分情報が秘匿されるように、つまり、前記暗号文を作成する際に用いたランダムオラクルとしての前記ランダム関数への入力値(メッセージに限定されない)に関する部分情報を、前記暗号文から計算することが困難となるように前記暗号文を作成する。数35、数36に示す公開鍵暗号の例でいえば、ハッシュ関数Gに対する入力値rの部分情報f(r)を、暗号文から計算することが困難となるように当該暗号文を作成する。
【0022】
これにより、公開鍵暗号への攻撃者が、ランダム関数を自由に選ぶことができても、メッセージに関する部分情報を暗号文から計算することができない。数35、数36に示す公開鍵暗号の例でいえば、ハッシュ関数G’からG(r)を得ることができない。したがって、攻撃者による公開鍵暗号への攻撃を無効とすることができる。
【0023】
なお、本発明において、前記送信者側装置が、前記ランダム関数への入力値を知っていることを証明する証明データを、前記暗号文の一部として作成するようにしてもうよい。この場合、前記受信者側装置は、前記送信者側装置より受信した前記暗号文に含まれている前記証明データの正当性を確認し、前記正当性が確認された場合にのみ前記暗号文の復号化結果を出力する。
【0024】
このようにすることで、前記ランダム関数への入力値を知っていることが証明された場合にのみ、前記暗号文の復号結果が出力されるため、前記ランダム関数への入力値を知らない公開鍵暗号への攻撃者は、復号化オラクルから復号結果に関する情報を得ることができない。したがって、公開鍵暗号への攻撃者がランダムオラクルを与えるランダム関数を選んだ場合でも、安全な公開鍵暗号通信を実現できる。
【0025】
具体的には、例えば、受信者の秘密鍵を、
【0026】
【数37】
【0027】
とし、
前記秘密鍵と対の公開鍵を、
【0028】
【数38】
【0029】
とする(但し、Gは有限アーベル群を表わし、Gの元と{0,1}kの元との間に1対1対応があるものとする。また、nは、k1+k2以上でもよいし、あるいは未満でもよい)。
【0030】
この場合、前記送信者側装置は、
メッセージm∈{0,1}nに対して乱数r1∈{0,1}k1、r2∈{0,1}k2を選び、
【0031】
【数39】
【0032】
を計算して(但し、EK(m)は、メッセージ文mを鍵Kにより共通鍵暗号化アルゴリズムEを用いて暗号化した結果を意味する)、その結果(u,v,w)を前記メッセージmの暗号文とする。
【0033】
一方、前記受信者側装置は、
前記秘密鍵を用いて、
【0034】
【数40】
【0035】
なる(r1’,r2’)を計算して(但し、r1’∈{0,1}k1、r2’∈{0,1}k2であり、r1’,r2’のビット長は既知とする)、
【0036】
【数41】
【0037】
が成立することを確認することで、前記証明データの正当性を確認し、
前記確認に成功した場合にのみ、m’を、
【0038】
【数42】
【0039】
により計算し(但し、DK ’(w)は、暗号文wを鍵K’により共通鍵暗号化アルゴリズムDを用いて復号化した結果を意味する)、前記暗号文(u,v,w)のメッセージとして出力する。
【0040】
また、本発明において、前記送信者側装置が、前記暗号文の作成に先立って、前記ランダム関数への入力値を十分に大きな集合の中から一様に選ぶようにしてもよい。
【0041】
このようにすることで、公開鍵暗号への攻撃者は、前記ランダム関数への入力値を知ることがより困難になるため、復号化オラクルから復号結果に関する情報を得ることができない。したがって、公開鍵暗号への攻撃者がランダムオラクルを与えるランダム関数を選んだ場合でも、安全な公開鍵暗号通信を実現できる。
【0042】
具体的には、例えば、受信者の秘密鍵を、
【0043】
【数43】
【0044】
とし、
前記秘密鍵と対の公開鍵を、
【0045】
【数44】
【0046】
とする(但し、Gは有限アーベル群を表わし、{0,1}kの元をGの元とみなす1対1対応があるものとする)。
【0047】
この場合、前記送信者側装置は、
メッセージm∈{0,1}k0に対して乱数r1∈{0,1}k1、r2∈{0,1}k2を選び、
【0048】
【数45】
【0049】
を計算して、その結果(u,v)を前記メッセージmの暗号文とする。
【0050】
一方、前記受信者側装置は、
前記秘密鍵を用いて、
【0051】
【数46】
【0052】
なる(m’,r1’,r2’)を計算して(但し、m’∈{0,1}k0、r1’∈{0,1}k1、r2’∈{0,1}k2であり、m’,r1’,r2’のビット長は既知とする)、
【0053】
【数47】
【0054】
が成立することを確認し、
前記確認に成功した場合にのみ、m’を前記暗号文(u,v)のメッセージとする。
【0055】
なお、本発明において、暗号化対象となるメッセージは、文字列のみならず、画像や音、あるいは、送信データの暗号化のために使用する共通鍵など、あらゆるディジタルデータが該当する。
【0056】
【発明の実施の形態】
以下に、本発明の実施の形態について説明する。
【0057】
まず、以下の各実施形態に共通する公開鍵暗号通信システムの構成について説明する。
【0058】
図1は、本発明の各実施形態に共通する公開鍵暗号通信システムの概略構成図である。図示するように、公開鍵暗号通信システムは、暗号化処理を行なってメッセージの暗号文を作成する送信者側装置100と、復号化処理を行なってメッセージを復元する受信者側装置200とが、通信回線300を介して接続された構成を有している。
【0059】
図2は、図1に示す送信者側装置100の概略構成図である。図示するように、暗号化対象のメッセージを含む各種情報の入力を受け付ける入力部107と、乱数生成部101と、べき乗算部102と、暗号化部103と、剰余演算部104と、記憶部105と、通信回線300を介して受信者側装置200と通信を行なう通信部106と、を備えている。
【0060】
図3は、図1に示す受信者側装置200の概略構成図である。図示するように、通信回線300を介して送信者側装置100と通信を行なう通信部206と、鍵生成部201と、べき乗算部202と、復号化部203と、剰余演算部204と、記憶部205と、復号結果を含む各種情報を出力する出力部207と、を備えている。
【0061】
上記構成の送信者側装置100および受信者側装置200は、図4に示すような、CPU401と、メモリ402と、HDD等の外部記憶装置403と、CD−ROMやDVD−ROM等の可搬性を有する記憶媒体404から情報を読み出す読取装置405と、キーボードやマウスなどの入力装置406と、ディスプレイなどの出力装置407と、通信回線300を介して相手装置と通信を行なうための通信装置408と、を備えた一般的なコンピュータシステムにおいて、CPU401がメモリ402上にロードされた所定のプログラムを実行することにより実現することができる。この場合、メモリ402や外部記憶装置403が記憶部105、205に利用される。
【0062】
この所定のプログラムは、読取装置405を介して記憶媒体404から、あるいは、通信装置408を介して通信回線300から、外部記憶装置403にダウンロードされ、それから、メモリ402上にロードされてCPU401により実行されるようにしてもよい。また、読取装置405を介して記憶媒体404から、あるいは、通信装置408を介して通信回線300から、メモリ402上に直接ロードされ、CPU401により実行されるようにしてもよい。
【0063】
(第1実施形態)
次に、本発明の第1実施形態について、送信者Aが受信者Bに対して、送信データとなるメッセージmを暗号通信によって送信する場合を例にとり説明する。
図5は、本発明の第1実施形態の動作手順を説明するための図である。
【0064】
1.鍵生成処理
受信者側装置200において、鍵生成部201は、受信者B(受信者側装置200の操作者)よりの指示に従い、受信者Bの秘密鍵xと、受信者Bの公開鍵(g,h,H1,H2,H3)とを、それぞれ数48、数49により生成する。そして、生成情報を記憶部205に記憶する(ST1100)。
【0065】
【数48】
【0066】
【数49】
【0067】
ここで、Gは有限アーベル群を表わし、Gの元と{0,1}kの元との間に1対1対応があるものとする。また、k3は、k1+k2以上でもよいし、あるいは未満でもよい。
【0068】
次に、受信者Bは、受信者側装置200の鍵生成部201が生成した情報(g,h)を含む公開情報を、送信者A(送信者側装置100の操作者)に知らせる(ST1101)。例えば、受信者側装置200において、鍵生成部201は、受信者Bよりの指示に従い、公開情報を、通信部206を介して送信者側装置100へ送信する。あるいは、受信者Bは、例えば第3者(公開情報管理機関)への登録などの周知の方法により、公開情報を公開する。この公開情報は、送信者側装置100の記憶部105に記憶される。なお、公開鍵に含まれるランダム関数H1〜H3は、所定のものが送信者側装置100および受信者側装置200に予め設定されているようにしてもよい。あるいは、ランダム関数H1〜H3を、公開鍵の一部としてではなく、パブリックドメイン(public domain)に置くようしてもかまわない。
【0069】
2.暗号化処理
送信者側装置100において、入力部107は、送信者Aよりメッセージm(m∈{0,1}k1)の入力を受け付ける(ST1200)。これを受けて、乱数生成部101は、メッセージmに対して乱数r∈{0,1}k2を選ぶ。それから、暗号化部103は、この乱数rと、予め記憶部105に記憶しておいた受信者Bの公開鍵(g,h,H1,H2,H3)とを用いて、べき乗算部102を利用して数50を計算する(ST1201)。
【0070】
【数50】
【0071】
次に、暗号化部103は、数50の計算結果(u,v,w)を、メッセージmの暗号文として、通信回線300を介して、受信者側装置200に送信する(ST1202)。
【0072】
3.復号化処理
受信者側装置200において、通信部206は、通信回線300を介して送信者側装置100より暗号文(u,v,w)を受け取り、これを記憶部205に記憶する。さて、復号化部203は、受信者Bよりの指示に従い、べき乗算部202を利用して、記憶部205に記憶されている受信者の秘密鍵xを用いて、記憶部205に記憶されている暗号文(u,v,w)から数51を満たす(m’,r’)計算する(ST1300)。
【0073】
【数51】
【0074】
ここで、m’,r’のビット長は既知とする。
【0075】
次に、復号化部203は、数51の計算結果(m’,r’)を用いて、べき乗算部202を利用して、数52が成立するか否かを確認する(ST1301)。
【0076】
【数52】
【0077】
そして、復号化部203は、数52が成立することを確認できた場合のみ、復号結果m’を出力部207から出力する。一方、数52が成立することを確認できなかった場合は、復号結果m’の出力を拒否し、例えば代わりにエラーメッセージなどを出力部207から出力する(ST1302)。
【0078】
以上、本発明の第1実施形態について説明した。
【0079】
本実施形態では、群G上のDiffie−Hellman決定問題(定義については例えば非特許文献5を参照)の困難性を前提にして、IND−CCA2であることが証明できる。
【0080】
すなわち、IND−CCA2の意味において、本実施形態による公開鍵暗号を破ろうとする攻撃者(IND−CCA2の定義については、例えば、上記の文献4に記載されている)が、復号化オラクルから情報を得るためには、質問である暗号文に対する元のメッセージを知る必要がある。しかし、攻撃者は、復号化オラクルから新たな情報を得ることができない。また、上記の文献3に記載されている方法と同様の方法により、本実施形態が選択平文攻撃に対して強秘匿(IND−CPA(Chosen−Plaintext Attack))であることが証明できる。これより、本実施形態の公開鍵暗号通信は、IND−CCA2であることが証明できる。
【0081】
また、本実施形態において、乱数rをメッセージとみなすと(この場合、メッセージmは秘密である)、上記の文献3に記載されている方法と同様の方法により、群G上のDiffie−Hellman決定問題の困難性を前提にして、IND−CPAであることが証明できる。すなわち、暗号文から乱数rに関する部分情報を漏らしていないことを証明できる。つまり、本実施形態では、攻撃者がランダム関数に付随する情報を第3のランダム関数から得ても、メッセージに関する部分情報を暗号文から計算することが困難である。
【0082】
さらに、暗号文の一部であるデータwを正しく作成するためには、データmおよびデータrを知る必要がある。云いかえれば、ランダム関数への入力値を知る者しかデータmを作成することができない。本実施形態では、データwを正しく作成できない攻撃者は、復号化オラクルから新しい情報を得ることが困難である。
【0083】
以上のことから、公開鍵暗号への攻撃者がランダムオラクルを与えるランダム関数を選んだ場合でも安全な公開鍵暗号通信を実現できる。
【0084】
(第2実施形態)
次に、本発明の第2実施形態について、送信者Aが受信者Bに対して、送信データとなるメッセージmを暗号通信によって送信する場合を例にとり説明する。図6は、本発明の第2実施形態の動作手順を説明するための図である。
【0085】
1.鍵生成処理
受信者側装置200において、鍵生成部201は、受信者B(受信者側装置200の操作者)よりの指示に従い、受信者Bの秘密鍵xと、受信者Bの公開鍵(g,h,H1,H2,H3,(E,D))とを、それぞれ数53、数54により生成する。そして、生成情報を記憶部205に記憶する(ST1400)。
【0086】
【数53】
【0087】
【数54】
【0088】
ここで、Gは有限アーベル群を表わし、Gの元と{0,1}kの元との間に1対1対応があるものとする。また、nは、k1+k2以上でもよいし、あるいは未満でもよい。
【0089】
次に、受信者Bは、受信者側装置200の鍵生成部201が生成した情報(g,h)を含む公開情報を、送信者A(送信者側装置100の操作者)に知らせる(ST1401)。例えば、受信者側装置200において、鍵生成部201は、受信者Bよりの指示に従い、公開情報を、通信部206を介して送信者側装置100へ送信する。あるいは、受信者Bは、例えば第3者(公開情報管理機関)への登録などの周知の方法により、公開情報を公開する。この公開情報は、送信者側装置100の記憶部105に記憶される。なお、公開鍵に含まれるランダム関数H1〜H3および共通鍵暗号アルゴリズム(E,D)は、所定のものが送信者側装置100および受信者側装置200に予め設定されているようにしてもよい。あるいは、ランダム関数H1〜H3および共通鍵暗号アルゴリズム(E,D)を、公開鍵の一部としてではなく、パブリックドメイン(public domain)に置くようしてもかまわない。
【0090】
2.暗号化処理
送信者側装置100において、入力部107は、送信者Aよりメッセージm(m∈{0,1}n)の入力を受け付ける(ST1500)。これを受けて、乱数生成部101は、メッセージmに対して乱数r1∈{0,1}k1、r2∈{0,1}k2を選ぶ。それから、暗号化部103は、この乱数r1、r2と、予め記憶部105に記憶しておいた受信者Bの公開鍵(g,h,H1,H2,H3,(E,D))とを用いて、べき乗算部102を利用して数55を計算する(ST1501)。
【0091】
【数55】
【0092】
ここで、EK(m)は、メッセージ文mを鍵Kにより共通鍵暗号化アルゴリズムEを用いて暗号化した結果を意味する。
【0093】
次に、暗号化部103は、数55の計算結果(u,v,w)を、メッセージmの暗号文として、通信回線300を介して、受信者側装置200に送信する(ST1502)。
【0094】
3.復号化処理
受信者側装置200において、通信部206は、通信回線300を介して送信者側装置100より暗号文(u,v,w)を受け取り、これを記憶部205に記憶する。さて、復号化部203は、受信者Bよりの指示に従い、べき乗算部202を利用して、記憶部205に記憶されている受信者の秘密鍵xを用いて、記憶部205に記憶されている暗号文(u,v,w)から数56を満たす(r1’、r2’)計算する(ST1600)。
【0095】
【数56】
【0096】
ここで、r1’∈{0,1}k1、r2’∈{0,1}k2であり、r1’,r2’のビット長は既知とする。
【0097】
次に、復号化部203は、数56の計算結果(r1’、r2’)を用いて、べき乗算部202を利用し数57が成立するか否かを確認する(ST1601)。
【0098】
【数57】
【0099】
そして、復号化部203は、数57が成立することを確認できた場合のみm’を、
【0100】
【数58】
【0101】
により計算し、これを暗号文の復号結果として出力する。ここで、DK ’(w)は、暗号文wを鍵K’により共通鍵暗号化アルゴリズムDを用いて復号化した結果を意味する。一方、数57が成立することを確認できなかった場合は、m’の計算を拒否し、その代わりに例えばエラーメッセージなどを出力部207から出力する(ST1602)。
【0102】
以上、本発明の第2実施形態について説明した。
【0103】
本実施形態でも、上記の第1実施形態と同様の効果を奏する。
【0104】
(第3実施形態)
次に、本発明の第3実施形態について説明する。図7は、本発明の第3実施形態の動作手順を説明するための図である。
【0105】
1.鍵生成処理
受信者側装置200において、鍵生成部201は、受信者Bよりの指示に従い、受信者Bの秘密鍵xと、受信者Bの公開鍵(p,g,h,H1,H2,H3)とを、それぞれ数59、数60により生成する。そして、生成情報を記憶部205に記憶する(ST2100)。
【0106】
【数59】
【0107】
【数60】
【0108】
ここで、Z* pの元と{0,1}kの元との間に1対1対応があるものとする。また、k3は、k1+k2以上でもよいし、あるいは未満でもよい。
【0109】
次に、受信者Bは、受信者側装置200の鍵生成部201が生成した情報(p,g,h)を含む公開情報を、送信者Aに知らせる(ST2101)。例えば、受信者側装置200において、鍵生成部201は、受信者Bよりの指示に従い、公開情報を、通信部206を介して送信者側装置100へ送信する。あるいは、受信者Bは、例えば第3者(公開情報管理機関)への登録などの周知の方法により、公開情報を公開する。この公開情報は、送信者側装置100の記憶部105に記憶される。なお、公開鍵に含まれるランダム関数H1〜H3は、上記の第1実施形態と同様、所定のものが送信者側装置100および受信者側装置200に予め設定されているようにしてもよい。あるいは、ランダム関数H1〜H3を、公開鍵の一部としてではなく、パブリックドメイン(public domain)に置くようしてもかまわない。
【0110】
2.暗号化処理
送信者側装置100において、入力部107は、送信者Aよりメッセージm(m∈{0,1}k1)の入力を受け付ける(ST2200)。これを受けて、乱数生成部101は、メッセージmに対して乱数r∈{0,1}k2を選ぶ。それから、暗号化部103は、この乱数rと、予め記憶部105に記憶しておいた受信者Bの公開鍵(p,g,h,H1,H2,H3)とを用いて、べき乗算部102および剰余演算部104を利用して数61を計算する(ST2201)。
【0111】
【数61】
【0112】
次に、暗号化部103は、数61の計算結果(u,v,w)を、メッセージmの暗号文として、通信回線300を介して、受信者側装置200に送信する(ST2202)。
【0113】
3.復号化処理
受信者側装置200において、通信部206は、通信回線300を介して送信者側装置100より暗号文(u,v,w)を受け取り、これを記憶部205に記憶する。さて、復号化部203は、受信者Bよりの指示に従い、べき乗算部202を利用して、記憶部205に記憶されている受信者の秘密鍵xを用いて、記憶部205に記憶されている暗号文(u,v,w)から数62を満たす(m’,r’)計算する(ST2300)。
【0114】
【数62】
【0115】
ここで、m’、r’のビット長は既知とする。
【0116】
次に、復号化部203は、数62の計算結果(m’,r’)を用いて、べき乗算部202および剰余演算部204を利用して、数63が成立するか否かを確認する(ST2301)。
【0117】
【数63】
【0118】
そして、復号化部203は、数63が成立することを確認できた場合のみ、復号結果m’を出力部207から出力する。一方、数63が成立することを確認できなかった場合は、復号結果m’の出力を拒否し、例えば代わりにエラーメッセージなどを出力部207から出力する(ST2302)。
【0119】
以上、本発明の第3実施形態について説明した。
【0120】
本実施形態においても、上記の第1実施形態と同様の方法により、群Z* p上のDiffie−Hellman決定問題の困難性を前提にして、IND−CCA2であることを証明できる。
【0121】
また、上記の第1実施形態と同様、乱数rをメッセージとみなすと(この場合、メッセージmは秘密である)、群Z* p上のDiffie−Hellman決定問題の困難性を前提にして、IND−CPAであることが証明できる。すなわち、暗号文から乱数rに関する部分情報を漏らしていないことを証明できる。つまり、攻撃者がランダム関数に付随する情報を第3のランダム関数から得ても、メッセージに関する部分情報を暗号文から計算することが困難である。
【0122】
さらに、上記の第1実施形態と同様、暗号文の一部であるデータwを正しく作成するためには、データmおよびデータrを知る必要がある。云いかえれば、ランダム関数への入力値を知る者しかデータmを作成することができない。本実施形態では、データwを正しく作成できない攻撃者は、復号化オラクルから新しい情報を得ることが困難である。
【0123】
以上のことから、公開鍵暗号への攻撃者がランダムオラクルを与えるランダム関数を選んだ場合でも安全な公開鍵暗号通信を実現できる。
【0124】
(第4実施形態)
次に、本発明の第4実施形態について説明する。図8は、本発明の第4実施形態の動作手順を説明するための図である。
【0125】
1.鍵生成処理
受信者側装置200において、鍵生成部201は、受信者Bよりの指示に従い、受信者Bの秘密鍵xと、受信者Bの公開鍵(p,g,h,H1,H2,H3,(E,D))とを、それぞれ数64、数65により生成する。そして、生成情報を記憶部205に記憶する(ST2400)。
【0126】
【数64】
【0127】
【数65】
【0128】
ここで、Z* pの元と{0,1}kの元との間に1対1対応があるものとする。また、nは、k1+k2以上でもよいし、あるいは未満でもよい。
【0129】
次に、受信者Bは、受信者側装置200の鍵生成部201が生成した情報(p,g,h)を含む公開情報を、送信者Aに知らせる(ST2401)。例えば、受信者側装置200において、鍵生成部201は、受信者Bよりの指示に従い、公開情報を、通信部206を介して送信者側装置100へ送信する。あるいは、受信者Bは、例えば第3者(公開情報管理機関)への登録などの周知の方法により、公開情報を公開する。この公開情報は、送信者側装置100の記憶部105に記憶される。なお、公開鍵に含まれるランダム関数H1〜H3および共通鍵暗号アルゴリズム(E,D)は、上記の第1実施形態と同様、所定のものが送信者側装置100および受信者側装置200に予め設定されているようにしてもよい。あるいは、ランダム関数H1〜H3および共通鍵暗号アルゴリズム(E,D)を、公開鍵の一部としてではなく、パブリックドメイン(public domain)に置くようしてもかまわない。
【0130】
2.暗号化処理
送信者側装置100において、入力部107は、送信者Aよりメッセージm(m∈{0,1}n)の入力を受け付ける(ST2500)。これを受けて、乱数生成部101は、メッセージmに対して乱数r1∈{0,1}k1、r2∈{0,1}k2を選ぶ。それから、暗号化部103は、この乱数r1、r2と、予め記憶部105に記憶しておいた受信者Bの公開鍵(g,h,H1,H2,H3,(E,D))とを用いて、べき乗算部102および剰余演算部104を利用して数66を計算する(ST2501)。
【0131】
【数66】
【0132】
ここで、EK(m)は、メッセージ文mを鍵Kにより共通鍵暗号化アルゴリズムEを用いて暗号化した結果を意味する。
【0133】
次に、暗号化部103は、数66の計算結果(u,v,w)を、メッセージmの暗号文として、通信回線300を介して、受信者側装置200に送信する(ST2502)。
【0134】
3.復号化処理
受信者側装置200において、通信部206は、通信回線300を介して送信者側装置100より暗号文(u,v,w)を受け取り、これを記憶部205に記憶する。さて、復号化部203は、受信者Bよりの指示に従い、べき乗算部202および剰余演算部104を利用して、記憶部205に記憶されている受信者の秘密鍵xを用いて、記憶部205に記憶されている暗号文(u,v,w)から数67を満たす(r1’、r2’)を計算する(ST2600)。
【0135】
【数67】
【0136】
ここで、r1’∈{0,1}k1、r2’∈{0,1}k2であり、r1’,r2’のビット長は既知とする。
【0137】
次に、復号化部203は、数67の計算結果(r1’、r2’)を用いて、べき乗算部202および剰余演算部204を利用して、数68が成立するか否かを確認する(ST2601)。
【0138】
【数68】
【0139】
そして、復号化部203は、数68が成立することを確認できた場合のみm’を、
【0140】
【数69】
【0141】
により計算し、これを暗号文の復号結果として出力する。ここで、DK ’(w)は、暗号文wを鍵K’により共通鍵暗号化アルゴリズムDを用いて復号化した結果を意味する。一方、数68が成立することを確認できなかった場合は、m’の計算を拒否し、その代わりに例えばエラーメッセージなどを出力部207から出力する(ST2602)。
【0142】
以上、本発明の第4実施形態について説明した。
【0143】
本実施形態でも、上記の第1実施形態と同様の効果を奏する。
【0144】
(第5実施形態)
次に、本発明の第5実施形態について説明する。本実施形態は、上記の第1実施形態の変形例であり、上記の第1実施形態よりも平文空間(メッセージの長さ)を大きくできるようにしたものである。図9は、本発明の第5実施形態の動作手順を説明するための図である。
【0145】
1.鍵生成処理
受信者側装置200において、鍵生成部201は、受信者Bよりの指示に従い、受信者Bの秘密鍵xと、受信者Bの公開鍵(g,h,H1,H2,H3,G)とを、それぞれ数70、数71により生成する。そして、生成情報を記憶部205に記憶する(ST3100)。
【0146】
【数70】
【0147】
【数71】
【0148】
ここで、Gは有限アーベル群を表わし、Gの元と{0,1}kの元との間に1対1対応があるものとする。また、k3,nのそれぞれは、k1+k2以上でもよいし、あるいは未満でもよい。
【0149】
次に、受信者Bは、受信者側装置200の鍵生成部201が生成した情報(g,h)を含む公開情報を、送信者Aに知らせる(ST3101)。例えば、受信者側装置200において、鍵生成部201は、受信者Bよりの指示に従い、公開情報を、通信部206を介して送信者側装置100へ送信する。あるいは、受信者Bは、例えば第3者(公開情報管理機関)への登録などの周知の方法により、公開情報を公開する。この公開情報は、送信者側装置100の記憶部105に記憶される。なお、公開鍵に含まれるランダム関数H1〜H3、Gは、上記の第1実施形態と同様、所定のものが送信者側装置100および受信者側装置200に予め設定されているようにしてもよい。あるいは、ランダム関数H1〜H3、Gを、公開鍵の一部としてではなく、パブリックドメイン(public domain)に置くようしてもかまわない。
【0150】
2.暗号化処理
送信者側装置100において、入力部107は、送信者Aよりメッセージm(m∈{0,1}n)の入力を受け付ける(ST3200)。これを受けて、乱数生成部101は、メッセージmに対して乱数r1∈{0,1}k1、r2∈{0,1}k2を選ぶ。それから、暗号化部103は、この乱数r1、r2と、予め記憶部105に記憶しておいた受信者Bの公開鍵(g,h,H1,H2,H3、G)とを用いて、べき乗算部102および剰余演算部104を利用して数72を計算する(ST3201)。
【0151】
【数72】
【0152】
次に、暗号化部103は、数44の計算結果(u,v,w,z)を、メッセージmの暗号文として、通信回線300を介して、受信者側装置200に送信する(ST3202)。
【0153】
3.復号化処理
受信者側装置200において、通信部206は、通信回線300を介して送信者側装置100より暗号文(u,v,w,z)を受け取り、これを記憶部205に記憶する。さて、復号化部203は、受信者Bよりの指示に従い、べき乗算部202を利用して、記憶部205に記憶されている受信者の秘密鍵xを用いて、記憶部205に記憶されている暗号文(u,v,w,z)から数73を満たす(r1’,r2’)を計算する(ST3300)。
【0154】
【数73】
【0155】
ここで、r1’、r2’のビット長は既知とする。
【0156】
次に、復号化部203は、数73の計算結果(r1’,r2’)を用い、べき乗算部202を利用して、数74が成立するか否かを確認する(ST3301)。
【0157】
【数74】
【0158】
そして、復号化部203は、数74が成立することを確認できなかった場合、復号結果の出力を拒否して、例えばエラーメッセージなどを出力部207から出力する。一方、数74が成立することを確認できた場合は、記憶部205に記憶されている受信者の秘密鍵xと、記憶部205に記憶されている暗号文(u,v,w,z)と、数73の計算結果(r1’,r2’)とを用いて、数75を計算する。
【0159】
【数75】
【0160】
そして、数75の計算結果m’を、暗号文(u,v,w,z)のメッセージとして出力する(ST3302)。
【0161】
以上、本発明の第5実施形態について説明した。
【0162】
本実施形態は、上記の第1実施形態と同様の効果を奏する。それに加え、本実施形態では、メッセージの長さ(ビット長)nを任意に選ぶことができる。このため、上記の第1実施形態に比べてより長いメッセージを暗号化することが可能である。公開鍵暗号の利用目的として、共通鍵暗号のデータ暗号化鍵の配送に利用することがある。しかし、単にデータ暗号化鍵のみを暗号化するのではなく、ユーザのID情報等の付加情報を加えて暗号化することも少なくない。このような場合において、本実施形態は有効である。
【0163】
(第6実施形態)
次に、本発明の第6実施形態について説明する。本実施形態は、上記の第5実施形態において有限アーベル群Gを体から決定される乗法群として与えている。
図10は、本発明の第6実施形態の動作手順を説明するための図である。
【0164】
1.鍵生成処理
受信者側装置200において、鍵生成部201は、受信者Bよりの指示に従い、受信者Bの秘密鍵xと、受信者Bの公開鍵(p,g,h,H1,H2,H3,G)とを、それぞれ数76、数77により生成する。そして、生成情報を記憶部205に記憶する(ST4100)。
【0165】
【数76】
【0166】
【数77】
【0167】
ここで、Z* pの元と{0,1}kの元との間に1対1対応があるものとする。また、k3,nのそれぞれは、k1+k2以上でもよいし、あるいは未満でもよい。
【0168】
次に、受信者Bは、受信者側装置200の鍵生成部201が生成した情報(p,g,h)を含む公開情報を、送信者Aに知らせる(ST4101)。例えば、受信者側装置200において、鍵生成部201は、受信者Bよりの指示に従い、公開情報を、通信部206を介して送信者側装置100へ送信する。あるいは、受信者Bは、例えば第3者(公開情報管理機関)への登録などの周知の方法により、公開情報を公開する。この公開情報は、送信者側装置100の記憶部105に記憶される。なお、公開鍵に含まれるランダム関数H1〜H3、Gは、上記の第1実施形態と同様、所定のものが送信者側装置100および受信者側装置200に予め設定されているようにしてもよい。あるいは、ランダム関数H1〜H3、Gを、公開鍵の一部としてではなく、パブリックドメイン(public domain)に置くようしてもかまわない。
【0169】
2.暗号化処理
送信者側装置100において、入力部107は、送信者Aよりメッセージm(m∈{0,1}n)の入力を受け付ける(ST4200)。これを受けて、乱数生成部101は、メッセージmに対して乱数r1∈{0,1}k1、r2∈{0,1}k2を選ぶ。それから、暗号化部103は、この乱数r1、r2と、予め記憶部105に記憶しておいた受信者Bの公開鍵(p,g,h,H1,H2,H3、G)とを用いて、べき乗算部102および剰余演算部104を利用して数78を計算する(ST4201)。
【0170】
【数78】
【0171】
次に、暗号化部103は、数78の計算結果(u,v,w,z)を、メッセージmの暗号文として、通信回線300を介して、受信者側装置200に送信する(ST4202)。
【0172】
3.復号化処理
受信者側装置200において、通信部206は、通信回線300を介して送信者側装置100より暗号文(u,v,w,z)を受け取り、これを記憶部205に記憶する。さて、復号化部203は、受信者Bよりの指示に従い、べき乗算部202および剰余演算部204を利用して、記憶部205に記憶されている受信者Bの秘密鍵xを用いて、記憶部205に記憶されている暗号文(u,v,w,z)から数79を満たす(r1’,r2’)を計算する(ST4300)。
【0173】
【数79】
【0174】
ここで、r1’、r2’のビット長は既知とする。
【0175】
次に、復号化部203は、数79の計算結果(r1’,r2’)を用い、べき乗算部202および剰余演算部204を利用して、数80が成立するか否かを確認する(ST4301)。
【0176】
【数80】
【0177】
そして、復号化部203は、数80が成立することを確認できなかった場合、復号結果の出力を拒否して、例えばエラーメッセージなどを出力部207から出力する。一方、数80が成立することを確認できた場合は、記憶部205に記憶されている受信者の秘密鍵xと、記憶部205に記憶されている暗号文(u,v,w,z)と、数79の計算結果(r1’,r2’)とを用いて、数81を計算する。
【0178】
【数81】
【0179】
そして、数81の計算結果m’を、暗号文(u,v,w,z)のメッセージとして出力する(ST4302)。
【0180】
以上、本発明の第6実施形態について説明した。
【0181】
本実施形態は、上記の第3実施形態と同様の効果を奏する。それに加え、本実施形態では、メッセージの長さ(ビット長)nを任意に選ぶことができる。このため、上記の第3実施形態に比べてより長いメッセージを暗号化することが可能である。公開鍵暗号の利用目的として、共通鍵暗号のデータ暗号化鍵の配送に利用することがある。しかし、単にデータ暗号化鍵のみを暗号化するのではなく、ユーザのID情報等の付加情報を加えて暗号化することも少なくない。このような場合において、本実施形態は有効である。
【0182】
(第7実施形態)
次に、本発明の第7実施形態について、送信者Aが受信者Bに対して、送信データとなるメッセージmを暗号通信によって送信する場合を例にとり説明する。
図11は、本発明の第7実施形態の動作手順を説明するための図である。
【0183】
1.鍵生成処理
受信者側装置200において、鍵生成部201は、受信者B(受信者側装置200の操作者)よりの指示に従い、受信者Bの秘密鍵sと、受信者Bの公開鍵(g,h,H1,H2)とを、それぞれ数82、数83により生成する。そして、生成情報を記憶部205に記憶する(ST5100)。
【0184】
【数82】
【0185】
【数83】
【0186】
ここで、Gは有限アーベル群を表わし、{0,1}kの元をGの元とみなす1対1対応があるものとする。
【0187】
次に、受信者Bは、受信者側装置200の鍵生成部201が生成した情報(g,h)を含む公開情報を、送信者A(送信者側装置100の操作者)に知らせる(ST5101)。例えば、受信者側装置200において、鍵生成部201は、受信者Bよりの指示に従い、公開情報を、通信部206を介して送信者側装置100へ送信する。あるいは、受信者Bは、例えば第3者(公開情報管理機関)への登録などの周知の方法により、公開情報を公開する。この公開情報は、送信者側装置100の記憶部105に記憶される。なお、公開鍵に含まれるランダム関数H1、H2は、所定のものが送信者側装置100および受信者側装置200に予め設定されているようにしてもよい。あるいは、ランダム関数H1、H2を、公開鍵の一部としてではなく、パブリックドメイン(public domain)に置くようしてもかまわない。
【0188】
2.暗号化処理
送信者側装置100において、入力部107は、送信者Aよりメッセージm(m∈{0,1}k0)の入力を受け付ける(ST5200)。これを受けて、乱数生成部101は、メッセージmに対して、乱数r1∈{0,1}k1、r2∈{0,1}k2を選ぶ。ここで、乱数r1、r2は、十分に大きな集合の中から一様に、つまり、どの値が選択されたか予測できないように、選択されるものとする。それから、暗号化部103は、この乱数r1、r2と、予め記憶部105に記憶しておいた受信者Bの公開鍵(g,h,H1,H2)とを用いて、べき乗算部102を利用して数84を計算する(ST5201)。
【0189】
【数84】
【0190】
次に、暗号化部103は、数84の計算結果(u,v)を、メッセージmの暗号文として、通信回線300を介して、受信者側装置200に送信する(ST5202)。
【0191】
3.復号化処理
受信者側装置200において、通信部206は、通信回線300を介して送信者側装置100より暗号文(u,v)を受け取り、これを記憶部205に記憶する。さて、復号化部203は、受信者Bよりの指示に従い、べき乗算部202を利用して、記憶部205に記憶されている受信者の秘密鍵sを用いて、記憶部205に記憶されている暗号文(u,v)から数85を満たす(m’,r1’,r2’)計算する(ST5300)。
【0192】
【数85】
【0193】
ここで、m’∈{0,1}k0、r1’∈{0,1}k1、r2’∈{0,1}k2であり、m’,r1’,r2’のビット長は既知とする。
【0194】
次に、復号化部203は、数85の計算結果(m’,r1’,r2’)を用いて、べき乗算部202を利用して、数86が成立するか否かを確認する(ST5301)。
【0195】
【数86】
【0196】
そして、復号化部203は、数86が成立することを確認できた場合のみ、復号結果m’を出力部207から出力する。一方、数86が成立することを確認できなかった場合は、復号結果m’の出力を拒否し、例えば代わりにエラーメッセージなどを出力部207から出力する(ST5302)。
【0197】
以上、本発明の第7実施形態について説明した。
【0198】
本実施形態では、群G上のDiffie−Hellman決定問題の困難性を前提にして、攻撃者がランダムオラクル(関数)を不正に選んだ場合(以下、通常のランダムオラクルに対して攻撃的ランダムオラクルと呼ぶ)においても、安全性を証明できる。すなわち、本実施形態では、受動的攻撃に対して(攻撃者は復号化オラクルを利用しない)、メッセージのみならず、ランダムオラクルへの入力値さえ暗号文から計算することが(従来の強秘匿(semantic security)や識別不能(IND:Indistinguishability)の概念における数学的手法と類似の手法により)困難であることが証明できる。これにより、攻撃的ランダムオラクルは、通常のランダムオラクルに対して無視できる確率でしかアドバンテージを持っていないことが証明される。
【0199】
以上のことから、公開鍵暗号への攻撃者がランダムオラクルを与えるランダム関数を選んだ場合でも安全な公開鍵暗号通信を実現できる。
【0200】
(第8実施形態)
次に、本発明の第8実施形態について説明する。本実施形態は、上記の第7実施形態を共通鍵暗号とのハイブリッド方式にしたものである。図12は、本発明の第8実施形態の動作手順を説明するための図である。
【0201】
1.鍵生成処理
受信者側装置200において、鍵生成部201は、受信者B(受信者側装置200の操作者)よりの指示に従い、受信者Bの秘密鍵sと、受信者Bの公開鍵(g,h,H1,H2,(E,D),F)とを、それぞれ数87、数88により生成する。そして、生成情報を記憶部205に記憶する(ST6100)。
【0202】
【数87】
【0203】
【数88】
【0204】
ここで、Gは有限アーベル群を表わし、{0,1}kの元をGの元とみなす1対1対応があるものとする。
【0205】
次に、受信者Bは、受信者側装置200の鍵生成部201が生成した情報(g,h)を含む公開情報を、送信者A(送信者側装置100の操作者)に知らせる(ST6101)。例えば、受信者側装置200において、鍵生成部201は、受信者Bよりの指示に従い、公開情報を、通信部206を介して送信者側装置100へ送信する。あるいは、受信者Bは、例えば第3者(公開情報管理機関)への登録などの周知の方法により、公開情報を公開する。この公開情報は、送信者側装置100の記憶部105に記憶される。なお、公開鍵に含まれるランダム関数H1、H2、共通鍵暗号アルゴリズム(E,D)、および、鍵生成関数Fは、所定のものが送信者側装置100および受信者側装置200に予め設定されているようにしてもよい。あるいは、ランダム関数H1、H2、共通鍵暗号アルゴリズム(E,D)、および、鍵生成関数Fを、公開鍵の一部としてではなく、パブリックドメイン(public domain)に置くようしてもかまわない。
【0206】
2.暗号化処理
送信者側装置100において、入力部107は、送信者Aよりメッセージmの入力を受け付ける(ST6200)。これを受けて、乱数生成部101は、メッセージmに対して、乱数z∈{0,1}k0、r1∈{0,1}k1、r2∈{0,1}k2を選ぶ。ここで、乱数z、r1、r2は、十分に大きな集合の中から一様に、つまり、どの値が選択されたか予測できないように、選択されるものとする。それから、暗号化部103は、この乱数zと、予め記憶部105に記憶しておいた鍵生成関数Fとを用いて、鍵K=F(z)を計算する。次に、暗号化部103は、この鍵Kと、乱数z、r1、r2と、予め記憶部105に記憶しておいた受信者Bの公開鍵(g,h,H1,H2,(E,D))とを用いて、べき乗算部102を利用して数89を計算する(ST6201)。
【0207】
【数89】
【0208】
ここで、EK(m)は、メッセージ文mを鍵Kにより共通鍵暗号化アルゴリズムEを用いて暗号化した結果を意味する。
【0209】
次に、暗号化部103は、数89の計算結果(u,v,w)を、メッセージmの暗号文として、通信回線300を介して、受信者側装置200に送信する(ST6202)。
【0210】
3.復号化処理
受信者側装置200において、通信部206は、通信回線300を介して送信者側装置100より暗号文(u,v,w)を受け取り、これを記憶部205に記憶する。さて、復号化部203は、受信者Bよりの指示に従い、べき乗算部202を利用して、記憶部205に記憶されている受信者の秘密鍵sを用いて、記憶部205に記憶されている暗号文(u,v,w)から数90を満たす(z’,r1’,r2’)計算する(ST6300)。
【0211】
【数90】
【0212】
ここで、z’∈{0,1}k0、r1’∈{0,1}k1、r2’∈{0,1}k2であり、z’,r1’,r2’のビット長は既知とする。
【0213】
次に、復号化部203は、数90の計算結果(z’,r1’,r2’)を用いて、べき乗算部202を利用して、数91が成立するか否かを確認する(ST6301)。
【0214】
【数91】
【0215】
そして、復号化部203は、数91が成立することを確認できた場合のみ、予め記憶部205に記憶されている鍵生成関数Fを用いて、鍵K’=F(z’)を計算する。それから、この鍵K’と、予め記憶部205に記憶されている共通鍵暗号アルゴリズム(E,D)とを用いて、数92を計算する。次に、復号化部203は、数92の計算結果m’を前記暗号文(u,v,w)のメッセージとして出力する。
【0216】
【数92】
【0217】
ここで、DK ’(w)は、暗号文wを鍵K’により共通鍵暗号化アルゴリズムDを用いて復号化した結果を意味する。
【0218】
一方、数91が成立することを確認できなかった場合は、数92の計算を拒否し、例えば代わりにエラーメッセージなどを出力部207から出力する(ST6302)。
【0219】
以上、本発明の第8実施形態について説明した。
【0220】
本実施形態では、上記の第7実施形態を共通鍵暗号とのハイブリッド方式にしたものであるため、上記の第7実施形態の効果に加えて、任意長のメッセージを暗号通信できるという利点を有する。
【0221】
(第9実施形態)
次に、本発明の第9実施形態についてについて説明する。本実施形態は、上記の第7実施形態において、有限アーベル群Gを体Zpから決定される乗法群として与えたものである。図13は、本発明の第9実施形態の動作手順を説明するための図である。
【0222】
1.鍵生成処理
受信者側装置200において、鍵生成部201は、受信者B(受信者側装置200の操作者)よりの指示に従い、受信者Bの秘密鍵sと、受信者Bの公開鍵(p,q,g,h,H1,H2)とを、それぞれ数93、数94により生成する。そして、生成情報を記憶部205に記憶する(ST7100)。
【0223】
【数93】
【0224】
【数94】
【0225】
ここで、|p|=k+1とする。
【0226】
次に、受信者Bは、受信者側装置200の鍵生成部201が生成した情報(p,q,g,h)を含む公開情報を、送信者A(送信者側装置100の操作者)に知らせる(ST7101)。例えば、受信者側装置200において、鍵生成部201は、受信者Bよりの指示に従い、公開情報を、通信部206を介して送信者側装置100へ送信する。あるいは、受信者Bは、例えば第3者(公開情報管理機関)への登録などの周知の方法により、公開情報を公開する。この公開情報は、送信者側装置100の記憶部105に記憶される。なお、公開鍵に含まれるランダム関数H1、H2は、所定のものが送信者側装置100および受信者側装置200に予め設定されているようにしてもよい。あるいは、ランダム関数H1、H2を、公開鍵の一部としてではなく、パブリックドメイン(public domain)に置くようしてもかまわない。
【0227】
2.暗号化処理
送信者側装置100において、入力部107は、送信者Aよりメッセージm(m∈{0,1}k0)の入力を受け付ける(ST7200)。これを受けて、乱数生成部101は、メッセージmに対して、乱数r1∈{0,1}k1、r2∈{0,1}k2を選ぶ。ここで、乱数r1、r2は、十分に大きな集合の中から一様に、つまり、どの値が選択されたか予測できないように、選択されるものとする。それから、暗号化部103は、この乱数r1、r2と、予め記憶部105に記憶しておいた受信者Bの公開鍵(p,q,g,h,H1,H2)とを用いて、べき乗算部102および剰余演算部104を利用して数95を計算する(ST7201)。
【0228】
【数95】
【0229】
次に、暗号化部103は、数95の計算結果(u,v)を、メッセージmの暗号文として、通信回線300を介して、受信者側装置200に送信する(ST7202)。
【0230】
3.復号化処理
受信者側装置200において、通信部206は、通信回線300を介して送信者側装置100より暗号文(u,v)を受け取り、これを記憶部205に記憶する。さて、復号化部203は、受信者Bよりの指示に従い、べき乗算部202および剰余演算部204を利用して、記憶部205に記憶されている受信者の秘密鍵sを用いて、記憶部205に記憶されている暗号文(u,v)から数96を満たす(m’,r1’,r2’)計算する(ST7300)。
【0231】
【数96】
【0232】
ここで、m’∈{0,1}k0、r1’∈{0,1}k1、r2’∈{0,1}k2であり、m’,r1’,r2’のビット長は既知とする。
【0233】
次に、復号化部203は、数96の計算結果(m’,r1’,r2’)を用いて、べき乗算部202および剰余演算部204を利用して、数97が成立するか否かを確認する(ST7301)。
【0234】
【数97】
【0235】
そして、復号化部203は、数97が成立することを確認できた場合のみ、復号結果m’を出力部207から出力する。一方、数97が成立することを確認できなかった場合は、復号結果m’の出力を拒否し、例えば代わりにエラーメッセージなどを出力部207から出力する(ST7302)。
【0236】
以上、本発明の第9実施形態について説明した。
【0237】
本実施形態では、上記の第7実施形態の場合と同様の方法により、群Z* p上のDiffie−Hellman決定問題の困難性を前提にして、公開鍵暗号への攻撃者がランダムオラクルを与えるランダム関数を選んだ場合でも安全な公開鍵暗号通信を実現できる。
【0238】
(第10実施形態)
次に、本発明の第10実施形態について説明する。本実施形態は、上記の第9実施形態を共通鍵暗号とのハイブリッド方式にしたものである。図14は、本発明の第10実施形態の動作手順を説明するための図である。
【0239】
1.鍵生成処理
受信者側装置200において、鍵生成部201は、受信者B(受信者側装置200の操作者)よりの指示に従い、受信者Bの秘密鍵sと、受信者Bの公開鍵(p,q,g,h,H1,H2,(E,D),F)とを、それぞれ数98、数99により生成する。そして、生成情報を記憶部205に記憶する(ST8100)。
【0240】
【数98】
【0241】
【数99】
【0242】
ここで、Gはq個の元からなる乗法群Zp *の部分群を意味し、|p|=kに対してk=k0+k1+k2とする。
【0243】
次に、受信者Bは、受信者側装置200の鍵生成部201が生成した情報(p,q,g,h)を含む公開情報を、送信者A(送信者側装置100の操作者)に知らせる(ST8101)。例えば、受信者側装置200において、鍵生成部201は、受信者Bよりの指示に従い、公開情報を、通信部206を介して送信者側装置100へ送信する。あるいは、受信者Bは、例えば第3者(公開情報管理機関)への登録などの周知の方法により、公開情報を公開する。この公開情報は、送信者側装置100の記憶部105に記憶される。なお、公開鍵に含まれるランダム関数H1、H2、共通鍵暗号アルゴリズム(E,D)、および、鍵生成関数Fは、所定のものが送信者側装置100および受信者側装置200に予め設定されているようにしてもよい。あるいは、ランダム関数H1、H2、共通鍵暗号アルゴリズム(E,D)、および、鍵生成関数Fを、公開鍵の一部としてではなく、パブリックドメイン(public domain)に置くようしてもかまわない。
【0244】
2.暗号化処理
送信者側装置100において、入力部107は、送信者Aよりメッセージmの入力を受け付ける(ST8200)。これを受けて、乱数生成部101は、メッセージmに対して、乱数z∈{0,1}k0、r1∈{0,1}k1、r2∈{0,1}k2を、z‖r1‖r2が群Gの元となるように選ぶ。なお、x∈Z* pが群Gの元であるか否かの判断は、例えば数100が成立するか否かを調べればよい。
【0245】
【数100】
【0246】
ここで、乱数z、r1、r2は、十分に大きな集合の中から一様に、つまり、どの値が選択されたか予測できないように、選択されるものとする。それから、暗号化部103は、この乱数zと、予め記憶部105に記憶しておいた鍵生成関数Fとを用いて、鍵K=F(z)を計算する。次に、暗号化部103は、この鍵Kと、乱数z、r1、r2と、予め記憶部105に記憶しておいた受信者Bの公開鍵(g,h,H1,H2,(E,D))とを用いて、べき乗算部102および剰余演算部104を利用して数101を計算する(ST8201)。
【0247】
【数101】
【0248】
ここで、EK(m)は、メッセージ文mを鍵Kにより共通鍵暗号化アルゴリズムEを用いて暗号化した結果を意味する。
【0249】
次に、暗号化部103は、数101の計算結果(u,v,w)を、メッセージmの暗号文として、通信回線300を介して、受信者側装置200に送信する(ST8202)。
【0250】
3.復号化処理
受信者側装置200において、通信部206は、通信回線300を介して送信者側装置100より暗号文(u,v,w)を受け取り、これを記憶部205に記憶する。さて、復号化部203は、受信者Bよりの指示に従い、べき乗算部202および剰余演算部204を利用して、記憶部205に記憶されている受信者の秘密鍵sを用いて、記憶部205に記憶されている暗号文(u,v,w)から数102を満たす(z’,r1’,r2’)計算する(ST8300)。
【0251】
【数102】
【0252】
ここで、z’∈{0,1}k0、r1’∈{0,1}k1、r2’∈{0,1}k2であり、z’,r1’,r2’のビット長は既知とする。
【0253】
次に、復号化部203は、数102の計算結果(z’,r1’,r2’)を用いて、べき乗算部202および剰余演算部204を利用して、数103が成立するか否かを確認する(ST8301)。
【0254】
【数103】
【0255】
そして、復号化部203は、数103が成立することを確認できた場合のみ、予め記憶部205に記憶されている鍵生成関数Fを用いて、鍵K’=F(z’)を計算する。それから、この鍵K’と、予め記憶部205に記憶されている共通鍵暗号アルゴリズム(E,D)とを用いて、数104を計算する。次に、復号化部203は、数104の計算結果m’を前記暗号文(u,v,w)のメッセージとして出力する。
【0256】
【数104】
【0257】
ここで、DK ’(w)は、暗号文wを鍵K’により共通鍵暗号化アルゴリズムDを用いて復号化した結果を意味する。
【0258】
一方、数103が成立することを確認できなかった場合は、数104の計算を拒否し、例えば代わりにエラーメッセージなどを出力部207から出力する(ST8302)。
【0259】
以上、本発明の第10実施形態について説明した。
【0260】
本実施形態では、上記の第9実施形態を共通鍵暗号とのハイブリッド方式にしたものであるため、上記の第9実施形態の効果に加えて、任意長のメッセージを暗号通信できるという利点を有する。
【0261】
以上、本発明の各実施の形態について説明した。
【0262】
なお、本発明は、上記の各実施形態に限定されるものではなく、その要旨の範囲内で数々の変形が可能である。
【0263】
例えば、上記の各実施形態では、送信者と受信者とが各々の装置を利用して暗号通信を行うという一般的な通信システムを例にとり説明したが、本発明は、様々なシステムに適用可能である。
【0264】
例えば、電子ショッピングシステムでは、送信者はユーザであり、送信者側装置はパソコンなどの計算機であり、受信者は小売店であり、受信者側装置はパソコンなどの計算機となる。この場合、ユーザの商品等の注文書は、共通鍵暗号で暗号化されることが多く、その際の暗号化鍵が本発明の公開鍵暗号通信方法により暗号化されて、受信者(小売店)側装置に送信される。
【0265】
また、電子メールシステムでは、各々の装置はパソコンなどの計算機であり、送信文(メール)は共通鍵暗号で暗号化されることが多い。この場合、共通鍵が本発明の公開鍵暗号通信方法により暗号化されて、受信者の計算機に送信される。
【0266】
その他にも、従来の公開鍵暗号が使われている様々なシステムに適用することが可能である。
【0267】
また、上記の各実施形態での各計算は、CPUがメモリ上にロードされたプログラムを実行することにより行われるものとして説明した。しかし、プログラムだけではない。いずれかの計算を行なう装置は、ハードウエア化された演算装置であって、他の演算装置やCPUとデータのやりとりを行うものでもよい。
【0268】
【発明の効果】
以上説明したように、本発明によれば、公開鍵暗号への攻撃者がランダムオラクルを与えるランダム関数を選んだ場合でも、安全であることが証明可能な公開鍵暗号を用いた暗号通信通信技術を提供できる。
【図面の簡単な説明】
【図1】本発明の各実施形態に共通する公開鍵暗号通信システムの概略構成図である。
【図2】図1に示す送信者側装置100の概略構成図である。
【図3】図1に示す受信者側装置200の概略構成図である。
【図4】送信者側装置100および受信者側装置200のハードウエア構成例を示す図である。
【図5】本発明の第1実施形態の動作手順を説明するための図である。
【図6】本発明の第2実施形態の動作手順を説明するための図である。
【図7】本発明の第3実施形態の動作手順を説明するための図である。
【図8】本発明の第4実施形態の動作手順を説明するための図である。
【図9】本発明の第5実施形態の動作手順を説明するための図である。
【図10】本発明の第6実施形態の動作手順を説明するための図である。
【図11】本発明の第7実施形態の動作手順を説明するための図である。
【図12】本発明の第8実施形態の動作手順を説明するための図である。
【図13】本発明の第9実施形態の動作手順を説明するための図である。
【図14】本発明の第10実施形態の動作手順を説明するための図である。
【符号の説明】
100…送信者側装置、101…乱数生成部、102…べき乗算部、103…暗号化部、104…剰余演算部、105…記憶部、106…通信部、107…入力部、200…受信者側装置、201…鍵生成部、202…べき乗算部、203…復号化部、204…剰余演算部、205…記憶部、206…通信部、207…出力部、300…通信回線、401…CPU、402…メモリ、403…外部記憶装置、404…記憶媒体、405…読取装置、406…入力装置、407…出力装置、408…通信装置、409…バス
Claims (18)
- 送信者側装置が、ランダム関数および受信者の公開鍵を用いてメッセージの暗号文を作成し、これを受信者側装置へ送信すると共に、前記受信者側装置が、前記ランダム関数および前記公開鍵と対の秘密鍵を用いて前記送信者側装置より受信した前記暗号文を復号化する公開鍵暗号通信方法であって、
前記送信者側装置は、
前記暗号文から前記ランダム関数への入力値に関する部分情報が秘匿されるように前記暗号文を作成し、前記暗号文を前記受信者側装置へ送信すること
を特徴とする公開鍵暗号通信方法。 - 請求項1記載の公開鍵暗号通信方法であって、
前記送信者側装置は、
前記暗号文から前記ランダム関数への入力値に関する部分情報が秘匿されるように、且つ、前記入力値を知っていることを証明する証明データを含むように、前記暗号文を作成し、
前記受信者側装置は、
前記送信者側装置より受信した前記暗号文に含まれている前記証明データの正当性を確認し、前記正当性が確認された場合にのみ前記暗号文の復号化結果を出力すること
を特徴とする公開鍵暗号通信方法。 - 請求項2記載の公開鍵暗号通信方法であって、
前記受信者側装置は、
前記証明データを含む前記暗号文と前記ランダム関数とを用いて、前記証明データの正当性を確認すること
を特徴とする公開鍵暗号通信方法。 - 請求項2記載の公開鍵暗号通信方法であって、
前記秘密鍵は、
前記公開鍵は、
前記送信者側装置は、
メッセージm∈{0,1}nに対して乱数r1∈{0,1}k1、r2∈{0,1}k2を選び、
前記受信者側装置は、
前記秘密鍵を用いて、
前記確認に成功した場合にのみ、m’を、
を特徴とする公開鍵暗号通信方法。 - 請求項2記載の公開鍵暗号通信方法であって、
前記秘密鍵は、
前記公開鍵は、
前記送信者側装置は、
メッセージm∈{0,1}nに対して乱数r1∈{0,1}k1、r2∈{0,1}k2を選び、
前記受信者側装置は、
前記秘密鍵を用いて、
前記確認に成功した場合にのみ、m’を
を特徴とする公開鍵暗号通信方法。 - 請求項1記載の公開鍵暗号通信方法であって、
前記送信者側装置は、
前記暗号文の作成に先立って、前記ランダム関数への入力値を十分に大きな集合の中から一様に選ぶこと
を特徴とする公開鍵暗号通信方法。 - 請求項6記載の公開鍵暗号通信方法であって、
前記送信者側装置は、
前記メッセージを知ることなく前記暗号文を作成することが困難となるように前記暗号文を作成すること
を特徴とする公開鍵暗号通信方法。 - 請求項6記載の公開鍵暗号通信方法であって、
前記秘密鍵は、
前記公開鍵は、
前記送信者側装置は、
メッセージm∈{0,1}k0に対して乱数r1∈{0,1}k1、r2∈{0,1}k2を選び、
前記受信者側装置は、
前記秘密鍵を用いて、
前記確認に成功した場合にのみ、m’を前記暗号文(u,v)のメッセージとすることで、前記暗号文の復号化結果を出力すること
を特徴とする公開鍵暗号通信方法。 - 請求項6記載の公開鍵暗号通信方法であって、
前記秘密鍵は、
前記公開鍵は、
前記送信者側装置は、
メッセージmに対して、乱数r0∈{0,1}k0、r1∈{0,1}k1、r2∈{0,1}k2を選び、K=F(z)として、
前記受信者側装置は、
前記秘密鍵を用いて、
前記確認に成功した場合にのみ、K’=F(z’)として、
を特徴とする公開鍵暗号通信方法。 - 請求項6記載の公開鍵暗号通信方法であって、
前記秘密鍵は、
前記公開鍵は、
前記送信者側装置は、
メッセージm∈{0,1}k0に対して、乱数r1∈{0,1}k1、r2∈{0,1}k2を選び、
前記受信者側装置は、
前記秘密鍵を用いて、
前記確認に成功した場合にのみ、m’を前記暗号文(u,v)のメッセージとすることで、前記暗号文の復号化結果を出力すること
を特徴とする公開鍵暗号通信方法。 - 請求項6記載の公開鍵暗号通信方法であって、
前記秘密鍵は、
前記公開鍵は、
前記送信者側装置は、
メッセージmに対して、乱数z∈{0,1}k0、r1∈{0,1}k1、r2∈{0,1}k2を、z‖r1‖r2が群Gの元となるように選び、K=F(z)として、
前記受信者側装置は、
前記秘密鍵を用いて、
前記確認に成功した場合にのみ、K’=F(z’)として、
を特徴とする公開鍵暗号通信方法。 - 送信者側装置が、ハッシュ関数および受信者の公開鍵を用いてメッセージの暗号文を作成し、これを受信者側装置へ送信すると共に、前記受信者側装置が、前記ハッシュ関数および前記公開鍵と対の秘密鍵を用いて前記送信者側装置より受信した前記暗号文を復号化する公開鍵暗号通信方法であって、
前記暗号文を作成するための用いた前記ハッシュ関数からの出力値と、前記暗号文から、前記メッセージを計算可能であること
を特徴とする公開鍵暗号通信方法。 - 請求項4、8または9記載の公開鍵暗号通信方法であって、
前記受信者側装置は、
前記公開鍵および前記秘密鍵を生成して、公開情報(g,h)を公開すること
を特徴とする公開鍵暗号通信方法。 - 請求項5、10または11記載の公開鍵暗号通信方法であって、
前記受信者側装置は、
前記公開鍵および前記秘密鍵を生成して、公開情報(p,g,h)を公開すること
を特徴とする公開鍵暗号通信方法。 - ランダム関数および受信者の公開鍵を用いてメッセージの暗号文を作成し、これを受信者側装置へ送信する送信者側装置であって、
前記暗号文から前記ランダム関数への入力値に関する部分情報が秘匿されるように前記暗号文を作成する手段と、
前記暗号文を前記受信者側装置へ送信する手段と、を有すること
を特徴とする送信者側装置。 - 請求項15記載の送信者側装置より受信した暗号文を、当該暗号文の作成に用いられたランダム関数および公開鍵と対の秘密鍵を用いて復号化する手段を有すること
を特徴とする受信者側装置。 - コンピュータで読み取り可能なプログラムであって、
前記プログラムは、前記コンピュータに実行されることにより、
ランダム関数および受信者の公開鍵を用いてメッセージの暗号文を作成し、これを受信者側装置へ送信する送信者側装置を、前記コンピュータ上に構築し、
前記送信者側装置は、
前記暗号文から前記ランダム関数への入力値に関する部分情報が秘匿されるように前記暗号文を作成する手段と、
前記暗号文を前記受信者側装置へ送信する手段と、を有すること
を特徴とするプログラム。 - コンピュータで読み取り可能なプログラムであって、
前記プログラムは、前記コンピュータに実行されることにより、
請求項17記載のプログラムによって実現された送信者側装置より受信した暗号文を、当該暗号文の作成に用いられたランダム関数および公開鍵と対の秘密鍵を用いて復号化する手段を有する受信者側装置を、前記コンピュータ上に構築すること
を特徴とするプログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003178295A JP2004126514A (ja) | 2002-08-06 | 2003-06-23 | 公開鍵暗号通信方法 |
EP03017861A EP1394981A3 (en) | 2002-08-06 | 2003-08-05 | Public key cryptograph communication method |
US10/636,403 US20040111602A1 (en) | 2002-08-06 | 2003-08-06 | Public key cryptograph communication method |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002229114 | 2002-08-06 | ||
JP2003178295A JP2004126514A (ja) | 2002-08-06 | 2003-06-23 | 公開鍵暗号通信方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004126514A true JP2004126514A (ja) | 2004-04-22 |
Family
ID=31497647
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003178295A Pending JP2004126514A (ja) | 2002-08-06 | 2003-06-23 | 公開鍵暗号通信方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20040111602A1 (ja) |
EP (1) | EP1394981A3 (ja) |
JP (1) | JP2004126514A (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7636940B2 (en) * | 2005-04-12 | 2009-12-22 | Seiko Epson Corporation | Private key protection for secure servers |
US20080046741A1 (en) * | 2006-08-14 | 2008-02-21 | Microsoft Corporation | Protecting signatures using collision-resistant hash functions |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4405829A (en) * | 1977-12-14 | 1983-09-20 | Massachusetts Institute Of Technology | Cryptographic communications system and method |
EP0482233B1 (en) * | 1990-10-24 | 1995-03-08 | Omnisec Ag | Cryptographic system allowing encrypted communication between users with a secure mutual cipher key determined without user interaction |
EP0804758B1 (en) * | 1994-07-29 | 2005-11-09 | Certicom Corp. | Elliptic curve encryption systems |
US5956404A (en) * | 1996-09-30 | 1999-09-21 | Schneier; Bruce | Digital signature with auditing bits |
US6697488B1 (en) * | 1998-08-26 | 2004-02-24 | International Business Machines Corporation | Practical non-malleable public-key cryptosystem |
EP1148675A4 (en) * | 1999-01-29 | 2005-05-04 | Hitachi Ltd | Cryptograph with public key and method of sharing a key |
KR100396740B1 (ko) * | 2000-10-17 | 2003-09-02 | 학교법인 한국정보통신학원 | 계산적 디피-헬만 가정에 기반하는 안전성 증명 가능한공개키 암호화 방법 |
FR2818471B1 (fr) * | 2000-12-18 | 2003-02-14 | Gemplus Card Int | Procede d'amelioration de la securite de schemas de chiffrement a clef publique |
JP4284867B2 (ja) * | 2001-01-18 | 2009-06-24 | 株式会社日立製作所 | 標準モデル上で適応的選択暗号文攻撃に対して安全な公開鍵暗号方法 |
GB2384144A (en) * | 2002-01-09 | 2003-07-16 | Hewlett Packard Co | A public key encryption system |
-
2003
- 2003-06-23 JP JP2003178295A patent/JP2004126514A/ja active Pending
- 2003-08-05 EP EP03017861A patent/EP1394981A3/en not_active Withdrawn
- 2003-08-06 US US10/636,403 patent/US20040111602A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20040111602A1 (en) | 2004-06-10 |
EP1394981A2 (en) | 2004-03-03 |
EP1394981A3 (en) | 2007-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Rodriguez-Henriquez et al. | A brief introduction to modern cryptography | |
US7711113B2 (en) | ID-based signature, encryption system and encryption method | |
EP1710952B1 (en) | Cryptographic Applications of the Cartier Pairing | |
CN104270249B (zh) | 一种从无证书环境到基于身份环境的签密方法 | |
US8589679B2 (en) | Identifier-based signcryption with two trusted authorities | |
Roy et al. | A survey on digital signatures and its applications | |
CN104301108B (zh) | 一种从基于身份环境到无证书环境的签密方法 | |
CN106713349B (zh) | 一种能抵抗选择密文攻击的群组间代理重加密方法 | |
Garg et al. | Comparison of asymmetric algorithms in cryptography | |
US7760872B2 (en) | Public key cryptographic methods and systems | |
Meier | The elgamal cryptosystem | |
US20050135610A1 (en) | Identifier-based signcryption | |
JP4485122B2 (ja) | 公開鍵暗号システム,署名システム,暗号通信システム,秘密鍵生成器,公開鍵生成器及びコンピュータプログラム | |
CN109412815B (zh) | 一种实现跨域安全通信的方法和系统 | |
JP2004246350A (ja) | 暗号化装置および復号化装置、並びにこれらを備えた暗号システム、暗号化方法および復号化方法 | |
JP2004126514A (ja) | 公開鍵暗号通信方法 | |
JP4612027B2 (ja) | 署名システム | |
Chen et al. | An escrow-free hierarchical identity-based signature scheme from composite order bilinear groups | |
JP2002023626A (ja) | 公開鍵暗号方法および公開鍵暗号を用いた通信システム | |
Rabah | Secure implementation of message digest, authentication and digital signature | |
JP4230162B2 (ja) | 公開鍵暗号通信方法 | |
JP2010161527A (ja) | 暗号通信システム、端末装置、秘密鍵生成方法及びプログラム | |
JP3870753B2 (ja) | 第3のオラクルを考慮した公開鍵暗号方法 | |
JP2002215019A (ja) | 標準モデル上で適応的選択暗号文攻撃に対して安全な公開鍵暗号方法 | |
Xie et al. | Self‐certified proxy convertible authenticated encryption: formal definitions and a provably secure scheme |