JP2010097594A - Api検査装置及び状態監視装置 - Google Patents

Api検査装置及び状態監視装置 Download PDF

Info

Publication number
JP2010097594A
JP2010097594A JP2009196691A JP2009196691A JP2010097594A JP 2010097594 A JP2010097594 A JP 2010097594A JP 2009196691 A JP2009196691 A JP 2009196691A JP 2009196691 A JP2009196691 A JP 2009196691A JP 2010097594 A JP2010097594 A JP 2010097594A
Authority
JP
Japan
Prior art keywords
api
state
api call
user
execution environment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009196691A
Other languages
English (en)
Other versions
JP4653230B2 (ja
Inventor
Masaru Ota
賢 太田
Hisatoshi Eguchi
悠利 江口
Tomohiro Nakagawa
智尋 中川
Atsushi Takeshita
敦 竹下
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NTT Docomo Inc
Original Assignee
NTT Docomo Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NTT Docomo Inc filed Critical NTT Docomo Inc
Priority to JP2009196691A priority Critical patent/JP4653230B2/ja
Priority to US12/562,574 priority patent/US8413230B2/en
Priority to CN200910176280A priority patent/CN101685487A/zh
Priority to EP09170813A priority patent/EP2166478A3/en
Publication of JP2010097594A publication Critical patent/JP2010097594A/ja
Application granted granted Critical
Publication of JP4653230B2 publication Critical patent/JP4653230B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】オープン実行環境とクローズド実行環境とを備えるデバイスにおいて、オープン実行環境とクローズド実行環境とでのAPI呼出しによる連携に関して、低いオーバヘッドで安全性及び信頼性を確保できるAPI検査装置及び状態監視装置を提供する。
【解決手段】API検査装置300は、API呼出しを許可するか否かの判定を要求する判定要求を受け付けるAPI検査要求受付部301と、デバイス100の状態情報を取得する状態情報取得部303と、取得した状態情報に基づいて、API呼出しに対する検査モードを設定する検査モード設定部305と、設定された検査モードに基づいて、API呼出しを許可するか否かを判定し、API呼出しの検査結果を生成する判定部307と、判定部によって生成された検査結果を出力する検査結果出力部309とを備える。
【選択図】図1

Description

本発明は、携帯電話やPDA、PCなどのデバイスにおいて、ソフトウェアやハードウェアによって実現されるAPI検査装置及び状態監視装置に関し、特に、クローズド実行環境に配置されるAPI検査装置と、オープン実行環境に配置される状態監視装置とに関する。
従来、携帯電話やPDA、PCなどのデバイスでは、例えば、1つのCPU上において複数のオペレーティングシステム(OS)を並行して動作可能なソフトウェア或いはハードウェア、いわゆる仮想マシンモニタ(VMM)を設ける方法が知られている。
このようなデバイスでは、信頼されたプログラム以外のプログラムも自由に或いは一定の制限の下に実行することができる実行環境(以下、オープン実行環境という)と、オープン実行環境からのアプリケーション・プログラム・インタフェース(API)呼出しに基づいて所定の処理が実行され、信頼されたプログラムのみが実行されるクローズドな実行環境(以下、クローズド実行環境という)を、それぞれOS上で安全に隔離して実行できる。ここで、API呼出しとは、クローズド実行環境における機能の呼出しや、クローズド実行環境とのデータの受け渡しを行うための呼出しなどを指す。
このように、クローズド実行環境が提供するAPIの呼出しをオープン実行環境から可能とすることによって、オープン実行環境における自由なプログラムの追加を許容しつつ、守りたい機密の機能やデータをクローズド実行環境に隔離した状態で利用可能とできる(例えば、特許文献1)。
米国特許第7325083号明細書
上述した特許文献1に開示されている技術では、オープン実行環境内に配置されるOSなどが提供するアクセス制御機能によって、オープン実行環境におけるAPI呼出し元が正当なプログラムか認証し、不正なAPIの呼出しを防ぐ。しかしながら、オープン実行環境にはウィルスなどの悪意あるプログラムが入り込む可能性があるとともに、悪意のあるユーザ自身による解析及び攻撃によって、アクセス制御機能がバイパス或いは無効化された場合、不正なAPI呼出しが可能となる問題がある。
一方で、API呼出しの引数として用いられる値の範囲や不正な文字が含まれていないかの検査、受け渡しデータのフォーマット検査、及びウィルス検査などをクローズド実行環境で実行すれば、ウィルスや悪意のあるユーザからの攻撃の影響を受けず、安全に検査可能である。しかしながら、このような処理は、負荷が重く、携帯電話などでは、バッテリの消耗や応答性の低下などが問題となる。
そこで、OSによるアクセス制御だけに依存せず、かつ引数やデータの検査に比べて処理負荷が低い検査手段として、オープン実行環境とクローズド実行環境の状態に応じた検査モードを設定することが考えられる。例えば、クローズド実行環境内のAPI検査装置が、オープン実行環境において当該API呼出し(連携)に必要なプログラム及び不正なプログラムが実行中か否かの状態情報を取得し、必要なプログラムが実行中で、かつ不正プログラムが実行中でない場合、API呼出しを許可し、そうでない場合はユーザに警告して確認を促すためのユーザ警告モードを設定することが考えられる。ここで、連携に必要なプログラムが実行中でないと、連携動作が失敗し、障害が起きる可能性があるため、あらかじめユーザへ警告するなどの対処が必要である。
しかしながら、この方法には、次のような問題がある。第1の問題は、オープン実行環境に導入され得る多様かつ新たに現れ続ける不正プログラムの出現に追随することは運用コストが高いため、より運用コストの低い方法が求められることである。
第2の問題は、あるAPI呼出しに対してユーザに警告して確認を促す際、ユーザが応答するまではユーザ確認待ちの状態となり、別の新たな連携要求は拒否され得るが、この状態でのオープン実行環境からの新たな連携要求の発行は、無駄な仮想マシン切替及び仮想マシン間通信を引き起こすことである。
さらに、第3の問題は、処理負荷が低い検査手段を導入することで、不正或いは不適切なAPI呼出しを、一次的なフィルタとして除外することはできるが、このようなAPI呼出しが当該検査手段をパスした後は、引数やウィルスの検査などの処理負荷が高い検査が実行されるため、API呼出しの処理遅延が増加し、応答性が低下し得ることである。
そこで、本発明は、オープン実行環境とクローズド実行環境とを備えるデバイスにおいて、オープン実行環境とクローズド実行環境とでのAPI呼出しによる連携に関して、低いオーバヘッドで安全性及び信頼性を確保できるAPI検査装置及び状態監視装置の提供を目的とする。
上述した問題を解決するため、本発明は、次のような特徴を有している。まず、本発明の第1の特徴は、信頼されたプログラム(許可プログラムP1)以外のプログラム(例えば、非信頼プログラムP2)も自由に或いは一定の制限の下に実行することができるオープン実行環境(オープン実行環境120)と、前記オープン実行環境からアプリケーション・プログラム・インタフェース(API131)を呼び出すAPI呼出しに基づいて所定の処理が実行され、信頼されたプログラムのみが実行されるクローズド実行環境(クローズド実行環境130)とを備えるデバイス(デバイス100)において前記クローズド実行環境に配置されるAPI検査装置(API検査装置300)であって、前記オープン実行環境から前記クローズド実行環境内の前記API呼出しを許可するか否かの判定を要求する判定要求を受け付けるAPI検査要求受付部(API検査要求受付部301)と、前記デバイスの状態を示す状態情報を取得する状態情報取得部(状態情報取得部303)と、前記状態情報取得部が取得した前記状態情報に基づいて、前記API呼出しに対する検査モードを設定する検査モード設定部(検査モード設定部305)と、前記検査モード設定部によって設定された前記検査モードに基づいて、前記API呼出しを許可するか否かを判定し、前記API呼出しの検査結果を生成する判定部(判定部307)と、前記判定部によって生成された前記検査結果を出力する検査結果出力部(検査結果出力部309)とを備えることを要旨とする。
本発明の第2の特徴は、本発明の第1の特徴に係り、前記状態情報取得部は、前記デバイスの前記状態情報として、ローカルロック状態、遠隔ロック状態または所定時間に渡って前記デバイスへの入力操作がないことを示す無入力操作状態の少なくとも何れかを取得し、前記検査モード設定部は、前記状態情報が前記ローカルロック状態、前記遠隔ロック状態または前記無入力操作状態である場合、前記検査モードをユーザ操作禁止モードに設定し、前記判定部は、前記ユーザ操作禁止モードに設定されており、前記デバイスのユーザの操作によって要求された場合にのみ許可されている種別のAPI呼出しである場合、前記API呼出しを禁止することを要旨とする。
本発明の第3の特徴は、本発明の第1の特徴に係り、前記状態情報取得部は、前記状態情報として非信頼フラグを用い、前記非信頼フラグは、信頼されていない非信頼プログラム(非信頼プログラムP2)が前記オープン実行環境において実行中、または前記非信頼プログラムが前記デバイスにインストールされている場合にセットされるとともに、前記非信頼プログラムが実行中でない、または前記非信頼プログラムが前記デバイスにインストールされていない場合にリセットされ、前記検査モード設定部は、前記非信頼フラグがセット状態の場合、ユーザ警告モードに設定し、前記判定部は、前記ユーザ警告モードに設定されている場合、前記デバイスのユーザに前記状態情報に従った警告を行い、API呼出しを許可するか否かの前記ユーザに対する確認をした後、または前記確認をすることなく前記API呼出しを拒否することを要旨とする。
本発明の第4の特徴は、本発明の第1の特徴に係り、前記状態情報取得部は、前記状態情報として許可フラグを用い、前記許可フラグは、前記クローズド実行環境に対するAPI呼出しを正常に実行するために必須とされる必須プログラムが前記オープン実行環境において正常動作中、または前記必須プログラムが前記デバイスにインストールされている場合にセットされるとともに、前記必須プログラムが障害の場合、または前記必須プログラムが前記デバイスにインストールされていない場合にリセットされ、
前記検査モード設定部は、前記許可フラグがリセット状態の場合、ユーザ警告モードに設定し、前記判定部は、前記ユーザ警告モードに設定されている場合、前記デバイスのユーザに前記状態情報に従った警告を行い、API呼出しを許可するか否かの前記ユーザに対する確認をした後、または前記確認をすることなく前記API呼出しを拒否することを要旨とする。
本発明の第5の特徴は、本発明の第1の特徴に係り、前記API検査要求受付部は、前記アプリケーション・プログラム・インタフェースの呼び出し元であるAPI呼出し元のプログラム識別子を含む判定要求を受け付け、前記状態情報取得部は、前記クローズド実行環境に対する前記API呼出しを許可された複数の許可プログラム(許可プログラムP1)それぞれについて、前記オープン実行環境において実行中、または前記許可プログラムが前記デバイスにインストールされている場合にセットされる許可フラグのリストを含む許可フラグリストを前記状態情報として取得し、前記判定部は、前記プログラム識別子に対応する前記許可フラグがリセット状態である場合に、前記ユーザに警告を行い、API呼出しを許可するか否かの前記ユーザに対する確認をした後、または前記確認をすることなく前記API呼出しを拒否することを要旨とする。
本発明の第6の特徴は、本発明の第1の特徴に係り、前記状態情報取得部は、前記ローカルロック状態または前記遠隔ロック状態が他の状態に変化したときに、変化後の状態に従ってロック解除待ち連携抑制フラグを設定するとともに、前記オープン実行環境において実行される前記プログラムの状態を監視する状態監視装置に、前記変化後の状態に従って前記ロック解除待ち連携抑制フラグを通知することを要旨とする。
本発明の第7の特徴は、本発明の第1の特徴に係り、前記状態情報取得部は、前記クローズド実行環境において前記ユーザの確認待ち状態が所定時間経過した場合、ユーザ確認待ち連携抑制フラグをセットするとともに、前記オープン実行環境において実行される前記プログラムの状態を監視する状態監視装置に前記ユーザ確認待ち連携抑制フラグがセットされたことを通知し、前記ユーザ確認待ち連携抑制フラグがセット状態においてユーザ確認待ち状態が終了した場合、前記ユーザ確認待ち連携抑制フラグをリセットするとともに、前記状態監視装置に前記ユーザ確認待ち連携抑制フラグがリセットされたことを通知することを要旨とする。
本発明の第8の特徴は、本発明の第1の特徴に係り、前記判定部は、前記検査結果として、前記API呼出しの禁止、前記API呼出しの許可、及び前記API呼出しの拒否の何れかを前記検査結果の理由を示すコードとともに生成することを要旨とする。
本発明の第9の特徴は、本発明の第1の特徴に係り、前記検査モード設定部は、許可と判定された前記API呼出しと同一種別のAPI呼出し、または同一のAPI呼出し元を示す前記プログラム識別子を含むAPI呼出しについて、所定回数または所定時間に渡って無条件に許可する検査省略モードを設定し、前記判定部は、前記検査省略モードに設定されている場合、前記API呼出しの検査を省略したことを示す前記検査結果を生成することを要旨とする。
本発明の第10の特徴は、本発明の第1の特徴に係り、前記アプリケーション・プログラム・インタフェースの種別と、前記種別のAPI呼出しを許可または拒否する前記プログラム識別子とを管理するAPI制限管理部(API制限管理部311)を備え、前記API検査要求受付部は、前記API呼出し元のプログラム識別子と、前記種別を含む判定要求を受け付け、前記判定部は、前記API制限管理部に問い合わせ、前記判定要求に含まれる前記プログラム識別子がAPI呼出しを許可される前記種別に該当する場合、前記API呼出しを許可することを要旨とする。
本発明の第11の特徴は、本発明の第10の特徴に係り、前記API制限管理部は、前記種別と前記種別のAPI呼出しを許可または拒否する前記プログラム識別子とに加えて、前記デバイスのユーザに前記API呼出しの許可の問い合わせを行うか否かを示す問い合わせフラグと、前記問い合わせを行うか否かの判定に用いられるAPI呼出し引数の条件とを管理し、前記判定部は、前記API制限管理部に問い合わせ、前記判定要求に含まれる前記プログラム識別子がAPI呼出しを許可される前記種別に該当するとともに、前記問い合わせフラグがセットされ、前記API呼出し引数の条件を満足する場合、前記ユーザに前記問い合わせを行い、前記ユーザによって前記API呼出しが許可された場合、前記API呼出しを許可することを要旨とする。
本発明の第12の特徴は、本発明の第1の特徴に係り、前記状態監視装置としての機能を提供する状態監視装置プログラムの完全性を検査し、前記状態監視装置プログラムに対する改ざんが検出された場合、前記API呼出しを禁止する完全性検査部(完全性検査部313)を備えることを要旨とする。
本発明の第13の特徴は、本発明の第9の特徴に係り、前記検査モード設定部は、前記検査省略モードが設定されている場合において、前記デバイスの構成変更が行われた場合、前記検査省略モードを解除することを要旨とする。
本発明の第14の特徴は、信頼されたプログラム(許可プログラムP1)以外のプログラム(例えば、非信頼プログラムP2)も自由に或いは一定の制限の下に実行することができるオープン実行環境(オープン実行環境120)と、前記オープン実行環境からアプリケーション・プログラム・インタフェース(API131)を呼び出すAPI呼出しに基づいて所定の処理が実行され、信頼されたプログラムのみが実行されるクローズド実行環境(クローズド実行環境130)とを備えるデバイス(デバイス100、デバイス100A及びデバイス100B)において前記オープン実行環境に配置される状態監視装置(状態監視装置200)であって、前記デバイスの状態を取得し、取得した前記状態を示す状態情報を保持する状態管理部(状態管理部201)と、前記状態情報に基づいて、前記オープン実行環境から前記クローズド実行環境内の前記API呼出しを許可するか否かを決定する許可決定部(許可決定部203)とを備えることを要旨とする。
本発明の第15の特徴は、本発明の第14の特徴に係り、前記状態管理部は、前記デバイスがローカルロック状態、遠隔ロック状態、または所定時間に渡って前記デバイスへの入力操作がないことを示す無入力操作状態の場合にのみセットされるユーザ操作API禁止フラグを保持し、前記許可決定部は、前記ユーザ操作API禁止フラグがセット状態であり、前記デバイスのユーザの操作によって要求された場合にのみ許可されている種別の前記API呼出しである場合、前記API呼出しを禁止することを要旨とする。
本発明の第16の特徴は、本発明の第14の特徴に係り、前記状態管理部は、前記状態情報として非信頼フラグを保持し、前記非信頼フラグは、信頼されていない非信頼プログラムが前記オープン実行環境において実行中、または前記非信頼プログラムが前記デバイスにインストールされている場合にセットされるとともに、前記非信頼プログラムが実行中でない、または前記非信頼プログラムが前記デバイスにインストールされていない場合にリセットされ、前記許可決定部は、前記非信頼フラグがセット状態の場合、前記デバイスのユーザに前記状態情報に従った警告を行い、API呼出しを許可するか否かの前記ユーザに対する確認をした後、または前記確認をすることなく前記API呼出しを拒否することを決定することを要旨とする。
本発明の第16の特徴は、本発明の第15の特徴に係り、前記状態管理部は、前記状態情報として、前記クローズド実行環境に対する前記API呼出しを許可された複数の許可プログラムそれぞれについて、前記オープン実行環境において実行中の場合にセットされる前記許可フラグのリストである許可フラグリストを保持することを要旨とする。
本発明の第17の特徴は、本発明の第14の特徴に係り、前記状態管理部は、前記状態情報として許可フラグを保持し、前記許可フラグは、前記クローズド実行環境に対するAPI呼出しを正常に実行するために必須とされる必須プログラムが前記オープン実行環境において正常動作中、または前記必須プログラムが前記デバイスにインストールされている場合にセットされるとともに、前記必須プログラムが障害の場合、または前記必須プログラムが前記デバイスにインストールされていない場合にリセットされ、
前記許可決定部は、前記許可フラグがリセット状態の場合、前記デバイスのユーザに前記状態情報に従った警告を行い、API呼出しを許可するか否かの前記ユーザに対する確認をした後、または前記確認をすることなく前記API呼出しを拒否することを決定することを要旨とする。
本発明の第18の特徴は、本発明の第16の特徴に係り、前記非信頼フラグがセット状態に変化したとき、前記クローズド実行環境に配置されるAPI検査装置(API検査装置300)に前記状態情報を通知する状態情報通知部(状態情報通知部205)を備えることを要旨とする。
本発明の第19の特徴は、本発明の第17の特徴に係り、前記許可フラグがリセット状態に変化したとき、前記クローズド実行環境に配置されるAPI検査装置(API検査装置300)に前記状態情報を通知する状態情報通知部(状態情報通知部205)を備えることを要旨とする。
本発明の第20の特徴は、本発明の第14の特徴に係り、前記状態管理部は、ローカルロック状態または遠隔ロック状態が他の状態に変化したときに設定されるロック解除待ち連携抑制フラグ、またはクローズド実行環境において前記ユーザの確認待ち状態が所定時間経過したときにセットされるユーザ確認待ち連携抑制フラグの少なくとも何れかを、前記クローズド実行環境に配置されるAPI検査装置から前記状態情報として受信して保持し、前記許可決定部は、前記ロック解除待ち連携抑制フラグ及び前記ユーザ確認待ち連携抑制フラグの何れもがリセット状態である場合にのみ、前記デバイスのユーザの操作によって要求された場合にのみ許可されている種別の前記API呼出しを許可することを要旨とする。
本発明の第21の特徴は、本発明の第20の特徴に係り、前記状態管理部は、所定のタイムアウト時間が経過した場合、前記ユーザ確認待ち連携抑制フラグをリセットすることを要旨とする。
本発明の第22の特徴は、本発明の第20の特徴に係り、前記状態管理部は、前記API呼出しが要求された後、所定時間に渡って前記API呼出しに対する応答がない場合、前記ユーザによる確認待ち状態と判断し、前記ユーザ確認待ち連携抑制フラグをセットし、前記許可決定部は、前記ユーザ確認待ち連携抑制フラグがセット状態である場合にのみ、前記ユーザの操作によって要求された場合にのみ許可される前記API呼出しを禁止することを要旨とする。
本発明の特徴によれば、オープン実行環境とクローズド実行環境とを備えるデバイスにおいて、オープン実行環境とクローズド実行環境とでのAPI呼出しによる連携に関して、低いオーバヘッドで安全性及び信頼性を確保できるAPI検査装置及び状態監視装置を提供できる。
本発明の実施形態に係るデバイス100の機能ブロック図である。 本発明の実施形態に係る状態情報の具体例を示す図である。 本発明の実施形態に係るロック状態や操作状態に応じたAPI呼出しの抑制手順を示す図である。 本発明の実施形態に係る状態情報の通知手順を示す図である。 本発明の実施形態に係る非信頼フラグまたは許可フラグによるAPI呼出しの抑制手順(その1)を示す図である。 本発明の実施形態に係る非信頼フラグまたは許可フラグによるAPI呼出しの抑制手順(その2)を示す図である。 本発明の実施形態に係る連携抑制フラグ(ロック解除待ち連携抑制フラグ及びユーザ確認待ち連携抑制フラグ)によるAPI呼出しの抑制手順(その1)を示す図である。 本発明の実施形態に係る連携抑制フラグ(ロック解除待ち連携抑制フラグ及びユーザ確認待ち連携抑制フラグ)によるAPI呼出しの抑制手順(その2)を示す図である。 本発明の実施形態に係る検査モードの設定手順を示す図である。 本発明の実施形態に係るAPI呼出しの検査手順を示す図である。 本発明の実施形態に係るAPI制限管理部311によるAPI131の制限例を示す図である。 本発明のその他の実施形態に係るデバイス100Aの機能ブロック図である。 本発明のその他の実施形態に係るデバイス100Bの機能ブロック図である。
次に、本発明の実施形態について説明する。具体的には、(1)デバイスの機能ブロック構成、(2)状態監視装置の機能ブロック構成、(3)API検査装置の機能ブロック構成、(4)作用・効果、及び(5)その他の実施形態について説明する。
なお、以下の図面の記載において、同一または類似の部分には、同一または類似の符号を付している。ただし、図面は模式的なものであり、各寸法の比率などは現実のものとは異なることに留意すべきである。
したがって、具体的な寸法などは以下の説明を参酌して判断すべきものである。また、図面相互間においても互いの寸法の関係や比率が異なる部分が含まれていることは勿論である。
(1)デバイスの機能ブロック構成
図1は、本実施形態に係るデバイス100の機能ブロック図である。デバイス100では、1つのCPU(不図示)上において複数のオペレーティングシステム(OS)を並行して動作可能なソフトウェア或いはハードウェアである仮想マシンモニタ110(VMM)が設けられる。
本実施形態では、オープン実行環境120と、クローズド実行環境130とがそれぞれOSとして実現される。すなわち、デバイス100は、オープン実行環境120とクローズド実行環境130とを備える。
オープン実行環境120では、デバイス100の提供者(端末メーカや通信オペレータなど)によって信頼されたプログラムである許可プログラムP1以外のプログラム(非信頼プログラムP2及び)も自由に、或いは一定の制限の下に実行することができる。
クローズド実行環境130では、オープン実行環境120からアプリケーション・プログラム・インタフェース131(以下、API131)を呼び出すAPI呼出しに基づいて所定の処理が実行され、信頼されたプログラムのみが実行される。
オープン実行環境120には、状態監視装置200が配置される。状態監視装置200は、オープン実行環境120において実行されるプログラムの状態を監視し、当該状態を示す状態情報をAPI検査装置300に通知する。
クローズド実行環境130には、API検査装置300が配置される。API検査装置300は、オープン実行環境120において実行されるプログラムによるAPI呼出しの正当性などを検査する。
オープン実行環境120とクローズド実行環境130は、仮想マシン(VM)間通信機能を利用して相互に通信する。なお、本実施形態では、状態監視装置200及びAPI検査装置300は、デバイスドライバとして実装されることを想定しているが、ミドルウェアなどOS上のソフトウェアとして実装されてもよいし、ハードウェアとして実装されてもよい。
(2)状態監視装置の機能ブロック構成
図1に示すように、状態監視装置200は、状態管理部201、許可決定部203及び状態情報通知部205を備える。以下、各ブロックの機能について説明する。
(2.1)状態管理部201
状態管理部201は、デバイス100の状態を取得し、取得した前記状態を示す状態情報を保持する。図2は、状態情報の具体例を示す。図2に示すように、状態管理部201は、デバイス100の状態情報として、非信頼フラグを保持することができる。非信頼フラグは、信頼されていない非信頼プログラムP2がオープン実行環境120において実行中、または非信頼プログラムP2がデバイス100にインストールされている場合にセットされる。一方、非信頼フラグは、非信頼プログラムP2が実行中でない、または非信頼プログラムP2がデバイス100にインストールされていない場合にリセットされる。
非信頼プログラムの例として、デバッガソフト、USBやBluetoothを用いて外部のPCなどと接続して通信を中継するプログラム、ゲームに似せたウィルスやスパイウェアプログラムなどが考えられる。また、非信頼プログラムの識別は、例えば、デジタル署名の有無の検査によって実現できる。特定の組織(端末メーカ、通信オペレータ及び特定のソフトウェアベンダなど)のデジタル署名が付加されていないプログラムは、信頼できないとみなす。または、ホワイトリストに信頼するプログラムを記載し、当該プログラム以外を信頼できないとみなしてもよい。或いは、ブラックリストに信頼できないプログラムを記載し、当該プログラムを信頼できないとみなしてもよい。
また、状態管理部201は、状態情報として許可フラグを保持することができる。許可フラグは、クローズド実行環境130に対するAPI呼出しを正常に実行するために必須とされる必須プログラムP3がオープン実行環境120において正常動作中、または必須プログラムP3がデバイス100にインストールされている場合にセットされる。また、必須プログラムP3が障害の場合、または必須プログラムP3がデバイス100にインストールされていない場合にリセットされる。なお、必須プログラムP3の障害の検知は、状態管理部201が必須プログラムP3に問い合わせを行い、正常な応答があるか否かを確認することなどで実現できる。
必須プログラムP3は、例えば、VM間通信機能や、オープン実行環境120の安全性を守るためのウィルススキャンプログラム、クローズド実行環境130のAPIを呼び出せるアプリケーションが限定されている場合、そのAPI呼出しを許可された当該アプリケーションなどが考えられる。
さらに、状態管理部201は、デバイス100がローカルロック状態、遠隔ロック状態、または無入力操作状態の場合にのみセットされるユーザ操作API禁止フラグを状態情報として保持することができる。
ローカルロック状態とは、正当な暗証番号やパスワードの入力、特定のボタン押下などを行わない限り、ユーザがデバイス100の操作を行えないように、デバイス100がロックしている状態である。ユーザが一定時間操作をしていなかったり、クラムシェル型の端末を閉じたり、特定のボタンや設定を行うことで、デバイス100はローカルロック状態に遷移する。
一方、遠隔ロック状態とは、デバイス100がデバイス100を管理するサーバからの要求や、遠隔ユーザからの要求に基づき、デバイス100の操作を行えないように、ロックしている状態である。ローカルロック状態及び遠隔ロック状態の何れもOSやミドルウェアなどの状態を管理するソフトウェアが提供しているAPIを通じてロック状態を取得することができる。
無入力操作状態とは、所定時間に渡ってデバイス100への入力操作がない状態である。現在から一定時間における操作の有無は、例えば、キーパッドのデバイスドライバを用いてログを収集すれば判定できる。
また、プログラムの実行状態やインストール状態の取得は、OSのプロセス管理機能やアプリケーション管理機能の利用、RAM(不図示)のスキャン、各プログラムが特定の領域に書き込むフラグやデータの確認、またはプログラムが起動した際に発行する通知の受領などによって実現できる。状態管理部201は、状態情報をRAMまたはハードディスクなどのストレージに記憶することによって保持する。なお、状態情報は、改ざんできない安全な場所において保持することが望ましい。
さらに、状態管理部201は、ローカルロック状態または遠隔ロック状態が他の状態に変化したときに設定されるロック解除待ち連携抑制フラグをクローズド実行環境130に配置されるAPI検査装置300から状態情報として受信して保持することもできる。また、状態管理部201は、クローズド実行環境130においてユーザの確認待ち状態が所定時間経過したときにセットされるユーザ確認待ち連携抑制フラグをAPI検査装置300から状態情報として受信して保持することもできる。
状態管理部201は、所定のタイムアウト時間が経過した場合、ユーザ確認待ち連携抑制フラグをリセットする。また、状態管理部201は、API呼出しが要求された後、所定時間に渡ってAPI呼出しに対する応答がない場合、ユーザによる確認待ち状態と判断し、ユーザ確認待ち連携抑制フラグをセットする。
(2.2)許可決定部203
許可決定部203は、状態管理部201が保持している状態情報に基づいて、オープン実行環境120からクローズド実行環境130内のAPI呼出しを許可するか否かを決定する。具体的には、プログラム(アプリケーションなど)がVM間通信機能を呼び出す際、VM間通信機能は、状態監視装置200にAPI呼出しを許可するか否かを問い合わせる。許可決定部203は、当該問い合わせに対してAPI呼出しを許可するか否かの決定結果を応答する。或いは、プログラムが状態監視装置200に問い合わせてAPI呼出しが許可された場合に、VM間通信機能にアクセスしてAPI呼出しを実行してもよい。
許可決定部203は、ユーザ操作API禁止フラグがセット状態であり、ユーザの操作によって要求された場合にのみ許可されている種別のAPI呼出しである場合、当該API呼出しを禁止(抑制)することができる。また、許可決定部203は、非信頼フラグがセット状態の場合、ユーザに状態情報に従った警告を行い、API呼出しを許可するか否かのユーザに対する確認をした後、または当該確認をすることなくAPI呼出しを拒否することもできる。例えば、非信頼フラグがセット状態の場合、「システムが正常でない可能性があるため処理を中断します」といった内容の警告を行い、API呼出しを禁止する。
また、許可決定部203は、許可フラグがリセット状態の場合、ユーザに状態情報に従った警告を行い、API呼出しを許可するか否かのユーザに対する確認をした後、または当該確認をすることなくAPI呼出しを拒否することを決定することもできる。例えば、許可フラグがリセット状態の場合、「システムが正常でない可能性がありますが、処理を続行しますか」といった内容の警告を行う。この警告は、一度行った後は再度の警告を控えてもよい。例えば、デバイス100の起動後に一度警告したらデバイス100を再起動後するまで警告を控えてもよい。或いは、ユーザに対して警告を継続するか否かを問い合わせてもよい。
許可決定部203は、ロック解除待ち連携抑制フラグ及びユーザ確認待ち連携抑制フラグの何れもがリセット状態である場合にのみ、ユーザの操作によって要求された場合にのみ許可されている種別のAPI呼出しを許可することができる。また、API呼出しが要求された後、所定時間に渡ってAPI呼出しに対する応答がない場合において、状態管理部201はユーザによる確認待ち状態と判断し、ユーザ確認待ち連携抑制フラグをセットする。許可決定部は、ユーザ確認待ち連携抑制フラグがセット状態である場合に、ユーザの操作によって要求された場合にのみ許可されるAPI呼出しを禁止する。
(2.3)状態情報通知部205
状態情報通知部205は、API検査装置300に状態情報を通知する。具体的には、状態情報通知部205は、メッセージパッシングや共有メモリなどを用いてAPI検査装置300に状態情報を通知する。なお、状態情報の通知は、状態監視装置200からAPI検査装置300への一方向通信でもよいし、API検査装置300の確認応答をもらってもよい。さらに、通知内容を暗号化したり、MAC(メッセージ認証コード)やデジタル署名を付与したりしてもよい。
また、状態情報通知部205は、非信頼フラグがセット状態に変化したとき、及び許可フラグがリセット状態に変化したとき、クローズド実行環境130に配置されるAPI検査装置300に状態情報を通知する。なお、API検査装置300は、必ずしもクローズド実行環境130に配置されていなくても構わない。
(2.4)状態監視装置の動作
次に、状態監視装置200の動作について説明する。具体的には、(2.4.1)ロック状態や操作状態に応じたAPI呼出しの抑制手順、(2.4.2)状態情報の通知手順、(2.4.3)非信頼フラグまたは許可フラグによるAPI呼出しの抑制手順、及び(2.4.4)連携抑制フラグによるAPI呼出しの抑制手順について説明する。
(2.4.1)ロック状態や操作状態に応じたAPI呼出しの抑制手順
図3は、ロック状態や操作状態に応じたAPI呼出しの抑制手順を示す。ここでは、プログラムがAPI呼出しを行う際、VM間通信機能を呼び出し、VM間通信機能が状態監視装置200にAPI呼出しを許可するか否かを問い合わせる。
ステップ31は、デバイス100がローカルロック状態または遠隔ロック状態になったとき、或いは所定時間デバイス100への入力操作がない無入力操作状態になったときに実行される。ステップ31において、状態管理部201は、ユーザ操作API禁止フラグをセットし、その状態を保持する。
ステップ32は、デバイス100がローカルロック状態または遠隔ロック状態が解除されたとき、或いは無入力操作状態においてデバイス100への入力操作があったときに実行される。ステップ32において、状態管理部201は、ユーザ操作API禁止フラグをリセットし、その状態を保持する。
ステップ33は、VM間通信機能が状態監視装置200に問い合わせをしたときに実行される。ステップ33において、許可決定部203は、ユーザ操作API禁止フラグがセット状態か否かを確認する。
ユーザ操作API禁止フラグがセット状態の場合(ステップ33のYES)、ステップ34において、許可決定部203は、API呼出しがユーザの操作によって要求された場合にのみ許可するAPI呼出しの種別か否かを確認する。
ユーザの操作によって要求された場合にのみ許可するAPI呼出しである場合(ステップ34のYES)、ステップ35において、許可決定部203は、当該API呼出しを禁止(抑制)することを決定し、VM間通信機能に応答する。
ユーザの操作によって要求された場合にのみ許可するAPI呼出しでない場合(ステップ34のNO)、ステップ36において、許可決定部203は、当該API呼出しを許可することを決定し、VM間通信機能に応答する。
(2.4.2)状態情報の通知手順
図4は、状態情報の通知手順を示す。図4に示すように、ステップ41において、状態管理部201は、オープン実行環境120におけるプログラムの実行状態の変化を検知し、状態情報として保持する。状態管理部201は、1つ以上の非信頼プログラムP2がオープン実行環境120で実行中またはインストールされている場合に非信頼フラグをセットする。また、状態管理部201は、クローズド実行環境130のAPI呼出しを正常に実行するために必須とされる必須プログラムP3がオープン実行環境120で正常動作中であるかまたはインストールされている場合、許可フラグをセットする。
ステップ42において、許可決定部203は、フラグの変化を検出し、変化したフラグに対応した処理を実行する。許可フラグの状態が変化した場合、許可決定部203は、ステップ43の処理を実行する。非信頼フラグの状態が変化した場合、ステップ45の処理を実行する。複数のフラグの状態が変化した場合、許可決定部203は、ステップ47の処理を実行する。
ステップ43において、状態情報通知部205は、許可フラグの状態情報をAPI検査装置300に通知する。
ステップ44において、状態情報通知部205は、オプションとして、許可フラグがリセット状態の場合、システム(デバイス100)が正常でない旨をユーザに警告してもよい。その際、状態監視装置200は、ユーザに確認の上、復旧のためデバイス100を再起動してもよい。
ステップ45において、状態情報通知部205は、非信頼フラグの状態情報をAPI検査装置300に通知する。
ステップ46において、状態情報通知部205は、オプションとして、非信頼フラグがセット状態の場合、システム(デバイス100)が正常でない旨をユーザに警告してもよい。その際、状態監視装置200は、ユーザに確認の上、復旧のためデバイス100を再起動してもよい。
ステップ47において、状態情報通知部205は、許可フラグ及び非信頼フラグの状態情報としてAPI検査装置300に通知する。
ステップ48において、状態情報通知部205は、オプションとして、上述したステップ44及び46と同様に、復旧のためデバイス100を再起動してもよい。
(2.4.3)非信頼フラグまたは許可フラグによるAPI呼出しの抑制手順
図5及び図6は、非信頼フラグまたは許可フラグによるAPI呼出しの抑制手順を示す。図5及び図6に示す抑制手順は、上述した状態情報の通知手順と似ているが、ここでは、非信頼フラグ及び許可フラグの設定について、さらに詳細に説明する。
図5に示すように、ステップ101において、状態管理部201は、オープン実行環境120におけるプログラムの実行状態或いはインストール状態の変化が検知された際に呼び出される。
ステップ102において、状態管理部201は、1つ以上の非信頼プログラムP2がオープン実行環境120で実行中か否かを判定する。
非信頼プログラムP2がオープン実行環境120で実行中でない場合(ステップ102のNO)、ステップS103において、状態管理部201は、1つ以上の非信頼プログラムP2がオープン実行環境120にインストールされているか否かを判定する。
非信頼プログラムP2がオープン実行環境120で実行中である場合(ステップ102のYES)、または非信頼プログラムP2がオープン実行環境120にインストールされている場合(ステップ103のYES)、ステップ104において、状態管理部201は、非信頼フラグをセットする。
非信頼プログラムP2がオープン実行環境120にインストールされていない場合(ステップ103のNO)、ステップ105において、クローズド実行環境130のAPI呼出しを正常に実行するために必須とされる必須プログラムP3がオープン実行環境120で正常動作中か否かを判定する。
必須プログラムP3がオープン実行環境120で正常動作中でない場合(ステップ105のNO)、ステップS106において、状態管理部201は、必須プログラムP3がオープン実行環境120にインストールされているか否かを判定する。
必須プログラムP3がオープン実行環境120で正常動作中である場合(ステップ105のYES)、または必須プログラムP3がオープン実行環境120にインストールされている場合(ステップ106のYES)、ステップ107において、許可フラグをリセットする。
図6に示すステップ108の処理は、VM間通信機能が状態監視装置200に問い合わせをした際に実行される。ステップ108において、状態管理部201は、非信頼フラグがセット状態か否かを判定する。
非信頼フラグがセット状態の場合(ステップ108のYES)、状態情報通知部205は、ステップ109において、システム(デバイス100)が正常でないため、当該処理を続行できない旨をユーザに警告する。次いで、ステップ114において、許可決定部203は、当該API呼出しを禁止(抑制)することを決定し、VM間通信機能に応答する。
非信頼フラグがリセット状態の場合(ステップ108のNO)、ステップ110において、状態管理部201は、許可フラグがリセット状態か否かを判定する。
許可フラグがリセット状態の場合(ステップ110のYES)、状態情報通知部205は、ステップ111において、システムが正常でないが、当該処理を続行するか否かをユーザに確認する。
ステップ112において、状態情報通知部205は、ユーザからの応答が処理の続行を要求しているか否かを判定する。
ユーザからの応答が処理の続行を要求している場合(ステップ112のYES)、ステップ113において、許可決定部203は、当該API呼出しを許可することを決定し、VM間通信機能に応答する。また、許可フラグがセット状態の場合(ステップ110のNO)、ステップ113において、許可決定部203は、当該API呼出しを許可することを決定し、VM間通信機能に応答する。
ユーザからの応答が処理の続行を要求していない場合(ステップ112のNO)、ステップ114において、許可決定部203は、当該API呼出しを禁止(抑制)することを決定し、VM間通信機能に応答する。
(2.4.4)連携抑制フラグによるAPI呼出しの抑制手順
図7及び図8は、連携抑制フラグ(ロック解除待ち連携抑制フラグ及びユーザ確認待ち連携抑制フラグ)によるAPI呼出しの抑制手順を示す。ここでは、プログラムがAPI呼出しを行う際、VM間通信機能を呼び出し、VM間通信機能が状態監視装置200にAPI呼出しを禁止(抑制)するか否かを問い合わせる。
図7(a)に示すように、ステップ201において、状態管理部201は、ロック解除待ち連携抑制フラグまたはユーザ確認待ち連携抑制フラグの少なくとも何れかをAPI検査装置300から受信し、当該フラグを保持する。
ステップ202において、状態管理部201は、受信したフラグがユーザ確認待ち連携抑制フラグか否かを判定する。
受信したフラグがユーザ確認待ち連携抑制フラグである場合(ステップ202のYES)、ステップ203において、状態管理部201は、ユーザ確認待ち連携抑制フラグがセット状態か否かを判定する。
ユーザ確認待ち連携抑制フラグがセット状態の場合(ステップ203のYES)、ステップ204において、状態管理部201は、指定されたタイムアウト時間を設定し、処理を終了する。
図7(b)に示すステップ205は、周期的に実行される。ステップ205において、状態管理部201は、設定したタイムアウト時間を経過した否かを周期的に判定する。
タイムアウト時間を経過した場合(ステップ205のYES)、ステップ206において、状態管理部201は、ユーザ確認待ち連携抑制フラグをリセットする。
次いで、図8に示すステップ207は、VM間通信機能が状態監視装置200に問い合わせをした際に実行される。ステップ207において、状態管理部201は、ロック解除待ち連携抑制フラグまたはユーザ確認待ち連携抑制フラグがセット状態か否かを判定する。
何れかの連携抑制フラグがセット状態の場合(ステップ207のYES)、ステップ208において、状態管理部201は、当該API呼出しがユーザの操作によって要求された場合にのみ許可するAPI呼出しか否かを確認する。
ユーザの操作によって要求された場合にのみ許可するAPI呼出しである場合(ステップ208のYES)、ステップ209において、許可決定部203は、当該API呼出しを禁止(抑制)することを決定し、VM間通信機能に応答する。
連携抑制フラグがリセット状態の場合(ステップ207のNO)、またはユーザの操作によって要求された場合にのみ許可するAPI呼出しでない場合(ステップ208のNO)、ステップ210において、許可決定部203は、当該API呼出しを許可することを決定し、VM間通信機能に応答する。
(3)API検査装置の機能ブロック構成
API検査装置300は、クローズド実行環境130のAPI呼出しを処理する機能やクローズド実行環境130側のVM間通信機能などから、オープン実行環境120からのクローズド実行環境130に対するAPI呼出しを許可するか否かの判定要求を受け付け、当該API呼出しを許可するか拒否するか否かを状態監視装置200に応答する。
図1に示すように、API検査装置300は、API検査要求受付部301、状態情報取得部303、検査モード設定部305、判定部307、検査結果出力部309、API制限管理部311及び完全性検査部313を備える。
(3.1)API検査要求受付部301
API検査要求受付部301は、オープン実行環境120からクローズド実行環境130に対するAPI呼出しを許可するか否かの判定を要求する判定要求を受け付ける。具体的には、クローズド実行環境130のAPI呼出しを処理する機能やクローズド実行環境130側のVM間通信機能から判定要求を受け付ける。
API検査要求受付部301は、API呼出し元のプログラム識別子を含む判定要求を受け付けることができる。API呼出し元のプログラム識別子は、プログラムの名前、プログラムのユニークな番号、プログラムのハッシュ値、プログラムがAPI131を呼び出す際に指定する識別番号などの何れでもよい。
また、API検査要求受付部301は、API呼出し元のプログラム識別子と、API131の種別を含む判定要求を受け付けることもできる。API131の種別は、API131の名前やカテゴリ名、番号やカテゴリの番号、ハッシュ値など何れでもよい。また、プログラム識別子とAPI131の種別を兼ねて、プログラムがAPI131を呼び出す際に指定する識別番号を利用してもよい。
(3.2)状態情報取得部303
状態情報取得部303は、状態監視装置200またはクローズド実行環境130のOSやミドルウェアからデバイス100の状態情報を取得し、取得した状態情報を保持する。状態情報取得部303は、取得した状態情報をRAMまたはハードディスクなどのストレージに記憶することによって保持する。また、状態情報取得部303は、VM間通信機能が提供するメッセージパッシングや共有メモリなどを用いて、状態監視装置200から状態情報を取得する。
上述したように、図2は、状態情報の具体例を示す。なお、状態情報の通知は、状態監視装置200からAPI検査装置300への一方向通信でもよいし、確認応答が求められている場合は確認応答(ACK)を状態監視装置200に送信してもよい。また、MACやデジタル署名の付与、状態情報が暗号化されている場合、状態情報取得部303は、必要に応じて検証や復号を実行する。
また、状態情報取得部303は、状態情報として、ローカルロック状態、遠隔ロック状態または無入力操作状態を取得することができる。なお、クローズド実行環境130や仮想マシンモニタ110、またはその他のオープン実行環境120でない環境においてローカルロック状態、遠隔ロック状態または無入力操作状態を管理している場合、状態情報取得部303は、安全に当該状態情報を取得できる。一方、オープン実行環境120において当該状態を管理している場合、状態情報が改ざんされる可能性があり、状態情報取得部303は、必ずしも正しい状態情報を取得することができない。
また、状態情報取得部303は、ローカルロック状態または遠隔ロック状態の場合にロック解除待ち連携抑制フラグをセットし、状態監視装置200に当該フラグをセットしたことを通知してもよい。同様に、状態情報取得部303は、クローズド実行環境130においてユーザの確認待ち状態が所定時間経過した場合にユーザ確認待ち連携抑制フラグをセットし、状態監視装置200に当該フラグをセットしたことを通知してもよい。
また、状態情報取得部303は、ローカルロック状態または遠隔ロック状態が他の状態に変化したときに、変化後の状態に従ってロック解除待ち連携抑制フラグを設定するとともに、状態監視装置200に、当該変化後の状態に従ってロック解除待ち連携抑制フラグを通知してもよい。
また、状態情報取得部303は、ユーザ確認待ち連携抑制フラグがセット状態においてユーザの確認待ち状態が終了した場合、ユーザ確認待ち連携抑制フラグをリセットするとともに、状態監視装置200にユーザ確認待ち連携抑制フラグがリセットされたことを通知してもよい。さらに、状態情報取得部303は、ユーザ確認待ち連携抑制フラグがセット状態において所定のタイムアウト時間を超えている場合、状態監視装置200へのユーザ確認待ち連携抑制フラグのリセットの通知を省略してもよい。
状態情報取得部303は、上述した状態管理部201と同様に、状態情報として非信頼フラグ及び許可フラグを用いる。非信頼フラグ及び許可フラグは、オープン実行環境120で動作する状態監視装置200からセットしてもよいし、仮想マシンモニタ110が非信頼フラグを管理している場合は仮想マシンモニタ110からセットしてもよい。なお、非信頼プログラムP2の例や判定方法などは、状態管理部201と同様である。
状態情報取得部303は、クローズド実行環境130に対するAPI呼出しを許可された複数の許可プログラムP1それぞれについて、オープン実行環境120において実行中、またはその許可プログラムP1がデバイス100にインストールされている場合にセットされる許可フラグのリストを含む許可フラグリストを状態情報として取得することもできる(図2参照)。
状態情報取得部303は、(a)API呼出しが所定回数行われた際、(b)API呼出しが所定回数拒否された際、(c)最後のAPI呼出しがなされた後、所定時間が経過した際、状態監視装置200に状態情報の通知を要求することもできる。このような通知によれば、状態情報の通知の失敗などが発生しても、次に通知において、状態監視装置200とAPI検査装置300との間における状態情報の不整合が解消される。また、所定時間に渡って状態監視装置200からの応答がない場合、API検査装置300は、障害が発生したと判定し、対策を講じてもよい。例えば、API検査装置300は、API呼出しの禁止、デバイスの再起動、またはユーザに通知後のデバイス再起動などの対策を実行できる。
(3.3)検査モード設定部305
検査モード設定部305は、状態情報取得部303が取得した状態情報に基づいて、API呼出しに対する検査モードを設定する。検査モードは、API呼出しに対する検査のポリシーを示す。
検査モード設定部305は、状態情報がローカルロック状態、遠隔ロック状態または無入力操作状態である場合、検査モードをユーザ操作禁止モードに設定する。ユーザ操作禁止モードとは、ユーザ操作によって要求された場合にのみ許可する種別のAPI呼出しを禁止するモードである。
検査モード設定部305は、非信頼フラグがセット状態の場合、または許可フラグがリセット状態の場合、ユーザに状態情報に従った警告を行うユーザ警告モードに設定することができる。また、検査モード設定部305は、許可フラグの状態に基づいて検査モードを設定する場合、API検査要求受付部301が受け付けたプログラム識別子に対応するフラグがリセット状態である場合、ユーザ警告モードに設定することができる。
検査モード設定部305は、許可と判定されたAPI呼出しと同一種別のAPI呼出し、または同一のAPI呼出し元を示すプログラム識別子を含むAPI呼出しについて、所定回数または所定時間に渡って無条件に許可する検査省略モードを設定することができる。また、検査モード設定部305は、検査省略モードが設定されている場合において、デバイス100の構成変更が行われた場合、検査省略モードを解除することができる。構成変更とは、アプリケーションの起動や終了、インストールやアンインストールなどである。
(3.4)判定部307
判定部307は、検査モード設定部305によって設定された検査モードに基づいて、API呼出しを許可するか否かを判定する。また、判定部307は、判定結果に基づいてAPI呼出しの検査結果を生成する。
判定部307は、ユーザ操作禁止モードに設定されており、ユーザの操作によって要求された場合にのみ許可されている種別のAPI呼出しである場合、当該API呼出しを禁止すると判定する。
また、判定部307は、ユーザ警告モードに設定されている場合、ユーザに当該状態情報に従った警告を行い、API呼出しを許可するか否かのユーザに対する確認をした後、または当該確認をすることなく当該API呼出しを拒否することができる。なお、ユーザに対する警告の内容は、上述した許可決定部203と同様で構わない。
判定部307は、API呼出しの禁止、API呼出しの許可及びAPI呼出しの拒否の何れかを検査結果として生成する。また、判定部307は、検査結果の理由を示すコードとともに当該検査結果を生成することもできる。当該コードとは、例えば、ユーザの操作に基づくAPI呼出しでないから禁止されているのか、API呼出しの実行に必須な必須プログラムP3が正常動作中でないから拒否されているのかである。
判定部307は、プログラム識別子に対応する許可フラグがリセット状態である場合、ユーザに警告を行い、API呼出しを許可するか否かの当該ユーザに対する確認をした後、または当該確認をすることなくAPI呼出しを拒否することができる。また、判定部307は、検査省略モードに設定されている場合、API呼出しの検査を省略したことを示す検査結果を生成する。
判定部307は、API検査要求受付部301が受け付けた判定要求に基づいて、API制限管理部311に問い合わせ、当該判定要求に含まれるプログラム識別子がAPI呼出しを許可される種別に該当する場合、当該API呼出しを許可することができる。さらに、判定部307は、許可フラグが許可フラグリストにおいてセット状態である場合、API制限管理部311に問い合わせ、判定要求に含まれるプログラム識別子がAPI呼出しを許可される種別に該当するとともに、問い合わせフラグがセットされ、API呼出し引数の条件を満足する場合、デバイス100のユーザに問い合わせを行うことができる。
判定部307は、ユーザによってAPI呼出しが許可された場合、API呼出しを許可する。なお、ユーザに問い合わせる際、オープン実行環境120における不正なプログラムによる干渉を回避するため、クローズド実行環境130など、オープン実行環境120の外で、ユーザへの問い合わせメッセージの提示、問い合わせに対するユーザからの入力を行うことが望ましい。
また、判定部307は、API呼出し引数のサイズや型などのフォーマットや値、値の範囲を検査したり、受け渡しデータをスキャンしてウィルスの検査をしたりしてもよい。さらに、判定部307は、API呼出しの順序の履歴を検査し、特定のAPI呼出しの順序関係が正しいかを検査したりしてもよい。
(3.5)検査結果出力部309
検査結果出力部309は、判定部307によって生成されたAPI呼出しの検査結果を、API呼出しの判定を要求した判定要求元(API131の処理機能など)に出力する。
判定要求元は、上述したように、クローズド実行環境130のAPI呼出しを処理する機能やクローズド実行環境130側のVM間通信機能などである。判定要求元は、検査結果が「API検査省略」であった場合、リソース消費を削減するため、より詳細なAPI検査を省略してもよい。より詳細なAPI検査とは、例えば、API呼出し引数のサイズや型などのフォーマットや値、値の範囲の検査や 受け渡しデータのウィルス検査などである。
(3.6)API制限管理部311
API制限管理部311は、API131の種別と、当該種別のAPI呼出しを許可または拒否するプログラム識別子とを管理する。
図11は、API制限管理部311によるAPI131の制限例を示す。図11に示す制限例では、API131の種別として、DRM API、セキュアストレージAPI、及び暗号APIが規定されている。DRM APIについては、program1のみが許可される。セキュアストレージAPIについては、program1とprogram2が許可される。暗号APIについては、program1、program2、program3、program4が許可される。
API制限管理部311は、API131の種別と当該種別のAPI呼出しを許可または拒否するプログラム識別子とに加えて、デバイス100のユーザにAPI呼出しの許可の問い合わせを行うか否かを示す問い合わせフラグと、問い合わせを行うか否かの判定に用いられるAPI呼出し引数の条件とを管理することもできる。例えば、API呼出し引数で指定されるURLのWebサイトにアクセスするAPI131において、当該URLが特定のドメイン名であった場合、API制限管理部311は、ユーザに問い合わせを行うことができる。他の例として、条件が指定されていない場合、無条件にユーザに問い合わせをすることができる。
(3.7)完全性検査部313
完全性検査部313は、状態監視装置200としての機能を提供する状態監視装置プログラムの完全性を検査する。完全性検査部313は、状態監視装置プログラムに対する改ざんが検出された場合、API呼出しを禁止する。
完全性検査部313は、例えば、プログラムコードの正しいハッシュ値を保持しておき、周期的に或いは特定のイベントが起きた際に、当該プログラムコードのハッシュ値を計算して正しいハッシュ値と比較する。完全性検査部313は、比較結果が一致しない場合、改ざんがあったと判定することができる。特定のイベントとは、例えば、状態監視装置プログラムが格納されているメモリやファイル領域へのアクセス(読み込み或いは書き込み)があった場合、クローズド実行環境130の特定のAPI呼出しがあった場合、或いはオープン実行環境120での特定のAPIやシステムコールが呼出しされた場合などが考えられる。
さらに、完全性検査部313は、状態監視装置200以外のオープン実行環境120内におけるOS、ミドルウェア及びアプリケーションプログラムなどの改ざん有無を検査してもよい。これらに対する改ざんが検出された場合、API呼出しを禁止することができる。また、完全性検査部313は、VMM(仮想マシンモニタ)の一部として実現されてもよい。
(3.8)API検査装置の動作
次に、API検査装置300の動作について説明する。具体的には、検査モードの設定手順及びAPI呼出しの検査手順について説明する。
(3.8.1)検査モードの設定手順
図9は、API検査装置300による検査モードの設定手順を示す。検査モードの設定手順は、状態監視装置200からAPI検査装置300(状態情報取得部303)に対して状態情報が入力された際か、状態情報取得部303が状態情報の変化を検知するか、通知された際に実行される。
図9に示すように、ステップ51において、状態情報取得部303は、入力された状態情報を保持する。
ステップ52において、状態情報取得部303は、入力された状態情報がユーザの操作に関する状態か否かを判定する。具体的には、状態情報取得部303は、ローカルロック状態、遠隔ロック状態または無入力操作状態であるか否かを判定する。
入力された状態情報がユーザの操作に関する状態である場合(ステップ52のYES)、ステップ53において、検査モード設定部305は、検査モードをユーザ操作禁止モードに設定する。
ステップ57において、状態情報取得部303は、入力された状態情報がローカルロック状態または遠隔ロック状態の何れであるか否かを判定する。
ローカルロック状態または遠隔ロック状態の何れであるか場合(ステップ57のYES)、ステップ58において、状態情報取得部303は、ロック解除待ち連携抑制フラグを設定し、ロック解除待ち連携抑制フラグをセットしたことを状態監視装置200に通知する。
一方、入力された状態情報がユーザの操作に関する状態でない場合、ステップ54において、状態情報取得部303は、入力された状態情報が非信頼フラグか否かを判定する。
入力された状態情報が非信頼フラグでない場合(ステップ54のNO)、ステップ55において、状態情報取得部303は、入力された状態情報が許可フラグか否かを判定する。
入力された状態情報が非信頼フラグである場合(ステップ54のYES)、または入力された状態情報が許可フラグである場合(ステップ55のYES)、ステップ56において、検査モード設定部305は、検査モードをユーザ警告モードに設定する。
(3.8.2)API呼出しの検査手順
図10は、API検査装置300によるAPI呼出しの検査手順を示す。API呼出しの検査手順は、API検査要求受付部301が、クローズド実行環境130のAPI131の処理機能やクローズド実行環境130側のVM間通信機能などから、オープン実行環境120からのクローズド実行環境130に対するAPI呼出しを許可するかの判定要求を受け付けた際に実行される。ここでは、判定要求は、API呼出し元のプログラム識別子を含んでもよい。
ステップ61において、判定部307は、設定されている検査モードを確認し、ユーザ操作禁止モードに設定されているか否かを判定する。
ユーザ操作禁止モードに設定されている場合(ステップ61のYES)、ステップ62において、判定部307は、当該API呼出しがユーザの操作によって要求された場合にのみ許可される種別のAPI呼出しか否かを判定する。
当該API呼出しがユーザの操作によって要求された場合にのみ許可される種別のAPI呼出しである場合(ステップ62のYES)、ステップ63において、判定部307は、検査結果として、API呼出しの禁止を生成する。
ユーザ操作禁止モードに設定されていない場合(ステップ61のNO)、ステップ64において、判定部307は、検査モードがユーザ警告モードに設定されているか否かを判定する。
ユーザ警告モードに設定されている場合(ステップ64のYES)、ステップ65において、判定部307は、非信頼フラグがセット状態か否かを判定する。
非信頼フラグがセット状態である場合(ステップ65のYES)、ステップ66において、判定部307は、状態情報に従った警告を行う。
非信頼フラグがリセット状態である場合(ステップ65のNO)、ステップ67において、判定部307は、許可フラグがリセット状態か否かを判定する。
許可フラグがリセット状態である場合(ステップ67のYES)、ステップ68において、判定部307は、ユーザにAPI呼出しを許可するか否かを確認する。
ステップ69において、判定部307は、ユーザが当該API呼出しを許可したか否かを判定する。
ステップ66の処理に引き続いて、またはユーザが当該API呼出しを拒否した場合(ステップ69のNO)、ステップ70において、判定部307は、検査結果として、API呼出しの拒否を生成する。
ユーザ警告モードに設定されていない場合(ステップ64のNO)、許可フラグがセット状態である場合(ステップ67のNO)、またはユーザが当該API呼出しを許可した場合(ステップ69のYES)、ステップ71において、判定部307は、検査結果として、API呼出しの許可を生成する。
ステップ72において、検査結果出力部309は、判定部307が生成した検査結果をAPI131の処理機能やVM間通信機能などに応答する。
なお、ステップ67において、状態情報取得部303がプログラム識別子に対応するリストの形式で許可フラグを保持している場合、判定要求に含まれる「API呼出し元のプログラム識別子」に対応するプログラムが、判定部307は、許可フラグにおいてリセット状態でないかを確認してもよい。許可フラグがリセット状態である場合、当該プログラムが実行されていないことを示すため、不正なプログラムが正当なプログラムに成りすますことによって、API呼出しを行っている可能性がある。そこで、ユーザに警告したり、API呼出しを拒否したりしてもよい。
(4)作用・効果
本実施形態によれば、デバイス100がローカルロック状態、遠隔ロック状態または無入力操作状態の場合、ユーザ操作禁止モードに設定される。ユーザ操作禁止モードでは、ユーザの操作によって要求された場合にのみ許可する種別のAPI呼出しの連携を禁止できる。これにより、不正プログラムが勝手に連携機能を呼び出すようなAPI呼出しを禁止することができる。すなわち、オーバヘッドを抑えつつ、不正なAPI呼出しを防止できる。
具体的には、比較的低い処理負荷で、状態情報を取得し、API呼出しを許可するか否かを判定できる。また、クローズド実行環境130において、当該状態を管理している場合、比較的低い処理負荷かつ安全な検査が実行できる。つまり、本実施形態によれば、OSによるアクセス制御だけに依存せず、かつ引数やデータの検査処理によるオーバヘッドを抑制できる。
本実施形態では、クローズド実行環境130からオープン実行環境120にロック解除待ち連携抑制フラグ及びユーザ確認待ち連携抑制フラグの状態が通知され、無効なAPI呼出しの連携が抑制される。このため、デバイス100のバッテリ消耗を抑制できる。さらに、ユーザの確認待ちに係る連携抑制の解除については、タイマを用いることによって省略できるため、状態の通知頻度を最小化でき、通知に係るリソースの消費を削減できる。
本実施形態では、API呼出しの検査が成功した後は、指定回数のAPI呼出し、特定の種別のAPI呼出しについて検査を省略する(間引く)ことができるため、トレードオフの関係にある安全性とオーバヘッドとを適切なレベルに調整できる。
本実施形態では、状態情報に従った警告をユーザに対して行うことができる。このため、API呼出しが実行される前に、オープン実行環境120の安全性や信頼性に関する情報をユーザに知らしめることができる。ユーザは、当該情報に基づいて、API呼出しの許可を判断したり、未保存のデータを保存したりするなど、適切な対処をすることができる。
本実施形態では、プログラム識別子に対応する許可フラグがリセット状態である場合に、ユーザに警告を行うことができる。このため、許可プログラムP1以外のプログラムの成りすましによるAPI呼出しを確実に拒否できる。
本実施形態では、API呼出しの検査結果の理由を示すコードとともに検査結果を生成することができる。このため、プログラムやユーザによるAPI呼出しが失敗した際に、その理由を認識することができる。つまり、API呼出し元は、ユーザの操作に基づくAPI呼出しでないために禁止されているのか、API呼出しの実行に必須な必須プログラムP3が障害のため拒否されているのかなどを識別して適切な対応を取り得る。例えば、必須プログラムP3が障害の場合、ユーザは、デバイス100を再起動することによって、デバイス100を正常な状態に復旧し得る。
本実施形態では、検査省略モードが設けられているため、安全性を大きく犠牲にすることなく、API呼出しの検査頻度の低減による応答性低下の緩和やリソース消費の削減が期待できる。また、本実施形態では、システムの構成変更があった後には、検査省略モードが解除される。このため、一定の安全性も確保できる。
本実施形態では、判定要求に含まれるプログラム識別子がAPI呼出しを許可される種別に該当するとともに、問い合わせフラグがセットされ、API呼出し引数の条件を満足する場合、デバイス100のユーザに問い合わせを行うことができる。このため、プログラムごとにきめ細かにAPI呼出しのアクセス制御ができ、信頼性や安全性を向上できる。また、判定要求に含まれるプログラム識別子がAPI呼出しを許可される種別に該当するとともに、問い合わせフラグがセットされ、API呼出し引数の条件を満足する場合、デバイス100のユーザに問い合わせを行うことができる。このため、特定のAPI呼出しについてはユーザの確認に基づいて、その可否を判断できる。
本実施形態では、状態監視装置200としての機能を提供する状態監視装置プログラムの完全性を検査する完全性検査部313が設けられる。このため、状態監視装置200が攻撃された場合には、API呼出しを禁止することによって被害の拡大を防止できる。
本実施形態では、非信頼フラグがセット状態に変化したとき、または許可フラグがリセット状態に変化したとき、クローズド実行環境130に配置されるAPI検査装置300に状態情報が通知される。このため、API呼出しが実行される前に、オープン実行環境120の安全性や信頼性の情報をクローズド実行環境130側においてユーザに通知できる。
(5)その他の実施形態
上述したように、本発明の一実施形態を通じて本発明の内容を開示したが、この開示の一部をなす論述及び図面は、本発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態が明らかとなろう。
上述したデバイス100では、仮想マシンモニタ110を用いる場合を例として説明したが、マルチCPU(またはマルチコア)を用いて、オープン実行環境120とクローズド実行環境130とを形成しても構わない。
図12は、マルチコア構成のCPU111A及びCPU111Bを用いてオープン実行環境120とクローズド実行環境130とが形成されるデバイス100Aの機能ブロック図である。なお、状態監視装置200及びAPI検査装置300の構成は、上述したデバイス100と同様であるため、その説明を省略する。
また、仮想マシンモニタ110に代えて、Java(登録商標)VMなどの仮想マシンを用いてオープン実行環境を形成し、ホストOSを用いてクローズド実行環境を形成してもよい。図13は、仮想マシン及びホストOSを用いたデバイス100Bの機能ブロック図である。デバイス100Bでは、Java(登録商標)VMよってオープン実行環境120Aが形成され、ホストOSによってクローズド実行環境130Aが形成される。なお、状態監視装置200及びAPI検査装置300の構成は、上述したデバイス100と同様であるため、その説明を省略する。
また、状態監視装置200及びAPI検査装置300は、それぞれ単独で提供しても構わない。
このように、本発明は、ここでは記載していない様々な実施の形態などを含むことは勿論である。したがって、本発明の技術的範囲は、上述の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
100,100A,100B…デバイス、110…仮想マシンモニタ、111A,111B…CPU、120,120A…オープン実行環境、130,130A…クローズド実行環境、131…アプリケーション・プログラム・インタフェース(API)、200…状態監視装置、201…状態管理部、203…許可決定部、205…状態情報通知部、300…API検査装置、301…API検査要求受付部、303…状態情報取得部、305…検査モード設定部、307…判定部、309…検査結果出力部、311…API制限管理部、313…完全性検査部、P1…許可プログラム、P2…非信頼プログラム、P3…必須プログラム

Claims (22)

  1. 信頼されたプログラム以外のプログラムも自由に或いは一定の制限の下に実行することができるオープン実行環境と、前記オープン実行環境からアプリケーション・プログラム・インタフェースを呼び出すAPI呼出しに基づいて所定の処理が実行され、信頼されたプログラムのみが実行されるクローズド実行環境とを備えるデバイスにおいて前記クローズド実行環境に配置されるAPI検査装置であって、
    前記オープン実行環境から前記クローズド実行環境内の前記API呼出しを許可するか否かの判定を要求する判定要求を受け付けるAPI検査要求受付部と、
    前記デバイスの状態を示す状態情報を取得する状態情報取得部と、
    前記状態情報取得部が取得した前記状態情報に基づいて、前記API呼出しに対する検査モードを設定する検査モード設定部と、
    前記検査モード設定部によって設定された前記検査モードに基づいて、前記API呼出しを許可するか否かを判定し、前記API呼出しの検査結果を生成する判定部と、
    前記判定部によって生成された前記検査結果を出力する検査結果出力部と
    を備えるAPI検査装置。
  2. 前記状態情報取得部は、前記デバイスの前記状態情報として、ローカルロック状態、遠隔ロック状態または所定時間に渡って前記デバイスへの入力操作がないことを示す無入力操作状態の少なくとも何れかを取得し、
    前記検査モード設定部は、前記状態情報が前記ローカルロック状態、前記遠隔ロック状態または前記無入力操作状態である場合、前記検査モードをユーザ操作禁止モードに設定し、
    前記判定部は、前記ユーザ操作禁止モードに設定されており、前記デバイスのユーザの操作によって要求された場合にのみ許可されている種別のAPI呼出しである場合、前記API呼出しを禁止する請求項1に記載のAPI検査装置。
  3. 前記状態情報取得部は、前記状態情報として非信頼フラグを用い、
    前記非信頼フラグは、信頼されていない非信頼プログラムが前記オープン実行環境において実行中、または前記非信頼プログラムが前記デバイスにインストールされている場合にセットされるとともに、前記非信頼プログラムが実行中でない、または前記非信頼プログラムが前記デバイスにインストールされていない場合にリセットされ、
    前記検査モード設定部は、前記非信頼フラグがセット状態の場合、ユーザ警告モードに設定し、
    前記判定部は、前記ユーザ警告モードに設定されている場合、前記デバイスのユーザに前記状態情報に従った警告を行い、API呼出しを許可するか否かの前記ユーザに対する確認をした後、または前記確認をすることなく前記API呼出しを拒否する請求項1に記載のAPI検査装置。
  4. 前記状態情報取得部は、前記状態情報として許可フラグを用い、
    前記許可フラグは、前記クローズド実行環境に対するAPI呼出しを正常に実行するために必須とされる必須プログラムが前記オープン実行環境において正常動作中、または前記必須プログラムが前記デバイスにインストールされている場合にセットされるとともに、前記必須プログラムが障害の場合、または前記必須プログラムが前記デバイスにインストールされていない場合にリセットされ、
    前記検査モード設定部は、前記許可フラグがリセット状態の場合、ユーザ警告モードに設定し、
    前記判定部は、前記ユーザ警告モードに設定されている場合、前記デバイスのユーザに前記状態情報に従った警告を行い、API呼出しを許可するか否かの前記ユーザに対する確認をした後、または前記確認をすることなく前記API呼出しを拒否する請求項1に記載のAPI検査装置。
  5. 前記API検査要求受付部は、前記アプリケーション・プログラム・インタフェースの呼び出し元であるAPI呼出し元のプログラム識別子を含む判定要求を受け付け、
    前記状態情報取得部は、前記クローズド実行環境に対する前記API呼出しを許可された複数の許可プログラムそれぞれについて、前記オープン実行環境において実行中、または前記許可プログラムが前記デバイスにインストールされている場合にセットされる許可フラグのリストを含む許可フラグリストを前記状態情報として取得し、
    前記判定部は、前記プログラム識別子に対応する前記許可フラグがリセット状態である場合、前記ユーザに警告を行い、API呼出しを許可するか否かの前記ユーザに対する確認をした後、または前記確認をすることなく前記API呼出しを拒否する請求項1に記載のAPI検査装置。
  6. 前記状態情報取得部は、前記ローカルロック状態または前記遠隔ロック状態が他の状態に変化したときに、変化後の状態に従ってロック解除待ち連携抑制フラグを設定するとともに、前記オープン実行環境において実行される前記プログラムの状態を監視する状態監視装置に、前記変化後の状態に従ってロック解除待ち連携抑制フラグを通知する請求項1に記載のAPI検査装置。
  7. 前記状態情報取得部は、
    前記クローズド実行環境において前記ユーザの確認待ち状態が所定時間経過した場合、ユーザ確認待ち連携抑制フラグをセットするとともに、前記オープン実行環境において実行される前記プログラムの状態を監視する状態監視装置に前記ユーザ確認待ち連携抑制フラグを通知し、
    前記ユーザ確認待ち連携抑制フラグがセット状態においてユーザ確認待ち状態が終了した場合、前記ユーザ確認待ち連携抑制フラグをリセットするとともに、前記状態監視装置に前記ユーザ確認待ち連携抑制フラグがリセットされたことを通知する請求項1に記載のAPI検査装置。
  8. 前記判定部は、前記検査結果として、前記API呼出しの禁止、前記API呼出しの許可、及び前記API呼出しの拒否の何れかを前記検査結果の理由を示すコードとともに生成する請求項1に記載のAPI検査装置。
  9. 前記検査モード設定部は、許可と判定された前記API呼出しと同一種別のAPI呼出し、または同一のAPI呼出し元を示す前記プログラム識別子を含むAPI呼出しについて、所定回数または所定時間に渡って無条件に許可する検査省略モードを設定し、
    前記判定部は、前記検査省略モードに設定されている場合、前記API呼出しの検査を省略したことを示す前記検査結果を生成する請求項1に記載のAPI検査装置。
  10. 前記アプリケーション・プログラム・インタフェースの種別と、前記種別のAPI呼出しを許可または拒否する前記プログラム識別子とを管理するAPI制限管理部を備え、
    前記API検査要求受付部は、前記API呼出し元のプログラム識別子と、前記種別を含む判定要求を受け付け、
    前記判定部は、前記API制限管理部に問い合わせ、前記判定要求に含まれる前記プログラム識別子がAPI呼出しを許可される前記種別に該当する場合、前記API呼出しを許可する請求項1に記載のAPI検査装置。
  11. 前記API制限管理部は、前記種別と前記種別のAPI呼出しを許可または拒否する前記プログラム識別子とに加えて、前記デバイスのユーザに前記API呼出しの許可の問い合わせを行うか否かを示す問い合わせフラグと、前記問い合わせを行うか否かの判定に用いられるAPI呼出し引数の条件とを管理し、
    前記判定部は、前記API制限管理部に問い合わせ、前記判定要求に含まれる前記プログラム識別子がAPI呼出しを許可される前記種別に該当するとともに、前記問い合わせフラグがセットされ、前記API呼出し引数の条件を満足する場合、前記ユーザに前記問い合わせを行い、
    前記ユーザによって前記API呼出しが許可された場合、前記API呼出しを許可する請求項10に記載のAPI検査装置。
  12. 前記状態監視装置としての機能を提供する状態監視装置プログラムの完全性を検査し、前記状態監視装置プログラムに対する改ざんが検出された場合、前記API呼出しを禁止する完全性検査部を備える請求項1に記載のAPI検査装置。
  13. 前記検査モード設定部は、前記検査省略モードが設定されている場合において、前記デバイスの構成変更が行われた場合、前記検査省略モードを解除する請求項9に記載のAPI検査装置。
  14. 信頼されたプログラム以外のプログラムも自由に或いは一定の制限の下に実行することができるオープン実行環境と、前記オープン実行環境からアプリケーション・プログラム・インタフェースを呼び出すAPI呼出しに基づいて所定の処理が実行され、信頼されたプログラムのみが実行されるクローズド実行環境とを備えるデバイスにおいて前記オープン実行環境に配置される状態監視装置であって、
    前記デバイスの状態を取得し、取得した前記状態を示す状態情報を保持する状態管理部と、
    前記状態情報に基づいて、前記オープン実行環境から前記クローズド実行環境内の前記API呼出しを許可するか否かを決定する許可決定部と
    を備える状態監視装置。
  15. 前記状態管理部は、前記デバイスがローカルロック状態、遠隔ロック状態、または所定時間に渡って前記デバイスへの入力操作がないことを示す無入力操作状態の場合にのみセットされるユーザ操作API禁止フラグを保持し、
    前記許可決定部は、前記ユーザ操作API禁止フラグがセット状態であり、前記デバイスのユーザの操作によって要求された場合にのみ許可されている種別の前記API呼出しである場合、前記API呼出しを禁止する請求項14に記載の状態監視装置。
  16. 前記状態管理部は、前記状態情報として非信頼フラグを保持し、
    前記非信頼フラグは、信頼されていない非信頼プログラムが前記オープン実行環境において実行中、または前記非信頼プログラムが前記デバイスにインストールされている場合にセットされるとともに、前記非信頼プログラムが実行中でない、または前記非信頼プログラムが前記デバイスにインストールされていない場合にリセットされ、
    前記許可決定部は、前記非信頼フラグがセット状態の場合、前記デバイスのユーザに前記状態情報に従った警告を行い、API呼出しを許可するか否かの前記ユーザに対する確認をした後、または前記確認をすることなく前記API呼出しを拒否することを決定する請求項14に記載の状態監視装置。
  17. 前記状態管理部は、前記状態情報として許可フラグを保持し、
    前記許可フラグは、前記クローズド実行環境に対するAPI呼出しを正常に実行するために必須とされる必須プログラムが前記オープン実行環境において正常動作中、または前記必須プログラムが前記デバイスにインストールされている場合にセットされるとともに、前記必須プログラムが障害の場合、または前記必須プログラムが前記デバイスにインストールされていない場合にリセットされ、
    前記許可決定部は、前記許可フラグがリセット状態の場合、前記デバイスのユーザに前記状態情報に従った警告を行い、API呼出しを許可するか否かの前記ユーザに対する確認をした後、または前記確認をすることなく前記API呼出しを拒否することを決定する請求項14に記載の状態監視装置。
  18. 前記非信頼フラグがセット状態に変化したとき、前記クローズド実行環境に配置されるAPI検査装置に前記状態情報を通知する状態情報通知部を備える請求項16に記載の状態監視装置。
  19. 前記許可フラグがリセット状態に変化したとき、前記クローズド実行環境に配置されるAPI検査装置に前記状態情報を通知する状態情報通知部を備える請求項17に記載の状態監視装置。
  20. 前記状態管理部は、ローカルロック状態または遠隔ロック状態が他の状態に変化したときに設定されるロック解除待ち連携抑制フラグ、またはクローズド実行環境において前記ユーザの確認待ち状態が所定時間経過したときにセットされるユーザ確認待ち連携抑制フラグの少なくとも何れかを、前記クローズド実行環境に配置されるAPI検査装置から前記状態情報として受信して保持し、
    前記許可決定部は、前記ロック解除待ち連携抑制フラグ及び前記ユーザ確認待ち連携抑制フラグの何れもがリセット状態である場合にのみ、前記デバイスのユーザの操作によって要求された場合にのみ許可されている種別の前記API呼出しを許可する請求項14に記載の状態監視装置。
  21. 前記状態管理部は、所定のタイムアウト時間が経過した場合、前記ユーザ確認待ち連携抑制フラグをリセットする請求項20に記載の状態監視装置。
  22. 前記状態管理部は、前記API呼出しが要求された後、所定時間に渡って前記API呼出しに対する応答がない場合、前記ユーザによる確認待ち状態と判断し、前記ユーザ確認待ち連携抑制フラグをセットし、
    前記許可決定部は、前記ユーザ確認待ち連携抑制フラグがセット状態である場合、前記ユーザの操作によって要求された場合にのみ許可される前記API呼出しを禁止する請求項20に記載の状態監視装置。
JP2009196691A 2008-09-22 2009-08-27 Api検査装置及び状態監視装置 Expired - Fee Related JP4653230B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2009196691A JP4653230B2 (ja) 2008-09-22 2009-08-27 Api検査装置及び状態監視装置
US12/562,574 US8413230B2 (en) 2008-09-22 2009-09-18 API checking device and state monitor
CN200910176280A CN101685487A (zh) 2008-09-22 2009-09-21 Api检查装置以及状态监视装置
EP09170813A EP2166478A3 (en) 2008-09-22 2009-09-21 API checking device and state monitor

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2008242637 2008-09-22
JP2009196691A JP4653230B2 (ja) 2008-09-22 2009-08-27 Api検査装置及び状態監視装置

Publications (2)

Publication Number Publication Date
JP2010097594A true JP2010097594A (ja) 2010-04-30
JP4653230B2 JP4653230B2 (ja) 2011-03-16

Family

ID=41396138

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009196691A Expired - Fee Related JP4653230B2 (ja) 2008-09-22 2009-08-27 Api検査装置及び状態監視装置

Country Status (4)

Country Link
US (1) US8413230B2 (ja)
EP (1) EP2166478A3 (ja)
JP (1) JP4653230B2 (ja)
CN (1) CN101685487A (ja)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012077300A1 (ja) * 2010-12-08 2012-06-14 パナソニック株式会社 情報処理装置、及び、情報処理方法
WO2013080632A1 (ja) * 2011-11-30 2013-06-06 日本放送協会 受信装置、プログラム及び受信方法
KR101285394B1 (ko) * 2011-08-24 2013-08-23 주식회사 팬택 휴대 단말 시스템의 대기 상태에서의 퍼미션 제어 장치
US8626125B2 (en) 2011-08-24 2014-01-07 Pantech Co., Ltd. Apparatus and method for securing mobile terminal
JP2014501409A (ja) * 2010-12-21 2014-01-20 マイクロソフト コーポレーション セキュリティ境界の提供
KR20140051683A (ko) * 2012-10-23 2014-05-02 에스케이플래닛 주식회사 Api 실행 제어를 위한 시스템 및 방법
JP2015075996A (ja) * 2013-10-10 2015-04-20 富士通株式会社 通信端末、通信処理方法および通信処理プログラム
US9665417B2 (en) 2014-05-13 2017-05-30 International Business Machines Corporation Device and method for controlling remote procedure call
KR101839607B1 (ko) * 2011-08-02 2018-03-22 주식회사 케이티 단말 보안을 수행하는 사용자 단말 및 서비스 서버 장치
JP2020011427A (ja) * 2018-07-17 2020-01-23 コニカミノルタ株式会社 情報処理装置、情報処理装置の制御方法、およびプログラム

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120192155A1 (en) * 2011-01-20 2012-07-26 Microsoft Corporation Code advisor for web compatibility and interoperability
CN102710631A (zh) * 2012-05-28 2012-10-03 华为技术有限公司 一种数据传输方法、设备及系统
EP2696303B1 (en) * 2012-08-03 2017-05-10 Alcatel Lucent Mandatory access control (MAC) in virtual machines
JP6079208B2 (ja) * 2012-12-19 2017-02-15 株式会社ソシオネクスト マイクロコンピュータ,そのミドルウエア及びマイクロコンピュータの動作方法
US20150294122A1 (en) * 2014-04-14 2015-10-15 Samsung Electronics Co., Ltd. Method and apparatus for downloadable drm in a trusted execution environment
JP6481900B2 (ja) * 2014-06-25 2019-03-13 インテル・コーポレーション ハードウェア構成レポーティング用の装置、ハードウェア構成アービトレーションの方法、プログラム、機械可読記録媒体、及び、ハードウェア構成アービトレーション用の装置
US9513671B2 (en) 2014-08-01 2016-12-06 Microsoft Technology Licensing, Llc Peripheral retention device
US10191986B2 (en) 2014-08-11 2019-01-29 Microsoft Technology Licensing, Llc Web resource compatibility with web applications
US9705637B2 (en) 2014-08-19 2017-07-11 Microsoft Technology Licensing, Llc Guard band utilization for wireless data communication
US9397723B2 (en) 2014-08-26 2016-07-19 Microsoft Technology Licensing, Llc Spread spectrum wireless over non-contiguous channels
US10044695B1 (en) 2014-09-02 2018-08-07 Amazon Technologies, Inc. Application instances authenticated by secure measurements
US9246690B1 (en) 2014-09-03 2016-01-26 Amazon Technologies, Inc. Secure execution environment services
US9577829B1 (en) 2014-09-03 2017-02-21 Amazon Technologies, Inc. Multi-party computation services
US9754116B1 (en) 2014-09-03 2017-09-05 Amazon Technologies, Inc. Web services in secure execution environments
US9442752B1 (en) * 2014-09-03 2016-09-13 Amazon Technologies, Inc. Virtual secure execution environments
US9584517B1 (en) 2014-09-03 2017-02-28 Amazon Technologies, Inc. Transforms within secure execution environments
US9491111B1 (en) 2014-09-03 2016-11-08 Amazon Technologies, Inc. Securing service control on third party hardware
US10079681B1 (en) * 2014-09-03 2018-09-18 Amazon Technologies, Inc. Securing service layer on third party hardware
US10061915B1 (en) 2014-09-03 2018-08-28 Amazon Technologies, Inc. Posture assessment in a secure execution environment
US9424048B2 (en) 2014-09-15 2016-08-23 Microsoft Technology Licensing, Llc Inductive peripheral retention device
CN104484224B (zh) * 2014-12-18 2019-04-09 北京奇安信科技有限公司 一种服务器进程控制方法、装置及系统
US20160182536A1 (en) * 2014-12-19 2016-06-23 Ca, Inc. Adapting user terminal application operation responsive to measured user behavior
US9552481B1 (en) * 2014-12-30 2017-01-24 Symantec Corporation Systems and methods for monitoring programs
CN104869166A (zh) * 2015-05-28 2015-08-26 北京呈创科技股份有限公司 桌面云集群系统及桌面云集群中的信息交互方法
CN105630536A (zh) * 2015-07-17 2016-06-01 宇龙计算机通信科技(深圳)有限公司 一种信息处理方法及装置
US9769169B2 (en) 2015-09-25 2017-09-19 Intel Corporation Secure sensor data transport and processing
US9984132B2 (en) * 2015-12-31 2018-05-29 Samsung Electronics Co., Ltd. Combining search results to generate customized software application functions
SG10201602449PA (en) * 2016-03-29 2017-10-30 Huawei Int Pte Ltd System and method for verifying integrity of an electronic device
US11243997B2 (en) 2017-08-09 2022-02-08 The Nielsen Company (Us), Llc Methods and apparatus to determine sources of media presentations
CN111209561B (zh) * 2018-11-21 2023-01-31 成都鼎桥通信技术有限公司 终端设备的应用调用方法、装置与终端设备
US11050850B1 (en) 2019-01-07 2021-06-29 Allstate Insurance Company System and methods for application programming interface validation and testing
US11501881B2 (en) * 2019-07-03 2022-11-15 Nutanix, Inc. Apparatus and method for deploying a mobile device as a data source in an IoT system
US11172047B2 (en) 2019-09-30 2021-11-09 Mastercard International Incorporated Systems and methods for use in network service interface bundling
US11818134B1 (en) * 2020-09-30 2023-11-14 Amazon Technologies, Inc. Validating application programming interface (API) requests to infrastructure systems hosted in a cloud computing environment
US11726764B2 (en) 2020-11-11 2023-08-15 Nutanix, Inc. Upgrade systems for service domains
US11736585B2 (en) 2021-02-26 2023-08-22 Nutanix, Inc. Generic proxy endpoints using protocol tunnels including life cycle management and examples for distributed cloud native services and applications

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006164184A (ja) * 2004-12-10 2006-06-22 Ntt Docomo Inc プログラム分割装置、プログラム実行装置、プログラム分割方法及びプログラム実行方法
JP2006202279A (ja) * 2004-12-28 2006-08-03 Sap Ag 仮想マシンの監視
US7325083B2 (en) * 2002-11-18 2008-01-29 Arm Limited Delivering data processing requests to a suspended operating system
JP2008135004A (ja) * 2006-10-31 2008-06-12 Ntt Docomo Inc オペレーティングシステム監視設定情報生成装置及びオペレーティングシステム監視装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL132915A (en) * 1999-11-14 2004-05-12 Networks Assoc Tech Inc Method for secure function execution by calling address validation
US7203948B2 (en) * 2001-09-29 2007-04-10 Siebel Systems, Inc. Method, apparatus, and system for implementing caching of view custom options in a framework to support web-based applications
US7962545B2 (en) * 2002-12-27 2011-06-14 Intel Corporation Dynamic service registry for virtual machines
US7624272B2 (en) * 2003-03-31 2009-11-24 Intel Corporation Platform information for digital signatures
US20050108562A1 (en) * 2003-06-18 2005-05-19 Khazan Roger I. Technique for detecting executable malicious code using a combination of static and dynamic analyses
US7634807B2 (en) * 2003-08-08 2009-12-15 Nokia Corporation System and method to establish and maintain conditional trust by stating signal of distrust
US20050132122A1 (en) * 2003-12-16 2005-06-16 Rozas Carlos V. Method, apparatus and system for monitoring system integrity in a trusted computing environment
US7330981B2 (en) * 2004-04-23 2008-02-12 Microsoft Corporation File locker and mechanisms for providing and using same
US20060070066A1 (en) * 2004-09-30 2006-03-30 Grobman Steven L Enabling platform network stack control in a virtualization platform
JP2006242637A (ja) 2005-03-01 2006-09-14 Denso Corp 回転検出装置およびその設計方法
US7426653B2 (en) * 2005-04-13 2008-09-16 Progress Software Corporation Fault tolerant distributed lock management
US7587724B2 (en) * 2005-07-13 2009-09-08 Symantec Corporation Kernel validation layer
US7725737B2 (en) * 2005-10-14 2010-05-25 Check Point Software Technologies, Inc. System and methodology providing secure workspace environment
US7971104B2 (en) * 2006-10-24 2011-06-28 Shlomi Dolev Apparatus and methods for stabilization of processors, operating systems and other hardware and/or software configurations
US8763115B2 (en) * 2007-08-08 2014-06-24 Vmware, Inc. Impeding progress of malicious guest software

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7325083B2 (en) * 2002-11-18 2008-01-29 Arm Limited Delivering data processing requests to a suspended operating system
JP2006164184A (ja) * 2004-12-10 2006-06-22 Ntt Docomo Inc プログラム分割装置、プログラム実行装置、プログラム分割方法及びプログラム実行方法
JP2006202279A (ja) * 2004-12-28 2006-08-03 Sap Ag 仮想マシンの監視
JP2008135004A (ja) * 2006-10-31 2008-06-12 Ntt Docomo Inc オペレーティングシステム監視設定情報生成装置及びオペレーティングシステム監視装置

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012077300A1 (ja) * 2010-12-08 2012-06-14 パナソニック株式会社 情報処理装置、及び、情報処理方法
JP5954666B2 (ja) * 2010-12-08 2016-07-20 パナソニックIpマネジメント株式会社 情報処理装置、及び、情報処理方法
JP2014501409A (ja) * 2010-12-21 2014-01-20 マイクロソフト コーポレーション セキュリティ境界の提供
KR101839607B1 (ko) * 2011-08-02 2018-03-22 주식회사 케이티 단말 보안을 수행하는 사용자 단말 및 서비스 서버 장치
KR101285394B1 (ko) * 2011-08-24 2013-08-23 주식회사 팬택 휴대 단말 시스템의 대기 상태에서의 퍼미션 제어 장치
US8626125B2 (en) 2011-08-24 2014-01-07 Pantech Co., Ltd. Apparatus and method for securing mobile terminal
JPWO2013080632A1 (ja) * 2011-11-30 2015-04-27 日本放送協会 受信装置、プログラム及び受信方法
WO2013080632A1 (ja) * 2011-11-30 2013-06-06 日本放送協会 受信装置、プログラム及び受信方法
KR20140051683A (ko) * 2012-10-23 2014-05-02 에스케이플래닛 주식회사 Api 실행 제어를 위한 시스템 및 방법
KR101955461B1 (ko) * 2012-10-23 2019-03-11 에스케이플래닛 주식회사 Api 실행 제어를 위한 시스템 및 방법
JP2015075996A (ja) * 2013-10-10 2015-04-20 富士通株式会社 通信端末、通信処理方法および通信処理プログラム
US9665417B2 (en) 2014-05-13 2017-05-30 International Business Machines Corporation Device and method for controlling remote procedure call
US10084887B2 (en) 2014-05-13 2018-09-25 International Business Machines Corporation Device and method for controlling remote procedure call
US9894183B2 (en) 2014-05-13 2018-02-13 International Business Machines Corporation Device and method for controlling remote procedure call
JP2020011427A (ja) * 2018-07-17 2020-01-23 コニカミノルタ株式会社 情報処理装置、情報処理装置の制御方法、およびプログラム
JP7119685B2 (ja) 2018-07-17 2022-08-17 コニカミノルタ株式会社 情報処理装置、情報処理装置の制御方法、およびプログラム

Also Published As

Publication number Publication date
EP2166478A3 (en) 2010-12-08
EP2166478A2 (en) 2010-03-24
CN101685487A (zh) 2010-03-31
JP4653230B2 (ja) 2011-03-16
US8413230B2 (en) 2013-04-02
US20100077473A1 (en) 2010-03-25

Similar Documents

Publication Publication Date Title
JP4653230B2 (ja) Api検査装置及び状態監視装置
US11514159B2 (en) Method and system for preventing and detecting security threats
JP4376233B2 (ja) クライアント装置、デバイス検証装置及び検証方法
KR101948044B1 (ko) 웹 런타임 시스템을 위한 샌드박싱 기술의 방법 및 장치
JP4726449B2 (ja) 信頼された環境から信頼されていない環境への信頼性の投影
US20070079373A1 (en) Preventing the installation of rootkits using a master computer
US20070118646A1 (en) Preventing the installation of rootkits on a standalone computer
WO2006022161A1 (ja) 情報通信装置及びプログラム実行環境制御方法
JP2014509421A (ja) Usbホストシステムの拡張usbプロトコルスタックのためのセキュリティ手段
US8887302B2 (en) System, method and computer program product for utilizing code stored in a protected area of memory for securing an associated system
JP2010182196A (ja) 情報処理装置およびファイル検証システム
US20070294699A1 (en) Conditionally reserving resources in an operating system
JP4754299B2 (ja) 情報処理装置
Wu et al. SCLib: A practical and lightweight defense against component hijacking in Android applications
CN112446029A (zh) 可信计算平台
JP2007072969A (ja) 動作履歴保護装置及び動作履歴保護プログラム
Muthukumaran et al. Protecting the integrity of trusted applications in mobile phone systems
Leroux Secure by design: Using a microkernel rtos to build secure, fault-tolerant systems
Nature Type CWE-633: Weaknesses that Affect Memory

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100914

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101115

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101207

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101216

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131224

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees