(57)【要約】【課題】ＬＳＩに誤動作を起こさせることにより機密情報の取得や改竄を目的とした、レーザー攻撃からＬＳＩの保持する機密情報を保護する。レーザー攻撃によって発生する、複数ビットの記憶素子の誤りのビット数が何ビットであっても、レーザー攻撃を検出することができるようにする。【解決手段】論理回路に含まれる複数ビットの記憶素子を対象として攻撃検出回路を備える。攻撃検出回路は、符号理論などの論理演算を用いて検出することができるエラー判定回路と、光検出素子を有する光照射検出回路とを備え、エラー判定回路の検出限界を超えるビット数の誤りを、光照射検出回路が検出することができるように、光検出素子を配置して構成する。エラー判定回路による誤り検出と光照射検出回路による光照射の検出とにより、互いに補完的に外部からの故障利用攻撃を検出する。【選択図】図１
2014063272.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ１ビットの情報を記憶可能なｎ個（ｎは正の整数）の記憶素子と攻撃検出回路とを含む論理回路とを備える半導体集積回路であって、
前記攻撃検出回路は、
前記ｎ個の記憶素子に格納される値をｎビットの符号にｋビット（ｋは正の整数）以下の誤りが発生したことを、論理演算を用いて検出することができる、エラー判定回路と、
光検出素子を有し、前記ｎ個の記憶素子のうちのｋ＋１個以上に光が照射されたことを検出することができる、光照射検出回路とを備え、
前記エラー判定回路による前記誤りの検出と前記光照射検出回路による前記光照射の検出のいずれかを検出したときに、前記論理回路が外部から攻撃を受けたものと判定する、半導体集積回路。
【請求項２】
請求項１において、前記ｎ個の記憶素子はｍビットの誤り検出符号を格納可能なｍ個の記憶素子を含み、
前記エラー判定回路は、前記ｎ個の記憶素子のうちのｎ−ｍ個から誤り検出符号を生成する誤り検出符号生成回路と、前記ｎ個の記憶素子における誤りの発生を検出可能なチェック回路を含む、半導体集積回路。
【請求項３】
請求項２において、前記ｎ個の記憶素子は１ビットのパリティ符号を格納可能な１個の記憶素子を含み、前記光照射検出回路はｎ−１個の光検出素子を備え、
前記エラー判定回路は、前記ｎ個の記憶素子のうちのｎ−１個から前記パリティ符号を生成するパリティ符号生成回路と、前記ｎ個の記憶素子における誤りの発生を検出可能なパリティチェック回路を含み、
前記光照射検出回路は、前記ｎ−１個の光検出素子の少なくとも１個に光が照射されたことを検出したとき、前記ｎ個の記憶素子のうちの２個以上に光が照射されたことを検出する誤りが発生したことを検出する、半導体集積回路。
【請求項４】
請求項１において、前記ｎ個の記憶素子は、現用系論理回路の出力であるｍ個の現用系記憶素子と、前記現用系に対して二重化された予備系論理回路の出力であるｍ個の予備系記憶素子を含み、前記エラー判定回路は、前記現用系記憶素子の出力と対応する前記予備系記憶素子の出力が不一致の場合に、誤りが発生したこと検出し、前記現用系記憶素子と対応する前記予備系記憶素子は、対応する２個の記憶素子の組合せがそれぞれ少なくとも１個の前記光検出素子を挟んで配置される、半導体集積回路。
【請求項５】
請求項３において、前記ｎ個の記憶素子から任意に選んだ２個の記憶素子は、いずれの２個の記憶素子の組合せも必ず少なくとも１個の前記光検出素子を挟んで配置される、半導体集積回路。
【請求項６】
請求項５において、前記ｎ−１個の前記光検出素子と前記ｎ個の記憶素子は、単一のセル列に互いに隣接して１個ずつ交互後に配置される、半導体集積回路。
【請求項７】
請求項１において、前記論理回路はプロセッサであり、前記ｎ個の記憶素子は前記プロセッサのプログラムカウンタを含む、半導体集積回路。
【請求項８】
請求項１において、前記論理回路はプロセッサであり、前記ｎ個の記憶素子は前記プロセッサが条件分岐命令を実行するときに参照する条件を与えるレジスタを含む、半導体集積回路。
【請求項９】
請求項１において、前記論理回路はプロセッサであり、前記ｎ個の記憶素子は前記プロセッサの汎用レジスタを含む、半導体集積回路。
【請求項１０】
請求項１において、前記論理回路はプロセッサであり、前記攻撃検出回路の出力が前記プロセッサのリセット端子に入力される、半導体集積回路。
【請求項１１】
請求項１において、前記論理回路はメモリを備えたプロセッサであり、前記攻撃検出回路は前記プロセッサに割り込みを発生させることができ、前記攻撃を検出したときに前記プロセッサは前記メモリに格納されている情報を消去する、半導体集積回路。
【請求項１２】
請求項１において、前記論理回路への電源供給を制御することができる電源制御端子を有する電源回路をさらに備え、前記攻撃検出回路の出力は前記電源回路の前記電源制御端子に接続され、前記攻撃を検出したときに前記論理回路への電源供給を遮断する、半導体集積回路。
【請求項１３】
それぞれ１ビットの情報を記憶可能なｎ個（ｎは正の整数）の記憶素子と攻撃検出回路とを含む論理回路とを備える半導体集積回路であって、
前記攻撃検出回路は、エラー判定回路と、光検出素子を有する光照射検出回路とを備え、
前記エラー判定回路は、前記ｎ個の記憶素子に格納される値をｎビットの符号にｋビット（ｋは正の整数）以下の誤りが発生したことを、論理演算を用いて検出することができ、
前記ｎ個の記憶素子のうちの任意のｋ＋１個を、内側に凸の周を持たない最小の閉曲線で囲む複数の領域のそれぞれは、前記領域内に少なくとも１個の前記光検出素子が配置され、前記光照射検出回路は、前記光検出素子の少なくとも１個に光が照射されたことを検出したとき、前記ｎ個の記憶素子のうちのｋ＋１個以上への光照射を検出し、
前記エラー判定回路による前記誤りの検出と前記光照射検出回路による前記光照射の検出のいずれかを検出したときに、前記論理回路が外部から攻撃を受けたものと判定する、半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機密情報を扱う半導体集積回路に関し、特に機密情報の不正な取得や改竄を目的とした故障利用攻撃への対策に好適に利用できるものである。
【背景技術】
【０００２】
機密情報を扱う例えばセキュリティマイコンに格納されている機密情報の取得や改竄を目的として、マイコンの誤動作を利用する故障利用攻撃というものがある。誤動作を引き起こす原因としては、異常電圧、異常周波数クロックの印加、レーザー照射による攻撃等がある。レーザー照射による攻撃は局所的な部位の故障を引き起こすことが可能なため、故障利用攻撃の中でも極めて脅威であり、近年、レーザー攻撃への対策の重要性は高まっている。
【０００３】
レーザー攻撃への対策として、光検出器の配置、回路の二重化、誤り検出符号（例えばパリティ）を利用したデータの誤り検出などが採用されている。光検出器の配置は、機密情報を扱うマイコンが形成されている半導体チップに光検出素子を配置して、レーザーが照射されていることを直接検知するものである。回路の二重化は、単純には、フリップフロップなどの記憶素子を２個備え、２個に同じデータを入力しておき、そのデータが読み出されたときに、互いの出力を照合して、不一致の場合に故障利用攻撃がされたことを検出するものである。二重化の単位は、上記のような単純な例からCPU（Central Processing Unit）全体を二重化する例まで多様である。誤り検出は、記憶するデータに基づいて、予めパリティなどの誤り検出符号を算出しておき、記憶されたデータが再び読み出されたときに、再び誤り訂正符号を算出して、記憶したときのものと照合し、不一致の場合に故障利用攻撃がされたことを検出するものである。
【０００４】
特許文献１には、６トランジスタで構成されるSRAM（Static Random Access Memory）メモリセルを元にした光ディテクタが開示され（図１）、SRAMのメモリマット中に分散して配置した実施例が示されている（図４他）。また、CPUなどの論理回路を構成するセル配列の中に光ディテクタを配置した実施例（図１３、第００８９段落〜第００９４段落）や、光検出回路を組み込んだD型フリップフロップ（図１５、第００９６段落〜第００９７段落）が開示されている。
【０００５】
特許文献２には、CMOS（Complementary Metal-Oxide-Semiconductor）インバータによる光検出回路が開示されている。インバータに受光部を設け、光が照射されることによって誤動作させ、それを検知する。
【０００６】
特許文献３には、サイリスタ構造の光検出器が開示されている。PウェルとNウェルとそれぞれのウェル内に形成した不純物拡散層により、PNPN接合を形成して構成した光検出器であり、例えば10μm角の小さな領域に形成することができる（図３、第００２９段落）。
【０００７】
特許文献４には、メモリとCPUを備えたコアを二重化して、同じコマンドの処理から得られるレスポンスを照合し、その結果が不一致の場合に故障利用攻撃を受けていると判断してエラー処理を実行するセキュリティデバイスが開示されている。
【０００８】
特許文献５には、不揮発性メモリに格納されたプログラムを実行するCPUを備えるICカードにおいて、プログラムを誤り検出符号で保護する技術が開示されている。不揮発性メモリには、命令コードごとに予めEDC（Error Detecting Code）を算出し付加して格納しておき、CPUが実行のために読み出したときにEDCを再計算して、格納されているEDCと照合する。不一致の場合には、故障利用攻撃を受けていると判断する。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開2010-161405号公報
【特許文献２】特開2011-165732号公報
【特許文献３】特開2008-198700号公報
【特許文献４】特開2009-289104号公報
【特許文献５】特開2009-187438号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
レーザー攻撃への対策としての光検出器の配置は、光が照射されたことを直接感知する点で有効であるが、光が照射される位置に光検出素子を配置しておくことが必須である。近年、レーザーのビーム径を数μmまで絞り、配置されている光素子を避けてレーザー光を照射する攻撃方法が現れ、光検出器では検出できないという問題が生じている。
【００１１】
特許文献３の図１、９などには、光検出範囲に隙間が生じないように光検出器を配置する例が開示されているが、レーザー光の光径が数百μmまで集光された場合を想定している（第００１１段落）に留まり、数μmまで集光された場合には応用することができない。想定されるレーザー光の光径の数μm間隔で光検出素子を配置する必要があるが、特許文献３の図３に開示される光検出素子は10μm角であって、数μm間隔で配置すると光検出素子の面積占有が大きすぎ、コスト面で非現実的となるからである。特許文献１及び２に開示される光検出素子は、SRAMメモリセルや論理ゲートの大きさに相当する程度まで小さいので、数μm間隔で配置することも可能であるが、検出素子の面積占有が大きく、チップコストを圧迫する。さらに将来、レーザーのビーム径が、SRAMメモリセルや論理ゲートの大きさに相当する程度まで小さくなった場合には、コスト面で非現実的となる。
【００１２】
レーザー攻撃への対策としての回路の二重化は、レーザー攻撃に限らずあらゆる故障利用攻撃に対して耐性がある点で有効であるが、回路規模を２倍にする必要があるので、チップコストを圧迫する。例えば、特許文献４に記載される二重化ではメモリとCPUを２組備えて、同じ処理を実行させているので、チップコストに対する影響は、極めて大きい。
【００１３】
レーザー攻撃への対策としての誤り検出は、回路規模を２倍にまで増加させる必要がない点で有効であるが、誤り検出符号自体が持つ原理的な検出限界がある。例えば、パリティチェックやチェックサムでは、１ビットのパリティを付加して全体の１の数が偶数か奇数かのいずれか決められた方になるように、パリティを生成する。仮に偶数パリティとした場合、読み出された結果逆の奇数パリティに変化していれば、故障と判定することができる。しかし、同時に２ビットが変化した場合には、偶数パリティであったデータは偶数パリティのままであり、誤りを検出することができない。チェックサムの場合も同様である。したがってパリティチェックやチェックサムの場合には、１ビット誤りを検出することができるが、２ビット以上の誤りには、検出不能または誤検出となる。冗長ビット数を増やすことにより、多数のビット誤りまで検出することは可能であるが、それに伴って、誤り検出回路の規模は大きくなる。したがって、レーザーのビーム径が十分に小さく、誤り検出符号自体が持つ原理的な検出限界以内のビット数の誤りを発生させるときには、有効に機能するが、逆にビーム径が大きく検出限界を超えるビット数の誤りを発生させる場合には、必ずしも常に検出できるとは限らない。
【００１４】
以上のように、レーザー攻撃への対策としての種々の方法には、現実的なチップコストの範囲であらゆるレーザーのビーム径に対応することができる方法はない。
【００１５】
このような課題を解決するための手段を以下に説明するが、その他の課題と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１６】
一実施の形態によれば、下記の通りである。
【００１７】
すなわち、論理回路に含まれる複数ビットの記憶素子を対象として攻撃検出回路を備える。攻撃検出回路は、符号理論などの論理演算を用いて検出することができるエラー判定回路と、光検出素子を有する光照射検出回路とを備え、エラー判定回路の検出限界を超えるビット数の誤りを、光照射検出回路が検出することができるように、光検出素子を配置して構成する。エラー判定回路による誤り検出と光照射検出回路による光照射の検出とにより、互いに補完的に外部からの攻撃を検出する。
【発明の効果】
【００１８】
前記一実施の形態によって得られる効果を簡単に説明すれば下記のとおりである。
【００１９】
すなわち、論理回路に対するレーザー攻撃によって発生する、複数ビットの記憶素子の誤りのビット数が何ビットであっても、レーザー攻撃を検出することができる。
【図面の簡単な説明】
【００２０】
【図１】図１は、実施形態１に係る半導体装置の構成例を表す説明図である。
【図２】図２は、実施形態２に係る半導体装置の具体的な構成例を表す説明図である。
【図３】図３は、実施形態２に係る半導体装置において、さらに誤り検出符号を保持する記憶素子も光照射の検出対象として保護する場合の構成例を表す説明図である。
【図４】図４は、実施形態３に係る半導体装置が３ビット誤り検出符号を利用する場合の構成例を表す説明図である。
【図５】図５は、実施形態４に係る半導体装置の二重化による保護を利用する場合の構成例を表す説明図である。
【図６】図６は、２個以上の記憶素子（フリップフロップ）への光照射を検出するための、フリップフロップと光検出素子の配置を表す説明図である。
【図７】図７は、４個以上の記憶素子（フリップフロップ）への光照射を検出するための、フリップフロップと光検出素子の配置を表す説明図である。
【図８】図８は、２個以上の記憶素子（フリップフロップ）への光照射を検出するために、フリップフロップと光検出素子を複数のセルローに跨って配置する変形例を表す説明図である。
【図９】図９は、２個以上の記憶素子（フリップフロップ）への光照射を検出するために、フリップフロップと光検出素子を複数のセルローに渡って斜めに跨って配置する変形例を表す説明図である。
【図１０】図１０は、２個以上の記憶素子（フリップフロップ）への光照射を検出するために、フリップフロップと光検出素子を交互に隣接して配置する場合の説明図である。
【図１１】図１１は、プロセッサに対する保護を行った実施形態を表す説明図である。
【図１２】図１２は、プロセッサに対する保護を行った実施形態において、攻撃を検知したときにプロセッサをリセットする実施形態を表す説明図である。
【図１３】図１３は、光検出素子としてホトダイオードを用いた光照射検出回路の構成を表す回路図である。
【図１４】図１４は、光検出素子としてホトダイオードを用いた光照射検出回路の動作を表すタイミングチャートである。
【図１５】図１５は、光検出素子として光感応型バッファを用いた光照射検出回路の構成を表す回路図である。
【図１６】図１６は、光検出素子として光感応型バッファを用いた光照射検出回路の動作を表すタイミングチャートである。
【発明を実施するための形態】
【００２１】
１．実施の形態の概要
先ず、本願において開示される代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００２２】
〔１〕＜エラー判定回路＋光照射検出回路＞
それぞれ１ビットの情報を記憶可能なｎ個（ｎは正の整数）の記憶素子（５＿１〜５＿６）と攻撃検出回路（１）とを含む論理回路（６）を備える半導体集積回路（１０）であって、以下のように構成される。
【００２３】
前記攻撃検出回路は、エラー判定回路（２）と光照射検出回路（４）とを備え、前記エラー判定回路による前記誤りの検出と前記光照射検出回路による前記光照射の検出のいずれかを検出したときに、前記論理回路が外部から攻撃を受けたものと判定する。
【００２４】
前記エラー判定回路は、前記ｎ個の記憶素子に格納される値をｎビットの符号にｋビット（ｋは正の整数）以下の誤りが発生したことを、論理演算を用いて検出することができる。
【００２５】
前記光照射検出回路は、光検出素子（３＿１〜３＿４）を有し、前記ｎ個の記憶素子のうちのｋ＋１個以上に光が照射されたことを検出することができる。
【００２６】
これにより、論理回路に対するレーザー攻撃によって発生する、複数ビットの記憶素子の誤りのビット数が何ビットであっても、レーザー攻撃を検出することができる。
【００２７】
〔２〕＜エラー判定回路＝誤り検出符号生成回路＋チェック回路＞
項１において、前記ｎ個の記憶素子（５＿７〜５＿１１、５＿１２〜５＿１６、５＿１７〜５＿２３）はｍビットの誤り検出符号を格納可能なｍ個の記憶素子（５＿１１、５＿１６、５＿２３）を含む。前記エラー判定回路は、前記ｎ個の記憶素子のうちのｎ−ｍ個から誤り検出符号を生成する誤り検出符号生成回路（７）と、前記ｎ個の記憶素子における誤りの発生を検出可能なチェック回路（８）を含む。
【００２８】
これにより、保護対象のｎ−ｍビットに対してｍビットの誤り検出符号を生成し、これを合計したｎビットの情報を保持する記憶素子を対象として、レーザー攻撃に対する保護を行うことができる。
【００２９】
〔３〕＜パリティチェックによる保護＞
項２において、前記ｎ個の記憶素子は１ビットのパリティ符号を格納可能な１個の記憶素子（５＿１６）を含み、前記光照射検出回路はｎ−１個の光検出素子（３＿８〜３＿１１）を備える。
【００３０】
前記エラー判定回路は、前記ｎ個の記憶素子のうちのｎ−１個（５＿１２〜５＿１５）から前記パリティ符号を生成するパリティ符号生成回路（７）と、前記ｎ個の記憶素子（５＿１２〜５＿１６）における誤りの発生を検出可能なパリティチェック回路（８）を含む。
【００３１】
前記光照射検出回路は、前記ｎ−１個の光検出素子の少なくとも１個に光が照射されたことを検出したとき、前記ｎ個の記憶素子のうちの２個以上に光が照射されたことを検出する。
【００３２】
これにより、保護対象のｎ−１ビットに対してパリティ符号を生成し、これを合計したｎビットの情報を保持する記憶素子を対象としてパリティチェック回路を備え、保護対象回路へのレーザー攻撃に対する保護を行うことができる。パリティ符号生成回路とパリティチェック回路は、簡単な論理ゲートで構成することができ、保護のための回路規模のオーバーヘッドを抑えることができる。
【００３３】
〔４〕＜二重化による保護＞
項１において、前記ｎ個の記憶素子は、現用系論理回路の出力であるｍ個の現用系記憶素子（５＿２４）と、前記現用系に対して二重化された予備系論理回路の出力であるｍ個の予備系記憶素子（５＿２５）を含み、前記エラー判定回路は、前記現用系記憶素子の出力と対応する前記予備系記憶素子の出力が不一致の場合に、誤りが発生したこと検出する。前記現用系記憶素子と対応する前記予備系記憶素子は、対応する２個の記憶素子の組合せがそれぞれ少なくとも１個の前記光検出素子を挟んで配置される。
【００３４】
これにより、二重化による保護を採用した回路において、現用系と対応する予備系に同時に誤り発生させるようなレーザー攻撃からも保護することができる。
【００３５】
〔５〕＜１ビット誤り検出に対する光検出素子の配置＞
項３において、前記ｎ個の記憶素子から任意に選んだ２個の記憶素子は、いずれの２個の記憶素子の組合せも必ず少なくとも１個の前記光検出素子を挟んで配置される。
【００３６】
これにより、前記ｎ個の記憶素子のうち２個以上の記憶素子に対して同時に行われるレーザー照射を検出することができる。
【００３７】
〔６〕＜マクロセル＞
項５において、前記ｎ−１個の前記光検出素子と前記ｎ個の記憶素子は、単一のセル列に互いに隣接して１個ずつ交互後に配置される。
【００３８】
これにより、前記ｎ個の記憶素子のうち２個以上の記憶素子に対して同時に行われるレーザー照射を検出ることができる条件を満足するマクロセルを予め準備して使用することにより、自動レイアウトにおけるセルの配置に対して特別な考慮をすることなく、ＬＳＩのレイアウト設計を行うことができる。
【００３９】
〔７〕＜ＣＰＵにおけるプログラムカウンタの保護＞
項１において、前記論理回路はプロセッサ（２０）であり、前記ｎ個の記憶素子は前記プロセッサのプログラムカウンタ（２４）を含む。
【００４０】
これにより、レーザー照射によって引き起こされるプログラムの異常な分岐から、ＬＳＩを保護することができる。
【００４１】
〔８〕＜ＣＰＵにおけるコンディションコードレジスタの保護＞
項１において、前記論理回路はプロセッサ（２０）であり、前記ｎ個の記憶素子は前記プロセッサが条件分岐命令を実行するときに参照する条件を与えるレジスタ（２５）を含む。
【００４２】
これにより、レーザー照射によって引き起こされるプログラムの異常な分岐から、ＬＳＩを保護することができる。
【００４３】
〔９〕＜ＣＰＵにおける汎用レジスタの保護＞
項１において、前記論理回路はプロセッサ（２０）であり、前記ｎ個の記憶素子は前記プロセッサの汎用レジスタ（２６）を含む。
【００４４】
これにより、レーザー照射によって引き起こされるプログラムの異常な演算処理から、ＬＳＩを保護することができる。
【００４５】
〔１０〕＜攻撃を検知したときにリセット＞
項１において、前記論理回路はプロセッサ（２０）であり、前記攻撃検出回路の出力が前記プロセッサのリセット端子に入力される。
【００４６】
これにより、レーザー照射によって攻撃されていることが検知されたとき、プロセッサがリセットされ、ＬＳＩに保持される機密情報を保護することができる。
【００４７】
〔１１〕＜攻撃を検知したときに機密情報を消去＞
項１において、前記論理回路はメモリ（３０）を備えたプロセッサであり、前記攻撃検出回路は前記プロセッサに割り込みを発生させることができ、前記攻撃を検出したときに前記プロセッサは前記メモリに格納されている情報を消去する。
【００４８】
これにより、レーザー照射によって攻撃されていることが検知されたとき、メモリ上に格納された機密情報が消去され、ＬＳＩに保持される機密情報を保護することができる。
【００４９】
〔１２〕＜攻撃を検知したときに電源供給を遮断＞
項１において、前記論理回路への電源供給を制御することができる電源制御端子を有する電源回路をさらに備え、前記攻撃検出回路の出力は前記電源回路の前記電源制御端子に接続され、前記攻撃を検出したときに前記論理回路への電源供給を遮断する。
【００５０】
これにより、レーザー照射によって攻撃されていることが検知されたとき、電源が遮断され、ＬＳＩに保持される機密情報を保護することができる。
【００５１】
〔１３〕＜エラー判定回路＋光照射検出回路＞
それぞれ１ビットの情報を記憶可能なｎ個（ｎは正の整数）の記憶素子（５＿１〜５＿６）と攻撃検出回路（１）とを含む論理回路（６）とを備える半導体集積回路（１０）であって、以下のように構成される。
【００５２】
前記攻撃検出回路は、エラー判定回路（２）と、光検出素子を有する光照射検出回路（４）とを備える。
【００５３】
前記エラー判定回路は、前記ｎ個の記憶素子に格納される値をｎビットの符号にｋビット（ｋは正の整数）以下の誤りが発生したことを、論理演算を用いて検出することができる。
【００５４】
前記ｎ個の記憶素子のうちの任意のｋ＋１個を、内側に凸の周を持たない最小の閉曲線で囲む複数の領域のそれぞれは、前記領域内に少なくとも１個の前記光検出素子が配置され、前記光照射検出回路は、前記光検出素子の少なくとも１個に光が照射されたことを検出したとき、前記ｎ個の記憶素子のうちのｋ＋１個以上への光照射を検出する。
【００５５】
前記エラー判定回路による前記誤りの検出と前記光照射検出回路による前記光照射の検出のいずれかを検出したときに、前記論理回路が外部から攻撃を受けたものと判定する。
【００５６】
これにより、論理回路に対するレーザー攻撃によって発生する、複数ビットの記憶素子の誤りのビット数が何ビットであっても、レーザー攻撃を検出することができる。
【００５７】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００５８】
〔実施形態１〕＜エラー判定回路＋光照射検出回路＞
レーザー攻撃によって引き起こされる故障は、レーザーが照射された回路全体のいかなる要素でも発生する可能性がある。しかし、論理回路全体に故障検出回路を備えることは、回路規模の増大が大きいためにコスト面から許容されない場合がほとんどである。そこで、保護する対象としてフリップフロップやラッチなどの記憶素子に絞ることとした。フリップフロップやラッチなどの記憶素子は、任意のタイミングでのレーザー照射によって保持する値が反転するため、攻撃する側にとって故障を発生させることが容易である。一方、一般の論理ゲートでも任意のタイミングでのレーザー照射によって論理値の反転は発生するが、そのタイミングが記憶素子へのデータの取り込みタイミングの範囲外であった場合には、回路動作に影響することなく復旧する。そのため、攻撃する側にとっても、有効な攻撃にはならない。
【００５９】
そこで、フリップフロップやラッチなどの記憶素子に着目して、これに発生する故障を検知し保護することにより、大きな回路規模の増加を伴うことなく、論理回路全体を効率よく保護することができる。
【００６０】
図１は、実施形態１に係る半導体装置の構成例を表す説明図である。ｎ個（ｎは正の整数）のフリップフロップ５＿１〜５＿６と攻撃検出回路１とを含む論理回路６とを備える半導体集積回路１０であって、以下のように構成される。攻撃検出回路１は、エラー判定回路２と、光検出素子を有する光照射検出回路４が含まれる。
【００６１】
エラー判定回路２は、ｎ個のフリップフロップに格納される値をｎビットのデータにｋビット（ｋは正の整数）以下の誤りが発生したことを、論理演算を用いて検出することができる。例えば、ｎ−ｍビットのデータにｍビットの冗長ビットを付加してｋビット誤り検出符号を形成し、誤り検出回路を構成することができる。これをエラー判定回路２とすることができる。パリティ符号、巡回冗長符号、ＢＣＨ符号など、符号理論に基づく公知の誤り検出回路を利用することができる。また、例えば、２個のフリップフロップに同じ値を格納し、読み出したときに比較して、不一致の場合にエラーと判定することにより、エラー判定回路２を構成することもできる。２個のフリップフロップの比較は、１ビット誤り検出である。２ビット誤りでは、２個のフリップフロップとも反転するので、検出することができないからである。
【００６２】
エラー判定回路２を、ｋビット以下の誤りが検出可能な誤り検出回路で構成した場合、光照射検出回路は、ｋ＋１個のフリップフロップに同時に光が照射されたことを検出可能に構成する。ｎ個のフリップフロップ５に含まれる任意のｋ＋１個のフリップフロップについてみたとき、このｋ＋１個のフリップフロップ５を囲む領域を考える。この領域は、内側に凸の周を持たない最小の閉曲線で構成される。この領域が円である場合について考えるとき、すべてのフリップフロップを囲む最も小さい円がこの領域として規定される。攻撃する側のレーザービームが円形に集光されるとき、ｋ＋１個全てのフリップフロップに同時に光を照射することができる最も小さな領域に当たる。レーザービームを集光した形状は円には限られず、楕円なども想定すべきであるが、あくまでも光の集光であるから、外側に凸の閉曲線で囲まれる領域には限定されるであろう。この領域内に少なくとも１個の光検出素子３を配置する。これにより、その領域全体に光が照射されたこと、即ちｋ＋１個のフリップフロップ全てに光りが照射されたことが検知される。
【００６３】
図１では、エラー判定回路２を、６個のフリップフロップ５＿１〜５＿６に対して２ビット誤りが検出可能とした場合に、６個中任意の３個のフリップフロップ５について必ず１個の光検出素子３を配置した例を示している。３個のフリップフロップ５＿１、５＿２、５＿３を囲む円５１の中心に光検出素子３＿１が配置されている。３個のフリップフロップ５＿２、５＿４、５＿５を囲む円５２の中心に光検出素子３＿２が配置されている。３個のフリップフロップ５＿２、５＿３、５＿５を囲む円５３の中心に光検出素子３＿３が配置されている。３個のフリップフロップ５＿３、５＿５、５＿６を囲む円５４の中心に光検出素子３＿４が配置されている。他のいかなる３個のフリップフロップの組合せも、図示した円５１〜５４よりも広い領域に含まれることとなり、その領域には必ず１個以上の光検出素子３が配置されている。レーザー光が円形に集光される場合には、エラー判定回路２が対象とする６個のフリップフロップ５＿１〜５＿６のうち、任意の３個以上のフリップフロップに光が照射されたときに、光が照射されたことを検出することができる。円５１〜５４は、光照射の最小検出対象領域である。これよりも小さい領域まで集光された光の照射は、本実施形態の光照射検出回路４では、必ず検出することができるとは保証できない。
【００６４】
エラー判定回路２による誤りの検出と光照射検出回路４による光照射の検出のいずれかを検出したときに、論理回路が外部から攻撃を受けたものと判定する。レーザー光がｋ＋１個以上のフリップフロップ５に照射されたときは、光照射検出回路４によって検出し、レーザー光がさらに集光されｋ個以下のフリップフロップ５に照射されてこれらに誤りを生じさせたときには、エラー判定回路２による誤りの検出を行う。
【００６５】
これにより、論理回路に対するレーザー攻撃によって発生する、複数ビットの記憶素子の誤りのビット数が何ビットであっても、レーザー攻撃を検出することができる。ｋビット以下の誤りをエラー判定回路２が検出し、ｋ＋１ビット以上の誤りを光照射検出回路４が検出し、互いに補完するので、あらゆるビット数の誤りを検出することができる。
【００６６】
フリップフロップは、１ビットの情報を記憶することができる記憶素子であればよく、ラッチやメモリセルであっても、同様に適用することができる。
【００６７】
図１では、レーザー光が円形に集光される場合を想定した例を示したが、楕円その他の形に集光されたレーザー光についても、同様の考え方を適用して光検出素子を配置することができ、光照射検出回路４を構成することができる。
【００６８】
光照射検出回路４は、本実施形態で特徴的なのは光検出素子の配置で、特にフリップフロップ（記憶素子）との相対的な位置関係であって、回路は公知の光照射検出回路を採用することができる。
【００６９】
図１３は、光検出素子としてホトダイオードを用いた光照射検出回路の構成を表す回路図であり、図１４は、その動作を表すタイミングチャートである。複数のホトダイオードが並列にnode1に接続されている。node1はバッファ５５によりハイレベルに駆動されている。他のバッファに駆動された複数のホトダイオードが、縦続接続されていても良い。バッファ５８によって波形整形され（node2）、ＳＲラッチ６０に入力され、光照射検出出力であるnode3に出力される。node1はバッファ５５によりハイレベルに駆動されホトダイオード３が逆バイアスされているので、通常はハイレベルに保たれている。例えば、バッファ55、56の間のホトダイオード３に光が照射されると、照射された光によってホトダイオード３に発生した電子正孔対により逆方向電流が流れ、node1の電位が低下する。これがバッファ５６の論理閾値Ｖｔ未満となると、後段にパルス波形となって伝搬し、node2にパルスとなって現れる。ＳＲラッチ６０はこのパルスによりセットされ、node3をハイレベルに反転させ保持する。バッファ５５の駆動能力を適切に設定することにより、並列接続された複数のホトダイオード３の１個に光が照射されたときに、node1の電位がバッファ５６の論理閾値Ｖｔ未満となるように設計することができる。これにより、複数のホトダイオードのうち１個に光が照射されたことを検出する光照射検出回路を構成することができる。光検出素子としては、ホトダイオードに代えてホトトランジスタなどを用いてもよい。
【００７０】
図１５は、光検出素子として光感応型バッファを用いた光照射検出回路の構成を表す回路図であり、図１６は、その動作を表すタイミングチャートである。通常の論理ゲートは、光の照射により、誤動作を引き起こされる可能性がある。そもそも、ＬＳＩに対するレーザー照射による故障利用攻撃は、この原理を利用したものである。レイアウト上セルの上層に金属配線層を配置しないようにしたバッファは、通常のバッファよりも光照射に対して誤動作を発生しやすくなる。このようなバッファを光感応型バッファとして用いることができる。図１５に示す光照射検出回路は、入力がハイ固定された光感応型バッファ３の出力が、インバータ５９を介してＳＲラッチ６０に入力されている。（ｂ）に示すように、光感応型バッファ３は複数縦続接続されていてもよい。少なくとも１個の光感応型バッファ３に光が照射されると、その出力ノードであるnode1の電位が低下する。反転に至らなくても、node1の電位低下が次段のインバータ５９の論理閾値Ｖｔ未満になれば、インバータ５９の出力であるnode2にパルスが現れる。このパルスをＳＲラッチ６０で取り込んで光照射検出出力であるnode3に出力する。これにより、複数の光感応型バッファのうち１個に光が照射されたことを検出する光照射検出回路２を構成することができる。光検出素子としては、光感応型バッファに代えて光感応型インバータなど他の論理ゲート回路を用いてもよい。
【００７１】
〔実施形態２〕＜１ビット誤り検出符号の生成とチェック＋光照射検出回路＞
図２は、実施形態２に係る半導体装置の具体的な構成例を表す説明図である。１ビットの誤り検出が可能なエラー判定回路２と２ビット以上の記憶素子にレーザーが照射されたことを検出可能にするために、記憶素子５＿７〜５＿１０間に光検出素子３＿５〜３＿７を配置した構成例である。
【００７２】
フリップフロップ５＿７〜５＿１０に格納されるライトデータに基づいて誤り検出符号を生成する誤り検出符号生成回路７を備える。誤り検出符号生成回路７で生成された誤り検出符号はフリップフロップ５＿１１に格納される。チェック回路８は、フリップフロップ５＿７〜５＿１０から読み出されたデータと、フリップフロップ５＿１１に格納されている誤り検出符号に基づいて、誤りの有無を判定し、誤りがあればエラー検出信号を出力する。光検出素子３＿５〜３＿７の出力は、光照射検出回路４に接続され、１個以上の光検出素子３＿５〜３＿７に光が照射されたことを検出すると、光照射検出信号が出力される。
【００７３】
誤り検出符号は、例えば、パリティである。誤り検出符号生成回路７はライトデータの１の数が偶数のとき偶数パリティとしてデータ０を、奇数のとき奇数パリティとしてデータ１を生成し、フリップフロップ５＿１１に格納する。チェック回路８は、パリティチェック回路である。例えば、フリップフロップ５＿７〜５＿１０から読み出されたデータの１の数が偶数か奇数かを求め、フリップフロップ５＿１１に格納されているデータと比較する。フリップフロップ５＿７〜５＿１０から読み出されたデータに１ビットの反転があれば、パリティが変化するので、パリティチェック８でこれを検出することができる。一方、２ビット以上のデータの反転が発生した場合は、チェック回路８では検出することができない。
【００７４】
光検出素子３＿５〜３＿７とフリップフロップ５＿７〜５＿１０が交互に配置されているので、２個以上のフリップフロップへの光の照射は、必ず光検出素子３＿５〜３＿７のうちの少なくとも１個によって感知することができる。
【００７５】
これにより、レーザー光を集光した攻撃により、１ビットのフリップフロップのみに故障が発生した場合には、エラー判定回路により検出することができ、レーザー光の径を大きくした攻撃により、２個以上のフリップフロップに故障が発生した場合には、光照射検出回路４により、光が照射されたことを検出することができる。
【００７６】
図３は、実施形態２に係る半導体装置において、さらに誤り検出符号を保持する記憶素子も光照射の検出対象として保護する場合の構成例を表す説明図である。
【００７７】
保護対象のデータを保持する記憶素子であるフリップフロップ５＿１２〜５＿１５に加え、誤り検出符号を保持する記憶素子であるフリップフロップ５＿１６を含めた５個のフリップフロップの間に光検出素子３＿８〜３＿１１を配置した構成例である。
【００７８】
誤り検出符号生成回路７とチェック回路８の構成を含め、エラー判定のための回路構成は、図２に示したものと同じである。フリップフロップ５＿１２〜５＿１５と誤り検出符号を保持するフリップフロップ５＿１６との間にも光検出素子３＿１１を配置し、これも光照射検出回路４に接続している。誤り検出符号を保持するフリップフロップ５＿１６を含めた２個のフリップフロップへの光照射を検出することができる。
【００７９】
これにより、保護対象のｎ−１ビットに対してパリティ符号を生成し、これを合計したｎビットの情報を保持する記憶素子を対象としてパリティチェック回路を備え、保護対象回路へのレーザー攻撃に対する保護を行うことができる。パリティ符号生成回路とパリティチェック回路は、簡単な論理ゲートで構成することができ、保護のための回路規模のオーバーヘッドを抑えることができる。
【００８０】
〔実施形態３〕＜ｍビット誤り検出符号の生成とチェック＋光照射検出回路＞
実施形態２においては、１ビット誤り検出符号を利用する実施形態について説明したが、誤り検出能力は、任意に強化することができる。エラー判定回路２による誤り検出能力を強化した場合には、光照射検出回路４による光照射の検出能力を軽減することができる。エラー判定回路２によってｍビット以下の誤りが検出可能な場合には、光照射検出回路４はｍ＋１個以上の記憶素子への光照射を検出することができる能力を備えれば足りる。具体的には、記憶素子ｍ個に対して１個の割合で、光検出素子を配置すればよい。
【００８１】
図４は、実施形態３に係る半導体装置が３ビット誤り検出符号を利用する場合の構成例を表す説明図である。
【００８２】
フリップフロップ５＿１７〜５＿２２に格納されるライトデータに基づいて誤り検出符号を生成する誤り検出符号生成回路７を備える。誤り検出符号生成回路７で生成された誤り検出符号はフリップフロップ５＿２３に格納される。誤り検出符号は、１ビットとは限らず通常多ビットである。チェック回路８は、フリップフロップ５＿１７〜５＿２２から読み出されたデータと、フリップフロップ５＿２３に格納されている誤り検出符号に基づいて、誤りの有無を判定し、誤りがあればエラー検出信号を出力する。光検出素子３＿１２〜３＿１３はフリップフロップ５＿１７〜５＿２３の３個に対して１個の割合で配置されている。具体的な配置の方法、即ち記憶素子と光検出素子の位置関係は、実施形態１と図１に詳述してあり、実施形態５と図７に後述する。光検出素子３＿１２〜３＿１３の出力は、光照射検出回路４に接続され、１個以上の光検出素子３＿１２〜３＿１３に光が照射されたことを検出すると、光照射検出信号が出力される。
【００８３】
誤り検出符号は、例えば、巡回符号、ＢＣＨ符号など、符号理論に基づく公知の誤り検出回路を利用することができる。光検出素子３＿１２〜３＿１３はフリップフロップ５＿１７〜５＿２３のうちの３個に対して１個の割合で配置されているので、フリップフロップ５＿１７〜５＿２３のうちの４個以上のフリップフロップへの光の照射は、必ず光検出素子３＿１２〜３＿１３によって感知することができる。レーザー光を集光した攻撃により、ｍビット以下のフリップフロップのみに故障が発生した場合には、エラー判定回路により検出することができ、より径の大きいレーザー光を利用した攻撃により、ｍ＋１個以上のフリップフロップに故障が発生した場合には、光照射検出回路４により、光が照射されたことを検出することができる。
【００８４】
これにより、保護対象のｎ−ｍビットに対してｍビットの誤り検出符号を生成し、これを合計したｎビットの情報を保持する記憶素子を対象として、レーザー攻撃に対する保護を行うことができる。
【００８５】
〔実施形態４〕＜回路の二重化＋光照射検出回路＞
図５は、実施形態４に係る半導体装置の二重化による保護を利用する場合の構成例を表す説明図である。
【００８６】
ライトデータは現用系であるフリップフロップ５＿２４と予備系であるフリップフロップ５＿２５に書き込まれ、現用系であるフリップフロップ５＿２４に格納されているデータが保護対象ＦＦ出力として読み出される。エラー検出回路２は排他的論理和ゲートであり、フリップフロップ５＿２４とフリップフロップ５＿２５から読み出されたデータが不一致の場合にエラー検出信号を出力する。
【００８７】
現用系であるフリップフロップ５＿２４と予備系であるフリップフロップ５＿２５の間に、光検出素子３＿１４が配置され、その出力に基づいて光照射検出回路４により、光照射検出信号が検出される。
【００８８】
現用系と予備系のフリップフロップ５＿２４と５＿２５の一方に光が照射されてデータが反転した場合には、エラー検出信号として攻撃が検出され、両方に光が照射された場合には、光検出信号として攻撃が検出される。
【００８９】
図５は理解を容易にするため、２個のフリップフロップのみで構成された現用系と予備系の二重化回路を示したが、多数ビットおよび論理回路も含めた多重化に拡張することができる。
【００９０】
多数ビットの現用系フリップフロップには、同じビット数の予備系フリップフロップを備え、エラー判定回路２はその２系統を比較して不一致の場合にエラー検出信号を出力する。光検出素子は、現用系と予備系のフリップフロップの対応するビット間にそれぞれ配置し、それらすべてを光照射検出回路４に入力して、いずれか少なくとも１個の光検出素子に光が照射されたことを検出したときに、光照射検出信号を出力する。現用系と予備系において同時に同じデータ反転を引き起こすような光の照射は、光照射検出回路４によって検出することができ、一方のみまたは対応しないフリップフロップで発生するデータ反転は、エラー判定回路２によって検出することができる。記憶素子であるフリップフロップのみならず、回路全体を二重化した場合についても、同様に適用することができる。
【００９１】
これにより、二重化による保護を採用した回路において、現用系と対応する予備系に同時に誤り発生させるようなレーザー攻撃からも保護することができる。
【００９２】
〔実施形態５〕＜光検出素子の配置＞
図６は、２個以上の記憶素子（フリップフロップ）への光照射を検出するための、フリップフロップと光検出素子の配置を表す説明図である。セル列に標準セルを配置・配線する設計方法を想定し、図６はセル列に標準セルが配置されたレイアウトを示したものである。
【００９３】
（ａ）では、２個のフリップフロップ５の間に１個の光検出素子３が互いに隣接して配置される。２個のフリップフロップ５に光が照射されると、必ず間の光検出素子３にも光が照射されることとになるので、２個以上のフリップフロップへの光照射を検出することができる。（ｂ）に示すように、フリップフロップ５と光検出素子３は必ずしも隣接して配置する必要はなく、間に別の論理ゲートなどが配置されても良い。
【００９４】
一方、セル列に標準セルを配置・配線する設計ツールでは、簡単にセルの配置を規定する方法がない場合が多い。その場合には、２個のフリップフロップ５の間に１個の光検出素子３が互いに隣接して配置された新たなセルを準備することにより、セルの配置を規定する方法がない設計ツールを使う場合であっても、実施形態２〜４のフリップフロップと光検出素子の配置関係を容易に実現することができる。
【００９５】
これにより、前記ｎ個の記憶素子のうち２個以上の記憶素子に対して同時に行われるレーザー照射を検出することができる。
【００９６】
図７は、４個以上の記憶素子（フリップフロップ）への光照射を検出するための、フリップフロップと光検出素子の配置を表す説明図である。３個ずつ２組のフリップフロップ５の間に１個の光検出素子３が隣接して配置されている。これにより、この６個のフリップフロップのうち４個以上に対しての光の照射は、必ず光検出素子３によって検出することができる。図７は全てのフリップフロップ５と光検出素子３が互いに隣接して配置される場合を示したが、図６の（ｂ）に示したのと同様に、間に論理ゲートなどを配置してもよい。一方、互いに隣接配置したフリップフロップと光検出素子を新たなセルとして使用することにより、セルの配置を規定する方法がない設計ツールを使う場合であっても、実施形態４のフリップフロップと光検出素子の配置関係を容易に実現することができる。
【００９７】
これにより、前記ｎ個の記憶素子のうち４個以上の記憶素子に対して同時に行われるレーザー照射を検出することができる。
【００９８】
図８は、２個以上の記憶素子（フリップフロップ）への光照射を検出するために、フリップフロップと光検出素子を複数のセル列に跨って配置する変形例を表す説明図である。図６では１つのセル列に２個のフリップフロップ５と光検出素子３を配置する例を示したが、複数のセル列に跨っても、２個のフリップフロップ５の間に光検出素子３が配置されればよい。図７のように複数のフリップフロップからなる１組のフリップフロップの間に１個の光検出素子を配置するときも、同様の考え方を適用することができる。
【００９９】
図９は、２個以上の記憶素子（フリップフロップ）への光照射を検出するために、フリップフロップと光検出素子を複数のセル列に渡って斜めに跨って配置する変形例を表す説明図である。図８のようにセル列に直交する方向に配列する場合に限られない。斜めであっても、２個のフリップフロップを結ぶ直線状に光検出素子３を配置すれば同様の作用・効果を奏する。また、フリップフロップが複数であっても、他の論理ゲートなどを途中に挟んでいても、２個のフリップフロップを結ぶ直線状に光検出素子３を配置すれば同様の作用・効果を奏することは同様である。
【０１００】
図１０は、２個以上の記憶素子（フリップフロップ）への光照射を検出するために、フリップフロップと光検出素子を交互に隣接して配置する場合の説明図である。
【０１０１】
これにより、前記ｎ個の記憶素子のうち２個以上の記憶素子に対して同時に行われるレーザー照射を検出ることができる条件を満足するマクロセルを予め準備して使用することにより、自動レイアウトにおけるセルの配置に対して特別な考慮をすることなく、ＬＳＩのレイアウト設計を行うことができる。
【０１０２】
〔実施形態６〕＜ＣＰＵの保護＞
ソフトウェアによる正常動作チェックは故障対策として有効であるが、CPUなどプロセッサ自体の誤動作はソフトウェアによるチェックが困難である。
【０１０３】
CPUなどプロセッサを誤動作させるためには、汎用レジスタ、プログラムカウンタ（PC; Program Counter）、及び、分岐の条件を格納するコンディションコードレジスタ（CCR; Condition Code Register）の値を変更させる故障利用攻撃が有効である。逆にこれらをハードウェアで保護することにより、プロセッサとそれによって実行されるソフトウェアの動作は、故障利用攻撃に対する耐性を高めることができる。
【０１０４】
図１１は、プロセッサに対する保護を行った実施形態を表す説明図である。
【０１０５】
CPUなどプロセッサは、フェッチ部２１、デコード部２２及び命令実行部２３を備える。フェッチ部２１は、プログラムカウンタ２４により指定されるアドレスに格納される命令を読込み、デコード部２２でデコード、解釈し、命令実行部２３で実行する。命令実行部２３による演算処理は、汎用レジスタ２６との入出力による。演算結果の状態フラグは、コンディションコードレジスタ２５に格納される。命令実行部２３は、コンディションコードレジスタ２５に格納される状態フラグに基づいて、分岐や演算処理を行う。
【０１０６】
本実施形態では、プログラムカウンタ２４とコンディションコードレジスタ２５と汎用レジスタ２６のそれぞれに、パリティ生成回路７＿１、７＿２、７＿３を備え、生成したパリティを格納する記憶素子５＿２６、５＿２７、５＿２８に格納し、パリティチェック回路８＿１、８＿２、８＿３を備えて誤りを検出する。光検出素子３は、プログラムカウンタ２４とコンディションコードレジスタ２５と汎用レジスタ２６を構成する記憶素子の１ビット毎に間に挿入する形で配置する。光照射検出回路４＿１、４＿２、及び４＿３により、光の照射を検出する。汎用レジスタ２６のためのパリティ生成回路７＿３、生成したパリティを格納する記憶素子５＿２８及びパリティチェック回路８＿３は、汎用レジスタの数と同数を備える。
【０１０７】
プログラムカウンタ２４とコンディションコードレジスタ２５と汎用レジスタ２６のいずれかに生じた１ビットの誤りは、パリティチェック回路８＿１〜８＿３により、検出することができる。２ビット以上の誤りを生じさせる２個以上の記憶素子への光の照射は、光照射検出回路４＿１〜４＿３により検出することができる。
【０１０８】
プログラムカウンタ２４とコンディションコードレジスタ２５の一方または両方を保護することにより、レーザー照射によって引き起こされるプログラムの異常な分岐から、ＬＳＩを保護することができる。また、汎用レジスタ２６を保護することにより、レーザー照射によって引き起こされるプログラムの異常な演算処理から、ＬＳＩを保護することができる。
【０１０９】
図１１に示した例では、パリティチェック回路８＿１〜８＿３により、１ビット誤りを検出し、光照射検出回路４＿１〜４＿３により２個以上の記憶素子への光照射を検出することによって、ＣＰＵ２０を保護する例を示した。これに代えて、２ビット以上の任意のｍビットの誤り検出回路とｍ＋１個の記憶素子への光照射を検出することができる光照射検出回路を組合せて構成してもよい。また、プログラムカウンタ２４とコンディションコードレジスタ２５と汎用レジスタ２６のいずれかのみを保護対象としても、保護の効果を発揮することはできる。一方、プログラムカウンタ２４とコンディションコードレジスタ２５と汎用レジスタ２６の全て、さらに他の記憶素子まで保護対象を拡げれば、攻撃に対する耐性は向上する。
【０１１０】
〔実施形態７〕＜攻撃を検知したときの処理＞
エラー判定回路２によるエラー検出と光照射検出回路４による光照射検出は、いずれかが一方でも検出されたときは、故障利用攻撃を受けていると判断することができる。故障利用攻撃を受けていると判断したときは、保持している機密情報を守るために、種々の処理を行うことができる。
【０１１１】
図１２は、プロセッサに対する保護を行った実施形態において、攻撃を検知したときにプロセッサをリセットする実施形態を表す説明図である。リセット端子ＲＥＳＥＴから入力される通常のリセット信号は、リセットコントローラ２８を経て、ＣＰＵ２０、周辺モジュールである例えばタイマ２９、あるいはメモリ３０に供給されている。リセットコントローラ２８に、エラー判定回路２のエラー判定出力ｄｅｔ１と光照射検出回路４の光照射検出出力であるｄｅｔ０とを入力する。通常のリセットに加えて、故障利用攻撃を受けたときにも、ＣＰＵ２０を始めＬＳＩ全体がリセットされる。
【０１１２】
これにより、レーザー照射によって攻撃されていることが検知されたとき、プロセッサがリセットされ、ＬＳＩに保持される機密情報を保護することができる。
【０１１３】
故障利用攻撃を受けていることを検出したとき、リセットに代えてＣＰＵ２０に対して割り込みを発生し、ソフトウェア処理により、メモリ上に保持される機密情報を消去することができる。
【０１１４】
これにより、レーザー照射によって攻撃されていることが検知されたとき、メモリ上に格納された機密情報が消去され、ＬＳＩに保持される機密情報を保護することができる。
【０１１５】
ＬＳＩにＣＰＵなどに電源を供給する電源回路を設け、故障利用攻撃を受けていることを検出したとき、ＣＰＵなどに対する電源供給を遮断することができる。
【０１１６】
これにより、レーザー照射によって攻撃されていることが検知されたとき、電源が遮断され、ＬＳＩに保持される機密情報を保護することができる。
【０１１７】
これらは、それぞれ独立に用いることもできるが、組み合わせて用いることもできる。比較的迅速に保護する必要があるときには、リセットや電源遮断が有効であるが、時間的なゆとりがある場合には、ＣＰＵによるメモリ上の機密情報の消去が最も確実である。ＣＰＵ自体が攻撃された場合には、ＣＰＵによるメモリ上の機密情報の消去など、ソフトウェアによる処理は困難であるから、リセットや電源遮断が有効である。
【０１１８】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【符号の説明】
【０１１９】
１  攻撃検出回路
２  エラー判定回路
３  光検出素子
４  光照射検出回路
５  フリップフロップ（記憶素子）
６  論理回路
７  誤り検出符号生成回路（パリティ生成回路）
８  チェック回路（パリティチェック回路）
１０  半導体集積回路（ＬＳＩ）
２０  プロセッサ（ＣＰＵ）
２１  フェッチ部
２２  デコード部
２３  命令実行部
２４  プログラムカウンタ（ＰＣ）
２５  コンディションコードレジスタ（ＣＣＲ）
２６  汎用レジスタ
２７  ポート回路
２８  リセットコントローラ
２９  周辺モジュール
３０  メモリ
５１〜５４  光照射の最小検出対象領域
【図１】
2014063272.tif 000003
【図２】
2014063272.tif 000004
【図３】
2014063272.tif 000005
【図４】
2014063272.tif 000006
【図５】
2014063272.tif 000007
【図６】
2014063272.tif 000008
【図７】
2014063272.tif 000009
【図８】
2014063272.tif 000010
【図９】
2014063272.tif 000011
【図１０】
2014063272.tif 000012
【図１１】
2014063272.tif 000013
【図１２】
2014063272.tif 000014
【図１３】
2014063272.tif 000015
【図１４】
2014063272.tif 000016
【図１５】
2014063272.tif 000017
【図１６】
2014063272.tif 000018