(57)【特許請求の範囲】
【請求項１】
第１の層に存在するとともにランダム信号を生成するアクティブシールドと、第２の層に存在する少なくとも１つのセキュリティクリティカルコンポーネントとを備える集積回路であり、前記セキュリティクリティカルコンポーネントは、前記ランダム信号に基づき前記セキュリティクリティカルコンポーネントの少なくともある部分へのアクセスを可能とするアクセスキーを生成するように構成され、
前記アクティブシールドは前記ランダム信号を前記セキュリティクリティカルコンポーネントに伝送する導電線を有し、前記アクティブシールドの前記導電線が損傷している場合に、前記アクティブシールドからの前記ランダム信号はもとのまま前記セキュリティクリティカルコンポーネントに届かず、前記セキュリティクリティカルコンポーネントは、前記アクティブシールドが送信する前記ランダム信号に基づくアクセスキーとは異なる、誤ったアクセスキーを生成し、前記セキュリティクリティカルコンポーネントの前記部分にアクセスすることができなくなる、集積回路。
【請求項２】
前記セキュリティクリティカルコンポーネントは、前記アクセスキーを用いて、前記セキュリティクリティカルコンポーネントに含まれる記憶装置のコンテンツへのアクセスを可能にするように更に構成される、請求項１に記載の集積回路。
【請求項３】
前記コンテンツは暗号化されたコンテンツであり、前記アクセスキーは前記暗号化されたコンテンツを復号するための復号キーを含む、請求項２に記載の集積回路。
【請求項４】
前記アクセスキーは、前記アクティブシールドの前記出力値に基づくとともに、固定の乱数に基づく、請求項１〜３のいずれか一項に記載の集積回路。
【請求項５】
前記セキュリティクリティカルコンポーネントは、前記アクティブシールドの前記出力値及び前記固定の乱数に対して排他的論理和演算を行うことによって、前記アクセスキーを生成するように更に構成される、請求項４に記載の集積回路。
【請求項６】
前記セキュリティクリティカルコンポーネントは、入力値を前記アクティブシールドへ提供するように更に構成され、前記入力値は固定の乱数シード値に基づく、請求項１〜５のいずれか一項に記載の集積回路。
【請求項７】
前記セキュリティクリティカルコンポーネントは、前記入力値を前記アクティブシールドへ提供する前に、前記入力値を可変ランダム値でマスクするように更に構成される、請求項６に記載の集積回路。
【請求項８】
前記セキュリティクリティカルコンポーネントは、前記可変ランダム値を用いて前記アクティブシールドの前記出力値をアンマスクするように更に構成される、請求項７に記載の集積回路。
【請求項９】
前記セキュリティクリティカルコンポーネントは、ブールマスキングを使用するように更に構成される、請求項８に記載の集積回路。
【請求項１０】
前記セキュリティクリティカルコンポーネントは、前記入力値をマスクするとともに前記出力値をアンマスクするように構成されるシールドコントローラを備える、請求項８又は９に記載の集積回路。
【請求項１１】
前記アクセスが無効である場合に、前記セキュリティクリティカルコンポーネントは、エラー信号を生成するように更に構成される、請求項１〜１０のいずれか一項に記載の集積回路。
【請求項１２】
請求項１〜１１のいずれか一項に記載の集積回路を備えるスマートカード。
【請求項１３】
請求項１〜１１のいずれか一項に記載の集積回路を備える電子識別文書。
【請求項１４】
集積回路を保護する方法であり、前記集積回路は、第１の層に存在するとともにランダム信号を生成するアクティブシールドと、第２の層に存在する少なくとも１つのセキュリティクリティカルコンポーネントとを備え、前記セキュリティクリティカルコンポーネントは、前記ランダム信号に基づき前記セキュリティクリティカルコンポーネントの少なくともある部分へのアクセスを可能とするアクセスキーを生成し、
前記アクティブシールドは前記ランダム信号を前記セキュリティクリティカルコンポーネントに伝送する導電線を有し、前記アクティブシールドの前記導電線が損傷している場合に、前記アクティブシールドからの前記ランダム信号はもとのまま前記セキュリティクリティカルコンポーネントに届かず、前記セキュリティクリティカルコンポーネントは、前記アクティブシールドが送信する前記ランダム信号に基づくアクセスキーとは異なる、誤ったアクセスキーを生成し、前記セキュリティクリティカルコンポーネントの前記部分にアクセスすることができなくなる、集積回路を保護する方法。
【請求項１５】
命令を含むコンピュータプログラム製品であり、前記集積回路が備える処理装置によって前記コンピュータプログラム製品が実行されるときに、前記処理装置に請求項１４に記載の方法を行わせる、コンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、集積回路に関するものである。さらに本明細書は、集積回路を保護する対応の方法、及び対応するコンピュータプログラム製品に関するものである。
【背景技術】
【０００２】
現在では、多数の電子デバイス及びコンピューティング環境において、セキュリティが重要な役割を果たす。例えば、スマートカード及び電子識別文書等の電子デバイスはしばしば、個人情報及び秘密鍵等の機密データが格納された集積回路（ＩＣ）を含む。この機密データによって、営利団体及び政府機関との業務を可能にできる。電子識別文書の例として、電子パスポート（e-Passport）及び電子認証カード（eID）が挙げられる。これらの機密データを保護するために、より具体的には権限が与えられていない者がこれらのデータにアクセスすることを防ぐために、多数の技術が開発されている。しかしながら、当該ＩＣのセキュリティを破る多数の技術も存在する。保証されたＩＣからデータを読み出す様々な攻撃が編み出されている。例えば、いわゆる集束イオンビーム（ＦＩＢ）アタック又はプロービングアタックはとても強力である。そのようなアタックには、選択された信号の状態を探り及び／又は強制する、不良解析やウエハレベルのＩＣデバッグ機器が用いられる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
かかるアタックによって引き起こされるリスクゆえに、有効な対策を開発することが重要である。
【課題を解決するための手段】
【０００４】
本明細書の第１の態様によれば、第１の層に存在するアクティブシールドと、第２の層に存在する少なくとも１つのセキュリティクリティカルコンポーネントとを備える集積回路であり、セキュリティクリティカルコンポーネントは、セキュリティクリティカルコンポーネントの少なくとも一部へのアクセスを可能とするアクセスキーを生成するように構成され、アクセスキーはアクティブシールドの出力値に基づく、集積回路が提供される。
【０００５】
１つ以上の実施形態では、セキュリティクリティカルコンポーネントが、アクセスキーを用いて、セキュリティクリティカルコンポーネントに含まれる記憶装置のコンテンツへのアクセスを可能にするように更に構成される。
【０００６】
１つ以上の実施形態では、前記コンテンツは暗号化されたコンテンツであり、アクセスキーは前記暗号化されたコンテンツを復号するための復号キーを含む。
【０００７】
１つ以上の実施形態では、アクセスキーは、アクティブシールドの出力値に基づくとともに、固定の乱数に基づく。
【０００８】
１つ以上の実施形態では、セキュリティクリティカルコンポーネントは、アクティブシールドの出力値及び前記固定の乱数に対して排他的論理和演算を行うことによってアクセスキーを生成するように更に構成される。
【０００９】
１つ以上の実施形態では、セキュリティクリティカルコンポーネントは、入力値をアクティブシールドに提供するように更に構成され、この入力値は固定の乱数シード値に基づく。
【００１０】
１つ以上の実施形態では、セキュリティクリティカルコンポーネントは、前記入力値をアクティブシールドに提供する前に、当該入力値を可変ランダム値でマスクするように更に構成される。
【００１１】
１つ以上の実施形態では、セキュリティクリティカルコンポーネントは、この可変ランダム値を用いてアクティブシールドの出力値をアンマスクするように更に構成される。
【００１２】
１つ以上の実施形態では、セキュリティクリティカルコンポーネントは、入力値をマスクするとともに出力値をアンマスクするためにブールマスキングを使用するように更に構成される。
【００１３】
１つ以上の実施形態では、セキュリティクリティカルコンポーネントは、入力値をマスクするとともに出力値をアンマスクするように構成されるシールドコントローラを備える。
【００１４】
１つ以上の実施形態では、前記アクセスが無効である場合に、セキュリティクリティカルコンポーネントはエラー信号を生成するように更に構成される。
【００１５】
１つ以上の実施形態では、スマートカードは本明細書で述べる性質の集積回路を備える。
【００１６】
１つ以上の実施形態では、電子識別文書は本明細書で述べる性質の集積回路を備える。
【００１７】
本明細書の第２の態様によれば、集積回路を保護する方法であり、前記集積回路は、第１の層に存在するアクティブシールドと、第２の層に存在する少なくとも１つのセキュリティクリティカルコンポーネントとを備え、セキュリティクリティカルコンポーネントは、前記セキュリティクリティカルコンポーネントの少なくとも一部へのアクセスを可能とするアクセスキーを生成し、前記アクセスキーはアクティブシールドの出力値に基づく、集積回路を保護する方法が考えられる。
【００１８】
本明細書の第３の態様によれば、命令を含むコンピュータプログラム製品であり、処理装置によって前記コンピュータプログラム製品が実行されるときに、前記処理装置に本明細書で述べる性質の方法を行わせる、コンピュータプログラム製品が提供される。
【図面の簡単な説明】
【００１９】
【図１】集積回路の例を示す図である。
【図２】アクティブシールドを制御できる手段を示すブロック図である。
【図３】集積回路の実施形態を説明するブロック図である。
【図４】１つ以上の実施形態に従い、アクティブシールドを制御できる手段を示すブロック図である。
【図５】アクティブシールド実装の実施形態を説明する図である。
【図６】アクティブシールド実装のデータフローの実施形態を説明する図である。
【発明を実施するための形態】
【００２０】
添付図面を参照して、実施形態をより詳細に説明する。
【００２１】
図１は、集積回路（ＩＣ）１００の例を示す図である。集積回路１００は、アクティブシールド１０８を含む第１の層１０２を備える。第１の層１０２を、集積回路１００の最上層とすることができる。さらに、集積回路１００は、ＩＣコンポーネント１０６を含む第２の層１０４を備える。第２の層１０４を、第１の層１０２の真下の層とすることができ、又はＩＣ１００の下層とすることができる。ＩＣコンポーネント１０６を、秘匿関数（a secure function）を実行し及び／又は機密データを格納する、セキュリティクリティカルコンポーネントとすることができる。アクティブシールド１０８は、複数の導電線を備えることができる。特に、アクティブシールド１０８は、ランダム信号を伝送する、ワイヤの高密度メッシュを備えることができる。
【００２２】
図２は、アクティブシールドを制御できる手段を示すブロック図２００である。上述したように、アクティブシールド１０８は、ランダム信号を伝送する、ワイヤの高密度メッシュを備えることができる。あるいは、アクティブシールド１０８を別の方法で実装することができ、例えば、２０１４年２月２０日に公開された米国出願公開第2014/0049359号明細書に説明されているような、導電線と論理演算回路との構造体として実装することができる。ＩＣコンポーネント１０６は、アクティブシールド１０８の入力２０４とアクティブシールド１０８の出力２０６とに接続されたシールドコントローラ２０２を備えることができる。シールドコントローラ２０２は、上述したランダム信号を生成することができ、導電線の損傷を検出するために当該信号の整合性をチェックすることができる。アクティブシールディング自体は既知であり、例えば論文 Sebastien Briais et al. “Random Active Shield”. IEEE Computer Society, Fault Diagnosis and Tolerance in Cryptography, Sep 2012, Leuven, Belgium, 2012 で説明されている。当該論文で定められているように、（デジタルシールディングとも呼ばれる）アクティブシールドは、ビットのランダムシーケンスをＩＣの最上層に導入して、ランダムシーケンスが前記層に埋め込まれた金属接続を通って伝送された後に、もとのまま届いたかチェックすることを含む。アクティブシールディングは、プロ−ビングアタックを防ぐように設計されているが、それ自体がプロ−ビングアタック又は集束イオンビームマニピュレーションの対象となり得るエラー信号をしばしば生成する。エラー信号の数を拡張する実装が存在するが、そのような実装は単に攻撃者を減速させるだけであり、かかる攻撃を不可能にすることはできない。
【００２３】
それゆえに本明細書によれば、集積回路は、第１の層に存在するアクティブシールドと、第２の層に存在する少なくとも１つのセキュリティクリティカルコンポーネントとを備え、セキュリティクリティカルコンポーネントは、セキュリティクリティカルコンポーネントの少なくとも一部へのアクセスを可能とするアクセスキーを生成するように構成され、アクセスキーはアクティブシールドの出力値に基づく。したがって、アクティブシールドの出力を用いてセキュリティクリティカルコンポーネントの一部へアクセスすることによって、アクティブシールドがバイパスされるリスクが軽減される。その結果、攻撃によりシールドが損傷している場合に、セキュリティクリティカルコンポーネントの当該部分にアクセスすることができず、この損傷の結果誤ったアクセスキーが生成されるため、アクティブシールドの出力を処理する試みは無駄になる。
【００２４】
１つ以上の実施形態では、セキュリティクリティカルコンポーネントが、アクセスキーを用いて、セキュリティクリティカルコンポーネントに含まれる記憶装置のコンテンツへのアクセスを可能にするように更に構成される。この構成は、機密データを格納して保護すべきである場合に有用である。アクセスキーは例えば、記憶装置のコンテンツへのアクセスを可能にする、パスワード又は他のコードを含むことができる。代わりに又はそれに加えて、アクセスキーは、記憶装置に格納されたコンテンツを復号するために、例えば前記機密データを復号するために、使用することができる暗号鍵を含むことができる。したがって、１つ以上の実施形態では、記憶装置のコンテンツは暗号化されており、アクセスキーは前記暗号化されたコンテンツを復号するための復号鍵を含む。これにより、上述した攻撃に対して特に強力な保護をもたらすことができる。
【００２５】
図３は、集積回路の実施形態を説明するブロック図３００を示す。集積回路は、アクティブシールド１０８と、セキュリティクリティカルＩＣコンポーネント１０６とを備える。ＩＣコンポーネント１０６は、キーストア３０２と、暗号化されたメモリ３０４（すなわち暗号化されたコンテンツを含むメモリ）と、暗号化されたメモリ３０４に動作可能に接続されたメモリ暗号化ブロック３０６と、メモリ暗号化ブロック３０６に動作可能に接続された中央処理装置３０８とを備える。さらに、ＩＣコンポーネント１０６は、排他的論理和演算を行うＸＯＲゲート３１０を備える。また、ＩＣコンポーネント１０６は、シールドコントローラ２０２と、真性ランダムビットをシールドコントローラ２０２に提供するように構成される真性乱数発生器３１２とを備える。シールドコントローラ２０２は、図４及び６を参照して以下より詳細に説明するように、この真性ランダムビットを使用して、アクティブシールド１０８に提供される入力値をマスクすることができるとともにアクティブシールド１０８の出力値をアンマスクすることができる。
【００２６】
アクティブシールド１０８は、データ入力及びデータ出力を持つ。シールド１０８の導電線が損傷されない限り、出力値を、入力値の決定論的マッピング（“shield_map”と表す）とみなすことができる。言い換えれば、導電線が損なわれていない限り、この導電線を通って伝送される入力値は、予測できる出力値を生み出す。出力値のサイズを、要求される復号鍵のサイズに合わせることができる。あるいは、必要に応じて、圧縮関数又はハッシュ関数を用いて出力値のサイズを復号鍵のサイズへ減少させることができる。メモリ暗号化ブロック３０６は、暗号鍵を用いてメモリ３０４のコンテンツを暗号化するとともに、対応する復号鍵を用いてメモリ３０４のコンテンツを復号するように構成されることができる。さらに、復号鍵を暗号鍵と同じものとすることができる。データ“shield_seed”（ＩＣ製造時に一度だけ生成される乱数、すなわち固定の乱数シード値）及び“key_share0”（ＩＣ製造時に一度だけ生成される他の乱数、すなわち他の固定の乱数シード値）を、キーストア３０２に永久に格納することができる。メモリ暗号化ブロック３０６を、中央処理装置３０８によって制御することができる。
【００２７】
動作時に、アクティブシールド１０８は、key_share1 = shield_map (shield_seed) を出力することができる。続いて、メモリ暗号化ブロック３０６は、メモリ３０４のコンテンツを復号するために、この出力に基づく復号鍵を使用することができる。任意に、アクティブシールド１０８の出力を、排他的論理和演算の対象にすることができる。したがって、メモリ暗号化ブロック３０６は、以下の復号鍵“mem_key = key_share0 XOR key_share1”を使用することができる。アクティブシールド１０８が損傷している場合、アクティブシールド１０８の出力“key_share1” が誤って計算され、それゆえに複号鍵 “mem_key” も同じく不正確なものとなる。その結果、攻撃者は内部信号を探ることはできるかもしれないが、メモリ３０４のコンテンツが誤って復号されているため、この内部信号は無意味なものである。
【００２８】
なお、キーストア３０２及び暗号化されたメモリ３０４をＩＣコンポーネント１０６の別個のブロックとして図示しているが、これらは実際には同一の物理的なメモリに存在することができる。このようにして、ＩＣの面積を削減することができる。例えば、この物理的なメモリの小さな面積をキーストア３０２として、キーストア３０２では暗号化を行わないようにすることができる。暗号化されたメモリコンテンツにアクセスするために、キーストア３０２のコンテンツを光読み取りによってアクセス可能とすることができるが、攻撃者もマッピング“shield_map” を知る必要がある。しかしながら、このマッピングはＩＣ製造者が極秘にする設計情報である。
【００２９】
このように、１つ以上の実施形態では、アクセスキー（例えば”mem_key”）が、アクティブシールドの出力値（例えば“key_share1”）に基づき、及び固定の乱数（例えば“key_share0”）に基づく。このようにして、アクセスキーはより複雑になり、その結果攻撃することがより困難になる。実用的かつ効率的な実装において、セキュリティクリティカルコンポーネントは、アクティブシールドの出力値及び前記固定の乱数に対して排他的論理和演算を行うことでアクセスキーを生成するように構成され得る。さらに、１つ以上の実施形態では、セキュリティクリティカルコンポーネントが、入力値をアクティブシールドに提供するように更に構成され、この入力値は固定の乱数シード値（例えば“shield_seed”）に基づく。このようにして、結果として生じるアクセスキーはより一層複雑になる。
【００３０】
図４は、１つ以上の実施形態に従い、アクティブシールドを制御できる手段を示すブロック図４００である。この場合もまた、アクティブシールド１０８は、ランダム信号を伝送する、ワイヤの高密度メッシュを備えることができる。ＩＣコンポーネントは、アクティブシールド１０８の入力２０４とアクティブシールド１０８の出力２０６とに接続されたシールドコントローラ４０２を含むことができる。シールドコントローラ４０２は、上述したランダム信号を生成することができ、導電線の損傷を検出するために当該信号の整合性をチェックすることができる。信号がランダムであるため、上述した決定論的マッピング（“shield_map”）を実装することは実際問題として困難となり得る。さらに、１つ以上の実施形態では、セキュリティクリティカルコンポーネントが、入力値をアクティブシールドに提供する前に、当該入力値を可変ランダム値でマスクするように更に構成される。さらに、１つ以上の実施形態では、セキュリティクリティカルコンポーネントが、この可変ランダム値を用いてアクティブシールドの出力値をアンマスクするように更に構成される。このようにして、上述した決定論的マッピングを損なわずに、アクティブシールド１０８の導電線を通って伝送される信号を十分にランダム化することができる。実用的かつ効率的な実装において、シールドコントローラ４０２は、入力値をマスクするとともに出力値をアンマスクするように構成される。例えば、図４に示すように、シールドコントローラ４０２は、入力値をマスクするように構成されたマスキングユニット４０４と、出力値をマスクするように構成されたアンマスキングユニット４０６とを備えることができる。
【００３１】
１つ以上の実施形態では、入力値をマスクするとともに出力値をアンマスクするために、ブールマスキングを使用することができる。これによって、単純だが効率的な実装を実現できる。例えば、”shield_map”アルゴリズムは、ビットを状態‘A’にすることを要求できる。それから、マスキングユニット４０４は、ランダムビット‘R’を生成するとともに関連するシールド線を ‘A’ XOR ‘R’ に設定することができる。シールド線の他端部では、アンマスキングユニット４０６が、‘R’が付いた状態の当該シールド線でXOR演算を行うことによって‘A’を取り出す。当業者は、例えばセキュリティのレベルを向上させたり全体の効率を向上させたりするために、マスキング及びアンマスキングを行うために他の方法を使用することができることを理解することができる。しかしながら、一般的に言えば、”shield_map”アルゴリズムの決定論的状態を、当該決定論的状態を取り戻すことができるように、可変乱数でマスクすることができると言える。また、マスク演算とアンマスク演算との間の中間データを、十分にランダムであるとみなすことができ、かつ、アクティブシールドが用いるシールド線又は任意の他の構造を駆動するのに適しているとみなすことができる。
【００３２】
図５は、アクティブシールド実装５００の実施形態を説明する図である。この例では、アクティブシールド実装５００は、複数のスライス５０４を備え、それぞれのスライス５０４は、一次関数を実装する。それぞれのスライス５０４は、組み合わせ論理及びメモリを含む第１の論理演算装置５１０と、組み合わせ論理及び任意的なメモリを含む第２の論理演算装置５１２とを備える。保護された領域の外、特にセキュリティクリティカルＩＣコンポーネント５０６の外に配置されたシールド線は、第１の論理演算装置５１０と第２の論理演算装置５１２との間でビットを伝送する。セキュリティクリティカルコンポーネント５０６に含まれるシールドコントローラ５０２は、シリアルデータ及び制御信号を第１のスライス（すなわち左のスライス）の第１の論理演算装置５１０へ提供するように構成される。さらに、シールドコントローラ５０２は、シリアルデータ及び任意的な制御信号を第１のスライスの第２の論理演算装置５１２へ提供するように構成される。動作時に、組み合わせ論理は、制御信号の制御下でシリアルデータの変換を行い、それによって上述した一次関数を実装する。中間データを、論理演算装置５１０、５１２に含まれるメモリに格納することができる。このように、アクティブシールドを、スライスにグループ分けすることができ、各スライスは同じ一次関数を実装することができる。シールドコントローラ５０２は第１のスライスを駆動することができ、スライスを通じてデータをシフトすることができ、この処理を、シフトレジスタが実行する処理と同様のものとみなすことができる。第１のスライスを除く各スライスは、前のスライスの出力を入力として受け入れる。シールドコントローラ５０２は、最後のスライス（右のスライス）の出力を受け、当該出力を用いて定められた種類のアクセスキーを生成する。当業者は、スライスの数を図示した数から変えることができることを理解できる。図５は単に、原理を説明するために少数のスライスを有する例を示したにすぎないことを強調する。スライスが実装する一次関数は、大きな数の中間値を生成するように、複数の入力ビットを受け入れることができる。一次関数を実装するスライスを使用することで、シールドコントローラの複雑さを減少させることができ、その結果アクティブシールドの実用的かつ効率的な実装を実現できる。
【００３３】
図６は、アクティブシールド実装のデータフロー６００の実施形態を説明する図である。この例では、データフロー６００は、図５を参照して説明したような一次関数を実装する複数のスライスに基づく（「一次スライス関数」とも呼ぶ）スライス関数を含むアクティブシールド６０８を包含する。データフローの他の全ての機能ブロックは、シールドコントローラに実装される。特に、これらの機能ブロックは、アクティブシールドの入力値及び出力値をそれぞれマスク及びアンマスクすることに関わる、一式の要素を含む。一式の要素とは、真性ランダムビットを入力として受け取るバッファ６１０と、バッファ６１０から入力を受け取る擬似乱数生成器６０２と、擬似乱数生成器６０２から入力を受け取るＸＯＲゲート６１８と、アクティブシールド６０８に含まれるスライス一次関数に対応し、擬似乱数生成器６０２から入力を受け取るスライス一次関数６１４と、スライス一次関数６１４及びアクティブシールド６０８から入力を受け取るＸＯＲゲート６２０と、である。さらに、データフロー６００は、シード値“shield_seed”を入力として受け取る他の擬似乱数生成器６０２と、スライス一次関数から提供された入力値の数を計数するＮビットカウンタ６０６と、擬似乱数生成器６０２から入力を受け取りＮビットカウンタ６０６を形成してＸＯＲゲート６１８に出力を送るＮビット暗号化機能６０４と、ＸＯＲゲート６２０から入力を受け取って出力値“key_share1”を出力として生み出すハッシュ関数６１６とを備える。
【００３４】
データフロー６００は、集積回路が改ざんされていないか判断するために、アクティブシールド６０８が損傷していないか効果的に試験するテスト手順の一部を構成することができる。１つのスライスに対するシリアルビットの数がＮであり、スライスの数がＭである場合、シングルパスを擬似乱数生成器６０２、６１２のＭステップとして定めることができる。さらに、スライスがラッチをメモリ要素として使用する場合には、単一のテストは 2N のパス又は 2N* 2 のパスを含むことができ、当該数のパスは、起こり得る全ての入力値がスライス関数に提供されることを確実にし、したがって全てのシールド線が損なわれていないことを保証する間、出力値“key_share1”を生み出すために必要な最低限の作業量を表す。それぞれのパスについて、擬似乱数生成器６０２、６１２はリセットされる（すなわち、それぞれのパスについて擬似乱数生成器６０２のシードがリロードされる）。それぞれのステップでは、擬似乱数生成器６０２、６１２は新たなランダム値を生み出し、擬似乱数生成器６０２、６１２は各スライスに対してかかる新たな乱数を生み出す。各テストについてＮビットカウンタは初期値にリセットされ、各パスで（パスカウンタとも呼ぶことができる）Ｎビットカウンタ６０６は新たな値を生み出す（すなわち、Ｎビットカウンタ６０６がインクリメントされる）。アクティブシールド６０８は、シリアルデータ入力と、シリアルデータ出力とを有し、アクティブシールド６０８をＭ段のシフトレジスタとみなすことができる。この各段は、Ｎ個の変換されたビットを次のスライスへシフトするように構成されるスライスを含む。バッファ６１０と、擬似乱数生成器６１２と、スライス関数６１４とは、シード値“shield_seed”に関する任意のデータに対しては動作せず、真性ランダムデータのみに対して動作する。アクティブシールド６０８に対する入力値をマスクするとともにアクティブシールド６０８の出力値をアンマスクするために、バッファ６１０と、擬似乱数生成器６１２と、スライス関数６１４とを使用する。Ｎビット暗号化機能６０４を使用して、シード値“shield_seed”に応じたカウンタ値に変化を与える。Ｎビット暗号化機能６０４は、アクティブシールド６０８に対して決定論的入力を出力する。この決定論的入力は、擬似乱数生成器６１２の出力によってＸＯＲゲート６１８でマスクされる。したがって、ＸＯＲゲート６１８はアクティブシールド６０８に対してランダム入力を出力する。同様に、アクティブシールド６０８の出力はランダムでありＸＯＲゲート６２０でアンマスクされる。したがって、ＸＯＲゲート６２０は、ハッシュ関数６１６に対して決定論的入力を出力する。
【００３５】
さらに、１つ以上の実施形態では、セキュリティクリティカルコンポーネントに対するアクセスが無効である場合に、セキュリティクリティカルコンポーネントはエラー信号を生成するように更に構成される。上述したように、アクティブシールド１０８が損傷している場合には、メモリ３０４のコンテンツは誤って復号される。しかしながら、誤り通知が無いときには、システムの挙動を予測することが困難となり得る。したがって、セキュリティクリティカルコンポーネント１０６は例えば、ＩＣ外部の装置へ出力されるエラー信号を生成することができる。決定論的エラー信号が望まれる場合、システムは、周知の値が格納された、暗号化されたメモリ３０４の特定の位置で読み取りを行うことができる。値が十分に広汎である場合、例えば値が１２８ビットである場合、誤った復号鍵によって期待された値を得ることができる確率は無視できる程小さい。他のアプローチは、”mem_key”に対する巡回冗長符号（ＣＲＣ）を算出して、巡回冗長符号をキーストア３０２に格納された期待される値と比較することである。
【００３６】
本明細書で説明した機能ブロック及び方法の少なくとも一部を、１つ以上のコンピュータプログラムで具体化することができる。１つ以上のコンピュータプログラムは、単一のコンピュータシステムに又は複数のコンピュータシステムにわたって、様々な形態で活性及び不活性で存在することができる。例えばコンピュータプログラムは、本明細書に記載されたステップのいくつかを実施するための、ソースコード、オブジェクトコード、実行可能コード又は他のフォーマットのプログラム命令で構成されるソフトウェアプログラムとして存在することができる。上述したもののいずれかを、コンピュータが読取可能な媒体に具現化することができ、当該媒体は、圧縮形態又は非圧縮形態の、記憶装置及び信号を備えることができる。
【００３７】
本明細書で使用されるように、用語「プロセッサ」又は「処理装置」は、マイクロプロセッサ、コプロセッサ、マイクロコントローラ、マイクロコンピュータ、中央処理装置、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プログラマブル論理回路及び／又はメモリに格納された動作指示に基づいて（アナログ又はデジタルの）信号を処理する任意の回路とすることができる、データ処理回路を指す。用語「記憶装置」又は「メモリ」は、読取専用メモリ、ランダムアクセスメモリ、揮発性メモリ、不揮発性メモリ、スタティックメモリ、ダイナミックメモリ、フラッシュメモリ、キャッシュメモリ及び／又はデジタル情報を格納する任意の回路等の、１つ以上の記憶回路を指す。
【００３８】
本明細書で使用されるように、「コンピュータが読取可能な媒体」又は「記憶媒体」を、命令実行システム、機器又は装置が使用する又はこれに接続された、コンピュータプログラムを含む、格納する、伝える、伝達する若しくは伝送する任意の手段とすることができる。コンピュータが読取可能な媒体は、例えば電子的、磁気的、光学的、電磁気的、赤外的又は半導体の、システム、機器、装置又は伝達媒体であるが、これらに限定されるものではない。コンピュータが読取可能な媒体のより具体的な例（非包括的なリスト）には、一本以上のワイヤを含む電気的接続、ポータブルコンピュータのディスケット、ランダムアクセスメモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）、消去可能プログラマブルＲＯＭ（ＥＰＲＯＭ又はフラッシュメモリ）、光ファイバ及びポータブル読取専用コンパクトディスク（ＣＤＲＯＭ）等を含めることができる。
【００３９】
なお、上述した実施形態は様々な主題と関連する。特に、ある実施形態を方法の発明の請求項に関連させて説明してきた一方、他の実施形態を装置の発明の請求項に関連させて説明してきた。しかしながら、当業者は、他の箇所で示していない限り、ある種類の主題に属する構成の任意の組み合わせに加えて、上述した構成から、異なる主題に関する構成の任意の組み合わせを集めることもできる。特に、方法の発明の構成と装置の発明の構成とを組み合わせることが、本明細書に記載されているとみなされる。
【００４０】
なお、図面は概略図である。異なる図面において、類似する又は同一の構成要素には、同じ引用符号を付けている。なお、具体的な実施形態を簡潔に説明するために、当業者の慣行に含まれる実装の詳細については説明していない。当然のことながら、かかる任意の実装の開発において、任意のエンジニアリング又は設計プロジェクトで該当するように、開発者の特定の目的に到達するため、実装ごとに異なり得る、システム関連のコンプライアンス又はビジネス関連の制約等の実装固有の多数の決定を行わなければならない。さらに当然のことながら、このような開発の努力は煩雑であり時間がかかるものであるが、当業者にとっては設計、製造及び生産の日常的作業であろう。
【００４１】
なお、当業者は、添付された特許請求の範囲から離れることなく多数の代替的な実施形態を設計することができるであろう。特許請求の範囲において、丸括弧で囲まれた任意の引用符号は限定するものとして解釈されるべきではない。用語「備える」又は「備えている」は、特許請求の範囲で列挙されたもの以外の構成要素又はステップの存在を除外するものではない。ある構成要素の前の用語「１つの」又は「１個の」は、複数のかかる構成要素の存在を除外するものではない。特許請求の範囲に記載された手段を、いくつかの別個の要素を備えるハードウェア及び／又は適切にプログラミングされたプロセッサを用いて実装することができる。いくつかの手段を列挙する装置の発明の請求項では、これらの手段のいくつかを１つまたは同一の項目のハードウェアで具体化することができる。ある手段同士が互いに異なる従属項に記載されているという事実をもって、これらの手段の組み合わせに効果がないということを示すものではない。
【符号の説明】
【００４２】
100    集積回路
102    最上層
104    下層
106    ＩＣコンポーネント
108    アクティブシールド
200    ブロック図
202    シールドコントローラ
204    シールドの入力
206    シールドの出力
300    ブロック図
302    キーストア
304    暗号化されたメモリ
306    メモリ暗号化ブロック
308    中央処理装置
310    ＸＯＲゲート
312    真性乱数生成器
400    ブロック図
402    シールドコントローラ
404    マスキングユニット
406    アンマスキングユニット
500    アクティブシールド実装
502    シールドコントローラ
504    スライス
506    ＩＣコンポーネント
508    アクティブシールド
510    組み合わせ論理及びメモリ
512    組み合わせ論理及び任意的なメモリ
600    アクティブシールド実装データフロー
602    擬似乱数生成器
604    Ｎビット暗号化
606    Ｎビットカウンタ
608    スライス一次関数を含むアクティブシールド
610    バッファ
612    擬似乱数生成器
614    スライス一次関数
616    ハッシュ関数
618    ＸＯＲゲート
620    ＸＯＲゲート
【図１】
0006792970.tif 000002
【図２】
0006792970.tif 000003
【図３】
0006792970.tif 000004
【図４】
0006792970.tif 000005
【図５】
0006792970.tif 000006
【図６】
0006792970.tif 000007