(57)【特許請求の範囲】
【請求項１】
ソフトウェアモジュールを自動的に更新するソフトウェア更新装置であって、
前記ソフトウェアモジュールを更新するための更新用プログラムを検証するための公開鍵を記憶するセキュアエレメントと、
前記更新用プログラムを受信し、前記公開鍵を用いて当該更新用プログラムを検証する検証手段と、
検証した前記更新用プログラムを用いて、実行中の前記ソフトウェアモジュールを更新した更新ソフトウェアモジュールを生成して格納エリアに記憶させる更新手段と、
実行中の前記ソフトウェアモジュールから処理を継続し、前記更新ソフトウェアモジュールを実行する実行手段と、
を備え、
前記実行手段は、前記セキュアエレメントを介して、実行中の前記ソフトウェアモジュールの一時データを前記更新ソフトウェアモジュールに渡すソフトウェア更新装置。
【請求項２】
前記更新ソフトウェアモジュールが前記格納エリアに記憶されたか否かを定期的にチェックし、記憶されたことを検知する検知手段をさらに備え、
前記実行手段は、記憶されたことが前記検知手段により検知された場合に、検知された前記更新ソフトウェアモジュールを実行する、請求項１に記載のソフトウェア更新装置。
【請求項３】
前記検証手段は、サーバとの通信を監視し、前記更新用プログラムのアップデート通知を受信した場合に、前記更新用プログラムを受信する、請求項１又は２に記載のソフトウェア更新装置。
【請求項４】
前記実行手段は、前記一時データのうち所定のフラグが付与されたデータのみを前記セキュアエレメントを介して、前記更新した前記ソフトウェアモジュールに渡す、請求項１から３のいずれか一項に記載のソフトウェア更新装置。
【請求項５】
請求項１に記載のソフトウェア更新装置が実行する方法であって、
前記検証手段が、前記更新用プログラムを受信し、前記公開鍵を用いて当該更新用プログラムを検証する検証ステップと、
前記更新手段が、検証した前記更新用プログラムを用いて、実行中の前記ソフトウェアモジュールを更新した更新ソフトウェアモジュールを生成して格納エリアに記憶させる更新ステップと、
前記実行手段が、実行中の前記ソフトウェアモジュールから処理を継続し、前記更新ソフトウェアモジュールを実行する実行ステップと、
を備え、
前記実行ステップは、前記セキュアエレメントを介して、実行中の前記ソフトウェアモジュールの一時データを前記更新ソフトウェアモジュールに渡す方法。
【請求項６】
コンピュータに、請求項５に記載の方法の各ステップを実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア更新装置、方法及びプログラムに関する。
【背景技術】
【０００２】
従来より、Ｍ２Ｍ（Ｍａｃｈｉｎｅ  ｔｏ  Ｍａｃｈｉｎｅ）環境では、ソフトウェアの更新は、サーバからダウンロードしたプログラムを用いて自動的に行われている。さらに、ソフトウェアの更新は、実行停止期間をできるだけ短くするように行われている。
【０００３】
例えば、特許文献１に開示された情報処理装置は、ユーザ識別情報をセンタコンピュータに送信して、センタコンピュータから、更新用ソフトウェアが記された一覧を取得し、取得すべきと判断された更新ソフトウェア毎に、一覧を基に、各所在場所情報を用いて各更新用ソフトウェア記憶領域へアクセスして、必要な更新用ソフトウェアを取得する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２００５／０６９１３５号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述の特許文献で開示された技術は、自動的にソフトウェアを更新するための技術ではあるが、ソフトウェアの安全な更新についての技術ではない。
【０００６】
本発明は、実行停止期間を短くすると共に、ソフトウェアのセキュアな更新を実現するソフトウェア更新装置、方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
具体的には、以下のような解決手段を提供する。
（１）  ソフトウェアモジュールを自動的に更新するソフトウェア更新装置であって、前記ソフトウェアモジュールを更新するための更新用プログラムを検証するための公開鍵を記憶するセキュアエレメントと、前記更新用プログラムを受信し、前記公開鍵を用いて当該更新用プログラムを検証する検証手段と、検証した前記更新用プログラムを用いて、実行中の前記ソフトウェアモジュールを更新した更新ソフトウェアモジュールを生成して格納エリアに記憶させる更新手段と、実行中の前記ソフトウェアモジュールから処理を継続し、前記更新ソフトウェアモジュールを実行する実行手段と、を備えるソフトウェア更新装置。
【０００８】
（１）のソフトウェア更新装置１０は、更新用プログラムを受信し、セキュアエレメントに記憶された公開鍵を用いて更新用プログラムを検証する。そして、ソフトウェア更新装置は、検証した更新用プログラムを用いて、更新ソフトウェアモジュールを生成して格納エリアに記憶させ、実行中のソフトウェアモジュールから処理を継続し、更新ソフトウェアモジュールを実行する。
【０００９】
すなわち、（１）のソフトウェア更新装置は、ソフトウェアモジュールによる実行中に並行して、更新用プログラムを受信し、受信した更新用プログラムをセキュアエレメントに記憶された公開鍵を用いて検証し、ソフトウェアモジュールを更新するので、実行停止期間を短くすると共に、ソフトウェアのセキュアな更新を実現することができる。
【００１０】
（２）  前記更新ソフトウェアモジュールが前記格納エリアに記憶されたか否かを定期的にチェックし、記憶されたことを検知する検知手段をさらに備え、前記実行手段は、記憶されたことが前記検知手段により検知された場合に、検知された前記更新ソフトウェアモジュールを実行する、（１）に記載のソフトウェア更新装置。
【００１１】
（２）のソフトウェア更新装置は、実行の準備ができたことを定期的にチェックするので、更新ソフトウェアモジュールをタイムリーに実行することができる。
【００１２】
（３）  前記検証手段は、サーバとの通信を監視し、前記更新用プログラムのアップデート通知を受信した場合に、前記更新用プログラムを受信する、（１）又は（２）に記載のソフトウェア更新装置。
【００１３】
（３）のソフトウェア更新装置は、ソフトウェアモジュールの実行中に、アップデート通知を並行して監視するので、サーバにおける更新後、即座に、ソフトウェアモジュールを更新することができる。
【００１４】
（４）  前記実行手段は、前記セキュアエレメントを介して、実行中の前記ソフトウェアモジュールの一時データを、前記更新ソフトウェアモジュールに渡す、（１）から（３）のいずれか一に記載のソフトウェア更新装置。
【００１５】
（４）のソフトウェア更新装置は、セキュアエレメントを介して一時データを更新ソフトウェアモジュールに渡すので、盗聴又は改竄を防いで処理が確実に継続されるセキュアな更新を実現することができる。
【００１６】
（５）  前記実行手段は、前記一時データのうち所定のフラグが付与されたデータのみを前記セキュアエレメントを介して、前記更新した前記ソフトウェアモジュールに渡す、（４）に記載のソフトウェア更新装置。
【００１７】
（５）のソフトウェア更新装置は、所定のフラグが付与されたデータ（例えば、重要なデータ）のみをセキュアエレメントを介して渡すので、重要でないデータの引き渡しの処理負荷を低減でき、ソフトウェアモジュールの処理の継続を効率よく処理することができる。
【００１８】
（６）  （１）に記載のソフトウェア更新装置が実行する方法であって、前記検証手段が、前記更新用プログラムを受信し、前記公開鍵を用いて当該更新用プログラムを検証する検証ステップと、前記更新手段が、検証した前記更新用プログラムを用いて、実行中の前記ソフトウェアモジュールを更新した更新ソフトウェアモジュールを生成して格納エリアに記憶させる更新ステップと、前記実行手段が、実行中の前記ソフトウェアモジュールから処理を継続し、前記更新ソフトウェアモジュールを実行する実行ステップと、を備える方法。
【００１９】
（６）の方法は、（１）と同様に、実行停止期間を短くすると共に、ソフトウェアのセキュアな更新を実現することができる。
【００２０】
（７）  コンピュータに、（６）に記載の方法の各ステップを実行させるためのプログラム。
【００２１】
（７）のプログラムは、コンピュータに、実行停止期間を短くすると共に、ソフトウェアのセキュアな更新を実現することができるように機能させることができる。
【発明の効果】
【００２２】
本発明によれば、実行停止期間を短くすると共に、ソフトウェアのセキュアな更新を実現するソフトウェア更新装置、方法及びプログラムを提供することができる。
【図面の簡単な説明】
【００２３】
【図１】本発明の一実施形態に係るソフトウェア更新装置の構成を示すブロック図である。
【図２】本発明の一実施形態に係るソフトウェア更新装置の検証処理の例を示すフローチャートである。
【図３】本発明の一実施形態に係るソフトウェア更新装置の実行処理の例を示すフローチャートである。
【発明を実施するための形態】
【００２４】
以下、本発明の実施形態について、図を参照しながら説明する。
図１は、本発明の一実施形態に係るソフトウェア更新装置１０の構成を示すブロック図である。ソフトウェア更新装置１０は、セキュアエレメント２１と、検証手段１１と、更新手段１２と、検知手段１３と、実行手段１４と、格納エリア３１とを備える。
ソフトウェア更新装置１０が更新するソフトウェアモジュールは、実行プログラムとデータとから成り、常時稼働が要求されるもの、例えば、２４時間監視する監視ソフトウェアや２４時間操業する工場等の運転ソフトウェア等である。
【００２５】
セキュアエレメント２１は、ソフトウェアモジュールを更新するための更新用プログラムを検証するための公開鍵を記憶する。
具体的には、セキュアエレメント２１は、メモリ保護及びレジスタ保護の機能を有し、セキュアエレメント領域内に設けられたメモリ上に保管されているデータ、プログラムが行うメモリへのアクセス、ＣＰＵで実行される演算等を保護する。さらに、セキュアエレメント２１は、格納するデータを暗号化して安全に記憶するとしてもよい。
また、セキュアエレメント２１は、実行中のソフトウェアモジュールと更新ソフトウェアモジュールとの一時データの受け渡しの際に、渡された実行中のソフトウェアモジュールの一時データを、安全に記憶する。
例えば、セキュアエレメント２１は、安全にデータを記憶するメモリや、データを暗号化するプロセッサー等を備える半導体製品であってよい。
【００２６】
検証手段１１は、更新用プログラムを受信し、セキュアエレメント２１に記憶されている公開鍵を用いて、受信した更新用プログラムを検証する。
具体的には、検証手段１１は、サーバ５０との通信を監視し、更新用プログラムのアップデート通知を受信した場合に、更新用プログラムを受信する。次に、検証手段１１は、セキュアエレメント２１から公開鍵を読み出し、読み出した公開鍵を用いて、受信した更新用プログラムに添付された電子署名を検証することで、受信した更新用プログラムを検証する。
【００２７】
更新手段１２は、検証手段１１によって検証された更新用プログラムを用いて、実行中のソフトウェアモジュールを更新した更新ソフトウェアモジュールを生成して格納エリア３１に記憶させる。
具体的には、更新手段１２は、更新用プログラムがソフトウェアの一部を更新するものである場合に、検証された更新用プログラムを実行して、更新ソフトウェアモジュールを生成して格納エリア３１に記憶させる。
また、更新手段１２は、更新用プログラムがソフトウェアモジュールの差分（例えば、修正パッチ等）を含むものである場合に、検証された更新用プログラムを実行して、ソフトウェアモジュールの差分により更新ソフトウェアモジュールを生成して格納エリア３１に記憶させる。
【００２８】
検知手段１３は、更新ソフトウェアモジュールが格納エリア３１に記憶されたか否かを定期的にチェックし、記憶されたことを検知する。
具体的には、検知手段１３は、更新ソフトウェアモジュールが格納エリア３１に記憶されて更新の準備ができたことを示す情報を定期的（例えば、１秒ごと）にチェックし、準備ができたことを検知する。例えば、更新手段１２が、更新したソフトウェアモジュールの準備ができたことを示す更新用フラグをオンにし、検知手段１３が、更新用フラグをチェックするとしてもよい。
【００２９】
実行手段１４は、実行中のソフトウェアモジュールから処理を継続し、更新手段１２によって更新された更新ソフトウェアモジュールを実行する。
具体的には、実行手段１４は、検知手段１３により検知された場合に、セキュアエレメント２１を介して、実行中のソフトウェアモジュールの一時データを、検知された更新ソフトウェアモジュールに渡し、検知された更新ソフトウェアモジュールを実行する。
【００３０】
例えば、実行手段１４は、更新ソフトウェアモジュールを立ち上げて、実行中のソフトウェアモジュールの一時データを受け取るための待ち状態にする。次に、実行手段１４は、セキュアエレメント２１を介して、実行中のソフトウェアモジュールの一時データを、更新ソフトウェアモジュールに渡す。次に、実行手段１４は、待ち状態の更新ソフトウェアモジュールを実行し、実行中のソフトウェアモジュールを終了して、処理を受け渡す。なお、実行手段１４は、更新ソフトウェアモジュールを立ち上げる前に、実行中のソフトウェアモジュールの一時データを、セキュアエレメント２１に記憶させるとしてもよい。
さらに、実行手段１４は、一時データのうち所定のフラグ（例えば、重要なデータであることを示すフラグ）が付与されたデータのみを、セキュアエレメント２１を介して、更新ソフトウェアモジュールに渡し、所定のフラグが付与されていないデータをセキュアエレメント２１を介さずに（例えば、通常のメモリを介して）、更新ソフトウェアモジュールに渡すとしてもよい。
【００３１】
図２は、本発明の一実施形態に係るソフトウェア更新装置１０の検証処理の例を示すフローチャートである。ソフトウェア更新装置１０は、コンピュータ及びその周辺装置が備えるハードウェア並びに該ハードウェアを制御するソフトウェアによって構成され、以下の処理は、制御部（例えば、ＣＰＵ）が、ＯＳの下で所定のソフトウェアに従い実行する処理である。
【００３２】
ステップＳ１０１において、ＣＰＵ（検証手段１１）は、サーバ５０からブロードキャストによるデータを受信する。
【００３３】
ステップＳ１０２において、ＣＰＵ（検証手段１１）は、受信したブロードキャストによるデータがアップデート通知か否かを判断する。この判断がＹＥＳの場合、ＣＰＵは、処理をステップＳ１０３に移し、この判断がＮＯの場合、ＣＰＵは、処理をステップＳ１０１に移す。
【００３４】
ステップＳ１０３において、ＣＰＵ（検証手段１１）は、サーバ５０から更新用プログラムをダウンロードする。
【００３５】
ステップＳ１０４において、ＣＰＵ（検証手段１１）は、ステップＳ１０３においてダウンロードした更新用プログラムを、セキュアエレメント２１に記憶されている公開鍵を用いて検証する（例えば、更新用プログラムに添付された電子署名を検証する）。
【００３６】
ステップＳ１０５において、ＣＰＵ（検証手段１１）は、検証できたか否かを判断する。この判断がＹＥＳの場合、ＣＰＵは、処理をステップＳ１０６に移し、この判断がＮＯの場合、ＣＰＵは、処理を終了する。
【００３７】
ステップＳ１０６において、ＣＰＵ（更新手段１２）は、ステップＳ１０５において検証した更新用プログラムを用いて、実行中のソフトウェアモジュールを更新した更新ソフトウェアモジュールを生成する。
【００３８】
ステップＳ１０７において、ＣＰＵ（更新手段１２）は、ステップＳ１０６において生成した更新ソフトウェアモジュールを格納エリア３１に記憶させる。その後、ＣＰＵは、処理を終了する。
【００３９】
図３は、本発明の一実施形態に係るソフトウェア更新装置１０の実行処理の例を示すフローチャートである。
【００４０】
ステップＳ２０１において、ＣＰＵ（検知手段１３）は、格納エリア３１をチェックする。
【００４１】
ステップＳ２０２において、ＣＰＵ（検知手段１３）は、格納エリア３１に更新ソフトウェアモジュールが記憶されたことを検知したか否かを判断する。この判断がＹＥＳの場合、ＣＰＵは、処理をステップＳ２０３に移し、この判断がＮＯの場合、ＣＰＵは、処理をステップＳ２０１に移す。
【００４２】
ステップＳ２０３において、ＣＰＵ（実行手段１４）は、ステップＳ２０２において検知した更新ソフトウェアモジュールを立ち上げて、一時データを受け取るための待ち状態にする。
【００４３】
ステップＳ２０４において、ＣＰＵ（実行手段１４）は、実行中のソフトウェアモジュールの一時データのうち所定のフラグが付与されている一時データのみを、セキュアエレメント２１を介して更新ソフトウェアモジュールに渡す。
【００４４】
ステップＳ２０５において、ＣＰＵ（実行手段１４）は、実行中のソフトウェアモジュールの一時データのうち所定のフラグが付与されていない一時データを、セキュアエレメントを介さずに更新ソフトウェアモジュールに渡す。
【００４５】
ステップＳ２０６において、ＣＰＵ（実行手段１４）は、待ち状態の更新ソフトウェアモジュールを実行する。
【００４６】
ステップＳ２０７において、ＣＰＵ（実行手段１４）は、実行中のソフトウェアモジュールを終了する。その後、ＣＰＵは、処理を終了する。
【００４７】
本実施形態によれば、ソフトウェア更新装置１０は、ソフトウェアモジュールによる実行中に並行して、更新用プログラムを受信し、受信した更新用プログラムをセキュアエレメント２１に記憶された公開鍵を用いて検証し、ソフトウェアモジュールを更新するので、実行停止期間を短くすると共に、ソフトウェアのセキュアな更新を実現することができる。
さらに、ソフトウェア更新装置１０は、実行の準備ができたことを定期的にチェックするので、更新ソフトウェアモジュールをタイムリーに実行することができる。
さらに、ソフトウェア更新装置１０は、ソフトウェアモジュールの実行中に、アップデート通知を並行して監視するので、サーバ５０における更新後、即座に、ソフトウェアモジュールを更新することができる。
さらに、ソフトウェア更新装置１０は、セキュアエレメント２１を介して一時データを更新ソフトウェアモジュールに渡すので、盗聴又は改竄を防いで処理が確実に継続されるセキュアな更新を実現することができる。
さらに、ソフトウェア更新装置１０は、所定のフラグが付与されたデータ（例えば、重要なデータ）のみをセキュアエレメント２１を介して渡すので、重要でないデータの引き渡しの処理負荷を低減でき、ソフトウェアモジュールの処理の継続を効率よく処理することができる。
【００４８】
以上、本発明の実施形態について説明したが、本発明は上述した実施形態に限るものではない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態に記載されたものに限定されるものではない。
【００４９】
例えば、検知手段１３と実行手段１４とが、ソフトウェアモジュールに組み込まれているとしてもよい。ソフトウェア更新装置１０は、検証した更新プログラムを用いて更新ソフトウェアモジュールを生成し、実行中のソフトウェアモジュールに組み込まれた検知手段１３が更新ソフトウェアモジュールを検知して、実行手段１４が実行中の処理を継続して、更新ソフトウェアモジュールを実行する。
【００５０】
ソフトウェア更新装置１０による一連の処理は、ソフトウェアにより行うこともできる。一連の処理をソフトウェアによって行う場合には、そのソフトウェアを構成するプログラムが、汎用のコンピュータ等にインストールされる。また、当該プログラムは、コンピュータ読み取り可能な記録媒体（例えば、ＣＤ−ＲＯＭのようなリムーバブルメディア等）に記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。
【符号の説明】
【００５１】
１０    ソフトウェア更新装置
１１    検証手段
１２    更新手段
１３    検知手段
１４    実行手段
２１    セキュアエレメント
３１    格納エリア
５０    サーバ
【図１】
0006370231.tif 000002
【図２】
0006370231.tif 000003
【図３】
0006370231.tif 000004