(57)【要約】【課題】  組込システムにおいて記憶素子の記憶内容の解析を困難にする技術的手段を提供する。【解決手段】  組込システムは、プログラムを記憶する記憶素子２と、アドレスバス３Ａおよびデータバス４Ａを介して記憶素子２にアクセスし、記憶素子２に記憶されたプログラムに従って動作するマイコン１とを具備する。アドレスバス３Ａおよびデータバス４Ａはアドレスおよびデータのビットの並び替えを行う。【選択図】図１
2015097072.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを記憶する記憶素子と、
アドレスバスおよびデータバスを介して前記記憶素子にアクセスし、前記記憶素子に記憶されたプログラムに従って動作する処理手段とを具備し、
前記アドレスバスまたはデータバスの少なくとも一方においてビットの並び替えを行うことを特徴とする組込システム。
【請求項２】
プログラムを記憶する記憶素子と、
前記記憶素子に記憶されたプログラムに従って動作する処理手段と、
前記記憶素子とアドレスバスおよびデータバスを介して接続され、前記処理手段から前記記憶素子へのアクセスの仲介を行う手段であって、前記アドレスバスを介して前記記憶素子に与えるアドレスまたは前記データバスを介して前記記憶素子との間で授受されるデータの少なくとも一方のビットの並び替えを行う仲介手段と
を具備することを特徴とする組込システム。
【請求項３】
前記仲介手段は、
前記アドレスのビットの並び替え態様を指示するアドレス変換情報を記憶するアドレス変換情報記憶手段と、
前記アドレス変換情報記憶手段に記憶されたアドレス変換情報に従って、前記処理手段から供給されるアドレスのビットの並び替えを行い、ビットの並び替え後のアドレスを前記記憶素子に供給するアドレス変換手段と
を具備することを特徴とする請求項２に記載の組込システム。
【請求項４】
前記仲介手段は、前記アドレスについての複数通りのビットの並び替え態様のうちの何れかを示すアドレス変換情報を生成して前記アドレス変換情報記憶手段に書き込むアドレス変換情報生成手段をさらに有することを特徴とする請求項３に記載の組み込みシステム。
【請求項５】
前記記憶素子は揮発性記憶素子であり、前記アドレス変換情報生成手段は、当該組み込みシステムへの電力の供給開始を契機としてアドレス変換情報を生成し前記アドレス変換情報記憶手段に書き込むことを特徴とする請求項４に記載の組み込みシステム。
【請求項６】
前記仲介手段は、
前記データのビットの並び替え態様を指示するデータ変換情報を記憶するデータ変換情報記憶手段と、
前記データ変換情報記憶手段に記憶されたデータ変換情報に従って、前記処理手段および前記記憶素子間で授受されるデータのビットの並び替えを行うデータ変換手段と
を具備することを特徴とする請求項２〜４のいずれか１の請求項に記載の組込システム。
【請求項７】
前記仲介手段は、前記データについての複数通りのビットの並び替え態様のうちの何れかを示すデータ変換情報を生成して前記データ変換情報記憶手段に書き込むデータ変換情報生成手段をさらに有することを特徴とする請求項６に記載の組み込みシステム。
【請求項８】
前記記憶素子は揮発性記憶素子であり、前記データ変換情報生成手段は、当該組み込みシステムへの電力の供給開始を契機としてデータ変換情報を生成し前記データ変換情報記憶手段に書き込むことを特徴とする請求項７に記載の組み込みシステム。
【請求項９】
前記処理手段が前記アドレス変換情報記憶手段におけるアドレス変換情報の書き換えを行うことを特徴とする請求項３に記載の組込システム。
【請求項１０】
前記処理手段が前記データ変換情報記憶手段におけるデータ変換情報の書き換えを行うことを特徴とする請求項６に記載の組込システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、マイクロコンピュータ（以下、マイコンと略す）等の処理手段がプログラムを外部のフラッシュメモリやＳＤＲＡＭ（Synchronous Dynamic Random
Access Memory）等の記憶素子に格納し、このプログラムに従って動作する組込システムに係り、特に記憶素子に格納されたプログラム等の資産を、悪意を持った盗難行為等から保護する組込システムのセキュリティ技術に関する。
【背景技術】
【０００２】
図８は一般的な組込システムの構成を示すブロック図である。図８に示すように、組込システムは、マイコン１と、マイコン１を動作させるプログラムを記憶する記憶素子２を有する。記憶素子２としては、フラッシュメモリ等の記憶素子が使用される。マイコン１と記憶素子２との間には、アドレスバス３、データバス４および制御信号線５が介在している。そして、図８に示すように、マイコン１のアドレス端子Ａ０〜Ａ１９は、アドレスバス３を介して記憶素子２のアドレス端子Ａ０〜Ａ１９に各々接続され、マイコン１のデータ端子Ｄ０〜Ｄ１５は、データバス４を介して記憶素子２のデータ端子Ｄ０〜Ｄ１５に各々接続される。マイコン１は、このアドレスバス３、データバス４および制御信号線５を介して記憶素子２からプログラムをリード（フェッチ）して動作を行う。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−３２２６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、上述した組込システムは、悪意のある者が記憶素子２の記憶内容を読み出すことができるため、記憶素子２に記憶されたプログラムを解析することが容易であるという問題があった。また、組込システムでは、プログラムだけでなく、ユーザの個人情報（パスワード等）が格納されることもあり、記憶素子２の記憶内容の読み出しが可能であると、セキュリティの脅威にさらされるという問題がある。
【０００５】
この発明は以上のような事情に鑑みてなされたものであり、組込システムにおいて記憶素子の記憶内容の解析を困難にする技術的手段を提供することを目的としている。
【課題を解決するための手段】
【０００６】
好ましい態様において、この発明による組込システムは、プログラムを記憶する記憶素子と、アドレスバスおよびデータバスを介して前記記憶素子にアクセスし、前記記憶素子に記憶されたプログラムに従って動作する処理手段とを具備し、前記アドレスバスまたはデータバスの少なくとも一方においてビットの並び替えを行う。
【０００７】
この態様によれば、アドレスバスまたはデータバスの少なくとも一方においてビットの並び替えを行うので、処理手段が記憶素子に例えばプログラムを格納した場合に、記憶素子の記憶内容からそのプログラムの内容を盗み取ることは極めて困難になる。
【０００８】
なお、悪意による記憶素子からのデータの読み出しを防止するための技術を開示した文献として、特許文献１がある。しかし、この特許文献１の技術は、フラッシュＲＯＭのセキュリティビットを利用するものであり、本発明のようにアドレスやデータのビットの並び替えを行うものではない。
【０００９】
他の好ましい態様において、この発明による組込システムは、プログラムを記憶する記憶素子と、前記記憶素子に記憶されたプログラムに従って動作する処理手段と、前記記憶素子とアドレスバスおよびデータバスを介して接続され、前記処理手段から前記記憶素子へのアクセスの仲介を行う手段であって、前記アドレスバスを介して前記記憶素子に与えるアドレスまたは前記データバスを介して前記記憶素子との間で授受されるデータの少なくとも一方のビットの並び替えを行う仲介手段とを具備する。
【００１０】
この態様では、アドレスバスやデータバスの代わりに、仲介手段がアドレスやデータのビットの並び替えを行う。従って、上記態様と同様、記憶素子の記憶内容からプログラム等の内容を盗み取ることは極めて困難になる。
【００１１】
この態様において、前記仲介手段は、前記アドレスのビットの並び替え態様を指示するアドレス変換情報を記憶するアドレス変換情報記憶手段と、前記アドレス変換情報記憶手段に記憶されたアドレス変換情報に従って、前記処理手段から供給されるアドレスのビットの並び替えを行い、ビットの並び替え後のアドレスを前記記憶素子に供給するアドレス変換手段とを具備するものであってもよい。
【００１２】
そして、前記処理手段が前記アドレス変換情報記憶手段におけるアドレス変換情報の書き換えを行ってもよい。また、前記処理手段にアドレス変換情報の書き換えを行わせるのではなく、前記仲介手段にアドレス変換情報の書き換えを行わせるようにしてもよい。具体的には、前記アドレスについての複数通りのビットの並び替え態様のうちの何れかを示すアドレス変換情報を生成して前記アドレス変換情報記憶手段に書き込むアドレス変換情報生成手段を前記仲介手段に設けるようにすればよい。ここで、前記記憶素子はフラッシュメモリ等の不揮発性記憶素子であってもよいし、ＳＤＲＡＭなどの揮発性記憶素子であってもよい。前記記憶素子が揮発性記憶素子である場合には、組み込みシステムへの電力の供給が開始される毎にアドレス変換情報の生成およびアドレス変換情報記憶手段への書き込みをアドレス変換情報生成手段に実行させるようにすればよい。
【００１３】
また、前記仲介手段は、前記データのビットの並び替え態様を指示するデータ変換情報を記憶するデータ変換情報記憶手段と、前記データ変換情報記憶手段に記憶されたデータ変換情報に従って、前記処理手段および前記記憶素子間で授受されるデータのビットの並び替えを行うデータ変換手段とを具備するものであってもよい。
【００１４】
そして、前記処理手段が前記データ変換情報記憶手段におけるデータ変換情報の書き換えを行ってもよい。また、前記処理手段にデータ変換情報の書き換えを行わせるのではなく、前記仲介手段にデータ変換情報の書き換えを行わせるようにしてもよい。具体的には、前記データについての複数通りのビットの並び替え態様のうちの何れかを示すデータ変換情報を生成して前記データ変換情報記憶手段に書き込むデータ変換情報生成手段を前記仲介手段に設けるようにすればよい。前記記憶素子が揮発性記憶素子である場合には、組み込みシステムへの電力の供給が開始される毎にデータ変換情報の生成およびデータ変換情報記憶手段への書き込みをデータ変換情報生成手段に実行させるようにすればよい。
【００１５】
これらの態様によれば、アドレスやデータのビットの並び替えの態様が固定されておらず、任意の態様を選択することができるので、記憶素子の記憶内容からプログラム等の内容を盗み取る行為をさらに効果的に防止することができる。
【図面の簡単な説明】
【００１６】
【図１】この発明の第１実施形態である組込システムの構成を示すブロック図である。
【図２】この発明の第２実施形態である組込システムの構成を示すブロック図である。
【図３】同実施形態におけるビット並び替え回路の構成例を示す図である。
【図４】同実施形態におけるビット並び替え回路の他の構成例を示す図である。
【図５】同ビット並び替え回路のセパレータの構成例を示す図である。
【図６】この発明の第３実施形態である組込システムの構成を示すブロック図である。
【図７】同実施形態におけるビット並び替え回路の構成例を示す図である。
【図８】一般的な組込システムの構成を示すブロック図である。
【発明を実施するための形態】
【００１７】
以下、図面を参照し、この発明の実施形態について説明する。
＜第１実施形態＞
図１は、この発明の第１実施形態である組込システムの構成を示すブロック図である。本実施形態による組込システムは、前掲図８のものと同様、マイコン１とマイコン１を動作させるプログラムを記憶する記憶素子２とを有する。本実施形態の記憶素子２はフラッシュメモリ等の不揮発性記憶素子であり、マイコン１と記憶素子２との間には、アドレスバス３Ａ、データバス４Ａおよび制御信号線５が介在している。
【００１８】
本実施形態では、アドレスバス３Ａが、マイコン１から記憶素子２へ供給するアドレスのビットの並び替えを行う。図１に示す例では、アドレスバス３Ａにより、マイコン１におけるアドレスのビットＡ０、Ａ１、…、Ａ１９が記憶素子２におけるアドレスのビットＡ１９、Ａ０、…、Ａ１８とされる。また、本実施形態では、データバス４Ａが、マイコン１および記憶素子２間で授受されるデータのビットの並び替えを行う。図１に示す例では、マイコン１から記憶素子２へのデータ書き込み時、データバス４Ａにより、マイコン１におけるデータのビットＤ０、Ｄ１、…、Ｄ１５が記憶素子２におけるデータのビットＤ１、…、Ｄ１５、Ｄ０とされる。逆に記憶素子２からマイコン１へのデータ読み出し時、記憶素子２におけるデータのビットＤ１、…、Ｄ１５、Ｄ０は、マイコン１におけるデータのビットＤ０、Ｄ１、…、Ｄ１５とされる。なお、制御信号線５は、前掲図８のものと同様、信号の並び替えを行わない。
【００１９】
本実施形態では、このようにアドレスバス３Ａおよびデータバス４Ａがビットの並び替えを行うため、図１の下側に示すように、例えば記憶素子２へのプログラムの書き込み時、マイコン１が出力するアドレス、データがそれぞれ０＿０００１ｈ、０００１ｈであるとすると、記憶素子２に与えられるアドレス、データはそれぞれ、４＿００００ｈ、０００２ｈとなり、記憶素子２のアドレス４＿００００ｈにデータ０００２ｈが書き込まれる。
【００２０】
一方、プログラムの読み出し時は、マイコン１がアドレス０＿０００１ｈを出力すると、記憶素子２にはアドレス４＿００００ｈが与えられる。この結果、記憶素子２のアドレス４＿００００ｈからデータ０００２ｈが読み出される。このデータ０００２ｈは、データバス４Ａを介すことにより、データ０００１ｈとなってマイコン１に供給される。
【００２１】
以上のように本実施形態では、記憶素子２へのデータ書き込み時、マイコン１から出力されたアドレスは、アドレスバス３Ａを介すことによりビットの並び替えが施されて記憶素子２に供給される。従って、マイコン１から出力されたデータは、記憶素子２においてマイコン１が出力したアドレスとは異なるアドレスに格納される。しかしながら、記憶素子２からのデータ読み出し時、マイコン１は所望のデータを読み出すために、当該データとともに出力したアドレスと同じアドレスを出力すればよい。何故ならば、そのアドレスは、データ書き込み時と同様なビットの並び替えが施されて記憶素子２に供給されるからである。また、記憶素子２へのデータ書き込み時、マイコン１から出力されたデータは、データバス４Ａを介すことによりビットの並び替えが行われて記憶素子２に供給され、記憶素子２に格納される。しかしながら、記憶素子２からのデータ読み出し時、記憶素子２から読み出されたデータは、データバス４Ａを介すことにより、データ書き込み時とは逆のビット並び替えが施され、マイコン１に供給される。従って、マイコン１は、データ書き込み時に記憶素子２に向けて供給したデータと同じデータを受け取ることとなる。このように本実施形態では、アドレスバス３Ａにアドレスのビットの並び替えを行わせ、データバス４Ａにデータのビットの並び替えを行わせているが、マイコン１の動作には何ら支障が生じない。
【００２２】
そして、本実施形態では、マイコン１が出力したデータは、記憶素子２においてマイコン１が出力したアドレスとは異なるアドレスに格納され、しかも、その際にビットの並び替えが行われて格納される。このようにして記憶素子２に書き込まれたデータは、プログラムのコードとして本来の意味を成さないものとなる。従って、悪意者が記憶素子２の記憶内容を解析したとしてもプログラムの内容を盗み取るのを防止することができる。
【００２３】
＜第２実施形態＞
図２は、この発明の第２実施形態である組込システムの構成を示すブロック図である。本実施形態による組込システムでは、マイコン１および記憶素子２間に介在するアドレスバス３、データバス４および制御信号線５の途中に仲介素子６が介挿されている。上記第１実施形態では、アドレスバス３Ａがアドレスのビットの並び替えを行い、データバス４Ａがデータのビットの並び替えを行った。しかし、本実施形態において、アドレスバス３およびデータバス４はそのようなビットの並び替えを行わない。その代わりに、本実施形態では、仲介素子６がマイコン１から指示された並び替え態様でアドレスのビットの並び替えおよびデータのビットの並び替えを行う。
【００２４】
図２に示すように、仲介素子６は、アドレス変換情報記憶部６１と、データ変換情報記憶部６２と、アドレス変換部６３と、データ変換部６４とを有する。ここで、アドレス変換情報記憶部６１は、アドレスのビットの並び替え態様を指示するアドレス変換情報を記憶する手段である。また、データ変換情報記憶部６２は、データのビットの並び替え態様を指示するデータ変換情報を記憶する手段である。また、アドレス変換部６３は、アドレス変換情報記憶部６１に記憶されたアドレス変換情報に従って、マイコン１から供給されるアドレスのビットＡ０〜Ａ１９の並び替えを行い、ビットの並び替え後のアドレスを記憶素子２に供給する手段である。また、データ変換部６４は、データ変換情報記憶部６２に記憶されたデータ変換情報に従って、マイコン１および記憶素子２間で授受されるデータのビットの並び替えを行う手段である。
【００２５】
本実施形態では、例えば組込システムの初期化時にマイコン１がアドレス変換情報記憶部６１およびデータ変換情報記憶部６２に任意のアドレス変換情報およびデータ変換情報を書き込み、その後、記憶素子２の記憶内容の初期化を行う。この初期化の際、マイコン１は、組込システムを機能させるためのプログラムを仲介素子６を介して記憶素子２に書き込むが、その際、仲介素子６のアドレス変換部６３がマイコン１から供給されたアドレスのビットの並び替えを行い、データ変換部６４がマイコン１から供給されたデータのビットの並び替えを行う。従って、悪意者が記憶素子２の記憶内容からプログラムの内容を盗み取るのを困難にすることができる。しかも、本実施形態において、アドレス変換部６３およびデータ変換部６４は、複数種類の態様でビットの並び替えを行うことができる。そして、それらのうちのいずれの態様でビットの並び替えを行うかは、システム初期化時にマイコン１がアドレス変換情報記憶部６１およびデータ変換情報記憶部６２に書き込むアドレス変換情報およびデータ変換情報により決定される。従って、悪意者が記憶素子２の記憶内容からプログラムの内容を盗み取ることは甚だ困難なものとなる。
【００２６】
図３は図２におけるデータ変換部６４として好適なビット並び替え回路１００の構成例を示す回路図である。
【００２７】
このビット並び替え回路１００は、スイッチマトリックス１１０と、ゲート信号記憶部１２０とにより構成されている。スイッチマトリックス１１０は、例えば記憶素子２へのデータ書き込み時における並び替え前のＮビットが出力されるＮ本の行線１１１と、並び替え後のＮビットが出力されるＮ本の列線１１２と、各行線１１１および各列線１１２の交差に対応させて各々設けられたＮ×Ｎ個のスイッチＳＷにより構成されている。ここで、Ｎ本の行線１１１は、例えば図２のマイコン１のデータ端子Ｄ０〜Ｄ１５に接続され、Ｎ本の列線１１２は、例えば図２の記憶素子２のデータ端子Ｄ０〜Ｄ１５に接続される（この場合はＮ＝１６）。ゲート信号記憶部１２０は、スイッチマトリックス１１０のＮ×Ｎ個のスイッチＳＷのＯＮ／ＯＦＦを制御するＮ×Ｎビットのゲート信号ビット列を記憶する手段であり、例えばＲＯＭにより構成されている。このゲート信号記憶部１２０には、図２におけるデータ変換情報記憶部６２が記憶するデータ変換情報がアドレスとして与えられる。
【００２８】
スイッチマトリックス１１０において、第１行第１列、第２行第２列、…、第Ｎ行第Ｎ列という具合に対角線上に並んだＮ個のスイッチＳＷをＯＮさせ、他のスイッチＳＷをＯＦＦさせると、Ｎ本の行線１１１に出力されたＮビットは、そのままの並びでＮ本の列線１１２に出力される。これに対し、第２行第１列、第１行第２列を各スイッチＳＷをＯＮ、第３行第３列から第Ｎ行第Ｎ列までの各スイッチＳＷをＯＮにすると、第１行の行線に出力されたビットと第２行の行線に出力されたビットが入れ替わって第１列の列線、第２列の列線に出力される。そして、各スイッチＳＷのＯＮ／ＯＦＦパターンを変えると、ビットの並び替えパターンを変えることができる。
【００２９】
本実施形態では、次の条件を満たすようにスイッチマトリックス１１０のＮ×Ｎ個のスイッチＳＷのＯＮ／ＯＦＦパターンを制御することにより、Ｎビットの並び替えパターンを制御する。
ａ．スイッチマトリックス１１０の各列において１個のスイッチＳＷのみをＯＮとし、他のスイッチＳＷをＯＦＦにする。
ｂ．スイッチマトリックス１１０の各列において、他の列における同一行のスイッチＳＷがＯＮであるスイッチＳＷはＯＦＦにする。
【００３０】
この条件を満たすＮ×Ｎ個のスイッチＳＷのＯＮ／ＯＦＦパターンは、全部でＮ！＝Ｎ・（Ｎ−１）・（Ｎ−２）・…・２・１種類ある。従って、本実施形態において実現可能なビットの並び替えパターンはＮ！種類ある。ゲート信号記憶部１２０には、このＮ！種類の並び替えパターンに対応したＮ！種類のゲート信号ビット列が記憶されている。ゲート信号記憶部１２０は、データ変換情報記憶部６２に記憶されたデータ変換情報に従って、このＮ！種類のゲート信号ビット列の中の１種類のゲート信号ビット列を選択し、スイッチマトリックス１１０のＮ×Ｎ個のスイッチＳＷに供給する。
【００３１】
このように図３に示す回路では、データ変換情報に従って決定された並び替え態様で、マイコン１が出力するアドレスのビットの並び替えが行われる。以上、データ変換部６４に適用する場合を例にビット並び替え回路１００の構成を説明したが、ビット並び替え回路１００はアドレス変換部６３にも勿論適用可能である。
【００３２】
図４は図２におけるアドレス変換部６３として好適なビット並び替え回路２００の構成例を示す回路図である。
【００３３】
このビット並び替え回路２００は、デコーダ２１０と、１９個の縦続接続されたセパレータ２２０＿ｋ（ｋ＝１〜１９）とにより構成されている。デコーダ２１０は、アドレス変換情報記憶部６１に記憶されたアドレス変換情報をデコードし、選択データＳＥＬ＿ｋ（ｋ＝１〜１９）をセパレータ２２０＿ｋ（ｋ＝１〜１９）に出力する回路である。
【００３４】
セパレータ２２０＿１９には、マイコン１が出力するアドレスのビットＡ０〜Ａ１９が供給される。セパレータ２２０＿１９は、この２０ビットの中から選択データＳＥＬ＿１９により指定された１ビットを選択し、この選択したビットをビットＡ１９として記憶素子２に供給し、残りの１９ビットをセパレータ２２０＿１８に供給する。セパレータ２２０＿１８は、セパレータ２２０＿１９から供給された１９ビットの中から選択データＳＥＬ＿１８により指定された１ビットを選択し、この選択したビットをビットＡ１８として記憶素子２に供給し、残りの１８ビットをセパレータ２２０＿１７（図示略）に供給する。以下同様であり、セパレータ２２０＿ｋは、セパレータ２２０＿ｋ＋１から供給されたｋ＋１ビットの中から選択データＳＥＬ＿ｋにより指定された１ビットを選択し、この選択したビットをビットＡｋとして記憶素子２に供給し、残りのｋビットをセパレータ２２０＿ｋ−１に供給する。
【００３５】
デコーダ２１０の構成には各種のものが考えられるが、例えば次のような演算を行う回路をデコーダ２１０としてもよい。まず、任意の整数値であるアドレス変換情報を受け取り、このアドレス変換情報を２０によって除算して、その余りを求める。この余りは０〜１９の範囲の値となる。この余りを示すデータを選択データＳＥＬ＿１９としてセパレータ２２０＿１９に送る。また、アドレス変換情報を１９によって除算し、その余りを示すデータを選択データＳＥＬ＿１８としてセパレータ２２０＿１８に送る。以下同様であり、アドレス変換情報をｋ＋１によって除算して、その余りを示すデータを選択データＳＥＬ＿ｋとしてセパレータ２２０＿ｋに送るのである。
【００３６】
図５はセパレータ２２０＿ｋ（ｋ＝１〜１９）の中のセパレータ２２０＿２の構成例を示す回路図である。このセパレータ２２０＿２には、前段のセパレータ２２０＿３からアドレスの構成ビットの中の３ビットＬＡ（１）〜ＬＡ（３）が供給される。また、セパレータ２２０＿２にはデコーダ２１０から選択データＳＥＬ＿２として、３ビットの選択データＳＥＬ＿２（１）〜ＳＥＬ＿２（３）が供給される。この選択データの各ビットＳＥＬ＿２（１）〜ＳＥＬ＿２（３）は、いずれか１ビットが“１”、残りの２ビットが“０”となる。デコーダ２１０は、上述のようにアドレス変換情報に除算を施すことにより選択データＳＥＬ＿ｋを生成する場合、例えば除算の余りが０であればＳＥＬ＿２（１）を”１”とし、余りが１であればＳＥＬ＿２（２）を”１”とし、余りが２であればＳＥＬ＿２（３）を”１”とする、という具合に、余りに基づいて“１”とするビットを選択する。
【００３７】
セパレータ２２０＿２は、ビットＬＡ（１）〜ＬＡ（３）の中から記憶素子２に供給するアドレスのビットＳＡを選択するための手段として、ＡＮＤゲート２３１〜２３３とＯＲゲート２３４とを有する。選択データのビットＳＥＬ＿２（１）が“１”である場合、前段セパレータからのアドレスのビットＬＡ（１）がＡＮＤゲート２３１およびＯＲゲート２３４を通過し、ビットＳＡとして記憶素子２に供給される。また、選択データのビットＳＥＬ＿２（２）が“１”である場合、前段セパレータからのアドレスのビットＬＡ（２）がＡＮＤゲート２３２およびＯＲゲート２３４を通過し、ビットＳＡとして記憶素子２に供給される。また、選択データのビットＳＥＬ＿２（３）が“１”である場合、前段セパレータからのアドレスのビットＬＡ（３）がＡＮＤゲート２３３およびＯＲゲート２３４を通過し、ビットＳＡとして記憶素子２に供給される。
【００３８】
また、セパレータ２２０＿２は、ビットＬＡ（１）〜ＬＡ（３）の中から次段のセパレータ２２０＿１に供給するアドレスのビットＮＡ（１）およびＮＡ（２）を選択するための手段として、インバータ２４１〜２４３、ＡＮＤゲート２５１〜２５６およびＯＲゲート２６１〜２６２を有する。選択データのビットＳＥＬ＿２（１）が“１”である場合、ビットＬＡ（２）がＡＮＤゲート２５１およびＯＲゲート２６１を通過するとともに、ビットＬＡ（３）がＡＮＤゲート２５２およびＯＲゲート２６２を通過し、各々ビットＮＡ（１）およびＮＡ（２）として次段のセパレータ２２０＿１に供給される。選択データのビットＳＥＬ＿２（２）が“１”である場合、ビットＬＡ（１）がＡＮＤゲート２５３およびＯＲゲート２６１を通過するとともに、ビットＬＡ（３）がＡＮＤゲート２５４およびＯＲゲート２６２を通過し、各々ビットＮＡ（１）およびＮＡ（２）として次段のセパレータ２２０＿１に供給される。選択データのビットＳＥＬ＿２（３）が“１”である場合、ビットＬＡ（１）がＡＮＤゲート２５５およびＯＲゲート２６１を通過するとともに、ビットＬＡ（２）がＡＮＤゲート２５６およびＯＲゲート２６２を通過し、各々ビットＮＡ（１）およびＮＡ（２）として次段のセパレータ２２０＿１に供給される。このように前段セパレータ２２０＿３からのビットＬＡ（１）〜ＬＡ（３）のうち記憶素子２に送られない２ビットが次段セパレータ２２０＿１に送られる。
【００３９】
以上、セパレータ２２０＿２を例に説明したが、他のセパレータ２２０＿ｋ（ｋ＝１〜１９かつｋ≠２）についても同様に構成することが可能である。
以上が本実施形態による組込システムの詳細である。
【００４０】
本実施形態によれば、記憶素子２に与えられるアドレスのビットの並び替えの態様およびデータのビットの並び替えの態様が固定されておらず、アドレス変換情報およびデータ変換情報により任意に切り換えることが可能であるので、記憶素子２を取得した悪意者がその記憶内容からプログラムの内容を盗み取る行為をより効果的に防止することができる。
【００４１】
＜第３実施形態＞
図６は、この発明の第３実施形態である組込システムの構成を示すブロック図である。図６では図２におけるものと同一の構成要素には同一の符号が付されている。図６と図２を対比すれば明らかなように、本実施形態による組込システムは、以下の２つの点が第２実施形態の組み込みシステムと異なる。第１に、記憶素子２に代えてＳＤＲＡＭなどの揮発性記憶素子である記憶素子２´を設けた点である。第２に仲介素子６に代えて仲介素子６´を設けた点である。記憶素子２´はプログラムを実行する際のワークメモリとしてマイコン１によって利用される。仲介素子６´は、当該組み込みシステムへの電力の供給開始を契機として、アドレスのビットの並び替え態様およびデータのビットの並び替え態様を決定する点が仲介素子６と異なる。以下、仲介素子６´を中心に説明する。
【００４２】
図６と図２を対比すれば明らかように、仲介素子６´はアドレス変換情報生成部６５とデータ変換情報生成部６６を有する点が仲介素子６と異なる。アドレス変換情報生成部６５は、図６に示す組み込みシステムへの電力の供給開始を契機として、アドレスについての複数通りのビットの並び替え態様のうちの何れかを示すアドレス変換情報を生成してアドレス変換情報記憶部６１に書き込む。データ変換情報生成部６６は、アドレス変換情報生成部６５と同様に、図６に示す組み込みシステムへの電力の供給開始を契機として、データについての複数通りのビットの並び替え態様のうちの何れかを示すデータ変換情報を生成してデータ変換情報記憶部６２に書き込む。
【００４３】
アドレス変換情報生成部６５の具体的な構成としてはアドレス変換部６３の具体的な構成との関係で種々の態様が考えられ、データ変換情報生成部６６の具体的な構成についてもデータ変換部６４の具体的な構成との関係で種々の態様が考えられる。例えば、アドレス変換部６３として、図４に示すビット並び替え回路２００が採用されている場合には、アドレス変換情報生成部６５として、組み込みシステムへの電力供給開始時刻を表す数値をシードとして整数値の疑似乱数を発生させる疑似乱数発生回路を用い、この疑似乱数をアドレス変換情報とすればよい。ここで、疑似乱数発生回路における疑似乱数生成アルゴリズムとしては混合合同法やＭ系列法など周知のものを適宜採用するようにすればよい。
【００４４】
また、アドレス変換部６３として、図７に示す構成のビット並び換え回路３００を用いる態様も考えられる。図７に示すように、ビット並び換え回路３００は、各々２０個の入力端子と１個の出力端子を有する２０個のセレクタ（図７では、セレクタ３１０−Ａ０〜３１０−Ａ１９）により構成されている。図７に示すビット並び換え回路３００では、セレクタ３１０−Ａｎ（ｎ＝０〜１９）の出力信号が、記憶素子２´のアドレス端子Ａｎに与えられる。以下、これら２０個のセレクタの各々を区別する必要がない場合には、「セレクタ３１０」と表記する。
【００４５】
セレクタ３１０には、０〜１９の何れかの値の選択信号ＳＥＬが与えられる。セレクタ３１０は、与えられた選択信号の値がｎであれば、ｎ番目の入力端子に入力された信号を出力端子へ出力する。図７に示すように、セレクタ３１０−Ａ０の入力端子０〜１９はマイコン１のアドレス端子Ａ０〜Ａ１９に接続されている。そして、セレクタ３１０−Ａ１の入力端子０〜１９はマイコン１のアドレス端子Ａ１〜Ａ１９、Ａ０に、・・・セレクタ３１０−Ａ１９の入力端子０〜１９は、マイコン１のアドレス端子Ａ１９、Ａ０〜Ａ１８に接続されている。つまり、セレクタ３１０−Ａ０〜３１０−Ａ１９の各々におけるｋ番目の入力端子に着目すると、これら入力端子は各々マイコン１の異なるアドレス端子に接続されている。これにより、マイコン１の出力するアドレスを構成する各ビットを２０通りの並べ方の何れかで並べ替えて記憶素子２´に与えることができる。
【００４６】
例えば、選択信号ＳＥＬの値が０であれば、セレクタ３１０−Ａ０の出力端子からはマイコン１より与えられたアドレスのＡ０ビットが、セレクタ３１０−Ａ１の出力端子からはマイコン１より与えられたアドレスのＡ１ビットが、・・・セレクタ３１０−Ａ１９の出力端子からはマイコン１より与えられたアドレスのＡ１９ビットが、それぞれ出力される。また、選択信号ＳＥＬの値が１であれば、セレクタ３１０−Ａ０の出力端子からはマイコン１より与えられたアドレスのＡ１ビットが、セレクタ３１０−Ａ１の出力端子からはマイコン１より与えられたアドレスのＡ２ビットが、・・・セレクタ３１０−Ａ１９の出力端子からはマイコン１より与えられたアドレスのＡ０ビットが、それぞれ出力される。このような構成のビット並び換え回路３００をアドレス変換部６３として用いる場合には、アドレス変換情報生成部６５として、組み込みシステムへの電力供給開始時刻を表す数値をシードとして０〜１９の範囲の整数値の疑似乱数を発生させ、当該疑似乱数をアドレス変換情報としてアドレス変換情報記憶部６１に書き込む疑似乱数発生回路を用い、アドレス変換情報記憶部６１に記憶されているアドレス変換情報を上記選択信号ＳＥＬとして各セレクタ３１０に与えるようにすればよい。
【００４７】
また、データ変換部６４として、図３に示すビット並び替え回路１００が採用されている場合には、前述したＮ！通りのゲート信号ビット列の各々に、そのゲート信号ビット列を一意に示す識別子（例えば、１〜Ｎ！のシーケンス番号）を対応付けてゲート信号記憶部１２０に格納しておき、データ変換情報生成部６６として、組み込みシステムへの電力供給開始時刻を表す数値をシードとして１〜Ｎ！の範囲の整数値の疑似乱数を発生させ、当該疑似乱数をデータ変換情報としてデータ変換情報記憶部６２に書き込む疑似乱数発生回路を用いるようにすればよい。
【００４８】
ここで、Ｎ！通りのゲート信号ビット列の生成手法としては種々の態様が考えられる。例えば、ゲート信号ビット列としてＮ行Ｎ列の行列を用いる場合には、Ｎ行Ｎ列の単位行列の行に対してＮ次対称群の各元の表す操作（すなわち、当該単位行列を行単位で並び替える操作）を施して得られるＮ！通りのＮ行Ｎ列の行列の各々を上記ゲート信号ビット列として用いることが考えられる。このようにして得られた各行列では、Ｎ個の行の各々についてその行方向に並んだＮ個の行列成分のうちの１つが１、その他が０になっているとともに、Ｎ個の列の各々についてその列方向に並んだＮ個の行列成分のうちの１つが１、その他が０になっている。したがって、ビット並び替え回路１００には、スイッチマトリックス１１０におけるｉ番目の行線とｊ番目の列線の交差に対応するスイッチＳＷを、データ変換情報記憶部６２に格納されたデータ変換情報にしたがってゲート信号記憶部１２０から読み出したゲート信号ビット列のｉ行ｉ列成分に対応させてＯＮ／ＯＦＦ（当該行列成分が１であればＯＮ、０であればＯＦＦ）させるようにすればよい。
【００４９】
本実施形態においても上記第２実施形態と同様に、記憶素子２´に与えられるアドレスのビットの並び替えの態様およびデータのビットの並び替えの態様が固定されておらず、アドレス変換情報およびデータ変換情報により切り換えられる。これに加えて、本実施形態では、アドレス変換情報およびデータ変換情報は組み込みシステムへの電力の供給が開始される毎に仲介素子６´内で生成されるため、アドレスおよびデータのビットの並び替えの規則を推測することが困難になり、記憶素子２´の記憶内容の読み出しが一層困難になる。本実施形態では、アドレス変換情報およびデータ変換情報は組み込みシステムへの電力の供給が開始される毎に生成されるため、アドレスのビットの並び替えの態様およびデータのビットの並び替えの態様は組み込みシステムへの電力の供給が開始される毎に異なる可能性がある。しかし、記憶素子２´の記憶内容は給電が停止すれば消滅する（換言すれば、給電が開始される都度リセットされる）ため、特段の問題は生じない。なお、記憶素子２´がフラッシュメモリ等の不揮発性記憶素子である場合には、組込システムの初期化時にマイコン１からの指示に応じて仲介素子６´内でアドレス変換情報（或いはデータ変換情報）の生成および記憶を行わせるようにしてもよい。
【００５０】
本実施形態では、データ変換部６４として図３に示すビット並び替え回路１００を採用する場合には、ゲート信号記憶部１２０にＮ！通りのゲート信号ビット列を記憶させておく場合について説明した。しかし、ゲート信号記憶部１２０にはＮ行Ｎ列の単位行列のみを格納しておくとともに、Ｎ次対称群の各元を示す識別子として１〜Ｎ！のシーケンス番号を用い、組み込みシステムへの電力供給開始を契機としてデータ変換情報生成部６６により生成され、データ変換情報記憶部６２に書き込まれたデータ変換情報の示すＮ次対称群の元の表す操作を上記単位行列に施すことで得られたゲート信号ビット列にしたがってスイッチマトリクス１１０に含まれる各スイッチＳＷのＯＮ／ＯＦＦ制御を行うようにしてもよい。また、Ｎ行Ｎ列の単位行列についても予めゲート信号記憶部１２０に記憶させておくのではなく、所謂クロネッカのデルタを用いた演算により組み込みシステムへの電力供給開始の都度生成するようにしてもよく、この場合はゲート信号記憶部１２０を省略してもよい。
【００５１】
また、本実施形態ではアドレス変換情報とデータ変換情報の両方を仲介素子６´内で生成する場合について説明したが、何れか一方のみを仲介素子６´内で生成し、他方をマイコン１から仲介素子６´に与えるようにしてもよい。例えば、アドレス変換情報のみを仲介素子６´に生成させる態様であれば、データ変換情報生成部６６を省略し、データ変換情報記憶部６２には、マイコン１から仲介素子６´に与えられるデータ変換情報を書き込むようにすればよい。逆に、データ変換情報のみを仲介素子６´に生成させる態様であれば、アドレス変換情報生成部６５を省略し、アドレス変換情報記憶部６１には、マイコン１から仲介素子６´に与えられるアドレス変換情報を書き込むようにすればよい。また、本実施形態では、疑似乱数発生回路をアドレス変換情報生成部６５およびデータ変換情報生成部６６として用いる場合について説明したが、ディップスイッチ等の外部スイッチをアドレス変換情報生成部６５およびデータ変換情報生成部６６として用い、当該外部スイッチに対する操作内容に応じた値のアドレス変換情報およびデータ変換情報を発生させるようにしても良い。
【００５２】
さらに、フラッシュメモリなどの不揮発性記憶素子である記憶素子２を仲介素子６を介してマイコン１に接続するとともに、ＳＤＲＡＭなどの揮発性記憶素子である記憶素子２´を仲介素子６´を介して同マイコン１に接続してもよい。このような態様によれば、マイコン１により記憶素子２に書き込んだプログラムを実行する際のワークメモリとして記憶素子２´を使用することを可能としつつ、記憶素子２を取得した悪意者がその記憶内容からプログラムの内容を盗み取ることや、プログラムを実行中に記憶素子２´が不正アクセスされることによるプログラムの内容の漏えいを防止することができる。
【００５３】
＜他の実施形態＞
以上、この発明の第１、第２および第３実施形態について説明したが、この発明には他にも実施形態が考えられる。例えば次の通りである。
【００５４】
（１）上記各実施形態では、アドレスおよびデータの両方についてビットの並び替えを行ったが、いずれか一方のみのビットの並び替えを行ってもよい。
【００５５】
（２）上記第２実施形態では、並び替え対象がＮビットある場合に、その全ての並び替えパターンであるＮ！通りの並び替えパターンを実現することができるようにビット並び替え回路を構成した（例えば図３におけるＮ！個のゲート信号ビット列）。しかし、全ての並び替えパターンを網羅しなくても、ある程度の個数の並び替えパターンを実現することができれば、記憶素子２の記憶内容からプログラムの内容を盗み出すのを事実上不可能にすることができる。そこで、例えば図３におけるＮ！個のゲート信号ビット列の中の一部を省略する等、実現する並び替えパターンの個数を減らし、ビット並び替え回路の小規模化を図ってもよい。
【符号の説明】
【００５６】
１……マイコン、２……記憶素子、３，３Ａ……アドレスバス、４，４Ａ……データバス、５……制御信号線、６……仲介素子、６１……アドレス変換情報記憶部、６２……データ変換情報記憶部、６３……アドレス変換部、６４……データ変換部、６５…アドレス変換情報生成部、６６…データ変換情報生成部。
【図１】
2015097072.tif 000003
【図２】
2015097072.tif 000004
【図３】
2015097072.tif 000005
【図４】
2015097072.tif 000006
【図５】
2015097072.tif 000007
【図６】
2015097072.tif 000008
【図７】
2015097072.tif 000009
【図８】
2015097072.tif 000010