以下に、本願に係るネットワークシステム、サーバ装置及び判定方法の実施形態を図面に基づいて詳細に説明する。なお、この実施形態により本願に係るネットワークシステム、サーバ装置及び判定方法が限定されるものではない。
(第1の実施形態)
[ネットワークシステムの構成]
まず、図1を用いて、第1の実施形態に係るネットワークシステムについて説明する。図1は、第1の実施形態に係るネットワークシステム1の構成例を示す図である。図1に例示したネットワークシステム1には、サーバ装置100と、端末装置2001〜200nとが含まれる。サーバ装置100と端末装置2001〜200nとは、ネットワーク10を介して互いに通信可能に接続される。なお、ネットワークシステム1に含まれる各装置の台数は、図1に示した例に限られない。例えば、ネットワークシステム1には、2台以上のサーバ装置100が含まれてもよい。
サーバ装置100は、仮想ホスティング事業者によって管理される情報処理装置である。端末装置2001〜200nは、ユーザによって利用される情報処理装置であり、例えば、PC(Personal Computer)等である。なお、端末装置2001〜200nは、同様の構成を有するので、以下では、主に端末装置2001について説明する。また、以下では、端末装置2001〜200nを区別する必要がない場合には、これらを総称して「端末装置200」と表記する場合がある。
図1に示したネットワークシステム1では、端末装置200を利用する各利用者が、仮想マシンのイメージファイルをサーバ装置100に配置し、かかるイメージファイルをサーバ装置100において実行することにより仮想マシンを利用する。このとき、第1の実施形態に係る端末装置200は、サーバ装置100上で仮想マシンを起動する前に、イメージファイルの完全性を判定する。
具体的には、第1の実施形態において、サーバ装置100は、複数のユーザにより共通して利用される共通イメージファイルを記憶するとともに、ユーザ毎に、かかるユーザにより利用されるイメージファイルと共通イメージファイルとの差分である個別イメージファイルを記憶する。そして、サーバ装置100は、ユーザ毎に、各ユーザに対応する個別イメージファイルを用いて、かかる個別イメージファイルを検証するための検証情報を生成する。そして、各端末装置200は、サーバ装置100によって生成された検証情報を保持しておく。そして、端末装置200は、サーバ装置100上で仮想マシンを起動する場合に、所定の認証情報生成因子をサーバ装置100に送信することにより、サーバ装置100に対して認証情報の生成を要求する。サーバ装置100は、端末装置200からの要求に応答して、認証情報生成因子と端末装置200に対応する個別イメージファイルとを用いて認証情報を生成し、生成した認証情報を端末装置200に送信する。そして、端末装置200は、サーバ装置100から受信した認証情報と予め保持しておいた検証情報とを用いて、個別イメージファイルの正当性を判定する。
これにより、第1の実施形態に係るネットワークシステム1では、ネットワーク10を流通するデータ量を低減するとともに、完全性確認の演算処理を高速化することを可能にする。以下、この点について、サーバ装置100及び端末装置200の構成及び処理手順とともに詳細に説明する。
[サーバ装置の構成]
次に、図1を用いて、第1の実施形態に係るサーバ装置100の構成について説明する。図1に示すように、第1の実施形態に係るサーバ装置100は、通信部110と、記憶部120と、仮想マシン実行部130と、計算部140とを有する。
通信部110は、例えばNIC(Network Interface Card)等によって実現される。かかる通信部110は、ネットワーク10と接続され、かかるネットワーク10を介して端末装置200との間で通信を行う。
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、又は、ハードディスク、光ディスク等によって実現される。かかる記憶部120は、図1に示すように、共通データ記憶部121と、個別データ記憶部1221〜122nと、ユーザ情報記憶部123とを含む。
共通データ記憶部121は、端末装置2001〜200nの各ユーザによって共通して利用されるイメージファイルである共通イメージファイルを記憶する。個別データ記憶部1221〜122nは、所定のユーザによって利用されるイメージファイルから共通イメージファイルを除いたイメージファイルである個別イメージファイルを記憶する。例えば、個別データ記憶部1221は、端末装置2001に対応する個別イメージファイルを記憶し、個別データ記憶部122nは、端末装置200nに対応する個別イメージファイルを記憶する。
ユーザ情報記憶部123は、端末装置2001〜200nの各ユーザに関するユーザ情報を記憶する。ここで、図2に、第1の実施形態に係るユーザ情報記憶部123の一例を示す。図2に示すように、ユーザ情報記憶部123は、「ユーザ識別子」、「パスワード」、「第1の値g」、「第2の値N」、「個別識別子」といった項目を有する。
「ユーザ識別子」は、端末装置2001〜200nの各ユーザを識別するための情報である。図2では、「ユーザ識別子」には、各ユーザを識別するための情報として、図1の端末装置2001〜200nに付した参照符号(「2001」など)が記憶される例を示している。「パスワード」は、各ユーザのパスワードである。「第1の値g」及び「第2の値N」は、後述する計算部140によって、ユーザ毎に払い出される任意の数値である。
「個別識別子」は、各ユーザに対応する個別イメージファイルを識別するための情報である。例えば、「個別識別子」には、個別データ記憶部1221〜122nを識別するための識別情報や、各ユーザに対応する個別イメージファイルが格納されているファイルパス名等が記憶される。図2では、「個別識別子」には、個別データ記憶部1221〜122nを識別するための識別情報として、図1の個別データ記憶部1221〜122nに付した参照符号(「1221」など)が記憶される例を示している。
すなわち、図2では、ユーザ識別子「2001」によって識別されるユーザ(端末装置2001のユーザ)のパスワードが「P1」であり、かかるユーザに払い出された第1の値gが「4」であり、第2の値Nが「997」であり、かかるユーザに対応する個別イメージファイルが個別データ記憶部1221に格納されている例を示している。
なお、図2の例では、ユーザ情報記憶部123が、ユーザ識別子に対応付けて、個別識別子を記憶する例を示した。しかし、ユーザ情報記憶部123は、ユーザ識別子に対応付けて、個別イメージファイル自体を記憶してもよい。
図1の説明に戻って、仮想マシン実行部130は、仮想マシンの実行に関する各種制御を行う。例えば、仮想マシン実行部130は、端末装置200から仮想マシンの起動指示を受け付けた場合に、共通イメージファイルと、かかる端末装置200のユーザに対応する個別イメージファイルとを用いて仮想マシンを起動させる。なお、仮想マシン実行部130による処理については後述する。
計算部140は、図1に示すように、検証情報生成部141と、認証情報生成部142とを有する。検証情報生成部141は、端末装置200によって個別イメージファイルの完全性を判定する処理が行われる際に検証情報を生成する。また、認証情報生成部142は、端末装置200によって個別イメージファイルの完全性を判定する処理が行われる際に認証情報を生成する。検証情報生成部141及び認証情報生成部142による処理については後述する。
なお、上記の仮想マシン実行部130及び計算部140は、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等によって、図示しない記憶装置に記憶されているプログラムがRAMを作業領域として実行されることにより実現される。また、例えば、仮想マシン実行部130及び計算部140は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現される。
[端末装置の構成]
次に、図1を用いて、第1の実施形態に係る端末装置200の構成について説明する。図1に示すように、第1の実施形態に係る端末装置200は、通信部210と、仮想マシン利用部220と、検証情報記憶部230と、計算部240とを有する。
通信部210は、例えばNIC等によって実現される。かかる通信部210は、ネットワーク10と接続され、かかるネットワーク10を介してサーバ装置100との間で通信を行う。
仮想マシン利用部220は、サーバ装置100上で実行される仮想マシンを利用する機能を有する。かかる仮想マシン利用部220は、ソフトウェア等によって実現され、例えば、リモートデスクトップクライアントやWebブラウザ等に該当する。
検証情報記憶部230は、例えば、RAM、フラッシュメモリ等の半導体メモリ素子、又は、ハードディスク、光ディスク等によって実現される。かかる検証情報記憶部230は、サーバ装置100によって生成された検証情報等を記憶する。ここで、図3に、第1の実施形態に係る検証情報記憶部230の一例を示す。なお、図3では、図1に示した端末装置2001が有する検証情報記憶部230の一例を示す。図3に示すように、検証情報記憶部230は、「第1の値g」、「第2の値N」、「検証情報」といった項目を有する。
「第1の値g」は、図2に示したユーザ情報記憶部123の「第1の値g」に対応する。また、「第2の値N」は、図2に示したユーザ情報記憶部123の「第2の値N」に対応する。図3は、端末装置2001が有する検証情報記憶部230の一例を示すので、「第1の値g」には、図2に示したユーザ識別子「2001」に対応する「4」が記憶され、「第2の値N」には、図2に示したユーザ識別子「2001」に対応する「997」が記憶される。「検証情報」は、サーバ装置100の検証情報生成部141によって生成された検証情報(ここの例では、「C(P1)」)が記憶される。
図1の説明に戻って、計算部240は、要求部241と、判定部242とを有する。要求部241は、仮想マシンの起動前に、サーバ装置100に対して、認証情報を生成する旨の認証情報要求を送信する。また、判定部242は、サーバ装置100に記憶されている個別イメージファイルの完全性を判定する。なお、要求部241及び判定部242による処理については後述する。
このような計算部240は、CPUやMPU等によって、図示しない記憶装置に記憶されているプログラムがRAMを作業領域として実行されることにより実現される。また、例えば、計算部240は、ASICやFPGA等の集積回路により実現される。
[ネットワークシステムによる処理手順]
次に、図4〜図6を用いて、第1の実施形態に係るネットワークシステム1による処理手順について説明する。ネットワークシステム1による処理手順は、ユーザが仮想マシンのイメージファイルをサーバ装置100に登録する初期処理手順と、端末装置200がサーバ装置100に保持されているイメージファイルの完全性を判定した後に仮想マシンを起動させる起動処理手順と、サーバ装置100上で起動している仮想マシンを停止させる停止処理手順とに分けられる。以下では、これらの各処理手順について順に説明する。
なお、以下の説明において、サーバ装置100と端末装置200との間では、ユーザ識別子及びパスワードの組合せが事前に共有されており、ユーザ情報記憶部123は、新規ユーザについても、ユーザ識別子及びパスワードを記憶しているものとする。ただし、ユーザ情報記憶部123は、新規ユーザの「第1の値g」、「第2の値N」及び「個別識別子」については記憶していないものとする。
[初期処理手順]
図4は、第1の実施形態に係るネットワークシステム1による初期処理手順を示すシーケンス図である。図4に示すように、端末装置200のユーザが仮想マシンのイメージファイルをサーバ装置100に登録する場合、まず、端末装置200とサーバ装置100との間でユーザ認証を行う(ステップS101)。
例えば、端末装置200の仮想マシン利用部220は、通信部210を介して、ユーザ識別子及びパスワードの組合せを含むイメージファイルの登録要求をサーバ装置100に送信する。そして、サーバ装置100の仮想マシン実行部130は、端末装置200から受信したユーザ識別子及びパスワードの組合せがユーザ情報記憶部123に記憶されている場合には認証成功と判定し、ユーザ識別子及びパスワードの組合せがユーザ情報記憶部123に記憶されていない場合には認証失敗と判定する。ここでは、仮想マシン実行部130が認証成功と判定したものとする。
続いて、サーバ装置100の計算部140は、第1の値g及び第2の値Nを生成する(ステップS102)。このとき、計算部140は、第2の値Nを十分に大きい数値とし、第1の値gを第2の値N未満の数値とする。続いて、計算部140は、通信部110を介して、第1の値g及び第2の値Nを端末装置200に送信する(ステップS103)。
そして、端末装置200の仮想マシン利用部220は、サーバ装置100から第1の値g及び第2の値Nを受信する(ステップS104)。このとき、仮想マシン利用部220は、第1の値g及び第2の値Nを検証情報記憶部230に格納する。
続いて、サーバ装置100の仮想マシン実行部130は、記憶部120の共通データ記憶部121から、複数のユーザによって共通して利用される共通イメージファイルHを読み込む(ステップS105)。続いて、仮想マシン実行部130は、端末装置200の利用者が利用するイメージファイルと共通イメージファイルHとの差分情報を、かかる利用者が個別に利用する個別イメージファイルPiとして生成する(ステップS106)。このとき、仮想マシン実行部130は、個別イメージファイルPiを個別データ記憶部122iに格納する。
続いて、検証情報生成部141は、個別イメージファイルPiを用いて、かかる個別イメージファイルPiを検証するための検証情報C(Pi)を生成する(ステップS107)。
具体的には、検証情報生成部141は、下記式(1)に示すように、第1の値gを底とし、個別イメージファイルPiによって示される数値を冪数として冪乗演算を行うことにより値「gPi」を求め、かかる値「gPi」を第2の値Nにより除算した際の剰余を検証情報C(Pi)とする。なお、「個別イメージファイルPiによって示される数値」とは、バイナリデータである個別イメージファイルPiを自然数の2進数表記とみなして得られる数値を示す。
C(Pi) = gPi mod N ・・・ (1)
続いて、検証情報生成部141は、通信部110を介して、ステップS107において生成した検証情報C(Pi)を端末装置200に送信する(ステップS108)。続いて、検証情報生成部141は、端末装置200のユーザ識別子に対応付けて、ステップS102において生成した第1の値g及び第2の値Nと、ステップS106において生成した個別イメージファイルPiの個別識別子とをユーザ情報記憶部123に登録する(ステップS109)。なお、仮想マシン実行部130が、ユーザ情報記憶部123に個別識別子を登録してもよい。
そして、端末装置200の仮想マシン利用部220は、サーバ装置100から検証情報C(Pi)を受信する(ステップS110)。このとき、仮想マシン利用部220は、検証情報C(Pi)を検証情報記憶部230に格納する。
[起動処理手順]
図5は、第1の実施形態に係るネットワークシステム1による起動処理手順を示すシーケンス図である。図5に示すように、端末装置200のユーザがサーバ装置100上で仮想マシンを起動させる場合、まず、端末装置200とサーバ装置100との間でユーザ認証を行う(ステップS201)。
続いて、端末装置200の要求部241は、所定の乱数rを生成する(ステップS202)。そして、要求部241は、かかる乱数rを用いて、サーバ装置100が生成する認証情報の生成元となる認証情報生成因子Rを生成する(ステップS203)。
具体的には、要求部241は、下記式(2)に示すように、第1の値gを底とし、乱数rを冪数として冪乗演算を行うことにより値「gr」を求め、かかる値「gr」を第2の値Nにより除算した際の剰余を認証情報生成因子Rとする。
R = gr mod N ・・・ (2)
そして、要求部241は、このようにして生成した認証情報生成因子Rを含む認証情報要求をサーバ装置100に送信する(ステップS204)。このようにして、要求部241は、サーバ装置100に対して認証情報の生成を要求する。
そして、サーバ装置100の認証情報生成部142は、端末装置200から認証情報生成因子Rを受信する(ステップS205)。そして、認証情報生成部142は、認証情報生成因子Rと、端末装置200のユーザに対応する個別イメージファイルPiとを用いて、認証情報R(Pi)を生成する(ステップS206)。
具体的には、認証情報生成部142は、ユーザ情報記憶部123を参照することにより、ステップS201における認証時に用いたユーザ識別子に対応する個別イメージファイルPiを取得する。そして、認証情報生成部142は、下記式(3)に示すように、認証情報生成因子Rを底とし、個別イメージファイルPiによって示される数値を冪数として冪乗演算を行うことにより値「RPi」を求め、かかる値「RPi」を第2の値Nにより除算した際の剰余を認証情報R(Pi)とする。
R(Pi) = RPi mod N ・・・ (3)
そして、認証情報生成部142は、このようにして生成した認証情報R(Pi)を端末装置200に送信する(ステップS207)。
そして、端末装置200の判定部242は、サーバ装置100から認証情報R(Pi)を受信する(ステップS208)。続いて、判定部242は、サーバ装置100から受信した認証情報R(Pi)と、検証情報記憶部230に記憶されている検証情報C(Pi)とを用いて、認証情報R(Pi)の正当性を判定する(ステップS209)。
具体的には、判定部242は、下記式(4)に示すように、検証情報C(Pi)を底とし、ステップS202において生成した乱数rを冪数として冪乗演算を行うことにより値「C(Pi)r」を求め、かかる値「C(Pi)r」を第2の値Nにより除算した際の剰余を算出する。そして、判定部242は、下記式(4)により算出した剰余と、サーバ装置100から受信した認証情報R(Pi)とが一致するか否かに基づいて、サーバ装置100に記憶されている個別イメージファイルPiの正当性を判定する。すなわち、判定部242は、サーバ装置100に記憶されている個別イメージファイルPiに対して不正な改竄が行われているか否か等の完全性を判定することとなる。
C(Pi)r mod N ・・・ (4)
ここで、認証情報R(Pi)と上記式(4)により得られる剰余とが一致するか否かに基づいて、個別イメージファイルPiの完全性を判定することができる理由について説明する。一般的に、数学的法則として、下記式(5)が成立することが知られている。
(gP mod N)r mod N = (gr mod N)P mod N ・・・ (5)
上記式(5)における左辺の(gP mod N)は、上記式(1)により算出される検証情報C(Pi)に該当する。したがって、上記式(5)における左辺は、上記式(4)に該当する。また、上記式(5)における右辺の(gr mod N)は、上記式(2)により算出される認証情報生成因子Rに該当する。したがって、上記式(5)における右辺は、上記式(3)により算出される認証情報R(Pi)に該当する。すなわち、上記式(5)における左辺の値は、上記式(4)の結果であって、端末装置200が予め保持しておいた検証情報C(Pi)から算出される。また、上記式(5)における右辺の値は、認証情報R(Pi)であって、端末装置200によって判定処理が行われる際に、サーバ装置100が保持する個別イメージファイルPiから算出される。このようなことから、判定部242は、認証情報R(Pi)と上記式(4)により得られる剰余とが一致するか否かに基づいて、サーバ装置100に保持されている個別イメージファイルPiに対して改竄等が行われたか否かを判定することができる。
判定部242は、認証情報R(Pi)と上記式(4)により得られる剰余とが一致しない場合には(ステップS209否定)、仮想マシンを前回停止してから現時点までの間に、個別イメージファイルPiに対して不正な改竄等が行われたと判定し、仮想マシンの起動を中止する(ステップS210)。このとき、判定部242は、個別イメージファイルPiに対して不正な改竄等が行われた可能性がある旨をサーバ装置100に通知してもよいし、端末装置200のユーザ等に通知してもよい。
一方、判定部242は、認証情報R(Pi)と上記式(4)により得られる剰余とが一致する場合には(ステップS209肯定)、仮想マシンを前回停止してから現時点までの間に、個別イメージファイルPiに対して不正な改竄等が行われていないと判定する。かかる場合に、仮想マシン利用部220は、サーバ装置100に対して、仮想マシンの起動指示を送信する(ステップS211)。続いて、計算部240は、判定部242による判定処理が終了したので、ステップS203において生成した認証情報生成因子Rと、ステップS208において受信した認証情報R(Pi)とを削除する(ステップS212)。
そして、サーバ装置100の仮想マシン実行部130は、端末装置200から仮想マシンの起動指示を受信する(ステップS213)。続いて、計算部140は、端末装置200による判定処理が終了したので、ステップS205において受信した認証情報生成因子Rと、ステップS206において生成した認証情報R(Pi)とを削除する(ステップS214)。
そして、仮想マシン実行部130は、共通データ記憶部121に記憶されている共通イメージファイルHと、個別データ記憶部122iに記憶されている個別イメージファイルPiとを用いて、仮想マシンを起動する(ステップS215)。これにより、端末装置200のユーザは、サーバ装置100に記憶されている仮想マシンのイメージファイルの完全性を確認した後に、サーバ装置100上で仮想マシンを起動させることができる。
ここで、図4に示した例のように、ネットワークシステム1における初期処理手順においてサーバ装置100と端末装置200との間で流通するデータは、所定の数値である第1の値gや第2の値N、剰余である検証情報C(Pi)である。また、図5に示した例のように、ネットワークシステム1における起動処理手順においてサーバ装置100と端末装置200との間で流通するデータは、剰余である認証情報生成因子Rや認証情報R(Pi)である。このため、第1の実施形態に係るネットワークシステム1では、サーバ装置100と端末装置200との間におけるデータ転送量を低減することができ、この結果、データ転送時間も短縮することができる。
また、第1の実施形態に係るネットワークシステム1では、各ユーザにより利用されるイメージファイル全体を用いて、検証情報C(Pi)や認証情報R(Pi)を生成するのではなく、各ユーザにより利用されるイメージファイルと共通イメージファイルとの差分である個別イメージファイルを用いて、検証情報C(Pi)や認証情報R(Pi)を生成する。そして、上記式(1)及び(3)に示すように、自然数の2進数表記とみなされる個別イメージファイルPiは、冪乗演算の冪数となる。第1の実施形態に係るネットワークシステム1では、イメージファイル全体ではなく個別イメージファイルPiを用いることで、冪乗演算における冪数の値を小さくすることができるので、完全性を確認するための演算処理(式(1)や(3)の演算処理)を高速化することができる。
以上のことから、第1の実施形態に係るネットワークシステム1では、ファイルの完全性を確認するためのデータ転送量を低減するとともに、完全性を確認するための演算処理を高速化することができる。
なお、仮想マシンが起動された後に、ユーザによって仮想マシンが利用されることでイメージファイルに対する各種更新情報が発生するが、ここでは、共通イメージファイルHは読込み専用であるものとする。すなわち、仮想マシン実行部130は、各種更新情報を個別イメージファイルPiに書き込むものとする。
[停止処理手順]
図6は、第1の実施形態に係るネットワークシステム1による停止処理手順を示すシーケンス図である。図6に示すように、端末装置200の仮想マシン利用部220は、ユーザによる操作に従って、サーバ装置100に対して、仮想マシンの停止指示を送信する(ステップS301)。
そして、サーバ装置100の仮想マシン実行部130は、端末装置200から仮想マシンの停止指示を受信する(ステップS302)。かかる場合に、仮想マシン実行部130は、仮想マシンを停止させる(ステップS303)。これにより、仮想マシン実行部130は、個別イメージファイルPiに各種更新情報を書き込む処理を終了し、個別イメージファイルを確定させる(ステップS304)。ここでは、更新後の個別イメージファイルを個別イメージファイルPi+1とする。
続いて、検証情報生成部141は、下記式(6)に示すように、更新後の個別イメージファイルPi+1を用いて、新たな検証情報C(Pi+1)を生成する(ステップS305)。
C(Pi+1) = gPi+1 mod N ・・・ (6)
続いて、検証情報生成部141は、ステップS305において生成した検証情報C(Pi+1)を端末装置200に送信する(ステップS306)。
そして、端末装置200の仮想マシン利用部220は、サーバ装置100から検証情報C(Pi+1)を受信する(ステップS307)。このとき、仮想マシン利用部220は、検証情報記憶部230に記憶されている検証情報C(Pi)を、サーバ装置100から受信した検証情報C(Pi+1)に更新する(ステップS308)。
続いて、仮想マシン利用部220は、検証情報の更新結果をサーバ装置100に送信する(ステップS309)。具体的には、仮想マシン利用部220は、検証情報記憶部230に記憶されている検証情報C(Pi)を検証情報C(Pi+1)に更新できた場合には、更新成功であることを示す更新結果をサーバ装置100に送信し、検証情報C(Pi)を検証情報C(Pi+1)に更新できなかった場合には、更新失敗であることを示す更新結果をサーバ装置100に送信する。
そして、サーバ装置100の仮想マシン実行部130は、端末装置200から更新結果を受信する(ステップS310)。そして、仮想マシン実行部130は、端末装置200から受信した更新結果が成功を示すか否かを判定する(ステップS311)。
このとき、仮想マシン実行部130は、更新結果が更新成功を示す場合には(ステップS311肯定)、更新後の個別イメージファイルPi+1を個別データ記憶部122i+1に格納するとともに、端末装置200のユーザのユーザ識別子に対応付けてユーザ情報記憶部123に記憶されている個別イメージファイルPiの個別識別子を、個別イメージファイルPi+1の個別識別子に更新する(ステップS312)。続いて、仮想マシン実行部130は、個別イメージファイルPiを削除する(ステップS313)。すなわち、仮想マシン実行部130は、個別データ記憶部122iを削除する。
一方、仮想マシン実行部130は、更新結果が更新失敗を示す場合には(ステップS311否定)、個別イメージファイルPi+1を削除し、ロールバックすることにより、端末装置200に対応する個別イメージファイルを個別イメージファイルPiに戻す(ステップS314)。最後に、仮想マシン実行部130は、ステップS306において生成した検証情報C(Pi+1)を削除する(ステップS315)。
なお、上記例では、個別イメージファイルPiと個別イメージファイルPi+1とが異なるファイルとして存在することを前提として説明したが、ユーザによって仮想マシンが利用されることにより、仮想マシン実行部130が、個別イメージファイルPiを随時更新して個別イメージファイルPi+1を生成する場合もある。このとき、仮想マシン実行部130は、更新結果が更新成功を示す場合に(ステップS311肯定)、更新後の個別イメージファイルPi+1を個別データ記憶部122iに格納したままとし、さらに、ユーザ情報記憶部123に記憶されている個別イメージファイルPiの個別識別子を更新しなくてもよい。また、仮想マシン実行部130は、更新結果が更新失敗を示す場合には(ステップS311否定)、個別データ記憶部122iに記憶されている個別イメージファイルPi+1をロールバックすることにより個別イメージファイルPiに戻す処理だけを行ってもよい(ステップS314)。
[第1の実施形態の効果]
上述してきたように、第1の実施形態に係るネットワークシステム1は、サーバ装置100と端末装置200とを含む。かかるサーバ装置100は、共通データ記憶部121と、ユーザ情報記憶部123と、検証情報生成部141と、認証情報生成部142とを有する。そして、共通データ記憶部121は、複数のユーザにより利用される共通イメージファイル(共通データの一例に相当)を記憶する。また、ユーザ情報記憶部123は、端末装置200のユーザを識別するためのユーザ識別子に対応付けて、ユーザにより利用されるイメージファイルと共通イメージファイルとの差分である個別イメージファイル(個別データの一例に相当)を記憶する。また、検証情報生成部141は、個別イメージファイルを用いて、かかる個別イメージファイルを検証するための検証情報を生成する。また、認証情報生成部142は、端末装置200から認証情報生成因子を受信した場合に、かかる認証情報生成因子と、端末装置200に対応する個別イメージファイルとを用いて認証情報を生成し、生成した認証情報を端末装置200に送信する。また、検証情報記憶部230と、要求部241と、判定部242とを有する。検証情報記憶部230は、サーバ装置100の検証情報生成部141により生成された検証情報を記憶する。要求部241は、所定の認証情報生成因子をサーバ装置100に送信することにより、サーバ装置100に対して認証情報の生成を要求する。判定部242は、要求部241による要求の応答としてサーバ装置100から受信した認証情報と、検証情報記憶部230に記憶されている検証情報とを用いて、個別イメージファイルの正当性を判定する。
これにより、第1の実施形態に係るネットワークシステム1は、各ユーザにより利用されるイメージファイルと共通イメージファイルとの差分である個別イメージファイルを用いて、検証情報や認証情報を生成するので、上記式(1)及び(3)等の演算処理にかかる負荷を低減することができ、この結果、ファイルの完全性を判定する処理を高速化することができる。
また、第1の実施形態に係るネットワークシステム1において、サーバ装置100の検証情報生成部141は、ユーザ情報記憶部123に記憶されている個別イメージファイルが更新された場合に、更新後の個別イメージファイルを用いて、新たな検証情報を生成する。また、端末装置200は、検証情報記憶部230に記憶されている検証情報を検証情報生成部141により生成された新たな検証情報に更新する。
これにより、第1の実施形態に係るネットワークシステム1では、仮想マシンが利用されることによりイメージファイルに更新が発生した場合であっても、更新後のイメージファイルについて、完全性を確認することが可能となる。
また、第1の実施形態に係るネットワークシステム1において、サーバ装置100及び端末装置200は、上記式(1)〜(3)に示したように、互いに剰余を送受信することにより、個別イメージファイルの完全性判定を行う。これにより、第1の実施形態に係るネットワークシステム1は、サーバ装置100と端末装置200との間におけるデータ転送量を低減することができ、この結果、データ転送時間も短縮することができる。
(第2の実施形態)
上記第1の実施形態では、端末装置200が、イメージファイルの完全性判定処理を行う例を示した。しかし、端末装置200のユーザが利用する移動体端末が、完全性判定処理を行ってもよい。第2の実施形態では、移動体端末が完全性判定処理を行う例について説明する。なお、以下では、既に示した構成部位と同様の機能を有する部位には同一符号を付すこととして、その詳細な説明を省略する。
[ネットワークシステムの構成]
まず、図7を用いて、第2の実施形態に係るネットワークシステムについて説明する。図7は、第2の実施形態に係るネットワークシステム2の構成例を示す図である。図7に例示したネットワークシステム2には、サーバ装置300と、端末装置400と、移動体端末500とが含まれる。図7に示した例において、端末装置400及び移動体端末500は、同一のユーザによって利用されるものとする。なお、ネットワークシステム2に含まれる各装置の台数は、図7に示した例に限られない。例えば、ネットワークシステム2には、2台以上のサーバ装置300が含まれてもよいし、2台以上の端末装置400が含まれてもよいし、2台以上の移動体端末500が含まれてもよい。
[サーバ装置の構成]
図7に示すように、第2の実施形態に係るサーバ装置300は、計算部340と、画像生成部350とを有する。計算部340は、検証情報生成部341と認証情報生成部342とを有する。計算部340による処理については後述する。
画像生成部350は、所定の情報を特定するための画像を生成する。具体的には、画像生成部350は、バーコードやQRコード(登録商標)等の一次元コードや二次元コード等が描出された画像を生成する。第2の実施形態に係る画像生成部350は、二次元コードを生成するものとする。なお、画像生成部350による処理については後述する。
[端末装置の構成]
図7に示すように、第2の実施形態に係る端末装置400は、仮想マシン利用部420と、要求部441と、表示部443とを有する。仮想マシン利用部420及び要求部441による処理については後述する。表示部443は、各種情報を表示するための表示デバイスであり、例えば、液晶表示装置等である。
[移動体端末の構成]
移動体端末500は、例えば、携帯電話機やPDA(Personal Digital Assistant)等である。かかる移動体端末500は、図7に示すように、読取部510と、検証情報記憶部520と、表示部530と、計算部540とを有する。
読取部510は、液晶表示装置に表示された一次元コードや二次元コード等を読み取り、読み取ったコードが示す情報を生成する。例えば、読取部510は、カメラ及びカメラを制御する制御回路等によって実現される。なお、読取部510は、紙媒体等に印刷された一次元コードや二次元コード等を読み取ることもできる。
検証情報記憶部520は、サーバ装置300によって生成される検証情報を記憶する。なお、検証情報記憶部520は、図3に示した検証情報記憶部230と同様の構成を有する。表示部530は、各種情報を表示するための表示デバイスであり、例えば、液晶表示装置等である。計算部540は、要求部541と判定部542とを有する。計算部540による処理については後述する。
[ネットワークシステムによる処理手順]
次に、図8〜図10を用いて、第2の実施形態に係るネットワークシステム2による処理手順について説明する。以下では、第1の実施形態と同様に、初期処理手順、起動処理手順、停止処理手順について順に説明する。
[初期処理手順]
図8は、第2の実施形態に係るネットワークシステム2による初期処理手順を示すシーケンス図である。図8に示すように、端末装置400のユーザが仮想マシンのイメージファイルを端末装置400に登録する場合、まず、端末装置400とサーバ装置300との間でユーザ認証を行う(ステップS401)。ここでは、サーバ装置300の仮想マシン実行部130が認証成功と判定したものとする。
続いて、サーバ装置300の計算部340は、第1の実施形態と同様に、第1の値g及び第2の値Nを生成する(ステップS402)。続いて、画像生成部350は、計算部340によって生成された第1の値g及び第2の値Nを特定するための二次元コードが描出された画像を生成する(ステップS403)。続いて、画像生成部350は、このようにして生成した二次元コードが描出された画像を端末装置400に送信する(ステップS404)。なお、以下では、所定の情報を特定するための二次元コードが描出された画像を単に「所定の情報の二次元コード」と表記する場合がある。
そして、端末装置400の仮想マシン利用部420は、サーバ装置300から第1の値g及び第2の値Nの二次元コードを受信した場合に、受信した二次元コードを表示部443に表示制御する(ステップS405)。続いて、移動体端末500の読取部510は、ユーザによる操作に従って、端末装置400の表示部443に表示された二次元コードを読み取る(ステップS406)。このとき、読取部510は、読み取った二次元コードから第1の値g及び第2の値Nを生成する。
続いて、サーバ装置300の仮想マシン実行部130は、記憶部120の共通データ記憶部121から共通イメージファイルHを読み込む(ステップS407)。続いて、仮想マシン実行部130は、共通イメージファイルHを用いて、端末装置400の利用者が個別に利用する個別イメージファイルPiを生成する(ステップS408)。このとき、仮想マシン実行部130は、個別イメージファイルPiを個別データ記憶部122iに格納する。
続いて、検証情報生成部341は、上記式(1)を用いて、個別イメージファイルPiから検証情報C(Pi)を生成する(ステップS409)。続いて、画像生成部350は、検証情報生成部341によって生成された検証情報C(Pi)を特定するための二次元コードが描出された画像を生成し(ステップS410)、生成した検証情報C(Pi)の二次元コードを端末装置400に送信する(ステップS411)。
続いて、検証情報生成部341は、端末装置400のユーザ識別子に対応付けて、ステップS402において生成した第1の値g及び第2の値Nと、ステップS408において生成した個別イメージファイルPiの個別識別子とをユーザ情報記憶部123に登録する(ステップS412)。
そして、端末装置400の仮想マシン利用部420は、サーバ装置300から検証情報C(Pi)の二次元コードを受信した場合に、受信した二次元コードを表示部443に表示制御する(ステップS413)。
続いて、移動体端末500の読取部510は、ユーザによる操作に従って、端末装置400の表示部443に表示された検証情報C(Pi)の二次元コードを読み取る(ステップS414)。このとき、読取部510は、読み取った二次元コードから検証情報C(Pi)を生成する。そして、読取部510は、ステップS406において読み取った二次元コードから生成した第1の値g及び第2の値Nと、ステップS414において読み取った二次元コードから生成した検証情報C(Pi)とを検証情報記憶部520に登録する(ステップS415)。
[起動処理手順]
図9は、第2の実施形態に係るネットワークシステム2による起動処理手順を示すシーケンス図である。図9に示すように、端末装置400のユーザがサーバ装置300上で仮想マシンを起動させる場合、まず、端末装置400とサーバ装置300との間でユーザ認証を行う(ステップS501)。
続いて、移動体端末500の要求部541は、所定の乱数rを生成する(ステップS502)。続いて、要求部541は、上記式(2)を用いて、乱数rから認証情報生成因子Rを生成する(ステップS503)。そして、要求部541は、生成した認証情報生成因子Rを表示部530に表示制御する(ステップS504)。
そして、端末装置400は、移動体端末500のユーザから認証情報生成因子Rの入力を受け付ける(ステップS505)。例えば、移動体端末500のユーザは、端末装置400の入力部(図示しないキーボードやマウス等)を用いて、表示部530に表示されている認証情報生成因子Rを端末装置400に入力する。そして、端末装置400の要求部441は、ユーザから入力された認証情報生成因子Rをサーバ装置300に送信する(ステップS506)。
そして、サーバ装置300の認証情報生成部342は、端末装置400から認証情報生成因子Rを受信する(ステップS507)。続いて、認証情報生成部342は、上記式(3)を用いて、認証情報生成因子Rと端末装置400に対応する個別イメージファイルPiとから認証情報R(Pi)を生成する(ステップS508)。
続いて、画像生成部350は、認証情報生成部342によって生成された認証情報R(Pi)の二次元コードを生成する(ステップS509)。続いて、画像生成部350は、認証情報R(Pi)の二次元コードを端末装置400に送信する(ステップS510)。
そして、端末装置400の仮想マシン利用部420は、サーバ装置300から認証情報R(Pi)の二次元コードを受信した場合に、受信した二次元コードを表示部443に表示制御する(ステップS511)。続いて、移動体端末500の読取部510は、ユーザによる操作に従って、端末装置400の表示部443に表示された二次元コードを読み取る(ステップS512)。このとき、読取部510は、読み取った二次元コードから認証情報R(Pi)を生成する。
そして、移動体端末500の判定部542は、読取部510により読み取られた認証情報R(Pi)と、検証情報記憶部520に記憶されている検証情報C(Pi)とを用いて、認証情報R(Pi)の正当性を判定する(ステップS513)。かかる判定処理は、図5のステップS209に示した処理と同様である。
そして、判定部542は、認証情報R(Pi)が正しくない場合には(ステップS513否定)、仮想マシンを前回停止してから個別イメージファイルPiに対して不正な改竄等が行われたと判定し、かかる判定結果を表示部530に表示する(ステップS514)。これにより、移動体端末500及び端末装置400のユーザは、サーバ装置300上で仮想マシンを起動することを中止することができる。
一方、判定部542は、認証情報R(Pi)が正しい場合には(ステップS513肯定)、仮想マシンを前回停止してから個別イメージファイルPiに対して不正な改竄等が行われていないと判定し、かかる判定結果を表示部530に表示する(ステップS515)。続いて、計算部540は、判定部542による判定処理が終了したので、ステップS503において生成した認証情報生成因子Rと、ステップS512において読み取った認証情報R(Pi)とを削除する(ステップS516)。
そして、移動体端末500及び端末装置400のユーザは、表示部530に表示されている表示結果に応じて、サーバ装置300上で仮想マシンを利用できると判断することとなる。かかる場合に、ユーザは、サーバ装置300に起動指示を送信するよう端末装置400に入力する(ステップS517)。そして、端末装置400の仮想マシン利用部420は、ユーザによる操作に従って、サーバ装置300に仮想マシンの起動指示を送信する(ステップS518)。
そして、サーバ装置300の仮想マシン実行部130は、端末装置400から仮想マシンの起動指示を受信する(ステップS519)。続いて、計算部340は、端末装置400による判定処理が終了したので、ステップS507において受信した認証情報生成因子Rと、ステップS508において生成した認証情報R(Pi)とを削除する(ステップS520)。
そして、仮想マシン実行部130は、共通データ記憶部121に記憶されている共通イメージファイルHと、個別データ記憶部122iに記憶されている個別イメージファイルPiとを用いて、仮想マシンを起動する(ステップS521)。これにより、端末装置400のユーザは、サーバ装置300に記憶されている仮想マシンのイメージファイルの完全性を確認した後に、サーバ装置300上で仮想マシンを起動させることができる。
[停止処理手順]
図10は、第2の実施形態に係るネットワークシステム2による停止処理手順を示すシーケンス図である。図10に示すように、端末装置400の仮想マシン利用部420は、ユーザによる操作に従って、サーバ装置300に対して、仮想マシンの停止指示を送信する(ステップS601)。
そして、サーバ装置300の仮想マシン実行部130は、端末装置400から仮想マシンの停止指示を受信する(ステップS602)。かかる場合に、仮想マシン実行部130は、仮想マシンを停止させる(ステップS603)。これにより、仮想マシン実行部130は、個別イメージファイルPiに各種更新情報を書き込む処理を終了し、個別イメージファイルを確定させる(ステップS604)。ここでは、更新後の個別イメージファイルを個別イメージファイルPi+1とする。
続いて、検証情報生成部341は、上記式(6)を用いて、更新後の個別イメージファイルPi+1から新たな検証情報C(Pi+1)を生成する(ステップS605)。画像生成部350は、検証情報生成部341によって生成された検証情報C(Pi+1)を特定するための二次元コードが描出された画像を生成し(ステップS606)、生成した検証情報C(Pi+1)の二次元コードを端末装置400に送信する(ステップS607)。
そして、端末装置400の仮想マシン利用部420は、サーバ装置300から検証情報C(Pi+1)の二次元コードを受信した場合に、受信した二次元コードを表示部443に表示制御する(ステップS608)。
続いて、移動体端末500の読取部510は、ユーザによる操作に従って、端末装置400の表示部443に表示された検証情報C(Pi+1)の二次元コードを読み取る(ステップS609)。このとき、読取部510は、読み取った二次元コードから検証情報C(Pi+1)を生成する。そして、読取部510は、検証情報記憶部520に記憶されている検証情報C(Pi)を、ステップS609において読み取った二次元コードから生成した検証情報C(Pi+1)に更新する(ステップS610)。そして、読取部510は、検証情報の更新結果を表示部530に表示する(ステップS611)。
そして、移動体端末500及び端末装置400のユーザは、表示部530に表示されている検証情報の更新結果を端末装置400に入力する(ステップS612)。そして、端末装置400の仮想マシン利用部420は、ユーザによる操作に従って、サーバ装置300に検証情報の更新結果を送信する(ステップS613)。
そして、サーバ装置300の仮想マシン実行部130は、端末装置400から更新結果を受信する(ステップS614)。続いて、仮想マシン実行部130は、端末装置400から受信した更新結果が成功を示すか否かを判定する(ステップS615)。この後のステップS615〜S619における処理手順は、図6に示したステップS311〜S315における処理手順と同様であるので、ここでは説明を省略する。
[第2の実施形態の効果]
上述してきたように、第2の実施形態に係るネットワークシステム2において、移動体端末500が、検証情報を保持し、個別イメージファイルの完全性を判定する。これにより、移動体端末500を保持するユーザは、任意の端末装置400において、サーバ装置300上の仮想マシンを利用することが可能になる。例えば、ユーザは、自宅のPCからサーバ装置300上の仮想マシンを利用する場合、移動体端末500と自宅のPCとを用いて、完全性判定処理を行った後に、自宅のPCから仮想マシンを利用することができる。また、かかるユーザは、会社のPCからサーバ装置300上の仮想マシンを利用する場合においても、移動体端末500と会社のPCとを用いて、完全性判定処理を行った後に、会社のPCから仮想マシンを利用することができる。
また、第2の実施形態に係るネットワークシステム2において、サーバ装置300は、移動体端末500が読み取り可能な二次元コードを生成する。これにより、ユーザは、検証情報や認証情報を容易に移動体端末500に保存することができる。
(第3の実施形態)
上述したネットワークシステム1及び2は、上記実施形態以外にも種々の異なる形態にて実施されてよい。そこで、第3の実施形態では、上記のネットワークシステム1及び2の他の実施形態について説明する。
[判定対象のデータ]
上記実施形態では、仮想マシンのイメージファイルの完全性を判定する例について説明した。しかし、上述してきたネットワークシステム1及び2は、イメージファイルだけでなく、他のデータ(ファイル等)の完全性を判定する場合についても適用することができる。例えば、ファイルサーバが各ユーザの各種データを保持している場合に、かかるファイルサーバは、各ユーザが利用するデータから、複数のユーザに共通する共通データを除いた個別データを用いて検証情報等を生成することで、上記実施形態における完全性判定処理と同様の処理を実現することができる。
[共通イメージファイル]
また、上記実施形態において、記憶部120には、1つの共通データ記憶部121が存在する例を示したが、記憶部120は、複数の共通イメージファイルを記憶してもよい。例えば、記憶部120は、所定のユーザグループG1に対応する共通イメージファイルF1を記憶するとともに、所定のユーザグループG2に対応する共通イメージファイルF2を記憶してもよい。そして、仮想マシン実行部130は、各ユーザが属するユーザグループに対応する共通イメージファイルを用いて、個別イメージファイルを生成する。
[初期処理]
また、上記実施形態では、図4や図8に示したように、サーバ装置側から端末装置200や移動体端末500に第1の値、第2の値及び検証情報を送信する例を示した。しかし、第1の値、第2の値及び検証情報が記憶された媒体を郵送等によってユーザに届ける形態であってもよい。
[第2の値N]
また、上記実施形態において、計算部140や340は、剰余演算における除数に用いられる「第2の値N」を、因数分解が困難である値にしてもよい。これにより、剰余を予測することが困難となり、安全性を向上させることができる。
[システム構成]
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
例えば、第2の実施形態において、移動体端末500と端末装置400とは、メール送信等によって各種情報を送受してもよい。例えば、移動体端末500は、図9のステップS504において、電子メールにより認証情報生成因子Rを端末装置400に送信してもよい。このとき、端末装置400は、移動体端末500から受信した認証情報生成因子Rをサーバ装置300に送信する。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
例えば、図1に示した例では、端末装置200が、仮想マシン利用部220とは別に計算部240を有する例を示したが、仮想マシン利用部220が計算部240を有してもよい。同様に、図7に示した仮想マシン利用部420は要求部441を有してもよい。
[プログラム]
また、上記実施形態において説明したサーバ装置100及び300や端末装置200及び400が実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。例えば、サーバ装置100が実行する処理をコンピュータが実行可能な言語で記述した認証プログラムを作成することもできる。この場合、コンピュータが認証プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかる認証プログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録された認証プログラムをコンピュータに読み込ませて実行することにより上記実施形態と同様の処理を実現してもよい。以下に、一例として、図1に示したサーバ装置100と同様の機能を実現する認証プログラムを実行するコンピュータの一例を説明する。
図11は、認証プログラムを実行するコンピュータ1000を示す図である。図11に例示するように、コンピュータ1000は、例えば、メモリ1010と、CPU1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有し、これらの各部はバス1080によって接続される。
メモリ1010は、図11に例示するように、ROM(Read Only Memory)1011及びRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、図11に例示するように、ハードディスクドライブ1031に接続される。ディスクドライブインタフェース1040は、図11に例示するように、ディスクドライブ1041に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブに挿入される。シリアルポートインタフェース1050は、図11に例示するように、例えばマウス1051、キーボード1052に接続される。ビデオアダプタ1060は、図11に例示するように、例えばディスプレイ1061に接続される。
ここで、図11に例示するように、ハードディスクドライブ1031は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093、プログラムデータ1094を記憶する。すなわち、上記の認証プログラムは、コンピュータ1000によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ1031に記憶される。例えば、図1に例示した仮想マシン実行部130と同様の情報処理を実行する仮想マシン実行手順と、検証情報生成部141と同様の情報処理を実行する検証情報生成手順と、認証情報生成部142と同様の情報処理を実行する認証情報生成手順とが記述されたプログラムモジュール1093が、ハードディスクドライブ1031に記憶される。
また、上記実施形態で説明した記憶部120が保持する各種データは、プログラムデータとして、例えばメモリ1010やハードディスクドライブ1031に記憶される。そして、CPU1020が、メモリ1010やハードディスクドライブ1031に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出し、仮想マシン実行手順、検証情報生成手順、認証情報生成手順を実行する。
なお、認証プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1031に記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ等を介してCPU1020によって読み出されてもよい。あるいは、認証プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。