(57)【要約】【課題】不正なプログラムの実行や、改竄されたプログラムの実行を防止して、より信頼性の高い電子制御装置を提供する。【解決手段】不揮発性メモリと揮発性メモリを有するマイクロプロセッサを備え、不揮発性メモリは、暗号化されたプログラムと、復号化を行うプログラムとを有し、マイクロプロセッサは、暗号化されたプログラムを揮発性メモリにコピーする手段と、復号化を行うプログラムにより復号キーを元にして復号化されたプログラムを取得する手段と、復号化されたプログラムを実行する手段と、を備える。【選択図】  図１
2020030564.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリと揮発性メモリを有するマイクロプロセッサを備え、
前記不揮発性メモリは、暗号化されたプログラムと、復号化を行うプログラムとを有し、
前記マイクロプロセッサは、
前記暗号化されたプログラムを前記揮発性メモリにコピーする手段と、
前記コピーに対して、前記復号化を行うプログラムにより復号キーを元にして復号化されたプログラムを取得する手段と、
前記復号化されたプログラムを実行する手段と、
を備えることを特徴とする電子制御装置。
【請求項２】
前記復号キーは、前記不揮発性メモリに格納される
ことを特徴とする請求項１に記載の電子制御装置。
【請求項３】
前記復号キーを外部から通信によって受け取る通信手段を備える
ことを特徴とする請求項１に記載の電子制御装置。
【請求項４】
前記復号化されたプログラムを取得した後、前記復号化されたプログラムを実行する前に、前記復号化されたプログラムの正当性を確認する手段を備える
ことを特徴とする請求項１乃至３のいずれかに記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子制御装置に関する。
【背景技術】
【０００２】
本技術分野の背景技術として、特開２０１６−２８３３４号公報（特許文献１）がある。特許文献１の要約欄には、「モジュールの集合体からなるプログラム本体０３０１であって、各モジュール０３０２のうち少なくとも一つは非実行時には暗号化された状態であり、次に実行されるモジュールである次モジュールが、暗号化されている場合には、現在実行中のモジュールの終了前のタイミングにて、暗号化されているモジュールを演算装置が実行可能になるように復号化プログラム０３０３によって復号化する。」と記載がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１６−２８３３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１では、暗号化されたプログラムから復号化されたプログラムを取得する場合、復号化したプログラムを一時的にＲＡＭ領域に置くことになるため、復号化したプログラムを実行する前に改竄されてしまい、不当にプログラムを実行されてしまう可能性がある。
【０００５】
そこで本発明は、不正なプログラムの実行や、改竄されたプログラムの実行を防止して、より信頼性の高い電子制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
不揮発性メモリと揮発性メモリを有するマイクロプロセッサを備え、前記不揮発性メモリは、暗号化されたプログラムと、復号化を行うプログラムとを有し、前記マイクロプロセッサは、前記暗号化されたプログラムを前記揮発性メモリにコピーする手段と、前記コピーに対して、前記復号化を行うプログラムにより復号キーを元にして復号化されたプログラムを取得する手段と、前記復号化されたプログラムを実行する手段と、を備える。
【発明の効果】
【０００７】
本発明によれば、不正なプログラムの実行や、改竄されたプログラムの実行を防止して、より信頼性の高い電子制御装置を提供することができる。
【図面の簡単な説明】
【０００８】
【図１】ＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ Ｃｏｎｔｒｏｌ Ｕｎｉｔ：電子制御装置）の一例を示す概念図である。
【図２】ＣｏｄｅＦｌａｓｈ領域、ＤａｔａＦｌａｓｈ領域，ＲＡＭ領域の扱うデータの説明図である。
【図３】ＣｏｄｅＦｌａｓｈ領域内にあるプログラムを実行する構成例を示す図である。
【図４】外部装置内にあるプログラムを実行する構成例を示す図である。
【図５】ＣｏｄｅＦｌａｓｈ領域内にあるプログラムを安全に実行するための構成例を示す図である。
【図６】復号化されたプログラムの一部に検証コードを付加する説明図である。
【発明を実施するための形態】
【０００９】
自動車の中には多くのＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ Ｃｏｎｔｒｏｌ Ｕｎｉｔ：電子制御装置）が搭載され、ＥＣＵ内にあるプログラムによって電子的に制御されている。
【００１０】
近年、更なる高度な機能を達成するために、搭載されているＥＣＵ間にネットワークを構築し、協調してクルマ全体を制御する。例えば、エンジンを制御するＥＣＵやブレーキを制御するＥＣＵは、ネットワークを介して自動運転制御を行うＥＣＵからの指令により、エンジン制御用ＥＣＵやブレーキ制御用ＥＣＵ内プログラムを実行することでクルマの加減速を制御する。
【００１１】
ＥＣＵにはプログラムを実行するためのマイコンが内蔵されている。マイコンには、不揮発性メモリと揮発性メモリを有し、不揮発性メモリとしてプログラムを格納するＣｏｄｅＦｌａｓｈ領域、データを格納するＤａｔａＦｌａｓｈ領域、揮発性メモリ領域としてプログラム実行時に一時データを格納するためのＲＡＭ領域が存在する。
【００１２】
プログラムはＣｏｄｅＦｌａｓｈ領域に置かれ、ＣｏｄｅＦｌａｓｈ領域にあるプログラムを解釈し、ＤａｔａＦｌａｓｈ領域にあるデータまたはＲＡＭ領域にある一時データを参照し動作する。また、解釈するプログラムはＣｏｄｅＦｌａｓｈ領域からＲＡＭに予めコピーし、そのＲＡＭ領域にコピーされたプログラムを解釈の対象とすることもある。
【００１３】
しかしながら、ネットワークを介して指令により動作するシステム構成においては、外部からのセキュリティに関する脅威も高まるという問題も発生する。
【００１４】
悪意のあるユーザや、悪意のあるユーザによって作成されたプログラムによって、ＣｏｄｅＦｌａｓｈに格納されているプログラムが読み取られてしまった場合に、そのプログラムが解析され、そのプログラムを不当に実行・利用する、あるいは悪意のあるプログラムに置き換えられて実行されてしまう恐れもある。
【００１５】
以上を踏まえて、添付された図面を参照し、本発明を実施するための実施形態について詳述する。
【００１６】
図１はＥＣＵの一例を示す概念図である。ＥＣＵ０は、内部にマイクロプロセッサ１を備えている。マイクロプロセッサ１はＣＰＵ１１、不揮発性メモリであるＣｏｄｅＦｌａｓｈ領域１２およびＤａｔａＦｌａｓｈ領域１３、揮発性メモリであるＲＡＭ領域１４、通信部１５などを有する。
【００１７】
通信部１５は通信路２を介して他のＥＣＵや外部装置との通信を可能としている。例えば、通信路２がＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）の場合は、通信部１５はＣＡＮドライバを備え通信を行う。
【００１８】
次に、図２はＣｏｄｅＦｌａｓｈ領域１２、ＤａｔａＦｌａｓｈ領域１３，ＲＡＭ領域１４の扱うデータを示した図である。
【００１９】
通常プログラムはＣｏｄｅＦｌａｓｈ領域１２の一部の領域１２１に、そのプログラムで用いられるデータはＤａｔａＦｌａｓｈ領域１３の一部の領域１３１に、一時的に使用されるデータはＲＡＭ領域１４の一部の領域１４１に格納され、プログラムが実行される。
【実施例１】
【００２０】
図３は、ＣｏｄｅＦｌａｓｈ領域内にあるプログラムを実行するための構成例である。具体的に、ＣｏｄｅＦｌａｓｈ領域にある暗号化されたプログラムをＤａｔａＦｌａｓｈ領域にある復号キーにて復号化したプログラムをＲＡＭ領域に配置して実行する方式の説明図である。
【００２１】
予めＣｏｄｅＦｌａｓｈ領域１２に暗号化されたプログラム１２２と暗号化されたプログラム１２２を復号化する復号プログラム１２３を配置しておく。複合化演算２００は、暗号化されたプログラム１２２を復号キー１３２にて復号を行う演算であり、復号プログラム１２３の内部に実装される。
【００２２】
復号プログラム１２３によって復号化されたプログラムは、ＲＡＭ領域１４の一部の領域１４２に格納する。
【００２３】
復号化を実施するタイミングとしては、実際にプログラムを実行したいときに毎回復号化を行ってもよいし、復号化したプログラムが一定回数実行を行うと無効化されるようにカウンタを持たせる構成にようにしてもよい。
【００２４】
次に、図６は復号化されたプログラムの一部に検証コードを付加した例を示している。
ＲＡＭ領域１４に復号化されたプログラム１４２を実行する前にプログラムの改竄が行われてないかを検証コードを元にチェックを行い、チェック結果として問題がないときに限り実行するようにする。
【００２５】
検証コード１４５には、単純なサム・パリティチェック、ＥＣＣ（Ｅｒｒｏｒ Ｃｏｒｒｅｃｔｉｏｎ Ｃｏｄｅ）チェック、ＣＲＣ（Ｃｙｃｌｉｃ Ｒｅｄｕｎｄａｎｃｙ Ｃｈｅｃｋ）、ＳＨＡ（Ｓｅｃｕｒｅ Ｈａｓｈ Ａｌｇｏｒｉｔｈｍ）などのハッシュ値など、保証したいセキュリティの強度によって使い分けすることができる。
【００２６】
また、図６ではチェックサム１４２を復号化されたプログラム１４１の末尾に配置する形で図示しているが、復号化されたプログラムの領域の一部であれば、どこにでも配置することができ、例えば先頭に配置することもできる。
【００２７】
本実施例により、ＣｏｄｅＦｌａｓｈ領域１２内にあるプログラムが改竄された場合でも検知することができ、不当なプログラムの実行を防止することができる。
【実施例２】
【００２８】
図４は、外部装置内にあるプログラムを実行するための構成例である。具体的に、外部装置にある暗号化されたプログラムを通信でＲＡＭ領域に配置し、その暗号化されたプログラムをＤａｔａＦｌａｓｈ領域にある復号キーにて復号化したプログラムをＲＡＭ領域に配置して実行する方式の説明図である。
【００２９】
予め外部装置１２２aに暗号化されたプログラムを、ＣｏｄｅＦｌａｓｈ領域１２に暗号化されたプログラムを復号化する復号プログラム１２３を、ＤａｔａＦｌａｓｈ領域に復号キー１３２を配置しておく。
【００３０】
まず、通信路２を通してＥＣＵに暗号化されたプログラム転送し、ＲＡＭ領域１４の一部の領域１４３に配置する。記号２００は暗号化されたプログラム１４３をＤａｔａＦｌａｓｈ領域１３にある複合キー１３２にて復号を行う演算であり、復号プログラム１２３の内部に実装される。
【００３１】
復号プログラム１２３によって復号化されたプログラムは、ＲＡＭ領域１４の一部の領域１４２に格納する。
【００３２】
実施例１と同様に、ＲＡＭ領域１４に復号化されたプログラム１４２を実行する前にプログラムの改竄が行われてないかを検証コードを元にチェックを行い、チェック結果として問題がないときに限り実行するようにする。
【００３３】
本実施例により、外部装置にあるプログラムが、通信路２を転送中に改竄された場合でも検知することができ、不当なプログラムの実行を防止することができる。
【実施例３】
【００３４】
図５は、ＣｏｄｅＦｌａｓｈ領域内にあるプログラムを安全に実行するための構成例である。具体的に、外部装置にある復号キーを通信でＲＡＭ領域に配置し、ＣｏｄｅＦｌａｓｈ領域にある暗号化されたプログラムをＲＡＭ領域に配置した複合キーにて復号化したプログラムをＲＡＭ領域に配置して実行する方式の説明図である。
【００３５】
予め外部装置１３２ａに復号キーを、ＣｏｄｅＦｌａｓｈ領域１２に暗号化されたプログラム１２２と暗号化されたプログラムを復号化する復号プログラム１２３を配置しておく。記号２００は暗号化されたプログラム１２２を復号キー１３２にて復号を行う演算であり、復号プログラム１２３の内部に実装される。
【００３６】
まず、通信路２を通してＥＣＵに復号キー転送し、ＲＡＭ領域１４の一部の領域１４４に配置する。記号２００は暗号化されたプログラム１２２をＲＡＭ領域１４にある複合キー１４４にて復号を行う演算であり、復号プログラム１２３の内部に実装される。
【００３７】
復号プログラム１２３によって復号化されたプログラムは、ＲＡＭ領域１４の一部の領域１４２に格納する。
【００３８】
実施例１と同様に、ＲＡＭ領域１４に復号化されたプログラム１４２を実行する前にプログラムの改竄が行われてないかを検証コードを元にチェックを行い、チェック結果として問題がないときに限り実行するようにする。
【００３９】
本実施例により、外部装置にある復号キーが、通信路２を転送中に改竄された場合でも検知することができ、不当なプログラムの実行を防止することができる。
【００４０】
なお、本発明は上述した実施例に限定されるものではなく、特に各プログラムの配置について機能を追加・削除・置換をすることで様々な変形例を構成することができる。例えば、ＣｏｄｅＦｌａｓｈ領域１２の一部の領域に復号キーを格納しておいてもよいし、復号プログラムが外部装置から通信により取得する形態をとることもできる。
【符号の説明】
【００４１】
０：ＥＣＵ
１：マイクロプロセッサ
２：通信路
１１：ＣＰＵ
１２：ＣｏｄｅＦｌａｓｈ領域
１３：ＤａｔａＦｌａｓｈ領域
１４：ＲＡＭ領域
１５：通信部
１２１：プログラム領域
１２２：ＣｏｄｅＦｌａｓｈ領域に格納された暗号化されたプログラム
１２２ａ：外部装置に格納された暗号化されたプログラム
１２３：復号プログラム領域
１３１：データ領域
１３２：ＤａｔａＦｌａｓｈ領域に格納された復号キー
１３２ａ：外部装置に格納された復号キー
１４１：一時データ領域
１４２：ＲＡＭ領域に格納された復元化されたプログラム
１４３：ＲＡＭ領域に格納された暗号化されたプログラム
１４４：ＲＡＭ領域に格納された復号キー
１４５：検証コード
２００：復号化演算
【図１】
2020030564.tif 000003
【図２】
2020030564.tif 000004
【図３】
2020030564.tif 000005
【図４】
2020030564.tif 000006
【図５】
2020030564.tif 000007
【図６】
2020030564.tif 000008