(57)【要約】      （修正有）【課題】クラウドサービスを安全に使用・提供するクラウドアクセス方法を提供する。【解決手段】クライアントが、実行するプログラムが必要とする指数関数Γと、フルバイナリーハッシュツリーのルートハッシュ値Ｒと、を包括する必要情報を同期サーバＳＹＳから取得し、クライアントがファイルの絶対パスを介して指数関数Γを入力することでフルバイナリーハッシュツリーに対応するリーフノード位置及びツリーノード位置を取得し、リーフノードに基づいてフルバイナリーハッシュツリーのスライスを取得し、スライスにあるツリーノード位置を同じ階層にあるもう一つのツリーノード位置に保存されたハッシュ値とハッシュ関数計算を行い、ルートハッシュ値Ｙを導き出すまで、一つ上の階層にあるツリーノード位置のハッシュ値を求め、クライアントが保存したルートハッシュ値Ｒと比較して監査を行う、リアルタイムで監査可能なクラウドアクセス方法を提供している。【選択図】図３
2018106700.tif 000002
【特許請求の範囲】
【請求項１】
クライアントＣｌｉｅｎｔが、実行するプログラムが必要とする指数関数Γを含む関数ライブラリと、同期サーバＳＹＳに保存されたフルバイナリーハッシュツリーＦＢＨＴＲＥＥのルートハッシュ値Ｒと、を包括する必要情報を前記同期サーバＳＹＳから取得するステップ１と、
前記クライアントＣｌｉｅｎｔがファイルの絶対パスを介して前記指数関数Γを入力することで前記フルバイナリーハッシュツリーＦＢＨＴＲＥＥに対応するリーフノード位置を取得し、さらに前記リーフノード位置に２Ｎ−１を加算することで前記フルバイナリーハッシュツリーＦＢＨＴＲＥＥに対応するツリーノード位置を取得するステップ２と、
前のステップで得たリーフノードに基づいて前記フルバイナリーハッシュツリーＦＢＨＴＲＥＥのスライスを取得するステップ３と、
前記スライスにあるツリーノード位置を同じ階層にあるもう一つのツリーノード位置に保存されたハッシュ値とハッシュ関数計算を行い、ルートハッシュ値Ｙを導き出すまで、一つ上の階層にあるツリーノード位置のハッシュ値を求めるステップ４と、
前記ルートハッシュ値Ｙと前記クライアントが保存した前記ルートハッシュ値Ｒとを比較し、前記クライアントが保存した前記ルートハッシュ値Ｒが計算後の前記ルートハッシュ値Ｙと同一である場合、一致していると監査し、そうでない場合、相違していると監査するステップ５と、を包含することを特徴とする、リアルタイムで監査可能なクラウドアクセス方法。
【請求項２】
前記ハッシュ関数は、ＳＨＡ−２５６であることを特徴とする請求項１に記載の、リアルタイムで監査可能なクラウドアクセス方法。
【請求項３】
前記指数関数Γは、Γ（ファイル名）＝ＳＨＡ−２５６（ファイル名）ｍｏｄ２Ｎ−１であることを特徴とする請求項１に記載の、リアルタイムで監査可能なクラウドアクセス方法。
【請求項４】
前記クライアントＣｌｉｅｎｔは、前記同期サーバＳＹＳに保存したハッシュ値を更新、即ちステップ１、２、３及び４を繰り返し、ステップ４におけるツリーノード位置を同じ階層にあるもう一つのツリーノード位置に保存されたハッシュ値とハッシュ関数計算を行い、ツリールートノードまで、一つ上の階層にあるツリーノード位置のハッシュ値を求めて前記フルバイナリーハッシュツリーＦＢＨＴＲＥＥにある同じツリーノード位置のハッシュ値に置き換えることを特徴とする請求項１に記載の、リアルタイムで監査可能なクラウドアクセス方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クラウドサービスをリアルタイムに監査するクラウドアクセス方法に関するものである。
【背景技術】
【０００２】
クラウドサービスの普及に伴い、クラウドサービスプロバイダの多くがファイルアクセスサービスの提供を始めている。現在多くの人は、ソフトウェア開発或いはウェブサービスの提供を行うため、クラウド上でサイバースペースをレンタルすることを選択している。しかし、クラウドサービスプロバイダが提供するファイルアクセスサービスは、全てが安全とは言えず、クラウドサーバ上にあるファイルがクラウドサービスプロバイダの不適切な保存により破損したり、さらにはクラウドサーバにマルウェアが埋め込まれていたりし、一部のクラウドサービスプロバイダがそのサービスについて安全性を主張していたとしても、ユーザは、本当にクラウドサーバが安全のために隔離されて防御しているのか否かを知る術がない。例示すると、クライアントＡがクラウド上でクラウドストレージの使用をレンタルすると、クラウドプラットフォームは、クライアントＡがクラウドストレージの使用を一時停止すると、クラウドストレージをシャットダウンし、クライアントＡが次回使用するときに改めてそのファイルを読み取るという可能性があり、クライアントＡはクラウドサービスプロバイダが安全にクラウドストレージをシャットダウンしてファイルを保存したか否かを知ることができない。つまり、クライアントＡは、シャットダウンしている間、クラウドサービスプロバイダがウィルスに感染しないようにファイルを安全に保存しているのか、さらには、ハッカーによってマルウェアが埋め込まれているのかを知り得ることができない。
【０００３】
このようなリスクは、サービスプロバイダとクライアントとの間に非否認性を構築することで克服することができる。問題が発生した場合、サービスプロバイダ及びクライアント双方ともに不具合がなかったことを証明する方法が必要で、双方に不具合があったか否かを証明することを、監査（Ａｕｄｉｔｉｎｇ）と称している。非否認性さえ達成されれば、クライアントとサービスプロバイダとの間に商業的契約を確立することができ、この契約は、クライアントが希望する安全レベルによって価格が決められており、例えば、サービスプロバイダによって管理されたデータが盗難或いは改ざんされた場合、サービスプロバイダは、契約で定められた賠償金をクライアントに支払わなければならない。しかし、監査を行うには根拠、即ち証拠（Ｐｒｏｏｆ）となる双方が署名したメッセージ（Ｓｉｇｎｅｄ  Ｍｅｓｓａｇｅｓ）が必要となるため、クライアントは、アプリケーションプログラムを実行する度に、或いはファイルにアクセスする度に検査を行うことで、クラウドプラットフォームの安全を確保することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の目的は、クラウドサービスを安全に使用・提供することが可能なクラウドアクセス方法を提供することにある。
【課題を解決するための手段】
【０００５】
上述した目的を達成するため、本発明は、クライアントＣｌｉｅｎｔが、実行するプログラムが必要とする指数関数Γを含む関数ライブラリと、同期サーバＳＹＳに保存されたフルバイナリーハッシュツリーＦＢＨＴＲＥＥのルートハッシュ値Ｒと、を包括する必要情報を前記同期サーバＳＹＳから取得するステップ１と、前記クライアントＣｌｉｅｎｔがファイルの絶対パスを介して前記指数関数Γを入力することで前記フルバイナリーハッシュツリーＦＢＨＴＲＥＥに対応するリーフノード位置を取得し、さらに前記リーフノード位置に２Ｎ−１を加算することで前記フルバイナリーハッシュツリーＦＢＨＴＲＥＥに対応するツリーノード位置を取得するステップ２と、前のステップで得たリーフノードに基づいて前記フルバイナリーハッシュツリーＦＢＨＴＲＥＥのスライスを取得するステップ３と、前記スライスにあるツリーノード位置を同じ階層にあるもう一つのツリーノード位置に保存されたハッシュ値とハッシュ関数計算を行い、ルートハッシュ値Ｙを導き出すまで、一つ上の階層にあるツリーノード位置のハッシュ値を求めるステップ４と、前記ルートハッシュ値Ｙと前記クライアントが保存した前記ルートハッシュ値Ｒとを比較し、前記クライアントが保存した前記ルートハッシュ値Ｒが計算後の前記ルートハッシュ値Ｙと同一である場合、一致していると監査し、そうでない場合、相違していると監査するステップ５と、を包含するリアルタイムで監査可能なクラウドアクセス方法を提供している。
【０００６】
実施例において、前記ハッシュ関数は、ＳＨＡ−２５６である。
【０００７】
実施例において、前記指数関数Γは、Γ（ファイル名）＝ＳＨＡ−２５６（ファイル名）ｍｏｄ２Ｎ−１である。
【０００８】
実施例において、前記クライアントＣｌｉｅｎｔは、前記同期サーバＳＹＳに保存したハッシュ値を更新、即ちステップ１、２、３及び４を繰り返し、ステップ４におけるツリーノード位置を同じ階層にあるもう一つのツリーノード位置に保存されたハッシュ値とハッシュ関数計算を行い、ツリールートノードまで、一つ上の階層にあるツリーノード位置のハッシュ値を求めて前記フルバイナリーハッシュツリーＦＢＨＴＲＥＥにある同じツリーノード位置のハッシュ値に置き換えている。
【図面の簡単な説明】
【０００９】
【図１】ファイルフォルダーツリーを示す模式図である。
【図２】ハッシュツリーを示す模式図である。
【図３】フルバイナリーハッシュツリーのスライスを示す模式図である。
【図４】ルートハッシュ値の比較を示す模式図である。
【発明を実施するための形態】
【００１０】
本発明に係る技術内容、構造の特徴、達成したい目的及び効果を詳細に説明するため、以下において、実施例を例示するとともに、図面を参照しつつ詳細に説明する。
【００１１】
図１及び図２のように、図１は、ファイルフォルダーツリーを示す模式図であり、図２は、ハッシュツリーを示す模式図であって、図１から分かるとおり、クライアントＣｌｉｅｎｔがクラウドサービスを開くと、クライアントＣｌｉｅｎｔは、オペレーティングシステムの関数ライブラリにある各ファイル及びフォルダーのハッシュ値（Ｈａｓｈ  ｖａｌｕｅ）を計算してその値を記録し、図２から分かるとおり、ツリーの最下層にあるリーフノードから順次、ファイル及びフォルダーを計算し、例えば、ｈ（ｄ３）＝ｈ（ｈ（ｆ２）｜ｈ（ｄ６）｜ｈ（ｆ３））、そのうち、ｈは、ハッシュ関数であって、最後の最上層にあるハッシュ値は、ルートハッシュ値と称し、暗号学の暗号化関数の特性により、いずれかのノードの値を変更すると、異なるルートハッシュ値が算出するため、ルートハッシュ値を利用して関数ライブラリ全体の完全性を検証することができる。
【００１２】
図３及び図４のように、図３は、フルバイナリーハッシュツリーのスライスを示す模式図であって、リーフノードのハッシュ値は、リーフノードに保存するすべてのファイルのパス名と、そのハッシュ値に接続したハッシュ値とである。図４は、ルートハッシュ値の比較を示す模式図であって、従来の方法は、全ての関数ライブラリフォルダ構成を記録し、これをマークルツリー（Ｍｅｒｋｌｅ  Ｔｒｅｅ）と称し、このような構成は、クラウドサーバに保存され、クライアントＣｌｉｅｎｔは、ルートハッシュ値を保存している。クライアントＣｌｉｅｎｔが保存したファイルを毎回更新すると、クラウドサーバ内の全てのファイル及びフォルダのハッシュ値を計算し直して新たなルートハッシュ値を求め、そのルートハッシュ値を保存する必要があるが、このような構成は、計算と保存との複雑性が高く、費やす時間が長いため、本発明では、フルバイナリーハッシュツリーＦＢＨＴＲＥＥの構成で複雑性の低減を実現し、主に、リーフノード、内部ノード、ルートノードの３つの部分に分けることができ、リーフノードは、Ｐａｉｒ  ｖａｌｕｅが集合することによってなるＰＢ−ｐａｉｒのハッシュ値であって、Ｐａｉｒ  ｖａｌｕｅは、各ファイルの名称及びそのファイルのハッシュ値であって、各ファイルは、いずれも指数関数Γを介さなければならず、そのうち、Ｐａｉｒ  ｖａｌｕｅはｈａｓｈ（ｆｉｌｅ  ｎａｍｅ｜ｈａｓｈ（ｆｉｌｅ））、ＰＢ−ｐａｉｒはＰａｉｒ  ｖａｌｕｅ１｜Ｐａｉｒ  ｖａｌｕｅ２｜…｜Ｐａｉｒ  ｖａｌｕｅＮで、リーフノードのハッシュ値はｈａｓｈ（ＰＢ−ｐａｉｒ）、一つ上の階層のリーフノードハッシュ値はｈａｓｈ（Ｌｅｆｔ  ｃｈｉｌｄ  ｎｏｄｅ｜Ｒｉｇｈｔ  ｃｈｉｌｄ  ｎｏｄｅ）である。クライアントＣｌｉｅｎｔは、指数関数Γを計算することで、ファイルをどのリーフノードの位置に保存するべきかを求めることができ、次回ファイルを使用する際、フルバイナリーハッシュツリーＦＢＨＴＲＥＥに対応するリーフノードのスライスを用いて導き出したルートハッシュ値Ｙとクライアントが保存したルートハッシュ値Ｒとを再度比較し、同一の場合、クラウドサーバ上にあるデータが変更されていないことを検証され、ルートハッシュ値を監査するための詳細なアルゴリズムは、以下のＡｌｇｏｒｉｔｈｍ１のとおりである。
Ａｌｇｏｒｉｔｈｍ１：クライアントが保存したルートハッシュ値Ｒに基づき、フルバイナリーハッシュツリーＦＢＨＴＲＥＥにおいてファイルに対応するスライスを探し出すとともにこのファイルに対して監査を行う。
フルバイナリーハッシュツリーＦＢＨＴＲＥＥの高さがＮで、このファイルを保存するリーフノードのＰＢ−ｐａｉｒの数がｍとすると、
Ｉ：ファイルのリーフノードＩＤ
Ψ：フルバイナリーハッシュツリーＦＢＨＴＲＥＥを保存する１次元アレイ
Ｈ：ＳＨＡ−２５６  ｆｕｎｃｔｉｏｎ
Γ：Ｉｎｄｅｘ  ｆｕｎｃｔｉｏｎ，Γ（ＦｉｌｅＮａｍｅ）＝ＳＨＡ−２５６（ＦｉｌｅＮａｍｅ）  ｍｏｄ２Ｎ−１
Ｙ：再度導き出したルートハッシュ値
Ｉｎｐｕｔ：
Ｒ：クライアントが保存したルートハッシュ値
ＦｉｌｅＮａｍｅ：ファイルの絶対パス
ＦｉｌｅＨａｓｈ：ファイルのハッシュ値
Ｏｕｔｐｕｔ：監査結果
（１）Ｉ＝Γ（ＦｉｌｅＮａｍｅ）
（２）Ｘ＝Ｉ＋２Ｎ−１／／リーフノードＩＤをツリーノードＩＤに転換
（３）Ψ［Ｘ］＝ｈ（Ｐａｉｒ  ｖａｌｕｅ１｜Ｐａｉｒ  ｖａｌｕｅ２｜…｜Ｐａｉｒ  ｖａｌｕｅｍ）；Ｙ＝Ψ［Ｘ］；ＦｉｌｅＮａｍｅとＦｉｌｅＨａｓｈとが特定のＰａｉｒ  ｖａｌｕｅに正確に保存されたか否かを確認
（４）ＷＨＩＬＥ（Ｘ≠１）ＤＯ／／最下層のリーフノードからルートノードまで
ＩＦ  Ｘが偶数の場合ＴＨＥＮ
Ｙ＝Ｈ（Ｙ）｜Ψ［Ｘ＋１］）
ＥＬＳＥ
Ｙ＝Ｈ（Ψ［Ｘ−１］）｜Ｙ）
ＥＮＤ  ＩＦ
Ｘ＝［Ｘ÷２］／／無条件で四捨五入
ＥＮＤ  ＷＨＩＬＥ
（５）ＩＦ（Ｒ＝Ｙ）
ＲＥＴＵＲＮ  ＴＲＵＥ
ＥＬＳＥ
ＲＥＴＵＲＮ  ＦＡＬＳＥ
【００１３】
クライアントＣｌｉｅｎｔがフルバイナリーハッシュツリーＦＢＨＴＲＥＥに保存したファイルのハッシュ値を更新しなければならなくなると、ハッシュ値を更新するためのアルゴリズムは、以下のＡｌｇｏｒｉｔｈｍ２のとおりである。
Ａｌｇｏｒｉｔｈｍ２：フルバイナリーハッシュツリーＦＢＨＴＲＥＥにあるファイルのハッシュ値を更新する。
フルバイナリーハッシュツリーＦＢＨＴＲＥＥの高さがＮで、このファイルを保存するリーフノードのＰＢ−ｐａｉｒの数がｍとすると、
Γ：Ｉｎｄｅｘ  ｆｕｎｃｔｉｏｎ，Γ（ＦｉｌｅＮａｍｅ）＝ＳＨＡ−２５６（ＦｉｌｅＮａｍｅ）  ｍｏｄ２Ｎ−１
Ｉｎｐｕｔ：
ＦｉｌｅＮａｍｅ：ファイルの絶対パス
ＦｉｌｅＨａｓｈ：ファイルのハッシュ値
Ψ：フルバイナリーハッシュツリーＦＢＨＴＲＥＥを保存する１次元アレイ
Ｏｕｔｐｕｔ：Ψ：変更後のフルバイナリーハッシュツリーＦＢＨＴＲＥＥを保存する１次元アレイ
（６）Ｉ＝Γ（ＦｉｌｅＮａｍｅ）
（７）Ｘ＝Ｉ＋２Ｎ−１／／リーフノードＩＤをツリーノードＩＤに転換
（８）  Ψ［Ｘ］＝ｈ（Ｐａｉｒ  ｖａｌｕｅ１｜Ｐａｉｒ  ｖａｌｕｅ２｜…｜Ｐａｉｒ  ｖａｌｕｅｍ）／／ハッシュ値を更新、更新したＦｉｌｅＮａｍｅ及びＦｉｌｅＨａｓｈは特定のＰａｉｒ  ｖａｌｕｅにある
（９）ＷＨＩＬＥ（Ｘ≠１）ＤＯ／／最下層のリーフノードからルートノードまで
ＩＦ  Ｘが偶数の場合ＴＨＥＮ
Ψ［Ｘ／２］＝Ｈ（Ψ［Ｘ］）｜Ψ［Ｘ＋１］）
ＥＬＳＥ
Ψ［（Ｘ−１）／２］＝Ｈ（Ψ［Ｘ−１］）｜Ψ［Ｘ］）
ＥＮＤ  ＩＦ
Ｘ＝［Ｘ／２］／／無条件で四捨五入
ＥＮＤ  ＷＨＩＬＥ
（１０）ＲＥＴＵＲＮ  Ψ
【００１４】
なお、上述したように、本発明に係る具体的な実施例を例示したものの、上述した具体的な実施例は本発明を限定するものではなく、当該業者が本発明の精神及び範囲を逸脱せずに行ったいかなる変更及び修正は、いずれも本発明の範疇に属するものであって、本発明が求める範囲は、特許請求の範囲に基づくものである。
【符号の説明】
【００１５】
ＳＹＳ          同期サーバ
Ｒ              ルートハッシュ値
Γ              指数関数
Ｃｌｉｅｎｔ    クライアント
【図１】
2018106700.tif 000003
【図２】
2018106700.tif 000004
【図３】
2018106700.tif 000005
【図４】
2018106700.tif 000006