【文献】
高橋 健志 Takeshi TAKAHASHI,マルチテナントクラウドコンピューティング Multitenant Cloud Computing,電子情報通信学会技術研究報告 Vol.111 No.309 IEICE Technical Report,日本,社団法人電子情報通信学会 The Institute of Electronics,Information and Communication Engineers,2011年11月11日,第111巻,pp.25-32
(58)【調査した分野】(Int.Cl.,DB名)
前記データパッケージはさらに、それぞれ前記データの特定の部位を示す複数のインデックスを含むインデックスリストと、それぞれ1つのインデックスに対応する複数のハッシュ情報を含むハッシュチェーン情報とを含み、
前記連絡して前記データの重複排除を実行すること、または前記データの重複排除を実行することは、
前記第1のデバイスに、前記インデックスリストの少なくとも1つのインデックスに対応するハッシュ情報を送信することを要求することと、
前記第1のデバイスからの前記要求された少なくとも1つのインデックスに対応する前記ハッシュ情報に基づき、前記第1のデバイスが前記データを保持しているかを検証することと、
保持しているという検証結果に応じて、連絡して重複排除を実行するか、前記第1のデバイスに対して、前記データの重複排除情報を記録することと、を含む請求項1に記載の方法。
当該データが前記データセンターに記憶済みではないという確認結果に応じて、少なくとも1つの他のデータセンターに当該データが記憶されているかを確認することを要求することと、
前記データに対する重複排除を実行可能な、前記少なくとも1つの他のデータセンターからの記憶済みであるという応答に応じて、前記第1のデバイスに対する前記データの重複排除情報を記録することと、
前記少なくとも1つの他のデータセンターからの記憶済みではないという応答に応じて、それに応じたデータの記憶を実行することと、をさらに含む、請求項1から6のいずれかに記載の方法。
前記データの適格なデータ保持者を検証するために、それぞれ前記データの特定の部位を示す複数のインデックスを含むインデックスリストと、それぞれ1つのインデックスに対応する複数のハッシュ情報を含むハッシュチェーン情報とを前記データパッケージにより送信することをさらに含む請求項11に記載の方法。
処理手段及び記憶手段を備える装置であって、前記記憶手段はプログラム命令を格納し、前記プログラム命令は、前記処理手段に実行されると、前記装置に、請求項1から10のいずれかに記載の方法を遂行させるように構成される、装置。
処理手段及び記憶手段を備える装置であって、前記記憶手段はプログラム命令を格納し、前記プログラム命令は、前記処理手段に実行されると、前記装置に、請求項11から21のいずれかに記載の方法を遂行させるように構成される、装置。
装置の処理手段に実行されると、前記装置に、請求項1から10のいずれかに記載の方法を遂行させるように構成されるプログラム命令を備える、コンピュータプログラム。
装置の処理手段に実行されると、前記装置に、請求項11から21のいずれかに記載の方法を遂行させるように構成されるプログラム命令を備える、コンピュータプログラム。
【発明を実施するための形態】
【0044】
開示された実施形態の十分な理解を促すために、以下に詳細を述べて説明とする。しかし、実施形態はこれらの特定の詳細やこれと均等の配置によらず実施できることは、当業者には明らかである。
【0045】
上述のように、クラウドコンピューティングでは、様々なデータがクラウドに記憶されている。例えば、機密の個人情報や個人データ、公に共有されるデータやある個人の集団に限定して共有されるデータ等である。重要データについては、クラウドにおいて権限のない者から、場合によってはクラウドサービスプロバイダ(CSP)からも含めて、あらゆるアクセスから保護されるべきであるが、そうでないデータもある。特に共有データの重複データが同一または異なるユーザにより、同一CSPまたは複数のCSPによるクラウドに保存される場合がある。同一データは、平文または暗号文(様々なデータ保持者が把握している様々な鍵を使用して暗号化)の形式で保存され得る。通常、重複データの記憶はストレージ資源の大量浪費、電力の不要な消費、クラウドサービスプロバイダの運転費用の増加、クラウドにおけるデータ管理の複雑化(例えばデータ検索が複雑化し得る)につながる。
【0046】
一方で、データ所有者または保持者は、自身のデータの取扱いについてCSPを完全には信頼しておらず、(デジタル著作権管理の一環として)自身でデータのアクセス、記憶、利用を管理することを望む場合がある。しかし、複雑さや可用性を考えると、常に自身で自データを管理したり、機密性の低いデータを個人的に管理したりすることは不便となり得る。さらに、互換性を考えると、データ重複排除が、他のデータアクセス制御機構と協働可能であることが大いに期待される。すなわち、一度のみクラウドで保存された同じデータ(暗号化されているか否かにかかわらず)が、データ所有者やデータ保持者(すなわち、オリジナルデータを保持する適格なデータユーザ)のポリシーに基づき異なるユーザにアクセスされる可能性がある。
【0047】
本開示の実施形態は、データセキュリティおよびプライバシー要求を満たすように、データ所有者、信頼された第三者、またはその両方により制御された、あるいはそのいずれにも制御されていないデータ重複排除に柔軟に対応し、同時に各種データ記憶状況において記憶領域を節約するための、クラウドコンピューティングにおけるデータの記憶を安全に管理するための包括的かつ異種対応的(ヘテロジニアス)方法を提供できる。本開示の実施形態を、
図1〜12を参照して以下に説明する。
【0048】
図1は、本開示の少なくとも1つの実施形態が実現され得る例示的システムを示す。図示のように、システム100は、複数のユーザ装置110−1〜110−nと、データセンター120および120'と、権限者(AP)130とを含んでもよい。ユーザ装置110−1〜110−nの内の任意のものは、そのユーザが、データセンター120または120'にデータをアップロード、保存可能としてもよい。機密でないデータは平文テキスト形式でアップロード、保存され、一方、機密データは暗号文形式でアップロード、保存されてもよい。例えば、ユーザ装置110−1〜110−nのユーザが同一の一データを保持し、そのデータ保持者の少なくとも一がデータ所有者であり得る。多数のデータ保持者が同一の平文または暗号文データをデータセンター120または120'に保存した場合に、データ重複が生じ得る。データ所有者は、データ所有者、AP130、またはその両方によりデータ重複排除を制御可能とするように、あるいはそのいずれにも可能としないように、自由に決定可能である。ユーザ装置110は、デスクトップコンピュータ、ラップトップコンピュータ、携帯電話、タブレットコンピュータ、携帯情報端末(PDA)等の、有線や無線通信が可能な、任意の固定または携帯デバイスであってもよい。
【0049】
データセンター120または120'は、データストレージサービスを提供してもよい。多数のデータ保持者が同一の平文または暗号文データをデータセンター120または120'に保存した場合、データセンター120または120'は、データ重複排除を自身で実行しても、データ所有者および/またはAP130と協働で実行してもよい。データセンター120および120'は、業務提携に基づき、協働で重複排除により記録領域を節約してもよい。
図1で示されているのはデータセンター120および120'の2つだが、システム100はより多くのデータセンターを含んでもよい。例えば、データセンター120および120'は、それぞれ異なるCSP(例えば、ローカルCSPとリモートCSP)により提供されてもよい。あるいは、データセンター120および120'は、従前のファイルホスティングサービス技術のような、その他任意のデータ記憶技術により実現されてもよい。
【0050】
AP130は、データセンター120または120'に記憶されたデータへのアクセスを管理してもよい。例えば、AP130は、データ所有者の代わりにデータ重複排除を担ったり、データセンター120または120'を介してデータ所有者と協働でデータ重複排除を実行したりしてもよい。AP130は、アクセスマネジメントセンターとして機能してもよい。APは、いずれのデータセンターとも癒着がなく、データ保持者によりデータ重複排除を実行するのに信頼足るとされている存在である。例えばAPは、特別に設立された組織である。
【0051】
ユーザ装置110−1〜110−n、データセンター120および120'、AP130が互いに通信する通信ネットワークは、有線や無線ネットワークであってもよい。当該ネットワークとしては、ローカルエリアネットワーク(Local Area Network:LAN)、メトロポリタンエリアネットワーク(Metropolitan Area Network:MAN)、広域ネットワーク(Wide Area Network:WAN)、公衆データネットワーク(例えばインターネット)、個人モバイルネットワーク、または商業上所有された所有者パケット交換型ネットワーク(例えば所有者ケーブルまたは光ファイバネットワーク)等のその他の好適なパケット交換型ネットワークが挙げられるが、これらに限定されるものではない。無線ネットワークは、例えばセルラーネットワークであってもよく、広域展開用高速データレート(Enhanced Data rates for Global Evolution:EDGE)、汎用パケット無線サービス(General Packet Radio Service:GPRS)、GSM(登録商標),インターネットプロトコルマルチメディアサブシステム(Internet protocol Multimedia Subsystem:IMS)、ユニバーサル移動通信システム(Universal Mobile Telecommunications System:UMTS)等や、さらにその他の好適な無線媒体、例えば、WiMAX(登録商標)、無線LAN(Wireless LAN:WLAN)、ロングタームエボリューション(Long Term Evolution:LTE)ネットワーク、符号分割多元接続(Code Division Multiple Access:CDMA)、WCDMA(登録商標)、Wi−Fi(Wireless Fidelity)、衛星、モバイルアドホックネットワーク(Mobile Ad-hoc Network:MANET)、遅延体制ネットワーク等を含む様々な技術を用いてもよい。
【0052】
図2は、本開示の実施形態に係る、ヘテロジニアス制御に基づくデータ重複排除のための全体的なシステム処理を示すフローチャートである。なお、本開示のいくつかの実施形態を、データセンターがクラウド記憶技術で実現されている
図2から9を参照して説明するが、本開示はそれに限定されるものではない。上述のように、本開示の原理は従前のファイルホスティングサービス技術のような、任意のその他のデータ記憶技術で実現されるデータセンターにも適用可能であることが、当業者には理解できよう。
【0053】
全体的なシステム処理がよりよく理解できるように、まず例示的実施形態の概要およびそれに関連した方式の鍵やアルゴリズムについて説明する。なお、説明に対する理解を促すために、ユーザのデバイスは以下ではユーザ(例えばデータ所有者またはデータ保持者)と称する場合がある。
【0054】
本開示の例示的実施形態では、例えば異なる記憶状況および/または重複排除ポリシーに沿って、データ所有者がデータ暗号化鍵(DEK)をNULL値または非NULL値に設定可能であってもよい。データ所有者がデータアクセス制御の実行を望まない場合、DEKはNULL値を持つように設定されてもよい。この場合、CSPに平文が記憶され、CSPが重複排除を一手に担ってもよい。一方、データアクセス制御が必要であれば、DEKは非NULL値を持つように設定されてもよい。非NULL値は、対称秘密鍵であってもよい。この場合、暗号文(CT)が保存されてもよい。
【0055】
その後、例えば異なる記憶状況および/または重複排除ポリシーに沿って、DEKが2つの部分、具体的にはDEK1およびDEK2に分けられる。データ所有者が自身のみによってデータ重複排除を制御することを望む場合、DEK1がNULLとなってもよく、したがって、DEK2=DEKとなる。この場合、属性ベース暗号(ABE)方式を採用してもよい。
【0056】
ABEシステムでは、ユーザは正確な識別子ではなく、属性群により識別されてもよい。各データは属性ベースアクセス構造で暗号化されてもよく、その場合、アクセス構造に適合する属性を持つユーザのみがデータを復号できる。ABEは、属性およびポリシーと暗号文およびユーザの復号鍵との関連性に基づく、鍵ポリシーABE(KP−ABE)および暗号文ポリシーABE(CP−ABE)の二通りに展開した。CP−ABEでは、暗号文は、属性に対してブーリアン方式として定式化されているアクセス制御ポリシーに沿って暗号化されてもよい。この構造では、アクセス制御ポリシーに適合する属性を持つユーザのみが、その秘密属性鍵により暗号文を復号可能となることが保証される。KP−ABEでは、ユーザの秘密鍵は属性群と関連付けられてもよい。
【0057】
一例として、適格なデータ保持者の識別子(ID)を含むアクセスポリシーに基づいて、DEK2を暗号化して暗号鍵CK2が得られてもよい。すなわち、適格なデータ保持者のIDを属性として利用するのである。これにより、適格なデータ保持者はその属性がアクセスポリシーに適合し、CK2を復号できる。
【0058】
さらに、データ所有者が、AP単独でデータ重複排除を制御することを望む場合、DEK2をNULLにしてもよく、したがって、DEK1=DEKとなる。この場合、プロキシ再暗号化(PRE)方式を採用してもよい。PREでは、プロキシへの信用を上乗せする必要なく、鍵一組で委任者が細かなポリシーを実現できるようになる。PREシステムでは、委任者のCTは当該委任者の公開鍵で生成でき、委任者は再暗号化鍵を、適格なデータ保持者のデータアクセス用に、プロキシに割り当ててもよい。これを受けて、プロキシは再暗号化鍵によりCTを再暗号化してもよく、これにより再暗号化されたCTは適格なデータ保持者(例えば受任者)の秘密鍵で復号できる。
【0059】
一例として、APが委任者で、CSPがプロキシで、適格なデータ保持者が受任者であり得る。データ所有者はAPの公開鍵でDEK1を暗号化することでCK1を取得し、当該CK1をCSPに送信してもよい。CSPは、APにより割り当てられた再暗号化鍵でCK1を再暗号化し、再暗号化されたCK1を適格なデータ保持者に送信してもよい。これにより、適格なデータ保持者は自身の受任者秘密鍵により再暗号化されたCK1を復号できる。
【0060】
さらに、データ所有者が、自身とAPとの両方でデータ重複排除を制御することを望む場合、DEK1とDEK2はいずれも非NULLであってもよい。この場合、ABE方式とPRE方式のいずれも採用可能で、DEK1とDEK2を集約してDEKを取得することができる。さらに、データ所有者が自身とAPとのいずれかでデータ重複排除を制御することを望む場合、DEK1=DEK2=DEKとなる。この場合、重複排除は、データ所有者またはAPのいずれかに連絡することで実行されてもよい。
【0061】
このように、本開示は、データ所有者と権限者の一方または両方あるいはその他によるクラウドデータ重複排除に対する二次元的記憶管理を提案できる。これは、データ所有者、信頼できる第三者、その両方、またはその他によってクラウドデータ重複排除の取扱いが可能な状況に適用できる。
【0062】
CSP側では、重複データMのハッシュコードをその識別子として利用できる。この識別子は、データアップロードおよび記憶の際にデータ重複の確認に使用される。データMのハッシュコード、すなわちH(M)は、データ所有者またはデータ保持者により、CSPが実行する原本性検証のために署名されてもよい。例えば、H(M)は、公開鍵暗号化システム(PKC)で署名されてもよい。また、データMのランダムに選択された具体的な部位における複数のハッシュコードは、そのインデックスを基に計算されてもよい(例えばデータの最初の20.1%のハッシュコード、データの21〜25%のハッシュコード)。これらのハッシュコードは、データMのハッシュチェーン(HC)と称されてもよい。
【0063】
データ所有者/保持者がデータMをCSPに記憶しようとする際に、重複確認のために、データMの署名されたハッシュコードをCSPに送信してもよい。重複確認の結果が重複を示す場合、CSPはさらに、データ保持者が所有者であるかを、データMのハッシュチェーン(例えば、チェーンにおけるいくつかの特定のハッシュコード)に基づいて検証してもよい。当該ハッシュチェーンによる検証の結果が所有者であると示す場合、データ所有者の重複排除ポリシーに基づく重複排除のため、CSPはデータ所有者および/またはAPに連絡してもよい。
【0064】
データ重複確認は、CSP間で実行されてもよい。あるCSPが別のCSPのためにデータを保存してもよい。データ保持者が同一のデータを別のCSPに保存しようとすると、CSP間で、その契約に基づき、重複確認が実行されてもよい。別のCSPの適格なユーザからの重複データアクセスは、当該CSPにより対応されてもよい。
【0065】
本開示の例示的実施形態で使用される鍵を、以下の表に示す。
【0066】
上述のシステム鍵の用途について、例示的実施形態で使用されるいくつかの基本的アルゴリズムの説明とともに詳述する。
【0067】
InitiateNode(u)
InitiateNodeアルゴリズムは、システム設定時にユーザuにより実行されてもよく、通常は固有のノード識別子であるノード識別子uを入力とする。アルゴリズムは、以下の鍵組と認証を出力してもよい。
(1)ABE用の公開ユーザ鍵PK_uおよび秘密ユーザ鍵SK_u。
ユーザuがデータ所有者で、ユーザu'がデータ保持者であるとする。上述のアルゴリズムIssueIDSK(ID,SK_u,PK_u')を呼び出すことにより、ユーザu'に対して、公開ユーザ鍵PK_u'を使用してユーザu'の秘密属性鍵(すなわちSK_(ID,u,u'))を発行してもよい。
各ユーザは、別のユーザの識別子に基づいて別のユーザに秘密属性鍵を発行するために使用される秘密鍵SK_uを保持してもよい。それはさらにユーザu−pk_(ID,u)の識別子属性(IDで示す)の自身の公開鍵を生成するために使用されてもよい。秘密ユーザ鍵SK_uはさらに、PK_uにより暗号化された暗号文の復号に使用されてもよい。
(2)公開鍵暗号化システム(PKC)用の鍵組PK'_uおよびSK'_u。
SK'_uは、署名生成の実行や、PK'_uによって暗号化されたデータの復号に使用されてもよい。したがって、PK'_uは、署名検証やデータ暗号化に使用されてもよい。
(3)PRE用の鍵組pk_uおよびsk_u。
上述のように、PREシステムは三種類の関係者、すなわち、委任者、プロキシ(代理)、受任者を含み得る。一例として、データ保持者が受任者であり得る。したがって、pk_uを受任者公開鍵、sk_uを受任者秘密鍵と称してもよい。
(4)さらに、PK_u、PK'_u、pk_uは、権限のある第三者(例えばPKIにおけるCA)またはCSPによりそれぞれCert(PK_u)、Cert(PK'_u)、Cert(pk_u)という認証とされてもよい。Cert(PK_u)、Cert(pk_u)、Cert(PK'_u)は、CSPおよびCSPユーザにより検証されてもよい。
【0068】
InitiateAP
このアルゴリズムの処理では、APは単独でPRE用のpk_APおよびsk_APを生成し、CSPのストレージサービスを介して、CSPユーザに対してpk_APを同時送信してもよい。一例として、APはPREシステムにおける委任者であり得る。したがって、pk_APを委任者公開鍵、sk_APを委任者秘密鍵と称してもよい。
【0069】
Encrypt(DEK_u,M)
Encryptアルゴリズムは、データM、対称鍵DEK_uを入力としてもよい。このアルゴリズムは、DEK_uによりデータMを暗号化し、暗号文CT_uを出力してもよい。この処理は、ユーザuがCSPに記憶された自身のデータをDEK_uで保護するために実行してもよい。
【0070】
SeparateKey(DEK_u)
DEK
1_uとDEK
2_uの両方が非NULLであると判定されると、DEK_uの入力に応じて、この関数は例えばランダム分割に基づいて、鍵の2つの部分DEK
1_uおよびDEK
2_uを出力してもよい。
【0071】
CreateIDPK(ID,SK_u)
CreateIDPKアルゴリズムは、ユーザ(すなわちデータ所有者)が自身のデータ記憶の制御と、クラウドへのアクセスを望んだ際にはいつでも実行されてもよい。このアルゴリズムは、ユーザuのID(例えばPK_u)がデータ記憶管理に関連するポリシーに適合するかを確認してもよい。例えば、データの記憶およびアクセス管理のため、該IDがデータ所有者のIDであるかを確認してもよい。IDがポリシーに適合する場合、このアルゴリズムは、ABE機構に応じて、ユーザuのIDに関連した公開属性鍵(pk_(ID,u)で示す)を出力してもよい。適合しない場合、このアルゴリズムは、NULLを出力してもよい。
なお、識別子属性はID(匿名識別子であってもよい)として示されている。(ID,u)で示されるすべての属性には、pk_(ID,u)で示された公開鍵が存在する。これはユーザuにより生成され、DEKの一部である対称鍵DEK2の暗号化に使用される。
【0072】
EncryptKey(DEK
2_u,A,pk_(ID,u))
EncryptKeyアルゴリズムは、対称鍵DEK
2_uである第2部分と、アクセスポリシーAと、データ記憶管理に関連したポリシーで生じる識別子属性に対応する公開鍵pk_(ID,u)を入力としてもよい。このアルゴリズムは、ポリシーAによりDEK
2_uを暗号化し、暗号鍵CK
2_uを出力してもよい。この処理は、CSPにおけるデータの記憶に対する重複排除に対応するためにユーザuにより実行されてもよい。
アクセスポリシーAについて、例えばデータ所有者はID=PK_u
j'(j=1、2、3)を有する別のデータ保持者とデータの記憶を共有することを望む場合がある。この場合、ポリシーAはID=PK_u'
1∨PK_u'
2∨PK_u'
3となり得る。EncryptKeyアルゴリズムは、j=1、2、3のすべてに対して繰り返し、論理積ごとにランダム値R_jおよび構成要素CK
2_jを生成してもよい。暗号鍵CK
2はタプルCK=<CK
2_
1、CK
2_
2、…、CK
2_
j>として取得され得る。
【0073】
IssueIDSK(ID,SK_u,PK_u')
IssueIDSKアルゴリズムを呼び出す前に、Cert(PK_u')が信頼された第三者またはデータ所有者自身により認証された有効な識別子であるかを確認することで、ユーザu'の適格性を確認してもよい。
図2を参照して後述するように、ユーザuはCSPを介してユーザu'からCert(PK_u')を受信してもよい。
確認の結果が適格を示した場合、最初に公開鍵PK_u'を有するユーザu'が適格な属性IDを有するか(すなわちPK_u'がデータを保持する権限を有するか)を確認することで、ユーザuがIssueIDSKアルゴリズムを実行してもよい。例えば、PK_u'がアクセスポリシーAに適合するかを確認してもよい。
その結果が適合することを示す場合、IssueIDSKアルゴリズムは、ユーザu'に対して秘密属性鍵SK_(ID,u,u')を出力してもよい。適合しなければ、このアルゴリズムは、NULLを出力してもよい。生成されたSK_(ID,u,u')は、ユーザuからセキュアチャネルを介して、またはPKCを使用して、ユーザu'に送信されてもよい。
なお、pk_(ID,u)により暗号化された暗号鍵を復号するための対応する秘密属性鍵は、適格なデータ保持者に対して個別化され、データ所有者uにより発行される。癒着が生じないよう、すべてのデータ保持者には、それぞれ自身のみが使用可能な、別々の秘密属性鍵が提供される。適格な保持者u'に対してユーザuから発行される属性IDの秘密属性鍵は、sk_(ID,u,u')で示される。
【0074】
DecryptKey(CK
2_u,A,PK_u',sk_(ID,u,u'))
DecryptKeyアルゴリズムは、EncryptKeyアルゴリズムにより生成された暗号鍵と、CK
2_uを暗号化したアクセスポリシーAと、ユーザu'に対するSK_u'、sk_(ID,u,u')を入力としてもよい。属性(例えばPK_u')が十分アクセスポリシーAに適合するならば、DecryptKeyアルゴリズムは、暗号鍵CK
2_uを復号し、対応する平文鍵DEK
2_uを出力してもよい。適合しない場合、このアルゴリズムは、NULLを出力してもよい。
この処理は、重複保存が生じると、ユーザu'により実行されてもよい。最初にPK_u'が暗号化ポリシーAに適合するかが確認され、その結果が適合を示す場合、復号を実行してDEK
2_uを取得する。
【0075】
上述のように、PRE方式はAPによりDEK
1再暗号化に対応してもよい。プロキシ再暗号化は、CSP(すなわちプロキシ)がAPの公開鍵により計算されたDEK
1の暗号文を、適格なデータ保持者の秘密鍵を使用して復号できるものに変換可能とするものであってもよい。再暗号化と称する暗号文変換中に、CSPはDEK
1の元となる平文について知ることはないため、データ保持者の平文データを把握することはできない。PRE方式に関連したアルゴリズムを以下に説明する。
【0076】
E(pk_AP,DEK
1_u)
pk_APおよびDEK
1_uの入力に応じて、このアルゴリズムは、暗号文CK1=E(pk_AP,DEK
1_u)を出力してもよい。
【0077】
RG(pk_AP,sk_AP,pk_u')
(pk_AP,sk_AP,pk_u')の入力に応じて、再暗号化鍵生成アルゴリズムRGは、プロキシCSPに対して再暗号化鍵rk_AP→u'を出力してもよい。
【0078】
R(rk_AP→u',CK
1)
rk_AP→u'および暗号文CK
1の入力に応じて、再暗号化関数Rは、秘密鍵sk_u'により復号可能なR(rk_AP→u',CK
1)=E(pk_u',DEK
1_u)=CK
1'を出力してもよい。
【0079】
D(sk_u,CK'
1)
sk_uおよび暗号文CK'
1の入力に応じて、復号アルゴリズムDは平文鍵DEK
1_uを出力してもよい。
【0080】
CombineKey(DEK
1_u,DEK
2_u)
DEK
1_uおよびDEK
2_uの入力に応じて、この関数は、結合によって完全鍵DEK_uを出力してもよい。
【0081】
Decrypt(DEK_u,CT_u)
Decryptアルゴリズムは、暗号化データCT_uおよび対称鍵DEK_uを入力としてもよい。このアルゴリズムは、DEK_uによりCT_uを復号し、平文データMを出力してもよい。この処理は、CSPに保存されたデータの平文を開示するため、データ保持者により実行される。
【0082】
次に、本開示の実施形態に係るヘテロジニアス制御によるデータ重複排除のための全体的なシステム処理を、
図2を参照して説明する。本処理では、ユーザu1が実際のデータ所有者であり、自身の機密個人データMをDEK_u1で保護してCSPに保存する。一方、ユーザu2は同じデータのCSPへの保存を試みるデータ保持者である。
図2のシステムでは、データ所有者およびAPの両方が重複排除制御に必要であり、CSPは1つのみ存在する。
【0083】
ステップ202において、CSPおよびAPの各ユーザはシステム設定を実行してもよい。各ユーザu
iは、InitiateNode(u
i)を呼び出し、3つの鍵組(PK_u
i,SK_u
i)、(PK'_u
i,SK'_u
i)、(pk_u
i,sk_u
i)(i=1、2、…)を生成する。一方、各ユーザu
iは、自身で生成した公開鍵Cert(PK_u
i)、Cert(PK'_u
i)、Cert(pk_u
i)に対応する認証を、権利を有する第三者(PKIにおけるCA)またはCSPから取得してもよい。例えば、ステップ202aにおいて、ユーザu
1は3つの鍵組(PK_u
1,SK_u
1)、(PK'_u
1,SK'_u
1)、(pk_u
1,sk_u
1)を生成し、その生成した公開鍵に対応する認証Cert(PK_u
1)、Cert(PK'_u
1)、Cert(pk_u
1)を取得してもよい。上述のように、ユーザu
1はデータ所有者であるため、PRE用の鍵組(pk_u
1,sk_u
1)と対応する認証Cert(pk_u
1)も省略されてもよい。ステップ202bにおいて、ユーザu
2は3つの鍵組(PK_u
2,SK_u
2)、(PK'_u
2,SK'_u
2)、(pk_u
2,sk_u
2)を生成し、その生成した公開鍵に対応する認証Cert(PK_u
2)、Cert(PK'_u
2)、Cert(pk_u
2)を取得してもよい
【0084】
APは、ステップ202dにおいてInitiateAPを呼び出し、自身の鍵組(pk_AP,sk_AP)を生成し、pk_APを各ユーザに同時送信してもよい。さらに、CSPは、ステップ202cにおいて各公開鍵PK_u
i、PK'_u
i、pk_u
iを受信し、対応する認証Cert(PK_u
i)、Cert(PK'_u
i)、Cert(pk_u
i)を各ユーザu
iに発行してもよい。
【0085】
次にステップ204において、ユーザu
1は、データMのハッシュ情報を生成してもよい。ハッシュ情報は、少なくともデータMのハッシュコードを含んでもよい。例えば、ユーザu
1は、H(M)を計算し、SK'_u
1によりH(M)を署名しSign(H(M),SK'_u
1)としてもよい。ここで、Sign()は署名関数を示す。
【0086】
次にステップ206において、ユーザu
1は、少なくともデータMのハッシュ情報を送信してもよい。例えば、ユーザu
1は、パッケージP
1={H(M),Sign(H(M),SK'_u
1),Cert(PK_u
1),Cert(PK'_u
1),Cert(pk_u
1)}をCSPに送信してもよい。別の例として、パッケージは少なくともデータ記憶重複確認に必要なH(M)、Sign(H(M),SK'_u
1)、Cert(PK'_u
1)を含んでもよい。
【0087】
その後、ステップ208において、CSPは同じデータMを保存しているかを確認してもよい。同じデータがCSPに保存されていない場合、CSPはユーザu
1にデータ送信を要求してもよく、同じデータがCSPに保存されている場合、ステップ220にて詳細に後述するように、CSPはユーザu
1が所有者であるかを検証してもよい。なお、ステップ208および220は実質的に同じである。ここでは最初にアップロードしたのが実際のデータ所有者であるため、ステップ208においてCSPはユーザu
1にデータアップロードを要求する。
【0088】
例えば、ステップ208において、CSPは、認証Cert(PK'_u
1)を検証し、PK'_u
1により署名Sign(H(M),SK'_u
1)を検証し、その後CSPに同じH(M)が記録されているかを確認してもよい。ここではユーザu
1(すなわちデータ所有者)が最初にアップロードしているので、ステップ210においてCSPはユーザu
1にデータを要求してもよい。
【0089】
次にステップ212において、ユーザu
1は、データMをDEKで暗号化し、DEKをDEK1とDEK2に分割し、PRE方式でDEK1を暗号化し、ABE方式でDEK2を暗号化し、データMのインデックスリストとハッシュチェーン情報を計算してもよい。
【0090】
例えば、プライバシーおよびセキュリティ保護のために、ユーザu
1は、データMをランダムに選択された対称鍵DEK_u
1により暗号化してCT_u
1=Encrypt(DEK_u
1,M)を取得してもよい。その後ユーザu
1は、SeparateKey(DEK_u
1)を呼び出して、DEK1_u
1およびDEK2_u
1というDEK_u
1の2つのランダムな部位を取得してもよい。ユーザu
1は、EncryptKey(DEK2_u
1,A,pk_(ID,u
1))を呼び出して、pk_(ID,u
1)によりDEK2_u
1を暗号化して、CK1_u
1を取得してもよい。pk_(ID,u
1)は、上述のようにユーザu
1のデータ記憶管理ポリシーに応じて生成される。ユーザu
1は、E(pk_AP,DEK
1_u
1)を呼び出して、pk_APによりDEK1_u
1を暗号化することでCK
1_u
1を取得してもよい。
【0091】
さらに、ユーザu
1は、インデックスリストIN={In
1,In
2,…,In
k}をランダムに選択してもよい。当該リストは、Mの特定の部位を示す(例えばIn
1はデータの最初の1%を示し,In
2はデータの最初の1.2%を示す)。さらに、ユーザu
1は、インデックスに基づいて各種Mの部位のハッシュコードを計算して,HC(M)={H(M
1),H(M
2),…,H(M
k)}を取得してもよい。さらにユーザu
1は、SK'_u
1によりHC(M)を署名して、Sign(HC(M),SK'_u
1)を取得してもよい。
【0092】
次にステップ214において、ユーザu
1は、インデックスリスト、ハッシュチェーン情報、暗号化されたデータ、暗号化されたDEK1、暗号化されたDEK2を送信してもよい。ハッシュチェーン情報は、少なくともデータMのハッシュチェーンを含んでもよい。例えば、ユーザu
1は、データパッケージDP
1={CT_u
1,CK1_u
1,CK2_u
1,In,HC(M),Sign(HC(M),SK'_u
1)}を、セキュアチャネルを介してCSPに送信してもよい。続いてステップ216において、CSPはデータパッケージを保存してもよい。
【0093】
次にステップ218において、ユーザu
2は、すでに保存された同じデータMをCSPに保存しようとしてもよい。ステップ206と同様に、ユーザu
2は、少なくともデータMのハッシュ情報を送信してもよい。例えば、ユーザu
2は、パッケージP
2={H(M),Sign(H(M),SK'_u
2),Cert(PK_u
2),Cert(PK'_u
2),Cert(pk_u
2)}をCSPに送信してもよい。別の例としてパッケージは、データ記憶重複確認に必要なH(M),Sign(H(M),SK'_u
1),Cert(PK'_u
1)を少なくとも含んでもよい。
【0094】
次にステップ208と同様に、ステップ220において、CSPは、同じデータを保存しているかを確認してもよい。CSPに同じデータが保存されていなければ、CSPはユーザにデータ送信を要求してもよい。CSPに同じデータが保存されていれば、CSPはユーザが所有者かを検証してもよい。ユーザu
1により同じデータがCSPに保存されているので、この確認結果は正となる。この場合、CSPはユーザu
2にインデックスリストの少なくとも1つのインデックスに対応するハッシュ情報の送信を要求してもよい。例えば、CSPは、1つのインデックxまたは複数のインデックスをランダムに選択してもよい。さらに、CSPは、PK'_u
2によりインデックスxを暗号化してE(x,PK'_u
2)としてもよい。ステップ222において、CSPはインデックス情報(例えば、E(x,PK'_u
2))をユーザu
2に送信してもよい。
【0095】
次にステップ224において、ユーザu
2は、対応するハッシュ情報を計算して、CSPに送信してもよい。対応するハッシュ情報は、CSPから送信された少なくとも1つのインデックスに対応するハッシュ情報を少なくとも含んでもよい。例えば、ユーザu
2は、ハッシュコードHC(M
x)を計算してもよく、ここで、M
xはCSPから送信された少なくとも1つのインデックスxに対応するMの部位を示す。さらに、ユーザu
2は、SK'_u
2によりHC(M
x)を署名して、Sign(HC(M
x),SK'_u
2)としてもよい。続いてユーザu
2は、HC(M
x)およびSign(HC(M
x),SK'_u
2)をCSPに送信してもよい。なお、このステップでは、データの保持者を確定するため、CSPは複数のHC(M
x)を検証してもよい。
【0096】
次にステップ226において、ユーザu
1がCSPに保存したハッシュチェーン情報に基づいて、CSPは、ユーザu
2から送信されたハッシュ情報を検証してもよい。検証の結果が正であれば、CSPは、重複排除のためAPおよびユーザu
1に連絡してもよい。なお、APおよびユーザu
1には、同時または任意の順番で順次連絡してもよい。
図2では、CSPはまずAPに連絡し、その後ユーザu
1に連絡している。
【0097】
例えば、ステップ226において、CSPは、PK'_u
2によりSign(HC(M
x),SK'_u
2)を検証し、受信したHC(M
x)がCSPにすでに保存されているHC(M
x)と同一であるかを確認してもよい。この確認の結果が正の場合、CSPはステップ228に進んでもよい。ステップ228において、CSPは、ユーザu
2のPRE用公開鍵情報を、まだAPと共有されていない場合、APに送信してもよい。例えば、CSPは、認証Cert(pk_u
2)(pk_u
2を含む)をAPに送信してもよい。
【0098】
次にステップ230において、APは、ユーザu
2に関する第三者でのデータ記憶ポリシーを検証してもよい。検証結果が正であれば、APは、ユーザu
2に対す再暗号化情報を生成してもよい(利用不能な場合)。例えば、適格なデータ保持者に関する第三者でのデータ記憶ポリシーは、適格なデータ保持者のPRE用の公開鍵情報を含むアクセスポリシーであってもよく、ステップ212においてデータ所有者u
1により生成され、ステップ214においてCSPに送信され、ステップ228においてAPに送信されてもよい。あるいは、APに対しては別の安全な方法で送信されてもよい。さらに、例えばAPは、RG(pk_AP,sk_AP,pk_u
2)を呼び出してrk_AP−>u
2を生成してもよい(利用不能な場合)。続いてステップ232において、APは、再暗号化情報をCSPに送信してもよい。例えば、APはrk_AP−>u
2をCSPに対して、セキュアチャネルを使用して発行してもよい。
【0099】
ステップ234において、CSPは、再暗号化情報によりCK1_u
1を再暗号化してもよい。例えば、CSPは、R(rk_AP−>u2,E(pk_AP,DEK1_u
1))=E(pk_u
2,DEK1_u
1)を呼び出してCK1_u
1を再暗号化してもよい。続いてステップ236において、CSPは、再暗号化されたCK1_u
1(すなわちE(pk_u
2,DEK1_u
1))をユーザu
2に通知してもよい。ユーザu
2は、E(pk_u
2,DEK1_u
1)について受領通知をCSPに送信してもよい。続いてステップ238において、ユーザu
2は、再暗号化されたCK1_u
1(すなわちE(pk_u
2,DEK1_u
1))をその秘密鍵sk_u
2(例えばD(sk_u
2,E(pk_u
2,DEK1_u
1))を呼び出すことにより)復号してもよい。
【0100】
ステップ240において、CSPは、重複排除のためにデータ所有者u
1に連絡してもよい。例えば、CSPは、データMのデータ識別子(例えばH(M))と、ユーザu
2のABE用の公開鍵情報(例えば、PK_u
2を含むCert(PK_u
2))をユーザu
1に送信してもよい。
【0101】
次にステップ242において、ユーザu
1は、ユーザu
2に関する第三者でのデータ記憶の適格性を検証してもよい。この検証の結果が正であれば、ユーザu
1は、ユーザu
2に対する個別化属性秘密鍵を生成してもよい。例えば、ユーザu
1は、Cert(PK_u
2)を検証し、IssueIDSK(ID,SK_u
1,PK_u
2)を呼び出してsk_(ID,u
1,u
2)を生成してもよい。上述のようにIssueIDSKアルゴリズムは、PK_u
2が適格な属性IDであるかを確認してもよい。
【0102】
次にステップ244において、ユーザu
1は、ユーザu
2に対する個別化属性秘密鍵と、任意で暗号化されたDEK2とをユーザu
2に発行してもよい。例えば、ユーザu
1は、sk_(ID,u
1,u
2)と、任意でCK2_u
1とをユーザu
2に発行してもよい(セキュアチャネルまたはPKCを使用する)。なお、CK2_u
1がCSPにより共有されている場合、ユーザu
1は、ユーザu
2に対する個別化属性秘密鍵のみを発行してもよい。
【0103】
次にステップ246において、ユーザu
2は、ユーザu
2に対する個別化属性秘密鍵に基づいて暗号化されたDEK2を復号し、得られたDEK2とDEK1とを結合してDEKを取得してもよい。例えば、ユーザu
2は、DecryptKey(CK
2_u
1,A,SK_u
2,sk_(ID,u
1,u
2))を呼び出してCK2_u
1を復号して、DEK2_u
1を取得し、CombineKey(DEK1_u
1,DEK2_u
1)を呼び出して、ステップ238で得られたDEK1_u
1とDEK2_u
1を結合してDEK_u
1を取得してもよい。このようにして、ユーザu
2は、CSPに重複データを保存することなく、取得したDEK_u
1によりCT_u
1を復号してもよい。
【0104】
ステップ248において、ユーザu
1は、CSPにデータ重複排除成功を通知してもよい。例えば、ユーザu
1は、Cert(PK_u
2)とH(M)をCSPに送信してもよい。この通知を受けて、CSPはステップ250において、対応する重複排除情報(例えば、Cert(PK_u2)およびH(M))を自身のシステムに記録してもよい。例えば、CSPは、ユーザu
2に対するハッシュ情報H(M)の重複排除記録を更新してもよい。このとき、ユーザu
1およびu
2の両方がCSPに保存された同一のデータMに自由にアクセスできる。ユーザu
1は、DEK_u
1を直接使用してもよく、ユーザu
2は、ステップ246においてDEK_u
1を取得してもよい。
【0105】
図3は、本開示の実施形態に係る、権限者による制御に基づくデータ重複排除のための全体的なシステム処理のフローチャートを示す。
図2および3に示す2つの処理の主な違いは、DEKの分割の仕方である。具体的には、
図2では、DEK1+DEK2=DEKとなり、DEK1とDEK2の両方が非NULLのため、重複排除制御はデータ所有者とAPの両方を要する。一方、
図3では、DEK2はNULLで、DEK1(非NULL)=DEKとなる。したがって、重複排除はAPのみによって制御される。
【0106】
図2および3に示す2つの処理の違いを以下に詳述する。ステップ202aおよび202bと同様のステップ302aおよび302bにおいて、ABE制御が不要であるため鍵組(PK_u
i、SK_u
i)を省略してもよい。次に、ステップ212と同様のステップ312において、DEK1がDEKに設定され、DEK1のみがPRE方式に沿って暗号化される。したがって、ステップ314においてCK2は省略できる。さらに、
図2に示すABEに基づく重複排除ステップは省略可能である。
【0107】
図4は、本開示の実施形態に係る、データ所有者による制御に基づくデータ重複排除のための全体的なシステム処理のフローチャートを示す。
図2および4に示す2つの処理の主な違いは、DEKの分割の仕方である。具体的には、
図2では、DEK1+DEK2=DEKとなり、DEK1とDEK2の両方が非NULLのため、重複排除制御はデータ所有者とAPの両方を要する。一方、
図4では、DEK1はNULLで、DEK2(非NULL)=DEKとなる。したがって、重複排除はデータ所有者のみによって制御される。
【0108】
図2および4に示す2つの処理の違いを以下に詳述する。ステップ202aおよび202bと同様のステップ402aおよび402bにおいて、PRE制御が不要であるため、鍵組(PK_u
i,SK_u
i)を省略してもよい。さらに、ステップ402dも省略してもよい。次に、ステップ212と同様のステップ412において、DEK2がDEKに設定され、DEK2のみがABE方式に沿って暗号化される。したがって、ステップ414においてCK1は省略できる。さらに、
図2に示すPREに基づく重複排除ステップは省略可能である。
【0109】
図5は、本開示の実施形態に係る、権限者、データ所有者のいずれの制御も介さないデータ重複排除のための全体的なシステム処理のフローチャートを示す。ここで、DEKはNULLであるため、CSPには平文が保存される。
【0110】
ステップ502において、各ユーザとCSPにおいて、システム設定が実行されてもよい。各ユーザu
iは、InitiateNode(u
i)を呼び出して1の鍵組(PK'_u
i,SK'_u
i)(i=1、2、…)を生成してもよい。一方、各ユーザu
iは、自身で生成した公開鍵Cert(PK'_u
i)に対応する認証を、権利を有する第三者(PKIにおけるCA)またはCSPから取得してもよい。例えばステップ502aにおいて、ユーザu
1は1つの鍵組(PK'_u
1,SK'_u
1)を生成し、その生成した公開鍵に対応する認証Cert(PK'_u
1)を取得してもよい。ステップ502bにおいて、ユーザu
2は、1つの鍵組(PK'_u
2,SK'_u
2)を生成し、その生成した公開鍵に対応する認証Cert(PK'_u
2)を取得してもよい。ステップ502cにおいて、CSPは、公開鍵PK'_u
iを受領し、対応する認証Cert(PK'_u
i)を各ユーザu
iに発行してもよい。
【0111】
ステップ504において、ユーザu
1は、データMのハッシュ情報を生成してもよい。ハッシュ情報は、少なくともデータMのハッシュコードを含んでもよい。例えば、ユーザu
1は、H(M)を計算し、SK'_u
1によりH(M)を署名し、Sign(H(M),SK'_u
1)としてもよい。ここで、Sign()は署名関数を示す。
【0112】
次にステップ506において、ユーザu
1は、少なくともデータMのハッシュ情報を送信してもよい。例えば、ユーザu
1は、パッケージP
1={H(M),Sign(H(M),SK'_u
1),Cert(PK'_u
1)}をCSPに送信してもよい。
【0113】
次にステップ508において、CSPは、同じデータMを保存しているかを確認してもよい。同じデータがCSPに保存されていない場合、CSPは、ユーザu
1にデータ送信を要求してもよく、同じデータがCSPに保存されている場合、ステップ520にて詳細に後述するように、CSPは、ユーザu
1が所有者であるかを検証してもよい。なお、ステップ508および520は実質的に同じである。ここでは最初にアップロードしたのがデータ所有者であるため、ステップ508においてCSPはユーザu
1にデータアップロードを要求する。
【0114】
例えば、ステップ508において、CSPは、認証Cert(PK'_u
1)を検証し、PK'_u
1により署名Sign(H(M),SK'_u
1)を検証し、その後CSPに同じH(M)が記録されているかを確認してもよい。ここではユーザu
1(すなわちデータ所有者)が最初にアップロードしているので、ステップ510においてCSPはユーザu
1にデータを要求してもよい。
【0115】
次にステップ512において、ユーザu
1は、データMのインデックスリストとハッシュチェーン情報を計算してもよい。例えば、ユーザu
1は、インデックスリストIN={In
1,In
2,…,In
k}をランダムに選択してもよい。当該リストは、Mの特定の部位を示す(例えばIn
1はデータの最初の1%を示し、In
2はデータの最初の1.2%を示す)。さらに、ユーザu
1はインデックスに基づいて各種Mの部位のハッシュコードを計算して、HC(M)={H(M
1),
H(M
2),…,H(M
k)}を取得してもよい。さらにユーザu
1は、SK'_u
1によりHC(M)を署名して、Sign(HC(M),SK'_u
1)を取得してもよい。
【0116】
次にステップ514において、ユーザu
1は、少なくともインデックスリスト、ハッシュチェーン情報、データMを送信してもよい。ハッシュチェーン情報は、少なくともデータMのハッシュチェーンを含んでもよい。例えば、ユーザu
1は、データパッケージDP
1={M_u
1,In,HC(M),Sign(HC(M),SK'_u
1)}をCSPに送信してもよい。続いてステップ516において、CSPはデータパッケージを保存してもよい。
【0117】
次にステップ518において、ユーザu
2は、すでに保存された同じデータMをCSPに保存しようとしてもよい。ステップ506と同様に、ユーザu
2は、少なくともデータMのハッシュ情報を送信してもよい。例えば、ユーザu
2は、パッケージP2={H(M),Sign(H(M),SK'_u
2),Cert(PK'_u
2)}をCSPに送信してもよい。
【0118】
次にステップ508と同様に、ステップ520において、CSPは、同じデータMを保存しているかを確認してもよい。CSPに同じデータが保存されていなければ、CSPは、ユーザにデータ送信を要求してもよい。CSPに同じデータが保存されていれば、CSPは、ユーザが所有者かを検証してもよい。ユーザu
1により同じデータがCSPに保存されているので、この確認結果は正となる。この場合、CSPは、ユーザu
2にインデックスリストの少なくとも1つのインデックスまたは複数のインデックスに対応するハッシュ情報の送信を要求してもよい。例えば、CSPは、少なくとも1つのインデックxをランダムに選択してもよい。さらに、CSPは、PK'_u
2により少なくとも1つのインデックスxを暗号化してE(x,PK'_u
2)としてもよい。続いてステップ522において、CSPは、インデックス情報(例えば、E(x,PK'_u
2))をユーザu
2に送信してもよい。なお、このステップでは、データの保持者を確定するため、CSPは複数のHC(M
x)を検証してもよい。
【0119】
次にステップ524において、ユーザu
2は、対応するハッシュ情報を計算して、CSPに送信してもよい。対応するハッシュ情報は、CSPから送信された少なくとも1つのインデックスに対応するハッシュ情報を少なくとも含んでもよい。例えば、ユーザu
2は、ハッシュコードHC(M
x)を計算してもよく、ここで、M
xはCSPから送信された少なくとも1つのインデックスxに対応するMの部位を示す。さらに、ユーザu
2は、SK'_u
2によりHC(M
x)を署名して、Sign(HC(M
x),SK'_u
2)としてもよい。ユーザu
2は、HC(M
x)およびSign(HC(M
x),SK'_u
2)をCSPに送信してもよい。
【0120】
次にステップ526において、ユーザu
1がCSPに保存したハッシュチェーン情報に基づいて、CSPは、ユーザu
2から送信されたハッシュ情報を検証してもよい。検証の結果が正であれば、CSPは、ユーザu
2に対するハッシュ情報H(M)の重複排除記録を更新してもよい。このようにして、ユーザu
2は、重複データをCSPに保存することなく、データにアクセスできる。
【0121】
なお、
図2から
図5に示す実施形態では、DEK2はアクセスポリシー(すなわちCP−ABE方式が採用される)で暗号化されるが、本開示はこれに限定されない。例えば、本開示の実施形態ではKP−ABEを採用してもよい。
【0122】
図6は、本開示の実施形態に係る、複数のCSPの協働によるデータ重複排除の処理のフローチャートを示す。ステップ602において、ユーザはそのローカルCSPにデータの記憶を要求してもよい。例えば、ステップ602の処理はステップ204(または304、404、504)および206(または306、406、506)と同様であってもよい。
【0123】
次にステップ604において、ローカルCSPは、データ重複が生じたかを確認してもよい。ステップ604での確認結果が正であれば、ローカルCSPはステップ606に進んで、重複排除ポリシーに基づいて重複排除をローカルCSP自身またはデータ所有者および/またはAPに連絡して実行してもよい。例えば、重複排除ポリシーは、データ所有者から何らかのCK受信したか、どのような種類のCK(複数可)が受信されたかに応じて決定されてもよい。CKが受信されてなければ、CSPは自身で重複排除を実行してもよい。CSPは、CK1が受信されていればAPに連絡してもよく、CK2が受信されていればデータ所有者に連絡してもよい。ただし、本開示はこれに限定されない。別の例として、ステップ214、314、414、または514において、重複排除ポリシーを単純にデータパッケージにより送信してもよく、あるいはその他の安全な方法でCSPに送信してもよい。さらなる例として、重複排除ポリシーは事前に決定され(例えば、ユーザu1とCSPとの間の契約に応じて決定)、CSPのシステムに予め記憶されてもよい。
【0124】
ステップ604および606の処理は、ステップ(220、222、226、228、234、236、240および250)、ステップ(320、322、326、328、334および336)、またはステップ(520、522および526)の処理と同様であってもよい。
【0125】
一方、ステップ604の確認結果が否であれば、ローカルCSPは返答ステップ608に進んで、同じデータが記憶されたかを別のCSPに確認してもよい(例えば、ユーザのデータ記憶要求の一斉送信による)。別のCSPから保存されたという応答が得られなかった場合、ローカルCSPは、ステップ612においてユーザからデータパッケージを要求することで、データの記憶を実行してもよい。一方、同じデータを自身のストレージシステムに記憶しているという応答をしたリモートCSP'が存在すれば、ローカルCSPは、ステップ614において、ユーザデータ重複情報をローカルに記録してもよい。なお、ローカルCSPは、任意でリモートCSP'に重複排除要求を送信し、重複排除を生じさせてもよい。ステップ616において、リモートCSP'は、重複排除を自身で、またはデータ所有者および/またはAPに連絡して実行してもよい。所有者および/またはAPに連絡する場合、所有者および/またはAPにより対応する鍵が生成され、CSPおよびCSP'協働の下、ユーザに発行されてもよい(例えば、CSP'がCSPを介してユーザに連絡してもよい)。ステップ616の処理は、ステップ(220、222、226、228、234、236、240、250)、ステップ(320、322、326、328、334、336)、またはステップ(520、522、526)の処理と同様であってもよい。ただし、ステップ610において、CSP'に同一のデータが保存されていると判定されていることから、ステップ616において、CSP'は、直接ハッシュチェーンによる検討に進んでもよい。
【0126】
図7は、本開示の実施形態に係るデータ削除処理のフローチャートを示す。ステップ702において、ユーザuは、データ削除要求をそのローカルCSPに送信してもよい。データ削除要求は、少なくともデータMのハッシュ情報を含んでもよい。例えば、ユーザuは、H(M)およびSign(H(M),SK'_u)をローカルCSPに送信してもよい。
【0127】
次にステップ704において、CSPは、ユーザuが所有者であるかを検証し、検証結果が正であればCSPはユーザuの記憶の記録を削除し、当該ユーザへのデータMへの今後のアクセスをブロックしてもよい。ユーザuが所有者であるかの検証は、ステップ(220、222、226)での所有者であるかの検証処理と同様であってもよい。
【0128】
次にステップ706において、CSPは、データがローカルで保存されているかを確認してもよい。ステップ706の確認結果が正であれば、ステップ718において、CSPは、データ重複記録が空であるか(すなわち、当該データがユーザによりCSPにこれ以上保存されないか)を確認してもよい。ステップ718の確認結果が正であれば、CSPは、データを削除してもよい。一方、ステップ718の確認結果が否であれば、CSPは、データ所有者に連絡して、
図9を参照して後述するようなDEK更新を実行してもよい。ユーザuがデータ所有者であれば、CSPは、重複排除制御を継続するかをユーザuに問い合わせてもよい。これは
図8を参照して後述する。
【0129】
一方、ステップ706の確認結果が否であれば、ローカルCSPは、ステップ708において、実際にデータを保存しているリモートCSP'に連絡してもよい。例えば、CSPは、データ削除要求をCSP'に転送してもよい。ステップ710において、CSP'はユーザuの記憶の記録を削除し、当該ユーザへのデータMへの今後のアクセスをブロックしてもよい。続いてステップ718と同様に、ステップ712において、CSP'は、データ重複記録が空であるか(すなわち、当該データがユーザによりCSP'にこれ以上保存されないか)を確認してもよい。ステップ712の確認結果が正であれば、CSP'はステップ714において、データを削除してもよい。一方、ステップ712の確認結果が否であれば、CSP'はステップ714において、データ所有者に連絡して、
図9を参照して後述するようなDEK更新を実行してもよい。上述の場合と同様に、ユーザuがデータ所有者であれば、CSP'は重複排除制御を継続するかをユーザuに問い合わせてもよい。これは
図8を参照して後述する。
【0130】
図8は、本開示の実施形態に係るデータ重複排除制御の継続処理のフローチャートを示す。ここでは、データ所有者はCSPにおける自身のデータを削除するが、CSPにおいて同一のデータを記憶している別の適格なデータ保持者が存在している。したがって、CSPは、データ所有者に重複排除制御の継続について問い合わせる。
【0131】
ステップ802において、CSPは、データ所有者に対して重複排除制御の継続について問い合わせる。ステップ802でのデータ所有者の判定が正であれば、データ所有者はステップ812において、例えば適格なユーザにアクセス鍵を発行することで、重複排除制御を継続してもよい。一方、ステップ802でのデータ所有者の判定が否であれば、データ所有者は、ステップ806において重複排除制御をAPに転送してもよい。例えば、データ所有者は、新たにDEK'=DEK'1を生成し、これをpk_APで暗号化し、DP'={CT',CK1'}をCSPに送信してもよい。ステップ808において、CSPは、すべての適格なユーザの再暗号化鍵を使用してCK1'を再暗号化し、元のデータの重複排除記録を更新してもよい。ステップ810において、任意の適格なデータユーザがデータにアクセスすると、CSPはCT'および再暗号化されたCK1'を適格なユーザに提供してもよい。
【0132】
なお、
図8は単に重複排除制御の継続の一つの可能性を示すものであって、本開示はこれに限定されない。例えば、他のデータ保持者が重複排除制御を引き継いでもよい。この場合、CSPは、既存の複数のデータ保持者から新たな代理人を求めてもよいし、それらの1つを選択してもよい(例えば、データ記憶期間および/またはユーザの希望に従う)。新たな代理人は、新たなDEK'を生成し、その新たなDEK'を適用して記憶の更新を実行する。この処理は、
図9を参照して後述するDEKの更新と同様である。
【0133】
図9は、本開示のある実施形態に係る、データ暗号化鍵および暗号文更新のための全体的なシステム処理のフローチャートを示す。ステップ912において、データ所有者(または適格なデータ保持者)u
1は、新たなデータ暗号化鍵DEK'を生成し、DEK'によりデータMを暗号化し、DEK'をDEK1'およびDEK2'に分割し、PRE方式に沿ってDEK1'を暗号化し、ABE方式に沿ってDEK2'を暗号化してもよい。例えば、ユーザu
1は、新たな対称鍵DEK'_u
1によりデータMを暗号化してCT'_u
1=Encrypt(DEK'_u
1,M)を取得してもよい。ユーザu
1は、SeparateKey(DEK'_u
1)を呼び出して、DEK'_u
1の2つのランダムな部位、すなわちDEK1'_u
1とDEK2'_u
1とを取得してもよい。ユーザu
1は、EncryptKey(DEK2'_u
1,A,pk_(ID,u
1))を呼び出して、pk_(ID,u
1)によりDEK2'_u
1を暗号化して、CK2'_u
1を取得してもよい。ユーザu
1は、E(pk_AP,DEK1'_u
1)を呼び出して、pk_APによりDEK1'_u
1を暗号化して、CK1'_u
1を取得してもよい。
【0134】
次にステップ914において、ユーザu
1は、ハッシュおよび/またはハッシュチェーン情報、新たな暗号化されたデータ、新たな暗号化されたDEK1、新たな暗号化されたDEK2を送信してもよい。ハッシュまたはハッシュチェーン情報は、少なくともデータMのハッシュコードまたはハッシュチェーンを含んでもよい。例えば、ユーザu
1は、データパッケージDP
1'={CT'_u
1,CK1'_u
1,CK2'_u
1,H(M)および/またはHC(M),Sign(H(M),SK'_u
1)および/またはSign(HC(M),SK'_u
1)}をCSPに送信してもよい。次にステップ916において、CSPは、ユーザu
1が適格かを検証し、結果をDP1'に記憶してもよい。例えば、CSPは、Sign(H(M),SK'_u
1)および/またはSign(HC(M),SK'_u
1)をPK'_u
1により検証することで、ユーザu
1が適格かを検証してもよい。
【0135】
次にステップ928において、rk_AP−>u
2が利用できない場合、CSPは、任意の適格なデータ保持者(例えば、ユーザu
2)のPRE用の公開鍵情報をAPに送信してもよい。例えば、CSPは、認証Cert(pk_u
2)(pk_u
2を含む)をAPに送信してもよい。
【0136】
次にステップ930において、APは、ユーザu
2に関する第三者でのデータ記憶ポリシーを検証してもよく、検証結果が正であれば、APは、ユーザu
2に対する再暗号化情報を生成してもよい(利用できない場合)。例えば、APは、RG(pk_AP,sk_AP,pk_u
2)を呼び出して(利用できない場合)、rk_AP−>u
2を生成してもよい。次にステップ932において、APは、CSPに再暗号化情報を発行してもよい。例えば、APは、rk_AP−>u
2を例えばセキュアチャネルを利用してCSPに発行してもよい。
【0137】
次にステップ934において、CSPは、再暗号化情報によりCK1'_u
1を再暗号化してもよい。例えば、CSPは、R(rk_AP−>u
2,E(pk_AP,DEK1'_u
1))=E(pk_u
2,DEK1'_u
1)を呼び出してCK1'_u
1を再暗号化してもよい。次にステップ936において、CSPは、ユーザu
2に再暗号化されたCK1'(すなわちE(pk_u
2,DEK1'_u
1))と新たな暗号化されたDEK2'(すなわちCK2'_u
1)を通知してもよい。ユーザu
2は、E(pk_u
2,DEK1'_u
1)の受領確認をCSPに送信してもよい。
【0138】
次にステップ944において、ユーザu
1は、ユーザu
2に対する個別化属性秘密鍵をユーザu
2に発行してもよい(未送信の場合)。例えば、ユーザu
1は、(未送信の場合)sk_(ID,u
1,u
2)をユーザu
2に対して発行してもよい(セキュアチャネルまたはPKCを使用)。
【0139】
次にステップ946において、ユーザu
2は、例えばDecryptKey(CK
2'_u
1,A,SK_u
2,sk_(ID,u
1,u
2))を呼び出してCK2'_u
1(ステップ936で取得)を復号してDEK2'_u
1を取得し、自身の秘密鍵sk_u
2により再暗号化されたDEK1'_u
1(すなわちE(pk_u
2,DEK1'_u
1))を復号し、CombineKey(DEK1'_u
1,DEK2'_u
1)を呼び出してDEK1'_u
1とDEK2'_u
1を結合してDEK'_u
1を取得してもよい。このようにして、ユーザu
2はDEK'_u
1により新たな暗号化されたデータCT'_u
1にアクセスできる。
【0140】
なお、上述の処理ではデータ所有者u
1が、秘密鍵がどこからすでに発行済みであるか把握しており、CSPがこの情報をデータ所有者に通知する必要がないとされている。仮にデータ所有者がこの情報を失った場合、適格性確認の更新により古いユーザがさらにアクセスできなくなった場合、またはデータ所有者が秘密鍵の発行に遅れると、CSPによる通知が必要となり得る。この場合、ステップ940において、CSPは、データMのデータ識別子(例えば、H(M))と、適格なデータ保持者のABE用の公開鍵情報(例えば、PK_u
2を含むCert(PK_u
2))をユーザu
1に送信してもよい。
【0141】
なお、
図9においてデータ所有者およびAPの両方の重複排除制御が必要な状況のみ示している。
図3および4と同様に、DEK1'=DEK'またはDEK2'=DEK'を設定して、別の重複排除制御用のステップを省略することで、APの重複排除制御のみが必要な状況またはデータ所有者の重複排除制御のみが必要な状況に対するDEKの更新処理が実現できる。
【0142】
図10は、本開示のある実施形態に係るユーザ装置において、データの記憶を管理する処理のフローチャートを示す。当該処理は、本開示の機能を実現するため、ユーザ装置により実行されてもよい。まず、ステップ1002において、DEKはNULL値または非NULL値を有するように設定されてもよい(例えば、異なる記憶状況および/または重複排除ポリシーに基づく)。次にステップ1004において、DEKがNULL値を有するかを判定してもよい。ステップ1004において、DEKがNULL値を有すると判定されると、データは通信ネットワークにおけるデータセンターに送信されて、記憶される。一方、ステップ1004において、DEKが非NULL値を有すると判定されると、ステップ1008においてデータはDEKにより暗号化されてもよい。
【0143】
次にステップ1010において、DEKは、第1のDEKおよび第2のDEKに分割されてもよい(例えば、異なる記憶状況および/または重複排除ポリシーに基づく)。第1および第2のDEKはそれぞれNULL値または非NULL値を有する。次にステップ1012において、第1のDEKは非NULL値を有する場合、プロキシ再暗号化(PRE)方式に沿って暗号化されてもよく、第2のDEKは非NULL値を有する場合、属性ベース暗号(ABE)方式に沿って暗号化されてもよい。次にステップ1014において、暗号化されたデータと、存在するならば暗号化された第1のDEKと、存在するならば暗号化された第2のDEKとをデータセンターに送信、保存してもよい。ステップ1002〜1014の処理は、ステップ(212、214)または(312、314)または(412、414)または(512、514)の処理と同様であってもよい。
【0144】
さらに、DEK2が非NULL値を有する場合(すなわちデータ所有者の重複排除制御が必要な場合)、ステップ1016において、重複排除要求の受信に応じて、個別化属性秘密を生成して、適格なユーザに発行してもよい。ステップ1016の処理は、ステップ(242、244)または(442、444)の処理と同様であってもよい。
【0145】
任意でステップ1018において、別データの適格な保持者は、当該別データに対する再暗号化されたDEK1'と、当該別データに対する暗号化されたDEK2'と、個別化属性秘密鍵を受信してもよい。復号を実行してDEK1'およびDEK2'を取得し、DEK1'およびDEK2'を結合してデータ重複排除に対するDEK'を取得してもよい。ステップ1018の処理は、ステップ(238、246)、または338、446の処理と同様であってもよい。
【0146】
図11は、本開示のある実施形態に係る通信ネットワークにおいて、データの記憶を管理する処理のフローチャートを示す。当該処理は、本開示の機能を実現するため、データセンターにより実行されてもよい。まず、ステップ1102において、データ記憶要求がユーザにより受信されてもよい。ステップ1102の処理は、ステップ(206、218)または(306、318)または(406、418)または(506、518)の処理と同様であってもよい。次にステップ1104において、データセンターに同じデータが記憶済みかを判定してもよい。ステップ1104において、データセンターにおいて同じデータが記憶済みではないと判定されると、暗号化データ、存在するならば暗号化された第1のデータ暗号化鍵(DEK)、存在するならば暗号化された第2のデータ暗号化鍵(DEK)、またはデータを第1のデバイスから受信し、データセンターに保存してもよい。なお、暗号化データはDEKによりデータを暗号化することで生成される。DEKは第1のDEKおよび第2のDEKに分割される。第1のDEKおよび第2のDEKはそれぞれNULL値または非NULL値を有する。ステップ1106において、暗号化された第1のDEKは、プロキシ再暗号化(PRE)方式に沿って第1のDEKを暗号化することで生成され、第2のDEKは、第2のDEKを属性ベース暗号(ABE)方式に沿って暗号化することで生成される。ステップ1104および1106の処理は、ステップ(208、210、216)または(308、310、316)または(408、410、416)または(508、510、516)の処理と同様であってもよい。
【0147】
一方、ステップ1104において、同じデータがデータセンターに保存済みであると判定されれば、ステップ1108においてAPの重複排除制御が必要か判定されてもよい(例えば、第1のデバイスから受信したデータに暗号化された第1のDEKが存在するかに基づく)。ステップ1108において、APの重複排除制御が不要であると判定された場合、処理はステップ1112に進んでもよい。一方、ステップ1108においてAPの重複排除制御が必要であると判定されると、APに連絡してPRE方式に沿った重複排除を実行してもよい。ステップ1108および1110の処理は、ステップ(228、232、234、236)または(328、332、334、336)の処理と同様であってもよい。ステップ228または328において、APの重複排除制御が必要であると判断されているため(例えば、第1のデバイスから受信したデータが暗号化された第1のDEKを含むという事実に基づく)、APに連絡して重複排除を実行してもよい。ステップ232または332において、APから再暗号化鍵を受信してもよい。ステップ234または334において、暗号化された第1のDEKを再暗号化鍵により再暗号化してもよい。ステップ236または336において、再暗号化された第1のDEKを適格なデータ保持者に発行してもよい。
【0148】
次にステップ1112において、データ所有者の重複排除制御が必要か判断される(例えば、第1のデバイスから受信したデータに暗号化された第2のDEKが存在するかに基づく)。ステップ1112において、データ所有者の重複排除制御が不要であると判断されると、ステップ1116において処理が終了してもよい。一方、ステップ1112においてデータ所有者の重複排除制御が必要であると判断されると、ステップ1114においてデータ所有者に連絡してABE方式に沿った重複排除を実行してもよい。ステップ1112および1114の処理は、ステップ240または440と同様であってもよい。その後、ステップ1116において処理が終了してもよい。
【0149】
上述の説明に基づき、本開示により以下の技術的効果が得られる。
(1)拡張性:本開示は、1つのCSPおよび複数のCSPで生じた大規模な重複データ記憶に対応できる。各記憶領域を節約するため、重複確認および重複排除が複数のCSP間で実行されてもよい。
(2)柔軟性:本開示は、重複排除およびアクセス制御の両方に対応するためのポリシーA更新により、ABEに基づくDEK2暗号化に制御属性(アクセスポリシー)を導入することで、データ所有者が扱う他のデータアクセス制御機構と協働可能である。これにより、データ所有者の期待に沿ったデジタル著作権管理に対応できる。さらに、集中型データアクセス制御機構とも協働可能である。これは、CSPでの権限者(AP)および/またはCK1再暗号化における再暗号化鍵生成用の確認に、アクセスポリシーを絡めることで実現される。本発明の柔軟性により、データ所有者の意図に応じて分散型制御、集中型制御の一方または両方に対応可能となる。
(3)データ所有者がABEを採用する、さらに/あるいはAPにPREを適用することで、データアクセスおよび重複排除に使用される属性(例えば信頼レベルおよび識別子)を含むアクセスポリシー木を容易に構築でき、アクセスおよび重複排除のための委任制御が可能となるようAPにポリシーを絡めることが容易となる。
(4)低コストストレージ:本開示によると、複数のCSPについて記憶容量を節約できることは明白である。1つのデータは、多数のCSPをまたいで1つのコピーのみ記憶される。各CSPで重複排除記録を記憶するのには、ある程度記憶容量またはメモリを消費する可能性があり、追加の重複確認や重複排除処理は、ある程度のメモリおよび処理コストを要する可能性がある。しかし、このようなコストは重複データの記憶を大量に節約できることを考えると、些細なものである。
(5)安全性:本開示では、安全性がABE理論、PRE理論、対称鍵暗号化、および公開PKC理論で裏付けられている。一次元重複排除制御よりも二次元重複排除制御のほうが安全であろう。さらに、データの所有者検証のため、ランダムなハッシュチェーン確認を適用した。重複排除を実現するため、同時にデータ記憶管理に対応するため、追加の管理プロトコルを適用してもよい。
【0150】
図12は、本開示のいくつかの例示的実施形態を実施する際に好適に用いられる装置を示す概略ブロック図である。例えば、
図1に示すユーザ装置110、データセンター120または120'、AP130の少なくとも1つが、装置1200により実現できる。図示のとおり、装置1200は、データプロセッサ(DP)1210、プログラム(PROG)1230を記憶するメモリ(MEM)1220、有線および/または無線通信で別の外部デバイスとデータを通信するための通信インターフェース1240を備える。
【0151】
PROG1230は、DP1210によって実行されたとき、上述のとおり本開示の例示的実施形態に従って装置1200を動作させることができるプログラム命令を含むと想定される。すなわち、本開示の例示的実施形態は、少なくとも部分的に、DP1210によって実行可能なコンピュータソフトウェア、またはハードウェア、またはソフトウェアとハードウェアの組合せによって実施されてもよい。
【0152】
MEM1220は、ローカル技術的環境に適切な任意の種類のものでよく、半導体によるメモリデバイス、フラッシュメモリ、磁気的メモリデバイスおよびシステム、光学的メモリデバイスおよびシステム、固定型メモリおよび着脱可能メモリ等の任意の適切なデータ記憶技術を使用して実施されてもよい。DP1210は、ローカル技術的環境に適切な任意の種類のものでよく、非限定的な例として汎用コンピュータ、専用コンピュータ、マイクロプロセッサ、デジタル信号プロセッサ(DSP)、およびマルチコアプロセッサアーキテクチャによるプロセッサの内の1つ以上を含んでもよい。
【0153】
一般的に、上述の様々な例示的実施形態は、ハードウェアまたは専用回路、ソフトウェア、論理回路またはこれらの任意の組合せによって実施されてもよい。例えば、いくつかの態様はハードウェアで実施されてもよく、他の態様はコントローラ、マイクロプロセッサ、またはその他のコンピュータデバイスによって実行されてもよいファームウェアまたはソフトウェアによって実施されてもよいが、本開示はこれらに限定されない。本開示の例示的実施形態の様々な態様がブロック図、フローチャート、またはその他の何らかの図表によって示され記載されているが、本明細書に記載されたこれらのブロック、装置、システム、技術または方法は、非限定的な例として、ハードウェア、ソフトウェア、ファームウェア、専用回路または論理回路、汎用ハードウェアまたはコントローラ、またはその他のコンピュータデバイス、あるいはこれらの何らかの組合せで実施されてもよいことが理解されよう。
【0154】
このように、本開示の例示的実施形態の少なくともいくつかの態様は、集積回路チップおよびモジュール等の様々な要素に実施されてもよいことが理解されよう。本開示の例示的実施形態は、本開示の例示的実施形態に従って動作するように構成されたデータプロセッサ、デジタル信号プロセッサ、ベースバンド回路、および無線周波数回路の内の少なくとも1つを実施するための回路(同様にファームウェアも)を含む集積回路として実施された装置に実現されてもよいことが理解されよう。
【0155】
本開示の例示的実施形態の少なくともいくつかの態様は、例えば1つ以上のプログラムモジュール中にあり、1つ以上のコンピュータまたはその他のデバイスによって実行されたコンピュータ実行可能命令によって実施されてもよいことが理解されよう。一般的に、プログラムモジュールには、コンピュータ中のプロセッサまたはその他のデバイスによって実行されたときに、特定のタスクを行う、または特定の抽象データタイプを実施する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等が含まれる。コンピュータ実行可能命令は、ハードディスク、光学ディスク、着脱可能な記憶媒体、固体メモリ、RAM等のコンピュータ可読媒体に記憶されてもよい。当該技術分野の当業者には自明であるが、プログラムモジュールの機能は、様々な実施形態において望ましいように組み合わされても分散されてもよい。さらに、これらの機能は、その全体または一部が、ファームウェア、または集積回路、フィールドプログラマブルゲートアレイ(FPGA)等のハードウェア均等物によって実施されてもよい。
【0156】
本開示は、本明細書に明確に開示されたもののみならず、そこから一般化されたものも含めて、あらゆる新規の特徴や特徴の組合せを含む。上述の説明を添付の図面に照らせば、本開示の上述の例示的実施形態の様々な変形例および適用が当業者には明らかとなろう。あらゆる変形例は、非限定的な本開示の例示的実施形態の範囲に含まれる。