(57)【要約】  時間推定の精度を向上させるための回路を備えるメモリ装置とその装置で使用する方法を開示する。一実施形態において、メモリ装置がタイムスタンプを受信し、受信タイムスタンプを基準として稼働時間を測定する。メモリ装置は旧測定稼働時間の精度を判定し、測定稼働時間と、旧測定稼働時間の精度と、受信タイムスタンプとを用いて時間推定を生成する。別の実施形態において、測定稼働時間を調整するが、その際、時間推定を生成する場合と生成しない場合とがある。他の実施形態も開示するが、それら実施形態は単独で使用できるほか、組み合わせても使用できる。
2010531486.tif 000002
【特許請求の範囲】
【請求項１】
メモリ装置から時間推定の精度を向上させる方法であって、
タイムスタンプを受信するステップと、
前記受信タイムスタンプを基準としてメモリ装置の稼働時間を測定するステップと、
旧測定稼働時間の精度を判定するステップと、
前記測定稼働時間と、前記旧測定稼働時間の精度と、前記受信タイムスタンプとを用いて時間推定を生成するステップと、
を含む方法。
【請求項２】
請求項１記載の方法において、
前記受信タイムスタンプを基準として電源サイクル数を測定するステップと、
前記電源サイクル数がしきい値を超過する場合に、前記時間推定を生成する代わりに、新規タイムスタンプを要求するステップと、
をさらに含む方法。
【請求項３】
請求項１記載の方法において、
前記受信タイムスタンプを基準として電源サイクル数を測定するステップと、
前記電源サイクル数が０に等しい場合に、前記測定稼働時間と前記受信タイムスタンプとを用いるが、前記旧測定稼働時間の精度は用いずに時間推定を生成するステップと、
をさらに含む方法。
【請求項４】
請求項１記載の方法において、
前記測定稼働時間がしきい値を超過する場合に、前記時間推定を生成する代わりに、新規タイムスタンプを要求するステップをさらに含む方法。
【請求項５】
請求項１記載の方法において、
旧測定稼働時間の精度を判定するステップは、複数の伸張係数を算出するステップを含み、前記方法は、
前記複数の伸張係数の標準偏差を測定するステップと、
前記複数の伸張係数の前記標準偏差がしきい値を超過する場合に、
前記時間推定を生成する代わりに、新規タイムスタンプを要求するステップ、および    前記測定稼働時間と前記受信タイムスタンプとを用いるが、前記旧測定稼働時間の精度は用いずに時間推定を生成するステップのうちのいずれか一方を実行するステップと、をさらに含む方法。
【請求項６】
請求項１記載の方法において、
旧測定稼働時間の精度を判定するステップは、複数の伸張係数を算出するステップと、前記複数の伸張係数の移動平均を計算するステップとを含む方法。
【請求項７】
請求項１記載の方法において、
旧測定稼働時間の精度を判定するステップは、旧測定稼働時間をタイムスタンプ間の実時間に比較するステップを含む方法。
【請求項８】
請求項１記載の方法において、
旧測定稼働時間の精度を判定するステップは、非稼働時間をタイムスタンプ間の実時間に比較するステップを含む方法。
【請求項９】
請求項１記載の方法において、
旧測定稼働時間の精度を判定するステップは、旧測定稼働時間を非稼働時間に比較するステップを含む方法。
【請求項１０】
請求項１記載の方法において、
旧測定稼働時間の精度を判定するステップは、前記メモリ装置の１電源サイクル当たりの伸張係数を算出するステップを含み、前記方法は、前記受信タイムスタンプを基準として電源サイクル数を測定するステップをさらに含み、前記時間推定は、前記１電源サイクル当たりの伸張係数と前記電源サイクル数とに基づき生成される方法。
【請求項１１】
メモリ装置であって、
メモリアレイと、
前記メモリアレイと通信する回路であって、
前記メモリ装置の稼働時間を測定し、
旧測定稼働時間の精度を判定し、かつ
前記旧測定稼働時間精度に基づき前記測定稼働時間を調整するように機能する回路と、
を備えるメモリ装置。
【請求項１２】
請求項１１記載のメモリ装置において、
前記回路は、前記調整された測定稼働時間を用いて時間推定を生成するようにさらに機能するメモリ装置。
【請求項１３】
請求項１１記載のメモリ装置において、
前記回路は、
前記受信タイムスタンプを基準として電源サイクル数を測定し、かつ、
前記電源サイクル数がしきい値を超過する場合に、前記測定稼働時間を調整する代わりに、新規タイムスタンプを要求するようにさらに機能するメモリ装置。
【請求項１４】
請求項１１記載のメモリ装置において、
前記回路は、前記受信タイムスタンプを基準として電源サイクル数を測定するようにさらに機能し、
前記回路は、前記電源サイクル数が０に等しい場合に、前記測定稼働時間を調整しないメモリ装置。
【請求項１５】
請求項１１記載のメモリ装置において、
前記回路は、前記測定稼働時間がしきい値を超過する場合に、前記測定稼働時間を調整しないメモリ装置。
【請求項１６】
請求項１１記載のメモリ装置において、
前記回路は、複数の伸張係数を算出することにより旧測定稼働時間の精度を判定し、
前記回路は、
前記複数の伸張係数の標準偏差を測定し、かつ
前記複数の伸張係数の標準偏差がしきい値を超過しない場合に限り、前記測定稼働時間を調整すること、および
前記複数の伸張係数の前記標準偏差がしきい値を超過する場合に、前記測定稼働時間を調整する代わりに、新規タイムスタンプを要求することのうちのいずれか一方を実行するようにさらに機能するメモリ装置。
【請求項１７】
請求項１１記載のメモリ装置において、
前記回路は、複数の伸張係数を算出することにより、かつ前記複数の伸張係数の移動平均を計算することにより、旧測定稼働時間の精度を判定するメモリ装置。
【請求項１８】
請求項１１記載のメモリ装置において、
前記回路は、旧測定稼働時間をタイムスタンプ間の実時間に比較することにより、旧測定稼働時間の精度を判定するメモリ装置。
【請求項１９】
請求項１１記載のメモリ装置において、
前記回路は、非稼働時間をタイムスタンプ間の実時間に比較することにより、旧測定稼働時間の精度を判定するメモリ装置。
【請求項２０】
請求項１１記載のメモリ装置において、
前記回路は、旧測定稼働時間を非稼働時間に比較することにより、旧測定稼働時間の精度を判定するメモリ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、時間推定の精度を向上させるための回路を備えるメモリ装置とその装置で使用する方法に関する。
【背景技術】
【０００２】
関連出願の相互参照
本願は、本願とともに出願され、本願明細書において参照により援用されている「Memory Device with Circuitry for Improving Accuracy of a Time Estimate」という米国特許出願第１１／８１１，３４７号（特許文献１）、「Method for Improving Accuracy of a Time Estimate from a Memory Device 」という米国特許出願第１１／８１１，２８４号（特許文献２）、「Method for Improving Accuracy of a Time Estimate Used to Authenticate an Entity to a Memory Device」という米国特許出願第１１／８１１，２８９号（特許文献３）、「Memory Device with Circuitry for Improving Accuracy of a Time Estimate Used to Authenticate an Entity 」という米国特許出願第１１／８１１，３４４号（特許文献４）、「Method for Improving Accuracy of a Time Estimate Used in Digital Rights Management (DRM) License Validation 」という米国特許出願第１１／８１１，３５４号（特許文献５）、「Memory Device with Circuitry for Improving Accuracy of a Time Estimate Used in Digital Rights Management (DRM) License Validation」という米国特許出願第１１／８１１，３４８号（特許文献６）、「Method for Using Time from a Trusted Host Device」という米国特許出願第１１／８１１，３４６号（特許文献７）、ならびに「Memory Device Using Time from a Trust Host Device 」という米国特許出願第１１／８１１，３４５号（特許文献８）に関連する。
【０００３】
サンディスク  コーポレイションのＴｒｕｓｔｅｄＦｌａｓｈ（登録商標）等のメモリ装置で、デジタル著作権管理（ＤＲＭ）ライセンス検証等、時間本位の操作を実行するには、時間を知る必要がある。そのような操作に関わるセキュリティ問題のため、メモリ装置は、正確な時間の提供にあたって、ホスト装置を信用できないことがある。メモリ装置は信頼されたネットワークコンポーネントから正確な時間を入手できるが、メモリ装置をホストするホスト装置は、メモリ装置で時間を知る必要があるときにネットワークに接続されていないことがある。メモリ装置の稼働時間を測定するようにメモリ装置を設計できても、そのメモリ装置が絶えず稼働時間を測定しなければ（測定開始後にメモリ装置の電源が落とされる場合等）、測定稼働時間から生成される時間推定は真の実時間の測定にはならない。測定稼働時間から生成される時間推定は、実際には稼働時間の下限を伝えるものにすぎず、そのような時間推定では、ある種の時間本位操作に求められる精度は得られない場合がある。メモリ装置が作動していないときでも絶えず時間を把握するため、メモリ装置にバッテリ方式のクロックを装備することもできるが、そのようなクロックを装備すると、メモリ装置のコストを上乗せすることになり得る。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願第１１／８１１，３４７号
【特許文献２】米国特許出願第１１／８１１，２８４号
【特許文献３】米国特許出願第１１／８１１，２８９号
【特許文献４】米国特許出願第１１／８１１，３４４号
【特許文献５】米国特許出願第１１／８１１，３５４号
【特許文献６】米国特許出願第１１／８１１，３４８号
【特許文献７】米国特許出願第１１／８１１，３４６号
【特許文献８】米国特許出願第１１／８１１，３４５号
【特許文献９】米国特許出願第１１／３１４，４１１号
【特許文献１０】米国特許出願第１１／５５７，０２８号
【特許文献１１】米国特許出願第１１／３２２，８１２号
【特許文献１２】米国特許出願第１１／３２２，７６６号
【発明の概要】
【０００５】
本発明は特許請求の範囲によって規定され、その特許請求の範囲を制限するものとしてこのセクションの内容を解釈してはならない。
紹介のためにこれ以降説明する実施形態は、時間推定の精度を向上させるための回路を備えるメモリ装置とその装置で使用する方法を提供する。一実施形態において、メモリ装置がタイムスタンプを受信し、受信タイムスタンプを基準として稼働時間を測定する。メモリ装置は旧測定稼働時間の精度を判定し、測定稼働時間と、旧測定稼働時間の精度と、受信タイムスタンプとを用いて時間推定を生成する。別の実施形態において、測定稼働時間を調整するが、その際、時間推定を生成する場合と生成しない場合とがある。他の実施形態も開示するが、それら実施形態は単独で使用できるほか、組み合わせても使用できる。
これより添付の図面を参照しながら実施形態を説明する。
【図面の簡単な説明】
【０００６】
【図１】一実施形態のシステムの図解である。
【図２】一実施形態のメモリ装置のブロック図である。
【図３】タイムスタンプを取得する一実施形態のシステム図である。
【図４】タイムスタンプを取得する一実施形態の方法のフローチャートである。
【図５】メモリ装置から時間推定の精度を向上させる一実施形態の方法のフローチャートである。
【図６】実施形態を例示するのに用いる時系列である。
【図７】実施形態を例示するのに用いる時系列である。
【図８】実施形態を例示するのに用いる時系列である。
【発明を実施するための形態】
【０００７】
これ以降説明する実施形態は、時間推定の精度を向上させるメモリ装置および方法に関する。図１は、これら実施形態を例示するのに用いるシステム１０の図解である。図１に見られるように、システム１０は、複数のホスト装置に取り外し可能に接続される複数のメモリ装置２０，３０，４０と、パーソナルコンピュータ（ＰＣ）５０と、デジタルメディア（ＭＰ３等）プレイヤ６０と、携帯電話機７０と、を備える。ホスト装置は、メモリ装置からデータを読み出すことができる装置、および／またはメモリ装置にデータを書き込むことができる装置である。データは、音声ファイルや映像ファイル（音声があるもの、またはないもの）等のデジタルメディアコンテンツ、画像、ゲーム、書籍、地図、データファイル、またはソフトウェアプログラムを含むが、これらに限定されない。データは、ネットワークのサーバからメモリ装置にダウンロードされたり、製造業者や第三者機関によって予めロードされたり、例えば別の装置からサイドロードされることがある。
【０００８】
ホスト装置は何らかの適当な形態をとることができ、図１に見られる例に限定されない。例えば、ホスト装置は、ノートブックコンピュータ、手持ち型コンピュータ、手持ち型ｅメール／テキストメッセージ装置、手持ち型ゲームコンソール、ビデオプレイヤ（ＤＶＤプレイヤ、ポータブルビデオプレイヤ等）、録音および／または録画装置、デジタルカメラ、セットトップボックス、表示装置（テレビ等）、プリンタ、カーステレオ、およびナビゲーションシステムの形態をとることができる。また、ホスト装置は複合機能を内蔵することができる。例えば、ホスト装置は、電話をかけたり受けたりできるほか、デジタルメディア（音楽および／または映像）ファイルを再生できる携帯電話機である。
【０００９】
ＰＣ５０や携帯電話機７０のようなホスト装置は、ネットワーク（インターネット８０や無線ネットワーク９０等であるが、タイプの異なるネットワークを使用することもできる）に接続して通信する能力を持つことができる。本願明細書において、このような能力を備えるホスト装置を「接続装置」と呼ぶ。携帯電話機７０が非接続モードで作動しているときや、ＰＣ５０がインターネット接続を確立していないとき等、「接続装置」が常にネットワークへ実際に接続されているとは限らないことを理解するべきである。本願明細書において、ネットワークに接続して通信する能力を持たないホスト装置（デジタルメディアプレイヤ６０等）を「非接続装置」と呼ぶ。非接続装置を接続装置に接続することにより、非接続装置をネットワークと通信する状態に置くこともでき、図１に見られるように、デジタルメディアプレイヤ６０はＰＣ５０に接続されている。そのような形で接続される場合でも、ネットワークから情報を引き出す機能が非接続装置になければ（単純なＭＰ３プレイヤ等）、ネットワークから情報を引き出すことはできない。そのような状況でも、ネットワークコンポーネントは装置に情報を押し付けることができる。図１には有線接続を介してＰＣ５０へ接続されたデジタルメディアプレイヤ６０が示されているが、無線接続も使用できることに留意するべきである。同様に、用語「接続」および「結合」が必ずしも有線接続や直接接続を意味するわけではない。
【００１０】
接続装置（あるいは接続装置に接続された非接続装置）はネットワーク（インターネット８０、無線ネットワーク９０等）を通じて外部のコンポーネントにアクセスでき、この外部コンポーネントは、タイムスタンプを提供することができるタイムサーバ１００や、ＤＲＭ保護コンテンツとこのようなコンテンツにアクセスするためのライセンスとを提供することができるデジタル著作権管理サーバ（ＤＲＭ）１１０を含むが、これらに限定されない。これらサーバについては以下に詳述する。図１ではタイムサーバ１００とＤＲＭサーバ１１０が別々の装置として示されているが、２つのサーバを１つの装置にまとめることもできる。さらに、これらサーバに別の機能を盛り込むこともできる。また、必要であればインターネット８０か無線ネットワーク９０を介してタイムサーバ１００やＤＲＭサーバ１１０以外のコンポーネントにアクセスすることもできる。
【００１１】
様々な状況において、時間を知る必要がある。例えばメモリ装置でコンテンツに対するアクセスがある特定の時期に失効することがＤＲＭ保護コンテンツのライセンスに定められている場合には、ライセンス検証を担当するエンティティが現在時間を有効期限に比較し、アクセスが失効しているか否かを判断する必要がある。環境によっては、「ダム」ストレージ装置であり、時間本位の処理（ホスト固有のＤＲＭキーによるＤＲＭライセンス検証等）はホスト装置が担当する。このような環境でホスト装置が、例えばＰＣ５０や接続モードで作動する携帯電話機７０などの接続装置なら、ホスト装置は、時間の供給元として信頼されたタイムサーバ１００から現在時間を含むタイムスタンプを取得できる。デジタルメディアプレイヤ６０や非接続モードで作動する携帯電話機７０等の非接続ホスト装置には、時間を追跡するバッテリ方式のクロックを装備できる。これら装置でも長期間にわたりバッテリ方式クロックの精度が損なわれる場合には、タイムスタンプを使ってクロックを較正できる。
【００１２】
このようなホスト装置の欠点として、ＤＲＭライセンスの検証に用いるホスト固有のＤＲＭキーは移動できない。このため保護対象コンテンツは事実上、特定のホスト装置に縛られることになる。この欠点を克服するため、メモリ装置にＤＲＭキーとＤＲＭライセンスを発行できる。そのＤＲＭキーとＤＲＭライセンスはメモリ装置とともに移動するため、保護対象コンテンツは事実上、ホスト装置ではなくメモリ装置に結び付けられ、それによって保護対象コンテンツは持ち運び可能となり、認可された装置であることをメモリ装置に対して証明できるホスト装置ならどれでも、保護対象コンテンツにアクセスできる。この場合、メモリ装置に蓄積されたＤＲＭキーによりＤＲＭライセンスを検証する機能をメモリ装置に盛り込むことができる。あるいはメモリ装置からホスト装置にＤＲＭキーを提供し、ＤＲＭキーによるＤＲＭライセンス検証をホスト装置にまかせることもできる。サンディスク  コーポレイションのメモリ装置ＴｒｕｓｔｅｄＦｌａｓｈ（登録商標）は、ＤＲＭキーとＤＲＭライセンスがメモリ装置に蓄積され、メモリ装置とともに保護対象コンテンツを移動できるメモリ装置の例である。
【００１３】
メモリ装置はこの環境で、「ダム」ストレージ装置ではなく処理能力を持つメモリ装置となり、コンテンツは、これを求めるエンティティが認可されたエンティティで、ライセンス期間が検証される場合に限り、メモリ装置から読み出すことができる。いずれの場合でも、メモリ装置は現在時間を知る必要がある。例えば公開鍵基盤（ＰＫＩ）認証では信用証明（ＲＳＡ証明書等）に基づいてエンティティの認証を行うが、その信用証明には有効期限がある。したがって、エンティティから提供されたＲＳＡ証明書をメモリ装置で検証するには、時間を知る必要がある。同様に、コンテンツ利用ライセンスには時間制限が設けられることがあり（１ヶ月間に限り再生できる歌、１日間に限り視聴できる映画等）、このライセンスをメモリ装置で検証する場合にも時間を知る必要がある。したがって、メモリ装置には、時間を絶えず把握するための何らかのメカニズムが必要である。
【００１４】
１つの選択肢として、メモリ装置で時間を知る必要がある場合にはそのつどメモリ装置からホスト装置を通じて信頼されたタイムサーバにタイムスタンプを要求する。この解決策は接続装置に適した方法ではあるが、メモリ装置は接続装置のほかに非接続装置で使われ得るため（インターネットに接続されていない家庭内ＰＣ、ＭＰ３プレイヤ、ネットワークから切断された携帯電話機（飛行機搭乗時等））、メモリ装置で時間を知る必要があるときに接続が得られるかどうかは当てになり得ない。もうひとつの選択肢として、バッテリ方式のクロックをメモリ装置に装備する。しかし、そうするとメモリ装置にコストが上乗せされるため、場合によっては望ましくない。もうひとつの選択肢として、メモリ装置への時間提供にあたってホスト装置を頼りにする（ホスト装置自身の内蔵クロックから、あるいは外部供給元から提供される）。しかし、メモリ装置は多くの場合、正確な時間提供にあたってホスト装置を信頼できない。ユーザがホスト装置のクロックを「遅らせる」ことができるなら（つまり、ホスト装置のクロックを現在時間より前の時間に設定できるなら）、ユーザはメモリ装置で施行される時間制限を出し抜くことができる。その一方で、メモリ装置にとってホスト装置が信頼できるものなら、メモリ装置はホスト装置の時間を当てにできる。本願とともに出願され、本願明細書において参照により援用されている「Method for Using Time from a Trusted Host Device」という米国特許出願第１１／８１１，３４６号と（特許文献７）、「Memory Device Using Time from a Trust Host Device 」という米国特許出願第１１／８１１，３４５号（特許文献８）は、メモリ装置がホスト装置の時間を当てにできるか否かを判断する手法を説明している。もうひとつの選択肢として、メモリ装置の限られた時間追跡能力を強化する。この選択肢について説明する前に、一実施形態のメモリ装置を概説する。
【００１５】
図面に戻り、図２は一実施形態のメモリ装置２００のブロック図であり、これはメモリカードやメモリスティックの形態をとることができる。図２に見られるように、メモリ装置２００は不揮発性メモリアレイ（フラッシュメモリ等）２１０と１群の回路２２０とを備える。この実施形態の不揮発性メモリアレイ２１０はソリッドステートメモリ、具体的にはフラッシュメモリ２１０の形態をとっている。フラッシュメモリの代わりにタイプの異なるソリッドステートメモリを使用できることに留意するべきである。また、磁気ディスクや光学ＣＤを含むがこれらに限定されない、ソリッドステートメモリ以外のメモリを使用できることにも留意するべきである。また、簡潔さを図るため、本願明細書で用いる用語「回路」は純粋なハードウェア実装、および／または複合ハードウェア／ソフトウェア（またはファームウェア）実装を指す。つまり「回路」は、特定用途向け集積回路（ＡＳＩＣ）、プログラム可能なロジックコントローラ、埋め込み型マイクロコントローラ、単一基板コンピュータなどの形態をとるほか、プロセッサと、このプロセッサにより実行可能なコンピュータ可読プログラムコード（ソフトウェア、ファームウェア等）を蓄積するコンピュータ可読媒体の形態をとることができる。
【００１６】
図２の１群の回路２１０は、複数のコンポーネント、すなわちホストインターフェイスモジュール（ＨＩＭ）２３０と、フラッシュインターフェイスモジュール（ＦＩＭ）２４０と、バッファ管理部（ＢＭＵ）２５０と、ＣＰＵ２６０と、ハードウェアタイマーブロック２７０とを備える。ＨＩＭ２３０はホスト装置３００のためのインターフェイス機能を提供し、ＦＩＭ２４０はフラッシュメモリ２１０のためのインターフェイス機能を提供する。ＢＭＵ２５０は、暗号化／復号化機能を提供するクリプトエンジン２５２と、ＨＩＭ２３０と通信するホストダイレクトメモリアクセス（ＤＭＡ）コンポーネント２５４と、ＦＩＭ２４０と通信するフラッシュＤＭＡコンポーネント２５６と、を備える。ＣＰＵ２６０は、ＣＰＵ  ＲＡＭＳ２６０および／またはフラッシュメモリ２１０に蓄積されたソフトウェアとファームウェアを実行する。ハードウェアタイマーブロック２７０については、メモリ装置の時間測定能力との関係で以下に説明する。
【００１７】
図面を簡潔にするため、メモリ装置２００をホスト装置３００へ取り外し可能に接続するための電気的・物理的コネクタ等のメモリ装置２００のその他のコンポーネントは図２に示されていない。メモリ装置２００とその動作については、本願明細書において参照により援用されている米国特許出願第１１／３１４，４１１号（特許文献９）および米国特許出願第１１／５５７，０２８号（特許文献１０）で詳細を確認できる。本願明細書において参照により援用されている米国特許出願第１１／３２２，８１２号（特許文献１１）と米国特許出願第１１／３２２，７６６号（特許文献１２）ではさらなる情報を確認できる。しかし、それら特許出願に記載されたコンポーネントと機能は、添付の特許請求の範囲に明記されていない限り、添付の特許請求の範囲の中で解釈すべきものではないことに留意するべきである。
【００１８】
メモリ装置２００の概要を説明したところで、今度はメモリ装置２００の時間測定能力を説明する。この実施形態のメモリ装置は、タイムスタンプを基準とし、測定稼働時間に基づき時間推定を生成する。換言すると、タイムスタンプは「スタートライン」の役割を果たし、このタイムスタンプにメモリ装置の測定稼働時間を加算する。タイムスタンプはいかなる形式のものであってもよく、任意の精度で時間を表示する（年、月、日、時、分、秒等）。タイムスタンプは、好ましくは精密時間提供にあたってメモリ装置２００が信頼するエンティティ（タイムサーバ１００、信頼されたホスト装置等）から提供される。タイムスタンプはいかなる形式のものであってもよく、単独で送信できるほか、別の情報に含めることもできる。タイムスタンプが容易に改ざんされ得ないようにするため、メモリ装置は、好ましくはクリプトエンジン２５２経由でタイムスタンプを安全に蓄積する。
【００１９】
図３および図４は、メモリ装置２００がタイムスタンプを取得することができる一方法を例示するシステム図とフローチャートである。メモリ装置２００はこれとは別の方法でタイムスタンプを取得することもでき、タイムスタンプがこれとは別の形式をとり得ることを理解するべきである。また、１つのメモリ装置が多数のサーバまたはホストと連係しながら多数の形式を同時に処理できることを理解するべきである。したがって、この例の具体的な詳細は、添付の特許請求の範囲に明記されていない限り、添付の特許請求の範囲の中で解釈すべきものではない。
【００２０】
図３に見られるように、メモリ装置２００はメモリ装置−ホスト装置通信チャネル３０５を通じてホスト装置３００と通信し、ホスト装置３００はホスト装置−タイムサーバ通信チャネル３１５を通じてタイムサーバ１００と通信する。タイムサーバ１００は単独のサーバでもよいが、この実施形態のタイムサーバ１００は、サーバ間通信チャネル３２５経由で互いに同期をとる複数のサーバ１０２，１０４，１０６を含む。
【００２１】
この実施形態では、ホスト装置３００がメモリ装置２００へノンス取得コマンドを送信する（アクト４０５）ところからタイムスタンプ要求手順が始まる（図３および図４参照）。この実施形態におけるノンスは、後ほどメモリ装置２００がタイムサーバ１００によって生成されたタイムスタンプの真正性を検証するときに用いる１６ビットの乱数である。メモリ装置２００は乱数（ノンス）を生成し（アクト４１０）、以降の検証ステップのためにこれをＣＰＵ  ＲＡＭＳ（揮発性メモリ）２６２（またはメモリ２１０）に蓄積する。次に、メモリ装置２００はホスト装置３００へノンスを送信する（アクト４１５）。メモリ装置２００はまた、後ほどタイムアウトの有無を確認するため、時間の測定を開始する（後述）。
【００２２】
ノンスを受信したホスト装置３００は、そのノンスを含むタイムスタンプ取得要求をタイムサーバ１００へ送信する（アクト４２０）。タイムサーバ１００は、その秘密鍵により時間（ＵＴＣ協定世界時形式による世界時等）とノンスに署名する。次に、タイムサーバ１００はタイムスタンプ応答を送信する（アクト４２５）。この実施形態におけるタイムスタンプ応答は、ノンスと、タイムスタンプと、証明書連鎖と、証明書取消リスト（「ＣＲＬ」）連鎖とを含む。ホスト装置３００は、時間更新コマンドとこの応答をメモリ装置２００へ送信する（アクト４３０）。メモリ装置２００はこのコマンドに応じて証明書とＣＲＬの検証を試みる（アクト４３５）。この検証に失敗する場合、メモリ装置２００は揮発性メモリ２６２をリセットし、アイドルプロセスに戻る（アクト４４０）。証明書とＣＲＬの検証に成功する場合（アクト４４５）、メモリ装置２００は応答の中にあるノンスを揮発性メモリ２６２にあるノンスに比較する（アクト４５０）。この比較に失敗する場合には、メモリ装置は揮発性メモリ２６２をリセットし、アイドルプロセスに戻る（アクト４５５）。比較に成功する場合には、メモリ装置２００は新しいタイムスタンプを、好ましくは改ざんを防ぐため安全な方法で、メモリ２１０に蓄積する。
【００２３】
メモリ装置２００がノンスを生成し（４１０）、応答を待っているときに（アクト４６０）、ホスト装置３００からメモリ装置２００へ別のノンス取得コマンドが送信され得る（アクト４６５）ことが可能であることに留意するべきである。前述したように、メモリ装置２００はノンスを生成した後に時間測定を開始する。メモリ装置２００は、その測定時間が特定のタイムアウト制限に達する前に新たなノンスコマンド（４６５）を受信する場合には、好ましくは新たなノンスコマンド（４６５）を無視する。しかし、メモリ装置２００は、タイムアウト制限後に新たなノンスコマンド（４６５）を受信する場合には、揮発性メモリ２６２をリセットし、新たなノンスを生成する（アクト４７０）。したがって、ノンスは限られた時間内で有効であり、タイムアウト制限（「トラベルタイムエラー」）は、メモリ装置２００がタイムサーバ１００からタイムスタンプが届くのを待つ最大時間に相当する。
【００２４】
メモリ装置２００に蓄積されるタイムスタンプの時間は、タイムサーバ１００がデータ文字列に署名したときの時間であるため、タイムスタンプの精度にもよるが（年、月、日、時、分、秒等）、タイムスタンプの時間は、ホスト装置３００がタイムスタンプを要求したときの現実の時間にならないことがある。あるいは、メモリ装置２００がタイムスタンプを蓄積したときの現実の時間にならないことがある。前述したノンスタイムアウト期間は、タイムスタンプの精度がメモリ装置２００の要求に合うように設定できる。したがって、タイムスタンプ要求の最大許容遅延がメモリ装置２００によってコントロールされることになる。代替の実施形態において、タイムサーバ１００によって生成されるタイムスタンプで別の時間を表示でき、例えばホスト装置３００がタイムスタンプを要求したときの推定時間や、メモリ装置２００におけるタイムスタンプ蓄積の見込み時間を表示できる。
【００２５】
前述したプロトコルの場合、メモリ装置２００は安全が保証されない接続システム（インターネット、ＷｉＦｉネットワーク、ＧＳＭネットワーク等）を介してタイムサーバ１００と通信することになる。安全が保証されない接続システムとは、メモリ装置２００が、タイムサーバ１００によって送信されるタイムスタンプの送信中に改ざんがないと決め付けることができないことを意味する。タイムスタンプを保護するにあたってネットワークが当てになり得ないため、タイムサーバ１００とメモリ装置２００との間で前述した保護メカニズム（あるいは他の何らかの保護メカニズム）を使用できる。暗号化プロトコルなら、タイムスタンプが改ざんされた場合にメモリ装置２００で改ざんを検出できる。換言すると、接続システムが安全でなければ、タイムスタンプのビットが何者かによって変更されるのを接続システム自体で防ぐことはできないが、メモリ装置２００は改ざんを検出し、タイムスタンプを拒絶することができる。代替の実施形態では安全な通信システムを使用する（つまりデータ通信回線が保護される）。この場合は誰もタイムスタンプを改ざんできないため、タイムスタンプはプレーンテキストで送信できる。
【００２６】
タイムスタンプの受信を説明したところで、今度はメモリカードの時間追跡能力を説明する。前述したように、メモリ装置２００の時間追跡能力には限りがある。具体的には、メモリ装置２００で測定できるのはメモリ装置の稼働時間である。稼働時間とは、メモリ装置２００がホスト装置へ接続され、実際に使われていた時間を指し得る（つまりアイドル状態やスリープモードとは対照的に、メモリ装置２００およびホスト装置３００間のバスで活動があった時間）。あるいは稼働時間は、メモリ装置２００がホスト装置３００へ接続され、ホスト装置３００から電力を受け取っていた総時間を指し得る。本願明細書において、用語「稼働時間」および「使用時間」を互換的に使用する。後述するように、この実施形態ではハードウェアタイマーブロック２７０がＣＰＵ２６０に対する割り込みとしてクロックティックを生成でき、ＣＰＵ２６０が稼働時間カウンタを増加できるときに、メモリ装置２００は稼働しているとする。
【００２７】
作動中はハードウェアタイマーブロック２７０（ＡＳＩＣコントローラ等）に内蔵された発振器が周期的なクロックティックを生成し、そのティックを割り込みとしてＣＰＵ２６０に提供する。（この発振器は、好ましくはＣＰＵ２６０がスリープ状態のときに非常に低い周波数で作動する。）つまり、ハードウェアタイマーブロック２７０は周期的（ミリ秒毎、マイクロ秒毎等）にＣＰＵ２６０に割り込む。ＣＰＵ２６０が割り込みを受けると専用のクロック割り込みサービスルーチン（例えば、ＣＰＵ２６０によって実行されるファームウェア内）が呼び出され、これにより１周期／単位が稼働時間カウンタへ加えられる。このカウンタ値はＣＰＵ  ＲＡＭＳ２６２ばかりでなく不揮発性フラッシュメモリ２１０にも蓄積されるため、停電が発生しても失われることはない。メモリ２１０の過度の消耗を避けるため、メモリ２１０の稼働時間カウンタは、クロックティックのたびに応答するのではなく、周期的に更新するのが好ましい（メモリ装置２００に電源が入っている間に１分毎等）。この場合に、稼働時間カウンタが更新される前に停電が起こると測定時間精度のさらなる低下を招き得るが、メモリ耐久性にとってのメリットを考慮すれば、許容し得る代償とみなすことができる。（メモリの耐久性をさらに保護するなら、稼働時間カウンタに蓄積される値にカウンタ値の書き込み回数を伝えるフィールドを設けることができる。この書き込み値が一定量を超過する場合には、メモリの別の位置にカウンタ値を蓄積できる。カウンタ内のビットをシフトすることで耐久性に寄与するなら、ビットをシフトすることもできる。）また、（書き込みにかかる消費電力は別として）稼働時間カウンタへの書き込みによってメモリ装置２００の性能や平常の活動に支障をきたさないようにするのが好ましい。例えば、稼働時間カウンタへの書き込みをバックグラウンドタスクとして、ホスト装置コマンドを処理する前にこれを実行することもできる。ホスト装置コマンドが終了したら、メモリ装置２００のファームウェアによりメモリからデータを読み出し所望値に比較することで、稼働時間カウンタのプログラミングが成功したことを検証できる。
【００２８】
また、稼働時間カウンタの値は、容易に改ざんされ得ないようにするため、メモリ２１０に安全に蓄積するのが好ましい（例えば、キーハッシュメッセージ認証コード（ＨＭＡＣ）を使用しクリプトエンジン２５２により署名する）。署名が一致しない場合には、データは攻撃者によって改ざんされたものとし、未初期化データとして扱うことができる。さらに、他の稼働時間測定メカニズムも使用できることに留意するべきである。
【００２９】
稼働時間カウンタに蓄積された値を実際の時間に変換するため、ＣＰＵ２６０は、ハードウェアタイマーブロック２７０がクロックティックを生成する頻度を蓄積値に乗ずる。例えば稼働時間カウンタに値５００が蓄積され、ハードウェアタイマーブロック２７０が５ミリ秒毎にクロックティックを生成するなら、ＣＰＵ２６０は２，５００ミリ秒（５００×５）の稼働時間を算出する。時間推定の生成にあたって、変換済みの稼働時間を最新のタイムスタンプに加算する。メモリ装置２００で新たなタイムスタンプが受信されると、新しいタイムスタンプがメモリ装置２００に蓄積され、稼働時間カウンタはリセットされる。したがって、それ以降は古いタイムスタンプの代わりに新しいタイムスタンプを基準として稼働時間の測定が行われる。稼働時間を測定するため、カウンタをリセットする（「元に戻す」）代わりに、新しいタイムスタンプの時点に存在する稼働時間カウンタ値を記録し、現在時間からこれを引くこともできる。
【００３０】
メモリ装置２００が稼働時間を絶えず測定しないなら、測定稼働時間から生成される時間推定は、残念ながら真の実時間の測定にはならない。つまりメモリ装置２００が「稼働していなければ」（例えば、メモリ装置２００がアイドル状態かスリープモードになっている場合、メモリ装置２００に電源が入っていない場合、メモリ装置２００がホスト装置３００から取り外される場合が挙げられる。いずれにせよこの実施形態ではハードウェアタイマーブロック２７０によるクロックティックの生成は停止する、および／またはＣＰＵ２６０によるティックへの反応は停止する）、稼働していないときに時間が経過していることをメモリ装置２００で知る手だてはないため、測定された稼働時間は、測定開始以降に経過した実時間に満たないものとなる。
【００３１】
例えば、１月１日にタイムスタンプを受信し、メモリ装置２００が２日分の稼働時間を測定したと仮定する。（簡潔さを図るため、この例では日単位で時間を測定する。しかし、前述したように、任意の望ましい時間単位を使用できる。）このときメモリ装置２００によって生成される時間推定の日付は１月３日になる（１月１日の最新タイムスタンプに２日の稼働時間を加算）。メモリ装置２００が稼働時間を絶えず測定していたなら、この時間推定は実時間を正確に表すものとなる（ハードウェアタイマーブロック２７０とＣＰＵ２６０は正確に機能していると仮定する）。しかし、メモリ装置２００が稼働時間を連続的に測定していなかったら（稼働時間の測定開始後にメモリ装置２００が稼働していないときがあったなら）、時間推定は実時間を正確に表すものにはならない。時間推定が伝える実時間はよくても１月３日どまりなのである。実時間は１月４日かそれ以降となり得る（６月２９日、１１月２日、１２月５日、翌年等）。
【００３２】
時間制限が稼働時間に基づくものなら問題はない。残念ながら、時間制限（認証やＤＲＭ利用の時間制限等）の基礎となるのは普通、メモリ装置２００の稼働時間ではなく現実の暦時間である。たとえそうであっても、この例の時間制限が１月３日より前なら、必ずしも誤差が問題になるとは限らない。つまり、歌に対するアクセスが１月２日に失効し、メモリ装置２００の時間推定が１月３日なら、その時間推定が正確であろうが（実際に１月３日であろうが）、時間推定が不正確であろうが（１月３日を過ぎていようが）、歌へのアクセスは禁じられる。しかし、時間制限が１月４日（以降）なら、誤差が疑問を招くことになる。つまり、実際に１月３日なのか（アクセス許可）、それとも実際に１月３日を過ぎているのか（アクセス拒絶）という疑問が生じる。
【００３３】
この問題に対処するため、この実施形態はメモリ装置２００の時間推定精度を向上させる方法を提供する。これより、図５のフローチャートとの関係でこの方法を説明する。図５に見られるように、タイムスタンプを受信し（アクト５１０）、受信したタイムスタンプを基準としてメモリ装置２００の稼働時間を測定する（アクト５２０）。これらアクトについては説明済みである。しかし、この方法では時間推定の精度を向上させるため、メモリ装置２００が（例えば、ＣＰＵ２６０を使用し）旧測定稼働時間の精度を判定する（アクト５３０）。（フローチャートではアクト５１０および５２０の後にアクト５３０が示されているが、アクト５３０はいつ実行してもよい。）図６から図７の時系列を参照しながらこのアクトを説明する。
【００３４】
図６は、１月１日にタイムスタンプ（ＴＳ1 ）を受信し、メモリ装置２００が２日分の稼働時間を測定する前の例の時系列を示すものである。前述したように、この測定稼働時間から生成される時間推定は１月３日どまりである。しかし、次のタイムスタンプ（ＴＳ2 ）を受信したメモリ装置２００は（図７参照）、実時間が２つのタイムスタンプの差であることから（実時間＝ＴＳ2 −ＴＳ1 ）、前のタイムスタンプから実時間が経過したことを知る。メモリ装置２００は第２のタイムスタンプをもとに「非稼働時間」を計算することもできる（非稼働時間＝実時間−稼働時間）。この例では非稼働時間も２日である。タイムスタンプ間の実時間（４日）と、測定稼働時間（２日）と、算出非稼働時間（２日）とを知るメモリ装置２００は、測定稼働時間がタイムスタンプ間の実時間をどの程度正確に表していたかを判断できる。例えばメモリ装置２００は、測定稼働時間を実時間に比較し、実時間により算出非稼働時間を比較し、測定稼働時間を算出非稼働時間に比較できる。これらの例から分かるように、非稼働時間（測定稼働時間から算出）と実時間の比較によって旧測定稼働時間の精度を判定するなら、計算の中で旧測定稼働時間を直接使用せずとも精度を判定することはできる。この例で、実時間に対する測定稼働時間の精度は５０％である。前述したように、この実施形態では２タイムスタンプ間の実時間に対する測定稼働時間の比較によって旧測定稼働時間の精度を判定するが、これとは別の精度判定方法を用いることもできる。
【００３５】
メモリ装置２００はこの精度情報をもとに測定稼働時間を調整できる（アクト５４０）。例えば、図８のメモリ装置２００は、最新のタイムスタンプ（ＴＳ2 ）から３日の稼働時間を測定している。（前述したように、稼働時間カウンタは好ましくは新規タイムスタンプ（ここではＴＳ2 ）の受信時にリセットされる。）メモリ装置２００は、稼働時間を最後に測定したときの値が実時間の５０％であったことを知っている。そこで今回メモリ装置２００は、測定稼働時間を使用する代わりに、以前の精度の情報に基づき測定稼働時間を調整（もしくは「伸張」）できる。３日の測定稼働時間は係数２（測定稼働時間が実時間の５０％であったため）により調整（もしくは「伸張」）され６日になる。
【００３６】
測定稼働時間の調整（もしくは「伸張」）は何らかの適切な方法で実行できる。一実施形態において、ＣＰＵ２６０が稼働時間カウンタの値を変換するのに用いる乗数を変更することによってこの「伸張」を実行する。（当初の乗数を差し替えることもできるが、新しい乗数と古い乗数の両方を蓄積するのが好ましい。）「伸張されない」場合のＣＰＵ２６０は、前述したように、稼働時間カウンタの値に、ハードウェアタイマーブロック２７０がクロックティックを生成する頻度を乗ずる。例えばハードウェアタイマーブロック２７０が５ミリ秒毎にクロックティックを生成し、稼働時間カウンタが値５００を蓄積するなら、ＣＰＵ２６０は２，５００ミリ秒（５００×５）の時間値を算出する。以前の時間推定が係数２（「伸張係数」）によりオフだったなら、ＣＰＵ２６０は乗数の値を倍にし（１クロックティックは５ミリ秒ではなく１０ミリ秒に相当する）、５，０００ミリ秒の「伸張された」時間値を算出する。あるいは乗数値を変更する代わりに、当初の乗数値を使用し、乗数と稼働時間カウンタ値との乗算の積を「伸張」係数により「伸張」することができる。勿論、旧測定稼働時間に基づき測定稼働時間を調整するにあたって、これとは別の何らかの望ましいメカニズムを使用することもできる。
【００３７】
図６〜図８の例ではただ１つの先行精度測定に基づいて旧測定稼働時間の精度を判定するが、旧測定稼働時間の精度は複数の先行精度測定に基づいて判定するのが好ましい。一実施形態において、先行精度測定の移動平均をとり、これを「伸張」係数としてメモリ２１０に蓄積する。あるいは算出済み「伸張」係数の移動平均に相当する１つの「伸張」係数を蓄積する代わりに、メモリ装置２００で全先行伸張係数（または全先行稼働時間および実時間（または非稼働時間等））の履歴を蓄積し、平均を即座に計算することもできる。しかし、履歴を蓄積するとメモリが余分に消費されるため、１つの「伸張」係数を蓄積したほうが好ましい場合もある。使用する方法が何であれ、タイムスタンプが頻繁に更新されるほど、（より多くの精度データが収集されるために）稼働時間の伸張による実時間の精度は上がる。逆に、タイムスタンプ更新の頻度が低いほど、稼働時間の伸張による実時間の精度は下がる。また、新たなタイムスタンプを受信すると稼働時間カウンタがリセットされるため（測定稼働時間の誤差もリセットされるため）、時間伸張を行わない場合でも、頻繁な時間更新により測定稼働時間の精度を上げることはできる。メモリ装置２００がバッテリ方式のクロックを内蔵する場合でも、クロックは時間の経過にともないずれ得るため、頻繁なタイムスタンプ更新によりクロックの精度を向上させることはできる。
【００３８】
前述した例では、「伸張」係数（算出タイムスタンプ間精度）の単純な平均をとるが、別の実施形態では加重平均（または他の何らかの関数）を使用することもできる。さらに別の実施形態では、ただ１つの伸張係数を使用できる。したがって「平均」は、添付の特許請求の範囲に明記されていない限り、添付の特許請求の範囲の中で解釈してはならない。平均を使用する場合には、先行するタイムスタンプペアか何らかのサブセットからデータを取り去ることができる。つまり、精度判定にあたって特定のタイムスタンプペアを省略もしくは破棄することができる（後述するように、ある期間中の稼働時間が非常に不正確であることが電源サイクル情報から判明する場合等）。また、「伸張」係数の標準偏差を計算することによって測定稼働時間を調整するべきか否かを判断することもできる。例えば、同じ数値に収束する「伸張」係数は有効とみなすことができ、メモリ装置２００は「伸張」係数の平均に基づき測定稼働時間を調整することができる。その一方で、「伸張」係数の標準偏差がある程度のしきい値を上回るなら、メモリ装置２００は「伸張」係数の平均が当てにならないと判断でき、測定稼働時間を調整しない。この場合、「伸張されていない」測定稼働時間のみ使用する。
【００３９】
前述したように、この方法のアクトは何らかの適切な方法で実行できる。例えば、先行稼働時間測定の精度判定は、最新のタイムスタンプを受信する前または後、および／または目下の稼働時間を測定しているときに実行可能である。また、旧測定稼働時間の精度判定にあたって、現在時間のタイムスタンプを使用できるが、必ずしもこれを使用する必要はない。（つまり、アクト５３０で旧測定稼働時間に比較する実時間の計算にあたって、アクト５１０で受信するタイムスタンプを使用できるが、必ずしもこれを使用する必要はない）。加えて、前述した実施形態ではメモリ装置２００が稼働時間を正確に測定すると（つまり、ハードウェアタイマーブロック２７０が所与の頻度で確実に割り込みを生成すると）仮定した。誤差が生じる場合には、前述した手法の変形例を用いて計上することができる。「時間伸張」は、ホスト装置によって生成される時間が信頼できる場合や、メモリ装置に独自のバッテリ方式クロックがある場合にも役立てることができる（ホスト装置やメモリ装置のクロックが時間の経過にともない不正確になる場合等）。
【００４０】
稼働時間が時間更新ポリシーの一要素となる場合等、場合によっては調整済みの稼働時間が分かれば事足りる。しかし、現実世界の日時で失効するＤＲＭライセンスを検証したり証明書を認証したりする場合等には、時間推定を生成する必要がある。時間推定の精度を向上させるには、時間推定の生成にあたって測定稼働時間と、旧測定稼働時間の精度と、受信タイムスタンプとを使用できる（図５のアクト５５０）。このような時間推定は何らかの適切な方法で生成できる。例えば、伸張された稼働時間を使って時間推定を生成できる。図８に見られる例の測定稼働時間は３日である。１月８日の時間推定（１月５日に測定稼働時間の３日を加えたもの）を生成する代わりに、（旧測定稼働時間の５０％精度に基づき）測定稼働時間を６日に調整し、この調整された測定稼働時間をタイムスタンプに加えて１月１１日の時間推定（１月５日に「伸張された」稼働時間を加えたもの）を生成できる。あるいは「伸張された」稼働時間を使って時間推定を生成する代わりに、測定稼働時間を使って時間推定を生成し、その時間推定を「伸張」係数で「伸張」することもできる。これらの代案（ならびにその他の代案）では、測定稼働時間と、旧測定稼働時間の精度と、受信タイムスタンプとを使って時間推定を生成する。したがって、その文言は「伸張された」稼働時間や他の何らかの実装が必須であると解釈するべきではない。
【００４１】
場合によっては新たなタイムスタンプを取得すること、あるいは「伸張」稼働時間ではなく「未伸張」稼働時間を使用することが、望まれる。前述した一例において、「伸張」係数の標準偏差が一定のしきい値を超過する。もうひとつの例として、測定稼働時間が一定のしきい値を超過し、メモリ装置２００が想定された使用パターンの中で使われていない場合に「伸張」係数を使用すると、「過大伸張」をしのぐ極度の「過小伸張」を招くおそれがある。このような状況では新たなタイムスタンプを取得するか、「未伸張」稼働時間を使用したほうが望ましい。最後のタイムスタンプ以降のメモリ装置２００の電源サイクル数も、メモリ装置２００が想定された使用パターンで使われていないことを伝える指標になる。電源サイクル数とは、メモリ装置２００の電源が入った回数を数えたものであり、ここからメモリ装置２００の電源が切れた回数が分かる（つまり、電源が入るたびに、そのつど電源を切ることになる）。電源サイクル数はＣＰＵ２６０で測定できる。メモリ装置２００が電源サイクルを通過するたびに、ＣＰＵ２６０はファームウェアで装置リセットルーチンを呼び出すことができる。ＣＰＵ２６０が稼働時間カウンタに１単位を加える場合と同様に、この装置リセットルーチンにより、ＣＰＵ２６０はＣＰＵ  ＲＡＭＳ２６２および／またはメモリ２１０の電源サイクルカウンタに１単位を加える。メモリの消耗を抑えるため、稼働時間カウンタと同様に、電源サイクルカウンタも周期的に更新できる。
【００４２】
メモリ装置２００の電源が切れると、少なくともある程度の実時間は稼働時間に反映されないことになる。メモリ装置２００は電源サイクル間にどれだけの時間が経過したかを知らないから、電源サイクル数から時間情報を得ることはできない。しかし、電源サイクル数からメモリ装置２００の使用パターンをある程度つかむことはできる。さらにそこから、測定稼働時間がどの程度不正確かが大まかに分かる。例えば、最後のタイムスタンプからメモリ装置２００の電源サイクルが１０回あった場合の時間推定は、最後のタイムスタンプからメモリ装置２００の電源サイクルが１回しかなかった場合の時間推定より正確でない場合がある。実施形態によっては、アイドル／スリープモードでメモリ装置２００の電源が入ることがあり、この場合、稼働時間は測定されない。電源サイクル数を追跡すれば、場合によっては検出されない誤差について情報を得ることができる。このように、電源サイクル数は稼働時間がどの程度不正確かを伝える。
【００４３】
メモリ装置２００は、時間推定にあたって電源サイクル数を考慮に入れるように設計できる。具体的には、電源サイクル数がある程度のしきい値を超過するなら、メモリ装置２００は測定稼働時間（「時間伸張」あり、またはなし）に基づき時間推定を生成するのではなく、新たなタイムスタンプを要求する場合がある。例えば非常にデリケートな時間操作で有効期限が過ぎていないことを確実に確かめる必要があるなら、このしきい値を１に設定することができる。この場合、メモリ装置２００の電源が一度でも切れていたなら（これに応じて少なくともある程度の時間は測定稼働時間に計上され得ない）、メモリ装置２００は測定稼働時間を頼りに時間推定を生成する代わりに、新たなタイムスタンプを要求する。このように、測定稼働時間の不正確さを伝える電源サイクル数を使用し、タイムサーバ１００との同期を強制する。対照的に、最後のタイムスタンプからの電源サイクル数が０なら、測定稼働時間に基づく時間推定は正確なものとなり、新たなタイムスタンプは必要でなくなる。この場合、例えば平均「伸張」係数の代わりに当初の乗数（ハードウェアタイマーブロック２７０がクロックティックを生成する頻度）を測定稼働時間に乗ずることができる。このように、電源サイクル数の判定は「時間伸張」を使用するか否かを判断する際の境目となる。その一方で、さほどデリケートでない時間操作で、非稼働時間中にとりこぼした時間を計上するにあたって稼働時間の「伸張」で十分と判断される場合には、電源サイクル数を高い数値に設定するか、これを一切考慮しない。電源サイクル数がしきい値を下回るなら（前述したように０になる場合もある）、メモリ装置２００は「時間伸張」操作を実行する。電源サイクル数がしきい値以上なら、メモリ装置２００は新たなタイムスタンプを要求し、「時間伸張」操作は実行しない。
【００４４】
電源サイクル数を「伸張」操作に役立てることもできる。メモリ装置２００は、「伸張」係数を算出する代わりに、あるいは「伸張」係数を算出することに加え、１電源サイクル当たりの「伸張」係数を算出できる。メモリ装置２００でカウントされない時間の量は、時間の経過にともない増加する。つまり、誤差は時間の経過にともない増加する。この誤差傾向に対処するため、１電源サイクル当たりの「伸張」係数を役立てることができる。例えば、算出された平均「伸張」係数が５０％で、タイムスタンプ間に平均１０回の電源サイクルがあるなら、１電源サイクル当たりの「伸張」係数は５％になる。ここで、電源サイクルが５回あった１期間中の稼働時間を「伸張」する必要があるなら、稼働時間は５０％ではなく２５％（５％×５）「伸張」される。電源サイクルに重みを与え、「伸張された」時間の精度向上に役立てることができる。（１電源サイクル当たりの「伸張」係数の計算にあたって、旧測定稼働時間の精度を使用するため、１電源サイクル当たりの「伸張」係数の使用も旧測定稼働時間の精度に基づく測定稼働時間調整（あるいは時間推定生成）の傘下に入る。）
【００４５】
メモリ２１０の耐久性保護に電源サイクル数を役立てることもできる。稼働時間カウンタが「消耗」する状況を回避するため、レートスケーリングアルゴリズムを使用し、電源サイクル数から判明したメモリ装置２００の使用モデルに基づき、稼働時間カウンタへの書き込み頻度を調整できる。例えば４通りの稼働時間記録レートがあるなら（２分毎、４分毎、８分毎、１６分毎等）、最後のタイムスタンプからの電源サイクル数に基づき、これらレートから１つのレートが選択される。
【００４６】
時間推定の生成にあたって、タイムスタンプ、測定稼働時間、算出非稼働時間、電源サイクル数、および／または「伸張」係数が使われるため、これら値は、何者かによって改ざんされないようにメモリ装置２００で安全に蓄積するのが好ましい。例えばクリプトエンジン２５２を使用し、暗号形式でこれら値に署名してから、メモリアレイ２１０に蓄積できる（例えば、キーハッシュメッセージ認証コード（ＨＭＡＣ）を使用する）。署名が一致しない場合には、データは攻撃者によって改ざんされたものとし、未初期化データとして扱うことができる。
【００４７】
これら実施形態を任意の適切な用途に利用できることに留意するべきである。例えば、このような用途は、認証、ホスト取消操作（ホストＣＲＬ検証等）、ＤＲＭライセンス検証、メモリ装置２００内のその他の用途を含むが、これらに限定されない。また、現時点ではサンディスク  コーポレイションのメモリ装置ＴｒｕｓｔｅｄＦｌａｓｈ（登録商標）でこれら実施形態を実装するのが好ましいが、どんなタイプのメモリ装置であってもこれら実施形態を役立てることができることを理解するべきである。さらに、メモリ装置以外の分野で時間を知る必要がありクロックが正確でないという一般的な問題に直面する場合にも、これら「時間伸張」の実施形態を役立てることができる。前述したアクトは、全面的にメモリ装置で実行する代わりに、その一部または全部をホスト装置（または他の何らかの装置）で実行することもできる。
【００４８】
以上の詳細な説明は、本発明を規定するものではなく、本発明がとり得る特定の形態を例示するものとして理解されることを意図する。本発明の範囲は専ら、添付の特許請求の範囲とこれと同等のものとによって規定される。特許請求の範囲に記載されたアクトは、記載された順序に限らず、いかなる順序でも実行できることに留意するべきである。最後に、本願明細書で説明した好適な実施形態の態様のどれも単独で使用できるほか、互いに組み合わせて使用できることにも留意するべきである。
【図１】
2010531486.tif 000003
【図２】
2010531486.tif 000004
【図３】
2010531486.tif 000005
【図４】
2010531486.tif 000006
【図５】
2010531486.tif 000007
【図６】
2010531486.tif 000008
【図７】
2010531486.tif 000009
【図８】
2010531486.tif 000010
【国際調査報告】
2010531486.tif 000011
2010531486.tif 000012
2010531486.tif 000013