説明

プロセッサ装置

【課題】制御ユニットの外部メモリにデータを格納しておいてもそのデータの入手及び解析を容易にできないようにしたプロセッサ装置を提供する。
【解決手段】制御ユニットは、CPUによって指定された外部メモリに対するアクセス信号が書き込み用のときアドレスを暗号化して書き込みアドレスを生成しかつ書き込みデータを暗号化して書き込み用暗号化データを生成し、アクセス信号が読み出し用のときアドレスを暗号化して読み出しアドレスを生成しかつ外部メモリから読み出された暗号化データを復号して平文データを生成する暗号化及び復号化手段と、暗号化及び復号化手段によって生成された書き込みアドレスで指定される位置に書き込み用暗号化データの書き込みを行い、暗号化及び復号化手段によって生成された読み出しアドレスで指定される位置から暗号化データを読み出してそれを復号のために暗号化及び復号化手段に供給する外部制御手段と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、MCU(マイクロコントローラ)等の制御ユニット及びそれに外部接続された外部メモリを備えたプロセッサ装置に関する。
【背景技術】
【0002】
MCUを用いた規模の大きい組込みシステムでは、システム全体のプログラムサイズが大きくなるため、プログラム及びデータを単一のLSI(大規模集積回路)からなるMCU内部のメモリ(ROM, RAM)に収めることができなくなり、MCUの外部にフラッシュROM、RAM等のメモリを接続し、そこにプログラム及びデータを格納することが多い。
【0003】
このようにプログラム及びデータが外部メモリに格納されている場合には、外部メモリには内蔵メモリに比べて機密性がないため、そのプログラム及びデータに対する第三者による読み出し、解析、及び改竄が容易になるという可能性がある。
【0004】
これに対してプログラム及びデータを解析や改竄から保護するために、プログラム自体を暗号化して、プログラムの変造につながる解析を難しくする方法が考え出されている(特許文献1及び2参照)。例えば、その方法においては、外部ROMには暗号化されたプログラムを格納して置き、プログラムの起動時に機密性が確保された内蔵ROMに格納された復号プログラムを実行して、外部ROM内の暗号化されたプログラムを復号してそれを外部RAMに展開する。その後、外部RAMのプログラムを実行することによりシステムを作動させる。
【特許文献1】特開2001−230770号公報
【特許文献2】特開2006−179029号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかしながら、かかる方法では、プログラムを展開するために十分な外部RAMが必要であり、システムのコストアップにつながるだけでなく、外部RAM上に展開されたプログラムは暗号化されていないので、プログラム実行時に基板上のアドレス信号とデータ信号とがモニタされると、容易にプログラムを含むデータを入手できるという問題があった。
【0006】
そこで、本発明の目的は、制御ユニットの外部メモリにプログラム等のデータを格納しておいてもそのデータの入手及び解析を容易にできないようにしたプロセッサ装置を提供することである。
【課題を解決するための手段】
【0007】
本発明のプロセッサ装置は、外部メモリが接続された制御ユニットを有し、その外部メモリに対して前記制御ユニットによって暗号化されたデータを書き込み又はその暗号化データの読み出しを行なうプロセッサ装置であって、前記制御ユニットは、前記外部メモリに対して書き込み又は読み出しのためのアクセス信号を発生するCPUと、前記アクセス信号が書き込み用のとき前記CPUによって指定されたアドレスを暗号化して書き込みアドレスを生成しかつ前記アクセス信号に含まれる書き込みデータを暗号化して書き込み用暗号化データを生成し、前記アクセス信号が読み出し用のとき前記CPUによって指定されたアドレスを暗号化して読み出しアドレスを生成しかつ前記外部メモリから読み出された暗号化データを復号して平文データを生成する暗号化及び復号化手段と、前記暗号化及び復号化手段によって生成された前記書き込みアドレスで指定される位置に前記書き込み用暗号化データの書き込みを行い、前記暗号化及び復号化手段によって生成された前記読み出しアドレスで指定される位置から前記暗号化データを読み出してそれを復号のために前記暗号化及び復号化手段に供給する外部制御手段と、を備えることを特徴としている。
【発明の効果】
【0008】
かかる本発明のプロセッサ装置によれば、外部メモリへのデータ書き込みのためのアクセス信号が発生された場合には、暗号化及び復号化手段によって指定アドレスが暗号化されて書き込みアドレスとされると共に書き込みデータが暗号化されて書き込み用暗号化データとされ、その書き込みアドレスで指定された外部メモリの位置に書き込み用暗号化データが書き込まれる。外部メモリからのデータ読み出しのためのアクセス信号が発生された場合には、暗号化及び復号化手段によって指定アドレスが暗号化されて読み出しアドレスとされ、その読み出しアドレスで指定された外部メモリの位置から暗号化データが読み出され、その読み出された暗号化データは暗号化及び復号化手段による復号によって平文データとされる。よって、外部メモリと制御ユニットとの間においてはデータ及びアドレスは暗号化された状態で伝送されるので、アドレス信号とデータ信号とがモニタされても容易にプログラム等のデータを適切な状態で入手することができない。これにより、第三者による不正な読み出し、改竄につながる解析を防止することができる。
【発明を実施するための最良の形態】
【0009】
以下、本発明の実施例を図面を参照しつつ詳細に説明する。
【0010】
図1は本発明の実施例として組み込みシステムに用いられるプロセッサ装置を示している。このプロセッサ装置は、制御ユニットに対応するMCU部1と、外部ROM2と、外部RAM3と、外部バス4とを備えている。外部バス4はMCU部1、外部ROM2及び外部RAM3を互いに接続する共通バスである。
【0011】
外部ROM2には暗号化されたプログラムが格納される。外部RAM3には暗号化されたデータが格納される。
【0012】
MCU部1は、LSIからなり、CPU(中央処理装置)11、キャッシュメモリ12、暗号化/復号化制御部13、鍵保持部14、外部バスコントローラ15及び内部バス16を備えている。内部バス16はキャッシュメモリ12、暗号化/復号化制御部13、及び外部バスコントローラ15を互いに接続する共通バスである。
【0013】
キャッシュメモリ12はCPU11の一部として設けられており、CPU11はキャッシュメモリ12を介してプログラムやデータを入出力する。キャッシュメモリ12は、復号された平文のプログラムやデータを一時的に格納する。
【0014】
外部バスコントローラ15は、外部制御手段であり、CPU11又は暗号化/復号化制御部13によって指定された外部ROM2又は外部RAM3のアドレスへの書き込みデータ又はアドレスからの読み出しデータを中継供給する。
【0015】
暗号化/復号化制御部13は、鍵保持部14と共に暗号化及び復号化手段をなし、外部メモリである外部ROM2又は外部RAM3へのアクセスの毎に、アドレススクランブルと鍵保持部14に格納されている鍵を使用してブロック単位で暗号化/復号化処理を行う。暗号化/復号化制御部13と外部バスコントローラ15との間には、スクランブルアドレス、書き込み暗号化データ及び読み出し暗号化データを送受信するバスラインが設けられている。
【0016】
かかる構成のプロセッサ装置においては、外部ROM2及び外部RAM3の物理アドレスに対してCPU11からは異なるアドレス領域でアクセスすることができる。すなわち、暗号化/復号化制御部13を介して外部ROM2又は外部RAM3に対してアクセスする場合の第1アドレス領域と、暗号化/復号化制御部13を介することなく外部ROM2又は外部RAM3に対して直接アクセスする場合の第2アドレス領域とが存在する。
【0017】
CPU11が命令する際のアクセス先のアドレスが上記の2つのアドレス領域のいずれかに属するかによって、暗号化/復号化制御部13を介するか否かを選択できるようになっている。更に、暗号化/復号化制御部13を介する場合には、動作状態が暗号化結果出力モードに設定されて、書き込みアクセスが外部メモリコントローラ15を経由してメモリ書き込みせず、暗号化/復号化制御部13の暗号化及びアドレススクランブル結果を特定のアドレス(暗号化/復号化制御部13の暗号化結果出力)からCPU11が読み出すことが可能にされている。
【0018】
CPU11はプログラムを実行するために、命令フェッチ、データ読み出しアクセス、データ書き込みアクセス等のアクセス信号を生成する。
【0019】
CPU11は命令フェッチを外部ROM2に対して行う場合には、図2に示すように、先ず、命令フェッチのアクセス信号を暗号化/復号化制御部13に供給する(ステップS1)。この暗号化/復号化制御部13への供給はCPU11による指令アドレスによって行われる。すなわち、指定アドレスが第1アドレス領域であればアクセス信号は暗号化/復号化制御部13に内部バス16を介して指定アドレスと共に供給されるが、第1アドレス領域以外の第2アドレス領域であれば、暗号化/復号化制御部13を介することなく、内部バス16及び外部バスコントローラ15を介して外部ROM2又は外部RAM3に供給される。ステップS1の指定アドレスは暗号化/復号化制御部13に割り当てられた第1アドレス領域に含まれる。命令フェッチ等のアクセス信号送出の際にCPU11からその第1アドレス領域に含まれるアドレスが指定されると、そのアクセス信号は暗号化/復号化制御部13に供給されることになる。暗号化/復号化制御部13はCPU11から受け取った指令アドレスに対して、アドレススクランブル(暗号化)を行って外部ROM2のスクランブルアドレスを生成する(ステップS2)。ステップS2で得られるスクランブルアドレスは第2アドレス領域に属する。
【0020】
次に、暗号化/復号化制御部13は、そのスクランブルアドレスで外部ROM2にアクセスし、プログラムを読み出す(ステップS3)。読み出したプログラムを鍵保持部14に格納されている鍵を使用して暗号化/復号化制御部13が復号し(ステップS4)、復号後の平文のプログラムがキャッシュメモリ12に一時的に格納される(ステップS5)。そして、CPU11はキャッシュメモリ12に格納された平文のプログラムを読み出す(ステップS6)。
【0021】
CPU11がデータ読み出しアクセスを外部RAM3に対して行う場合には、上記のステップS1〜S6と同様の手順で、図3に示すように、データの読み出しが行われる。データ読み出しアクセスを外部ROM2に対して行う場合も同様である。
【0022】
CPU11は、外部RAM3に対して書き込みアクセスを行う場合には、図4に示すように、先ず、書き込みアクセスのアクセス信号を外部RAM3の書き込みアドレスに対応した指定アドレスで暗号化/復号化制御部13に供給する(ステップS11)。ステップS11の指令アドレスは上記の第1アドレス領域に含まれる。暗号化/復号化制御部13はCPU11から受け取った指定アドレスに対し、アドレススクランブルを行って、外部メモリのスクランブルアドレスを生成する(ステップS12)。次に、そのスクランブルアドレスで外部RAM3にアクセスして該当アドレスを含むブロックのデータを読み出し(ステップS13)、読み出したデータを復号し(ステップS14)、その復号した平文データをキャッシュメモリ12に一旦格納する(ステップS15)。CPU11はその平文データを書き換える。暗号化/復号化制御部13は、その書き換えられた平文データを所定のタイミングで、鍵保持部14に格納されている鍵を使用して暗号化し(ステップS16)、暗号化データを外部RAM3のスクランブルアドレスに書き込む(ステップS17)。
【0023】
このように、外部メモリ2,3と外部バスコントローラ15との間においてはデータ及びアドレスは暗号化された状態で伝送されるので、アドレス信号とデータ信号とがモニタされても容易にプログラム等のデータを適切な状態で入手することができない。よって、第三者による不正な読み出し、改竄につながる解析を防止することができる。
【0024】
暗号化/復号化制御部13によるステップS16の暗号化は、1ブロック分の平文のプログラム/データに、そのブロックの先頭アドレスをXORし、その結果にブロック暗号のECBモード暗号化を実施する。ステップS14の復号は、暗号化されたプログラム/データの1ブロックに対し、ブロック暗号のECBモード復号を実施し、その結果にそのブロックの先頭アドレスをXORすることで、平文プログラム/データを得る。
【0025】
また、ステップS2,S12のアドレススクランブルは、暗号化/復号のブロック単位、例えば、16バイト単位で、CPU11から出力されるアドレスが、別のアドレスに変換される。また、スクランブルされる範囲があり、例えば、4Mバイトの範囲内でスクランブルが行われる。スクランブル後のアドレスが重複することはなく、スクランブル前のアドレス(上記の指定アドレス)とスクランブル後のアドレスは、図5(a)に示すように、1対1の所定の対応関係がある。スクランブル前のアドレスとスクランブル後のアドレスとの間においては、例えば、図5(b)に示すように4〜21のビット範囲でスクランブルが施され、それ以外のビットでは内容がそのまま維持される。また、スクランブルされる範囲を1単位として、より大きいスクランブル範囲内でスクランブルをカスケードに行っても良い。
【0026】
なお、書き込みアクセスがブロック間にまたがる場合には、暗号化前にブロック単位に分割し、各ブロックに対して暗号化/復号化とメモリ書き込みとが行われる。
【0027】
また、CPU11からの指令アドレス範囲のうちの暗号化/復号化制御部13を使用しないでバイパスする第2アドレス領域では、暗号化/復号及びアドレススクランブルは行われない。
【0028】
このような暗号化方法を取ることにより、プログラム/データを先頭から順に暗号化する必要がなく、ブロック単位で自由な順序で暗号化処理を行うことが可能になる。
【0029】
次に、プログラムを含むデータを暗号化及びアドレスクランブルして、外部ROM2に書き込む方法について説明する。ここで、外部ROM2は不揮発性メモリのフラッシュROMである。
【0030】
外部ROM2にデータを書き込む場合においてCPU11は、外部ROM2に対し、書き込みコマンド、書き込みアドレス、書き込みデータを送り、書き込みが完了したかを確認する必要がある。
【0031】
CPU11から外部ROM2に書き込みアクセスをする場合には、暗号化/復号化制御部13を用いるための第1アドレス領域と、暗号化/復号化制御部13を使用しないでCPU11から外部ROM2への直接的なアドレス指定となる第2アドレス領域とを選択的に用いる。
【0032】
図6に示すように、CPU11は、先ず、外部メモリへのアクセス信号が暗号化/復号化制御部13を通過するアドレス領域(第1アドレス領域)を用いる暗号化結果出力モードに設定する(ステップS21)。暗号化結果出力モードは暗号化/復号化制御部13によるアドレスのスクランブル及びデータの暗号化の結果を外部バスコントローラに出力せず、その結果をCPU11が得るモードである。
【0033】
次に、暗号化/復号化制御部13を通過する第1アドレス領域で1ブロック分の平文データを書き込みを行う(ステップS22)。このとき、外部ROM2の書き込みを行いたいアドレスに書き込みを行いたいデータを書き込む。これにより、暗号化/復号化制御部13の暗号化結果出力に対応したアドレスを指定してスクランブルアドレスと暗号化結果を読み取る(ステップS23)。得られるスクランブルアドレスは第2アドレス領域のアドレスである。
【0034】
CPU11は外部ROM2への書き込みコマンドを、暗号化/復号化制御部13をバイパスする第2アドレス領域から発行する(ステップS24)。これにより、外部ROM2への書き込みコマンドが暗号化/復号化制御部13によって暗号化及びアドレススクランブルされてしまうことがなく、外部バスコントローラ15を介して外部ROM2に対するコマンドとして発行される。続いて、上記で得られたスクランブルアドレスと暗号化データを、外部ROM2への第2アドレス領域の書き込みアドレス及び書き込みデータとして発行する(ステップS25)。ステップS25により外部ROM2のスクランブルアドレスで指定される位置に1ブロックの暗号化データが書き込まれる。
【0035】
最後に、暗号化/復号化制御部13をバイパスする第2アドレス領域から、外部ROM2への書き込み完了を確認する(ステップS26)。
【0036】
上記を繰り返すことで、外部ROM2に暗号化及びアドレススクランブルされたプログラム及びデータを書き込むことができる。よって、プログラムのバージョンアップ等で外部ROM2に格納されたプログラムを含むデータを更新する場合に装置毎に異なる鍵で暗号化することができるので、装置毎に異なる暗号化データが格納される。これにより暗号化データを不正に読み出したとしても他の装置では利用できないという利点があり、データ保護の安全性をより高めることができる。
【0037】
なお、上記した実施例におけるアドレスの暗号化では、CPU11によって指定された第1アドレス領域のアドレスを1対1の所定の対応関係で前記外部メモリに割り当てられた第2アドレス領域のアドレスに変換し、その変換後のアドレスをスクランブルアドレスとしているが、これに限定されず、他の方法で暗号化しても良い。
【図面の簡単な説明】
【0038】
【図1】本発明の実施例を示すを示すブロック図である。
【図2】図1の装置において命令フェッチを外部ROMに対して行う場合の動作を示すフローチャートである。
【図3】図1の装置においてデータ読み出しアクセスを外部RAMに対して行う場合の動作を示すフローチャートである。
【図4】図1の装置においてデータ書き込みアクセスを外部RAMに対して行う場合の動作を示すフローチャートである。
【図5】アドレススクランブルを説明する図である。
【図6】図1の装置においてデータ書き込みアクセスをフラッシュROMからなる外部ROMに対して行う場合の動作を示すフローチャートである。
【符号の説明】
【0039】
1 MCU部
2 外部ROM
3 外部RAM
11 CPU
13 暗号化/復号化制御部
14 鍵保持部

【特許請求の範囲】
【請求項1】
外部メモリが接続された制御ユニットを有し、その外部メモリに対して前記制御ユニットによって暗号化されたデータを書き込み又はその暗号化データの読み出しを行なうプロセッサ装置であって、
前記制御ユニットは、
前記外部メモリに対して書き込み又は読み出しのためのアクセス信号を発生するCPUと、
前記アクセス信号が書き込み用のとき前記CPUによって指定されたアドレスを暗号化して書き込みアドレスを生成しかつ前記アクセス信号に含まれる書き込みデータを暗号化して書き込み用暗号化データを生成し、前記アクセス信号が読み出し用のとき前記CPUによって指定されたアドレスを暗号化して読み出しアドレスを生成しかつ前記外部メモリから読み出された暗号化データを復号して平文データを生成する暗号化及び復号化手段と、
前記暗号化及び復号化手段によって生成された前記書き込みアドレスで指定される位置に前記書き込み用暗号化データの書き込みを行い、前記暗号化及び復号化手段によって生成された前記読み出しアドレスで指定される位置から前記暗号化データを読み出してそれを復号のために前記暗号化及び復号化手段に供給する外部制御手段と、を備えることを特徴とするプロセッサ装置。
【請求項2】
前記暗号化及び復号化手段は、鍵をデータとして保持する鍵保持部を有し、前記書き込みデータをブロック毎に前記鍵を使用して暗号化して前記書き込み用暗号化データを生成し、前記外部メモリから読み出された暗号化データをブロック毎に前記鍵を使用して暗号化して復号して平文データを生成することを特徴とする請求項1記載のプロセッサ装置。
【請求項3】
前記アクセス信号の指定アドレスが前記外部メモリに割り当てられた第1アドレス領域に属するとき前記アクセス信号は前記暗号化及び復号化手段に供給され、前記アクセス信号の指定アドレスが前記外部メモリに前記第1アドレスとは別に割り当てられた第2アドレス領域に属するとき前記アクセス信号は前記暗号化及び復号化手段に供給されることなく前記外部メモリに供給されることを特徴とする請求項1記載のプロセッサ装置。
【請求項4】
前記外部メモリは不揮発性ROMを備え、
前記不揮発性ROMへのデータ書き込み命令が前記CPUによって発生されたときには、前記暗号化及び復号化手段は前記データ書き込み命令に応じて前記CPUによって指定されたアドレスを暗号化して書き込みアドレスを生成しかつ前記データ書き込み命令に含まれる書き込みデータを暗号化して書き込み用暗号化データを生成し、その書き込みアドレス及び書き込み用暗号化データを前記CPUに供給し、
前記CPUは前記暗号化及び復号化手段から得た前記書き込みアドレス及び書き込み用暗号化データを前記暗号化及び復号化手段を介することなく前記外部制御手段に供給して前記不揮発性ROMの前記書き込みアドレスで指定される位置に書き込み用暗号化データを書き込ませることを特徴とする請求項1記載のプロセッサ装置。
【請求項5】
前記暗号化及び復号化手段によるデータの暗号化においては、1ブロック分の平文データと、そのブロックの先頭アドレスとのXOR(排他的論理和)を演算し、その演算結果にブロック暗号のためのECBモード暗号化を実施し、データの復号化においては、前記暗号化データの1ブロックに対して、ブロック暗号のためのECBモード復号を実施し、その復号結果と該ブロックの先頭アドレスとのXORを演算することにより、平文データを得ることを特徴とする請求項1記載のプロセッサ装置。
【請求項6】
前記暗号化及び復号化手段によるアドレスの暗号化においては、前記CPUによって指定されたアドレスを1対1の所定の対応関係で前記外部メモリに割り当てられたアドレス範囲内のアドレスに変換し、その変換後のアドレスを前記書き込みアドレス又は前記読み出しアドレスとすることを特徴とする請求項1記載のプロセッサ装置。
【請求項7】
前記データはプログラムを含むことを特徴とする請求項1記載のプロセッサ装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2009−163284(P2009−163284A)
【公開日】平成21年7月23日(2009.7.23)
【国際特許分類】
【出願番号】特願2007−339040(P2007−339040)
【出願日】平成19年12月28日(2007.12.28)
【出願人】(308033711)OKIセミコンダクタ株式会社 (898)
【Fターム(参考)】