【文献】
クラウドストレージに必要な情報漏洩対策 秘文 Cloud Data Protection(秘文CP),日立イノベーションフォーラム2013,日本,株式会社日立ソリューションズ,2013年10月30日
【文献】
佐藤 亮太 ほか,スマートフォンにおける利用環境に応じた機能制御機構の実装と評価,電子情報通信学会技術研究報告,日本,一般社団法人電子情報通信学会,2013年 2月28日,Vol.112、No.466,pp.203−208
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0015】
以下、添付図面を参照して本発明の実施形態について説明する。添付図面では、機能的に同じ要素は同じ番号で表示される場合もある。なお、添付図面は本発明の原理に則った具体的な実施形態と実装例を示しているが、これらは本発明の理解のためのものであり、決して本発明を限定的に解釈するために用いられるものではない。
【0016】
本実施形態では、当業者が本発明を実施するのに十分詳細にその説明がなされているが、他の実装・形態も可能で、本発明の技術的思想の範囲と精神を逸脱することなく構成・構造の変更や多様な要素の置き換えが可能であることを理解する必要がある。従って、以降の記述をこれに限定して解釈してはならない。
【0017】
更に、本発明の実施形態は、後述されるように、汎用コンピュータ上で稼動するソフトウェアで実装しても良いし専用ハードウェア又はソフトウェアとハードウェアの組み合わせで実装しても良い。
【0018】
なお、以後の説明では「テーブル」形式によって本発明の各情報について説明するが、これら情報は必ずしもテーブルによるデータ構造で表現されていなくても良く、リスト、DB、キュー等のデータ構造やそれ以外で表現されていても良い。そのため、データ構造に依存しないことを示すために「テーブル」、「リスト」、「DB」、「キュー」等について単に「情報」と呼ぶことがある。
【0019】
また、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ID」という表現を用いることが可能であり、これらについてはお互いに置換が可能である。
【0020】
以下では「各機能部(例えば、ユーザ認証部)」を主語(動作主体)として本発明の実施形態における各処理について説明を行うが、各機能部はプログラムで構成され、プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポート(通信制御装置)を用いながら行うため、プロセッサを主語とした説明としてもよい。また、プログラムを主語として開示された処理は認証サーバ等の計算機、情報処理装置が行う処理としてもよい。プログラムの一部または全ては専用ハードウェアで実現してもよく、また、モジュール化されていても良い。各種プログラムはプログラム配布サーバや記憶メディアによって各計算機にインストールされてもよい。
【0021】
<データ管理システムの構成>
図1は、本発明の実施形態によるデータ管理システム1000の概略構成を示す図である。データ管理システム1000は、管理サーバ(認証サーバと称することも可能)100と、クライアント端末200と、クラウドストレージ300と、を有し、これらは、例えばインターネットなどのネットワーク301を介して接続されている。
【0022】
管理サーバ100は、クライアント端末200を利用するユーザのユーザIDを管理する認証サーバとして動作する。また、後述の
図2で説明するように、管理サーバ100は、クライアント端末200がデータファイルを暗号化および復号する際に使用する暗号鍵を管理する。
【0023】
クライアント端末200は、管理サーバ100から取得した暗号鍵を用いてデータファイルを暗号化し、暗号化後のデータファイルをクラウドストレージ300に格納する。また、クライアント端末200は、管理サーバ100から取得した暗号鍵を用いて、クラウドストレージ300から取得した暗号化データファイルを復号化する。クライアント端末200が管理サーバ100から暗号鍵を取得する際には、管理サーバ100による認証を受ける必要がある。説明を簡易化するため、クラウドストレージ300にアクセスする際には必ずしも認証は必要でないものとするが、認証処理を設けてもよい。クライアント端末200は、例えば、パーソナルコンピュータやモバイル端末などのコンピュータである。以下では総称してクライアント端末200とする。
【0024】
クラウドストレージ300は、クライアント端末200が暗号化したデータファイルを格納する。クラウドストレージ300は、ネットワーク301に接続された記憶装置によって構成されており、ネットワーク301を介してデータを読み書きすることができる。クラウドストレージ300を提供している事業者は、管理サーバ100(およびその構成要素)やクライアント端末200が所属する事業者とは必ずしも同じでなくても良い。
【0025】
<管理サーバの構成>
図2は、本発明の実施形態による管理サーバ100の詳細な機能構成を示すブロック図である。管理サーバ100は、クライアント端末200がデータファイルを暗号化する際に使用する暗号鍵を、ユーザ毎の認証を用いて暗号化した上で管理し、クライアント端末200からのリクエストに応じてその暗号鍵を暗号化したままで送信する。
【0026】
管理サーバ100は、各種プログラムを実行する演算部であるCPU(プロセッサ)101と、各種プログラムを格納するメモリ102と、指示を入力したり、演算結果を出力したりする入出力デバイス(入力デバイスとして、キーボード、マウス、マイク等、出力デバイスとしてディスプレイ、プリンタ、スピーカ等)103と、クライアント端末200やクラウドストレージ300と通信するための通信デバイス104と、各種データを格納するデータベース170と、を有している。
【0027】
メモリ102は、プログラムとして、極秘鍵暗号化部110と、社外秘鍵暗号化部120と、一般鍵暗号化部130と、PW鍵暗号化部140と、暗号鍵送信部150と、ポリシ管理部160と、データベース170と、を有している。暗号鍵送信部150は、さらに、プログラムとして、認証部151と、送信部152と、を有している。また、ポリシ管理部160は、プログラムとして、ポリシ送受信部161と、ポリシ検索部162と、ポリシ設定部163と、を有している。データベース170以外の機能部については、後述の
図3以降で改めて説明する。
【0028】
データベース170は、クライアント端末200がデータファイルを暗号化する際に使用する暗号鍵を管理するデータベースである。この暗号鍵は3種類存在する。極秘鍵1712は、クライアント端末200が社内にある場合にのみ取得できる暗号鍵である。社外秘鍵1714は、クライアント端末200が許可されたネットワーク上にある場合にのみ取得できる暗号鍵である。一般鍵1716は、任意のネットワーク上から取得できる暗号鍵である。
【0029】
データベース170は、ユーザ毎の認証情報を用いて上記3種類の鍵を暗号化し、ユーザ毎に設けたユーザテーブル171内の各レコードとして格納する。ここでは説明を簡易化するため、管理サーバ100はパスワードによって各ユーザを認証するものと仮定し、そのパスワードを暗号鍵(以下ではPW鍵1718と呼ぶ)として上記3種類の暗号鍵を暗号化するものとする。レコード1711、1713、1715は、それぞれ極秘鍵1712、社外秘鍵1714、一般鍵1716をPW鍵1718によって暗号化したデータである。
【0030】
ユーザテーブル171はさらに、ユーザ毎のPW鍵1718を、システム管理者のみが管理する管理鍵172によって暗号化し、レコード1717として格納する。管理鍵172は、ユーザテーブル171とは別の記憶領域に保持する。例えばセッション管理領域に格納することができる。PW鍵1718を複製して管理することにより、ユーザがパスワードを忘れた場合であっても、管理者が管理鍵172を用いてPW鍵1718を復号した上で、これを用いて極秘鍵1712、社外秘鍵1714、一般鍵1716をそれぞれ復号し、新たなパスワードを発行してそのパスワードにより各暗号鍵を再暗号化することができる。すなわち、
図2に示すように暗号鍵を2重に暗号化している場合であっても、認証情報を再発行することができる。
【0031】
データベース170は、ハードディスク装置などの記憶装置を用いて構成することができる。その他の機能部は、
図2に示されるように、これらの機能を実装したプログラムをCPU(Central Processing Unit)などの演算装置が実行することによって実現するようにしているが、これらの機能を実現する回路デバイスなどのハードウェアを用いて構成することもできる。プログラムによって実現する場合、これら機能部は、コンピュータ読取可能な記憶媒体(例えば、メモリ、ハードディスク、SSD(Solid State Drive)等の記録装置、ICカード、SDカード、DVD等の記録媒体)に格納することができる。
【0032】
<クライアント端末の構成>
図3は、本発明の実施形態によるクライアント端末200の詳細な機能構成を示すブロック図である。
【0033】
クライアント端末200は、各種プログラムを実行する演算部であるCPU(プロセッサ)201と、各種プログラムを格納するメモリ202と、各種データを格納する記憶装置250と、指示を入力したり、演算結果を出力したりする入出力デバイス(入力デバイスとして、キーボード、マウス、マイク等、出力デバイスとしてディスプレイ、プリンタ、スピーカ等)203と、管理サーバ100と通信するための通信デバイス204と、を有している。
【0034】
メモリ202は、プログラムとしての、端末位置情報変化検知部210と、端末位置情報通知部220と、ポリシ取得部230と、ネットワーク接続部240と、を有している。記憶装置250以外の各部は、ハードウェアとして構成されても良いし、ソフトウェア上の機能として実現しても良い。
【0035】
端末位置情報変化検知部210は、クライアント端末200の位置変化を検知するための処理を実行するデバイス又はプログラムである。本明細書において、この「位置」は、クライアント端末200のネットワーク上の位置や物理的な位置、又はこれらの組み合わせを意味するものとする。例えばネットワーク接続部240に割り当てられたIPアドレスによるネットワーク上の位置、クライアント端末200が備えるGPS装置により検出されたクライアント端末200の地球における物理的な位置、クライアント端末200が接続している無線LANのアクセスポイントのSSID(Service Set ID)、MACアドレス等の情報に基づいたネットワーク的及び物理的な位置、又はこれらの位置の組み合わせ等が相当する。
【0036】
端末位置情報変化検知部210は、記憶装置250に格納される端末位置変化閾値情報251を参照し、自端末の位置の変化(IPアドレスによるネットワーク上の位置、及びGPSによる物理的位置)を検知する。すなわち、端末位置情報変化検知部210は、IPアドレスによるネットワーク上の位置及び物理的位置を端末位置変化閾値情報251と比較し、いずれかの位置が端末位置変化閾値情報251に記載されている条件を満たさなくなった場合に、位置が変化したと検知する。端末位置変化閾値情報251については後述する。
【0037】
端末位置情報通知部220は、端末位置情報変化検知部210によって検知された端末位置情報を通知する処理を実行するデバイス又はプログラムである。端末位置の変化が検出される度に管理サーバ100に当該端末位置情報が通知される。
【0038】
ポリシ取得部230は、管理サーバ100のポリシ送受信部161(
図2)からポリシ情報254を取得する処理を実行するデバイス又はプログラムである。
【0039】
ネットワーク接続部240は、クライアント端末200とネットワーク301とを接続する装置であり、例えば有線LAN(Local Area Network)装置や無線LAN装置、3G(第3世代移動通信システム)無線装置、4G(第4世代移動通信システム)無線装置などが相当する。
【0040】
記憶装置250は、本実施形態に係る通信制御の実現に必要とされる情報の記憶に使用される。例えば、端末位置変化閾値情報251、端末識別情報252、認証サーバアドレス情報253、ポリシ情報254が記憶される。なお、記憶装置250には、不図示の任意の情報が格納されていてもよい。
【0041】
端末位置変化閾値情報251は、端末位置情報変化検知部210がクライアント端末200(自端末)の位置に変化が発生したか否かを判断するために使用する情報である。端末位置変化閾値情報251には、例えば(1)企業の建屋が含まれる緯度・経度の範囲、(2)社内ネットワークにおいてクライアント端末200のネットワーク接続部240に割り当てられるIPアドレスの範囲、(3)その両方などが記憶される。
【0042】
例えば、端末位置変化閾値情報251に、企業等ユーザが所属する組織の建屋が含まれる緯度・経度の範囲が記憶されている場合、クライアント端末200が備えるGPSの観測値が記憶されている所定の緯度・経度の範囲を外れたとき、端末位置情報変化検知部210は、クライアント端末200(自端末)の社内から社外への移動を検知する。
【0043】
端末識別情報252は、クライアント端末200を一意に特定する情報であり、例えば、クライアント端末200の端末固有番号、ユーザ名とパスワードの組、クライアント端末200のネットワーク接続部240のMACアドレス、これら情報の組み合わせ等が相当する。
【0044】
認証サーバアドレス情報253は、管理サーバ100のIPアドレス又はドメイン名で与えられる。
【0045】
ポリシ情報254の詳細は後述するが、クライアント端末200の通信制御に適用される条件が相当する。
【0046】
<ポリシの構成例>
図4は、本発明の実施形態による、データベース170に格納されているポリシ173の構成例を示す図である。当該ポリシ173は、ユーザ毎に設定しても良いが、ここではシステムで共通な情報として設定されているものとする。
【0047】
ポリシ173は、ポリシ名401と、ネットワーク的位置範囲402と、物理的位置範囲403と、機密度404と、を構成情報として含んでいる。
図4は、例として3つのポリシ情報405〜407を示している。クライアント端末200は、管理サーバ100にログインする度、或いはクライアント端末200の位置に変化を検知する度に、最新のポリシ173を取得し、ポリシ情報254に格納する。
【0048】
ポリシ情報405は、ネットワーク接続部240に割り当てられたIPアドレスがネットワーク的位置範囲402「192.168.0.0/24」に含まれ、かつ、クライアント端末200のGPSによる物理的な位置が物理的位置範囲403「建屋が含まれる緯度・経度の範囲」に含まれる場合に、そのネットワークを「社内ネットワーク」と認識して、機密度が「極秘/社外秘/一般」である暗号鍵の取得を許可することを示している。
【0049】
ポリシ情報405が当てはまる状況としては、例えば社内において、クライアント端末200が利用されており、クライアント端末200が社内のWi−Fiアクセスポイントに接続している場合が挙げられる。
【0050】
ポリシ情報406は、ネットワーク接続部240に割り当てられたIPアドレスがネットワーク的位置範囲402「10.0.0.0/24」に含まれ、かつ、クライアント端末200のGPSによる物理的な位置が任意の場所にある場合に、そのネットワークを「許可ネットワーク」と認識して、機密度が「社外秘/一般」である暗号鍵の取得を許可することを示している。
【0051】
ポリシ情報406が当てはまる状況としては、例えばクライアント端末200が社外で利用されているが、あらかじめ許可されたネットワークに接続している場合が挙げられる。
【0052】
ポリシ情報407は、ネットワーク接続部240に割り当てられたIPアドレスによるネットワーク上の位置及びGPSによる物理的な位置に関わらず、そのネットワークを「社外ネットワーク」と認識して、機密度が「一般」である暗号鍵の取得を許可することを示している。
【0053】
ポリシ情報407が当てはまる状況としては、社内ネットワークおよび社内ネットワークに当てはまらない任意のネットワークに接続している場合が挙げられる。
【0054】
<ユーザ認証処理の概要>
図5は、本発明の実施形態による、管理サーバ100のユーザ認証処理の概要を説明するための図である。
図5Aは、新たなユーザを登録する処理、
図5Bは、登録後のユーザを認証する処理を示している。以下ではuser_Aに関する処理を例として各処理を説明する。
【0055】
クライアント端末200のユーザであるuser_Aは、管理サーバ100にアクセスし、user_Aを新規ユーザとして登録するよう依頼する。以下では管理サーバ100がパスワードを自動的に発行するものと仮定する。
【0056】
認証部151は、クライアント端末200から新規ユーザであるuser_Aを登録するよう要求するリクエストを受け取ると、user_Aに対応するパスワードuser_A_PWを発行し、その対応関係を保持する。以後user_Aは、パスワードuser_A_PWを用いて管理サーバ100にログインすることができる。新規ユーザを登録する処理は自動化してもよいし、管理者が介在してそのユーザを新規登録してもよいか否かを判断した後に登録するようにしてもよい。
【0057】
認証部151は、user_Aの極秘鍵1712を例えば乱数によって生成する。同様に社外秘鍵1714、一般鍵1716を生成する。管理鍵172はあらかじめ適当な手法によって生成しておく。
【0058】
極秘鍵暗号化部110は、パスワードuser_A_PWまたはこれから一意に導出した値をPW鍵1718として極秘鍵1712を暗号化し、レコード1711としてユーザテーブル171に格納する。user_Aとレコード1711の対応関係は、例えばuser_AのユーザIDをレコード1711と対応付けることによって定義してもよいし、ユーザ毎にユーザテーブル171を作成することによって定義してもよい。
【0059】
社外秘鍵暗号化部120、一般鍵暗号化部130も同様に、PW鍵1718を用いてそれぞれ社外秘鍵1714と一般鍵1716を暗号化し、それぞれレコード1713、1715として格納する。PW鍵暗号化部140は、PW鍵1718を複製して管理鍵172によって暗号化し、レコード1717として格納する。
【0060】
クライアント端末200のユーザがデータファイルを暗号化または復号化するときは、まず管理サーバ100にログインして各暗号鍵を取得する必要がある。ユーザはクライアント端末200を介して管理サーバ100にユーザIDuser_A、パスワードuser_A_PWおよび端末位置情報通知部220から通知されたネットワーク上の位置情報を送信する。認証部151はそのユーザID、パスワードおよびネットワーク上の位置情報を用いて認証処理を実施する。認証許可する場合は、送信部152がそのユーザおよびネットワーク上の位置情報に対応する鍵として、極秘鍵1712、社外秘鍵1714、一般鍵1716の中からポリシで取得を許可された鍵をデータベース170から読み出し、クライアント端末200に送信する。ただしこれらの鍵は、PW鍵1718によって暗号化されたままである。
【0061】
端末位置情報変化検知部210によって位置情報の変化を検知した場合は、クライアント端末200は、ポリシ情報254の内容に応じて暗号鍵の取得および削除を行う。例えば、
図4の社内ネットワーク405に該当する位置から許可ネットワーク406に該当する位置にクライアント端末200が移動した場合は、取得済みの暗号鍵のうち極秘鍵1712を削除する。反対に許可ネットワーク406に該当する位置から社内ネットワーク405に該当する位置にクライアント端末200が移動した場合は、極秘鍵を取得する。この場合、内部で保存しているユーザIDuser_A、パスワードuser_A_PWを使用して自動的に認証処理を行ってもよいし、ユーザに再度認証処理を行わせてもよい。
【0062】
<ファイルアップロード処理の概要>
図6は、本発明の実施形態による、クライアント端末200がデータファイル512を暗号化してクラウドストレージ300に格納(アップロード)する処理の概要を説明するための図である。ここでは社内でのみ閲覧可能としたいデータファイル512を使用する場合を想定する。
【0063】
ユーザは、データファイル512をクラウドストレージ300に格納する前に、予め
図5で説明したように管理サーバ100にログインして、ポリシ173で取得が許可されている暗号鍵を取得しておく。クライアント端末200は、パスワードuser_A_PWを用いて管理サーバ100から取得した各レコードを復号し、暗号鍵を取得する。データファイル512は、社内でのみ閲覧が可能なため、ユーザは、データファイル512を暗号化するための暗号鍵として極秘鍵1712を選択する。クライアント端末200は、極秘鍵1712を用いてデータファイル512を暗号化し、暗号化データファイル511を作成する。クライアント端末200は、暗号化データファイル511をクラウドストレージ300に格納(送信)する。
【0064】
同様に、データファイル512を許可されたネットワーク上で閲覧可能としたい場合は、ユーザは、データファイル512を暗号化するための暗号鍵として社外秘鍵1714を選択する。データファイル512を任意のネットワーク上で閲覧可能としたい場合は、ユーザは、データファイル512を暗号化するための暗号鍵として一般鍵1716を選択する。クライアント端末200は、選択された暗号鍵を用いてデータファイル512を暗号化し、クラウドストレージ300に格納する。
【0065】
クライアント端末200は、データファイル512を暗号化する際に、上記3種類の暗号鍵のうちいずれの種類のものを用いたかを示す情報を、暗号化データファイル511内に埋め込む。ただし、暗号鍵の種類が分かれば足りるため、個々の暗号鍵そのものを個別に特定する情報を埋め込む必要はない。
【0066】
<ファイルダウンロード処理の概要>
図7は、本発明の実施形態による、クライアント端末200がデータファイル512をクラウドストレージ300から取得(ダウンロード)して復号化する処理の概要を説明するための図である。ここでは
図6と同様に、社内でのみ閲覧可能としたいデータファイル512を使用する場合を想定する。
【0067】
ユーザは、データファイル512をクラウドストレージ300から取得する前に、
図6と同様にあらかじめポリシ173で取得が許可されている暗号鍵を管理サーバ100から取得する。クライアント端末200は各暗号鍵を復号する。
【0068】
ユーザは、クライアント端末200を介してクラウドストレージ300にアクセスし、暗号化データファイル511を取得する。暗号化データファイル511内には、同ファイルが極秘鍵を用いて暗号化されている旨を示す情報が埋め込まれている。したがって、クライアント端末200は、user_Aの極秘鍵1712を用いて暗号化データファイル511を復号するよう試みる。暗号化データファイル511がuser_Aの極秘鍵1712によって暗号化されている場合は、暗号化データファイル511を復号化することができる。
【0069】
同様に、データファイル512が社外秘鍵1714で暗号化されたファイルである場合は、クライアント端末200は、社外秘鍵1714を用いて暗号化データファイル511を復号化する。データファイル512が一般鍵1716で暗号化されたファイルである場合は、クライアント端末200は、一般鍵1716を用いて暗号化データファイル511を復号化する。
【0070】
<ファイルシステムの構成>
図8は、本発明の実施形態による、クライアント端末200のOS(オペレーティングシステム)上におけるファイルシステムの構成を示す図である。クライアント端末200は、
図6〜
図7で説明したように個々のデータファイル512を暗号化または復号化することができるが、ユーザがその都度暗号鍵を選択するなどの作業が発生するため、ユーザにとって負担が生じる。そこで、クライアント端末200は、ファイルシステム上の所定フォルダ以下に格納したデータファイルを一括して暗号化または復号化し、さらにはクラウドストレージ300との間でファイルを同期化することができる。
図8は、そのフォルダ構成例を説明するものである。クライアント端末200のファイルシステムは、暗号化ファイルを格納する同期フォルダ620と、暗号化処理される平文ファイルを格納する暗号化フォルダ630を有する。
【0071】
(i)同期フォルダ620は、クライアント端末200がクラウドストレージ300に送信し、またはクライアント端末200がクラウドストレージ300から取得したデータファイル(暗号化されたファイル)を格納するフォルダである。クライアント端末200は、同期フォルダ620を常時監視しており、同期フォルダ620内に新たなデータファイルが格納されると、そのデータファイルをクラウドストレージ300に送信する。また、クライアント端末200は、必要に応じて定期的にクラウドストレージ300に接続し、新たな暗号化データファイルが存在する場合はダウンロードして同期フォルダ620内に格納する。
【0072】
同期フォルダ620内には、サブフォルダを設けることができる。同期フォルダ620内のフォルダ/ファイル構成とクラウドストレージ300上のフォルダ/ファイル構成は同期させることが望ましい。
【0073】
クライアント端末200が複数のクラウドストレージ300を利用する場合は、同期フォルダ620内に、各クラウドストレージ300に対応するサブフォルダを設け、クラウドストレージ300毎に同期処理を実施することができる。
図8に示すサブフォルダ621と622は、2つのクラウドストレージ300(CloudStorageA、CloudStorageB)に対応する。
【0074】
(ii)暗号化フォルダ630は、クライアント端末200がクラウドストレージ300に送信する前に暗号化すべきデータファイル(平文ファイル)を格納し、またはクラウドストレージ300から取得した暗号化データファイルを復号したデータファイルを格納するフォルダである。クライアント端末200は、暗号化フォルダ630を常時監視しており、暗号化フォルダ630内に新たなデータファイルが格納されると、そのデータファイルを暗号化して同期フォルダ620に格納する。同期フォルダ620に格納されたデータファイルは、上述のようにクラウドストレージ300へ送信される。またクライアント端末200は、同期フォルダ620内に新たな暗号化データファイルが格納されると、その暗号化データファイルを復号化して暗号化フォルダ630に格納する。
【0075】
(iii)クライアント端末200は、暗号化フォルダ630内のフォルダ/ファイル構成を、同期フォルダ620内のファイル/フォルダ構成と同期させる。したがって、同期フォルダ620内に複数のクラウドストレージ300毎のサブフォルダが存在する場合は、暗号化フォルダ630内にも同じフォルダ構成を作成する。サブフォルダ631と632は、それぞれサブフォルダ621と622に対応する。ただしファイルの拡張子については、暗号化されているか否かを区別するため適当に変更することができる。
図8においては、暗号化されているデータファイルには元の「ファイル名+拡張子」に加えて拡張子「.crypto」を付与した例を示した。
【0076】
(iv)次に、使用する暗号鍵を区別する手法について説明する。ファイルを暗号化する鍵は、ユーザによって暗号化フォルダ630毎に設定するものとする。例えば、社外秘鍵1714に対応するフォルダに置かれたデータファイルについては社外秘鍵1714を用いて暗号化する。
図8においては、サブフォルダ632内のフォルダ「Internal」がこれに相当する。一般鍵1716に対応したフォルダに置かれたデータファイルについては一般鍵1716を用いて暗号化する。
図8には示していないが、一般鍵1716に対応するフォルダを設けることができる。これらに当てはまらないデータファイルについては極秘鍵1712を用いて暗号化する。
【0077】
クライアント端末200がクラウドストレージ300から新たな暗号化データファイルを取得した際には、
図7において説明したように、いずれの種類の暗号鍵を用いるべきかを示す情報が暗号化データファイル内に埋め込まれているので、その情報に対応する暗号鍵を用いて暗号化データファイルを復号することができる。あるいはデータファイルを暗号化する場合と同様に、例えば社外秘鍵1714で暗号化したデータファイルを格納するフォルダ内のデータファイルについては社外秘鍵1714を用いて復号化してもよい。
【0078】
暗号化データファイル内に埋め込まれている情報とフォルダの間の対応関係が矛盾する場合は、どのように処理すべきかを別途設定ファイルなどに定義しておき、その設定にしたがって処理すればよい。例えば、極秘鍵1712で暗号化したデータファイルを格納するフォルダ内に、社外秘鍵1714を用いて暗号化されている旨の情報が埋め込まれている暗号化データファイルが格納されている場合は、極秘鍵1712と社外鍵1714を双方用いて復号化を試行し、復号に成功した方を採用することができる。あるいはその暗号化データファイルについては復号化せずそのまま暗号化フォルダ630内に格納することもできる。この処理は、後述するステップS905〜S910において適用することができる。
【0079】
(v)ファイルをクラウドストレージ300にアップロードする場合、ユーザが暗号化フォルダ630に対象ファイルを格納すると、その対象ファイルは暗号化され、同期フォルダ620内に格納されるとともに、クラウドストレージ300に送信され、格納される。
【0080】
ファイルをクラウドストレージ300からダウンロードする場合、暗号化データファイルがクラウドストレージ300からクライアント端末に送信され、同期フォルダ630に格納される。例えば、ユーザが社内から社外に移動している場合には、復号に使える鍵の数は減っている(社外から社内に移動した場合には復号に使える鍵の数は増える)。従って、極秘鍵で復号すべきファイルに関しては、社外で暗号化データファイルを取得するのみで復号されない。その後、ユーザが社内に戻ってから当該暗号化データファイルが自動的に復号されて平文となったファイルが暗号化フォルダ630に格納されるようにしても良い。
【0081】
<ファイルアップロード処理の詳細>
図9は、クライアント端末200が暗号化フォルダ630内に格納された新たなデータファイルをクラウドストレージ300に送信(アップロード)する処理を説明するためのフローチャートである。以下、
図9の各ステップについて説明する。
【0082】
(i)ステップS901
ユーザが認証情報(ユーザIDとパスワード)を入力すると、クライアント端末200は、当該認証情報をクライアント端末200のネットワーク上の位置情報と併せて管理サーバ100に送信する。
【0083】
(ii)ステップS902〜S903
管理サーバ100の認証部151は、クライアント端末200から受け取った認証情報を用いてユーザ認証を実施する(S902)。認証拒否する場合はその旨を示す応答をクライアント端末200に送信し、クライアント端末200はユーザ認証に失敗した旨を示すダイアログを画面表示して(S903)、本フローチャートは終了する。認証許可する場合、処理はステップS904へ進む。
【0084】
(iii)ステップS904
送信部152は、データベース170から当該ユーザおよびネットワーク上の位置情報に応じて極秘鍵1712、社外秘鍵1714、及び一般鍵1716を取得し、クライアント端末200に送信する。ただし、
図2で説明したように、これら3つの鍵はPW鍵1718によって暗号化されているので、クライアント端末200は、当該ユーザの認証情報を用いてこれら暗号鍵を復号化する。
【0085】
(iv)ステップS905
クライアント端末200は、同期フォルダ620内に格納されているファイル構成と暗号化フォルダ630内に格納されているファイル構成を比較し、同期フォルダ620内に格納されているファイル構成に追加や更新が発生しているか否かを判定する。追加や更新が発生している場合、処理はステップS906へ進み、発生していない場合、処理はステップS907へスキップする。
【0086】
(v)ステップS906
クライアント端末200は、暗号化データファイルに埋め込まれた情報に基づき、対応する暗号鍵を用いてその暗号化データファイルを復号し、暗号化フォルダ630にコピーする。同期フォルダ620内の暗号化データファイルが削除されていた場合は、暗号化フォルダ630内の対応するデータファイルを削除する。
【0087】
(vi)ステップS907
クライアント端末200は、暗号化フォルダ630内のファイル構成に追加や更新があったかを定期的に確認する。追加や更新が発生している場合、処理はステップS908へ進み、発生していない場合、処理はステップS909へスキップする。
【0088】
(vii)ステップS908
クライアント端末200は、暗号化フォルダ630内において追加または更新されたデータファイルを対応する暗号鍵で暗号化し、同期フォルダ620にコピーする。クライアント端末200は、同期フォルダ620にコピーされた暗号化データファイルをクラウドストレージ300にアップロードする。
【0089】
(viii)ステップS909〜S910
クライアント端末200は、ユーザがログアウトしたか否かを判定し(S909)、ログアウトした場合は暗号化フォルダ630の監視を終了する。ログアウトしていない場合、処理はステップS905に戻り、同様の処理が繰り返される(S910)。
【0090】
<ファイルダウンロード処理の詳細>
図10は、クライアント端末200がクラウドストレージ300から暗号化データファイルをダウンロードする処理の詳細を説明するためのフローチャートである。ステップS1001〜S1004は
図9のステップS901〜S904と同様であるため、以下ではステップS1005以降のみについて説明する。
【0091】
(i)ステップS1005
クライアント端末200は、クラウドストレージ300からダウンロードした暗号化データファイルを、同期フォルダ620に格納する。クライアント端末200は、クラウドストレージ300からダウンロードした暗号化データファイルに埋め込まれた識別情報を確認することにより、復号化処理において使用すべき暗号鍵を特定する。
【0092】
(ii)ステップS1006〜S1010
クライアント端末200は、ステップS1005における判定結果に基づき、対応する暗号鍵を用いて暗号化データファイルを復号化する。復号化によって得られたデータファイルは、暗号化フォルダ630内の対応するフォルダに格納される。
【0093】
<位置情報に応じた暗号鍵の削除/取得処理の詳細>
(1)処理内容
図11は、本発明の実施形態による、位置情報の変化に応じて暗号鍵を削除或いは取得する処理の詳細を説明するためのフローチャートである 。
【0094】
(i)ステップS1101
端末位置情報変化検知部210がクライアント端末200の位置の変化を検知すると、端末位置情報通知部220は、位置変化後のクライアント端末200の位置情報(IPアドレス及び物理的位置の情報)を管理サーバ100に送信する。管理サーバ100は、最新のポリシ173を当該クライアント端末200に送信する。
【0095】
(ii)ステップS1102
ポリシ取得部230は、管理サーバ100から送信されてきた最新のポリシ173が取得できた場合には、当該ポリシを最新のポリシ情報254として保持する。
【0096】
(iii)ステップS1103
端末位置情報変化検知部210は、最新のポリシ173を取得することに成功したか判断する。成功した場合(ステップS1103でYesの場合)、処理はステップS1104に移行する。失敗した場合(ステップS1103でNoの場合)、処理はステップS1105に移行する。
【0097】
(iv)ステップS1104
端末位置情報変化検知部210は、最新のポリシ(ポリシ情報254)を参照する。
【0098】
(v)ステップS1105
端末位置情報変化検知部210は、以前に取得済のポリシ(ポリシ情報254)を参照する。
【0099】
(vi)ステップS1106
端末位置情報変化検知部210は、ポリシ情報254を参照し、クライアント端末200の現在の位置情報と当該ポリシ情報254とを照合することにより、取得可能な暗号鍵の機密度の情報を取得する。例えば、社内ネットワーク405から許可ネットワーク406にクライアント端末200が移動した場合には、社外秘鍵及び一般鍵のみが使える状態となる。
【0100】
(vii)ステップS1107
端末位置情報変化検知部210は、現在のポリシに基づくと取得不可とされる鍵を保持しているか否か判断する。取得不可とされる鍵を保持している場合(ステップS1107でYesの場合)、処理はステップS1108に移行する。保持していない場合(ステップS1107でNoの場合)、処理はステップS1109に移行する。例えば、(vi)の例で言えば、許可ネットワークで取得不可とされる「極秘鍵」を有しているため、処理はステップS1108に移行することになる。
【0101】
(viii)ステップS1108
端末位置情報変化検知部210は、クライアント端末200の現在の位置(ポリシ名401)では取得不可とされる鍵を削除する。つまり、上記例では、「極秘鍵」を削除することになる。
【0102】
(ix)ステップS1109
端末位置情報変化検知部210は、クライアント端末200の現在の位置(ポリシ名401)で使用可能であるが保持していない鍵があるか判断する。使用可能であるが保持していない鍵がある場合(ステップS1109でYesの場合)、処理はステップS1110に移行する。例えば、許可ネットワーク406から社内ネットワーク405にクライアント端末200が移動した場合には、極秘鍵が使えるにも拘らず保持していない鍵となる。当該鍵を既に持っている場合(ステップS1109でNoの場合)、本フローチャートは終了する。
【0103】
(x)ステップS1110
端末位置情報変化検知部210は、管理サーバ100から取得可能な鍵を取得する。
【0104】
(2)具体例
図12は、
図4に示されるポリシで運用した場合の具体例を説明するためのシーケンス図である 。
【0105】
(i)シーケンス1
クライアント端末200が社内ネットワークに位置しているときに、ユーザの操作により管理サーバ100に対して認証を行ったとする。このときクライアント端末200は、1つも暗号鍵を保持していないものとする。
【0106】
(ii)シーケンス2
認証が完了すると、クライアント端末200のポリシ取得部230は、管理サーバ100から最新のポリシ173を取得し、ポリシ情報254として保持する。この時点ではまだ暗号鍵は取得されていない。
【0107】
(iii)シーケンス3
クライアント端末200の端末位置情報変化検知部210は、クライアント端末200の現在の位置情報からポリシ(ポリシ名401)を社内ネットワーク405であると判定し、管理サーバ100から社内ネットワークの機密度404に対応する極秘鍵、社外秘鍵、及び一般鍵を取得する。ここで、初めて暗号鍵が取得されることとなる。
【0108】
(iv)シーケンス4
クライアント端末200を保持するユーザが物理的位置を移動したり、IPアドレスを変更したりして社内ネットワークから社外ネットワークに移動したものとする。単にネットワークを移動しただけでは、保持している暗号鍵に変化はなく、この時点で保持している暗号鍵は、極秘鍵、社外秘鍵、及び一般鍵である。
【0109】
(v)シーケンス5
端末位置情報変化検知部210は、社外ネットワークに移動したため、ポリシ情報254を参照して、取得済の暗号鍵(極秘鍵、社外秘鍵、及び一般鍵)のうち、極秘鍵及び社外秘鍵を削除する。従って、この時点でクライアント端末200は、一般鍵のみ保持していることとなる。
【0110】
(vi)シーケンス6
続いて、ユーザがIPアドレスを変更して社外ネットワークから許可ネットワークに移動したものとする。ネットワークを移動したこの時点では、クライアント端末200はまだ一般鍵のみ保持している状態である。
【0111】
(vii)シーケンス7
端末位置情報変化検知部210は、許可ネットワークに移動したためポリシ情報254を参照して、管理サーバ100から未取得の暗号鍵(極秘鍵及び社外秘鍵)のうち社外秘鍵を取得する。従って、この時点でクライアント端末200は、社外秘鍵及び一般鍵を保持していることとなる。
【0112】
以上のように、本発明の実施形態によるクライアント端末200では、当該クライアント端末200の位置(IPアドレス、及び物理的位置)の変化により暗号鍵を取得したり、削除したりして、使うことのできる鍵を制限している。
【0113】
<まとめ>
(i)本発明では、ファイルを暗号化する暗号鍵に機密度を設定することを可能とする。例えば、個人で利用するファイルを暗号化する鍵は従来1つで十分だったが、「極秘」「社外秘」「一般」等の機密度が設定された暗号鍵から選択可能とする。また、PCやモバイル端末の物理的な位置情報およびネットワーク上の位置情報を利用して、取得できる暗号鍵のコントロールを可能とする。例えば、社内ネットワークから鍵管理サーバにログインを行った場合はすべての暗号鍵を取得できるが、ポリシで許可されたネットワークからログインを行った場合は「社外秘」「一般」の機密度が設定された暗号鍵のみ取得可能、その他のネットワークからログインを行った場合は「一般」の機密度が設定された暗号鍵のみ取得可能とする。さらに、ネットワーク上の位置情報が変化した場合に暗号鍵の制御を行う。例えば、社内ネットワークからポリシで許可されたネットワークに切り替わった場合は、「極秘」の暗号鍵および「極秘」の暗号鍵で復号したファイルを削除する。これにより、社外で極秘のファイルを参照すること、および極秘のファイルを復号する暗号鍵が社外に流出することを防止し、クラウドストレージ上のデータファイルのセキュリティを向上させる。つまり、本発明によれば、情報の機密度に応じてファイルを暗号化および復号できる物理的な位置およびネットワーク上の位置をコントロールすることができる。また、ポリシで暗号鍵の取得が許可されている物理的な位置およびネットワーク上の位置の外に暗号鍵が流出することを防止できる。
【0114】
(ii)本発明は、上記した実施形態に限定されるものではなく、様々な変形例が含まれる。上記実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることもできる。また、ある実施形態の構成に他の実施形態の構成を加えることもできる。また、各実施形態の構成の一部について、他の構成を追加・削除・置換することもできる。
【0115】
例えば、上記実施形態においては、暗号鍵と復号鍵が同一である暗号方式を前提としたが、暗号鍵と復号鍵が異なる場合(例えば公開鍵暗号方式)においても適用することができる。この場合は、管理サーバ100が暗号鍵と復号鍵のペアをそれぞれ管理しておき、クライアント端末200は暗号鍵と復号鍵のいずれを必要とするかを管理サーバ100へ通知するようにすればよい。
【0116】
また、極秘鍵1712、社外秘鍵1714、一般鍵1716を、特許文献1に記載されているサービス共有やシステム共有と組み合わせて、さらに細かいポリシを適用することもできる。
【0117】
また、本明細書ではクラウドストレージの利用を前提としたが、暗号ファイルの格納先としてファイルサーバやプライベートクラウドストレージを利用することもできる。
【0118】
さらに、上記実施形態においては、ユーザを認証するための認証情報としてパスワードを例示したが、クライアント端末200が各暗号鍵を復号することができれば、その他の認証情報を用いることもできる。
【0119】
また、上記実施形態においては、フォルダ構成としてWindows(登録商標)を想定したが、その他のOS上においても同様の仕組みを提供することができる。
【0120】
(iii)本発明は、実施形態の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をシステム或は装置に提供し、そのシステム或は装置のコンピュータ(又はCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD−ROM、DVD−ROM、ハードディスク、光ディスク、光磁気ディスク、CD−R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
【0121】
また、プログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)などが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータ上のメモリに書きこまれた後、そのプログラムコードの指示に基づき、コンピュータのCPUなどが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。
【0122】
さらに、実施の形態の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することにより、それをシステム又は装置のハードディスクやメモリ等の記憶手段又はCD−RW、CD−R等の記憶媒体に格納し、使用時にそのシステム又は装置のコンピュータ(又はCPUやMPU)が当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしても良い。
【0123】
最後に、ここで述べたプロセス及び技術は本質的に如何なる特定の装置に関連することはなく、コンポーネントの如何なる相応しい組み合わせによってでも実装できることを理解する必要がある。更に、汎用目的の多様なタイプのデバイスがここで記述した教授に従って使用可能である。ここで述べた方法のステップを実行するのに、専用の装置を構築するのが有益であることが判るかもしれない。また、実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。本発明は、具体例に関連して記述したが、これらは、すべての観点に於いて限定の為ではなく説明の為である。本分野にスキルのある者には、本発明を実施するのに相応しいハードウェア、ソフトウェア、及びファームウエアの多数の組み合わせがあることが解るであろう。例えば、記述したソフトウェアは、アセンブラ、C/C++、perl、Shell、PHP、Java(登録商標)等の広範囲のプログラム又はスクリプト言語で実装できる。
【0124】
さらに、上述の実施形態において、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていても良い。