(57)【特許請求の範囲】
【請求項１】
マイクロプロセッサと、アドレスを経てアクセスすることができる複数の記憶場所を持つ少なくとも１つのメモリとの形態における制御ユニットを設けた集積回路を含むチップカードであって、前記マイクロプロセッサが複数のレジスタを含み、これらのレジスタの内少なくともＰＳＷレジスタがプログラム状況ワードを含み、このプログラム状況ワードにおいて、少なくとも１つの予め決められたモードビットの値がユーザモードまたはシステムモードを決定し、前記ＰＳＷレジスタの少なくとも一部と、前記システムモードにおいてのみ使用されるすべてのレジスタおよびメモリセグメントと、に対するアクセスを、前記モードビットが前記ユーザモードを示す場合、禁止し、
前記ユーザモードにおいて生じる各割り込み要求が、前記モードビットを切り替える前記システムモードへのジャンプをトリガし、入力／出力動作と、前記マイクロプロセッサに結合された制御回路の制御とのために働くすべてのレジスタを、前記システムモードにおいてのみ使用するようにしたことを特徴とするチップカード。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロプロセッサおよびメモリの形態における制御ユニットを設けた集積回路を含むチップカードに関係する。
【０００２】
【従来の技術】
この種のチップカードは、しばしば、当該カードが秘密関連情報を含む用途に使用される。これは、例えば、預金残高または貸出し限度額、および個人秘密番号も含む銀行カードの場合か、例えば個人秘密番号の入力後のみに読み出し可能とすべき患者に関する秘密情報を含む患者カードの場合である。さらに、これらのようなカードは、与えられた部屋または建物へのアクセスを制御するのにも使用される。あるチップカードは、別個のユーザプログラムを前記メモリに含み、所望のプログラムのみをアクセス可能にすることができ、複数の用途に好適であることが望ましい。これらのような場合において、あるユーザプログラムのデータおよび部品に他のユーザプログラムによってアクセスできないことが特に重要である。
【０００３】
【発明が解決しようとする課題】
本発明の目的は、明白にあるユーザプログラムのデータの、他のユーザプログラムまたは他の操作による読み出しまたは変更の目的のための、非承認すなわち望ましくないアクセスをできるだけ確実に防止する、マイクロプロセッサおよびメモリを有するチップカードを提供することである。
【０００４】
【課題を解決するための手段】
前記目的は、本発明により、主として、プログラム状況ワードレジスタ（ＰＳＷレジスタ）が、値がユーザモードまたはシステムモードを示す少なくとも１つのモードビットを含むことにおいて達成される。前記ユーザモードにおいて、前記モードビットの対応するビット値は、前記ＰＳＷレジスタの少なくとも一部と、前記システムモードにおいてのみ使用されるすべてのレジスタおよびメモリセグメントとへのアクセスを禁止する。したがって、秘密関連情報を含む、すべてのこれらのようなレジスタおよびメモリには、前記システムモードにおいてのみアクセスすることができる。前記システムモードは、明らかに外部から読み出しまたは変更ができない、常時格納されたプログラムによって動作する。このプログラムは、関連した用途に依存しない。
【０００５】
これは、このようなシステムプログラムを、リリースするために、その秘密関連機能に関して一回のみテストすればよいという利点を提供する。銀行または健康保険会社のような適切な機関によって発生され、前記カードにロードされた、前記ユーザプログラムを、この場合において特別にテストする必要はない。アプリケーションプログラムの枠組みにおける秘密データへの各アクセスは、前記システムプログラムによって独占的に起こる。前記システムプログラムは、すべての異なったユーザプログラムが明確且つ確実に互いに分離され、ユーザプログラムが、どのような他のプログラムまたはそこで使用されるデータにもアクセスできないことを保証する。
【０００６】
ユーザプログラムにおいて使用される秘密データの承認されたアクセスに対して、所定のジャンプが前記システムプログラムにおいて常にトリガされ、前記モードビットを切り替える。全レジスタおよび全記憶場所は、前記システムモードにおいてアクセス可能である。他方において、しかしながら、前記システムモードにおいて、要求されたアクセスが実際に許可されるかどうかを容易に検査することができる。このテストを、不正なユーザによって不活性化することはできない。また、すべてのデータ入力動作およびすべての出力動作は、秘密データへのアクセスと等価である。
【０００７】
記憶場所の禁止と、個々のユーザプログラムに関する所定の記憶場所セグメントの解放とは、前記メモリを、セグメントとも呼ばれる所定の区域に再分することによって簡単に実現され、このとき、異なったユーザプログラムは、異なったセグメントに実際に関係する。したがって、異なったユーザプログラムのメモリ区域は、互いに確実に分離する。
【０００８】
さらに、あるセグメント内で、このセグメントの一部のみへのアクセスを可能にし、あるセグメント内の境界アドレスを示す追加のレジスタを設けることができる。各アドレス、すなわち、最下位ビットを、このようなレジスタの内容と自動的に比較する。これらのレジスタは、再び前記システムモードにおいてのみ、読み出すことができ、書き込むことができる。
【０００９】
さらに、前記セグメントレジスタは、好適には、書き込まれたデータと共にその値を前記記憶場所に書き込まれたビットグループを格納する。このとき、読み出しに応じて、前記記憶場所の対応する区域の内容が、このビットグループに対応するかどうかを検査する。対応していない場合、読み出しを禁止する。
【００１０】
ユーザプログラムが前記ユーザモードにおいてレジスタまたは記憶場所にアクセスすることを望み、このようなアクセスがこのユーザプログラムによって許可されていない場合、特別なシステムメッセージの代わりに、単に、空のメモリセル、すなわち、前記カードの製造後に書き込まれていないセルに対応する値を出力することができる。このようにして、不正なユーザは、彼または彼女が、実際に、空の記憶場所にアクセスしたのか、禁止された記憶場所にアクセスしたのかを認識することができない。さらに、このような値は、前記システムモードにおける無条件ジャンプに対応する。
【００１１】
このようにして、すべての許可されないメモリ区域の禁止は、前記システムモードにおいてのみ変更可能なレジスタによって起こる。これらのレジスタは、特別機能すなわちＳＦレジスタの少なくとも一部を形成する。これらのレジスタを、当該レジスタ内のバスを介して相互接続する。さらにこの内部レジスタバスは、内部データバスに対するインタフェースを有し、このインタフェースを経て、データを前記データバスから前記レジスタに書き込みことができ、または、前記レジスタを前記データバスに対して読み出すことができる。好適には、前記レジスタバスを、前記システムモードにおいてのみ閉じられるスイッチによって再分する。これは、関連したレジスタと、したがって間接的にすべてのアクセス不可能な記憶場所とを禁止する、きわめて簡単な可能性を構成する。
【００１２】
【発明の実施の形態】
図１は、本発明にとって本質的に重要な、マイクロプロセッサの部分を図式的に示す。データバスを経て所定のアドレスに設定することができ、そうでない場合は自律的にカウントするプログラムカウンタ１０を、多数のデータ線および制御線を含む内部バス１１に接続する。明瞭にするために、この図および他の図において、必要な制御信号を、前記プログラムカウンタに対しても、他の要素に対しても示さない。
【００１３】
プログラムカウンタ１０は、その内容をメモリ管理ユニットＭＭＵ  １４に与え、メモリ管理ユニットＭＭＵ  １４は、メモリ２０にアドレス信号および制御信号を、接続部１５を経て供給する。メモリ２０は、実際には、複数のメモリユニット、すなわち、特に、前記システムプログラムまたはその主要な部分のためのＲＯＭと、ユーザプログラムおよび、秘密番号のような所定の固定されたデータのためのＥＥＰＲＯＭと、明白に、個々の処理ステップ中に中間結果を格納するために働く揮発性ＲＡＭとから成る。これらの個々のメモリを、接続部１５を経て制御信号によって選択する。接続部２９を経て、アドレスされた記憶場所から読み出したデータを出力し、書き込み可能な記憶場所に書き込むべきデータを供給する。
【００１４】
さらに、バス１１からのデータをアドレスとしてメモリ２０に供給するために、ＭＭＵ  １４をバス１１に直接接続する。さらに、ＭＭＵ  １４を、簡単にするために１つのブロックとして示したレジスタ１８に接続し、このレジスタ１８は、メモリ２０におけるどのユニットを選択すべきかについての指示と、加えて、選択されたメモリユニットにおけるどのメモリ区域またはアドレス区域がアドレスされるかについての指示とを含む。この目的のため、明白に、前記ＥＥＰＲＯＭメモリユニットを、一般的にセグメントと呼ばれる区域に再分する。各ユーザプログラムを、関連するユーザプログラムが書き込まれるときに規定されるプログラム情報およびデータに関する１つ以上の所定のセグメントに割り当てる。
これらの割り当てを、以下に詳細に説明するように、前記システムプログラムによって独占的に変更することができる。
【００１５】
演算および論理ユニットＡＬＵ  １２の入力部をバス１１に接続する。明白に、演算ユニットおよび累算器と他のレジスタとを含む、このユニットの内部構造は、それ自体既知であり、したがって詳細には示さない。ユニット１２の結果を、バス１１に再び供給する。さらに、けた上げ信号、けたあふれ信号またはゼロ値のような、計算の実行中に生じるいくつかの信号を、接続部１３を経て、いわゆるプログラム状況ワードの一部を含むレジスタ２６に供給する。前記プログラム状況ワードの第２の部分を、レジスタ２８に格納する。
【００１６】
例えば、本チップカードの外部から、または、本チップカード内、すなわち前記マイクロプロセッサと同じチップにおけるコプロセッサからの、データの入力または出力のために、接続部２５を経て前記マイクロプロセッサの外部からロードすることができると共に、データをこの外部に出力することもできるレジスタ２４を設ける。
【００１７】
レジスタ１８、２８および２４を、接続ユニット３０に至る特別バス２３を介して相互接続する。他のレジスタを、接続ユニット３０に続く点線によって示すように、バス２３に接続してもよい。接続ユニット３０を、前記プログラム状況ワードの一部のためのレジスタ２６に至る内部バス２１と、結合ユニット２２とにも接続し、この結合ユニット２２は、別個には図示しない制御線を経て適切に駆動される場合、バス２１をバス１１に接続する。バス２１および２３は、マイクロプロセッサにおける特別な機能レジスタに関する慣例的な内部バスを構成する。これらの２つの部分は、接続ユニット３０が前記２つのバス部分を、線２７を経た制御によって相互接続する場合、単一のバスを構成する。
【００１８】
制御線２７を、モードビットを含むレジスタ２８の所定の部分に接続する。このビットの値は、前記マイクロプロセッサが、前記システムモードにおいて動作するか、前記ユーザモードにおいて動作するかを決定する。このビットの値が前記システムモードを示す場合、接続ユニット３０は、２つのバス部分２１および２３を相互接続し、したがって単一のバスを形成するように駆動され、この単一のバスを経て、図示したレジスタ１８、２４、２６および２８や、図示しない可能な他のレジスタのような、すべての特別機能レジスタが相互接続される。前記ユーザモードにおけるモードビットの対応する他のビットのため、接続ユニット３０は制御線２７を介して駆動され、２つのバス部分２１および２３は互いに分離する。このとき、バス２３に接続されたレジスタ１８、２８および２４と他のレジスタとには、もはやアクセスすることができず、すなわち、書き込みも読み出しもできない。
【００１９】
前記ユーザモードからシステムモードへの移行を、特別ジャンプ命令の制御の下で行ない、この特別ジャンプ命令によって、レジスタ２８におけるモードビットを前記システムモードに切り替える。同時に、前記システムプログラムの開始を要求し、変更することができないように、その主要な内容を固定する。前記システムプログラムにおいて、例えば、レジスタ１８を変更し、その後のユーザプログラム中の、他のメモリユニットまたはメモリユニットにおける他のセグメントのアクセスを可能にすることができる。前記システムプログラムの終了時に、レジスタ２８におけるモードビットは再び元に切り替えられ、したがって、バス２３に対する接続部は、制御線２７を経て接続ユニット３０において再び遮断され、その結果、この接続部に接続されているレジスタには、もはやアクセスすることができなくなる。
【００２０】
図２は、接続ユニット３０の構造のより詳細な表現である。バス２１からバス２３へのデータの伝送は、スイッチ３０２を経て起こり、バス２３からバス２１へ伝送すべきデータは、スイッチ３０４を経て伝わる。スイッチ３０２および３０４を、共に制御線２７を経て駆動する。図２に示すスイッチ３０２および３０４の位置において、前記接続部は遮断され、固定されたデータ値を有する線３０６から来るデータは、バス２１に伝送される。このデータ値は、例えば、前記システムモードへのジャンプを行なう前記ジャンプ命令の値に対応する。したがって、許可されないレジスタに、ユーザプログラムにおいて禁止された方法においてアクセスしても、前記ジャンプ命令に対応する値が読み出される。この値を命令として判断すべき場合、このような禁止されたアクセスは、ユーザによって変更することができない固定された命令列のみが実行される前記システムモードへのジャンプを常にトリガする。
【００２１】
図３は、ＭＭＵ  １４のいくつかの部分のより詳細な表現である。バス１１に対する接続部は、アドレス計算機１４０に通じ、このアドレス計算機１４０において、バス１１からのデータをアドレスとして、図１におけるレジスタ１８から接続部１９を経て来る上位アドレス部分と結合し、接続部１４１を経て出力するようにする。接続部１４１は、ブロッキングユニット１４４および比較器１４２に通じる。比較器１４２の第２入力部をレジスタ３２の出力部に接続し、このレジスタ３２を特別機能レジスタとしてバス２３にも接続し、前記システムモードにおいてのみアクセス可能とし、前記システムモードにおいてアドレス制限に関する値をロードすることができる。前記アドレス制限を、好適には、接続部１４１におけるアドレス対と比較し、前記アドレスが予め決められた制限内にある場合、比較器１４２は、線１４１を経てブロッキングユニット１４４を使用可能にし、前記アドレスを図１のメモリ２０に接続部１５を経て供給する。このようにして、関連したユーザプログラムに関係するセグメントの一部へのアクセスを、前記ユーザモードにおいて禁止することができる。
【００２２】
禁止されたデータへのアクセスに対する他の防衛を、図４において図式的に示す。図１のメモリ２０の記憶場所の内容を読み出し、対応するデータを接続部２９を経て出力する場合、前記データを比較器４２と、さらにブロッキングユニット４０とに供給する。比較器４２の他の入力部は、バス２３を経てロードされているレジスタ１８からデータを受ける。比較器４２は、接続部２９におけるデータワードの所定の部分が、レジスタ１８によって供給されるデータと一致することを検査する。ブロッキングユニット４０は、一致する場合においてのみ線４３を経て解放され、このとき、データは、接続部４５を経て出力される。このデータを、データレジスタ４４に、分離して示さない制御線における適切な制御信号に応じて書き込み、前記データレジスタ４４が前記データをバス１１に供給するか、命令レジスタ４６に書き込み、この命令レジスタが、このデータを命令として命令デコーダ（図示せず）に供給する。
【００２３】
データを、バス１１からデータレジスタ４４を経て図１のメモリ２０に書き込むべき場合、このデータを再びブロッキングユニット４０に伝送し、ブロッキングユニット４０において、接続部２９を経てメモリ２０に書き込んだ後、レジスタ１８の内容と一致するデータを追加する。結果として、このデータが、関連するユーザプログラム中に読み出されると、レジスタ１８の内容との必要な一致が検知される。したがって、このテストデータが異なった値を有する他のユーザプログラム中、異なったユーザプログラムのデータにアクセスすることができない。
【００２４】
図５は、保護されたシステム区域５０と、保護されていないユーザ区域６０とへの再分を象徴的に示す。ユーザ区域６０において、スタックメモリ６２およびプログラムカウンタ６４へのアクセスは可能である。さらに、前記プログラム状況ワード用のレジスタ５９の一方の半分は、前記ユーザ区域に対して利用可能である。レジスタ５９の他方の部分は、システム区域５０に対してのみ利用可能である。この部分において、システムスタックメモリ５７０、５７１に、レジスタ５７を経てアクセスすることができ、さらに、インタフェース５２を経て、前記メモリにおける書き込み許可を制御するレジスタ５６や、メモリのアクセス用のレジスタ５５や、入力／出力動作用レジスタ５４や、好適には同じチップ上に設けられたコプロセッサ用のレジスタ５３のような特別機能レジスタにもアクセスすることができる。この種の他のレジスタ（図示せず）を設けてもよい。
【００２５】
システム区域５０において示したユニットには、前記モードビットがセットされている場合にのみアクセスすることができる。前記ユーザ区域において、ここに示したユニット６２および６４にアクセスすることができるが、システム区域５０において示さないユニットにはアクセスすることができない。
【００２６】
図６は、プログラム状況ワード７０の構成の一例を示す。セクション７２は、プログラム実行を検査するのに使用できるビットを含み、これは、プログラムの形成に顕著に重要である。セクション７３の内容は、レジスタ選択のために働く。セクション７４の内容は、割込み要求をマスクするために働く。これらのセクションは、前記システムモードにおいてのみ変更することができる前記プログラム状況ワードの半分に属する。
【００２７】
二重線の後の部分を、前記ユーザモードにおいて、読み出すことも変更することもでき、この部分は、２つのセクション７５および７６を具え、これらのセクションは、図１のＡＬＵ  １２において生じるけた上げ信号を格納する。セクション７７を、実際的に、前記ユーザプログラムと別個に規定することができる。
セクション７８は、図１のＡＬＵ  １２においてけたあふれが生じたというメッセージを格納する。セクション７９は、ＡＬＵ  １２において否定的な結果が生じたことを示し、セクションは、計算中に値ゼロが生じたことを示す。図１のＡＬＵ  １２の信号のみがあるため、これらのセクションのアクセスも、前記ユーザモードにおいて可能にしなければならない。
【図面の簡単な説明】
【図１】  チップカード用マイクロプロセッサの主要部分のブロック図である。
【図２】  図１の一部を詳細に示す線図である。
【図３】  アドレス制限のテストに関するブロック図である。
【図４】  記憶場所のテストに関するブロック図である。
【図５】  保護されたシステム区域と、保護されていないユーザ区域とへの再分を象徴的に示す線図である。
【図６】  ２つの別個のレジスタにおけるプログラム状況ワードの配置の一例を示す線図である。
【符号の説明】
１０、６４  プログラムカウンタ
１１、２１  内部バス
１２  論理ユニットＡＬＵ
１３、１５、１９、２５、２９、４５、１４１  接続部
１４  メモリ管理ユニットＭＭＵ
１８、２４、２６、２８、３２、５７  レジスタ
２０  メモリ
２２  結合ユニット
２３  特別バス
２７  制御線
３０  接続ユニット
４０、１４４  ブロッキングユニット
４２、１４２  比較器
４３、３０６  線
４４  データレジスタ
４６  命令レジスタ
５０  システム区域
５２  インタフェース
５３  コプロセッサ用レジスタ
５４  入力／出力動作用レジスタ
５５  メモリアクセス用レジスタ
５６  書き込み許可制御用レジスタ
５９  プログラム状況ワード用レジスタ
６０  ユーザ区域
６２  スタックメモリ
７０  プログラム状況ワード
１４０  アドレス計算機
３０２、３０４  スイッチ
５７０、５７１  システムスタックメモリ
【図１】
0004559552.tif 000002
【図２】
0004559552.tif 000003
【図３】
0004559552.tif 000004
【図４】
0004559552.tif 000005
【図５】
0004559552.tif 000006
【図６】
0004559552.tif 000007