(57)【要約】【課題】  外付けメモリに対するセキュリティを強化したメモリ外付けマイコンを提供する。【解決手段】  ブートモード時に、ＣＰＵ２１が、レジスタ２３１に書き込まれているセキュリティコードを読み取って、ブートメモリ２５に予め格納されている複数の暗号化プログラムの中からセキュリティコードが指定する暗号化プログラムを選択し、この選択された暗号化プログラムを用いてシリアルＩ／Ｏ２３から入力されるフラッシュメモリ３のアドレスおよびデータを暗号化し、フラッシュメモリＩ／Ｆ２２を介してフラッシュメモリ３へ転送する。【選択図】  図１
2005209108.tif 000002
【特許請求の範囲】
【請求項１】
ＭＣＵチップと、前記ＭＣＵチップに外付けされて前記ＭＣＵチップとの間で相互にデータの受け渡しを行うメモリとを備えるメモリ外付けマイコンであって、
前記ＭＣＵチップが、ＣＰＵと、
ブートモード時に読み出される暗号化プログラムおよび復号化プログラムを格納したブートメモリと、
前記外付けメモリから転送されるデータを格納するバッファメモリと
を具備し、
前記ＭＣＵチップから前記外付けメモリへデータを転送するときは、前記ＣＰＵが前記暗号化プログラムを用いて前記外付けメモリへ与えるアドレスおよびデータを暗号化して転送し、前記外付けメモリから前記バッファメモリへデータを転送するときは、前記外付けメモリのアドレスおよびデータを前記ＣＰＵが前記復号化プログラムを用いて復号化して転送することを特徴とするメモリ外付けマイコン。
【請求項２】
前記ブートメモリには、暗号化プログラムと復号化プログラムの対が複数格納されており、ブートモード時にそのうちの１対が選択されることを特徴とする請求項１に記載のメモリ外付けマイコン。
【請求項３】
前記１対の暗号化プログラムと復号化プログラムの選択が、外部から入力されるセキュリティコードの値に従って行われることを特徴とする請求項２に記載のメモリ外付けマイコン。
【請求項４】
前記ＭＣＵチップから前記外付けメモリへのデータの転送が、ブートモード時に行われることを特徴とする請求項１に記載のメモリ外付けマイコン。
【請求項５】
前記外付けメモリから前記バッファメモリへのデータの転送が、外部からのリセット要求時に行われることを特徴とする請求項１に記載のメモリ外付けマイコン。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、外付けメモリに対するセキュリティ機能を有するメモリ外付けマイコンに関する。
【背景技術】
【０００２】
近年、プログラムの大規模化およびプログラムの書き換え要求に対応するため、フラッシュメモリをＭＣＵ（マイクロコントローラユニット）チップに外付けして用いるメモリ外付けマイコンが使用されている。
【０００３】
ただし、このようなフラッシュメモリはアクセス速度が遅く、直接フラッシュメモリからプログラムを読み出してマイコンを動作させると、マイコンの動作速度が低下する。そこで、ＭＣＵチップにアクセス速度の速いメモリを内蔵し、マイコンの動作に先立って、その動作に必要なプログラムをフラッシュメモリから内蔵メモリに転送して使用することが行われている。
【０００４】
しかし、このようなフラッシュメモリを外付けしたマイコンでは、フラッシュメモリのデータを第三者に覗かれてプログラム内容を解読される恐れがあり、マイコンのセキュリティが低下する。
【０００５】
そこで、マイコンシステムのセキュリティを高めるため、排他的論理和回路のような信号変換手段を用いて、外付けメモリのデータ信号およびアドレス信号を暗号化することが行われている。（例えば、特許文献１参照。）。
【特許文献１】特開２０００−２９７９０号公報  （第４ページ、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、上述の排他的論理和回路のようなハードウェアによる暗号化では、常に同じ暗号化しかできず、マイコンの動作解析等により暗号が見破られる可能性が高くなるという問題があった。
【０００７】
そこで、本発明の目的は、外付けメモリに対するセキュリティを強化したメモリ外付けマイコンを提供することにある。
【課題を解決するための手段】
【０００８】
本発明の一態様によれば、ＭＣＵチップと、前記ＭＣＵチップに外付けされて前記ＭＣＵチップとの間で相互にデータの受け渡しを行うメモリとを備えるメモリ外付けマイコンであって、前記ＭＣＵチップが、ＣＰＵと、ブートモード時に読み出される暗号化プログラムおよび復号化プログラムを格納したブートメモリと、前記外付けメモリから転送されるデータを格納するバッファメモリとを具備し、前記ＭＣＵチップから前記外付けメモリへデータを転送するときは、前記ＣＰＵが前記暗号化プログラムを用いて前記外付けメモリへ与えるアドレスおよびデータを暗号化して転送し、前記外付けメモリから前記バッファメモリへデータを転送するときは、前記外付けメモリのアドレスおよびデータを前記ＣＰＵが前記復号化プログラムを用いて復号化して転送することを特徴とするメモリ外付けマイコンが提供される。
【発明の効果】
【０００９】
本発明によれば、外付けメモリへ転送するデータの暗号化をプログラムにより行うので暗号化方式を随時変更することができ、外付けメモリに対するセキュリティを強化することができる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施例を図面を参照して説明する。
【実施例】
【００１１】
図１は、本発明の実施例に係るメモリ外付けマイコンの構成を示すブロック図である。
【００１２】
メモリ外付けマイコン1は、ＭＣＵチップ２と、ＭＣＵチップ２との間でデータの受け渡しを行う外付けのメモリであるフラッシュメモリ３を有する。なお、外付けメモリはフラッシュメモリに限るものではなく、データの書き換えが可能なメモリであれば他の種類のものでもよい。
【００１３】
ＭＣＵチップ２は、ＣＰＵ２１と、フラッシュメモリ３とのデータの受け渡しのインターフェイス（Ｉ／Ｆ）を行うフラッシュメモリＩ／Ｆ２２と、フラッシュメモリ３へ転送するデータが外部からシリアルに入力されるシリアルＩ／Ｏ２３と、フラッシュメモリ３から転送されるデータを格納するバッファメモリ２４と、ブートモード時に読み出されるプログラムが格納されているブートメモリ２５と、上記各メモリへ与えるアドレスを生成するアドレスコントローラ２６とを有する。
【００１４】
また、フラッシュメモリＩ／Ｆ２２には、後述する３ｗｏｒｄのセキュリティコードを格納するための３ｗｏｒｄのレジスタ（Ｒｅｇ０、Ｒｅｇ１、Ｒｅｇ２と表わす。）であるレジスタ２２１が設けられている。このレジスタ２２１のアドレスもアドレスコントローラ２６により与えられる。
【００１５】
図２に、本実施例におけるメモリのアドレスマップの例を示す。
【００１６】
ここでは、１６進数表記のアドレス０００Ｈ〜３ＦＦＨをバッファメモリ２４の領域、アドレス４００Ｈ〜４０２Ｈをレジスタ２２１の領域、アドレス４０２Ｈ〜７ＦＦＨをフラッシュメモリ３の領域としている。したがって、フラッシュメモリ３に格納されたデータをバッファメモリ２４へ転送するときは、フラッシュメモリ３のアドレスから４００Ｈを引いてアドレスをシフトさせればよい。
【００１７】
次に、本実施例におけるＭＣＵチップ２とフラッシュメモリ３との間のデータの受け渡しのときに実行されるデータの暗号化／復号化について説明する。
【００１８】
本実施例においては、ＭＣＵチップ２からフラッシュメモリ３へデータを転送するときに、フラッシュメモリ３へ書き込むデータの暗号化だけでなく、フラッシュメモリ３のアドレスも暗号化している。したがって、フラッシュメモリ３からＭＣＵチップ２へデータを転送するときにデータの復号化とアドレスの復号化を行う。このとき、アドレスの復号化は、上述したアドレスマップ上でのフラッシュメモリ３のアドレス領域からバッファメモリ２４のアドレス領域へのアドレスのシフトを行った後に実行する。
【００１９】
本実施例における暗号化および復号化は総てプログラム化されており、このプログラムをＣＰＵ２１が実行することにより暗号化および復号化が行われる。
【００２０】
また、暗号化方式は複数用意されており、それぞれの方式に応じた暗号化プログラムと復号化プログラムの対が用意されている。これらの複数の暗号化プログラムと復号化プログラムの対は、ブートメモリ２５に格納されている。
【００２１】
この複数の暗号化プログラムと復号化プログラムの中のどのプログラムを使用するかは、シリアルＩ／Ｏを介してレジスタ２２１に格納されるセキュリティコードの値によって決定される。本実施例においては３ｗｏｒｄのセキュリティコードｘｙｚを用いるものとする。なお、セキュリティコードは３ｗｏｒｄに限るものではなく、任意に増減させてよい。ただし、セキュリティコードのｗｏｒｄ数に応じてレジスタ２２１のｗｏｒｄ数も変更する必要がある。
【００２２】
図３は、暗号化方法および復号化方法の例とセキュリティコードとの関係の例を示す図である。ここでは、３種類の暗号化方法および復号化方法に対して３通りのセキュリティコードｘ１ｙ１ｚ１、ｘ２ｙ２ｚ２、ｘ３ｙ３ｚ３が対応している例を示している。
【００２３】
例えば、セキュリティコードｘ１ｙ１ｚ１に対して、アドレスの暗号化／復号化方法は「奇数と偶数の入れ替え」が対応し、データの暗号化／復号化方法は「各ビットの反転」が対応する。また、セキュリティコードｘ２ｙ２ｚ２に対して、アドレスの暗号化／復号化方法は「ＭＳＢとＬＳＢの入れ替え」が対応し、データの暗号化／復号化方法は「２の補数をとる」が対応する。また、セキュリティコードｘ３ｙ３ｚ３に対して、アドレスの暗号化／復号化方法は「各ビットの反転」が対応し、データにの暗号化方法は「アドレス値を加算」すること、復号化方法は「アドレス値を減算」することが対応する。
【００２４】
また、本実施例においては、暗号化方式の決定やデータの転送の実行もプログラム化されており、これらのプログラムもブートメモリ２５に格納されている。図４にこれらのプログラムの例を示す。
【００２５】
図４（ａ）は、暗号化方式決定用プログラムの例である。本プログラムには次のような実行ステップが含まれる。
【００２６】
すなわち、（ステップ１）シリアルＩ／Ｏからセキュリティコードを受信、（ステップ２）セキュリティコードをレジスタへ保存、（ステップ３）セキュリティコードをレジスタから読み出し、（ステップ４）セキュリティコードの解読、（ステップ５）暗号化方式の決定、（ステップ６）暗号化プログラムの選択、（ステップ７）復号化プログラムの選択、の各ステップである。
【００２７】
このプログラムの実行により、外部から入力したセキュリティコードに応じた暗号化プログラムおよび復号化プログラムが選択される。
【００２８】
図４（ｂ）は、シリアルＩ／Ｏ２３で受信したデータをフラッシュメモリ３へ転送するときに用いるプログラムの例である。本プログラムには次のような実行ステップが含まれる。
【００２９】
すなわち、（ステップ１）シリアルＩ／Ｏから１ｗｏｒｄ分のデータを受信、（ステップ２）暗号化プログラムの実行、（ステップ３）フラッシュメモリへの書き込み、の各ステップである。
【００３０】
このプログラムの実行により、シリアルＩ／Ｏ２３で受信したフラッシュメモリ３のアドレスおよびデータが暗号化されてフラッシュメモリ３へ転送される。
【００３１】
図４（ｃ）は、フラッシュメモリ３から読み出したデータをバッファメモリ２４へ転送するときに用いるプログラムの例である。本プログラムには次のような実行ステップが含まれる。
【００３２】
すなわち、（ステップ１）フラッシュメモリから１ｗｏｒｄ分のデータを受信、（ステップ２）復号化プログラムの実行、（ステップ３）バッファメモリへの書き込み、の各ステップである。
【００３３】
このプログラムの実行により、フラッシュメモリ３のアドレスおよびデータが復号化されてバッファメモリ２４へ転送される。
【００３４】
図５は、上述したプログラムを用いて、ＭＣＵチップ２からフラッシュメモリ３へデータを転送するときの動作のフローを示すフロー図である。なお、本実施例におけるＭＣＵチップ２からフラッシュメモリ３へのデータの転送は、メモリ外付けマイコン１のブートモード時に実行される。
【００３５】
ブートモードが開始されると（ステップＳ１）、ブートメモリ２５の読み出しが行われる（ステップＳ２）。ブートメモリ２５の読み出しにより、ブートメモリ２５に格納されている暗号化方式決定用プログラム、シリアルＩ／Ｏからフラッシュメモリへの転送プログラム、フラッシュメモリからバッファメモリへの転送プログラム、暗号化プログラム、復号化プログラムなどが読み出される。
【００３６】
次いで、外部からシリアルＩ／Ｏ２３を介して入力されるセキュリティコードを受信する（ステップＳ３）。このセキュリティコードを用いて、暗号化方式決定用プログラムがどの暗号化プログラムと復号プログラムを使用するかを決定する（ステップＳ４）。
【００３７】
その後、シリアルＩ／Ｏ２３からフラッシュメモリ３へ格納するデータの入力が始まると、シリアルＩ／Ｏからフラッシュメモリへの転送プログラムを用いて、１ｗｏｒｄ分ずつデータを受信し（ステップＳ５）、暗号化プログラムにより暗号化し（ステップＳ６）、フラッシュメモリ３へ書き込む（ステップＳ７）。総てのデータの書き込みが終わるまで、暗号化とフラッシュメモリ３への書き込みを繰り返し（ステップＳ８）、フラッシュメモリ３へのデータの転送が終了する（ステップＳ９）。ブート動作が総て終了するとブートモードは終了する（ステップＳ１０）。
【００３８】
図６は、フラッシュメモリ３からバッファメモリ２４へデータを転送するときの動作のフローを示すフロー図である。なお、本実施例におけるフラッシュメモリ３からバッファメモリ２４へのデータの転送は、メモリ外付けマイコン１へ外部からのリセット要求があったときに実行される。
【００３９】
フラッシュメモリ３からバッファメモリ２４へのデータの転送が開始されると（ステップＳ５１）、ブートモード時にブートメモリからの読み出されたフラッシュメモリからバッファメモリへの転送プログラムを用いて、フラッシュメモリ３から１ｗｏｒｄ分ずつデータを読み出し（ステップＳ５２）、復号化プログラムにより復号化し（ステップＳ５３）、バッファメモリ２４へ書き込む（ステップＳ５４）。総てのデータの書き込みが終わるまで、復号化とバッファメモリ２４への書き込みを繰り返し（ステップＳ５５）、バッファメモリ２４へのデータの転送が終了する（ステップＳ５６）。
【００４０】
図７は、ＭＣＵチップ２からフラッシュメモリ３へデータを転送するときの動作波形図である。ここでは、セキュリティコードとして図３に示すｘ１ｙ１ｚ１が与えられるものとし、このセキュリティコードに対応した暗号化方法に基づく暗号化プログラムが実行されるときの動作を例に示している。この場合、アドレスに対しては「奇数と偶数の入れ替え」、すなわち前後のアドレスの交換が行われ、データに対しては「各ビットの反転」が行われる。なお、ここでは、元のデータに対して各ビットの反転が行われたデータを“！”を付けて表記する。また、各動作はクロックに同期して実行される。
【００４１】
ブートモード時に、シリアルＩ／Ｏ２３からセキュリティコードｘ１、ｙ１、ｚ１がアドレス値４００Ｈ、４０１Ｈ，４０２Ｈとともに順次入力されると、レジスタ２２１のレジスタＲｅｇ０、Ｒｅｇ１、Ｒｅｇ２にセキュリティコードｘ１、ｙ１、ｚ１がそれぞれ格納される。このレジスタ２２１に格納されたセキュリティコードｘ１、ｙ１、ｚ１をＣＰＵ２１が読み取って暗号化方法が選択され、使用する暗号化プログラムが決定する。
【００４２】
続いて、シリアルＩ／Ｏ２３からフラッシュメモリ３へ書き込むデータがフラッシュメモリ３のアドレス値とともに順次入力される。ここで、暗号化プログラムが実行されて、最初に入力されたアドレス値４０３Ｈは４０４Ｈに変換され、データａは！ａに変換されてフラッシュメモリ３へ転送される。また、続いてシリアルＩ／Ｏ２３から入力されたアドレス値４０４Ｈは４０３Ｈに変換され、データｂは！ｂに変換される。以下、最終のデータまで上述の暗号化が繰り返される。
【００４３】
図８は、フラッシュメモリ３からバッファメモリ２４へデータを転送するときの動作波形図である。ここでは、図７で示した動作でフラッシュメモリ３へ書き込まれたデータをバッファメモリ２４へ転送するときの動作を例に示している。
【００４４】
外部リセット要求（Ｈレベル）が入力され、フラッシュメモリ３からのデータの読み出しが始まると、暗号化と対になっている復号化を実行する復号化プログラムが実行される。すなわち、アドレスの「奇数と偶数の入れ替え」、およびデータの「各ビットの反転」が行われる。ただし、アドレスについては、フラッシュメモリ３のアドレス領域からバッファメモリ２４のアドレス領域へのシフト（４００Ｈ分の引き算）も併せて行われる。
【００４５】
これにより、フラッシュメモリ３のアドレス値４０３Ｈは００４Ｈへ、４０４Ｈは００３Ｈへと順次変換され、また、データは！ｂがｂへ、！ａがａへと順次変換されてバッファメモリ２４へと転送される。
【００４６】
図９に、上述したセキュリティコードｘ１ｙ１ｚ１におけるフラッシュメモリ３に対する暗号化、復号化の様子を示す。
【００４７】
シリアルＩ／Ｏへ入力されるフラッシュメモリ３のアドレスおよびデータは暗号化されて、フラッシュメモリ３へ転送される。したがって、フラッシュメモリ３に格納されたデータは、元のシリアルＩ／Ｏから入力されたデータとは異なっており、アドレスの並び順もシリアルＩ／Ｏから入力された順番とは異なっている。
【００４８】
一方、フラッシュメモリ３からバッファメモリ２２への転送のときは、フラッシュメモリ３のアドレスおよびデータが復号化される。したがって、バッファメモリ２２に格納されたデータは、元のシリアルＩ／Ｏから入力されたデータと同じであり、アドレスの並び順もシリアルＩ／Ｏから入力された順番のとおりである。
【００４９】
このような本実施例では、暗号化プログラムを複数のプログラムの中から選択することができるので暗号化方式を随時変更することができ、暗号化方式が画一的になることを防ぐことができる。また、暗号化をハードウェアによらずプログラムで行うため、チップの分解等によるハードウェアの解析で暗号化方式が解析されることを防ぐことができる。さらに、外付けメモリへ格納するデータの暗号化のみならず、外付けメモリのアドレスも暗号化するため、外付けメモリに対するセキュリティをより高めることができる。
【図面の簡単な説明】
【００５０】
【図１】本発明の実施例に係るメモリ外付けマイコンの構成を示すブロック図。
【図２】本発明の実施例に係るメモリ外付けマイコンのメモリのアドレスマップの例を示す図。
【図３】本発明の実施例に係るメモリ外付けマイコンにおける暗号化方法および復号化方法の例を示す図。
【図４】本発明の実施例に係るメモリ外付けマイコンのブートメモリに格納されるプログラムの例を示す図。
【図５】本発明の実施例に係るメモリ外付けマイコンにおける外付けメモリへのデータ転送動作のフローを示すフロー図。
【図６】本発明の実施例に係るメモリ外付けマイコンにおける外付けメモリからのデータ転送動作のフローを示すフロー図。
【図７】本発明の実施例に係るメモリ外付けマイコンにおける外付けメモリへのデータ転送動作の様子を示す波形図。
【図８】本発明の実施例に係るメモリ外付けマイコンにおける外付けメモリからのデータ転送動作の様子を示す波形図。
【図９】本発明の実施例に係るメモリ外付けマイコンにおける暗号化／復号化の様子を示す図。
【符号の説明】
【００５１】
１  メモリ外付けマイコン
２  ＭＣＵチップ
３  フラッシュメモリ
２１  ＣＰＵ
２２  フラッシュメモリＩ／Ｆ
２３  シリアルＩ／Ｏ
２４  バッファメモリ
２５  ブートメモリ
２６  アドレスコントローラ
２２１  レジスタ
【図１】
2005209108.tif 000003
【図２】
2005209108.tif 000004
【図３】
2005209108.tif 000005
【図４】
2005209108.tif 000006
【図５】
2005209108.tif 000007
【図６】
2005209108.tif 000008
【図７】
2005209108.tif 000009
【図８】
2005209108.tif 000010
【図９】
2005209108.tif 000011