(57)【要約】【課題】ユーザの属性を示すことなく、書き込み権限を管理すること。【解決手段】暗号システムは、第１ユーザ端末と、ストレージ装置と、を備える。第１ユーザ端末は、読み出し用の第１属性セットと、属性ベース暗号の第１暗号化鍵と、を用いて暗号化対象のデータを暗号化することで暗号データを生成し、一方向性関数に入力値を入力することで演算結果を生成し、書き込み用の第２属性セットと、属性ベース暗号の第２暗号化鍵と、を用いて入力値を暗号化することで暗号文を生成する。ストレージ装置は、暗号データとともに、暗号文、一方向性関数、及び演算結果を格納し、ユーザ属性セットを有する第２ユーザ端末から暗号データに対する書き込み要求を受信した場合、第２ユーザ端末が暗号文を復号できたことを条件として、第２ユーザ端末に暗号データに対する書き込みを許可する。【選択図】図７
2020161945.tif 000002
【特許請求の範囲】
【請求項１】
属性ベース暗号を用いた暗号システムであって、
第１ユーザ端末と、
前記第１ユーザ端末によって生成された暗号データを格納するストレージ装置と、
を備え、
前記第１ユーザ端末は、読み出し権限を有する属性の組み合わせである第１属性セットと、属性ベース暗号の第１暗号化鍵と、を用いて暗号化対象のデータを暗号化することで前記暗号データを生成し、
前記第１ユーザ端末は、入力値を生成するとともに、一方向性関数に前記入力値を入力することで演算結果を生成し、
前記第１ユーザ端末は、書き込み権限を有する属性の組み合わせである第２属性セットと、属性ベース暗号の第２暗号化鍵と、を用いて前記入力値を暗号化することで暗号文を生成し、
前記ストレージ装置は、前記暗号データとともに、前記暗号文、前記一方向性関数、及び前記演算結果を格納し、
前記ストレージ装置は、１以上の属性を含むユーザ属性セットを有する第２ユーザ端末から前記暗号データに対する書き込み要求を受信した場合、前記第２ユーザ端末が前記暗号文を復号できたことを条件として、前記第２ユーザ端末に前記暗号データに対する書き込みを許可する、暗号システム。
【請求項２】
前記ストレージ装置は、前記第２ユーザ端末から前記暗号データに対する書き込み要求を受信した場合、前記暗号文を前記第２ユーザ端末に送信し、
前記第２ユーザ端末は、前記暗号文を復号することで復号結果を生成し、
前記第２ユーザ端末によって生成された前記復号結果を、前記一方向性関数に入力することで前記演算結果が得られた場合に、前記ストレージ装置は、前記第２ユーザ端末が前記暗号文を復号できたと判定する、請求項１に記載の暗号システム。
【請求項３】
前記ストレージ装置は、前記第２ユーザ端末から前記暗号データに対する書き込み要求を受信した場合、前記一方向性関数、及び前記演算結果を前記第２ユーザ端末にさらに送信し、
前記第２ユーザ端末は、前記復号結果と、前記一方向性関数と、前記演算結果と、を用いて前記暗号文が正当なデータであるか否かを検証する、請求項２に記載の暗号システム。
【請求項４】
前記ストレージ装置は、別の一方向性関数に前記暗号化対象のデータを入力することで前記入力値を生成し、
前記ストレージ装置は、前記暗号データ、前記暗号文、前記一方向性関数、及び前記演算結果に加えて、前記別の一方向性関数を格納し、
前記ストレージ装置は、前記第２ユーザ端末から前記暗号データに対する書き込み要求を受信した場合、前記暗号文に加えて、前記暗号データ、及び前記別の一方向性関数を前記第２ユーザ端末にさらに送信し、
前記第２ユーザ端末は、前記暗号データを復号することで得られた別の復号結果と、前記別の一方向性関数と、前記復号結果と、を用いて前記暗号文が正当なデータであるか否かを検証する、請求項２に記載の暗号システム。
【請求項５】
前記ストレージ装置は、ゼロ知識証明を用いて前記第２ユーザ端末が前記暗号文を復号できたか否かを判定する、請求項１に記載の暗号システム。
【請求項６】
前記ストレージ装置は、前記第２ユーザ端末から前記暗号データに対する読み出し要求を受信した場合、前記第２ユーザ端末に前記暗号データを送信する、請求項１〜請求項５のいずれか一項に記載の暗号システム。
【請求項７】
読み出し権限を有する属性の組み合わせである第１属性セットと、属性ベース暗号の第１暗号化鍵と、を用いて暗号化対象のデータを暗号化することで暗号データを生成し、
入力値を生成するとともに、一方向性関数に前記入力値を入力することで演算結果を生成し、
書き込み権限を有する属性の組み合わせである第２属性セットと、属性ベース暗号の第２暗号化鍵と、を用いて前記入力値を暗号化することで暗号文を生成し、
前記暗号データとともに、前記暗号文、前記一方向性関数、及び前記演算結果をストレージ装置に送信する、ユーザ端末。
【請求項８】
読み出し権限を有する属性の組み合わせである第１属性セットと属性ベース暗号の第１暗号化鍵とを用いて暗号化対象のデータを暗号化することで生成された暗号データと、一方向性関数と、前記一方向性関数に入力値を入力することで得られた演算結果と、書き込み権限を有する属性の組み合わせである第２属性セットと属性ベース暗号の第２暗号化鍵とを用いて前記入力値を暗号化することで生成された暗号文と、を取得し、
前記暗号データとともに、前記暗号文、前記一方向性関数、及び前記演算結果を格納し、
ユーザ端末から前記暗号データに対する書き込み要求を受信した場合、前記ユーザ端末が前記暗号文を復号できるか否かを判定し、
前記ユーザ端末が前記暗号文を復号できたと判定された場合、前記ユーザ端末に前記暗号データに対する書き込みを許可する、ストレージ装置。
【請求項９】
ユーザ端末が行う暗号方法であって、
読み出し権限を有する属性の組み合わせである第１属性セットと、属性ベース暗号の第１暗号化鍵と、を用いて暗号化対象のデータを暗号化することで暗号データを生成するステップと、
入力値を生成するとともに、一方向性関数に前記入力値を入力することで演算結果を生成するステップと、
書き込み権限を有する属性の組み合わせである第２属性セットと、属性ベース暗号の第２暗号化鍵と、を用いて前記入力値を暗号化することで暗号文を生成するステップと、
前記暗号データとともに、前記暗号文、前記一方向性関数、及び前記演算結果をストレージ装置に送信するステップと、
を備える、暗号方法。
【請求項１０】
ストレージ装置が行う認証方法であって、
読み出し権限を有する属性の組み合わせである第１属性セットと属性ベース暗号の第１暗号化鍵とを用いて暗号化対象のデータを暗号化することで生成された暗号データと、一方向性関数と、前記一方向性関数に入力値を入力することで得られた演算結果と、書き込み権限を有する属性の組み合わせである第２属性セットと属性ベース暗号の第２暗号化鍵とを用いて前記入力値を暗号化することで生成された暗号文と、を取得するステップと、
前記暗号データとともに、前記暗号文、前記一方向性関数、及び前記演算結果を格納するステップと、
ユーザ端末から前記暗号データに対する書き込み要求を受信した場合、前記ユーザ端末が前記暗号文を復号できるか否かを判定するステップと、
前記ユーザ端末が前記暗号文を復号できたと判定された場合に、前記ユーザ端末に前記暗号データに対する書き込みを許可するステップと、
を備える、認証方法。
【請求項１１】
コンピュータに、
読み出し権限を有する属性の組み合わせである第１属性セットと、属性ベース暗号の第１暗号化鍵と、を用いて暗号化対象のデータを暗号化することで暗号データを生成するステップと、
入力値を生成するとともに、一方向性関数に前記入力値を入力することで演算結果を生成するステップと、
書き込み権限を有する属性の組み合わせである第２属性セットと、属性ベース暗号の第２暗号化鍵と、を用いて前記入力値を暗号化することで暗号文を生成するステップと、
前記暗号データとともに、前記暗号文、前記一方向性関数、及び前記演算結果をストレージ装置に送信するステップと、
を実行させるための暗号プログラム。
【請求項１２】
１以上のコンピュータを含むコンピュータシステムに、
読み出し権限を有する属性の組み合わせである第１属性セットと属性ベース暗号の第１暗号化鍵とを用いて暗号化対象のデータを暗号化することで生成された暗号データと、一方向性関数と、前記一方向性関数に入力値を入力することで得られた演算結果と、書き込み権限を有する属性の組み合わせである第２属性セットと属性ベース暗号の第２暗号化鍵とを用いて前記入力値を暗号化することで生成された暗号文と、を取得するステップと、
前記暗号データとともに、前記暗号文、前記一方向性関数、及び前記演算結果を格納するステップと、
ユーザ端末から前記暗号データに対する書き込み要求を受信した場合、前記ユーザ端末が前記暗号文を復号できるか否かを判定するステップと、
前記ユーザ端末が前記暗号文を復号できたと判定された場合に、前記ユーザ端末に前記暗号データに対する書き込みを許可するステップと、
を実行させるための認証プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号システム、ユーザ端末、ストレージ装置、暗号方法、認証方法、暗号プログラム、及び認証プログラムに関する。
【背景技術】
【０００２】
近年、電子ファイルの数及びサイズの増加に伴い、クラウドストレージサービスが普及している。クラウドストレージを利用するにあたり、個人情報及び機密情報を保護するために、電子ファイルに暗号化が施される。暗号方式として、属性ベース暗号が知られている。属性ベース暗号は、ユーザごとに複数の属性を付与し、ユーザの属性に基づいて設定された復号条件（ポリシー）を満たすユーザのみが暗号文を復号可能な暗号技術である。
【０００３】
通常、ファイル共有システムでは、ファイルアクセス権として、読み出し権限と書き込み権限とがそれぞれのファイルに設定されている。属性ベース暗号では、ファイルを暗号化する際に設定された復号条件（属性の組み合わせ）が、ファイルの読み出し権限と対応する。しかし、ファイルの書き込み権限についてはそのような対応が存在しないので、そのままではファイルの書き換えによる改ざん等の問題が生じ得る。これに対し、属性ベース署名を用いた認証が行われることがある（例えば、特許文献１及び特許文献２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−２９５４３０号公報
【特許文献２】特表２０１３−５２７７１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
属性ベース署名を用いた認証では、ファイル書き込み時の属性による認証が可能となる。しかしながら、システム側にユーザが有する属性を明らかにする必要がある。このため、例えば、出身地等のプライバシー情報が属性として与えられていた場合には、プライバシー侵害となる可能性がある。また、金融情報等といった重要な情報についての属性が与えられていた場合、攻撃の対象となる可能性が高まる。
【０００６】
本技術分野では、ユーザの属性を示すことなく、書き込み権限を管理することが望まれている。
【課題を解決するための手段】
【０００７】
本発明の一側面に係る暗号システムは、属性ベース暗号を用いたシステムである。この暗号システムは、第１ユーザ端末と、第１ユーザ端末によって生成された暗号データを格納するストレージ装置と、を備える。第１ユーザ端末は、読み出し権限を有する属性の組み合わせである第１属性セットと、属性ベース暗号の第１暗号化鍵と、を用いて暗号化対象のデータを暗号化することで暗号データを生成する。第１ユーザ端末は、入力値を生成するとともに、一方向性関数に入力値を入力することで演算結果を生成する。第１ユーザ端末は、書き込み権限を有する属性の組み合わせである第２属性セットと、属性ベース暗号の第２暗号化鍵と、を用いて入力値を暗号化することで暗号文を生成する。ストレージ装置は、暗号データとともに、暗号文、一方向性関数、及び演算結果を格納する。ストレージ装置は、１以上の属性を含むユーザ属性セットを有する第２ユーザ端末から暗号データに対する書き込み要求を受信した場合、第２ユーザ端末が暗号文を復号できたことを条件として、第２ユーザ端末に暗号データに対する書き込みを許可する。
【０００８】
この暗号システムでは、書き込み権限を有する属性の組み合わせである第２属性セットと、属性ベース暗号の第２暗号化鍵と、を用いて入力値を暗号化することで暗号文が生成される。このため、第２ユーザ端末が書き込み権限に対応する属性を有している場合に、暗号文を復号可能である。したがって、第２ユーザ端末が暗号文を復号できたことを条件として、第２ユーザ端末に暗号データに対する書き込みが許可される。このように、第２ユーザ端末が第２ユーザ端末の属性に関する情報をストレージ装置に送付することなく、第２ユーザ端末が書き込み権限を有しているか否かが判定される。言い換えると、ユーザ（第２ユーザ端末）の属性を示すことなく、書き込み権限を管理することが可能となる。
【０００９】
ストレージ装置は、第２ユーザ端末から暗号データに対する書き込み要求を受信した場合、暗号文を第２ユーザ端末に送信してもよい。第２ユーザ端末は、暗号文を復号することで復号結果を生成してもよい。第２ユーザ端末によって生成された復号結果を、一方向性関数に入力することで演算結果が得られた場合に、ストレージ装置は、第２ユーザ端末が暗号文を復号できたと判定してもよい。この場合、第２ユーザ端末によって復号された暗号文を一方向性関数に入力することで演算結果が得られたのであれば、第２ユーザ端末が暗号文を復号できたとみなすことができる。このように、ユーザ（第２ユーザ端末）の属性を示すことなく、書き込み権限を管理することが可能となる。
【００１０】
ストレージ装置は、第２ユーザ端末から暗号データに対する書き込み要求を受信した場合、一方向性関数、及び演算結果を第２ユーザ端末にさらに送信してもよい。第２ユーザ端末は、復号結果と、一方向性関数と、演算結果と、を用いて暗号文が正当なデータであるか否かを検証してもよい。例えば、ストレージ装置が暗号文に代えて暗号データを送信したとすると、第２ユーザ端末が暗号データを復号し、暗号データの復号結果をストレージ装置に送信する。これにより、ストレージ装置は、暗号データの復号結果を取得できてしまう。これに対し、暗号文が正当なデータであるか否かが検証されるので、暗号文が不正なデータである場合には、復号結果をストレージ装置に送信しない等の対策を講じることが可能となる。
【００１１】
ストレージ装置は、別の一方向性関数に暗号化対象のデータを入力することで入力値を生成してもよい。ストレージ装置は、暗号データ、暗号文、一方向性関数、及び演算結果に加えて、別の一方向性関数を格納してもよい。ストレージ装置は、第２ユーザ端末から暗号データに対する書き込み要求を受信した場合、暗号文に加えて、暗号データ、及び別の一方向性関数を第２ユーザ端末にさらに送信してもよい。第２ユーザ端末は、暗号データを復号することで得られた別の復号結果と、別の一方向性関数と、復号結果と、を用いて暗号文が正当なデータであるか否かを検証してもよい。この場合、入力値が暗号化対象のデータから生成されるので、第２ユーザ端末は、暗号文が暗号化対象のデータに対応しているか否か、つまり、暗号文が正当なデータであるか否かを確実に確認することができる。
【００１２】
ストレージ装置は、ゼロ知識証明を用いて第２ユーザ端末が暗号文を復号できたか否かを判定してもよい。この場合、第２ユーザ端末がストレージ装置に暗号文の復号結果を送信することなく、第２ユーザ端末が暗号文を復号できたことをストレージ装置に証明することができる。このため、安全性を高めることが可能となる。
【００１３】
ストレージ装置は、第２ユーザ端末から暗号データに対する読み出し要求を受信した場合、第２ユーザ端末に暗号データを送信してもよい。上記暗号システムでは、読み出し権限を有する属性の組み合わせである第１属性セットと、属性ベース暗号の第１暗号化鍵と、を用いて暗号化対象のデータを暗号化することで暗号データが生成される。このため、第２ユーザ端末が読み出し権限に対応する属性を有している場合に、暗号データを復号可能である。したがって、ストレージ装置は、暗号データを第２ユーザ端末に送信するだけでよい。このように、第２ユーザ端末が第２ユーザ端末の属性に関する情報をストレージ装置に送付することなく、第２ユーザ端末が読み出し権限を有しているか否かが判定される。言い換えると、ユーザ（第２ユーザ端末）の属性を示すことなく、読み出し権限を管理することが可能となる。
【００１４】
本発明の別の側面に係るユーザ端末は、読み出し権限を有する属性の組み合わせである第１属性セットと、属性ベース暗号の第１暗号化鍵と、を用いて暗号化対象のデータを暗号化することで暗号データを生成し、入力値を生成するとともに、一方向性関数に入力値を入力することで演算結果を生成し、書き込み権限を有する属性の組み合わせである第２属性セットと、属性ベース暗号の第２暗号化鍵と、を用いて入力値を暗号化することで暗号文を生成し、暗号データとともに、暗号文、一方向性関数、及び演算結果をストレージ装置に送信する。
【００１５】
このユーザ端末では、読み出し権限を有する属性の組み合わせである第１属性セットと、属性ベース暗号の第１暗号化鍵と、を用いて暗号化対象のデータを暗号化することで暗号データが生成され、書き込み権限を有する属性の組み合わせである第２属性セットと、属性ベース暗号の第２暗号化鍵と、を用いて入力値を暗号化することで暗号文が生成される。暗号データとともに、暗号文と、一方向性関数と、入力値を一方向性関数に入力することで生成された演算結果と、がストレージ装置に送信される。別のユーザ端末が書き込み権限に対応する属性を有している場合には、暗号文を復号可能である。このため、例えば、別のユーザ端末が暗号文を復号できたことを条件として、別のユーザ端末に暗号データに対する書き込みが許可され得る。これにより、ユーザ（別のユーザ端末）の属性を示すことなく、書き込み権限を管理することが可能となる。
【００１６】
本発明のさらに別の側面に係るストレージ装置は、読み出し権限を有する属性の組み合わせである第１属性セットと属性ベース暗号の第１暗号化鍵とを用いて暗号化対象のデータを暗号化することで生成された暗号データと、一方向性関数と、一方向性関数に入力値を入力することで得られた演算結果と、書き込み権限を有する属性の組み合わせである第２属性セットと属性ベース暗号の第２暗号化鍵とを用いて入力値を暗号化することで生成された暗号文と、を取得し、暗号データとともに、暗号文、一方向性関数、及び演算結果を格納し、ユーザ端末から暗号データに対する書き込み要求を受信した場合、ユーザ端末が暗号文を復号できるか否かを判定し、ユーザ端末が暗号文を復号できたと判定された場合、ユーザ端末に暗号データに対する書き込みを許可する。
【００１７】
このストレージ装置が取得し格納する暗号文は、書き込み権限を有する属性の組み合わせである第２属性セットと、属性ベース暗号の第２暗号化鍵と、を用いて入力値を暗号化することで生成される。このため、ユーザ端末が書き込み権限に対応する属性を有している場合に、暗号文を復号可能である。したがって、ユーザ端末が暗号文を復号できたことを条件として、ユーザ端末に暗号データに対する書き込みが許可される。このように、ユーザ端末がユーザ端末の属性に関する情報をストレージ装置に送付することなく、ユーザ端末が書き込み権限を有しているか否かが判定される。言い換えると、ユーザ（ユーザ端末）の属性を示すことなく、書き込み権限を管理することが可能となる。
【００１８】
本発明のさらに別の側面に係る暗号方法は、ユーザ端末が行う暗号方法である。この暗号方法は、読み出し権限を有する属性の組み合わせである第１属性セットと、属性ベース暗号の第１暗号化鍵と、を用いて暗号化対象のデータを暗号化することで暗号データを生成するステップと、入力値を生成するとともに、一方向性関数に入力値を入力することで演算結果を生成するステップと、書き込み権限を有する属性の組み合わせである第２属性セットと、属性ベース暗号の第２暗号化鍵と、を用いて入力値を暗号化することで暗号文を生成するステップと、暗号データとともに、暗号文、一方向性関数、及び演算結果をストレージ装置に送信するステップと、を備える。
【００１９】
この暗号方法では、読み出し権限を有する属性の組み合わせである第１属性セットと、属性ベース暗号の第１暗号化鍵と、を用いて暗号化対象のデータを暗号化することで暗号データが生成され、書き込み権限を有する属性の組み合わせである第２属性セットと、属性ベース暗号の第２暗号化鍵と、を用いて入力値を暗号化することで暗号文が生成される。暗号データとともに、暗号文と、一方向性関数と、入力値を一方向性関数に入力することで生成された演算結果と、がストレージ装置に送信される。ユーザ端末が書き込み権限に対応する属性を有している場合には、暗号文を復号可能である。このため、例えば、ユーザ端末が暗号文を復号できたことを条件として、ユーザ端末に暗号データに対する書き込みが許可され得る。これにより、ユーザ（ユーザ端末）の属性を示すことなく、書き込み権限を管理することが可能となる。
【００２０】
本発明のさらに別の側面に係る認証方法は、ストレージ装置が行う認証方法である。この認証方法は、読み出し権限を有する属性の組み合わせである第１属性セットと属性ベース暗号の第１暗号化鍵とを用いて暗号化対象のデータを暗号化することで生成された暗号データと、一方向性関数と、一方向性関数に入力値を入力することで得られた演算結果と、書き込み権限を有する属性の組み合わせである第２属性セットと属性ベース暗号の第２暗号化鍵とを用いて入力値を暗号化することで生成された暗号文と、を取得するステップと、暗号データとともに、暗号文、一方向性関数、及び演算結果を格納するステップと、ユーザ端末から暗号データに対する書き込み要求を受信した場合、ユーザ端末が暗号文を復号できるか否かを判定するステップと、ユーザ端末が暗号文を復号できたと判定された場合に、ユーザ端末に暗号データに対する書き込みを許可するステップと、を備える。
【００２１】
この認証方法では、書き込み権限を有する属性の組み合わせである第２属性セットと、属性ベース暗号の第２暗号化鍵と、を用いて入力値を暗号化することで生成された暗号文が取得され、格納される。このため、ユーザ端末が書き込み権限に対応する属性を有している場合に、暗号文を復号可能である。したがって、ユーザ端末が暗号文を復号できたことを条件として、ユーザ端末に暗号データに対する書き込みが許可される。このように、ユーザ端末がユーザ端末の属性に関する情報をストレージ装置に送付することなく、ユーザ端末が書き込み権限を有しているか否かが判定される。言い換えると、ユーザ（ユーザ端末）の属性を示すことなく、書き込み権限を管理することが可能となる。
【００２２】
本発明のさらに別の側面に係る暗号プログラムは、読み出し権限を有する属性の組み合わせである第１属性セットと、属性ベース暗号の第１暗号化鍵と、を用いて暗号化対象のデータを暗号化することで暗号データを生成するステップと、入力値を生成するとともに、一方向性関数に入力値を入力することで演算結果を生成するステップと、書き込み権限を有する属性の組み合わせである第２属性セットと、属性ベース暗号の第２暗号化鍵と、を用いて入力値を暗号化することで暗号文を生成するステップと、暗号データとともに、暗号文、一方向性関数、及び演算結果をストレージ装置に送信するステップと、をコンピュータに実行させるための暗号プログラムである。
【００２３】
この暗号プログラムでは、読み出し権限を有する属性の組み合わせである第１属性セットと、属性ベース暗号の第１暗号化鍵と、を用いて暗号化対象のデータを暗号化することで暗号データが生成され、書き込み権限を有する属性の組み合わせである第２属性セットと、属性ベース暗号の第２暗号化鍵と、を用いて入力値を暗号化することで暗号文が生成される。暗号データとともに、暗号文と、一方向性関数と、入力値を一方向性関数に入力することで生成された演算結果と、がストレージ装置に送信される。ユーザ端末が書き込み権限に対応する属性を有している場合には、暗号文を復号可能である。このため、例えば、ユーザ端末が暗号文を復号できたことを条件として、ユーザ端末に暗号データに対する書き込みが許可され得る。これにより、ユーザ（ユーザ端末）の属性を示すことなく、書き込み権限を管理することが可能となる。
【００２４】
本発明のさらに別の側面に係る認証プログラムは、読み出し権限を有する属性の組み合わせである第１属性セットと属性ベース暗号の第１暗号化鍵とを用いて暗号化対象のデータを暗号化することで生成された暗号データと、一方向性関数と、一方向性関数に入力値を入力することで得られた演算結果と、書き込み権限を有する属性の組み合わせである第２属性セットと属性ベース暗号の第２暗号化鍵とを用いて入力値を暗号化することで生成された暗号文と、を取得するステップと、暗号データとともに、暗号文、一方向性関数、及び演算結果を格納するステップと、ユーザ端末から暗号データに対する書き込み要求を受信した場合、ユーザ端末が暗号文を復号できるか否かを判定するステップと、ユーザ端末が暗号文を復号できたと判定された場合に、ユーザ端末に暗号データに対する書き込みを許可するステップと、を１以上のコンピュータを含むコンピュータシステムに実行させるための認証プログラムである。
【００２５】
この認証プログラムでは、書き込み権限を有する属性の組み合わせである第２属性セットと、属性ベース暗号の第２暗号化鍵と、を用いて入力値を暗号化することで生成された暗号文が取得され、格納される。このため、ユーザ端末が書き込み権限に対応する属性を有している場合に、暗号文を復号可能である。したがって、ユーザ端末が暗号文を復号できたことを条件として、ユーザ端末に暗号データに対する書き込みが許可される。このように、ユーザ端末がユーザ端末の属性に関する情報をストレージ装置に送付することなく、ユーザ端末が書き込み権限を有しているか否かが判定される。言い換えると、ユーザ（ユーザ端末）の属性を示すことなく、書き込み権限を管理することが可能となる。
【発明の効果】
【００２６】
本発明によれば、ユーザの属性を示すことなく、書き込み権限を管理することができる。
【図面の簡単な説明】
【００２７】
【図１】図１は、一実施形態に係る暗号システムの構成を示す図である。
【図２】図２は、図１に示されるユーザ端末のハードウェア構成を示す図である。
【図３】図３は、属性ベース暗号で用いられるアクセス構造の一例を示す図である。
【図４】図４は、図１に示される暗号システムにおける初期設定処理を示すシーケンス図である。
【図５】図５は、図１に示される暗号システムにおける暗号化鍵生成処理を示すシーケンス図である。
【図６】図６は、図１に示される暗号システムにおける復号鍵生成処理を示すシーケンス図である。
【図７】図７は、図１に示される暗号システムにおける新規書き込み処理を示すシーケンス図である。
【図８】図８は、図１に示される暗号システムにおける読み出し処理を示すシーケンス図である。
【図９】図９は、図１に示される暗号システムにおける書き込み処理を示すシーケンス図である。
【図１０】図１０は、図１に示される暗号システムにおける新規書き込み処理の別の例を示すシーケンス図である。
【図１１】図１１は、図１に示される暗号システムにおける書き込み処理の別の例を示すシーケンス図である。
【図１２】図１２は、図１に示される暗号システムにおける新規書き込み処理のさらに別の例を示すシーケンス図である。
【図１３】図１３は、図１に示される暗号システムにおける書き込み処理のさらに別の例を示すシーケンス図である。
【発明を実施するための形態】
【００２８】
以下、図面を参照しながら本発明の実施形態が詳細に説明される。なお、図面の説明において同一要素には同一符号が付され、重複する説明は省略される。
【００２９】
図１は、一実施形態に係る暗号システムの構成を示す図である。図２は、図１に示されるユーザ端末のハードウェア構成を示す図である。図１に示されるように、暗号システム１は、情報を複数のユーザ間で共有するためのシステムであって、属性ベース暗号を用いた暗号化及び復号を行うシステムである。暗号システム１は、例えば、ファイル共有システムである。属性ベース暗号は、ユーザの属性に基づいて設定された復号条件（ポリシー）を満たすユーザのみが暗号化されたデータを復号可能な暗号技術である。暗号システム１は、ユーザシステム１０と、複数の鍵発行機関（本実施形態では、鍵発行機関２０Ａ〜２０Ｃ）と、公開サーバ３０と、クラウドストレージ４０（ストレージ装置）と、を備えている。ユーザシステム１０と、鍵発行機関２０Ａ〜２０Ｃと、公開サーバ３０と、クラウドストレージ４０とは、ネットワークＮＷによって互いに通信可能に接続されている。ネットワークＮＷは、有線及び無線のいずれで構成されてもよい。ネットワークＮＷの例としては、移動体通信網、インターネット、及びＷＡＮ（Wide  Area  Network）等が挙げられる。
【００３０】
ユーザシステム１０は、属性ベース暗号を利用するユーザ側のシステムである。ユーザシステム１０は、複数のユーザ端末（本実施形態では、ユーザ端末１１Ａ〜１１Ｃ）を含む。ユーザ端末は、ユーザにより用いられる端末装置である。ユーザ端末の例としては、デスクトップＰＣ（Personal  Computer）、ノートＰＣ、スマートフォン、及びタブレット端末等が挙げられる。ここでは、ユーザ端末１１Ａ〜１１Ｃは、同一の組織に属する。ユーザ端末１１Ａ〜１１Ｃは、ＬＡＮ等によって互いに通信可能に接続され、不図示のゲートウェイ装置を介してネットワークＮＷに接続されている。なお、ユーザ端末１１Ａ〜１１Ｃは、同一組織に属していなくてもよい。
【００３１】
図２に示されるように、ユーザ端末１１Ａ〜１１Ｃのそれぞれは、物理的には、１又は複数のプロセッサ１０１、主記憶装置１０２、補助記憶装置１０３、入力装置１０４、出力装置１０５、及び通信装置１０６等のハードウェアを備えるコンピュータとして構成され得る。プロセッサ１０１の例としては、ＣＰＵ（Central  Processing  Unit）が挙げられる。主記憶装置１０２は、例えば、ＲＡＭ（Random  Access  Memory）及びＲＯＭ（Read  Only  Memory）で構成される。補助記憶装置１０３は、例えば、ハードディスク装置又はフラッシュメモリで構成され、一般に主記憶装置１０２よりも大量のデータを記憶可能な容量を有する。入力装置１０４は、例えば、キーボード、マウス、タッチパネル、及び操作ボタンで構成される。出力装置１０５は、例えば、ディスプレイ、及びスピーカで構成される。通信装置１０６は、例えば、ネットワークインタフェースカード（ＮＩＣ）又は無線通信モジュールで構成される。
【００３２】
ユーザＵＡ〜ＵＣのそれぞれは、１以上の属性を含む属性の組み合わせ（以下、「属性セット」と称する場合がある。）であるユーザ属性セットを有する。ユーザＵＡはユーザ端末１１Ａを使用し、ユーザＵＢはユーザ端末１１Ｂを使用し、ユーザＵＣはユーザ端末１１Ｃを使用している。ユーザＵＡ〜ＵＣは、例えば、ユーザ端末１１Ａ〜１１Ｃにおいて、属性ベース暗号のためのアプリケーションを用いて、属性ベース暗号でデータを暗号化し、暗号化されたデータ（以下、「暗号データ」という。）をクラウドストレージ４０に格納する。また、ユーザＵＡ〜ＵＣは、クラウドストレージ４０から暗号データを取得し、暗号データを復号する。ユーザＵＡ〜ＵＣは、属性ベース暗号の暗号化及び復号を利用して、暗号データの書き込み（新規作成、削除、及び更新等）と、暗号データの読み出しと、を行う。暗号データの書き込み処理及び読み出し処理の詳細は後述する。
【００３３】
鍵発行機関２０Ａ〜２０Ｃのそれぞれは、属性ベース暗号の公開鍵及び秘密鍵を生成する。公開鍵は、全てのユーザ（ユーザ端末１１Ａ〜１１Ｃ）に共通の鍵である。秘密鍵は、各ユーザ（ユーザ端末１１Ａ〜１１Ｃ）に固有の鍵であって、ユーザのユーザ属性セットに応じて生成される。公開鍵及び秘密鍵の生成に関する詳細な説明は、後述する。鍵発行機関２０Ａ〜２０Ｃは、ユーザシステム１０の外部に設けられる。鍵発行機関２０Ａ〜２０Ｃのそれぞれは、公開鍵を含む公開情報を公開サーバ３０に送信する。鍵発行機関２０Ａ〜２０Ｃのそれぞれは、ユーザ端末１１Ａ〜１１Ｃと同様のハードウェア構成を有する１以上のコンピュータから構成される。鍵発行機関２０Ａ〜２０Ｃのそれぞれは、入力装置１０４及び出力装置１０５を備えていなくてもよい。
【００３４】
公開サーバ３０は、（大域的な）公開情報を公開するためのサーバ装置である。公開サーバ３０は、鍵発行機関２０Ａ〜２０Ｃのそれぞれから公開情報を受信し、公開情報を不図示の記憶装置に格納する。公開サーバ３０は、暗号システム１に含まれる各機関からの要求に応じて、公開情報を各機関に送信する。公開サーバ３０は、ユーザ端末１１Ａ〜１１Ｃと同様のハードウェア構成を有する１以上のコンピュータから構成される。公開サーバ３０は、入力装置１０４及び出力装置１０５を備えていなくてもよい。
【００３５】
クラウドストレージ４０は、オンラインストレージとも呼ばれ、ネットワークＮＷ上でデータを共有するサービスである。クラウドストレージ４０は、例えば、単一又は複数のファイルサーバを含む。クラウドストレージ４０は、ユーザ端末１１Ａ〜１１Ｃからデータ（暗号データを含む）を受信して、受信したデータを格納する。クラウドストレージ４０は、ユーザ端末１１Ａ〜１１Ｃからの要求に応じて、格納しているデータをユーザ端末１１Ａ〜１１Ｃに送信する。暗号データに対する読み出し権限及び書き込み権限の管理方法については、後述する。
【００３６】
クラウドストレージ４０に代えて、ユーザシステム１０内に設けられた記憶装置（ローカルストレージ）が用いられてもよい。クラウドストレージ４０は、ユーザ端末１１Ａ〜１１Ｃと同様のハードウェア構成を有する１以上のコンピュータから構成される。クラウドストレージ４０は、入力装置１０４及び出力装置１０５を備えていなくてもよい。
【００３７】
次に、図３を参照して、属性ベース暗号を説明する。図３は、属性ベース暗号で用いられるアクセス構造の一例を示す図である。図３に示されるアクセス構造は、ツリー形式で示されている。アクセス構造は、復号を許可する復号条件（ポリシー）を表す。ポリシーは、属性の論理和及び論理積で表される。図３では、｛属性ＡＴ１∧（属性ＡＴ２∧属性ＡＴ３）｝∨属性ＡＴ４の条件を満たすユーザが、暗号データを復号することができる。なお、「∨」は論理和を示し、「∧」は論理積を示す。各ユーザは、属性ベース暗号のためのアプリケーションを用いてデータを暗号化する際に、アクセス構造を指定する。
【００３８】
例えば、ユーザ端末１１ＡのユーザＵＡが、開発部に所属し、海外支社を経験しており、プロジェクトＰを担当しているとする。この場合、ユーザＵＡの属性は、例えば、「開発部」、「海外支社経験者」、及び「プロジェクトＰ担当者」である。ユーザ端末１１ＢのユーザＵＢが、情報グループに所属し、ＩｏＴ（Internet  of  Things）を担当しているとする。この場合、ユーザＵＢの属性は、例えば、「情報Ｇ」、及び「ＩｏＴ」である。ユーザ端末１１ＣのユーザＵＣが、総務課に所属しているとする。この場合、ユーザＵＣの属性は、例えば、「総務課」である。
【００３９】
図３のアクセス構造において、属性ＡＴ１が「開発部」であり、属性ＡＴ２が「海外支社経験者」であり、属性ＡＴ３が「プロジェクトＰ担当者」であり、属性ＡＴ４が「総務部」であると仮定する。この場合、ユーザＵＡ及びユーザＵＣのユーザ属性セットはポリシーを満たすので、ユーザＵＡ及びユーザＵＣは暗号データを復号することができる。一方、ユーザＵＢのユーザ属性セットはポリシーを満たさないので、ユーザＵＢは暗号データを復号することができない。
【００４０】
次に、図４〜図９を参照して、暗号システム１の動作例を説明する。図４は、図１に示される暗号システムにおける初期設定処理を示すシーケンス図である。図５は、図１に示される暗号システムにおける暗号化鍵生成処理を示すシーケンス図である。図６は、図１に示される暗号システムにおける復号鍵生成処理を示すシーケンス図である。図７は、図１に示される暗号システムにおける新規書き込み処理を示すシーケンス図である。図８は、図１に示される暗号システムにおける読み出し処理を示すシーケンス図である。図９は、図１に示される暗号システムにおける書き込み処理を示すシーケンス図である。
【００４１】
なお、説明の便宜上、ユーザについては、ユーザＵＡのみを図示する。ここでは、鍵発行機関２０Ａ〜２０Ｃが暗号システム１における秘密鍵及び公開鍵の鍵発行機関として機能しているが、いずれの鍵発行機関が、暗号システム１における秘密鍵及び公開鍵の鍵発行機関となるかは、予め設定されている。又は、鍵発行機関２０Ａが、鍵発行機関となる機関を指定してもよい。
【００４２】
図４に示されるように、暗号システム１では、まず初期設定処理が行われる。具体的には、各ユーザは、利用属性の申請を行う。ここではユーザＵＡのみを説明するが、他のユーザについても同様である。ユーザＵＡは、ユーザ端末１１Ａを用いて鍵発行機関２０Ａに利用属性の申請を行う（ステップＳ１１）。利用属性の申請には、ユーザの属性又はユーザが利用したい属性を含む属性の組み合わせ（ユーザ属性セット）と、ユーザを特定するための識別情報（ユーザ識別情報）と、が含まれる。ユーザ識別情報としては、ウェブページ等において予め登録されたログインＩＤ（identifier）及びパスワードの組み合わせが用いられ得る。ユーザが使用するユーザ端末のＩＰ（Internet  Protocol）アドレスがユーザ識別情報として用いられてもよい。
【００４３】
続いて、鍵発行機関２０Ａは、各ユーザから利用属性の申請を受信すると、初期設定を行う（ステップＳ１２）。ステップＳ１２において、鍵発行機関２０Ａは、素数ｐ１を位数とする生成元ｇ１からなる巡回群Ｇ１と、素数ｐ２を位数とする生成元ｇ２からなる巡回群Ｇ２と、式（１）で表される双線形写像ｅを有する巡回群ＧＴと、を決定する。巡回群Ｇ１は、素数ｐ１を位数とする巡回群であり、乗算が定義された巡回群である。巡回群Ｇ２は、素数ｐ２を位数とする巡回群であり、乗算が定義された巡回群である。巡回群ＧＴは、加算及び乗算が定義された巡回群である。そして、鍵発行機関２０Ａは、式（１）を満たす双線形写像ｅを決定する。双線形写像ｅは、２つの引数を有し、ｅ（・，・）で表される写像である。
【数１】
2020161945.tif 000003
【００４４】
続いて、鍵発行機関２０Ａは、乱数ｂ（ｂ∈Ｚｐ１）をランダムに決定し、元ｇ１ｂを計算する。
【００４５】
また、鍵発行機関２０Ａは、各ユーザから申請されたＮ個の属性に対して、巡回群Ｇ１から乱数ｈ１，ｈ２，・・・，ｈＮ（ｈ１，ｈ２，・・・，ｈＮ∈Ｇ１）をランダムに選択する。
【００４６】
そして、鍵発行機関２０Ａは、生成元ｇ１、生成元ｇ２、元ｇ１ｂ、双線形写像ｅ、乱数ｈ１，ｈ２，・・・，ｈＮ、及び鍵発行機関（ここでは、鍵発行機関２０Ａ〜２０Ｃ）を特定するための識別情報（発行機関識別情報）を公開情報として公開するために、公開情報を公開サーバ３０に送信する（ステップＳ１３）。発行機関識別情報としては、例えば、鍵発行機関のＩＰアドレスが用いられる。そして、公開サーバ３０は、不図示の記憶装置に公開情報を格納する（ステップＳ１４）。
【００４７】
なお、鍵発行機関２０Ａは、全てのユーザから利用属性の申請を受け取った後にステップＳ１２を実施しているが、ステップＳ１２の実施タイミングはこれに限られない。例えば、鍵発行機関２０Ａは、ユーザから利用属性の申請を受け取る前に生成元ｇ１及び生成元ｇ２の選択、元ｇ１ｂの計算、並びに双線形写像ｅの決定を行ってもよく、ユーザから利用属性の申請を受け取る前に生成元ｇ１、生成元ｇ２、元ｇ１ｂ、双線形写像ｅ、及び発行機関識別情報を公開サーバ３０に送信してもよい。鍵発行機関２０Ａは、ユーザから新たな属性の申請を受け取ると、その属性に対応する乱数ｈｎ（ｎは１〜Ｎの整数）を選択し、選択した乱数ｈｎを公開サーバ３０に送信してもよい。また、各ユーザとユーザのユーザ属性セットとが対応付けられて、各ユーザとユーザのユーザ属性セットとの対応関係が鍵発行機関２０Ａにおいて管理されてもよい。鍵発行機関２０Ａは、各ユーザとユーザのユーザ属性セットとの対応関係を他の鍵発行機関に送信してもよい。
【００４８】
続いて、各ユーザ（ユーザ端末１１Ａ）と、複数の鍵発行機関のうち鍵発行機関２０Ａ以外の鍵発行機関（ここでは、鍵発行機関２０Ｂ，２０Ｃ）とは、公開サーバ３０から公開情報を取得する（ステップＳ１５）。なお、暗号システム１内の各機関は、公開サーバ３０のＩＰアドレスを予め取得している。
【００４９】
続いて、図５に示されるように、暗号システム１では、暗号化鍵生成処理が行われる。暗号化鍵生成処理では、まず、各鍵発行機関（ここでは、鍵発行機関２０Ａ〜２０Ｃ）が公開鍵ＰＫｊを生成する（ステップＳ２１）。なお、各鍵発行機関には番号ｊ（ｊは１〜Ｎｃの整数）が割り当てられている。総数Ｎｃは、公開鍵ＰＫｊ及び秘密鍵ＳＫｕｊを生成する鍵発行機関の総数である。ステップＳ２１では、ｊ番目の鍵発行機関は、乱数ａｊを生成し、式（２）に示される計算を行って公開鍵ＰＫｊを生成する。
【数２】
2020161945.tif 000004
【００５０】
そして、各鍵発行機関は、公開鍵ＰＫｊを公開するために公開鍵ＰＫｊを公開サーバ３０に送信する（ステップＳ２２）。そして、公開サーバ３０は、不図示の記憶装置に公開鍵ＰＫｊを公開情報として格納する（ステップＳ２３）。
【００５１】
続いて、暗号システム１内の各機関（ここでは、ユーザ端末１１Ａ、及び鍵発行機関２０Ａ〜２０Ｃ）は、公開サーバ３０からＮｃ個の公開鍵ＰＫｊを取得する（ステップＳ２４）。そして、各機関は、Ｎｃ個の公開鍵ＰＫｊを用いて属性ベース暗号の暗号化用の暗号化鍵ＰＫを生成する（ステップＳ２５）。具体的には、各機関は、式（３）に示されるように、各公開鍵ＰＫｊを加算し、その加算結果ｅ（ｇ１，ｇ２）ａを計算する。
【数３】
2020161945.tif 000005
【００５２】
そして、各機関は、式（４）に示されるように、公開情報と加算結果ｅ（ｇ１，ｇ２）ａとを属性ベース暗号の暗号化用の暗号化鍵ＰＫとする。
【数４】
2020161945.tif 000006
【００５３】
このように、暗号化鍵生成処理では、鍵発行機関２０Ａ〜２０Ｃのそれぞれは、公開鍵ＰＫｊを生成するとともに、公開鍵ＰＫｊを公開する。ユーザ端末１１Ａは、鍵発行機関２０Ａ〜２０Ｃによって生成された公開鍵ＰＫｊを取得して、これらの公開鍵ＰＫｊを用いて属性ベース暗号の暗号化用の暗号化鍵ＰＫを生成する。
【００５４】
続いて、図６に示されるように、暗号システム１では、復号鍵生成処理が行われる。ここでは、ユーザ端末１１Ａが復号鍵を生成する場合を説明する。復号鍵生成処理では、まず、ユーザ端末１１Ａが各鍵発行機関（ここでは、鍵発行機関２０Ａ〜２０Ｃ）に秘密鍵を要求する（ステップＳ３１）。このとき、ユーザ端末１１Ａは、ユーザＵＡの属性の組み合わせ（ユーザ属性セット）を指定して、ユーザＵＡのユーザ属性セットに対応した秘密鍵を要求する。
【００５５】
そして、各鍵発行機関（ここでは、鍵発行機関２０Ａ〜２０Ｃ）は、ユーザ端末１１Ａから秘密鍵の要求を受け取ると、ユーザＵＡのユーザ属性セットに応じた秘密鍵を生成する（ステップＳ３２）。このとき、各鍵発行機関は、指定されたユーザＵＡのユーザ属性セットにユーザＵＡに無関係な属性が含まれている場合には、指定されたユーザＵＡのユーザ属性セットを否決してもよい。
【００５６】
ステップＳ３２では、まず、各鍵発行機関は、ユーザ端末１１Ａ（ユーザＵＡ）に対して乱数ｓｕｊをランダムに決定して、式（５）に示される計算を行う。なお、乱数ｓｕｊはユーザごとに決定される値である。ユーザＵＡの属性（ユーザＵＡのユーザ属性セットに含まれる属性）の総数Ｘは、ユーザシステム１０で用いられる属性の総数Ｎ以下である。なお、乱数ｈｕｘは、ユーザＵＡのＸ個の属性のうちのｘ番目の属性に対応する乱数ｈｎである。
【数５】
2020161945.tif 000007
【００５７】
続いて、各鍵発行機関は、式（６）に示される秘密鍵ＳＫｕｊをユーザ端末１１Ａに送信（配布）する（ステップＳ３３）。
【数６】
2020161945.tif 000008
【００５８】
そして、ユーザ端末１１Ａは、Ｎｃ個の秘密鍵ＳＫｕｊを用いて属性ベース暗号の復号用の復号鍵ＳＫｕを生成する（ステップＳ３４）。具体的には、ユーザ端末１１Ａは、式（７）及び式（８）に示されるように、Ｎｃ個の秘密鍵ＳＫｕｊを要素ごとに加算し、その加算結果を復号鍵ＳＫｕとする。なお、復号鍵ＳＫｕには、Ｘ個の属性鍵（属性鍵Ｋｕ１〜ＫｕＸ）が含まれる。
【数７】
2020161945.tif 000009
【数８】
2020161945.tif 000010
【００５９】
このように、復号鍵生成処理では、ユーザ端末１１Ａは、鍵発行機関２０Ａ〜２０ＣにユーザＵＡのユーザ属性セットに応じた秘密鍵ＳＫｕｊを要求する。鍵発行機関２０Ａ〜２０Ｃのそれぞれは、ユーザ端末１１Ａからの要求に応じて、秘密鍵ＳＫｕｊを生成して秘密鍵ＳＫｕｊをユーザ端末１１Ａに配布する。ユーザ端末１１Ａは、鍵発行機関２０Ａ〜２０Ｃから秘密鍵ＳＫｕｊを取得し、これらの秘密鍵ＳＫｕｊを用いて属性ベース暗号の復号用の復号鍵ＳＫｕを生成する。
【００６０】
次に、暗号データの新規書き込み処理を説明する。なお、ユーザがクラウドストレージ４０を利用する前に、初期設定処理、暗号化鍵生成処理、及び復号鍵生成処理は終了している。ここでは、ユーザ端末１１Ａ（第１ユーザ端末）が新規書き込みを行う場合を説明する。新規書き込み処理は、書き込み権限が設定されていない場所等に新規に書き込む処理である。
【００６１】
図７に示されるように、新規書き込み処理では、まずユーザＵＡがユーザ端末１１Ａを用いて所望のデータＭｓｇを暗号化することで暗号データＭｓｇｅｎｃを生成する（ステップＳ４１）。ユーザ端末１１Ａには、例えば、属性ベース暗号のための暗号アプリケーションが予めインストールされている。ユーザＵＡは、暗号アプリケーションにおいて、当該データの読み出し権限と書き込み権限とを設定する。読み出し権限及び書き込み権限は、ユーザが属性の組み合わせである属性セット（アクセス構造）を指定することによって設定される。
【００６２】
図３の例では、「開発部」かつ「海外支社経験者」かつ「プロジェクトＰ担当者」の属性の組み合わせを有するユーザ、又は「総務課」の属性の組み合わせを有するユーザが読み出し及び書き込みの権限を有するように、アクセス構造の指定が行われる。なお、各ユーザは、任意のアクセス構造を指定でき、例えば、当該ユーザが読み出し及び書き込みの権限を有しないアクセス構造を指定することもできる。ユーザは、読み出し権限と書き込み権限とに、同じアクセス構造を指定してもよく、互いに異なるアクセス構造を指定してもよい。
【００６３】
そして、ユーザ端末１１Ａは、線形秘密分散法を用いて、指定された読み出し用のアクセス構造（第１属性セット）をｌ行ｍ列の行列Ｍｒの形で表現する。なお、行の総数ｌは、アクセス構造に含まれる属性であって、重複している属性でも別個に計数した場合の属性の数と等しい。例えば、図３の例では、ポリシーを満たす行列の一例として、式（９）で示される行列Ｍｒが生成される。
【数９】
2020161945.tif 000011
【００６４】
そして、ユーザ端末１１Ａは、行列Ｍｒに対応して、ｍ個の要素を含むベクトルｖをランダムに生成する。式（１０）に示されるように、ベクトルｖは、秘密情報ｓと、乱数ｚ２〜ｚｍと、を含む。
【数１０】
2020161945.tif 000012
【００６５】
そして、ユーザ端末１１Ａは、式（１１）に示されるように、ベクトルｖと、行列Ｍｒのｉ（ｉは１〜ｌの整数）行目の行Ｍｒｉと、を用いて値λｉを計算する。
【数１１】
2020161945.tif 000013
【００６６】
続いて、ユーザ端末１１Ａは、ｌ個の乱数ｒｉをランダムに決定する。そして、ユーザ端末１１Ａは、式（１２）に示されるように、値λｉと乱数ｒｉと暗号化鍵ＰＫ（第１暗号化鍵）とを用いて暗号化対象のデータＭｓｇを暗号化し、暗号データＭｓｇｅｎｃを生成する。言い換えると、ユーザ端末１１Ａは、読み出し用のアクセス構造と、暗号化鍵ＰＫと、を用いて暗号化対象のデータＭｓｇを暗号化することで暗号データＭｓｇｅｎｃを生成する。なお、乱数ｈρ（ｉ）は、ｉ行目の属性に対応する乱数ｈｎである。
【数１２】
2020161945.tif 000014
【００６７】
続いて、ユーザ端末１１Ａは、一方向性関数ｆを準備（生成）し、入力値ｘを生成するとともに、一方向性関数ｆに入力値ｘを入力することで演算結果ｆ（ｘ）を生成する（ステップＳ４２）。一方向性関数ｆは、簡単に計算できるが、逆関数の計算は非常に困難であるか不可能である関数である。入力値ｘは、一方向性関数ｆの引数である。一方向性関数ｆの例としては、互いに異なる２つの素数の乗算、及びハッシュ関数が挙げられる。
【００６８】
ここでは、一方向性関数ｆとして、大きな値を有する素数との乗算が用いられる。この場合、入力値ｘは、大きな値を有する素数である。このように、本実施形態の一方向性関数ｆは、互いに異なる大きい値を有する２つの素数の乗算結果を計算することは簡単であるが、乗算結果を素因数分解することで元の２つの素数を得ることは困難であるという性質を利用した関数である。素数は、例えば、以下のように生成される。ユーザ端末１１Ａは、ランダムな数値を生成し、Miller-Rabin素数判定法等の素数判定法を用いて、生成した数値が素数であるか否かを判定する。ユーザ端末１１Ａは、上述の手順を繰り返すことにより、素数が得られるまで、ランダムに数値を生成する。
【００６９】
続いて、ユーザ端末１１Ａは、入力値ｘを暗号化することで、入力値ｘの暗号文ｘｅｎｃを生成する（ステップＳ４３）。ユーザ端末１１Ａは、ステップＳ４１と同様に、まず書き込み用のアクセス構造（第２属性セット）を行列Ｍｗの形で表現する。そして、ユーザ端末１１Ａは、行列Ｍｗに対応したベクトルｖを生成し、値λｉを計算する。そして、ユーザ端末１１Ａは、行列Ｍｗの行数分の乱数ｒｉをランダムに決定する。そして、ユーザ端末１１Ａは、式（１２）に示されるように、値λｉと乱数ｒｉと暗号化鍵ＰＫ（第２暗号化鍵）とを用いて入力値ｘを暗号化し、暗号文ｘｅｎｃを生成する。言い換えると、ユーザ端末１１Ａは、書き込み用のアクセス構造と、暗号化鍵ＰＫと、を用いて入力値ｘを暗号化することで暗号文ｘｅｎｃを生成する。なお、入力値ｘの暗号化に用いられるベクトルｖ、値λｉ、乱数ｒｉには、データＭｓｇの暗号化に用いられるベクトルｖ、値λｉ、乱数ｒｉと同じ符号を付しているが、入力値ｘの暗号化に用いられるベクトルｖ、値λｉ、乱数ｒｉと、データＭｓｇの暗号化に用いられるベクトルｖ、値λｉ、乱数ｒｉとは、それぞれ互いに異なっている。
【００７０】
続いて、ユーザ端末１１Ａは、暗号データＭｓｇｅｎｃ、暗号文ｘｅｎｃ、一方向性関数ｆ、及び演算結果ｆ（ｘ）をクラウドストレージ４０に送信する（ステップＳ４４）。クラウドストレージ４０は、ユーザ端末１１Ａから暗号データＭｓｇｅｎｃ、暗号文ｘｅｎｃ、一方向性関数ｆ、及び演算結果ｆ（ｘ）を受信すると、暗号データＭｓｇｅｎｃ、暗号文ｘｅｎｃ、一方向性関数ｆ、及び演算結果ｆ（ｘ）を１つの組として対応付けて不図示の記憶装置に格納する（ステップＳ４５）。以上により、新規書き込み処理が終了する。
【００７１】
次に、暗号データの読み出し処理を説明する。ここでは、ユーザ端末１１Ｂ（第２ユーザ端末）が読み出しを行う場合を説明する。図８に示されるように、読み出し処理では、まずユーザＵＢがユーザ端末１１Ｂを用いて、クラウドストレージ４０に暗号データＭｓｇｅｎｃの読み出し要求を送信する（ステップＳ５１）。そして、クラウドストレージ４０は、ユーザ端末１１Ｂから暗号データＭｓｇｅｎｃの読み出し要求を受信すると、要求されている暗号データＭｓｇｅｎｃを不図示の記憶装置から読み出し、当該暗号データＭｓｇｅｎｃをユーザ端末１１Ｂに送信する（ステップＳ５２）。
【００７２】
続いて、ユーザ端末１１Ｂは、クラウドストレージ４０から暗号データＭｓｇｅｎｃを受信すると、ユーザＵＢの復号鍵ＳＫｕを用いて暗号データＭｓｇｅｎｃの復号を行う（ステップＳ５３）。このとき、ユーザ端末１１Ｂは、ユーザＵＢのユーザ属性セットが暗号データＭｓｇｅｎｃに設定されたポリシーを満たす場合には、式（１３）を満たす値ｗｉを計算することができる。
【数１３】
2020161945.tif 000015
【００７３】
そして、ユーザ端末１１Ｂは、式（１４）に示されるように、値ｗｉとユーザＵＢの復号鍵ＳＫｕとを用いて暗号データＭｓｇｅｎｃを復号し、元のデータＭｓｇを得る。以上により、読み出し処理が終了する。なお、属性鍵Ｋρ（ｉ）は、行列Ｍｒ（読み出し用のアクセス構造）に含まれるｌ個の属性のうちのｉ行目の属性に対応する属性鍵Ｋｕｘである。
【数１４】
2020161945.tif 000016
【００７４】
このように、各ユーザは、自身のユーザ属性セットが暗号データＭｓｇｅｎｃに設定されたポリシーを満たす場合にのみ、ユーザの復号鍵を用いて当該暗号データＭｓｇｅｎｃの復号が可能となる。属性ベース暗号の安全性は、離散対数問題の困難性に起因している。一例を挙げると、生成元ｇ１と元ｇ１ａ１とから、乱数ａ１を計算することが困難であるという性質である。この性質により、上記の属性ベース暗号は安全であるといえる。
【００７５】
次に、暗号データに対する書き込み処理を説明する。ここでは、ユーザ端末１１Ｂが書き込みを行う場合を説明する。書き込み処理は、暗号データの更新及び削除を含む。図９に示されるように、書き込み処理では、まずユーザＵＢがユーザ端末１１Ｂを用いて、クラウドストレージ４０に暗号データＭｓｇｅｎｃに対する書き込み要求（更新要求）を送信する（ステップＳ６１）。そして、クラウドストレージ４０は、ユーザ端末１１Ｂから暗号データＭｓｇｅｎｃに対する書き込み要求を受信すると、要求されている暗号データＭｓｇｅｎｃと対応付けられている暗号文ｘｅｎｃ、一方向性関数ｆ、及び演算結果ｆ（ｘ）を不図示の記憶装置から読み出し、当該暗号文ｘｅｎｃ、一方向性関数ｆ、及び演算結果ｆ（ｘ）をユーザ端末１１Ｂに送信する（ステップＳ６２）。
【００７６】
続いて、ユーザ端末１１Ｂは、クラウドストレージ４０から暗号文ｘｅｎｃ、一方向性関数ｆ、及び演算結果ｆ（ｘ）を受信すると、ユーザＵＢの復号鍵ＳＫｕを用いて暗号文ｘｅｎｃの復号を行う（ステップＳ６３）。このとき、ステップＳ５３と同様に、ユーザ端末１１Ｂは、ユーザＵＢのユーザ属性セットが暗号文ｘｅｎｃに設定されたポリシーを満たす場合には、式（１３）を満たす値ｗｉを計算することができる。そして、ユーザ端末１１Ｂは、式（１４）と同様にして、値ｗｉとユーザＵＢの復号鍵ＳＫｕとを用いて暗号文ｘｅｎｃを復号し、元の入力値ｘ（以下、暗号文ｘｅｎｃを復号することで得られた入力値を「入力値ｘｄｅｃ」と表記する。）を得る。
【００７７】
続いて、ユーザ端末１１Ｂは、クラウドストレージ４０から受信した暗号文ｘｅｎｃが正当なデータであるか否かを検証する（ステップＳ６４）。具体的に説明すると、ユーザ端末１１Ｂは、ステップＳ６３で得られた入力値ｘｄｅｃ（復号結果）をクラウドストレージ４０から受信した一方向性関数ｆに引数として入力することで、演算結果ｆ（ｘｄｅｃ）を生成する。そして、ユーザ端末１１Ｂは、演算結果ｆ（ｘｄｅｃ）とクラウドストレージ４０から受信した演算結果ｆ（ｘ）とを照合する。ユーザ端末１１Ｂは、２つの演算結果が同じである（一致する）場合には、クラウドストレージ４０から受信した暗号文ｘｅｎｃが正当なデータであると判定し、入力値ｘｄｅｃをクラウドストレージ４０に送信する（ステップＳ６５）。このとき、ユーザ端末１１Ｂは、書き込みを要求している暗号データＭｓｇｅｎｃを特定するための情報を付加して送信する。一方、ユーザ端末１１Ｂは、２つの演算結果が互いに異なる場合には、クラウドストレージ４０から受信した暗号文ｘｅｎｃが不正なデータであると判定し、入力値ｘｄｅｃをクラウドストレージ４０に送信しない。
【００７８】
続いて、クラウドストレージ４０は、ユーザ端末１１Ｂから入力値ｘｄｅｃを受信すると、ユーザＵＢが書き込み権限を有するか否かを判定する（ステップＳ６６）。具体的に説明すると、クラウドストレージ４０は、要求されている暗号データＭｓｇｅｎｃと対応付けられている一方向性関数ｆを不図示の記憶装置から読み出し、ユーザ端末１１Ｂから受信した入力値ｘｄｅｃを、読み出した一方向性関数ｆに引数として入力することで、演算結果ｆ（ｘｄｅｃ）を生成する。
【００７９】
そして、クラウドストレージ４０は、要求されている暗号データＭｓｇｅｎｃと対応付けられている演算結果ｆ（ｘ）を不図示の記憶装置から読み出し、演算結果ｆ（ｘ）と演算結果ｆ（ｘｄｅｃ）とを照合する。クラウドストレージ４０は、２つの演算結果が同じである（一致する）場合には、ユーザ端末１１ＢのユーザＵＢは書き込み権限を有すると判定し、書き込みを許可する（ステップＳ６７）。一方、クラウドストレージ４０は、２つの演算結果が互いに異なる場合には、ユーザ端末１１ＢのユーザＵＢは書き込み権限を有しないと判定し、書き込みを許可しない。
【００８０】
そして、ユーザ端末１１Ｂは、クラウドストレージ４０から書き込みの許可を得ると、暗号データＭｓｇｅｎｃの更新等を行う。以降の処理は、新規書き込み処理と同様であるので、説明を省略する。以上により、書き込み処理が終了する。なお、ユーザ端末１１Ｂは、暗号データＭｓｇｅｎｃの更新等において、データＭｓｇの書き込みに用いられた入力値ｘ及び一方向性関数ｆを用いてもよく、入力値ｘ及び一方向性関数ｆを新たな入力値ｘ及び一方向性関数ｆにそれぞれ変更してもよい。
【００８１】
このように、クラウドストレージ４０に対してユーザ端末１１Ａが新規書き込みを行う際には、ユーザ端末１１Ａは、読み出し用のアクセス構造と暗号化鍵ＰＫとを用いてデータＭｓｇを暗号化することで暗号データＭｓｇｅｎｃを生成するとともに、書き込み用のアクセス構造と暗号化鍵ＰＫとを用いて入力値ｘを暗号化することで暗号文ｘｅｎｃを生成する。そして、ユーザ端末１１Ａは、暗号データＭｓｇｅｎｃ、暗号文ｘｅｎｃ、一方向性関数ｆ、及び演算結果ｆ（ｘ）をクラウドストレージ４０に送信し、クラウドストレージ４０は、暗号データＭｓｇｅｎｃ、暗号文ｘｅｎｃ、一方向性関数ｆ、及び演算結果ｆ（ｘ）を格納する。
【００８２】
ユーザ端末１１Ｂが暗号データＭｓｇｅｎｃを復号できるのであれば、暗号データＭｓｇｅｎｃの読み出し権限を有しているとみなし得る。このため、ユーザ端末１１Ｂがクラウドストレージ４０から暗号データＭｓｇｅｎｃを読み出す場合には、クラウドストレージ４０はユーザ端末１１Ｂ（ユーザＵＢ）が読み出し権限を有しているか否かを判定することなく、ユーザ端末１１Ｂに暗号データＭｓｇｅｎｃを送信する。一方、ユーザ端末１１Ｂがクラウドストレージ４０に格納されている暗号データＭｓｇｅｎｃに対して書き込みを行う場合には、クラウドストレージ４０はまず暗号文ｘｅｎｃ、一方向性関数ｆ、及び演算結果ｆ（ｘ）をユーザ端末１１Ｂに送付する。そして、ユーザ端末１１Ｂは暗号文ｘｅｎｃを復号することで入力値ｘｄｅｃを得る。そして、クラウドストレージ４０は、暗号データＭｓｇｅｎｃと対応付けられている一方向性関数ｆに、ユーザ端末１１Ｂが生成した入力値ｘｄｅｃを入力することで、演算結果ｆ（ｘｄｅｃ）を得る。そして、クラウドストレージ４０は、暗号データＭｓｇｅｎｃと対応付けられている演算結果ｆ（ｘ）と、演算結果ｆ（ｘｄｅｃ）と、が一致する場合には、ユーザ端末１１Ｂ（ユーザＵＢ）が書き込み権限を有していると判定し、ユーザ端末１１Ｂに暗号データＭｓｇｅｎｃに対する書き込みを許可する。
【００８３】
ステップＳ６４は、省略されてもよい。この場合、ステップＳ６２において、クラウドストレージ４０は、ユーザ端末１１Ｂから暗号データＭｓｇｅｎｃに対する書き込み要求を受信すると、要求されている暗号データＭｓｇｅｎｃと対応付けられている暗号文ｘｅｎｃを不図示の記憶装置から読み出し、当該暗号文ｘｅｎｃをユーザ端末１１Ｂに送信してもよい。
【００８４】
次に、ユーザ端末１１Ａ〜１１Ｃ、及びクラウドストレージ４０の機能構成について説明する。ユーザ端末１１Ａ〜１１Ｃのそれぞれは、図４のステップＳ１１，Ｓ１５、図５のステップＳ２４，Ｓ２５、図６のステップＳ３１，Ｓ３３，Ｓ３４、図７のステップＳ４１〜Ｓ４４、図８のステップＳ５１〜Ｓ５３、及び図９のステップＳ６１〜Ｓ６５，Ｓ６７を含む暗号方法を実行するための複数の機能部を備えている。複数の機能部は、暗号方法の各ステップにそれぞれ対応する。
【００８５】
例えば、図７に示される新規書き込み処理に対して、ユーザ端末１１Ａ〜１１Ｃのそれぞれは、読み出し用のアクセス構造と暗号化鍵ＰＫとを用いてデータＭｓｇを暗号化することで暗号データＭｓｇｅｎｃを生成する第１暗号化部と、入力値ｘを生成するとともに、一方向性関数ｆに入力値ｘを入力することで演算結果ｆ（ｘ）を生成する演算部と、書き込み用のアクセス構造と暗号化鍵ＰＫとを用いて入力値ｘを暗号化することで暗号文ｘｅｎｃを生成する第２暗号化部と、暗号データＭｓｇｅｎｃとともに、暗号文ｘｅｎｃ、一方向性関数ｆ、及び演算結果ｆ（ｘ）をクラウドストレージ４０に送信する送信部と、を備えている。
【００８６】
同様に、クラウドストレージ４０は、図７のステップＳ４４，Ｓ４５、図８のステップＳ５１，Ｓ５２、及び図９のステップＳ６１，Ｓ６２，Ｓ６５〜Ｓ６７を含む認証方法を実行するための複数の機能部を備えている。複数の機能部は、認証方法の各ステップにそれぞれ対応する。例えば、図７に示される新規書き込み処理に対して、クラウドストレージ４０は、暗号データＭｓｇｅｎｃ、暗号文ｘｅｎｃ、一方向性関数ｆ、及び演算結果ｆ（ｘ）を取得する取得部と、暗号データＭｓｇｅｎｃとともに、暗号文ｘｅｎｃ、一方向性関数ｆ、及び演算結果ｆ（ｘ）を格納する記憶部と、を備えている。また、図９に示される書き込み処理に対して、クラウドストレージ４０は、ユーザ端末１１Ｂから暗号データＭｓｇｅｎｃに対する書き込み要求を受信した場合、ユーザ端末１１Ｂが暗号文ｘｅｎｃを復号できるか否かを判定する判定部と、ユーザ端末１１Ｂが暗号文ｘｅｎｃを復号できたと判定部によって判定された場合、ユーザ端末１１Ｂに暗号データＭｓｇｅｎｃに対する書き込みを許可する権限付与部と、を備えている。
【００８７】
ユーザ端末１１Ａ〜１１Ｃの各機能は、コンピュータに暗号方法を実行させるための所定のコンピュータプログラム（暗号プログラム）によって実現される。具体的には、コンピュータの主記憶装置１０２等のハードウェアに暗号プログラムを読み込ませることにより、１又は複数のプロセッサ１０１の制御のもとで各ハードウェアを動作させるとともに、主記憶装置１０２及び補助記憶装置１０３におけるデータの読み出し及び書き込みを行うことで実現される。暗号プログラムは、ＣＤ−ＲＯＭ（Compact  Disk  Read  Only  Memory）、ＤＶＤ−ＲＯＭ（Digital  Versatile  Disk  Read  Only  Memory）、及び半導体メモリ等の有形の記録媒体に固定的に記録された状態で提供されてもよい。暗号プログラムは、搬送波に重畳されたデータ信号として通信ネットワークを介して提供されてもよい。提供された暗号プログラムは補助記憶装置１０３に格納される。
【００８８】
クラウドストレージ４０の各機能は、１以上のコンピュータを含むコンピュータシステムに認証方法を実行させるための所定のコンピュータプログラム（認証プログラム）によって実現される。具体的には、コンピュータシステムの主記憶装置１０２等のハードウェアに所定の認証プログラムを読み込ませることにより、１又は複数のプロセッサ１０１の制御のもとで各ハードウェアを動作させるとともに、主記憶装置１０２及び補助記憶装置１０３におけるデータの読み出し及び書き込みを行うことで実現される。認証プログラムは、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、及び半導体メモリ等の有形の記録媒体に固定的に記録された状態で提供されてもよい。認証プログラムは、搬送波に重畳されたデータ信号として通信ネットワークを介して提供されてもよい。
【００８９】
以上説明したように、暗号システム１では、ユーザ端末１１Ａにおいて、読み出し権限を有する属性の組み合わせである読み出し用のアクセス構造と、暗号化鍵ＰＫと、を用いてデータＭｓｇを暗号化することで暗号データＭｓｇｅｎｃが生成され、クラウドストレージ４０に格納される。このため、クラウドストレージ４０がデータＭｓｇを覗き見することはできない。また、暗号システム１では、書き込み権限を有する属性の組み合わせである書き込み用のアクセス構造と、属性ベース暗号の暗号化鍵ＰＫと、を用いて入力値ｘを暗号化することで暗号文ｘｅｎｃが生成される。このため、ユーザ端末１１Ｂ（ユーザＵＢ）が書き込み権限に対応する属性を有している場合に、暗号文ｘｅｎｃを復号可能である。したがって、ユーザ端末１１Ｂが暗号文ｘｅｎｃを復号できたことを条件として、ユーザ端末１１Ｂに暗号データＭｓｇｅｎｃに対する書き込みが許可される。このように、ユーザ端末１１Ｂがユーザ端末１１Ｂ（ユーザＵＢ）の属性に関する情報をクラウドストレージ４０に送付することなく、ユーザ端末１１Ｂ（ユーザＵＢ）が書き込み権限を有しているか否かが判定される。言い換えると、ユーザ端末１１Ｂ（ユーザＵＢ）の属性を示すことなく、書き込み権限を管理することが可能となる。その結果、プライバシーが侵害される可能性、及び攻撃の対象となる可能性を低減することが可能となる。
【００９０】
ユーザ端末１１Ｂが暗号文ｘｅｎｃを復号することができるのであれば、暗号文ｘｅｎｃを復号することで得られた入力値ｘｄｅｃを一方向性関数ｆに入力することで得られた演算結果ｆ（ｘｄｅｃ）が、クラウドストレージ４０において暗号データＭｓｇｅｎｃと対応付けられている演算結果ｆ（ｘ）と一致する。したがって、クラウドストレージ４０は、ユーザ端末１１Ｂから暗号データＭｓｇｅｎｃに対する書き込み要求を受信した場合、少なくとも暗号文ｘｅｎｃをユーザ端末１１Ｂに送信する。そして、ユーザ端末１１Ｂによって復号された暗号文ｘｅｎｃ（入力値ｘｄｅｃ）を一方向性関数ｆに入力することで得られた演算結果ｆ（ｘｄｅｃ）が、暗号データＭｓｇｅｎｃと対応付けられている演算結果ｆ（ｘ）と一致する場合に、ユーザ端末１１Ｂが暗号文ｘｅｎｃを復号できたとみなすことができるので、ユーザ端末１１Ｂに暗号データＭｓｇｅｎｃに対する書き込みが許可される。このように、ユーザＵＢ（ユーザ端末１１Ｂ）の属性を示すことなく、書き込み権限を管理することが可能となる。なお、上記実施形態では、クラウドストレージ４０が演算結果ｆ（ｘｄｅｃ）を生成しているが、ユーザ端末１１Ｂが演算結果ｆ（ｘｄｅｃ）を生成してもよい。
【００９１】
例えば、ユーザ端末１１ＢがステップＳ６４を行わなかった場合、クラウドストレージ４０が暗号文ｘｅｎｃに代えて暗号データＭｓｇｅｎｃを送信したとすると、ユーザ端末１１Ｂが暗号データＭｓｇｅｎｃを復号し、元のデータＭｓｇ（以下、暗号データＭｓｇｅｎｃを復号することで得られたデータＭｓｇを「データＭｓｇｄｅｃ」と表記する。）をクラウドストレージ４０に送信する。これにより、クラウドストレージ４０は、データＭｓｇｄｅｃを取得できてしまう。これに対し、ユーザ端末１１Ｂは、クラウドストレージ４０から受信した暗号文ｘｅｎｃが正当なデータであるか否かを検証するので、暗号文ｘｅｎｃが不正なデータである場合には、入力値ｘｄｅｃをストレージ装置に送信しない等の対策を講じることが可能となる。
【００９２】
暗号システム１では、読み出し権限を有する属性の組み合わせである読み出し用のアクセス構造と、暗号化鍵ＰＫと、を用いてデータＭｓｇを暗号化することで暗号データＭｓｇｅｎｃが生成される。このため、ユーザ端末１１Ｂが読み出し権限に対応する属性を有している場合に、暗号データＭｓｇｅｎｃを復号可能である。したがって、クラウドストレージ４０は、ユーザ端末１１Ｂから暗号データＭｓｇｅｎｃに対する読み出し要求を受信した場合、暗号データＭｓｇｅｎｃをユーザ端末１１Ｂに送信するだけでよい。このように、ユーザ端末１１Ｂがユーザ端末１１Ｂの属性に関する情報をクラウドストレージ４０に送付することなく、ユーザ端末１１Ｂが読み出し権限を有しているか否かが判定される。言い換えると、ユーザＵＢ（ユーザ端末１１Ｂ）の属性を示すことなく、読み出し権限を管理することが可能となる。
【００９３】
ユーザ端末１１Ａ〜１１Ｃ、クラウドストレージ４０、ユーザ端末１１Ａ〜１１Ｃが行う暗号方法、クラウドストレージ４０が行う認証方法、ユーザ端末１１Ａ〜１１Ｃに暗号方法を実施させるための暗号プログラム、及びクラウドストレージ４０に認証方法を実施させるための認証プログラムにおいても、暗号システム１と同様の効果が奏される。
【００９４】
なお、本発明に係る暗号システム、ユーザ端末、ストレージ装置、暗号方法、認証方法、暗号プログラム、及び認証プログラムは上記実施形態に限定されない。
【００９５】
上記実施形態では、各ユーザが鍵発行機関２０Ａに利用属性の申請を行っているが、他の鍵発行機関に利用属性の申請を行ってもよい。例えば、ある組織のユーザが利用属性の申請を行う鍵発行機関と、別の組織のユーザが利用属性の申請を行う鍵発行機関とが異なる場合のように、２以上の鍵発行機関に利用属性の申請が行われることがある。このような場合、１つの鍵発行機関（例えば、鍵発行機関２０Ａ）がそれ以外の鍵発行機関に申請された属性を取りまとめてもよい。他の鍵発行機関は、自身に申請された利用属性について、鍵発行機関２０Ａに利用属性の申請を行う。鍵発行機関２０Ａは、上記実施形態と同様に初期設定を行う。
【００９６】
暗号システム１は、公開サーバ３０を備えていなくてもよい。この場合、公開情報は、暗号システム１内の各機関に電子メール等によって直接配布される。
【００９７】
ユーザの属性は、所定の規則によって決定されてもよい。例えば、ユーザが会社員である場合には、所属部署、及び入社年度等の属性が管理されている。この場合、これらの属性を一括して、企業の管理部門において利用属性の申請が行われてもよく、各ユーザは利用属性の申請を行わなくてもよい。
【００９８】
ユーザシステム１０は、１つの組織に属するユーザ端末だけでなく、異なる組織に属するユーザ端末を含んでもよい。この場合、同じ名称の属性が２以上の組織で利用される可能性がある。このため、各組織の属性が一意に識別可能なように属性名等が設定される。例えば、ユーザＵＡがＥ社に属しており、ユーザＵＢがＦ社に属しており、ユーザＵＡ及びユーザＵＢが「総務課」の属性について利用属性の申請を行う場合、属性名を「総務課Ｅ社」、及び「総務課Ｆ社」として２つの属性が区別されるか、会社名の属性と「総務課」の属性とが論理積される。
【００９９】
ユーザ端末１１Ａ〜１１Ｃは、読み出し用の暗号化鍵ＰＫと、書き込み用の暗号化鍵ＰＫと、を生成してもよく、読み出し用の復号鍵ＳＫｕと、書き込み用の復号鍵ＳＫｕと、を生成してもよい。この場合、鍵発行機関２０Ａは、各ユーザから申請されたＮ個の属性に対して、巡回群Ｇ１から２Ｎ個の乱数ｈ１，ｈ２，・・・，ｈ２Ｎ（ｈ１，ｈ２，・・・，ｈ２Ｎ∈Ｇ１）をランダムに選択する。つまり、ユーザの属性として、読み出し用の属性と書き込み用の属性とが準備される。
【０１００】
また、新規書き込み処理及び書き込み処理は、図７及び図９に示される例に限られない。例えば、安全性を高めるために、ゼロ知識証明が用いられてもよい。図１０は、図１に示される暗号システムにおける新規書き込み処理の別の例を示すシーケンス図である。図１１は、図１に示される暗号システムにおける書き込み処理の別の例を示すシーケンス図である。ここでは、ユーザ端末１１Ａが新規書き込みを行い、ユーザ端末１１Ｂが書き込みを行う場合を説明する。
【０１０１】
図１０に示される新規書き込み処理では、ステップＳ４１と同様に、まずユーザＵＡがユーザ端末１１Ａを用いて所望のデータＭｓｇを暗号化することで暗号データＭｓｇｅｎｃを生成する（ステップＳ７１）。続いて、ユーザ端末１１Ａは、一方向性関数ｆ及びハッシュ関数ｈを準備（生成）し、入力値ｘを生成するとともに、一方向性関数ｆに入力値ｘを入力することで演算結果ｆ（ｘ）を生成する（ステップＳ７２）。また、ユーザ端末１１Ａは、素数ｐ、乱数ｇ、及び乱数ｑを生成し、式（１５）を用いて、出力値ｙを計算する。
【数１５】
2020161945.tif 000017
【０１０２】
続いて、ステップＳ４３と同様に、ユーザ端末１１Ａは、入力値ｘを暗号化することで、入力値ｘの暗号文ｘｅｎｃを生成する（ステップＳ７３）。そして、ユーザ端末１１Ａは、暗号データＭｓｇｅｎｃ、暗号文ｘｅｎｃ、一方向性関数ｆ、演算結果ｆ（ｘ）、出力値ｙ、乱数ｇ、素数ｐ、乱数ｑ、及びハッシュ関数ｈをクラウドストレージ４０に送信する（ステップＳ７４）。クラウドストレージ４０は、ユーザ端末１１Ａから暗号データＭｓｇｅｎｃ、暗号文ｘｅｎｃ、一方向性関数ｆ、演算結果ｆ（ｘ）、出力値ｙ、乱数ｇ、素数ｐ、乱数ｑ、及びハッシュ関数ｈを受信すると、暗号データＭｓｇｅｎｃ、暗号文ｘｅｎｃ、一方向性関数ｆ、演算結果ｆ（ｘ）、出力値ｙ、乱数ｇ、素数ｐ、乱数ｑ、及びハッシュ関数ｈを１つの組として対応付けて不図示の記憶装置に格納する（ステップＳ７５）。以上により、新規書き込み処理が終了する。
【０１０３】
図１１に示される書き込み処理では、まずユーザＵＢがユーザ端末１１Ｂを用いて、クラウドストレージ４０に暗号データＭｓｇｅｎｃに対する書き込み要求（更新要求）を送信する（ステップＳ８１）。そして、クラウドストレージ４０は、ユーザ端末１１Ｂから暗号データＭｓｇｅｎｃに対する書き込み要求を受信すると、要求されている暗号データＭｓｇｅｎｃと対応付けられている暗号文ｘｅｎｃ、一方向性関数ｆ、演算結果ｆ（ｘ）、出力値ｙ、乱数ｇ、素数ｐ、乱数ｑ、及びハッシュ関数ｈを不図示の記憶装置から読み出し、当該暗号文ｘｅｎｃ、一方向性関数ｆ、演算結果ｆ（ｘ）、出力値ｙ、乱数ｇ、素数ｐ、乱数ｑ、及びハッシュ関数ｈをユーザ端末１１Ｂに送信する（ステップＳ８２）。
【０１０４】
続いて、ユーザ端末１１Ｂは、クラウドストレージ４０から暗号文ｘｅｎｃ、一方向性関数ｆ、演算結果ｆ（ｘ）、出力値ｙ、乱数ｇ、素数ｐ、乱数ｑ、及びハッシュ関数ｈを受信すると、ステップＳ６３と同様に、ユーザＵＢの復号鍵ＳＫｕを用いて暗号文ｘｅｎｃの復号を行い、入力値ｘｄｅｃを得る（ステップＳ８３）。
【０１０５】
続いて、ユーザ端末１１Ｂは、ステップＳ６４と同様に、クラウドストレージ４０から受信した暗号文ｘｅｎｃが正当なデータであるか否かを検証する（ステップＳ８４）。ユーザ端末１１Ｂは、クラウドストレージ４０から受信した暗号文ｘｅｎｃが正当なデータであると判定した場合、乱数ｒを生成し、式（１６）〜式（１８）を用いて値α、値β、及び値γを計算する（ステップＳ８５）。
【数１６】
2020161945.tif 000018
【数１７】
2020161945.tif 000019
【数１８】
2020161945.tif 000020
【０１０６】
そして、ユーザ端末１１Ｂは、値α及び値γをクラウドストレージ４０に送信する（ステップＳ８６）。このとき、ユーザ端末１１Ｂは、書き込みを要求している暗号データＭｓｇｅｎｃを特定するための情報を付加して送信する。一方、ユーザ端末１１Ｂは、クラウドストレージ４０から受信した暗号文ｘｅｎｃが不正なデータであると判定した場合には、ステップＳ８５以降の処理を行わない。
【０１０７】
続いて、クラウドストレージ４０は、ユーザ端末１１Ｂから値α及び値γを受信すると、ユーザＵＢが書き込み権限を有するか否かを判定する（ステップＳ８７）。具体的に説明すると、クラウドストレージ４０は、要求されている暗号データＭｓｇｅｎｃと対応付けられている出力値ｙ、乱数ｇ、素数ｐ、乱数ｑ、及びハッシュ関数ｈを不図示の記憶装置から読み出し、ユーザ端末１１Ｂから受信した値αを用いて、式（１７）に示される計算を行うことで、値β（以下、クラウドストレージ４０で計算した値βを「値βｓｅｒｖ」と表記する。）を得る。そして、クラウドストレージ４０は、式（１９）が成立するか否かを判定する。この式（１９）が成立することは、ユーザ端末１１Ｂが暗号文ｘｅｎｃを復号できたことを意味する。
【数１９】
2020161945.tif 000021
【０１０８】
クラウドストレージ４０は、式（１９）が成立する場合には、ユーザ端末１１ＢのユーザＵＢは書き込み権限を有すると判定し、書き込みを許可する（ステップＳ８８）。一方、クラウドストレージ４０は、式（１９）が成立しない場合には、ユーザ端末１１ＢのユーザＵＢは書き込み権限を有しないと判定し、書き込みを許可しない。そして、ユーザ端末１１Ｂは、クラウドストレージ４０から書き込みの許可を得ると、暗号データＭｓｇｅｎｃの更新等を行う。以降の処理は、図１０に示される新規書き込み処理と同様であるので、説明を省略する。以上により、書き込み処理が終了する。
【０１０９】
なお、図１０及び図１１に示される例では、非対話式のゼロ知識証明が用いられているが、対話式のゼロ知識証明が用いられてもよい。
【０１１０】
変形例に係る暗号システム１においても、上記実施形態に係る暗号システム１と同様の効果が奏される。この構成では、ユーザ端末１１Ｂがクラウドストレージ４０に入力値ｘｄｅｃを送信することなく、ユーザ端末１１Ｂが暗号文ｘｅｎｃを復号できたことをクラウドストレージ４０に証明することができる。このため、安全性を高めることが可能となる。
【０１１１】
例えば、安全性を高めるために、暗号データＭｓｇｅｎｃに対する書き込み要求を行ったユーザ端末に、クラウドストレージ４０が暗号データＭｓｇｅｎｃに対応した暗号文ｘｅｎｃ等を送信していることを、当該ユーザ端末が確実に検証できるように暗号システム１は構成されてもよい。図１２は、図１に示される暗号システムにおける新規書き込み処理のさらに別の例を示すシーケンス図である。図１３は、図１に示される暗号システムにおける書き込み処理のさらに別の例を示すシーケンス図である。ここでは、ユーザ端末１１Ａが新規書き込みを行い、ユーザ端末１１Ｂが書き込みを行う場合を説明する。
【０１１２】
図１２に示される新規書き込み処理では、ステップＳ４１と同様に、まずユーザＵＡがユーザ端末１１Ａを用いて所望のデータＭｓｇを暗号化することで暗号データＭｓｇｅｎｃを生成する（ステップＳ９１）。続いて、ユーザ端末１１Ａは、一方向性関数ｆ１（別の一方向性関数）及び一方向性関数ｆ２を準備（生成）する。そして、ユーザ端末１１Ａは、一方向性関数ｆ１にデータＭｓｇを入力することで演算結果ｆ１（Ｍｓｇ）を生成し、演算結果ｆ１（Ｍｓｇ）を入力値ｘとする。さらに、ユーザ端末１１Ａは、一方向性関数ｆ２に入力値ｘを入力することで演算結果ｆ２（ｘ）を生成する（ステップＳ９２）。
【０１１３】
続いて、ステップＳ４３と同様に、ユーザ端末１１Ａは、入力値ｘを暗号化することで、入力値ｘの暗号文ｘｅｎｃを生成する（ステップＳ９３）。そして、ユーザ端末１１Ａは、暗号データＭｓｇｅｎｃ、暗号文ｘｅｎｃ、一方向性関数ｆ１、一方向性関数ｆ２、及び演算結果ｆ２（ｘ）をクラウドストレージ４０に送信する（ステップＳ９４）。クラウドストレージ４０は、ユーザ端末１１Ａから暗号データＭｓｇｅｎｃ、暗号文ｘｅｎｃ、一方向性関数ｆ１、一方向性関数ｆ２、及び演算結果ｆ２（ｘ）を受信すると、暗号データＭｓｇｅｎｃ、暗号文ｘｅｎｃ、一方向性関数ｆ１、一方向性関数ｆ２、及び演算結果ｆ２（ｘ）を１つの組として対応付けて不図示の記憶装置に格納する（ステップＳ９５）。以上により、新規書き込み処理が終了する。
【０１１４】
図１３に示される書き込み処理では、まずユーザＵＢがユーザ端末１１Ｂを用いて、クラウドストレージ４０に暗号データＭｓｇｅｎｃに対する書き込み要求（更新要求）を送信する（ステップＳ１０１）。そして、クラウドストレージ４０は、ユーザ端末１１Ｂから暗号データＭｓｇｅｎｃに対する書き込み要求を受信すると、要求されている暗号データＭｓｇｅｎｃと、当該暗号データＭｓｇｅｎｃに対応付けられている暗号文ｘｅｎｃ、一方向性関数ｆ１、及び一方向性関数ｆ２を不図示の記憶装置から読み出し、当該暗号データＭｓｇｅｎｃ、暗号文ｘｅｎｃ、一方向性関数ｆ１、及び一方向性関数ｆ２をユーザ端末１１Ｂに送信する（ステップＳ１０２）。
【０１１５】
続いて、ユーザ端末１１Ｂは、クラウドストレージ４０から暗号データＭｓｇｅｎｃ、暗号文ｘｅｎｃ、一方向性関数ｆ１、及び一方向性関数ｆ２を受信すると、ステップＳ６３と同様に、ユーザＵＢの復号鍵ＳＫｕを用いて暗号データＭｓｇｅｎｃ及び暗号文ｘｅｎｃの復号を行い、データＭｓｇｄｅｃ（別の復号結果）及び入力値ｘｄｅｃを得る（ステップＳ１０３）。なお、暗号データＭｓｇｅｎｃに設定されたポリシーと、暗号文ｘｅｎｃに設定されたポリシーとは、互いに同じであってもよく、互いに異なっていてもよい。暗号データＭｓｇｅｎｃに設定されたポリシーは、暗号文ｘｅｎｃに設定されたポリシーと同じか、暗号文ｘｅｎｃに設定されたポリシーよりも緩い。言い換えると、暗号文ｘｅｎｃを復号可能なユーザ（書き込み可能なユーザ）は、暗号データＭｓｇｅｎｃを復号可能（読み出し可能）である。
【０１１６】
続いて、ユーザ端末１１Ｂは、クラウドストレージ４０から受信した暗号文ｘｅｎｃが正当なデータであるか否かを検証する（ステップＳ１０４）。具体的に説明すると、ユーザ端末１１Ｂは、ステップＳ１０３で得られたデータＭｓｇｄｅｃをクラウドストレージ４０から受信した一方向性関数ｆ１に引数として入力することで、演算結果ｆ１（Ｍｓｇｄｅｃ）を生成する。そして、ユーザ端末１１Ｂは、演算結果ｆ１（Ｍｓｇｄｅｃ）とステップＳ１０３で得られた入力値ｘｄｅｃとを照合する。ユーザ端末１１Ｂは、２つの値が同じである（一致する）場合には、クラウドストレージ４０から受信した暗号文ｘｅｎｃが正当なデータであると判定し、一方向性関数ｆ２に入力値ｘｄｅｃを入力することで演算結果ｆ２（ｘｄｅｃ）を生成する（ステップＳ１０５）。
【０１１７】
そして、ユーザ端末１１Ｂは、演算結果ｆ２（ｘｄｅｃ）をクラウドストレージ４０に送信する（ステップＳ１０６）。このとき、ユーザ端末１１Ｂは、書き込みを要求している暗号データＭｓｇｅｎｃを特定するための情報を付加して送信する。一方、ユーザ端末１１Ｂは、演算結果ｆ１（Ｍｓｇｄｅｃ）とステップＳ１０３で得られた入力値ｘｄｅｃとが互いに異なる場合には、クラウドストレージ４０から受信した暗号文ｘｅｎｃが不正なデータであると判定し、ステップＳ１０５以降の処理を行わない。
【０１１８】
続いて、クラウドストレージ４０は、ユーザ端末１１Ｂから演算結果ｆ２（ｘｄｅｃ）を受信すると、要求されている暗号データＭｓｇｅｎｃと対応付けられている演算結果ｆ２（ｘ）を不図示の記憶装置から読み出し、演算結果ｆ２（ｘ）と演算結果ｆ２（ｘｄｅｃ）とを照合する（ステップＳ１０７）。クラウドストレージ４０は、２つの演算結果が同じである（一致する）場合には、ユーザ端末１１ＢのユーザＵＢは書き込み権限を有すると判定し、書き込みを許可する（ステップＳ１０８）。一方、クラウドストレージ４０は、２つの演算結果が互いに異なる場合には、ユーザ端末１１ＢのユーザＵＢは書き込み権限を有しないと判定し、書き込みを許可しない。
【０１１９】
そして、ユーザ端末１１Ｂは、クラウドストレージ４０から書き込みの許可を得ると、暗号データＭｓｇｅｎｃの更新等を行う。以降の処理は、新規書き込み処理と同様であるので、説明を省略する。以上により、書き込み処理が終了する。
【０１２０】
上記別の変形例に係る暗号システム１においても、上記実施形態に係る暗号システム１と同様の効果が奏される。また、別の変形例に係る暗号システム１では、入力値ｘが暗号化対象のデータＭｓｇから生成されるので、ユーザ端末１１Ｂは、クラウドストレージ４０から受信した暗号文ｘｅｎｃが暗号化対象のデータＭｓｇに対応しているか否か、つまり、クラウドストレージ４０から受信した暗号文ｘｅｎｃが正当なデータであるか否かを確実に確認することができる。
【０１２１】
以上のように、クラウドストレージ４０は、ユーザ端末１１Ｂから暗号データＭｓｇｅｎｃに対する書き込み要求を受信した場合、ユーザ端末１１Ｂが暗号文ｘｅｎｃを復号できたことを条件として、ユーザ端末１１Ｂに暗号データＭｓｇｅｎｃに対する書き込みを許可する。ユーザ端末１１Ｂが暗号文ｘｅｎｃを復号できたか否かの判定方法は、図９に示される例、図１１に示される例、及び図１３に示される例に限られない。
【符号の説明】
【０１２２】
１…暗号システム、１１Ａ…ユーザ端末（第１ユーザ端末）、１１Ｂ…ユーザ端末（第２ユーザ端末）、１１Ｃ…ユーザ端末、４０…クラウドストレージ（ストレージ装置）、ＵＡ…ユーザ、ＵＢ…ユーザ、ＵＣ…ユーザ。
【図１】
2020161945.tif 000022
【図２】
2020161945.tif 000023
【図３】
2020161945.tif 000024
【図４】
2020161945.tif 000025
【図５】
2020161945.tif 000026
【図６】
2020161945.tif 000027
【図７】
2020161945.tif 000028
【図８】
2020161945.tif 000029
【図９】
2020161945.tif 000030
【図１０】
2020161945.tif 000031
【図１１】
2020161945.tif 000032
【図１２】
2020161945.tif 000033
【図１３】
2020161945.tif 000034