説明

暗号システム、鍵生成装置、受信者側装置、送信者側装置、プログラム及び暗号通信方法

【課題】 ランダムオラクルモデル上の公開鍵暗号方法で一定の安全性を満たすものをベースとして、標準計算機モデル上で安全な公開鍵暗号方法を与えることを目的とする。
【解決手段】 受信者側装置110の鍵情報生成部113は、セキュリティパラメータkの入力を受け付け、ランダム関数O,・・・,O(nは自然数)のオラクルアクセス(以下、ランダムオラクルと呼ぶ)の利用を前提とした第1暗号プロトコルΠ=(K,E,D)(但し、鍵生成手段Kはランダムオラクルに依存しないものとする)をベースとし、第1暗号プロトコルΠとは異なり、ランダムオラクルに依存しない第2暗号プロトコルPKE=(Kg,Enc,Dec)(iは、1≦i≦nなる自然数)を利用して、第三暗号プロトコルΠ’における暗号化鍵及び復号鍵を生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メッセージを暗号化して通信を行う暗号システムに関する。
【背景技術】
【0002】
暗号方法の一つである公開鍵暗号の安全性は、通常、ランダムオラクルモデル(例えば、非特許文献1参照)、または、標準計算機モデル上で与えられる。
【0003】
ランダムオラクルモデルでは、全てのパーティ(攻撃者を含む)がランダム関数へオラクルとしてアクセスすることが許されている(以下、このようなランダム関数をランダムオラクルと呼ぶ)。一般にランダムオラクルは現実世界では存在しないため、ランダムオラクルモデルはヒューリスティックなモデルであるが、効率的で安全証明可能な暗号プロトコルの設計が比較的容易であるメリットをもつため、ランダムオラクルモデル上で安全な暗号プロトコルは多く利用されている(例えば、非特許文献2参照)。現実のシステムにおいては、ランダムオラクルの部分は実用的なハッシュ関数に置き換えて利用されるため(非特許文献2参照)、実システムにおける安全性は完全には保証されない。
【0004】
非特許文献3には、ランダムオラクルの性質の一部を満たすハッシュ関数について記載されているが、確率的性質を持っているため、公開鍵暗号や署名などのシステムへの適用は知られていない。また、ランダムオラクルの実装に関するネガティブな結果として、ランダムオラクルモデル上では安全であるが、ランダムオラクルのいかなる関数への置き換えに対しても安全ではなくなる暗号プロトコルが存在することが知られている(例えば、非特許文献4参照)。
【0005】
【非特許文献1】M. Bellare and P. Rogaway. “Random Oracles are Practical”, October 20, 1995: A Paradigm for Designing Efficient Protocols, http://www.cse.ucsd.edu/ ~mihir/papers/ro.html
【非特許文献2】V. Shoup. ISO 18033-2: An Emerging Standard for Public-Key Encryption, December 6, 2004, http://www.shoup.net/iso/
【非特許文献3】R. Canetti. Towards realizingrandom oracles: “Hash functions that hide all partial information”, March 10, 2000, http://domino.research.ibm.com/comm/ research_projects.nsf/pages/security.Publications.html/
【非特許文献4】R. Canetti et al. "Random Oracle Methodology”, Revised, August 6, 2002, http://domino.research.ibm.com/comm/research_projects.nsf/pages/security.Publications.html/
【発明の開示】
【発明が解決しようとする課題】
【0006】
上述のように、公開鍵暗号の安全性は、通常、ランダムオラクルモデル、または、標準計算機モデル上で与えられ、従来技術では、ランダムオラクルモデル上での公開鍵暗号方法と、標準計算機モデル上での公開鍵暗号方法と、はそれぞれのモデルにおいて考察されるにとどまり、これらのモデル相互間において、安全性を考察することは行われていない。
【0007】
そこで、本発明では、ランダムオラクルモデル上の公開鍵暗号方法で一定の安全性を満たすものをベースとして、標準計算機モデル上で安全な公開鍵暗号方法を与えることを目的とする。
【課題を解決するための手段】
【0008】
ランダム関数O,・・・,O(nは自然数)のオラクルアクセス(以下、ランダムオラクルと呼ぶ)の利用を前提とした第1暗号プロトコルΠ=(K,E,D)(但し、鍵生成手段Kはランダムオラクルに依存しないものとする)をベースとし、第1暗号プロトコルΠとは異なり、ランダムオラクルに依存しない第2暗号プロトコルPKE=(Kg,Enc,Dec)(iは、1≦i≦nなる自然数)を利用して、第三暗号プロトコルΠ’における暗号化鍵及び復号鍵を生成する。
【0009】
例えば、本発明は、送信者側装置が暗号化鍵を用いてメッセージを暗号化して暗号文を生成し、受信者側装置が復号化鍵を用いて当該暗号文を復号する暗号システムであって、
前記受信者側装置の演算部が、
セキュリティパラメータkの入力を受け付ける処理と、
ランダム関数O,・・・,O(nは自然数)のオラクルアクセス(以下、ランダムオラクルと呼ぶ)の利用を前提とした第1暗号プロトコルΠ=(K,E,D)(但し、鍵生成手段Kはランダムオラクルに依存しないものとする)の鍵生成手段Kを用いて、
【0010】
【数1】

【0011】
により、第1暗号プロトコルΠの暗号化鍵pk及び復号化鍵skを作成する処理と、
前記第1暗号プロトコルΠとは異なり、ランダムオラクルに依存しない第2暗号プロトコルPKE=(Kg,Enc,Dec)(iは、1≦i≦nなる自然数)の鍵生成手段Kgを用いて、
【0012】
【数2】

【0013】
により、前記第2暗号方法プロトコルPKEの暗号化鍵PK及び復号化鍵SKを作成する処理と、
【0014】
【数3】

【0015】
により生成された暗号化鍵PK及び復号化鍵SKを第3暗号プロトコルΠ’の暗号化鍵及び復号化鍵とする処理(但し、Fiは、
【0016】
【数4】

【0017】
なる関数族とする。)と、を有する鍵生成処理を行い、
前記送信者側装置の演算部が、
メッセージ文Mの入力を受け付ける処理と、
【0018】
【数5】

【0019】
をランダムに選ぶ処理と、
前記暗号化鍵PK及び前記第2暗号プロトコルPKEの暗号化手段Encを用いて、
【0020】
【数6】

【0021】
を作成する処理と、
前記暗号化鍵PK及び前記第1暗号プロトコルΠの暗号化手段Eを用いて、
【0022】
【数7】

【0023】
を作成する処理と、
【0024】
【数8】

【0025】
を前記メッセージ文Mに対する暗号文Cとする処理と、を有する暗号化処理を行い、
前記受信者側装置の演算部が、
取得した前記暗号文C、前記復号化鍵SK、および、前記第2暗号プロトコルPKEの復号手段Decを用いて、
【0026】
【数9】

【0027】
を計算する処理と、
前記第1暗号プロトコルΠの復号手段Dを用いて、
【0028】
【数10】

【0029】
を計算する処理と、を有する復号化処理を行うこと、を特徴とする。
【発明の効果】
【0030】
以上のように、本発明によれば、ランダムオラクルモデル上の公開鍵暗号方法で一定の安全性を満たすものをベースとして、標準計算機モデル上で安全な公開鍵暗号方法を与えることができる。
【発明を実施するための最良の形態】
【0031】
以下の実施形態においては、暗号プロトコルを公開鍵暗号プロトコルとして利用し、公開鍵を暗号化鍵とし、秘密鍵を復号化鍵として利用する例を説明するが、このような態様に限定されるわけではない。
【0032】
<第1の実施形態>
本発明の第1の実施形態では、ランダムオラクルO,・・・,Oを利用する第1公開鍵暗号プロトコルΠ=(K,E,D)をベースにして、ランダムオラクルに依存しない第2公開鍵暗号プロトコルPKE=(Kg,Enc,Dec)(1≦i≦n)を利用して、ランダムオラクルに依存しない第3公開鍵暗号プロトコルΠ’=(K’,E’,D’)を与える方法について述べる。但し、第1公開鍵暗号プロトコルΠの鍵生成手段Kはランダムオラクルに依存しないものとする。
【0033】
図1は、本発明の第1の実施形態における暗号システム100の概略図である。図示するように、暗号システム100は、受信者側装置110と、送信者側装置150と、を備えており、これらはネットワーク190を介して相互に情報を送受信することができるようにされている。
【0034】
図2は、受信者側装置110の概略図である。図示するように、受信者側装置110は、情報を入力する入力部111と、論理演算、べき乗算、剰余演算、ハッシュ関数演算、ランダム関数演算を含む各種演算、および、受信者側装置110の各部の制御を行う演算部112と、記憶部130と、ネットワーク190を介して送信者側装置150と通信を行う通信部131と、情報を出力する出力部132と、を備える。
【0035】
演算部112は、暗号化鍵及び復号化鍵を生成する鍵情報生成部113と、復号化処理を行う復号化部117と、を有する。
【0036】
図3は、鍵情報生成部113の概略図である。図示するように、鍵情報生成部113は、第1鍵生成部114と、第2鍵生成部116と、を備える。
【0037】
第1鍵生成部114は、ランダムオラクルO,・・・,Oを利用する第1公開鍵暗号プロトコルΠ(鍵生成手段K,暗号化手段E,復号化手段D)により、公開鍵と秘密鍵を生成する。ここで、nは、第1公開鍵暗号プロトコルΠに依存して定まる自然数である。
【0038】
第2鍵生成部115は、ランダムオラクルに依存しない第1公開鍵暗号プロトコルΠとは別の第2公開鍵暗号プロトコルPKE(鍵生成手段Kg,暗号化手段Enc,復号化手段Dec)を利用して、公開鍵と秘密鍵を生成する。ここで、iは1≦i≦nを満たす自然数である。
【0039】
なお、第2鍵生成部115は、nに対応する鍵生成実行部116−1,・・・,116nを有し、iに対応する鍵生成実行部116−iを用いて公開鍵及び秘密鍵を生成する。
【0040】
図4は、復号化部117の概略図である。図示するように、復号化部117は、第1復号化部118と、第2復号化部119と、関数計算部121と、を備える。
【0041】
第1復号化部118は、第1公開鍵暗号プロトコルΠにより、当該第1公開鍵暗号プロトコルΠで生成された秘密鍵を用いて、復号化する処理を行う。
【0042】
第2復号化部119は、第2公開鍵暗号プロトコルPKEにより、当該第2公開鍵暗号プロトコルPKEの秘密鍵を用いて、復号化する処理を行う。
【0043】
なお、第2復号化部119は、n個の復号化実行部120−1,・・・,120nを有し、iに対応する復号化実行部120−iが、iに対応する秘密鍵を用いて復号化処理を行う。
【0044】
関数計算部121は、ハッシュ関数等の各種関数の計算を行う。
【0045】
以上に記載した受信者側装置110は、例えば、図5(コンピュータ900の概略図)に示すような、CPU(Central Processing Unit)901と、メモリ902と、HDD(Hard Disk Drive)等の外部記憶装置903と、CD−ROM(Compact Disk Read Only Memory)やDVD−ROM(Digital Versatile Disk Read Only Memory)等の可搬性を有する記憶媒体904に対して情報を読み書きする読書装置905と、キーボードやマウスなどの入力装置906と、ディスプレイなどの出力装置907と、通信ネットワークに接続するためのNIC(Network Interface Card)等の通信装置908と、を備えた一般的なコンピュータ900で実現できる。
【0046】
例えば、入力部111は、CPU901が入力装置906を利用することで実現可能であり、演算部112は、外部記憶装置903に記憶されている所定のプログラムをメモリ902にロードしてCPU901で実行することで実現可能であり、記憶部130は、CPU901がメモリ902又は外部記憶装置903を利用することにより実現可能であり、通信部131は、CPU901が通信装置908を利用することで実現可能であり、出力部132は、CPU901が出力装置907を利用することで実現可能である。
【0047】
この所定のプログラムは、読書装置905を介して記憶媒体904から、あるいは、通信装置908を介してネットワークから、外部記憶装置903にダウンロードされ、それから、メモリ902上にロードされてCPU901により実行されるようにしてもよい。また、読書装置905を介して記憶媒体904から、あるいは、通信装置908を介してネットワークから、メモリ902上に直接ロードされ、CPU901により実行されるようにしてもよい。
【0048】
図6は、送信者側装置150の概略図である。図示するように、送信者側装置150は、情報を入力する入力部151と、論理演算、べき乗算、剰余演算、ハッシュ関数演算を含む各種演算、および、送信者側装置150の各部の制御を行う演算部152と、記憶部160と、ネットワーク190を介して受信者側装置110と通信を行う通信部161と、情報を出力する出力部162と、を備える。
【0049】
演算部152は、乱数を生成する乱数生成部153と、暗号化処理を行う暗号化部154と、を備える。
【0050】
図7は、暗号化部154の概略図である。図示するように、暗号化部154は、第1暗号化部155と、第2暗号化部156と、関数計算部158と、を備える。
【0051】
第1暗号化部155は、第1公開鍵暗号プロトコルΠにより、当該第1公開鍵暗号プロトコルΠで生成された公開鍵を用いて、暗号化する処理を行う。
【0052】
第2暗号化部156は、第2公開鍵暗号プロトコルPKEにより、当該第2公開鍵暗号プロトコルPKEの公開鍵を用いて、暗号化する処理を行う。
【0053】
なお、第2暗号化部156は、n個の暗号化実行部157−1,・・・,157nを有し、iに対応する暗号化実行部157−iが、iに対応する公開鍵を用いて暗号化処理を行う。
【0054】
関数計算部158は、ハッシュ関数等の各種関数の計算を行う。
【0055】
以上に記載した送信者側装置150は、例えば、図5に示すような一般的なコンピュータ900で実現できる。
【0056】
例えば、入力部151は、CPU901が入力装置906を利用することで実現可能であり、演算部152は、外部記憶装置903に記憶されている所定のプログラムをメモリ902にロードしてCPU901で実行することで実現可能であり、記憶部160は、CPU901がメモリ902又は外部記憶装置903を利用することにより実現可能であり、通信部161は、CPU901が通信装置908を利用することで実現可能であり、出力部162は、CPU901が出力装置907を利用することで実現可能である。
【0057】
この所定のプログラムは、読書装置905を介して記憶媒体904から、あるいは、通信装置908を介してネットワークから、外部記憶装置903にダウンロードされ、それから、メモリ902上にロードされてCPU901により実行されるようにしてもよい。また、読書装置905を介して記憶媒体904から、あるいは、通信装置908を介してネットワークから、メモリ902上に直接ロードされ、CPU901により実行されるようにしてもよい。
【0058】
図8は、第一の実施形態における暗号処理を示すフロー図である。
【0059】
[受信者側装置110での鍵生成処理]
受信者側装置110は、入力部111を介して、1(kはセキュリティパラメータ)の入力を受け付ける(S10)。
【0060】
次に、鍵情報生成部113の第1鍵生成部114が、第1公開鍵暗号プロトコルΠの鍵生成手段Kを用いて、
【0061】
【数11】

【0062】
により公開鍵pk及び秘密鍵skを生成する(S11)。
【0063】
次に、鍵情報生成部113の第2鍵生成部115が、iに対応する鍵生成実行部116−iを用いて、
【0064】
【数12】

【0065】
により公開鍵PK及び秘密鍵SKを各々生成する(S12)。
【0066】
そして、鍵情報生成部113は、
【0067】
【数13】

【0068】
とする公開鍵PK及び秘密鍵SKを生成する(S13)。但し、F(1≦i≦n)は、
【0069】
【数14】

【0070】
なる関数族とする。なお、Nは自然数である。
【0071】
また、受信者側装置110の演算部112は、公開鍵PKを、ネットワーク190その他の搬送手段を介して取得できるように公開する(S14)。
【0072】
[送信者側装置150での暗号化処理]
まず、送信者側装置150の演算部152は、入力部151又は通信部161を介して、受信者側装置110より公開鍵PKを取得する(S15)。
【0073】
また、演算部152は、入力部151又は通信部161を介して、メッセージ文Mの入力を受け付ける(S16)。
【0074】
そして、演算部152の乱数生成部153が、
【0075】
【数15】

【0076】
をランダムに選ぶ(S17)。
【0077】
さらに、演算部152の第2暗号化部152が、iに対応する暗号化実行部157−iを用いて、公開鍵PKより、
【0078】
【数16】

【0079】
を生成する(S18)。
【0080】
さらに、演算部152の第1暗号化部155が、公開鍵pk及び第1公開鍵暗号プロトコルΠの暗号化手段Eを用いて、
【0081】
【数17】

【0082】
を生成する(S19)。ここで、第1暗号化部155は、ランダムオラクルO,・・・,Oの代わりに、関数計算部158を用いることにより、
【0083】
【数18】

【0084】
の関数による計算を行う。
【0085】
そして、送信者側装置150の演算部152は、
【0086】
【数19】

【0087】
をメッセージ文Mに対する暗号文として、通信部161又は出力部162を介して、受信者側装置110に出力する(S20)。
【0088】
[受信者側装置110での復号化処理]
受信者側装置110の演算部112は、入力部111又は通信部131を介して、送信者側装置150より暗号文Cを取得する(S21)。
【0089】
次に、復号化部117の第2復号化部119が、iに対応する復号化実行部120−iを用いて、秘密鍵SKiより、
【0090】
【数20】

【0091】
を計算する(S22)。
【0092】
さらに、復号化部117の第1復号化部118が、第1公開鍵暗号プロトコルΠの復号化手段Dを用いて、秘密鍵skより、
【0093】
【数21】

【0094】
を計算する(S23)。ここで、第1復号化部118は、ランダムオラクルO,・・・,Oの代わりに、関数計算部121を用いることにより、
【0095】
【数22】

【0096】
の関数による計算を行う。
【0097】
そして、受信者側装置110の演算部112は、M’を暗号文Cに対するメッセージ文として取得する。
【0098】
本第1の実施形態において、関数族Fが条件「いかなる攻撃者も、シードσ自体を得ることなく、真のランダム関数とfσiを区別することが難しい」を満たし、かつ、第1公開鍵暗号プロトコルΠが条件「任意の関数を利用した復号オラクルへアクセスすることができるが、ランダムオラクルへの直接的アクセスを許されない如何なる攻撃者に対しても識別不能性が満たされる」を満たすとき、第3公開鍵暗号プロトコルΠ’はIND−CCA2安全であることが証明される。
【0099】
なお、識別不能性やIND-CCA2安全の定義・詳細については、下記の非特許文献5に詳細に記載されている。
【0100】
非特許文献5:M. Bellare, A. Desai, D. Pointcheval and P. Rogaway. “Relations among notions of security for public-key encryption schemes”, June 2001, http://www.cs.ucsd.edu/users/ mihir/papers/relations.html
<第2の実施形態>
次に、第2の実施形態について説明する。本発明の第2の実施形態は、第1の実施形態と比較して、受信者側装置210及び送信者側装置250が異なっているため、以下、これらの異なっている点に関連する事項について説明する。
【0101】
図9は、受信者側装置210の概略図である。図示するように、受信者側装置210は、入力部111と、論理演算、べき乗算、剰余演算、ハッシュ関数演算、ランダム関数演算を含む各種演算、および、受信者側装置210の各部の制御を行う演算部212と、記憶部130と、ネットワーク190を介して送信者側装置250と通信を行う通信部131と、情報を出力する出力部132と、を備え、第一の実施形態と比較して演算部212が異なるため、以下、演算部212について説明する。
【0102】
演算部212は、暗号化鍵及び復号化鍵を生成する鍵情報生成部213と、復号化処理を行う復号化部217と、を有する。
【0103】
図10は、鍵情報生成部213の概略図である。図示するように、鍵情報生成部213は、第1落とし戸付き一方向性関数生成部214と、第2落とし戸付き一方向性関数生成部215と、を備える。
【0104】
第1落とし戸付き一方向性関数生成部214は、一方向性関数と落とし戸の対を生成する。
【0105】
第2落とし戸付き一方向性関数生成部215は、第1落とし戸付き一方向性関数生成部214とは異なる一方向性関数と落とし戸の対を生成する。
【0106】
図11は、復号化部217の概略図である。図示するように、復号化部217は、第1復号化部218と、第2復号化部219と、関数計算部220と、検査部221と、を備える。
【0107】
第1復号化部218は、第1落とし戸付き一方向性関数生成部214で生成された落とし戸π−1を用いた演算を行う。
【0108】
第2復号化部219は、第2落とし戸付き一方向性関数生成部215で生成された落とし戸π−1を用いた演算を行う。
【0109】
関数計算部220は、ハッシュ関数等の各種関数の計算を行う。
【0110】
検査部221は、復号化部217で復号されたメッセージの検証を行う。
【0111】
図12は、送信者側装置150の概略図である。図示するように、送信者側装置250は、情報を入力する入力部151と、論理演算、べき乗算、剰余演算、ハッシュ関数演算を含む各種演算、および、送信者側装置250の各部の制御を行う演算部252と、記憶部160と、ネットワーク190を介して受信者側装置110と通信を行う通信部161と、情報を出力する出力部162と、を備え、第1の実施形態と比較して、演算部252が異なっているため、以下、演算部252に関連する事項について説明する。
【0112】
演算部252は、乱数を生成する乱数生成部253と、暗号化処理を行う暗号化部254と、を備える。
【0113】
図13は、暗号化部254の概略図である。図示するように、暗号化部254は、第1暗号化部255と、第2暗号化部256と、関数計算部258と、を備える。
【0114】
第1暗号化部155は、受信者側装置210の第1落とし戸付き一方向性関数生成部214で生成された一方向性関数πを用いた演算を行う。
【0115】
第2暗号化部156は、受信者側装置210の第2落とし戸付き一方向性関数生成部215で生成された一方向性関数πを用いた演算を行う。
【0116】
関数計算部257は、ハッシュ関数等の各種関数の計算を行う。
【0117】
図14は、第2の実施形態における暗号処理を示すフロー図である。
【0118】
[受信者側装置210での鍵生成処理]
受信者側装置210は、入力部111を介して、1(kはセキュリティパラメータ)の入力を受け付ける(S30)。
【0119】
次に、鍵情報生成部213の第1落とし戸付き一方向性関数生成部214及び第2落とし戸付き一方向性関数生成部215が、
【0120】
【数23】

【0121】
により一方向性関数と落とし戸の対(π,π−1)、(π,π−1)を生成する(S31)。ここで、Gは確率的アルゴリズムである。
【0122】
そして、鍵情報生成部213は、
【0123】
【数24】

【0124】
とする公開鍵PK及び秘密鍵SKを生成する(S32)。但し、Rは、有限集合、F(1≦i≦2)は、
【0125】
【数25】

【0126】
なる関数族とする。なお、Nは自然数である。
【0127】
また、受信者側装置210の演算部212は、公開鍵PKを、ネットワーク190その他の搬送手段を介して取得できるように公開する(S33)。
【0128】
[送信者側装置250での暗号化処理]
まず、送信者側装置250の演算部252は、入力部151又は通信部161を介して、受信者側装置310より公開鍵PKを取得する(S34)。
【0129】
また、演算部252は、入力部251又は通信部261を介して、メッセージ文Mの入力を受け付ける(S35)。
【0130】
そして、演算部252の乱数生成部253が、
【0131】
【数26】

【0132】
をランダムに選ぶ(S36)。
【0133】
さらに、演算部252の第1暗号化部255及び第2暗号化部256が、公開鍵PKの一方向性関数π、πをそれぞれ用いて、
【0134】
【数27】

【0135】
を生成する(S37)。
【0136】
さらに、暗号化部254が、関数計算部257を用いて、
【0137】
【数28】

【0138】
を生成する(S38)。
【0139】
そして、送信者側装置250の演算部252は、
【0140】
【数29】

【0141】
をメッセージ文Mに対する暗号文として、通信部161又は出力部162を介して、受信者側装置210に出力する(S39)。
【0142】
[受信者側装置210での復号化処理]
受信者側装置210の演算部212は、入力部111又は通信部131を介して、送信者側装置250より暗号文Cを取得する(S40)。
【0143】
次に、復号化部217の第1復号化部218及び第2復号化部119が、秘密鍵SKの落とし戸π−1、π−1をそれぞれ用いて、
【0144】
【数30】

【0145】
を計算する(S41)。
【0146】
さらに、復号化部217が関数計算部220を用いて、
【0147】
【数31】

【0148】
を計算する(S42)。
【0149】
また、復号化部217が関数計算部220を用いて、
【0150】
【数32】

【0151】
を計算する(S43)。
【0152】
そして、復号化部217の検査部221が、ステップS43で計算したvを検査する(S44)。そして、検査に成功すれば、演算部212は、ステップS31で算出されたMを暗号文Cに対するメッセージ文として取得する。
【0153】
第二の実施形態の方法は、非特許文献1に記載の公開鍵暗号方法をベースに変形した後、第一の実施形態の方法を適用した。本発明の方法によると、関数族F(1≦i≦2)が条件「いかなる攻撃者も、シードσ自体を得ることなく、真のランダム関数とfσiを区別することが難しい」を満たすとき、上記公開鍵暗号はIND−CCA2安全であることが証明される。
【0154】
以上の第一の実施形態及び第二の実施形態では、受信者側装置110、210及び送信者側装置150、250の間で暗号通信を行う例を示したが、このような態様に限定されるわけではなく、暗号通信をベースとした、電子ショッピングシステム、電子メールシステム、会員用情報配信システム、コンテンツ配信システム、の他、ファイル暗号システムなど様々なシステムに適用することが可能である。
【0155】
また、第一の実施形態及び第二の実施形態における各計算は、CPUがメモリ内の各プログラムを実行することにより行われる他、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積ロジックICによりハード的に実行されるものであってもよいし、あるいは、DSP(Digital Signal Processor)等の計算機によりソフトウェア的に実行されるものであってもよい。
【0156】
さらに、上述した実施形態においては、受信者側装置110、210で公開鍵及び秘密鍵を生成したが、このような態様に限定されず、他の装置(例えば、鍵生成装置)の演算部が、入力部を介して、1(kはセキュリティパラメータ)の入力を受け付けて、第3公開鍵暗号プロトコルΠ’における公開鍵PK及び秘密鍵SKを生成し、公開鍵PKを送信者側装置150、250に出力し(公開し)、秘密鍵SKを受信者側装置110、210に(安全な方法で)出力するようにしてもよい。
【図面の簡単な説明】
【0157】
【図1】暗号システムの概略図。
【図2】受信者側装置の概略図。
【図3】鍵情報生成部の概略図。
【図4】復号化部の概略図。
【図5】コンピュータの概略図。
【図6】送信者側装置の概略図。
【図7】暗号化部の概略図。
【図8】暗号通信を示すフロー図。
【図9】受信者側装置の概略図。
【図10】鍵情報生成部の概略図。
【図11】復号化部の概略図。
【図12】送信者側装置の概略図。
【図13】暗号化部の概略図。
【図14】暗号通信を示すフロー図。
【符号の説明】
【0158】
100 暗号システム
110、210 受信者側装置
111 入力部
112、212 演算部
113、213 鍵情報生成部
117、217 復号化部
130 記憶部
131 通信部
132 出力部
150、250 送信者側装置
151 入力部
152、252 演算部
153、253 乱数生成部
154、254 暗号化部
160 記憶部
161 通信部
162 出力部

【特許請求の範囲】
【請求項1】
送信者側装置が暗号化鍵を用いてメッセージを暗号化して暗号文を生成し、受信者側装置が復号化鍵を用いて当該暗号文を復号する暗号システムであって、
前記受信者側装置の演算部が、
セキュリティパラメータkの入力を受け付ける処理と、
ランダム関数O,・・・,O(nは自然数)のオラクルアクセス(以下、ランダムオラクルと呼ぶ)の利用を前提とした第1暗号プロトコルΠ=(K,E,D)(但し、鍵生成手段Kはランダムオラクルに依存しないものとする)の鍵生成手段Kを用いて、
【数1】

により、第1暗号プロトコルΠの暗号化鍵pk及び復号化鍵skを作成する処理と、
前記第1暗号プロトコルΠとは異なり、ランダムオラクルに依存しない第2暗号プロトコルPKE=(Kg,Enc,Dec)(iは、1≦i≦nなる自然数)の鍵生成手段Kgを用いて、
【数2】

により、前記第2暗号方法プロトコルPKEの暗号化鍵PK及び復号化鍵SKを作成する処理と、
【数3】

により生成された暗号化鍵PK及び復号化鍵SKを第3暗号プロトコルΠ’の暗号化鍵及び復号化鍵とする処理(但し、Fiは、
【数4】

なる関数族とする。)と、を有する鍵生成処理を行い、
前記送信者側装置の演算部が、
メッセージ文Mの入力を受け付ける処理と、
【数5】

をランダムに選ぶ処理と、
前記暗号化鍵PK及び前記第2暗号プロトコルPKEの暗号化手段Encを用いて、
【数6】

を作成する処理と、
前記暗号化鍵PK及び前記第1暗号プロトコルΠの暗号化手段Eを用いて、
【数7】

を作成する処理と、
【数8】

を前記メッセージ文Mに対する暗号文Cとする処理と、を有する暗号化処理を行い、
前記受信者側装置の演算部が、
取得した前記暗号文C、前記復号化鍵SK、および、前記第2暗号プロトコルPKEの復号手段Decを用いて、
【数9】

を計算する処理と、
前記第1暗号プロトコルΠの復号手段Dを用いて、
【数10】

を計算する処理と、を有する復号化処理を行うこと、
を特徴とする暗号システム。
【請求項2】
送信者側装置が暗号化鍵を用いてメッセージを暗号化して暗号文を生成し、受信者側装置が復号化鍵を用いて当該暗号文を復号する暗号システムであって、
前記受信者側装置の演算部が、
セキュリティパラメータkの入力を受け付ける処理と、
落し戸付き一方向性関数生成手段G1,G2を用いて、
【数11】

により一方向性関数および落し戸の対(π−1)、(π−1)を作成する処理と、
【数12】

により生成された暗号化鍵PK及び復号化鍵SKを暗号プロトコルΠ’の暗号化鍵及び復号化鍵とする処理(但し、Rは有限集合、F、Fは、
【数13】

なる関数族とする。)と、を有する鍵生成処理を行い、
送信者側装置の演算部が、
メッセージ文Mの入力を受け付ける処理と、
【数14】

をランダムに選ぶ処理と、
前記暗号化鍵PKを用いて、
【数15】

を計算する処理と、
前記暗号化鍵PKを用いて、
【数16】

を計算する処理と、
【数17】

を前記メッセージ文Mに対する暗号文Cとする処理と、を有する暗号化処理を行い、
前記受信者側装置の演算部が、
前記暗号文C及び前記復号化鍵SKを用いて、
【数18】

を計算する処理と、
前記暗号文C及び前記復号化鍵SKを用いて、
【数19】

を計算する処理と、を有する復号化処理を行うこと、
を特徴とする暗号システム。
【請求項3】
請求項2に記載の暗号システムであって、
前記受信者側装置の演算部は、
【数20】

が成立すれば、前記M’を暗号文Cに対するメッセージ文とすること、
を特徴とする暗号システム。
【請求項4】
請求項1又は2に記載の暗号システムであって、
鍵生成装置を備え、
前記鍵生成処理を、前記受信者側装置に代わって、前記鍵生成装置の演算部が行うこと、
を特徴とする暗号システム。
【請求項5】
暗号化鍵及び復号化鍵を生成する鍵生成装置であって、
セキュリティパラメータkの入力を受け付ける処理と、
ランダム関数O,・・・,O(nは自然数)のオラクルアクセス(以下、ランダムオラクルと呼ぶ)の利用を前提とした第1暗号プロトコルΠ=(K,E,D)(但し、鍵生成手段Kはランダムオラクルに依存しないものとする)の鍵生成手段Kを用いて、
【数21】

により、第1暗号プロトコルΠの暗号化鍵pk及び復号化鍵skを作成する処理と、
前記第1暗号プロトコルΠとは異なり、ランダムオラクルに依存しない第2暗号プロトコルPKE=(Kg,Enc,Dec)(iは、1≦i≦nなる自然数)の鍵生成手段Kgを用いて、
【数22】

により、前記第2暗号方法プロトコルPKEの暗号化鍵PK及び復号化鍵SKを作成する処理と、
【数23】

により生成された暗号化鍵PK及び復号化鍵SKを第3暗号プロトコルΠ’の暗号化鍵及び復号化鍵とする処理(但し、Fiは、
【数24】

なる関数族とする。)と、を行う演算部を備えること、
を特徴とする鍵生成装置。
【請求項6】
暗号化鍵及び復号化鍵を生成する鍵生成装置であって、
セキュリティパラメータkの入力を受け付ける処理と、
落し戸付き一方向性関数生成手段G1,G2を用いて、
【数25】

により一方向性関数および落し戸の対(π−1)、(π−1)を作成する処理と、
【数26】

により生成された暗号化鍵PK及び復号化鍵SKを暗号プロトコルΠ’の暗号化鍵及び復号化鍵とする処理(但し、Rは有限集合、F、Fは、
【数27】

なる関数族とする。)と、を行う演算部を備えること、
を特徴とする鍵生成装置。
【請求項7】
送信者側装置が暗号化鍵を用いてメッセージを暗号化した暗号文を受信し、復号する受信者側装置であって、
セキュリティパラメータkの入力を受け付ける処理と、
ランダム関数O,・・・,O(nは自然数)のオラクルアクセス(以下、ランダムオラクルと呼ぶ)の利用を前提とした第1暗号プロトコルΠ=(K,E,D)(但し、鍵生成手段Kはランダムオラクルに依存しないものとする)の鍵生成手段Kを用いて、
【数28】

により、第1暗号プロトコルΠの暗号化鍵pk及び復号化鍵skを作成する処理と、
前記第1暗号プロトコルΠとは異なり、ランダムオラクルに依存しない第2暗号プロトコルPKE=(Kg,Enc,Dec)(iは、1≦i≦nなる自然数)の鍵生成手段Kgを用いて、
【数29】

により、前記第2暗号方法プロトコルPKEの暗号化鍵PK及び復号化鍵SKを作成する処理と、
【数30】

により生成された暗号化鍵PK及び復号化鍵SKを第3暗号プロトコルΠ’の暗号化鍵及び復号化鍵とする処理(但し、Fiは、
【数31】

なる関数族とする。)と、
前記送信者側装置において、前記暗号化鍵PK、前記第2暗号プロトコルPKEの暗号化手段Enc、および、前記第1暗号プロトコルΠの暗号化手段Eを用いて、メッセージ文Mから下記の(32)〜(35)式を用いて生成された暗号文Cを取得する処理と、
【数32】

【数33】

【数34】

【数35】

取得した前記暗号文C、前記復号化鍵SK、および、前記第2暗号プロトコルPKEの復号手段Decを用いて、
【数36】

を計算する処理と、
前記第1暗号プロトコルΠの復号手段Dを用いて、
【数37】

を計算する処理と、を行う演算部を備えること、
を特徴とする受信者側装置。
【請求項8】
送信者側装置が暗号化鍵を用いてメッセージを暗号化した暗号文を受信し、復号する受信者側装置であって、
セキュリティパラメータkの入力を受け付ける処理と、
落し戸付き一方向性関数生成手段G1,G2を用いて、
【数38】

により一方向性関数および落し戸の対(π−1)、(π−1)を作成する処理と、
【数39】

により生成された暗号化鍵PK及び復号化鍵SKを暗号プロトコルΠ’の暗号化鍵及び復号化鍵とする処理(但し、Rは有限集合、F、Fは、
【数40】

なる関数族とする。)と、を行い、
送信者側装置において、前記暗号化鍵PK、前記第2暗号プロトコルPKEの暗号化手段Enc、および、前記第1暗号プロトコルΠの暗号化手段Eを用いて、メッセージ文Mから下記の(41)〜(44)式を用いて生成された暗号文Cを取得する処理と、
【数41】

【数42】

【数43】

【数44】

取得した前記暗号文C及び前記復号化鍵SKを用いて、
【数45】

を計算する処理と、
取得した前記暗号文C及び前記復号化鍵SKを用いて、
【数46】

を計算する処理と、を行う演算部を備えること、
を特徴とする受信者側装置。
【請求項9】
請求項8に記載の受信者側装置であって、
前記演算部は、
【数47】

が成立すれば、前記M’を暗号文Cに対するメッセージ文とすること、
を特徴とする受信者側装置。
【請求項10】
暗号化鍵を用いてメッセージを暗号化する送信者側装置であって、
セキュリティパラメータkの入力を受け付け、ランダム関数O,・・・,O(nは自然数)のオラクルアクセス(以下、ランダムオラクルと呼ぶ)の利用を前提とした第1暗号プロトコルΠ=(K,E,D)(但し、鍵生成手段Kはランダムオラクルに依存しないものとする)の鍵生成手段K、および、前記第1暗号プロトコルΠとは異なり、ランダムオラクルに依存しない第2暗号プロトコルPKE=(Kg,Enc,Dec)(iは、1≦i≦nなる自然数)の鍵生成手段Kgを用いて、下記の(48)〜(51)式により生成された暗号化鍵PKを取得する処理と、
【数48】

【数49】

【数50】

【数51】

メッセージ文Mの入力を受け付ける処理と、
【数52】

をランダムに選ぶ処理と、
前記暗号化鍵PK及び前記第2暗号プロトコルPKEの暗号化手段Encを用いて、
【数53】

を作成する処理と、
前記暗号化鍵PK及び前記第1暗号プロトコルΠの暗号化手段Eを用いて、
【数54】

を作成する処理と、
【数55】

を前記メッセージ文Mに対する暗号文Cとする処理と、を行う演算部を備えること、
を特徴とする送信者側装置。
【請求項11】
暗号化鍵を用いてメッセージを暗号化する送信者側装置であって、
セキュリティパラメータkの入力を受け付け、落し戸付き一方向性関数生成手段G1,G2、および、有限集合Rを用いて、下記の(56)〜(58)式により生成された暗号化鍵PKを取得する処理と、
【数56】

【数57】

【数58】

メッセージ文Mの入力を受け付ける処理と、
【数59】

をランダムに選ぶ処理と、
前記暗号化鍵PKを用いて、
【数60】

を計算する処理と、
前記暗号化鍵PKを用いて、
【数61】

を計算する処理と、
【数62】

を前記メッセージ文Mに対する暗号文Cとする処理と、を行う演算部を備えること、
を特徴とする送信者側装置。
【請求項12】
コンピュータを、
暗号化鍵及び復号化鍵を生成する鍵生成装置として機能させるプログラムであって、
前記コンピュータを、
セキュリティパラメータkの入力を受け付ける処理と、
ランダム関数O,・・・,O(nは自然数)のオラクルアクセス(以下、ランダムオラクルと呼ぶ)の利用を前提とした第1暗号プロトコルΠ=(K,E,D)(但し、鍵生成手段Kはランダムオラクルに依存しないものとする)の鍵生成手段Kを用いて、
【数63】

により、第1暗号プロトコルΠの暗号化鍵pk及び復号化鍵skを作成する処理と、
前記第1暗号プロトコルΠとは異なり、ランダムオラクルに依存しない第2暗号プロトコルPKE=(Kg,Enc,Dec)(iは、1≦i≦nなる自然数)の鍵生成手段Kgを用いて、
【数64】

により、前記第2暗号方法プロトコルPKEの暗号化鍵PK及び復号化鍵SKを作成する処理と、
【数65】

により生成された暗号化鍵PK及び復号化鍵SKを第3暗号プロトコルΠ’の暗号化鍵及び復号化鍵とする処理(但し、Fiは、
【数66】

なる関数族とする。)と、を行う演算手段として機能させること、
を特徴とするプログラム。
【請求項13】
コンピュータを、
暗号化鍵及び復号化鍵を生成する鍵生成装置として機能させるプログラムであって、
前記コンピュータを、
セキュリティパラメータkの入力を受け付ける処理と、
落し戸付き一方向性関数生成手段G1,G2を用いて、
【数67】

により一方向性関数および落し戸の対(π−1)、(π−1)を作成する処理と、
【数68】

により生成された暗号化鍵PK及び復号化鍵SKを暗号プロトコルΠ’の暗号化鍵及び復号化鍵とする処理(但し、Rは有限集合、F、Fは、
【数69】

なる関数族とする。)と、を行う演算手段として機能させること、
を特徴とするプログラム。
【請求項14】
コンピュータを、
送信者側装置が暗号化鍵を用いてメッセージを暗号化した暗号文を受信し、復号する受信者側装置として機能させるプログラムであって、
前記コンピュータを、
セキュリティパラメータkの入力を受け付ける処理と、
ランダム関数O,・・・,O(nは自然数)のオラクルアクセス(以下、ランダムオラクルと呼ぶ)の利用を前提とした第1暗号プロトコルΠ=(K,E,D)(但し、鍵生成手段Kはランダムオラクルに依存しないものとする)の鍵生成手段Kを用いて、
【数70】

により、第1暗号プロトコルΠの暗号化鍵pk及び復号化鍵skを作成する処理と、
前記第1暗号プロトコルΠとは異なり、ランダムオラクルに依存しない第2暗号プロトコルPKE=(Kg,Enc,Dec)(iは、1≦i≦nなる自然数)の鍵生成手段Kgを用いて、
【数71】

により、前記第2暗号プロトコルPKEの暗号化鍵PK及び復号化鍵SKを作成する処理と、
【数72】

により生成された暗号化鍵PK及び復号化鍵SKを第3暗号プロトコルΠ’の暗号化鍵及び復号化鍵とする処理(但し、Fiは、
【数73】

なる関数族とする。)と、
前記送信者側装置において、前記暗号化鍵PK、前記第2暗号プロトコルPKEの暗号化手段Enc、および、前記第1暗号プロトコルΠの暗号化手段Eを用いて、メッセージ文Mから下記の(74)〜(77)式を用いて生成された暗号文Cを取得する処理と、
【数74】

【数75】

【数76】

【数77】

取得した前記暗号文C、前記復号化鍵SK、および、前記第2暗号プロトコルPKEの復号手段Decを用いて、
【数78】

を計算する処理と、
前記第1暗号プロトコルΠの復号手段Dを用いて、
【数79】

を計算する処理と、を行う演算手段として機能させること、
を特徴とするプログラム。
【請求項15】
コンピュータを、
送信者側装置が暗号化鍵を用いてメッセージを暗号化した暗号文を受信し、復号する受信者側装置として機能させるプログラムであって、
前記コンピュータを、
セキュリティパラメータkの入力を受け付ける処理と、
落し戸付き一方向性関数生成手段G1,G2を用いて、
【数80】

により一方向性関数および落し戸の対(π−1)、(π−1)を作成する処理と、
【数81】

により生成された暗号化鍵PK及び復号化鍵SKを暗号プロトコルΠ’の暗号化鍵及び復号化鍵とする処理(但し、Rは有限集合、F、Fは、
【数82】

なる関数族とする。)と、を行い、
送信者側装置において、前記暗号化鍵PK、前記第2暗号プロトコルPKEの暗号化手段Enc、および、前記第1暗号プロトコルΠの暗号化手段Eを用いて、メッセージ文Mから下記の(83)〜(86)式を用いて生成された暗号文Cを取得する処理と、
【数83】

【数84】

【数85】

【数86】

取得した前記暗号文C及び前記復号化鍵SKを用いて、
【数87】

を計算する処理と、
取得した前記暗号文C及び前記復号化鍵SKを用いて、
【数88】

を計算する処理と、を行う演算手段として機能させること、
を特徴とするプログラム。
【請求項16】
請求項15に記載のプログラムであって、
前記演算手段に、
【数89】

が成立すれば、前記M’を暗号文Cに対するメッセージ文とさせること、
を特徴とするプログラム。
【請求項17】
コンピュータを、
暗号化鍵を用いてメッセージを暗号化して生成した暗号文を受信者側装置に送信する送信者側装置として機能させるプログラムであって、
前記コンピュータを、
前記受信者側装置において、セキュリティパラメータkの入力を受け付け、ランダム関数O,・・・,O(nは自然数)のオラクルアクセス(以下、ランダムオラクルと呼ぶ)の利用を前提とした第1暗号プロトコルΠ=(K,E,D)(但し、鍵生成手段Kはランダムオラクルに依存しないものとする)の鍵生成手段K、および、前記第1暗号プロトコルΠとは異なり、ランダムオラクルに依存しない第2暗号プロトコルPKE=(Kg,Enc,Dec)(iは、1≦i≦nなる自然数)の鍵生成手段Kgを用いて、下記の(90)〜(93)式により生成された暗号化鍵PKを取得する処理と、
【数90】

【数91】

【数92】

【数93】

メッセージ文Mの入力を受け付ける処理と、
【数94】

をランダムに選ぶ処理と、
前記暗号化鍵PK及び前記第2暗号プロトコルPKEの暗号化手段Encを用いて、
【数95】

を作成する処理と、
前記暗号化鍵PK及び前記第1暗号プロトコルΠの暗号化手段Eを用いて、
【数96】

を作成する処理と、
【数97】

を前記メッセージ文Mに対する暗号文Cとする処理と、を行う演算手段として機能させること、
を特徴とするプログラム。
【請求項18】
コンピュータを、
暗号化鍵を用いてメッセージを暗号化する送信者側装置として機能させるプログラムであって、
前記コンピュータを、
セキュリティパラメータkの入力を受け付け、落し戸付き一方向性関数生成手段G1,G2、および、有限集合Rを用いて、下記の(98)〜(100)式により生成された暗号化鍵PKを取得する処理と、
【数98】

【数99】

【数100】

メッセージ文Mの入力を受け付ける処理と、
【数101】

をランダムに選ぶ処理と、
前記暗号化鍵PKを用いて、
【数102】

を計算する処理と、
前記暗号化鍵PKを用いて、
【数103】

を計算する処理と、
【数104】

を前記メッセージ文Mに対する暗号文Cとする処理と、を行う演算手段として機能させること、
を特徴とするプログラム。
【請求項19】
送信者側装置が暗号化鍵を用いてメッセージを暗号化して暗号文を生成し、受信者側装置が復号化鍵を用いて当該暗号文を復号する暗号システムにおける暗号通信方法であって、
前記受信者側装置の演算部が、セキュリティパラメータkの入力を受け付ける処理を行う過程と、
前記受信者側装置の演算部が、ランダム関数O,・・・,O(nは自然数)のオラクルアクセス(以下、ランダムオラクルと呼ぶ)の利用を前提とした第1暗号プロトコルΠ=(K,E,D)(但し、鍵生成手段Kはランダムオラクルに依存しないものとする)の鍵生成手段Kを用いて、
【数105】

により、第1暗号プロトコルΠの暗号化鍵pk及び復号化鍵skを作成する処理を行う過程と、
前記受信者側装置の演算部が、前記第1暗号プロトコルΠとは異なり、ランダムオラクルに依存しない第2暗号プロトコルPKE=(Kg,Enc,Dec)(iは、1≦i≦nなる自然数)の鍵生成手段Kgを用いて、
【数106】

により、前記第2暗号方法プロトコルPKEの暗号化鍵PK及び復号化鍵SKを作成する処理を行う過程と、
前記受信者側装置の演算部が、
【数107】

により生成された暗号化鍵PK及び復号化鍵SKを第3暗号プロトコルΠ’の暗号化鍵及び復号化鍵とする処理を行う過程(但し、Fiは、
【数108】

なる関数族とする。)と、
前記送信者側装置の演算部が、メッセージ文Mの入力を受け付ける処理を行う過程と、
前記送信者側装置の演算部が、
【数109】

をランダムに選ぶ処理を行う過程と、
前記送信者側装置の演算部が、前記暗号化鍵PK及び前記第2暗号プロトコルPKEの暗号化手段Encを用いて、
【数110】

を作成する処理を行う過程と、
前記送信者側装置の演算部が、前記暗号化鍵PK及び前記第1暗号プロトコルΠの暗号化手段Eを用いて、
【数111】

を作成する処理を行う過程と、
前記送信者側装置の演算部が、
【数112】

を前記メッセージ文Mに対する暗号文Cとする処理を行う過程と、
前記受信者側装置の演算部が、取得した前記暗号文C、前記復号化鍵SK、および、前記第2暗号プロトコルPKEの復号手段Decを用いて、
【数113】

を計算する処理を行う過程と、
前記受信者側装置の演算部が、前記第1暗号プロトコルΠの復号手段Dを用いて、
【数114】

を計算する処理を行う過程と、を備えること、
を特徴とする暗号通信方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate