(57)【特許請求の範囲】
【請求項１】
データを認証する方法であって、
公開鍵およびセッション鍵ＩＤの表記の複数の組み合わせを不揮発性メモリに記憶するステップを備え、
公開鍵およびセッション鍵ＩＤの表記の前記複数の組み合わせを記憶する前記ステップは、各セッション鍵ＩＤの表記を複数の電子ヒューズに記憶するステップを含み、
ペイロードと、前記ペイロードに付随する公開鍵、セッション鍵ＩＤおよび署名とを入力するステップとを含み、前記署名は、前記ペイロードと、前記付随の公開鍵および秘密鍵を含む鍵ペアのうち秘密鍵との関数であり、
プロセッサを用いて、前記付随の公開鍵およびセッション鍵ＩＤ並びに前記不揮発性メモリに記憶された前記組み合わせから、および前記署名および前記ペイロードから、前記ペイロードが真正であるか否かを判断するステップと、
前記ペイロードが真正であるという判断に応答して、前記ペイロードの処理を実行するステップと、
前記ペイロードが真正ではないという判断に応答して、前記ペイロードの処理を無効化するステップと、
前記複数の組み合わせのうち１つの組み合わせ中の前記セッション鍵ＩＤの表記を記憶する前記複数の電子ヒューズのうち１つの電子ヒューズに電流を通さないようにすることによって、新規セッション鍵ＩＤを形成するとともに過去のセッション鍵ＩＤを失効するステップとを備え、
前記付随の公開鍵およびセッション鍵ＩＤ並びに前記不揮発性メモリに記憶された前記複数の組み合わせから、前記ペイロードが真正であるか否かを判断するステップは、
公開鍵およびセッション鍵ＩＤの前記複数の組み合わせのうち、前記付随の公開鍵の前記ハッシュ値とマッチングする前記公開鍵の表記を有する１つの組み合わせに対して、付随のセッション鍵ＩＤ番号が前記１つの組み合わせの前記セッション鍵ＩＤ番号の表記とマッチングするか否かを判断するステップと、
前記付随のセッション鍵ＩＤ番号が前記１つの組み合わせの前記セッション鍵ＩＤ番号の表記とマッチングするという判断に応答して、前記ペイロードが真正であることを指示するステップと、
前記付随のセッション鍵ＩＤ番号が前記１つの組み合わせの前記セッション鍵ＩＤ番号の表記とマッチングしないという判断に応答して、前記ペイロードが真正ではないことを指示するステップとを含む、方法。
【請求項２】
公開鍵およびセッション鍵ＩＤの表記の前記複数の組み合わせにそれぞれ関連付けられた複数の鍵状態を記憶するステップをさらに備え、各鍵状態は、関連付けられた組み合わせが有効であるか否かを示し、
前記付随の公開鍵およびセッション鍵ＩＤ並びに前記不揮発性メモリに記憶された前記複数の組み合わせから、前記ペイロードが真正であるか否かを判断するステップは、
前記複数の組み合わせのうち１つの組み合わせが前記付随の公開鍵とマッチングする公開鍵の表記を有するか否か、および前記１つの組み合わせに関連付けられた前記鍵状態から、前記１つの組み合わせが有効であるか否かを判断するステップと、
前記１つの組み合わせが前記付随の公開鍵とマッチングする公開鍵の表記を有し且つ有効ではないという判断に応答して、前記ペイロードが真正ではないことを指示するステップとを備える、請求項１に記載の方法。
【請求項３】
公開鍵およびセッション鍵ＩＤの表記の前記複数の組み合わせにそれぞれ関連付けられた複数の鍵状態を記憶する前記ステップは、各鍵状態を１つ以上の電子ヒューズに記憶するステップを含む、請求項２に記載の方法。
【請求項４】
公開鍵およびセッション鍵ＩＤの表記の前記複数の組み合わせのうち、各公開鍵の表記は、公開鍵のハッシュ値であり、
前記付随の公開鍵およびセッション鍵ＩＤ並びに前記不揮発性メモリに記憶された前記複数の組み合わせから、前記ペイロードが真正であるか否かを判断するステップは、
前記付随の公開鍵のハッシュ値を計算するステップと、
前記付随の公開鍵の前記ハッシュ値が、前記複数の組み合わせのうち１つの組み合わせの公開鍵の表記とマッチングするか否かを判定するステップと、
前記付随の公開鍵の前記ハッシュ値が前記複数の組み合わせの公開鍵の表記とマッチングしないという判断に応答して、前記ペイロードが真正ではないことを指示するステップとを含む、請求項１に記載の方法。
【請求項５】
公開鍵およびセッション鍵ＩＤの表記の前記複数の組み合わせにそれぞれ関連付けられた複数の鍵状態を記憶するステップをさらに備え、各鍵状態は、関連付けられた組み合わせが有効であるか否かを示し、
前記付随の公開鍵およびセッション鍵ＩＤ並びに前記不揮発性メモリに記憶された前記複数の組み合わせから、前記ペイロードが真正であるか否かを判断するステップは、
前記複数の組み合わせのうち１つの組み合わせが前記付随の公開鍵とマッチングする公開鍵の表記を有するか否か、および前記組み合わせに関連付けられた前記鍵状態から、前記組み合わせが有効であるか否かを判断するステップと、
前記組み合わせが前記付随の公開鍵とマッチングする公開鍵の表記を有し且つ有効ではないという判断に応答して、前記ペイロードが真正ではないことを指示するステップとを含み、
公開鍵およびセッション鍵ＩＤの表記の前記複数の組み合わせを記憶する前記ステップは、
各セッション鍵ＩＤの表記を複数の電子ヒューズに記憶するステップと、
前記複数の組み合わせのうち１つの組み合わせ中の前記セッション鍵ＩＤの表記を記憶する前記複数の電子ヒューズのうち１つに電流を通さないようにすることによって、新規セッション鍵を形成するステップとを含む、請求項４に記載の方法。
【請求項６】
認証システムであって、
公開鍵およびセッション鍵ＩＤの表記の複数の組み合わせを記憶するように構成可能な不揮発性メモリを備え、前記不揮発性メモリは、公開鍵およびセッション鍵ＩＤの表記の前記組み合わせを記憶するための複数の電子ヒューズを含み、
前記不揮発性ストレージに連結されたプロセッサを備え、
前記プロセッサは、
ペイロードと、前記ペイロードに付随する公開鍵、セッション鍵ＩＤおよび署名とを入力するように構成され、前記署名は、前記ペイロードと、前記付随の公開鍵および秘密鍵を含む鍵ペアのうち秘密鍵との関数であり、
前記付随の公開鍵およびセッション鍵ＩＤ並びに前記不揮発性メモリに記憶された前記複数の組み合わせから、および前記署名および前記ペイロードから、前記ペイロードが真正であるか否かを判断し、
前記ペイロードが真正であるという判断に応答して、前記ペイロードの処理を実行し、
前記ペイロードが真正ではないという判断に応答して、前記ペイロードの処理を無効化し、
前記複数の組み合わせのうち１つの組み合わせ中の前記セッション鍵ＩＤの表記を記憶する前記複数の電子ヒューズのうち１つに電流を通さないようにすることによって、新規セッション鍵ＩＤを形成するとともに過去のセッション鍵ＩＤを失効するように構成されており、
前記プロセッサは、前記付随の公開鍵およびセッション鍵ＩＤ並びに前記不揮発性メモリに記憶された前記複数の組み合わせから、前記ペイロードが真正であるか否かを判断する際に、
公開鍵およびセッション鍵ＩＤの前記複数の組み合わせのうち、前記付随の公開鍵の前記ハッシュ値とマッチングする前記公開鍵の表記を有する１つの組み合わせに対して、付随のセッション鍵ＩＤ番号が前記１つの組み合わせの前記セッション鍵ＩＤ番号の表記とマッチングするか否かを判断し、
前記付随のセッション鍵ＩＤ番号が前記１つの組み合わせの前記セッション鍵ＩＤ番号の表記とマッチングするという判断に応答して、前記ペイロードが真正であることを指示し、
前記付随のセッション鍵ＩＤ番号が前記１つの組み合わせの前記セッション鍵ＩＤ番号の表記とマッチングしないという判断に応答して、前記ペイロードが真正ではないことを指示するように構成されている、システム。
【請求項７】
前記不揮発性メモリは、公開鍵およびセッション鍵ＩＤの表記の前記複数の組み合わせにそれぞれ関連付けられた複数の鍵状態を記憶するストレージをさらに含み、各鍵状態は、関連付けられた組み合わせが有効であるか否かを示し、
プロセッサは、さらに、
前記複数の組み合わせのうち１つの組み合わせが前記付随の公開鍵とマッチングする公開鍵の表記を有するか否か、および前記１つの組み合わせに関連付けられた前記鍵状態から、前記組み合わせが有効であるか否かを判断し、
前記１つの組み合わせが前記付随の公開鍵とマッチングする公開鍵の表記を有し且つ有効ではないという判断に応答して、前記ペイロードが真正ではないことを指示するように構成されている、請求項６に記載のシステム。
【請求項８】
前記不揮発性メモリは、前記複数の鍵状態を記憶するための複数の電子ヒューズを含む、請求項７に記載のシステム。
【請求項９】
前記不揮発性メモリは、前記セッション鍵ＩＤの表記を記憶するための複数の電子ヒューズを含み、
前記プロセッサはさらに、前記複数の組み合わせのうち１つの組み合わせ中の前記セッション鍵ＩＤの表記を記憶する前記複数の電子ヒューズのうち１つに電流を通さないようにすることによって、新規セッション鍵を形成するように構成されている、請求項８に記載のシステム。
【請求項１０】
公開鍵およびセッション鍵ＩＤの表記の前記複数の組み合わせのうち、各公開鍵の表記は、公開鍵のハッシュ値であり、
前記プロセッサは、前記付随の公開鍵およびセッション鍵ＩＤ並びに前記不揮発性メモリに記憶された前記複数の組み合わせから、前記ペイロードが真正であるか否かを判断する際に、
前記付随の公開鍵のハッシュ値を計算し、
前記付随の公開鍵の前記ハッシュ値が、前記複数の組み合わせのうち１つの組み合わせ
の公開鍵の表記とマッチングするか否かを判定し、
前記付随の公開鍵の前記ハッシュ値が前記複数の組み合わせの公開鍵の表記とマッチングしないという判断に応答して、前記ペイロードが真正ではないことを指示するように構成されている、請求項７に記載のシステム。
【請求項１１】
前記不揮発性メモリ内の公開鍵およびセッション鍵ＩＤの表記の前記複数の組み合わせのうち、各組み合わせは、公開鍵およびセッション鍵ＩＤのハッシュ値であり、
前記プロセッサは、前記付随の公開鍵およびセッション鍵ＩＤ並びに前記不揮発性メモリに記憶された前記複数の組み合わせから、前記ペイロードが真正であるか否かを判断する際に、
前記付随の公開鍵および前記セッション鍵ＩＤの第１ハッシュ値を計算し、
前記第１ハッシュ値が前記不揮発性メモリ内の前記ハッシュ値のいずれかとマッチングするか否かを判断し、
前記第１ハッシュ値が前記不揮発性メモリ内の前記ハッシュ値のいずれかとマッチングしないという判断に応答して、前記ペイロードが真正ではないことを指示するように構成されている、請求項７に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
本開示は、一般的に、データの認証に関する。
【背景技術】
【０００２】
背景
一般的に、認証とは、データを受信する受信者が、受信したデータが信頼できるソースから来たものか否かを判断するプロセスである。認証されるデータは、例えば、実行可能なプログラム、プログラム可能なロジックの構成データ、電子メールメッセージ、または応用プログラムデータであってもよい。
【０００３】
認証の１つの手法は、公開鍵および秘密鍵のペアに依存している。送信者は、鍵ペア内の送信者の秘密鍵で署名することによって、データに署名を付ける。受信者は、鍵ペア内の送信者の公開鍵および受信したデータを用いて、データと共に送信された署名が送信者の署名であるか否かを判断するすることができる。署名が受信したデータの予期署名であれば、受信したデータが承認される。それ以外の場合、受信したデータが信頼できないソースから送信された可能性があり、または改ざんされた可能性がある。
【０００４】
入力データを認証するために受信装置に使用された公開鍵は、一般的には、装置の不揮発性メモリに記憶される。いくつかの実装装置は、公開鍵を失効することができる。公開鍵の失効は、その鍵の将来の使用を無効化する。殆どの場合、使用中の公開鍵が失効されると、新規の公開鍵が形成される。
【０００５】
フラッシュメモリは、非揮発性であり且つ再プログラムできるため、しばしば公開鍵を記憶するために使用される。しかしながら、フラッシュメモリは、いくつかの用途には不適切である。例えば、フィールドプログラム可能なゲートアレイ（ＦＰＧＡ）は、ＳＲＡＭの技術を用いて作製されたものである。フラッシュメモリをＳＲＡＭに基づく装置に組み合わせることは、技術的に困難であり、費用的に高価である。したがって、場合によって、電子ヒューズ（ｅヒューズ）を用いて、公開鍵を記憶する。しかしながら、電子ヒューズは、電子ヒューズの状態によって表される少量の情報に対して、大きな領域を占める。したがって、公開鍵の記憶および失効のために、費用効率の良いシステムが望まれる。
【発明の概要】
【課題を解決するための手段】
【０００６】
概要
データを認証する方法が開示されている。この方法は、不揮発性メモリ内の公開鍵およびセッション鍵識別子（ＩＤ）の表記の複数の組み合わせを記憶することを含む。ペイロードと、ペイロードに付随する公開鍵、セッション鍵ＩＤおよび署名とが入力される。署名は、ペイロードと、付随の公開鍵および秘密鍵を含む鍵ペアのうち秘密鍵との関数である。方法は、付随する公開鍵およびセッション鍵ＩＤ並びに不揮発性メモリに記憶された組み合わせから、および署名およびペイロードから、ペイロードが真正であるか否かを判断する。ペイロードが真正であるという判断に応答して、ペイロードの処理を実行する。ペイロードが真正ではないという判断に応答して、ペイロードの処理を無効化する。
【０００７】
認証システムも記載されている。システムは、不揮発性ストレージと、プロセッサとを含む。不揮発性ストレージは、公開鍵およびセッション鍵ＩＤの表記の組み合わせを記憶するように構成可能である。プロセッサは、不揮発性ストレージに連結され、ペイロードと、ペイロードに付随する公開鍵、セッション鍵ＩＤおよび署名とを入力するように構成されている。署名は、ペイロードと、付随の公開鍵および秘密鍵を含む鍵ペアのうち秘密鍵との関数である。プロセッサはさらに、付随の公開鍵およびセッション鍵ＩＤ並びに不揮発性メモリに記憶された複数の組み合わせから、並びに署名およびペイロードから、ペイロードが真正であるか否かを判断するように構成されている。ペイロードが真正であるという判断に応答して、プロセッサは、ペイロードを処理する。ペイロードが真正ではないという判断に応答して、プロセッサは、ペイロードの処理を無効化する。
【０００８】
他の特徴は、以下の詳細な説明および特許請求の範囲を検討することによって、認識されるであろう。
【０００９】
方法およびシステムのさまざまな態様および特徴は、以下の詳細な説明を検討し、および図面を参照することによって、明らかになるであろう。
【図面の簡単な説明】
【００１０】
【図１】ペイロードの認証情報の構築および認証鍵の失効を可能にするためのペイロード認証を示すフローチャートである。
【図２】認証鍵を用いて、システムの起動および／または設定を制御するシステムを示すブロック図である。
【図３】認証システムを初期設定するプロセスを示すフローチャートである。
【図４】公開鍵およびセッション鍵ＩＤを用いて、入力されたペイロードを認証するプロセスを示すフローチャートである。
【図５】公開鍵またはセッション鍵ＩＤを失効するプロセスを示すフローチャートである。
【図６】本明細書に記載のさまざまな手法を用いて、システムを実装できる例示的なＳＯＣアーキテクチャを示す図である。
【発明を実施するための形態】
【００１１】
図面の詳細な説明
システムおよび方法は、装置の使用期間に亘って使用できる認証鍵の数を増加すると共に、認証鍵を安全に管理するための手法を提供する。システムおよび方法は、公開鍵、セッション鍵識別子（ＩＤ）、およびペイロード署名を用いて、ペイロードを認証する。公開鍵の失効またはセッション鍵ＩＤに関連付けられたセッション鍵の失効は、既に認証された構成データまたはプログラムコードを用いて、システムを起動した後のみに許可される。鍵の失効は、鍵の無効化と呼ばれることがある。
【００１２】
一実装において、セッション鍵は、装置の起動または初期設定の後、ソフトウェアまたはハードウェア負荷を認証するために使用することができる公開鍵である。装置上に記憶された別の公開鍵（またはルート鍵）およびセッション鍵ＩＤを用いて、初期ブートプログラムまたはハードウェア設定および付随のセッション鍵を認証することができる。装置を設定または起動した後にロードされたソフトウェアまたはハードウェア構成は、セッション鍵を用いて、認証することができる。これによって、ルート鍵の使用を最小限に抑える。以下の説明から明らかになるように、セッション鍵を失効する手法は、セッション鍵の使用管理に柔軟性を提供する。
【００１３】
システムは、公開鍵およびセッション鍵ＩＤの表記の複数の組み合わせを記憶するための不揮発性ストレージを備える。これらの表記は、公開鍵およびセッション鍵ＩＤの実際値のバイナリ形式であってもよく、公開鍵およびセッション鍵ＩＤのハッシュ値のバイナリ形式であってもよい。説明を容易にするために、公開鍵およびセッション鍵ＩＤの表記を言及する場合、公開鍵およびセッション鍵ＩＤ自身が使用され得る。
【００１４】
システムに入力されたペイロードには、ペイロードの公開鍵、セッション鍵ＩＤおよび署名が付随される。署名は、ペイロードと、付随の公開鍵および秘密鍵を含む鍵ペアのうち秘密鍵との関数である。システムは、ペイロードが真正であるか否かを判断するプロセッサを含む。ペイロードの真偽は、ペイロードの署名ではなく、付随の公開鍵およびセッション鍵ＩＤ並びに不揮発性メモリに記憶された公開鍵およびセッション鍵ＩＤの表記の組み合わせに基づいて、判断される。
【００１５】
ペイロードが真正である場合、プロセッサは、ペイロードの処理を許可する。ペイロードが真正でない場合、プロセッサは、ペイロードのさらなる処理を無効化する。例示的な応用において、ペイロードの処理は、ペイロードに含まれるプログラムコードを使用してシステムを起動することまたはシステムオンチップ（ＳＯＣ）に見られるプログラム可能なロジックを構成することと共に、行われてもよい。
【００１６】
図１は、ペイロードの認証情報の構築および認証鍵の失効を可能にするためのペイロード認証を示すフローチャートである。例示的な応用において、ペイロードは、例えば、プロセッサ用のブートプログラムであってもよく、プログラム可能なロジックの構成データであってもよい。フローチャートは、２つの主要な段階、すなわち、認証情報の構築と、認証情報によるペイロードの認証とを示している。認証情報の構築は、大括弧１０２で標記され、ペイロードの認証は、大括弧１０４で標記されている。
【００１７】
システムに提供されるペイロード１０６は、付随する公開鍵Ｐｕ  １０８およびセッション鍵ＩＤ  １１０を有している。ペイロードは、セッション鍵ＩＤ  １１０に対応するセッション鍵を含むことができる。このペイロードは、ハッシュ関数１１２に入力され、ハッシュ関数１１２は、ペイロードに基づき、ハッシュ値１１４を計算する。代替の実装において、公開鍵１０８およびセッション鍵ＩＤ  １１０の両方をハッシュ関数に入力することができる。例示的な実装において、ハッシュ関数は、ＳＨＡに基づく関数であってもよい。暗号化関数１１８は、秘密鍵Ｐｒ  １１６を用いて、ハッシュ値１１４を暗号化することによって、署名１２０を生成する。署名１２０は、ペイロード１０６に付随する情報に追加される。ペイロード１０６、公開鍵１０８、セッション鍵ＩＤ  １１０、および署名１２０は、例示的な応用において、システムの安全起動に使用される設定ファイルにフォーマットされてもよい。
【００１８】
ペイロードの認証は、ペイロード１０６と、付随する公開鍵１０８、セッション鍵ＩＤ  １１０および署名１２０とを入力するシステムによって行われる。このシステムは、公開鍵１３４およびセッション鍵ＩＤ  １３６の表記を記憶するための不揮発性メモリ１３２を備える。一実装において、ストレージ要件を軽減するために、公開鍵のハッシュ値が記憶される。例えば、２０４８ビットの公開鍵をハッシュ関数に適用することによって、生成された結果が２５６ビットであってもよい。別の実装において、公開鍵は、ハッシュ化されない。また、不揮発性メモリは、公開鍵の鍵状態を記憶する。各公開鍵の鍵状態は、その公開鍵に関連付けられた有効ビット１３８によって示すことができる。公開鍵１３４、セッション鍵ＩＤ  １３６および有効ビット１３８は、例えば、電子ヒューズに記憶されてもよい。
【００１９】
不揮発性メモリが公開鍵のハッシュ値を記憶する実装において、入力されたペイロード１０６に付随する公開鍵１０８をハッシュ関数１４０に入力することによって、ハッシュ値１４２を生成する。比較関数１４４は、ハッシュ値１４２を不揮発性メモリに記憶された公開鍵１３４のハッシュ値と比較する。ハッシュ値１４２が公開鍵１３４のハッシュ値のいずれかとマッチングしないことに応答して、比較関数は、ペイロードが真正でないことを指示し、システムは、ロックダウン関数１４６を用いて、ペイロード１０６のさらなる処理を無効化する。例えば、プロセッサは、システムの起動またはプログラム可能なロジックの構築を中止することによって、システムをロックダウンすることができる。指示は、信号または値の状態として、レジスタまたはメモリに記憶されてもよい。
【００２０】
別の実装において、セッション鍵ＩＤ  １３６および公開鍵１３４の各組み合わせは、１つのハッシュ値を有してもよい。この実装において、ペイロード１０６に付随する公開鍵１０８およびセッション鍵ＩＤ  １１０の両方は、ハッシュ関数１４０に入力され、比較関数１４４は、得られたハッシュ値を不揮発性メモリ内のハッシュ化された公開鍵およびセッション鍵ＩＤの総合値と比較する。
【００２１】
比較関数１４４がマッチングを発見した場合、検証関数１４８は、ハッシュ化された公開鍵とマッチングする（または代替的に、ハッシュ化された公開鍵およびセッション鍵ＩＤの組み合わせとマッチングする、またはハッシュ化されていない公開鍵とマッチングする）鍵に関連付けられた有効ビットが鍵の有効性を示す鍵状態を有するか否かを判断する。鍵状態によってマッチングする鍵が有効ではないことが示された場合、検証関数１４８は、ペイロードが真正でないことを指示し、システムは、ロックダウン関数１５０を用いて、システムの起動またはプログラム可能なロジックの構築を中止することによって、ペイロード１０６のさらなる処理を無効化する。
【００２２】
有効ビットが鍵の有効性を示す鍵状態を有することに応答して、ペイロード１０６の署名は、ペイロード１０６をハッシュ関数１１２と同様のハッシュ関数１５２に入力し、ハッシュ値１５４を生成することによって確認される。ペイロード１０６に付随する署名１２０および公開鍵１０８は、復号化関数１５８に入力され、復号化関数１５８は、公開鍵を用いて署名を復号することによって、復号された署名１５８を生成する。比較関数１６０は、復号された署名を計算されたハッシュ値と比較する。署名がマッチングしないことに応じて、システムは、ロックダウン関数１６２を用いて、システムの起動またはプログラム可能なロジックの構築を中止することによって、ペイロード１０６のさらなる処理を無効化する。
【００２３】
復号された署名がハッシュ値とマッチングすることに応答して、比較関数１６４は、入力されたペイロードに付随するセッション鍵ＩＤ  １１０を、不揮発性メモリ１３２に記憶され且つハッシュ化された公開鍵１３４のいずれか１つとマッチングする鍵に関連付けられたセッション鍵ＩＤと比較する。セッション鍵ＩＤ  １１０がセッション鍵ＩＤ  １３６のいずれか１つとマッチングしないことに応答して、比較関数１６４は、ペイロードが真正ではないと指示し、システムは、ロックダウン関数１６２を用いて、システムの起動またはプログラム可能なロジックの構築を中止することによって、ペイロード１０６のさらなる処理を無効化する。セッション鍵ＩＤ  １１０がセッション鍵ＩＤ  １３６のいずれか１つとマッチングすることに応答して、システムは、ブートプログラムの実行および／またはプログラム可能なロジック１６８の構築などを続行することによって、ペイロード１０６の処理を可能にする。各セッション鍵ＩＤ  １３６および各公開鍵１３４の各組み合わせが単一のハッシュ値である実装において、比較関数１６４が必要とされず、比較関数１６０が肯定的な比較結果を発見した場合、処理関数１６８は、ブートプログラムの実行および／またはプログラム可能なロジック１６８の構築などを続行する。
【００２４】
関連する公開鍵に独立して、セッション鍵を失効することができる。例示的な実装において、各々のセッション鍵ＩＤ  １３６は、１セットの電子ヒューズに記憶される。セッション鍵を失効するために、セッション鍵ＩＤを記憶する電子ヒューズのうちいずれかに電流を通さないようにする。ヒューズを溶断することによって、セッション鍵ＩＤの値を変更するため、ヒューズのセットに記憶された過去のセッション鍵ＩＤを効果的に失効することができる。したがって、例示的な実装において、セッション鍵ＩＤは、単項形式で記憶されている。
【００２５】
公開鍵を失効すると、公開鍵だけでなく、関連するセッション鍵も効果的に失効される。上述したように、不揮発性メモリ１３２は、公開鍵１３４およびセッション鍵ＩＤ１３６の組み合わせに関連付けられた鍵状態を記憶するための有効ビットを含む。各組み合わせは、１つの公開鍵および１つのセッション鍵ＩＤを含む。有効ビットに記憶された組み合わせに関連付けられた鍵状態は、関連する組み合わせが有効（失効されていない）であるか否かを示している。有効ビットは、電子ヒューズとして実装されてもよい。
【００２６】
図２は、認証鍵を用いて、システムの起動および／または設定を制御するシステム２００を示すブロック図である。システム２００は、プロセッサ２０２と、プログラム可能なロジック２０４と、ＲＯＭ  ２０６と、ＲＡＭ  ２０８と、不揮発性メモリ１３２と、ＲＯＭ  ２１２と、ストレージ２１４と、インターフェイス２１６、２１８および２２０とを含む。プロセッサ２０２、プログラム可能なロジック２０４、ＲＯＭ  ２０６、ＲＡＭ  ２０８、不揮発性メモリ１３２、およびインターフェイス２１６、２１８、２２０は、システムオンチップ（ＳＯＣ）として実装されてもよい。プロセッサは、公開鍵１３４のいずれか１つとセッション鍵ＩＤ１３６のいずれか１つとの組み合わせを用いて、第１段階のブートローダ（ＦＳＢＬ）２３２および／または設定ビットストリーム２３４を認証する。認証後、プロセッサは、ＦＳＢＬコードを実行する際にまたは設定ビットストリームを用いて構築されたプログラム可能なロジックを実行する際に、公開鍵および／またはセッション鍵ＩＤのいずれかを失効することができる。
【００２７】
システムを起動する際に、プロセッサ２０２は、ＲＯＭ  ２０６からプログラムコードを読み込み、実行する。そのプログラムコードによって、プロセッサは、ＦＳＢＬ  ２３２および／または設定ビットストリーム２３４をＲＡＭ  ２０８に入力し、その後、ＦＳＢＬまたはビットストリームを認証する。プロセッサに入力されたＦＳＢＬおよび設定ビットストリームは、付随の公開鍵、セッション鍵ＩＤおよび署名を有する。上述したように、プロセッサは、入力されたＦＳＢＬまたはビットストリームが真正であると判断した場合、ＦＳＢＬのプログラムコードを実行することによって、または設定ビットストリームを用いてプログラム可能なロジック２０４を構築することによって、ペイロードの処理を続行することができる。
【００２８】
例示的な実装において、不揮発性メモリ１３２は、電子ヒューズから構成される。公開鍵は、選択された電子ヒューズを溶断することにより、公開鍵のバイナリ値または公開鍵のハッシュ値を形成することによって、形成される。公開鍵に関連付けられたセッション鍵ＩＤも、同様に、１つ以上の電子ヒューズを溶断することにより、セッション鍵ＩＤの値を表すことによって、形成される。そのセッション鍵ＩＤを記憶する別の電子ヒューズを溶断することによって、関連付けられた公開鍵と共に使用される新規セッション鍵を形成することができる。したがって、セッション鍵のＩＤは、電子ヒューズにおいて単項形式で具体化される。例えば、３２個の電子ヒューズを用いてセッション鍵ＩＤを表す場合、そのセッション鍵ＩＤは、３２個の異なる値を有することができる。
【００２９】
公開鍵およびセッション鍵ＩＤの組み合わせに関連付けられた有効ビット１３８も、電子ヒューズを用いて実装される。有効ビットの電子ヒューズを溶断した場合、公開鍵は、無効化される。公開鍵に関連付けられたセッション鍵ＩＤがその公開鍵のみと共に使用されるため、そのセッション鍵ＩＤに関連付けられたセッション鍵も効果的に無効化される。有効ビット１３８およびセッション鍵ＩＤ  １３６の電子ヒューズは、プロセッサ２０２上で実行するプログラムコードによって溶断されてよく、もしくはプログラムコードまたは構成ビットストリームを認証した後、プログラム可能なロジック２０４に構成された回路によって溶断されてもよい。
【００３０】
一実装において、ライトイネーブル（ＷＥ）電子ヒューズ２４２は、第１公開鍵を除き、すべての公開鍵を制御する。これによって、プロセッサは、認証されていないプログラムコードまたは認証されていない設定ビットストリームを用いて構築されたプログラム可能なロジックを実行することによって、第１公開鍵をプログラムすることができる。不認証を受ける鍵が揮発性メモリ１３２に存在しないため、公開鍵スペースの最初のプログラミングは、認証なしで行うことができる。第１公開鍵を設定した後、後続鍵のプログラミングまたは失効は、プログラムコードまたは構成ビットストリームの認証をしなければ、行うことができない。
【００３１】
第１公開鍵以外の公開鍵は、ＷＥ電子ヒューズ２４２によって制御されることができる。一旦すべての所望値を公開鍵にプログラムすると、ＷＥビットの電子ヒューズを溶断することができる。別の実装において、個々のＷＥビットを用いて、公開鍵のプログラミングを個別に制御することができる。
【００３２】
システムは、公開鍵の不正プログラミングを防止する。権限のある者は、公開鍵を初期プログラミングする際に、電子ヒューズ内のすべての公開鍵１３４に値を設定することができる。その後、ＷＥ電子ヒューズ２４２を溶断することによって、公開鍵のさらなる設定を無効化するができる。代替的な手法では、権限のある者は、初期プログラミングの際に、ＷＥ電子ヒューズで保護されていない公開鍵（第１公開鍵）の値のみを設定することができる。その後、他の公開鍵を設定するまたは失効すること前に、まず、有効な公開鍵およびセッション鍵を用いて、入力されたプログラムコードまたは設定ビットストリームを認証しなければならない。
【００３３】
図３は、認証システムを初期設定するプロセスを示すフローチャートである。ブロック３０２において、非揮発性メモリに１つ以上の公開鍵の表記が設定される。実装要件に応じて、各公開鍵の表記は、公開鍵の実際値であってもよく、公開鍵のハッシュ値であってもよい。
【００３４】
一実装において、すべての公開鍵は、初期セットアップにおいて、不揮発性メモリに設定される。代替的には、第１公開鍵のみが設定され、プログラムコードまたは設定ビットストリームを認証した後に調整され、他の公開鍵が、ＳＯＣのプロセッサ上で動作するプログラムによってまたはＳＯＣのプログラム可能なロジックに構成された回路によって設定されてもよい。
【００３５】
ブロック３０４において、必要に応じて、値または１つ以上のセッション鍵ＩＤを不揮発性メモリに設定することができる。ブロック３０２に設定された各公開鍵に、初期のセッション鍵ＩＤを設定することができる。セッション鍵ＩＤの初期値が０であってもよいので、セッション鍵ＩＤの設定は、必須ではない。これによって、電子ヒューズを溶断する必要がない。しかしながら、所望値が０以外の場合、その値を示すように、電子ヒューズを溶断してもよい。
【００３６】
ブロック３０６において、必要に応じて、公開鍵を制御するＷＥ電子ヒューズを溶断することができる。このことは、初期セットアップ時にすべての公開鍵をＳＯＣに設定するシナリオにおいて、有用であり得る。ＷＥ電子ヒューズの溶断は、公開鍵の後続更新を無効化する。
【００３７】
図４は、公開鍵およびセッション鍵ＩＤを用いて、入力されたペイロードを認証するプロセスを示すフローチャートである。プロセスは、ブロック４０２において、入力から、ペイロードに付随する公開鍵を読み取り、ブロック４０４において、公開鍵のハッシュ値を計算する。実際の公開鍵を不揮発性メモリに記憶する実装において、ハッシュ値を計算する必要がない。
【００３８】
計算されたハッシュ値が不揮発性メモリに記憶された公開鍵のハッシュ値のいずれかとマッチングしない場合、プロセスは、判断ブロック４０６からブロック４０８に進行し、システムをロックダウンする。例えば、認証を実行するプロセッサは、システムのさらなる起動を中止することができ、またはプログラム可能なロジックの構築を中止することができる。
【００３９】
計算されたハッシュ値が不揮発性メモリに記憶された公開鍵のハッシュ値のいずれかとマッチングする場合、プロセスは、判断ブロック４０６から判定ブロック４１０に進行し、関連する有効ビットの状態から、マッチングした公開鍵のハッシュ値が有効であるか否かをチェックする。マッチングした公開鍵のハッシュ値が有効ではない場合、ブロック４０８において、システムをロックダウンする。
【００４０】
公開鍵のハッシュ値が有効である場合、ブロック４１２において、ペイロードからハッシュ値を計算し、ブロック４１４において、ペイロードに付随する署名を読み出し、入力された公開鍵を用いて復号化する。
【００４１】
ブロック４１６において、入力からセッション鍵ＩＤを読み取り、判定ブロック４１８において、入力されたセッション鍵ＩＤが不揮発性メモリに記憶されたマッチング公開鍵に関連付けられたセッション鍵ＩＤとマッチングするか否かを判定する。入力されたセッション鍵ＩＤにマッチングがない場合、ブロック４０８において、システムをロックダウンする。そうでなければ、判断ブロック４２０において、復号化された署名がブロック４１２でペイロードから計算されたハッシュ値と等しいか否かを判定する。復号化された署名にマッチングがない場合、ブロック４２２において、システムをロックダウンする。そうでなければ、プロセッサは、ブロック４２４において、プログラムの実行またはプログラム可能なロジックの構築を継続することができる。
【００４２】
公開鍵およびセッション鍵ＩＤが共にハッシュ化された実装（図示せず）において、入力された公開鍵およびセッション鍵ＩＤから、単一のハッシュ値を計算し、計算されたハッシュ値を不揮発性メモリに記憶された公開鍵およびセッション鍵ＩＤのハッシュ値と比較する。したがって、ブロック４０２、４０４および４０６は、入力された公開鍵と共に、入力されたセッション鍵ＩＤを処理するように変更することができ、ブロック４１６および４１８は、必要としない。
【００４３】
図５は、公開鍵またはセッション鍵ＩＤを失効するプロセスを示すフローチャートである。ＳＯＣ実装において、公開鍵またはセッション鍵の失効は、ＳＯＣのプロセッサ上で動作するプログラムコードによって、または認証された設定ビットストリームを用いて構築したＳＯＣのプログラム可能なロジックによって実行することができる。
【００４４】
ブロック５０２において、入力されたペイロードが認証される。ペイロードは、例えば、プログラムコードまたは設定ビットストリームのいずれであってもよく、セッション鍵を含んでもよい。認証は、ペイロードに付随する公開鍵およびセッション鍵ＩＤと共に、ペイロードの署名を用いて、行われる。
【００４５】
ブロック５０４において、公開鍵を失効するために、この公開鍵に関連付けられた有効ビットを実装する電子ヒューズを溶断する。各セッション鍵が可能な公開鍵のいずれかと共に使用されるため、公開鍵を失効することによって、公開鍵および関連付けられたセッション鍵の組み合わせを効果的に失効する。
【００４６】
ブロック５０６において、セッション鍵を失効するために、セッション鍵ＩＤを実装する電子ヒューズセットのうち、失効されたセッション鍵に関連付けられたセッション鍵ＩＤを実装する１つ以上の電子ヒューズを溶断する。電子ヒューズの溶断がセッション鍵ＩＤの値を変更するため、電子ヒューズセットに記憶された過去のセッション鍵ＩＤが失効され、新規のセッション鍵ＩＤが電子ヒューズセットの状態によって示される。理解すべきことは、セッション鍵ＩＤを失効するために、１つのみの電子ヒューズを溶断すると、その後に電流を通すように再構成することができないため、そのセットの電子ヒューズと共に使用できるセッション鍵ＩＤの数を最大化することができることである。
【００４７】
図６は、本明細書に記載のさまざまな手法を用いて、システムを実装できる例示的なＳＯＣアーキテクチャ６００を示す図である。当業者なら分かるように、図６のＳＯＣは、本発明の方法を実施することができる集積回路装置の単なる一例を提供するものである。ＳＯＣ  ６００は、例えば、マルチギガビットトランシーバ（ＭＧＴ  ６０１）、構成可能なロジックブロック（ＣＬＢ  ６０２）、ランダムアクセスメモリブロック（ＢＲＡＭ  ６０３）、入力／出力ブロック（ＩＯＢ  ６０４）、設定およびクロッキングロジック（ＣＯＮＦＩＧ／ＣＬＯＣＫＳ  ６０５）、デジタル信号処理ブロック（ＤＳＰの６０６）は、専用入力／出力ブロック（Ｉ／Ｏ  ６０７）（たとえば、設定ポートおよびクロックポート）、および他のプログラム可能なロジック６０８、例えば、デジタルクロックマネージャ、アナログデジタルコンバータおよびシステム監視ロジックなどを含む多数の異なるプログラム可能なタイルを備える。例示のＳＯＣは、配線により接続されたプロセッサ６１０をさらに備える。
【００４８】
いくつかの実装において、各プログラム可能なタイルは、プログラム可能な相互接続素子（ＩＮＴ）６１１を備える。ＩＮＴ６１１は、隣接する各タイルに位置する対応の相互接続素子への標準化接続およびそこからの標準化接続を含む。したがって、プログラム可能な相互接続素子を互いに接続することによって、図示されたＳＯＣのプログラム可能な相互接続構造を実現する。図６の上部の例示によって示すように、プログラム可能な相互接続素子（ＩＮＴ  ６１１）は、同一タイル内のプログラム可能なロジックプリミティブへの接続およびそこからの接続を含む。
【００４９】
例えば、ＣＬＢ  ６０２は、ユーザロジックを実現するようにプログラムすることができる構成可能なロジック素子（ＣＬＥ  ６１２）と、単一のプログラム可能な相互接続素子（ＩＮＴ  ６１１）とを含むことができる。ＢＲＡＭ  ６０３は、１つ以上のプログラム可能な相互接続素子の他に、ＢＲＡＭロジックプリミティブ（ＢＲＬ  ６１３）を含むことができる。一般的には、タイルに含まれる相互接続素子の数は、タイルの高さに依存する。図示された実装において、ＢＲＡＭタイルは、４つのＣＬＢと同様の高さを有するが、他の数（例えば、５つ）のＣＬＢと同様の高さを有してもよい。ＤＳＰタイル６０６は、適切な数のプログラム可能な相互接続素子の他に、ＤＳＰロジックプリミティブ（ＤＳＰＬ  ６１４）を含むことができる。ＩＯＢ  ６０４は、たとえば、１つのプログラム可能な相互接続素子（ＩＮＴ  ６１１）の他に、２つの入力／出力ロジックプリミティブ（ＩＯＬ  ６１５）を含むことができる。当業者には明らかなように、Ｉ／Ｏロジックプリミティブ６１５に接続された実際のＩ／Ｏパッドは、例えば、上述に例示されたさまざまなロジックブロック上に積層された金属を用いて製造され、一般的に入力／出力ロジックプリミティブ６１５の面積に限定されない。
【００５０】
図６に示されたアーキテクチャを利用する一部のＳＯＣは、プログラム可能なロジックの大部分を構成する規則的なコラム状構造を乱す追加のロジックブロックを含む。追加のロジックブロックは、プログラム可能なブロックおよび／または専用ロジックであってもよい。たとえば、図６に示されたプロセッサブロック（ＰＲＯＣ）６１０は、複数列のＣＬＢおよびＢＲＡＭを跨る。
【００５１】
図示された実装において、（図６に網掛けで表示された）ダイ中央付近のコラム状領域は、設定、クロックおよび他の制御ロジックに使用される。このコラムから延在する水平領域６０９は、ＳＯＣの全幅に亘ってクロックおよび設定信号を分配するように構成されている。構成ポート（図示せず）を用いて、プログラム可能なロジックの構成メモリ（図示せず）にアクセスすることによって、プログラム可能なロジックおよび相互接続リソースを構築することができる。一実施形態において、内部スクラバ（図示せず）は、内部構成アクセスポートを介して、構成メモリを連続的に読み取るおよび校正することができる。
【００５２】
なお、図６は、単に例示的なＳＯＣアーキテクチャを図示することを意図している。コラム内のロジックブロックの数、コラムの相対幅、コラムの数および順番、コラムに包含されたロジックブロックの種類、ロジックブロックの相対サイズ、および図６の上部に示された相互接続／ロジック実装は、単に例示的なものである。たとえば、実際のＳＯＣにおいて、ユーザロジックの効率的な実装を容易にするために、一般的に、ＣＬＢの２つ以上の隣接する列は、ＣＬＢの出現する箇所に含まれる。
【００５３】
場合によって、態様および特徴を個々の図面で説明したが、理解すべきことは、１つの図面の特徴は、別の図形の特徴と併用するように明示的に示されまたは明示的に記載されていなくても、別の図形の特徴と併用することができることである。
【００５４】
以下、いくつかの例を説明する。しかしながら、当業者にとって明白なことは、以下に説明する詳細のすべてを必要せず、１つ以上の他の実施例および／またはこれらの実施例の変形例を実施できることである。
【００５５】
本明細書に記載の例示的な方法は、一般的にデータの認証に関する。この方法は、
公開鍵およびセッション鍵ＩＤの表記の複数の組み合わせを不揮発性メモリに記憶するステップと、ペイロードと、ペイロードに付随する公開鍵、セッション鍵ＩＤおよび署名とを入力するステップとを備え、署名は、ペイロードと、付随の公開鍵および秘密鍵を含む鍵ペアのうち秘密鍵との関数であり、プロセッサを用いて、付随の公開鍵およびセッション鍵ＩＤ並びに不揮発性メモリに記憶された組み合わせから、および署名およびペイロードから、ペイロードが真正であるか否かを判断するステップと、ペイロードが真正であるという判断に応答して、ペイロードの処理を実行するステップと、ペイロードが真正ではないという判断に応答して、ペイロードの処理を無効化するステップとを備える。
【００５６】
場合によって、方法は、複数の組み合わせのうち１つの組み合わせ中のセッション鍵ＩＤの表記を記憶する複数の電子ヒューズのうち１つの電子ヒューズに電流を通さないようにすることによって、新規セッション鍵を形成するステップをさらに備え、公開鍵およびセッション鍵ＩＤの表記の複数の組み合わせを記憶するステップは、各セッション鍵ＩＤの表記を複数の電子ヒューズに記憶するステップを含む。
【００５７】
場合によって、方法は、公開鍵およびセッション鍵ＩＤの表記の複数の組み合わせにそれぞれ関連付けられた複数の鍵状態を記憶するステップをさらに備え、各鍵状態は、関連付けられた組み合わせが有効であるか否かを示し、付随の公開鍵およびセッション鍵ＩＤ並びに不揮発性メモリに記憶された複数の組み合わせから、ペイロードが真正であるか否かを判断するステップは、複数の組み合わせのうち、１つの組み合わせが付随の公開鍵とマッチングする公開鍵の表記を有するか否か、および１つの組み合わせに関連付けられた鍵状態から、１つの組み合わせが有効であるか否かを判断するステップと、１つの組み合わせが付随の公開鍵とマッチングする公開鍵の表記を有し且つ有効ではないという判断に応答して、ペイロードが真正ではないことを指示するステップとを備える。
【００５８】
場合によって、方法において、公開鍵およびセッション鍵ＩＤの表記の複数の組み合わせにそれぞれ関連付けられた複数の鍵状態を記憶するステップは、各鍵状態を１つ以上の電子ヒューズに記憶するステップを含む。
【００５９】
場合によって、方法は、複数の組み合わせのうち１つの組み合わせ中のセッション鍵ＩＤの表記を記憶する複数の電子ヒューズのうち１つの電子ヒューズに電流を通さないようにすることによって、新規セッション鍵を形成するステップをさらに備え、公開鍵およびセッション鍵ＩＤの表記の複数の組み合わせを記憶するステップは、各セッション鍵ＩＤの表記を複数の電子ヒューズに記憶するステップを含む。
【００６０】
場合によって、方法において、公開鍵およびセッション鍵ＩＤの表記の複数の組み合わせのうち、各公開鍵の表記は、公開鍵のハッシュ値であり、付随の公開鍵およびセッション鍵ＩＤ並びに不揮発性メモリに記憶された複数の組み合わせから、ペイロードが真正であるか否かを判断するステップは、付随の公開鍵のハッシュ値を計算するステップと、付随の公開鍵のハッシュ値が、複数の組み合わせのうち、１つの組み合わせの公開鍵の表記とマッチングするか否かを判定するステップと、付随の公開鍵のハッシュ値が複数の組み合わせの公開鍵の表記とマッチングしないという判断に応答して、ペイロードが真正ではないことを指示するステップとを含む。
【００６１】
場合によって、方法において、付随の公開鍵およびセッション鍵ＩＤ並びに不揮発性メモリに記憶された複数の組み合わせから、ペイロードが真正であるか否かを判断するステップは、公開鍵およびセッション鍵ＩＤの複数の組み合わせのうち、付随の公開鍵のハッシュ値とマッチングする公開鍵の表記を有する１つの組み合わせに対して、付随のセッション鍵ＩＤ番号が１つの組み合わせのセッション鍵ＩＤ番号の表記とマッチングするか否かを判断するステップと、付随のセッション鍵ＩＤ番号が１つの組み合わせのセッション鍵ＩＤ番号の表記とマッチングするという判断に応答して、ペイロードが真正であることを指示するステップと、付随のセッション鍵ＩＤ番号が１つの組み合わせのセッション鍵ＩＤ番号の表記とマッチングしないという判断に応答して、ペイロードが真正ではないことを指示するステップとを含む。
【００６２】
場合によって、方法において、公開鍵およびセッション鍵ＩＤの表記の複数の組み合わせを記憶するステップは、各セッション鍵ＩＤの表記を複数の電子ヒューズに記憶するステップを含む。
【００６３】
場合によって、方法は、公開鍵およびセッション鍵ＩＤの表記の複数の組み合わせにそれぞれ関連付けられた複数の鍵状態を記憶するステップをさらに備え、各鍵状態は、関連付けられた組み合わせが有効であるか否かを示し、付随の公開鍵およびセッション鍵ＩＤ並びに不揮発性メモリに記憶された複数の組み合わせから、ペイロードが真正であるか否かを判断するステップは、複数の組み合わせのうち、１つの組み合わせが付随の公開鍵とマッチングする公開鍵の表記を有するか否か、および１つの組み合わせに関連付けられた鍵状態から、１つの組み合わせが有効であるか否かを判断するステップと、１つの組み合わせが付随の公開鍵とマッチングする公開鍵の表記を有し且つ有効ではないという判断に応答して、ペイロードが真正ではないことを指示するステップとを備える。
【００６４】
場合によって、方法において、公開鍵およびセッション鍵ＩＤの表記の複数の組み合わせを記憶するステップは、各セッション鍵ＩＤの表記を複数の電子ヒューズに記憶するステップを含む。
【００６５】
場合によって、方法は、複数の組み合わせのうち１つの組み合わせ中のセッション鍵ＩＤの表記を記憶する複数の電子ヒューズのうち１つの電子ヒューズに電流を通さないようにすることによって、新規セッション鍵を形成するステップをさらに備え、公開鍵およびセッション鍵ＩＤの表記の複数の組み合わせを記憶するステップは、各セッション鍵ＩＤの表記を複数の電子ヒューズに記憶するステップを含む。
【００６６】
場合によって、方法において、公開鍵およびセッション鍵ＩＤの表記の複数の組み合わせのうち、各公開鍵の表記は、公開鍵のハッシュ値であり、付随の公開鍵およびセッション鍵ＩＤ並びに不揮発性メモリに記憶された複数の組み合わせから、ペイロードが真正であるか否かを判断するステップは、付随の公開鍵のハッシュ値を計算するステップと、付随の公開鍵のハッシュ値が、複数の組み合わせのうち、１つの組み合わせの公開鍵の表記とマッチングするか否かを判定するステップと、付随の公開鍵のハッシュ値が複数の組み合わせの公開鍵の表記とマッチングしないという判断に応答して、ペイロードが真正ではないことを指示するステップとを含む。
【００６７】
本明細書に記載の例示的な装置は、認証システムに関する。この装置は、公開鍵およびセッション鍵ＩＤの表記の複数の組み合わせを記憶するように構成可能な不揮発性メモリと、不揮発性ストレージに連結されたプロセッサとを備え、プロセッサは、ペイロードと、ペイロードに付随する公開鍵、セッション鍵ＩＤおよび署名とを入力するように構成され、署名は、ペイロードと、付随の公開鍵および秘密鍵を含む鍵ペアのうち秘密鍵との関数であり、付随の公開鍵およびセッション鍵ＩＤ並びに不揮発性メモリに記憶された複数の組み合わせから、および署名およびペイロードから、ペイロードが真正であるか否かを判断し、ペイロードが真正であるという判断に応答して、ペイロードの処理を実行し、ペイロードが真正ではないという判断に応答して、ペイロードの処理を無効化するように構成されている。
【００６８】
場合によって、装置において、不揮発性メモリは、公開鍵およびセッション鍵ＩＤの表記の組み合わせを記憶するための複数の電子ヒューズを含み、プロセッサはさらに、複数の組み合わせのうち１つの組み合わせ中のセッション鍵ＩＤの表記を記憶する複数の電子ヒューズのうち１つに電流を通さないようにすることによって、新規セッション鍵を形成するように構成されている。
【００６９】
場合によって、装置において、不揮発性メモリは、公開鍵およびセッション鍵ＩＤの表記の複数の組み合わせにそれぞれ関連付けられた複数の鍵状態を記憶するストレージをさらに含み、各鍵状態は、関連付けられた組み合わせが有効であるか否かを示し、プロセッサは、さらに、複数の組み合わせのうち１つの組み合わせが付随の公開鍵とマッチングする公開鍵の表記を有するか否か、および１つの組み合わせに関連付けられた鍵状態から、組み合わせが有効であるか否かを判断し、１つの組み合わせが付随の公開鍵とマッチングする公開鍵の表記を有し且つ有効ではないという判断に応答して、ペイロードが真正ではないことを指示するように構成されている。
【００７０】
場合によって、装置において、複数の鍵状態を記憶するための複数の電子ヒューズを含む。
【００７１】
場合によって、装置において、不揮発性メモリは、セッション鍵ＩＤの表記を記憶するための複数の電子ヒューズを含み、プロセッサはさらに、複数の組み合わせのうち１つの組み合わせ中のセッション鍵ＩＤの表記を記憶する複数の電子ヒューズのうち１つに電流を通さないようにすることによって、新規セッション鍵を形成するように構成されている。
【００７２】
場合によって、装置において、公開鍵およびセッション鍵ＩＤの表記の複数の組み合わせのうち、各公開鍵の表記は、公開鍵のハッシュ値であり、プロセッサは、付随の公開鍵およびセッション鍵ＩＤ並びに不揮発性メモリに記憶された複数の組み合わせから、ペイロードが真正であるか否かを判断する際に、付随の公開鍵のハッシュ値を計算し、付随の公開鍵のハッシュ値が、複数の組み合わせのうち、１つの組み合わせの公開鍵の表記とマッチングするか否かを判定し、付随の公開鍵のハッシュ値が複数の組み合わせの公開鍵の表記とマッチングしないという判断に応答して、ペイロードが真正ではないことを指示するように構成されている。
【００７３】
場合によって、装置において、プロセッサは、付随の公開鍵およびセッション鍵ＩＤ並びに不揮発性メモリに記憶された複数の組み合わせから、ペイロードが真正であるか否かを判断する際に、公開鍵およびセッション鍵ＩＤの複数の組み合わせのうち、付随の公開鍵のハッシュ値とマッチングする公開鍵の表記を有する１つの組み合わせに対して、付随のセッション鍵ＩＤ番号が１つの組み合わせのセッション鍵ＩＤ番号の表記とマッチングするか否かを判断し、付随のセッション鍵ＩＤ番号が１つの組み合わせのセッション鍵ＩＤ番号の表記とマッチングするという判断に応答して、ペイロードが真正であることを指示し、付随のセッション鍵ＩＤ番号が１つの組み合わせのセッション鍵ＩＤ番号の表記とマッチングしないという判断に応答して、ペイロードが真正ではないことを指示するように構成されている。
【００７４】
場合によって、装置において、不揮発性メモリ内の公開鍵およびセッション鍵ＩＤの表記の複数の組み合わせのうち、各組み合わせは、公開鍵およびセッション鍵ＩＤのハッシュ値であり、プロセッサは、付随の公開鍵およびセッション鍵ＩＤ並びに不揮発性メモリに記憶された複数の組み合わせから、ペイロードが真正であるか否かを判断する際に、付随の公開鍵およびセッション鍵ＩＤの第１ハッシュ値を計算し、第１ハッシュ値が不揮発性メモリ内のハッシュ値のいずれかとマッチングするか否かを判断し、第１ハッシュ値が不揮発性メモリ内のハッシュ値のいずれかとマッチングしないという判断に応答して、ペイロードが真正ではないことを指示するように構成されている。
【００７５】
本発明のシステムおよび方法は、さまざまな認証システムに適用可能であると考えられる。他の態様および特徴は、明細書を参照すれば当業者にとって明白であろう。システムおよび方法は、ソフトウェアを実行するように構成された１つ以上のプロセッサとして、特定用途向け集積回路（ＡＳＩＣ）として、またはプログラム可能なロジック装置上のロジックとして実装することができる。なお、本明細書および図面は例示のみとして見なされるべきであり、本発明の範囲は、特許請求の範囲によって示される。
【図１】
0006510546.tif 000002
【図２】
0006510546.tif 000003
【図３】
0006510546.tif 000004
【図４】
0006510546.tif 000005
【図５】
0006510546.tif 000006
【図６】
0006510546.tif 000007