JP2020161945A - 暗号システム、ユーザ端末、ストレージ装置、暗号方法、認証方法、暗号プログラム、及び認証プログラム - Google Patents
暗号システム、ユーザ端末、ストレージ装置、暗号方法、認証方法、暗号プログラム、及び認証プログラム Download PDFInfo
- Publication number
- JP2020161945A JP2020161945A JP2019058382A JP2019058382A JP2020161945A JP 2020161945 A JP2020161945 A JP 2020161945A JP 2019058382 A JP2019058382 A JP 2019058382A JP 2019058382 A JP2019058382 A JP 2019058382A JP 2020161945 A JP2020161945 A JP 2020161945A
- Authority
- JP
- Japan
- Prior art keywords
- user terminal
- attribute
- ciphertext
- encryption
- encrypted data
- 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.)
- Pending
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
【課題】ユーザの属性を示すことなく、書き込み権限を管理すること。【解決手段】暗号システムは、第1ユーザ端末と、ストレージ装置と、を備える。第1ユーザ端末は、読み出し用の第1属性セットと、属性ベース暗号の第1暗号化鍵と、を用いて暗号化対象のデータを暗号化することで暗号データを生成し、一方向性関数に入力値を入力することで演算結果を生成し、書き込み用の第2属性セットと、属性ベース暗号の第2暗号化鍵と、を用いて入力値を暗号化することで暗号文を生成する。ストレージ装置は、暗号データとともに、暗号文、一方向性関数、及び演算結果を格納し、ユーザ属性セットを有する第2ユーザ端末から暗号データに対する書き込み要求を受信した場合、第2ユーザ端末が暗号文を復号できたことを条件として、第2ユーザ端末に暗号データに対する書き込みを許可する。【選択図】図7
Description
本発明は、暗号システム、ユーザ端末、ストレージ装置、暗号方法、認証方法、暗号プログラム、及び認証プログラムに関する。
近年、電子ファイルの数及びサイズの増加に伴い、クラウドストレージサービスが普及している。クラウドストレージを利用するにあたり、個人情報及び機密情報を保護するために、電子ファイルに暗号化が施される。暗号方式として、属性ベース暗号が知られている。属性ベース暗号は、ユーザごとに複数の属性を付与し、ユーザの属性に基づいて設定された復号条件(ポリシー)を満たすユーザのみが暗号文を復号可能な暗号技術である。
通常、ファイル共有システムでは、ファイルアクセス権として、読み出し権限と書き込み権限とがそれぞれのファイルに設定されている。属性ベース暗号では、ファイルを暗号化する際に設定された復号条件(属性の組み合わせ)が、ファイルの読み出し権限と対応する。しかし、ファイルの書き込み権限についてはそのような対応が存在しないので、そのままではファイルの書き換えによる改ざん等の問題が生じ得る。これに対し、属性ベース署名を用いた認証が行われることがある(例えば、特許文献1及び特許文献2参照)。
属性ベース署名を用いた認証では、ファイル書き込み時の属性による認証が可能となる。しかしながら、システム側にユーザが有する属性を明らかにする必要がある。このため、例えば、出身地等のプライバシー情報が属性として与えられていた場合には、プライバシー侵害となる可能性がある。また、金融情報等といった重要な情報についての属性が与えられていた場合、攻撃の対象となる可能性が高まる。
本技術分野では、ユーザの属性を示すことなく、書き込み権限を管理することが望まれている。
本発明の一側面に係る暗号システムは、属性ベース暗号を用いたシステムである。この暗号システムは、第1ユーザ端末と、第1ユーザ端末によって生成された暗号データを格納するストレージ装置と、を備える。第1ユーザ端末は、読み出し権限を有する属性の組み合わせである第1属性セットと、属性ベース暗号の第1暗号化鍵と、を用いて暗号化対象のデータを暗号化することで暗号データを生成する。第1ユーザ端末は、入力値を生成するとともに、一方向性関数に入力値を入力することで演算結果を生成する。第1ユーザ端末は、書き込み権限を有する属性の組み合わせである第2属性セットと、属性ベース暗号の第2暗号化鍵と、を用いて入力値を暗号化することで暗号文を生成する。ストレージ装置は、暗号データとともに、暗号文、一方向性関数、及び演算結果を格納する。ストレージ装置は、1以上の属性を含むユーザ属性セットを有する第2ユーザ端末から暗号データに対する書き込み要求を受信した場合、第2ユーザ端末が暗号文を復号できたことを条件として、第2ユーザ端末に暗号データに対する書き込みを許可する。
この暗号システムでは、書き込み権限を有する属性の組み合わせである第2属性セットと、属性ベース暗号の第2暗号化鍵と、を用いて入力値を暗号化することで暗号文が生成される。このため、第2ユーザ端末が書き込み権限に対応する属性を有している場合に、暗号文を復号可能である。したがって、第2ユーザ端末が暗号文を復号できたことを条件として、第2ユーザ端末に暗号データに対する書き込みが許可される。このように、第2ユーザ端末が第2ユーザ端末の属性に関する情報をストレージ装置に送付することなく、第2ユーザ端末が書き込み権限を有しているか否かが判定される。言い換えると、ユーザ(第2ユーザ端末)の属性を示すことなく、書き込み権限を管理することが可能となる。
ストレージ装置は、第2ユーザ端末から暗号データに対する書き込み要求を受信した場合、暗号文を第2ユーザ端末に送信してもよい。第2ユーザ端末は、暗号文を復号することで復号結果を生成してもよい。第2ユーザ端末によって生成された復号結果を、一方向性関数に入力することで演算結果が得られた場合に、ストレージ装置は、第2ユーザ端末が暗号文を復号できたと判定してもよい。この場合、第2ユーザ端末によって復号された暗号文を一方向性関数に入力することで演算結果が得られたのであれば、第2ユーザ端末が暗号文を復号できたとみなすことができる。このように、ユーザ(第2ユーザ端末)の属性を示すことなく、書き込み権限を管理することが可能となる。
ストレージ装置は、第2ユーザ端末から暗号データに対する書き込み要求を受信した場合、一方向性関数、及び演算結果を第2ユーザ端末にさらに送信してもよい。第2ユーザ端末は、復号結果と、一方向性関数と、演算結果と、を用いて暗号文が正当なデータであるか否かを検証してもよい。例えば、ストレージ装置が暗号文に代えて暗号データを送信したとすると、第2ユーザ端末が暗号データを復号し、暗号データの復号結果をストレージ装置に送信する。これにより、ストレージ装置は、暗号データの復号結果を取得できてしまう。これに対し、暗号文が正当なデータであるか否かが検証されるので、暗号文が不正なデータである場合には、復号結果をストレージ装置に送信しない等の対策を講じることが可能となる。
ストレージ装置は、別の一方向性関数に暗号化対象のデータを入力することで入力値を生成してもよい。ストレージ装置は、暗号データ、暗号文、一方向性関数、及び演算結果に加えて、別の一方向性関数を格納してもよい。ストレージ装置は、第2ユーザ端末から暗号データに対する書き込み要求を受信した場合、暗号文に加えて、暗号データ、及び別の一方向性関数を第2ユーザ端末にさらに送信してもよい。第2ユーザ端末は、暗号データを復号することで得られた別の復号結果と、別の一方向性関数と、復号結果と、を用いて暗号文が正当なデータであるか否かを検証してもよい。この場合、入力値が暗号化対象のデータから生成されるので、第2ユーザ端末は、暗号文が暗号化対象のデータに対応しているか否か、つまり、暗号文が正当なデータであるか否かを確実に確認することができる。
ストレージ装置は、ゼロ知識証明を用いて第2ユーザ端末が暗号文を復号できたか否かを判定してもよい。この場合、第2ユーザ端末がストレージ装置に暗号文の復号結果を送信することなく、第2ユーザ端末が暗号文を復号できたことをストレージ装置に証明することができる。このため、安全性を高めることが可能となる。
ストレージ装置は、第2ユーザ端末から暗号データに対する読み出し要求を受信した場合、第2ユーザ端末に暗号データを送信してもよい。上記暗号システムでは、読み出し権限を有する属性の組み合わせである第1属性セットと、属性ベース暗号の第1暗号化鍵と、を用いて暗号化対象のデータを暗号化することで暗号データが生成される。このため、第2ユーザ端末が読み出し権限に対応する属性を有している場合に、暗号データを復号可能である。したがって、ストレージ装置は、暗号データを第2ユーザ端末に送信するだけでよい。このように、第2ユーザ端末が第2ユーザ端末の属性に関する情報をストレージ装置に送付することなく、第2ユーザ端末が読み出し権限を有しているか否かが判定される。言い換えると、ユーザ(第2ユーザ端末)の属性を示すことなく、読み出し権限を管理することが可能となる。
本発明の別の側面に係るユーザ端末は、読み出し権限を有する属性の組み合わせである第1属性セットと、属性ベース暗号の第1暗号化鍵と、を用いて暗号化対象のデータを暗号化することで暗号データを生成し、入力値を生成するとともに、一方向性関数に入力値を入力することで演算結果を生成し、書き込み権限を有する属性の組み合わせである第2属性セットと、属性ベース暗号の第2暗号化鍵と、を用いて入力値を暗号化することで暗号文を生成し、暗号データとともに、暗号文、一方向性関数、及び演算結果をストレージ装置に送信する。
このユーザ端末では、読み出し権限を有する属性の組み合わせである第1属性セットと、属性ベース暗号の第1暗号化鍵と、を用いて暗号化対象のデータを暗号化することで暗号データが生成され、書き込み権限を有する属性の組み合わせである第2属性セットと、属性ベース暗号の第2暗号化鍵と、を用いて入力値を暗号化することで暗号文が生成される。暗号データとともに、暗号文と、一方向性関数と、入力値を一方向性関数に入力することで生成された演算結果と、がストレージ装置に送信される。別のユーザ端末が書き込み権限に対応する属性を有している場合には、暗号文を復号可能である。このため、例えば、別のユーザ端末が暗号文を復号できたことを条件として、別のユーザ端末に暗号データに対する書き込みが許可され得る。これにより、ユーザ(別のユーザ端末)の属性を示すことなく、書き込み権限を管理することが可能となる。
本発明のさらに別の側面に係るストレージ装置は、読み出し権限を有する属性の組み合わせである第1属性セットと属性ベース暗号の第1暗号化鍵とを用いて暗号化対象のデータを暗号化することで生成された暗号データと、一方向性関数と、一方向性関数に入力値を入力することで得られた演算結果と、書き込み権限を有する属性の組み合わせである第2属性セットと属性ベース暗号の第2暗号化鍵とを用いて入力値を暗号化することで生成された暗号文と、を取得し、暗号データとともに、暗号文、一方向性関数、及び演算結果を格納し、ユーザ端末から暗号データに対する書き込み要求を受信した場合、ユーザ端末が暗号文を復号できるか否かを判定し、ユーザ端末が暗号文を復号できたと判定された場合、ユーザ端末に暗号データに対する書き込みを許可する。
このストレージ装置が取得し格納する暗号文は、書き込み権限を有する属性の組み合わせである第2属性セットと、属性ベース暗号の第2暗号化鍵と、を用いて入力値を暗号化することで生成される。このため、ユーザ端末が書き込み権限に対応する属性を有している場合に、暗号文を復号可能である。したがって、ユーザ端末が暗号文を復号できたことを条件として、ユーザ端末に暗号データに対する書き込みが許可される。このように、ユーザ端末がユーザ端末の属性に関する情報をストレージ装置に送付することなく、ユーザ端末が書き込み権限を有しているか否かが判定される。言い換えると、ユーザ(ユーザ端末)の属性を示すことなく、書き込み権限を管理することが可能となる。
本発明のさらに別の側面に係る暗号方法は、ユーザ端末が行う暗号方法である。この暗号方法は、読み出し権限を有する属性の組み合わせである第1属性セットと、属性ベース暗号の第1暗号化鍵と、を用いて暗号化対象のデータを暗号化することで暗号データを生成するステップと、入力値を生成するとともに、一方向性関数に入力値を入力することで演算結果を生成するステップと、書き込み権限を有する属性の組み合わせである第2属性セットと、属性ベース暗号の第2暗号化鍵と、を用いて入力値を暗号化することで暗号文を生成するステップと、暗号データとともに、暗号文、一方向性関数、及び演算結果をストレージ装置に送信するステップと、を備える。
この暗号方法では、読み出し権限を有する属性の組み合わせである第1属性セットと、属性ベース暗号の第1暗号化鍵と、を用いて暗号化対象のデータを暗号化することで暗号データが生成され、書き込み権限を有する属性の組み合わせである第2属性セットと、属性ベース暗号の第2暗号化鍵と、を用いて入力値を暗号化することで暗号文が生成される。暗号データとともに、暗号文と、一方向性関数と、入力値を一方向性関数に入力することで生成された演算結果と、がストレージ装置に送信される。ユーザ端末が書き込み権限に対応する属性を有している場合には、暗号文を復号可能である。このため、例えば、ユーザ端末が暗号文を復号できたことを条件として、ユーザ端末に暗号データに対する書き込みが許可され得る。これにより、ユーザ(ユーザ端末)の属性を示すことなく、書き込み権限を管理することが可能となる。
本発明のさらに別の側面に係る認証方法は、ストレージ装置が行う認証方法である。この認証方法は、読み出し権限を有する属性の組み合わせである第1属性セットと属性ベース暗号の第1暗号化鍵とを用いて暗号化対象のデータを暗号化することで生成された暗号データと、一方向性関数と、一方向性関数に入力値を入力することで得られた演算結果と、書き込み権限を有する属性の組み合わせである第2属性セットと属性ベース暗号の第2暗号化鍵とを用いて入力値を暗号化することで生成された暗号文と、を取得するステップと、暗号データとともに、暗号文、一方向性関数、及び演算結果を格納するステップと、ユーザ端末から暗号データに対する書き込み要求を受信した場合、ユーザ端末が暗号文を復号できるか否かを判定するステップと、ユーザ端末が暗号文を復号できたと判定された場合に、ユーザ端末に暗号データに対する書き込みを許可するステップと、を備える。
この認証方法では、書き込み権限を有する属性の組み合わせである第2属性セットと、属性ベース暗号の第2暗号化鍵と、を用いて入力値を暗号化することで生成された暗号文が取得され、格納される。このため、ユーザ端末が書き込み権限に対応する属性を有している場合に、暗号文を復号可能である。したがって、ユーザ端末が暗号文を復号できたことを条件として、ユーザ端末に暗号データに対する書き込みが許可される。このように、ユーザ端末がユーザ端末の属性に関する情報をストレージ装置に送付することなく、ユーザ端末が書き込み権限を有しているか否かが判定される。言い換えると、ユーザ(ユーザ端末)の属性を示すことなく、書き込み権限を管理することが可能となる。
本発明のさらに別の側面に係る暗号プログラムは、読み出し権限を有する属性の組み合わせである第1属性セットと、属性ベース暗号の第1暗号化鍵と、を用いて暗号化対象のデータを暗号化することで暗号データを生成するステップと、入力値を生成するとともに、一方向性関数に入力値を入力することで演算結果を生成するステップと、書き込み権限を有する属性の組み合わせである第2属性セットと、属性ベース暗号の第2暗号化鍵と、を用いて入力値を暗号化することで暗号文を生成するステップと、暗号データとともに、暗号文、一方向性関数、及び演算結果をストレージ装置に送信するステップと、をコンピュータに実行させるための暗号プログラムである。
この暗号プログラムでは、読み出し権限を有する属性の組み合わせである第1属性セットと、属性ベース暗号の第1暗号化鍵と、を用いて暗号化対象のデータを暗号化することで暗号データが生成され、書き込み権限を有する属性の組み合わせである第2属性セットと、属性ベース暗号の第2暗号化鍵と、を用いて入力値を暗号化することで暗号文が生成される。暗号データとともに、暗号文と、一方向性関数と、入力値を一方向性関数に入力することで生成された演算結果と、がストレージ装置に送信される。ユーザ端末が書き込み権限に対応する属性を有している場合には、暗号文を復号可能である。このため、例えば、ユーザ端末が暗号文を復号できたことを条件として、ユーザ端末に暗号データに対する書き込みが許可され得る。これにより、ユーザ(ユーザ端末)の属性を示すことなく、書き込み権限を管理することが可能となる。
本発明のさらに別の側面に係る認証プログラムは、読み出し権限を有する属性の組み合わせである第1属性セットと属性ベース暗号の第1暗号化鍵とを用いて暗号化対象のデータを暗号化することで生成された暗号データと、一方向性関数と、一方向性関数に入力値を入力することで得られた演算結果と、書き込み権限を有する属性の組み合わせである第2属性セットと属性ベース暗号の第2暗号化鍵とを用いて入力値を暗号化することで生成された暗号文と、を取得するステップと、暗号データとともに、暗号文、一方向性関数、及び演算結果を格納するステップと、ユーザ端末から暗号データに対する書き込み要求を受信した場合、ユーザ端末が暗号文を復号できるか否かを判定するステップと、ユーザ端末が暗号文を復号できたと判定された場合に、ユーザ端末に暗号データに対する書き込みを許可するステップと、を1以上のコンピュータを含むコンピュータシステムに実行させるための認証プログラムである。
この認証プログラムでは、書き込み権限を有する属性の組み合わせである第2属性セットと、属性ベース暗号の第2暗号化鍵と、を用いて入力値を暗号化することで生成された暗号文が取得され、格納される。このため、ユーザ端末が書き込み権限に対応する属性を有している場合に、暗号文を復号可能である。したがって、ユーザ端末が暗号文を復号できたことを条件として、ユーザ端末に暗号データに対する書き込みが許可される。このように、ユーザ端末がユーザ端末の属性に関する情報をストレージ装置に送付することなく、ユーザ端末が書き込み権限を有しているか否かが判定される。言い換えると、ユーザ(ユーザ端末)の属性を示すことなく、書き込み権限を管理することが可能となる。
本発明によれば、ユーザの属性を示すことなく、書き込み権限を管理することができる。
以下、図面を参照しながら本発明の実施形態が詳細に説明される。なお、図面の説明において同一要素には同一符号が付され、重複する説明は省略される。
図1は、一実施形態に係る暗号システムの構成を示す図である。図2は、図1に示されるユーザ端末のハードウェア構成を示す図である。図1に示されるように、暗号システム1は、情報を複数のユーザ間で共有するためのシステムであって、属性ベース暗号を用いた暗号化及び復号を行うシステムである。暗号システム1は、例えば、ファイル共有システムである。属性ベース暗号は、ユーザの属性に基づいて設定された復号条件(ポリシー)を満たすユーザのみが暗号化されたデータを復号可能な暗号技術である。暗号システム1は、ユーザシステム10と、複数の鍵発行機関(本実施形態では、鍵発行機関20A〜20C)と、公開サーバ30と、クラウドストレージ40(ストレージ装置)と、を備えている。ユーザシステム10と、鍵発行機関20A〜20Cと、公開サーバ30と、クラウドストレージ40とは、ネットワークNWによって互いに通信可能に接続されている。ネットワークNWは、有線及び無線のいずれで構成されてもよい。ネットワークNWの例としては、移動体通信網、インターネット、及びWAN(Wide Area Network)等が挙げられる。
ユーザシステム10は、属性ベース暗号を利用するユーザ側のシステムである。ユーザシステム10は、複数のユーザ端末(本実施形態では、ユーザ端末11A〜11C)を含む。ユーザ端末は、ユーザにより用いられる端末装置である。ユーザ端末の例としては、デスクトップPC(Personal Computer)、ノートPC、スマートフォン、及びタブレット端末等が挙げられる。ここでは、ユーザ端末11A〜11Cは、同一の組織に属する。ユーザ端末11A〜11Cは、LAN等によって互いに通信可能に接続され、不図示のゲートウェイ装置を介してネットワークNWに接続されている。なお、ユーザ端末11A〜11Cは、同一組織に属していなくてもよい。
図2に示されるように、ユーザ端末11A〜11Cのそれぞれは、物理的には、1又は複数のプロセッサ101、主記憶装置102、補助記憶装置103、入力装置104、出力装置105、及び通信装置106等のハードウェアを備えるコンピュータとして構成され得る。プロセッサ101の例としては、CPU(Central Processing Unit)が挙げられる。主記憶装置102は、例えば、RAM(Random Access Memory)及びROM(Read Only Memory)で構成される。補助記憶装置103は、例えば、ハードディスク装置又はフラッシュメモリで構成され、一般に主記憶装置102よりも大量のデータを記憶可能な容量を有する。入力装置104は、例えば、キーボード、マウス、タッチパネル、及び操作ボタンで構成される。出力装置105は、例えば、ディスプレイ、及びスピーカで構成される。通信装置106は、例えば、ネットワークインタフェースカード(NIC)又は無線通信モジュールで構成される。
ユーザUA〜UCのそれぞれは、1以上の属性を含む属性の組み合わせ(以下、「属性セット」と称する場合がある。)であるユーザ属性セットを有する。ユーザUAはユーザ端末11Aを使用し、ユーザUBはユーザ端末11Bを使用し、ユーザUCはユーザ端末11Cを使用している。ユーザUA〜UCは、例えば、ユーザ端末11A〜11Cにおいて、属性ベース暗号のためのアプリケーションを用いて、属性ベース暗号でデータを暗号化し、暗号化されたデータ(以下、「暗号データ」という。)をクラウドストレージ40に格納する。また、ユーザUA〜UCは、クラウドストレージ40から暗号データを取得し、暗号データを復号する。ユーザUA〜UCは、属性ベース暗号の暗号化及び復号を利用して、暗号データの書き込み(新規作成、削除、及び更新等)と、暗号データの読み出しと、を行う。暗号データの書き込み処理及び読み出し処理の詳細は後述する。
鍵発行機関20A〜20Cのそれぞれは、属性ベース暗号の公開鍵及び秘密鍵を生成する。公開鍵は、全てのユーザ(ユーザ端末11A〜11C)に共通の鍵である。秘密鍵は、各ユーザ(ユーザ端末11A〜11C)に固有の鍵であって、ユーザのユーザ属性セットに応じて生成される。公開鍵及び秘密鍵の生成に関する詳細な説明は、後述する。鍵発行機関20A〜20Cは、ユーザシステム10の外部に設けられる。鍵発行機関20A〜20Cのそれぞれは、公開鍵を含む公開情報を公開サーバ30に送信する。鍵発行機関20A〜20Cのそれぞれは、ユーザ端末11A〜11Cと同様のハードウェア構成を有する1以上のコンピュータから構成される。鍵発行機関20A〜20Cのそれぞれは、入力装置104及び出力装置105を備えていなくてもよい。
公開サーバ30は、(大域的な)公開情報を公開するためのサーバ装置である。公開サーバ30は、鍵発行機関20A〜20Cのそれぞれから公開情報を受信し、公開情報を不図示の記憶装置に格納する。公開サーバ30は、暗号システム1に含まれる各機関からの要求に応じて、公開情報を各機関に送信する。公開サーバ30は、ユーザ端末11A〜11Cと同様のハードウェア構成を有する1以上のコンピュータから構成される。公開サーバ30は、入力装置104及び出力装置105を備えていなくてもよい。
クラウドストレージ40は、オンラインストレージとも呼ばれ、ネットワークNW上でデータを共有するサービスである。クラウドストレージ40は、例えば、単一又は複数のファイルサーバを含む。クラウドストレージ40は、ユーザ端末11A〜11Cからデータ(暗号データを含む)を受信して、受信したデータを格納する。クラウドストレージ40は、ユーザ端末11A〜11Cからの要求に応じて、格納しているデータをユーザ端末11A〜11Cに送信する。暗号データに対する読み出し権限及び書き込み権限の管理方法については、後述する。
クラウドストレージ40に代えて、ユーザシステム10内に設けられた記憶装置(ローカルストレージ)が用いられてもよい。クラウドストレージ40は、ユーザ端末11A〜11Cと同様のハードウェア構成を有する1以上のコンピュータから構成される。クラウドストレージ40は、入力装置104及び出力装置105を備えていなくてもよい。
次に、図3を参照して、属性ベース暗号を説明する。図3は、属性ベース暗号で用いられるアクセス構造の一例を示す図である。図3に示されるアクセス構造は、ツリー形式で示されている。アクセス構造は、復号を許可する復号条件(ポリシー)を表す。ポリシーは、属性の論理和及び論理積で表される。図3では、{属性AT1∧(属性AT2∧属性AT3)}∨属性AT4の条件を満たすユーザが、暗号データを復号することができる。なお、「∨」は論理和を示し、「∧」は論理積を示す。各ユーザは、属性ベース暗号のためのアプリケーションを用いてデータを暗号化する際に、アクセス構造を指定する。
例えば、ユーザ端末11AのユーザUAが、開発部に所属し、海外支社を経験しており、プロジェクトPを担当しているとする。この場合、ユーザUAの属性は、例えば、「開発部」、「海外支社経験者」、及び「プロジェクトP担当者」である。ユーザ端末11BのユーザUBが、情報グループに所属し、IoT(Internet of Things)を担当しているとする。この場合、ユーザUBの属性は、例えば、「情報G」、及び「IoT」である。ユーザ端末11CのユーザUCが、総務課に所属しているとする。この場合、ユーザUCの属性は、例えば、「総務課」である。
図3のアクセス構造において、属性AT1が「開発部」であり、属性AT2が「海外支社経験者」であり、属性AT3が「プロジェクトP担当者」であり、属性AT4が「総務部」であると仮定する。この場合、ユーザUA及びユーザUCのユーザ属性セットはポリシーを満たすので、ユーザUA及びユーザUCは暗号データを復号することができる。一方、ユーザUBのユーザ属性セットはポリシーを満たさないので、ユーザUBは暗号データを復号することができない。
次に、図4〜図9を参照して、暗号システム1の動作例を説明する。図4は、図1に示される暗号システムにおける初期設定処理を示すシーケンス図である。図5は、図1に示される暗号システムにおける暗号化鍵生成処理を示すシーケンス図である。図6は、図1に示される暗号システムにおける復号鍵生成処理を示すシーケンス図である。図7は、図1に示される暗号システムにおける新規書き込み処理を示すシーケンス図である。図8は、図1に示される暗号システムにおける読み出し処理を示すシーケンス図である。図9は、図1に示される暗号システムにおける書き込み処理を示すシーケンス図である。
なお、説明の便宜上、ユーザについては、ユーザUAのみを図示する。ここでは、鍵発行機関20A〜20Cが暗号システム1における秘密鍵及び公開鍵の鍵発行機関として機能しているが、いずれの鍵発行機関が、暗号システム1における秘密鍵及び公開鍵の鍵発行機関となるかは、予め設定されている。又は、鍵発行機関20Aが、鍵発行機関となる機関を指定してもよい。
図4に示されるように、暗号システム1では、まず初期設定処理が行われる。具体的には、各ユーザは、利用属性の申請を行う。ここではユーザUAのみを説明するが、他のユーザについても同様である。ユーザUAは、ユーザ端末11Aを用いて鍵発行機関20Aに利用属性の申請を行う(ステップS11)。利用属性の申請には、ユーザの属性又はユーザが利用したい属性を含む属性の組み合わせ(ユーザ属性セット)と、ユーザを特定するための識別情報(ユーザ識別情報)と、が含まれる。ユーザ識別情報としては、ウェブページ等において予め登録されたログインID(identifier)及びパスワードの組み合わせが用いられ得る。ユーザが使用するユーザ端末のIP(Internet Protocol)アドレスがユーザ識別情報として用いられてもよい。
続いて、鍵発行機関20Aは、各ユーザから利用属性の申請を受信すると、初期設定を行う(ステップS12)。ステップS12において、鍵発行機関20Aは、素数p1を位数とする生成元g1からなる巡回群G1と、素数p2を位数とする生成元g2からなる巡回群G2と、式(1)で表される双線形写像eを有する巡回群GTと、を決定する。巡回群G1は、素数p1を位数とする巡回群であり、乗算が定義された巡回群である。巡回群G2は、素数p2を位数とする巡回群であり、乗算が定義された巡回群である。巡回群GTは、加算及び乗算が定義された巡回群である。そして、鍵発行機関20Aは、式(1)を満たす双線形写像eを決定する。双線形写像eは、2つの引数を有し、e(・,・)で表される写像である。
続いて、鍵発行機関20Aは、乱数b(b∈Zp1)をランダムに決定し、元g1 bを計算する。
また、鍵発行機関20Aは、各ユーザから申請されたN個の属性に対して、巡回群G1から乱数h1,h2,・・・,hN(h1,h2,・・・,hN∈G1)をランダムに選択する。
そして、鍵発行機関20Aは、生成元g1、生成元g2、元g1 b、双線形写像e、乱数h1,h2,・・・,hN、及び鍵発行機関(ここでは、鍵発行機関20A〜20C)を特定するための識別情報(発行機関識別情報)を公開情報として公開するために、公開情報を公開サーバ30に送信する(ステップS13)。発行機関識別情報としては、例えば、鍵発行機関のIPアドレスが用いられる。そして、公開サーバ30は、不図示の記憶装置に公開情報を格納する(ステップS14)。
なお、鍵発行機関20Aは、全てのユーザから利用属性の申請を受け取った後にステップS12を実施しているが、ステップS12の実施タイミングはこれに限られない。例えば、鍵発行機関20Aは、ユーザから利用属性の申請を受け取る前に生成元g1及び生成元g2の選択、元g1 bの計算、並びに双線形写像eの決定を行ってもよく、ユーザから利用属性の申請を受け取る前に生成元g1、生成元g2、元g1 b、双線形写像e、及び発行機関識別情報を公開サーバ30に送信してもよい。鍵発行機関20Aは、ユーザから新たな属性の申請を受け取ると、その属性に対応する乱数hn(nは1〜Nの整数)を選択し、選択した乱数hnを公開サーバ30に送信してもよい。また、各ユーザとユーザのユーザ属性セットとが対応付けられて、各ユーザとユーザのユーザ属性セットとの対応関係が鍵発行機関20Aにおいて管理されてもよい。鍵発行機関20Aは、各ユーザとユーザのユーザ属性セットとの対応関係を他の鍵発行機関に送信してもよい。
続いて、各ユーザ(ユーザ端末11A)と、複数の鍵発行機関のうち鍵発行機関20A以外の鍵発行機関(ここでは、鍵発行機関20B,20C)とは、公開サーバ30から公開情報を取得する(ステップS15)。なお、暗号システム1内の各機関は、公開サーバ30のIPアドレスを予め取得している。
続いて、図5に示されるように、暗号システム1では、暗号化鍵生成処理が行われる。暗号化鍵生成処理では、まず、各鍵発行機関(ここでは、鍵発行機関20A〜20C)が公開鍵PKjを生成する(ステップS21)。なお、各鍵発行機関には番号j(jは1〜Ncの整数)が割り当てられている。総数Ncは、公開鍵PKj及び秘密鍵SKu jを生成する鍵発行機関の総数である。ステップS21では、j番目の鍵発行機関は、乱数ajを生成し、式(2)に示される計算を行って公開鍵PKjを生成する。
そして、各鍵発行機関は、公開鍵PKjを公開するために公開鍵PKjを公開サーバ30に送信する(ステップS22)。そして、公開サーバ30は、不図示の記憶装置に公開鍵PKjを公開情報として格納する(ステップS23)。
続いて、暗号システム1内の各機関(ここでは、ユーザ端末11A、及び鍵発行機関20A〜20C)は、公開サーバ30からNc個の公開鍵PKjを取得する(ステップS24)。そして、各機関は、Nc個の公開鍵PKjを用いて属性ベース暗号の暗号化用の暗号化鍵PKを生成する(ステップS25)。具体的には、各機関は、式(3)に示されるように、各公開鍵PKjを加算し、その加算結果e(g1,g2)aを計算する。
このように、暗号化鍵生成処理では、鍵発行機関20A〜20Cのそれぞれは、公開鍵PKjを生成するとともに、公開鍵PKjを公開する。ユーザ端末11Aは、鍵発行機関20A〜20Cによって生成された公開鍵PKjを取得して、これらの公開鍵PKjを用いて属性ベース暗号の暗号化用の暗号化鍵PKを生成する。
続いて、図6に示されるように、暗号システム1では、復号鍵生成処理が行われる。ここでは、ユーザ端末11Aが復号鍵を生成する場合を説明する。復号鍵生成処理では、まず、ユーザ端末11Aが各鍵発行機関(ここでは、鍵発行機関20A〜20C)に秘密鍵を要求する(ステップS31)。このとき、ユーザ端末11Aは、ユーザUAの属性の組み合わせ(ユーザ属性セット)を指定して、ユーザUAのユーザ属性セットに対応した秘密鍵を要求する。
そして、各鍵発行機関(ここでは、鍵発行機関20A〜20C)は、ユーザ端末11Aから秘密鍵の要求を受け取ると、ユーザUAのユーザ属性セットに応じた秘密鍵を生成する(ステップS32)。このとき、各鍵発行機関は、指定されたユーザUAのユーザ属性セットにユーザUAに無関係な属性が含まれている場合には、指定されたユーザUAのユーザ属性セットを否決してもよい。
ステップS32では、まず、各鍵発行機関は、ユーザ端末11A(ユーザUA)に対して乱数su jをランダムに決定して、式(5)に示される計算を行う。なお、乱数su jはユーザごとに決定される値である。ユーザUAの属性(ユーザUAのユーザ属性セットに含まれる属性)の総数Xは、ユーザシステム10で用いられる属性の総数N以下である。なお、乱数huxは、ユーザUAのX個の属性のうちのx番目の属性に対応する乱数hnである。
そして、ユーザ端末11Aは、Nc個の秘密鍵SKu jを用いて属性ベース暗号の復号用の復号鍵SKuを生成する(ステップS34)。具体的には、ユーザ端末11Aは、式(7)及び式(8)に示されるように、Nc個の秘密鍵SKu jを要素ごとに加算し、その加算結果を復号鍵SKuとする。なお、復号鍵SKuには、X個の属性鍵(属性鍵Ku1〜KuX)が含まれる。
このように、復号鍵生成処理では、ユーザ端末11Aは、鍵発行機関20A〜20CにユーザUAのユーザ属性セットに応じた秘密鍵SKu jを要求する。鍵発行機関20A〜20Cのそれぞれは、ユーザ端末11Aからの要求に応じて、秘密鍵SKu jを生成して秘密鍵SKu jをユーザ端末11Aに配布する。ユーザ端末11Aは、鍵発行機関20A〜20Cから秘密鍵SKu jを取得し、これらの秘密鍵SKu jを用いて属性ベース暗号の復号用の復号鍵SKuを生成する。
次に、暗号データの新規書き込み処理を説明する。なお、ユーザがクラウドストレージ40を利用する前に、初期設定処理、暗号化鍵生成処理、及び復号鍵生成処理は終了している。ここでは、ユーザ端末11A(第1ユーザ端末)が新規書き込みを行う場合を説明する。新規書き込み処理は、書き込み権限が設定されていない場所等に新規に書き込む処理である。
図7に示されるように、新規書き込み処理では、まずユーザUAがユーザ端末11Aを用いて所望のデータMsgを暗号化することで暗号データMsgencを生成する(ステップS41)。ユーザ端末11Aには、例えば、属性ベース暗号のための暗号アプリケーションが予めインストールされている。ユーザUAは、暗号アプリケーションにおいて、当該データの読み出し権限と書き込み権限とを設定する。読み出し権限及び書き込み権限は、ユーザが属性の組み合わせである属性セット(アクセス構造)を指定することによって設定される。
図3の例では、「開発部」かつ「海外支社経験者」かつ「プロジェクトP担当者」の属性の組み合わせを有するユーザ、又は「総務課」の属性の組み合わせを有するユーザが読み出し及び書き込みの権限を有するように、アクセス構造の指定が行われる。なお、各ユーザは、任意のアクセス構造を指定でき、例えば、当該ユーザが読み出し及び書き込みの権限を有しないアクセス構造を指定することもできる。ユーザは、読み出し権限と書き込み権限とに、同じアクセス構造を指定してもよく、互いに異なるアクセス構造を指定してもよい。
そして、ユーザ端末11Aは、線形秘密分散法を用いて、指定された読み出し用のアクセス構造(第1属性セット)をl行m列の行列Mrの形で表現する。なお、行の総数lは、アクセス構造に含まれる属性であって、重複している属性でも別個に計数した場合の属性の数と等しい。例えば、図3の例では、ポリシーを満たす行列の一例として、式(9)で示される行列Mrが生成される。
続いて、ユーザ端末11Aは、l個の乱数riをランダムに決定する。そして、ユーザ端末11Aは、式(12)に示されるように、値λiと乱数riと暗号化鍵PK(第1暗号化鍵)とを用いて暗号化対象のデータMsgを暗号化し、暗号データMsgencを生成する。言い換えると、ユーザ端末11Aは、読み出し用のアクセス構造と、暗号化鍵PKと、を用いて暗号化対象のデータMsgを暗号化することで暗号データMsgencを生成する。なお、乱数hρ(i)は、i行目の属性に対応する乱数hnである。
続いて、ユーザ端末11Aは、一方向性関数fを準備(生成)し、入力値xを生成するとともに、一方向性関数fに入力値xを入力することで演算結果f(x)を生成する(ステップS42)。一方向性関数fは、簡単に計算できるが、逆関数の計算は非常に困難であるか不可能である関数である。入力値xは、一方向性関数fの引数である。一方向性関数fの例としては、互いに異なる2つの素数の乗算、及びハッシュ関数が挙げられる。
ここでは、一方向性関数fとして、大きな値を有する素数との乗算が用いられる。この場合、入力値xは、大きな値を有する素数である。このように、本実施形態の一方向性関数fは、互いに異なる大きい値を有する2つの素数の乗算結果を計算することは簡単であるが、乗算結果を素因数分解することで元の2つの素数を得ることは困難であるという性質を利用した関数である。素数は、例えば、以下のように生成される。ユーザ端末11Aは、ランダムな数値を生成し、Miller-Rabin素数判定法等の素数判定法を用いて、生成した数値が素数であるか否かを判定する。ユーザ端末11Aは、上述の手順を繰り返すことにより、素数が得られるまで、ランダムに数値を生成する。
続いて、ユーザ端末11Aは、入力値xを暗号化することで、入力値xの暗号文xencを生成する(ステップS43)。ユーザ端末11Aは、ステップS41と同様に、まず書き込み用のアクセス構造(第2属性セット)を行列Mwの形で表現する。そして、ユーザ端末11Aは、行列Mwに対応したベクトルvを生成し、値λiを計算する。そして、ユーザ端末11Aは、行列Mwの行数分の乱数riをランダムに決定する。そして、ユーザ端末11Aは、式(12)に示されるように、値λiと乱数riと暗号化鍵PK(第2暗号化鍵)とを用いて入力値xを暗号化し、暗号文xencを生成する。言い換えると、ユーザ端末11Aは、書き込み用のアクセス構造と、暗号化鍵PKと、を用いて入力値xを暗号化することで暗号文xencを生成する。なお、入力値xの暗号化に用いられるベクトルv、値λi、乱数riには、データMsgの暗号化に用いられるベクトルv、値λi、乱数riと同じ符号を付しているが、入力値xの暗号化に用いられるベクトルv、値λi、乱数riと、データMsgの暗号化に用いられるベクトルv、値λi、乱数riとは、それぞれ互いに異なっている。
続いて、ユーザ端末11Aは、暗号データMsgenc、暗号文xenc、一方向性関数f、及び演算結果f(x)をクラウドストレージ40に送信する(ステップS44)。クラウドストレージ40は、ユーザ端末11Aから暗号データMsgenc、暗号文xenc、一方向性関数f、及び演算結果f(x)を受信すると、暗号データMsgenc、暗号文xenc、一方向性関数f、及び演算結果f(x)を1つの組として対応付けて不図示の記憶装置に格納する(ステップS45)。以上により、新規書き込み処理が終了する。
次に、暗号データの読み出し処理を説明する。ここでは、ユーザ端末11B(第2ユーザ端末)が読み出しを行う場合を説明する。図8に示されるように、読み出し処理では、まずユーザUBがユーザ端末11Bを用いて、クラウドストレージ40に暗号データMsgencの読み出し要求を送信する(ステップS51)。そして、クラウドストレージ40は、ユーザ端末11Bから暗号データMsgencの読み出し要求を受信すると、要求されている暗号データMsgencを不図示の記憶装置から読み出し、当該暗号データMsgencをユーザ端末11Bに送信する(ステップS52)。
続いて、ユーザ端末11Bは、クラウドストレージ40から暗号データMsgencを受信すると、ユーザUBの復号鍵SKuを用いて暗号データMsgencの復号を行う(ステップS53)。このとき、ユーザ端末11Bは、ユーザUBのユーザ属性セットが暗号データMsgencに設定されたポリシーを満たす場合には、式(13)を満たす値wiを計算することができる。
そして、ユーザ端末11Bは、式(14)に示されるように、値wiとユーザUBの復号鍵SKuとを用いて暗号データMsgencを復号し、元のデータMsgを得る。以上により、読み出し処理が終了する。なお、属性鍵Kρ(i)は、行列Mr(読み出し用のアクセス構造)に含まれるl個の属性のうちのi行目の属性に対応する属性鍵Kuxである。
このように、各ユーザは、自身のユーザ属性セットが暗号データMsgencに設定されたポリシーを満たす場合にのみ、ユーザの復号鍵を用いて当該暗号データMsgencの復号が可能となる。属性ベース暗号の安全性は、離散対数問題の困難性に起因している。一例を挙げると、生成元g1と元g1 a1とから、乱数a1を計算することが困難であるという性質である。この性質により、上記の属性ベース暗号は安全であるといえる。
次に、暗号データに対する書き込み処理を説明する。ここでは、ユーザ端末11Bが書き込みを行う場合を説明する。書き込み処理は、暗号データの更新及び削除を含む。図9に示されるように、書き込み処理では、まずユーザUBがユーザ端末11Bを用いて、クラウドストレージ40に暗号データMsgencに対する書き込み要求(更新要求)を送信する(ステップS61)。そして、クラウドストレージ40は、ユーザ端末11Bから暗号データMsgencに対する書き込み要求を受信すると、要求されている暗号データMsgencと対応付けられている暗号文xenc、一方向性関数f、及び演算結果f(x)を不図示の記憶装置から読み出し、当該暗号文xenc、一方向性関数f、及び演算結果f(x)をユーザ端末11Bに送信する(ステップS62)。
続いて、ユーザ端末11Bは、クラウドストレージ40から暗号文xenc、一方向性関数f、及び演算結果f(x)を受信すると、ユーザUBの復号鍵SKuを用いて暗号文xencの復号を行う(ステップS63)。このとき、ステップS53と同様に、ユーザ端末11Bは、ユーザUBのユーザ属性セットが暗号文xencに設定されたポリシーを満たす場合には、式(13)を満たす値wiを計算することができる。そして、ユーザ端末11Bは、式(14)と同様にして、値wiとユーザUBの復号鍵SKuとを用いて暗号文xencを復号し、元の入力値x(以下、暗号文xencを復号することで得られた入力値を「入力値xdec」と表記する。)を得る。
続いて、ユーザ端末11Bは、クラウドストレージ40から受信した暗号文xencが正当なデータであるか否かを検証する(ステップS64)。具体的に説明すると、ユーザ端末11Bは、ステップS63で得られた入力値xdec(復号結果)をクラウドストレージ40から受信した一方向性関数fに引数として入力することで、演算結果f(xdec)を生成する。そして、ユーザ端末11Bは、演算結果f(xdec)とクラウドストレージ40から受信した演算結果f(x)とを照合する。ユーザ端末11Bは、2つの演算結果が同じである(一致する)場合には、クラウドストレージ40から受信した暗号文xencが正当なデータであると判定し、入力値xdecをクラウドストレージ40に送信する(ステップS65)。このとき、ユーザ端末11Bは、書き込みを要求している暗号データMsgencを特定するための情報を付加して送信する。一方、ユーザ端末11Bは、2つの演算結果が互いに異なる場合には、クラウドストレージ40から受信した暗号文xencが不正なデータであると判定し、入力値xdecをクラウドストレージ40に送信しない。
続いて、クラウドストレージ40は、ユーザ端末11Bから入力値xdecを受信すると、ユーザUBが書き込み権限を有するか否かを判定する(ステップS66)。具体的に説明すると、クラウドストレージ40は、要求されている暗号データMsgencと対応付けられている一方向性関数fを不図示の記憶装置から読み出し、ユーザ端末11Bから受信した入力値xdecを、読み出した一方向性関数fに引数として入力することで、演算結果f(xdec)を生成する。
そして、クラウドストレージ40は、要求されている暗号データMsgencと対応付けられている演算結果f(x)を不図示の記憶装置から読み出し、演算結果f(x)と演算結果f(xdec)とを照合する。クラウドストレージ40は、2つの演算結果が同じである(一致する)場合には、ユーザ端末11BのユーザUBは書き込み権限を有すると判定し、書き込みを許可する(ステップS67)。一方、クラウドストレージ40は、2つの演算結果が互いに異なる場合には、ユーザ端末11BのユーザUBは書き込み権限を有しないと判定し、書き込みを許可しない。
そして、ユーザ端末11Bは、クラウドストレージ40から書き込みの許可を得ると、暗号データMsgencの更新等を行う。以降の処理は、新規書き込み処理と同様であるので、説明を省略する。以上により、書き込み処理が終了する。なお、ユーザ端末11Bは、暗号データMsgencの更新等において、データMsgの書き込みに用いられた入力値x及び一方向性関数fを用いてもよく、入力値x及び一方向性関数fを新たな入力値x及び一方向性関数fにそれぞれ変更してもよい。
このように、クラウドストレージ40に対してユーザ端末11Aが新規書き込みを行う際には、ユーザ端末11Aは、読み出し用のアクセス構造と暗号化鍵PKとを用いてデータMsgを暗号化することで暗号データMsgencを生成するとともに、書き込み用のアクセス構造と暗号化鍵PKとを用いて入力値xを暗号化することで暗号文xencを生成する。そして、ユーザ端末11Aは、暗号データMsgenc、暗号文xenc、一方向性関数f、及び演算結果f(x)をクラウドストレージ40に送信し、クラウドストレージ40は、暗号データMsgenc、暗号文xenc、一方向性関数f、及び演算結果f(x)を格納する。
ユーザ端末11Bが暗号データMsgencを復号できるのであれば、暗号データMsgencの読み出し権限を有しているとみなし得る。このため、ユーザ端末11Bがクラウドストレージ40から暗号データMsgencを読み出す場合には、クラウドストレージ40はユーザ端末11B(ユーザUB)が読み出し権限を有しているか否かを判定することなく、ユーザ端末11Bに暗号データMsgencを送信する。一方、ユーザ端末11Bがクラウドストレージ40に格納されている暗号データMsgencに対して書き込みを行う場合には、クラウドストレージ40はまず暗号文xenc、一方向性関数f、及び演算結果f(x)をユーザ端末11Bに送付する。そして、ユーザ端末11Bは暗号文xencを復号することで入力値xdecを得る。そして、クラウドストレージ40は、暗号データMsgencと対応付けられている一方向性関数fに、ユーザ端末11Bが生成した入力値xdecを入力することで、演算結果f(xdec)を得る。そして、クラウドストレージ40は、暗号データMsgencと対応付けられている演算結果f(x)と、演算結果f(xdec)と、が一致する場合には、ユーザ端末11B(ユーザUB)が書き込み権限を有していると判定し、ユーザ端末11Bに暗号データMsgencに対する書き込みを許可する。
ステップS64は、省略されてもよい。この場合、ステップS62において、クラウドストレージ40は、ユーザ端末11Bから暗号データMsgencに対する書き込み要求を受信すると、要求されている暗号データMsgencと対応付けられている暗号文xencを不図示の記憶装置から読み出し、当該暗号文xencをユーザ端末11Bに送信してもよい。
次に、ユーザ端末11A〜11C、及びクラウドストレージ40の機能構成について説明する。ユーザ端末11A〜11Cのそれぞれは、図4のステップS11,S15、図5のステップS24,S25、図6のステップS31,S33,S34、図7のステップS41〜S44、図8のステップS51〜S53、及び図9のステップS61〜S65,S67を含む暗号方法を実行するための複数の機能部を備えている。複数の機能部は、暗号方法の各ステップにそれぞれ対応する。
例えば、図7に示される新規書き込み処理に対して、ユーザ端末11A〜11Cのそれぞれは、読み出し用のアクセス構造と暗号化鍵PKとを用いてデータMsgを暗号化することで暗号データMsgencを生成する第1暗号化部と、入力値xを生成するとともに、一方向性関数fに入力値xを入力することで演算結果f(x)を生成する演算部と、書き込み用のアクセス構造と暗号化鍵PKとを用いて入力値xを暗号化することで暗号文xencを生成する第2暗号化部と、暗号データMsgencとともに、暗号文xenc、一方向性関数f、及び演算結果f(x)をクラウドストレージ40に送信する送信部と、を備えている。
同様に、クラウドストレージ40は、図7のステップS44,S45、図8のステップS51,S52、及び図9のステップS61,S62,S65〜S67を含む認証方法を実行するための複数の機能部を備えている。複数の機能部は、認証方法の各ステップにそれぞれ対応する。例えば、図7に示される新規書き込み処理に対して、クラウドストレージ40は、暗号データMsgenc、暗号文xenc、一方向性関数f、及び演算結果f(x)を取得する取得部と、暗号データMsgencとともに、暗号文xenc、一方向性関数f、及び演算結果f(x)を格納する記憶部と、を備えている。また、図9に示される書き込み処理に対して、クラウドストレージ40は、ユーザ端末11Bから暗号データMsgencに対する書き込み要求を受信した場合、ユーザ端末11Bが暗号文xencを復号できるか否かを判定する判定部と、ユーザ端末11Bが暗号文xencを復号できたと判定部によって判定された場合、ユーザ端末11Bに暗号データMsgencに対する書き込みを許可する権限付与部と、を備えている。
ユーザ端末11A〜11Cの各機能は、コンピュータに暗号方法を実行させるための所定のコンピュータプログラム(暗号プログラム)によって実現される。具体的には、コンピュータの主記憶装置102等のハードウェアに暗号プログラムを読み込ませることにより、1又は複数のプロセッサ101の制御のもとで各ハードウェアを動作させるとともに、主記憶装置102及び補助記憶装置103におけるデータの読み出し及び書き込みを行うことで実現される。暗号プログラムは、CD−ROM(Compact Disk Read Only Memory)、DVD−ROM(Digital Versatile Disk Read Only Memory)、及び半導体メモリ等の有形の記録媒体に固定的に記録された状態で提供されてもよい。暗号プログラムは、搬送波に重畳されたデータ信号として通信ネットワークを介して提供されてもよい。提供された暗号プログラムは補助記憶装置103に格納される。
クラウドストレージ40の各機能は、1以上のコンピュータを含むコンピュータシステムに認証方法を実行させるための所定のコンピュータプログラム(認証プログラム)によって実現される。具体的には、コンピュータシステムの主記憶装置102等のハードウェアに所定の認証プログラムを読み込ませることにより、1又は複数のプロセッサ101の制御のもとで各ハードウェアを動作させるとともに、主記憶装置102及び補助記憶装置103におけるデータの読み出し及び書き込みを行うことで実現される。認証プログラムは、CD−ROM、DVD−ROM、及び半導体メモリ等の有形の記録媒体に固定的に記録された状態で提供されてもよい。認証プログラムは、搬送波に重畳されたデータ信号として通信ネットワークを介して提供されてもよい。
以上説明したように、暗号システム1では、ユーザ端末11Aにおいて、読み出し権限を有する属性の組み合わせである読み出し用のアクセス構造と、暗号化鍵PKと、を用いてデータMsgを暗号化することで暗号データMsgencが生成され、クラウドストレージ40に格納される。このため、クラウドストレージ40がデータMsgを覗き見することはできない。また、暗号システム1では、書き込み権限を有する属性の組み合わせである書き込み用のアクセス構造と、属性ベース暗号の暗号化鍵PKと、を用いて入力値xを暗号化することで暗号文xencが生成される。このため、ユーザ端末11B(ユーザUB)が書き込み権限に対応する属性を有している場合に、暗号文xencを復号可能である。したがって、ユーザ端末11Bが暗号文xencを復号できたことを条件として、ユーザ端末11Bに暗号データMsgencに対する書き込みが許可される。このように、ユーザ端末11Bがユーザ端末11B(ユーザUB)の属性に関する情報をクラウドストレージ40に送付することなく、ユーザ端末11B(ユーザUB)が書き込み権限を有しているか否かが判定される。言い換えると、ユーザ端末11B(ユーザUB)の属性を示すことなく、書き込み権限を管理することが可能となる。その結果、プライバシーが侵害される可能性、及び攻撃の対象となる可能性を低減することが可能となる。
ユーザ端末11Bが暗号文xencを復号することができるのであれば、暗号文xencを復号することで得られた入力値xdecを一方向性関数fに入力することで得られた演算結果f(xdec)が、クラウドストレージ40において暗号データMsgencと対応付けられている演算結果f(x)と一致する。したがって、クラウドストレージ40は、ユーザ端末11Bから暗号データMsgencに対する書き込み要求を受信した場合、少なくとも暗号文xencをユーザ端末11Bに送信する。そして、ユーザ端末11Bによって復号された暗号文xenc(入力値xdec)を一方向性関数fに入力することで得られた演算結果f(xdec)が、暗号データMsgencと対応付けられている演算結果f(x)と一致する場合に、ユーザ端末11Bが暗号文xencを復号できたとみなすことができるので、ユーザ端末11Bに暗号データMsgencに対する書き込みが許可される。このように、ユーザUB(ユーザ端末11B)の属性を示すことなく、書き込み権限を管理することが可能となる。なお、上記実施形態では、クラウドストレージ40が演算結果f(xdec)を生成しているが、ユーザ端末11Bが演算結果f(xdec)を生成してもよい。
例えば、ユーザ端末11BがステップS64を行わなかった場合、クラウドストレージ40が暗号文xencに代えて暗号データMsgencを送信したとすると、ユーザ端末11Bが暗号データMsgencを復号し、元のデータMsg(以下、暗号データMsgencを復号することで得られたデータMsgを「データMsgdec」と表記する。)をクラウドストレージ40に送信する。これにより、クラウドストレージ40は、データMsgdecを取得できてしまう。これに対し、ユーザ端末11Bは、クラウドストレージ40から受信した暗号文xencが正当なデータであるか否かを検証するので、暗号文xencが不正なデータである場合には、入力値xdecをストレージ装置に送信しない等の対策を講じることが可能となる。
暗号システム1では、読み出し権限を有する属性の組み合わせである読み出し用のアクセス構造と、暗号化鍵PKと、を用いてデータMsgを暗号化することで暗号データMsgencが生成される。このため、ユーザ端末11Bが読み出し権限に対応する属性を有している場合に、暗号データMsgencを復号可能である。したがって、クラウドストレージ40は、ユーザ端末11Bから暗号データMsgencに対する読み出し要求を受信した場合、暗号データMsgencをユーザ端末11Bに送信するだけでよい。このように、ユーザ端末11Bがユーザ端末11Bの属性に関する情報をクラウドストレージ40に送付することなく、ユーザ端末11Bが読み出し権限を有しているか否かが判定される。言い換えると、ユーザUB(ユーザ端末11B)の属性を示すことなく、読み出し権限を管理することが可能となる。
ユーザ端末11A〜11C、クラウドストレージ40、ユーザ端末11A〜11Cが行う暗号方法、クラウドストレージ40が行う認証方法、ユーザ端末11A〜11Cに暗号方法を実施させるための暗号プログラム、及びクラウドストレージ40に認証方法を実施させるための認証プログラムにおいても、暗号システム1と同様の効果が奏される。
なお、本発明に係る暗号システム、ユーザ端末、ストレージ装置、暗号方法、認証方法、暗号プログラム、及び認証プログラムは上記実施形態に限定されない。
上記実施形態では、各ユーザが鍵発行機関20Aに利用属性の申請を行っているが、他の鍵発行機関に利用属性の申請を行ってもよい。例えば、ある組織のユーザが利用属性の申請を行う鍵発行機関と、別の組織のユーザが利用属性の申請を行う鍵発行機関とが異なる場合のように、2以上の鍵発行機関に利用属性の申請が行われることがある。このような場合、1つの鍵発行機関(例えば、鍵発行機関20A)がそれ以外の鍵発行機関に申請された属性を取りまとめてもよい。他の鍵発行機関は、自身に申請された利用属性について、鍵発行機関20Aに利用属性の申請を行う。鍵発行機関20Aは、上記実施形態と同様に初期設定を行う。
暗号システム1は、公開サーバ30を備えていなくてもよい。この場合、公開情報は、暗号システム1内の各機関に電子メール等によって直接配布される。
ユーザの属性は、所定の規則によって決定されてもよい。例えば、ユーザが会社員である場合には、所属部署、及び入社年度等の属性が管理されている。この場合、これらの属性を一括して、企業の管理部門において利用属性の申請が行われてもよく、各ユーザは利用属性の申請を行わなくてもよい。
ユーザシステム10は、1つの組織に属するユーザ端末だけでなく、異なる組織に属するユーザ端末を含んでもよい。この場合、同じ名称の属性が2以上の組織で利用される可能性がある。このため、各組織の属性が一意に識別可能なように属性名等が設定される。例えば、ユーザUAがE社に属しており、ユーザUBがF社に属しており、ユーザUA及びユーザUBが「総務課」の属性について利用属性の申請を行う場合、属性名を「総務課E社」、及び「総務課F社」として2つの属性が区別されるか、会社名の属性と「総務課」の属性とが論理積される。
ユーザ端末11A〜11Cは、読み出し用の暗号化鍵PKと、書き込み用の暗号化鍵PKと、を生成してもよく、読み出し用の復号鍵SKuと、書き込み用の復号鍵SKuと、を生成してもよい。この場合、鍵発行機関20Aは、各ユーザから申請されたN個の属性に対して、巡回群G1から2N個の乱数h1,h2,・・・,h2N(h1,h2,・・・,h2N∈G1)をランダムに選択する。つまり、ユーザの属性として、読み出し用の属性と書き込み用の属性とが準備される。
また、新規書き込み処理及び書き込み処理は、図7及び図9に示される例に限られない。例えば、安全性を高めるために、ゼロ知識証明が用いられてもよい。図10は、図1に示される暗号システムにおける新規書き込み処理の別の例を示すシーケンス図である。図11は、図1に示される暗号システムにおける書き込み処理の別の例を示すシーケンス図である。ここでは、ユーザ端末11Aが新規書き込みを行い、ユーザ端末11Bが書き込みを行う場合を説明する。
図10に示される新規書き込み処理では、ステップS41と同様に、まずユーザUAがユーザ端末11Aを用いて所望のデータMsgを暗号化することで暗号データMsgencを生成する(ステップS71)。続いて、ユーザ端末11Aは、一方向性関数f及びハッシュ関数hを準備(生成)し、入力値xを生成するとともに、一方向性関数fに入力値xを入力することで演算結果f(x)を生成する(ステップS72)。また、ユーザ端末11Aは、素数p、乱数g、及び乱数qを生成し、式(15)を用いて、出力値yを計算する。
続いて、ステップS43と同様に、ユーザ端末11Aは、入力値xを暗号化することで、入力値xの暗号文xencを生成する(ステップS73)。そして、ユーザ端末11Aは、暗号データMsgenc、暗号文xenc、一方向性関数f、演算結果f(x)、出力値y、乱数g、素数p、乱数q、及びハッシュ関数hをクラウドストレージ40に送信する(ステップS74)。クラウドストレージ40は、ユーザ端末11Aから暗号データMsgenc、暗号文xenc、一方向性関数f、演算結果f(x)、出力値y、乱数g、素数p、乱数q、及びハッシュ関数hを受信すると、暗号データMsgenc、暗号文xenc、一方向性関数f、演算結果f(x)、出力値y、乱数g、素数p、乱数q、及びハッシュ関数hを1つの組として対応付けて不図示の記憶装置に格納する(ステップS75)。以上により、新規書き込み処理が終了する。
図11に示される書き込み処理では、まずユーザUBがユーザ端末11Bを用いて、クラウドストレージ40に暗号データMsgencに対する書き込み要求(更新要求)を送信する(ステップS81)。そして、クラウドストレージ40は、ユーザ端末11Bから暗号データMsgencに対する書き込み要求を受信すると、要求されている暗号データMsgencと対応付けられている暗号文xenc、一方向性関数f、演算結果f(x)、出力値y、乱数g、素数p、乱数q、及びハッシュ関数hを不図示の記憶装置から読み出し、当該暗号文xenc、一方向性関数f、演算結果f(x)、出力値y、乱数g、素数p、乱数q、及びハッシュ関数hをユーザ端末11Bに送信する(ステップS82)。
続いて、ユーザ端末11Bは、クラウドストレージ40から暗号文xenc、一方向性関数f、演算結果f(x)、出力値y、乱数g、素数p、乱数q、及びハッシュ関数hを受信すると、ステップS63と同様に、ユーザUBの復号鍵SKuを用いて暗号文xencの復号を行い、入力値xdecを得る(ステップS83)。
続いて、ユーザ端末11Bは、ステップS64と同様に、クラウドストレージ40から受信した暗号文xencが正当なデータであるか否かを検証する(ステップS84)。ユーザ端末11Bは、クラウドストレージ40から受信した暗号文xencが正当なデータであると判定した場合、乱数rを生成し、式(16)〜式(18)を用いて値α、値β、及び値γを計算する(ステップS85)。
そして、ユーザ端末11Bは、値α及び値γをクラウドストレージ40に送信する(ステップS86)。このとき、ユーザ端末11Bは、書き込みを要求している暗号データMsgencを特定するための情報を付加して送信する。一方、ユーザ端末11Bは、クラウドストレージ40から受信した暗号文xencが不正なデータであると判定した場合には、ステップS85以降の処理を行わない。
続いて、クラウドストレージ40は、ユーザ端末11Bから値α及び値γを受信すると、ユーザUBが書き込み権限を有するか否かを判定する(ステップS87)。具体的に説明すると、クラウドストレージ40は、要求されている暗号データMsgencと対応付けられている出力値y、乱数g、素数p、乱数q、及びハッシュ関数hを不図示の記憶装置から読み出し、ユーザ端末11Bから受信した値αを用いて、式(17)に示される計算を行うことで、値β(以下、クラウドストレージ40で計算した値βを「値βserv」と表記する。)を得る。そして、クラウドストレージ40は、式(19)が成立するか否かを判定する。この式(19)が成立することは、ユーザ端末11Bが暗号文xencを復号できたことを意味する。
クラウドストレージ40は、式(19)が成立する場合には、ユーザ端末11BのユーザUBは書き込み権限を有すると判定し、書き込みを許可する(ステップS88)。一方、クラウドストレージ40は、式(19)が成立しない場合には、ユーザ端末11BのユーザUBは書き込み権限を有しないと判定し、書き込みを許可しない。そして、ユーザ端末11Bは、クラウドストレージ40から書き込みの許可を得ると、暗号データMsgencの更新等を行う。以降の処理は、図10に示される新規書き込み処理と同様であるので、説明を省略する。以上により、書き込み処理が終了する。
なお、図10及び図11に示される例では、非対話式のゼロ知識証明が用いられているが、対話式のゼロ知識証明が用いられてもよい。
変形例に係る暗号システム1においても、上記実施形態に係る暗号システム1と同様の効果が奏される。この構成では、ユーザ端末11Bがクラウドストレージ40に入力値xdecを送信することなく、ユーザ端末11Bが暗号文xencを復号できたことをクラウドストレージ40に証明することができる。このため、安全性を高めることが可能となる。
例えば、安全性を高めるために、暗号データMsgencに対する書き込み要求を行ったユーザ端末に、クラウドストレージ40が暗号データMsgencに対応した暗号文xenc等を送信していることを、当該ユーザ端末が確実に検証できるように暗号システム1は構成されてもよい。図12は、図1に示される暗号システムにおける新規書き込み処理のさらに別の例を示すシーケンス図である。図13は、図1に示される暗号システムにおける書き込み処理のさらに別の例を示すシーケンス図である。ここでは、ユーザ端末11Aが新規書き込みを行い、ユーザ端末11Bが書き込みを行う場合を説明する。
図12に示される新規書き込み処理では、ステップS41と同様に、まずユーザUAがユーザ端末11Aを用いて所望のデータMsgを暗号化することで暗号データMsgencを生成する(ステップS91)。続いて、ユーザ端末11Aは、一方向性関数f1(別の一方向性関数)及び一方向性関数f2を準備(生成)する。そして、ユーザ端末11Aは、一方向性関数f1にデータMsgを入力することで演算結果f1(Msg)を生成し、演算結果f1(Msg)を入力値xとする。さらに、ユーザ端末11Aは、一方向性関数f2に入力値xを入力することで演算結果f2(x)を生成する(ステップS92)。
続いて、ステップS43と同様に、ユーザ端末11Aは、入力値xを暗号化することで、入力値xの暗号文xencを生成する(ステップS93)。そして、ユーザ端末11Aは、暗号データMsgenc、暗号文xenc、一方向性関数f1、一方向性関数f2、及び演算結果f2(x)をクラウドストレージ40に送信する(ステップS94)。クラウドストレージ40は、ユーザ端末11Aから暗号データMsgenc、暗号文xenc、一方向性関数f1、一方向性関数f2、及び演算結果f2(x)を受信すると、暗号データMsgenc、暗号文xenc、一方向性関数f1、一方向性関数f2、及び演算結果f2(x)を1つの組として対応付けて不図示の記憶装置に格納する(ステップS95)。以上により、新規書き込み処理が終了する。
図13に示される書き込み処理では、まずユーザUBがユーザ端末11Bを用いて、クラウドストレージ40に暗号データMsgencに対する書き込み要求(更新要求)を送信する(ステップS101)。そして、クラウドストレージ40は、ユーザ端末11Bから暗号データMsgencに対する書き込み要求を受信すると、要求されている暗号データMsgencと、当該暗号データMsgencに対応付けられている暗号文xenc、一方向性関数f1、及び一方向性関数f2を不図示の記憶装置から読み出し、当該暗号データMsgenc、暗号文xenc、一方向性関数f1、及び一方向性関数f2をユーザ端末11Bに送信する(ステップS102)。
続いて、ユーザ端末11Bは、クラウドストレージ40から暗号データMsgenc、暗号文xenc、一方向性関数f1、及び一方向性関数f2を受信すると、ステップS63と同様に、ユーザUBの復号鍵SKuを用いて暗号データMsgenc及び暗号文xencの復号を行い、データMsgdec(別の復号結果)及び入力値xdecを得る(ステップS103)。なお、暗号データMsgencに設定されたポリシーと、暗号文xencに設定されたポリシーとは、互いに同じであってもよく、互いに異なっていてもよい。暗号データMsgencに設定されたポリシーは、暗号文xencに設定されたポリシーと同じか、暗号文xencに設定されたポリシーよりも緩い。言い換えると、暗号文xencを復号可能なユーザ(書き込み可能なユーザ)は、暗号データMsgencを復号可能(読み出し可能)である。
続いて、ユーザ端末11Bは、クラウドストレージ40から受信した暗号文xencが正当なデータであるか否かを検証する(ステップS104)。具体的に説明すると、ユーザ端末11Bは、ステップS103で得られたデータMsgdecをクラウドストレージ40から受信した一方向性関数f1に引数として入力することで、演算結果f1(Msgdec)を生成する。そして、ユーザ端末11Bは、演算結果f1(Msgdec)とステップS103で得られた入力値xdecとを照合する。ユーザ端末11Bは、2つの値が同じである(一致する)場合には、クラウドストレージ40から受信した暗号文xencが正当なデータであると判定し、一方向性関数f2に入力値xdecを入力することで演算結果f2(xdec)を生成する(ステップS105)。
そして、ユーザ端末11Bは、演算結果f2(xdec)をクラウドストレージ40に送信する(ステップS106)。このとき、ユーザ端末11Bは、書き込みを要求している暗号データMsgencを特定するための情報を付加して送信する。一方、ユーザ端末11Bは、演算結果f1(Msgdec)とステップS103で得られた入力値xdecとが互いに異なる場合には、クラウドストレージ40から受信した暗号文xencが不正なデータであると判定し、ステップS105以降の処理を行わない。
続いて、クラウドストレージ40は、ユーザ端末11Bから演算結果f2(xdec)を受信すると、要求されている暗号データMsgencと対応付けられている演算結果f2(x)を不図示の記憶装置から読み出し、演算結果f2(x)と演算結果f2(xdec)とを照合する(ステップS107)。クラウドストレージ40は、2つの演算結果が同じである(一致する)場合には、ユーザ端末11BのユーザUBは書き込み権限を有すると判定し、書き込みを許可する(ステップS108)。一方、クラウドストレージ40は、2つの演算結果が互いに異なる場合には、ユーザ端末11BのユーザUBは書き込み権限を有しないと判定し、書き込みを許可しない。
そして、ユーザ端末11Bは、クラウドストレージ40から書き込みの許可を得ると、暗号データMsgencの更新等を行う。以降の処理は、新規書き込み処理と同様であるので、説明を省略する。以上により、書き込み処理が終了する。
上記別の変形例に係る暗号システム1においても、上記実施形態に係る暗号システム1と同様の効果が奏される。また、別の変形例に係る暗号システム1では、入力値xが暗号化対象のデータMsgから生成されるので、ユーザ端末11Bは、クラウドストレージ40から受信した暗号文xencが暗号化対象のデータMsgに対応しているか否か、つまり、クラウドストレージ40から受信した暗号文xencが正当なデータであるか否かを確実に確認することができる。
以上のように、クラウドストレージ40は、ユーザ端末11Bから暗号データMsgencに対する書き込み要求を受信した場合、ユーザ端末11Bが暗号文xencを復号できたことを条件として、ユーザ端末11Bに暗号データMsgencに対する書き込みを許可する。ユーザ端末11Bが暗号文xencを復号できたか否かの判定方法は、図9に示される例、図11に示される例、及び図13に示される例に限られない。
1…暗号システム、11A…ユーザ端末(第1ユーザ端末)、11B…ユーザ端末(第2ユーザ端末)、11C…ユーザ端末、40…クラウドストレージ(ストレージ装置)、UA…ユーザ、UB…ユーザ、UC…ユーザ。
Claims (12)
- 属性ベース暗号を用いた暗号システムであって、
第1ユーザ端末と、
前記第1ユーザ端末によって生成された暗号データを格納するストレージ装置と、
を備え、
前記第1ユーザ端末は、読み出し権限を有する属性の組み合わせである第1属性セットと、属性ベース暗号の第1暗号化鍵と、を用いて暗号化対象のデータを暗号化することで前記暗号データを生成し、
前記第1ユーザ端末は、入力値を生成するとともに、一方向性関数に前記入力値を入力することで演算結果を生成し、
前記第1ユーザ端末は、書き込み権限を有する属性の組み合わせである第2属性セットと、属性ベース暗号の第2暗号化鍵と、を用いて前記入力値を暗号化することで暗号文を生成し、
前記ストレージ装置は、前記暗号データとともに、前記暗号文、前記一方向性関数、及び前記演算結果を格納し、
前記ストレージ装置は、1以上の属性を含むユーザ属性セットを有する第2ユーザ端末から前記暗号データに対する書き込み要求を受信した場合、前記第2ユーザ端末が前記暗号文を復号できたことを条件として、前記第2ユーザ端末に前記暗号データに対する書き込みを許可する、暗号システム。 - 前記ストレージ装置は、前記第2ユーザ端末から前記暗号データに対する書き込み要求を受信した場合、前記暗号文を前記第2ユーザ端末に送信し、
前記第2ユーザ端末は、前記暗号文を復号することで復号結果を生成し、
前記第2ユーザ端末によって生成された前記復号結果を、前記一方向性関数に入力することで前記演算結果が得られた場合に、前記ストレージ装置は、前記第2ユーザ端末が前記暗号文を復号できたと判定する、請求項1に記載の暗号システム。 - 前記ストレージ装置は、前記第2ユーザ端末から前記暗号データに対する書き込み要求を受信した場合、前記一方向性関数、及び前記演算結果を前記第2ユーザ端末にさらに送信し、
前記第2ユーザ端末は、前記復号結果と、前記一方向性関数と、前記演算結果と、を用いて前記暗号文が正当なデータであるか否かを検証する、請求項2に記載の暗号システム。 - 前記ストレージ装置は、別の一方向性関数に前記暗号化対象のデータを入力することで前記入力値を生成し、
前記ストレージ装置は、前記暗号データ、前記暗号文、前記一方向性関数、及び前記演算結果に加えて、前記別の一方向性関数を格納し、
前記ストレージ装置は、前記第2ユーザ端末から前記暗号データに対する書き込み要求を受信した場合、前記暗号文に加えて、前記暗号データ、及び前記別の一方向性関数を前記第2ユーザ端末にさらに送信し、
前記第2ユーザ端末は、前記暗号データを復号することで得られた別の復号結果と、前記別の一方向性関数と、前記復号結果と、を用いて前記暗号文が正当なデータであるか否かを検証する、請求項2に記載の暗号システム。 - 前記ストレージ装置は、ゼロ知識証明を用いて前記第2ユーザ端末が前記暗号文を復号できたか否かを判定する、請求項1に記載の暗号システム。
- 前記ストレージ装置は、前記第2ユーザ端末から前記暗号データに対する読み出し要求を受信した場合、前記第2ユーザ端末に前記暗号データを送信する、請求項1〜請求項5のいずれか一項に記載の暗号システム。
- 読み出し権限を有する属性の組み合わせである第1属性セットと、属性ベース暗号の第1暗号化鍵と、を用いて暗号化対象のデータを暗号化することで暗号データを生成し、
入力値を生成するとともに、一方向性関数に前記入力値を入力することで演算結果を生成し、
書き込み権限を有する属性の組み合わせである第2属性セットと、属性ベース暗号の第2暗号化鍵と、を用いて前記入力値を暗号化することで暗号文を生成し、
前記暗号データとともに、前記暗号文、前記一方向性関数、及び前記演算結果をストレージ装置に送信する、ユーザ端末。 - 読み出し権限を有する属性の組み合わせである第1属性セットと属性ベース暗号の第1暗号化鍵とを用いて暗号化対象のデータを暗号化することで生成された暗号データと、一方向性関数と、前記一方向性関数に入力値を入力することで得られた演算結果と、書き込み権限を有する属性の組み合わせである第2属性セットと属性ベース暗号の第2暗号化鍵とを用いて前記入力値を暗号化することで生成された暗号文と、を取得し、
前記暗号データとともに、前記暗号文、前記一方向性関数、及び前記演算結果を格納し、
ユーザ端末から前記暗号データに対する書き込み要求を受信した場合、前記ユーザ端末が前記暗号文を復号できるか否かを判定し、
前記ユーザ端末が前記暗号文を復号できたと判定された場合、前記ユーザ端末に前記暗号データに対する書き込みを許可する、ストレージ装置。 - ユーザ端末が行う暗号方法であって、
読み出し権限を有する属性の組み合わせである第1属性セットと、属性ベース暗号の第1暗号化鍵と、を用いて暗号化対象のデータを暗号化することで暗号データを生成するステップと、
入力値を生成するとともに、一方向性関数に前記入力値を入力することで演算結果を生成するステップと、
書き込み権限を有する属性の組み合わせである第2属性セットと、属性ベース暗号の第2暗号化鍵と、を用いて前記入力値を暗号化することで暗号文を生成するステップと、
前記暗号データとともに、前記暗号文、前記一方向性関数、及び前記演算結果をストレージ装置に送信するステップと、
を備える、暗号方法。 - ストレージ装置が行う認証方法であって、
読み出し権限を有する属性の組み合わせである第1属性セットと属性ベース暗号の第1暗号化鍵とを用いて暗号化対象のデータを暗号化することで生成された暗号データと、一方向性関数と、前記一方向性関数に入力値を入力することで得られた演算結果と、書き込み権限を有する属性の組み合わせである第2属性セットと属性ベース暗号の第2暗号化鍵とを用いて前記入力値を暗号化することで生成された暗号文と、を取得するステップと、
前記暗号データとともに、前記暗号文、前記一方向性関数、及び前記演算結果を格納するステップと、
ユーザ端末から前記暗号データに対する書き込み要求を受信した場合、前記ユーザ端末が前記暗号文を復号できるか否かを判定するステップと、
前記ユーザ端末が前記暗号文を復号できたと判定された場合に、前記ユーザ端末に前記暗号データに対する書き込みを許可するステップと、
を備える、認証方法。 - コンピュータに、
読み出し権限を有する属性の組み合わせである第1属性セットと、属性ベース暗号の第1暗号化鍵と、を用いて暗号化対象のデータを暗号化することで暗号データを生成するステップと、
入力値を生成するとともに、一方向性関数に前記入力値を入力することで演算結果を生成するステップと、
書き込み権限を有する属性の組み合わせである第2属性セットと、属性ベース暗号の第2暗号化鍵と、を用いて前記入力値を暗号化することで暗号文を生成するステップと、
前記暗号データとともに、前記暗号文、前記一方向性関数、及び前記演算結果をストレージ装置に送信するステップと、
を実行させるための暗号プログラム。 - 1以上のコンピュータを含むコンピュータシステムに、
読み出し権限を有する属性の組み合わせである第1属性セットと属性ベース暗号の第1暗号化鍵とを用いて暗号化対象のデータを暗号化することで生成された暗号データと、一方向性関数と、前記一方向性関数に入力値を入力することで得られた演算結果と、書き込み権限を有する属性の組み合わせである第2属性セットと属性ベース暗号の第2暗号化鍵とを用いて前記入力値を暗号化することで生成された暗号文と、を取得するステップと、
前記暗号データとともに、前記暗号文、前記一方向性関数、及び前記演算結果を格納するステップと、
ユーザ端末から前記暗号データに対する書き込み要求を受信した場合、前記ユーザ端末が前記暗号文を復号できるか否かを判定するステップと、
前記ユーザ端末が前記暗号文を復号できたと判定された場合に、前記ユーザ端末に前記暗号データに対する書き込みを許可するステップと、
を実行させるための認証プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019058382A JP2020161945A (ja) | 2019-03-26 | 2019-03-26 | 暗号システム、ユーザ端末、ストレージ装置、暗号方法、認証方法、暗号プログラム、及び認証プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019058382A JP2020161945A (ja) | 2019-03-26 | 2019-03-26 | 暗号システム、ユーザ端末、ストレージ装置、暗号方法、認証方法、暗号プログラム、及び認証プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020161945A true JP2020161945A (ja) | 2020-10-01 |
Family
ID=72640005
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019058382A Pending JP2020161945A (ja) | 2019-03-26 | 2019-03-26 | 暗号システム、ユーザ端末、ストレージ装置、暗号方法、認証方法、暗号プログラム、及び認証プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2020161945A (ja) |
-
2019
- 2019-03-26 JP JP2019058382A patent/JP2020161945A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10824701B2 (en) | System and method for mapping decentralized identifiers to real-world entities | |
US11533164B2 (en) | System and method for blockchain-based cross-entity authentication | |
TWI707245B (zh) | 使用高可用性的可信執行環境檢索區塊鏈網路的存取資料 | |
US11025435B2 (en) | System and method for blockchain-based cross-entity authentication | |
EP3721603B1 (en) | System and method for creating decentralized identifiers | |
EP3788522B1 (en) | System and method for mapping decentralized identifiers to real-world entities | |
Fabian et al. | Collaborative and secure sharing of healthcare data in multi-clouds | |
US20110276490A1 (en) | Security service level agreements with publicly verifiable proofs of compliance | |
JP2012518330A (ja) | 高信頼なクラウド・コンピューティングおよびクラウド・サービスのフレームワーク | |
JP2012518329A (ja) | 信頼済みクラウドコンピューティングおよびサービスに関するフレームワーク | |
CN110445840B (zh) | 一种基于区块链技术的文件存储和读取的方法 | |
CN101641702A (zh) | 结合人类参与的安全数据存储与检索 | |
Hwang et al. | Data error locations reported by public auditing in cloud storage service | |
Zhang et al. | Data security in cloud storage | |
George et al. | Ethereum blockchain-based authentication approach for Data Sharing in Cloud Storage Model | |
Piechotta et al. | A secure dynamic collaboration environment in a cloud context | |
JP2020161945A (ja) | 暗号システム、ユーザ端末、ストレージ装置、暗号方法、認証方法、暗号プログラム、及び認証プログラム | |
Divya et al. | A combined data storage with encryption and keyword based data retrieval using SCDS-TM model in cloud | |
Gonthireddy et al. | Secure Big Data Deduplication with Dynamic Ownership Management in Cloud Computing | |
Gagged et al. | Improved secure dynamic bit standard technique for a private cloud platform to address security challenges | |
Wang et al. | Security Enhancements for Data‐Driven Systems: A Blockchain‐Based Trustworthy Data Sharing Scheme | |
JP2019068327A (ja) | ユーザ管理装置、ユーザ管理システム | |
JP6936482B2 (ja) | 暗号システム、ユーザシステム、暗号方法、及び暗号プログラム | |
Almarwani et al. | A novel approach to data integrity auditing in PCS: Minimising any Trust on Third Parties (DIA-MTTP) | |
Bingu et al. | Cloud auditing and authentication scheme for establishing privacy preservation |