(57)【特許請求の範囲】
【請求項１】
少なくとも送信装置、受信装置、復号履歴蓄積サーバを有する暗号化システムであって、
ｐは素数、Ｇ１は位数ｐの巡回加算群、Ｇ２は位数ｐの巡回群、ｅはＧ１×Ｇ１→Ｇ２のように写像する双線形ペアリング関数、Ｈは群Ｇ２の元をｎビットのビット列に写像するハッシュ関数を示す記号、Ｐは群Ｇ１の生成元、ｓは０以上ｐ−１以下の整数、ＰＰｕｂ＝ｓＰ、（Ｐ，ＰＰｕｂ）は公開パラメータ、MaptoPointＧ1は任意長のビット列を群Ｇ１の元に写像する関数、ＩＤは任意長のビット列、ＱＩＤ＝MaptoPointＧ1（ＩＤ）、Ｋ０はＫ０＝ｓＱＩＤのように求められた秘密鍵、Ｋ３’は０以上ｐ−１以下の整数から選択された分割用乱数、Ｋ１は秘密鍵Ｋ０と分割用乱数Ｋ３’を用いて所定の方法１で求められた受信用秘密鍵、Ｋ３は分割用乱数Ｋ３’を用いて所定の方法２で求められた代理計算用秘密鍵、ｒは０以上ｐ−１以下の整数から選択された乱数、ＵはＵ＝ｒＰのように求められたセッション情報、ｇＩＤはｇＩＤ＝ｅ（ＱＩＤ，ＰＰｕｂ）のように求められた値、ＶはＨ（ｇＩＤｒ）を用いて所定の方法３で平文Ｍを暗号化した暗号文、ｖは暗号文Ｖを識別する暗号文識別情報、ｈは暗号文Ｖを識別する暗号文識別情報を生成する関数を示す記号であり、
前記送信装置は、少なくとも前記受信装置に暗号文Ｖを送信し、前記復号履歴蓄積サーバにセッション情報Ｕと暗号文識別情報ｖとを送信する暗号文送信部を備え、
前記受信装置は、
受信用秘密鍵Ｋ１を記録する復号記録部と、
受信用秘密鍵Ｋ１を用いて所定の方法４でリクエストＲｅｑを作成するリクエスト作成部と、
前記リクエストＲｅｑ、ｖ＝ｈ（Ｖ）を満たす暗号文識別情報ｖ、当該受信装置を特定する受信装置識別情報ＲＩＤとを前記復号履歴蓄積サーバに送信するリクエスト送信部と、
前記復号履歴蓄積サーバから受信したレスポンスＲｅｓを用いて前記所定の方法２と前記所定の方法４に対応した方法である所定の方法５にしたがってｇＩＤｒの値Ｗを求め、Ｈ（Ｗ）を用いて前記所定の方法３に対応した方法である所定の方法６にしたがって暗号文Ｖを復号して平文Ｍ’に復号する復号部と、
を備え、
前記復号履歴蓄積サーバは、
受信装置識別情報ＲＩＤに対応付けて代理計算用秘密鍵Ｋ３を記録する代理記録部と、
前記送信装置から受信したセッション情報Ｕと暗号文識別情報ｖとを対応付けて記録するセッション情報蓄積部と、
前記受信装置から受信した暗号文識別情報ｖと一致する前記セッション情報蓄積部に記録された暗号文識別情報ｖに対応付けられたセッション情報Ｕを取得し、前記受信装置から受信した受信装置識別情報ＲＩＤと一致する前記代理記録部に記録された受信装置識別情報ＲＩＤに対応付けられた代理計算用秘密鍵Ｋ３を取得し、前記所定の方法１と前記所定の方法２と前記所定の方法４に対応した方法である所定の方法７にしたがって前記セッション情報Ｕと前記代理計算用秘密鍵Ｋ３を用いた計算を行ってレスポンスＲｅｓを求めるレスポンス作成部と、
前記レスポンスＲｅｓを前記受信装置に送信するレスポンス送信部と、
レスポンスＲｅｓを前記受信装置に送信したときは、暗号文識別情報ｖと、受信装置識別情報ＲＩＤと、時刻とを対応付けて記録する履歴蓄積部と、
を備える
暗号化システム。
【請求項２】
請求項１記載の暗号化システムであって、
前記所定の方法２では、
保護用秘密鍵Ｋ２を０以上ｐ−１以下の整数から選択し、分割用乱数Ｋ３’と保護用秘密鍵Ｋ２を用いて所定の方法２’にしたがって代理計算用秘密鍵Ｋ３を求め、
前記復号記録部は保護用秘密鍵Ｋ２も記録し、
前記所定の方法５は、前記所定の方法２’にも対応した方法で、保護用秘密鍵Ｋ２も用いて値Ｗを求める
ことを特徴とする暗号化システム。
【請求項３】
請求項１記載の暗号化システムであって、
（＋）はビット単位の排他的論理和を示す記号、＾はべき乗を示す記号とし、
前記所定の方法１では、受信用秘密鍵Ｋ１を
Ｋ１＝Ｋ３’Ｋ０
のように求め、
前記所定の方法２では、代理計算用秘密鍵Ｋ３を
Ｋ３＝Ｋ３’−１
のように求め、
前記所定の方法３では、暗号文Ｖを
Ｖ＝Ｍ（＋）Ｈ（ｇＩＤｒ）
のように求め、
前記所定の方法４では、前記リクエスト作成部が、乱数ｒｔｍｐを０以上ｐ−１以下の整数から選択し、隠蔽鍵Ｋｔｍｐを
Ｋｔｍｐ＝ｒｔｍｐＫ１
を求め、リクエストＲｅｑを隠蔽鍵Ｋｔｍｐを含む情報とし、
前記所定の方法５では、値Ｗを
Ｗ＝Ｒｅｓ＾ｒｔｍｐ−１
のように求め、
前記所定の方法６では、平文Ｍ’を
Ｍ’＝Ｖ（＋）Ｈ（Ｗ）
のように求め、
前記所定の方法７では、レスポンスＲｅｓを
Ｒｅｓ＝ｅ（Ｋｔｍｐ，Ｕ）＾Ｋ３
のように求める
ことを特徴とする暗号化システム。
【請求項４】
請求項２記載の暗号化システムであって、
（＋）はビット単位の排他的論理和を示す記号、＾はべき乗を示す記号とし、
前記所定の方法１では、受信用秘密鍵Ｋ１を
Ｋ１＝Ｋ３’Ｋ０
のように求め、
前記所定の方法２’では、代理計算用秘密鍵Ｋ３を
Ｋ３＝（Ｋ２Ｋ３’）−１
のように求め、
前記所定の方法３では、暗号文Ｖを
Ｖ＝Ｍ（＋）Ｈ（ｇＩＤｒ）
のように求め、
前記所定の方法４では、前記リクエスト作成部が、乱数ｒｔｍｐを０以上ｐ−１以下の整数から選択し、隠蔽鍵Ｋｔｍｐを
Ｋｔｍｐ＝ｒｔｍｐＫ１
を求め、リクエストＲｅｑを隠蔽鍵Ｋｔｍｐを含む情報とし、
前記所定の方法５では、値Ｗを
Ｗ＝Ｒｅｓ＾ｒｔｍｐ−１Ｋ２
のように求め、
前記所定の方法６では、平文Ｍ’を
Ｍ’＝Ｖ（＋）Ｈ（Ｗ）
のように求め、
前記所定の方法７では、レスポンスＲｅｓを
Ｒｅｓ＝ｅ（Ｋｔｍｐ，Ｕ）＾Ｋ３
のように求める
ことを特徴とする暗号化システム。
【請求項５】
請求項１から４のいずれかに記載の暗号化システムであって、
‖はビット列の結合を示す記号、Ｈ’はビット列に対するハッシュ値を求めるハッシュ関数を示す記号であり、
前記復号履歴蓄積サーバは、
認証鍵Ａと０以上ｐ−１以下の整数である乱数ａを生成し、Ｈ（ｇＩＤａ）を用いて所定の方法３’で認証鍵Ａを暗号化して暗号化認証鍵Ｖ’を求め、Ｕ’＝ａＰのようにセッション情報Ｕ’を計算し、前記暗号化認証鍵Ｖ’のみ若しくは前記暗号化認証鍵Ｖ’と前記セッション情報Ｕ’を前記受信装置に送信する認証鍵生成部と、
チャレンジＢを生成し、前記受信装置に送信するチャレンジ生成部
も備え、
前記受信装置は、さらに
受信用秘密鍵Ｋ１を用いて所定の方法４’でリクエストＲｅｑ’を作成する第２リクエスト作成部と、
前記復号履歴蓄積サーバから受信したレスポンスＲｅｓ’を用いて前記所定の方法２と前記所定の方法４’に対応した方法である所定の方法５’にしたがってｇＩＤａの値Ｗを求め、Ｈ（Ｗ）を用いて前記所定の方法３’に対応した方法である所定の方法６’にしたがって暗号化認証鍵Ｖ’を復号して認証鍵Ａ’に復号する第２復号部と、
Ｄ’＝Ｈ’（Ａ’‖Ｂ）のようにハッシュ値Ｄ’を求め、前記復号履歴蓄積サーバに送信するハッシュ値計算部と
を備え、
前記復号履歴蓄積サーバは、さらに
前記所定の方法１と前記所定の方法２と前記所定の方法４’に対応した方法である所定の方法７’にしたがって前記セッション情報Ｕ’と前記代理計算用秘密鍵Ｋ３を用いた計算を行ってレスポンスＲｅｓ’を求める第２レスポンス作成部と、
Ｄ＝Ｈ’（Ａ‖Ｂ）のようにハッシュ値Ｄを求め、Ｄ＝Ｄ’であることを確認する認証部
を備える
ことを特徴とする暗号化システム。
【請求項６】
送信装置、受信装置、復号履歴蓄積サーバを用いた復号方法であって、
ｐは素数、Ｇ１は位数ｐの巡回加算群、Ｇ２は位数ｐの巡回群、ｅはＧ１×Ｇ１→Ｇ２のように写像する双線形ペアリング関数、Ｈは群Ｇ２の元をｎビットのビット列に写像するハッシュ関数を示す記号、Ｐは群Ｇ１の生成元、ｓは０以上ｐ−１以下の整数、ＰＰｕｂ＝ｓＰ、（Ｐ，ＰＰｕｂ）は公開パラメータ、MaptoPointＧ1は任意長のビット列を群Ｇ１の元に写像する関数、ＩＤは任意長のビット列、ＱＩＤ＝MaptoPointＧ1（ＩＤ）、Ｋ０はＫ０＝ｓＱＩＤのように求められた秘密鍵、Ｋ３’は０以上ｐ−１以下の整数から選択された分割用乱数、Ｋ１は秘密鍵Ｋ０と分割用乱数Ｋ３’を用いて所定の方法１で求められた受信用秘密鍵、Ｋ３は分割用乱数Ｋ３’を用いて所定の方法２で求められた代理計算用秘密鍵、ｒは０以上ｐ−１以下の整数から選択された乱数、ＵはＵ＝ｒＰのように求められたセッション情報、ｇＩＤはｇＩＤ＝ｅ（ＱＩＤ，ＰＰｕｂ）のように求められた値、ＶはＨ（ｇＩＤｒ）を用いて所定の方法３で平文Ｍを暗号化した暗号文、ｖは暗号文Ｖを識別する暗号文識別情報、ｈは暗号文Ｖを識別する暗号文識別情報を生成する関数を示す記号であり、
前記受信装置は、復号記録部に受信用秘密鍵Ｋ１を記録しておき、
前記復号履歴蓄積サーバは、代理記録部に受信装置識別情報ＲＩＤに対応付けて代理計算用秘密鍵Ｋ３を記録しておき、
前記送信装置が、少なくとも前記受信装置に暗号文Ｖを送信し、前記復号履歴蓄積サーバにセッション情報Ｕと暗号文識別情報ｖとを送信する暗号文送信ステップと、
前記復号履歴蓄積サーバが、セッション情報蓄積部に前記送信装置から受信したセッション情報Ｕと暗号文識別情報ｖとを対応付けて記録するセッション情報蓄積ステップと、
前記受信装置が、受信用秘密鍵Ｋ１を用いて所定の方法４でリクエストＲｅｑを作成するリクエスト作成ステップと、
前記受信装置が、前記リクエストＲｅｑ、ｖ＝ｈ（Ｖ）を満たす暗号文識別情報ｖ、当該受信装置を特定する受信装置識別情報ＲＩＤとを前記復号履歴蓄積サーバに送信するリクエスト送信ステップと、
前記復号履歴蓄積サーバが、前記受信装置から受信した暗号文識別情報ｖと一致する前記セッション情報蓄積部に記録された暗号文識別情報ｖに対応付けられたセッション情報Ｕを取得し、前記受信装置から受信した受信装置識別情報ＲＩＤと一致する前記代理記録部に記録された受信装置識別情報ＲＩＤに対応付けられた代理計算用秘密鍵Ｋ３を取得し、前記所定の方法１と前記所定の方法２と前記所定の方法４に対応した方法である所定の方法７にしたがって前記セッション情報Ｕと前記代理計算用秘密鍵Ｋ３を用いた計算を行ってレスポンスＲｅｓを求めるレスポンス作成ステップと、
前記復号履歴蓄積サーバが、前記レスポンスＲｅｓを前記受信装置に送信するレスポンス送信ステップと、
前記復号履歴蓄積サーバが、履歴蓄積部に暗号文識別情報ｖと、受信装置識別情報ＲＩＤと、時刻とを対応付けて記録する履歴蓄積ステップと、
前記受信装置が、前記復号履歴蓄積サーバから受信したレスポンスＲｅｓを用いて前記所定の方法２と前記所定の方法４に対応した方法である所定の方法５にしたがってｇＩＤｒの値Ｗを求め、Ｈ（Ｗ）を用いて前記所定の方法３に対応した方法である所定の方法６にしたがって暗号文Ｖを復号して平文Ｍ’に復号する復号ステップと、
を有する復号方法。
【請求項７】
ｐは素数、Ｇ１は位数ｐの巡回加算群、Ｐは群Ｇ１の生成元、MaptoPointＧ1は任意長のビット列を群Ｇ１の元に写像する関数、ＩＤは任意長のビット列、ＱＩＤ＝MaptoPointＧ1（ＩＤ）、Ｋ０はＫ０＝ｓＱＩＤのように求められた秘密鍵、Ｋ３’は０以上ｐ−１以下の整数から選択された分割用乱数、Ｋ１は秘密鍵Ｋ０と分割用乱数Ｋ３’を用いて所定の方法１で求められた受信用秘密鍵、Ｋ３は分割用乱数Ｋ３’を用いて所定の方法２で求められた代理計算用秘密鍵、ｒは０以上ｐ−１以下の整数から選択された乱数、ＵはＵ＝ｒＰのように求められたセッション情報、ｖは暗号文Ｖを識別する暗号文識別情報、Ｒｅｑは受信用秘密鍵Ｋ１を用いて所定の方法４で作成されたリクエストであり、
受信装置識別情報ＲＩＤに対応付けて代理計算用秘密鍵Ｋ３を記録する代理記録部と、
送信装置から受信したセッション情報Ｕと暗号文識別情報ｖとを対応付けて記録するセッション情報蓄積部と、
受信装置からリクエストＲｅｑと暗号文識別情報ｖと受信装置識別情報ＲＩＤを受信し、前記受信装置から受信した暗号文識別情報ｖと一致する前記セッション情報蓄積部に記録された暗号文識別情報ｖに対応付けられたセッション情報Ｕを取得し、前記受信装置の受信装置識別情報ＲＩＤと一致する前記代理記録部に記録された受信装置識別情報ＲＩＤに対応付けられた代理計算用秘密鍵Ｋ３を取得し、前記所定の方法１と前記所定の方法２と前記所定の方法４に対応した方法である所定の方法７にしたがって前記セッション情報Ｕと前記代理計算用秘密鍵Ｋ３を用いた計算を行ってレスポンスＲｅｓを求めるレスポンス作成部と、
前記レスポンスＲｅｓを前記受信装置に送信するレスポンス送信部と、
レスポンスＲｅｓを前記受信装置に送信したときは、暗号文識別情報ｖと、受信装置識別情報ＲＩＤと、時刻とを対応付けて記録する履歴蓄積部と、
を備える復号履歴蓄積サーバ。
【請求項８】
ｐは素数、Ｇ１は位数ｐの巡回加算群、Ｇ２は位数ｐの巡回群、ｅはＧ１×Ｇ１→Ｇ２のように写像する双線形ペアリング関数、Ｈは群Ｇ２の元をｎビットのビット列に写像するハッシュ関数を示す記号、Ｐは群Ｇ１の生成元、ｓは０以上ｐ−１以下の整数、ＰＰｕｂ＝ｓＰ、（Ｐ，ＰＰｕｂ）は公開パラメータ、MaptoPointＧ1は任意長のビット列を群Ｇ１の元に写像する関数、ＩＤは任意長のビット列、ＱＩＤ＝MaptoPointＧ1（ＩＤ）、Ｋ０はＫ０＝ｓＱＩＤのように求められた秘密鍵、Ｋ３’は０以上ｐ−１以下の整数から選択された分割用乱数、Ｋ１は秘密鍵Ｋ０と分割用乱数Ｋ３’を用いて所定の方法１で求められた受信用秘密鍵、Ｋ３は分割用乱数Ｋ３’を用いて所定の方法２で求められた代理計算用秘密鍵、ｒは０以上ｐ−１以下の整数から選択された乱数、ＵはＵ＝ｒＰのように求められたセッション情報、ｇＩＤはｇＩＤ＝ｅ（ＱＩＤ，ＰＰｕｂ）のように求められた値、ＶはＨ（ｇＩＤｒ）を用いて所定の方法３で平文Ｍを暗号化した暗号文、ｖは暗号文Ｖを識別する暗号文識別情報であり、
受信用秘密鍵Ｋ１を記録する復号記録部と、
受信用秘密鍵Ｋ１を用いて所定の方法４でリクエストＲｅｑを作成するリクエスト作成部と、
前記リクエストＲｅｑ、暗号文識別情報ｖ、受信装置識別情報ＲＩＤを復号履歴蓄積サーバに送信するリクエスト送信部と、
前記所定の方法１と前記所定の方法２と前記所定の方法４に対応した方法である所定の方法７にしたがって前記セッション情報Ｕと前記代理計算用秘密鍵Ｋ３を用いた計算を行って求められたレスポンスＲｅｓを前記復号履歴蓄積サーバから受信し、レスポンスＲｅｓを用いて前記所定の方法２と前記所定の方法４に対応した方法である所定の方法５にしたがってｇＩＤｒの値Ｗを求め、Ｈ（Ｗ）を用いて前記所定の方法３に対応した方法である所定の方法６にしたがって暗号文Ｖを復号して平文Ｍ’に復号する復号部と、
を備える受信装置。
【請求項９】
請求項１から５のいずれかに記載の暗号化システムに含まれる送信装置であって、
平文Ｍを前記所定の方法３で暗号化して暗号文Ｖを求める暗号化部と、
受信装置に少なくとも暗号文Ｖを送信し、復号履歴蓄積サーバにセッション情報Ｕと暗号文識別情報ｖとを送信する暗号文送信部と
を備える送信装置。
【請求項１０】
請求項７記載の復号履歴蓄積サーバ、請求項８記載の受信装置、請求項９記載の送信装置のいずれかとしてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号文の復号履歴を記録するための暗号化システム、復号方法、復号履歴蓄積サーバ、受信装置、送信装置、プログラムに関する。
【背景技術】
【０００２】
暗号文の復号履歴を記録する暗号化方式として非特許文献１が知られている。非特許文献１には、公開サーバに対して復号履歴を残さない限り平文を得られないよう復号処理を制御する方法が示されている（非特許文献１の図３参照）。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】平井康雅，松尾真一郎，“復号履歴を記録可能な暗号化方式”，信学技報，ISEC2005-109，OIS2005-72，pp.71〜76，2005年11月.
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、非特許文献１の公開サーバは、復号者から受信するEvidenceから復号者が復号しようとしている復号対象を特定できないので、復号対象を特定するための情報をログ証跡として記録できないという課題がある。
【０００５】
本発明は、復号履歴として、復号対象である暗号文を識別する情報と復号した受信装置を特定する情報と時刻とを対応付けて記録できる暗号化システムを構築することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の暗号化システムは、少なくとも送信装置、受信装置、復号履歴蓄積サーバを有する。まず、ｐは素数、Ｇ１は位数ｐの巡回加算群、Ｇ２は位数ｐの巡回群、ｅはＧ１×Ｇ１→Ｇ２のように写像する双線形ペアリング関数、Ｈは群Ｇ２の元をｎビットのビット列に写像するハッシュ関数を示す記号、Ｐは群Ｇ１の生成元、ｓは０以上ｐ−１以下の整数、ＰＰｕｂ＝ｓＰ、（Ｐ，ＰＰｕｂ）は公開パラメータ、MaptoPointＧ1は任意長のビット列を群Ｇ１の元に写像する関数、ＩＤは任意長のビット列、ＱＩＤ＝MaptoPointＧ1（ＩＤ）、Ｋ０はＫ０＝ｓＱＩＤのように求められた秘密鍵、Ｋ３’は０以上ｐ−１以下の整数から選択された分割用乱数、Ｋ１は秘密鍵Ｋ０と分割用乱数Ｋ３’を用いて所定の方法１で求められた受信用秘密鍵、Ｋ３は分割用乱数Ｋ３’を用いて所定の方法２で求められた代理計算用秘密鍵、ｒは０以上ｐ−１以下の整数から選択された乱数、ＵはＵ＝ｒＰのように求められたセッション情報、ｇＩＤはｇＩＤ＝ｅ（ＱＩＤ，ＰＰｕｂ）のように求められた値、ＶはＨ（ｇＩＤｒ）を用いて所定の方法３で平文Ｍを暗号化した暗号文、ｖは暗号文Ｖを識別する暗号文識別情報、ｈは暗号文Ｖを識別する暗号文識別情報を生成する関数を示す記号とする。
【０００７】
送信装置は、暗号化部、暗号文送信部を備える。受信装置は、復号記録部、リクエスト作成部、リクエスト送信部、復号部を備える。復号履歴蓄積サーバは、代理記録部、セッション情報蓄積部、レスポンス作成部、レスポンス送信部、履歴蓄積部を備える。
【０００８】
受信装置は、復号記録部に少なくとも受信装置識別情報ＲＩＤに対応付けて受信用秘密鍵Ｋ１を記録しておく。復号履歴蓄積サーバは、代理記録部に受信装置識別情報ＲＩＤに対応付けて代理計算用秘密鍵Ｋ３を記録しておく。
【０００９】
送信装置の暗号文送信部は、受信装置に暗号文Ｖと暗号文識別情報ｖとを送信し、復号履歴蓄積サーバにセッション情報Ｕと暗号文識別情報ｖとを送信する。なお、受信装置が暗号文識別情報生成部も備えておき、送信装置の暗号文送信部が受信装置に暗号文Ｖを送信し、受信装置の暗号文識別情報生成部が受信した暗号文Ｖから暗号文識別情報ｖをｖ＝ｈ（Ｖ）のように生成してもよい。
【００１０】
復号履歴蓄積サーバが、セッション情報蓄積部に送信装置から受信したセッション情報Ｕと暗号文識別情報ｖとを対応付けて記録する。受信装置のリクエスト作成部が、受信用秘密鍵Ｋ１を用いて所定の方法４でリクエストＲｅｑを作成する。受信装置のリクエスト送信部が、リクエストＲｅｑ、暗号文識別情報ｖ、受信装置を特定する受信装置識別情報ＲＩＤとを復号履歴蓄積サーバに送信する。
【００１１】
復号履歴蓄積サーバのレスポンス作成部が、受信装置から受信した暗号文識別情報ｖと一致するセッション情報蓄積部に記録された暗号文識別情報ｖに対応付けられたセッション情報Ｕを取得する。また、受信装置から受信した受信装置識別情報ＲＩＤと一致する代理記録部に記録された受信装置識別情報ＲＩＤに対応付けられた代理計算用秘密鍵Ｋ３を取得する。そして、所定の方法１と所定の方法２と所定の方法４に対応した方法である所定の方法７にしたがってセッション情報Ｕと代理計算用秘密鍵Ｋ３を用いた計算を行ってレスポンスＲｅｓを求める。復号履歴蓄積サーバのレスポンス送信部が、レスポンスＲｅｓを受信装置に送信する。復号履歴蓄積サーバが、履歴蓄積部に暗号文識別情報ｖと、受信装置識別情報ＲＩＤと、所定の方法８にしたがって取得した時刻ｔとを対応付けて記録する。
【００１２】
受信装置の復号部が、復号履歴蓄積サーバから受信したレスポンスＲｅｓを用いて所定の方法２と所定の方法４に対応した方法である所定の方法５にしたがってｇＩＤｒの値Ｗを求め、Ｈ（Ｗ）を用いて所定の方法３に対応した方法である所定の方法６にしたがって暗号文Ｖを復号して平文Ｍ’に復号する。
【発明の効果】
【００１３】
本発明の暗号化システムによれば、受信装置は暗号文Ｖを識別する暗号文識別情報ｖを復号履歴蓄積サーバに送信し、復号履歴蓄積サーバと連携しなければ暗号文Ｖを復号できない。したがって、復号履歴蓄積サーバは、復号対象の暗号文Ｖと復号した受信装置とを特定した上で復号に協力した時刻を記録できる。
【図面の簡単な説明】
【００１４】
【図１】実施例１、実施例１変形例１、実施例１変形例２、実施例１変形例３の暗号化システムの構成例を示す図。
【図２】実施例１、実施例１変形例１、実施例２、実施例２変形例１の暗号化システムの秘密鍵を配布する処理フローを示す図。
【図３】実施例１、実施例１変形例２の暗号化システムの暗号文の生成から復号までの処理フローを示す図。
【図４】実施例１変形例１、実施例１変形例３の暗号化システムの暗号文の生成から復号までの処理フローを示す図。
【図５】実施例１変形例２、実施例１変形例３、実施例２変形例２、実施例２変形例３の暗号化システムの秘密鍵を配布する処理フローを示す図。
【図６】実施例２、実施例２変形例１、実施例２変形例２、実施例２変形例３の暗号化システムの構成例を示す図。
【図７】実施例２、実施例２変形例２の暗号化システムの暗号文の生成から復号までの処理フローを示す図。
【図８】実施例２変形例１、実施例２変形例３の暗号化システムの暗号文の生成から復号までの処理フローを示す図。
【図９】実施例３、実施例３変形例１、実施例３変形例２、実施例３変形例３の暗号化システムの構成例を示す図。
【図１０】実施例３、実施例３変形例１の暗号化システムの秘密鍵を配布する処理フローを示す図。
【図１１】実施例３、実施例３変形例２の暗号化システムの暗号文の生成から復号までの処理フローを示す図。
【図１２】実施例３変形例１、実施例３変形例３の暗号化システムの暗号文の生成から復号までの処理フローを示す図。
【図１３】実施例３変形例２、実施例３変形例３の暗号化システムの秘密鍵を配布する処理フローを示す図。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【実施例１】
【００１６】
図１に実施例１の暗号化システムの構成例を示す。図２に実施例１の暗号化システムの秘密鍵を配布する処理フローを、図３に暗号文の生成から復号までの処理フローを示す。実施例１の暗号化システムは、送信装置１００、受信装置２００、復号履歴蓄積サーバ３００、鍵生成装置４００で構成される。
【００１７】
以下の説明では、ｋは大きな整数、ｐはｋビットの素数、Ｇ１は位数ｐの巡回加算群、Ｇ２は位数ｐの巡回群、ｅはＧ１×Ｇ１→Ｇ２のように写像する双線形ペアリング関数、Ｈは群Ｇ２の元をｎビットのビット列に写像するハッシュ関数を示す記号、Ｐは群Ｇ１の生成元、ｓは鍵生成装置４００が生成した０以上ｐ−１以下の整数、ＰＰｕｂ＝ｓＰ、（Ｐ，ＰＰｕｂ）は公開パラメータ、MaptoPointＧ1は任意長のビット列を群Ｇ１の元に写像する関数、ＩＤは任意長のビット列、ＱＩＤ＝MaptoPointＧ1（ＩＤ）、（＋）はビット単位の排他的論理和を示す記号、＾はべき乗を示す記号、ｖは暗号文Ｖを識別する暗号文識別情報、ｈは暗号文Ｖを識別する暗号文識別情報を生成する関数を示す記号とする。なお、ＸとＹを群Ｇ１の元とし、ａとｂを整数とすると、
ｅ（ａＸ，ｂＹ）＝ｅ（Ｘ，Ｙ）ａｂ      （１）
の関係が成り立つ。双線形ペアリング関数としては、例えばWeilペアリングを用いればよい。また、ＩＤとして受信装置２００の属性を示すビット列を用いてもよい。
【００１８】
送信装置１００は、暗号化部１１０、暗号文送信部１２０、暗号化記録部１９０を備える。受信装置２００は、属性送信部２１０、リクエスト作成部２２０、リクエスト送信部２２５、復号部２３０、復号記録部２９０を備える。復号履歴蓄積サーバ３００は、レスポンス作成部３１０、レスポンス送信部３１５、セッション情報蓄積部３７０、履歴蓄積部３８０、代理記録部３９０を備える。鍵生成装置４００は、鍵生成部４１０、鍵分割部４２０、鍵配布部４３０、鍵生成記録部４９０を備える。以下に、処理フローを説明しながら、これらの構成部の機能を説明する。
【００１９】
秘密鍵を配布する処理フロー
受信装置２００の属性送信部２１０は、ビット列ＩＤを鍵生成装置４００に送信する（Ｓ２１１）。なお、ビット列ＩＤは、Ａ社の社員、２０歳以上などの単独の属性情報を示すビット列でもよいし、Ａ社の社員かつ男性、２０歳以上または女性のような属性情報の論理式を示すビット列でもよい。鍵生成装置４００の鍵生成部４１０は、秘密鍵Ｋ０を
Ｋ０＝ｓＱＩＤ
のように求め、鍵生成記録部４９０に記録する（Ｓ４１０）。
【００２０】
鍵分割部４２０は、分割用乱数Ｋ３’を０以上ｐ−１以下の整数から選択し（Ｓ４２１）、秘密鍵Ｋ０と分割用乱数Ｋ３’を用いて所定の方法１にしたがって受信用秘密鍵Ｋ１を求め、鍵生成記録部４９０に記録する（Ｓ４２２）。なお、分割用乱数Ｋ３’は、０以上ｐ−１以下の整数からランダムに選択することが望ましいが、あらかじめ定めた他の方法で選択してもよい。鍵配布部４３０は、分割用乱数Ｋ３’を用いて所定の方法２で代理計算用秘密鍵Ｋ３を求め、鍵生成記録部４９０に記録する（Ｓ４３４）。そして、鍵配布部４３０は、受信用秘密鍵Ｋ１を受信装置２００に送信し、受信用秘密鍵Ｋ１を送信した受信装置２００を識別する受信装置識別情報ＲＩＤと代理計算用秘密鍵Ｋ３を復号履歴蓄積サーバ３００に送信する（Ｓ４３５）。受信装置２００の復号記録部２９０は、受信用秘密鍵Ｋ１を記録する（Ｓ２９１）。復号履歴蓄積サーバ３００の代理記録部３９０は、受信装置識別情報ＲＩＤに対応付けて代理計算用秘密鍵Ｋ３を記録する（Ｓ３９１）。
【００２１】
暗号文の生成から復号までの処理フロー
属性送信部２１０は、ビット列ＩＤを送信装置１００に送信する（Ｓ２１２）。送信装置１００の暗号化部１１０は、乱数ｒを０以上ｐ−１以下の整数から選択し、セション情報ＵをＵ＝ｒＰのように計算する。なお、乱数ｒは、０以上ｐ−１以下の整数からランダムに選択することが望ましいが、あらかじめ定めた他の方法で選択してもよい。また、暗号化部１１０は、
ｇＩＤ＝ｅ（ＱＩＤ，ＰＰｕｂ）
を計算し、Ｈ（ｇＩＤｒ）を用いて所定の方法３で平文Ｍを暗号化して暗号文Ｖを求める。暗号化部１１０は、さらに暗号文識別情報ｖをｖ＝ｈ（Ｖ）のように生成する。関数ｈは例えばハッシュ関数とすればよいが、ハッシュ関数に限定する必要はなく、暗号文を一意に識別可能な情報を生成することができる関数であればよい。そして、暗号文送信部１２０が、受信装置２００に暗号文Ｖと暗号文識別情報ｖとを送信し、復号履歴蓄積サーバ３００にセッション情報Ｕと暗号文識別情報ｖとを送信する（Ｓ１２０）。
【００２２】
復号履歴蓄積サーバ３００は、セッション情報蓄積部３７０に送信装置１００から受信したセッション情報Ｕと暗号文識別情報ｖとを対応付けて記録する（Ｓ３７０）。受信装置２００のリクエスト作成部２２０が、受信用秘密鍵Ｋ１を用いて所定の方法４でリクエストＲｅｑを作成する。なお、リクエスト作成部２２０は、乱数ｒｔｍｐを０以上ｐ−１以下の整数から選択し（Ｓ２２１）、所定の方法４で乱数ｒｔｍｐも用いてもよい。このようにすることで、受信用秘密鍵Ｋ１に関する情報を隠蔽できる。なお、乱数ｒｔｍｐは、０以上ｐ−１以下の整数からランダムに選択することが望ましいが、あらかじめ定めた他の方法で選択してもよい。そして、リクエスト送信部２２５が、リクエストＲｅｑ、暗号文識別情報ｖ、受信装置を特定する受信装置識別情報ＲＩＤとを復号履歴蓄積サーバに送信する（Ｓ２２２）。
【００２３】
復号履歴蓄積サーバ３００のレスポンス作成部３１０は、受信装置２００から受信した暗号文識別情報ｖと一致するセッション情報蓄積部３７０に記録された暗号文識別情報ｖに対応付けられたセッション情報Ｕを取得する。また、レスポンス作成部３１０は、受信装置２００から受信した受信装置識別情報ＲＩＤと一致する代理記録部３９０に記録された受信装置識別情報ＲＩＤに対応付けられた代理計算用秘密鍵Ｋ３を取得する。そして、レスポンス作成部３１０は、所定の方法１と所定の方法２と所定の方法４に対応した方法である所定の方法７にしたがってセッション情報Ｕと代理計算用秘密鍵Ｋ３を用いた計算を行ってレスポンスＲｅｓを求める。レスポンス送信部３１５は、レスポンスＲｅｓを受信装置２００に送信する（Ｓ３１０）。
【００２４】
復号履歴蓄積サーバ３００は、履歴蓄積部３８０に暗号文識別情報ｖと、受信装置識別情報ＲＩＤと、所定の方法８にしたがって取得した時刻ｔとを対応付けて記録する（Ｓ３８０）。所定の方法８とは、例えばリクエストＲｅｑを受信した時にタイムサーバから時刻ｔを取得してもよいし、レスポンスＲｅｓを送信したときに復号履歴蓄積サーバ自身のタイマから時刻ｔを取得してもよい。また、時刻ｔを取得するタイミングは、レスポンス作成部３１０の処理が終了したときとしてもよい。なお、時刻ｔは、タイムサーバから取得してもよいし、復号履歴蓄積サーバ３００自身のタイマから取得してもよい。そして、時刻ｔの取得のタイミングと取得先は、任意に組み合わせればよく、所定の方法８を決めるときに定めればよい。
【００２５】
受信装置２００の復号部２３０は、復号履歴蓄積サーバから受信したレスポンスＲｅｓを用いて所定の方法２と所定の方法４に対応した方法である所定の方法５にしたがってｇＩＤｒの値Ｗを求める。そして、Ｈ（Ｗ）を用いて所定の方法３に対応した方法である所定の方法６にしたがって暗号文Ｖを復号して平文Ｍ’に復号する（Ｓ２３０）。
【００２６】
上述のように、実施例1の暗号化システムでは、以下のような特徴がある。
（１）送信装置１００が受信装置２００には暗号文Ｖを送信し、復号履歴蓄積サーバ３００にセッション情報Ｕと暗号文識別情報ｖを送信する。つまり、復号に必要なセッション情報Ｕは受信装置２００には送信されない。
（２）復号履歴蓄積サーバ３００のセッション情報蓄積部３７０がセッション情報Ｕと暗号文識別情報ｖとを対応付けて記録する。
（３）受信装置２００が暗号文識別情報ｖと受信装置識別情報ＲＩＤを復号履歴蓄積サーバ３００に送信することで、復号履歴蓄積サーバ３００が暗号文Ｖの復号に必要なセッション情報Ｕと代理計算用秘密鍵Ｋ３を取得する。したがって、復号履歴蓄積サーバ３００は、どの受信装置２００がどの暗号文Ｖを復号しようとしているのか把握できる。
（４）復号履歴蓄積サーバ３００が、履歴蓄積部３８０に暗号文識別情報ｖと受信装置識別情報ＲＩＤと時刻ｔとを対応付けて記録する。したがって、復号履歴蓄積サーバは、復号が実行されるごとに、暗号文Ｖと復号した受信装置とを特定した上で復号に協力した時刻を記録できる。
【００２７】
次に、上述の所定の方法１〜７について説明する。所定の方法１〜７は「秘密鍵Ｋ０から複数の復号鍵（受信用秘密鍵Ｋ１，代理計算用秘密鍵Ｋ３）を生成する方式」と「鍵を伴う一部の演算機能のリソースを外部装置（復号履歴蓄積サーバ）に安全に代行させる方式」を組み合わせて構成するために互いに対応していればよい。例えば、以下に示すような組み合わせがあり得る。ただし、「秘密鍵Ｋ０から複数の復号鍵（受信用秘密鍵Ｋ１，代理計算用秘密鍵Ｋ３）を生成する方式」と「鍵を伴う一部の演算機能のリソースを外部装置（復号履歴蓄積サーバ）に安全に代行させる方式」とが機能する範囲ならば、これらの組み合わせに限定する必要はない。
【００２８】
所定の方法の組み合わせ１−１
所定の方法１では、受信用秘密鍵Ｋ１を
Ｋ１＝Ｋ３’ Ｋ０
のように求める。所定の方法２では、代理計算用秘密鍵Ｋ３を
Ｋ３＝Ｋ３’−１
のように求める。所定の方法３では、暗号文Ｖを
Ｖ＝Ｍ（＋）Ｈ（ｇＩＤｒ）
のように求める。所定の方法４では、リクエストＲｅｑを受信用秘密鍵Ｋ１を含む情報とする。所定の方法５では、値Ｗを
Ｗ＝Ｒｅｓ
のように求める。所定の方法６では、平文Ｍ’を
Ｍ’＝Ｖ（＋）Ｈ（Ｗ）
のように求める。所定の方法７では、レスポンスＲｅｓを
Ｒｅｓ＝ｅ（Ｋ１，Ｕ）＾Ｋ３
のように求める。ただし、ペアリングｅでは式（１）が成り立つので、
Ｒｅｓ＝ｅ（Ｋ３Ｋ１，Ｕ）  または  Ｒｅｓ＝ｅ（Ｋ１，Ｋ３Ｕ）
のようにレスポンスＲｅｓを求めてもよい。
【００２９】
なお、上述の所定の方法の組み合わせの一部を以下の例のように変更してもよい。
【００３０】
第１の例では、所定の方法２を
Ｋ３＝Ｋ３’
とし、所定の方法７を
Ｒｅｓ＝ｅ（Ｋ１，Ｕ）＾（Ｋ３−１）
としてもよい。ただし、ペアリングｅでは式（１）が成り立つので、
Ｒｅｓ＝ｅ（（Ｋ３−１）Ｋ１，Ｕ）  または  Ｒｅｓ＝ｅ（Ｋ１，（Ｋ３−１）Ｕ）
のようにレスポンスＲｅｓを求めてもよい。
【００３１】
第２の例では、所定の方法１を
Ｋ１＝（Ｋ３’）−１Ｋ０
とし、所定の方法２を
Ｋ３＝Ｋ３’
とし、所定の方法７を
Ｒｅｓ＝ｅ（Ｋ１，Ｕ）＾Ｋ３
としてもよい。ただし、ペアリングｅでは式（１）が成り立つので、
Ｒｅｓ＝ｅ（Ｋ３Ｋ１，Ｕ）  または  Ｒｅｓ＝ｅ（Ｋ１，Ｋ３Ｕ）
のようにレスポンスＲｅｓを求めてもよい。
【００３２】
第３の例では、所定の方法３を、Ｈ（ｇＩＤｒ）を共通鍵として平文Ｍを暗号化し、暗号文Ｖを求めてもよい。この場合は、所定の方法６は、Ｈ（Ｗ）を共通鍵として暗号文Ｖを平文Ｍ’に復号するとすればよい。
【００３３】
所定の方法の組み合わせ１−２
所定の方法１では、受信用秘密鍵Ｋ１を
Ｋ１＝Ｋ３’ Ｋ０
のように求める。所定の方法２では、代理計算用秘密鍵Ｋ３を
Ｋ３＝Ｋ３’−１
のように求める。所定の方法３では、暗号文Ｖを
Ｖ＝Ｍ（＋）Ｈ（ｇＩＤｒ）
のように求める。所定の方法４では、リクエスト作成部２２０が、乱数ｒｔｍｐを０以上ｐ−１以下の整数から選択し（Ｓ２２１）、隠蔽鍵Ｋｔｍｐを
Ｋｔｍｐ＝ｒｔｍｐＫ１
を求め、リクエストＲｅｑを隠蔽鍵Ｋｔｍｐを含む情報とする。所定の方法５では、値Ｗを
Ｗ＝Ｒｅｓ＾ｒｔｍｐ−１
のように求める。所定の方法６では、平文Ｍ’を
Ｍ’＝Ｖ（＋）Ｈ（Ｗ）
のように求める。所定の方法７では、レスポンスＲｅｓを
Ｒｅｓ＝ｅ（Ｋｔｍｐ，Ｕ）＾Ｋ３
のように求める。ただし、ペアリングｅでは式（１）が成り立つので、
Ｒｅｓ＝ｅ（Ｋ３Ｋｔｍｐ，Ｕ）  または  Ｒｅｓ＝ｅ（Ｋｔｍｐ，Ｋ３Ｕ）
のようにレスポンスＲｅｓを求めてもよい。
【００３４】
なお、上述の所定の方法の組み合わせの一部を以下の例のように変更してもよい。
【００３５】
第１の例では、所定の方法２を
Ｋ３＝Ｋ３’
とし、所定の方法７を
Ｒｅｓ＝ｅ（Ｋｔｍｐ，Ｕ）＾（Ｋ３−１）
としてもよい。ただし、ペアリングｅでは式（１）が成り立つので、
Ｒｅｓ＝ｅ（（Ｋ３−１）Ｋｔｍｐ，Ｕ）  または  Ｒｅｓ＝ｅ（Ｋｔｍｐ，（Ｋ３−１）Ｕ）
のようにレスポンスＲｅｓを求めてもよい。
【００３６】
第２の例では、所定の方法１を
Ｋ１＝（Ｋ３’）−１Ｋ０
とし、所定の方法２を
Ｋ３＝Ｋ３’
とし、所定の方法７を
Ｒｅｓ＝ｅ（Ｋｔｍｐ，Ｕ）＾Ｋ３
としてもよい。ただし、ペアリングｅでは式（１）が成り立つので、
Ｒｅｓ＝ｅ（Ｋ３Ｋｔｍｐ，Ｕ）  または  Ｒｅｓ＝ｅ（Ｋｔｍｐ，Ｋ３Ｕ）
のようにレスポンスＲｅｓを求めてもよい。
【００３７】
第３の例では、所定の方法３を、Ｈ（ｇＩＤｒ）を共通鍵として平文Ｍを暗号化し、暗号文Ｖを求めてもよい。この場合は、所定の方法６は、Ｈ（Ｗ）を共通鍵として暗号文Ｖを平文Ｍ’に復号するとすればよい。
【００３８】
［変形例１］
図１に実施例１変形例１の暗号化システムの構成例を示す。図２に実施例１変形例１の暗号化システムの秘密鍵を配布する処理フローを、図４に暗号文の生成から復号までの処理フローを示す。実施例１との違いは、受信装置２００自体が暗号文識別情報ｖを生成する点（暗号文識別情報ｖを受信しない点）である。秘密鍵を配布する処理フローは実施例１と同じである。
【００３９】
この変形例では、受信装置２００が暗号文識別情報生成部２４０も備えている。そして、送信装置１００の暗号文送信部１２１が、受信装置２００に暗号文Ｖを送信し、復号履歴蓄積サーバ３００にセッション情報Ｕと暗号文識別情報ｖとを送信する（Ｓ１２１）。そして、受信装置２００の暗号文識別情報生成部２４０が、ｖ＝ｈ（Ｖ）のように暗号文識別情報ｖを生成する（Ｓ２４０）。その他の構成部と処理は実施例１と同じであり、隠蔽用乱数ｒｔｍｐを生成するか否かや所定の方法１〜８のバリエーションなども実施例１と同じである。したがって、実施例１と同様の効果が得られる。
【００４０】
［変形例２］
図１に実施例１変形例２の暗号化システムの構成例を示す。図５に実施例１変形例２の暗号化システムの秘密鍵を配布する処理フローを、図３に暗号文の生成から復号までの処理フローを示す。実施例１との違いは、鍵生成装置４００が、保護用秘密鍵Ｋ２も生成する点である。そのため、鍵配布部４３０と復号部２３０の処理、および復号記録部２９０に記録される情報が実施例１と異なる。
【００４１】
秘密鍵を配布する処理フロー
ステップＳ２１１〜Ｓ４２２までは実施例１と同じである。ステップＳ４２２が終了すると、鍵配布部４３０は、分割用乱数Ｋ３’を用いて所定の方法２で代理計算用秘密鍵Ｋ３を求める。本変形例の所定の方法２では、保護用秘密鍵Ｋ２を０以上ｐ−１以下の整数から選択する（Ｓ４３１）。分割用乱数Ｋ３’と保護用秘密鍵Ｋ２を用いて所定の方法２’にしたがって代理計算用秘密鍵Ｋ３を求める（Ｓ４３２）。なお、保護用秘密鍵Ｋ２は、鍵配布部４３０が単純に乱数として求める方法以外に、次のように求めてもよい。鍵配布部４３０が受信装置２００から保護用秘密鍵Ｋ２を求めるための情報Ｐａｓｓを受信する。そして、鍵配布部４３０が情報Ｐａｓｓを用いて保護用秘密鍵Ｋ２を求めてもよい。例えば、情報Ｐａｓｓとハッシュ関数を用いて保護用秘密鍵Ｋ２を求めてもよいし、情報Ｐａｓｓ自体を保護用秘密鍵Ｋ２としてもよい。また、情報Ｐａｓｓとして、例えば受信装置２００の利用者（受信者）が設定したパスワードを用いてもよい。また、保護用秘密鍵Ｋ２は、０以上ｐ−１以下の整数からランダムに選択することが望ましいが、あらかじめ定めた他の方法で選択してもよい。
【００４２】
鍵配布部４３０は、受信用秘密鍵Ｋ１と保護用秘密鍵Ｋ２を受信装置２００に送信し、受信用秘密鍵Ｋ１と保護用秘密鍵Ｋ２を送信した受信装置２００を識別する受信装置識別情報ＲＩＤと代理計算用秘密鍵Ｋ３を復号履歴蓄積サーバ３００に送信する（Ｓ４３３）。受信装置２００の復号記録部２９０は、受信用秘密鍵Ｋ１と保護用秘密鍵Ｋ２を記録する（Ｓ２９２）。なお、復号記録部２９０は、物理的に別の２つ以上の記録装置で構成してもよい。例えば、復号記録部２９０をＩＣカードとパソコンのハードディスクで構成してもよい。そして、受信用秘密鍵Ｋ１をＩＣカードに記録し、保護用秘密鍵Ｋ２をパソコンのハードディスクに記録するようにしてもよい。このように物理的に別々に受信用秘密鍵Ｋ１と保護用秘密鍵Ｋ２を記録すれば、両方を同時に漏洩・紛失するリスクを低減できる。復号履歴蓄積サーバ３００の代理記録部３９０は、受信装置識別情報ＲＩＤに対応付けて代理計算用秘密鍵Ｋ３を記録する（Ｓ３９１）。
【００４３】
暗号文の生成から復号までの処理フロー
ステップＳ２３０以外は実施例１と同じである。ステップＳ２３０では、受信装置２００の復号部２３０は、復号履歴蓄積サーバ３００から受信したレスポンスＲｅｓを用いて所定の方法２と所定の方法４に対応した方法である所定の方法５にしたがって、保護用秘密鍵Ｋ２を用いてｇＩＤｒの値Ｗを求める。そして、Ｈ（Ｗ）を用いて所定の方法３に対応した方法である所定の方法６にしたがって暗号文Ｖを復号して平文Ｍ’に復号する（Ｓ２３０）。本変形例はこのような構成なので、実施例１と同様の効果が得られる。
【００４４】
次に、上述の所定の方法１〜７について説明する。所定の方法１〜７は「秘密鍵Ｋ０から複数の復号鍵（受信用秘密鍵Ｋ１，保護用秘密鍵Ｋ２，代理計算用秘密鍵Ｋ３）を生成する方式」と「鍵を伴う一部の演算機能のリソースを外部装置（復号履歴蓄積サーバ）に安全に代行させる方式」を組み合わせて構成するために互いに対応していればよい。例えば、以下に示すような組み合わせがあり得る。ただし、「秘密鍵Ｋ０から複数の復号鍵（受信用秘密鍵Ｋ１，保護用秘密鍵Ｋ２，代理計算用秘密鍵Ｋ３）を生成する方式」と「鍵を伴う一部の演算機能のリソースを外部装置（復号履歴蓄積サーバ）に安全に代行させる方式」とが機能する範囲ならば、これらの組み合わせに限定する必要はない。
【００４５】
所定の方法の組み合わせ１−３
所定の方法１では、受信用秘密鍵Ｋ１を
Ｋ１＝Ｋ３’Ｋ０
のように求める。所定の方法２’では、代理計算用秘密鍵Ｋ３を
Ｋ３＝（Ｋ２Ｋ３’）−１
のように求める。所定の方法３では、暗号文Ｖを
Ｖ＝Ｍ（＋）Ｈ（ｇＩＤｒ）
のように求める。所定の方法４では、リクエストＲｅｑを受信用秘密鍵Ｋ１を含む情報とする。所定の方法５では、値Ｗを
Ｗ＝Ｒｅｓ＾Ｋ２
のように求める。所定の方法６では、平文Ｍ’を
Ｍ’＝Ｖ（＋）Ｈ（Ｗ）
のように求める。所定の方法７では、レスポンスＲｅｓを
Ｒｅｓ＝ｅ（Ｋ１，Ｕ）＾Ｋ３
のように求める。ただし、ペアリングｅでは式（１）が成り立つので、
Ｒｅｓ＝ｅ（Ｋ３Ｋ１，Ｕ）  または  Ｒｅｓ＝ｅ（Ｋ１，Ｋ３Ｕ）
のようにレスポンスＲｅｓを求めてもよい。
【００４６】
なお、上述の所定の方法の組み合わせの一部を以下の例のように変更してもよい。
【００４７】
第１の例では、所定の方法２’を
Ｋ３＝（Ｋ２）−１Ｋ３’
とし、所定の方法７を
Ｒｅｓ＝ｅ（Ｋ１，Ｕ）＾（Ｋ３−１）
としてもよい。ただし、ペアリングｅでは式（１）が成り立つので、
Ｒｅｓ＝ｅ（（Ｋ３−１）Ｋ１，Ｕ）  または  Ｒｅｓ＝ｅ（Ｋ１，（Ｋ３−１）Ｕ）
のようにレスポンスＲｅｓを求めてもよい。
【００４８】
第２の例では、所定の方法１を
Ｋ１＝（Ｋ３’）−１Ｋ０
とし、所定の方法２’を
Ｋ３＝（Ｋ２）−１Ｋ３’
とし、所定の方法７を
Ｒｅｓ＝ｅ（Ｋ１，Ｕ）＾Ｋ３
としてもよい。ただし、ペアリングｅでは式（１）が成り立つので、
Ｒｅｓ＝ｅ（Ｋ３Ｋ１，Ｕ）  または  Ｒｅｓ＝ｅ（Ｋ１，Ｋ３Ｕ）
のようにレスポンスＲｅｓを求めてもよい。
【００４９】
第３の例では、所定の方法３を、Ｈ（ｇＩＤｒ）を共通鍵として平文Ｍを暗号化し、暗号文Ｖを求めてもよい。この場合は、所定の方法６は、Ｈ（Ｗ）を共通鍵として暗号文Ｖを平文Ｍ’に復号するとすればよい。
【００５０】
所定の方法の組み合わせ１−４
所定の方法１では、受信用秘密鍵Ｋ１を
Ｋ１＝Ｋ３’Ｋ０
のように求める。所定の方法２’では、代理計算用秘密鍵Ｋ３を
Ｋ３＝（Ｋ２Ｋ３’）−１
のように求める。所定の方法３では、暗号文Ｖを
Ｖ＝Ｍ（＋）Ｈ（ｇＩＤｒ）
のように求める。所定の方法４では、リクエスト作成部２２０が、乱数ｒｔｍｐを０以上ｐ−１以下の整数から選択し（Ｓ２２１）、隠蔽鍵Ｋｔｍｐを
Ｋｔｍｐ＝ｒｔｍｐＫ１
を求め、リクエストＲｅｑを隠蔽鍵Ｋｔｍｐを含む情報とする。所定の方法５では、値Ｗを
Ｗ＝Ｒｅｓ＾（ｒｔｍｐ−１Ｋ２）
のように求める。所定の方法６では、平文Ｍ’を
Ｍ’＝Ｖ（＋）Ｈ（Ｗ）
のように求める。所定の方法７では、レスポンスＲｅｓを
Ｒｅｓ＝ｅ（Ｋｔｍｐ，Ｕ）＾Ｋ３
のように求める。ただし、ペアリングｅでは式（１）が成り立つので、
Ｒｅｓ＝ｅ（Ｋ３Ｋｔｍｐ，Ｕ）  または  Ｒｅｓ＝ｅ（Ｋｔｍｐ，Ｋ３Ｕ）
のようにレスポンスＲｅｓを求めてもよい。
【００５１】
なお、上述の所定の方法の組み合わせの一部を以下の例のように変更してもよい。
【００５２】
第１の例では、所定の方法２’を
Ｋ３＝（Ｋ２）−１Ｋ３’
とし、所定の方法７を
Ｒｅｓ＝ｅ（Ｋｔｍｐ，Ｕ）＾（Ｋ３−１）
としてもよい。ただし、ペアリングｅでは式（１）が成り立つので、
Ｒｅｓ＝ｅ（（Ｋ３−１）Ｋｔｍｐ，Ｕ）  または  Ｒｅｓ＝ｅ（Ｋｔｍｐ，（Ｋ３−１）Ｕ）
のようにレスポンスＲｅｓを求めてもよい。
【００５３】
第２の例では、所定の方法１を
Ｋ１＝（Ｋ３’）−１Ｋ０
とし、所定の方法２’を
Ｋ３＝（Ｋ２）−１Ｋ３’
とし、所定の方法７を
Ｒｅｓ＝ｅ（Ｋｔｍｐ，Ｕ）＾Ｋ３
としてもよい。ただし、ペアリングｅでは式（１）が成り立つので、
Ｒｅｓ＝ｅ（Ｋ３Ｋｔｍｐ，Ｕ）  または  Ｒｅｓ＝ｅ（Ｋｔｍｐ，Ｋ３Ｕ）
のようにレスポンスＲｅｓを求めてもよい。
【００５４】
第３の例では、所定の方法３を、Ｈ（ｇＩＤｒ）を共通鍵として平文Ｍを暗号化し、暗号文Ｖを求めてもよい。この場合は、所定の方法６は、Ｈ（Ｗ）を共通鍵として暗号文Ｖを平文Ｍ’に復号するとすればよい。
【００５５】
［変形例３］
図１に実施例１変形例３の暗号化システムの構成例を示す。図５に実施例１変形例３の暗号化システムの秘密鍵を配布する処理フローを、図４に暗号文の生成から復号までの処理フローを示す。実施例１変形例２との違いは、受信装置２００自体が暗号文識別情報ｖを生成する点（暗号文識別情報ｖを受信しない点）である。秘密鍵を配布する処理フローは実施例１変形例２と同じである。
【００５６】
この変形例では、受信装置２００が暗号文識別情報生成部２４０も備えている。そして、送信装置１００の暗号文送信部１２１が、受信装置２００に暗号文Ｖを送信し、復号履歴蓄積サーバ３００にセッション情報Ｕと暗号文識別情報ｖとを送信する（Ｓ１２１）。そして、受信装置２００の暗号文識別情報生成部２４０が、ｖ＝ｈ（Ｖ）のように暗号文識別情報ｖを生成する（Ｓ２４０）。その他の構成部と処理は実施例１変形例２と同じであり、隠蔽用乱数ｒｔｍｐを生成するか否かや所定の方法１〜８のバリエーションなども実施例１変形例２と同じである。したがって、実施例１と同様の効果が得られる。
【実施例２】
【００５７】
実施例１では、復号履歴蓄積サーバはレスポンスＲｅｓを送信したときには履歴蓄積部に復号履歴を記録していた。しかし、受信装置が正しい受信用秘密鍵Ｋ１を保有していなかった場合（つまり、実際には暗号文Ｖを復号できなかった場合）であっても復号履歴が記録されることになる。そこで、実施例２では、復号履歴蓄積サーバがリクエストＲｅｑを送信してきた受信装置が正しい受信用秘密鍵Ｋ１を保有しているのかを確認する機能も備えた例を示す。
【００５８】
図６に実施例２の暗号化システムの構成例を示す。図２に実施例２の暗号化システムの秘密鍵を配布する処理フローを、図７に暗号文の生成から復号までの処理フローを示す。実施例２の暗号化システムは、送信装置１００、受信装置５００、復号履歴蓄積サーバ６００、鍵生成装置４００で構成される。
【００５９】
以下の説明では、ｋは大きな整数、ｐはｋビットの素数、Ｇ１は位数ｐの巡回加算群、Ｇ２は位数ｐの巡回群、ｅはＧ１×Ｇ１→Ｇ２のように写像する双線形ペアリング関数、Ｈは群Ｇ２の元をｎビットのビット列に写像するハッシュ関数を示す記号、Ｐは群Ｇ１の生成元、ｓは鍵生成装置４００が生成した０以上ｐ−１以下の整数、ＰＰｕｂ＝ｓＰ、（Ｐ，ＰＰｕｂ）は公開パラメータ、MaptoPointＧ1は任意長のビット列を群Ｇ１の元に写像する関数、ＩＤは任意長のビット列、ＱＩＤ＝MaptoPointＧ1（ＩＤ）、（＋）はビット単位の排他的論理和を示す記号、＾はべき乗を示す記号、ｖは暗号文Ｖを識別する暗号文識別情報、ｈは暗号文Ｖを識別する暗号文識別情報を生成する関数を示す記号、‖はビット列の結合を示す記号とする。
【００６０】
送信装置１００は、暗号化部１１０、暗号文送信部１２０、暗号化記録部１９０を備える。受信装置５００は、属性送信部２１０、リクエスト作成部２２０、リクエスト送信部２２５、復号部２３０、第２リクエスト作成部５２０、第２復号部５３０、ハッシュ値計算部５５０、復号記録部２９０を備える。復号履歴蓄積サーバ６００は、レスポンス作成部３１０、レスポンス送信部３１５、認証鍵生成部６１０、チャレンジ生成部６２０、第２レスポンス作成部６３０、認証部６４０、セッション情報蓄積部３７０、履歴蓄積部３８０、代理記録部３９０を備える。鍵生成装置４００は、鍵生成部４１０、鍵分割部４２０、鍵配布部４３０、鍵生成記録部４９０を備える。以下に、処理フローを説明しながら、これらの構成部の機能を説明する。秘密鍵を配布する処理フローは実施例１と同じなので説明を省略する。
【００６１】
暗号文の生成から復号までの処理フロー
ステップＳ２１２からＳ２２２までの処理は実施例１と同じである。ステップＳ２２２のあと、復号履歴蓄積サーバ６００の認証鍵生成部６１０は、認証鍵Ａと０以上ｐ−１以下の整数である乱数ａを生成する。また、認証鍵生成部６１０は、Ｈ（ｇＩＤａ）を用いて所定の方法３’で認証鍵Ａを暗号化して暗号化認証鍵Ｖ’を求める。認証鍵生成部６１０はさらに、Ｕ’＝ａＰのようにセッション情報Ｕ’を計算し、暗号化認証鍵Ｖ’のみ若しくは暗号化認証鍵Ｖ’とセッション情報Ｕ’を受信装置５００に送信する（Ｓ６１０）。
【００６２】
第２リクエスト作成部５２０は、受信用秘密鍵Ｋ１を用いて所定の方法４’でリクエストＲｅｑ’を作成し、復号履歴蓄積サーバ６００に送信する（Ｓ５２０）。復号履歴蓄積サーバ６００の第２レスポンス作成部６３０は、所定の方法１と所定の方法２と所定の方法４’に対応した方法である所定の方法７’にしたがってセッション情報Ｕ’と代理計算用秘密鍵Ｋ３を用いた計算を行ってレスポンスＲｅｓ’を求め、受信装置５００に送信する（Ｓ６３０）。受信装置５００の第２復号部５３０は、復号履歴蓄積サーバ６００から受信したレスポンスＲｅｓ’を用いて所定の方法２と所定の方法４’に対応した方法である所定の方法５’にしたがってｇＩＤａの値Ｗを求める。そして、Ｈ（Ｗ）を用いて所定の方法３’に対応した方法である所定の方法６’にしたがって暗号化認証鍵Ｖ’を復号して認証鍵Ａ’に復号する（Ｓ５３０）。なお、以下では、暗号化前の認証鍵と復号した認証鍵とを区別する必要があるときは、暗号化前の認証鍵をＡと記載し、復号した認証鍵をＡ’と記載して区別する。
【００６３】
復号履歴蓄積サーバ６００のチャレンジ生成部６２０は、チャレンジＢを生成し、受信装置５００に送信する（Ｓ６２０）。なお、ステップＳ６２０は、ステップＳ６１０〜Ｓ５３０の前に行ってもよいし、並行して行ってもよい。受信装置５００のハッシュ値計算部５５０は、Ｄ’＝Ｈ’（Ａ’‖Ｂ）のようにハッシュ値Ｄ’を求め、復号履歴蓄積サーバ６００に送信する。
【００６４】
復号履歴蓄積サーバの認証部６４０は、Ｄ＝Ｈ’（Ａ‖Ｂ）のようにハッシュ値Ｄを求め、Ｄ＝Ｄ’であることを確認し、Ｄ≠Ｄ’の場合は処理を中止する（Ｓ６４０）。Ｄ＝Ｄ’の場合はステップＳ３１０に進む。ステップＳ３１０、Ｓ２３０、Ｓ３８０は実施例１と同じである。
【００６５】
実施例２はこのような処理なので、実施例１の効果が得られた上で、さらに受信装置が実際に復号できるときのみ復号履歴を記録できる。例えば、受信装置に成りすました装置から大量のリクエストＲｅｑが送信されるなどの攻撃があった場合でも、履歴蓄積部３８０にはこれらのリクエストＲｅｑについての復号履歴は記録されない。
【００６６】
なお、実施例２の所定の方法１〜７は、実施例１で説明した所定の方法１〜７と同じである。そして、実施例２で説明した所定の方法３’、４’、５’、６’、７’も、「秘密鍵Ｋ０から複数の復号鍵（受信用秘密鍵Ｋ１，代理計算用秘密鍵Ｋ３）を生成する方式」と「鍵を伴う一部の演算機能のリソースを外部装置（復号履歴蓄積サーバ）に安全に代行させる方式」を組み合わせて構成するために互いに対応していればよい。例えば以下のようなバリエーションがある。
【００６７】
所定の方法の組み合わせ２−１
所定の方法１では、受信用秘密鍵Ｋ１を
Ｋ１＝Ｋ３’ Ｋ０
のように求める。所定の方法２では、代理計算用秘密鍵Ｋ３を
Ｋ３＝Ｋ３’−１
のように求める。このような場合であれば、所定の方法３’では、暗号化認証鍵Ｖ’を
Ｖ’＝Ａ（＋）Ｈ（ｇＩＤｒ）
のように求める。所定の方法４’では、リクエストＲｅｑ’を受信用秘密鍵Ｋ１を含む情報とする。所定の方法５’では、値Ｗを
Ｗ＝Ｒｅｓ’
のように求める。所定の方法６’では、認証鍵Ａ’を
Ａ’＝Ｖ’（＋）Ｈ（Ｗ）
のように求める。所定の方法７’では、レスポンスＲｅｓ’を
Ｒｅｓ’＝ｅ（Ｋ１，Ｕ’）＾Ｋ３
のように求める。ただし、ペアリングｅでは式（１）が成り立つので、
Ｒｅｓ’＝ｅ（Ｋ３Ｋ１，Ｕ’）  または  Ｒｅｓ’＝ｅ（Ｋ１，Ｋ３Ｕ’）
のようにレスポンスＲｅｓ’を求めてもよい。
【００６８】
なお、上述の所定の方法の組み合わせの一部を以下の例のように変更してもよい。
【００６９】
第１の例では、所定の方法２を
Ｋ３＝Ｋ３’
とし、所定の方法７’を
Ｒｅｓ’＝ｅ（Ｋ１，Ｕ’）＾（Ｋ３−１）
としてもよい。ただし、ペアリングｅでは式（１）が成り立つので、
Ｒｅｓ’＝ｅ（（Ｋ３−１）Ｋ１，Ｕ’）  または  Ｒｅｓ’＝ｅ（Ｋ１，（Ｋ３−１）Ｕ’）
のようにレスポンスＲｅｓ’を求めてもよい。
【００７０】
第２の例では、所定の方法１を
Ｋ１＝（Ｋ３’）−１Ｋ０
とし、所定の方法２を
Ｋ３＝Ｋ３’
とし、所定の方法７’を
Ｒｅｓ’＝ｅ（Ｋ１，Ｕ’）＾Ｋ３
としてもよい。ただし、ペアリングｅでは式（１）が成り立つので、
Ｒｅｓ’＝ｅ（Ｋ３Ｋ１，Ｕ’）  または  Ｒｅｓ’＝ｅ（Ｋ１，Ｋ３Ｕ’）
のようにレスポンスＲｅｓ’を求めてもよい。
【００７１】
第３の例では、所定の方法３’を、Ｈ（ｇＩＤｒ）を共通鍵として認証鍵Ａを暗号化し、暗号化認証鍵Ｖ’を求めてもよい。この場合は、所定の方法６’は、Ｈ（Ｗ）を共通鍵として暗号化認証鍵Ｖ’を認証鍵Ａ’に復号するとすればよい。
【００７２】
第４の例では、ステップＳ６１０でセッション情報Ｕ’も受信装置５００に送信し、所定の方法４’では、リクエストＲｅｑ’を
Ｒｅｑ’＝ｅ（Ｋ１，Ｕ’）
のように求める。そして、所定の方法７’では、レスポンスＲｅｓ’を
Ｒｅｓ’＝Ｒｅｑ’＾Ｋ３
のように求めるとしてもよい。
【００７３】
所定の方法の組み合わせ２−２
所定の方法１では、受信用秘密鍵Ｋ１を
Ｋ１＝Ｋ３’ Ｋ０
のように求める。所定の方法２では、代理計算用秘密鍵Ｋ３を
Ｋ３＝Ｋ３’−１
のように求める。所定の方法３’では、暗号化認証鍵Ｖ’を
Ｖ’＝Ａ（＋）Ｈ（ｇＩＤｒ）
のように求める。所定の方法４’では、第２リクエスト作成部５２０が、乱数ｒｔｍｐを０以上ｐ−１以下の整数から選択し、隠蔽鍵Ｋｔｍｐを
Ｋｔｍｐ＝ｒｔｍｐＫ１
を求め、リクエストＲｅｑ’を隠蔽鍵Ｋｔｍｐを含む情報とする。所定の方法５’では、値Ｗを
Ｗ＝Ｒｅｓ’＾ｒｔｍｐ−１
のように求める。所定の方法６’では、認証鍵Ａ’を
Ａ’＝Ｖ’（＋）Ｈ（Ｗ）
のように求める。所定の方法７’では、レスポンスＲｅｓ’を
Ｒｅｓ’＝ｅ（Ｋｔｍｐ，Ｕ’）＾Ｋ３
のように求める。ただし、ペアリングｅでは式（１）が成り立つので、
Ｒｅｓ’＝ｅ（Ｋ３Ｋｔｍｐ，Ｕ’）  または  Ｒｅｓ’＝ｅ（Ｋｔｍｐ，Ｋ３Ｕ’）
のようにレスポンスＲｅｓを求めてもよい。
【００７４】
なお、上述の所定の方法の組み合わせの一部を以下の例のように変更してもよい。
【００７５】
第１の例では、所定の方法２を
Ｋ３＝Ｋ３’
とし、所定の方法７’を
Ｒｅｓ’＝ｅ（Ｋｔｍｐ，Ｕ’）＾（Ｋ３−１）
としてもよい。ただし、ペアリングｅでは式（１）が成り立つので、
Ｒｅｓ’＝ｅ（（Ｋ３−１）Ｋｔｍｐ，Ｕ’）  または  Ｒｅｓ’＝ｅ（Ｋｔｍｐ，（Ｋ３−１）Ｕ’）
のようにレスポンスＲｅｓ’を求めてもよい。
【００７６】
第２の例では、所定の方法１を
Ｋ１＝（Ｋ３’）−１Ｋ０
とし、所定の方法２を
Ｋ３＝Ｋ３’
とし、所定の方法７’を
Ｒｅｓ’＝ｅ（Ｋｔｍｐ，Ｕ’）＾Ｋ３
としてもよい。ただし、ペアリングｅでは式（１）が成り立つので、
Ｒｅｓ’＝ｅ（Ｋ３Ｋｔｍｐ，Ｕ’）  または  Ｒｅｓ’＝ｅ（Ｋｔｍｐ，Ｋ３Ｕ’）
のようにレスポンスＲｅｓ’を求めてもよい。
【００７７】
第３の例では、所定の方法３’を、Ｈ（ｇＩＤｒ）を共通鍵として認証鍵Ａを暗号化し、暗号化認証鍵Ｖ’を求めてもよい。この場合は、所定の方法６’は、Ｈ（Ｗ）を共通鍵として暗号化認証鍵Ｖ’を認証鍵Ａ’に復号するとすればよい。
【００７８】
第４の例では、ステップＳ６１０でセッション情報Ｕ’も受信装置５００に送信し、所定の方法４’では、リクエストＲｅｑ’を
Ｒｅｑ’＝ｅ（ｒｔｍｐＫ１，Ｕ’）
のように求める。そして、所定の方法７’では、レスポンスＲｅｓ’を
Ｒｅｓ’＝Ｒｅｑ’＾Ｋ３
のように求めるとしてもよい。
【００７９】
［変形例１］
実施例２は暗号文Ｖを復号する前に受信装置の認証を行う点が実施例１と異なる。しかし、秘密鍵を配布する処理と、復号対象の暗号文Ｖの生成と復号自体は実施例１と同じである。したがって、実施例１で説明した変形例１〜３は実施例２でも適用できる。
【００８０】
実施例２変形例１は、受信装置５００自体が暗号文識別情報ｖを生成する点（暗号文識別情報ｖを受信しない点）を変更した暗号化システムである（実施例１変形例１に相当する）。実施例２変形例１の暗号化システムの構成例は図６である。この場合は、受信装置５００は、暗号文識別情報生成部２４０も備える。そして、秘密鍵を配布する処理フローが図２、暗号文の生成から復号までの処理フローが図８である。実施例２と実施例２変形例１との相違点は、実施例１と実施例１変形例１との相違点と同じなので、説明は省略する。
【００８１】
［変形例２］
実施例２変形例２は、鍵生成装置４００が保護用秘密鍵Ｋ２も生成する暗号化システムである（実施例１変形例２に相当する）。実施例２変形例２の暗号化システムの構成例は図６である。実施例２変形例２では、受信装置５００は、暗号文識別情報生成部２４０は備えていない。そして、秘密鍵を配布する処理フローが図５、暗号文の生成から復号までの処理フローが図７である。実施例２と実施例２変形例２との相違点は、実施例１と実施例１変形例２との相違点と同じなので、秘密鍵を配布する処理フローと暗号文の生成から復号までの処理フローの説明は省略する。また、所定の方法１〜７は実施例１変形例２と同じなので説明を省略する。所定の方法３’、４’、５’、６’、７’の具体例については以下に説明する。ただし、「秘密鍵Ｋ０から複数の復号鍵（受信用秘密鍵Ｋ１，保護用秘密鍵Ｋ２，代理計算用秘密鍵Ｋ３）を生成する方式」と「鍵を伴う一部の演算機能のリソースを外部装置（復号履歴蓄積サーバ）に安全に代行させる方式」とが機能する範囲ならば、これらの組み合わせに限定する必要はない。
【００８２】
所定の方法の組み合わせ２−３
所定の方法１では、受信用秘密鍵Ｋ１を
Ｋ１＝Ｋ３’Ｋ０
のように求める。所定の方法２’では、代理計算用秘密鍵Ｋ３を
Ｋ３＝（Ｋ２Ｋ３’）−１
のように求める。所定の方法３’では、暗号化認証鍵Ｖ’を
Ｖ’＝Ａ（＋）Ｈ（ｇＩＤｒ）
のように求める。所定の方法４’では、リクエストＲｅｑ’を受信用秘密鍵Ｋ１を含む情報とする。所定の方法５’では、値Ｗを
Ｗ＝Ｒｅｓ’＾Ｋ２
のように求める。所定の方法６’では、認証鍵Ａ’を
Ａ’＝Ｖ’（＋）Ｈ（Ｗ）
のように求める。所定の方法７’では、レスポンスＲｅｓ’を
Ｒｅｓ’＝ｅ（Ｋ１，Ｕ’）＾Ｋ３
のように求める。ただし、ペアリングｅでは式（１）が成り立つので、
Ｒｅｓ’＝ｅ（Ｋ３Ｋ１，Ｕ’）  または  Ｒｅｓ’＝ｅ（Ｋ１，Ｋ３Ｕ’）
のようにレスポンスＲｅｓ’を求めてもよい。
【００８３】
なお、上述の所定の方法の組み合わせの一部を以下の例のように変更してもよい。
【００８４】
第１の例では、所定の方法２’を
Ｋ３＝（Ｋ２）−１Ｋ３’
とし、所定の方法７’を
Ｒｅｓ’＝ｅ（Ｋ１，Ｕ’）＾（Ｋ３−１）
としてもよい。ただし、ペアリングｅでは式（１）が成り立つので、
Ｒｅｓ’＝ｅ（（Ｋ３−１）Ｋ１，Ｕ’）  または  Ｒｅｓ’＝ｅ（Ｋ１，（Ｋ３−１）Ｕ’）
のようにレスポンスＲｅｓ’を求めてもよい。
【００８５】
第２の例では、所定の方法１を
Ｋ１＝（Ｋ３’）−１Ｋ０
とし、所定の方法２’を
Ｋ３＝（Ｋ２）−１Ｋ３’
とし、所定の方法７’を
Ｒｅｓ’＝ｅ（Ｋ１，Ｕ’）＾Ｋ３
としてもよい。ただし、ペアリングｅでは式（１）が成り立つので、
Ｒｅｓ’＝ｅ（Ｋ３Ｋ１，Ｕ’）  または  Ｒｅｓ’＝ｅ（Ｋ１，Ｋ３Ｕ’）
のようにレスポンスＲｅｓ’を求めてもよい。
【００８６】
第３の例では、所定の方法３’を、Ｈ（ｇＩＤｒ）を共通鍵として認証鍵Ａを暗号化し、暗号化認証鍵Ｖ’を求めてもよい。この場合は、所定の方法６’は、Ｈ（Ｗ）を共通鍵として暗号文Ｖを平文Ｍ’に復号するとすればよい。
【００８７】
第４の例では、ステップＳ６１０でセッション情報Ｕ’も受信装置５００に送信し、所定の方法４’では、リクエストＲｅｑ’を
Ｒｅｑ’＝ｅ（Ｋ１，Ｕ’）
のように求める。そして、所定の方法７’では、レスポンスＲｅｓ’を
Ｒｅｓ’＝Ｒｅｑ’＾Ｋ３
のように求めるとしてもよい。
【００８８】
所定の方法の組み合わせ２−４
所定の方法１では、受信用秘密鍵Ｋ１を
Ｋ１＝Ｋ３’Ｋ０
のように求める。所定の方法２’では、代理計算用秘密鍵Ｋ３を
Ｋ３＝（Ｋ２Ｋ３’）−１
のように求める。所定の方法３’では、暗号化認証鍵Ｖ’を
Ｖ’＝Ａ（＋）Ｈ（ｇＩＤｒ）
のように求める。所定の方法４’では、第２リクエスト作成部５２０が、乱数ｒｔｍｐを０以上ｐ−１以下の整数から選択し、隠蔽鍵Ｋｔｍｐを
Ｋｔｍｐ＝ｒｔｍｐＫ１
を求め、リクエストＲｅｑ’を隠蔽鍵Ｋｔｍｐを含む情報とする。所定の方法５’では、値Ｗを
Ｗ＝Ｒｅｓ’＾（ｒｔｍｐ−１Ｋ２）
のように求める。所定の方法６’では、認証鍵Ａ’を
Ａ’＝Ｖ’（＋）Ｈ（Ｗ）
のように求める。所定の方法７’では、レスポンスＲｅｓ’を
Ｒｅｓ’＝ｅ（Ｋｔｍｐ，Ｕ’）＾Ｋ３
のように求める。ただし、ペアリングｅでは式（１）が成り立つので、
Ｒｅｓ’＝ｅ（Ｋ３Ｋｔｍｐ，Ｕ’）  または  Ｒｅｓ’＝ｅ（Ｋｔｍｐ，Ｋ３Ｕ’）
のようにレスポンスＲｅｓ’を求めてもよい。
【００８９】
なお、上述の所定の方法の組み合わせの一部を以下の例のように変更してもよい。
【００９０】
第１の例では、所定の方法２’を
Ｋ３＝（Ｋ２）−１Ｋ３’
とし、所定の方法７’を
Ｒｅｓ＝ｅ（Ｋｔｍｐ，Ｕ’）＾（Ｋ３−１）
としてもよい。ただし、ペアリングｅでは式（１）が成り立つので、
Ｒｅｓ’＝ｅ（（Ｋ３−１）Ｋｔｍｐ，Ｕ’）  または  Ｒｅｓ’＝ｅ（Ｋｔｍｐ，（Ｋ３−１）Ｕ’）
のようにレスポンスＲｅｓ’を求めてもよい。
【００９１】
第２の例では、所定の方法１を
Ｋ１＝（Ｋ３’）−１Ｋ０
とし、所定の方法２’を
Ｋ３＝（Ｋ２）−１Ｋ３’
とし、所定の方法７’を
Ｒｅｓ’＝ｅ（Ｋｔｍｐ，Ｕ’）＾Ｋ３
としてもよい。ただし、ペアリングｅでは式（１）が成り立つので、
Ｒｅｓ’＝ｅ（Ｋ３Ｋｔｍｐ，Ｕ’）  または  Ｒｅｓ’＝ｅ（Ｋｔｍｐ，Ｋ３Ｕ’）
のようにレスポンスＲｅｓ’を求めてもよい。
【００９２】
第３の例では、所定の方法３を、Ｈ（ｇＩＤｒ）を共通鍵として認証鍵Ａを暗号化し、暗号化認証鍵Ｖ’を求めてもよい。この場合は、所定の方法６’は、Ｈ（Ｗ）を共通鍵として暗号化認証鍵Ｖ’を認証鍵Ａ’に復号するとすればよい。
【００９３】
第４の例では、ステップＳ６１０でセッション情報Ｕ’も受信装置５００に送信し、所定の方法４’では、リクエストＲｅｑ’を
Ｒｅｑ’＝ｅ（ｒｔｍｐＫ１，Ｕ’）
のように求める。そして、所定の方法７’では、レスポンスＲｅｓ’を
Ｒｅｓ’＝Ｒｅｑ’＾Ｋ３
のように求めるとしてもよい。
【００９４】
［変形例３］
実施例２変形例３は、受信装置５００自体が暗号文識別情報ｖを生成する点（暗号文識別情報ｖを受信しない点）と、鍵生成装置４００が保護用秘密鍵Ｋ２も生成する点を変更した暗号化システムである（実施例１変形例３に相当する）。実施例２変形例３の暗号化システムの構成例は図６である。この場合は、受信装置５００は、暗号文識別情報生成部２４０も備える。そして、秘密鍵を配布する処理フローが図５、暗号文の生成から復号までの処理フローが図８である。実施例２変形例２と実施例２変形例３との相違点は、実施例１変形例２と実施例１変形例３との相違点と同じなので、説明は省略する。
【実施例３】
【００９５】
実施例３では、実施例２とは異なる方法で復号履歴蓄積サーバが認証する暗号化システムを示す。図９に実施例３の暗号化システムの構成例を示す。図１０に実施例３の暗号化システムの秘密鍵を配布する処理フローを、図１１に暗号文の生成から復号までの処理フローを示す。実施例３の暗号化システムは、送信装置１００、受信装置５０１、復号履歴蓄積サーバ６０１、鍵生成装置７００で構成される。
【００９６】
以下の説明では、ｋは大きな整数、ｐはｋビットの素数、Ｇ１は位数ｐの巡回加算群、Ｇ２は位数ｐの巡回群、ｅはＧ１×Ｇ１→Ｇ２のように写像する双線形ペアリング関数、Ｈは群Ｇ２の元をｎビットのビット列に写像するハッシュ関数を示す記号、Ｐは群Ｇ１の生成元、ｓは鍵生成装置４００が生成した０以上ｐ−１以下の整数、ＰＰｕｂ＝ｓＰ、（Ｐ，ＰＰｕｂ）は公開パラメータ、MaptoPointＧ1は任意長のビット列を群Ｇ１の元に写像する関数、ＩＤは任意長のビット列、ＱＩＤ＝MaptoPointＧ1（ＩＤ）、（＋）はビット単位の排他的論理和を示す記号、＾はべき乗を示す記号、ｖは暗号文Ｖを識別する暗号文識別情報、ｈは暗号文Ｖを識別する暗号文識別情報を生成する関数を示す記号、‖はビット列の結合を示す記号とする。
【００９７】
送信装置１００は、暗号化部１１０、暗号文送信部１２０、暗号化記録部１９０を備える。受信装置５０１は、属性送信部２１０、リクエスト作成部２２０、リクエスト送信部２２５、復号部２３０、鍵識別子送信部５６０、復号記録部２９５を備える。復号履歴蓄積サーバ６０１は、レスポンス作成部３１０、レスポンス送信部３１５、鍵識別子照合部６６０、セッション情報蓄積部３７０、履歴蓄積部３８０、代理記録部３９５を備える。鍵生成装置７００は、鍵生成部４１０、鍵分割部４２０、鍵配布部７３０、鍵識別子生成部７４０、鍵生成記録部４９０を備える。以下に、処理フローを説明しながら、これらの構成部の機能を説明する。
【００９８】
秘密鍵を配布する処理フロー
ステップＳ２１１からＳ４３４までは実施例１と同じである。ステップＳ４３４の後、鍵識別子生成部７４０が、受信用秘密鍵Ｋ１と代理計算用秘密鍵Ｋ３から鍵識別子ＫＩＤを生成する（Ｓ７４０）。なお、鍵識別子ＫＩＤは、受信用秘密鍵Ｋ１と代理計算用秘密鍵Ｋ３から特定できる情報であればよい。例えば、Ｋ１‖Ｋ３のハッシュ値を鍵識別子ＫＩＤとしてもよいし、Ｋ１‖Ｋ３‖Ｘのように他の情報Ｘ（例えば、受信装置２００の属性を示すビット列ＩＤ）も付加したビット列のハッシュ値を鍵識別子ＫＩＤとしてもよい。さらには、後述する実施例３変形例２のように保護用秘密鍵Ｋ２も生成するときは、Ｋ１‖Ｋ２‖Ｋ３のハッシュ値を鍵識別子ＫＩＤとしてもよい。
【００９９】
そして、鍵配布部７３０は、受信用秘密鍵Ｋ１と鍵識別子ＫＩＤを受信装置５０１に送信し、受信用秘密鍵Ｋ１を送信した受信装置５０１を識別する受信装置識別情報ＲＩＤと代理計算用秘密鍵Ｋ３と鍵識別子ＫＩＤを復号履歴蓄積サーバ６０１に送信する（Ｓ７３５）。受信装置５０１の復号記録部２９５は、受信用秘密鍵Ｋ１を記録する（Ｓ２９３）。復号履歴蓄積サーバ６０１の代理記録部３９５は、受信装置識別情報ＲＩＤに対応付けて代理計算用秘密鍵Ｋ３を記録する（Ｓ３９３）。
【０１００】
暗号文の生成から復号までの処理フロー
ステップＳ２１２からＳ２２２までの処理は実施例１と同じである。受信装置５０１の鍵識別子送信部５６０は、復号履歴蓄積サーバ６０１に鍵識別子ＫＩＤを送信する（Ｓ５６０）。なお、鍵識別子ＫＩＤの送信は、リクエストＲｅｑと一緒でもよい。また、何らかの安全な通信手段を利用すればよい。復号履歴蓄積サーバ６０１の鍵識別子照合部６６０は、鍵識別子ＫＩＤが正しいかを照合する（正しい受信用秘密鍵Ｋ１を所有している受信装置５０１かを確認する）（Ｓ５６０）。照合が失敗した場合は処理を中止する。照合が成功した場合はステップＳ３１０に進む。ステップＳ３１０、Ｓ２３０、Ｓ３８０は実施例１と同じである。
【０１０１】
なお、上述の方法に限定する必要はなく、あらかじめ受信装置５０１と復号履歴蓄積サーバ６０１が鍵識別子ＫＩＤを共有し、受信装置５０１と復号履歴蓄積サーバ６０１が、鍵識別子ＫＩＤを照合する照合手段を備えていればよい。実施例３はこのような処理なので、実施例１の効果が得られた上で、さらに受信装置が実際に復号できるときのみ復号履歴を記録できる。
【０１０２】
［変形例１］
実施例３も暗号文Ｖを復号する前に受信装置の認証を行う点が実施例１と異なる。しかし、秘密鍵を配布する処理と、復号対象の暗号文Ｖの生成と復号自体は実施例１と同じである。したがって、実施例１で説明した変形例１〜３は実施例３でも適用できる。
【０１０３】
実施例３変形例１は、受信装置５０１自体が暗号文識別情報ｖを生成する点（暗号文識別情報ｖを受信しない点）を変更した暗号化システムである（実施例１変形例１に相当する）。実施例３変形例１の暗号化システムの構成例は図９である。この場合は、受信装置５０１は、暗号文識別情報生成部２４０も備える。そして、秘密鍵を配布する処理フローが図１０、暗号文の生成から復号までの処理フローが図１２である。実施例３と実施例３変形例１との相違点は、実施例１と実施例１変形例１との相違点と同じなので、説明は省略する。
【０１０４】
［変形例２］
実施例３変形例２は、鍵生成装置７００が保護用秘密鍵Ｋ２も生成する暗号化システムである（実施例１変形例２に相当する）。実施例３変形例２の暗号化システムの構成例は図９である。実施例３変形例２では、受信装置５０１は、暗号文識別情報生成部２４０は備えていない。そして、秘密鍵を配布する処理フローが図１３、暗号文の生成から復号までの処理フローが図１１である。実施例３と実施例３変形例２との相違点は、実施例１と実施例１変形例２との相違点と同じなので、説明は省略する。
【０１０５】
［変形例３］
実施例３変形例３は、受信装置５０１自体が暗号文識別情報ｖを生成する点（暗号文識別情報ｖを受信しない点）と、鍵生成装置７００が保護用秘密鍵Ｋ２も生成する点を変更した暗号化システムである（実施例１変形例３に相当する）。実施例３変形例３の暗号化システムの構成例は図９である。この場合は、受信装置５０１は、暗号文識別情報生成部２４０も備える。そして、秘密鍵を配布する処理フローが図１３、暗号文の生成から復号までの処理フローが図１２である。実施例３変形例２と実施例３変形例３との相違点は、実施例１変形例２と実施例１変形例３との相違点と同じなので、説明は省略する。
【０１０６】
［プログラム、記録媒体］
上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【０１０７】
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
【０１０８】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【０１０９】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【０１１０】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【０１１１】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【符号の説明】
【０１１２】
１００  送信装置                        １１０  暗号化部
１２０、１２１  暗号文送信部            １９０  暗号化記録部
２００、５００、５０１  受信装置        ２１０  属性送信部
２２０  リクエスト作成部                ２２５  リクエスト送信部
２３０  復号部                          ２４０  暗号文識別情報生成部
２９０、２９５  復号記録部
３００、６００、６０１  復号履歴蓄積サーバ
３１０  レスポンス作成部                ３１５  レスポンス送信部
３７０  セッション情報蓄積部            ３８０  履歴蓄積部
３９０、３９５  代理記録部              ４００、７００  鍵生成装置
４１０  鍵生成部                        ４２０  鍵分割部
４３０、７３０  鍵配布部                ４９０  鍵生成記録部
５２０  第２リクエスト作成部            ５３０  第２復号部
５５０  ハッシュ値計算部                ５６０  鍵識別子送信部
６１０  認証鍵生成部                    ６２０  チャレンジ生成部
６３０  第２レスポンス作成部            ６４０  認証部
６６０  鍵識別子照合部                  ７４０  鍵識別子生成部
【図１】
0005496957.tif 000002
【図２】
0005496957.tif 000003
【図３】
0005496957.tif 000004
【図４】
0005496957.tif 000005
【図５】
0005496957.tif 000006
【図６】
0005496957.tif 000007
【図７】
0005496957.tif 000008
【図８】
0005496957.tif 000009
【図９】
0005496957.tif 000010
【図１０】
0005496957.tif 000011
【図１１】
0005496957.tif 000012
【図１２】
0005496957.tif 000013
【図１３】
0005496957.tif 000014