(57)【特許請求の範囲】
【請求項１】
少なくとも１つの保護されるべきレジスタを有するコンピュータをレジスタ内容の不正操作から保護するための方法であって、
前記コンピュータに、少なくとも１つの冗長レジスタ、及び、前記保護されるべきレジスタの内容と前記冗長レジスタの内容とを比較するコンパレータを備えるステップ；
前記コンピュータにより、前記保護されるべきレジスタの前記内容のコピーを作成するステップ；
前記保護されるべきレジスタの前記内容の前記コピーを前記冗長レジスタに格納するステップ；及び
前記保護されるべきレジスタの前記内容と前記冗長レジスタに格納されている前記内容のコピーとを、前記コンパレータにより、要求に応じて比較するステップを有してなり、
前記コピーのデータが前記保護されるべきレジスタの前記内容に対して、前記データのビット毎の反転により改変されること、及び、前記保護されるべきレジスタ及び／または前記コピーを格納しているレジスタが前記レジスタの間接的なアドレス指定により遮蔽されていること、
を特徴とする方法。
【請求項２】
前記保護されるべきレジスタと前記コピーを格納している前記冗長レジスタの間の物理的関係の隠蔽が実施されることを特徴とする請求項１に記載の方法。
【請求項３】
前記隠蔽が、前記保護されるべきレジスタがある場所から仮想的または空間的に隔てられた場所に前記コピーのための前記レジスタを作成することにより実施されることを特徴とする請求項２に記載の方法。
【請求項４】
前記保護されるべきレジスタの前記内容と前記コピーの前記比較が、
ａ) ハードウエアコンパレータにより、あるいは
ｂ) マイクロコードにより、
実施されることを特徴とする請求項１から３のいずれかに記載の方法。
【請求項５】
前記比較が前記データのビット毎の比較により実施されることを特徴とする請求項１から４のいずれかに記載の方法。
【請求項６】
前記比較が前記レジスタ内容の減算により実施されることを特徴とする請求項１から４のいずれかに記載の方法。
【請求項７】
請求項１から６のいずれかに記載の方法を実施するためのコンピュータにおいて、
前記保護されるべきレジスタを少なくとも１つ含む第１のレジスタメモリセット、
前記保護されるべきレジスタの内容のコピーを受け取る前記冗長レジスタを少なくとも１つ含む第２のレジスタメモリセット、及び
前記保護されるべきレジスタと前記冗長レジスタの前記内容を、要求に応じて比較する前記コンパレータ、
を備えることを特徴とするコンピュータ。
【請求項８】
制御ユニットが、前記コンパレータを、前記コンピュータの命令実行毎に前記比較を実施するように制御することを特徴とする請求項７に記載のコンピュータ。
【請求項９】
請求項７または８に記載のコンピュータを有するチップカード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レジスタ内容の不正操作からコンピュータ、特に、マイクロコントローラ(μＣ)またはマイクロプロセッサ(μＰ)を保護するための方法に関する。本発明は、また、そのような方法またはコンピュータを利用するチップカードに関する。
【背景技術】
【０００２】
不正操作からコンピュータパーツを保護することは、多くの用例において、例えばコンピュータが装備されたチップカードを用いたコンピュータの利便的使用に不可欠である。データ暗号化により不正操作からレジスタを保護することが知られている。
【０００３】
特許文献１は、中央処理装置によるそれぞれのプログラム命令の実行後、相異なるレジスタの内容に関して論理演算、特にＸＯＲ(排他的論理和)演算が実施され、演算結果がメモリに格納され、次の命令の実行の前に同じレジスタの内容に同じ演算が実施され、得られた演算結果が先に格納された演算結果と比較される、不正操作からコンピュータを保護するための方法を開示している。この方法は有用であることが実証されている。
【特許文献１】独国特許発明第１９９１８６２０Ａ１号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明の課題は上述した種類のコンピュータを保護するための別の方法を提示することにある。
【課題を解決するための手段】
【０００５】
上記課題に対して、本発明は、保護されるべきレジスタの内容のコピーを作成し、要求に応じて、保護されるべきレジスタの内容をそのコピーと比較することにより、レジスタ内容の不正操作からコンピュータを保護する方法を提供する。
【０００６】
要求に応じて比較するとは、例えば、特に、保護されるべきレジスタの内容が先の命令の実行と次に仕掛かっている命令実行の間の期間に不正操作を受けている否かを検出するために、命令の実行毎に比較を実施することを意味する。これにより、その内容が実行されるべき命令シーケンスを定めるプログラムカウンタのインクリメントに、比較のタイミングを合せることが可能になる。
【０００７】
さらなる保護を得るため、本発明の好ましい実施形態においては、保護されるべきレジスタの内容を改変された形態のコピーとして格納するようになっている。これは、あるレジスタがレジスタ内容の不正な比較操作により認識され、よって保護が無効化されることを防止する。改変により、保護されるべきレジスタの内容とコピーとの単純な比較が容易にはできなくなる。
【０００８】
データの改変はビット毎の反転により行うことができる。これにより、保護されるべきレジスタの内容のコピーに、保護されるべきレジスタの内容の１の補数の形態が与えられる。この場合、例えば、保護されるべきレジスタの内容からコピーを単純に減算することにより比較を実施し得ることが利点である。一致していれば、減算結果の値はゼロになる。ゼロでない値は、保護されるべきレジスタ(またはコピー)にあるデータの改竄を意味する。
【０００９】
本発明の一実施形態において、保護されるべきレジスタ及び／またはコピーを格納しているレジスタが遮蔽される。そのような遮蔽は、例えば関係するレジスタの間接アドレス指定により実施できる。
【００１０】
本発明の特殊な実施形態として、保護されるべきレジスタとコピー用につくられたレジスタの間の物理的関係の隠蔽が提案される。そのような隠蔽は、例えば半導体メモリ内の保護されるべきレジスタとは異なる場所にレジスタをつくることにより実施できる。保護されるべきレジスタから隔てられた半導体メモリ内の場所へのコピー用を目的とするレジスタの作成は、実空間的分離だけでなく、コピーを受け取るレジスタのアドレスを改変することによって仮想的すなわち論理的分離も意味する。
【００１１】
保護されるべきレジスタとコピーを受け取るレジスタの両内容は、ハードウエアコンパレータを用いる比較、あるいはマイクロコードによる比較が、特に好ましい。この比較態様は特に高速であり、プログラム処理中の実行を無視可能な程度にしか遅延させない。レジスタ内容をビット毎に比較するコンパレータは既知である。上記の可能態様の別態様として、比較されるべきレジスタ内容を一致に関して減算／加算により検査することができる。コピーが保護されるべきレジスタの内容の未改変版であれば、通常の減算が実施される。結果がゼロでない場合は、不正操作があったという信号がコンピュータの中央処理装置(ＣＰＵ)に送られる。次いで、この不正操作検出を処理するために専用のプログラムステップが実行される。
【００１２】
保護されるべきレジスタの内容の反転版がコピー用につくられたレジスタに格納されていれば、２つのレジスタの内容を単に加え合せるだけで減算を実現できる。
【００１３】
本発明の特殊な実施形態では、保護されるべきレジスタの内容のコピーを部分的にしか不正操作し得ないようにすることもできる。８ビット長レジスタを、コピーとして未改変の第１の部分及び反転された第２の部分を格納するため、それぞれ４ビットの２つの等長領域に分割することもできる。この特殊タイプの改変は次いで実施される比較において考慮される。
【００１４】
本発明はさらに、上述した方法を実施するためのマイクロコントローラまたはマイクロプロセッサの形態のコンピュータを提供する。上記のコンピュータは、保護されるべきレジスタを少なくとも１つ含む第１のレジスタメモリセットを備え、保護されるべきレジスタ内容の(おそらくは改変されている)コピーを受け取るための冗長レジスタを少なくとも１つ含む第２のレジスタメモリセットをさらに備え、要求に応じてレジスタ内容を比較し、比較結果に応じてコンピュータの中央処理装置による処理を開始させるコンパレータをさらに備える。
【００１５】
最後に、本発明は、上記のようなコンピュータが装備されたチップカードも提供する。
【発明を実施するための最良の形態】
【００１６】
以降、図面を参照して本発明のいくつかの実施形態をさらに詳細に説明する。
【００１７】
図１はコンピュータをブロック図の形態で簡略に示す。本発明は、特にマイクロコントローラ(μＣ)またはマイクロプロセッサ(μＰ)に関するが、これらには限定されない。特殊な用例は、あるレジスタの内容を不正操作から保護する必要があるチップを備えたチップカードである。
【００１８】
図１によれば、実行されるべきプログラムがＲＯＭ(読出専用メモリ)として形成されたプログラムメモリ２に格納される。プログラムカウンタ(ＰＣ)６の内容に応じて、実行されるべき命令がプログラムメモリ２から読み出される。読み出された命令は次いでバッファまたは命令レジスタ４に入れられる。
【００１９】
プログラムカウンタ６はＲＡＭ(ランダムアクセスメモリ)２０にあるレジスタセットの一部である。このレジスタセットは図１に参照数字１４で示され、プログラムカウンタ６に加えて、さらにレジスタＲ１，Ｒ２，...及びスタックポインタ(ＳＰ)を含む。プログラムカウンタ６とは別のレジスタは図１に参照数字８で示される。
【００２０】
ＲＡＭ２０内の、レジスタセット１４から論理的及び／または空間的に隔てられた場所に、本例では３つの−冗長レジスタ１０ａ，１０ｂ，１０ｃをもつ、第２のレジスタセット１２がある。これらの冗長レジスタ１０ａ，１０ｂ，１０ｃはプログラムカウンタ、レジスタＲ１及びスタックポインタのコピー(それぞれＰＣ'，Ｒ１'及びＳＰ')を格納する。
【００２１】
制御ユニット１００(ＣＰＵ)が、プログラムメモリ２、ＲＡＭ２０及び命令レジスタ４に制御線を介して接続され、さらに、レジスタセット１４のためのメモリ領域に接続されたＡバス及びレジスタセット１２のためのメモリ領域に接続されたＢバスの形態で図１に簡略に示される、バス接続を介してＲＡＭ２０に接続される。
【００２２】
図２は、保護されるべきレジスタ６にあるプログラムカウンタ(ＰＣ)を冗長レジスタ１０ａにあるプログラムカウンタコピー(ＰＣ')と比較するためのコンパレータアレイを簡略に示す。２つのレジスタの内容は減算器２２により減算される。レジスタ内容が一致すれば結果はゼロである。ゼロでない値は、レジスタ６，１０ａのいずれか一方に(または両レジスタに)不正操作があったことを示す。
【００２３】
コンピュータの動作中、プログラムカウンタ(ＰＣ)が、命令がプログラムメモリ２から読み出される前に、先に冗長レジスタ１０ａに格納されたプログラムカウンタのコピー(ＰＣ')と比較される。一致したときに限り、プログラムメモリ２の読出動作が実施され、読み出された命令が次いで命令レジスタ４に入れられて、実際に実行される。ＰＣとＰＣ'が一致しない場合には、実行が停止され、本発明にはほとんど係わりのないエラールーチンが実施される。
【００２４】
図２にしたがうコンパレータの実施形態において、冗長レジスタ１０ａにあるコピーＰＣ'はＰＣの正確なコピーであるとされている。
【００２５】
あるいは、コピーは、保護されるべきレジスタの内容の改変版の形態で格納することもできる。
【００２６】
図３は、そのような改変コピーの例として、レジスタＲ１の内容のビット毎反転版の格納を示す。それぞれの命令の実行後、図３に簡略化して示されるインバータ２６により、Ｒ１の内容がビット毎に反転されて、レジスタＲ１の内容のビット毎反転版がコピーＲ１'として冗長レジスタ１０ｂに格納される。ビット毎反転により、コピーＲ１'はＲ１の内容の１の補数に相当する。２つのレジスタの内容を加え合せることにより、レジスタ内容が一致していれば、すなわちレジスタ内容の不正操作がなければ、比較の結果はゼロとなるはずである。
【００２７】
図４は、コンパレータを形成するための、または、図４でもレジスタＲ１を参照して示される、保護されるべきレジスタの内容のコピーをつくるための、別の改変態様を示す。図４によれば、図４では参照数字３０で示されるレジスタＲ１が、例えばそれぞれが４ビットである２つの等長半領域３０ａ及び３０ｂに分割される。コピーＲ１'として、レジスタ３０の２つの半内容に対し、一方では部分コピーとして未変更が選ばれ、他方ではビット毎反転が選ばれる。レジスタの左半領域３０ａの内容は、未変更のまま冗長レジスタ３２の左半領域３０ａにおいて冗長レジスタ３２にコピーされる。レジスタの右半領域３０ｂの内容は、図４に記号で示されるインバータ３６により、ビット毎に反転されて、冗長レジスタ３２の右半領域３２ｂにロードされる。したがって、保護されるべきレジスタの内容のコピーＲ１'は、一部は保護されるべきレジスタの内容と同じであり、一部は保護されるべきレジスタの内容のビット毎反転版である。
【００２８】
減算器４０を用いる比較を実施するために、レジスタ３０及び３２のそれぞれの左半領域３０ａ及び３２ａは減算され、レジスタ３２の右半領域３２ｂにある版のデータは、インバータ３４を用いて再びビット毎に反転されてレジスタ３０の右半領域３０ｂから差し引かれる。この場合にも、計算すなわち比較の結果がゼロになるときに限り、レジスタ内容が一致し、すなわち、保護されるべきレジスタの不正操作はなかったことになる。
【図面の簡単な説明】
【００２９】
【図１】１つまたはそれより多くのレジスタの内容を不正操作から保護するための手段を備える、組織的に配列されたコンピュータのブロック図を示す
【図２】保護されるべきレジスタと冗長レジスタの内容を比較するための装置のブロック図を示す
【図３】図２に代わる実施形態のブロック図を示す
【図４】２つのレジスタの内容を比較するための回路の、図２に代わる実施形態のブロック図を示す
【符号の説明】
【００３０】
２    プログラムメモリ
４    命令レジスタ
６    プログラムカウンタ
８，３０    レジスタ
１０ａ，１０ｂ，１０ｃ，３２    冗長レジスタ
１２，１４    レジスタセット
２０    ＲＡＭ
２２，４０    減算器
２６，３４，４６    インバータ
１００    制御ユニット
【図１】
0004537003.tif 000002
【図２】
0004537003.tif 000003
【図３】
0004537003.tif 000004
【図４】
0004537003.tif 000005