(57)【要約】  一意特性を有するチップの製造に関する方法およびシステムが開示される。ランダムビットベクトルは、チップ上のハードウェア乱数生成器を使用して、またはハードウェアコンポーネントが製造されるときに「オンザフライ」で生成される。生成されたランダムビットベクトルは、チップのワンタイムプログラマブルメモリに格納される。チップ内で、チップのワンタイムプログラマブルメモリにプログラムされたランダムビットベクトルから値が導出される。導出された値は、セキュリティアプリケーションプロバイダが、チップのワンタイムプログラマブルメモリにプログラムされたランダムビットベクトルに基づいて鍵を使用して、チップによって復号可能なメッセージを暗号化することを可能にするためにチップに通信可能に接続された外部受信モジュールにエクスポートされる。
2014509812.tif 000002
【特許請求の範囲】
【請求項１】
ダイを含むチップの鍵を確立するための方法であって、
前記チップ内のワンタイムプログラマブルメモリに通信可能に接続されたハードウェア乱数生成器から、一連のランダムビットを受信するステップであって、前記一連のランダムビットがランダムビットベクトルを形成する、ステップと、
前記ランダムビットベクトルを前記チップの前記ワンタイムプログラマブルメモリに格納するステップであって、前記チップの前記鍵が前記ランダムビットベクトルに基づく、ステップと
を含む、方法。
【請求項２】
前記ランダムビットベクトルを格納するステップに応答して、前記チップ上の導出モジュールを使用して、前記チップの前記ワンタイムプログラマブルメモリに格納された前記ランダムビットベクトルから値を導出して、導出された値を生成するステップと、
セキュリティアプリケーションプロバイダが、前記チップの前記ワンタイムプログラマブルメモリに格納された前記ランダムビットベクトルに基づいて鍵を使用して前記チップによって復号可能なメッセージを暗号化することを可能にするために、前記導出された値を、前記チップに通信可能に接続された外部受信モジュールにエクスポートするステップと
を含む、請求項1に記載の方法。
【請求項３】
前記チップの前記ワンタイムプログラマブルメモリに格納された前記ランダムビットベクトルから前記値を導出して、導出された値を生成するステップが、
前記チップ上の読出し専用メモリから前記セキュリティアプリケーションプロバイダに関連付けられる公開鍵を読み出すステップと、
前記チップ内で、前記公開鍵を使用して、前記ワンタイムプログラマブルメモリに格納された前記ランダムビットベクトルを暗号化するステップであって、前記導出された値が前記暗号化されたランダムビットベクトルに基づく、ステップと
を含む、請求項2に記載の方法。
【請求項４】
前記チップの前記ワンタイムプログラマブルメモリに格納された前記ランダムビットベクトルから前記値を導出して、導出された値を生成するステップが、
前記ワンタイムプログラマブルメモリに格納された前記ランダムビットベクトルを、前記チップ上の擬似乱数生成器に提供して、前記ランダムビットベクトルよりも長いビット長を有する拡大鍵を生成するステップと、
前記チップ上の読出し専用メモリから、前記セキュリティアプリケーションプロバイダに関連付けられる公開鍵を読み出すステップと、
前記チップ内で、前記公開鍵を使用して前記拡大鍵を暗号化するステップであって、前記導出された値が前記暗号化された拡大鍵に基づく、ステップと
を含む、請求項2に記載の方法。
【請求項５】
前記チップ上の前記読出し専用メモリが、マスク読出し専用メモリおよびワンタイムプログラマブル読出し専用メモリのうちの少なくとも1つである、請求項3または4に記載の方法。
【請求項６】
前記チップの前記ワンタイムプログラマブルメモリに格納された前記ランダムビットベクトルから前記値を導出して、導出された値を生成するステップが、
前記チップ内の公開鍵生成器を使用して、前記ランダムビットベクトルを秘密鍵として使用して、前記ワンタイムプログラマブル読出し専用メモリに格納された前記ランダムビットベクトルから公開鍵を生成するステップであって、前記導出された値が前記公開鍵に少なくとも部分的に基づく、ステップ
を含む、請求項2に記載の方法。
【請求項７】
前記チップの前記ワンタイムプログラマブルメモリに格納された前記ランダムビットベクトルから前記値を導出して、導出された値を生成するステップが、
前記ワンタイムプログラマブルメモリに格納された前記ランダムビットベクトルを、前記チップ上の擬似乱数生成器に提供して、前記ランダムビットベクトルよりも長いビット長を有する秘密鍵を生成ステップと、
前記チップ上の公開鍵生成器を使用して、前記生成された秘密鍵に対応する公開鍵を生成するステップであって、前記導出された値が前記公開鍵に部分的に基づく、ステップと
を含む、請求項2に記載の方法。
【請求項８】
前記公開鍵を生成するステップが、楕円曲線暗号方式またはエルガマル暗号方式の鍵生成方法を使用するステップを含む、請求項6または7に記載の方法。
【請求項９】
前記チップの前記ワンタイムプログラマブルメモリに格納された前記ランダムビットベクトルから前記値を導出して、導出された値を生成するステップが、
前記チップ内で、前記チップに関連付けられる対称署名鍵を使用して前記暗号化されたランダムビットベクトルに認証された暗号化を実行して、認証された鍵を生成するステップであって、前記導出された値が前記認証された鍵に基づく、ステップ
をさらに含む、請求項3から5のいずれか一項に記載の方法。
【請求項１０】
前記チップの前記ワンタイムプログラマブルメモリに格納された前記ランダムビットベクトルから前記値を導出して、導出された値を生成するステップが、
前記チップ内で、前記チップに関連付けられる対称署名鍵を使用して前記生成された公開鍵に認証された暗号化を実行して、認証された鍵を生成するステップであって、前記導出された値が前記認証された鍵に基づく、ステップ
をさらに含む、請求項6から8のいずれか一項に記載の方法。
【請求項１１】
前記認証された公開鍵が暗号化されたデータおよび認証タグを含み、前記暗号化されたデータおよび前記認証タグは、それぞれ前記チップに関連付けられる前記対称署名鍵を有する前記セキュリティアプリケーションプロバイダによって復号可能かつ検証可能である、請求項9または10に記載の方法。
【請求項１２】
前記ハードウェア乱数生成器から前記生成された一連のランダムビットが、ダイ検査機の検査プローブを介して前記チップの前記ダイに通信可能に提供され、前記ハードウェア乱数生成器が前記チップの外部にある、請求項1から11のいずれか一項に記載の方法。
【請求項１３】
前記ハードウェア乱数生成器が前記チップの一部である、請求項1から11のいずれか一項に記載の方法。
【請求項１４】
前記ハードウェア乱数生成器が、前記チップの前記ダイの検査中に前記一連のランダムビットを生成する、請求項1から13のいずれか一項に記載の方法。
【請求項１５】
前記ハードウェア乱数生成器が、前記セキュリティアプリケーションプロバイダからの要求に応答して前記一連のランダムビットを生成するためにアクティブ化される、請求項1から13のいずれか一項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、デバイス向けに一意の鍵を確立することに関する。詳細には、必ずしもそうとは限らないが、本開示は、製造プロセス中に一意の鍵を確立するための方法、前記方法を使用して製造されるデバイスに関する。
【背景技術】
【０００２】
セキュリティアプリケーションは、チップ内部のハードウェア回路を使用して実装された暗号機能とデータ構造の恩恵を受けることが多い。これらを実装することにより、攻撃者が、暗号機能の動作および関連するデータ構造を観察する、またはそれに対して影響を及ぼすことを難しくする。いくつかのチップ実装形態(たとえば、スマートカード)では、暗号機能の動作を観察または変更することを目的とする攻撃からチップを保護するために、さらなる技術的手段が提供される。チップはまた、モバイル電話、TVセット、PC、またはタブレットPCなどの家庭用電子機器にも含まれうる。
【０００３】
セキュリティアプリケーションをサポートする家庭用電子機器の製造プロセスには、チップ製造業者、家庭用電子機器製造業者、およびセキュリティアプリケーションプロバイダが関わる。一般的に、セキュリティアプリケーションプロバイダは、暗号機能とデータ構造(セキュリティチップ)をサポートするチップを含む家庭用電子機器用のセキュリティアプリケーションを提供する。たとえば、スマートカードは、特定のセキュリティアプリケーションをサポートすることを意図する内蔵ハードウェア回路を有する特殊目的のチップ(マイクロチップ、または集積回路と呼ばれる)を含む。スマートカードのセキュリティアプリケーションの例には、GSM（登録商標）ネットワークへのアクセスを制御したり、有料TVサービスへの条件付きアクセスを制御したり、PCおよび建物などへのアクセスを可能にしたりする、無線アプリケーションがある。
【０００４】
スマートカードおよび他のタイプのセキュリティチップは、半導体チップの製造プロセスによって製造され、製造業者や半導体技術の間で著しく異なる場合がある。ハードウェアの製造プロセスは、少なくとも3つの段階を含む。
【０００５】
第1の段階(「ダイ製造」)で、ダイが、ダイまたはチップ製造業者によって製造される。この段階は、半導体材料のウエハー、または任意の適切な基板から始まる。マスク配列を使用する一連のリソグラフ処理において、様々な論理ブロック、メモリ構造、および他の半導体回路が作成される。メモリ構造は、読出し専用メモリ(ROM)、プログラム可能読出し専用メモリ(PROM)、再プログラム可能ROM(EEPROM、フラッシュ)、およびランダムアクセスメモリ(RAM)を含む。通常、ROMメモリは、いくつかの制御ソフトウェアプログラム、およびチップの商業ライフサイクル中に変更されないデータを備える。通常、単一のウエハーに、同じチップ回路の多数のコピーが含まれている。ウエハー処理の後、生成されたチップ回路は検査(たとえば、高速プロービング)されて、機能的な箇所と非機能的な箇所とに分類され、染料で印を付けられる。ウエハーは、いくつかの同一のダイに切断される。機能的なダイは、ダイが脆い場合があるので、さらなる処理を容易にするために他の材料(たとえば、プラスチックテープ)に実装されうる。
【０００６】
第2の段階(「チップ初期化」)で、チップの様々なコンポーネントをアクティブにできるように、および/または特定の用途のために、機能的なダイを備えるチップを初期化することができる。特徴の異なるセットは、チップの異なる用途に対してアクティブにすることができる。したがって、チップ上のいくつかのモジュールはアクティブになるものもあるが、アクティブにならないものもある。この処理は、非チップ特有の(しかし、アプリケーション特有の)データをロードするように構成された初期化マシンによって実行されうる。第2の段階は、チップ初期化処理の完全性を向上させるために、第1の段階を実行するエンティティと同じエンティティによって、おそらく同じ施設内でも実行されうる。
【０００７】
集中型システムは、チップ初期化に関わる様々な処理を調整するために、初期化手順を監視および制御することができる。検査および品質保証もこの時点で実行されてよい。さらに、チップのファームウェアがマスクプログラムROMに部分的に含まれるにすぎない場合があるため、この段階は、さらなるデータテーブルおよびさらなるプログラムコードを、ワンタイムプログラマブルメモリ(PROM)に記述できるようにする。このステップによって、ROMマスクを再設計せずに、チップに拡張や修正を行うことができるようになる。このステップの後、チップは特定用途をサポートするために初期化される。この段階には、特定用途のすべてのチップについて同じである初期化データのロードが含まれる。この段階の処理時間は比較的高速であり、チップあたりの検査の所要時間の量を減らすための努力がなされる。この段階で、チップが特定用途に適するようになる。
【０００８】
第3の段階(「チップ個別化」)で、チップが鍵および/または識別子で個別化され、セキュリティアプリケーションプロバイダが所望のセキュリティアプリケーションの鍵および/または識別子を使用できるようになる。チップごとに異なる他の個別化データも、この時点でロードすることができる。一般的に、鍵および/または識別子は、一意の鍵の事前に生成されたリストから来ており、チップ製造業者によって維持される。第3のチップ個別化段階は、第1および第2の段階を実行するエンティティと同じまたは異なるエンティティによって実行されうる。
【０００９】
一旦ダイが製造され、チップが初期化および個別化されると(すなわち、3つの製造段階)、最終的な顧客に出荷することができるように、他のチップと一体化して包装できるようにデバイスの製造者に提供されうる。
【００１０】
なお、ハードウェアの製造プロセスは、製造コストを最小限に抑えて製造効率を最大限にするために、グローバルデータ、アプリケーション特有データ、および個人データを(この順序で)分割して使用する。ハードウェアの製造プロセスの特殊化の増加によって、より専門的な処理を後の段階に残しながら、より簡単かつ高速な製造マシンを使用して、以前の段階をはるかに速い速度で行うことができるようになる。それぞれの製造段階の効率は、チップ製造コストに直接影響を及ぼす。
【００１１】
通常のセキュリティアプリケーションは、ハードウェアコンポーネントが一意に生成された鍵または鍵のセットを含むことを要求する場合がある。これによって、一意特性を持つハードウェアコンポーネントが作成される。これらの鍵は、通常、ハードウェア製造プロセスの第3の段階であるチップ個別化の間に、チップのPROMにロードされる。
【００１２】
セキュリティアプリケーションプロバイダの観点から、チップの製造は、製造プロセスの一部である複数のエンティティを信頼することを含みうる。通常、製造プロセスの各段階でより多くのエンティティが製造チェーンに追加される。製造プロセスにおいて、チップがより多くのエンティティを通過すると、エンティティのうちのいずれか1つの完全性が損なわれる可能性が高くなる場合がある。また、セキュリティアプリケーションプロバイダはより多くの当事者の完全性を検証する必要がある場合があり、そのため、セキュリティ方式により多くの弱点がもたらされてしまう。さらに、より多くのエンティティは、エンティティごとに監査処理を実施するためにコストを増加させる場合がある。
【発明の概要】
【発明が解決しようとする課題】
【００１３】
完全性が確認されなければならないエンティティの数を減らすために、また一意の鍵を有するチップの大量生産のための効率的な方法を提供するために、チップを製造するための改良された処理が必要とされている。
【００１４】
セキュリティアプリケーションプロバイダは、それらのチップやデバイスに暗号機能と関連付けられている保護されたデータを確実に確立するために、チップ製造およびCEデバイス製造における様々なステップに依存している。
【００１５】
ダイの製造は、半導体ウエハー上に所望のハードウェア回路を生成する。ダイは、セキュリティバックドアなしに製造されるべきである。セキュリティバックドアがある場合、そのようなバックドアは攻撃者が関連機密情報や暗号機能を入手または変更することを可能にし、セキュリティアプリケーションを脅かしてしまう。製造工程中にこのようなハードウェア回路の変更を挿入することは困難であるが、セキュリティアプリケーションにとっては深刻な攻撃である。
【００１６】
チップの初期化により、意図されたファームウェア、および他の初期化関数がロードされる。これは、どのようなセキュリティバックドアも導入することなく実施されるべきである。攻撃者が、隠れた方法をエクスポートできるように初期化データを変更したり、敵に秘密を漏らしたりすることができる場合、これは重大なセキュリティ侵害を形成するであろう。
【００１７】
チップの個別化は、初期化されたチップ内に一意の秘密鍵を確立する。この処理は、敵にそれらの秘密をエクスポートしたり、漏らしたりしてはならない。敵が一意の機密情報を取得するか変更することができると、セキュリティアプリケーションは深刻に侵害される。
【００１８】
家庭用電子(CE)機器の製造中に、さらなるファームウェアおよび機密コードが設置される場合がある。いくつかの潜在的なセキュリティ侵害は、この段階で発生する可能性がある。
【００１９】
したがって、セキュリティアプリケーションプロバイダは、製造プロセスがセキュリティ要件を満たしており、全体的な製造者連鎖中にセキュリティアプリケーションへの攻撃を防止することを立証するために、いくつかの製造ステップの完全性を検証する必要がある。
【００２０】
したがって、一意特性を有するチップの大量生産のための相対的効率を維持しながら、セキュリティアプリケーションへの攻撃を受ける可能性があるエンティティの数を減少させてチップ個別化を可能にする改善されたプロセスが必要とされている。
【課題を解決するための手段】
【００２１】
本開示は、改善されたハードウェア製造プロセスを記述する。いくつかの実施形態では、チップ個別化は、製造プロセスの早い段階(たとえば、第1の段階のダイ製造中に)で実行されうる。たとえば、一意の鍵(チップ個別化)のローディングは、ダイ製造段階中に実行されうる。ダイ製造中に、一意の鍵は、ダイの検査中にチップのPROMにロードされうる。一意の鍵の生成処理は、ダイの検査中に鍵のローディングを可能にするために十分に効率的である。特定の実施形態では、ダイ上にロードされた鍵からの派生鍵は、ダイ製造段階中にエクスポートされる。
【００２２】
改善された処理の一変形形態では、派生鍵が認証形式でエクスポートされる場合、派生鍵のエクスポートは、製造プロセスの後の段階で実行されうる。別の変形形態では、一意の鍵が生成されて、ダイ製造後の段階でエクスポートされうる。これらの変形形態では、派生鍵の認証によって、セキュリティアプリケーションプロバイダは、ダイ製造段階の間にダイ上に置かれた個別化回路から派生鍵が生じたことを確認できるようになる。プロセスの後の段階で鍵をエクスポートすることによって、ダイ製造中の個別化の効率は、従来のシステムと比較して実質的にハイレベルに維持される。
【００２３】
いくつかの実施形態では、ダイ製造を行うエンティティは、ダイ製造中にダイのPROMに複数のダイの署名鍵(すなわち、ひとまとまりのダイに対して同じでよい署名鍵)をロードしてもよい。派生鍵が製造プロセスのダイ製造段階の後にエクスポートされている場合、派生鍵は、ダイ製造中にロードされた署名鍵で署名されうる。署名鍵を使用して作成された署名は、派生鍵と共にエクスポートされうる。次いで、エクスポートされた署名は、派生鍵が実際にダイ製造ステップの間に作成された回路から生じたことを検証するために使用されうる。署名鍵の使用以外の他のメカニズム/方式は、エクスポートされた派生鍵の真正性を保証するために使用されうる。
【００２４】
ダイを含むチップの鍵を確立するための方法、および前記方法を実行するためのシステムを開示した。チップ内のワンタイムプログラマブルメモリに通信可能に接続されたハードウェア乱数生成器から、一連のランダムビットが受信され、前記一連のランダムビットがランダムビットベクトルを形成する。ランダムビットベクトルはチップのワンタイムプログラマブルメモリに格納され、チップの鍵はランダムビットベクトルに基づく。場合によっては、チップはパッケージ化されたダイである。
【００２５】
一実施形態では、ランダムビットベクトルを格納するステップに応答して、チップ上の導出モジュールを使用して、導出された値を生成するためにチップのワンタイムプログラマブルメモリに格納されたランダムビットベクトルから値が導出されうる。導出された値は、セキュリティアプリケーションプロバイダが、チップのワンタイムプログラマブルメモリに格納されたランダムビットベクトルに基づいて鍵を使用してチップによって復号可能なメッセージを暗号化することを可能にするために、チップに通信可能に接続された外部受信モジュールにエクスポートされうる。導出された値をエクスポートする機能は、ランダムビットベクトルまたは他の内部中間値よりもセキュリティセンシティブではない可能性があるが、これによって、セキュリティアプリケーションプロバイダなどの外部エンティティは、比較的安全な方法で特定のチップにメッセージを送信できるようになる。導出された値は、様々な方法で作成されうる。
【００２６】
いくつかの実施形態では、導出された値を生成するためにチップのワンタイムプログラマブルメモリに格納されたランダムビットベクトルから値を導出するステップは、チップ上の読出し専用メモリからセキュリティアプリケーションプロバイダに関連付けられる公開鍵を読み出すステップと、チップ内で、公開鍵を使用して、ワンタイムプログラマブルメモリに格納されたランダムビットベクトルを暗号化するステップであって、導出された値が暗号化されたランダムビットベクトルに基づくステップとを含む。この機能は、公開鍵に対応する秘密鍵を有する意図したセキュリティアプリケーションプロバイダだけが、暗号化されたランダムビットベクトルを復号できることを保証することを目的とする。
【００２７】
いくつかの実施形態では、導出された値を生成するためにチップのワンタイムプログラマブルメモリに格納されたランダムビットベクトルから値を導出するステップは、ランダムビットベクトルよりも長いビット長を有する拡大鍵を生成するために、ワンタイムプログラマブルメモリに格納されたランダムビットベクトルを、チップ上の擬似乱数生成器に提供するステップと、チップ上の読出し専用メモリから、セキュリティアプリケーションプロバイダに関連付けられる公開鍵を読み出すステップと、チップ内で、公開鍵を使用して拡大鍵を暗号化するステップであって、導出された値が暗号化された拡大鍵に基づくステップとを含む。拡大鍵を生成する拡大モジュールは、ワンタイムプログラマブルメモリ、またはマスク読出し専用メモリに一連の命令の一部として実装されうる。拡大モジュールは、チップの一部(安全なコア)としてハードウェアに実現されうる。拡大モジュールの機能は、ランダムビットベクトル(たとえば、ワンタイムプログラマブルメモリの使用量)を格納するために必要なメモリの量を低減することである。チップ上の読出し専用メモリは、マスク読出し専用メモリおよびワンタイムプログラマブル読出し専用メモリのうちの少なくとも1つでよい。
【００２８】
いくつかの実施形態では、導出された値を生成するためにチップのワンタイムプログラマブルメモリに格納されたランダムビットベクトルから値を導出するステップは、チップ内の公開鍵生成器を使用して、ランダムビットベクトルを秘密鍵として使用して、ワンタイムプログラマブル読出し専用メモリに格納されたランダムビットベクトルから公開鍵を生成するステップであって、導出された値が公開鍵に少なくとも部分的に基づくステップを含む。
【００２９】
いくつかの実施形態では、類似または同一の拡大モジュールを活用して、導出された値を生成するためにチップのワンタイムプログラマブルメモリに格納されたランダムビットベクトルから値を導出するステップは、ランダムビットベクトルよりも長いビット長を有する秘密鍵を生成するために、ワンタイムプログラマブルメモリに格納されたランダムビットベクトルをチップ上の擬似乱数生成器に提供するステップと、チップ上の公開鍵生成器を使用して、生成された秘密鍵に対応する公開鍵を生成するステップであって、導出された値が公開鍵に部分的に基づくステップとを含む。
【００３０】
チップ内で、秘密鍵からの公開鍵生成を効率的に行うことができることを保証するために、公開鍵を生成するために必要な鍵の大きさと時間の懸念を考慮することができる。いくつかの好ましい実施形態では、公開鍵は、楕円曲線暗号方式やエルガマル(ElGamal)暗号方式の鍵生成方法を使用して生成される。
【００３１】
導出された値の導出における公開鍵の生成、および他の同様の機構は、チップのワンタイムプログラマブル読出し専用メモリ内のファームウェアに実装されうる。
【００３２】
いくつかの変形形態では、エクスポートされた導出された値が本物であることを認証するために、導出された値を生成するために、チップのワンタイムプログラマブルメモリに格納されたランダムビットベクトルから値を導出するステップは、チップ内で、認証された鍵を生成するために、チップに関連付けられる対称署名鍵を使用して暗号化されたランダムビットベクトルに認証された暗号化を実行するステップであって、導出された値が認証された鍵に基づくステップをさらに備える。いくつかの変形形態では、導出された値を生成するために、チップのワンタイムプログラマブルメモリに格納されたランダムビットベクトルから値を導出するステップは、認証された鍵を生成するために、チップ内で、チップに関連付けられる対称署名鍵を使用して、生成された公開鍵に認証された暗号化を実行するステップであって、導出された値が認証された鍵に基づくステップをさらに備える。たとえば、認証された公開鍵は暗号化されたデータおよび認証タグを含み、暗号化されたデータおよび認証タグは、それぞれチップに関連付けられる対称署名鍵を有するセキュリティアプリケーションプロバイダによって復号可能かつ検証可能である。
【００３３】
いくつかの実施形態では、ハードウェア乱数生成器から生成された一連のランダムビットは、ダイ検査機の検査プローブを介してチップのダイに通信可能に提供され、ハードウェア乱数生成器はチップの外部にある。ダイ検査機は、ダイ製造中に、様々な回路や、チップのダイの回路への入力値を検査するように構成されたシステムでもよい。ダイ検査機は、検査プローブを含みうる。他のいくつかの実施形態では、ハードウェア乱数生成器はチップの一部である。さらにいくつかの実施形態では、ハードウェア乱数生成器は、チップのダイの検査中に一連のランダムビットを生成する。いくつかの状況では、ハードウェア乱数生成器は、セキュリティアプリケーションプロバイダからの要求に応答して一連のランダムビットを生成するためにアクティブ化される。たとえば、セキュリティアプリケーションプロバイダは、チップが家庭用電子機器と統合される際に導出された値のエクスポートを要求することができる。エクスポートされた導出された値は、エクスポートされた値をチップの一意特性を担当するダイ内の回路に戻って追跡できるように、認証タグを含むことが好ましい。
【００３４】
本開示は例示的な例としてチップや家庭用電子機器を使用するが、当業者は、本方法および装置は、一意の鍵を必要とする他のタイプのハードウェアデバイスのために使用されうることが理解できるであろう。
【００３５】
以下で、本発明の実施形態をさらに詳細に説明する。これは、任意の1つの実施形態に関連して説明した任意の特徴は、単独で、または説明した他の特徴と組み合わせて使用することができ、また他の任意の実施形態の1つまたは複数の特徴と組み合わせて、または他の任意の実施形態のあらゆる組合せで使用することもできることが理解されるべきである。さらに、上述していない均等物および修正形態も、添付の特許請求の範囲に定義される本発明の範囲から逸脱することなしに使用できる。開示された実施形態は、本発明の保護の範囲を限定するものとして解釈されるべきでないことが理解されるべきである。
【００３６】
本発明の態様を、図面に示される例示的実施形態を参照してより詳細に説明する。
【図面の簡単な説明】
【００３７】
【図１】チップの一意の鍵を使用するための例示的方式を示す図である。
【図２】チップの一意の鍵を使用するための、他の例示的方式を示す図である。
【図３】改善された方式を使用して、対称的な一意の鍵で個別化された、例示的なチップを示す図である。
【図４】他の改善された方式を使用して、非対称的な一意の1組の鍵の個別化された、他の例示的なチップを示す図である
【図５】ハードウェアコンポーネントにおいて一意特性を確立するための例示的方法を示す図である。
【図６】ハードウェアコンポーネントにおいて一意特性を確立するための、他の例示的方法を示す図である。
【発明を実施するための形態】
【００３８】
チップ個別化段階では、チップ製造業者は、チップのワンタイムプログラマブル読出し専用メモリに一意の値をプログラミングすることによってデバイスに一意の鍵をロードすることができる。一意の値を一意に生成することができる。一意の鍵は、少なくともワンタイムプログラマブル読出し専用メモリにプログラムされた一意の値に基づく。一意の鍵は秘密に保持され、秘密鍵または秘密モジュール鍵と呼ばれうる。一意の鍵の一意の値のリストは、チップ製造業者によって生成および維持されうる。一意の鍵は、チップの一意の識別データに関連付けられている。一意の鍵とチップの一意の識別子とのこの関連付けは、チップ製造者によって維持されうる。
【００３９】
図1の例に見られるように、チップ製造業者は、モジュール識別子(MID)と共に、チップのワンタイムプログラマブル読出し専用メモリ(モジュールとして示されている)にセキュアモジュール鍵(SMK)をプログラムする。それに応じて、チップ製造業者は、プログラムしたチップごとに<MID,SMK>ペアのリストを維持する。ペアのリストは秘密に保持される(それらのチップを使用するセキュリティアプリケーションプロバイダだけに知られていることが好ましい)。次いで、セキュリティアプリケーションプロバイダは、チップのMIDに対応するSMKでモジュールロード鍵(MLK)を暗号化できるように、<MID,SMK>ペアのリストを受信する。MLKは、さらなる鍵をロードするためのセッション鍵として使用されうる。さらなる鍵の例は、ブロードキャスト設定で使用される制御ワードである。
【００４０】
他の例では、チップ製造業者は、公開暗号鍵のペアの秘密鍵と、チップに関連付けられるMIDとで、ワンタイムプログラマブル読出し専用メモリをプログラムできる。公開鍵暗号によって、MIDと公開暗号鍵のペアの公開鍵とが公開できるようになり、チップについての公開されている情報によって、セキュリティアプリケーションプロバイダは、チップとの安全な通信を確立することができるようになる。チップ製造業者は、鍵のペアのリストを生成するか、それをセキュリティアプリケーションプロバイダから受け取る。チップ製造業者は、鍵のペアの秘密鍵と、関連付けられるMIDとをチップの上にロードする。秘密鍵がロードされた後、チップ製造業者は、秘密鍵を削除して、関連付けられる公開鍵とMIDとを公開することができる。セキュリティアプリケーションプロバイダは、チップと通信するために、対応する公開鍵を使用する。
【００４１】
図2の例に見られるように、チップ(モジュールとして示されている)は秘密モジュール鍵(SMK)と対応するMID(図示せず)とを有する。前記SMKは、このチップ用の公開鍵ペアの秘密鍵として機能する。たとえばセキュリティアプリケーションプロバイダによって、対応するMIDに関連付けられる公開鍵を使用して、チップ内に他の鍵をロードすることができる。一実施形態では、セキュリティアプリケーションプロバイダは、鍵ローディングメッセージ(KLM)とセキュリティアプリケーションプロバイダに関連付けられる署名検証鍵(SVK)とをチップに送信する。チップは、「V」モジュールを使用して、SVKを使用するKLM内の署名を検証して(真正性のために)、「D」モジュールを使用して、SMKを使用するKLMの内容を復号する(機密性を確保する)。SVKおよび復号された鍵は、さらなる鍵(「K」として見られる)を生成するために、ハッシュ関数(H)に入力として提供される。前記生成された鍵は、ソフトウェアアプリケーションによって提供されるチャレンジへの応答を生成するために、暗号モジュールCMで使用されうる。他の実施形態では、ブロードキャスト設定で制御ワードを転送するために図2に見られる同じ鍵転送プロトコルが使用されうる。
【００４２】
チップ製造業者が鍵をロードする代わりに、いくつかのチップは、一意のRSA公開鍵暗号鍵ペアを生成するために暗号コプロセッサを使用する。暗号化コプロセッサは、チップの外部にあってもよい。しかし、RSA鍵のペアの生成にはかなりの処理時間が必要である。このため、RSA鍵ペアの生成は、ハードウェア製造のハイスループット段階の間には使用されていない。むしろ、RSA鍵ペアの生成は、チップが特定の家庭用電子機器用に個別化/パッケージ化される、後の段階で使用されうる。
【００４３】
例示の目的で、例示的なRSA鍵生成方法について説明する。典型的には、RSA鍵の生成は2つのランダムな大きい奇数番号を生成するために確率モジュールを使用して、それらが素数であるかを確認するために検査する。素数ではない場合、2つの新しいランダムな大きい奇数番号が再び生成されて、数字の両方が素数になるまでプロセスが継続する。たとえば、RSA鍵生成は、4096ビットの鍵ペアを生成するために実行するために、3〜7秒かかることがある。RSA鍵生成の遅さに起因して、チップ製造の初期段階でRSA鍵を生成することが、ハードウェア製造プロセスの製造効率やスループットを大幅に低下させることがある。その結果、チップを個別化するためにRSA鍵生成モジュールが使用される場合、チップが製造された後、特定の家庭用電子機器用にパッケージ化されているときに行われる。
【００４４】
図1および図2に見られるようなシステムを改良するために、一意の鍵を確立するための代替方法を記述する。代替方法は、一意の鍵のリストを追跡するために、ならびに一意特性を有するチップの大量生産のための効率的な方法を提供できるようにするために、チップ製造者にはあまり頼らない。
【００４５】
図1および図2に示されるあまり好ましくない方法では、チップ製造業者は、ハードウェア製造プロセスのチップ個別化段階で、それぞれのチップの一意の鍵についての一意の秘密の値をロードする(たとえば、ワンタイムプログラマブル読出し専用メモリに)。前記鍵のローディングは、製造業者が一意の鍵の知識を持っていることを必要とする。したがって、チップ製造業者(または、より正確には、チップのPROMに一意の鍵をプログラミングするエンティティ)がセキュリティアプリケーションの重要な側面となる。
【００４６】
大規模な鍵盗難攻撃に対して脆弱である、事前生成された一意の値のリスト(通常は中央データベースに格納されている)からチップ上に一意の鍵をロードするために、チップ製造業者に依存するよりも、一意の番号を内部的に生成するためにチップ内のハードウェア乱数生成器が使用されうる。いくつかの実施形態では、ハードウェア乱数生成器はダイの外部にあるが、ダイ製作の検査/調査部分の間に、検査プローブを介してダイに通信可能に接続されている。乱数生成器によって生成される一意の番号が、チップの一意の鍵を決定するために使用される。前記一意の数はチップ自体に固有であり、ハードウェア乱数生成器はチップ内の一意特性を提供する。ある意味では、セキュリティアプリケーションプロバイダが、ハードウェアコンポーネントへロードされる中央データベースに事前に生成された値のリストを提供しなくてもいいように、ハードウェア乱数生成器によって、一意の値を「オンザフライ」で生成することができるようになる。
【００４７】
好ましい実施形態では、乱数生成器は、ランダムビットベクトルを生成するために使用されるランダムビット生成器(RBG)を備える。RBGは、チップ内で生成されたランダムビットベクトル(一意の鍵として使用するための)に基づいて一意の鍵の生成を可能にするために、チップ内の乱数の物理的ソースを増幅する。このようにして、チップの一意特性が保存される。その後、生成されたランダムビットベクトルは、格納するためにワンタイムプログラマブル読出し専用メモリに提供される。生成された一意のビットベクトルが、ワンタイムプログラマブル読出し専用メモリに格納/プログラムされる。記憶されているランダムビットベクトルから、値を導出することができる。次いで、格納されたランダムビットベクトルが派生鍵値の形式で外部エンティティにエクスポートされる。派生鍵のエクスポートは、特定のチップを一意にターゲットにする、さらなるメッセージの(後の)生成を可能にする(すなわち、さらなるメッセージは、ワンタイムプログラマブル読出し専用メモリに格納されたランダムビットベクトルに基づく一意の鍵を使用して復号可能である)。
【００４８】
一意の鍵の基礎を形成する一意の値が生成されて、チップの内部にプログラム/格納されるため、ダイ製造プロセスはすべてのダイに共通である。チップごとにハードウェア製造プロセスを変えて、リストまたは一意の値からチップごとに異なる一意の鍵を生成およびロードする必要が避けられる。また、一意特性を有効にする回路はすべてのダイ間で同じであるため、製造プロセスの効率がハイレベルに維持される。
【００４９】
したがって、好ましい実施形態は、チップの一意特性を維持しながら効率的な製造プロセスを可能にする。チップ製造業者は事前に生成された秘密鍵のリストをもはや保持せず、機密の盗難はもはや関心事ではなくなる。一意の鍵の初期化は、チップ内で、またはダイ製造中に「オンザフライ」で行われるので、システムのセキュリティが向上する。
【００５０】
ハードウェア製造プロセスのダイ製造段階の間、回路およびマスクROMがその設計トポロジによって定義され、チップを製造するために使用される一連の製造マスクで表される。ハードウェア製造プロセスの後半に向かって、ある固定チップ機能とワンタイムプログラマブル読出し専用メモリがアクティブ化および初期化される。チップの特定の用途に応じて、製造されたチップ上のアクティブな意図された回路のセットだけを残して一部の機能が無効になる。次いでチップは、チップと家庭用電子機器との統合、およびチップの個別化を担当する機器製造業者でありうる顧客に出荷される。
【００５１】
概して言えば、本開示は、チップが一意特性を有することを可能にするための改善された方法に関する。本方法によって、事前に生成された一意の値のリストを使用せずに、複数のハードウェアコンポーネントに一意の鍵を確立することが可能になり、それによって大量の鍵窃盗攻撃のリスクを低減する。
【００５２】
一変形形態では、改善された方法は、ハードウェア製造プロセスのダイ製造段階中に使用されうる。チップが特定のセキュリティアプリケーション(または複数のセキュリティアプリケーション)のために大量に製造される場合、ダイは比較的高速で製造および処理される。チップ製造の製造速度を劇的に遅くしないように、ハードウェア製造プロセスで行われる操作は十分に効率的である必要がある。
【００５３】
いくつかの実施形態では、ランダムビットベクトルはランダムビット生成器を使用してチップ上で生成されうる。ランダムビットベクトルは、それを格納できるようにワンタイムプログラマブル読出し専用メモリに提供される。チップの一意の鍵は、生成されたランダムビットベクトルに基づく。次いで暗号化された一意の鍵、または一意の鍵に対応する公開鍵などの、ランダムビットベクトルから導出された値が、チップの外にエクスポートされる。特定の実施形態では、一意の鍵の生成およびエクスポートは、ウエハーが切断されて、さらなる個別化のためにダイがデバイス製造業者に提供される前に、製造プロセスの初期段階中に実行されることが好ましい。家庭用電子機器の製造プロセスの初期段階で一意の鍵を生成するメカニズムを確立することによって、さらなるパッケージ化のために次の製造業者に出荷される前にチップについて一意の鍵生成器が確立され、それによって鍵を他の当事者に露呈するリスクを低減する。
【００５４】
具体的には、ワンタイムプログラマブル読出し専用メモリにプログラムされている一意の値は、チップに内蔵されたハードウェア乱数生成器のランダムビット生成器(RBG)によってチップ内で生成される。RBGは、物理的なチップ自体の製造におけるランダムな変動を増幅し、RBGから生成された鍵は、チップの一意特性を保持する。多くの半導体構成物または他の適切な基材は、RBGによって使用するために増幅できるような物理的なランダム性を示す。
【００５５】
概して、ハードウェア乱数生成器は、物理的プロセスから乱数を発生させる装置である。このようなデバイスは、熱雑音や光電効果、または他の量子現象などの、低レベルの、統計的にランダムな「ノイズ」信号を生成する、微視的な現象に基づく場合が多い。これらのプロセスは、理論的には、完全に予測不可能である。量子ベースのハードウェア乱数生成器は、典型的には物理現象のいくつかの態様を電気信号に変換するためのトランスデューサ、トランスデューサの出力を巨視的領域にもたらすための増幅器および他の電子回路、ならびに0または1のシンプルな2進数であることが多いデジタル数に出力を変換するためのいくつかのタイプのアナログ-デジタル変換器(いわゆるRBG)で構成される。ランダムに変化する信号を繰り返しサンプリングすることによって、一連の乱数が取得され、ランダムビットベクトルを作成するために使用することができる。
【００５６】
ハードウェア乱数生成器は、一般にソフトウェアで使用されている疑似乱数生成器(PRNG)とは異なる。これらのPRNGは、数値のシーケンスを生成するために決定論的アルゴリズムを使用している。これらの擬似ランダムシーケンスがランダム性の統計パターン検査に合格しているが、「シード」と呼ばれるそれを初期化するために使用されるアルゴリズムと条件とを知ることによって、出力を予測することができる。これは大量の擬似ランダムデータをすぐに生成することができるが、それは、アルゴリズムの復号に対して脆弱である。暗号PRNGは、それらの出力からのシードの決定に抵抗するが、シードについての少量の高品質なランダムデータを依然として必要とする。
【００５７】
図3は、改善された方式を使用して、対称的な一意の鍵で個人化された例示的なチップを示している。
【００５８】
チップ302は、家庭用電子機器300と一体化されることを意図している。例示的な家庭用電子機器300は、リードアクセスメモリ320およびフラッシュメモリ340のうちの少なくとも1つを含む。チップ302は、セキュアなメモリ304、入力/出力(I/O)デバイス310、セキュアなコア306、およびメイン中央処理装置(CPU)330を含むことができる。
【００５９】
セキュアなメモリ304において、ランダムビット生成器308は、チップ内の乱数(または、ランダムビットベクトルとも呼ぶ)を生成するために、チップの物理的な雑音源を増幅できる。乱数は、図3に「K」で示されるように、チップ302の一意の鍵の基礎として役立つために、ワンタイムプログラマブル読出し専用メモリPROM312にプログラムされる。生成された乱数は、チップ上の通信チャネルを介してPROM312に提供されうる。乱数を格納するためのワンタイムプログラマブル読出し専用メモリのプログラミングは不可逆であり、ハードウェア製造プロセスのダイ製造段階中に発生する可能性がある。ワンタイムプログラマブル読出し専用メモリにプログラムされる一意の数は、チップ302のハードウェアおよびファームウェアだけにアクセス可能であることが好ましい。プログラムされたデータは、専用ハードウェアモジュール、または他のソフトウェアと厳格に分離して実行されているファームウェアのいずれかにのみ使用可能である。
【００６０】
このプロセスでランダムビット生成器308を使用するために、ハードウェア乱数生成器を使用してランダムビットを生成するように構成されたチップの一部、ならびにPROM312は、ダイ製造プロセスの検査/調査部分の一部として一時的にアクティブ化されうる。いくつかの代替的な変形形態において、ランダムビット生成器は、チップ302の外部にあってもよい。前記外部ランダムビット生成器は、前記ランダムビット生成器によって生成されたランダムビットがダイに入力されうるように(すなわち、ダイ製造段階の検査/調査部分の間に)、プローブに通信可能に接続されうる。ランダムビットベクトルを形成する一連のランダムビットを、ダイ製造プロセスの検査/調査部分の間にダイのPROMに直接プログラムすることができる。これらの代替的な変形形態では、PROMにプログラムされたランダムビットベクトルは、ダイが処理される際に「オンザフライ」で生成されてもよく、それによって、一意の値の事前に生成されたリストから一意の値を入力する必要性を依然として回避する。
【００６１】
いくつかの実施形態では、PROM312にプログラムされた乱数は、チップ302の一意の鍵として(たとえば、チップ302の秘密鍵として)機能する。他のいくつかの実施形態では、チップの一意の鍵は、PROM312にプログラムされた乱数に部分的に基づく。ハードウェアの製造プロセスの後半部(好ましくは、ダイ製造段階の間に依然として)で、セキュアなコア306によって秘密鍵KがPROM312から読み出される。値は秘密鍵Kから導出されるので、秘密鍵Kよりもセキュリティセンシティブではない。図3に示される実施形態では、導出された値は暗号化された秘密鍵Kである。
【００６２】
秘密鍵Kは、暗号化された鍵{K}PKを生成するために、暗号化モジュール318を使用して暗号化される。たとえば、秘密鍵Kは、外部の当事者(たとえば、セキュリティアプリケーションプロバイダ)に関連付けられる公開鍵を使用して暗号化される。暗号化操作318は、ハードウェアで実行されるか、暗号化操作318に入力されている秘密鍵Kの値を取得または変更することが攻撃者にとって難しくなる方法で実行されることが好ましい。暗号化操作318は、鍵を不明瞭にして、暗号化された鍵{K}PKから秘密鍵Kを取得することが攻撃者にとって難しくなるようにするために、任意の適切な公開鍵暗号化操作を含みうる。
【００６３】
暗号化した後、暗号化された鍵{K}PKが鍵を受け取るように構成された外部鍵受信モジュールに送信/エクスポートされる。エクスポートされたデータは、チップのシリアル番号に関連付けることができる。収集されたデータ(すなわち、暗号化された鍵)は、鍵を暗号化するために使用されるPKに対応する秘密鍵SKを有するセキュリティアプリケーションプロバイダのために意図されている。このように、意図されたセキュリティアプリケーションプロバイダは、後続のセキュリティ操作のためにKを取得するために、{K}PKを復号できる。
【００６４】
いくつかの実施形態では、秘密鍵Kは、公開鍵暗号方式で暗号化モジュール318によって暗号化される。暗号化操作において使用される公開鍵は、マスク読出し専用メモリ(ROM)314に格納されてもよく、セキュアなメモリ304のワンタイムプログラマブル読出し専用メモリPROM312に格納されてもよい。チップ製造業者は、セキュリティアプリケーションプロバイダに関連付けられる公開鍵が含まれている、ROM314のマスク、またはPROMメモリの内容を備えてもよい。チップ製造業者が、複数のセキュリティアプリケーションプロバイダに同じマスクを使用してチップを製造できるようにするために、マスクROM314は、様々なセキュリティアプリケーション開発者に関連付けられる複数の公開鍵を含むことができ、そのうちの1つは特定のチップのためにアクティブ化されうる。
【００６５】
セキュアコア306内の暗号化操作318は、ハードウェアに実装されていることが好ましい。たとえば、概括的なIPコア(たとえば、IP Cores, Inc.が提供するDSPおよびセキュリティIPコア)を、人気のあるRivest-Shamir-Adelman (RSA)公開鍵暗号方式に使用することができる。前記コアは、平文、係数、および概括的な指数を入力と考えて、セキュアなコア306内に暗号化されたデータを生成することができる。いくつかの実施形態では、RSA暗号化処理は、1つの2乗および1つのモジュラの加算(one squaring and one modular addition)(e=3)と同じくらい単純である。係数および指数(すなわち、公開鍵PK)を固定することは、入力として平文のみを有する、はるかに単純な回路を使用することが可能であることを意味する。
【００６６】
公開鍵暗号とハードウェア乱数生成とを組み合わせることにより、セキュアなコア306の非常に最小限の一部をアクティブ化することにより暗号化された秘密鍵{K}PKを生成し、抽出することが可能である。鍵の生成およびエクスポートは、実質的なスループットおよび効率を犠牲にすることなく、チップの一意特性を達成/確立できるように、高速で行うことができる。これも、ハードウェアの製造プロセスのダイ製造段階の間に、チップによって生成されたエクスポートされた導出された値を迅速に収集し格納するために、ハードウェア製造ラインに統合されるべきモジュールを外部鍵が受信することを可能にする。
【００６７】
マスクROM314、またはワンタイムプログラマブル読出し専用メモリPROM312に格納された公開鍵の知識はセンシティブではない。Kを暗号化するために使用される公開鍵に対応する秘密鍵SKの知識を持った当事者(たとえば、意図されたセキュリティアプリケーションプロバイダ)だけが、一意の鍵Kの値を導出することができる。
【００６８】
次いで、一意の鍵Kの知識を、セキュアなコア306とメインCPU330および/または外部装置(図示せず)との間のさらなるメッセージを暗号化するために使用することができる。たとえば、{M}Kを作成するために、メッセージMを暗号化するための対称鍵方式の一部(たとえば、セッション鍵)として鍵を使用することができる。次いで、チップを有する家庭用電子機器を使用するユーザが、サービスにアクセスすることを要求すると、{M}Kがセキュアなコア316に提供されうる。復号操作316は、メッセージMを取得するために適用することができる。Mを導出するために、暗号化されたメッセージを復号する機能を有する任意の暗号機能を使用することができる
【００６９】
暗号化処理318と同様に、概括的なIPコアは復号操作316を提供するために使用されうる。暗号化操作の他の層(たとえば、セキュアなコア306に実装された他の所望の操作)を、M内の内容のセキュリティをさらに高めるために適用できる。Mの内容は、特定のセキュリティアプリケーションに関連付けられるさらなる鍵を導出するための、さらなる鍵および/または情報を含むことができる。
【００７０】
攻撃者によって一意の鍵Kが容易に取得されないことを保証するために、セキュアなコア306は一意の鍵Kの機密性を保持することが好ましい。たとえば、セキュアなコア306におけるKの値を読み出すためにアプリケーションソフトウェアを使用するハッカーにとって、計算が難しい/困難であるべきである。いくつかの実施形態では、セキュアなコア306内の暗号化操作は、ハードウェアモジュール、または専用のマイクロコントローラを含むモジュール、あるいは他のソフトウェアと厳格に分離して実行されるファームウェアモジュールで実施される。
【００７１】
図4は、他の改善された方式を使用して非対称鍵で個別化された、他の例示的なチップを示している。図3と同様に、チップ402は、家庭用電子機器400と一体化されることを意図している。家庭用電子機器400は、リードアクセスメモリRAM420およびフラッシュメモリ440のうちの少なくとも1つを含みうる。チップ402は、セキュアなメモリ404、入力/出力(I/O)デバイス410、セキュアなコア406、およびメイン中央処理装置(CPU)430を含むことができる。
【００７２】
ランダムビット生成器RBG408は、ダイ製造プロセスの間にランダムビットベクトルを生成できる。いくつかの実施形態では、ワンタイムプログラマブル読出し専用メモリPROM412は、ダイ製造段階の間に生成されたランダムビットベクトルでプログラムされる。生成されたランダムビットベクトルは、公開鍵暗号システムにおいて秘密鍵として機能する。チップの秘密鍵は、PROM412に格納されたランダムビットベクトルに基づいてもよい。いくつかの変形形態では、RBG408は、チップの外部にあってもよいが、PROM412にプログラムされたランダムビットベクトルを形成するために一連のランダムビットを供給するために、ダイ製造プロセスの検査/調査部分の間に使用される。外部RBG408は、ダイ製造を実行するエンティティで、ダイの検査/調査マシンのプローブを介してPROM412に通信可能に接続されうる。
【００７３】
PROM412の大きさはしばしば限られており、したがってプログラムされうる生成された鍵が秘密鍵として直接使用するための所望のビット長を有していない場合がある。PROM412の不動産制限は、PROM412にプログラムされているランダムビットベクトルの大きさを制限する。ランダムビットベクトルの所望のビット長は、ビットベクトルが使用される暗号アルゴリズム、およびセキュリティの所望の量(たとえば、公開鍵から秘密鍵を見つけることが攻撃者にとってどれだけ困難であるかの測定)に依存する。人気のRSA暗号システムの場合、非対称鍵のペアは約数千ビットであることが多い(2011年現在)。PROM412に格納されたランダムビットベクトルの大きさを低減するために、対策を行うことができる。
【００７４】
チップ製造プロセス中の使用に適した1つの例示的な暗号システムは、楕円曲線暗号(ECC)公開鍵システムである。楕円曲線暗号のセキュリティは、離散対数問題に基づく。楕円曲線は、素体を介して、または2進数フィールドを介してのどちらかで定義されうる。ハードウェアの製造サイクルの高速要件のために、ハードウェアの製造サイクル中に鍵のペアを生成するために使用される暗号システムの種類を考慮して、慎重に選択する必要がある。
【００７５】
場合によっては、セキュアなコアは、大きな算術演算のための専用のハードウェアアクセラレータを有していない。一方では、RSA鍵生成は、専用のコプロセッサを有するスマートカード上でも非常に長い確率過程であり、鍵の生成に数秒かかる場合がある。ハードウェアの製造条件では、特にダイ製造中または製造プロセスの初期段階には、数秒は非常に高価であり、ハードウェア製造プロセスの効率にとって有害でありうる。他方では、ECC方式で使用される公開鍵/秘密鍵を生成することは、RSAよりも簡単である。
【００７６】
さらに、PROMの不動産も制限されているため、十分な量のセキュリティに必要な鍵の長さを考慮する必要がある。RSAが使用される場合、秘密鍵の長さは、2048ビット長(ワンタイムプログラマブルメモリの512バイト)であることが好ましい。ECCが使用される場合、楕円曲線の秘密鍵は、256ビット長(ワンタイムプログラマブルメモリの32バイト)であることが好ましい。
【００７７】
ECCがRSAよりも優れている点は、鍵の生成がより速いということである。また、ECCは、同じ所望のセキュリティレベルを達成するために、より古い方式(RSA、DSA)によって使用される鍵の長さよりも小さい鍵の長さを使用する。たとえECCの暗号化および復号プロセスがRSAよりも計算効率が低い傾向があっても、鍵をチップの外部にエクスポートするワンタイムステップに適している。
【００７８】
ランダムビットベクトルのビット長nを削減するために(たとえば、PROMの使用量を節約するために)、セキュアメモリ内の拡張関数(expand function)450を使用して、ランダムビットベクトルをビット長n+xを有する秘密鍵SKに変換できうる。ハードウェアまたはファームウェアで実装された擬似乱数生成器が、拡張関数450として使用されうる。拡張されたランダムビットベクトルは、公開鍵暗号システムの一部として、秘密鍵として使用されうる。言い換えれば、一意の鍵は、拡張されたランダムビットベクトルに基づいている。事実上、拡張関数450がnビットのエントロピーをn+xビットに拡げることができ、これによってPROM412にプログラムする必要がある情報の量を減らすことができる。たとえば、拡張関数450は、一意の値Kを入力として考えて、擬似乱数生成器(PRNG)のシードとして使用することができる。PRNGは、n+xの長さのビットベクトルを生成して、SKの生成を支援するためにPRNGから結果として得られるビットベクトルを使用できる。また、拡張関数450は図3に示される実施形態において使用することもできる。
【００７９】
ECC暗号システムでは、ランダムビットベクトルcを取得して、dを計算することによって、まず公開鍵を作成することができ、d=(c mod (n-1))+1である。結果として得られたビットベクトルを取得して、モジュロ関数を適用すると、dを算出することができる。次いで、dについて結果として得られた値をECC方式のSKとして使用することができ、対応するPKは、(ECC)PK生成モジュール418を使用して、SKとグループパラメータとを使用して効率的に計算することができる。対照的に、RSA鍵生成は、大きな素数を見つけてそれらを繰り返し検査することを含み、はるかに長い時間がかかる。したがって、ECC方式または類似の方式は、その公開鍵のペアを生成する目的で、RSA鍵生成よりも好ましい。
【００８０】
ECCが使用される実施形態では、チップ402は、内部でランダムに秘密鍵を生成して、ダイ製造中であっても、秘密鍵およびグループパラメータから(たとえば、Q=dGを計算することによって)非常に効率的に公開鍵を計算することができる。鍵生成プロセスによって、チップ製造業者に事前生成された一意の鍵を入力として提供させる問題と、チップの個別化段階中にそれらの秘密値をチップ上にプログラミングする問題とが回避される。また、オンチップ鍵生成プロセスは、ハードウェア製造プロセスの高速/高スループット段階中に実行されるために十分に効率的に発生する。
【００８１】
あるいは、エルガマル(離散対数ベースの暗号システム)公開鍵暗号システムも、秘密鍵についてランダムに生成された値から公開鍵を導出するための効率的な方式を提供できる。秘密鍵についてランダムに生成された値は、RBG408および任意で拡張モジュール450を使用して、やはり製造中にオンチップで生成されうる。
【００８２】
上述のように、公開鍵の生成は、(ECC)PK生成モジュール418によって実行されうる。好ましくはハードウェア製造プロセスのチップ初期化段階中に秘密鍵からオンチップ公開鍵を生成することを容易にするために、PK生成モジュール418は、チップ上のハードウェアモジュールでもよく、または特定の条件の下で実行され、マスクROM414やワンタイムプログラマブル読出し専用メモリPROM312に格納されたファームウェアコードを使用するソフトウェアモジュールでもよい。秘密鍵へのソフトウェアアクセスは、制限されていることが好ましい。チップ上の適切なモジュールは、たとえば一時的にPKの生成を行うために活性化されうる。
【００８３】
鍵のペアの生成後、好ましくはダイ製造中に、エクスポートされた公開鍵を受信するように構成された外部モジュールに公開鍵がエクスポートされうる。公開鍵は、一意の鍵と比較してセキュリティセンシティブではない、一意の鍵の導出された値(すなわち、ランダムビットベクトルまたは拡張されたランダムビットベクトル)として機能する。外部モジュールは、内部で生成されたSKに対応する公開鍵PKを受信するように構成されている。外部の鍵受信モジュールは、公開鍵とチップに対応する識別データCIDとを関連付けて、それらを<PK,CID>のペアとして不揮発性メモリに格納するように構成されうる。収集された鍵は、その後適切なセキュリティアプリケーションプロバイダに提供されうる。次いで、外部モジュールは、セキュリティアプリケーションプロバイダにPKを提供できる。このように、セキュリティアプリケーションプロバイダは、対応するSKを有するチップを運ぶ、意図される家庭用電子機器宛てのメッセージを構築できる。
【００８４】
PKの知識があれば、セキュリティアプリケーションプロバイダは、対応する秘密鍵を有するチップ宛ての公開鍵PKでメッセージMを暗号化することによって、暗号化されたメッセージ{M}PKを送信できる。PKのエクスポートによって、対応するSKを有するチップによって復号可能なメッセージをセキュリティアプリケーション開発者が暗号化することが事実上可能になる。次いで、チップは、たとえば復号モジュール416を使用して、暗号化されたメッセージ{M}PKをMを取得するために復号する。Mは、セキュリティアプリケーションのためのさらに鍵を含みうる。たとえば、Mは、他の鍵をロードするためのセッション鍵を含みうる。
【００８５】
図5は、ハードウェアコンポーネントにおいて一意特性を確立するための例示的方法を示している。具体的には、この例示的方法は、一意特性を有しているハードウェアコンポーネントの製造を可能にするためのステップについて概括的に記述する。言い換えれば、ハードウェアコンポーネントは、一意の鍵として使用されうる一意の値を備えている。一意の鍵によって、セキュリティアプリケーション開発者は、比較的安全な方法でハードウェアコンポーネントと通信できるようになる。
【００８６】
概して、本明細書の改善された方法およびシステムに記述されるように、チップの一意特性は、ランダムビットベクトル502を生成することによって確立され(たとえば、ハードウェアの生産サイクル中など)、ランダムビットベクトルをPROMにロードさせ(ボックス504を参照)、ランダムビットベクトルから値を抽出させる(たとえば、公開鍵の暗号化または生成、ボックス506参照)。次いで、導出された値は、セキュリティアプリケーションプロバイダが特定のチップにメッセージを配信するために使用できるように、受信モジュールにエクスポートされる(たとえば、ボックス508)。従来の方法は、典型的には中央データベースから秘密鍵のセットの事前に生成されたセットを使用する。それらの従来の方法は、侵入者またはインサイダーがその中央のデータベースの内容を盗む場合、大規模な鍵盗難攻撃の危険にさらされている。この問題を解決するために、本明細書に記載の本方法およびシステムは、ハードウェアコンポーネントだけが秘密鍵を知っていることを保証するための方法で、「オンザフライ」で、またはチップの内部で生成された(ボックス502参照)秘密鍵を有する。言い換えれば、一意特性でチップを製造するために開示された解決策は、それぞれのハードウェアコンポーネントに関連付けられる秘密鍵を格納するために中央データベースをもはや必要としない。
【００８７】
いくつかの変形形態では、ランダムビット生成器を使用するランダムビットベクトルの生成(ボックス502を参照)は、ダイ製造プロセスの検査/調査部分の間に発生しうる。生成、単一のエンティティの施設内でローディング、導出、およびエクスポートステップを実行するいくつかの実施形態では、プロセスの完全性が向上する(たとえば、プロセスは、あるエンティティの施設内に含まれている)。ダイ製造プロセス中にランダムビットベクトルが生成されるこれらの変形形態では、ランダムビット生成器は、ダイの回路の一部として組み込まれてよい。RBGがチップに内蔵されている場合、RBGはランダムビットベクトルを生成するために一時的にアクティブ化/電力を供給され、次いでランダムビットベクトルはダイ上PROMに格納されうる。したがって、ダイは、秘密鍵の基礎として使用するために固有の方法でランダムビットベクトルを内部的に生成し、外部ソースにとって一意の鍵を取得することを困難にする。
【００８８】
あるいは、ランダムビット生成器はダイの外部にあってもよいが、ダイの検査機の検査プローブに通信可能に接続されている。ダイ製造プロセスの検査/調査部分の間に、検査プローブは、外部のランダムビット生成器によって生成された一連のランダムビットを入力するように構成されうる。外部RBGによって生成された一連のランダムビットは、ランダムビットベクトルを形成することができる。したがって、プローブはRBGの出力信号を通信可能に接続して、出力ランダムビットをダイ上のPROMに直接プログラミングすることができる。この代替方式では、ランダムビットベクトルは「オンザフライ」で生成される。この代替方式も、ランダムな値の事前に生成されたリストの中央データベースを必要としない。
【００８９】
本明細書に記載の方法を使用して、ランダムビットベクトルから値を導出でき、導出された値をハードウェアコンポーネントの外部にエクスポートできる。いくつかの変形形態では、ダイ製造プロセスの検査/調査部分の間に、値をハードウェアコンポーネントの外部にエクスポートする。さらに、これらの変形形態では、他に十分な認証方式が存在しない場合、ランダムビットベクトルから導出された値は、好ましくはハードウェアの生産サイクル中にダイが別のエンティティに提供される前に、値がPROMにプログラムされた後すぐにエクスポートされうる。
【００９０】
他のいくつかの変形形態において、ランダムビットベクトルを生成するためのオプション、ランダムビットベクトルをPROMにロードすること、ランダムビットベクトルから値を導出すること、および/または導出された値をエクスポートすること、これらすべてがダイ製造プロセス中に利用不可能である場合に、本方法の少なくとも一部は、ダイ製造後に実行されうる。図6は、ハードウェアコンポーネントにおいて一意特性を確立するための他の例示的方法を示している。
【００９１】
ダイ製造プロセスの検査/調査段階の間にランダムビットベクトルを生成するオプションが利用できない状況では、何らかの形式の認証ステップ(ステップ608)が利用可能な場合、ランダムビットベクトルの生成(ステップ602)は製造サイクルの後の段階で実行できる。任意の認証ステップ608は、セキュリティアプリケーションプロバイダが、ダイの製造を担当するエンティティに戻ってエクスポートされた導出された値を追跡できるようにするために、ハードウェアコンポーネントにおいて実施されることが好ましい。認証ステップ608は、認証された暗号化を含みうる。
【００９２】
認証ステップ608によって、セキュリティアプリケーションプロバイダは、エクスポートされた値が乱数生成を担当するチップ上の回路を作成するステップ(ステップ602)、PROMに値をプログラミングするステップ(ステップ604)、値の導出(ステップ606)、および導出された値のエクスポート(ステップ610)を担当するエンティティに純粋に関連付けられることを検証できるようになる。
【００９３】
ある例示的な認証方法は、対称的な認証を含みうる。ランダムビットベクトルを内部で生成するためにチップ上に機能RBGを有することに加えて、ダイはダイ製造プロセス中に対称鍵でプログラムされうる。いくつかの実施形態では、ひとまとまりのダイは、同じ対称鍵を共有できる。ダイが認可/信頼されたエンティティによって製造されている場合、対称鍵(ダイ製造エンティティとセキュリティアプリケーションプロバイダに知られている)は、チップがダイ製造プロセスに戻って追跡することができる署名を生成することを可能にする。言い換えれば、この認証方法は、エクスポートされた値が不正なエンティティによって生成されることを防止することができる。
【００９４】
認証方法を実施するために適した暗号方式の例には、3DESまたはAESがある。説明のために、一般性を失うことなく、ECCおよびAESの組合せを使用してハードウェアコンポーネントにおいて一意の鍵を確立する例について説明する。ダイ製造の間、対称署名鍵(たとえば、128ビットの対称署名鍵)は、ダイ製造プロセスの検査/調査部分の間にPROMにプログラムされうる。対称署名鍵は、ダイの一意のシリアル番号(たとえば、128ビットのシリアル番号)とペアになる。また、ダイはランダムビットベクトルを生成するためにRBGを含むことができる。さらに、ダイは、RBGからPROMに出力ランダムビットベクトルをロードするために必要な回路、ならびにPROM内のランダムビットベクトルから値を導出し、導出された値をエクスポートするための回路を含むことができる。この時点で、チップ初期化またはチップ個別化を担当するエンティティなどの別のエンティティによってダイを処理でき、ダイはさらなる処理のために他の材料内に配置される。
【００９５】
異なる製造エンティティと共に、ダイを含むチップはチップ上にランダムビット生成器を備えうる可能性がある。一実施形態では、前記ランダムビット生成器は、ランダムビットベクトルを生成するためにアクティブ化される。ランダムビットベクトルは256ビットの長さでもよく、256ビット長よりも短くてもよい(PRNGを使用して、より短い長さのランダムビットベクトルをより長いビットベクトルに拡張するために拡張関数が使用される場合)。一意の鍵は、ランダムビットベクトルに基づく。次いで、事前に定義された生成器のポイントと、生成された秘密対称鍵(ECC方式)で小数点乗算を適用することによって、チップは一意の鍵に基づいて(すなわち鍵ペアから秘密鍵として一意の鍵を使用して)公開鍵を生成する。生成された公開鍵は2つのコンポーネント(X,Y)を有し、それぞれが256ビットである。チップは、ダイ製造中にチップにプログラムされた対称署名鍵を暗号化鍵として使用して、またシリアル番号をカウンタの初期値として使用して、512ビットの公開鍵のペアを暗号化するために、ガロアカウンタモードで、AESで認証された暗号化操作を実行することができる。この例示的な暗号化方法は、512ビットの暗号化された公開鍵(X',Y')と、128ビットの認証タグTとを生成できる。次いで、チップは、暗号化および署名された公開鍵(X',Y',T)、およびそれに関連付けられるシリアル番号を受信コンポーネントにエクスポートできる。次いで、受信コンポーネントに関連付けられる受信エンティティは、関連付けられる対称署名鍵を決定するためにシリアル番号を使用できる。対称署名鍵を使用して、受信エンティティ(たとえば、セキュリティアプリケーションプロバイダ)は、公開鍵(X,Y)を復号して認証タグTを検証するために、同じAESガロアカウンタモードを使用できる。正しい場合、システムは公開鍵(X,Y)をデータベースに格納し、公開鍵(X,Y)とチップのシリアル番号とを関連付けることができる。続いて、受信エンティティは、公開鍵を使用してチップへのメッセージを暗号化できる。
【００９６】
いくつかの実施形態では、家庭用電子機器の初期起動時に同じ方式を適用して、乱数を内部で生成して、それを保護された形式で、またはセキュアなメモリに格納することができる。ハードウェアの製造プロセス中に初期化するよりも、チップが最初に起動したときに一意の鍵を確立することができる。次いでランダムビットベクトルの導出された値、または拡張されたランダムビットベクトル(すなわち、一意の鍵)、あるいはランダムな値から導出された公開鍵が、エクスポートされた値を受信するように構成された通信チャネルを介してエンティティ(すなわち、セキュリティアプリケーションプロバイダ)にエクスポートされる。このように、家庭用電子機器およびチップは、エクスポートされた値が適切な方法(たとえば、公開鍵署名方式の下で対称署名鍵または非対称署名鍵を使用する署名)を使用して認証される場合、初期起動時に一意特性を依然として十分に保持しながら大量生産されうる。非対称鍵を使用する場合、エクスポートされたデータの署名は、署名鍵を使用して計算され、署名はエクスポートされたデータに含まれる。後の段階で、セキュリティアプリケーションプロバイダは、エクスポートされたデータに含まれる署名を確認するために、署名検証鍵(署名鍵とは異なる)を使用する。
【００９７】
本発明の一実施形態は、コンピュータシステムで使用するためのプログラム製品として実装されうる。プログラム製品のプログラムは、実施形態の機能(本明細書に記載の方法を含む)を定義し、様々なコンピュータ可読記憶媒体に含まれうる。コンピュータ可読記憶媒体は、持続性記憶媒体でもよい。例示的なコンピュータ可読記憶媒体には、これに限定されないが、(i)情報が恒久的に格納されている書込み不可能な記憶媒体(たとえば、CD-ROMドライブによって読み取り可能なCD-ROMディスク、ROMチップ、または任意のタイプのソリッドステート不揮発性半導体メモリなどのコンピュータ内の読出し専用メモリデバイス)、(ii)可変情報が格納された、書込み可能な記憶媒体(たとえば、ディスケットドライブ内のフロッピー（登録商標）ディスク、またはハードディスクドライブ、あるいは任意のタイプのソリッドステートランダムアクセス半導体メモリ、フラッシュメモリ)がある。
【００９８】
任意の一実施形態に関連して記述したあらゆる特徴は、単独で、または記述した他の特徴と組み合わせて使用されてもよく、また他の任意の実施形態の1つまたは複数の特徴と組み合わせて、あるいは他の任意の実施形態と任意に組み合わせて使用されてもよいことが理解されるべきである。さらに、本発明は上述の実施形態に限定されず、添付の特許請求の範囲内でバリエーションを有し得る。
【符号の説明】
【００９９】
300  家庭用電子機器
302  チップ
304  セキュアなメモリ
306  セキュアなコア
308  ランダムビット生成器
310  入力/出力(I/O)デバイス
312  プログラマブル読出し専用メモリPROM
314  ROM
316  復号操作
318  暗号化モジュール
318  暗号化操作
320  リードアクセスメモリ
330  メイン中央処理装置(CPU)
340  フラッシュメモリ
400  家庭用電子機器
402  チップ
404  セキュアなメモリ
406  セキュアなコア
408  ランダムビット生成器RBG
410  入力/出力(I/O)デバイス
412  ワンタイムプログラマブル読出し専用メモリPROM
414  マスクROM
418  (ECC)PK生成モジュール
420  リードアクセスメモリRAM
430  メイン中央処理装置(CPU)
440  フラッシュメモリ
450  拡張関数
【図５】
2014509812.tif 000003
【図６】
2014509812.tif 000004
【図１】
2014509812.tif 000005
【図２】
2014509812.tif 000006
【図３】
2014509812.tif 000007
【図４】
2014509812.tif 000008
【国際調査報告】
2014509812.tif 000009
2014509812.tif 000010