(57)【要約】【課題】クライアントデバイスが安全かつ容易にクラウドサービスを利用できるようにする。【解決手段】サービス提供システムは、デバイスＩＤと、デバイスＩＤに対応する公開鍵・秘密鍵ペアとを記憶するセキュリティデータベースと、セキュリティデータベースと通信する通信サーバと、を有するクラウドプラットフォームを備え、通信サーバは、クライアントデバイスと通信し、クライアントデバイスから、クライアントデバイスのデバイスＩＤと、公開鍵で暗号化されたデータとを含み、セキュリティトークンの発行を求める要求を受信し、セキュリティデータベースを参照することにより、暗号化されたデータがクライアントデバイスに対応する秘密鍵で復号化されたかを判定し、暗号化されたデータが秘密鍵で復号化された場合、セキュリティトークンを発行してクライアントデバイスに送信する。【選択図】図２
2020057378.tif 000002
【特許請求の範囲】
【請求項１】
デバイス識別子と、前記デバイス識別子に対応する公開鍵および秘密鍵のペアとを記憶するセキュリティデータベースと、
該セキュリティデータベースと通信する通信サーバと、を有するクラウドプラットフォームを備えるサービス提供システムであって、
前記通信サーバは、
クライアントデバイスと通信し、
前記クライアントデバイスから、該クライアントデバイスのデバイス識別子と、公開鍵で暗号化されたデータとを含み、セキュリティトークンの発行を求める要求を受信し、
前記セキュリティデータベースを参照することにより、前記暗号化されたデータが前記クライアントデバイスに対応する秘密鍵で復号化されたかを判定し、
前記暗号化されたデータが前記秘密鍵で復号化された場合、前記セキュリティトークンを発行して前記クライアントデバイスに送信することを特徴とするサービス提供システム。
【請求項２】
前記通信サーバは、前記クライアントデバイスの前記デバイス識別子をキーとして用いて、前記クライアントデバイスに対応する前記秘密鍵を前記セキュリティデータベースで検索する
ことを特徴とする請求項１記載のサービス提供システム。
【請求項３】
前記通信サーバはさらに、
前記復号化されたデータに前記クライアントデバイスの前記デバイス識別子が含まれるかどうかを判定し、
前記復号化されたデータに前記クライアントデバイスの前記デバイス識別子が含まれる場合、前記セキュリティトークンを発行して前記クライアントデバイスに送信する
ことを特徴とする請求項１記載のサービス提供システム。
【請求項４】
前記通信サーバは、前記セキュリティトークンの有効期間を発行し、前記セキュリティトークンと共に前記クライアントデバイスに送信する
ことを特徴とする請求項１記載のサービス提供システム。
【請求項５】
前記通信サーバは、前記セキュリティトークンと該セキュリティトークンの前記有効期間とを発行すると、前記セキュリティデータベースにおいて、前記セキュリティトークンと該セキュリティトークンの前記有効期間とを記憶または更新する
ことを特徴とする請求項４記載のサービス提供システム。
【請求項６】
前記クラウドプラットフォームは、前記セキュリティデータベースおよび前記クライアントデバイスと通信するクラウド構成サーバをさらに備え、
前記セキュリティデータベースは、前記デバイス識別子と、該デバイス識別子に対応する公開鍵とから構成される構成ファイルを記憶し、
前記クライアントデバイスからの要求に応え、前記クラウド構成サーバは、前記クライアントデバイスに対応する構成ファイルを前記セキュリティデータベースから取得し、該構成ファイルを前記クライアントデバイスに送信する
ことを特徴とする請求項１記載のサービス提供システム。
【請求項７】
前記クライアントデバイスに対応する前記構成ファイルが前記セキュリティデータベースに存在しない場合、前記クラウド構成サーバは、前記クライアントデバイスに対応する公開鍵および秘密鍵のペアと、前記クライアントデバイスの前記デバイス識別子と作成した前記公開鍵とから構成される前記構成ファイルを作成し、作成した該構成ファイルを前記クライアントデバイスに送信する
ことを特徴とする請求項６記載のサービス提供システム。
【請求項８】
前記クラウド構成サーバは、前記公開鍵および秘密鍵のペアと前記構成ファイルとを作成すると、前記セキュリティデータベースにおいて前記公開鍵および秘密鍵のペアと前記構成ファイルとを記憶または更新する
ことを特徴とする請求項７記載のサービス提供システム。
【請求項９】
前記通信サーバは、ＨＴＴＰＳ通信ネットワークを介して前記クライアントデバイスと通信する
ことを特徴とする請求項１記載のサービス提供システム。
【請求項１０】
前記クラウド構成サーバは、ＨＴＴＰＳ通信ネットワークを介して前記クライアントデバイスと通信する
ことを特徴とする請求項６記載のサービス提供システム。
【請求項１１】
デバイス識別子と、該デバイス識別子に対応する公開鍵および秘密鍵のペアとを記憶するセキュリティデータベースと、該セキュリティデータベースと通信する通信サーバと、を有するクラウドプラットフォームを備えるサービス提供システムを使用してクラウドサービスを提供する方法であって、
前記方法は、
前記通信サーバが、クライアントデバイスから、該クライアントデバイスのデバイス識別子と、公開鍵で暗号化されたデータとを含み、セキュリティトークンの発行を求める要求を受信するステップと、
前記通信サーバが、前記セキュリティデータベースを参照することにより、前記暗号化されたデータが前記クライアントデバイスに対応する秘密鍵で復号化されたかを判定するステップと、
前記暗号化されたデータが前記秘密鍵で復号化された場合、前記通信サーバが、前記セキュリティトークンを発行して前記クライアントデバイスに送信するステップと、を含むことを特徴とする方法。
【請求項１２】
前記判定するステップにおいて、前記クライアントデバイスの前記デバイス識別子をキーとして用いて、前記クライアントデバイスに対応する前記秘密鍵を前記セキュリティデータベースで検索する
ことを特徴とする請求項１１記載の方法。
【請求項１３】
前記判定するステップにおいて、前記復号化されたデータに前記クライアントデバイスの前記デバイス識別子が含まれるかどうかを判定し、
前記復号化されたデータに前記クライアントデバイスの前記デバイス識別子が含まれる場合、前記通信サーバが、前記セキュリティトークンの発行および送信を実行する
ことを特徴とする請求項１１記載の方法。
【請求項１４】
前記発行および送信するステップにおいて、前記セキュリティトークンの有効期間を発行し、前記セキュリティトークンと共に前記クライアントデバイスに送信する
ことを特徴とする請求項１１記載の方法。
【請求項１５】
前記セキュリティトークンと該セキュリティトークンの前記有効期間とを発行すると、前記通信サーバが、前記セキュリティデータベースにおいて、前記セキュリティトークンと該セキュリティトークンの前記有効期間とを記憶または更新するステップをさらに含む
ことを特徴とする請求項１４記載の方法。
【請求項１６】
前記クラウドプラットフォームは、前記セキュリティデータベースおよび前記クライアントデバイスと通信するクラウド構成サーバをさらに備え、
前記セキュリティデータベースは、前記デバイス識別子と、該デバイス識別子に対応する公開鍵とから構成される構成ファイルをさらに記憶し、
前記方法はさらに、
前記クライアントデバイスからの要求に応え、前記クラウド構成サーバが、前記クライアントデバイスに対応する前記構成ファイルを前記セキュリティデータベースから取得し、該構成ファイルを前記クライアントデバイスに送信するステップを含む
ことを特徴とする請求項１１記載の方法。
【請求項１７】
前記クライアントデバイスに対応する前記構成ファイルが前記セキュリティデータベースに存在しない場合、前記クラウド構成サーバが、前記クライアントデバイスに対応する公開鍵および秘密鍵のペアと、前記クライアントデバイスの前記デバイス識別子と作成した前記公開鍵とから構成される前記構成ファイルを作成し、作成した該構成ファイルを前記クライアントデバイスに送信するステップをさらに含む
ことを特徴とする請求項１６記載の方法。
【請求項１８】
前記クラウド構成サーバが、前記公開鍵および秘密鍵のペアと前記構成ファイルとを作成すると、前記セキュリティデータベースにおいて前記公開鍵および秘密鍵のペアと前記構成ファイルとを記憶または更新するステップをさらに含む
ことを特徴とする請求項１７記載の方法。
【請求項１９】
前記通信サーバが、ＨＴＴＰＳ通信ネットワークを介して前記クライアントデバイスと通信する
ことを特徴とする請求項１１記載の方法。
【請求項２０】
前記クラウド構成サーバが、ＨＴＴＰＳ通信ネットワークを介して前記クライアントデバイスと通信する
ことを特徴とする請求項１６記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に、クラウドサービスを提供するための、ＩＩｏＴ（Industrial Internet of Things）等のＩｏＴ（Internet of Things）システムおよび方法などのサービス提供システムおよび方法に関する。
【背景技術】
【０００２】
ＩｏＴシステムは、インターネットを介して各種クラウドサービスを提供することができる。図１は、顧客Ａ，Ｂ，Ｃ，…，Ｘに属する多くのデバイスにそのようなクラウドサービスを提供する従来のＩｏＴシステムを示す。例えば、顧客Ａ，Ｂ，Ｃ，…，Ｘは、自宅に設置されたデバイス（カメラやセンサ等）を使用して自宅内部を遠隔監視する、患者に取り付けたデバイス（センサ等）を使用して病院などの場所で異常発生の自動通知を受信する、デバイス（スマートフォンや位置センサ等）を用いて人の現在位置を確認する、自動車や重機に設置されたデバイス（センサ等）を使用してその現在位置および／または動作状態を監視する、などを行うことができる。
【０００３】
しかしながら、このようなＩｏＴシステムにおいては、管理者不明のデバイスおよび／またはセキュリティの問題のあるデバイスにより、予期または意図しない通信が発生することがある。さらに、乗っ取られたデバイスからの不正なパケットがインターネット上に多数検出されたこともあった。
【０００４】
ＩｏＴクラウドサービスプロバイダの一部は、デバイス／センサを管理して、安全な経路経由でデバイス／センサをクラウドプラットフォーム上のＩｏＴハブに接続するシステムを提供している。例えば、マイクロソフト  コーポレーションが提供するクラウドサービスであるＭｉｃｒｏｓｏｆｔ（登録商標）  Ａｚｕｒｅ（登録商標）は「Azure IoT Hub Device Provisioning Service」を備える。このサービスを用いることで、デバイス／センサを管理し、デバイス／センサをクラウドプラットフォームに安全に接続して、デバイス／センサを容易に配置することが可能となる（非特許文献１参照）。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】「Azure IoT Hub Device Provisioning Service」（HTTPS://docs.microsoft.com/en-us/azure/iotdps/about-iot-dps）
【発明の概要】
【発明が解決しようとする課題】
【０００６】
「Azure IoT Hub Device Provisioning Service」をデバイス／センサで使用するには、マイクロソフト  コーポレーションが提供するSoftware Development Kit（ＳＤＫ）を用いて特定のソフトウェアを開発して、デバイス／センサ上で動作させる必要がある。しかしながら、低演算能力、低メモリ容量、および／または低記憶容量のデバイス（ライトウェイトデバイス）は、ＳＤＫで作成したソフトウェアに対応したオペレーションシステムを備えておらず、このソフトウェアを実装することができない。
【０００７】
一以上の実施形態は、クライアントデバイスが安全かつ容易にクラウドサービスを利用できるようにするサービス提供システムおよび方法を提供する。
【課題を解決するための手段】
【０００８】
本発明の一以上の実施形態は、デバイス識別子と、前記デバイス識別子に対応する公開鍵および秘密鍵のペアとを記憶するセキュリティデータベースと、該セキュリティデータベースと通信する通信サーバと、を有するクラウドプラットフォームを備えるサービス提供システムであって、前記通信サーバは、クライアントデバイスと通信し、前記クライアントデバイスから、該クライアントデバイスのデバイス識別子と、公開鍵で暗号化されたデータとを含み、セキュリティトークンの発行を求める要求を受信し、前記セキュリティデータベースを参照することにより、前記暗号化されたデータが前記クライアントデバイスに対応する秘密鍵で復号化されたかを判定し、前記暗号化されたデータが前記秘密鍵で復号化された場合、前記セキュリティトークンを発行して前記クライアントデバイスに送信することを特徴とするサービス提供システムを提供する。
【０００９】
本発明の一以上の実施形態は、デバイス識別子と、該デバイス識別子に対応する公開鍵および秘密鍵のペアとを記憶するセキュリティデータベースと、該セキュリティデータベースと通信する通信サーバと、を有するクラウドプラットフォームを備えるサービス提供システムを使用してクラウドサービスを提供する方法であって、前記方法は、前記通信サーバが、クライアントデバイスから、該クライアントデバイスのデバイス識別子と、公開鍵で暗号化されたデータとを含み、セキュリティトークンの発行を求める要求を受信し、前記通信サーバが、前記セキュリティデータベースを参照することにより、前記暗号化されたデータが前記クライアントデバイスに対応する秘密鍵で復号化されたかを判定し、前記暗号化されたデータが前記秘密鍵で復号化された場合、前記通信サーバが、前記セキュリティトークンを発行して前記クライアントデバイスに送信することを特徴とする方法を提供する。
【発明の効果】
【００１０】
本発明によれば、クライアントデバイスが安全かつ容易にクラウドサービスを利用できる。
【図面の簡単な説明】
【００１１】
【図１】従来のＩｏＴシステムの模式図を示す。
【図２】本発明の一以上の実施形態（以下「一以上の実施形態」と略す）に係るサービス提供システムのブロック図を示す。
【図３】一以上の実施形態に係るクライアントデバイスのブロック図を示す。
【図４】一以上の実施形態に係るデバイスセキュリティデータベースに記憶されている情報の図を示す。
【図５】一以上の実施形態に係る構成サーバのブロック図を示す。
【図６】一以上の実施形態に係る構成サーバにアクセスするクライアントデバイスのインタフェースの図を示す。
【図７】一以上の実施形態に係る構成サーバの機能を説明する図を示す。
【図８】一以上の実施形態に係る構成ファイルの図を示す。
【図９】一以上の実施形態に係る通信サーバのブロック図を示す。
【図１０】一以上の実施形態に係る通信サーバの機能を説明する図を示す。
【図１１】一以上の実施形態に係る構成ファイル要求処理のフローチャートを示す。
【図１２】一以上の実施形態に係るセキュリティトークン発行要求処理のフローチャートを示す。
【図１３】一以上の実施形態に係るデータ送信処理のフローチャートを示す。
【図１４】一以上の実施形態に係るコマンド送信処理のフローチャートを示す。
【図１５】ＨＴＴＰＳ通信ネットワーク上で実行される処理と、通信経路が暗号化されていない他の通信ネットワーク上で実行される処理との比較表を示す。
【発明を実施するための形態】
【００１２】
添付の図面を参照して、本発明の特定の実施形態を以下に説明する。一貫性を保つために、複数の図において同じ構成要素には同一の参照符号を付す。
【００１３】
以下の本発明の実施形態の説明では、本発明をよく理解できるよう、特定の詳細を以下に記載する。しかし、このような特定の事項がなくても本発明を実施してよいことは、当業者には自明であろう。場合によっては、説明を複雑にするのを避けるため、周知の特徴については詳細に記載しない。
【００１４】
［サービス提供システム］
図２は、一以上の実施形態に係るサービス提供システム１０００のブロック図を示し、当該システム１０００は、ＩｏＴ（Internet of Things）／ＩＩｏＴ（Industrial Internet of Things）システムを含む。サービス提供システム１０００が提供するサービスとしては、自宅内の遠隔監視の実施、病院などの場所における異常発生の自動通知の受信、人の現在位置の確認、自動車や重機の現在位置および／または動作状態の監視が挙げられる。サービス提供システム１０００は、クライアントデバイス１００、デバイスセキュリティデータベース２００、構成サーバ３００、通信サーバ４００、キッティング部５００、デバイスファイルデータベース６００、ファイル記憶部７００を備える。構成サーバ３００と通信サーバ４００とは、クラウドプラットフォームＣＰのクラウドエッジＣＰ１に存在し、デバイスセキュリティデータベース２００、デバイスファイルデータベース６００、およびファイル記憶部７００はクラウドプラットフォームＣＰのバックエンドシステムＣＰ２に存在する。本明細書において、「クラウドプラットフォーム」とは、インターネット等のネットワークを介して各種サービスを提供するコンピュータ環境を構成するハードウェア（ＣＰＵ等）、サーバ、データベースの総称である。
【００１５】
一以上の実施形態において、キッティング部５００、デバイスファイルデータベース６００、およびファイル記憶部７００は任意の構成要素であり、省略されてもよい。キッティング部５００は、記録媒体に記憶され、クライアントデバイス１００にインストールされているプログラムであり、出荷前にクライアントデバイス１００を使用可能な状態にするのに必要な設定を自動的に実行する。デバイスファイルデータベース６００は、クライアントデバイス１００から通信サーバ４００経由で送られるデータを処理し、当該データを時系列で記憶する。ファイル記憶部７００は、ファイルを記憶しており、クライアントデバイス１００からの要求に応え、通信サーバ４００経由でクライアントデバイス１００にファイルを送信する。
【００１６】
クラウドプラットフォームＣＰの各構成要素はワイドエリアネットワーク（ＷＡＮ）、ローカルネットワーク（ＬＡＮ）、携帯電話ネットワーク、インターネット等のネットワークを介して相互に接続されている。クライアントデバイス１００はインターネットを介して構成サーバ３００と通信サーバ４００とに接続されている。一以上の実施形態によれば、クライアントデバイス１００は、構成サーバ３００および通信サーバ４００と、ＨＴＴＰＳ（Hypertext Transfer Protocol Secure）通信ネットワークを介して通信する、詳細には、ＳＳＬ（Secure Sockets Layer）プロトコルまたはＴＬＳ（Transport Layer Security）プロトコルによって提供される安全な接続上でＨＴＴＰ通信を行う。
【００１７】
（クライアントデバイス）
図３は、一以上の実施形態に係るクライアントデバイス１００のブロック図を示す。クライアントデバイス１００は、インタフェースモジュール１１０とアプリケーションモジュール１２０と備え、これらは通信コネクタによって相互に着脱可能に接続されている。インタフェースモジュール１１０は、複数のアプリケーションモジュール１２０のそれぞれと選択的に接続されてよい。インタフェースモジュール１１０は、アプリケーションモジュール１２０を、ワイドエリアネットワーク（ＷＡＮ）、ローカルネットワーク（ＬＡＮ）、携帯電話ネットワーク、インターネット等のネットワークに接続する。
【００１８】
インタフェースモジュール１１０は、ＣＰＵ１１１、記憶部１１２、ネットワークインタフェース１１３、計時部１１４、および通信モジュール１１５を備える。インタフェースモジュール１１０は、ネットワークに無線接続用のアンテナ、位置測定用のＧＰＳ、データ入出力用のユーザインタフェース、および各機能部に給電するための電源の少なくともいずれかをさらに備えてもよい。
【００１９】
一以上の実施形態に係るＣＰＵ１１１は、ＡＲＭアーキテクチャに準拠して製造された低消費電力ＣＰＵであり、ライトウェイトデバイスに適したものである。
【００２０】
ＣＰＵ１１１は、ネットワークインタフェース１１３を介して、構成サーバ３００にアクセスして、クライアントデバイス１００のデバイスＩＤ（デバイス識別子）を送信し、構成ファイルを受信する。デバイスＩＤは記憶部１１２にあらかじめ記憶されている。あるいは、構成サーバ３００がデバイスＩＤを発行して、構成ファイルと共にデバイスＩＤをクライアントデバイス１００に返信する。
【００２１】
また、ＣＰＵ１１１は、ネットワークインタフェース１１３を介して通信サーバ４００にもアクセスする。通信サーバ４００との通信前に、ＣＰＵ１１１は、通信サーバ４００から取得した情報に基づいて、通信サーバ４００が正しいサーバ（すなわち、不正なサーバや未知のサーバではない）ことを確認してよい。例えば、ＣＰＵ１１１は、ルート証明書とサーバＩＤとが、通信サーバ４００の完全修飾ドメイン名（Fully Qualified Domain Name；ＦＱＤＮ）に一致するかどうかを判定してよい。
【００２２】
次に、ＣＰＵ１１１は、ネットワークインタフェース１１３のソケットを介して、通信サーバ４００にＨＴＴＰリクエストを送信する。ＨＴＴＰリクエストは、例えば、ネットワークインタフェース１１３または通信モジュール１１５を介した入力操作、あるいはユーザが行ったユーザインタフェース操作の発生時に、ＣＰＵ１１１によって記述される。
【００２３】
ＣＰＵ１１１は、通信サーバ４００にセキュリティトークンの発行を要求するために、ヘッダにデバイスＩＤを、ボディにバイナリデータをそれぞれ記述してＰＯＳＴメソッドにＨＴＴＰリクエストを作成して、通信サーバ４００にこのＨＴＴＰリクエストを送信する。一以上の実施形態によれば、バイナリデータは、デバイスＩＤと参照時間とを、構成ファイルに格納されている公開鍵で暗号化することにより作成される。参照時間は、クライアントデバイス１００が通信サーバ４００にＨＴＴＰリクエストを送信するときに計時部１１４から取得する現在時刻である。あるいは、参照時間を所定時間（５分など）前後させることで参照時間を取得してもよい。
【００２４】
次に、ＣＰＵ１１１は、通信サーバ４００が発行したセキュリティトークンとセキュリティトークンの有効期間（lifetime）とを受信する。通信サーバ４００がセキュリティトークンを発行しない場合、ＣＰＵ１１１は、通信サーバ４００から、エラー応答（ＨＴＴＰ状態コード“５００”など）を受信する。
【００２５】
クライアントデバイス１００のクロックが、通信サーバ４００またはデバイスセキュリティデータベース２００のクロックに必ずしも同期していると限らないので、ＣＰＵ１１１は、セキュリティトークンの参照時間と有効期間（１時間など）とに基づいて、セキュリティトークンの有効期限（年／月／日／時／分／秒）を計算する。例えば、ＣＰＵ１１１は、参照時間に有効期間を加算して、セキュリティトークンの有効期限を求める。次に、ＣＰＵ１１１は、セキュリティトークン、有効期間、および有効期限を記憶部１１２に記憶する。
【００２６】
セキュリティトークンの発行後、通信サーバ４００にデータを送信する場合、ＣＰＵ１１１は、ヘッダにデバイスＩＤとセキュリティトークンとを、ボディにＪＳＯＮ（JavaScript Object Notation）フォーマットで当該データをそれぞれ記述することでＰＯＳＴメソッドにＨＴＴＰリクエストを作成して、通信サーバ４００にこのＨＴＴＰリクエストを送信する。通信サーバ４００が、セキュリティトークンが有効であると判定した場合、ＣＰＵ１１１は、「有効」を示す応答（ＨＴＴＰ状態コード“２００”など）を通信サーバ４００から受信する。一方、通信サーバ４００が、セキュリティトークンが無効であると判定した場合、ＣＰＵ１１１は、「無効」を示す応答（ＨＴＴＰ状態コード“４５０”など）を通信サーバ４００から受信する。
【００２７】
クライアントデバイス１００は、クライアントデバイス１００の現在時刻とセキュリティトークンの有効期間とに基づいて、セキュリティトークンの有効期間が切れているかどうかを判定してよい。しかしながら、例えば、クライアントデバイス１００の計時部１１４の時間が不正確な場合など、クライアントデバイス１００は、有効期間の切れたセキュリティトークンと共にデータを送信することもある。このような場合、クライアントデバイス１００は、通信サーバ４００からＨＴＴＰ状態コード“４５０”を受信した後にセキュリティトークン発行要求をリトライすることができる。
【００２８】
セキュリティトークンの発行後、通信サーバ４００にコマンドを送信する場合、ＣＰＵ１１１は、ヘッダにデバイスＩＤ、セキュリティトークン、およびコマンドＩＤを、ボディに任意でペイロードを記述することでＰＯＳＴメソッドにＨＴＴＰリクエストを作成して、通信サーバ４００にこのＨＴＴＰリクエストを送信する。通信サーバ４００が、セキュリティトークンが有効であると判定した場合、ＣＰＵ１１１は、「有効」を示す応答（ＨＴＴＰ状態コード“２００”など）を通信サーバ４００から受信する。一方、通信サーバ４００が、セキュリティトークンが無効であると判定した場合、ＣＰＵ１１１は、「無効」を示す応答（ＨＴＴＰ状態コード“４５０”など）を通信サーバ４００から受信する。
【００２９】
記憶部１１２は、少なくともＲＡＭ（ランダムアクセスメモリ）とＲＯＭ（リードオンリーメモリ）とから構成される。記憶部１１２は、供給業者の識別情報、デバイスＩＤ（シリアル番号など）、機種名、ファンクショナルコードなど、クライアントデバイス１００のデバイス情報を含む各種情報を記憶する。記憶部１１２は、通信モジュール１１５を介してアプリケーションモジュール１２０から取得した測定値などの各種データを記憶する。また、記憶部１１２は、（ｉ）構成サーバ３００から入力されるバイスＩＤおよび構成ファイル、（ii）通信サーバ４００からネットワークインタフェース１１３を介して入力されるセキュリティトークンおよびセキュリティトークンの有効期間、ならびに（iii）セキュリティトークンの有効期限も記憶する。
【００３０】
ネットワークインタフェース１１３はネットワークに接続され、ネットワークを介してデバイスから、またはデバイスにデータを転送する。一以上の実施形態によれば、ネットワークインタフェース１１３は、クライアントデバイス１００を、インターネット（ＨＴＴＰＳ通信ネットワーク）を介して構成サーバ３００および通信サーバ４００と通信させる。ネットワークインタフェース１１３は１以上のソケットを備え、当該ソケットにＨＴＴＰリクエストが書き込まれてソケット通信が行われる。
【００３１】
計時部１１４はクロック機能を備え、現在時刻を出力する。
【００３２】
通信モジュール１１５は、ＣＰＵ、メモリ、およびＡ／Ｄコンバータ等のコンバータを備え、通信コネクタを介してアプリケーションモジュール１２０と通信可能に接続され、アプリケーションモジュール１２０の機能に応じた通信を行う。
【００３３】
一以上の実施形態に係るアプリケーションモジュール１２０は、少なくとも１つのセンサ１２１を備えるセンサモジュールである。センサ１２１は物理量を計測するものであり、例えば、温度センサ、湿度センサ、流速センサ、圧力センサ、速度センサ、および／または電流センサなどでよい。
【００３４】
あるいは、アプリケーションモジュール１２０は、少なくとも１つのアクチュエータ１２２を備えるアクチュエータモジュールである。アクチュエータ１２２は、例えば、ファンまたはモータである。
【００３５】
あるいは、アプリケーションモジュール１２０は、リモートコントローラ、ランプ、およびディスプレイ装置の少なくともいずれかを備えるユーザインタフェースモジュールでもよい。
【００３６】
または、アプリケーションモジュール１２０は、他のデバイスに接続可能な入力ポート、出力ポート、入出力ポート（ＵＳＢポート等）の少なくともいずれかを備える中継デバイスでもよい。他のデバイス／装置としては、カメラやビデオなどのキャプチャ装置、デバイス／装置に取り付けられたバーコードおよび／または二次元コード（ＱＲコード（商標登録）等）を読み取る読み取り装置、設備内の異常音を収集して、警告音を発するマイクやスピーカなどの音響装置、各デバイスの位置情報を出力する位置検出装置が挙げられる。
【００３７】
アプリケーションモジュール１２０は、ＣＰＵと、アプリケーションモジュール１２０のデバイス情報を記憶する記憶部、クロック機能を備える計時部、各種データを出力／受信するユーザインタフェース、各機能部に給電する電源の少なくともいずれかとを備える。アプリケーションモジュール１２０のデバイス情報には、アプリケーションモジュール１２０の供給業者の識別情報、シリアル番号、機種名、およびファンクショナルコードが含まれる。
【００３８】
クライアントデバイス１００は、ＡＲＭ準拠のＣＰＵ１１１と、ＴＳＬサポート機能を備えるネットワークインタフェース１１３とが搭載されているシステムオンチップ（ＳｏＣ）を備えてもよい。
【００３９】
クライアントデバイス１００は前述のデバイスに限定されるものではなく、クライアントデバイス１００は、インターネット（ＨＴＴＰＳ通信ネットワーク）を介して構成サーバ３００および通信サーバ４００と通信し、構成ファイルをダウンロードすることができれば、モバイルデバイス、ラップトップコンピュータ、可搬型端末であってもよい。
【００４０】
（デバイスセキュリティデータベース） 
一以上の実施形態に係るデバイスセキュリティデータベース２００は、デバイスＩＤをキーとして用いて、構成ファイルなどの情報に高速でアクセスすることが可能な文書データベースである。あるいは、デバイスセキュリティデータベース２００は、ＳＱＬ（Structured Query Language）データベースでもよい。文書データベースのほうがＳＱＬデータベースよりも関連付けられた情報により高速にアクセスすることができる。関連付けられた情報に高速にアクセスすることができれば、デバイスセキュリティデータベース２００に他のデータモデルを用いてもよい。
【００４１】
図４は、一以上の実施形態に係るデバイスセキュリティデータベース２００に記憶されている情報を示す図である。
【００４２】
デバイスセキュリティデータベース２００は、構成サーバ３００から送信される情報を記憶する。詳細には、デバイスセキュリティデータベース２００は、構成サーバ３００から送られる、デバイスＩＤと、当該デバイスＩＤに対応する秘密鍵・公開鍵ペアとを記憶する。一以上の実施形態によれば、秘密鍵と公開鍵は、ＲＳＡ秘密鍵とＲＳＡ公開鍵である。暗号化アルゴリズムはＲＳＡ暗号化に限定されるものではなく、ＤＥＳ（Data Encryption Standard）やＡＥＳ（Advanced Encryption Standard）などの他のアルゴリズムを使用してもよい。
【００４３】
また、デバイスセキュリティデータベース２００は、通信サーバ４００から送信される情報も記憶する。例えば、デバイスセキュリティデータベース２００は、セキュリティトークン、セキュリティトークンの作成日時または更新日時、およびセキュリティトークンの有効期間を、デバイスＩＤに関連づけて記憶する。一以上の実施形態によれば、セキュリティトークンはワンタイムパスワードである。
【００４４】
デバイスセキュリティデータベース２００は、後述する通信サーバ４００と同様の機能構成を備える。デバイスセキュリティデータベース２００のプロセッサは、通信サーバ４００のプロセッサ４１０と協働して、あるいはプロセッサ４１０の代わりに、所定の処理を実行してもよい。例えば、デバイスセキュリティデータベース２００のプロセッサは、セキュリティトークンを発行すべきかどうかの判定および／またはセキュリティトークンが有効であるかどうかの判定を行ってもよい。これらの処理についは、通信サーバ４００のプロセッサ４１０が実行する処理として後述する。
【００４５】
（構成サーバ）
図５は、一以上の実施形態に係る構成サーバ３００のブロック図を示す。構成サーバ３００は、プロセッサ３１０、メモリ３２０、計時部３３０、入出力インタフェース３４０、および通信モジュール３５０を備える。
【００４６】
構成サーバ３００は、クライアントデバイス１００からのアクセスを受け付ける前に、クライアントデバイス１００のユーザに対し、認証情報の入力を要求してもよい。図６は、Ｂａｓｉｃ認証が実行されるときの、クライアントデバイス１００のインタフェースモジュール１１０のユーザインタフェースでのブラウザ表示例を示す。認証が成立した場合、構成サーバ３００はクライアントデバイス１００からのアクセスを受け付ける。
【００４７】
図７は、一以上の実施形態に係る構成サーバ３００の機能を説明するための図を示す。
【００４８】
クライアントデバイスが構成サーバ３００にアクセスすると、プロセッサ３１０は、そのデバイスＩＤが存在するかどうか、詳細にはデバイスＩＤが指定可能かどうかを判定する。例えば、キッティング部５００がクライアントデバイス１００のデバイスＩＤを指定し、その後クライアントデバイス１００を構成サーバ３００にアクセスさせた場合、プロセッサ３１０はデバイスＩＤが存在すると判定する。プロセッサ３１０は、デバイスＩＤが存在しないと判定した場合、デバイスＩＤを作成して、構成ファイルと共にクライアントデバイスに返信してよい。
【００４９】
プロセッサ３１０は、デバイスＩＤが存在すると判定した場合、デバイスＩＤをキーとして用いて、デバイスセキュリティデータベース２００で構成ファイルを検索し、デバイスＩＤに対応する構成ファイルがデバイスセキュリティデータベース２００に存在するかどうかを判定する。プロセッサ３１０は、構成ファイルが存在すると判定した場合、デバイスセキュリティデータベース２００から構成ファイルを読み出してクライアントデバイス１００に返信する。
【００５０】
プロセッサ３１０は、構成ファイルが存在しないと判定した場合、デバイスＩＤに対応する秘密鍵・公開鍵ペアを作成し、デバイスＩＤと公開鍵とに基づいて構成ファイルを作成し、秘密鍵・公開鍵ペアと構成ファイルとをデバイスＩＤに関連づけてデバイスセキュリティデータベース２００に記憶する。次にプロセッサ３１０は作成した構成ファイルをクライアントデバイス１００に返信する。
【００５１】
構成ファイルは、クライアントデバイス１００にインストールされ、クライアントデバイス１００を特定できるようにするものである。構成ファイルは、デバイスＩＤと対応する公開鍵とをＪＳＯＮフォーマットで記述することで作成される。図８は、一以上の実施形態に係る構成ファイルの図を示す。構成ファイルはデバイスＩＤと公開鍵とから構成される簡易な構造を有する。このため、ライトウェイトデバイスであっても構成ファイルを記憶して、構成ファイルを用いて処理を実行することができる。
【００５２】
メモリ３２０は各種データを記憶するものであり、デバイスセキュリティデータベース２００に転送するデータなどのデータを一時的に記憶するための作業空間となる。また、メモリ３２０は、サーバＩＤ、ＩＰアドレス、入出力インタフェース３４０のソケットのポート番号も記憶する。
【００５３】
計時部３３０はクロック機能を備え、現在時刻を出力する。
【００５４】
入出力インタフェース３４０は、キーボードやマウス等の入力インタフェースと、ディスプレイ等の出力インタフェースとを備える。あるいは、入出力インタフェース３４０は、入力機能と出力機能とを兼ね備えるタッチスクリーンを備えてもよい。
【００５５】
通信モジュール３５０は、ＣＰＵとメモリとを備え、構成サーバ３００を、ネットワークを介してデバイスセキュリティデータベース２００と通信させると共に、インターネット（ＨＴＴＰＳ通信ネットワーク）を介してクライアントデバイス１００と通信させる。一以上の実施形態によれば、通信モジュール３５０は、ソケット通信を行うための１以上のソケットを備える。構成サーバ３００は、接続要求を待機し、接続要求を受け付けて、ソケットを介してクライアントデバイス１００からＨＴＴＰリクエストを受信する。
【００５６】
（通信サーバ） 
図９は、一以上の実施形態に係る通信サーバ４００のブロック図を示す。通信サーバ４００は、プロセッサ４１０、メモリ４２０、計時部４３０、入出力インタフェース４４０、および通信モジュール４５０を備える。
【００５７】
図１０は、一以上の実施形態に係る通信サーバの機能を説明するための図を示す。
【００５８】
クライアントデバイス１００が通信サーバ４００にアクセスすると、プロセッサ４１０は、ルート証明書やサーバＩＤなど、通信サーバ４００が正しいサーバかどうかを判定するのに必要な情報をクライアントサーバ１００に送信してよい。
【００５９】
プロセッサ４１０は、クライアントデバイス１００から送信され、入出力インタフェース４４０のソケットで受信したＨＴＴＰリクエストを読み出す。
【００６０】
プロセッサ４１０は、クライアントデバイス１００からセキュリティトークン発行要求を受信すると、ＨＴＴＰリクエストからデバイスＩＤとバイナリデータ（暗号化されたデータ）とを抽出し、デバイスセキュリティデータベース２００を参照して、（１）デバイスＩＤがデバイスセキュリティデータベース２００に存在するか；（２）バイナリデータをデバイスＩＤに対応する秘密鍵で復号化可能か；ならびに次に（３）復号化されたテキストにデバイスＩＤが含まれているか、のそれぞれについて真偽を判定する。
【００６１】
上記がすべて「真」の場合、プロセッサ４１０は、デバイスセキュリティデータベース２００からセキュリティトークンとセキュリティトークンの有効期間とを取得し、クライアントデバイス１００に返信する。このため、通信サーバ４００は、デバイスＩＤと公開鍵とから構成された構成ファイルを持っているクライアントデバイスのみからのアクセスを受け付けるようになる。また、プロセッサ４１０は、デバイスセキュリティデータベース２００において、セキュリティトークン、セキュリティトークンの発行時刻、およびセキュリティトークンの有効期間を更新する。上記のいずれかが「真」ではない場合、プロセッサ４１０は、クライアントデバイス１００にエラー応答（ＨＴＴＰ状態コード“５００”など）を返信する。
【００６２】
セキュリティトークンの発行後、所定の時間が経過し、プロセッサ４１０がクライアントデバイス１００からデータ送信要求を受信すると、プロセッサ４１０はＨＴＴＰリクエストからデバイスＩＤとセキュリティトークンとを抽出し、デバイスセキュリティデータベース２００を参照して、（i）デバイスＩＤがデバイスセキュリティデータベース２００に存在するか；（ii）ＨＴＴＰリクエストから抽出したセキュリティトークンが、デバイスＩＤに対応し、検索で得られたセキュリティトークンに一致するか；ならびに（iii）実時間がセキュリティトークンの有効期限を過ぎていないか、のそれぞれについて真偽を判定する。
【００６３】
上記がすべて「真」の場合、プロセッサ４１０は、セキュリティトークンが有効であると判定し、データをメモリ４２０に記憶する、データをデバイスファイルデータベース６００に転送する、あるいはこの両方を実行し、「有効」を示す応答（ＨＴＴＰ状態コード“２００”など）をクライアントデバイス１００に返信する。上記のいずれかが「真」ではない場合、プロセッサ４１０は、セキュリティトークンが無効であると判定し、クライアントデバイス１００にエラー応答（ＨＴＴＰ状態コード“４５０”など）を返信する。
【００６４】
セキュリティトークンの発行後、所定の時間が経過し、プロセッサ４１０がクライアントデバイス１００からコマンド送信要求を受信すると、プロセッサ４１０はＨＴＴＰリクエストからデバイスＩＤとセキュリティトークンとを抽出し、デバイスセキュリティデータベース２００を参照して、上記、（ｉ）〜（iii）のそれぞれについて真偽を順に判定する。
【００６５】
プロセッサ４１０は、上記がすべて「真」であると判定した場合、セキュリティトークンが有効であると判定し、コマンドＩＤに対応する処理を実行し、クライアントデバイス１００に「有効」を示す応答（ＨＴＴＰ状態コード“２００”など）を返信する。上記のいずれかが「真」ではない場合、プロセッサ４１０は、セキュリティトークンが無効であると判定し、クライアントデバイス１００にエラー応答（ＨＴＴＰ状態コード“４５０”など）を返信する。
【００６６】
コマンドＩＤに対応する処理は、入出力インタフェース４４０を介して入力されるか、メモリ４２０にあらかじめ記憶されているか、この両方である。一以上の実施形態によれば、コマンドＩＤに対応する処理としては、アプリケーションモジュール１２０から取得したデータをバックエンドシステムＣＰ２のデバイスファイルデータベース６００に転送する、特定のファイルをダウンロードしてクライアントデバイス１００に転送するために、バックエンドシステムＣＰ２のファイル記憶部７００からファイルをダウンロードする、などが挙げられる。
【００６７】
メモリ４２０は各種データを記憶するものであり、デバイスセキュリティデータベース２００、デバイスファイルデータベース６００、および／またはクライアントデバイス１００に転送するデータなどのデータを一時的に記憶するための作業空間となる。メモリ４２０は、クライアントデバイス１００から送信されたコマンドＩＤに対応する処理を記憶する。また、メモリ４２０は、サーバＩＤ、ルート証明書、ＩＰアドレス、入出力インタフェース４４０のソケットのポート番号も記憶する。
【００６８】
入出力インタフェース４４０は、キーボードやマウス等の入力インタフェースと、ディスプレイ等の出力インタフェースとを備える。あるいは、入出力インタフェース３４０は、入力機能と出力機能とを兼ね備えるタッチスクリーンを備えてもよい。
【００６９】
通信モジュール４５０は、ＣＰＵとメモリとを備え、通信サーバ４００を、ネットワークを介してデバイスセキュリティデータベース２００、デバイスファイルデータベース６００、およびファイル記憶部７００と通信させると共に、インターネット（ＨＴＴＰＳ通信ネットワーク）を介してクライアントデバイス１００と通信させる。一以上の実施形態によれば、通信モジュール４５０は、ソケット通信を行うための１以上のソケットを備える。通信サーバ４００は、接続要求を待機し、接続要求を受け付けて、ソケットを介してクライアントデバイス１００からＨＴＴＰリクエストを受信する。
【００７０】
（キッティング部）
キッティング部５００は、ＣＤ−ＲＯＭやＵＳＢ等の記録媒体に記憶され、クライアントデバイス１００にインストールされているプログラムである。キッティング部５００は、例えば、製造工場において、出荷前にクライアントデバイス１００を使用可能な状態にするのに必要な設定を、クライアントデバイス１００に自動的に実行させる。キッティング部５００は、インターネット（ＨＴＴＰＳ通信ネットワーク）を介して、クライアントデバイス１００を構成サーバ３００に自動的に接続し、構成サーバ３００から、設定に必要なアプリケーションをクライアントデバイス１００にインストールする等を行う。キッティング部５００が省略されている場合、ユーザがクライアントデバイス１００のユーザインタフェースを用いて設定を手動で行うことができる。
【００７１】
キッティング部５００が、クライアントデバイス１００を構成サーバ３００とＨＴＴＰＳ上で通信させるので、クライアントデバイス１００のユーザまたはオペレータは、コマンドラインツールおよび／またはスクリプト言語で記述したプログラムを用いて、構成サーバ３００にアクセスすることができる。このため、キッティング部５００は構成サーバ３００と容易に協働することが可能となる。
【００７２】
［クライアントデバイス−構成サーバ間の通信］
図１１は、一以上の実施形態に係る構成ファイル要求処理のフローチャートを示す。
【００７３】
クライアントデバイス１００が構成ファイルをダウンロードするために構成サーバ３００にアクセスする（Ｓ１０１）と、構成サーバ３００はクライアントデバイス１００のＢａｓｉｃ認証を実行する。入力した情報に基づき認証が成立した場合、クライアントデバイス１００は構成ファイル要求処理を実行する。認証が成立しなかった場合、クライアントデバイス１００と構成サーバ３００間の通信が切断される。
【００７４】
認証の成立後、構成サーバ３００のプロセッサ３１０は、デバイスＩＤが存在するかどうかを判定する（Ｓ１０２）。プロセッサ３１０が、デバイスＩＤが存在しないと判定した場合（Ｓ１０２で“Ｎｏ”）、デバイスＩＤが作成され（Ｓ１０３）、デバイスセキュリティデータベース２００に記憶される（Ｓ１０４）。プロセッサ３１０が、デバイスＩＤが存在すると判定した場合（Ｓ１０２で“Ｙｅｓ”）、プロセッサ３１０は、デバイスＩＤに対応する構成ファイルをデバイスセキュリティデータベース２００で検索し（Ｓ１０５）、構成ファイルが存在するかどうかを判定する（Ｓ１０６）。構成ファイルが存在しない場合（Ｓ１０６で“Ｎｏ”）、プロセッサ３１０は、秘密鍵・公開鍵ペアと構成ファイルとを作成して（Ｓ１０７）、デバイスＩＤに対応する該秘密鍵・公開鍵ペアと構成ファイルとをデバイスセキュリティデータベース２００に記憶する（Ｓ１０８）。次に、プロセッサ３１０はデバイスＩＤ（作成した場合）と構成ファイルとをクライアントデバイス１００に返信する（Ｓ１０９）。クライアントデバイス１００は、デバイスＩＤ（作成された場合）と構成ファイルとを記憶部１１２に記憶する（Ｓ１１０）。
【００７５】
構成ファイル要求は、クライアントデバイス１００にインストールされているキッティング部５００によって自動的に実行されても、あるいは、製造工場でクライアントデバイス１００のユーザまたはオペレータによって手動で実行されてもよい。
【００７６】
［クライアントデバイス−通信サーバ間の通信］
【００７７】
一以上の実施形態において、セキュリティトークン発行要求、ＪＳＯＮデータ送信、およびコマンド送信を実行する固有プロトコルは、ＯＳＩ階層モデルのアプリケーション層のＨＴＴＰ上で実装される。
【００７８】
（セキュリティトークン発行要求）
図１２は、一以上の実施形態に係るセキュリティトークン発行要求のフローチャートを示す。
【００７９】
クライアントデバイス１００が通信サーバ４００にアクセスすると（Ｓ２０１）、通信サーバ４００のプロセッサ４１０はルート証明書やサーバＩＤなどの情報をクライアントデバイス１００に返信する（Ｓ２０２）。クライアントデバイス１００は、受信した情報に基づいて通信サーバ４００が正しいサーバであるかどうかを判定する（Ｓ２０３）。クライアントデバイス１００が、通信サーバ４００が正しいサーバでないと判定した場合（Ｓ２０３で“Ｎｏ”）、クライアントデバイス１００と通信サーバ４００間の通信が切断される（Ｓ２０４）。クライアントデバイス１００が、通信サーバ４００が正しいサーバであると判定した場合（Ｓ２０３で“Ｙｅｓ”）、クライアントデバイス１００はセキュリティトークン発行要求を実行する。
【００８０】
クライアントデバイス１００が、デバイスＩＤとバイナリデータ（暗号化されたデータ）とが含まれるＨＴＴＰリクエストを通信サーバ４００に送信すると（Ｓ２０５）、プロセッサ４１０は、このデバイスＩＤがデバイスセキュリティデータベース２００に存在するか（Ｓ２０６）；バイナリデータをデバイスＩＤに対応する秘密鍵で復号化可能か（Ｓ２０７）；ならびに、復号化されたテキストにデバイスＩＤが含まれているか（Ｓ２０８）、について判定する。上記のいずれかが「真」ではない場合、（Ｓ２０６が“Ｎｏ”、Ｓ２０７が“Ｎｏ”、あるいはＳ２０８が“Ｎｏ”）、プロセッサ４１０は、クライアントデバイス１００にＨＴＴＰ状態コード“５００”を返信する（Ｓ２０９）。Ｓ２０６〜Ｓ２０８がすべて「真」の場合（Ｓ２０６が“Ｙｅｓ”、Ｓ２０７が“Ｙｅｓ”、かつＳ２０８が“Ｙｅｓ”）、プロセッサ４１０は、セキュリティトークンとセキュリティトークンの有効期間とを発行し（Ｓ２１０）、セキュリティトークン、セキュリティトークンの作成日時、およびセキュリティトークンの有効期間をデバイスセキュリティデータベース２００に記憶する（Ｓ２１１）。次に、プロセッサ４１０は、セキュリティトークンとセキュリティトークンの有効期間とをクライアントデバイス１００に返信する（Ｓ２１２）。クライアントデバイス１００は、参照時間とセキュリティトークンの有効期間とに基づいてセキュリティトークンの有効期限を計算し、セキュリティトークン、セキュリティトークンの有効期間、およびセキュリティトークンの有効期限を記憶する（Ｓ２１３）。
【００８１】
（データ送信）
図１３は、一以上の実施形態に係るデータ送信処理のフローチャートを示す。
【００８２】
ステップＳ３０１〜Ｓ３０４は前述のステップＳ２０１〜Ｓ２０４と同じである。セキュリティトークンの発行後、所定の時間が経過していない場合には、ステップＳ３０１〜Ｓ３０４を省略することができる。
【００８３】
クライアントデバイス１００がデバイスＩＤ、セキュリティトークン、およびデータが含まれるＨＴＴＰリクエストを通信サーバ４００に送信すると（Ｓ３０５）、通信サーバ４００のプロセッサ４１０は、このデバイスＩＤがデバイスセキュリティデータベース２００に存在するか（Ｓ３０６）；ＨＴＴＰリクエストから抽出したセキュリティトークンが、デバイスＩＤに対応し、検索で得られたセキュリティトークンに一致するか（Ｓ３０７）；ならびに実時間がセキュリティトークンの有効期限を過ぎていないか（Ｓ３０８）、について判定する。上記のいずれかが「真」ではない場合、（Ｓ３０６が“Ｎｏ”、Ｓ３０７が“Ｎｏ”、あるいはＳ３０８が“Ｎｏ”）、プロセッサ４１０は、クライアントデバイス１００にＨＴＴＰ状態コード“４５０”を返信する（Ｓ３０９）。Ｓ３０６〜Ｓ３０８がすべて「真」の場合（Ｓ３０６が“Ｙｅｓ”、Ｓ３０７が“Ｙｅｓ”、かつＳ３０８が“Ｙｅｓ”）、プロセッサ４１０は、データをデバイスファイルデータベース６００に転送して（Ｓ３１０）、データをデバイスセキュリティデータベース６００に記憶する（Ｓ３１１）。あるいは、プロセッサ４１０はデータをメモリ４２０に記憶してもよい。次にプロセッサ４１０はＨＴＴＰ状態コード“２００”を返信し（Ｓ３１２）、クライアントデバイス１００がＨＴＴＰ状態コード“２００”を受信する（Ｓ３１３）。
【００８４】
（コマンド送信）
図１４は、一以上の実施形態に係るコマンド送信処理のフローチャートを示す。
【００８５】
ステップＳ４０１〜Ｓ４０４は前述のステップＳ２０１〜Ｓ２０４と同じである。セキュリティトークンの発行後、所定の時間が経過していない場合には、ステップＳ４０１〜Ｓ４０４を省略することができる。
【００８６】
クライアントデバイス１００が、デバイスＩＤ、セキュリティトークン、およびコマンドＩＤが含まれるＨＴＴＰリクエストを送信すると（Ｓ４０５）、通信サーバ４００のプロセッサ４１０は、このデバイスＩＤがデバイスセキュリティデータベース２００に存在するか（Ｓ４０６）；ＨＴＴＰリクエストから抽出したセキュリティトークンが、デバイスＩＤに対応し、検索で得られたセキュリティトークンに一致するか（Ｓ４０７）；ならびに実時間がセキュリティトークンの有効期限を過ぎていないか、のそれぞれについて真偽を判定するか（Ｓ４０８）、について判定する。上記のいずれかが「真」ではない場合、（Ｓ４０６が“Ｎｏ”、Ｓ４０７が“Ｎｏ”、あるいはＳ４０８が“Ｎｏ”）、プロセッサ４１０は、クライアントデバイス１００にＨＴＴＰ状態コード“４５０”を返信する（Ｓ４０９）。Ｓ４０６〜Ｓ４０８がすべて「真」の場合（Ｓ４０６が“Ｙｅｓ”、Ｓ４０７が“Ｙｅｓ”、かつＳ４０８が“Ｙｅｓ”）、プロセッサ４１０は、ＨＴＴＰリクエストのペイロードをデバイスファイルデータベース６００に転送して（Ｓ４１０）、ペイロードをデバイスセキュリティデータベース６００に記憶する（Ｓ４１１）。あるいは、プロセッサ４１０はペイロードをメモリ４２０に記憶してもよい。これと同時に、プロセッサ４１０は、クライアントデバイス１００から受信したコマンドＩＤに対応する処理を実行する（ステップＳ４１２）。次にプロセッサ４１０はＨＴＴＰ状態コード“２００”を返信し（Ｓ４１２）、クライアントデバイス１００がＨＴＴＰ状態コード“２００”を受信する（Ｓ４１３）。
【００８７】
コマンドＩＤに対応する処理が、ファイル記憶部７００からのファイルのダウンロードである場合、プロセッサ４１０はファイル記憶部７００からファイルを取得して、当該ファイルをクライアントデバイス１００に送信する。この場合、プロセッサ４１０はＨＴＴＰ状態コード“２００”を返信し、クライアントデバイス１００がＨＴＴＰ状態コード“２００”を受信する。ファイル記憶部７００にファイルが存在しない場合、プロセッサ４１０はＨＴＴＰ状態コード“４０４”を返信し、クライアントデバイス１００がＨＴＴＰ状態コード“４０４”を受信する。
【００８８】
前述のように、一以上の実施形態によれば、クライアントデバイス１００は、ＨＴＴＰＳ通信ネットワークにおいて、構成サーバ３００および／または通信サーバ４００を介して、クラウドプラットフォームＣＰとの間でデータを安全に送受信することができる。
【００８９】
一以上の実施形態によれば、クライアントデバイス１００は、クラウドプラットフォームＣＰが提供するサービスによって認識および管理されている構成サーバ３００にアクセスするだけでよい。構成サーバ３００が提供する構成ファイルはデバイスＩＤと公開鍵とのみから構成されているため、クライアントデバイス１００がライトウェイトデバイスであっても、クライアントデバイス１００はクラウドサービスを利用することができる。一以上の実施形態によれば、十分な演算能力、十分なメモリ容量、および十分な記憶容量を備えるクライアントデバイスもクラウドサービスを利用することができる。このため、クラウドサービスを利用する１台以上のクライアントデバイス１００を容易に展開することができる。
【００９０】
一以上の実施形態によれば、クライアントデバイス１００が、セキュリティトークンの発行を通信サーバ４００に要求したときに、通信サーバ４００は、対応する秘密鍵でバイナリデータを復号化可能かどうかを判定することで、クライアントデバイス１００が正しいデバイスであるかどうかを判定する。このため、通信サーバ４００は、クラウドサービスが管理するクライアントデバイス１００を容易かつ正確に確認することができると共に、不正なデバイスまたは未知のデバイスによるアクセスを阻止することができる。また、クライアントデバイス１００が正しくないサーバにアクセスすることも阻止することができる。
【００９１】
セキュリティトークンの発行後は、通信サーバ４００は、デバイスＩＤとセキュリティトークンとによりクライアントデバイス１００を指定することができる。このため、クライアントデバイス１００の台数が増えても、通信サーバ４００は、クラウドサービスが管理するクライアントデバイス４００を容易に指定することができる。また、通信サーバ４００は、セキュリティトークンの有効期間および／または有効期限に基づいて、クライアントデバイス１００のそれぞれの動作条件を認識することができる。
【００９２】
一以上の実施形態によれば、クライアントデバイス１００は、ＨＴＴＰＳ通信ネットワークを介して構成サーバ３００および通信サーバ４００と通信する。さらに、ＨＴＴＰ上で固有プロトコルが実装されクライアントデバイス１００と通信サーバ４００間で通信が行われるので、デバイスＩＤ等の情報を安全な接続を介して送信することができる。このため、クライアントデバイス１００は、通信サーバ４００経由で、デバイスファイルデータベース６００およびデバイスファイルデータベース７００との間でデータを安全に送受信することができる。
【００９３】
一以上の実施形態は、ＨＴＴＰＳ通信ネットワークに限らず、通信経路が暗号化されていない他の通信ネットワーク上でも実施することができる。
【００９４】
図１５は、ＨＴＴＰＳ通信ネットワーク上で実行される処理と、通信経路が暗号化されていない他の通信ネットワーク上で実行される処理との比較表を示す。
【００９５】
一以上の実施形態では、ＨＴＴＰＳ上で暗号化された接続を用いる場合、デバイスＩＤ、セキュリティトークン、およびデータ／コマンドが、暗号化されずに送信される。通信経路が暗号化されていない通信ネットワーク上では、ネットワーク上でのデバイスＩＤの改ざんあるいは盗難を阻止するために、デバイスＩＤが公開鍵で暗号化される（以下「暗号化されたキー」と呼ぶ）。デバイスＩＤの代わりに暗号化されたキーが構成ファイルに記載され、通信サーバ４００がデバイスセキュリティデータベース２００にアクセスするために使用される。通信経路が暗号化されていない通信ネットワーク上では、データ／コマンドの改ざんや盗難を防ぐにはセキュリティトークンのみでは不十分なことがある。このため、データ／コマンドが公開鍵で暗号化され、暗号化されたキーと共に通信サーバ４００に送信される。通信サーバ４００は、暗号化されたキーを用いて、対応する秘密鍵をデバイスセキュリティデータベース２０で検索し、検索された秘密鍵で暗号化されたデータ／コマンドを復号化する。通信サーバ４００が暗号化されたデータ／コマンドを復号できない場合、通信サーバ４００はデータ／コマンドを改ざんデータあるいは不正データとして破棄し、処理を終了する。
【産業上の利用可能性】
【００９６】
一以上の実施形態に係るサービス提供システム１０００は、専用のサービスを作成することなく、一般的な商用クラウド上のＰａａＳ（Platform as a Service）として作成されたウェブサービスおよび／またはデータベース上のプロトコルを提供することにより実施することができる。したがって、本サービス提供システム１０００は、通常のＰＣサーバ上にサービスを作成する場合に比べ、コスト、セキュリティ対策、およびスケーラビリティの面でより有利に実施することができる。
【００９７】
また、一以上の実施形態に係るサービス提供システム１０００は、インターネットに常時接続されているコネクテッドカーを用いたシステム、および／または省電力無線センサを使用する遠隔監視システムにも利用することができる。また、一以上の実施形態に係るサービス提供システム１０００は、工場の部品の管理および／または資源の監視にも利用することができる。
【００９８】
限定された数の実施形態に関して本開示を説明したが、本開示の利益を受ける当業者は、本開示の範囲を逸脱することなく他の各種の実施形態が可能であることを理解するであろう。したがって、本発明の範囲は添付の特許請求の範囲のみによって限定される。
【符号の説明】
【００９９】
１００            クライアントデバイス
１１０            インタフェースモジュール
１１１            ＣＰＵ
１１２            記憶部
１１３            ネットワークインタフェース
１１４            計時部
１１５            通信モジュール
１２０            アプリケーションモジュール
１２１，１２２    センサ
１０００          システム提供サービス
２００            デバイスセキュリティデータベース
３００            構成サーバ
３１０            プロセッサ
３２０            メモリ
３３０            計時部
３４０            入出力インタフェース
３５０            通信モジュール
４００            通信サーバ
４１０            プロセッサ
４２０            メモリ
４３０            計時部
４４０            入出力インタフェース
４５０            通信モジュール
５００            キッティング部
６００            デバイスファイルデータベース
７００            ファイル記憶部
ＣＰ              クラウドプラットフォーム
ＣＰ１            クラウドエッジ
ＣＰ２            バックエンドシステム
【図１】
2020057378.tif 000003
【図２】
2020057378.tif 000004
【図３】
2020057378.tif 000005
【図４】
2020057378.tif 000006
【図５】
2020057378.tif 000007
【図６】
2020057378.tif 000008
【図７】
2020057378.tif 000009
【図８】
2020057378.tif 000010
【図９】
2020057378.tif 000011
【図１０】
2020057378.tif 000012
【図１１】
2020057378.tif 000013
【図１２】
2020057378.tif 000014
【図１３】
2020057378.tif 000015
【図１４】
2020057378.tif 000016
【図１５】
2020057378.tif 000017