(57)【要約】【課題】ＯＳＧｉバンドルを提供するサービスプロバイダが正規に認証したアプリケーションのみが、ＯＳＧｉバンドルのメソッドを遠隔呼出できるようにする。【解決手段】本発明に係るＯＳＧｉ搭載端末は、配信されるアプリケーションを認証し、認証に成功したアプリケーションおよびこれを用いて生成した秘密情報を、利用端末に配信する。利用端末は、受け取った秘密情報に基づき生成した認証コードを用いて、ＯＳＧｉ搭載端末上のバンドルを呼び出す。【選択図】図１
2013037646.tif 000002
【特許請求の範囲】
【請求項１】
ＯＳＧｉフレームワークを実行するＯＳＧｉ実行部と、
前記ＯＳＧｉフレームワーク上で動作するバンドルを遠隔呼出するアプリケーションが正規に開発されたものであるか否かを認証する認証部と、
前記認証部が認証した前記アプリケーションに対応する秘密情報を生成する秘密情報生成部と、
前記秘密情報を前記アプリケーション毎に格納する秘密情報テーブルと、
前記アプリケーションから前記バンドルに対する遠隔呼出メッセージを受け取るメッセージ受信部と、
を備え、
前記遠隔呼出メッセージは、
呼出元である前記アプリケーションの識別子と、そのアプリケーションに対応する秘密情報を用いて生成された認証コードとを含んでおり、
前記メッセージ受信部は、前記遠隔呼出メッセージを受け取ると、
受け取った前記遠隔呼出メッセージ内に含まれる前記識別子をキーにして前記秘密情報テーブルから前記識別子に対応する前記秘密情報を読み出し、
読み出した前記秘密情報と、受け取った前記遠隔呼出メッセージ内に含まれる前記認証コードとを用いて前記遠隔呼出メッセージを認証し、
前記遠隔呼出メッセージを認証できた場合に限り前記バンドルを呼び出す
ことを特徴とするＯＳＧｉ搭載端末。
【請求項２】
前記バンドルを呼び出すために必要な権限レベルを定義する権限テーブルを備え、
前記秘密情報生成部は、
前記アプリケーションに割り当てる前記権限レベル毎に前記秘密情報を生成し、前記権限レベルと前記秘密情報を対応付けて前記秘密情報テーブルに格納し、
前記メッセージ受信部は、
前記遠隔呼出メッセージ内に含まれる前記識別子をキーにして前記秘密情報テーブルから前記識別子に対応する前記権限レベルを読み出すとともに、前記遠隔呼出メッセージが呼び出そうとしている前記バンドルを呼び出すために必要となる権限レベルを前記権限テーブルから読み出し、
前記秘密情報テーブルから読み出した前記権限レベルが、前記バンドルを呼び出すために必要となる権限レベルを満たしている場合に限り、前記バンドルを呼び出す
ことを特徴とする請求項１記載のＯＳＧｉ搭載端末。
【請求項３】
前記認証部は、
前記アプリケーションの配布元から前記アプリケーションを受け取って前記認証を実施し、
前記アプリケーションを実行して前記バンドルを遠隔呼出する利用端末へ、認証に成功した前記アプリケーションを配信する
ことを特徴とする請求項１記載のＯＳＧｉ搭載端末。
【請求項４】
前記認証部は、
前記秘密情報と前記アプリケーションの識別子をセットにして、前記アプリケーションと併せて前記利用端末へ配信する
ことを特徴とする請求項３記載のＯＳＧｉ搭載端末。
【請求項５】
前記遠隔呼出メッセージは、
呼出元である前記アプリケーションの識別子、そのアプリケーションに対応する秘密情報を用いて生成された認証コードに加えて、前記認証コードを生成する際に用いられた乱数を含んでおり、
前記メッセージ受信部は、前記遠隔呼出メッセージを受け取ると、
前記秘密情報、受け取った前記遠隔呼出メッセージ内に含まれる前記認証コード、および前記乱数を用いて前記遠隔呼出メッセージを認証する
ことを特徴とする請求項１記載のＯＳＧｉ搭載端末。
【請求項６】
請求項１記載のＯＳＧｉ搭載端末と、
前記アプリケーションが正規に開発されたものであるか否かを認証するための認証情報を管理する権限管理装置と、
を有し、
前記権限管理装置は、
前記認証情報を用いて、前記アプリケーションが正規に開発されたものであることを示す第２認証情報を生成し、前記アプリケーションと併せて前記ＯＳＧｉ搭載端末に送信し、
前記認証部は、
前記権限管理装置から受け取った前記第２認証情報を用いて、前記アプリケーションを認証する
ことを特徴とするＯＳＧｉシステム。
【請求項７】
請求項２記載のＯＳＧｉ搭載端末と、
前記アプリケーションが正規に開発されたものであるか否かを認証するための認証情報を管理する権限管理装置と、
前記アプリケーションの配布元である配信装置と、
を有し、
前記権限管理装置は、
前記権限レベルと対応付けて前記認証情報を管理し、
前記アプリケーションに対して前記権限レベルを割り当てて前記ＯＳＧｉ搭載端末へ配信するよう要求するリクエストを前記配信装置から受け取ると、
要求された権限レベルに対応する前記認証情報を用いて、前記アプリケーションが正規に開発されたものであることを示す第２認証情報を生成し、前記アプリケーションと併せて前記ＯＳＧｉ搭載端末に送信し、
前記認証部は、
前記権限管理装置から受け取った前記第２認証情報を用いて、前記アプリケーションを認証する
ことを特徴とするＯＳＧｉシステム。
【請求項８】
前記アプリケーションを実行して前記バンドルを遠隔呼出する利用端末を有し、
前記認証部は、
前記権限管理装置から前記アプリケーションを受け取って前記認証を実施し、認証に成功した前記アプリケーションを前記利用端末へ配信する
ことを特徴とする請求項７記載のＯＳＧｉシステム。
【請求項９】
前記認証部は、
前記秘密情報と前記アプリケーションの識別子をセットにして、前記アプリケーションと併せて前記利用端末へ配信する
ことを特徴とする請求項８記載のＯＳＧｉシステム。
【請求項１０】
前記利用端末は、
前記アプリケーションの識別子と、そのアプリケーションに対応する前記秘密情報を用いて生成された認証コードとを含む前記遠隔呼出メッセージを、前記ＯＳＧｉ搭載端末へ送信し、
前記メッセージ受信部は、
前記利用端末が送信した前記遠隔呼出メッセージを受け取る
ことを特徴とする請求項９記載のＯＳＧｉシステム。
【請求項１１】
前記利用端末は、
前記アプリケーションの識別子と、そのアプリケーションに対応する前記秘密情報および乱数を用いて生成された認証コードとを含む前記遠隔呼出メッセージを、前記ＯＳＧｉ搭載端末へ送信し、
前記メッセージ受信部は、
前記利用端末が送信した前記遠隔呼出メッセージを受け取ると、
前記秘密情報、受け取った前記遠隔呼出メッセージ内に含まれる前記認証コード、および前記乱数を用いて前記遠隔呼出メッセージを認証する
ことを特徴とする請求項９記載のＯＳＧｉシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＯＳＧｉフレームワーク上でＯＳＧｉバンドルを実行する端末に関するものである。
【背景技術】
【０００２】
近年、宅内機器、車載機器など、様々な組込み機器のネットワーク化が進みつつある。様々な規格が存在する機器同士の相互接続性を確保するための技術として、Ｊａｖａ（登録商標）のフレームワークであるＯＳＧｉ（非特許文献１）が注目されている。
【０００３】
ＯＳＧｉは、アプリケーションの遠隔管理や連携に関する仕様を規定している。ＯＳＧｉ上で動くモジュールは、バンドルという単位で管理され、ＪａｖａＶＭ（Ｊａｖａ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）を停止させることなく、バンドルをＯＳＧｉフレームワーク上に追加および削除することができる。そのため、様々な規格に対応したアプリケーションを配信し、機器同士を連携させた新規サービスを実現することが容易になる。
【０００４】
下記特許文献１には、ＯＳＧｉを搭載するゲートウェイ装置へサービスを提供する方法が記載されている。このサービス提供方法では、ゲートウェイ装置が、自身に接続されたクライアント端末の識別情報を取得し、識別情報に対応したＯＳＧｉバンドルをサービスサプライヤから取得することにより、ユーザが自らＯＳＧｉバンドルをインストールする必要はなくなる。
【０００５】
ＯＳＧｉはＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）をサポートしないフレームワークである。そのため、特許文献１に記載されている技術では、ユーザはバンドルを管理する不要がなくなるものの、ユーザが宅内機器をコントロールするためには、他のＧＵＩを持ったソフトウェアプラットフォームとＯＳＧｉを連携させることが必要になる。
【０００６】
これに対し、Ａｎｄｒｏｉｄ（登録商標）やｉＰｈｏｎｅ（登録商標）等の優れたＧＵＩを持つモバイルプラットフォームとＯＳＧｉバンドルを連携させる技術の開発が進められている。異なるソフトウェアプラットフォーム間で機能を相互利用する方法としては、ＲＰＣ（Ｒｅｍｏｔｅ  Ｐｒｏｃｅｄｕｒｅ  Ｃａｌｌ）がある。
【０００７】
下記特許文献２には、携帯電話機とＰＣ等のローカルに存在する機器間において、携帯電話内にある電話帳やスケジュール帳などの情報を保護しつつ、携帯電話内の機能をＲＰＣによって利用する技術が記載されている。この技術では、サーバから配信されるセキュリティーポリシーに準じて、ＲＰＣによって呼び出すことができる携帯電話内の機能を限定している。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１０−９７５９０公報
【特許文献２】特開２００９−４９６７０公報
【非特許文献】
【０００９】
【非特許文献１】ＯＳＧｉ  Ａｌｌｉａｎｃｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎｓ、ＵＲＬ：http://www.osgi.org/Specifications/HomePage（２０１１年８月１日取得）
【発明の概要】
【発明が解決しようとする課題】
【００１０】
ＯＳＧｉバンドルを遠隔呼出しようとする場合、特許文献１のようなＯＳＧｉプラットフォームを搭載した端末に対して、特許文献２に記載されているＲＰＣによる遠隔呼出を利用することが考えられる。
【００１１】
しかし、特許文献２に記載されている技術では、携帯電話内の機能を呼び出す機器のアプリケーションを識別していないため、悪意あるアプリケーションがＯＳＧｉバンドルの機能をＲＰＣによって利用する可能性がある。例えば、ＯＳＧｉフレームワーク上で宅内機器をコントロールするバンドルが動作している場合、悪意のある人間が開発したアプリケーションがＲＰＣによって宅内機器を乗っ取る危険性がある。
【００１２】
また、特許文献１に記載されている技術のように端末を認証すれば、端末が正規なものであるか否かを認証することはできる可能性があるが、正規な端末にも不正なアプリケーションがインストールされる可能性はあるため、アプリケーションが正規なものであるか否かを認証することが望ましい点に変わりはない。
【００１３】
本発明は、上記のような課題を解決するためになされたものであり、ＯＳＧｉバンドルを提供するサービスプロバイダが正規に認証したアプリケーションのみが、ＯＳＧｉバンドルのメソッドを遠隔呼出できるようにすることを目的としている。
【課題を解決するための手段】
【００１４】
本発明に係るＯＳＧｉ搭載端末は、配信されるアプリケーションを認証し、認証に成功したアプリケーションおよびこれを用いて生成した秘密情報を、利用端末に配信する。利用端末は、受け取った秘密情報に基づき生成した認証コードを用いて、ＯＳＧｉ搭載端末上のバンドルを呼び出す。
【発明の効果】
【００１５】
本発明に係るＯＳＧｉ搭載端末は、アプリケーションからバンドルに対する遠隔呼出を受けたときは、そのアプリケーションが自己の配信したアプリケーションであるかを認証することができる。これにより、ＯＳＧｉ搭載端末自身が認証していないアプリケーションはバンドルを遠隔呼出することができなくなるので、バンドルを提供するサービスプロバイダが配信したアプリケーションのみがバンドルを遠隔呼出できるようにすることができる。
【図面の簡単な説明】
【００１６】
【図１】実施形態１に係るＯＳＧｉシステム１０００の構成図である。
【図２】鍵管理テーブル１０４の構成例を示す図である。
【図３】権限管理テーブル１３６の構成例を示す図である。
【図４】秘密情報テーブル１３７の構成例を示す図である。
【図５】ＲＰＣモジュール１１５が送信するＲＰＣメッセージの一例を示す図である。
【図６】権限管理サーバ１００がバンドルの権限レベルを設定する処理を示すシーケンス図である。
【図７】権限管理サーバ１００がアプリケーションパッケージ１１３へ署名を付与する処理を説明するシーケンス図である。
【図８】アプリケーションパッケージ１１３を配信する処理を説明するシーケンス図である。
【図９】アプリケーション１１４が機能提供バンドル１３２を遠隔呼出する処理を説明するシーケンス図である。
【図１０】図９のステップＳ９１０の続きを示すシーケンス図である。
【図１１】実施形態２において、アプリケーション１１４が機能提供バンドル１３２を遠隔呼出する処理を説明するシーケンス図である。
【発明を実施するための形態】
【００１７】
＜実施の形態１＞
図１は、本発明の実施形態１に係るＯＳＧｉシステム１０００の構成図である。ＯＳＧｉシステム１０００は、ＯＳＧｉバンドルが実装しているサービスを提供するシステムであり、権限管理サーバ１００、アプリケーション配信サーバ１１０、ＯＳＧｉ搭載端末１３０、ＯＳＧｉ利用端末１２０を有する。
【００１８】
以下では、記載の便宜上、各プログラムを動作主体として説明する場合があるが、実際にこれらプログラムを実行するのは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）などの演算装置であることを付言しておく。また、各プログラムと同等の機能を回路デバイスなどのハードウェアによって実装することもできる。
【００１９】
ＯＳＧｉ搭載端末１３０とＯＳＧｉ利用端末１２０は、同じプライベートネットワーク１６０内に配置され、ゲートウェイ１５０を介してインターネット１４０に接続されている。権限管理サーバ１００と他のサーバまたは端末は、ＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔ  Ｌａｙｅｒ）などの安全な通信プロトコルを用いて通信する。
【００２０】
ＯＳＧｉ搭載端末１３０とゲートウェイ１５０は、同一端末として構成してもよい。例えば、ＯＳＧｉ搭載端末１３０がホームゲートウェイとしての機能を備え、ＡｎｄｒｏｉｄやＷｉｎｄｏｗｓＰｈｏｎｅ等のＯＳ（オペレーティングシステム）を搭載したスマートフォンやタブレット端末を用いてＯＳＧｉ利用端末１２０を構成することができる。この場合、ホームゲートウェイのＯＳＧｉ上で動作するホームコントロール用の機能を、スマートフォンやタブレット上のアプリケーションから利用することが考えられる。また、ＯＳＧｉ利用端末１２０とＯＳＧｉ搭載端末１３０は同一端末として構成してもよい。例えば、ＡｎｄｒｏｉｄやＷｉｎｄｏｗｓＰｈｏｎｅ等のＯＳを搭載したスマートフォンやタブレット端末にＯＳＧｉを搭載してもよい。
【００２１】
権限管理サーバ１００は、バンドルとアプリケーションの権限レベルを管理するサーバであり、権限設定プログラム１０１、署名生成プログラム１０２、公開鍵配信プログラム１０３、鍵管理テーブル１０４を備える。また必要に応じて、これらプログラムを実行するＣＰＵ、記憶装置、ネットワークインターフェースなどを適宜備える。
【００２２】
権限設定プログラム１０１は、ＯＳＧｉ搭載端末１３０が実行する各バンドルが有するメソッドを呼び出すために必要な権限レベルを、ＯＳＧｉ搭載端末１３０に対して指定するプログラムである。署名生成プログラム１０２は、アプリケーション配信サーバ１１０が配信するアプリケーション１１４に電子署名を付与し、いったんアプリケーション配信サーバ１１０を経由してＯＳＧｉ搭載端末１３０へ配信する。公開鍵配信プログラム１０３は、ＯＳＧｉ搭載端末１３０が権限管理サーバ１００から受け取ったアプリケーション１４０を認証するために用いる公開鍵を配信する。
【００２３】
鍵管理テーブル１０４は、アプリケーションパッケージを署名する際に用いる秘密鍵と、ＯＳＧｉ搭載端末１３０がその署名を検証する際に用いる公開鍵を、前述の権限レベル毎に保管するテーブルである。鍵管理テーブル１０４が格納している鍵は、アプリケーションパッケージ１１３が正規に開発されたものであるか否かを認証するための「認証情報」に相当する。鍵管理テーブル１０４の詳細は、後述の図２で説明する。
【００２４】
アプリケーション配信サーバ１１０は、アプリケーション１１４の配信元であるサーバであり、署名要求プログラム１１１、配信プログラム１１２、アプリケーションパッケージ１１３を備える。また必要に応じて、これらプログラムを実行するＣＰＵ、記憶装置、ネットワークインターフェースなどを適宜備える。
【００２５】
署名要求プログラム１１１は、アプリケーションパッケージ１１３へ電子署名を付与するように権限管理サーバ１００へ要求するプログラムである。配信プログラム１１２は、権限管理サーバ１００が電子署名を付与したアプリケーション１１４を、ＯＳＧｉ搭載端末１３０を経由してＯＳＧｉ利用端末１２０に配信するプログラムである。
【００２６】
アプリケーションパッケージ１１３は、ＯＳＧｉ利用端末１２０がＯＳＧｉ搭載端末１３０上のＯＳＧｉバンドルを遠隔呼出するために用いるソフトウェアであり、アプリケーション１１４とＲＰＣモジュール１１５を有する。アプリケーション１１４は、ＲＰＣモジュール１１５を利用して、ＯＳＧｉ搭載端末１３０上で動作するバンドルのメソッドを呼び出す。ＲＰＣモジュール１１５は、ＯＳＧｉ搭載機器１３０上のバンドルのメソッドを遠隔呼出するための機能を備えたソフトウェアモジュールである。
【００２７】
ＯＳＧｉ搭載端末１３０は、ＯＳＧｉプラットフォーム１３８を実行する端末であり、権限設定バンドル１３１、機能提供バンドル１３２、署名検証バンドル１３３、秘密情報生成バンドル１３４、ＲＰＣバンドル１３５、権限管理テーブル１３６、秘密情報テーブル１３７を備える。また必要に応じて、これらプログラムを実行するＣＰＵ、記憶装置、ネットワークインターフェースなどを適宜備える。各バンドルは、ＯＳＧｉプラットフォーム１３８上のバンドルとして構成されている。
【００２８】
権限設定バンドル１３１は、権限設定プログラム１０１からバンドルのメソッドに対して権限レベルを指定するよう指示するリクエストを受け取り、権限管理テーブル１３６にその内容を格納する。
【００２９】
機能提供バンドル１３２は、ＲＰＣ経由でＯＳＧｉ利用端末１２０が実行するアプリケーション１１４に機能を提供するバンドルである。
【００３０】
署名検証バンドル１３３は、配信プログラム１１２から受信したアプリケーションパッケージ１１３に付与されている電子署名を検証し、検証結果に応じた権限レベルをアプリケーションパッケージ１１３に割り当てる。
【００３１】
秘密情報生成バンドル１３４は、バンドルを呼び出そうとするアプリケーションパッケージ１１３がＯＳＧｉ搭載端末１３０によって配信されたものであるか否かを認証するための秘密情報を、アプリケーションパッケージ１１３に割り当てられた権限レベル毎に生成する。また、その秘密情報をアプリケーションパッケージ１１３に付加し、その内容を秘密情報テーブル１３７に格納する。
【００３２】
ＲＰＣバンドル１３５は、ＲＰＣモジュール１１５からＲＰＣメッセージを受信し、その内容に応じて機能提供バンドル１３２のメソッドを呼び出す。
【００３３】
権限管理テーブル１３６は、アプリケーション１１４が機能提供バンドル１３２のメソッドを呼び出すために必要な権限レベルを、機能提供バンドル１３２のメソッド毎に記述するテーブルである。秘密情報テーブル１３７は、アプリケーションパッケージ１１３に割り当てる秘密情報を、アプリケーションパッケージ１１３に割り当てられた権限レベルとともに記述するテーブルである。これらテーブルの詳細は、後述の図３〜図４で改めて説明する。
【００３４】
本発明における「ＯＳＧｉ実行部」は、ＯＳＧｉフレームワーク１３８およびこれを実行するＣＰＵが相当する。「認証部」は、署名検証バンドル１３３およびこれを実行するＣＰＵが相当する。「メッセージ受信部」は、ＲＰＣバンドル１３５およびこれを実行するＣＰＵが相当する。
【００３５】
ＯＳＧｉ利用端末１２０は、ＯＳＧｉ搭載端末１３０の機能提供バンドル１３２が有するメソッドを遠隔呼出するアプリケーションパッケージ１２１を実行する端末であり、アプリケーションパッケージ１２１、秘密情報保存領域１２３を備える。
【００３６】
アプリケーションパッケージ１２１は、アプリケーション配信サーバ１１０が配信するアプリケーションパッケージ１１３と同様に、アプリケーション１１４とＲＰＣモジュール１１５を有する。さらに、秘密情報生成バンドル１３４が生成した秘密情報を格納する秘密情報ファイル１２２を含む。
【００３７】
秘密情報保存領域１２３は、アプリケーションパッケージ１２１毎に設けられ、他のアプリケーションパッケージ１２１からはアクセスできない、隔離された記憶領域である。ＡｎｄｒｏｉｄやＪａｖａにおけるサンドボックス領域が、これに相当する。
【００３８】
図２は、鍵管理テーブル１０４の構成例を示す図である。鍵管理テーブル１０４は、ＯＳＧｉ搭載端末１３０が実行するバンドルを遠隔呼出する際に必要になる権限レベル毎に公開鍵と秘密鍵を対応付けて保持するテーブルである。例えば、権限レベル３を与えられたアプリケーション１１４は、遠隔呼出するために必要な権限レベルが１〜３のバンドルのメソッドを呼び出すことができる。
【００３９】
図３は、権限管理テーブル１３６の構成例を示す図である。権限管理テーブル１３６は、機能提供バンドル１３２の名称、同バンドルが備えるメソッドの名称、およびそのメソッドを遠隔呼出するために必要となる権限レベルの組み合わせを管理するテーブルである。
【００４０】
図４は、秘密情報テーブル１３７の構成例を示す図である。秘密情報テーブル１３７は、アプリケーションパッケージ１１３毎に固有のアプリケーションＩＤ、アプリケーションパッケージ１１３に割り当てられた秘密情報、アプリケーションパッケージ１１３に割り当てられた権限レベルの組み合わせを管理するテーブルである。
【００４１】
図５は、ＲＰＣモジュール１１５が送信するＲＰＣメッセージの一例を示す図である。ＲＰＣメッセージは、機能提供バンドル１３２のメソッドを呼び出すアプリケーションパッケージ１２１のアプリケーションＩＤ、呼び出すメソッドを提供する機能提供バンドル名、呼び出すメソッド名、引数を含む。
【００４２】
ＲＰＣメッセージの形式は、図５に例示するものに限られない。また、ＯＳＧｉ利用端末１２０は、必ずしもＲＰＣの仕組みを利用してバンドルを遠隔呼出する必要はなく、その他の遠隔呼出メッセージを用いることもできる。以下では説明の便宜上、ＲＰＣを用いることを前提とする。
【００４３】
以上、ＯＳＧｉシステム１０００の構成について説明した。以下では、ＯＳＧｉシステム１０００の動作例について説明する。必要に応じて、具体例として、図２〜図４に記載しているデータを用いる。
【００４４】
図６は、権限管理サーバ１００がバンドルの権限レベルを設定する処理を示すシーケンス図である。以下、図６の各ステップについて説明する。
（図６：ステップＳ６０１）
権限管理サーバ１００の管理者は、権限設定プログラム１０１に対して、権限レベルを設定する対象とするメソッドを提供する機能提供バンドル名、メソッド名、設定する権限レベルを入力する。例えば、権限レベルを設定する対象とするメソッドが、機能提供バンドルＡのメソッドａ１であり、権限レベルが１であった場合は、機能提供バンドル名としてＡ、メソッド名としてａ１、権限レベルとして１を入力する。
【００４５】
（図６：ステップＳ６０２）
権限設定プログラム１０１は、ＯＳＧｉ搭載端末１３０に対して、ステップＳ６０１で入力された機能提供バンドル名、メソッド名、権限レベルを送信する。ステップＳ６０１で説明した例の場合、機能提供バンドル名としてＡ、メソッド名としてａ１、権限レベルとして１を送信する。
（図６：ステップＳ６０３）
権限設定バンドル１３１は、ステップＳ６０２で受信した機能提供バンドル名、メソッド名、権限レベルを権限管理テーブル１３６に格納する。ステップＳ６０１で説明した例の場合、図３に示すデータ例のように、機能提供バンドル名Ａ、メソッド名ａ１、権限レベル１が権限管理テーブル１３６に挿入される。
【００４６】
図７は、権限管理サーバ１００がアプリケーションパッケージ１１３へ署名を付与する処理を説明するシーケンス図である。以下、図７の各ステップについて説明する。
（図７：ステップＳ７０１）
署名要求プログラム１１１は、権限管理サーバ１００に対して、アプリケーションパッケージ１１３本体と、そのアプリケーションパッケージ１１３に与える権限レベルの値を送信する。
（図７：ステップＳ７０２）
署名生成プログラム１０２は、ステップＳ７０１で受け取った権限レベルに対応する秘密鍵を鍵管理テーブル１０４から抽出する。例えばステップＳ７０１で受け取った権限レベルが１である場合、図２に示すデータ例では、秘密鍵１が抽出される。
【００４７】
（図７：ステップＳ７０３）
署名生成プログラム１０２は、ステップＳ７０２で抽出した秘密鍵を用いて電子署名を作成し、ステップＳ７０１で受信したアプリケーションパッケージ１１３にその電子署名を付与する。
（図７：ステップＳ７０４）
署名生成プログラム１０２は、ステップＳ７０３で電子署名を付与したアプリケーションパッケージ１１３を、アプリケーション配信サーバ１１０に送信する。
【００４８】
図８は、アプリケーションパッケージ１１３を配信する処理を説明するシーケンス図である。以下、図８の各ステップについて説明する。
（図８：ステップＳ８０１）
アプリケーション配信プログラム１１２は、ステップＳ７０４で権限管理サーバ１００から受信したアプリケーションパッケージ１１３と、そのアプリケーションパッケージ１１３に割り当てられた権限レベルの値を、ＯＳＧｉ搭載端末１３０に送信する。このアプリケーションパッケージ１１３には、権限管理サーバ１００が作成した電子署名が付与されている。
（図８：ステップＳ８０２）
署名検証バンドル１３３は、ステップＳ８０１でアプリケーション配信サーバ１１０から受信した権限レベルの値を、権限管理サーバ１００に送信する。
【００４９】
（図８：ステップＳ８０３）
公開鍵配信プログラム１０３は、ステップＳ８０２で受信した権限レベルの値に対応する公開鍵を権限管理テーブル１３６から抽出し、ＯＳＧｉ搭載端末１３０に送信する。例えばステップＳ８０１でＯＳＧｉ搭載端末１３０が受信した権限レベルが１である場合、図３のデータ例では公開鍵１がＯＳＧｉ搭載端末１３０に送信される。
（図８：ステップＳ８０４〜Ｓ８０５）
署名検証バンドル１３３は、ステップＳ８０３で受信した公開鍵を用いて、ステップＳ８０１で受信したアプリケーションパッケージ１１３に付与されている電子署名を検証する（Ｓ８０４）。電子署名の検証に成功した場合はステップＳ８０６に進み、失敗した場合はアプリケーションパッケージ１１３を破棄し、本処理シーケンスを終了する（Ｓ８０５）。
【００５０】
（図８：ステップＳ８０６）
秘密情報生成バンドル１３４は、アプリケーションパッケージ１１３に固有の秘密情報と、アプリケーションパッケージ１１３を識別するための値であるアプリケーションＩＤを生成し、ステップＳ８０１で受信した権限レベルの値とともに、秘密情報テーブル１３７に格納する。図４のデータ例では、アプリケーションＩＤ「０００３」と秘密情報「ｊｏｈ４ｌ３ｈ１ｓｆ」が生成され、権限レベル１とともに秘密情報テーブル１３７に格納されている。
（図８：ステップＳ８０７）
秘密情報生成バンドル１３４は、ステップＳ８０６で生成した秘密情報とアプリケーションＩＤを、アプリケーションパッケージ１１３の内部に秘密情報ファイル１２２として組み込む。
（図８：ステップＳ８０７：補足）
例えば、アプリケーション１１４がＪａｒ（Ｊａｖａ  Ａｒｃｈｉｖｅ）形式やＡｎｄｒｏｉｄアプリケーション形式に準拠している場合は、アプリケーションパッケージ１１３はｚｉｐ形式の圧縮ファイルであるため、アプリケーションパッケージ１１３をいったん解凍し、秘密情報ファイル１１３を含めて再圧縮することにより、アプリケーションパッケージ１１３内に秘密情報ファイル１２２を組み込むことができる。
（図８：ステップＳ８０８）
秘密情報生成バンドル１３４は、ステップＳ８０７で秘密情報ファイル１２２を組み込んだアプリケーションパッケージ１１３を、ＯＳＧｉ利用端末１２０に送信する。
【００５１】
図９は、アプリケーション１１４が機能提供バンドル１３２を遠隔呼出する処理を説明するシーケンス図である。記載の便宜上、図９と図１０の２つに図面を分割した。以下、図９の各ステップについて説明する。
（図９：ステップＳ９０１）
アプリケーション１１４は、ＲＰＣモジュール１１５に、呼び出すメソッドを提供する機能提供バンドル名、メソッド名、引数を渡す。ここでは例示のため、図３に示した機能提供バンドル名Ａの機能提供バンドルが、宅内の照明機器をコントロールするバンドルであり、メソッド名ａ１が照明の明るさを設定するメソッドであり、引数には照度を表す数値が入るものとする。また、アプリケーション１１４には、図４に示すアプリケーションＩＤ「０００３」が割り当てられているものとする。
【００５２】
（図９：ステップＳ９０２）
ＲＰＣモジュール１１５は、秘密情報保存領域１２３に秘密情報が保存されているか否かを確認する。秘密情報が保存されている場合はステップＳ９０３に進み、保存されていない場合はステップＳ９０６に進む。例えば、アプリケーション１１４の初回実行時は、以下のステップで説明するように秘密情報を秘密情報保存領域１２３へ保存していないため、ステップＳ９０３に進むことになる。
（図９：ステップＳ９０２：補足）
本ステップは、秘密情報ができる限り秘密情報保存領域１２３に格納されていることが望ましいことに鑑みたものである。例えば、秘密情報を新しい値に更新しようとした場合、アプリケーションパッケージ１１３内に秘密情報が組み込まれているよりも、秘密情報保存領域１２３に格納されているほうが更新しやすい。また、アプリケーションパッケージ１１３の仕様によっては、アプリケーションパッケージ１１３全体が書換不可である場合もあるため、秘密情報保存領域１２３に秘密情報が格納されているほうが便宜であると考えられる。
【００５３】
（図９：ステップＳ９０３〜Ｓ９０５）
ＲＰＣモジュール１１５は、秘密情報ファイル１２２から秘密情報とアプリケーションＩＤを取得する（Ｓ９０３）。ＲＰＣモジュール１１５は、ステップＳ９０３で取得した秘密情報とアプリケーションＩＤを、秘密情報保存領域１２３に保存する（Ｓ９０４）。ＲＰＣモジュール１１５は、秘密情報ファイル１２２をアプリケーションパッケージ１１３から削除する（Ｓ９０５）。
（図９：ステップＳ９０６）
ＲＰＣモジュール１１５は、秘密情報保存領域１２３からアプリケーションＩＤと秘密情報を読み取る。
【００５４】
（図９：ステップＳ９０７）
ＲＰＣモジュール１１５は、ステップＳ９０６で読み取ったアプリケーションＩＤと、ステップＳ９０１で受け取ったバンドル名、メソッド名、引数を結合し、ＲＰＣメッセージを生成する。ステップＳ９０１で説明した各パラメータを用いてＲＰＣメッセージを生成すると、図５のようなＲＰＣメッセージとなる。
（図９：ステップＳ９０８）
ＲＰＣモジュール１１５は、ステップＳ９０７で生成したＲＰＣメッセージと秘密情報を結合し、結合した情報に基づきハッシュを生成する。ステップＳ９０１で説明した各パラメータを用いる例の場合は、図５に示すＲＰＣメッセージに秘密情報「ｊｏｈ４ｌ３ｈ１ｓｆ」を結合し、ハッシュを生成する。
【００５５】
（図９：ステップＳ９０９）
ＲＰＣモジュール１１５は、ステップＳ９０７で生成したＲＰＣメッセージとステップＳ９０８で生成したハッシュを、ＯＳＧｉ利用端末１２０に送信する。
（図９：ステップＳ９１０）
ＲＰＣバンドル１３５は、ステップＳ９０９で受信したＲＰＣメッセージからアプリケーションＩＤを抽出する。図５に示すメッセージ例の場合、アプリケーションＩＤとして「０００３」が抽出される。
【００５６】
図１０は、図９のステップＳ９１０の続きを示すシーケンス図である。以下、図１０の各ステップについて説明する。
（図１０：ステップＳ９１１）
ＲＰＣバンドル１３５は、秘密情報テーブル１３７から、ステップＳ９０６で抽出したアプリケーションＩＤに対応する秘密情報と権限レベルを抽出する。図５に示すデータ例では、アプリケーションＩＤが「０００３」であれば、秘密情報「ｊｏｈ４ｌ３ｈ１ｓｆ」と権限レベル１が抽出される。
（図１０：ステップＳ９１２）
ＲＰＣバンドル１３５は、ステップＳ９０９で受信したＲＰＣメッセージから機能提供バンドル名とメソッド名を抽出する。図５に示したメッセージ例の場合では、機能提供バンドル名としてＡ、メソッド名としてａ１が抽出される。
【００５７】
（図１０：ステップＳ９１３）
ＲＰＣバンドル１３５は、権限管理テーブル１３６から、ステップＳ９１２で抽出した機能提供バンドル名とメソッド名に対応する権限レベルを抽出する。例えば機能提供バンドル名がＡ、メソッド名がａ１であれば、図３に示すデータ例では権限レベル１が抽出される。
（図１０：ステップＳ９１４）
ＲＰＣバンドル１３５は、ステップＳ９１１で抽出した権限レベルとステップＳ９１３で抽出した権限レベルを比較する。ステップＳ９１１で抽出した権限レベルがステップＳ９１３で抽出した権限レベル以上である場合は、ステップＳ９１５に進む。ステップＳ９１１で抽出した権限レベルがステップＳ９１３で抽出した権限レベルより小さい場合は、本処理シーケンスを終了する。例えばステップＳ９０１で説明したパラメータを用いる場合、機能提供バンドル１３２のメソッドを呼び出すために必要な権限レベルは１であり、アプリケーション１１４に割り当てられている権限レベルも１であるため、ステップＳ９１５に進む。一方、アプリケーション１１４が呼び出すメソッドが、図３に示す機能提供バンドルＡのメソッドａ２であった場合、権限レベルが足りないため、本処理シーケンスを終了する。
【００５８】
（図１０：ステップＳ９１５〜Ｓ９１６）
ＲＰＣバンドル１３５は、ステップＳ９０９で受信したＲＰＣメッセージとステップＳ９１１で抽出された秘密情報を結合し、結合した情報に基づきハッシュを生成する（Ｓ９１５）。両者のハッシュが一致する場合はステップＳ９１７に進み、一致しない場合は本処理シーケンスを終了する（Ｓ９１６）。
（図１０：ステップＳ９１５〜Ｓ９１６：補足）
図８の処理シーケンスによって配信されたアプリケーションパッケージ１２１以外のアプリケーションパッケージ１２１には、秘密情報が割り当てられないため、ステップＳ９１７に進むことができず、メソッドを呼び出すことができない。これにより、権限管理サーバ１００およびＯＳＧｉ搭載端末１３０によって認証された正規のアプリケーションのみが、バンドルのメソッドを呼び出すことができる。
【００５９】
（図１０：ステップＳ９１７）
ＲＰＣバンドル１３５が、ステップＳ９０９で受信したＲＰＣメッセージから引数を抽出する。図５に示したメッセージ例の場合では、引数として「１００」が抽出される。
（図１０：ステップＳ９１８）
ＲＰＣバンドル１３５は、ステップＳ９１２で抽出した機能提供バンドル名とメソッド名を持つメソッドを、ステップＳ９１７で抽出した引数を与えて呼び出す。
【００６０】
（図１０：ステップＳ９１９）
ＲＰＣバンドル１３５は、ステップＳ９１８で呼び出したバンドルのメソッドの戻り値を、ＯＳＧｉ利用端末１２０に送信する。
（図１０：ステップＳ９２０）
ＲＰＣモジュール１１５は、ステップＳ９１９で受信した戻り値をアプリケーション１１４に渡す。
【００６１】
＜実施の形態１：まとめ＞
以上のように、本実施形態１に係るＯＳＧｉ搭載端末１３０は、アプリケーション配信サーバ１１０から受け取ったアプリケーションパッケージ１１３が正規のものであるか否かを認証し、認証に成功した場合は、秘密情報をそのアプリケーションパッケージ１１３に組み込んでＯＳＧｉ利用端末１２０に配信する。これにより、不正なアプリケーション１１４がＯＳＧｉ搭載端末１３０上のバンドルを呼び出すことを排除できる。なお、アプリケーションパッケージ１１３が正規のものであるか否かを認証する手法として、本実施形態１では公開鍵と秘密鍵を用いた署名を利用しているが、その他の手法を用いてアプリケーションパッケージ１１３を認証してもよい。
【００６２】
また、本実施形態１に係るＯＳＧｉ搭載端末１３０は、バンドルのメソッドを呼び出すために必要となる権限レベル毎に秘密情報を生成し、アプリケーションパッケージ１１３に割り当てる。これにより、メソッド呼び出しをより厳密に制御することができる。
【００６３】
また、本実施形態１に係るＯＳＧｉシステム１０００において、ＯＳＧｉ利用端末１２０とＯＳＧｉ搭載端末１３０の間では、秘密情報を送信せずにハッシュを用いて遠隔呼出の可否を認証する。これにより、ネットワーク上に秘密情報が流れることがないので、攻撃者がプライベートネットワーク１６０上でパケットキャプチャを仕掛けたとしても、秘密情報を秘匿し、セキュリティを確保することができる。
【００６４】
＜実施の形態２＞
実施形態１において、ＯＳＧｉ利用端末１２０とＯＳＧｉ搭載端末１３０は、ＲＰＣメッセージから生成したハッシュを用いて認証を実施することを説明した。本発明の実施形態２では、この手法を発展させ、ハッシュを生成する際に乱数を利用し、攻撃者がハッシュを予測しにくくする。本実施形態２におけるＯＳＧｉシステム１０００の構成は実施形態１と同様であるため、以下では差異点を中心に説明する。
【００６５】
図１１は、本実施形態２において、アプリケーション１１４が機能提供バンドル１３２を遠隔呼出する処理を説明するシーケンス図である。以下、図１１の各ステップについて説明する。
（図１１：ステップＳ９０１〜Ｓ９０６）
これらのステップは、図９の対応するステップと同じ処理である。ただし、ステップＳ９０７に進む前にステップＳ１１０１を実施する。
（図１１：ステップＳ１１０１）
ＲＰＣモジュール１１５は、乱数を生成する。本ステップの次は、図９で説明したステップＳ９０７へ進む。その後、ステップＳ９０８〜Ｓ９０９に代えて、ステップＳ１１０２〜Ｓ１１０３を実施する。
【００６６】
（図１１：ステップＳ１１０２）
ＲＰＣモジュール１１５は、ＯＳＧｉ搭載端末１３０へ送信するＲＰＣメッセージと秘密情報、およびステップＳ１１０１で生成した乱数を結合し、結合した情報に基づきハッシュを生成する。
（図１１：ステップＳ１１０３）
ＲＰＣモジュール１１５は、ＯＳＧｉ搭載端末１３０へ送信するＲＰＣメッセージ、ステップＳ１００２で生成したハッシュ、ステップＳ１１０１で生成した乱数を、ＯＳＧｉ利用端末１２０に送信する。本ステップの次は、図９で説明したステップＳ９１０〜Ｓ９１４へ進む。その後、ステップＳ９１５に代えて、ステップＳ１１０４を実施する。
（図１１：ステップＳ１１０４）
ＲＰＣバンドル１３５は、ステップＳ１１０３で受信したＲＰＣメッセージと乱数、およびステップＳ９１１で抽出された秘密情報を結合し、結合した情報に基づきハッシュを生成する。本ステップの後は、図９のステップＳ９１６〜Ｓ９２０と同様である。
【００６７】
＜実施の形態２：まとめ＞
以上のように、本実施形態２に係るＯＳＧｉシステム１０００は、ＲＰＣメッセージからハッシュを生成する際に乱数を利用する。これにより、同じＲＰＣメッセージからハッシュを生成しても、毎回異なるハッシュが生成されるため、セキュリティを強化することができる。
【符号の説明】
【００６８】
１００：権限管理サーバ、１０１：権限設定プログラム、１０２：署名生成プログラム、１０３：公開鍵配信プログラム、１０４：鍵管理テーブル、１１０：アプリケーション配信サーバ、１１１：署名要求プログラム、１１２：配信プログラム、１１３：アプリケーションパッケージ、１１４：アプリケーション、１１５：ＲＰＣモジュール、１２０：ＯＳＧｉ利用端末、１２１：アプリケーションパッケージ、１２２：秘密情報ファイル、１２３：秘密情報保存領域、１３０：ＯＳＧｉ搭載端末、１３１：権限設定バンドル、１３２：機能提供バンドル、１３３：署名検証バンドル、１３４：秘密情報生成バンドル、１３５：ＲＰＣバンドル、１３６：権限管理テーブル、１３７：秘密情報テーブル、１４０：インターネット、１５０：ゲートウェイ、１６０：プライベートネットワーク。
【図１】
2013037646.tif 000003
【図２】
2013037646.tif 000004
【図３】
2013037646.tif 000005
【図４】
2013037646.tif 000006
【図５】
2013037646.tif 000007
【図６】
2013037646.tif 000008
【図７】
2013037646.tif 000009
【図８】
2013037646.tif 000010
【図９】
2013037646.tif 000011
【図１０】
2013037646.tif 000012
【図１１】
2013037646.tif 000013