JPWO2011114655A1 - 情報処理装置、仮想マシン生成方法及びアプリ配信システム - Google Patents

情報処理装置、仮想マシン生成方法及びアプリ配信システム Download PDF

Info

Publication number
JPWO2011114655A1
JPWO2011114655A1 JP2012505484A JP2012505484A JPWO2011114655A1 JP WO2011114655 A1 JPWO2011114655 A1 JP WO2011114655A1 JP 2012505484 A JP2012505484 A JP 2012505484A JP 2012505484 A JP2012505484 A JP 2012505484A JP WO2011114655 A1 JPWO2011114655 A1 JP WO2011114655A1
Authority
JP
Japan
Prior art keywords
virtual machine
application
unit
program
processing
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
JP2012505484A
Other languages
English (en)
Other versions
JP5821034B2 (ja
Inventor
前田 学
学 前田
松島 秀樹
秀樹 松島
芳賀 智之
智之 芳賀
アレクサンダー ニコルソン ケネス
アレクサンダー ニコルソン ケネス
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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2012505484A priority Critical patent/JP5821034B2/ja
Publication of JPWO2011114655A1 publication Critical patent/JPWO2011114655A1/ja
Application granted granted Critical
Publication of JP5821034B2 publication Critical patent/JP5821034B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

本発明に係る機器(110)は、複数の仮想マシン(1002、1003、1004及び1005)を搭載し、複数の仮想マシン(1002、1003、1004及び1005)を管理する仮想化ソフトウェア(1001)を備える。この仮想化ソフトウェア(1001)は、プログラムを実行するための仮想マシンを生成するアプリVM生成部(1300)を備える。第1の仮想マシン(1002)は、第1のプログラムを、当該第1の仮想マシン(1002)で動作させるか、当該第1の仮想マシン(1002)以外の仮想マシンで動作させるかを判定し、アプリVM生成部(1300)は、第1の仮想マシン(1002)により、第1のプログラムを他の仮想マシンで動作させると判定された場合に、第1のプログラムを実行するための第2の仮想マシン(1003)を生成する。

Description

本発明は、データへの不正アクセスを防止する情報処理装置、仮想マシン生成方法及びアプリ配信システムに関するものである。
従来のTV及び携帯電話では、ユーザが機器購入後、機能を新たに追加するために、アプリケーションソフトウェア(以下、「アプリ」という)をダウンロードし、利用することが可能であった。この様なアプリは、従来、機器内の各種リソースに対するアクセスが制限されていた。ここで、機器内のリソースとは、例えば、GPS(Global Positioning System)などの位置情報、ダイヤル機能、並びに電話帳、ブックマーク及び画像データなどの他アプリが作成したデータなどである。しかし、近年、多種多様なアプリを開発可能にするために、アクセス制限を緩和し、位置情報、ダイヤル機能及び電話帳などのデータへのアクセスを可能にした機器が登場してきている。将来的には、デバイスドライバソフトウェア(以下、「デバドラ」という)をインストール可能にすることで、ユーザが、新たなハードウェアを追加可能にする機器が登場すると考えられる。
また、従来では、上記のようなアプリは、特定のアプリ開発会社のみが開発及び配布していた。しかし、近年、一般ユーザもアプリの開発及び配布が可能な仕組みができつつある。この様な仕組みの中では、一般ユーザがアプリを簡単に開発できるようにするために、Personal Computer(以下、「PC」という)で一般的に利用されている開発ツールがアプリの開発に利用可能であったり、販売されている機器に対してデバッガが接続可能であったりする。
一方、PC及び携帯電話などに格納された個人情報などのデータの漏洩が問題になっている。特にPCでは、インターネットなどのオープンなネットワークからダウンロードされる不正なダウンロードソフトウェアによって、PCの記憶装置に格納されている個人情報などのデータが読み取られる。そして、ユーザの意図に反して、読み取られたデータが、ネットワークを介して機器の外部に送付される。また、不正なダウンロードソフトウェアは、メールを利用するなどしてユーザに有益なソフトウェアだと思わせることで、当該不正なソフトウェアをダウンロードさせたり、PC上で動作するソフトウェアの脆弱性を衝いて当該不正なソフトウェアをダウンロードさせたりする。
特に、デバドラは、アプリがメモリ上に展開したデータにもアクセス可能である。そのため、デバドラがインストール可能な機器は、個人情報などの他アプリに公開したくないデータに関しても、デバドラにアクセスされるため、漏洩のリスクが高い。
この様に、PC、TV及び携帯電話などにおいて、ダウンロードしたアプリ(以下、「DLアプリ」という)及びダウンロードしたデバドラ(以下、「DLデバドラ」という)は、多くのリソースにアクセス可能である。また、一般ユーザがアプリ及びデバドラを開発及び配布可能であることで、機器に格納された個人情報などに対する攻撃の脅威が増加する。具体的には、悪意を持った攻撃者による、攻撃用のアプリ(以下、「不正アプリ」という)及び攻撃用のデバドラ(以下、「不正デバドラ」という)の開発及びインストールが容易になる。これにより、不正アプリ及び不正デバドラが機器内部の情報にアクセス可能となり、情報の漏洩及び改竄が行われる危険性が増加する。
従来、DLアプリ及びDLデバドラから、携帯電話などにおける電話機能のような機器の本来の機能を保護する方法として、それぞれのソフトウェアを実行する実行環境を分離する方法があった(例えば、非特許文献1参照)。非特許文献1では、実行環境を分離する方法としてノーマルモードとセキュアモードとのような複数のモードを持つCPUを利用して実行環境を分離する方法と、仮想化技術を利用して実行環境を分離する方法とが記載されている。図27は、非特許文献1に記載された従来の仮想化技術を利用した実行環境分離方法を示す図である。
図27において、仮想マシン30は、携帯電話等の通信事業者が選定及び開発したオペレーティングシステム(以下、「OS」という)並びにアプリを実行する。また、仮想マシン40は、通信事業者以外の企業が従業員向けに提供するスケジュール及びメールのサービスを提供するためのアプリなどを実行する。更に、仮想化ソフトウェア20は、仮想マシン30と仮想マシン40とにハードウェア10を仮想化した仮想ハードウェアの機能を提供する。また、仮想化ソフトウェア20は、仮想マシン30と仮想マシン40との動作を制御する。
図27の構成は、携帯電話の基本機能である通信機能を提供する仮想マシン30と、従業員向けのサービスなどを提供する仮想マシン40とを、OSを含めて分離することが可能である。
これにより、例えば仮想マシン40が、ユーザが自由にアプリ及びデバドラをダウンロードできる機能を有し、仮想マシン40上で不正アプリ又は不正デバドラが動作した場合においても、仮想マシン30上で動作する通信事業者のアプリ及びOSには当該不正アプリ又は不正デバドラが影響を及ぼさない。
また、仮想マシン40のような機器に付加サービスを提供する仮想マシンを、必要な時に動作させる方法として、VM生成装置を用いた仮想マシンの動的生成方法がある(例えば、特許文献1参照)。図28は、特許文献1に記載された従来の仮想マシン生成システムの構成図である。
図28において、OS72は仮想マシンの生成をVMM(バーチャルマシーンマネージャ)60に依頼する。これにより、VM生成装置90は仮想マシン80を生成する。この時、仮想マシン80は、OS72が仮想マシンの生成を依頼した時点の仮想マシン70のコピーとなる。
特開2008−165795号公報 特開2005−011336号公報
Intel Corporation and NTT DoCoMo,Inc.著「Open and Secure Terminal Initiative(OSTI)Architecture Specification Revision 1.00」、2006年10月16日 岡本龍明、山本博資、「現代暗号」、産業図書(1997年) ITU−T Recommendation X.509 (08/2005): Information Technology − Open Systems Interconnection − The Directory: Authentication Framework,2005 黒澤馨、尾形わかは、「現代暗号の基礎数理」、コロナ社(2004年)
しかしながら、従来の構成では、ダウンロードしたアプリ及びデバドラが全て同じ仮想マシン内で動作する。そのため、従来の構成は、不正アプリ又は不正デバドラをダウンロードした時に、他のダウンロードしたアプリケーションを保護できないという課題を有していた。
本発明は、上記従来の課題を解決するもので、不正アプリ又は不正デバドラによる他のアプリが持つ情報へのアクセスを防止可能とした情報処理装置を提供することを目的とする。
上記従来の課題を解決するために、本発明の一形態に係る情報処理装置は、複数の仮想マシンを搭載し、前記複数の仮想マシンを管理する仮想マシン管理部を備える情報処理装置であって、前記仮想マシン管理部は、プログラムを実行するための仮想マシンを生成するアプリVM(Virtual Machine)生成部を備え、前記複数の仮想マシンの一つである第1の仮想マシンは、当該第1の仮想マシンで動作可能な第1のプログラムを、当該第1の仮想マシンで動作させるか、当該第1の仮想マシン以外の他の仮想マシンで動作させるかを判定し、前記アプリVM生成部は、前記第1の仮想マシンにより、前記第1のプログラムを他の仮想マシンで動作させると判定された場合に、前記第1のプログラムを実行するための第2の仮想マシンを生成する。
この構成によれば、本発明の一形態に係る情報処理装置は、例えば、悪意を持った攻撃者による攻撃用のアプリ(不正アプリ又は不正デバドラ)の可能性があるアプリに対しては独立した仮想マシンを生成し、当該仮想マシンで当該アプリを個別に実行できる。これにより、当該情報処理装置は、当該アプリから他のアプリが持つ情報へのアクセスを防止することができる。
また、前記第1の仮想マシンは、前記第1のプログラムが他の機器から取得されたプログラムである場合、前記第1のプログラムを他の仮想マシンで動作させると判定してもよい。
この構成よれば、本発明の一形態に係る情報処理装置は、不正アプリ又は不正デバドラの可能性がある、他の機器から取得されたアプリから、他のアプリが持つ情報へのアクセスを防止することができる。
また、前記第1の仮想マシンは、前記第1のプログラムが他の機器から取得されたデバイスドライバソフトウェアを含む場合、前記第1のプログラムを他の仮想マシンで動作させると判定してもよい。
この構成よれば、本発明の一形態に係る情報処理装置は、不正デバドラから、他のアプリが持つ情報へのアクセスを防止することができる。
また、前記情報処理装置は、さらに、VM用OS(Operating System)プログラムを記憶する記憶部を備え、前記第1の仮想マシンは、さらに、前記第1のプログラムと異なる、当該第1の仮想マシンで動作可能な第2のプログラムを、当該第1の仮想マシンで動作させるか、前記他の仮想マシンで動作させるかを判定し、前記アプリVM生成部は、前記第1の仮想マシンにより、前記第2のプログラムを前記他の仮想マシンで動作させると判定された場合に、前記第2のプログラムを実行するための第3の仮想マシンを生成し、前記アプリVM生成部は、前記第2の仮想マシン用のオペレーティングシステムと、前記第3の仮想マシン用のオペレーティングシステムとの両方を、前記VM用OSプログラムを用いて生成してもよい。
この構成よれば、本発明の一形態に係る情報処理装置は、複数の仮想マシンに対して、共通のOSを用いることができる。これにより、各仮想マシンに対して異なるOSを用いる場合に比べて、記憶部の容量を削減できる。
また、前記第2の仮想マシンは、当該第2の仮想マシンのオペレーティングシステムで実行できない処理であるOS処理の実行を他の仮想マシンに依頼するOS処理依頼を前記仮想マシン管理部へ送るOS処理依頼部を備え、前記仮想マシン管理部は、さらに、前記第2の仮想マシンから前記OS処理依頼があった時に、他の仮想マシンへ前記OS処理を依頼するOS処理依頼制御部を備えてもよい。
この構成よれば、本発明の一形態に係る情報処理装置では、仮想マシンは、自身が実行できない処理を他の仮想マシンに依頼できる。これにより、各仮想マシンのOSの機能を削減できるので、各仮想マシンに必要な資源(メモリ等)を削減できる。
また、前記仮想マシン管理部は、さらに、前記複数の仮想マシンの親子関係を管理する親子関係管理部とを備え、前記親子関係管理部は、前記仮想マシンの生成を依頼した前記第1の仮想マシンを親とし、当該依頼に応じて生成した前記第2の仮想マシンを子として親子関係を管理し、前記OS処理依頼制御部は、前記第2の仮想マシンから前記OS処理依頼があった時に、前記第2の仮想マシンの親として管理されている前記第1の仮想マシンへ前記OS処理を依頼してもよい。
この構成によれば、本発明の一形態に係る情報処理装置は、OS処理を依頼してきた仮想マシンに対して「親」の関係にある仮想マシンに対してOS処理を依頼できる。
また、前記仮想マシン管理部は、さらに、前記OS処理依頼により実現する機能ごとに、当該機能の前記OS処理依頼を他の仮想マシンに依頼可能か否かを判定するポリシー管理部を備え、前記OS処理依頼制御部は、前記OS処理依頼を依頼可能であると前記ポリシー管理部が判定した場合、前記第1の仮想マシンへ前記OS処理を依頼してもよい。
この構成によれば、本発明の一形態に係る情報処理装置は、不正アプリ又は不正デバドラによる、特定の機能を実現するアプリが持つ情報へのアクセスを防止できる。
また、前記OS処理依頼部は、前記第1のプログラムが他の機器から取得されたデバイスドライバソフトウェアを含み、かつ、前記OS処理を当該デバイスドライバソフトウェアが処理可能な場合、前記OS処理を前記第2の仮想マシンで処理すると判定し、前記OS処理を当該デバイスドライバソフトウェアが処理できない場合、前記OS処理依頼を前記仮想マシン管理部へ送ってもよい。
この構成によれば、本発明の一形態に係る情報処理装置は、各仮想マシンのOSの機能を削減できるので、各仮想マシンに必要な資源(メモリ等)を削減できる。
なお、本発明は、このような情報処理装置として実現できるだけでなく、情報処理装置に含まれる特徴的な手段をステップとする仮想マシン生成方法として実現したり、そのような特徴的なステップをコンピュータに実行させるプログラムとして実現したりすることもできる。そして、そのようなプログラムは、CD−ROM等の記録媒体及びインターネット等の伝送媒体を介して流通させることができるのは言うまでもない。
さらに、本発明は、このような情報処理装置の機能の一部又は全てを実現する半導体集積回路(LSI)として実現したり、このような情報処理装置含むアプリ配信システムとして実現したりできる。
以上より、本発明は、不正アプリ及び不正デバドラによる他のアプリが持つ情報へのアクセスを防止可能とした情報処理装置を提供することができる。
図1は、本発明の実施の形態1に係るアプリ配信システムの全体構成図である。 図2は、本発明の実施の形態1に係る機器のソフトウェア構成図である。 図3は、本発明の実施の形態1に係る通常のソフトウェア実行環境の構成図である。 図4は、本発明の実施の形態1に係る機器のハードウェア構成図である。 図5は、本発明の実施の形態1に係るアプリ配信サーバの構成図である。 図6は、本発明の実施の形態1に係る開発環境の構成図である。 図7は、本発明の実施の形態1に係るパッケージ生成部の構成図である。 図8は、本発明の実施の形態1に係るダウンロードアプリパッケージの構成図である。 図9は、本発明の実施の形態1に係るセキュアブートのフローチャートである。 図10は、本発明の実施の形態1に係る仮想マシン起動のフローチャートである。 図11は、本発明の実施の形態1に係る仮想化ソフトウェアの構成図である。 図12は、本発明の実施の形態1に係るアプリ実行専用VMの構成図である。 図13は、本発明の実施の形態1に係る仮想マシン管理テーブルを示す図である。 図14は、本発明の実施の形態1に係る親子関係管理テーブルを示す図である。 図15Aは、本発明の実施の形態1に係るポリシーテーブルを示す図である。 図15Bは、本発明の実施の形態1に係るポリシーテーブルを示す図である。 図16は、本発明の実施の形態1に係る汎用OSの構成図である。 図17Aは、本発明の実施の形態1に係るアプリロード部の構成図である。 図17Bは、本発明の実施の形態1に係るアプリロード部の構成図である。 図18Aは、本発明の実施の形態1に係るアプリVMOSXの構成図である。 図18Bは、本発明の実施の形態1に係るアプリVMOSYの構成図である。 図19Aは、本発明の実施の形態1に係るOS処理依頼部の構成図である。 図19Bは、本発明の実施の形態1に係るOS処理依頼部の構成図である。 図20は、本発明の実施の形態1に係るアプリVM生成処理のフローチャートである。 図21は、本発明の実施の形態1に係るOS処理依頼のフローチャートである。 図22は、本発明の実施の形態1に係るアプリ実行専用VM生成装置の構成図である。 図23は、本発明の実施の形態2に係る仮想化ソフトウェアの構成図である。 図24は、本発明の実施の形態2に係る汎用OSの構成図である。 図25は、本発明の実施の形態3に係る仮想化ソフトウェアの構成図である。 図26は、本発明の実施の形態3に係る汎用OSの構成図である。 図27は、従来の仮想化技術を利用し実行環境を分離した携帯電話の構成図である。 図28は、従来の仮想マシン生成システムの構成図である。
以下、本発明の実施の形態について、図面を参照しながら説明する。
(実施の形態1)
本発明の実施の形態1に係る情報処理装置は、DLアプリ及びDLデバドラの実行時には、当該DLアプリ又はDLデバドラ専用の仮想マシンを生成する。これにより、プログラムが不正アプリ又は不正デバドラであったとしても、専用の仮想マシンで動作するため、当該プログラムは、他のプログラムが持つ情報へアクセスできない。このように、本発明の実施の形態1に係る情報処理装置は、不正アプリ又は不正デバドラによる他のアプリが持つ情報へのアクセスを防止できる。
<アプリ配信システム100の構成>
図1は、本発明の実施の形態1に係るアプリ配信システム100の構成図である。
図1に示すアプリ配信システム100は、機器110と、アプリ配信サーバ120と、開発装置130と、機器111とを含む。
機器110は、例えば、ネットワーク通信機能を搭載した携帯電話である。この機器110は、アプリ配信サーバ120とネットワークを介して接続され、アプリ配信サーバ120からアプリをダウンロードする。また、アプリをダウンロードした機器110は、アプリをインストールすることで、当該機器110に新しい機能を追加する。
アプリ配信サーバ120は、機器110及び開発装置130とネットワークを介して接続される。このアプリ配信サーバ120は、開発装置130がアップロードしたアプリの管理、及び、機器110へのアプリのダウンロード処理を行う。
開発装置130は、アプリ配信サーバ120とネットワークを介して接続され、機器110で動作するアプリの開発を行う装置である。また、開発装置130は、機器111とUniversal Serial Bus(以下、「USB」という)規格等のインターフェースで接続される。開発者は、開発装置130上でアプリを開発し、機器111上で想定通りの動作を行うかのテストを実施する。テストによって開発したアプリに不具合が見つかった場合は、開発者は、開発装置130を用いてデバッグし、見つかった不具合を解消する。その後、開発したアプリをアプリ配信サーバ120へアップロードすることで、機器110でアプリが使用可能になる。なお、機器110と機器111とは、同じ機能を持つ機器であり、一般ユーザによって使用されている(機器110)か、開発者によって使用されている(機器111)かが、異なるだけである。
また、機器110及び111は、本発明の情報処理装置に相当する。
<機器110及び111のソフトウェア構成>
図2は、本発明の実施の形態1に係る機器110及び111のソフトウェア構成図である。
図2に示す機器110及び111は、通常のソフトウェア実行環境(以下、「通常環境」という)1000と、安全なソフトウェア実行環境(以下、「保護環境」という)1100とを含む。機器110及び111は、通常環境1000と保護環境1100とを切り替えて、ソフトウェア(通常環境1000又は保護環境1100)を実行する。
保護環境1100のソフトウェアは、セキュアOS1101と、セキュアブート部1102とを含む。ここで、「セキュアOS」は、「セキュアオペレーティングシステム」である。
セキュアOS1101は、保護環境1100のソフトウェアを管理する。
セキュアブート部1102は、機器110及び111の電源投入時にセキュアブートを行う。セキュアブートの処理については、フローチャートを用いて後ほど説明する。
なお、通常環境1000と保護環境1100とを切り替える方法に関しては、例えば、特許文献2に記されている方式が使用できる。
<通常環境1000のソフトウェア構成>
図3は、本発明の実施の形態1に係る通常環境1000のソフトウェア構成図である。
図3に示す通常環境1000のソフトウェアは、仮想化ソフトウェア1001と、仮想マシン1002、1003、1004及び1005とを含む。
また、仮想マシン1002は、仮想ハードウェア1010と、汎用OS1011と、ダウンロード制御アプリ1012と、アプリA1013と、アプリB1014とを含む。また、仮想マシン1003は、仮想ハードウェア1020と、アプリVMOSX1021と、DLアプリX1022とを含む。また、仮想マシン1004は、仮想ハードウェア1030と、アプリVMOSY1031と、DLアプリY1032とを含む。また、仮想マシン1005は、仮想ハードウェア1040と、RTOS1041と、通話ソフトウェア1042とを含む。ここで、「汎用OS」は「汎用オペレーティングシステム」であり、「アプリVMOS」は「アプリVMオペレーティングシステム」であり、「DLアプリ」は「ダウンロードアプリ」であり、「RTOS」は「リアルタイムオペレーティングシステム」である。また、「VM」は、「仮想マシン(Virtual Machine)」である。
仮想化ソフトウェア1001は、その上で動作する仮想マシン1002〜1005を制御する仮想マシン制御機能と、その仮想マシン1002〜1005に対してメモリ及びCPUなどのハードウェアリソースを割り当てるとともに管理するリソース管理機能と、仮想マシン1002〜1005からの要求に従ってデバイスへアクセスするデバイスアクセス機能と、仮想マシン1002〜1005をスケジューリングするスケジューリング機能とを有する。この仮想化ソフトウェア1001は、本発明の仮想マシン管理部に相当する。
仮想マシン1002、1003、1004及び1005は、仮想ハードウェアと、OSと、アプリとを含み、仮想化ソフトウェア1001によりそれぞれ独立に実行される。また、仮想マシン1002、1003、1004及び1005は、それぞれ独立しており、これらの仮想マシン間で、直接、データの受け渡し、又は指示のやり取りが行われることはない。言い換えると、これらの仮想マシン間での、データの受け渡し、又は指示のやり取りは、常に仮想化ソフトウェア1001を介して行われる。
仮想ハードウェア1010、1020、1030及び1040は、それぞれの仮想マシンに仮想的にハードウェアの機能を提供する。また、仮想ハードウェア1010、1020、1030及び1040は、IPL(Initial Program Loader)及びBIOS(Basic Input/Output System)も含む。なお、仮想ハードウェア1010、1020、1030及び1040は、仮想化ソフトウェア1001の構成によっては、仮想化ソフトウェア1001、又は、各仮想マシンのOSに統合される場合もある。
汎用OS1011は、アプリ(アプリA1013及びアプリB1014)をメモリ上にロードして実行する、あるいは、アプリ(アプリA1013やアプリB1014)をメモリ上から削除(アンロード)する。
さらに、汎用OS1011は、仮想化ソフトウェア1001にDLアプリ(DLアプリX1022及びDLアプリY1032)の実行を依頼する。
また、汎用OS1011は、ダウンロード制御アプリ1012、アプリA1013及びアプリB1014に対して、ネットワーク通信機能を提供する。
ダウンロード制御アプリ1012は、機器110にインターネットを介して接続されているアプリ配信サーバ120と通信し、機器110へのアプリのダウンロード処理、及び機器110へのインストール処理を行う。
アプリA1013及びアプリB1014は、アドレス管理機能、Webブラウズ機能、及び電子メール機能などの機能を有し、ユーザに対してこれらの機能を提供する。
本発明の実施の形態1では、DLアプリは、汎用OS1011上で動作するダウンロード制御アプリ1012によりアプリ配信サーバ120からダウンロードされ、機器110内に保存される。その後、汎用OS1011から仮想化ソフトウェア1001へDLアプリの実行依頼があった時に、仮想化ソフトウェア1001は、それぞれのDLアプリが個別の仮想マシン上で動作するように設定する。これにより、仮想マシン上でDLアプリが実行される。
なお、本発明の実施の形態1では、DLアプリX1022とDLアプリY1032とがアプリ配信サーバ120からダウンロードされ、実行される場合を説明するが、本発明はこれに限定されるものではない。また、仮想マシンの数も4つに限定されるわけではない。つまり、汎用OS1011から仮想化ソフトウェア1001へDLアプリの実行依頼があれば、4つ以上の仮想マシンが生成されてもよいし、RTOS1041から仮想化ソフトウェア1001へDLアプリの実行依頼があった時に仮想マシンが生成されてもよい。
アプリVMOSX1021及びアプリVMOSY1031は、DLアプリを動作させる仮想マシンで動作しているOSである。アプリVMOSX1021は、DLアプリX1022が動作するために必要な機能を有する。また、アプリVMOSY1031は、DLアプリY1032が動作するために必要な機能を有する。なお、アプリVMOSX1021及びアプリVMOSY1031の詳細は後述する。
DLアプリX1022及びDLアプリY1032は、アプリ配信サーバ120からダウンロードされたアプリである。このDLアプリX1022及びDLアプリY1032は、アプリA1013やアプリB1014と同様に、ユーザに対して様々な機能を提供する。
RTOS1041は、機器の基本機能を提供するソフトウェアを動作させるためのOSである。
通話ソフトウェア1042は、機器110及び111の基本機能である通話機能をユーザに提供する。
なお、それぞれのDLアプリが個別の仮想マシン上で動作するように仮想化ソフトウェア1001により設定されるとしたが、本発明は、これに限定されるものではない。例えば、アプリ配信サーバ120からダウンロードされていないアプリ(アプリA1013及びアプリB1014)が個別の仮想マシン上で動作するように設定されてもよいし、一部のDLアプリは汎用OS1011上で動作してもよい。
なお、アプリVMOSX1021とアプリVMOSY1031とは、それぞれ異なる機能を有してもよいし、同じ機能を有してもよい。また、アプリVMOSX1021及びアプリVMOSY1031は、汎用OS1011と同じ機能を有してもよい。
<機器110及び111のハードウェア構成>
図4は、本発明の実施の形態1に係る機器110及び111のハードウェア構成図である。
図2及び図3の各構成要素は、図4に示す内部保護メモリ1204とメモリ1220とに格納された各構成要素に対応する。これらの各構成要素を実現するためのソフトウェアが、CPU1201上で実行されることにより、各機能が実現される。
図4に示す機器110及び111は、システムLSI1200と、不揮発性記憶装置1240と、メモリ1220とを含む。システムLSI1200は、不揮発性記憶装置1240及びメモリ1220と外部バスを介して接続されている。
システムLSI1200は、CPU1201と、IPL1202と、実行環境切替部1203と、内部保護メモリ1204とを含む。なお、システムLSI1200の詳細は後述する。
メモリ1220は、仮想化ソフトウェア1001と、汎用OS1011と、ダウンロード制御アプリ1012と、アプリA1013と、アプリB1014と、アプリVMOSX1021と、DLアプリX1022と、アプリVMOSY1031と、DLアプリY1032と、RTOS1041と、通話ソフトウェア1042とを格納する。これらは、図3の各構成要素をメモリ1220にロードした様子を示している。
不揮発性記憶装置1240は、アプリ実行専用VM1241と、DLアプリX1242と、DLアプリY1243とを格納する。
また、図示しないが、不揮発性記憶装置1240は、メモリ1220及び内部保護メモリ1204に格納するソフトウェアを格納する。さらに、不揮発性記憶装置1240は、アプリA1013、アプリB1014、DLアプリX1242及びDLアプリY1243以外のアプリを格納していてもよい。
内部保護メモリ1204に格納するソフトウェアは、予め定められた鍵で暗号化された状態で不揮発性記憶装置1240に格納される。これらのソフトウェアは、機器110及び111の工場製造時に不揮発性記憶装置1240に格納される。また、これらのソフトウェアは、システム起動時又はアプリの起動要求時に、不揮発性記憶装置1240から、メモリ1220及び内部保護メモリ1204へ展開される。
なお、内部保護メモリ1204に格納するソフトウェアを暗号化する鍵は、全ての機器で同一の鍵を用いてもよいし、システムLSI1200ごとに個別の鍵を用いてもよいし、ソフトウェアごとに個別の鍵を用いてもよい。また、暗号化されたソフトウェアを復号する鍵は、システムLSI1200内部に鍵格納部(図示しない)を備え、その中に格納されてもよいし、システムLSI1200内部に格納された鍵を用いて暗号化された状態で不揮発性記憶装置1240に格納されてもよい。
機器110及び111は、さらに、図4に図示されていない入出力部などを備えているが、これらは本発明の本質ではないので説明を省略する。また、システムLSI1200は、さらに、図4に図示されていない周辺回路などを備えているが、これらは本発明の本質ではないので説明を省略する。
<システムLSI1200の構成>
以下、本発明の実施の形態1に係るシステムLSI1200の各構成要素の詳細について説明する。
CPU1201は、メモリ1220と内部保護メモリ1204とに格納されたソフトウェア等に含まれる命令コードを実行することにより、機器110及び111全体の動作を制御する。また、CPU1201は、動作モードとして特権モードと非特権モードとの2つのモードを有する。汎用OS1011は特権モードで動作し、ダウンロード制御アプリ1012、アプリA1013及びアプリB1014は非特権モードで動作する。
IPL1202は、機器110及び111の電源が投入された時に一番はじめに起動するソフトウェアである。このIPL1202は、機器110及び111の電源が投入された時に、内部保護メモリ1204に展開したセキュアOS1101、及びメモリ1220に展開した仮想化ソフトウェア1001を起動する。このIPL1202は、システムLSI1200内に設けられたマスクROMに格納されている。
実行環境切替部1203は、システムLSI1200の通常環境1000と保護環境1100とを切り替える機能を実現する。実行環境切替部1203は、システムLSI1200の実行環境が保護環境の時にのみCPU1201等から内部保護メモリ1204へアクセス可能になるようアクセス制御する。
内部保護メモリ1204は、セキュアOS1101と、セキュアブート部1102とを格納する。
なお、システムLSI1200は、さらに、不揮発性保護メモリ(図示しない)を含んでもよい。この不揮発性保護メモリは、システムLSI1200の実行環境が保護環境の時にのみCPU1201等から不揮発性保護メモリへアクセス可能になるように、実行環境切替部1203によりアクセス制御される。なお、不揮発性保護メモリは、内部保護メモリ1204に格納されるソフトウェア、又は暗号化されたソフトウェアを復号する鍵を格納してもよい。
<アプリ配信サーバ120の構成>
図5は、本発明の実施の形態1に係るアプリ配信サーバ120の構成図である。
図5に示すアプリ配信サーバ120は、アプリ保持部2000と、アプリ受信処理部2001と、アプリ送信処理部2002とを含む。
アプリ保持部2000は、アプリ配信サーバ120が管理するアプリを格納する。
アプリ受信処理部2001は、ネットワークを介して接続された開発装置130と通信し、開発装置130がアップロードするアプリを受信する。また、アプリ受信処理部2001は、受信したアプリをアプリ保持部2000へ送信し、送信したアプリの保持及び管理をアプリ保持部2000に依頼する。
アプリ送信処理部2002は、ネットワークを介して接続された機器110と通信する。このアプリ送信処理部2002は、機器110が要求したアプリをアプリ保持部2000から取得し、取得したアプリを機器110へ送信する。また、アプリ送信処理部2002は、アプリ保持部2000が保持しているアプリのリストを作成し、作成したリストを機器110へ送信する。
<開発装置130の構成>
図6は、本発明の実施の形態1に係る開発装置130の構成図である。
図6に示す開発装置130は、パッケージ生成部3000と、設定ファイル生成部3001と、鍵ペア保持部3002と、鍵ペア生成部3003と、デバッグ処理部3004と、アップロード処理部3005とを含む。
パッケージ生成部3000は、開発者が作成したソースコードをコンパイルすることでアプリを生成する。そして、パッケージ生成部3000は、生成したアプリに、アプリ署名(Signature)、設定ファイル、及び公開鍵証明書(Certificate)を付加したパッケージファイルを生成する。アプリ署名の方式には、例えば、RSA暗号方式を用いた署名方式が利用できる。なお、詳細は後述する。
なお、アプリ署名(デジタル署名)の方式に関しては、RSA暗号方式に限定されるものではなく、他の署名方式を用いてもよい。例えば、他の署名方式は、非特許文献2の171ページから188ページに詳しく説明されている。また、公開鍵証明書に関しては、非特許文献3に詳しく説明されている。
設定ファイル生成部3001は、アプリに付加する設定ファイルを生成する。設定ファイルには、当該アプリが機器のどのリソースを使用するかを示す情報、当該アプリの開発者に関する情報、及び当該アプリが他のアプリに対してどのようなサービスを提供するかを示す情報などの各種情報が記されている。設定ファイル生成部3001は、これらの情報を、アプリ開発者が設定する値を元に生成する。
鍵ペア保持部3002は、パッケージに付加するアプリ署名を生成及び検証するために使用する鍵(公開鍵暗号方式における秘密鍵と公開鍵との鍵対)を保持する。例えば、鍵ペア保持部3002は、この公開鍵を、非特許文献3(ITU−T Recommendation X.509)で説明されている公開鍵証明書のフォーマットで保持する。
鍵ペア生成部3003は、公開鍵暗号方式における秘密鍵と公開鍵との鍵対を生成し、生成した鍵対を鍵ペア保持部3002に保持する。
なお、公開鍵暗号方式に関しては非特許文献2の107ページから130ページに詳しく説明されている。
デバッグ処理部3004は、開発装置130にUSB等で接続された機器111と通信し、開発者が作成したアプリをデバッグするための処理を行う。デバッグするための処理とは、生成したパッケージを用いたアプリのインストール、インストールしたアプリの実行、ブレークポイントの設定、及びログ出力の取得等の処理がある。
アップロード処理部3005は、開発装置130にネットワークを介して接続されたアプリ配信サーバ120と通信し、パッケージ生成部3000が生成したパッケージをアプリ配信サーバ120へアップロードする処理を行う。
<パッケージ生成部3000の構成>
図7は、本発明の実施の形態1に係るパッケージ生成部3000の構成図である。
図7に示すパッケージ生成部3000は、コンパイラ3100と、リンカ3101と、パッケージ生成ツール3102とを含む。
コンパイラ3100は、入力されたソースコード3110をコンパイルすることでオブジェクトファイルを生成する。
リンカ3101は、コンパイラ3100が生成したオブジェクトファイルとライブラリとをリンクすることで機器110及び111が実行可能なファイル(実行ファイル)を生成する。
パッケージ生成ツール3102は、リンカ3101が生成した実行ファイルと、設定ファイル生成部3001が生成する設定ファイル3132と、鍵ペア保持部3002が保持する秘密鍵3130及び公開鍵証明書3131とを用いてダウンロードパッケージ3120を生成する。
<ダウンロードパッケージ3120の構成>
図8は、本発明の実施の形態1に係るダウンロードパッケージ3120の構成図である。
図8において、ダウンロードパッケージ3120は、アプリ3200と、デバドラ3201と、設定ファイル3202と、アプリ署名リスト3203と、公開鍵証明書3204とを含む。
アプリ3200及びデバドラ3201は、コンパイラ3100及びリンカ3101が、開発者が作成したソースコード3110から生成した実行ファイルである。
設定ファイル3202は、パッケージ生成ツール3102に入力される設定ファイル3132と同じである。
アプリ署名リスト3203は、アプリ3200と、デバドラ3201と、設定ファイル3202とのそれぞれの署名が並んだリストである。パッケージ生成ツール3102は、ダウンロードパッケージ3120生成時に、入力されたアプリ3200と、デバドラ3201と、設定ファイル3202とから、それぞれ署名を生成し、アプリ署名リスト3203を生成する。また、アプリ署名リスト3203は、署名の生成には、秘密鍵3130を使用する。
公開鍵証明書3204は、パッケージ生成ツール3102に入力される公開鍵証明書3131と同じである。
なお、ダウンロードパッケージ3120は、アプリ3200と、デバドラ3201と、設定ファイル3202と、アプリ署名リスト3203と、公開鍵証明書3204とをそれぞれ1つずつを含むとしたが、本発明はこれに限定されるものではない。例えば、各ファイルは、1つであってもよいし、複数あってもよい。また、これらのファイルの一部がダウンロードパッケージ3120に含まれてもよい。また、これらのファイルは、ダウンロードパッケージ3120として1つのファイルでダウンロードされてもよいし、それぞれのファイルが個別にダウンロードされてもよいし、複数のファイルに分割されてダウンロードされてもよい。
なお、アプリ署名リスト3203は、アプリ3200と、デバドラ3201と、設定ファイル3202とのそれぞれの署名が並んだリスト全体に対する署名を含んでもよい。また、ダウンロードパッケージ3120は、アプリ署名リスト3203の署名を含んでもよい。
<セキュアブート処理>
機器110及び111は、仮想化ソフトウェア1001及び保護環境1100で動作するソフトウェアが改竄されていないかを、機器起動時に検証する。
以下、機器110及び111が電源投入され仮想化ソフトウェア1001が起動するまでの方法(セキュアブート処理)を、図9のフローチャートを用いて説明する。
機器110及び111は、電源が投入されるとシステムLSI1200内部にあるIPL1202を起動する。
IPL1202は、まず機器110及び111のハードウェアの初期化処理を行う(S1000)。この初期化処理では、メモリ1220の動作チェック、実行環境切替部1203の初期化、及び周辺回路(図示しない)の初期化などの処理が行われる。その後、セキュアOS1101が起動される。
セキュアOS1101は、保護環境1100の初期化(安全なソフトウェア実行環境の構築)を行うことにより、保護環境1100でアプリが動作可能な状態にする。その後、セキュアOS1101は、セキュアブート部1102をロード(S1001)し、セキュアブート部1102を起動する。
ここで、セキュアブート部1102は、暗号化された状態で不揮発性記憶装置1240に格納されている。よって、実行環境切替部1203は、システムLSI1200に固有の鍵を用いて暗号化されたセキュアブート部1102を復号し、復号したセキュアブート部1102を内部保護メモリ1204へロードする。
セキュアブート部1102は、セキュアOS1101と、セキュアブート部1102との検証を行う(S1002)。検証の方法として、セキュアブート部1102は、ソフトウェアのハッシュ値を生成し、生成したハッシュ値と予め計算しておいた参照ハッシュ値との比較を行うことで、セキュアOS1101及びセキュアブート部1102が改竄されていないかを検証する。また、参照ハッシュ値は、工場出荷前に計算され、セキュアブート部1102に埋め込まれる。また、セキュアブート部1102は、参照ハッシュ値を埋め込んだ状態で暗号化され、不揮発性記憶装置1240に格納される。
なお、ここでは、ソフトウェアの検証方法にハッシュ値を利用するとしたが、本発明はこれに限定されるものではなく、ハッシュ値の代わりに署名を用いる方法でもよい。この時、セキュアブート部1102は、署名の検証に用いる公開鍵を埋め込んだ状態で暗号化され、不揮発性記憶装置1240に格納されてもよいし、セキュアブート部1102とは別に不揮発性記憶装置1240に格納されてもよい。また、セキュアブート部1102は、公開鍵を機器外部の別の装置から取得してもよい。
セキュアブート部1102は、ステップS1002でセキュアOS1101と、セキュアブート部1102とを検証した結果、セキュアOS1101と、セキュアブート部1102とが改竄されていないと判定した場合には、ステップS1003でOKと判定し、ステップS1004へ遷移する。また、セキュアブート部1102は、ステップS1002でセキュアOS1101と、セキュアブート部1102とを検証した結果、セキュアOS1101と、セキュアブート部1102とのどちらか一方でも改竄されていると判定された場合には、ステップS1003でNGと判定し、ステップS1006へ遷移する。
セキュアブート部1102は、ステップS1003でOKと判定した場合には、仮想化ソフトウェア1001の検証を行う(S1004)。例えば、セキュアブート部1102は、ステップS1002と同様の検証方法を用いる。
セキュアブート部1102は、ステップS1004で仮想化ソフトウェア1001を検証した結果、仮想化ソフトウェア1001が改竄されていないと判定した場合には、ステップS1005でOKと判定し、処理を終了し、セキュアOS1101へ処理を戻す。一方、セキュアブート部1102は、ステップS1004で検証した結果、仮想化ソフトウェア1001が改竄されていると判定した場合には、ステップS1005でNGと判定し、ステップS1006へ遷移する。
セキュアブート部1102は、ステップS1003又はステップS1005でNGと判定した場合には、セキュアブート失敗フラグを設定する(S1006)。セキュアブート失敗フラグは、内部保護メモリ1204上の特定の領域に保存されるデータ(図示しない)である。セキュアOS1101、及びセキュアOS1101上で動作するアプリは、セキュアブート失敗フラグをチェックすることで機器110及び111の状態を把握し、動作するか否かを決定する。
セキュアブート部1102は、ステップS1006の処理終了後、セキュアOS1101へ処理を戻す。
セキュアOS1101は、セキュアブート部1102から処理が戻ると、IPL1202へ処理を戻す。
IPL1202は、不揮発性記憶装置1240に格納されている仮想化ソフトウェア1001をメモリ1220へロード(S1007)し、仮想化ソフトウェア1001を実行(起動)する。
なお、セキュアブート処理は、TCG(Trusted Computing Group)のMPWG(Mobile Phone Work Group)で規定するセキュアブートを用いてもよい。
また、ここでは、保護モードソフトの検証(S1002)と仮想化ソフトウェアの検証(S1004)とを連続して処理するとしたが、本発明はこれに限定されるものではない。例えば、保護モードソフトの検証(S1002)を行った後、一度IPL1202まで処理を戻し、引き続き、IPL1202からセキュアOS1101を経由して、セキュアブート部1102に対して仮想化ソフトウェアの検証(S1004)を依頼してもよい。
また、セキュアブート処理は仮想化ソフトウェア1001を実行するまでとしたが、本発明はこれに限定されるものではなく、仮想マシン内のIPL、OS、及びアプリもセキュアブート処理の対象にしてもよい。また、IPL、OS、及びアプリをセキュアブートの対象にする場合は、それぞれが次に起動するソフトウェアを改竄されていないか検証してから次に起動するソフトウェアを起動(実行)する。
<仮想マシンの起動処理>
仮想化ソフトウェア1001は、機器起動時に所定の仮想マシンを起動する。更に、実行中の仮想マシンからの要求に応じて、新規に仮想マシンを生成する処理を行う。
以下、仮想化ソフトウェア1001起動後に各仮想マシンが起動する処理を、図10のフローチャートを用いて説明する。
仮想化ソフトウェア1001は、セキュアブート処理の最後でIPL1202により起動され、初期化処理(S1010)を実行する。初期化処理後、仮想化ソフトウェア1001は、仮想マシン1002を実行するためにメモリなどのハードウェアリソースを確保したうえで、仮想マシン1002を起動する。
仮想マシン1002は、起動されると、まず、初期化処理(S1011)を行う。初期化処理として、仮想マシン1002は、仮想ハードウェア1010内のIPL1202を実行する。また、仮想マシン1002は、汎用OS1011をメモリにロードし、汎用OS1011を実行する処理を行う。その後、汎用OS1011の起動処理中又は処理後において、仮想マシン1002から仮想化ソフトウェア1001への処理依頼、又はハードウェア割り込みが発生することにより、仮想マシン1002の処理が中断され、仮想化ソフトウェア1001へ処理が戻る。
次に、仮想化ソフトウェア1001は、仮想マシン1005を実行するためにメモリなどのハードウェアリソースを確保し、仮想マシン1005を起動する。
仮想マシン1005は、起動されると、まず、初期化処理(S1012)を行う。初期化処理として、仮想マシン1005は、仮想ハードウェア1040内のIPL1202を実行する。また、仮想マシン1005は、RTOS1041をメモリにロードし、RTOS1041を実行する処理を行う。その後、RTOS1041の起動処理中又は処理後において、仮想マシン1005から仮想化ソフトウェア1001への処理依頼、又はハードウェア割り込みが発生することにより、仮想マシン1005の処理が中断され、仮想化ソフトウェア1001へ処理が戻る。
その後、仮想化ソフトウェア1001は、スケジューリング機能に従って、仮想マシンをスケジューリングする。
スケジューリング機能により、仮想マシン1002が実行された時、機器を使用するユーザからの要求により、仮想マシン1002は、アプリを起動する(S1013)。
アプリ起動時に、仮想マシン1002は、起動が要求されたアプリを、仮想マシン1002で動作させるか、他の仮想マシンで動作させるかを判定する。具体的には、仮想マシン1002は、起動を要求されたアプリがDLアプリかどうかを判定する(S1014)。なお、DLアプリとは、ネットワークを介して他の機器からダウンロードされたアプリに限らず、他の機器から取得されたアプリであってもよい。例えば、DLアプリとは、機器110に着脱可能な記録媒体を介して、機器110が出荷後に取得したアプリであってもよい。また、仮想マシン1002は、ユーザが起動要求したアプリがDLデバドラかどうかの判定を行ってもよい。
仮想マシン1002は、DLアプリである時は、「OK」と判定し、DLアプリではない時には「NG」と判定する。例えば、仮想マシン1002は、DLアプリの判定に、起動を要求されたアプリのファイル名に付随する拡張子を利用する。
仮想マシン1002は、ステップS1014で「OK」と判定した場合には、起動を要求されたアプリを実行するためのVM(アプリVM)の生成を仮想化ソフトウェア1001に依頼する。
仮想化ソフトウェア1001は、DLアプリを実行するための仮想マシン1003を生成し(S1015)、当該仮想マシン1003を起動する。生成処理の詳細は、フローチャートを用いて後ほど説明する。
仮想マシン1003は、起動されると、初期化処理(S1017)を行い、起動が要求されたアプリを実行する(S1018)。また、DLアプリ実行中(S1018)に、仮想マシン1003から仮想化ソフトウェア1001への処理依頼、又はハードウェア割り込みが発生することにより、仮想マシン1003の処理が中断され、仮想化ソフトウェア1001へ処理が戻ることもある。その場合、仮想化ソフトウェア1001のスケジューリング機能により、仮想マシン1003が再スケジュールされた時に、当該仮想マシン1003は中断された処理の続きを実行する。アプリが終了すると、仮想マシン1003は、仮想化ソフトウェア1001へ仮想マシンの終了を通知する。
仮想化ソフトウェア1001は、仮想マシン1003からの終了通知を受けて、仮想マシン1002へ、VMの終了を通知する。
仮想マシン1002は、VMの終了通知を受けて、ステップS1013で起動を要求されたアプリが終了したことを認識する。
一方、仮想マシン1002は、ステップS1014で「NG」と判定した場合には、起動を要求されたアプリを実行する(S1016)。
上記のように、本発明の実施の形態1に係る機器110及び111は、当該機器110及び111の起動時に所定の仮想マシンを起動する。更に、機器110及び111は、その起動した所定の仮想マシンに対して、ユーザからDLアプリの起動が要求された時には、DLアプリ専用の仮想マシン(仮想マシン1003)を追加で起動し、その仮想マシン内でDLアプリを実行する処理を行う。
なお、仮想マシン1003の処理中断中に、仮想マシン1002が別のDLアプリを実行するためのVMの生成を依頼した時は、仮想化ソフトウェア1001は、仮想マシン1003とは別の仮想マシン(仮想マシン1004等)を生成し、DLアプリがそれぞれ別の仮想マシンで動作するようにする。
<仮想化ソフトウェア1001の構成>
図11は、本発明の実施の形態1に係る仮想化ソフトウェア1001のソフトウェア構成図である。
図11において、仮想化ソフトウェア1001は、アプリVM生成部1300と、アプリ実行専用VM取得部1301と、VM管理部1302と、OS処理依頼制御部1303と、親子関係管理部1304と、ポリシー管理部1305とを含む。
アプリVM生成部1300は、仮想化ソフトウェア1001上で動作する仮想マシンから、仮想マシン(アプリVM)の生成依頼を受けて、DLアプリを実行するための仮想マシン(アプリVM)を生成する。ここで、アプリVM生成部1300は、この仮想マシン(アプリVM)を、アプリ実行専用VMと、仮想マシンから通知されたDLアプリとに応じて生成する。また、アプリVM生成部1300は、VM管理部1302へ、生成した仮想マシンの管理を依頼する。更に、アプリVM生成部1300は、親子関係管理部1304へ、仮想マシンの生成依頼をした仮想マシンを「親」とし、生成した仮想マシンを「子」として、登録する。なお、生成処理の詳細は、フローチャートを用いて後ほど説明する。
また、ここでは、アプリVM生成部1300は、アプリ実行専用VMと、仮想マシンから通知されたDLアプリとから、DLアプリを実行するための仮想マシンを生成するとしたが、本発明はこれに限定されるものではない。例えば、アプリVM生成部1300は、アプリ配信サーバ120から、アプリとOSと仮想ハードウェアとを含んだ状態の仮想マシンをダウンロードし、当該仮想マシンのロード処理とVM管理部1302への管理依頼とを行ってもよい。また、アプリVM生成部1300は、DLアプリ実行時に仮想マシンを生成するのではなく、当該DLアプリをアプリ配信サーバ120からダウンロードした時に仮想マシンを生成してもよい。
アプリ実行専用VM取得部1301は、不揮発性記憶装置1240に記憶されているアプリ実行専用VM1241を読み込む。
図12は、アプリ実行専用VM1241の構造を示す図である。アプリ実行専用VM1241は、ヘッダ情報1310と、VM本体1311と、検証値1312とを含む。また、VM本体1311は、OS1315と、仮想ハードウェア1316とを含む。また、ヘッダ情報1310は、実行するアプリを書き込むアドレス(論理アドレス)と、デバドラを管理している管理構造体のアドレス(論理アドレス)とを含む。検証値1312は、VM本体1311をハッシュ関数に入力した時に得られるハッシュ値である。また、OS1315は、本発明のVM用OSに相当し、不揮発性記憶装置1240は、本発明の記憶部に相当する。
なお、検証値1312は、VM本体1311の後ろにあるのではなく、VM本体1311の前にあってもよいし、ヘッダ情報1310に含まれてもよい。さらに、検証値1312は、アプリ実行専用VM1241に含まれるのではなく、アプリ実行専用VM1241とは別に、アプリ実行専用VM1241と関連づけた状態で、不揮発性保護メモリに格納されてもよい。
なお、ハッシュ関数としては、MD4、MD5、SHA(Secure Hash Algorithm)−1、及びSHA−2などのアルゴリズムが利用可能である。また、検証値1312は、ハッシュ値ではなく、デジタル署名、メッセージ認証コード(MAC:Message Authentication Code)値、誤り検出符号値、又は誤り訂正符号値でもよい。MAC値を計算するアルゴリズムとしては、CBC−MAC(Cipher Block Chaining Message Authentication Code)、及びHMAC(Keyed−Hashing for Message Authentication Code)などが利用可能である。また、誤り検出符号値を計算するアルゴリズムとしては、巡回冗長検査(CRC:Cyclic Redundancy Check)、及びチェックサムなどが利用可能である。また、誤り訂正符号値を計算するアルゴリズムとしては、リード/ソロモン符号、及びターボ符号などが利用可能である。
なお、ハッシュ関数に関しては非特許文献4の96ページから105ページに、デジタル署名方式に関しては非特許文献2の171ページから188ページに、メッセージ認証コードに関しては非特許文献4の30ページから39ページにそれぞれ詳しく説明されている。
なお、複数のアプリ実行専用VM1241を不揮発性記憶装置1240に記憶し、アプリ実行専用VM取得部1301は、DLアプリによって使用するアプリ実行専用VM1241を変えてもよい。この時、アプリ実行専用VM1241のヘッダ情報1310は、アプリ実行専用VM1241が持つ機能を含んでもよいし、DLアプリと紐付ける情報を含んでもよい。
VM管理部1302は、仮想化ソフトウェア1001上で動作している仮想マシンを管理する。VM管理部1302は、機器起動時に起動する仮想マシンと、DLアプリを実行するためのVMとを一緒に管理する。また、VM管理部1302は、仮想マシンの管理に、図13に示す仮想マシン管理テーブル1350を用いる。この仮想マシン管理テーブル1350は、仮想マシンを識別するためのIDと、仮想マシンの状態と、仮想マシンが使用しているメモリのアドレス範囲と、仮想マシンを中断する時の状態を保存する中断状態保存先とを含む。
OS処理依頼制御部1303は、仮想化ソフトウェア1001上で動作している仮想マシンからのOS処理依頼を受けて、依頼してきた仮想マシンと「親」の関係にある仮想マシンに対してOS処理を依頼する。OS処理依頼制御部1303は、親子関係管理部1304から「親」の関係にある仮想マシンの情報を取得する。なお、OS依頼処理の詳細は、フローチャートを用いて後ほど説明する。
親子関係管理部1304は、アプリVM生成部1300からの通知に基づいて、仮想マシン間の親子関係を管理する。親子関係管理部1304は、親子関係を、親子関係管理テーブル1360を用いて管理する。図14は、親子関係管理テーブル1360の構造を示す図である。親子関係管理テーブル1360は、「親」の仮想マシンのID(親仮想マシンID)と「子」の仮想マシンID(子仮想マシンID)とを含む。また、親仮想マシンIDと子仮想マシンIDとは、仮想マシン管理テーブル1350のIDに対応する。
ポリシー管理部1305は、OS処理依頼により実現する機能ごとに、当該機能のOS処理依頼を他の仮想マシンに依頼可能か否かを判定する。具体的には、ポリシー管理部1305は、仮想マシンからOS処理依頼があった時に、そのOS処理を実施するかどうかを、ポリシーテーブル1370に基づいて決定する。ポリシーテーブル1370は、図15Aに示すように、機能と、仮想マシンIDとを含む。機能の列には、機器が持つ機能が全て列挙され、仮想マシンIDの列にその機能を持つ仮想マシンのIDが格納される。この時、DLアプリによる使用を禁止する機能に関しては、仮想マシンIDとしては、使用禁止を示す特殊なID(図15Aでは「0」)を格納する。
なお、ポリシーテーブルは図15Bに示す構成でもよい。図15Bに示すポリシーテーブル1371は、機能と、各仮想マシンがその機能にアクセス許可されているかどうかを示すシンボルとを含む。図15Bに示す「○」はアクセス許可、「×」はアクセス不許可を示す。
また、ここでは、ポリシーを仮想マシンごとに決めるとしたが、本発明はこれに限定されるものではなく、ポリシーをDLアプリごとに決めてもよい。この場合、仮想マシン管理テーブル1350に、DLアプリと仮想マシンとを紐付けするための情報が追加される。
また、図15A及び図15Bでは、機能として、TV視聴、通話及び商用コンテンツ再生を例示しているが、当該機能はこれに限定されるものではない。例えば、ポリシー管理部1305は、デバドラへの処理依頼を実施するかどうかを決定するために、デバドラごとに使用を禁止するかどうかを示す情報をポリシーテーブル1370又は1371に格納してもよい。また、ポリシー管理部1305は、メモリ操作関数などのOSの内部関数ごとに使用を禁止するかどうかを示す情報をポリシーテーブル1370又は1371に格納してもよい。さらに、ポリシー管理部1305は、これらの情報を組み合わせた情報をポリシーテーブル1370又は1371に格納してもよい。
また、仮想マシンからのOS処理依頼のうち、アプリVMOS内部で行うべき処理は、本来OS処理依頼が来ないため、そのような処理依頼があった時にDLアプリによる使用を禁止してもよい。アプリVMOS内部で行うべき処理としては、ダウンロードしたデバドラをインストールする処理、ダウンロードしたデバドラを実行する処理、及びメモリマップ関係の機能に関する処理などがある。なお、詳細は後述する。
<汎用OS1011の構成>
図16は、本発明の実施の形態1に係る汎用OS1011の構成図である。
図16において、汎用OS1011は、アプリロード部1400と、アプリVMOS処理受付部1401と、デバドラA1402とを含む。
アプリロード部1400は、ユーザからのアプリの起動要求を受けて、アプリの起動処理を行う。アプリロード部1400は、ユーザが起動要求をしたアプリがDLアプリかどうかを判断する。アプリロード部1400は、ユーザが起動要求をしたアプリがDLアプリであった場合には、仮想化ソフトウェア1001へアプリVMの生成を依頼する。また、アプリロード部1400は、ユーザが起動要求をしたアプリがDLアプリではなく、通常のアプリであった場合には、汎用OS1011上で動作するアプリとして当該アプリを実行する。
アプリVMOS処理受付部1401は、仮想化ソフトウェア1001からのOS処理の依頼を受けて、依頼されたOS処理を実施し、その結果を仮想化ソフトウェア1001へ通知する。アプリVMOS処理受付部1401は、仮想化ソフトウェア1001から、実施するOS処理の識別子と引数とを受け取り、識別子に応じた処理を行う。また、アプリVMOS処理受付部1401は、汎用OS1011の初期化処理の中で、仮想化ソフトウェア1001に対してコールバック関数を登録し、そのコールバック関数を介してOS処理の依頼を受ける。
なお、アプリVMOS処理受付部1401は、コールバック関数を介してOS処理の依頼を受けるとしたが、本発明はこれに限定されるものではなく、仮想化ソフトウェア1001から汎用OS1011に依頼を通知できる機構であればよい。例えば、アプリVMOS処理受付部1401は、仮想ハードウェアの機能として、OS処理依頼専用の割り込み処理を介してOS処理の依頼を受けてもよい。また、汎用OS1011のシステムコールにOS処理依頼専用のシステムコールを追加し、アプリVMOS処理受付部1401は、そのシステムコールを介してOS処理依頼を受け付けてもよい。
デバドラA1402は、機器110及び111に装着されているハードウェアへのアクセスを管理する。このデバドラA1402は、汎用OS1011内、及び汎用OS1011上で動作するアプリからの要求に応じて動作する。
<アプリロード部1400の構成>
図17Aは、本発明の実施の形態1に係るアプリロード部1400の構成図である。
図17Aに示すアプリロード部1400は、アプリ取得部1410と、判定部1411と、ロード部1412と、VM生成依頼部1413とを含む。
アプリ取得部1410は、ユーザが起動要求したアプリを不揮発性記憶装置1240から読み込む処理を行う。
判定部1411は、ユーザが起動要求したアプリがDLアプリかどうかの判定を行う。判定部1411は、ユーザが起動要求したアプリがDLアプリではなかった場合には、ロード部1412に、アプリのロード及び起動を依頼する。判定部1411は、ユーザが起動要求したアプリがDLアプリであった場合には、VM生成依頼部1413にDLアプリの起動を依頼する。
DLアプリの判定方法として、例えば、判定部1411は、起動を要求されたアプリのファイル名に付随する拡張子が所定の拡張子に一致するかどうか比較することにより判定を行う。DLアプリが利用する拡張子(所定の拡張子)は、システム設計時に決定され、汎用OS1011に事前に埋め込まれ、比較に利用される。
なお、判定部1411は、DLアプリの判定に拡張子を利用するとしたが、これに限定されるものではない。例えば、DLアプリが特定のディレクトリ(フォルダ)に格納され、判定部1411は、起動を要求されたアプリのディレクトリ名(フォルダ名)が、DLアプリを格納しているディレクトリ名と一致するかどうか比較してもよい。また、DLアプリのヘッダ情報にDLアプリであることを識別するための情報(識別子)が埋め込まれ、判定部1411は、その情報があるかどうかをチェックしてもよい。また、判定部1411は、DLアプリのダウンロードパッケージ3120に含まれる公開鍵証明書3204に含まれる情報を用いてDLアプリであるかを識別してもよい。この識別方法としては、例えば、主体者(Subject)又は発行者(Issuer)を識別する情報が特定の企業を示す情報になっているかどうかを比較する方法、又は証明書の識別子(Certificate Serial Number)が特定の文字列から構成されているかを調べる方法などが考えられる。また、アプリ配信サーバ120からダウンロードしたDLアプリを管理するDLアプリ管理部を設け、判定部1411は、DLアプリ管理部が管理するアプリかどうかで、起動要求されたアプリがDLアプリであるかどうかを判定してもよい。
ロード部1412は、アプリ取得部1410が読み込んだアプリをメモリ1220へ書き込み、アプリの起動に必要な処理(例えば、ヘッダの解析、論理アドレスの設定、スタックの設定及びエントリポイントの設定等)を行ったうえで、アプリを実行する。
VM生成依頼部1413は、判定部1411からDLアプリの起動依頼を受けて、仮想化ソフトウェア1001に対して、アプリVMの生成を依頼する。また、VM生成依頼部1413は、依頼時に、アプリVMで実行するDLアプリを仮想化ソフトウェア1001に通知する。
なお、図17Bのように、アプリロード部1400は、判定部1411と、ロード部1412と、VM生成依頼部1413とのみを含んでもよい。この場合、アプリ取得部1410の機能は、判定部1411が内包してもよいし、仮想化ソフトウェア1001のアプリVM生成部1300とロード部1412とが内包してもよい。
<アプリVMOSX1021及びアプリVMOSY1031の構成>
図18A及び図18Bは、本発明の実施の形態1に係るアプリVMOSの構成図である。図18AはアプリVMOSX1021の構成を、図18BはアプリVMOSY1031の構成を示す図である。
図18Aに示すアプリVMOSX1021は、OS処理依頼部1500と、デバドラB1501とを含む。
OS処理依頼部1500は、アプリVMOSX1021上で動作するDLアプリX1022からのOS処理依頼を受けて、仮想化ソフトウェア1001にOS処理依頼を依頼する。この時、デバドラB1501に対する処理依頼であった場合には、仮想化ソフトウェア1001へ依頼するのではなく、アプリVMOSX1021内から直接デバドラB1501へ処理を依頼する。
デバドラB1501は、アプリVMOSX1021内で動作するデバイスドライバで、DLアプリX1022のみが使用し、他のアプリは使用しない。
図18Bに示すアプリVMOSY1031は、OS処理依頼部1500を含む。
なお、デバドラB1501は、DLアプリX1022のみが使用し、他のアプリは使用しないとしたが、本発明はこれに限定されるものではない。例えば、DLアプリY1032がデバドラB1501を使用してもよい。この場合、アプリVMOSY1031は、さらに、デバドラB1501を含む。そして、DLアプリY1032は、アプリVMOSY1031に含まれるデバドラB1501を使用する。
OS処理依頼部1500は、アプリVMOSY1031上で動作するDLアプリY1032からのOS処理依頼を受けて、仮想化ソフトウェア1001にOS処理依頼を依頼する。アプリVMOSY1031は、内部にデバドラを持たないため、OS処理依頼部1500は、全てのOS処理依頼を仮想化ソフトウェア1001へ依頼する。
<OS処理依頼部1500の構成>
図19Aは、本発明の実施の形態1に係るOS処理依頼部1500の構成図である。
図19Aに示すOS処理依頼部1500は、OS処理受付部1510と、依頼判定部1511と、内部処理部1512と、依頼部1513とを含む。
OS処理受付部1510は、DLアプリからのOS処理依頼を受け付ける。
依頼判定部1511は、依頼を受けたOS処理が、アプリVMOS内部で行う処理か、仮想化ソフトウェア1001へ依頼する処理かの判定を行う。依頼判定部1511は、依頼を受けたOS処理が内部で行う処理であった場合には、内部処理部1512へ処理を依頼する。また、依頼判定部1511は、依頼を受けたOS処理が仮想化ソフトウェア1001へ依頼する処理であった場合には、依頼部1513へ処理を依頼する。
内部処理部1512は、DLアプリから依頼された処理を呼び出し、その処理結果をDLアプリへ返す。
依頼部1513は、仮想化ソフトウェア1001へOS処理を依頼する。また、依頼部1513は、仮想化ソフトウェア1001から得られる結果をDLアプリへ返す。
依頼判定部1511で、アプリVMOS内部で行う処理として判定される処理としては、例えば、ダウンロードしたデバドラをインストールする処理、ダウンロードしたデバドラを実行する処理、及びメモリマップ関係の機能に関する処理などがある。
なお、OS処理依頼部1500は、OS処理依頼を内部で行う処理かどうかを判定するとしたが、これに限定されるものではない。図19Bに示すOS処理依頼部1500のように、依頼を受けたOS処理に対してOS処理依頼を内部で行う処理かどうかを判定せずに、全ての処理を仮想化ソフトウェア1001へ依頼するとしてもよい。
<アプリVM生成処理>
汎用OS1011と仮想化ソフトウェア1001とは、互いに連携しながらDLアプリをアプリVMOS上で動作させるために、アプリVMの生成処理を行う。
以下、汎用OS1011から仮想化ソフトウェア1001へアプリVMの生成を依頼した時のアプリVM生成処理を、図20のフローチャートを用いて説明する。
汎用OS1011は、ユーザからのアプリ実行要求に応じて、アプリの起動処理を行う。まず、汎用OS1011のアプリロード部1400は、実行要求されたアプリを不揮発性記憶装置1240から取得し(S1100)、取得したアプリをメモリ1220へ書き込む。
アプリロード部1400は、取得したアプリがDLアプリかどうか判定する(S1101)。アプリロード部1400は、取得したアプリがDLアプリである時は、「OK」と判定し、取得したアプリがDLアプリではない時には「NG」と判定する。
アプリロード部1400は、ステップS1101で「OK」と判定した場合には、仮想化ソフトウェア1001へ実行要求されたアプリを実行するためのVM(アプリVM)の生成を依頼する。この時、アプリロード部1400は、取得したアプリを一緒に仮想化ソフトウェア1001へ送る。
仮想化ソフトウェア1001のアプリVM生成部1300は、アプリVMの生成依頼を受けて、生成するアプリVM用のメモリ領域をメモリ1220上に確保し、不揮発性記憶装置1240からアプリ実行専用VM1241を読み込み、確保したメモリ領域へVM本体1311を書き込む(S1102)。その後、アプリVM生成部1300は、正しいVM本体1311が書き込まれたか確認するために、書き込んだVM本体1311から検証値を生成する。次に、アプリVM生成部1300は、生成した検証値と、アプリ実行専用VM1241の検証値1312とを比較し、一致するかどうかを検証する。アプリVM生成部1300は、生成した検証値と、アプリ実行専用VM1241の検証値1312とが一致しない場合には、アプリVMの生成を中止する。
なお、ここでは、アプリVM生成部1300は、VM本体1311をメモリに書き込んだ後に検証値1312を確認するとしたが、本発明はこれに限定されるものではない。例えば、アプリVM生成部1300は、不揮発性記憶装置1240からアプリ実行専用VM1241を読み込む前に、VM本体1311の検証値を計算し、計算した検証値と検証値1312とが一致するかどうかを検証してもよい。
また、アプリVM生成部1300は、DLアプリ用の個別の仮想マシンを生成する際に、OS1315を共通で用いる。例えば、DLアプリX1022を実行する仮想マシン1003のアプリVMOSX1021と、DLアプリY1032を実行する仮想マシン1004のアプリVMOSY1031との両方を、OS1315を用いて生成する。具体的には、DLアプリX1022及びDLアプリY1032が共にDLデバドラを含まない場合、アプリVMOSX1021とアプリVMOSY1031とは同一の機能を有する。また、DLアプリX1022がDLデバドラを含む場合、アプリVM生成部1300は、OS1315に当該DLデバドラの機能を加えることでアプリVMOSX1021を生成する。
ここで、本発明の実施の形態1に係る機器110は、上述したように、DLアプリに対して個別の仮想マシンを生成し、当該仮想マシンでDLアプリを実行する。そのため、アプリごとにOSが必要となるため、この複数のOSを格納しておくための不揮発性記憶装置1240の容量が増加するという問題が生じる。これに対して、アプリVM生成部1300は、共通のOS1315を用いて、各アプリ用のOSを作成する。これにより、不揮発性記憶装置1240には、単一のOS1315のみを格納しておくだけでよいので、当該不揮発性記憶装置1240の容量を削減できる。
次に、アプリVM生成部1300は、汎用OS1011から受け取ったアプリを、メモリ1220へ書き込む(S1103)。また、アプリVM生成部1300は、書き込むアドレスとして、アプリ実行専用VM1241のヘッダ情報1310に記載されているアドレスを参照する。また、アプリVM生成部1300は、アプリ実行専用VM1241とアプリとから生成したアプリVMをVM管理部1302へ登録し、生成したアプリVMに当該アプリVM(仮想マシン)を識別するためのIDを付与する。
次に、アプリVM生成部1300は、VM生成処理を依頼した汎用OS1011が動作する仮想マシンのID(ID1)と、生成したアプリVMのID(ID2)とを取得する。また、アプリVM生成部1300は、ID1を「親」とし、ID2を「子」とする親子関係を親子関係管理部1304に記憶する(S1104)。
次に、アプリVM生成部1300は、生成したアプリVMの実行をVM管理部1302へ依頼する。これにより、VM管理部1302はアプリVMを実行する(S1105)。実行されたアプリVM内で、アプリVMOSが実行され、更にDLアプリが実行される。
一方、アプリロード部1400は、ステップS1101で「NG」と判定した場合には、取得したアプリを汎用OS1011上で動作するアプリとして汎用OS1011に登録し、当該アプリを実行する(S1106)。
<OS処理依頼時の処理>
アプリVMOSX1021及びアプリVMOSY1031は、その上で動作するDLアプリX1022又はDLアプリY1032からOS処理の依頼があった場合に、そのOS処理を仮想化ソフトウェア1001へ依頼する。仮想化ソフトウェア1001は、OS処理の依頼を受けて、その処理が行える汎用OS1011へOS処理を依頼する処理を行う。
以下、DLアプリからのOS処理依頼の処理を、図21のフローチャートを用いて説明する。以下の説明では、アプリVMOSX1021上で動作するDLアプリX1022からのOS処理依頼を汎用OS1011が処理する場合を説明する。ここで、汎用OS1011が動作する仮想マシン1002の仮想マシンIDを「1」とし、アプリVMOSX1021及びDLアプリX1022が動作する仮想マシン1003の仮想マシンIDを「3」とする。また、親子関係管理テーブル1360には、図14のように、親仮想マシンID「1」、子仮想マシンID「3」の組が登録されているとする。
図21において、DLアプリX1022は、デバイスへのアクセスなどのシステムコールを発行することで、アプリVMOSX1021に対してOS処理を依頼する。依頼を受けたアプリVMOSX1021は、依頼されたOS処理がアプリVMOSX1021内部で行う処理か、他の仮想マシンへ依頼する処理かを判定する(S1200)。アプリVMOSX1021は、アプリVMOSX1021内部で行う処理である場合には「YES」と判定し、内部で行わない処理の場合には「NO」と判定する。
具体的には、アプリVMOSX1021は、依頼されたOS処理をアプリVMOSX1021が実行できるか否かを判定する。例えば、アプリVMOSX1021がDLデバドラの機能を含んでおり、依頼されたOS処理が当該DLデバドラの処理である場合、アプリVMOSX1021は、当該OS処理を当該アプリVMOSX1021が実行できる(アプリVMOSX1021内部で行う処理)と判定する。また、アプリVMOSX1021は、依頼されたOS処理が当該DLデバドラの処理以外である場合、当該OS処理を当該アプリVMOSX1021が実行できない(他の仮想マシンへ依頼する処理)と判定する。
アプリVMOSX1021は、ステップS1200で「NO」と判定した場合には、仮想化ソフトウェア1001へOS処理を依頼する。仮想化ソフトウェア1001のOS処理依頼制御部1303は、OS処理を依頼した仮想マシンの「親」の関係にあたる仮想マシンがどの仮想マシンかを判定するために、親子関係管理部1304に問い合わせ、「親」の仮想マシンの識別子を取得する(S1201)。問い合わせを受けた親子関係管理部1304は、親子関係管理テーブル1360を参照し、子仮想マシンIDの列からOS処理を依頼した仮想マシンのID(今の場合「3」)を検索する。次に、親子関係管理部1304は、検索したIDと対で管理されている親仮想マシンID(今の場合「1」)を取得し、取得した親仮想マシンIDをOS処理依頼制御部1303へ通知する。
次に、OS処理依頼制御部1303は、依頼されたOS処理がポリシーに適合しているかのチェックをポリシー管理部1305に依頼する。依頼を受けたポリシー管理部1305は、ポリシーテーブル1370を参照することによりポリシーをチェックする(S1202)。また、ポリシー管理部1305は、ポリシーテーブル1370から、その機能を提供している仮想マシンIDを取得し、その仮想マシンIDが使用禁止を示す特殊なID(図15Aの場合、「0」)になっていないかをチェックする。特殊なIDになっていた場合には、ポリシー管理部1305は、チェック結果として「NG」を返す。また、ポリシー管理部1305は、特殊なIDでなかった場合には、チェック結果として「OK」を返す。
OS処理依頼制御部1303は、ステップS1202のポリシーチェックが「OK」であったかどうかを判定する(S1203)。
OS処理依頼制御部1303は、ステップS1203で「OK」と判定した場合には、「親」の関係にある仮想マシン1002で動作している汎用OS1011にOS処理を依頼する。
汎用OS1011は、依頼されたOS処理を実施し(S1204)、その結果を仮想化ソフトウェア1001へ通知する。仮想化ソフトウェア1001は、通知された結果を、アプリVMOSX1021へ通知する。更に、アプリVMOSX1021が、当該結果をDLアプリX1022へ通知する。
一方、OS処理依頼制御部1303は、ステップS1203で「NG」と判定した場合には、結果としてエラーをアプリVMOSX1021へ通知する。
また、アプリVMOSX1021は、ステップS1200で「YES」と判定した場合には、アプリVMOSX1021の内部でOS処理を実施する(S1205)。次に、アプリVMOSX1021は、実施したOS処理の結果を、DLアプリX1022へ通知する。
なお、ここでは、DLアプリX1022がOS処理を依頼し、汎用OS1011がOS処理を実施する場合に関して説明したが、本発明はこれに限定されるものではない。例えば、他のアプリVMで動作するアプリがOS処理依頼を行ってもよいし、汎用OS1011以外のOSでOS処理を実施してもよい。
ここで、本発明の実施の形態1に係る機器110は、上述したように、DLアプリに対して個別の仮想マシンを生成し、当該仮想マシンでDLアプリを実行する。そのため、仮想マシンごとにOSを実行する必要があるので、必要となるハードウェア(メモリ等)が増加するという問題が生じる。これに対して、本発明の実施の形態1に係る機器110では、DLアプリ用に生成された仮想マシンは、自身のOSが処理できないOS処理を他の仮想マシンに依頼する。これにより、DLアプリ用に生成された仮想マシンのOSの機能を削減できるので、必要となるハードウェアを削減できる。例えば、当該OSは、OS処理を依頼する機能と、DLデバドラの機能とのみを実現できればよい。
<アプリ実行専用VM生成装置1600の構成図>
図22は、本発明の実施の形態1に係るアプリ実行専用VM生成装置1600の構成図である。
図22に示すアプリ実行専用VM生成装置1600は、アプリ実行前停止コード挿入部1601と、VM生成部1602と、VM実行部1603と、専用VM生成部1604とを含む。また、アプリ実行専用VM生成装置1600は、VMソースコード1610が入力され、アプリ実行専用VM1620を出力する。このアプリ実行専用VM1620は、機器110及び111で、不揮発性記憶装置1240にアプリ実行専用VM1241として格納される。
VMソースコード1610は、アプリVMOSのソースコードと、仮想ハードウェアの設定情報とを含む。アプリVMOSのソースコードは、アプリVMOSがその上で動作するアプリをメモリ1220へロードする処理の直前に、その旨を示す文字列(停止識別子)が挿入されている(例えば、“PRE_APP_EXEC:”)。
アプリ実行前停止コード挿入部1601は、VMソースコード1610に挿入されている停止識別子を検出して、当該停止識別子を、アプリVMOSから仮想化ソフトウェア1001への通知命令(ハイパーコール又はハイパーバイザコール:hypercall)に置き換える。
VM生成部1602は、VMソースコード1610をコンパイル処理及びリンク処理することによりVMの実行イメージファイルを作成する。
VM実行部1603は、仮想化ソフトウェア1001と同等の機能を有し、VMの実行イメージファイルを実行する。実行されたVMは、停止識別子の代わりに埋め込まれた通知命令まで処理を行った後、VM実行部1603への通知処理を行う。VM実行部1603は、この通知を受けてVMの処理を停止する。
専用VM生成部1604は、停止したVMの状態(メモリ上のデータ及びCPUのレジスタの値等)と、VMの実行イメージファイルとから、アプリ実行専用VM1620のVM本体1311を生成する。更に、専用VM生成部1604は、ヘッダ情報1310と検証値1312とを生成し、それらを組み合わせてアプリ実行専用VM1620を生成する。
アプリ実行専用VM1620は、アプリVMOSが起動し、アプリをロードする直前の状態で停止したVMイメージファイルを含む。
なお、ここでは、アプリをメモリ1220へロードする処理の直前に停止識別子が挿入されているとしたが、本発明はこれに限定されるものではない。例えば、アプリをメモリ1220へロードした処理の直後に停止識別子が挿入されてもよい。
また、ここでは、アプリ実行前停止コード挿入部1601は、停止識別子を通知命令(ハイパーコール)に置き換えるとしたが、本発明はこれに限定されるものではない。例えば、アプリ実行前停止コード挿入部1601は、VMソースコード1610を解析することで停止すべき場所を自動的に検出し、検出した場所に通知命令を挿入してもよい。また、通知命令は、ハイパーコールでなく、ブレークポイント命令でもよいし、専用の割り込み命令でもよい。
以上説明したように、本発明の実施の形態1によれば、汎用OS1011は、アプリ実行時に、実行するアプリがDLアプリであるかどうかを判断し、DLアプリであった場合に、DLアプリをそれ専用の仮想マシン(アプリVM)で動作させる。このため、DLアプリが、汎用OS1011上で動作する他のアプリ、及び他のDLアプリが使用するデータにアクセスすることを防止することができる。
また、機器110は、DLアプリの実行時に動的にアプリVMを生成するため、アプリVMが、常時、メモリ1220を占有することがない。さらに、アプリVMOSがOS処理を仮想化ソフトウェア1001へ依頼する構成にすることで、アプリVMOSのサイズを小さくすることができる。これにより、アプリVM実行時のメモリ1220の利用サイズを減らすことができる。このため、本発明の実施の形態1に係るアプリ配信システム100は、メモリなどのリソースの少ない携帯電話、及びTVなどの家電製品においても利用できる。
さらに、DLアプリの実行用の仮想マシンのアプリVMOSを共通化することにより、格納しておくOSのデータ量を削減できる。
さらに、アプリVMOSは、OS処理を仮想化ソフトウェア1001へ依頼するか、アプリVMOS内部で処理するかを判定する。このため、汎用OS1011が処理するとセキュリティの観点から問題となる処理に関しては、アプリVMOS内部で処理することができる。これにより、DLアプリが攻撃用のアプリであったとしても、汎用OS1011への攻撃を防止することができる。また、仮想化ソフトウェア1001でOS処理依頼を受けた時に、本来アプリVMOS内部で行う処理であるかどうかを判断することで、セキュリティの観点から問題となる処理に関しては、アプリVMOS内部と仮想化ソフトウェア1001との2カ所で判断することになる。このため、アプリVMOS内部だけで判断する場合と比べて、セキュリティを向上できる。
このように、本発明の実施の形態1に係るアプリ配信システム100は、不正アプリ及び不正デバドラによる情報資産の漏洩及び改竄を防止できる。これにより、ユーザは安心して機器を利用することができる。
(実施の形態2)
本発明の実施の形態2では、本発明の実施の形態1の構成に対して、アプリVMのOS処理を汎用OS1011で処理する機能を持たない構成について説明する。
以下、本発明の実施の形態2に係る仮想化ソフトウェア1001と汎用OS1011との構成及び生成処理を説明する。なお、本発明の実施の形態1と同じ構成要素、同じ処理については、同じ符号を用い、説明を省略する。
<仮想化ソフトウェア1001の構成>
図23は、本発明の実施の形態2に係る仮想化ソフトウェア1001のソフトウェア構成図である。
図23に示す仮想化ソフトウェア1001は、アプリVM生成部1300と、アプリ実行専用VM取得部1301と、VM管理部1302とを含む。
アプリVM生成部1300は、仮想化ソフトウェア1001上で動作する仮想マシンから、VM(アプリVM)の生成依頼を受けて、アプリ実行専用VMと、仮想マシンから通知されたDLアプリとから、DLアプリを実行するためのVM(アプリVM)を生成する。また、アプリVM生成部1300は、VM管理部1302へ、生成した仮想マシンの管理を依頼する。ここで、アプリVM生成部1300は、本発明の実施の形態1と異なり、親子を認識し、親子関係管理部へ登録する処理は行わない。
なお、アプリ実行専用VM取得部1301と、VM管理部1302に関しては、本発明の実施の形態1と同じである。
<汎用OS1011の構成>
図24は、本発明の実施の形態2に係る汎用OS1011の構成図である。
図24に示す汎用OS1011は、アプリロード部1400と、デバドラA1402とを含む。汎用OS1011は、本発明の実施の形態1と異なり、他の仮想マシンからのOS処理依頼を受け付けないため、OS処理依頼受け付けに必要な機能を持たない。
アプリロード部1400とデバドラA1402とに関しては、本発明の実施の形態1と同じである。
また、本発明の実施の形態2では、アプリVMOSX1021及びアプリVMOSY1031の構成は、汎用OS1011と同じ構成となる。なお、アプリロード部1400は、汎用OS1011と同じ構成であってもよいし、図17Aに示す構成において、判定部1411とVM生成依頼部1413とを備えず、アプリ取得部1410によりアプリ取得後、すぐにロード部1412によりアプリVMOS上にロードするとしてもよいし、アプリVMOS上で動作しているアプリから他アプリを起動できない構成にしてもよい。
<アプリVM生成処理>
本発明の実施の形態2に係るアプリVMの生成処理は、本発明の実施の形態1に係るアプリVM生成処理(図20)と大部分は同じ処理となる。
しかし、本発明の実施の形態2に係る仮想化ソフトウェア1001は、アプリVMからのOS処理依頼を制御する機能を持たないため、ステップS1104の親子関係を登録する処理を行わない。そのため、アプリVM生成部1300は、アプリ実行専用VMとDLアプリとからアプリVMを生成(S1102とS1103)し、VM管理部1302へ登録後、生成したアプリVMの実行をVM管理部1302へ依頼する。依頼を受けたVM管理部1302は、アプリVMを実行する(S1105)。
なお、上記以外の処理は、本発明の実施の形態1と同じ処理である。
以上説明したように、本発明の実施の形態2によれば、汎用OS1011がアプリ実行時に、DLアプリであるかどうかを判断し、DLアプリであった場合に、DLアプリをそれ専用の仮想マシン(アプリVM)で動作させる。このため、本発明の実施の形態2に係るアプリ配信システム100は、DLアプリが、汎用OS1011上で動作するアプリ、又は他のDLアプリが使用するデータにアクセスすることを防止することができる。
このように、本発明の実施の形態2に係るアプリ配信システム100は、不正アプリ及び不正デバドラによる情報資産の漏洩及び改竄を防止できる。これにより、ユーザは安心して機器を利用することができる。
(実施の形態3)
本発明の実施の形態3では、本発明の実施の形態1の構成に対して、仮想マシンを生成する機能を持たない構成について説明する。
以下、本発明の実施の形態3に係る仮想化ソフトウェア1001と汎用OS1011との構成及び生成処理を説明する。なお、本発明の実施の形態1と同じ構成要素、同じ処理については、同じ符号を用い、説明を省略する。
<仮想化ソフトウェア1001の構成>
図25は、本発明の実施の形態3に係る仮想化ソフトウェア1001のソフトウェア構成図である。
図25に示す仮想化ソフトウェア1001は、VM管理部1302と、OS処理依頼制御部1303と、親子関係管理部1304と、ポリシー管理部1305とを含む。
なお、VM管理部1302と、OS処理依頼制御部1303と、親子関係管理部1304と、ポリシー管理部1305とに関しては、本発明の実施の形態1と同じである。
<汎用OS1011の構成>
図26は、本発明の実施の形態3に係る汎用OS1011の構成図である。
図26に示す汎用OS1011は、アプリVMOS処理受付部1401と、デバドラA1402とを含む。
なお、アプリVMOS処理受付部1401とデバドラA1402とに関しては、本発明の実施の形態1と同じである。
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
(1)上記実施の形態におけるDLアプリは、アプリ配信サーバ120からダウンロードされるとしたが、これに限定されるものではない。例えば、DLアプリは、開発装置又はUSB接続したPCからインストールされたアプリであってもよいし、機器110の出荷時に初めからインストールされていてもよい。
(2)上記実施の形態における機器110及び111のソフトウェア構成は、RTOS1041を含む仮想マシン1005がなくてもよいし、汎用OS1011を含む仮想マシン1002、又はRTOS1041を含む仮想マシン1005が複数あってもよい。また、OSを含まない仮想マシンがあってよいし、OS機能を内包したアプリが動作する仮想マシンがあってもよい。さらに、これらの仮想マシンが、アプリVMの生成を仮想化ソフトウェア1001に依頼してもよい。このとき、それぞれの仮想マシンは別々の親として親子関係管理部1304へ登録される。
(3)上記実施の形態におけるアプリVMは、DLアプリ実行時にメモリ1220にロードされ、実行されるとしたが、これに限定されるものではない。例えば、仮想化ソフトウェア1001は、DLアプリ実行前にアプリ実行専用VM1241のみをメモリにロードしておき、DLアプリ実行時にDLアプリをメモリ1220にロードしてもよい。また、仮想化ソフトウェア1001は、DLアプリ実行前にアプリ実行専用VM1241とDLアプリとを事前にメモリ1220にロードしてもよい。
(4)上記実施の形態におけるアプリ実行専用VM1241は、アプリ実行専用VM生成装置1600を用いて、アプリVMOSが起動し、アプリをロードする直前の状態で停止したVMイメージファイルを含むとしたが、これに限定されるものではない。例えば、アプリ実行専用VM1241は、アプリVMOSが起動する前の状態のVMイメージファイルを含んでもよい。このとき、DLアプリごとにアプリVMOSを起動するとしてもよいし、アプリをロードする直前の状態で停止するアプリVMを事前に起動しておき、DLアプリ実行時に、アプリをロードする直前の状態で停止したアプリVMのコピーを作成し、そのコピーしたアプリVMでDLアプリを実行してもよい。
(5)上記の各装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、及びマウスなどから構成されるコンピュータシステムである。前記RAM又はハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
(6)上記の各装置を構成する構成要素の一部又は全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM及びRAMなどを含むコンピュータシステムである。前記RAMには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムLSIは、その機能を達成する。
また、上記の各装置を構成する構成要素の各部は、個別に1チップ化されていても良いし、一部又は全てを含むように1チップ化されてもよい。
また、ここでは、システムLSIとしたが、集積度の違いにより、IC、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
(7)上記の各装置を構成する構成要素の一部又は全部は、各装置に脱着可能なICカード又は単体のモジュールから構成されているとしてもよい。前記ICカード又は前記モジュールは、マイクロプロセッサ、ROM及びRAMなどから構成されるコンピュータシステムである。前記ICカード又は前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ICカード又は前記モジュールは、その機能を達成する。このICカード又はこのモジュールは、耐タンパ性を有するとしてもよい。
(8)本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、又は半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、又はデータ放送等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリとを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
また、前記プログラム又は前記デジタル信号を前記記録媒体に記録して移送することにより、又は前記プログラム又は前記デジタル信号を、前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(9)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
本発明は、ダウンロードしたアプリ及びデバドラを用いる情報処理装置に適用できる。また、本発明は、当該情報処理装置を搭載した携帯電話、及びTVなどの家電製品に有用である。
10 ハードウェア
20、1001 仮想化ソフトウェア
30、40、70、80、1002、1003、1004、1005 仮想マシン
60 VMM
72、1315 OS
90 VM生成装置
100 アプリ配信システム
110、111 機器
120 アプリ配信サーバ
130 開発装置
1000 通常のソフトウェア実行環境(通常環境)
1010、1020、1030、1040、1316 仮想ハードウェア
1011 汎用OS
1012 ダウンロード制御アプリ
1013 アプリA
1014 アプリB
1021 アプリVMOSX
1022、1242 DLアプリX
1031 アプリVMOSY
1032、1243 DLアプリY
1041 RTOS
1042 通話ソフトウェア
1100 安全なソフトウェア実行環境(保護環境)
1101 セキュアOS
1102 セキュアブート部
1200 システムLSI
1201 CPU
1202 IPL(Initial Program Loader)
1203 実行環境切替部
1204 内部保護メモリ
1220 メモリ
1240 不揮発性記憶装置
1241、1620 アプリ実行専用VM
1300 アプリVM生成部
1301 アプリ実行専用VM取得部
1302 VM管理部
1303 OS処理依頼制御部
1304 親子関係管理部
1305 ポリシー管理部
1310 ヘッダ情報
1311 VM本体
1312 検証値
1350 仮想マシン管理テーブル
1360 親子関係管理テーブル
1370、1371 ポリシーテーブル
1400 アプリロード部
1401 アプリVMOS処理受付部
1402 デバドラA
1410 アプリ取得部
1411 判定部
1412 ロード部
1413 VM生成依頼部
1500 OS処理依頼部
1501 デバドラB
1510 OS処理受付部
1511 依頼判定部
1512 内部処理部
1513 依頼部
1600 アプリ実行専用VM生成装置
1601 アプリ実行前停止コード挿入部
1602 VM生成部
1603 VM実行部
1604 専用VM生成部
1610 VMソースコード
2000 アプリ保持部
2001 アプリ受信処理部
2002 アプリ送信処理部
3000 パッケージ生成部
3001 設定ファイル生成部
3002 鍵ペア保持部
3003 鍵ペア生成部
3004 デバッグ処理部
3005 アップロード処理部
3100 コンパイラ
3101 リンカ
3102 パッケージ生成ツール
3110 ソースコード
3120 ダウンロードパッケージ
3130 秘密鍵
3131、3204 公開鍵証明書
3132、3202 設定ファイル
3200 アプリ
3201 デバドラ
3203 アプリ署名リスト

Claims (13)

  1. 複数の仮想マシンを搭載し、
    前記複数の仮想マシンを管理する仮想マシン管理部を備える情報処理装置であって、
    前記仮想マシン管理部は、
    プログラムを実行するための仮想マシンを生成するアプリVM(Virtual Machine)生成部を備え、
    前記複数の仮想マシンの一つである第1の仮想マシンは、当該第1の仮想マシンで動作可能な第1のプログラムを、当該第1の仮想マシンで動作させるか、当該第1の仮想マシン以外の他の仮想マシンで動作させるかを判定し、
    前記アプリVM生成部は、前記第1の仮想マシンにより、前記第1のプログラムを他の仮想マシンで動作させると判定された場合に、前記第1のプログラムを実行するための第2の仮想マシンを生成する
    情報処理装置。
  2. 前記第1の仮想マシンは、前記第1のプログラムが他の機器から取得されたプログラムである場合、前記第1のプログラムを他の仮想マシンで動作させると判定する
    請求項1に記載の情報処理装置。
  3. 前記第1の仮想マシンは、前記第1のプログラムが他の機器から取得されたデバイスドライバソフトウェアを含む場合、前記第1のプログラムを他の仮想マシンで動作させると判定する
    請求項2に記載の情報処理装置。
  4. 前記情報処理装置は、さらに、
    VM用OS(Operating System)プログラムを記憶する記憶部を備え、
    前記第1の仮想マシンは、さらに、前記第1のプログラムと異なる、当該第1の仮想マシンで動作可能な第2のプログラムを、当該第1の仮想マシンで動作させるか、前記他の仮想マシンで動作させるかを判定し、
    前記アプリVM生成部は、前記第1の仮想マシンにより、前記第2のプログラムを前記他の仮想マシンで動作させると判定された場合に、前記第2のプログラムを実行するための第3の仮想マシンを生成し、
    前記アプリVM生成部は、前記第2の仮想マシン用のオペレーティングシステムと、前記第3の仮想マシン用のオペレーティングシステムとの両方を、前記VM用OSプログラムを用いて生成する
    請求項1〜3のいずれか1項に記載の情報処理装置。
  5. 前記第2の仮想マシンは、
    当該第2の仮想マシンのオペレーティングシステムで実行できない処理であるOS処理の実行を他の仮想マシンに依頼するOS処理依頼を前記仮想マシン管理部へ送るOS処理依頼部を備え、
    前記仮想マシン管理部は、さらに、
    前記第2の仮想マシンから前記OS処理依頼があった時に、他の仮想マシンへ前記OS処理を依頼するOS処理依頼制御部を備える
    請求項1〜4のいずれか1項に記載の情報処理装置。
  6. 前記仮想マシン管理部は、さらに、
    前記複数の仮想マシンの親子関係を管理する親子関係管理部とを備え、
    前記親子関係管理部は、前記仮想マシンの生成を依頼した前記第1の仮想マシンを親とし、当該依頼に応じて生成した前記第2の仮想マシンを子として親子関係を管理し、
    前記OS処理依頼制御部は、前記第2の仮想マシンから前記OS処理依頼があった時に、前記第2の仮想マシンの親として管理されている前記第1の仮想マシンへ前記OS処理を依頼する
    請求項5に記載の情報処理装置。
  7. 前記仮想マシン管理部は、さらに、
    前記OS処理依頼により実現する機能ごとに、当該機能の前記OS処理依頼を他の仮想マシンに依頼可能か否かを判定するポリシー管理部を備え、
    前記OS処理依頼制御部は、前記OS処理依頼を依頼可能であると前記ポリシー管理部が判定した場合、前記第1の仮想マシンへ前記OS処理を依頼する
    請求項6に記載の情報処理装置。
  8. 前記OS処理依頼部は、前記第1のプログラムが他の機器から取得されたデバイスドライバソフトウェアを含み、かつ、前記OS処理を当該デバイスドライバソフトウェアが処理可能な場合、前記OS処理を前記第2の仮想マシンで処理すると判定し、前記OS処理を当該デバイスドライバソフトウェアが処理できない場合、前記OS処理依頼を前記仮想マシン管理部へ送る
    請求項5に記載の情報処理装置。
  9. 情報処理装置で動作する仮想マシンを生成する仮想マシン生成方法であって、
    当該第1の仮想マシンで動作可能な第1のプログラムを、当該第1の仮想マシンで動作させるか、当該第1の仮想マシン以外の他の仮想マシンで動作させるかを前記第1の仮想マシンが判定するステップと、
    前記第1のプログラムを他の仮想マシンで動作させると判定された場合に、前記第1のプログラムを実行するための第2の仮想マシンを生成するステップとを含む
    仮想マシン生成方法。
  10. 請求項9に記載の仮想マシン生成方法をコンピュータに実行させる
    プログラム。
  11. 請求項10に記載のプログラムを記録した
    コンピュータ読み取り可能な記録媒体。
  12. ネットワークを利用してプログラムを配信するアプリ配信システムであって、
    前記アプリ配信システムは、
    請求項1に記載の情報処理装置と、
    アプリ配信サーバと
    を含み、
    前記アプリ配信サーバは、
    配信するプログラムを保持するアプリ保持部と、
    前記情報処理装置へプログラムを送信するアプリ送信処理部とを備え、
    前記第1の仮想マシンは、前記第1のプログラムが前記アプリ送信処理部により送信されたプログラムである場合、前記第1のプログラムを他の仮想マシンで動作させると判定する
    アプリ配信システム。
  13. 複数の仮想マシンを搭載し、
    前記複数の仮想マシンを管理する仮想マシン管理部を備える半導体集積回路であって、
    前記仮想マシン管理部は、
    プログラムを実行するための仮想マシンを生成するアプリVM(Virtual Machine)生成部を備え、
    前記複数の仮想マシンの一つである第1の仮想マシンは、当該第1の仮想マシンで動作可能な第1のプログラムを、当該第1の仮想マシンで動作させるか、当該第1の仮想マシン以外の仮想マシンで動作させるかを判定し、
    前記アプリVM生成部は、前記第1の仮想マシンにより、前記第1のプログラムを他の仮想マシンで動作させると判定された場合に、前記第1のプログラムを実行するための第2の仮想マシンを生成する
    半導体集積回路。
JP2012505484A 2010-03-16 2011-03-08 情報処理装置、仮想マシン生成方法及びアプリ配信システム Active JP5821034B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012505484A JP5821034B2 (ja) 2010-03-16 2011-03-08 情報処理装置、仮想マシン生成方法及びアプリ配信システム

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2010059890 2010-03-16
JP2010059890 2010-03-16
PCT/JP2011/001343 WO2011114655A1 (ja) 2010-03-16 2011-03-08 情報処理装置、仮想マシン生成方法及びアプリ配信システム
JP2012505484A JP5821034B2 (ja) 2010-03-16 2011-03-08 情報処理装置、仮想マシン生成方法及びアプリ配信システム

Publications (2)

Publication Number Publication Date
JPWO2011114655A1 true JPWO2011114655A1 (ja) 2013-06-27
JP5821034B2 JP5821034B2 (ja) 2015-11-24

Family

ID=44648771

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012505484A Active JP5821034B2 (ja) 2010-03-16 2011-03-08 情報処理装置、仮想マシン生成方法及びアプリ配信システム

Country Status (5)

Country Link
US (1) US9081596B2 (ja)
EP (1) EP2549380B1 (ja)
JP (1) JP5821034B2 (ja)
CN (1) CN102656561A (ja)
WO (1) WO2011114655A1 (ja)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9264441B2 (en) * 2008-03-24 2016-02-16 Hewlett Packard Enterprise Development Lp System and method for securing a network from zero-day vulnerability exploits
US8972980B2 (en) * 2010-05-28 2015-03-03 Bromium, Inc. Automated provisioning of secure virtual execution environment using virtual machine templates based on requested activity
US9386021B1 (en) 2011-05-25 2016-07-05 Bromium, Inc. Restricting network access to untrusted virtual machines
US10095530B1 (en) 2010-05-28 2018-10-09 Bromium, Inc. Transferring control of potentially malicious bit sets to secure micro-virtual machine
US8752047B2 (en) 2010-05-28 2014-06-10 Bromium, Inc. Automated management of virtual machines to process untrusted data based on client policy information
US9116733B2 (en) 2010-05-28 2015-08-25 Bromium, Inc. Automated provisioning of secure virtual execution environment using virtual machine templates based on requested activity
US9148428B1 (en) 2011-05-25 2015-09-29 Bromium, Inc. Seamless management of untrusted data using virtual machines
US9489541B2 (en) * 2011-09-09 2016-11-08 Nvidia Corporation Content protection via online servers and code execution in a secure operating system
US20130091197A1 (en) 2011-10-11 2013-04-11 Microsoft Corporation Mobile device as a local server
US9571332B2 (en) * 2012-04-17 2017-02-14 Adara Networks, Inc. Methods and apparatuses for remote application provisioning automation over virtualized IT infrastructure
US9177121B2 (en) 2012-04-27 2015-11-03 Nvidia Corporation Code protection using online authentication and encrypted code execution
CN102708027B (zh) * 2012-05-11 2015-08-12 中兴通讯股份有限公司 一种避免通信设备运行中断的方法及系统
US20130346571A1 (en) * 2012-06-24 2013-12-26 Sergei MAKAVEEV Computer and method of operation of its network
US9600351B2 (en) * 2012-12-14 2017-03-21 Microsoft Technology Licensing, Llc Inversion-of-control component service models for virtual environments
WO2014125643A1 (ja) * 2013-02-18 2014-08-21 株式会社レイトロン アプリケーション転送システム、アプリケーション転送方法、端末、およびプログラム
WO2014129184A1 (ja) * 2013-02-21 2014-08-28 日本電気株式会社 仮想化システム
US9912521B2 (en) * 2013-03-13 2018-03-06 Dell Products L.P. Systems and methods for managing connections in an orchestrated network
US10541898B2 (en) * 2013-03-15 2020-01-21 Brian Weinberg System and method for creating, deploying, and administering distinct virtual computer networks
US9535728B2 (en) * 2013-03-18 2017-01-03 International Business Machines Corporation Scalable policy management in an edge virtual bridging (EVB) environment
US9529612B2 (en) * 2013-03-18 2016-12-27 International Business Machines Corporation Scalable policy assignment in an edge virtual bridging (EVB) environment
US10346148B2 (en) * 2013-08-12 2019-07-09 Amazon Technologies, Inc. Per request computer system instances
US9280372B2 (en) 2013-08-12 2016-03-08 Amazon Technologies, Inc. Request processing techniques
US9348634B2 (en) 2013-08-12 2016-05-24 Amazon Technologies, Inc. Fast-booting application image using variation points in application source code
US9705755B1 (en) 2013-08-14 2017-07-11 Amazon Technologies, Inc. Application definition deployment with request filters employing base groups
US10430614B2 (en) 2014-01-31 2019-10-01 Bromium, Inc. Automatic initiation of execution analysis
US9430212B2 (en) * 2014-02-10 2016-08-30 Netflix, Inc. Automatically generating volume images and launching virtual computing instances
US9158909B2 (en) * 2014-03-04 2015-10-13 Amazon Technologies, Inc. Authentication of virtual machine images using digital certificates
EP3001313A1 (de) * 2014-09-23 2016-03-30 dSPACE digital signal processing and control engineering GmbH Verfahren zur Simulation eines Anwendungsprogramms eines elektronischen Steuergeräts auf einem Computer
GB2531008A (en) * 2014-10-07 2016-04-13 Ibm Agile Software Development Process And Results
WO2017032890A1 (de) * 2015-08-26 2017-03-02 Bloks. Ag Steuergerät für ein fahrrad
JP6462540B2 (ja) * 2015-09-08 2019-01-30 株式会社東芝 ドライバ装置、情報処理システム、プログラムおよび方法
EP3252599B1 (en) * 2016-03-25 2021-02-17 Cloudminds (Shenzhen) Robotics Systems Co., Ltd. Method and apparatus for starting application program
CN107807839B (zh) * 2016-09-09 2022-01-28 阿里巴巴集团控股有限公司 一种修改虚拟机内存数据的方法、装置及电子设备
JP6104447B1 (ja) * 2016-10-31 2017-03-29 株式会社ソリトンシステムズ プログラム動作監視制御装置、分散オブジェクト生成管理装置、プログラム、及びプログラム動作監視システム
US10366227B2 (en) * 2016-11-15 2019-07-30 International Business Machines Corporation Secure debugging in a trustable computing environment
US10630682B1 (en) 2016-11-23 2020-04-21 Amazon Technologies, Inc. Lightweight authentication protocol using device tokens
US10129223B1 (en) * 2016-11-23 2018-11-13 Amazon Technologies, Inc. Lightweight encrypted communication protocol
US10331892B2 (en) 2017-02-24 2019-06-25 Dell Products L.P. Systems and methods for secure boot and runtime tamper detection
US20190362066A1 (en) * 2018-05-25 2019-11-28 Microsoft Technology Licensing, Llc Accessing secure system resources by low privilege processes
US10853500B2 (en) * 2018-08-06 2020-12-01 Xerox Corporation Method and system for identifying virtualized applications
US10860744B2 (en) * 2018-11-20 2020-12-08 Silicon Laboratories, Inc. System and method for ensuring integrity and confidentiality of data programmed in an insecure manufacturing environment
WO2020232359A1 (en) * 2019-05-15 2020-11-19 The Regents Of The University Of California Methods concerning ongoing treatment for cancer
JP7327235B2 (ja) * 2020-03-24 2023-08-16 横河電機株式会社 フォールトトレラントシステム

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006172463A (ja) * 2000-12-11 2006-06-29 Ntt Docomo Inc 端末装置及び中継装置
TW584801B (en) 2000-12-11 2004-04-21 Ntt Docomo Inc Terminal and repeater
JP2004252629A (ja) * 2003-02-19 2004-09-09 Ntt Data Corp マルチオペレーティングシステムおよびマルチオペレーティングシステム制御方法
JP2005011336A (ja) 2003-05-29 2005-01-13 Matsushita Electric Ind Co Ltd オペレーティングシステム切り替え可能な情報処理装置
US7503049B2 (en) * 2003-05-29 2009-03-10 Panasonic Corporation Information processing apparatus operable to switch operating systems
US7469346B2 (en) * 2003-06-27 2008-12-23 Disney Enterprises, Inc. Dual virtual machine architecture for media devices
US8464250B1 (en) * 2004-09-23 2013-06-11 Transcontinental Events, Llc System and method for on-demand cloning of virtual machines
JP4717426B2 (ja) * 2004-12-07 2011-07-06 キヤノン株式会社 情報処理装置及びその方法
US9606821B2 (en) * 2004-12-17 2017-03-28 Intel Corporation Virtual environment manager for creating and managing virtual machine environments
US8296759B1 (en) * 2006-03-31 2012-10-23 Vmware, Inc. Offloading operations to a replicate virtual machine
US8151263B1 (en) * 2006-03-31 2012-04-03 Vmware, Inc. Real time cloning of a virtual machine
US9015703B2 (en) * 2006-10-17 2015-04-21 Manageiq, Inc. Enforcement of compliance policies in managed virtual systems
US8185893B2 (en) * 2006-10-27 2012-05-22 Hewlett-Packard Development Company, L.P. Starting up at least one virtual machine in a physical machine by a load balancer
US8336046B2 (en) 2006-12-29 2012-12-18 Intel Corporation Dynamic VM cloning on request from application based on mapping of virtual hardware configuration to the identified physical hardware resources
US8856782B2 (en) * 2007-03-01 2014-10-07 George Mason Research Foundation, Inc. On-demand disposable virtual work system
CN101636717B (zh) * 2007-03-27 2013-07-17 富士通株式会社 网格处理控制装置
US8307443B2 (en) * 2007-09-28 2012-11-06 Microsoft Corporation Securing anti-virus software with virtualization
US20090125901A1 (en) * 2007-11-13 2009-05-14 Swanson Robert C Providing virtualization of a server management controller
US8539551B2 (en) * 2007-12-20 2013-09-17 Fujitsu Limited Trusted virtual machine as a client
US8615757B2 (en) 2007-12-26 2013-12-24 Intel Corporation Negotiated assignment of resources to a virtual machine in a multi-virtual machine environment
US8819647B2 (en) * 2008-01-25 2014-08-26 International Business Machines Corporation Performance improvements for nested virtual machines
US8161479B2 (en) 2008-06-13 2012-04-17 Microsoft Corporation Synchronizing virtual machine and application life cycles
CN102150103A (zh) * 2008-07-14 2011-08-10 加利福尼亚大学董事会 能够在联网计算机中节能的架构
CN102099811B (zh) * 2008-07-21 2015-04-08 国际商业机器公司 用于离线虚拟环境中的或与之相关的改进的方法和系统
US8566821B2 (en) * 2008-11-11 2013-10-22 Netapp Inc. Cloning virtual machines
US8387045B2 (en) * 2009-03-12 2013-02-26 International Business Machines Corporation Cloning image creation using virtual machine environment
US9448852B2 (en) * 2009-08-28 2016-09-20 Oracle International Corporation Managing virtual machines
US20110061050A1 (en) * 2009-09-04 2011-03-10 Sahita Ravi L Methods and systems to provide platform extensions for trusted virtual machines
US8726334B2 (en) * 2009-12-09 2014-05-13 Microsoft Corporation Model based systems management in virtualized and non-virtualized environments

Also Published As

Publication number Publication date
US20120260250A1 (en) 2012-10-11
US9081596B2 (en) 2015-07-14
EP2549380B1 (en) 2018-06-13
WO2011114655A1 (ja) 2011-09-22
EP2549380A1 (en) 2013-01-23
CN102656561A (zh) 2012-09-05
EP2549380A4 (en) 2014-12-17
JP5821034B2 (ja) 2015-11-24

Similar Documents

Publication Publication Date Title
JP5821034B2 (ja) 情報処理装置、仮想マシン生成方法及びアプリ配信システム
JP5828081B2 (ja) 情報処理装置、情報処理方法、及びプログラム配信システム
US20110289294A1 (en) Information processing apparatus
EP2791857B1 (en) Facilitating system service request interactions for hardware-protected applications
JP4971466B2 (ja) コンピューティング・デバイスの安全なブート
JP5061908B2 (ja) プログラム実行制御方法および装置ならびに実行制御プログラム
JP5346608B2 (ja) 情報処理装置およびファイル検証システム
JP5970141B2 (ja) コンピュータでソフトウェア・モジュールを実行するための方法、ブートローダ、ユーザ信頼デバイス、およびシステム
CN112639778A (zh) 指针认证及指针认证方案之间的动态切换
JPWO2012172743A1 (ja) 情報処理装置、情報処理方法、プログラム、集積回路
CN111201553B (zh) 一种安全元件及相关设备
EP3785149B1 (en) Memory assignment for guest operating systems
JP4664055B2 (ja) プログラム分割装置、プログラム実行装置、プログラム分割方法及びプログラム実行方法
KR20090048581A (ko) 가상 머신 활성화를 갖는 휴대용 대량 저장장치
JP2009169868A (ja) 記憶領域アクセス装置及び記憶領域のアクセス方法
CN116049844A (zh) 一种可信平台模块调用方法、系统、装置及存储介质
Chang Integrity Protection On the Linux Based Android Platform
Asokan et al. Mobile Platforms

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131029

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20141008

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: 20150414

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150508

R151 Written notification of patent or utility model registration

Ref document number: 5821034

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151