(57)【要約】【課題】【解決手段】電子デバイスですでに利用されているソフトウェアを更新するための改良技術が開示されている。一実施形態では、暗号を用いて安全に制御下で、ソフトウェアを更新できる。更新の前に、更新版ソフトウェアの信頼性と、特定の電子デバイスへの適合性とを確認できる。ソフトウェアは、モジュールごとに更新されてもよい。一実施形態では、サーバが、様々な電子デバイスのためのソフトウェア更新のホストとして機能し、データネットワークを介して適切なソフトウェア更新を電子デバイスに提供する。【選択図】図１Ａ
2009503698.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも部分的にソフトウェアに従って動作する電子デバイス上のソフトウェアを更新するための方法であって、
（ａ）デバイス情報をホストデバイスに送信する工程と、
（ｂ）特に前記電子デバイスでの利用のために前記ホストデバイスで事前に暗号化された暗号化ソフトウェアモジュールを前記電子デバイスで受信する工程と、
（ｃ）前記暗号化ソフトウェアモジュールを前記電子デバイスで復号する工程と、
（ｄ）前記ソフトウェアモジュールを前記電子デバイスにインストールする工程と
を備える方法。
【請求項２】
請求項１に記載の方法であって、
前記デバイス情報は、暗号鍵を備え、
受信される前記暗号化ソフトウェアモジュールは、前記暗号鍵を用いて暗号化されている方法。
【請求項３】
請求項２に記載の方法であって、
前記暗号鍵は、前記電子デバイスに関連付けられた公開鍵であり、
受信される前記暗号化ソフトウェアモジュールは、前記公開鍵を用いて直接的または間接的に暗号化されている方法。
【請求項４】
請求項３に記載の方法であって、前記復号工程（ｃ）は、前記電子デバイスに格納された秘密暗号鍵を用いて、直接的または間接的に実行される方法。
【請求項５】
請求項１に記載の方法であって、
前記暗号鍵は、前記電子デバイスに関連付けられた公開鍵であり、
受信される前記暗号化ソフトウェアモジュールは、ランダム生成鍵を用いて暗号化されており、前記ランダム生成鍵は、前記公開鍵を用いて暗号化される方法。
【請求項６】
請求項５に記載の方法であって、前記復号工程は、まず、前記電子デバイスに格納された秘密暗号鍵を用いて、前記暗号化されたランダム生成鍵を復号し、次いで、前記ランダム生成鍵を用いて、前記暗号化ソフトウェアモジュールを復号する方法。
【請求項７】
請求項１に記載の方法であって、
前記デバイス情報は、
バージョン識別子と、
製造業者情報、モデル情報、および、ハードウェアプラットフォーム情報の内の１または複数と
を備える方法。
【請求項８】
請求項１に記載の方法であって、
前記ホストデバイスは、サーバコンピュータまたはクライアントコンピュータであり、
前記電子デバイスは、携帯電話、携帯情報端末、または、メディアプレーヤである方法。
【請求項９】
請求項１に記載の方法であって、ユーザ対話によるソフトウェアの更新要求なしで自動的に実行される方法。
【請求項１０】
携帯用電子デバイス上のソフトウェアを更新するための方法であって、
デバイス情報をホストデバイスに送信する工程であって、前記デバイス情報は、デバイス記述情報と、公開暗号鍵と、現行バージョン識別子とを含む工程と、
前記携帯用電子デバイスで暗号化ソフトウェアモジュールを受信する工程であって、前記暗号化ソフトウェアモジュールは、前記ホストデバイスが利用可能なソフトウェアモジュールを、前記デバイス記述情報および前記現行バージョン識別子に基づいて選択した後に、前記携帯用電子デバイスによって提供された前記公開暗号鍵を用いて暗号化することにより生成される工程と、
前記携帯用電子デバイスにとって既知である秘密暗号鍵を用いて、前記携帯用電子デバイスで前記暗号化ソフトウェアモジュールを復号する工程と、
前記復号されたソフトウェアモジュールを認証する工程と、
前記復号工程および前記認証工程が成功した後に、前記ソフトウェアモジュールを前記携帯用電子デバイスにインストールする工程と
を備える方法。
【請求項１１】
請求項１０に記載の方法であって、前記送信工程および前記受信工程は、前記携帯用電子デバイスが、動作可能なように前記ホストサーバに接続されている時に実行される方法。
【請求項１２】
請求項１１に記載の方法であって、前記復号工程、前記認証工程、および、前記インストール工程は、前記携帯用電子デバイスの前記ホストデバイスへの接続が切断された後に実行される方法。
【請求項１３】
請求項１０に記載の方法であって、さらに、
前記携帯用電子デバイスが前記ホストデバイスから切断されたことを認識する工程と、
前記携帯用電子デバイスが前記ホストデバイスから切断されたことを、前記認識工程が認識して初めて、前記復号工程を実行する工程と
を備える方法。
【請求項１４】
請求項１０に記載の方法であって、さらに、
前記インストール工程の後に前記現行バージョン識別子を更新する工程を備える方法。
【請求項１５】
請求項１０に記載の方法であって、前記秘密暗号鍵は、前記携帯用電子デバイスに固有である方法。
【請求項１６】
請求項１０に記載の方法であって、前記復号されたソフトウェアモジュールの前記認証工程は、デジタル署名を用いる方法。
【請求項１７】
コンピュータデバイス上のソフトウェアを更新するためのコンピュータプログラムコードを少なくとも記録したコンピュータ読み取り可能な媒体であって、
デバイス情報をホストデバイスに送信するためのコンピュータプログラムコードであって、前記デバイス情報は、デバイス記述情報と、第１の暗号鍵と、現行バージョン識別子とを含むコンピュータプログラムコードと、
前記コンピュータデバイスで暗号化ソフトウェアモジュールを受信するためのコンピュータプログラムコードであって、前記暗号化ソフトウェアモジュールは、前記ホストデバイスが利用可能なソフトウェアモジュールを、前記デバイス記述情報および前記現行バージョン識別子に基づいて選択した後に、前記コンピュータデバイスによって提供された前記第１の暗号鍵を用いて暗号化することにより生成されるコンピュータプログラムコードと、
前記コンピュータデバイスにとって既知である第２の暗号鍵を用いて、前記コンピュータデバイスで前記暗号化ソフトウェアモジュールを復号するためのコンピュータプログラムコードと、
前記復号されたソフトウェアモジュールを認証するためのコンピュータプログラムコードと、
前記復号および前記認証が成功した後に、前記ソフトウェアモジュールを前記コンピュータデバイスにインストールするためのコンピュータプログラムコードと
を備えるコンピュータ読み取り可能な媒体。
【請求項１８】
請求項１７に記載のコンピュータ読み取り可能な媒体であって、前記コンピュータデバイスは、携帯用コンピュータデバイスであるコンピュータ読み取り可能な媒体。
【請求項１９】
請求項１８に記載のコンピュータ読み取り可能な媒体であって、前記携帯用コンピュータデバイスは、携帯電話、携帯情報端末、または、メディアプレーヤであるコンピュータ読み取り可能な媒体。
【請求項２０】
携帯用電子デバイス上のソフトウェアモジュールを更新するための方法であって、
ネットワーク基盤のサーバデバイスでデバイス情報を受信する工程であって、前記デバイス情報は、前記携帯用電子デバイスに関する情報であり、デバイス記述情報と、公開暗号鍵と、前記携帯用電子デバイス上の前記ソフトウェアモジュールの現行バージョン識別子とを含む工程と、
前記ソフトウェアモジュールの更新バージョンが前記サーバデバイスから入手可能であるか否かを、前記携帯用電子デバイスに関する前記デバイス記述情報に基づいて判断する工程と、
前記判断工程が、前記サーバデバイスから入手可能であると判断した場合に、前記携帯用電子デバイスによって提供された前記公開暗号鍵を用いて、前記ソフトウェアモジュールの前記更新バージョンを暗号化する工程と、
前記暗号化されたソフトウェアモジュールを前記携帯用電子デバイスに送信する工程と
を備える方法。
【請求項２１】
請求項２０に記載の方法であって、さらに、
前記暗号化されたソフトウェアモジュールを前記携帯用電子デバイスで受信する工程と、
前記携帯用電子デバイス上に存在する秘密暗号鍵にアクセスする工程と、
前記暗号化されたソフトウェアモジュールを前記携帯用電子デバイスで前記秘密暗号鍵を用いて復号する工程と
を備える方法。
【請求項２２】
請求項２１に記載の方法であって、さらに、
前記復号工程が成功した後に、前記ソフトウェアモジュールを前記電子デバイスにインストールする工程を備える方法。
【請求項２３】
請求項２１に記載の方法であって、さらに、
前記復号されたソフトウェアモジュールを認証する工程と、
前記復号工程および前記認証工程が成功した後に、前記ソフトウェアモジュールを前記電子デバイスにインストールする工程と
を備える方法。
【請求項２４】
請求項２０に記載の方法であって、
前記暗号化工程は、（ｉ）前記ソフトウェアモジュールの前記更新バージョンを、ランダム鍵を用いて暗号化する工程と、（ｉｉ）前記ランダム鍵を、前記公開暗号鍵を用いて暗号化する工程とを備え、
前記送信工程は、前記暗号化されたソフトウェアモジュールと、前記暗号化されたランダム鍵とを送信する方法。
【請求項２５】
請求項２４に記載の方法であって、さらに、
前記暗号化されたソフトウェアモジュールと前記暗号化されたランダム鍵とを前記携帯用電子デバイスで受信する工程と、
前記携帯用電子デバイス上に存在する秘密暗号鍵にアクセスする工程と、
前記暗号化されたランダム鍵を前記秘密暗号鍵を用いて復号して、取得ランダム鍵を提供する工程と、
前記暗号化されたソフトウェアモジュールを前記携帯用電子デバイスで前記取得ランダム鍵を用いて復号する工程と
を備える方法。
【請求項２６】
請求項２５に記載の方法であって、さらに、
前記復号工程が成功した後に、前記ソフトウェアモジュールを前記電子デバイスにインストールする工程と、を備える方法。
【請求項２７】
コンピュータデバイス上のソフトウェアモジュールを更新するためのコンピュータプログラムコードを少なくとも含むコンピュータ読み取り可能な媒体であって、
ネットワーク基盤のサーバデバイスでデバイス情報を受信するためのコンピュータプログラムコードであって、前記デバイス情報は、前記コンピュータデバイスに関する情報であり、デバイス記述情報と、暗号鍵と、前記コンピュータデバイス上の前記ソフトウェアモジュールの現行バージョン識別子とを含むコンピュータプログラムコードと、
前記ソフトウェアモジュールの更新バージョンが前記サーバデバイスから入手可能であるか否かを、前記コンピュータデバイスに関する前記デバイス記述情報に基づいて判断するためのコンピュータプログラムコードと、
前記判断が、前記サーバデバイスから入手可能であると判断した場合に、前記コンピュータデバイスによって提供された前記暗号鍵を用いて、前記ソフトウェアモジュールの前記更新バージョンを暗号化するためのコンピュータプログラムコードと、
前記暗号化されたソフトウェアモジュールを前記コンピュータデバイスに送信するためのコンピュータプログラムコードと
を備えるコンピュータ読み取り可能な媒体。
【請求項２８】
電子デバイス上のソフトウェアを更新するためのコンピュータプログラムコードを少なくとも含むコンピュータ読み取り可能な媒体であって、
ホストデバイスにおいて、前記電子デバイスのための更新版ソフトウェアモジュールを特定するためのコンピュータプログラムコードと、
前記電子デバイス上での利用のために、前記更新版ソフトウェアモジュールを暗号化するためのコンピュータプログラムコードと、
前記暗号化されたソフトウェアモジュールを前記電子デバイスに送信するためのコンピュータプログラムコードと、
前記暗号化されたソフトウェアモジュールを前記電子デバイスで復号するためのコンピュータプログラムコードと、
前記ソフトウェアモジュールを前記電子デバイスにインストールするためのコンピュータプログラムコードと
を備えるコンピュータ読み取り可能な媒体。
【請求項２９】
請求項２８に記載のコンピュータ読み取り可能な媒体であって、さらに、
前記電子デバイスに関するデバイス情報を受信するためのコンピュータ読み取り可能なコードを備え、
前記特定するためのコンピュータプログラムコードによって実行される前記電子デバイスのための前記ソフトウェアモジュールの特定は、前記デバイス情報に基づく
コンピュータ読み取り可能な媒体。
【請求項３０】
ネットワーク基盤のソフトウェア更新システムであって、
複数の移動クライアントデバイスであって、それぞれ、対応する移動クライアントデバイス上に存在する少なくとも１つのソフトウェアに従って動作する複数の移動クライアントデバイスと、
複数のソフトウェアモジュールにアクセスできるサーバデバイスであって、前記ソフトウェアモジュールの各々は、前記移動クライアントデバイスの内の特定の１または複数の移動クライアントデバイス用であるサーバデバイスと、
動作可能なように前記サーバデバイスおよび前記移動クライアントデバイスに接続可能であり、デジタルメディア資産のためのメディア管理アプリケーションを動作させる少なくとも１つのクライアントデバイスと
を備え、
前記デジタルメディア資産は、前記ソフトウェアモジュールの内の少なくとも１つを有するデジタル著作権管理ライブラリによって保護され、
前記クライアントデバイスは、第１のデータリンクを介して前記サーバデバイスとやり取りすることにより、更新すべき前記移動クライアントデバイス用の更新版ソフトウェアモジュールを取得し、前記更新版ソフトウェアモジュールは、前記デジタル著作権管理ライブラリに関するものであり、その後、前記クライアントデバイスは、第２のデータリンクを介して前記移動クライアントデバイスとやり取りすることにより、更新すべき前記移動クライアントデバイスに前記更新版ソフトウェアモジュールを提供する
ネットワーク基盤のソフトウェア更新システム。
【請求項３１】
請求項３０に記載のネットワーク基盤のソフトウェア更新システムであって、後に、前記移動クライアントデバイスは、既存のソフトウェアを前記更新版ソフトウェアモジュールに置き換えるネットワーク基盤のソフトウェア更新システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアを更新することに関し、特に、リモートサーバから取得された更新版ソフトウェアを用いてクライアントにおいてソフトウェアを更新することに関する。
【背景技術】
【０００２】
今日では、一般に、電子デバイスは、動作する際にソフトウェアを利用する。ソフトウェアを利用する電子デバイスの例としては、コンピュータ、携帯情報端末、メディアプレーヤ、および、携帯電話が挙げられる。しかしながら、時々、かかる電子デバイスが利用しているソフトウェアを変更または更新することが求められる。
【０００３】
コンピュータの場合には、更新版ソフトウェア（より新しいバージョンなど）を、ダウンロード処理によってリモートサーバから取得できる。ソフトウェアを取得すると、コンピュータにインストールすることができる。ソフトウェアのインストール処理は、英数字のキーまたは登録コードの入力をユーザに求めることによって、制御されてよい。適切なキーまたは登録コードが入力されないと、更新版ソフトウェアをインストールすることができない。さらに、コンピュータ上のソフトウェアを更新するための従来の方法は、かなりのユーザ参加を必要とする。最近のコンピュータウィルスの傾向を鑑みて、ユーザが、コンピュータ上のソフトウェアのダウンロードおよびインストールに気を遣うことを考えると、ユーザの助力を必要とすることは問題である。
【０００４】
ソフトウェアを利用する携帯用電子デバイス（例えば、携帯情報端末、メディアアシスタント、携帯電話など）の場合には、ソフトウェアは、通例、製造工程中に初めてインストールされる。その結果、ユーザが携帯用電子デバイスを受け取る時には、ソフトウェアは、予めインストールされており、携帯用電子デバイスは、完全に機能する。しかしながら、その後に、ソフトウェアの更新または変更が必要になった時に、多くの場合、携帯用電子デバイスにインストールされたソフトウェアを、エンドユーザが変更することはできない。ごく最近は、一部の携帯用電子デバイスは、ソフトウェアの更新を可能にしている。例えば、携帯用電子デバイス上の既存のソフトウェアを更新版ソフトウェアに完全に置き換えることのできるコンピュータに、携帯用電子デバイスを接続することができる。その結果生じる問題の一つは、携帯用電子デバイスは、しばしば、複数の機能に対応していることである。これら異なる機能は、異なるベンダーによって供給されうる異なるソフトウェアモジュールによって制御されている場合がある。つまり、携帯用電子デバイス上のソフトウェアのすべてを完全に置き換えることが適切でない場合が多い。したがって、異なるソフトウェアモジュールを、他のモジュールに支障を与えることなく更新することを可能にするソフトウェア更新技術を提供することが求められている。
【０００５】
すなわち、電子デバイス上のソフトウェアを更新するための自動的かつ安全な方法が求められている。
【発明の開示】
【０００６】
本発明は、電子デバイスですでに使用中のソフトウェアを更新するための改良技術に関する。一実施形態では、暗号を用いて安全に制御下で、ソフトウェアを更新できる。更新の前に、更新版ソフトウェアの信頼性と、特定の電子デバイスへの適合性とを確認できる。ソフトウェアは、モジュールごとに更新されてもよい。一実施形態では、サーバが、様々な電子デバイスのためのソフトウェア更新のホストとして機能し、データネットワークを介して適切なソフトウェア更新を電子デバイスに提供する。
【０００７】
本発明は、一般に、様々な種類のソフトウェアの更新に利用可能であるが、特に、デジタル著作権管理ソフトウェアに適している。セキュリティのために、電子デバイスで使用中のＤＲＭソフトウェアを更新する必要が生じる場合がある。本発明の改良技術によると、安全に制御下で、ＤＲＭソフトウェアを更新することができる。一実施例では、ＤＲＭソフトウェアの更新は、電子デバイスに提供されたＤＲＭソフトウェアライブラリを修正するよう機能する。
【０００８】
本発明は、少なくとも部分的にソフトウェアに従って動作する電子デバイスでの利用に適している。電子デバイスは、例えば、コンピュータ、携帯情報端末、メディアプレーヤ、または、携帯電話であってよい。
【０００９】
本発明は、方法、システム、デバイス、装置、または、コンピュータ読み取り可能な媒体など、様々な形態で実施可能である。以下では、本発明のいくつかの実施形態について説明する。
【００１０】
少なくとも部分的にソフトウェアに従って動作する電子デバイス上のソフトウェアを更新するための方法として、本発明の一実施形態は、デバイス情報をホストデバイスに送信する工程と、暗号化ソフトウェアモジュールを電子デバイスで受信する工程であって、暗号化ソフトウェアモジュールは、特に前記電子デバイスでの利用のためにホストデバイスで事前に暗号化されたものである工程と、暗号化ソフトウェアモジュールを電子デバイスで復号する工程と、ソフトウェアモジュールを電子デバイスにインストールする工程とを少なくとも備える。
【００１１】
携帯用電子デバイス上のソフトウェアを更新するための方法として、本発明の一実施形態は、デバイス情報をホストデバイスに送信する工程であって、デバイス情報は、デバイス記述情報と、公開暗号鍵と、現行バージョン識別子とを含む工程と、携帯用電子デバイスで暗号化ソフトウェアモジュールを受信する工程であって、暗号化ソフトウェアモジュールは、ホストデバイスが利用可能なソフトウェアモジュールを、デバイス記述情報および現行バージョン識別子に基づいて選択した後に、携帯用電子デバイスによって提供された公開暗号鍵を用いて暗号化することにより生成される工程と、携帯用電子デバイスにとって既知である秘密暗号鍵を用いて、携帯用電子デバイスで暗号化ソフトウェアモジュールを復号する工程と、復号されたソフトウェアモジュールを認証する工程と、復号工程および認証工程が成功した後に、ソフトウェアモジュールを携帯用電子デバイスにインストールする工程とを少なくとも備える。
【００１２】
コンピュータデバイス上のソフトウェアを更新するためのコンピュータプログラムコードを少なくとも含むコンピュータ読み取り可能な媒体として、本発明の一実施形態は、デバイス情報をホストデバイスに送信するためのコンピュータプログラムコードであって、デバイス情報は、デバイス記述情報と、第１の暗号鍵と、現行バージョン識別子とを含むコンピュータプログラムコードと、コンピュータデバイスで暗号化ソフトウェアモジュールを受信するためのコンピュータプログラムコードであって、暗号化ソフトウェアモジュールは、ホストデバイスが利用可能なソフトウェアモジュールを、デバイス記述情報および現行バージョン識別子に基づいて選択した後に、コンピュータデバイスによって提供された前記第１の暗号鍵を用いて暗号化することにより生成されるコンピュータプログラムコードと、コンピュータデバイスにとって既知である第２の暗号鍵を用いて、コンピュータデバイスで暗号化ソフトウェアモジュールを復号するためのコンピュータプログラムコードと、復号されたソフトウェアモジュールを認証するためのコンピュータプログラムコードと、復号および認証が成功した後にソフトウェアモジュールをコンピュータデバイスにインストールするためのコンピュータプログラムコードとを少なくとも備える。
【００１３】
携帯用電子デバイス上のソフトウェアモジュールを更新するための方法として、本発明の別の実施形態は、ネットワーク基盤のサーバデバイスでデバイス情報を受信する工程であって、デバイス情報は、携帯用電子デバイスに関する情報であり、デバイス記述情報と、公開暗号鍵と、携帯用電子デバイス上のソフトウェアモジュールの現行バージョン識別子とを含む工程と、ソフトウェアモジュールの更新バージョンがサーバデバイスから入手可能であるか否かを、携帯用電子デバイスに関するデバイス記述情報に基づいて判断する工程と、判断工程が、サーバデバイスから入手可能であると判断した場合に、携帯用電子デバイスによって提供された公開暗号鍵を用いて、ソフトウェアモジュールの更新バージョンを暗号化する工程と、暗号化されたソフトウェアモジュールを携帯用電子デバイスに送信する工程とを少なくとも備える。
【００１４】
コンピュータデバイス上のソフトウェアモジュールを更新するためのコンピュータプログラムコードを少なくとも含むコンピュータ読み取り可能な媒体として、本発明の別の実施形態は、ネットワーク基盤のサーバデバイスでデバイス情報を受信するためのコンピュータプログラムコードであって、デバイス情報は、コンピュータデバイスに関する情報であり、デバイス記述情報と、暗号鍵と、コンピュータデバイス上のソフトウェアモジュールの現行バージョン識別子とを含むコンピュータプログラムコードと、ソフトウェアモジュールの更新バージョンがサーバデバイスから入手可能であるか否かを、コンピュータデバイスに関するデバイス記述情報に基づいて判断するためのコンピュータプログラムコードと、上記判断が、サーバデバイスから入手可能であると判断した場合に、コンピュータデバイスによって提供された暗号鍵を用いて、ソフトウェアモジュールの更新バージョンを暗号化するためのコンピュータプログラムコードと、暗号化されたソフトウェアモジュールをコンピュータデバイスに送信するためのコンピュータプログラムコードとを少なくとも備える。
【００１５】
電子デバイス上のソフトウェアを更新するためのコンピュータプログラムコードを少なくとも含むコンピュータ読み取り可能な媒体として、本発明の一実施形態は、ホストデバイスにおいて、電子デバイスのための更新版ソフトウェアモジュールを特定するためのコンピュータプログラムコードと、電子デバイス上での利用のために、更新版ソフトウェアモジュールを暗号化するためのコンピュータプログラムコードと、暗号化されたソフトウェアモジュールを電子デバイスに送信するためのコンピュータプログラムコードと、暗号化されたソフトウェアモジュールを電子デバイスで復号するためのコンピュータプログラムコードと、ソフトウェアモジュールを電子デバイスにインストールするためのコンピュータプログラムコードとを少なくとも備える。
【００１６】
ネットワーク基盤のソフトウェア更新システムとして、本発明の一実施形態は、（ｉ）複数の移動クライアントデバイスであって、それぞれ、対応する移動クライアントデバイス上に存在する少なくとも１つのソフトウェアに従って動作する複数の移動クライアントデバイスと、（ｉｉ）複数のソフトウェアモジュールにアクセスできるサーバデバイスであって、ソフトウェアモジュールの各々は、移動クライアントデバイスの内の特定の１または複数の移動クライアントデバイス用であるサーバデバイスと、（ｉｉｉ）動作可能なようにサーバデバイスおよび移動クライアントデバイスに接続可能であり、デジタルメディア資産のためのメディア管理アプリケーションを動作させる少なくとも１つのクライアントデバイスと、を少なくとも備える。デジタルメディア資産は、ソフトウェアモジュールの内の少なくとも１つを有するデジタル著作権管理ライブラリによって保護される。クライアントデバイスは、第１のデータリンクを介してサーバデバイスとやり取りすることにより、更新すべき移動クライアントデバイス用の更新版ソフトウェアモジュールを取得する。更新版ソフトウェアモジュールは、デジタル著作権管理ライブラリに関する。その後、クライアントデバイスは、第２のデータリンクを介して移動クライアントデバイスとやり取りすることにより、更新すべき移動クライアントデバイスに更新版ソフトウェアモジュールを提供する。
【００１７】
本発明の他の態様および利点については、本発明の原理を例示する添付の図面を参照して行う以下の詳細な説明から明らかになる。
【発明を実施するための最良の形態】
【００１８】
本発明は、電子デバイスですでに使用中のソフトウェアを更新するための改良技術に関する。一実施形態では、暗号を用いて安全に制御下で、ソフトウェアを更新できる。更新の前に、更新版ソフトウェアの信頼性と、特定の電子デバイスへの適合性とを確認できる。ソフトウェアは、モジュールごとに更新されてもよい。一実施形態では、サーバが、様々な電子デバイスのためのソフトウェア更新のホストとして機能し、データネットワークを介して適切なソフトウェア更新を電子デバイスに提供する。
【００１９】
本発明は、一般に、様々な種類のソフトウェアの更新に利用可能であるが、特に、デジタル著作権管理ソフトウェアに適している。セキュリティのために、電子デバイスで使用中のＤＲＭソフトウェアを更新する必要が生じる場合がある。本発明の改良技術によると、安全に制御下で、ＤＲＭソフトウェアを更新することができる。一実施例では、ＤＲＭソフトウェアの更新は、電子デバイスに提供されたＤＲＭソフトウェアライブラリを修正するよう機能する。
【００２０】
本発明は、少なくとも部分的にソフトウェアに従って動作する電子デバイスでの利用に適している。電子デバイスは、例えば、コンピュータ、携帯情報端末、メディアプレーヤ、または、携帯電話であってよい。
【００２１】
以下では、図１Ａないし図７Ｂを参照しつつ、本発明の実施形態について説明する。ただし、本発明の範囲は、これらの実施形態に限定されないため、これらの図面に関連して本明細書に記載した詳細な説明が、例示を目的とした物であることは、当業者であれば容易に理解できる。
【００２２】
図１Ａは、本発明の一実施形態に従って、ソフトウェア更新システム１００を示すブロック図である。ソフトウェア更新システム１００は、メディア管理アプリケーション（ＭＭＡ）１０４を備えたクライアントデバイス１０２を備える。クライアントデバイス１０２は、例えば、デスクトップコンピュータなどのコンピュータである。メディア管理アプリケーション１０４は、クライアントデバイス１０２で利用可能なメディア資産を管理するよう機能するアプリケーションプログラムである。ソフトウェア更新システム１００は、さらに、ネットワーク１０８を介してクライアントデバイス１０２に接続できるサーバデバイス１０６を備える。ネットワーク１０８は、データネットワークであってよい。ネットワーク１０８は、グローバルネットワーク、広域ネットワーク、または、ローカルエリアネットワークの少なくとも一部を含んでよい。ネットワーク１０８は、有線および／または無線であってよい。
【００２３】
またさらに、ソフトウェア更新システム１００は、移動クライアントデバイス（ＭＣＤ）１１０を備える。ＭＣＤ１１０は、動作可能なように有線または無線でクライアントデバイス１０２に接続されてよい。一例では、ＭＣＤ１１０は、ＵＳＢケーブルなどの周辺機器用バスケーブルを介してクライアントデバイス１０２に接続してよい。別の例では、ＭＣＤ１１０は、無線ネットワーク（例えば、ブルートゥース、ＷｉＦｉ、ＷｉＭａｘ）などの無線リンクを介してクライアントデバイスに接続してよい。
【００２４】
本発明によると、クライアントデバイス１０２は、ＭＣＤ１１０上に存在するソフトウェアモジュールの更新を容易にすることができる。その際、クライアントデバイス１０２は、サーバデバイス１０６と通信する。サーバデバイス１０６は、適切な移動クライアントデバイスへの配布に利用可能な複数のソフトウェアモジュールにアクセスできる。より具体的には、クライアントデバイス１０２は、ＭＣＤ１１０とやり取りすることで、ソフトウェアモジュール１１２（すなわち、ＭＣＤ１１０にインストールされたソフトウェアモジュール−バージョン１（ＳＷＭ−Ｖ１））を特定する。次いで、クライアントデバイス１０２は、特定されたソフトウェアモジュール１２に関連付けられたバージョン標識１１４を格納する。図１Ａの例では、バージョン標識１１４は、ＭＣＤ１１０上にインストールされたソフトウェアモジュールがバージョン１（Ｖ１）であることを示している。次いで、クライアントデバイス１０２は、ネットワーク１０８を介してサーバデバイス１０６と通信することにより、ＭＣＤ１１０で利用するソフトウェアモジュールのより新しいバージョンすなわち更新バージョンが存在するか否かを判断できる。この例では、サーバデバイス１０６は、ソフトウェアモジュール１１６および１１８を備えており、ソフトウェアモジュール１１６はバージョン１（ＳＷＭ−Ｖ１）であり、ソフトウェアモジュール１１８はバージョン２（ＳＷＭ−Ｖ２）である。この例では、ソフトウェアモジュール１１６および１１８の両方が、ＭＣＤ１１０での使用に適していることとする。次いで、サーバデバイス１０６は、更新版ソフトウェアモジュール１１８、すなわち、バージョン２（ＳＷＭ−Ｖ２）を、クライアントデバイス１０２に提供してよい。その後、クライアントデバイス１０２は、ソフトウェアモジュール−バージョン２（ＳＷＭ−Ｖ２）をＭＣＤ１１０に転送してよい。
【００２５】
図１Ａのソフトウェア更新システム１００の例では、１つのクライアントデバイスおよび１つのＭＣＤが図示されているが、ソフトウェア更新システム１００は、通例、１つのサーバが、複数のクライアントデバイスを介して複数のＭＣＤ上のソフトウェアを更新できるシステムである。さらに、図１Ａに示したソフトウェア更新システム１００は、１または複数のクライアントデバイスを利用するが、別の実施形態では、ソフトウェア更新システムが、ソフトウェアを更新する際にクライアントデバイスを利用する必要はない。この場合、ＭＣＤは、ネットワークに接続して、サーバデバイス１０６と直接通信することができる。
【００２６】
図１Ｂは、ソフトウェアの更新が行われた後のソフトウェア更新システム１００’を示すブロック図である。ソフトウェア更新システム１００’は、ＭＣＤ１１０上のソフトウェアモジュールが更新された後のソフトウェア更新システム１００を表している。図１Ｂでは、ＭＣＤ１１０は、ソフトウェアモジュール−バージョン２（ＳＷＭ−Ｖ２）に関するソフトウェアモジュール１１２’を備え、クライアントデバイス１０２のバージョン標識１１４’は、ＭＣＤ１１０が現在、バージョン２（ＳＷＭ−Ｖ２）を使用していることを示している。
【００２７】
一実施形態では、ソフトウェアは、デジタル著作権管理（ＤＲＭ）ソフトウェアモジュールに関するものであってよい。また、ソフトウェアモジュールは、ソフトウェアライブラリに関するものであってもよい。一例では、更新されるソフトウェアモジュールは、ＤＲＭライブラリであってよい。
【００２８】
メディア管理アプリケーションの一例としては、カリフォルニア州クパチーノのＡｐｐｌｅ  Ｃｏｍｐｕｔｅｒ社が提供するｉＴｕｎｅｓ（登録商標）アプリケーションが挙げられる。サーバデバイスの一例としては、カリフォルニア州クパチーノのＡｐｐｌｅ  Ｃｏｍｐｕｔｅｒ社が提供するｉＴｕｎｅｓ（登録商標）ミュージックストアのサーバが挙げられる。
【００２９】
図２は、本発明の一実施形態に従って、サーバ側ソフトウェア更新処理２００を示すフローチャートである。サーバ側ソフトウェア更新処理２００は、例えば、サーバによって実行される。サーバとは、クライアントに接続するコンピュータデバイス、または、そのコンピュータデバイス上で動作するソフトウェアプログラムである。サーバは、直接またはネットワークを介してクライアントに接続できる。例えば、図１Ａに示したクライアントデバイス１０２またはサーバデバイス１０６を、サーバと呼ぶことができる。
【００３０】
サーバ側ソフトウェア更新処理２００は、ソフトウェア更新を実行すべきか否かを判断する判断工程２０２から始まる。判断工程２０２が、ソフトウェア更新を実行すべきではないと判断した場合には、サーバ側ソフトウェア更新処理２００は、ソフトウェア更新を実行すべき時まで待機する。ソフトウェア更新は、自動的に実行されてもよいし、ユーザの要求に応じて実行されてもよい。いずれにしても、ソフトウェア更新が必要であると、判断工程２０２が判断した場合に、クライアントのためのソフトウェアモジュール（ＳＷＭ）が特定される（工程２０４）。工程２０４においてソフトウェアモジュールが特定されると、ソフトウェアモジュールは、クライアントよるアクセスに向けて暗号化される（工程２０６）。工程２０４で特定されたソフトウェアモジュールは、クライアント用に特に設計されたものであり、ソフトウェアモジュールの暗号化とは、そのクライアントに利用を限定することである。その後、暗号化ソフトウェアモジュールは、クライアントに送信される（工程２０８）。工程２０８が完了すると、サーバ側ソフトウェア更新処理２００は終了する。
【００３１】
図３は、本発明の一実施形態に従って、クライアント側ソフトウェア更新処理３００を示すフローチャートである。クライアント側ソフトウェア更新処理３００は、例えば、本発明の一実施形態に従って動作するクライアントによって実行される。一例として、クライアントは、通例、ソフトウェアを利用する電子デバイス、または、その電子デバイス上で動作するソフトウェアプログラムである。例えば、図１Ａに示した移動クライアントデバイス１１０を、サーバと呼ぶことができる。
【００３２】
クライアント側ソフトウェア更新処理３００は、ソフトウェアモジュールをクライアントにインストールすべきか否かを判断する判断工程３０２から始まる。ソフトウェアモジュールをインストールすべきでないと、判断工程３０２が判断した場合には、クライアント側ソフトウェア更新処理３００は、クライアントにソフトウェアモジュールをインストールする必要が生じるまで待機する。換言すれば、クライアント側ソフトウェア更新処理３００は、ソフトウェアモジュールをクライアントにインストールすべき時に呼び出される。判断工程３０２が、ソフトウェアモジュールをインストールすべきであると判断すると、暗号化ソフトウェアモジュールが、クライアントにおいて復号される。復号工程３０４が完了すると、ソフトウェアモジュールは、クライアントにインストールされる（工程３０６）。ソフトウェアモジュールのインストール（工程３０６）が完了すると、クライアント側ソフトウェア更新処理３００は終了する。
【００３３】
図４Ａおよび４Ｂは、本発明の一実施形態に従って、クライアント側ソフトウェア更新処理４００を示すフローチャートである。クライアント側ソフトウェア更新処理４００は、例えば、本発明の一実施形態に従って動作するクライアントによって実行される。一例として、図１Ａを参照すると、クライアントデバイス１０２、または、その上で動作するメディア管理アプリケーション１０４を、クライアントと呼ぶことができる。
【００３４】
クライアント側ソフトウェア更新処理４００は、メディア管理アプリケーションが起動されたか否かを判断する判断工程４０２から始まる。メディア管理アプリケーションが起動されていないと判断工程４０２が判断した場合、クライアント側ソフトウェア更新処理４００は、かかるイベントに向けて待機する。一方、メディア管理アプリケーションが起動されたと判断工程４０２が判断した場合、判断工程４０４が、利用可能なソフトウェアモジュールを確認する。ここで、利用可能なソフトウェアモジュールは、通例、対応する移動クライアントデバイス（ＭＣＤ）での利用に適したソフトウェアモジュールのより新しいバージョンである。クライアント側ソフトウェア更新処理４００は、起動されるごとに、利用可能なソフトウェアモジュールを確認する必要はなく、定期的に（例えば、毎週）、確認が行われてよい。
【００３５】
利用可能なソフトウェアモジュールの確認が実行されるべきであると判断工程４０４が判断した場合、バージョン要求が、サーバに送信される（工程４０６）。バージョン要求は、少なくとも、現行バージョン識別子と、ＭＣＤ記述情報とを含む。ＭＣＤ記述情報は、ＭＣＤの一般的な特性、機能、または、属性を記述する情報である。
【００３６】
次に、判断工程４０８が、バージョン応答がサーバから受信されたか否かを判断する。バージョン応答が受信されていないと判断工程４０８が判断した場合、クライアント側ソフトウェア更新処理４００は、かかる応答に向けて待機できる。ただし、待機期間は、非ブロッキングスレッドで制限または処理されてよい。いずれの場合でも、バージョン応答が受信されたと判断工程４０８が判断すると、利用可能バージョン標識が、クライアントに格納される（工程４１０）。バージョン応答は、利用可能バージョン標識をクライアントに提供する。一実施形態では、利用可能バージョン標識は、ＭＣＤのための更新版ソフトウェアモジュールがサーバから入手可能であるか否かを示してよい。
【００３７】
この時点で、クライアント側ソフトウェア更新処理４００は、ＭＣＤがクライアントに接続するまで、効果的に待機する。これは、他の実施形態では必要ないが、接続によって、ＭＣＤは、クライアント側ソフトウェア更新処理４００の残りの部分を完了できるようになる。切断を待つ間に、ＭＣＤは、ソフトウェア更新に関係ない他の動作を実行できる。
【００３８】
より具体的には、図４Ａおよび４Ｂに示すように、ブロック４１０の後、または、判断工程４０４において利用可能なソフトウェアモジュールが見つからなかった場合に、判断工程４１２が、ＭＣＤがクライアントに接続されているか否かを判断する。通例、判断工程４１２は、ＭＣＤが最近クライアントに接続したか否かについての判断を行う。ＭＣＤが接続されていないと判断工程４１２が判断した場合には、随意的に、他の処理４１４が、クライアントによって実行されてよい。かかる他の処理４１４は、通常は、ソフトウェアモジュールの更新に関係ない処理である。次いで、判断工程４１６が、クライアント側ソフトウェア更新処理４００を終了すべきか否かを判断する。クライアント側ソフトウェア更新処理４００を終了すべきであると判断工程４１６が判断した場合、クライアント側ソフトウェア更新処理４００は終了する。あるいは、クライアント側ソフトウェア更新処理４００を終了すべきではないと判断工程４１６が判断した場合には、クライアント側ソフトウェア更新処理４００は、判断工程４１２に戻って繰り返し、ＭＣＤがクライアントに接続されるのを待つ。
【００３９】
ＭＣＤがクライアントに接続されたと判断工程４１２が判断すると、判断工程４１８が、利用可能バージョン標識が存在するか否かを判断する。ここで、利用可能バージョン標識は、サーバからのバージョン応答で供給された情報に基づいて、以前の工程４１０でクライアントに格納されている。利用可能バージョン標識が存在すると判断工程４１８が判断した場合には、ＭＣＤで利用可能なソフトウェアモジュールについて、ソフトウェアモジュール要求が送信される（工程４２０）。ここで、ソフトウェアモジュール要求は、工程４２０でサーバに送信され、利用可能なソフトウェアバージョンをクライアントに提供することを要求する。ソフトウェアモジュール要求は、所望の利用可能なソフトウェアモジュールのバージョン識別子と、利用可能なソフトウェアモジュールの暗号化に用いる暗号鍵（すなわち、公開暗号鍵）とを含んでよい。次に、判断工程４２２が、ソフトウェアモジュール応答がサーバから受信されたか否かを判断する。ソフトウェアモジュール応答がまだ受信されていないと判断工程４２２が判断した場合、クライアント側ソフトウェア更新処理４００は、かかる応答に向けて待機できる。ソフトウェアモジュール応答が受信されたと判断工程４２２が判断すると、ソフトウェアモジュール応答によって提供された暗号化ソフトウェアモジュールが、ＭＣＤにコピーされてよい（工程４２４）。工程４２４の後、または、判断工程４１８で利用可能なバージョン標識が存在しないと判断された後には、クライアント側ソフトウェア更新処理４００は完了して終了する。
【００４０】
図５Ａおよび５Ｂは、本発明の一実施形態に従って、サーバ側ソフトウェア更新処理５００を示すフローチャートである。サーバ側ソフトウェア更新処理５００は、例えば、本発明の一実施形態に従って動作するサーバによって実行される。一例として、図１Ａを参照すると、サーバデバイス１０６、または、その上で動作するソフトウェアアプリケーションを、サーバと呼ぶことができる。
【００４１】
通例、サーバは、複数の異なる処理を実行することができる。サーバ側ソフトウェア更新処理５００は、サーバによって実行可能なかかる処理の内の１つであると見なされる。したがって、図５Ａおよび５Ｂに示す処理は、クライアントデバイス（例えば、移動クライアントデバイス）のためのソフトウェア更新を目的とする処理であり、かかる処理は、サーバで実行される他の処理と関連しあってもよい。
【００４２】
サーバ側ソフトウェア更新処理５００は、バージョン要求が受信されたか否かを判断する判断工程５０２から始まる。バージョン要求が受信されたと判断工程５０２が判断した場合、ＭＣＤ記述情報に基づいて、ＭＣＤのためのソフトウェアモジュールの最新バージョンが判定される（工程５０４）。ここで、クライアントから受信されたバージョン要求は、ＭＣＤ上のソフトウェアモジュールの現行バージョンの標識と、ＭＣＤ記述情報とを含む。ＭＣＤ記述情報は、ＭＣＤの一般的な特性、機能、または、属性を記述する情報である。
【００４３】
次に、ＭＣＤ上の現行バージョンのソフトウェアモジュールが、サーバから入手可能な最新バージョンと同じ物であるか否かを、判断工程５０６が判断する。ＭＣＤ上の現行バージョンのソフトウェアモジュールがサーバから入手可能な最新バージョンと同じであると判断工程５０６が判断した場合には、ＭＣＤのためのソフトウェアモジュールについて利用可能なバージョンが存在しないことを示すバージョン応答が、クライアントに送信される（工程５０８）。換言すれば、この状況では、ＭＣＤ上のソフトウェアモジュールを更新する必要がない。一方、ＭＣＤ上の現行バージョンのソフトウェアモジュールがサーバから入手可能な最新バージョンと同じではないと判断工程５０６が判断した場合には、ＭＣＤのためのソフトウェアモジュールについて利用可能なバージョンが存在することを示すバージョン応答が、クライアントに送信される（工程５１０）。
【００４４】
ブロック５０８および５１０の後、または、判断工程５０２でバージョン要求が受信されていないと判断された後には、ソフトウェアモジュール要求が受信された場合に、さらなる処理が、サーバ側ソフトウェア更新処理５００によって実行されてよい。特に、ソフトウェアモジュール要求が受信されたと判断工程５１２が判断した場合には、ＭＣＤのための最新バージョンのソフトウェアモジュールが取得される（工程５１４）。ここで、ＭＣＤのための最新バージョンのソフトウェアモジュールは、サーバから取得される（工程５１４）。換言すれば、サーバは、様々なＭＣＤのための様々なバージョンのソフトウェアモジュールを利用可能にする中枢として機能する。
【００４５】
次に、取得されたソフトウェアモジュールは、ＭＣＤのための公開鍵を用いて暗号化される（工程５１６）。ここで、ソフトウェアモジュール要求は、取得されたソフトウェアモジュールを（直接的または間接的に）暗号化する際に用いられる公開鍵を提供する。公開鍵は、ＭＣＤに対して特に関連付けられた鍵ペアの一部である。一実施形態では、鍵ペアは、ＭＣＤに格納される。取得されたソフトウェアモジュールが工程５１６で暗号化されると、ソフトウェアモジュール応答がクライアントに送信される（工程５１８）。ソフトウェアモジュール応答は、少なくとも、ＭＣＤのための暗号化ソフトウェアモジュールを含む。
【００４６】
その後、随意的に、他の処理５２０が、サーバで実行されてよい。その後の或る時点で、判断工程５２２が、サーバ側ソフトウェア更新処理５００を終了すべきか否かを判断する。サーバ側ソフトウェア更新処理５００を終了すべきではないと判断工程５２２が判断した場合、サーバ側ソフトウェア更新処理５００は、サーバ側ソフトウェア更新処理５００の最初に戻る。あるいは、サーバ側ソフトウェア更新処理５００を終了すべきであると判断工程５２２が判断した場合、サーバ側ソフトウェア更新処理５００は終了する。
【００４７】
一般に、クライアントまたはサーバを、ホストデバイスと見なすことができる。図４Ａおよび４Ｂにおいて、クライアントは、ＳＷＭの更新バージョンが存在するか否かを判断するために、サーバとやり取りする。この実施形態では、サーバが、ＳＷＭの更新バージョンが存在するか否かを判断し、存在する場合には、更新バージョンをクライアントに通知する。その後、適切な時に、クライアントは、ＭＣＤのためのＳＷＭの更新バージョンを取得する。
【００４８】
しかしながら、別の実施形態では、クライアントが、ＳＷＭの更新バージョンが存在するか否かを判断してよい。この実施形態は、図４Ａおよび４Ｂの実施形態と異なる一実施形態である。かかる実施形態では、クライアントが、定期的に、複数の異なるデバイスについての最新バージョンのテーブル（または、リスト）に関して、サーバに問い合わせる。次いで、クライアントは、テーブル（異なるデバイスのための最新バージョンを表すバージョン番号を含んでよい）を格納する。その後、ＭＣＤがクライアントに接続されると、クライアントは、ＭＣＤ記述情報（ＭＣＤ上の現行バージョンを含む）を取得して、現行バージョンと、格納されたテーブルに示されたそのデバイスで利用可能な最新バージョンとを比較する。利用可能なソフトウェアバージョンが存在する場合、クライアントは、サーバからの適切なソフトウェア更新を（例えば、バージョン番号を用いて）要求する。適切なソフトウェア更新が受信されると、利用可能なソフトウェアモジュールは、ＭＣＤに提供されることができる。
【００４９】
図６は、本発明の一実施形態に従って、移動クライアント接続処理６００を示すフローチャートである。移動クライアント接続処理６００は、例えば、本発明の一実施形態に従って動作する携帯用クライアントによって実行される。例えば、携帯用クライアントは、移動クライアントデバイス（ＭＣＤ）であってよい。一例として、図１Ａを参照すると、移動クライアントデバイス１１０、または、その上で動作するソフトウェアアプリケーションを、ＭＣＤと呼ぶことができる。
【００５０】
移動クライアント接続処理６００は、ＭＣＤがクライアントに接続されているか否かを判断する判断工程６０２から始まる。有線または無線のいずれでもＭＣＤがクライアントに接続されていないと判断工程６０２が判断した場合、移動クライアント接続処理６００は、かかる接続に向けて待機する。換言すれば、移動クライアント接続処理６００は、ＭＣＤとクライアントとの間で接続が確立されると呼び出される。いずれにしても、ＭＣＤとクライアントとの間に接続が存在すると判断工程６０２が判断すると、ＭＣＤ記述情報および現行バージョン識別子が、クライアントに提供される（工程６０４）。ここで、ＭＣＤ記述情報および現行バージョン識別子は、ＭＣＤによって管理されている。次いで、他の処理６０６が、ＭＣＤで実行されてよい。かかる他の処理６０６は、通例、移動クライアント接続処理６００の一部ではないが、前後関係を示すために、図６に図示されている。実行可能な他の処理６０６の例としては、ＭＣＤとクライアントとの間の同期動作（例えば、音楽ライブラリ、カレンダーなどの同期）が挙げられる。デジタル資産またはデータの同期に関するさらなる詳細については、２００２年１０月２１日出願の米国特許Ｎｏ．１０／２７７，４１８、「ＩＮＴＥＬＬＩＧＥＮＴ  ＩＮＴＥＲＡＣＴＩＯＮ  ＢＥＴＷＥＥＮ  ＭＥＤＩＡ  ＰＬＡＹＥＲ  ＡＮＤ  ＨＯＳＴ  ＣＯＭＰＵＴＥＲ」（代理人整理番号：ＡＰＬ１Ｐ２２８Ｘ１）に記載されている。この出願は、参照によって本明細書に組み込まれる。
【００５１】
ＭＣＤがクライアントに接続されている或る時点に、ソフトウェアの更新が実行される。ソフトウェアの更新は、安全な方法で実行される。したがって、移動クライアント接続処理６００によると、ＭＣＤは、暗号化されたソフトウェアモジュールをクライアントから受信する。移動クライアント接続処理６００は、暗号化ソフトウェアモジュールが受信されたか否かを判断する判断工程６０８を備える。暗号化ソフトウェアモジュールがＭＣＤで受信されたと判断工程６０８が判断した場合、暗号化ソフトウェアモジュールは、ＭＣＤのメモリ内に格納される（工程６１０）。メモリは、フラッシュメモリ、ディスクドライブなど、多くの異なる種類の記憶装置であってよい。ブロック６１０の後、または、判断工程６０８で暗号化ソフトウェアモジュールが受信されていないと判断された後に、移動クライアント接続処理６００は終了する。
【００５２】
図７Ａおよび７Ｂは、本発明の一実施形態に従って、移動クライアント切断処理７００を示すフローチャートである。移動クライアント切断処理７００は、例えば、本発明の一実施形態に従って動作する携帯用クライアントによって実行される。例えば、携帯用クライアントは、移動クライアントデバイス（ＭＣＤ）であってよい。一例として、図１Ａを参照すると、移動クライアントデバイス１１０、または、その上で動作するソフトウェアアプリケーションを、ＭＣＤと呼ぶことができる。  
【００５３】
移動クライアント接続処理７００は、ＭＣＤがクライアントから切断されたか否かを判断する判断工程７０２から始まる。ＭＣＤがクライアントから切断されたと判断工程７０２が判断した場合、移動クライアント切断処理７００は、かかる切断を待つ。換言すれば、ＭＣＤがクライアントから切断されると、移動クライアント切断処理７００が開始される。したがって、ＭＣＤがクライアントから切断されたと判断工程７０２が判断した場合、判断工程７０４が、暗号化ソフトウェアモジュールがＭＣＤ上に存在するか否かを判断する。ここで、図６のブロック６１０について上述したように、移動クライアント接続処理６００は、適切な暗号化ソフトウェアモジュールをＭＣＤに格納するよう動作する。判断工程７０４では、暗号化ソフトウェアモジュールがＭＣＤに格納されたか否かについて、判断がなされる。
【００５４】
暗号化ソフトウェアモジュールがＭＣＤに格納されたと判断工程７０４が判断した場合、暗号化ソフトウェアモジュールは、ＭＣＤ内に準備された秘密鍵を用いて復号される（工程７０６）。ここで、ＭＣＤは、上述のように、一対の暗号鍵を備える。これらの暗号鍵は、上述の公開鍵と、秘密鍵とを含む。暗号化ソフトウェアモジュールの復号は、必要な秘密鍵を用いて実行される。したがって、暗号化ソフトウェアモジュールは、そのＭＣＤで使用するために暗号化された場合にのみ、適切に復号できる。換言すれば、ソフトウェアモジュールの暗号化は、ＭＣＤに格納された秘密鍵と対をなす公開鍵を用いて実行されたことを意味する。
【００５５】
復号７０６が成功した場合、ソフトウェアモジュールは、検証されてよい（工程７０８）。一実施形態では、ソフトウェアモジュールは、デジタル署名を用いて検証されてよい（工程７０８）。デジタル署名の確認により、ソフトウェアモジュールの有効性が確立される。例えば、ＭＣＤの製造業者は、ＭＣＤでの利用を可能にする前に、ソフトウェアモジュールが本物（すなわち、製造業者によって許可されたもの）であることを保証することができる。次いで、判断工程７１０は、ソフトウェアモジュールが有効であるか否かを判断する。ここで、有効であるために、ソフトウェアモジュールは、適切に復号されるだけでなく、認証に成功する必要がある。
【００５６】
ソフトウェアモジュールが有効であると判断工程７１０が判断した場合、ソフトウェアモジュールがＭＣＤに適合しているか否かを、判断工程７１２が判断する。ここで、ソフトウェアモジュールは、ＭＣＤと関連付けられている場合に、ＭＣＤに適合していると判断されてよい。ソフトウェアモジュールは、ＭＣＤでの利用に適合する場合に、適切に関連付けられることができる。例えば、判断７１２は、ソフトウェアモジュールが、ＭＣＤのモデルおよび／またはハードウェアプラットフォームでの利用に適合しているか否かを判断できる。具体的な一例では、ソフトウェアモジュールは、ＭＣＤのモデルおよび／またはハードウェアプラットフォームのための１または複数の識別子を備えており、これらの識別子は、ＭＣＤに格納された同様の識別子と比較されてよい。
【００５７】
ソフトウェアモジュールがＭＣＤに適合していると判断工程７１２が判断した場合、ソフトウェアモジュールは、ＭＣＤにインストールされてよい（工程７１４）。次に、判定工程７１６は、ソフトウェアモジュールのインストールが成功したか否かを判断する。インストールが成功していないと判断工程７１６が判断した場合、インストール７１４は繰り返されてよい。ただし、ソフトウェアモジュールのインストールが繰り返し失敗する場合には、移動クライアント切断処理７００は、ソフトウェアモジュールのインストールを完了せずに終了してもよい。一方、ＭＣＤへのソフトウェアモジュールのインストールが成功したと判断工程７１６が判断した場合、アンインストールされたソフトウェアモジュールが、削除されてよい（工程７１８）。ここで、アンインストールされたソフトウェアモジュールとは、ＭＣＤのメモリに格納された（例えば、図６のブロック６１０）ものである。したがって、アンインストールされたソフトウェアモジュールの削除７１８は、セキュリティのため、および、ＭＣＤのメモリを解放するために実行される。さらに、現行バージョン標識が、ＭＣＤについて更新される（工程７２０）。ＭＣＤ上のソフトウェアモジュールが更新されて、現在は、現行バージョンのソフトウェアモジュールになっているため、現行バージョン標識の更新（工程７２０）は適切である。また、格納された現行バージョン標識は、上述のように、クライアントへの現行バージョン情報の提供（図６のブロック６０４）を容易にする。ブロック７２０の後、および、判断工程７０４、７１０、７１２のいずれかにおいて条件を満たさないと評価された後には、移動クライアント切断処理７００は完了して終了する。
【００５８】
認証に関して、デジタル署名などによる（上述の）ソフトウェアモジュールの認証は、ベンダーによって利用されてよい。一例として、更新版ソフトウェアモジュールは、第１のベンダーについては実現可能であるが、第２のベンダーは、電子デバイスにインストールまたは提供される前にソフトウェアモジュールが第２のベンダーによって承認されることを求めてもよい。例えば、第１のベンダーがソフトウェアのベンダーであり、第２のベンダーがハードウェアプラットフォームのベンダーである場合、第１のベンダーは、更新版ソフトウェアモジュールを電子デバイスに安全に提供することができるが、第２のベンダーは、電子デバイスにインストールされる前にソフトウェアモジュールが認証または検証されることを求めてもよい。さらに、第２のベンダーは、第１のベンダーによって提供された任意の暗号化とは別に、自身の暗号化レベルを提供してもよい。したがって、一実施例では、第１のベンダーのソフトウェアモジュールは、クライアントにとって利用可能になる前に、第２のベンダーのデジタル署名および／または暗号化と共にパッケージングされてよい。
【００５９】
上述のように、ソフトウェア更新処理について安全を確保しつつ制御するために、暗号鍵を利用することができる。さらなる安全および性能のために、複数の暗号鍵を組み合わせて用いてもよい。その結果として、公開鍵を利用する限りにおいて、ソフトウェアモジュールを直接暗号化するために、その公開鍵を利用する必要がない。一実施形態では、暗号化処理は、以下のように動作する。まず、ランダム暗号鍵（ランダム鍵）が生成される。一例として、ランダム鍵は、ランダム対称鍵である１２８ビットのＡＥＳ鍵であってよい。ソフトウェアモジュールは、最初に、ランダム鍵を用いて暗号化される。これにより、暗号化ソフトウェアモジュールが生成される。さらに、ランダム鍵は、電子デバイスによって提供された公開鍵を用いて暗号化される。これにより、暗号化された暗号鍵が生成される。一例では、暗号化された暗号鍵は、１０２４ビットのＲＳＡ鍵である。この実施形態では、電子デバイス（例えば、ＭＣＤ）は、暗号化ソフトウェアモジュールを第１の電子ファイルで受信し、暗号化された暗号鍵を第２の電子ファイルで受信する。その後、電子デバイスにソフトウェアモジュールをインストールするために、第１の電子ファイル内の暗号化された暗号鍵は、電子デバイスに存在する秘密鍵を用いて復号される。結果としての暗号鍵は、第１の電子ファイル内の暗号化ソフトウェアモジュールを復号するために利用できるランダム鍵である。次いで、ソフトウェアモジュールは、「クリア」な状態（すなわち、暗号化されていない状態）になり、電子デバイスにインストールできるようになる。
【００６０】
本発明に従ったソフトウェアモジュールの更新は、自動的に実行されてもよい。すなわち、クライアントが動作可能なようにサーバに接続している場合には、サーバは、クライアントのユーザの参加なしに、任意の更新されたソフトウェアモジュールをクライアントに提供することができる。あるいは、別の実施形態において、ユーザは、更新版ソフトウェアモジュールのインストールの許可のために、クライアント（例えば、携帯用電子デバイス）において指示されてもよい。
【００６１】
本発明の様々な態様、実施形態、実施例、または、機能を、別個または任意の組み合わせで利用することができる。
【００６２】
本発明は、ソフトウェアによって実施されることが好ましいが、ハードウェア、または、ハードウェアとソフトウェアとの組み合わせによって実施されてもよい。また、本発明は、コンピュータ読み取り可能な媒体上のコンピュータ読み取り可能なコードとして実現されてもよい。コンピュータ読み取り可能な媒体とは、コンピュータシステムによって読み取り可能なデータを格納できる任意のデータ記憶装置である。コンピュータ読み取り可能な媒体の例としては、読み取り専用メモリ、ランダムアクセスメモリ、ＣＤ−ＲＯＭ、ＤＶＤ、磁気テープ、光学式データ記憶装置、および、搬送波が挙げられる。また、コンピュータ読み取り可能な媒体は、コンピュータ読み取り可能なコードを分散的に格納および実行できるように、ネットワークに接続された複数のコンピュータシステムに分散されてもよい。
【００６３】
本発明には、数多くの利点がある。様々な態様、実施形態、または、実施例によって、以下の利点の内の１または複数を実現することができる。本発明の利点の一つは、ネットワークを介して安全にソフトウェアの更新を実行できる点である。ソフトウェア更新の安全性により、ソフトウェアのリバースエンジニアリングを防止できる。例えば、セキュリティを課すことにより、電子デバイスに送信される間のソフトウェアに対する不正な傍受および検査に対して保護することができる。本発明の別の利点は、電子デバイスが利用するソフトウェアをモジュールごとに更新できる点であり、この利点は、電子デバイスが、異なるベンダーによって提供されたソフトウェアまたはハードウェアを利用する場合に、特に有用である。本発明のさらに別の利点は、自動的にソフトウェアの更新を実行できるために、電子デバイスのユーザに対して、ソフトウェア更新の負担を掛けることがない点である。
【００６４】
本発明の多くの特徴および利点は、上述の説明から明らかになっている。さらに、多くの変形例および変更例が、当業者によって容易に想起されるため、本発明は、図示および説明された通りの正確な構造および動作に限定されるものではない。したがって、本発明の範囲には、すべての適切な変形例および等価物が含まれる。
【図面の簡単な説明】
【００６５】
【図１Ａ】本発明の一実施形態に従って、ソフトウェア更新システムを示すブロック図。
【図１Ｂ】ソフトウェアの更新が行われた後のソフトウェア更新システムを示すブロック図。
【図２】本発明の一実施形態に従って、サーバ側ソフトウェア更新処理を示すフローチャート。
【図３】本発明の一実施形態に従って、クライアント側ソフトウェア更新処理を示すフローチャート。
【図４Ａ】本発明の一実施形態に従って、クライアント側ソフトウェア更新処理を示すフローチャート。
【図４Ｂ】本発明の一実施形態に従って、クライアント側ソフトウェア更新処理を示すフローチャート。
【図５Ａ】本発明の一実施形態に従って、サーバ側ソフトウェア更新処理を示すフローチャート。
【図５Ｂ】本発明の一実施形態に従って、サーバ側ソフトウェア更新処理を示すフローチャート。
【図６】本発明の一実施形態に従って、移動クライアント接続処理を示すフローチャート。
【図７Ａ】本発明の一実施形態に従って、移動クライアント切断処理を示すフローチャート。
【図７Ｂ】本発明の一実施形態に従って、移動クライアント切断処理を示すフローチャート。
【図１Ａ】
2009503698.tif 000003
【図１Ｂ】
2009503698.tif 000004
【図２】
2009503698.tif 000005
【図３】
2009503698.tif 000006
【図４Ａ】
2009503698.tif 000007
【図４Ｂ】
2009503698.tif 000008
【図５Ａ】
2009503698.tif 000009
【図５Ｂ】
2009503698.tif 000010
【図６】
2009503698.tif 000011
【図７Ａ】
2009503698.tif 000012
【図７Ｂ】
2009503698.tif 000013
【国際調査報告】
2009503698.tif 000014
2009503698.tif 000015
2009503698.tif 000016
2009503698.tif 000017
2009503698.tif 000018