説明

仮想マシンのアクティブ化を伴う携帯可能な大容量記憶装置

携帯可能な大容量記憶装置が、デジタル画像、映画および音楽のような大きなファイルを格納するために使用される。この大容量記憶装置は、装置の信頼できる動作を保証し、著作権で保護される材料のようなセキュアコンテンツの望まれていないコピーまたは格納を防止するために読み書き動作へのアクセスを制限するセキュリティメカニズムを伴うファームウェアを有する。そのセキュリティメカニズムは一般的にアクセスを制限するけれども、ファームウェアは、仮想マシンと協働するように動作することができて、仮想マシンが存在するならば仮想マシンがセキュアコンテンツにアクセスするとともにファームウェアと関連して動作して大容量記憶装置にデータを読み書きすることを可能にする。仮想マシンは、製造時にロードされるがアクティブ化はされないか、あるいは製造後にダウンロードされてアクティブ化される。仮想マシンについてのロイヤリティは、仮想マシンが装置内に存在していてかつアクティブ化されたときにのみ支払われる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般的には携帯可能な大容量記憶装置とこの装置上で動作するファームウェアおよびソウェトに関し、特にソフトウェアおよび他のコンテンツを提供して、それをアクティブ化し、またそのために支払いをすることに関する。
【背景技術】
【0002】
スマートカードは、しばらく前から普及していて、特にキャッシュカードおよびクレジットカードとして頻繁に使用される。スマートカードは、その名前が示唆するように、プロセッサ制御され、そして識別データとトランザクション関連データとを保持する少量のメモリも含む。Java(ジャバ)ベースのプログラムをスマートカード上で作成して動作させる能力が最近開発されて普及しつつある。Javaベースのプログラムは、デジタルカメラおよびミュージックプレーヤで通常使用される大容量記憶装置メモリカードのような他のインテリジェント装置でも実行され得る。これらの他のカードは、スマートカードに格納されるトランザクションおよび識別データより何桁も大きい写真および音楽のような非常に大きなデータのライブラリを格納しアクセスしなければならないので、大容量記憶装置として認識されている。これらの大容量記憶装置カードの例は、コンパクトフラッシュ(“CF”)カード、セキュアデジタル(“SD”)カード、ミニSDカード、マイクロSDカード、マルチメディア(“MMC”)カード、およびメモリスティックである。列挙された例のほかに、異なるフォーマットの大容量記憶装置カードが多数ある。携帯可能なフラッシュメモリベースのユニバーサル・シリアル・バス(“USB”)ドライブは、他の1つのタイプの携帯可能な大容量記憶装置である。
【0003】
Java Card(ジャバカード(登録商標))技術は、Javaプログラミング言語で書かれたプログラムをスマートカードおよび他の小型で資源制約的装置の上で動作させることを可能にする。開発者は、標準的なソフトウェア開発ツールおよび環境を用いてプログラムを作ってテストし、その後にそれらを、Java Card技術対応装置にインストールされ得る形に変換することができる。Java Cardプラットフォームのためのアプリケーションソフトウェアは、アプレット、あるいは(それをブラウザアプレットと区別するために)より明確にJava Cardアプレットまたはカードアプレットと称される。
【0004】
Java Card技術は、Javaプログラミング言語で書かれたプログラムが小型メモリカード上で動作することを可能にするけれども、そのような小型装置はJavaプラットフォームの全機能をサポートするには余りに非力である。従って、Java Cardプラットフォームは、Javaプラットフォームの機能の慎重に選択されカスタマイズされた部分集合だけをサポートする。この部分集合は、小型装置のためのプログラムを書くのに良く適する機能を提供し、Javaプログラミング言語のオブジェクト指向能力を維持する。
【0005】
Java Cardは1つのタイプの仮想マシンである。他の仮想マシンも利用可能であり、仮想マシンは、物理的なプロセッサの抽象概念であって在来のプロセッサの仮想相対物を有する。Java言語の場合、Java仮想マシンは、コンパイルされたJavaバイナリコードと基礎のハードウェアプラットフォームのマイクロプロセッサとの間のインターフェイスとして作用するソフトウェアである。
【0006】
そのような小型装置で実行されたときに特に有益な1つのアプリケーションは、音楽や映画などのような保護されたコンテンツのための支払いに関連する。
【0007】
Javaで書かれたアプリケーションを動作させるためには、Java Card仮想マシンがカードにロードされてアクティブ化されなければならない。マシンの各要求は、サン(Sun)またはそのようなコンポーネントの供給業者にライセンス料を支払うことを必要とする。スマートカードの主な目的はトランザクションであるので、ライセンス料のコストは、カードの発行者にとってビジネスをするためのコストとして容認可能である。しかし、大容量記憶装置型メモリカードのユーザは、仮想マシンが可能にする付加的なアプリケーションの用途を持っているかもしれないし、あるいは持っていないかもしれない。なぜならば、典型的なユーザは、主としてデータ格納を目的としてカードを所有し使用するからである。従って、製造業者はライセンス料のコストを当然のこととして肩代わりさせたり吸収したりすることはできない。さらに、1つまたは複数の仮想マシン上で動作するアプレットまたは他のプログラムの各々も、(その用途を持っていないかもしれないユーザに)当然のこととして肩代わりさせたり、あるいは吸収したりすることのできないライセンス料を必要とするかもしれない。
【0008】
Java Card仮想マシンの役割は、Java Cardプラットフォームのためのソフトウェアの生産および展開のためのプロセスの文脈で最善に理解される。Java Cardシステムを構成するコンポーネントは幾つかあり、それはJava Card仮想マシン、Java Cardプラットフォームのためのコンバータ(“Java Cardコンバータ”)、端末インストレーションツール、および装置上で動作するインストールプログラムを含む。Java Cardアプレットの開発は他のJavaプログラムの場合と同様に始まる。すなわち、開発者は1つ以上のJavaクラスを書き、ソースコードをJavaコンパイラでコンパイルし、1つ以上のクラスファイルを生成する。アプレットは、装置環境をエミュレートするためにシミュレーションツールを用いてワークステーション上で動作させられ、テストされ、デバッグされる。その後、アプレットが何時でも装置にダウンロードされ得る状態であるとき、アプレットを構成するクラスファイルは、Java Cardコンバータを用いてCAP(変換済みアプレット)ファイルに変換される。Java Cardコンバータは、Javaパッケージを構成するクラスファイルの全てを入力と見なす。Java Cardコンバータは1つ以上のエクスポートファイルも入力と見なす。エクスポートファイルは、変換されるクラスによりインポートされる他のパッケージのコンテンツについての名前およびリンク情報を含む。アプレットまたはライブラリパッケージが変換されるとき、コンバータは、そのパッケージのためにエクスポートファイルも作ることができる。
【0009】
普通、変換後、CAPファイルはカードリーダ周辺装置を有するデスクトップ形コンピュータのようなカード端末装置にコピーされる。その後、その端末装置上のインストールツールはそのCAPファイルをロードし、それをJava Card技術対応装置に送る。装置上のインストールプログラムは、CAPファイルのコンテンツを受け取って、Java Card仮想マシンにより動作させられるようにアプレットに準備させる。仮想マシン自体は、CAPファイルをロードしあるいは操作しなくてもよくて、インストレーションプログラムによって装置にロードされたCAPファイルに見出されるアプレットコードを実行するだけでよい。
【0010】
Java Cardプラットフォームのこれらの態様および他の態様は、サンマイクロシステムズ社 (Sun Microsystems) の仕様書、すなわちApplication Programming Interface, Java CardTM Platform, Version 2.2.1(非特許文献1)、Runtime Environment Specification, Java CardTM Platform, Version 2.2.1(非特許文献2)、およびVirtual Machine Specification, Java CardTM Platform, Version 2.2.1(非特許文献3)に記載され、その全体が本願明細書において参照により援用されている。
【0011】
前に簡単に述べられたように、Javaで書かれたアプリケーションを動作させるためには、Java Card仮想マシンがカードにロードされてアクティブ化されなければならない。
【0012】
ヨシモトらの米国特許第6,772,955号(特許文献1)に記載された1つの従来のアプローチでは、カードがポイントベースのトランザクションで使用されるように、仮想マシンはメモリカードコントローラチップの一部として提供される。カードをポイントカードとして使用するためのソースコードは、Javaで書かれてカードにロードされる。ポイント残高は、カードで購入された各アイテムについて更新される。
【0013】
Java仮想マシンの各要求は、サンまたは他の供給業者にライセンス料を支払うことを必要とする。同様に、他のどんな所有権をもった仮想マシンも、そのようなマシンの実施権許諾者への支払いを必要とし得る。スマートカードでは、各カードは、Java Card仮想マシンのアクティブな、支払済みのコピーを備える。これは、ヨシモトらの特許(特許文献1)に記載されているシステムにおそらく加わるように、各スマートカードのコストに加わる。スマートカードの基本機能は大半のアプリケーションにおいてトランザクションであるので、このコストは、吸収され、かつ/または、製造業者、仲買人、あるいは消費者に転嫁され得る。しかし、仮想マシンの機能が決して利用されないかもしれない消費者用の大容量記憶装置では、ライセンスのコストを吸収しあるいは転嫁することは望ましくない。
【0014】
グローバルプラットフォーム (Global Platform)は、スマートカードの進歩および標準化のための産業コンソーシアムである。グローバルプラットフォームは、スマートカード業界の標準団体として活動し、多くの産業において多くのサービスプロバイダによるスマートカードプログラムの世界的展開のための公開技術枠組みを作成し維持する。グローバルプラットフォームのアプリケーションプログラミングインターフェイス(“API”)およびグローバルプラットフォームの他の態様が、www.globalplatform.comで入手できる2004年12月付のThe Global Platform Card Specification V.2.1.1(非特許文献4)およびThe Formal Specification of Global Platform Card Security Requirements(非特許文献5)に記載され、その全体が本願明細書において参照により援用されている。グローバルプラットフォームは、仮想マシンを既に持っているスマートカードまたは他の装置にアプレットをダウンロードすることに配慮している。しかし、必要とされるアプレットと関連する機能とを提供するけれども、これはアプレットを動作させるのに必要な仮想マシンを既に持っているカードのために提供するものである。
【先行技術文献】
【特許文献】
【0015】
【特許文献1】米国特許第6,772,955号
【特許文献2】米国特許出願第11/053,273号
【特許文献3】米国特許出願第11,314,032号
【特許文献4】米国特許出願第11/317,339号
【非特許文献】
【0016】
【非特許文献1】Application Programming Interface, Java CardTM Platform, Version 2.2.1
【非特許文献2】Runtime Environment Specification, Java CardTM Platform, Version 2.2.1
【非特許文献3】Virtual Machine Specification, Java CardTM Platform, Version 2.2.1
【非特許文献4】The Global Platform Card Specification V.2.1.1
【非特許文献5】The Formal Specification of Global Platform Card Security Requirements
【発明の概要】
【0017】
本発明は、製造および使用のコストを最小にするのと同時に携帯可能な大容量記憶装置の潜在的用途を増大させる。本発明は装置がいろいろな専用ソフトウェアアプリケーションを動作させることを可能にするけれども、それらのアプリケーションのコストは、ユーザがそれらのアプリケーションの機能を利用することを選択した場合に限って負担される。換言すれば、潜在的用途に関連するコストは、その潜在性が実現された場合に負わされるだけである。これは、製造業者と消費者との両方にとって有益である。製造業者は、一部の消費者にだけに望ましいかもしれない機能についてのコストを吸収しあるいは転嫁せずに製品機能と市場浸透とを増大させることができる。特徴を利用することを望む消費者は必要に応じてそれらのために支払いをすることができるが、機能を利用することを望まない者は、自分たちが望んでも必要としてもいないもののために支払いをする必要はない。
【0018】
仮想マシンがあれば、そうでない場合に装置上で直接動作させるべく利用できるアプリケーションよりも多様なアプリケーションを使用することができるので、仮想マシンは携帯可能な大容量記憶装置においては非常に有益である。その理由は、仮想マシンが特定の処理プラットフォームからの独立性を提供することにある。仮想マシンは、マイクロプロセッサによって実行される自己内蔵型の動作環境であるけれども、別個のコンピュータであるかのように振る舞う。仮想マシンアプリケーションは、仮想マシンがどんな種類のプロセッサおよびオペレーティングシステム上で動作していても、その仮想マシンにおいて同じ仕方で実行し動作する。
【0019】
従来の解決策は仮想マシンをメモリカードに組み込んでいるけれども、その仮想マシンのコストは、消費者が仮想マシンを望んだかあるいは必要としたかに関わらず、製造業者と消費者とにより負担されなければならなかった。これは、主としてトランザクションカードまたは“電子財布”として使用されるように意図された装置では容認できるけれども、最初にあるいは主として他の目的に使用されるかもしれない携帯可能な大容量記憶装置では理想的ではない。本発明では、仮想マシンのためのライセンス料は、ユーザが1つまたは複数の仮想マシンの存在を必要とするアプリケーションを使用することを望む場合にだけ支払われればよい。従って、基礎の大容量記憶装置のコストを最小限に保つことができ、アドオンアプリケーションおよび仮想マシンについては必要であるかあるいは望まれる場合に限って支払いを行うことができる。仮想マシンを装置の寿命の間の何時でもアクティブ化することができ、支払いはそれがアクティブ化された場合に限って行われる。マシンは、また、何時でも、単独で、あるいはマシンを利用するアプリケーションと組み合わされて、カードにロードさせることができる。ある好ましい実施形態では、仮想マシンが必要であるとき、仮想マシンのインストールは、ユーザに知られずにシーンの背後で仮想マシンまたはより高いレベルのアプリケーションのアクティブ化の一部として行われる。
【0020】
本発明は、料金を必要とするプログラムが使用されるときにだけライセンス料を支払うことを考慮する。これは、他の状態ではそれが実行不可能である環境においてこれらのプログラムを組み込むことを可能にする。これは、大容量記憶装置型メモリカードのような小型装置で実行され得る多量の多様なアプリケーションがある場合に、特に有益である。
【0021】
本発明は、ユーザが自分の望むプログラムだけを速やかにかつ容易に選択し、アクティブ化し、そのために支払いをすることを可能にする。これは、基本の装置を全ての人にとって入手可能に保つのと同時に、カスタマイズされたアプリケーションがそれを望ましいものと思った人により使用されることを考慮に入れている。
【0022】
仮想マシンを、携帯可能な大容量記憶装置を動作させる基礎のファームウェアと統合することは簡単な課題ではない。保護されているコンテンツへのアクセスを制限しなければならない“セキュア”な装置の場合には、特にそうである。そのような装置では、装置のファームウェアは、少なくとも部分的に、コンテンツを守る責任を有する。従って、それは読み/書き動作へのアクセスを制限する。このような事情の故に、保護されているコンテンツの認証されないコピーを作りたい人にとって、それはターゲットである。従って、基礎のファームウェアは、コンテンツをハッカーから守らなければならず、さらに、仮想マシンのようなアプリケーションがコンテンツにアクセスすることを可能にしなければならない。仮想マシンが任意の時点で(あるいは、そのようなコンテンツを使用する装置で動作するアプリケーションがオンにされる時点で)ロードされ得るという場面では、ファームウェアは、仮想マシン(またはアプリケーション)があってもなくても動作できなければならず、また悪意のソフトウェアが仮想マシン(またはアプリケーション)に変装することを防止しなければならない。
【図面の簡単な説明】
【0023】
【図1】大容量記憶装置100の略図である。
【図2】大容量記憶装置100のソフトウェアコンポーネントおよびホスト105の略図である。
【図3A】本発明の1つの実施形態に従う大容量記憶装置のソフトウェアコンポーネントの説明図である。
【図3B】本発明の1つの実施形態に従うダウンロードされたアプリケーションの説明図である。
【図4A】本発明に従う第1の供給場面のフローチャートである。
【図4B】本発明に従う第2の供給場面のフローチャートである。
【図4C】本発明に従う第3の供給場面のフローチャートである。
【図5】本発明の1つの実施形態に従うアプリケーションプロトコルインターフェイス管理を示すフローチャートである。
【図6】公開鍵インフラストラクチャおよび大容量記憶装置100を示す。
【図7】公開鍵インフラストラクチャの幾つかのコンポーネントを記述した表である。
【図8】本発明の1つの実施形態に従う収益の流れの説明図である。
【図9】フラッシュメモリ140のメモリスペースの一部分の説明図である。
【発明を実施するための形態】
【0024】
背景技術の欄で論じられたように、携帯可能なフラッシュメモリベースの大容量記憶装置は、今日、大きなファイルおよびソフトウェアプログラムを格納するために広く使用されている。メモリカードまたはポケットサイズのUSBフラッシュ装置に依拠するデジタル装置は広く使用されているので、多くの人は、これらの携帯可能な大容量記憶装置を1つまたは幾つか既に持っている。本発明は、製造および使用のコストを最小にするのと同時にこれらの装置の潜在的な用途を増やす。本発明は、装置がいろいろな専用ソフトウェアアプリケーションを動作させることを可能にするけれども、それらのアプリケーションのコストは、ユーザがそれらのアプリケーションの機能を利用することを選択した場合に限って負担される。換言すれば、潜在的用途に関連するコストは、その潜在性が実現された場合に負わされるだけである。これは、製造業者と消費者との両方にとって有益である。製造業者は、一部の消費者にだけに望ましいかもしれない機能についてのコストを吸収しあるいは転嫁せずに製品機能と市場浸透とを増大させることができる。特徴を利用することを望む消費者は必要に応じてそれらのために支払いをすることができるが、機能を利用することを望まない者は、自分たちが望んでも必要としてもいないもののために支払いをする必要はない。
【0025】
大容量記憶装置において動作させられかつ/または格納され得るソフトウェアおよび他のコンテンツの多くは、所有者または実施権許諾者への支払いを必要とする。例えば、ソフトウェアプログラムは作成者へのライセンス料の支払いを必要とし、また音楽、映画、写真または著作のようなコンテンツも再販業者、作成者、プロバイダおよび/または実施権許諾者などへの支払いを必要とする。大容量記憶装置で実行されたときに特に有益なソフトウェアプログラムの一例は仮想マシンである。その理由は、仮想マシンが、基礎のハードウェアプラットフォームの特定性に合わされなくてもよいソフトウェアの作成および実行を考慮に入れていることにある。仮想マシンの1つの例は、背景技術の欄に記載されたように、サンマイクロシステムズ社により提供されるJavaベースの仮想マシンである。
【0026】
サンマイクロシステムズ社の仮想マシンが一例として記載されるけれども、他の仮想マシンが存在し、さらに他のものが開発され得る。仮想マシンは、マイクロプロセッサによって実行される自己内蔵型の動作環境であるけれども、別個のコンピュータであるかのように振る舞う。仮想マシンアプリケーションは、仮想マシンがどんな種類のプロセッサおよびオペレーティングシステム上で動作していても、その仮想マシンにおいて同様に実行し動作する。これは、どんな処理プラットフォームからの独立性をも提供する。従って、仮想マシンなしで利用し得る場合よりも広い範囲のソフトウェアプログラムが仮想マシンおよび基礎の装置の上で動作するべく利用可能であるはずである。本発明は、どのような仮想マシンおよびそれが可能にするアプリケーションとも協働することができる。
【0027】
大容量記憶装置型メモリカードの一般的なアーキテクチャが図1に示されている。大容量記憶装置100の種々のコンポーネントはシステムバス150を介して互いに結合されて通信する。装置100は、ホストインターフェイス140を介して、ホスト105とも称される外部装置105と通信する。ホストインターフェイス140は、ホスト105と装置100との間でデータをやり取りする論理コンポーネントおよびハードウェアコンポーネントの両方を含む。装置100が大量記憶メモリカードの形状係数を有するならば、インターフェイスは、例えばデジタルカメラの接点構造とインターフェイスする電気接点を含む。装置100がUSB装置の形状係数を有するならば、ホストインターフェイス140は、USBポートとインターフェイスするための電気接点と所要のドライバとを含む。コントローラ110は、装置を制御し、大量記憶フラッシュメモリ140のセル内での読み書き動作とデータ分布とを管理する。装置100は、図に示すように個別的なコンポーネントであるかあるいはコントローラ110内に統合され得るランダムアクセスメモリ(“RAM”)120も含む。コントローラ110は、読み出し専用メモリ130または大容量記憶フラッシュメモリ140に格納されるRAM120からのファームウェアを実行する。読み出し専用メモリ130は、電気的に消去可能で従ってEEPROMまたはEPROMであることができる。ファームウェアは、コントローラにより実行されてメモリカードの動作を制御する。ファームウェアが壊れたならば、メモリカードは最早適切に機能しない。
【0028】
大容量記憶装置100は、好ましくはセキュリティ手段を含む。これらの手段は、アプリケーションの状態(例えば、非アクティブからアクティブまで)が認証された者によってのみ変更され得ることを保証する。状態は装置ファームウェアにより制御され、ファームウェアは、特定のアプリケーションがアクティブで使用され得ることを確認するために状態をチェックすることができる。これらの手段は、また、好ましくは装置のハードウェアおよびソフトウェア(ファームウェア)の両方で実現され、ある実施形態では、装置に格納され、また装置へおよび装置から転送されるデータを暗号化する。この種のセキュア大容量記憶装置に関するさらなる情報については、その全体が本願明細書において参照により援用されている、Holtzmanらの “Secure Memory Card With Life Cycle Phases"という米国特許出願第11/053,273号(特許文献2)、Holtzmanらの “Memory System with in Stream Data Encryption/Decryption"という米国特許出願第11/314,032号(特許文献3)、および “Secure Yet Flexible System Architecture for Secure Devices With Flash Mass Storage Memory"という米国特許出願第11/317,339号(特許文献4)を参照されたい。
【0029】
装置100は、装置の一実施形態であるメモリカードと称されるが、前述したように、装置100はメモリカード、USB装置あるいは他の形状係数の形であることができる。
【0030】
ファームウェアはカードのデータへの経路を提供し、そのうちのあるものは保護されたデータであり得る。コントローラを動作させるファームウェアの完全性は、特にセキュアカードでは、重要である。カードがセキュアカード(例えば、何らかの形のデジタル著作権管理(“DRM”)を実行するもの)であるならば、ファームウェアの機能のうちの1つは、保護されるコンテンツへのアクセスを制限することである。DRMは、デジタルコンテンツの自由な使用および転送を制限するための幾つかの技術を記述するために使われる広い用語であるので、“デジタル制限管理”と記述されるほうがより適切だと考える人たちもいる。図2は、ファームウェアを含む、装置100のソフトウェアコンポーネントの幾つかを示す。仮想マシン220は、基本のカードファームウェア210には存在しない機能を含むけれども、フラッシュメモリ内のコンテンツにアクセスすることもできる。従って、ある意味ではそれがカード内の一種のファームウェアと考えられてもよく、ファームウェア210と完全に統合されかつ互換性がなければならない。従って、カードファームウェア210は、VM220が存在してもしなくても頑健に機能し得るように実現されなければならない。同様に、VM220はカードファームウェア210とともに機能するように実現される。ファームウェア210がVM220と統合されることを可能にするファームウェア210のコードにおいて実現される設計態様は、ファームウェア210内の“フック”と考えられてよい。これらのフックとこれらが必要とする互換性とは、ファームウェア210とVM220との間の二重矢印によって表されている。カード100内にロードされたアプレットは、VM220を介してファームウェアと通信することができて、カードにおいて任意の数の異なるソフトウェアアプリケーションを提供することができる。これらのアプレット240A・・・Xは、仮想マシン上で動作するので、コントローラ110および装置110の他のハードウェアコンポーネントの細目に合わせられなくてもよい。そうでなければカードと互換性がなくなる様々なソフトウェアアプリケーションのライブラリに対して装置を開放する。
【0031】
図2に見られるように、ホスト105は、アプリケーションプログラミングインターフェイス(“API”)を通してファームウェア210(VM220を含む)と通信しなければならない。任意の数のAPI250A・・・Xがカードにおいて実現され得る。これは、標準またはネイティブ装置API 250Aと、グローバルプラットフォームAPIのような業界標準のまたは広く受け入れられているAPI 250Bと、所有権をもったAPI 250C(例えば、Java仮想マシンのためのAPIのようなVM220に結び付けられているAPI、あるいはアプレット240のためのAPIまたはアプレット240のうちの1つのような)と、他の任意のAPI 250Xとを含む。VM220は、機能するために適切なAPIを適切な場所に持っていなければならないので、特定の仮想マシンをアクティブ化する1つの方法は、その特定の仮想マシンと互換性があるAPIをアクティブ化しかつ/またはロードすることである。もちろん、VMは他の種々のトリガで直接アクティブ化され得る。VMは、図9に関して後述するように、一種のファームウェアである。種々のアクティブ化の方法が以下で論じられる。
【0032】
カードのアプリケーションが何であっても、前述した仮想マシンの機能の付加は、カードの他のファームウェアとの統合を必要とする。仮想マシンとその種々のアプレットとがファームウェアと統合されるのがカードが工場を去る前であれ後であれ、カードはシームレスに動作しなければならない。アプレットが現場でダウンロードされるという場面において、そのアプレットのコンテンツおよび性質は、可能であるとしても、容易にはベリファイされ得ない。従って、カードの基本ファームウェアは、現場ダウンロードと、アプレットが必要とするデータアクセスとを容易にするために充分にフレキシブルでなければならないのと同時に、ぞんざいに書かれたアプレットでも機能するように充分に頑健でなければならない。さらに、アプレットがカードのDRMを破ることを目指している場合、ファームウェアはアプレットからデータを守り、さらに、認証されたユーザにコンテンツを提供し続けなければならない。
【0033】
少量の高度に保護されたトランザクションデータを守る目的のために構築されたスマートカードとは異なって、大容量記憶装置型メモリカードはコンテンツの非常に大きなライブラリへの頻繁なアクセスを提供しなければならない。このユーザコンテンツは、カードが出会うことのあるアプリケーションと同じく、カードの寿命の間常に変化する。カードのファームウェアとハードウェアとは、カードのコンテンツを常に守るのと同時に新しいアプリケーションを求めるユーザの希望に配慮し、それらが現場で(あるいは工場で)ダウンロードされることを可能にする。これは、簡単な課題ではない。
【0034】
図3Aは、カード100内のソフトウェアコンポーネントのうちの幾つかの表示である。カード内で種々のアプレット240A〜Xが動作している。好ましい仮想マシン220はJava Card仮想マシンであり、そしてJava Cardまたは他のJava仮想マシンの場合には、特定のアプレットおよび仮想マシン220に基づいて必要であるかあるいは望ましければ、Java Cardフレームワークも存在する。これらのコンポーネントの全てはカードオペレーティングシステムまたはファームウェア210の上で動作する。この場合、Java Cardフレームワークと他の業界アドオン230とJava仮想マシン220とはカードオペレーティングシステム210の上で動作する。
【0035】
図3Bは、何時でもカードにロードされてアクティブ化されることができて本発明のファームウェアおよびシステムの一部として機能することができるソフトウェアコンポーネントあるいは“パッケージ”を示す。パッケージは、仮想マシン220だけではなくて、(任意に)1つ以上のソフトウェアアプリケーション270も含むことができる。基礎のファームウェア210は、VM220およびアプリケーション270という付加的なソフトウェアと協働するように備えられている。仮想マシン上で動作する任意のソフトウェアアプリケーション270が何時でもカードにロードされ得る。点線は、VM200がアプリケーション270とともにあるいはアプリケーション270を伴わずにロードされ得ることと、アプリケーションのインストールがVMのものと同時に行われなくてもよいこととを示すのに役立つ。パッケージのコンポーネントに関連する料金の支払いは、i)パッケージがカード内に存在し、かつii)パッケージがアクティブ化されるときに行われるだけでよい。
【0036】
図3Bに見られるパッケージは、幾つかの方法でユーザに提供され得る。図4Aに見られるように、そのパッケージは販売時にカードで提供され得る。この場合、パッケージは、使用される前に“現場”でアクティブ化されなければならない。代わりに、図4Bに見られるように、そのパッケージを、完全なパッケージとしてまたは個別にユーザによって“現場”でダウンロードしてもよい。他の1つの方法として、図4Cに見られるように、新しいファームウェア210がカードにロードされ得る。このファームウェアのダウンロードは、図3Bに見られるパッケージの全体または一部をも含む。一実施形態では、これは、図2に見られるファームウェア210、VM220、アプレット240が全てファームウェア更新の過程でロードされることを意味する。これらの基本的な方法は、後述する図4A,4Bおよび4Cのフローチャートに示されている。
【0037】
前述したように、仮想マシンおよびアプレットは、利用されるためにはアクティブであるかあるいはアクティブ化されることを必要とする。もちろん、それは多くの場面において好ましくはないけれども、アクティブなコンポーネントをダウンロードするために必要なセキュリティ手段はないかもしれない。これは、カードの配布が限定される安全なあるいは信頼できる環境に適していそうであるが、必ずしも適するとは限らない。また、ある実施形態では、セキュリティはダウンロードプロセスの一部であることができて、必要とされる付加的なアクティブ化はなくてもよい。換言すれば、第1にユーザがダウンロードすることを認証されているか、あるいはダウンロードシーケンスの一部としてアクティブ化が行われ得るとすれば、コンポーネントはアクティブ化された状態でダウンロードされ得る。
【0038】
カード100は、アクティブ化コマンドを受け取って有効にするアクティブ化マネージャを有する。アクティブ化マネージャは、ファームウェア210の一部であることができ、あるいは別個のソフトウェアモジュールであると考えられ得る。アクティブ化マネージャは、アプリケーションまたはオペレーティングシステムの特徴をオンにし、かつオフにする。このアクティブ化は、例えばセキュアなチャネルの上で、安全に行われるのが好ましい。一実施形態では、アクティブ化マネージャは、正しいコードを受け取れば、パッケージをアクティブ化する。アクティブ化マネージャは、コードを受け取り、それを、コードを有効にするサーバと照合するか、あるいはカードのメモリに格納されているコードの暗号化されたバージョンと照合する。アクティブ化マネージャは、失敗したアクティブ化の追跡も行い、ある実施形態では、失敗した試みの数を制限して、その数を上回ったならばカードをロックすることができる。
【0039】
コードは、種々のパラメータに基づくことができ、任意の数の仕方で計算され得る。コードは、合っているアプリケーションをオンにすると期待される単純な数であってもよい。コードは、アクティブ化のために包括的であることができ、またアプリケーションIDと関連付けられかつ/またはアプリケーションIDに基づいてもよく、それは特定のアプリケーションに一意に関連付けられた数である。コードは部分的にカードの一意のIDに基づくことができ、それは特定のカードだけに関連付けられた数である。コードは、アプリケーションと、そのアプリケーションがアクティブ化されるべきかそれとも非アクティブ化されるべきかと、アクティブ化コード自体とを明示する部分を有することもできる。コードは、非アクティブ状態、アクティブ状態、サスペンドされた状態、あるいは取り消された状態のような特定のアプリケーション状態を明示するかあるいは含むこともできる。それは、例えばDRM方式における種々の許可レベルなどの、他の所要の種々の許可へのアクセスを明示し、かつ提供することもできる。コードは、全ての前述した方式の幾つかの態様または全ての態様に基づきあるいはそれらを含むこともできる。
【0040】
コードは、対称または非対称暗号認証方式の一部であることもできる。例えば、対称方式では、コードは一種のワンタイムパスワード(“OTP”)であることができ、これは当該技術分野で良く知られている。この場合、カードと検証サーバとの両方が同じ種を持ち、その種と任意の数の選択されたアルゴリズムとに基づいてコードまたはOTPを独立に作る。コードまたはOTPは規則的間隔でインクリメントまたは更新され、そして任意の所与の時点で、カードにおいて計算されたOTPをベリファイサーバにより計算されたOTPと突き合わせてベリファイすることができる。OTP方式では、2つのカードに初めに同じ種がロードされたならば、その2つのカードで(カードとサーバとの中の)パスワードをインクリメントするために異なるアルゴリズムが使用されれば、1つのカード内の種またはワンタイムパスワードの値が危険にさらされたとしても、それを他のカードにハッキングするために使用することはできない。一例では、アクティブ化コードあるいはOTPはカードID、カードタイプ、アプリケーションID、およびOTP種の関数である。カードタイプは、コンパクトフラッシュカード、SDカード、ミニSDカード、MMCカード、トランスフラッシュカード、XDカード、メモリスティックなどの任意の周知のカードタイプであることができ、あるいはUSBフラッシュドライブであることができる。
【0041】
アクティブ化コードがOTP(の関数)を含むかあるいはOTP(の関数)に基づいている実施形態では、そのOTPおよび/またはコードはアプリケーションまたはソフトウェア層をオンまたはオフにするために使用することができる。アクティブ化コードまたはOTPをベリファイするために(リモートサーバまたは他の装置により生成された)OTPまたはコードがカードに送られてカードにより生成されたOTPと比較される。それが正しいとベリファイされたならば、そのアプリケーションまたはソフトウェア層をオンまたはオフにすることができる。その値は1回しか使用することができず、従って複数のアクティブ化のために使用したり認証されていない仕方で渡されて使用することはできないので、これらの目的のためのOTPの使用は有利である。ある実施形態では、アクティブ化されるべきアプリケーションのアプリケーションIDはアクティブ化コードあるいはOTPを生成するためにも使用され得る。このようにして、OTPは一定のアプリケーションに特有になる。
【0042】
前述したように、ある実施形態では複数のカードのために同じ種が使用され得る。OTP計算の基礎にその種がある。また、アクティブ化コードあるいはOTPはカードID、カードタイプ、アプリケーションID、およびOTP種の関数である。これは同じ秘密の種が複数のカードにロードされることを可能にし、それはサーバデータベース上のレコードの数を減少させる。同時に、カードID、カードタイプ、およびアプリケーションIDのうちの1つ以上の関数であり得る種々のアルゴリズムが使用され得るので、一意のOTPおよびアクティブ化コードが生成され、従って高度のセキュリティを提供することができる。
【0043】
最も一般的な非対称方式は公開鍵インフラストラクチャ(PKI)を含み、この場合には装置またはエンティティは2つの鍵すなわち秘密鍵と公開鍵とを持ち、これらは、一方の鍵で暗号化されたデータが他方で解読されることができるとともに秘密鍵を公開鍵から数学的に導出する方法がないように暗号法的に関連付けられている。このような方式では、公開鍵は自由に分配され、秘密鍵は、所有するエンティティによって秘密に保たれる。エンティティの認証は、その公開鍵を用いて暗号化されたメッセージを解読することによって秘密鍵の持ち主であることを証明することが要求されるチャレンジ/レスポンスシーケンスを実行することによって達成される。PKIを用いる本発明の1つの実施形態が図6および図7に示され、それは後述される。
【0044】
さらに、一実施形態では、対称方式の諸態様が非対称方式の諸態様と結合される。そのような実施形態の一例では、1段階でカードをベリファイするためにOTPが使用され、他の1つの段階でチャレンジ/レスポンス対話が使用される。
【0045】
アクティブ化プロセスを論じたので、次に、ダウンロードおよびアクティブ化の両方の諸態様を示す図4A、4B、および4Cのフローチャートに戻る。
【0046】
図4Aは、ロードされた仮想マシンのアクティブ化が実行されるプロセスを示す。図4Aのステップ405において、カードがユーザに販売される前のある時点でカードの発行者またはプロバイダによって仮想マシンが提供される。これは、製造時またはその後の何らかの時点で行われ、カードのファームウェアも存在している。仮想マシンは、休眠あるいは非アクティブ状態である、すなわち、消費者により使用され得ない。従って、(未利用あるいは非アクティブの)仮想マシンのためにライセンス料を当然支払う必要はない。好ましくは、消費者は、それがアクティブ化あるいは“アンロック”される前にはその存在に気づかない。仮想マシンは、任意のタイプあるいはブランドの仮想マシンであってよい。現在入手できる仮想マシンのいくつかの例として、Java、MULTOS、Java Card、組み込みリナックス (embedded linux) 、組み込みJava (embedded java)、dot.net、およびWindows(ウィンドウズ)CEが挙げられる。種々のアプレットをサポートするために種々の仮想マシンが必要とされ、従って複数のVMが装置にロードされ得る。装置ファームウェアは、種々のVMとアプレットとのために必要なリソースの可用性を管理する。
【0047】
ステップ410において、システムのユーザ、カード、またはサーバは、仮想マシンが必要とされるのかあるいは望まれるのかを判定する。次に、ステップ415において、信頼できる機関が仮想マシンをアクティブ化する。仮想マシンに関連するライセンス料を払う必要があるのはこの時点である。公開鍵インフラストラクチャでは、信頼できる機関をしばしば証明機関と称する。証明機関620が図6に示されている。
【0048】
図6は、信用証明書のベリファイ/認証のために公開鍵インフラストラクチャを利用する実施形態を示す。トランザクションは、それらが生起するシステムより安全では決してあり得ないので、通信員同士が互いを突き止めて、自分たちが使う公開鍵を自分たちが通信したい人(またはマシン)に本当に属するという確信を持つ方法を確立することが最も重要な要素となる。公開鍵インフラストラクチャは、この信頼を提供するように設計される。公開鍵をその所有者に関する識別情報に結びつけるデジタル証明書または公開鍵証明書と呼ばれるデータエレメントを用いて、インフラストラクチャは、その結合を生じさせ、使用のコミュニティの中の全てのもののためにそれを管理するように設計される。信用証明書がベリファイされたならば、パッケージは前述したようにコードまたはOTPでアクティブ化され得る。あるいは、信用証明書自体またはそのベリファイが信用証明書のベリファイ/認証のために充分であり、アクティブ化を許すかあるいはトリガする。
【0049】
秘密鍵および公開鍵の組み合わせ暗号法を用いて、PKIは、データ機密性、データ完全性、および鍵管理を含む他の幾つかのセキュリティサービスを可能にする。PKIのための基礎またはフレームワークはITU−T X.509勧告[X.509]において定められ、その全体が本願明細書において参照により援用されている。
【0050】
エンドエンティティは、ときにはエンドユーザであると考えられる。しばしば事実なのであるが、エンドエンティティという用語は、もっと遥かに包括的であるべく意図されている。エンドエンティティは、エンドユーザ、ルータまたはサーバのような装置、プロセス、あるいは公開鍵証明書のサブジェクト名において特定され得る任意のものであり得る。エンドエンティティは、PKI関連サービスの消費者とも考えられ得る。本発明では、図6に示されている実施形態に見られるように、エンドエンティティは大容量記憶装置100とそのユーザとである。
【0051】
公開鍵は、公開鍵証明書の形で配布される。CA(証明機関)620は、公開鍵証明書を発行することのできるコンポーネントであるので、PKIの基礎である。公開鍵証明書は、装置100とリポジトリ610とに送られる。公開鍵証明書は発行元CA(これはサブジェクト名を公開鍵に有効に結び付ける)によりデジタル署名される。CAは、証明取り消しリスト(CRL)の発行について、それが別個のCRL発行者630に委任されていなければ、責任をも持つ。CAは、エンドユーザ登録のような幾つかの管理タスクにも関係し得るけれども、それはしばしば登録機関(RA)に委任されるが、任意であって図6には示されていない。実際上、CAは鍵バックアップおよび回復機能としても役立つことができるけれども、この機能も別個のコンポーネントに委任され得る。CAは、しばしば、PKIにおける“信頼の原泉”と考えられる。公開鍵インフラストラクチャを利用する実施形態では、CA610は、装置100と、パッケージをダウンロードするサーバとが信頼され得ることを示す。この信頼は、ダウンロード、アクティブ化、および支払い目的のために使用される。図7は、図6のコンポーネントを記述した表であり、クイックリファレンスとして提供されている。
【0052】
図4Bは、仮想マシンを単独でまたはより大きなソフトウェアパッケージの一部として提供する他の1つのプロセスである。ステップ435において、カードファームウェア210が提供される。このファームウェアは、仮想マシンとの将来の統合および使用のための“フック”を有するか、あるいは換言すれば仮想マシンと互換性があるように設計される。この仮想マシンの互換性があるファームウェアは、好ましくはカードの製造時に提供されるが、カードの寿命の間の任意のときにロードされてもよい。ファームウェアはカード上のあるタイプのデータへのアクセスを制限するように設計されたセキュリティメカニズムを有する。これは、ファームウェア内の、カードのメモリに格納されている保護されるコンテンツに対しての、セキュリティメカニズム自体を含む。仮想マシンがインストールまたはアクティブ化される前、ファームウェア(のセキュリティメカニズム)はカードの中または外で動作しているソフトウェアアプリケーションが保護されているデータにアクセスすることを許さない。しかし、ファームウェアは、仮想マシンを検出して、いったん仮想マシンがインストールされてアクティブ化されたならば仮想マシンが保護されているデータのうちのあるものにアクセスすることを許すようにも動作可能である。換言すれば、ファームウェアは、複数の異なる動作状態、すなわち仮想マシンを伴わずに使用される状態と仮想マシンとともに用いられる状態とを有すると考えられ得る。両方の状態において、ファームウェアは、ファームウェア自体を含むカード上のデータを保護してそれへのアクセスを制限しなければならない。第2の状態では、ファームウェアは、仮想マシンがデータを読み書きするのを許さなければならないのと同時に、如何なる悪意のあるアプリケーションの認証されない読み書きアクセスを許さない。
【0053】
次に、ステップ440において、カードは製造業者が去った後、ユーザまたは仲買人、あるいはカード自体が、仮想マシンが望まれるのかあるいは必要とされるのかを判定する。その後、仮想マシンとそのプロバイダとがステップ445において認証される。これは、前述したように対称および/または非対称の認証であってよい。ステップ450において、仮想マシンがカードにダウンロードされてアクティブ化される。仮想マシンに関連するライセンス料が支払われなければならないのはこの時点である。いったんアクティブ化されたならば、支払いがトリガされる。
【0054】
図4Cは、仮想マシンを単独であるいはより大きなソフトウェアバンドルの一部として提供する他の1つのプロセスである。ステップ460において、ユーザまたはカードは、仮想マシンが必要とされるのかあるいは望まれるのかを判定する。次に、ステップ465において、仮想マシンおよびそのプロバイダがステップ445において認証される。これは、前述したように対称または非対称の認証であってよい。ステップ470において、仮想マシン220を伴うファームウェア210の新しいコピーまたはバージョンがカードにダウンロードされる。同時に付加的なアプレット240または他のプログラムが任意にロードされ得る。
【0055】
図5は、仮想マシンのダウンロードを伴うAPI管理を示す。ステップ510において、アプレットダウンロードを求めるリクエストが受け取られる。このリクエストは、インターネットを含む任意のネットワークを介して、任意のインテリジェント装置からサーバで作られ得る。サーバは、カードの発行者またはプロバイダ、または任意の第三者により操作され得る。カードの発行者は製造業者またはその代表者であることができ、プロバイダはカードを取り扱い、配布し、あるいは販売する任意のエンティティであることができる。発行者またはプロバイダがリクエストを直接受け取らなかったならば、ステップ510のリクエストを受け取ったサーバは、その後、カードの発行者またはプロバイダにそのリクエストを知らせる。ステップ520において発行者またはプロバイダは、アプレットを動作させるために必要とされる(ならば、その)仮想マシンを、迅速に検索する。次にステップ530において仮想マシンおよびアプレットはカードにシームレスにロードされる。これは、仮想マシンが検索されて自分のカードにロードされたことをユーザが知らなくてもよい(しかし、知ることができる)ことを意味する。ステップ540の前、後、あるいは同時に生じ得るステップ440において、仮想マシンおよびアプレットはアクティブ化される。ステップ550において、カードは仮想マシンおよびアプレットのための適切なAPIを選択して利用する。適切なAPIが存在しなければ、発行者またはプロバイダは適切なAPIをカードにロードする。また、ステップ520の場合と同じく、ユーザは、好ましくは、APIがカードにロードされたことを知らなくてもよい(しかし、知ることができる)。要約すると、このプロセスは、ユーザのためになるべく速くかつたやすく行われる。アプレットを求めるリクエストがなされると、そのアプレットと、アプレットを動作可能にするのに必要な全てのソフトウェアとは、自分のアプレットをロードしてそれを働かせることに必要とされ得る種々のステップをユーザが知ることなく非常に迅速に自動的にロードされ得る。前述したように、適切なAPIを提供することは、仮想マシンおよび/またはアプレットをアクティブ化する1つの方法である。
【0056】
料金およびロイヤリティ収集および配布
仮想マシン、アプレット、あるいは他のソフトウェアアプリケーションがアクティブ化されたならば、アプリケーションのためにライセンス料が支払われなければならない。例えば、カードにロードされたセキュアコンテンツを制御するために使用されるデジタル著作権管理(“DRM”)をアプレットが必要とするならば、そのコンテンツのためにロイヤリティも要求され得る。いずれの場合にも、任意のタイプのロイヤリティあるいはライセンス支払いのために本発明が使用され得る。図8は、種々のエンティティへの、また種々のエンティティからの、支払いのためのシステムを描いている。消費者料金805Aは代金コレクタ810により収集される。これは、好ましくは、インターネットで提供されるセキュアサービスを必要とする。代金コレクタ810は、その料金の一部を自分のサービスのために取っておき、料金の残りを装置発行者820に移す。例えば、コンテンツまたはプログラムがサンディスクにより発行されたSDカードにロードされたならば、サンディスクはカード発行者820であって料金805の一部805Bを受け取る。発行者は、その後、料金805のある程度の部分を取っておいて、部分805Cをコンテンツ所有者あるいは実施権者830に送る。ここまでに記載された実施形態では、Java仮想マシンライセンスと仮想マシン上で動作する種々のアプレットとのための代金が支払われることができる。ライセンスを必要とする他のタイプのコンテンツに対して支払いをするためにより一般的にシステムを使用することもできる。この支払いシステムは、コンテンツと、そのコンテンツを装置のユーザに表現するために必要なソフトウェアとについての支払いにも非常に有益である。
【0057】
セキュリティ
仮想マシンを安全にアクティブ化するほかに、装置100は他のセキュリティ手段も実現する。仮想マシンがフラッシュメモリに格納される前に、カードは、前述した信頼できる機関によりカードが署名されることを要求することができる。さらに、仮想マシン(または他のソフトウェアアプリケーション)が改ざんされたり、内密にアクティブ化されたり、あるいは装置に不法にコピーされインストールされたりできないように、種々の暗号技術も実施され得る。VMは、種々の周知のハッシュ関数、あるいはその代わりに装置の一意の鍵で、暗号化され得る。
【0058】
この暗号化はソフトウェアおよび/またはハードウェアで成し遂げられ得る。これはMAC値、SHA−1値、あるいはハッシュ値の使用を必要とし得る。これらの暗号化/解読技術の原理は良く知られているので、ここでは詳しく説明しない。
【0059】
一実施形態では、暗号化は、コントローラのハードウェアにおいて実現される暗号化エンジンで実行される。暗号化エンジンのハードウェアは、アプリケーションの、入ってくるデータを、それがカードのメモリにロードされるときにオンザフライ(on the fly)で暗号化する。コントローラは、そのコントローラに特有のハッシュ値を作るために使用され、コントローラとの結合はコントローラの一種の署名として役立つ。この署名は、その後、アプリケーションが実行される前にベリファイされる。暗号化エンジンを少なくとも部分的に(完全にファームウェアでではなくて)コントローラのハードウェアで実現することは、非常にクラックしにくい頑健な装置をもたらす。それは、コントローラが(異なる署名を有する)代わりのコントローラと置き換えられ得ないからであるが、それは、装置のセキュリティをクラックする一般的なやり方である。コントローラの署名も容易には偽造され得ない。図9に見られるように、ファームウェア210は、ブートローダ部分210aと、システム部分210bと、ファームウェアのための種々のMAC値、SHA−1値、またはハッシュ値とを持つことができ、それらは、実行されるべくRAMメモリに個々にロードされ得る複数のセグメントまたはオーバーレイに分割され得る。本発明のある実施形態で利用される暗号化技術のこの態様および他の態様に関するさらなる情報を得るために、その全体が本願明細書において参照により援用されているHoltzmanらの米国特許出願(特許文献2〜4)を参照されたい。
【0060】
種々のファームウェアアプリケーションが図9に示されているフラッシュメモリスペースに格納されて見られる。仮想マシンとアプレットとはファームウェアアプリケーションと見なされ得る。例えば、202aという番号が付されているAPP FW1は仮想マシンを含むことができ、アプレットは202bという番号が付されているAPP FW2により/の中で構成され得る。ファームウェアのこれらのピースがオーバーレイに分割されるのであれば、そのアプリケーションファームウェア“パズル”の種々のピースが何処に格納されているかをアプリケーションファームウェアのオーバーレイマップ201aが示す。オーバーレイのハッシュ値、SHA−1値、あるいはMAC値は、それら自体が暗号化されたフォーマットでフラッシュメモリ内のテーブル201bに格納される。これらの値は、それら自体が暗号化され得て、ある実施形態では、前述したように装置固有のハードウェア暗号化技術で暗号化され得る。ある実施形態では、カードの他のファームウェアとの統合および動作を容易にするためにフラッシュメモリ内に仮想マシンのためのスペースが確保される。これは、部分的にファームウェアにより提供されるカードのセキュリティが、さもなければ仮想マシンによって、またはカード上で動作してそれに格納されているデータにアクセスする他のアプリケーションによって、損なわれるかもしれないセキュアカードにおいて、特に重要である。
【0061】
本発明の実施形態が示され説明されてきたけれども、実施例となるそれらの実施形態に対する変更および改変が、その広い態様において本発明から逸脱せずに行われ得る。従って、前に明示的に記述されてはいないけれども本発明の範囲内にある本発明の他の実施形態があること、従って本発明の範囲が提示された実施例となる実施形態だけに限定されないことは明らかであるはずである。従って、添付されている特許請求の範囲が本発明の確立された限界を述べていることが理解される。しかし、言葉は発明の範囲を記述する不完全な方法であるから、特許請求の範囲で明示された言葉の中にない同等の構造および方法も本発明の真の範囲内にあることも理解されるべきである。

【特許請求の範囲】
【請求項1】
ソフトウェアアプリケーションが大容量記憶装置型メモリカードで使用されることを可能にする方法であって、
前記メモリカードのデータ記憶動作を実行させるファームウェアを提供するステップと、
前記カード内に1つ以上のアプリケーションプログラミングインターフェイスを提供するステップと、
前記カードにロードされるときにアクティブ化されない仮想マシンを提供するステップと、を含み、
前記メモリカードは、ユーザが前記ソフトウェアアプリケーションを使用することを望んだならば、前記仮想マシンをアクティブ化し、それにより前記仮想マシンの能力を利用するように動作可能である方法。
【請求項2】
請求項1記載の方法において、
前記仮想マシンについてのライセンス料をアクティブ化された場合に限って支払うステップをさらに含む方法。
【請求項3】
請求項1記載の方法において、
前記仮想マシンの能力を利用する前記ソフトウェアアプリケーションを前記カードにロードするステップをさらに含み、前記ソフトウェアアプリケーションは前記大容量記憶装置型メモリカードのプロセッサにより実行されるために前記仮想マシンに依拠する方法。
【請求項4】
請求項1記載の方法において、
前記仮想マシンは、消費者が前記カードを受け取る前に前記カードにロードされる方法。
【請求項5】
請求項1記載の方法において、
前記仮想マシンは、消費者が前記カードを受け取った後に前記カードに現場でロードされる方法。
【請求項6】
請求項1記載の方法において、
前記ファームウェアは、前記カードに格納されているデータに前記仮想マシンがアクセスすることをアクティブ化後に初めて可能にする方法。
【請求項7】
請求項3記載の方法において、
前記ソフトウェアアプリケーションは、デジタル著作権管理を含む方法。
【請求項8】
請求項7記載の方法において、
コンテンツの所有者または実施権者に、前記デジタル著作権管理アプリケーションにより管理されるコンテンツについて支払いをするステップをさらに含む方法。
【請求項9】
請求項7記載の方法において、
前記仮想マシンは、暗号化される方法。
【請求項10】
請求項9記載の方法において、
前記仮想マシンは、前記メモリカードのハードウェアにより、前記カードにロードされるときに暗号化される方法。
【請求項11】
請求項9記載の方法において、
前記暗号化された仮想マシンは、前記メモリカードのハードウェアの署名を含み、前記署名を作ったハードウェア以外のハードウェアによっては実行され得ない方法。
【請求項12】
請求項5記載の方法において、
前記仮想マシンおよび/または前記仮想マシンのプロバイダの真正性をベリファイするステップをさらに含む方法。
【請求項13】
携帯可能なフラッシュメモリ大容量記憶装置を提供する方法であって、
前記フラッシュメモリ大容量記憶装置を供給するステップと、
前記装置にロードするべきアプリケーションを有する第1者の信用証明書をベリファイするステップであって、前記信用証明書は前記第1者が前記アプリケーションをロードすることを可能にし、前記アプリケーションは仮想マシンを含むステップと、
を含む方法。
【請求項14】
請求項13記載の方法において、
前記アプリケーションを前記装置にロードするステップをさらに含む方法。
【請求項15】
請求項14記載の方法において、
前記アプリケーションは、前記装置が消費者に販売された後に、現場で前記装置にロードされる方法。
【請求項16】
請求項13記載の方法において、
前記アプリケーションに関連する料金の支払いを収集するステップをさらに含む方法。
【請求項17】
請求項16記載の方法において、
前記料金の一部を第2者に分配するステップをさらに含む方法。
【請求項18】
請求項16記載の方法において、
前記料金は、ロイヤリティを含む方法。
【請求項19】
請求項16記載の方法において、
前記料金は、品物またはサービスについての電子支払いを含む方法。
【請求項20】
大容量記憶装置型記憶装置のユーザにソフトウェアアプリケーションを提供する方法であって、
メモリカードのデータ記憶動作を実行させるファームウェアを提供するステップと、
前記カード内に1つ以上のアプリケーションプログラミングインターフェイスを提供するステップと、
前記アプリケーションをロードするリクエストを受け取るステップと、その後に、
仮想マシンを前記カードにロードするステップと、
前記アプリケーションを前記カードにロードするステップと、
を含む方法。
【請求項21】
請求項20記載の方法において、
前記仮想マシンは、前記アプリケーションの要求側に知られずにロードされる方法。
【請求項22】
請求項20記載の方法において、
前記仮想マシンを前記カードにロードするリクエストを受け取るステップをさらに含む方法。
【請求項23】
請求項20記載の方法において、
前記アプリケーションをロードする前に、前記アプリケーションのプロバイダを認証するステップをさらに含む方法。
【請求項24】
請求項20記載の方法において、
前記仮想マシンをロードする前に、前記仮想マシンのプロバイダを認証するステップをさらに含む方法。
【請求項25】
請求項18または19のいずれか記載の方法において、
前記認証するステップは、対称認証を含む方法。
【請求項26】
請求項18または19のいずれか記載の方法において、
前記認証するステップは、非対称認証を含む方法。
【請求項27】
請求項20記載の方法において、
前記カード内の前記アプリケーションを暗号化するステップをさらに含む方法。
【請求項28】
請求項20記載の方法において、
前記カード内の前記仮想マシンを暗号化するステップをさらに含む方法。
【請求項29】
請求項22または23のいずれか記載の方法において、
前記暗号化するステップは、前記メモリカードのコントローラに格納されている鍵を利用するステップを含む方法。
【請求項30】
請求項20記載の方法において、
前記アプリケーションは、動作するために前記仮想マシンを必要とする方法。
【請求項31】
大容量記憶装置型記憶装置とともに使用されるように提供される仮想マシンを動作可能にする方法であって、
前記メモリカードのデータ記憶動作を実行させるファームウェアを提供するステップと、
仮想マシンを前記カードにロードするステップと、
前記仮想マシンの機能を利用するリクエストを前記カードの中に受け取るステップと、その後に、
前記仮想マシンが機能するために必要なアプリケーションプログラミングインターフェイスを提供し、これにより前記仮想マシンが利用されることを可能にするステップと、
を含む方法。
【請求項32】
請求項31記載の方法において、
前記アプリケーションプログラミングインターフェイスを提供するステップをさらに含む方法。
【請求項33】
請求項31記載の方法において、
前記仮想マシンの使用が可能にされたならば、前記仮想マシンについてライセンス料を支払うステップをさらに含む方法。
【請求項34】
大容量記憶装置型記憶装置に用いられるソフトウェアアプリケーションをアクティブ化または非アクティブ化する方法であって、
前記記憶装置のデータ記憶動作を実行させるファームウェアを提供するステップであって、前記ソフトウェアアプリケーションが、前記記憶装置に格納されているデータにアクセスするために前記ファームウェアデータ記憶動作に依拠するステップと、
前記装置の前記ファームウェアでワンタイムパスワード値を生成するステップと、
前記装置の前記ファームウェアで生成された前記ワンタイムパスワード値を前記装置の外で生成されたワンタイムパスワード値と比較するステップと、
前記装置により生成された値が前記装置の外で生成された値と一致することを前記比較するステップでベリファイされたならば、前記ソフトウェアアプリケーションの実行を可能にするかまたは不可能にするステップと、
を含む方法。
【請求項35】
請求項34記載の方法において、
前記ワンタイムパスワードを生成するステップは、前記パスワードを、種と、前記ソフトウェアアプリケーションに関連付けられた一意の識別子および前記装置に関連付けられた一意の識別子のうちの1つ以上との関数として作成するステップを含む方法。
【請求項36】
請求項35記載の方法において、
前記ワンタイムパスワードを生成するステップは、前記パスワードを前記装置タイプの関数として作成するステップをさらに含む方法。
【請求項37】
請求項34記載の方法において、
多くの大容量記憶装置型記憶装置が生産され、前記装置の各々は、同じ種を含むけれども、一意の識別子に基づいて値を様々に変化させるワンタイムパスワード生成アルゴリズムを利用することによって所与のカウントについて異なるワンタイムパスワード値を生じさせる方法。
【請求項38】
請求項34記載の方法において、
前記一意の識別子は、特定の装置に一意に関連付けられた数を含む方法。
【請求項39】
請求項34記載の方法において、
前記一意の識別子は、前記ソフトウェアアプリケーションの特定の要求に一意に関連付けられた数を含む方法。
【請求項40】
大容量記憶装置型フラッシュメモリ装置であって、
コントローラと、
ランダムアクセスメモリと、
フラッシュメモリを含む大容量記憶装置と、
仮想マシンと、
前記動作が望まれるときに、前記仮想マシンの動作を可能にするメカニズムと、を備え、
前記装置のユーザの活動によって前記メカニズムがトリガされたならば、前記仮想マシンに関連するライセンス料が支払われる大容量記憶装置型フラッシュメモリ装置。
【請求項41】
請求項40記載の装置において、
前記仮想マシンは、前記大容量記憶装置フラッシュメモリに格納される装置。
【請求項42】
大容量記憶装置型フラッシュメモリ装置であって、
コントローラと、
ランダムアクセスメモリと、
フラッシュメモリを含む大容量記憶装置と、
仮想マシンと、
前記仮想マシンを動作可能にするための手段と、を備え、
前記動作可能にするための手段がトリガされたときに、前記仮想マシンについての料金の支払いが開始される大容量記憶装置型フラッシュメモリ装置。
【請求項43】
大容量記憶装置型メモリカードであって、
フラッシュメモリと、
コントローラと、
前記フラッシュメモリの読み出し動作および書き込み動作を制御するファームウェアであって、前記読み出し動作および書き込み動作へのアクセスを制限するセキュリティルーチンを前記ファームウェア内に含むファームウェアと、
仮想マシンがないときの前記カードの動作のための、前記ファームウェアの第1の動作状態と、
仮想マシンがあるときの前記カードの動作のための、前記ファームウェアの第2の動作状態と、を備え、
前記第2の動作状態の間、前記ファームウェアの前記セキュリティルーチンは読み出しおよび書き込み保護されるデータからのデータへのアクセスを前記仮想マシンに許す大容量記憶装置型メモリカード。
【請求項44】
請求項43記載の大容量記憶装置型メモリカードにおいて、
前記仮想マシンのためのメモリスペースは、前記フラッシュメモリ内に確保される大容量記憶装置型メモリカード。
【請求項45】
請求項43記載の大容量記憶装置型メモリカードにおいて、
前記カードは、仮想マシンが前記カードにロードされるまでは前記第1の動作状態で動作し、その後は前記第2の動作状態で動作する大容量記憶装置型メモリカード。
【請求項46】
請求項45記載の大容量記憶装置型メモリカードにおいて、
前記仮想マシンとともにアプレットがロードされる大容量記憶装置型メモリカード。
【請求項47】
請求項45記載の大容量記憶装置型メモリカードにおいて、
前記アプレットは、デジタル著作権管理アプリケーションを含む大容量記憶装置型メモリカード。

【図1】
image rotate

【図2】
image rotate

【図3A】
image rotate

【図3B】
image rotate

【図4A】
image rotate

【図4B】
image rotate

【図4C】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公表番号】特表2010−500656(P2010−500656A)
【公表日】平成22年1月7日(2010.1.7)
【国際特許分類】
【出願番号】特願2009−523886(P2009−523886)
【出願日】平成19年7月26日(2007.7.26)
【国際出願番号】PCT/US2007/074399
【国際公開番号】WO2008/021682
【国際公開日】平成20年2月21日(2008.2.21)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.コンパクトフラッシュ
2.リナックス
3.Linux
4.WINDOWS
5.ウィンドウズ
【出願人】(506197901)サンディスク コーポレイション (175)
【Fターム(参考)】