本実施形態では、サーバ装置とクライアント装置が双方向通信プロトコルに従って接続を確立し、サーバ装置が認証情報を含む認証画像を生成し、接続の維持のための通信により認証画像をクライアント装置へ送信し、クライアント装置が認証画像を保存する。更にサーバ装置が認証画像を含む処理要求をクライアント装置へ送信した場合、クライアント装置は処理要求に含まれた認証画像を認証し、認証に成功すると処理要求に応じた処理を実行する。これにより、クライアント装置及びサーバ装置が安全且つ容易に双方向通信を行うことができる。
本実施形態は、携帯情報端末(携帯電話、スマートフォン、カメラ、パーソナルコンピュータ等を含む)、LAN(Local Area Network)、電気機器(洗濯機、空調機等を含む)、ゲーム機、マルチメディア機器(TV、メディアプレーヤ等を含む)、記憶装置(NAS:Network Attached Storage、メディアサーバ等を含む)、車内ネットワーク(カーナビゲーション装置等を含む)等、ネットワークを用いるシステムに適用されても良い。
図1は、実施形態の通信システムの構成を示すブロック図である。
この通信システムは、無線LANアクセスポイント100と、サーバ装置200と、クライアント装置300a、300bとを有する。無線LANアクセスポイント100は、サーバ装置200やクライアント装置300a、300bとの無線通信の機能に加えて、LANスイッチの機能を有する。更に無線LANアクセスポイント100は、インターネット等の外部ネットワーク400を介して、外部サーバ500に接続されている。サーバ装置200及びクライアント装置300a、300bの夫々は、無線LANアクセスポイント100のサービスエリア内に位置し、無線LANアクセスポイント100との無線通信により無線LANに接続する。サーバ装置200とクライアント装置300の双方向通信中において、サービスエリア内のサーバ装置200の数は、1以上である。なお、サーバ装置200がサービスエリア外からサービスエリア内へ移動することや起動することなど、サーバ装置200の状態変化により、無線LANに接続するサーバ装置200の数が増加しても良い。また、サーバ装置200がサービスエリア内からサービスエリア外へ移動することやシャットダウンすることなど、サーバ装置200の状態変化により、無線LANに接続するサーバ装置200の数が減少しても良い。サーバ装置200とクライアント装置300の双方向通信中において、サービスエリア内のクライアント装置300の数は1以上である。なお、クライアント装置300がサービスエリア外からサービスエリア内へ移動することや起動することなど、クライアント装置300の状態変化により、無線LANに接続するクライアント装置300の数が増加しても良い。また、クライアント装置300がサービスエリア内からサービスエリア外へ移動することやシャットダウンすることなど、クライアント装置300の状態変化により、無線LANに接続するクライアント装置300の数が減少しても良い。通信システムは、外部ネットワーク400に接続されていなくても良い。サーバ装置200が無線LANアクセスポイント100を有していても良い。サーバ装置200及びクライアント装置300の何れかは、無線LANの代わりに有線のネットワークに接続されていても良い。
以下の説明において、符号のアルファベットによって要素を区別する必要がない場合、アルファベットを省略することがある。
図2は、サーバ装置200及びクライアント装置300の構成を示すブロック図である。
サーバ装置200は、制御部210と、UI(User Interface)部220と、通信部230と、記憶部240とを有する。制御部210は、サーバ装置200の制御を行う。UI部220は、ユーザによる操作に基づく情報を制御部210へ出力し、制御部210から出力される情報を表示する。通信部230は、無線通信により無線LANアクセスポイント100との通信を行う。制御部210は、通信部230及び無線LANを介してクライアント装置300と通信する。
サーバ装置200は、例えばコンピュータにより実現される。制御部210は、例えばCPU(Central Processing Unit)等のマイクロプロセッサである。記憶部240は、例えばメモリである。メモリは、制御部210のためのプログラム及びデータを格納する。マイクロプロセッサは、メモリ内のプログラム及びデータを用いて制御部210の処理を実行する。
制御部210は、Webサーバ処理部410と、認証処理部420と、グループ処理部430とを有する。Webサーバ処理部410は、Webサーバを実行する。Webサーバ処理部410は、通信部230を介して、Webコンテンツをクライアント装置300へ提供する。本実施形態のWebコンテンツは、HTML5に従う。また、Webサーバ処理部410は、双方向通信プロトコルであるWebSocketを用いてクライアント装置300との双方向通信を行う。また、Webサーバ処理部410は、クライアント装置300に特定の処理を実行させるためのWebブラウザ制御プログラムを含むWebコンテンツをクライアント装置300へ送信する。認証処理部420は、認証画像を生成し、クライアント装置300から受信した認証画像に基づいて、クライアント装置300を認証する。
グループ処理部430は、無線LAN内の機器のグループを示すグループ情報を管理する。機器は、サーバ装置200及びクライアント装置300の少なくとも何れかを含む。グループの数は、一つであっても良いし、複数であっても良い。グループ情報は、グループを示すグループ識別情報と、当該グループに割り当てられた画像であるグループ画像と、当該グループに属する機器の識別情報とを含む。機器は、複数の種類のグループに属しても良い。複数の種類のグループは例えば、家庭内の機器だけを含むグループと、来客が携帯する機器を含むグループとである。グループ情報は、グループ内のマスタを示す情報を含んでも良い。マスタの機器は、グループ情報を取得してグループ内の機器の一覧を表示することや、グループ情報を設定すること等の機能を有する。この機能は、Webブラウザ制御プログラムにより実行されても良い。なお、前述のサーバ装置200を第1のサーバ装置とし、第1のサーバ装置が接続されている無線LANに第2のサーバ装置が接続されている場合、第2のサーバ装置は、第1のサーバ装置と別のグループを管理しても良い。
クライアント装置300は、制御部310と、UI部320と、通信部330と、記憶部340とを有する。制御部310は、クライアント装置300の制御を行う。UI部320は、ユーザによる操作に基づく情報を制御部310へ出力し、制御部310から出力される情報を表示する。通信部330は、無線通信により無線LANアクセスポイント100との通信を行う。制御部310は、通信部330及び無線LANを介してサーバ装置200と通信する。
クライアント装置300は、例えばコンピュータにより実現される。制御部310は、例えばCPU等のマイクロプロセッサである。記憶部340は、例えばメモリである。メモリは、制御部310のためのプログラム及びデータを格納する。マイクロプロセッサは、メモリ内のプログラム及びデータを用いて制御部310の処理を実行する。
サーバ装置200のためのプログラム、及びクライアント装置300のためのプログラムの夫々は、コンピュータ読み取り可能な媒体に格納され、その媒体からコンピュータへ読み出されても良い。
制御部310は、Webブラウザ処理部510と、サービス検出処理部520と、アプリケーション処理部530とを有する。Webブラウザ処理部510は、Webブラウザを実行し、通信部330を用いてサーバ装置200と通信することにより、サーバ装置200により提供されるWebコンテンツを利用する。また、Webブラウザ処理部510は、サーバ装置200からWebコンテンツを受信し、WebコンテンツをUI部320に表示させる。更にWebブラウザ処理部510は、Webコンテンツに従ってUI部320への入力を受け付け、入力された情報をサーバ装置200へ送信する。更にWebブラウザ処理部510は、クライアント装置300に保存されWebブラウザにより管理される情報である管理情報を保存する。管理情報は例えば、履歴情報(Web History)である。Webブラウザ処理部510は、受信したWebコンテンツの履歴を履歴情報へ保存する。アプリケーション処理部530は、クライアント装置300における機能を実行し、Webブラウザ処理部510との間で情報を入出力する。サービス検出処理部520は、Webブラウザ処理部510に含まれていても良い。
Webブラウザ制御プログラムは、Webブラウザ処理部510に制御処理を実行させる。制御処理は、サーバ装置200から受信した認証画像に基づいてサーバ装置200を認証する処理等である。この制御処理は、Webブラウザの履歴情報へ認証画像を書き込む処理、履歴情報から認証画像を読み出す処理、認証画像に埋め込まれた認証情報を取得する処理、二つの認証情報を比較する処理等を含む。Webブラウザ制御プログラムは、例えばECMAScript等のスクリプト言語により記述される。また、制御処理は、例えばHTML5におけるcanvasを用いて、認証画像を処理する。
以下、サーバ装置200とクライアント装置300との間の双方向通信の動作について説明する。
まず、双方向通信のために、ログイン処理と接続処理が実行される。
以下、ログイン処理について説明する。
ログイン処理において、クライアント装置300は、無線LANネットワーク内のサーバ装置200を検出し、検出したサーバ装置200へログインする。
図3は、ログイン処理を示すシーケンス図である。
この図は、サーバ装置200及び複数のクライアント装置300(クライアント装置300a、300b)の動作を示す。
クライアント装置300aのサービス検出処理部520は、サーバ装置200を検出するためのディスカバリ情報を無線LANへ送信する(S110)。ディスカバリ情報は例えば、HTTP(Hypertext Transfer Protocol)ブロードキャストにより送信されるサービスディスカバリ情報である。ディスカバリ情報は、クライアント装置300aの識別情報を含む。この識別情報は例えば、IPアドレスである。
クライアント装置300bは、ディスカバリ情報を受信しても応答しない。
サーバ装置200においてWebサーバ処理部410は、ディスカバリ情報を受信すると、ログイン画面を表示させるWebコンテンツである受付コンテンツを生成し、受付コンテンツをクライアント装置300aへ送信する(S120)。ログイン画面については後述する。受付コンテンツは、サーバ装置200の識別情報を含む。この識別情報は例えば、IPアドレスである。
クライアント装置300aにおいて、Webブラウザ処理部510は、受付コンテンツを受信し、受付コンテンツに基づいてログイン画面を表示する(S130)。その後、Webブラウザ処理部510は、ログイン画面に対するユーザによる選択を受け付け、選択された情報を示す選択情報をサーバ装置200へ送信する(S140)。
サーバ装置200において、Webサーバ処理部410は、選択情報を受信し、選択情報が正当であるか否かを判定する(S150)。選択情報が不当であると判定された場合、Webサーバ処理部410は、ログイン拒否を示す拒否応答をクライアント装置300aへ送信する。選択情報が正当であると判定された場合、Webサーバ処理部410は、ログイン成功を示すログイン成功情報をクライアント装置300aへ送信する(S160)。ログイン成功情報は、サーバ装置200の識別情報を含む。
以上がログイン処理である。この処理によれば、クライアント装置300は、同一の無線LANに接続されているサーバ装置200を検出し、その無線LAN内の機器のグループへ加入することができる。
前述の受付コンテンツと、ログイン成功情報とのうち、少なくとも何れかはWebブラウザ制御プログラムを含む。Webブラウザ制御プログラムは、後述の接続処理、クライアント要求処理、サーバ要求処理、再接続処理、認証画像更新処理を、Webブラウザ処理部510に実行させる。なお、接続処理、クライアント要求処理、サーバ要求処理、再接続処理、認証画像更新処理において、Webブラウザ処理部510が実行可能な処理については、Webブラウザ制御プログラムを用いなくても良い。
以下、ログイン画面の詳細について説明する。
予めサーバ装置200の管理者は、サーバ装置200に対し特定グループを指定し、クライアント装置300aのユーザへ特定グループのグループ画像である特定画像の内容を通知する。通知の方法は、管理者からユーザへ口頭で伝えても良いし、サーバ装置200や特定グループに属する他のクライアント装置300に、特定画像を表示させても良い。また、クライアント装置300aのユーザは、サーバ装置200の管理者と同一人物であっても良い。
図4は、ログイン画面を示す図である。
ログイン画面は、ユーザによる入力の選択肢として、互いに異なる複数の候補画像610a、610b、610cを含む。例えば、候補画像610aは、特定画像である。候補画像610b、610cは、他の画像である。Webサーバ処理部410は、ログイン画面における各候補画像の配置をランダムに決定する。受付コンテンツは、複数の候補画像の夫々の識別情報を含み、ユーザによる候補画像の選択を受け付け、選択された候補画像の識別情報を選択情報としてサーバ装置200へ送信させる。
例えば、クライアント装置300aのUI部320は、複数の候補画像を表示してそれらの一つへのタッチを受け付けるタッチパネルである。また、例えば、UI部320は、複数の候補画像を表示する表示部と表示部に表示される各候補画像に対応するボタンとの組み合わせ等を有する。
特定画像の内容は、予めユーザに通知される。ユーザにより候補画像610aが選択された場合、Webサーバ処理部410は、選択情報が正当であると判定する。ユーザにより候補画像610b又は候補画像610cが選択された場合、Webサーバ処理部410は、選択情報が不当であると判定する。
複数の候補画像が互いに異なる複数のグループ画像を含んでいても良い。例えば、候補画像610aが第1グループのグループ画像であり、候補画像610bが第2グループのグループ画像であり、候補画像610cがグループ画像でない画像であっても良い。この場合、サーバ装置200は、ログイン画面においてユーザにより選択された候補画像に応じて、クライアント装置300aが属する特定グループを決定しても良い。ここで、ユーザにより候補画像610aが選択された場合、Webサーバ処理部410は、選択情報が正当であると判定し、特定グループが第1グループであると判定する。また、ユーザにより候補画像610bが選択された場合、Webサーバ処理部410は、選択情報が正当であると判定し、特定グループが第2グループであると判定する。また、ユーザにより候補画像610cが選択された場合、Webサーバ処理部410は、選択情報が不当であると判定する。
従来のログイン画面は、ユーザがキーボード等の文字入力専用の入力デバイスを用いてユーザID及びパスワードを入力することを必要とする場合が多い。本実施形態のログイン画面によれば、クライアント装置300のUI部320が、キーボード等の文字入力専用の入力デバイスを有していない場合であっても、ユーザは容易に入力を行うことができる。これにより、洗濯機や空調機等のようにキーボードを有していない電気機器に対しても、クライアント装置300を適用することができる。また、本実施形態のログイン画面は、複数のグループの中の一つへのログインに対応することができる。
以下、接続処理について説明する。
ログイン処理が成功すると、サーバ装置200のWebサーバ処理部410とクライアント装置300aのWebブラウザ処理部510との間のWebSocket接続を確立するための接続処理が実行される。
図5は、接続処理を示すシーケンス図である。
クライアント装置300aにおいて、Webブラウザ処理部510はログイン成功情報の受信に応じて、WebSocket接続要求(ハンドシェイク要求)をサーバ装置200へ送信する(S210)。
サーバ装置200において、Webサーバ処理部410は、WebSocket接続要求を受信すると、WebSocket接続を確立する(S220)。その後、Webサーバ処理部410は、接続要求に対する応答をクライアント装置300aへ送信する(S230)。
その後、Webサーバ処理部410は、グループ処理部430に対し特定画像の取得を指示する(S310)。グループ処理部430は、指示に従って特定画像をWebサーバ処理部410へ出力する(S320)。その後、Webサーバ処理部410は、認証画像の生成を認証処理部420に指示し、取得した特定画像を認証処理部420へ出力する(S330)。認証処理部420は、Webサーバ処理部410からの指示に従って、キーを決定し、ハッシュ関数を用いてキーからハッシュ値を算出して認証情報とする(S340)。認証処理部420は、例えば、特定画像の一部、クライアント装置300aの識別情報、特定グループの識別情報、時刻、ランダム値等に基づいてキーを決定する。その後、認証処理部420は、ステガノグラフィ技術を用いて、特定画像へ認証情報を埋め込むことにより認証画像を生成し、認証画像をWebサーバ処理部410へ出力する(S350)。例えば、特定画像の各画素が24bitカラーで表されており、認証情報が8bitで表されている場合、認証処理部420は、特定画像の各画素を16bitへ間引き、残りの8bitに認証情報を配置することにより認証画像を生成する。このようなステガノグラフィ技術を用いることにより、人が認証画像を見ても特定画像と区別することができない。
その後、Webサーバ処理部410は、グループ処理部430に対し認証画像の登録を指示する(S360)。グループ処理部430は、指示に従って、認証画像を登録認証画像として、特定グループのグループ情報へ登録し、クライアント装置300aの識別情報を当該グループ情報へ登録する(S370)。
その後、Webサーバ処理部410は、ピンポンシーケンスとして、登録認証画像を含むpingフレームをクライアント装置300aへ送信する(S420)。
クライアント装置300aにおいて、Webブラウザ処理部510は、pingフレームを受信すると、受信したpingフレームに含まれる登録認証画像を保存認証画像として履歴情報へ保存し(S430)、pongフレームをサーバ装置200へ送信する(S440)。なお、管理情報は、Web Storageであっても良い。Webブラウザ処理部510は、履歴情報以外の管理情報へ保存認証画像を保存しても良い。
以上が、接続処理である。この処理によれば、認証情報を画像に埋め込むことにより、認証情報を隠蔽することができる。更に認証画像を他のWebコンテンツ内の画像と同様に履歴情報へ保存することにより、クッキー(HTTP cookie)や、隠しキーワード等へ認証情報を保存する方法に比べて、認証情報が発見されにくくなる。従って、双方向通信のセキュリティを高めることができる。
また、WebSocket接続が確立されることにより、サーバ装置200とクライアント装置300aは、双方向通信を行うことができる。これにより、TCP/IPに独自のプロトコルを用いる場合に比べて、ヘッダが少なく遅延時間の少ない双方向通信を行うことができ、サーバ装置200、クライアント装置300a、無線LANへの負荷を低減することができる。
認証画像のデータサイズは、pingフレームに含めることができるデータサイズの上限以下である。例えば、認証画像は、サムネイル程度の画像である。
なお、WebSocket接続による双方向通信は、暗号化されても良い。
接続処理の後、サーバ装置200及びクライアント装置300aは、例えば、定期的にピンポンシーケンスを行うことにより、WebSocket接続を維持する。
なお、特定グループのグループ情報に複数のクライアント装置300の識別情報が登録された場合、特定グループに属する複数のクライアント装置300の夫々は、サーバ装置200とのWebSocket接続を確立する。特定グループに属する複数のクライアント装置300は、サーバ装置200とのWebSocket接続を介して、互いに通信しても良い。また、特定グループに属するクライアント装置300は、特定グループに属していないクライアント装置300と通信することができない。特定グループに属する複数のクライアント装置300は、同一の認証情報及び認証画像を用いても良い。
WebSocket接続中、クライアント装置300aは、サーバ装置200による特定の処理である特定サーバ処理を要求するクライアント要求処理を実行することができる。また、WebSocket接続中、サーバ装置200は、クライアント装置300aによる特定の処理である特定クライアント処理を要求するサーバ要求処理を実行することができる。
以下、WebSocket接続中のクライアント要求処理について説明する。
クライアント装置300aのWebブラウザ処理部510は、所定の条件が満たされると、Webブラウザ制御プログラムに従って、クライアント要求処理を実行する。ここでWebブラウザ処理部510は、定期的にクライアント要求処理を実行しても良いし、クライアント装置300aのユーザからの入力を取得し、入力に応じてクライアント要求処理を実行しても良い。サーバ装置200のWebサーバ処理部410は、クライアント装置300aからの要求に応じてクライアント要求処理を実行する。
図6は、クライアント要求処理を示すシーケンス図である。
Webブラウザ処理部510は、履歴情報から保存認証画像を取得する(S620)。その後、Webブラウザ処理部510は、保存認証画像と特定サーバ処理の内容とを含み特定サーバ処理を要求する特定サーバ処理要求を、WebSocket接続によりサーバ装置200へ送信する(S630)。
サーバ装置200において、Webサーバ処理部410は、特定サーバ処理要求を受信すると、グループ処理部430に対し特定グループの登録認証画像の取得を指示する(S640)。グループ処理部430は、指示に従って、特定グループの登録認証画像を取得し、Webサーバ処理部410へ出力する(S650)。その後、Webサーバ処理部410は、特定サーバ処理要求から認証画像を取得してクライアント認証画像とし、クライアント認証画像の認証を認証処理部420に指示する(S710)。その後、認証処理部420は、クライアント認証画像及び登録認証画像に基づいて、クライアント認証画像を認証し(S720)、認証結果をWebサーバ処理部410へ出力する(S730)。ここで認証処理部420は、クライアント認証画像に埋め込まれた認証情報と、登録認証画像に埋め込まれた認証情報とを比較し、二つの認証情報が一致する場合に、クライアント認証画像が正当であると判定し、そうでない場合に、クライアント認証画像が不当であると判定する。なお、認証処理部420は、クライアント認証画像と登録認証画像を比較し、クライアント認証画像が登録認証画像に一致する場合に、クライアント認証画像が正当であると判定しても良い。
クライアント認証画像が不当であると判定された場合、Webサーバ処理部410は、特定サーバ処理を実行しない。クライアント認証画像が正当であると判定された場合、Webサーバ処理部410は、特定サーバ処理を実行し(S740)、特定サーバ処理の処理結果を、特定サーバ処理要求に対する応答としてクライアント装置300aへ送信する(S750)。なお、Webサーバ処理部410は、特定サーバ処理の処理結果をクライアント装置300aへ送信しなくても良い。
以上がクライアント要求処理である。この処理によれば、WebSocket接続中、クライアント装置300aは、サーバ装置200に特定サーバ処理を実行させることができる。また、サーバ装置200は、クライアント装置300aから受信した認証画像を用いてクライアント装置300aを認証することができる。
以下、WebSocket接続中のサーバ要求処理について説明する。
サーバ装置200のWebサーバ処理部410は、所定の条件が満たされると、サーバ要求処理を実行する。ここでWebサーバ処理部410は、定期的にサーバ要求処理を実行しても良いし、サーバ装置200の管理者からの入力に応じてサーバ要求処理を実行しても良い。クライアント装置300aのWebブラウザ処理部510は、Webブラウザ制御プログラムに従い、サーバ装置200からの要求に応じてサーバ要求処理を実行する。
図7は、サーバ要求処理を示すシーケンス図である。
Webサーバ処理部410は、グループ処理部430に対しクライアント装置300aに対応する登録認証画像の取得を指示する(S820)。グループ処理部430は、指示に従って登録認証画像を取得する(S830)。その後、Webサーバ処理部410は、取得した認証画像と特定クライアント処理の内容とを含み特定クライアント処理を要求する特定クライアント処理要求を、WebSocket接続によりクライアント装置300aへ送信する(S840)。
クライアント装置300aにおいて、Webブラウザ処理部510は、特定クライアント処理要求を受信すると、履歴情報から保存認証画像を取得する(S850)。その後、Webブラウザ処理部510は、受信した特定クライアント処理要求から認証画像を取得してサーバ認証画像とし、サーバ認証画像及び保存認証画像に基づいて、サーバ認証画像を認証する(S860)。ここでWebブラウザ処理部510は、サーバ認証画像に埋め込まれた認証情報と、保存認証画像に埋め込まれた認証情報とを比較し、二つの認証情報が一致する場合に、サーバ認証画像が正当であると判定し、そうでない場合に、サーバ認証画像が不当であると判定する。なお、Webブラウザ処理部510は、サーバ認証画像と保存認証画像を比較し、サーバ認証画像が保存認証画像に一致する場合に、サーバ認証画像が正当であると判定しても良い。
サーバ認証画像が不当であると判定された場合、Webブラウザ処理部510は、特定クライアント処理を実行しない。サーバ認証画像が正当であると判定された場合、Webブラウザ処理部510は、特定クライアント処理を実行し(S870)、特定クライアント処理の結果を、特定クライアント処理要求に対する応答としてサーバ装置200へ送信する(S880)。なお、Webブラウザ処理部510は、特定クライアント処理の処理結果をサーバ装置200へ送信しなくても良い。
以上がサーバ要求処理である。この処理によれば、WebSocket接続中、サーバ装置200は、クライアント装置300aに特定クライアント処理を実行させることができる。また、クライアント装置300aは、サーバ装置200から受信した認証画像を用いてサーバ装置200を認証することができる。
特定サーバ処理要求、特定サーバ処理要求に対する応答、特定クライアント処理要求、特定クライアント処理要求に対する応答の夫々は、WebSocketにおけるDataフレームを用いて送信される。その内容は、テキスト又はバイナリである。
以下、WebSocket接続が切断された後の再接続処理について説明する。
サーバ装置200とクライアント装置300aの間のWebSocket接続が確立された後、定期的なピンポンシーケンスが途絶えると、WebSocket接続は切断される。例えば、クライアント装置300aが無線LANアクセスポイント100のサービスエリア外へ移動する場合や、クライアント装置300aがシャットダウンする場合等により、ピンポンシーケンスが途絶える。例えば、サーバ装置200は、pingフレームの送信から所定の応答時間内にpongフレームを受信した場合に、WebSocket接続を維持し、そうでない場合に、WebSocket接続を切断する。例えば、クライアント装置300aは、前回のpingフレームの受信から所定の受信期間内にpingフレームを受信した場合に、WebSocket接続を維持し、そうでない場合に、WebSocket接続を切断する。
その後、クライアント装置300aが所定の状態になると、Webブラウザ処理部510は、Webブラウザ制御プログラムに従って再接続処理を実行する。所定の状態は例えば、クライアント装置300aが電源断の状態から起動した場合や、クライアント装置300aが無線LANアクセスポイント100のサービスエリア外からサービスエリア内へ移動して無線LANへ接続した場合等である。言い換えれば、所定の状態は、クライアント装置300aとサーバ装置200との通信が不可能な状態から通信が可能な状態に遷移した場合である。
図8は、再接続処理を示すシーケンス図である。
クライアント装置300aが起動されると(S510)、Webブラウザ処理部510は、履歴情報から保存認証画像を検索して取得する(S520)。その後、Webブラウザ処理部510は、保存認証画像を含みWebSocket接続の再接続を要求する再接続要求をサーバ装置200へ送信する(S530)。
サーバ装置200において、Webサーバ処理部410は、再接続要求を受信すると、再接続要求に含まれる保存認証画像をクライアント認証画像とし、クライアント要求処理のS640、S650、S710、S720、S730と同様の処理により、クライアント認証画像を認証する。
クライアント認証画像が不当であると判定された場合、Webサーバ処理部410は、WebSocket接続を確立しない。クライアント認証画像が正当であると判定された場合、Webサーバ処理部410は、WebSocket接続を確立し、認証結果を応答としてクライアント装置300aへ送信する(S910)。
以上が再接続処理である。この処理によれば、WebSocket接続が切断された場合でも、WebSocket接続中の認証画像を用いてWebSocket接続を確立することにより、接続処理に比べて処理を短縮することができる。
以下、WebSocket接続中の認証画像更新処理について説明する。
サーバ装置200は、WebSocket接続中、所定の更新条件が満たされると、認証画像を更新する認証画像更新処理を実行する。所定の更新条件は、ピンポンシーケンスの実行であっても良いし、前回の認証画像の生成から所定の更新時間が経過したことであっても良い。クライアント装置300aのWebブラウザ処理部510は、Webブラウザ制御プログラムに従い、サーバ装置200からのpingフレームに応じて認証画像更新処理を実行する。
図9は、認証画像更新処理を示すシーケンス図である。
サーバ装置200において、Webサーバ処理部410は、グループ処理部430からクライアント装置300aに対応する登録認証画像の取得を指示する(S250)。グループ処理部430は、指示に従って登録認証画像をWebサーバ処理部410へ出力する(S260)。ここでWebサーバ処理部410は、取得した登録認証画像を旧登録認証画像とする。その後、Webサーバ処理部410、認証処理部420、グループ処理部430は、接続処理におけるS310、S320、S330、S340、S350、S360、S370と同様の処理により、新たな認証画像である更新認証画像を生成し、更新認証画像を登録認証画像として特定グループのグループ情報に登録する。ここで認証処理部420は、それまでのキーと異なるキーを決定し、決定されたキーからハッシュ値を算出して認証情報とし、特定グループのグループ画像へその認証情報を埋め込むことにより更新認証画像を生成する。これにより、グループ処理部430は、特定グループのグループ情報に格納されている登録認証画像を更新認証画像に置き換える。
その後、Webサーバ処理部410は、ピンポンシーケンスとして、旧登録認証画像と更新認証画像を含むpingフレームをクライアント装置300aへ送信する(S560)。
クライアント装置300aにおいて、Webブラウザ処理部510は、pingフレームを受信すると、受信したpingフレームから旧登録認証画像を取得してサーバ認証画像とし、サーバ要求処理におけるS850、S860と同様の処理により、サーバ認証画像を認証する。
サーバ認証画像が不当であると判定された場合、Webブラウザ処理部510は、WebSocket接続を終了する。サーバ認証画像が正当であると判定された場合、Webブラウザ処理部510は、受信したpingフレームから更新認証画像を取得し、保存認証画像として履歴情報へ保存し(S950)、pongフレームをサーバ装置200へ送信する(S960)。これにより、Webブラウザ処理部510は、履歴情報に格納されている保存認証画像を更新認証画像に置き換える。
以上が認証画像更新処理である。この処理によれば、サーバ装置200が保存している認証画像を更新し、クライアント装置300aに保存された認証画像に反映することができる。また、認証画像が盗まれた場合でも、認証画像を更新することにより、サーバ装置200又はクライアント装置300aのなりすましを防止することができる。なお、サーバ装置200は、全てのピンポンシーケンスで認証画像更新処理を実行しなくても良い。例えば、ピンポンシーケンスの周期より長い周期で認証画像更新処理を実行しても良い。
以下、通信システムの実施例について説明する。
前述の通信システムを適用した電気機器管理システムについて説明する。
図10は、電気機器管理システムの構成を示す模式図である。
電気機器管理システムは、例えば家庭内に設けられている。電気機器管理システムは、無線LANアクセスポイント100と、スマートフォン201と、複数の電気機器301と、複数のゲーム機302とを有する。電気機器301は例えば、洗濯機や空調機等である。スマートフォン201は、前述のサーバ装置200の構成を有する。電気機器301及びゲーム機302の夫々は、前述のクライアント装置300の構成を有する。スマートフォン201と、複数の電気機器301と、複数のゲーム機302とは、無線サービスエリア内に存在しているとする。電気機器301のアプリケーション処理部530は例えば、Webブラウザ処理部510との通信に基づいて電気機器301の状態の監視や制御を行う。ゲーム機302のアプリケーション処理部530は例えば、Webブラウザ処理部510との通信に基づいてゲームを実行する。
スマートフォン201の管理者は、第1グループ及び第2グループをグループ処理部430に設定する。更に管理者は、第1グループに対応する第1グループ画像と、第2グループに対応する第2グループ画像とを、グループ処理部430に設定する。
更に管理者は、複数の電気機器301の夫々を起動し、当該電気機器301のログイン処理において第1グループ画像を選択することにより、当該電気機器301を第1グループに加入させる。
ゲーム機302のユーザが家庭を訪問した場合、管理者が第2グループ画像の内容を当該ユーザに伝える。当該ユーザがゲーム機302のログイン処理において第2グループ画像を選択することにより、当該ゲーム機302は第2グループに加入する。
例えば、スマートフォン201のWebサーバ処理部410は、第1グループ内の電気機器301に対し、電気機器301の状態の監視又は電気機器301の制御を、特定クライアント処理として要求する。電気機器301のWebブラウザ処理部510は、特定クライアント処理を実行し、その結果をスマートフォン201へ送信する。また、例えば、電気機器301のWebブラウザ処理部510は、スマートフォン201に対し、特定サーバ処理として、入力された情報の処理を要求する。スマートフォン201のWebサーバ処理部410は、特定サーバ処理の結果を電気機器301へ送信する。これにより、スマートフォン201は、第1グループを管理することができる。
また、例えば、スマートフォン201のWebサーバ処理部410は、第2グループ内のゲーム機302に対し、ゲームの指示を特定クライアント処理として要求する。ゲーム機302のWebブラウザ処理部510は、特定クライアント処理を実行し、その結果をスマートフォン201へ送信する。また、例えば、ゲーム機302のWebブラウザ処理部510は、スマートフォン201に対し、ゲームのコンテンツの配信を特定サーバ処理として要求する。スマートフォン201のWebサーバ処理部410は、特定サーバ処理を実行し、その結果をゲーム機302へ送信する。これにより、スマートフォン201は、第2グループを管理することができる。
本実施例によれば、電気機器管理システムは、一つの無線LANに接続されている機器を容易に、電気機器301のグループと、ゲーム機302のグループとに分けて管理することができる。これにより、グループ内の通信を許すと共に、グループ間の通信を防ぐことができる。
前述の通信システムを適用したマルチメディア管理システムについて説明する。
図11は、マルチメディア管理システムの構成を示す模式図である。
マルチメディア管理システムは、例えば学校内に設けられている。マルチメディア管理システムは、無線LANアクセスポイント100と、ノートPC(Personal Computer)202と、複数のタブレット端末303と、TV304と、デスクトップPC305とを有する。ノートPC202は、前述のサーバ装置200の構成を有する。タブレット端末303、TV304、及びデスクトップPC305の夫々は、前述のクライアント装置300の構成を有する。TV304及びデスクトップPC305は、第1の部屋に配置されている。複数のタブレット端末303は、第2の部屋に配置されている。タブレット端末303のアプリケーション処理部530は例えば、Webブラウザ処理部510との通信に基づいてアプリケーションを実行する。TV304のアプリケーション処理部530は例えば、Webブラウザ処理部510との通信に基づいて画面を表示する。デスクトップPC305のアプリケーション処理部530は例えば、Webブラウザ処理部510との通信に基づいてコンテンツを配信する。
ノートPC202の管理者は、第1グループ及び第2グループをグループ処理部430に設定する。更に管理者は、第1グループに対応する第1グループ画像と、第2グループに対応する第2グループ画像とを、グループ処理部430に設定する。
更に管理者は、TV304を起動し、TV304のログイン処理において第1グループ画像を選択することにより、TV304は第1グループに加入する。更に管理者は、デスクトップPC305を起動し、デスクトップPC305のログイン処理において第1グループ画像を選択することにより、デスクトップPC305は第1グループに加入する。
更に管理者は、複数のタブレット端末303のユーザに対して第2グループ画像の内容を伝える。当該ユーザがタブレット端末303のログイン処理において第2グループ画像を選択することにより、当該タブレット端末303は第2グループに加入する。
例えば、ノートPC202のWebサーバ処理部410は、第1グループ内のデスクトップPC305に対し、コンテンツの配信を特定クライアント処理として要求し、第1グループ内のTV304に対し、当該コンテンツの表示を特定クライアント処理として要求する。デスクトップPC305が要求された処理を実行し、TV304が要求された処理を実行することにより、デスクトップPC305内のコンテンツをTV304に表示させることができる。
また、例えば、第2グループ内のタブレット端末303のWebブラウザ処理部510は、第2グループ内のノートPC202に対し、練習問題の送信を特定サーバ処理として要求する。ノートPC202のWebサーバ処理部410が、特定サーバ処理を実行することにより、練習問題をタブレット端末303に表示させることができる。
これにより、マルチメディア管理システムは、一つの無線LANに接続されている機器を容易に、第1の部屋内の第1グループと、第2の部屋内の第2グループとに分けることができる。これにより、第1の部屋で提供するコンテンツと、第2の部屋で提供するコンテンツを分けて提供することができる。
本実施形態によれば、サーバ装置200及びクライアント装置300がWebSocket接続により双方向通信を行い、ピンポンシーケンスにより認証のための識別情報を送受信する。これにより、専用の機能を追加することなく、双方向通信における認証を実現することができる。
サーバ装置200は、認証情報を画像へ埋め込むことにより認証画像を生成し、WebSocketのピンポンシーケンスによりクライアント装置300へ送信する。クライアント装置300のWebブラウザ処理部510は、Webコンテンツに含まれるスクリプトに従い、canvasを用いて認証画像を処理する。これにより、HTML5の標準仕様を用いて認証情報を処理することができるため、汎用性及び柔軟性が高い通信システムを構築することができる。
もし通信の傍受等により認証画像が漏洩した場合でも、定期的に認証画像を更新することにより、サーバ装置200とクライアント装置300の間の双方向通信の安全性を向上させることができる。また、WebSocket接続に暗号化を用いない場合でも、双方向通信の安全性を確保することができるため、柔軟性が高い通信システムを構築することができる。
グループ毎にグループ画像を割り当て、クライアント装置300のユーザによるグループ画像の選択を受け付けることにより、クライアント装置200はグループへ加入することができる。これにより、セキュアで柔軟なグルーピングを実現することができる。
従来のWebサービスにおいてサーバ装置はクライアント装置を特定することができるが、クライアント装置はサーバ装置を特定することができない。本実施形態においては、サーバ装置200とクライアント装置300が、認証画像を共有することにより、双方向通信において互いを特定することができる。
以上の実施形態で説明された技術の用語について説明する。なお、グループ情報等を、登録情報と呼んでも良い。登録認証画像を含むpingフレーム等を、第1接続維持情報と呼んでも良い。特定クライアント処理等を、第1処理と呼んでも良い。特定サーバ処理等を、第2処理と呼んでも良い。旧登録認証画像と更新認証画像を含むpingフレーム等を、第2接続維持情報と呼んでも良い。
なお、本発明は、上述した実施の形態に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。