(57)【要約】【課題】複数箇所同時に誤動作させる攻撃に対しても誤動作検出可能とする。【解決手段】誤動作処理回路１２３７は、特定周期の間に種データを元に生成されるデータ列を繰り返し演算する特定周期動作回路（１１２０）と、その動作においてデータ列の演算に要する周期が上記の特定周期と異なることを検出する第１誤動作検出回路（４１１０）とを含む。また上記誤動作処理回路は、上記の特定周期動作回路において上記の種データから生成され得ないデータを異常データが得られたことを検出する第２誤動作検出回路（４１１１）を含む。さらに上記誤動作処理回路は、第１誤動作検出信号及び第２誤動作検出信号の少なくとも一方がアサートされた場合に上記ＣＰＵの動作を制限する誤動作結果処理回路（１１６０）を含む。内部データの周期性やデータの状態遷移の特徴を用いた検出方式を採用することで上記課題を解決する。【選択図】図１５
2010191512.tif 000002
【特許請求の範囲】
【請求項１】
所定の演算処理を行うＣＰＵと、
誤動作による内部解析を阻止するための誤動作処理回路と、を備えた半導体集積回路であって、
上記誤動作処理回路は、
基準クロック信号を用いて、予め定められた特定周期の間に予め定められた種データを元に生成されるデータ列を繰り返し演算する特定周期動作回路と、
上記の特定周期動作回路の動作においてデータ列の演算に要する周期が上記の特定周期と異なることを検出して第１誤動作検出信号をアサートする第１誤動作検出回路と、
上記の特定周期動作回路において上記の種データから生成され得ないデータを異常データとし、この異常データが得られたことを検出して第２誤動作検出信号をアサートする第２誤動作検出回路と、
上記第１誤動作検出信号及び上記第２誤動作検出信号の少なくとも一方がアサートされた場合、上記ＣＰＵの動作を制限するための誤動作制御信号を生成する誤動作結果処理回路と、を含むことを特徴とする半導体集積回路。
【請求項２】
上記第１誤動作検出回路及び上記第２誤動作検出回路の少なくとも一方は複数個搭載されて成る請求項１記載の半導体集積回路。
【請求項３】
上記の特定周期動作回路が複数個搭載されて成る請求項１記載の半導体集積回路。
【請求項４】
上記誤動作結果処理回路が複数個搭載されて成る請求項１記載の半導体集積回路。
【請求項５】
上記ＣＰＵの動作を初期化するリセット信号を処理する機能を含み、上記誤動作結果処理回路は、上記リセット信号を上記誤動作制御信号として生成する請求項１記載の半導体集積回路。
【請求項６】
上記ＣＰＵに対する割り込み信号を処理する機能を含み、上記誤動作結果処理回路は、上記割り込み信号を上記の誤動作制御信号として生成する請求項１記載の半導体集積回路。
【請求項７】
上記第１誤動作検出回路は、上記種データもしくは種データを元に生成されるデータ列が上記の特定周期の間に繰り返し演算によって得られないことを検出する請求項１に記載の半導体集積回路。
【請求項８】
上記第２誤動作検出回路は、上記種データから生成され得ないデータ群を異常データ群として複数個記録し、この異常データ群の少なくとも1つが繰り返し演算によって得られたことを検出する請求項１記載の半導体集積回路。
【請求項９】
上記第２誤動作検出回路は、上記種データから生成され得ないデータ群を異常データ群として予め内部の記憶回路に複数個記録し、異常データ群の少なくとも１つが特定周期の間に繰り返し演算によって得られたことを検出する請求項８記載の半導体集積回路。
【請求項１０】
上記の特定周期動作回路が複数個搭載され、
各特定周期動作回路の繰り返し演算で生成されるデータ列のパターンは各々で同一であり、且つ、上記種データが異なり、ある種データから上記の異なる種データを生成するまでに要する実行クロックが既知の場合に、任意の特定周期動作回路の出力データが上記の実行クロック後に別の特定周期動作回路の出力とならないことを検出して第３誤動作検出信号をアサートする第３誤動作検出回路を含み、
上記誤動作結果処理回路は、上記第３誤動作検出信号がアサートされた場合にも上記ＣＰＵの動作を制限するための誤動作制御信号を生成する請求項１記載の半導体集積回路。
【請求項１１】
上記誤動作処理回路は、上記基準クロック信号を用いて、演算結果として得られる異なる二つのデータ間におけるハミング距離の値が一定となる符合距離一定回路と、
上記符合距離一定回路の演算結果のデータにおいて、予め定められたクロック信号間における異なる二つのデータのハミング距離の値が異なる場合に第４誤動作検出信号をアサートする第４誤動作検出回路と、を含み、
上記誤動作結果処理回路は、上記第４誤動作検出信号がアサートされる場合にも上記ＣＰＵの動作を制限するための誤動作制御信号を生成する請求項１記載の半導体集積回路。
【請求項１２】
上記誤動作処理回路は、演算結果として得られるデータのハミング重みの値が一定となる符合距離一定回路と、
上記符合距離一定回路の演算結果のデータにおいて、ハミング重みの値が異なる場合には第５誤動作検出信号をアサートする第５誤動作検出回路と、を含み、
上記誤動作結果処理回路は、上記第５誤動作検出信号がアサートされる場合にも上記ＣＰＵの動作を制限するための誤動作制御信号を生成する請求項１記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電磁波の照射や光の照射によって発生する誤動作現象とその現象による内部解析を防止する機能を有する半導体集積回路に関する。
【背景技術】
【０００２】
半導体集積回路が搭載されたＩＣカードには、入出力と電源端子とクロック入力と入出力を行うための端子が備えられている。また、内部には、ＣＰＵ（中央処理装置）、特定処理のためのコプロセッサ、不揮発性メモリ、揮発性メモリ、データの入出力を行う入出力部などの各種内部モジュールが設けられている。これらの内部モジュール間でのデータ通信は内部バスを介して行われる。
【０００３】
例えば非特許文献１によれば、上記ＩＣカードに代表されるセキュリティモジュールにおいては、その内部に搭載された半導体集積回路やメモリにおけるリバースエンジニアリングの困難性と、暗号解読の計算量的困難性により、セキュリティを保証してきた。リバースエンジニアリングを困難にする方法として、非スタンダードセルを用いる、ダミー回路の敷設、メモリのスクランブル配置、バスのスクランブル配置、テストパッドの製品チップからの切断などが行われている。
【０００４】
暗号解読の困難性は、暗号解読に必要とされる計算量が十分大きく、現実的な時間では解読手出来ないことを安全性の根拠としている。この計算量に基づく困難性は、秘密鍵のビット長に依存しており、鍵長が長くなると解読に必要な計算量は大きくなる。半導体集積回路技術の発達に伴い、利用可能な計算機パワーが増大するため、安全な鍵のビット長は時が経つにつれ長くなっている。
【０００５】
こうしたリバースエンジニアリングや計算量的な困難性による対策に左右されない攻撃手法として、誤動作解析アタックが存在する。誤動作解析アタックとは、半導体集積回路上の動作に誤りを起こさせ、正しい計算結果と誤った計算結果の差分を用いて鍵情報を推定する手法で、多くの暗号に対してアタック手法が開発されている。このアタック手法の特徴は、アタックに必要な時間が非常に少ない点である。例えば非特許文献２によれば、ＣＲＴ演算法を用いたＲＳＡ暗号に対する誤動作解析アタック手法では、鍵長にかかわらず、たった１回の演算誤りが得られれば、正しい値と誤った値の差分と公開鍵のモジュロＮとの最大公約数から、秘密素数ｐが得られ、その結果から秘密鍵を推定できることが知られている。
【０００６】
また、非特許文献３によれば、秘密鍵暗号系として広く用いられているＤＥＳ暗号では、正しい演算結果と誤った結果が数個から数十個が得られると、秘密鍵を得ることができることが報告されている。これらのアタックは、アタックに必要な計算量が暗号鍵の長さにかかわらず一定か、もしくは暗号鍵のビット長のみに比例し、かつ計算量は非常に小さいという特徴がある。
【０００７】
さらに、非特許文献４によれば、半導体集積回路上の動作に誤りを引き起こす具体的方法としては、光照射によって内部データを意図した値以外に書き換えが可能であることが、Ｓ．  Ｓｋｏｒｏｂｏｇａｔｏｖらによって報告されている。
【０００８】
このように光照射による誤動作結果として、ハードウェア内部のデータが書き換え可能であること、及び暗号処理中の誤動作結果から暗号鍵が解析可能であることの組み合わせによって、内部情報の解析が可能であるのは明かである。
【０００９】
光照射によるハードウェアの誤動作に対する対策として代表的なものは、（１）光照射の検出、（２）誤動作によるハードウェア論理の矛盾を用いた検出といった方法が挙げられる。
【００１０】
上記（１）の方法は、例えば特許文献１に記述されている。この方法では、光検出機能を有した回路を他の回路と区別がつきにくく偽装し、守りたい回路付近に配置するという方法である。光検出方法として、スタティックラッチの値の観測を行う方法が示されており、この方法はＳＲＡＭに代表される揮発性メモリに搭載可能であることが特許文献１で述べられている。また、別の光検出方法として、電流比を観測することで検出する方法が示されている。この方法は、光検出用素子が消費する電流が通常の素子と比して乖離があるかを検出する方法である。
【００１１】
上記（２）の方法の代表例については、特許文献２に記述されている。この方法では、演算処理を行うＣＰＵ上の各機能において、内部レジスタの冗長化、マイクロデコーダの再エンコードによる検算、該ＣＰＵにおける基準クロック信号を冗長化したカウンタの比較、該ＣＰＵのバス回路においてバスの入出力の比較といった方法である。この方法は、冗長化もしくは再エンコードによって内部データを冗長化し、比較する方法である。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２００４−２０６６８０号公報
【特許文献２】特開２００８−１５８８２６号公報
【非特許文献】
【００１３】
【非特許文献１】Ｗ．Ｒａｎｋｌ＆Ｗ．Ｅｆｆｉｎｇ、Ｓｍａｒｔ  Ｃａｒｄ  Ｈａｎｄｂｏｏｋ  Ｓｅｃｏｎｄ  Ｅｄｉｔｉｏｎ、ｐｐ．４１２−４２０、ＷＩＬＥＹ、２０００、ＩＳＢＮ  ０−４７１−９８８７５−８
【非特許文献２】Ｄ．Ｂｏｎｅｈ，  Ｒ．Ａ．  ＤｅＭｉｌｌｏ，  ａｎｄ  Ｒ．Ｊ．  Ｌｉｐｔｏｎ：Ｏｎ  ｔｈｅ  Ｉｍｐｏｒｔａｎｃｅ  ｏｆ  Ｃｈｅｃｋｉｎｇ  Ｃｒｙｐｔｏｇｒａｐｈｉｃ  Ｐｒｏｔｏｃｏｌｓ  ｆｏｒ  Ｆａｕｌｔｓ，  ＥＵＲＯＣＲＹＰＴ  ’９７，  ｖｏｌｕｍｅ  １２３３  ｏｆ  Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ，  ｐａｇｅｒ  ３７−５１，  Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，  １９９７
【非特許文献３】Ｅ．  Ｂｉｈａｍ，  Ａ．  Ｓｈａｍｉｒ，  ”Ａ  Ｎｅｗ  Ｃｒｙｐｔａｎａｌｙｔｉｃ  Ａｔｔａｃｋ  ｏｎ  ＤＥＳ”，  ｈｔｔｐ：／／ｗｗｗ．ｊｙａ．ｃｏｍ／ｄｆａ．ｈｔｍ，１９９６
【非特許文献４】Ｓ．  Ｓｋｏｒｏｂｏｇａｔｏｖ，  Ｒ．  Ａｎｄｅｒｓｏｎ，  ”Ｏｐｔｉｃａｌ  Ｆａｕｌｔ  Ｉｎｄｕｃｔｉｏｎ  Ａｔｔａｃｋｓ”，  ＣＨＥＳ２００２，ＬＮＣＳ２５２３，Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，ＩＳＢＮ３−５４０−００４０９−２，ｐｐ２−１２
【発明の概要】
【発明が解決しようとする課題】
【００１４】
上記のように特許文献１には、電流比を用いる検出方法が示されている。この方法では、検出に必要な上記の電流比を、想定する光照射に応じて設定する必要がある。また、太陽光といった通常想定される自然光程度の光では検出動作をしないように、電流比を設定する必要がある。従って、半導体集積回路の動作を妨げないように且つ攻撃に想定される光照射を検出するように、電流比の設定が必要とされる。また、スタティックラッチの値を観測する方法では、比較対象となるふたつの値を同時に誤らせた場合については、検出が行われない。従って、顕微鏡レンズ等と光照射装置を複数組み合わせた方法によって複数箇所に光を照射する攻撃に対しては、検出機能が機能しないことが考えられる。
【００１５】
また、特許文献２の方法では、冗長化による検出方法が示されている。しかしながら、冗長化による方法では、顕微鏡レンズ等を用いて照射する光を微細なサイズに絞り、光照射装置と顕微鏡レンズを複数組み合わせることで、複数箇所を同時に誤動作させる攻撃方法が考えられる。特許文献２では、複数照射の攻撃に対して、より多重に冗長化することで安全性を高める方法を用いている。また、特許文献２では、冗長化は光の照射の組み合わせが指数関数的に増加することから、２〜３重で十分であるとしている。しかしながら、冗長化した箇所は、照射範囲を絞った1つの光を半導体集積回路全面に対して、順番に照射すること、及び半導体集積回路の動作状態の観測を組み合わせることで、検出機能が施された箇所を推定することは可能である。この方法を用いると、照射回数を増加することもなく冗長化箇所の推定が可能となる。従って、特許文献２のように冗長化が２〜３重の場合には、冗長化したデータが同時に書き換えることが可能であり、かかる場合には、冗長化したデータの比較による検出機能が機能しないことが考えられる。また、特許文献２の方法では、冗長化を行わない方法としてマイクロデコーダの出力コードを再エンコードする方法が示されている。この方法においても、上記のように複数箇所同時に誤動作させる攻撃に対しては、検出機能が機能しないことが考えられる。
【００１６】
本発明の目的は、複数箇所同時に誤動作させる攻撃に対しても誤動作検出可能な半導体集積回路を提供することにある。
【００１７】
本発明の上記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１８】
本願において開示される発明のうち代表的なものについて簡単に説明すれば下記のとおりである。
【００１９】
すなわち、ＣＰＵと誤動作処理回路とを設ける。上記誤動作処理回路は、予め定められた特定周期の間に予め定められた種データを元に生成されるデータ列を繰り返し演算する特定周期動作回路と、上記の特定周期動作回路の動作においてデータ列の演算に要する周期が上記の特定周期と異なることを検出して第１誤動作検出信号をアサートする第１誤動作検出回路とを含む。また上記誤動作処理回路は、上記の特定周期動作回路において上記の種データから生成され得ないデータを異常データとし、この異常データが得られたことを検出して第２誤動作検出信号をアサートする第２誤動作検出回路を含む。さらに上記誤動作処理回路は、上記第１誤動作検出信号及び上記第２誤動作検出信号の少なくとも一方がアサートされた場合、上記ＣＰＵの動作を制限するための誤動作結果処理回路を含む。内部データの周期性やデータの状態遷移の特徴を用いた検出方式を採用することで、光を複数箇所に照射する場合でも誤動作検出を可能とする。
【発明の効果】
【００２０】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００２１】
すなわち、本発明によれば、複数箇所同時に誤動作させる攻撃に対しても誤動作検出可能な半導体集積回路を提供することができる。
【図面の簡単な説明】
【００２２】
【図１】本発明にかかる半導体集積回路における主要部の構成例ブロック図である。
【図２】上記半導体集積回路が搭載されて成るＩＣカードの構成例ブロック図である。
【図３】上記半導体集積回路に含まれる誤動作処理回路の構成例ブロック図である。
【図４】上記半導体集積回路に含まれるＣＰＵ内の制御回路を示すブロック図である。
【図５】上記半導体集積回路に含まれる特定周期動作回路の構成例回路図である。
【図６】上記半導体集積回路に含まれる特定周期動作回路の構成例回路図である。
【図７】上記半導体集積回路に含まれる誤動作検出回路の構成例回路図である。
【図８】上記半導体集積回路に含まれる誤動作検出回路の構成例ブロック図である。
【図９】上記半導体集積回路に含まれる誤動作検出回路の構成例回路図である。
【図１０】上記半導体集積回路に含まれる誤動作処理回路の構成例ブロック図である。
【図１１】上記半導体集積回路に含まれる符号距離一定回路の構成例回路図である。
【図１２】上記半導体集積回路に含まれる誤動作検出回路の構成例回路図である。
【図１３】上記半導体集積回路に含まれる誤動作検出回路の構成例回路図である。
【図１４】上記半導体集積回路に含まれる誤動作結果処理回路の構成例回路図である。
【図１５】上記半導体集積回路における主要部の別の構成例ブロック図である。
【図１６】上記半導体集積回路における主要部の別の構成例ブロック図である。
【図１７】上記半導体集積回路における主要部の別の構成例ブロック図である。
【図１８】上記半導体集積回路における誤動作検出回路の構成例ブロック図である。
【図１９】上記半導体集積回路における誤動作検出回路の構成例ブロック図である。
【発明を実施するための形態】
【００２３】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００２４】
〔１〕本発明の代表的な実施の形態に係る半導体集積回路（１２３０）は、所定の演算処理を行うＣＰＵ（１２３２）と、誤動作による内部解析を阻止するための誤動作処理回路（１２３７）とを備える。上記誤動作処理回路（１２３７）は、特定周期動作回路（１１２０）、第１誤動作検出回路（４１１０）、第２誤動作検出回路（４１１１）、及び誤動作結果処理回路（１１６０）を含む。
【００２５】
上記特定周期動作回路（１１２０）は、基準クロック信号を用いて、予め定められた特定周期の間に予め定められた種データを元に生成されるデータ列を繰り返し演算する。上記第１誤動作検出回路（４１１０）は、上記特定周期動作回路の動作においてデータ列の演算に要する周期が上記の特定周期と異なることを検出して第１誤動作検出信号をアサートする。上記第２誤動作検出回路（４１１１）は、上記の特定周期動作回路において上記の種データから生成され得ないデータを異常データとし、この異常データが得られたことを検出して第２誤動作検出信号をアサートする。上記誤動作結果処理回路（１１６０）は、上記第１誤動作検出信号及び上記第２誤動作検出信号の少なくとも一方がアサートされた場合、上記ＣＰＵの動作を制限するための誤動作制御信号を生成する。
【００２６】
半導体集積回路においては内部データに周期性のある回路が搭載されることがある。周期性のある回路の例として、擬似乱数生成器が挙げられる。擬似乱数生成回路は、Ｌｉｎｅａｒ  Ｆｅｅｄｂａｃｋ  Ｓｈｉｆｔ−Ｒｅｇｉｓｔｅｒ（ＬＦＳＲ）と呼ばれる回路や、線形合同法を用いた回路による擬似乱数生成器が例として挙げられる。これらの回路については、初期状態として与えられたデータに対して、出現するデータ列に周期性が存在し、一定の周期で同一のデータが出現する。
【００２７】
ｎビットＬＦＳＲでは、２ｎ−１種類のデータが繰り返されるデータ列の候補となる。データ列の種類の数は、ＬＦＳＲの元となる生成多項式に依存し、２ｎ−１種類のデータ列を得たい場合には、ｎ次の原始多項式を用いて設計を行う。擬似乱数生成器としてのＬＦＳＲの場合では、データ列がより多くあることで乱数性が高まることから、データ列が最大となるようにｎ次の原始多項式を採用する。例えば、ｎが４の場合では原始多項式の１つはＸ４＋Ｘ＋１である。この原始多項式を生成多項式としたＬＦＳＲ回路では、初期値を１１１１とした場合には、（０−１）：１１１０→１１０１→１０１０→０１０１→１０１１→０１１０→１１００→１００１→００１０→０１００→１０００→０００１→００１１→０１１１→１１１１→・・・と同一データの繰り返しとなる。また、データ列に出現するデータの種類は２４−１＝１５種類である。すなわち、Ｘ４＋Ｘ＋１を生成多項式とするＬＦＳＲは、周期を１５として繰り返してデータを生成する。
【００２８】
ここで、生成多項式をＸ４＋Ｘ３＋Ｘ２＋Ｘ＋１とした場合のＬＦＳＲを考える。００００という初期値の場合を除いて、次の３種類のデータ列が初期値に応じて生成される。
【００２９】
（１−１）：０００１→００１１→０１１０→１１００→１０００→０００１→・・・
（１−２）：００１０→０１０１→１０１０→０１００→１００１→００１０→・・・
（１−３）：０１１１→１１１１→１１１０→１１０１→１０１１→・・・
これらのデータ列のいずれかで出現したデータは、他のデータ列では出現しない。このＬＦＳＲは、周期を５として繰り返しデータ列を生成する回路である。同様に、生成多項式をＸ４＋１とした場合、００００という初期値の場合を除いて、次の５種類のデータ列が初期値に応じて生成される。具体的には、以下の５種類である。
【００３０】
（２−１）：０００１→００１０→０１００→１０００→０００１→・・・
（２−２）：００１１→０１１０→１１００→１００１→００１１→・・・
（２−３）：０１１１→１１１０→１１０１→１０１１→０１１１→・・・
（２−４）：０１０１→１０１０→０１０１→・・・
（２−５）：１１１１→１１１１→・・・
【００３１】
これら５種類のデータ列は周期性を持っているが、データ列毎の周期は必ずしも一致しない。一方、これらのデータ列のいずれかで出現したデータは、他のデータ列では出現しない。このとき、初期値を０００１として（２−１）で示したようなデータ列がＬＦＳＲによって処理されるものとする。このデータ列において、何らかの理由で途中のデータが任意の値に書き換わると、次の３種類の現象が発生する。
【００３２】
（Ａ−１）：（２−１）のデータ列を処理するが、書き換わったタイミング前後においてデータ列の出現パターンが異なる。
【００３３】
（Ａ−２）：（２−１）以外のデータ列を処理し、周期が同一であるものの出現データが（２−１）と異なり、特に（２−２）や（２−３）のデータ列の処理に遷移した場合が挙げられる。
【００３４】
（Ａ−３）：（２−４）や（２−５）のように異なる周期でデータを処理する。
【００３５】
上記（Ａ−１）については、周期に従った特定のタイミングにおいて出力されるデータは常に合致することを期待値として、データの比較を行い一致しない場合は、途中でデータが書き換わったことを検出可能である。（Ａ−２）については、（Ａ−１）と同様に周期に従った特定のタイミングにおけるデータが常に合致することを期待値とし、期待値と異なる場合を検出することで、途中でデータが書き換わったことを検出可能である。また、（Ａ−２）については（２−２）や（２−３）となるようなデータ列は高々有限回の事前計算で求められることから、予め計算した（２−２）や（２−３）のようなデータ列となる初期値の候補を記録し、その記録と比較を行い合致した場合には、途中でデータが書き換わったことを検出可能である。（Ａ−３）については、（Ａ−１）もしくは（Ａ−２）と同様の方法を用いることで、途中でデータが書き換わったことを検出可能である。
【００３６】
上記の検出方法をまとめると以下のようになる。
【００３７】
（Ｂ−１）：周期に従った特定のタイミングにおけるデータが常に合致することを期待値としてデータ比較を行うことで検出、予め定めたデータが特定の周期で出現することを確認することで検出する。
【００３８】
（Ｂ−２）：予め計算によって求めた1つもしくは複数の誤りデータとＬＦＳＲから得られるデータを比較することで検出する。
【００３９】
ここで、第１誤動作検出回路は、上記の（Ｂ−１）を実現する。また、第２誤動作検出回路は、上記の（Ｂ−２）を実現する。誤動作結果処理回路は、第１誤動作検出回路または第２誤動作検出回路の少なくとも一方によって検出された結果に基づいてＣＰＵの動作を制限する。
【００４０】
〔２〕上記〔１〕において、上記第１誤動作検出回路や、上記第２誤動作検出回路はそれぞれ複数個搭載することができる。
【００４１】
〔３〕上記〔１〕において、上記の特定周期動作回路を複数個搭載することができる。
【００４２】
〔４〕上記〔１〕において、上記誤動作結果処理回路を複数個搭載することができる。
【００４３】
〔５〕上記〔１〕において、上記ＣＰＵの動作を初期化するリセット信号を処理する機能を含むとき、上記誤動作結果処理回路は、上記リセット信号を上記誤動作制御信号として生成するように構成することができる。
【００４４】
〔６〕上記〔１〕において、上記ＣＰＵに対する割り込み信号を処理する機能を含むとき、上記誤動作結果処理回路は、上記割り込み信号を上記の誤動作制御信号として生成するように構成することができる。
【００４５】
〔７〕上記〔１〕において、上記第１誤動作検出回路は、上記種データもしくは種データを元に生成されるデータ列が上記の特定周期の間に繰り返し演算によって得られないことを検出するように構成することができる。
【００４６】
〔８〕上記〔１〕において、記第２誤動作検出回路は、上記種データから生成され得ないデータ群を異常データ群として複数個記録し、この異常データ群の少なくとも1つが繰り返し演算によって得られたことを検出するように構成することができる。
【００４７】
〔９〕上記〔８〕において、上記第２誤動作検出回路は、上記種データから生成され得ないデータ群を異常データ群として予め内部の記憶回路に複数個記録し、異常データ群の少なくとも１つが特定周期の間に繰り返し演算によって得られたことを検出するように構成することができる。
【００４８】
〔１０〕上記〔１〕において、上記の特定周期動作回路を複数個搭載することができる。各特定周期動作回路の繰り返し演算で生成されるデータ列のパターンは各々で同一であり、且つ、上記種データが異なり、ある種データから上記の異なる種データを生成するまでに要する実行クロックが既知の場合に、第３誤動作検出回路（図１７の７１３０）を設けることができる。この第３誤動作検出回路は、任意の特定周期動作回路の出力データが上記の実行クロック後に別の特定周期動作回路の出力とならないことを検出して第３誤動作検出信号をアサートする。かかる場合において上記誤動作結果処理回路は、上記第３誤動作検出信号がアサートされた場合にも上記ＣＰＵの動作を制限するための誤動作制御信号を生成する。
【００４９】
ここで、先ほどと同様に、４ビットのＬＦＳＲを例としてＬＦＳＲが二つある状況を考える。各々の原始多項式を同一とし、Ｘ４＋１とする。初期値をそれぞれ１１１１と１１１０として、各々を以下のようにする。
【００５０】
（３−１）：１１１１→１１１０→１１０１→・・・
（３−２）：１１１０→１１０１→１０１０→・・・
このとき、１１１１の出力されるタイミングは（３−１）と（３−２）では異なるが、周期も同一であり、得られるデータ列もタイミングが異なる点を除けば、同一である。この点に着目して、例えば、（３−１）が１１１１を処理するタイミングの（３−２）のデータを記憶領域に保存し、（３−１）が１１１１を処理した結果と記憶領域のデータを比較することで、異なるデータ列になっているかを検出可能である。すなわち、少なくとも片側のデータ列において途中でデータが誤っていることを検出可能である。まとめると、以下の検出方法となる。
【００５１】
（Ｂ−３）：複数ＬＦＳＲを用意し、同一データ列となるが異なる初期値を用意し、データ列もしくは特定データの出現の有無を比較する。
【００５２】
上記第３誤動作検出回路は、上記の（Ｂ−３）を実現する回路である。
【００５３】
〔１１〕上記〔１〕において、上記誤動作処理回路には、符合距離一定回路（１１２１）と、第４誤動作検出回路（１１４１）とを設けることができる。符合距離一定回路（１１２１）は、上記基準クロック信号を用いて、演算結果として得られる異なる二つのデータ間におけるハミング距離の値を一定とする。第４誤動作検出回路（１１４１）は、上記符合距離一定回路の演算結果のデータにおいて、予め定められたクロック信号間における異なる二つのデータのハミング距離の値が異なる場合に第４誤動作検出信号をアサートする。このとき、上記誤動作結果処理回路は、上記第４誤動作検出信号がアサートされる場合にも上記ＣＰＵの動作を制限するための誤動作制御信号を生成するように構成することができる。
【００５４】
上記符合距離一定回路は、内部データの状態遷移において、隣り合う二つの状態でのデータ、もしくは異なる二つのデータにおいて、符号理論におけるハミング距離が常に一定となるような内部状態を示す回路である。ハミング距離とは、ビット幅が同一である二つのデータ間におけるビットの違いを示す概念である。具体的には、異なる２つのデータ間において、ビット単位で各々を比較した際に、異なるビット数の総数のことである。ハミング距離が常に一定ということは、あるデータから別のデータへの状態遷移において、データ状態の変化量が一定であることを意味する。
【００５５】
ところで、非常に微少量の電流を駆動電流として動作させる場合には、データ状態の変化による電流値の変化が小さいことが要求される。電流値の変化は、データ状態の変化によって何ビットが書き換わるかに依存している。一方で、特に、リングカウンタやジョンソンカウンタは、ハミング距離が一定となる回路である。これらの回路は周期性もあり、ハミング距離が一定の回路である。尚、ＬＦＳＲにおいては生成多項式によっては、ハミング距離が一定となるが、全ての生成多項式に対してハミング距離が一定になるとは限らない。
【００５６】
以下、リングカウンタを符号距離一定回路の例として説明する。
【００５７】
４ビットのリングカウンタでは、初期値を１１００とした場合、１１００→０１１０→００１１→１００１→１１００→・・・といった状態遷移となる。この４ビットのリングカウンタは、上記から明らかなようにデータ列に周期性があり、周期は４である。すなわち、誤りの検出に（Ｂ−１）、（Ｂ−２）、（Ｂ−３）を用いても検出できる。
【００５８】
４ビットのリングカウンタにおけるハミング距離に注目する。データ列のおける隣り合うふたつのデータのハミング距離は常に２である。データ列を１つ置きに取り出した場合のハミング距離は常に４である。データ列が途中で誤った場合、例えば０１１０が０１００と誤った場合、１１００→０１００（誤りデータ）→００１０→０００１→・・・となる。このとき、誤りデータとその直前のデータである、１１００と０１００のハミング距離は１となる。同様に、０１１０が１０１０となった場合には、１０１０→０１０１→１０１０→・・・となる。このとき、隣り合うふたつのデータのハミング距離は４となる。従って、ハミング距離を比較することで、データが誤ったことを検出可能である。まとめると、以下の検出方法となる。
【００５９】
（Ｂ−４）：直前のデータと直後のデータにおけるハミング距離を求め、期待値と比較することで検出する。
【００６０】
上記第４誤動作検出回路は、上記（Ｂ−４）を実現する回路である。
【００６１】
〔１２〕上記〔１〕において、上記誤動作処理回路は、演算結果として得られるデータのハミング重みの値が一定となる符合距離一定回路（１１２１）と、上記符合距離一定回路の演算結果のデータにおいてハミング重みの値が異なる場合には第５誤動作検出信号をアサートする第５誤動作検出回路（図１３の１１４１）とを設けることができる。このとき、上記誤動作結果処理回路は、上記第５誤動作検出信号がアサートされる場合にも上記ＣＰＵの動作を制限するための誤動作制御信号を生成するように構成することができる。
【００６２】
この場合の符号距離一定回路では、ハミング重みが一定となる条件が付与される。ハミング重みとは、ハミング距離の特別な場合の概念がある。具体的には、比較する片側のデータのビット列が全て０となっている場合のハミング距離のことである。つまり、片側のデータにおいてビットの値が１の個数を示す概念である。
【００６３】
上記の４ビットのリングカウンタを例として取り上げる。４ビットのリングカウンタでは、正常時にはハミング重みは常に２である。データ列が途中で誤った場合、例えば０１１０が０１００となった場合には、０１００→００１０→０００１→１０００→０１００→・・・となる。このとき、隣り合うふたつのデータのハミング距離は常に２であるが、ハミング重みは１となる。従って、ハミング重みを計算し、期待値と比較することで、データが誤ったことを検出可能である。まとめると、以下の検出方法となる。
【００６４】
（Ｂ−５）：常時もしくは特定のタイミングにおけるハミング重みを比較する。
【００６５】
上記第５誤動作検出回路は、上記の（Ｂ−４）を実現する回路である。
【００６６】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００６７】
＜実施の形態１＞
図２には、本発明にかかる半導体集積回路が搭載されて成るＩＣカードが示される。
【００６８】
このＩＣカード１２００には、入出力と電源端子とクロック入力と入出力を行うための端子１２１０が備えられている。このＩＣカード１２００に搭載された半導体集積回路の一例とされるマイクロコンピュータ１２３０は、特に制限されないが、公知の半導体集積回路製造技術により、単結晶シリコン基板などの一つの半導体基板に形成される。このマイクロコンピュータ１２３０は、内部に中央演算処理としてＣＰＵ１２３２と、特定処理のためのコプロセッサ１２３３と、不揮発性メモリ１２３１及び揮発性メモリ１２３５とデータの入出力を行う入出力部（１２３４）を内部モジュールとして有している。これらの内部モジュールは、データのやり取りを可能にするため、内部バス１２３６を介して相互に結合される。
【００６９】
図１には、上記誤動作処理回路１２３７の構成例が示される。
【００７０】
ＣＰＵ１２３２には、動作を行う基準クロック信号ｃｌｋ（１１１０）が入力される。基準クロック信号ｃｌｋの入力を受けて、特定周期動作回路１１２０と符号距離一定回路１１２１と誤動作検出回路１１４０と誤動作検出回路１１４１が動作する。これらの回路は、ＣＰＵ１２３２と独立して動作する。
【００７１】
特定周期動作回路１１２０と符号距離一定回路１１２１は、基準クロック信号ｃｌｋを受けて動作し、内部データの状態をそれぞれ出力信号１１３０と出力信号１１３１として出力する。誤動作検出回路１１４０は特定周期動作回路１１２０の出力信号１を受けて、出力信号１１３０が、特定周期動作回路において正しい状態遷移となっているかを検査する。正しい状態遷移でない場合には、誤動作検出信号１１５０を出力する。誤動作検出回路１１４１は符号距離一定回路の出力信号１１３１を受けて出力信号１１３１が、符号距離一定回路において正しい状態遷移となっているかを検査する。正しい状態遷移でない場合には、誤動作検出信号１１５１を出力する。
【００７２】
誤動作結果処理回路１１６０は、誤動作検出信号１と誤動作検出信号２を入力として、いずれかの信号で正しくない状態遷移が検出されている場合には、ＣＰＵの動作制御を行う制御信号１１７０を出力する。ここで、制御信号とは、ＣＰＵのリセット信号のようなＣＰＵや半導体集積回路の動作状態を止める信号のことである。
【００７３】
次に、各部の詳細な構成について更に説明する。
【００７４】
特定周期動作回路１１２０は、内部データの状態遷移に周期性のある回路であり、動作時の内部データの状態を出力信号１１３０として出力する。出力信号１１３０は、複数ビットから構成される。周期性のある回路として、例えばＬＦＳＲ（linear feedback shift register）や線形誤動作法やリングカウンタやジョンソンカウンタといった回路が一例として挙げられる。
【００７５】
図５には、特定周期動作回路１１２０の一例とされる４ビットＬＦＳＲが示される。尚、図５に示される４ビットＬＦＳＲは、生成多項式をＸ４＋１とした例であり、他の生成多項式を用いたＬＦＳＲでも、特定周期動作回路は構成可能である。図５の回路（１１２０）は、基準クロック信号ｃｌｋ（１１１０）を入力として、４ビットの信号線から構成される出力信号１１３０を出力する。尚、４ビットの信号線をＯ（０）・・Ｏ（３）は、１５３０と総称される。回路の内部には、４つのフリップフロップ回路（ＦＦ）１５１０、１５１１、１５１２、１５１３が存在し、ＦＦ１５１０とＦＦ１５１３の２つの出力のＸＯＲ値を計算するＸＯＲ回路１５２０が存在する。ＦＦ１５１０とＦＦ１５１１とＦＦ１５１２とＦＦ１５１３は、半導体集積回路に電源が投入された時には、４ビットの決まった初期値を保持するものとする。基準クロック信号ｃｌｋの入力に合わせてＦＦ１５１１はＦＦ１５１０の出力値を値として保持し、ＦＦ１５１２はＦＦ１５１１の出力値を値として保持し、ＦＦ１５１３はＦＦ１５１２の出力値を値として保持する。ＦＦ１５１０はＦＦ１５１０とＦＦ１５１３の二つの出力値のＸＯＲ値を値として保持する。ＦＦ１５１０の出力値はＯ（０）、ＦＦ１５１１の出力値はＯ（１）、ＦＦ１５１２の出力値はＯ（２）、ＦＦ１５１３の出力値はＯ（３）であり、これら４ビットの出力値が出力信号１１３０を構成する。ここで、初期値としてＦＦ１５１０＝１、ＦＦ１５１１＝０、ＦＦ１５１２＝０、ＦＦ１５１３＝０として与えた時、基準クロック信号ｃｌｋ（１１１０）信号によって、ＦＦ１５１０＝０、ＦＦ１５１１＝１、ＦＦ１５１２＝０、ＦＦ１５１３＝０となる。このときの出力信号１１３０をＯ（３）、Ｏ（２）、Ｏ（１）、Ｏ（０）の順に並べると、００１０となる。この並びによって、以降の出力信号１１３０の状態変化を表すと、００１０→０１００→１０００→０００１→００１０→・・・となり、周期４の状態遷移を出力する。
【００７６】
符号距離一定動作回路（１１２１）は、内部データの状態遷移において、二つの状態遷移におけるハミング距離またはハミング重みが一定の値となる回路のことである。状態遷移におけるハミング距離またはハミング重みが一定となる回路として、例えばリングカウンタや４ビット以上のジョンソンカウンタといった回路が一例として挙げられる。
【００７７】
図１１には、符号距離一定回路１１２１の構成例として４ビットのリングカウンタが示される。
【００７８】
図１１に示される符号距離一定回路１１２１は、基準クロック信号ｃｌｋ（１１１０）を入力として、４ビットの信号線から構成される出力信号１１３１を出力する。ここで、４ビットの信号線Ｐ（０）・・・Ｐ（３）は２１１０と総称される。回路の内部には、４つのフリップフロップ回路（ＦＦ）ＦＦ２１２０、ＦＦ２１２１、ＦＦ２１２２、ＦＦ２１２３が存在する。ＦＦ２１２０とＦＦ２１２１とＦＦ２１２２とＦＦ２１２３は、半導体集積回路に電源が投入された時には、４ビットの決まった初期値を保持するものとする。基準クロック信号ｃｌｋの入力に合わせて、ＦＦ２１２１はＦＦ２１２０の出力値を値として保持し、ＦＦ２１２２はＦＦ２１２１の出力値を値として保持し、ＦＦ２１２３はＦＦ２１２２の出力値を値として保持し、ＦＦ２１２０はＦＦ２１２３の出力値を値として保持するものとする。ＦＦ２１２０の出力値はＰ（０）、ＦＦ２１２１の出力値はＰ（１）、ＦＦ２１２２の出力値はＰ（２）、ＦＦ２１２３の出力値はＰ（３）であり、これら４ビットの出力値が出力信号１１３１を構成する。ここで、初期値としてＦＦ２１２０＝１、ＦＦ２１２１＝０、ＦＦ２１２２＝０、ＦＦ２１２３＝０として与えた時、基準クロック信号ｃｌｋ（１１１０）信号によって、ＦＦ２１２０＝０、ＦＦ２１２１＝１、ＦＦ２１２２＝０、ＦＦ２１２３＝０となる。このときの出力信号１１３１をＰ（３）、Ｐ（２）、Ｐ（１）、Ｐ（０）の順に並べると、００１０となる。この並びによって、以降の出力信号１１３１の状態変化を表すと、００１０→０１００→１０００→０００１→００１０→・・・となり、周期４の状態遷移且つ隣り合う出力信号１１３１の状態はハミング距離が２となる。また、このとき、どの出力信号１１３１もハミング重みは１となる。
【００７９】
誤動作検出回路１１４０は、特定周期動作回路１１２０の出力である出力信号１１３０と基準クロック信号ｃｌｋ（１１１０）を入力とし、誤動作検出信号１１５０を出力する。誤動作検出回路１１４０は、特定周期動作回路の出力信号１１３０の周期性を用いて、出力信号１１３０の状態遷移に矛盾がないかを確認し、矛盾がある場合には誤動作検出信号１を出力する。
【００８０】
ここで、図７と図８を用いて誤動作検出回路１１４０の構成例について説明する。
【００８１】
図７では、誤動作検出回路１１４０に対して、出力信号１１３０と基準クロック信号ｃｌｋ（１１１０）を入力とし、誤動作検出信号１１５０を出力する。誤動作検出回路１１４０は、データ比較回路１７１０を２つと、比較データ１７２０と、周期データ１７３０と、ｃｌｋカウンタ１７４０と、ＡＮＤ回路１６３０と、排他的論理和回路（ＸＯＲ）１５２０を含んで構成される。
【００８２】
予め定めた比較データ１７２０と出力信号１１３０をデータ比較回路１７１０によって比較を行う。データ比較回路１７１０は全データが合致した場合には１を出力し、１つでも合致しない場合には０を出力するものとする。出力結果はＡＮＤ回路１６３０とＸＯＲ回路１５２０に入力される。また、基準クロック信号ｃｌｋの入力に合わせてｃｌｋカウンタ１７４０が動作する。予め定めた周期データ１７３０とｃｌｋカウンタ１７４０の値をもう１つのデータ比較回路１７１０によって比較し、結果をＡＮＤ回路１６３０とＸＯＲ回路１５２０に入力する。比較データが合致する場合は、ＡＮＤ回路からｃｌｋカウンタ１７４０に対してデータリセット信号１７５０として、１（ハイレベル）が出力される。これによって、ｃｌｋカウンタ１７４０は初期化され、カウントを最初から行う。また、ＸＯＲ回路１５２０においては、ふたつのデータ比較回路の結果が異なる場合には、周期もしくは比較データが異なったと判定され、誤動作検出信号１１５０として１を出力する。特に図５のＬＦＳＲの場合、初期値に００００を入力すると、周期は１となる。これは、生成多項式に依存しない性質であることから、他のＬＦＳＲの回路において、初期の値を０として検出しても良い。このとき、誤動作検出回路１１４０は、例えば図１８に示されるように、比較データ１７２０とデータ比較回路１７１０とＮＯＴ回路２２６０によって構成される回路でも良い。また、全ての値が常に０である点に着目して、図１９のようなＸＯＲ回路のみで構成される回路でも良い。ＬＦＳＲに限らず周期性のある回路において、値が一定となる初期値がある場合、初期値を維持し続けるかを比較し、検出しても良い。
【００８３】
図８では、誤動作検出回路１１４０に対して、出力信号１１３０と基準クロック信号ｃｌｋ（１１１０）を入力とし、誤動作検出信号１１５０を出力する。誤動作検出回路１１４０は、データ比較回路１７１０と予め計算した特定周期動作回路１１２０が状態遷移として取り得ない値を異常データ（１８１０）から構成される。
【００８４】
出力信号１１３０が入力される毎にデータ比較回路は異常データと比較を行い、比較した結果、異常データと合致した場合には、誤動作検出信号１１５０として１を出力する。尚、先に図５で説明したＬＦＳＲの例でも明らかなように、異常データの状態遷移列は複数個考えられる。このため、例えば、図９に示されるように、複数の異常データとして異常データ１９１０と異常データ１９１１に対して、複数のデータ比較回路１７１０で比較を行い、少なくとも1つのデータ比較回路１７１０において１が出力された結果を誤動作検出信号１１５０として出力するために、ＯＲ回路１９２０を用いるという構成例もあり得る。図９では、異常データは２つとしているが、予め計算によって３つ以上がある場合には、図９の構成を元に３つの異常データと比較する回路を構成しても良い。上記でも示したが、図５のＬＦＳＲにおいて初期値を００００とした場合についても、同様の異常データを予め計算し、その結果を異常データとして記録して比較と検出をしても良い。また，複数の異常データが予め定めた特定周期の間に出現したことを検出しても良い。ここで，特定周期は一定周期動作回路の周期でも良いが，予め計算によって定めた異なる周期を設定しても良い。
【００８５】
図７に示される回路と図８に示される回路との双方を誤動作検出回路１１４０内に設け、図７に示される回路及び図８に示される回路の少なくとも一方によって誤動作検出が行われる場合に誤動作検出信号１１５０がアサートされるように構成することができる。この場合において、図７に示される回路及び図８に示される回路との少なくとも一方を複数個設け、それらのオア論理を得るようにしても良い。
【００８６】
誤動作検出回路１１４１は、符号距離一定回路１１２１の出力である出力信号１１３１と基準クロック信号ｃｌｋ（１１１０）を入力とし、誤動作検出信号１１５１を出力する。誤動作検出回路１１４１は、符号距離一定回路が出力する出力信号１１３１の状態遷移もしくはデータにおけるハミング重みやハミング距離の観点で一定の値となっているかを確認し、異なっている場合には誤動作検出信号２を出力する。
【００８７】
ここで、図１２と図１３を用いて誤動作検出回路１１４１の構成を説明する。図１２では、誤動作検出回路１１４１に対して、出力信号１１３１と基準クロック信号ｃｌｋ（１１１０）を入力とし、誤動作検出信号１１５１を出力する。誤動作検出回路１１４１は、出力信号１１３１のデータを格納する４つのフリップフロップであるＦＦ２２５１、ＦＦ２２５２、ＦＦ２２５３、ＦＦ２２５４を含む。さらに誤動作検出回路１１４１は、ＡＮＤ（アンド）回路１６３０と、ＸＯＲ（排他的論理和）回路１５２０、ＮＯＴ（ノット）回路２２６０と、４ビットの入力をカウントする４ビット入力カウンタ２２３０と、データ比較を行うデータ比較回路１７１０とを含む。また、ＦＦ３１〜ＦＦ３４においては、最初に入力される出力信号１１３１の前の状態を予め計算によって求め、その値を初期状態として格納することとする。
【００８８】
出力信号１１３１が更新される時、Ｐ（０）の値とＦＦ３１の出力値がＸＯＲ回路１５２０に入力され、異なっている場合には１を出力し、同じ場合には０を出力し、４ビット入力カウンタ２２３０に入力する。これを他のＰ（１）、Ｐ（２）、Ｐ（３）に対しても同様に行う。４ビット入力カウンタ２２３０は入力信号２とＦＦ３１〜ＦＦ３４の各々で異なっている値の総数をカウントし、カウント結果を２ビット信号として出力する。カウント結果はデータ比較回路１７１０へ入力され、同様に入力されるハミング距離データ（２２４０）の値と比較する。データ比較回路は値が合致している場合には１を出力し、異なっている場合には０を出力する。データ比較回路の出力で０が出力された場合には、ＮＯＴ回路２２６０で値を反転し、誤動作検出信号１１５１として１を出力する。また、データ比較回路において１が出力された場合、その値をＰ（０）〜Ｐ（３）の各々と対にして、各ＡＮＤ回路１６３０に入力する。各ＡＮＤ回路の出力を、ＦＦ３１〜ＦＦ３４までの各々に入力することで、ＦＦ３１〜ＦＦ３４の更新が行われる。そして、次の出力信号１１３１の入力に対して、同様の処理を繰り返す。
【００８９】
図１３では、誤動作検出回路１１４１に対して、出力信号１１３１と基準クロック信号ｃｌｋ（１１１０）を入力とし、誤動作検出信号１１５１を出力する。誤動作検出回路１１４１は、４ビット入力カウンタ２２３０と、予め計算によって求めたハミング重みデータ２３１０と、データ比較回路１７１０と、ＮＯＴ回路２２６０から構成される。
【００９０】
ここで、出力信号１１３１は４ビットの信号とし、Ｐ（０）・・・Ｐ（３）（２１１０）と各々の信号を分割できる。各々の信号を４ビット入力カウンタ２２３０に入力する。４ビット入力カウンタ２２３０はカウント結果を２ビット信号として出力し、出力結果はデータ比較回路１７１０に入力する。一方で、ハミング重みデータ２３１０もデータ比較回路１７１０に入力する。データ比較回路は、２つの入力値を比較した結果が合致している場合には１を出力し、異なる場合には０を出力する。異なる場合の出力結果０をＮＯＴ回路２２６０によって反転し、誤動作検出信号１１５１として出力する。
【００９１】
尚、特定周期動作回路の出力データにおいて、ハミング距離が一定である場合やハミング重みが一定であるという特徴がある場合には、誤動作検出回路１１４０に図１２や図１３のような回路を用いても良い。また、符号距離一定回路１１２１においてデータの状態遷移に周期性がある場合には、誤動作検出回路１１４１に図７や図８や図９を用いても良い。
【００９２】
誤動作結果処理回路１１６０は、誤動作検出回路１１４０や誤動作検出回路１１４１から出力される誤動作検出信号１１５０や誤動作検出信号１１５１を入力とし、制御信号１１７０を出力する回路である。
【００９３】
図１４を用いて、誤動作結果処理回路１１６０の構成例について説明する。
【００９４】
誤動作結果処理回路１１６０は誤動作検出信号１１５０と誤動作検出信号１１５１を入力とし、制御信号１１７０を出力する。誤動作結果処理回路では、ＯＲ回路１９２０から構成される。各入力から１が少なくとも１つ入力された場合には、制御信号１１７０として出力する。出力された制御信号は、図１のＣＰＵ１２３２に入力される。ここで、制御信号とは、例えばＣＰＵのリセット信号であったり、割り込み処理信号であったり、と半導体集積回路の動作を停止することが出来る信号のことである。尚、ＣＰＵ１２３２の内部には割り込み処理を行う専用回路が搭載されている場合が考えられる。この場合、図４に示されるように、ＣＰＵ内部の制御回路１３００に対して制御信号１１７０を直接入力しても良い。
【００９５】
以上から、特定周期動作回路１１２０もしくは符号距離一定回路１１２１を用いた回路において発生した誤動作を検出することが可能である。
【００９６】
＜実施の形態２＞
上記の実施の形態１においては、図１や図４を用いた例のように、誤動作結果処理回路１１６０から出力される制御信号１１７０は、ＣＰＵ１２３２に直接入力している。しかしながら、制御信号は、ＣＰＵ１２３２に直接入力する必要はなく、例えば図３に示されるように、ＣＰＵ１２３２以外の半導体集積回路全体を制御する制御回路１３００に制御信号１１７０が入力されても良い。図３に示される構成では、ＣＰＵ１２３２の動作をリセットする動作を考えており、制御回路１３００からＣＰＵ１２３２にリセット信号１３１０を出力する。勿論、制御回路はリセット信号だけに限らず、例えば、誤動作が起きたことを示す信号をＩ／Ｏから出力するといった処理を行っても良い。例えばＣＰＵ１２３２に対する割り込み信号を出力するようにしても良い。
【００９７】
また、実施の形態１において、誤動作検出信号１１５０や誤動作検出信号１１５１は誤動作検出時に１を出力するとしたが、通常時は１を出力とし、誤動作検出時には０を出力としても良い。同様に、制御信号も誤動作検出時には１を出力するとしたが、０（ローレベル）を出力しても良い。これは、光の照射によって、出力信号に指向性が発生する可能性があるためであり、実際の誤動作状態の観測によって、出力信号を決定することが望ましい。ここで指向性とは光の照射によって信号または内部ビットの値が変化する傾向のことであり、例えば、１→０と変化はするが、０→１は変化しないといった現象のことである。この例に従った場合には、誤動作検出信号１や誤動作検出信号２や制御信号は常時１と固定しておくことで、より検出精度を高めることが可能である。
【００９８】
光の照射による指向性が考えられる場合、特に０→１が発生するが１→０が発生しないか影響が少ないと考えられる場合、実施の形態１で述べたように図５のＬＦＳＲの初期値を００００とすることで十分な検出能力が期待できる。
【００９９】
＜実施の形態３＞
上記の実施の形態１と実施の形態２では、特定周期動作回路１１２０や符号距離一定回路１１２１は、マイクロコンピュータ１２３０上に設けた。しかしながら、実施の形態１で述べたＬＦＳＲやリングカウンタといった回路は、半導体集積回路の機能によっては標準で搭載されている。このため、例えば、特定周期動作回路もしくは符号距離一定回路がＣＰＵ内部の機能として搭載されている場合も考えられる。この場合でも、例えば、図１０に示すような構成によって本発明は実施可能である。
【０１００】
図１０では、ＣＰＵ１２３２内部に特定周期動作回路１１２０と符号距離一定回路１１２１や制御回路１３００が搭載されている。このとき、特定周期動作回路や符号距離一定回路はＣＰＵ内部の1つのモジュールとして動作し、出力信号をＣＰＵ外の誤動作検出回路１１４０と誤動作検出回路１１４１に出力信号１１３０と出力信号１１３１を出力する。このとき、誤動作検出回路１１４０と誤動作検出回路１１４１と誤動作結果処理回路１１６０は、本発明を実施するために搭載する回路となる。上記に限らず、誤動作結果処理回路や誤動作検出回路１１４０と誤動作検出回路１１４１もＣＰＵ内部やその他搭載回路において、同等の回路があればそれを利用しても良い。
【０１０１】
特に、実施の形態１で示したように、ＬＦＳＲで初期値の値が全て０となる場合、ＬＦＳＲの出力は全て０となることも利用できる。このとき、ＣＰＵ内部の機能として搭載されたＬＦＳＲの生成多項式を変更する必要はない。具体的には、図１８や図１９に示される誤動作検出回路１１４０で誤動作を検出し、ＬＦＳＲには初期値として全ての値を０とすれば良い。
【０１０２】
ここで、図１０の特定周期動作回路１１２０が４ビットＬＦＳＲであった場合、通常のＬＦＳＲでは原始多項式を用いるように設計される。このとき、特定周期動作回路は、例えば図６に示すような回路とすることで、通常の原始多項式を用いたＬＦＳＲの機能と特定周期動作回路の機能とを切り替えて使用することが可能となる。図６における特定周期動作回路１１２０は、入力として、基準クロック信号ｃｌｋ（１１１０）と信号Ｉ（０）（１６２０）と信号Ｉ（１）（１６２１）と信号Ｉ（２）（１６２２）と信号Ｉ（３）（１６２３）を入力とし、出力信号１１３０を出力する。信号Ｉ（０）〜Ｉ（３）は、生成多項式を決定するための入力信号である。例えば、生成多項式をＸ４＋１とする場合には、Ｉ（０）＝０、Ｉ（１）＝０、Ｉ（２）＝０、Ｉ（３）＝１とする。また、既約多項式とする場合には、Ｉ（０）＝１、Ｉ（１）＝０、Ｉ（２）＝０、Ｉ（３）＝１とする。このとき、信号Ｉ（ｉ）（ｉ＝０，１，２，３）は、ＡＮＤ回路１６３０を経由して、フィードバックの有無を決定する。尚、ＸＯＲ回路（１６１０）は４入力ＸＯＲ回路である。このような入力信号とＡＮＤ回路の組み合わせを用いることで、従来のＬＦＳＲ回路に特定周期動作回路としての機能を付与することができる。これはｎビットのＬＦＳＲにおいても同様である。尚、通常のＬＦＳＲでは初期値を固定とするが、特定周期動作回路として併用する場合、通常のＬＦＳＲでの初期値をＦＦ１５１０〜ＦＦ１５１３に初期値として入力しても良い。また、通常のＬＦＳＲでの初期値以外をＦＦ１５１０〜ＦＦ１５１３に入力しても良い。
【０１０３】
＜実施の形態４＞
上記の実施の形態１と実施の形態２と実施の形態３においては、図１のように、特定周期動作回路１１２０から出力される出力信号１１３０は、1つの誤動作検出回路１１４０に入力していた。同様に、符号距離一定回路１１２１から出力される出力信号１１３１は、１つの誤動作検出回路１１４１に入力していた。しかしながら、これらの入力と出力の組み合わせは各々が１つずつで無くとも良い。例えば、２つ以上の特定周期動作回路から出力された信号をＸＯＲ回路によって各ビットに違いが無いことを確認し、違いがあれば誤動作結果処理回路に１を入力し、違いがなければ、誤動作検出回路１１４０に出力信号１１３０を入力しても良い。例えば、１つの特定周期動作回路に対して、誤動作検出回路１１４０が複数個存在しており各々に出力信号１１３０を入力しても良い。この場合の構成例について、図１５と図１６を用いて以下に説明する。
【０１０４】
図１５では、特定周期動作回路に対して基準クロック信号ｃｌｋが入力され、出力信号１１３０を出力する。出力信号１１３０は、誤動作検出回路４１１０と誤動作検出回路４１１１へ入力される。誤動作検出回路４１１０と誤動作検出回路４１１１はそれぞれ誤動作検出信号１１５０を出力し、誤動作結果処理回路１１６０に入力する。このとき、誤動作検出回路４１１０と誤動作検出回路４１１１は、例えば、図７と図９に示したような回路をそれぞれ組み合わせて用いても良い。また、同一の回路のみを用いても良い。特に、特定周期動作回路が符号距離一定回路としての振る舞いを行う場合には、図１２や図１３に示したような回路を組み合わせても良い。例えば、生成多項式をＸ４＋１としたＬＦＳＲの場合にはリングカウンタとしての振る舞いを行うことから、ハミング距離やハミング重みが一定となることから、例えば図７と図９と図１２と図１３に示した回路を組み合わせることが可能である。また、図１５では、誤動作検出回路は２個としたが、３個以上とすることができる。
【０１０５】
同様に図１６では、符号距離一定回路に対して基準クロック信号ｃｌｋが入力され、出力信号１１３１を出力する。出力信号１１３１は、誤動作検出回路５１１０と誤動作検出回路５１１１へ入力される。誤動作検出回路５１１０と誤動作検出回路５１１１は、それぞれ誤動作検出信号１１５１を出力し、誤動作結果処理回路１１６０に入力する。このとき、誤動作検出回路５１１０と誤動作検出回路５１１１は、例えば、図１２と図１３に示したような回路を組み合わせて用いても良い。また、同一の回路のみを用いても良い。特に、上記のようにリングカウンタは特定周期動作回路として振舞う。従って、図７と図９と図１２と図１３に示した回路を組み合わせることが可能である。また、図１６では誤動作検出回路は２個としたが、３個以上とすることができる。
【０１０６】
また、同様に、誤動作結果処理回路も３個以上とすることができる。
【０１０７】
＜実施の形態５＞
上記の実施の形態４では、特定周期動作回路を複数個用いる方法について示した。このとき、特定周期動作回路における初期状態が異なるが、生成されるデータ列が同じ場合でも、本発明における誤動作検出回路は構成可能である。例えば、図１７のような構成を１つの例として示す。図１７では、特定周期動作回路７１２０と特定周期動作回路７１２１がそれぞれ出力信号７１１０と出力信号７１１１を出力する。誤動作検出回路７１３０は、出力信号１１と出力信号１２と基準クロック信号ｃｌｋ（１１１０）を入力とし、誤動作検出信号１１５０を出力する。誤動作検出回路−３は、データ比較回路１７１０と、出力信号１２を１クロックの期間に保持するデータバッファ７１４０と、ＮＯＴ回路２２６０から構成される。ここで、特定周期動作回路１と特定周期動作回路２をそれぞれ、生成多項式をＸ４＋１としたＬＦＳＲとして、初期値をそれぞれ００１１と０１１０とする。このとき、特定周期動作回路１の出力信号は以下のようになる。
【０１０８】
００１１→０１１０→１１００→１００１→００１１→・・・
また、特定周期動作回路２の出力信号は以下のようになる。
【０１０９】
０１１０→１１００→１００１→００１１→０１１０→・・・
また、データバッファ７１４０は初期値として、００１１を保持することとする。このとき、最初のクロックで特定周期動作回路１は、００１１を出力信号１１として出力し、特定周期動作回路２は０１１０を出力信号１２として出力する。データ比較回路は、データバッファ１７２０の００１１と出力信号１１の００１１の値を比較する。同時に、出力信号１２の１１００がデータバッファに入力される。この手順を以降の基準クロック信号ｃｌｋにおいても同様に繰り返す。このとき、データ比較回路で比較結果が一致しない場合には０を出力し、ＮＯＴ回路２２６０によって１に反転し、誤動作検出信号１として出力する。
【０１１０】
上記のように特定周期動作回路が一定の周期でデータ列を繰り返すことを着目し、複数の出力と複数の初期値を組み合わせることで、誤動作状態を検出することが可能である。また、この例では、誤動作検出回路１と誤動作検出回路の出力するデータ列は１クロックの差であったが、複数クロックの差であっても良い。また、特定周期動作回路も２個に限らず、３個以上とすることができる。
【０１１１】
同様に、符号距離一定回路に関しても、複数入力と異なる初期値とデータバッファを用いてハミング距離を比較することが可能である。
【０１１２】
上記の例によれば、以下の作用効果を得ることができる。
【０１１３】
特定周期動作回路及び符号距離一定回路において誤動作が発生した場合において、誤動作検出が可能である。
【０１１４】
上記の実施の形態では、内部データの周期性やデータの状態遷移の特徴を用いた検出方式であることから、光を複数箇所に照射する場合でも誤動作検出が可能である。特に、リングカウンタの例の場合、上記の第１から第４までの特徴を用いた検出回路の構成が可能である。このとき、検出回路を全て搭載した場合には、ハミング距離や周期性を考慮し、且つ検出回路にも誤動作を引き起こす必要がある。これを行うには、ハミング距離や周期やデータ列の状態を加味して、それぞれの箇所に検出が無効となるような値を書き出すといった誤動作が必要となる。これを行うには、検出回路の内部に設定された比較用データの値のような具体的な情報を取得する必要がある。ところが、本実施の形態における検出回路では、内部データを出力する機能は有していないため、内部データの取得は困難である。また、内部データを解析する方法としては、リバースエンジニアリングの手法を用いることも考えられるが、非特許文献１の方法を実装することで、この危険性はなくなる。従って、本実施の形態によれば、複数の光照射を加味した場合でも検出器の冗長化を行わずに誤動作検出が可能である。
【０１１５】
一方で、本実施の形態は半導体集積回路の本来の機能に対して直接作用する検出方法ではない。そして、本実施の形態において防御する対象は半導体集積回路の本来の機能での内部情報である。しかしながら、特定周期動作回路や符号距離一定回路を保護したい回路付近に配置することによって、光検出器と同等の役割を果たす。
【０１１６】
ところで、従来技術によれば、光検出器においては感度の調整が困難であるという課題があった。この点について本実施の形態における特定周期動作回路や符号距離一定回路は、防御対象となる半導体集積回路で採用される標準セルを用いて構成可能である点で調整は不要である。例えば、太陽光のような自然光で検知をする場合には、他の標準セルでは誤動作が起きる状態となるので、誤動作を検知するという観点では正しい。また、強い光についても同様で、標準セルが誤動作を引き起こす強度の光を照射した場合には、特定周期動作回路や符号距離一定回路も同様に誤動作を引き起こすことから正しい。従って、感度の調整が不要となる。更に本実施の形態では、光照射のみならず、電磁波や放射線等による誤動作についても半導体集積回路で誤動作が発生する限りは、検出可能である。
【０１１７】
また、本実施の形態では、半導体集積回路の論理構成には大きく影響を及ぼさない。すなわち、従来の半導体集積回路の構成に、新たに本発明の回路を付与することで、光照射の検出が可能となる。
【０１１８】
本実施の形態において光照射によって誤動作を起こし、検出回路によって検出する誤動作現象を保持する特定周期動作回路や符号距離一定回路については、通常の半導体集積回路にも必要機能として搭載されることがある。つまり、上記の誤動作検出回路と誤動作結果処理回路を付与することで、本実施の形態での光検出機能を付与することが可能となる。
【０１１９】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【符号の説明】
【０１２０】
１１２０  特定周期動作回路
１１２１  符号距離一定回路
１１４０，１１４１  誤動作検出回路
１１６０  誤動作結果処理回路
１２００  ＩＣカード
１２３０  マイクロコンピュータ
１２３１  不揮発性メモリ
１２３２  ＣＰＵ
１２３３  コプロセッサ
１２３４  入出力部
１２３５  揮発性メモリ
１２３７  誤動作処理回路
【図１】
2010191512.tif 000003
【図２】
2010191512.tif 000004
【図３】
2010191512.tif 000005
【図４】
2010191512.tif 000006
【図５】
2010191512.tif 000007
【図６】
2010191512.tif 000008
【図７】
2010191512.tif 000009
【図８】
2010191512.tif 000010
【図９】
2010191512.tif 000011
【図１０】
2010191512.tif 000012
【図１１】
2010191512.tif 000013
【図１２】
2010191512.tif 000014
【図１３】
2010191512.tif 000015
【図１４】
2010191512.tif 000016
【図１５】
2010191512.tif 000017
【図１６】
2010191512.tif 000018
【図１７】
2010191512.tif 000019
【図１８】
2010191512.tif 000020
【図１９】
2010191512.tif 000021