(57)【要約】【課題】プログラムをバージョンアップした後、以前のバージョンのプログラムに戻しても以前のバージョンのプログラムが持つバグや不具合が戻ることがなく、また悪意のある第三者が継続して悪用することも防止することができるプログラム管理装置及びプログラム管理方法を提供する。【解決手段】プログラム管理装置１の移動機環境側は、プログラム開発環境側で作成された移動機プログラムをメモリ部３２に格納し、またプログラム開発環境側で作成された暗号化認証情報を復号して平文認証情報を得る。そして、移動機の起動時等の所定タイミングでメモリ部３２に格納した移動機プログラムのバージョンを判定し、更に当該移動機プログラムのハッシュ値を計算し、これと復号した平文認証情報に含まれる最新の移動機プログラムのハッシュ値とを比較し、一致する場合は移動機プログラムに機能制限をかけず、一致しない場合は移動機プログラムに機能制限をかける。【選択図】図１
2009199497.tif 000002
【特許請求の範囲】
【請求項１】
有効化されている現行プログラムと前記現行プログラムの他のバージョンのプログラムを記憶するプログラム記憶手段と、
前記現行プログラムと前記他のバージョンのプログラムに関するバージョン情報を記憶するバージョン情報記憶手段と、
前記現行プログラムについてバージョンを変更させる旨の指示を受けると、前記現行プログラムを無効化し、前記他のバージョンのプログラムを有効化させるバージョン変更手段と、
前記有効化したプログラムに関するバージョン情報に所定機能の制限命令が含まれている場合、前記所定機能を制限する機能制限手段と、
を備えるプログラム管理装置。
【請求項２】
前記バージョン情報を取得する通信手段を有する請求項１に記載のプログラム管理装置。
【請求項３】
前記機能制限手段は、前記所定の機能の制限に関する情報を表示する表示手段を有する請求項１又は請求項２に記載のプログラム管理装置。
【請求項４】
暗号化されている前記バージョン情報を復号する復号手段を有する請求項１乃至請求項３のいずれかに記載のプログラム管理装置。
【請求項５】
前記バージョン情報は、プログラムの全ての機能を制限する前記制限命令を含み、前記機能制限手段は前記プログラムを停止する請求項１乃至請求項４のいずれかに記載のプログラム管理装置。
【請求項６】
前記プログラム管理装置は更に、前記現行のプログラムに対応するバージョン情報を前記通信手段より取得し、前記通信手段より取得した前記バージョン情報に前記所定機能の制限命令が含まれているか否かを判定するバージョン情報判定手段を備え、
前記バージョン情報判定手段が前記制限命令が含まれていると判定した場合、前記機能制限手段は前記現行プログラムの前記所定機能を制限する請求項２乃至請求項５のいずれかに記載のプログラム管理装置。
【請求項７】
前記バージョン情報判定手段は、バージョンを変更したとき、または、プログラムを初めて起動するとき、または、プログラムを毎回起動するときのうち少なくともいずれか一つのときに前記判定を行う請求項６に記載のプログラム管理装置。
【請求項８】
有効化されている現行プログラムと前記現行プログラムの他のバージョンのプログラムを記憶するプログラム記憶ステップと、
前記現行プログラムと前記他のバージョンのプログラムに関するバージョン情報を記憶するバージョン情報記憶ステップと、
前記現行プログラムについてバージョンを変更させる旨の指示を受けると、前記現行プログラムを無効化し、前記他のバージョンのプログラムを有効化させるバージョン変更ステップと、
前記有効化したプログラムに関するバージョン情報に所定機能の制限命令が含まれている場合、前記所定機能を制限する機能制限ステップと、
を備えるプログラム管理方法。
【請求項９】
有効化されている現行プログラムと前記現行プログラムの他のバージョンのプログラムを記憶するプログラム記憶ステップと、
前記現行プログラムと前記他のバージョンのプログラムに関するバージョン情報を記憶するバージョン情報記憶ステップと、
前記現行プログラムについてバージョンを変更させる旨の指示を受けると、前記現行プログラムを無効化し、前記他のバージョンのプログラムを有効化させるバージョン変更ステップと、
前記有効化したプログラムに関するバージョン情報に所定機能の制限命令が含まれている場合、前記所定機能を制限する機能制限ステップと、
を備えるプログラム管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、携帯電話、ＰＨＳ（Personal Handy-phone System）、ＰＤＡ（Personal Digital Assistant）などのマイコン（マイクロコンピュータ）を搭載してプログラムに従って動作する電子機器に用いて好適なプログラム管理装置及びプログラム管理方法に関する。
【背景技術】
【０００２】
従来、マイコンを搭載し、プログラムで動作する電子機器では、プログラムの致命的な欠陥やセキュリティホールが見つかった場合、プログラムのバージョンアップが行われる。
【０００３】
プログラムのバージョンアップ時に何等かの理由でエラーが発生したり、バージョンアップしたプログラムにバグがあったりすると電子機器が使用不能になる虞がある。このため、バージョンアップ前の元のプログラムに戻すことを可能にした提案がある（例えば、特許文献１、特許文献２参照）。
【０００４】
特許文献１では、携帯電話のソフトウェアをバージョンアップしてプログラムを書き換える前に以前のバージョンのプログラムをフラッシュメモリに保存しておき、バージョンアップしたプログラムをインストール中にエラーが発生すると、以前のバージョンのプログラムに戻せるようにしている。特許文献２では、プログラムのダウンロードにおいて最新のプログラムだけでなく過去のプログラムも含めて保存し、プログラムのバージョンを遡及させる指示があると、過去のバージョンのプログラムを有効化させるようにしている。
【０００５】
【特許文献１】特開２００５−２１５８４１号公報
【特許文献２】特開２０００−２９３３６５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、バージョンアップしたプログラムにバグがあって以前のバージョンのプログラムに戻した場合、以前のバージョンが持つバグや不具合も戻ってしまうという問題がある。また、プログラムをバージョンアップしても悪意のある第三者によって以前のバージョンのプログラムに戻されてしまうと、継続して悪用されるという問題もある。
【０００７】
本発明は、かかる事情に鑑みてなされたものであり、プログラムをバージョンアップした後、以前のバージョンのプログラムに戻しても以前のバージョンのプログラムが持つバグや不具合が戻ることがなく、また悪意のある第三者が継続して悪用することも防止することができるプログラム管理装置及びプログラム管理方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明のプログラム管理装置は、有効化されている現行プログラムと前記現行プログラムの他のバージョンのプログラムを記憶するプログラム記憶手段と、前記現行プログラムと前記他のバージョンのプログラムに関するバージョン情報を記憶するバージョン情報記憶手段と、前記現行プログラムについてバージョンを変更させる旨の指示を受けると、前記現行プログラムを無効化し、前記他のバージョンのプログラムを有効化させるバージョン変更手段と、前記有効化したプログラムに関するバージョン情報に所定機能の制限命令が含まれている場合、前記所定機能を制限する機能制限手段と、を備える。
【０００９】
上記構成によれば、例えば、マイコンを搭載した電子機器を動作させるプログラムのバージョンを変更する場合、現在有効化されている現行プログラムを無効化し、指定された他のバージョンのプログラムを有効化し、更に有効化したバージョンに関するバージョン情報に所定機能を制限する制限命令が含まれていれば、当該バージョンのプログラムの所定機能の利用を制限するので、プログラムをバージョンアップした後、以前のバージョンのプログラムに戻しても以前のバージョンのプログラムが持つバグや不具合が戻ることがなく、また悪意のある第三者が継続して悪用することも防止することが可能となる。
【００１０】
また、本発明のプログラム管理装置は、前記バージョン情報を取得する通信手段を有する。
【００１１】
上記構成によれば、プログラムを作成する外部機器やプログラムを記憶した記憶用機器と通信することができ、該機器からプログラムのバージョン情報を取得することができる。
【００１２】
また、本発明のプログラム管理装置は、前記機能制限手段は前記機能制限に関する情報を表示する表示手段を有する。
【００１３】
上記構成によれば、ユーザが使用しようとしているプログラムに機能制限がかかっていることを該ユーザに通知することができる。
【００１４】
また、本発明のプログラム管理装置は、暗号化されている前記バージョン情報を復号する復号手段を有する。
【００１５】
上記構成によれば、バージョン情報を暗号化することで、バージョン情報の改ざんを防止することができる。
【００１６】
また、本発明のプログラム管理装置の前記バージョン情報は、プログラムの全ての機能を制限する前記制限命令を含み、前記機能制限手段は前記プログラムを停止する。
【００１７】
上記構成によれば、プログラムをバージョンアップした後、以前のバージョンのプログラムに戻しても以前のバージョンのプログラムが持つバグや不具合が戻ることがなく、また悪意のある第三者が継続して悪用することも防止することが可能となる。
【００１８】
また、本発明のプログラム管理装置は、前記プログラム管理装置は更に、前記現行のプログラムに対応するバージョン情報を前記通信手段より取得し、前記通信手段より取得した前記バージョン情報に前記所定機能の制限命令が含まれているか否かを判定するバージョン情報判定手段を備え、前記バージョン情報判定手段が前記制限命令が含まれていると判定した場合、前記機能制限手段は前記現行プログラムの前記所定機能を制限する。
【００１９】
上記構成によれば、現行のプログラムに対応するバージョン情報の判定を行うので、バージョン変更時に不正なロールバックを発見することができ、悪意のある第三者による継続運用を防止できる。
【００２０】
また、本発明のプログラム管理装置は、前記バージョン情報判定手段は、バージョンを変更したとき、または、プログラムを初めて起動するとき、または、プログラムを毎回起動するときのうち少なくともいずれか一つのときに前記判定を行う。
【００２１】
上記構成によれば、バージョンを変更したとき、プログラムを初めて起動するとき及びプログラムを毎回起動するときのうちいずれかに現行のプログラムに対応するバージョン情報の判定を行うので、プログラムを初めて起動するときに不正なロールバックを発見することができ、悪意のある第三者による継続運用を防止できる。
【００２２】
本発明のプログラム管理方法は、有効化されている現行プログラムと前記現行プログラムの他のバージョンのプログラムを記憶するプログラム記憶ステップと、前記現行プログラムと前記他のバージョンのプログラムに関するバージョン情報を記憶するバージョン情報記憶ステップと、前記現行プログラムについてバージョンを変更させる旨の指示を受けると、前記現行プログラムを無効化し、前記他のバージョンのプログラムを有効化させるバージョン変更ステップと、前記有効化したプログラムに関するバージョン情報に所定機能の制限命令が含まれている場合、前記所定機能を制限する機能制限ステップと、を備える。
【００２３】
上記方法によれば、例えば、マイコンを搭載した電子機器を動作させるプログラムのバージョンを変更する場合、有効化されている現行プログラムを無効化し、指定された他のバージョンを有効化し、更に有効化したバージョンに関するバージョン情報に所定機能を制限する制限命令が含まれていれば、当該バージョンのプログラムの所定機能の利用を制限するので、プログラムをバージョンアップした後、以前のバージョンのプログラムに戻しても以前のバージョンのプログラムが持つバグや不具合が戻ることがなく、また悪意のある第三者が継続して悪用することも防止することが可能となる。
【００２４】
本発明のプログラム管理プログラムは、有効化されている現行プログラムと前記現行プログラムの他のバージョンのプログラムを記憶するプログラム記憶ステップと、前記現行プログラムと前記他のバージョンのプログラムに関するバージョン情報を記憶するバージョン情報記憶ステップと、前記現行プログラムについてバージョンを変更させる旨の指示を受けると、前記現行プログラムを無効化し、前記他のバージョンのプログラムを有効化させるバージョン変更ステップと、前記有効化したプログラムに関するバージョン情報に所定機能の制限命令が含まれている場合、前記所定機能を制限する機能制限ステップと、を備える。
【００２５】
上記プログラムによれば、例えば、マイコンを搭載した電子機器を動作させるプログラムのバージョンを変更する場合、有効化されているバージョンのプログラムを無効化し、指定された他のバージョンを有効化し、更に有効化したバージョンに関するバージョン情報に所定機能を制限する制限命令が含まれていれば、当該バージョンのプログラムの所定機能の利用を制限するので、プログラムをバージョンアップした後、以前のバージョンのプログラムに戻しても以前のバージョンのプログラムが持つバグや不具合が戻ることがなく、また悪意のある第三者が継続して悪用することも防止することが可能となる。
【発明の効果】
【００２６】
本発明によれば、プログラムをバージョンアップした後、以前のバージョンのプログラムに戻しても以前のバージョンのプログラムが持つバグや不具合が戻ることがなく、また悪意のある第三者が継続して悪用することも防止することができる。
【発明を実施するための最良の形態】
【００２７】
以下、本発明を実施するための好適な実施の形態について、図面を参照して詳細に説明する。
【００２８】
図１は、本発明の一実施の形態に係るプログラム管理装置の概略構成を示すブロック図である。同図において、本実施の形態のプログラム管理装置１は、プログラム開発環境側と移動機環境側の２つの部分から構成される。
【００２９】
（プログラム管理装置１のプログラム開発環境側）
プログラム管理装置１のプログラム開発環境側は、操作部２１と、プログラム作成部２２と、メモリ部２３と、表示制御部２４と、表示部２５と、ハッシュ値計算部２６と、暗号化処理部２７と、通信部２８と、制御部２９とを備える。操作部２１は、プログラムの作成や各種処理を実行させるための操作を行う。プログラム作成部２２は、移動機３を動作させるためのプログラム（以下、移動機プログラムと呼ぶ）を作成する。メモリ部２３は、プログラム作成装置２を動作させるための制御プログラムを記憶するとともに、プログラム作成部２２で作成された移動機プログラムを記憶する。
【００３０】
表示制御部２４は、操作部２１による入力情報や移動機プログラムを表示部２５に表示するための制御を行う。表示部２５は、ＬＣＤ（Liquid Crystal Display）やＥＬ（Electro Luminescence）などのディスプレイを有する。ハッシュ値計算部２６は、移動機プログラムのハッシュ値を計算する。暗号化処理部２７は、ハッシュ値計算部２６が計算した移動機プログラムの“ハッシュ値”と、前記移動機プログラムの“バージョン番号”と、各バージョン毎に動作を制限する“機能制限情報”とを暗号化し、暗号化認証情報を得る。
【００３１】
暗号化認証情報に含まれる“機能制限情報”は、動作を制限したいバージョンの移動機プログラムに対して、動作を制限したい機能を指定する情報である。例えば、バージョン番号“２”（Ｖｅｒ２）の移動機プログラムのある機能を制限する場合、その機能とバージョン番号“２”の機能制限情報を作成することになる。暗号化認証情報は、主に最新のバージョンの移動機プログラムが作成される際に作成される。例えば、最新のバージョンを“３”（Ｖｅｒ３）とすると、そのバージョンと、それ以前のバージョン（“２”、“１”）に対して作成される。通常、最新のバージョンの移動機プログラムにはバグや不具合がないものとするので、最新の移動機プログラムに対しては動作を制限したい機能の指定を行わない。機能制限情報については移動機３側の説明において再度説明する。
【００３２】
通信部２８は、移動機環境側の通信部３１と通信を行い、メモリ部２３に記憶されている移動機プログラムと暗号化処理部２７からの暗号化認証情報を移動機環境側へ送信する。制御部２９は、プログラム管理装置１のプログラム開発環境側の各部の制御を行う。制御部２９は、操作部２１から移動機プログラムを作成する指示があると、プログラム作成部２２を動作させて移動機プログラムの作成を行う。移動機プログラムが完成した後は、それをメモリ部２３に格納する。移動機プログラムをメモリ部２３に格納した後、移動機プログラムを移動機環境側へ送信する指示があると、メモリ部２３から移動機プログラムを読み出し、通信部２８を介して移動機環境側へ送信する。また、メモリ部２３に格納された移動機プログラムをハッシュ値計算部２６に送り、ハッシュ値を計算させる。ハッシュ値計算部２６でハッシュ値が計算された後、暗号化処理部２７で暗号化処理させる。そして、暗号化処理して得られた暗号化認証情報を、通信部２８を介して移動機環境側へ送信する。
【００３３】
このようにプログラム管理装置１のプログラム開発環境側では、最新のバージョンの移動機プログラムを作成するとともに、作成した移動機プログラムからハッシュ値を計算し、得られたハッシュ値と、移動機プログラムのバージョン番号と、各バージョン毎に動作を制限する機能制限情報とを暗号化して暗号化認証情報を作成し、この暗号化認証情報と最新のバージョンの移動機プログラムをプログラム管理装置１の移動機環境側へ送信する。移動機環境側に機能制限情報を送ることで、例えば最新バージョンの移動機プログラムから以前のバージョンの移動機プログラムにロールバックするような場合、以前のバージョンの移動機プログラムの所望の機能を制限することができる。すなわち、以前のバージョンの移動機プログラムにバグや不具合があっても、それを実行する機能を制限することができ、また悪意のある第三者が継続して悪用することも防止することができる。なお、機能制限情報は、必ずしも最新バージョンの移動機プログラムと同時に送信する必要はなく、移動機プログラムとは別に送信することは勿論可能である。
【００３４】
（プログラム管理装置１の移動機環境側）
図１において、プログラム管理装置１の移動機環境側は、通信部３１と、メモリ部３２と、バージョン判定部３３と、復号部３４と、比較部３５と、メモリ制御部３６と、フラッシュメモリ３７と、表示制御部３８と、ディスプレイ３９と、制御部４０とを備える。
【００３５】
通信部３１は、プログラム管理装置１のプログラム開発環境側の通信部２８と通信を行い、通信部２８から送られてくる移動機プログラムと暗号化認証情報を受信する。メモリ部３２は、プログラム管理装置１のプログラム開発環境側から送られてくる移動機プログラムと暗号化認証情報等を記憶する。このメモリ部３２には、新旧のバージョンを問わずプログラム管理装置１のプログラム開発環境側から送られてくる移動機プログラムが格納される。
【００３６】
バージョン判定部３３は、メモリ部３２に格納された移動機プログラムの最新バージョンを判定し、その結果をメモリ部３２に書き込む。また、バージョン判定部３３は、メモリ部３２に格納された移動機プログラムのハッシュ値を計算し、その結果をメモリ部３２に書き込む。バージョン判定部３３におけるバージョン判定は、（１）移動機プログラムのバージョンを変更したとき、（２）移動機プログラムを初めて起動するとき、（３）移動機プログラムを毎回起動するときのいずれかで行われ、いずれか１つが制御部３８によって指定される。復号部３４は、メモリ部３２に格納された暗号化認証情報を復号し、平文認証情報を得る。比較部３５は、メモリ部３２に格納された移動機プログラムのハッシュ値と平文認証情報に含まれるハッシュ値とを比較し、その結果を制御部３８に入力する。
【００３７】
メモリ制御部３６は、フラッシュメモリ３７に機能制限情報の履歴を記録する。図２に機能制限情報の履歴の一例を示す。図２では、バージョン番号１（Ｖｅｒ１）からバージョン番号３（Ｖｅｒ３）までの３つの機能制限情報が記録されている。機能制限情報は、“バージョン番号”、“ハッシュ値”、“使用許可フラグ”及び“機能Ａ〜Ｄ”で構成される。バージョン番号は、移動機プログラムのバージョン番号であり、ハッシュ値は該移動機プログラムのハッシュ値である。また、使用許可フラグは、当該バージョン（例えばＶｅｒ３）の全機能の動作を制限する情報である。不正なロールバックを防止したい場合は、この使用許可フラグを“１”に設定する。機能Ａ〜Ｄは、動作を制限したい機能であり、“○”は制限、“×”は非制限である。図２に示す例では、機能Ｃのみ制限している。なお、移動機プログラムが有する機能は、必ずしもＡ〜Ｄの４つの機能に限定されるものではなく、任意である。
【００３８】
表示制御部３８は、移動機の動作状況を表示部３９に表示するための制御を行う。特に、機能制限に係る情報を表示する。表示部３９は、ＬＣＤやＥＬなどのディスプレイを有する。制御部４０は、プログラム管理装置１の移動機環境側の各部の制御を行うものである。制御部４０は、プログラム管理装置１のプログラム開発環境側から送られてくる移動機プログラムをメモリ部３２に格納する。また、プログラム管理装置１のプログラム開発環境側から送られてくる暗号化認証情報をメモリ部３２に格納する。また、メモリ部３２に格納した暗号化認証情報を復号部３４に入力して復号させる。また、バージョン判定部３３に対し、メモリ部３２に格納した移動機プログラムのバージョンを判定させる。移動機プログラムのバージョンを判定させるタイミングは、上述したように、（１）移動機プログラムのバージョンを変更したとき、（２）移動機プログラムを初めて起動するとき、（３）移動機プログラムを毎回起動するときである。
【００３９】
また、制御部４０は、比較部３５にハッシュ値を比較する処理を指示する。すなわち、バージョン判定部３３が判定した移動機プログラムのハッシュ値と復号部３４の復号処理により得られた平文認証情報に含まれるハッシュ値を比較させる。そして、ハッシュ値の比較結果から、バージョン判定部３３が判定した移動機プログラムのバージョン番号と復号部３４の復号処理により得られた平文認証情報に含まれる移動機プログラムのバージョン番号とが一致する場合はバージョン判定部３３がバージョン判定した移動機プログラムに機能制限をかけず、一致しない場合は当該移動機プログラムに機能制限をかける。
【００４０】
すなわち、移動機環境側のメモリ部３２に格納されている移動機プログラムのバージョンが、プログラム管理装置１のプログラム開発環境側で作成した最新の移動機プログラムのバージョンと一致する場合は、移動機環境側のメモリ部３２に格納されている移動機プログラムが最新のバージョンのものであるので機能の制限をかける必要は無いが、一致しない場合は移動機環境側のメモリ部３２に格納されている移動機プログラムが最新のバージョンのものではないと想定できることから、当該移動機プログラムに対してフラッシュメモリ３７に記録された該当バージョンの機能制限情報に基づく機能の制限を行う。例えば、移動機プログラムの最新バージョン番号を“３”（Ｖｅｒ３）とし、移動機環境側のメモリ部３２に格納されている移動機プログラムのバージョン番号が“２”（Ｖｅｒ２）であったとすると、フラッシュメモリ３７の機能制限情報の履歴からバージョン番号“２”に該当する機能制限情報で指定される機能を制限する。
【００４１】
このようにプログラム管理装置１の移動機環境側では、プログラム管理装置１のプログラム開発環境側で作成された移動機プログラムをメモリ部３２に格納し、またプログラム管理装置１のプログラム開発環境側で作成された暗号化認証情報を復号して平文認証情報を得る。そして、移動機の起動時等の所定タイミングでメモリ部３２に格納した移動機プログラムのバージョンを判定し、更に当該移動機プログラムのハッシュ値を計算し、計算したハッシュ値と復号した平文認証情報に含まれる最新の移動機プログラムのハッシュ値とを比較し、一致する場合はメモリ部３２に格納された移動機プログラムに機能制限をかけず、一致しない場合はメモリ部３２に格納された移動機プログラムに機能制限をかける。
【００４２】
図３にプログラム管理装置１の動作の概要を模式的に示す。この図において、プログラム管理装置１のプログラム開発環境側では、移動機プログラムの作成指示に従って移動機プログラムの作成を行い、また作成した移動機プログラムのハッシュ値を計算する。更に、以前の全てのバージョンの移動機プログラムに対して動作を制限したい機能の情報を作成し、計算して得られたハッシュ値とともに暗号化し、暗号化認証情報を得る。この暗号化認証情報を最新のバージョンの移動機プログラムとともに移動機３側に送る。
【００４３】
プログラム管理装置１の移動機環境側では、プログラム開発環境側から送られてきた最新のバージョンの移動機プログラムをメモリ部３２に格納する。また、プログラム開発環境側から送られてきた暗号化認証情報を復号し平文暗証情報を得る。そして、得られた平文暗証情報からフラッシュメモリ３７に機能制限情報の履歴を記録する。この状態で、移動機が起動される毎にメモリ部３２に格納されている移動機プログラムのバージョンを判定するとともにハッシュ値を計算する。そして、計算したハッシュ値と平文暗証情報に含まれる最新の移動機プログラムのハッシュ値とを比較し、一致する場合はメモリ部３２に格納されている移動機プログラムが最新のバージョンのものであるとして機能制限せず、一致しない場合はメモリ部３２に格納されている移動機プログラムが最新のバージョンのものではないとしてフラッシュメモリ３７に記録された該当バージョンの機能制限情報に基づく機能制限を行う。
【００４４】
図４は、移動機環境側における移動機プログラムの改ざんを判定する処理を示すフローチャートである。この図において、まずプログラム管理装置１のプログラム開発環境側からプログラム管理装置１の移動機環境側に暗号化認証情報を送信する（ステップＳＴ１０）。次いで、プログラム管理装置１の移動機環境側において、フラッシュメモリ３７にハッシュ値と機能制限情報を保存する（ステップＳＴ１１）。次いで、メモリ部３２に格納されている移動機プログラムのハッシュ値を算出する（ステップＳＴ１２）。次いで、フラッシュメモリ３７内で一致するハッシュ値を検索し（ステップＳＴ１３）、一致するハッシュ値があれば、それに対応するバージョン番号を搭載プログラムバージョン情報としてメモリ部３２内に保存して本処理を終える（ステップＳＴ１４）。これに対して、一致するハッシュ値が無ければ、改ざんが行われたとして、改ざん検出時の異常時処理を行い（ステップＳＴ１５）、本処理を終える。
【００４５】
図５は、図４に示す処理の移動機環境側の処理を模式的に示した図である。この図において、暗号化認証情報を復号して平文の認証情報を得る（〔１〕）。そして、復号して得られた平文の認証情報をフラッシュメモリ３７に蓄積する（〔２〕）。次に、移動機プログラムのバージョンを判定するとともにハッシュ値を計算する（〔３〕）。そして、フラッシュメモリ３７内で、前記〔３〕で計算したハッシュ値と一致するハッシュ値を検索する（〔４〕）。一致するハッシュ値があれば、移動機プログラムを搭載プログラムとして、メモリ部３２に格納する（〔５〕）。
【００４６】
次に、アプリケーションプログラム実行時の制限事項の判定処理について説明する。上記では、移動機が動作するための移動機プログラムをバージョンアップする際の判定処理を説明したが、ここではアプリケーションプログラムを実行させた際の判定処理を説明する。アプリケーションプログラムとして例えば音楽再生用のものを例に挙げる。
【００４７】
図６及び図７は、音楽再生用のアプリケーションプログラム５を実行させた際の判定処理を模式的に示した図である。この場合、図６は機能制限されてない場合を示しており、図７は機能制限されている場合を示している。
【００４８】
音楽再生用のアプリケーションプログラム５から処理要求すなわち暗号化された音楽データの復号化の要求があると（〔１〕）、制御部４０は、搭載プログラム（移動機プログラム）のバージョンを取得する（〔２〕）。そして、暗号化された音楽データの復号に対する機能制限を問い合わせる（〔３〕）。すなわち、取得したバージョンの移動機プログラムに対して暗号化された音楽データの復号に対する機能制限があるかどうか問い合わせる。この問い合わせは、図１のメモリ制御部３６に対して行う。暗号化された音楽データの復号に対する機能制限が無ければ、復号部３４に対して暗号化された音楽データの復号を要求する（〔４〕）。復号部３４は、暗号化された音楽データを復号し、処理結果を制御部３８に送る（〔５〕）。制御部４０は、復号部３４から復号された音楽データを取得すると、それをアプリケーションプログラム５に送る（〔６〕）。
【００４９】
一方、取得したバージョンの移動機プログラムに対して暗号化された音楽データの復号に対する機能制限がある場合、すなわち図７に示すように、搭載プログラムのバージョンが“２”（Ｖｅｒ２）で、制限情報＝Ａ，Ｂが設定されている場合、復号部３４に対する処理要求を行わず、アプリケーションプログラム５に対して復号不能を通知する。アプリケーションプログラム５は、この復号不能通知に従い表示部３９に図８の（ａ）に示す表示（“この機能は動作が制限されています”）と「ＯＫ」ボタンを表示する制御を行う。ユーザがこの「ＯＫ」ボタンを押すと、表示部３９に図８の（ｂ）に示すように、“バージョンアップを行いますか？”と「ＹＥＳ」、「ＮＯ」の各ボタンを表示する制御を行う。なお、アプリケーションプログラム５の実行は、制御部３８が行うので、バージョンアップする場合は、制御部４０がプログラム管理装置１のプログラム開発環境側の制御部２９と連携して行う。
【００５０】
図９は、制御部４０の図６及び図７における動作を示すフローチャートである。この図において、制御部４０は、まずアプリケーションプログラム５の処理要求待ちを行う（ステップＳＴ２０）。この状態でアプリケーションプログラム５から処理要求があると、現在のプログラムのバージョンを取得する（ステップＳＴ２１）。すなわち、搭載プログラムバージョン情報を取得する。次いで、フラッシュメモリ３７より制限情報の取得を行い（ステップＳＴ２２）、その後、搭載プログラムのバージョンに対して制御情報の有無を判定し（ステップＳＴ２３）、制限情報が無ければ暗号化された音楽データの復号を実行する（ステップＳＴ２４）。すなわち、復号部３４に復号化処理を行わせる。暗号化された音楽データの復号が終了すると、その結果をアプリケーションプログラム５に送る（ステップＳＴ２５）。その後、ステップＳＴ２０に戻る。一方、ステップＳＴ２３の判定で制限情報がある場合は、アプリケーションプログラム５に制限情報を送る（ステップＳＴ２６）。例えば図６又は図７において、バージョン番号“２”（Ｖｅｒ２）の移動機プログラムにはＡ、Ｂの制限情報がある。アプリケーションプログラム５に制限情報を送った後、ステップＳＴ２０に戻る。
【００５１】
図１０は、アプリケーションプログラム５の図６及び図７における動作を示すフローチャートである。この図において、制御部４０に処理要求を行う（ステップＳＴ３０）。その後、制御部４０の処理が完了するまで待機し（ステップＳＴ３１）、その間、制御部４０の処理結果の判定を行う（ステップＳＴ３２）。制御部４０の処理結果が正常終了である場合は、通常の処理すなわち音楽再生を行う（ステップＳＴ３３）。これに対して、制御部４０の処理結果が異状終了である場合は、制限情報の表示（例えば図８の表示）を行う（ステップＳＴ３４）。
【００５２】
このように本実施の形態のプログラム管理装置１によれば、プログラム開発環境側では、最新のバージョンの移動機プログラムを作成するとともに、作成した移動機プログラムからハッシュ値を計算し、計算したハッシュ値と、移動機プログラムのバージョン番号と、各バージョン毎に動作を制限する機能制限情報とを暗号化して暗号化認証情報を作成し、この暗号化認証情報と最新のバージョンの移動機プログラムをプログラム管理装置１の移動機環境側へ送信する。移動機環境側では、プログラム管理装置１のプログラム開発環境側で作成された移動機プログラムをメモリ部３２に格納し、またプログラム管理装置１のプログラム開発環境側で作成された暗号化認証情報を復号して平文認証情報を得る。そして、移動機の起動時等の所定タイミングでメモリ部３２に格納した移動機プログラムのバージョンを判定し、更に当該移動機プログラムのハッシュ値を計算し、計算したハッシュ値と復号した平文認証情報に含まれる最新の移動機プログラムのハッシュ値とを比較し、一致する場合はメモリ部３２に格納された移動機プログラムに機能制限をかけず、一致しない場合はメモリ部３２に格納された移動機プログラムに機能制限をかける。
【００５３】
各バージョン毎に動作を制限したい機能の情報である機能制限情報を作成することで、例えば最新バージョンの移動機プログラムから以前のバージョンの移動機プログラムにロールバックするような場合に、以前のバージョンの移動機プログラムの所望の機能を制限することができる。すなわち、以前のバージョンの移動機プログラムにバグや不具合があっても、それを実行する機能を制限することができ、また悪意のある第三者が継続して悪用することも防止することができる。
【産業上の利用可能性】
【００５４】
本発明は、プログラムをバージョンアップした後、以前のバージョンのプログラムに戻しても以前のバージョンのプログラムが持つバグや不具合が戻ることがなく、また悪意のある第三者が継続して悪用することも防止することができるといった効果を有し、携帯電話、ＰＨＳ、ＰＤＡなどのマイコンを搭載してプログラムに従って動作する電子機器全てに適用が可能である。
【図面の簡単な説明】
【００５５】
【図１】本発明の一実施の形態に係るプログラム管理装置の概略構成を示すブロック図
【図２】図１のプログラム管理装置で用いられる機能制限情報を説明するための図
【図３】図１のプログラム管理装置の動作の概要を模式的に示す図
【図４】図１のプログラム管理装置の移動機環境側における移動機プログラムの改ざんを判定する処理を示すフローチャート
【図５】図４に示す処理の移動機環境側の処理を模式的に示した図
【図６】機能制限されてない場合で、音楽再生用のアプリケーションプログラムを実行させた際の判定処理を模式的に示した図
【図７】機能制限されている場合で、音楽再生用のアプリケーションプログラムを実行させた際の判定処理を模式的に示した図
【図８】機能制限されている場合で、音楽再生用のアプリケーションプログラムを実行させた際の判定処理におけるユーザ通知表示例を示す図
【図９】移動機環境側の制御部の図６及び図７における動作を示すフローチャート
【図１０】アプリケーションプログラムの図６及び図７における動作を示すフローチャート
【符号の説明】
【００５６】
１  プログラム管理装置
２  プログラム作成装置
３  移動機
５  アプリケーションプログラム
２１  操作部
２２  プログラム作成部
２３、３２  メモリ部
２４、３８  表示制御部
２５、３９  表示部
２６  ハッシュ値計算部
２７  暗号化処理部
２８、３１  通信部
２９、４０  制御部
３３  バージョン判定部
３４  復号部
３５  比較部
３６  メモリ制御部
３７  フラッシュメモリ
【図１】
2009199497.tif 000003
【図２】
2009199497.tif 000004
【図３】
2009199497.tif 000005
【図４】
2009199497.tif 000006
【図５】
2009199497.tif 000007
【図６】
2009199497.tif 000008
【図７】
2009199497.tif 000009
【図８】
2009199497.tif 000010
【図９】
2009199497.tif 000011
【図１０】
2009199497.tif 000012