(57)【要約】      （修正有）【課題】ＩＣカードなどに用いられる情報処理装置において、処理速度および実装面積の増加を抑えつつ、かつ、分岐処理の誤動作を実行時に効果的に検出する。【解決手段】命令デコーダによりデコードした命令コードが分岐命令であるときに、第一のプログラムカウンタの値を第二のプログラムカウンタ１００４にコピーし、第一のプログラムカウンタの値と命令コードレジスタから読み出した命令コードに含まれるアドレスの変位値を加算１００２した値、あるいは、第一のプログラムカウンタの値と定数値を加算１００１した値１００３を、分岐命令の条件に従って、アドレスレジスタに格納する。アドレスレジスタの値と第二のプログラムカウンタ１００４の値とを減算し、減算結果と命令コードレジスタから読み出した命令コードに含まれるアドレスの変位値、あるいは、定数値１００５を比較１００６して比較結果を出力する。【選択図】図２
2006085416.tif 000002
【特許請求の範囲】
【請求項１】
命令コードレジスタと、命令デコーダと、第一のプログラムカウンタと、算術論理演算回路と、アドレスレジスタとを備える情報処理装置において、
さらに、第二のプログラムカウンタと、減算器と、比較器とを有し、
前記命令デコーダによりデコードした命令が分岐命令であると判定された命令に対して、
前記第一のプログラムカウンタの値を前記第二のプログラムカウンタにコピーし、
前記第一のプログラムカウンタの値と前記命令コードレジスタから読み出した命令コードに含まれるアドレスの変位値または定数値とを、前記算術論理演算回路により加算して、分岐命令の条件に従って、前記算術論理演算回路による加算結果を前記アドレスレジスタに格納し、
前記アドレスレジスタの値と前記第二のプログラムカウンタの値とを、前記減算器により減算し、
前記減算器による減算結果と前記命令コードレジスタから読み出した命令コードに含まれるアドレスの変位値または定数値とを、前記比較器により比較して比較結果を出力することを特徴とする情報処理装置。
【請求項２】
前記命令コードレジスタとして、第一の命令コードレジスタと第二の命令コードレジスタとを備え、
命令コードを交互に前記第一の命令コードレジスタと前記第二の命令コードレジスタに代入することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記命令コードレジスタとして、第一の命令コードレジスタと第二の命令コードレジスタとを備え、
前記第一の命令コードレジスタに入力された命令コードは、前記第二の命令コードレジスタにコピーされ、
前記第一の命令コードレジスタに保存された命令コードから読み出した命令コードに含まれるアドレスの変位値は、前記第一のプログラムカウンタの値との加算のための前記算術論理演算回路の入力に用いられ、
前記第二の命令コードレジスタに保存された命令コードから読み出した命令コードに含まれるアドレスの変位値は、前記比較器の入力として用いられることを特徴とする請求項１記載の情報処理装置。
【請求項４】
さらに、分岐命令の条件を格納する状態レジスタとして、第一の状態レジスタと第二の状態レジスタとを備え、
分岐命令の処理開始前に前記第一の状態レジスタの値が前記第二の状態レジスタにコピーされることを特徴とする請求項１記載の情報処理装置。
【請求項５】
前記第一の状態レジスタの値をビット反転して、前記第二の状態レジスタにコピーされることを特徴とする請求項４記載の情報処理装置。
【請求項６】
前記第一の状態レジスタの値が変化したときに、前記第一の状態レジスタの値が前記第二の状態レジスタにコピーされることを特徴とする請求項４記載の情報処理装置。
【請求項７】
さらに、ビット長削減装置を備え、ビット長削減装置は前記比較器の入力線の一部のビットを選択して出力することを特徴とする請求項１記載の情報処理装置。
【請求項８】
さらに、乱数生成装置を備え、前記ビット長削減装置では、前記乱数生成装置の出力を用いて、選択する入力線のビットをランダムに選択することを特徴とする請求項７記載の情報処理装置。
【請求項９】
装置内部のビット線の値を反転するビット反転装置と、前記ビット反転装置の動作の有無を決定する信号線を有することを特徴とする請求項１記載の情報処理装置。
【請求項１０】
装置内部のビット線の値を設定するビット設定装置と、前記ビット設定装置への入力を与える信号線を有することを特徴とする請求項１記載の情報処理装置。
【請求項１１】
命令コードレジスタと、第一の命令デコーダと、第二の命令デコーダと、第一のプログラムカウンタと、第二のプログラムカウンタと、第一の加算器と、第二の加算器と、第一のアドレスレジスタと、第二のアドレスレジスタと、比較器とを備える情報処理装置において、
前記第二の命令デコーダによりデコードした命令が分岐命令であると判定された命令に対して、
前記第一のプログラムカウンタの値を第二のプログラムカウンタにコピーし、
第一のプログラムカウンタの値と前記命令コードレジスタから読み出した命令コードに含まれるアドレスの変位値または定数値とを、前記第一の加算器により加算して、分岐命令の条件に従って、前記第一の加算器による加算結果を前記第一のアドレスレジスタに格納し、
第二のプログラムカウンタの値と前記命令コードレジスタから読み出した命令コードに含まれるアドレスの変位値または定数値とを、前記第二の加算器により加算して、分岐命令の条件に従って、前記第二の加算器による加算結果を前記第二のアドレスレジスタに格納し、
前記第一のアドレスレジスタに格納された値と前記第二のアドレスレジスタに格納された値とを、前記比較器により比較して比較結果を出力することを特徴とする情報処理装置。
【請求項１２】
命令コードレジスタと、命令デコーダと、第一のプログラムカウンタと、算術論理演算回路と、アドレスレジスタと、第二のプログラムカウンタと、減算器と、比較器とを備える情報処理装置のエラー検出方法において、
前記命令デコーダによりデコードした命令コードが分岐命令であるときに、
（１）前記第一のプログラムカウンタの値を前記第二のプログラムカウンタにコピーするステップ、
（２）前記第一のプログラムカウンタの値と前記命令コードレジスタから読み出した命令コードに含まれるアドレスの変位値または定数値とを、前記算術論理演算回路により加算して、分岐命令の条件に従って、前記算術論理演算回路による加算結果を前記アドレスレジスタに格納するステップ、
（３）前記アドレスレジスタの値と前記第二のプログラムカウンタの値とを、前記減算器により減算するステップ、
（４）前記（３）のステップの前記減算器による減算結果と前記命令コードレジスタから読み出した命令コードに含まれるアドレスの変位値または定数値とを、前記比較器により比較して比較結果を出力するステップからなることを特徴とする情報処理装置のエラー検出方法。
【請求項１３】
命令コードレジスタと、命令デコーダと、第一のプログラムカウンタと、第二のプログラムカウンタと、テンポラリレジスタと、アドレスレジスタと、状態レジスタと、第一の加算器と、第二の加算器と、減算器と、比較器と、定数レジスタと、相対アドレスレジスタとを備える情報処理装置のエラー検出方法において、
前記命令デコーダによりデコードした命令が分岐命令であるときに、
（１）前記第一のプログラムカウンタを第二のプログラムカウンタにコピーするステップ、
（２）前記第一のプログラムカウンタの値と前記命令コードレジスタから読み出した命令コードに含まれる相対アドレス値を、前記相対アドレスレジスタに格納するステップ、
（３）前記第一のプログラムカウンタの値と前記定数レジスタの値とを、前記第一の加算器により加算し、前記第一の加算器による加算結果を前記第一のプログラムカウンタに格納するステップ
（４）前記第一のプログラムカウンタの値と前記相対アドレスレジスタの値とを、前記第二の加算器により加算し、前記第二の加算器による加算結果を前記テンポラリレジスタに格納するステップ、
（５）前記命令コードレジスタの値と前記状態レジスタの値とに基づき、前記第一のプログラムカウンタの値、あるいは、前記テンポラリレジスタのいずれか一方を前記アドレスレジスタに格納するステップ、
（６）前記第二のプログラムカウンタの値から前記（５）のステップにおいて格納されたアドレスレジスタの値を、前記減算器により減算するステップ、
（７）前記（６）のステップの前記減算器による減算結果と、前記命令コードレジスタの値と前記状態レジスタとの値に基づいて選択した前記定数レジスタの値、あるいは、相対アドレスレジスタの値のいずれか一方とを比較し、比較結果を出力するステップからなることを特徴とする情報処理装置のエラー検出方法。
【請求項１４】
命令コードレジスタと、第一の命令デコーダと、第二の命令デコーダと、第一のプログラムカウンタと、第二のプログラムカウンタと、第一の加算器と、第二の加算器と、第一のアドレスレジスタと、第二のアドレスレジスタと、比較器とを備える情報処理装置のエラー検出方法において、
前記第二の命令デコーダによりデコードした命令コードが分岐命令であるときに、
（１）前記第一のプログラムカウンタの値を第二のプログラムカウンタにコピーし、
（２）前記第一のプログラムカウンタの値と前記命令コードレジスタから読み出した命令コードに含まれるアドレスの変位値または定数値とを、前記第一の加算器により加算して、分岐命令の条件に従って、前記第一の加算器による加算結果を前記第一のアドレスレジスタに格納するステップ、
（３）前記第二のプログラムカウンタの値と前記命令コードレジスタから読み出した命令コードに含まれるアドレスの変位値または定数値とを、前記第二の加算器により加算して、分岐命令の条件に従って、前記第二の加算器による加算結果を前記第二のアドレスレジスタに格納するステップ、
（４）前記第一のアドレスレジスタに格納された値と前記第二のアドレスレジスタに格納された値とを、前記比較器により比較して比較結果を出力するステップを特徴とする情報処理装置のエラー検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、および、その情報処理装置のエラー検出方法に係り、高いセキュリティを要しかつ小型化が要求される、ＩＣカード用マイコンに代表される組み込み用マイコンに用いて好適であって、誤演算を検出することのできるフォールトディテクタブル(Fault Detectable)な情報処理装置のエラー検出方法に関するものである。
【背景技術】
【０００２】
近年、各種機器の情報化が進み、各種情報の蓄積や、情報処理装置間の情報交換が頻繁におこなわれるようになっている。それに伴い、電子マネーや、課金情報、個人情報など、重要なデータを機器間で処理・転送する場面が増えている。このような処理を安全に行うための技術として、情報の認証技術が重要である。
【０００３】
情報の認証には、パスワード認証、生体情報認証技術などが用いられる。ユーザーが保持する情報を入力させ、入力した情報とシステムが保持している情報が一致すれば認証が成功したと判断し、不一致であれば認証が失敗したと判断する。
【０００４】
認証技術の安全性は、比較する情報量に依存する。一般に、比較する情報量を多くするほど、より偽造が困難になるため安全性は高いと考えられる。比較には一致検査が用いられる。指紋認証のように、情報の入力方法自体に偽造に対する安全性が備わっている場合は、入力された情報と秘密に保持している情報の一致をそのまま検査すればよい。しかし、ＰＩＮ (Personal Identity Number)を数字キーボードを用いて入力する場合など、情報の入力方法自体に偽造に対する安全性が備わっていない場合は、公開鍵暗号方式によって情報を安全に共有する方法を用いて、入力情報の安全性を確保する。いずれの場合も、最終的には、検査の合格/不合格の判定処理が必要となる。
【０００５】
以下では、パスワード認証の一般的な手順を説明する。
図２０は、パスワード認証の一般的な手順を示すフローチャートである。
【０００６】
ユーザーが四桁のパスワードを入力する（３０１）と、情報処理装置は、先ず、第一桁目を装置内部に保持している情報と比較し（３０２）、両者が一致すればさらに第二桁目の情報を比較する（３０３）。続いて、第二桁目の情報が一致すれば続けて第三桁目の情報を比較し（３０４）、第三桁目の情報が一致すれば引き続き第四桁目の情報を比較する（３０５）。最終的に、第四桁目の情報も一致すれば、パスワード認証が成功したと判断して、合格信号「ＰＡＳＳ」を出力する（３０６）。
【０００７】
このような一致検査の途中で、一桁でもユーザーの入力とシステムの保持値が一致しない場合は、パスワード認証が失敗したと判断して、不合格信号「ＦＡＩＬ」を出力する（３０７）。
【０００８】
この処理においては、一致検査とそれに伴う分岐処理が重要な役割を果たしている。条件分岐の処理が誤っておこなわれれば、不正な入力に対しても合格信号「ＰＡＳＳ」を出力することになるためである。不正な入力に対して、正しく不合格信号を出力するためには、条件判定の正しさを保証する必要がある。上記のパスワード認証は、ユーザーからの入力値を、システム内部の値と直接比較する例である。生体認証についても、入力値の変換処理がおこなわれたり、直接比較ではなく値の範囲を比較する場合があるが、基本的な考え方はパスワード認証と同様である。
【０００９】
また、情報認証技術としては、ＲＳＡなどの公開鍵暗号方式が広く用いられるている。公開鍵暗号方式では、暗号化用の鍵を公開してデータを暗号化しても、秘密に保持している復号用の鍵以外では復号することができない。また、公開した暗号化用の鍵から秘密に保持している復号用の鍵を推定することは計算量的に困難である。よって、公開鍵暗号を用いて、送受信者の間で事前に鍵を共有すること無くデータの安全な送受信が可能である。
【００１０】
ところが、実際にＲＳＡを情報処理装置に実装すれば、誤演算を起こす可能性をゼロにすることは容易ではない。なぜならば、誤演算の原因は、情報処理装置の設計ミスによるものや情報処理装置の実使用環境での安定性に依存するものなど、様々に考えられるためである。さらには、外部からの故意の誤動作誘発によるものなども考えられる。特に、外部からの故意による誤動作誘発に関しては、対策を事前に予測することが困難である。
【００１１】
情報処理装置に対するアタッカーの主たる目的は、個人情報や暗号鍵などの秘密情報を取得することや、機能の使用制限を解除することによって実質的な利益を得ることである。誤動作の原因として、機器の故障のときもあるし、誤動作はアタッカーによる故意の攻撃の結果である場合もあるが、より高いリスクを見込むためには、アタッカーによる故意の攻撃に対する対策がなされる必要かある。
【００１２】
情報処理装置の誤動作によって引き起こされる現象として、データの破壊や命令の不完全な処理が挙げられる。ほとんどの命令は、ＣＰＵ内部のレジスタや記憶装置の値を変化させるための命令であるため、そのような命令については、不完全な処理によりデータが破壊される。データの破壊は、データを冗長化したり、パリティビットなどの余分な情報を持つことにより、検出して復元することができる。
【００１３】
命令の不完全な処理については、特に、分岐命令が特に問題となる。データの完全性を保証するための一致検査にも分岐命令が使われるため、分岐命令が完全に動作しない状態では、データの完全性を保証し得ない。例えば、上記のＲＳＡにおける誤演算を検出するために、分岐命令を使用する場合でも、分岐命令の処理が不完全だと誤演算を検出し得ない。
【００１４】
また、分岐命令の不完全処理により処理系列が誤った場合に、重要な情報漏洩が起こされる危険がある。すでに例示したパスワード認証では、分岐命令の不完全処理により、本来ならば不正パスワードとしてプログラムを終了するべき場合でも、正当なパスワードと判定してプログラムを継続してしまう。
【００１５】
データの誤りは、信頼できる初期値を始点として同一の処理を二度以上行い、結果を比較することで検出することができるが、分岐命令においては、独自の誤動作対策を実施する必要がある。
【００１６】
従来の分岐命令の誤動作対策として、主として二種類の方法が開示されている。
一つは、分岐先のアドレス情報を事前(コンパイル時など)に生成・保持しておき、実行時に、事前に予測されたアドレス以外のアドレスに分岐した場合に、検出する方式である。
【００１７】
以下の特許文献１の「プロセッサの以上検出方法」では、分岐先の命令のオペランドに、分岐先として有効である旨のチェックビットを付加して記憶しておき、分岐誤りを検出する方法を開示している。チェックビットが付加されていない命令に分岐した場合は、エラーとして検出することができる。付加ビットの要・不要はプログラムのコンパイルの段階で判定することができる。これは、ソフトウェアによる対策であり、オペランドにそのようなビットを付加できるケースに使用が限定される。
【００１８】
また、以下の特許文献２の「マイクロコンピュータの誤動作防止回路」では、分岐命令の実行時に分岐可能アドレスであるかどうかを検査して、分岐命令の誤動作を検出する回路を開示している。この回路では、分岐先のメモリと共通のアドレスを有しかつ分岐命令等での分岐先であることを示すデータが格納されている分岐情報メモリを備える。分岐命令で分岐することができるアドレスは、プログラム作成の段階でわかるので、これを情報として保持しておく。分岐命令実行時に分岐アクセス可能なアドレスであるかどうかを、分岐情報メモリに記憶されている情報と比較することで、分岐の可否を検査する。このように構成することで、分岐不可能なアドレスに制御が移行してデッドロックや無限ループに陥る可能性は低くなる。
【００１９】
しかしながら、分岐先が有効であかどうかを示すデータをすべて保存するためには、大容量の記憶装置が別途必要である。この誤動作防止回路は、実装規模が大きくなるため、ＩＣカード用マイコンなどの組み込み用マイコンには不適当である。
【００２０】
今一つは、命令を複数回処理し(あるいは、複数のモジュールによる並列動作させ)、結果の一致・不一致によってエラーの判定を行う方法である。
【００２１】
以下の特許文献３の「冗長システム」では、同一の命令を同期して実行する複数のモジュールからなる冗長システムにおいて、複数モジュール内の内部信号同士を比較し、一致検査をおこなうことで処理中の誤動作の検出をおこなう方法を開示している。この方式は、同一機能を有する複数モジュールの機能テストをおこなうことを目的としているが、途中の誤動作を検出することができる点で優れている。このシステムでは、命令の種別は限定していないが、分岐命令の誤動作についても、もちろん検出することができる。しかしながら、ＩＣカードなどのマイコンにおいては、実装面積の点で制約が厳しく、同一機能をそのまま複数化することは、最適であるとはいえない。
【００２２】
【特許文献１】特開平１０−３３３９３６号公報
【特許文献２】特開平５−２５０２０９号公報
【特許文献３】特開２００３−１７７９３５号公報
【発明の開示】
【発明が解決しようとする課題】
【００２３】
上記従来技術の特許文献１では、プログラムのコンパイル時に決定した、分岐先として有効であることを示すビットをメモリアドレスまたは命令コードに付加し、分岐命令実行時に同ビットが付加されているかどうかを検査して、誤動作の検出をおこなった。また、特許文献２では、回路に分岐情報メモリを持たせることにより、誤動作を防止することができる。さらに、特許文献３では、モジュールを冗長化することにより、分岐命令が正常に実行されていることを判定する。
【００２４】
特許文献１のビットを付加する方法であれば、少なくとも有効なメモリ空間に対して、アクセス単位ごとに最低１ビットの情報を付加する必要がある。また、分岐先への相対アドレスとして実行時にレジスタに保存されている値を使用する場合など、プログラムの処理系列がコンパイル時に決定されない場合には、この方法を使用することができない。
【００２５】
また、特許文献２は、余分なメモリと判定回路を付加する必要があるため、回路が複雑になり、ＩＣカードを小型化すること、ＩＣカードを安価に製造することについては不利になる。
【００２６】
一方、特許文献３の同じ処理を冗長化したモジュールで実行して、その結果を比較する方法は、高い確度で誤動作の検出がおこなえるものの、複数の同機能の装置が必要になるため、２倍以上の実装面積を要することから、特に小型化・低消費電力化が求められるＩＣカード用マイコンや組み込み用マイコンなどでは、実使用および実装上が困難である。
【００２７】
また、同一の装置で、複数回実行して、結果を比較する方法では、少なくとも２倍以上の処理時間が必要となり、処理性能上不利になる。
【００２８】
本発明は、上記問題点を解決するためになされたもので、その目的は、ＩＣカードなどに用いられる情報処理装置において、処理速度および実装面積の増加を抑えつつ、かつ、分岐処理の誤動作を実行時に効果的に検出できる情報処理装置を提供することにある。
【課題を解決するための手段】
【００２９】
本発明の情報処理装置は、命令コードレジスタと、命令デコーダと、第一のプログラムカウンタと、算術論理演算回路と、アドレスレジスタとを備える情報処理装置において、さらに、第二のプログラムカウンタと、減算器と、比較器とを有する。
【００３０】
そして、命令デコーダによりデコードした命令コードが分岐命令であるときに、第一のプログラムカウンタの値を前記第二のプログラムカウンタにコピーし、第一のプログラムカウンタの値と命令コードレジスタから読み出した命令コードに含まれるアドレスの変位値を、算術論理演算回路により加算した値、あるいは、第一のプログラムカウンタの値と定数値を加算した値を、分岐命令の条件に従って、アドレスレジスタに格納する。
【００３１】
また、アドレスレジスタの値と第二のプログラムカウンタの値とを、減算器により減算し、減算器による減算結果と命令コードレジスタから読み出した命令コードに含まれるアドレスの変位値、あるいは、定数値と比較器により比較して比較結果を出力する。
【００３２】
また、本願の情報処理装置は、第二の命令コードレジスタを備え、先読み処理による高速な処理をおこなう場合にもエラー検出をおこなうことができる。また、比較するビット位置を限定することにより、エラー検出に必要な処理量を減らし、比較するビット位置を動的かつランダムに変更することで、アタッカーの攻撃を難しくする。さらに、レジスタの値を相補的な値として保持することで、アタッカーによる攻撃への耐性を高くする。
【発明の効果】
【００３３】
本発明によれば、ＩＣカードなどに用いられる情報処理装置において、処理速度および実装面積の増加を抑えつつ、かつ、分岐処理の誤動作を実行時に効果的に検出できる情報処理装置を提供することができる。
【発明を実施するための最良の形態】
【００３４】
以下、本発明に係る各実施形態を、図１ないし図１９を用いて説明する。
【００３５】
〔一般的な情報処理装置〕
最初に、本発明の実施形態を理解するために、図１４ないし図１９を用いて従来技術に係る一般的な情報処理装置について説明する。
【００３６】
先ず、図１４を用いて一般的な情報処理装置（ＣＰＵ）が用いられるマイコンの構成の概要について説明する。
図１４は、一般的なマイコンの全体構成図である。
【００３７】
情報処理装置（ＣＰＵ）２０１は、記憶装置２０４に保存されたプログラム２０６に従い、データ格納部２０５に格納されているデータを処理する。演算の種類により、コプロセッサ２０２を使用することで高速な演算をおこなうことができる。ＣＰＵ２０１は、入出力ポート２０３を通じて外部とのデータ送受信をおこなうことができる。また、ＣＰＵ２０１間の通信も、入出力ポート２０３を通じておこなう。
【００３８】
このようなマイコンは、スマートカードのＩＣチップ部などに実装される。
【００３９】
次に、図１５ないし図１９を用いて一般的な情報処理装置の条件分岐命令について説明する。
図１５は、一般的な情報処理装置の構成図である。
図１６は、ＡＬＵの機能を用いて実現したＩＮＣの一例の構成図である。
図１７は、一般的な情報処理装置の分岐命令処理をおこなう部分の構成図である。
図１８は、分岐命令を実行する情報処理装置の実行部を示したものである。
図１９は、分岐命令の処理シークエンスとデータシークエンスをあらわす図である。
【００４０】
先ず、情報処理装置（ＣＰＵ）４０１内部で次に読み出すべきメモリアドレスを保持しているアドレスレジスタＡＲ４０７の値を、情報処理装置内分のアドレスバスＡＢ４１０を通じて記憶装置に送信する。記憶装置は、受信したアドレスに記憶されているデータを、データバスＤＢ４１１を通じて送信する。得られたデータは、ＣＰＵ４０１内部の命令コードレジスタＩＲ４０９に保存される。ＩＲ４０９の値は、続いて命令コードデコーダＰＬＡ（Programable Logic Array）４０３で、実行部４０２での処理を定義するマイクロ命令列に変換される。また、命令コードに含まれるデータ部は、データ部として、そのまま実行部に渡される。実行部では、受け取ったマイクロ命令列にしたがって、ＣＰＵ内部の算術論理演算装置ＡＬＵ（Arithmetic and Logic Unit）４０４を用いて、レジスタ部ＲＥＧ４０５のレジスタ間の算術・論理処理や、プログラムカウンタの設定等をおこなう。命令コード以外のデータを記憶装置とＣＰＵ４０１間でやり取りする場合は、データレジスタＤＲ４０８を用いる。この間に、記憶装置の次のアドレスから引き続いてデータを取得できるように、アドレス更新装置ＩＮＣ４０６によってＲＥＧに備えられているプログラムカウンタを更新する。プログラムカウンタの更新は、命令コードによらず実行されるため、実行部とは独立してＩＮＣを搭載した情報処理装置もあるが、ＡＬＵでも同等の処理をおこなうことができるので、必ずしも独立したＩＮＣは必要ではない。
【００４１】
図１６は、そのようなＡＬＵの機能を用いて実現したＩＮＣの一例を示している。図１５のＲＥＧ４０５は、図１６の汎用レジスタ群Ｒ０〜Ｒ２（５０３〜５０５）とプログラムカウンタＰＣ５０２を保持することになる。ＰＣ５０２は、実行部の内部バス５０１を通じてＡＬＵの一部である加算器５０７に送られる。加算器５０７では、ＰＣの値に定数レジスタＣＯＮＳＴ５０６（以下、格納されている定数値もＣＯＮＳＴと書くことがある）の値を加算する。加算結果は、内部バス５０９を通じてＰＣに再度設定される。その後、ＰＣの値は内部バス５０１を通じて、ＡＲに送信される。記憶装置にアクセスする際に、ＡＲの値はＡＢを通じて記憶装置に送信される。以上、ＩＮＣがＡＬＵに内蔵されている加算器を使用する例を示したが、ＡＬＵの外部にＩＮＣを持つ構成とすることもできる。
【００４２】
次に、一般的な情報処理装置における分岐命令の処理について説明する。なお、以降では、記述を簡単にするために、命令コードデコーダＰＬＡは記述せず、実行部４０２においても分岐命令に関係しない部分の記述を除いている。
【００４３】
図１７では、情報処理装置（ＣＰＵ）６０１の内部の分岐命令に特に関係する部分のみを記述している。
【００４４】
分岐命令の命令コードは、通常、命令の種類をあらわすオペコード部と、分岐先までの相対距離をあらわすオペランド部から成っている。命令コードレジスタＩＲに受信されたコードからオペコード部を取り出して、デコーダ部を用いて分岐命令であることを判定した後、オペランド部のデータが第二の加算器６０３の入力レジスタである相対アドレス格納レジスタＤＩＳＰ６０７（以下、格納されている値をＤＩＳＰと書くこともある）にセットされる。第二の加算器のもう一方の入力は、現在のアドレスを指しているプログラムカウンタＰＣであり、加算結果は一時保存レジスタＴＲ６０６にセットされる。条件分岐には、条件の成立と不成立の場合で２通りの結果があるため、両方の場合について分岐処理完了後のアドレスを計算する必要がある。すでに、条件成立の場合の分岐先アドレスは計算済みでＴＲにセットされているので、次に、条件不成立の場合の分岐先であるＰＣから定数ＣＯＮＳＴ分だけ先のアドレスを、第一の加算器６０２を用いて計算し、ＰＣを更新する。８ビットマイコンでは、多くの命令が２バイトで構成されるので、ＣＯＮＳＴとしては、２が用いられることが多い。条件の成否に対応する二つのアクセス先の計算が終了したので、最後に、状態レジスタＣＣＲ６０５に基づいて条件判定をおこなった結果に応じて、セレクタ部６０４でプログラムカウンタの値または一時保存レジスタの値の一方を選択し、アドレスレジスタＡＲにセットする。このとき、分岐後のＰＣの系列を正しくするために、同じ値がＰＣにもセットされる。
【００４５】
図１８は、分岐命令を実行するＣＰＵの実行部を示したものである。分岐命令コードは、デコーダ部ですでに解釈されており、分岐先の相対アドレスは、Ｒ０に記録されているとする。Ｒ０は、内部データバス７０１を通じて、第二の加算器７０６に送られる。ＰＣは、内部バス７０２を通じて第一の加算器７０５と第二の加算器７０６に転送される。第一の加算器による加算の結果は、内部バス７０８を通じてＰＣに格納され、第二の加算器による加算の結果は、内部バス７０７を通じてＴＲに格納される。次に、ＣＣＲの値に応じてセレクタ部７０３において、ＰＣまたはＴＲの一方を選択し、内部バス（７０４）を通じてＡＲにセットする。また、ＡＲにセットされたものと同じ値が、内部バス７０８を通じてＰＣに転送される。
【００４６】
上記の処理について、ＡＲ、ＰＣ、ＴＲの値の変化を、時系列的に記述すると、図１９に示されるようになる。
【００４７】
分岐命令処理８０１は、命令コードフェッチＦＥＴ８０２、命令デコードＤＥＣ８０３および命令実行ＥＸＥ８０４の各フェーズで構成されている。先ず、ＡＲの値に基づいて、記憶装置からの命令コードフェッチＦＥＴ８０２をおこない、命令コードを取得する。このとき、ＡＲとＰＣの値は同一である。次に命令コードが分岐命令に対応することを、命令デコードＤＥＣ８０３により、デコーダ部で確認し、マイクロ命令列を作成する間に、ＰＣの値をＴＲにコピーする。命令実行ＥＸＥ８０４のフェーズでは、ＰＣのインクリメントと、ＴＲと相対アドレスＤＩＳＰの加算をおこない、ＰＣとＴＲはそれぞれＰＣ＋ＣＯＮＳＴとＰＣ＋ＤＩＳＰを保持する。条件判定に基づいて、ＰＣまたはＴＲのいずれかの値をセレクタ部８０５で選択し、ＡＲにセットする。図に示されている例は、条件不成立の場合であり、ＰＣの値をＡＲにセットしている。そして、ＰＣの値も同時に更新される。分岐命令終了後は、ＡＲの値に基づいて、次の命令コードフェッチをおこない、引き続き記憶装置に記述されている命令列の実行をおこなう。
【００４８】
〔実施形態１〕
以下、図１ないし図３を用いて本発明に係る第一の実施形態について説明する。
図１は、本発明の第一の実施形態に係る情報処理装置の構成図である。
図２は、本発明の第一の実施形態に係る情報処理装置の分岐命令処理をおこなう部分の構成図である。
図３は、本発明の第一の実施形態に係る情報処理装置の分岐命令の処理シークエンスとデータシークエンスをあらわす図である。
【００４９】
本実施形態の情報処理装置は、図１に示すように、レジスタ群ＲＥＧ１（９０１）のほかにレジスタ群ＲＥＧ２（９０４）、減算器ＳＵＢ９０３、比較器ＣＭＰ９０２を備えている。また、アドレスレジスタＡＲからのフィードバック信号線９０５を備えている。これは、アドレスレジスタＡＲの格納された値をエラー検出のために用いるためである。
【００５０】
次に、図１の構成を持つ情報処理装置において、特に、分岐命令処理をおこなう部分を中心に説明する。
【００５１】
図２に示される本実施形態の情報処理装置の構成では、図６と比較すれば理解できるように、通常の分岐命令処理の機構に加えて、第二のプログラムカウンタＰＣと減算器ＳＵＢと比較器ＣＭＰを備えている。
【００５２】
また、図１に示したレジスタ群ＲＥＧ１（９０１）には、図２に示す第一のプログラムカウンタＰＣ１、テンポラリレジスタＴＲ、相対アドレス格納レジスタＤＩＳＰが含まれ、図１に示したレジスタ群ＲＥＧ２（９０２）には、図２に示す第一のプログラムカウンタＰＣ２、相対アドレス格納レジスタＤＩＳＰが含まれる。
【００５３】
本実施形態の情報処理装置は、図２に示されるように、命令コードレジスタＩＲに受信されたコードからオペコード部を取り出して、デコーダ部を用いて取出した命令が分岐命令であることを判定した後、オペランド部のデータとして有している相対アドレスを、第二の加算器１００２の入力となる相対アドレス格納レジスタＤＩＳＰにセットする。なお、ここでは、命令が分岐命令であることを前提として説明するため、デコーダ部については図中に記述していない。
【００５４】
次に、第一のプログラムカウンタＰＣ１の値を、第二のプログラムカウンタＰＣ２（１００４）にコピーする。
【００５５】
条件分岐は、条件の成立と不成立の二通りの結果があるため、両方の分岐処理完了後のアドレスを計算する必要がある。
【００５６】
第二の加算器１００２の入力は、ＰＣ１の値とＤＩＳＰである。そして、第二の加算器で加算された結果が、分岐条件が真の場合に分岐するべき先のアドレスとなり、これを一時保存レジスタＴＲにセットする。
【００５７】
次に、条件不成立の場合の分岐先は、ＰＣ１の値に定数ＣＯＮＳＴ分だけ先のアドレスになるので、ＰＣ１の値に定数ＣＯＮＳＴを第一の加算器１００１より計算し、その値を再びＰＣ１にセットする。多くの８ビットマイコンで、ＣＯＮＳＴは、２となる。これは、分岐命令が１バイトの命令コードと１バイトの相対アドレスという２バイトで構成されることが多いためである。分岐命令のバイト長が上記と異なる場合は、ＣＯＮＳＴは２以外の値を取る。
【００５８】
条件の真否に対応する二つのアクセス先の計算が終了すると、最後に、第一のセレクタ部１００３で、状態レジスタＣＣＲに基づいて条件判定をおこなった結果に応じて、ＰＣ１の値もしくはＴＲの値を、アドレスレジスタＡＲにセットする。
【００５９】
本実施形態の情報処理装置では、さらにＡＲの値を読み出し、減算器ＳＵＢを用いて、ＡＲの値からＰＣ２の値を減算する。続いて、第二のセレクタ部１００５で、再度ＣＣＲから値を読み出し、条件成立であればＩＲから読み出したＤＩＳＰを、条件不成立であればＣＯＮＳＴを比較器ＣＭＰにセットする。ＣＭＰのもう一方の値は、前記ＳＵＢの出力である。判定部では、ＣＭＰによる比較の結果が一致するか否かを検査する。
【００６０】
ＣＭＰの結果が一致すれば、条件分岐命令が正常におこなわれたものと判断し、不一致であれば条件分岐命令の処理になんらかのエラーがおこったものとみなしてエラー処理をおこなう。すなわち、条件成立のときの条件分岐命令が実行されるときには、正常のときは、共にＤＩＳＰの値になっているはずであり、条件不成立のときには、正常のときは、共にＣＯＮＳＴの値になっているはずである。
【００６１】
また、これらの検査処理がおこなわれている間に、ＡＲの値をＰＣ１にコピーする。引き続き、処理を継続するためには、ＡＲとして確定した値をＰＣ１に保持する必要があるためである。
【００６２】
以下、図３により本発明の情報処理装置により、エラーを検出する過程について詳説する。
【００６３】
ここで、記憶装置から読み出され、命令コードレジスタに設定されているデータ(命令コード)およびプログラムカウンタ、状態レジスタの値は、処理の開始時点において正しいことを仮定する。このように仮定するのは、処理のベースとなる命令コードレジスタおよびプログラムカウンタ、状態レジスタの値が保証されなければ、それ以降のすべての処理が保証されなくなるためである。なお、これらの値を保証するための手段の一例として、パリティを使用した、値の検査が挙げられる。
【００６４】
図３においては、ＡＲ、ＰＣ１、ＰＣ２、ＴＲおよびＤＩＦの値の変化を、命令実行のフェーズと比較し、時系列的に記述している。ＤＩＦはＳＵＢの出力線の値を表しており、ＡＲとＰＣ２の差分である。先ず、ＡＲの値に基づいて、記憶装置からの命令コードフェッチをおこない、命令コードを取得する。このとき、ＡＲとＰＣ１の値は同一である。次に、命令コードが分岐命令に対応することを、デコーダ部で確認し、マイクロ命令列を作成する間に、ＰＣ１の値をＴＲ、ＰＣ２にコピーする。実行のフェーズでは、ＰＣ１のＣＯＮＳＴ分のインクリメントと、ＴＲと相対アドレスＤＩＳＰの加算をおこない、条件判定に基づいて、ＰＣ１またはＴＲのいずれかをセレクタ部で選択し、ＡＲにセットする。
【００６５】
図３に示した例は、条件不成立の例であり、ＰＣ１の値をＡＲにセットしている。後の処理で必ずしも必要ではないが、ＰＣ１の値も同時に更新される。ＡＲ、ＰＣ２が確定した後に、両者の差分を計算し、その結果がＤＩＦに現れる。この例では、ＤＩＦの値が、期待されるＣＯＮＳＴとなっており、正常に分岐処理がおこなわれたことを示している。もしＤＩＦの値がＣＯＮＳＴと異なれば、分岐処理に異常がおこったと判断し、エラー信号を出力する。分岐命令終了後は、ＡＲの値に基づいて、次の命令コードフェッチをおこない、引き続き記憶装置に記述されている命令列の実行をおこなう。
【００６６】
分岐命令の処理中に、処理データが攻撃によって誤った場合を考える。誤りは、いかなる場所にも発生させることができるが、どのような誤りを起こすかをコントロールすることはできないと仮定する。この仮定は、特にスマートカードなどの高セキュリティ情報処理装置では妥当なものである。なぜならば、高セキュリティ情報処理装置では、回路の配線がランダムにレイアウトされたり、ダミーの配線がおこなわれていたり、といった様々な対策が施されており、アタッカーが狙った配線にエラーを起こすことが困難なためである。また、処理の開始時点で、第一のプログラムカウンタ、状態レジスタ、命令コードレジスタの値は正しいことを仮定する。これらの値は、分岐命令処理が開始される時点で確定しており、分岐命令が制御できない値であるためである。
【００６７】
先ず、ＩＲのオペランド部から読み出した相対アドレスＤＩＳＰまたはＰＣ１の値が、第二の加算器の入力として誤って入力された場合を考える。この結果、第二の加算器の結果を保存するＴＲの値が誤ることになる。ＩＲのオペランド部から読み出される正規の値をｄｉｓｐ、ＰＣ１の正規の値をＤＰｖとすると、ＴＲに保存されるべき正規の値ＤＴｖは、ＤＴｖ＝ＤＰｖ＋ｄｉｓｐである。しかし、誤りによってｅ（≠０）が加算されていると考えると、ＴＲの値は、誤りを含むＤＴ＝ＤＰｖ＋ｄｉｓｐ＋ｅとなる。条件判定の結果が偽（Ｆａｌｓｅ）であれば、ＴＲの値は使用されないため、ＴＲの値の誤りによらず、分岐処理は正常におこなわれる。条件判定の結果が真（Ｔｒｕｅ）であれば、ＴＲの値ＤＴがＡＲにセットされる。次に、ＡＲの値は、ＰＣ２の値と共にＳＵＢに入力される。ＰＣ２の値はＤＰ２ｖ＝ＤＰｖなので、減算結果Ｒｓｕｂは、Ｒｓｕｂ＝ＤＴ−ＤＰ２ｖ＝（ＤＰｖ＋ｄｉｓｐ＋ｅ）−ＤＰｖ＝ｄｉｓｐ＋ｅとなる。ＣＭＰの入力は、Ｒｓｕｂとｄｉｓｐなので、Ｒｓｕｂ＝ｄｉｓｐ＋ｅ≠ｄｉｓｐより、比較結果は不一致となりエラー処理がおこなわれる。
【００６８】
上記のように、第二の加算器の入力が誤った場合について述べたが、以上の議論は、第二の加算器の入力は正しいものの計算が誤った場合、入力も計算も正しくおこなわれたが、ＴＲへの転送中に誤った場合も同様である。さらには、条件判定後にＡＲにデータを転送する際の誤り、ＡＲからＳＵＢへのデータ転送時の誤りについても同様である。
【００６９】
次に、ＰＣ１の値または次の命令コードが記述されてるアドレスまでの相対値である定数レジスタＣＯＮＳＴが、第一の加算器の入力として誤って入力された場合を考える。この結果、第一の加算器の結果を保存するＰＣ１の値ＤＰは、定数レジスタＣＯＮＳＴの値をｃｏｎｓｔとすると、誤り分ｅが加算されたＤＰ＝ＤＰｖ＋ｃｏｎｓｔ＋ｅとなる。条件判定の結果が真であれば、ＰＣ１の値は使用されないため、ＰＣ１の値の誤りによらず、分岐処理は正常におこなわれる。条件判定の結果が偽であれば、ＰＣ１の値ＤＰがＡＲにセットされる。次に、ＡＲの値は、ＰＣ２の値と共にＳＵＢに入力される。ＰＣ２の値はＤＰ２ｖ＝ＤＰｖなので、減算結果Ｒｓｕｂは、Ｒｓｕｂ＝ＤＰ−ＤＰ２ｖ＝（ＤＰｖ＋ｃｏｎｓｔ＋ｅ）−ＤＰｖ＝ｃｏｎｓｔ＋ｅとなる。ＣＭＰの入力は、Ｒｓｕｂとｃｏｎｓｔなので、Ｒｓｕｂ＝ｃｏｎｓｔ＋ｅ≠ｃｏｎｓｔより、比較結果は不一致となりエラー処理がおこなわれる。
【００７０】
上記のように、第一の加算器の入力が誤った場合について述べたが、以上の議論は、第一の加算器の入力は正しいものの計算が誤った場合、入力も計算も正しくおこなわれたが、ＰＣ１への転送中に誤った場合も同様である。さらには、条件判定後にＡＲにデータを転送する際の誤り、ＡＲからＳＵＢへのデータ転送時の誤りについても同様である。
【００７１】
次に、ＰＣ２の値ＤＰ２が誤り、ＤＰ２＝ＤＰｖ＋ｅとなった場合を考える。条件判定の結果が真であった場合、ＡＲの値ＤＡｖは、ＤＡｖ＝ＤＴｖ＝ＤＰｖ＋ｄｉｓｐである。よって、ＰＣ２の値と、ＡＲの値の差分は、Ｒｓｕｂ＝ＤＡｖ−ＤＰ２＝（ＤＰｖ＋ｄｉｓｐ）−（ＤＰｖ＋ｅ）＝ｄｉｓｐ−ｅとなる。条件判定の結果は真であったので、ＣＭＰでは、Ｒｓｕｂ＝ｄｉｓｐ−ｅとｄｉｓｐが比較される。ＣＭＰの結果は、不一致であり、エラー処理がおこなわれる。条件判定が偽であった場合も、同様に考えて、誤りを検出することができる。入力値が正しい場合のＳＵＢの計算誤りや、条件判定による比較値選択誤り、ＣＭＰにおける比較誤りについても同様に、誤りを検出することができる。
【００７２】
次に、状態レジスタＣＣＲが誤った場合について考える。本情報処理装置では、ＣＣＲの値が二度読み出される。一度目は、ＰＣ１の値をＡＲにセットするかＴＲの値をＡＲにセットするかを選択する場面であり、二度目は、ＣＭＰにおいてＳＵＢの出力と比較するべき値を選択する場面である。ここでは、一度目の読み出しの後にＣＣＲが誤った結果、一度目は真であったが、二度目は偽となる場合について示す。一度目の条件判定は真なので、ＡＲにはＤＡｖ＝ＤＴｖ＝ＤＰｖ＋ｄｉｓｐがセットされる。ＤＡｖは、ＰＣ２の値ＤＰ２ｖ＝ＤＰｖと共にＳＵＢに入力される。ＳＵＢの出力Ｒｓｕｂは、Ｒｓｕｂ＝ＤＡｖ−ＤＰ２ｖ＝（ＤＰｖ＋ｄｉｓｐ）−ＤＰｖ＝ｄｉｓｐとなる。二度目の条件判定は偽なので、ＣＭＰに入力される値は、Ｒｓｕｂとｃｏｎｓｔである。よって、Ｒｓｕｂ＝ｄｉｓｐ≠ｃｏｎｓｔにより、エラーとして検出される。一度目は偽であったが、二度目は真となる場合についても同様に誤りを検出することができる。
【００７３】
次に、第二の加算器に入力される相対アドレスｄｉｓｐ１と、ＣＭＰに入力される相対アドレスｄｉｓｐ２が異なる場合を考える。ここで、相対アドレスｄｉｓｐ１は、ＩＲから一度目に読み出され値であり、相対アドレスｄｉｓｐ２は、ＩＲから二度目に読み出される値である。
【００７４】
いま、二度目に読み出した相対アドレスｄｉｓｐ２が誤り、ｄｉｓｐ２＝ｄｉｓｐ＋ｅとなったとする。条件判定の結果が偽であれば、この誤りとは無関係の条件分岐処理は正常に行われるため、条件判定の結果が真である場合を考える。このとき、ＡＲには、ＤＡｖ＝ＤＴｖ＝ＤＰｖ＋ｄｉｓｐがセットされており、第二のプログラムカウンタの値ＤＰ２ｖ＝ＤＰｖとの差分から、Ｒｓｕｂ＝ＤＡｖ−ＤＰ２ｖ＝（ＤＰｖ＋ｄｉｓｐ）−ＤＰｖ＝ｄｉｓｐが得られる。ＣＭＰに入力される比較値ｄｉｓｐ２は誤りを含んでいるため、比較処理でＲｓｕｂ＝ｄｉｓｐ≠ｄｉｓｐ２＝ｄｉｓｐ＋ｅとなり、誤りを検出することができる。
【００７５】
以上のように、本実施形態の情報処理装置は、分岐命令実行中のデータ誤りを効果的に検出することができる。
【００７６】
〔実施形態２〕
以下、図４を用いて本発明に係る第二の実施形態について説明する。
図４は、本発明の第二の実施形態に係る情報処理装置の構成図である。
【００７７】
本実施形態は、第一の実施形態に加えてさらに、第二の命令コードレジスタを備える情報処理装置を示している。情報処理装置を高速化する一つの方法として、先読み処理が知られている。例えば、ある時刻でアドレスレジスタに基づいて記憶装置から命令コードをフェッチする。フェッチした命令コードをデコーダ部に渡し、さらに実行部で実際の処理をおこなう間に、アドレスレジスタの値をインクリメントし、次の命令コードを記憶装置からフェッチする。このように、命令実行と同時に次のアドレスに記録されている命令コードを読み出しておき、次の命令実行に備えることで、命令コードのフェッチにかかる時間を削減することができる。すなわち、本実施形態の情報処理装置は、図４に示されるように、第二の命令コードレジスタＩＲ２（１２０１）を備えているため、逐次、フェッチした命令コードを格納する命令コードレジスタを、第一の命令コードレジスタＩＲ１と第二の命令コードレジスタＩＲ２で切り替えながら動作することができる。すなわち、ＩＲ１を使用した後にＩＲ２を使用し、その後はまたＩＲ１を使用する。
【００７８】
〔実施形態３〕
以下、図５を用いて本発明に係る第三の実施形態について説明する。
図５は、本発明の第三の実施形態に係る情報処理装置の構成図である。
【００７９】
本実施形態は、第二の実施形態と同様に、第一の命令コードレジスタと第二の命令コードレジスタを備えている。本実施形態は、第二の実施形態とは、命令コードレジスタに格納されるプロセスが異なっており、次の命令コードをフェッチする前に、ＩＲ１の値をＩＲ２にコピーして使用する。このとき、コピー誤りによって、比較処理用にＩＲ２から読み出す相対アドレスレジスタＤＩＳＰが、先にＩＲ１から読み出した相対アドレスレジスタＤＩＳＰと異なる値となる場合が考えられる。しかし、すでに示したように、この情報処理装置はその誤りを検出することができる。
【００８０】
〔実施形態４〕
以下、図６を用いて本発明に係る第四の実施形態について説明する。
図６は、本発明の第四の実施形態に係る情報処理装置の構成図である。
【００８１】
本実施形態は、第一の実施形態に加えてさらに、第二の状態レジスタを備える情報処理装置を示している。本実施形態の情報処理装置は、アドレスレジスタに第一のプログラムカウンタＰＣ１の値と一時保存レジスタＴＲの値のいずれを代入するかを選択するための、第一の条件判定に第一の状態レジスタＣＣＲ１（１４０１）の値を用い、比較器に入力する比較値を選択するための第二の条件判定にＣＣＲ２（１４０２）の値を用いる。分岐命令処理の開始時点でのＣＣＲ１の値は信頼できるものと仮定するが、それ以降の値はアタッカーの攻撃により変化する可能性がある。例えば、情報処理装置がＣＣＲ２を持たず、分岐命令処理の開始直後にＣＣＲ１の値が書き換えられた場合を考える。第一の条件判定と第二の条件判定が同一の状態レジスタによっておこなわれるため、状態レジスタの値の如何によらず、誤りは検出されない。ただし、すでに示したように、第一の条件判定がおこなわれた後の状態レジスタの誤りは検出することができる。そのため、情報処理装置は、分岐命令の処理を開始した直後から第一の条件判定がおこなわれるまでの間に、ＣＣＲ１の値をＣＣＲ２にコピーする必要がある。このコピー処理は、アタッカーの攻撃可能時間を削減するために、分岐命令の処理を開始した直後におこなうことが望ましい。
【００８２】
〔実施形態５〕
以下、図７を用いて本発明に係る第五の実施形態について説明する。
図７は、本発明の第五の実施形態に係る情報処理装置の構成図である。
【００８３】
本実施形態は、第四の実施形態と同様に、第一の状態レジスタと第二の状態レジスタを備えている。しかしながら、第一の状態レジスタと第二の状態レジスタの値のコピーの方法が異なっている。
【００８４】
第四の実施形態のように、ＣＣＲ２をＣＣＲ１の単純なコピーとしても良いが、ＣＣＲ２の値をＣＣＲ１と相補的な値にすることで、アタッカーの攻撃に対する耐性を向上させることができる。相補的な値とは、ＣＣＲ１の値をＶ１とし、ＣＣＲ２の値をＶ２としたとき、ｎｏｔ（Ｖ１  ｘｏｒ  Ｖ２）＝０となるような値のことを言う。たとえば、Ｖ１＝１のときＶ２＝０となり、Ｖ１＝０のときＶ２＝１となる。これを実現する一方法として、図７に示すように、ＣＣＲ１の値をＣＣＲ２にコピーする際に、インバータ１５０１を介せばよい。このように構成したとき、情報処理装置による誤り検出を回避するために、アタッカーはＣＣＲ１のあるビットを０から１に変化させる場合は、ＣＣＲ２を同時に１から０に変化させる必要がある。一つのビットを攻撃するために、二つの方法を同時に用いる必要があるため、攻撃はより困難となる。本方式では、二進数表記で０、１がそれぞれ０１、１０として保持される。００、１１をそれぞれ誤動作であると定義してエラー検出を行うことで、先の実施例と同等のエラー検出能力を得ることができる。状態レジスタを唯一つ備えるものの、一ビットの情報をあらわすために二ビットを用いる構成としても、本実施例と本質的に同等である。
【００８５】
〔実施形態６〕
以下、図８を用いて本発明に係る第六の実施形態について説明する。
図８は、本発明の第六の実施形態に係る情報処理装置の構成図である。
【００８６】
本実施形態は、第一の実施形態と同様の情報処理装置で、比較器においてデータの一部の数ビットのみを比較するようにしたものである。すなわち、図８に示されるように、本実施形態の情報処理装置は、比較器の入力の前にデータのビット長削減装置ＴＲＮ（１６０１）を備える。ビット長削減装置に入力されたＮビットのデータは、一部のビットのみを残して削除されたｄビットのデータとして出力される。当該ｄビットのデータは、入力のＮビットの対応するビット値と等しい。誤りのビット長をｋとすると、誤りの検出確率は、１−（Ｎ−ｋ）！（Ｎ−ｄ）！／｛Ｎ！（Ｎ−ｋ−ｄ）！｝となる。本実施形態の取り出すビットの位置は、事前に決めておくようにする。
【００８７】
本実施形態では、比較のためのビット長が削減できるため、回路の規模を小さくすることができる。
【００８８】
〔実施形態７〕
以下、図９を用いて本発明に係る第七の実施形態について説明する。
図９は、本発明の第七の実施形態に係る情報処理装置の構成図である。
【００８９】
本実施形態は、第六の実施形態と同様に、比較器においてデータの一部の数ビットのみを比較するようにしたものである。本実施形態は、比較のために取り出すビットの位置を動的にランダムに選択するようにしたものである。すなわち、図９に示されるように、比較器の二つの入力に取り付けられた第一のビット長削減装置１７０１と第二のビット長削減装置１７０２の間で、同一のビット位置のデータ削除を行う必要があるため、削除するビット位置をランダムに選択する場合は、第一のビット長削減装置と第二のビット長削減装置が同一の乱数系列を共有しなければならない。そのような乱数系列の共有のために、乱数生成装置ＲＧ１７０３を設けて、その出力を第一のビット長削減装置と第二のビット長削減装置で共有する。本実施形態では、一つのＲＧを備える例を示したが、第一のビット長削減装置と第二のビット長削減装置が共に同一の初期値を持つ擬似乱数生成装置を備え、両者が同一のクロックに従って、擬似乱数系列を順次生成する方式とすることもできる。アタッカーが誤りを発生させるビット位置をコントロールできないと仮定し、かつ、ランダムな位置に誤りを発生させる場合には、事前に取り出すビット位置を決定する方式とランダムにビット位置を選択する方式の誤り検出確率は同じである。
【００９０】
しかしながら、比較するビットをランダムにしたため、第６の実施形態に比べて、耐タンパ性は向上している。
【００９１】
〔実施形態８〕
以下、図１０を用いて本発明に係る第八の実施形態について説明する。
図１０は、本発明の第八の実施形態に係る情報処理装置の構成図である。
【００９２】
本実施形態は、第一の情報処理装置に、エラー検出機能のテストをおこなうためのテスト信号線ＴＳＴ２００１を備えたものである。ＴＳＴ信号線に、論理１を入力すれば、排他的論理和装置２００２によりＣＣＲから読み出した条件ビットが反転し、セレクタにおけるＰＣ１またはＴＲの選択を故意に誤らせることができる。このときに、エラー検出がこなわれたことを示すエラー信号がＥＲＲ２００３に現れることを確認すれば、本エラー検出機能を有する論理回路の正常動作を確認することができる。
【００９３】
〔実施形態９〕
以下、図１１を用いて本発明に係る第九の実施形態について説明する。
図１１は、本発明の第九の実施形態に係る情報処理装置の構成図である。
【００９４】
本実施形態は、第八の実施形態と同様に、エラー検出機能のテストをおこなうためのテスト信号線ＴＳＴを設けたものである。図１１に示される例では、テスト信号線ＴＳＴを比較器ＣＭＰの出力に接続することで、最終的なエラー信号の発生回路の正常動作を確認できるようにしている。また、テスト信号線は、必ずしも一箇所のみに限定して接続する必要はなく、複数のテスト信号線を備えるようにしてもよう。また、本実施形態は、誤動作を発生させるためのごく一部の信号線について値をコントロールするためのテスト用信号線を付加する例を示したが、これ以外に様々な信号線の機能を検査するために、テスト用信号線を付加するようにしてもよい。
【００９５】
〔実施形態１０〕
以下、図１２および図１３を用いて本発明に係る第十の実施形態について説明する。
図１２は、本発明の第十の実施形態に係る情報処理装置の構成図である。
図１３は、本発明の第十の実施形態に係る情報処理装置の分岐命令処理をおこなう部分の構成図である。
【００９６】
第一の実施形態は、分岐命令における情報処理装置のエラー検出をおこなうために、アドレスレジスタＡＲから第一のプログラムカウンタＰＣやテンポラリレジスタＴＲの値を減算して、ＣＯＮＳＴの値やＤＩＳＰ値を求めてエラー検出をおこなうものであった。
【００９７】
本実施形態とは、それとは発想が異なり、アドレスレジスタＡＲを二通りに求めて、それらを比較することによりエラー検出をおこなうものである。
【００９８】
本実施形態の情報処理装置は、図１２に示すように、図１５に示す既存の情報処理装置に比較して、レジスタ群ＲＥＧ２、命令デコーダＰＬＡ２（１８０２）、第二の実行部１８０１、加算器１８０３、第二のアドレスレジスタＡＲ２（１８０５）、比較器ＣＭＰ１８０４を備えている。ここで、図１３の第一のプログラムＰＣ１とテンポラリレジスタＴＲ２は、レジスタ群ＲＥＧ２に含まれ、加算器ＡＤＤ１９０３、加算器ＡＤＤ１９０４は、加算器１８０３が該当する。
【００９９】
情報処理装置のすべての命令処理について、デコーダ・実行部を二つ備えてエラー検出を行った場合、回路量は少なくとも二倍に増加する。実施形態の情報処理装置は、分岐命令のみについて処理装置を二つ備えており、処理結果の比較をおこなうことでエラーの検出をおこなう。この情報処理装置は、通常の命令処理をおこなう第一のデコーダＰＬＡ１および実行部と、分岐命令か否かを判定し、分岐命令であれば処理を実行する第二のデコーダＰＬＡ２および実行部と、二つのプログラムカウンタＰＣ１、ＰＣ２および一時保存レジスタＴＲ１、ＴＲ２、四つの加算器、状態レジスタ、比較器を少なくとも備えている。
【０１００】
ＰＬＡ２において、命令コードレジスタＩＲの内容が分岐命令以外であるとの場合は、第二の実行部は動作しない。すなわち、一般の情報処理装置と同様に動作する。ＣＰＵは、アドレスレジスタＡＲが指し示すアドレスから、命令コードのフェッチをおこなう。この間に、ＰＣ１の値をＰＣ２にコピーする。つまり、この段階では、ＰＣ１＝ＰＣ２が成立している。次に、ＰＬＡ１は、ＩＲに保存されている命令コードをデコードし、相対アドレス部分を取り出した上で、第二の加算器９０２の入力レジスタにセットする。同時にＰＬＡ２において命令の判別を行い、分岐命令であれば、相対アドレス部分を取り出した上で、第四の加算器１９０４の入力レジスタにセットする。ＣＰＵは第一の加算器１９０１を用いてＰＣ１＋ＣＯＮＳＴを計算し、その結果をＰＣ１にセットする。また、第二の加算器１９０２を用いてＰＣ１＋ＤＩＳＰを計算し、その結果をＴＲ１にセットする。全く同様に、第三の加算器１９０３を用いてＰＣ２＋ＣＯＮＳＴを計算して、結果をＰＣ２にセットし、第四の加算器１９０４を用いてＰＣ２＋ＤＩＳＰを計算して、結果をＴＲ２にセットする。次に、状態レジスタＣＣＲに基づいてＰＣ１またはＴＲ１の値をＡＲ１にセットし、ＰＣ２またはＴＲ２の値をＡＲ２にセットする。ＣＭＰにおいて、ＡＲ１とＡＲ２の値を比較し、一致しなければ、分岐命令のエラーとして処理する。また、その後の処理の整合性を取るために、ＡＲ１はＰＣ１にセットされる。ただし、ＡＲ１にセットされた値がＰＣ１の値であった場合には、ＡＲ１をＰＣ１にセットする処理は省略しても良い。
【０１０１】
ＰＬＡ１で誤動作が起き、条件分岐命令ではない別の命令と解釈されたとすると、ＡＲ１には期待された値であるＰＣ１＋ＤＩＳＰが入らず、通常の命令の処理と同様にＰＣ１＋ＣＯＮＳＴがセットされる。一方、ＰＬＡ２は、条件分岐命令であることを正しく判定し、条件が真（Ｔｒｕｅ）の場合ＡＲ２は、ＡＲ２＝ＰＣ１＋ＤＩＳＰとなる。この場合、ＣＭＰによる比較の結果、ＡＲ１とＡＲ２の値の相違により、誤動作として検出することができる。条件が偽（Ｆａｌｓｅ）である場合は、ＰＬＡ１の誤動作にもかかわらずＡＲ１は、正しい値を示しているため、誤動作であるとは判定されない。しかしこれは、処理を継続する上で問題のない誤動作であるので、このような判定は妥当なものである。ＰＬＡ１が正常に処理され、ＰＬＡ２で誤動作が発生した場合も同様に考えることができる。先の実施形態と同様に、実行部での動作が正常でなかった場合も、ＡＲ１とＡＲ２は異なる値になるため、誤動作を検出することができる。
【図面の簡単な説明】
【０１０２】
【図１】本発明の第一の実施形態に係る情報処理装置の構成図である。
【図２】本発明の第一の実施形態に係る情報処理装置の分岐命令処理をおこなう部分の構成図である。
【図３】本発明の第一の実施形態に係る情報処理装置の分岐命令の処理シークエンスとデータシークエンスをあらわす図である。
【図４】本発明の第二の実施形態に係る情報処理装置の構成図である。
【図５】本発明の第三の実施形態に係る情報処理装置の構成図である。
【図６】本発明の第四の実施形態に係る情報処理装置の構成図である。
【図７】本発明の第五の実施形態に係る情報処理装置の構成図である。
【図８】本発明の第六の実施形態に係る情報処理装置の構成図である。
【図９】本発明の第七の実施形態に係る情報処理装置の構成図である。
【図１０】本発明の第八の実施形態に係る情報処理装置の構成図である。
【図１１】本発明の第九の実施形態に係る情報処理装置の構成図である。
【図１２】本発明の第十の実施形態に係る情報処理装置の構成図である。
【図１３】本発明の第十の実施形態に係る情報処理装置の分岐命令処理をおこなう部分の構成図である。
【図１４】一般的なマイコンの全体構成図である。
【図１５】一般的な情報処理装置の構成図である。
【図１６】ＡＬＵの機能を用いて実現したＩＮＣの一例の構成図である。
【図１７】一般的な情報処理装置の分岐命令処理をおこなう部分の構成図である。
【図１８】分岐命令を実行する情報処理装置の実行部を示したものである。
【図１９】分岐命令の処理シークエンスとデータシークエンスをあらわす図である。
【図２０】パスワード認証の一般的な手順を示すフローチャートである。
【符号の説明】
【０１０３】
ＡＬＵ…算術論理演算装置
ＡＲ…アドレスレジスタ
ＡＢ…アドレスバス
ＡＤＤ…加算器
ＣＣＲ…状態レジスタ
ＣＫ１…パスワードの第一桁目を比較する処理
ＣＫ２…パスワードの第二桁目を比較する処理
ＣＫ３…パスワードの第三桁目を比較する処理
ＣＫ４…パスワードの第四桁目を比較する処理
ＣＭＰ…比較器
ＣＯＮＳＴ…定数レジスタ、次の命令コード保持アドレスへの相対アドレスをあらわす定数値
ＣＰＲ…コプロセッサ
ＣＰＵ…中央演算装置
ＤＡ…データ格納領域
ＤＢ…データバス
ＤＩＦ…差分値ＡＲ−ＰＣ２を保持する信号線
ＤＩＳＰ…相対アドレスレジスタ、または、分岐先への相対アドレス値
ＤＥＣ…命令デコード
ＤＲ…データレジスタ
ＥＲＲ…エラー信号線
ＥＸＥ…命令実行
ＦＡＩＬ…パスワード判定が失敗し、不合格信号を出力する処理
ＦＥＴ…命令フェッチ
ＩＮＣ…アドレス更新装置
Ｉ／Ｏ…入出力
ＩＲ…命令コードレジスタ
ＫＥＹＩＮ…ユーザーによるパスワードの入力処理
ＭＥＭ…記憶装置
ＰＡ…プログラム格納領域
ＰＡＳＳ…パスワード判定が成功し、合格信号を出力する処理
ＰＣ…プログラムカウンタ
ＰＬＡ…命令デコーダ
Ｒ０〜Ｒ２…汎用レジスタ
ＲＥＧ…レジスタ群
ＲＧ…乱数生成装置
ＳＵＢ…減算器
ＴＲ…一時保存レジスタ
ＴＲＮ…ビット長削減装置
ＴＳＴ…テスト信号線
【図１】
2006085416.tif 000003
【図２】
2006085416.tif 000004
【図３】
2006085416.tif 000005
【図４】
2006085416.tif 000006
【図５】
2006085416.tif 000007
【図６】
2006085416.tif 000008
【図７】
2006085416.tif 000009
【図８】
2006085416.tif 000010
【図９】
2006085416.tif 000011
【図１０】
2006085416.tif 000012
【図１１】
2006085416.tif 000013
【図１２】
2006085416.tif 000014
【図１３】
2006085416.tif 000015
【図１４】
2006085416.tif 000016
【図１５】
2006085416.tif 000017
【図１６】
2006085416.tif 000018
【図１７】
2006085416.tif 000019
【図１８】
2006085416.tif 000020
【図１９】
2006085416.tif 000021
【図２０】
2006085416.tif 000022