A.第1実施例:
A−1:システム1000の構成
次に、実施の形態を実施例に基づき説明する。図1は、本実施例としてのシステム1000の構成を示すブロック図である。図2は、システム1000内の装置が有する情報の概念図である。
システム1000は、通信装置としてのデバイス100と、中継サーバ200と、サービス提供サーバ300と、を備える。デバイス100は、LAN(Local Area Network)70に接続されている。LAN70は、インターネット80に接続されている。中継サーバ200、および、サービス提供サーバ300は、インターネット80に接続されている。この結果、デバイス100と中継サーバ200、および、中継サーバ200とサービス提供サーバ300は、LAN70やインターネット80を介して、互いに通信することができる。
デバイス100は、画像の印刷や画像のスキャンなどの画像処理を実行する、いわゆる複合機である。デバイス100は、複合機に限らず、スキャナ、プリンタ、デジタルカメラなどの他の画像処理デバイスであってもよく、携帯端末装置、パーソナルコンピュータなどの汎用デバイスであっても良い。デバイス100は、CPU110と、ハードディスクドライブやEEPROMなどの不揮発性記憶装置120と、RAMなどの揮発性記憶装置130と、所定の方式(例えば、レーザ方式や、インクジェット方式)で画像を印刷するプリンタ部140と、光学的に対象物(例えば、紙の文書)を読み取ることによってスキャンデータを取得するスキャナ部150と、タッチパネルやボタンなどの操作部160と、タッチパネルと重畳された液晶パネルなどの表示部170と、ネットワークインタフェース(IF)180と、を備えている。ネットワークIF180は、例えば、イーサネット(登録商標)規格に準拠したインタフェースであり、LAN70に接続するために用いられる。
不揮発性記憶装置120は、コンピュータプログラムPG1と、サーバ情報SIと、暗号化方式リストCL1と、を格納している。揮発性記憶装置130には、CPU110が処理を行う際に生成される種々の中間データを一時的に格納するバッファ領域131が設けられている。
コンピュータプログラムPG1は、デバイス100の出荷時に、予め不揮発性記憶装置120に記憶される形態で提供される。コンピュータプログラムPG1は、インターネット80を介してデバイス100に接続されたサーバからダウンロードされる形態で提供されても良く、CD−ROMやDVD−ROMなどに格納された形態で提供されても良い。
CPU110は、コンピュータプログラムPG1を実行することにより、デバイス100のコントローラーとして機能する。たとえば、CPU110は、プリンタ部140やスキャナ部150を制御して印刷やスキャンを実行する。また、CPU110は、中継サーバ200を介して、サービス提供サーバ300と通信を行うサーバ通信機能を実現できる。詳細は後述するが、本実施例のサーバ通信機能は、サービス提供サーバ300に対して、デバイス100の各種のステータス情報を送信するために実行される。
サーバ情報SIは、サーバ通信機能において通信すべきサーバの情報である。サーバ情報SIは、デバイス100が、直接、通信を行うべき中継サーバ200を示す情報、具体的には、中継サーバ200のURLと、デバイス100が利用するサービス提供サーバ300を示す識別子(以下、利用サーバIDとも呼ぶ)と、を含む。
暗号化方式リストCL1は、デバイス100が使用可能な複数個の暗号化方式を示すリストである。暗号化方式は、デバイス100と、デバイス100とネットワークを介して接続された外部装置(例えば、中継サーバ200)と、の間の暗号化通信の方式である。暗号化方式は、暗号化通信に用いられる複数項目のアルゴリズムを並べて示す暗号化スイートによって定義される。
図2(A)には、暗号化方式リストCL1の一例が示されている。暗号化方式リストCL1は、暗号化方式をそれぞれ示す複数個の暗号化スイートを含んでいる。1個の暗号化方式に含まれる複数項目のアルゴリズムは、鍵交換アルゴリズムと、認証アルゴリズムと、暗号化アルゴリズムと、ハッシュアルゴリズムと、を含んでいる。
鍵交換アルゴリズムは、通信データの暗号化に用いられる暗号化鍵(共有鍵)を、通信を行う2個の装置間で交換するためのアルゴリズムである。鍵交換アルゴリズムには、例えば、「RSA」、「DHE(Diffie-Hellman key Exchangeの略)」、「ECDHE(Elliptic Curve Diffie-Hellman key Exchangeの略)」が用いられる。
RSA鍵交換アルゴリズムは、第1装置が、第2装置の公開鍵を用いて共有鍵を暗号化した暗号データを第2装置に送信するプロセスを含む。第2装置は、自信の秘密鍵を用いて、暗号データを復号することによって、共有鍵を取得する。第3者は、秘密鍵を持っていないので、盗聴した暗号通信を復号することはできない。しかし、第3者は、将来、秘密鍵を入手できた場合、それまでに盗聴した暗号通信を復号して見ることができる。したがって、RSA鍵交換アルゴリズムは、いわゆるPFS(Perfect Forward Secrecyの略)を達成できない。
一方、DHE鍵交換アルゴリズムや、ECDHE鍵交換アルゴリズムでは、セッション毎に第1装置と第2装置のそれぞれによって生成されるランダムなパラメータを用いて、共有鍵の交換を行う。これらのパラメータは、漏洩しても別のセッションでの通信のセキュリティには何ら影響を及ぼさない。したがって、DHE鍵交換アルゴリズムや、ECDHE鍵交換アルゴリズムでは、いわゆるPFSを達成できる。
この観点からは、DHE鍵交換アルゴリズムやECDHE鍵交換アルゴリズムは、RSA鍵交換アルゴリズムよりセキュリティレベルが高いということができる。
認証アルゴリズムは、通信を行う2個の装置のうち、少なくとも一方の装置の認証を行うためのアルゴリズムである。認証アルゴリズムには、例えば、「RSA」、「DSA(Digital Signature Algorithmの略)」が用いられる。
暗号化アルゴリズムは、交換された暗号化鍵(共有鍵)を用いて通信データを暗号化するためのアルゴリズムである。暗号化アルゴリズムには、例えば、「DES(Data Encryption Standardの略)」、「3DES(Triple Data Encryption Standardの略)」、「AES(Advanced Encryption Standardの略)」が用いられる。なお、暗号化アルゴリズムを示す各アルファベットの末尾に、暗号化鍵の鍵長を示す数字(例えば、128、256)を付加して、例えば、DES128、DES256と表現する。同じ種類の暗号化アルゴリズム間では、鍵長が長いほどセキュリティレベルが高い。
ハッシュアルゴリズムは、データのダイジェストを生成するためのアルゴリズムである。ハッシュアルゴリズムは、他のアルゴリズムの少なくとも一つで用いられる。ハッシュアルゴリズムは、例えば、認証アルゴリズムにおいて、署名データの生成や、電子証明書の検証などに用いられる。ハッシュアルゴリズムには、例えば、「SHA(Secure Hash Algorithmの略)1」、「SHA256」、「SHA512」などが用いられる。セキュリティレベルは、「SHA512」>「SHA256」>「SHA1」の順に高い。
ここで、本実施例では、図2に示すように、4種類の暗号化方式A〜Dが用いられる。図2には、各暗号化方式A〜Dを示す暗号化スイートが示されている。これらの暗号化スイートから解るように、暗号化方式Aの鍵交換−認証−暗号化−ハッシュのアルゴリズムの組み合わせは、「RSA」−「RSA」−「AES128」−「SHA256」である。そして、暗号化方式Bのアルゴリズムの組み合わせは、「RSA」−「RSA」−「AES256」−「SHA256」である。暗号化方式Cのアルゴリズムの組み合わせは、「DHE」−「RSA」−「AES128」−「SHA1」である。のアルゴリズムの組み合わせは、「DHE」−「RSA」−「AES256」−「SHA1」である。
図2(A)に示すように、暗号化方式リストCL1は、暗号化方式Aを示す暗号化スイートと、暗号化方式Cを示す暗号化スイートと、を含む。すなわち、デバイス100は、2個の暗号化方式A、Cを使用可能である。
中継サーバ200(図1)は、デバイス100のベンダによって提供されるサーバである。中継サーバ200は、詳細は後述するが、デバイス100を含む複数個のデバイスと、サービス提供サーバ300を含む複数個のサービス提供サーバと、の間の通信を中継する。
中継サーバ200は、CPU210と、ハードディスクドライブなどの不揮発性記憶装置220と、RAMなどの揮発性記憶装置230と、インターネット80と接続するためのネットワークIF280と、を備えている。
不揮発性記憶装置220は、コンピュータプログラムPG2と、暗号化方式リストCL2と、登録情報CIと、を格納している。なお、波線で示す参照情報RIは、第2実施例において、中継サーバ200が保持する情報であるので、第2実施例にて説明する。揮発性記憶装置230には、CPU210が処理を行う際に生成される種々の中間データを一時的に格納するバッファ領域231が設けられている。
コンピュータプログラムPG2は、インターネット80を介して接続されるベンダの計算機からアップロードされる形態で提供されても良く、CD−ROMやDVD−ROMなどに格納された形態で提供されても良い。CPU210は、コンピュータプログラムPG2を実行することによって、中継サーバ200のコントローラーとしての機能を実現する。これらの機能の詳細は、後述する。
暗号化方式リストCL2は、中継サーバ200が使用可能な複数個の暗号化方式を示すリストである。図2(B)に示すように、暗号化方式リストCL2には、4個の暗号化方式A〜Dを示す4個の暗号化スイートを含む。すなわち、中継サーバ200は、4個の暗号化方式A〜Dを使用可能である。中継サーバ200は、デバイス100だけでなく、図示しない複数個の他のデバイス、例えば、中継サーバ200を提供するベンダが販売している複合機、スキャナ、プリンタとの通信を行う。また、中継サーバ200は、サービス提供サーバ300だけでなく、図示しない複数個の他のサービス提供サーバとの通信を行う。このために、中継サーバ200は、これらのデバイスやサービス提供サーバが使用し得る多数の暗号化方式を使用できることが好ましい。
図2(C)に示すように、登録情報CIは、デバイステーブルDTと、サーバテーブルSTと、を含む。
デバイステーブルDTは、中継サーバ200との間に暗号化通信を確立中のデバイス(例えば、デバイス100)の情報が登録されるテーブルである。デバイステーブルDTに登録される1個のエントリE1は、デバイスID(例えば、D01)と、使用暗号化方式(例えば、暗号化方式A)と、利用サーバID(例えば、SV1)と、を含む。デバイスIDは、暗号化通信を確立中のデバイスを示す識別子である。使用暗号化方式は、確立中の暗号化通信で使用している暗号化方式である。サーバIDは、暗号化通信を確立中のデバイスが利用するサービス提供サーバを示す識別子である。
サーバテーブルSTは、中継サーバ200との間に暗号化通信を確立したサービス提供サーバ(例えば、サービス提供サーバ300)の情報が登録されるテーブルである。サーバテーブルSTに登録される1個のエントリE2は、サーバID(例えば、SV1)と、暗号化方式リスト(例えば、リストCL2)と、を含む。サーバIDは、暗号化通信を確立したサービス提供サーバを示す識別子である。暗号化方式リストは、暗号化通信を確立したサービス提供サーバから受信された暗号化方式リストである。
サービス提供サーバは、クライアント(例えば、デバイス100)に対して、特定のサービスを提供するサーバである。例えば、サービス提供サーバ300は、デバイス100を含む管理対象の複数個のデバイスを管理するサービスを、複数個のデバイスの管理者に対して提供している。サービス提供サーバ300は、デバイス100のベンダによって提供されても良いし、デバイス100のベンダとは異なる運営者によって提供されても良い。サービス提供サーバ300は、例えば、管理対象の複数個のデバイスのステータス、例えば、印刷枚数、トナーやインクなどの色材などの消耗品の状況、故障やエラーの発生状況を示す情報を、複数個のデバイスから収集する。複数個のデバイスの管理者は、図示しない端末装置(例えば、パーソナルコンピュータ)を用いてサービス提供サーバ300にアクセスすることによって、サービス提供サーバ300から、複数個のデバイスのステータスを示す情報の提供を受けることができる。
サービス提供サーバ300は、CPU310と、ハードディスクドライブなどの不揮発性記憶装置320と、RAMなどの揮発性記憶装置330と、インターネット80と接続するためのネットワークIF380と、を備えている。
不揮発性記憶装置320は、コンピュータプログラムPG3と、暗号化方式リストCL3と、を格納している。揮発性記憶装置330には、CPU310が処理を行う際に生成される種々の中間データを一時的に格納するバッファ領域331が設けられている。
コンピュータプログラムPG3は、インターネット80を介して接続されるサービス提供サーバ300の運営者の計算機からアップロードされる形態で提供されても良く、CD−ROMやDVD−ROMなどに格納された形態で提供されても良い。CPU310は、コンピュータプログラムPG3を実行することによって、サービス提供サーバ300のコントローラーとしての機能を実現する。これらの機能の詳細は、後述する。
暗号化方式リストCL3は、サービス提供サーバ300が使用可能な1個以上の暗号化方式を示すリストである。図2(D)に示すように、暗号化方式リストCL3は、2個の暗号化方式C、Dを示す2個の暗号化スイートを含む。すなわち、サービス提供サーバ300は、2個の暗号化方式C、Dを使用可能である。
A−2:システム1000の動作
本実施例では、サービス提供サーバ300の利用者は、デバイス100を含む複数個のデバイスを管理する管理者である。この管理者は、管理対象の複数個のデバイスの設置場所とは異なる場所(例えば、管理者のオフィス)にて、端末装置を用いてサービス提供サーバ300にアクセスする。これによって、サービス提供サーバ300を介して、管理対象の複数個のデバイスのステータスを取得する。管理者は、これらのステータス(例えば、印刷枚数や色材の消費量)に基づいて、デバイスのユーザに対して、課金等を行うことができる。
本実施例では、デバイス100を含む複数個のデバイスのユーザは、上記の管理者とは異なる。一例として、ユーザは、管理者から、これらのデバイスのリースを受けて利用している。デバイス100には、予め管理者によって、上述したサーバ情報SIが格納されており、デバイス100は、中継サーバ200を介して、サービス提供サーバ300にステータスを送信するように設定されている。
A−2−1.通信プロトコル
本実施例において、デバイス100を含む複数個のデバイスと、中継サーバ200と、の間の通信のプロトコルについて説明する。各デバイスと、中継サーバ200と、の間の通信は、デバイスおよび中継サーバ200のそれぞれのアプリケーション層のプログラム(以下、単に、アプリケーションと呼ぶ)に従って、各デバイスをクライアント、中継サーバ200をサーバとして、行われる。各デバイスと中継サーバ200のアプリケーションは、アプリケーション層のプロトコルであるXMPP(Extensible Messaging and Presence Protocolの略)に従う通信を行う。アプリケーションの下位のトランスポート層の通信は、TCP(Transmission Control Protocolの略)に従って行われる。そして、アプリケーション層のXMPPより下位で、トランスポート層のTCPより上位の層で、SSL/TLS(Secure Sockets Layer/Transport Layer Securityの略)に従う通信によって、暗号化されたセキュアな通信路(以下、単に、暗号化通信とも呼ぶ)が確立される。すなわち、各デバイスと中継サーバ200との間では、双方のアプリケーションは、SSL/TLSに従って確立された暗号化通信を用いて、アプリケーションデータの送受信を行う。
本実施例において、中継サーバ200と、サービス提供サーバ300を含むサービス提供サーバと、の間の通信のプロトコルについて説明する。中継サーバ200と、サービス提供サーバと、の間の通信は、中継サーバ200およびサービス提供サーバのそれぞれのアプリケーションに従って、サービス提供サーバをクライアント、中継サーバ200をサーバとして、行われる。中継サーバ200と、サービス提供サーバのアプリケーションは、アプリケーション層のプロトコルであるHTTP(Hypertext Transfer Protocolの略)に従う通信を行う。アプリケーションの下位のトランスポート層の通信は、TCPに従って行われる。そして、アプリケーション層のHTTPと、トランスポート層のTCPと、の間の層で、SSL/TLS(Transport Layer Security/Secure Sockets Layerの略)に従う暗号化通信が確立される。すなわち、中継サーバ200と、サービス提供サーバと、の間の通信は、双方のアプリケーションは、各デバイスと中継サーバ200との間と同様に、SSL/TLSに従って確立された暗号化通信を用いて、アプリケーションデータの送受信を行う。
A−2−2:システム1000の通信
デバイス100、中継サーバ200、サービス提供サーバ300間の通信を具体例として、システム1000の動作について説明する。図3、図4は、システム1000の通信の一例を示すシーケンス図である。このシーケンス図は、中継サーバ200に、サービス提供サーバ300の暗号化方式リストCL3が登録される前に、デバイス100から中継サーバ200に対してアクセスがある場合の例である。
デバイス100は、電源投入時に、中継サーバ200にアクセスして、中継サーバ200との間に、XMPP通信を確立する。これによって、デバイス100と中継サーバ200との双方が主体的に任意のタイミングで通信が行える状態が確立される。デバイス100と中継サーバ200との間のXMPP通信は、後述するように再確立が行われ得るが、デバイス100の電源が投入されている間、常に、維持される。
具体的には、先ず、S10にて、デバイス100のCPU110は、通信開始要求を、中継サーバ200に対して送信する。送信先の中継サーバ200は、上述したサーバ情報SIに基づいて特定される。通信開始要求には、図2(A)の暗号化方式リストCL1が含められる。中継サーバ200が暗号化方式リストCL1を受信すると、S12にて、中継サーバ200のCPU210は、暗号化方式リストCL1に示される複数個の暗号化方式A、C(図2(A))の中から、使用すべき1個の暗号化方式(以下、使用暗号化方式と呼ぶ。)を選択する。具体的には、暗号化方式リストCL1に示される複数個の暗号化方式A、C(図2(A))であって、かつ、中継サーバ200自身も使用できる暗号化方式(すなわち、図2(B)の暗号化方式リストCL2に示される暗号化方式A〜Dのうちの1つ)が、使用暗号化方式として、選択される。S12での暗号化方式の選択は、任意の方法で行われるが、本実施例では、暗号化方式リストCL1にて上位に示された暗号化方式Aが選択される。
S14では、CPU210は、使用暗号化方式、本実施例では、暗号化方式Aの通知を、デバイス100に対して送信する。なお、S10、S14の通信は、SSL/TLSレイヤ間の通信である。
デバイス100が使用暗号化方式の通知を受信すると、S16にて、デバイス100と、中継サーバ200と、の間で通信確立処理が行われる。すなわち、デバイス100と、中継サーバ200との間で、使用暗号化方式である暗号化方式Aを用いた暗号化通信を確立するための通信が、SSL/TLSに従って実行される。この処理は、例えば、暗号化方式Aに従って、中継サーバ200を認証する処理は、共有鍵を交換する処理を含む。さらに、確立された暗号化通信上で、XMPP通信を確立するための通信が、XMPPに従って実行される。
S18では、CPU110は、確立された暗号化通信、および、暗号化通信上に確立されたXMPP通信を用いて、デバイスIDと、利用サーバIDと、を中継サーバ200に対して送信する。すなわち、デバイスIDと、利用サーバIDと、の送受信は、デバイス100と中継サーバ200とのアプリケーション間の通信である。デバイスIDは、デバイス100自身を示す識別子である。利用サーバIDは、上述したサーバ情報SIに含まれる情報であり、サービス提供サーバ300を示す識別子である。利用サーバIDとしては、例えば、デバイス100のグローバルIPアドレスが用いられる。
中継サーバ200がデバイスIDと利用サーバIDを受信すると、S20では、CPU210は、中継サーバ200との間で通信が確立されたデバイス100を登録する。具体的には、CPU210は、受信されたデバイスIDと、利用サーバIDと、当該デバイスとの間で確立された通信に用いられている暗号化方式と、を関連づけて、上述した図2(C)のデバイステーブルDTに記録する。例えば、デバイス100を示すデバイスID「D01」と、デバイス100と中継サーバ200との間で確立された通信で用いられている暗号化方式Aと、サービス提供サーバ300を示す利用サーバID「SV1」と、を含むエントリE1(図2(C))が、記録される。なお、このエントリE1は、デバイス100との間の通信が、後述するように再確立されるときに、更新される。また、デバイス100との間の通信が再確立されることなく、切断されるときに、具体的には、デバイス100の電源が落とされるときに、消去される。
S21では、CPU210は、デバイス100との間に確立された通信を、使用暗号化方式を変更して再確立するか否かを判断する再確立判断処理を実行する。
図5は、第1実施例の再確立判断処理のフローチャートである。S100では、CPU210は、確立された通信の相手は、デバイス(例えば、デバイス100)であるか、サービス提供サーバ(例えば、サービス提供サーバ300)であるかを判断する。確立された通信の相手は、直前に、デバイステーブルDTやサーバテーブルSTに登録された装置である。例えば、図3のS21での再確立判断処理では、直前のS20にて登録された装置は、デバイス100であるので、確立された通信の相手は、デバイスであると判断される。
確立された通信の相手がデバイスである場合には、S105〜S125の処理が実行される。確立された通信の相手がサービス提供サーバである場合には、S130〜S155の処理が実行される。ここでは、S105〜S125の処理について説明し、S130〜S155の処理については、後述する。
S105では、CPU210は、確立された通信の相手であるデバイス(以下、対象デバイスとも呼ぶ。)に関連付けられたサービス提供サーバ、すなわち、対象デバイスが利用する利用サーバを特定する。具体的には、CPU210は、図2(C)のデバイステーブルDTを参照して、対象デバイスのデバイスIDと関連付けられた利用サーバIDを取得する。これによって、当該利用サーバIDによって識別される利用サーバが特定される。図3のS21の再確立判断処理では、デバイス100に関連付けられた利用サーバとして、サービス提供サーバ300が特定される。
S110では、CPU210は、特定された利用サーバの暗号化方式リストは、サーバテーブルSTに、登録済であるか否かを判断する。
利用サーバの暗号化方式リストが、サーバテーブルSTに登録されている場合には(S110:YES)、S115にて、CPU210は、対象デバイスとの間で現在確立されている暗号化方式は、利用サーバの暗号化方式リストに含まれているか否かを判断する。
対象デバイスとの間で現在確立されている暗号化方式が、利用サーバの暗号化方式リストに含まれていない場合(S115:NO)、S120にて、CPU210は、対象デバイスとの間で再確立処理を行うと判断して、再確立判断処理を終了する。
利用サーバの暗号化方式リストが、登録済でない場合(S110:NO)、および、対象デバイスとの間で現在確立されている暗号化方式が、利用サーバの暗号化方式リストに含まれている場合(S115:YES)には、S125にて、CPU210は、対象デバイスとの間で再確立処理を行わないと判断して、再確立処理を終了する。
図3に戻って、説明を続ける。S21の再確立判断処理の時点では、デバイス100の利用サーバであるサービス提供サーバ300と、中継サーバ200と、の間の通信は、まだ、確立されていない。したがって、サービス提供サーバ300の暗号化方式リストは、サーバテーブルSTに登録されていない。このために、図5のS110にて、利用サーバの暗号化方式リストは、登録済でないと判断される。したがって、S21の再確立判断処理では、対象デバイスであるデバイス100との間で、再確立処理は行わないと判断される。
このために、S21の後には、CPU210が、再確立処理を行うことはない。したがって、デバイス100と中継サーバ200との間で、S16にて確立された暗号化通信および当該暗号化通信上に確立されたXMPP通信は、確立された状態に維持される。
サービス提供サーバ300は、デバイス100を含む管理対象の複数個のデバイスのステータスを取得すべく、定期的に、例えば、1日に1回、中継サーバ200にアクセスする。具体的には、S22にて、サービス提供サーバ300のCPU310は、通信開始要求を、中継サーバ200に対して送信する。通信開始要求には、図2(D)の暗号化方式リストCL3が含められる。中継サーバ200が暗号化方式リストCL3を受信すると、S24にて、CPU210は、暗号化方式リストCL3に示される複数個の暗号化方式C、D(図2(D))の中から、1個の使用暗号化方式を選択する。S24での暗号化方式の選択は、任意の方法で行われるが、本実施例では、暗号化方式リストCL3にて上位に示された暗号化方式Cが選択される。
S26では、CPU210は、使用暗号化方式、本実施例では、暗号化方式Cの通知を、サービス提供サーバ300に対して送信する。なお、S22、S26の通信は、SSL/TLSレイヤ間の通信である。
サービス提供サーバ300が使用暗号化方式の通知を受信すると、S28にて、サービス提供サーバ300と、中継サーバ200と、の間で通信確立処理が行われる。すなわち、サービス提供サーバ300と、中継サーバ200との間で、使用暗号化方式である暗号化方式Cを用いた暗号化通信を確立するための通信が、SSL/TLSに従って実行される。この結果、暗号化通信を用いて、サービス提供サーバ300と中継サーバ200との間で、HTTPリクエストやレスポンスの送受信が可能な状態となる。
S30では、サービス提供サーバ300のCPU310は、S28にて確立された暗号化通信を用いて、管理対象のデバイスのステータスを要求するステータス要求を、中継サーバ200に対して送信する。ステータス要求には、サービス提供サーバ300を示す識別子であるサーバIDと、管理対象のデバイスを指定するための指定情報と、が含められる。ステータス要求は、HTTPリクエストとして送信される。
なお、指定情報は、特定のデバイスを指定するための各デバイスIDとは異なる情報であって、ステータス要求の送信を要求する全てのデバイスを指定するための情報である。即ち、中継サーバ200は、指定情報を受信することにより、サービス提供サーバ300を示す利用サーバIDを送信する全てのデバイスに対して、ステータス要求を送信する。
中継サーバ200が、ステータス要求を受信すると、S32にて、CPU210は、中継サーバ200との間で通信が確立されたサービス提供サーバ300の暗号化方式リストCL3を登録する。具体的には、CPU210は、ステータス要求に含まれるサーバIDと、S22にて受信された暗号化方式リストCL3とを、関連付けて、サーバテーブルSTに記録する。例えば、図2(C)に示すように、サービス提供サーバ300を示すサーバID「SV1」と、サービス提供サーバ300の暗号化方式リストCL3と、を含むエントリE2が、記録される。なお、このエントリE2は、サービス提供サーバ300との通信が切断された後も消去されない。このエントリE2は、次にサービス提供サーバ300との通信が確立されたときに、暗号化方式リストCL3の内容が更新されている場合には、更新される。
S34では、CPU210は、上述した図5の再確立判断処理を実行する。S34の再確立判断処理では、確立された通信の相手、すなわち、直前のS32にて登録された装置は、サービス提供サーバ300である。したがって、図5のS100では、確立された通信の相手は、サービス提供サーバであると判断される。この結果、CPU210は、図5のS130〜S155の処理を実行する。以下、確立された通信の相手であるサービス提供サーバを、対象サーバとも呼ぶ。
S130では、CPU210は、図2(C)のデバイステーブルDTを参照して、現在、中継サーバ200との間で通信を確立中のデバイスのうち、対象サーバが使用サーバとして関連付けられているデバイスを特定する。対象サーバは、図3のS34の再確立判断処理では、サービス提供サーバ300である。したがって、デバイステーブルDTの複数個のエントリのうち、サービス提供サーバ300のサーバID「SV1」を含むエントリE1に基づいて、デバイスID「D01」のデバイス100が特定される。S130では、複数個のデバイスが特定される場合も、デバイスが特定されない場合もあり得る。
S132では、CPU210は、S130にてデバイスが特定されたか否かを判断する。デバイスが特定されない場合には(S132:NO)、CPU210は、再確立判断処理を終了する。1個以上のデバイスが特定された場合には(S132:YES)、S135にて、CPU210は、特定されたデバイスの中から、1個の判断対象のデバイスを選択する。
S140では、CPU210は、判断対象のデバイスとの間で現在確立されている暗号化方式は、対象サーバの暗号化方式リストに含まれているか否かを判断する。図3のS34の再確立判断処理では、対象サーバは、サービス提供サーバ300である。また、判断対象のデバイスは、デバイス100であり、デバイス100との間で現在確立されている暗号化方式は、上述したように、暗号化方式Aである。暗号化方式Aは、サーバテーブルSTに登録済のサービス提供サーバ300の暗号化方式リストCL3(図2(D))に、含まれていない。したがって、この場合には、判断対象のデバイスとの間で現在確立されている暗号化方式は、対象サーバの暗号化方式リストに含まれていないと判断される。仮に、デバイス100との間で現在確立されている暗号化方式は、上述したように、暗号化方式Cであるとする。暗号化方式Cは、サーバテーブルSTに登録済のサービス提供サーバ300の暗号化方式リストCL3(図2(D))に、含まれている。したがって、この場合には、判断対象のデバイスとの間で現在確立されている暗号化方式は、対象サーバの暗号化方式リストに含まれていると判断される。
判断対象のデバイスとの間で現在確立されている暗号化方式は、対象サーバの暗号化方式リストに含まれていない場合(S140:NO)、S145にて、CPU210は、判断対象のデバイスとの間で再確立処理を行うと判断する。判断対象のデバイスとの間で現在確立されている暗号化方式は、対象サーバの暗号化方式リストに含まれている場合(S140:YES)、S150にて、CPU210は、判断対象のデバイスとの間で再確立処理を行わないと判断する。
S155では、CPU210は、S130にて特定された全てのデバイスについて、判断対象のデバイスとして処理したか否かを判断する。未処理のデバイスがある場合には(S155:NO)、CPU210は、S135に戻って、未処理のデバイスを、判断対象のデバイスとして選択する。全てのデバイスについて処理した場合には(S155:YES)、CPU210は、再確立判断処理を終了する。
図3のS34の再確立判断処理が終了すると、図4のS36に処理が進められる。再確立判断処理にて、デバイス100との間の通信の再確立処理を行うと判断された場合には(S36:YES)、S38にて、CPU210は、現在確立されている通信を用いて、再確立要求を、デバイス100に対して送信する。再確立要求は、例えば、XMPP通信を用いて、アプリケーション間の通信として送信される。
S39では、CPU210は、デバイス100との間で、現在、確立されている通信を切断する。例えば、中継サーバ200が主体となって、TCPレイヤまたはSSL/TLSレイヤでの論理的な通信路の切断が行われる。なお、変形例としては、S38にて、CPU210は、再確立要求とともに、現在、現在確立されている通信の切断要求を、デバイス100に送信しても良い。この場合には、切断要求を受信したデバイス100が主体となって、現在確立されている通信の切断が実行される。また、別の変形例としては、現在、確立されている通信の切断を行うことなく、現在、確立されている通信を維持したまま、別の暗号化通信を再確立しても良い。
デバイス100が再確立要求を受信すると、S40にて、デバイス100のCPU110は、該再確立要求に応じて、図1のS10と同様の通信開始要求を、中継サーバ200に対して送信する。通信開始要求には、図2(A)の暗号化方式リストCL1が含められる。
中継サーバ200が暗号化方式リストCL1を受信すると、S42にて、CPU210は、暗号化方式リストCL1に示される複数個の暗号化方式A、C(図2(A))の中から、1個の使用暗号化方式を選択する。具体的には、通信開始要求には、送信元のIPアドレスとして、デバイス100のデバイスIDとしてのグローバルIPアドレスを含んでいるので、CPU210は、該グローバルIPアドレスを取得する。そして、デバイスIDとしてのグローバルIPアドレスに基づいて、デバイステーブルDTを参照して、デバイス100の利用サーバ、図4の例では、サービス提供サーバ300を特定する。さらに、CPU210は、サーバテーブルSTを参照して、特定済の利用サーバの暗号化方式リスト、図4の例では、サービス提供サーバ300の暗号化方式リストCL3を特定する。そして、CPU210は、図3のS12とは異なり、特定済のサービス提供サーバ300の暗号化方式リストCL3に示される暗号化方式C、Dに基づいて、使用暗号化方式を選択する。具体的には、CPU210は、サービス提供サーバ300の暗号化方式リストCL1に示される暗号化方式A、Cのうち、暗号化方式リストCL3に示される暗号化方式C、Dのいずれかと同一の暗号化方式を選択する。したがって、本実施例では、2個の暗号化方式リストCL1、CL3の両方に含まれる暗号化方式Cが選択される。
なお、S42にて、サービス提供サーバ300の暗号化方式リストに示される暗号化方式のいずれもが、デバイス100の暗号化方式リストに含まれない場合には、CPU210は、1個の使用暗号化方式を選択できない。使用暗号化方式を選択できない場合には、CPU210は、デバイス100と中継サーバ200との間では、通信の確立を許容しない。後述するS82においても同様である。このために、例えば、この場合には、CPU210は、S44以降の処理を行わずに、例えば、デバイス100と中継サーバ200との双方に、エラー通知を送信する。
S44では、CPU210は、使用暗号化方式、本実施例では、暗号化方式Cの通知を、デバイス100に対して送信する。なお、S40、S44の通信は、SSL/TLSレイヤ間の通信である。
デバイス100が使用暗号化方式の通知を受信すると、S46にて、デバイス100と、中継サーバ200と、の間で通信確立処理が行われる。すなわち、デバイス100と、中継サーバ200との間で、使用暗号化方式である暗号化方式Cを用いた暗号化通信を確立するための通信が、SSL/TLSに従って実行される。さらに、確立された暗号化通信上で、XMPP通信を確立するための通信が、XMPPに従って実行される。この結果、デバイス100と中継サーバ200との間の通信が再確立される。
S48では、CPU110は、図3のS18と同様に、確立された暗号化通信、および、暗号化通信上に確立されたXMPP通信を用いて、デバイスIDと、利用サーバIDと、を中継サーバ200に対して送信する。中継サーバ200は、これらのデバイスIDと、利用サーバIDを受信することで、通信を再確立すべきデバイス(本実施例では、デバイス100)との間で、通信が再確立されたことを、アプリケーションレベルで確認できる。
なお、S34の再確立判断処理にて、デバイス100との間の通信の再確立処理を行わないと判断された場合には(S36:NO)、S38〜S48の処理は、行われない。
S50では、中継サーバ200のCPU210は、S30でサービス提供サーバ300から受信したステータス要求を、デバイス100に対して送信する。デバイス100がステータス要求を受信すると、S52にて、CPU110は、ステータス要求に応じて自身のステータスを取得する。S54では、CPU110は、該ステータスの通知を、中継サーバ200に対して送信する。なお、S50とS54は、デバイス100と中継サーバ200との間の通信が再確立された場合には、再確立された通信を用いて行われる。S54の後も、中継サーバ200とデバイス100との間の暗号化通信および暗号化通信上に確立されたXMPP通信は、維持される。
中継サーバ200がステータスの通知を受信すると、S56では、CPU210は、該ステータスの通知を、サービス提供サーバ300に対して送信する。この結果、サービス提供サーバ300は、管理対象のデバイスのステータスを取得できる。これらのステータスは、例えば、サービス提供サーバ300を利用するデバイスの管理者の端末装置に送信される。ステータスの通知が、サービス提供サーバ300に対して送信されると、中継サーバ200とサービス提供サーバ300との間の暗号化通信は、切断される。なお、S48、S50、S54、S56の通信は、装置100、200、300のアプリケーション間の通信である。
図6、図7は、システム1000の通信の一例を示すシーケンス図である。このシーケンス図は、中継サーバ200に、サービス提供サーバ300の暗号化方式リストCL3が登録された後に、デバイス100から中継サーバ200に対してアクセスがある場合の例である。
先ず、デバイス100と、中継サーバ200と、の間に通信が確立されていない状態で、サービス提供サーバ300が、デバイス100を含む管理対象の複数個のデバイスのステータスを取得すべく、中継サーバ200にアクセスすることとする。具体的には、図6のS60〜S68では、図3のS22〜S32と同じ処理が行われる。この結果、中継サーバ200と、サービス提供サーバ300と、の間で、暗号化方式Cを用いた暗号化通信が確立され、中継サーバ200のサーバテーブルSTには、サービス提供サーバ300の暗号化方式リストCL3が登録される。
S69では、図3のS34と同様に、CPU210は、図5の再確立判断処理を実行する。S69の再確立判断処理では、デバイス100と、中継サーバ200と、の間に通信が確立されていないので、図5のS130で、デバイス100は特定されない。このために、S69の再確立判断処理では、デバイス100についての再確立の判断は行われない。
S70では、CPU210は、ステータス取得不可の通知をサービス提供サーバ300に対して送信する。ステータス取得不可の通知は、デバイス100と中継サーバ200との間に通信が確立されていないので、デバイス100からステータスを取得できないことを示す通知である。ステータス取得不可の通知が、サービス提供サーバ300に対して送信されると、中継サーバ200とサービス提供サーバ300との間の暗号化通信は、切断される。
その後、例えば、デバイス100の電源が投入されて、デバイス100が、中継サーバ200にアクセスするとする。具体的には、図6のS71〜S76では、図3のS10〜S20と同じ処理が行われる。この結果、デバイス100と、中継サーバ200と、の間で、暗号化方式Aを用いた暗号化通信と、該暗号化通信上のXMPP通信と、が確立される。また、中継サーバ200のデバイステーブルDTには、デバイス100が登録される。
続く図7のS77では、CPU210は、図5の再確立判断処理を実行する。S77の再確立判断処理では、この時点で、サービス提供サーバ300の暗号化方式リストCL3が、サーバテーブルSTに登録されているので、図5のS110にて、暗号化方式リストCL3は登録済みであると判断される。そして、デバイス100と中継サーバ200との間に確立されている通信で用いられている暗号化方式は、暗号化方式Aであるので、図5のS115では、暗号化方式リストCL3には、現在、対象デバイスとの間で確立されている通信で用いられている暗号化方式はない、と判断される(S115:NO)。この結果、S120にて、デバイス100との間で、通信の再確立処理を行うと判断される。仮に、デバイス100と中継サーバ200との間に確立されている通信で用いられている暗号化方式は、暗号化方式Cであれば、図5のS115では、暗号化方式リストCL3には、現在、対象デバイスとの間で確立されている通信で用いられている暗号化方式はある、と判断される(S115:YES)。この場合には、図5のS125にて、デバイス100との間で、通信の再確立処理を行わないと判断される。
図7のS77の再確立判断処理にて、デバイス100との間の通信を再確立すると判断された場合には(S78:YES)、S79〜S85にて、図4のS38〜S48と同じ処理が行われる。この結果、デバイス100と中継サーバ200との間の通信が再確立される。
なお、S77の再確立判断処理にて、デバイス100との間の通信の再確立処理を行わないと判断された場合には(S78:NO)、S79〜S85の処理は、行われない。
この後に、サービス提供サーバ300から中継サーバ200にアクセスがあった場合には、図3のS22以降の処理が行われる。
以上説明した本実施例によれば、中継サーバ200は、サービス提供サーバ300が使用可能な1個以上の第1暗号化方式(具体的には、暗号化方式リストCL3に示される暗号化方式C、D)から選択される暗号化方式を用いて、サービス提供サーバ300との間に、第1暗号化通信を確立する(図3のS22〜S28、図6のS60〜S66)。そして、中継サーバ200は、デバイス100から、デバイス100が使用可能な複数個の暗号化方式を示す暗号化方式リストCL1を受信する(図4のS40、図7のS81)。そして、中継サーバ200は、第1暗号化通信が確立された後に、サービス提供サーバ300が使用可能な1個以上の第1暗号化方式に基づいて、暗号化方式リストCL1に示される複数個の暗号化方式(具体的には、暗号化方式A、C)の中から第2暗号化方式を選択する(図4のS42、図7のS82)。選択される第2暗号化方式は、1個以上の第1暗号化方式のいずれかと同一の暗号化方式(具体的には、暗号化方式C)である。そして、第2暗号化方式を用いて、デバイス100との間に、第2暗号化通信が確立される(図4のS46、図7のS84)。そして、中継サーバ200は、第1暗号化通信と第2暗号化通信とを用いて、サービス提供サーバ300とデバイス100との間の通信を中継する(図4のS50、S54、S56)。
上記構成によれば、サービス提供サーバ300が使用可能な1個以上の第1暗号化方式に基づいて、デバイス100との間に確立すべき第2暗号化通信の第2暗号化方式が選択される。そして、第2暗号化方式には、第1暗号化方式と同一の暗号化方式が選択される。したがって、第1暗号化方式と比較して、第2暗号化方式のセキュリティレベルが低くなることを抑制することができる。したがって、中継サーバ200が、デバイス100とサービス提供サーバ300との間の通信を中継する場合に、デバイス100とサービス提供サーバ300との間の通信のセキュリティレベルを、必要なレベル(例えば、サービス提供サーバ300が要求するレベル)に維持することができる。
より具体的に説明すると、暗号化方式リストCL3に示される1個以上の第1暗号化方式は、サービス提供サーバ300の運営者が維持すべきと考えているセキュリティレベルに基づいて設定されている。しかしながら、デバイス100と中継サーバ200との間の第2暗号化通信の第2暗号化方式が、1個以上の第1暗号化方式のいずれかと異なる暗号化方式、特に、1個以上の第1暗号化方式よりセキュリティレベルより低いセキュリティレベルの暗号化方式であるとする。そうすると、中継サーバ200を介して行われるデバイス100とサービス提供サーバ300との通信のセキュリティレベルは、サービス提供サーバ300の運営者が維持すべきと考えているセキュリティレベルより低くなってしまう。本実施例では、第2暗号化通信に用いられる第2暗号化方式は、1個以上の第1暗号化方式と同一の暗号化方式とされる。この結果、中継サーバ200を介して行われるデバイス100とサービス提供サーバ300との通信のセキュリティレベルを、サービス提供サーバ300の運営者が維持すべきと考えているセキュリティレベルに維持することができる。
また、中継サーバ200は、サービス提供サーバ300との暗号化通信が確立される度に、サービス提供サーバ300の暗号化方式リストCL3を登録する(図3のS32、図6のS68)。この結果、サービス提供サーバ300が使用可能な1個以上の第1の暗号化方式を、常に、適切に認識できる。したがって、例えば、サービス提供サーバ300が、セキュリティの強化などのために、使用可能な1個以上の第1の暗号化方式を変更した場合であっても、中継サーバ200を介して行われるデバイス100とサービス提供サーバ300との通信のセキュリティレベルを、サービス提供サーバ300の運営者が維持すべきと考えているセキュリティレベルに維持することができる。
さらに、中継サーバ200は、第2暗号化方式(具体的には、暗号化方式C)とは異なる第3暗号化方式(具体的には、暗号化方式A)を用いて、デバイス100との間に、第3暗号化通信を確立する(図3のS16、図6のS74)。中継サーバ200は、第3暗号化通信を用いて、デバイス100から特定の情報(具体的には、デバイスID、利用サーバID)を受信する(図3のS18、図6のS75)。そして、中継サーバ200は、特定の情報を受信した後に、第2暗号化通信を確立する(図4のS46、図7のS84)。
このように、一旦、第3暗号化通信が確立された後であっても、その後に第2暗号化通信が確立される。したがって、例えば、第3暗号化通信のセキュリティレベルが比較的低い場合であっても、第2暗号化通信が新たに確立されることで、デバイス100とサービス提供サーバ300との間の通信のセキュリティレベルを、必要なレベルに維持することができる。
さらに、中継サーバ200は、図5の再確立判断処理において、1個以上の第1暗号化方式(暗号化方式リストCL3に示される暗号化方式)と、第3暗号化方式とを比較している(図5のS115、S140)。この結果、第3暗号化方式が、第1暗号化方式と同一の暗号化方式である場合には(S115:YES、S140:YES)、再確立処理は行われない(S125、S150)。すなわち、第2暗号化通信は確立されずに、第3暗号化通信が維持される。一方、第3暗号化方式が、第1暗号化方式と異なる暗号化方式である場合には(S115:NO、S140:NO)、再確立処理が行われる(S120、S145)。すなわち、デバイス100との間で再確立処理が行われて、第2暗号化通信が確立される(図4のS46、図7のS84)。この結果、第2暗号化通信を確立する必要がない場合には、第2暗号化通信を確立しないので、無駄な処理の実行を抑制できる。
中継サーバ200は、第3暗号化通信を用いて、デバイス100から受信される特定の情報(具体的には、デバイスID、利用サーバID)を用いて、中継サーバ200が通信を中継すべきデバイス100とサービス提供サーバ300とを関連付ける(図3のS20、図6のS76、デバイステーブルDT)。この結果、例えば、中継サーバ200が複数個のデバイスと複数個のサービス提供サーバとの通信を中継する装置である場合でも、デバイス100とサービス提供サーバ300とを適切に関連付けることができる。したがって、その後に、デバイス100とサービス提供サーバ300との間の通信を再確立するか否かを適切に判断できる。
さらに、中継サーバ200は、第3暗号化通信が切断された後に(図4のS39、図7のS80)、第2暗号化通信を確立する(図4のS46、図7のS84)。こうすれば、セキュリティレベルに問題がある第3暗号化通信が切断されるので、より確実にデバイス100とサービス提供サーバ300との間の通信のセキュリティレベルを、必要なレベルに維持することができる。
さらに、中継サーバ200は、1個以上の第1暗号化方式を示す暗号化方式リストCL3を、サービス提供サーバ300を示す識別子(具体的には、サーバID)と、関連付けて、サーバテーブルSTに記憶する(図3のS32、図6のS68)。中継サーバ200は、サービス提供サーバ300を示す識別子(具体的には、利用サーバID)およびデバイス識別子(デバイスID)を、デバイス100から受信する(図3のS18、図6のS75)。中継サーバ200は、図5の再確立判断処理にて、これらの識別子を用いて、判断に使用すべき暗号化方式リストCL3を特定する、すなわち、1個以上の第1暗号化方式を特定する。そして、その後に行われる再確立処理では、特定される第1暗号化方式に基づいて、第2暗号化方式が選択される(図4のS42、図7のS82)。
上記構成によれば、例えば、中継サーバ200が複数個のデバイスと複数個のサービス提供サーバとの通信を中継する装置である場合でも、中継サーバ200は、サービス提供サーバ300を示す識別子およびデバイス100の識別子を用いて、適切な第1暗号化方式を特定できるので、適切な第2暗号化方式を選択することができる。
また、第1暗号化通信および前記第2暗号化通信は、アプリケーション層に属するアプリケーション間の通信(具体的には、ステータス要求、ステータスの通知の送受信)に用いられる。暗号化方式リストCL3の送受信は、該アプリケーションより下位の層(具体的には、SSL/TLSレイヤ)での通信を用いて行われる。この結果、アプリケーションに特別な仕組みを設けなくとも、アプリケーション間の通信のセキュリティレベルを、必要なレベルに維持することができる。
また、中継サーバ200は、第2暗号化通信を用いて、デバイス100から、デバイス100のステータスを示す情報を受信し(図4のS54)、第1暗号化通信を用いて、該ステータスを示す情報を、サービス提供サーバ300に対して送信する(図4のS56)。デバイス100のステータスは、例えば、課金等に用いられるため、秘密情報として扱われるべき情報も多い。本実施例では、中継サーバ200は、適切なセキュリティレベルの通信にて、これら情報の中継を行うことができる。
B.第2実施例:
第2実施例の中継サーバ200の不揮発性記憶装置220は、図1に破線で示す参照情報RIを格納している。参照情報RIは、暗号化方式に含まれる複数項目のアルゴリズムのうちの少なくとも1つの項目について、該項目に属する複数種類のアルゴリズムのセキュリティレベルの順序を示す情報である。
図8は、参照情報RIの一例を示す図である。この参照情報RIには、鍵交換アルゴリズムと、暗号化アルゴリズムについて、セキュリティレベルの順序が示されている。例えば、鍵交換アルゴリズムについては、「ECDHE」>「DHE」>「RSA」の順に、セキュリティレベルが高いことが示されている。また、暗号化アルゴリズムについては、「AES」>「3DES」>「DES」の順に、セキュリティレベルが高いことが示されている。なお、セキュリティレベルの高低は、一意に決まっているものではなく、例えば、どのような脅威に対するセキュリティを重視するかなどの考え方によって異なり得る。また、セキュリティレベルの高低は、特定のアルゴリズムの脆弱性の発見などによって、将来において変動し得る。このために参照情報RIは、定期的に、中継サーバ200の運営者によって見直される。
第2実施例では、再確立判断処理において、参照情報RIを用いる。図9は、第2実施例の再確立判断処理のフローチャートである。図9の再確立判断処理では、図5の再確立判断処理のS115、および、S140に代えて、S115b、および、S140bが実行される。図9の再確立判断処理の他の処理は、図5の再確立判断処理と同じである。
S115bでは、対象デバイス(例えば、デバイス100)との間で現在確立されている暗号化方式は、利用サーバ(例えば、サービス提供サーバ300)の暗号化方式リスト(例えば、暗号化方式リストCL3)に示される暗号化方式以上のセキュリティレベルであるか否かを判断する。
この判断の具体的な方法の一例を説明する。CPU210は、現在の鍵交換アルゴリズムおよび暗号化アルゴリズム、すなわち、現在確立されている暗号化方式に含まれる鍵交換アルゴリズムと、暗号化アルゴリズムと、を特定する。例えば、現在確立されている暗号化方式が、暗号化方式A(図2(A))である場合には、鍵交換アルゴリズムとして「RSA」が特定され、暗号化アルゴリズムとして「AES」が特定される。さらに、CPU210は、利用サーバの最低レベルの鍵交換アルゴリズムおよび暗号化アルゴリズム、すなわち、利用サーバの暗号化方式リストに示される1個以上の暗号化方式の鍵交換アルゴリズムのうちの最も低いセキュリティレベルのアルゴリズムと、暗号アルゴリズムのうちの最も低いセキュリティレベルのアルゴリズムと、を特定する。例えば、利用サーバの暗号化方式リストが、サービス提供サーバ300の暗号化方式リストCL3(図2(D))である場合には、最低レベルの鍵交換アルゴリズムとして「DHE」が特定され、暗号化アルゴリズムとして「AES」が特定される。
CPU210は、参照情報RI(図8)を参照して、現在の鍵暗号アルゴリズムのセキュリティレベルが、利用サーバの最低レベルの鍵暗号アルゴリズム以上であり、かつ、現在の暗号化アルゴリズムのセキュリティレベルが、利用サーバの最低レベルの暗号化アルゴリズム以上であるか否かを判断する。この判断結果が肯定的である場合には、CPU210は、現在確立されている暗号化方式は、利用サーバの暗号化方式リストに示される暗号化方式以上のセキュリティレベルであると判断する。この判断結果が否定的である場合には、CPU210は、現在確立されている暗号化方式は、利用サーバの暗号化方式リストに示される暗号化方式より低いセキュリティレベルであると判断する。
例えば、現在確立されている暗号化方式が、暗号化方式A(図2(A))であり、利用サーバの暗号化方式リストが、暗号化方式リストCL3(図2(D))である場合を考える。この場合には、暗号化方式Aの鍵交換アルゴリズム「RSA」は、暗号化方式リストCL3の最低レベルの鍵交換アルゴリズム「DHE」よりセキュリティレベルが低い(図9の参照情報RI)。したがって、この場合には、現在確立されている暗号化方式は、利用サーバの暗号化方式リストに示される暗号化方式より低いセキュリティレベルであると判断される。
S140bでは、CPU210は、判断対象のデバイス(例えば、サービス提供サーバ300)との間で現在確立されている暗号化方式は、対象サーバ(例えば、サービス提供サーバ300)の暗号化方式リスト(例えば、暗号化方式リストCL3)に示される暗号化方式以上のセキュリティレベルであるか否かを判断する。具体的な判断方法は、上述した115bと同じである。
さらに、第2実施例では、図4のS42と、図7のS82と、の再確立時の使用暗号化方式の選択の方法が第1実施例と異なる。
S42とS82とでは、CPU210は、デバイス100から受信した暗号化方式リストCL1に示される複数個の暗号化方式の中から、1個の使用暗号化方式を選択する。このとき、CPU210は、第1実施例と同様に、サーバテーブルSTに登録された利用サーバであるサービス提供サーバ300の暗号化方式リストCL3に示される暗号化方式に基づいて、使用暗号化方式を選択する。ただし、具体的な方法が第1実施例とは異なる。第2実施例では、CPU210は、デバイス100の暗号化方式リストCL1に示される複数個の暗号化方式の中から、サービス提供サーバ300の暗号化方式リストCL3に示される暗号化方式以上のセキュリティレベルである暗号化方式を選択する。
具体的には、CPU210は、上述したS115bの処理と同様に、サービス提供サーバ300の最低レベルの鍵交換アルゴリズムおよび暗号化アルゴリズムと、を特定する。そして、CPU210は、デバイス100から受信した暗号化方式リストCL1に示される複数個の暗号化方式の中から、特定された最低レベルの鍵交換アルゴリズム以上のセキュリティレベルである鍵交換アルゴリズムを含み、かつ、最低レベルの暗号化アルゴリズム以上のセキュリティレベルである暗号化アルゴリズムを含む暗号化方式を、使用暗号化方式として選択する。
例えば、上述したように、サービス提供サーバ300では、最低レベルの鍵交換アルゴリズムは「DHE」であり、最低レベルの暗号化アルゴリズムは「AES」である。したがって、暗号化方式リストCL1に示される暗号化方式A、Cのうち、暗号化方式Cが使用暗号化方式として選択される。
なお、第2実施例において、S42、S82にて、サービス提供サーバ300の暗号化方式リストに示される暗号化方式以上のセキュリティレベルである暗号化方式が、デバイス100の暗号化方式リストに含まれない場合には、CPU210は、1個の使用暗号化方式を選択できない。使用暗号化方式を選択できない場合には、第1実施例と同様に、CPU210は、デバイス100と中継サーバ200との間では、通信の確立を許容しない。
以上説明した第2実施例によれば、第1実施例と同様に、中継サーバ200は、サービス提供サーバ300が使用可能な1個以上の第1暗号化方式(具体的には、暗号化方式リストCL3に示される暗号化方式C、D)から選択される暗号化方式を用いて、サービス提供サーバ300との間に、第1暗号化通信を確立する(図3のS22〜S28、図6のS60〜S66)。そして、中継サーバ200は、デバイス100から、デバイス100が使用可能な複数個の暗号化方式を示す暗号化方式リストCL1を受信する(図4のS40、図7のS81)。そして、中継サーバ200は、第1暗号化通信が確立された後に、サービス提供サーバ300が使用可能な1個以上の第1暗号化方式に基づいて、暗号化方式リストCL1に示される複数個の暗号化方式(具体的には、暗号化方式A、C)の中から第2暗号化方式を選択する(図4のS42、図7のS82)。そして、第2暗号化方式を用いて、デバイス100との間に、第2暗号化通信が確立される(図4のS46、図7のS84)。中継サーバ200は、第1暗号化通信と第2暗号化通信とを用いて、サービス提供サーバ300とデバイス100との間の通信を中継する(図4のS50、S54、S56)。ここで、第2実施例では、選択される第2暗号化方式は、1個以上の第1暗号化方式以上のセキュリティレベルである暗号化方式である。この結果、第1実施例と同様に、デバイス100とサービス提供サーバ300との間の通信のセキュリティレベルを、必要なレベルに維持することができる。さらに、第2暗号化方式は、第1暗号化方式と同一の暗号化方式に限らず、第1暗号化方式以上のセキュリティレベルである暗号化方式であれば良いので、例えば、デバイスの使用可能な暗号化方式の中に選択できる暗号化方式がないために、暗号化方式が選択できなくなることを抑制できる。
さらに、第2実施例によれば、中継サーバ200は、図9の再確立判断処理において、デバイスとの間に確立中の暗号化方式(すなわち、第3暗号化方式)が、第1暗号化方式以上のセキュリティレベルである暗号化方式である場合には(S115b:YES、S140b:YES)、再確立処理は行われない(S125、S150)。すなわち、第2暗号化通信は確立されずに、第3暗号化通信が維持される。一方、第3暗号化方式が、第1暗号化方式よりセキュリティレベルが低い暗号化方式である場合には(S115b:NO、S140b:NO)、再確立処理が行われる(S120、S120)。すなわち、デバイス100との間で再確立処理が行われて、第2暗号化通信が確立される(図4のS46、図7のS84)。この結果、第2暗号化通信を確立する必要がない場合には、第2暗号化通信を確立しないので、無駄な処理の実行を抑制できる。
さらに、第2実施例によれば、暗号化方式の複数項目のアルゴリズムのうちの2個の項目(具体的には、鍵交換アルゴリズムと暗号化アルゴリズム)について、第1暗号化方式に含まれるアルゴリズム以上のセキュリティレベルであるアルゴリズムを含む暗号化方式が、再確立時の第2暗号化方式として選択される。したがって、複数項目のアルゴリズムのうちの2個の項目について、デバイス100と中継サーバ200との間の通信、引いては、中継サーバ200を介して行われるデバイス100とサービス提供サーバ300との間の通信のセキュリティレベルを、必要なレベルに維持することができる。
B.変形例:
(1)上記実施例では、1度、デバイス100と中継サーバ200との間で、第3暗号化通信が確立された(例えば、図6のS71〜S74)後、再確立が行われて第2暗号化通信が確立されている(例えば、図7のS79〜S84)。これは、中継サーバ200のアプリケーションは、第3暗号化通信を用いて、S75で送信されるデバイスIDおよび利用サーバIDを受信したときに、中継サーバ200が、デバイス100の利用サーバを初めて認識するので、一旦、第3暗号化通信を確立する必要があるからである。これに代えて、例えば、デバイス100は、サーバIDや利用サーバIDを、S71の通信開始要求に含めて、中継サーバ200に送信しても良い。すなわち、SSL/TLSレイヤの通信で、サーバIDや利用サーバIDの送受信が行われても良い。こうすれば、中継サーバ200は、この時点で、デバイス100の利用サーバを認識して、登録済みの利用サーバの暗号化方式リストを参照できる。したがって、S72の時点で、利用サーバの第1暗号化方式に基づいて、第2暗号化方式を選択しても良い。この場合には、第3暗号化通信を確立することなく、最初から第2暗号化通信を確立できる。
(2)上記第1実施例の図5の再確立判断処理では、利用サーバの暗号化リストが登録済である場合に、第3暗号化方式が、利用サーバの暗号化方式リストに示される第1暗号化方式と同一であるか否かを判断することによって、再確立を行うか否かが判断されている(図5のS115、S140)。これに代えて、利用サーバの暗号化リストが登録済である場合には、第3暗号化方式がどのような方式であるかに拘わらずに、常に再確立が行われても良い。
(4)上記実施例では、デバイス100からデバイスIDと利用サーバIDが、中継サーバ200に送信され(図3のS18等)、当該利用サーバIDと利用サーバIDとが関連付けられて、デバイステーブルDTに登録される(図3のS20等)。これによって、中継サーバ200は、デバイス100と、サービス提供サーバ300の暗号化方式リストCL3、すなわち、サービス提供サーバ300の1個以上の第1暗号化方式と、の対応を特定できる(図5のS130、S105)。これに代えて、図3のS30にて、サービス提供サーバ300から、サーバIDとともに、管理対象のデバイスIDが送信されても良い。そして、サーバIDおよびサーバの暗号化リストとともに、管理対象のデバイスIDが、サーバテーブルSTに登録されても良い。そして、これによって、デバイス100と、サービス提供サーバ300の1個以上の第1暗号化方式と、の対応が特定されても良い。あるいは、上述したサービス提供サーバ300から送信される指定情報が、サーバIDおよびサーバの暗号化リストとともに、サーバテーブルSTに登録されても良い。そして、これによって、指定情報によって指定される全てのデバイスと、サービス提供サーバ300の1個以上の第1暗号化方式と、の対応が特定されても良い。
(5)上記第1実施例では、図4のS42や、図7のS82において、サービス提供サーバ300が使用可能な第1暗号化方式と完全に同一の第2暗号化方式が選択される。これに代えて、複数項目のアルゴリズムのうちの一部の項目、例えば、鍵交換アルゴリズムと、暗号化アルゴリズムについて、第1暗号化方式に含まれるアルゴリズムと同一のアルゴリズムを含む第2暗号化方式を選択しても良い。
また、上記第2実施例では、図4のS42や、図7のS82において、複数項目のアルゴリズムのうちの2個の項目について、サービス提供サーバ300が使用可能な1個以上の第1暗号化方式以上のセキュリティレベルである第2暗号化方式が選択される。これに代えて、複数項目のアルゴリズムのうちの全ての項目について、あるいは、1個の項目について、1個以上の第1暗号化方式以上のセキュリティレベルである第2暗号化方式が選択されても良い。
一般的には、複数項目のアルゴリズムのうちの少なくとも1つの項目について、1個以上の第1暗号化方式に含まれるアルゴリズムと同一のアルゴリズムを含む第2暗号化方式、または、1個以上の第1暗号化方式以上のセキュリティレベルである第2暗号化方式が選択されることが好ましい。こうすれば、複数項目のアルゴリズムのうちの少なくとも1つの項目について、デバイス100とサービス提供サーバ300との間の通信のセキュリティレベルを、必要なレベルに維持することができる。
(6)上記実施例では、通信を再確立する処理(図4のS46、図7のS84)では、最初に通信を確立する際と、同様の処理を行っている。これに代えて、例えば、再確立時に、認証アルゴリズムを変更する必要がない場合には、例えば、中継サーバ200の認証を再度行うことなく、鍵交換などの他の処理のみを再度行うことで、通信の再確立を行っても良い。
(7)デバイス100と、サービス提供サーバ300と、のアプリケーション間で、中継サーバ200を介して送受信される情報は、ステータスを示す情報に限らず、例えば、画像データや、印刷データなどの他の情報であっても良い。
(8)中継サーバ200や、サービス提供サーバ300は、ネットワークを介して互いに通信可能な複数個の装置(例えば、コンピュータ)を含む、いわゆるクラウドサーバであっても良い。
(9)上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。