(57)【要約】  携帯可能な大容量記憶装置が、デジタル画像、映画および音楽のような大きなファイルを格納するために使用される。この大容量記憶装置は、装置の信頼できる動作を保証し、著作権で保護される材料のようなセキュアコンテンツの望まれていないコピーまたは格納を防止するために読み書き動作へのアクセスを制限するセキュリティメカニズムを伴うファームウェアを有する。そのセキュリティメカニズムは一般的にアクセスを制限するけれども、ファームウェアは、仮想マシンと協働するように動作することができて、仮想マシンが存在するならば仮想マシンがセキュアコンテンツにアクセスするとともにファームウェアと関連して動作して大容量記憶装置にデータを読み書きすることを可能にする。仮想マシンは、製造時にロードされるがアクティブ化はされないか、あるいは製造後にダウンロードされてアクティブ化される。仮想マシンについてのロイヤリティは、仮想マシンが装置内に存在していてかつアクティブ化されたときにのみ支払われる。
2010500656.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアアプリケーションが大容量記憶装置型メモリカードで使用されることを可能にする方法であって、
前記メモリカードのデータ記憶動作を実行させるファームウェアを提供するステップと、
前記カード内に１つ以上のアプリケーションプログラミングインターフェイスを提供するステップと、
前記カードにロードされるときにアクティブ化されない仮想マシンを提供するステップと、を含み、
前記メモリカードは、ユーザが前記ソフトウェアアプリケーションを使用することを望んだならば、前記仮想マシンをアクティブ化し、それにより前記仮想マシンの能力を利用するように動作可能である方法。
【請求項２】
請求項１記載の方法において、
前記仮想マシンについてのライセンス料をアクティブ化された場合に限って支払うステップをさらに含む方法。
【請求項３】
請求項１記載の方法において、
前記仮想マシンの能力を利用する前記ソフトウェアアプリケーションを前記カードにロードするステップをさらに含み、前記ソフトウェアアプリケーションは前記大容量記憶装置型メモリカードのプロセッサにより実行されるために前記仮想マシンに依拠する方法。
【請求項４】
請求項１記載の方法において、
前記仮想マシンは、消費者が前記カードを受け取る前に前記カードにロードされる方法。
【請求項５】
請求項１記載の方法において、
前記仮想マシンは、消費者が前記カードを受け取った後に前記カードに現場でロードされる方法。
【請求項６】
請求項１記載の方法において、
前記ファームウェアは、前記カードに格納されているデータに前記仮想マシンがアクセスすることをアクティブ化後に初めて可能にする方法。
【請求項７】
請求項３記載の方法において、
前記ソフトウェアアプリケーションは、デジタル著作権管理を含む方法。
【請求項８】
請求項７記載の方法において、
コンテンツの所有者または実施権者に、前記デジタル著作権管理アプリケーションにより管理されるコンテンツについて支払いをするステップをさらに含む方法。
【請求項９】
請求項７記載の方法において、
前記仮想マシンは、暗号化される方法。
【請求項１０】
請求項９記載の方法において、
前記仮想マシンは、前記メモリカードのハードウェアにより、前記カードにロードされるときに暗号化される方法。
【請求項１１】
請求項９記載の方法において、
前記暗号化された仮想マシンは、前記メモリカードのハードウェアの署名を含み、前記署名を作ったハードウェア以外のハードウェアによっては実行され得ない方法。
【請求項１２】
請求項５記載の方法において、
前記仮想マシンおよび／または前記仮想マシンのプロバイダの真正性をベリファイするステップをさらに含む方法。
【請求項１３】
携帯可能なフラッシュメモリ大容量記憶装置を提供する方法であって、
前記フラッシュメモリ大容量記憶装置を供給するステップと、
前記装置にロードするべきアプリケーションを有する第１者の信用証明書をベリファイするステップであって、前記信用証明書は前記第１者が前記アプリケーションをロードすることを可能にし、前記アプリケーションは仮想マシンを含むステップと、
を含む方法。
【請求項１４】
請求項１３記載の方法において、
前記アプリケーションを前記装置にロードするステップをさらに含む方法。
【請求項１５】
請求項１４記載の方法において、
前記アプリケーションは、前記装置が消費者に販売された後に、現場で前記装置にロードされる方法。
【請求項１６】
請求項１３記載の方法において、
前記アプリケーションに関連する料金の支払いを収集するステップをさらに含む方法。
【請求項１７】
請求項１６記載の方法において、
前記料金の一部を第２者に分配するステップをさらに含む方法。
【請求項１８】
請求項１６記載の方法において、
前記料金は、ロイヤリティを含む方法。
【請求項１９】
請求項１６記載の方法において、
前記料金は、品物またはサービスについての電子支払いを含む方法。
【請求項２０】
大容量記憶装置型記憶装置のユーザにソフトウェアアプリケーションを提供する方法であって、
メモリカードのデータ記憶動作を実行させるファームウェアを提供するステップと、
前記カード内に１つ以上のアプリケーションプログラミングインターフェイスを提供するステップと、
前記アプリケーションをロードするリクエストを受け取るステップと、その後に、
仮想マシンを前記カードにロードするステップと、
前記アプリケーションを前記カードにロードするステップと、
を含む方法。
【請求項２１】
請求項２０記載の方法において、
前記仮想マシンは、前記アプリケーションの要求側に知られずにロードされる方法。
【請求項２２】
請求項２０記載の方法において、
前記仮想マシンを前記カードにロードするリクエストを受け取るステップをさらに含む方法。
【請求項２３】
請求項２０記載の方法において、
前記アプリケーションをロードする前に、前記アプリケーションのプロバイダを認証するステップをさらに含む方法。
【請求項２４】
請求項２０記載の方法において、
前記仮想マシンをロードする前に、前記仮想マシンのプロバイダを認証するステップをさらに含む方法。
【請求項２５】
請求項１８または１９のいずれか記載の方法において、
前記認証するステップは、対称認証を含む方法。
【請求項２６】
請求項１８または１９のいずれか記載の方法において、
前記認証するステップは、非対称認証を含む方法。
【請求項２７】
請求項２０記載の方法において、
前記カード内の前記アプリケーションを暗号化するステップをさらに含む方法。
【請求項２８】
請求項２０記載の方法において、
前記カード内の前記仮想マシンを暗号化するステップをさらに含む方法。
【請求項２９】
請求項２２または２３のいずれか記載の方法において、
前記暗号化するステップは、前記メモリカードのコントローラに格納されている鍵を利用するステップを含む方法。
【請求項３０】
請求項２０記載の方法において、
前記アプリケーションは、動作するために前記仮想マシンを必要とする方法。
【請求項３１】
大容量記憶装置型記憶装置とともに使用されるように提供される仮想マシンを動作可能にする方法であって、
前記メモリカードのデータ記憶動作を実行させるファームウェアを提供するステップと、
仮想マシンを前記カードにロードするステップと、
前記仮想マシンの機能を利用するリクエストを前記カードの中に受け取るステップと、その後に、
前記仮想マシンが機能するために必要なアプリケーションプログラミングインターフェイスを提供し、これにより前記仮想マシンが利用されることを可能にするステップと、
を含む方法。
【請求項３２】
請求項３１記載の方法において、
前記アプリケーションプログラミングインターフェイスを提供するステップをさらに含む方法。
【請求項３３】
請求項３１記載の方法において、
前記仮想マシンの使用が可能にされたならば、前記仮想マシンについてライセンス料を支払うステップをさらに含む方法。
【請求項３４】
大容量記憶装置型記憶装置に用いられるソフトウェアアプリケーションをアクティブ化または非アクティブ化する方法であって、
前記記憶装置のデータ記憶動作を実行させるファームウェアを提供するステップであって、前記ソフトウェアアプリケーションが、前記記憶装置に格納されているデータにアクセスするために前記ファームウェアデータ記憶動作に依拠するステップと、
前記装置の前記ファームウェアでワンタイムパスワード値を生成するステップと、
前記装置の前記ファームウェアで生成された前記ワンタイムパスワード値を前記装置の外で生成されたワンタイムパスワード値と比較するステップと、
前記装置により生成された値が前記装置の外で生成された値と一致することを前記比較するステップでベリファイされたならば、前記ソフトウェアアプリケーションの実行を可能にするかまたは不可能にするステップと、
を含む方法。
【請求項３５】
請求項３４記載の方法において、
前記ワンタイムパスワードを生成するステップは、前記パスワードを、種と、前記ソフトウェアアプリケーションに関連付けられた一意の識別子および前記装置に関連付けられた一意の識別子のうちの１つ以上との関数として作成するステップを含む方法。
【請求項３６】
請求項３５記載の方法において、
前記ワンタイムパスワードを生成するステップは、前記パスワードを前記装置タイプの関数として作成するステップをさらに含む方法。
【請求項３７】
請求項３４記載の方法において、
多くの大容量記憶装置型記憶装置が生産され、前記装置の各々は、同じ種を含むけれども、一意の識別子に基づいて値を様々に変化させるワンタイムパスワード生成アルゴリズムを利用することによって所与のカウントについて異なるワンタイムパスワード値を生じさせる方法。
【請求項３８】
請求項３４記載の方法において、
前記一意の識別子は、特定の装置に一意に関連付けられた数を含む方法。
【請求項３９】
請求項３４記載の方法において、
前記一意の識別子は、前記ソフトウェアアプリケーションの特定の要求に一意に関連付けられた数を含む方法。
【請求項４０】
大容量記憶装置型フラッシュメモリ装置であって、
コントローラと、
ランダムアクセスメモリと、
フラッシュメモリを含む大容量記憶装置と、
仮想マシンと、
前記動作が望まれるときに、前記仮想マシンの動作を可能にするメカニズムと、を備え、
前記装置のユーザの活動によって前記メカニズムがトリガされたならば、前記仮想マシンに関連するライセンス料が支払われる大容量記憶装置型フラッシュメモリ装置。
【請求項４１】
請求項４０記載の装置において、
前記仮想マシンは、前記大容量記憶装置フラッシュメモリに格納される装置。
【請求項４２】
大容量記憶装置型フラッシュメモリ装置であって、
コントローラと、
ランダムアクセスメモリと、
フラッシュメモリを含む大容量記憶装置と、
仮想マシンと、
前記仮想マシンを動作可能にするための手段と、を備え、
前記動作可能にするための手段がトリガされたときに、前記仮想マシンについての料金の支払いが開始される大容量記憶装置型フラッシュメモリ装置。
【請求項４３】
大容量記憶装置型メモリカードであって、
フラッシュメモリと、
コントローラと、
前記フラッシュメモリの読み出し動作および書き込み動作を制御するファームウェアであって、前記読み出し動作および書き込み動作へのアクセスを制限するセキュリティルーチンを前記ファームウェア内に含むファームウェアと、
仮想マシンがないときの前記カードの動作のための、前記ファームウェアの第１の動作状態と、
仮想マシンがあるときの前記カードの動作のための、前記ファームウェアの第２の動作状態と、を備え、
前記第２の動作状態の間、前記ファームウェアの前記セキュリティルーチンは読み出しおよび書き込み保護されるデータからのデータへのアクセスを前記仮想マシンに許す大容量記憶装置型メモリカード。
【請求項４４】
請求項４３記載の大容量記憶装置型メモリカードにおいて、
前記仮想マシンのためのメモリスペースは、前記フラッシュメモリ内に確保される大容量記憶装置型メモリカード。
【請求項４５】
請求項４３記載の大容量記憶装置型メモリカードにおいて、
前記カードは、仮想マシンが前記カードにロードされるまでは前記第１の動作状態で動作し、その後は前記第２の動作状態で動作する大容量記憶装置型メモリカード。
【請求項４６】
請求項４５記載の大容量記憶装置型メモリカードにおいて、
前記仮想マシンとともにアプレットがロードされる大容量記憶装置型メモリカード。
【請求項４７】
請求項４５記載の大容量記憶装置型メモリカードにおいて、
前記アプレットは、デジタル著作権管理アプリケーションを含む大容量記憶装置型メモリカード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には携帯可能な大容量記憶装置とこの装置上で動作するファームウェアおよびソウェトに関し、特にソフトウェアおよび他のコンテンツを提供して、それをアクティブ化し、またそのために支払いをすることに関する。
【背景技術】
【０００２】
スマートカードは、しばらく前から普及していて、特にキャッシュカードおよびクレジットカードとして頻繁に使用される。スマートカードは、その名前が示唆するように、プロセッサ制御され、そして識別データとトランザクション関連データとを保持する少量のメモリも含む。Ｊａｖａ（ジャバ）ベースのプログラムをスマートカード上で作成して動作させる能力が最近開発されて普及しつつある。Ｊａｖａベースのプログラムは、デジタルカメラおよびミュージックプレーヤで通常使用される大容量記憶装置メモリカードのような他のインテリジェント装置でも実行され得る。これらの他のカードは、スマートカードに格納されるトランザクションおよび識別データより何桁も大きい写真および音楽のような非常に大きなデータのライブラリを格納しアクセスしなければならないので、大容量記憶装置として認識されている。これらの大容量記憶装置カードの例は、コンパクトフラッシュ（“ＣＦ”）カード、セキュアデジタル（“ＳＤ”）カード、ミニＳＤカード、マイクロＳＤカード、マルチメディア（“ＭＭＣ”）カード、およびメモリスティックである。列挙された例のほかに、異なるフォーマットの大容量記憶装置カードが多数ある。携帯可能なフラッシュメモリベースのユニバーサル・シリアル・バス（“ＵＳＢ”）ドライブは、他の１つのタイプの携帯可能な大容量記憶装置である。
【０００３】
Ｊａｖａ  Ｃａｒｄ（ジャバカード（登録商標））技術は、Ｊａｖａプログラミング言語で書かれたプログラムをスマートカードおよび他の小型で資源制約的装置の上で動作させることを可能にする。開発者は、標準的なソフトウェア開発ツールおよび環境を用いてプログラムを作ってテストし、その後にそれらを、Ｊａｖａ  Ｃａｒｄ技術対応装置にインストールされ得る形に変換することができる。Ｊａｖａ  Ｃａｒｄプラットフォームのためのアプリケーションソフトウェアは、アプレット、あるいは（それをブラウザアプレットと区別するために）より明確にＪａｖａ  Ｃａｒｄアプレットまたはカードアプレットと称される。
【０００４】
Ｊａｖａ  Ｃａｒｄ技術は、Ｊａｖａプログラミング言語で書かれたプログラムが小型メモリカード上で動作することを可能にするけれども、そのような小型装置はＪａｖａプラットフォームの全機能をサポートするには余りに非力である。従って、Ｊａｖａ  Ｃａｒｄプラットフォームは、Ｊａｖａプラットフォームの機能の慎重に選択されカスタマイズされた部分集合だけをサポートする。この部分集合は、小型装置のためのプログラムを書くのに良く適する機能を提供し、Ｊａｖａプログラミング言語のオブジェクト指向能力を維持する。
【０００５】
Ｊａｖａ  Ｃａｒｄは１つのタイプの仮想マシンである。他の仮想マシンも利用可能であり、仮想マシンは、物理的なプロセッサの抽象概念であって在来のプロセッサの仮想相対物を有する。Ｊａｖａ言語の場合、Ｊａｖａ仮想マシンは、コンパイルされたＪａｖａバイナリコードと基礎のハードウェアプラットフォームのマイクロプロセッサとの間のインターフェイスとして作用するソフトウェアである。
【０００６】
そのような小型装置で実行されたときに特に有益な１つのアプリケーションは、音楽や映画などのような保護されたコンテンツのための支払いに関連する。
【０００７】
Ｊａｖａで書かれたアプリケーションを動作させるためには、Ｊａｖａ  Ｃａｒｄ仮想マシンがカードにロードされてアクティブ化されなければならない。マシンの各要求は、サン（Ｓｕｎ）またはそのようなコンポーネントの供給業者にライセンス料を支払うことを必要とする。スマートカードの主な目的はトランザクションであるので、ライセンス料のコストは、カードの発行者にとってビジネスをするためのコストとして容認可能である。しかし、大容量記憶装置型メモリカードのユーザは、仮想マシンが可能にする付加的なアプリケーションの用途を持っているかもしれないし、あるいは持っていないかもしれない。なぜならば、典型的なユーザは、主としてデータ格納を目的としてカードを所有し使用するからである。従って、製造業者はライセンス料のコストを当然のこととして肩代わりさせたり吸収したりすることはできない。さらに、１つまたは複数の仮想マシン上で動作するアプレットまたは他のプログラムの各々も、（その用途を持っていないかもしれないユーザに）当然のこととして肩代わりさせたり、あるいは吸収したりすることのできないライセンス料を必要とするかもしれない。
【０００８】
Ｊａｖａ  Ｃａｒｄ仮想マシンの役割は、Ｊａｖａ  Ｃａｒｄプラットフォームのためのソフトウェアの生産および展開のためのプロセスの文脈で最善に理解される。Ｊａｖａ  Ｃａｒｄシステムを構成するコンポーネントは幾つかあり、それはＪａｖａ  Ｃａｒｄ仮想マシン、Ｊａｖａ  Ｃａｒｄプラットフォームのためのコンバータ（“Ｊａｖａ  Ｃａｒｄコンバータ”）、端末インストレーションツール、および装置上で動作するインストールプログラムを含む。Ｊａｖａ  Ｃａｒｄアプレットの開発は他のＪａｖａプログラムの場合と同様に始まる。すなわち、開発者は１つ以上のＪａｖａクラスを書き、ソースコードをＪａｖａコンパイラでコンパイルし、１つ以上のクラスファイルを生成する。アプレットは、装置環境をエミュレートするためにシミュレーションツールを用いてワークステーション上で動作させられ、テストされ、デバッグされる。その後、アプレットが何時でも装置にダウンロードされ得る状態であるとき、アプレットを構成するクラスファイルは、Ｊａｖａ  Ｃａｒｄコンバータを用いてＣＡＰ（変換済みアプレット）ファイルに変換される。Ｊａｖａ  Ｃａｒｄコンバータは、Ｊａｖａパッケージを構成するクラスファイルの全てを入力と見なす。Ｊａｖａ  Ｃａｒｄコンバータは１つ以上のエクスポートファイルも入力と見なす。エクスポートファイルは、変換されるクラスによりインポートされる他のパッケージのコンテンツについての名前およびリンク情報を含む。アプレットまたはライブラリパッケージが変換されるとき、コンバータは、そのパッケージのためにエクスポートファイルも作ることができる。
【０００９】
普通、変換後、ＣＡＰファイルはカードリーダ周辺装置を有するデスクトップ形コンピュータのようなカード端末装置にコピーされる。その後、その端末装置上のインストールツールはそのＣＡＰファイルをロードし、それをＪａｖａ  Ｃａｒｄ技術対応装置に送る。装置上のインストールプログラムは、ＣＡＰファイルのコンテンツを受け取って、Ｊａｖａ  Ｃａｒｄ仮想マシンにより動作させられるようにアプレットに準備させる。仮想マシン自体は、ＣＡＰファイルをロードしあるいは操作しなくてもよくて、インストレーションプログラムによって装置にロードされたＣＡＰファイルに見出されるアプレットコードを実行するだけでよい。
【００１０】
Ｊａｖａ  Ｃａｒｄプラットフォームのこれらの態様および他の態様は、サンマイクロシステムズ社 (Sun Microsystems) の仕様書、すなわちApplication Programming Interface, Java CardTM Platform, Version 2.2.1（非特許文献１）、Runtime Environment Specification, Java CardTM Platform, Version 2.2.1（非特許文献２）、およびVirtual Machine Specification, Java CardTM Platform, Version 2.2.1（非特許文献３）に記載され、その全体が本願明細書において参照により援用されている。
【００１１】
前に簡単に述べられたように、Ｊａｖａで書かれたアプリケーションを動作させるためには、Ｊａｖａ  Ｃａｒｄ仮想マシンがカードにロードされてアクティブ化されなければならない。
【００１２】
ヨシモトらの米国特許第６，７７２，９５５号（特許文献１）に記載された１つの従来のアプローチでは、カードがポイントベースのトランザクションで使用されるように、仮想マシンはメモリカードコントローラチップの一部として提供される。カードをポイントカードとして使用するためのソースコードは、Ｊａｖａで書かれてカードにロードされる。ポイント残高は、カードで購入された各アイテムについて更新される。
【００１３】
Ｊａｖａ仮想マシンの各要求は、サンまたは他の供給業者にライセンス料を支払うことを必要とする。同様に、他のどんな所有権をもった仮想マシンも、そのようなマシンの実施権許諾者への支払いを必要とし得る。スマートカードでは、各カードは、Ｊａｖａ  Ｃａｒｄ仮想マシンのアクティブな、支払済みのコピーを備える。これは、ヨシモトらの特許（特許文献１）に記載されているシステムにおそらく加わるように、各スマートカードのコストに加わる。スマートカードの基本機能は大半のアプリケーションにおいてトランザクションであるので、このコストは、吸収され、かつ／または、製造業者、仲買人、あるいは消費者に転嫁され得る。しかし、仮想マシンの機能が決して利用されないかもしれない消費者用の大容量記憶装置では、ライセンスのコストを吸収しあるいは転嫁することは望ましくない。
【００１４】
グローバルプラットフォーム (Global Platform)は、スマートカードの進歩および標準化のための産業コンソーシアムである。グローバルプラットフォームは、スマートカード業界の標準団体として活動し、多くの産業において多くのサービスプロバイダによるスマートカードプログラムの世界的展開のための公開技術枠組みを作成し維持する。グローバルプラットフォームのアプリケーションプログラミングインターフェイス（“ＡＰＩ”）およびグローバルプラットフォームの他の態様が、www.globalplatform.comで入手できる２００４年１２月付のThe Global Platform Card Specification V.2.1.1（非特許文献４）およびThe Formal Specification of Global Platform Card Security Requirements（非特許文献５）に記載され、その全体が本願明細書において参照により援用されている。グローバルプラットフォームは、仮想マシンを既に持っているスマートカードまたは他の装置にアプレットをダウンロードすることに配慮している。しかし、必要とされるアプレットと関連する機能とを提供するけれども、これはアプレットを動作させるのに必要な仮想マシンを既に持っているカードのために提供するものである。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】米国特許第６，７７２，９５５号
【特許文献２】米国特許出願第１１／０５３，２７３号
【特許文献３】米国特許出願第１１，３１４，０３２号
【特許文献４】米国特許出願第１１／３１７，３３９号
【非特許文献】
【００１６】
【非特許文献１】Application Programming Interface, Java CardTM Platform, Version 2.2.1
【非特許文献２】Runtime Environment Specification, Java CardTM Platform, Version 2.2.1
【非特許文献３】Virtual Machine Specification, Java CardTM Platform, Version 2.2.1
【非特許文献４】The Global Platform Card Specification V.2.1.1
【非特許文献５】The Formal Specification of Global Platform Card Security Requirements
【発明の概要】
【００１７】
本発明は、製造および使用のコストを最小にするのと同時に携帯可能な大容量記憶装置の潜在的用途を増大させる。本発明は装置がいろいろな専用ソフトウェアアプリケーションを動作させることを可能にするけれども、それらのアプリケーションのコストは、ユーザがそれらのアプリケーションの機能を利用することを選択した場合に限って負担される。換言すれば、潜在的用途に関連するコストは、その潜在性が実現された場合に負わされるだけである。これは、製造業者と消費者との両方にとって有益である。製造業者は、一部の消費者にだけに望ましいかもしれない機能についてのコストを吸収しあるいは転嫁せずに製品機能と市場浸透とを増大させることができる。特徴を利用することを望む消費者は必要に応じてそれらのために支払いをすることができるが、機能を利用することを望まない者は、自分たちが望んでも必要としてもいないもののために支払いをする必要はない。
【００１８】
仮想マシンがあれば、そうでない場合に装置上で直接動作させるべく利用できるアプリケーションよりも多様なアプリケーションを使用することができるので、仮想マシンは携帯可能な大容量記憶装置においては非常に有益である。その理由は、仮想マシンが特定の処理プラットフォームからの独立性を提供することにある。仮想マシンは、マイクロプロセッサによって実行される自己内蔵型の動作環境であるけれども、別個のコンピュータであるかのように振る舞う。仮想マシンアプリケーションは、仮想マシンがどんな種類のプロセッサおよびオペレーティングシステム上で動作していても、その仮想マシンにおいて同じ仕方で実行し動作する。
【００１９】
従来の解決策は仮想マシンをメモリカードに組み込んでいるけれども、その仮想マシンのコストは、消費者が仮想マシンを望んだかあるいは必要としたかに関わらず、製造業者と消費者とにより負担されなければならなかった。これは、主としてトランザクションカードまたは“電子財布”として使用されるように意図された装置では容認できるけれども、最初にあるいは主として他の目的に使用されるかもしれない携帯可能な大容量記憶装置では理想的ではない。本発明では、仮想マシンのためのライセンス料は、ユーザが１つまたは複数の仮想マシンの存在を必要とするアプリケーションを使用することを望む場合にだけ支払われればよい。従って、基礎の大容量記憶装置のコストを最小限に保つことができ、アドオンアプリケーションおよび仮想マシンについては必要であるかあるいは望まれる場合に限って支払いを行うことができる。仮想マシンを装置の寿命の間の何時でもアクティブ化することができ、支払いはそれがアクティブ化された場合に限って行われる。マシンは、また、何時でも、単独で、あるいはマシンを利用するアプリケーションと組み合わされて、カードにロードさせることができる。ある好ましい実施形態では、仮想マシンが必要であるとき、仮想マシンのインストールは、ユーザに知られずにシーンの背後で仮想マシンまたはより高いレベルのアプリケーションのアクティブ化の一部として行われる。
【００２０】
本発明は、料金を必要とするプログラムが使用されるときにだけライセンス料を支払うことを考慮する。これは、他の状態ではそれが実行不可能である環境においてこれらのプログラムを組み込むことを可能にする。これは、大容量記憶装置型メモリカードのような小型装置で実行され得る多量の多様なアプリケーションがある場合に、特に有益である。
【００２１】
本発明は、ユーザが自分の望むプログラムだけを速やかにかつ容易に選択し、アクティブ化し、そのために支払いをすることを可能にする。これは、基本の装置を全ての人にとって入手可能に保つのと同時に、カスタマイズされたアプリケーションがそれを望ましいものと思った人により使用されることを考慮に入れている。
【００２２】
仮想マシンを、携帯可能な大容量記憶装置を動作させる基礎のファームウェアと統合することは簡単な課題ではない。保護されているコンテンツへのアクセスを制限しなければならない“セキュア”な装置の場合には、特にそうである。そのような装置では、装置のファームウェアは、少なくとも部分的に、コンテンツを守る責任を有する。従って、それは読み／書き動作へのアクセスを制限する。このような事情の故に、保護されているコンテンツの認証されないコピーを作りたい人にとって、それはターゲットである。従って、基礎のファームウェアは、コンテンツをハッカーから守らなければならず、さらに、仮想マシンのようなアプリケーションがコンテンツにアクセスすることを可能にしなければならない。仮想マシンが任意の時点で（あるいは、そのようなコンテンツを使用する装置で動作するアプリケーションがオンにされる時点で）ロードされ得るという場面では、ファームウェアは、仮想マシン（またはアプリケーション）があってもなくても動作できなければならず、また悪意のソフトウェアが仮想マシン（またはアプリケーション）に変装することを防止しなければならない。
【図面の簡単な説明】
【００２３】
【図１】大容量記憶装置１００の略図である。
【図２】大容量記憶装置１００のソフトウェアコンポーネントおよびホスト１０５の略図である。
【図３Ａ】本発明の１つの実施形態に従う大容量記憶装置のソフトウェアコンポーネントの説明図である。
【図３Ｂ】本発明の１つの実施形態に従うダウンロードされたアプリケーションの説明図である。
【図４Ａ】本発明に従う第１の供給場面のフローチャートである。
【図４Ｂ】本発明に従う第２の供給場面のフローチャートである。
【図４Ｃ】本発明に従う第３の供給場面のフローチャートである。
【図５】本発明の１つの実施形態に従うアプリケーションプロトコルインターフェイス管理を示すフローチャートである。
【図６】公開鍵インフラストラクチャおよび大容量記憶装置１００を示す。
【図７】公開鍵インフラストラクチャの幾つかのコンポーネントを記述した表である。
【図８】本発明の１つの実施形態に従う収益の流れの説明図である。
【図９】フラッシュメモリ１４０のメモリスペースの一部分の説明図である。
【発明を実施するための形態】
【００２４】
背景技術の欄で論じられたように、携帯可能なフラッシュメモリベースの大容量記憶装置は、今日、大きなファイルおよびソフトウェアプログラムを格納するために広く使用されている。メモリカードまたはポケットサイズのＵＳＢフラッシュ装置に依拠するデジタル装置は広く使用されているので、多くの人は、これらの携帯可能な大容量記憶装置を１つまたは幾つか既に持っている。本発明は、製造および使用のコストを最小にするのと同時にこれらの装置の潜在的な用途を増やす。本発明は、装置がいろいろな専用ソフトウェアアプリケーションを動作させることを可能にするけれども、それらのアプリケーションのコストは、ユーザがそれらのアプリケーションの機能を利用することを選択した場合に限って負担される。換言すれば、潜在的用途に関連するコストは、その潜在性が実現された場合に負わされるだけである。これは、製造業者と消費者との両方にとって有益である。製造業者は、一部の消費者にだけに望ましいかもしれない機能についてのコストを吸収しあるいは転嫁せずに製品機能と市場浸透とを増大させることができる。特徴を利用することを望む消費者は必要に応じてそれらのために支払いをすることができるが、機能を利用することを望まない者は、自分たちが望んでも必要としてもいないもののために支払いをする必要はない。
【００２５】
大容量記憶装置において動作させられかつ／または格納され得るソフトウェアおよび他のコンテンツの多くは、所有者または実施権許諾者への支払いを必要とする。例えば、ソフトウェアプログラムは作成者へのライセンス料の支払いを必要とし、また音楽、映画、写真または著作のようなコンテンツも再販業者、作成者、プロバイダおよび／または実施権許諾者などへの支払いを必要とする。大容量記憶装置で実行されたときに特に有益なソフトウェアプログラムの一例は仮想マシンである。その理由は、仮想マシンが、基礎のハードウェアプラットフォームの特定性に合わされなくてもよいソフトウェアの作成および実行を考慮に入れていることにある。仮想マシンの１つの例は、背景技術の欄に記載されたように、サンマイクロシステムズ社により提供されるＪａｖａベースの仮想マシンである。
【００２６】
サンマイクロシステムズ社の仮想マシンが一例として記載されるけれども、他の仮想マシンが存在し、さらに他のものが開発され得る。仮想マシンは、マイクロプロセッサによって実行される自己内蔵型の動作環境であるけれども、別個のコンピュータであるかのように振る舞う。仮想マシンアプリケーションは、仮想マシンがどんな種類のプロセッサおよびオペレーティングシステム上で動作していても、その仮想マシンにおいて同様に実行し動作する。これは、どんな処理プラットフォームからの独立性をも提供する。従って、仮想マシンなしで利用し得る場合よりも広い範囲のソフトウェアプログラムが仮想マシンおよび基礎の装置の上で動作するべく利用可能であるはずである。本発明は、どのような仮想マシンおよびそれが可能にするアプリケーションとも協働することができる。
【００２７】
大容量記憶装置型メモリカードの一般的なアーキテクチャが図１に示されている。大容量記憶装置１００の種々のコンポーネントはシステムバス１５０を介して互いに結合されて通信する。装置１００は、ホストインターフェイス１４０を介して、ホスト１０５とも称される外部装置１０５と通信する。ホストインターフェイス１４０は、ホスト１０５と装置１００との間でデータをやり取りする論理コンポーネントおよびハードウェアコンポーネントの両方を含む。装置１００が大量記憶メモリカードの形状係数を有するならば、インターフェイスは、例えばデジタルカメラの接点構造とインターフェイスする電気接点を含む。装置１００がＵＳＢ装置の形状係数を有するならば、ホストインターフェイス１４０は、ＵＳＢポートとインターフェイスするための電気接点と所要のドライバとを含む。コントローラ１１０は、装置を制御し、大量記憶フラッシュメモリ１４０のセル内での読み書き動作とデータ分布とを管理する。装置１００は、図に示すように個別的なコンポーネントであるかあるいはコントローラ１１０内に統合され得るランダムアクセスメモリ（“ＲＡＭ”）１２０も含む。コントローラ１１０は、読み出し専用メモリ１３０または大容量記憶フラッシュメモリ１４０に格納されるＲＡＭ１２０からのファームウェアを実行する。読み出し専用メモリ１３０は、電気的に消去可能で従ってＥＥＰＲＯＭまたはＥＰＲＯＭであることができる。ファームウェアは、コントローラにより実行されてメモリカードの動作を制御する。ファームウェアが壊れたならば、メモリカードは最早適切に機能しない。
【００２８】
大容量記憶装置１００は、好ましくはセキュリティ手段を含む。これらの手段は、アプリケーションの状態（例えば、非アクティブからアクティブまで）が認証された者によってのみ変更され得ることを保証する。状態は装置ファームウェアにより制御され、ファームウェアは、特定のアプリケーションがアクティブで使用され得ることを確認するために状態をチェックすることができる。これらの手段は、また、好ましくは装置のハードウェアおよびソフトウェア（ファームウェア）の両方で実現され、ある実施形態では、装置に格納され、また装置へおよび装置から転送されるデータを暗号化する。この種のセキュア大容量記憶装置に関するさらなる情報については、その全体が本願明細書において参照により援用されている、Holtzmanらの “Secure Memory Card With Life Cycle Phases"という米国特許出願第１１／０５３，２７３号（特許文献２）、Holtzmanらの “Memory System with in Stream Data Encryption/Decryption"という米国特許出願第１１／３１４，０３２号（特許文献３）、および “Secure Yet Flexible System Architecture for Secure Devices With Flash Mass Storage Memory"という米国特許出願第１１／３１７，３３９号（特許文献４）を参照されたい。
【００２９】
装置１００は、装置の一実施形態であるメモリカードと称されるが、前述したように、装置１００はメモリカード、ＵＳＢ装置あるいは他の形状係数の形であることができる。
【００３０】
ファームウェアはカードのデータへの経路を提供し、そのうちのあるものは保護されたデータであり得る。コントローラを動作させるファームウェアの完全性は、特にセキュアカードでは、重要である。カードがセキュアカード（例えば、何らかの形のデジタル著作権管理（“ＤＲＭ”）を実行するもの）であるならば、ファームウェアの機能のうちの１つは、保護されるコンテンツへのアクセスを制限することである。ＤＲＭは、デジタルコンテンツの自由な使用および転送を制限するための幾つかの技術を記述するために使われる広い用語であるので、“デジタル制限管理”と記述されるほうがより適切だと考える人たちもいる。図２は、ファームウェアを含む、装置１００のソフトウェアコンポーネントの幾つかを示す。仮想マシン２２０は、基本のカードファームウェア２１０には存在しない機能を含むけれども、フラッシュメモリ内のコンテンツにアクセスすることもできる。従って、ある意味ではそれがカード内の一種のファームウェアと考えられてもよく、ファームウェア２１０と完全に統合されかつ互換性がなければならない。従って、カードファームウェア２１０は、ＶＭ２２０が存在してもしなくても頑健に機能し得るように実現されなければならない。同様に、ＶＭ２２０はカードファームウェア２１０とともに機能するように実現される。ファームウェア２１０がＶＭ２２０と統合されることを可能にするファームウェア２１０のコードにおいて実現される設計態様は、ファームウェア２１０内の“フック”と考えられてよい。これらのフックとこれらが必要とする互換性とは、ファームウェア２１０とＶＭ２２０との間の二重矢印によって表されている。カード１００内にロードされたアプレットは、ＶＭ２２０を介してファームウェアと通信することができて、カードにおいて任意の数の異なるソフトウェアアプリケーションを提供することができる。これらのアプレット２４０Ａ・・・Ｘは、仮想マシン上で動作するので、コントローラ１１０および装置１１０の他のハードウェアコンポーネントの細目に合わせられなくてもよい。そうでなければカードと互換性がなくなる様々なソフトウェアアプリケーションのライブラリに対して装置を開放する。
【００３１】
図２に見られるように、ホスト１０５は、アプリケーションプログラミングインターフェイス（“ＡＰＩ”）を通してファームウェア２１０（ＶＭ２２０を含む）と通信しなければならない。任意の数のＡＰＩ２５０Ａ・・・Ｘがカードにおいて実現され得る。これは、標準またはネイティブ装置ＡＰＩ  ２５０Ａと、グローバルプラットフォームＡＰＩのような業界標準のまたは広く受け入れられているＡＰＩ  ２５０Ｂと、所有権をもったＡＰＩ  ２５０Ｃ（例えば、Ｊａｖａ仮想マシンのためのＡＰＩのようなＶＭ２２０に結び付けられているＡＰＩ、あるいはアプレット２４０のためのＡＰＩまたはアプレット２４０のうちの１つのような）と、他の任意のＡＰＩ  ２５０Ｘとを含む。ＶＭ２２０は、機能するために適切なＡＰＩを適切な場所に持っていなければならないので、特定の仮想マシンをアクティブ化する１つの方法は、その特定の仮想マシンと互換性があるＡＰＩをアクティブ化しかつ／またはロードすることである。もちろん、ＶＭは他の種々のトリガで直接アクティブ化され得る。ＶＭは、図９に関して後述するように、一種のファームウェアである。種々のアクティブ化の方法が以下で論じられる。
【００３２】
カードのアプリケーションが何であっても、前述した仮想マシンの機能の付加は、カードの他のファームウェアとの統合を必要とする。仮想マシンとその種々のアプレットとがファームウェアと統合されるのがカードが工場を去る前であれ後であれ、カードはシームレスに動作しなければならない。アプレットが現場でダウンロードされるという場面において、そのアプレットのコンテンツおよび性質は、可能であるとしても、容易にはベリファイされ得ない。従って、カードの基本ファームウェアは、現場ダウンロードと、アプレットが必要とするデータアクセスとを容易にするために充分にフレキシブルでなければならないのと同時に、ぞんざいに書かれたアプレットでも機能するように充分に頑健でなければならない。さらに、アプレットがカードのＤＲＭを破ることを目指している場合、ファームウェアはアプレットからデータを守り、さらに、認証されたユーザにコンテンツを提供し続けなければならない。
【００３３】
少量の高度に保護されたトランザクションデータを守る目的のために構築されたスマートカードとは異なって、大容量記憶装置型メモリカードはコンテンツの非常に大きなライブラリへの頻繁なアクセスを提供しなければならない。このユーザコンテンツは、カードが出会うことのあるアプリケーションと同じく、カードの寿命の間常に変化する。カードのファームウェアとハードウェアとは、カードのコンテンツを常に守るのと同時に新しいアプリケーションを求めるユーザの希望に配慮し、それらが現場で（あるいは工場で）ダウンロードされることを可能にする。これは、簡単な課題ではない。
【００３４】
図３Ａは、カード１００内のソフトウェアコンポーネントのうちの幾つかの表示である。カード内で種々のアプレット２４０Ａ〜Ｘが動作している。好ましい仮想マシン２２０はＪａｖａ  Ｃａｒｄ仮想マシンであり、そしてＪａｖａ  Ｃａｒｄまたは他のＪａｖａ仮想マシンの場合には、特定のアプレットおよび仮想マシン２２０に基づいて必要であるかあるいは望ましければ、Ｊａｖａ  Ｃａｒｄフレームワークも存在する。これらのコンポーネントの全てはカードオペレーティングシステムまたはファームウェア２１０の上で動作する。この場合、Ｊａｖａ  Ｃａｒｄフレームワークと他の業界アドオン２３０とＪａｖａ仮想マシン２２０とはカードオペレーティングシステム２１０の上で動作する。
【００３５】
図３Ｂは、何時でもカードにロードされてアクティブ化されることができて本発明のファームウェアおよびシステムの一部として機能することができるソフトウェアコンポーネントあるいは“パッケージ”を示す。パッケージは、仮想マシン２２０だけではなくて、（任意に）１つ以上のソフトウェアアプリケーション２７０も含むことができる。基礎のファームウェア２１０は、ＶＭ２２０およびアプリケーション２７０という付加的なソフトウェアと協働するように備えられている。仮想マシン上で動作する任意のソフトウェアアプリケーション２７０が何時でもカードにロードされ得る。点線は、ＶＭ２００がアプリケーション２７０とともにあるいはアプリケーション２７０を伴わずにロードされ得ることと、アプリケーションのインストールがＶＭのものと同時に行われなくてもよいこととを示すのに役立つ。パッケージのコンポーネントに関連する料金の支払いは、ｉ）パッケージがカード内に存在し、かつｉｉ）パッケージがアクティブ化されるときに行われるだけでよい。
【００３６】
図３Ｂに見られるパッケージは、幾つかの方法でユーザに提供され得る。図４Ａに見られるように、そのパッケージは販売時にカードで提供され得る。この場合、パッケージは、使用される前に“現場”でアクティブ化されなければならない。代わりに、図４Ｂに見られるように、そのパッケージを、完全なパッケージとしてまたは個別にユーザによって“現場”でダウンロードしてもよい。他の１つの方法として、図４Ｃに見られるように、新しいファームウェア２１０がカードにロードされ得る。このファームウェアのダウンロードは、図３Ｂに見られるパッケージの全体または一部をも含む。一実施形態では、これは、図２に見られるファームウェア２１０、ＶＭ２２０、アプレット２４０が全てファームウェア更新の過程でロードされることを意味する。これらの基本的な方法は、後述する図４Ａ，４Ｂおよび４Ｃのフローチャートに示されている。
【００３７】
前述したように、仮想マシンおよびアプレットは、利用されるためにはアクティブであるかあるいはアクティブ化されることを必要とする。もちろん、それは多くの場面において好ましくはないけれども、アクティブなコンポーネントをダウンロードするために必要なセキュリティ手段はないかもしれない。これは、カードの配布が限定される安全なあるいは信頼できる環境に適していそうであるが、必ずしも適するとは限らない。また、ある実施形態では、セキュリティはダウンロードプロセスの一部であることができて、必要とされる付加的なアクティブ化はなくてもよい。換言すれば、第１にユーザがダウンロードすることを認証されているか、あるいはダウンロードシーケンスの一部としてアクティブ化が行われ得るとすれば、コンポーネントはアクティブ化された状態でダウンロードされ得る。
【００３８】
カード１００は、アクティブ化コマンドを受け取って有効にするアクティブ化マネージャを有する。アクティブ化マネージャは、ファームウェア２１０の一部であることができ、あるいは別個のソフトウェアモジュールであると考えられ得る。アクティブ化マネージャは、アプリケーションまたはオペレーティングシステムの特徴をオンにし、かつオフにする。このアクティブ化は、例えばセキュアなチャネルの上で、安全に行われるのが好ましい。一実施形態では、アクティブ化マネージャは、正しいコードを受け取れば、パッケージをアクティブ化する。アクティブ化マネージャは、コードを受け取り、それを、コードを有効にするサーバと照合するか、あるいはカードのメモリに格納されているコードの暗号化されたバージョンと照合する。アクティブ化マネージャは、失敗したアクティブ化の追跡も行い、ある実施形態では、失敗した試みの数を制限して、その数を上回ったならばカードをロックすることができる。
【００３９】
コードは、種々のパラメータに基づくことができ、任意の数の仕方で計算され得る。コードは、合っているアプリケーションをオンにすると期待される単純な数であってもよい。コードは、アクティブ化のために包括的であることができ、またアプリケーションＩＤと関連付けられかつ／またはアプリケーションＩＤに基づいてもよく、それは特定のアプリケーションに一意に関連付けられた数である。コードは部分的にカードの一意のＩＤに基づくことができ、それは特定のカードだけに関連付けられた数である。コードは、アプリケーションと、そのアプリケーションがアクティブ化されるべきかそれとも非アクティブ化されるべきかと、アクティブ化コード自体とを明示する部分を有することもできる。コードは、非アクティブ状態、アクティブ状態、サスペンドされた状態、あるいは取り消された状態のような特定のアプリケーション状態を明示するかあるいは含むこともできる。それは、例えばＤＲＭ方式における種々の許可レベルなどの、他の所要の種々の許可へのアクセスを明示し、かつ提供することもできる。コードは、全ての前述した方式の幾つかの態様または全ての態様に基づきあるいはそれらを含むこともできる。
【００４０】
コードは、対称または非対称暗号認証方式の一部であることもできる。例えば、対称方式では、コードは一種のワンタイムパスワード（“ＯＴＰ”）であることができ、これは当該技術分野で良く知られている。この場合、カードと検証サーバとの両方が同じ種を持ち、その種と任意の数の選択されたアルゴリズムとに基づいてコードまたはＯＴＰを独立に作る。コードまたはＯＴＰは規則的間隔でインクリメントまたは更新され、そして任意の所与の時点で、カードにおいて計算されたＯＴＰをベリファイサーバにより計算されたＯＴＰと突き合わせてベリファイすることができる。ＯＴＰ方式では、２つのカードに初めに同じ種がロードされたならば、その２つのカードで（カードとサーバとの中の）パスワードをインクリメントするために異なるアルゴリズムが使用されれば、１つのカード内の種またはワンタイムパスワードの値が危険にさらされたとしても、それを他のカードにハッキングするために使用することはできない。一例では、アクティブ化コードあるいはＯＴＰはカードＩＤ、カードタイプ、アプリケーションＩＤ、およびＯＴＰ種の関数である。カードタイプは、コンパクトフラッシュカード、ＳＤカード、ミニＳＤカード、ＭＭＣカード、トランスフラッシュカード、ＸＤカード、メモリスティックなどの任意の周知のカードタイプであることができ、あるいはＵＳＢフラッシュドライブであることができる。
【００４１】
アクティブ化コードがＯＴＰ（の関数）を含むかあるいはＯＴＰ（の関数）に基づいている実施形態では、そのＯＴＰおよび／またはコードはアプリケーションまたはソフトウェア層をオンまたはオフにするために使用することができる。アクティブ化コードまたはＯＴＰをベリファイするために（リモートサーバまたは他の装置により生成された）ＯＴＰまたはコードがカードに送られてカードにより生成されたＯＴＰと比較される。それが正しいとベリファイされたならば、そのアプリケーションまたはソフトウェア層をオンまたはオフにすることができる。その値は１回しか使用することができず、従って複数のアクティブ化のために使用したり認証されていない仕方で渡されて使用することはできないので、これらの目的のためのＯＴＰの使用は有利である。ある実施形態では、アクティブ化されるべきアプリケーションのアプリケーションＩＤはアクティブ化コードあるいはＯＴＰを生成するためにも使用され得る。このようにして、ＯＴＰは一定のアプリケーションに特有になる。
【００４２】
前述したように、ある実施形態では複数のカードのために同じ種が使用され得る。ＯＴＰ計算の基礎にその種がある。また、アクティブ化コードあるいはＯＴＰはカードＩＤ、カードタイプ、アプリケーションＩＤ、およびＯＴＰ種の関数である。これは同じ秘密の種が複数のカードにロードされることを可能にし、それはサーバデータベース上のレコードの数を減少させる。同時に、カードＩＤ、カードタイプ、およびアプリケーションＩＤのうちの１つ以上の関数であり得る種々のアルゴリズムが使用され得るので、一意のＯＴＰおよびアクティブ化コードが生成され、従って高度のセキュリティを提供することができる。
【００４３】
最も一般的な非対称方式は公開鍵インフラストラクチャ（ＰＫＩ）を含み、この場合には装置またはエンティティは２つの鍵すなわち秘密鍵と公開鍵とを持ち、これらは、一方の鍵で暗号化されたデータが他方で解読されることができるとともに秘密鍵を公開鍵から数学的に導出する方法がないように暗号法的に関連付けられている。このような方式では、公開鍵は自由に分配され、秘密鍵は、所有するエンティティによって秘密に保たれる。エンティティの認証は、その公開鍵を用いて暗号化されたメッセージを解読することによって秘密鍵の持ち主であることを証明することが要求されるチャレンジ／レスポンスシーケンスを実行することによって達成される。ＰＫＩを用いる本発明の１つの実施形態が図６および図７に示され、それは後述される。
【００４４】
さらに、一実施形態では、対称方式の諸態様が非対称方式の諸態様と結合される。そのような実施形態の一例では、１段階でカードをベリファイするためにＯＴＰが使用され、他の１つの段階でチャレンジ／レスポンス対話が使用される。
【００４５】
アクティブ化プロセスを論じたので、次に、ダウンロードおよびアクティブ化の両方の諸態様を示す図４Ａ、４Ｂ、および４Ｃのフローチャートに戻る。
【００４６】
図４Ａは、ロードされた仮想マシンのアクティブ化が実行されるプロセスを示す。図４Ａのステップ４０５において、カードがユーザに販売される前のある時点でカードの発行者またはプロバイダによって仮想マシンが提供される。これは、製造時またはその後の何らかの時点で行われ、カードのファームウェアも存在している。仮想マシンは、休眠あるいは非アクティブ状態である、すなわち、消費者により使用され得ない。従って、（未利用あるいは非アクティブの）仮想マシンのためにライセンス料を当然支払う必要はない。好ましくは、消費者は、それがアクティブ化あるいは“アンロック”される前にはその存在に気づかない。仮想マシンは、任意のタイプあるいはブランドの仮想マシンであってよい。現在入手できる仮想マシンのいくつかの例として、Ｊａｖａ、ＭＵＬＴＯＳ、Ｊａｖａ  Ｃａｒｄ、組み込みリナックス (embedded linux) 、組み込みＪａｖａ (embedded java)、ｄｏｔ．ｎｅｔ、およびＷｉｎｄｏｗｓ（ウィンドウズ）ＣＥが挙げられる。種々のアプレットをサポートするために種々の仮想マシンが必要とされ、従って複数のＶＭが装置にロードされ得る。装置ファームウェアは、種々のＶＭとアプレットとのために必要なリソースの可用性を管理する。
【００４７】
ステップ４１０において、システムのユーザ、カード、またはサーバは、仮想マシンが必要とされるのかあるいは望まれるのかを判定する。次に、ステップ４１５において、信頼できる機関が仮想マシンをアクティブ化する。仮想マシンに関連するライセンス料を払う必要があるのはこの時点である。公開鍵インフラストラクチャでは、信頼できる機関をしばしば証明機関と称する。証明機関６２０が図６に示されている。
【００４８】
図６は、信用証明書のベリファイ／認証のために公開鍵インフラストラクチャを利用する実施形態を示す。トランザクションは、それらが生起するシステムより安全では決してあり得ないので、通信員同士が互いを突き止めて、自分たちが使う公開鍵を自分たちが通信したい人（またはマシン）に本当に属するという確信を持つ方法を確立することが最も重要な要素となる。公開鍵インフラストラクチャは、この信頼を提供するように設計される。公開鍵をその所有者に関する識別情報に結びつけるデジタル証明書または公開鍵証明書と呼ばれるデータエレメントを用いて、インフラストラクチャは、その結合を生じさせ、使用のコミュニティの中の全てのもののためにそれを管理するように設計される。信用証明書がベリファイされたならば、パッケージは前述したようにコードまたはＯＴＰでアクティブ化され得る。あるいは、信用証明書自体またはそのベリファイが信用証明書のベリファイ／認証のために充分であり、アクティブ化を許すかあるいはトリガする。
【００４９】
秘密鍵および公開鍵の組み合わせ暗号法を用いて、ＰＫＩは、データ機密性、データ完全性、および鍵管理を含む他の幾つかのセキュリティサービスを可能にする。ＰＫＩのための基礎またはフレームワークはＩＴＵ−Ｔ  Ｘ．５０９勧告［Ｘ．５０９］において定められ、その全体が本願明細書において参照により援用されている。
【００５０】
エンドエンティティは、ときにはエンドユーザであると考えられる。しばしば事実なのであるが、エンドエンティティという用語は、もっと遥かに包括的であるべく意図されている。エンドエンティティは、エンドユーザ、ルータまたはサーバのような装置、プロセス、あるいは公開鍵証明書のサブジェクト名において特定され得る任意のものであり得る。エンドエンティティは、ＰＫＩ関連サービスの消費者とも考えられ得る。本発明では、図６に示されている実施形態に見られるように、エンドエンティティは大容量記憶装置１００とそのユーザとである。
【００５１】
公開鍵は、公開鍵証明書の形で配布される。ＣＡ（証明機関）６２０は、公開鍵証明書を発行することのできるコンポーネントであるので、ＰＫＩの基礎である。公開鍵証明書は、装置１００とリポジトリ６１０とに送られる。公開鍵証明書は発行元ＣＡ（これはサブジェクト名を公開鍵に有効に結び付ける）によりデジタル署名される。ＣＡは、証明取り消しリスト（ＣＲＬ）の発行について、それが別個のＣＲＬ発行者６３０に委任されていなければ、責任をも持つ。ＣＡは、エンドユーザ登録のような幾つかの管理タスクにも関係し得るけれども、それはしばしば登録機関（ＲＡ）に委任されるが、任意であって図６には示されていない。実際上、ＣＡは鍵バックアップおよび回復機能としても役立つことができるけれども、この機能も別個のコンポーネントに委任され得る。ＣＡは、しばしば、ＰＫＩにおける“信頼の原泉”と考えられる。公開鍵インフラストラクチャを利用する実施形態では、ＣＡ６１０は、装置１００と、パッケージをダウンロードするサーバとが信頼され得ることを示す。この信頼は、ダウンロード、アクティブ化、および支払い目的のために使用される。図７は、図６のコンポーネントを記述した表であり、クイックリファレンスとして提供されている。
【００５２】
図４Ｂは、仮想マシンを単独でまたはより大きなソフトウェアパッケージの一部として提供する他の１つのプロセスである。ステップ４３５において、カードファームウェア２１０が提供される。このファームウェアは、仮想マシンとの将来の統合および使用のための“フック”を有するか、あるいは換言すれば仮想マシンと互換性があるように設計される。この仮想マシンの互換性があるファームウェアは、好ましくはカードの製造時に提供されるが、カードの寿命の間の任意のときにロードされてもよい。ファームウェアはカード上のあるタイプのデータへのアクセスを制限するように設計されたセキュリティメカニズムを有する。これは、ファームウェア内の、カードのメモリに格納されている保護されるコンテンツに対しての、セキュリティメカニズム自体を含む。仮想マシンがインストールまたはアクティブ化される前、ファームウェア（のセキュリティメカニズム）はカードの中または外で動作しているソフトウェアアプリケーションが保護されているデータにアクセスすることを許さない。しかし、ファームウェアは、仮想マシンを検出して、いったん仮想マシンがインストールされてアクティブ化されたならば仮想マシンが保護されているデータのうちのあるものにアクセスすることを許すようにも動作可能である。換言すれば、ファームウェアは、複数の異なる動作状態、すなわち仮想マシンを伴わずに使用される状態と仮想マシンとともに用いられる状態とを有すると考えられ得る。両方の状態において、ファームウェアは、ファームウェア自体を含むカード上のデータを保護してそれへのアクセスを制限しなければならない。第２の状態では、ファームウェアは、仮想マシンがデータを読み書きするのを許さなければならないのと同時に、如何なる悪意のあるアプリケーションの認証されない読み書きアクセスを許さない。
【００５３】
次に、ステップ４４０において、カードは製造業者が去った後、ユーザまたは仲買人、あるいはカード自体が、仮想マシンが望まれるのかあるいは必要とされるのかを判定する。その後、仮想マシンとそのプロバイダとがステップ４４５において認証される。これは、前述したように対称および／または非対称の認証であってよい。ステップ４５０において、仮想マシンがカードにダウンロードされてアクティブ化される。仮想マシンに関連するライセンス料が支払われなければならないのはこの時点である。いったんアクティブ化されたならば、支払いがトリガされる。
【００５４】
図４Ｃは、仮想マシンを単独であるいはより大きなソフトウェアバンドルの一部として提供する他の１つのプロセスである。ステップ４６０において、ユーザまたはカードは、仮想マシンが必要とされるのかあるいは望まれるのかを判定する。次に、ステップ４６５において、仮想マシンおよびそのプロバイダがステップ４４５において認証される。これは、前述したように対称または非対称の認証であってよい。ステップ４７０において、仮想マシン２２０を伴うファームウェア２１０の新しいコピーまたはバージョンがカードにダウンロードされる。同時に付加的なアプレット２４０または他のプログラムが任意にロードされ得る。
【００５５】
図５は、仮想マシンのダウンロードを伴うＡＰＩ管理を示す。ステップ５１０において、アプレットダウンロードを求めるリクエストが受け取られる。このリクエストは、インターネットを含む任意のネットワークを介して、任意のインテリジェント装置からサーバで作られ得る。サーバは、カードの発行者またはプロバイダ、または任意の第三者により操作され得る。カードの発行者は製造業者またはその代表者であることができ、プロバイダはカードを取り扱い、配布し、あるいは販売する任意のエンティティであることができる。発行者またはプロバイダがリクエストを直接受け取らなかったならば、ステップ５１０のリクエストを受け取ったサーバは、その後、カードの発行者またはプロバイダにそのリクエストを知らせる。ステップ５２０において発行者またはプロバイダは、アプレットを動作させるために必要とされる（ならば、その）仮想マシンを、迅速に検索する。次にステップ５３０において仮想マシンおよびアプレットはカードにシームレスにロードされる。これは、仮想マシンが検索されて自分のカードにロードされたことをユーザが知らなくてもよい（しかし、知ることができる）ことを意味する。ステップ５４０の前、後、あるいは同時に生じ得るステップ４４０において、仮想マシンおよびアプレットはアクティブ化される。ステップ５５０において、カードは仮想マシンおよびアプレットのための適切なＡＰＩを選択して利用する。適切なＡＰＩが存在しなければ、発行者またはプロバイダは適切なＡＰＩをカードにロードする。また、ステップ５２０の場合と同じく、ユーザは、好ましくは、ＡＰＩがカードにロードされたことを知らなくてもよい（しかし、知ることができる）。要約すると、このプロセスは、ユーザのためになるべく速くかつたやすく行われる。アプレットを求めるリクエストがなされると、そのアプレットと、アプレットを動作可能にするのに必要な全てのソフトウェアとは、自分のアプレットをロードしてそれを働かせることに必要とされ得る種々のステップをユーザが知ることなく非常に迅速に自動的にロードされ得る。前述したように、適切なＡＰＩを提供することは、仮想マシンおよび／またはアプレットをアクティブ化する１つの方法である。
【００５６】
料金およびロイヤリティ収集および配布
仮想マシン、アプレット、あるいは他のソフトウェアアプリケーションがアクティブ化されたならば、アプリケーションのためにライセンス料が支払われなければならない。例えば、カードにロードされたセキュアコンテンツを制御するために使用されるデジタル著作権管理（“ＤＲＭ”）をアプレットが必要とするならば、そのコンテンツのためにロイヤリティも要求され得る。いずれの場合にも、任意のタイプのロイヤリティあるいはライセンス支払いのために本発明が使用され得る。図８は、種々のエンティティへの、また種々のエンティティからの、支払いのためのシステムを描いている。消費者料金８０５Ａは代金コレクタ８１０により収集される。これは、好ましくは、インターネットで提供されるセキュアサービスを必要とする。代金コレクタ８１０は、その料金の一部を自分のサービスのために取っておき、料金の残りを装置発行者８２０に移す。例えば、コンテンツまたはプログラムがサンディスクにより発行されたＳＤカードにロードされたならば、サンディスクはカード発行者８２０であって料金８０５の一部８０５Ｂを受け取る。発行者は、その後、料金８０５のある程度の部分を取っておいて、部分８０５Ｃをコンテンツ所有者あるいは実施権者８３０に送る。ここまでに記載された実施形態では、Ｊａｖａ仮想マシンライセンスと仮想マシン上で動作する種々のアプレットとのための代金が支払われることができる。ライセンスを必要とする他のタイプのコンテンツに対して支払いをするためにより一般的にシステムを使用することもできる。この支払いシステムは、コンテンツと、そのコンテンツを装置のユーザに表現するために必要なソフトウェアとについての支払いにも非常に有益である。
【００５７】
セキュリティ
仮想マシンを安全にアクティブ化するほかに、装置１００は他のセキュリティ手段も実現する。仮想マシンがフラッシュメモリに格納される前に、カードは、前述した信頼できる機関によりカードが署名されることを要求することができる。さらに、仮想マシン（または他のソフトウェアアプリケーション）が改ざんされたり、内密にアクティブ化されたり、あるいは装置に不法にコピーされインストールされたりできないように、種々の暗号技術も実施され得る。ＶＭは、種々の周知のハッシュ関数、あるいはその代わりに装置の一意の鍵で、暗号化され得る。
【００５８】
この暗号化はソフトウェアおよび／またはハードウェアで成し遂げられ得る。これはＭＡＣ値、ＳＨＡ−１値、あるいはハッシュ値の使用を必要とし得る。これらの暗号化／解読技術の原理は良く知られているので、ここでは詳しく説明しない。
【００５９】
一実施形態では、暗号化は、コントローラのハードウェアにおいて実現される暗号化エンジンで実行される。暗号化エンジンのハードウェアは、アプリケーションの、入ってくるデータを、それがカードのメモリにロードされるときにオンザフライ(on the fly)で暗号化する。コントローラは、そのコントローラに特有のハッシュ値を作るために使用され、コントローラとの結合はコントローラの一種の署名として役立つ。この署名は、その後、アプリケーションが実行される前にベリファイされる。暗号化エンジンを少なくとも部分的に（完全にファームウェアでではなくて）コントローラのハードウェアで実現することは、非常にクラックしにくい頑健な装置をもたらす。それは、コントローラが（異なる署名を有する）代わりのコントローラと置き換えられ得ないからであるが、それは、装置のセキュリティをクラックする一般的なやり方である。コントローラの署名も容易には偽造され得ない。図９に見られるように、ファームウェア２１０は、ブートローダ部分２１０ａと、システム部分２１０ｂと、ファームウェアのための種々のＭＡＣ値、ＳＨＡ−１値、またはハッシュ値とを持つことができ、それらは、実行されるべくＲＡＭメモリに個々にロードされ得る複数のセグメントまたはオーバーレイに分割され得る。本発明のある実施形態で利用される暗号化技術のこの態様および他の態様に関するさらなる情報を得るために、その全体が本願明細書において参照により援用されているHoltzmanらの米国特許出願（特許文献２〜４）を参照されたい。
【００６０】
種々のファームウェアアプリケーションが図９に示されているフラッシュメモリスペースに格納されて見られる。仮想マシンとアプレットとはファームウェアアプリケーションと見なされ得る。例えば、２０２ａという番号が付されているＡＰＰ  ＦＷ１は仮想マシンを含むことができ、アプレットは２０２ｂという番号が付されているＡＰＰ  ＦＷ２により／の中で構成され得る。ファームウェアのこれらのピースがオーバーレイに分割されるのであれば、そのアプリケーションファームウェア“パズル”の種々のピースが何処に格納されているかをアプリケーションファームウェアのオーバーレイマップ２０１ａが示す。オーバーレイのハッシュ値、ＳＨＡ−１値、あるいはＭＡＣ値は、それら自体が暗号化されたフォーマットでフラッシュメモリ内のテーブル２０１ｂに格納される。これらの値は、それら自体が暗号化され得て、ある実施形態では、前述したように装置固有のハードウェア暗号化技術で暗号化され得る。ある実施形態では、カードの他のファームウェアとの統合および動作を容易にするためにフラッシュメモリ内に仮想マシンのためのスペースが確保される。これは、部分的にファームウェアにより提供されるカードのセキュリティが、さもなければ仮想マシンによって、またはカード上で動作してそれに格納されているデータにアクセスする他のアプリケーションによって、損なわれるかもしれないセキュアカードにおいて、特に重要である。
【００６１】
本発明の実施形態が示され説明されてきたけれども、実施例となるそれらの実施形態に対する変更および改変が、その広い態様において本発明から逸脱せずに行われ得る。従って、前に明示的に記述されてはいないけれども本発明の範囲内にある本発明の他の実施形態があること、従って本発明の範囲が提示された実施例となる実施形態だけに限定されないことは明らかであるはずである。従って、添付されている特許請求の範囲が本発明の確立された限界を述べていることが理解される。しかし、言葉は発明の範囲を記述する不完全な方法であるから、特許請求の範囲で明示された言葉の中にない同等の構造および方法も本発明の真の範囲内にあることも理解されるべきである。
【図１】
2010500656.tif 000003
【図２】
2010500656.tif 000004
【図３Ａ】
2010500656.tif 000005
【図３Ｂ】
2010500656.tif 000006
【図４Ａ】
2010500656.tif 000007
【図４Ｂ】
2010500656.tif 000008
【図４Ｃ】
2010500656.tif 000009
【図５】
2010500656.tif 000010
【図６】
2010500656.tif 000011
【図７】
2010500656.tif 000012
【図８】
2010500656.tif 000013
【図９】
2010500656.tif 000014
【国際調査報告】
2010500656.tif 000015
2010500656.tif 000016
2010500656.tif 000017
2010500656.tif 000018
2010500656.tif 000019