(57)【要約】  ソフトウェアにはアクセスできない秘密鍵値は、ワンタイム・プログラマブル（ＯＴＰ）ビットで構成されるレジスタに従ってスクランブルをかけられる。第１のＯＴＰレジスタは、ライフサイクルイベントが起こったときにはいつでも秘密鍵値のスクランブリングを変更するために使用される。第２のＯＴＰレジスタは、秘密鍵のスクランブリングの変更を取り消すために使用される。第３のＯＴＰレジスタは、秘密鍵のスクランブリングへの恒久的変更に影響を与えるために使用される。（変更されたか、または、変更されていないかにかかわらず）スクランブルをかけられた秘密鍵の値は、装置による暗号化演算のための鍵を生成するためにシードとして使用される。【選択図】図１
2019504519.tif 000002
【特許請求の範囲】
【請求項１】
半導体装置上で動いているソフトウェアからアクセスできない秘密鍵値で回路を有する前記装置を構成することと、
それぞれの初期値を用いて、前記それぞれの初期値からの値の変更が１回に制限されているワンタイム電気的プログラマブル半導体メモリビットを構成することと、
前記ワンタイム電気的プログラマブル半導体メモリビットの第１の部分集合によって記憶されたライフサイクル・アドバンス・ビットから第１のライフサイクル・アドバンス値を受信することと、
前記ワンタイム電気的プログラマブル半導体メモリビットの第２の部分集合によって記憶されたライフサイクル・ロールバック・ビットから第１のライフサイクル・ロールバック値を受信することと、
ライフサイクル状態生成プロセスを使用して、前記第１のライフサイクル・アドバンス値および前記第１のライフサイクル・ロールバック値から第１のライフサイクル状態値を生成することと、
前記ワンタイム電気的プログラマブル半導体メモリビットの第３の部分集合によって記憶されたパーソナリティビットから第１のパーソナリティ値を受信することと、
一方向性処理関数を使用して、前記秘密鍵値、前記第１のパーソナリティ値、および前記第１のライフサイクル状態値に基づいて第１の鍵分割値を生成することと、
前記第１の鍵分割値から第１の暗号鍵を生成することと、
を含む、暗号鍵を生成する方法。
【請求項２】
少なくとも第１のライフサイクル・アドバンス・ビットを変更することによって、前記ワンタイム電気的プログラマブル半導体メモリビットの前記第１の部分集合により記憶された前記第１のライフサイクル・アドバンス値を第２のライフサイクル・アドバンス値に変更することと、
前記ライフサイクル状態生成プロセスを使用して、前記第２のライフサイクル・アドバンス値および前記第１のライフサイクル・ロールバック値から第２のライフサイクル状態値を生成することと、
前記一方向性処理関数を使用して、前記秘密鍵値、前記第１のパーソナリティ値、および、前記第１のライフサイクル状態値とは異なる前記第２のライフサイクル状態値に基づいて第２の鍵分割値を生成することと、
前記第２の鍵分割値から、前記第２のライフサイクル状態値が前記第１のライフサイクル状態値とは異なることの結果として前記第１の暗号鍵とは異なり、前記装置によって処理されるデータの安全を確保するのに用いられる第２の暗号鍵を生成することと、
をさらに含む、請求項１に記載の方法。
【請求項３】
少なくとも第１のライフサイクル・ロールバック・ビットを変更することによって、前記ワンタイム電気的プログラマブル半導体メモリビットの前記第２の部分集合により記憶された前記第１のロールバック値を第２のライフサイクル・ロールバック値に変更することと、
前記ライフサイクル状態生成プロセスを使用して、前記第２のライフサイクル・アドバンス値および前記第２のライフサイクル・ロールバック値から前記第１のライフサイクル状態値を生成することと、
前記一方向性処理関数を使用して、前記第２の秘密鍵値と、前記パーソナリティ値と、前記第２のライフサイクル・アドバンス値および前記第２のライフサイクル・ロールバック値から生成されたとおりの前記第１のライフサイクル状態値とに基づいて前記第１の鍵分割値を生成することと、
前記第２のライフサイクル・アドバンス値および前記第２のライフサイクル・ロールバック値から生成された前記第１のライフサイクル状態値から生成された前記第１の鍵分割値から、前記第１の暗号鍵を生成することと、
をさらに含む、請求項２に記載の方法。
【請求項４】
前記第１のライフサイクル状態値は、前記ワンタイム電気的プログラマブル半導体メモリビットの前記第１の部分集合によって記憶されたライフサイクル・アドバンス値が前記ワンタイム電気的プログラマブル半導体メモリビットの前記第２の部分集合によって記憶されたライフサイクル・ロールバック値と等しいとき、前記ライフサイクル状態生成プロセスによって生成される、請求項１に記載の方法。
【請求項５】
前記ライフサイクル状態生成プロセスは、ライフサイクル・アドバンス値およびライフサイクル・ロールバック値の第１の複数のペアを前記第１のライフサイクル状態値にマッピングする、請求項１に記載の方法。
【請求項６】
前記ライフサイクル状態生成プロセスによって前記第１のライフサイクル状態値にマッピングされないライフサイクル・アドバンス値およびライフサイクル・ロールバック値の第２の複数のペアが前記ライフサイクル状態生成プロセスによって前記第１のライフサイクル状態値以外の値にマッピングされる、請求項５に記載の方法。
【請求項７】
少なくとも第１のパーソナリティビットを変更することによって、前記ワンタイム電気的プログラマブル半導体メモリビットの前記第３の部分集合によって記憶された前記第１のパーソナリティ値を第２のパーソナリティ値に変更することと、
前記一方向性処理関数を使用して、前記秘密鍵値、前記第２のパーソナリティ値、および前記第１のライフサイクル状態値に基づいて個別の鍵分割値を生成することと、
前記個別の鍵分割値から、前記第２のパーソナリティ値が前記第１のパーソナリティ値とは異なることの結果として前記第１の暗号鍵とは異なり、前記装置によって処理されるデータの安全を確保するのに用いられる個別の暗号鍵を生成することと、
をさらに含む、請求項１に記載の方法。
【請求項８】
集積回路を制御するソフトウェアからアクセスできない秘密鍵値を提供する回路と、
それぞれの初期値からの値の変更が１回に制限されたワンタイム・プログラマブル・メモリ・ビットの第１の部分集合によって記憶されたライフサイクル・アドバンス・ビットと、前記ワンタイム・プログラマブル・メモリ・ビットの第２の部分集合によって記憶されたライフサイクル・ロールバック・ビットと、前記ワンタイム・プログラマブル・メモリ・ビットの第３の部分集合によって記憶されたパーソナリティビットとを含んでいるワンタイム・プログラマブル・メモリ・ビットと、
ライフサイクル値生成プロセスを使用して、前記ライフサイクル・アドバンス・ビットによって記憶されたライフサイクル・アドバンス値と、前記ライフサイクル・ロールバック・ビットによって記憶されたライフサイクル・ロールバック値とから、ライフサイクル値を生成するように構成されたライフサイクル値生成回路と、
一方向性処理関数を使用して、パーソナリティビット値、ライフサイクル値、および前記秘密鍵値に基づいて鍵分割値を生成する一方向性関数回路と、
前記鍵分割値に基づいて複数の暗号鍵値を生成する鍵結合回路と、
を備える集積回路。
【請求項９】
前記ワンタイム・プログラマブル・メモリ・ビットの前記第２の部分集合によって記憶されたライフサイクル・ロールバック・ビット値を変更することなく前記ワンタイム・プログラマブル・メモリ・ビットの前記第１の部分集合によって記憶されたライフサイクル・アドバンス・ビット値を変更することは、鍵結合回路によって生成された前記複数の暗号鍵値を変更する、請求項８に記載の集積回路。
【請求項１０】
前記ワンタイム・プログラマブル・メモリ・ビットの前記第１の集合によって記憶されたライフサイクル・アドバンス・ビット値を変更することと、前記ワンタイム・プログラマブル・メモリ・ビットの前記第２の集合によって記憶された対応するライフサイクル・ロールバック・ビット値を変更することとは、前記鍵結合回路によって生成された前記複数の暗号鍵値を変更することがない、請求項９に記載の集積回路。
【請求項１１】
ライフサイクル・アドバンス・ビット値の第１の集合、および、対応するライフサイクル・ロールバック・ビット値の第２の集合は、前記鍵結合回路によって作り出されている暗号鍵値の第１の集合を生じさせる、請求項９に記載の集積回路。
【請求項１２】
ライフサイクル・アドバンス・ビット値の第２の集合、および、対応するライフサイクル・ロールバック・ビット値の第２の集合は、前記暗号鍵値の第１の集合には含まれない、前記鍵結合回路によって作り出されている暗号鍵値の第２の集合を生じさせる、請求項１１に記載の集積回路。
【請求項１３】
前記ワンタイム・プログラマブル・メモリ・ビットの前記第３の部分集合によって記憶されたパーソナリティビット値を変更することは、鍵結合回路によって生成された前記複数の暗号鍵値を変更する、請求項８に記載の集積回路。
【請求項１４】
それぞれのライフサイクル・ロールバック・ビットの値は、前記鍵結合回路によって作り出された前記暗号鍵値の対応するライフサイクル・アドバンス・ビットの影響を無効にする、請求項１３に記載の集積回路。
【請求項１５】
回路コンポーネントの表現を記憶するコンピュータ読み取り可能な媒体であって、前記回路コンポーネントは、
前記集積回路を制御するソフトウェアからアクセスできない秘密鍵値を提供する回路と、
それぞれの初期値からの値の変更が１回に制限されたワンタイム・プログラマブル・メモリ・ビットの第１の部分集合によって記憶されたライフサイクル・アドバンス・ビットと、前記ワンタイム・プログラマブル・メモリ・ビットの第２の部分集合によって記憶されたライフサイクル・ロールバック・ビットと、前記ワンタイム・プログラマブル・メモリ・ビットの第３の部分集合によって記憶されたパーソナリティビットとを含んでいるワンタイム・プログラマブル・メモリ・ビットと、
ライフサイクル値生成プロセスを使用して、前記ライフサイクル・アドバンス・ビットによって記憶されたライフサイクル・アドバンス値と、前記ライフサイクル・ロールバック・ビットによって記憶されたライフサイクル・ロールバック値とから、第１のライフサイクル・アドバンス値および第１のライフサイクル・ロールバック値から生成された第１のライフサイクル状態値を含むライフサイクル値を生成するようライフサイクル値生成回路と、
一方向性処理関数を使用して、パーソナリティビット値、ライフサイクル値、および前記秘密鍵値に基づいて、前記秘密鍵値と第１のパーソナリティ値と前記第１のライフサイクル状態値とに基づく第１の鍵分割値を含む鍵分割値を生成する一方向性関数回路と、
前記鍵分割値に基づいて、前記第１の鍵分割値から生成された第１の暗号鍵を含む複数の暗号鍵値を生成する鍵結合回路と、
を備える、コンピュータ読み取り可能な媒体。
【請求項１６】
少なくとも第１のライフサイクル・アドバンス・ビットを変更することは、前記ワンタイム・プログラマブル・メモリ・ビットの前記第１の部分集合によって記憶された前記第１のライフサイクル・アドバンス値を第２のライフサイクル・アドバンス値に変更することであり、第２のライフサイクル状態値は、前記ライフサイクル値生成回路によって前記第２のライフサイクル・アドバンス値および前記第１のライフサイクル・ロールバック値から生成することであり、前記秘密鍵値と前記第１のパーソナリティ値と前記第２のライフサイクル状態値とに基づく第２の鍵分割値は、前記一方向性関数回路によって生成されることであり、前記第２のライフサイクル状態値は、前記第１のライフサイクル状態値とは異なることであり、前記鍵結合回路は、前記第２の鍵分割値から、前記第２のライフサイクル状態値が前記第１のライフサイクル状態値とは異なることの結果として前記第１の暗号鍵とは異なることになる第２の暗号鍵を生成することになる、請求項１５に記載のコンピュータ読み取り可能な媒体。
【請求項１７】
少なくとも第１のライフサイクル・ロールバック・ビットを変更することは、これにより、前記ワンタイム・プログラマブル・メモリ・ビットの前記第２の部分集合によって記憶された前記第１のロールバック値を第２のライフサイクル・ロールバック値に変更することであり、前記第１のライフサイクル状態値は、前記第２のライフサイクル・アドバンス値および前記第２のライフサイクル・ロールバック値から生成されることになる、請求項１６に記載のコンピュータ読み取り可能な媒体。
【請求項１８】
前記一方向性処理関数は、前記秘密鍵値と、前記パーソナリティ値と、前記第２のライフサイクル・アドバンス値および前記第２のライフサイクル・ロールバック値から生成されたとおりの前記第１のライフサイクル状態値とに基づいて前記第１の鍵分割値を生成することであり、前記第１の暗号鍵は、前記第２のライフサイクル・アドバンス値および前記第２のライフサイクル・ロールバック値からさらに生成された前記第１のライフサイクル状態値から生成された前記第１の鍵分割値から生成されることになる、請求項１６に記載のコンピュータ読み取り可能な媒体。
【請求項１９】
前記ワンタイム・プログラマブル・メモリ・ビットの前記第３の集合によって記憶されたパーソナリティビット値を変更することは、鍵結合回路によって生成された前記複数の暗号鍵値を変更する、請求項１５に記載のコンピュータ読み取り可能な媒体。
【請求項２０】
前記ライフサイクル状態生成プロセスは、ライフサイクル・アドバンス値およびライフサイクル・ロールバック値の第１の複数のペアを前記第１のライフサイクル状態値にマッピングする、請求項１９に記載のコンピュータ読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
［0001］  本願は、２０１５年１２月６日付けで出願された、ＣＲＹＰＴＯＧＲＡＰＨＩＣ  ＭＡＮＡＧＥＭＥＮＴ  ＯＦ  ＬＩＦＥＣＹＣＬＥ  ＳＴＡＴＥＳと題する米国仮特許出願第６２／２６８，０１８号の優先権を主張し、この米国仮特許出願はあらゆる目的のため参照によって本書に組み込まれる。
【図面の簡単な説明】
【０００２】
【図１】［0002］ライフサイクルマネジメントシステムを示すブロック図である。
【図２】［0003］ライフサイクル状態に依存する暗号鍵を生成する方法を示すフローチャートである。
【図３】［0004］暗号化ライフサイクルマネジメントシステムを含む装置を示すブロック図である。
【図４Ａ−４Ｂ】［0005］暗号化管理されたライフサイクル状態を構成および構成解除する方法を示すフローチャートである。
【図５Ａ−５Ｃ】［0006］ライフサイクル状態生成プロセスの実施例を示す図である。
【図６】［0007］ライフサイクル依存型暗号鍵を生成する方法を示すフローチャートである。
【図７】［0008］アクセス可能な鍵分割値の生成を示す図である。
【図８】［0009］処理システムのブロック図である。
【発明を実施するための形態】
【０００３】
［0010］  多くの電子装置（たとえば、携帯電話機、タブレット、セットトップボックスなど）は、安全な暗号鍵を使用する。これらの鍵は、例えば、装置上のデータの安全を確保するために、通信の安全を確保するために、および／または装置を認証するために使用されることがある。装置は、様々なライフサイクルイベントを経験するので、装置によって使用される鍵を暴露から保護すること（それに関して、装置上のデータを保護すること、不正使用を阻止することなど）が望ましい。
【０００４】
［0011］  たとえば、エンドユーザは、装置をしばらくの間使用し、かつ、この装置に極秘データを保存した後に、修理のため装置を製造業者に送り返す必要がある問題に悩むことがある。この場合、エンドユーザは、製造業者または修理センターには、装置に保存された極秘データにアクセスして欲しくない。しかしながら、エンドユーザは、装置が返却されたとき、自分がデータにアクセスできることも望む。
【０００５】
［0012］  実施形態では、ソフトウェアからアクセスできない（たとえば、装置の中にハードウェアで組み込まれた）秘密鍵値は、ワンタイム・プログラマブル・ビットで構成されたレジスタに従ってスクランブルをかけられる。これらのワンタイム・プログラマブル（ＯＴＰ）ビットは、ハードウェア設計によって、これらの初期値から別の値に１回だけ変更されることが可能であり、初期値に戻すことができない（たとえば、オンチップヒューズが飛んでいるか、または、まだ破損していないかを反映するビットである）。
【０００６】
［0013］  第１のＯＴＰレジスタは、ライフサイクルイベント（たとえば、装置が修理センターへ送られること）が起こったときにいつでも、秘密鍵値のスクランブリングを変更するために使用される。秘密鍵値のスクランブリングを変更することにより、装置によって使用される鍵も変更され−それによって、装置によって以前に使用されたデータ、承認、または認証が（たとえば、修理センター従業員によって）複製されること、または、使用されることを防止する。
【０００７】
［0014］  第２のＯＴＰレジスタは、秘密鍵のスクランブリングの変更を取り消すために使用される。従って、第２のＯＴＰレジスタは、装置によって使用された鍵をこれらのライフサイクルイベント前の値に「復元する」ことができ−それによって、ライフサイクルイベントより前に使用されたデータ、承認、および／または認証を使用する能力を回復する。
【０００８】
［0015］  第３のＯＴＰレジスタは、秘密鍵のスクランブリングに対する恒久的変更に影響を与えるために使用され−それによって、データ、承認、または認証がアクセスされること、または、使用されることを恒久的に防止する。このレジスタ内のビットは、たとえば、ユーザが装置を売り渡し、その結果、新しい所有者に以前の所有者のデータを読み取って欲しくない、または、以前の所有者と関連付けられた承認および認証を使用して欲しくないときに、使用されることがある。
【０００９】
［0016］  図１は、ライフサイクルマネジメントシステムを示すブロック図である。図１では、システム１００は、ワンタイム・プログラマブル（ＯＴＰ）メモリ１２０と、ライフサイクル値生成器１３０と、一方向性関数１４０と、鍵結合１５０と、秘密鍵１７０と、ＯＴＰプログラミング回路１８０とを備える。ＯＴＰメモリ１２０は、ライフサイクル・アドバンス・レジスタ１２１と、ライフサイクル・ロールバック・レジスタ１２２と、パーソナリティレジスタ１２３とを含む。
【００１０】
［0017］  ＯＴＰメモリ１２０は、たとえば、（半導体基板上に製造された、または、半導体材料を使用するといった）ワンタイム電気的プログラマブル半導体メモリでもよい。ＯＴＰメモリによって記憶されたビットは、ハードウェア設計によって、これらの初期値から別の値に１回しか変更することができない。ＯＴＰメモリ１２０によって記憶されたビットは、一旦初期値から変更されると、これらの初期値に戻すことができない。たとえば、ＯＴＰメモリ１２０を構成するビットは、「ヒューズ」ビットとして実装されることがある。これらのヒューズビットは、一旦変更されると（すなわち、飛ばされると）、不可逆的な物理過程（たとえば、導電性素子の破壊）をたどり、その結果、これらの初期値に戻すことができない。
【００１１】
［0018］  ＯＴＰプログラミング回路１８０は、ＯＴＰメモリ１２０に動作的に結合されている。ＯＴＰプログラミング回路１８０は、ＯＴＰメモリ１２０に動作的に結合されて、ＯＴＰメモリ１２０内のビットをプログラムする（たとえば、ライフサイクル・アドバンス・レジスタ１２１、ライフサイクル・ロールバック・レジスタ１２２、パーソナリティレジスタ１２３などの値を変更するためにヒューズを飛ばす）。ＯＴＰプログラミング回路１８０は、システム１００を含む装置上で動く（図１に図示されていない）プロセッサおよび／またはソフトウェアによってＯＴＰメモリ１２０内のビットを変更するために制御されることがある。このプロセッサおよび／またはソフトウェアは、装置のユーザによるコマンドに応答してＯＴＰメモリ１２０内のビットを変更することがある。
【００１２】
［0019］  秘密鍵１７０は、一方向性関数１４０に動作的に結合されている。秘密鍵１７０（装置生成ワンタイム・プログラマブル鍵分割−ＤＧＯＫとしても知られている）は、秘密鍵値１７５をハードウェアに保存する。秘密鍵１７０は、秘密鍵値１７５を一方向性関数１４０に提供する。秘密鍵１７０は、たとえば、装置のネットリスト、安全が確保されたフラッシュのエリア、および／または、何らかのその他の不揮発性構造または回路に埋め込まれることがある。実施形態では、秘密鍵１７０は、２５６ビットの秘密鍵値１７５を記憶する。
【００１３】
［0020］  ライフサイクル・アドバンス・レジスタ１２１は、ライフサイクル値生成器１３０に動作的に結合されている。ライフサイクル・アドバンス・レジスタ１２１は、ライフサイクル・アドバンス値１２５を記憶する。ＯＴＰメモリ１２０は、ライフサイクル値生成器１３０にライフサイクル・アドバンス・レジスタ１２１によって記憶されたライフサイクル・アドバンス値１２５を提供する。ライフサイクル・ロールバック・レジスタ１２２は、ライフサイクル値生成器１３０に動作的に結合されている。ライフサイクル・ロールバック・レジスタ１２２は、ライフサイクル・ロールバック値１２６を記憶する。ＯＴＰメモリ１２０は、ライフサイクル値生成器１３０にライフサイクル・ロールバック・レジスタ１２２によって記憶されたライフサイクル・ロールバック値１２６を提供する。
【００１４】
［0021］  ライフサイクル値生成器１３０は、ＯＴＰメモリ１２０からライフサイクル・アドバンス値１２５およびライフサイクル・ロールバック値１２６を受信する。ライフサイクル値生成器１３０は、ライフサイクル状態値１３５を作り出す。ライフサイクル値生成器１３０は、ライフサイクル状態生成プロセス／関数を使用してライフサイクル・アドバンス値１２５およびライフサイクル・ロールバック値１２６を処理する。このライフサイクル状態生成プロセスは、ライフサイクル・アドバンス値１２５およびライフサイクル・ロールバック値１２６からライフサイクル状態値１３５を作り出す。ライフサイクル状態値１３５は、一方向性関数１４０に提供される。
【００１５】
［0022］  パーソナリティレジスタ１２３は、一方向性関数１４０に動作的に結合されている。パーソナリティレジスタ１２３は、パーソナリティ値１２７を記憶する。ＯＴＰメモリ１２０は、パーソナリティレジスタ１２３によって記憶されたパーソナリティ値１２７を一方向性関数１４０に提供する。一部の実施形態では、システム１００を含む装置上のプロセッサおよび／またはソフトウェアは、ＯＴＰメモリ１２０からライフサイクル・アドバンス・レジスタ１２１、ライフサイクル・ロールバック・レジスタ１２２、およびパーソナリティレジスタ１２３のうちの１つ以上の内容を読み取ること、または、そうではない場合、ライフサイクル・アドバンス値１２５、ライフサイクル・ロールバック値１２６、またはパーソナリティ値１２８のうちの１つ以上を取得することができることがある。
【００１６】
［0023］  一方向性関数１４０は、秘密鍵値１７５、ライフサイクル状態値１３５およびパーソナリティ値１２７を使用して、鍵分割値１４５を生成する。一方向性関数１４０は、たとえば、鍵ツリー経路としてパーソナリティ値１２７、および、次世代暗号標準（ＡＥＳ）鍵として秘密鍵値１２７を使用することを含むプロセスによって、鍵分割値１４５を生成することがある。同様に、一方向性関数１４０を使用して鍵分割値１４５を生成するプロセスは、鍵ツリー経路としてライフサイクル状態値１３５と、ＡＥＳ鍵として前のパーソナリティ値１２７の結果および秘密鍵１７５とを使用することを含むことがある。他の一方向性関数／プロセスが秘密鍵値１７５、ライフサイクル状態値１３５およびパーソナリティ値１２７から鍵分割値１４５を生成するために使用されることがある。それ故に、所与のライフサイクル状態値１３５または所与のパーソナリティ値１２７の差は、（１ビットの差であっても）結果として異なった鍵分割値１４５を作り出すことが理解されるべきである。その上、一方向性プロセスが適切に選択された場合、鍵分割値１４５から秘密鍵値１７５を決定することは、−たとえ、ライフサイクル状態値（群）１３５、ライフサイクル・アドバンス値（群）１２５、ライフサイクル・ロールバック値（群）１２６、および／または、パーソナリティ値（群）１２７が既知であるとしても−経済的に実行不可能であろう。
【００１７】
［0024］  鍵分割値１４５は、鍵結合１５０に提供される。鍵分割値１４５およびベース鍵識別値１５１に基づいて、鍵結合１５０は、暗号化演算において装置によって用いられる暗号鍵１６０を作り出す。鍵１６０は、複数の鍵を含むものとして図１に示されている。具体的には、図１では、鍵１６０は、第１の鍵１６１、第２の鍵１６２および第３の鍵１６３を含む。鍵１６０は、たとえば、署名（すなわち、認証）用の楕円曲線暗号（ＥＣＣ）鍵、暗号化／復号用のＥＣＣ秘密鍵、ＡＥＳ−２５６装置固有鍵、および／またはＡＥＳ−１２８装置固有鍵を含み得る。その他の用途のための他の鍵も鍵結合１５０によって鍵分割値１４５から作り出すことができる。
【００１８】
［0025］  実施形態では、システム１００を含む装置は、様々なライフサイクルを経験することがある。これらのライフサイクルは、鍵１６０を保護および／または変更したいという要望を必ず伴う。たとえば、装置は、秘密鍵１７０に秘密鍵値１７５が設定された後に、ラボデバッグまたはシリコンデバッグを受けることがある。このことは、たとえば、梱包後に、装置および／またはＩＣ保持システム１００が初期デバッグおよびトリアージのため販売業者に戻ってくるときに行われることがある。別の実施例では、装置は、ユーザによって現場で使用され、その後、故障解析のためＯＥＭ、ＯＤＭ、修理店、またはチップ販売業者へ送り返されることがある。その装置の不良が修理されたとき、装置は、エンドユーザへ返送される可能性がある。この場合、装置は、装置を修理のため発送する前に利用することができた、同じ機能性（および記憶データ）を提供することが望ましい。別の実施例では、エンドユーザは、装置を別のユーザに販売することがある。この場合、第１のユーザは、自分の鍵（および、その結果として自分のデータ）を第２のユーザに明らかにしたくないであろう。
【００１９】
［0026］  実施形態では、パーソナリティレジスタ１２３は、初期値−たとえば、１６ビット零値（すなわち、０ｘ００００ｈ）−を使って構成されている。動作中に、パーソナリティレジスタ１２３のビットは、サーモメータ符号化カウンタの方式でＯＴＰプログラミング１８０によって連続して変更されることがある。ＯＴＰプログラミング１８０によるパーソナリティレジスタ１２３内のビットのこの変更は、装置上で動いている特権プロセス（たとえば、オペレーティングシステム）によって制御されることがある。ＯＴＰメモリのビット（および、その結果としてパーソナリティレジスタ１２３）は、パーソナリティレジスタ１２３の全てのビットが変更されたとき（たとえば、０ｘＦＦＦＦｈという値に対して「１」に設定されたとき）、１回だけ変更することができるので、パーソナリティレジスタ１２３の値をさらに変更しようとする試みは、エラーが通知されるという結果を招くことがある。
【００２０】
［0027］  実施例では、装置のユーザは、装置の所有を（たとえば、新しいユーザに）引き渡す前に、パーソナリティレジスタ１２３をインクリメントする（または、そうでなければ、パーソナリティレジスタ１２３内の少なくとも１ビットを変更する）ことができる。別の実施例では、ＯＤＭは、装置をＯＥＭに送る前にインクリメントする（または、そうでなければ、パーソナリティレジスタ１２３内の少なくとも１ビットを変更する）ことがある。これは、ＯＤＭが見つける秘密が「取り残される」ことがないことを保証する。これらの実施例では、ユーザおよび／またはＯＤＭは、システム１００がパーソナリティレジスタ１２３の内容への変更以前に生成された暗号鍵１６０とは異なった暗号鍵１６０を確実に生成するようにするためパーソナリティの内容を読み取ることができる。
【００２１】
［0028］  実施形態では、ライフサイクル・アドバンス・レジスタ１２１は、初期値−たとえば、１６ビット零値（すなわち、０ｘ００００ｈ）−を使って構成されている。同様に、ライフサイクル・ロールバック・レジスタ１２２は、初期値−たとえば、１６ビット零値（すなわち、０ｘ００００ｈ）を使って構成されている。動作中に、ライフサイクル・アドバンス・レジスタ１２１のビットおよびライフサイクル・ロールバック・レジスタ１２２のビットは、連続して、かつ、独立して、サーモメータ符号化カウンタの方式でＯＴＰプログラミング１８０によって変更されることがある。
【００２２】
［0029］  ＯＴＰプログラミング１８０によるライフサイクル・アドバンス・レジスタ１２１の内容およびライフサイクル・ロールバック・レジスタ１２２の内容の変更は、装置上で動いている特権プロセス（たとえば、オペレーティングシステム）によって制御されることがある。ＯＴＰプログラミング１８０によるライフサイクル・アドバンス・レジスタ１２１内の個々のビット値およびライフサイクル・ロールバック・レジスタ１２２のビットの変更は、装置上で動いているそれぞれの特権プロセスによって制御されることがある。たとえば、１６ビットのライフサイクル・アドバンス・レジスタ１２１および１６ビットのライフサイクル・ロールバック・レジスタ１２２に対して、最大で１６までの特権プロセスは、それぞれがライフサイクル・アドバンス・レジスタ１２１および／またはライフサイクル・ロールバック・レジスタ１２２内の単独の対応するビットの値を変更することだけを許可されることがある。換言すれば、たとえば、ライフサイクル・アドバンス・レジスタ１２１またはライフサイクル・ロールバック・レジスタ１２２内の特定のビットを変更するために、対応するシステム承認プロセス（たとえば、ルートプロセス）からの承認が必要とされるであろう。それ故に、装置は、本実施例では、最大で１６個のこれらの「ルート」承認エンティティを有することがある。
【００２３】
［0030］  ライフサイクル・アドバンス・レジスタ１２１は、装置に一時的な暗号鍵１６０の集合を与えたいという要望があるとき、インクリメントすること（または、そうでなければ、ワンタイム・プログラマブル・ビット変更を行うこと）ができる。たとえば、ユーザが装置をデバッグ／診断のためＯＥＭへ送るとき、ユーザは、ライフサイクル・アドバンス・レジスタ１２１をインクリメントするように装置を制御することができる。それ故に、ＯＥＭは、装置がライフサイクル・アドバンス・レジスタ１２１をインクリメントする以前に使用していた鍵１６０の集合を受信することがない、または、経済的に見つけることができないであろう。それどころか、ＯＥＭは、（変更されたライフサイクル・アドバンス値１２５から得られる）新しいライフサイクル状態値１３５から作り出された一時的な鍵１６０を受信することができるであろう。
【００２４】
［0031］  ＯＥＭが装置をユーザに返却したとき、ユーザは、ライフサイクル・ロールバック・レジスタ１２２内でインクリメントすること（または、適切なワンタイム・プログラマブル・ビットを変更すること）によって元の鍵１６０を復元することができる。このように、ライフサイクル・アドバンス・レジスタ１２１をインクリメントすることは、一時的な鍵１６０を作り出し、ライフサイクル・ロールバック・レジスタ１２２をインクリメントすることは、その効果を取り消し、元の鍵１６０を作り出す。ライフサイクル値生成器１３０は、ライフサイクル・ロールバック・レジスタ１２２内に記憶されたある種の値がライフサイクル・アドバンス・レジスタ１２１内に記憶されたある種の値−たとえば、同一の値−の影響を取り消すように構成されている。ライフサイクル値生成器１３０は、他の組み合わせが選択され、選択されたライフサイクル・ロールバック値１２６が対応するライフサイクル・アドバンス値１２５の影響を取り消すように構成されることがある。
【００２５】
［0032］  実施形態では、ライフサイクル・アドバンス・レジスタ１２１への変更は、問題を悪化する可能性がある。たとえば、第１のユーザは、第１の一時的な鍵１６０の集合を使用するためにライフサイクル・アドバンス・レジスタ１２１をインクリメントすることがあり、その後、第２のユーザは、第２の一時的な鍵１６０の集合を使用するためにライフサイクル・アドバンス・レジスタ１２１をインクリメントすることがある。第２のユーザ（または第１のユーザ）は、その後、第１の一時的な鍵の集合の使用に戻るためにライフサイクル・ロールバック・レジスタ１２２をインクリメントすることがある。ライフサイクル・ロールバック・レジスタ１は、元の鍵１６０の使用に戻るためにもう一度インクリメントされることがある。
【００２６】
［0033］  ＯＰＴメモリのビット（および、その結果としてライフサイクル・アドバンス・レジスタ１２１とライフサイクル・ロールバック・レジスタ１２２）は１回しか変更できないので、ライフサイクル・アドバンス・レジスタ１２１またはライフサイクル・ロールバック・レジスタ１２２の全てのビットが変更されたとき（たとえば、０ｘＦＦＦＦｈという値のため「１」に設定されたとき）、ライフサイクル・アドバンス・レジスタ１２１とライフサイクル・ロールバック・レジスタ１２２のいずれかの値をさらに変更しようとする試みは、エラーが通知されるという結果を招くことがある。
【００２７】
［0034］  図２は、ライフサイクル状態に依存する暗号鍵を生成する方法を示すフローチャートである。図２に示されたステップは、システム１００の１つ以上の要素によって行われることがある。装置は、ソフトウェアを使ってアクセスできない秘密鍵を用いて構成される（２０２）。たとえば、システム１００は、秘密鍵値１７５を一方向性関数１４０に提供する秘密鍵１７０を用いて構成され得る。装置は、秘密鍵１７０（および、その結果として秘密鍵値１７５）が装置上で動いているソフトウェアによって読み書きできないように構成されている。
【００２８】
［0035］  ワンタイム・プログラマブル（ＯＴＰ）メモリは、初期値を用いて構成される（２０４）。たとえば、ＯＴＰメモリ１２０（および、その結果として、特に、ライフサイクル・アドバンス・レジスタ１２１と、ライフサイクル・ロールバック・レジスタ１２２と、パーソナリティレジスタ１２３）は、１回だけ変更され得る初期値を用いて構成されることがある。たとえば、ＯＴＰメモリ１２０がヒューズビットで構成されているとき、ヒューズを飛ばすことができるリンクの初期（すなわち、損傷のない、または、飛ばされていない）状態は、ＯＴＰメモリ１２０（および、その結果として、特に、ライフサイクル・アドバンス・レジスタ１２１と、ライフサイクル・ロールバック・レジスタ１２２と、パーソナリティレジスタ１２３）によって記憶される初期値を決定する。別の実施例では、ＯＴＰメモリ１２０は、安全が確保されたフラッシュメモリ（または、１回だけプログラムされるように構成されたその他の不揮発性メモリ）のエリアを備える場合、ＯＴＰメモリ１２０によって記憶された初期値（および、その結果として、特に、ライフサイクル・アドバンス・レジスタ１２１と、ライフサイクル・ロールバック・レジスタ１２２と、パーソナリティレジスタ１２３）は、製造業者（ＯＥＭ、またはＯＤＭなど）によってプログラムされることがある。
【００２９】
［0036］  ライフサイクル・アドバンス値は、ＯＴＰメモリから受け取られる（２０６）。たとえば、ライフサイクル値生成器１３０は、ＯＴＰメモリ１２０（および、特に、ライフサイクル・アドバンス・レジスタ１２１）からライフサイクル・アドバンス値１２５を受信することがある。ライフサイクル・ロールバック値は、ＯＴＰメモリから受け取られる（２０８）。たとえば、ライフサイクル値生成器１３０は、ＯＴＰメモリ１２０（および、特に、ライフサイクル・アドバンス・ロールバック・レジスタ１２２）からライフサイクル・ロールバック値１２６を受信することがある。
【００３０】
［0037］  ライフサイクル状態値は、ライフサイクル・アドバンス値およびライフサイクル・ロールバック値から生成される（２１０）。たとえば、ライフサイクル値生成器１３０は、ライフサイクル状態生成プロセスを使用して、ライフサイクル・アドバンス値１２５およびライフサイクル・ロールバック値１２６に基づいてライフサイクル状態値１３５を計算することがある。ライフサイクル状態生成プロセスの例は、ライフサイクル状態値１３５を作り出すために、ライフサイクル・アドバンス値１２５およびライフサイクル・ロールバック値１２６のビット排他的論理和（ＸＯＲ）で構成されること、または、ビット排他的論理和（ＸＯＲ）であることがある。
【００３１】
［0038］  パーソナリティ値は、ＯＴＰメモリから受け取られる（２１２）。たとえば、一方向性関数１４０は、ＯＴＰメモリ１２０（および、特に、パーソナリティレジスタ１２３）からパーソナリティ値１２７を受信することがある。鍵分割値は、秘密鍵値、パーソナリティ値、およびライフサイクル状態値に基づいて生成される（２１４）。たとえば、一方向性関数１４０は、一方向性スクランブリング関数への入力として秘密鍵値１７５、ライフサイクル状態値１３５、およびパーソナリティ値１２７を使用して鍵分割値１４５を生成することがある。スクランブリング関数の例は、鍵ツリー経路（群）としてパーソナリティ値１２７および／またはライフサイクル状態値１３５を、ＡＥＳ鍵としての秘密鍵値１７５と共に含むことがある（逆もまた同様である）。
【００３２】
［0039］  暗号鍵は、鍵分割値から生成される（２１６）。たとえば、鍵結合１５０は、鍵分割値１４５およびベース鍵識別１５１に基づいて鍵１６０を生成することがある。鍵１６０は、たとえば、シグナリング用のＥＣＣ鍵、暗号化／復号用のＥＣＣ秘密鍵、ＡＥＳ−２５６装置固有鍵、および／またはＡＥＳ−１２８装置固有鍵を含むことがある。
【００３３】
［0040］  図３は、暗号ライフサイクルマネジメントシステムを含む装置を示すブロック図である。図３では、装置３００は、ライフサイクル鍵生成器３１０、プロセッサ３９０、ユーザ入力３９１、インターフェース３９２、およびテストインターフェース３９３を備える。ライフサイクル鍵生成器３１０は、ワンタイム・プログラマブル・メモリ３２０、ライフサイクル値生成器３３０、装置生成ワンタイム・プログラマブル鍵分割（ＤＧＯＫ）３７０、鍵分割生成器３４０、鍵生成器３５０、ＯＴＰプログラミング回路３８０、およびＯＴＰ読み取り回路３８１を含む。ワンタイム・プログラマブル・メモリ３２０は、たとえば、（たとえば、半導体基板上に、または、半導体材料を使用して製作された）ワンタイム電気的プログラマブル半導体メモリにもなり得ることが理解されるべきである。
【００３４】
［0041］  ＤＧＯＫ  ３７０（秘密鍵としても知られている）は、鍵生成器３４０に動作的に連結されている。ＤＧＯＫ  ３７０は、秘密値をハードウェアに記憶する。実施形態では、ＤＧＯＫは、ＯＴＰメモリ３２０の安全な（すなわち、プロセッサ３９０および／またはテストインターフェース３９３からアクセスできない）場所に記憶されることがある。別の実施形態では、ＤＧＯＫ  ３７０は、ＤＧＯＫ  ３７０がプロセッサ３９０および／またはテストインターフェース３９３を介してアクセスできないように（読み取られない、書き込まれない、計算されない、または、そうではない場合に、判別されないように）、設計（すなわち、ネットリスト）または装置３００の構成に埋め込まれることがある。ＤＧＯＫ  ３７０は、秘密値を鍵分割生成器３４０に提供する。実施形態では、ＤＧＯＫ  ３７０は、２５６ビット秘密値を鍵分割生成器３４０に提供する。
【００３５】
［0042］  ライフサイクル・アドバンス・レジスタ３２１は、ライフサイクル値生成器３３０に動作的に結合されている。ＯＴＰメモリ３２０は、ライフサイクル・アドバンス・レジスタ３２１によって記憶されたライフサイクル・アドバンス値をライフサイクル値生成器３３０に提供する。ライフサイクル・ロールバック・レジスタ３２２は、ライフサイクル値生成器３３０に動作的に結合されている。ＯＴＰメモリ３２０は、ライフサイクル・ロールバック・レジスタ３２２によって記憶されたライフサイクル・ロールバック値をライフサイクル値生成器３３０に提供する。
【００３６】
［0043］  ライフサイクル値生成器３３０は、ＯＴＰメモリ３２０からライフサイクル・アドバンス値およびライフサイクル・ロールバック値を受信する。ライフサイクル値生成器３３０は、ライフサイクル状態生成プロセス／関数を使用して、ライフサイクル・アドバンス値およびライフサイクル・ロールバック値を処理する。このライフサイクル状態生成プロセスは、それぞれが受信したライフサイクル・アドバンス値およびライフサイクル・ロールバック値からライフサイクル状態値を作り出す。これらのライフサイクル状態値は、鍵分割生成器３４０に提供される。
【００３７】
［0044］  パーソナリティレジスタ３２３は、鍵分割生成器３４０に動作的に結合されている。パーソナリティレジスタ３２３は、パーソナリティ値を記憶する。ＯＴＰメモリ３２０は、パーソナリティレジスタ３２３によって記憶されたパーソナリティ値を鍵分割生成器３４０に提供する。ＯＴＰプログラミング３８０およびＯＴＰ読み取り回路３８１を使用すると、装置３００上のソフトウェアの制御下にあるプロセッサ３９０は、ライフサイクル・アドバンス・レジスタ３２１、ライフサイクル・ロールバック・レジスタ３２２、およびパーソナリティレジスタ３２３のうちの１つ以上の内容を読み書きすることができる。テストインターフェース３９３も読み書きするために、または、そうではない場合、ライフサイクル・アドバンス・レジスタ３２１、ライフサイクル・ロールバック・レジスタ３２２、およびパーソナリティレジスタ３２３のうちの１つ以上の内容を読み書きするために、または、そうではない場合、取得および／または設定するために使用されることがある。
【００３８】
［0045］  鍵分割生成器３４０は、ＤＧＯＫ  ３７０、ライフサイクル状態生成器３３０からのライフサイクル状態値、パーソナリティレジスタ３２３からのパーソナリティ値を使用して、鍵分割値を生成する。鍵分割生成器３４０は、たとえば、鍵ツリー経路として所定のパーソナリティ値、および、ＡＥＳ鍵としてＤＧＯＫ  ３７０を使用することを含むプロセスによって鍵分割値を作り出すことがある。同様に、鍵分割値を作り出すために使用されたプロセス鍵分割生成器３４０は、鍵ツリー経路としてライフサイクル状態値、および、ＡＥＳ鍵として以前の処理の結果を使用することをさらに含むことがある。他の一方向性関数／プロセスがＤＧＯＫ  ３７０、ライフサイクル状態値、およびパーソナリティ値から鍵分割値を生成するために使用されることがある。それ故に、所定のライフサイクル状態値、または所定のパーソナリティ値の間の差は、（たとえ、１ビットの差であっても）異なった鍵分割値が作り出され、プロセッサ３９０に供給されることをもたらすことが理解されるべきである。その上に、一方向性関数プロセスが適切に選択された場合、プロセッサ３９０に提供された鍵分割値または鍵からＤＧＯＫ  ３７０を決定することは経済的に実行不可能であろう。同様に、テストインターフェース３９３によってアクセスされ得るデータ、または、制御され得る回路からＤＧＯＫ  ３０７を決定することも経済的に実行不可能であろう。
【００３９】
［0046］  鍵分割生成器３４０によって出力された鍵分割値は、鍵生成器３５０に提供される。鍵分割値およびベース鍵識別値に基づいて、鍵生成器３５０は、暗号化演算中にプロセッサ３９０によって用いられる暗号鍵を作り出す。これらの暗号化演算は、たとえば、署名（すなわち、認証）用の楕円曲線暗号方式（ＥＣＣ）、ＥＣＣ暗号化および／または復号、ＡＥＳ−２５６暗号化および／または復号、および／または、ＡＥＳ−１２８暗号化および／または復号を含み得る。その他の用途のための他の暗号化演算も鍵生成器３５０によって鍵分割値から作り出すことができる。
【００４０】
［0047］  プロセッサ３９０は、ライフサイクル鍵生成器３１０に動作的に結合されている。プロセッサ３９０は、ライフサイクル鍵生成器３１０による鍵の生成を少なくとも制御するためにライフサイクル鍵生成器３１０に動作的に結合されている。プロセッサ３９０は、ライフサイクル鍵生成器３１０の鍵生成器３５０に動作的に結合され、鍵生成器３５０によって生成された鍵を受信する。プロセッサ３９０は、ライフサイクル鍵生成器３１０のＯＴＰメモリ３２０に動作的に結合され、ＯＴＰメモリ３２０によって記憶された値を読み書きする。特に、プロセッサ３９０は、ライフサイクル・アドバンス・レジスタ３２１、ライフサイクル・ロールバック・レジスタ３２２、およびパーソナリティレジスタ３２３を読み書きするためにＯＴＰメモリ３２０に動作的に結合されている。テストインターフェース３９３は、プロセッサ３９０およびライフサイクル鍵生成器３１０に動作的に結合され、回路を制御およびテストする。テストインターフェース３９３は、たとえば、バウンダリスキャンおよび他の順次テスト／アクセス動作のためのテストアクセスポート（ＴＡＰ）であること、または、テストアクセスポート（ＴＡＰ）を含むことがある。
【００４１】
［0048］  装置３００は、様々なライフサイクルを経験することがある。ライフサイクル・アドバンス・レジスタ３２１およびパーソナリティレジスタ３２３内の値を変更することにより、プロセッサ３９０によって使用され、および／または、テストインターフェース３９３を介してアクセス可能である、ライフサイクル鍵生成器３１０により作り出された鍵は、変更され得る。プロセッサ３９０によって使用される鍵を変更することにより、装置３００に関連付けられたデータ（および／または認証および／または承認）は、不正使用／アクセスから保護される。同様に、テストインターフェース３９３によりアクセス可能な鍵を変更することにより、装置３００と関連付けられたデータ（および／または認証および／または承認）は、不正使用／アクセスから保護される。
【００４２】
［0049］  動作中に、パーソナリティレジスタ３２３のビットは、ユーザインターフェース３９１および／またはインターフェース３９２を介して受け取られたコマンドに応答して、プロセッサ３９０によって連続して（かつ恒久的に）変更されることがある。これらのパーソナリティレジスタ３２３の変更は、サーモメータ符号化カウンタの方式でもよい。パーソナリティレジスタ３２３への変更は、恒久的かつ不可逆的であるため、ライフサイクル鍵生成器３１０によって作り出された鍵は、パーソナリティレジスタ３２３内の値が変更されたとき、恒久的に変更される。
【００４３】
［0050］  動作中に、ライフサイクル・アドバンス・レジスタ３２１のビットは、ユーザインターフェース３９１および／またはインターフェース３９２を介して受け取られたコマンドに応答して、プロセッサ３９０によって連続して（かつ恒久的に）変更されることがある。ライフサイクル・アドバンス・レジスタ３２１への変更は、サーモメータ符号化カウンタの方式でもよい。しかしながら、ライフサイクル・アドバンス・レジスタ３２１への変更の影響は、対応するライフサイクル・ロールバック・レジスタ３２２への変更によって取り消されることがある。それ故に、ライフサイクル鍵生成器３１０に一時的な鍵を作り出すライフサイクル・アドバンス・レジスタ３２１への変更は、ライフサイクル・ロールバック・レジスタ３２２への適切な変更によって無効にすることができる。ライフサイクル・アドバンス・レジスタ３２１への変更による影響を取り消すライフサイクル・ロールバック・レジスタ３２２への変更は、ライフサイクル値生成器３３０によって決定される。換言すれば、ライフサイクル値生成器３３０によって実装されるライフサイクル値生成プロセスは、ライフサイクル・ロールバック・レジスタ３２２内のある種の値がライフサイクル・アドバンス・レジスタ３２１内のある種の値の影響を取り消すように構成されている。
【００４４】
［0051］  たとえば、ライフサイクル値生成プロセスがライフサイクル・ロールバック・レジスタ３２２とライフサイクル・アドバンス・レジスタ３２１との間のビットＸＯＲ演算である場合、ライフサイクル・ロールバック・レジスタ３２２とライフサイクル・アドバンス・レジスタ３２１とが等しい（たとえば、両方共に０ｘ００００ｈ、両方共に０ｘ００ＦＦｈなどである）限り、結果として得られる同一のライフサイクル状態値（たとえば、０ｘ００００ｈ）が鍵分割生成器３４０に提供されることになり−これによって、ライフサイクル鍵生成器３１０は、同じ鍵の集合をプロセッサ３９０に提供する。ライフサイクル・ロールバック・レジスタ３２２とライフサイクル・アドバンス・レジスタ３２１とが等しくない場合、異なったライフサイクル状態値が鍵分割生成器３４０に提供されることになり−その結果、ライフサイクル鍵生成器３１０は、それぞれに異なった鍵の集合をプロセッサ３９０に提供する。
【００４５】
［0052］  例として説明するために、ライフサイクル値生成プロセスがライフサイクル・ロールバック・レジスタ３２２とライフサイクル・アドバンス・レジスタ３２１との間のビットＸＯＲ演算である上記実施例を検討する。ライフサイクル・アドバンス・レジスタ３２１が０ｘ００ＦＦｈであり、ライフサイクル・ロールバック・レジスタ３２２が０ｘ００７Ｆｈである場合、ライフサイクル状態生成器は、値０ｘ００８０ｈを鍵分割生成器３４０に提供することになる。０ｘ００８０ｈが０ｘ００００ｈに等しくはなく、かつ、鍵分割生成器３４０がライフサイクル状態値を含む全ての入力値に依存する一方向性関数を実装するので、鍵分割生成器３４０によって作り出された鍵分割値、（および、その結果として、ライフサイクル鍵生成器３１０によって作り出された鍵）は、異なるであろう。
【００４６】
［0053］  別の実施例では、ライフサイクル・アドバンス・レジスタ３２１が０ｘ００ＦＦｈから０ｘ０１ＦＦｈまでインクリメントされるサーモメータ符号であり、かつ、ライフサイクル・ロールバック・レジスタ３２２も０ｘ００７Ｆｈから０ｘ００ＦＦまでインクリメントされるサーモメータ符号である場合、ライフサイクル状態生成器は、値０ｘ００１００を鍵分割生成器３４０に提供するであろう。０ｘ００１００ｈ（現在のライフサイクル状態値）は、０ｘ００８０ｈ（前のライフサイクル状態値）に等しくはないので、鍵分割生成器３４０（および、その結果としてライフサイクル鍵生成器によって作り出された鍵）と、インクリメント前の値は、−これらの値がどちらもライフサイクル状態の１つのインクリメントしか表現しないとしても−異なるであろう。
【００４７】
［0054］  それ故に、ライフサイクル値生成器３３０は、ライフサイクル・ロールバック・レジスタ３２２内に記憶された（全部ではなく）ある種の値がライフサイクル・アドバンス・レジスタ３２１内に記憶された、対応するある種の値の影響を取り消すように構成されていることが理解されるべきである。他の実施形態では、ライフサイクル値生成器３３０は、ライフサイクル・アドバンス値とライフサイクル・ロールバック値との任意のペアが対応するライフサイクル・アドバンス値の影響を取り消す（または、取り消すことができない）ように構成されることがある。
【００４８】
［0055］  図４Ａおよび図４Ｂは、暗号化管理されたライフサイクル状態を構成および構成解除する方法を示すフローチャートである。図４Ａおよび図４Ｂにおけるステップは、システム１００および／または装置３００の１つ以上の要素によって行われることがある。第１のライフサイクル状態値は、第１のライフサイクル・アドバンス値および第１のライフサイクル・ロールバック値から生成される（４０２）。たとえば、鍵状態生成器３３０は、ライフサイクル・アドバンス・レジスタ３２１およびライフサイクル・ロールバック・レジスタ３２２の内容から第１のライフサイクル状態値を生成することがある。この第１のライフサイクル状態値は、鍵分割生成器３４０に提供される。
【００４９】
［0056］  第１の鍵分割値は、第１のライフサイクル状態値、パーソナリティ値、および秘密鍵値に基づいて生成される（４０４）。たとえば、鍵分割生成器３４０は、鍵生成器３５０に提供される第１の鍵分割値を生成することがある。この第１の鍵分割値は、鍵分割値を作り出すために入力としてライフサイクル状態生成器３３０からの第１のライフサイクル状態値と、パーソナリティレジスタ３２３の内容と、ＤＧＯＫ  ３７０とを取り込む一方向性関数の結果でもよい。第１の鍵（群）は、第１の鍵分割値に基づいて生成される（４０６）。たとえば、鍵生成器３５０は、鍵分割生成器３４０から受け取られた第１の鍵分割値に基づいて１つ以上の鍵を生成することがある。
【００５０】
［0057］  第１のライフサイクル・アドバンス・ビットの値は、第２のライフサイクル・アドバンス値を作成するために変更される（４０８）。たとえば、プロセッサ３９０は、ライフサイクル・アドバンス・レジスタ３２１内のビットの値を変更するためにＯＴＰプログラミング３８０を制御することがある。プロセッサ３０９は、ユーザ入力３９１、および／または、インターフェース３９２を介して受け取られたコマンド（たとえば、無線インターフェースを介して受信されたコマンド）に応答して、ライフサイクル・アドバンス・レジスタ３２１内のビットの値を変更するためにＯＴＰプログラミング３８０を制御することがある。
【００５１】
［0058］  第２のライフサイクル状態値は、第２のライフサイクル・アドバンス値および第１のライフサイクル・ロールバック値から生成される（４１０）。たとえば、鍵状態生成器３３０は、変更されたライフサイクル・アドバンス・レジスタ３２１の内容と、変更されていないライフサイクル・ロールバック・レジスタ３２２の内容とから第２のライフサイクル状態値を生成することがある。この第２のライフサイクル状態値は、鍵分割生成器３４０に提供される。
【００５２】
［0059］  第２の鍵分割値は、第２のライフサイクル状態値、パーソナリティ値、および秘密鍵値に基づいて生成される（４１２）。たとえば、鍵分割生成器３４０は、鍵生成器３５０に提供される第２の鍵分割値を生成することがある。この第２の鍵分割値は、第２の鍵分割値を作り出すために入力としてライフサイクル状態生成器３３０からの第２のライフサイクル状態値と、パーソナリティレジスタ３２３の内容と、ＤＧＯＫ  ３７０とを取り込む一方向性関数の結果でもよい。第２の鍵（群）は、第２の鍵分割値に基づいて生成される（４１４）。たとえば、鍵生成器３５０は、鍵分割生成器３４０から受け取られた第２の鍵分割値に基づいて１つ以上の鍵を生成することがある。
【００５３】
［0060］  第１のライフサイクル・ロールバック・ビットの値は、第２のライフサイクル・ロールバック値を作成するために変更される（４１６）。たとえば、プロセッサ３９０は、ライフサイクル・ロールバック・レジスタ３２２内のビットの値を変更するためにＯＴＰプログラミング３８０を制御することがある。プロセッサ３０９は、ユーザ入力３９１、および／または、インターフェース３９２を介して受け取られたコマンド（たとえば、無線インターフェースを介して受信されたコマンド）に応答して、ライフサイクル・ロールバック・レジスタ３２２内のビットの値を変更するためにＯＴＰプログラミング３８０を制御することがある。
【００５４】
［0061］  第１のライフサイクル状態値は、第２のライフサイクル・アドバンス値および第２のライフサイクル・ロールバック値から生成される（４１８）。たとえば、鍵状態生成器３３０は、変更されたライフサイクル・アドバンス・レジスタ３２１の内容と、変更されたライフサイクル・ロールバック・レジスタ３２２の内容とから第１のライフサイクル状態値を生成することがある。この第１のライフサイクル状態値は、鍵分割生成器３４０に提供される。
【００５５】
［0062］  第１の鍵分割値は、パーソナリティ値と、秘密鍵値と、第２のライフサイクル・アドバンス値および第２のライフサイクル・ロールバック値から生成された第１のライフサイクル状態値とに基づいて生成される（４２０）。たとえば、鍵分割生成器３４０は、ライフサイクル状態生成器３３０からの（変更されたライフサイクル・アドバンス・レジスタ３２１の内容および変更されたライフサイクル・ロールバック・レジスタ３２２の内容によって作り出された）第１のライフサイクル状態値、パーソナリティレジスタ３２３の内容、および、ＤＧＯＫ  ３７０を取り込む一方向性関数の結果として第１の鍵分割値を生成することがある。第１の鍵（群）は、第２のライフサイクル・アドバンス値および第２のライフサイクル・ロールバック値から生成された第１のライフサイクル状態値からさらに生成された第１の鍵分割値に基づいて生成される（４２２）。たとえば、鍵生成器３５０は、鍵分割生成器３４０から受け取られ、変更されたライフサイクル・アドバンス・レジスタ３２１の内容の変更された内容と、変更されたライフサイクル・ロールバック・レジスタ３２２の内容とから生成された第１の鍵分割値とに基づいて１つ以上の鍵を生成することがある。
【００５６】
［0063］  図５Ａ〜図５Ｃは、ライフサイクル状態生成プロセスの実施例を示す。図５Ａ〜図５Ｃに示されたプロセスは、システム１００および／または装置３００の１つ以上の要素−たとえば、ライフサイクル状態生成器３５０−によって行われることがある。図５Ａは、バイナリビット１０００ｂとして第１のライフサイクル・アドバンス値５１５を示す。第１のライフサイクル・ロールバック値５１６もバイナリビット１０００ｂとして示されている。第１のライフサイクル・アドバンス値５１５および第１のライフサイクル・ロールバック値５１６は、ライフサイクル状態生成関数、Ｆ（Ａ，Ｒ）５３０に入力され、ここで、Ａは、ライフサイクル・アドバンス値に対応する入力パラメータを表し、Ｒは、ライフサイクル・ロールバック値に対応する入力パラメータを表す。ライフサイクル状態生成関数５３０の出力は、第１のライフサイクル状態値５１７である。図５Ａでは、第１のライフサイクル・アドバンス値５１５および第１のライフサイクル・ロールバック値５１６に応答したライフサイクル状態生成関数５３０の出力は、バイナリビット００００ｂである。
【００５７】
［0064］  図５Ｂは、バイナリビット１１００ｂとして第２のライフサイクル・アドバンス値５２５を示す。第１のライフサイクル・ロールバック値５１６は、図５Ｂにバイナリビット１０００ｂとして示されている。第２のライフサイクル・アドバンス値５２５および第１のライフサイクル・ロールバック値５１６は、ライフサイクル状態生成関数５３０に入力される。ライフサイクル状態生成関数５３０の出力は、第２のライフサイクル状態値５２７である。図５Ｂでは、第２のライフサイクル・アドバンス値５２５および第１のライフサイクル・ロールバック値５１６に応答したライフサイクル状態生成関数５３０の出力は、バイナリビット０１００ｂである。
【００５８】
［0065］  図５Ｃは、バイナリビット１１００ｂとして第２のライフサイクル・アドバンス値５２５を示す。第２のライフサイクル・ロールバック値５２６は、図５Ｃでは、バイナリビット１１００ｂとして示されている。第２のライフサイクル・アドバンス値５２５および第１のライフサイクル・ロールバック値５２６は、ライフサイクル状態生成関数５３０に入力される。ライフサイクル状態生成関数５３０の出力は、第１のライフサイクル状態値５１７である。図５Ｃでは、第２のライフサイクル・アドバンス値５２５および第２のライフサイクル・ロールバック値５２６に応答したライフサイクル状態生成関数５３０の出力は、バイナリビット００００ｂである。それ故に、図５Ａ〜図５Ｃに示されたライフサイクル状態生成関数５３０は、ビットＸＯＲ演算（すなわち、
【数１】
2019504519.tif 000003
）であることが理解されるべきである。他のライフサイクル状態生成関数５３０は、複数のマッピングに対して同じ出力ライフサイクル状態値を作り出すライフサイクル・アドバンス値および対応するライフサイクル・ロールバック値の任意のマッピングを含む他の関数で構成されることがあることも理解されるべきである。
【００５９】
［0066］  図６は、ライフサイクル依存型暗号鍵を生成する方法を示すフローチャートである。図６に示されたステップは、システム１００および／または装置３００の１つ以上の要素によって行われることがある。ライフサイクル状態値は、ライフサイクル・アドバンス値およびライフサイクル・ロールバック値から生成される（６０２）。たとえば、ライフサイクル状態生成器３３０は、ライフサイクル・アドバンス・レジスタ３２１の内容およびライフサイクル・ロールバック・レジスタ３２２の内容からライフサイクル状態値を計算することがある。
【００６０】
［0067］  第１の鍵分割値は、ライフサイクル状態値、秘密鍵値、および第１のパーソナリティ値に基づいて生成される（６０４）。たとえば、鍵分割生成器３４０は、ライフサイクル状態値、パーソナリティレジスタ３２３の内容、およびＤＧＯＫ値３７０に基づいて、第１の鍵分割値を計算することがある。この第１の鍵分割値は、鍵生成器３５０に提供されることがある。
【００６１】
［0068］  第１の鍵（群）は、第１の鍵分割値に基づいて生成される（６０６）。たとえば、鍵生成器３５０は、鍵分割生成器３４０から受け取られた第１の鍵分割値に基づいて第１の鍵を生成することがある。この第１の鍵は、暗号化演算で用いるためプロセッサ３９０に提供されることがある。
【００６２】
［0069］  パーソナリティビットの値は、第２のパーソナリティ値を作成するために変更される（６０８）。たとえば、プロセッサ３９０は、パーソナリティレジスタ３２３内の少なくとも１ビットの値を変更するためにＯＴＰプログラミング３８０を制御することがある。プロセッサ３９０は、ユーザ入力３９１、および／または、インターフェース３９２を介して受け取られたコマンド（たとえば、無線インターフェースを介して受信されたコマンド）に応答して、パーソナリティレジスタ３２３内のビットの値を変更するためにＯＴＰプログラミング３８０を制御することがある。
【００６３】
［0070］  第２の鍵分割値は、ライフサイクル状態値、秘密鍵値、および第２のパーソナリティ値に基づいて生成される（６１０）。たとえば、鍵分割生成器３４０は、ライフサイクル状態値、変更されたパーソナリティレジスタ３２３の内容、およびＤＧＯＫ値３７０に基づいて、第２の鍵分割値を計算することがある。この第２の鍵分割値は、鍵生成器３５０に提供されることがある。
【００６４】
［0071］  第２の鍵（群）は、第２の鍵分割値に基づいて生成される（６１２）。たとえば、鍵生成器３５０は、鍵分割生成器３４０から受け取られた第２の鍵分割値に基づいて第２の鍵を生成することがある。この第２の鍵は、暗号化演算で用いるためプロセッサ３９０に提供されることがある。パーソナリティレジスタ３２３への変更は、恒久的かつ不可逆的であるため、パーソナリティレジスタ３２３内のビットが変更された後にライフサイクル鍵生成器３１０によって作り出された鍵は、恒久的に変更されることが理解されるべきである。
【００６５】
［0072］  図７は、アクセス可能な鍵分割値の生成を示す図である。図７に示された関数は、システム１００および／またはシステム３００の１つ以上の要素−−特に、鍵分割生成器３４０−−によって実装されることがある。図７では、ＤＧＯＫ値７７５およびパーソナリティ値７２７は、第１のスクランブリング（たとえば、一方向性）関数７４１、Ｆ１（Ｐ，Ｄ）に入力され、ここで、Ｐは、パーソナリティ値を表し、Ｄは、ＤＧＯＫ（秘密鍵）値を表す。たとえば、ＤＧＯＫ値３７０およびパーソナリティレジスタ３２３は、入力を鍵分割生成器３４０に提供することがある。鍵分割生成器３４０は、ＤＧＯＫ値３７０およびパーソナリティレジスタ３２３の内容を使用して第１のスクランブリング関数を実装することがある。この第１のスクランブリング関数は、たとえば、鍵ツリー経路としてパーソナリティレジスタ３２３の内容と、ＡＥＳ鍵としてＤＧＯＫ値とを使用することを含むことがある。
【００６６】
［0073］  ライフサイクル・アドバンス値７２５およびライフサイクル・ロールバック値７２６は、ライフサイクル状態値を作り出すためにビット排他的論理和（ＸＯＲ）関数７３０に入力される。ライフサイクル状態値と、第１のスクランブリング関数からの出力とは、第２のスクランブリング関数７４２、Ｆ２（Ｌ，Ｆ１）に入力され、ここで、Ｌは、ライフサイクル状態値を表し、Ｆ１は、第１のスクランブリング関数の出力を表す。第２のスクランブリング関数の出力は、装置生成アクセス可能鍵分割（ＤＧＡＫ）−たとえば、鍵分割１４５−である。
【００６７】
［0074］  前述の方法、システムおよび装置は、コンピュータシステムに実装されることがあり、または、コンピュータシステムによって記憶されることがある。前述の方法は、非一時的なコンピュータ読み取り可能な媒体に記憶されることもある。本書に記載された装置、回路、およびシステムは、当該技術分野において利用できるコンピュータ支援設計ツールを使用して実装されること、および、これらの回路のソフトウェア記述を格納しているコンピュータ読み取り可能なファイルによって具現化されることがある。これは、システム１００の１つ以上の要素、装置３００およびそれらのコンポーネントを非制限的に含む。これらのソフトウェア記述は、動作、レジスタ転送、論理コンポーネント、トランジスタ、およびレイアウトジオメトリのレベルの記述でもよい。その上、ソフトウェア記述は、記憶媒体に記憶されること、または、搬送波によって通信されることがある。
【００６８】
［0075］  このような記述が実装されることがあるデータフォーマットは、Ｃのような動作言語をサポートするフォーマット、ＶｅｒｉｌｏｇおよびＶＨＤＬのようなレジスタ転送レベル（ＲＴＬ）言語をサポートするフォーマット、ジオメトリ記述言語（たとえば、ＧＤＳＩＩ、ＧＤＳＩＩＩ、ＧＤＳＩＶ、ＣＩＦ、およびＭＥＢＥＳなど）をサポートするフォーマット、ならびに、その他の適当なフォーマットおよび言語を含むが、これらに限定されない。その上、機械読み取り可能な媒体上のこれらのファイルのデータ転送は、インターネット上の多様な媒体を通じて電子的に、または、たとえば、電子メールによって行われることがある。物理ファイルが、たとえば、４ｍｍ磁気テープ、８ｍｍ磁気テープ、３．５インチフロッピーディスク媒体、ＣＤ、ＤＶＤなどの機械読み取り可能な媒体上に実装されることがあることに注意されたい。
【００６９】
［0076］  図８は、回路コンポーネント８２０の表現を処理すること、または、生成することを含む処理システム８００の一実施形態を示すブロック図である。処理システム８００は、１台以上のプロセッサ８０２と、メモリ８０４と、１台以上の通信装置８０６とを含む。プロセッサ８０２、メモリ８０４、および通信装置８０６は、何らかの適当な種類、個数、および／または構成の有線および／または無線通信手段８０８を使用して通信する。
【００７０】
［0077］  プロセッサ８０２は、ユーザ入力８１４およびパラメータ８１６に応答して、メモリ８０４に記憶された１台以上のプロセッサ８１２の命令を実行し、回路コンポーネント８２０を処理および／または生成する。プロセス８１２は、電子回路を設計、シミュレーション、解析、および／または、検証するため、および／または、電子回路用のフォトマスクを生成するため使用される何らかの適当な電子設計自動化（ＥＤＡ）ツールまたはその一部でもよい。表現８２０は、図に表されたとおり、システム１００、装置３００、およびこれらのコンポーネントの全部または一部を記述するデータを含む。
【００７１】
［0078］  表現８２０は、動作、レジスタ転送、論理コンポーネント、トランジスタ、およびレイアウトジオメトリのレベルの記述のうちの１つ以上を含むことがある。さらに、表現８２０は、記憶媒体に記憶されること、または、搬送波によって通信されることがある。
【００７２】
［0079］  表現８２０が実装されることがあるデータフォーマットは、Ｃのような動作言語をサポートするフォーマット、ＶｅｒｉｌｏｇおよびＶＨＤＬのようなレジスタ転送レベル（ＲＴＬ）言語をサポートするフォーマット、ジオメトリ記述言語（たとえば、ＧＤＳＩＩ、ＧＤＳＩＩＩ、ＧＤＳＩＶ、ＣＩＦ、およびＭＥＢＥＳなど）をサポートするフォーマット、ならびに、その他の適当なフォーマットおよび言語を含むが、これらに限定されることはない。その上、機械読み取り可能な媒体上のこれらのファイルのデータ転送は、インターネット上の多様な媒体を通じて電子的に、または、たとえば、電子メールによって行われることがある。
【００７３】
［0080］  ユーザ入力８１４は、キーボード、マウス、音声認識インターフェース、マイクロフォンとスピーカ、グラフィカルディスプレイ、タッチスクリーン、または、その他の種類のユーザインターフェース装置からの入力パラメータを含むことがある。このユーザインターフェースは、複数のインターフェース装置の間に分散させられることがある。パラメータ８１６は、表現８２０を定義するのを助けるために入力された仕様および特徴を含むことがある。たとえば、パラメータ８１６は、装置種類（たとえば、ＮＦＥＴ、ＰＦＥＴなど）、トポロジー（たとえば、ブロック図、回路記述、配線図など）、および／または装置記述（たとえば、装置特性、装置寸法、電源電圧、シミュレーション温度、シミュレーションモデルなど）を定義する情報を含むことがある。
【００７４】
［0081］  メモリ８０４は、プロセス８１２、ユーザ入力８１４、パラメータ８１６、および回路コンポーネント８２０を記憶する、何らかの適当な種類、個数、および/または構成のトランジスタ以外のコンピュータ読み取り可能な記憶媒体を含む。
【００７５】
［0082］  通信デバイス８０６は、処理システム８００から別の処理または記憶システム（図示せず）へ情報を送信する、および／または、別の処理または記憶システム（図示せず）から情報を受信する何らかの適当な種類、個数、および／または構成の有線および／または無線装置を含む。たとえば、通信装置８０６は、回路コンポーネント８２０を別のシステムに送信することがある。通信装置８０６は、プロセス８１２、ユーザ入力８１４、パラメータ８１６、および／または回路コンポーネント８２０を受信し、プロセス８１２、ユーザ入力８１４、パラメータ８１６、および／または回路コンポーネント８２０をメモリ８０４に記憶させることがある。
【００７６】
［0083］  以上の発明についての記述は、図示および説明の目的のため提示されている。網羅的であること、または、発明を開示されたとおりの形式に限定することを意図するものではなく、他の変更および変形が上記教示に鑑みて可能である。実施形態は、当業者が熟慮された特定の使用に適しているとおりに様々な実施形態および様々な変更で発明を最もよく利用するように、発明の原理およびその実際的な応用を最もよく説明するために選択および記述された。特許請求の範囲は、先行技術により制限される場合を除いて発明の他の代替的な実施形態を包含するように解釈されることが意図されている。
【図１】
2019504519.tif 000004
【図２】
2019504519.tif 000005
【図３】
2019504519.tif 000006
【図４Ａ】
2019504519.tif 000007
【図４Ｂ】
2019504519.tif 000008
【図５Ａ】
2019504519.tif 000009
【図５Ｂ】
2019504519.tif 000010
【図５Ｃ】
2019504519.tif 000011
【図６】
2019504519.tif 000012
【図７】
2019504519.tif 000013
【図８】
2019504519.tif 000014
【国際調査報告】
2019504519.tif 000015