(57)【要約】【課題】製造コストを低減できかつ復号化プログラムの変更が容易な制御装置および制御プログラム不正読み出し防止方法を提供する。【解決手段】制御プログラム３１に基づいて制御対象を制御するプロセッサ５と、前記制御プログラム３１を記憶する外部記憶領域３とを有する制御装置１であって、前記プロセッサ５は、外部から書き込み可能かつ読み出し禁止状態に設定可能な内部記憶領域７を有し、前記制御プログラム３１は暗号化された状態で前記外部記憶領域３に記憶され、前記制御プログラム３１を復号化するための復号化ルーチン７２が前記内部記憶領域７に記憶されている。【選択図】図１
2013097539.tif 000002
【特許請求の範囲】
【請求項１】
制御プログラムに基づいて制御対象を制御するプロセッサと、前記制御プログラムを記憶する外部記憶領域とを有する制御装置であって、
前記プロセッサは、外部から書き込み可能かつ読み出し禁止状態に設定可能な内部記憶領域を有し、
前記制御プログラムは暗号化された状態で前記外部記憶領域に記憶され、
前記制御プログラムを復号化するための復号化ルーチンが前記内部記憶領域に記憶されていることを特徴とする制御装置。
【請求項２】
請求項１に記載した制御装置において、
前記プロセッサとして、制御プログラムに基づいて制御対象を制御する主プロセッサと、外部から書き込み可能かつ読み出し禁止状態に設定可能な内部記憶領域を有する補助プロセッサと、を備えることを特徴とする制御装置。
【請求項３】
制御プログラムに基づいて制御対象を制御するプロセッサと、前記制御プログラムを記憶する外部記憶領域とを有する制御装置の制御プログラム不正読み出し防止方法であって、
前記プロセッサとして、外部から書き込み可能かつ読み出し禁止状態に設定可能な内部記憶領域を有するものを用い、前記制御プログラムを暗号化した状態で前記外部記憶領域に記憶し、前記制御プログラムを復号化するための復号化ルーチンを前記内部記憶領域に記憶しておく準備工程と、
前記制御装置を起動した際に、前記プロセッサが、前記内部記憶領域内の前記復号化ルーチンを参照し、前記復号化ルーチンを用いて前記外部記憶領域内の前記制御プログラムを復号化する復号化工程と、
復号化された前記制御プログラムに基づいて前記プロセッサが前記制御装置としての制御動作を行う稼働工程と、を有することを特徴とする制御プログラム不正読み出し防止方法。
【請求項４】
請求項３に記載した制御プログラム不正読み出し防止方法において、
前記プロセッサとして、制御プログラムに基づいて前記制御対象を制御する主プロセッサと、外部から書き込み可能かつ読み出し禁止状態に設定可能な内部記憶領域を有する補助プロセッサと、を用いることを特徴とする制御プログラム不正読み出し防止方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置および制御プログラム不正読み出し防止方法に関する。
【背景技術】
【０００２】
従来、産業用・商用あるいは民生用の機器には、その動作制御を行うためにプログラム式の制御装置が利用されている。このような制御装置は、機器に必要な制御動作を記述した制御プログラムを実行する小型コンピュータシステムを基本として構成される。
制御装置に利用されるシステムでは、制御プログラムを実行する中央演算ユニット（ＣＰＵ）を含むプロセッサとして、組込用のマイクロコントローラ（ＭＣＵ）あるいは汎用のマイクロプロセッサ（ＭＰＵ）が利用される。そして、前述したプロセッサ（ＭＣＵ，ＭＰＵ）とともに、プロセッサの主記憶領域となる読み出し書き込み可能なランダムアクセスメモリ（ＲＡＭ）と、制御プログラムを格納しておく不揮発性の外部記憶領域としての読み出し専用メモリ（ＲＯＭ）とが設置される。一部のプロセッサ（ＭＣＵ，ＭＰＵ）では、一つのパッケージにＲＯＭおよびＲＡＭが一体に組み込まれる。
【０００３】
近年、組込用の制御装置における制御プログラムの不正使用が問題になっており、このような不正使用に対する耐性（耐タンパ性）の確保が要求されている。
制御装置における制御プログラムの不正使用としては、例えばＩ）制御プログラムを不正に読み出し、そのコピーを他の制御装置で不正に使用すること（違法コピー）、ＩＩ）読み出した制御プログラムを解析し（リバースエンジニアリング）、コピーそのものではないがプログラムの盗用を行うこと、ＩＩＩ）読み出した制御プログラムを書き換え、元の制御装置に戻してその動作をユーザの都合よく改変すること（遊技機の不正改造）等が顕著である。
【０００４】
このうち、遊技機の不正改造に対しては、元の制御プログラムに対する改変を検出することで、改変された制御プログラムに基づく制御装置の動作を停止させる技術が提案されている（特許文献１〜４）。
しかし、このような技術では、不正改造された制御プログラムの実行を防止できても、制御プログラムのコピーあるいは盗用を防止することができず、制御プログラムの不正利用を確実に防止するために、おおもとの不正読み出し行為自体の防止が要求されている。
【０００５】
ここで、制御プログラムの不正読み出し防止については、いわゆるデータの暗号化技術が周知である。
このような暗号化技術は、組込用の制御装置においても利用されており、例えばＲＯＭ内に格納しておく制御プログラムを予め暗号化しておき、暗号化済の制御プログラムを動作に先立って復号化してＲＡＭ上に展開し、復号化されたＲＡＭ上の制御プログラムに基づいてプロセッサが制御動作を行うことがなされている（特許文献５〜７）。
特許文献５〜７では、制御プログラムの暗号解読を行うための復号化プログラムを、プロセッサ内に記憶させることで、ＲＯＭ内に格納された暗号化制御プログラムだけを読み出しても、その後の解析等の利用ができないようにしている。
【０００６】
ところで、特許文献５〜７の技術を利用しても、復号化プログラムがプロセッサから不正に読み出されてしまうと、この復号化プログラムを利用してＲＯＭに格納された暗号化制御プログラムを復号化されてしまうことになる。
そこで、制御装置として利用するＭＣＵ等にセキュリティ保持用の専用ハードウェアを設け、プロセッサ内に記憶された復号化プログラムの不正読み出しを防止する技術が提案されている（特許文献８）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特許第２６２００２０号公報
【特許文献２】特許第２９７５５２２号公報
【特許文献３】特許第３４９５４０９号公報
【特許文献４】特許第４０２７７３８号公報
【特許文献５】特開平１０−２２８３７４号公報
【特許文献６】特開平８−３０５５５８号公報
【特許文献７】特開２００３−１６２３４１号公報
【特許文献８】特開２０００−２９７９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、特許文献８のようなセキュリティ機能を、専用ハードウェアとしてプロセッサに追加することは、プロセッサないしこれを組み込んだ制御装置の製造コスト上昇に繋がる。また、復号化プログラムの変更のつど、プロセッサの回路および製造プロセスの変更が必要であり、コストだけでなく製品納期に影響する可能性があった。
【０００９】
本発明の目的は、製造コストを低減できかつ復号化プログラムの変更が容易な制御装置および制御プログラム不正読み出し防止方法を提供することにある。
【課題を解決するための手段】
【００１０】
本発明の制御装置は、制御プログラムに基づいて制御対象を制御するプロセッサと、前記制御プログラムを記憶する外部記憶領域とを有する制御装置であって、
前記プロセッサは、外部から書き込み可能かつ読み出し禁止状態に設定可能な内部記憶領域を有し、
前記制御プログラムは暗号化された状態で前記外部記憶領域に記憶され、
前記制御プログラムを復号化するための復号化ルーチンが前記内部記憶領域に記憶されていることを特徴とする。
【００１１】
このような本発明においては、予め外部記憶領域に暗号化した制御プログラムを書き込んでおくとともに、内部記憶領域に復号化ルーチンを書き込んでおく。
動作にあたって、プロセッサは、内部記憶領域内の復号化ルーチンを参照し、この復号化ルーチンを用いて外部記憶領域内の暗号化済制御プログラムを読み出して復号化し、主記憶領域上などに復号化された制御プログラムを展開する。そして、プロセッサは、復号化された制御プログラムに基づいて動作を行い、制御装置としての制御動作を開始する。
なお、前述した動作を行うために、プロセッサの起動プログラム（ＩＰＬ，ブートローダ）に、内部記憶領域内の復号化ルーチンを用いて外部記憶領域内の暗号化済制御プログラムを復号化し、復号化された制御プログラムに基づいて制御を行うように記述しておくとよい。この場合、制御装置を起動すると、プロセッサがＩＰＬに基づいて動作を行うことで、上記動作が実現される。
【００１２】
このように、本発明では、外部記憶領域の制御プログラムは暗号化されているため、例え読み出されても解読することができず、不正読み出しに対して保護される。
暗号化された制御プログラムの復号化には、内部記憶領域に記憶された復号化ルーチンが必要である。内部記憶領域は、製造時等に復号化ルーチンを書き込まれた後、外部読み出し禁止状態とされる。この状態では、プロセッサが制御プログラムの復号化を行う処理以外、外部読み出しができない。従って、復号化ルーチンの不正読み出しが防止され、復号化ルーチンによる制御プログラムの不正な復号化を防止することができる。
とくに、本発明では、セキュリティ機能つきの内部記憶領域に復号化ルーチンを格納するため、暗号化された制御プログラムに関して高い防護性能が得られる。
【００１３】
さらに、本発明では、制御プログラムは外部記憶領域に格納されるので、外部記憶領域を拡張することで大きな制御プログラムにも対応できる。つまり、内部記憶領域に制御プログラムを格納しようとすると問題となるプログラムサイズの制限を受けることがない。
以上により、本発明では、不正読み出しに対して強力な保護が得られるとともに、例えばセキュリティ機能つき不揮発性メモリ内蔵のプロセッサ等の市販品を用いることで、本発明の構成を容易に実現することができる。
従って、専用ハードウェアを利用した場合のようなコスト上昇が避けられるとともに、復号化ルーチンが変更された場合でも、内部記憶領域の書き換えを行えばよく、プロセッサの回路および製造プロセスの変更のような煩雑な対応が必要ないため、コストおよび製造納期の問題を回避できる。
【００１４】
本発明の制御装置は、前記プロセッサとして、制御プログラムに基づいて制御対象を制御する主プロセッサと、外部から書き込み可能かつ読み出し禁止状態に設定可能な内部記憶領域を有する補助プロセッサと、を備えることが望ましい。
このような本発明の構成は、次のように言い換えることができる。
本発明の制御装置は、制御プログラムに基づいて制御対象を制御する主プロセッサと、前記制御プログラムを記憶する外部記憶領域と、外部から書き込み可能かつ読み出し禁止状態に設定可能な内部記憶領域を有する補助プロセッサと、を有し、
前記制御プログラムは暗号化された状態で前記外部記憶領域に記憶され、
前記制御プログラムを復号化するための復号化ルーチンが前記内部記憶領域に記憶されている。
【００１５】
本発明において、補助プロセッサおよびその内部記憶領域については、先に本発明で用いることができるプロセッサとして説明した通り、セキュリティ機能つき不揮発性メモリ内蔵のプロセッサ等の市販品を用いることができる。一方、主プロセッサは、外部記憶領域つまり制御プログラムを記憶するＲＯＭおよび主記憶領域となるＲＡＭ等とともに、既存のマイクロコントローラ等の制御装置を構成するものであればよい。
つまり、本発明の構成は、主プロセッサおよび外部記憶領域を有する既存の制御装置に、復号化用の補助プロセッサを追加した構成ということができる。
【００１６】
このような本発明においては、予め外部記憶領域に暗号化した制御プログラムを書き込んでおくとともに、補助プロセッサの内部記憶領域に復号化ルーチンを書き込んでおく。
補助プロセッサは、内部記憶領域内の復号化ルーチンを参照し、この復号化ルーチンを用いて外部記憶領域内の暗号化済制御プログラムを読み出して復号化し、主記憶領域上などに復号化された制御プログラムを展開する。主プロセッサは、復号化された制御プログラムに基づいて動作を行い、制御装置としての制御動作を開始する。
【００１７】
なお、主プロセッサの起動プログラム（ＩＰＬ，ブートローダ）には、起動後に補助プロセッサに制御を移し、補助プロセッサから制御が戻された際には復号化された制御プログラムに基づいて主プロセッサが動作するように記述しておくとよい。また、補助プロセッサの起動プログラム（ＩＰＬ，ブートローダ）には、起動された後、内部記憶領域内の復号化ルーチンを用いて外部記憶領域内の暗号化済制御プログラムを復号化し、その後に主プロセッサに制御を戻すように記述しておくとよい。この場合、制御装置を起動すると、主プロセッサは、ＩＰＬに基づいて補助プロセッサを起動し、補助プロセッサが制御プログラムの復号化を行う。復号化の後、補助プロセッサは主プロセッサに制御を戻し、主プロセッサが復号化された制御プログラムに基づいて動作する。
【００１８】
このような本発明によれば、主プロセッサと補助プロセッサとが協働すること、つまり主プロセッサにより起動と制御動作を行い、補助プロセッサにより復号化を行うという分担により、前述した本発明の制御装置（プロセッサが単独のもの）と同様な作用効果を奏することができる。
さらに、本発明では、主プロセッサによる起動および制御動作に対し、復号化の機能を補助プロセッサに分離することができる。このため、主プロセッサと外部記憶領域を有する既存の制御装置に、本発明に基づくセキュリティ機能つき内部記憶領域を有する補助プロセッサを付加することで、本発明の制御装置を構成することができる。
従って、既存の制御装置に、本発明の補助プロセッサを追加することで、本発明の制御装置を容易に実現できるとともに、既に稼働状態にある制御装置に対しても、本発明の補助プロセッサを追加することで、本発明の制御装置とすることができ、本発明の適用範囲を拡大することができる。
【００１９】
本発明の制御プログラム不正読み出し防止方法は、制御プログラムに基づいて制御対象を制御するプロセッサと、前記制御プログラムを記憶する外部記憶領域とを有する制御装置の制御プログラム不正読み出し防止方法であって、
前記プロセッサとして、外部から書き込み可能かつ読み出し禁止状態に設定可能な内部記憶領域を有するものを用い、前記制御プログラムを暗号化した状態で前記外部記憶領域に記憶し、前記制御プログラムを復号化するための復号化ルーチンを前記内部記憶領域に記憶しておく準備工程と、
前記制御装置を起動した際に、前記プロセッサが、前記内部記憶領域内の前記復号化ルーチンを参照し、前記復号化ルーチンを用いて前記外部記憶領域内の前記制御プログラムを復号化する復号化工程と、
復号化された前記制御プログラムに基づいて前記プロセッサが前記制御装置としての制御動作を行う稼働工程と、を有することを特徴とする。
このような本発明の方法によれば、前述した本発明の制御装置（プロセッサが単独のもの）で説明した通りの作用効果を得ることができる。
【００２０】
本発明の制御プログラム不正読み出し防止方法において、前記プロセッサとして、制御プログラムに基づいて前記制御対象を制御する主プロセッサと、外部から書き込み可能かつ読み出し禁止状態に設定可能な内部記憶領域を有する補助プロセッサと、を用いることが望ましい。
このような本発明の方法は、次のように言い換えることができる。
本発明の制御プログラム不正読み出し防止方法は、制御プログラムに基づいて制御対象を制御するプロセッサと、前記制御プログラムを記憶する外部記憶領域とを有する制御装置の制御プログラム不正読み出し防止方法であって、
前記プロセッサとして、前記制御プログラムに基づいて前記制御対象を制御する主プロセッサと、外部から書き込み可能かつ読み出し禁止状態に設定可能な内部記憶領域を有する補助プロセッサと、を用い、前記制御プログラムを暗号化した状態で前記外部記憶領域に記憶し、前記制御プログラムを復号化するための復号化ルーチンを前記内部記憶領域に記憶しておく準備工程と、
前記制御装置を起動した際に、前記プロセッサが、前記内部記憶領域内の前記復号化ルーチンを参照し、前記復号化ルーチンを用いて前記外部記憶領域内の前記制御プログラムを復号化する復号化工程と、
復号化された前記制御プログラムに基づいて前記プロセッサが前記制御装置としての制御動作を行う稼働工程と、を有するものである。
このような本発明の方法によれば、前述した本発明の制御装置（主プロセッサと補助プロセッサを用いるもの）で説明した通りの作用効果を得ることができる。
【図面の簡単な説明】
【００２１】
【図１】本発明の第１実施形態の制御装置を示すブロック図。
【図２】前記第１実施形態の処理を示すフローチャート。
【図３】本発明の第２実施形態の制御装置を示すブロック図。
【図４】前記第２実施形態の処理を示すフローチャート。
【図５】本発明の第３実施形態の制御装置を示すブロック図。
【図６】前記第３実施形態の処理を示すフローチャート。
【図７】本発明の第４実施形態の制御装置を示すブロック図。
【図８】前記第４実施形態の処理を示すフローチャート。
【発明を実施するための形態】
【００２２】
以下、本発明の実施形態を図面に基づいて説明する。
〔第１実施形態〕
図１および図２には、本発明の第１実施形態が示されている。
図１において、本実施形態の制御装置１は、機器類に組み込まれてこの機器類の図示しない動作部分の動作制御を行うための組込用制御システムである。
制御装置１は、システムバス２に接続されたＲＯＭ３、ＲＡＭ４およびＭＣＵ５を備えている。
【００２３】
ＲＯＭ３は、読み出し専用メモリ素子で構成された外部記憶領域であり、システムバス２を介してＭＣＵ５から随時記憶内容の読み出しが可能である。
ＲＡＭ４は、読み出しおよび書き込み可能なメモリ素子で構成され、ＭＣＵ５の主記憶領域として配置されており、システムバス２を介してＭＣＵ５から随時記憶内容の読み出しあるいは書き込みが可能である。
ＭＣＵ５は、組込用のマイクロコントローラで構成されたプロセッサであり、パッケージ内部にＣＰＵ６およびＦＲＯＭ７を有する。
【００２４】
具体的に、ＭＣＵ５は、外部から書き込み可能かつ読み出し禁止状態に設定可能な内部記憶領域を有するプロセッサであり、例えば一つの集積回路パッケージに、中央演算ユニット（ＣＰＵ）と、内部記憶領域としての書き換え可能な不揮発性メモリ（例えばＥＰＲＯＭ、ＰＲＯＭ、フラッシュＲＯＭ等）とを有し、さらに不揮発性メモリに対する外部からの読み出しを禁止するセキュリティ機能を有するものが利用できる。
このような不揮発性メモリに対するセキュリティ機能は、ＣＰＵの制御により行うことができ、内部メモリあるいは外部メモリに指定された特定アドレスの情報を参照する方式、予め定められたプロテクトコードにより認証を行う方式が採用できる。さらに、回路テスト用のＪＴＡＧと呼ばれるインターフェースを用いたハードウェアによる書き込み禁止モード切替を利用することもできる。
【００２５】
このようなプロセッサにおいて、同一パッケージ内のＣＰＵからは、読み出し禁止状態の設定に拘わらず不揮発性メモリ内のデータを読み出せるものとする。すなわち、不揮発性メモリのセキュリティ機能が有効で、外部からの不揮発性メモリの読み出しが禁止された状態であっても、ＣＰＵは読み出し禁止状態を解除することなしに不揮発性メモリ内のデータを読み出せるものとする。
このようなセキュリティ機能つき不揮発性メモリを有するプロセッサは、市販されている組込用マイクロコントローラ（ＭＣＵ）あるいはマイクロプロセッサ（ＭＰＵ）製品から選択することができる。
具体的には、セキュリティ機能つきフラッシュＲＯＭを内蔵したマイクロコントローラとして、株式会社東芝製ＴＭＰ９１シリーズ、米国テキサスインスツルメンツ製ＭＳＰ４３０シリーズ等がある。
【００２６】
前述の通り、ＭＣＵ５は、ＣＰＵ６およびＦＲＯＭ７を有する。
ＣＰＵ６は、既存のマイクロプロセッサ等に設置される中央処理ユニットであり、システムバス２を介して外部記憶領域であるＲＯＭ３の内容を読み出しが可能であり、主記憶領域であるＲＡＭ４に対して情報の読み出しあるいは書き込みが可能である。
ＣＰＵ６には、ＩＰＬ６１が配置されている。
ＩＰＬ６１は、起動時の動作を定めるいわゆるブートローダであり、ＣＰＵ６が起動された際には、先ずＩＰＬ６１が読み込まれ、その内容に従って動作が行われる。
本実施形態において、ＩＰＬ６１には、起動された際にＣＰＵ６は必要な初期化を行った後、後述するＦＲＯＭ７のＩＰＬ７１に従うことを指定するプログラムが設定されている。
【００２７】
ＦＲＯＭ７は、ＭＣＵ５の内部記憶領域として配置されたセキュリティ機能付のフラッシュＲＯＭであり、同じＭＣＵ５内にあるＣＰＵ６からは、随時記憶内容の読み出しが可能であり、必要に応じて記憶内容の書き込みが可能である。
ＦＲＯＭ７は、セキュリティ機能付とされており、ＣＰＵ６からの制御信号により読み出し禁止状態の設定および解除が可能である。
読み出し禁止状態が設定されている場合、ＦＲＯＭ７に対する外部からの読み出しあるいは書き込みは一切遮断される。
読み出し禁止状態が解除されている場合、ＦＲＯＭ７に対する外部からの読み出しは許可されるが、書き込みは遮断される。
従って、読み出し禁止状態を設定することで、ＦＲＯＭ７に記憶された内容が保護され、外部からの不正読み出しが防止される。
【００２８】
本実施形態の制御装置１においては、前述したＦＲＯＭ７およびＲＯＭ３に、制御装置１としての動作に必要なプログラム等が格納される。
ＲＯＭ３には、暗号化済制御プログラム３１が格納される。暗号化済制御プログラム３１は、ＭＣＵ５が制御装置１としての制御動作を行うための制御プログラムを、所定の暗号化ルールで暗号化したものである。
ＦＲＯＭ７には、ＩＰＬ７１および復号化ルーチン７２が配置されている。
【００２９】
ＩＰＬ７１は、起動時の動作を定めるいわゆるブートローダであり、前述したＩＰＬ６１と同様なものである。
本実施形態において、ＩＰＬ７１には、復号化ルーチン７２を起動してＲＯＭ３内の暗号化済制御プログラム３１の復号化を実行し、復号化が済んだら復号化した制御プログラムを実行することを指定したプログラムが設定されている。
復号化ルーチン７２は、ＣＰＵ６により実行され、ＲＯＭ３に格納されている暗号化済制御プログラム３１を読み出し、所定の暗号化ルールに基づいて暗号化を解除して復号化するものであり、復号化された内容を制御プログラム４１としてＲＡＭ４に書き込むように設定されている。
【００３０】
本実施形態においては、以上に述べた制御装置１を準備し、前述したＦＲＯＭ７およびＲＯＭ３に必要なプログラム等を格納しておき（準備工程）、ＭＣＵ５を起動することで、制御プログラムの復号化（復号化工程）およびこれに基づく制御動作（稼働工程）までの一連の処理を実行することができ、制御プログラムの不正読み出しを防止することができる。
【００３１】
図２において、準備工程として、制御装置１を準備したら、ＲＯＭ３に暗号化済制御プログラム３１を格納するとともに、ＦＲＯＭ７に復号化ルーチン７２を格納する（手順Ｓ１１）。
準備ができたら、制御装置１のＭＣＵ５を起動する。ＭＣＵ５において、起動されるとＣＰＵ６がＩＰＬ６１を読み込み、その内容に基づいてＭＣＵ５および制御装置１の初期化動作を実行する（処理Ｓ１２）。
【００３２】
初期化動作ができたら、ＣＰＵ６は、ＩＰＬ７１に従ってＦＲＯＭ７内のＩＰＬ７１を読み込み、その内容に基づいて復号化処理を開始する（処理Ｓ１３）。
ＣＰＵ６は、ＩＰＬ７１に従って、ＦＲＯＭ７に復号化ルーチン７２を読み込み、この復号化ルーチン７２に従って復号化処理を実行する。復号化処理では、ＲＯＭ３から暗号化済制御プログラム３１を読み出し、復号化ルーチン７２に従って復号化を行い（処理Ｓ１４）、復号化した制御プログラム４１をＲＡＭ４に書き込む（処理Ｓ１５）。
これらにより復号化工程が行われる。
【００３３】
復号化工程の後、ＣＰＵ６はＩＰＬ７１に従ってＲＡＭ４内の制御プログラム４１を読み込み、この制御プログラム４１に従って制御装置１としての制御動作を開始する（処理Ｓ１６）。
これにより稼働工程が行われる。
【００３４】
このような本実施形態によれば、外部記憶領域であるＲＯＭ３内の暗号化済制御プログラム３１は暗号化されており、例え読み出されても解読することができず、不正読み出しに対して保護される。
暗号化済制御プログラム３１の復号化には、内部記憶領域であるＦＲＯＭ７に記憶された復号化ルーチン７２が必要である。内部記憶領域であるＦＲＯＭ７は、製造時等に復号化ルーチン７２を書き込まれた後、外部読み出し禁止状態とされる。この状態では、プロセッサであるＭＣＵ５のＣＰＵ６が暗号化済制御プログラム３１の復号化を行う処理以外、外部読み出しができない。従って、復号化ルーチン７２の不正読み出しが防止され、復号化ルーチン７２による暗号化済制御プログラム３１の不正な復号化を防止することができる。
【００３５】
とくに、本実施形態では、セキュリティ機能つきの内部記憶領域としてＦＲＯＭ７を用い、ここに復号化ルーチン７２を格納するため、暗号化済制御プログラム３１に関して高い防護性能が得られる。
他の技術として、暗号化された制御プログラムおよびこれを復号化する復号化ルーチンを外部記憶領域に格納しておき、セキュリティ機能つきの内部記憶領域にパスワードを保存しておき、このパスワードの照合等により認証が得られたら復号化ルーチンで制御プログラムを復号化する、といった保護も考えられる。
しかし、このようなパスワード保護等は実用上短いコードあるいは文字列とされ、比較的容易に解除することができる。従って、認証さえ通過できれば、復号化ルーチン自体は保護されておらず、制御プログラムの復号化が容易に行われてしまう可能性がある。
これに対し、本実施形態では、復号化ルーチン７２自体をセキュリティ機能つきの内部記憶領域であるＦＲＯＭ７に格納するため、そのルーチン全体を読み出すことは困難であり、これにより暗号化済制御プログラム３１に関して高い防護性能が得られる。
【００３６】
さらに、本実施形態では、暗号化済制御プログラム３１は外部記憶領域であるＲＯＭ３に格納されるので、ＲＯＭ３を拡張することで大きな暗号化済制御プログラム３１にも対応できる。つまり、内部記憶領域であるＦＲＯＭ７に暗号化済制御プログラム３１を格納しようとすると問題となるプログラムサイズの制限を受けることがない。
以上により、本実施形態では、不正読み出しに対して強力な保護が得られるとともに、プロセッサであるＭＣＵ５としてセキュリティ機能つきフラッシュＲＯＭ内蔵の市販品を用いることで、制御装置１の構成を容易に実現することができる。
従って、ＭＣＵ５にセキュリティ機能のための専用ハードウェアを構成する場合のようなコスト上昇が避けられるとともに、復号化ルーチン７２が変更された場合でも、ＦＲＯＭ７の書き換えを行えばよく、プロセッサの回路および製造プロセスの変更のような煩雑な対応が必要ないため、コストおよび製造納期の問題を回避できる。
【００３７】
さらに、本実施形態では、ＦＲＯＭ７にＩＰＬ７１を設置し、復号化ルーチン７２の起動から暗号化済制御プログラム３１の復号化、復号化した制御プログラム４１のＲＡＭ４への書き込みまでをＩＰＬ７１内に記述することができる。このようなＩＰＬ７を用いることで、ＣＰＵ６のＩＰＬ６１ではＩＰＬ７１へのジャンプを指示するだけでよくなり、復号化に関する処理が増えてもＩＰＬ６のプログラムサイズに制約されることを回避できる。
【００３８】
〔第２実施形態〕
図３および図４には、本発明の第２実施形態が示されている。
図３において、本実施形態の制御装置１Ａは、前述した第１実施形態の制御装置１（図１参照）と略同様な構成を有する。このため、共通の要素に関しては同じ符号を用いて重複する説明は省略する。
本実施形態の制御装置１Ａと前述した第１実施形態の制御装置１との相違点は、復号化動作を指示するＩＰＬの設置場所である。
【００３９】
第１実施形態の制御装置１では、ＭＣＵ５のＦＲＯＭ７にＩＰＬ７１を設置し、ここに復号化ルーチン７２の起動から暗号化済制御プログラム３１の復号化、復号化した制御プログラム４１のＲＡＭ４への書き込みまでをＩＰＬ７１内に記述していた。
これに対し、本実施形態の制御装置１Ａでは、ＦＲＯＭ７にはＩＰＬがなく、復号化ルーチン７２だけが格納されている。一方、ＲＯＭ３には、暗号化済制御プログラム３１とともに、ＩＰＬ３２が設置され、ここに復号化ルーチン７２の起動から暗号化済制御プログラム３１の復号化、復号化した制御プログラム４１のＲＡＭ４への書き込みの指示が記述されている。
【００４０】
本実施形態においては、以上に述べた制御装置１Ａを準備し、前述したＦＲＯＭ７およびＲＯＭ３に必要なプログラム等を格納しておき（準備工程）、ＭＣＵ５を起動することで、制御プログラムの復号化（復号化工程）およびこれに基づく制御動作（稼働工程）までの一連の処理を実行することができ、制御プログラムの不正読み出しを防止することができる。
これらの各工程は、前述した第１実施形態と同様であり、具体的に、図４に示す本実施形態における処理Ｓ２１〜Ｓ２６は、前述した第１実施形態の処理Ｓ１１〜Ｓ１６（図２参照）と同様である。
ただし、前述したＩＰＬ３２の設置場所の変更に伴い、本実施形態における処理Ｓ２３ではＲＯＭ３内のＩＰＬ３２に基づいて復号化に移行しており、前記第１実施形態の処理Ｓ１３のＦＲＯＭ７内のＩＰＬ７１の参照と異なる。
【００４１】
このような本実施形態によれば、制御プログラムの不正読み出し防止、製造コストの低減、復号化プログラムの変更の容易性について、前述した第１実施形態と同様の効果が得られる。
さらに、本実施形態では、復号化に関する処理を記述したＩＰＬ３２がＲＯＭ３内に設置されるため、セキュリティ機能を有するＦＲＯＭ７の記憶領域を空けることができ、復号化ルーチン７２のサイズを拡張することができる。
一方、ＩＰＬ３２に記述される復号化に関する処理は、それ自体守秘性を要するものではなく、ＲＯＭ３に格納しても何ら問題はない。
【００４２】
〔第３実施形態〕
図５および図６には、本発明の第３実施形態が示されている。
図５において、本実施形態の制御装置１Ｂは、前述した第１実施形態の制御装置１（図１参照）と略同様な構成（ＲＯＭ３、ＲＡＭ４、ＦＲＯＭ７）を有する。このため、共通の要素に関しては同じ符号を用いて重複する説明は省略する。
本実施形態の制御装置１Ｂと前述した第１実施形態の制御装置１との相違点は、プロセッサの構成である。
【００４３】
すなわち、前記第１実施形態（図１参照）では、プロセッサであるＭＣＵ５が一つであり、そこにＣＰＵ６およびＦＲＯＭ７が含まれていた。そして、ＭＣＵ５が起動された際、ＣＰＵ６はＩＰＬ６１を参照してＦＲＯＭ７内のＩＰＬ７１に飛び、ＩＰＬ７１に従って復号化ルーチン７２による復号化を実行していた。
これに対し、本実施形態（図５参照）では、プロセッサとして、主プロセッサである主ＭＣＵ５Ａと、補助プロセッサである補助ＭＣＵ５Ｂとが設置されている。
【００４４】
主ＭＣＵ５Ａは、内部にＣＰＵ６Ａを有し、ＣＰＵ６ＡにはＩＰＬ６１Ａが設置されている。
補助ＭＣＵ５Ｂは、内部にＣＰＵ６ＢおよびＦＲＯＭ７を有し、ＦＲＯＭ７にはＩＰＬ７１および復号化ルーチン７２が格納されている。
本実施形態では、主ＭＣＵ５Ａを起動すると、ＣＰＵ６ＡはＩＰＬ６１Ａを参照し、補助ＭＣＵ５ＢのＦＲＯＭ７内のＩＰＬ７１に飛び、ＩＰＬ７１に従って復号化ルーチン７２による復号化を実行する。
【００４５】
詳細には、主ＭＣＵ５ＡのＣＰＵ６Ａは、ＩＰＬ６１Ａのプログラムに基づいて補助ＭＣＵ５ＢのＣＰＵ６Ｂに制御を渡し、ＣＰＵ６ＢがＦＲＯＭ７内のＩＰＬ７１に基づいて、復号化ルーチン７２の起動から暗号化済制御プログラム３１の復号化、復号化した制御プログラム４１のＲＡＭ４への書き込みまでを実行する。
主ＭＣＵ５ＡのＣＰＵ６Ａは、前述した復号化処理の間待機状態にあり、復号化処理が完了してＣＰＵ６Ｂから制御が戻された際に、復号化されたＲＡＭ４内の制御プログラム４１に基づいて制御動作を実行する。
【００４６】
本実施形態においては、以上に述べた制御装置１Ｂを準備し、前述したＦＲＯＭ７およびＲＯＭ３に必要なプログラム等を格納しておき（準備工程）、主ＭＣＵ５Ａを起動することで、制御プログラムの復号化（復号化工程）およびこれに基づく制御動作（稼働工程）までの一連の処理を実行することができ、制御プログラムの不正読み出しを防止することができる。
これらの各工程は、前述した第１実施形態と同様であり、具体的に、図６に示す本実施形態における処理Ｓ３１〜Ｓ３６は、前述した第１実施形態の処理Ｓ１１〜Ｓ１６（図２参照）と同様である。
ただし、前述した通りプロセッサが主ＭＣＵ５Ａと補助ＭＣＵ５Ｂの二つで構成され、各処理は二つのプロセッサで分担して実行される。
【００４７】
図６において、準備工程として、制御装置１Ｂを準備したら、ＲＯＭ３に暗号化済制御プログラム３１を格納するとともに、補助ＭＣＵ５ＢのＦＲＯＭ７に復号化ルーチン７２を格納する（処理Ｓ３１）。
準備ができたら、制御装置１Ｂの主ＭＣＵ５Ａを起動する。主ＭＣＵ５Ａにおいて、ＣＰＵ６ＡがＩＰＬ６１Ａを読み込み、その内容に基づいて主ＭＣＵ５Ａ、補助ＭＣＵ５Ｂおよび制御装置１Ｂの初期化動作を実行する（処理Ｓ３２）。
【００４８】
初期化動作ができたら、ＣＰＵ６Ａは、ＩＰＬ６１Ａに従って補助ＭＣＵ５ＢのＣＰＵ６Ｂに制御を渡し、ＣＰＵ５ＢはＦＲＯＭ７内のＩＰＬ７１を読み込み、その内容に基づいて復号化処理を開始する（処理Ｓ３３）。
補助ＭＣＵ５Ｂにおいて、ＣＰＵ６Ｂは、ＩＰＬ７１に従って、ＦＲＯＭ７に復号化ルーチン７２を読み込み、この復号化ルーチン７２に従って復号化処理を実行する。復号化処理では、ＲＯＭ３から暗号化済制御プログラム３１を読み出し、復号化ルーチン７２に従って復号化を行い（処理Ｓ３４）、復号化した制御プログラム４１をＲＡＭ４に書き込む（処理Ｓ３５）。
これらにより復号化工程が行われる。
【００４９】
復号化工程の後、ＣＰＵ６Ｂから主ＭＣＵ５ＡのＣＰＵ６Ａに制御が戻され、ＣＰＵ６ＡはＩＰＬ６１Ａに従ってＲＡＭ４内の制御プログラム４１を読み込み、この制御プログラム４１に従って制御装置１Ｂとしての制御動作を開始する（処理Ｓ３６）。
これにより稼働工程が行われる。
【００５０】
このような本実施形態によれば、制御プログラムの不正読み出し防止、製造コストの低減、復号化プログラムの変更の容易性について、前述した第１実施形態と同様の効果が得られる。
さらに、本実施形態では、プロセッサとして、主プロセッサである主ＭＣＵ５Ａと、補助プロセッサである補助ＭＣＵ５Ｂとを用いることで、次のような効果が得られる。
【００５１】
主プロセッサである主ＭＣＵ５Ａは、復号化処理の前の制御装置１Ｂの初期化処理および復号化処理が完了した後の制御動作を実行するものとされる。
補助プロセッサである補助ＭＣＵ５Ｂは、復号化処理を専ら実行するものである。特に、補助ＭＣＵ５ＢのＦＲＯＭ７には、復号化ルーチン７２とともに、復号化処理を記述したＩＰＬ７１が設置されており、復号化処理の一切が補助ＭＣＵ５Ｂにまとめられている。
つまり、主ＭＣＵ５Ａとしては、不正読み出し防止機能がない既存の制御装置のＭＣＵ等をそのまま利用することができ、起動時のＩＰＬを書き換える程度の変更だけで本実施形態の主ＭＣＵ５Ａとして利用することができる。
そして、補助ＭＣＵ５Ｂは、復号化処理の一切がまとめられているため、既存の制御装置に追加することで、本実施形態の制御装置１Ｂを構成することができる。
【００５２】
このように、本実施形態のような主プロセッサおよび補助プロセッサを用いる構成とすることで、既存の制御装置を利用して本発明を容易に実施できるとともに、既存の制御装置を本発明のセキュリティ機能つきの制御装置とする場合に、既存のＭＣＵを取り替える等の煩雑な改造作業を行う必要を解消することができる。
【００５３】
〔第４実施形態〕
図７および図８には、本発明の第４実施形態が示されている。
図７において、本実施形態の制御装置１Ｃは、前述した第３実施形態の制御装置１Ｂ（図５参照）と略同様な構成を有し、多くの要素が第１実施形態（図１参照）と共通である。このため、共通の要素に関しては同じ符号を用いて重複する説明は省略する。
本実施形態の制御装置１Ｃと前述した第３実施形態の制御装置１Ｂとの相違点は、復号化動作を指示するＩＰＬの設置場所である。この相違点は、前述した第１実施形態に対する第２実施形態の相違点と同様である。
【００５４】
第３実施形態の制御装置１Ｂでは、補助ＭＣＵ５ＢのＦＲＯＭ７にＩＰＬ７１を設置し、ここに復号化ルーチン７２の起動から暗号化済制御プログラム３１の復号化、復号化した制御プログラム４１のＲＡＭ４への書き込みまでをＩＰＬ７１内に記述していた。
これに対し、本実施形態の制御装置１Ｃでは、ＦＲＯＭ７にはＩＰＬがなく、復号化ルーチン７２だけが格納されている。一方、ＲＯＭ３には、暗号化済制御プログラム３１とともに、ＩＰＬ３２が設置され、ここに復号化ルーチン７２の起動から暗号化済制御プログラム３１の復号化、復号化した制御プログラム４１のＲＡＭ４への書き込みの指示が記述されている。
【００５５】
本実施形態においては、以上に述べた制御装置１Ｃを準備し、前述したＦＲＯＭ７およびＲＯＭ３に必要なプログラム等を格納しておき（準備工程）、主ＭＣＵ５Ａを起動することで、制御プログラムの復号化（復号化工程）およびこれに基づく制御動作（稼働工程）までの一連の処理を実行することができ、制御プログラムの不正読み出しを防止することができる。
これらの各工程は、前述した第３実施形態と同様であり、具体的に、図８に示す本実施形態における処理Ｓ４１〜Ｓ４６は、前述した第３実施形態の処理Ｓ３１〜Ｓ３６（図６参照）と同様である。
ただし、前述したＩＰＬ３２の設置場所の変更に伴い、本実施形態における処理Ｓ４３ではＲＯＭ３内のＩＰＬ３２に基づいて復号化に移行しており、前記第３実施形態の処理Ｓ３３のＦＲＯＭ７内のＩＰＬ７１の参照と異なる。
【００５６】
このような本実施形態によれば、制御プログラムの不正読み出し防止、製造コストの低減、復号化プログラムの変更の容易性について、前述した第１実施形態と同様の効果が得られる。
さらに、本実施形態では、復号化に関する処理を記述したＩＰＬ３２がＲＯＭ３内に設置されるため、セキュリティ機能を有するＦＲＯＭ７の記憶領域を空けることができ、復号化ルーチン７２のサイズを拡張することができる。
一方、ＩＰＬ３２に記述される復号化に関する処理は、それ自体守秘性を要するものではなく、ＲＯＭ３に格納しても何ら問題はない。
【００５７】
〔他の実施形態〕
本発明は、前述した各実施形態に限定されるものではなく、本発明の目的を達成できる範囲内での変形等は本発明に含まれるものである。
前記各実施形態では、ＲＯＭ３およびＲＡＭ４を、プロセッサであるＭＣＵ５，主ＭＣＵ５Ａ，補助ＭＣＵ５Ｂと別個に設置したが、これらのプロセッサに組み込まれるものとしてもよい。
例えば、第１実施形態および第２実施形態において、ＭＣＵ５としてＲＯＭ，ＲＡＭを含むワンチップＭＣＵを用いてもよい。あるいは、第３実施形態および第４実施形態において、主ＭＣＵ５ＡとしてＲＯＭ，ＲＡＭを含むワンチップＭＣＵを用いてもよい。
【００５８】
前記各実施形態では、セキュリティ機能を有する内部記憶領域としてフラッシュメモリであるＦＲＯＭ７を用いたが、フラッシュメモリに限らず他の構成によるＥＰＲＯＭを用いてもよい。また、セキュリティ機能（読み出し禁止およびその解除）を実現する方式は、既存の技術を適宜利用すればよく、例えば、内部メモリあるいは外部メモリに指定された特定アドレスの情報を参照する方式、予め定められたプロテクトコードにより認証を行う方式等が採用できる。
【符号の説明】
【００５９】
１，１Ａ，１Ｂ，１Ｃ…制御装置
２…システムバス
３１…暗号化済制御プログラム
４１…制御プログラム
５…ＭＣＵ
５Ａ…主ＭＣＵ
５Ｂ…補助ＭＣＵ
６，６Ａ，６Ｂ…ＣＰＵ
６１，６１Ａ…ＩＰＬ
７…ＦＲＯＭ
７１…ＩＰＬ
７２…復号化ルーチン
【図１】
2013097539.tif 000003
【図２】
2013097539.tif 000004
【図３】
2013097539.tif 000005
【図４】
2013097539.tif 000006
【図５】
2013097539.tif 000007
【図６】
2013097539.tif 000008
【図７】
2013097539.tif 000009
【図８】
2013097539.tif 000010