(57)【要約】  すぐに利用できる大容量格納用のセキュアでないメモリを使用するが、データの不法コピーに対するセキュリティを提供するファームウェア（およびハードウェア）を有する大容量格納機能を備えたデバイスを提供する。ファームウェア自体がセキュアでない大容量記憶メモリに格納され、潜在的にハッキングに対して脆弱な場合にも該当する。ファームウェアの真正性の表示は、デバイスによって実行される前に存在していなくてはならない。これにより、デバイスのコンテンツの不法コピーまたは改ざんが防止される。別のファームウェア・アプリケーションを備えるデバイスに他の機能を追加することができるが、そのような追加のアプリケーションの真正性も、それらが実行される前にベリファイされる。これにより、不法に挿入されたいずれかの機構を通じた、セキュアなコンテンツに対する不法コピーまたは改ざんがさらに防止される。大容量記憶メモリ内のデータであれば、どのデータが暗号化されてもよい。
2009508271.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュメモリを用いたデバイスであって、
フラッシュメモリを備える大容量記憶リポジトリと、
前記大容量記憶リポジトリの物理的アクセス・パーティションに格納される第１のレベルのファームウェアと、
前記大容量記憶リポジトリの論理的アクセス・パーティションに格納される第２のレベルのファームウェアと、
論理的アクセス・パーティション内で論理アドレスを物理アドレスへマッピングする論理−物理インターフェイス・ルーチンと、
前記論理−物理インターフェイス・ルーチンを使用せずに前記物理的アクセス・パーティション内で前記第１のレベルのファームウェアを実行し、前記論理−物理インターフェイス・ルーチンを通じて前記第２のレベルのファームウェアを実行するコントローラと、
を有するフラッシュメモリを用いたデバイス。
【請求項２】
請求項１記載のフラッシュメモリを用いたデバイスにおいて、
前記論理−物理インターフェイス・ルーチンが、前記第１のレベルのファームウェアの一部であるデバイス。
【請求項３】
請求項２記載のフラッシュメモリを用いたデバイスにおいて、
前記第２のレベルのファームウェアが、前記第１のレベルのファームウェアによってマッピングされるデバイス。
【請求項４】
大容量記憶機能を備えたデバイスであって、
フラッシュメモリセルを備える大容量記憶装置と、
暗号化ハードウェアを有するコントローラと、
ランダムアクセスメモリと、
前記大容量記憶フラッシュメモリ内に格納され、前記フラッシュメモリセルに対するデータの書き込みおよびデータの読み出しを制御する第１のレベルのファームウェアと、を有し、
前記第１のレベルのファームウェアの真正性が、前記デバイスの前記コントローラと関連付けられたハッシュ値を用いてベリファイされるデバイス。
【請求項５】
請求項４記載のデバイスにおいて、
前記ハッシュ値の作成に前記コントローラ内の鍵が必要とされ、前記ハッシュ値が前記コントローラの前記鍵と関連付けられるデバイス。
【請求項６】
請求項４記載のデバイスにおいて、
前記第１のレベルのファームウェアが、暗号化フォーマットで格納されるデバイス。
【請求項７】
請求項６記載のデバイスにおいて、
前記ファームウェアが、前記コントローラの不揮発性メモリに格納された鍵を用いて前記暗号化ハードウェアによって暗号化されるデバイス。
【請求項８】
請求項４記載のデバイスにおいて、
前記第１のレベルのファームウェアと関連付けられたハッシュ値の第１のテーブルをさらに有し、前記テーブルが前記大容量記憶フラッシュメモリセル内に格納されるデバイス。
【請求項９】
請求項８記載のデバイスにおいて、
第２のテーブルをさらに有し、前記第２のテーブルが前記第１のテーブルの前記データの１つまたはそれより多いハッシュ値を含むデバイス。
【請求項１０】
請求項９記載のデバイスにおいて、
前記第２のテーブルの前記ハッシュ値のうちの１つまたはそれより多くが、前記デバイスの前記コントローラと関連付けられるデバイス。
【請求項１１】
請求項９記載のデバイスにおいて、
前記第２のテーブルのコピーが、前記コントローラの不揮発性メモリに格納されるデバイス。
【請求項１２】
請求項１１記載のデバイスにおいて、
前記第２のテーブルのコピーが前記第２のテーブルと一致しない場合、真正性がベリファイされないデバイス。
【請求項１３】
請求項４記載のデバイスにおいて、
１つまたはそれより多いファームウェア・アプリケーションを含む第２のレベルのファームウェアをさらに有し、前記第２のレベルのファームウェアが前記大容量記憶フラッシュメモリセル内に格納されるデバイス。
【請求項１４】
請求項１３記載のデバイスにおいて、
第３のテーブルをさらに有し、前記第３のテーブルが前記第２のレベルのファームウェアと関連付けられたハッシュ値を含むデバイス。
【請求項１５】
請求項１４記載のデバイスにおいて、
前記第３のテーブルが、暗号化されるデバイス。
【請求項１６】
請求項１５記載のデバイスにおいて、
前記第３のテーブルは、前記コントローラの不揮発性メモリに格納された鍵を用いて前記コントローラの暗号化ハードウェアによって暗号化されるデバイス。
【請求項１７】
請求項１４記載のデバイスにおいて、
前記第３のテーブルの前記ハッシュ値のうちの１つまたはそれより多くが前記デバイスのコントローラに相関され、前記ハッシュ値のうちの１つまたはそれより多くが前記コントローラに相関されていなければ前記デバイスが機能しないデバイス。
【請求項１８】
デバイスであって、
フラッシュメモリを備える大容量記憶リポジトリと、
ランダムアクセスメモリと、
前記大容量記憶リポジトリの第１の領域に格納されるシステムファームウェアと、
前記大容量記憶リポジトリの第２の領域に格納されるアプリケーション・ファームウェアと、を有し、
前記システムファームウェアが、前記アプリケーション・ファームウェアの読み出しおよび書き込みを含む、前記第２の領域のデータの読み出しおよび書き込みを制御するデバイス。
【請求項１９】
請求項１８記載のデバイスにおいて、
前記システムファームウェアおよび前記アプリケーション・ファームウェアをベリファイする暗号化メカニズムをさらに有するデバイス。
【請求項２０】
請求項１８記載のデバイスにおいて、
暗号化ハードウェアをさらに有し、前記暗号化ハードウェアは、ハッシュ値を作成した特定のハードウェアまで追跡可能なハッシュ値を計算するデバイス。
【請求項２１】
セキュアなシステムであって、
セキュアでない大容量記憶メモリと、
セキュアなコントローラと、
前記セキュアなシステムのセキュリティメカニズムを備え、前記セキュアでない大容量記憶メモリに格納されるファームウェアと、を有し、
前記コントローラが前記ファームウェアの前記セキュリティメカニズムを使用せずに前記ファームウェアの少なくとも一部の整合性をベリファイするように動作でき、それによって、前記ファームウェアはセキュアでない大容量記憶メモリに格納されているが、前記ファームウェアの不正な改変を防止するシステム。
【請求項２２】
請求項２１記載のセキュアなシステムにおいて、
前記ファームウェアが前記システムの前記コントローラと相関され、前記ファームウェアと前記コントローラとの間の相関が確立されなければ前記デバイスが機能しないシステム。
【請求項２３】
請求項２１記載のセキュアなシステムにおいて、
前記ファームウェアが層群を有し、前記少なくとも１つの層の真正性がハードウェアによってベリファイされるシステム。
【請求項２４】
請求項２１記載のシステムにおいて、
複数の状態をさらに有し、前記複数の状態のうちの１つまたはそれより多くが製造中に用いられ、前記状態のうちの１つまたはそれより多くが消費者によるセキュアな動作のために用いられるシステム。
【請求項２５】
請求項２４記載のシステムにおいて、
前記システムがセキュアな状態にある場合、前記ファームウェアが前記セキュアでない大容量記憶メモリに格納される前に前記ファームウェアのソースが識別されなくてはならないシステム。
【請求項２６】
請求項２４記載のシステムにおいて、
前記複数の状態のうちの１つまたはそれより多くを故障解析に用いることができ、前記複数の状態うちの故障解析状態では、識別されていないソースからのファームウェアをセキュアでない大容量記憶メモリに格納でき、前記セキュアなコントローラは前記システムの動作を前記複数状態のうちのセキュアな状態では許可しないシステム。
【請求項２７】
フラッシュメモリを用いた記憶デバイスを動作させる方法であって、
フラッシュメモリアレイを提供するステップと、
前記フラッシュメモリアレイの第１の部分を予約するステップと、
前記フラッシュメモリアレイの第２の部分にアプリケーション・ファームウェアを格納するステップであって、
第１の論理アドレスを前記データに割り当てるステップと、
前記第１の論理アドレスを第１の物理アドレスにマッピングするステップと、
前記第１の論理アドレスを第２の物理アドレスにときどき再マッピングするステップと、を含む、格納するステップと、
前記フラッシュメモリアレイの前記第１の部分にシステムファームウェアを格納するステップであって、前記システムファームウェアが論理アドレスから最初にマッピングされることなく物理アドレスに格納される、格納するステップと、
前記フラッシュメモリを用いた記憶デバイスのプロセッサにより、論理アドレスから最初にマッピングされることなく前記システムファームウェアを条件付きで実行するステップと、
前記フラッシュメモリを用いた記憶デバイスのプロセッサにより、論理アドレスから最初にマッピングされた後に前記アプリケーション・ファームウェアを条件付きで実行するステップと、
を含む方法。
【請求項２８】
請求項２７記載の方法において、
前記フラッシュメモリアレイの前記第２の部分にユーザコンテンツを格納するステップをさらに含む方法。
【請求項２９】
請求項２８記載の方法において、
前記ユーザコンテンツを論理アドレスから最初にマッピングすることによって前記ユーザコンテンツを読み出すステップをさらに含む方法。
【請求項３０】
請求項２７記載の方法において、
前記フラッシュメモリアレイの前記第１の部分にシステムファームウェアを格納するステップは、前記ファームウェアの真正性の表示を格納するステップをさらに含む方法。
【請求項３１】
請求項３０記載の方法において、
前記システムファームウェアの真正性の表示を読み出すステップをさらに含む方法。
【請求項３２】
請求項３１記載の方法において、
前記システムファームウェアの真正性を判断するステップをさらに含む方法。
【請求項３３】
請求項３２記載の方法において、
前記ファームウェアが真正であると最初に判断された場合に限り、前記物理アドレスを論理アドレスから最初にマッピングせずに前記物理アドレスにアクセスすることによって前記システムファームウェアが実行される方法。
【請求項３４】
請求項２８記載の方法において、
前記アプリケーション・ファームウェアの格納された真正性の表示を読み出すことによって前記アプリケーション・ファームウェアの真正性を判断するステップをさらに含む方法。
【請求項３５】
請求項３４記載の方法において、
前記アプリケーション・ファームウェアが真正であると最初に判断された場合に限り、前記アプリケーション・ファームウェアが実行される方法。
【請求項３６】
請求項３４記載の方法において、
前記表示が、前記デバイスのコントローラにバインドされる方法。
【請求項３７】
請求項３０記載の方法において、
前記表示が、暗号化エンジンを用いて作成される方法。
【請求項３８】
請求項３７記載の方法において、
前記システムファームウェアが第１の部分を有し、前記第１の部分の署名が第１の暗号鍵を用いて作成される方法。
【請求項３９】
請求項３７記載の方法において、
前記システムファームウェアが第２の部分を有し、前記第２の部分の署名が第２の暗号鍵を用いて作成される方法。
【請求項４０】
大容量記憶を目的としてフラッシュメモリを利用するフラッシュメモリを用いた記憶デバイスを動作させる方法であって、前記デバイスが前記フラッシュメモリ内に格納された前記デバイスを動作させるファームウェアを有する方法において、
前記フラッシュメモリに物理フォーマットで格納されている第１のレベルのファームウェアにアクセスするステップと、
前記フラッシュメモリに論理フォーマットで格納されている第２のレベルのファームウェアにアクセスするステップと、
を含む方法。
【請求項４１】
請求項４０記載の方法において、
前記第２のレベルのファームウェアの論理−物理マッピングが、前記ファームウェアによって更新可能である方法。
【請求項４２】
請求項４１記載の方法において、
前記第２のレベルのファームウェアの前記論理−物理マッピングが、前記第１のレベルのファームウェアによって制御される方法。
【請求項４３】
大容量記憶デバイスを作成または動作させる方法であって、
コンテンツおよびソフトウェアの大容量記憶用のフラッシュメモリバンクを提供するステップと、
前記デバイスの動作を管理するコントローラを提供するステップと、
前記デバイスの前記コントローラを用いて前記フラッシュメモリバンク内にファームウェアを書き込むステップと、
前記コントローラによって前記ファームウェアに書き込みが行われるときに、前記コントローラに特有の１つまたはそれより多い署名を前記ファームウェアに署名するステップと、
前記ファームウェアの前記１つまたはそれより多い署名をベリファイするステップと、
を含む方法。
【請求項４４】
請求項４３記載の方法において、
前記１つまたはそれより多い署名がベリファイされた場合、前記ファームウェアを実行するステップをさらに含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、フラッシュベースの大容量記憶デバイスの動作に関し、特に、セキュアなコンテンツのコピープロテクション機能を備えた大容量記憶デバイスの動作に関する。
【背景技術】
【０００２】
写真および音楽またはソフトウェアプログラムなど、ごく大量のコンテンツを記憶するためにフラッシュベースの大容量記憶デバイスが用いられる。これらの大容量記憶デバイスの例として、メモリカード、ユニバーサル・シリアル・バス（ＵＳＢ）フラッシュドライブ、フラッシュベースの音楽および／またはビデオプレーヤ、ならびにコンテンツまたはファイルの大容量記憶のためにフラッシュを利用する他の携帯式計算デバイスなどがある。
【０００３】
ユーザファイルは頻繁に更新および変更される。これは、写真、音楽および文書を処理する場合に特に該当する。フラッシュメモリの読み出し／書き込みサイクル回数は限られ、デバイスの寿命および信頼性を最大限にするために、フラッシュメモリセルにサイクルを分散させることに盛んに研究開発が行われてきた。例えば、いずれもその全体が本願明細書において参照により援用されている、ロフグレンらの「Wear Leveling Techniques For Flash EEPROM Systems 」という米国特許第６，２３０，２３３号（特許文献１）、ハラリの「Flash EEPROM System and Intelligent Programming and Erasing Methods Therefore 」という米国特許第５，２６８，８７０号（特許文献２）、チャンらの「Wear Leveling In Non-Volatile Storage Systems 」という米国公開特許出願第２００４／００４０５７８号（特許文献３）、およびゴンザレスらの「Automated Wear Leveling In Non-Volatile Storage Systems 」という米国公開特許出願第２００４／００８３３３５号（特許文献４）に記載されているものをはじめとする損耗均等化技術は、これらのデバイスに一般に実装されている。これらの技術は一般に、メモリのほぼ同量の物理的位置が使われるように論理／物理マッピングを変更することを伴う。
【０００４】
また、フラッシュベースの大容量記憶デバイスの使用が急増していることに伴い、大容量記憶デバイスで実行できることの種類も増えている。
【０００５】
したがって、広がりつつある機能範囲に対応するために更新および変更できる広範囲のファームウェアを記憶および実行するためのフレキシビリティを提供する新しいデバイス・オペレーティング・システム・アーキテクチャが必要とされている。このアーキテクチャは、フレキシブルであることに加え、ファームウェアおよびコンテンツの両方に高度にセキュアで高信頼性の環境を提供する必要がある。常にそうであるように、これらのすべては、可能なときはいつでも標準的なコンポーネントを用いて、可能な限り低コストで行われるべきである。
【特許文献１】米国特許第６，２３０，２３３号
【特許文献２】米国特許第５，２６８，８７０号
【特許文献３】米国公開特許出願第２００４／００４０５７８号
【特許文献４】米国公開特許出願第２００４／００８３３３５号
【特許文献５】ミッキー・ホルツマンらの「Secure Memory Card With Life Cycle Phases 」という米国特許出願
【特許文献６】ミッキー・ホルツマンらの「Hardware Driver Integrity Check Of Memory Card Controller Firmware」という米国特許出願
【非特許文献１】シーラ・フランケル著「RFC3566-The AES-XCBC-MAC-96 Algorithm and Its Use With IPsec」，米国標準技術局（ＮＩＳＴ），820 West Diamond Ave, Room 677, Gaithersburg, MD 20899
【非特許文献２】ジャナカ・ディーパクマラ、ホワード・Ｍ・ヘイズ、Ｒ・ヴェンカテサン共著「Performance Comparison of Message Authentication Code (MAC) Algorithms for the Internet Protocol Security (IPSEC) 」，Electrical and Computer Engineering, Memorial University of Newfoundland, St. John's, NL, Canada, A1B3S7
【非特許文献３】University of Nevadaのジョン・ブラックおよびUniversity of Californiaのフィリップ・ロガウェイ共著「Comments to NIST concerning AES Modes of Operations: A Suggestion for Handling Arbitrary-Length Messages with the CBC MAC)」
【発明の開示】
【０００６】
本発明は、デバイスを動作面でセキュアにし、機能面でフレキシブルにすることができる。これは、高レベルのセキュリティを維持ながら、機能を常にユーザの要望に合うように調整可能とし追加可能とすることができることを意味する。したがって、このデバイスは、取引データおよび著作権付き芸術作品などの、機密情報およびアクセス制限情報を記憶するために用いることができる。
【０００７】
本発明は、また、必要に応じて損耗均等化技術を通して、確実な長期間データ記憶を提供しながら迅速かつ確実にデバイスを起動させることができる。
【０００８】
真正ではなく、デバイスのセキュリティを脅かす可能性のあるファームウェアは実行されない。真正性の指標は実行前にベリファイされる。好ましい実施形態では、複数の異なるレベルのそのような指標が提供され、指標を作成したデバイスの特定のコントローラと関連付けられる。この好ましい実施形態では、１つまたはそれより多い異なるレベルの指標をベリファイできる。適切に関連付けられる指標が存在しない場合は、ファームウェアは実行されない。
【０００９】
本発明の別の態様は、ファームウェアを含むデータの大容量記憶用にセキュアに作られていない、すぐに利用できるメモリをデバイスが利用しても、このセキュリティが達成されることである。
【発明を実施するための最良の形態】
【００１０】
大容量記憶を目的としてフラッシュメモリを組み込んだデバイスは、比較的頻繁に書き込みおよび読み出しが行われる大量のコンテンツを格納しなくてはならない。例えば、デジタル写真や音楽ライブラリは、そのようなデバイスのユーザによって定期的に更新される。総じて保護されたコンテンツの増加およびコンテンツ保護の要望の増加に伴い、そのようなデバイスは、そのような「セキュアな」すなわち保護されたコンテンツの不法コピーを防止するための堅牢なセキュリティも提供しなくてはならない。同時に、セキュリティがフレキシビリティを犠牲にしてはならない。本発明は、高レベルのセキュリティを維持しつつ、機能を徐々に追加することができるデバイスを提供するものである。このフレキシビリティは、デバイスの機能が増加の一途をたどると予想される世界で不可欠である。
【００１１】
セキュアなデバイスとは、デバイスのコンテンツを不正なコピーまたは改変から保護するデバイスのことである。セキュアなコンテンツは、不正なコピーまたは改ざんから防護することが望まれる特定のコンテンツまたはデータなどである。請求書作成、商取引または伝統的に機密の他の個人情報に加え、芸術的なコンテンツも、所有者または他の関係者以外のものによるアクセスおよびコピーからセキュリティ保護しなくてはならない。
【００１２】
デバイスのアーキテクチャに応じ、ハッカーがデータバス経由または大容量記憶メモリに直接アクセスすることによってコンテンツへのアクセスを試みる場合がある。従来のデバイスの一部は、記号論理学的にアクセスしにくい環境にメモリ記憶ユニットを置くことによってメモリ記憶ユニットがしばしば保護されていたので、メモリ記憶ユニットへの直接アクセスが困難であった。例えば、スマートカードは、部分的にはアクセスから物理的に隔離することによってセキュアとされる小容量の不揮発性メモリを組み込んだプログラム可能な読み出し専用メモリ（ＰＲＯＭ）を利用していた。
【００１３】
しかし、何よりも、もっと標準化され、すぐに利用でき、および／または経済的である、アンセキュアな大容量記憶メモリを利用することが望まれている。アンセキュアなメモリすなわち記憶ユニットとは、内部に格納されている（暗号化されている、または暗号化されていない）データに（読み出し／書き込み）アクセスするために認証を要しないメモリすなわち記憶ユニット、または、格納されたデータのコピーを防止する防止メカニズムが組み込まれていないメモリすなわち記憶ユニットのことである。このメモリは、プロセッサなどのメモリ以外の他のコンポーネントを一緒に多機能パッケージに実装されることもあるが、１つまたはそれより多いメモリチップを備える専用メモリパッケージの形態であることが一般的である。
【００１４】
一般に、大容量記憶フラッシュメモリを組み込んだデバイスまたはシステムは、メモリのデータ記憶動作およびデータ検索動作を制御するためのプロセッサを利用する。そのようなプロセッサはコントローラの一部であり、しばしばコントローラと呼ばれる。コントローラは、デバイスを制御するためのソフトウェア命令を実行する。デバイスのハードウェアを起動および制御するソフトウェアは、しばしばファームウェアと呼ばれる。一般にファームウェアは、ファームウェアが通常格納されている他メモリからコピーされた後、ランダムアクセスメモリ（ＲＡＭ）から実行される。ＲＡＭへのシャドーイングまたはコピーは有利である。というのは、フラッシュは容易に更新されるが、ファームウェアはランダムアクセス機能を有しないためにさらにゆっくりで本質的に実行可能ではなく、また、読み出し専用メモリは容易に更新されないからである。
【００１５】
ファームウェアにある程度のセキュリティが提供される場合、必要不可欠なセキュリティメカニズムを備えた適切なファームウェア以外のファームウェアの実行を防止する何らかのメカニズムがなくてはならない。これは、ファームウェアがアンセキュアなメモリに格納されている場合に特に当てはまる。前述したように、デバイスの動作を制御するのはファームウェアである。したがって、ファームウェアに自分自身を本質的に保護させることは簡単なことではない。また、そのようなファームウェアが、他の点でアンセキュアなメモリパッケージに格納される場合、信用できない、すなわち正当と証明されていないファームウェアの実行を防ぐことも簡単なことではない。
【００１６】
本発明は、大容量記憶ユニット用のアンセキュアなメモリを使用するにもかかわらず、大容量記憶機能のあるセキュアなシステムを提供する。また、本発明は、セキュアなシステムを起動するためのファームウェアがアンセキュアなメモリに格納されるセキュアなシステムを作成する。ファームウェアをアンセキュアな大容量メモリに格納できるようにするために、本発明は、不確実なファームウェアの実行を防止するシステムを採用する。
【００１７】
ここで、図に示される好ましい実施形態を参照する。図１Ａは、本発明の実施形態であるセキュアなデバイス（ＳＤ）１００Ａを示す。ＳＤ１００Ａは、セキュアなコントローラ１０４およびアンセキュアなメモリ１０８を備える。
【００１８】
メモリ１０８はフラッシュタイプのメモリであることが好ましく、大容量記憶を目的として用いられる。これは、特に音声ファイル、ビデオファイル、写真ファイルなど、ユーザファイルの多目的な格納のためにメモリが用いられることを意味する。このメモリは、デバイス１００Ａの主メモリ格納ユニットであり、ユーザが格納したいあらゆるタイプのファイルを格納するために使用され得る。このメモリは、ユーザが自分のファイルライブラリに対して頻繁に更新およびアクセスを行えるように設計されている。大容量記憶メモリは、この実施形態および他の実施形態でＳＤ１００Ａが備えることもある（図示せず）、他のランダムアクセスメモリ（ＲＡＭ）および読み出し専用メモリ（ＲＯＭ）よりも概して大きい。また、一般的なファイル記憶デバイスとして、大容量記憶メモリは、まれにしか更新されない比較的少量のオペレーティングコードを格納するように設計されたコード記憶デバイスとは異なっている。ＲＯＭすなわちフラッシュメモリはコード記憶デバイスとして使用できるが、コード記憶デバイスは、目的も、一般にサイズも、大容量記憶デバイスと異なることを理解すべきである。
【００１９】
ＳＤ１００Ａは、データまたはメモリバス１０６およびホストバス１０２も備える。ＳＤ１００Ａは、デジタルカメラ、音楽プレーヤ、携帯電話等、完成した電子デバイスであってもよい。また、ＳＤ１００Ａは、あらゆるタイプのプロセッサ制御式電子デバイスと組み合わせて使用されるように設計された、メモリカードまたはユニバーサル・シリアル・バス（ＵＳＢ）のフォームファクタを有していてもよい。ＳＤ１００Ａおよび図に示されている他の実施形態の説明を簡潔にするために、これら実施形態のことをメモリカードと呼ぶことが少なからずあるが、そのような参照は好ましい実施形態に対してなされているものであり、添付の特許請求の範囲に記載されている本発明の範囲を限定するものではないことを理解すべきである。現在、本発明が特に有用となるメモリカードの好ましいフォームファクタは、公知のセキュアデジタル（ＳＤ）カードである。
【００２０】
データおよびコマンドは、ホストバス１０２を介してＳＤ１００Ａに対して送受信される。図に示されていないホストは、パーソナルコンピュータであってもよいし、他の電子デバイスであってもよい。セキュアなコントローラ１０４は、アンセキュアなメモリ１０８に対する読み出し動作および書き込み動作をメモリバス１０６を介して制御する。そうしながら、コントローラ１０４はアンセキュアなメモリ１０８のコンテンツへのアクセスも制限する。前述したように、デバイスを起動するファームウェアはアンセキュアなメモリ１０８に格納される。図２〜７について以下に詳述されるこのファームウェアは、コントローラ１０４とともに、デバイス１００Ａをセキュアなデバイスにするセキュリティを提供する。したがって、セキュアなコントローラ１０４で実行されるファームウェアが真正であることが不可欠であり、そうでなければ、システムのセキュリティが損なわれる可能性がある。
【００２１】
ファームウェアの真正性を保証することは、ファームウェアがアンセキュアなメモリ内にある場合の方が、ずっと難しい。しかし、大容量記憶を目的としてアンセキュアなメモリ１０８が使用されるのであれば、それは極めて大きくかつ容易に更新できる。したがって、アンセキュアなメモリの機能を用いてファームウェアを格納するというのは道理にかなっている。これにより、ファームウェアを格納する目的に用いられるコード記憶デバイスのサイズを削除するか、少なくとも減らすことができる。あるいは、これによりコントローラ内にそのような格納を行う必要が減少する。このコスト削減は競争市場において重要である。メモリ１０８に格納されるコンテンツへの主要パスとして、メモリ１０８のコンテンツの直接読み出し、バス１０２上の信号のモニタリング、およびバス１０６上の信号のモニタリングの３つが挙げられる。アンセキュアなメモリ１０８内またはバス１０２および１０６上の情報の一部または全部が暗号化フォーマットであったとしても、暗号化鍵がセキュリティ破壊され得る危険が常に存在する。ファームウェアがセキュリティ破壊され、真正ファームウェアのセキュリティ機能が欠けている別のファームウェアと置き換えられ、システムによって実行された場合、大容量記憶メモリ上のアクセス制限またはアクセス限定がかけられたファイルや個人データがコピーされたり改ざんされたりする可能性がある。例えば、ユーザの金融情報または社会保障情報が認可なくコピーされたり変更されたりして、明らかな悪影響を受ける場合がある。別の例では、著作権保護または他の保護がなされたコンテンツが認可なくコピーされる可能性もある。デジタル式の権利管理技術は妨害されることがある。別の例として、暗号コードまたはユーザパスワードも危険にさらされる可能性がある。
【００２２】
図１Ｂはセキュアなデバイス１００Ｂを示す。セキュアなコントローラ１０４は、暗号化エンジン１１０と、コントローラ１０４の不揮発性メモリ内に格納された１つまたはそれより多い暗号化鍵１１２と、やはりコントローラ１０４の不揮発性メモリ内に格納されるデバイス動作状態の表示(indication)１１４を備える。本発明の特定の実施形態では、カードの寿命中に数多くの状態すなわちライフサイクルフェーズが開始して進行する。このフェーズに応じて、カード内の論理が暗号化エンジンを有効または無効にし、ハードウェア（カードアセンブリの前後）およびソフトウェア試験メカニズムへのアクセスを制御し、鍵生成を制御する。これらのフェーズは、製造前および製造後のカードのハードウェアおよびソフトウェアに対する入念な試験を可能にするのみならず、カードがセキュアなフェーズのときは暗号化鍵へのアクセス、したがって暗号化されたコンテンツへのアクセスを仮想的に不可能にし、ユーザへ出荷されるときはカードを動作フェーズにする。状態すなわちライフサイクルフェーズに関する詳細については、その全体が本願明細書において参照により援用されている、ミッキー・ホルツマンらの「Secure Memory Card With Life Cycle Phases 」という米国特許出願（代理人整理番号：ＳＮＤＫ．３８３ＵＳ３）（特許文献５）を参照されたい。
【００２３】
暗号化エンジン１１０はハードウェアベースであり、データがセキュアなコントローラ１０４を通過するときにデータを暗号化および／または復号化できる。例えば、ホストバス１０２からコントローラに到来したときに第１の暗号化アルゴリズムで暗号化されたデータは、データバス１０６経由でフラッシュメモリ１０８に送信される前に、復号化されて、次に第２のアルゴリズムで暗号化される。当然のことながら、メモリ１０８で暗号化されたデータをエンジン１１０によって復号化し、復号化された状態でホストバス１０２を通過させることも可能であるが、データの不法コピーの可能性を排除するために、データがホストバス１０２を通過するときにはデータは暗号化されたフォーマットであることが好ましい。
【００２４】
暗号エンジン１１０とも呼ばれる暗号化エンジン１１０は、多数のサブエンジンを備えることができ、多数の暗号化規格および暗号化アルゴリズムを利用できる。種々の暗号化技術および暗号化アルゴリズムの例として、メッセージ認証コード（ＭＡＣ）、データ暗号化基準（ＤＥＳ）、トリプルＤＥＳ、高度暗号化規格（ＡＥＳ）、公開鍵暗号基盤（ＰＫＩ）でしばしば使用されるＲＳＡおよびデイフイ−ヘルマン（Ｄｉｆｆｉｅ−Ｈｅｌｍａｎ）、ならびに、ＳＨＡ−１およびＭＤ５などの他のハッシュ式の暗号化などがある。この暗号化エンジンは、現在利用できるアルゴリズムや技術のみならず、これから開発されたり受け入れられたりするものも用いることができるものであり、前述したリストはいくつかの例を示すためだけのものに過ぎない。
【００２５】
メッセージ認証コードは、メッセージおよびいくつかの秘密データからハッシュ計算される。秘密データを知らずに偽造することは困難である。ＭＡＣは秘密鍵を用いるＤＥＳまたはＡＥＳ暗号に基づいたアルゴリズムを使って計算される。秘密鍵１１２またはこの秘密鍵から派生した１つまたはそれより多い鍵がコントローラ１０４に格納される。したがって、コントローラによって作成されるハッシュまたはメッセージ認証コードがコントローラと関連付けられ、別のコントローラによって複製されることはあり得ない。したがって、特定のコントローラからのハッシュ値はこのコントローラに関連付けられ、コントローラおよびデバイスの或る種の署名として作用し得る。というのは、この署名は一意であって複製不可能だからである。
【００２６】
前述した規格および種々の他のアルゴリズムおよび／または規格は暗号化の当業者に周知であるが、以下の刊行物は参考となるものであり、その全体が本願明細書において参照により援用されている。以下の刊行物とは、シーラ・フランケル著「RFC3566-The AES-XCBC-MAC-96 Algorithm and Its Use With IPsec」，米国標準技術局（ＮＩＳＴ），820 West Diamond Ave, Room 677, Gaithersburg, MD 20899 (http://www.faqs.org/rfcs/rfc3566.html)（非特許文献１）、ジャナカ・ディーパクマラ、ホワード・Ｍ・ヘイズ、Ｒ・ヴェンカテサン共著「Performance Comparison of Message Authentication Code (MAC) Algorithms for the Internet Protocol Security (IPSEC) 」，Electrical and Computer Engineering, Memorial University of Newfoundland, St. John's, NL, Canada, A1B 3S7 (http://www.engr.mun.ca/~howard/PAPERS/necec_2003b.pdf)（非特許文献２）、University of Nevadaのジョン・ブラックおよびUniversity of Californiaのフィリップ・ロガウェイ共著「Comments to NIST concerning AES Modes of Operations: A Suggestion for Handling Arbitrary-Length Messages with the CBC MAC)」(http://csrc.nist.gov/CryptoToolkit/modes/proposedmodes/xcbc-mac/xcbc-mac-spec.pdf) （非特許文献３）である。
【００２７】
図２は、デバイス１００Ａまたは１００Ｂを動作させるファームウェア２００を備えるフラッシュメモリ１０８のメモリ空間の図である。システムファームウェア２００は、フラッシュメモリ１０８内にあり変更不能であることが好ましいブートローダ（ＢＬＲ）部２００ａと、フラッシュメモリ１０８内にあり必要に応じて時々変更可能であるシステムファームウェア２００ｂを備えている。システムファームウェア２００のサイズは、このファームウェアを実行するＲＡＭモジュールよりも大きいので、オーバーレイと呼ばれるさらに小さい各部に分割される。各オーバーレイが自身のハッシュ値を有していることが好ましく、システム内ではファームウェア２００はこれらのハッシュ値のテーブル２００ｃである。テーブル２００ｃがシステムファームウェア２００ｂの一部としてロードされるのではなく、以下に詳述されるように、予め格納された値が計算値と比較される。どのようなハッシュ値を用いることもできるが、現時点ではＭＡＣ値またはＳＨＡ−１値が好ましい。一般に、ＭＡＣ値の代わりにＳＨＡ−１ダイジェストが用いられたり、その逆も可能である。ＭＡＣ値を使用することの利点は、ハードウェアおよびＭＡＣ値を作成したハードウェアの鍵と関連付けられているからである。ＳＨＡ−１値は、任意のデータセットについて単純にデータ自体に基づいて作成できるが、ＭＡＣ値は鍵なしでは再作成不可能であり、したがってさらに堅牢なセキュリティを提供する。特に、ＭＡＣ値を作成するには、暗号化エンジン１１０の不揮発性メモリ内に格納された鍵１０４（またはそこから派生した鍵）を用いなくてはならず、他のプロセッサを利用してＭＡＣ値を再作成することはできない。例えば、ハッカーがシステム外部の他のプロセッサを用いてファームウェアおよび関連するＭＡＣ値を複製することは不可能である。
【００２８】
別のセキュリティ対策として、ハッシュ値自体を１回以上暗号化できる。ＭＡＣ値の例では、ＭＡＣテーブル２００ｃ２を保護するＭＡＣ入力が作成されるので、ハッカーがファームウェアを切り換えたり変更したりして、適切なＭＡＣを再計算する方法を見つけた場合でさえも、ハッカーはＭＡＣのＭＡＣ（またはＳＨＡ−１のＭＡＣ）を計算しなくてはならないため、ハッカーは依然として問題に直面することになる。また、一実施形態において、ＭＡＣのＭＡＣは再び暗号化され、例えば暗号化エンジン１１０の不揮発性メモリまたはコントローラ１０４等、別の（異なる）メモリフィールドに格納される。このマルチレベル分散ヒエラルキにより、署名の偽造が不可能となるというより、偽造署名は真正なものとして受け入れられない。例として、誰かがフラッシュメモリ１０８にアクセスしてファームウェアおよびテーブル２００ｃを置き換えようとすると、システムはヒエラルキの１つのレベルをチェックして、テーブル２００ｃのＭＡＣが改ざんされていないか確認する。テーブルの格納されたＭＡＣが計算されたＭＡＣと一致しない場合、真正性に問題があることが示される。しかし、置き換えられたテーブル２００ｃと一致するようにテーブル２００ｃのＭＡＣも変更されている場合、システムは署名が間違えていないかをベリファイする。このエラーは、別の（アクセス不可能な）メモリにテーブル２００ｃのＭＡＣのコピーを格納し、この別の（アクセス不可能な）メモリ内のコピーとフラッシュメモリ内の値とを比較することによって回避される。値が一致しなければ、これは真正性の問題を示す。数個のレベルしか示されていないが、このマルチレベル分散構造は多数のレベルを有することもできるし、多数の異なるメモリを保護対象のファームウェアのサイズおよび複雑度に応じて組み込むこともできる。
【００２９】
ファームウェアのオーバーレイ構造とともに採用されるこのマルチレベル分散ヒエラルキにより、極めて効率的で迅速な認証プロセスももたらされる。ファームウェアをオーバーレイに分割して各オーバーレイに情報伝達することにより、認証プロセス全体が著しく高速化する。これは、より少量のコードの署名をベリファイすることのほうが、はるかに速いからである。ハッシュ値を計算するには、ハッシュの計算が行われる全データを読み出さなくてはならない。ファームウェアの読み出される部分が大きいほど、署名を計算してから署名が真正であることをベリファイするのに長時間を要する。大量データの署名の計算は、潜在的に非常に時間がかかって非効率である。
【００３０】
フラッシュメモリには、ＡＰＰ  ＦＷ１, ２・・・Ｘとして示される種々のファームウェア・アプリケーション２０２Ａ・・・Ｘと、当然のことながら、ユーザファイル（図示せず）も格納される。ファームウェア・アプリケーションは、種々の製品構成に対して各様に設定できる。これらのアプリケーションの数およびタイプは製品ごとに変化する。ファームウェア・アプリケーションは、アプリケーションがＲＡＭモジュールよりも大きなときに複数のオーバーレイに分割されることも好ましい。アプリケーション・ファームウェア・オーバーレイ２０１Ａのマップは、種々のオーバーレイのメモリ内の位置を示す。秘密鍵１０４またはこの秘密鍵１０４から派生した鍵とすることができる秘密鍵によって暗号化された種々のファームウェア・アプリケーションのハッシュ値（ＳＨＡ−１ダイジェストまたはＭＡＣ値等）のテーブルも、フラッシュメモリに格納される。ファームウェア・アプリケーションは、例えばＷｉｎｄｏｗｓ（登録商標）オペレーティングシステム上で動作するＷｉｎｄｏｗｓ（登録商標）環境のワード・プロセッシング・アプリケーションなど、基本システム上で動作する他のアプリケーションに類似している。
【００３１】
背景技術の欄に記載されているように、フラッシュメモリセルの寿命は有限であり、読み出しおよび書き込み動作が行われるたびにセルが劣化する。したがって、読み出しおよび書き込み動作を各セルに均等に分散し、「損耗」を各セル内に均等に分散するために、一般にフラッシュメモリ内のデータは時々動かされる。この損耗均等化ならびにあらゆる読み出し／書き込み動作は、ファームウェア２００、特にシステムファームウェア２００Ｂによって制御される。データを容易に移動できるようにするために、データは論理的に記憶される。これは、論理アドレスが物理アドレスに対してマッピングされ、論理アドレスが同じままで別の物理アドレスにマッピングされることが可能であることを意味する。繰り返すが、この論理−物理マッピングは、システムファームウェアによって実行される。
【００３２】
ただし、ファームウェアが自己の移動を管理している場合には幾分か困難がある。これは特に、ファームウェアがフラッシュメモリ内のデータのコピー保護を担当し、したがって実行前に真正であるとベリファイされることが好ましい場合に当てはまる。また、システムファームウェアが時々更新される場合にも当てはまるが、フラッシュメモリ１０８内に格納されている他のデータと比較すると、システムファームウェアが書き込まれるのは非常に稀である。したがって、ブートローダ２００ａを含むファームウェア２００は、フラッシュメモリ１０８に物理的に（論理マッピングなしで）読み書きされる。
【００３３】
アプリケーション・ファームウェアは、システムファームウェアに存在しない追加機能を提供し、いつでもデバイスにロード可能である。どのくらい多くのアプリケーション・ファームウェアをデバイスにロードできるか、また、各アプリケーションをいつロードできるかは不明である。したがって、物理的パーティション内の空間は割り当てられるのではなく、アプリケーション・ファームウェアが論理的パーティション２１４に格納され、フラッシュメモリ１０８内の他のユーザファイルやデータのように論理的にアドレス指定される。
【００３４】
図３は、デバイスのソフトウェアの機能構造と、デバイスが大容量記憶メモリ１０８にどのようにアクセスするかを示す。前述したように、好ましい実施形態は、大容量記憶メモリ１０８用のフラッシュタイプのメモリを備えるが、簡素化のために、この好ましい実施形態の説明の中で、これらの用語は交換可能に使用される。フラッシュメモリの動作に関係するソフトウェアの部分は一般にバックエンドと呼ばれ、アプリケーションおよびユーザインターフェイスを含むソフトウェアの部分はフロントエンドとして知られている。ファームウェア・アプリケーション２０２Ａ、２０２Ｂ・・・２０２Ｘは、システムファームウェア２０２Ｂを含むファームウェア２００上で動く。ＢＬＲ２００ａはファームウェア２００の独立コンポーネントであるが、ＢＬＲはシステムファームウェアをブートストラップし、基本的にシステムファームウェア２００の一部と一般に考えられる。システムファームウェア２００は物理的セクタアドレスルーチンすなわちブロック２０６と、論理／物理マッパすなわちマッピングルーチン２０８を有する。大容量記憶メモリ１０８は、物理的記憶領域２１２と論理的記憶領域２１４に分割される。物理的／論理的パーティション２１６は、大容量記憶メモリ１０８を領域２１２および２１４に分割(division またはpartition)していることを示すために用いられる。各領域２１２および２１４はさらに小さい領域に分割できるが、当業者にとって、これらさらに小さな領域のことを言うためにパーティションという用語を用いることは一般的である。物理的セクタアクセスルーチンすなわち機能ブロック２０６が物理的領域すなわちパーティション２１２内の読み書きを制御し、論理／物理マッパのブロックが論理的記憶領域２１４内の読み書きを制御する。
【００３５】
システムファームウェア２００Ｂを含むファームウェア２００は物理的領域に格納される。アプリケーション・ファームウェア２００Ａ・・・Ｘは、ユーザファイルも格納される論理的領域２１４に格納される。論理的領域２１４内のアプリケーション・ファームウェアおよび他のすべてのデータが、システムファームウェアの損耗均等化ルーチンによって時々移動させられる。
【００３６】
すべてのファームウェアの真正性は、実行される前にチェックされることが好ましい。前述したように、これは、大容量記憶メモリ１０８自体が保護メカニズムに構築されていないから行われる。図４のフローチャートは、アプリケーション・ファームウェアを含むあらゆるファームウェアピースに適用される。ステップ３０４で、ファームウェアが署名される。これは一般に、ファームウェアのロード時に行われるが、署名付き記録は、新しいものでこの記録を上書きすることによって更新できる。署名は、ファームウェアの少なくとも一部の１つまたはそれより多いハッシュ値を含む。前述したように、ＭＡＣ値は、ＭＡＣ値を作成したコントローラと一緒に使用され、および／または、このコントローラ内に格納される鍵を用いて作成され、別のプロセッサによって再作成できないので、ハッシュ値はＭＡＣの変種であることが好ましい。ファームウェアの各部または各片は異なる鍵を用いて署名されてもよい。例えば、システムファームウェア２００Ｂが第２の鍵で署名されるときに、ＢＬＲ２００Ａが第１の鍵で署名されてもよい。ファームウェア２００の種々の部分（例えば、オーバーレイ）を種々の異なる鍵で署名することも可能である。別の例として、アプリケーション・ファームウェア２００Ａ・・・Ｘの各片を異なる鍵で署名できる。
【００３７】
ＢＬＲ２００Ａのハッシュ値は、ミッキー・ホルツマンらの「Hardware Driver Integrity Check Of Memory Card Controller Firmware」という同時継続中の米国特許出願（代理人整理番号：ＳＮＤＫ．４０８ＵＳ２）（特許文献６）に記載されている独自のプロセスで格納および計算される。このプロセスに関する詳細は、この特許出願を参照されたい。
【００３８】
前述したライフサイクルフェーズすなわち状態を伴う好ましい一実施形態において、ファームウェアは特定の状態でしか署名できず、未署名のファームウェアは実行不可能である。特に、デバイスが一般に消費者に使用されている間であろうセキュアな動作状態である状態１５０（図示せず）では、ファームウェアの更新および署名は許可されない。これにより、真正でないかもしれない代替のファームウェアのインストールが防止される。この実施形態のシステムは、セキュアな状態以外の状態のときに、暗号化エンジンがファームウェアに署名できるようにするだけである。他の実施形態では、ファームウェアがロードされる前に署名され、カードによって署名がベリファイできれば、現場（すなわち、状態１５０のとき）でのファームウェアの更新が許される。ファームウェア自体の署名のベリファイと同様に、ファームウェアのソースも識別およびベリファイできる。ファームウェアは、ロードされる前に、信頼されている実体によって供給されるべきであり、好ましい実施形態では、この信頼は、公開鍵インフラストラクチャ（ＰＫＩ）証明書を用いて確立される。この証明書は、ハッシュ式の署名に加えることも、ハッシュ式の署名に代えることも可能である。例えば、（この例示的な実施形態において証明書によって）信頼が確立されると、暗号化エンジンがファームウェアに署名する。さらに大事をとって、ファームウェアの供給元とセキュアな結合を確立できる。セキュアな結合は、デバイスと供給元との間でやりとりされるデータを保護するために暗号化される。セキュアな結合は、前述したＡＥＳ規格にしたがって暗号化されることが好ましいが、周知の暗号化規格であれば、どのような暗号化規格を採用することもできる。
【００３９】
前述したように、システムファームウェアは、実行のためにＲＡＭにロードできるようにさらに小サイズのオーバーレイに分割される。種々のオーバーレイのマップ２００ｃ１がフラッシュメモリに格納される。各オーバレイはそれぞれ署名される。ＭＡＣ値であることが好ましい署名のテーブル２００ｃ２も、ファームウェア２００の一部としてフラッシュメモリに格納される。システムまたはデバイス２００は、ロードされるべき完全なテーブル２００ｃ２のためにＲＡＭ内に十分な空間を割り当て、テーブル全体がロードされ、デバイスの動作中はＲＡＭ内に存在する。
【００４０】
各ファームウェア・アプリケーション２０２Ａ・・・Ｘもオーバーレイに分割され、各オーバーレイは同様に署名される。現在、システムファームウェアのように、ファームウェア・アプリケーションに署名するために鍵依存型のハッシュ（例えば、ＭＡＣ）値を計算することが好ましいが、前述したように、他のハッシュ値を使用することもできる。テーブル２０１Ｂは各アプリケーション・ファームウェア・オーバーレイの署名をマップ２０１Ａ内に含む。ＲＡＭ内の１つのセクタバッファが、アプリケーション・ファームウェアの署名のための作業用記憶域として事前割り当てされる。
【００４１】
機能を構成する重大な決定を有するかもしれない各ファームウェアの交換を防止するので、ファームウェアの各オーバーレイに署名することは好ましいことであるが、数多くのファームウェアを１つの署名に依存させることも可能である。例えば、好ましくはないが、全てのファームウェアに対して１つの署名を用いることができる。また、オーバーレイすなわち署名されるべき部分のサイズが変化してもよい。再び図４を参照すると、前述したようにステップ３０４でファームウェアが署名された後、ステップ３０８で各署名がベリファイされる。ファームウェアの各片、例えば各オーバーレイがフラッシュメモリから読み出されると、暗号化エンジン１１０を通って、このファームウェア片のハッシュ値が暗号化エンジンによって「オン・ザ・フライ (on the fly) 」で作成される。この計算値と格納値が比較され、値が一致しなければ、ファームウェア片の真正性に問題がある。一致すれば、図２について前述した階層構造の次のレベルをチェックすることが好ましい。付加メモリ内に格納されたコピーと同様に、すべてのレベルをチェックすることが好ましい。前述したように、この分散ヒエラルキ構造により、ファームウェアおよび署名の真正性が確実なものとなる。
【００４２】
図５は、ファームウェアの実行を示すフローチャートである。ステップ５０４で、システムはブートローダ部（ＢＬＲ）の署名をベリファイする。これは、システムファームウェアについて前述したように行うことができるが、ミッキー・ホルツマンらの「Hardware Driver Integrity Check Of Memory Card Controller Firmware」という同時継続中の米国特許出願（代理人整理番号：ＳＮＤＫ．４０８ＵＳ２）（特許文献６）に記載されている別のプロセスで行われることが好ましい。これは、ＢＬＲの署名がベリファイされた後にステップ５０６で実行される。次にステップ５０８で、システムはシステムファームウェアの署名をベリファイする。その後、ステップ５１０でこれを実行する。いずれかのアプリケーション・ファームウェアが存在している場合、ステップ５１２でその署名がベリファイされ、ベリファイされれば、ステップ５１４で実行される。これはアプリケーション・ファームウェアの各片ごとに行われる。前述したように、ＲＡＭにロードされる前か、またはロードされるときにベリファイされる実体の各オーバーレイに対して、ベリファイステップ５０６、５０８および５１０のいずれかが実行されることが好ましい。
【００４３】
図６は、物理的記憶領域２１２に格納されているファームウェア２００の読み出しおよびベリファイを示すフローチャートである。これは、図５のステップ５０４および５０８に対応する。ステップ６０４で、データ（この場合はファームウェア）が格納されていれば物理アドレスから読み出される。やはり、この物理的な読み出しは事前の論理的マッピングなしで実施される。次に、ステップ６０４で、ファームウェアのハッシュ値が作成される。これらの値はコントローラのレジスタに一時記憶される。次にステップ６０８で、ステップ６０６で計算された値と格納されているハッシュ値とが比較される。説明されている実施形態では、格納されている値はフラッシュメモリ内のテーブル内にあり、それ自体が暗号化されてもよい。
【００４４】
図７は、ファームウェア・アプリケーション２０２Ａ・・・Ｘの読み出しおよびベリファイを示すフローチャートである。ステップ７０４で、格納されていればデータが論理アドレスから読み出される。これは、ステップ７０４Ａで、論理的にアドレス指定されたデータをシステムファームウェアからリクエストすることを含む。これは、システムファームウェアが論理アドレスとその対応する物理アドレスを任意の時間にマッピングするステップ７０４Ｂも含む。データ（この場合はファームウェア）が読み出された後、ステップ７０６でファームウェアのオーバーレイまたは他の量についてハッシュ値が計算される。その後、ステップ７０８で、計算されたハッシュ値と格納されているハッシュ値とが比較される。やはり、説明されている実施形態では、格納されているハッシュ値はフラッシュメモリ内のテーブル内にあり、それ自体が暗号化されてもよい。
【００４５】
本発明の様々な態様をその例示的な実施形態に関して説明してきたが、本発明は添付の特許請求の範囲の全範囲内においてその権利が保護されるべきであることが理解できよう。
【図面の簡単な説明】
【００４６】
【図１Ａ】本発明の実施形態であるセキュアなデバイス１００Ａの概略図である。
【図１Ｂ】本発明の実施形態であるセキュアなデバイス１００Ｂの概略図である。
【図２】メモリ空間１０８の一部分にある、種々のファームウェアを示す。
【図３】本発明の実施形態によるソフトウェアの構造およびハードウェアのアクセスを示す概略図である。
【図４】ファームウェアの完全性をベリファイするいくつかのステップを示すフローチャートである。
【図５】本発明の一実施形態の動作のフローチャートである。
【図６】ファームウェア２００などの物理的に格納されたデータの整合性チェックを示すフローチャートである。
【図７】ユーザファイルやアプリケーション・ファームウェア２０２Ａ、Ｂ・・・Ｘなど、論理的に格納されたデータの整合性チェックを示すフローチャートである。
【図１Ａ】
2009508271.tif 000003
【図１Ｂ】
2009508271.tif 000004
【図２】
2009508271.tif 000005
【図３】
2009508271.tif 000006
【図４】
2009508271.tif 000007
【図５】
2009508271.tif 000008
【図６】
2009508271.tif 000009
【図７】
2009508271.tif 000010
【手続補正書】
【提出日】平成20年7月8日(2008.7.8)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
大容量記憶機能を備えたデバイスであって、
フラッシュメモリセルを備える大容量記憶装置と、
暗号化ハードウェアを有するコントローラと、
ランダムアクセスメモリと、
前記大容量記憶フラッシュメモリ内に格納され、前記フラッシュメモリセルに対するデータの書き込みおよびデータの読み出しを制御する第１のレベルのファームウェアと、を有し、
前記第１のレベルのファームウェアの真正性が、前記デバイスの前記コントローラと関連付けられたハッシュ値を用いてベリファイされるデバイス。
【請求項２】
請求項１記載のデバイスにおいて、
前記ハッシュ値の作成に前記コントローラ内の鍵が必要とされ、前記ハッシュ値が前記コントローラの前記鍵と関連付けられるデバイス。
【請求項３】
請求項１記載のデバイスにおいて、
前記第１のレベルのファームウェアが、暗号化フォーマットで格納されるデバイス。
【請求項４】
請求項３記載のデバイスにおいて、
前記ファームウェアが、前記コントローラの不揮発性メモリに格納された鍵を用いて前記暗号化ハードウェアによって暗号化されるデバイス。
【請求項５】
請求項１記載のデバイスにおいて、
前記第１のレベルのファームウェアと関連付けられたハッシュ値の第１のテーブルをさらに有し、前記テーブルが前記大容量記憶フラッシュメモリセル内に格納されるデバイス。
【請求項６】
請求項５記載のデバイスにおいて、
第２のテーブルをさらに有し、前記第２のテーブルが前記第１のテーブルの前記データの１つまたはそれより多いハッシュ値を含むデバイス。
【請求項７】
請求項６記載のデバイスにおいて、
前記第２のテーブルの前記ハッシュ値のうちの１つまたはそれより多くが、前記デバイスの前記コントローラと関連付けられるデバイス。
【請求項８】
請求項６記載のデバイスにおいて、
前記第２のテーブルのコピーが、前記コントローラの不揮発性メモリに格納されるデバイス。
【請求項９】
請求項８記載のデバイスにおいて、
前記第２のテーブルのコピーが前記第２のテーブルと一致しない場合、真正性がベリファイされないデバイス。
【請求項１０】
請求項１記載のデバイスにおいて、
１つまたはそれより多いファームウェア・アプリケーションを含む第２のレベルのファームウェアをさらに有し、前記第２のレベルのファームウェアが前記大容量記憶フラッシュメモリセル内に格納されるデバイス。
【請求項１１】
請求項１０記載のデバイスにおいて、
第３のテーブルをさらに有し、前記第３のテーブルが前記第２のレベルのファームウェアと関連付けられたハッシュ値を含むデバイス。
【請求項１２】
請求項１１記載のデバイスにおいて、
前記第３のテーブルが、暗号化されるデバイス。
【請求項１３】
請求項１２記載のデバイスにおいて、
前記第３のテーブルは、前記コントローラの不揮発性メモリに格納された鍵を用いて前記コントローラの暗号化ハードウェアによって暗号化されるデバイス。
【請求項１４】
請求項１１記載のデバイスにおいて、
前記第３のテーブルの前記ハッシュ値のうちの１つまたはそれより多くが前記デバイスのコントローラに相関され、前記ハッシュ値のうちの１つまたはそれより多くが前記コントローラに相関されていなければ前記デバイスが機能しないデバイス。
【請求項１５】
デバイスであって、
フラッシュメモリを備える大容量記憶リポジトリと、
ランダムアクセスメモリと、
前記大容量記憶リポジトリの第１の領域に格納されるシステムファームウェアと、
前記大容量記憶リポジトリの第２の領域に格納されるアプリケーション・ファームウェアと、を有し、
前記システムファームウェアが、前記アプリケーション・ファームウェアの読み出しおよび書き込みを含む、前記第２の領域のデータの読み出しおよび書き込みを制御するデバイス。
【請求項１６】
請求項１５記載のデバイスにおいて、
前記システムファームウェアおよび前記アプリケーション・ファームウェアをベリファイする暗号化メカニズムをさらに有するデバイス。
【請求項１７】
請求項１５記載のデバイスにおいて、
暗号化ハードウェアをさらに有し、前記暗号化ハードウェアは、ハッシュ値を作成した特定のハードウェアまで追跡可能なハッシュ値を計算するデバイス。
【請求項１８】
セキュアなシステムであって、
セキュアでない大容量記憶メモリと、
セキュアなコントローラと、
前記セキュアなシステムのセキュリティメカニズムを備え、前記セキュアでない大容量記憶メモリに格納されるファームウェアと、を有し、
前記コントローラが前記ファームウェアの前記セキュリティメカニズムを使用せずに前記ファームウェアの少なくとも一部の整合性をベリファイするように動作でき、それによって、前記ファームウェアはセキュアでない大容量記憶メモリに格納されているが、前記ファームウェアの不正な改変を防止するシステム。
【請求項１９】
請求項１８記載のセキュアなシステムにおいて、
前記ファームウェアが前記システムの前記コントローラと相関され、前記ファームウェアと前記コントローラとの間の相関が確立されなければ前記デバイスが機能しないシステム。
【請求項２０】
請求項１８記載のセキュアなシステムにおいて、
前記ファームウェアが層群を有し、前記少なくとも１つの層の真正性がハードウェアによってベリファイされるシステム。
【請求項２１】
請求項１８記載のシステムにおいて、
複数の状態をさらに有し、前記複数の状態のうちの１つまたはそれより多くが製造中に用いられ、前記状態のうちの１つまたはそれより多くが消費者によるセキュアな動作のために用いられるシステム。
【請求項２２】
請求項２１記載のシステムにおいて、
前記システムがセキュアな状態にある場合、前記ファームウェアが前記セキュアでない大容量記憶メモリに格納される前に前記ファームウェアのソースが識別されなくてはならないシステム。
【請求項２３】
請求項２１記載のシステムにおいて、
前記複数の状態のうちの１つまたはそれより多くを故障解析に用いることができ、前記複数の状態うちの故障解析状態では、識別されていないソースからのファームウェアをセキュアでない大容量記憶メモリに格納でき、前記セキュアなコントローラは前記システムの動作を前記複数状態のうちのセキュアな状態では許可しないシステム。
【請求項２４】
フラッシュメモリを用いた記憶デバイスを動作させる方法であって、
フラッシュメモリアレイを提供するステップと、
前記フラッシュメモリアレイの第１の部分を予約するステップと、
前記フラッシュメモリアレイの第２の部分にアプリケーション・ファームウェアを格納するステップであって、
第１の論理アドレスを前記データに割り当てるステップと、
前記第１の論理アドレスを第１の物理アドレスにマッピングするステップと、
前記第１の論理アドレスを第２の物理アドレスにときどき再マッピングするステップと、を含む、格納するステップと、
前記フラッシュメモリアレイの前記第１の部分にシステムファームウェアを格納するステップであって、前記システムファームウェアが論理アドレスから最初にマッピングされることなく物理アドレスに格納される、格納するステップと、
前記フラッシュメモリを用いた記憶デバイスのプロセッサにより、論理アドレスから最初にマッピングされることなく前記システムファームウェアを条件付きで実行するステップと、
前記フラッシュメモリを用いた記憶デバイスのプロセッサにより、論理アドレスから最初にマッピングされた後に前記アプリケーション・ファームウェアを条件付きで実行するステップと、
を含む方法。
【国際調査報告】
2009508271.tif 000011
2009508271.tif 000012
2009508271.tif 000013
2009508271.tif 000014
2009508271.tif 000015
2009508271.tif 000016