(57)【要約】 【課題】階層型ＩＤベース暗号方式を採用しつつ、任意の長さの平文を暗号化することを可能とする。【解決手段】階層型ＩＤベース暗号方式を構成する４つの機能（初期設定機能、鍵生成機能、暗号化機能、及び復号機能）のうち、暗号化機能と復号機能を鍵カプセル化メカニズムに対応させることによって、階層型ＩＤベース暗号方式によりセッション鍵の生成・暗号化及び復号を行い、平文の暗号化及び復号を当該セッション鍵を用いた共通鍵暗号方式により行う。【選択図】図１
2010154193.tif 000002
【特許請求の範囲】
【請求項１】
有限体Ｆｑ上で定義される楕円曲線Ｅ上の点Ｐ0及びその位数ｐと、Ｑ0＝ｓ0・Ｐ0（ｓ0∈｛０、１、２、・・、ｐ−１｝）により計算されるＱ0と、任意の文字列であるＩＤ情報組id0、id1、id2、・・・、idt（ｔは当該ＩＤ情報組が属するノードの階層数、ｔ≧１）とが入力され、暗号文ｃとセッション鍵ｋとを出力する階層型ＩＤベース暗号化装置であって、
所定の長さhLenオクテットのランダムな値ｒ∈｛０、１、２、・・・、ｐ−１｝を生成して出力する乱数生成部と、
上記ｒが入力され、任意の一方向関数hash1を用いて長さzLen＋keyLenオクテットのｈを、
ｈ＝hash1(ｒ)
（zLen、keyLenはそれぞれ所定のオクテット長。）により計算して出力する第１ハッシュ計算部と、
上記ｈが入力され、ｈ＝ｚ‖ｋ（‖は連結を表す。）であるとして、長さzLenオクテットのｚと、長さkeyLenオクテットのセッション鍵ｋとに分割して出力する分割部と、
上記ｚと上記ｐとが入力され、ｚを整数に変換した上でαをα＝ｚ mod ｐにより計算して出力するα計算部と、
上記ＩＤ情報組id0、id1、id2、・・・、idtが入力され、文字列を楕円曲線Ｅ上の点に写像する関数IDencを用いてＰ1、Ｐ2、・・・、Ｐtをそれぞれ、
Ｐi＝IDenc(id0‖id1‖・・・‖idi)  （１≦ｉ≦ｔ）
により計算して出力するＰ計算部と、
上記Ｐ0、Ｐ2、Ｐ3、・・・、Ｐtと上記αとが入力され、Ｕ0、Ｕ2、Ｕ3、・・・、Ｕtをそれぞれ、
Ｕj＝α・Ｐj  （ｊ＝０又は２≦ｊ≦ｔ）
により計算して出力するＵ計算部と、
上記Ｑ0と上記Ｐ1と上記αとが入力され、任意のペアリング関数ｅを用いてＱを、
Ｑ＝ｅ(Ｑ0 、Ｐ1 )α
により計算して出力するＱ計算部と、
上記ｒと上記Ｕ0、Ｕ2、Ｕ3、・・・、Ｕtと上記Ｑと上記ＩＤ情報組id0、id1、id2、・・・、idtとが入力され、Ｕ0、Ｕ2、Ｕ3、・・・、ＵtとＱをオクテット列に変換した上で任意の一方向関数hash2を用いて長さhLenオクテットのｃ´を、
ｃ´＝ｒxor hash2(Ｕ0‖Ｕ2‖・・・‖Ｕt‖Ｑ‖id0‖id1‖id2‖・・・‖idt)
（xorは排他的論理和演算を表す。）により計算して出力する第２ハッシュ計算部と、
上記Ｕ0、Ｕ2、Ｕ3、・・・、Ｕtと上記ｃ´とが入力され、Ｕ0、Ｕ2、Ｕ3、・・・、Ｕtをオクテット列に変換した上で暗号文ｃを、
ｃ＝Ｕ0‖Ｕ2‖Ｕ3‖・・・‖Ｕt‖ｃ´
により計算して出力する暗号文計算部と、
を備えることを特徴とする階層型ＩＤベース暗号化装置。
【請求項２】
請求項１に記載の階層型ＩＤベース暗号化装置において、
上記第１ハッシュ計算部は、更に上記ＩＤ情報組id0、id1、id2、・・・、idtが入力され、ｈを、
ｈ＝hash1(ｒ‖id0‖id1‖id2‖・・・‖idt)
により計算することを特徴とする階層型ＩＤベース暗号化装置。
【請求項３】
有限体Ｆｑ上で定義される楕円曲線Ｅ上の点Ｐ0及びその位数ｐと、任意の文字列であるＩＤ情報組id0、id1、id2、・・・、idt（ｔは当該ＩＤ情報組が属するノードの階層数、ｔ≧１）と、所定の方法により予め生成された、上記ＩＤ情報組に対応する秘密鍵Ｓt、Ｑ1、Ｑ2、・・・、Ｑt-1（Ｓt、Ｑ1、Ｑ2、・・・、Ｑt-1は楕円曲線Ｅ上の点)と、暗号文ｃとが入力され、セッション鍵ｋを出力する階層型ＩＤベース復号化装置であって、
上記暗号文ｃが入力され、ｃ＝Ｕ0‖Ｕ2‖Ｕ3‖・・・‖Ｕt‖ｃ´（‖は連結を表す。）であるとして、長さhLenオクテットのｃ´と、残りをｔ等分したＵ0、Ｕ2、Ｕ3、・・・、Ｕtとに分割する第１分割部と、
上記秘密鍵Ｓt、Ｑ1、Ｑ2、・・・、Ｑt-1と上記Ｕ0、Ｕ2、Ｕ3、・・・、Ｕtとが入力され、Ｕ0、Ｕ2、Ｕ3、・・・、Ｕtを楕円曲線Ｅ上の点に変換した上で任意のペアリング関数ｅを用いてＱを、
【数１】
2010154193.tif 000006
により計算して出力するＱ計算部と、
上記Ｕ0、Ｕ2、Ｕ3、・・・、Ｕtと、上記ｃ´と、上記Ｑと、上記ＩＤ情報組id0、id1、id2、・・・、idtとが入力され、Ｕ0、Ｕ2、Ｕ3、・・・、ＵtとＱをオクテット列に変換した上で任意の一方向関数hash2を用いて長さhLenオクテットのｒを、
ｒ＝ｃ´xor hash2(Ｕ0‖Ｕ2‖Ｕ3‖・・・‖Ｕt‖Ｑ‖id0‖id1‖id2‖・・・‖idt)
（xorは排他的論理和演算を表す。）により計算して出力する第２ハッシュ計算部と、
上記ｒが入力され、任意の一方向関数hash1を用いて長さzLen＋keyLenオクテットのｈを、
ｈ＝hash1(ｒ)
（zLen、keyLenはそれぞれ所定のオクテット長。）により計算して出力する第１ハッシュ計算部と、
上記ｈが入力され、ｈ＝ｚ‖ｋであるとして、長さzLenオクテットのｚと、長さkeyLenオクテットのセッション鍵ｋとに分割して出力する第２分割部と、
上記ｚと上記ｐとが入力され、ｚを整数に変換した上でαをα＝ｚ mod ｐにより計算して出力するα計算部と、
上記ＩＤ情報組id0、id1、id2、・・・、idtが入力され、文字列を楕円曲線Ｅ上の点に写像する関数IDencを用いてＰ2、Ｐ3、・・・、Ｐtをそれぞれ、
Ｐi＝IDenc(id0‖id1‖・・・‖idi)  （２≦ｉ≦ｔ）
により計算して出力するＰ計算部と、
上記Ｐ0、Ｐ2、Ｐ3、・・・、Ｐtと上記αと上記セッション鍵ｋとが入力され、α・Ｐ0、α・Ｐ2、α・Ｐ3、・・・、α・Ｐtを計算し、それぞれＵ0、Ｕ2、Ｕ3、・・・、Ｕtと一致するか否かを検証して、一致した場合には上記セッション鍵ｋを出力し、一致しなかった場合には復号失敗を示す情報を出力する検証部と、
を備えることを特徴とする階層型ＩＤベース復号化装置。
【請求項４】
請求項３に記載の階層型ＩＤベース復号化装置において、
上記第１ハッシュ計算部は、更に上記ＩＤ情報組id0、id1、id2、・・・、idtが入力され、ｈを、
ｈ＝hash1(ｒ‖id0‖id1‖id2‖・・・‖idt)
により計算することを特徴とする階層型ＩＤベース復号化装置。
【請求項５】
有限体Ｆｑ上で定義される楕円曲線Ｅ上の点Ｐ0及びその位数ｐと、Ｑ0＝ｓ0・Ｐ0（ｓ0∈｛０、１、２、・・・、ｐ−１｝）により計算されるＱ0と、任意の文字列であるＩＤ情報組id0、id1、id2、・・・、idt（ｔは当該ＩＤ情報組が属するノードの階層数、ｔ≧１）とから、暗号文ｃとセッション鍵ｋとを求める階層型ＩＤベース暗号化方法であって、
乱数生成部が、所定の長さhLenオクテットのランダムな値ｒ∈｛０、１、２、・・・、ｐ−１｝を生成する乱数生成ステップと、
第１ハッシュ計算部が、任意の一方向関数hash1を用いて長さzLen＋keyLenオクテットのｈを、
ｈ＝hash1(ｒ)
または
ｈ＝hash1(ｒ‖id0‖id1‖id2‖・・・‖idt)
（zLen、keyLenはそれぞれ所定のオクテット長、‖は連結を表す。）により計算する第１ハッシュ計算ステップと、
分割部が、上記ｈをｈ＝ｚ‖ｋであるとして、長さzLenオクテットのｚと長さkeyLenオクテットのセッション鍵ｋとに分割する分割ステップと、
α計算部が、ｚを整数に変換した上でαをα＝ｚ mod ｐにより計算するα計算ステップと、
Ｐ計算部が、文字列を楕円曲線Ｅ上の点に写像する関数IDencを用いてＰ1、Ｐ2、・・・、Ｐtをそれぞれ、
Ｐi＝IDenc(id0‖id1‖・・・‖idi)  （１≦ｉ≦ｔ）
により計算するＰ計算ステップと、
Ｕ計算部が、Ｕ0、Ｕ2、Ｕ3、・・・、Ｕtをそれぞれ、
Ｕj＝α・Ｐj  （ｊ＝０又は２≦ｊ≦ｔ）
により計算するＵ計算ステップと、
Ｑ計算部が、任意のペアリング関数ｅを用いてＱを、
Ｑ＝ｅ(Ｑ0 、Ｐ1 )α
により計算するＱ計算ステップと、
第２ハッシュ計算部が、Ｕ0、Ｕ2、Ｕ3、・・・、ＵtとＱをオクテット列に変換した上で任意の一方向関数hash2を用いて長さhLenオクテットのｃ´を、
ｃ´＝ｒxor hash2(Ｕ0‖Ｕ2‖・・・‖Ｕt ‖Ｑ‖id0‖id1‖id2‖・・・‖idt)
（xorは排他的論理和演算を表す。）により計算する第２ハッシュ計算ステップと、
暗号文計算部が、Ｕ0、Ｕ2、Ｕ3、・・・、Ｕtをオクテット列に変換した上で暗号文ｃを、
ｃ＝Ｕ0‖Ｕ2‖Ｕ3‖・・・‖Ｕt‖ｃ´
により計算する暗号文計算ステップと、
を実行することを特徴とする階層型ＩＤベース暗号化方法。
【請求項６】
有限体Ｆｑ上で定義される楕円曲線Ｅ上の点Ｐ0及びその位数ｐと、任意の文字列であるＩＤ情報組id0、id1、id2、・・・、idt（ｔは当該ＩＤ情報組が属するノードの階層数、ｔ≧１）と、所定の方法により予め生成された、上記ＩＤ情報組に対応する秘密鍵Ｓt、Ｑ1、Ｑ2、・・・、Ｑt-1（Ｓt、Ｑ1、Ｑ2、・・・、Ｑt-1は楕円曲線Ｅ上の点)と、暗号文ｃとから、セッション鍵ｋを求める階層型ＩＤベース復号化方法であって、
第１分割部が、上記暗号文ｃがｃ＝Ｕ0‖Ｕ2‖Ｕ3‖・・・‖Ｕt‖ｃ´（‖は連結を表す。）であるとして、長さhLenオクテットのｃ´と、残りをｔ等分したＵ0、Ｕ2、Ｕ3、・・・、Ｕtとに分割する第１分割ステップと、
Ｑ計算部が、Ｕ0、Ｕ2、Ｕ3、・・・、Ｕtを楕円曲線Ｅ上の点に変換した上で任意のペアリング関数ｅを用いてＱを、
【数２】
2010154193.tif 000007
により計算するＱ計算ステップと、
第２ハッシュ計算部が、Ｕ0、Ｕ2、Ｕ3、・・・、ＵtとＱをオクテット列に変換した上で任意の一方向関数hash2を用いて長さhLenオクテットのｒを、
ｒ＝ｃ´xor hash2(Ｕ0‖Ｕ2‖Ｕ3‖・・・‖Ｕt ‖Ｑ‖id0‖id1‖id2‖・・・‖idt)
（xorは排他的論理和演算を表す。）により計算する第２ハッシュ計算ステップと、
第１ハッシュ計算部が、一方向関数hash1を用いて長さzLen＋keyLenオクテットのｈを、
ｈ＝hash1(ｒ)
または
ｈ＝hash1(ｒ‖id0‖id1‖id2‖・・・‖idt)
（zLen、keyLenはそれぞれ所定のオクテット長。）により計算する第１ハッシュ計算ステップと、
第２分割部が、上記ｈをｈ＝ｚ‖ｋであるとして、長さzLenオクテットのｚと、長さkeyLenオクテットのセッション鍵ｋとに分割する第２分割ステップと、
α計算部が、ｚを整数に変換した上でαをα＝ｚ mod ｐにより計算するα計算ステップと、
Ｐ計算部が、文字列を楕円曲線Ｅ上の点に写像する関数IDencを用いてＰ2、Ｐ3、・・・、Ｐtをそれぞれ、
Ｐi＝IDenc(id0‖id1‖・・・‖idi)  （２≦ｉ≦ｔ）
により計算するＰ計算ステップと、
検証部が、α・Ｐ0、α・Ｐ2、α・Ｐ3、・・・、α・Ｐtを計算し、それぞれＵ0、Ｕ2、Ｕ3、・・・、Ｕtと一致するか否かを検証して、一致した場合には上記セッション鍵ｋを出力し、一致しなかった場合には復号失敗を示す情報を出力する検証ステップと、
を実行することを特徴とする階層型ＩＤベース復号化方法。
【請求項７】
請求項１に記載の階層型ＩＤベース暗号化装置と請求項３に記載の階層型ＩＤベース復号化装置との組、又は、請求項２に記載の階層型ＩＤベース暗号化装置と請求項４に記載の階層型ＩＤベース復号化装置との組、のいずれかを含む階層型ＩＤベース暗号システム。
【請求項８】
請求項１〜４、７のいずれかに記載した装置又はシステムとしてコンピュータを機能させるためのプログラム。
【請求項９】
請求項８に記載したプログラムを記録したコンピュータが読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを暗号化する装置に関し、特に公開鍵暗号の暗号鍵として周知のユーザ情報を利用する階層型ＩＤベース暗号化装置及び復号化装置、それらの方法、プログラム及び記録媒体に関する。
【背景技術】
【０００２】
ＩＤベース暗号方式は、公開鍵暗号方式の公開鍵として、受信者のＩＤやＥメールアドレスなど一意に受信者を識別できる周知の個人情報を用いる公開鍵暗号方式の応用技術である。公開鍵として周知の個人情報を用いるため、一般的な公開鍵暗号方式のように公開鍵の真正性を（公開鍵証明書により）確認する必要が無く利便性に優れている。しかし、ＩＤベース暗号方式は、鍵生成センタ（以下、「ノード」という。）が秘密鍵の生成を担う方式であるところ、秘密鍵の生成を要求する受信者の認証、秘密鍵の生成、及び受信者への秘密鍵の安全な配布などの各処理を１つのノードが一手に担うことになるため、ユーザの増大により、いずれはノードの処理能力の限界に達し、それ以上はユーザを増やせなくなってしまうという問題があった。
【０００３】
そこで、ノードを階層的に複数配置することで、各ノードに受信者（のＩＤ）を適宜割り付けることによりノードにかかる負荷の分散を図ることができ、かつ、ノードの増設も容易にできる階層型ＩＤベース暗号方式が考案された（非特許文献１参照）。以下、その概要について説明する。
【０００４】
階層型ＩＤベース暗号方式においては、最上位のノード（以下、「ルート」という。）の傘下の各ノードに割り付けられた受信者の（ＩＤに対応する）秘密鍵は、基本的には当該受信者が割り付けられたノードの親ノードが、当該受信者のＩＤと当該親ノードの親ノードから受け取った自身の秘密鍵とから生成して当該受信者に配布する。
【０００５】
この一連の処理を、ノードを上位からルート、第１ノード、第２ノードという３階層で構成した場合を例にとって、図６のブロック図により具体的に説明する。この構成において、例えば、第２ノード１２に属する受信者２から第１ノード１１（ここでは受信者１）に利用要求があった時には、受信者１はまず、受信者２を認証した上で、ルート１０から自身の秘密鍵（Ｓ1、Ｑ0）を受け取る。そして、これと周知情報である受信者２のＩＤ情報組（id0、id1a、id2a）とから当該受信者２の秘密鍵（Ｓ2、Ｑ1）を生成して受信者２に配布する。第３ノード以下の層がある場合にもこれと同様な方法で秘密鍵が配布される。なお、第１ノード１１に属する受信者１からルート１０に利用要求があった時には、ルート１０は受信者１を認証した上で、自身が保持する秘密鍵ｓ0と周知情報である受信者１のＩＤ情報組（id0、id1a）とから当該受信者１の秘密鍵（Ｓ1、Ｑ0）を生成して受信者１に配布する。送信者３が受信者１に平文Ｍを暗号化して送る際には、送信者３は周知情報である受信者１のＩＤ情報組（id0、id1a）とルートの公開パラメータＰ0、ｐ、Ｑ0とを用いて平文Ｍから暗号文ｍを作成して送信し、暗号文ｍを受信した受信者１は、ルート１０から配布を受けた自身の秘密鍵（Ｓ1、Ｑ0）を用いて平文Ｍを復号する。なお、図１の構成例では各ノードには１ユーザだけが割り付けられているが、複数のユーザを割り付けても構わない。
【０００６】
従来の階層型ＩＤベース暗号方式は、初期設定、鍵生成、暗号化、復号化の４つの機能から構成される。以下、各機能について処理の一例を説明する。
【０００７】
≪初期設定≫
初期設定はルートの機能であり、ルート秘密鍵ｓ0と全ユーザに対する公開パラメータＰ0、ｐ、Ｑ0の生成を行う。また、ルートのＩＤ情報としてid0を設定する。図６の構成においては、ルート１０が当該機能を担う。
【０００８】
本方式においては、楕円曲線上の演算を行うため、有限体Ｆｑ上に定義される楕円曲線Ｅと楕円曲線Ｅ上のベースポイントＰ0（位数：ｐ）を決定した上で、以下の処理を行う。
(1)ランダムな整数ｓ0∈｛０、１、２、・・・、ｐ−１｝を生成する。
(2)Ｑ0＝ｓ0・Ｐ0を計算する。
(3)Ｐ0、ｐ、Ｑ0を出力する。
【０００９】
≪鍵生成≫
鍵生成機能はルート及びルート以外の各ノード（に属する各受信者）の機能であり、下位ノードに属する各受信者のＩＤ情報組に対応する秘密鍵を発行する。以下、第ｔ−１階層のノードが第ｔ階層のノードの受信者のために秘密鍵を発行する処理を説明する（０階層はルートとする）。なお、ｔの値により処理が３通りに分かれるため、それぞれについて説明する。図６の構成においては、鍵生成装置２１、２２が当該機能を担う。
【００１０】
＜ｔ＝１の場合＞
ルートが第１階層のノードの受信者のために秘密鍵を発行する処理である（図７参照）。
［入力］
・受信者のＩＤ情報組（周知情報、文字列）：id0、id1
・ルートの公開パラメータ（初期設定にて生成）：Ｑ0
・ルートの秘密鍵（初期設定にて生成）：ｓ0
［処理内容］
(1)Ｐ1を、Ｐ1＝IDenc(id0‖id1)により計算する。
【００１１】
（IDencは文字列を楕円曲線Ｅ上に写像する関数、‖は連結を表す）
(2)Ｓ1を、Ｓ1＝ｓ0・Ｐ1により計算する。
【００１２】
［出力］
・当該受信者のＩＤに対する秘密鍵：（Ｓ1、Ｑ0）
【００１３】
＜ｔ＝２の場合＞
第１階層のノードが第２階層のノードの受信者のために秘密鍵を発行する処理である（図８参照）。
［入力］
・受信者のＩＤ情報組（周知情報、文字列）：id0、id1、id2
・ルートの公開パラメータ（公開情報）：Ｐ0
・第１階層の秘密鍵（ルートから入手）：（Ｓ1、Ｑ0）
［処理内容］
(1)ランダムな整数ｓ1∈｛０、１、２、・・・、ｐ−１｝を生成する。
(2)Ｐ2を、Ｐ2＝IDenc(id0‖id1‖id2)により計算する。
(3)Ｓ2を、Ｓ2＝Ｓ1＋ｓ1・Ｐ2により計算する。
(4)Ｑ1を、Ｑ1＝ｓ1・Ｐ0により計算する。
［出力］
・当該受信者のＩＤに対する秘密鍵：（Ｓ2、Ｑ1）
【００１４】
＜ｔ＞２の場合＞
第２階層以降（第ｔ−１階層）の各ノードが下位階層（第ｔ階層）のノードの受信者のために秘密鍵を発行する処理である（図９参照：第２階層のノードが第３階層のノードに発行する例）。
［入力］
・受信者のＩＤ情報組（周知情報、文字列）：id0、id1、・・・、idt
・ルートの公開パラメータ（公開情報）：Ｐ0
・第ｔ−１階層の秘密鍵（第ｔ−２階層から入手）
：（Ｓt、Ｑ1、Ｑ2、・・・、Ｑt-2）
［処理内容］
(1)ランダムな整数ｓt-1∈｛０、１、２、・・・、ｐ−１｝を生成する。
(2)Ｐtを、Ｐt＝IDenc(id0‖id1‖・・・‖idt)により計算する。
(3)Ｓtを、Ｓt＝Ｓt-1＋ｓt-1・Ｐtにより計算する。
(4)Ｑt-1を、Ｑt-1＝ｓt-1・Ｐ0により計算する。
［出力］
・当該受信者のＩＤに対する秘密鍵：（Ｓt、Ｑ1、Ｑ2、・・・、Ｑt-1）
【００１５】
≪暗号化≫
暗号化機能は送信者のための機能であり、受信者のＩＤ情報組とルートの公開パラメータとを用いて、平文Ｍが暗号化された暗号文ｃを生成する。図６〜９においては、階層型ＩＤベース暗号化装置３００がこれにあたる。
(1)ランダムな値ｒ∈｛０、１、２、・・・、ｐ−１｝を生成して出力する。
(2)ＩＤ情報組id0、id1、id2、・・・、idtに基づき、Ｐ1、Ｐ2、・・・、Ｐtをそれぞれ、
Ｐi＝IDenc(id0‖id1‖・・・‖idi)  （１≦ｉ≦ｔ）
により計算する。
(3)Ｐ0、Ｐ2、Ｐ3、・・・、Ｐtとｒとから、Ｕ0、Ｕ2、Ｕ3、・・・、Ｕtをそれぞれ、
Ｕj＝ｒ・Ｐj  （ｊ＝０又は２≦ｊ≦ｔ）
により計算する。
(4)Ｑ0とＰ1とｒとから、任意のペアリング関数ｅを用いてＱを、Ｑ＝ｅ(Ｑ0 、Ｐ1 )ｒにより計算する。なお、ペアリング関数ｅとは２入力１出力の関数で、楕円曲線Ｅ上の２点Ｐ、Ｑについて、ｅ(ａＰ、ｂＱ)＝ｅ(Ｐ、Ｑ)ab＝ｅ(ｂＰ、ａＱ)というような双線形性を成立させる関数である。
(5)Ｑと平文Ｍとが入力され、所定の長さのデータ列を出力する任意の一方向関数hashを用いてｃ´を、
ｃ´＝Ｍxor hash(Ｑ)
（xorは排他的論理和演算を表す）により計算する。
(6)Ｕ0、Ｕ2、Ｕ3、・・・、Ｕtとｃ´とが入力され、Ｕjをデータ列に変換した上で暗号文ｃを、
ｃ＝Ｕ0‖Ｕ2‖Ｕ3‖・・・‖Ｕt‖ｃ´
により計算して出力する。
【００１６】
≪復号化≫
復号化機能は受信者のための機能であり、当該受信者のＩＤ情報組に対応する秘密鍵を用いて暗号文ｃから平文Ｍを復号する。図６〜９においては、階層型ＩＤベース暗号化装置４００がこれにあたる。
(1)暗号文ｃが入力され、ｃ＝Ｕ0‖Ｕ2‖Ｕ3‖・・・‖Ｕt‖ｃ´であるとして、Ｕ0、Ｕ2、Ｕ3、・・・、Ｕtとｃ´とに分割する。
(2) Ｕ0、Ｕ2、Ｕ3、・・・、Ｕtと秘密鍵Ｓt、Ｑ1、Ｑ2、・・・、Ｑt-1とから、Ｕjを楕円曲線Ｅ上の点に変換した上でペアリング関数ｅを用いてＱを、
【００１７】
【数３】
2010154193.tif 000003
【００１８】
により計算する。
(3)ｃ´とＱとから、一方向関数hashを用いて平文Ｍを、
Ｍ＝ｃ´xor hash(Ｑ)
により計算して出力する。なお、計算に際してはＱをデータ列に変換した上で行う。
【非特許文献１】Craig Gentry and Alice Silverberg、"Hierarchical ID-Based Criptography"、ASIACRYPT2002、LNCS 2501、2002年、p.548-566
【非特許文献２】日本電信電話株式会社、「PSEC-KEM仕様書 version 2.2」、[online]、平成20年4月14日、[平成20年11月26日検索]、インターネット<URL : http://info.isl.ntt.co.jp/crypt/psec/dl/iso/psec-kem_v2.2_20080414j.pdf>
【発明の開示】
【発明が解決しようとする課題】
【００１９】
図１０は、上記説明した従来の階層型ＩＤベース暗号方式における平文Ｍに対する暗号化処理形態を端的に示したものである。上記の機能説明及びこの図からわかるように、従来の階層型ＩＤベース暗号方式は、公開パラメータＰにより平文Ｍを直接暗号化し、暗号文ｍを秘密鍵Ｓを用いて復号するという、ごく一般的な公開鍵暗号方式を基礎としている。
【００２０】
各種公開鍵暗号方式のうち、階層型ＩＤベース暗号方式への応用手法が確立されているのは、現状では楕円曲線暗号を用いる方式（非特許文献１参照）に限られている。しかし、楕円曲線暗号を用いる方式においては、平文データを楕円曲線上の点に対応させて暗号化処理を行うため、一度の処理で暗号化できる平文の長さ（データ量）が楕円曲線上の点の数（例えば１６０ｂｉｔ）程度に限られてしまうという問題があった。
【００２１】
楕円曲線暗号による公開鍵暗号方式のメリットを生かしつつ、任意長の平文を効率的に暗号化することを可能とする方式として、ＰＳＥＣ−ＫＥＭ（Provably Secure Elliptic Curve encryption - Key Encapsulation Mechanisms）が実現されている（非特許文献２参照）。以下、その概要について説明する。
【００２２】
ＫＥＭ（鍵カプセル化メカニズム）は、共通鍵暗号方式で用いるセッション鍵の生成・配送に公開鍵暗号方式を用いるフレームワークであり、当該セッション鍵を用いて平文の暗号化及び復号を行う共通鍵暗号方式によるフレームワークであるＤＥＭ（Data Encapsulation Mechanisms：データカプセル化メカニズム）とセットでハイブリッド暗号を実現するものである。このようなＫＥＭ−ＤＥＭ構成を用いることで、公開鍵暗号方式の「鍵の管理・配布が容易」というメリットと、共通鍵暗号方式の「暗号化・復号化処理が高速であり、かつ、暗号化できる平文の長さに制約が無い」というメリットの双方を享受することができる。図１１は、ＫＥＭ−ＤＥＭ構成における平文に対する暗号化処理形態を示したものである。この構成においては、まず、送信者のＫＥＭ暗号化装置５００において、受信者の公開鍵Ｐを用いて共通鍵であるセッション鍵ｋを生成するとともに、このセッション鍵ｋを含む暗号文ｃを生成して送信する。そして、受信者のＫＥＭ復号化装置６００において暗号文ｃを受信し、これを秘密鍵Ｓを用いて復号してセッション鍵ｋを取り出す。このようにセッション鍵ｋを共有した後、送信者のＤＥＭ暗号化装置７００においてセッション鍵ｋを用いて平文Ｍを暗号化して送信し、受信者のＤＥＭ復号化装置８００において、受信した暗号文ｍをセッション鍵ｋを用いて復号し平文Ｍを取り出す。
【００２３】
ＰＳＥＣ−ＫＥＭは、ＫＥＭを楕円曲線暗号により構成する方式であり、上記のメリットに加え、「安全性を維持しつつ鍵長を短く構成することが可能」、「鍵生成処理が高速」などのメリットも享受できる。ＰＳＥＣ−ＫＥＭは、鍵生成、暗号化、復号化の３つの機能から構成される。以下、各機能を簡単に説明する。
【００２４】
〔鍵生成機能〕
ＰＳＥＣ−ＫＥＭでは、楕円曲線上の演算を行うため、まず、有限体Ｆｑ上に定義される楕円曲線Ｅと楕円曲線Ｅ上のベースポイントＰ0（位数：ｐ）を決定した上で以下の処理を行い、ベースポイントＰ0とその位数ｐ、公開鍵Ｐ＝Ｑ0、及び秘密鍵Ｓ＝ｓ0を出力する。
(1)ランダムな整数ｓ0∈｛０、１、２、・・・、ｐ−１｝を生成する。
(2)Ｑ0＝ｓ0・Ｐ0を計算する。
(3)ベースポイントＰ0とその位数ｐ、公開鍵Ｐ＝Ｑ0、及び秘密鍵Ｓ＝ｓ0をそれぞれ出力する。
【００２５】
〔暗号化機能〕
ベースポイントＰ0とその位数ｐ、及び公開鍵Ｐ＝Ｑ0を入力とし、暗号文ｃ及びセッション鍵ｋを出力する。
(1)所定の長さhLenオクテットのランダムな値ｒ∈｛０、１、２、・・・、ｐ−１｝を生成する。
(2)長さzLen＋keyLenオクテットのｈ＝KDF(0x00000000‖ｒ)を生成する。ここで、zLen、keyLenはそれぞれ所定のオクテット長であり、KDF()は任意の鍵導出関数であり、‖はオクテット列の連結を表す。
(3)ｈ＝ｚ‖ｋとして、ｈを長さzLenオクテットのｚと長さkeyLenオクテットのｋとに分割する。
(4)ｚを整数に変換した上で、α＝ｚ mod ｐを計算する。なお、計算は行う。
(5)Ｕ0＝α・Ｐ0、Ｑ＝α・Ｑ0を計算する。
(6)Ｕ0、Ｑをオクテット列に変換した上で、長さhLenオクテットのｈ´を
ｈ´＝KDF(0x00000001‖Ｕ0‖Ｑ)により計算する。
(7)長さhLenオクテットのｃ´をｃ´＝ｒ xor ｈ´により計算する。ここで、xorは排他的論理和演算を表す。
(8) Ｕ0をオクテット列に変換した上で、暗号文ｃ＝Ｕ0‖ｃ´及びセッション鍵ｋとを出力する。
【００２６】
〔復号化機能〕
秘密鍵Ｓ＝ｓ0、暗号文ｃ、ベースポイントＰ0とその位数ｐを入力とし、セッション鍵ｋ（又は復号失敗を示す情報）を出力する。
(1)暗号文ｃ＝Ｕ0‖ｃ´を、Ｕ0と長さhLenオクテットのｃ´とに分割する。
(2)Ｕ0を楕円曲線Ｅ上の点に変換した上で、Ｑ＝ｓ0・Ｕ0を計算する。
(3)Ｑをオクテット列に変換した上で、長さhLenオクテットのｈ´を
ｈ´＝KDF(0x00000001‖Ｕ0‖Ｑ)により計算する。
(4)長さhLenオクテットのｒをｒ＝ｃ´xor ｈ´により計算する。
(5)長さzLen＋keyLenオクテットのｈをｈ＝KDF(0x00000000‖ｒ)により計算  する。
(6)ｈ＝ｚ‖ｋとして、ｈを長さzLenオクテットのｚと長さkeyLenオクテットのｋとに分割する。
(7)ｚを整数に変換した上で、α＝ｚ mod ｐを計算する。
(8)Ｕ0＝α・Ｐ0が成立するか否かをチェックし、成立すればセッション鍵ｋを出力し、成立しなければ"INVALID"等の復号失敗を示す情報を出力する。
【００２７】
以上説明したＰＳＥＣ−ＫＥＭは、楕円曲線暗号による一般的な公開鍵暗号方式をＫＥＭ−ＤＥＭ構成に対応させる技術、すなわちＫＥＭ化する技術である。もし階層型ＩＤベース暗号方式についても図１に示すようにＫＥＭ化することができれば、平文の暗号化は共通鍵暗号により行われるため、任意長の平文を暗号化することが可能となる。本発明の目的は、ＰＳＥＣ−ＫＥＭを階層型ＩＤベース暗号方式に応用し、ＫＥＭ化された階層型ＩＤベース暗号化装置及び復号化装置を実現することにある。
【課題を解決するための手段】
【００２８】
本発明の階層型ＩＤベース暗号化装置は、乱数生成部と第１ハッシュ計算部と分割部とα計算部とＰ計算部とＵ計算部とＱ計算部と第２ハッシュ計算部と暗号文計算部とから構成される。
【００２９】
乱数生成部は、所定の長さhLenオクテットのランダムな値ｒ∈｛０、１、２、・・・、ｐ−１｝を生成して出力する。
【００３０】
第１ハッシュ計算部は、ｒが入力され、任意の一方向関数hash1を用いて長さzLen＋keyLenオクテットのｈを、
ｈ＝hash1(ｒ)
（zLen、keyLenはそれぞれ所定のオクテット長）により計算して出力する。
【００３１】
分割部は、ｈが入力され、ｈ＝ｚ‖ｋ（‖は連結を表す）であるとして、長さzLenオクテットのｚと、長さkeyLenオクテットのセッション鍵ｋとに分割して出力する。
【００３２】
α計算部は、ｚと公開パラメータｐとが入力され、ｚを整数に変換した上でαをα＝ｚ mod ｐにより計算して出力する。
【００３３】
Ｐ計算部は、ＩＤ情報組id0、id1、id2、・・・、idtが入力され、文字列を楕円曲線Ｅ上の点に写像する関数IDencを用いてＰ1、Ｐ2、・・・、Ｐtをそれぞれ、
Ｐi＝IDenc(id0‖id1‖・・・‖idi)  （１≦ｉ≦ｔ）
により計算して出力する。
【００３４】
Ｕ計算部は、Ｐ2、Ｐ3、・・・、Ｐtとαと公開パラメータＰ0とが入力され、Ｕ0、Ｕ2、Ｕ3、・・・、Ｕtをそれぞれ、
Ｕj＝α・Ｐj  （ｊ＝０又は２≦ｊ≦ｔ）
により計算して出力する。
【００３５】
Ｑ計算部は、Ｐ1とαと公開パラメータＱ0とが入力され、任意のペアリング関数ｅを用いてＱを、
Ｑ＝ｅ(Ｑ0 、Ｐ1 )α
により計算して出力する。
【００３６】
第２ハッシュ計算部は、ｒとＵ0、Ｕ2、Ｕ3、・・・、ＵtとＱと受信者のＩＤ情報組id0、id1、id2、・・・、idtとが入力され、Ｕ0、Ｕ2、Ｕ3、・・・、ＵtとＱをオクテット列に変換した上で任意の一方向関数hash2を用いて長さhLenオクテットのｃ´を、
ｃ´＝ｒxor hash2(Ｕ0‖Ｕ2‖・・・‖Ｕt ‖Ｑ‖id0‖id1‖id2‖・・・‖idt)
（xorは排他的論理和演算を表す）により計算して出力する。
【００３７】
暗号文計算部は、Ｕ0、Ｕ2、Ｕ3、・・・、Ｕtとｃ´とが入力され、Ｕ0、Ｕ2、Ｕ3、・・・、Ｕtをオクテット列に変換した上で暗号文ｃを、
ｃ＝Ｕ0‖Ｕ2‖Ｕ3‖・・・‖Ｕt‖ｃ´
により計算して出力する。
【００３８】
また、本発明の階層型ＩＤベース復号化装置は、第１分割部とＱ計算部と第２ハッシュ計算部と第１ハッシュ計算部と第２分割部とα計算部とＰ計算部と検証部とから構成される。
【００３９】
第１分割部は、暗号文ｃが入力され、ｃ＝Ｕ0‖Ｕ2‖Ｕ3‖・・・‖Ｕt‖ｃ´であるとして、長さhLenオクテットのｃ´と、残りをｔ等分したＵ0、Ｕ2、Ｕ3、・・・、Ｕtとに分割する。
【００４０】
Ｑ計算部は、Ｕ0、Ｕ2、Ｕ3、・・・、Ｕtと所定の方法により予め生成された秘密鍵Ｓt、Ｑ1、Ｑ2、・・・、Ｑt-1とが入力され、Ｕ0、Ｕ2、Ｕ3、・・・、Ｕtを楕円曲線Ｅ上の点に変換した上でペアリング関数ｅを用いてＱを、
【００４１】
【数４】
2010154193.tif 000004
により計算して出力する。
【００４２】
第２ハッシュ計算部は、Ｕ0、Ｕ2、Ｕ3、・・・、Ｕtとｃ´とＱとＩＤ情報組id0、id1、id2、・・・、idtとが入力され、Ｕ0、Ｕ2、Ｕ3、・・・、ＵtとＱをオクテット列に変換した上で一方向関数hash2を用いて長さhLenオクテットのｒを、
ｒ＝ｃ´xor hash2(Ｕ0‖Ｕ2‖Ｕ3‖・・・‖Ｕt ‖Ｑ‖id0‖id1‖id2‖・・・‖idt)
（xorは排他的論理和演算を表し、‖は連結を表す）により計算して出力する。
【００４３】
第１ハッシュ計算部は、ｒとＩＤ情報組id0、id1、id2、・・・、idtとが入力され、一方向関数hash1を用いて長さzLen＋keyLenオクテットのｈを、
ｈ＝hash1(ｒ)
（zLen、keyLenはそれぞれ所定のオクテット長）により計算して出力する。
【００４４】
第２分割部は、ｈが入力され、ｈ＝ｚ‖ｋであるとして、長さzLenオクテットのｚと、長さkeyLenオクテットのセッション鍵ｋとに分割して出力する。
【００４５】
α計算部は、ｚとｐとが入力され、ｚを整数に変換した上でαをα＝ｚ mod ｐにより計算して出力する。
【００４６】
Ｐ計算部は、ＩＤ情報組id0、id1、id2、・・・、idtが入力され、文字列を楕円曲線Ｅ上の点に写像する関数IDencを用いてＰ2、Ｐ3、・・・、Ｐtをそれぞれ、
Ｐi＝IDenc(id0‖id1‖・・・‖idi)  （２≦ｉ≦ｔ）
により計算して出力する。
【００４７】
検証部は、Ｐ0、Ｐ2、Ｐ3、・・・、Ｐtとαとセッション鍵ｋとが入力され、α・Ｐ0、α・Ｐ2、α・Ｐ3、・・・、α・Ｐtを計算し、それぞれＵ0、Ｕ2、Ｕ3、・・・、Ｕtと一致するか否かを検証する。そして、一致した場合にはセッション鍵ｋを出力し、一致しなかった場合には復号失敗を示す情報を出力する。
【発明の効果】
【００４８】
本発明の階層型ＩＤベース暗号化装置及び復号化装置により、階層型ＩＤベース暗号方式をＫＥＭ化することができるため、任意長の平文を暗号化することが可能となる。
【発明を実施するための最良の形態】
【００４９】
上記の背景技術でも記したとおり、階層型ＩＤベース暗号方式は、トポロジー面ではルートを頂点に、割り付けられた受信者に対して秘密鍵を発行するノードが、階層的に複数配置されることを特徴とし、機能面では初期設定、鍵生成、暗号化、復号化の４つの機能から構成されることを特徴とするが、本発明においてもこれらの特徴は同様である。
【００５０】
４つの機能のうち、ＫＥＭ化にかかわる部分は暗号化機能と復号化機能であり、本発明はこれらの機能にＰＳＥＣ−ＫＥＭの技術を応用したものである。以下、各機能について説明する。なお、初期設定機能と鍵生成機能については、従来技術と同様であり、それらの機能における入出力及び処理は上記背景技術にて示したとおりであるため、ここでは説明を省略する。
【００５１】
≪暗号化≫
本発明の階層型ＩＤベース暗号化装置１００の機能構成例を図２に、処理フロー例を図３にそれぞれ示す。本発明の階層型ＩＤベース暗号化装置１００は、乱数生成部１０１と第１ハッシュ計算部１０２と分割部１０３とα計算部１０４とＰ計算部１０５とＵ計算部１０６とＱ計算部１０７と第２ハッシュ計算部１０８と暗号文計算部１０９とから構成される。
【００５２】
乱数生成部１０１は、所定の長さhLenオクテットのランダムな値ｒ∈｛０、１、２、・・・、ｐ−１｝を生成して出力する（Ｓ１）。安全性の確保にあたり、hLenは１６オクテット以上が目安となるが、可能であれば３２オクテット以上とすることが望ましい。
【００５３】
第１ハッシュ計算部１０２は、ｒが入力され、任意の一方向関数hash1を用いて長さzLen＋keyLenオクテットのｈを、ｈ＝hash1(ｒ)により計算して出力する（Ｓ２）。ここで、zLen、keyLenはそれぞれ所定のオクテット長である。安全性の確保にあたり、zLenは３６オクテット以上が目安となるが、可能であれば４８オクテット以上とすることが望ましい。また、セッション鍵長にあたるkeyLenは３２オクテット以上とすることが望ましい。
【００５４】
なおｈは、ｈ＝hash1(ｒ‖id0‖id1‖id2‖・・・‖idt)により計算してもよい。この場合は、第１ハッシュ計算部１０２には受信者のＩＤ情報組id0、id1、id2、・・・、idtが更に入力され、また、復号側の第１ハッシュ計算部２０４においてもｈをｈ＝hash1(ｒ‖id0‖id1‖id2‖・・・‖idt)により計算する。
【００５５】
分割部１０３は、ｈが入力され、ｈ＝ｚ‖ｋであるとして、長さzLenオクテットのｚと、長さkeyLenオクテットのセッション鍵ｋとに分割して出力する（Ｓ３）。ここで出力されたセッション鍵ｋが、受信者と共有するセッション鍵である。
【００５６】
α計算部１０４は、ｚと公開パラメータｐとが入力され、ｚを整数に変換した上でαをα＝ｚ mod ｐにより計算して出力する（Ｓ４）。
【００５７】
Ｐ計算部１０５は、受信者のＩＤ情報組id0、id1、id2、・・・、idtが入力され、文字列を楕円曲線Ｅ上の点に写像する関数IDencを用いてＰ1、Ｐ2、・・・、Ｐtをそれぞれ、
Ｐi＝IDenc(id0‖id1‖・・・‖idi)  （１≦ｉ≦ｔ）
により計算して出力する（Ｓ５）。
【００５８】
Ｕ計算部１０６は、Ｐ2、Ｐ3、・・・、Ｐtとαと公開パラメータＰ0とが入力され、Ｕ0、Ｕ2、Ｕ3、・・・、Ｕtをそれぞれ、
Ｕj＝α・Ｐj  （ｊ＝０又は２≦ｊ≦ｔ）
により計算して出力する（Ｓ６）。
【００５９】
Ｑ計算部１０７は、Ｐ1とαと公開パラメータＱ0とが入力され、任意のペアリング関数ｅを用いてＱを、Ｑ＝ｅ(Ｑ0 、Ｐ1 )αにより計算して出力する（Ｓ７）。
【００６０】
第２ハッシュ計算部１０８は、ｒとＵ0、Ｕ2、Ｕ3、・・・、ＵtとＱと受信者のＩＤ情報組id0、id1、id2、・・・、idtとが入力され、Ｕj、Ｑをオクテット列に変換した上で任意の一方向関数hash2を用いて長さhLenオクテットのｃ´を、
ｃ´＝ｒxor hash2(Ｕ0‖Ｕ2‖・・・‖Ｕt ‖Ｑ‖id0‖id1‖id2‖・・・‖idt)
（xorは排他的論理和演算を表す）により計算して出力する（Ｓ８）。
【００６１】
暗号文計算部１０９は、Ｕ0、Ｕ2、Ｕ3、・・・、Ｕtとｃ´とが入力され、Ｕjをオクテット列に変換した上で暗号文ｃを、
ｃ＝Ｕ0‖Ｕ2‖Ｕ3‖・・・‖Ｕt‖ｃ´
により計算して出力する（Ｓ９）。
【００６２】
≪復号化≫
本発明の階層型ＩＤベース復号化装置２００の機能構成例を図４に、処理フロー例を図５にそれぞれ示す。本発明の階層型ＩＤベース復号化装置２００は、第１分割部２０１とＱ計算部２０２と第２ハッシュ計算部２０３と第１ハッシュ計算部２０４と第２分割部２０５とα計算部２０６とＰ計算部２０７と検証部２０８とから構成される。階層型ＩＤベース復号化装置２００は、上記の背景技術にて説明した鍵生成機能により予め生成された秘密鍵（Ｓt、Ｑ1、Ｑ2、・・・、Ｑt-1）を上位ノードから入手して処理を行う。
【００６３】
第１分割部２０１は、暗号文ｃが入力され、ｃ＝Ｕ0‖Ｕ2‖Ｕ3‖・・・‖Ｕt‖ｃ´であるとして、長さhLenオクテットのｃ´と、残りをｔ等分したＵ0、Ｕ2、Ｕ3、・・・、Ｕtとに分割する（Ｓ１１）。
【００６４】
Ｑ計算部２０２は、Ｕ0、Ｕ2、Ｕ3、・・・、Ｕtと秘密鍵Ｓt、Ｑ1、Ｑ2、・・・、Ｑt-1とが入力され、Ｕjを楕円曲線Ｅ上の点に変換した上でペアリング関数ｅを用いてＱを、
【００６５】
【数５】
2010154193.tif 000005
により計算して出力する（Ｓ１２）。
【００６６】
第２ハッシュ計算部２０３は、Ｕ0、Ｕ2、Ｕ3、・・・、Ｕtとｃ´とＱとＩＤ情報組id0、id1、id2、・・・、idtとが入力され、Ｑをオクテット列に変換した上で一方向関数hash2を用いて長さhLenオクテットのｒを、
ｒ＝ｃ´xor hash2(Ｕ0‖Ｕ2‖Ｕ3‖・・・‖Ｕt‖Ｑ‖id0‖id1‖id2‖・・・‖idt)
により計算して出力する（Ｓ１３）。
【００６７】
第１ハッシュ計算部２０４は、ｒが入力され、一方向関数hash1を用いて長さzLen＋keyLenオクテットのｈを、
ｈ＝hash1(ｒ)
により計算して出力する（Ｓ１４）。
【００６８】
なお、送信側の第１ハッシュ計算部１０２において、ｈをｈ＝hash1(ｒ‖id0‖id1‖id2‖・・・‖idt)により計算した場合には、第２ハッシュ計算部２０４においても受信者のＩＤ情報組id0、id1、id2、・・・、idtが更に入力され、ｈをｈ＝hash1(ｒ‖id0‖id1‖id2‖・・・‖idt)により計算する。
【００６９】
第２分割部２０５は、ｈが入力され、ｈ＝ｚ‖ｋであるとして、長さzLenオクテットのｚと、長さkeyLenオクテットのセッション鍵ｋとに分割して出力する（Ｓ１５）。
【００７０】
α計算部２０６は、ｚと公開パラメータｐとが入力され、ｚを整数に変換した上でαをα＝ｚ mod ｐにより計算して出力する（Ｓ１６）。
【００７１】
Ｐ計算部２０７は、受信者のＩＤ情報組id0、id1、id2、・・・、idtが入力され、文字列を楕円曲線Ｅ上の点に写像する関数IDencを用いてＰ2、Ｐ3、・・・、Ｐtをそれぞれ、
Ｐi＝IDenc(id0‖id1‖・・・‖idi)  （２≦ｉ≦ｔ）
により計算して出力する（Ｓ１７）。
【００７２】
検証部２０８は、Ｐ2、Ｐ3、・・・、Ｐtとαと公開パラメータＰ0とセッション鍵ｋとが入力され、まず、α・Ｐ0、α・Ｐ2、α・Ｐ3、・・・、α・Ｐtを計算する（Ｓ１８ａ）。そして、それぞれＵ0、Ｕ2、Ｕ3、・・・、Ｕtと一致するか否かを検証し、一致した場合には真正なセッション鍵であると判断してセッション鍵ｋを出力し、不一致の場合には不真正な暗号文であると判断し、セッション鍵ｋを出力せずに"INVALID"などの復号失敗を表す情報を出力する（Ｓ１８ｂ）。
【００７３】
以上のように構成することで、階層型ＩＤベース暗号化装置及び復号化装置をＫＥＭ化することができ、送信者と受信者双方でセッション鍵ｋを共有することができる。そのため、このセッション鍵ｋを用いて平文の暗号化を行うことで、階層型ＩＤベース暗号の利点を生かしつつ、暗号化する平文長の制約を無くすことができる。
【００７４】
本発明における階層型ＩＤベース暗号化装置及び復号化装置、それらの方法、プログラム及び記録媒体は、上記の実施形態に限定されるものではなく、本発明を逸脱しない範囲で適宜変更が可能である。また、上記に説明した処理は記載の順に従った時系列において実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行してもよい。
【００７５】
また、階層型ＩＤベース暗号化装置及び復号化装置における処理機能をコンピュータによって実現する場合、階層型ＩＤベース暗号化装置及び復号化装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより上記階層型ＩＤベース暗号化装置及び復号化装置における処理機能がコンピュータ上で実現される。
【００７６】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等を、光磁気記録媒体として、ＭＯ（Magnet-Optical disc）等を、半導体メモリとしてＥＥＰ−ＲＯＭ（Electronically Erasable and Programmable-Read Only Memory）等を用いることができる。
【００７７】
また、このプログラムの流通は、例えば、このプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等をすることによって行う。更に、このプログラムをサーバコンピュータの記録装置に格納しておき、ネットワークを介してサーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【００７８】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦自己の記録装置に格納する。そして、処理の実行時、このコンピュータは自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、更に、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータからこのコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって上記の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。また、この形態ではコンピュータ上で所定のプログラムを実行させることにより、階層型ＩＤベース暗号化装置及び復号化装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【図面の簡単な説明】
【００７９】
【図１】ＫＥＭ−ＤＥＭ構成を階層型ＩＤベース暗号方式に適用した場合の暗号化処理形態のイメージ図。
【図２】本発明の階層型ＩＤベース暗号化装置１００の機能構成例を示す図。
【図３】本発明の階層型ＩＤベース暗号化装置１００の処理フロー例を示す図。
【図４】本発明の階層型ＩＤベース復号化装置２００の機能構成例を示す図。
【図５】本発明の階層型ＩＤベース暗号化装置２００の処理フロー例を示す図。
【図６】従来の階層型ＩＤベース暗号方式の構成要素相互の関係を示す図。
【図７】階層数ｔ＝１の場合の秘密鍵発行に際しての構成要素相互の関係を示す図。
【図８】階層数ｔ＝２の場合の秘密鍵発行に際しての構成要素相互の関係を示す図。
【図９】階層数ｔ＞２の場合の秘密鍵発行に際しての構成要素相互の関係を示す図。
【図１０】従来の階層型ＩＤベース暗号方式における平文に対する暗号化処理形態を説明する図。
【図１１】ＫＥＭ−ＤＥＭ構成における平文に対する暗号化処理形態を説明する図。
【図１】
2010154193.tif 000008
【図２】
2010154193.tif 000009
【図３】
2010154193.tif 000010
【図４】
2010154193.tif 000011
【図５】
2010154193.tif 000012
【図６】
2010154193.tif 000013
【図７】
2010154193.tif 000014
【図８】
2010154193.tif 000015
【図９】
2010154193.tif 000016
【図１０】
2010154193.tif 000017
【図１１】
2010154193.tif 000018