(57)【特許請求の範囲】
【請求項１】
接続要求を受け付ける接続要求受付部と、
前記接続要求の送信元を示す第１のプロセス情報と、現在実行中のプロセスを示す第２のプロセス情報と、を取得する情報取得部と、
前記第１のプロセス情報及び前記第２のプロセス情報に基づき、前記接続要求の前記送信元の正当性を判定する判定部と、
前記接続要求の前記送信元が正当である場合、前記接続要求に応じて通信経路を確立し、前記接続要求の前記送信元が正当でない場合、前記接続要求を拒否して通信を遮断する通信部と、を有するサーバを含む
情報処理装置。
【請求項２】
前記第１のプロセス情報及び前記第２のプロセス情報は、プロセスＩＤ、グループＩＤ、ユーザＩＤのうち少なくともいずれか１つを含む
請求項１記載の情報処理装置。
【請求項３】
前記第２のプロセス情報は、オペレーティングシステム上で現在実行されている前記プロセスを示す情報であって、前記オペレーティングシステムが提供するコマンドにより取得される
請求項１又は２記載の情報処理装置。
【請求項４】
前記接続要求を前記接続要求受付部に対して送信する接続要求部を有するクライアントをさらに含む
請求項１乃至３いずれか１項記載の情報処理装置。
【請求項５】
サーバが、
接続要求を受け付ける接続要求受付ステップと、
前記接続要求の送信元を示す第１のプロセス情報と、現在実行中のプロセスを示す第２のプロセス情報と、を取得する情報取得ステップと、
前記第１のプロセス情報及び前記第２のプロセス情報に基づき、前記接続要求の前記送信元の正当性を判定する判定ステップと、
前記接続要求の前記送信元が正当である場合、前記接続要求に応じて通信経路を確立し、前記接続要求の前記送信元が正当でない場合、前記接続要求を拒否して通信を遮断する通信ステップと、を含む
情報処理方法。
【請求項６】
クライアントが、
前記接続要求を前記サーバに対して送信する接続要求ステップをさらに含む
請求項５記載の情報処理方法。
【請求項７】
コンピュータに、請求項５又は６記載の情報処理方法を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置、情報処理方法及びプログラムに関し、例えば情報処理装置内において安全なプロセス間通信を実現する技術に関する。
【背景技術】
【０００２】
コンピュータ（以下、デバイスという）上で動作する複数のプロセス間で情報をやりとりするための仕組みをプロセス間通信という。例えば、従来より、スマートデバイス等の内部におけるプロセス間通信には、インターネットドメインソケット（ＩＮＥＴドメイン）及びＵＮＩＸ（登録商標）ドメインソケット（ＵＮＩＸドメイン）の２つの方式が用いられている。
【０００３】
インターネットドメインソケット方式では、異なるデバイス上で動作しているプロセス同士であっても、同一デバイス上で動作しているプロセス同士であっても、ネットワークを介して通信が行われる。そのため、通信速度の低下や、セキュリティ面で脆弱である（外部から侵入しやすい）等の欠点がある。そこで、従来より、例えばインターネットドメインソケット方式を利用しつつ、通信内容を暗号化するなどしてセキュリティを向上させる手法が提案されてきた。
【０００４】
一方、ＵＮＩＸドメインソケット方式では、同一デバイス上で動作しているプロセス同士が、デバイス内のファイルシステム、すなわちネットワークを介さないファイルシステムソケットを使用してプロセス間通信を行う。そのため、インターネットドメインソケット方式より通信速度が速く、ネットワークからの悪意ある侵入等に対して堅牢であるというメリットがある。そのため、現在は、デバイス内におけるプロセス間通信にはＵＮＩＸドメインソケット方式がよく利用されている。しかしながら、ＵＮＩＸドメインソケット方式を使用しても、デバイス内部における第三者による悪意ある侵入、なりすまし、改竄の脅威に対しては十分堅牢であるとはいえず、セキュリティ面の課題が残されている。
【０００５】
この点、特許文献１は、プロセス間通信において通信相手の真偽を確認するために、プロセスＩＤを利用しうることを示唆している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１４−０７８２４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、プロセス間通信に暗号化を導入するする手法は、情報処理資源を多く消費するため、情報処理能力に制約があるスマートデバイス等においては望ましくない。スマートデバイス等においては、できるだけ簡単で安全性の高い通信相手の確認手法が望まれている。
【０００８】
また、特許文献１にかかる手法は、プロセスＩＤを利用した通信相手の確認方法を具体的に開示又は示唆していないため、ＵＮＩＸドメインソケット方式に直ちに適用することが困難である。
【０００９】
本発明は、このような問題点を解決するためになされたものであり、デバイス内において安全なプロセス間通信を実現できる情報処理装置、情報処理方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明に係る情報処理装置は、接続要求を受け付ける接続要求受付部と、前記接続要求の送信元を示す第１のプロセス情報と、現在実行中のプロセスを示す第２のプロセス情報と、を取得する情報取得部と、前記第１のプロセス情報及び前記第２のプロセス情報に基づき、前記接続要求の前記送信元の正当性を判定する判定部と、前記接続要求の前記送信元が正当である場合、前記接続要求に応じて通信経路を確立し、前記接続要求の前記送信元が正当でない場合、前記接続要求を拒否して通信を遮断する通信部と、を有するサーバを含む。
【００１１】
本発明にかかる情報処理方法は、サーバが、接続要求を受け付ける接続要求受付ステップと、前記接続要求の送信元を示す第１のプロセス情報と、現在実行中のプロセスを示す第２のプロセス情報と、を取得する情報取得ステップと、前記第１のプロセス情報及び前記第２のプロセス情報に基づき、前記接続要求の前記送信元の正当性を判定する判定ステップと、前記接続要求の前記送信元が正当である場合、前記接続要求に応じて通信経路を確立し、前記接続要求の前記送信元が正当でない場合、前記接続要求を拒否して通信を遮断する通信ステップと、を含む。
【００１２】
本発明にかかるプログラムは、上記情報処理方法をコンピュータに実行させるプログラムである。
【発明の効果】
【００１３】
本発明により、デバイス内において安全なプロセス間通信を実現できる情報処理装置、情報処理方法及びプログラムを提供することができる。
【図面の簡単な説明】
【００１４】
【図１】実施の形態１にかかる情報処理装置１０００の構成を示す図である。
【図２】実施の形態１にかかる情報処理装置１０００の動作を示す図である。
【発明を実施するための形態】
【００１５】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
【００１６】
＜実施の形態１＞
まず、図１を用いて、本発明の実施の形態１にかかる情報処理装置１０００の構成について説明する。
【００１７】
情報処理装置１０００は、サーバ１００、クライアント２００を含む。情報処理装置１０００は、例えばスマートデバイス等のコンピュータであって、中央処理装置（ＣＰＵ）、記憶装置、入出力装置及び通信装置等を備える。ＣＰＵは、記憶装置に記憶されたプログラムを読みだして所定の処理を実行することにより、サーバ１００及びクライアント２００を論理的に実現する。
【００１８】
サーバ１００及びクライアント２００は、いずれも情報処理装置１０００上で動作するプロセスである。プロセス間通信において、他のプロセスに対し接続要求を行う側のプロセスがクライアント２００であり、他のプロセスから接続要求を受ける側のプロセスがサーバ１００である。
【００１９】
クライアント２００は、接続要求部２０１、通信部２０３を有する。接続要求部２０１は、サーバ１００に対しプロセス間通信の開始を要求する（接続要求）。通信部２０３は、接続要求に対してサーバ１００が応答した後に、プロセス間通信を行う。
【００２０】
サーバ１００は、接続要求受付部１０１、情報取得部１０３、判定部１０５、通信部１０７を有する。接続要求受付部１０１は、クライアント２００から接続要求を受け付ける。情報取得部１０３は、接続要求が正当なものであるか否かを検証するために必要な情報を取得する。判定部１０５は、接続要求が正当なものであるか、すなわち通信相手が悪意ある第三者のなりすましであったり、接続要求が改竄されたものでないかを判定する。通信部１０７は、接続要求が正当なものであった場合に、クライアント２００との間でプロセス間通信を開始する。
【００２１】
つづいて、図２を用いて、本発明の実施の形態１にかかる情報処理装置１０００の動作について説明する。
【００２２】
Ｓ１：接続準備
接続要求受付部１０１及び接続要求部２０１が、互いに通信可能な状態となる。典型的には、サーバ１００及びクライアント２００はそれぞれ、ｓｏｃｋｅｔ（）システムコールを実行することにより、ソケットを作成する。ソケットとは、サーバ１００とクライアント２００がプロセス間通信を行うためのインターフェイスである。また、サーバ１００はｂｉｎｄ（）システムコールを実行することにより、作成したソケットに名前を割り当てる。さらに、サーバ１００はｌｉｓｔｅｎ（）システムコールを実行することにより、ソケットに接続要求を待機させる。
【００２３】
Ｓ２：接続要求
接続要求部２０１が、接続要求受付部１０１に対して接続要求を送信する。典型的には、クライアント２００がｃｏｎｎｅｃｔ（）システムコールを実行することにより、クライアント２００のソケットからサーバ１００のソケットに対して接続要求が送信される。
【００２４】
このとき、本実施の形態では、接続要求部２０１は接続要求受付部１０１に対し、自プロセス（クライアント２００）のプロセスＩＤ（ＰＩＤ）、グループＩＤ（ＧＩＤ）、及びユーザＩＤ（ＵＩＤ）等を通知する。典型的には、接続要求部２０１は、ｃｏｎｎｅｃｔ（）システムコールの引数にこれらのパラメータを含めることにより、接続要求受付部１０１に通知できる。
【００２５】
ここで、ＰＩＤ、ＧＩＤ、ＵＩＤ等はいずれもプロセスを特定するための識別子であり、これらを単独で又は組合せて用いることにより、情報処理装置１０００上で実行されているプロセスを一意に特定することができる。ＰＩＤ、ＧＩＤ、ＵＩＤは、１つのプロセスに対して複数割当てられる場合もあるが、かかる場合にはそれらの複数のＩＤの組を用いることによりプロセスを一意に特定可能である。
【００２６】
Ｓ３：接続受付
接続要求受付部１０１は、接続要求部２０１からの接続要求を受け付ける。典型的には、サーバ１００がａｃｃｅｐｔ（）システムコールを実行することにより、クライアント２００からの接続要求を受け付ける。
【００２７】
Ｓ４：クライアント２００からプロセス情報取得
情報取得部１０３は、クライアント２００から、クライアント２００を特定するための情報を取得する。具体的には、ＰＩＤ、ＧＩＤ、ＵＩＤ等の識別子を取得する。典型的には、サーバ１００は、ｃｏｎｎｅｃｔ（）システムコールの引数に含められたＰＩＤ、ＧＩＤ、ＵＩＤ等の識別子を取得できる。
【００２８】
Ｓ５：実行中プロセスのプロセス情報取得
情報取得部１０３は、デバイスすなわち情報処理装置１０００において現在実行されているプロセスの情報を取得する。具体的には、ＰＩＤ、ＧＩＤ、ＵＩＤ等の識別子を取得する。典型的には、サーバ１００は、オペレーティングシステムの機能を利用して実行中のプロセス情報を取得できる。例えば、Ｌｉｎｕｘ（登録商標）であればｐｓコマンドにより実行中のプロセス情報を取得できる。
【００２９】
なお、ｐｓコマンド等は現在実行されているプロセスの情報を取得するため、実行する度に結果が異なる場合がある。したがって、Ｓ５の情報取得及びＳ６の判定処理は、通信が発生する度に毎回実行することが好ましい。
【００３０】
Ｓ６：通信対象の判定
判定部１０５は、Ｓ４で取得されたクライアント２００のプロセス情報と、Ｓ５で取得されたデバイス上で実行中のプロセス情報と、を照合する。例えば、Ｓ４で取得されたＰＩＤ、ＧＩＤ、ＵＩＤの組と、Ｓ５で取得されたＰＩＤ、ＧＩＤ、ＵＩＤの組とが一致するか否か判定する。
【００３１】
両者が一致しない場合、接続要求受付部１０１に接続要求を送ったのは、情報処理装置１０００上で実行中のプロセスではないということになる。すなわち、悪意ある第三者によるなりすましや、接続要求の改ざんが行われた可能性がある。この場合、Ｓ７に遷移する。
【００３２】
一方、両者が一致した場合、接続要求受付部１０１に接続要求を送ったのは、情報処理装置１０００上で実行中のプロセスであったことが分かる。この場合、Ｓ８に遷移する。
【００３３】
Ｓ７：通信遮断
通信部１０７は、クライアント２００との接続を遮断する。具体的には、通信部１０７は、クライアント２００の通信部２０３に対し何のレスポンスも返さないことにより、通信を開始しない。典型的には、サーバ１００は、ａｃｃｅｐｔ（）システムコールの実行後、ソケットをクローズする。
【００３４】
Ｓ８：通信実行
通信部１０７は、クライアント２００との接続経路を確立する。通信部１０７は、クライアント２００の通信部２０３に対し所定の応答を返すことにより、通信を開始する。典型的には、サーバ１００は、ａｃｃｅｐｔ（）システムコールの実行結果として、クライアント２００にディスクリプタを返却する。
【００３５】
以降、通信部１０７及び通信部２０３は、確立された通信経路を介してプロセス間通信を実行できる。具体的には、サーバ１００及びクライアント２００は、ディスクリプタを指定してｗｒｉｔｅ（）、ｒｅａｄ（）システムコールを実行することにより、情報の送受信を行うことができる。
【００３６】
本実施の形態においては、情報取得部１０３が、通信相手のプロセス情報と、デバイス上で実行中のプロセス情報と、を取得し、判定部１０５が両者を比較することにより、通信相手が悪意の第三者であるか否かを判定できる。これにより、デバイス内のプロセス間通信において、第三者の悪意ある侵入、なりすまし、改竄の脅威を防ぎ、安全性を向上させることができる。
【００３７】
また、本実施の形態においては、上述のような簡易な比較処理により不正な接続要求を判別できるため、処理能力の比較的低いスマートデバイス等においても、デバイス内のプロセス間通信の安全性を向上させることができる。
【００３８】
＜実施の形態２＞
実施の形態２として、実施の形態１にかかる情報処理装置１０００を、ＯｐｅｎＦｌｏｗ（登録商標）技術に適用した例について説明する。
【００３９】
ＯｐｅｎＦｌｏｗは、Ｓｏｆｔｗａｒｅ  Ｄｅｆｉｎｅｄ  Ｎｅｔｗｏｒｋｉｎｇ（ＳＤＮ）の代表的な技術である。ＯｐｅｎＦｌｏｗは、制御アプリケーション、ネットワークの経路制御を司るコントローラ、及びコントローラの指示に従ってパケット転送を実行するスイッチとによって構成される。これにより、ＯｐｅｎＦｌｏｗは、ソフトウェアによる柔軟なネットワーク管理を実現している。例えば、ネットワークの状況に応じて、自動的に最適な経路に変更するなどの制御が実現できる。
【００４０】
近年、スマートフォンやタブレット端末等のスマートデバイスの普及に伴い、このようなスマートデバイスにも柔軟な通信経路制御機能等を備えさせることが提案されている。例えば、１つのスマートデバイス内に、制御アプリケーション、コントローラ及びスイッチを搭載することにより、柔軟な通信経路制御機能等を有する移動端末制御システムを構築する試みがなされている。
【００４１】
ここで、スマートデバイス内部のプロセス間通信、すなわち制御アプリケーションとコントローラ間、及びコントローラとスイッチ間の通信には、一般に通信効率及びセキュリティ特性に優れるＵＮＩＸドメインソケット方式がふさわしいと考えられる。しかしながら、ＵＮＩＸドメインソケット方式それ自体のみでは、悪意ある制御アプリ、コントローラのなりすまし及び改竄などに対し頑健でない。
【００４２】
かかる課題を解決するため、ＵＮＩＸドメインソケット方式を使ったＯｐｅｎＦｌｏｗのプロセス間通信においてセキュリティを向上させるため、実施の形態１にかかる手法を適用する。
【００４３】
具体的には、制御アプリケーションとコントローラ間の通信においては、制御アプリケーションをサーバ１００、コントローラをクライアント２００として、Ｓ１乃至Ｓ８にかかる処理を実行する。また、コントローラとスイッチ間の通信においては、コントローラをサーバ１００、スイッチをクライアント２００として、Ｓ１乃至Ｓ８にかかる処理を実行する。
【００４４】
本実施の形態においては、ＯｐｅｎＦｌｏｗシステムにおいて、制御アプリケーションとコントローラ間、及びコントローラとスイッチ間の通信の際、通信相手のプロセス情報と、デバイス上で実行中のプロセス情報と、を比較する。これにより、悪意ある制御アプリ、コントローラのなりすまし及び改竄などを防ぎ、ＯｐｅｎＦｌｏｗにおけるプロセス間通信の安全性を向上させることができる。特に、処理能力の比較的低いスマートデバイス等においても、デバイス内のプロセス間通信の安全性を向上させることができる。
【００４５】
＜その他の実施の形態＞
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、上述の実施の形態にかかる手法は、ＯｐｅｎＦｌｏｗのプロセス間通信に限らず、デバイス内におけるプロセス間通信であればいかなるケースにも適用可能であることは勿論である。
【００４６】
また、上述の実施の形態では、実行中のプロセス情報を取得するための手法としてｐｓコマンドを例示したが、本発明はこれに限定されない。ｐｓコマンドに代えて、オペレーションシステムその他が提供する任意のコマンドやツール等を用いて、実行中のプロセス情報を取得することとしてもよい。
【００４７】
また、上述の実施の形態では、本発明を主にハードウェアの構成として説明したが、これに限定されるものではなく、任意の処理を、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）にコンピュータプログラムを実行させることにより実現することも可能である。この場合、コンピュータプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（ｔａｎｇｉｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【符号の説明】
【００４８】
１０００  情報処理装置
１００  サーバ
１０１  接続要求受付部
１０３  情報取得部
１０５  判定部
１０７  通信部
２００  クライアント
２０１  接続要求部
２０３  通信部
【図１】
0006459637.tif 000002
【図２】
0006459637.tif 000003