(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023096835
(43)【公開日】2023-07-07
(54)【発明の名称】メッセージグループ管理者装置およびメッセージグループメンバ装置、ならびに、それらのプログラム
(51)【国際特許分類】
H04L 9/08 20060101AFI20230630BHJP
H04L 9/14 20060101ALI20230630BHJP
【FI】
H04L9/08 C
H04L9/14
H04L9/08 F
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2021212848
(22)【出願日】2021-12-27
(71)【出願人】
【識別番号】301022471
【氏名又は名称】国立研究開発法人情報通信研究機構
(71)【出願人】
【識別番号】000004352
【氏名又は名称】日本放送協会
(74)【代理人】
【識別番号】110001807
【氏名又は名称】弁理士法人磯野国際特許商標事務所
(72)【発明者】
【氏名】江村 恵太
(72)【発明者】
【氏名】野島 良
(72)【発明者】
【氏名】小川 一人
(72)【発明者】
【氏名】梶田 海成
(72)【発明者】
【氏名】大竹 剛
(57)【要約】
【課題】セキュアグループメッセージング方式において、参加者情報である公開鍵を秘匿してメッセージの送受信を行うことが可能なメッセージグループ管理者装置を提供する。
【解決手段】メッセージグループ管理者装置1は、グループメンバを完全2分木の葉ノードに対応付けてルートノード以外のノードのノード公開鍵集合を生成し、葉ノードのインデックスを鍵秘匿かつロバスト性を持つ公開鍵暗号方式により暗号化した暗号化ノード情報とノード公開鍵集合とを含むグループ初期化情報をグループメンバに送信するグループ管理者初期化手段11を備える。
【選択図】
図3
【特許請求の範囲】
【請求項1】
グループ共有鍵でメッセージを暗号化してグループ内で送受信するメッセージグループ管理者装置および複数のメッセージグループメンバ装置のグループメンバで構成されるメッセージ送受信システムにおける前記メッセージグループ管理者装置であって、
前記グループメンバを完全2分木の葉ノードに対応付けて前記葉ノードのノード秘密鍵を鍵共有方式により生成するとともにノード公開鍵を生成し、兄弟ノードごとに親ノードのノード秘密鍵およびノード公開鍵の生成を繰り返すことでルートノード以外のノードのノード公開鍵集合を生成し、前記葉ノードのインデックスを鍵秘匿かつロバスト性を持つ公開鍵暗号方式により暗号化した暗号化ノード情報と前記ノード公開鍵集合とを含むグループ初期化情報を前記グループメンバに送信するグループ管理者初期化手段と、
自身の葉ノードのノード秘密鍵により、前記自身の葉ノードから前記ルートノードまでのパス上のノード公開鍵を更新するとともに、前記ルートノードのノード秘密鍵を前記グループ共有鍵として更新し、更新された前記パス上のノード公開鍵部分集合と、自身の葉ノードのインデックスを暗号化した暗号化ノードインデックスとを含む鍵更新情報を生成する鍵更新情報生成手段と、
前記メッセージを更新後の前記グループ共有鍵で暗号化し、前記鍵更新情報を付加して、自身以外の前記グループメンバに送信するメッセージ送信手段と、
自身以外の前記グループメンバから受信した前記鍵更新情報に含まれる前記ノード公開鍵部分集合で前記ノード公開鍵集合を更新し、前記鍵更新情報に含まれる前記暗号化ノードインデックスを復号したインデックスの葉ノードからルートノードまでのノード秘密鍵およびノード公開鍵を自身の葉ノードのノード秘密鍵を用いて更新し、前記ルートノードのノード秘密鍵を前記グループ共有鍵として更新する鍵情報更新手段と、
自身以外の前記グループメンバから受信した暗号化メッセージに付加されている鍵更新情報により、前記鍵情報更新手段で更新されたグループ共有鍵で前記暗号化メッセージを復号するメッセージ受信手段と、
を備えることを特徴とするメッセージグループ管理者装置。
【請求項2】
前記グループ管理者初期化手段は、前記グループメンバのメンバ公開鍵を共通鍵暗号方式の秘密鍵で暗号化することで暗号化メンバ公開鍵を生成し、前記秘密鍵を前記葉ノードのインデックスとともに暗号化して前記暗号化ノード情報とし、前記グループ初期化情報に前記暗号化メンバ公開鍵をさらに加えることを特徴とする請求項1に記載のメッセージグループ管理者装置。
【請求項3】
コンピュータを、請求項1または請求項2に記載のメッセージグループ管理者装置として機能させるためのプログラム。
【請求項4】
グループ共有鍵でメッセージを暗号化してグループ内で送受信するメッセージグループ管理者装置および複数のメッセージグループメンバ装置のグループメンバで構成されるメッセージ送受信システムにおける前記メッセージグループメンバ装置であって、
前記メッセージグループ管理者装置から、前記グループメンバを完全2分木の葉ノードに対応付けて生成されたルートノード以外のノードのノード公開鍵集合と、前記葉ノードのインデックスを暗号化した暗号化ノード情報とを含むグループ初期化情報を受信し、前記暗号化ノード情報を鍵秘匿かつロバスト性を持つ公開鍵暗号方式により復号することで葉ノードのインデックスを取得し、鍵共有方式により前記メッセージグループ管理者装置が生成した自身の葉ノードのノード秘密鍵を生成し、前記自身のインデックスの葉ノードからルートノードまでのノード秘密鍵およびノード公開鍵を自身の葉ノードのノード秘密鍵を用いて更新し、前記ルートノードのノード秘密鍵を前記グループ共有鍵として更新するグループメンバ初期化手段と、
自身の葉ノードの新たなノード秘密鍵により、前記自身の葉ノードから前記ルートノードまでのパス上のノード公開鍵を更新するとともに、前記ルートノードのノード秘密鍵を前記グループ共有鍵として更新し、更新された前記パス上のノード公開鍵部分集合と、自身の葉ノードのインデックスを暗号化した暗号化ノードインデックスとを含む鍵更新情報を生成する鍵更新情報生成手段と、
前記メッセージを更新後の前記グループ共有鍵で暗号化し、前記鍵更新情報を付加して、自身以外の前記グループメンバに送信するメッセージ送信手段と、
自身以外の前記グループメンバから受信した前記鍵更新情報に含まれる前記ノード公開鍵部分集合で前記ノード公開鍵集合を更新し、前記鍵更新情報に含まれる前記暗号化ノードインデックスを復号したインデックスの葉ノードからルートノードまでのノード秘密鍵およびノード公開鍵を自身の葉ノードのノード秘密鍵を用いて更新し、前記ルートノードのノード秘密鍵を前記グループ共有鍵として更新する鍵情報更新手段と、
自身以外の前記グループメンバから受信した暗号化メッセージに付加されている鍵更新情報により、前記鍵情報更新手段で更新されたグループ共有鍵で前記暗号化メッセージを復号するメッセージ受信手段と、
を備えることを特徴とするメッセージグループメンバ装置。
【請求項5】
前記暗号化ノード情報は、送信元のグループメンバのメンバ公開鍵を共通鍵暗号方式の秘密鍵で暗号化した前記秘密鍵を前記送信元のグループメンバの葉ノードのインデックスとともに暗号化したものであり、
前記グループ初期化情報は、前記メンバ公開鍵を暗号化した暗号化メンバ公開鍵をさらに加えたものであって、
前記グループメンバ初期化手段は、前記暗号化ノード情報を復号し、前記秘密鍵で前記暗号化メンバ公開鍵を復号することを特徴とする請求項4に記載のメッセージグループメンバ装置。
【請求項6】
コンピュータを、請求項4または請求項5に記載のメッセージグループメンバ装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メッセージグループ管理者装置およびメッセージグループメンバ装置、ならびに、それらのプログラムに関する。
【背景技術】
【0002】
近年、Zoom(登録商標)等のビデオ会議アプリケーションや、LINE(登録商標)等のメッセンジャアプリケーションが国内外で広く利用されている。しかし、例えば、令和2年総務省情報通信白書ではビデオ会議アプリの脆弱性が指摘され、セキュリティ担保は重要な課題である。
ZoomやLINEでは、ユーザ同士の端末間でセキュリティを担保するために、End-to-End(E2E)暗号化が用いられている。E2E暗号化によって安全にメッセージを送受信する技術はセキュアメッセージングと呼ばれている。
【0003】
E2E暗号化には種々の方式があり、例えば、代表的なものとして、Signalプロトコル(非特許文献1)がある。このSignalプロトコルには、Sealed Senderと呼ばれる送信者情報を秘匿する機能が付加されている。さらに、Signalプロトコルには、追加のメールボックスを経由することで受信者情報も隠す方式が提案されている(非特許文献2)。なお、ZoomやLINEでは、それぞれ独自のE2E暗号化技術が用いられている(非特許文献3,4)。
【0004】
E2E暗号化には、大きく分けて二つのステップがある。一つは、ユーザ同士で公開鍵を共有すること(鍵共有)である。もう一つは、共有した公開鍵に対応した秘密鍵を用いてメッセージを暗号化することである。インターネットに関する標準化団体であるIETF(The Internet Engineering Task Force)では、セキュアメッセージングに関する標準化を行っており、非同期ラチェットツリー(Asynchronous Ratcheting Tree;ART)(非特許文献5)と呼ばれる複数のユーザを対象としたセキュアグループメッセージング方式を拡張した方式の標準化が行われている。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】M. Marlinspike and T. Perrin, "The Double Ratchet Algorithm," https://whispersystems.org/docs/specifications/doubleratchet/doubleratchet.pdf, November 20, 2016.
【非特許文献2】I. Martiny, G. Kaptchuk, A. J. Aviv, D. S. Roche, and E. Wustrow, "Improving Signal’s sealed sender," In NDSS, February 21, 2021.
【非特許文献3】J. Blum, S. Booth, O. Gal, M. Krohn, J. Len, K. Lyons, A. Marcedone, M. Maxim, M. Ember Mou, J. O'Connor, S. Rien, M. Steele, M. Green, L Kissner, and A. Stamos, "https://github.com/zoom/zoom-e2e-whitepaper/blob/master/archive/zoom_e2e_v3.pdf," Zoom Video Communications, Inc., December 15, 2020.
【非特許文献4】"LINE Encryption Overview Technical Whitepaper." https://scdn.line-apps.com/stf/linecorp/en/csr/line-encryption-whitepaper-ver2.0.pdf, LINE Corporation, October 28, 2019.
【非特許文献5】K. Cohn-Gordon, C. Cremers, L. Garratt, J. Millican, and K. Milner. "On ends-to-ends encryption: Asynchronous group messaging with strong security guarantees," In ACM CCS, pp.1802-1819, October 15, 2018.
【発明の概要】
【発明が解決しようとする課題】
【0006】
通常のオフライン会合では、会話の内容のみならず、誰が集まって会話を行っているかまで秘匿したいと要請される場合がある。そして、セキュアグループメッセージングを用いたオンライン会合においても同様に、誰がグループに属しているかといった送信者や受信者の情報(以下、参加者情報)を秘匿したいという要請が考えられる。
しかし、従来は、3者以上のユーザ間でのセキュアメッセージングを実現する際に、参加者情報を秘匿する方法は提案されていないため、その機能を実現する手法が望まれていた。
【0007】
本発明は、このような要望に鑑みてなされたものであり、複数の参加者(グループメンバ)を対象としたセキュアグループメッセージング方式において、参加者情報を秘匿してメッセージの送受信を行うことが可能なメッセージグループ管理者装置およびメッセージグループメンバ装置、ならびに、それらのプログラム提供することを課題とする。
【課題を解決するための手段】
【0008】
前記課題を解決するため、本発明に係るメッセージグループ管理者装置は、グループ共有鍵でメッセージを暗号化してグループ内で送受信するメッセージグループ管理者装置および複数のメッセージグループメンバ装置のグループメンバで構成されるメッセージ送受信システムにおけるメッセージグループ管理者装置であって、グループ管理者初期化手段と、鍵更新情報生成手段と、メッセージ送信手段と、鍵情報更新手段と、メッセージ受信手段と、を備える構成とした。
【0009】
かかる構成において、メッセージグループ管理者装置は、グループ管理者初期化手段によって、グループメンバを完全2分木の葉ノードに対応付けて葉ノードのノード秘密鍵を鍵共有方式により生成するとともにノード公開鍵を生成し、兄弟ノードごとに親ノードのノード秘密鍵およびノード公開鍵の生成を繰り返すことでルートノード以外のノードのノード公開鍵集合を生成し、葉ノードのインデックスを鍵秘匿かつロバスト性を持つ公開鍵暗号方式により暗号化した暗号化ノード情報とノード公開鍵集合とを含むグループ初期化情報をグループメンバに送信する。
これによって、メッセージグループ管理者装置は、参加者情報である葉ノードのインデックスをグループメンバ以外に秘匿してグループメンバに配信することができる。
【0010】
また、メッセージグループ管理者装置は、鍵更新情報生成手段によって、自身の葉ノードのノード秘密鍵により、自身の葉ノードからルートノードまでのパス上のノード公開鍵を更新するとともに、ルートノードのノード秘密鍵をグループ共有鍵として更新し、更新されたパス上のノード公開鍵部分集合と、自身の葉ノードのインデックスを暗号化した暗号化ノードインデックスとを含む鍵更新情報を生成する。
そして、メッセージグループ管理者装置は、メッセージ送信手段によって、メッセージを更新後のグループ共有鍵で暗号化し、鍵更新情報を付加して、自身以外のグループメンバに送信する。
これによって、メッセージグループ管理者装置は、メッセージを常に新たなグループ共有鍵で暗号化することができる。
【0011】
また、メッセージグループ管理者装置は、鍵情報更新手段によって、自身以外のグループメンバから受信した鍵更新情報に含まれるノード公開鍵部分集合でノード公開鍵集合を更新し、鍵更新情報に含まれる暗号化ノードインデックスを復号したインデックスの葉ノードからルートノードまでのノード秘密鍵およびノード公開鍵を自身の葉ノードのノード秘密鍵を用いて更新し、ルートノードのノード秘密鍵をグループ共有鍵として更新する。
そして、メッセージグループ管理者装置は、メッセージ受信手段によって、自身以外のグループメンバから受信した暗号化メッセージに付加されている鍵更新情報により、鍵情報更新手段で更新されたグループ共有鍵で暗号化メッセージを復号する。
これによって、メッセージグループ管理者装置は、暗号化メッセージを常に新たなグループ共有鍵で復号することができる。
なお、メッセージグループ管理者装置は、コンピュータを、前記した各手段として機能させるためのプログラムで動作させることができる。
【0012】
また、前記課題を解決するため、本発明に係るメッセージグループメンバ装置は、グループ共有鍵でメッセージを暗号化してグループ内で送受信するメッセージグループ管理者装置および複数のメッセージグループメンバ装置のグループメンバで構成されるメッセージ送受信システムにおけるメッセージグループメンバ装置であって、グループメンバ初期化手段と、鍵更新情報生成手段と、メッセージ送信手段と、鍵情報更新手段と、メッセージ受信手段と、を備える構成とした。
【0013】
かかる構成において、メッセージグループメンバ装置は、グループメンバ初期化手段によって、メッセージグループ管理者装置から、グループメンバを完全2分木の葉ノードに対応付けて生成されたルートノード以外のノードのノード公開鍵集合と、葉ノードのインデックスを暗号化した暗号化ノード情報とを含むグループ初期化情報を受信し、暗号化ノード情報を鍵秘匿かつロバスト性を持つ公開鍵暗号方式により復号することで葉ノードのインデックスを取得し、鍵共有方式によりメッセージグループ管理者装置が生成した自身の葉ノードのノード秘密鍵を生成し、自身のインデックスの葉ノードからルートノードまでのノード秘密鍵およびノード公開鍵を自身の葉ノードのノード秘密鍵を用いて更新し、ルートノードのノード秘密鍵をグループ共有鍵として更新する。
これによって、メッセージグループメンバ装置は、参加者情報である葉ノードのインデックスをグループメンバ以外に秘匿して取得することができる。
【0014】
また、メッセージグループメンバ装置は、鍵更新情報生成手段によって、自身の葉ノードのノード秘密鍵により、自身の葉ノードからルートノードまでのパス上のノード公開鍵を更新するとともに、ルートノードのノード秘密鍵をグループ共有鍵として更新し、更新されたパス上のノード公開鍵部分集合と、自身の葉ノードのインデックスを暗号化した暗号化ノードインデックスとを含む鍵更新情報を生成する。
そして、メッセージグループメンバ装置は、メッセージ送信手段によって、メッセージを更新後のグループ共有鍵で暗号化し、鍵更新情報を付加して、自身以外のグループメンバに送信する。
これによって、メッセージグループメンバ装置は、メッセージを常に新たなグループ共有鍵で暗号化することができる。
【0015】
また、メッセージグループメンバ装置は、鍵情報更新手段によって、自身以外のグループメンバから受信した鍵更新情報に含まれるノード公開鍵部分集合でノード公開鍵集合を更新し、鍵更新情報に含まれる暗号化ノードインデックスを復号したインデックスの葉ノードからルートノードまでのノード秘密鍵およびノード公開鍵を自身の葉ノードのノード秘密鍵を用いて更新し、ルートノードのノード秘密鍵をグループ共有鍵として更新する。
そして、メッセージグループメンバ装置は、メッセージ受信手段によって、自身以外のグループメンバから受信した暗号化メッセージに付加されている鍵更新情報により、鍵情報更新手段で更新されたグループ共有鍵で暗号化メッセージを復号する。
これによって、メッセージグループメンバ装置は、暗号化メッセージを常に新たなグループ共有鍵で復号することができる。
なお、メッセージグループメンバ装置は、コンピュータを、前記した各手段として機能させるためのプログラムで動作させることができる。
【発明の効果】
【0016】
本発明は、以下に示す優れた効果を奏するものである。
本発明によれば、参加者情報であるグループメンバの葉ノードのインデックスをグループメンバ以外に秘匿することができる。
また、本発明によれば、メッセージの送受信を行う前にグループ共有鍵を更新し、新たなグループ共有鍵で暗号化メッセージ生成し、鍵更新情報とともに送信するため、安全性を高めて、非同期にメッセージを送受信することができる。
【図面の簡単な説明】
【0017】
【
図1】本発明の実施形態に係るグループメッセージ送受信システムの全体構成を示す構成図である。
【
図2】本発明の実施形態に係るメッセージグループ管理者装置およびメッセージグループメンバ装置の構成を示すブロック図である。
【
図3】
図2のメッセージグループ管理者装置のグループ管理者初期化手段の構成および記憶手段の記憶内容を示すブロック図である。
【
図4】ノード公開鍵集合およびノード共有鍵の生成手法を説明するための完全2分木を用いた説明図である。
【
図5】
図2のメッセージグループ管理者装置のメッセージ送信手段および鍵更新情報生成手段の構成を示すブロック図である。
【
図6】
図2のメッセージグループ管理者装置のメッセージ受信手段および鍵情報更新手段の構成を示すブロック図である。
【
図7】
図2のメッセージグループメンバ装置のグループメンバ初期化手段の構成および記憶手段の記憶内容を示すブロック図である。
【
図8】本発明の実施形態に係るメッセージグループ管理者装置の初期化処理の動作を示すフローチャートである。
【
図9】本発明の実施形態に係るメッセージグループメンバ装置の初期化処理の動作を示すフローチャートである。
【
図10】本発明の実施形態に係るメッセージグループ管理者装置またはメッセージグループメンバ装置のメッセージ送信の動作を示すフローチャートである。
【
図11】本発明の実施形態に係るメッセージグループ管理者装置またはメッセージグループメンバ装置のメッセージ受信の動作を示すフローチャートである。
【発明を実施するための形態】
【0018】
以下、本発明の実施形態について図面を参照して説明する。
〔グループメッセージ送受信システムの構成〕
最初に、
図1を参照して、グループメッセージ送受信システムSの構成について説明する。
【0019】
グループメッセージ送受信システムSは、グループを構成するグループメンバ(端末装置)間でメッセージを送受信するものである。グループメッセージ送受信システムSは、誰がグループに参加しているのかを示す参加者情報をグループのメンバ以外に秘匿する機能を有する。
グループメッセージ送受信システムSは、メッセージグループ管理者装置1と、メッセージグループメンバ装置2と、鍵管理サーバ3とを、ネットワークNを介して備える。
一台のメッセージグループ管理者装置1と、複数のメッセージグループメンバ装置22,23,…,2nとで一つのグループが形成される。鍵管理サーバ3は、このグループに限定されず、別のグループに対しても機能するサーバである。
メッセージグループ管理者装置1およびメッセージグループメンバ装置2は、グループメッセージを送受信するアプリケーションソフトウェアを、図示を省略したサーバからダウンロードし、実行することで、各機能を実現する。
【0020】
メッセージグループ管理者装置1は、鍵管理サーバ3が公開する複数のメッセージグループメンバ装置22,23,…,2nの公開鍵を用いて、複数のメッセージグループメンバ装置22,23,…,2nとグループを形成し、メッセージを暗号化する鍵(グループ共有鍵)を共有するグループの管理者となる端末装置である。
メッセージグループ管理者装置1は、グループのメンバとなるメッセージグループメンバ装置2にグループ初期化情報を送信することでグループを形成する。ただし、メッセージグループ管理者装置1は、グループ共有鍵の更新やメッセージの送受信においては、メッセージグループメンバ装置2と同じ機能を有するグループのメンバである。
なお、ここでは、メッセージグループ管理者装置1を一台図示しているが、グループメッセージ送受信システムSにおいて、形成するグループに応じて複数存在する。このメッセージグループ管理者装置1の構成については後記する。
【0021】
メッセージグループメンバ装置2は、メッセージグループ管理者装置1から送信されるグループ初期化情報によって、グループ共有鍵を共有するグループのメンバとなる端末装置である。このメッセージグループメンバ装置2の構成については後記する。
【0022】
鍵管理サーバ3は、公開鍵を配布するサーバである。この鍵管理サーバ3は、信頼できる第三者機関に備えられた公開鍵基盤(PKI:Public Key Infrastructure)である。
ここでは、鍵管理サーバ3は、予め端末装置(メッセージグループ管理者装置1,メッセージグループメンバ装置2)が生成した公開鍵を公開するものとする。
【0023】
ここで、鍵管理サーバ3が公開する公開鍵について説明する。
鍵管理サーバ3が公開する公開鍵は、公開鍵暗号方式により生成された鍵ペアのうちの暗号化用の公開鍵と、鍵共有方式により生成された鍵ペアのうちの鍵共有用の公開鍵である。
鍵管理サーバ3が公開する公開鍵の1つは、鍵秘匿かつロバスト性を持つ公開鍵暗号方式で生成されたものとする。鍵秘匿かつロバスト性を持つ公開鍵暗号方式は、例えば、以下の参考文献1に記載の方式を用いることができる。
(参考文献1)
Abdalla, M., Bellare, M. and Neven, G.; Robust Encryption, TCC, pp.480-497 (2010).
【0024】
鍵秘匿公開鍵暗号方式は、公開鍵暗号方式の一種で、暗号文から平文の情報が洩れないだけでなく、公開鍵の情報も洩れないことを安全性の要件とする。
ロバスト性を持つ公開鍵暗号方式(ロバスト性公開鍵暗号方式)は、公開鍵暗号方式の一種で、暗号文を復号する際に、正規の復号鍵(秘密鍵)を用いずに復号しようとした場合、なんらかの平文に復号するのではなく、エラーシンボルを返す方式である。例えば、以下の式(1),(2)により、公開鍵暗号方式の鍵生成アルゴリズムKgenpで、鍵長を決定するためのセキュリティパラメータλから、復号用の秘密鍵dkと暗号化用の公開鍵PKとの鍵ペアを2組(dk1,PK1),(dk2,PK2)生成したとする。
【0025】
【0026】
ここで、式(3)により、平文mが、公開鍵暗号方式の暗号化アルゴリズムEncpで公開鍵PK1を用いて暗号文CTに暗号化されたとする。
【0027】
【0028】
ロバスト性公開鍵暗号方式は、以下の式(4)に示すように、復号アルゴリズムDecpにより、公開鍵PK1と対にならない秘密鍵dk2を用いて暗号文CTを復号しようとした場合、エラーシンボル(⊥)を返す性質を有する。
【0029】
【0030】
なお、本発明において使用する公開鍵暗号方式は、鍵秘匿性とロバスト性を有しなければならない。
【0031】
鍵管理サーバ3が公開する他の公開鍵は、2つの公開鍵を生成する鍵共有方式で生成されたものとする。この鍵共有方式は、共有先のメンバ(端末装置)の公開鍵と自身の秘密鍵とを用いて鍵を共有する方式で、ここでは、1ラウンド鍵共有方式とする。
1ラウンド鍵共有方式とは、共有先のメンバ(端末装置)との通信を必要とせず、共有先のメンバの公開鍵から鍵共有が可能な方式である。例えば、以下の参考文献2に記載の鍵共有方式を用いることができる。
(参考文献2)
Moxie Marlinspike. The X3DH key agreement protocol. Revision 1, 2016-11-04, https://signal.org/docs/specifications/x3dh/.
1ラウンド鍵共有方式の鍵生成アルゴリズムKEKGenは、以下の式(5)に示すように、鍵長を決定するためのセキュリティパラメータλから、秘密鍵ik,ekと公開鍵IK,EKとを生成する。
【0032】
【0033】
以下の式(6)に示すように、鍵共有アルゴリズムKeyExchangeは、自身(インデックスi)の秘密鍵iki,ekiと、共有先のメンバ(インデックスj)の公開鍵IKj,EKjとから、共有鍵Kを生成する。また、以下の式(7)に示すように、鍵共有アルゴリズムKeyExchangeは、インデックスi,jを入れ替えても式(5)と同じ共有鍵Kを生成する。
【0034】
【0035】
〔メッセージグループ管理者装置の構成〕
次に、
図2を参照して、本発明の実施形態に係るメッセージグループ管理者装置1の構成について説明する。
図2に示すように、メッセージグループ管理者装置1は、記憶手段10と、グループ管理者初期化手段11と、メッセージ送信手段12と、鍵更新情報生成手段13と、メッセージ受信手段14と、鍵情報更新手段15と、を備える。
【0036】
記憶手段10は、鍵情報を記憶するものである。記憶手段10は、半導体メモリ等の一般的な記憶媒体で構成することができる。
記憶手段10には、予め鍵管理サーバ3で公開された公開鍵と、その公開鍵と対になる秘密鍵とを対応付けて記憶しておく。
【0037】
ここでは、
図3に示すように、鍵ペア情報100として、前記式(1)により生成した鍵ペア(秘密鍵dk,公開鍵PK)を、暗号鍵ペア(暗号秘密鍵dk
1,暗号公開鍵PK
1)として記憶しておく。
また、鍵ペア情報100として、前記式(5)により生成した鍵ペア(秘密鍵ik,ek,公開鍵IK,EK)を、署名鍵ペア(署名生成鍵ik
1,署名検証鍵IK
1)および鍵交換鍵ペア(鍵交換秘密鍵ek
1,鍵交換公開鍵EK
1)として記憶しておく。
鍵ペア情報100は、図示を省略した鍵生成手段によって、グループを形成する前に予め生成され、公開鍵については、鍵管理サーバ3に登録されているものとする。
なお、記憶手段10の鍵情報101は、初期化処理によって書き込まれる情報である。
【0038】
グループ管理者初期化手段11は、グループメンバを完全2分木の葉ノードに対応付けて葉ノードのノード秘密鍵を鍵共有方式により生成するとともにノード公開鍵を生成し、兄弟ノードごとに親ノードのノード秘密鍵およびノード公開鍵の生成を繰り返すことでルートノード以外のノードのノード公開鍵集合を生成し、葉ノードのインデックスを鍵秘匿かつロバスト性を持つ公開鍵暗号方式により暗号化した暗号化ノード情報とノード公開鍵集合とを含むグループ初期化情報をグループメンバに送信するものである。
グループ管理者初期化手段11は、複数のメッセージグループメンバ装置22,23,…,2nとの間でグループを形成するための初期化処理を行う。
【0039】
ここで、
図3を参照して、グループ管理者初期化手段11の構成について詳細に説明する。
図3に示すように、グループ管理者初期化手段11は、メンバ公開鍵取得手段110と、セットアップ鍵ペア生成手段111と、ノード秘密鍵生成手段112と、グループ共有鍵生成手段113と、鍵更新秘密鍵生成手段114と、メンバ公開鍵暗号化手段115と、ノード情報暗号化手段116と、署名付加手段117と、初期化情報送信手段118と、を備える。
【0040】
メンバ公開鍵取得手段110は、鍵管理サーバ3から、グループのメンバとなるメッセージグループメンバ装置22,23,…,2nの公開鍵を取得するものである。
例えば、メンバ公開鍵取得手段110は、予めグループへの参加を希望するメッセージグループメンバ装置2のアドレス、インデックス(識別子)を取得した後、インデックスに対応して公開されている公開鍵を取得する。
ここでは、グループのメンバの数をnとし、各メンバは、1からnの間の異なるインデックスiを持つものとする。また、メッセージグループ管理者装置1は、インデックスが1(i=1)のメンバとする。
メンバの数nは、2の整数乗である。ただし、メンバ(メッセージグループ管理者装置1,メッセージグループメンバ装置2)の数が、2の整数乗でない場合は、ダミーのメンバを追加して2の整数乗としておく。
メンバ公開鍵取得手段110は、i=2~nの公開鍵である署名検証鍵IKi,鍵交換公開鍵EKi,暗号公開鍵PKiを鍵管理サーバ3から取得し、記憶手段10に記憶する。
【0041】
セットアップ鍵ペア生成手段111は、初期化を行うための鍵ペア(セットアップ秘密鍵,セットアップ公開鍵)を生成するものである。ここでは、セットアップ鍵ペア生成手段111は、セキュリティパラメータで特定される大きさ(例えば、セキュリティパラメータのビット長)の素数pを選択し、Zpからセットアップ秘密鍵sukを選択(suk∈Zp)する。なお、Zpは、{0,…,p-1}の整数の集合である。
また、セットアップ鍵ペア生成手段111は、素数pを位数(素数位数p)とする群Gから生成元gを選択(g∈G)し、gsukをセットアップ公開鍵SUKとして算出(SUK=gsuk)する。
セットアップ鍵ペア生成手段111は、生成したセットアップ秘密鍵sukをノード秘密鍵生成手段112に出力し、セットアップ公開鍵SUKを署名付加手段117に出力する。
なお、ここでは図示を省略するが、セットアップ鍵ペア生成手段111は、生成元gや素数pを、記憶手段10に記憶しておく。
【0042】
ノード秘密鍵生成手段112は、グループのメンバを完全2分木の葉ノードに対応付けて、葉ノードごとの秘密鍵を生成するものである。
グループのメンバ(メッセージグループ管理者装置1、メッセージグループメンバ装置22,23,…,2n)のインデックスi(i=1,2,…,n)は、予めn個の葉ノード(N1,…,Nn)の位置を示すインデックスj(j=1,2,…,n)のいずれかにアサインされているものとする。もちろん、i=jとしてもよい。なお、ここでは、メッセージグループ管理者装置1の葉ノードのインデックスを1(j=1)として説明する。
【0043】
具体的には、ノード秘密鍵生成手段112は、n個の葉ノード(N1,…,Nn)を持つ完全2分木において、自身の葉ノードN1に対応するノード秘密鍵K1を、Zpから選択(K1∈Zp)する。
そして、ノード秘密鍵生成手段112は、葉ノードごとに、署名生成鍵ik1と、セットアップ秘密鍵sukと、グループのメンバ(インデックスi)にアサインされた葉ノードの位置(インデックスj)ごとのメンバ公開鍵(IKj,EKj)とを用いて、前記式(6),(7)で説明した鍵共有アルゴリズムKeyExchangeにより、以下の式(8)に示すようにノード秘密鍵Kj(j=2,…,n)を生成する。
【0044】
【0045】
ノード秘密鍵生成手段112は、自身の葉ノードに対応するノード秘密鍵K1と、生成した葉ノードに対応するノード秘密鍵Kj(j=2,…,n)とをグループ共有鍵生成手段113に出力する。
また、ノード秘密鍵生成手段112は、自身の葉ノードに対応するノード秘密鍵K1を記憶手段10に記憶する。
【0046】
グループ共有鍵生成手段113は、グループ共有鍵を生成するとともに、グループ共有鍵を生成するための公開鍵として、グループのメンバを葉ノードに対応付けた完全2分木のルートノードを除くノード公開鍵(ノード公開鍵集合)を生成するものである。
ここでは、グループ共有鍵生成手段113は、グループのメンバを完全2分木の葉ノードに対応付けて、葉ノードに対応付けたノード秘密鍵から親ノードのノード秘密鍵を生成する処理をルートノードまで繰り返し、ルートノードのノード秘密鍵をグループ共有鍵tkとして生成する。
また、グループ共有鍵生成手段113は、各ノードのノード秘密鍵を生成する際に、併せて、ルートノードを除く各ノードのノード公開鍵(ノード公開鍵集合T)を生成する。
【0047】
具体的に、
図4を参照して、グループ共有鍵およびノード公開鍵集合の生成手法について説明する。
グループ共有鍵生成手段113は、ノードN
1のノード秘密鍵K
1と、その兄弟ノードであるノードN
2のノード秘密鍵K
2と、生成元gとから、それぞれのノード公開鍵g
K1(gのK
1乗),g
K2(gのK
2乗)を生成する。
そして、グループ共有鍵生成手段113は、親ノードであるノードN
n+1のDH(Diffie-Hellman)鍵g
K1K2(gのK
1K
2乗)のハッシュ値により、ノードN
n+1のノード秘密鍵およびノード公開鍵を生成する。すなわち、グループ共有鍵生成手段113は、親ノードのノード秘密鍵K
n+1をK
n+1=H(g
K1K2)とし、ノード公開鍵g
Kn+1(gのK
n+1乗)を生成する。なお、Hはハッシュ関数を示す。
【0048】
グループ共有鍵生成手段113は、兄弟ノードごとに親ノードのノード秘密鍵とノード公開鍵とを生成する処理をルートノードの子ノードであるノードN2n-3,ノードN2n-2まで繰り返し、ルートノードN2n-1のノード秘密鍵(グループ共有鍵tk)を、tk=H(gK2n-3K2n-2)により生成する。
また、グループ共有鍵生成手段113は、ルートノードを除くノードにおいて生成したノード公開鍵をノード公開鍵集合Tとして生成する。
【0049】
図3に戻って、グループ管理者初期化手段11の構成について説明を続ける。
グループ共有鍵生成手段113は、生成したグループ共有鍵tkを、鍵更新秘密鍵生成手段114に出力するともに記憶手段10に記憶する。
また、グループ共有鍵生成手段113は、生成したノード公開鍵集合T={g
K1,g
K2,…,g
K2n-2}を鍵更新秘密鍵生成手段114および署名付加手段117に出力するとともに記憶手段10に記憶する。
なお、グループ共有鍵生成手段113は、漏洩防止のため、使用したノード秘密鍵{K
2,…,K
2n-2}については記憶せず、記憶媒体上から削除しておく。
【0050】
鍵更新秘密鍵生成手段114は、グループ共有鍵をグループ内で更新するための秘密鍵を生成するものである。
ここでは、鍵更新秘密鍵生成手段114は、メッセージを認証するメッセージ認証コードを生成するために用いる認証コード秘密鍵mackと、鍵更新を行う葉ノードのインデックスを暗号化するために用いる共通鍵暗号秘密鍵enckと、を生成する。
鍵更新秘密鍵生成手段114は、グループ共有鍵tkと、ノード公開鍵集合Tとから、鍵導出関数KDFを用いて、以下の式(9)により、初期値を“0”として認証コード秘密鍵mackを生成し、以下の式(10)により、初期値を“1”として共通鍵暗号秘密鍵enckを生成する。なお、ここでは、認証コード秘密鍵mackと共通鍵暗号秘密鍵enckとを異なる値とするため、式(9)と式(10)とでは、初期値“0”と初期値“1”を用いることとした。しかし、この2つの初期値は、グループメンバが知っている異なる初期値であれば、どのような値を使用してもよい。
【0051】
【0052】
鍵更新秘密鍵生成手段114は、生成した認証コード秘密鍵mackと共通鍵暗号秘密鍵enckとを、記憶手段10に記憶する。
【0053】
メンバ公開鍵暗号化手段115は、メンバ公開鍵を暗号化するものである。これは、メンバの公開鍵を暗号化して、グループに属するメンバ以外に参加者情報を秘匿することを目的とするものである。
メンバ公開鍵暗号化手段115は、乱数を共通鍵暗号方式の秘密鍵kとして選択し、以下の式(11)に示すように、一般的な共通鍵暗号方式の暗号化アルゴリズムEnccにより、メンバ公開鍵{(IK2,EK2),…(IKn,EKn)}を暗号化する。
【0054】
【0055】
メンバ公開鍵暗号化手段115は、使用した秘密鍵kをノード情報暗号化手段116に出力するとともに、暗号化したメンバ公開鍵(暗号化メンバ公開鍵)Cpkを署名付加手段117に出力する。
【0056】
ノード情報暗号化手段116は、メンバのノード情報を暗号化するものである。これは、完全2分木(
図4参照)におけるメンバの葉ノードの位置を暗号化して、グループに属するメンバ以外に参加者情報を秘匿することを目的とするものである。
なお、ノード情報暗号化手段116は、メンバのノード情報とともに、署名検証鍵IK
1と、暗号化メンバ公開鍵Cpkを生成した秘密鍵kとを連結して暗号化する。
ノード情報暗号化手段116は、以下の式(12)に示すように、前記式(3)で説明した公開鍵暗号方式の暗号化アルゴリズムEnc
pで、インデックスiのメンバに葉ノードのインデックスjが割り当てられていたとすると、メンバのインデックスiの暗号公開鍵PK
jが葉ノードのインデックスjにあたる暗号公開鍵になる。ノード情報暗号化手段116は、その暗号公開鍵PK
iを用いて、署名検証鍵IK
1と、インデックスiにアサインされたメンバの葉ノード位置(インデックスj)と、秘密鍵kとを連結したデータを暗号化する。
【0057】
【0058】
ここで、||は、データの連結を示す。また、予め定めた順番であれば、連結の順番は問わない。
ノード情報暗号化手段116は、葉ノードごとに、メンバのノード情報を暗号化したノード情報(暗号化ノード情報)CTj(j=2,…,n)を署名付加手段117に出力する。
【0059】
署名付加手段117は、電子署名(以下、署名という)を付加したグループ初期化情報を生成するものである。
署名付加手段117は、署名検証鍵IK1と、鍵交換公開鍵EK1と、暗号化メンバ公開鍵Cpkと、暗号化ノード情報CTj(j=2,…,n)と、セットアップ公開鍵SUKと、ノード公開鍵集合Tとで構成されるグループ初期化情報から、以下の式(13)に示すように、一般的な電子署名の署名アルゴリズムSIG.Signにより、署名生成鍵ik1を用いて署名σを生成する。
【0060】
【0061】
そして、署名付加手段117は、以下の式(14)に示すグループ初期化情報initに署名σを付加して初期化情報送信手段118に出力する。
【0062】
【0063】
初期化情報送信手段118は、署名σを付加したグループ初期化情報を、メッセージグループメンバ装置2に送信するものである。
この初期化情報送信手段118は、グループを構成するメッセージグループメンバ装置2に対して、同報通信により、グループ初期化情報を送信する。
これによって、グループを構成するメッセージグループメンバ装置2は、それぞれ、初期化処理を実行する。
【0064】
次に、
図5を参照して、メッセージ送信手段12および鍵更新情報生成手段13の構成について詳細に説明する。なお、記憶手段10に記憶されている情報については、適宜
図3を参照することとする。
【0065】
メッセージ送信手段12は、メッセージを更新後のグループ共有鍵で暗号化し、鍵更新情報を付加して、自身以外のグループメンバに送信するものである。
図5に示すように、メッセージ送信手段12は、メッセージ暗号化手段120と、鍵更新情報入力手段121と、暗号化メッセージ送信手段122と、を備える。
【0066】
メッセージ暗号化手段120は、平文であるメッセージを暗号化するものである。なお、メッセージ暗号化手段120は、暗号化を行う前に、鍵更新情報生成手段13を動作させ、鍵更新情報生成手段13の鍵情報更新処理が完了した後に、メッセージの暗号化を行う。
メッセージ暗号化手段120は、共通鍵暗号方式の秘密鍵として、記憶手段10に記憶されているグループ共有鍵tk′(更新後のグループ共有鍵tk)を用い、以下の式(15)に示すように、一般的な共通鍵暗号方式の暗号化アルゴリズムEnccにより、メッセージMを暗号化し、暗号化メッセージCMを生成する。
【0067】
【0068】
メッセージ暗号化手段120は、生成した暗号化メッセージCMを暗号化メッセージ送信手段122に出力する。
【0069】
鍵更新情報入力手段121は、鍵更新情報生成手段13が生成する鍵更新情報を入力するものである。
ここでは、鍵更新情報入力手段121は、鍵更新情報として、後記する鍵更新情報生成手段13で更新されたノード公開鍵部分集合T′と、鍵情報を更新する主体であるメンバの葉ノードのインデックスを暗号化した暗号化インデックスCと、暗号化インデックスCに対して生成されたメッセージ認証コードMACとを、鍵更新情報生成手段13から入力する。
鍵更新情報入力手段121は、鍵更新情報生成手段13から入力した鍵更新情報(T′,C,MAC)を暗号化メッセージ送信手段122に出力する。
【0070】
暗号化メッセージ送信手段122は、メッセージ暗号化手段120で生成された暗号化メッセージCMに鍵更新情報入力手段121で入力した鍵更新情報(T′,C,MAC)を付加し、1つのメッセージとしてメッセージグループメンバ装置2に送信するものである。
この暗号化メッセージ送信手段122は、グループを構成するメッセージグループメンバ装置2に対して、同報通信によりメッセージを送信する。
これによって、グループを構成するメッセージグループメンバ装置2には、暗号化メッセージCMとともに、鍵更新情報(T′,C,MAC)が配信されるため、鍵更新の同期を行う必要がなく、非同期で暗号化メッセージを送信することができる。
【0071】
次に、鍵更新情報生成手段13の構成について説明する。
鍵更新情報生成手段13は、自身の葉ノードのノード秘密鍵により、自身の葉ノードからルートノードまでのパス上のノード公開鍵を更新するとともに、ルートノードのノード秘密鍵をグループ共有鍵として更新し、更新されたパス上のノード公開鍵部分集合と、自身の葉ノードのインデックスを暗号化した暗号化ノードインデックスとを含む鍵更新情報を生成するものである。
【0072】
図5に示すように、鍵更新情報生成手段13は、ノード秘密鍵選択手段130と、グループ共有鍵更新手段131と、鍵更新秘密鍵更新手段132と、ノードインデックス暗号化手段133と、認証コード生成手段134と、鍵更新情報出力手段135と、を備える。
【0073】
ノード秘密鍵選択手段130は、グループのメンバを完全2分木の葉ノードに対応付けた自身の葉ノードに対応する秘密鍵(ノード秘密鍵)を選択するものである。
具体的には、ノード秘密鍵選択手段130は、自身の葉ノードに割り当てられたインデックスjに対応する新たなノード秘密鍵Kjを、Zpから選択(Kj∈Zp)する。
ノード秘密鍵選択手段130は、選択した新たなノード秘密鍵Kjを、グループ共有鍵更新手段131に出力する。
【0074】
グループ共有鍵更新手段131は、ノード秘密鍵選択手段130で新たに選択されたノード秘密鍵で、グループ共有鍵を更新するものである。
グループ共有鍵更新手段131は、自身の葉ノードのノード秘密鍵から、兄弟ノードのノード公開鍵により、親ノードのノード秘密鍵を生成する処理をルートノードまで繰り返し、ルートノードのノード秘密鍵を、更新後のグループ共有鍵として生成する。
また、グループ共有鍵更新手段131は、自身の葉ノードからルートノードまでのパス上において、ノード秘密鍵を生成する際に、併せて、ルートノードを除く各ノードのノード公開鍵を生成する。
【0075】
具体的に、
図4を参照して、グループ共有鍵およびノード公開鍵の更新について説明する。ここでは、葉ノードのインデックスが1(j=1)のノードN
1のノード秘密鍵K
1が更新されるものとする。
グループ共有鍵更新手段131は、ノードN
1のノード秘密鍵K
1と、その兄弟ノードであるノードN
2のノード公開鍵g
K2とからg
K1K2を計算し、親ノードであるノードN
n+1のノード秘密鍵K
n+1をK
n+1=H(g
K1K2)とし、ノード公開鍵g
Kn+1を生成する。
そして、グループ共有鍵更新手段131は、親ノードのノード秘密鍵とその兄弟ノードのノード公開鍵とから、さらに親ノードのノード秘密鍵を生成する処理をルートノードまで繰り返し、ルートノードN
2n-1のノード秘密鍵(グループ共有鍵tk)を、tk=H(g
K2n-3K2n-2)により生成する。
この場合、グループ共有鍵更新手段131は、自身の葉ノードからルートノードまでのパス上において、ルートノードを除くノードN
1,N
n+1,…,N
2n-3に対応するノード公開鍵(g
K1,g
Kn+1,…,g
K2n-3K2n-6)を更新することになる。
【0076】
図5に戻って、鍵更新情報生成手段13の構成について説明を続ける。
グループ共有鍵更新手段131は、更新したグループ共有鍵tk(tk′)を鍵更新秘密鍵更新手段132に出力するともに記憶手段10に記憶する。
また、グループ共有鍵更新手段131は、自身の葉ノードからルートノードまでのパス上で更新されたノード公開鍵の集合(ノード公開鍵部分集合T′)で、記憶手段10に記憶されているノード公開鍵集合Tを更新し、ノード公開鍵部分集合T′を、鍵更新秘密鍵更新手段132、認証コード生成手段134および鍵更新情報出力手段135に出力する。
【0077】
鍵更新秘密鍵更新手段132は、グループ共有鍵をグループ内で更新するための秘密鍵(認証コード秘密鍵mack,共通鍵暗号秘密鍵enck)を更新するものである。
なお、鍵更新秘密鍵更新手段132における秘密鍵の生成手法は、鍵更新秘密鍵生成手段114(
図3)において、グループ共有鍵tkおよびノード公開鍵集合Tが、更新後のグループ共有鍵tk(tk′)およびノード公開鍵部分集合T′に代わるだけであるため、ここでは説明を省略する。
鍵更新秘密鍵更新手段132は、新たに生成した認証コード秘密鍵mack′および共通鍵暗号秘密鍵enck′を、新たな認証コード秘密鍵mackおよび共通鍵暗号秘密鍵enckとして記憶手段10に記憶する。
【0078】
ノードインデックス暗号化手段133は、自身が割り当てられている葉ノードの位置であるインデックスjを暗号化するものである。
ノードインデックス暗号化手段133は、共通鍵暗号方式の秘密鍵として、記憶手段10に記憶されている共通鍵暗号秘密鍵enckを用い、以下の式(16)に示すように、一般的な共通鍵暗号方式の暗号化アルゴリズムEnccにより、インデックスjを暗号化し、暗号化インデックスCを生成する。
【0079】
【0080】
ノードインデックス暗号化手段133は、生成した暗号化インデックスCを、認証コード生成手段134および鍵更新情報出力手段135に出力する。
【0081】
認証コード生成手段134は、メッセージを認証するメッセージ認証コード方式におけるメッセージ認証コードを生成するものである。
認証コード生成手段134は、グループ共有鍵更新手段131で更新されたノード公開鍵部分集合T′と、ノードインデックス暗号化手段133で生成された暗号化インデックスCとから、以下の式(17)に示すように、一般的なメッセージ認証コード方式のMAC(Message Authentication Code)生成アルゴリズムMAC.Signにより、認証コード秘密鍵mackを用いてメッセージ認証コードMACを生成する。
【0082】
【0083】
ここで、||は、データの連結を示す。また、予め定めた順番であれば、連結の順番は問わない。
認証コード生成手段134は、生成したメッセージ認証コードMACを鍵更新情報出力手段135に出力する。
【0084】
鍵更新情報出力手段135は、グループ共有鍵更新手段131で更新されたノード公開鍵部分集合T′と、ノードインデックス暗号化手段133で生成された暗号化インデックスCと、認証コード生成手段134で生成されたメッセージ認証コードMACとを、鍵更新情報として、メッセージ送信手段12(鍵更新情報入力手段121)に出力するものである。
なお、鍵更新情報生成手段13は、鍵更新情報を生成した旨を、メッセージ送信手段12に通知する。
これによって、鍵更新情報生成手段13は、メッセージ送信手段12でメッセージを送信する前に鍵情報を更新することができる。
【0085】
次に、
図6を参照して、メッセージ受信手段14および鍵情報更新手段15の構成について詳細に説明する。なお、記憶手段10に記憶されている情報については、適宜
図3を参照することとする。
【0086】
メッセージ受信手段14は、自身以外のグループメンバから受信した暗号化メッセージに付加されている鍵更新情報により、鍵情報更新手段15で更新されたグループ共有鍵で暗号化メッセージを復号するものである。
図6に示すように、メッセージ受信手段14は、暗号化メッセージ受信手段140と、鍵更新情報出力手段141と、メッセージ復号手段142と、を備える。
【0087】
暗号化メッセージ受信手段140は、メッセージグループメンバ装置2から、暗号化メッセージCMに鍵更新情報(T′,C,MAC)が付加されたメッセージを受信するものである。
暗号化メッセージ受信手段140は、受信した暗号化メッセージCMをメッセージ復号手段142に出力し、鍵更新情報(T′,C,MAC)を鍵更新情報出力手段141に出力する。
【0088】
鍵更新情報出力手段141は、暗号化メッセージ受信手段140で受信した鍵更新情報(T′,C,MAC)を鍵情報更新手段15に出力するものである。
メッセージ復号手段142は、暗号化メッセージ受信手段140で受信した暗号化メッセージCMを復号するものである。なお、メッセージ復号手段142は、鍵情報更新手段15の鍵情報更新処理が完了した後に、暗号化メッセージCMの復号を行う。
メッセージ復号手段142は、共通鍵暗号方式の秘密鍵として、記憶手段10に記憶されているグループ共有鍵tk′(更新後のグループ共有鍵tk)を用い、以下の式(18)に示すように、復号アルゴリズムDeccにより、暗号化メッセージCMを復号し、メッセージMを生成する。なお、復号アルゴリズムDeccは、前記式(15)の暗号化アルゴリズムEnccに対応するものである。
【0089】
【0090】
メッセージ復号手段142は、生成したメッセージMを、表示装置(不図示)等、アプリケーションに応じた出力先に出力する。
【0091】
次に、鍵情報更新手段15の構成について説明する。
鍵情報更新手段15は、自身以外のグループメンバから受信した鍵更新情報に含まれるノード公開鍵部分集合でノード公開鍵集合を更新し、鍵更新情報に含まれる暗号化ノードインデックスを復号したインデックスの葉ノードからルートノードまでのノード秘密鍵およびノード公開鍵を自身の葉ノードのノード秘密鍵を用いて更新し、ルートノードのノード秘密鍵をグループ共有鍵として更新するものである。
【0092】
図6に示すように、鍵情報更新手段15は、鍵更新情報入力手段150と、認証コード検証手段151と、ノードインデックス復号手段152と、ノード公開鍵集合更新手段153と、グループ共有鍵更新手段154と、鍵更新秘密鍵更新手段155と、を備える。
【0093】
鍵更新情報入力手段150は、メッセージ受信手段14(鍵更新情報出力手段141)から、鍵更新情報を入力するものである。鍵更新情報は、ノード公開鍵部分集合T′と、暗号化インデックスCと、メッセージ認証コードMACとで構成される。
鍵更新情報入力手段150は、入力した鍵更新情報を認証コード検証手段151に出力する。
【0094】
認証コード検証手段151は、鍵更新情報入力手段150から入力されたメッセージ認証コードMACを検証するものである。
認証コード検証手段151は、記憶手段10に記憶されている認証コード秘密鍵mackを用い、以下の式(19)に示すように、検証アルゴリズムMAC.Vrfyにより、メッセージ認証コードMACが、暗号化インデックスCおよびノード公開鍵部分集合T′に対して正しく生成されたものであるか否かを検証する。なお、検証アルゴリズムMAC.Vrfyは、前記式(17)のMAC生成アルゴリズムMAC.Signに対応するものであり、MACが正しければ“1”、正しくなければ“0”を検証結果として返す。
【0095】
【0096】
ここで、||は、データの連結を示す。
認証コード検証手段151は、MACが正しいという検証結果“1”を得た場合のみ、暗号化インデックスCをノードインデックス復号手段152に出力し、ノード公開鍵部分集合T′をノード公開鍵集合更新手段153に出力する。
【0097】
ノードインデックス復号手段152は、暗号化インデックスCを復号するものである。
ノードインデックス復号手段152は、記憶手段10に記憶されている共通鍵暗号秘密鍵enckを用い、以下の式(20)に示すように、復号アルゴリズムDeccにより、暗号化インデックスCを復号する。なお、復号アルゴリズムDeccは、前記式(16)の暗号化アルゴリズムEnccに対応するものである。
【0098】
【0099】
この式(20)の復号結果であるjは、鍵更新情報を送信したメンバの完全2分木の葉ノードのノード位置を示すインデックスである。
ノードインデックス復号手段152は、復号したインデックスjをノード公開鍵集合更新手段153に出力する。
【0100】
ノード公開鍵集合更新手段153は、記憶手段10に記憶されているノード公開鍵集合Tを更新するものである。
ノード公開鍵集合更新手段153は、ノードインデックス復号手段152で復号されたインデックスjに対応する葉ノードからルートノードまでのパス上におけるノード公開鍵集合Tのノード公開鍵を、ノード公開鍵部分集合T′のノード公開鍵で更新する。
ノード公開鍵集合更新手段153は、更新後のノード公開鍵集合T(T″)をグループ共有鍵更新手段154に出力する。
【0101】
グループ共有鍵更新手段154は、ノード公開鍵集合更新手段153で更新されたノード公開鍵集合T(T″)と、自身の葉ノードのノード秘密鍵とに基づいて、グループ共有鍵を更新するものである。
グループ共有鍵更新手段154は、ノード秘密鍵から、兄弟ノードのノード公開鍵により、親ノードのノード秘密鍵を生成する処理をルートノードまで繰り返し、ルートノードのノード秘密鍵を、更新後のグループ共有鍵として生成する。
なお、ノード公開鍵集合Tと1つの葉ノードのノード秘密鍵とからグループ共有鍵を更新する手法は、グループ共有鍵更新手段131(
図5)と同じであるため、ここでは、説明を省略する。
【0102】
鍵更新秘密鍵更新手段155は、グループ共有鍵をグループ内で更新するための秘密鍵(認証コード秘密鍵mack,共通鍵暗号秘密鍵enck)を更新するものである。
なお、鍵更新秘密鍵更新手段155における秘密鍵の生成手法は、鍵更新秘密鍵生成手段114(
図3)において、グループ共有鍵tkおよびノード公開鍵集合Tが、更新後のグループ共有鍵tk(tk′)およびノード公開鍵集合T″に代わるだけであるため、ここでは説明を省略する。
鍵更新秘密鍵更新手段155は、新たに生成した認証コード秘密鍵mack′および共通鍵暗号秘密鍵enck′を、新たな認証コード秘密鍵mackおよび共通鍵暗号秘密鍵enckとして記憶手段10に記憶する。
【0103】
鍵情報更新手段15は、鍵情報を更新した旨を、メッセージ受信手段14に通知する。 これによって、鍵情報更新手段15は、メッセージ受信手段14で暗号化メッセージを復号する前に、グループ共有鍵を更新することができる。
なお、メッセージグループ管理者装置1は、コンピュータを前記した各手段として機能させるためのプログラムで動作させることができる。
【0104】
〔メッセージグループメンバ装置の構成〕
次に、
図2を参照して、本発明の実施形態に係るメッセージグループメンバ装置2の構成について説明する。
図2に示すように、メッセージグループメンバ装置2は、記憶手段10(10B)と、グループメンバ初期化手段21と、メッセージ送信手段12と、鍵更新情報生成手段13と、メッセージ受信手段14と、鍵情報更新手段15と、を備える。なお、メッセージグループメンバ装置2のメッセージ送信手段12、鍵更新情報生成手段13、メッセージ受信手段14および鍵情報更新手段15は、メッセージグループ管理者装置1と同じ構成であるため、説明を省略する。
【0105】
記憶手段10Bは、鍵情報を記憶するものである。記憶手段10Bは、半導体メモリ等の一般的な記憶媒体で構成することができる。
記憶手段10Bには、予め鍵管理サーバ3で公開された公開鍵と、その公開鍵と対になる秘密鍵とを対応付けて記憶しておく。
【0106】
なお、鍵ペア情報100として、グループを形成する前に予め生成して記憶しておく暗号鍵ペア(暗号秘密鍵dk
i,暗号公開鍵PK
i)、署名鍵ペア(署名生成鍵ik
i,署名検証鍵IK
i)、鍵交換鍵ペア(鍵交換秘密鍵ek
i,鍵交換公開鍵EK
i)は、メッセージグループメンバ装置2のインデックスiに対応して生成されたもので、記憶手段10(
図3)に記憶されている鍵情報と同様のものである。
鍵ペア情報100は、図示を省略した鍵生成手段によって、グループを形成する前に予め生成され、公開鍵については、鍵管理サーバ3に登録されているものとする。
なお、記憶手段10Bの鍵情報101は、初期化処理によって書き込まれる情報である。
【0107】
グループメンバ初期化手段21は、メッセージグループ管理者装置1から、グループメンバを完全2分木の葉ノードに対応付けて生成されたルートノード以外のノードのノード公開鍵集合と、葉ノードのインデックスを暗号化した暗号化ノード情報とを含むグループ初期化情報を受信し、暗号化ノード情報を鍵秘匿かつロバスト性を持つ公開鍵暗号方式により復号することで葉ノードのインデックスを取得し、鍵共有方式によりメッセージグループ管理者装置1が生成した自身の葉ノードのノード秘密鍵を生成し、自身のインデックスの葉ノードからルートノードまでのノード秘密鍵およびノード公開鍵を自身の葉ノードのノード秘密鍵を用いて更新し、ルートノードのノード秘密鍵をグループ共有鍵として更新するものである。
グループメンバ初期化手段21は、メッセージグループ管理者装置1からグループ初期化情報を受信することで、グループを形成するための初期化処理を行う。
【0108】
ここで、
図7を参照して、グループメンバ初期化手段21の構成について詳細に説明する。
図7に示すように、グループメンバ初期化手段21は、初期化情報受信手段210と、署名検証手段211と、ノード情報復号手段212と、メンバ公開鍵復号手段213と、ノード秘密鍵生成手段214と、グループ共有鍵生成手段215と、鍵更新秘密鍵生成手段216と、を備える。
【0109】
初期化情報受信手段210は、メッセージグループ管理者装置1から送信されたグループ初期化情報を受信するものである。
初期化情報受信手段210は、受信したグループ初期化情報を署名検証手段211に出力する。
【0110】
署名検証手段211は、初期化情報受信手段210で受信したグループ初期化情報に付加されている署名を検証するものである。
署名検証手段211は、電子署名の検証アルゴリズムSIG.Vrfyにより、グループ初期化情報initに含まれる署名検証鍵IK1を用いて、署名σがグループ初期化情報initに対して正しく生成されたものであるか否かを検証する。なお、検証アルゴリズムSIG.Vrfyは、前記式(13)の署名アルゴリズムSIG.Signに対応するものであり、署名σが正しければ“1”、正しくなければ“0”を検証結果として返す。
【0111】
【0112】
署名検証手段211は、署名σが正しいという検証結果“1”を得た場合のみ、グループ初期化情報initに含まれる署名検証鍵IK1と、鍵交換公開鍵EK1と、暗号化メンバ公開鍵Cpkとをメンバ公開鍵復号手段213に出力し、署名検証鍵IK1と、暗号化ノード情報CTj(j=2,…,n)とをノード情報復号手段212に出力し、セットアップ公開鍵SUKをノード秘密鍵生成手段214に出力する。
また、署名検証手段211は、グループ初期化情報initに含まれるノード公開鍵集合Tを鍵更新秘密鍵生成手段216に出力するとともに、記憶手段10Bに記憶する。
【0113】
ノード情報復号手段212は、グループ初期化情報に含まれるメンバのノード情報が暗号化された暗号化ノード情報を復号するものである。
ノード情報復号手段212は、以下の式(22)に示すように、暗号化ノード情報Cpj(j=2,…,n)を、記憶手段10Bに記憶されている暗号秘密鍵dkiを用いて、前記式(4)で説明した公開鍵暗号方式の復号アルゴリズムDecpにより順次復号する。
【0114】
【0115】
そして、ノード情報復号手段212は、復号結果がエラーシンボル(⊥)とならない暗号化ノード情報CTjの復号結果(IK||j||k)から、署名検証鍵IKと葉ノードの位置(インデックスj)と共通鍵暗号方式の秘密鍵kとを取得する。
ノード情報復号手段212は、復号した署名検証鍵IKと、署名検証手段211から取得した署名検証鍵IK1とが等しいことを確認する。
ノード情報復号手段212は、取得した署名検証鍵IK1をノード秘密鍵生成手段214に出力し、葉ノードのインデックスjをグループ共有鍵生成手段215に出力し、秘密鍵kをメンバ公開鍵復号手段213に出力する。
【0116】
メンバ公開鍵復号手段213は、グループ初期化情報に含まれる暗号化メンバ公開鍵Cpkを復号するものである。
メンバ公開鍵復号手段213は、以下の式(23)に示すように、暗号化メンバ公開鍵Cpkを、ノード情報復号手段212で復号された秘密鍵kを用いて、共通鍵暗号方式の復号アルゴリズムDeccにより、メンバ公開鍵{(IK2,EK2),…(IKn,EKn)}を復号する。なお、復号アルゴリズムDeccは、前記式(11)の暗号化アルゴリズムEnccに対応するものである。
【0117】
【0118】
メンバ公開鍵復号手段213は、復号したメンバ公開鍵{(IK2,EK2),…(IKn,EKn)}と、グループ初期化情報に含まれるメンバ公開鍵(IK1,EK1)とを記憶手段10Bに記憶する。なお、本実施形態では、直接、復号したメンバ公開鍵{(IK1,EK1),(IK2,EK2),…(IKn,EKn)}を使用しないが、メンバ公開鍵は、グループに属するメンバ以外に秘匿したままで、グループにどのメンバが属しているかを確認することが可能になる。
【0119】
ノード秘密鍵生成手段214は、自身の葉ノードに対応するノード秘密鍵を生成するものである。
ノード秘密鍵生成手段214は、グループ初期化情報に含まれるセットアップ公開鍵SUKと、ノード情報復号手段212で復号された署名検証鍵IK1と、記憶手段10Bに記憶されている署名生成鍵ikiおよび鍵交換秘密鍵ekiとを用いて、前記式(6),(7)で説明した鍵共有アルゴリズムKeyExchangeにより、以下の式(24)に示すように、自身のインデックスiにアサインされた葉ノードのインデックスjのノード秘密鍵Kjを生成する。
【0120】
【0121】
これによって、ノード秘密鍵生成手段214は、グループ管理者初期化手段11のノード秘密鍵生成手段112(
図3)で生成された自身の葉ノードに対応するノード秘密鍵と同じノード秘密鍵を生成することができる。
ノード秘密鍵生成手段214は、生成したノード秘密鍵K
jをグループ共有鍵生成手段215に出力する。
また、ノード秘密鍵生成手段214は、生成したノード秘密鍵K
jを記憶手段10Bに記憶する。
【0122】
グループ共有鍵生成手段215は、グループ共有鍵を生成するものである。
グループ共有鍵生成手段215は、ノード情報復号手段212で復号された葉ノードのインデックスjと、ノード秘密鍵生成手段214で生成された葉ノードのインデックスjに対応するノード秘密鍵K
jと、グループ初期化情報に含まれるノード公開鍵集合Tとに基づいて、グループ共有鍵を生成する。
なお、ノード公開鍵集合Tと1つの葉ノードのノード秘密鍵とからグループ共有鍵を生成する手法は、グループ共有鍵更新手段131(
図5)と同じであるため、ここでは、説明を省略する。
グループ共有鍵生成手段215は、生成したグループ共有鍵tkを鍵更新秘密鍵生成手段216に出力するとともに、記憶手段10Bに記憶する。
【0123】
鍵更新秘密鍵生成手段216は、グループ共有鍵をグループ内で更新するための秘密鍵(認証コード秘密鍵mack,共通鍵暗号秘密鍵enck)を生成するものである。
なお、鍵更新秘密鍵生成手段216における秘密鍵の生成手法は、鍵更新秘密鍵生成手段114(
図3)と同じであるため、ここでは説明を省略する。
鍵更新秘密鍵生成手段216は、生成した認証コード秘密鍵mackおよび共通鍵暗号秘密鍵enckを記憶手段10に記憶する。
これによって、グループを構成するメッセージグループメンバ装置2は、初期化処理を完了する。
なお、メッセージグループメンバ装置2は、コンピュータを前記した各手段として機能させるためのプログラムで動作させることができる。
【0124】
〔グループメッセージ送受信システムの動作〕
次に、
図8~
図11を参照して、グループメッセージ送受信システムSの動作について説明する。
【0125】
(初期化処理)
最初に、
図8,
図9を参照(構成については、適宜
図2,
図3,
図7参照)して、グループメッセージ送受信システムSの初期化処理の動作について説明する。なお、メッセージグループ管理者装置1およびメッセージグループメンバ装置2の記憶手段10には、予め、署名鍵ペア、鍵交換鍵ペアおよび暗号鍵ペアが記憶され、公開鍵が鍵管理サーバ3に登録されているものとする。
【0126】
まず、
図8に示すように、メッセージグループ管理者装置1のグループ管理者初期化手段11が以下の動作を行う。
ステップS1において、メンバ公開鍵取得手段110は、鍵管理サーバ3から、グループのメンバとなるメッセージグループメンバ装置2の公開鍵を取得する。
ここでは、メンバ公開鍵取得手段110は、メッセージグループメンバ装置2のインデックスi(i=2~n)に対応する署名検証鍵IK
i,鍵交換公開鍵EK
i,暗号公開鍵PK
iを鍵管理サーバ3から取得し、記憶手段10に記憶する。
【0127】
ステップS2において、セットアップ鍵ペア生成手段111は、初期化を行うための鍵ペア(セットアップ秘密鍵suk,セットアップ公開鍵SUK)を生成する。
ステップS3において、ノード秘密鍵生成手段112は、グループのメンバを完全2分木の葉ノードに対応付けて、葉ノードごとのノード秘密鍵を生成する。ここでは、ノード秘密鍵生成手段112は、自身の葉ノードN1に対応するノード秘密鍵K1を、Zpから選択(K1∈Zp)するとともに、署名生成鍵ik1と、セットアップ秘密鍵sukと、グループのメンバ(インデックスi)にアサインされた葉ノードの位置(インデックスj)ごとのメンバ公開鍵(IKj,EKj)とを用いて、前記式(8)により、ノード秘密鍵Kj(j=2,…,n)を生成する。
【0128】
ステップS4において、グループ共有鍵生成手段113は、グループ共有鍵tkおよび完全2分木のルートノードを除くノード公開鍵(ノード公開鍵集合T)を生成する。
ステップS5において、鍵更新秘密鍵生成手段114は、グループ共有鍵およびノード公開鍵集合により、ループ共有鍵をグループ内で更新するための秘密鍵を生成する。ここでは、鍵更新秘密鍵生成手段114は、ステップS4で生成されたグループ共有鍵tkとノード公開鍵集合Tとから、前記式(9),式(10)により、認証コード秘密鍵mackと共通鍵暗号秘密鍵enckを生成し、記憶手段10に記憶する。
【0129】
ステップS6において、メンバ公開鍵暗号化手段115は、メンバ公開鍵{(IK2,EK2),…(IKn,EKn)}を暗号化する。ここでは、メンバ公開鍵暗号化手段115は、秘密鍵kを選択し、前記式(11)により、メンバ公開鍵{(IK2,EK2),…(IKn,EKn)}を暗号化し、暗号化メンバ公開鍵Cpkを生成する。
ステップS7において、ノード情報暗号化手段116は、ノード情報を暗号化する。ここで、インデックスiのメンバに葉ノードのインデックスjが割り当てられていたとすると、メンバのインデックスiの暗号公開鍵PKjが葉ノードのインデックスjにあたる暗号公開鍵になる。そこで、ノード情報暗号化手段116は、その暗号公開鍵PKiを用いて、前記式(12)により、署名検証鍵IK1と、葉ノードのインデックスjと、ステップS6で生成された秘密鍵kとを連結したデータを暗号化し、暗号化ノード情報CTj(j=2,…,n)を生成する。
【0130】
ステップS8において、署名付加手段117は、署名を生成し、グループ初期化情報に付加する。ここでは、署名付加手段117は、署名検証鍵IK1と、鍵交換公開鍵EK1と、暗号化メンバ公開鍵Cpkと、暗号化ノード情報CTj(j=2,…,n)と、セットアップ公開鍵SUKと、ノード公開鍵集合Tとで構成されるグループ初期化情報から、前記式(13)により、署名σを生成し、グループ初期化情報に付加する。
ステップS9において、初期化情報送信手段118は、署名σが付加されたグループ初期化情報を、メッセージグループメンバ装置22,23,…,2nに送信する。
【0131】
その後、
図9に示すように、メッセージグループメンバ装置2のグループメンバ初期化手段21が以下の動作を行う。
ステップS10において、初期化情報受信手段210は、メッセージグループ管理者装置1から送信された署名σが付加されたグループ初期化情報を受信する。
ステップS11において、署名検証手段211は、初期化情報受信手段210で受信したグループ初期化情報に付加されている署名を検証する。ここでは、署名検証手段211は、グループ初期化情報に含まれる署名検証鍵IK
1を用いて、前記式(21)により、署名σが正しいか否かを検証する。なお、ここで、署名が正しい署名でなければ、グループ初期化情報を破棄する(不図示)。
【0132】
ステップS12において、ノード情報復号手段212は、グループ初期化情報に含まれる暗号化ノード情報を復号することで、葉ノードのインデックスjとメンバ公開鍵を暗号化を暗号化した秘密鍵kを取得する。ここでは、ノード情報復号手段212は、暗号秘密鍵dkiを用いて、前記式(4)により、暗号化ノード情報Cpj(j=2,…,n)を順次復号し、復号結果がエラーシンボル(⊥)とならない暗号化ノード情報CTjの復号結果(IK1||j||k)を取得する。
【0133】
ステップS13において、メンバ公開鍵復号手段213は、グループ初期化情報に含まれる暗号化メンバ公開鍵Cpkを復号する。ここでは、メンバ公開鍵復号手段213は、ステップS12で復号された秘密鍵kを用い、前記式(23)により、暗号化メンバ公開鍵Cpkをメンバ公開鍵{(IK2,EK2),…(IKn,EKn)}に復号する。そして、メンバ公開鍵復号手段213は、メンバ公開鍵を、グループ初期化情報に含まれる署名検証鍵IK1および鍵交換公開鍵EK1とともに、記憶手段10に記憶する(不図示)。
【0134】
ステップS14において、ノード秘密鍵生成手段214は、自身の葉ノードに対応するノード秘密鍵を生成する。ここでは、ノード秘密鍵生成手段214は、グループ初期化情報に含まれるセットアップ公開鍵SUKと、署名検証鍵IK1と、署名生成鍵ikiおよび鍵交換秘密鍵ekiとを用いて、前記式(24)により、自身のインデックスiにアサインされた葉ノードのインデックスjのノード秘密鍵Kjを生成し、記憶手段10に記憶する。
【0135】
ステップS15において、グループ共有鍵生成手段215は、グループ共有鍵tkを生成する。ここでは、グループ共有鍵生成手段215は、ステップS12で復号された葉ノードのインデックスjと、ステップS14で生成されたインデックスjに対応するノード秘密鍵Kjと、ノード公開鍵集合Tとに基づいて、グループ共有鍵を生成し、記憶手段10に記憶する。
【0136】
ステップS16において、鍵更新秘密鍵生成手段216は、グループ共有鍵をグループ内で更新するための秘密鍵(認証コード秘密鍵mack,共通鍵暗号秘密鍵enck)を生成する。ここでは、鍵更新秘密鍵生成手段216は、ステップS15で生成されたグループ共有鍵tkと記憶手段10に記憶されているノード公開鍵集合Tとから、前記式(9),式(10)により、認証コード秘密鍵mackと共通鍵暗号秘密鍵enckを生成し、記憶手段10に記憶する。
以上の初期化処理の動作によって、メッセージグループ管理者装置1およびメッセージグループメンバ装置2は、グループのメンバの公開鍵をグループ以外には秘匿して、グループ共有鍵を共有することができる。
【0137】
(メッセージ送受信処理)
次に、
図10,
図11を参照(構成については、適宜
図2,
図5,
図6参照)して、グループメッセージ送受信システムSのメッセージ送受信処理の動作について説明する。なお、
図10で説明するメッセージの送信者は、メッセージグループ管理者装置1およびメッセージグループメンバ装置2の何れであっても構わない。メッセージの送信者がメッセージグループ管理者装置1であれば、
図11で説明するメッセージの受信者は、グループのメンバであるメッセージグループメンバ装置2である。また、メッセージの送信者がメッセージグループメンバ装置2であれば、
図11で説明するメッセージの受信者は、メッセージグループ管理者装置1およびグループのメンバである他のメッセージグループメンバ装置2である。
【0138】
まず、
図10に示すように、送信者のメッセージ送信手段12および鍵更新情報生成手段13が以下の動作を行う。
ステップS20において、メッセージ送信手段12は、送信するメッセージMを入力する。ここで、メッセージ送信手段12は、鍵更新情報生成手段13を動作させる。
【0139】
ステップS21において、ノード秘密鍵選択手段130は、グループのメンバを完全2分木の葉ノードに対応付けた自身の葉ノードに対応するノード秘密鍵を選択する。ここでは、ノード秘密鍵選択手段130は、自身の葉ノードに割り当てられたインデックスjに対応する新たなノード秘密鍵Kjを、Zpから選択(Kj∈Zp)する。
【0140】
ステップS22において、グループ共有鍵更新手段131は、ステップS21で選択されたノード秘密鍵Kjで、グループ共有鍵を更新するとともに、インデックスjの葉ノードからルートノードまでのパス上のノード公開鍵を更新する。グループ共有鍵更新手段131は、インデックスjの葉ノードからルートノードまでのパス上の更新されたノード公開鍵をノード公開鍵部分集合T′とする。
【0141】
ステップS23において、鍵更新秘密鍵更新手段132は、グループ共有鍵をグループ内で生成するための秘密鍵(認証コード秘密鍵mack,共通鍵暗号秘密鍵enck)を更新する。ここでは、鍵更新秘密鍵更新手段132は、ステップS22で更新されたグループ共有鍵tk′とノード公開鍵部分集合T′とから、前記式(9),式(10)により、認証コード秘密鍵mack′および共通鍵暗号秘密鍵enck′を生成し、記憶手段10に記憶する。
【0142】
ステップS24において、ノードインデックス暗号化手段133は、ステップS23で更新された共通鍵暗号秘密鍵enck(enck′)を用いて、前記式(16)により、自身が割り当てられている葉ノードの位置であるインデックスjを暗号化し、暗号化インデックスCを生成する。
ステップS25において、認証コード生成手段134は、更新された認証コード秘密鍵mack(mack′)を用いて、ステップS22で生成されたノード公開鍵部分集合T′と、ステップS24で生成された暗号化インデックスCとから、前記式(17)により、メッセージ認証コードMACを生成する。
【0143】
以上の動作で、鍵更新情報生成手段13は、ノード公開鍵部分集合T′と、暗号化インデックスCと、メッセージ認証コードMACとを、鍵更新情報として生成する。この鍵更新情報は、鍵更新情報出力手段135および鍵更新情報入力手段121を介して、メッセージ送信手段12に通知される。
【0144】
ステップS26において、メッセージ暗号化手段120は、更新されたグループ共有鍵tk(tk′)を用いて、前記式(15)により、メッセージMを暗号化し、暗号化メッセージCMを生成する。
ステップS27において、暗号化メッセージ送信手段122は、ステップS26で生成された暗号化メッセージCMに、ステップS25までの動作で生成された鍵更新情報(T′,C,MAC)を付加し、1つのメッセージとして受信者に送信する。
【0145】
次に、
図11に示すように、受信者のメッセージ受信手段14および鍵情報更新手段15が以下の動作を行う。
ステップS30において、暗号化メッセージ受信手段140は、ステップS27(
図10)で送信された鍵更新情報(T′,C,MAC)が付加された暗号化メッセージC
Mを1つのメッセージとして受信する。ここで、メッセージ受信手段14は、鍵情報更新手段15を動作させる。この鍵更新情報は、鍵更新情報出力手段141および鍵更新情報入力手段150を介して、鍵情報更新手段15に通知される。
【0146】
ステップS31において、認証コード検証手段151によって、記憶手段10に記憶されている認証コード秘密鍵mackを用い、前記式(19)により、メッセージ認証コードMACが、暗号化インデックスCおよびノード公開鍵部分集合T′に対して正しく生成されたものであるか否かを検証する。ここで、メッセージ認証コードMACが正しくなければメッセージを破棄する(不図示)。
【0147】
ステップS32において、ノードインデックス復号手段152は、記憶手段10に記憶されている共通鍵暗号秘密鍵enckを用い、前記式(20)により、暗号化インデックスCを葉ノードのインデックスjに復号する。
ステップS33において、ノード公開鍵集合更新手段153は、ステップ32で復号されたインデックスjに対応する葉ノードからルートノードまでのパス上におけるノード公開鍵集合Tのノード公開鍵を、ノード公開鍵部分集合T′のノード公開鍵で更新する。
【0148】
ステップS34において、グループ共有鍵更新手段154は、ステップS33で更新されたノード公開鍵集合T(T″)と、自身の葉ノードのノード秘密鍵Kjとに基づいて、グループ共有鍵を更新し、記憶手段10に記憶する。
ステップS35において、鍵更新秘密鍵更新手段155は、秘密鍵(認証コード秘密鍵mack,共通鍵暗号秘密鍵enck)を更新する。ここでは、鍵更新秘密鍵更新手段132は、ステップS33で更新されたノード公開鍵集合T″とステップS34で更新されたグループ共有鍵tk′とから、前記式(9),式(10)により、認証コード秘密鍵mack′および共通鍵暗号秘密鍵enck′を生成し、記憶手段10に記憶する。
以上の動作で、鍵情報更新手段15は、鍵情報の更新動作を完了し、制御をメッセージ受信手段14に戻す。
【0149】
ステップS36において、メッセージ復号手段142は、更新後のグループ共有鍵tk′を用い、ステップS30で受信した暗号化メッセージCMを、前記式(18)により復号する。これによって、元のメッセージMが生成される。
以上のメッセージ送受信処理によって、メッセージグループ管理者装置1およびメッセージグループメンバ装置2は、グループのメンバの公開鍵(参加者情報)をグループ以外には秘匿して、メッセージを送受信することができる。
【0150】
以上、本発明の実施形態に係るメッセージグループ管理者装置1およびメッセージグループメンバ装置2の構成および動作について説明したが、本発明は、この実施形態に限定されるものではない。
【0151】
ここでは、グループに属するメンバ以外に参加者情報(公開鍵)を秘匿することとした。しかし、グループに属するメンバに対しても、同じグループの参加者情報(公開鍵)を秘匿することとしてもよい。
その場合、メッセージグループ管理者装置1(
図3)を以下のように変更する。
ノード情報暗号化手段116は、メンバのノード情報を暗号化する際に、前記式(12)の秘密鍵kを省略した以下の式(25)により、暗号化ノード情報CT
j(j=2,…,n)を生成する。
【0152】
【0153】
そして、署名付加手段117は、前記式(13)の暗号化メンバ公開鍵Cpkを省略した以下の式(26)により、署名σを生成する。
【0154】
【0155】
そして、署名付加手段117は、以下の式(27)に示すグループ初期化情報initに署名σを付加して初期化情報送信手段118に出力する。
【0156】
【0157】
一方、メッセージグループメンバ装置2(
図7)を以下のように変更する。
グループ初期化情報initには暗号化メンバ公開鍵Cpkが含まれていないため、署名検証手段211から、メンバ公開鍵復号手段213への出力はなくなる。
また、ノード情報復号手段212は、復号結果がエラーシンボル(⊥)とならない暗号化ノード情報CT
jの復号結果は(IK
1||j)となり、秘密鍵kが含まれないため、メンバ公開鍵復号手段213への出力はなくなる。
これによって、グループに属するメンバに対しても、同じグループの参加者情報(公開鍵)を秘匿することができる。
また、この場合、グループ管理者初期化手段11からメンバ公開鍵暗号化手段115を省略し、グループメンバ初期化手段21からメンバ公開鍵復号手段213を省略してもよい。
【符号の説明】
【0158】
S グループメッセージ送受信システム
1 メッセージグループ管理者装置
10 記憶手段
11 グループ管理者初期化手段
110 メンバ公開鍵取得手段
111 セットアップ鍵ペア生成手段
112 ノード秘密鍵生成手段
113 グループ共有鍵生成手段
114 鍵更新秘密鍵生成手段
115 メンバ公開鍵暗号化手段
116 ノード情報暗号化手段
117 署名付加手段
118 初期化情報送信手段
12 メッセージ送信手段
120 メッセージ暗号化手段
121 鍵更新情報入力手段
122 暗号化メッセージ送信手段
13 鍵更新情報生成手段
130 ノード秘密鍵選択手段
131 グループ共有鍵更新手段
132 鍵更新秘密鍵更新手段
133 ノードインデックス暗号化手段
134 認証コード生成手段
135 鍵更新情報出力手段
14 メッセージ受信手段
140 暗号化メッセージ受信手段
141 鍵更新情報出力手段
142 メッセージ復号手段
15 鍵情報更新手段
150 鍵更新情報入力手段
151 認証コード検証手段
152 ノードインデックス復号手段
153 ノード公開鍵集合更新手段
154 グループ共有鍵更新手段
155 鍵更新秘密鍵更新手段
21 グループメンバ初期化手段
210 初期化情報受信手段
211 署名検証手段
212 ノード情報復号手段
213 メンバ公開鍵復号手段
214 ノード秘密鍵生成手段
215 グループ共有鍵生成手段
216 鍵更新秘密鍵生成手段
3 鍵管理サーバ