(57)【要約】外部記憶デバイスから電子デバイス（例えば、セルラ電話）を安全にブート・アップする技術が記述される。安全なデータ（例えば、ハッシュ・ダイジェスト、署名、暗号鍵等）は、先ず、外部メモリ・デバイスの非書込可能領域（例えば、ＮＡＮＤフラッシュ・デバイスのワン・タイム・プログラマブル（ＯＴＰ）領域）から取得される。第１のプログラム（例えば、ブート・プログラム）が、外部メモリ・デバイスの書込可能なメイン領域から取得され、安全なデータに基づいて認証される。この第１のプログラムは、もしも認証されれば実行可能とされる。第２のプログラムが、外部メモリ・デバイスのメイン領域から取得され、安全なデータに基づいて認証される。この第２のプログラムは、もしも認証されれば実行可能とされる。更なるプログラムも取得索され認証されうる。プログラムはそれぞれ、安全なハッシュ機能、デジタル署名、および／またはその他の幾つかの暗号技術を使用して認証されうる。
2009526333.tif 000002
【特許請求の範囲】
【請求項１】
外部メモリ・デバイスの非書込可能領域から安全なデータを取得し、前記外部メモリ・デバイスの書込可能領域から第１のプログラムを取得し、前記安全なデータに基づいて前記第１のプログラムを認証し、認証されれば前記第１のプログラムを実行可能にするように構成された少なくとも１つのプロセッサと、
前記少なくとも１つのプロセッサに接続された内部メモリと
を備える装置。
【請求項２】
前記安全なデータは、第１のハッシュ・ダイジェストを備え、
前記少なくとも１つのプロセッサは、
前記第１のプログラムをハッシュして、第２のハッシュ・ダイジェストを生成し、
前記第１のプログラムを認証するために、前記第１のハッシュ・ダイジェストと前記第２のハッシュ・ダイジェストとを比較する
ように構成された請求項１に記載の装置。
【請求項３】
前記少なくとも１つのプロセッサは、前記第１のプログラムを認証するために、暗号鍵を用いて、前記第１のプログラムの署名をベリファイするように構成され、
前記暗号鍵は、前記安全なデータから取得されるか、前記安全なデータによって認証される請求項１に記載の装置。
【請求項４】
前記少なくとも１つのプロセッサは、
前記外部メモリ・デバイスから、前記第１のプログラムの第１の署名と、第２の署名および公開鍵を備える証明書とを取得し、
前記証明書を認証するために、前記安全なデータから取得されるか、または、前記安全なデータによって認証される暗号鍵を用いて前記第２の署名をベリファイし、
前記第１のプログラムを認証するために、前記第１の署名を前記公開鍵を用いてベリファイする
ように構成された請求項１に記載の装置。
【請求項５】
前記第１のプログラムは、前記装置をブート・アップするブート・コードである請求項１に記載の装置。
【請求項６】
前記少なくとも１つのプロセッサは、
前記外部メモリ・デバイスの書込可能領域から第２のプログラムを取得し、
前記安全なデータに基づいて第２のプログラムを認証し、
認証されれば前記第２のプログラムを実行可能にする
ように構成された請求項１に記載の装置。
【請求項７】
前記第２のプログラムは、前記第１のプログラムによって認証される請求項６に記載の装置。
【請求項８】
前記少なくとも１つのプロセッサは、
前記外部メモリ・デバイスの書込可能領域から第３のプログラムを取得し、
前記安全なデータに基づいて前記第３のプログラムを認証し、
認証されれば前記第３のプログラムを実行可能にする
ように構成された請求項６に記載の装置。
【請求項９】
前記第３のプログラムは前記第２のプログラムによって認証される請求項８に記載の装置。
【請求項１０】
前記外部メモリ・デバイスは、ＮＡＮＤフラッシュ・デバイスである請求項１に記載の装置。
【請求項１１】
前記外部メモリ・デバイスは、ＮＯＲフラッシュ・デバイスである請求項１に記載の装置。
【請求項１２】
前記非書込可能領域は、ワン・タイム・プログラム可能（ＯＴＰ）領域である請求項１に記載の装置。
【請求項１３】
外部メモリ・デバイスの非書込可能領域から、安全なデータを取得することと、
前記外部メモリ・デバイスの書込可能領域から、第１のプログラムを取得することと、
前記安全なデータに基づいて前記第１のプログラムを認証することと、
認証されれば前記第１のプログラムを実行可能にすることと
を備える方法。
【請求項１４】
前記安全なデータは、第１のハッシュ・ダイジェストを備え、
前記第１のプログラムを認証することは、
前記第１のプログラムをハッシュして、第２のハッシュ・ダイジェストを生成することと、
前記第１のプログラムを認証するために、前記第１のハッシュ・ダイジェストと、前記第２のハッシュ・ダイジェストとを比較することと
を備える請求項１３に記載の方法。
【請求項１５】
前記第１のプログラムを認証することは、
前記外部メモリ・デバイスから、前記第１のプログラムの第１の署名と、第２の署名および公開鍵を備える証明書とを取得することと、
前記証明書を認証するために、前記安全なデータから取得されるか、または、前記安全なデータによって認証される暗号鍵を用いて前記第２の署名をベリファイすることと、
前記第１のプログラムを認証するために、前記第１の署名を前記公開鍵を用いてベリファイすることと
を備える請求項１３に記載の方法。
【請求項１６】
前記外部メモリ・デバイスの書込可能領域から第２のプログラムを取得することと、
前記安全なデータに基づいて前記第２のプログラムを認証することと、
認証されれば前記第２のプログラムを実行可能にすることと
を更に備える請求項１３に記載の方法。
【請求項１７】
外部メモリ・デバイスの非書込可能領域から、安全なデータを取得する手段と、
前記外部メモリ・デバイスの書込可能領域から、第１のプログラムを取得する手段と、
前記安全なデータに基づいて前記第１のプログラムを認証する手段と、
認証されれば前記第１のプログラムを実行可能にする手段と
を備える装置。
【請求項１８】
前記安全なデータは、第１のハッシュ・ダイジェストを備え、
前記第１のプログラムを認証する手段は、
前記第１のプログラムをハッシュして、第２のハッシュ・ダイジェストを生成する手段と、
前記第１のプログラムを認証するために、前記第１のハッシュ・ダイジェストと、前記第２のハッシュ・ダイジェストとを比較する手段と
を備える請求項１７に記載の装置。
【請求項１９】
前記第１のプログラムを認証する手段は、
前記外部メモリ・デバイスから、前記第１のプログラムの第１の署名と、第２の署名および公開鍵を備える証明書とを取得する手段と、
前記証明書を認証するために、前記安全なデータから取得されるか、または、前記安全なデータによって認証される暗号鍵を用いて前記第２の署名をベリファイする手段と、
前記第１のプログラムを認証するために、前記第１の署名を前記公開鍵を用いてベリファイする手段と
を備える請求項１７に記載の装置。
【請求項２０】
前記外部メモリ・デバイスの書込可能領域から第２のプログラムを取得する手段と、
前記安全なデータに基づいて前記第２のプログラムを認証する手段と、
認証されれば前記第２のプログラムを実行可能にする手段と
を更に備える請求項１７に記載の装置。
【請求項２１】
ＮＡＮＤフラッシュ・デバイスのワン・タイム・プログラム可能（ＯＴＰ）領域から安全なデータを取得し、前記ＮＡＮＤフラッシュ・デバイスのメイン領域からブート・プログラムを取得し、前記安全なデータに基づいて前記ブート・プログラムを認証し、認証されれば前記ブート・プログラムを実行可能にするように構成された少なくとも１つのプロセッサと、
前記少なくとも１つのプロセッサに接続されたメモリと
を備える無線通信デバイス。
【請求項２２】
前記安全なデータは、第１のハッシュ・ダイジェストを備え、
前記少なくとも１つのプロセッサは、
前記ブート・プログラムをハッシュして、第２のハッシュ・ダイジェストを生成し、
前記ブート・プログラムを認証するために、前記第１のハッシュ・ダイジェストと前記第２のハッシュ・ダイジェストとを比較する
ように構成された請求項２１に記載の装置。
【請求項２３】
前記少なくとも１つのプロセッサは、
前記ＮＡＮＤフラッシュ・デバイスのメイン領域から、前記ブート・プログラムを、一度に１ページ取得し、
前記ＮＡＮＤフラッシュ・デバイスから前記ページが、一度に１ページ取得されると、前記ブート・プログラムをハッシュして、前記第２のダイジェストを生成する
ように構成された請求項２２に記載の装置。
【請求項２４】
前記少なくとも１つのプロセッサは、
もしも認証されれば前記ブート・プログラムを実行し、
前記ＮＡＮＤフラッシュ・デバイスのメイン領域から第２のプログラムを取得し、
前記安全なデータに基づいて前記第２のプログラムを認証し、
もしも認証されれば前記第２のプログラムを実行可能にする
ように構成された請求項２１に記載の装置。
【請求項２５】
前記少なくとも１つのプロセッサは、
第１の署名と公開鍵とを備える証明書を取得し、
前記第２のプログラムのための第２の署名を取得し、
前記証明書を認証するために、前記安全なデータから取得されるか、前記安全なデータによって認証された暗号鍵を用いて前記第１の署名をベリファイし、
前記第２のプログラムを認証するために、前記公開鍵を用いて前記第２の署名をベリファイする
ように構成された請求項２４に記載の装置。
【請求項２６】
前記少なくとも１つのプロセッサは、
前記ＮＡＮＤフラッシュ・デバイスのメイン領域から、前記第２のプログラムを、一度に１ページ取得し、
前記ＮＡＮＤフラッシュ・デバイスから前記ページが、一度に１ページ取得されると、前記第２のプログラムをハッシュし、
ハッシュ・ダイジェストを生成し、
前記公開鍵および前記ハッシュ・ダイジェストを用いて前記第２の署名をベリファイする
ように構成された請求項２５に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、電子機器に関し、更に詳しくは、外部記憶デバイスから電子デバイスを安全にブートする技術に関する。
【背景技術】
【０００２】
電子デバイス（例えば、セルラ電話）は、一般に、電子デバイス内のハードウェアを制御し、かつ、設計された様々な機能をサポートするソフトウェアおよび／またはファームウェアに基づいて動作する。ソフトウェアおよび／またはファームウェアは、外部の不揮発性メモリに格納され、電源投入中に高速な内部メモリおよび／または外部揮発性メモリへロードされ、プロセッサによって実行されうる。これら外部メモリおよび内部メモリは、一般に、望ましい記憶容量とアクセス機能とを提供し、かつ、可能な限り経済的になるように選択される。
【０００３】
多くの事例において、外部メモリから取得されたソフトウェアおよび／またはファームウェアが、実行のために有効であり許可されているかを確認することが必要であるか、望ましい。例えば、異なる特徴を持つ異なるソフトウェア・バージョンが、異なるレベルのサービス申込のために利用可能かもしれない。そして、基本的な申込を有する電子デバイスが、特約申込のために意図された強化機能を有するソフトウェア・バージョンをロードし、実行することを阻止することが望ましい。別の例として、未許可の機能を可能にするソフトウェアおよび／またはファームウェアを用いた改竄を阻止することが望ましい。更に、敵意のあるパーティによって、例えばネットワーク破壊および／または通信途絶のような遥かに悪い結果が引き起こされうる。
【発明の開示】
【発明の概要】
【０００４】
従って、当該技術分野では、ソフトウェアおよび／またはファームウェアを経済的なメモリ内に格納し、かつ、これらメモリから取得したソフトウェアおよび／またはファームウェアの有効性をチェックする技術に対するニーズがある。
【０００５】
本明細書では、外部記憶デバイス（例えば、ＮＡＮＤフラッシュ・メモリ・デバイス）から電子デバイス（例えば、セルラ電話）を安全にブート・アップする技術が開示される。安全なブートは、外部デバイスからソフトウェア・プログラムをロードし、このロードしたソフトウェア・プログラムの有効性をチェックする処理を称する。ソフトウェア・プログラムは、ソフトウェア・コード、ファームウェア・コード、あるいはこれら両方の組み合せを含みうる。
【０００６】
本明細書で記述された技術は、実際には変更不可能な安全なデータを格納するために、外部記憶デバイス上の非書込可能領域を利用する。非書込可能領域は、ワン・タイム・プログラム可能（ＯＴＰ）領域、ワン・タイム書込（ＯＴＷ）領域でありうる。本明細書で用いられるように、安全なデータは、簡単に変更されないデータによって認証されたデータのみならず、簡単に変更されないデータを含む。この安全なデータは、１または複数のハッシュ・ダイジェスト、署名、証明書、暗号鍵等、またはこれらの組み合わせを含むことができる。当該技術は、安全なデータを用いて、外部記憶デバイスからロードされたソフトウェア・プログラムを認証し、認証されたプログラムを実行可能にし、無許可のプログラムが実行されることを阻止する。
【０００７】
安全なブートの実施形態では、安全なデータは先ず、外部メモリ・デバイス（例えば、ＮＡＮＤフラッシュのＯＴＰ領域のような）非書込可能領域から取得される。第１のプログラム（例えば、ブート・プログラム）が、外部メモリ・デバイスの書込可能領域またはメイン領域から取得され、安全なデータに基づいて認証される。例えば、この安全なデータは、第１のハッシュ・ダイジェストを備えることができる。この第１のプログラムは、（１）第１のプログラムをハッシュして、第２のハッシュ・ダイジェストを生成し、（２）第１のハッシュ・ダイジェストと第２のハッシュ・ダイジェストとを比較することによって認証されうる。認証されると第１のプログラムは実行可能となる。
【０００８】
第２のプログラムは、外部メモリ・デバイスのメイン領域から取得され、安全なデータに基づいて認証されうる。例えば、この安全なデータは、暗号鍵を含むことができる。この暗号鍵は、非書込可能領域に格納されているか、または、非書込可能領域内に格納されたデータによって認証される。そして、第２のプログラムは、（１）第１の署名と公開鍵とを含む証明書を取得し、（２）第２のプログラムのための第２の署名を取得し、（３）暗号鍵を用いて第１の署名をベリファイすることによってこの証明書を認証し、（４）公開鍵を用いて第２の署名をベリファイすることによって第２のプログラムを認証することによって認証される。認証されると第２のプログラムは実行可能となる。更なるプログラムも取得され、認証されうる。プログラムはそれぞれ、安全なハッシュ機能、デジタル署名、および／または、その他の幾つかの暗号技術を使用して認証されうる。
【０００９】
本発明の様々な局面および実施形態が以下に更に詳細に記述される。
【詳細な説明】
【００１０】
本発明の特徴および本質は、同一の参照符号が全体を通じて対応している図面と連携した場合に、記述した詳細説明からより明らかになるであろう。
【００１１】
用語「典型的な」（exemplary）は、本明細書において、「例、事例、または例示として役立つ」ことを意味するために使用される。本明細書において「典型的な」と記載される何れの実施形態または設計も、その他の実施形態または設計よりも好適であるとか有利であるとか必ずしも解釈される必要はない。
【００１２】
本明細書に記載の安全なブート技術は、例えば、無線通信、パーソナル電子機器、計算、ネットワーキング等のような様々な電子デバイスのために使用することができる。この技術はまた、例えば、ソリッド・ステート・メモリ・デバイス、メモリ・カード、ハード・ディスク、コンパクト・ディスク（ＣＤ）等のような非書込可能領域を有する様々な記憶デバイスと共に使用することもできる。非書込可能領域は、データによって上書きされない記憶デバイス領域である。例えば、非書込可能領域は、データを用いて一度だけプログラムされることが可能なＯＴＰ領域である。非書込可能領域は、安全なブート処理をサポートする安全なデータを格納するために使用することができる。明瞭さのために、この技術は、以下では、ＯＴＰ領域を有するＮＡＮＤフラッシュ・メモリを有する無線通信デバイスについて記述される。
【００１３】
図１は、無線通信デバイス１００のブロック図を示す。これは、セルラ電話、ハンドセット、ハンドヘルド・デバイス、無線モジュール、携帯情報端末（ＰＤＡ）、端末、モデム、あるいはその他の幾つかの装置またはデバイスでありうる。無線デバイス１００は、受信パスおよび送信パスを経由して、１または複数の無線通信システムとの双方向通信を提供することができる。受信パス上では、基地局によって送信された信号が、アンテナ１１２によって受信され、受信機（ＲＣＶＲ）１１４へ提供される。受信機１１４は、この受信した信号を調整し、デジタル化し、更なる処理のために、デジタル・セクション１２０へ入力サンプルを提供する。送信パス上では、送信機（ＴＭＴＲ）１１６が、データを受け取り、無線デバイス１００によって送信されるデータに調整し、変調信号を生成する。この変調信号は、アンテナ１１２を経由して基地局へ送信される。
【００１４】
デジタル・セクション１２０は、無線デバイス１００のためのデジタル処理をサポートする様々な処理、インタフェース、およびメモリ・ユニットを含んでいる。図１に示される実施形態の場合、デジタル・セクション１２０は、モデム・プロセッサ１２２、アプリケーション・プロセッサ１２４、コントローラ／プロセッサ１３０、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）１３２、ＮＡＮＤフラッシュ・コントローラ１４０、およびシンクロナス・ダイナミックＲＡＭ（ＳＤＲＡＭ）コントローラ１４２を含んでいる。これら全ては、１または複数のバス１３４を経由して互いに通信することができる。モデム・プロセッサ１２２は、データ送信および受信のための処理（例えば、符合化、変調、復調、復号等）を行なう。アプリケーション・プロセッサ１２４は、オーディオ、ビデオ、グラフィクス、および／または、例えばハッシュ・アルゴリズムおよびベリファイ・アルゴリズムのようなその他のアプリケーションのための処理を実行することができる。コントローラ／プロセッサ１３０は、デジタル・セクション１２０内の様々なユニットの動作を指図することができる。ＳＲＡＭ１３２は、デジタル・セクション１２０内のコントローラおよびプロセッサによって使用されるプログラム・コードおよびデータを格納する。
【００１５】
ＮＡＮＤフラッシュ・コントローラ１４０は、ＮＡＮＤフラッシュ１５０とデジタル・セクション１２０との間のデータの転送を容易にする。ＳＤＲＡＭコントローラ１４２は、ＳＤＲＡＭ１５２とデジタル・セクション１２０との間のデータの転送を容易にする。コントローラ／プロセッサ１３０はまた、ＮＡＮＤフラッシュ・コントローラ１４０および／またはＳＤＲＡＭコントローラ１４２の動作を指図することもできる。コントローラ／プロセッサ１３０は、ＮＡＮＤフラッシュ１５０からＳＲＡＭ１３２へのデータ転送を指示し、更に、例えば、無線デバイス１００に電源が投入された場合、ブート・アップ中のＮＡＮＤフラッシュ１５０とＳＤＲＡＭ１５２との間のデータ伝送を容易にする。
【００１６】
ＮＡＮＤフラッシュ１５０およびＳＤＲＡＭ１５２は、デジタル・セクション１２０の外側にあるメモリ・デバイスであり、デジタル・セクション１２０内の処理ユニットのための大容量記憶装置を提供する。ＮＡＮＤフラッシュ１５０は、デジタル・セクション１２０によって使用されるプログラム・コードおよびデータのための不揮発性記憶装置を提供する。ＮＡＮＤフラッシュ１５０は、他のタイプの不揮発性メモリに置き換えることも可能である。ＳＤＲＡＭ１５２は、デジタル・セクション１２０によって使用されるプログラム・コードおよびデータのためのランダム・アクセス機能を備えた記憶装置を提供する。ＳＤＲＡＭ１５２はまた、他のタイプの揮発性メモリ（例えば、ＳＲＡＭ、ＤＲＡＭ等）、および／または不揮発性メモリ（例えば、ＮＯＲフラッシュ）と置き換えることも可能である。
【００１７】
一般に、デジタル・セクション１２０は、任意の数の処理、インタフェース、およびメモリ・ユニットを含むことができる。デジタル・セクション１２０内のコントローラおよびプロセッサは、１または複数のデジタル・シグナル・プロセッサ（ＤＳＰ）、マイクロプロセッサ、縮小された命令セット計算（ＲＩＳＣ）プロセッサ、複合命令セット計算（ＣＩＳＣ）プロセッサ等を用いて実現されうる。デジタル・セクション１２０は、１または複数の特定用途向けＩＣ（ＡＳＩＣ）および／またはその他幾つかのタイプの集積回路（ＩＣ）上に実装されうる。
【００１８】
図１に示すように、無線デバイス１００は、異なるタイプのメモリを備えたメモリ・アーキテクチャを利用することができる。ＳＲＡＭおよびＳＤＲＡＭは、一旦電源を落とされるとデータを失う揮発性メモリである。ＳＲＡＭおよびＳＤＲＡＭは、ランダム方式でアクセスされるかもしれないし、一般には、メイン・ランタイム・メモリとして使用される。フラッシュは、電源が落とされた後でもそのデータを保持することができる不揮発性メモリである。フラッシュの１タイプであるＮＡＮＤフラッシュは、大きな記憶容量と、連続したメモリ・アクセスに対する良好な速度と、低コストとを有する。しかしながら、ＮＡＮＤフラッシュは、ランダム・メモリ・アクセスとしては貧弱な性能しか持たず、一般には、一度に、（例えば、５１２バイトのような）特定のサイズを持つ１ページ単位でしかアクセスすることができない。
【００１９】
図１に示すメモリ・アーキテクチャは、ＮＡＮＤフラッシュとＳＲＡＭ／ＳＤＲＡＭとの両方を組み込んでおり、低コストで、ランダム・アクセスを有する大記憶容量を提供することができる。このメモリ・アーキテクチャの場合、プログラム・コードは、ＮＡＮＤフラッシュにパーマネントに格納されうる。電源が投入されると、無線デバイスは、ＮＡＮＤフラッシュからＳＲＡＭ／ＳＤＲＡＭへプログラム・コードを転送することを要するブートを実行する。
【００２０】
ＮＡＮＤフラッシュは、無線デバイス内のハードウェアを制御し、かつ設計された様々な機能および特徴をサポートする、様々なソフトウェア・プログラムを格納することができる。ソフトウェア・プログラム（あるいは、単に、プログラム）は、ソフトウェア・コード、ファームウェア・コード、あるいはそれらの組み合せを含みうる。ファームウェアは一般に、例えばフラッシュまたは読取専用メモリ（ＲＯＭ）のようなハードウェア・デバイスに組み込まれるプログラム・コードを称する。ソフトウェアは一般に、ファームウェアよりもより容易に修正可能なプログラム・コードを称する。
【００２１】
ＮＡＮＤフラッシュに格納されたソフトウェア・プログラムは、ブート・アップ処理を制御するブート・プログラムと、ハードウェアの動作を制御し、かつ、所望の特徴および機能をサポートする高次レイヤ・プログラムとを備えうる。ブート・プログラムはまた、ブート・コード、ブート・ローダ等と称されうる。高次レイヤ・プログラムは例えば、無線デバイス内の様々なハードウェアを初期化するハードウェア初期化プログラムと、ハードウェアと基本システムの動作の直接制御および管理に責任を持つオペレーティング・システムと、様々なアプリケーション（例えば、オーディオ、ビデオ、グラフィックス、ゲーム機等）をサポートするアプリケーション・プログラムと、および／または、その他のソフトウェア・プログラムとを含みうる。これらの様々なソフトウェア・プログラムは、互いに依存し、ブート・アップ処理中に、シーケンシャルな順番でロードされうる。
【００２２】
ソフトウェア・プログラムは、製造中にＮＡＮＤフラッシュにプログラムされ、無線デバイス等の起動中に、ＮＡＮＤフラッシュへダウンロードされうる。ソフトウェア・プログラムがＮＡＮＤフラッシュにどのようしてロードされるかに関わらず、ＮＡＮＤフラッシュに格納されたソフトウェア・プログラムが許可されているか否かを確認し、認可されたプログラムの実行を可能にし、無許可のプログラムの実行を阻止することが望ましいか必要とされる。
【００２３】
本明細書に記述された技術は、例えばＮＡＮＤフラッシュのような外部記憶デバイスからの安全なブートをサポートする。この安全なブートは、ＮＡＮＤフラッシュから取得した各プログラムをチェックし、このプログラムが実行を許可されているかをベリファイする。この安全なブートは、ＮＡＮＤフラッシュのＯＴＰ領域と暗号技術とを用いて達成されうる。
【００２４】
ＮＡＮＤフラッシュは、メイン領域およびＯＴＰ領域を含んでいる。メイン領域は、データで何度も書き込むことができるＮＡＮＤフラッシュの大きな領域である。一般に、ＯＴＰ領域は、一度だけプログラムされることが可能なＮＡＮＤフラッシュの小さな領域である。ＯＴＰ領域は、変更不可能な実際的な目的向けである。ＯＴＰ領域に格納されたデータは、パーマネントであり、修正も書き換えも容易にできない。ＯＴＰ領域およびメイン領域の両方からのデータは、容易にアクセスされ取得されうる。
【００２５】
図２Ａおよび図２Ｂは、安全なハッシュ機能を用いて、ブート・コードと、ルート公開鍵ｒ（後述する）とを認証する処理の実施形態を示す。図２Ａは、例えば無線デバイスの製造者のようなソース・エンティティにおいて実行される処理を示す。図２Ａに示す実施形態の場合、ブート・コードおよびルート公開鍵ｒは、安全なハッシュ機能２１０によってハッシュされる入力メッセージを生成するために使用され、ダイジェストが生成される。安全なハッシュ機能２１０への入力メッセージは、任意の長さとすることができ、出力されるダイジェストは、使用に応じて選択されたハッシュ・アルゴリズムによって決定された固定長さを有する準ランダムなビット文字列である。安全なハッシュ機能２１０は、ＳＨＡ−１（安全なハッシュ・アルゴリズム）、ＳＨＡ−２（ＳＨＡ−２２４、ＳＨＡ−２５６、ＳＨＡ−３８４、およびＳＨＡ−５１２を含む）、ＭＤ−４（メッセージ・ダイジェスト）、ＭＤ−５、または、当該技術で既知のその他の幾つかの安全なハッシュ・アルゴリズムを実施することができる。安全なハッシュ・アルゴリズムは、メッセージおよびそのダイジェスト間の機能が不可逆であり、同じダイジェストへマップする２つのメッセージの可能性が非常に低くなるような暗号特性を有する。図２Ａに示す実施形態の場合、ブート・コードおよびルート公開鍵ｒが、ＮＡＮＤフラッシュのメイン領域内に格納され、安全なハッシュ・アルゴリズムが、ＮＡＮＤフラッシュのＯＴＰ領域内に格納される。他の実施形態では、ルート公開鍵ｒおよび／またはブート・コードが、ＮＡＮＤフラッシュのＯＴＰ領域に格納されうる。
【００２６】
図２Ｂは、ブート・コードおよびルート公開鍵ｒを認証するために無線デバイスにおいて実行される処理を示す。ブート・コードおよびルート公開鍵ｒは、ＮＡＮＤフラッシュから取得され、安全なハッシュ機能２２０によってハッシュされてダイジェストが生成される。安全なハッシュ機能２２０は、ソース・エンティティにおいて、安全なハッシュ機能２１０によって使用されているものと同じハッシュ・アルゴリズムを実施する。この安全なハッシュ・アルゴリズムは、無線デバイス（図２Ｂに図示せず）に常駐しているか、あるいは、ＮＡＮＤフラッシュ（図２Ｂに示す）のＯＴＰ領域から取得されうる。この安全なハッシュ・アルゴリズムは、ＡＳＩＣ１２０内のプロセッサによって実行されるコードの形式で格納されることもできる。比較ユニット２２２は、ＮＡＮＤフラッシュのＯＴＰ領域に格納されたダイジェストと、安全なハッシュ機能２２０によって生成されたダイジェストとを受け取り、格納されたダイジェストを、生成されたダイジェストと比較し、これら２つのダイジェストが一致する場合、ブート・コードおよびルート公開鍵ｒが認証されていると宣言する。ＯＴＰ領域に格納されたダイジェストは、書き換えることも、交換することも容易にはできない。安全なハッシュ・アルゴリズムの暗号特性は、ルート公開鍵ｒとブート・コードの別の組み合わせが、ＯＴＰ領域に格納された同じダイジェストへマップする確率が非常に小さいことを保証する。従って、サード・パーティによるブート・コードあるいはルート公開鍵ｒの何れかを用いた何れの書き換えも、生成されたダイジェストと、格納されたダイジェストとの不一致によって容易に検出される。
【００２７】
図３Ａおよび図３Ｂは、デジタル署名を用いて、ソフトウェア・プログラムｘを認証する処理の実施形態を示す。ソフトウェア・プログラムｘは、ブート・コードあるいは高次レベル・プログラムでありうる。この実施形態は、以下のように２セットからなる暗号鍵を使用する。（１）ソフトウェア・プログラムｘに署名し、認証するための秘密鍵と公開鍵とのセット。これらは、秘密鍵ｘおよび公開鍵ｘと呼ばれる。（２）ソース・エンティティを識別し、認証するための秘密鍵と公開鍵とのセット。これらは、ルート秘密鍵および公開鍵ｒと呼ばれる。ルート秘密鍵ｒおよび秘密鍵ｘは秘密であり、ソース・エンティティにしか知られていない。ルート公開鍵ｒは、無線デバイスに利用可能になり、ルート秘密鍵で生成された署名をベリファイするために使用される。公開鍵ｘは、秘密鍵ｘで生成された署名をベリファイするために使用される。
【００２８】
図３Ａは、ソース・エンティティにおいて実行される処理を示す。ソフトウェア・プログラムｘは、ダイジェストｘと呼ばれるダイジェストを生成するために、安全なハッシュ機能３１０によってハッシュされる。安全なハッシュ機能３１０は、ＳＨＡ−１、ＳＨＡ−２、ＭＤ−５、あるいはその他の幾つかの安全なハッシュ・アルゴリズムを実施することができる。署名機能３１２は、秘密鍵ｘを使用して、ダイジェストｘ上に署名を生成する。この署名は署名ｘと呼ばれる。署名機能３１２は、ＲＳＡ（Ｒｉｖｅｓｔ、Ｓｈａｍｉｒ、およびＡｄｌｅｍａｎ）アルゴリズム、デジタル署名規格（ＤＳＳ）アルゴリズム、あるいは当該技術において既知のその他幾つかの暗号（デジタル署名または暗号化）アルゴリズムを実施することができる。ソフトウェア・プログラムｘおよび署名ｘは、ＮＡＮＤフラッシュのメイン領域内に格納されうる。
【００２９】
署名機能３１４は、ルート秘密鍵ｒを用いて、公開鍵ｒ上の署名と、恐らくは、その他の情報を生成する。この署名は署名ｃｘと呼ばれ、ソース・エンティティを認証するために使用される。署名機能３１４は、ＲＳＡ、ＤＳＳ、あるいはその他の幾つかの暗号アルゴリズムを実施しうる。署名機能３１２および３１４は、同一あるいは異なる暗号アルゴリズムを実施しうる。証明書生成器３１６は、署名ｃｘ、公開鍵ｘ、および、例えば、ソース・エンティティのための識別子や、使用のために選択される暗号アルゴリズムや、証明書の満了日時等のようなその他の情報を含む証明書を生成する。この証明書は証明書ｘと呼ばれ、Ｘ．５０９証明書として、あるいは当該技術で既知のその他幾つかのフォーマットで格納されうる。証明書ｘは、ＮＡＮＤフラッシュのメイン領域に格納されうる。ルート公開鍵ｒは、ＮＡＮＤフラッシュ内の何れの場所にも格納されうる。あるいは、例えば無線デバイス内に格納され、他の方式の無線デバイスへ利用可能とされうる。
【００３０】
図３Ｂは、ソフトウェア・プログラムｘを認証するために無線デバイスにおいて実行される処理を示す。ルート公開鍵ｒおよび証明書ｘは、ＮＡＮＤフラッシュから取得される。ベリファイ機能３２０は、証明書ｘから署名ｃｘおよび公開鍵ｘを抽出し、ルート公開鍵ｒを用いて署名ｃｘを確認し、署名ｃｘがベリファイされた場合、公開鍵ｘを提供する。図２Ａおよび図２Ｂにおいて示される実施形態の場合、ルート公開鍵ｒがＮＡＮＤフラッシュに格納され、ＮＡＮＤフラッシュのＯＴＰ領域に格納されたダイジェストに対し、安全なハッシュ・アルゴリズムによってベリファイされる。従って、サード・パーティによる証明書ｘを用いた何れの書き換えも、署名ｃｘが検証されないことによって、容易に検出される。
【００３１】
ソフトウェア・プログラムｘは、ＮＡＮＤフラッシュから取得され、安全なハッシュ機能３２２によってハッシュされて、ダイジェストが生成される。これは、ダイジェストｘ’と称される。安全なハッシュ機能３２２は、ソース・エンティティにおいて、安全なハッシュ機能３１０によって使用されているものと同じ安全なハッシュ・アルゴリズムを実施する。ベリファイ機能３２４は、安全なハッシュ機能３２２からダイジェストｘ’を、ＮＡＮＤフラッシュから署名ｘを、ベリファイ機能３２０から公開鍵ｘを受け取る。ベリファイ機能３２４は、公開鍵ｘおよびダイジェストｘ’を用いて署名をベリファイし、署名ｘがベリファイされているか否かを示す。公開鍵ｘはルート公開鍵ｒを用いて認証される。一方、ルート公開鍵ｒは、ＮＡＮＤフラッシュのＯＴＰ領域に格納されたブート・コード・ダイジェストによって認証される。従って、サード・パーティによる、ソフトウェア・プログラムｘおよび／または署名ｘを用いたあらゆる書き換えが、署名ｘのベリファイされていないことによって容易に検出されうる。
【００３２】
図３Ａおよび図３Ｂに示す実施形態によって、１つのルート公開鍵ｒによって、任意数のソフトウェア・プログラムを認証できるようになる。署名は、そのプログラムのための秘密鍵を用いて、各ソフトウェア・プログラムについて生成されうる。そして、証明書は、ルート秘密鍵ｒを用いて、そのプログラムについて生成されうる。ルート公開鍵ｒは、各ソフトウェア・プログラムの証明書を認証するために使用することができる。また、認証された証明書内の公開鍵は、プログラムの署名を認証するために使用することができる。
【００３３】
図４は、証明書を用いたＮ個の認証レベルの実施形態を示す、ここで、Ｎは任意の正の値でありうる。この実施形態の場合、証明書１は、（１）ルート秘密鍵ｒで生成される署名ｃ１、（２）公開鍵１、（３）図４に示されていないその他の情報を含む。一般に、ｎ＝１，・・・，Ｎの場合、証明書ｎは、（１）秘密鍵ｎ−１を用いて生成される証明書ｃｎ、（２）公開鍵ｎ、および（３）その他の情報を含む。秘密鍵０は、ルート秘密鍵ｒである。公開鍵Ｎは、認証されるソフトウェア・プログラムｘのための公開鍵ｘでありうる。第１の認証レベルの場合、証明書１が、ルート公開鍵ｒを用いて署名ｃ１をベリファイすることによって認証される。署名ｃ１がベリファイされると、次の各認証レベルｎのために、前のレベルからの公開鍵を用いて署名ｃｎをベリファイすることによって、そのレベルの証明書ｎが認証される。Ｎレベルすべてが認証された場合、図３Ｂについて上述したように、ソフトウェア・プログラムｘを認証するために、公開鍵ｘが使用される。
【００３４】
多層暗号鍵階層のために、複数のレベルからなる認証を用いることができる。証明書１は、信用機関の役割をするルート認証機関（ＣＡ）を認証するために使用することができる。ルート認証機関の秘密鍵ｒは、信用の基本であるので、これらの秘密鍵を保護するためのステップが講じられ、その使用が制限される。更なる中間的な証明機関のレベルを生成することが可能であるが、これはより「消耗的」である。体系的に、多層暗号鍵階層は便利である。なぜなら、証明書のベリファイ・チェーンが、ソフトウェア・プログラムを生成する体系によって生成されるからである。従って、無線デバイスへロードされたソフトウェア・プログラムの一部は、異なる無線デバイス製造者によって個別にカスタマイズされうる。
【００３５】
別の実施形態では、ソフトウェア・プログラム（ブート・コードあるいはより高次レベルのプログラムでありうる）が、秘密鍵を用いて署名され、対応する公開鍵が、ＮＡＮＤフラッシュのＯＴＰ領域内に格納される。
【００３６】
一般に、ソフトウェア・プログラムは、安全なハッシュ技術、デジタル署名技術、暗号化技術、および／または、その他の暗号技術を使用して認証されうる。認証は、ＮＡＮＤフラッシュのＯＴＰ領域に格納された安全なデータに基づいて達成される。安全であると考えられたデータは、完全に保護される。すなわち、容易に変更されたり、書き換えられない。安全なデータはまた、１または複数のダイジェスト、署名、証明書、暗号鍵等、またはこれら任意の組み合わせを含むことができる。
【００３７】
図５は、ＯＴＰ領域およびメイン領域を含むＮＡＮＤフラッシュ１５０の実施形態を示す。図５に示す実施形態の場合、ＯＴＰ領域５１０は、無線デバイスの識別子（電話ＩＤ）、ブート・コードに使用される安全なハッシュ・アルゴリズム、および、ブート・コードおよびルート公開鍵のためにソース・エンティティによって生成されたハッシュ・ダイジェストを格納する。電話ＩＤは、電子製造番号（ＥＳＮ）、移動機器識別子（ＭＥＩＤ）、あるいは無線デバイスに特有のその他の幾つかのタイプの識別子でありうる。電話ＩＤは、ＮＡＮＤフラッシュが適切な無線デバイスのために使用されることを保証するために使用することができる。安全なハッシュ・アルゴリズムは、ＮＡＮＤフラッシュのＯＴＰ領域に格納され、ブート・アップ処理中に、デジタル・セクション１２０によって使用されるために取得される。あるいは、安全なハッシュ・アルゴリズムは、デジタル・セクション１２０内に常駐しており、ＯＴＰ領域内に格納されない。ブート・コード・ダイジェストは、図２Ａに示すように、ブート・コードおよびルート公開鍵に基づいて生成されうる。ルート公開鍵は、ソース・エンティティによって生成された証明書を認証するために使用され、その有効性をチェックするためにブート中に安全なハッシュ・アルゴリズムによってベリファイされる。あるいは、ルート公開鍵は、例えば、デジタル・セクション１２０内のように、無線デバイス内に格納されうる。
【００３８】
ブート・コードは、ＮＡＮＤフラッシュのメイン領域のセクション５２２に格納される。ブート・コードは一般に、ロードされる最初のプログラムであり、ブート・アップ処理中に、安全なデータとハッシュ・アルゴリズムとが、ブート・コードの有効性をベリファイした後に実行される。ブート・コードは、無線デバイスを初期化し、設定する。その後、より高次レベルのソフトウェア・プログラムを取得し、ベリファイし、実行する。ソフトウェア・プログラムＡは、ＮＡＮＤフラッシュのメイン領域のセクション５２４に格納される。署名および証明書は、（例えば、図３Ａに示すような）ソフトウェア・プログラムＡのために生成され、セクション５２４内に署名Ａおよび証明書Ａとしてそれぞれ格納される。ソフトウェア・プログラムＡは、２番目にロードされるプログラムであり、例えば、ブート・コードが認証された場合、ブート・アップ処理中に実行される。ソフトウェア・プログラムＢは、ＮＡＮＤフラッシュのメイン領域のセクション５２６に格納される。署名および証明書は、（例えば、図３Ｂに示すような）ソフトウェア・プログラムＢのために生成され、セクション５２６内に署名Ｂおよび証明書Ｂとしてそれぞれ格納される。ソフトウェア・プログラムＢは、３番目にロードされるプログラムであり、例えば、ソフトウェア・プログラムＡが認証された場合、ブート・アップ処理中に実行される。他のソフトウェア・プログラムもまたＮＡＮＤフラッシュに格納されうる。各ソフトウェア・プログラムは、そのソフトウェア・プログラムを認証するために使用される署名および証明書を含むことができる。
【００３９】
一般に、ＮＡＮＤフラッシュは、任意数のソフトウェア・プログラムと、任意のタイプのソフトウェア・プログラムとを格納することができる。これらソフトウェア・プログラムは、任意の順番でロードされ実行されることができる。実施形態では、これらソフトウェア・プログラムは、例えば、最初にブート・コード、次にソフトウェア・プログラムＡ、その次にソフトウェア・プログラムＢ等のように、階層的な順番またはシーケンシャルな順番でロードされる。このシーケンシャルなローディングによって、１つのプログラムが、別のプログラムを認証することが可能となる。例えば、ソフトウェア・プログラムＡは、無線デバイス内のハードウェアを初期化する基本機能を含みうる。ソフトウェア・プログラムＢは、ソフトウェア・プログラムＡによって提供される基本機能に依存するカスタム機能および特徴を含むことができる。ソフトウェア・プログラムＡは、無線デバイスの設計者によって生成され、ソフトウェア・プログラムＢは、ベンダまたはＯＥＭによって生成され、無線デバイスにカスタマイズされる。
【００４０】
図６は、ＮＡＮＤフラッシュから安全なブートを行なう処理６００の実施形態を示す。処理６００は、例えば、無線デバイスの電源が投入された場合に実行される。先ず、安全なデータが、ＮＡＮＤフラッシュのＯＴＰ領域から、デジタル・セクション内のＳＲＡＭにロードされる（ブロック６１２）。この安全なデータは、ＮＡＮＤフラッシュのコンテンツを認証するために使用される何れのデータをも含みうる。図５に示す実施形態の場合、安全なデータは、ブート・コード・ダイジェストと、安全なハッシュ・アルゴリズムとを含む。この安全なデータは、他の実施形態については、他のタイプのデータを含みうる。
【００４１】
次に、ブート・コードが、ＮＡＮＤフラッシュから、ＳＲＡＭおよび／またはＳＤＲＡＭへロードされる（ブロック６１４）。ブート・コードのために、ソース・エンティティで使用されたものと同じ安全なハッシュ・アルゴリズムを用いて、ロードされたブート・コードに基づいてハッシュ・ダイジェストが生成される。ＮＡＮＤフラッシュは、ビット誤りを持つ傾向があるので、データ誤りの確率を低減し、かつ、ＮＡＮＤフラッシュからデータをロードした場合のデータ完全性を保証するために、誤り訂正コード（ＥＣＣ）および／または誤り検知コードが使用される。
【００４２】
ロードされたブート・コードから生成されたハッシュ・ダイジェストは、その後、ＯＴＰ領域に格納されたハッシュ・ダイジェストと比較される（ブロック６１６）。生成されたハッシュ・ダイジェストが、格納されたハッシュ・ダイジェストと一致しないとブロック６１８で判定された場合、誤りが宣言され（ブロック６２０）、ブート・アップ処理が終了する。ブロック６２０では、誤りメッセージによってユーザに通知されるか、および／または適切な動作が講じられる。
【００４３】
生成されたダイジェストと、格納されたハッシュ・ダイジェストとが一致し、ブロック６１８の答えが「Ｙｅｓ」であれば、ブート・コードは認証される。ブート・コードは、実行され、残りのブート・アップ処理の制御、および／または指示を行うことができる。例えば、ブート・コードは、ＮＡＮＤフラッシュからＳＤＲＡＭへと残りのソフトウェア・プログラムを直接的にロードするように、ＮＡＮＤフラッシュ・コントローラ１４０およびＳＤＲＡＭコントローラ１４２を起動する。
【００４４】
次にロードされ認証されるソフトウェア・プログラムに対し、（例えば、図５のＮＡＮＤフラッシュ１５０についてｘ＝Ａのような）インデクスｘが設定される（ブロック６２２）。次に、ＮＡＮＤフラッシュからＳＤＲＡＭへソフトウェア・プログラムｘがロードされる（ブロック６２４）。ソフトウェア・プログラムｘのための証明書ｘおよび署名ｘもＮＡＮＤフラッシュからロードされる。証明書ｘは、図３Ｂおよび図４に関して上述したように、例えばルート公開鍵のような適切な公開鍵を用いて認証される（ブロック６２６）。証明書ｘが認証された場合、署名ｘは、図３Ｂおよび図４について上述したように、ロードされたソフトウェア・プログラムｘと、証明書ｘから得られた公開鍵ｘとを用いてベリファイされる（６２８）。
【００４５】
署名がベリファイされたかが判定される（ブロック６３０）。答えが「Ｎｏ」である場合、誤りが宣言される。および／または、その他の動作が講じられ（ブロック６２０）、ブート・アップ処理が終了する。一方、署名ｘがベリファイされると、ソフトウェア・プログラムｘは、実行を許可される。ソフトウェア・プログラムｘおよび／またはブート・コードは、次のソフトウェア・プログラムをロードすることができる。全てのソフトウェア・プログラムがロードされたかが判定される（ブロック６３２）。その答えが「Ｎｏ」である場合、処理はブロック６２２に戻り、次のソフトウェア・プログラムがロードされる。一方、全てのソフトウェア・プログラムがロードされると、処理が終了する。
【００４６】
図６に示す実施形態の場合、ソフトウェア・プログラムが、階層順にロードされうる。ソフトウェア・プログラムはそれぞれ、暗号データ（例えば、署名、証明書、および／または、そのソフトウェア・プログラムのために格納された暗号鍵）に基づいて、前のプログラムによって認証されうる。この認証処理は、ＯＴＰ領域に格納された安全なデータを利用することができる。この認証処理は、安全なデータ（例えば、ＯＴＰ領域に格納された安全なデータの一部であるか、あるいは、それによって認証されたルート公開鍵）から始まり、任意の数のレベルを連鎖することができる。認証された各プログラムは実行を許可され、無線デバイス内の適切なハードウェアを初期化することができる。認証された各プログラムはまた、その他の高次レベルのプログラムを認証するために信頼されうる。ルートに戻って認証されたプログラムは、全て信頼することができる。
【００４７】
ロードおよび認証処理は、全ての適切なプログラムがＮＡＮＤフラッシュからＳＤＲＡＭへロードされるまで続けられる。オペレーティング・システムは、十分な数のプログラムがロードされると、全てのプログラムがＳＤＲＡＭへロードされるまで待つ必要なく、処理を開始することができる。最後のプログラムがロードされた後、無線デバイスは完全に機能するようになる。
【００４８】
ブート・コードのためのハッシュ・ダイジェストは、図２Ａに示すように、ブート・コード全体に基づいて生成される。ソフトウェア・プログラムｘの署名は、ダイジェストｘに基づいて生成される。ダイジェストｘは、図３Ａに示すように、ソフトウェア・プログラム全体に基づいて生成される。（ブート・コードまたは高次レベル・プログラムでありうる）与えられたソフトウェア・プログラムの認証は、ソフトウェア・プログラムがＮＡＮＤフラッシュからロードされると、進行中のハッシュ計算を実行することによって促進されうる。
【００４９】
データは、ＮＡＮＤフラッシュから、一度に１ページのように、（例えば５１２バイトのような）特定のサイズを持つページ単位で読み取られる。ＮＡＮＤフラッシュからデータのページを読み取るために、まずＮＡＮＤフラッシュが起動され、読取コマンドがＮＡＮＤフラッシュへ送られ、ページ・アドレスがＮＡＮＤフラッシュへ送られる。その後、選択されたデータのページが、ＮＡＮＤアレイから、ＮＡＮＤフラッシュ内のＮＡＮＤバッファへ転送される。このページ転送は、ある程度の時間を要する。ページ転送が終了すると、ＮＡＮＤフラッシュは、Ｒｅａｄｙ／Ｂｕｓｙ信号を論理高にすることによって、レディ状態であることを示す。この時点では、リード・クロックを提供することによって、データのページが、ＮＡＮＤフラッシュから読み取られる。
【００５０】
実施形態では、一度に、データのうちの１ページをハッシュすることによって、ハッシュ・ダイジェストが生成される。データのページがＮＡＮＤフラッシュからロードされた後、次のページを読み取るコマンドが、ＮＡＮＤフラッシュへ送られる。ＮＡＮＤフラッシュが、ＮＡＮＤフラッシュのセル・アレイから、ＮＡＮＤフラッシュの内部バッファへと次ページを転送している間、（例えば、図１のプロセッサ１２４によって、）丁度ロードされたページのためのハッシュ・ダイジェストが計算される。ＮＡＮＤフラッシュから最後のページがロードされると、この最後のページのためにハッシュ計算が実行され、その後直ちにハッシュ・ダイジェストが生成される。ソフトウェア・プログラムは多くのページに格納されうるので、ページがロードされる毎にハッシュ・ダイジェストを計算することは、ハッシュを実行する時間を実質的に短縮することができる。これは、ブート・アップ処理を短縮することができる。
【００５１】
明瞭さのために、当該安全なブート技術は、ＯＴＰ領域に格納された安全なデータを用いて記述された。一般に、安全なデータは、記憶デバイス内の任意の安全な領域内に格納されうる。安全な領域は、非書込可能であり容易に変更も修正もされない領域である。例えば、安全なデータは、ＯＴＰ領域、ワン・タイム書込（ＯＴＷ）領域、読取専用（ＲＯＭ）領域、領域への書込を阻止するロック制御を備えたロック可能領域、または、その他の非書込可能領域内に格納されうる。
【００５２】
明瞭さのために、当該安全なブート技術は、ＯＴＰ領域を有するＮＡＮＤフラッシュについて記述された。ＮＡＮＤフラッシュは、例えば、大記憶容量、低コスト、良好な消去およびプログラム特性、連続アクセスに対する良好なデータ伝送速度等のような様々な好ましい機能を有する。これらの技術はまた、他のタイプのメモリ・デバイス（例えば、ＮＯＲフラッシュ）、および他のタイプの記憶デバイス（例えば、メモリ・カード、ハード・ディスク、コンパクト・ディスク等）のためにも使用することができる。これら記憶デバイスの全てについて、非書込可能（例えば、ＯＴＰ）領域に格納された安全なデータは、十分に信頼することができ、記憶デバイスのメイン領域に格納されたソフトウェア・プログラムを認証するための安全なルートとして使用することができる。
【００５３】
この安全なブート技術は、１または複数の無線広域ネットワーク（ＷＷＡＮ）、無線ローカル・エリア・ネットワーク（ＷＬＡＮ）、無線・パーソナル・エリア・ネットワーク（ＷＰＡＮ）、および／またはその他の無線ネットワークのような無線デバイスのためにも使用することができる。ＷＷＡＮは、符号分割多元接続（ＣＤＭＡ）ネットワーク、グローバル移動体通信システム（ＧＳＭ）ネットワーク、ユニバーサル・モバイル・テレコミュニケーション・システム（ＵＭＴＳ）ネットワーク等でありうる。ＣＤＭＡネットワークは、ＩＳ−９５、ＩＳ−２０００、ＩＳ−８５６等をカバーするｃｄｍａ２０００を実施する。ＵＭＴＳネットワークは、広帯域ＣＤＭＡ（Ｗ−ＣＤＭＡ）を実施する。Ｗ−ＣＤＭＡおよびＧＳＭは、「第３世代パートナシップ・プロジェクト」（３ＧＰＰ）と命名されたコンソーシアムからのドキュメントに記載されている。ｃｄｍａ２０００は、「第３世代パートナシップ・プロジェクト２」（３ＧＰＰ２）と命名されたコンソーシアムからのドキュメントに記載されている。３ＧＰＰと３ＧＰＰ２のドキュメントは公的に利用可能である。安全なブート技術はまた、他の電子デバイスにも使用されうる。
【００５４】
図７は、電子デバイス内のソフトウェア・プログラムを認証する処理７００の実施形態を示す。安全なデータは、外部メモリ・デバイスの非書込可能領域（例えば、ＮＡＮＤフラッシュのＯＴＰ領域）から取得される（ブロック７１０）。第１のプログラム（例えばブート・プログラム）は、外部メモリ・デバイスの書込可能領域またはメイン領域から取得され（ブロック７１２）、安全なデータに基づいて認証される（ブロック７１４）。例えば、安全なデータは、実行されるハッシュ・アルゴリズムを備えた第１のハッシュ・ダイジェストを備える。その後、第１のプログラムは、（１）第１のプログラムをハッシュして第２のハッシュ・ダイジェストを生成し、（２）第１のハッシュ・ダイジェストと第２のハッシュ・ダイジェストとを比較することによって、認証される。第１のプログラムは、もしも認証されれば実行可能となる（ブロック７１６）。
【００５５】
第２のプログラムは、外部メモリ・デバイスの書込可能領域またはメイン領域から取得され（ブロック７２２）、安全なデータに基づいて認証される（ブロック７２４）。例えば、安全なデータは、暗号鍵を含みうる。その後、第２のプログラムは、（１）第１の署名および公開鍵を含む証明書を、外部メモリ・デバイスの書込可能領域または非書込可能領域の何れかから取得し、（２）第２のプログラムのための第２の署名を、書込可能領域または非書込可能領域の何れかから取得し、（３）暗号鍵を用いて第１の署名をベリファイして、証明書を認証し、（４）証明書からの公開鍵を用いて第２の署名をベリファイして、第２のプログラムを認証することによって認証されうる。第２のプログラムは、もしも認証されれば実行可能となる（ブロック７２６）。更なるプログラムも取得され、認証されうる。
【００５６】
本明細書で記述された安全なブート技術は、様々な手段によって実施されうる。例えば、これらの技術は、ハードウェア、ファームウェア、ソフトウェア、あるいはそれらの組み合せで実現されうる。ハードウェアで実現する場合、安全なブートを実行するために使用される処理ユニットは、１または複数のＡＳＩＣ、ＤＳＰ、デジタル信号処理デバイス（ＤＳＰＤ）、プログラム可能論理回路（ＰＬＤ）、フィールド・プログラム可能ゲート・アレー（ＦＰＧＡ）、プロセッサ、コントローラ、マイクロ・コントローラ、マイクロプロセッサ、電子デバイス、本明細書に記載の機能を実行するために設計されたその他の電子ユニット、またはこれらの組み合わせ内で実現されうる。
【００５７】
これら技術はまた、本明細書に記載の機能を実行するファームウェア・モジュールおよび／またはソフトウェア・モジュールを用いても実現される。これらモジュールは、（例えば、図１におけるＳＲＡＭ１３２、ＮＡＮＤフラッシュ１５０、および／またはＳＤＲＡＭ１５２のような）メモリ内に格納され、プロセッサ（例えば、プロセッサ１３０）によって実行されうる。
【００５８】
開示された実施形態の前記記載は、当該技術分野における当業者が、本発明を作製または利用できるように適用されている。これら実施形態に対する様々な変形も、当業者には容易に明らかであって、本明細書で定められた一般原理は、本発明の精神または範囲から逸脱することなくその他の実施形態にも適用可能であろう。従って、本発明は、本明細書で示された実施形態に制限されるようには意図されず、本明細書で開示された原理および新規の特徴と一致する最も広いスコープを与えられることになっている。
【図面の簡単な説明】
【００５９】
【図１】図１は、無線通信デバイスのブロック図を示す。
【図２Ａ】図２Ａは、安全なハッシュ機能を使用して、ブート・プログラムを認証する処理を示す。
【図２Ｂ】図２Ｂは、安全なハッシュ機能を使用して、ブート・プログラムを認証する処理を示す。
【図３Ａ】図３Ａは、デジタル署名を使用して、ソフトウェア・プログラムを認証する処理を示す。
【図３Ｂ】図３Ｂは、デジタル署名を使用して、ソフトウェア・プログラムを認証する処理を示す。
【図４】図４は、証明書を用いた多元レベルの認証を示す。
【図５】図５は、ＯＴＰ領域およびメイン領域を備えたＮＡＮＤフラッシュを示す。
【図６】図６は、ＮＡＮＤフラッシュから安全なブートを行う処理を示す。
【図７】図７は、ソフトウェア・プログラムを認証する処理を示す。
【図１】
2009526333.tif 000003
【図２Ａ】
2009526333.tif 000004
【図２Ｂ】
2009526333.tif 000005
【図３Ａ】
2009526333.tif 000006
【図３Ｂ】
2009526333.tif 000007
【図４】
2009526333.tif 000008
【図５】
2009526333.tif 000009
【図６】
2009526333.tif 000010
【図７】
2009526333.tif 000011
【国際調査報告】
2009526333.tif 000012
2009526333.tif 000013
2009526333.tif 000014
2009526333.tif 000015
2009526333.tif 000016