IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電信電話株式会社の特許一覧 ▶ 国立大学法人茨城大学の特許一覧

<>
  • 特許-暗号システム及び方法 図1
  • 特許-暗号システム及び方法 図2
  • 特許-暗号システム及び方法 図3
  • 特許-暗号システム及び方法 図4
  • 特許-暗号システム及び方法 図5
  • 特許-暗号システム及び方法 図6
  • 特許-暗号システム及び方法 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-01
(45)【発行日】2023-11-10
(54)【発明の名称】暗号システム及び方法
(51)【国際特許分類】
   G09C 1/00 20060101AFI20231102BHJP
【FI】
G09C1/00 640D
G09C1/00 620Z
【請求項の数】 4
(21)【出願番号】P 2020101199
(22)【出願日】2020-06-10
(65)【公開番号】P2021196428
(43)【公開日】2021-12-27
【審査請求日】2022-08-12
【新規性喪失の例外の表示】特許法第30条第2項適用 2020年1月28日~2020年1月31日(公知日:2020年1月21日)開催の2020年暗号と情報セキュリティシンポジウム(SCIS2020)にて公開
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(73)【特許権者】
【識別番号】504203572
【氏名又は名称】国立大学法人茨城大学
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100124844
【弁理士】
【氏名又は名称】石原 隆治
(72)【発明者】
【氏名】岡野 裕樹
(72)【発明者】
【氏名】小林 鉄太郎
(72)【発明者】
【氏名】村上 啓造
(72)【発明者】
【氏名】中林 美郷
(72)【発明者】
【氏名】米山 一樹
【審査官】金沢 史明
(56)【参考文献】
【文献】中国特許出願公開第103905189(CN,A)
【文献】中国特許出願公開第103634788(CN,A)
【文献】特開2019-102970(JP,A)
【文献】特開2012-150378(JP,A)
【文献】特開2012-249054(JP,A)
【文献】特開2014-225770(JP,A)
【文献】特開2019-029751(JP,A)
【文献】特開2006-208967(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
H04L 9/00- 9/40
(57)【特許請求の範囲】
【請求項1】
複数のユーザ端末と、鍵生成センタと、サーバとが含まれ、プロキシ再暗号化付き証明書不要サインクリプション方式を実現する暗号システムであって、
前記複数のユーザ端末の各々は、
前記プロキシ再暗号化付き証明書不要サインクリプション方式のユーザ公開鍵生成アルゴリズムにより、前記鍵生成センタで生成された部分公開鍵を用いて、自身の署名が含まれるユーザ公開鍵を生成する公開鍵生成手段と、
前記プロキシ再暗号化付き証明書不要サインクリプション方式の部分秘密鍵生成アルゴリズムにより、前記鍵生成センタで生成された部分秘密鍵を用いて、ユーザ秘密鍵を生成する秘密鍵生成手段と、
前記プロキシ再暗号化付き証明書不要サインクリプション方式の暗号化アルゴリズムにより、他のユーザ端末のユーザ公開鍵に含まれる署名の検証を行い、前記検証に成功した場合、前記他のユーザ端末のユーザ公開鍵と自身のユーザ秘密鍵とを用いて、メッセージを暗号化し、前記他のユーザ端末が復号権限を持つ暗号文を生成する暗号化手段と、
を有し、
前記サーバは、
前記プロキシ再暗号化付き証明書不要サインクリプション方式の再暗号化アルゴリズムにより、第1のユーザ端末が復号権限を持つ暗号文の復号権限を第2のユーザ端末に委任するための再暗号化鍵と、前記第1のユーザ端末が復号権限を持つ暗号文とを用いて、前記第1のユーザ端末が復号権限を持つ暗号文のフォーマットの正しさの検証を行い、前記検証に成功した場合、復号権限が前記第2のユーザ端末となるように、前記第1のユーザ端末が復号権限を持つ暗号文を再暗号化する再暗号化手段、
を有し、
前記復号権限は、前記プロキシ再暗号化付き証明書不要サインクリプション方式の復号アルゴリズムによって復号可能であることを表す権限であり、
前記公開鍵生成手段は、
modified Schnorr署名により、前記ユーザ公開鍵に対する前記署名を生成する、ことを特徴とする暗号システム。
【請求項2】
記複数のユーザ端末の各々は、
前記プロキシ再暗号化付き証明書不要サインクリプション方式の再サインクリプション鍵生成アルゴリズムにより、復号権限の委任先となる他のユーザ端末のユーザ公開鍵に含まれる署名の検証を行い、前記検証に成功した場合、自身のユーザ公開鍵と自身のユーザ秘密鍵と前記他のユーザ端末のユーザ公開鍵とを用いて、自身が復号権限を持つ暗号文の復号権限を前記他のユーザ端末に委任するための再暗号化鍵を生成する再暗号化鍵生成手段を有する、ことを特徴とする請求項1に記載の暗号システム。
【請求項3】
前記複数のユーザ端末の各々は、
前記プロキシ再暗号化付き証明書不要サインクリプション方式の復号アルゴリズムにより、暗号化を行った他のユーザ端末のユーザ公開鍵に含まれる署名の検証を行い、前記検証に成功した場合、前記他のユーザ端末のユーザ公開鍵と、自身のユーザ秘密鍵とを用いて、前記他のユーザ端末が暗号化を行った暗号文であって、かつ、自身が復号権限を持つ暗号文を復号する復号手段を有する、ことを特徴とする請求項1又は2に記載の暗号システム。
【請求項4】
複数のユーザ端末と、鍵生成センタと、サーバとが含まれ、プロキシ再暗号化付き証明書不要サインクリプション方式を実現する暗号システムに用いられる方法であって、
前記複数のユーザ端末の各々が、
前記プロキシ再暗号化付き証明書不要サインクリプション方式のユーザ公開鍵生成アルゴリズムにより、前記鍵生成センタで生成された部分公開鍵を用いて、自身の署名が含まれるユーザ公開鍵を生成する公開鍵生成手順と、
前記プロキシ再暗号化付き証明書不要サインクリプション方式の部分秘密鍵生成アルゴリズムにより、前記鍵生成センタで生成された部分秘密鍵を用いて、ユーザ秘密鍵を生成する秘密鍵生成手順と、
前記プロキシ再暗号化付き証明書不要サインクリプション方式の暗号化アルゴリズムにより、他のユーザ端末のユーザ公開鍵に含まれる署名の検証を行い、前記検証に成功した場合、前記他のユーザ端末のユーザ公開鍵と自身のユーザ秘密鍵とを用いて、メッセージを暗号化し、前記他のユーザ端末が復号権限を持つ暗号文を生成する暗号化手順と、
を実行し、
前記サーバが、
前記プロキシ再暗号化付き証明書不要サインクリプション方式の再暗号化アルゴリズムにより、第1のユーザ端末が復号権限を持つ暗号文の復号権限を第2のユーザ端末に委任するための再暗号化鍵と、前記第1のユーザ端末が復号権限を持つ暗号文とを用いて、前記第1のユーザ端末が復号権限を持つ暗号文のフォーマットの正しさの検証を行い、前記検証に成功した場合、復号権限が前記第2のユーザ端末となるように、前記第1のユーザ端末が復号権限を持つ暗号文を再暗号化する再暗号化手順、
を実行し、
前記復号権限は、前記プロキシ再暗号化付き証明書不要サインクリプション方式の復号アルゴリズムによって復号可能であることを表す権限であり、
前記公開鍵生成手順は、
modified Schnorr署名により、前記ユーザ公開鍵に対する前記署名を生成する、ことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号システム及びに関する。

【背景技術】
【0002】
暗号化ファイルの復号権限を他のユーザに委任することが可能な暗号方式としてプロキシ再暗号化方式が知られている。この暗号方式を利用することで、例えば、ユーザAの公開鍵で暗号化されたファイルがファイルサーバに保存されている場合に、ユーザAは自身の秘密鍵と別のユーザBの鍵とを使用して再暗号化鍵を生成してファイルサーバに渡すことで、ファイルサーバにファイルの中身を知られることなく、ユーザAのみが復号できる暗号化ファイルをユーザBのみが復号できる暗号化ファイルに変換することが可能となる。
【0003】
また、プロキシ再暗号化方式に加えて暗号化ファイルとその暗号化を行ったユーザとの紐づけを復号者に検証できるようにした暗号方式としてプロキシ再暗号化付きサインクリプションが知られている。この暗号方式を利用することで、復号権限の委任が可能になりながらも、メッセージの秘匿性と完全性を実現することができる。
【0004】
プロキシ再暗号化方式は公開鍵暗号方式の一種であるため、一般に、公開鍵とユーザとの紐づけを行う公開鍵基盤(PKI:Public Key Infrastructure)等が必要となる。PKIでは証明書の失効や証明書そのものの検証等が必須であるため、公開鍵暗号方式には、そのための通信や計算処理を各ユーザで実行する必要があるという問題点がある。この問題点を解消する暗号方式として、任意の文字列(例えば、ユーザID等)を公開鍵のように利用することが可能なIDベース暗号方式が知られている。しかしながら、IDベース暗号方式には、鍵生成センタ(KGC:Key Generation Center)による鍵エスクロー問題が存在する。
【0005】
公開鍵暗号方式とIDベース暗号方式それぞれのデメリットを補う暗号方式として証明書不要暗号方式が知られており、例えば、非特許文献1ではプロキシ再暗号化付き証明書不要サインクリプション方式(Certificateless Signcryption with proxy re-encryption)が提案されている。
【先行技術文献】
【非特許文献】
【0006】
【文献】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: Modelling, Analysis, Design and Management, Springer, vol. 70(4), pages 491-510, April.
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、従来のプロキシ再暗号化付き証明書不要サインクリプション方式では公開鍵の検証が不十分なため、公開鍵の不正な入れ替えによるなりすましが発生する可能性がある。
【0008】
また、従来のプロキシ再暗号化付き証明書不要サインクリプション方式では不正な再暗号化リクエストがプロキシ側に流れてきても、当該再暗号化リクエストの検証は行われない。このため、例えば、IDベース暗号方式を利用した多者間鍵交換技術の1つである非同期型ID-MKD(Identity-Based Dynamic Multi-Cast Key Distribution)に対して従来のプロキシ再暗号化付き証明書不要サインクリプション方式を適用した場合、鍵交換確立時に、攻撃者によって不要なパケットが大量にユーザに流れて、ユーザ端末に多大な処理負荷が掛かる恐れがある。すなわち、DoS(Denial of Services attack)攻撃が発生する可能性がある。
【0009】
本発明の一実施形態は、上記の点に鑑みてなされたもので、安全なプロキシ再暗号化付き証明書不要サインクリプション方式を実現することを目的とする。
【課題を解決するための手段】
【0010】
上記目的を達成するため、一実施形態に係る暗号システムは、複数のユーザ端末と、鍵生成センタとが含まれる暗号システムであって、前記複数のユーザ端末の各々は、前記鍵生成センタで生成された部分公開鍵を用いて、自身の署名が含まれるユーザ公開鍵を生成する公開鍵生成手段と、前記鍵生成センタで生成された部分秘密鍵を用いて、ユーザ秘密鍵を生成する秘密鍵生成手段と、他のユーザ端末のユーザ公開鍵に含まれる署名の検証を行い、前記検証に成功した場合、前記他のユーザ端末のユーザ公開鍵と自身のユーザ秘密鍵とを用いて、メッセージを暗号化し、前記他のユーザ端末が復号権限を持つ暗号文を生成する暗号化手段と、を有することを特徴とする。
【発明の効果】
【0011】
安全なプロキシ再暗号化付き証明書不要サインクリプション方式を実現することができる。
【図面の簡単な説明】
【0012】
図1】本実施形態に係る暗号システムの全体構成の一例を示す図である。
図2】コンピュータのハードウェア構成の一例を示す図である。
図3】本実施形態に係る暗号システムの機能構成の一例を示す図である。
図4】セットアップ処理及び鍵生成処理の一例を示すフローチャートである。
図5】サインクリプション処理の一例を示すシーケンス図である。
図6】再サインクリプション処理の一例を示すシーケンス図である。
図7】デサインクリプション処理の一例を示すシーケンス図である。
【発明を実施するための形態】
【0013】
以下、本発明の一実施形態について説明する。本実施形態では、安全なプロキシ再暗号化付き証明書不要サインクリプション方式を実現する暗号システム1について説明する。なお、本実施形態では、一例として、プロキシ再暗号化付き証明書不要サインクリプション方式を非同期型ID-MKDに対して適用する場合を想定して説明する。ただし、これは一例であって、本実施形態に係る暗号システム1によって実現されるプロキシ再暗号化付き証明書不要サインクリプション方式は、非同期型ID-MKDに対して適用する場合に限定されず、種々の多者間鍵交換技術又は多者間鍵交換プロトコルに対して適用可能である。
【0014】
<全体構成>
まず、本実施形態に係る暗号システム1の全体構成について、図1を参照しながら説明する。図1は、本実施形態に係る暗号システム1の全体構成の一例を示す図である。
【0015】
図1に示すように、本実施形態に係る暗号システム1には、複数のユーザ端末10と、サーバ20と、KGC30とが含まれる。各ユーザ端末10、サーバ20及びKGC30は、例えば、インターネット等の通信ネットワーク40を介して通信可能に接続される。
【0016】
ユーザ端末10は、ユーザ(例えば、多者間鍵交換プロトコルによって鍵交換を行うユーザ等)が利用する各種端末である。ユーザ端末10としては、例えば、PC(パーソナルコンピュータ)やスマートフォン、タブレット端末、携帯電話機等を用いることが可能である。ただし、これらに限られず、ユーザ端末10としては、通信可能な任意の端末を用いることが可能である。
【0017】
なお、本実施形態では、一例として、暗号システム1には3台のユーザ端末10が含まれるものとして、それぞれユーザ端末10A、ユーザ端末10B及びユーザ端末10Cとする。また、ユーザ端末10Aを利用するユーザを「ユーザA」として、IDベース暗号方式に利用されるIDを「IDA」又は単に「A」と表す。同様に、ユーザ端末10Bを利用するユーザを「ユーザB」として、そのIDを「IDB」又は単に「B」と表す。同様に、ユーザ端末10Cを利用するユーザを「ユーザB」として、そのIDを「IDC」又は単に「C」と表す。一方で、任意のIDは「ID」等と表す。
【0018】
IDベース暗号方式に利用されるIDとしては任意の識別情報を使用することができるが、例えば、ユーザのメールアドレス、SNS(Social Networking Service)のユーザID、電話番号、住所、氏名、マイナンバー、DNA等の生体情報、IP(Internet Protocol)アドレス、MAC(Media Access Control)アドレス、URL(Uniform Resource Locator)、クレジットカード番号、機器や装置の製造固有番号等を使用することが可能である。
【0019】
サーバ20は、再サインクリプション鍵を用いて、サインクリプションを再サインクリプションする装置又はシステムである。すなわち、サーバ20は、プロキシ再暗号化付き証明書不要サインクリプション方式におけるプロキシとして機能する装置又はシステムである。なお、非同期型の多者間鍵交換プロトコルに適用される場合、サーバ20は、鍵交換に関する補助的な処理を実行するサーバ(いわゆる鍵交換補助サーバ)であってもよい。
【0020】
KGC30は、公開パラメータやマスター秘密鍵を生成したり、IDベース暗号方式に利用されるIDに対応する部分公開鍵や部分秘密鍵を生成したりする装置又はシステムである。すなわち、KGC30は、鍵生成センタとして機能する装置又はシステムである。
【0021】
なお、図1に示す暗号システム1の構成は一例であって、他の構成であってもよい。例えば、サーバ20とKGC30とは別体である必要はなく、サーバ20とKGC30とが一体で構成されていてもよい。
【0022】
<ハードウェア構成>
次に、本実施形態に係る暗号システム1に含まれるユーザ端末10、サーバ20及びKGC30のハードウェア構成について説明する。ユーザ端末10、サーバ20及びKGC30は一般的なコンピュータ(情報処理装置)のハードウェア構成により実現可能であり、例えば、図2に示すコンピュータ500のハードウェア構成により実現可能である。図2は、コンピュータ500のハードウェア構成の一例を示す図である。
【0023】
図2に示すコンピュータ500は、ハードウェアとして、入力装置501と、表示装置502と、外部I/F503と、通信I/F504と、プロセッサ505と、メモリ装置506とを有する。これら各ハードウェアは、それぞれがバス507を介して通信可能に接続されている。
【0024】
入力装置501は、例えば、キーボードやマウス、タッチパネル等である。表示装置502は、例えば、ディスプレイ等である。なお、コンピュータ500は、入力装置501及び表示装置502のうちの少なくとも一方を有していなくてもよい。
【0025】
外部I/F503は、外部装置とのインタフェースである。外部装置には、記録媒体503a等がある。なお、記録媒体503aとしては、例えば、CD(Compact Disc)、DVD(Digital Versatile Disc)、SDメモリカード(Secure Digital memory card)、USB(Universal Serial Bus)メモリカード等が挙げられる。
【0026】
通信I/F504は、通信ネットワーク40に接続するためのインタフェースである。プロセッサ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)、フラッシュメモリ等の各種記憶装置である。
【0027】
本実施形態に係る暗号システム1に含まれるユーザ端末10、サーバ20及びKGC30は、例えば、図2に示すコンピュータ500のハードウェア構成を有することにより、後述する各種処理を実現することができる。なお、図2に示すコンピュータ500のハードウェア構成は一例であって、コンピュータ500は、他のハードウェア構成であってもよい。例えば、コンピュータ500は、複数のプロセッサ505を有していてもよいし、複数のメモリ装置506を有していてもよい。
【0028】
また、本実施形態に係る暗号システム1に含まれるユーザ端末10、サーバ20及びKGC30は、例えば、複数のコンピュータ500のハードウェア構成により実現されていてもよい。
【0029】
<プロキシ再暗号化付き証明書不要サインクリプション方式の構成>
本実施形態では、プロキシ再暗号化付き証明書不要サインクリプション方式をCPRS(Certificateless Proxy Re-Signcryption)と表すものとする。CPRSは、一般に、以下の10個のアルゴリズム(CPRS.Setup, CPRS.PKeyExt, CPRS.SetSV, CPRS.SetSK, CPRS.SetPK, CPRS.RKGen, CPRS.Signcrypt, CPRS.ReSigncrypt, CPRS.DeSigncrypt1, CPRS.DeSigncrypt2)で構成される。なお、以降では、一例として、復号権限を持つユーザをユーザBとしてユーザAがメッセージ(平文)を暗号化し、ユーザBがその復号をユーザCに委任するものとする。例えば、多者間鍵交換プロトコルではユーザAはイニシエータ(又はグループオーナー等)、ユーザB及びCはレスポンダに相当する。
【0030】
・CPRS.Setup(1κ)→(params, msk):セキュリティパラメータ1κを入力として、公開パラメータparamsとマスター秘密鍵mskとを出力する確率的アルゴリズム。
【0031】
・CPRS.PKeyExt(params, msk, ID)→(ppkID, pskID):公開パラメータparamsとマスター秘密鍵mskとID IDとを入力として、部分公開鍵ppkIDと部分秘密鍵pskIDとを出力する確率的アルゴリズム。
【0032】
・CPRS.SetSV(params, ID)→svID:公開パラメータparamsとID IDとを入力として、秘密値svIDを出力する確率的アルゴリズム。
【0033】
・CPRS.SetSK(params, pskID, svID)→skID:公開パラメータparamsと部分秘密鍵pskIDと秘密値svIDとを入力として、秘密鍵skIDを出力する確率的アルゴリズム。
【0034】
・CPRS.SetPK(params, ppkID, svID)→pkID:公開パラメータparamsと部分公開鍵ppkIDと秘密値svIDとを入力として、公開鍵pkIDを出力する確率的アルゴリズム。
【0035】
・CPRS.RKGen(params, IDB, skB, pkB, IDC, pkC)→rkB→C:公開パラメータparamsと復号権限を委任する委任者(delegator)であるユーザBのID IDBとユーザBの秘密鍵skBとユーザBの公開鍵pkBと復号権限を持つことになる受任者(delegatee)であるユーザCのID IDCとユーザCの公開鍵pkCとを入力として、再サインクリプション鍵rkB→Cを出力する確率的アルゴリズム。
【0036】
・CPRS.Signcrypt(params, IDA, skA, pkA, IDB, pkB, m)→σA,B:公開パラメータparamsと暗号化を行うユーザAのID IDAとユーザAの秘密鍵skAとユーザAの公開鍵pkAと復号権限を持つことになるユーザBのID IDBとユーザBの公開鍵pkBと平文mとを入力として、サインクリプションσA,Bを出力する確率的アルゴリズム。
【0037】
・CPRS.ReSigncrypt(params, rkB→C, σA,B)→σ'A,C:公開パラメータparamsと再サインクリプション鍵rkB→CとサインクリプションσA,Bとを入力として、再サインクリプションσ'A,Cを出力する確率的アルゴリズム。なお、再サインクリプションは単に「サインクリプション」と称されてもよい。
【0038】
・CPRS.DeSigncrypt1(params, IDA, pkA, skB, σA,B)→m/⊥:公開パラメータparamsと暗号化を行ったユーザAのID IDAとユーザAの公開鍵pkAと復号権限を持つユーザBの秘密鍵skBとサインクリプションσA,Bとを入力として、平文m又は失敗を示す⊥のいずれかを出力する確定的アルゴリズム。
【0039】
・CPRS.DeSigncrypt2(params, IDA, pkA, skC, σ'A,C)→m/⊥:公開パラメータparamsと暗号化を行ったユーザAのID IDAとユーザAの公開鍵pkAと復号権限を持つユーザCの秘密鍵skCと再サインクリプションσ'A,Cとを入力として、平文m又は失敗を示す⊥のいずれかを出力する確定的アルゴリズム。
【0040】
ここで、プロキシ再暗号化付き証明書不要サインクリプション方式は、正当性として以下の2つの条件を満たす。
【0041】
条件1:任意の公開パラメータparamsと任意のID IDと当該ID IDに対応する任意の秘密鍵skID及び公開鍵pkIDと任意のID ID'と当該ID ID'に対応する任意の秘密鍵skID'及び公開鍵pkID'と任意の平文mとに対して、
CPRS.DeSigncrypt1(params, ID, pkID, skID', CPRS.Signcrypt(params, ID, skID, pkID, ID', pkID', m))=m
が成り立つ。
【0042】
条件2:任意の公開パラメータparamsと任意のID IDと当該ID IDに対応する任意の秘密鍵skID及び公開鍵pkIDと任意の2つのID ID'及びID"とこれらのIDにそれぞれ対応する任意の秘密鍵skID'及びskID"並びに公開鍵pkID'及びpkID"と任意の再サインクリプション鍵rkID'→ID"と任意の平文mとに対して、
CPRS.DeSigncrypt2(params, ID, pkID, skID", CPRS.ReSigncrypt(params, rkID'→ID", CPRS.Signcrypt(params, ID, skID, pkID, ID', pkID', m)))=m
が成り立つ。
【0043】
本実施形態では、(1)ユーザの公開鍵にmodified Schnorr署名を取り入れ、サインクリプション時やデサインクリプション時(つまり、メッセージを暗号化する時や復号する時)に他のユーザが公開鍵の検証を行えるようにプロキシ再暗号化付き証明書不要サインクリプション方式を構成すると共に、(2)サインクリプションそのものは復号権限を持つユーザにしか送信元ユーザの認証ができないため、署名に似た検証要素をサインクリプションの要素に追加し、プロキシ側でも暗号文のフォーマットの正しさを検証できるようにプロキシ再暗号化付き証明書不要サインクリプション方式を構成する。上記の(1)により、正当なユーザによって暗号化された暗号文であること又は暗号文の宛先ユーザ(つまり、復号権限を持つユーザ)の公開鍵が正しいことを保証し、攻撃者によるなりすましを防止することができる。また、上記の(2)により、例えば、非同期型ID-MKDシステムの外にいる攻撃者がでたらめな暗号文を送り付けるDoS攻撃によってユーザ端末10の処理負荷が増大してしまう事態を防止することができる。
【0044】
具体的には、本実施形態では、プロキシ再暗号化付き証明書不要サインクリプション方式の各アルゴリズムを以下の実施例1又は実施例2のように構成する。なお、実施例2は実施例1をより効率的に改良した方式である。以降では、Zを整数環として、この整数環の元q∈Zによる剰余環をZqと表す。また、その単数群をZq *と表す。
【0045】
≪プロキシ再暗号化付き証明書不要サインクリプション方式の構成(実施例1)≫
・CPRS.Setup(1κ)→(params, msk)
qをκビットの素数として、Gを位数qの乗法群とする。また、g∈Gを生成元とする。x∈Zq *を一様ランダムにとり、y:=gxとする。Gの元をビット表現した際のサイズ(ビット列の長さ)をLとし、平文空間を{0, 1}κとする。このとき、ハッシュ関数を以下のように定める。
【0046】
H : G → Zq *
H1 : {0, 1}*×G → Zq *
H2 : {0, 1}*×G4 → Zq *
H3 : G → {0, 1}κ+L
H4 : {0, 1}κ+L → Zq *
H5 : G2×{0, 1}κ+L×Zq * → Zq *
H6 : {0, 1}*×G2 → Zq *
H7 : {0, 1}*×{0, 1}κ×{0, 1}κ+L → Zq *
そして、params:=(q, G, g, y, L, H, H1, H2, H3, H4, H5, H6, H7)及びmsk:=xと設定する。
【0047】
・CPRS.PKeyExt(params, msk, ID)→(ppkID, pskID)
一例として、ID=IDA, ppkID=ppkA, pskID=pskAである場合について説明する。まず、sA,1, sA,2, sA,3, sA,4∈Zq *を一様ランダムにとり、
【0048】
【数1】
とする。次に、SA,i:=sA,i+xH1(IDA, QA,i) (i=1, 2, 3)とSA,4:=sA,4+xH2(IDA, QA,1, QA,2, QA,3, QA,4)とを計算し、ppkA:=(QA,1, QA,2, QA,3, QA,4, SA,4)及びpskA:=(SA,1, SA,2, SA,3)と設定する。
【0049】
・CPRS.SetSV(params, ID)→svID
一例として、ID=IDA, svID=svAである場合について説明する。zA,1, zA,2, zA,3∈Zq *を一様ランダムにとり、svA:=(zA,1, zA,2, zA,3)と設定する。
【0050】
・CPRS.SetSK(params, pskID, svID)→skID
一例として、pskID=pskA, svID=svA, skID=skAである場合について説明する。skA:=(zA,1, zA,2, zA,3, SA,1, SA,2, SA,3)と設定する。
【0051】
・CPRS.SetPK(params, ppkID, svID)→pkID
一例として、ppkID=ppkA, svID=svA, pkID=pkAである場合について説明する。まず、
【0052】
【数2】
を計算する。次に、tA,1, tA,2, tA,3∈Zq *を一様ランダムにとり、
【0053】
【数3】
とμA,i:=tA,i+SA,iH6(IDA, PA,i, TA,i) (i=1, 2, 3)を計算する。そして、pkA:=(PA,1, PA,2, PA,3, QA,1, QA,2, QA,3, QA,4, SA,4, TA,1, TA,2, TA,3, μA,1, μA,2, μA,3)と設定する。このように、本実施形態に係るプロキシ再暗号化付き証明書不要サインクリプション方式では、攻撃者によるなりすましを防止するために、公開鍵に対してmodified Schnorr署名を取り入れる。
【0054】
・CPRS.RKGen(params, IDB, skB, pkB, IDC, pkC)→rkB→C
まず、CPRS.PKVerify(params, IDC, pkC)を実行し、1が出力されることを確認する。ここで、CPRS.PKVerifyは公開鍵の署名検証を行うためのアルゴリズムであり、検証に成功した場合は1、そうでなければ0を出力する。実施例1におけるCPRS.PKVerifyの詳細については後述する。
【0055】
次に、CPRS.PKVerifyで1が出力された場合は、
【0056】
【数4】
を計算する。次に、h∈Zq *とπ∈{0, 1}Lとを一様ランダムにとり、v:=H4(h, π)を計算する。続いて、
【0057】
【数5】
を計算する。そして、rkB→C:=(rk, V, W)と設定する。
【0058】
・CPRS.Signcrypt(params, IDA, skA, pkA, IDB, pkB, m)→σA,B
まず、CPRS.PKVerify(params, IDB, pkB)を実行し、1が出力されることを確認する。次に、CPRS.PKVerifyで1が出力された場合は、
【0059】
【数6】
を計算する。次に、u∈Zq *を一様ランダムにとり、U:=guとr:=H4(m, U)とを計算する。続いて、
【0060】
【数7】
を計算する。そして、σA,B:=(D, E, F, s, t)と設定する。
【0061】
・CPRS.ReSigncrypt(params, rkB→C, σA,B)→σ'A,C
まず、
【0062】
【数8】
が成り立つことを検証する。そして、この検証に成功した場合は、E':=Erkを計算し、σ'A,C:=(E', F, V, W, t)と設定する。このように、本実施形態に係るプロキシ再暗号化付き証明書不要サインクリプション方式では、例えば攻撃者によるDos攻撃を防止するために、再サインクリプションを行うプロキシ側でも検証を行う。
【0063】
・CPRS.DeSigncrypt1(params, IDA, pkA, skB, σA,B)→m/⊥
まず、CPRS.PKVerify(params, IDA, pkA)を実行し、1が出力されることを確認する。次に、CPRS.PKVerifyで1が出力された場合は、
【0064】
【数9】
が成り立つことを検証する。次に、この検証に成功した場合は、K:=zB,1+zB,2H(PB,1)+(SB,1+SB,2・H(RB,1))H(X)を計算する。続いて、
【0065】
【数10】
を計算する。そして、
【0066】
【数11】
が成り立てばmを出力し、そうでなければ⊥を出力する。
【0067】
・CPRS.DeSigncrypt2(params, IDA, pkA, skC, σ'A,C)→m/⊥
まず、CPRS.PKVerify(params, IDA, pkA)を実行し、1が出力されることを確認する。次に、CPRS.PKVerifyで1が出力された場合は、K':=zC,1+SC,1・H(PC,1)を計算する。次に、
【0068】
【数12】
を計算する。そして、
【0069】
【数13】
が成り立てばmを出力し、そうでなければ⊥を出力する。
【0070】
ここで、公開鍵の署名検証を行うためのアルゴリズムCPRS.PKVerifyについて説明する。このアルゴリズムは、CPRS.PKVerify(params, ID, pkID)→1/0であり、公開パラメータparamsと任意のユーザのID IDと当該IDに対応する公開鍵pkIDとを入力として、検証成功を示す1又は検証失敗を示す0のいずれかを出力する確定的アルゴリズムである。一例として、ID=IDA, pkID=pkAである場合の具体的構成について説明する。まず、
【0071】
【数14】
を計算する。そして、
【0072】
【数15】
かつ
【0073】
【数16】
が成り立てば1を出力し、そうでなければ0を出力する。
【0074】
≪プロキシ再暗号化付き証明書不要サインクリプション方式の構成(実施例2)≫
・CPRS.Setup(1κ)→(params, msk)
qをκビットの素数として、Gを位数qの乗法群とする。また、g∈Gを生成元とする。x∈Zq *を一様ランダムにとり、y:=gxとする。Gの元をビット表現した際のサイズ(ビット列の長さ)をLとし、平文空間を{0, 1}κとする。このとき、実施例2では、ハッシュ関数を以下のように定める。
【0075】
H : G → Zq *
H1 : {0, 1}*×G4 → Zq *
H2 : {0, 1}*×G2 → Zq *
H3 : G → {0, 1}2κ+L
H4 : {0, 1}2κ+L → Zq *
H5 : G2×{0, 1}2κ+L → Zq *
H6 : {0, 1}*×{0, 1}κ×G → Zq *
そして、params:=(q, G, g, y, L, H, H1, H2, H3, H4, H5, H6)及びmsk:=xと設定する。
【0076】
・CPRS.PKeyExt(params, msk, ID)→(ppkID, pskID)
一例として、ID=IDA, ppkID=ppkA, pskID=pskAである場合について説明する。まず、SA,1, SA,2, SA,3, sA,4∈Zq *を一様ランダムにとり、
【0077】
【数17】
を計算し、ppkA:=(RA,1, RA,2, RA,3, QA,4, SA,4)及びpskA:=(SA,1, SA,2, SA,3)と設定する。
【0078】
・CPRS.SetSV(params, ID)→svID
一例として、ID=IDA, svID=svAである場合について説明する。実施例1と同様に、zA,1, zA,2, zA,3∈Zq *を一様ランダムにとり、svA:=(zA,1, zA,2, zA,3)と設定する。
【0079】
・CPRS.SetSK(params, pskID, svID)→skID
一例として、pskID=pskA, svID=svA, skID=skAである場合について説明する。実施例1と同様に、skA:=(zA,1, zA,2, zA,3, SA,1, SA,2, SA,3)と設定する。
【0080】
・CPRS.SetPK(params, ppkID, svID)→pkID
一例として、ppkID=ppkA, svID=svA, pkID=pkAである場合について説明する。まず、実施例1と同様に、PA,i, tA,i, TA,i, μA,iを計算する。そして、pkA:=(PA,1, PA,2, PA,3, RA,1, RA,2, RA,3, QA,4, SA,4, TA,1, TA,2, TA,3, μA,1, μA,2, μA,3)と設定する。
【0081】
・CPRS.RKGen(params, IDB, skB, pkB, IDC, pkC)→rkB→C
まず、CPRS.PKVerify(params, IDC, pkC)を実行し、1が出力されることを確認する。CPRS.PKVerifyは公開鍵の署名検証を行うためのアルゴリズムであり、検証に成功した場合は1、そうでなければ0を出力する。実施例2におけるCPRS.PKVerifyの詳細については後述する。
【0082】
次に、CPRS.PKVerifyで1が出力された場合は、
【0083】
【数18】
を計算する。次に、h∈Zq *とπ∈{0, 1}κ+Lとを一様ランダムにとり、v:=H4(h, π)を計算する。続いて、
【0084】
【数19】
を計算する。そして、rkB→C:=(rk, V, W)と設定する。
【0085】
・CPRS.Signcrypt(params, IDA, skA, pkA, IDB, pkB, m)→σA,B
まず、CPRS.PKVerify(params, IDB, pkB)を実行し、1が出力されることを確認する。次に、CPRS.PKVerifyで1が出力された場合は、
【0086】
【数20】
を計算する。次に、u∈Zq *を一様ランダムにとり、U:=guとt:=u+(zA,3+SA,3)H6(IDA, m, U)とr:=H4(m, U, t)とを計算する。続いて、
【0087】
【数21】
を計算する。そして、σA,B:=(D, E, F, s)と設定する。
【0088】
・CPRS.ReSigncrypt(params, rkB→C, σA,B)→σ'A,C
まず、
【0089】
【数22】
が成り立つことを検証する。そして、この検証に成功した場合は、E':=Erkを計算し、σ'A,C:=(E', F, V, W,)と設定する。
【0090】
・CPRS.DeSigncrypt1(params, IDA, pkA, skB, σA,B)→m/⊥
まず、CPRS.PKVerify(params, IDA, pkA)を実行し、1が出力されることを確認する。次に、CPRS.PKVerifyで1が出力された場合は、
【0091】
【数23】
が成り立つことを検証する。次に、この検証に成功した場合は、KB:=zB,1+zB,2H(PB,1)+(SB,1+SB,2H(RB,1))H(XB)を計算する。続いて、
【0092】
【数24】
を計算する。そして、
【0093】
【数25】
が成り立てばmを出力し、そうでなければ⊥を出力する。
【0094】
・CPRS.DeSigncrypt2(params, IDA, pkA, skC, σ'A,C)→m/⊥
まず、CPRS.PKVerify(params, IDA, pkA)を実行し、1が出力されることを確認する。次に、CPRS.PKVerifyで1が出力された場合は、KC':=zC,1+SC,1H(PC,1)を計算する。次に、
【0095】
【数26】
を計算する。そして、
【0096】
【数27】
が成り立てばmを出力し、そうでなければ⊥を出力する。
【0097】
ここで、公開鍵の署名検証を行うためのアルゴリズムCPRS.PKVerifyについて説明する。実施例1と同様に、このアルゴリズムは、CPRS.PKVerify(params, ID, pkID)→1/0であり、公開パラメータparamsと任意のユーザのID IDと当該IDに対応する公開鍵pkIDとを入力として、検証成功を示す1又は検証失敗を示す0のいずれかを出力する確定的アルゴリズムである。一例として、ID=IDA, pkID=pkAである場合の具体的構成について説明する。実施例2では、
【0098】
【数28】
かつ
【0099】
【数29】
が成り立てば1を出力し、そうでなければ0を出力する。
【0100】
<機能構成>
次に、本実施形態に係る暗号システム1に含まれるユーザ端末10、サーバ20及びKGC30の機能構成について、図3を参照しながら説明する。図3は、本実施形態に係る暗号システム1の機能構成の一例を示す図である。
【0101】
≪ユーザ端末10≫
図3に示すように、ユーザ端末10は、鍵設定部111と、再サインクリプション鍵生成部112と、サインクリプション部113と、デサインクリプション部114とを有する。これら各部は、例えば、ユーザ端末10にインストールされた1以上のプログラムがプロセッサに実行させる処理により実現される。
【0102】
また、ユーザ端末10は、記憶部121を有する。記憶部121は、例えば、ユーザ端末10のメモリ装置等を用いて実現可能である。
【0103】
記憶部121には、各種情報(例えば、秘密鍵や公開鍵等)が記憶される。鍵設定部111は、CPRS.SetSVアルゴリズムを実行して秘密値を生成した上で、CPRS.SetSKアルゴリズムを実行して秘密鍵を生成及び設定すると共に、CPRS.SetPKアルゴリズムを実行して公開鍵を生成及び設定する。再サインクリプション鍵生成部112は、CPRS.RKGenアルゴリズムを実行して再サインクリプション鍵を生成する。サインクリプション部113は、CPRS.Signcryptアルゴリズムを実行して暗号文(サインクリプション)を生成する。デサインクリプション部114は、CPRS.DeSigncrypt1アルゴリズム又はCPRS.DeSigncrypt2アルゴリズムを実行して暗号文(サインクリプション)を復号する。
【0104】
≪サーバ20≫
図3に示すように、サーバ20は、再サインクリプション部211を有する。再サインクリプション部211は、例えば、サーバ20にインストールされた1以上のプログラムがプロセッサに実行させる処理により実現される。
【0105】
また、サーバ20は、記憶部221を有する。記憶部221は、例えば、サーバ20のメモリ装置等を用いて実現可能である。
【0106】
記憶部221には、各種情報(例えば、再サインクリプション鍵等)が記憶される。再サインクリプション部211は、CPRS.ReSigncryptアルゴリズムを実行して再サインクリプションを生成する。
【0107】
≪KGC30≫
図3に示すように、KGC30は、セットアップ部311と、鍵生成部312とを有する。これら各部は、例えば、KGC30にインストールされた1以上のプログラムがプロセッサに実行させる処理により実現される。
【0108】
また、KGC30は、記憶部321を有する。記憶部321は、例えば、KGC30のメモリ装置等を用いて実現可能である。
【0109】
記憶部321には、各種情報(例えば、マスター秘密鍵等)が記憶される。セットアップ部311は、CPRS.Setupアルゴリズムを実行して公開パラメータ及びマスター秘密鍵を生成する。鍵生成部312は、CPRS.PKeyExtアルゴリズムを実行して各ユーザの部分公開鍵及び部分秘密鍵を生成する。
【0110】
<処理の流れ>
以降では、本実施形態に係る暗号システム1に含まれるユーザ端末10、サーバ20及びKGC30が実行する各種処理の流れについて説明する。
【0111】
≪セットアップ処理及び鍵生成処理≫
まず、セットアップ処理及び鍵生成処理の流れについて、図4を参照しながら説明する。図4は、セットアップ処理及び鍵生成処理の一例を示すフローチャートである。
【0112】
ステップS101:まず、KGC30のセットアップ部311は、セキュリティパラメータ1κを用いてCPRS.Setupアルゴリズムを実行し、公開パラメータparams及びマスター秘密鍵mskを生成する。なお、公開パラメータparamsは記憶部321に保存されると共に公開される。一方で、マスター秘密鍵mskは記憶部321に保存される。
【0113】
ステップS102:次に、KGC30の鍵生成部312は、公開パラメータparamsとマスター秘密鍵mskと各ユーザ(非同期型の多者間鍵交換プロトコルに適用される場合には、いわゆる鍵交換補助サーバも含む)それぞれのID IDとを用いてCPRS.PKeyExtアルゴリズムを実行し、部分公開鍵ppkID及び部分秘密鍵pskIDを生成する。なお、部分公開鍵ppkIDは記憶部321に保存されると共に公開される。一方で、部分秘密鍵pskIDは、この部分秘密鍵pskIDの生成に用いたIDに対応するユーザ端末10等に対してセキュアな方法で送信される。
【0114】
ステップS103:各ユーザ端末10の鍵設定部111は、公開パラメータparamsと自身のID IDとを用いてCPRS.SetSVアルゴリズムを実行し、このID IDに対応する秘密値svIDを生成する。
【0115】
ステップS104:次に、各ユーザ端末10の鍵設定部111は、公開パラメータparamsと自身のIDに対応する部分秘密鍵pskID及び秘密値svIDとを用いてCPRS.SetSKアルゴリズムを実行し、このIDに対応する秘密鍵skIDを生成及び設定する。なお、秘密鍵skIDは記憶部121に保存される。
【0116】
ステップS105:次に、各ユーザ端末10の鍵設定部111は、公開パラメータparamsと自身のIDに対応する部分公開鍵ppkID及び秘密値svIDとを用いてCPRS.SetPKアルゴリズムを実行し、このIDに対応する公開鍵pkIDを生成及び設定する。なお、公開鍵pkIDは記憶部121に保存されると共に公開される。
【0117】
≪サインクリプション処理≫
次に、サインクリプション処理の流れについて、図5を参照しながら説明する。図5は、サインクリプション処理の一例を示すシーケンス図である。以降では、一例として、復号権限をユーザBとする暗号文(サインクリプション)をユーザAが生成し、この暗号文をサーバ20に保存する場合について説明する。
【0118】
ステップS201:まず、ユーザ端末10Aのサインクリプション部113は、公開パラメータparamsと自身のID IDAと自身のIDに対応する秘密鍵skAと自身のIDに対応する公開鍵pkAとユーザBのID IDBとユーザBのIDに対応する公開鍵pkBとを用いてCPRS.Signcryptアルゴリズムを実行し、暗号化対象の平文mを暗号化したサインクリプションσA,Bを生成する。
【0119】
ステップS202:次に、ユーザ端末10Aは、サインクリプションσA,Bをサーバ20に送信する。
【0120】
ステップS203:そして、サーバ20は、ユーザ端末10Aから受信したサインクリプションσA,Bを記憶部221に保存する。
【0121】
≪再サインクリプション処理≫
次に、再サインクリプション処理の流れについて、図6を参照しながら説明する。図6は、再サインクリプション処理の一例を示すシーケンス図である。以降では、一例として、図5のステップS201で生成されたサインクリプションσA,Bの復号権限をユーザCに委任する場合について説明する。
【0122】
ステップS301:まず、ユーザ端末10Bの再サインクリプション鍵生成部112は、公開パラメータparamsと自身のID IDBと自身のIDに対応する秘密鍵skBと自身のIDに対応する公開鍵pkBとユーザCのID IDCとユーザCのIDに対応する公開鍵pkCとを用いてCPRS.RKGenアルゴリズムを実行し、再サインクリプション鍵rkB→Cを生成する。
【0123】
ステップS302:次に、ユーザ端末10Bは、再サインクリプション鍵rkB→Cをサーバ20に送信する。
【0124】
ステップS303:サーバ20の再サインクリプション部211は、公開パラメータparamsとユーザ端末10Bから受信した再サインクリプション鍵rkB→CとサインクリプションσA,Bとを用いてCPRS.ReSigncryptアルゴリズムを実行し、再サインクリプションσ'A,Cを生成する。なお、再サインクリプションσ'A,Cは記憶部221に保存される。
【0125】
≪デサインクリプション処理≫
次に、デサインクリプション処理の流れについて、図7を参照しながら説明する。図7は、デサインクリプション処理の一例を示すシーケンス図である。以降では、一例として、ユーザBがサインクリプションσA,Bを復号する場合又はユーザCが再サインクリプションσ'A,Cを復号する場合について説明する。
【0126】
ステップS401:まず、サーバ20は、サインクリプションσA,Bをユーザ端末10Bに送信する、又は、再サインクリプションσ'A,Cをユーザ端末10Cに送信する。
【0127】
ステップS402:ユーザ端末10Bのデサインクリプション部114は、公開パラメータparamsとユーザAのID IDAとユーザAの公開鍵pkAと自身のIDに対応する秘密鍵skBとを用いてCPRS.DeSigncrypt1アルゴリズムを実行し、サインクリプションσA,Bを復号する。又は、ユーザ端末10Cのデサインクリプション部114は、公開パラメータparamsとユーザAのID IDAとユーザAの公開鍵pkAと自身のIDに対応する秘密鍵skCとを用いてCPRS.DeSigncrypt2アルゴリズムを実行し、再サインクリプションσ'A,Cを復号する。
【0128】
<まとめ>
以上のように、本実施形態に係る暗号システム1は、ユーザの公開鍵にmodified Schnorr署名を取り入れ、サインクリプション時やデサインクリプション時にその検証を行うと共に、プロキシ側(つまり、サーバ20)でも暗号文のフォーマットの正しさを検証するプロキシ再暗号化付き証明書不要サインクリプション方式を実現する。このため、正当なユーザによって暗号化された暗号文であること又は復号権限を持つユーザの公開鍵が正しいことを保証し、攻撃者によるなりすましを防止することができると共に、例えば、非同期型ID-MKDによる多者間鍵交換プロトコルに適用した場合に、システムの外にいる攻撃者がでたらめな暗号文を送り付けるDoS攻撃によってユーザ端末10の処理負荷が増大してしまう事態を防止することができる。
【0129】
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更、既知の技術との組み合わせ等が可能である。
【符号の説明】
【0130】
1 暗号システム
10 ユーザ端末
20 サーバ
30 KGC
40 通信ネットワーク
111 鍵設定部
112 再サインクリプション鍵生成部
113 サインクリプション部
114 デサインクリプション部
121 記憶部
211 再サインクリプション部
221 記憶部
311 セットアップ部
312 鍵生成部
321 記憶部
図1
図2
図3
図4
図5
図6
図7