JP2004145605A - プロセッサ - Google Patents
プロセッサ Download PDFInfo
- Publication number
- JP2004145605A JP2004145605A JP2002309276A JP2002309276A JP2004145605A JP 2004145605 A JP2004145605 A JP 2004145605A JP 2002309276 A JP2002309276 A JP 2002309276A JP 2002309276 A JP2002309276 A JP 2002309276A JP 2004145605 A JP2004145605 A JP 2004145605A
- Authority
- JP
- Japan
- Prior art keywords
- area
- mode
- access
- user
- api
- 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
Links
Images
Abstract
【課題】命令ROMとデータメモリと拡張メモリと外部I/Fをもつプロセッサにおいて、外部から拡張メモリにプログラムが追加された場合において、追加されたプログラムによる命令ROMに対する不正読み出しやデータメモリに対する不正読み書きを防止する機構を提供する。
【解決手段】CPUが処理を行う命令のプログラムカウンタの属する領域ごとに動作モードを設け、その動作モードごとに各領域へのアクセス制限を設ける。不正アクセスを検出する不正アクセス検出回路221〜223によって、不正なアクセスを検出した場合には割り込みを発生させて、処理を中止させることによって、追加されたプログラムによる不正アクセスを防ぐ。
【選択図】 図1
【解決手段】CPUが処理を行う命令のプログラムカウンタの属する領域ごとに動作モードを設け、その動作モードごとに各領域へのアクセス制限を設ける。不正アクセスを検出する不正アクセス検出回路221〜223によって、不正なアクセスを検出した場合には割り込みを発生させて、処理を中止させることによって、追加されたプログラムによる不正アクセスを防ぐ。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
この発明はプロセッサに関し、さらに詳しくは、メモリ保護機能を有するプロセッサに関する。
【0002】
【従来の技術および発明が解決しようとする課題】
近年、流通・サービス分野や交通分野などでICカードが普及しつつある。ICカードには、ユーザプログラム(アプリケーションプログラム)をダウンロードして実行可能なものがある。このようなICカードには書き換え可能な不揮発性メモリ(たとえばフラッシュメモリ)が内蔵されており、この不揮発性メモリにユーザプログラムがダウンロードされる。上述のICカードにはさらに命令ROM(読み出し専用不揮発性メモリ)・データRAM・CPUが内蔵されている。命令ROMにはOSやサービスプログラムが格納される。命令ROMおよび書き換え可能な不揮発性メモリに格納されたプログラムに従ってCPUが各種の処理を行う。
【0003】
しかしながら上述のICカードでは、書き換え可能な不揮発性メモリにダウンロードしたユーザプログラムによって命令ROM上のプログラムを不正に読み出したりデータRAM上のデータを不正に読み出し/書き込んだりすることが可能でありセキュリティが十分には確保されない。
【0004】
この発明の目的は、セキュリティを高めることができるプロセッサを提供することである。
【0005】
【特許文献1】
特開2000−76135号公報
【特許文献2】
特開2002−91826号公報
【特許文献3】
特開平11−238016号公報
【0006】
【課題を解決するための手段および発明の効果】
この発明によるプロセッサは、データ・演算処理を行うCPUと、プログラムを格納する命令ROMと、データを格納するデータRAMと、外部とのデータのやりとりを行う外部I/Fと、外部I/Fを経由してプログラムを格納する拡張メモリと、CPUから出力される実行している命令のプログラムカウンタ値にしたがって動作モードを決定するモード決定回路と、モード決定回路からの出力と命令ROM、データRAM、拡張メモリへのアクセスアドレス情報にしたがって不正なアクセスを検出する不正アクセス検出回路から構成され、メモリ領域を特権領域、API領域、ユーザ領域の3つに区分し、実行プログラムが配置されている領域にしたがってアクセス可能領域を設け、不正なアクセスが検出された場合は割り込みを発生させることを特徴とする。これにより、外部から追加されたプログラムからのセキュリティを確保することができる。
【0007】
【発明の実施の形態】
以下、この発明の実施の形態を図面を参照して詳しく説明する。なお、図中同一または相当部分には同一の符号を付しその説明は繰り返さない。
【0008】
(第1の実施形態)
<ICカードの全体構成>
第1の実施形態によるICカードの構成を図1に示す。このICカードは非接触型のICカードであり、アンテナコイル1とプロセッサ(ICチップ)2とを備える。プロセッサ2は、CPU201と、外部インタフェース(I/F)210と、命令ROM(読み出し専用不揮発性メモリ)211と、RAM212と、フラッシュメモリ(書き換え可能な不揮発性メモリ)213と、不正アクセス検出回路群220と、実行領域判定回路214と、モード決定回路215と、割り込みコントローラ216と、OR回路217とを備える。
【0009】
アンテナコイル1は、電磁結合によってリーダライタ(図示せず)から電力を受信しかつ情報の送受信を行う。外部I/F210は、プロセッサ2と外部(アンテナコイル1)との間のインタフェースである。
【0010】
命令ROM211には特権プログラム(OSやサービスプログラムなど)が格納される。フラッシュメモリ213にはユーザプログラム(アプリケーションプログラム)が格納される。フラッシュメモリ213に格納されるユーザプログラムはリーダライタ(図示せず)からアンテナコイル1および外部I/F210を介してダウンロードされる。
【0011】
CPU201は、命令ROM211およびフラッシュメモリ213に格納されているプログラムを実行する。CPU201は、実行している命令のプログラムカウンタ(PC)値S1を出力する。CPU201は、実行すべきメモリアクセスが命令アクセスであるかデータアクセスであるかを示す信号S4を出力する。ここでいう「命令アクセス」とは、実行すべき命令を読み込む(命令フェッチ)ためのメモリアクセスのことである。また「データアクセス」とは、読み込んだ命令の内容にメモリへのアクセスが含まれている場合におけるその命令の実行としてのメモリアクセスのことである。CPU201の内部には命令フェッチを制御する部分とデータアクセスを制御する部分とが存在する。命令フェッチを制御する部分からは命令フェッチ要求が発生し、データアクセスを制御する部分からはデータアクセス要求が発生する。CPU201は、これらの要求に応答してメモリアクセスを行う。命令フェッチ要求に応答してメモリアクセスを行うときCPU201は、命令アクセスを示す信号S4を出力する。データアクセス要求に応答してメモリアクセスを行うときCPU201は、データアクセスを示す信号S4を出力する。
【0012】
実行領域判定回路214は、CPU201によって実行されている命令が格納されている領域をプログラムカウンタ値S1に基づいて判定する。領域の種類および区分については後に説明する。実行領域判定回路214は、判定された領域を示す信号S2を出力する。
【0013】
モード決定回路215は、実行領域判定回路214からの信号S2に基づいて動作モードを決定する。動作モードの種類については後に説明する。モード決定回路215は、決定した動作モードを示す信号S3を出力する。
【0014】
不正アクセス検出回路群220は検出回路221〜223を含む。検出回路221は、CPU201から命令ROM211へのアクセスアドレスと信号S3〜S4とに基づいて、CPU201から命令ROM211へのアクセスを許可/禁止する。検出回路222は、CPU201からRAM212へのアクセスアドレスと信号S3〜S4とに基づいて、CPU201からRAM212へのアクセスを許可/禁止する。検出回路223は、CPU201からフラッシュメモリ213へのアクセスアドレスと信号S3〜S4とに基づいて、CPU201からフラッシュメモリ213へのアクセスを許可/禁止する。アクセスを許可するとき検出回路221〜223は、CPU201からのアクセスアドレスを命令ROM211・RAM212・フラッシュメモリ213へ与え、当該アドレスへのアクセス(書き込み/読み出し)を行う。アクセスを禁止するとき検出回路221〜223は、CPU201からのアクセスアドレスを命令ROM211・RAM212・フラッシュメモリ213へ与えず、検出信号S6を出力する。
【0015】
OR回路217は、割り込みコントローラ216からの割り込み信号S5と検出回路221〜223からの検出信号S6との論理和を割り込み信号S7としてCPU201に与える。CPU201は、OR回路217からの割り込み信号S7に応答して割り込み処理を行う。
【0016】
<論理アドレス空間>
図1に示したICカードの論理アドレス空間を図2に示す。論理アドレス空間は、特権領域と、API領域と、ユーザ領域とに区分されている。アドレスa3〜a4,a7〜a8が特権領域に割り当てられる。アドレスa5〜a6,a9〜a10がAPI領域に割り当てられる。アドレスa1〜a2,a11〜a12,a13〜a14がユーザ領域に割り当てられる。外部I/F210にはアドレスa1〜a2(ユーザ領域)が割り当てられる。命令ROM211にはアドレスa3〜a4(特権領域),a5〜a6(API領域)が割り当てられる。RAM212にはアドレスa7〜a8(特権領域),a9〜a10(API領域),a11〜a12(ユーザ領域)が割り当てられる。フラッシュメモリ213にはアドレスa13〜a14(ユーザ領域)が割り当てられる。
【0017】
<メモリ保護機能>
次に、図1に示したICカードの動作について説明する。
【0018】
ICカードのROM211には、OSやサービスプログラムなどの特権プログラムがあらかじめ格納されている。この特権プログラムはICカードの発行者によって保証されているプログラムである。ICカードのユーザは、所望のユーザプログラムをフラッシュメモリ213にダウンロードする。フラッシュメモリ213にダウンロードされたユーザプログラムは、ROM211に格納されているOS上で動作する。
【0019】
CPU201は、命令ROM211およびフラッシュメモリ213に格納されているプログラムを実行する。CPU201はパイプライン処理を行う。パイプラインの段数は5段である。命令フェッチステージでは命令のフェッチ、デコードステージでは命令のデコード、実行ステージでは命令の実行、データアクセスステージではデータアクセス、ライトバックステージでは実行結果のレジスタへの書き込みがそれぞれ行われる。
【0020】
実行領域判定回路214は、デコードステージで処理されている命令が格納されている領域(実行領域)を示す信号S2を出力する。デコードステージで処理されている命令に対応するプログラムカウンタ値S1がアドレスa3〜a4に属するとき実行領域判定回路214は、特権領域を示す信号S2を出力する(図2参照)。デコードステージで処理されている命令に対応するプログラムカウンタ値S1がアドレスa5〜a6に属するとき実行領域判定回路214は、API領域を示す信号S2を出力する(図2参照)。デコードステージで処理されている命令に対応するプログラムカウンタ値S1がアドレスa13〜a14に属するとき実行領域判定回路214は、ユーザ領域を示す信号S2を出力する(図2参照)。
【0021】
モード決定回路215は、動作モードを示す信号S3を出力する。図3に示すように、実行領域判定回路214からの信号S2が特権領域を示すときモード決定回路215は、特権モードを示す信号S3を出力する。信号S2がAPI領域を示すときモード決定回路215は、APIモードを示す信号S3を出力する。信号S2がユーザ領域を示すときモード決定回路215は、ユーザモードを示す信号S3を出力する。このように、デコードステージで処理されている命令が格納されている領域(実行領域)に基づいて動作モードが決定される。
【0022】
検出回路221〜223は、モード決定回路215からの信号S3が示す動作モードと、CPU201からのアクセスアドレスが属する領域(アクセス領域)と、信号S4が示すアクセス種別(データアクセス,命令アクセス)とに基づいてメモリ211〜213へのアクセスを許可/禁止する。具体的には図4に示すように、動作モードが特権モードのとき検出回路221〜223はアクセス領域(特権領域,API領域,ユーザ領域)およびアクセス種別にかかわらずメモリ211〜213へのアクセスを許可する。動作モードがAPIモードのとき検出回路221〜223は、メモリ211〜213の特権領域へのデータアクセスを禁止し、それ以外のメモリアクセス(特権領域への命令アクセス、API領域へのデータアクセスおよび命令アクセス、ユーザ領域へのデータアクセスおよび命令アクセス)を許可する。動作モードがユーザモードのとき検出回路221〜223は、特権領域へのデータアクセスおよび命令アクセスとAPI領域へのデータアクセスとを禁止し、API領域への命令アクセスとユーザ領域へのデータアクセスおよび命令アクセスとを許可する。
【0023】
図5はメモリアクセス時のフローチャートである。
【0024】
ユーザモードのとき、メモリアクセスが特権領域へのアクセスの場合(ST11でYES)、不正アクセスとして割り込みが発生する(ST12)。したがって、ユーザ領域から特権領域へ直接に分岐することはできない。API領域へのアクセスの場合(ST13でYES)、それがデータアクセスであれば不正アクセスとして割り込みが発生し(ST14〜ST15)、命令アクセスであればAPI領域への命令アクセスを実行する(ST14,ST17)。ユーザ領域へのアクセスであれば(ST16)、アクセスを実行する(ST17)。
【0025】
APIモードのとき、メモリアクセスが特権領域へのアクセスの場合(ST21でYES)、それがデータアクセスであれば(ST22でYES)、不正アクセスとして割り込みが発生し(ST23)、命令アクセスであれば(ST22でNO)特権領域への命令アクセスを実行する(ST25)。API領域またはユーザ領域へのアクセスであれば(ST24)、アクセスを実行する(ST25)。
【0026】
特権モードのとき、どの領域に対しても制限なくアクセスを実行する(ST31)。
【0027】
図6は動作モード遷移時のパイプラインチャート図である。図6に示すように、ユーザ領域からAPI領域への分岐、API領域から特権領域への分岐の際に、それぞれユーザモードでのAPI領域へのメモリアクセス、APIモードでの特権領域へのメモリアクセスが発生するが、ともに命令アクセスであるのでアクセスは許可される。
【0028】
<効果>
以上のように第1の実施形態では、実行しているプログラムが格納されている領域とアクセス種別(命令アクセス/データアクセス)とに応じてメモリ211〜213へのアクセスを制限している。具体的には、メモリ211〜213の論理アドレス空間を特権領域とユーザ領域とAPI領域とに分割し、ユーザ領域から特権領域への分岐の際には必ずAPI領域を経由するようにしている。特権領域およびAPI領域のプログラムは命令ROM211に存在し、このプログラムはICカード発行者によって保証された(正しい)プログラムである。API領域を経由して特権領域に分岐することによって、特権領域中の決められた番地にのみ分岐することを保証している。これにより、ユーザ領域上のプログラムによる特権領域への不正アクセスを防ぐことができる。すなわち特権領域のプログラムおよびデータをユーザプログラムから保護することができる。
【0029】
(第2の実施形態)
<ICカードの全体構成>
第2の実施形態によるICカードの構成を図7に示す。このICカードは、図1に示したICカードの構成に加えてさらに検出回路224と、特権フラグ231と、特権フラグ判定回路232とを備える。
【0030】
特権フラグ判定回路232は、特権フラグ231の出力に従って特権フラグのON/OFFを判定し、判定結果(特権フラグ231がONであるかOFFであるか)を示す信号S8を出力する。
【0031】
モード決定回路215は、実行領域判定回路214からの信号S2と特権フラグ判定回路232からの信号S8とに基づいて動作モードを決定する。
【0032】
検出回路224は、CPU201から特権フラグ231へのアクセスアドレスと信号S3〜S4とに基づいて、CPU201から特権フラグ231へのアクセスを許可/禁止する。アクセスを禁止するとき検出回路224は検出信号S6を出力する。
【0033】
<論理アドレス空間>
図7に示したICカードの論理アドレス空間を図8に示す。外部I/F210、命令ROM211、RAM212およびフラッシュメモリ213については第1の実施形態と同様である(図2参照)。ここではさらにアドレスa15がAPI領域に割り当てられる。特権フラグ231にアドレスa15(API領域)が割り当てられる。
【0034】
<メモリ保護機能>
次に、図7に示したICカードの動作について説明する。ここでは第1の実施形態と異なる部分について説明する。
【0035】
モード決定回路215は、動作モードを示す信号S3を出力する。図9に示すように、実行領域判定回路214からの信号S2が特権領域を示しかつ特権フラグ判定回路232からの信号S8が特権フラグ231がONであることを示すときモード決定回路215は、特権モードを示す信号S3を出力する。信号S2がAPI領域を示しかつ信号S8が特権フラグ231がONであることを示すときモード決定回路215は、特権モードを示す信号S3を出力する。信号S2がAPI領域を示しかつ信号S8が特権フラグ231がOFFであることを示すときモード決定回路215は、APIモードを示す信号S3を出力する。信号S2がユーザ領域を示しかつ信号S8が特権フラグがOFFであることを示すときモード決定回路215は、ユーザモードを示す信号S3を出力する。このように、デコードステージで処理されている命令が格納されている領域(実行領域)と特権フラグ231のON/OFFとに基づいて動作モードが決定される。
【0036】
検出回路221〜224は、モード決定回路215からの信号S3が示す動作モードと、CPU201からのアクセスアドレスが属する領域(アクセス領域)と、信号S4が示すアクセス種別(データアクセス,命令アクセス)とに基づいてメモリ211〜213および特権フラグ231へのアクセスを許可/禁止する。具体的には図10に示すように、動作モードが特権モードのとき検出回路221〜224はアクセス領域(特権領域,API領域,ユーザ領域)およびアクセス種別にかかわらずメモリ211〜213および特権フラグ231へのアクセスを許可する。動作モードがAPIモードのとき検出回路221〜224は、特権領域へのデータアクセスおよび命令アクセスを禁止し、API領域へのデータアクセスおよび命令アクセスとユーザ領域へのデータアクセスおよび命令アクセスとを許可する。動作モードがユーザモードのとき検出回路221〜224は、特権領域へのデータアクセスおよび命令アクセスとAPI領域へのデータアクセスとを禁止し、API領域への命令アクセスとユーザ領域へのデータアクセスおよび命令アクセスとを許可する。
【0037】
図11は動作モード間の遷移を示す図である。
【0038】
特権モードからユーザモードに遷移する場合、まずAPI領域に分岐して、特権フラグ231をOFFにすることによってAPIモードに遷移する。このとき、特権領域上で特権フラグ231をOFFにするとAPIモードに遷移するが、特権領域への不正アクセスとなり割り込みが発生する。APIモードへの遷移後、ユーザ領域に分岐することによって、ユーザモードに遷移する。
【0039】
ユーザモードから特権モードに遷移する場合、まずAPI領域に分岐した後に、特権フラグ231をONにすることによって、特権モードに遷移する。
【0040】
図12はメモリアクセス時のフローチャートである。
【0041】
ユーザモードのとき、メモリアクセスが特権領域へのアクセスの場合(ST41でYES)、不正アクセスとして割り込みが発生する(ST42)。API領域へのアクセスの場合(ST43でYES)、データアクセスであれば(ST44でYES)、不正アクセスとして割り込みが発生し(ST45)、命令アクセスであれば(ST44でNO)API領域への命令アクセスを実行する(ST47)。ユーザ領域へのアクセスであれば(ST46)、アクセスを実行する(ST47)。
【0042】
APIモードのとき、メモリアクセスが特権領域へのアクセスの場合(ST51でYES)、不正アクセスとして割り込みが発生し(ST52)、それ以外の領域へのアクセスであれば(ST53)、アクセスを実行する(ST54)。
【0043】
特権モードのとき、どの領域に対しても制限なくアクセスを実行する(ST55)。
【0044】
図13はモード遷移時のパイプラインチャート図である。ユーザ領域からAPI領域への分岐の際に、ユーザモードでのAPI領域へのメモリアクセスが発生するが命令アクセスであるのでアクセスは許可される。また、APIモードでの特権フラグのセットによって特権モードに遷移する。
【0045】
<効果>
第2の実施形態によれば第1の実施形態におけるのと同様の効果が得られる。さらに、ユーザ領域から特権領域への分岐の際には「API領域での特権フラグへのデータアクセス」が必要となるため、特権モードに遷移する前に必ずユーザ領域でのメモリアクセスが完了することになる。
【0046】
(第3の実施形態)
<ICカードの全体構成>
第3の実施形態によるICカードの構成を図14に示す。このICカードは、図7に示したICカードの構成に加えてさらに検出回路225と、ユーザフラグ240と、ユーザフラグ判定回路251とを備える。
【0047】
ユーザフラグ240はN個のフラグ(ユーザフラグ1〜ユーザフラグN)を含む。
【0048】
ユーザフラグ判定回路251は、ユーザフラグ240の出力に従ってユーザフラグ1〜ユーザフラグNのON/OFFを判定し、判定結果(ユーザフラグ1〜ユーザフラグNがONであるかOFFであるか)を示す信号S9を出力する。
【0049】
モード決定回路215は、実行領域判定回路214からの信号S2と特権フラグ判定回路232からの信号S8とユーザフラグ判定回路251からの信号S9とに基づいて動作モードを決定する。
【0050】
検出回路225は、CPU201からユーザフラグ240(ユーザフラグ1〜N)へのアクセスアドレスと信号S3〜S4とに基づいて、CPU201からユーザフラグ240(ユーザフラグ1〜N)へのアクセスを許可/禁止する。アクセスを禁止するとき検出回路225は検出信号S6を出力する。
【0051】
<論理アドレス空間>
図14に示したICカードの論理アドレス空間を図15に示す。ここではRAM212およびフラッシュメモリ213のユーザ領域がN個の領域(ユーザ領域1〜ユーザ領域N)に分割される。さらにアドレスa16〜a16+Nがユーザ領域1〜Nに割り当てられる。ユーザフラグ1〜Nにアドレスa16(ユーザ領域1)〜a16+N(ユーザ領域N)が割り当てられる。
【0052】
<メモリ保護機能>
次に、図14に示したICカードの動作について説明する。ここでは第1および第2の実施形態と異なる部分について説明する。
【0053】
モード決定回路215は、動作モードを示す信号S3を出力する。図16に示すように、実行領域判定回路214からの信号S2が特権領域またはAPI領域を示しかつ特権フラグ判定回路232からの信号S8が特権フラグ231がONであることを示すときモード決定回路215は、特権モードを示す信号S3を出力する。なお、ユーザフラグ1〜NはONであってもOFFであってもかまわない。信号S2がAPI領域を示しかつ信号S8が特権フラグ231がOFFであることを示すときモード決定回路215は、APIモードを示す信号S3を出力する。なお、ユーザフラグ1〜NはONであってもOFFであってもかまわない。信号S2がユーザ領域1を示しかつ信号S8が特権フラグ231がOFFであることを示しかつ信号S9がユーザフラグ1がONでありユーザフラグ2〜NがOFFであることを示すときモード決定回路215は、ユーザモード1を示す信号S3を出力する。同様に、信号S2がユーザ領域M(2≦M≦N)を示しかつ信号S8が特権フラグ231がOFFであることを示しかつ信号S9がユーザフラグMがONでありユーザフラグ1〜N(ただしMを除く)がOFFであることを示すときモード決定回路215は、ユーザモードMを示す信号S3を出力する。このように、デコードステージで処理されている命令が格納されている領域(実行領域)と特権フラグ231のON/OFFとユーザフラグ1〜NのON/OFFとに基づいて動作モードが決定される。
【0054】
検出回路221〜225は、モード決定回路215からの信号S3が示す動作モードと、CPU201からのアクセスアドレスが属する領域(アクセス領域)と、信号S4が示すアクセス種別(データアクセス,命令アクセス)とに基づいてメモリ211〜213、特権フラグ231およびユーザフラグ1〜Nへのアクセスを許可/禁止する。具体的には図17に示すように、動作モードが特権モードのとき検出回路221〜225はアクセス領域(特権領域,API領域,ユーザ領域,ユーザ領域1〜N)およびアクセス種別にかかわらずメモリ211〜213、特権フラグ231およびユーザフラグ1〜Nへのアクセスを許可する。動作モードがAPIモードのとき検出回路221〜225は、特権領域へのデータアクセスおよび命令アクセスを禁止し、それ以外の領域(API領域,ユーザ領域,ユーザ領域1〜N)へのデータアクセスおよび命令アクセスを許可する。動作モードがユーザモードM(1≦M≦N)のとき検出回路221〜225は、API領域への命令アクセスと、ユーザ領域へのデータアクセスおよび命令アクセスと、ユーザ領域Mへのデータアクセスおよび命令アクセスとを許可し、特権領域へのデータアクセスおよび命令アクセスと、API領域へのデータアクセスと、ユーザ領域1〜N(ただしMを除く)へのデータアクセスおよび命令アクセスとを禁止する。
【0055】
図18はモード遷移を表す図である。特権モードのとき、特権領域もしくはAPI領域上のプログラムを実行中である。特権モードからAPIモードに遷移する場合、まずAPI領域に分岐し、特権フラグ231をOFFにする。APIモードからユーザモードNに遷移する場合、API領域において、ユーザフラグNをONにした後にユーザ領域Nに分岐する。ユーザフラグNがOFFの状態でユーザ領域Nに分岐した場合、不正アクセスと判定されて割り込みが発生する。次に、あるユーザ領域から別のユーザ領域に遷移する場合を説明する。ユーザ領域Nからユーザ領域M(0<M<N)に遷移する場合、ユーザフラグMをONにするためにAPI領域に分岐(APIモードに遷移)する。その後で、ユーザフラグNをOFF、ユーザフラグMをONにし、ユーザ領域Mに分岐する。
【0056】
<効果>
以上のように第3の実施形態によれば、ユーザプログラムから特権領域やほかのユーザ領域への不正なアクセスを防止することができる。
【図面の簡単な説明】
【図1】第1の実施形態によるICカードの全体構成を示すブロック図である。
【図2】図1に示したICカードの論理アドレス空間を示す図である。
【図3】実行領域と動作モードとの対応関係を示す図である。
【図4】各動作モードにおいてアクセスを許可/禁止する領域を示す図である。
【図5】メモリアクセス時のフローチャートである。
【図6】モード遷移時のパイプラインチャート図である。
【図7】第2の実施形態によるICカードの全体構成を示すブロック図である。
【図8】図7に示したICカードの論理アドレス空間を示す図である。
【図9】実行領域および特権フラグと動作モードとの対応関係を示す図である。
【図10】各動作モードにおいてアクセスを許可/禁止する領域を示す図である。
【図11】動作モード間の遷移を示す図である。
【図12】メモリアクセス時のフローチャートである。
【図13】モード遷移時のパイプラインチャート図である。
【図14】第3の実施形態によるICカードの全体構成を示すブロック図である。
【図15】図14に示したICカードの論理アドレス空間を示す図である。
【図16】実行領域、特権フラグおよびユーザフラグと動作モードとの対応関係を示す図である。
【図17】各動作モードにおいてアクセスを許可/禁止する領域を示す図である。
【図18】動作モード間の遷移を示す図である。
【符号の説明】
201 CPU、210 外部I/F、211 命令ROM、212RAM(データメモリ)、213 フラッシュメモリ(拡張メモリ)、214 実行領域判定回路、215 モード決定回路、220 不正アクセス検出回路群。
【発明の属する技術分野】
この発明はプロセッサに関し、さらに詳しくは、メモリ保護機能を有するプロセッサに関する。
【0002】
【従来の技術および発明が解決しようとする課題】
近年、流通・サービス分野や交通分野などでICカードが普及しつつある。ICカードには、ユーザプログラム(アプリケーションプログラム)をダウンロードして実行可能なものがある。このようなICカードには書き換え可能な不揮発性メモリ(たとえばフラッシュメモリ)が内蔵されており、この不揮発性メモリにユーザプログラムがダウンロードされる。上述のICカードにはさらに命令ROM(読み出し専用不揮発性メモリ)・データRAM・CPUが内蔵されている。命令ROMにはOSやサービスプログラムが格納される。命令ROMおよび書き換え可能な不揮発性メモリに格納されたプログラムに従ってCPUが各種の処理を行う。
【0003】
しかしながら上述のICカードでは、書き換え可能な不揮発性メモリにダウンロードしたユーザプログラムによって命令ROM上のプログラムを不正に読み出したりデータRAM上のデータを不正に読み出し/書き込んだりすることが可能でありセキュリティが十分には確保されない。
【0004】
この発明の目的は、セキュリティを高めることができるプロセッサを提供することである。
【0005】
【特許文献1】
特開2000−76135号公報
【特許文献2】
特開2002−91826号公報
【特許文献3】
特開平11−238016号公報
【0006】
【課題を解決するための手段および発明の効果】
この発明によるプロセッサは、データ・演算処理を行うCPUと、プログラムを格納する命令ROMと、データを格納するデータRAMと、外部とのデータのやりとりを行う外部I/Fと、外部I/Fを経由してプログラムを格納する拡張メモリと、CPUから出力される実行している命令のプログラムカウンタ値にしたがって動作モードを決定するモード決定回路と、モード決定回路からの出力と命令ROM、データRAM、拡張メモリへのアクセスアドレス情報にしたがって不正なアクセスを検出する不正アクセス検出回路から構成され、メモリ領域を特権領域、API領域、ユーザ領域の3つに区分し、実行プログラムが配置されている領域にしたがってアクセス可能領域を設け、不正なアクセスが検出された場合は割り込みを発生させることを特徴とする。これにより、外部から追加されたプログラムからのセキュリティを確保することができる。
【0007】
【発明の実施の形態】
以下、この発明の実施の形態を図面を参照して詳しく説明する。なお、図中同一または相当部分には同一の符号を付しその説明は繰り返さない。
【0008】
(第1の実施形態)
<ICカードの全体構成>
第1の実施形態によるICカードの構成を図1に示す。このICカードは非接触型のICカードであり、アンテナコイル1とプロセッサ(ICチップ)2とを備える。プロセッサ2は、CPU201と、外部インタフェース(I/F)210と、命令ROM(読み出し専用不揮発性メモリ)211と、RAM212と、フラッシュメモリ(書き換え可能な不揮発性メモリ)213と、不正アクセス検出回路群220と、実行領域判定回路214と、モード決定回路215と、割り込みコントローラ216と、OR回路217とを備える。
【0009】
アンテナコイル1は、電磁結合によってリーダライタ(図示せず)から電力を受信しかつ情報の送受信を行う。外部I/F210は、プロセッサ2と外部(アンテナコイル1)との間のインタフェースである。
【0010】
命令ROM211には特権プログラム(OSやサービスプログラムなど)が格納される。フラッシュメモリ213にはユーザプログラム(アプリケーションプログラム)が格納される。フラッシュメモリ213に格納されるユーザプログラムはリーダライタ(図示せず)からアンテナコイル1および外部I/F210を介してダウンロードされる。
【0011】
CPU201は、命令ROM211およびフラッシュメモリ213に格納されているプログラムを実行する。CPU201は、実行している命令のプログラムカウンタ(PC)値S1を出力する。CPU201は、実行すべきメモリアクセスが命令アクセスであるかデータアクセスであるかを示す信号S4を出力する。ここでいう「命令アクセス」とは、実行すべき命令を読み込む(命令フェッチ)ためのメモリアクセスのことである。また「データアクセス」とは、読み込んだ命令の内容にメモリへのアクセスが含まれている場合におけるその命令の実行としてのメモリアクセスのことである。CPU201の内部には命令フェッチを制御する部分とデータアクセスを制御する部分とが存在する。命令フェッチを制御する部分からは命令フェッチ要求が発生し、データアクセスを制御する部分からはデータアクセス要求が発生する。CPU201は、これらの要求に応答してメモリアクセスを行う。命令フェッチ要求に応答してメモリアクセスを行うときCPU201は、命令アクセスを示す信号S4を出力する。データアクセス要求に応答してメモリアクセスを行うときCPU201は、データアクセスを示す信号S4を出力する。
【0012】
実行領域判定回路214は、CPU201によって実行されている命令が格納されている領域をプログラムカウンタ値S1に基づいて判定する。領域の種類および区分については後に説明する。実行領域判定回路214は、判定された領域を示す信号S2を出力する。
【0013】
モード決定回路215は、実行領域判定回路214からの信号S2に基づいて動作モードを決定する。動作モードの種類については後に説明する。モード決定回路215は、決定した動作モードを示す信号S3を出力する。
【0014】
不正アクセス検出回路群220は検出回路221〜223を含む。検出回路221は、CPU201から命令ROM211へのアクセスアドレスと信号S3〜S4とに基づいて、CPU201から命令ROM211へのアクセスを許可/禁止する。検出回路222は、CPU201からRAM212へのアクセスアドレスと信号S3〜S4とに基づいて、CPU201からRAM212へのアクセスを許可/禁止する。検出回路223は、CPU201からフラッシュメモリ213へのアクセスアドレスと信号S3〜S4とに基づいて、CPU201からフラッシュメモリ213へのアクセスを許可/禁止する。アクセスを許可するとき検出回路221〜223は、CPU201からのアクセスアドレスを命令ROM211・RAM212・フラッシュメモリ213へ与え、当該アドレスへのアクセス(書き込み/読み出し)を行う。アクセスを禁止するとき検出回路221〜223は、CPU201からのアクセスアドレスを命令ROM211・RAM212・フラッシュメモリ213へ与えず、検出信号S6を出力する。
【0015】
OR回路217は、割り込みコントローラ216からの割り込み信号S5と検出回路221〜223からの検出信号S6との論理和を割り込み信号S7としてCPU201に与える。CPU201は、OR回路217からの割り込み信号S7に応答して割り込み処理を行う。
【0016】
<論理アドレス空間>
図1に示したICカードの論理アドレス空間を図2に示す。論理アドレス空間は、特権領域と、API領域と、ユーザ領域とに区分されている。アドレスa3〜a4,a7〜a8が特権領域に割り当てられる。アドレスa5〜a6,a9〜a10がAPI領域に割り当てられる。アドレスa1〜a2,a11〜a12,a13〜a14がユーザ領域に割り当てられる。外部I/F210にはアドレスa1〜a2(ユーザ領域)が割り当てられる。命令ROM211にはアドレスa3〜a4(特権領域),a5〜a6(API領域)が割り当てられる。RAM212にはアドレスa7〜a8(特権領域),a9〜a10(API領域),a11〜a12(ユーザ領域)が割り当てられる。フラッシュメモリ213にはアドレスa13〜a14(ユーザ領域)が割り当てられる。
【0017】
<メモリ保護機能>
次に、図1に示したICカードの動作について説明する。
【0018】
ICカードのROM211には、OSやサービスプログラムなどの特権プログラムがあらかじめ格納されている。この特権プログラムはICカードの発行者によって保証されているプログラムである。ICカードのユーザは、所望のユーザプログラムをフラッシュメモリ213にダウンロードする。フラッシュメモリ213にダウンロードされたユーザプログラムは、ROM211に格納されているOS上で動作する。
【0019】
CPU201は、命令ROM211およびフラッシュメモリ213に格納されているプログラムを実行する。CPU201はパイプライン処理を行う。パイプラインの段数は5段である。命令フェッチステージでは命令のフェッチ、デコードステージでは命令のデコード、実行ステージでは命令の実行、データアクセスステージではデータアクセス、ライトバックステージでは実行結果のレジスタへの書き込みがそれぞれ行われる。
【0020】
実行領域判定回路214は、デコードステージで処理されている命令が格納されている領域(実行領域)を示す信号S2を出力する。デコードステージで処理されている命令に対応するプログラムカウンタ値S1がアドレスa3〜a4に属するとき実行領域判定回路214は、特権領域を示す信号S2を出力する(図2参照)。デコードステージで処理されている命令に対応するプログラムカウンタ値S1がアドレスa5〜a6に属するとき実行領域判定回路214は、API領域を示す信号S2を出力する(図2参照)。デコードステージで処理されている命令に対応するプログラムカウンタ値S1がアドレスa13〜a14に属するとき実行領域判定回路214は、ユーザ領域を示す信号S2を出力する(図2参照)。
【0021】
モード決定回路215は、動作モードを示す信号S3を出力する。図3に示すように、実行領域判定回路214からの信号S2が特権領域を示すときモード決定回路215は、特権モードを示す信号S3を出力する。信号S2がAPI領域を示すときモード決定回路215は、APIモードを示す信号S3を出力する。信号S2がユーザ領域を示すときモード決定回路215は、ユーザモードを示す信号S3を出力する。このように、デコードステージで処理されている命令が格納されている領域(実行領域)に基づいて動作モードが決定される。
【0022】
検出回路221〜223は、モード決定回路215からの信号S3が示す動作モードと、CPU201からのアクセスアドレスが属する領域(アクセス領域)と、信号S4が示すアクセス種別(データアクセス,命令アクセス)とに基づいてメモリ211〜213へのアクセスを許可/禁止する。具体的には図4に示すように、動作モードが特権モードのとき検出回路221〜223はアクセス領域(特権領域,API領域,ユーザ領域)およびアクセス種別にかかわらずメモリ211〜213へのアクセスを許可する。動作モードがAPIモードのとき検出回路221〜223は、メモリ211〜213の特権領域へのデータアクセスを禁止し、それ以外のメモリアクセス(特権領域への命令アクセス、API領域へのデータアクセスおよび命令アクセス、ユーザ領域へのデータアクセスおよび命令アクセス)を許可する。動作モードがユーザモードのとき検出回路221〜223は、特権領域へのデータアクセスおよび命令アクセスとAPI領域へのデータアクセスとを禁止し、API領域への命令アクセスとユーザ領域へのデータアクセスおよび命令アクセスとを許可する。
【0023】
図5はメモリアクセス時のフローチャートである。
【0024】
ユーザモードのとき、メモリアクセスが特権領域へのアクセスの場合(ST11でYES)、不正アクセスとして割り込みが発生する(ST12)。したがって、ユーザ領域から特権領域へ直接に分岐することはできない。API領域へのアクセスの場合(ST13でYES)、それがデータアクセスであれば不正アクセスとして割り込みが発生し(ST14〜ST15)、命令アクセスであればAPI領域への命令アクセスを実行する(ST14,ST17)。ユーザ領域へのアクセスであれば(ST16)、アクセスを実行する(ST17)。
【0025】
APIモードのとき、メモリアクセスが特権領域へのアクセスの場合(ST21でYES)、それがデータアクセスであれば(ST22でYES)、不正アクセスとして割り込みが発生し(ST23)、命令アクセスであれば(ST22でNO)特権領域への命令アクセスを実行する(ST25)。API領域またはユーザ領域へのアクセスであれば(ST24)、アクセスを実行する(ST25)。
【0026】
特権モードのとき、どの領域に対しても制限なくアクセスを実行する(ST31)。
【0027】
図6は動作モード遷移時のパイプラインチャート図である。図6に示すように、ユーザ領域からAPI領域への分岐、API領域から特権領域への分岐の際に、それぞれユーザモードでのAPI領域へのメモリアクセス、APIモードでの特権領域へのメモリアクセスが発生するが、ともに命令アクセスであるのでアクセスは許可される。
【0028】
<効果>
以上のように第1の実施形態では、実行しているプログラムが格納されている領域とアクセス種別(命令アクセス/データアクセス)とに応じてメモリ211〜213へのアクセスを制限している。具体的には、メモリ211〜213の論理アドレス空間を特権領域とユーザ領域とAPI領域とに分割し、ユーザ領域から特権領域への分岐の際には必ずAPI領域を経由するようにしている。特権領域およびAPI領域のプログラムは命令ROM211に存在し、このプログラムはICカード発行者によって保証された(正しい)プログラムである。API領域を経由して特権領域に分岐することによって、特権領域中の決められた番地にのみ分岐することを保証している。これにより、ユーザ領域上のプログラムによる特権領域への不正アクセスを防ぐことができる。すなわち特権領域のプログラムおよびデータをユーザプログラムから保護することができる。
【0029】
(第2の実施形態)
<ICカードの全体構成>
第2の実施形態によるICカードの構成を図7に示す。このICカードは、図1に示したICカードの構成に加えてさらに検出回路224と、特権フラグ231と、特権フラグ判定回路232とを備える。
【0030】
特権フラグ判定回路232は、特権フラグ231の出力に従って特権フラグのON/OFFを判定し、判定結果(特権フラグ231がONであるかOFFであるか)を示す信号S8を出力する。
【0031】
モード決定回路215は、実行領域判定回路214からの信号S2と特権フラグ判定回路232からの信号S8とに基づいて動作モードを決定する。
【0032】
検出回路224は、CPU201から特権フラグ231へのアクセスアドレスと信号S3〜S4とに基づいて、CPU201から特権フラグ231へのアクセスを許可/禁止する。アクセスを禁止するとき検出回路224は検出信号S6を出力する。
【0033】
<論理アドレス空間>
図7に示したICカードの論理アドレス空間を図8に示す。外部I/F210、命令ROM211、RAM212およびフラッシュメモリ213については第1の実施形態と同様である(図2参照)。ここではさらにアドレスa15がAPI領域に割り当てられる。特権フラグ231にアドレスa15(API領域)が割り当てられる。
【0034】
<メモリ保護機能>
次に、図7に示したICカードの動作について説明する。ここでは第1の実施形態と異なる部分について説明する。
【0035】
モード決定回路215は、動作モードを示す信号S3を出力する。図9に示すように、実行領域判定回路214からの信号S2が特権領域を示しかつ特権フラグ判定回路232からの信号S8が特権フラグ231がONであることを示すときモード決定回路215は、特権モードを示す信号S3を出力する。信号S2がAPI領域を示しかつ信号S8が特権フラグ231がONであることを示すときモード決定回路215は、特権モードを示す信号S3を出力する。信号S2がAPI領域を示しかつ信号S8が特権フラグ231がOFFであることを示すときモード決定回路215は、APIモードを示す信号S3を出力する。信号S2がユーザ領域を示しかつ信号S8が特権フラグがOFFであることを示すときモード決定回路215は、ユーザモードを示す信号S3を出力する。このように、デコードステージで処理されている命令が格納されている領域(実行領域)と特権フラグ231のON/OFFとに基づいて動作モードが決定される。
【0036】
検出回路221〜224は、モード決定回路215からの信号S3が示す動作モードと、CPU201からのアクセスアドレスが属する領域(アクセス領域)と、信号S4が示すアクセス種別(データアクセス,命令アクセス)とに基づいてメモリ211〜213および特権フラグ231へのアクセスを許可/禁止する。具体的には図10に示すように、動作モードが特権モードのとき検出回路221〜224はアクセス領域(特権領域,API領域,ユーザ領域)およびアクセス種別にかかわらずメモリ211〜213および特権フラグ231へのアクセスを許可する。動作モードがAPIモードのとき検出回路221〜224は、特権領域へのデータアクセスおよび命令アクセスを禁止し、API領域へのデータアクセスおよび命令アクセスとユーザ領域へのデータアクセスおよび命令アクセスとを許可する。動作モードがユーザモードのとき検出回路221〜224は、特権領域へのデータアクセスおよび命令アクセスとAPI領域へのデータアクセスとを禁止し、API領域への命令アクセスとユーザ領域へのデータアクセスおよび命令アクセスとを許可する。
【0037】
図11は動作モード間の遷移を示す図である。
【0038】
特権モードからユーザモードに遷移する場合、まずAPI領域に分岐して、特権フラグ231をOFFにすることによってAPIモードに遷移する。このとき、特権領域上で特権フラグ231をOFFにするとAPIモードに遷移するが、特権領域への不正アクセスとなり割り込みが発生する。APIモードへの遷移後、ユーザ領域に分岐することによって、ユーザモードに遷移する。
【0039】
ユーザモードから特権モードに遷移する場合、まずAPI領域に分岐した後に、特権フラグ231をONにすることによって、特権モードに遷移する。
【0040】
図12はメモリアクセス時のフローチャートである。
【0041】
ユーザモードのとき、メモリアクセスが特権領域へのアクセスの場合(ST41でYES)、不正アクセスとして割り込みが発生する(ST42)。API領域へのアクセスの場合(ST43でYES)、データアクセスであれば(ST44でYES)、不正アクセスとして割り込みが発生し(ST45)、命令アクセスであれば(ST44でNO)API領域への命令アクセスを実行する(ST47)。ユーザ領域へのアクセスであれば(ST46)、アクセスを実行する(ST47)。
【0042】
APIモードのとき、メモリアクセスが特権領域へのアクセスの場合(ST51でYES)、不正アクセスとして割り込みが発生し(ST52)、それ以外の領域へのアクセスであれば(ST53)、アクセスを実行する(ST54)。
【0043】
特権モードのとき、どの領域に対しても制限なくアクセスを実行する(ST55)。
【0044】
図13はモード遷移時のパイプラインチャート図である。ユーザ領域からAPI領域への分岐の際に、ユーザモードでのAPI領域へのメモリアクセスが発生するが命令アクセスであるのでアクセスは許可される。また、APIモードでの特権フラグのセットによって特権モードに遷移する。
【0045】
<効果>
第2の実施形態によれば第1の実施形態におけるのと同様の効果が得られる。さらに、ユーザ領域から特権領域への分岐の際には「API領域での特権フラグへのデータアクセス」が必要となるため、特権モードに遷移する前に必ずユーザ領域でのメモリアクセスが完了することになる。
【0046】
(第3の実施形態)
<ICカードの全体構成>
第3の実施形態によるICカードの構成を図14に示す。このICカードは、図7に示したICカードの構成に加えてさらに検出回路225と、ユーザフラグ240と、ユーザフラグ判定回路251とを備える。
【0047】
ユーザフラグ240はN個のフラグ(ユーザフラグ1〜ユーザフラグN)を含む。
【0048】
ユーザフラグ判定回路251は、ユーザフラグ240の出力に従ってユーザフラグ1〜ユーザフラグNのON/OFFを判定し、判定結果(ユーザフラグ1〜ユーザフラグNがONであるかOFFであるか)を示す信号S9を出力する。
【0049】
モード決定回路215は、実行領域判定回路214からの信号S2と特権フラグ判定回路232からの信号S8とユーザフラグ判定回路251からの信号S9とに基づいて動作モードを決定する。
【0050】
検出回路225は、CPU201からユーザフラグ240(ユーザフラグ1〜N)へのアクセスアドレスと信号S3〜S4とに基づいて、CPU201からユーザフラグ240(ユーザフラグ1〜N)へのアクセスを許可/禁止する。アクセスを禁止するとき検出回路225は検出信号S6を出力する。
【0051】
<論理アドレス空間>
図14に示したICカードの論理アドレス空間を図15に示す。ここではRAM212およびフラッシュメモリ213のユーザ領域がN個の領域(ユーザ領域1〜ユーザ領域N)に分割される。さらにアドレスa16〜a16+Nがユーザ領域1〜Nに割り当てられる。ユーザフラグ1〜Nにアドレスa16(ユーザ領域1)〜a16+N(ユーザ領域N)が割り当てられる。
【0052】
<メモリ保護機能>
次に、図14に示したICカードの動作について説明する。ここでは第1および第2の実施形態と異なる部分について説明する。
【0053】
モード決定回路215は、動作モードを示す信号S3を出力する。図16に示すように、実行領域判定回路214からの信号S2が特権領域またはAPI領域を示しかつ特権フラグ判定回路232からの信号S8が特権フラグ231がONであることを示すときモード決定回路215は、特権モードを示す信号S3を出力する。なお、ユーザフラグ1〜NはONであってもOFFであってもかまわない。信号S2がAPI領域を示しかつ信号S8が特権フラグ231がOFFであることを示すときモード決定回路215は、APIモードを示す信号S3を出力する。なお、ユーザフラグ1〜NはONであってもOFFであってもかまわない。信号S2がユーザ領域1を示しかつ信号S8が特権フラグ231がOFFであることを示しかつ信号S9がユーザフラグ1がONでありユーザフラグ2〜NがOFFであることを示すときモード決定回路215は、ユーザモード1を示す信号S3を出力する。同様に、信号S2がユーザ領域M(2≦M≦N)を示しかつ信号S8が特権フラグ231がOFFであることを示しかつ信号S9がユーザフラグMがONでありユーザフラグ1〜N(ただしMを除く)がOFFであることを示すときモード決定回路215は、ユーザモードMを示す信号S3を出力する。このように、デコードステージで処理されている命令が格納されている領域(実行領域)と特権フラグ231のON/OFFとユーザフラグ1〜NのON/OFFとに基づいて動作モードが決定される。
【0054】
検出回路221〜225は、モード決定回路215からの信号S3が示す動作モードと、CPU201からのアクセスアドレスが属する領域(アクセス領域)と、信号S4が示すアクセス種別(データアクセス,命令アクセス)とに基づいてメモリ211〜213、特権フラグ231およびユーザフラグ1〜Nへのアクセスを許可/禁止する。具体的には図17に示すように、動作モードが特権モードのとき検出回路221〜225はアクセス領域(特権領域,API領域,ユーザ領域,ユーザ領域1〜N)およびアクセス種別にかかわらずメモリ211〜213、特権フラグ231およびユーザフラグ1〜Nへのアクセスを許可する。動作モードがAPIモードのとき検出回路221〜225は、特権領域へのデータアクセスおよび命令アクセスを禁止し、それ以外の領域(API領域,ユーザ領域,ユーザ領域1〜N)へのデータアクセスおよび命令アクセスを許可する。動作モードがユーザモードM(1≦M≦N)のとき検出回路221〜225は、API領域への命令アクセスと、ユーザ領域へのデータアクセスおよび命令アクセスと、ユーザ領域Mへのデータアクセスおよび命令アクセスとを許可し、特権領域へのデータアクセスおよび命令アクセスと、API領域へのデータアクセスと、ユーザ領域1〜N(ただしMを除く)へのデータアクセスおよび命令アクセスとを禁止する。
【0055】
図18はモード遷移を表す図である。特権モードのとき、特権領域もしくはAPI領域上のプログラムを実行中である。特権モードからAPIモードに遷移する場合、まずAPI領域に分岐し、特権フラグ231をOFFにする。APIモードからユーザモードNに遷移する場合、API領域において、ユーザフラグNをONにした後にユーザ領域Nに分岐する。ユーザフラグNがOFFの状態でユーザ領域Nに分岐した場合、不正アクセスと判定されて割り込みが発生する。次に、あるユーザ領域から別のユーザ領域に遷移する場合を説明する。ユーザ領域Nからユーザ領域M(0<M<N)に遷移する場合、ユーザフラグMをONにするためにAPI領域に分岐(APIモードに遷移)する。その後で、ユーザフラグNをOFF、ユーザフラグMをONにし、ユーザ領域Mに分岐する。
【0056】
<効果>
以上のように第3の実施形態によれば、ユーザプログラムから特権領域やほかのユーザ領域への不正なアクセスを防止することができる。
【図面の簡単な説明】
【図1】第1の実施形態によるICカードの全体構成を示すブロック図である。
【図2】図1に示したICカードの論理アドレス空間を示す図である。
【図3】実行領域と動作モードとの対応関係を示す図である。
【図4】各動作モードにおいてアクセスを許可/禁止する領域を示す図である。
【図5】メモリアクセス時のフローチャートである。
【図6】モード遷移時のパイプラインチャート図である。
【図7】第2の実施形態によるICカードの全体構成を示すブロック図である。
【図8】図7に示したICカードの論理アドレス空間を示す図である。
【図9】実行領域および特権フラグと動作モードとの対応関係を示す図である。
【図10】各動作モードにおいてアクセスを許可/禁止する領域を示す図である。
【図11】動作モード間の遷移を示す図である。
【図12】メモリアクセス時のフローチャートである。
【図13】モード遷移時のパイプラインチャート図である。
【図14】第3の実施形態によるICカードの全体構成を示すブロック図である。
【図15】図14に示したICカードの論理アドレス空間を示す図である。
【図16】実行領域、特権フラグおよびユーザフラグと動作モードとの対応関係を示す図である。
【図17】各動作モードにおいてアクセスを許可/禁止する領域を示す図である。
【図18】動作モード間の遷移を示す図である。
【符号の説明】
201 CPU、210 外部I/F、211 命令ROM、212RAM(データメモリ)、213 フラッシュメモリ(拡張メモリ)、214 実行領域判定回路、215 モード決定回路、220 不正アクセス検出回路群。
Claims (9)
- 外部とのデータのやりとりを行う外部I/Fと、
プログラムを格納する命令ROMと、
データを格納するデータメモリと、
前記外部I/Fを経由して追加されたプログラムを格納する拡張メモリと、
前記命令ROMおよび前記拡張メモリに格納されたプログラムを実行するCPUと、
前記CPUが実行している命令のプログラムカウンタ値に基づいて実行領域を判定する実行領域判定回路と、
前記実行領域判定回路による判定結果に従って動作モードを決定するモード決定回路と、
前記モード決定回路によって決定された動作モードとアクセスアドレスとによって許可されないアクセスが発生した場合に割り込み要求を出力する不正アクセス検出回路とを備える
ことを特徴とするプロセッサ。 - 請求項1において、
前記モード決定回路によって決定される動作モードには、特権モード、APIモード、ユーザモードが含まれ、
論理アドレス空間は、特権領域、API領域、ユーザ領域の3つに区分され、
前記命令ROMには前記特権領域および前記API領域、前記データメモリには前記特権領域、前記API領域および前記ユーザ領域、前記拡張メモリには前記ユーザ領域が割り当てられ、
前記モード決定回路は動作モードを、前記特権領域上のプログラム実行時には特権モード、前記API領域上のプログラム実行時にはAPIモード、前記ユーザー領域上のプログラム実行時にはユーザモードとする
ことを特徴とするプロセッサ。 - 請求項2において、
前記不正アクセス検出回路は、
前記モード決定回路によって決定された動作モードが特権モードのとき、前記特権領域、前記API領域および前記ユーザ領域へのデータアクセスおよび命令アクセスを許可し、
前記モード決定回路によって決定された動作モードがAPIモードのとき、前記特権領域への命令アクセスと、前記API領域および前記ユーザ領域へのデータアクセスおよび命令アクセスとを許可し、前記特権領域へのデータアクセスを禁止し、
前記モード決定回路によって決定された動作モードがユーザモードのとき、前記API領域への命令アクセスと、前記ユーザ領域へのデータアクセスおよび命令アクセスとを許可し、前記特権領域へのデータアクセスおよび命令アクセスと、前記API領域へのデータアクセスとを禁止する
ことを特徴とするプロセッサ。 - 外部とのデータのやりとりを行う外部I/Fと、
プログラムを格納する命令ROMと、
データを格納するデータメモリと、
前記外部I/Fを経由して追加されたプログラムを格納する拡張メモリと、
前記命令ROMおよび前記拡張メモリに格納されたプログラムを実行するCPUと、
前記CPUが実行している命令のプログラムカウンタ値に基づいて実行領域を判定する実行領域判定回路と、
特権フラグと、
前記特権フラグの値を判定する特権フラグ判定回路と、
前記実行領域判定回路による判定結果と前記特権フラグ判定回路による判定結果とに従って動作モードを決定するモード決定回路と、
前記モード決定回路によって決定された動作モードとアクセスアドレスとによって許可されないアクセスが発生した場合に割り込み要求を出力する不正アクセス検出回路とを備える
ことを特徴とするプロセッサ。 - 請求項4において、
前記モード決定回路によって決定される動作モードには、特権モード、APIモード、ユーザモードが含まれ、
論理アドレス空間は、特権領域、API領域、ユーザ領域に区分され、
前記命令ROMには前記特権領域および前記API領域、前記データメモリには前記特権領域、前記API領域および前記ユーザ領域、前記拡張メモリには前記ユーザ領域、前記特権フラグには前記API領域が割り当てられ、
前記モード決定回路は動作モードを、前記特権領域または前記API領域上のプログラム実行時でありかつ前記特権フラグがONのときには特権モード、前記API領域上のプログラム実行時でありかつ前記特権フラグOFFのときにはAPIモード、前記ユーザー領域上のプログラム実行時にはユーザモードとする
ことを特徴とするプロセッサ。 - 請求項5において、
前記不正アクセス検出回路は、
前記モード決定回路によって決定された動作モードが特権モードのとき、前記特権領域、前記API領域および前記ユーザ領域へのデータアクセスおよび命令アクセスを許可し、
前記モード決定回路によって決定された動作モードがAPIモードのとき、前記API領域へのデータアクセスおよび命令アクセスと、前記ユーザ領域へのデータアクセスおよび命令アクセスとを許可し、前記特権領域へのデータアクセスおよび命令アクセスを禁止し、
前記モード決定回路によって決定された動作モードがユーザモードのとき、前記API領域への命令アクセスと、前記ユーザ領域へのデータアクセスおよび命令アクセスとを許可し、前記特権領域へのデータアクセスおよび命令アクセスと、前記API領域へのデータアクセスとを禁止する
ことを特徴とするプロセッサ。 - 外部とのデータのやりとりを行う外部I/Fと、
プログラムを格納する命令ROMと、
データを格納するデータメモリと、
前記外部I/Fを経由して追加されたプログラムを格納する拡張メモリと、
前記命令ROMおよび前記拡張メモリに格納されたプログラムを実行するCPUと、
前記CPUが実行している命令のプログラムカウンタ値に基づいて実行領域を判定する実行領域判定回路と、
特権フラグと、
N個(Nは2以上の整数)のユーザフラグと、
前記特権フラグの値を判定する特権フラグ判定回路と、
前記ユーザフラグの値を判定するユーザフラグ判定回路と、
前記実行領域判定回路による判定結果と前記特権フラグ判定回路による判定結果と前記ユーザフラグ判定回路による判定結果とに従って動作モードを決定するモード決定回路と、
前記モード決定回路によって決定された動作モードとアクセスアドレスとによって許可されないアクセスが発生した場合に割り込み要求を出力する不正アクセス検出回路とを備える
ことを特徴とするプロセッサ。 - 請求項7において、
前記モード決定回路によって決定される動作モードには、特権モード、APIモード、ユーザモードが含まれ、
論理アドレス空間は、特権領域、API領域、第1から第Nのユーザ領域に区分され、
前記命令ROMには前記特権領域および前記API領域、前記データメモリには前記特権領域、前記API領域および前記第1から第Nのユーザ領域、前記拡張メモリには前記第1から第Nのユーザ領域、前記特権フラグにはAPI領域、前記第1から第Nのユーザフラグには前記第1から第Nのユーザ領域が割り当てられ、
前記モード決定回路は動作モードを、前記特権領域または前記API領域上のプログラム実行時でありかつ前記特権フラグがONのときには特権モード、前記API領域上のプログラム実行時でありかつ前記特権フラグがOFFのときはAPIモード、第M(1≦M≦N)のユーザ領域上のプログラム実行時でありかつ第MのユーザフラグがONのとき第Mのユーザモードとする
ことを特徴とするプロセッサ。 - 請求項8において、
不正アクセス検出回路は、
前記モード決定回路によって決定された動作モードが特権モードのとき、前記特権領域、前記API領域および前記第1から第Nのユーザ領域へのデータアクセスおよび命令アクセスを許可し、
前記モード決定回路によって決定された動作モードがAPIモードのとき、前記API領域へのデータアクセスおよび命令アクセスと、前記第1から第Nのユーザ領域へのデータアクセスおよび命令アクセスとを許可し、前記特権領域へのデータアクセスおよび命令アクセスを禁止し、
前記モード決定回路によって決定された動作モードが前記第Mのユーザモードのとき、前記API領域への命令アクセスと、前記第Mのユーザ領域へのデータアクセスおよび命令アクセスとを許可し、前記特権領域へのデータアクセスおよび命令アクセスと、前記API領域へのデータアクセスと、前記第1から第Nのユーザ領域のうち前記Mのユーザ領域以外の領域へのデータアクセスおよび命令アクセスとを禁止する
ことを特徴とするプロセッサ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002309276A JP2004145605A (ja) | 2002-10-24 | 2002-10-24 | プロセッサ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002309276A JP2004145605A (ja) | 2002-10-24 | 2002-10-24 | プロセッサ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004145605A true JP2004145605A (ja) | 2004-05-20 |
Family
ID=32455150
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002309276A Pending JP2004145605A (ja) | 2002-10-24 | 2002-10-24 | プロセッサ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004145605A (ja) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006040282A (ja) * | 2004-07-23 | 2006-02-09 | Texas Instruments Inc | 計算機システム内のセキュリティ侵害を識別して防ぐためのシステムと方法 |
JP2006065847A (ja) * | 2004-08-25 | 2006-03-09 | Microsoft Corp | プログラムコードの安全な実行のためのシステムおよび方法 |
WO2006040798A1 (ja) * | 2004-10-08 | 2006-04-20 | Renesas Technology Corp. | 半導体集積回路装置および電子システム |
US7555627B2 (en) | 2005-06-30 | 2009-06-30 | Hitachi, Ltd. | Input-output control apparatus, input-output control method, process control apparatus and process control method |
US8230233B2 (en) | 2006-06-05 | 2012-07-24 | Felica Networks, Inc. | Information processing terminal and program for use therewith |
JP2012238273A (ja) * | 2011-05-13 | 2012-12-06 | Denso Corp | Ram書込制御装置および不正アクセス防止プログラム |
JP2013519934A (ja) * | 2010-02-16 | 2013-05-30 | アーム・リミテッド | ハードウェアモードおよびセキュリティフラグに基づく、読み出される命令用のメモリエリアの制限 |
-
2002
- 2002-10-24 JP JP2002309276A patent/JP2004145605A/ja active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006040282A (ja) * | 2004-07-23 | 2006-02-09 | Texas Instruments Inc | 計算機システム内のセキュリティ侵害を識別して防ぐためのシステムと方法 |
JP2006065847A (ja) * | 2004-08-25 | 2006-03-09 | Microsoft Corp | プログラムコードの安全な実行のためのシステムおよび方法 |
WO2006040798A1 (ja) * | 2004-10-08 | 2006-04-20 | Renesas Technology Corp. | 半導体集積回路装置および電子システム |
US7555627B2 (en) | 2005-06-30 | 2009-06-30 | Hitachi, Ltd. | Input-output control apparatus, input-output control method, process control apparatus and process control method |
US8230233B2 (en) | 2006-06-05 | 2012-07-24 | Felica Networks, Inc. | Information processing terminal and program for use therewith |
JP2013519934A (ja) * | 2010-02-16 | 2013-05-30 | アーム・リミテッド | ハードウェアモードおよびセキュリティフラグに基づく、読み出される命令用のメモリエリアの制限 |
JP2012238273A (ja) * | 2011-05-13 | 2012-12-06 | Denso Corp | Ram書込制御装置および不正アクセス防止プログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8010772B2 (en) | Protected function calling | |
JP3520102B2 (ja) | マイクロコンピュータ | |
JP3710671B2 (ja) | 1チップマイクロコンピュータ及びそれを用いたicカード、並びに1チップマイクロコンピュータのアクセス制御方法 | |
US5950012A (en) | Single chip microprocessor circuits, systems, and methods for self-loading patch micro-operation codes and patch microinstruction codes | |
US6101586A (en) | Memory access control circuit | |
JP4989543B2 (ja) | メモリドメインを基にしたデータ処理システム内のセキュリティ制御 | |
US20110138141A1 (en) | Execute only access rights on a von neuman architectures | |
JP4939382B2 (ja) | 情報処理装置及びそのプログラム実行制御方法 | |
CN102103570A (zh) | Simd向量的同步化 | |
US7409251B2 (en) | Method and system for writing NV memories in a controller architecture, corresponding computer program product and computer-readable storage medium | |
KR20130036189A (ko) | 하드웨어 모드와 보안 플래그에 의존하여 판독된 명령어에 대한 메모리 영역의 제한 | |
EP1763761A1 (en) | Digital signal controller secure memory partitioning | |
JPH08272625A (ja) | マルチプログラム実行制御装置及び方法 | |
KR100505106B1 (ko) | 강화된 보안 기능을 갖춘 스마트 카드 | |
US8789169B2 (en) | Microcomputer having a protection function in a register | |
US11243894B2 (en) | Method for protecting memory against unauthorized access | |
JP2727527B2 (ja) | 不揮発性メモリ領域の保護方法及び回路 | |
JP2004145605A (ja) | プロセッサ | |
JP2004280801A (ja) | プロセッサおよびこのプロセッサ用のプログラムを生成するコンパイラ装置 | |
JP2000076135A (ja) | プロセッサのメモリ保護方法及びプロセッサのメモリを保護されたicカード | |
US20020174309A1 (en) | Protection against abusive use of a statement in a storage unit | |
WO2007020758A1 (ja) | Icカード用lsi | |
CN112836245A (zh) | 一种访问控制设备和包含该设备的处理器 | |
JPH09160831A (ja) | 情報処理装置 | |
JPH07295802A (ja) | プログラムカード及びこれを用いた計算機 |