JP6741236B2 - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JP6741236B2
JP6741236B2 JP2018550982A JP2018550982A JP6741236B2 JP 6741236 B2 JP6741236 B2 JP 6741236B2 JP 2018550982 A JP2018550982 A JP 2018550982A JP 2018550982 A JP2018550982 A JP 2018550982A JP 6741236 B2 JP6741236 B2 JP 6741236B2
Authority
JP
Japan
Prior art keywords
program
update
information processing
update file
processing apparatus
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.)
Expired - Fee Related
Application number
JP2018550982A
Other languages
English (en)
Other versions
JPWO2018092289A1 (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.)
Dai Nippon Printing Co Ltd
Original Assignee
Dai Nippon Printing 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 Dai Nippon Printing Co Ltd filed Critical Dai Nippon Printing Co Ltd
Publication of JPWO2018092289A1 publication Critical patent/JPWO2018092289A1/ja
Application granted granted Critical
Publication of JP6741236B2 publication Critical patent/JP6741236B2/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
    • G06F11/00Error detection; Error correction; Monitoring
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities

Landscapes

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

Description

本発明は、情報処理装置に関し、特に、外部装置から入手したアップデートファイルを用いてプログラムのアップデートを行う機能を有する情報処理装置に関する。
一般的な情報処理装置は、ソフトウェアにより様々な情報処理機能を実現している。通常、情報処理装置には、OSプログラムやアプリケーションプログラムが組み込まれ、また、ファームウェアと呼ばれるハードウェアに密接に結びついたプログラムも組み込まれる。これらのプログラムは、いずれも、アップデートによってその内容を書き換えることができる。したがって、多くの情報処理装置では、必要に応じて、プログラムをアップデートする(プログラムの内容を更新する)ことにより、新機能の追加やバグの修正などが行われている。
たとえば、下記の特許文献1には、ホストとなるコンピュータに接続されるファックス、スキャナ、プリンタなどの周辺機器に組み込まれているデバイスドライバやユーティリティソフトのプログラムに対して、コンピュータ側からの指示に基づいてアップデートを行う技術が開示されている。また、特許文献2には、インターネットを介して、複数の情報処理装置に対するアップデートを一括して一斉に行う技術が開示されており、特許文献3には、家庭内に設置された情報処理装置に対して、携帯電話を利用してアップデートの実行指示を与え、インターネットを介した効率的なアップデートを行うシステムが開示されている。
特開平11−296469号公報 特開2002−278766号公報 特開2016−001391号公報
インターネット等のネットワーク環境が普及した今日では、情報処理装置に組み込まれているプログラムに対するアップデートは、通常、ネットワークを介して接続された外部装置から、アップデートファイルを入手することによって行われる。具体的には、情報処理装置を外部のアップデートサーバに接続し、このアップデートサーバから情報処理装置に対して、アップデートに必要なアップデートファイルを配信し、これを受信した情報処理装置において、当該アップデートファイルに含まれているアップデート用プログラムを実行することになる。
アップデートファイルの配信は、情報処理装置からアップデートサーバに対して配信要求を行うことにより行われる場合(Pull型配信)もあれば、アップデートサーバから自主的に情報処理装置に対して配信する場合(Push型配信)もあるが、いずれの場合も、アップデートサーバから送信されてきたアップデートファイルに基づいて、アップデート処理が行われることに相違はない。したがって、正規のアップデートサーバから送信されてきた正しいアップデートファイルに基づくアップデート処理が行われれば問題ないが、悪意をもった者が設置した偽のアップデートサーバから送信されてきた偽のアップデートファイルに基づくアップデート処理が行われると、セキュリティ上、重大な問題が生じる。
最近は、悪意のある者がネットワーク経由で情報処理装置の脆弱性を突いて侵入し、様々な方法でシステムを改竄する危険性が高まっており、正しいサイトから偽のサイトへと誘導されるケースも少なくない。こうして誘導された偽のサイト(偽のアップデートサーバ)から偽のアップデートファイルを取得し、含まれているプログラムを実行してしまうと、情報処理装置のシステムは完全に乗っ取られてしまうおそれがある。
今後は、IoT(Internet of Things)の考え方に基づき、家庭内の電子機器をホームゲートウェイ装置を介してインターネットに接続する形態が広まることが予想される。このような家庭用の情報処理装置では、十分なセキュリティ対策を講じることが困難であり、アップデート時にマルウェアに感染する事態が頻発することが危惧される。
そこで本発明は、セキュアな環境下でアップデートを行うことが可能な情報処理装置を提供することを目的とする。
(1) 本発明の第1の態様は、CPUと、メモリと、外部通信手段と、を備えた情報処理装置において、
メモリに、CPUに実行させる第1のOSプログラムおよび第2のOSプログラムと、第1のOSプログラムの管理下においてCPUに実行させる第1属性のアプリケーションプログラムと、第2のOSプログラムの管理下においてCPUに実行させる第2属性のアプリケーションプログラムと、CPUに第1のOSプログラムおよび第2のOSプログラムを並列実行させる処理を行うハイパーバイザープログラムと、を格納し、
第1属性のアプリケーションプログラムには、アップデート処理を管理する第1の管理プログラムが含まれ、第2属性のアプリケーションプログラムには、アップデート処理を管理する第2の管理プログラムが含まれるようにし、
メモリの記憶領域には、第1のOSプログラムの管理下と第2のOSプログラムの管理下との双方においてアクセス可能な共有メモリ領域を設け、
外部通信手段には、外部装置から送信されてきた、所定の暗号鍵を用いて暗号化された暗号化アップデートファイルを、第1のOSプログラムの管理下で受信する機能をもたせ、
第1の管理プログラムが、外部通信手段が受信した暗号化アップデートファイルを共有メモリ領域に書き込む処理を実行し、
第2の管理プログラムが、共有メモリ領域に書き込まれた暗号化アップデートファイルを読出し、上記暗号鍵もしくは上記暗号鍵に関連する暗号鍵を用いて、暗号化アップデートファイルを復号することにより復号アップデートファイルを生成する復号処理を実行し、生成した復号アップデートファイルを所定の格納場所に書き込む処理を実行するようにしたものである。
(2) 本発明の第2の態様は、上述した第1の態様に係る情報処理装置において、
第1の管理プログラムが、第1のOSプログラムもしくは第1属性のアプリケーションプログラムに対するアップデート処理を実行するための暗号化アップデートファイルを外部通信手段が受信したときに、受信した暗号化アップデートファイルを共有メモリ領域に書き込み、
第2の管理プログラムが、暗号化アップデートファイルを復号することにより復号アップデートファイルを生成し、これを所定の格納場所に書き込み、
CPUが、復号アップデートファイルに含まれているアップデート用プログラムを実行することにより、第1のOSプログラムもしくは第1属性のアプリケーションプログラムに対するアップデート処理を行うようにしたものである。
(3) 本発明の第3の態様は、上述した第2の態様に係る情報処理装置において、
メモリとして、揮発性メモリと不揮発性メモリとを内蔵しており、
揮発性メモリは、CPUがプログラムを実行する際の作業領域として利用され、
不揮発性メモリには、第1のOSプログラムと、第2のOSプログラムと、第1属性のアプリケーションプログラムと、第2属性のアプリケーションプログラムと、ハイパーバイザープログラムと、が格納されているようにしたものである。
(4) 本発明の第4の態様は、上述した第3の態様に係る情報処理装置において、
揮発性メモリに共有メモリ領域が設けられており、
第1の管理プログラムが、暗号化アップデートファイルを、揮発性メモリ内の共有メモリ領域に書き込む処理を実行し、
第2の管理プログラムが、復号アップデートファイルを、揮発性メモリ内の共有メモリ領域に書き込む処理を実行し、
CPUが、揮発性メモリから復号アップデートファイルに含まれているアップデート用プログラムを読み出し、これを実行することによりアップデート処理を行うようにしたものである。
(5) 本発明の第5の態様は、上述した第3の態様に係る情報処理装置において、
不揮発性メモリに共有メモリ領域が設けられており、
第1の管理プログラムが、暗号化アップデートファイルを、不揮発性メモリ内の共有メモリ領域に書き込む処理を実行し、
第2の管理プログラムが、復号アップデートファイルを、不揮発性メモリ内の共有メモリ領域に書き込む処理を実行し、
CPUが、不揮発性メモリから復号アップデートファイルに含まれているアップデート用プログラムを読み出し、これを実行することによりアップデート処理を行うようにしたものである。
(6) 本発明の第6の態様は、上述した第3の態様に係る情報処理装置において、
揮発性メモリと不揮発性メモリとの双方に共有メモリ領域が設けられており、
第1の管理プログラムが、暗号化アップデートファイルを、揮発性メモリ内の共有メモリ領域に書き込む処理を実行し、
第2の管理プログラムが、復号アップデートファイルを、不揮発性メモリ内の共有メモリ領域に書き込む処理を実行し、
CPUが、不揮発性メモリから復号アップデートファイルに含まれているアップデート用プログラムを読み出し、これを実行することによりアップデート処理を行うようにしたものである。
(7) 本発明の第7の態様は、上述した第3の態様に係る情報処理装置において、
揮発性メモリに共有メモリ領域を設け、
情報処理装置には、不揮発性の外部メモリを装着して、この外部メモリに対して情報の書き込みおよび読み出しを行う機能をもたせ、
外部メモリの少なくとも一部の記憶領域は、第1のOSプログラムの管理下と第2のOSプログラムの管理下との双方においてアクセスが可能な共通アクセス領域になっており、
第1の管理プログラムが、暗号化アップデートファイルを、揮発性メモリ内の共有メモリ領域に書き込む処理を実行し、
第2の管理プログラムが、復号アップデートファイルを、外部メモリの共通アクセス領域に書き込む処理を実行し、
CPUが、外部メモリの共通アクセス領域から復号アップデートファイルに含まれているアップデート用プログラムを読み出し、これを実行することによりアップデート処理を行うようにしたものである。
(8) 本発明の第8の態様は、上述した第3の態様に係る情報処理装置において、
揮発性メモリに共有メモリ領域を設け、
情報処理装置には、不揮発性の外部メモリを装着して、第1のOSプログラムの管理下において外部メモリに対して情報の書き込みおよび読み出しを行う機能をもたせ、
第1の管理プログラムが、暗号化アップデートファイルを、揮発性メモリ内の共有メモリ領域に書き込む処理を実行し、
第2の管理プログラムが、復号アップデートファイルを、揮発性メモリ内の共有メモリ領域に書き込む処理を実行し、
第1の管理プログラムが、揮発性メモリ内の共有メモリ領域に書き込まれた復号アップデートファイルを読み出した上で、これを外部メモリに書き込む処理を実行し、
CPUが、外部メモリから復号アップデートファイルに含まれているアップデート用プログラムを読み出し、これを実行することによりアップデート処理を行うようにしたものである。
(9) 本発明の第9の態様は、上述した第3〜第8の態様に係る情報処理装置において、
内蔵された不揮発性メモリには、当該情報処理装置もしくは当該情報処理装置のユーザを特定するための識別情報を記録しておき、
外部通信手段には、上記識別情報を利用して生成された暗号鍵を用いて暗号化された暗号化アップデートファイルを受信する機能をもたせ、
第2の管理プログラムが、上記識別情報を利用して生成された暗号鍵を用いて暗号化アップデートファイルの復号を行うようにしたものである。
(10) 本発明の第10の態様は、上述した第3〜第9の態様に係る情報処理装置において、
内蔵された不揮発性メモリのメモリ空間に、第1の領域と第2の領域とを定義し、
第1のOSプログラムおよび第1属性のアプリケーションプログラムは、第1の領域に対するアクセスのみが可能であり、第2のOSプログラムおよび第2属性のアプリケーションプログラムは、第1の領域および第2の領域の双方に対するアクセスが可能であるようにしたものである。
(11) 本発明の第11の態様は、上述した第10の態様に係る情報処理装置において、
第2の管理プログラムが復号処理に用いる暗号鍵、もしくは当該暗号鍵の生成に利用される情報を、不揮発性メモリの第2の領域に格納するようにしたものである。
(12) 本発明の第12の態様は、上述した第1〜第11の態様に係る情報処理装置において、
第1の管理プログラムもしくは第2の管理プログラムが、復号アップデートファイルに含まれているアップデート用プログラムを、情報処理装置が起動時に実行するブート用プログラムを格納するための格納場所に書き込む処理を実行し、
CPUが、起動時に、上記アップデート用プログラムを実行することにより、アップデート処理を行うようにしたものである。
(13) 本発明の第13の態様は、上述した第1〜第11の態様に係る情報処理装置において、
第1の管理プログラムもしくは第2の管理プログラムが、復号アップデートファイルに含まれているアップデート用プログラムを、第1のOSプログラムの管理下においてアクセス可能な格納場所に書き込む処理を実行し、
CPUが、第1のOSプログラムの管理下において、アップデート用プログラムを実行することにより、アップデート処理を行うようにしたものである。
(14) 本発明の第14の態様は、上述した第1〜第13の態様に係る情報処理装置において、
第1属性のアプリケーションプログラムには、外部装置との間にVPN通信路を開設する処理を行うVPN開設アプリが含まれており、
外部通信手段が、暗号化アップデートファイルを上記VPN通信路を介して受信するようにしたものである。
(15) 本発明の第15の態様は、上述した第1〜第14の態様に係る情報処理装置において、
第1の管理プログラムが第1のOSプログラムに組み込まれているか、もしくは、第2の管理プログラムが第2のOSプログラムに組み込まれているか、または、その双方であるようにしたものである。
(16) 本発明の第16の態様は、上述した第1〜第14の態様に係る情報処理装置における第1の管理プログラムおよび第2の管理プログラムの双方を含むコンピュータプログラムを独立した製品として提供するようにしたものである。
(17) 本発明の第17の態様は、上述した第1〜第15の態様に係る情報処理装置を含むホームゲートウェイ装置を構成したものである。
本発明の情報処理装置によれば、ハイパーバイザープログラムによって、2系統のOSプログラムが並列実行される。ここで、第1のOSプログラムの管理下では、外部装置から送信されてきた暗号化アップデートファイルが受信され、第2のOSプログラムの管理下に引き渡される。そして、第2のOSプログラムの管理下において復号され、復号アップデートファイルが作成される。このように、暗号化アップデートファイルの復号は、第1のOSプログラムの管理下ではなく、第2のOSプログラムの管理下で行われるため、万一、第1のOSプログラムの管理下にある実行環境がマルウェアに感染していたとしても、暗号化アップデートファイルの復号処理は、当該マルウェアの影響から逃れることができる。このため、セキュアな環境下でアップデートを行うことが可能になる。
本発明の基本的な実施形態に係る情報処理装置および外部装置の構成を示すブロック図である。 図1に示す基本的な実施形態における通信路にVPN通信路を用いた、より実用的な実施形態の構成を示すブロック図である。 図2に示す実施形態におけるアップデート処理の手順を示す流れ図である。 図1もしくは図2に示す実施形態において、アップデートファイルの受け渡しをする方法のいくつかの実施例を示すブロック図である。 図1もしくは図2に示す実施形態において、アップデートファイルの受け渡しをする方法の更に別な実施例を示すブロック図である。 図5(b) に示す実施例におけるアップデート処理の手順を示す流れ図である。 識別情報UIDを利用して暗号鍵を生成する変形例を示すブロック図である。 内蔵不揮発性メモリ(フラッシュメモリ)のメモリ空間を示す図である。 本発明に係る情報処理装置を、ホームゲートウェイ装置として利用した実施例を示すブロック図である。
以下、本発明を図示する実施形態に基づいて説明する。
<<< §1. 本発明の基本的な実施形態 >>>
図1は、本発明の基本的な実施形態に係る情報処理装置100および外部装置200の構成を示すブロック図である。情報処理装置100は、たとえば、パソコン、スマートフォン、タブレット端末などの電子機器であり、CPUがプログラムを実行することにより情報処理機能を果たすことができる装置であれば、どのような装置でもかまわない。もちろん、通常、ユーザの操作対象にはならないホームゲートウェイ装置のような装置でもかまわない(後述する§5参照)。
図示のとおり、情報処理装置100は、CPU110と、メモリ120と、外部通信手段130とを備えている。もちろん、この他にも必要に応じて、ディスプレイ装置,キーボードやマウスなどの入力機器,各種センサなどを備えているケースもあるが、ここでは、本発明の構成に直接関連する構成要素のみを示す。
内蔵するメモリ120には、CPU110に実行させる第1のOSプログラムPaおよび第2のOSプログラムPbと、第1のOSプログラムPaの管理下においてCPU110に実行させる第1属性のアプリケーションプログラムAP1,AP2,Maと、第2のOSプログラムの管理下においてCPU110に実行させる第2属性のアプリケーションプログラムMbと、CPU110に第1のOSプログラムPaおよび第2のOSプログラムPbを並列実行させる処理を行うハイパーバイザープログラムPhと、が格納されている。
CPUを内蔵した一般的な情報処理装置は、特定のOSプログラムの管理下で、種々のアプリケーションプログラムを実行することにより、様々な処理機能を果たすことができる。通常、1台の情報処理装置には、1組のOSプログラムと、当該OSプログラムの管理下で動作するアプリケーションプログラムとが組み込まれることが多いが、複数のOSプログラムを組み込んで用いる工夫がなされる場合もある。たとえば、パソコンでは、予め2組のOSプログラムを組み込んでおき、起動時にいずれか一方を選択してブートする方式や、第1のOSプログラムの動作環境下に仮想マシンを構築し、第2のOSプログラムの動作をエミュレートする方式などが実用化されている。
ハイパーバイザープログラムPhも、1台の情報処理装置において複数のOSプログラムを動作させるために用意されたプログラムであり、ハードウェア上で直接動作する機能を有し、複数のOSプログラムをゲストOSとして並列動作させることができる。図1に示す例の場合、第1のOSプログラムPaおよび第2のOSプログラムPbは、いずれもハイパーバイザープログラムPhのゲストOSとしてインストールされており、ハイパーバイザープログラムPhの管理下において、両OSプログラムPa,Pbを同時に起動状態にしておくことが可能になる。
本発明に用いるハイパーバイザープログラムPhは、CPU110に、第1のOSプログラムPaおよび第2のOSプログラムPbを並列実行させる処理を行う機能をもったプログラムであれば、どのようなプログラムであってもかまわない。そのようなプログラムとしては、たとえば、株式会社SELTECH社(東京都渋谷区)から「FOXvisor」なる製品が販売されている(当該製品では、ハイパーバイザープログラムPhは、CPU110と同一のチップに組み込まれている)。
前述したとおり、第1属性のアプリケーションプログラムAP1,AP2,Maは、第1のOSプログラムPaの管理下で動作するプログラムであり、第2属性のアプリケーションプログラムMbは、第2のOSプログラムPbの管理下で動作するプログラムである。
図1に示す例では、第1属性のアプリケーションプログラムとして、アプリAP1,AP2がインストールされている例が示されている。これらアプリAP1,AP2は、この情報処理装置100に、本来の情報処理機能を実施させるためにインストールされたプログラムである。実用上は、より多数のアプリケーションプログラムがインストールされるが、ここでは、説明の便宜上、2組のアプリAP1,AP2のみがインストールされている例を示す。
一方、第1属性のアプリケーションプログラムには、アプリAP1,AP2の他に、第1の管理プログラムMaが含まれており、第2属性のアプリケーションプログラムには、第2の管理プログラムMbが含まれている。これら管理プログラムMa,Mbは、本発明においてセキュアなアップデート処理を実行するために組み込まれた専用のアプリケーションプログラムである。ここに示す実施例の場合、第2属性のアプリケーションプログラムは、第2の管理プログラムMbのみによって構成されている。
この図1に示す情報処理装置100において、ハイパーバイザープログラムPh、第1の管理プログラムMa、第2のOSプログラムPb、第2属性のアプリ(すなわち、第2の管理プログラムMb)は、セキュアなアップデート処理を実行する目的のために組み込まれた付加プログラムであり、本発明に係るセキュアなアップデート処理を実行する必要がない場合には、そもそもこれらの付加プログラムを組み込む必要はない。別言すれば、この情報処理装置100の本来の機能は、第1のOSプログラムPaと第1属性のアプリAP1,AP2とによって果たすことができ、上記付加プログラムは、第1のOSプログラムPaや第1属性のアプリAP1,AP2に対するアップデート処理をセキュアな環境下で行うために導入されたプログラムと言うことができる。
本発明を実施する上では、図示のとおり、メモリ120の記憶領域に共有メモリ領域121を設定しておく必要がある。この共有メモリ領域121は、第1のOSプログラムPaの管理下と第2のOSプログラムPbの管理下との双方においてアクセス可能な領域である。したがって、第1のOSプログラムPaの管理下で動作する第1の管理プログラムMaによって共有メモリ領域121をアクセスすることも可能であるし、第2のOSプログラムPbの管理下で動作する第2の管理プログラムMbによって共有メモリ領域121をアクセスすることも可能である。このような共有メモリ領域121を設定する理由は、後述するように、第1の管理プログラムMaと第2の管理プログラムMbとの間でデータの受け渡しを行うためである。
ハイパーバイザープログラムPhは、第1のOSプログラムPaと第2のOSプログラムPbとの双方を管理下におき、両OSプログラムの並列動作を制御する機能を有している。したがって、共有メモリ領域121は、このハイパーバイザープログラムPhの機能によって設定することができる。
一方、外部通信手段130は、この情報処理装置100の外部に設けられた何らかの装置と通信を行う装置である。図1では、本発明に係る固有のアップデート処理を説明する便宜上、外部装置200としてのアップデートサーバに対する通信を行う例が示されている。アップデートサーバ200は、情報処理装置100内の第1のOSプログラムPaやアプリケーションプログラムAP1,AP2についてアップデート処理(プログラムの更新処理)を行うために必要なアップデートファイルF1を配信する役割を果たす。アップデートファイルF1内には、アップデート用プログラムが含まれており、このアップデート用プログラムをCPU110に実行させることにより、所望のアップデート処理が行われる。
アップデートサーバ200から情報処理装置100に対するアップデートファイルF1の配信は、情報処理装置100からアップデートサーバ200に対して配信要求を行う形式(Pull型配信)で行ってもよいし、アップデートサーバ200から自主的に情報処理装置100に対して配信する形式(Push型配信)で行ってもよい。情報処理装置100側で、アップデートファイルF1を受信する処理は、第1の管理プログラムMaによって行われる。
ここで重要な点は、アップデートファイルF1は、そのままの形態ではなく、暗号化して送信される点である。図示のとおり、アップデートサーバ200内には、所定の暗号鍵Kが用意されており、この暗号鍵Kを用いて、アップデートファイルF1を暗号化し、暗号化アップデートファイルF2を生成する処理が行われる。実用上は、AES(Advanced Encryption Standard)などの堅固な暗号方式を用いて暗号化を行うのが好ましい。アップデートサーバ200から情報処理装置100に対しては、この暗号化アップデートファイルF2が送信される。
こうして送信されてきた暗号化アップデートファイルF2は、情報処理装置100の外部通信手段130によって受信される。この受信処理は、上述したように、第1の管理プログラムMaによって行われる。第1の管理プログラムMaは、外部通信手段130が受信した暗号化アップデートファイルF2を共有メモリ領域121に書き込む処理を実行する。図1に示す矢印は、このような暗号化アップデートファイルF2の流れを示している。
なお、暗号化アップデートファイルF2の受信処理は、必ずしも第1の管理プログラムMaに担わせる必要はなく、第1属性の任意のアプリケーションプログラムに担わせてもよい。たとえば、アプリAP1がWebブラウザであった場合は、このWebブラウザの機能により、アップデートサーバ200に配信要求を出し、送信されてきた暗号化アップデートファイルF2を受信することが可能である。いずれの場合も、外部通信手段130は、外部装置200から送信されてきた、所定の暗号鍵Kを用いて暗号化された暗号化アップデートファイルF2を、第1のOSプログラムPaの管理下で受信することになる。そして、受信した暗号化アップデートファイルF2は、第1のOSプログラムPaの管理下で動作する第1の管理プログラムMaによって、共有メモリ領域121に書き込まれる。したがって、ここまでの処理は、すべて第1のOSプログラムPaの管理下で実行されることになる。
続いて、ハイパーバイザープログラムPhの機能により、システムの管理が第2のOSプログラムPbに切り替えられる。そして、第2のOSプログラムPbの管理下で動作する第2の管理プログラムMbによって、共有メモリ領域121に書き込まれていた暗号化アップデートファイルF2が読出される。第2の管理プログラムMbは、読み出した暗号化アップデートファイルを暗号鍵K′を用いて復号する機能を有しており、復号アップデートファイルF3を生成する復号処理を実行し、更に、生成した復号アップデートファイルF3を所定の格納場所に書き込む処理を実行する。
図1に示す矢印は、このような暗号化アップデートファイルF2および復号アップデートファイルF3の流れを示している。なお、図1では、便宜上、復号アップデートファイルF3の書き込み先が、情報処理装置100の外部になるように描かれているが、復号アップデートファイルF3の書き込み先は、情報処理装置100の内部であっても外部であってもかまわない。この書き込み先についての詳細は、後の§3において詳述する。
ここで、第2の管理プログラムMbによって実行される復号処理に用いられる暗号鍵K′を、アップデートサーバ200における暗号化に用いられた暗号鍵Kと同一の鍵にしておき、暗号化処理と逆のプロセスを行えば、元のアップデートファイルF1と同じ内容の復号アップデートファイルF3が得られ、正しい復号が行われることになる。そこで、この復号アップデートファイルF3に含まれているアップデート用プログラムをCPU110に実行させれば、所望のアップデート処理を行うことができる。
もっとも、第2の管理プログラムMbによって実行される復号処理に用いる暗号鍵K′は、必ずしもアップデートサーバ200側での暗号化処理に用いた暗号鍵Kと同一である必要はなく、正しい復号が可能となるような特定の関係をもった鍵であればよい。たとえば、公開鍵暗号方式では特定の関係をもった一対の鍵が用いられ、一方の鍵で暗号化したものを、他方の鍵で正しく復号することができる。したがって、アップデートサーバ200側で、公開鍵暗号方式に基づく暗号化処理を実行した場合、暗号化に用いる暗号鍵Kと復号に用いる暗号鍵K′とは、公開鍵暗号方式における一対の対応鍵の関係をもっていればよい。
要するに、第2の管理プログラムMbは、アップデートサーバ200側での暗号化処理に用いる暗号鍵、もしくは、当該暗号鍵に関連する所定の暗号鍵を用いて復号処理を行えばよい。図1に示す破線は、このような一対の暗号鍵が特定の関連性を有していることを示すものである。
なお、第2の管理プログラムMbの格納場所や、第2の管理プログラムMbが復号処理に利用する暗号鍵K′の格納場所は、図示の例のように、共有メモリ領域121以外の領域、すなわち、第2のOSプログラムの管理下でのみアクセス可能な領域(第1のOSプログラムの管理下ではアクセスできないセキュアな領域)に格納しておくようにするのが好ましい。そうすれば、第1のOSプログラムPaの管理下にある領域がマルウェアに感染したとしても、第2の管理プログラムMbや暗号鍵K′をセキュアな状態に保つことができる。
本発明に係る情報処理装置100の重要な特徴は、ハイパーバイザープログラムPhを組み込むことにより、第1のOSプログラムPaと第2のOSプログラムPbとを並列実行させる環境を構築した点にある。そのため、通常は、第1のOSプログラムPaの管理下で第1属性のアプリケーションプログラムAP1,AP2を実行させ、情報処理装置100としての本来の機能を果たさせることができる。一方、第1のOSプログラムPaや第1属性のアプリケーションプログラムAP1,AP2に対してアップデート処理を行う必要が生じたときには、第2のOSプログラムPbの管理下で第2の管理プログラムMbを実行させ、暗号化アップデートファイルF2の復号処理を行うことができる。
情報処理装置100が第1のOSプログラムPaの管理下で通常の処理(アップデート処理以外の処理)を行っている状態では、外部通信手段130により、外部の様々な装置と通信を行うため、マルウェアに感染する可能性がある。もちろん、図示の例の場合も、アップデートサーバ200が偽物であった場合、外部通信手段130が受信するファイルF2は偽のファイルということになる。このように、第1のOSプログラムPaの管理下でマルウェアに感染したとしても、その影響が、異なるOSである第2のOSプログラムPbの実行環境に及ぶ可能性は低い。
すなわち、両OSプログラムPa,Pb間では、共有メモリ領域121を介してデータの受け渡しが行われるものの、各OSプログラムの実行環境は完全に独立しているため、第1のOSプログラムPaの実行環境下に寄生したマルウェアが第2のOSプログラムPbの実行環境下に何らかの影響を及ぼす可能性は非常に低い。また、異なるOSプログラムでは、異なるプログラムコードが用いられるため、第1のOSプログラムPa用に作成されたマルウェアは、通常、第2のOSプログラムPbに害を及ぼすことはできない。
したがって、情報処理装置100の通常の処理を第1のOSプログラムPaの管理下で行い、アップデート処理を行うときにのみ第2のOSプログラムPbの管理下に切り替える、という運用を採用すれば、第2のOSプログラムPbの実行環境は、極めてセキュアな状態に維持されることになる。本発明の特徴は、このように、第2のOSプログラムPbの実行環境がセキュアな状態に保たれることを利用して、外部装置200から送信されてきた暗号化アップデートファイルF2の復号処理を、このセキュアな第2のOSプログラムPbの実行環境で実行することにより、セキュアな環境下でのアップデートを実現する点にある。
具体的には、第1のOSプログラムPaもしくは第1属性のアプリケーションプログラムAP1,AP2に対するアップデート処理が必要になった場合、まず、外部装置200(アップデートサーバ)側で、アップデート処理に必要なアップデートファイルF1(アップデート処理を実行するプログラムを含むファイル)を暗号化して暗号化アップデートファイルF2を作成し、これを情報処理装置100に送信する。一方、情報処理装置100側では、この暗号化アップデートファイルF2を第1のOSプログラムPaの管理下で受信し、第1の管理プログラムMaによって、受信した暗号化アップデートファイルF2を共有メモリ領域121に書き込む処理を行う。
第1の管理プログラムMaと第2の管理プログラムMbとは、ハイパーバイザープログラムPhを介して信号のやりとりを行うことができるので、第1の管理プログラムMaにより暗号化アップデートファイルF2を共有メモリ領域121へ書き込む処理が完了したら、その旨を第2の管理プログラムMbに通知することができる。当該通知は、第2の管理プログラムMbに対する「復号処理要求」として機能し、第2の管理プログラムMbは、当該通知を受け取った後、共有メモリ領域121に書き込まれている暗号化アップデートファイルF2を読み出し、暗号鍵K′を用いた復号処理を行って復号アップデートファイルF3を生成し、これを所定の格納場所に書き込む処理を行うことになる。
第2の管理プログラムMbが復号処理に成功した場合、CPU110は、この復号アップデートファイルF3に含まれているアップデート用プログラムを実行することにより、第1属性のアプリケーションプログラムAP1,AP2もしくは第1のOSプログラムPaに対するアップデート処理を、第1のOSプログラムPaの管理下もしくはブートプロセスで実行する。
そのため、第2の管理プログラムMbは、復号アップデートファイルF3の書き込みが完了したら、その旨をハイパーバイザープログラムPhを介して第1の管理プログラムMaに通知する。当該通知は、第1の管理プログラムMaに対する「復号処理完了報告」として機能し、当該通知を受けた第1の管理プログラムMaは、第1のOSプログラムPaの管理下もしくはブートプロセスで、所定の格納場所に書き込まれた復号アップデートファイルF3(元のアップデートファイルF1と同じ内容)を用いたアップデート処理が実行されるよう必要な処理を実行する。
たとえば、ディスプレイ画面上に「アップデートの準備が完了しました。アップデート用プログラムを実行して下さい。」のようなメッセージを表示させて、ユーザにアップデート用プログラムの実行を促すような処理を行ってもよい(第1属性のアプリケーションプログラムAP1やAP2についてのアップデートを行う場合)。あるいは、「アップデートの準備が完了しました。装置を再起動して下さい。」のようなメッセージを表示させて、ユーザに再起動を促すような処理を行い、ブートプロセスが実行されるようにしてもよい(第1のOSプログラムPaについてのアップデートを行う場合)。もちろん、ユーザの確認操作を待たずに、復号アップデートファイルF3に含まれているアップデート用プログラムの実行やブートプロセスを自動的に行うようにしてもよい。
なお、第2の管理プログラムMbが復号処理に失敗した場合は、その旨をハイパーバイザープログラムPhを介して第1の管理プログラムMaに報告する。第1の管理プログラムMaは、何らかのエラー処理(たとえば、ユーザに対して、アップデートに失敗した旨を提示する処理)を行うことになり、アップデート処理は中止される。
結局、本発明に係る情報処理装置100の場合、外部装置200からの暗号化アップデートファイルF2の入手は、第1のOSプログラムPaの管理下で行うが、暗号化アップデートファイルF2の復号処理は、第2のOSプログラムPbに引き渡した後、第2のOSプログラムPbの管理下のセキュアな環境で行うことになる。そして、この復号処理によって得られた復号アップデートファイルF3を用いたアップデート処理は、第1のOSプログラムPaの管理下もしくはブートプロセスで行う、という手順が踏まれる。
このように、暗号化アップデートファイルF2の復号処理を、第2のOSプログラムPbの管理下で行う(別言すれば、第2のOSプログラムPbの管理下で動作する第2の管理プログラムMbによって行う)ことは、アップデート処理の安全性を確保する上で非常に重要である。前述したとおり、この情報処理装置100は、第1のOSプログラムPaの管理下で第1属性のアプリケーションプログラムAP1,AP2を実行させることにより本来の機能を果たす。このため、第1のOSプログラムPaの実行環境はマルウェアに感染するおそれがあり、ノンセキュアな領域に置かれていることになる。これに対して、第2のOSプログラムPbの実行環境はマルウェアに感染する可能性が極めて低く、セキュアな領域に置かれていることになる。本発明では、暗号化アップデートファイルF2の復号処理が、このセキュアな領域で実行されるため、マルウェアの影響を極力回避することが可能になる。
本発明に固有の作用効果は、ノンセキュアな領域(第1のOSプログラムPaの管理下)で復号処理を行った場合の危険性を考えれば、容易に理解できよう。たとえば、第1のOSプログラムPaの実行環境がマルウェアに感染している状態で、当該第1のOSプログラムPaの管理下で復号処理を行った場合、たとえ受信した暗号化アップデートファイルF2が正規のファイルであったとしても、復号処理で得られる復号アップデートファイルF3が正規のファイルであることは保証できない。したがって、当該復号アップデートファイルF3に含まれているアップデート用プログラムを実行することは非常に危険である。
本発明に係る情報処理装置100では、復号処理は、セキュアな環境にある第2のOSプログラムPbの管理下で行われるため、暗号化アップデートファイルF2が正規のファイルであれば、復号処理で得られる復号アップデートファイルF3も正規のファイルになる。したがって、当該復号アップデートファイルF3に含まれているアップデート用プログラムを実行すること自体には、何ら危険性はない。
また、受信した暗号化アップデートファイルが偽のファイルであった場合にも、本発明は危険を回避する作用効果を奏することができる。たとえば、正規のアップデートサーバ200の正規サイトにアクセスしているつもりであっても、第1のOSプログラムPaの実行環境がマルウェアに感染していると、偽のサイトに誘導されてしまうことがある。この場合、外部通信手段130が受信する暗号化アップデートファイルF2(false)は偽のファイルということになる。
この場合、復号処理に用いる暗号鍵K′が秘密状態に維持されている限り、このような偽の暗号化アップデートファイルF2(false)は復号に失敗するので、偽のアップデート用プログラムが実行されてしまうことを未然に防ぐことができる。ところが、第1のOSプログラムPaの実行環境がマルウェアに感染していると、第1のOSプログラムPaの管理下に格納されている暗号鍵K′は漏洩する危険性があり、悪意をもった者は、この漏洩した暗号鍵K′によって正しく復号することができる偽の暗号化アップデートファイルF2(false)を作成することが可能になる。この場合、偽のアップデート用プログラムが実行されてしまうことになる。
本発明に係る情報処理装置100では、復号処理は、セキュアな環境にある第2のOSプログラムPbの管理下で行われるため、たとえ第1のOSプログラムPaの実行環境がマルウェアに感染していたとしても、当該マルウェアの影響を受けることがない。したがって、暗号鍵K′を、図示の例のように、共有メモリ領域121以外の領域、すなわち、第2のOSプログラムの管理下でのみアクセス可能な領域(第1のOSプログラムの管理下ではアクセスできないセキュアな領域)に格納しておけば、マルウェアの影響を受けて外部に漏洩することを防ぐことができる。
このように、本発明に係る情報処理装置100では、ハイパーバイザープログラムPhを利用して、本来の機能実行に必要な第1のOSプログラムPaの他に、アップデート処理時に利用する第2のOSプログラムPbを組み込んでセキュアな実行環境を構築し、このセキュアな実行環境で暗号化アップデートファイルF2の復号処理を行うようにしたため、従来装置に比べて、偽のアップデート用プログラムが実行される危険性を低減することができ、セキュアな環境下でのアップデートが可能になる。
なお、図1に示す実施例では、第2属性のアプリケーションプログラムとして、第2の管理プログラムMbのみがインストールされているが、必要に応じて、別なアプリケーションプログラムを第2属性のアプリケーションプログラムとしてインストールして利用するようにしてもかまわない。ただ、第2属性のアプリケーションプログラムの数や種類が増えれば増えるほど、第2のOSプログラムPbの実行環境がマルウェアに感染する可能性も高まるので、実用上は、第2属性のアプリケーションプログラムとしては、図示の実施例のように、第2の管理プログラムMbなど、必要最低限のプログラムをインストールするのが好ましい。
結局、図1の実施例に係る情報処理装置100は、第1のOSプログラムPaの下で第1属性のアプリケーションプログラムAP1,AP2等を実行する従来装置に、ハイパーバイザープログラムPhを利用して第2のOSプログラムPbを組み込むようにし、上述した機能を有する第1の管理プログラムMaおよび第2の管理プログラムMbをインストールすることにより実現することができる。各OSプログラムPa,PbやハイパーバイザープログラムPhとしては、市販のプログラムを利用することができるので、実用上は、第1の管理プログラムMaおよび第2の管理プログラムMbを用意すれば、本発明の実施が可能である。
また、図1に示す実施例では、第1の管理プログラムMaおよび第2の管理プログラムMbを、各OSプログラムPa,Pbとは別個独立したプログラムとして用意しているが、第1の管理プログラムPaを、第1のOSプログラムPaに組み込むことにより、第1のOSプログラムPaの一機能として用意することもできるし、同様に、第2の管理プログラムPbを、第2のOSプログラムPbに組み込むことにより、第2のOSプログラムPbの一機能として用意することもできる。
<<< §2. 本発明の実用的な実施形態 >>>
ここでは、本発明のより実用的な実施形態を述べる。図2は、図1に示す基本的な実施形態における情報処理装置100と外部装置200との間の通信路として、VPN(Virtual Private Network)通信路を用いた、より実用的な実施形態の構成を示すブロック図である。
図2に示すシステムの基本構成は、図1に示すシステムの基本構成とほぼ同じであるが、外部装置200から情報処理装置100への暗号化アップデートファイルF2の送信が、VPN通信路を介して行われる点が異なる。そのため、情報処理装置100側では、第1属性のアプリケーションプログラムとして、外部装置200との間にVPN通信路を開設する処理を行うVPN開設アプリVPN1が用意されており(図1に示すアプリAP2として、VPN開設アプリVPN1が用意されている)、外部装置側では、同様にVPN通信路を開設する処理を行うVPN開設アプリVPN2が用意されている。更に、このVPN通信路を管理運用するためのVPNサーバ300が設けられている。したがって、図示のVPN通信路は、VPNサーバ300とVPN開設アプリVPN1,VPN2の協働作業により構築され、外部通信手段130は、暗号化アップデートファイルF2をこのVPN通信路を介して受信することになる。
§1で述べたとおり、暗号化アップデートファイルF2は暗号化されたファイルであり、悪意をもった者による攻撃によって通信中に改竄を受けるリスクは低減されているが、通信路自体をVPN通信路とすることにより、そのリスクを更に低減し、安全な受け渡しを行うことができるようになる。このようなVPNの構築方法やVPNサーバ300の機能については、既に公知の技術であるため、ここでは詳しい説明は省略する。
図3は、図2に示す実施形態において、外部装置200(アップデートサーバ)内に用意されているアップデートファイルF1を用いて、情報処理装置100内にインストールされている第1のOSプログラムPaもしくは第1属性のアプリケーションプログラムAP1,VPN1等に対するアップデート処理を行う手順を示す流れ図である。各手順を示すブロックの右側に付記された括弧書きの符号は、当該ブロック内の手順実施に関与する構成要素を示している。
まず、ステップS1において、VPNサーバ300による認証処理が実行される。この処理は、情報処理装置100と外部装置200との間にVPN通信路を開設するための準備段階の処理である。VPN通信路の開設にあたっては、VPNサーバ300がサーバ装置、情報処理装置100および外部装置200がそれぞれクライアント装置という関係になり、ステップS1の処理は、VPNサーバ300が、そのクライアント装置である情報処理装置100および外部装置200ならびにそのユーザを正規のものとして認証する処理と言うことができる。
具体的には、情報処理装置100内にVPN開設アプリVPN1用のデータとして用意されているデバイス証明書D1,クライアント証明書C1,クライアント秘密鍵K1を用いることにより、VPNサーバ300が情報処理装置100およびそのユーザを正規のものとして認証し、同様に、外部装置200内にVPN開設アプリVPN2用のデータとして用意されているデバイス証明書D2,クライアント証明書C2,クライアント秘密鍵K2を用いることにより、VPNサーバ300が外部装置200およびそのユーザを正規のものとして認証する処理が行われる。
こうして、VPNサーバ300による認証処理が完了すると、続くステップS2において、図2に示すように、情報処理装置100と外部装置200との間にVPN通信路を開設する処理が行われる。VPNサーバ300は、当該VPN通信路を管理する役割を果たす。
次のステップS3では、外部装置200側において、情報処理装置100に送信するためのアップデートファイルF1を暗号化する処理が行われる。図2には、暗号鍵Kを用いた暗号化処理によってアップデートファイルF1を暗号化することにより暗号化アップデートファイルF2を生成する例が示されている。この暗号化アップデートファイルF2は、続くステップS4において、ステップS2で開設されたVPN通信路を介して送信され、情報処理装置100によって受信される。このようにVPN通信路を介した送受信により、暗号化アップデートファイルF2の安全な受け渡しが可能になる。
そして、ステップS5では、情報処理装置100内の第1の管理プログラムMaによって、受信した暗号化アップデートファイルF2を共有メモリ領域121に書き込む処理が行われ、続くステップS6では、第2の管理プログラムMbによって、暗号化アップデートファイルF2を共有メモリ領域121から読み出し、これを暗号鍵K′を用いて復号する復号処理が行われる。この復号処理によって得られた復号アップデートファイルF3は、ステップS7において、所定の格納場所に書き込まれる。最後のステップS8では、CPU110によって、当該格納場所に書き込まれている復号アップデートファイルF3が実行され、目的となるアップデート処理が完了する。
§1で述べたとおり、ステップS4,S5の処理が第1のOSプログラムPaの管理下で行われるのに対して、ステップS6,S7の処理は、よりセキュアな第2のOSプログラムPbの管理下で行われることになる。なお、ステップS5で用いる共有メモリ領域121の配置場所、ステップS7における復号アップデートファイルF3の格納場所や、ステップS8におけるアップデート処理の具体的な手順については、以下の§3において具体例を挙げながら説明する。
<<< §3. 各アップデートファイルの受け渡し方法 >>>
図1および図2に示す実施形態では、外部通信手段130が受信した暗号化アップデートファイルF2を共有メモリ領域121を介して受け渡し、復号処理によって得られた復号アップデートファイルF3を所定の格納場所へ書き込んだ後、これを実行してアップデート処理を行うことになる。ここでは、暗号化アップデートファイルF2の受け渡しに利用される共有メモリ領域121や、復号アップデートファイルF3の書き込み先となる所定の格納場所について、いくつかの実施例を示しながら、これらアップデートファイルF2,F3の具体的な受け渡し方法を説明する。
一般的な情報処理装置には、揮発性メモリと不揮発性メモリとが併用されている。ここで揮発性メモリは、通常、RAMによって構成され、CPUがプログラムを実行する際の作業領域として利用される。一方、不揮発性メモリは、フラッシュメモリ等によって構成され、プログラムやデータの格納領域として利用される。
図1および図2に示す実施形態におけるメモリ120も、実際には、揮発性メモリ(RAM)と不揮発性メモリ(フラッシュメモリ)とを内蔵している。揮発性メモリ(RAM)は、CPU110が種々のプログラムを実行する際の作業領域として利用され、不揮発性メモリ(フラッシュメモリ)は、第1のOSプログラムPa、第2のOSプログラムPb、第1属性のアプリケーションプログラムAP1,AP2,Ma、第2属性のアプリケーションプログラムMb、ハイパーバイザープログラムPh、を格納する格納領域として利用される。
ここで、共有メモリ領域121は、揮発性メモリ(RAM)の領域に設けることもできるし、不揮発性メモリ(フラッシュメモリ)の領域に設けることもできる。同様に、復号アップデートファイルF3を書き込む格納場所も、揮発性メモリ(RAM)の領域に設けることもできるし、不揮発性メモリの領域(フラッシュメモリ)に設けることもできる。以下、メモリ120の具体的な利用形態について、いくつかの実施例を述べることにする。
図4は、図1もしくは図2に示す実施形態において、アップデートファイルの受け渡しをする方法のいくつかの実施例を示すブロック図である。いずれの実施例も、情報処理装置100の内蔵メモリ120を用いて、暗号化アップデートファイルF2および復号アップデートファイルF3の受け渡し(第1のOSプログラムPaの管理下と第2のOSプログラムPbの管理下との間の受け渡し)が行われる。
図4(a) は、メモリ120の揮発性メモリ(RAM)内に共有メモリ領域122を設け、更に、この共有メモリ領域122を、復号アップデートファイルF3を書き込む格納場所として利用した例を示すブロック図である。この実施例の場合、図3におけるステップS5において、第1の管理プログラムMaは、受信した暗号化アップデートファイルF2を、この揮発性メモリ内の共有メモリ領域122に書き込む処理を実行する。そしてステップS6では、第2の管理プログラムMbが、共有メモリ領域122から暗号化アップデートファイルF2を読み出して復号し、続くステップS7では、第2の管理プログラムMbが、得られた復号アップデートファイルF3を、揮発性メモリ内の共有メモリ領域122に書き込む処理を実行する。
アップデート処理に用いる復号アップデートファイルF3は、揮発性メモリ内の共有メモリ領域122に書き込まれているので、CPU110は、この揮発性メモリから、復号アップデートファイルF3に含まれているアップデート用プログラムを読み出し、これを実行することによりアップデート処理を行うことになる。共有メモリ領域122は、揮発性メモリ(RAM)内の領域であるため、情報処理装置100の電源がOFFにされたり、再起動によって揮発性メモリの内容が初期化されたりすると、そこに書き込まれていた復号アップデートファイルF3は失われてしまうため、アップデート処理を行うことができない。
一般的な情報処理装置の場合、OSプログラムに対してアップデートを行う場合、一旦、電源をOFFにしたり、再起動のプロセスを行ったりする必要がある。このような情報処理装置の場合、図4(a) に示す実施例では、OSプログラムについてのアップデートを行うことはできない。したがって、この図4(a) に示す実施例は、主に、アプリケーションプログラムのアップデートに適した実施例ということになる。
これに対して、図4(b) は、メモリ120の不揮発性メモリ(フラッシュメモリ)内に共有メモリ領域123を設け、更に、この共有メモリ領域123を、復号アップデートファイルF3を書き込む格納場所として利用した例を示すブロック図である。この実施例の場合、図3におけるステップS5において、第1の管理プログラムMaは、受信した暗号化アップデートファイルF2を、この不揮発性メモリ内の共有メモリ領域123に書き込む処理を実行する。そしてステップS6では、第2の管理プログラムMbが、共有メモリ領域123から暗号化アップデートファイルF2を読み出して復号し、続くステップS7では、第2の管理プログラムMbが、得られた復号アップデートファイルF3を、不揮発性メモリ内の共有メモリ領域123に書き込む処理を実行する。
アップデート処理に用いる復号アップデートファイルF3は、不揮発性メモリ内の共有メモリ領域123に書き込まれているので、CPU110は、この不揮発性メモリから、復号アップデートファイルF3に含まれているアップデート用プログラムを読み出し、これを実行することによりアップデート処理を行うことになる。共有メモリ領域123は、不揮発性メモリ(フラッシュメモリ)内の領域であるため、情報処理装置100の電源がOFFにされたり、再起動によって揮発性メモリ(RAM)の内容が初期化されたりしても、そこに書き込まれていた復号アップデートファイルF3が失われることはない。したがって、この図4(b) に示す実施例は、アプリケーションプログラムのアップデートのみならず、OSプログラムのアップデートにも適した実施例ということになる。
一方、図4(c) は、メモリ120の揮発性メモリ(RAM)124a内と不揮発性メモリ(フラッシュメモリ)124b内との双方に跨るように共有メモリ領域124を設けた例を示すブロック図である。この実施例の場合、暗号化アップデートファイルF2の受け渡し場所としては、揮発性メモリ(RAM)内の共有メモリ領域124aが利用され、復号アップデートファイルF3を書き込む格納場所としては、不揮発性メモリ(フラッシュメモリ)内の共有メモリ領域124bが利用される。
したがって、この実施例の場合、図3におけるステップS5において、第1の管理プログラムMaは、受信した暗号化アップデートファイルF2を、揮発性メモリ(RAM)内の共有メモリ領域124aに書き込む処理を実行する。そしてステップS6では、第2の管理プログラムMbが、共有メモリ領域124aから暗号化アップデートファイルF2を読み出して復号し、続くステップS7では、第2の管理プログラムMbが、得られた復号アップデートファイルF3を、不揮発性メモリ内の共有メモリ領域124bに書き込む処理を実行する。
図4(b) に示す例と同様に、アップデート処理に用いる復号アップデートファイルF3は、不揮発性メモリ内の共有メモリ領域124bに書き込まれているので、CPU110は、この不揮発性メモリから、復号アップデートファイルF3に含まれているアップデート用プログラムを読み出し、これを実行することによりアップデート処理を行うことになる。共有メモリ領域124bは、不揮発性メモリ(フラッシュメモリ)内の領域であるため、情報処理装置100の電源がOFFにされたり、再起動によって揮発性メモリ(RAM)の内容が初期化されたりしても、そこに書き込まれていた復号アップデートファイルF3が失われることはない。
したがって、この図4(c) に示す実施例も、図4(b) に示す実施例と同様に、アプリケーションプログラムのアップデートのみならず、OSプログラムのアップデートにも適した実施例ということになる。また、一般に、揮発性メモリ(RAM)に対するデータの読み書きは、不揮発性メモリ(フラッシュメモリ)に対するデータの読み書きよりも高速に行うことができるので、暗号化アップデートファイルF2の書込処理および読出処理に関しては、図4(c) に示す実施例の方が図4(b) に示す実施例よりも高速化できるという利点が得られる。
以上、図4に示した3つの実施例は、いずれも情報処理装置100の内蔵メモリ120を用いて、暗号化アップデートファイルF2および復号アップデートファイルF3の受け渡し(第1のOSプログラムPaの管理下と第2のOSプログラムPbの管理下との間の受け渡し)を行う例であるが、アップデートファイルの受け渡し場所は、必ずしも情報処理装置100の内蔵メモリ120である必要はなく、外部メモリを受け渡し場所として用いてもかまわない。
図5(a) は、暗号化アップデートファイルF2の受け渡し場所として、内蔵メモリ120内の揮発性メモリ(RAM)に設けられた共有メモリ領域122を用い、復号アップデートファイルF3の受け渡し場所として、不揮発性の外部メモリ400を用いた実施例を示すブロック図である。この図5(a) では、説明の便宜上、情報処理装置100を破線のブロックで示してある(図5(b) も同様)。図1,図2に示すとおり、情報処理装置100には、メモリ120以外にも種々の構成要素が存在するが、ここではこれらの構成要素の図示は省略されている。
外部メモリ400は、図において、情報処理装置100の外部に描かれているとおり、情報処理装置100の内部構成要素ではなく、必要に応じて、情報処理装置100に外付けされる不揮発性メモリであり、たとえば、USBの規格で情報処理装置100に対して装着可能なフラッシュメモリ(いわゆるUSBメモリ)等を用いることができる。
情報処理装置100は、この不揮発性の外部メモリ400を装着して、この外部メモリ400に対して情報の書き込みおよび読み出しを行う機能を有している。また、この外部メモリ400の少なくとも一部の記憶領域は、第1のOSプログラムPaの管理下と第2のOSプログラムPbの管理下との双方においてアクセスが可能な共通アクセス領域410を構成している。なお、この共通アクセス領域410は、両OSプログラムPa,Pbの双方からアクセス可能なメモリ領域という点において、「共有メモリ領域」の一種であるが、この図5に示す実施例では、説明の便宜上、両OSプログラムPa,Pbの双方からアクセス可能なメモリ領域のうち、情報処理装置100の内蔵メモリ120に設けられた領域を「共有メモリ領域」と呼び、外部メモリ400に設けられた領域を「共通アクセス領域」と呼んで区別することにする。
図5(a) に示す実施例の場合、情報処理装置100の内蔵メモリ120の揮発性メモリ(RAM)内に共有メモリ領域122が設けられている。この共有メモリ領域122は、暗号化アップデートファイルF2の受け渡し場所として利用され、外部メモリ400内の共通アクセス領域410は、復号アップデートファイルF3の受け渡し場所として利用される。
具体的には、この実施例の場合、図3におけるステップS5において、第1の管理プログラムMaは、受信した暗号化アップデートファイルF2を、揮発性メモリ(RAM)内の共有メモリ領域122に書き込む処理を実行する。そしてステップS6では、第2の管理プログラムMbが、共有メモリ領域122から暗号化アップデートファイルF2を読み出して復号し、続くステップS7では、第2の管理プログラムMbが、得られた復号アップデートファイルF3を、外部メモリ400内の共通アクセス領域410に書き込む処理を実行する。
この図5(a) に示す実施例の場合、アップデート処理に用いる復号アップデートファイルF3は、外部メモリ400内の共通アクセス領域410に書き込まれているので、CPU110は、この共通アクセス領域410から、復号アップデートファイルF3に含まれているアップデート用プログラムを読み出し、これを実行することによりアップデート処理を行うことになる。共通アクセス領域410は、不揮発性の外部メモリ400(たとえば、USBメモリ)内の領域であるため、情報処理装置100の電源がOFFにされたり、再起動されたりしても、そこに書き込まれていた復号アップデートファイルF3が失われることはない。
したがって、この図5(a) に示す実施例も、図4(b) ,図4(c) に示す実施例と同様に、アプリケーションプログラムのアップデートのみならず、OSプログラムのアップデートにも適した実施例ということになる。もちろん、暗号化アップデートファイルF2は、揮発性メモリ(RAM)内の共有メモリ領域122を介して受け渡しされるので、暗号化アップデートファイルF2の書込処理および読出処理は高速化できる。
図5(b) は、最終的なアップデート処理に用いられる復号アップデートファイルF3を、不揮発性の外部メモリ400に書き出すという点において、上述した図5(a) の実施例と共通した手法を採用している。ただ、内蔵メモリ120内の揮発性メモリ(RAM)に設けられた共有メモリ領域122は、暗号化アップデートファイルF2の受け渡し場所として用いられるとともに、復号アップデートファイルF3の受け渡し場所としても用いられ、外部メモリ400は、この共有メモリ領域122に書き込まれた復号アップデートファイルF3の退避場所として利用される。
別言すれば、この図5(b) に示す実施例は、図4(a) に示す実施例の問題点を解決するための変形例というべきものである。すなわち、図4(a) に示す実施例では、最終的なアップデート処理に用いられる復号アップデートファイルF3が、揮発性メモリ(RAM)内の共有メモリ領域122に書き込まれるため、情報処理装置100の電源がOFFにされたり、再起動によって揮発性メモリの内容が初期化されたりすると、そこに書き込まれていた復号アップデートファイルF3は失われてしまうという問題が生じていた。
この図5(b) に示す実施例では、揮発性メモリ(RAM)内の共有メモリ領域122に書き込まれた復号アップデートファイルF3を、第1の管理プログラムMaによって不揮発性の外部メモリ400に書き出すようにし、復号アップデートファイルF3が失われないように退避する措置が取られる。したがって、上述した図5(a) の実施例と同様に、アプリケーションプログラムのアップデートのみならず、OSプログラムのアップデートにも利用することができる。
具体的には、この実施例の場合、図5(b) に示すとおり、内蔵メモリ120の揮発性メモリ(RAM)内に共有メモリ領域122が設けられている。また、図に破線のブロックで示されている情報処理装置100は、不揮発性の外部メモリ400(たとえば、USBメモリ)を装着して、第1のOSプログラムPaの管理下においてこの外部メモリ400に対して情報の書き込みおよび読み出しを行う機能を有している。なお、この実施例の場合、外部メモリ400に対する読み書きは、第1のOSプログラムPaの管理下もしくはブートプロセスで行われるため、図5(a) に示す実施例のように、共通アクセス領域410を設ける必要はない。
この図5(b) に示す実施例におけるアップデートの処理手順は、図4(a) に示す実施例とほぼ同じである。すなわち、まず、第1の管理プログラムMaが、受信した暗号化アップデートファイルF2を、揮発性メモリ内の共有メモリ領域122に書き込む処理を実行し、続いて、第2の管理プログラムMbが、共有メモリ領域122から暗号化アップデートファイルF2を読み出して復号し、得られた復号アップデートファイルF3を、揮発性メモリ内の共有メモリ領域122に書き込む処理を実行する。
ただ、図4(a) に示す実施例では、この共有メモリ領域122内の復号アップデートファイルF3を用いてアップデート処理を実行することになるが、図5(b) に示す実施例では、更に、第1の管理プログラムMaが、揮発性メモリ(RAM)内の共有メモリ領域122に書き込まれた復号アップデートファイルF3を読み出した上で、これを不揮発性の外部メモリ400(たとえば、USBメモリ)に書き込む処理を実行する。したがって、CPU110は、この外部メモリ400から復号アップデートファイルF3に含まれているアップデート用プログラムを読み出し、これを実行することによりアップデート処理を行うことになる。
不揮発性の外部メモリ400(たとえば、USBメモリ)に書き込まれた復号アップデートファイルF3は、情報処理装置100の電源がOFFにされたり、再起動されたりしても、失われることはない。したがって、この図5(b) に示す実施例も、アプリケーションプログラムのアップデートのみならず、OSプログラムのアップデートにも適した実施例ということになる。
この図5(b) に示す実施例を採用する場合、第1の管理プログラムMaによる外部メモリ400への書き出し処理が必要になるため、アップデート処理の手順は、図3の流れ図に示す手順を若干変更する必要がある。図6は、図5(b) に示す実施例におけるアップデート処理の手順を示す流れ図である。この図6の流れ図において、ステップS1〜S6までの手順は、図3の流れ図におけるステップS1〜S6までの手順と全く同じである。ステップS6の実行により、暗号化アップデートファイルF2に対する復号処理が行われ、復号アップデートファイルF3が生成される。
図5(b) に示す実施例では、続くステップS7aにおいて、生成された復号アップデートファイルF3が揮発性メモリ内の共有メモリ領域122に書き込まれる。この書き込み処理は、第2の管理プログラムMbによって実行される。第2の管理プログラムMbにより復号アップデートファイルF3の書き込みが完了したら、ハイパーバイザープログラムPhを介して、その旨が第1の管理プログラムMaに通知される。当該通知は、第1の管理プログラムMaに対する「外部メモリへの書込要求」として機能する。
第1の管理プログラムMaは、当該通知を受け取った後、共有メモリ領域122に書き込まれている復号アップデートファイルF3を読み出し、これを不揮発性外部メモリ400に書き込む処理を行う。図6の流れ図におけるステップS7bの手順は、この書き込み処理の手順である。最後に、ステップS8において、外部メモリ400に書き込まれていた復号アップデートファイルF3に含まれているアップデート用プログラムが実行され、アップデート処理が完了する。
<<< §4. 具体的なアップデート処理の形態 >>>
続いて、本発明に係る情報処理装置100における具体的なアップデート処理の形態を述べる。§3では、図4および図5を参照しながら、アップデート処理に用いられる復号アップデートファイルF3の具体的な書き込み態様をいくつか説明した。すなわち、復号アップデートファイルF3は、図4(a) の実施例では、揮発性メモリ(RAM)内の共有メモリ領域122に書き込まれ、図4(b) の実施例では、不揮発性メモリ(フラッシュメモリ)内の共有メモリ領域123に書き込まれ、図4(c) の実施例では、不揮発性メモリ(フラッシュメモリ)内の共有メモリ領域124bに書き込まれる。また、図5(a) ,(b) の実施例では、不揮発性外部メモリ400(たとえば、USBメモリ)に書き込まれる。
いずれの実施例の場合も、第1の管理プログラムMa(図5(b) の例)もしくは第2の管理プログラムMb(図4(a) ,(b) ,(c) ,図5(a) の例)が、復号アップデートファイルF3を、第1のOSプログラムPaの管理下もしくはブートプロセスにおいてアクセス可能な格納場所に書き込む処理を実行している。したがって、CPU110は、第1のOSプログラムPaの管理下もしくはブートプロセスにおいて、復号アップデートファイルF3に含まれているアップデート用プログラムを実行することにより、アップデート処理を行うことが可能である。
たとえば、アップデートの対象となるプログラムが、図1に示すアプリケーションプログラムAP1やAP2であった場合、復号アップデートファイルF3(すなわち、アップデートファイルF1)としては、第1のOSプログラムPaの管理下において実行可能なアップデート用プログラムを提供すればよい。通常、アプリケーションプログラムをアップデートする際には、再起動を行う必要がないので、図4(a) に示す実施例のように、復号アップデートファイルF3が揮発性メモリ(RAM)内の共有メモリ領域122に書き込まれていた場合でも、アプリケーションプログラムAP1やAP2のアップデートが可能である。もちろん、第1の管理プログラムMaのアップデートも同様に行うことができる。また、必要があれば、同様の方法によって、第2の管理プログラムMbのアップデートも行うことができる。
一方、OSプログラムのアップデートは、当該OSプログラムを動作させた状態では行うことができないので、通常、システムを再起動させる必要がある。システムを再起動させると、通常は、揮発性メモリ(RAM)内のデータが初期化されてしまうため、図4(a) に示す実施例のように、揮発性メモリ(RAM)内の共有メモリ領域122に書き込まれていた復号アップデートファイルF3は失われてしまう。このため、一般的なOSプログラムのアップデートを行う場合には、図4(b) ,(c) ,図5(a) ,(b) に示す実施例のように、復号アップデートファイルF3を不揮発性メモリに書き込んでおくようにすればよい。
より具体的には、復号アップデートファイルF3に含まれているアップデート用プログラムを、情報処理装置100が起動時に実行するブート用プログラムを格納するための格納場所(いわゆる、ブートセクター)に書き込むようにする。そうすれば、CPU110が、起動時に、ブートセクターに書き込まれたアップデート用プログラムを実行するブートプロセスを行うことにより、OSプログラムのアップデート処理を行うことができる。同様の方法によって、ファームウェアのアップデートも行うことができる。
たとえば、図4(b) ,(c) に示す実施例において、第1のOSプログラムPaのアップデートを行う場合、不揮発性メモリに設けられた共有メモリ領域123もしくは124b内のブートセクターに復号アップデートファイルF3に含まれているアップデート用プログラムを書き込んでおくようにすればよい。そうすれば、第1のOSプログラムPaを再起動するプロセスにおいて、アップデート用プログラムを実行することができ、アップデートされた第1のOSプログラムPaを起動することができる。
なお、複数のOSプログラムが組み込まれている装置の場合、再起動時にどちらのOSを選択するかは、ハイパーバイザープログラムの設定によって指定することができるので、上例の場合、再起動時に第1のOSプログラムPaを選択する設定にしておけば、支障は生じない。もちろん、再起動時に第2のOSプログラムPbを選択する設定にしておけば、第2のOSプログラムPbに対するアップデートを行うことも可能である。
<<< §5. 種々の変形例・応用例 >>>
最後に、本発明に係る情報処理装置100の変形例や応用例を述べておく。
<5.1 識別情報UIDを利用した暗号鍵生成>
§1で述べたとおり、第2の管理プログラムMbによって実行される復号処理では、アップデートサーバ200側での暗号化処理に用いられた暗号鍵Kに関連する暗号鍵K′が用いられる。ここで、暗号鍵K′は暗号鍵Kと全く同一の鍵であってもよいし、公開鍵暗号方式で利用される特定の関係をもった一対の鍵であってもよい。ここでは、識別情報UIDを用いて互いに同一の暗号鍵KおよびK′を生成する変形例を、図7のブロック図を参照しながら説明する。なお、図7では、情報処理装置100を破線のブロックで示してあるが、これは当該ブロック内に描かれている構成要素が、情報処理装置100内の一部の構成要素であることを示すためである。また、図7において、個々のプログラムを示すブロック内には、当該プログラムの処理内容や当該プログラムに用いられるデータが示されている。
図示のとおり、情報処理装置100には、第2の管理プログラムMbとVPN開設アプリケーションプログラムVPN1がインストールされており、外部装置200(アップデートサーバ)には、外部装置用管理プログラムMcとVPN開設アプリケーションプログラムVPN2がインストールされている。§2で述べたとおり、プログラムVPN1,VPN2は、VPNサーバ300と協働して、情報処理装置100と外部装置200との間にVPN通信路を開設する役割を果たす。
ここで、プログラムVPN1は、デバイス証明書D1,クライアント証明書C1,クライアント秘密鍵K1を用いてVPN通信路の開設処理を行い、プログラムVPN2は、デバイス証明書D2,サーバ証明書C2,サーバ秘密鍵K2を用いてVPN通信路の開設処理を行う。具体的なVPN通信路の開設処理の手順は、§2で述べたとおりである。
外部装置用管理プログラムMcは、図1の外部装置200と同等の役割を果たすプログラムであり、アップデートファイルF1を暗号鍵Kを用いて暗号化して暗号化アップデートファイルF2を生成し、これをVPN通信路を介して情報処理装置100へと送信する。
ただ、ここに示す実施例の場合、暗号鍵Kは識別情報UIDを利用して生成される。この識別情報UID(User Identifier)は、暗号化アップデートファイルF2の送信先となる情報処理装置100に内蔵された不揮発性メモリに記録されている情報であり、当該情報処理装置100もしくは当該情報処理装置100のユーザを特定するための情報である。具体的には、情報処理装置100に付与された固有の識別情報(たとえば、CPU110に付与されたシリアルナンバー)や、そのユーザに与えられたアカウント情報などを識別情報UIDとして用いることができる。この識別情報UIDは、情報処理装置100に内蔵された不揮発性メモリに記録されるとともに、外部装置200側にも記録されている。
外部装置用管理プログラムMcが、識別情報UIDを利用して暗号鍵Kを生成する暗号鍵生成アルゴリズムとしては、予め任意のアルゴリズムを定めておけばよい。たとえば、UIDを構成するデータに対して所定のハッシュ関数を作用させたハッシュ値を暗号鍵Kとするアルゴリズムを用いることが可能である。
一方、情報処理装置100にインストールされている第2の管理プログラムMbも、全く同じ暗号鍵生成アルゴリズムを用いて、識別情報UIDに基づいて暗号鍵K′を生成する機能を有している。情報処理装置100に記録されている識別情報UIDと外部装置200に記録されている識別情報UIDとは同一のものであり、それぞれ同一の暗号鍵生成アルゴリズムを用いて暗号鍵の生成が行われるため、情報処理装置100側で生成された暗号鍵K′は、外部装置200側で生成された暗号鍵Kと同一の鍵になる。
§2で述べたとおり、外部装置200からVPN通信路を介して送信されてきた暗号化アップデートファイルF2は、情報処理装置100内の外部通信手段130によって受信され、第1の管理プログラムMaから共有メモリ領域121を介して第2の管理プログラムMbへと引き渡される。第2の管理プログラムMbは、内蔵された不揮発性メモリに記録されている識別情報UIDに基づいて、外部装置用管理プログラムMcで利用された暗号鍵生成アルゴリズムと同じアルゴリズムを用いて暗号鍵K′(暗号鍵Kと同一の鍵)を作成する。そして、この暗号鍵K′を用いて暗号化アップデートファイルF2に対する復号処理を行うことにより、復号アップデートファイルF3(アップデートファイルF1と同じ)が得られる。
なお、VPN開設アプリケーションプログラムVPN1がVPN通信路の開設処理に用いるデバイス証明書D1,クライアント証明書C1,クライアント秘密鍵K1も、情報処理装置100もしくはそのユーザを特定するための識別情報として機能するので、これらの情報を識別情報UIDとして利用して秘密鍵K′を生成することも可能である。
<5.2 内蔵する不揮発性メモリのアクセス権>
これまで述べたとおり、本発明に係る情報処理装置100には、ハイパーバイザープログラムPhの機能を利用して、第1のOSプログラムPaと第2のOSプログラムPbとが組み込まれる。そして、第1のOSプログラムPaの管理下では、当該情報処理装置100の本来の処理機能を果たすための種々の処理が、第1属性のアプリケーションプログラムによって実行される。一方、第2のOSプログラムPbの管理下では、第2属性のアプリケーションプログラムである第2の管理プログラムMbにより、暗号化アップデートファイルF2の復号処理が実行される。
このように、暗号化アップデートファイルF2の復号処理を、わざわざ第2のOSプログラムPbの管理下で行うのは、セキュアな環境下で復号処理が行われるようにするためである。すなわち、本発明の基本概念は、第1のOSプログラムPaの実行環境がマルウェアによって悪影響を受けた場合にも、暗号化アップデートファイルF2の復号処理が実行される第2のOSプログラムPbの実行環境をセキュアな状態に維持する点にある。
そのためには、第2のOSプログラムPbの実行環境(セキュアな環境)が、できる限り第1のOSプログラムPaの実行環境(ノンセキュアな環境)から影響を受けないようにするのが好ましい。そこで実用上は、第1のOSプログラムPaの管理下でアクセス可能なメモリ領域と第2のOSプログラムPbの管理下でアクセス可能なメモリ領域について、次のようなアクセス権の設定を行うのが好ましい。
図8は、情報処理装置100に内蔵されている不揮発性メモリ(フラッシュメモリ)のメモリ空間を示す図である。まず、このメモリ空間に、図示のとおり第1の領域A1(図の白地領域)と第2の領域A2(図のハッチング領域)とを定義する。図示の例の場合、2つの領域A1,A2のみが定義されているため、全メモリ空間は、2つの領域A1,A2に分割されることになる。そして、これらの領域A1,A2について、次のようなアクセス権を設定する。
まず、第1のOSプログラムPaおよび第1属性のアプリケーションプログラムAP1,AP2,Maは、第1の領域A1に対するアクセスのみが可能であり、第2の領域A2へのアクセスは禁じられるようにする。具体的には、第1のOSプログラムPaおよび第1属性のアプリケーションプログラムAP1,AP2,Maには、第1の領域A1が内蔵不揮発性メモリの全メモリ空間であるとの認識がなされるような設定を行えばよい。
そして、図示のとおり、第1のOSプログラムPaおよび第1属性のアプリケーションプログラムAP1,AP2,Maを構成するプログラム自体は、第1の領域A1に格納しておくようにし、これら各プログラムPa,AP1,AP2,Maが用いる第1属性のデータも、第1の領域A1に記録するようにする。また、暗号化アップデートファイルF2や復号アップデートファイルF3の受け渡し場所として利用される共有メモリ領域を、内蔵不揮発性メモリ内に設ける実施例を採用する場合は、この共有メモリ領域も、第1の領域A1内に設けておく。
一方、第2のOSプログラムPaおよび第2属性のアプリケーションプログラムMbは、第1の領域A1および第2の領域A2の双方に対するアクセスが可能になるようにする。結局、図示の例の場合は、第2のOSプログラムPaおよび第2属性のアプリケーションプログラムMbは、内蔵不揮発性メモリの全メモリ空間に対してアクセスを行うことができる。
そして、図示のとおり、ハイパーバイザープログラムPh、第2のOSプログラムPb、第2属性のアプリケーションプログラムMb(第2の管理プログラム)を構成するプログラム自体は、第2の領域A2に格納しておくようにし、これら各プログラムPh,Pb,Mbが用いる第2属性のデータも、第2の領域A2に記録するようにする。この第2属性のデータには、第2の管理プログラムMbが復号処理に用いる暗号鍵K′もしくは暗号鍵K′の生成に利用される識別情報UIDが含まれている。
なお、図8には、ハイパーバイザープログラムPhをフラッシュメモリに格納する例を示したが、ハイパーバイザープログラムPhは、ROMに格納するようにしてもかまわない(たとえば、前述した「FOXvisor」なる製品では、ハイパーバイザープログラムPhは、CPU110と同一のチップのROM内に格納されている)。
上述したようなアクセス権を設定しておけば、第1のOSプログラムPaおよび第1属性のアプリケーションプログラムAP1,AP2,Maにとっては、第1の領域A1が全メモリ空間であり、第2の領域A2(図のハッチング領域)は、その存在すら認識できない領域ということになる。したがって、この情報処理装置100を第1のOSプログラムPaの管理下で動作させている最中に、悪意をもった者の攻撃を受けてマルウェアに感染したとしても、当該マルウェアの影響は第1の領域A1内にとどまり、第2の領域A2に影響が及ぶことを防ぐことができる。
もちろん、第2のOSプログラムPaおよび第2属性のアプリケーションプログラムMb(第2の管理プログラム)は、第2の領域A2のみならず第1の領域A1に対してもアクセスが可能であるが、本発明の実施にあたり、第2の管理プログラムMbが第1の領域A1に対してアクセスする必要があるのは、暗号化アップデートファイルF2や復号アップデートファイルF3の受け渡しのために共有メモリ領域に対するアクセスを行う場合だけであり、この共有メモリ領域に対するアクセスによって第2の領域A2にマルウェアの影響が及ぶ可能性は非常に低い。
このため、第2のOSプログラムPbや第2属性のアプリMbがマルウェアの影響を受ける可能性は非常に低い。また、第2属性のデータである暗号鍵K′や識別情報UIDがマルウェアの影響を受ける可能性も非常に低い。このように、第1の領域A1がノンセキュア領域であるのに対して、第2の領域A2はセキュア領域として機能する。そして、第2の管理プログラムMbによる暗号化アップデートファイルF2の復号処理は、このセキュア領域で実行される。したがって、本発明によれば、セキュアな環境下でのアップデートが可能になる。
<5.3 ホームゲートウェイ装置への応用>
最後に、本発明をホームゲートウェイ装置に応用した実施例を述べておく。近年、IoT(Internet of Things)の考え方に基づき、家庭内の電子機器をホームゲートウェイ装置を介してインターネットに接続する形態が急速に普及してゆくものと予想されている。ホームゲートウェイ装置は、公衆回線網と家庭内ネットワークとを仲介する役割を果たし、一般的なブロードバンドルータの機能に加え、電話やFAXの信号などをやりとりする機能も備わった家庭用の情報処理装置である。
このホームゲートウェイ装置も、CPUと、メモリと、外部通信手段と、を備えた情報処理装置であり、所定のOSプログラムやアプリケーションプログラムを実行することにより、その機能を果たすことができる。したがって、導入後も、各プログラムをアップデートする必要が生じるが、家庭用の情報処理装置であるため、高度なセキュリティ対策を講じることは困難であり、アップデート時にマルウェアによる被害が頻発することが危惧される。
本発明は、このようなホームゲートウェイ装置に応用するのに適した技術である。図9は、本発明に係る情報処理装置を、ホームゲートウェイ装置として利用した実施例を示すブロック図である。この例では、本発明に係る情報処理装置がホームゲートウェイ装置100として利用されている。このホームゲートウェイ装置100は、家庭内ネットワークに接続されたセンサ、監視カメラ、パソコン、TV、録画機器、照明、スマートメータなどの様々な機器と、インターネットとを仲介する役割を果たす。
このホームゲートウェイ装置100として、本発明に係る情報処理装置を用いるようにすれば、図示のとおり、外部装置として機能するアップデートサーバ200にインターネットを介して接続し、内蔵されているOSプログラムやアプリケーションプログラムをアップデートすることが可能である。しかも、本発明によれば、セキュアな環境下でアップデートを行うことが可能になり、アップデート時にマルウェアによる被害を受ける危険性を低減することができる。
本発明は、CPUとメモリと外部通信手段とを備え、外部装置から受信したアップデートファイルを用いてプログラムのアップデート処理を行う情報処理装置に広く利用することができる。具体的には、パソコン、スマートフォン、タブレット端末などの電子機器や、ホームゲートウェイ装置のような装置にも利用することが可能である。
100:情報処理装置(ホームゲートウェイ装置)
110:CPU
120:メモリ
121:共有メモリ領域
122:共有メモリ領域(揮発性メモリ内の領域)
123:共有メモリ領域(不揮発性メモリ内の領域)
124:共有メモリ領域(揮発性および不揮発性メモリ内の領域)
124a:共有メモリ領域(揮発性メモリ内の領域)
124b:共有メモリ領域(不揮発性メモリ内の領域)
130:外部通信手段
200:外部装置(アップデートサーバ)
300:VPNサーバ
400:外部メモリ(不揮発性メモリ)
410:共通アクセス領域
A1:第1の領域
A2:第2の領域
AP1,AP2:第1属性のアプリケーションプログラム
C1:クライアント証明書
C2:サーバ証明書
D1:デバイス証明書
D2:デバイス証明書
F1:アップデートファイル
F2:暗号化アップデートファイル
F3:復号アップデートファイル
K,K′:暗号鍵
K1:クライアント秘密鍵
K2:サーバ秘密鍵
Ma:第1の管理プログラム(第1属性のアプリケーションプログラム)
Mb:第2の管理プログラム(第2属性のアプリケーションプログラム)
Mc:外部装置用管理プログラム
Pa:第1のOSプログラム
Pb:第2のOSプログラム
Ph:ハイパーバイザープログラム
S1〜S8:流れ図の各ステップ
UID:情報処理装置もしくはそのユーザの識別情報
VPN1,VPN2:VPN(Virtual Private Network)開設アプリケーションプログラム

Claims (17)

  1. CPU(110)と、メモリ(120)と、外部通信手段(130)と、を備えた情報処理装置(100)であって、
    前記メモリ(120)には、前記CPU(110)に実行させる第1のOSプログラム(Pa)および第2のOSプログラム(Pb)と、前記第1のOSプログラム(Pa)の管理下において前記CPU(110)に実行させる第1属性のアプリケーションプログラム(AP1,AP2,Ma)と、前記第2のOSプログラム(Pb)の管理下において前記CPU(110)に実行させる第2属性のアプリケーションプログラム(Mb)と、前記CPU(110)に前記第1のOSプログラム(Pa)および前記第2のOSプログラム(Pb)を並列実行させる処理を行うハイパーバイザープログラム(Ph)と、が格納されており、
    前記第1属性のアプリケーションプログラムには、アップデート処理を管理する第1の管理プログラム(Ma)が含まれており、前記第2属性のアプリケーションプログラムには、アップデート処理を管理する第2の管理プログラム(Mb)が含まれており、
    前記メモリ(120)の記憶領域には、前記第1のOSプログラム(Pa)の管理下と前記第2のOSプログラム(Pb)の管理下との双方においてアクセス可能な共有メモリ領域(121)が設けられており、
    前記外部通信手段(130)は、外部装置(200)から送信されてきた、所定の暗号鍵(K)を用いて暗号化された暗号化アップデートファイル(F2)を、前記第1のOSプログラム(Pa)の管理下で受信する機能を有し、
    前記第1の管理プログラム(Ma)は、前記外部通信手段(130)が受信した前記暗号化アップデートファイル(F2)を前記共有メモリ領域(121)に書き込む処理を実行し、
    前記第2の管理プログラム(Mb)は、前記共有メモリ領域(121)に書き込まれた前記暗号化アップデートファイル(F2)を読出し、前記暗号鍵(K)もしくは前記暗号鍵(K)に関連する暗号鍵を用いて、前記暗号化アップデートファイル(F2)を復号することにより復号アップデートファイル(F3)を生成する復号処理を実行し、生成した前記復号アップデートファイル(F3)を所定の格納場所に書き込む処理を実行することを特徴とする情報処理装置。
  2. 請求項1に記載の情報処理装置において、
    第1の管理プログラム(Ma)は、外部通信手段(130)が、第1のOSプログラム(Pa)もしくは第1属性のアプリケーションプログラム(AP1,AP2,Ma)に対するアップデート処理を実行するための暗号化アップデートファイル(F2)を受信したときに、受信した前記暗号化アップデートファイル(F2)を共有メモリ領域(121)に書き込み、
    第2の管理プログラム(Mb)は、前記暗号化アップデートファイル(F2)を復号することにより復号アップデートファイル(F3)を生成し、これを所定の格納場所に書き込み、
    CPU(110)が、前記復号アップデートファイル(F3)に含まれているアップデート用プログラムを実行することにより、前記第1のOSプログラム(Pa)もしくは前記第1属性のアプリケーションプログラム(AP1,AP2,Ma)に対するアップデート処理を行うことを特徴とする情報処理装置。
  3. 請求項2に記載の情報処理装置において、
    メモリ(120)として、揮発性メモリと不揮発性メモリとを内蔵しており、
    前記揮発性メモリは、CPU(110)がプログラムを実行する際の作業領域として利用され、
    前記不揮発性メモリには、第1のOSプログラム(Pa)と、第2のOSプログラム(Pb)と、第1属性のアプリケーションプログラム(AP1,AP2,Ma)と、第2属性のアプリケーションプログラム(Mb)と、ハイパーバイザープログラム(Ph)と、が格納されていることを特徴とする情報処理装置。
  4. 請求項3に記載の情報処理装置において、
    揮発性メモリに共有メモリ領域(122)が設けられており、
    第1の管理プログラム(Ma)が、暗号化アップデートファイル(F2)を、前記揮発性メモリ内の共有メモリ領域(122)に書き込む処理を実行し、
    第2の管理プログラム(Mb)が、復号アップデートファイル(F3)を、前記揮発性メモリ内の共有メモリ領域(122)に書き込む処理を実行し、
    CPU(110)が、前記揮発性メモリから前記復号アップデートファイル(F3)に含まれているアップデート用プログラムを読み出し、これを実行することによりアップデート処理を行うことを特徴とする情報処理装置。
  5. 請求項3に記載の情報処理装置において、
    不揮発性メモリに共有メモリ領域(123)が設けられており、
    第1の管理プログラム(Ma)が、暗号化アップデートファイル(F2)を、前記不揮発性メモリ内の共有メモリ領域(123)に書き込む処理を実行し、
    第2の管理プログラム(Mb)が、復号アップデートファイル(F3)を、前記不揮発性メモリ内の共有メモリ領域(123)に書き込む処理を実行し、
    CPU(110)が、前記不揮発性メモリから前記復号アップデートファイル(F3)に含まれているアップデート用プログラムを読み出し、これを実行することによりアップデート処理を行うことを特徴とする情報処理装置。
  6. 請求項3に記載の情報処理装置において、
    揮発性メモリと不揮発性メモリとの双方に共有メモリ領域(124)が設けられており、
    第1の管理プログラム(Ma)が、暗号化アップデートファイル(F2)を、前記揮発性メモリ内の共有メモリ領域(124a)に書き込む処理を実行し、
    第2の管理プログラム(Mb)が、復号アップデートファイル(F3)を、前記不揮発性メモリ内の共有メモリ領域(124b)に書き込む処理を実行し、
    CPU(110)が、前記不揮発性メモリから前記復号アップデートファイル(F3)に含まれているアップデート用プログラムを読み出し、これを実行することによりアップデート処理を行うことを特徴とする情報処理装置。
  7. 請求項3に記載の情報処理装置において、
    揮発性メモリに共有メモリ領域(122)が設けられており、
    前記情報処理装置は、不揮発性の外部メモリ(400)を装着して、この外部メモリ(400)に対して情報の書き込みおよび読み出しを行う機能を有しており、
    前記外部メモリ(400)の少なくとも一部の記憶領域は、第1のOSプログラム(Pa)の管理下と第2のOSプログラム(Pb)の管理下との双方においてアクセスが可能な共通アクセス領域(410)になっており、
    第1の管理プログラム(Ma)が、暗号化アップデートファイル(F2)を、前記揮発性メモリ内の共有メモリ領域(122)に書き込む処理を実行し、
    第2の管理プログラム(Mb)が、復号アップデートファイル(F3)を、前記外部メモリ(400)の前記共通アクセス領域(410)に書き込む処理を実行し、
    CPU(110)が、前記外部メモリ(400)の前記共通アクセス領域(410)から前記復号アップデートファイル(F3)に含まれているアップデート用プログラムを読み出し、これを実行することによりアップデート処理を行うことを特徴とする情報処理装置。
  8. 請求項3に記載の情報処理装置において、
    揮発性メモリに共有メモリ領域(122)が設けられており、
    前記情報処理装置は、不揮発性の外部メモリ(400)を装着して、第1のOSプログラム(Pa)の管理下において前記外部メモリ(400)に対して情報の書き込みおよび読み出しを行う機能を有しており、
    第1の管理プログラム(Ma)が、暗号化アップデートファイル(F2)を、前記揮発性メモリ内の共有メモリ領域(122)に書き込む処理を実行し、
    第2の管理プログラム(Mb)が、復号アップデートファイル(F3)を、前記揮発性メモリ内の共有メモリ領域(122)に書き込む処理を実行し、
    第1の管理プログラム(Ma)が、前記揮発性メモリ内の共有メモリ領域(122)に書き込まれた復号アップデートファイル(F3)を読み出した上で、これを前記外部メモリ(400)に書き込む処理を実行し、
    CPU(110)が、前記外部メモリ(400)から前記復号アップデートファイル(F3)に含まれているアップデート用プログラムを読み出し、これを実行することによりアップデート処理を行うことを特徴とする情報処理装置。
  9. 請求項3〜8のいずれかに記載の情報処理装置において、
    内蔵された不揮発性メモリには、当該情報処理装置もしくは当該情報処理装置のユーザを特定するための識別情報(UID)が記録されており、
    外部通信手段(130)は、前記識別情報(UID)を利用して生成された暗号鍵(K)を用いて暗号化された暗号化アップデートファイル(F2)を受信する機能を有し、
    第2の管理プログラム(Mb)は、前記識別情報(UID)を利用して生成された暗号鍵(K′)を用いて暗号化アップデートファイル(F2)の復号を行うことを特徴とする情報処理装置。
  10. 請求項3〜9のいずれかに記載の情報処理装置において、
    内蔵された不揮発性メモリのメモリ空間には、第1の領域(A1)と第2の領域(A2)とが定義されており、
    第1のOSプログラム(Pa)および第1属性のアプリケーションプログラム(AP1,AP2,Ma)は、前記第1の領域(A1)に対するアクセスのみが可能であり、第2のOSプログラム(Pb)および第2属性のアプリケーションプログラム(Mb)は、前記第1の領域(A1)および前記第2の領域(A2)の双方に対するアクセスが可能であることを特徴とする情報処理装置。
  11. 請求項10に記載の情報処理装置において、
    第2の管理プログラム(Mb)が復号処理に用いる暗号鍵(K′)、もしくは当該暗号鍵の生成に利用される情報(UID)が、不揮発性メモリの第2の領域(A2)に格納されていることを特徴とする情報処理装置。
  12. 請求項1〜11のいずれかに記載の情報処理装置において、
    第1の管理プログラム(Ma)もしくは第2の管理プログラム(Mb)が、復号アップデートファイル(F3)に含まれているアップデート用プログラムを、情報処理装置が起動時に実行するブート用プログラムを格納するための格納場所に書き込む処理を実行し、
    CPU(110)が、起動時に、前記アップデート用プログラムを実行することにより、アップデート処理を行うことを特徴とする情報処理装置。
  13. 請求項1〜11のいずれかに記載の情報処理装置において、
    第1の管理プログラム(Ma)もしくは第2の管理プログラム(Mb)が、復号アップデートファイル(F3)に含まれているアップデート用プログラムを、第1のOSプログラム(Pa)の管理下においてアクセス可能な格納場所に書き込む処理を実行し、
    CPU(110)が、前記第1のOSプログラム(Pa)の管理下において、前記アップデート用プログラムを実行することにより、アップデート処理を行うことを特徴とする情報処理装置。
  14. 請求項1〜13のいずれかに記載の情報処理装置において、
    第1属性のアプリケーションプログラムには、外部装置(200)との間にVPN通信路を開設する処理を行うVPN開設アプリ(VPN1)が含まれており、
    外部通信手段(130)は、暗号化アップデートファイル(F2)を前記VPN通信路を介して受信することを特徴とする情報処理装置。
  15. 請求項1〜14のいずれかに記載の情報処理装置において、
    第1の管理プログラム(Ma)が第1のOSプログラム(Pa)に組み込まれているか、もしくは、第2の管理プログラム(Mb)が第2のOSプログラム(Pb)に組み込まれているか、または、その双方であることを特徴とする情報処理装置。
  16. 請求項1〜14のいずれかに記載の情報処理装置における第1の管理プログラム(Ma)および第2の管理プログラム(Mb)の双方を含むコンピュータプログラム。
  17. 請求項1〜15のいずれかに記載の情報処理装置を含むホームゲートウェイ装置。
JP2018550982A 2016-11-21 2016-11-21 情報処理装置 Expired - Fee Related JP6741236B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/084386 WO2018092289A1 (ja) 2016-11-21 2016-11-21 情報処理装置

Publications (2)

Publication Number Publication Date
JPWO2018092289A1 JPWO2018092289A1 (ja) 2019-10-10
JP6741236B2 true JP6741236B2 (ja) 2020-08-19

Family

ID=62145355

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018550982A Expired - Fee Related JP6741236B2 (ja) 2016-11-21 2016-11-21 情報処理装置

Country Status (2)

Country Link
JP (1) JP6741236B2 (ja)
WO (1) WO2018092289A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3866004A4 (en) * 2018-11-09 2021-11-03 Huawei Technologies Co., Ltd. AIR-WAY UPGRADE PROCESS AND ASSOCIATED DEVICE

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8589302B2 (en) * 2009-11-30 2013-11-19 Intel Corporation Automated modular and secure boot firmware update
US9317276B2 (en) * 2011-01-19 2016-04-19 International Business Machines Corporation Updating software

Also Published As

Publication number Publication date
WO2018092289A1 (ja) 2018-05-24
JPWO2018092289A1 (ja) 2019-10-10

Similar Documents

Publication Publication Date Title
KR102434444B1 (ko) 가상 트러스트 컴퓨팅 베이스를 이용한 기기 보안성 검증 방법 및 장치
TWI598814B (zh) 用於管理及診斷配備有統一可延伸韌體介面(uefi)相容韌體的計算裝置之系統與方法
EP2913956B1 (en) Management control method and device for virtual machines
JP5497171B2 (ja) セキュア仮想マシンを提供するためのシステムおよび方法
WO2019218919A1 (zh) 区块链场景下的私钥管理方法、装置及系统
US20140281560A1 (en) Secure zone on a virtual machine for digital communications
CN112187803B (zh) 使用服务器的tpm的远程密码服务
CN107077567B (zh) 标识计算设备上的安全边界
US20150095652A1 (en) Encryption and decryption processing method, apparatus, and device
US20140282543A1 (en) Secure zone on a virutal machine for digital communications
US9524394B2 (en) Method and apparatus for providing provably secure user input/output
US10229272B2 (en) Identifying security boundaries on computing devices
US11368291B2 (en) Mutually authenticated adaptive management interfaces for interaction with sensitive infrastructure
WO2024139273A1 (zh) 联邦学习方法、装置、可读存储介质及电子设备
US20230050944A1 (en) Container with encrypted software packages
JP2009169841A (ja) 情報処理装置および携帯電話装置
CN114296873B (zh) 一种虚拟机镜像保护方法、相关器件、芯片及电子设备
Coppola et al. Automation for industry 4.0 by using secure lorawan edge gateways
CN113485785A (zh) 一种虚拟化可信平台模块实现方法、安全处理器及存储介质
CN117453343A (zh) 虚拟机度量、机密计算认证方法、设备、系统及存储介质
EP2973201A1 (en) Secure zone on a virtual machine for digital communications
JP6741236B2 (ja) 情報処理装置
Goulao et al. Shareiff: A sticky policy middleware for self-destructing messages in android applications
KR101069500B1 (ko) 네크워크 시스템에서 가상화 및 신뢰 플랫폼 모듈을 이용한데이터 보안 처리 방법 및 기록매체
EP4174694A1 (en) Method for securely executing an application

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191004

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200709

R150 Certificate of patent or registration of utility model

Ref document number: 6741236

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees