(57)【特許請求の範囲】
【請求項１】
ハードウェアにおけるソフトウェアの実行が許可されているか否かを判定する方法であって、
証明書機関において、前記ソフトウェアの少なくとも一つのバージョンと、前記ハードウェアの少なくとも一つのプラットフォームとの間の許可された関連付けを定義したコンフィギュレーションテーブルを用いて、前記ソフトウェアと前記ハードウェアとが関連付けられているかを、前記ハードウェアを備えるデバイスが確認することと、
前記ソフトウェアと前記ハードウェアとが関連付けられていると確認された場合、前記ソフトウェアに関連する情報、前記ソフトウェアを識別する第一の識別子、及び前記ハードウェアを識別する第二の識別子に対して、第一の秘密鍵を用いて暗号化することにより生成された第一の署名を、前記デバイスが取得することと、
前記第一の署名に使用された第一の秘密鍵に対応する第一の公開鍵を含む証明書であって、前記証明書機関を認証するための第二の秘密鍵を用いて暗号化されることにより生成された証明書を前記デバイスが取得することと、
前記デバイスが、前記第二の秘密鍵に対応する第二の公開鍵を用いて前記証明書を認証することと、
前記デバイスが、前記証明書に含まれた第一の公開鍵を用いて前記第一の署名を認証することと、
前記証明書と前記第一の署名とが認証された場合には、前記デバイスが、前記ハードウェアにおける前記ソフトウェアの実行が許可されていると判定することと
を備える方法。
【請求項２】
請求項１に記載の方法において、前記第一の署名を認証することは、
前記ソフトウェアに関連する情報、第一の識別子、及び第二の識別子をハッシュして第一のダイジェストを得ることと、
前記第一の公開鍵を用いて前記第一の署名を復号して第二のダイジェストを得ることと、
前記第一のダイジェストと前記第二のダイジェストとを比較し、一致する場合には、前記第一の署名を認証することと
を含む方法。
【請求項３】
請求項２に記載の方法において、前記第一の署名を認証することはさらに、
前記ソフトウェアをハッシュし、前記ソフトウェアに関連する情報として使用される第三のダイジェストを得ることを含む方法。
【請求項４】
請求項１に記載の方法において、前記第一の署名は、ハッシュベースのメッセージ認証コード（ＨＭＡＣ：Hash-based Message Authentication Code）を含む暗号スキームを用いて生成される方法。
【請求項５】
請求項１に記載の方法において、前記第一の識別子は、ソフトウェアリリースバージョン番号である方法。
【請求項６】
請求項１に記載の方法において、前記ハードウェアは、集積回路である方法。
【請求項７】
請求項１に記載の方法において、前記第二の識別子は、ハードウェアシリアル番号又は部品番号である方法。
【請求項８】
ハードウェアにおけるソフトウェアの実行が許可されているか否かを判定する装置であって、
第一の記憶ユニットと、
証明書機関において、前記ソフトウェアの少なくとも一つのバージョンと、前記ハードウェアの少なくとも一つのプラットフォームとの間の許可された関連付けを定義したコンフィギュレーションテーブルを用いて、前記ソフトウェアと前記ハードウェアとが関連付けられているかを確認し、
前記ソフトウェアと前記ハードウェアとが関連付けられていると確認された場合、前記ソフトウェアに関連する情報、前記ソフトウェアを識別する第一の識別子、及び前記ハードウェアを識別する第二の識別子に対して、第一の秘密鍵を用いて暗号化されて生成された第一の署名を取得し、
前記第一の署名に使用された第一の秘密鍵に対応する第一の公開鍵を含む証明書であって、前記証明書機関を認証するための第二の秘密鍵を用いて暗号化されて生成された証明書を取得し、
前記第一の記憶ユニットに格納された、前記第二の秘密鍵に対応する第二の公開鍵を用いて前記証明書を認証し、
前記証明書に含まれた第一の公開鍵を用いて前記第一の署名を認証し、
前記証明書と前記第一の署名とが認証された場合には、前記ハードウェアにおける前記ソフトウェアの実行が許可されていると判定する
プロセッサと
を備える装置。
【請求項９】
請求項８に記載の装置において、前記第一の記憶ユニットは更に、前記第二の識別子を格納するように構成され、前記プロセッサは更に、
前記ソフトウェアに関連する情報、前記第一の識別子、及び前記第一の記憶ユニットに格納された第二の識別子をハッシュして第一のダイジェストを取得し、
前記第一の公開鍵を用いて前記第一の署名を復号して第二のダイジェストを取得し、
前記第一のダイジェストと前記第二のダイジェストとを比較し、一致する場合には、前記第一の署名を認証する装置。
【請求項１０】
請求項８に記載の装置において、
前記証明書および第一の署名を認証するように前記プロセッサによって実行されるブートコードを格納する第二の記憶ユニットを更に備えた装置。
【請求項１１】
請求項１０に記載の装置において、前記第一及び第二の記憶ユニットと前記プロセッサとが集積回路内に実装される装置。
【請求項１２】
無線通信デバイス内に実装される請求項８に記載の装置。
【請求項１３】
ハードウェアにおけるソフトウェアの実行が許可されているか否かを判定する装置であって、
証明書機関において、前記ソフトウェアの少なくとも一つのバージョンと、前記ハードウェアの少なくとも一つのプラットフォームとの間の許可された関連付けを定義したコンフィギュレーションテーブルを用いて、前記ソフトウェアと前記ハードウェアとが関連付けられているかを確認する手段と、
前記確認する手段によって、前記ソフトウェアと前記ハードウェアとが関連付けられていると確認された場合、前記ソフトウェアに関連する情報、前記ソフトウェアを識別する第一の識別子、及び前記ハードウェアを識別する第二の識別子に対して、第一の秘密鍵を用いて暗号化されて生成された第一の署名を取得する手段と、
前記第一の署名に使用された第一の秘密鍵に対応する第一の公開鍵を含む証明書であって、前記証明書機関を認証するための第二の秘密鍵を用いて暗号化されて生成された証明書を取得する手段と、
前記第一の記憶ユニットに格納された、前記第二の秘密鍵に対応する第二の公開鍵を用いて前記証明書を認証する手段と、
前記証明書に含まれた第一の公開鍵を用いて前記第一の署名を認証する手段と、
前記証明書と前記第一の署名とが認証された場合には、前記ハードウェアにおける前記ソフトウェアの実行が許可されていると判定する手段と
を備える装置。
【請求項１４】
請求項１３に記載の装置において、前記第一の署名を認証する手段は、
前記ソフトウェアに関連する情報、第一の識別子、及び第二の識別子をハッシュして第一のダイジェストを得る手段と、
前記第一の公開鍵を用いて前記第一の署名を復号して第二のダイジェストを得る手段と、
前記第一のダイジェストと前記第二のダイジェストとを比較し、一致する場合には、前記第一の署名を認証する手段と
を含む装置。
【請求項１５】
ソフトウェアをハードウェアに関連付ける方法であって、
証明書機関において、前記ソフトウェアを識別する第一の識別子を取得することと、
前記証明書機関において、前記ハードウェアを識別する第二の識別子を取得することと、
前記証明書機関において、前記ソフトウェアの少なくとも一つのバージョンと、前記ハードウェアの少なくとも一つのプラットフォームとの間の許可された関連付けを定義したコンフィギュレーションテーブルを用いて、前記ソフトウェアと前記ハードウェアとが関連付けられているかを確認することと、
前記証明書機関において、前記ソフトウェアと前記ハードウェアとが関連付けられていると確認された場合、前記ソフトウェアに関連する情報、前記第一の識別子、及び前記第二の識別子に対して、第一の秘密鍵を用いて暗号化することにより第一の署名を生成することとを備え、
前記第一の署名は、前記ハードウェアにおける前記ソフトウェアの実行が許可されているかを判定するために使用される方法。
【請求項１６】
請求項１５に記載の方法において、
前記ハードウェアを備えるデバイスにおいて、前記ソフトウェアに関連する情報、第一の識別子、及び第二の識別子をハッシュして第一のダイジェストを得ることをさらに備える方法。
【請求項１７】
請求項１５に記載の方法において、前記第一の署名は、ハッシュベースのメッセージ認証コード（ＨＭＡＣ：Hash-based Message Authentication Code）を含む暗号スキームを用いて生成される方法。
【請求項１８】
請求項１５に記載の方法において、
前記証明書機関が、第一の公開鍵と第二の署名とを含む証明書を提供することを更に備え、
前記第二の署名は、前記証明書機関を認証するための第二の秘密鍵を用いて前記第一の公開鍵に対してなされる方法。
【請求項１９】
請求項１５に記載の方法において、
前記証明書機関において、前記第一の署名を生成する前に、前記第一の署名を求める要求を、エンティティから受け取ることと、
前記証明書機関において、前記要求に応じて前記第一の署名を生成する前に、前記エンティティを認証することと
を更に備えた方法。
【請求項２０】
ソフトウェアをハードウェアに関連付ける装置であって、
前記ソフトウェアに関連する情報、前記ソフトウェアを識別する第一の識別子、及び前記ハードウェアを識別する第二の識別子を、コード生成エンティティから取得する通信ユニットと、
前記ソフトウェアの少なくとも一つのバージョンと、前記ハードウェアの少なくとも一つのプラットフォームとの間の許可された関連付けを定義したコンフィギュレーションテーブルを格納するメモリユニットと、
前記メモリユニットに格納されたコンフィギュレーションテーブルを用いて、前記ソフトウェアと前記ハードウェアとが関連付けられているかを確認し、前記ソフトウェアと前記ハードウェアとが関連付けられていると確認された場合、前記ソフトウェアに関連する情報、前記第一の識別子、及び前記第二の識別子に対して、第一の秘密鍵を用いて暗号化することにより第一の署名を生成するコントローラとを備え、
前記第一の署名は、前記ハードウェアにおける前記ソフトウェアの実行が許可されているかを判定するために使用される装置。
【請求項２１】
請求項２０に記載の装置において、前記コントローラは更に、前記第一の署名を生成する前に前記コード生成エンティティを認証する装置。
【請求項２２】
ソフトウェアをハードウェアに関連付ける装置であって、
前記ソフトウェアを識別する第一の識別子を取得する手段と、
前記ハードウェアを識別する第二の識別子を取得する手段と、
前記ソフトウェアの少なくとも一つのバージョンと、前記ハードウェアの少なくとも一つのプラットフォームとの間の許可された関連付けを定義したコンフィギュレーションテーブルを用いて、前記ソフトウェアと前記ハードウェアとが関連付けられているかを確認する手段と、
前記確認する手段によって、前記ソフトウェアと前記ハードウェアとが関連付けられていると確認された場合、前記ソフトウェアに関連する情報、前記第一の識別子、及び前記第二の識別子に対して、第一の秘密鍵を用いて暗号化することにより第一の署名を生成する手段とを備え、
前記第一の署名は、前記ハードウェアにおける前記ソフトウェアの実行が許可されているかを判定するために使用される装置。
【請求項２３】
請求項２２に記載の装置において、
前記第一の署名を求める要求をエンティティから受け取る手段と、
前記第一の署名を生成する前に、前記エンティティを認証する手段と
を更に備えた装置。
【請求項２４】
ソフトウェアをハードウェアに関連付ける方法であって、
コード生成エンティティが、前記ソフトウェアに関連する情報を提供することと、
前記コード生成エンティティが、前記ソフトウェアを識別する第一の識別子を提供することと、
前記コード生成エンティティが、前記ハードウェアを識別する第二の識別子を提供することと、
前記コード生成エンティティが、前記ソフトウェアの少なくとも一つのバージョンと、前記ハードウェアの少なくとも一つのプラットフォームとの間の許可された関連付けを定義したコンフィギュレーションテーブルを用いて、前記ソフトウェアと前記ハードウェアとが関連付けられているかを確認することと、
前記ソフトウェアと前記ハードウェアとが関連付けられていると確認された場合、前記ソフトウェアに関連する情報、前記第一の識別子、及び前記第二の識別子に対して、第一の秘密鍵を用いて暗号化することにより生成された第一の署名を、前記コード生成エンティティが受け取ることと、
前記第一の署名に使用された第一の秘密鍵に対応する第一の公開鍵を含む証明書であって、前記証明書を作成した証明書機関を認証するための第二の秘密鍵を用いて暗号化されて生成された証明書を、前記コード生成エンティティが受け取ることと、
前記コード生成エンティティが、前記ソフトウェア、前記第一の署名、及び前記証明書を含むイメージを作成することと
を備えた方法。
【請求項２５】
請求項２４に記載の方法において、
前記コード生成エンティティが、前記ソフトウェアをハッシュし、前記ソフトウェアに関連する情報として使用される第一のダイジェストを取得することを更に備えた方法。
【請求項２６】
請求項２５に記載の方法において、
前記第一の署名は、前記証明書機関において、ハッシュベースのメッセージ認証コード（ＨＭＡＣ：Hash-based Message Authentication Code）を含む暗号スキームを用いて生成され、
前記ハッシュベースのメッセージ認証コードは、第一のダイジェスト、前記第一の識別子、及び前記第二の識別子を用いて、前記第一の署名を生成するための第二のダイジェストを提供する方法。
【請求項２７】
ソフトウェアをハードウェアに関連付ける装置であって、
前記ソフトウェアに関連する情報、前記ソフトウェアを識別する第一の識別子、及び前記ハードウェアを識別する第二の識別子を提供し、
前記ソフトウェアの少なくとも一つのバージョンと、前記ハードウェアの少なくとも一つのプラットフォームとの間の許可された関連付けを定義したコンフィギュレーションテーブルを用いて、前記ソフトウェアと前記ハードウェアとが関連付けられているかを確認し、
前記ソフトウェアと前記ハードウェアとが関連付けられていると確認された場合、前記ソフトウェアに関連する情報、前記第一の識別子、及び前記第二の識別子に対して、第一の秘密鍵を用いて暗号化することにより生成された第一の署名を取得し、
前記第一の署名に使用された第一の秘密鍵に対応する第一の公開鍵を含む証明書を取得する通信ユニットと、
前記ソフトウェア、前記第一の署名、及び前記証明書を含むイメージを作成するコントローラと
を備えた装置。
【請求項２８】
請求項２７に記載の装置において、前記コントローラは更に、前記ソフトウェアをハッシュし、前記ソフトウェアに関連する情報として使用されるダイジェストを取得する装置。
【請求項２９】
ソフトウェアをハードウェアに関連付ける装置であって、
前記ソフトウェアに関連する情報を提供することと、
前記ソフトウェアを識別する第一の識別子を提供する手段と、
前記ハードウェアを識別する第二の識別子を提供する手段と、
前記ソフトウェアの少なくとも一つのバージョンと、前記ハードウェアの少なくとも一つのプラットフォームとの間の許可された関連付けを定義したコンフィギュレーションテーブルを用いて、前記ソフトウェアと前記ハードウェアとが関連付けられているかを確認する手段と、
前記ソフトウェアと前記ハードウェアとが関連付けられていると確認された場合、前記ソフトウェア、前記第一の識別子、及び前記第二の識別子に対して、第一の秘密鍵を用いて暗号化することにより生成された第一の署名を受け取る手段と、
前記第一の署名に使用された第一の秘密鍵に対応する第一の公開鍵を含む証明書を受け取る手段と、
前記ソフトウェア、前記第一の署名、及び前記証明書を含むイメージを作成する手段と
を備えた装置。
【請求項３０】
請求項２９に記載の装置において、
前記ソフトウェアをハッシュして、前記ソフトウェアに関連する情報として使用される第一のダイジェストを取得する手段を更に備えた装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、エレクトロニクスに関連し、特に、ハードウェアへソフトウェアを関連付けるための技術に関する。
【背景技術】
【０００２】
電子デバイスは、例えば無線通信、パーソナル計算等のような様々な用途のために広く利用可能である。これらデバイスは、ハードウェアがより強力になると、より多くの機能及び／又はより複雑な機能をサポートすることができる。例えば、今日における携帯電話は、無線通信を提供することができ、更に、ゲーム機器、パーソナルデジタルアシスタント（ＰＤＡ）、デジタルカメラ等のように機能するかもしれない。
【０００３】
複雑な電子デバイス（例えば携帯電話）は、一般に、ハードウェアを制御するためと、様々な設計された機能をサポートするためとにソフトウェアを必要とする。このソフトウェアは、製造中にデバイス内の非揮発性メモリ内にロードされるか、又は起動中にデバイスにダウンロードされるか、又はその両方がなされる。ソフトウェアがデバイスにどのようにロードされるかに関わらず、ロードされたソフトウェアがハードウェアのために「適切である」か否かを確かめることが望ましいか、又は確かめる必要がある。適合性は、以下に記載するような種々の要因によって定量化されうる。例えば、ロードされたソフトウェアが、製造者によって認可されたバージョンであることを確かめ、もしもそれが認可されていないバージョンであれば、このソフトウェアの実行を阻止することが望ましいであろう。
【０００４】
従って、電子デバイスのためにハードウェアにソフトウェアを関連付ける技術について、当該技術分野における必要性がある。
【非特許文献１】ＲＦＣ  ２３１５、“ＰＫＣＳ  ＃７：Cryptographic Message Syntax Version 1.5”
【非特許文献２】Federal Information Processing Standard （ＦＩＰＳ）  ＰＵＢ  １８０−１、“Secure Hash Standard”
【非特許文献３】ＲＦＣ  １３２１、“The MD5 Message-Digest Algorithm”
【非特許文献４】ＲＦＣ  ２４５９、“Internet X. 509 Public Key Infrastructure Certificate and CRL Profile”
【非特許文献５】ＦＩＰＳ  ＰＵＢ  １８６、“Digital Signature Standard (ＤＳＳ)”
【非特許文献６】ＲＦＣ  ２１０４、“ＨＭＡＣ：Keyed-Hashing for Message Authentication”
【非特許文献７】ＦＩＰＳ  ＰＵＢ  １９８、“The Keyed-Hash Message Authentication Code （ＨＭＡＣ)”
【発明の開示】
【０００５】
本出願は、２００３年４月８日に出願され、"Associating Authenticated Software with a Licensed Hardware Platform"と題された米国出願番号第６０／４６１，３４１号の利益を主張する。
【０００６】
ここでは、暗号を使ってソフトウェアをハードウェアに関連付ける技術が開示される。ソフトウェアは、ソフトウェア識別子（ＩＤ）により識別される。これは、ソフトウェアリリースバージョン番号であるかもしれない。ハードウェアは、ハードウェアＩＤにより識別される。これは、モデル番号又は部品番号であるかもしれない。
【０００７】
ソフトウェアをハードウェアに関連付けるための一つの具体的なスキームでは、先ずコードダイジェストを得るためにソフトウェアがハッシュされる。次に、コードダイジェスト、ソフトウェアＩＤ、及びハードウェアＩＤに対してコード署名が作成される。次に、ソフトウェア、ソフトウェアＩＤ、コード署名、及び証明書を用いてコードイメージが生成される。証明書は、（１）コード署名を作成した証明書機関を認証し、（２）コード署名の妥当性確認を行う、ために使用される暗号情報を含んでいる。コードイメージは、例えば携帯電話等の無線デバイスのようなデバイスに提供され、そこに格納される。
【０００８】
デバイスは、ソフトウェアを実行する前に、ハードウェア関連付けに対するソフトウェアの妥当性確認を行う。デバイスは、電源がオンされる毎に、この妥当性確認を実行しうる。この妥当性確認のために、デバイスは、先ず、証明書機関のための、デバイス内に埋め込まれた公開鍵を用いて証明書を認証する。次にこのデバイスは、（１）証明書に含まれている暗号情報、（２）コードイメージ内の情報、及び（３）デバイス内に埋め込まれたハードウェアＩＤを用いてコード署名の妥当性確認を行う。この妥当性確認は、（例えば、初めに署名の妥当性確認を行い、次に、証明書の認証を行うように）違う順序でも実行されうる。
【０００９】
本発明の種々の局面及び実施例が、以下に詳細に説明される。
【発明を実施するための最良の形態】
【００１０】
本発明の特徴及び特性は、同一符番が、全体を通じて同一部を対応して示す図面と連携した時に、以下に記述されている詳細説明からより明らかになるであろう。
【００１１】
用語「典型的（exemplary）」とは、ここでは「例、インスタンス、又は例示」として役立つことを意味するために使用される。ここで「典型的」と記載された設計の如何なる実施例も、他の実施例あるいは設計よりも好適であるとか、あるいは有利であるとか必ずしも解釈される必要はない。
【００１２】
暗号を用いてソフトウェアをハードウェアに関連付けるここに記載した技術は、例えば無線デバイス、携帯電話、ハンドセット、計算デバイス、ＰＤＡ等の種々の電子デバイスのために使用されうる。明確化のために、これら技術は、無線デバイス（例えば携帯電話）について具体的に説明されている。
【００１３】
ソフトウェアのハードウェアへの関連付けは、暗号技術を用いて達成される。この関連付けのために、一般に、対称又は非対称な暗号方式が使用されうる。非対称な暗号方式（公開鍵暗号方式としても知られている）では、秘密鍵と公開鍵とからなる一対の鍵が、例えば認証、暗号化、及び復号化のような安全な機能のために使用される。秘密鍵が、秘密に保たれ、公開鍵が、必要に応じて提供される。データを処理するためにこれら鍵がどのように使用されるのかに基づいて、異なる安全機能が達成されうる。対称な暗号方式（秘密鍵暗号方式としても知られている）では、両処理エンティティが、先天的に秘密鍵を知っており、この鍵を、他のエンティティから秘密に保つ。非対称な暗号方式は、一つのエンティティがデータに署名し、多くのエンティティがこの署名を認証して、データの妥当性を確認する用途のためにより適切である。従って、非対称な暗号方式は、以下の記述のために使用される。
【００１４】
図１は、ソフトウェアをハードウェアに関連付ける様々なエンティティ機能を用いた設定１００を示す。コード生成エンティティ１１０は、特定のハードウェアプラットフォーム（又は単に「ハードウェア」）のためのソフトウェアコード１１２を生成する。このソフトウェアコードは、所望の機能を実施するためにハードウェアによって実行されることを意図している。このソフトウェアコードは、ソフトウェア識別子（ＩＤ）が割り当てられる。これは、ソフトウェアリリースバージョン番号、製品鍵、又はその他の識別情報であるかもしれない。ハードウェアは、集積回路、チップセット、モジュール、デバイス等でありうる。ハードウェアも同様に、モデル番号、製品番号等からなりうるハードウェアＩＤが割り当てられる。個々の異なるハードウェアプラットフォームは、異なるハードウェアＩＤが割り当てられる。しかしながら、同一のハードウェアプラットフォームの全てのインスタンス又はユニットは、同じハードウェアＩＤを持つ。同様に、個々のソフトウェアリリースは、異なるソフトウェアＩＤが割り当てられる。しかしながら、同一のソフトウェアリリースの全てのインスタンス又はコピーは、同じソフトウェアＩＤを持つ。従って、ソフトウェアＩＤとハードウェアＩＤとは、ソフトウェアリリースとハードウェアプラットフォームとをそれぞれ識別し、ソフトウェア及びハードウェアの具体的なインスタンスを識別しない。
【００１５】
コード生成エンティティ１１０は、ソフトウェアコードを処理（例えばハッシュ）し、コードダイジェストを得る。これは、ハッシュの結果得られるメッセージダイジェストである。このハッシュは、ソフトウェアコードのための潜在的に大きく可変サイズのファイルを、より便利に転送され操作されることが可能な短い固定サイズのダイジェストへマップする。コード生成エンティティ１１０は、ソフトウェアコードのための署名を求める要求を、証明書機関（ＣＡ：certificate authority）１２０へ送る。この要求は、（１）コードダイジェスト、（２）ソフトウェアコードのためのソフトウェアＩＤ、及び（３）このソフトウェアコードが動作することを意図しているハードウェアのためのハードウェアＩＤを含む。この要求は、同等の情報を含むかもしれない。例えば、コード生成エンティティ１１０は、コードダイジェストの代わりのソフトウェアコード、このソフトウェアコード及び意図しているハードウェアを識別するその他の情報、等を送るかもしれない。
【００１６】
証明書機関１２０は、ソフトウェアがハードウェアに関連付けられるか否かを検証する信頼されたエンティティである。証明書機関１２０は先ず、コード生成エンティティ１１０による要求とともに送られた証明書に基づいて、コード生成エンティティ１１０を認証する。この証明書は、簡略のために図１に示されていない。要求された関連付けの妥当性確認は、コード生成エンティティ１１０から取得されたハードウェアＩＤ及びソフトウェアＩＤを、コンフィギュレーションテーブル１２２内に格納された情報との一致をとることによって達成される。例えば、テーブル１２２は、コード生成エンティティ１１０に対して許可されたソフトウェア及びハードウェア関連付けのリストを格納しうる。要求された関連付けは、テーブルに格納された許可された関連付けの一つと一致すれば許可される。要求された関連付けの妥当性が一旦確認されると、証明書機関１２０は、暗号方式及び暗号鍵１２４を用いてソフトウェアをハードウェアに関連付ける。暗号鍵１２４は、（１）ソフトウェアコードの署名及び認証のために使用される秘密鍵と公開鍵とのセット（ここでは、「コード」秘密鍵及び公開鍵とも称される）と、（２）証明書機関１２０の識別及び認証のために使用される秘密鍵と公開鍵とのセット（ここでは、「ＣＡ」秘密鍵及び公開鍵とも称される）とからなる２セットの鍵を含む。証明書機関１２０は、コード秘密鍵を使用して、コードダイジェスト、ソフトウェアＩＤ、及びハードウェアＩＤに対して署名を生成するこの署名はここでは「コード署名」と称される。証明書機関１２０はその後、コード署名及び証明書１２６をコード生成エンティティ１１０に送る。この証明書は、（１）コード署名を生成するために使用されるコード秘密鍵に対応するコード公開鍵と、（２）ＣＡ秘密鍵を用いてコード公開鍵に関して生成された署名と、（３）場合によってはその他の情報とを含む。
【００１７】
コード生成エンティティ１１０は、証明書機関１２０からコード署名と証明書とを受け取り、ソフトウェアコードと、ソフトウェアＩＤと、コード署名と、証明書とを備えたコードイメージを作成する。コード生成エンティティ１１０はその後、このコードイメージを無線デバイス１３０へ送る。無線デバイス１３０は、このイメージを非揮発性メモリ１３２内に格納する。デバイス１３０は、例えばデバイスの電源がオンされる毎に動作するブートコード１３４を持つ。このブートコードは、以下に記載するように、（１）コードイメージに含まれるソフトウェアＩＤ、コード署名、及び証明書、（２）ハードウェアＩＤ１３６、及び（３）ＣＡ公開鍵１３８に基づいて、このソフトウェアコードがデバイス１３０によって実行されることについて妥当性を確認する。ブートコード、ハードウェアＩＤ、及びＣＡ公開鍵は、デバイス１３０内に埋め込まれ、耐改竄性がある。デバイス１３０は、ブートコードによって妥当性が確認されたソフトウェアコードのみを実行する。
【００１８】
コード生成エンティティ１１０は、無線デバイス１３０の製造者、この無線デバイス１３０が使用されている無線通信ネットワークに対するネットワークオペレータ又はサービスプロバイダ、第三者ソフトウェア販売業者、相手先商標による製品の生産者（ＯＥＭ）、この通信ネットワークに使用されるハードウェア及び／又は技術に対する知的所有権を持つエンティティの被許可者、又はその他のエンティティでありうる。証明書機関１２０は、ソフトウェアのハードウェアへの関連付けを実行することが信頼された独立機関（例えばGeotrustやVerisign等）でありうる。証明書機関１２０とコード生成エンティティ１１０も、（例えばネットワークオペレータのように）同じエンティティの一部であるかもしれない。
【００１９】
図２は、無線デバイス１３０に送られ、無線デバイス１３０によって格納されるコードイメージを例示している。コードイメージは、ソフトウェアコードのためのフィールド２１２と、ソフトウェアＩＤ（ＳＷ  ＩＤ）のためのフィールド２１４と、証明書機関１２０によって生成されたコード署名のためのフィールド２１６と、証明書機関１２０によって提供された証明書のためのフィールド２１８とを含む。コードイメージは、例えば、一般に利用可能な「ＰＫＣＳ  ＃７：Cryptographic Message Syntax Version 1.5」と題された文書ＲＦＣ  ２３１５（非特許文献１）によって定義されたフォーマットのような種々のフォーマットで格納されうる。（ＰＫＣＳは、公開鍵暗号規格を表す。）また、コードイメージは、追加情報、及び／又は図２に示すものとは異なる別の情報を含みうる。例えば、ソフトウェアＩＤは、ソフトウェアコード内に含まれ、図２に示すように別々に格納される必要は無いかもしれない。
【００２０】
図３は、ソフトウェアコードのためのコードイメージを生成する処理を示す。ハッシュ機能３１０がソフトウェアコードを受け取ってハッシュし、コードダイジェストを提供する。ソフトウェアコードは、多くのメガバイトからなる大きなファイルかもしれないので、ハッシュは、より便利に送られ、演算されることが可能な短い固定サイズのダイジェストを生成する。ハッシュ機能３１０は、ソフトウェアコードを、対応するコードダイジェストにマップする。ハッシュ機能３１０の重要な特性は、耐衝突性があることである。これは、同じダイジェストにマップする２つのメッセージｘ及びｘ’を見つけることが不可能であるべきことを意味する。ハッシュ機能３１０は、例えばＳＨＡ−１（安全なハッシュアルゴリズム）、ＭＤ−５（メッセージダイジェスト）、及び当該技術分野で周知のその他のハッシュアルゴリズムのような種々の暗号ハッシュ機能を用いて実施される。ＳＨＡ−１は、１６０ビットメッセージダイジェストを提供し、一般に利用可能となっている「Secure Hash Standard」と題されたFederal Information Processing Standard (FIPS) PUB 180-1（非特許文献２）に記載されている。ＭＤ−５は、１２８ビットメッセージダイジェストを提供し、一般に利用可能となっている「The MD5 Message-Digest Algorithm」（非特許文献３）と題された文書ＲＦＣ  １３２１に記載されている。
【００２１】
署名機能３２０はコードダイジェスト、ソフトウェアＩＤ、ハードウェアＩＤ、及びコード秘密鍵を受け取る。署名機能３２０は、コード秘密鍵を使用して、コードダイジェスト、ソフトウェアＩＤ、及びハードウェアＩＤに基づいて（によって）コード署名を生成する。署名機能３２０は、以下に説明するように実施される。
【００２２】
証明書生成部３３０は、コード秘密鍵に対応するコード公開鍵、ＣＡ秘密鍵、及びその他の適切な情報（例えば、証明書を生成するエンティティを識別する情報、証明書のために使用される暗号アルゴリズム等）を受け取る。証明書生成部３３０は、ＣＡ秘密鍵を用いて、コード公開鍵とその他の適切な情報によって署名を生成する。この署名は、ここでは「ＣＡ署名」と称される。その後、証明書生成部３３０は、コード公開鍵、ＣＡ署名、及びその他の情報を用いて証明書を作成する。この証明書は、例えば、一般に利用可能となっている「Internet X. 509 Public Key Infrastructure Certificate and CRL Profile」（非特許文献４）と題された文書ＲＦＣ  ２４５９によって定義されているような種々のフォーマットで格納されうる。この証明書は、以下に記載するように、コード公開鍵のみならず、証明書機関１２０を認証するためにも使用される。
【００２３】
結合ユニット３４０は、ソフトウェアコード、ソフトウェアＩＤ、コード署名、及び証明書を受け取って結合し、（例えばＰＫＣＳ  ＃７フォーマットで）コードイメージを得る。
【００２４】
ハッシュ機能３１０及び結合ユニット３４０は、図１内のコード生成エンティティ１１０に存在しうる。署名機能３２０及び証明書生成部３３０は、証明書機関１２０に存在しうる。あるいは、ハッシュ機能３１０、署名機能３２０、証明書生成部３３０、及び結合ユニット３３０は全て同一のエンティティ内に存在しうる。
【００２５】
図４は、コード署名を生成するための処理ユニット３２０ａを示す。処理ユニット３２０ａは、図３内の署名機能３２０のために使用されうる。処理ユニット３２０ａ内では、ハッシュユニット４１０がコードダイジェスト、ソフトウェアＩＤ、及びハードウェアＩＤの連結及びハッシュを実行する。図４に示す実施例では、ハッシュユニット４１０内では、連結ユニット４１２がコードダイジェスト、ソフトウェアＩＤ、及びハードウェアＩＤを受け取って連結し、メッセージ（Ｍ）を得る。ハッシュ機能４１４は、メッセージ（Ｍ）をハッシュし、メッセージダイジェスト（Ｄ）を提供する。ダイジェスト（Ｄ）は、ソフトウェアをハードウェアに関連付けている情報を含んでおり、ここでは「署名ダイジェスト」と称される。その後、暗号化ユニット４２０が、コード秘密鍵を用いて署名ダイジェスト（Ｄ）を暗号化し、コード署名（Ｓ）を生成する。
【００２６】
一般に、このダイジェスト（Ｄ）を生成するために使用される全メッセージは、コード署名（Ｓ）と共に送られる。しかしながら、この用途のために、コード署名を得るために使用される三つの情報が、他の手段を経由して無線デバイスに対して利用可能である。特に、無線デバイスは、コードイメージからのソフトウェアＩＤと、コードダイジェストとを取得し、ハードウェアＩＤが無線デバイス内に埋め込まれる。
【００２７】
処理ユニット３２０ａは、ＲＳＡ（Rivest、Shamir、及びAdleman）アルゴリズムを実施しうる。この実施のために、ハッシュ機能４１４は、ＳＨＡ−１、ＭＤ−５、又はその他のハッシュ機能を実施し、暗号化ユニット４２０は、コード秘密鍵を用いてダイジェスト（Ｄ）を暗号化する。処理ユニット３２０ａは、一般に利用可能となっている「Digital Signature Standard (DSS)」（非特許文献５）と題されたＦＩＰＳ  ＰＵＢ  １８６に記載されたデジタル署名規格（ＤＳＳ：Digital Signature Standard）も実施できる。この実施のために、ハッシュ機能４１４はＳＨＡ−１を実施し、暗号化ユニット４２０はデジタル署名アルゴリズム（ＤＳＡ：Digital Signature Algorithm）を実施する。処理ユニット３２０ａは、いくつかの他の暗号（デジタル署名又は暗号化）アルゴリズムも実施してよく、これも本発明の範囲内である。
【００２８】
図５は、コード署名のために使用される署名ダイジェスト（Ｄ）を生成するための処理ユニット４１０ａを示す。処理ユニット４１０ａは、図４におけるハッシュユニット４１０のために使用されうる。処理ユニット４１０ａは、ハッシュベースのメッセージ認証コード（ＨＭＡＣ：Hash-based Message Authentication Code）を実施する。ＨＭＡＣは、「ＨＭＡＣ：Keyed-Hashing for Message Authentication」と題された文書ＲＦＣ  ２１０４（非特許文献６）、及び「The Keyed-Hash Message Authentication Code (ＨＭＡＣ)」と題された文書ＦＩＰＳ  ＰＵＢ  １９８（非特許文献７）に記載されている。これらはともに一般に利用可能となっている。
【００２９】
処理ユニット４１０ａ内では、ユニット５１２がソフトウェアＩＤを受け取り、ソフトウェアＩＤと“ｉｐａｄ”値との排他的論理和を実行する。このｉｐａｄ値は、ＲＦＣ  ２４０１によって定義された一つである。これは、６４回繰り返された１６進法バイト０×３６である。しかしながら、ｉｐａｄ値は、０×３６の代わりに幾つか別の基本値で定義されてもよい。そして、この基本値は、６４回の代わりに異なる回数繰り返されていもよい。ｉｐａｄ値はまた、繰り返しの無い単一の値としても定義されうる。ソフトウェアＩＤ及びハードウェアＩＤについて必要に応じて零パディングが実行され、所望の長さが得られる。これは、簡略のために図５には示していない。排他的論理和は、ビットワイズのモジュロ２加算によって実行される。連結ユニット５１４は、排他的論理和ユニット５１２の出力と共にコードダイジェストを受け取り、それらを連結し、第一のメッセージ（Ｍ１）を提供する。ハッシュ機能５１６は、第一のメッセージを受け取ってハッシュし、第一のダイジェスト（Ｄ１）を提供する。
【００３０】
ユニット５２２は、ハードウェアＩＤと“ｏｐａｄ”値との排他的論理和を実行する。このｏｐａｄ値は、ＲＦＣ  ２４０１によって定義された一つであり、６４回繰り返された１６進法バイト０×５ｃである。しかしながら、ｏｐａｄ値は、０×５ｃの代わりに幾つか別の基本値で定義されてもよい。そして、この基本値は、６４回の代わりに異なる回数繰り返されていてもよい。ｏｐａｄ値はまた、繰り返しの無い単一の値としても定義されうる。連結ユニット５１８は、排他的論理和ユニット５２２の出力と共にハッシュ機能５１６からの第一のダイジェスト（Ｄ１）を受け取り、それらを連結し、第二のメッセージ（Ｍ２）を提供する。ハッシュ機能５２０は、第二のメッセージ（Ｍ２）を受け取ってハッシュし、第二のダイジェストを提供する。これは、署名ダイジェスト（Ｄ）として使用される。ハッシュ機能５１６及び５２０は、例えばＳＨＡ−１、ＭＤ−５、又はその他の幾つかのハッシュアルゴリズムのような種々の暗号ハッシュ関数で実施されうる。
【００３１】
図５は、署名ダイジェストを生成するための具体的手法におけるＨＭＡＣの使用を示している。ＨＭＡＣ構成は、署名ダイジェストを生成するための別の手法にも適用される。これも本発明の範囲内である。例えば、ソフトウェアＩＤとハードウェアＩＤとが連結され、その後、ユニット５１２へ提供され、ｉｐａｄ値との排他的論理和が行われる。そして、コードダイジェストがユニット５２２に提供され、ｏｐａｄ値との排他的論理和が行われる。
【００３２】
図４及び図５は、署名ダイジェストを生成するための二つの典型的なスキームを示す。図５に示す処理ユニット４１０ａは、ＨＭＡＣに対する鍵として三つの項目（すなわち、コードダイジェスト、ソフトウェアＩＤ、及びハードウェアＩＤ）を用いて署名ダイジェストを生成する。図４におけるユニット４１０は、これら三つの項目を一つのメッセージ（Ｍ）に連結し、このメッセージ（Ｍ）に対して一つのハッシュを実行し、署名ダイジェストを生成する。この署名ダイジェストは、別の手法でも生成することができ、これも本発明の範囲内である。
【００３３】
図６は、ソフトウェアコードのためのコードイメージを生成するための処理６００のフロー図を示す。処理６００は、コード生成エンティティ１１０及び証明書機関１２０によって実行される。
【００３４】
初めに、コード生成エンティティ１１０がソフトウェアコードをハッシュして、コードダイジェストを得る（ブロック６１２）。そして、コード生成エンティティ１１０が、コード署名に対する要求内のコードダイジェスト、ソフトウェアＩＤ、及びハードウェアＩＤを送る（ブロック６１４）。これらは証明書機関１２０によって受け取られる（ブロック６２２）。証明書機関１２０は、コード秘密鍵を用いて、コードダイジェスト、ソフトウェアＩＤ、及びハードウェアＩＤのためのコード署名（もしもこの署名が許可されているのであれば）を生成する(ブロック６２４）。次に、証明書機関は、コード署名と証明書とを返信する（ブロック６２６）。これらは、コード生成エンティティ１１０によって受け取られる（ブロック６３２）。その後、コード生成エンティティ１１０は、ソフトウェアコード、ソフトウェアＩＤ、コード署名、及び証明書を用いて図2に示すようなコードイメージを作成する（ブロック６３４）。コード生成エンティティ１１０はその後、このコードイメージを無線デバイス１３０へ送る（ブロック６３６）。そして、処理が終了する。
【００３５】
図７は、コード署名を生成するための処理７００のフロー図を示す。処理７００は、図６におけるブロック６２２，６２４，６２６を含み、更にコード生成エンティティ１１０を認証し、ソフトウェアコードをハードウェアに関連付けることができるか否かを判定するブロック７１０を含む。処理７００は、証明書機関１２０によって実行されうる。
【００３６】
証明書機関１２０は、コード生成エンティティ１１０からコード署名に対する要求を受け取る（ブロック６２２）。この要求は、コード生成エンティティ１１０のための証明書、ハードウェアＩＤ、ソフトウェアＩＤ、及びコードダイジェスト（ここでは、「ＣＧ証明書」と称される）を含む。証明書機関１２０は、このＣＧ証明書に基づいてコード生成エンティティ１１０を認証する（ブロック７１２）。ＣＧ証明書に基づいてコード生成エンティティ１１０が認証されなかった場合（すなわち、ブロック７１４の答えが「Ｎｏ」の場合）には、エラーメッセージが返信され（ブロック７２０）、処理が終了する。
【００３７】
コード生成エンティティ１１０が認証された場合（すなわち、ブロック７１４の答えが「Ｙｅｓ」の場合）には、ソフトウェアダイジェスト及びソフトウェアＩＤによって表されるソフトウェアを、ハードウェアＩＤによって示されるハードウェアに関連付けることができるか否かの判定がなされる（ブロック７１６）。これは、上述したように、証明書機関１２０によって保持されているコンフィギュレーションテーブルに基づいて達成される。ソフトウェアのハードウェアへの関連付けが許可されない場合（すなわち、ブロック７１８の答えが「Ｎｏ」である場合）には、エラーメッセージが返信され（ブロック７２０）、処理が終了する。そうでない場合には、証明書機関１２０は、要求されるように、コードダイジェスト、ソフトウェアＩＤ、及びハードウェアＩＤに基づいて、コード署名を生成する（ブロック６２４）。その後、証明書機関１２０は、コード署名と証明書とをコード生成エンティティ１１０へ送る（ブロック６２６）。その後、処理が終了する。
【００３８】
図８は、コード生成エンティティ１１０、証明書機関１２０、及び無線デバイス１３０のブロック図を示す。コード生成エンティティ１１０は、コントローラ８１０、メモリユニット８１２、及び通信（ｃｏｍｍ）ユニット８１４を含む。コントローラ８１０は、コードダイジェストとコードイメージとを生成するために処理を実行する。メモリユニット８１２は、コントローラ８１０によって使用されるデータ及びプログラムコードに加えて、ソフトウェアコードを格納する。通信ユニット８１４は、証明書機関１２０及び無線デバイス１３０との通信を提供する。
【００３９】
証明書機関１２０は、コントローラ８２０と、メモリユニット８２２と、コード署名及び証明書とを含む。メモリユニット８２２は、コンフィギュレーションテーブル１２２と、暗号鍵１２４と、証明書１２６と、コントローラ８２０によって使用されるプログラムコード及びデータとを格納する。通信ユニット８２４は、コード生成エンティティ１１０との通信を提供する。
【００４０】
デバイス１３０は、例えば符号分割多元接続（ＣＤＭＡ）システム、グローバルシステムフォーモバイルコミュニケーション（ＧＳＭ）システム、Ｂｌｕｅｔｏｏｔｈ（登録商標）システム、複数入力複数出力（ＭＩＭＯ：a multiple-input multiple-output）システム、直交周波数分割多元接続（ＯＦＤＭＡ：orthogonal frequency division multiple access）システム等のような一つ又は複数の無線通信システムと通信しうる。ＣＤＭＡシステムは、例えばＩＳ−２０００（「ＣＤＭＡ  １ｘ−ＥＶ」としても知られている）、ＩＳ−８５６（「ＣＤＭＡ  １ｘＥＶＤＯ」としても知られている）、ＩＳ−９５、広帯域ＣＤＭＡ（Ｗ−ＣＤＭＡ）等のような一つ又は複数のＣＤＭＡ規格を実施しうる。デバイス１３０は、受信経路及び送信経路を経由した双方向通信を提供することができる。
【００４１】
送信経路の場合、モデムプロセッサ８５０が、デバイス１３０によって送信されるべきデータを処理（例えば、符号化及び変調）し、データチップを送信機ユニット（ＴＭＴＲ）８５２へ提供する。送信機ユニット８５２は、このデータチップを処理（例えば、アナログへの変換、フィルタ、増幅、及び周波数アップコンバート）し、変調された信号を生成する。これは、アンテナ８５４を経由して送信される。受信経路の場合、一つ又は複数のシステム内の基地局から送信された信号が、アンテナ８５４によって受信され、受信機ユニット（ＲＣＶＲ）８５６へ提供される。受信機ユニット８５６は、この受信信号を処理
（例えば、フィルタ、増幅、及び周波数ダウンコンバート）し、処理された信号をデジタル化し、データサンプルを、復調復号のためにモデムプロセッサ８５０へ提供する。
【００４２】
安全なユニット８３０は、安全な処理を実行し、デバイス１３０のための安全な記憶装置を提供する。図８に示す実施例では、安全なユニット８３０は、安全な処理とおそらくはその他の処理を実行するプロセッサ８３２と、ブートコードを格納する読取専用メモリ（ＲＯＭ）８３４と、デバイス１３０のためのハードウェアＩＤを格納するユニット８３６と、証明書機関１２０のための公開鍵を格納するユニット８３８とを含んでいる。ユニット８３６及び８３８は、ＲＯＭ、ヒューズ等を用いて実施されうる。ＲＯＭ８３４内のブートコード、ユニット８３６内のハードウェアＩＤ、及びユニット８３８内のＣＡ公開鍵は、図１に示すブートコード１３４、ハードウェアＩＤ１３６、及びＣＡ公開鍵１３８にそれぞれ対応する。
【００４３】
ブートコード、ハードウェアＩＤ、およびＣＡ公開鍵は、デバイス１３０のための安全なデータを構成し、安全なユニット８３０内の一つ又は複数の安全な記憶装置内に安全な方法（例えば、埋め込みにより）で格納される。このように、安全なデータを改竄するために安全なユニット８３０への潜入を試みるセキュリティ攻撃、及びエンティティのスプーフィング（例えば、ハッカー、ウィルス等）から、安全なデータが守られる。安全なユニット８３０は、単一の集積回路（ＩＣ）内に実装されうる。安全なユニット８３０は、安全及び／又は耐改竄性のあるユニット又はモジュールとしても実装されうる。
【００４４】
安全なユニット８３０は、無線デバイス１３０のための種々の機能を実行する特定用途向集積回路（ＡＳＩＣ）の一部であるかもしれない。例えば、このＡＳＩＣは、安全なユニット８３０、モデムプロセッサ８５０等を含みうる。プロセッサ８３２は、安全な処理を実行し、ブートアップ時においてソフトウェアコードの妥当性を確認する。プロセッサ８３２は、通常動作中その他の機能も実行する。従って、プロセッサ８３２は、安全な処理のみを実行する専用ユニットである必要は無い。例えば、プロセッサ８３２は、それ自身が、ソフトウェアコードの全て又は一部を実行するこのソフトウェアコードが関連付けられているハードウェアであるかもしれない。
【００４５】
コントローラ８４０は、種々の機能を実行し、デバイス１３０内の種々の処理ユニットの動作の調整及び制御を行う。例えば、コントローラ８４０は、モデムプロセッサ８５０に対して、送信経路及び受信経路のためにデータを処理するように命令しうる。メモリユニット８４２は、デバイス１３０内の種々の処理ユニットによって使用されるプログラムコード及びデータを格納する。例えば、メモリユニット８４２は、ソフトウェアコード、ソフトウェアＩＤ、コード署名、及び証明書を備えたコードイメージを格納する。入力／出力（Ｉ／Ｏ）ユニット８４４は、外部ユニットに対するインタフェースを提供する。例えば、Ｉ／Ｏユニット８４４は、コードイメージをデバイス１３０へロードするためのメカニズム（例えば、ユニバーサルシリアルバス（ＵＳＢのようなポート）を提供するかもしれない。バス８６２は、デバイス１３０内の種々のユニットを相互接続する。
【００４６】
デバイス１３０は、デバイスに電源が入れられる毎に、コードイメージ内のソフトウェアコードが妥当なバージョンであることを保証するために、このソフトウェアコードの妥当性を確認する。プロセッサ８３２は、以下に記載するように、ＲＯＭ８３４内に格納されたブートコードに基づき、安全なユニット８３０内に埋め込まれたＣＡ公開鍵とハードウェアＩＤとを用いて妥当性確認を実行する。これによって、プロセッサ８３２は、ブートコード、ハードウェアＩＤ、及びＣＡ公開鍵によって定義された知られた状態から、無線デバイス１３０内の信用を確立することが可能となる。プロセッサ８３２は、ソフトウェアの妥当性が確認された後にのみソフトウェアコードの実行を認可する。
【００４７】
図９は、コード署名に基づいてコードイメージ内のソフトウェアコードの妥当性確認を行う処理ユニット９００を示す。処理ユニット９００は、図８のプロセッサ８３２によって実施されうる。ユニット９００内では、ハッシュ機能９１０が、コードイメージからソフトウェアコードを受け取ってハッシュし、コードダイジェストを提供する。ハッシュ機能９１０は、図３のハッシュ機能３１０のために使用されるものと同じハッシュアルゴリズムを実施する。ハッシュ機能９２０は、ハッシュ機能９１０からコードダイジェストと、コードイメージからソフトウェアＩＤと、安全なユニット８３０からハードウェアＩＤとを受け取ってハッシュし、「再生成された」署名ダイジェスト（Ｄ’）を提供する。ハッシュ機能９２０は、図４のハッシュ機能４１０に使用されたものと同じハッシュアルゴリズムを実施する。
【００４８】
復号化ユニット９３０は、コードイメージからのコード署名を、証明書からのコード公開鍵とともに受け取り、このコード公開鍵を用いて復号し、「受け取られた」署名ダイジェスト（Ｄ）を提供する。その後、比較ユニット９４０は、受け取られた署名ダイジェスト（Ｄ）に対して、再生成された署名ダイジェスト（Ｄ’）を比較し、妥当性確認フラグを提供する。これは、二つのダイジェストが一致する場合には「真」に、そうでない場合には「偽」に設定される。
【００４９】
図１０は、コードイメージ内のソフトウェアコードの無線デバイス１３０による妥当性確認のための処理１０００のフロー図を示す。処理１０００は、ブートコードに基づいてプロセッサ８３２によって実行され、ブートアップ処理とも称される。
【００５０】
初めに、コードイメージから証明書が取得され、デバイス１３０内に格納されたＣＡ公開鍵を用いて妥当性確認がなされる（ブロック１０１２）。この証明書は、証明書機関１２０のＣＡ秘密鍵を用いて生成されたＣＡ署名を含んでいる。このＣＡ署名は、安全なユニット８３０内に埋め込まれた対応するＣＡ公開鍵を用いて認証することができる。次に、このＣＡ署名の妥当性確認がなされたのか否かの判定がなされる(ブロック１０１４）。答えが「Ｎｏ」であれば、エラーメッセージが生成され（ブロック１０１６）、ブートアップ処理が終了する。
【００５１】
もしもＣＡ署名の妥当性が確認されれば、ブロック１０２０においてコード署名の妥当性が確認される。コード署名妥当性確認のために、コードイメージからソフトウェアコードが取得され、コード生成エンティティ１１０によって使用されたものと同じハッシュ機能３１０を用いてハッシュされ、コードダイジェストが取得される（ブロック１０２２）。コードイメージからソフトウェアＩＤが取得され、安全なユニット８３０からハードウェアＩＤが取得される。そして、ブロック１０２２で取得されたコードダイジェスト、ソフトウェアＩＤ、及びハードウェアＩＤが、証明書機関１２０によって使用されたものと同じハッシュ機能４１０を用いてハッシュされ、再生成された署名ダイジェスト（Ｄ’）が取得される（ブロック１０２４）。
【００５２】
証明書からコード公開鍵が取得され、コードイメージからコード署名が取得される。コード公開鍵によってＣＡ署名が生成されるので、ＣＡ署名がＣＡ公開鍵によって認証されるのであれば、コード公開鍵が認証される。その後、コード公開鍵を用いてコード署名が復号され、受け取られた署名ダイジェスト（Ｄ）が取得される（ブロック１０２６）。これは、コード署名を生成するために証明書機関１２０によって使用される。この受け取られた署名ダイジェスト（Ｄ）は、その後、再生成された署名ダイジェスト（Ｄ’）に対して比較される（ブロック１０２８）。
【００５３】
次に、受け取られた署名ダイジェストが、再生成された署名ダイジェストと一致するか否かが判定される（ブロック１０３０）。答えが「Ｎｏ」であれば、エラーメッセージが生成され（ブロック１０１６）、ブートアップ処理が終了する。そうでない場合には、ソフトウェアコードが、妥当性確認がなされたものとして示され、実行可能となり（ブロック１０３２）、ブートアップ処理が終了する。
【００５４】
ソフトウェアをハードウェアに関連付けるここに記載した技術は、種々の用途のために使用されうる。いくつかの典型的な用途を以下に記載する。
【００５５】
一つの用途は、安全ではないリンクを経由して無線デバイスへソフトウェアをダウンロードするためである。例えば、バグを直したり、新たな特徴や機能を与えたりなどするために、無線デバイスのためのソフトウェアを更新することが望ましいかもしれない。ここに記述した技術は、新しいバージョンのソフトウェアを、安全ではない通信リンク（例えば無線リンク）を経由して無線デバイスへ送るために使用されうる。無線デバイスは、この受信したソフトウェアが、合法的なソースからのものであり上述したような暗号技術を用いて修正されていないので、このソフトウェアの妥当性を確認することができる。この無線デバイスは、このソフトウェアを、妥当性が確認された後においてのみ実行する。
【００５６】
別の用途は、異なるハードウェアプラットフォームの認可された（例えばライセンスされた）使用を強化するためである。第一のエンティティは、それぞれが異なるハードウェアＩＤが割り当てられている種々のハードウェアプラットフォームを持ってよい。この第一のエンティティは、第二のエンティティに、ある幾つかのハードウェアプラットフォームに対するライセンスを許可し、その他の幾つかのハードウェアプラットフォームに対するライセンスを許可しない。証明書機関１２０によって保持されているコンフィギュレーションテーブルには、このライセンス情報が格納されうる。第二のエンティティが、特定のソフトウェア及び特定のハードウェアプラットフォームに対するコード署名を要求する場合にはいつでも、証明書機関１２０は、要求されたハードウェアプラットフォームについて第二のエンティティがライセンスされている場合にのみ、コード署名を生成する。このように、被許可者は、基本ハードウェアプラットフォームに対するライセンスをテイクアウトすることも、ソフトウェアを、より精巧なハードウェアプラットフォームにインストールし使用することを試みることもできない。
【００５７】
更に別の用途は、与えられたハードウェアプラットフォームの許可された（例えばライセンスされた）使用を強化するためである。無線デバイスのためのハードウェアは、広範な機能のセットを実行する能力を備えて設計されうる。これらの機能は、ソフトウェアによって選択的にイネーブル又はディセーブルされうる。異なる機能のセットに対して異なるライセンスが許可されうる。これらの機能のセットの各々は、異なるソフトウェアバージョンに関連付けられうる。証明書機関は、被許可者のリスト、彼らの具体的なライセンス、および各ライセンスについて許可されたソフトウェアバージョンを保持できる。証明書機関は、ライセンスされているソフトウェアコードバージョンに対してのみ署名を生成する。このように、被許可者は、基本的な機能のセットに対するライセンスをテイクアウトすることも、ソフトウェアを、より精巧な機能のセットのためにインストールし使用することを試みることもできない。
【００５８】
ソフトウェアをハードウェアに関連付けるためのここで記載した技術は、様々なエンティティにおいて、様々な手段によって実施されうる。例えば、これらの技術は、ハードウェア、ファームウェア、ソフトウェア、又はこれらの組み合わせを用いて実施されうる。ハードウェア実施の場合、（コード生成エンティティ１１０及び証明書機関１２０において）ソフトウェアのハードウェアへの関連付けを達成し、（デバイス１３０において）この関連付けの妥当性確認を行うために使用される処理ユニットは、特定用途向集積回路（ＡＳＩＣ）、デジタル信号プロセッサ（ＤＳＰ）、デジタル信号処理デバイス（ＤＳＰＤ）、プログラマブルロジックデバイス（ＰＬＤ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサ、ここで述べた機能を実施するように設計されたその他の電子部品、又はこれらの組み合わせ内に実装されうる。
【００５９】
ソフトウェア実施の場合、ここで記載した技術は、ここで記載した機能を実行するモジュール（例えば、処理、機能等）を用いて実施されうる。ソフトウェアコードは、メモリユニット（例えば、図８のメモリユニット８１２，８２２，８４２）内に格納され、プロセッサ（例えば、コントローラ８１０，８２０，８４０、及びプロセッサ８３２）によって実行されうる。メモリユニットは、プロセッサ内に、又はプロセッサの外部に実装されうる。いずれの場合であれ、当該技術分野で周知である様々な手段によって、プロセッサに通信可能なように接続されることが可能である。
【００６０】
前述した開示された実施例は、当該技術分野における熟練者が、本発明を活用又は利用することができるように提供された。これらの実施例に対する種々の変形は、当該技術分野における熟練者には容易に明らかになるであろう。そして、ここで定義された一般的な原理は、本発明の精神又は範囲から逸脱することなく、その他の実施例にも適用されうる。従って、本発明は、ここに示した実施例に限定されることを意図しているのではなく、ここで開示した原理及び斬新な特徴に一致した最も広い範囲が与えられることになる。
【図面の簡単な説明】
【００６１】
【図１】図１は、ソフトウェアをハードウェアに関連付ける様々なエンティティ機能を用いた設定を示す。
【図２】図２は、無線デバイスに送られ、無線デバイスに格納されるコードイメージを示す。
【図３】図３は、ソフトウェアのためのコードイメージを生成する処理を示す。
【図４】図４は、コード署名を生成するためのユニットを示す。
【図５】図５は、コード署名のために使用されるダイジェストを生成するためのユニットを示す。
【図６】図６は、ソフトウェアのためのコードイメージを生成するための処理を示す。
【図７】図７は、コード署名を生成するための処理を示す。
【図８】図８は、コード生成エンティティ、証明書機関、及び無線デバイスのブロック図を示す。
【図９】図９は、コード署名に基づいてソフトウェアの妥当性確認を行うためのユニットを示す。
【図１０】図１０は、無線デバイスによってソフトウェアの妥当性確認を行うための処理を示す。
【図１】
0004814083.tif 000002
【図２】
0004814083.tif 000003
【図３】
0004814083.tif 000004
【図４】
0004814083.tif 000005
【図５】
0004814083.tif 000006
【図６】
0004814083.tif 000007
【図７】
0004814083.tif 000008
【図８】
0004814083.tif 000009
【図９】
0004814083.tif 000010
【図１０】
0004814083.tif 000011