JP2021111910A - 鍵交換システム、情報処理装置、鍵交換方法及びプログラム - Google Patents

鍵交換システム、情報処理装置、鍵交換方法及びプログラム Download PDF

Info

Publication number
JP2021111910A
JP2021111910A JP2020003857A JP2020003857A JP2021111910A JP 2021111910 A JP2021111910 A JP 2021111910A JP 2020003857 A JP2020003857 A JP 2020003857A JP 2020003857 A JP2020003857 A JP 2020003857A JP 2021111910 A JP2021111910 A JP 2021111910A
Authority
JP
Japan
Prior art keywords
key
terminal
key exchange
generation
params
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2020003857A
Other languages
English (en)
Other versions
JP7292648B2 (ja
Inventor
裕樹 岡野
Hiroki Okano
裕樹 岡野
美郷 中林
Misato Nakabayashi
美郷 中林
鉄太郎 小林
Tetsutaro Kobayashi
鉄太郎 小林
啓造 村上
Keizo Murakami
啓造 村上
一樹 米山
Kazuki Yoneyama
一樹 米山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Ibaraki University NUC
Original Assignee
Nippon Telegraph and Telephone Corp
Ibaraki University NUC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp, Ibaraki University NUC filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2020003857A priority Critical patent/JP7292648B2/ja
Publication of JP2021111910A publication Critical patent/JP2021111910A/ja
Application granted granted Critical
Publication of JP7292648B2 publication Critical patent/JP7292648B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】非同期型のIDベース多者間鍵交換プロトコルを提供する。【解決手段】第1端末11と、同一グループに属する1以上の第2端末121〜12nと、第1端末と第2端末間でグループ鍵交換を補助する補助サーバ20と、を含む鍵交換システム1であって、第1端末は、補助サーバで生成の公開鍵を用い、グループ鍵生成の生成鍵と該生成鍵を暗号化した暗号文とを生成の第1生成手段と、生成鍵を用いグループ鍵生成の第2生成手段と、暗号文を暗号化又はサインクリプション情報を生成する第3生成手段とを有する。補助サーバは、第1端末生成の事前計算鍵を用い、第3生成手段生成の情報を再暗号化した情報を生成する第4生成手段を有する。第2端末は、第4生成手段で生成の情報を復号して暗号文を生成する第5生成手段と、暗号文を補助サーバで復号して得た生成鍵を用い、グループ鍵を生成する第6生成手段とを有する。【選択図】図1

Description

本発明は、鍵交換システム、情報処理装置、鍵交換方法及びプログラムに関する。
近年、グループでの会話ができるコミュニケーションツールの普及に伴い、多者間で効率よく鍵交換を行う多者間鍵交換技術に注目が集まっている。多者間鍵交換技術の1つとして、ID−DMKDと呼ばれるプロトコルが知られている(非特許文献1参照)。ID−DMKDは同期型の多者間鍵交換プロトコルであり、サーバを中心としたスター型の通信ネットワーク上でユーザ同士がやり取りを行い、効率よく鍵の共有を行う技術である。また、ID−DMKDはIDベースの鍵交換プロトコルであるため、公開鍵基盤が不要であるという特徴もある。
Kazuki YONEYAMA, Reo YOSHIDA, Yuto KAWAHARA, Tetsutaro KOBAYASHI, Hitoshi FUJI, Tomohide YAMAMOTO, "Exposure-Resilient Identity-Based Dynamic Multi-Cast Key Distribution", IEICE Transactions on Fundamentals of Electronics, Communications and Computer Sciences 2018 E101.A-6, pp929-944, 2018.
しかしながら、ID−DMKDは同期型のプロトコルであるため、グループ内のユーザ全員がオンラインである必要がある。このため、適用できるアプリケーションが限られていた。
本発明の一実施形態は、上記の点に鑑みてなされたもので、非同期型のIDベース多者間鍵交換プロトコルを実現することを目的とする。
上記目的を達成するため、一実施形態に係る鍵交換システムは、第1の端末と、前記第1の端末と同一グループに属する1以上の第2の端末と、前記第1の端末と前記第2の端末との間でグループ鍵の交換を補助する補助サーバとが含まれる鍵交換システムであって、前記第1の端末は、前記補助サーバで生成された公開鍵を用いて、前記グループ鍵を生成するための生成鍵と該生成鍵を暗号化した暗号文とを生成する第1の生成手段と、前記生成鍵を用いて、前記グループ鍵を生成する第2の生成手段と、前記暗号文を暗号化又はサインクリプションした情報を生成する第3の生成手段と、を有し、前記補助サーバは、前記第1の端末で事前に計算された事前計算鍵を用いて、前記第3の生成手段で生成された情報を再暗号化した情報を生成する第4の生成手段、を有し、前記第2の端末は、前記第4の生成手段で生成された情報を復号して前記暗号文を生成する第5の生成手段と、前記暗号文を前記補助サーバで復号して得られた前記生成鍵を用いて、前記グループ鍵を生成する第6の生成手段と、を有することを特徴とする。
非同期型のIDベース多者間鍵交換プロトコルを実現することができる。
本実施形態に係る鍵交換システムの全体構成の一例を示す図である。 コンピュータのハードウェア構成の一例を示す図である。 本実施形態に係る鍵交換システムの機能構成の一例を示す図である。 実施例1におけるセットアップ処理の一例を示すフローチャートである。 実施例1における事前計算処理の一例を示すシーケンス図である。 実施例1における鍵交換処理の一例を示すシーケンス図である。 実施例2におけるセットアップ処理の一例を示すフローチャートである。 実施例2における事前計算処理の一例を示すシーケンス図である。 実施例2における鍵交換処理の一例を示すシーケンス図である。
以下、本発明の一実施形態について説明する。本実施形態では、非同期型のIDベース多者間鍵交換プロトコルを実現する鍵交換システム1について説明する。非同期型の多者間鍵交換プロトコルでは、鍵(グループ鍵)の交換を行う際にグループ内の全員がオンラインである必要がない。このため、非同期型のIDベース多者間鍵交換プロトコルは、同期的なアプリケーション(例えば、電話やVPN(Virtual Private Network)、オンラインチャット等)だけでなく、例えば、メールやファイル共有、オフラインチャット等の非同期的なアプリケーションにも適用することができる。なお、グループとは、鍵交換を行うユーザの集合のことである。
また、上述したように、IDベースで鍵交換プロトコルを実現することにより、公開鍵基盤が不要となる。このため、ユーザと公開鍵とを公開鍵基盤で紐付けたり、ユーザが証明書管理を行ったりすること等が不要となる。
なお、非同期型の多者間鍵交換プロトコルの従来技術として、以下の参考文献1に記載されている技術が知られている。
[参考文献1]
Colin Boyd, Gareth T. Davies, Kristian Gjosteen, Yao Jiang, "Offline Assisted Group Key Exchange", International Conference on Information Security 2018, volume 11060 of LNCS, pp.268-285, Springer, 2018.
しかしながら、この方式では、グループオーナーであるユーザは他のグループユーザ数の分だけ公開鍵暗号による暗号化と署名を実行しなければならないため、計算量・通信回数がグループユーザ数に比例してしまう。
上記の参考文献1に記載されている多者間鍵交換プロトコルは公開鍵ベースである(つまり、公開鍵基盤が必要となる)。公開鍵暗号方式をIDベース暗号方式に置き換えることでIDベースの非同期多者間鍵交換プロトコルが実現できるが、安全性の面で問題が生じる。非特許文献1では、KGC(Generation Center)と補助サーバ間の運用主体が一体であるような、両者の秘密情報が互いに共有されている状況であっても、ユーザ間で生成したグループ鍵を一切知ることができないように設計されていた。しかし、参考文献1の方式で単純にIDベース暗号方式を適用する場合では、KGCと補助サーバ間の運用主体が一体であると、グループ鍵が自明に計算されてしまう。このため、非特許文献1で達成されている上記の安全性と同等の安全性を担保することが必要である。
<全体構成>
まず、本実施形態に係る鍵交換システム1の全体構成について、図1を参照しながら説明する。図1は、本実施形態に係る鍵交換システム1の全体構成の一例を示す図である。
図1に示すように、本実施形態に係る鍵交換システム1には、複数の通信端末10と、鍵交換補助サーバ20と、鍵生成サーバ30とが含まれる。また、各通信端末10と、鍵交換補助サーバ20と、鍵生成サーバ30とは、例えば、インターネット等の通信ネットワークNを介して通信可能に接続される。
通信端末10は、グループ鍵の交換を行うユーザが利用する各種端末である。通信端末10としては、例えば、PC(パーソナルコンピュータ)やスマートフォン、タブレット端末、電話機等を用いることが可能である。ただし、これらに限られず、通信端末10として、任意の端末を用いることが可能である。
本実施形態では、グループの作成者(つまり、鍵交換を開始するユーザ)を「イニシエータ」、当該グループに属する他のユーザを「レスポンダ」と呼び、イニシエータが利用する通信端末10を「イニシエータ端末11」、レスポンダが利用する通信端末10を「レスポンダ端末12」とも表す。また、レスポンダ端末12はn台(nは1以上の整数)であるものとして、各レスポンダ端末12の各々を区別する場合には「レスポンダ端末12」(i=1,・・・,n)と表す。なお、イニシエータは、例えば、「グループオーナー」等と称されてもよい。
鍵交換補助サーバ20は、通信端末10の間での鍵交換を補助するサーバ装置である。鍵交換補助サーバ20は、例えば、イニシエータ端末11やレスポンダ端末12でグループ鍵を生成するための公開鍵を生成したり、イニシエータ端末11やレスポンダ端末12とのセッションを識別するセッションIDを生成したりする。なお、グループ鍵は「セッション鍵」と称されることもある。以降では、グループ鍵をセッション鍵と表す。
鍵生成サーバ30は、KGCとして機能するサーバ装置である。鍵生成サーバ30は、例えば、公開パラメータやマスター秘密鍵を生成したり、通信端末10や鍵交換補助サーバ20のIDに対応する部分公開鍵や部分秘密鍵を生成したりする。ここで、IDとは、各通信端末10やそのユーザ、鍵交換補助サーバ20を識別する識別情報のことである。各通信端末10と鍵交換補助サーバ20にはIDが事前に割り振られているものとする。
なお、IDとしては任意の識別情報を使用することができるが、例えば、ユーザのメールアドレス、SNS(Social Networking Service)のユーザID、電話番号、住所、氏名、マイナンバー、DNA等の生体情報、IP(Internet Protocol)アドレス、MAC(Media Access Control)アドレス、URL(Uniform Resource Locator)、クレジットカード番号、機器や装置の製造固有番号等を使用することが可能である。
<非同期型のIDベース多者間鍵交換プロトコルの概要>
ここで、本実施形態に係る非同期型IDベース多者間鍵交換プロトコルの概要について説明する。なお、本実施形態に係る非同期型IDベース多者間鍵交換プロトコルは、後述するように、証明書不要署名方式(CS: Certificateless Signature)と、プロキシ再暗号化付き証明書不要サインクリプション方式(CSPRE: Certificateless Signcryption with Proxy Re-Encryption)又は証明書不要プロキシ再暗号化方式(CPRE: Certificateless Proxy Re-Encryption)とを用いて構成される。そこで、本実施形態に係る非同期型IDベース多者間鍵交換プロトコルを証明書不要非同期多者間鍵交換プロトコル(CAGKE: Certificateless Asynchronous Group Key Exchange Protocol)と呼ぶことにする。
CAGKEにおけるプロトコル参加者は、通信端末10、鍵交換補助サーバ20及び鍵生成サーバ30である。以降では、全ての通信端末10の集合(つまり、全ユーザの集合)をWとして、通信端末10をU∈W、鍵交換補助サーバ20をSとも表記する。また、通信端末10とそのユーザとを同一視して、通信端末10をユーザとも表す。更に、イニシエータであるユーザをI、レスポンダであるユーザをi∈{1, …, n}とも表す。なお、1台の通信端末10を複数のユーザが利用している場合は、これらのユーザ同士は異なるユーザ(例えば、U1,U2∈W)として区別される。
CAGKEにおけるプロトコルセットアップは、以下の5つのアルゴリズム(CAGKE.Setup, CAGKE.PKeyExt, CAGKE.SetSV, CAGKE.SetSSK, CAGKE.SetSPK)で構成される。これらのアルゴリズムのうち、CAGKE.Setup及びCAGKE.PKeyExtの2つのアルゴリズムは鍵生成サーバ30が実行し、CAGKE.SetSV, CAGKE.SetSSK及びCAGKE.SetSPKの3つのアルゴリズムは通信端末10及び鍵交換補助サーバ20が実行する。
CAGKE.Setup(1κ)→(params, msk):セキュリティパラメータ1κを入力として、公開パラメータparamsとマスター秘密鍵mskとを出力する確率的アルゴリズム。
CAGKE.PKeyExt(params msk, ID)→(ppkID, pskID):公開パラメータparamsとマスター秘密鍵mskと自身(つまり、通信端末10又は鍵交換補助サーバ20)のID IDとを入力として、このIDに対応する部分公開鍵ppkIDと部分秘密鍵pskIDとを出力する確率的アルゴリズム。
CAGKE.SetSV(params, ID)→svID:公開パラメータparamsと自身のID IDとを入力として、このIDに対応する秘密値svIDを出力する確率的アルゴリズム。
CAGKE.SetSSK(params, pskID, svID)→sskID:公開パラメータparamsと部分秘密鍵pskIDと秘密値svIDとを入力として、自身のIDに対応する長期秘密鍵sskIDを出力する確率的アルゴリズム。
CAGKE.SetSPK(params, ppkID, svID)→spkID:公開パラメータparamsと部分公開鍵ppkIDと秘密値svIDとを入力として、長期公開鍵spkIDを出力する確率的アルゴリズム。
上記のセットアップにより、各通信端末10は、自身のID IDに対応する長期秘密鍵及び長期公開鍵のペア(sskID, spkID)を得る。同様に、鍵交換補助サーバ20も、自身のID IDに対応する長期秘密鍵及び長期公開鍵のペア(sskID, spkID)を得る。
なお、以降では、通信端末10を表すUと、この通信端末10のID IDとを同一視する。同様に、鍵交換補助サーバ20を表すSと、そのID IDとを同一視する。これにより、例えば、Uの長期秘密鍵及び長期公開鍵のペア(sskID, spkID)は(sskU, spkU)と表される。同様に、例えば、Sの長期秘密鍵及び長期公開鍵のペア(sskID, spkID)は(sskS, spkS)と表される。
次に、各通信端末10(各U∈W)は、他の通信端末10の公開鍵{spkV}V∈Wを使って、鍵交換前に以下の事前計算アルゴリズムCAGKE.PreCompを実行する。
CAGKE.PreComp(params, sskU, spkU, {spkV}V∈W\{U})→precompU,W
この事前計算アルゴリズムCAGKE.PreCompの出力precompU,Wは、鍵交換補助サーバ20に保存される。このように、各通信端末10は、鍵交換前に、他の通信端末10の数に計算量が比例する事前計算アルゴリズムを1回実行する。
続いて、各通信端末10は鍵交換補助サーバ20と複数回通信を行い、セッション鍵keyを生成する。この通信が行なわれる中で、鍵交換補助サーバ20は、precompU,Wを用いる。これにより、複数の通信端末10間で、このセッション鍵keyを用いた暗号化通信を行うことが可能になる。
ここで、各通信端末10と鍵交換補助サーバ20には、セッション毎にインスタンスが割り当てられるものとする。インスタンスとは、メモリ上に展開されたデータ集合のことである。例えば、同一の通信端末10を複数のユーザで利用する場合には、ユーザ毎に異なるインスタンスが割り当てられる。
各通信端末10のs∈N番目のインスタンスをπU sと表記することにする。同様に、鍵交換補助サーバ20のs∈N番目のインスタンスをπS sと表記することになる。これらの各インスタンスで扱う変数は、インスタンスの実行状態status∈{unused, active, accepted, rejected}、役割role∈{initiator, receiver}、セッション参加ユーザpid⊆W、セッションID sid、一時秘密鍵esk, セッション鍵keyである。ここで、インスタンスの初期の実行状態はunusedであり、セッション開始時に、各通信端末10や鍵交換補助サーバ20は、インスタンスを呼び出して、その実行状態をactiveにする。また、セッション鍵keyが生成された場合、その後、インスタンスの実行状態をacceptedにする。一方で、セッション鍵keyの生成に失敗した場合は、インスタンスの実行状態をrejectedにする。
なお、2つのユーザU,V∈WのインスタンスπU s及びπV がパートナーであるとは、セッション参加ユーザpidとセッションID sidとが等しいときを言う。これは、2つのユーザU,Vが同一グループに属しており、共にオンラインであることを意味している。鍵交換補助サーバ20のインスタンスについても同様である。
<ハードウェア構成>
次に、本実施形態に係る鍵交換システム1に含まれる通信端末10、鍵交換補助サーバ20及び鍵生成サーバ30のハードウェア構成について説明する。通信端末10、鍵交換補助サーバ20及び鍵生成サーバ30は一般的なコンピュータ(情報処理装置)のハードウェア構成により実現可能であり、例えば、図2に示すコンピュータ500のハードウェア構成により実現可能である。図2は、コンピュータ500のハードウェア構成の一例を示す図である。
図2に示すコンピュータ500は、ハードウェアとして、入力装置501と、表示装置502と、外部I/F503と、通信I/F504と、プロセッサ505と、メモリ装置506とを有する。これら各ハードウェアは、それぞれがバス507を介して通信可能に接続されている。
入力装置501は、例えば、キーボードやマウス、タッチパネル等である。表示装置502は、例えば、ディスプレイ等である。なお、コンピュータ500は、入力装置501及び表示装置502のうちの少なくとも一方を有していなくてもよい。
外部I/F503は、外部装置とのインタフェースである。外部装置には、記録媒体503a等がある。なお、記録媒体503aとしては、例えば、CD(Compact Disc)、DVD(Digital Versatile Disc)、SDメモリカード(Secure Digital memory card)、USB(Universal Serial Bus)メモリカード等が挙げられる。
通信I/F504は、通信ネットワークNに接続するためのインタフェースである。プロセッサ505は、例えば、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)等の各種演算装置である。メモリ装置506は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ等の各種記憶装置である。
本実施形態に係る鍵交換システム1に含まれる通信端末10、鍵交換補助サーバ20及び鍵生成サーバ30は、例えば、図2に示すコンピュータ500のハードウェア構成を有することにより、後述する各種処理を実現することができる。なお、図2に示すコンピュータ500のハードウェア構成は一例であって、他のハードウェア構成であってもよい。例えば、コンピュータ500は、複数のプロセッサ505を有していてもよいし、複数のメモリ装置506を有していてもよい。
<機能構成>
次に、本実施形態に係る鍵交換システム1に含まれる通信端末10、鍵交換補助サーバ20及び鍵生成サーバ30の機能構成について、図3を参照しながら説明する。図3は、本実施形態に係る鍵交換システム1の機能構成の一例を示す図である。
≪通信端末10≫
図3に示すように、通信端末10は、セットアップ部111と、事前計算部112と、鍵交換部113とを有する。これら各部は、例えば、通信端末10にインストールされた1以上のプログラムがプロセッサに実行させる処理により実現される。
また、通信端末10は、記憶部121を有する。記憶部121は、例えば、通信端末10のメモリ装置等を用いて実現可能である。
記憶部121には、各種情報(例えば、長期秘密鍵及び長期公開鍵のペア(sskU, spkU)やインスタンスπU s等)が記憶される。
セットアップ部111は、セットアップ処理を実行する。すなわち、セットアップ部111は、CAGKE.SetSV, CAGKE.SetSSK及びCAGKE.SetSPKを実行する。
事前計算部112は、事前計算処理を実行する。すなわち、事前計算部112は、CAGKE.PreCompを実行する。
鍵交換部113は、鍵交換補助サーバ20と複数回通信を行うことで、セッション鍵keyを生成する。
≪鍵交換補助サーバ20≫
図3に示すように、鍵交換補助サーバ20は、セットアップ部211と、鍵交換部212とを有する。これら各部は、例えば、鍵交換補助サーバ20にインストールされた1以上のプログラムがプロセッサに実行させる処理により実現される。
また、鍵交換補助サーバ20は、記憶部221を有する。記憶部221は、例えば、鍵交換補助サーバ20のメモリ装置等を用いて実現可能である。
記憶部221には、各種情報(例えば、長期秘密鍵及び長期公開鍵のペア(sskS, spkS)や各通信端末10で計算された事前計算結果precompU,W等)が記憶される。
セットアップ部211は、セットアップ処理を実行する。すなわち、セットアップ部211は、CAGKE.SetSV, CAGKE.SetSSK及びCAGKE.SetSPKを実行する。
鍵交換部212は、通信端末10と複数回通信を行うことで、セッション鍵keyの生成に必要な情報を生成し、当該通信端末10に送信する。
≪鍵生成サーバ30≫
図3に示すように、鍵生成サーバ30は、セットアップ部311を有する。セットアップ部311は、例えば、鍵生成サーバ30にインストールされた1以上のプログラムがプロセッサに実行させる処理により実現される。
また、鍵生成サーバ30は、記憶部321を有する。記憶部321は、例えば、鍵生成サーバ30のメモリ装置等を用いて実現可能である。
記憶部321は、各種情報(例えば、マスター秘密鍵msk等)が記憶される。セットアップ部311は、セットアップ処理を実行する。すなわち、セットアップ部311は、CAGKE.Setup及びCAGKE.PKeyExtを実行する。
[実施例1]
以降では、実施例1について説明する。実施例1では、ブラインド鍵カプセル化メカニズム(BKEM(Blinded Key Encapsulation Mechanism))と証明書不要署名方式(CS)とプロキシ再暗号化付き証明書不要サインクリプション方式(CSPRE)とを用いてCAGKEを構成する場合について説明する。
<準備>
CAGKEの構成について説明する前に、以下、ブラインド鍵カプセル化メカニズム(BKEM)と証明書不要署名方式(CS)とプロキシ再暗号化付き証明書不要サインクリプション方式(CSPRE)とについて説明する。
・ブラインド鍵カプセル化メカニズム(BKEM)
ブラインド鍵カプセル化メカニズムは、以下の5つのアルゴリズム(BKEM.KeyGen, BKEM.Encap, BKEM.Blind, BKEM.Decap, BKEM.Unblind)で構成される。
BKEM.KeyGen(r1)→(ek, dk):乱数r1を入力として、公開鍵ekと秘密鍵dkとを出力する確定的アルゴリズム。
BKEM.Encap(ek, r2)→(C, k):公開鍵ekと乱数r2とを入力として、暗号文Cと鍵kとを出力する確定的アルゴリズム。
Figure 2021111910
:公開鍵ekと暗号文Cと乱数r3とを入力として、ブラインドされた暗号文
Figure 2021111910
を出力する確定的アルゴリズム。なお、以降、明細書のテキスト中では、Xがブラインドされていることを「~X」と表す。
BKEM.Decap(dk, ~C)→~k:秘密鍵dkとブラインドされた暗号文~Cとを入力として、ブラインドされた鍵~kを出力する確定的アルゴリズム。
BKEM.Unblind(r3, ~k)→k:乱数r3とブラインドされた鍵~kとを入力として、鍵kを出力する確定的アルゴリズム。
なお、ブラインド鍵カプセル化メカニズムの詳細については、例えば、以下の参考文献2等を参照されたい。
[参考文献2]
Boyd, C., Davies, G.T., Gjosteen, K., Jiang, Y.: Offline assisted group key exchange. Cryptology ePrint Archive, Report 2018/114 (2018).
・証明書不要署名方式(CS)
証明書不要署名方式は、以下の7つのアルゴリズム(CS.Setup, CS.PKeyExt, CS.SetSV, CS.SetSK, CS.SetPK, CS.Sign, CS.Verify)で構成される。
CS.Setup(1κ)→(params, msk):セキュリティパラメータ1κを入力として、公開パラメータparamsとマスター秘密鍵mskとを出力する確率的アルゴリズム。
CS.PKeyExt(params, msk, ID)→(ppkID, pskID):公開パラメータparamsとマスター秘密鍵mskとID IDとを入力として、部分公開鍵ppkIDと部分秘密鍵pskIDとを出力する確率的アルゴリズム。
CS.SetSV(params, ID)→svID:公開パラメータparamsとID IDとを入力として、秘密値svIDを出力する確率的アルゴリズム。
CS.SetSK(params, pskID, svID)→skID:公開パラメータparamsと部分秘密鍵pskIDと秘密値svIDとを入力として、秘密鍵skIDを出力する確率的アルゴリズム。
CS.SetPK(params, ppkID, svID)→pkID:公開パラメータparamsと部分公開鍵ppkIDと秘密値svIDとを入力として、公開鍵pkIDを出力する確率的アルゴリズム。
CS.Sign(params, ID, skID, m)→σ:公開パラメータparamsとID IDと秘密鍵skIDとメッセージmとを入力として、署名σを出力する確率的アルゴリズム。
CS.Verify(params, ID, pkID, m, σ)→1/0:公開パラメータparamsとID IDと公開鍵pkIDとメッセージmと署名σとを入力として、検証成功を表す1又は検証失敗を表す0のいずれかを出力する確定的アルゴリズム。
なお、証明書不要署名方式の詳細については、例えば、以下の参考文献3等を参照されたい。
[参考文献3]
Yum, D.H., Lee, P.J.: Generic Construction of Certificateless Signature. In: Wang, H., Pieprzyk, J., Varadharajan, V. (eds.) ACISP 2004. LNCS, vol. 3108, pp. 200-211. Springer, Heidelberg (2004)
・プロキシ再暗号化付き証明書不要サインクリプション方式(CSPRE)
プロキシ再暗号化付き証明書不要サインクリプション方式は、以下の10のアルゴリズム(CSPRE.Setup, CSPRE.PKeyExt, CSPRE.SetSV, CSPRE.SetSK, CSPRE.SetPK, CSPRE.RKGen, CSPRE.Signcrypt, CSPRE.ReSigncrypt, CSPRE.DeSigncrypt1, CSPRE.DeSigncrypt2)で構成される。
CSPRE.Setup(1κ)→(params, msk):セキュリティパラメータ1κを入力として、公開パラメータparamsとマスター秘密鍵mskとを出力する確率的アルゴリズム。
CSPRE.PKeyExt(params, msk, ID)→(ppkID, pskID):公開パラメータparamsとマスター秘密鍵mskとID IDとを入力として、部分公開鍵ppkIDと部分秘密鍵pskIDとを出力する確率的アルゴリズム。
CSPRE.SetSV(params, ID)→svID:公開パラメータparamsとID IDとを入力として、秘密値svIDを出力する確率的アルゴリズム。
CSPRE.SetSK(params, pskID, svID)→skID:公開パラメータparamsと部分秘密鍵pskIDと秘密値svIDとを入力として、秘密鍵skIDを出力する確率的アルゴリズム。
CSPRE.SetPK(params, ppkID, svID)→pkID:公開パラメータparamsと部分公開鍵ppkIDと秘密値svIDとを入力として、公開鍵pkIDを出力する確率的アルゴリズム。
CSPRE.RKGen(params, IDA, skA, pkA, IDB, pkB)→rkA→B:公開パラメータparamsと委任者(delegator)のID IDAと委任者の秘密鍵skAと委任者の公開鍵pkAと受任者(delegatee)のID IDBと受任者の公開鍵pkBとを入力として、再暗号化鍵rkA→Bを出力する確率的アルゴリズム。
CSPRE.Signcrypt(params, IDI, skI, pkI, IDi, pki, m)→σI,i:公開パラメータparamsとイニシエータIのID IDIとイニシエータIの秘密鍵skIとイニシエータIの公開鍵pkIとレスポンダiのID IDiとレスポンダiの公開鍵pkiと平文mとを入力として、サインクリプションσI,iを出力する確率的アルゴリズム。
CSPRE.ReSigncrypt(params, rki→i', σi)→σ'i,i':公開パラメータparamsと再暗号化鍵rki→i'とサインクリプションσiとを入力として、サインクリプションσ'i,i'を出力する確率的アルゴリズム。
CSPRE.DeSigncrypt1(params, IDI, pkI, ski, σI,i)→m/⊥:公開パラメータparamsとイニシエータIのID IDIとイニシエータIの公開鍵pkIとレスポンダiの秘密鍵skiとレスポンダiのサインクリプションσI,iとを入力として、平文m又は失敗を示す⊥のいずれかを出力する確定的アルゴリズム。
CSPRE.DeSigncrypt2(params, IDI, pkI, ski, σ'I,i)→m/⊥:公開パラメータparamsとイニシエータIのID IDIとイニシエータIの公開鍵pkIとレスポンダiの秘密鍵skiとレスポンダiのサインクリプションσ'I,iとを入力として、平文m又は失敗を示す⊥のいずれかを出力する確定的アルゴリズム。
ここで、プロキシ再暗号化付き証明書不要サインクリプション方式は、正当性として以下の2つの条件を満たす。
条件1:任意の公開パラメータparamsと任意のイニシエータIのID IDIと当該IDに対応する任意の秘密鍵skI及び公開鍵pkIと任意のレスポンダiのID IDiと当該IDに対応する任意の秘密鍵ski及び公開鍵pkiと任意の平文mとに対して、
CSPRE.DeSigncrypt1(params, IDI, pkI, ski, CSPRE.Signcrypt(params, IDI, skI, pkI, IDi, pki, m))=m
が成り立つ。
条件2:任意の公開パラメータparamsと任意のイニシエータIのID IDIと当該IDに対応する任意の秘密鍵skI及び公開鍵pkIと任意の2つのレスポンダi及びi'のID IDi及びIDi'とこれらのIDにそれぞれ対応する任意の秘密鍵ski及びski'並びに公開鍵pki及びpki'と任意の再暗号化鍵rki→i'と任意の平文mとに対して、
CSPRE.DeSigncrypt2(params, IDI, pkI, ski', CSPRE.ReSigncrypt(params, rki→i', CSPRE.Signcrypt(params, IDI, skI, pkI, IDi, pki, m)))=m
が成り立つ。
なお、プロキシ再暗号化付き証明書不要サインクリプション方式の詳細については、例えば、以下の参考文献4等を参照されたい。
[参考文献4]
Emmanuel Ahene, Junfeng Dai, Hao Feng, Fagen Li: A certificateless signcryption with proxy re-encryption for practical access control in cloud-based reliable smart grid. Telecommunication Systems April 2019, Volume 70, Issue 4, pp 491-510.
<実施例1におけるCAGKE>
以上で説明したブラインド鍵カプセル化メカニズム(BKEM)と証明書不要署名方式(CS)とプロキシ再暗号化付き証明書不要サインクリプション方式(CSPRE)とを用いて、実施例1におけるCAGKEのセットアップ処理、事前計算処理及び鍵交換処理を以下のように構成する。
≪実施例1におけるセットアップ処理≫
実施例1におけるセットアップ処理について、図4を参照しながら説明する。図4は、実施例1におけるセットアップ処理の一例を示すフローチャートである。
ステップS101:鍵生成サーバ30のセットアップ部311は、CAGKE.Setupを実行して、公開パラメータparamsとマスター秘密鍵mskとを生成する。すなわち、セットアップ部311は、CAGKE.Setup(1κ)を実行することで、以下により公開パラメータparamsとマスター秘密鍵mskとを生成する。
まず、セットアップ部311は、(paramsCS, mskCS)←CS.Setup(1κ)と(paramsCSPRE, mskCSPRE)←CSPRE.Setup(1κ)とを実行する。そして、セットアップ部311は、msk=(mskCS, mskCSPRE)、params=(paramsCS, paramsCSPRE, tPRF, KDF, H1, H2, H3)とする。ここで、tPRF:{0, 1}κ×Kspaceκ 2×{0, 1}κはねじれ疑似ランダム関数(twisted PRF)、KDFは鍵導出関数(key derivation function)、H1, H2, H3はそれぞれ衝突困難ハッシュ関数(collision resistance hash function)である。なお、Kspaceκは鍵空間である。
なお、公開パラメータparamsは記憶部321に保存されると共に公開される。一方で、マスター秘密鍵mskは記憶部321に保存される。
ステップS102:次に、鍵生成サーバ30のセットアップ部311は、各通信端末10及び鍵交換補助サーバ20それぞれのIDを用いてCAGKE.PKeyExtを実行して、部分公開鍵ppkIDと部分秘密鍵pskIDとを生成する。すなわち、セットアップ部311は、各IDを用いてCAGKE.PKeyExt(params msk, ID)を実行することで、以下により各IDのそれぞれに対応する部分公開鍵ppkIDと部分秘密鍵pskIDとを生成する。
まず、セットアップ部311は、(ppkID CS, pskID CS)←CS.PKeyExt(paramsCS, mskCS, ID)と(ppkID CSPRE, pskID CSPRE)←CSPRE.PKeyExt(paramsCSPRE, mskCSPRE, ID)とを実行する。そして、セットアップ部311は、ppkID=(ppkID CS, ppkID CSPRE)、pskID=(pskID CS, pskID CSPRE)とする。
なお、部分公開鍵ppkIDは記憶部321に保存されると共に公開される。一方で、部分秘密鍵pskIDは、この部分秘密鍵pskIDの生成に用いたIDに対応する通信端末10又は鍵交換補助サーバ20に対してセキュアな方法で送信される。
ステップS103:各通信端末10のセットアップ部111及び鍵交換補助サーバ20のセットアップ部211は、自身のIDを用いてCAGKE.SetSVを実行して、このIDに対応する秘密値svIDを生成する。すなわち、セットアップ部111及びセットアップ部211は、自身のIDを用いてCAGKE.SetSV(params, ID)を実行することで、以下により当該IDに対応する秘密値svIDを生成する。
まず、セットアップ部111及びセットアップ部211は、自身のIDを用いて、svID CS←CS.SetSV(paramsCS, ID)とsvID CSPRE←CSPRE.SetSV(paramsCSPRE, ID)とを実行する。そして、セットアップ部111及びセットアップ部211は、svID=(svID CS, svID CSPRE)とする。
なお、セットアップ部111により生成された秘密値svIDは記憶部121に保存される。一方で、セットアップ部211により生成された秘密値svIDは記憶部221に保存される。
ステップS104:次に、各通信端末10のセットアップ部111及び鍵交換補助サーバ20のセットアップ部211は、自身のIDを用いてCAGKE.SetSSKを実行して、このIDに対応する長期秘密鍵sskIDを生成する。すなわち、セットアップ部111及びセットアップ部211は、自身のIDを用いてCAGKE.SetSSK(params, pskID, svID)を実行して、以下により当該IDに対応する長期秘密鍵sskIDを生成する。
まず、セットアップ部111及びセットアップ部211は、自身のIDを用いて、skID CS←CS.SetSK(paramsCS, pskID CS, svID CS)とskID CSPRE←CSPRE.SetSK(paramsCSPRE, pskID CSPRE, svID CSPRE)とを実行する。そして、セットアップ部111及びセットアップ部211は、sskID=(skID CS, skID CSPRE)とする。
なお、セットアップ部111により生成された長期秘密鍵sskIDは記憶部121に保存される。一方で、セットアップ部211により生成され長期秘密鍵sskIDは記憶部221に保存される。
ステップS105:次に、各通信端末10のセットアップ部111及び鍵交換補助サーバ20のセットアップ部211は、自身のIDを用いてCAGKE.SetSPKを実行して、このIDに対応する長期公開鍵spkIDを生成する。すなわち、セットアップ部111及びセットアップ部211は、自身のIDを用いてCAGKE.SetSPK(params, ppkID, svID)を実行して、以下により当該IDに対応する長期公開鍵spkIDを生成する。
まず、セットアップ部111及びセットアップ部211は、自身のIDを用いて、pkID CS←CS.SetPK(paramsCS, ppkID CS, svID CS)とpkID CSPRE←CSPRE.SetPK(paramsCSPRE, ppkID CSPRE, svID CSPRE)とを実行する。そして、セットアップ部111及びセットアップ部211は、spkID=(pkID CS, svID CSPRE)とする。
なお、セットアップ部111により生成された長期公開鍵spkIDは記憶部121に保存される。一方で、セットアップ部211により生成され長期公開鍵spkIDは記憶部221に保存される。
≪実施例1における事前計算処理≫
実施例1における事前計算処理について、図5を参照しながら説明する。図5は、実施例1における事前計算処理の一例を示すシーケンス図である。
ステップS201:まず、各通信端末10の事前計算部112は、CAGKE.PreCompを実行して、precompU,Wを計算する。すなわち、事前計算部112は、自身のID IDUに対する長期秘密鍵sskU及び長期公開鍵spkUと、他の通信端末10の長期公開鍵{spkV}V∈W\{U}とを用いてCAGKE.PreComp(params, sskU, spkU, {spkV}V∈W\{U})を実行して、以下によりprecompU,Wを計算する。
まず、事前計算部112は、任意のV∈W\{U}に対して、rkU→V←CSPRE.RKGen(paramsCSPRE, IDU, skU CSPRE, pkU CSPRE, IDV, pkV CSPRE)を実行する。そして、事前計算部112は、precompU,W={(IDV, rkU→V)}V∈W\{U}とする。IDVは、任意の他の通信端末10を表すVのIDである。なお、以降では、任意のUと任意のV∈W\{U}とに対して、(IDV, rkU→V)をprecompU,Vとも表す。
ステップS202:各通信端末10の事前計算部112は、事前計算結果であるprecompU,Wを鍵交換補助サーバ20に送信する。
ステップS203:鍵交換補助サーバ20は、各通信端末10から事前計算結果precompU,Wを受信すると、これらの事前計算結果precompU,Wを記憶部221に保存する。
≪実施例1における鍵交換処理≫
実施例1における鍵交換処理について、図6を参照しながら説明する。図6は、実施例1における鍵交換処理の一例を示すシーケンス図である。
なお、図6では、ユーザ集合G⊆Wでセッションを確立するものとする。また、イニシエータであるユーザをI∈G、レスポンダであるユーザをi∈{1, …, n}とする。なお、G={I, 1, …, n}である。更に、イニシエータIのインスタンスをπI ξ、レスポンダiのインスタンスをπi η、鍵交換補助サーバ20(つまり、S)のインスタンスをπS ζとする。
ステップS301:イニシエータ端末11の鍵交換部113は、以下により各種情報の生成を行う。
まず、イニシエータ端末11の鍵交換部113は、セッション参加ユーザをpidI ξ={I, 1, …, n}とする。次に、イニシエータ端末11の鍵交換部113は、乱数RandI∈{0, 1}κを任意に生成した上で、メッセージmsg1:=(RandI, pid:= pidI ξ)として、署名σ1←CS.Sign(paramsCS, IDI, skI CS, msg1)を生成する。
ステップS302:イニシエータ端末11の鍵交換部113は、(RandI, pid, σ1)を鍵交換補助サーバ20に送信する。
ステップS303:鍵交換補助サーバ20の鍵交換部212は、イニシエータ端末11から(RandI, pid, σ1)を受信すると、以下により検証及び各種情報の生成を行う。
まず、鍵交換補助サーバ20の鍵交換部212は、CS.Verify(paramsCS, IDI, pkI CS, msg1=(RandI, pid), σ1)を実行して検証を行う。そして、鍵交換補助サーバ20の鍵交換部212は、検証失敗を表す0が出力された場合は処理を終了する。
一方で、検証成功を表す1が出力された場合は、鍵交換補助サーバ20の鍵交換部212は、rS∈Kspaceκとr'S∈{0, 1}κを一様ランダムに生成した上で、(ek, dk)←BKEM.KeyGen(tPRF(H1(sskS), H2(sskS,) rS, r'S))を計算する。次に、鍵交換補助サーバ20の鍵交換部212は、メッセージmsg2:=(RandI, pid, ek)として、署名σ2←CS.Sign(paramsCS, IDS, skS CS, msg2)を生成する。
そして、鍵交換補助サーバ20の鍵交換部212は、一時秘密鍵としてeskS ζ:=(rS, r'S)をセットし、(sid, IDI, pid, eskS ζ, T=φ)をセッションリストとして記憶部221に保存する。なお、Tには、現時点でセッションに参加しているレスポンダのIDが格納される。
ステップS304:鍵交換補助サーバ20の鍵交換部212は、(ek, σ2)をイニシエータ端末11に送信する。
ステップS305:イニシエータ端末11の鍵交換部113は、鍵交換補助サーバ20から(ek, σ2)を受信すると、以下により検証及びセッション鍵を含む各種情報の生成を行う。
まず、イニシエータ端末11の鍵交換部113は、CS.Verify(paramsCS, IDS, pkS CS, msg2=(RandI, pid, ek), σ2)を実行して検証を行う。そして、イニシエータ端末11の鍵交換部113は、検証失敗を表す0が出力された場合は処理を終了する。
一方で、検証成功を表す1が出力された場合は、イニシエータ端末11の鍵交換部113は、sid:=H3(IDI, RandI, pidI ξ, ek)を計算する。また、イニシエータ端末11の鍵交換部113は、rI∈Kspaceκとr'I∈{0, 1}κを一様ランダムに生成した上で、一時秘密鍵としてeskI ξ:=(rI, r'I)をセットする。
次に、イニシエータ端末11の鍵交換部113は、(C, k)←BKEM.Encap(ek, tPRF(H1(sskI), H2(sskI,) rI, r'I))を計算した後、セッション鍵keyI ξ:=KDF('1', k, sid)と鍵検証値τI ξ:=KDF('2', k, sid)とを計算する。そして、イニシエータ端末11の鍵交換部113は、メッセージmsg3:=(C, ek, τI ξ, sid, pid)として、サインクリプションσI,I←CSPRE.Signcrypt(paramsCSPRE, IDI, skI CSPRE, pkI CSPRE, IDI, pkI CSPRE, msg3)と署名σ4←CS.Sign(paramsCS, IDI, skI CS, msg4:=(σI,I, sid))とを生成する。
ステップS306:イニシエータ端末11の鍵交換部113は、(sid, σI,I, σ4)を鍵交換補助サーバ20に送信し、インスタンスの実行状態をacceptedにする。
なお、上記のステップS305ではイニシエータIのみが復号できるサインクリプションσI,Iを生成しているが、これに限られず、例えば、いずれかのレスポンダiが復号できるサインクリプションσI,iを生成してもよい。
ステップS307:鍵交換補助サーバ20の鍵交換部212は、イニシエータ端末11から(sid, σI,I, σ4)を受信すると、以下により検証及び各種情報の生成を行う。
まず、鍵交換補助サーバ20の鍵交換部212は、CS.Verify(paramsCS, IDI, pkI CS, msg4=(σI,I, sid), σ4)を実行して検証を行う。そして、鍵交換補助サーバ20の鍵交換部212は、検証失敗を表す0が出力された場合は処理を終了する。
一方で、検証成功を表す1が出力された場合は、鍵交換補助サーバ20の鍵交換部212は、レスポンダi∈G\{I}に対して、記憶部221からprecompI,i(つまり、(IDi, rkI→i))を取り出して、再暗号化サインクリプションσ'I,i←CSPRE.ReSigncrypt(paramsCSPRE, rkI→i, σI,I)と署名σ5←CS.Sign(paramsCS, IDS, skS CS, msg5:=(IDI, sid, σ'I,i))とを生成する。
ステップS308:鍵交換補助サーバ20の鍵交換部212は、レスポンダiのレスポンダ端末12がオンラインになった場合、(IDI, sid, σ'I,i, σ5)を当該レスポンダ端末12に送信する。
ステップS309:レスポンダ端末12の鍵交換部113は、(IDI, sid, σ'I,i, σ5)を受信すると、以下により検証及び各種情報の生成を行う。
まず、レスポンダ端末12の鍵交換部113は、CS.Verify(paramsCS, IDS, pkS CS, msg5=(IDI, sid, σ'I,i), σ5)を実行して検証を行う。そして、レスポンダ端末12の鍵交換部113は、検証失敗を表す0が出力された場合は処理を終了する。
一方で、検証成功を表す1が出力された場合は、レスポンダ端末12の鍵交換部113は、(C, ek, τI ξ, sid, pid)←CSPRE.DeSigncrypt2(paramsCSPRE, IDI, pkI CSPRE, ski CSPRE, σ'I,i)によりサインクリプションσ'I,iを復号する。次に、レスポンダ端末12の鍵交換部113は、ri∈Kspaceκとr'i∈{0, 1}κを一様ランダムに生成した上で、ブラインドされた暗号文~C←BKEM.Blind(ek, C, tPRF(H1(sski), H2(sski), ri, r'i))を計算する。そして、レスポンダ端末12の鍵交換部113は、署名σ6←CS.Sign(paramsCS, IDi, ski CS, msg6:=(sid, ek, ~C))を生成する。
ステップS310:レスポンダ端末12の鍵交換部113は、(sid, ~C, σ6)を鍵交換補助サーバ20に送信する。
ステップS311:鍵交換補助サーバ20の鍵交換部212は、レスポンダ端末12から(sid, ~C, σ6)を受信すると、以下により検証、各種情報の生成及びセッションリストの更新を行う。
まず、鍵交換補助サーバ20の鍵交換部212は、sidをキーとしてセッションリストから一時秘密鍵eskS ζ=(rS, r'S)を取り出し、(ek, dk)←BKEM.KeyGen(tPRF(H1(sskS), H2(sskS,) rS, r'S))を計算する。次に、鍵交換補助サーバ20の鍵交換部212は、CS.Verify(paramsCS, IDi, pki CS, msg6=(sid, ek, ~C), σ6)を実行して検証を行う。そして、鍵交換補助サーバ20の鍵交換部212は、検証失敗を表す0が出力された場合は処理を終了する。
一方で、検証成功を表す1が出力された場合は、鍵交換補助サーバ20の鍵交換部212は、「IDi∈pid」及び「IDi∈Tでない」の両方が成り立つかを検証し、いずれかが成り立たない場合は処理を終了する。上記の両方が成り立つ場合は、鍵交換補助サーバ20の鍵交換部212は、ブラインドされた鍵~k←BKEM.Decap(dk, ~C)と署名σ7←CS.Sign(paramsCS, IDS, skS CS, msg7:=(sid, ek, ~k))とを生成する。
ステップS312:鍵交換補助サーバ20の鍵交換部212は、(sid, ~k, σ7)をレスポンダ端末12に送信すると共に、T':=T∪{IDi}として、セッションリスト中のTをT'に更新する。
ステップS313:レスポンダ端末12の鍵交換部113は、鍵交換補助サーバ20から(sid, ~k, σ7)を受信すると、以下により検証及びセッション鍵の生成を行う。
まず、レスポンダ端末12の鍵交換部113は、CS.Verify(paramsCS, IDS, pkS CS, msg7=(sid, ek, ~k), σ7)を実行して検証を行う。そして、レスポンダ端末12の鍵交換部113は、検証失敗を表す0が出力された場合は処理を終了する。
一方で、検証成功を表す1が出力された場合は、レスポンダ端末12の鍵交換部113は、鍵k←BKEM.Unblind(tPRF(H1(sski), H2(sski), ri, r'i), ~k)を計算した後、セッション鍵keyi η:=KDF('1', k, sid)と鍵検証値τi η:=KDF('2', k, sid)とを計算する。そして、レスポンダ端末12の鍵交換部113は、τI ξi ηであるかを検証し、この検証結果が正しければインスタンスの実行状態をacceptedにする。これにより、各U∈Gの間でセッション鍵keyが共有される。
[実施例2]
以降では、実施例2について説明する。実施例2では、ブラインド鍵カプセル化メカニズム(BKEM)と証明書不要署名方式(CS)と証明書不要プロキシ再暗号化方式(CPRE)とを用いてCAGKEを構成する場合について説明する。なお、実施例2では、実施例1と同様の構成要素については、その説明を省略する。
<準備>
CAGKEの構成について説明する前に、以下、証明書不要プロキシ再暗号化方式(CPRE)について説明する。
・証明書不要プロキシ再暗号化方式(CPRE)
証明書不要プロキシ再暗号化方式(CPRE)は、以下の10のアルゴリズム(CPRE.Setup, CPRE.PKeyExt, CPRE.SetSV, CPRE.SetSK, CPRE.SetPK, CPRE.RKGen, CPRE.Enc, CPRE.ReEnc, CPRE.Dec1, CPRE.Dec2)で構成される。
CPRE.Setup(1κ)→(params, msk):セキュリティパラメータ1κを入力として、公開パラメータparamsとマスター秘密鍵mskとを出力する確率的アルゴリズム。
CPRE.PKeyExt(params, msk, ID)→(ppkID, pskID):公開パラメータparamsとマスター秘密鍵mskとID IDとを入力として、部分公開鍵ppkIDと部分秘密鍵pskIDとを出力する確率的アルゴリズム。
CPRE.SetSV(params, ID)→svID:公開パラメータparamsとID IDとを入力として、秘密値svIDを出力する確率的アルゴリズム。
CPRE.SetSK(params, pskID, svID)→skID:公開パラメータparamsと部分秘密鍵pskIDと秘密値svIDとを入力として、秘密鍵skIDを出力する確率的アルゴリズム。
CPRE.SetPK(params, ppkID, svID)→pkID:公開パラメータparamsと部分公開鍵ppkIDと秘密値svIDとを入力として、公開鍵pkIDを出力する確率的アルゴリズム。
CPRE.RKGen(params, IDA, skA, pkA, IDB, pkB)→rkA→B:公開パラメータparamsと委任者(delegator)のID IDAと委任者の秘密鍵skAと委任者の公開鍵pkAと受任者(delegatee)のID IDBと受任者の公開鍵pkBとを入力として、再暗号化鍵rkA→Bを出力する確率的アルゴリズム。
CPRE.Enc(params, IDi, pki, m)→ci:公開パラメータparamsとレスポンダiのID IDiとレスポンダiの公開鍵pkiと平文mとを入力として、暗号文ciを出力する確率的アルゴリズム。
CPRE.ReEnc(params, rki→i', ci)→c'i': 公開パラメータparamsと再暗号化鍵rki→i'と暗号文ciとを入力として、暗号文c'i'を出力する確率的アルゴリズム。
CPRE.Dec1(params, ski, ci)→m/⊥:公開パラメータparamsとレスポンダiの秘密鍵skiと暗号文ciとを入力として、平文m又は失敗を示す⊥のいずれかを出力する確定的アルゴリズム。
CPRE.Dec2(params, ski, c'i)→m/⊥:公開パラメータparamsとレスポンダiの秘密鍵skiと暗号文c'iとを入力として、平文m又は失敗を示す⊥のいずれかを出力する確定的アルゴリズム。
証明書不要プロキシ再暗号化方式は、正当性として以下の2つの条件を満たす。
条件1:任意の公開パラメータparamsと任意のレスポンダiのID IDiと当該IDに対応する任意の秘密鍵ski及び公開鍵pkiと任意の平文mとに対して、
CPRE.Dec1(params, ski, CPRE.Enc(params, IDi, pki, m))=m
が成り立つ。
条件2:任意の公開パラメータparamsと任意の2つのレスポンダi及びi'のID IDi及びIDi'とこれらのIDにそれぞれ対応する任意の秘密鍵ski及びski'並びに公開鍵pki及びpki'と任意の再暗号化鍵rki→i'と任意の平文mとに対して、
CPRE.Dec2(params, ski', CPRE.ReEnc(params, rki→i', CPRE.Enc(params, IDi, pki, m)))=m
が成り立つ。
なお、証明書不要プロキシ再暗号化方式の詳細については、例えば、以下の参考文献5等を参照されたい。
[参考文献5]
Kang Yang, Jing Xu, and Zhenfeng Zhang: Certificateless Proxy Re-Encryption Without Pairings, Lecture Notes in Computer Science, 8565, 67-88.
<実施例2におけるCAGKE>
以上で説明したブラインド鍵カプセル化メカニズム(BKEM)と証明書不要署名方式(CS)と証明書不要プロキシ再暗号化方式(CPRE)とを用いて、実施例2におけるCAGKEのセットアップ処理、事前計算処理及び鍵交換処理を以下のように構成する。
≪実施例2におけるセットアップ処理≫
実施例2におけるセットアップ処理について、図7を参照しながら説明する。図7は、実施例2におけるセットアップ処理の一例を示すフローチャートである。
ステップS401:鍵生成サーバ30のセットアップ部311は、CAGKE.Setupを実行して、公開パラメータparamsとマスター秘密鍵mskとを生成する。すなわち、セットアップ部311は、CAGKE.Setup(1κ)を実行することで、以下により公開パラメータparamsとマスター秘密鍵mskとを生成する。
まず、セットアップ部311は、(paramsCS, mskCS)←CS.Setup(1κ)と(paramsCPRE, mskCPRE)←CPRE.Setup(1κ)とを実行する。そして、セットアップ部311は、msk=(mskCS, mskCPRE)、params=(paramsCS, paramsCPRE, tPRF, KDF, H1, H2, H3)とする。
なお、公開パラメータparamsは記憶部321に保存されると共に公開される。一方で、マスター秘密鍵mskは記憶部321に保存される。
ステップS402:次に、鍵生成サーバ30のセットアップ部311は、各通信端末10及び鍵交換補助サーバ20それぞれのIDを用いてCAGKE.PKeyExtを実行して、部分公開鍵ppkIDと部分秘密鍵pskIDとを生成する。すなわち、セットアップ部311は、各IDを用いてCAGKE.PKeyExt(params msk, ID)を実行することで、以下により各IDのそれぞれに対応する部分公開鍵ppkIDと部分秘密鍵pskIDとを生成する。
まず、セットアップ部311は、(ppkID CS, pskID CS)←CS.PKeyExt(paramsCS, mskCS, ID)と(ppkID CPRE, pskID CPRE)←CPRE.PKeyExt(paramsCPRE, mskCPRE, ID)とを実行する。そして、セットアップ部311は、ppkID=(ppkID CS, ppkID CPRE)、pskID=(pskID CS, pskID CPRE)とする。
なお、部分公開鍵ppkIDは記憶部321に保存されると共に公開される。一方で、部分秘密鍵pskIDは、この部分秘密鍵pskIDの生成に用いたIDに対応する通信端末10又は鍵交換補助サーバ20に対してセキュアな方法で送信される。
ステップS403:各通信端末10のセットアップ部111及び鍵交換補助サーバ20のセットアップ部211は、自身のIDを用いてCAGKE.SetSVを実行して、このIDに対応する秘密値svIDを生成する。すなわち、セットアップ部111及びセットアップ部211は、自身のIDを用いてCAGKE.SetSV(params, ID)を実行することで、以下により当該IDに対応する秘密値svIDを生成する。
まず、セットアップ部111及びセットアップ部211は、自身のIDを用いて、svID CS←CS.SetSV(paramsCS, ID)とsvID CPRE←CPRE.SetSV(paramsCPRE, ID)とを実行する。そして、セットアップ部111及びセットアップ部211は、svID=(svID CS, svID CPRE)とする。
なお、セットアップ部111により生成された秘密値svIDは記憶部121に保存される。一方で、セットアップ部211により生成された秘密値svIDは記憶部221に保存される。
ステップS404:次に、各通信端末10のセットアップ部111及び鍵交換補助サーバ20のセットアップ部211は、自身のIDを用いてCAGKE.SetSSKを実行して、このIDに対応する長期秘密鍵sskIDを生成する。すなわち、セットアップ部111及びセットアップ部211は、自身のIDを用いてCAGKE.SetSSK(params, pskID, svID)を実行して、以下により当該IDに対応する長期秘密鍵sskIDを生成する。
まず、セットアップ部111及びセットアップ部211は、自身のIDを用いて、skID CS←CS.SetSK(paramsCS, pskID CS, svID CS)とskID CPRE←CPRE.SetSK(paramsCPRE, pskID CPRE, svID CPRE)とを実行する。そして、セットアップ部111及びセットアップ部211は、sskID=(skID CS, skID CPRE)とする。
なお、セットアップ部111により生成された長期秘密鍵sskIDは記憶部121に保存される。一方で、セットアップ部211により生成され長期秘密鍵sskIDは記憶部221に保存される。
ステップS405:次に、各通信端末10のセットアップ部111及び鍵交換補助サーバ20のセットアップ部211は、自身のIDを用いてCAGKE.SetSPKを実行して、このIDに対応する長期公開鍵spkIDを生成する。すなわち、セットアップ部111及びセットアップ部211は、自身のIDを用いてCAGKE.SetSPK(params, ppkID, svID)を実行して、以下により当該IDに対応する長期公開鍵spkIDを生成する。
まず、セットアップ部111及びセットアップ部211は、自身のIDを用いて、pkID CS←CS.SetPK(paramsCS, ppkID CS, svID CS)とpkID CPRE←CPRE.SetPK(paramsCPRE, ppkID CPRE, svID CPRE)とを実行する。そして、セットアップ部111及びセットアップ部211は、spkID=(pkID CS, svID CPRE)とする。
なお、セットアップ部111により生成された長期公開鍵spkIDは記憶部121に保存される。一方で、セットアップ部211により生成され長期公開鍵spkIDは記憶部221に保存される。
≪実施例2における事前計算処理≫
実施例2における事前計算処理について、図8を参照しながら説明する。図8は、実施例2における事前計算処理の一例を示すシーケンス図である。
ステップS501:まず、各通信端末10の事前計算部112は、CAGKE.PreCompを実行して、precompU,Wを計算する。すなわち、事前計算部112は、自身のID IDUに対する長期秘密鍵sskU及び長期公開鍵spkUと、他の通信端末10の長期公開鍵{spkV}V∈W\{U}とを用いてCAGKE.PreComp(params, sskU, spkU, {spkV}V∈W\{U})を実行して、以下によりprecompU,Wを計算する。
まず、事前計算部112は、任意のV∈W\{U}に対して、rkU→V←CPRE.RKGen(paramsCPRE, IDU, skU CPRE, pkU CPRE, IDV, pkV CPRE)を実行する。そして、事前計算部112は、precompU,W={(IDV, rkU→V)}V∈W\{U}とする。
ステップS502:各通信端末10の事前計算部112は、事前計算結果であるprecompU,Wを鍵交換補助サーバ20に送信する。
ステップS503:鍵交換補助サーバ20は、各通信端末10から事前計算結果precompU,Wを受信すると、これらの事前計算結果precompU,Wを記憶部221に保存する。
≪実施例2における鍵交換処理≫
実施例2における鍵交換処理について、図9を参照しながら説明する。図9は、実施例2における鍵交換処理の一例を示すシーケンス図である。
ステップS601:イニシエータ端末11の鍵交換部113は、以下により各種情報の生成を行う。
まず、イニシエータ端末11の鍵交換部113は、セッション参加ユーザをpidI ξ={I, 1, …, n}とする。次に、イニシエータ端末11の鍵交換部113は、乱数RandI∈{0, 1}κを任意に生成した上で、メッセージmsg1:=(RandI, pid:= pidI ξ)として、署名σ1←CS.Sign(paramsCS, IDI, skI CS, msg1)を生成する。
ステップS602:イニシエータ端末11の鍵交換部113は、(RandI, pid, σ1)を鍵交換補助サーバ20に送信する。
ステップS603:鍵交換補助サーバ20の鍵交換部212は、イニシエータ端末11から(RandI, pid, σ1)を受信すると、以下により検証及び各種情報の生成を行う。
まず、鍵交換補助サーバ20の鍵交換部212は、CS.Verify(paramsCS, IDI, pkI CS, msg1=(RandI, pid), σ1)を実行して検証を行う。そして、鍵交換補助サーバ20の鍵交換部212は、検証失敗を表す0が出力された場合は処理を終了する。
一方で、検証成功を表す1が出力された場合は、鍵交換補助サーバ20の鍵交換部212は、rS∈Kspaceκとr'S∈{0, 1}κを一様ランダムに生成した上で、(ek, dk)←BKEM.KeyGen(tPRF(H1(sskS), H2(sskS,) rS, r'S))を計算する。次に、鍵交換補助サーバ20の鍵交換部212は、メッセージmsg2:=(RandI, pid, ek)として、署名σ2←CS.Sign(paramsCS, IDS, skS CS, msg2)を生成する。
そして、鍵交換補助サーバ20の鍵交換部212は、一時秘密鍵としてeskS ζ:=(rS, r'S)をセットし、(sid, IDI, pid, eskS ζ, T=φ)をセッションリストとして記憶部221に保存する。
ステップS604:鍵交換補助サーバ20の鍵交換部212は、(ek, σ2)をイニシエータ端末11に送信する。
ステップS605:イニシエータ端末11の鍵交換部113は、鍵交換補助サーバ20から(ek, σ2)を受信すると、以下により検証及びセッション鍵を含む各種情報の生成を行う。
まず、イニシエータ端末11の鍵交換部113は、CS.Verify(paramsCS, IDS, pkS CS, msg2=(RandI, pid, ek), σ2)を実行して検証を行う。そして、イニシエータ端末11の鍵交換部113は、検証失敗を表す0が出力された場合は処理を終了する。
一方で、検証成功を表す1が出力された場合は、イニシエータ端末11の鍵交換部113は、sid:=H3(IDI, RandI, pidI ξ, ek)を計算する。また、イニシエータ端末11の鍵交換部113は、rI∈Kspaceκとr'I∈{0, 1}κを一様ランダムに生成した上で、一時秘密鍵としてeskI ξ:=(rI, r'I)をセットする。
次に、イニシエータ端末11の鍵交換部113は、(C, k)←BKEM.Encap(ek, tPRF(H1(sskI), H2(sskI,) rI, r'I))を計算した後、セッション鍵keyI ξ:=KDF('1', k, sid)と鍵検証値τI ξ:=KDF('2', k, sid)とを計算する。そして、イニシエータ端末11の鍵交換部113は、メッセージmsg3:=(C, ek, τI ξ, sid, pid)として、暗号文cI←CPRE.Enc(paramsCPRE, IDI, pkI CPRE, msg3)と署名σ4←CS.Sign(paramsCS, IDI, skI CS, msg4:=(cI, sid))とを生成する。
ステップS606:イニシエータ端末11の鍵交換部113は、(sid, cI, σ4)を鍵交換補助サーバ20に送信し、インスタンスの実行状態をacceptedにする。
なお、上記のステップS605ではイニシエータIのみが復号できる暗号文を生成しているが、これに限られず、例えば、いずれかのレスポンダiが復号できる暗号文ciを生成してもよい。
ステップS607:鍵交換補助サーバ20の鍵交換部212は、イニシエータ端末11から(sid, cI, σ4)を受信すると、以下により検証及び各種情報の生成を行う。
まず、鍵交換補助サーバ20の鍵交換部212は、CS.Verify(paramsCS, IDI, pkI CS, msg4=(cI, sid), σ4)を実行して検証を行う。そして、鍵交換補助サーバ20の鍵交換部212は、検証失敗を表す0が出力された場合は処理を終了する。
一方で、検証成功を表す1が出力された場合は、鍵交換補助サーバ20の鍵交換部212は、レスポンダi∈G\{I}に対して、記憶部221からprecompI,i(つまり、(IDi, rkI→i))を取り出して、再暗号化c'i←CPRE.ReEnc(paramsCPRE, rkI→i, cI)と署名σ5←CS.Sign(paramsCS, IDS, skS CS, msg5:=(IDI, sid, c'i))とを生成する。
ステップS608:鍵交換補助サーバ20の鍵交換部212は、レスポンダiのレスポンダ端末12がオンラインになった場合、(IDI, sid, c'i, σ5)を当該レスポンダ端末12に送信する。
ステップS609:レスポンダ端末12の鍵交換部113は、(IDI, sid, c'i, σ5)を受信すると、以下により検証及び各種情報の生成を行う。
まず、レスポンダ端末12の鍵交換部113は、CS.Verify(paramsCS, IDS, pkS CS, msg5=(IDI, sid, c'i), σ5)を実行して検証を行う。そして、レスポンダ端末12の鍵交換部113は、検証失敗を表す0が出力された場合は処理を終了する。
一方で、検証成功を表す1が出力された場合は、レスポンダ端末12の鍵交換部113は、(C, ek, τI ξ, sid, pid)←CPRE.Dec2(paramsCPRE, ski CPRE, c'i)により暗号文c'iを復号する。次に、レスポンダ端末12の鍵交換部113は、ri∈Kspaceκとr'i∈{0, 1}κを一様ランダムに生成した上で、ブラインドされた暗号文~C←BKEM.Blind(ek, C, tPRF(H1(sski), H2(sski), ri, r'i))を計算する。そして、レスポンダ端末12の鍵交換部113は、署名σ6←CS.Sign(paramsCS, IDi, ski CS, msg6:=(sid, ek, ~C))を生成する。
ステップS610:レスポンダ端末12の鍵交換部113は、(sid, ~C, σ6)を鍵交換補助サーバ20に送信する。
ステップS611:鍵交換補助サーバ20の鍵交換部212は、レスポンダ端末12から(sid, ~C, σ6)を受信すると、以下により検証、各種情報の生成及びセッションリストの更新を行う。
まず、鍵交換補助サーバ20の鍵交換部212は、sidをキーとしてセッションリストから一時秘密鍵eskS ζ=(rS, r'S)を取り出し、(ek, dk)←BKEM.KeyGen(tPRF(H1(sskS), H2(sskS,) rS, r'S))を計算する。次に、鍵交換補助サーバ20の鍵交換部212は、CS.Verify(paramsCS, IDi, pki CS, msg6=(sid, ek, ~C), σ6)を実行して検証を行う。そして、鍵交換補助サーバ20の鍵交換部212は、検証失敗を表す0が出力された場合は処理を終了する。
一方で、検証成功を表す1が出力された場合は、鍵交換補助サーバ20の鍵交換部212は、「IDi∈pid」及び「IDi∈Tでない」の両方が成り立つかを検証し、いずれかが成り立たない場合は処理を終了する。上記の両方が成り立つ場合は、鍵交換補助サーバ20の鍵交換部212は、ブラインドされた鍵~k←BKEM.Decap(dk, ~C)と署名σ7←CS.Sign(paramsCS, IDS, skS CS, msg7:=(sid, ek, ~k))とを生成する。
ステップS612:鍵交換補助サーバ20の鍵交換部212は、(sid, ~k, σ7)をレスポンダ端末12に送信すると共に、T':=T∪{IDi}として、セッションリスト中のTをT'に更新する。
ステップS613:レスポンダ端末12の鍵交換部113は、鍵交換補助サーバ20から(sid, ~k, σ7)を受信すると、以下により検証及びセッション鍵の生成を行う。
まず、レスポンダ端末12の鍵交換部113は、CS.Verify(paramsCS, IDS, pkS CS, msg7=(sid, ek, ~k), σ7)を実行して検証を行う。そして、レスポンダ端末12の鍵交換部113は、検証失敗を表す0が出力された場合は処理を終了する。
一方で、検証成功を表す1が出力された場合は、レスポンダ端末12の鍵交換部113は、鍵k←BKEM.Unblind(tPRF(H1(sski), H2(sski), ri, r'i), ~k)を計算した後、セッション鍵keyi η:=KDF('1', k, sid)と鍵検証値τi η:=KDF('2', k, sid)とを計算する。そして、レスポンダ端末12の鍵交換部113は、τI ξi ηであるかを検証し、この検証結果が正しければインスタンスの実行状態をacceptedにする。これにより、各U∈Gの間でセッション鍵keyが共有される。
<まとめ>
以上のように、本実施形態に係る鍵交換システム1は、非同期のIDベース多者間鍵交換プロトコルを実現することができる。このとき、本実施形態に係る鍵交換システム1では、プロキシ再暗号化付き証明書不要サインクリプション方式又は証明書不要プロキシ再暗号化方式を用いて、非同期のIDベース多者間鍵交換プロトコルを実現する。これにより、例えば、鍵交換補助サーバ20と鍵生成サーバ30とが同一の事業者によって運営されているような場合であっても、グループ鍵(セッション鍵)を当該事業者に知られることなく、エンドツーエンドの暗号化を実現することが可能となる。
また、本実施形態に係る鍵交換システム1では、各ユーザは再暗号化鍵を事前に計算した上で鍵交換補助サーバ20に登録しておく。そして、本実施形態に係る鍵交換システム1は、グループ鍵生成時に、鍵交換補助サーバ20は署名暗号化された鍵(グループ鍵を生成するための鍵)を再暗号化して各ユーザ(各レスポンダ)に配布する。これにより、各ユーザは、事前計算を1回行う必要があるが、グループ鍵生成時の計算及び通信コストはグループ内のユーザ数には依存しなくなる。したがって、グループの規模に制限なく、効率よく鍵共有が可能になる。
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更、既知の技術との組み合わせ等が可能である。
1 鍵交換システム
10 通信端末
11 イニシエータ端末
12 レスポンダ端末
20 鍵交換補助サーバ
30 鍵生成サーバ
111 セットアップ部
112 事前計算部
113 鍵交換部
121 記憶部
211 セットアップ部
212 鍵交換部
221 記憶部
311 セットアップ部
321 記憶部
N 通信ネットワーク

Claims (7)

  1. 第1の端末と、前記第1の端末と同一グループに属する1以上の第2の端末と、前記第1の端末と前記第2の端末との間でグループ鍵の交換を補助する補助サーバとが含まれる鍵交換システムであって、
    前記第1の端末は、
    前記補助サーバで生成された公開鍵を用いて、前記グループ鍵を生成するための生成鍵と該生成鍵を暗号化した暗号文とを生成する第1の生成手段と、
    前記生成鍵を用いて、前記グループ鍵を生成する第2の生成手段と、
    前記暗号文を暗号化又はサインクリプションした情報を生成する第3の生成手段と、を有し、
    前記補助サーバは、
    前記第1の端末で事前に計算された事前計算鍵を用いて、前記第3の生成手段で生成された情報を再暗号化した情報を生成する第4の生成手段、を有し、
    前記第2の端末は、
    前記第4の生成手段で生成された情報を復号して前記暗号文を生成する第5の生成手段と、
    前記暗号文を前記補助サーバで復号して得られた前記生成鍵を用いて、前記グループ鍵を生成する第6の生成手段と、
    を有することを特徴とする鍵交換システム。
  2. 前記第3の生成手段は、
    証明書不要プロキシ再暗号化方式によって前記暗号文を暗号化又はプロキシ再暗号化付き証明書不要サインクリプション方式によって前記暗号文をサインクリプションした情報を生成し、
    前記第4の生成手段は、
    前記事前計算鍵を用いて、前記証明書不要プロキシ再暗号化方式によって前記情報を再暗号化又は前記プロキシ再暗号化付き証明書不要サインクリプション方式によって前記情報を再暗号化した情報を生成する、ことを特徴とする請求項1に記載の鍵交換システム。
  3. 前記第1の端末は、
    前記第1の端末のIDに対応する秘密鍵及び公開鍵と、前記1以上の第2の端末の各々のIDに対応する公開鍵とを用いて、前記第2の端末の各々に対応する事前計算鍵を計算する事前計算手段を有する、ことを特徴とする請求項1又は2に記載の鍵交換システム。
  4. 前記第4の生成手段は、
    前記事前計算手段で計算された事前計算鍵の各々を用いて、前記事前計算鍵に対応する第2の端末で復号可能なように、前記第3の生成手段で生成された情報を再暗号化した情報を生成する、ことを特徴とする請求項3に記載の鍵交換システム。
  5. 第1の端末と、前記第1の端末と同一グループに属する1以上の第2の端末との間でグループ鍵の交換を補助する情報処理装置であって、
    前記グループ鍵を生成するための生成鍵の暗号文を暗号化又はサインクリプションした第1の情報を前記第1の端末から受信すると、前記第1の端末で事前に計算された事前計算鍵を用いて、前記第1の情報を再暗号化した第2の情報を生成する第1の生成手段と
    前記第1の生成手段で生成された第2の情報が前記第2の端末で復号して得られた前記第1の情報を受信すると、前記第1の情報を復号して生成鍵を生成する第2の生成手段と、
    前記第2の生成手段で生成された生成鍵を前記第2の端末に送信する送信手段と、
    を有することを特徴とする情報処理装置。
  6. 第1の端末と、前記第1の端末と同一グループに属する1以上の第2の端末と、前記第1の端末と前記第2の端末との間でグループ鍵の交換を補助する補助サーバとが含まれる鍵交換システムにおける鍵交換方法であって、
    前記第1の端末が、
    前記補助サーバで生成された公開鍵を用いて、前記グループ鍵を生成するための生成鍵と該生成鍵を暗号化した暗号文とを生成する第1の生成手順と、
    前記生成鍵を用いて、前記グループ鍵を生成する第2の生成手順と、
    前記暗号文を暗号化又はサインクリプションした情報を生成する第3の生成手順と、を実行し、
    前記補助サーバが、
    前記第1の端末で事前に計算された事前計算鍵を用いて、前記第3の生成手順で生成された情報を再暗号化した情報を生成する第4の生成手順、を実行し、
    前記第2の端末が、
    前記第4の生成手順で生成された情報を復号して前記暗号文を生成する第5の生成手順と、
    前記暗号文を前記補助サーバで復号して得られた前記生成鍵を用いて、前記グループ鍵を生成する第6の生成手順と、
    を実行することを特徴とする鍵交換方法。
  7. コンピュータを、請求項1乃至4の何れか一項に記載の鍵交換システムに含まれる第1の端末、第2の端末又は補助サーバにおける各手段として機能させるためのプログラム。
JP2020003857A 2020-01-14 2020-01-14 鍵交換システム、情報処理装置、鍵交換方法及びプログラム Active JP7292648B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2020003857A JP7292648B2 (ja) 2020-01-14 2020-01-14 鍵交換システム、情報処理装置、鍵交換方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020003857A JP7292648B2 (ja) 2020-01-14 2020-01-14 鍵交換システム、情報処理装置、鍵交換方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2021111910A true JP2021111910A (ja) 2021-08-02
JP7292648B2 JP7292648B2 (ja) 2023-06-19

Family

ID=77060311

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020003857A Active JP7292648B2 (ja) 2020-01-14 2020-01-14 鍵交換システム、情報処理装置、鍵交換方法及びプログラム

Country Status (1)

Country Link
JP (1) JP7292648B2 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005244534A (ja) * 2004-02-26 2005-09-08 Hitachi Ltd 暗号通信装置および暗号通信方法
EP2892177A1 (en) * 2014-01-03 2015-07-08 Thomson Licensing Proxy re-encryption methods and devices
JP2019102970A (ja) * 2017-12-01 2019-06-24 日本電信電話株式会社 データ共有サーバ装置、鍵生成サーバ装置、通信端末、プログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005244534A (ja) * 2004-02-26 2005-09-08 Hitachi Ltd 暗号通信装置および暗号通信方法
EP2892177A1 (en) * 2014-01-03 2015-07-08 Thomson Licensing Proxy re-encryption methods and devices
JP2019102970A (ja) * 2017-12-01 2019-06-24 日本電信電話株式会社 データ共有サーバ装置、鍵生成サーバ装置、通信端末、プログラム

Also Published As

Publication number Publication date
JP7292648B2 (ja) 2023-06-19

Similar Documents

Publication Publication Date Title
CN108352015B (zh) 用于基于区块链的系统结合钱包管理系统的安全多方防遗失存储和加密密钥转移
US10903991B1 (en) Systems and methods for generating signatures
JP5349619B2 (ja) アイデンティティベースの認証鍵共有プロトコル
KR101574030B1 (ko) 안전한 그룹 메시징
EP2637350B1 (en) Key escrow
US8769259B2 (en) Methods and apparatuses for secure information sharing in social networks using randomly-generated keys
CN111404950B (zh) 一种基于区块链网络的信息共享方法、装置和相关设备
JP6125523B2 (ja) グループメンバーによるグループシークレットの単純化された管理
US20150326392A1 (en) Matrix-based cryptosystem
JP6534777B2 (ja) 端末装置、鍵配送管理装置、サーバ・クライアントシステム、通信方法、プログラム
Liu et al. Improved group off-the-record messaging
CN110493272B (zh) 使用多重密钥的通信方法和通信系统
JP2023552263A (ja) 秘密分散の再分配
CN107104938B (zh) 建立安全的数据交换通道方法、客户端及计算机可读介质
ul Haq et al. A survey of authenticated key agreement protocols for multi-server architecture
JP2022107460A (ja) 鍵交換システム、通信端末、情報処理装置、鍵交換方法、及びプログラム
CN110266483B (zh) 基于非对称密钥池对和qkd的量子通信服务站密钥协商方法、系统、设备
CN112003690A (zh) 密码服务系统、方法及装置
JP7292648B2 (ja) 鍵交換システム、情報処理装置、鍵交換方法及びプログラム
WO2022239129A1 (ja) 鍵交換システム、機器、鍵交換方法、及びプログラム
CN110321722B (zh) Dna序列相似率安全计算方法及系统
CN114915409A (zh) 后量子公钥的盲化技术
JP7377495B2 (ja) 暗号システム及び方法
JP7254296B2 (ja) 鍵交換システム、情報処理装置、鍵交換方法及びプログラム
WO2022244150A1 (ja) 鍵交換システム、端末、サーバ、鍵交換方法、及びプログラム

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7426

Effective date: 20200115

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20200115

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220426

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230314

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230510

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230523

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230529

R150 Certificate of patent or registration of utility model

Ref document number: 7292648

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150