(57)【特許請求の範囲】
【請求項１】
メッセージｍをセッション鍵ｋを用いて暗号化して対称暗号情報ｃを生成すると共に、セッション鍵ｋを公開鍵ｙを用いて暗号化して非対称暗号情報ｕを生成する暗号化装置と、非対称暗号情報ｕと秘密鍵ｘとを用いてセッション鍵ｋを生成すると共に、そのセッション鍵ｋと対称暗号情報ｃとを用いてメッセージｍを生成する復号化装置とを備えるハイブリット型の公開鍵暗号システムにおいて、
上記秘密鍵ｘは、０以上ｑ−１以下の整数からなる第一の集合Ｚｑから１つの元を選択することにより生成されたものであり、
上記公開鍵ｙは、上記秘密鍵ｘに対応しており、位数ｑ（ｑは素数）の群Ｇの生成元ｇと上記秘密鍵ｘとを用いて生成された、群Ｇに属する１つの公開鍵ｙであり、
上記暗号化装置は、
上記第一の集合Ｚｑから０を除いた第二の集合Ｚｑ＊から１つの元をランダムに選択することにより乱数ｒを生成する乱数生成手段と、
上記生成元ｇと上記乱数ｒとから、上記群Ｇの元であるベアセッション鍵Ｒを生成する第一ベアセッション鍵生成手段と、
予め定められたビット長のハッシュ値を出力するハッシュ関数Ｈ１に、上記ベアセッション鍵Ｒを入力することにより、セッション鍵ｋを生成する第一セッション鍵生成手段と、
上記セッション鍵ｋによって定まり、入力されるメッセージと同じビット長の対称暗号情報を出力する暗号化関数Ｅｋに、メッセージｍを入力することにより対称暗号情報ｃを生成する対称暗号情報生成手段と、
上記群Ｇの元を出力するハッシュ関数Ｈ２に、上記対称暗号情報ｃを入力することにより、検証情報ａを生成する第一検証情報生成手段と、
生成される非対称暗号情報ｕと上記秘密鍵ｘと上記検証情報ａとを用いて上記暗号化装置がベアセッション鍵Ｒを生成することができるように、上記検証情報ａと上記生成元ｇと上記公開鍵ｙとを用いて、上記群Ｇの元である非対称暗号情報ｕを生成する非対称暗号情報生成手段と、
を備え、
上記復号化装置は、
上記ハッシュ関数Ｈ２に上記対称暗号情報ｃを入力することにより、検証情報ａを生成する第二検証情報生成手段と、
上記非対称暗号情報ｕと、上記秘密鍵ｘと、上記第二検証情報生成手段が生成した検証情報ａとを用いて、上記ベアセッション鍵Ｒを生成する第二ベアセッション鍵生成手段と、
上記ハッシュ関数Ｈ１に、上記第二ベアセッション鍵生成手段が生成した上記ベアセッション鍵Ｒを入力することにより、セッション鍵ｋを生成する第二セッション鍵生成手段と、
上記セッション鍵ｋによって定まり、上記暗号化関数Ｅｋに対応し、入力される対称暗号情報と同じビット長のメッセージを出力する復号化関数Ｄｋに、上記対称暗号情報ｃを入力することによりメッセージｍを生成するメッセージ生成手段と、
を備える、
ことを特徴とする公開鍵暗号システム。
【請求項２】
請求項１に記載された公開鍵暗号システムにおいて、
上記公開鍵ｙは、ｙ＝ｇｘであり、
上記第一ベアセッション鍵生成手段は、Ｒ＝ｇｒを計算することにより、ベアセッション鍵Ｒを生成する手段であり、
上記非対称暗号情報生成手段は、ｕ＝ｙｒｇｒａを計算することにより、非対称暗号情報ｕを生成する手段であり、
上記第二ベアセッション鍵生成手段は、Ｒ＝ｕ（１／（ｘ＋ａ））を計算することにより、ベアセッション鍵Ｒを生成する手段である、
ことを特徴とする公開鍵暗号システム。
【請求項３】
請求項１に記載された公開鍵暗号システムにおいて、
上記第一ベアセッション鍵生成手段は、上記生成元ｇと上記乱数ｒとに代えて、上記公開鍵ｙと上記乱数ｒとから、上記群Ｇの元であるベアセッション鍵Ｒを生成する手段である、
ことを特徴とする公開鍵暗号システム。
【請求項４】
請求項２に記載された公開鍵暗号システムにおいて、
上記第一ベアセッション鍵生成手段は、Ｒ＝ｇｒに代えて、Ｒ＝ｙｒを計算することにより、ベアセッション鍵Ｒを生成する手段であり、
上記第二ベアセッション鍵生成手段は、Ｒ＝ｕ（１／（ｘ＋ａ））に代えて、Ｒ＝ｕ（ｘ／（ｘ＋ａ））を計算することにより、ベアセッション鍵Ｒを生成する手段である、
ことを特徴とする公開鍵暗号システム。
【請求項５】
請求項１から４に記載された公開鍵暗号システムにおいて、
上記非対称暗号情報生成手段が生成した非対称暗号情報ｕが、上記群Ｇの単位元ｅであるかどうかを判定する判定手段を更に備え、
非対称暗号情報ｕが単位元ｅであると判定された場合には、上記暗号化装置は再度非対称暗号情報ｕを生成する、
ことを特徴とする公開鍵暗号システム。
【請求項６】
暗号化装置が、メッセージｍをセッション鍵ｋを用いて暗号化して対称暗号情報ｃを生成すると共に、セッション鍵ｋを公開鍵ｙを用いて暗号化して非対称暗号情報ｕを生成する暗号化ステップと、復号化装置が、非対称暗号情報ｕと秘密鍵ｘとを用いてセッション鍵ｋを生成すると共に、そのセッション鍵ｋと対称暗号情報ｃとを用いてメッセージｍを生成する復号化ステップとを備えるハイブリット型の公開鍵暗号方法において、
上記秘密鍵ｘは、０以上ｑ−１以下の整数からなる第一の集合Ｚｑから１つの元を選択することにより生成されたものであり、
上記公開鍵ｙは、上記秘密鍵ｘに対応しており、位数ｑ（ｑは素数）の群Ｇの生成元ｇと上記秘密鍵ｘとを用いて生成された、群Ｇに属する１つの公開鍵ｙであり、
上記暗号化ステップは、
乱数生成手段が、上記第一の集合Ｚｑから０を除いた第二の集合Ｚｑ＊から１つの元をランダムに選択することにより乱数ｒを生成する乱数生成ステップと、
鍵生成手段が、上記生成元ｇと上記乱数ｒとから、上記群Ｇの元であるベアセッション鍵Ｒを生成する第一ベアセッション鍵生成ステップと、
第一セッション鍵生成手段が、予め定められたビット長のハッシュ値を出力するハッシュ関数Ｈ１に、上記ベアセッション鍵Ｒを入力することにより、セッション鍵ｋを生成する第一セッション鍵生成ステップと、
対称暗号情報生成手段が、上記セッション鍵ｋによって定まり、入力されるメッセージと同じビット長の対称暗号情報を出力する暗号化関数Ｅｋに、メッセージｍを入力することにより対称暗号情報ｃを生成する対称暗号情報生成ステップと、
第一検証情報生成手段が、上記群Ｇの元を出力するハッシュ関数Ｈ２に、上記対称暗号情報ｃを入力することにより、検証情報ａを生成する第一検証情報生成ステップと、
非対称暗号情報生成手段が、生成される非対称暗号情報ｕと上記秘密鍵ｘと上記検証情報ａとを用いて上記暗号化装置がベアセッション鍵Ｒを生成することができるように、上記検証情報ａと上記生成元ｇと上記公開鍵ｙとを用いて、上記群Ｇの元である非対称暗号情報ｕを生成する非対称暗号情報生成ステップと、
を有し、
上記復号化ステップは、
第二検証情報生成手段が、上記ハッシュ関数Ｈ２に上記対称暗号情報ｃを入力することにより、検証情報ａを生成する第二検証情報生成ステップと、
第二ベアセッション鍵生成手段が、上記非対称暗号情報ｕと、上記秘密鍵ｘと、上記第二検証情報生成手段が生成した検証情報ａとを用いて、上記ベアセッション鍵Ｒを生成する第二ベアセッション鍵生成ステップと、
第二セッション鍵生成手段が、上記ハッシュ関数Ｈ１に、上記第二ベアセッション鍵生成ステップにおいて生成された上記ベアセッション鍵Ｒを入力することにより、セッション鍵ｋを生成する第二セッション鍵生成ステップと、
メッセージ生成手段が、上記セッション鍵ｋによって定まり、上記暗号化関数Ｅｋに対応し、入力される対称暗号情報と同じビット長のメッセージを出力する復号化関数Ｄｋに、上記対称暗号情報ｃを入力することによりメッセージｍを生成するメッセージ生成ステップと、
を有する、
ことを特徴とする公開鍵暗号方法。
【請求項７】
メッセージｍをセッション鍵ｋを用いて暗号化して対称暗号情報ｃを生成すると共に、セッション鍵ｋを公開鍵ｙを用いて暗号化して非対称暗号情報ｕを生成する暗号化装置と、非対称暗号情報ｕと秘密鍵ｘとを用いてセッション鍵ｋを生成すると共に、そのセッション鍵ｋと対称暗号情報ｃとを用いてメッセージｍを生成する復号化装置とを備えるハイブリット型の公開鍵暗号システムに用いられる暗号化装置において、
上記秘密鍵ｘは、０以上ｑ−１以下の整数からなる第一の集合Ｚｑから１つの元を選択することにより生成されたものであり、
上記公開鍵ｙは、上記秘密鍵ｘに対応しており、位数ｑ（ｑは素数）の群Ｇの生成元ｇと上記秘密鍵ｘとを用いて生成された、群Ｇに属する１つの公開鍵ｙであり、
上記暗号化装置は、
上記第一の集合Ｚｑから０を除いた第二の集合Ｚｑ＊から１つの元をランダムに選択することにより乱数ｒを生成する乱数生成手段と、
上記生成元ｇと上記乱数ｒとから、上記群Ｇの元であるベアセッション鍵Ｒを生成する第一ベアセッション鍵生成手段と、
予め定められたビット長のハッシュ値を出力するハッシュ関数Ｈ１に、上記ベアセッション鍵Ｒを入力することにより、セッション鍵ｋを生成する第一セッション鍵生成手段と、
上記セッション鍵ｋによって定まり、入力されるメッセージと同じビット長の対称暗号情報を出力する暗号化関数Ｅｋ（ｍ）に、メッセージｍを入力することにより対称暗号情報ｃを生成する対称暗号情報生成手段と、
上記群Ｇの元を出力するハッシュ関数Ｈ２に、上記対称暗号情報ｃを入力することにより、検証情報ａを生成する第一検証情報生成手段と、
生成される非対称暗号情報ｕと上記秘密鍵ｘと上記検証情報ａとを用いて上記暗号化装置がベアセッション鍵Ｒを生成することができるように、上記検証情報ａと上記生成元ｇと上記公開鍵ｙとを用いて、上記群Ｇの元である非対称暗号情報ｕを生成する非対称暗号情報生成手段と、
を備える、
ことを特徴とする暗号化装置。
【請求項８】
メッセージｍをセッション鍵ｋを用いて暗号化して対称暗号情報ｃを生成すると共に、セッション鍵ｋを公開鍵ｙを用いて暗号化して非対称暗号情報ｕを生成する暗号化装置と、非対称暗号情報ｕと秘密鍵ｘとを用いてセッション鍵ｋを生成すると共に、そのセッション鍵ｋと対称暗号情報ｃとを用いてメッセージｍを生成する復号化装置とを備えるハイブリット型の公開鍵暗号システムに用いられる暗号化装置において、
上記秘密鍵ｘは、０以上ｑ−１以下の整数からなる第一の集合Ｚｑから１つの元を選択することにより生成されたものであり、
上記公開鍵ｙは、上記秘密鍵ｘに対応しており、位数ｑ（ｑは素数）の群Ｇの生成元ｇと上記秘密鍵ｘとを用いて生成された、群Ｇに属する１つの公開鍵ｙであり、
上記復号化装置は、
上記ハッシュ関数Ｈ２に、上記暗号化装置において生成された対称暗号情報ｃを入力することにより、検証情報ａを生成する第二検証情報生成手段と、
上記非対称暗号情報ｕと、上記秘密鍵ｘと、上記検証情報ａとを用いて、上記ベアセッション鍵Ｒを生成する第二ベアセッション鍵生成手段と、
上記ハッシュ関数Ｈ１に、上記ベアセッション鍵Ｒを入力することにより、セッション鍵ｋを生成する第二セッション鍵生成手段と、
上記セッション鍵ｋによって定まり、上記暗号化装置が用いた暗号化関数Ｅｋに対応し、入力される対称暗号情報と同じビット長のメッセージを出力する復号化関数Ｄｋに、上記対称暗号情報ｃを入力することによりメッセージｍを生成するメッセージ生成手段と、
を備える、
ことを特徴とする復号化装置。
【請求項９】
請求項７に記載された暗号化装置の各手段としてコンピュータを機能させるための暗号化プログラム。
【請求項１０】
請求項８に記載された復号化装置の各手段としてコンピュータを機能させるための復号化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、いわゆるハイブリッド方式の公開鍵暗号システム、公開鍵暗号方法、暗号化装置、復号化装置、暗号化プログラム及び復号化プログラムに関する。
【背景技術】
【０００２】
第一の従来の公開鍵暗号方法について説明をする。この方法は、非特許文献１に記載されているＤＨＩＥＳと呼ばれるハイブリッド暗号方式における秘密鍵暗号を、任意長の入力を扱える強擬似ランダム置換に置き換えたものである（例えば、非特許文献２参照。）。強擬似ランダム置換の構成例については、非特許文献３に詳しい。
ｑを素数、Ｇを生成元ｇが作る位数ｑの群とする。Ｇの元の最大ビット長をｌとする。Ｚｑを０以上ｑ−１以下の整数の集合とする。Ｚｑ＊をＺｑから０を除いた集合とする。Ｈをハッシュ関数とする。Ｅｋ，Ｄｋをそれぞれセッション鍵ｋにより定まる強擬似ランダム置換とその逆関数とする。
【０００３】
鍵生成手順：
・ｘをランダムにＺｑから選択する。
・ｙ＝ｇｘを計算する。
・ｘを秘密鍵、ｙを公開鍵とする。
暗号化手順：
・ｒをランダムにＺｑ＊から選ぶ。
・Ｒ＝ｇｒ，ｋ＝Ｈ（Ｒ），ｃ＝Ｅｋ（ｍ），ｕ＝ｙｒ
・（ｕ，ｃ）を暗号文として出力する。
復号化手順：
・Ｒ＝ｕ（１／ｘ），ｋ＝Ｈ（Ｒ），ｍ＝Ｄｋ（ｃ）
・ｍをメッセージとして出力する。
【０００４】
第二の従来の公開鍵暗号方法について説明をする（例えば、非特許文献４参照。）。
ｑを素数、Ｇを生成元ｇが作る位数ｑの群とする。Ｇの元の最大ビット長をｌとする。Ｚｑを０以上ｑ−１以下の整数の集合とする。Ｚｑ＊をＺｑから０を除いた集合とする。Ｈ１，Ｈ２をハッシュ関数とする。Ｅｋ，Ｄｋをそれぞれセッション鍵ｋにより定まるlength-preservingな暗号化関数、復号化関数とする。length-preservingな関数とは、出力されるビットの長さが、入力されるビットの長さと等しい関数のことである。
【０００５】
鍵生成手順：
・ｘ１，ｘ２をそれぞれランダムにＺｑから選ぶ。
・ｙ１＝ｇｘ１，ｙ２＝ｇｘ２を計算する。ｘ１，ｘ２はそれぞれｘ１，ｘ２を意味する。以下、同様である。
・ｘ１を第一の秘密鍵，ｘ２を第二の秘密鍵，ｙ１を第一の公開鍵，ｙ２を第二の公開鍵とする。
暗号化手順：
・ｒをランダムにＺｑ＊から選ぶ。
・Ｒ＝ｇｒ，ｋ＝Ｈ（Ｒ），ｃ＝Ｅｋ（ｍ），ａ＝Ｇ（ｃ），ｕ＝ｙ１ｒｙ２ｒａ
・（ｕ，ｃ）を暗号文として出力する。
復号化手順：
・ａ＝Ｇ（ｃ），Ｒ＝ｕ（１／（ｘ１＋ａｘ２）），ｋ＝Ｈ（Ｒ），ｍ＝Ｄｋ（ｃ）
・ｍをメッセージとして出力する。
【０００６】
第一の従来の公開鍵方法と第二の従来の公開鍵方法はいずれも、ハッシュ関数が完全なである場合には、適応的選択暗号文攻撃に対して安全であると考えられている。また、いずれの方法も、暗号文がｕとｃの２つの要素からなり、ｕは、Ｇの元であるためｌビットであり、ｃは、強擬似ランダム置換又はlength-preservingな暗号化関数にメッセージｍを入力した場合の出力値であるため、｜ｍ｜ビットである。ここで、｜・｜は、・のビット長を表す。したがって、いずれの方法においても、暗号文の長さは、ｌ＋｜ｍ｜ビットとなる。
【非特許文献１】Michel Abdalla, Mihir Bellare and Phillip Rogaway, “The Oracle Diffie-Hellman Assumptions and an Analysis of DHIES”, Topics in Cryptology - CT-RSA 2001, LNCS 2020, Springer-Verlag, 2001, pp.143-158
【非特許文献２】Kaoru Kurosawa and Toshiki Matsuo, “How to Remove MAC from DHIES”, Information Security and Privacy: 9th Australasian Conference, ACISP 2004, LNCS 3108, Springer-Verlag, 2004, pp.236-247
【非特許文献３】Shai Halevi, “EME*:Extending EME to Handle Arbitary-Length Messages with Associated Data”, INDOCRYPT 2004, LNCS 3348, Springer-Verlag, 2004, pp.315-327
【非特許文献４】Xianhui Lu, Xuejia Lai and Dake He, “Efficient chosen ciphertext secure PKE scheme with short ciphertext”, IACR ePrint archive, 2007/210
【発明の開示】
【発明が解決しようとする課題】
【０００７】
第一の従来の公開鍵暗号方法においては、暗号化関数、復号化関数として、セッション鍵ｋにより定まる強擬似ランダム置換Ｅｋ、Ｄｋを用いている。このため、セッション鍵ｋのビット長（以下、セキュリティパラメータλとする。）よりも短いメッセージを暗号化することができないという問題があった。例えば、セキュリティパラメータλ＝１２８ビットの場合、１２８ビットよりも短い長さのメッセージを暗号化することができず、暗号化しても安全性が保障されないという問題があった。
また、第二の従来の公開鍵暗号方法においては、２つの公開鍵ｙ１，ｙ２を用いており、公開鍵の数が多いという問題があった。
【０００８】
この発明は、任意の長さのメッセージを暗号化することができ、かつ、公開鍵の数が少ない公開鍵暗号システム、公開鍵暗号方法、暗号化装置、復号化装置、暗号化プログラム及び復号化プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
請求項１に記載された発明によれば、メッセージｍをセッション鍵ｋを用いて暗号化して対称暗号情報ｃを生成すると共に、セッション鍵ｋを公開鍵ｙを用いて暗号化して非対称暗号情報ｕを生成する暗号化装置と、非対称暗号情報ｕと秘密鍵ｘとを用いてセッション鍵ｋを生成すると共に、そのセッション鍵ｋと対称暗号情報ｃとを用いてメッセージｍを生成する復号化装置とを備えるハイブリット型の公開鍵暗号システムにおいて、秘密鍵ｘは、０以上ｑ−１以下の整数からなる第一の集合Ｚｑから１つの元を選択することにより生成されたものであり、公開鍵ｙは、秘密鍵ｘに対応しており、位数ｑ（ｑは素数）の群Ｇの元であり、その群Ｇの生成元ｇと秘密鍵ｘとを用いて生成された１つの公開鍵ｙである。
【００１０】
上記暗号化装置は、第一の集合Ｚｑから０を除いた第二の集合Ｚｑ＊から１つの元をランダムに選択することにより乱数ｒを生成する乱数生成手段と、生成元ｇと乱数ｒとから、群Ｇの元であるベアセッション鍵Ｒを生成する第一ベアセッション鍵生成手段と、予め定められたビット長のハッシュ値を出力するハッシュ関数Ｈ１に、ベアセッション鍵Ｒを入力することにより、セッション鍵ｋを生成する第一セッション鍵生成手段と、セッション鍵ｋによって定まり、入力されるメッセージと同じビット長の対称暗号情報を出力する暗号化関数Ｅｋ（ｍ）に、メッセージｍを入力することにより対称暗号情報ｃを生成する対称暗号情報生成手段と、群Ｇの元を出力するハッシュ関数Ｈ２に、対称暗号情報ｃを入力することにより、検証情報ａを生成する第一検証情報生成手段と、生成される非対称暗号情報ｕと秘密鍵ｘと検証情報ａとを用いて上記暗号化装置がベアセッション鍵Ｒを生成することができるように、検証情報ａと生成元ｇと公開鍵ｙとを用いて、群Ｇの元である非対称暗号情報ｕを生成する非対称暗号情報生成手段と、を備える。
【００１１】
上記復号化装置は、ハッシュ関数Ｈ２に対称暗号情報ｃを入力することにより、検証情報ａを生成する第二検証情報生成手段と、非対称暗号情報ｕと、秘密鍵ｘと、第二検証情報生成手段が生成した検証情報ａとを用いて、ベアセッション鍵Ｒを生成する第二ベアセッション鍵生成手段と、ハッシュ関数Ｈ１に、第二非対称暗号情報生成手段が生成したベアセッション鍵Ｒを入力することにより、セッション鍵ｋを生成する第二セッション鍵生成手段と、セッション鍵ｋによって定まり、暗号化関数Ｅｋに対応し、入力される対称暗号情報と同じビット長のメッセージを出力する復号化関数Ｄｋに、対称暗号情報ｃを入力することによりメッセージｍを生成するメッセージ生成手段と、を備える。
【発明の効果】
【００１２】
秘密鍵ｘと公開鍵ｙの数がそれぞれ１つであり、秘密鍵と公開鍵の数が十分に少ない。また、暗号化関数Ｅｋ、復号化関数Ｄｋとして、強擬似ランダム置換ではなく、秘密鍵暗号（共通鍵暗号ともいう。）で通常用いられるlength-preservingな任意の関数を用いているため、１ビット以上の任意のメッセージを暗号化することができる。
【発明を実施するための最良の形態】
【００１３】
［理論］
ｑを素数、群Ｇを生成元ｇが作る位数ｑの群とする。以下、群Ｇを乗法群として記述する。群Ｇの元の最大ビット長をｌとする。群Ｇは、Gap Diffie-Hellman計算問題が難しいと考えられる群ならばどのような群でも良い。例えば、楕円曲線が作る群等が考えられる（例えば、参考文献参照。）。
≪参考文献≫Tatsuaki Okamoto and David Pointcheval, “The Gap-Problems: A New Class of Problems for the Security of Cryptographic Schemes”, PKC 2001, LNCS 1992, Springer-Verlag, 2001, pp.104-118
【００１４】
Ｚｑを０以上ｑ−１以下の整数の集合とする。Ｚｑ＊をＺｑから０を除いた集合とする。Ｈ１は、セキュリティパラメータλで定まるビット長（例えば１２８ビット）のビット列を出力するハッシュ関数である。Ｈ２は、値域が群Ｇであるハッシュ関数である。
Ｅｋ，Ｄｋをそれぞれ、セッション鍵ｋで定まる、length-preservingな暗号化関数、復号化関数とする。length-preservingな関数とは、出力されるビットの長さが、入力されるビットの長さと等しい関数のことである。
ベアセッション鍵Ｒ、検証情報ａ及び非対称暗号情報ｕは群Ｇの元であり、セッション鍵ｋはセキュリティパラメータλで定まるビット長であり、メッセージｍ及び対称暗号情報ｃは任意のビット長である。
【００１５】
〔手順１〕
鍵生成手順：
・ｘをランダムにＺｑから選ぶ。
・ｙ＝ｇｘを計算する。
・ｘを秘密鍵、ｙを公開鍵とする。
暗号化手順：
・ｒをランダムにＺｑ＊から選ぶ。
・Ｒ＝ｇｒ，ｋ＝Ｈ１（Ｒ），ｃ＝Ｅｋ（ｍ），ａ＝Ｇ（ｃ），ｕ＝ｙｒｇｒａ
・（ｕ，ｃ）を暗号文として出力する。
復号化手順：
・ａ＝Ｇ（ｃ），Ｒ＝ｕ（１／（ｘ＋ａ）），ｋ＝Ｈ１（Ｒ），ｍ＝Ｄｋ（ｃ）
・ｍをメッセージとして出力する。
鍵生成手順において秘密鍵ｘと公開鍵ｙをそれぞれ１つだけ生成し、それらを用いて上記ように暗号化手順と復号化手順を行うことにより、秘密鍵と公開鍵の数を少なくすることができる。また、暗号化関数Ｅｋ、復号化関数Ｄｋとして、強擬似ランダム置換ではなく、秘密鍵暗号（共通鍵暗号ともいう。）で通常用いられるlength-preservingな任意の関数を用いているため、１ビット以上の任意のメッセージを暗号化することができる。
【００１６】
〔手順２〕
また、暗号化手順と復号化手順を下記のように行ってもよい。暗号化手順におけるベアセッション鍵Ｒの計算方法、復号化手順におけるベアセッション鍵Ｒの計算方法のみが、上記の手順１とは異なる。
鍵生成手順：
・ｘをランダムにＺｑから選ぶ。
・ｙ＝ｇｘを計算する。
・ｘを秘密鍵、ｙを公開鍵とする。
暗号化手順：
・ｒをランダムにＺｑ＊から選ぶ。
・Ｒ＝ｙｒ，ｋ＝Ｈ１（Ｒ），ｃ＝Ｅｋ（ｍ），ａ＝Ｇ（ｃ），ｕ＝ｙｒｇｒａ
・（ｕ，ｃ）を暗号文として出力する。
復号化手順：
・ａ＝Ｇ（ｃ），Ｒ＝ｕ（ｘ／（ｘ＋ａ）），ｋ＝Ｈ１（Ｒ），ｍ＝Ｄｋ（ｃ）
・ｍをメッセージとして出力する。
手順２においては、暗号化手順で、非対称暗号情報ｕ＝ｙｒｇｒａを、ｕ＝Ｒｇｒａと計算できる。このため、手順１に比べて計算量を小さくすることができるというメリットがある。
【００１７】
手順１においては、復号化手順で、１／（ｘ＋ａ）  ｍｏｄｑを計算しているのに対して、手順２においては、復号化手順で、ｘ／（ｘ＋ａ）  ｍｏｄｑを計算している。分子が１ではなくｘである点において、手順２の方が計算量が多いとも考えられる。しかし、ｍｏｄ  ｑにおける除算又は逆数算の計算効率は、分子が１であるか任意の数ｘであるかにほとんど依存しないので、分子がｘであっても計算量は増加しない。
【００１８】
［装置構成］
図１から図５を参照して、公開鍵暗号システム１の一実施例について説明をする。
図１に例示するように、公開鍵暗号システム１は、秘密鍵ｘとそれに対応する公開鍵ｙを生成する鍵生成装置１００と、公開鍵ｙを用いてメッセージｍを暗号化して暗号文（ｕ，ｃ）を生成する暗号化装置２００と、秘密鍵ｘを用いて暗号文（ｕ，ｃ）を復号してメッセージｍを得る復号化装置３００とからなる。
図５にそれぞれ示す、ステップＳ１からステップＳ２が上記［理論］の鍵生成手順に対応し、ステップＳ３からステップＳ９が上記［理論］の暗号化手順に対応し、ステップＳ１０からステップＳ１３が上記［理論］の復号化手順に対応する。
【００１９】
以下、各ステップについて順に説明をする。
＜ステップＳ１＞
図２に例示するように、鍵生成装置１００は、秘密鍵生成部１１と公開鍵生成部１２とを含む。
秘密鍵生成部１１は、集合Ｚｑから１つの元を選択して、秘密鍵ｘとする（ステップＳ１）。秘密鍵ｘは、公開鍵生成部１２に送られる。また、この例では、秘密鍵ｘは、復号化装置３００に送られる。
【００２０】
＜ステップＳ２＞
公開鍵生成部１２は、ｙ＝ｇｘを計算することにより、群Ｇの元である１つの公開鍵ｙを生成する（ステップＳ２）。公開鍵ｙは、暗号化装置２００に送られる。
ｙ＝ｇｘを計算するとは、群Ｇ上定義された演算を生成元ｇについてｘ回行った場合の演算結果を求めることを意味する。言い換えれば、式によって定義される演算結果を求めさえすれば良く、必ずしも群Ｇ上定義された演算を生成元ｇについて実際にｘ回行う必要はない。このことは、群Ｇ上の他の計算についても同様である。例えば、後述する非対称暗号情報生成部２６は、非対称暗号情報ｕ＝ｙｒｇｒａを計算するが、Ｒ＝ｙｒという第一ベアセッション鍵生成部２２において既に得られた計算結果を用いて、非対称暗号情報ｕを、ｕ＝Ｒｇｒａを計算することにより求めてもよい。
【００２１】
＜ステップＳ３＞
ステップＳ３からステップＳ９が上記［理論］の暗号化手順に対応する。
図３に例示するように、暗号化装置２００は、乱数生成部２１、第一ベアセッション鍵生成部２２、第一セッション鍵生成部２３、対称暗号情報生成部２４、第一検証情報生成部２５、非対称暗号情報生成部２６、記憶部２７、送信部２８を含む。
乱数生成部２１は、集合Ｚｑ＊から１つの元をランダム選択することにより、乱数ｒを生成する（ステップＳ３）。生成された乱数ｒは、第一ベアセッション鍵生成部２２に送られる。
【００２２】
＜ステップＳ４＞
第一ベアセッション鍵生成部２２は、Ｒ＝ｇｒを計算することにより、ベアセッション鍵Ｒを求める（ステップＳ４）。生成されたベアセッション鍵Ｒは、第一セッション鍵生成部２３に送られる。
【００２３】
＜ステップＳ５＞
第一セッション鍵生成部２３は、予め定められたビット長のハッシュ値を出力するハッシュ関数Ｈ１に、ベアセッション鍵Ｒを入力することにより、セッション鍵ｋを生成する（ステップＳ５）。すなわち、ｋ＝Ｈ１（Ｒ）を計算する。生成されたセッション鍵ｋは、対称暗号情報生成部２４に送られる。
セッション鍵ｋのビット長は、セキュリティパラメータλとして予め定められている。ハッシュ関数Ｈ１が出力するハッシュ値のビット長は、セキュリティパラメータλと等しい。
【００２４】
＜ステップＳ６＞
対称暗号情報生成部２４は、暗号化関数Ｅｋに、記憶部２７から読み込んだメッセージｍを入力することにより、対称暗号情報ｃを生成する（ステップＳ６）。すなわち、ｃ＝Ｅｋ（ｍ）を計算する。生成された対称暗号情報ｃは、第一検証情報生成部２５と送信部２８に送られる。
メッセージｍのビット長は任意でよい。暗号化関数Ｅｋは、セッション鍵ｋをパラメータとして持ち、セッション鍵ｋによって定まる関数である。また、暗号化関数Ｅｋは、length-preservingな関数であるため、対称暗号情報ｃのビット長は、メッセージｍのビット長と同じである。
【００２５】
＜ステップＳ７＞
第一検証情報生成部２５は、ハッシュ関数Ｈ２に、対称暗号情報ｃを入力することにより、検証情報ａを生成する（ステップＳ７）。すなわち、ａ＝Ｈ２（ｃ）を計算する。生成された検証情報ａは、非対称暗号情報生成部２６に送られる。
ハッシュ関数Ｈ２は、群Ｇの元を出力するハッシュ関数である。
【００２６】
＜ステップＳ８＞
非対称暗号情報生成部２６は、生成される非対称暗号情報ｕと秘密鍵ｘと検証情報ａとを用いてベアセッション鍵Ｒを復号することができるように、検証情報ａと生成元ｇと公開鍵ｙとを混合して、群Ｇの元である非対称暗号情報ｕを生成する。
具体的には、この例では、ｕ＝ｙｒｇｒａを計算することにより、非対称暗号情報ｕを求める。この際、ｕ＝ｙｒｇｒａ＝ｙｒｇｒｇａであるため、第一ベアセッション鍵生成部２２において既に得られた計算結果Ｒ＝ｇｒを用いることにより、非対称暗号情報ｕの計算量を低減してもよい。生成された非対称暗号情報ｕは、送信部２８に送られる。
【００２７】
＜ステップＳ９＞
送信部２８は、非対称暗号情報ｕと対称暗号情報ｃとを含む情報である暗号文（ｕ，ｃ）を、復号化装置３００に送信する。復号化装置３００に対して、直接的ではなく、第三者のサーバー装置等を介して間接的に送信してもよい。
＜ステップＳ１０＞
ステップＳ１０からステップＳ１３が上記［理論］の復号化手順に対応する。
図４に例示するように、復号化装置３００は、第二検証情報生成部３１、第二ベアセッション鍵生成部３２、第二セッション鍵生成部３３、メッセージ生成部３４、記憶部３５を含む。
【００２８】
復号化装置３００の第二検証情報生成部３１は、ハッシュ関数Ｈ２に、暗号化装置２００から送られた暗号文（ｕ，ｃ）から取り出された対称暗号情報ｃを入力することにより、検証情報ａを生成する。すなわち、ａ＝Ｈ２（ｃ）を計算する。この例では、暗号化装置２００から送られた暗号文（ｕ，ｃ）は、まず記憶部３５に格納される。第二検証情報生成部３１は、記憶部３５から非対称暗号情報ｃを読み込み、ハッシュ関数Ｈ２に入力する。生成された検証情報ａは、第二ベアセッション鍵生成部３２に送られる。
ハッシュ関数Ｈ２は、暗号化装置２００の第一検証情報生成部２５の処理で登場したハッシュ関数Ｈ２と同じものである。
【００２９】
＜ステップＳ１１＞
第二ベアセッション鍵生成部３２は、Ｒ＝ｕ（１／（ｘ＋ａ））を計算することにより、ベアセッション鍵Ｒを求める。生成されたベアセッション鍵Ｒは、第二セッション鍵生成部３３に送られる。
＜ステップＳ１２＞
第二セッション鍵生成部３３は、ハッシュ関数Ｈ１に、ベアセッション鍵Ｒを入力することにより、セッション鍵ｋを計算する。すなわち、ｋ＝Ｈ１（Ｒ）を計算する。生成されたセッション鍵ｋは、メッセージ生成部３４に送られる。
ハッシュ関数Ｈ１は、暗号化装置２００の第一セッション鍵生成部２３の処理で登場したハッシュ関数Ｈ１と同じものである。
【００３０】
＜ステップＳ１３＞
メッセージ生成部３４は、復号化関数Ｄｋに、暗号化装置２００から送られた暗号文（ｕ，ｃ）から取り出された対称暗号情報ｃを入力することにより、メッセージｍを復号する。すなわち、ｍ＝Ｄｋ（ｃ）を計算する。
length-preservingな関数である復号化関数Ｄｋは、暗号化関数Ｅｋに対応する復号化関数であり、両関数には、Ｄｋ（Ｅｋ（ｍ））＝ｍの関係が成立している。
【００３１】
上記〔手順２〕を行う場合には、第一ベアセッション鍵生成部２２が、Ｒ＝ｇｒに代えて、Ｒ＝ｙｒを計算することにより、ベアセッション鍵Ｒを求め、第二ベアセッション鍵生成部３２が、Ｒ＝ｕ（１／（ｘ＋ａ））に代えて、Ｒ＝ｕ（ｘ／（ｘ＋ａ））を計算することにより、ベアセッション鍵Ｒを求めればよい。
【００３２】
［変形例等］
図３に破線で例示するように、また、図５のステップＳ８’に例示するように、暗号化装置２００の判定部２９が、非対称暗号情報生成部２６が生成した非対称暗号情報ｕが、群Ｇの単位元ｅであるか否かを判定して、非対称暗号情報ｕが単位元ｅである場合には、暗号化装置２００が、ステップＳ３の乱数ｒを生成する処理からやり直して、再度非対称暗号情報ｕを生成してもよい。非対称暗号情報ｕが単位元ｅである場合には、検証情報ａの値によらず、ベアセッション鍵Ｒ及びセッション鍵ｋの値が同じになるため、対称暗号情報ｃが改ざんされたかどうかを復号化装置が判定することができないためである。
【００３３】
上記の例では、公開鍵暗号システム１の処理がステップＳ１から始まるとしているが、既に生成された１つの秘密鍵ｘ及び１つの公開鍵ｙを元にして、ステップＳ３から公開鍵暗号システム１の処理を始めてもよい。
上記の例では、図１に例示するように、鍵生成装置１００は、暗号化装置２００及び復号化装置３００とは異なる別の装置となっているが、鍵生成装置１００が暗号化装置２００に含まれていてもよい。この場合には、暗号化装置２００内の鍵生成装置１００において生成された秘密鍵ｘは暗号化装置２００に送られ、同鍵生成装置１００において生成された公開鍵ｙは復号化装置３００に送られる。
【００３４】
図１から４に例示した公開鍵暗号システム１、鍵生成装置１００、暗号化装置２００、復号化装置３００においては、装置の各部から各部へデータが直接送られている箇所があるが、図示していない記憶部を介して、間接的にデータが送られてもよい。
上述の構成をコンピュータによって実現する場合、鍵生成装置１００、暗号化装置２００、復号化装置３００の各部が有すべき機能の処理内容はそれぞれプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記各部の機能がコンピュータ上で実現される。
【００３５】
すなわち、ＣＰＵが各プログラムを逐次読み込んで実行することにより、秘密鍵生成部１１、公開鍵生成部１２、第一ベアセッション鍵生成部２２、第一セッション鍵生成部２３、対称暗号情報生成部２４、第一検証情報生成部２５、非対称暗号情報生成部２６、送信部２８、判定部２９、第二検証情報生成部３１、第二ベアセッション鍵生成部３２、第二セッション鍵生成部３３、メッセージ生成部３４等の機能が実現される。また、記憶部２７、記憶部３５及び図示していない記憶部等の記憶部は、メモリ、ハードディスク等記憶手段により実現される。
【００３６】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよいが、具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等を、光磁気記録媒体として、ＭＯ（Magneto-Optical disc）等を、半導体メモリとしてＥＥＰ−ＲＯＭ（Electronically Erasable and Programmable-Read Only Memory）等を用いることができる。
【００３７】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【００３８】
また、上述した実施形態とは別の実行形態として、コンピュータが可搬型記録媒体から直接このプログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を基底する性質を有するデータ等）を含むものとする。
【００３９】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
また、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【図面の簡単な説明】
【００４０】
【図１】公開鍵暗号システムの機能構成を例示する図。
【図２】鍵生成装置の機能構成を例示する図。
【図３】暗号化装置の機能構成を例示する図。
【図４】復号化装置の機能構成を例示する図。
【図５】公開鍵暗号システムの処理の流れを例示するフローチャート。
【符号の説明】
【００４１】
１     公開鍵暗号システム
１１   秘密鍵生成部
１２   公開鍵生成部
２１   乱数生成部
２２   第一ベアセッション鍵生成部
２３   第一セッション鍵生成部
２４   対称暗号情報生成部
２５   第一検証情報生成部
２６   非対称暗号情報生成部
２９   判定部
３１   第二検証情報生成部
３２   第二ベアセッション鍵生成部
３３   第二セッション鍵生成部
３４   メッセージ生成部
１００ 鍵生成装置
２００ 暗号化装置
３００ 復号化装置
【図１】
0004934010.tif 000002
【図２】
0004934010.tif 000003
【図３】
0004934010.tif 000004
【図４】
0004934010.tif 000005
【図５】
0004934010.tif 000006