(57)【特許請求の範囲】
【請求項１】
ｎを１以上の正の整数とし、入力値Ａと入力値Ｂとが互いに異なる場合に、入力値Ａに対応する出力値Ｕと、入力値Ｂに対応する出力値Ｖとが互いに異なる可能性の高いアルゴリズムを実装したｎビットの値を入出力する回路（以下、アルゴリズム実装回路という）の故障を検出する回路故障検出装置であって、
前記アルゴリズム実装回路に、互いに異なる２ｎ個のｎビットの検査値を１個ずつ入力できる検査値入力部と、
前記検査値に対応する前記アルゴリズム実装回路の出力値のうち、互いに値が等しい出力値が検出された場合に、当該アルゴリズム実装回路が故障していると判定する故障検出部と、
を備えることを特徴とする回路故障検出装置。
【請求項２】
請求項１に記載の回路故障検出装置であって、
前記アルゴリズム実装回路に実装されたアルゴリズムが暗号アルゴリズムであること
を特徴とする回路故障検出装置。
【請求項３】
請求項２に記載の回路故障検出装置であって、
前記アルゴリズム実装回路に実装されたアルゴリズムがＡＥＳ暗号であること
を特徴とする回路故障検出装置。
【請求項４】
請求項１から３の何れかに記載の回路故障検出装置であって、
前記アルゴリズム実装回路をＰ個（Ｐは２以上の正の整数）備える回路の故障を検出することを特徴とし、
前記検査値入力部が、
前記Ｐ個のアルゴリズム実装回路と一対一に対応するＰ個の入力グループのうちのいずれの入力グループに検査値を入力するかを選択する入力グループ選択手段と、
前記入力グループ選択手段が選択した入力グループに互いに異なる２ｎ個のｎビットの検査値を設定する検査値設定手段と、
前記入力グループ選択手段が選択しなかった入力グループすべてに定数値を設定し、当該定数値と前記検査値設定手段が設定した２ｎ個の検査値のうちの一個とを併せてなるｎ×Ｐビットの入力値群を検査値を互いに異ならせて２ｎ群生成し、当該生成された２ｎ群の入力値群を、前記入力グループ毎に、対応する各アルゴリズム実装回路に１群ずつ入力する入力値群生成入力手段とを備え、
前記故障検出部が、
前記入力値群に対応して出力される出力値群のうち、互いに値が等しい出力値群が検出された場合に、前記入力グループ選択手段が選択した入力グループに対応するアルゴリズム実装回路が故障していると判定する出力値群比較手段と、
前記出力値群比較手段がアルゴリズム実装回路が故障していると判定した場合に、故障しているアルゴリズム実装回路の所在を表示する故障表示手段とを備えること
を特徴とする回路故障検出装置。
【請求項５】
ｎを１以上の正の整数とし、入力値Ａと入力値Ｂとが互いに異なる場合に、入力値Ａに対応する出力値Ｕと、入力値Ｂに対応する出力値Ｖとが互いに異なる可能性の高いアルゴリズムを実装したｎビットの値を入出力する回路（以下、アルゴリズム実装回路という）の故障を検出する回路故障検出方法であって、
前記アルゴリズム実装回路に、互いに異なる２ｎ個のｎビットの検査値を１個ずつ入力できる検査値入力ステップと、
前記検査値に対応する前記アルゴリズム実装回路の出力値のうち、互いに値が等しい出力値が検出された場合に、当該アルゴリズム実装回路が故障していると判定する故障検出ステップと、
を備えることを特徴とする回路故障検出方法。
【請求項６】
請求項５に記載の回路故障検出方法であって、
前記アルゴリズム実装回路に実装されたアルゴリズムが暗号アルゴリズムであること
を特徴とする回路故障検出方法。
【請求項７】
請求項６に記載の回路故障検出方法であって、
前記アルゴリズム実装回路に実装されたアルゴリズムがＡＥＳ暗号であること
を特徴とする回路故障検出方法。
【請求項８】
請求項５から７の何れかに記載の回路故障検出方法であって、
前記アルゴリズム実装回路をＰ個（Ｐは２以上の正の整数）備える回路の故障を検出することを特徴とし、
前記検査値入力ステップが、
前記Ｐ個のアルゴリズム実装回路と一対一に対応するＰ個の入力グループのうちのいずれの入力グループに検査値を入力するかを選択する入力グループ選択サブステップと、
前記入力グループ選択サブステップが選択した入力グループに互いに異なる２ｎ個のｎビットの検査値を設定する検査値設定サブステップと、
前記入力グループ選択サブステップにおいて選択されなかった入力グループすべてに定数値を設定し、当該定数値と前記検査値設定サブステップにおいて設定した２ｎ個の検査値のうちの一個とを併せてなるｎ×Ｐビットの入力値群を検査値を互いに異ならせて２ｎ群生成し、当該生成された２ｎ群の入力値群を、前記入力グループ毎に、対応する各アルゴリズム実装回路に１群ずつ入力する入力値群生成入力サブステップとを備え、
前記故障検出ステップが、
前記入力値群に対応して出力される出力値群のうち、互いに値が等しい出力値群が検出された場合に、前記入力グループ選択手段が選択した入力グループに対応するアルゴリズム実装回路が故障していると判定する出力値群比較サブステップと、
前記出力値群比較サブステップがアルゴリズム実装回路が故障していると判定した場合に、故障しているアルゴリズム実装回路の所在を表示する故障表示サブステップとを備えること
を特徴とする回路故障検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は回路の故障の有無を検出することができる回路故障検出装置、回路故障検出方法に関する。
【背景技術】
【０００２】
ＬＳＩの製造工程の何処かで製造途中のＬＳＩ中に異物が混入したなどの理由で、回路の一部に故障が発生することがある。これを初期不良といい、初期不良率の低下はすなわちＬＳＩの製造歩留まりの向上を意味する。また、ＬＳＩの使用を続ける事でＬＳＩが劣化（エージング）し、初期不良検査では正しく動いていた回路がその後の故障によって動作不良となることがある。これを経年劣化という。近年のＬＳＩ製造における微細化技術により、経年劣化は特に考慮すべき問題である。また、暗号ＬＳＩ内部の秘密情報を入手する攻撃として故障利用攻撃があり、攻撃者が意図的に回路の一部に、永久的あるいは一時的に故障を発生させることもある。
【０００３】
ＬＳＩの故障を検出する方法として、テストパターンを用いる方法がある。テストパターンとは、ＬＳＩなどが要求仕様にしたがって動作するか否かを検証するために入力する電気信号などを指す。テストパターンを入力して得られた出力を観測して故障の有無を検証する。テストパターンにより検証できる性質の割合を網羅率と呼ぶ。網羅率を高めるためにはテストパターンを慎重に設計する必要がある。テストパターンを自動的に生成する方法としてＡＴＰＧ（Ａｕｔｏｍａｔｉｃ  Ｔｅｓｔ  Ｐａｔｔｅｒｎ  Ｇｅｎｅｒａｔｉｏｎ）が知られている。また、別の方法としてスキャンパスを用いる方法（スキャンパステスト）が知られている（非特許文献１）。以下にスキャンパステストの概略について説明する。ＬＳＩは一般にＤＦＦ（Ｄｅｌａｙ  Ｆｌｉｐ−Ｆｌｏｐ）の間に組み合わせ回路が挿入されることで構成されている。このＤＦＦにセレクタ（マルチプレクサ）を付加し、ＤＦＦ同士を直列につないでシフト・レジスタを構成する。このシフト・レジスタにテストデータを入力することで、ＤＦＦに任意の入力値を設定することができる。入力値を設定した後、ＤＦＦの接続を元に戻して動作させれば、回路の任意の状態を再現することができる。また、回路の通常の動作後にもう一度シフト・レジスタを動作させて、各ＤＦＦの出力値を外部に取り出すこともできる。このようにしてスキャンパステストを実行することにより、ＤＦＦ間の回路の正しさを観測することができる。また、別の方法としてサイドチャネル情報を用いる方法がある（非特許文献２、３）。サイドチャネル情報とは、正規の入出力経路でない経路から観測できる情報のことを指し、具体的にはＬＳＩなどの内部動作に応じて変化する電流、電圧、電磁波、処理時間などを指す。従来より、このサイドチャネル情報を用いて暗号を実装したＬＳＩ内部の秘密情報を取り出すサイドチャネル攻撃が知られている。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】桜井至著、「ＬＳＩ設計の基礎技術」、テクノプレス、平成１１年、pp167-168.
【非特許文献２】Paul Kocher,"Timing Attacks on Implementations of Diffie- Hellman,RSA,DSS,and Other Systems,"Crypto'96,USA,August18-1996,pp104-113.
【非特許文献３】Jerome Di-Battista and Jean-Christophe Courrege and BrunoRouzeyre and Lionel Torres and Philippe Perdu,“When Failure Analysis Meets Side-Channel Attacks,”CHES2010,Santa Barbara,USA,September25-2010,pp188-202.
【発明の概要】
【発明が解決しようとする課題】
【０００５】
暗号アルゴリズムを実装したＬＳＩ（以下、暗号ＬＳＩという）の故障検出において上述の従来技術を用いることで以下の課題が発生する。テストパターンを用いる方法で高い網羅率のテストパターンを生成するためには、膨大な時間を要して膨大な量のテストパターンを生成する必要があり、テストコストの増大を招来する。スキャンパステストを用いる方法では、スキャンパスを悪用することで情報の漏えい、改ざんが可能となってしまう。また、このような情報の漏えい、改ざんを防止するために暗号ＬＳＩには、余計なデータフローを設けないように設計されているものも多く、このようなＬＳＩではスキャンパステストが利用できない。サイドチャネル情報を用いる方法では、上述のサイドチャネル攻撃への各種対策が暗号ＬＳＩに施されているため、サイドチャネル情報から内部の信号状態を読み取ることが出来ない。このため、暗号ＬＳＩの故障検出方法として用いることができない。もしくは仮に出来たとしても解析時間が膨大になってしまう。
【０００６】
また、暗号ＬＳＩに限らず、例えば大規模なＬＳＩの故障を検出しようとした場合でも、テストパターンを用いる方法では、膨大な時間を要して膨大な量のテストパターンを生成する必要があることに変わりはなく、テストコストの増大を招来する。スキャンパステストを用いる方法では、スキャンパスの実装に時間とコストがかかってしまう。また、サイドチャネル情報を用いる方法ではサイドチャネル情報の解析を行う機器が新たに必要となり余分な解析時間とコストがかかってしまう。本発明は、回路の内部データを漏えいさせることなく、ＬＳＩ（暗号ＬＳＩを含む）の故障検出を低コストかつ簡易に実現する回路故障検出装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の回路故障検出装置が故障検出することのできる回路は、入力値Ａと入力値Ｂとが互いに異なる場合に、入力値Ａに対応する出力値Ｕと、入力値Ｂに対応する出力値Ｖとが互いに異なる可能性の高いアルゴリズムを実装しており、ｎビット（ｎは１以上の正の整数）の値を入出力する回路（以下、アルゴリズム実装回路という）であることを条件とする。また、本発明の回路故障検出装置は、検査値入力部と、故障検出部とを備える。検査値入力部は、アルゴリズム実装回路に、互いに異なる２ｎ個のｎビットの検査値を１個ずつ入力できる。故障検出部は、検査値に対応するアルゴリズム実装回路の出力値のうち、互いに値が等しい出力値が検出された場合に、当該アルゴリズム実装回路が故障していると判定する。
【発明の効果】
【０００８】
本発明の回路故障検出装置によれば、故障検出時に回路の内部データを漏えいさせることがない。従ってスキャンパステストを使用することが出来ないような暗号ＬＳＩでも故障を検出することができる。またスキャンパステストが使用可能なＬＳＩでも、回路の内部データを漏洩させることなく低コストかつ簡易に故障を検出することができる。
【図面の簡単な説明】
【０００９】
【図１】実施例１に係る回路故障検出装置の構成例を示すブロック図。
【図２】実施例１に係る回路故障検出装置の動作例を示すフローチャート。
【図３】実施例２に係る回路故障検出装置の構成例を示すブロック図。
【図４】実施例２に係る回路故障検出装置の動作例を示すフローチャート。
【図５】実施例２に係る回路故障検出装置の動作例を示すフローチャート。
【図６】実施例２における暗号ＬＳＩに入力される入力値群を説明する図。
【図７】実施例２における暗号ＬＳＩ内でのデータフローを説明する図。
【図８】実施例２に係る回路故障検出装置が生成する入力値群を説明する図。
【図９】実施例２における暗号ＬＳＩ内でのデータフローと故障検出を具体的に説明する図。
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【実施例１】
【００１１】
図１、図２を用いて実施例１に係る回路故障検出装置１０について詳細に説明する。図１は実施例１に係る回路故障検出装置１０の構成例を示すブロック図である。図２は実施例１に係る回路故障検出装置１０の動作例を示すフローチャートである。本発明の回路故障検出装置１０が故障検出することのできるアルゴリズム実装回路２は、入力値Ａと入力値Ｂとが互いに異なる場合に、入力値Ａに対応する出力値Ｕと、入力値Ｂに対応する出力値Ｖとが互いに異なる可能性の高いアルゴリズムを実装しており、ｎビット（ｎは１以上の正の整数）の値を入出力する回路であることを特徴とする。アルゴリズム実装回路２は上述の条件（入出力間の変換が一対一上への写像となる）を満たす可能性が高いアルゴリズムであればどんなアルゴリズムを実装したものでも良い。例えば、暗号アルゴリズムは、その性質上入出力間の変換が一対一上への写像となることが保障されている。従ってアルゴリズム実装回路２としては暗号アルゴリズムを実装した回路でもよい。
【００１２】
以下、本実施例に係る回路故障検出装置１０の動作について詳細に説明する。本実施例の回路故障検出装置１０は、検査値入力部１１と、故障検出部１２とを備える。検査値入力部１１は、アルゴリズム実装回路２に、互いに異なる２ｎ個のｎビットの検査値のうちの１個を入力する（Ｓ１１）。故障検出部１２は、検査値に対応するアルゴリズム実装回路２の出力値のうち、互いに値が等しい出力値が検出された場合に（Ｓ１０ａＹ）、当該アルゴリズム実装回路２が故障していると判定する（Ｓ１２）。当然のことながら比較には２以上の出力値を要する。従って、検査値が１個だけ入力された状態では、この検査値に対応して出力される出力値も１個だけであるから比較はできない（Ｓ１０ａＮ、Ｓ１０ｂＮ）。この場合ステップＳ１１に戻り、次の検査値を１個入力して（Ｓ１１）２個目の出力値を得る。出力値が２個以上得られるようになれば出力値同士の比較を開始する（Ｓ１０ａ）。出力値の中に互いに値が等しい出力値が検出されなかった場合には（Ｓ１０ａＮ）、検査値２ｎ個全てに対する比較が終了していれば（Ｓ１０ｂＹ）動作を終了する。一方、検査値２ｎ個全てに対する比較が終了していなければ（Ｓ１０ｂＮ）、ステップＳ１１に戻り、アルゴリズム実装回路２に、未入力の検査値を１個入力する（Ｓ１１）。以後、検査値２ｎ個全てに対する比較が終了するか（Ｓ１０ｂＹ）、故障と判定されるか（Ｓ１２）のいずれかの事象が発生するまでステップＳ１１、ステップＳ１０ａ、ステップＳ１０ｂが繰り返される。
【００１３】
本実施例の回路故障検出装置１０によれば、故障検出時に回路の内部データを漏えいさせることがない。従ってスキャンパステストを使用することが出来ないような暗号ＬＳＩでも故障を検出することができる。またスキャンパステストが使用可能なＬＳＩでも、回路の内部データを漏洩させることなく低コストかつ簡易に故障を検出することができる。本実施例の回路故障検出装置１０によれば、従来のテストパターン、スキャンパステストなどと比べて、回路が複雑になった場合でも高速かつ簡易に故障箇所検出を行うことができる。また、本実施例の回路故障検出装置１０を、暗号アルゴリズムを実装した回路の故障検出に用いれば、スキャンパステスト、サイドチャネル情報を用いずに、回路の故障を検出することが可能となるため、情報の漏えい、改ざん可能性のない安全な故障検出を実現できる。また、出力値のうち何れか二つが互いに等しくなった場合、ステップＳ１１〜Ｓ１０ｂ間のループ処理を中断し（Ｓ１０ａＹ）、即座にアルゴリズム実装回路２が故障していると判定するため、必ずしも考えられる入力値のパターン全て（２ｎ個）を入力しなくて済む。故障が発見される最短のパターンは、２個の出力値の比較のみで等しい値が検出されるパターンである。従って、必ずしも入力値のパターン全てを入力しなくても良いため、全パターン検査と比較して故障検出に要する処理時間を短くすることが可能である。
【実施例２】
【００１４】
次に図３、図４、図５を用いて実施例２に係る回路故障検出装置１００について詳細に説明する。図３は本実施例に係る回路故障検出装置１００の構成例を示すブロック図である。図４、図５は本実施例に係る回路故障検出装置１００の動作例を示すフローチャートである。本実施例の回路故障検出装置１００は、前述のアルゴリズム実装回路をＰ個（Ｐは２以上の正の整数）備える回路の故障を検出することを特徴とする。本実施例では、回路故障検出装置１００が故障検出の対象とする暗号ＬＳＩ２０にはＡＥＳ暗号アルゴリズムが実装されているものとして説明を進める。本実施例では前述のＰ個のアルゴリズム実装回路は、ＡＥＳ暗号におけるラウンドかぎとの排他的論理和を実行するアルゴリズムと、Ｓｂｏｘ変換を実行するアルゴリズムとを組み合わせたアルゴリズムを実装した回路（以下、かぎ付きＳｂｏｘという）のことを指す。本実施例ではかぎ付きＳｂｏｘは、ｎビット（ｎは１以上の正の整数）の値を入出力することを特徴とする。本実施例の回路故障検出装置１００は、Ｐ個のかぎ付きＳｂｏｘに対して、順番に前述の検査値を入力してその出力（出力値群、ｎ×Ｐビット）を観察することにより、何れかのかぎ付きＳｂｏｘに故障があるか否かを検出する。もちろん、本実施例の回路故障検出装置１００は、入出力間の変換が一対一上への写像となることが保障されているアルゴリズムを実装した回路をＰ個備える回路であればどんな回路の故障をも検出することができる。従って本実施例で用いられるＡＥＳ暗号を実装した暗号ＬＳＩ２０は、回路故障検出装置１００が故障を検出することのできる回路の一具体例、説明の分かりやすさのための単なる例示に過ぎない。よって本実施例で登場するＡＥＳ暗号を実装した暗号ＬＳＩ２０は適宜他のＬＳＩなどに代替可能である。以下に回路故障検出装置１００の動作について詳細に説明する。
【００１５】
本実施例の回路故障検出装置１００は、検査値入力部１１０と、故障検出部１２０とを備える。検査値入力部１１０は、入力グループ選択手段１１１と、検査値設定手段１１２と、入力値群生成入力手段１１３とを備える。故障検出部１２０は、出力値群比較手段１２１と、故障表示手段１２２とを備える。本実施例の回路故障検出装置１００が故障検出の対象とする暗号ＬＳＩ２０は、Ｐ個のかぎ付きＳｂｏｘ２１−１〜２１−Ｐと、行列混合変換回路Ｑ２２とを備える。回路故障検出装置１００の入力グループ選択手段１１１は、Ｐ個のかぎ付きＳｂｏｘ２１−１〜２１−Ｐと一対一に対応するＰ個の入力グループのうちのいずれの入力グループに検査値を入力するかを選択する（Ｓ１１１）。検査値設定手段１１２は、入力グループ選択手段１１１が選択した入力グループに互いに異なる２ｎ個のｎビットの検査値を設定する（Ｓ１１２）。入力値群生成入力手段１１３は、入力グループ選択手段１１１が選択しなかった入力グループすべてに定数値を設定し（Ｓ１１３ａ）、当該定数値と検査値入力手段１１２が設定した２ｎ個の検査値のうちの一個とを併せてなるｎ×Ｐビットの入力値群を、検査値を互いに異ならせて２ｎ群生成し、当該生成された２ｎ群の入力値群を、入力グループ毎に、対応する各かぎ付きＳｂｏｘに１群ずつ入力する（Ｓ１１３ｂ）。以上が本実施例の回路故障検出装置１００の検査値入力部１１０が暗号ＬＳＩ２０に対して行う検査値入力動作である（Ｓ１１１、Ｓ１１２、Ｓ１１３ａ、Ｓ１１３ｂ）。暗号ＬＳＩ２０のかぎ付きＳｂｏｘ２１−１〜２１−Ｐは、入力されたｎビットの入力値群をＳｕｂＢｙｔｅｓと呼ばれるテーブルにて変換する。詳細には、かぎ付きＳｂｏｘ２１−１〜２１−Ｐは、入力値（検査値、定数値）をＳｕｂＢｙｔｅｓテーブルに入力し、ｎビットの値を出力する非線形変換を行う。この非線形変換に似たものとして、ルックアップテーブルがある。次にかぎ付きＳｂｏｘ２１−１〜２１−Ｐは、非線形変換後のｎビットの値に対してユーザが設定したかぎから作った情報である「ラウンドかぎ」との排他的論理和（ＸＯＲ）をとる。このようにしてかぎ付きＳｂｏｘ２１−１〜２１−Ｐが生成したＰ個の中間生成結果を本実施例ではＳＫ置換結果と呼ぶ。ここで、Ｓｂｏｘ２１−１〜２１−Ｐで使われる「ラウンドかぎ」は同じものとは限らない。これらＰ個のＳＫ置換結果に対し、行列混合変換回路Ｑ２２は、ＳｈｉｆｔＲｏｗｓ処理、ＭｉｘＣｏｌｕｍｎ処理を行う。上述のかぎ付きＳｂｏｘ２１−１〜２１−Ｐおよび行列混合変換回路Ｑ２２が行う処理を１ラウンドとする。暗号ＬＳＩ２０はこのラウンドを複数回繰り返して出力値群を生成する。このとき出力値群は、入力値群と同じｎ×Ｐビットである。
【００１６】
以下に本実施例の回路故障検出装置１００の検査値入力部１２０が、暗号ＬＳＩ２０が生成した出力値群に対して行う故障検出動作を説明する。回路故障検出装置１００の出力値群比較手段１２１は、前記入力値群に対応して出力される出力値群同士を比較して（Ｓ１２１）、互いに値が等しい出力値群が検出された場合に（Ｓ１００ａＹ）、入力グループ選択手段１１１が選択した入力グループに対応するかぎ付きＳｂｏｘ、もしくはＰ個のＳＫ置換結果を全て利用して計算を行う行列混合演算回路Ｑ２２の何れかが故障していると判定する。この場合、故障表示手段１２２は、故障が疑われる箇所の所在を表示して（Ｓ１２２）、ステップＳ１００ｃに移る。ここで、ステップＳ１２２を実行後は必ずしもステップＳ１００ｃに移行して、他の未検出箇所について故障検出を行わなくても良い。例えば、図５に記載したように、故障表示手段１２２は、故障が疑われる箇所の所在を表示して（Ｓ１２２）、そのまま処理を終了しても良い。この場合は、他の未検出箇所の故障検出は行われない。
【００１７】
一方、出力値群同士を比較して（Ｓ１２１）、互いに値が等しい出力値群が検出されなかった場合には（Ｓ１００ａＮ）、その比較が２ｎ個の検査値全てに対して行われたか否かを判定する（Ｓ１００ｂ）。比較が２ｎ個の検査値全てに対して行われていた場合には（Ｓ１００ｂＹ）ステップＳ１００ｃに移り、入力グループ選択手段１１１が未選択の入力グループがあるか否か（つまり、未判定のかぎ付きＳｂｏｘがあるか否か）を判定する（Ｓ１００ｃ）。未判定のかぎ付きＳｂｏｘが存在する場合には（Ｓ１００ｃＹ）、ステップＳ１１１に戻り、未判定のかぎ付きＳｂｏｘの何れかに対応する入力グループを１つ選択し（Ｓ１１１）、以降、ステップＳ１１２以下の処理を繰り返す。一方、ステップＳ１００ｃにおいて、未判定のかぎ付きＳｂｏｘが存在しない場合には（Ｓ１００ｃＮ）処理を終了する。一方、ステップＳ１００ｂにおいて、出力値群の比較が２ｎ個の検査値全てに対して行われていなかった場合には、ステップＳ１１３ｂに戻り、未入力の入力値群のうち１群のみを選択して、暗号ＬＳＩ２０に入力する（Ｓ１１３ｂ）。以降、ステップＳ１１３ｂ以下の処理を繰り返す。
【００１８】
図６、図７、図８、図９を用いて、上述した本実施例の回路故障検出装置１００の動作をさらに具体的に説明する。図６は本実施例における暗号ＬＳＩ２０に入力される入力値群を説明する図である。図７は本実施例における暗号ＬＳＩ２０内でのデータフローを説明する図である。図８は本実施例に係る回路故障検出装置１００が生成する入力値群を説明する図である。図９は本実施例における暗号ＬＳＩ２０内でのデータフローと故障検出を具体的に説明する図である。まず図６を参照して、本実施例で暗号ＬＳＩ２０に入力される入力値群について詳細に説明する。本実施例では、Ｐ個のかぎ付きＳｂｏｘ２１−１〜２１−Ｐに入力値群を入力することとしているため、かぎ付きＳｂｏｘ２１−１〜２１−Ｐそれぞれと１対１に対応するＰ個の入力グループ９−１−１〜９−１−Ｐを設定する。かぎ付きＳｂｏｘ２１−１〜２１−Ｐにはｎビットの値を入力することとしているため、Ｐ個の入力グループ９−１−１〜９−１−Ｐにはそれぞれｎビットの値を１つずつ設定する。このようにしてｎビットの値を入力グループごとにＰ個設定したものを入力値群９−１と呼ぶ。以下、入力グループ９−１−１〜９−１−Ｐにはそれぞれｎビットの定数値Ｃ１８−１−１、Ｃ２８−１−２、Ｃ３８−１−３、…、ＣＰ８−１−Ｐが設定されて入力値群９−１が構成されているものとして話を進める。ここで、定数値Ｃ１８−１−１、Ｃ２８−１−２、Ｃ３８−１−３、…、ＣＰ８−１−Ｐはｎビットの値であればなんでも良く、互いに値が異なっていても良いし、全て等しい値で構成されていても良い。
【００１９】
次に図７を参照して、図６で説明した入力値群９−１が本実施例の暗号ＬＳＩ２０に入力された場合の暗号ＬＳＩ２０内でのデータフローを詳細に説明する。入力値群９−１の暗号ＬＳＩ２０内への入力は次のように行われる。入力値群９−１の各入力グループ９−１−１〜９−１−Ｐに設定された定数値Ｃ１８−１−１、Ｃ２８−１−２、Ｃ３８−１−３、…、ＣＰ８−１−Ｐは、それぞれ自身の属する入力グループ９−１−１〜９−１−Ｐに１対１に対応付いたかぎ付きＳｂｏｘ２１−１〜２１−Ｐに入力される。例えば図７において、定数値Ｃ１８−１−１は入力グループ９−１−１に対応付いたかぎ付きＳｂｏｘ２１−１に入力される。定数値Ｃ２８−１−２は入力グループ９−１−２に対応付いたかぎ付きＳｂｏｘ２１−２に入力される。このようにして定数値Ｃ１８−１−１、Ｃ２８−１−２、Ｃ３８−１−３、…、ＣＰ８−１−Ｐは、かぎ付きＳｂｏｘ２１−１〜２１−Ｐに入力され、かぎ付きＳｂｏｘ２１−１〜２１−Ｐ内でそれぞれＳｕｂＢｙｔｅｓテーブルの非線形変換、ラウンドかぎとの排他的論理和（ＸＯＲ）を施される。かぎ付きＳｂｏｘ２１−１〜２１−Ｐの出力をそれぞれＳＫ置換結果Ｄ１６−１−１〜ＤＰ６−１−Ｐとする。ＳＫ置換結果Ｄ１６−１−１〜ＤＰ６−１−ＰをまとめてＳＫ置換結果群６−１と呼ぶ。ＳＫ置換結果群６−１は、次に行列混合変換回路Ｑ２２に入力され、行列混合変換回路Ｑ２２は、ＳＫ置換結果群６−１に対してＳｈｉｆｔＲｏｗｓ処理、ＭｉｘＣｏｌｕｍｎ処理を行う。上記かぎ付きＳｂｏｘ２１−１〜２１−Ｐおよび行列混合変換回路Ｑ２２が行う処理をラウンドと呼び、暗号ＬＳＩ２０はこのラウンドを複数回繰り返し、最終的に出力値Ｅ１５−１−１、Ｅ２５−１−２、Ｅ３５−１−３、…、ＥＰ５−１−Ｐからなる出力値群５−１を生成する。なお、暗号ＬＳＩ２０は、暗号のセキュリティの観点からラウンド毎の計算結果を外部から読み取れないように設計されているものとする。本実施例で用いられる暗号ＬＳＩ２０は、図６で説明した入力値群を入力として、これら入力値群に対して図７で説明した処理を行うものとする。
【００２０】
次に図８を参照して図６、図７で説明した暗号ＬＳＩ２０に対して、本実施例の回路故障検出装置１００が生成して入力する入力値群９−１〜９−２ｎを説明する。回路故障検出装置１００の入力グループ選択手段１１１は、Ｐ個の入力グループ９−１−１〜９−１−Ｐのうちのいずれの入力グループに検査値を入力するかを選択する（Ｓ１１１）。図８の例では、回路故障検出装置１００は、太実線で囲んだ入力グループ９−１−２〜９−２ｎ−２を、検査値を入力する入力グループとして選択している。検査値設定手段１１２は、入力グループ選択手段１１１が選択した入力グループ９−１−２〜９−２ｎ−２に互いに異なる２ｎ個のｎビットの検査値７−１〜７−２ｎ（０、１、２、３、…２ｎ−１）を設定する（Ｓ１１２）。入力値群生成入力手段１１３は、入力グループ選択手段１１１が選択しなかった入力グループすべて（９−１−２〜９−２ｎ−２以外）に定数値Ｃ１、Ｃ３、…、ＣＰを設定し（Ｓ１１３ａ）、入力値群９−１〜９−２ｎを生成する。従って、入力値群９−１〜９−２ｎには選択した入力グループ９−１−２〜９−２ｎ−２に全て異なる検査値が入力されていることになる。例えば入力値群９−１には、選択された入力グループ９−１−２に検査値７−１（０）が入力されている。また、例えば入力値群９−２には、選択された入力グループ９−２−２に検査値７−２（１）が入力されている。検査値７−１〜７−２ｎが互いに異なるため、生成された入力値群９−１〜９−２ｎもまた、群全体としての値が互いに異なっている。
【００２１】
次に図９を参照して、本実施例の暗号ＬＳＩ２０内でのデータフローと故障検出の流れを具体的に説明する。図８に引き続き回路故障検出装置１００は、太実線で囲んだ入力グループ９−１−２〜９−２ｎ−２を、検査値を入力する入力グループとして選択しているものとして説明を続ける。回路故障検出装置１００の入力値群生成入力手段１１３は、生成した入力値群９−１〜９−２ｎを、入力グループ毎に、入力グループに対応するかぎ付きＳｂｏｘに入力する（Ｓ１１３ｂ）。この入力は１群ずつ行われる。図９は回路故障検出装置１００がＬＳＩ２０に入力値群９−１を入力する場面を図示している。暗号ＬＳＩ２０のかぎ付きＳｂｏｘ２１−１〜２１−Ｐは、入力された入力値群９−１をＳｕｂＢｙｔｅｓテーブルにて非線形変換し、ラウンドかぎとの排他的論理和（ＸＯＲ）を行ってＳＫ置換結果Ｄ１６−１−１〜ＤＰ６−１−Ｐを生成する。行列混合変換回路Ｑ２２は、生成したＳＫ置換結果Ｄ１６−１−１〜ＤＰ６−１−Ｐに対しＳｈｉｆｔＲｏｗｓ処理、ＭｉｘＣｏｌｕｍｎ処理を行う。暗号ＬＳＩ２０はこれらの処理（ラウンド）を複数回繰り返して出力値群５−１を生成する。上述の処理（複数回のラウンド処理）が入力値群９−２についても繰り返され、入力値群９−２に対応する出力値群５−２が生成される。出力値群が二つ以上出力された時点より、回路故障検出装置１００の出力値群比較手段１２１は、出力値群同士の比較を開始する（Ｓ１２１）。図９の例の場合、出力値群５−１、出力値群５−２が出力された時点で、出力値群比較手段１２１は出力値群５−１と出力値群５−２とが互いに等しい値であるかを比較して、出力値群５−１、出力値群５−２が互いに等しい場合に（Ｓ１００ａＹ）、入力グループ選択手段１１１が選択した入力グループ９−１−２〜９−２ｎ−２に対応するかぎ付きＳｂｏｘ２１−２、もしくはＳＫ置換結果群の全てを利用して計算を行う行列混合演算回路Ｑ２２の何れかが故障していると判定する。一方、出力値群５−１、出力値群５−２が互いに等しくない場合には（Ｓ１００ａＮ、Ｓ１００ｂＮ）、入力値群生成入力手段１１３が入力値群９−３を生成して暗号ＬＳＩ２０に入力し（Ｓ１１３ｂ）、対応する出力値群５−３と、前述の出力値群５−１、出力値群５−２の三つの値の何れか二つが互いに等しくなるかを判定して、出力値群５−１、５−２、５−３のうち何れか二つが互いに等しい場合に（Ｓ１００ａＹ）、かぎ付きＳｂｏｘ２１−２、もしくは行列混合演算回路Ｑ２２の何れかが故障していると判定する。一方、出力値群５−１、５−２、５−３が互いに異なる場合には（Ｓ１００ａＮ）、入力値群生成入力手段１１３が入力値群９−４を生成して暗号ＬＳＩ２０に入力して（Ｓ１１３ｂ）出力値群５−４を得る。このようにして出力値群５−１〜５−２ｎの全てについて互いに等しい値が存在するか否かの比較を行い、出力値群５−１〜５−２ｎが互いに異なる場合には（Ｓ１００ｂＹ）、検査中のかぎ付きＳｂｏｘ２１−２に故障が生じていないと判定し、他のかぎ付きＳｂｏｘの故障の検討に移る（Ｓ１００ｃＹ）。図９の例では、かぎ付きＳｂｏｘ２１−２について故障が生じていないと判定された場合には（Ｓ１００ｂＹ）、入力グループ選択手段１１１は、入力グループ９−１−２〜９−２ｎ−２と異なる入力グループ、例えば入力グループ９−１−３〜９−２ｎ−３を選択する。選択された入力グループ９−１−３〜９−２ｎ−３に対して上述の処理が繰り返され、入力グループ９−１−３〜９−２ｎ−３と対応するかぎ付きＳｂｏｘ２１−３および行列混合演算回路Ｑ２２が故障検出対象となる。このようにして、暗号ＬＳＩ２０内の全てのかぎ付きＳｂｏｘ２１−１〜２１−Ｐ及び行列混合演算回路Ｑ２２について故障検出が実行され、それぞれの出力値群５−１〜５−２ｎを比較した結果、いずれの回路にも故障が検出されなかった場合に（Ｓ１００ｃＮ）、暗号ＬＳＩ２０には故障が存在しないと判定して、動作を終了する。
【００２２】
本実施例の回路故障検出装置１００によれば、実施例１の効果に加えて、アルゴリズム実装回路が複数存在するＬＳＩなどについて、その故障が何れのアルゴリズム実装回路内で起こっているか、その故障箇所を検出することが可能である。また、出力値群のうち何れか二つが互いに等しくなった場合、ステップＳ１１３ｂ〜Ｓ１００ｂ間のループ処理を中断し（Ｓ１００ａＹ）、即座に検査値を入力しているアルゴリズム実装回路が故障していると判定するため、必ずしも考えられる入力値群のパターン全てを入力しなくて済む。故障が発見される最短のパターンは、２個の出力値群の比較のみで等しい値が検出されるパターンである。従って、必ずしも入力値群のパターン全てを入力しなくても良いため、全パターン検査と比較して故障検出に要する処理時間を短くすることが可能である。
【００２３】
なお、本発明の回路故障検出装置は、実施形態で説明したようにＬＳＩや回路の外部に構築され、ＬＳＩや回路の故障を検出することとしても良いし、例えば本発明の回路故障検出装置をＬＳＩに内蔵し、自身が内蔵されているＬＳＩの故障を検出することに特化した構成とすることも可能である。
【図１】
0005637446.tif 000002
【図２】
0005637446.tif 000003
【図３】
0005637446.tif 000004
【図４】
0005637446.tif 000005
【図５】
0005637446.tif 000006
【図６】
0005637446.tif 000007
【図７】
0005637446.tif 000008
【図８】
0005637446.tif 000009
【図９】
0005637446.tif 000010