以下、本発明の実施の形態を図面に基づいて説明する。図1は本実施の形態のデバイス監視システムの構成の一例を示すブロック図である。本実施の形態のデバイス監視システムは、セキュアエレメント50が組み込まれたデバイス100、及びサーバ200などを備える。デバイス100は、「モノのインターネット」(IoT)でいうところの「モノ」に該当するデバイス(IoTデバイス、電子デバイスとも称する)を含む。デバイス100とサーバ200とは、イーサーネット、Wifi、3G回線などの一般的なネットワーク回線70を介して接続される。
デバイス100は、セキュアエレメント50の他に、デバイス本体10を備える。デバイス本体10とセキュアエレメント50との間は、I2C(Inter-Integrated Circuit)、SPI(Serial Peripheral Interface)等の通信路45で物理的に接続されている。なお、セキュアエレメント50は、UICC(Universal Integrated Circuit Card)のように着脱可能な構成とすることもできる。
デバイス本体10の大部分は、単一のSoC(System on a Chip)で構成され、一個の半導体チップ上にシステムの動作に必要な機能(例えば、CPU41、不図示のメモリなどを含む)の多く、あるいは全ての機能を一体化して実装している。
デバイス本体10は、例えば、TrustZone(登録商標)と称される技術を用いることによって、ソフトウェア(OS、アプリケーションなど)の実行環境をREE(Rich Execution Environment)20(通常実行環境、ノーマルワールドとも称する)と、TEE(Trusted Execution Environment)30(トラステッド実行環境、セキュアワールドとも称する)との二つに分けている。REE20とTEE30との間では、メモリ空間、入出力装置などが分離されている。
REE20は、広く一般的に利用されているOSの実行環境であり、TEE30へのアクセスが制限される以外、特段の機能制約がない実行環境である。
TEE30は、セキュリティ機能を隔離する目的で、同一のSoC上でREE20とは別に提供される独立した実行環境である。TEE30は、REE20からのアクセスが制限されており、実行可能な機能も限定されている。なお、TEE30の如くTEEという称呼は、REE20と分離され、セキュリティ上より安全な実行環境であれば、どのような称呼の実行環境であってもよい。
セキュリティ上保護すべきソフトウェア及びデータをTEE30に配置するとともに、REE20及びデバイス100の外部からのアクセスを制限することによって、デバイス100のセキュリティを確保することができる。なお、TEEは、TrustZoneの設計思想に基づく仕様を表す用語としても用いられる。
上述のように、REE20からTEE実行環境30にはアクセスできないように制限されるので、REE20からはTEE30の存在を認識することはできない。REE20からTEE30で実行する処理を呼び出すためには、例えば、不図示のセキュアモニタなどを経由しなければならない。
REE20では、汎用OSとしてのリッチOS21、クライアントアプリケーション22などを実行することができる。
リッチOS21は、REE20においてOSの機能を果たすソフトウェアである。リッチOS21は、クライアントアプリケーション22からの要求に応じ、デバイス100に接続されたハードウェア(入出力装置)の制御等を含む各種OS機能を提供する。リッチOS21は、後述のトラステッドアプリケーション32を利用するためのインタフェースとして機能することもできる。リッチOS21は、システムコール呼出検知処理部211の機能を備える。
クライアントアプリケーション22は、リッチOS21上で動作するアプリケーションである。なお、図1では、便宜上、一つのクライアントアプリケーション22を図示しているが、クライアントアプリケーション22の数は複数でもよい。
システムコール212は、クライアントアプリケーション22にOS機能を提供するためのインタフェースである。システムコール212は、例えば、socket、bind、listen、connect、close等があるが、これらに限定されるものではない。
システムコール機能実装213は、システムコール212で提供する機能そのものを実装したプログラムである。システムコール機能実装213は、例えば、socket機能、bind機能、listen機能、connect機能、close機能等があるが、これらに限定されるものではない。
システムコール呼出検知処理部211は、システムコールのインタフェースと機能実装との間に介在し、システムコールが呼び出されたことを検知しつつ、呼び出されたシステムコール名及び引数(システムコール実行情報)をセキュアエレメント50又はTEE30(両者をセキュリティコンポーネントとも称する)に通知する。
TEE30では、トラステッドOS31、トラステッドアプリケーション32、REEシステムコールトラステッドアプリケーション33などを実行することができる。
トラステッドOS31は、TEE30においてOSの機能を果たすソフトウェアである。トラステッドOS31は、トラステッドアプリケーション32からの要求に応じて、セキュリティ機能を中心としたOS機能を提供する。また、トラステッドOS31は、REE20とTEE30との通信(例えば、REE20からの機能実行要求又はデータの授受など)を行うためのインタフェース機能を有し、REE20(クライアントアプリケーション23)とトラステッドアプリケーション32との間の通信路としても機能する。トラステッドOS31は、トラステッドOSシステムコール呼出検知処理部311、秘匿通信路通信処理部314の機能を備える。
トラステッドアプリケーション32は、トラステッドOS31上で動作するアプリケーションである。トラステッドアプリケーション32は、セキュリティ上の保護が必要な機能(例えば、鍵管理、暗号演算など)を実装することができる。なお、図1では、便宜上、一つのトラステッドアプリケーション32を図示しているが、トラステッドアプリケーション32の数は複数でもよい。
トラステッドOSシステムコール312は、トラステッドアプリケーション32にOS機能を提供するためのインタフェースである。トラステッドOSシステムコール312は、例えば、TEE_CipherUpdate、TEE_WriteObjectData、TEE_ReadObjectData等があるが、これらに限定されるものではない。
トラステッドOSシステムコール機能実装313は、トラステッドOSシステムコール312で提供する機能そのものを実装したプログラムである。トラステッドOSシステムコール機能は、例えば、TEE_CipherUpdate機能、TEE_WriteObjectData機能、TEE_ReadObjectData機能等があるが、これらに限定されるものではない。
トラステッドOSシステムコール呼出検知処理部311は、トラステッドOSシステムコールのインタフェースと機能実装との間に介在し、トラステッドOSシステムコール312が呼び出されたことを検知しつつ、呼び出されたトラステッドOSシステムコール名及び引数(システムコール実行情報)をセキュアエレメント50に通知する。
秘匿通信路通信処理部314は、トラステッドOS31内に具備した秘匿通信路通信処理を行うモジュールである。秘匿通信路通信処理には、例えば、TEE Socket APIのようなTLS通信可能なAPIモジュールなどが含まれる。
秘匿通信路通信処理部314は、送信部としての機能を有し、TEE30とサーバ200との間で独立した秘匿通信路62を開設する。
REEシステムコールトラステッドアプリケーション33は、取得部としての機能を有し、リッチOS21のシステムコールに関する情報を取得する。すなわち、REEシステムコールトラステッドアプリケーション33は、リッチOS21から通知されたシステムコール実行情報を受け取る。なお、本実施の形態では、システムコール実行情報をシステムコールに関する情報とも称する。
ネットワーク通信部42は、デバイス100をネットワークに接続する機能を有し、ネットワーク上のサービスサーバ(不図示)との間で情報の送受信を行うことができる。ネットワーク通信部42は、不図示のセンサ類で検出した情報をサービスサーバ(不図示)送信することができる。
セキュアエレメント50は、システムコール情報受信処理部51、秘匿通信路通信処理部52などを備える。
セキュアエレメント50は、耐タンパ性を有する。セキュアエレメント50の機能(例えば、システムコール情報受信処理部51、秘匿通信路通信処理部52)をハードウェアのモジュールで実現する場合、耐タンパ性を有するためには、セキュアエレメント50を1チップ化にしてもよく、あるいは、モジュール表面をコーティングしてもよい。また、セキュアエレメント50の機能をソフトウェアのモジュールで実現する場合、耐タンパ性を有するためには、実行コードを暗号化し、実行時に必要な部分だけをメモリ上で復号するようにすればよい。
システムコール情報受信処理部51は、取得部としての機能を有し、デバイス本体10で実行されるOSのシステムコール実行情報を取得する。システムコール実行情報は、システムコールの実行内容であり、例えば、システムコール名及び引数などを含む。
秘匿通信路通信処理部52は、送信部としての機能を有し、セキュアエレメント50とサーバ200との間で独立した秘匿通信路61を開設する。秘匿通信路61は、例えば、HTTPS(HTTP Over TLS)とすることができるが、これに限定されない。秘匿通信路通信処理部52は、TLSの暗号化及び復号、HTTP(Hypertext Transfer Protocol)メッセージの解釈などの処理を行う。
秘匿通信路通信処理部52は、システムコール情報受信処理部51で取得したシステムコール実行情報を、秘匿通信路61を介してサーバ200へ送信する。
サーバ200は、システムコール実行情報に基づいて、デバイス本体10(デバイス100)においてアプリケーションが実行する処理の正当性を判定することができるサーバとすることができる。
上述の構成により、セキュアエレメント50は、システムコール実行情報をサーバ200へ転送するので、デバイス100個々の不正な処理順序を定義した情報を夫々のデバイス100に組み込む必要がなく、サーバ200側でデバイス100を監視することができる。また、デバイス100のセキュリティ上の安全性を高めることができる。また、セキュアエレメント50は、秘匿通信路61を使ってシステムコール実行情報を転送するので、システムコール実行情報が不正に改ざんされることを防止することができ、また、システムコール実行情報の送信がブロックされることも防止することができる。
また、セキュアエレメント50を耐タンパ性にすることによって、システムコール実行情報を取得してから送信するまでの間、当該システムコール実行情報を物理的に保護することができる。
図2は本実施の形態のサーバ200の構成の一例を示すブロック図である。サーバ200は、受信処理部201、デバイス管理DB更新処理部202、デバイス管理DB203、故障検出処理部204、計時部205、セキュリティチェック処理部206などを備える。なお、図2の例では、デバイス100a〜100dの数に対応して4つの受信処理部201及びデバイス管理DB更新処理部202を具備する構成であるが、4つの受信処理部201及びデバイス管理DB更新処理部202は一つに纏めることもできる。また、図2の例では、便宜上、デバイス100の数を4つとしているが、デバイス100の数は図2の例に限定されない。
受信処理部201は、受信部としての機能を有し、秘匿通信路61、62を経由してデバイス100それぞれからOSのシステムコール実行情報を受信する。
デバイス管理DB更新処理部202は、受信処理部201で受信したシステムコール実行情報をデバイス100毎にデバイス管理DB203に記憶(更新)する。
デバイス管理DB203は、履歴情報記憶部としての機能を有し、デバイス100夫々のシステムコール実行履歴(システムコール履歴情報)を、システムコールが実行された時点(実行時刻)とともに保持するデータベースである。
デバイス管理DB203は、システムコールの実行内容を実行順序に配置した情報を記憶するので、サーバ200は、夫々のデバイス100について、システムコールの実行順に実行内容を把握することができ、デバイス100の動作の正当性を判定することができる。
故障検出処理部204は、監視部としての機能を有し、デバイス100の故障の有無を監視する。より具体的には、故障検出処理部204は、計時部205が計時する現在時刻及び故障検知ポリシー(所定の条件)に基づき、デバイス管理DB203内のシステムコール実行履歴を検索して、故障検知ポリシーに合致するシステムコール実行履歴を発見した場合、当該システムコール実行履歴に対応するデバイス100を故障(所定の事象)と判定する。
セキュリティチェック処理部206は、監視部としての機能を有し、デバイス100の不正動作の有無を監視する。より具体的には、セキュリティチェック処理部206は、不正パターン(所定の条件)に基づき、デバイス管理DB203内のシステムコール実行履歴を検索して、不正パターンに合致するシステムコール実行履歴を発見した場合、当該システムコール実行履歴に対応するデバイス100にセキュリティ上の問題が発生している(所定の事象)と判定する。
上述のように、故障検出処理部204又はセキュリティチェック処理部206は、デバイス管理DB203に記憶した任意のデバイスのシステムコール履歴情報が、所定の条件を充足するか否かに応じて、デバイス100に係る所定の事象の有無を監視する。所定の事象は、例えば、デバイス100の動作が正当でない状態(セキュリティ上の問題がある状態)、あるいはデバイス100の故障状態などを含めることができる。これにより、デバイス100にセキュリティ上の問題があるか否か、デバイス100が故障しているか否か等を監視することができる。
次に、本実施の形態のデバイス監視システムの動作について説明する。以下では、リッチOS21のシステムコール実行情報をTEE30がサーバ200へ通知する動作、リッチOS21のシステムコール実行情報をセキュアエレメント50がサーバ200へ通知する動作、トラステッドOS31のシステムコール実行情報をセキュアエレメント50がサーバ200へ通知する動作、デバイス100の故障検知動作、デバイス100のセキュリティチェック動作、不正パターンの更新動作について説明する。
図3は本実施の形態のTEE30によるリッチOS21のシステムコール実行情報の通知動作の一例を示す説明図である。以下、符号P1〜P6で示す処理について説明する。
P1(システムコール実行):REE20上のクライアントアプリケーション22が、リッチOS21のシステムコールを実行する。
P2(システムコール呼び出し検知と実行指示):リッチOS21は、システムコールが実行されると、システムコールが実行されたこと、及びシステムコール実行内容(システムコール名及び引数)をシステムコール呼出検知処理部211に通知する。同時に、リッチOS21は、システムコール機能実装213に対してシステムコールの機能を実行するよう指示する。
P3(システムコール機能実行):システムコール機能実装213は、実行指示を受けると、システムコールの機能を実行し、実行結果をクライアントアプリケーション22に返す。
P4(トラステッドアプリケーション32に通知):システムコール呼出検知処理部211は、システムコール実行情報をTEE30上のREEシステムコールトラステッドアプリケーション33に通知する。
P5(秘匿通信路62経由での送信依頼):REEシステムコールトラステッドアプリケーション33は、トラステッドOS31内の秘匿通信路通信処理部314に対し、秘匿通信路62経由でシステムコール実行情報をサーバ200へ送信するよう依頼する。
P6(サーバ200へ送信):秘匿通信路通信処理部314は、サーバ200との間で秘匿通信路を確立していない場合、デバイス100が有する物理的な通信経路(例えば、イーサネット(登録商標)、Wifi等)の上で新たに秘匿通信路62(例えば、HTTPS:HTTP Over TLS)を確立した上で、秘匿通信路62を経由してシステムコール実行情報を送信する。
上述の構成により、リッチOS21から独立したTEE30(トラステッドOS31)(コンポーネント)は、システムコール実行情報をサーバ200へ転送するので、デバイス100個々の不正な処理順序を定義した情報を夫々のデバイス100に組み込む必要がなく、サーバ200側でデバイス100を監視することができ、デバイス100のセキュリティ上の安全性を高めることができる。また、TEE30(トラステッドOS31)は、秘匿通信路62を使ってシステムコール実行情報を転送するので、システムコール実行情報が不正に改ざんされることを防止することができ、また、システムコール実行情報の送信がブロックされることも防止することができる。
図4は本実施の形態のセキュアエレメント50によるリッチOS21のシステムコール実行情報の通知動作の一例を示す説明図である。以下、符号P11〜P16で示す処理について説明する。
P11(システムコール実行):REE20上のクライアントアプリケーション22が、リッチOS21のシステムコールを実行する。
P12(システムコール呼び出し検知と実行指示):リッチOS21は、システムコールが実行されると、システムコールが実行されたこと、及びシステムコール実行内容(システムコール名及び引数)をシステムコール呼出検知処理部211に通知する。同時に、リッチOS21は、システムコール機能実装213に対してシステムコールの機能を実行するよう指示する。
P13(システムコール機能実行):システムコール機能実装213は、実行指示を受けると、システムコールの機能を実行し、実行結果をクライアントアプリケーション22に返す。
P14(セキュアエレメント50に通知):システムコール呼出検知処理部211は、システムコール実行情報をセキュアエレメント50内のシステムコール情報受信処理部51に通知する。
P15(秘匿通信路62経由での送信依頼):システムコール情報受信処理部51は、セキュアエレメント50内の秘匿通信路通信処理部52に対し、秘匿通信路61経由でシステムコール実行情報をサーバ200へ送信するよう依頼する。
P16(サーバ200へ送信):秘匿通信路通信処理部52は、サーバ200との間で秘匿通信路を確立していない場合、デバイス100が有する物理的な通信経路(例えば、イーサネット、Wifi等)の上で新たに秘匿通信路61(例えば、HTTPS:HTTP Over TLS)を確立した上で、秘匿通信路61を経由してシステムコール実行情報を送信する。セキュアエレメント50が自ら物理的な通信手段(LAN又はWifiなど)を有する場合、秘匿通信路確立を独力で行うこともできるが、通信手段を有さない場合、デバイス100の物理的な通信手段を介してもよい。
これにより、リッチOS21上で動作するクライアントアプリケーション22が行う処理に基づいてデバイス100(デバイス本体10)の動作の正当性を判定することができる。
図5は本実施の形態のセキュアエレメント50によるトラステッドOS31のシステムコール実行情報の通知動作の一例を示す説明図である。以下、符号P21〜P26で示す処理について説明する。
P21(システムコール実行):TEE30上のトラステッドアプリケーション32が、トラステッドOS31のシステムコールを実行する。
P22(システムコール呼び出し検知と実行指示):トラステッドOS31は、システムコールが実行されると、システムコールが実行されたこと、及びシステムコール実行内容(システムコール名及び引数)をトラステッドOSシステムコール呼出検知処理部311に通知する。同時に、トラステッドOS31は、トラステッドOSシステムコール機能実装313に対してシステムコールの機能を実行するよう指示する。
P23(システムコール機能実行):トラステッドOSシステムコール機能実装313は、実行指示を受けると、システムコールの機能を実行し、実行結果をトラステッドアプリケーション32に返す。
P24(セキュアエレメント50に通知):トラステッドOSシステムコール呼出検知処理部311は、システムコール実行情報をセキュアエレメント50内のシステムコール情報受信処理部51に通知する。
P25(秘匿通信路61経由での送信依頼):システムコール情報受信処理部51は、セキュアエレメント50内の秘匿通信路通信処理部52に対し、秘匿通信路61経由でシステムコール実行情報をサーバ200へ送信するよう依頼する。
P26(サーバ200へ送信):秘匿通信路通信処理部52は、サーバ200との間で秘匿通信路を確立していない場合、デバイス100が有する物理的な通信経路(例えば、イーサネット、Wifi等)の上で新たに秘匿通信路61(例えば、HTTPS:HTTP Over TLS)を確立した上で、秘匿通信路61を経由してシステムコール実行情報を送信する。セキュアエレメント50が自ら物理的な通信手段(LAN又はWifiなど)を有する場合、秘匿通信路確立を独力で行うこともできるが、通信手段を有さない場合、デバイス100の物理的な通信手段を介してもよい。
これにより、トラステッドOS31上で動作するトラステッドアプリケーション32が行う処理に基づいてデバイス100(デバイス本体10)の動作の正当性を判定することができる。
上述のように、セキュアエレメント50及びTEE30をセキュアコンポーネントと称すると、デバイス100は、ハードウェア的に独立した複数のセキュアコンポーネントを有し、一方のセキュアコンポーネント上で動作するOS(すなわち、トラステッドOS31)のシステムコール実行時にシステムコール実行情報を取得し、取得したシステムコール実行情報を他のセキュアコンポーネント(セキュアエレメント50)に通知する。当該他のセキュアコンポーネントは、自身の秘匿通信路経由でシステムコール実行情報をサーバ200へ送信することができる。
図6は本実施の形態のサーバ200によるデバイス100の故障検知動作の一例を示す説明図である。デバイス100の故障検知動作は、サーバ200の計時部205が計時する現在時刻を元にデバイス管理DB203を所要の故障検出タイミングに検索し、デバイス100毎に、所定の条件としてのポリシー(故障検出のためのポリシー)に合致するシステムコール実行履歴が存在するか否かを判定する。
図6の例では、故障検出のためのポリシーを、「時刻が24時間以内の値でない場合、故障と判断する」としている。なお、ポリシーの内容は図6の例に限定されるものではなく、デバイス100の種類、設置場所、使用形態等に応じて適宜設定することができる。
サーバ200の現在時刻は、2016年12月9日11:00である。デバイス100aのシステムコール実行履歴によると、システムコールが実行された時刻は、2016年12月9日11:02近辺であり、ポリシーには合致しない。デバイス100b、100dについても同様である。
一方、デバイス100cのシステムコール実行履歴によると、システムコールが実行された時刻は、2016年12月7日11:02近辺であり、現在時刻とは、約48時間の差があり、ポリシーには合致する。これにより、デバイス100cからのシステムコールの通知が24時間を超えて遮断していることが検知され、デバイス100cの状況を把握することができなくなっていることを認識することができる。
なお、デバイス管理DB203内の時刻は、サーバ200側の時刻と比較可能な時刻情報であればよく、例えば、デバイス100が実際にシステムコールを実行した時刻でもよく、サーバ200がシステムコール実行情報を受信した時刻でもよく、あるいは、サーバ200がシステムコール実行情報をデバイス管理DB203に書き込んだ時刻でもよい。
図7は本実施の形態のサーバ200によるデバイス100のセキュリティチェック動作の一例を示す説明図である。デバイス100のセキュリティチェック動作は、サーバ200が保持する所定の条件としての不正パターンを元にデバイス管理DB203を所要のセキュリティチェックタイミングに検索し、デバイス100毎に不正パターンに合致したシステムコール実行履歴が存在するか否かを判定する。
図7の例では、不正パターン1を「write (socket,”Security Attack”)」としている。当該不正パターンは、socketに対し、”Security Attack”をwriteしている処理を示す。なお、不正パターン内容は図7の例に限定されるものではなく、デバイス100の種類、設置場所、使用形態等に応じて適宜設定することができる。
デバイス100b、100cのシステムコール実行履歴には、不正パターンと合致するシステムコールは実行されていない。
一方、デバイス100aのシステムコール実行履歴には、時刻2016年12月9日11:02:05において、不正パターンと合致するシステムコールが実行されていることが分かる。また、同様に、デバイス100dのシステムコール実行履歴には、時刻2016年12月9日11:01:07において、不正パターンと合致するシステムコールが実行されていることが分かる。このことから、デバイス100a及び100dが不正な振る舞いをしていることを検知することができ、デバイス100a及び100dにセキュリティ上の問題が発生していることを認識することができる。
上述の不正パターンを適宜定義することにより、攻撃者の日々変化する攻撃手法に対応することができ、未知のセキュリティ攻撃を検知可能とすることができる。
図8は本実施の形態のサーバ200による不正パターンの更新動作の一例を示す説明図である。更新部207は、不正パターンを更新する。図8に示すように、デバイス100の管理者が、新たなセキュリティ攻撃として、例えば、192.168.0.254というIPアドレスを不正に指定させ、不正な場所に情報を書き込ませることで情報漏洩させるという攻撃を認識したとする。管理者は、当該攻撃を不正なパターンとして、不正パターン2を追加することで不正パターンを更新する。
デバイス100bのシステムコール実行履歴には、時刻2016年12月9日11:02:05、11:02:07において、不正パターン2と合致するシステムコールが実行されていることが分かる。このことから、新たに追加した不正パターン2により、デバイス100bに対してセキュリティ攻撃が行われたことを既存のデバイス管理DB203から検出し、認識することができる。これにより、従来にはなかった新たなセキュリティ攻撃を検知可能とすることができる。
図9は本実施の形態のトラステッドOS31によるシステムコール実行情報の処理手順の一例を示すフローチャートである。TEE30におけるトラステッドOS31は、クライアントアプリケーション22がリッチOS21のシステムコールを実行したか否かを判定し(S11)、システムコールを実行していない場合(S11でNO)、ステップS11の処理を続ける。
リッチOS21のシステムコールを実行した場合(S11でYES)、トラステッドOS31は、システムコールの実行内容(例えば、システムコール名及び引数)を取得し(S12)、取得したシステムコールの実行内容を秘匿通信路62経由でサーバ200へ送信し(S13)、処理を終了する。
図10は本実施の形態のセキュアエレメント50によるシステムコール実行情報の処理手順の一例を示すフローチャートである。セキュアエレメント50は、クライアントアプリケーション22がリッチOS21のシステムコールを実行したか否かを判定し(S21)、リッチOS21のシステムコールを実行していない場合(S21でNO)、トラステッドアプリケーション32がトラステッドOS31のシステムコールを実行したか否かを判定する(S22)。
トラステッドOS31のシステムコールを実行していない場合(S22でNO)、セキュアエレメント50は、ステップS21以降の処理を続ける。リッチOS21のシステムコールを実行した場合(S21でYES)、あるいは、トラステッドOS31のシステムコールを実行した場合(S22でYES)、セキュアエレメント50は、システムコールの実行内容(例えば、システムコール名及び引数)を取得する(S23)。
セキュアエレメント50は、取得したシステムコールの実行内容を秘匿通信路61経由でサーバ200へ送信し(S24)、処理を終了する。
図11は本実施の形態のサーバ200によるデバイス100の監視の処理手順の一例を示すフローチャートである。サーバ200は、複数のデバイス100からシステムコールの実行内容を受信し(S101)、デバイス100毎にシステムコール実行履歴をデバイス管理DB203に記憶する(S102)。なお、システムコール実行履歴は、システムコールの実行内容を時系列に収集したものである。
サーバ200は、故障検知のタイミングであるか否かを判定する(S103)。故障検知のタイミングは、適宜設定することができ、定期的でもよく不定期的でもよい。故障検知のタイミングは、例えば、デバイス100の使用態様又は運用態様等に応じて監視の頻度の大小に応じて適宜設定すればよい。例えば、10分毎、1時間毎、数時間毎の如くである。
故障検知のタイミングである場合(S103でYES)、サーバ200は、デバイス管理DB203を検索して故障検出ポリシーに合致するデバイス100の有無を判定する(S104)。合致するデバイス100がある場合(S104でYES)、サーバ200は、当該デバイス100が故障であると判定し(S105)、後述のステップS106の処理を行う。合致するデバイス100がない場合(S104でNO)、サーバ200は、ステップS105の処理を行うことなく、後述のステップS106の処理を行う。
サーバ200は、不正パターンの更新の有無を判定し(S106)、更新がある場合(S106でYES)、不正パターンを更新し(S107)、後述のステップS108の処理を行う。更新がない場合(S106でNO)、サーバ200は、ステップS107の処理を行うことなく、後述のステップS108の処理を行う。
サーバ200は、処理を終了するか否かを判定し(S108)、処理を終了しない場合(S108でNO)、ステップS101以降の処理を続ける。処理を終了する場合(S108でYES)、サーバ200は、処理を終了する。
故障検知タイミングでない場合(S103でNO)、サーバ200は、セキュリティチェックのタイミングであるか否かを判定する(S109)。セキュリティチェックのタイミングは、適宜設定することができ、定期的でもよく不定期的でもよい。例えば、デバイス100の使用態様又は運用態様等に応じてセキュリティチェックの頻度の大小に応じて適宜設定すればよい。例えば、10分毎、1時間毎、数時間毎の如くである。また、デバイス100からの通信(システムコールの実行内容の送信を含む)を受信する都度、セキュリティチェックを行ってもよい。
セキュリティチェックのタイミングでない場合(S109でNO)、サーバ200は、ステップS101以降の処理を続ける。セキュリティチェックのタイミングである場合(S109でYES)、サーバ200は、デバイス管理DB203を検索してシステムコール実行履歴が不正パターンに合致するデバイス100の有無を判定する(S110)。
合致するデバイス100がある場合(S110でYES)、サーバ200は、当該デバイス100が不正動作している(セキュリティ上問題がある)と判定し(S111)、ステップS106の処理を行う。合致するデバイス100がない場合(S110でNO)、サーバ200は、ステップS111の処理を行うことなく、ステップS106の処理を行う。
上述のように、デバイス100は、システムコール実行情報をサーバ200へ転送するので、デバイス100が個々の不正な処理順序を定義した上でデバイス100に組み込む必要がなく、サーバ200側でデバイス100を監視することができ、デバイス100のセキュリティ上の安全性を高めることができる。デバイス100は、秘匿通信路61、62を使ってシステムコール実行情報を転送するので、システムコール実行情報が不正に改ざんされることを防止することができ、また、システムコール実行情報の送信がブロックされることも防止することができる。
また、サーバ200は、夫々のデバイス100について、システムコールの実行順に実行内容を把握することができ、デバイス100に係る所定の事象(例えば、セキュリティ上の問題、あるいは故障など)の有無を監視することができる。
本実施の形態によれば、デバイス100個々の状態に関係なく、デバイス100の監視者が不正動作又は問題となる動作を定義することができ、未知のセキュリティ攻撃を検知可能なメカニズムを提供することができる。
また、本実施の形態によれば、デバイス100側にシステムコール実行履歴を保持する必要がなく、仮にデバイス100が有するメモリ等の記憶部の記憶容量が少ない場合でも、そのようなデバイス100に対するシステムコールに基づく監視を行うことができる。
本実施の形態に係るセキュアエレメントは、デバイス本体で実行されるOSのシステムコールに関する情報を取得する取得部と、前記取得部で取得したシステムコールに関する情報を、秘匿通信路を介してサーバへ送信する送信部とを備える。
本実施の形態に係るコンピュータプログラムは、コンピュータに、OSのシステムコールに関する情報を転送させるためのコンピュータプログラムであって、コンピュータを、デバイス本体で実行されるOSのシステムコールに関する情報を受信する処理と、受信したシステムコールに関する情報を、秘匿通信路を介してサーバへ送信する処理とを実行させる。
本実施の形態に係るデバイスは、本発明の実施の形態に係るセキュアエレメントと、OSの実行環境を有するデバイス本体とを備える。
取得部は、デバイス本体で実行されるOSのシステムコールに関する情報を取得する。システムコールは、アプリケーションにOS機能を提供するためのインタフェースであり、アプリケーションは、システムコールを実行することによってOSが適用する機能を実現することができる。システムコールに関する情報は、システムコールの実行内容であり、例えば、システムコール名及び引数などを含む。
送信部は、取得部で取得したシステムコールに関する情報を、秘匿通信路を介してサーバへ送信する。サーバは、システムコールに関する情報に基づいて、デバイス本体(デバイス)においてアプリケーションが実行する処理の正当性を判定することができるサーバとすることができる。
上述の構成により、セキュアエレメントは、システムコールに関する情報をサーバへ転送するので、デバイス個々の不正な処理順序を定義した情報を夫々のデバイスに組み込む必要がなく、サーバ側でデバイスを監視することができる。また、デバイスのセキュリティ上の安全性を高めることができる。また、セキュアエレメントは、秘匿通信路を使ってシステムコールに関する情報を転送するので、システムコールに関する情報が不正に改ざんされることを防止することができ、また、システムコールに関する情報の送信がブロックされることも防止することができる。
本実施の形態に係るセキュアエレメントは、前記OSは、通常実行環境で実行される汎用OSを含む。
OSは、通常実行環境で実行される汎用OSを含む。これにより、汎用OS上で動作する汎用アプリケーションが行う処理に基づいてデバイス(デバイス本体)の動作の正当性を判定することができる。
本実施の形態に係るセキュアエレメントは、前記OSは、通常実行環境よりも安全なトラステッド実行環境で実行されるトラステッドOSを含む。
OSは、通常実行環境よりも安全なトラステッド実行環境で実行されるトラステッドOSを含む。これにより、トラステッドOS上で動作するトラステッドアプリケーションが行う処理に基づいてデバイス(デバイス本体)の動作の正当性を判定することができる。
本実施の形態に係るセキュアエレメントは、前記セキュアエレメントは、耐タンパ性を有する。
セキュアエレメントは、耐タンパ性を有する。セキュアエレメントの機能(例えば、取得部、送信部など)をハードウェアのモジュールで実現する場合、耐タンパ性を有するためには、セキュアエレメントを1チップ化にする、モジュール表面をコーティングすることが含まれる。また、セキュアエレメントの機能をソフトウェアのモジュールで実現する場合、耐タンパ性を有するためには、実行コードを暗号化し、実行時に必要な部分だけをメモリ上で復号することが含まれる。
セキュアエレメントを耐タンパ性にすることによって、システムコールに関する情報を取得してから送信するまでの間、当該システムコールに関する情報を物理的に保護することができる。
本実施の形態に係るデバイスは、通常実行環境で実行される汎用OS及び前記通常実行環境よりも安全なトラステッド実行環境で実行されるトラステッドOSを有するデバイスであって、前記トラステッドOSは、前記汎用OSのシステムコールに関する情報を取得する取得部と、前記取得部で取得したシステムコールに関する情報を、秘匿通信路を介してサーバへ送信する送信部とを備える。
トラステッドOSの取得部は、汎用OSのシステムコールに関する情報を取得する。すなわち、トラステッドOSは、汎用OS上で動作する汎用アプリケーションが実行するシステムコールの実行内容を取得する。
トラステッドOSの送信部は、取得したシステムコールに関する情報を、秘匿通信路を介してサーバへ送信する。
上述の構成により、汎用OSから独立したセキュアなトラステッド実行環境(コンポーネント)は、システムコールに関する情報をサーバへ転送するので、デバイス個々の不正な処理順序を定義した情報を夫々のデバイスに組み込む必要がなく、サーバ側でデバイスを監視することができ、デバイスのセキュリティ上の安全性を高めることができる。また、トラステッド実行環境は、秘匿通信路を使ってシステムコールに関する情報を転送するので、システムコールに関する情報が不正に改ざんされることを防止することができ、また、システムコールに関する情報の送信がブロックされることも防止することができる。
本実施の形態に係るサーバは、複数のデバイスそれぞれからOSのシステムコールに関する情報を受信する受信部と、該受信部で受信したシステムコールに関する情報に基づいてデバイス毎のシステムコール履歴情報を記憶する履歴情報記憶部とを備える。
受信部は、複数のデバイスそれぞれからOSのシステムコールに関する情報を受信する。
履歴情報記憶部は、受信部で受信したシステムコールに関する情報に基づいてデバイス毎のシステムコール履歴情報を記憶する。システムコール履歴情報は、例えば、システムコールの実行内容を実行順序に記憶した情報である。
上述の構成により、サーバは、夫々のデバイスについて、システムコールの実行順に実行内容を把握することができ、デバイスの動作の正当性を判定することができる。
本実施の形態に係るサーバは、所定の条件を記憶する記憶部と、前記履歴情報記憶部に記憶した任意のデバイスのシステムコール履歴情報が前記所定の条件を充足するか否かに応じて、前記デバイスに係る所定の事象の有無を監視する監視部とを備える。
監視部は、履歴情報記憶部に記憶した任意のデバイスのシステムコール履歴情報が記憶部に記憶した所定の条件を充足するか否かに応じて、デバイスに係る所定の事象の有無を監視する。所定の事象は、例えば、デバイスの動作が正当でない状態(セキュリティ上の問題がある状態)、あるいはデバイスの故障状態などを含めることができる。これにより、デバイスにセキュリティ上の問題があるか否か、デバイスが故障しているか否か等を監視することができる。
本実施の形態に係るサーバは、前記所定の条件は、システムコール履歴情報が予め定められた不正パターンと一致することであり、前記監視部は、前記デバイスに係る不正動作の有無を監視する。
所定の条件は、システムコール履歴情報が予め定められた不正パターンと一致することであり、監視部は、デバイスに係る不正動作の有無を監視する。不正パターンを適宜定義することにより、未知のセキュリティ攻撃を検知可能とすることができる。
本実施の形態に係るサーバは、前記不正パターンを更新する更新部を備える。
更新部は、不正パターンを更新する。これにより、従来にはなかった新たなセキュリティ攻撃を検知可能とすることができる。
本実施の形態に係るサーバは、計時部を備え、前記所定の条件は、前記システムコールが実行された時点と前記計時部で計時した時点との時間差が所定時間以上であり、前記監視部は、前記デバイスに係る故障の有無を監視する。
所定の条件は、システムコールが実行された時点と計時部で計時した時点との時間差が所定時間以上であり、監視部は、デバイスに係る故障の有無を監視する。例えば、時間差が所定時間以上である場合、アプリケーションがシステムコールを所定時間以上実行しないことになり、デバイスの状況を監視することができないので、デバイスが故障していると判定することができる。
本実施の形態に係るデバイス監視方法は、複数のデバイスを監視するサーバによるデバイス監視方法であって、前記複数のデバイスそれぞれは、デバイス本体で実行されるOSのシステムコールに関する情報を取得し、取得したシステムコールに関する情報を、秘匿通信路を介して前記サーバへ送信し、前記サーバは、前記複数のデバイスそれぞれからOSのシステムコールに関する情報を受信し、受信したシステムコールに関する情報に基づいてデバイス毎のシステムコール履歴情報を履歴情報記憶部に記憶し、前記履歴情報記憶部に記憶したシステムコール履歴情報に基づいて、任意のデバイスに係る所定の事象の有無を監視する。
複数のデバイスそれぞれは、デバイス本体で実行されるOSのシステムコールに関する情報を取得し、取得したシステムコールに関する情報を、秘匿通信路を介してサーバへ送信する。
サーバは、複数のデバイスそれぞれからOSのシステムコールに関する情報を受信し、受信したシステムコールに関する情報に基づいてデバイス毎のシステムコール履歴情報を履歴情報記憶部に記憶し、記憶したシステムコール履歴情報に基づいて、任意のデバイスに係る所定の事象の有無を監視する。
上述の構成により、デバイスは、システムコールに関する情報をサーバへ転送するので、デバイスが個々の不正な処理順序を定義した上でデバイスに組み込む必要がなく、サーバ側でデバイスを監視することができる。また、デバイスのセキュリティ上の安全性を高めることができる。デバイスは、秘匿通信路を使ってシステムコールに関する情報を転送するので、システムコールに関する情報が不正に改ざんされることを防止することができ、また、システムコールに関する情報の送信がブロックされることも防止することができる。
また、サーバは、夫々のデバイスについて、システムコールの実行順に実行内容を把握することができ、デバイスに係る所定の事象の有無を監視することができる。