(57)【特許請求の範囲】
【請求項１】
クロック信号に同期したパルス列であるイネーブル信号を生成し、保護対象回路に対して前記イネーブル信号を供給するイネーブル生成回路と、
前記クロック信号と前記イネーブル生成回路で生成された前記イネーブル信号との比較に基づいて、前記クロック信号に対してスパイクが導入されたことによるクロックタイミングの異常を検出する第１の異常検出回路と
を備える半導体装置
【請求項２】
請求項１に記載の半導体装置において、
前記イネーブル生成回路は、レジスタと遅延回路を含んで構成され、入力した前記クロック信号に同期し、所望のパルス幅を有するパルス列として前記イネーブル信号を生成する
半導体装置。
【請求項３】
請求項１または２に記載の半導体装置において、
前記第１の異常検出回路は、前記クロックタイミングの異常を検出した際には、リセット信号を受信するまで異常状態を維持する警報信号を出力する
半導体装置。
【請求項４】
請求項１から３のいずれか１項に記載の半導体装置において、
前記イネーブル発生回路に前記クロック信号を供給するための第１のクロックバッファと、
前記クロック信号を供給するために、前記第１のクロックバッファと並列に設けられた第２のクロックバッファと、
前記第２のクロックバッファから出力されたクロック信号と、前記イネーブル生成回路で生成された前記イネーブル信号との比較に基づいて、前記第２のクロックバッファを経由したクロック信号に対してスパイクが導入されたことによるクロックタイミングの異常を検出する第２の異常検出回路と
をさらに備える半導体装置。
【請求項５】
請求項１から４のいずれか１項に記載の半導体装置において、
前記第１の異常検出回路は、前記クロックタイミングの異常を検出する回路が多重化して構成されている
半導体装置。
【請求項６】
請求項３に記載の半導体装置において、
前記イネーブル生成回路で生成された前記イネーブル信号と、前記第１の異常検出回路で生成された前記警報信号との論理積により前記保護対象回路に供給するイネーブル信号を出力し、前記異常状態が維持されている間は、保護対象回路に対して供給する前記イネーブル信号を停止させるＡＮＤ回路
をさらに備える半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、認証処理や暗号化処理などのセキュリティ装置に関連するものであり、当該装置を対象とした特定の攻撃へ対策を行うための半導体装置に関する。
【背景技術】
【０００２】
近年、携帯電話に代表される組み込み機器のネットワーク化に伴い、組み込み機器で扱うデータの秘匿や完全性の保持および組み込み機器そのものを認証するために、組み込み機器が情報セキュリティに関わる処理を行う必要性が高まっている。これら情報セキュリティに関わる処理は、暗号化アルゴリズムや認証アルゴリズムによって実現される。【０００３】
暗号化アルゴリズムや認証アルゴリズムを実行する上で大前提となるのは、各機器が「安全に」計算を行うことである。ここで、「安全」とは、その機器を正当に利用可能な者以外が、鍵情報の読み取りや改竄を行うことが困難であることを指す。そのためには、機器そのものへ介入する攻撃者に対しても、計算内容が秘密になるような実装方式が求められる。【０００４】
そのような攻撃の中には、当該組込み機器に意図的に計算誤りを誘発することで、暗号解読を試みるものがある（以降、このような攻撃を「フォルト攻撃」と称す）。このようなフォルト攻撃は、物理的な刺激により対象回路に計算誤りを誘発させ、その挙動を観察することで暗号解読を行う手法である。誤り挿入法は、多様であるが、代表的なものとして、回路へ入力されるクロック信号へスパイクを挿入するものがある。そのような、スパイクを含むクロック信号は、結果として対象回路の誤作動を引き起こすことが知られている。【０００５】
フォルト攻撃については、これまでも対策技術が考案されてきた。対策技術は、大きく分けて２つに分類される。すなわち、（ｉ）計算誤りの検知と（ｉｉ）異常状態の検知である。（ｉ）の計算誤りの検知は、検算やエラー検知符号により計算誤りを発見し、処理の中断や訂正を行う手法である。そのような手法の一例としては、例えば、特許文献１が挙げられる。【０００６】
もう一方の（ｉｉ）の異常状態の検知は、センサ等を搭載することで、計算誤りを引き起こす可能性のある異常な動作環境を検出するものである。クロック信号の異常を検出するものとしては、例えば、非特許文献１が挙げられ、レーザ照射などを検出するものとしては、例えば、特許文献２が挙げられる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００９−２７８５７６号公報
【特許文献２】特開２００４−２０６６８０号公報
【特許文献３】特開昭６３−３１０２１１号公報
【非特許文献】
【０００８】
【非特許文献１】N. Selmane、 S. Bhasin、 S. Guilley、 T. Graba、 and J.-L. Danger、 "WDDL is Protected against Setup Time Violation Attacks"、 FDTC2009.
【非特許文献２】T. Sugawara、 N. Homma、 T. Aoki、 and A. Satoh、 "High-performance Architecture for Concurrent Error Detection for AES Processors"、 IEICE Trans. Fundamentals of Electronics、 Communications and Computer Sciences、 Vol. E94-A、 No. 10、 pp.1971-1980、 October、 2011.
【非特許文献３】Y. Li、 K. Sakiyama、 S. Gomisawa、 T. Fukunaga、 J. Takahashi、 K. Ohta: Fault Sensitivity Analysis. CHES 2010: 320-334
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、従来技術には、以下のような課題がある。
上記のように、対策技術は開発されているものの、既存の対策手法では防ぎきれないものが存在することが課題として残っている。（ｉ）の計算誤りの検知については、特定の誤りを検出できない可能性がある。一例として、非特許文献２には、連続して２回の誤りを挿入する場合（タイミングダブルフォルト）、特許文献１の誤り検出能力が限定されることが記述されている。【００１０】
また、例えば、非特許文献３に記載されたような「故障感度解析」と呼ばれる攻撃法を用いると、たとえ検算をした場合でも攻撃可能となることが知られている。【００１１】
一方、（ｉｉ）の異常状態の検知の方法についても、レーザ照射などによる誤り照射では、センサを迂回することが考えられる。また、特許文献２に記載されているような、光センサなどによりレーザ照射を検出する手法も存在するが、やはり局所的な照射を取り逃がす可能性がある。【００１２】
また、特許文献３に記載されているような、局所的なクロック異常を検出するための装置も存在するが、あくまで通常回路の異常系を扱うための発明であるため、悪意ある攻撃者のフォルト挿入を防止することはできない。【００１３】
従来技術に関する課題を整理すると、以下のような４つの問題点を挙げることができる。
（問題点１）検算・エラー検出符号では対抗できない攻撃法が存在する（多重故障、故障感度解析など）。
（問題点２）センサの迂回。
（問題点３）両エッジを使用することができない。
（問題点４）スタンダードセルを用いて構成できない。【００１４】
まず、問題点１について説明する。検算・エラー検出符号による対策には、２つの課題がある。１つ目の課題は、多重故障を検出できない可能性がある点である。複数の誤りが同時に挿入された場合、保護対象とする計算だけでなく、検算・エラー検出符号の計算も同時に誤る可能性がある。その結果、本来は誤りとして検出するべき状況を取り逃がし、誤り検出に失敗する可能性がある。【００１５】
２つ目の課題は、故障感度解析を防ぐことができないことである。従来のフォルト攻撃は、誤りを含む出力の解析により攻撃を行う。そのため、誤りを検出し、誤った計算結果の出力を抑制すれば対策できた。【００１６】
しかしながら、故障感度解析は、計算が誤った・誤らないという情報だけを用いて攻撃を行う。そのような「誤った・誤らない」という情報は、検算・エラー検出符号が誤り検出に成功した場合でも外部に出力される。そのため、検算・エラー検出符号による対策が存在しても攻撃が成立してしまう。【００１７】
次に、問題点２について説明する。センサによる対策には、局所的な誤りを検出できない可能性がある。すなわち、センサに影響を与えず、対象の回路だけ誤らせるような誤り挿入方法を適用される可能性がある。【００１８】
この一例として、クロック異常による局所的な誤りについて説明する。図８は、従来技術において、クロック異常検出回路が迂回される機序を示した説明図である。一般の回路では、チップ外部から供給されるクロック信号をクロック分配回路１００により増幅し、各回路へ供給している。クロック異常検出回路１０１は、クロック分配回路１００の端子の１つに取り付けられる。そのとき、保護対象回路１０２が、クロック分配回路１００で、クロック異常検出回路と異なる端子に接続されることを考える。【００１９】
攻撃者は、レーザ照射などの手段により、クロック分配回路１００の一部に物理的刺激１０３を印加する。その結果、クロック異常検出回路１０１に刺激を与えることなく、保護対象回路１０２のクロックに異常を起こすことができる。その際、クロック異常検出回路１０１へ供給されるクロックは、正常であるため、異常検知はできないこととなる。【００２０】
次に、問題点３について説明する。クロックに同期して動作する回路では、クロック信号の立上り、立下り、もしくはその両方を検出して動作する。非特許文献１に記載されているような、従来のクロック信号の異常を検出する方式では、その構成上、クロックの立上りか立下りのいずれか一方でしか動作できない。そのため、クロック信号の立上りと立下りの両方を使用する回路に適用できないという問題があった。【００２１】
次に、問題点４について説明する。通常のディジタル回路設計では、半導体製造業者より提供されたスタンダードセル（汎用回路部品）を用いて回路設計を行う。しかしながら、特許文献２、特許文献３にある検出回路は、スタンダードセルでの構成が困難である。スタンダードセルで構成できない場合、専用設計を行う必要が生じるため、結果として設計コストと製造コストの上昇が問題となる。【００２２】
本発明は、前記のような課題を解決するためになされたものであり、局所的なクロック異常を検出可能とする半導体装置を得ることを目的とする。
【課題を解決するための手段】
【００２３】
本発明に係る半導体装置は、クロック信号に同期したパルス列であるイネーブル信号を生成し、保護対象回路に対してイネーブル信号を供給するイネーブル生成回路と、クロック信号とイネーブル生成回路で生成されたイネーブル信号との比較に基づいて、クロック信号に対してスパイクが導入されたことによるクロックタイミングの異常を検出する第１の異常検出回路とを備えるものである。
【発明の効果】
【００２４】
本発明によれば、クロック信号に同期したイネーブル信号と、クロック信号自身との論理演算に基づいて、クロック信号に導入されたスパイクを検出可能な異常検出回路を有することにより、局所的なクロック異常を検出可能とする半導体装置を得ることができる。
【図面の簡単な説明】
【００２５】
【図１】本発明の実施の形態１における半導体装置の一構成を説明する図である。
【図２】本発明の実施の形態１におけるイネーブル生成回路の内部構成と動作を説明するための図である。
【図３】本発明の実施の形態１におけるクロックバッファに誤りが生じた際の説明図である。
【図４】本発明の実施の形態１における異常検出回路の内部構成と動作を示す図である。
【図５】本発明の実施の形態２における半導体装置の一構成を説明する図である。
【図６】本発明の実施の形態３における半導体装置の一構成を説明する図である。
【図７】本発明の実施の形態４における半導体装置の一構成を説明する図である。
【図８】従来技術において、クロック異常検出回路が迂回される機序を示した説明図である。
【発明を実施するための形態】
【００２６】
以下、本発明の半導体装置の好適な実施の形態につき図面を用いて説明する。
【００２７】
実施の形態１．
図１は、本発明の実施の形態１における半導体装置の一構成を説明する図である。本実施の形態１における半導体装置は、イネーブル生成回路１０、異常検出回路２０（第１の異常検出回路に相当）を含んで構成されており、それらを用いて、保護対象回路３０の誤動作を防止もしくは検出する。
【００２８】
保護対象回路３０は、立上りエッジで動作するレジスタ３１と、立下りエッジで動作するレジスタ３２のいずれか、もしくは両方を含むものとする。立上りエッジで動作するレジスタ３１には、クロック信号と立上りイネーブル信号をＡＮＤゲート３に通したものを接続する。立下りエッジで動作するレジスタ３２には、クロック信号と立下りイネーブル信号をＡＮＤゲート４に通したものを接続する。
【００２９】
立上りイネーブル信号と立下りイネーブル信号は、クロック信号に同期してイネーブル生成回路１０が生成するパルス列であり、詳細は、後述する。イネーブル生成回路１０と異常検出回路２０には、クロックバッファ１、２を介して、外部からクロック信号が供給される。
【００３０】
次に、図１の回路構成において、クロック信号に誤りが挿入された場合の挙動について説明する。誤りは、クロックバッファ１、２、もしくはその両方で生じる可能性がある。クロックバッファ１にスパイクが挿入された場合には、ＡＮＤゲート３、４により阻止できる可能性がある。
【００３１】
一方、クロックバッファ２にスパイクが挿入された場合には、異常検出回路２０により検出可能である。異常の阻止・検出方法の詳細は、後述する。なお、クロックバッファ１、２の両方に、同時に誤りが生じた場合も、それぞれ同様の異常検出が可能である。
【００３２】
図２は、本発明の実施の形態１におけるイネーブル生成回路１０の内部構成と動作を説明するための図である。イネーブル生成回路１０は、レジスタ１１、１２、遅延回路１３、１４、およびＸＯＲゲート１５、１６から構成されている。そして、このような構成を備えたイネーブル生成回路１０は、外部からクロック信号を受け取り、立上りイネーブル信号と立下りイネーブル信号を出力する。
【００３３】
図２の下段のタイミングチャートに示すように、立上りイネーブル信号と立下りイネーブル信号は、クロックと同期したパルス列である。以降では、両方のイネーブル信号がともにローの区間を無効区間、いずれか一方のイネーブル信号がハイの区間を有効区間と呼ぶことにする。無効区間・有効区間の割合は、遅延回路１３、１４による遅延時間によって制御される。遅延回路１３、１４は、図２に示したように、バッファを縦列接続して構成することができる。
【００３４】
その際、接続するバッファの段数により、遅延時間を設計できる。遅延時間は、次の要件に従って設計する。まず、無効区間は、保護対象回路３０の最大遅延時間より大きくする。また、有効区間は、できる限り短く設計する。無効区間が保護対象回路３０の最大遅延時間よりも大きいことにより、保護対象回路３０の演算完了後に有効区間が到来することが保証される。
【００３５】
図２の回路は、少ない回路素子で構成可能である点を特長とするが、適用先の回路によっては、別用途のための可変遅延回路を有する場合がある。その場合は、可変遅延回路によりイネーブル生成回路１０を代替することもできる。
【００３６】
次に、図１のクロックバッファ１に誤りが生じた際の動作について、さらに詳細に説明する。図３は、本発明の実施の形態１におけるクロックバッファ１に誤りが生じた際の説明図である。ありうる挙動は、２種類に分類される。すなわち、イネーブルがローの区間（無効期間）にスパイクが挿入される場合と、イネーブルがハイの区間（有効期間）にスパイクが挿入される場合である。
【００３７】
まず、無効期間に図示したスパイクが導入された場合を考える。その時点では、立上りイネーブル信号は到達していないため、ＡＮＤゲート３の出力（信号Ａ）もしくはＡＮＤゲート４の出力（信号Ｂ）は、ローのままである。そのため、導入されたスパイクは、ＡＮＤゲート３、４の出力には伝播せず、消滅する。結果として、誤り挿入は無視され、計算誤りは生じない。
【００３８】
次に、有効期間へスパイクが導入された場合を考える。その場合、挿入されたクロックは、ＡＮＤゲート３、４で阻止されないため、スパイクは、保護対象回路３０へ到達する。そのようなスパイクは、保護対象回路３０のタイミング違反を引き起こし、結果として、誤り挿入が成功してしまう。
【００３９】
しかしながら、有効期間をできる限り小さく設計することで、スパイク導入の精密なタイミング操作を要する攻撃（例：故障感度解析）の実行を困難にできる。さらに、このような有効期間中のスパイク挿入を検出したい場合の対策については、後述する実施の形態２において詳細に説明する。
【００４０】
図４は、本発明の実施の形態１における異常検出回路２０の内部構成と動作を示す図である。本実施の形態１における異常検出回路２０は、ＯＲゲート２１、２２、レジスタ２３、２４、ＡＮＤゲート２５、２６、およびＯＲゲート２７を含んで構成されている。そして、異常検出回路２０は、立上りイネーブル信号、立下りイネーブル信号、およびクロック信号を受け取り、それらの比較結果に基づき、警報信号を出力する。
【００４１】
異常検出は、図４の下段に示した制約条件の表に基づいて行う。表のうち、正常系は○、異常系は×で示している。すなわち、×のついた入力は、誤りが挿入された場合にのみ生じる。そのため、×がついた入力を検出することにより、異常入力が検出できる。図４に示した異常検出回路２０は、そのような検出動作を行う回路構成の一例である。
【００４２】
なお、図４に示すＯＲゲート２１、２２を用いた構成法は、実装の一例であり、同等の能力を有する別の論理回路でも代替できる。また、レジスタ２３、２４の出力は、リセット時にローにセットされ、異常が無い限り、ローを保持し続ける。異常系では、ＯＲゲート２１、２２の出力は１となり、その値がレジスタ２３、２４に取り込まれる。
【００４３】
なお、レジスタ２３、２４の出力は、ゲート２５、２６を介してレジスタ２３、２４のクロックポートへフィードバックされている。このフィードバックにより、レジスタ２３、２４は、一度ハイが取り込まれると、リセットしない限り１を保持し続ける。その結果、警報信号は、誤りが生じた際にハイにセットされ、かつリセット入力を受けるまでハイを維持する。この性質により、多重誤りにより異常検出回路２０が誤検出してしまうことが防止される。
【００４４】
以上のように、実施の形態１によれば、イネーブル生成回路において生成されたイネーブル信号と、クロック信号とから、無効期間に導入されたスパイクを検出可能な異常検出回路を備えている。さらに、有効期間をできる限り小さく設計することで、スパイク導入の精密なタイミング操作を要する攻撃の実行を困難にすることが可能となる。この結果、局所的なクロック異常を検出可能な半導体装置を実現できる。
【００４５】
実施の形態２．
本実施の形態２では、有効期間中のスパイク挿入を検出することのできる半導体装置の具体的な構成について説明する。
図５は、本発明の実施の形態２における半導体装置の一構成を説明する図である。本実施の形態２における図５の構成は、先の図１に示した実施の形態１の構成に対して、異常検出回路４０（第２の異常検出回路に相当）を追加したものとなっている。このように異常検出回路（２０、４０）を複数持つことで、局所的なクロック異常対策の効果を高めることができる。具体的には、異常検出回路４０の追加により、先の図３で説明した有効期間中のスパイクも検出できるようになる。
【００４６】
図５の下段に示したタイミングチャートを用いて、有効期間にスパイクが導入された場合の、本実施の形態２における半導体装置の動作について説明する。有効期間に導入されたスパイクは、先の図４に示した制約条件の表における×の入力状態に該当する。そのため、クロックバッファ１（第２のクロックバッファに相当）に納入されたスパイクが、有効期間内であった場合にも、異常検出回路４０により、検出が可能となる。異常検出回路４０の出力である警報信号を適切に処理することで、誤り挿入の難易度を上げるだけでなく、不可能にすることができる。
【００４７】
以上のように、実施の形態２によれば、イネーブル生成回路において生成されたイネーブル信号と、イネーブル生成回路には供給されないクロック信号とから、有効期間に導入されたスパイクを検出可能な第２の異常検出回路を備えている。この結果、局所的なクロック異常検出の効果を、先の実施の形態１よりも高めることが可能な半導体装置を実現できる。
【００４８】
実施の形態３．
本実施の形態３では、異常検出回路２０（あるいは異常検出回路４０）の出力である警報信号を、保護対象回路３０に与えるイネーブル信号に反映させる場合について説明する。
図６は、本発明の実施の形態３における半導体装置の一構成を説明する図である。本実施の形態３は、警報信号の使用方法の一例を示すものである。図６に示す本実施の形態３の構成では、異常検出回路２０（４０）に、ＡＮＤゲート５、６が追加されている。
【００４９】
ＡＮＤゲート５、６は、入力の立上り・立下りイネーブル信号を、異常検出回路２０（４０）が出力した警報信号でマスクする。異常検出回路２０（４０）が異常を検出した場合、警報信号は、ハイに固定される。すると、ＡＮＤゲート５、６の出力である立上りイネーブル信号’と立下りイネーブル信号’は、ゼロに固定される。その結果、立上りイネーブル信号’と立下りイネーブル信号’でマスクしたクロックで動作する保護対象回路３０は、異常検出回路２０（４０）による異常検出後は、値を取り込むことができなくなる。
【００５０】
この結果、異常検出回路２０（４０）と保護対象回路３０は、再びリセットが投入されるまで動作を停止する。それにより、保護対象回路３０の自動停止が達せられる。このように、本実施の形態３により、異常検出回路２０（４０）の出力する警報信号を、少ない回路（ＡＮＤゲート５、６）のみで有効に利用できる。
【００５１】
以上のように、実施の形態３によれば、簡単な回路構成により、異常検出回路によって生成される警報信号を利用して、保護対象回路に与えるイネーブル信号をマスクできる構成を備えている。この結果、クロック信号に対してスパイクが挿入された際に、保護対象回路を自動停止させることが可能となる。
【００５２】
実施の形態４．
本実施の形態４では、異常検出回路２０を多重化することで、局所的なクロック異常対策の効果をより高める場合について説明する。
図７は、本発明の実施の形態４における半導体装置の一構成を説明する図である。本実施の形態４における図７の構成は、先の図１に示した実施の形態１の構成、あるいは先の図５に示した実施の形態２の構成において、異常検出回路２０を多重化した場合に相当する。
【００５３】
本実施の形態４における異常検出回路群２０ａは、複数の異常検出回路２０（１）〜２０（Ｎ）で構成されている（Ｎは、２以上の整数）。先の実施の形態１〜３で説明した異常検出回路２０は、異常状態を検出して、その結果をレジスタに格納する。そのため、レジスタを直接書き換える攻撃者であれば、その結果を無効化できる可能性がある。それに対し、本実施の形態４では、異常検出回路群２０ａが、複数の異常検出回路２０（１）〜２０（Ｎ）を有しており、異常検出回路２０が多重化された構成となっている。この結果、攻撃者は、その全ての異常検出回路を誤らせる必要が生じ、結果として、攻撃の難易度を上げることができる。
【００５４】
以上のように、実施の形態４によれば、異常検出回路を多重化した構成を備えている。この結果、レジスタを直接書き換える攻撃者に対しても、攻撃の難易度を上げることができ、局所的なクロック異常を検出可能な半導体装置を得ることができるとともに、その信頼性を向上させることができる。
【００５５】
なお、本発明は、両エッジで使用可能であるが、立上りイネーブル信号のみを用いることで、片側エッジしか用いないシステムにも適用可能である。それにより、１種類の回路で、複数の保護対象を保護することができる。
【００５６】
また、保護対象回路３０内には、フォルト攻撃の対策として、検算機能を持たせることができる。
【図１】
0005976220.tif 000002
【図２】
0005976220.tif 000003
【図３】
0005976220.tif 000004
【図４】
0005976220.tif 000005
【図５】
0005976220.tif 000006
【図６】
0005976220.tif 000007
【図７】
0005976220.tif 000008
【図８】
0005976220.tif 000009