JP2005157740A - マイクロコンピュータ - Google Patents

マイクロコンピュータ Download PDF

Info

Publication number
JP2005157740A
JP2005157740A JP2003395325A JP2003395325A JP2005157740A JP 2005157740 A JP2005157740 A JP 2005157740A JP 2003395325 A JP2003395325 A JP 2003395325A JP 2003395325 A JP2003395325 A JP 2003395325A JP 2005157740 A JP2005157740 A JP 2005157740A
Authority
JP
Japan
Prior art keywords
data
program
area
address
built
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2003395325A
Other languages
English (en)
Inventor
Yasuhiro Nagira
康宏 柳楽
Yutaka Ito
裕 伊藤
Norio Uchiumi
則夫 内海
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2003395325A priority Critical patent/JP2005157740A/ja
Publication of JP2005157740A publication Critical patent/JP2005157740A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Storage Device Security (AREA)
  • Microcomputers (AREA)

Abstract

【課題】 内蔵不揮発性メモリのデータのうち所定の必要なプログラム又はデータは、外部メモリ空間から読み出し可能としながら、秘匿する必要のあるプログラム又はデータの読み出しに対するセキュリティ向上を図る。
【解決手段】 マイクロコンピュータ100において、内蔵不揮発性メモリ120はプログラム及びデータを格納する例えば3個の記憶領域を備える。エリアレジスタ140は、前記内蔵不揮発性メモリ120の各記憶領域毎にプログラム又はデータの読み出しを許可するか否かを記憶する。比較手段150は、前記エリアレジスタ140が記憶する読み出し不許可領域とCPU110がアクセスする記憶領域とが一致するか否かを比較し、その比較結果が一致するときには、データ無効化手段160は、内蔵不揮発性メモリ120から読み出されるプログラム又はデータを無効化する。
【選択図】 図1

Description

本発明は、不揮発性メモリを内蔵したマイクロコンピュータに格納されたデータ読み出しに対するセキュリティに関する。
従来、この種のセキュリティは、特許文献1に記載されるように、外部メモリや内蔵揮発性メモリに該当するアドレスよりオペコードをフェッチした場合には、内蔵不揮発性メモリに該当するアドレスに格納された秘匿性のあるデータを読み出せないようにしたものである。
特開平6−96235号公報
しかしながら、従来のセキュリティ回路では、外部メモリ及び内蔵揮発性メモリに該当するアドレスよりオペコードフェッチした場合、内蔵不揮発性メモリに該当するアドレスの全領域が読み出し不可能になる。そのため、内蔵不揮発性メモリに配置されたテーブルデータを読み出すといった必要な読み出しまで制限されてしまい、外部メモリにプログラムを配置することができないという問題があった。
本発明はかかる課題に鑑み、その目的は、内蔵不揮発性メモリに該当するアドレスに格納されたプログラム及びデータのうち、外部メモリ及び内蔵揮発性メモリに該当するアドレスから読み出すことが必要なデータについては読み出すことを可能にしつつ、不正ユーザに読み出されたくないプログラム及びデータについては、その読み出しを不可能にするようにして、セキュリティ向上を図ることにある。
前記目的を達成するために、本発明では、内蔵不揮発性メモリの記憶領域のうち、秘匿すべき所定の記憶領域を読み出し不許可領域として設定し、外部メモリ又は内蔵揮発性メモリに該当するアドレスに配置されたプログラムが前記内蔵不揮発性メモリの読み出し不許可領域からのプログラム又はデータの読み出しを指示しているか否かを判断して、その読み出しを禁止又は許可することとする。
すなわち、具体的に、請求項1記載の発明のマイクロコンピュータは、プログラム及びデータを格納する1個又は複数個の記憶領域を有する不揮発性メモリと、前記不揮発性メモリの各記憶領域毎にデータの読み出しを許可するか否かを記憶する保護領域記憶手段と、現在アクセスされる前記不揮発性メモリの記憶領域が前記保護領域記憶手段が記憶する読み出し不許可領域と一致するか否かを比較する比較手段と、前記比較手段の比較結果を受け、この比較結果が一致であるとき、前記不揮発性メモリの記憶領域から読み出されるプログラム又はデータを無効化するデータ無効化手段と、前記不揮発性メモリにアクセスし、この不揮発性メモリが格納するプログラム又はデータを前記データ無効化手段を介して読み出す制御部とを備えたことを特徴とする。
請求項2記載の発明は、前記請求項1記載のマイクロコンピュータにおいて、他のプログラム及びデータを格納する前記不揮発性メモリ以外のメモリを備え、前記制御部は、アクセスが前記不揮発性メモリ以外のメモリに分岐する前に、前記不揮発性メモリの記憶領域のうち所定の記憶領域を読み出し不許可領域として前記保護領域記憶手段に設定するシーケンス制御を行うことを特徴とする。
請求項3記載の発明のローダ・リンカは、前記請求項1記載のデータ無効化手段として、プログラム又はデータの無効化を設定する命令を作成すると共に、少なくとも1つの再配置可能な機械語プログラムを読み込んで、再配置可能な番地を変更する機能を有するローダ・リンカにおいて、制御転移命令を検出する機能と、前記制御転移命令を検出する機能が抽出した制御転移先空間を外部空間であると判定する機能と、前記制御転移命令の前に、前記データ無効化手段としてプログラム又はデータの無効化を設定する命令を挿入する機能とを備え、前記読み込んだ再配置可能な機械語プログラム中の制御転移命令の転移先が外部空間であるとき、前記制御転移命令の前に前記プログラム又はデータの無効化を設定する命令を挿入した絶対機械語プログラムを出力することを特徴とする。
請求項4記載の発明の言語処理系は、前記請求項3記載のローダ・リンカを備える言語処理系において、少なくとも1つの骨子になる原始プログラムを読み込んで、原始プログラムを出力する前処理系と、前記前処理系からの原始プログラムを読み込んで、アセンブリプログラムを出力するコンパイラと、前記コンパイラからのアセンブリプログラムを読み込んで、再配置可能機械コードを出力するアセンブラとを備え、前記ローダ・リンカは、前記アセンブラからの再配置可能機械コードを読み込んで、この再配置可能機械コードを少なくとも1つのライブラリと結合して、絶対機械コードを出力するものであり、前記骨子になる原始プログラム中には、前記保護領域記憶手段での読み出し不許可領域の開始を表すマクロ及び終了を表すマクロが含まれ、前記前処理系は、前記マクロを構文解析して前記原始プログラムに展開する機能を有し、前記コンパイラは、前記マクロが展開された前記原始プログラムを構文解析して、前記マクロが展開されたアセンブリプログラムを展開する機能を有し、前記アセンブラは、前記マクロが展開されたアセンブリプログラムを構文解析して、前記マクロが展開された再配置可能機械語コードを展開する機能を有し、前記ローダ・リンカは、プログラム又はデータの無効化を設定する命令が挿入された前記絶対機械語プログラムを展開するとき、前記読み出し不許可領域の開始及び終了を表すマクロを構文解析して、前記プログラム又はデータを無効化する設定データを算出する機能を有することを特徴とする。
請求項5記載の発明は、前記請求項1記載のマイクロコンピュータを備えた情報処理装置において、前記マイクロコンピュータが有するデータ無効化手段として、プログラム又はデータの無効化を設定する命令を有し、前記プログラム又はデータの無効化を設定する命令には、制御転移命令と、前記マイクロコンピュータが有する保護領域記憶手段に設定する読み出し不許可情報とが含まれることを特徴とする。
請求項6記載の発明は、前記請求項1記載のマイクロコンピュータにおいて、前記制御部が実行しているプログラムが前記不揮発性メモリに格納されたプログラムであるか否かを判定する判定手段を備え、前記データ無効化手段は、前記判定手段の判定結果を受け、この判定結果が前記不揮発性メモリに格納されたプログラムであるとき、前記比較手段の比較結果が一致であっても、不揮発性メモリの記憶領域から読み出されるプログラム又はデータの無効化を行わないことを特徴とする。
請求項7記載の発明は、前記請求項1、2又は6記載のマイクロコンピュータにおいて、特定の認証手続きがなされたか否かを判定する認証手段を備え、前記保護領域記憶手段は、前記認証手段の認証結果を受け、特定の認証手続きがなされていないとき、読み出し不許可領域又は読み出し許可領域への情報の書き換えを行わないことを特徴とする。
請求項8記載の発明は、前記請求項7記載のマイクロコンピュータにおいて、前記認証手段は、予め特定のキーコードを保持し、前記特定の認証手続きとして、入力されるキーコードと前記予め保持しているキーコードとの比較を行うことを特徴とする。
請求項9記載の発明は、前記請求項1、2又は6記載のマイクロコンピュータにおいて、前記制御部が実行しているプログラムが前記不揮発性メモリに格納されたプログラムであるか否かを判定する判定手段を備え、前記保護領域記憶手段は、前記判定手段の判定結果を受け、この判定結果が前記不揮発性メモリに格納されたプログラムでないとき、読み出し不許可領域又は読み出し許可領域への情報の書き換えを行わないことを特徴とする。
請求項10記載の発明のマイクロコンピュータは、プログラム及びデータを格納する記憶領域を有する不揮発性メモリと、他のプログラム及びデータを格納する記憶領域を有する揮発性メモリと、前記実行しているプログラムが前記不揮発性メモリに格納されたプログラムであるか、前記揮発性メモリに格納されたプログラムであるか、又はその何れにも該当しないかを判定する判定手段と、前記判定手段の判定結果を受け、その判定結果が前記不揮発性メモリに格納されたプログラムであるときには、不揮発性メモリに格納されたプログラムであることを記憶し、前記揮発性メモリに格納されたプログラムであるときには、既に記憶した内容を保持し、何れにも該当しないときには、何れにも該当しないことを記憶する判定結果記憶手段と、前記判定結果記憶手段の記憶内容を受け、この記憶内容が前記不揮発性メモリに格納されたプログラムでないとき、前記不揮発性メモリから読み出されるプログラム又はデータを無効化するデータ無効化手段と、前記不揮発性メモリが格納するプログラム又はデータを前記データ無効化手段を介して読み出す制御部とを備えたことを特徴とする。
請求項11記載の発明のマイクロコンピュータは、プログラム及びデータを格納する記憶領域を有する不揮発性メモリと、随時バス制御に介入して前記不揮発性メモリに対してプログラム又はデータの読み出しを行うダイレクトメモリアクセス手段と、前記不揮発性メモリに格納されたプログラム及びデータ及び前記ダイレクトメモリアクセス手段にアクセスする制御部と、現在実行しているプログラムが前記不揮発性メモリに格納されたプログラムであるか否かを判定する判定手段と、前記判定手段の判定結果を受け、前記制御部が前記ダイレクトメモリアクセス手段をアクセスした時の前記判定手段の判定結果を格納する判定結果記憶手段と、前記判定結果記憶手段が格納する判定結果を受け、この判定結果が前記不揮発性メモリに格納されたプログラムでないとき、前記不揮発性メモリから読み出されるプログラム又はデータを無効化するデータ無効化手段とを備え、前記制御部は、前記不揮発性メモリが格納するプログラム又はデータを前記データ無効化手段を介して読み出すことを特徴とする。
以上により、請求項1、2記載の発明では、アクセスが内蔵不揮発性メモリ以外の外部メモリや内蔵揮発性メモリに該当するアドレスに分岐する前に、内蔵不揮発性メモリに読み出し不許可領域を設定するシーケンス制御を行うことにより、内蔵不揮発性メモリに該当するアドレスの範囲の中でも、読み出し不許可領域以外の領域、すなわち読み出し許可領域が外部メモリや内蔵揮発性メモリに該当するアドレスに配置されたプログラムによってアクセスされた場合には、その読み出し許可領域からのプログラムやデータの読み出しが行われ、一方、内蔵不揮発性メモリ内の読み出し不許可領域がアクセスされた場合には、その読み出し許可領域からのプログラムやデータの読み出しが無効化される。
また、請求項3、4記載の発明では、前記請求項1、2に記載したマイクロコンピュータに使用されるプログラムであって、外部メモリ等に格納されたプログラムによって内蔵不揮発性メモリ内の読み出し不許可領域のプログラム又はデータを読み出される際にその読み出されたプログラム又は命令を無効化するための命令を含んだソフトウェアが容易に生成される。
更に、請求項5記載の発明では、内蔵不揮発性メモリ内の読み出し不許可領域の情報を設定する命令と、制御転移命令との2つの命令を1つの命令で記述でき、命令コードサイズが削減される。
加えて、請求項6記載の発明では、制御部が内蔵不揮発性メモリ内のプログラムを実行しているときには、データ無効化手段は内蔵不揮発性メモリ内の読み出し不許可領域から読み出されるプログラム又はデータを無効化しないので、一旦した読み出し不許可領域であるとの設定を解除することなく、その読み出し不許可領域内のプログラム又はデータを必要に応じて読み出すことが可能である。
また、請求項7、8記載の発明では、保護領域記憶手段での読み出し不許可領域を許可領域に変更する書き換えについては、特定の認証手続きが必要であるので、この認証手続きを知らない不正ユーザは内蔵不揮発性メモリ内の読み出し不許可領域からのプログラム又はデータを読み出すことが極めて困難になり、一層にセキュリティが向上する。
更に、請求項9記載の発明では、制御部が実行しているプログラムが内蔵不揮発性メモリ内のプログラムである場合に限って、内蔵不揮発性メモリの読み出し不許可領域に格納されたプログラムを読み出しすることができるので、アクセスが内蔵不揮発性メモリ以外のメモリに該当するアドレスに分岐する前に、内蔵不揮発性メモリの読み出し不許可領域であるとの設定の書換えを禁止する必要がない。
加えて、請求項10記載の発明では、内蔵不揮発性メモリ内のプログラムを実行して内蔵揮発性メモリに該当するアドレスに分岐した場合には、この内蔵揮発性メモリのプログラムを実行して内蔵不揮発性メモリの読み出し不許可領域のプログラムを読み出すことが可能である。
また、請求項11記載の発明では、マイクロコンピュータにダイレクトアクセスメモリ手段を備える場合に、不正ユーザが外部メモリや内蔵揮発性メモリのプログラムを改変して、前記ダイレクトアクセスメモリ手段を利用して内蔵不揮発性メモリの読み出し不許可領域のプログラム又はデータの読み出しを試みても、そのダイレクトアクセスメモリ手段の利用が外部メモリや内蔵揮発性メモリ内のプログラムに基づくときには、そのような不許可領域からのプログラム又はデータの読み出しはできない。
以上説明したように、本発明のマイクロコンピュータによれば、内蔵不揮発性メモリ内の記憶領域に読み出し不許可領域を設定したので、その不許可領域以外の記憶領域に格納されたプログラムやデータを外部メモリ又は内蔵揮発性メモリ内のプログラムから必要に応じて読み出すことを可能にしつつ、不正ユーザが前記不許可領域に格納された秘匿が必要なプログラムやデータを読み出そうと試みても、その読み出しを不可能にでき、セキュリティを向上させることができる。
以下、本発明の実施形態を図面に基づいて詳細に説明する。
(実施形態1)
以下、本発明の第1の実施形態について、図1〜図4を参照して説明する。
図1は本発明のマイクロコンピュータのブロック図である。図1において、マイクロコンピュータ100は、CPU(制御部)110と、内蔵不揮発性メモリ120と、内蔵揮発性メモリ130と、エリアレジスタ(保護領域記憶手段)140と、比較手段150と、データ無効化手段160とによって構成されている。また、180は前記マイクロコンピュータ100の外部に接続される外部メモリである。
アドレスバスB101は、CPU110と、内蔵不揮発性メモリ120と、内蔵揮発性メモリ130と、比較手段150と、外部メモリ180とを各々接続する。ここでは説明を簡単にするため、8ビットバス幅とする。データバスB102は、CPU110と、内蔵揮発性メモリ130と、エリアレジスタ140と、データ無効化手段160と、外部メモリ180とを各々接続する。ここでは説明を簡単にするため、4ビットバス幅とする。エリアレジスタライト信号S103は、CPU110と、エリアレジスタ140とを接続する。リードイネーブル信号S104は、CPU110と、内蔵不揮発性メモリ120と、内蔵揮発性メモリ130と、外部メモリ180とを各々接続する。ライトイネーブル信号S105は、CPU110と、内蔵揮発性メモリ130とを接続する。ROMバスB106は、内蔵不揮発性メモリ120と、データ無効化手段160とを接続する。エリア信号S141は、エリアレジスタ140と、比較手段150とを接続する。一致信号S151は、比較手段150と、データ無効化手段160とを接続する。
内蔵不揮発性メモリ120は、プログラム及びデータを格納しており、リードイネーブル信号S104が‘1’であれば、アドレスバスB101のアドレスに該当するメモリ領域に格納されているプログラム及びデータをROMバスB106に出力する。また、内蔵不揮発性メモリ120は、アドレスに応じてn個のエリアに分割されている。ここでは説明を簡単にするため、3個のエリアに分割されているものとする。
図2は、内蔵不揮発性メモリ120のメモリ領域とアドレスの関係を示す図である。図2で、内蔵不揮発性メモリ120のメモリ領域は、3つのエリアに分割されており、エリア0はアドレス00Hから1FHまで、エリア1はアドレス20Hから3FHまで、エリア2はアドレス40Hから5FHまでとする。すなわち、エリア0は8ビット幅のアドレスバスB101の上位3ビットが‘000’の領域、同様にエリア1は上位3ビットが‘001’、エリア2は上位3ビットが‘010’の領域となる。
内蔵揮発性メモリ130は、プログラム及びデータを格納保持する。リードイネーブル信号S104が‘1’であれば、アドレスバスB101のアドレスに該当するメモリ領域に格納されているプログラム及びデータを、データバスB102に出力する。また、内蔵揮発性メモリ130は、ライトイネーブル信号S105が‘1’ならば、データバスB102のプログラム及びデータを、アドレスバスB101のアドレスに該当するメモリ領域に格納保持する。
エリアレジスタ140は、エリアレジスタライト信号S103が‘1’であれば、データバスB102のデータを格納保持し、保持したデータをエリア信号S141として出力する。また、エリアレジスタ140は、内蔵不揮発性メモリ120のメモリ領域の個数と同数のビット幅を有しており、各ビットを最上位ビットから各々エリアフラグ2、エリアフラグ1、エリアフラグ0という。また、ここでは説明を簡単にするため、ビット幅を3ビットとし、初期値を‘000’とする。
エリアレジスタ140の各ビットは、内蔵不揮発性メモリ120のメモリ領域を構成する各エリアと、各々1対1で対応しており、各ビットがセットされれば、そのビットに対応したエリアは、読み出し保護の対象エリアとなる。例えば、エリアフラグ1がセットされた時はエリア1が読み出し保護の対象エリアとなり、読み出し時に、比較手段150にてアドレスの比較判定が行われる。
比較手段150は、アドレスバスB101のアドレスが、エリアレジスタ140で設定したエリアに該当するか否かを判定し、判定結果を一致信号S151に出力する。ここで、比較手段150の比較機能を、図3を用いて説明する。図3は、比較手段150の比較機能を説明する図である。図3は左から、エリアレジスタ140のエリアフラグ2の値、エリアフラグ1の値、エリアフラグ0の値、アドレスバスB101のビット7の値、ビット6の値、5の値、ビット4の値、一致信号S151の値である。
例えば、エリアレジスタ140が出力するエリア信号S141のデータが‘100’、アドレスバスB101のアドレスが‘52H’ならば、アドレスの上位4ビットが‘0101’であるため、比較手段150が出力する一致信号S151は‘1’となる。また、エリアレジスタ140が出力するエリア信号S141のデータが‘100’、アドレスバスB101のアドレスが‘32H’ならば、アドレスの上位4ビットが‘0011’であるため、一致信号S151は‘0’となる。このようにして、比較手段150は、アドレスバスB101のアドレスが、エリアレジスタ140で設定した内蔵不揮発性メモリ120のエリアに該当するか否かを判定し、該当すれば‘1’を、非該当ならば‘0’を一致信号S151に出力する。
データ無効化手段160は、一致信号S151が‘1’であれば、内蔵不揮発性メモリ120からROMバスB106に出力された読み出しデータを無効化し、データバスB102に何も出力しない。また、一致信号S151が‘0’であれば、内蔵不揮発性メモリ120からROMバスB106に出力された読み出しデータを、データバスB102に乗せ換えて出力する。
外部メモリ180は、プログラム及びデータが格納されており、リードイネーブル信号S104が‘1’であれば、アドレスバスB101のアドレスに該当するアドレスに格納されているプログラム及びデータをデータバスB102に出力する。
CPU110は、アドレスバスB101に内蔵揮発性メモリ120に該当するアドレスを出力すると共に、リードイネーブル信号S104に‘1’を出力し、順次、内蔵不揮発性メモリ120に格納されているプログラムを、ROMバスB106、無効化手段140を介してデータバスB102から読み出し、解読した結果に従い各種制御を行う。また、内蔵不揮発性メモリ120から読み出したプログラムが、内蔵揮発性メモリ130又は外部メモリ180への分岐命令である場合には、アドレスバスB101に内蔵揮発性メモリ130又は外部メモリ180の該当するアドレスを出力すると共に、リードイネーブル信号S104に‘1’を出力し、内蔵揮発性メモリ130又は外部メモリ180に格納されているプログラムを、データバスB102から読み出し、解読した結果に従い各種制御を行う。
また、CPU110は、ライトイネーブル信号S105に‘1’、アドレスバスB101に内蔵揮発性メモリ130に該当するアドレスを各々出力すると共に、データバスB102にデータを出力し、内蔵揮発性メモリ130に任意の値を書込むことができる。また、CPU110は、データバスB102にデータを出力すると共にエリアレジスタライト信号S103に‘1’を出力し、エリアレジスタ140を任意の値に書き換えることができる。
以上のように構成された本発明の第1の実施形態による、内蔵不揮発性メモリ120に格納されたプログラム及びデータ読み出し保護動作について説明する。
内蔵不揮発性メモリ120を構成する各エリアのうち、不正ユーザに読み出されたくないプログラム及びデータを格納しているなど、読み出し保護の対象にしたいエリア(以下、保護エリアという)を、仮にエリア2として、マイクロコンピュータ100の動作を図4を用いて説明する。図4は、マイクロコンピュータ100の各メモリ領域に格納されたプログラムと、内蔵不揮発性メモリ120の読み出し保護状態をプログラムの実行順に説明する図である。
先ず、(A)のプログラムスタート時、CPU110は、アドレスバスB101に、内蔵不揮発性メモリ120に該当するアドレスを出力すると共に、リードイネーブル信号S104に‘1’を出力し、内蔵不揮発性メモリ120に格納されているプログラムを読み出そうとする。この時、エリアレジスタ140が格納するデータの初期値は‘000’であるため、比較手段150は、エリア信号S141のデータ‘000’から保護エリアに設定されているエリアがないと判断し、一致信号S151に‘0’を出力する。データ無効化手段160は、一致信号S151が‘0’であるため、内蔵不揮発性メモリ120からROMバスB106に出力されたプログラムを、データバスB102に乗せ換えて出力する。
このように、CPU110は順次、内蔵不揮発性メモリ120の該当アドレスに格納されているプログラムを、ROMバスB106及びデータ無効化手段160を介してデータバスB102から読み出し、解読した結果に従い各種制御を行う。
次に、CPU110が(B)のプログラムを読み出すと、CPU110は、アドレスバスB101に、エリア2に該当するアドレスを出力すると共に、リードイネーブル信号S104に‘1’を出力する。エリアレジスタ140が格納するデータは初期値‘000’のままであるため、比較手段150は、エリア信号S141のデータ‘000’から保護エリアに設定されているエリアがないと判断し、一致信号S151に‘0’を出力する。データ無効化手段160は、一致信号S151が‘0’であるため、内蔵不揮発性メモリ120からROMバスB106に出力されたプログラム及びデータを、データバスB102に乗せ換えて出力する。
次に、CPU110が(C)のプログラムを読み出すと、CPU110は、次に実行するプログラム(D)が外部メモリ180に該当するアドレスへの分岐命令であるため、予めエリアレジスタ140にフラグを立ててエリア2を保護エリアに設定し、外部メモリ180に該当するアドレスに配置されたプログラムからエリア2に格納したプログラム及びデータが読み出されないようにするため、データバスB102にデータ‘100’を出力すると共に、エリアレジスタライト信号S103に‘1’を出力する。エリアレジスタ140は、データ‘100’を格納保持し、エリア信号S141にデータ‘100’を出力する。これにより、エリア2が保護エリアに設定される。
次に、CPU110が(D)のプログラムを読み出すと、CPU110は、プログラムの読み出し先を外部メモリ180の該当アドレスへと変更し、アドレスバスB101に該当アドレスを出力すると共に、リードイネーブル信号S104に‘1’を出力し、順次、外部メモリ180の該当アドレスに格納されているプログラムをデータバスB102から読み出し、解読した結果に従い各種制御を行う。
次に、CPU110が(E)のプログラムを読み出すと、CPU110は、アドレスバスB101に、エリア1に該当するアドレスを出力すると共に、リードイネーブル信号S104に‘1’を出力する。比較手段150は、エリア信号S141のデータ‘100’から保護エリアがエリア2であると判断し、且つ、アドレスバスB101のアドレスがエリア1に該当するため、比較手段150は一致信号S151に‘0’を出力する。
データ無効化手段160は、一致信号S151が‘0’であるため、内蔵不揮発性メモリ120からROMバスB106に出力されたプログラム及びデータを、データバスB102に乗せ換えて出力する。このように、内蔵不揮発性メモリ120の保護エリア以外に格納されたプログラム及びデータは、外部メモリ180に格納されたプログラムからでも利用することが可能である。
次に、CPU110が(F)のプログラムを読み出すと、CPU110は、プログラムの読み出し先を、内蔵不揮発性メモリ120の該当アドレスへと変更し、アドレスバスB101に該当アドレスを出力すると共に、リードイネーブル信号S104に‘1’を出力し、順次、内蔵不揮発性メモリ120の該当アドレスに格納されているプログラムを、ROMバスB106及びデータ無効化手段160を介してデータバスB102から読み出し、解読した結果に従い各種制御を行う。
次に、CPU110が(G)のプログラムを読み出すと、CPU110は、保護エリアを解除するために、データバスB102にデータ‘000’を出力すると共に、エリアレジスタライト信号S103に‘1’を出力する。エリアレジスタ140は、データ‘000’を格納保持し、エリア信号S141にデータ‘000’を出力する。これにより、各エリアの読み出し保護は解除される。
次に、CPU110が(H)のプログラムを読み出すと、CPU110は、アドレスバスB101に、エリア2に該当するアドレスを出力すると共に、リードイネーブル信号S104に‘1’を出力する。比較手段150は、エリア信号S141のデータ‘000’から保護エリアに設定されているエリアがないと判断し、一致信号S151に‘0’を出力する。データ無効化手段160は、一致信号S151が‘0’であるため、内蔵不揮発性メモリ120からROMバスB106に出力されたプログラム及びデータを、データバスB102に乗せ換えて出力する。
ここで、不正ユーザが外部メモリ180に格納されたプログラムを改変し、(E)のプログラムを、エリア2からデータ及びプログラムを読み出す記述にしたとする。この時のプログラム(A)〜(D)のマイクロコンピュータ100の動作は、前述した動作と同じである。
次に、CPU110が、改変された(E)のプログラムを読み出すと、CPU110は、アドレスバスB101に、エリア2に該当するアドレスを出力すると共に、リードイネーブル信号S104に‘1’を出力する。比較手段150は、エリア信号S141のデータ‘100’から保護エリアがエリア2であると判断し、且つ、アドレスバスB101のアドレスがエリア2に該当するため、比較手段150は一致信号S151に‘1’を出力する。データ無効化手段160は、一致信号S151が‘1’であるため、内蔵不揮発性メモリ120からROMバスB106に出力されたプログラム及びデータを、データバスB102に出力しない。これにより、内蔵不揮発性メモリ120の保護エリアに格納されたプログラム及びデータは、データバスB102等から、マイクロコンピュータ100の外部へ出力されることはない。
以上のように、マイクロコンピュータを、3個のメモリ領域で構成した内蔵不揮発性メモリ120と、内蔵不揮発性メモリ120のメモリ領域数と同数の3ビットのビット幅を持つエリアレジスタ140と、比較手段150と、データ無効化手段160とで構成し、なおかつ、外部メモリ180に該当するアドレスへ分岐する前に保護エリアを設定するプログラムを記述することで、保護エリアに設定したエリア以外の内蔵不揮発性メモリ120に格納されたプログラム及びデータを、外部メモリ180に該当するアドレスからでも必要に応じて読み出すことができつつ、不正ユーザが外部メモリ180を改変し、内蔵不揮発性メモリ120に格納されたプログラム及びデータを読み出そうと試みても、保護エリアに格納されたデータは読み出すことができず、セキュリティが向上する。
尚、前記説明において、外部メモリ180に該当するアドレスへ分岐する場合を例にとって説明したが、内蔵揮発性メモリ130に該当するアドレスへ分岐する場合も、同様にエリアレジスタ140で保護エリアを設定することで、不正ユーザが内蔵揮発性メモリ130にプログラムを転送、実行して、内蔵不揮発性メモリ120に格納されたプログラム及びデータを読み出そうと試みても、保護エリアに格納されたデータは読み出すことができず、セキュリティが向上する。
また、前記説明において、内蔵不揮発性メモリ120は均等容量の3個のメモリ領域で構成されているとしたが、内蔵不揮発性メモリ120はn個(nは1以上の整数)のメモリ領域で構成し、任意のアドレスマッピングであっても良いのは勿論である。
また、前記説明において、データ無効化手段160は、データ無効化の方法として、内蔵不揮発性メモリ120から読み出したプログラム及びデータをデータバスB102に何も出力しないとしたが、他に、リードイネーブル信号S104に‘1’を出力しない、アドレスバスB101に該当アドレスを与えない、データバスB102に任意のデータを出力するなどといった、該当するアドレスに格納されたプログラム及びデータが読み出されない構成であれば良い。
(実施形態2)
以下、本発明の第2の実施形態について、図5〜図6を参照して説明する。
図6は本発明の第2の実施形態に用いるアドレス空間を示す。同図において、メモリ空間500はアドレスに応じて2つの領域に分割されており、アドレス00Hから7FHまでのメモリ空間510、520は内蔵メモリ領域に該当し、アドレス80HからFFHまでのメモリ空間530は外部メモリ領域に該当するとする。8ビット幅のアドレスの最上位1ビットが、‘0’の領域が内蔵メモリ領域のアクセスを表し、内部空間であることを示す。8ビット幅のアドレスの最上位1ビットが、‘1’の領域が外部メモリ領域のアクセスを表し、外部空間であることを示す。
図5は本発明第2の実施形態で用いる言語処理系を示す。同図において、600は再配置可能機械語プログラム、610は言語処理系、620は制御転移命令検出部、630は制御転移先空間判定部、640はデータ無効化手段を設定する命令挿入部、650は絶対機械語プログラム、660はライブラリである。
説明を簡単にするために、下記に示めすようであるとする。再配置機械語プログラム600は、10ビットの’0’と’1’のビットの集まりで表すとする。機械語は2ビットの処理内容を表すオペコードと、8ビットの処理対象データを表すオペランドで表すとする。オペコード’00’は制御転移命令を表し、オペコード’01’はデータ転送命令を表す。オペコード’10’、’11’は前記制御転移命令、データ転送命令以外の命令であることを表すとする。
制御転移命令のオペランドは、図6に示すアドレスであるとし、オペランドに示されたアドレスに制御転移を行うものとする。データ転送命令のオペランドは8ビットのうち、4ビットは転送するデータ、4ビットは転送先アドレスを表すとする。言語処理系610に入力する再配置可能機械語プログラム600は1つとする。
言語処理系610の出力は、再配置可能機械語プログラム600とライブラリ660とを結合し、再配置可能な番地を絶対番地に変更した後の絶対機械語プログラム650であるとする。
制御転移命令検出部620は、入力された再配置機械語プログラム600のオペコードが‘00’であることを検出する機能を備える。すなわち、制御転移命令検出部620は、再配置機械語プログラム600が、制御転移命令であることを検出する機能を備える。
制御転移先空間判定部630は、制御転移命令検出部520において、制御転移命令であると検出された再配置機械語プログラム600のオペランドのアドレスが、前記図6に示すように8ビット幅のアドレスの最上位1ビットが‘1’であるかを検出する機能を備える。すなわち、制御転移先空間判定部630は、再配置機械語プログラム600が、制御転移命令であり、且つ外部メモリ領域への制御転移命令であることを検出する機能を備える。
本発明の第2の実施形態に用いるデータ無効化手段を設定する命令は、前記第1の実施形態におけるエリアレジスタ140に対して、表す内蔵空間へのアクセスを無効化する設定を行う命令とする。説明を簡単にするために、エリアレジスタ140のアドレスを‘1111’、エリアレジスタ140に内蔵空間へのアクセスを無効化する設定データを‘1111’とする。すなわち、本発明の第2の実施形態に用いるデータ無効化手段を設定する命令は、オペコード’01’で、転送するデータ‘1111’、転送先アドレスを‘1111’であるとする。
データ無効化手段を設定する命令挿入部640は、制御転移命令検出部620において、制御転移命令であると検出され、且つ、制御転移先空間判定部630において、制御転移先アドレスが外部メモリ領域のアクセスであると検出された再配置機械語プログラム600の前に、データ無効化手段を設定する命令を挿入する。
すなわち、本発明の第2の実施形態に用いるデータ無効化手段を設定する命令オペコード’01’で、転送するデータ‘1111’、転送先アドレスを‘1111’を挿入するとする。
以上のように構成された本発明の第2の実施形態による、言語処理系の動作について説明する。
言語処理系610に入力する再配置可能機械語プログラム600を‘001000000’とする。制御転移命令検出部620は、再配置可能機械語プログラム600を読み込み、入力された再配置機械語プログラム600のオペコードが‘00’であることを検出し、再配置機械語プログラム600が、制御転移命令であることを検出する。引き続き、制御転移先空間判定部630は、再配置可能機械語プログラム600を読み込み、再配置機械語プログラム600のオペランドのアドレスが、8ビット幅のアドレスの最上位1ビットが‘1’であるかを検出し、再配置機械語プログラム600が、制御転移命令で、且つ外部メモリ領域への制御転移命令であることを検出する。
引き続き、データ無効化手段を設定する命令挿入部640は、再配置可能機械語プログラム600を読み込み、前記制御転移先空間判定部630において、再配置機械語プログラム600が、制御転移命令で、且つ外部メモリ領域への制御転移命令であることを検出し、再配置機械語プログラム600の前に、データ無効化手段を設定する命令‘0111111111’を挿入する。
以上のように、本発明の第2の実施形態によると、本発明の第1の実施形態の集積回路に使用するソフトウェアを容易に発生可能となり、開発期間が短縮する。
尚、説明を簡単にするために、再配置機械語プログラム600は10ビットであるとしたが、何ビットでもよい。言語処理系610に入力する再配置可能機械語プログラム600は1つとしたが、幾つでもよい。
データ無効化手段を設定する命令挿入部640は、再配置機械語プログラム600の直前にデータ無効化手段を設定する命令を挿入しているが、再配置機械語プログラム600の前であればよい。
(実施形態3)
以下、本発明の第3の実施形態について、図7〜図8を参照して説明する。
説明を簡単にするために下記に示すようであるとする。図7は、本発明の第3の実施形態で用いる言語処理系を示す。700は言語処理系、701は骨子になる原始プログラム、702は前処理系、703は原始プログラム、704はコンパイラ、705はアセンブリプログラム、706はアセンブラ、707は再配置可能機械コード、708はローダ・リンカ、709はライブラリ、710は絶対機械コードである。
言語処理系700は、骨子になる原始プログラム701を入力とし、原始プログラム703を出力とする前処理系702と、原始プログラム703を入力とし、アセンブリプログラム705を出力とするコンパイラ704と、アセンブリプログラム705を入力とし再配置可能機械コード707を出力とするアセンブラ706と、再配置可能機械コード707とライブラリ709を入力とし絶対機械コード710を出力とするローダ・リンカ708とを備える。
図8は、本発明第3の実施形態で用いる図7における言語例を示す。同図において、701は骨子になる原始プログラム、911、912は、骨子になる原始プログラム701における前記第1の実施形態におけるアクセス無効化領域の開始を表すマクロと終了を表すマクロである。前処理系702は、骨子になる原始プログラム701におけるアクセス無効化領域の開始を表すマクロと終了を表すマクロ911、912を構文解析して、原始プログラム703に前記アクセス無効化領域の開始を表すマクロと終了を表すマクロ913、914を展開する機能を備える。
コンパイラ704は、原始プログラム703におけるアクセス無効化領域の開始を表すマクロと終了を表すマクロ913、914を構文解析して、アセンブリプログラム705に前記アクセス無効化領域の開始を表すマクロと終了を表すマクロ915、916を展開する機能を備える。アセンブラ706は、前記アセンブリプログラム705におけるアクセス無効化領域の開始を表すマクロと終了を表すマクロ915、916を構文解析して、再配置可能機械コード707に前記アクセス無効化領域の開始を表すマクロと終了を表すマクロ917、918を展開する機能を備える。
ローダ・リンカ708は、再配置可能機械コード707における前記アクセス無効化領域の開始を表すマクロと終了を表すマクロ917、918を構文解析して、前記アクセス無効化手段として無効化する設定データを算出し、前記アクセス無効化手段を設定する命令919を展開する機能を備える。
以上のように構成された本発明の実施形態3での言語処理系の動作について説明する。
前記アクセス無効化領域の開始を表すマクロと終了を表すマクロ811、812を含む骨子になる原始プログラム701を前処理系702に入力する。前処理系702は、構文解析して、原始プログラム703に前記アクセス無効化領域の開始を表すマクロと終了を表すマクロを展開する。前記アクセス無効化領域の開始を表すマクロと終了を表すマクロを含む原始プログラム703をコンパイラ704に入力する。
コンパイラ704は、構文解析して、アセンブリプログラム705に前記アクセス無効化領域の開始を表すマクロと終了を表すマクロを展開する。前記アクセス無効化領域の開始を表すマクロと終了を表すマクロを含むアセンブリプログラム705をアセンブラ706に入力する。
アセンブラ706は、構文解析して、再配置可能機械コード707に前記アクセス無効化領域の開始を表すマクロと終了を表すマクロを展開する。前記第アクセス無効化領域の開始を表すマクロと終了を表すマクロを含む再配置可能機械コード707をローダ・リンカ708に入力する。ローダ・リンカ708は、構文解析して、絶対機械コード710に前記クセス無効化手段として無効化する設定データを算出し、前記アクセス無効化手段を設定する命令を展開する。
以上のように、本実施形態3によると、本発明の第1の実施形態の集積回路に使用するソフトウェアを容易に発生可能となり、開発期間が短縮する。
(実施形態4)
以下、本発明の第4の実施形態について説明する。
説明を簡単にするために、下記に示すようであるとする。本発明の第4の実施形態に用いる情報処理装置は、制御転移命令の引数として、外部空間アドレスとエリアレジスタ140に設定するアクセス無効化情報とを備える制御転移命令を備えることを特徴とする情報処理装置である。
本発明の第4の実施形態に用いる制御転移命令を用いると、
(1)エリアレジスタ140に設定するアクセス無効化情報をエリアレジスタ140に設定
(2)制御転移命令の引数に示された外部空間アドレスに転移
という2つの動作を1命令で表すことが可能となる。
前記第1の実施形態のマイクロコンピュータに使用するアクセス無効化手段として、
(1)エリアレジスタ140にアクセス無効化情報を設定する命令
(2)制御転移命令の引数に示された外部空間アドレスに転移する命令
と複数命令で実現されてきたが、以上のように、本発明第4の実施形態によると、2つの動作が1つの命令で実現でき、命令コードサイズを削減することが可能となる。
(実施形態5)
以下、本発明の第5の実施形態について、図2〜図3、図6、図9〜図11を参照して説明する。
図9は本発明のマイクロコンピュータのブロック図である。同図では、図1と同一名称のものは、異なる符号を付しているが、同一構成であるので、その説明を省略する。図9において、マイクロコンピュータ1000は、CPU1010と、内部不揮発性メモリ1020と、内部揮発性メモリ1030と、エリアレジスタ1040と、比較手段1050と、データ無効化手段1060と、二入力一出力のアンドゲート1070とによって構成されている。また、前記CPU1010は内部に空間判定手段(判定手段)1011を備えている。1080は前記マイクロコンピュータ1000の外部に接続される外部メモリである。
アドレスバスB1001は、CPU1010と、内蔵不揮発性メモリ1020と、内蔵揮発性メモリ1030と、比較手段1050と、外部メモリ1080とを各々接続する。ここでは説明を簡単にするため、8ビットバス幅とする。データバスB1002は、CPU1010と、内蔵揮発性メモリ1030と、エリアレジスタ1040と、データ無効化手段1060と、外部メモリ1080とを各々接続する。ここでは説明を簡単にするため、4ビットバス幅とする。
また、エリアレジスタライト信号S1003は、CPU1010と、エリアレジスタ1040とを接続する。リードイネーブル信号S1004は、CPU1010と、内蔵不揮発性メモリ1020と、内蔵揮発性メモリ1030と、外部メモリ1080とを各々接続する。ライトイネーブル信号S1005は、CPU1010と、内蔵揮発性メモリ1030とを接続する。ROMバスB1006は、内蔵不揮発性メモリ1020と、データ無効化手段1060とを接続する。空間信号S1007は、CPU1010と、アンドゲート1070とを接続する。エリア信号S1041は、エリアレジスタ1040と、比較手段1050とを接続する。一致信号S1051は、比較手段1050と、アンドゲート1070とを接続する。無効化信号S1071は、アンドゲート1070と、データ無効化手段1060とを接続する。
内蔵不揮発性メモリ1020は、実施形態1で説明した通り、プログラム及びデータを格納しており、リードイネーブル信号S1004が‘1’であれば、アドレスバスB1001のアドレスに該当するメモリ領域に格納されているプログラム及びデータをROMバスB1006に出力する。また、内蔵不揮発性メモリ1020は、アドレスに応じてn個のエリアに分割されている。ここでは説明を簡単にするため、3個のエリアに分割されているものとする。
以下、実施形態1と共通する構成について、別の実施形態であるので、再度説明する。図2は、内蔵不揮発性メモリ1020のメモリ領域とアドレスの関係を示す図である。図2で、内蔵不揮発性メモリ1020のメモリ領域は、3つのエリアに分割されており、エリア0はアドレス00Hから1FHまで、エリア1はアドレス20Hから3FHまで、エリア2はアドレス40Hから5FHまでとする。すなわち、エリア0は8ビット幅のアドレスバスB1001の上位3ビットが‘000’の領域、同様にエリア1は上位3ビットが‘001’、エリア2は上位3ビットが‘010’の領域となる。
内蔵揮発性メモリ1030は、プログラム及びデータを格納保持する。リードイネーブル信号S1004が‘1’であれば、アドレスバスB1001のアドレスに該当するメモリ領域に格納されているプログラム及びデータを、データバスB1002に出力する。また、内蔵揮発性メモリ1030は、ライトイネーブル信号S1005が‘1’ならば、データバスB1002のプログラム及びデータを、アドレスバスB1001のアドレスに該当するメモリ領域に格納保持する。
エリアレジスタ1040は、エリアレジスタライト信号S1003が‘1’であれば、データバスB1002のデータを格納保持し、保持したデータをエリア信号S1041に出力する。また、エリアレジスタ1040は、内蔵不揮発性メモリ1020のメモリ領域の個数と同数のビット幅を有しており、各ビットを最上位ビットから各々エリアフラグ2、エリアフラグ1、エリアフラグ0という。また、ここでは説明を簡単にするため、ビット幅を3ビットとし、初期値を‘000’とする。
エリアレジスタ1040の各ビットは、内蔵不揮発性メモリ1020のメモリ領域を構成する各エリアと、各々1対1で対応しており、各ビットがセットされれば、そのビットに対応したエリアは、読み出し保護の対象エリアとなる。例えば、エリアフラグ1がセットされた時はエリア1が読み出し保護の対象エリアとなり、読み出し時に、比較手段1050にてアドレスの比較判定が行われる。
比較手段1050は、アドレスバスB1001のアドレスが、エリアレジスタ1040で設定したエリアに該当するか否かを判定し、判定結果を一致信号S1051に出力する。ここで、比較手段1050の比較機能を、図3を用いて説明する。図3は、比較手段1050の比較機能を説明する図である。図3は左から、エリアレジスタ1040のエリアフラグ2の値、エリアフラグ1の値、エリアフラグ0の値、アドレスバスB1001のビット7の値、ビット6の値、5の値、ビット4の値、一致信号S1051の値である。
例えば、エリアレジスタ1040が出力するエリア信号S1041のデータが‘100’、アドレスバスB1001のアドレスが‘52H’ならば、アドレスの上位4ビットが‘0101’であるため、比較手段1050が出力する一致信号S1051は‘1’となる。また、エリアレジスタ1040が出力するエリア信号S1041のデータが‘100’、アドレスバスB1001のアドレスが‘32H’ならば、アドレスの上位4ビットが‘0011’であるため、一致信号S1051は‘0’となる。このようにして、比較手段1050は、アドレスバスB1001のアドレスが、エリアレジスタ1040で設定した内蔵不揮発性メモリ1020のエリアに該当するか否かを判定し、該当すれば‘1’を、非該当ならば‘0’を一致信号S1051に出力する。
そして、本実施形態の特徴として、アンドゲート1070は、比較手段1050が出力する一致信号S1051と、後述する空間判定手段1011が出力する空間信号S1007との論理積を無効化信号S1071として出力する。すなわち、アンドゲート1070は、空間信号S1007が‘0’の時に、無効化信号S1071に‘0’を出力し、一致信号S1051の値を無効化する。
データ無効化手段1060は、無効化信号S1071が‘1’であれば、内蔵不揮発性メモリ1020からROMバスB1006に出力された読み出しデータを無効化し、データバスB1002に何も出力しない。また、無効化信号S1071が‘0’であれば、内蔵不揮発性メモリ1020からROMバスB1006に出力された読み出しデータを、データバスB1002に乗せ換えて出力する。
外部メモリ1080は、プログラム及びデータが格納されており、リードイネーブル信号S1004が‘1’であれば、アドレスバスB1001のアドレスに該当するアドレスに格納されているプログラム及びデータをデータバスB1002に出力する。
CPU1010は、空間判定手段1011を備えており、空間判定手段1011は、CPU1010が現在実行中のプログラムが、どのメモリ空間に格納されているかを判定し、判定結果を空間信号S1007に出力する。
ここで、マイクロコンピュータ1000のメモリ空間について、図6を用いて説明する。図6で、マイクロコンピュータ1000のメモリ空間はアドレスに応じて3つの領域に分割されており、アドレス00Hから5FHまでは図2で示される内蔵不揮発性メモリ1020に該当し、同様に、アドレス60Hから7FHまでは内蔵揮発性メモリ1030、アドレス100HからFFHまでは外部メモリ1080に該当する。すなわち、内蔵不揮発性メモリ1020は、8ビット幅のアドレスバスB1001の上位3ビットが‘000’又は‘001’又は‘010’の領域、同様に内蔵揮発性メモリ1030は上位3ビットが‘011’、外部メモリ1080は、最上位ビットが‘1’の領域となる。
以上のようなメモリ空間に対する、空間判定手段1011の空間判定機能を、図10を用いて説明する。図10は空間判定手段1011の空間判定機能を説明する図である。図10は左から、CPU1010が現在実行しているプログラムが格納されているアドレス(以下、実行アドレスという)のビット7の値、ビット6の値、ビット5の値、ビット4の値、該当するメモリ、空間信号S1007の値である。例えば、実行アドレスが‘52H’ならば、実行アドレスの上位4ビットが‘0101’であるため、空間判定手段1011が出力する空間信号S1007は‘0’となる。また、実行アドレスが‘92H’ならば、実行アドレスの上位4ビットが‘1000’であるため、空間信号S1007は‘1’となる。このようにして、空間判定手段1011は、実行アドレスが、マイクロコンピュータ1000のどのメモリのアドレスに該当するか判定し、内蔵不揮発性メモリ1020のアドレスに該当すれば‘0’を、非該当ならば‘1’を空間信号S1007に出力する。
また、CPU1010は、アドレスバスB1001に内蔵不揮発性メモリ1020に該当するアドレスを出力すると共に、リードイネーブル信号S1004に‘1’を出力し、順次、内蔵不揮発性メモリ1020に格納されているプログラムを、ROMバスB1006、無効化手段1040を介してデータバスB1002から読み出し、解読した結果に従い各種制御を行う。また、内蔵不揮発性メモリ1020から読み出したプログラムが、内蔵揮発性メモリ1030又は外部メモリ1080への分岐命令である場合には、アドレスバスB1001に内蔵揮発性メモリ1030又は外部メモリ1080の該当するアドレスを出力すると共に、リードイネーブル信号S1004に‘1’を出力し、内蔵揮発性メモリ1030又は外部メモリ1080に格納されているプログラムを、データバスB1002から読み出し、解読した結果に従い各種制御を行う。
また、CPU1010は、ライトイネーブル信号S1005に‘1’、アドレスバスB1001に内蔵揮発性メモリ1030に該当するアドレスを各々出力すると共に、データバスB1002にデータを出力し、内蔵揮発性メモリ1030に任意の値を書込むことができる。また、CPU1010は、データバスB1002にデータを出力すると共にエリアレジスタライト信号S1003に‘1’を出力し、エリアレジスタ1040を任意の値に書き換えることができる。
以上のように構成された本発明の第5の実施形態における内蔵不揮発性メモリ1020に格納されたプログラム及びデータ読み出し保護動作について説明する。
内蔵不揮発性メモリ1020を構成する各エリアのうち、不正ユーザに読み出されたくないプログラム及びデータを格納しているなど、読み出し保護の対象にしたいエリア(以下、保護エリアという)を、仮にエリア2として、マイクロコンピュータ1000の動作を図11を用いて説明する。図11は、マイクロコンピュータ1000の各メモリ領域に格納されたプログラムと、内蔵不揮発性メモリ1020の読み出し保護状態をプログラムの実行順に説明する図である。
先ず、(A)のプログラムスタート時、CPU1010は、アドレスバスB1001に、内蔵不揮発性メモリ1020に該当するアドレスを出力すると共に、リードイネーブル信号S1004に‘1’を出力し、内蔵不揮発性メモリ1020に格納されているプログラムを読み出そうとする。この時、空間判定手段1011は、CPU1010が内蔵不揮発性メモリ1020に該当するアドレスのプログラムを実行中であるため、空間信号S1007に‘0’を出力する。また、エリアレジスタ1040が格納するデータの初期値は‘000’であるため、比較手段1050は、エリア信号S1041のデータ‘000’から保護エリアに設定されているエリアがないと判断し、一致信号S1051に‘0’を出力する。アンドゲート1071は、空間信号S1007が‘0’、一致信号S1051が‘0’であるため、無効化信号S1071に‘0’を出力する。データ無効化手段1060は、無効化信号S1071が‘0’であるため、内蔵不揮発性メモリ1020からROMバスB1006に出力されたプログラムを、データバスB1002に乗せ換えて出力する。
このように、CPU1010は順次、内蔵不揮発性メモリ1020の該当アドレスに格納されているプログラムを、ROMバスB1006及びデータ無効化手段1060を介してデータバスB1002から読み出し、解読した結果に従い各種制御を行う。
次に、CPU1010が(B)のプログラムを読み出すと、CPU1010は、エリア2を保護エリアに設定するように、データバスB1002にデータ‘100’を出力すると共に、エリアレジスタライト信号S1003に‘1’を出力する。エリアレジスタ1040は、データ‘100’を格納保持し、エリア信号S1041にデータ‘100’を出力する。これにより、エリア2が保護エリアに設定される。
次に、CPU1010が(C)のプログラムを読み出すと、CPU1010は、アドレスバスB1001に、エリア2に該当するアドレスを出力すると共に、リードイネーブル信号S1004に‘1’を出力する。プログラム(C)は内蔵不揮発性メモリ1020に配置されているので、空間判定手段1011は、空間信号S1007に‘0’を出力する。比較手段1050は、エリア信号S1041のデータ‘100’から保護エリアがエリア2であると判断し、且つ、アドレスバスB1001のアドレスがエリア2に該当するため、比較手段1050は一致信号S1051に‘1’を出力する。アンドゲート1071は、空間信号S1007が‘0’、一致信号が‘1’であるため、無効化信号S1071に‘0’を出力する。データ無効化手段1060は、無効化手段S1071が‘0’であるため、内蔵不揮発性メモリ1020からROMバスB1006に出力されたプログラム及びデータを、データバスB1002に乗せ換えて出力する。このように、エリアレジスタ1040で保護エリアを設定していても、内蔵不揮発性メモリ1020に格納されたプログラムを実行している限り、空間信号S1007が‘0’であるために、一致信号S1051は無効化され、内蔵不揮発性メモリ1020の保護エリアに格納されたプログラム及びデータを利用することが可能である。
次に、CPU1010が(D)のプログラムを読み出すと、CPU1010は、プログラムの読み出し先を外部メモリ1080の該当アドレスへと変更し、アドレスバスB1001に該当アドレスを出力すると共に、リードイネーブル信号S1004に‘1’を出力し、順次、外部メモリ1080の該当アドレスに格納されているプログラムをデータバスB1002から読み出し、解読した結果に従い各種制御を行う。
次に、CPU1010が(E)のプログラムを読み出すと、CPU1010は、アドレスバスB1001に、エリア1に該当するアドレスを出力すると共に、リードイネーブル信号S1004に‘1’を出力する。プログラム(E)は外部メモリ1080に配置されているので、空間判定手段1011は、空間信号S1007に‘1’を出力する。比較手段1050は、エリア信号S1041のデータ‘100’から保護エリアがエリア2であると判断し、且つ、アドレスバスB1001のアドレスがエリア1に該当するため、比較手段1050は一致信号S1051に‘0’を出力する。アンドゲート1071は、空間信号S1007が‘1’、一致信号が‘0’であるため、無効化信号S1071に‘0’を出力する。
データ無効化手段1060は、無効化信号S1071が‘0’であるため、内蔵不揮発性メモリ1020からROMバスB1006に出力されたプログラム及びデータを、データバスB1002に乗せ換えて出力する。このように、内蔵不揮発性メモリ1020の保護エリア以外に格納されたプログラム及びデータは、外部メモリ1080に格納されたプログラムからでも利用することが可能である。
次に、CPU1010が(F)のプログラムを読み出すと、CPU1010は、プログラムの読み出し先を、内蔵不揮発性メモリ1020の該当アドレスへと変更し、アドレスバスB1001に該当アドレスを出力すると共に、リードイネーブル信号S1004に‘1’を出力し、順次、内蔵不揮発性メモリ1020の該当アドレスに格納されているプログラムを、ROMバスB1006及びデータ無効化手段1060を介してデータバスB1002から読み出し、解読した結果に従い各種制御を行う。
次に、CPU1010が(G)のプログラムを読み出すと、CPU1010は、アドレスバスB1001に、エリア2に該当するアドレスを出力すると共に、リードイネーブル信号S1004に‘1’を出力する。プログラム(G)は内蔵不揮発性メモリ1020に配置されているので、空間判定手段1011は、空間信号S1007に‘0’を出力する。比較手段1050は、エリア信号S1041のデータ‘100’から保護エリアがエリア2であると判断し、且つ、アドレスバスB1001のアドレスがエリア2に該当するため、比較手段1050は一致信号S1051に‘1’を出力する。アンドゲート1071は、空間信号S1007が‘0’、一致信号が‘1’であるため、無効化信号S1071に‘0’を出力する。データ無効化手段1060は、無効化手段S1071が‘0’であるため、内蔵不揮発性メモリ1020からROMバスB1006に出力されたプログラム及びデータを、データバスB1002に乗せ換えて出力する。
ここで、不正ユーザが外部メモリ1080に格納されたプログラムを改変し、(E)のプログラムを、エリア2からデータ及びプログラムを読み出す記述にしたとする。この時のプログラム(A)〜(D)のマイクロコンピュータ1000の動作は、前述した動作と同じである。
次に、CPU1010が、改変された(E)のプログラムを読み出すと、CPU1010は、アドレスバスB1001に、エリア2に該当するアドレスを出力すると共に、リードイネーブル信号S1004に‘1’を出力する。改変されたプログラム(E)は外部メモリ1080に配置されているので、空間判定手段1011は、空間信号S1007に‘1’を出力する。比較手段1050は、エリア信号S1041のデータ‘100’から保護エリアがエリア2であると判断し、且つ、アドレスバスB1001のアドレスがエリア2に該当するため、比較手段1050は一致信号S1051に‘1’を出力する。アンドゲート1071は、空間信号S1007が‘1’、一致信号が‘1’であるため、無効化信号S1071に‘1’を出力する。
データ無効化手段1060は、無効化信号S1071が‘1’であるため、内蔵不揮発性メモリ1020からROMバスB1006に出力されたプログラム及びデータを、データバスB1002に出力しない。
このように、外部メモリ1080に格納されたプログラムを実行している限り、空間信号S1007が‘1’を出力して一致信号S1051を有効にするため、内蔵不揮発性メモリ1020の保護エリアに格納されたプログラム及びデータは、データバスB1002等から、マイクロコンピュータ1000の外部へ出力されることはない。
以上のように、マイクロコンピュータを、空間判定手段1011を備えたCPU1010と、3個のメモリ領域で構成した内蔵不揮発性メモリ1020と、内蔵不揮発性メモリ1020のメモリ領域数と同数の3ビットのビット幅を持つエリアレジスタ1040と、比較手段1050と、データ無効化手段1060と、アンドゲート1070とで構成し、なおかつ、保護エリアを設定するプログラムを記述することで、保護エリアに設定したエリア以外の内蔵不揮発性メモリ1020に格納されたプログラム及びデータを、外部メモリ1080に該当するアドレスからでも必要に応じて読み出すことができつつ、不正ユーザが外部メモリ1080を改変し、内蔵不揮発性メモリ1020に格納されたプログラム及びデータを読み出そうと試みても、保護エリアに格納されたデータは読み出すことができず、セキュリティが向上する。
また、保護エリアを一度設定すれば、外部メモリ1080に該当するアドレスへ分岐する前に保護エリアの設定をその都度行うことなく読み出し保護を実現することが可能であり、CPU1010が内蔵不揮発性メモリ1020に該当するアドレスに格納されたプログラムで実行している限りは、空間判定手段1011が出力する空間信号S1007によって一致信号S1051を無効化することにより、保護エリアを解除することなく、保護エリアに設定した内蔵不揮発性メモリ1020に格納されたプログラム及びデータを必要に応じて読み出すことができる。
尚、前記説明において、外部メモリ1080に該当するアドレスへ分岐する場合を例にとって説明したが、エリアレジスタ1040で保護エリアを設定することで、内蔵揮発性メモリ1030に該当するアドレスへ分岐する場合も、不正ユーザが内蔵揮発性メモリ1030に、プログラムを転送、実行して、内蔵不揮発性メモリ1020に格納されたプログラム及びデータを読み出そうと試みても、保護エリアに格納されたデータは読み出すことができず、セキュリティが向上する。
また、前記説明において、内蔵不揮発性メモリ1020は均等容量の3個のメモリ領域で構成されているとしたが、内蔵不揮発性メモリ1020はn個(nは1以上の整数)のメモリ領域で構成し、任意のアドレスマッピングであっても、本発明を実施することが可能である。
更に、前記説明において、データ無効化手段1060は、データ無効化の方法として、内蔵不揮発性メモリ1020から読み出したプログラム及びデータをデータバスB1002に何も出力しないとしたが、リードイネーブル信号S1004に‘1’を出力しない、アドレスバスB1001に該当アドレスを与えない、データバスB1002に任意のデータを出力するなどといった、該当するアドレスに格納されたプログラム及びデータが読み出されない構成であれば良い。
また、前記説明において、空間判定手段1011をCPU1010が備えるとしたが、CPU1010が実行している、保護エリアに格納されたプログラム及びデータを読み出すプログラムが格納されたメモリ領域を判定できる判定手段があれば、CPU1010が備えなくても良い。
(実施形態6)
以下、本発明の第6の実施形態について、図2〜図3、図12〜図13を参照して説明する。
図12は本発明のマイクロコンピュータのブロック図である。同図では、図1と同一名称のものは、異なる符号を付しているが、同一構成であるので、その説明を省略する。図12において、マイクロコンピュータ1100は、CPU1110と、内部不揮発性メモリ1120と、内部揮発性メモリ1130と、エリアレジスタ1140と、比較手段1150と、データ無効化手段1160と、二入力一出力のアンドゲート1170と、キーコード比較手段(認証手段)1190とによって構成されている。また、1180は、マイクロコンピュータ1100の外部に接続される外部メモリである。
アドレスバスB1101は、CPU1110と、内蔵不揮発性メモリ1120と、内蔵揮発性メモリ1130と、比較手段1150と、外部メモリ1180とを各々接続する。ここでは説明を簡単にするため、8ビットバス幅とする。
データバスB1102は、CPU1110と、内蔵揮発性メモリ1130と、エリアレジスタ1140と、データ無効化手段1160と、キーコード比較手段1190と、外部メモリ1180とを各々接続する。ここでは説明を簡単にするため、4ビットバス幅とする。エリアレジスタライト信号S1103は、CPU1110と、アンドゲート1170とを接続する。リードイネーブル信号S1104は、CPU1110と、内蔵不揮発性メモリ1120と、内蔵揮発性メモリ1130と、外部メモリ1180とを各々接続する。ライトイネーブル信号S1105は、CPU1110と、内蔵揮発性メモリ1130とを接続する。ROMバスB1106は、内蔵不揮発性メモリ1120と、データ無効化手段1160とを接続する。キーコード比較信号S1109は、CPU1110と、キーコード比較手段1190とを接続する。キーコード一致信号S1191は、キーコード比較手段1190と、アンドゲート1170とを接続する。書換え許可信号S1171は、アンドゲート1170と、エリアレジスタ1140とを接続する。エリア信号S1141は、エリアレジスタ1140と、比較手段1150とを接続する。一致信号S1151は、比較手段1150と、データ無効化手段1160とを接続する。
内蔵不揮発性メモリ1120は、プログラム及びデータを格納しており、リードイネーブル信号S1104が‘1’であれば、アドレスバスB1101のアドレスに該当するメモリ領域に格納されているプログラム及びデータをROMバスB1106に出力する。また、内蔵不揮発性メモリ1120は、アドレスに応じてn個のエリアに分割されている。ここでは説明を簡単にするため、3個のエリアに分割されているものとする。
図2は、内蔵不揮発性メモリ1120のメモリ領域とアドレスの関係を示す図である。図2において、内蔵不揮発性メモリ1120のメモリ領域は、3つのエリアに分割されており、エリア0はアドレス00Hから1FHまで、エリア1はアドレス20Hから3FHまで、エリア2はアドレス40Hから5FHまでとする。すなわち、エリア0は8ビット幅のアドレスバスB1101の上位3ビットが‘000’の領域、同様にエリア1は上位3ビットが‘001’、エリア2は上位3ビットが‘010’の領域となる。
内蔵揮発性メモリ1130は、プログラム及びデータを格納保持する。リードイネーブル信号S1104が‘1’であれば、アドレスバスB1101のアドレスに該当するメモリ領域に格納されているプログラム及びデータを、データバスB1102に出力する。また、内蔵揮発性メモリ1130は、ライトイネーブル信号S1105が‘1’ならば、データバスB1102のプログラム及びデータを、アドレスバスB1101のアドレスに該当するメモリ領域に格納、保持する。
キーコード比較手段1190は、CPU1110が出力するキーコード比較信号S1109が‘1’であれば、データバスB1102のデータを格納保持する。また、格納したデータと、キーコード比較手段1190が予め格納しているキーコードとを比較し、一致すれば‘1’、不一致ならば‘0’を、キーコード一致信号S1191に出力する。ここでは説明を簡単にするため、キーコードを‘1010’とし、初期状態では、キーコードとの比較は一致とする。
アンドゲート1170は、キーコード比較手段1190が出力するキーコード一致信号S1191と、CPU1110が出力するエリアレジスタライト信号S1103との論理積を、書換え許可信号S1171に出力する。すなわち、アンドゲート1170は、キーコード比較が一致し、CPU1110がエリアレジスタライト信号S1103に‘1’を出力した時に、書換え許可信号S1171に‘1’を出力する。
エリアレジスタ1140は、書換え許可信号S1171が‘1’であれば、データバスB1102のデータを格納保持し、保持したデータをエリア信号S1141に出力する。また、エリアレジスタ1140は、内蔵不揮発性メモリ1120のメモリ領域の個数と同数のビット幅を有しており、各ビットを最上位ビットから各々エリアフラグ2、エリアフラグ1、エリアフラグ0という。また、ここでは説明を簡単にするため、ビット幅を3ビットとし、初期値を‘000’とする。
エリアレジスタ1140の各ビットは、内蔵不揮発性メモリ1120のメモリ領域を構成する各エリアと、各々1対1で対応しており、各ビットがセットされれば、そのビットに対応したエリアは、読み出し保護の対象エリアとなる。例えば、エリアフラグ1がセットされた時はエリア1が読み出し保護の対象エリアとなり、読み出し時に、比較手段1150にてアドレスの比較判定が行われる。
比較手段1150は、アドレスバスB1101のアドレスが、エリアレジスタ1140で設定したエリアに該当するか否かを判定し、判定結果を一致信号S1151に出力する。ここで、比較手段1150の比較機能を、図3を用いて説明する。図3は、比較手段1150の比較機能を説明する図である。図3は左から、エリアレジスタ1140のエリアフラグ2の値、エリアフラグ1の値、エリアフラグ0の値、アドレスバスB1101のビット7の値、ビット6の値、5の値、ビット4の値、一致信号S1151の値である。
例えば、エリアレジスタ1140が出力するエリア信号S1141のデータが‘100’、アドレスバスB1101のアドレスが‘52H’ならば、アドレスの上位4ビットが‘0101’であるため、比較手段1150が出力する一致信号S1151は‘1’となる。また、エリアレジスタ1140が出力するエリア信号S1141のデータが‘100’、アドレスバスB1101のアドレスが‘32H’ならば、アドレスの上位4ビットが‘0011’であるため、一致信号S1151は‘0’となる。このようにして、比較手段1150は、アドレスバスB1101のアドレスが、エリアレジスタ1140で設定した内蔵不揮発性メモリ1120のエリアに該当するか否かを判定し、該当すれば‘1’を、非該当ならば‘0’を一致信号S1151に出力する。
データ無効化手段1160は、一致信号S1151が‘1’であれば、内蔵不揮発性メモリ1120からROMバスB1106に出力された読み出しデータを無効化し、データバスB1102に何も出力しない。また、一致信号S1151が‘0’であれば、内蔵不揮発性メモリ1120からROMバスB1106に出力された読み出しデータを、データバスB1102に乗せ換えて、出力する。
外部メモリ1180は、プログラム及びデータが格納されており、リードイネーブル信号S1104が‘1’であれば、アドレスバスB1101のアドレスに該当するアドレスに格納されているプログラム及びデータをデータバスB1102に出力する。
CPU1110は、アドレスバスB1101に内蔵揮発性メモリ1120に該当するアドレスを出力すると共に、リードイネーブル信号S1104に‘1’を出力し、順次、内蔵不揮発性メモリ1120に格納されているプログラムを、ROMバスB1106、無効化手段1140を介してデータバスB1102から読み出し、解読した結果に従い各種制御を行う。また、内蔵不揮発性メモリ1120から読み出したプログラムが、内蔵揮発性メモリ1130又は外部メモリ1180への分岐命令である場合には、アドレスバスB1101に内蔵揮発性メモリ1130又は外部メモリ1180の該当するアドレスを出力すると共に、リードイネーブル信号S1104に‘1’を出力し、内蔵揮発性メモリ1130又は外部メモリ1180に格納されているプログラムを、データバスB1102から読み出し、解読した結果に従い各種制御を行う。
また、CPU1110は、ライトイネーブル信号S1105に‘1’、アドレスバスB1101に内蔵揮発性メモリ1130に該当するアドレスを各々出力すると共に、データバスB1102にデータを出力し、内蔵揮発性メモリ1130に任意の値を書込むことができる。
また、CPU1110は、キーコード比較信号S1109に‘1’、データバスB1102に比較するデータを各々出力することにより、キーコード比較手段1190に、キーコードの比較をさせることができる。また、CPU1110は、キーコード一致信号S1191が‘1’の時、すなわちキーコードが一致している時に、データバスB1102にデータを出力すると共にエリアレジスタライト信号S1103に‘1’を出力し、エリアレジスタ1140を任意の値に書き換えることができる。
以上のように構成された本発明の第6の実施形態において、内蔵不揮発性メモリ1120に格納されたプログラム及びデータ読み出し保護動作について説明する。
内蔵不揮発性メモリ1120を構成する各エリアのうち、不正ユーザに読み出されたくないプログラム及びデータを格納しているなど、読み出し保護の対象にしたいエリア(以下、保護エリアという)を、仮にエリア2として、マイクロコンピュータ1100の動作を図13を用いて説明する。図13は、マイクロコンピュータ1100の各メモリ領域に格納されたプログラムと、内蔵不揮発性メモリ1120の読み出し保護状態をプログラムの実行順に説明する図である。
先ず、(A)のプログラムスタート時、CPU1110は、アドレスバスB1101に、内蔵不揮発性メモリ1120に該当するアドレスを出力すると共に、リードイネーブル信号S1104に‘1’を出力し、内蔵不揮発性メモリ1120に格納されているプログラムを読み出そうとする。この時、エリアレジスタ1140が格納するデータの初期値は‘000’であるため、比較手段1150は、エリア信号S1141のデータ‘000’から保護エリアに設定されているエリアがないと判断し、一致信号S1151に‘0’を出力する。データ無効化手段1160は、一致信号S1151が‘0’であるため、内蔵不揮発性メモリ1120からROMバスB1106に出力されたプログラムを、データバスB1102に乗せ換えて出力する。
このように、CPU1110は順次、内蔵不揮発性メモリ1120の該当アドレスに格納されているプログラムを、ROMバスB1106及びデータ無効化手段1160を介してデータバスB1102から読み出し、解読した結果に従い各種制御を行う。
次に、CPU1110が(B)のプログラムを読み出すと、CPU1110は、アドレスバスB1101に、エリア2に該当するアドレスを出力すると共に、リードイネーブル信号S1104に‘1’を出力する。エリアレジスタ1140が格納するデータは初期値‘000’のままであるため、比較手段1150は、エリア信号S1141のデータ‘000’から保護エリアに設定されているエリアがないと判断し、一致信号S1151に‘0’を出力する。データ無効化手段1160は、一致信号S1151が‘0’であるため、内蔵不揮発性メモリ1120からROMバスB1106に出力されたプログラム及びデータを、データバスB1102に乗せ換えて、出力する。
次に、CPU1110が(C)のプログラムを読み出すと、CPU1110は、エリア2を保護エリアに設定するために、データバスB1102にデータ‘100’を出力すると共に、エリアレジスタライト信号S1103に‘1’を出力する。キーコード比較手段1190は、初期状態ではキーコード比較は一致しているため、キーコード一致信号S1191に‘1’を出力する。アンドゲート1170は、キーコード一致信号S1191が‘1’、エリアレジスタライト信号S1103が‘1’であるため、書換え許可信号S1171に‘1’を出力する。エリアレジスタ1140は、書換え許可信号S1171が‘1’であるため、データ‘100’を格納保持し、エリア信号S1141にデータ‘100’を出力する。これにより、エリア2が保護エリアに設定される。
次に、CPU1110が(D)のプログラムを読み出すと、CPU1110は、キーコードと異なるデータでキーコードの比較を行い、エリアレジスタ1140の書換え禁止状態に設定するように、データバスB1102にキーコードと異なるデータを出力すると共に、キーコード比較信号S1109に‘1’を出力する。キーコード比較手段1190は、キーコードと異なるデータを格納保持し、予め格納されているキーコード‘1010’と比較し、不一致であるので、キーコード一致信号S1191に‘0’を出力する。これにより、エリアレジスタ1140の書換え禁止状態は設定される。
次に、CPU1110が(E)のプログラムを読み出すと、CPU1110は、プログラムの読み出し先を外部メモリ1180の該当アドレスへと変更し、アドレスバスB1101に該当アドレスを出力すると共に、リードイネーブル信号S1104に‘1’を出力し、順次、外部メモリ1180の該当アドレスに格納されているプログラムをデータバスB1102から読み出し、解読した結果に従い各種制御を行う。
次に、CPU1110が(F)のプログラムを読み出すと、CPU1110は、アドレスバスB1101に、エリア1に該当するアドレスを出力すると共に、リードイネーブル信号S1104に‘1’を出力する。比較手段1150は、エリア信号S1141のデータ‘100’から保護エリアがエリア2であると判断し、且つ、アドレスバスB1101のアドレスがエリア1に該当するため、比較手段1150は一致信号S1151に‘0’を出力する。
データ無効化手段1160は、一致信号S1151が‘0’であるため、内蔵不揮発性メモリ1120からROMバスB1106に出力されたプログラム及びデータを、データバスB1102に乗せ換えて出力する。このように、内蔵不揮発性メモリ1120の保護エリア以外に格納されたプログラム及びデータは、外部メモリ1180に格納されたプログラムからでも利用することが可能である。
次に、CPU1110が(G)のプログラムを読み出すと、CPU1110は、プログラムの読み出し先を、内蔵不揮発性メモリ1120の該当アドレスへと変更し、アドレスバスB1101に該当アドレスを出力すると共に、リードイネーブル信号S1104に‘1’を出力し、順次、内蔵不揮発性メモリ1120の該当アドレスに格納されているプログラムを、ROMバスB1106及びデータ無効化手段1160を介してデータバスB1102から読み出し、解読した結果に従い各種制御を行う。
次に、CPU1110が(H)のプログラムを読み出すと、CPU1110は、キーコードの比較を行い、エリアレジスタ1140の書換え禁止状態を解除するように、データバスB1102にデータ‘1010’を出力すると共に、キーコード比較信号S1109に‘1’を出力する。キーコード比較手段1190は、データ‘1010’を格納保持し、予め格納されているキーコード‘1010’と比較し、一致しているので、キーコード一致信号S1191に‘1’を出力する。これにより、エリアレジスタ1140の書換え禁止状態は解除される。
次に、CPU1110が(I)のプログラムを読み出すと、CPU1110は、保護エリアを解除するように、データバスB1102にデータ‘000’を出力すると共に、エリアレジスタライト信号S1103に‘1’を出力する。アンドゲート1170は、キーコード一致信号S1191が‘1’、エリアレジスタライト信号S1103が‘1’であるため、書換え許可信号S1171に‘1’を出力する。エリアレジスタ1140は、書換え許可信号S1171が‘1’であるため、データ‘000’を格納保持し、エリア信号S1141にデータ‘000’を出力する。これにより、各エリアの読み出し保護は解除される。
次に、CPU1110が(J)のプログラムを読み出すと、CPU1110は、アドレスバスB1101に、エリア2に該当するアドレスを出力すると共に、リードイネーブル信号S1104に‘1’を出力する。エリアレジスタ1140が格納するデータは‘000’であるため、比較手段1150は、エリア信号S1141のデータ‘000’から保護エリアに設定されているエリアがないと判断し、一致信号S1151に‘0’を出力する。データ無効化手段1160は、一致信号S1151が‘0’であるため、内蔵不揮発性メモリ1120からROMバスB1106に出力されたプログラム及びデータを、データバスB1102に乗せ換えて出力する。
ここで、不正ユーザが外部メモリ1180に格納されたプログラムを改変し、(F)のプログラムを、保護エリアの解除プログラム(F1)と、エリア2からデータ及びプログラムを読み出すプログラム(F2)とに変更したとする。この時のプログラム(A)〜(E)のマイクロコンピュータ1100の動作は、前述した動作と同じである。
次に、CPU1110が、改変された(F1)のプログラムを読み出すと、CPU1110は、保護エリアを解除するために、データバスB1102にデータ‘000’を出力すると共に、エリアレジスタライト信号S1103に‘1’を出力する。アンドゲート1170は、キーコード一致信号S1191が‘0’、エリアレジスタライト信号S1103が‘1’であるため、書換え許可信号S1171に‘0’を出力する。エリアレジスタ1140は、書換え許可信号S1171が‘0’であるため、データ‘000’を格納せず前値を保持しつづけ、エリア信号S1141にデータ‘100’を出力する。このため、エリア2は保護エリアに設定されたままである。
次に、CPU1110が、改変された(F2)のプログラムを読み出すと、CPU1100は、アドレスバスB1101に、エリア2に該当するアドレスを出力すると共に、リードイネーブル信号S1104に‘1’を出力する。比較手段1150は、エリア信号S1141のデータ‘100’から保護エリアがエリア2であると判断し、且つ、アドレスバスB1101のアドレスがエリア2に該当するため、比較手段1150は一致信号S1151に‘1’を出力する。データ無効化手段1160は、一致信号S1151が‘1’であるため、内蔵不揮発性メモリ1120からROMバスB1106に出力されたプログラム及びデータを、データバスB1102に出力しない。
このように、キーコード比較で一致しない限り、エリアレジスタ1040が格納するデータを書換えることができないため、キーコードを知らない不正ユーザが保護エリアを解除することはできない。これにより、内蔵不揮発性メモリ1120の保護エリアに格納されたプログラム及びデータは、データバスB1102等から、マイクロコンピュータ1100の外部へ出力されることはない。
以上のように、マイクロコンピュータを、3個のメモリ領域で構成した内蔵不揮発性メモリ1120と、内蔵不揮発性メモリ1120のメモリ領域数と同数の3ビットのビット幅を持つエリアレジスタ1140と、比較手段1150と、データ無効化手段1160と、アンドゲート1170と、キーコード比較手段1190とで構成し、更に、外部メモリ1180に該当するアドレスへ分岐する前に、保護エリアの設定と、更に、エリアレジスタ1140の書換えを禁止に設定をするプログラムを記述することにより、保護エリアに設定したエリア以外の内蔵不揮発性メモリ1120に格納されたプログラム及びデータを外部メモリ1180に該当するアドレスからでも必要に応じて読み出すことができつつ、不正ユーザが外部メモリ1180を改変して、内蔵不揮発性メモリ1120に格納されたプログラム及びデータを読み出そうと試みても、キーコードを知らない不正ユーザはエリアレジスタ1140を書換えて保護エリアを解除できないため、保護エリアに格納されたデータ及びプログラムを読み出すことができず、セキュリティが向上する。
尚、前記説明において、外部メモリ1180に該当するアドレスへ分岐する場合を例にとって説明したが、エリアレジスタ1140で保護エリアを設定し、エリアレジスタ1140の書換えを禁止に設定することにより、内蔵揮発性メモリ1130に該当するアドレスへ分岐する場合も、不正ユーザが内蔵揮発性メモリ1130に、プログラムを転送、実行して、内蔵不揮発性メモリ1120に格納されたプログラム及びデータを読み出そうと試みても、キーコードを知らない不正ユーザはエリアレジスタ1140を書換えて保護エリアを解除できないため、保護エリアに格納されたデータは読み出すことができず、セキュリティが向上する。
また、前記説明において、内蔵不揮発性メモリ1120は均等容量の3個のメモリ領域で構成されているとしたが、内蔵不揮発性メモリ1120はn個(nは1以上の整数)のメモリ領域で構成し、任意のアドレスマッピングであっても良い。
また、前記説明において、データ無効化手段1160は、データ無効化の方法として、内蔵不揮発性メモリ1120から読み出したプログラム及びデータをデータバスB1102に何も出力しないとしたが、リードイネーブル信号S1104に‘1’を出力しない、アドレスバスB1101に該当アドレスを与えない、データバスB1102に任意のデータを出力する、などといった、該当するアドレスに格納されたプログラム及びデータが読み出されない構成であれば良い。
また、前記説明において、キーコード比較手段1190は、予め格納されているキーコードを4ビットのデータ‘1010’としたが、任意ビット幅の任意データとしても、本発明を実施することが可能であり、ビット幅を増やすことにより、更にセキュリティを向上させることができる。
(実施形態7)
以下、本発明の第7の実施形態について、図2〜図4、図6、図10、図14を参照して説明する。
図14は本発明のマイクロコンピュータのブロック図である。同図では、図1及び図12と同一名称のものは、異なる符号を付しているが、同一構成であるので、その説明を省略する。図14において、マイクロコンピュータ1200は、CPU1210と、内部不揮発性メモリ1220と、内部揮発性メモリ1230と、エリアレジスタ1240と、比較手段1250と、データ無効化手段1260と、二入力一出力のアンドゲート1270と、インバータ1275とによって構成されている。また、前記CPU1210は内部に空間判定手段(判定手段)1211を備えている。1280は前記マイクロコンピュータ1200の外部に接続される外部メモリである。
アドレスバスB1201は、CPU1210と、内蔵不揮発性メモリ1220と、内蔵揮発性メモリ1230と、比較手段1250と、外部メモリ1280とを各々接続する。ここでは説明を簡単にするため、8ビットバス幅とする。データバスB1202は、CPU1210と、内蔵揮発性メモリ1230と、エリアレジスタ1240と、データ無効化手段1260と、外部メモリ1280とを各々接続する。ここでは説明を簡単にするため、4ビットバス幅とする。エリアレジスタライト信号S1203は、CPU1210と、アンドゲート1270とを接続する。リードイネーブル信号S1204は、CPU1210と、内蔵不揮発性メモリ1220と、内蔵揮発性メモリ1230と、外部メモリ1280とを各々接続する。ライトイネーブル信号S1205は、CPU1210と、内蔵揮発性メモリ1230とを接続する。ROMバスB1206は、内蔵不揮発性メモリ1220と、データ無効化手段1260とを接続する。
更に、空間信号S1207は、CPU1210と、アンドゲート1270とを接続する。反転空間信号S1277は、インバータ1275と、アンドゲート1270とを接続する。書換え許可信号S1271は、アンドゲート1270と、エリアレジスタ1240とを接続する。エリア信号S1241は、エリアレジスタ1240と、比較手段1250とを接続する。一致信号S1251は、比較手段1250と、データ無効化手段1260とを接続する。
内蔵不揮発性メモリ1220は、プログラム及びデータを格納しており、リードイネーブル信号S1204が‘1’であれば、アドレスバスB1201のアドレスに該当するメモリ領域に格納されているプログラム及びデータをROMバスB1206に出力する。また、内蔵不揮発性メモリ1220は、アドレスに応じてn個のエリアに分割されている。ここでは説明を簡単にするため、3個のエリアに分割されているものとする。
図2は、内蔵不揮発性メモリ1220のメモリ領域とアドレスの関係を示す図である。図2で、内蔵不揮発性メモリ1220のメモリ領域は、3つのエリアに分割されており、エリア0はアドレス00Hから1FHまで、エリア1はアドレス20Hから3FHまで、エリア2はアドレス40Hから5FHまでとする。すなわち、エリア0は8ビット幅のアドレスバスB1201の上位3ビットが‘000’の領域、同様にエリア1は上位3ビットが‘001’、エリア2は上位3ビットが‘010’の領域となる。
内蔵揮発性メモリ1230は、プログラム及びデータを格納保持する。リードイネーブル信号S1204が‘1’であれば、アドレスバスB1201のアドレスに該当するメモリ領域に格納されているプログラム及びデータを、データバスB1202に出力する。また、内蔵揮発性メモリ1230は、ライトイネーブル信号S1205が‘1’ならば、データバスB1202のプログラム及びデータを、アドレスバスB1201のアドレスに該当するメモリ領域に格納、保持する。
インバータ1275は、後述する空間判定手段1211が出力する空間信号S1207を、極性を反転して、反転空間信号S1277に出力する。
アンドゲート1270は、インバータ1275が出力する反転空間信号S1277と、CPU1210が出力するエリアレジスタライト信号S1203との論理積を、書換え許可信号S1271として出力する。すなわち、アンドゲート1270は、反転空間信号S1277が‘0’の時に、書換え許可信号S1271として‘0’を出力し、エリアレジスタライト信号S1203の値を無効化する。
エリアレジスタ1240は、書換え許可信号S1271が‘1’であれば、データバスB1202のデータを格納保持し、保持したデータをエリア信号S1241に出力する。また、エリアレジスタ1240は、内蔵不揮発性メモリ1220のメモリ領域の個数と同数のビット幅を有しており、各ビットを最上位ビットから各々エリアフラグ2、エリアフラグ1、エリアフラグ0という。また、ここでは説明を簡単にするため、ビット幅を3ビットとし、初期値を‘000’とする。
エリアレジスタ1240の各ビットは、内蔵不揮発性メモリ1220のメモリ領域を構成する各エリアと、各々1対1で対応しており、各ビットがセットされれば、そのビットに対応したエリアは、読み出し保護の対象エリアとなる。例えば、エリアフラグ1がセットされた時はエリア1が読み出し保護の対象エリアとなり、読み出し時に、比較手段1250にてアドレスの比較判定が行われる。
比較手段1250は、アドレスバスB1201のアドレスが、エリアレジスタ1240で設定したエリアに該当するか否かを判定し、判定結果を一致信号S1251に出力する。ここで、比較手段1250の比較機能を、図3を用いて説明する。図3は、比較手段1250の比較機能を説明する図である。図3は左から、エリアレジスタ1240のエリアフラグ2の値、エリアフラグ1の値、エリアフラグ0の値、アドレスバスB1201のビット7の値、ビット6の値、5の値、ビット4の値、一致信号S1251の値である。
例えば、エリアレジスタ1240が出力するエリア信号S1241のデータが‘100’、アドレスバスB1201のアドレスが‘52H’ならば、アドレスの上位4ビットが‘0101’であるため、比較手段1250が出力する一致信号S1251は‘1’となる。また、エリアレジスタ1240が出力するエリア信号S1241のデータが‘100’、アドレスバスB1201のアドレスが‘32H’ならば、アドレスの上位4ビットが‘0011’であるため、一致信号S1251は‘0’となる。このようにして、比較手段1250は、アドレスバスB1201のアドレスが、エリアレジスタ1240で設定した内蔵不揮発性メモリ1220のエリアに該当するか否かを判定し、該当すれば‘1’を、非該当ならば‘0’を一致信号S1251に出力する。
データ無効化手段1260は、一致信号S1251が‘1’であれば、内蔵不揮発性メモリ1220からROMバスB1206に出力された読み出しデータを無効化し、データバスB1202に何も出力しない。また、一致信号S1251が‘0’であれば、内蔵不揮発性メモリ1220からROMバスB1206に出力された読み出しデータを、データバスB1202に乗せ換えて出力する。
外部メモリ1280は、プログラム及びデータが格納されており、リードイネーブル信号S1204が‘1’であれば、アドレスバスB1201のアドレスに該当するアドレスに格納されているプログラム及びデータをデータバスB1202に出力する。
CPU1210は、空間判定手段1211を備えている。この空間判定手段1211は、CPU1210が現在実行中のプログラムが、どのメモリに格納されているかを判定し、判定結果を空間信号S1207に出力する。
ここで、マイクロコンピュータ1200のメモリ空間について、図6を用いて説明する。図6で、マイクロコンピュータ1200のメモリ空間はアドレスに応じて3つの領域に分割されており、アドレス00Hから5FHまでは内蔵不揮発性メモリ1220に該当し、同様に、アドレス60Hから7FHまでは内蔵揮発性メモリ1230、アドレス80HからFFHまでは外部メモリ1280に該当する。すなわち、内蔵不揮発性メモリ1220は、8ビット幅のアドレスバスB1201の上位3ビットが‘000’又は‘001’又は‘010’の領域、同様に内蔵揮発性メモリ1230は上位3ビットが‘011’、外部メモリ1280は、最上位ビットが‘1’の領域となる。
以上のようなメモリ空間に対する空間判定手段1211の空間判定機能を、図10を用いて説明する。図10は空間判定手段1211の空間判定機能を説明する図である。図10は左から、CPU1210が現在実行しているプログラムが格納されているアドレス(以下、実行アドレスという)のビット7の値、ビット6の値、ビット5の値、ビット4の値、該当するメモリ、空間信号S1207の値である。例えば、実行アドレスが‘52H’ならば、実行アドレスの上位4ビットが‘0101’であるため、空間判定手段1211が出力する空間信号S1207は‘0’となる。また、実行アドレスが‘82H’ならば、実行アドレスの上位4ビットが‘1000’であるため、空間信号S1207は‘1’となる。このようにして、空間判定手段1211は、実行アドレスが、マイクロコンピュータ1200のどのメモリのアドレスに該当するか判定し、内蔵不揮発性メモリ1220のアドレスに該当すれば‘0’を、非該当ならば‘1’を空間信号S1207に出力する。
また、CPU1210は、アドレスバスB1201に内蔵不揮発性メモリ1220に該当するアドレスを出力すると共に、リードイネーブル信号S1204に‘1’を出力し、順次、内蔵不揮発性メモリ1220に格納されているプログラムを、ROMバスB1206、無効化手段1240を介してデータバスB1202から読み出し、解読した結果に従い各種制御を行う。また、内蔵不揮発性メモリ1220から読み出したプログラムが、内蔵揮発性メモリ1230又は外部メモリ1280への分岐命令である場合には、アドレスバスB1201に内蔵揮発性メモリ1230又は外部メモリ1280の該当するアドレスを出力すると共に、リードイネーブル信号S1204に‘1’を出力し、内蔵揮発性メモリ1230又は外部メモリ1280に格納されているプログラムを、データバスB1202から読み出し、解読した結果に従い各種制御を行う。
また、CPU1210は、ライトイネーブル信号S1205に‘1’、アドレスバスB1201に内蔵揮発性メモリ1230に該当するアドレスを各々出力すると共に、データバスB1202にデータを出力し、内蔵揮発性メモリ1230に任意の値を書込むことができる。
また、CPU1210は、反転空間信号S1277が‘1’の時、すなわち、内蔵不揮発性メモリ1220に該当するアドレスのプログラムを実行中であれば、データバスB1202にデータを出力すると共にエリアレジスタライト信号S1203に‘1’を出力し、エリアレジスタ1240を任意の値に書き換えることができる。
以上のように構成された本発明の第7の実施形態において、内蔵不揮発性メモリ1220に格納されたプログラム及びデータ読み出し保護動作について説明する。
内蔵不揮発性メモリ1220を構成する各エリアのうち、不正ユーザに読み出されたくないプログラム及びデータを格納しているなど、読み出し保護の対象にしたいエリア(以下、保護エリアという)を、仮にエリア2として、マイクロコンピュータ1200の動作を図4を用いて説明する。図4は、マイクロコンピュータ1200の各メモリ領域に格納されたプログラムと、内蔵不揮発性メモリ1220の読み出し保護状態をプログラムの実行順に説明する図である。
先ず、(A)のプログラムスタート時、CPU1210は、アドレスバスB1201に、内蔵不揮発性メモリ1220に該当するアドレスを出力すると共に、リードイネーブル信号S1204に‘1’を出力し、内蔵不揮発性メモリ1220に格納されているプログラムを読み出そうとする。この時、エリアレジスタ1240が格納するデータの初期値は‘000’であるため、比較手段1250は、エリア信号S1241のデータ‘000’から保護エリアに設定されているエリアがないと判断し、一致信号S1251に‘0’を出力する。データ無効化手段1260は、一致信号S1251が‘0’であるため、内蔵不揮発性メモリ1220からROMバスB1206に出力されたプログラムをデータバスB1202に乗せ換えて、出力する。
このように、CPU1210は順次、内蔵不揮発性メモリ1220の該当アドレスに格納されているプログラムを、ROMバスB1206及びデータ無効化手段1260を介してデータバスB1202から読み出し、解読した結果に従い各種制御を行う。
次に、CPU1210が(B)のプログラムを読み出すと、CPU1210は、アドレスバスB1201に、エリア2に該当するアドレスを出力すると共に、リードイネーブル信号S1204に‘1’を出力する。エリアレジスタ1240が格納するデータは初期値‘000’のままであるため、比較手段1250は、エリア信号S1241のデータ‘000’から保護エリアに設定されているエリアがないと判断し、一致信号S1251に‘0’を出力する。データ無効化手段1260は、一致信号S1251が‘0’であるため、内蔵不揮発性メモリ1220からROMバスB1206に出力されたプログラム及びデータを、データバスB1202に乗せ換えて出力する。
次に、CPU1210が(C)のプログラムを読み出すと、CPU1210は、内蔵不揮発性メモリ1220のエリア2を保護エリアに設定するために、データバスB1202にデータ‘100’を出力すると共に、エリアレジスタライト信号S1203に‘1’を出力する。プログラム(C)は内蔵不揮発性メモリ1220に配置されているので、空間判定手段1211は、空間信号S1207に‘0’を出力する。インバータ1275は、空間信号S1207の極性を反転し、反転空間信号S1277に‘1’を出力する。アンドゲート1270は、反転空間信号S1277が‘1’、エリアレジスタライト信号S1203が‘1’であるため、書換え許可信号S1271に‘1’を出力する。エリアレジスタ1240は、書換え許可信号S1271が‘1’であるため、データバスB1202のデータデータ‘100’を格納保持し、エリア信号S1241にデータ‘100’を出力する。これにより、エリア2が保護エリアに設定される。
次に、CPU1210が(D)のプログラムを読み出すと、CPU1210は、プログラムの読み出し先を外部メモリ1280の該当アドレスへと変更し、アドレスバスB1201に該当アドレスを出力すると共に、リードイネーブル信号S1204に‘1’を出力し、順次、外部メモリ1280の該当アドレスに格納されているプログラムをデータバスB1202から読み出し、解読した結果に従い各種制御を行う。
次に、CPU1210が(E)のプログラムを読み出すと、CPU1210は、アドレスバスB1201に、エリア1に該当するアドレスを出力すると共に、リードイネーブル信号S1204に‘1’を出力する。比較手段1250は、エリア信号S1241のデータ‘100’から保護エリアがエリア2であると判断し、且つ、アドレスバスB1201のアドレスがエリア1に該当するため、比較手段1250は一致信号S1251に‘0’を出力する。
データ無効化手段1260は、一致信号S1251が‘0’であるため、内蔵不揮発性メモリ1220からROMバスB1206に出力されたプログラム及びデータを、データバスB1202に乗せ換えて出力する。このように、内蔵不揮発性メモリ1220の保護エリア以外に格納されたプログラム及びデータは、外部メモリ1280に格納されたプログラムからでも利用することが可能である。
次に、CPU1210が(F)のプログラムを読み出すと、CPU1210は、プログラムの読み出し先を、内蔵不揮発性メモリ1220の該当アドレスへと変更し、アドレスバスB1201に該当アドレスを出力すると共に、リードイネーブル信号S1204に‘1’を出力し、順次、内蔵不揮発性メモリ1220の該当アドレスに格納されているプログラムを、ROMバスB1206及びデータ無効化手段1260を介してデータバスB1202から読み出し、解読した結果に従い各種制御を行う。
次に、CPU1210が(G)のプログラムを読み出すと、CPU1210は、保護エリアを解除するために、データバスB1202にデータ‘000’を出力すると共に、エリアレジスタライト信号S1203に‘1’を出力する。プログラム(G)は内蔵不揮発性メモリ1220に配置されているので、空間判定手段1211は、空間信号S1207に‘0’を出力する。インバータ1275は、空間信号S1207の極性を反転し、反転空間信号S1277に‘1’を出力する。アンドゲート1270は、反転空間信号S1277が‘1’、エリアレジスタライト信号S1203が‘1’であるため、書換え許可信号S1271に‘1’を出力する。エリアレジスタ1240は、書換え許可信号S1271が‘1’であるため、データバスB1202のデータデータ‘000’を格納保持し、エリア信号S1241にデータ‘000’を出力する。これにより、各エリアの読み出し保護は解除される。
次に、CPU1210が(H)のプログラムを読み出すと、CPU1210は、アドレスバスB1201に、エリア2に該当するアドレスを出力すると共に、リードイネーブル信号S1204に‘1’を出力する。エリアレジスタ1240が格納するデータは‘000’であるため、比較手段1250は、エリア信号S1241のデータ‘000’から保護エリアに設定されているエリアがないと判断し、一致信号S1251に‘0’を出力する。データ無効化手段1260は、一致信号S1251が‘0’であるため、内蔵不揮発性メモリ1220からROMバスB1206に出力されたプログラム及びデータを、データバスB1202に乗せ換えて出力する。
ここで、不正ユーザが外部メモリ1280に格納されたプログラムを改変し、(E)のプログラムを、(E1)保護エリアを解除するプログラム、(E2)エリア2からデータ及びプログラムを読み出すプログラムにしたとする。この時のプログラム(A)〜(D)のマイクロコンピュータ1200の動作は、前述した動作と同じである。
次に、CPU1210が、改変された(E1)のプログラムを読み出すと、CPU1210は、保護エリアを解除するように、データバスB1202にデータ‘000’を出力すると共に、エリアレジスタライト信号S1203に‘1’を出力する。改変されたプログラム(E1)は外部メモリ1280に配置されているので、空間判定手段1211は、空間信号S1207に‘1’を出力する。インバータ1275は、空間信号S1207の極性を反転し、反転空間信号S1277に‘0’を出力する。アンドゲート1270は、反転空間信号S1277が‘0’、エリアレジスタライト信号S1203が‘1’であるため、書換え許可信号S1271に‘0’を出力する。エリアレジスタ1240は、書換え許可信号S1271が‘0’であるため、データバスB1202のデータ‘000’を格納せず前値を保持しつづけ、エリア信号S1241にデータ‘100’を出力する。このため、エリア2は保護エリアに設定されたままである。
次に、CPU1210が、改変された(E2)のプログラムを読み出すと、CPU1200は、アドレスバスB1201に、エリア2に該当するアドレスを出力すると共に、リードイネーブル信号S1204に‘1’を出力する。比較手段1250は、エリア信号S1241のデータ‘100’から保護エリアがエリア2であると判断し、且つ、アドレスバスB1201のアドレスがエリア2に該当するため、比較手段1250は一致信号S1251に‘1’を出力する。データ無効化手段1260は、一致信号S1251が‘1’であるため、内蔵不揮発性メモリ1220からROMバスB1206に出力されたプログラム及びデータを、データバスB1202に出力しない。
このように、外部メモリ1280に格納されたプログラムを実行している限り、空間信号S1207が‘1’を出力し、反転空間信号S1277は‘0’出力してエリアレジスタライト信号S1203を無効にするため、エリアレジスタ1240が格納するデータを書換えることができず、保護エリアを解除することはできない。これにより、内蔵不揮発性メモリ1220の保護エリアに格納されたプログラム及びデータは、データバスB1202等から、マイクロコンピュータ1200の外部へ出力されることはない。
以上のように、マイクロコンピュータを、空間判定手段1211を備えたCPU1210と、3個のメモリ領域で構成した内蔵不揮発性メモリ1220と、内蔵不揮発性メモリ1220のメモリ領域数と同数の3ビットのビット幅を持つエリアレジスタ1240と、比較手段1250と、データ無効化手段1260と、アンドゲート1270と、インバータ1275とで構成し、更に、外部メモリ1280に該当するアドレスへ分岐する前に、保護エリアを設定するプログラムを記述することにより、保護エリアに設定したエリア以外の内蔵不揮発性メモリ1220に格納されたプログラム及びデータを、外部メモリ1280に該当するアドレスからでも必要に応じて読み出すことができつつ、不正ユーザが外部メモリ1280を改変して、内蔵不揮発性メモリ1220に格納されたプログラム及びデータを読み出そうと試みても、保護エリアに格納されたデータ及びプログラムを読み出すことができず、セキュリティが向上する。
更に、エリアレジスタ1240の書換え許可と書換え禁止との両者間の切換えを、CPU1210が現在実行しているプログラムが格納されているアドレスに応じて行うので、外部メモリ1280に該当するアドレスへ分岐する前に、エリアレジスタ1240に格納されたデータ書換え禁止の設定をその都度行う必要がなくなり、不正ユーザが外部メモリ1280を改変して、エリアレジスタ1240に格納されたデータを書換えて保護エリアを解除しようとしても、外部メモリ1280に該当するアドレスに格納されたプログラムを実行している限りは、保護エリアを解除できないため、セキュリティが更に向上する。
尚、前記説明において、外部メモリ1280に該当するアドレスへ分岐する場合を例にとって説明したが、エリアレジスタ1240で保護エリアを設定することにより、内蔵揮発性メモリ1230に該当するアドレスへ分岐する場合にも、不正ユーザが内蔵揮発性メモリ1230にプログラムを転送、実行して、内蔵不揮発性メモリ1220に格納されたプログラム及びデータを読み出そうと試みても、保護エリアに格納されたデータは読み出すことができず、セキュリティが向上する。なおかつ、内蔵揮発性メモリ1230に該当するアドレスに格納されているプログラムを実行している限りは、エリアレジスタ1240を書換えて保護エリアを解除できないため、保護エリアに格納されたデータは読み出すことができず、セキュリティが向上する。
また、前記説明において、内蔵不揮発性メモリ1220は均等容量の3個のメモリ領域で構成されているとしたが、内蔵不揮発性メモリ1220はn個(nは1以上の整数)のメモリ領域で構成し、任意のアドレスマッピングであっても良い。
また、前記説明において、データ無効化手段1260は、データ無効化の方法として、内蔵不揮発性メモリ1220から読み出したプログラム及びデータをデータバスB1202に何も出力しないとしたが、リードイネーブル信号S1204に‘1’を出力しない、アドレスバスB1201に該当アドレスを与えない、データバスB1202に任意のデータを出力する、などといった、該当するアドレスに格納されたプログラム及びデータが読み出されない構成であれば良い。
また、前記説明において、空間判定手段1211をCPU1210が備えるとしたが、CPU1210が実行している、保護エリアに格納されたプログラム及びデータを読み出すプログラムが格納されたメモリ領域を判定できる判定手段があれば、CPU1210が備えなくても良い。
(実施形態8)
以下、本発明の第8の実施形態について、図2〜図3、図6、図15〜図17を参照して説明する。
図15は本発明のマイクロコンピュータのブロック図である。同図では、図1及び図9と同一名称のものは、異なる符号を付しているが、同一構成であるので、その説明を省略する。図15において、マイクロコンピュータ1300は、CPU(制御部)1310と、内部不揮発性メモリ1320と、内蔵揮発性メモリ1330と、エリアレジスタ1340と、比較手段1350と、データ無効化手段1360と、二入力一出力のアンドゲート1370と、空間情報保持手段(判定結果記憶手段)1395とによって構成されている。また、前記CPU1310は内部に空間判定手段(判定手段)1311を備えている。1380は前記マイクロコンピュータ1300の外部に接続される外部メモリである。
アドレスバスB1301は、CPU1310と、内蔵不揮発性メモリ1320と、内蔵揮発性メモリ1330と、比較手段1350と、外部メモリ1380とを各々接続する。ここでは説明を簡単にするため、8ビットバス幅とする。データバスB1302は、CPU1310と、内蔵揮発性メモリ1330と、エリアレジスタ1340と、データ無効化手段1360と、外部メモリ1380とを各々接続する。ここでは説明を簡単にするため、4ビットバス幅とする。
また、エリアレジスタライト信号S1303は、CPU1310と、エリアレジスタ1340とを接続する。リードイネーブル信号S1304は、CPU1310と、内蔵不揮発性メモリ1320と、内蔵揮発性メモリ1330と、外部メモリ1380とを各々接続する。ライトイネーブル信号S1305は、CPU1310と、内蔵揮発性メモリ1330とを接続する。ROMバスB1306は、内蔵不揮発性メモリ1320と、データ無効化手段1360とを接続する。外部空間信号S1307は、CPU1310と、空間情報保持手段1395とを接続する。内部空間信号S1308は、CPU1310と、空間情報保持手段1395とを接続する。無効化許可信号S1396は、空間情報保持手段1395と、アンドゲート1370とを接続する。エリア信号S1341は、エリアレジスタ1340と、比較手段1350とを接続する。一致信号S1351は、比較手段1350と、アンドゲート1370とを接続する。無効化信号S1371は、アンドゲート1370と、データ無効化手段1360とを接続する。
内蔵不揮発性メモリ1320は、プログラム及びデータを格納しており、リードイネーブル信号S1304が‘1’であれば、アドレスバスB1301のアドレスに該当するメモリ領域に格納されているプログラム及びデータをROMバスB1306に出力する。また、内蔵不揮発性メモリ1320は、アドレスに応じてn個のエリアに分割されている。ここでは説明を簡単にするため、3個のエリアに分割されているものとする。
図2は、内蔵不揮発性メモリ1320のメモリ領域とアドレスの関係を示す図である。図2で、内蔵不揮発性メモリ1320のメモリ領域は、3つのエリアに分割されており、エリア0はアドレス00Hから1FHまで、エリア1はアドレス20Hから3FHまで、エリア2はアドレス40Hから5FHまでとする。すなわち、エリア0は8ビット幅のアドレスバスB1301の上位3ビットが‘000’の領域、同様にエリア1は上位3ビットが‘001’、エリア2は上位3ビットが‘010’の領域となる。
内蔵揮発性メモリ1330は、プログラム及びデータを格納保持する。リードイネーブル信号S1304が‘1’であれば、アドレスバスB1301のアドレスに該当するメモリ領域に格納されているプログラム及びデータを、データバスB1302に出力する。また、内蔵揮発性メモリ1330は、ライトイネーブル信号S1305が‘1’ならば、データバスB1302のプログラム及びデータを、アドレスバスB1301のアドレスに該当するメモリ領域に格納保持する。
エリアレジスタ1340は、エリアレジスタライト信号S1303が‘1’であれば、データバスB1302のデータを格納保持し、保持したデータをエリア信号S1341に出力する。また、エリアレジスタ1340は、内蔵不揮発性メモリ1320のメモリ領域の個数と同数のビット幅を有しており、各ビットを最上位ビットから各々エリアフラグ2、エリアフラグ1、エリアフラグ0という。また、ここでは説明を簡単にするため、ビット幅を3ビットとし、初期値を‘000’とする。
エリアレジスタ1340の各ビットは、内蔵不揮発性メモリ1320のメモリ領域を構成する各エリアと、各々1対1で対応しており、各ビットがセットされれば、そのビットに対応したエリアは、読み出し保護の対象エリアとなる。例えば、エリアフラグ1がセットされた時はエリア1が読み出し保護の対象エリアとなり、読み出し時に、比較手段1350にてアドレスの比較判定が行われる。
比較手段1350は、アドレスバスB1301のアドレスが、エリアレジスタ1340で設定したエリアに該当するか否かを判定し、判定結果を一致信号S1351に出力する。ここで、比較手段1350の比較機能を、図3を用いて説明する。図3は、比較手段1350の比較機能を説明する図である。図3は左から、エリアレジスタ1340のエリアフラグ2の値、エリアフラグ1の値、エリアフラグ0の値、アドレスバスB1301のビット7の値、ビット6の値、5の値、ビット4の値、一致信号S1351の値である。
例えば、エリアレジスタ1340が出力するエリア信号S1341のデータが‘100’、アドレスバスB1301のアドレスが‘52H’ならば、アドレスの上位4ビットが‘0101’であるため、比較手段1350が出力する一致信号S1351は‘1’となる。また、エリアレジスタ1340が出力するエリア信号S1341のデータが‘100’、アドレスバスB1301のアドレスが‘32H’ならば、アドレスの上位4ビットが‘0011’であるため、一致信号S1351は‘0’となる。このようにして、比較手段1350は、アドレスバスB1301のアドレスが、エリアレジスタ1340で設定した内蔵不揮発性メモリ1320のエリアに該当するか否かを判定し、該当すれば‘1’を、非該当ならば‘0’を一致信号S1351に出力する。
アンドゲート1370は、比較手段1350が出力する一致信号S1351と、後述する空間情報保持手段1395が出力する無効化許可信号S1396との論理積を無効化信号S1371に出力する。すなわち、アンドゲート1370は、無効化許可信号S1396が‘0’の時に、無効化信号S1371に‘0’を出力し、一致信号S1351の値を無効化する。
データ無効化手段1360は、無効化信号S1371が‘1’であれば、内蔵不揮発性メモリ1320からROMバスB1306に出力された読み出しデータを無効化し、データバスB1302に何も出力しない。また、無効化信号S1371が‘0’であれば、内蔵不揮発性メモリ1320からROMバスB1306に出力された読み出しデータを、データバスB1302に乗せ換えて出力する。
外部メモリ1380には、プログラム及びデータが格納されており、リードイネーブル信号S1304が‘1’であれば、アドレスバスB1301のアドレスに該当するアドレスに格納されているプログラム及びデータをデータバスB1302に出力する。
CPU1310は、空間判定手段1311を備えており、空間判定手段1311は、CPU1310が現在実行中のプログラムが、どのメモリに格納されているかを判定し、判定結果を外部空間信号S1307及び内部空間信号S1308に出力する。
ここで、マイクロコンピュータ1300のメモリ空間について、図6を用いて説明する。図6において、マイクロコンピュータ1300のメモリ空間はアドレスに応じて3つの領域に分割されており、アドレス00Hから5FHまでは図2で示される内蔵不揮発性メモリ1320に該当し、同様に、アドレス60Hから7FHまでは内蔵揮発性メモリ1330、アドレス80HからFFHまでは外部メモリ1380に該当する。すなわち、内蔵不揮発性メモリ1320は、8ビット幅のアドレスバスB1301の上位3ビットが‘000’又は‘001’又は‘010’の領域、同様に内蔵揮発性メモリ1330は上位3ビットが‘011’、外部メモリ1380は、最上位ビットが‘1’の領域となる。
以上のようなメモリ空間に対する、空間判定手段1311の空間判定機能を、図16を用いて説明する。図16は空間判定手段1311の空間判定機能を説明する図である。図16は左から、CPU1310が現在実行しているプログラムが格納されているアドレス(以下、実行アドレスという)のビット7の値、ビット6の値、ビット5の値、ビット4の値、該当するメモリ、外部空間信号S1307の値、内部空間信号S1308の値である。例えば、実行アドレスが‘52H’ならば、実行アドレスの上位4ビットが‘0101’であるため、空間判定手段1311が出力する外部空間信号S1307は‘0’、内部空間信号S1308は‘1’となる。また、実行アドレスが‘82H’ならば、実行アドレスの上位4ビットが‘1000’であるため、外部空間信号S1307は‘1’、内部空間信号S1308は‘0’となる。このようにして、空間判定手段1311は、実行アドレスが、マイクロコンピュータ1300のどのメモリのアドレスに該当するか判定し、内蔵不揮発性メモリ1320のアドレスに該当すれば内部空間信号S1308に‘1’を出力し、外部メモリ1380のアドレスに該当すれば、外部空間信号S1307に‘1’を出力する。
また、CPU1310は、アドレスバスB1301に内蔵不揮発性メモリ1320に該当するアドレスを出力すると共に、リードイネーブル信号S1304に‘1’を出力し、順次、内蔵不揮発性メモリ1320に格納されているプログラムを、ROMバスB1306、無効化手段1340を介してデータバスB1302から読み出し、解読した結果に従い各種制御を行う。また、内蔵不揮発性メモリ1320から読み出したプログラムが、内蔵揮発性メモリ1330又は外部メモリ1380への分岐命令である場合には、アドレスバスB1301に内蔵揮発性メモリ1330又は外部メモリ1380の該当するアドレスを出力すると共に、リードイネーブル信号S1304に‘1’を出力し、内蔵揮発性メモリ1330又は外部メモリ1380に格納されているプログラムを、データバスB1302から読み出し、解読した結果に従い各種制御を行う。 また、CPU1310は、ライトイネーブル信号S1305に‘1’、アドレスバスB1301に内蔵揮発性メモリ1330に該当するアドレスを各々出力すると共に、データバスB1302にデータを出力し、内蔵揮発性メモリ1330に任意の値を書込むことができる。また、CPU1310は、データバスB1302にデータを出力すると共にエリアレジスタライト信号S1303に‘1’を出力し、エリアレジスタ1340を任意の値に書き換えることができる。
空間情報保持手段1395は、空間判定手段1311が出力する外部空間信号S1307が‘1’であれば、無効化許可信号S1396に‘1’を出力し、保持する。また、空間判定手段1311が出力する内部空間信号S1308が‘1’であれば、無効化許可信号S1396に‘0’を出力し、保持する。すなわち、空間情報保持手段1395は、実行アドレスが外部メモリ1380に該当していれば‘1’を、内蔵不揮発性メモリ1320に該当すれば‘0’を、内蔵揮発性メモリ1330に該当すれば、分岐前のメモリ領域が外部メモリ1380ならば‘1’を、内蔵不揮発性メモリ1320に該当すれば‘0’を保持している。
以上のように構成された本発明の第8の実施形態による、内蔵不揮発性メモリ1320に格納されたプログラム及びデータ読み出し保護動作について説明する。
内蔵不揮発性メモリ1320を構成する各エリアのうち、不正ユーザに読み出されたくないプログラム及びデータを格納しているなど、読み出し保護の対象にしたいエリア(以下、保護エリアという)を、仮にエリア2として、マイクロコンピュータ1300の動作を図17を用いて説明する。図17は、マイクロコンピュータ1300の各メモリ領域に格納されたプログラムと、内蔵不揮発性メモリ1320の読み出し保護状態をプログラムの実行順に説明する図である。
先ず、(A)のプログラムスタート時、CPU1310は、アドレスバスB1301に、内蔵不揮発性メモリ1320に該当するアドレスを出力すると共に、リードイネーブル信号S1304に‘1’を出力し、内蔵不揮発性メモリ1320に格納されているプログラムを読み出そうとする。この時、空間判定手段1311は、CPU1310が内蔵不揮発性メモリ1320に該当するアドレスに配置されたプログラム(A)を実行中であるため、外部空間信号S1307に‘0’、内部空間信号S1308に‘1’を出力する。空間情報保持手段1395は、外部空間信号S1307が‘0’、内部空間信号S1308が‘1’であるため、無効化許可信号S1396に‘0’を出力し、保持する。また、エリアレジスタ1340が格納するデータの初期値は‘000’であるため、比較手段1350は、エリア信号S1341のデータ‘000’から保護エリアに設定されているエリアがないと判断し、一致信号S1351に‘0’を出力する。アンドゲート1371は、無効化許可信号S1396が‘0’、一致信号S1351が‘0’であるため、無効化信号S1371に‘0’を出力する。データ無効化手段1360は、無効化信号S1371が‘0’であるため、内蔵不揮発性メモリ1320からROMバスB1306に出力されたプログラムを、データバスB1302に乗せ換えて出力する。
このように、CPU1310は順次、内蔵不揮発性メモリ1320の該当アドレスに格納されているプログラムを、ROMバスB1306及びデータ無効化手段1360を介してデータバスB1302から読み出し、解読した結果に従い各種制御を行う。
次に、CPU1310が(B)のプログラムを読み出すと、CPU1310は、内蔵不揮発性メモリ1320のエリア2を保護エリアに設定するように、データバスB1302にデータ‘100’を出力すると共に、エリアレジスタライト信号S1303に‘1’を出力する。エリアレジスタ1340は、データ‘100’を格納保持し、エリア信号S1341にデータ‘100’を出力する。これにより、エリア2が保護エリアに設定される。
次に、CPU1310が(C)のプログラムを読み出すと、内蔵不揮発性メモリ1320のエリア2に格納された後述するプログラム(E)を内蔵揮発性メモリ1330に転送するために、先ず第1の手順として、エリア2に格納されたプログラム(E)を読み出すため、CPU1310は、アドレスバスB1301に、エリア2に該当するアドレスを出力すると共に、リードイネーブル信号S1304に‘1’を出力する。この時、空間判定手段1311は、CPU1310が内蔵不揮発性メモリ1320に該当するアドレスに配置されたプログラム(C)を実行中であるため、外部空間信号S1307に‘0’、内部空間信号S1308に‘1’を出力する。また、比較手段1350は、エリア信号S1341のデータ‘100’から保護エリアがエリア2であると判断し、且つ、アドレスバスB1301のアドレスがエリア2に該当するため、比較手段1350は一致信号S1351に‘1’を出力する。空間情報保持手段1395は、外部空間信号S1307が‘0’、内部空間信号S1308が‘1’であるため、無効化許可信号S1396に‘0’を出力し、保持する。アンドゲート1371は、無効化許可信号S1396が‘0’、一致信号S1351が‘1’であるため、無効化信号S1371に‘0’を出力する。データ無効化手段1360は、無効化手段S1371が‘0’であるため、内蔵不揮発性メモリ1320からROMバスB1306に出力されたプログラムを、データバスB1302に乗せ換えて出力する。
このように、エリアレジスタ1340で保護エリアを設定していても、内蔵不揮発性メモリ1320に格納されたプログラムを実行している限り、無効化許可信号S1396が‘0’であるために、一致信号S1351は無効化され、内蔵不揮発性メモリ1320の保護エリアに格納されたプログラム及びデータを利用することが可能である。
次に、第2の手順として、エリア2から読み出したプログラム(E)を内蔵揮発性メモリ1330に書込むように、CPU1310は、ライトイネーブル信号S1305に‘1’、アドレスバスB1301に内蔵揮発性メモリ1330に該当するアドレスを各々出力すると共に、前述した内蔵不揮発性メモリ1320から読み出したプログラムをデータバスB1302に出力する。内蔵揮発性メモリ1330は、ライトイネーブル信号S1305が‘1’であるため、データバスB1302のプログラムを、アドレスバスB1301のアドレスに該当するメモリ領域に格納保持する。
以上のように、第1、第2の手順を繰り返すことで、内蔵不揮発性メモリ1320のエリア2に格納されたプログラム(E)を、内蔵揮発性メモリ1330へ転送する。
次に、CPU1310が(D)のプログラムを読み出すと、CPU1310は、プログラムの読み出し先をプログラム(C)でプログラムを転送した内蔵揮発性メモリ1330の該当アドレスへと変更し、アドレスバスB1301に該当アドレスを出力すると共に、リードイネーブル信号S1304に‘1’を出力し、順次、内蔵揮発性メモリ1330の該当アドレスに格納されているプログラムをデータバスB1302から読み出し、解読した結果に従い各種制御を行う。
次に、CPU1310が前記プログラム(C)で内蔵揮発性メモリ1330に転送した(E)のプログラムを読み出すと、CPU1310は、アドレスバスB1301に、内蔵不揮発性メモリ1320のエリア2に該当するアドレスを出力すると共に、リードイネーブル信号S1304に‘1’を出力する。この時、空間判定手段1311は、CPU1310が内蔵不揮発性メモリ1320に該当するアドレスに配置されたプログラム(E)を実行中であるため、外部空間信号S1307に‘0’、内部空間信号S1308に‘0’を出力する。空間情報保持手段1395は、外部空間信号S1307が‘0’、内部空間信号S1308が‘0’であるため、前値‘0’を保持し続け、無効化許可信号S1396に‘0’出力し続ける。比較手段1350は、エリア信号S1341のデータ‘100’から保護エリアがエリア2であると判断し、且つ、アドレスバスB1301のアドレスがエリア2に該当するため、比較手段1350は一致信号S1351に‘1’を出力する。アンドゲート1371は、無効化許可信号S1396が‘0’、一致信号S1351が‘1’であるため、無効化信号S1371に‘0’を出力する。データ無効化手段1360は、無効化信号S1371が‘0’であるため、内蔵不揮発性メモリ1320からROMバスB1306に出力されたプログラム及びデータを、データバスB1302に乗せ換えて、出力する。
このように、エリアレジスタ1340で保護エリアを設定していても、内蔵不揮発性メモリ1320に格納されたプログラムを実行して、内蔵揮発性メモリ1330に該当するアドレスへ分岐しても、内蔵揮発性メモリ1330に格納されたプログラムを実行している限り、空間情報保持手段1360は無効化許可信号S1396を‘0’に保持するため、一致信号S1351は無効化され、内蔵不揮発性メモリ1320の保護エリアに格納されたプログラム及びデータを利用することが可能である。
ここで、例えば、内蔵不揮発性メモリ1320がフラッシュメモリに代表される書換え可能な不揮発性メモリの場合を考える。書換え可能な不揮発性メモリでは、データの書換え方法の1つとして、ユーザセットに実装した状態で書換え可能な、外部からシリアルデータを入力して書換えを行う方法が取られている。この方法では、内蔵不揮発性メモリ1320に格納された書換えプログラムを内蔵揮発性メモリ1330に転送し、転送したプログラムを実行して内蔵不揮発性メモリ1320の書換えを行う。この時、書換えが正常に完了しているか否かを確認するために、内蔵揮発性メモリ1330に転送したプログラムを実行して、内蔵不揮発性メモリ1320に格納されたプログラム及びデータを読み出す必要がある。従来の技術では、内蔵揮発性メモリ1330に格納されたプログラムを実行して内蔵不揮発性メモリ1320に格納されたプログラム及びデータを読み出すことは常に禁止されていたが、本発明によれば、前記説明のように、内蔵不揮発性メモリ1320に格納されたプログラムを実行することによって内蔵揮発性メモリ1330に該当するアドレスへ分岐した場合は、内蔵不揮発性メモリ1320の保護エリアに格納されたプログラム及びデータを利用することが可能である。
次に、CPU1310が(F)のプログラムを読み出すと、CPU1310は、プログラムの読み出し先を外部メモリ1380の該当アドレスへと変更し、アドレスバスB1301に該当アドレスを出力すると共に、リードイネーブル信号S1304に‘1’を出力し、順次、外部メモリ1380の該当アドレスに格納されているプログラムをデータバスB1302から読み出し、解読した結果に従い各種制御を行う。
ここで、不正ユーザが、外部メモリ1380に格納されたプログラムを改変して、プログラム(F)に続く(G)のプログラムを下記(G1)〜(G3)の3つのプログラムに変更したとする。
(G1)外部メモリ1380に格納された後述するプログラム(G3)を、内蔵揮発性メモリ1330に転送するプログラム
(G2)プログラム(G1)を転送した先の内蔵揮発性メモリ1320に該当アドレスへ分岐するプログラム
(G3)内蔵揮発性メモリ1330のエリア2に該当するアドレスに格納されたプログラム及びデータを読み出し、読み出したプログラム及びデータを外部メモリ1380に該当するアドレスに出力するプログラム
この時のプログラム(A)〜(F)のマイクロコンピュータ1300の動作は、前述した動作と同じである。
次に、CPU1310が、改変された(G1)のプログラムを読み出すと、外部メモリ1380に格納されたプログラム(G3)を内蔵揮発性メモリ1330に転送するように、先ず、CPU1310は、アドレスバスB1301に、プログラム(G3)が格納された外部メモリ1380に該当するアドレスを出力すると共に、リードイネーブル信号S1304に‘1’を出力し、外部メモリ1380の該当アドレスに格納されているプログラム(G3)をデータバスB1302から読み出す。
次に、読み出したプログラム(G3)を内蔵揮発性メモリ1330に書込むように、CPU1310は、ライトイネーブル信号S1305に‘1’、アドレスバスB1301に内蔵揮発性メモリ1330に該当するアドレスを各々出力すると共に、前述した内蔵不揮発性メモリ1320から読み出したプログラムをデータバスB1302に出力する。内蔵揮発性メモリ1330は、ライトイネーブル信号S1305が‘1’であるため、データバスB1302のプログラムを、アドレスバスB1301のアドレスに該当するメモリ領域に格納保持する。
以上を繰り返すことにより、外部メモリ1380に格納されたプログラム(G3)を内蔵揮発性メモリ1330へ転送する。
次に、CPU1310が、改変された(G2)のプログラムを読み出すと、CPU1310は、プログラムの読み出し先をプログラム(G3)が転送された内蔵揮発性メモリ1330の該当アドレスへと変更し、アドレスバスB1301に該当アドレスを出力すると共に、リードイネーブル信号S1304に‘1’を出力する。この時、空間判定手段1311は、CPU1310が内蔵不揮発性メモリ1320に該当するアドレスに配置されたプログラム(G2)を実行中であるため、外部空間信号S1307に'1'、内部空間信号S1308に'0'を出力する。空間情報保持手段1395は、外部空間信号S1307が'1'、内部空間信号S1308が'0'であるため、無効化許可信号S1396に'1'を出力し保持する。
以降、順次、内蔵揮発性メモリ1330の該当アドレスに格納されているプログラム(G3)をデータバスB1302から読み出し、解読した結果に従い各種制御を行う。
CPU1310が、内蔵揮発性メモリ1330に転送されたプログラム(G3)を読み出すと、CPU1310は、アドレスバスB1301に、エリア2に該当するアドレスを出力すると共に、リードイネーブル信号S1304に‘1’を出力する。この時、空間判定手段1311は、CPU1310が内蔵不揮発性メモリ1320に該当するアドレスに転送されたプログラム(G3)を実行中であるため、外部空間信号S1307に‘0’、内部空間信号S1308に‘0’を出力する。空間情報保持手段1395は、外部空間信号S1307が‘0’、内部空間信号S1308が‘0’であるため、前値‘1’を保持し続け、無効化許可信号S1396に‘1’出力し続ける。また、比較手段1350は、エリア信号S1341のデータ‘100’から保護エリアがエリア2であると判断し、且つ、アドレスバスB1301のアドレスがエリア2に該当するため、比較手段1350は一致信号S1351に‘1’を出力する。アンドゲート1371は、無効化許可信号S1396が‘1’、一致信号S1351が‘1’であるため、無効化信号S1371に‘1’を出力する。データ無効化手段1360は、無効化信号S1371が‘1’であるため、内蔵不揮発性メモリ1320からROMバスB1306に出力されたプログラム及びデータを、データバスB1302に出力しない。
このように、外部メモリ1380に格納されたプログラムにより、内蔵揮発性メモリ1330に該当するアドレスへ分岐した場合は、内蔵揮発性メモリ1330に格納されたプログラムを実行している限り、無効化許可信号S1396が‘1’を出力し続けて一致信号S1351を有効にするので、内蔵不揮発性メモリ1020の保護エリアに格納されたプログラム及びデータは、データバスB1302等から、マイクロコンピュータ1300の外部へ出力されることはない。
以上のように、マイクロコンピュータを、空間判定手段1311を備えたCPU1310と、3個のメモリ領域で構成した内蔵不揮発性メモリ1320と、内蔵不揮発性メモリ1320のメモリ領域数と同数の3ビットのビット幅を持つエリアレジスタ1340と、比較手段1350と、データ無効化手段1360と、アンドゲート1370と、空間情報保持手段1395で構成し、更に、保護エリアを設定するプログラムを記述することにより、内蔵不揮発性メモリ1320に格納されたプログラムを実行して、内蔵揮発性メモリ1330に該当するアドレスへ分岐した時は、内蔵揮発性メモリ1330に格納されたプログラムを実行している限り、無効化許可信号S1396によって一致信号S1351を無効化することにより、内蔵不揮発性メモリ1320の保護エリアに格納されたプログラム及びデータを利用することができる。これにより、内蔵不揮発性メモリ1320に格納されたプログラムによって、内蔵揮発性メモリ1330に該当するアドレスへ分岐する前に、保護エリアの設定解除を行う必要はない。
尚、前記説明において、内蔵不揮発性メモリ1320は均等容量の3個のメモリ領域で構成されているとしたが、内蔵不揮発性メモリ1320はn個(nは1以上の整数)のメモリ領域で構成し、任意のアドレスマッピングであっても良い。
また、前記説明において、データ無効化手段1360は、データ無効化の方法として、内蔵不揮発性メモリ1320から読み出したプログラム及びデータをデータバスB1302に何も出力しないとしたが、リードイネーブル信号S1304に‘1’を出力しない、アドレスバスB1301に該当アドレスを与えない、データバスB1302に任意のデータを出力する、などといった、該当するアドレスに格納されたプログラム及びデータが読み出されない構成であれば良い。
また、前記説明において、空間判定手段1311をCPU1310が備えるとしたが、CPU1310が実行している、保護エリアに格納されたプログラム及びデータを読み出すプログラムが格納されたメモリ領域を判定できる判定手段があれば、CPU1310が備えなくても良い。
(実施形態9)
以下、本発明の第9の実施形態について、図6、図10、図18〜図20を参照して説明する。
図18は本発明のマイクロコンピュータのブロック図である。同図では、図1と同一名称のものは、異なる符号を付しているが、同一構成であるので、その説明を省略する。図18において、マイクロコンピュータ1400は、CPU(制御部)1410と、内部不揮発性メモリ1420と、内蔵揮発性メモリ1430と、データ無効化手段1460と、ダイレクトメモリアクセスコントローラ1490(以下、DMACという)とによって構成されている。また、前記CPU1410は内部に空間判定手段(判定手段)1411を備えている。1480は前記マイクロコンピュータ1400の外部に接続される外部メモリである。
アドレスバスB1401は、CPU1410と、内蔵不揮発性メモリ1420と、内蔵揮発性メモリ1430と、外部メモリ1480と、DMAC(ダイレクトメモリアクセス手段)1490とを各々接続する。ここでは説明を簡単にするため、8ビットバス幅とする。データバスB1402は、CPU1410と、内蔵揮発性メモリ1430と、データ無効化手段1460と、外部メモリ1480と、DMAC1490とを各々接続する。ここでは説明を簡単にするため、4ビットバス幅とする。リードイネーブル信号S1404は、CPU1410と、内蔵不揮発性メモリ1420と、内蔵揮発性メモリ1430と、外部メモリ1480と、DMAC1490とを各々接続する。ライトイネーブル信号S1405は、CPU1410と、内蔵揮発性メモリ1430と、DMAC1490とを各々接続する。ROMバスB1406は、内蔵不揮発性メモリ1420と、データ無効化手段1460とを接続する。
更に、空間信号S1407は、CPU1410と、DMAC1490とを接続する。ソースレジスタライト信号S1408は、CPU1410と、DMAC1490とを接続する。ディストレジスタライト信号S1409は、CPU1410と、DMAC1490とを接続する。ソース信号S1497は、DMAC1490と、データ無効化手段1460とを接続する。DMA起動信号S1498は、マイクロコンピュータ1400の外部から、DMAC1490に入力される。DMAアクティブ信号S1494は、CPU1410と、DMAC1490とを接続する。
内蔵不揮発性メモリ1420は、プログラム及びデータを格納しており、リードイネーブル信号S1404が‘1’であれば、アドレスバスB1401のアドレスに該当するメモリ領域に格納されているプログラム及びデータをROMバスB1406に出力する。
内蔵揮発性メモリ1430は、プログラム及びデータを格納保持する。リードイネーブル信号S1404が‘1’であれば、アドレスバスB1401のアドレスに該当するメモリ領域に格納されているプログラム及びデータを、データバスB1402に出力する。また、内蔵揮発性メモリ1430は、ライトイネーブル信号S1405が‘1’ならば、データバスB1402のプログラム及びデータを、アドレスバスB1401のアドレスに該当するメモリ領域に格納保持する。
DMAC1490は、DMA起動信号S1498が‘1’になれば、ソースレジスタ1491に格納されたアドレスに該当するメモリ領域から、後述するディストレジスタ1492に格納されたアドレスに該当するメモリ領域へ、CPU1410を介さずにプログラム及びデータを転送するダイレクトメモリアクセスコントローラである。
DMAC1490は、プログラム及びデータを読み出すアドレスを格納するソースレジスタ1491と、プログラム及びデータを書き込む先のアドレスを格納するディストレジスタ1492と、ソースレジスタ1491を書き換えた時にCPU1410が実行しているプログラムが格納されているアドレス情報を格納する空間レジスタ(判定結果記憶手段)1493を備えている。
DMAC1490は、ソースレジスタライト信号S1408が‘1’ならば、データバスB1402のデータを、ソースレジスタ1491に格納保持すると同時に、後述する空間判定手段1411が出力する空間信号S1407のデータを、空間レジスタ1493に格納する。空間レジスタ1493が格納するデータの初期値は‘0’とする。
また、DMAC1490は、ディストレジスタライト信号S1409が‘1’ならば、データバスB1402のデータを、ディストレジスタ1491に格納保持する。
更に、DMAC1490は、マイクロコンピュータ1400の外部から入力されるDMA起動信号S1498が‘1’になれば、空間レジスタ1493に格納されたデータをソース信号S1497に出力し、DMAアクティブ信号S1494に‘1’を出力する。
次に、DMAC1490は、ソースレジスタ1491に格納されたアドレスをアドレスバスB1401に出力すると共に、リードイネーブル信号S1404に‘1’を出力し、該当アドレスに格納されたプログラム及びデータをデータバスB1402から読み出す。
続いて、DMAC1490は、読み出したプログラム及びデータをデータバスB1402に出力し、ディストレジスタ1492に格納されたアドレスをアドレスバスB1401に出力すると共に、ライトイネーブル信号S1405に‘1’を出力し、該当アドレスにデータを書き込む。書き込みが完了するとソース信号S1497に‘0’、DMAアクティブ信号S1494に‘0’を出力する。
データ無効化手段1460は、ソース信号S1497が‘1’であれば、内蔵不揮発性メモリ1420からROMバスB1406に出力された読み出しデータを無効化し、データバスB1402に何も出力しない。また、ソース信号S1497が‘0’であれば、内蔵不揮発性メモリ1420からROMバスB1406に出力された読み出しデータを、データバスB1402に乗せ換えて出力する。
外部メモリ1480は、プログラム及びデータが格納されており、リードイネーブル信号S1404が‘1’であれば、アドレスバスB1401のアドレスに該当するアドレスに格納されているプログラム及びデータをデータバスB1402に出力する。
CPU1410は、空間判定手段1411を備えており、空間判定手段1411は、CPU1410が現在実行中のプログラムが、どのメモリに格納されているかを判定し、判定結果を外部空間信号S1407及び空間信号S1408に出力する。
ここで、マイクロコンピュータ1400のメモリ空間について、図6を用いて説明する。図6で、マイクロコンピュータ1400のメモリ空間はアドレスに応じて3つの領域に分割されており、アドレス00Hから5FHまでは内蔵不揮発性メモリ1420に該当し、同様に、アドレス60Hから7FHまでは内蔵揮発性メモリ1430、アドレス80HからFFHまでは外部メモリ1480に該当する。すなわち、内蔵不揮発性メモリ1420は、8ビット幅のアドレスバスB1401の上位3ビットが‘000’又は‘001’又は‘010’の領域、同様に内蔵揮発性メモリ1430は上位3ビットが‘011’、外部メモリ1480は、最上位ビットが‘1’の領域となる。
以上のようなメモリ空間に対する、空間判定手段1411の空間判定機能を、図10を用いて説明する。図10は空間判定手段1411の空間判定機能を説明する図である。図10は左から、CPU1410が現在実行しているプログラムが格納されているアドレス(以下、実行アドレスという)のビット7の値、ビット6の値、ビット5の値、ビット4の値、該当するメモリ、空間信号S1407の値である。例えば、実行アドレスが‘52H’ならば、実行アドレスの上位4ビットが‘0101’であるため、空間判定手段1411が出力する空間信号S1407は‘0’となる。また、実行アドレスが‘82H’ならば、実行アドレスの上位4ビットが‘1000’であるため、空間信号S1407は‘1’となる。このようにして、空間判定手段1411は、実行アドレスが、マイクロコンピュータ1400のどのメモリのアドレスに該当するか判定し、内蔵不揮発性メモリ1420のアドレスに該当すれば‘0’を、非該当ならば‘1’を空間信号S1407に出力する。
また、CPU1410は、DMAアクティブ信号S1494が‘0’であれば、後述する各種制御を実行し、DMAアクティブ信号S1494が‘1’であれば、各種制御を停止する。
更に、CPU1410は、アドレスバスB1401に内蔵不揮発性メモリ1420に該当するアドレスを出力すると共に、リードイネーブル信号S1404に‘1’を出力し、順次、内蔵不揮発性メモリ1420に格納されているプログラムを、ROMバスB1406、無効化手段1440を介してデータバスB1402から読み出し、解読した結果に従い各種制御を行う。また、内蔵不揮発性メモリ1420から読み出したプログラムが、内蔵揮発性メモリ1430又は外部メモリ1480への分岐命令である場合には、アドレスバスB1401に内蔵揮発性メモリ1430又は外部メモリ1480の該当するアドレスを出力すると共に、リードイネーブル信号S1404に‘1’を出力し、内蔵揮発性メモリ1430又は外部メモリ1480に格納されているプログラムを、データバスB1402から読み出し、解読した結果に従い各種制御を行う。
また、CPU1410は、ライトイネーブル信号S1405に‘1’、アドレスバスB1401に内蔵揮発性メモリ1430に該当するアドレスを各々出力すると共に、データバスB1402にデータを出力し、内蔵揮発性メモリ1430に任意の値を書込むことができる。また、CPU1410は、データバスB1402にデータを出力すると共にエリアレジスタライト信号S1403に‘1’を出力し、エリアレジスタ1440を任意の値に書き換えることができる。また、CPU1410は、データバスB1402にデータを出力すると共にソースレジスタライト信号S1408に‘1’を出力して、ソースレジスタ1491を任意の値に書き換えることができる。また、CPU1410は、データバスB1402にデータを出力すると共にディストレジスタライト信号S1409に‘1’を出力して、ディストレジスタ1491を任意の値に書き換えることができる。
以上のように構成された本発明の第9の実施形態において、内蔵不揮発性メモリ1420に格納されたプログラム及びデータ読み出し保護動作について、マイクロコンピュータ1400の動作を図19〜図20を用いて説明する。
図19は、マイクロコンピュータ1400の各メモリ領域に格納されたプログラムをプログラムの実行順に説明する図である。図19において、先ず、(A)のプログラムスタート時、CPU1410は、アドレスバスB1401に、内蔵不揮発性メモリ1420に該当するアドレスを出力すると共に、リードイネーブル信号S1404に‘1’を出力し、内蔵不揮発性メモリ1420に格納されているプログラムを読み出そうとする。また、DMAC1490は起動していないためソース信号S1497に‘0’を出力する。データ無効化手段1460は、ソース信号S1497が‘0’であるため、内蔵不揮発性メモリ1420からROMバスB1406に出力されたプログラムを、データバスB1402に乗せ換えて出力する。
このように、CPU1410は順次、内蔵不揮発性メモリ1420の該当アドレスに格納されているプログラムを、ROMバスB1406及びデータ無効化手段1460を介してデータバスB1402から読み出し、解読した結果に従い各種制御を行う。
次に、CPU1410が(B)のプログラムを読み出すと、先ず、ソースレジスタ1491に内蔵不揮発性メモリ1420に該当するアドレスを書き込むように、CPU1410は、データバスB1402に内蔵不揮発性メモリ1420に該当するアドレスを出力すると共に、ソースレジスタライト信号S1408に‘1’を出力する。この時、空間判定手段1411は、CPU1410が内蔵不揮発性メモリ1420に該当するアドレスに配置されたプログラム(B)を実行中であるため、空間信号S1407に‘0’を出力する。DMAC1490は、ソースレジスタライト信号S1408が‘1’であるため、データバスB1402に出力されている内蔵不揮発性メモリ1420に該当するアドレスをソースレジスタ1491に格納保持すると同時に、空間レジスタ1493に空間信号S1407のデータ‘0’を格納保持する。また、DMAC1490は起動していないため、ソース信号S1497に‘0’を出力する。
次に、ディストレジスタ1492に内蔵揮発性メモリ1430に該当するアドレスを書き込むように、CPU1410は、データバスB1402に内蔵揮発性メモリ1430に該当するアドレスを出力すると共に、ディストレジスタライト信号S1409に‘1’を出力する。DMAC1490は、ディストレジスタライト信号S1409が‘1’であるため、ディストレジスタ1492にデータバスB1402に出力されている内蔵揮発性メモリ1430に該当するアドレスを格納、保持する。
次に、プログラム(C)のタイミングでDMAC1490を起動するように、マイクロコンピュータ1400の外部からDMA起動信号S1498に‘1’を入力する。DMAC1490は、DMA起動信号S1498が‘1’であるため、空間レジスタ1493のデータ‘0’をソース信号S1497に出力し、DMAアクティブ信号S1494に‘1’を出力する。CPU1410は、DMAアクティブ信号S1494が‘1’であるため、各種制御を停止する。
次に、DMAC1490は、アドレスバスB1401に、ソースレジスタ1491に格納された内蔵不揮発性メモリ1420に該当するアドレスを出力すると共に、リードイネーブル信号S1404に‘1’を出力する。データ無効化手段1460は、ソース信号S1497が‘0’であるため、内蔵不揮発性メモリ1420からROMバスB1406に出力されたプログラム及びデータを、データバスB1402に乗せ換えて、出力する。
次に、DMAC1490は、ライトイネーブル信号S1405に‘1’、アドレスバスB1401に、ディストレジスタ1492に格納された内蔵揮発性メモリ1430に該当するアドレスを出力すると共に、不揮発性メモリ1420に該当するアドレスから読み出したプログラム及びデータをデータバスB1402に出力する。内蔵揮発性メモリ1430は、ライトイネーブル信号S1405が‘1’であるため、データバスB1402のプログラム及びデータを、アドレスバスB1401のアドレスに該当するメモリ領域に格納、保持する。
以上を繰り返すことにより、内蔵不揮発性メモリ1420に格納されたプログラム及びデータを内蔵揮発性メモリ1430に転送する。
次に、プログラム及びデータ転送が完了すれば、DMAC1490は、DMAアクティブ信号として‘0’を出力する。CPU1410は、DMAアクティブ信号S1494が‘0’であるため、各種制御を再開する。
次に、CPU1410が(D)のプログラムを読み出すと、CPU1410は、プログラムの読み出し先を外部メモリ1480の該当アドレスへと変更し、アドレスバスB1401に該当アドレスを出力すると共に、リードイネーブル信号S1404に‘1’を出力し、順次、外部メモリ1480の該当アドレスに格納されているプログラムをデータバスB1402から読み出し、解読した結果に従い各種制御を行う。
続いて、CPU1410が(E)のプログラムを読み出すと、CPU1410は、プログラムの読み出し先を内蔵不揮発性メモリ1420の該当アドレスへと変更し、アドレスバスB1401に該当アドレスを出力すると共に、リードイネーブル信号S1404に‘1’を出力し、順次、内蔵不揮発性メモリ1420の該当アドレスに格納されているプログラムをデータバスB1402から読み出し、解読した結果に従い各種制御を行う。
ここで、不正ユーザが外部メモリ1480に格納されたプログラムを改変し、内蔵不揮発性メモリ1420に該当するアドレスに格納されたプログラム及びデータを読み出そうとした場合の、マイクロコンピュータ1400の動作を図20を用いて説明する。図20は、図19のプログラム(E)を不正ユーザが改変した場合の、マイクロコンピュータ1400の各メモリ領域に格納されたプログラムをプログラムの実行順に説明する図である。
不正ユーザが(E)のプログラムを下記(E1)及び(E2)の2つのプログラムに改変したとする。
(E1)内蔵不揮発性メモリ1420に該当するアドレスに格納されたプログラム及びデータを、外部メモリ1480に該当するアドレスへ転送するように、DMAC1490を設定するプログラム
(E2)内蔵不揮発性メモリ1420へ分岐するプログラム
また、不正ユーザは、CPU1410がプログラム(E2)を実行し、プログラムの読み出しを内蔵不揮発性メモリ1420に該当するアドレスに変更した後の(F)のタイミングにおいて、DMAC1490を起動するように、DMA起動信号S1499に‘1’を入力したとする。
この時のプログラム(A)〜(D)のマイクロコンピュータ1400の動作は、前述した動作と同じである。
次に、CPU1410が、改変された(E1)のプログラムを読み出すと、先ず、ソースレジスタ1491に内蔵不揮発性メモリ1420に該当するアドレスを書き込むように、CPU1410は、データバスB1402に内蔵不揮発性メモリ1420に該当するアドレスを出力すると共に、ソースレジスタライト信号S1408に‘1’を出力する。この時、空間判定手段1411は、CPU1410が外部メモリ1480に該当するアドレスに配置された改変されたプログラム(E1)を実行中であるため、空間信号S1407に‘1’を出力する。DMAC1490は、ソースレジスタライト信号S1408が‘1’であるため、データバスB1402に出力されている内蔵不揮発性メモリ1420に該当するアドレスをソースレジスタ1491に格納、保持すると同時に、空間レジスタ1493に空間信号S1407のデータ‘1’を格納保持する。また、DMAC1490は起動していないため、ソース信号S1497に‘0’を出力する。
次に、ディストレジスタ1492に、外部メモリ1480に該当するアドレスを書き込むように、CPU1410は、データバスB1402に外部メモリ1480に該当するアドレスを出力すると共に、ディストレジスタライト信号S1409に‘1’を出力する。DMAC1490は、ディストレジスタライト信号S1409が‘1’であるため、ディストレジスタ1492にデータバスB1402に出力されている外部メモリ1480に該当するアドレスを格納保持する。
続いて、CPU1410が、改変された(E2)のプログラムを読み出すと、CPU1410は、プログラムの読み出し先を内蔵不揮発性メモリ1420の該当アドレスへと変更し、アドレスバスB1401に該当アドレスを出力すると共に、リードイネーブル信号S1404に‘1’を出力し、順次、内蔵不揮発性メモリ1420の該当アドレスに格納されているプログラムをデータバスB1402から読み出し、解読した結果に従い各種制御を行う。
次に、(F)のプログラムにおいて、DMAC1490を起動するために、マイクロコンピュータ1400の外部からDMA起動信号S1498に‘1’を入力する。DMAC1490は、DMA起動信号S1498が‘1’であるため、空間レジスタ1493のデータ‘1’をソース信号S1497に出力し、DMAアクティブ信号S1494に‘1’を出力する。CPU1410は、DMAアクティブ信号S1494が‘1’であるため、各種制御を停止する。
次に、DMAC1490は、アドレスバスB1401に、ソースレジスタ1491に格納された、内蔵不揮発性メモリ1420に該当するアドレスを出力すると共に、リードイネーブル信号S1404に‘1’を出力する。データ無効化手段1460は、ソース信号S1497が‘1’であるため、内蔵不揮発性メモリ1420からROMバスB1406に出力されたプログラム及びデータを、データバスB1402に出力しない。
このように、外部メモリ1480に該当するアドレスに配置されたプログラムにより、DMAC1490のソースレジスタ1491を書換えた場合は、ソース信号S1497が‘1’を出力してデータ無効化手段1460を有効にするので、内蔵不揮発性メモリ1420に格納されたプログラム及びデータは、マイクロコンピュータ1400の外部へ出力されることはない。
以上のように、マイクロコンピュータを、空間判定手段1411を備えたCPU1410と、内蔵不揮発性メモリ1420と、データ無効化手段1460と、空間レジスタ1493を備えたDMAC1490で構成することにより、不正ユーザが外部メモリ1480を改変し、DMAC1490を利用して内蔵不揮発性メモリ1420に格納されたプログラム及びデータの読み出しを試みても、外部メモリ1480に該当するアドレスに配置されたプログラムでDMAC1490を設定する限り、内蔵不揮発性メモリ1420に格納されたプログラム及びデータを読み出すことができず、セキュリティが向上する。
尚、前記説明において、外部メモリ1480に該当するアドレスへ分岐する場合を例にとって説明したが、内蔵揮発性メモリ1430に該当するアドレスへ分岐する場合も、不正ユーザが内蔵揮発性メモリ1430にプログラムを転送、実行して、DMAC1490を介して内蔵不揮発性メモリ1420に格納されたプログラム及びデータを読み出そうと試みても、内蔵不揮発性メモリ1420に格納されたデータは読み出すことができず、セキュリティが向上する。
尚、内蔵不揮発性メモリ1420は、任意のアドレスマッピングであっても良いのは勿論である。
また、前記説明において、データ無効化手段1460は、データ無効化の方法として、内蔵不揮発性メモリ1420から読み出したプログラム及びデータをデータバスB1402に何も出力しないとしたが、リードイネーブル信号S1404に‘1’を出力しない、アドレスバスB1401に該当アドレスを与えない、データバスB1402に任意のデータを出力する、などといった、該当するアドレスに格納されたプログラム及びデータが読み出されない構成であれば良い。
更に、前記説明において、空間判定手段1411をCPU1410が備えるとしたが、CPU1410が実行しているプログラムが格納されたメモリ領域を判定できる判定手段があれば、CPU1410が備えなくても良い。
また、前記説明において、DMAC1490の起動要因として、マイクロコンピュータ1400外部からDMA起動信号S1498を入力する構成としたが、CPU1410が実行するプログラム要因以外であれば良い。
以上説明したように、本発明のマイクロコンピュータによれば、内蔵不揮発性メモリ内の記憶領域に読み出し不許可領域を設定して、その不許可領域以外の記憶領域に格納されたプログラムやデータを外部メモリ又は内蔵揮発性メモリ内のプログラムから必要に応じて読み出すことを可能にしつつ、不正ユーザが前記不許可領域に格納された秘匿が必要なプログラムやデータを読み出そうと試みても、その読み出しを不可能にできるので、セキュリティを向上したマイクロコンピュータ等として有用である。
本発明の第1の実施形態におけるマイクロコンピュータの構成を示すブロック図である。 同マイクロコンピュータに備える内蔵不揮発性メモリのメモリ領域の割り当て構成を示す図である。 同マイクロコンピュータに備える比較手段の動作を説明する図である。 同マイクロコンピュータの動作を説明する図である。 本発明の第2の実施形態におけるローダ・リンカの動作を説明する図である。 同実施形態でのマイクロコンピュータのメモリ空間を説明する図である。 本発明の第3の実施形態における言語処理系の動作を説明する図である。 同言語処理系での言語例を示す図である。 本発明の第5の実施形態におけるマイクロコンピュータの構成を示すブロック図である。 同マイクロコンピュータに備える空間判定手段の動作を説明する図である。 同マイクロコンピュータの動作を説明する図である。 本発明の第6の実施形態におけるマイクロコンピュータの構成を示すブロック図である。 同マイクロコンピュータの動作を説明する図である。 本発明の第7の実施形態におけるマイクロコンピュータの構成を示すブロック図である。 本発明の第8の実施形態におけるマイクロコンピュータの構成を示すブロック図である。 同マイクロコンピュータに備える空間判定手段の動作を説明する図である。 同マイクロコンピュータの動作を説明する図である。 本発明の第9の実施形態におけるマイクロコンピュータの構成を示すブロック図である。 同マイクロコンピュータの正常動作を説明する図である。 同マイクロコンピュータにおいて不正ユーザが外部メモリのプログラムを改変した場合の動作を説明する図である。
符号の説明
100、1000、1100、1200、1300、1400 マイクロコンピュータ
110、1010、1110、1210、1310、1410 CPU(制御部)
120、1020、1120、1220、1320、1420 内蔵不揮発性メモリ
130、1030、1130、1230、1330、1430 内蔵揮発性メモリ
140、1040、1140、1240、1340 エリアレジスタ(保護領域記憶手段)
150、1050、1150、1250、1350 比較手段
160、1060、1160、1260、1360、1460 データ無効化手段
180、1080、1180、1280、1380、1480 外部メモリ
610、708 ローダ・リンカ
702 前処理系
704 コンパイラ
706 アッセンブラ
1190 キーコード比較手段(認証手段)
1011、1111、1211、1311、1411 空間判定手段(判定手段)
1070、1170、1270、1370 二入力一出力アンドゲート
1395 空間情報保持手段(判定結果記憶手段)
1275 インバータ
1490 DMAC(ダイレクトメモリアクセス手段)
1491 ソースレジスタ
1492 ディストレジスタ
1493 空間レジスタ(判定結果記憶手段)
B101、B1001、B1101、
B1201、B1301、B1401 アドレスバス
B102、B1002、B1102、
B1202、B1302、B1402 データバス
S103、S1003、S1103、
S1203、S1303 エリアレジスタライト信号
S104、S1004、S1104、
S1204、S15043S1404 リードイネーブル信号
S105、S1005、S1105、
S1205、S1305、S1405 ライトイネーブル信号
B106、B1006、B1106、
B1206、B1306、B1406 ROMバス
S141、S1041、S1141、S1241、S1341 エリア信号
S151、S1051、S1151、S1251、S1351 一致信号
S1007、S1107、S1207 空間信号
S151、S1071、S1371、S1471 無効化信号
S1109 キーコード比較信号
S1171、S1271 書換え許可信号
S1191 キーコード一致信号
S1277 反転空間信号
S1307 外部空間信号
S1308 内部空間信号
S1396 無効化許可信号
S1408 ソースレジスタライト信号
S1409 ディストレジスタライト信号
S1494 DMAアクティブ信号
S1497 ソース信号
S1498 DMA起動信号

Claims (11)

  1. プログラム及びデータを格納する1個又は複数個の記憶領域を有する不揮発性メモリと、
    前記不揮発性メモリの各記憶領域毎にデータの読み出しを許可するか否かを記憶する保護領域記憶手段と、
    現在アクセスされる前記不揮発性メモリの記憶領域が前記保護領域記憶手段が記憶する読み出し不許可領域と一致するか否かを比較する比較手段と、
    前記比較手段の比較結果を受け、この比較結果が一致であるとき、前記不揮発性メモリの記憶領域から読み出されるプログラム又はデータを無効化するデータ無効化手段と、
    前記不揮発性メモリにアクセスし、この不揮発性メモリが格納するプログラム又はデータを前記データ無効化手段を介して読み出す制御部とを備えた
    ことを特徴とするマイクロコンピュータ。
  2. 請求項1記載のマイクロコンピュータにおいて、
    他のプログラム及びデータを格納する前記不揮発性メモリ以外のメモリを備え、
    前記制御部は、
    アクセスが前記不揮発性メモリ以外のメモリに分岐する前に、前記不揮発性メモリの記憶領域のうち所定の記憶領域を読み出し不許可領域として前記保護領域記憶手段に設定するシーケンス制御を行う
    ことを特徴とするマイクロコンピュータ。
  3. 請求項1記載のデータ無効化手段として、プログラム又はデータの無効化を設定する命令を作成すると共に、少なくとも1つの再配置可能な機械語プログラムを読み込んで、再配置可能な番地を変更する機能を有するローダ・リンカにおいて、
    制御転移命令を検出する機能と、
    前記制御転移命令を検出する機能が抽出した制御転移先空間を外部空間であると判定する機能と、
    前記制御転移命令の前に、前記データ無効化手段としてプログラム又はデータの無効化を設定する命令を挿入する機能とを備え、
    前記読み込んだ再配置可能な機械語プログラム中の制御転移命令の転移先が外部空間であるとき、前記制御転移命令の前に前記プログラム又はデータの無効化を設定する命令を挿入した絶対機械語プログラムを出力する
    ことを特徴とするローダ・リンカ。
  4. 前記請求項3記載のローダ・リンカを備える言語処理系において、
    少なくとも1つの骨子になる原始プログラムを読み込んで、原始プログラムを出力する前処理系と、
    前記前処理系からの原始プログラムを読み込んで、アセンブリプログラムを出力するコンパイラと、
    前記コンパイラからのアセンブリプログラムを読み込んで、再配置可能機械コードを出力するアセンブラとを備え、
    前記ローダ・リンカは、前記アセンブラからの再配置可能機械コードを読み込んで、この再配置可能機械コードを少なくとも1つのライブラリと結合して、絶対機械コードを出力するものであり、
    前記骨子になる原始プログラム中には、前記保護領域記憶手段での読み出し不許可領域の開始を表すマクロ及び終了を表すマクロが含まれ、
    前記前処理系は、前記マクロを構文解析して前記原始プログラムに展開する機能を有し、
    前記コンパイラは、前記マクロが展開された前記原始プログラムを構文解析して、前記マクロが展開されたアセンブリプログラムを展開する機能を有し、
    前記アセンブラは、前記マクロが展開されたアセンブリプログラムを構文解析して、前記マクロが展開された再配置可能機械語コードを展開する機能を有し、
    前記ローダ・リンカは、
    プログラム又はデータの無効化を設定する命令が挿入された前記絶対機械語プログラムを展開するとき、前記読み出し不許可領域の開始及び終了を表すマクロを構文解析して、前記プログラム又はデータを無効化する設定データを算出する機能を有する
    ことを特徴とする言語処理系。
  5. 前記請求項1記載のマイクロコンピュータを備えた情報処理装置において、
    前記マイクロコンピュータが有するデータ無効化手段として、プログラム又はデータの無効化を設定する命令を有し、
    前記プログラム又はデータの無効化を設定する命令には、制御転移命令と、前記マイクロコンピュータが有する保護領域記憶手段に設定する読み出し不許可情報とが含まれる
    ことを特徴とする情報処理装置。
  6. 請求項1記載のマイクロコンピュータにおいて、
    前記制御部が実行しているプログラムが前記不揮発性メモリに格納されたプログラムであるか否かを判定する判定手段を備え、
    前記データ無効化手段は、
    前記判定手段の判定結果を受け、この判定結果が前記不揮発性メモリに格納されたプログラムであるとき、前記比較手段の比較結果が一致であっても、不揮発性メモリの記憶領域から読み出されるプログラム又はデータの無効化を行わない
    ことを特徴とするマイクロコンピュータ。
  7. 請求項1、2又は6記載のマイクロコンピュータにおいて、
    特定の認証手続きがなされたか否かを判定する認証手段を備え、
    前記保護領域記憶手段は、
    前記認証手段の認証結果を受け、特定の認証手続きがなされていないとき、読み出し不許可領域又は読み出し許可領域への情報の書き換えを行わない
    ことを特徴とするマイクロコンピュータ。
  8. 請求項7記載のマイクロコンピュータにおいて、
    前記認証手段は、
    予め特定のキーコードを保持し、前記特定の認証手続きとして、入力されるキーコードと前記予め保持しているキーコードとの比較を行う
    ことを特徴とするマイクロコンピュータ。
  9. 請求項1、2又は6記載のマイクロコンピュータにおいて、
    前記制御部が実行しているプログラムが前記不揮発性メモリに格納されたプログラムであるか否かを判定する判定手段を備え、
    前記保護領域記憶手段は、
    前記判定手段の判定結果を受け、この判定結果が前記不揮発性メモリに格納されたプログラムでないとき、読み出し不許可領域又は読み出し許可領域への情報の書き換えを行わない
    ことを特徴とするマイクロコンピュータ。
  10. プログラム及びデータを格納する記憶領域を有する不揮発性メモリと、
    他のプログラム及びデータを格納する記憶領域を有する揮発性メモリと、
    前記実行しているプログラムが前記不揮発性メモリに格納されたプログラムであるか、前記揮発性メモリに格納されたプログラムであるか、又はその何れにも該当しないかを判定する判定手段と、
    前記判定手段の判定結果を受け、その判定結果が前記不揮発性メモリに格納されたプログラムであるときには、不揮発性メモリに格納されたプログラムであることを記憶し、前記揮発性メモリに格納されたプログラムであるときには、既に記憶した内容を保持し、何れにも該当しないときには、何れにも該当しないことを記憶する判定結果記憶手段と、
    前記判定結果記憶手段の記憶内容を受け、この記憶内容が前記不揮発性メモリに格納されたプログラムでないとき、前記不揮発性メモリから読み出されるプログラム又はデータを無効化するデータ無効化手段と、
    前記不揮発性メモリが格納するプログラム又はデータを前記データ無効化手段を介して読み出す制御部とを備えた
    ことを特徴とするマイクロコンピュータ。
  11. プログラム及びデータを格納する記憶領域を有する不揮発性メモリと、
    随時バス制御に介入して前記不揮発性メモリに対してプログラム又はデータの読み出しを行うダイレクトメモリアクセス手段と、
    前記不揮発性メモリに格納されたプログラム及びデータ及び前記ダイレクトメモリアクセス手段にアクセスする制御部と、
    現在実行しているプログラムが前記不揮発性メモリに格納されたプログラムであるか否かを判定する判定手段と、
    前記判定手段の判定結果を受け、前記制御部が前記ダイレクトメモリアクセス手段をアクセスした時の前記判定手段の判定結果を格納する判定結果記憶手段と、
    前記判定結果記憶手段が格納する判定結果を受け、この判定結果が前記不揮発性メモリに格納されたプログラムでないとき、前記不揮発性メモリから読み出されるプログラム又はデータを無効化するデータ無効化手段とを備え、
    前記制御部は、前記不揮発性メモリが格納するプログラム又はデータを前記データ無効化手段を介して読み出す
    ことを特徴とするマイクロコンピュータ。
JP2003395325A 2003-11-26 2003-11-26 マイクロコンピュータ Pending JP2005157740A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003395325A JP2005157740A (ja) 2003-11-26 2003-11-26 マイクロコンピュータ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003395325A JP2005157740A (ja) 2003-11-26 2003-11-26 マイクロコンピュータ

Publications (1)

Publication Number Publication Date
JP2005157740A true JP2005157740A (ja) 2005-06-16

Family

ID=34721127

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003395325A Pending JP2005157740A (ja) 2003-11-26 2003-11-26 マイクロコンピュータ

Country Status (1)

Country Link
JP (1) JP2005157740A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008234129A (ja) * 2007-03-19 2008-10-02 Yaskawa Information Systems Co Ltd データ保護機能付き集積回路およびデータ保護機能付き集積回路用のデータ保護プログラム
JP2010041154A (ja) * 2008-07-31 2010-02-18 Ricoh Co Ltd 画像処理装置、画像処理制御方法、画像処理制御プログラム及び記録媒体

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008234129A (ja) * 2007-03-19 2008-10-02 Yaskawa Information Systems Co Ltd データ保護機能付き集積回路およびデータ保護機能付き集積回路用のデータ保護プログラム
JP2010041154A (ja) * 2008-07-31 2010-02-18 Ricoh Co Ltd 画像処理装置、画像処理制御方法、画像処理制御プログラム及び記録媒体

Similar Documents

Publication Publication Date Title
JPH10228421A (ja) メモリアクセス制御回路
JP3710671B2 (ja) 1チップマイクロコンピュータ及びそれを用いたicカード、並びに1チップマイクロコンピュータのアクセス制御方法
US6615324B1 (en) Embedded microprocessor multi-level security system in flash memory
JP4584044B2 (ja) 半導体装置
JP3891539B2 (ja) 半導体装置およびその制御装置
JP3520102B2 (ja) マイクロコンピュータ
JP2003330799A (ja) アドレス変換に対する制限の使用によるアドレス指定可能なエンティティへのアクセスの制御
US20040187019A1 (en) Information processing apparatus
TW202013196A (zh) 資料處理裝置及其資料保護方法
US20040186947A1 (en) Access control system for nonvolatile memory
JP2005157740A (ja) マイクロコンピュータ
US6125054A (en) Rom data read protect circuit
CN111026683A (zh) 访问存储器的方法
KR100652538B1 (ko) 마이크로 컴퓨터
US8347387B1 (en) Addressing security in writes to memory
JP4828996B2 (ja) 情報処理装置及びそれを用いたセキュリティ解除プログラムの不正実行禁止方法
JP2020504393A (ja) セキュリティアーキテクチャおよび方法
KR102186221B1 (ko) 하드웨어 기반의 임베디드 시스템의 주소 공간 레이아웃 랜덤화 방법 및 이를 위한 장치
JP4865064B2 (ja) 半導体装置
JP2003203012A (ja) マイクロコンピュータ装置
JP2011150457A (ja) 情報処理装置およびメモリアクセス制御方法
JP3918089B2 (ja) メモリ保護回路
JPH08185360A (ja) 内蔵rom読み出し禁止装置
JPH0778126A (ja) Icカード用のマイクロコンピュータ
CN110569205A (zh) 安全系统单芯片及其操作方法