(57)【要約】【課題】  耐故障的なデータの暗号化保護、完全性保護及びアンチリプレイ保護のための方法を提供する。【解決手段】  データブロブ及びアンチリプレイテーブルブロブが、不揮発性メモリの一時的記憶領域に複製される。データブロブ及びアンチリプレイテーブルブロブが一時的記憶領域に複製された後、原子的処理にて、状態標識が設定され且つ単調カウンタがインクリメントされる。状態標識が設定される間に故障が発生した場合、データブロブ及びアンチリプレイテーブルブロブは一時的記憶領域から復元され得る。【選択図】図６
2009003933.tif 000002
【特許請求の範囲】
【請求項１】
データブロブ及びアンチリプレイテーブルブロブを、不揮発性メモリの一時的記憶領域に複製する段階；及び
前記データブロブ及び前記アンチリプレイテーブルブロブを前記一時的記憶領域に複製した後に、原子的処理にて、状態標識を設定し且つ単調カウンタをインクリメントする段階；
を有する方法。
【請求項２】
前記データブロブ及び前記アンチリプレイテーブルブロブを、前記一時的記憶領域から前記不揮発性メモリの主記憶領域に複製する段階、を更に有する請求項１に記載の方法。
【請求項３】
前記データブロブ及び前記アンチリプレイテーブルブロブを前記主記憶領域に複製した後に、前記状態標識をクリアする段階、を更に有する請求項２に記載の方法。
【請求項４】
再起動後、前記状態標識が設定されていることを判定する段階、及びそれに続いて、前記データブロブ及び前記アンチリプレイテーブルブロブを、前記一時的記憶領域から前記不揮発性メモリの主記憶領域に複製する段階、を更に有する請求項１に記載の方法。
【請求項５】
再起動後、前記状態標識が設定されていないことを判定する段階、及びそれに続いて、前記データブロブ及び前記アンチリプレイテーブルに関する更なる活動を行わない段階、を更に有する請求項１に記載の方法。
【請求項６】
ヘッダ、単調カウンタ値、乱数値、クリアテキストシークレット、及び完全性検査値を含む前記データブロブを生成する段階、及び前記データブロブの前記ヘッダ及び前記単調カウンタ値を用いて、アンチリプレイテーブルブロブを更新する段階、を更に有する請求項１に記載の方法。
【請求項７】
前記データブロブの前記単調カウンタ値、前記乱数値、前記クリアテキストシークレット、及び前記完全性検査値は、複数のハードウェアヒューズから取得される機密性鍵を用いて暗号化される、請求項６に記載の方法。
【請求項８】
前記状態標識及び前記単調カウンタは単一のハードウェアレジスタ内にある、請求項１に記載の方法。
【請求項９】
前記状態標識を設定し且つ前記単調カウンタをインクリメントする段階は、単一のマイクロプロセッサ命令を実行することから成る、請求項１に記載の方法。
【請求項１０】
前記不揮発性メモリは、フラッシュメモリ及びハードディスクドライブの何れかである、請求項１に記載の方法。
【請求項１１】
ブロブサービスを実行するプロセッサ；
前記プロセッサに結合された、単調カウンタを含むチップセット；及び
前記プロセッサに結合された不揮発性記憶装置；
を有するシステムであって：
前記ブロブサービスは、前記不揮発性記憶装置に書き込まれるべきデータブロブ及びアンチリプレイテーブルブロブを生成し、前記データブロブは、ヘッダ及び前記単調カウンタからの単調カウンタ値を含み、且つ前記アンチリプレイテーブルブロブは、前記データブロブの前記ヘッダ及び前記単調カウンタ値を含む、システム。
【請求項１２】
前記単調カウンタはレジスタの一部であり、前記レジスタは更に状態標識を含む、請求項１１に記載のシステム。
【請求項１３】
前記状態標識は、前記不揮発性記憶装置の一時的記憶領域への前記データブロブ及び前記アンチリプレイテーブルブロブの書き込みが成功したかを指し示す、請求項１２に記載のシステム。
【請求項１４】
前記データブロブは、機密性保護、完全性保護及びアンチリプレイ保護を用いて保護される、請求項１２に記載のシステム。
【請求項１５】
前記アンチリプレイテーブルブロブは、完全性保護及びアンチリプレイ保護を用いて保護される、請求項１４に記載のシステム。
【請求項１６】
前記チップセットは更に、完全性エンジン、暗号化エンジン、シリコンベース鍵、及び乱数発生器を含む、請求項１１に記載のシステム。
【請求項１７】
機械にアクセスされたときに該機械に：
データブロブ及びアンチリプレイテーブルブロブを、揮発性メモリから不揮発性メモリの一時的記憶領域に複製する段階；及び
前記データブロブ及び前記アンチリプレイテーブルブロブを前記一時的記憶領域に複製した後に、原子的処理にて、状態標識を設定し且つ単調カウンタをインクリメントする段階；
を有する処理を実行させるデータ、を含む機械アクセス可能媒体。
【請求項１８】
前記データブロブ及び前記アンチリプレイテーブルブロブを、前記一時的記憶領域から前記不揮発性メモリの主記憶領域に複製する段階、を有する処理を前記機械に実行させるデータ、を更に含む請求項１７に記載の機械アクセス可能媒体。
【請求項１９】
前記データブロブ及び前記アンチリプレイテーブルブロブを前記主記憶領域に複製した後に、前記状態標識をクリアする段階、を有する処理を前記機械に実行させるデータ、を更に含む請求項１８に記載の機械アクセス可能媒体。
【請求項２０】
再起動後、前記状態標識が設定されていることを判定する段階、及びそれに続いて、前記データブロブ及び前記アンチリプレイテーブルブロブを、前記一時的記憶領域から前記不揮発性メモリの主記憶領域に複製する段階、を有する処理を前記機械に実行させるデータ、を更に含む請求項１７に記載の機械アクセス可能媒体。
【請求項２１】
再起動後、前記状態標識が設定されていないことを判定する段階、及びそれに続いて、前記データブロブ及び前記アンチリプレイテーブルに関する更なる活動を行わない段階、を有する処理を前記機械に実行させるデータ、を更に含む請求項１７に記載の機械アクセス可能媒体。
【請求項２２】
ヘッダ、単調カウンタ値、乱数値、クリアテキストシークレット、及び完全性検査値を含む前記データブロブを生成する段階、及び前記データブロブの前記ヘッダ及び前記単調カウンタ値を用いて、アンチリプレイテーブルブロブを更新する段階、を有する処理を前記機械に実行させるデータ、を更に含む請求項１７に記載の機械アクセス可能媒体。
【請求項２３】
前記データブロブの前記単調カウンタ値、前記乱数値、前記クリアテキストシークレット、及び前記完全性検査値は、複数のハードウェアヒューズから取得される機密性鍵を用いて暗号化される、請求項２２に記載の機械アクセス可能媒体。
【請求項２４】
前記状態標識及び前記単調カウンタは単一のハードウェアレジスタ内にある、請求項１７に記載の機械アクセス可能媒体。
【請求項２５】
前記状態標識を設定し且つ前記単調カウンタをインクリメントする段階は、単一のマイクロプロセッサ命令を実行することから成る、請求項１７に記載の機械アクセス可能媒体。
【請求項２６】
ヘッダとハードウェア単調カウンタからの単調カウンタ値とを含むデータブロブを生成する段階；
前記データブロブの前記ヘッダ及び前記単調カウンタ値を用いて、アンチリプレイテーブルブロブを更新し、且つ前記アンチリプレイテーブルブロブを前記単調カウンタ値に関連付ける段階；及び
前記データブロブ及び前記アンチリプレイテーブルブロブが不揮発性メモリの一時的記憶領域に格納されたとき、前記ハードウェア単調カウンタをインクリメントし且つ状態標識を設定する段階；
を有する方法。
【請求項２７】
前記ハードウェア単調カウンタをインクリメントし且つ前記状態標識を設定する段階は原子的処理にて行われる、請求項２６に記載の方法。
【請求項２８】
前記データブロブ及び前記アンチリプレイテーブルブロブが前記不揮発性メモリの主記憶領域に格納されたとき、前記状態標識をクリアする段階、を更に有する請求項２６に記載の方法。
【請求項２９】
再起動後、前記状態標識が設定されているかを判定する段階、及び、前記状態標識が設定されていると判定された場合に、前記データブロブ及び前記アンチリプレイテーブルブロブを、前記不揮発性メモリの前記一時的記憶領域から前記不揮発性の主記憶領域に複製する段階、を更に有する請求項２６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの耐故障的な保護のための方法、システム及び装置に関する。
【背景技術】
【０００２】
コンピュータ処理において、データの安全性が課題として残されている。データは、機密性（confidentiality）保護、完全性（integrity）保護、及びアンチリプレイ（anti-replay；ＡＲ）保護の１つ以上を用いて保護されることがある。機密性保護はデータの暗号化によって実現され得るものであり、権限のないユーザが暗号化されたデータを読むことができないようにする。完全性保護は、データが変更あるいは改ざんされたかを検出するために使用され得る。アンチリプレイ保護はデータメッセージが複数回にわたって受取人に送信されることを防止するために使用され得る。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
本発明は、不揮発性メモリにおけるデータの耐故障的な暗号化保護、完全性保護、及びアンチリプレイ保護のための方法、システム及び装置を提供することを目的とする。
【課題を解決するための手段】
【０００４】
一態様に従った方法は、データブロブ及びアンチリプレイテーブルブロブを、不揮発性メモリの一時的記憶領域に複製する段階と、データブロブ及びアンチリプレイテーブルブロブを一時的記憶領域に複製した後に、原子的処理にて、状態標識を設定し且つ単調カウンタをインクリメントする段階とを有する。
【０００５】
他の一態様に従ったシステムは、ブロブサービスを実行するプロセッサと、プロセッサに結合された、単調カウンタを含むチップセットと、プロセッサに結合された不揮発性記憶装置とを有する。このシステムにおいて、ブロブサービスは、不揮発性記憶装置に書き込まれるべきデータブロブ及びアンチリプレイテーブルブロブを生成し、データブロブは、ヘッダ及び単調カウンタからの単調カウンタ値を含み、且つアンチリプレイテーブルブロブは、データブロブのヘッダ及び単調カウンタ値を含む。
【０００６】
他の一態様に従った機械アクセス可能媒体にあっては、当該機械アクセス可能媒体が含むデータは、機械にアクセスされたときに該機械に、データブロブ及びアンチリプレイテーブルブロブを、揮発性メモリから不揮発性メモリの一時的記憶領域に複製する段階と、データブロブ及びアンチリプレイテーブルブロブを一時的記憶領域に複製した後に、原子的処理にて、状態標識を設定し且つ単調カウンタをインクリメントする段階とを有する処理を実行させる。
【０００７】
他の一態様に従った方法は、ヘッダとハードウェア単調カウンタからの単調カウンタ値とを含むデータブロブを生成する段階と、データブロブのヘッダ及び単調カウンタ値を用いて、アンチリプレイテーブルブロブを更新し、且つアンチリプレイテーブルブロブを単調カウンタ値に関連付ける段階と、データブロブ及びアンチリプレイテーブルブロブが不揮発性メモリの一時的記憶領域に格納されたとき、ハードウェア単調カウンタをインクリメントし且つ状態標識を設定する段階とを有する。
【０００８】
以下の詳細な説明と添付の図面とから、本発明のより十分な理解が得られる。
【発明を実施するための最良の形態】
【０００９】
以下の説明においては、数多くの具体的な詳細事項が説明される。しかしながら、理解されるように、本発明の実施形態はこれらの具体的な詳細事項を用いずに実施されてもよい。また、この説明の理解を不明瞭にしないよう、周知の回路、構造及び技術は詳細には示されない。
【００１０】
“一実施形態”、“或る実施形態”、“実施例”、“様々な実施形態”等への言及は、そのように説明される本発明の実施形態は特定の特徴、構造又は特性を含むが、全ての実施形態が必ずしもその特定の特徴、構造又は特性を含むわけではないことを指し示す。また、一部の実施形態は、その他の実施形態に関して説明される特徴の一部又は全てを有していてもよいし、該特徴を全く有していなくてもよい。
【００１１】
以下の説明及び請求項においては、用語“結合され”及び“接続され”、並びにこれらの派生語が使用されることがある。理解されるべきことには、これらの用語は互いの同義語として意図されてはいない。むしろ、特定の実施形態において、“接続され”は、２つ以上の要素が互いに直接的に物理的あるいは電気的に接触することを指し示すために使用される。“結合され”は、２つ以上の要素が協働あるいは相互作用するが、直接的に物理的あるいは電気的に接触することは問わないことを指し示すために使用される。
【００１２】
請求項においては、特に断らない限り、共通の要素を記述するために使用される順序を示す形容詞“第１”、“第２”、“第３”は、単に、同様の要素のうちの異なるものが参照されることを指し示すものであり、そのように記述される要素が、時間的、空間的、ランク順、あるいはその他の何らかの方法で、与えられた順序でなければならないことを示すものではない。
【００１３】
本発明の様々な実施形態は、ハードウェア、ファームウェア及びソフトウェアの１つ又は何らかの組み合わせにて実現され得る。一部の実施形態は、ここで説明される処理を実行することが可能な１つ以上のプロセッサによって読み取られて実行される、機械読み取り可能媒体に格納された命令群によって実現されてもよい。機械読み取り可能媒体は、機械（例えば、コンピュータ）が読み取り可能な形態で情報を記憶、送信且つ／或いは受信する機構を含んでいてもよい。例えば、機械読み取り可能媒体は、以下には限られないが、例えば読み出し専用メモリ（ＲＯＭ）；ランダムアクセスメモリ（ＲＡＭ）；磁気ディスク記憶媒体；光記憶媒体；フラッシュメモリデバイス等の記憶媒体を含み得る。機械読み取り可能媒体はまた、以下には限られないが、例えば光又は音響の搬送波信号などの、命令を符号化するように変調された伝搬信号を含み得る。
【００１４】
“ブロブ（blob）”としても知られる“バイナリ・ラージ・オブジェクト”は、揮発性あるいは不揮発性の媒体内に単一のエンティティとして記憶されたバイナリデータの集合である。ブロブは如何なるデータオブジェクトであってもよく、以下に限られないが、実行可能ファイルや画像などを含む。ブロブは、機密性保護、完全性保護及び／又はアンチリプレイ保護によって保護され得る。
【００１５】
図１は、一部の実施形態に従ったシステム１００のブロック図である。このシステムは、シングルコア又はマルチコアのプロセッサである１つ以上のプロセッサ１０２を含む。プロセッサ１０２にはチップセット１１０が結合されている。チップセット１１０は、例えば、入力／出力コントローラハブ（ＩＣＨ）、及び／又はメモリコントローラハブ（ＭＣＨ）を含み得る。一部の実施形態において、チップセット及びプロセッサは単一のダイに集積されていてもよいし、単一パッケージ内の複数のダイに収容されていてもよい。他の実施形態においては、チップセット及びプロセッサは別個のパッケージ内にあってもよい。
【００１６】
プロセッサ１０２には、また、例えばダイナミック・ランダムアクセスメモリ（ＤＲＡＭ）若しくはその他の揮発性メモリ等の揮発性記憶デバイス（ＶＭ）１０８、及び例えばフラッシュメモリデバイス若しくはハードディスクドライブ（ＨＤＤ）等の不揮発性記憶デバイス（ＮＶＭ）１２０も結合されている。不揮発性メモリデバイス１２０は、１つ以上のデータブロブ１２２と、該１つ以上のデータブロブ１２２に関するアンチリプレイテーブル１２４とを記憶するために使用され得る。一部の実施形態において、アンチリプレイテーブルは、それ自体が保護されたブロブであってもよく、単調（monotonic）カウンタ値と各データブロブ１２２のヘッダとを含み得る。
【００１７】
このシステムはまた、入力／出力（Ｉ／Ｏ）装置１３０、及び有線又は無線のネットワークインターフェース１３２を含んでいてもよい。無線ネットワークインターフェースはアンテナ１３４を含み得る。
【００１８】
機密性保護、完全性保護且つ／或いはアンチリプレイ保護されるブロブを作り出すためにブロブサービスアプリケーション１０４が使用される。ブロブサービス１０４は、ファームウェア又はソフトウェアに基づくアプリケーションであってもよく、プロセッサ１０２によって実行される。
【００１９】
チップセット１１０はシリコンベースの対称鍵１１４を含み得る。この鍵はシリコン製造プロセス中に、ダイ内のハードウェアヒューズをランダムに飛ばすことによって作り出され得る。使用されるヒューズの数はセキュリティレベルを決定する。シリコンベース鍵を生成するために使用されるヒューズが多いほど、鍵のセキュリティレベルは強化される。一部の実施形態において、１２８個のヒューズが使用されてもよい。後に続く鍵がどのように得られるかに応じて、可変サイズの鍵がヒューズから生成されてもよい。例えば、ＳＨＡ−２５６（セキュア・ハッシュ・アルゴリズム）は、ＡＥＳ−２５６（アドバンスト・暗号化標準）の機密性操作にて使用され得る２５６ビットの鍵を生成する。
【００２０】
チップセット１１０は更に、完全性／ＨＭＡＣ（鍵付ハッシュメッセージ認証コード）エンジン及び暗号化エンジン１０６を含む。完全性・暗号化エンジン１０６は、ファームウェア、ハードウェア、又はソフトウェアに基づく。完全性／暗号化エンジンは、ブロブの機密性保護及び完全性保護を実現するために用いられる。
【００２１】
チップセット１１０は更に、単調カウンタ１１２及び乱数発生器（ＲＮＧ）１１６を含む。単調カウンタは、全てのシステム電力状態において電力を保持し、データブロブ１２２をアンチリプレイテーブル１２４内のエンティティに関連付けるために使用され得る。乱数発生器１１６は、単調カウンタの値に付加される乱数を発生する。乱数は、単調カウンタがリセットされるときに発生されて単調カウンタ値に付加されてもよい。この乱数は、単調カウンタ１１２がリセットされたときを、ブロブサービス１０４が検出することを可能にする。
【００２２】
図２は、一部の実施形態に従ってデータブロブの機密性保護、完全性保護、及びアンチリプレイ保護を行う方法を例示するフロー図である。
【００２３】
システムの電源がオンにされると、信頼できるファームウェアが、一部の実施形態においてハードウェアヒューズであるシリコンベース対称鍵を読み込む。ブロック２０２に示されるように、シリコンベース対称鍵からルートの対称鍵が生成される。一部の実施形態において、信頼できるファームウェアは、例えばＳＨＡ−２５６アルゴリズム等のアルゴリズムへの入力としてパスフレーズ及びシリコンベース対称鍵を用いることにより、ルートの対称鍵を取得し得る。このアルゴリズムの出力がルートの対称鍵となり得る。
【００２４】
ブロック２０４に示されるように、ルートの対称鍵から、例えば機密性鍵及び／又は完全性鍵などのその他の鍵が取得される。一部の実施形態において、機密性鍵は、ブロブに格納されるべきデータを暗号化するために、ＡＥＳ−ＣＴＲ（アドバンスト・暗号化標準−カウンタ）モードへの入力として使用され得る。一部の実施形態において、完全性鍵は、完全性検査値（integrity  check  value；ＩＣＶ）を生成するために、ＨＭＡＣへの入力として使用され得る。
【００２５】
ブロック２０６に示されるように、データブロブを生成するための要求が作成される。一部の実施形態において、この要求は公開ＡＰＩ（アプリケーション・プログラミング・インターフェース）を介して作成され得る。この要求は、データブロブに含められるべきクリアテキストと必要とされる保護の種類（例えば、完全性、機密性、及び／又はアンチリプレイ保護）とを含んでいてもよい。この要求はまた、使用されるべき特定の完全性及び／又は機密性アルゴリズムを指定してもよい。
【００２６】
ブロック２０８に示されるように、データブロブの生成要求が受信された後、ブロブサービスはブロブをクリアテキストで作成する。図３は、クリアテキストシークレット３１０のデータブロブの作成を例示するブロック図である。クリアテキストブロブ３０２の作成において、ブロブサービスは、そのブロブを記述するヘッダ３０４を作成する。ヘッダ３０４は、例えばそのブロブについての保護の種類、ブロブの大きさ、又はその他の秘密でない情報などの情報を含む。ヘッダ３０４は如何なる秘密も含まないのでクリアテキストのままにされ、暗号化されない。
【００２７】
ブロブサービスは、単調カウンタの値３０８及びそれに付随する乱数３０６をヘッダ３０４に付加し、また、クリアテキストシークレット３１０をヘッダに付加する。
【００２８】
再び図２を参照するに、ブロック２１０に示されるように、完全性検査値がクリアテキストブロブに付加される。図３に示されるように、完全性検査値（ＩＣＶ）３１４は、完全性検査アルゴリズム３１２を用いて作成される。完全性検査アルゴリズムへの入力は、クリアテキストのヘッダ３０４、単調カウンタ値３０８及びそれに付随する乱数３０６、並びにクリアテキストシークレット３１０を含む。完全性検査値３１４がクリアテキストのデータブロブ３０２に付加されている。
【００２９】
完全性検査値がクリアテキストデータブロブに付加された後、図２のブロック２１２に示されるように、単調カウンタ値及びそれに付随する乱数、クリアテキストシークレット、並びに完全性検査値が、機密性鍵を用いて暗号化される。図３は、単調カウンタ値３０８及びそれに付随する乱数３０６、クリアテキストシークレット３１０、並びに完全性検査値３１４が、取得された機密性鍵を用いて暗号化３１６を施された後に作成された、暗号化されたデータブロブ３２０を例示している。暗号化されたデータブロブは、ブロブヘッダ３０４及び暗号文３１８を含む。ブロブヘッダ３０４は、解読が行われる前に読み取られなければならないため、また秘密を含んでいないため、暗号化されていない。暗号化されたデータブロブ３２０は、不揮発性メモリ（ＮＶＭ）１２０に格納される多数のブロブ３２２の１つである。
【００３０】
再び図２を参照するに、データブロブが作成あるいは変更されるときは常に、ブロック２１４に示されるように、ブロブヘッダ及びブロブの単調カウンタ値を用いてアンチリプレイテーブルが更新される。一部の実施形態において、アンチリプレイテーブルは、クリアテキストデータブロブの単調カウンタ値が暗号化される前に更新され得る。
【００３１】
図４は、アンチリプレイテーブルの更新を例示するブロック図である。アンチリプレイテーブル４０２は、各ブロブ３０２に付随する単調カウンタ値３０８及びヘッダ３０４の表を含んでいる。アンチリプレイテーブル４０２は、完全性保護及びアンチリプレイ保護を施されたブロブ４１２として不揮発性メモリ内に格納され得る。故に、ブロブが作成あるいは変更されるとき、ブロブのヘッダ３０４及び単調カウンタ値３０８はアンチリプレイテーブル４０２に付け足される。ルートのアンチリプレイテーブルブロブ４０６に、ハードウェア単調カウンタ（ＨＷ−ＭＣ）１１２からの完全性検査値４０８及び単調カウンタ値４１０が付加される。ブロブが変更されるとき、ブロブ３０８内の単調カウンタ値及びテーブル４０８内の単調カウンタ値の双方がインクリメントされる。故に、アンチリプレイテーブルブロブ４１２は完全性とアンチリプレイとの双方で保護され得る。
【００３２】
データブロブの作成と、付随するアンチリプレイテーブルブロブ４１２の更新とは、不揮発性メモリへの複数の書き込みを必要とする非原子的処理である。この処理が耐故障的で耐停電的なものでない場合、データの破損が起こり得る。例えば、直前に変更されたデータブロブがアンチリプレイテーブルと一致しなくなった場合、次のブロブアクセス時にリプレイアタックが誤検出され、ブロブの無効化とデータ損失とをもたらし得る。
【００３３】
図５は、不揮発性メモリ内での耐故障的且つ耐停電的な、データブロブ及びアンチリプレイテーブルブロブの作成を例示するブロック図である。ブロブサービスが新たなデータブロブ５０２を作成するとき、新たなデータブロブ５０２は当初、例えばＤＲＡＭ等の揮発性メモリ１０８内に作成される。そして、そのデータブロブは不揮発性メモリ１２０内の一時的な記憶領域５４２に複製され（５５０）、データブロブの一時的な複製５１２が作成される。同様に、アンチリプレイテーブル５０４が更新されるとき、アンチリプレイテーブルブロブ５０６が揮発性メモリ１０８内に作成される（５５２）。そして、アンチリプレイテーブルブロブ５０６は不揮発性メモリ１２０内の一時的な記憶領域５４２に複製され（５５４）、アンチリプレイテーブルブロブの一時的な複製５１６が作成される。
【００３４】
データブロブが作成され一時的記憶領域に複製され、且つアンチリプレイテーブルブロブが更新され一時的記憶領域に複製された後、単調カウンタ値１１２がインクリメントされ、単調カウンタ状態変化標識５１８（例えば、状態ビットＣＨＧ）が設定される（５５６）。一部の実施形態において、状態標識５１８への更新は、原子的処理で、単調カウンタ５２０への更新とともに自動的に行われる。原子的処理とは、例えば、単一のマイクロプロセッサ命令により実行される処理など、割り込みされない処理である。実行に際し、原子的処理は完全に実行されるか、全く実行されないかの何れかである。
【００３５】
一部の実施形態において、状態標識５１８及び単調カウンタ５２０は単一のハードウェアレジスタにて実装されてもよい。一部の実施形態において、状態標識５１８を設定すること、及び単調カウンタ５２０を増分することは、単一のマイクロプロセッサ命令を実行することによって行われる。
【００３６】
状態標識５１８が設定されるとき、これは、新たに作成されたデータブロブの有効な複製５１２及びアンチリプレイテーブルブロブ５１６の有効な複製５１６が不揮発性メモリ１２０の一時的領域５４２内に存在することを指し示す。次に、アンチリプレイテーブルブロブ５１６が不揮発性メモリ１２０内で一時的記憶領域５４２から主記憶領域５４０に複製される（５５８）。データブロブ５１２も不揮発性メモリ１２０内で一時的記憶領域５４２から主記憶領域５４０に複製される（５６０）。これら複製によりデータブロブ５２２及びアンチリプレイテーブル５２６が不揮発性メモリの主記憶領域内に作成された後、状態標識５１８はクリアされ（５６２）、一時的記憶領域５４２内のデータブロブ及びアンチリプレイテーブルブロブはもはや有効でなく、主記憶領域５４０内のデータブロブ及びアンチリプレイテーブルブロブが有効であることを指し示す。
【００３７】
図６は、一部の実施形態に従った、不揮発性メモリ内に耐故障的且つ耐停電的にデータブロブ及びアンチリプレイテーブルブロブを格納する方法を例示するフロー図である。上述のように、最初に、データブロブが作成あるいは変更され、アンチリプレイテーブルが更新される（ブロック６０１）。データブロブ又はアンチリプレイテーブルブロブの作成中に停電又は故障が発生した場合（ブロック６０２）、全てのデータは揮発性メモリ内に存在しており、失われることになる。不揮発性メモリにはデータは書き込まれておらず、ＣＨＧ状態ビットは未だ設定されていない（ブロック６１２）。再起動時、ＣＨＧ状態ビットが設定されていないので、ブロブサービスは活動を行わない。
【００３８】
そして、データブロブ及びアンチリプレイテーブルが一時的記憶領域に複製される（ブロック６０３）。一時的記憶領域へのデータブロブ又はアンチリプレイテーブルの何れかの複製中に停電又は故障が発生し、且つデータブロブ及びアンチリプレイテーブルの何れの複製も成功していない場合（ブロック６０４）、一時的記憶領域のコンテンツは無視され、ＣＨＧ状態ビットは設定されない（ブロック６１４）。再起動時、ＣＨＧ状態ビットが設定されていないので、ブロブサービスは活動を行わない。
【００３９】
データブロブ及びアンチリプレイテーブルが一時的記憶領域に複製された後、原子的処理により、単調カウンタがインクリメントされ且つＣＨＧ状態ビットが設定される（６０５）。単調カウンタのインクリメント及びＣＨＧ状態ビットの設定中に停電又は故障が発生した場合（ブロック６０６）、次の再起動時、ＣＨＧ状態ビットが設定され（ブロック６１６）、ブロブサービスは、一時的記憶領域が有効なブロブ及びアンチリプレイテーブルを格納していることを認識する（ブロック６１６）。故に、ブロブサービスは、停電又は故障からの復旧時にブロック６０７から実行を継続することができ、データブロブ及びアンチリプレイテーブルブロブを一時的記憶領域から復元する。
【００４０】
単調カウンタがインクリメントされ且つＣＨＧ状態ビットが設定されたとき、データブロブは不揮発性メモリ内で一時的記憶領域からデータブロブの目的地（主記憶領域）に複製される（ブロック６０７）。一時的記憶領域から主記憶領域へのデータブロブの複製中に停電又は故障が発生した場合（ブロック６０８）、次の再起動時、ＣＨＧ状態ビットが設定され（ブロック６１６）、ブロブサービスは、一時的記憶領域が有効なブロブ及びアンチリプレイテーブルを格納していることを認識する（ブロック６１６）。故に、ブロブサービスは、停電又は故障からの復旧時にブロック６０７から実行を継続することができる。
【００４１】
同様に、アンチリプレイテーブルブロブは不揮発性メモリ内で一時的記憶領域から主記憶領域に複製される（ブロック６０９）。一時的記憶領域から主記憶領域へのアンチリプレイテーブルブロブの複製中に停電又は故障が発生した場合（ブロック６１０）、次の再起動時、ＣＨＧ状態ビットが設定され（ブロック６１６）、ブロブサービスは、一時的記憶領域が有効なブロブ及びアンチリプレイテーブルを格納していることを認識する（ブロック６１６）。故に、ブロブサービスは、停電又は故障からの復旧時にブロック６０７から実行を継続することができ、ブロック６０７−６０９を繰り返す。
【００４２】
アンチリプレイテーブル及びデータブロブの双方が首尾良く主記憶領域に複製された後、ＣＨＧ状態ビットはクリアされる（ブロック６１１）。ブロブ作成要求は耐故障的に完了される。
【００４３】
故に、不揮発性メモリにおけるデータの耐故障的な暗号化保護、完全性保護、及びアンチリプレイ保護のための方法が様々な実施形態にて開示された。以上の説明において、数多くの具体的詳細事項が説明された。しかしながら、理解されるように、本発明の実施形態はこれらの具体的な詳細事項を用いずに実施されてもよい。また、この説明の理解を不明瞭にしないよう、周知の回路、構造及び技術は詳細には示されていない。本発明の実施形態は特定の典型的な実施形態を参照して説明された。しかしながら、この開示の恩恵を受ける者に明らかであるように、これらの実施形態には、ここで開示された実施形態が有する一層広い意図及び範囲を逸脱することなく、様々な変更及び変形が為され得る。この明細書及び図面は、従って、限定的な意味ではなく例示的な意味で考慮されるべきである。
【図面の簡単な説明】
【００４４】
【図１】一部の実施形態に従ったシステムを示すブロック図である。
【図２】一部の実施形態に従った、不揮発性メモリに格納されるデータを機密性保護、完全性保護、そしてアンチリプレイ保護する方法を例示するフロー図である。
【図３】一部の実施形態に従ったデータブロブの作成を例示するブロック図である。
【図４】一部の実施形態に従ったアンチリプレイテーブルブロブの作成を例示するブロック図である。
【図５】不揮発性メモリ内での耐故障的且つ耐停電的なデータブロブ及びアンチリプレイテーブルブロブの作成を例示するブロック図である。
【図６】一部の実施形態に従った、不揮発性メモリ内に耐故障的且つ耐停電的にデータブロブ及びアンチリプレイテーブルブロブを格納する方法を例示するフロー図である。
【符号の説明】
【００４５】
１００    システム
１０２    プロセッサ
１０４    ブロブサービス
１０６    完全性／暗号化エンジン
１０８    揮発性メモリ
１１０    チップセット
１１２    単調カウンタ
１１４    シリコンベース鍵
１１６    乱数発生器
１２０    不揮発性メモリ
１２２    データブロブ
１２４    アンチリプレイテーブル
１３０    入力／出力装置
１３２    ネットワークインターフェース
３０２    クリアテキストデータブロブ
３０４    ヘッダ
３０６    乱数
３０８、４０８、５２０    単調カウンタ値
３１０    クリアテキストシークレット
３１２    完全性検査
３１４、４１０    完全性検査値
３１６    暗号化
３１８    暗号文
３２０、５０２、５１２、５２２    データブロブ
４０２、５０４    アンチリプレイテーブル
４１２、５０６、５１６、５２６    アンチリプレイテーブルブロブ
５１８    状態標識（状態ビット）
５３０    ハードウェアレジスタ
５４０    不揮発性メモリの主記憶領域
５４２    不揮発性メモリの一時的記憶領域
【図１】
2009003933.tif 000003
【図２】
2009003933.tif 000004
【図３】
2009003933.tif 000005
【図４】
2009003933.tif 000006
【図５】
2009003933.tif 000007
【図６】
2009003933.tif 000008