説明

周辺装置用ソフトウェア開発キットのアクセス認証

周辺装置のためのコードセットがホスト装置にインストールされる。コードセットは、ホスト装置から周辺装置へのアクセスを制御するために使用される。コードセットはまた、ホスト装置上のソフトウェアエンティティが周辺装置にアクセスするために使用する1つ以上のコードサブセットを含む。ホスト装置上のソフトウェアエンティティは、ホスト装置にインストールされたコードセットにより首尾よく認証されなければならない。ソフトウェアエンティティが首尾よく認証されると、ソフトウェアエンティティに専用の1つ以上のコードサブセットにアクセスできるようになる。ソフトウェアエンティティは1つ以上のコードサブセットを使って周辺装置にアクセスできる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、セキュア周辺装置の技術に関する。
【背景技術】
【0002】
技術の進歩にともない、セキュア周辺装置に対する不正アクセスの防止が大きな問題となっている。メモリ装置はセキュア周辺装置の一例である。セキュアコンテンツを収容するメモリ装置を不正アクセスから保護しなければならない。
半導体メモリが普及し、様々な電子装置で使用されている。例えば、携帯電話機、デジタルカメラ、モバイルメディアプレーヤ、個人用携帯情報端末(PDA)、モバイル計算装置、非モバイル計算装置等には不揮発性半導体メモリが使われている。
著作権物の保護を中心に、不揮発性半導体メモリ装置に格納されたコンテンツの保護が重要な機能となっている。例えば、ユーザは、音楽等著作権で保護されたコンテンツを電子装置を通じて購入できる。コンテンツの所有者は通常、コンテンツの利用を購入者に限定し、コンテンツの購入に使ったアプリケーション等の電子装置上の正規のアプリケーションでコンテンツを再生することを要求することができる。
【0003】
セキュアコンテンツの不正使用を防ぐために情報を安全に格納するのに暗号化等の様々な保護手法を用いることができる。暗号化されたコンテンツへのアクセスを試みる装置上のアプリケーションは、暗号鍵を使ってコンテンツを復号化しなければコンテンツを読み取ることができない。暗号化されたコンテンツへのアクセスを許可されたアプリケーションは、コンテンツを復号化するための暗号鍵を所持する。無許可のアプリケーションは暗号化されたコンテンツにアクセスできても、適切な暗号鍵がなければコンテンツを読み取ることはできない。しかし、暗号鍵を入手すれば無許可のアプリケーションでも保護されたコンテンツを読み取ることができてしまう。そこで、電子装置上の無許可アプリケーションがセキュア周辺装置上の保護コンテンツにアクセスするのを防ぐ簡素で安全で改良された方法が求められている。
【発明の概要】
【0004】
ここで開示する技術は、セキュア周辺装置に対する不正アクセスを防ぐための、アプリケーション、アプリケーションランチャ、その他のソフトウェアエンティティを認証することに関係する。ソフトウェアエンティティは、ホスト装置上のコードセットと認証方式により認証される。このコードセットは周辺装置に関連するものであり、周辺装置に対するアクセスを制御するためにホスト装置にインストールされる。コードセットはまた、ホスト装置上のソフトウェアエンティティが周辺装置に係るタスクを実行するにあたって使用するコードを含む。ソフトウェアエンティティが首尾よく認証されると、ソフトウェアエンティティが周辺装置に係るタスクを実行するためのコードが使用可能となる。
【0005】
一実施形態のプロセスは、セキュア周辺装置に係るコードセットをホスト装置にインストールすることを含む。このコードセットは、装置ドライバ用コード等のホスト装置上で周辺装置を操作するためのコードを含む。コードセットは、ホスト装置上で第1のソフトウェアエンティティを認証するために使用される。このプロセスはさらに、第1のソフトウェアエンティティが首尾よく認証される場合には、第1のソフトウェアエンティティに対してコードセットの一部分を提示することを含む。この提示することが、第1のソフトウェアエンティティが周辺装置と通信するためのコードを提示することをも含む。
【0006】
認証プロセスの一実施形態は、セキュア周辺装置に係る第1のタスク要求をホスト装置上の第1のソフトウェアエンティティのユーザから受信することを含む。周辺装置のためのホスト装置にインストールされたコードセットには、第1のソフトウェアエンティティから資格証明が送信される。このプロセスはさらに、資格証明が有効である場合には、コードセットの一部分にアクセスすることを含む。このアクセスすることは、第1のソフトウェアエンティティに係るコードにアクセスすることをも含み、これにより第1のソフトウェアエンティティは第1のタスクを実行できる。コードセットは、ホスト装置上の1つ以上のソフトウェアエンティティが周辺装置に係るタスクを実行するためのコードを含む。第1のソフトウェアエンティティは、コードセットの一部分を使用して第1のタスクに係る情報を送信する。
【0007】
認証プロセスの一実施形態は、第1のソフトウェアエンティティが周辺装置へのアクセスを要求するときに、ホスト装置上の第1のソフトウェアエンティティへ1つ以上の認証オプションを送信することを含む。1つ以上の認証オプションは、周辺装置のためのホスト装置にインストールされたコードセットから第1のソフトウェアエンティティへ送信される。コードセットは、ホスト装置上の1つ以上のソフトウェアエンティティに係るコードを含む。コードセットは第1のソフトウェアエンティティから資格証明を受信する。資格証明は、1つ以上の認証オプションのいずれか1つに関連する。このプロセスはさらに、資格証明が有効である場合には、第1のソフトウェアエンティティに係る第1のコードに対してアクセスを提供することを含む。第1のコードはコードセットの一部分であり、周辺装置にアクセスする。
【0008】
一実施形態は、セキュア周辺装置と、周辺装置と通信するホスト装置とを含む。ホスト装置は、周辺装置へのアクセスを制御する1つ以上のプロセッサを含む。1つ以上のプロセッサはまた、周辺装置のためのホスト装置にインストールされたコードセットへのアクセスを制御することでコードセットを管理する。このコードセットは、周辺装置と、ホスト装置上の1つ以上のソフトウェアエンティティとの通信を可能にする。1つ以上のプロセッサは、ホスト装置上の第1のソフトウェアエンティティからの資格証明をベリファイし、資格証明が有効ならば、第1のソフトウェアエンティティに対してコードセットのコードのサブセットを提示する。このコードのサブセットは第1のソフトウェアエンティティに関連する。
【0009】
一実施形態は、暗号エンジンと、暗号エンジンと通信するホスト装置上の1つ以上のプロセッサとを含む。この暗号エンジンは、ホスト装置上の第1のソフトウェアエンティティからの資格証明をベリファイする。1つ以上のプロセッサはセキュア周辺装置に対するアクセスを傍受する。1つ以上のプロセッサはまた、第1のソフトウェアエンティティから資格証明を受信し、資格証明が有効ならば、第1のソフトウェアエンティティに係るコードを提示する。1つ以上のプロセッサがこのコードを実行すると、第1のソフトウェアエンティティは周辺装置にアクセスできる。
【0010】
一実施形態は、プロセッサ読み込み可能コードを有する1つ以上のプロセッサ読み込み可能媒体を含み、このプロセッサ読み込み可能コードが1つ以上のプロセッサに方法を実行させる。この方法は、周辺装置へのアクセスを第1のソフトウェアエンティティが要求するときに、ホスト装置上の第1のソフトウェアエンティティへ1つ以上の認証オプションを送信することを含む。この送信することは、周辺装置のためのホスト装置にインストールされたコードセットから第1のソフトウェアエンティティへ1つ以上の認証オプションを送信することをも含み、コードセットは、ホスト装置上の1つ以上のソフトウェアエンティティに係るコードを含む。コードセットは、第1のソフトウェアから資格証明を受信する。資格証明は、1つ以上の認証オプションのいずれか1つに関連する。方法はさらに、資格証明が有効である場合には、第1のソフトウェアエンティティに係る第1のコードに対するアクセスを提供することを含む。第1のコードはコードセットの一部分であり、周辺装置へのアクセスを可能にする。
【図面の簡単な説明】
【0011】
【図1】セキュア周辺装置のSDKがインストールされる前のホスト装置のブロック図である。
【図2】セキュア周辺装置のSDKを構成する1プロセスを説明するフローチャートである。
【図3】セキュア周辺装置用SDKの一例を示す。
【図4】ホスト装置にセキュア周辺装置をロードする1プロセスを説明するフローチャートである。
【図5】セキュア周辺装置のSDKがインストールされた後のホスト装置の一実施形態を示すブロック図である。
【図6】セキュアメモリ装置のコードがインストールされる前のホスト装置のコンポーネントの一実施形態を示すブロック図である。
【図7】ホスト装置およびセキュアメモリ装置のコンポーネントの一実施形態を示すブロック図である。
【図8】メモリ装置SDKの一実施形態のブロック図である。
【図9】セキュアメモリ装置の一実施形態を示すブロック図である。
【図10】セキュアメモリ装置用ファームウェアモジュールの一実施形態を示すブロック図である。
【図11】セキュアメモリ装置内のパーティションの一例を示す。
【図12】メモリ装置用SDKに含まれるアプリケーションAPIの一例である。
【図13】セキュア周辺装置にアクセスする1プロセスを説明するフローチャートである。
【図14】ホスト装置上でソフトウェアエンティティを登録するプロセスの一例を説明するフローチャートである。
【図15A】SDKで実行できる認証方式のフローチャートである。
【図15B】SDKで実行できる認証方式のフローチャートである。
【図15C】SDKで実行できる認証方式のフローチャートである。
【図16】登録プロセスの一例を示す。
【図17】ホスト装置上で首尾よく登録されたソフトウェアエンティティの一例を示す。
【図18】メモリ装置に保護対象コンテンツを格納するプロセスの一実施形態を説明するフローチャートである。
【図19】メモリ装置で保護対象コンテンツにアクセスするプロセスの一実施形態を説明するフローチャートである。
【図20】ソフトウェアエンティティの登録を解除するプロセスの一実施形態を説明するフローチャートである。
【発明を実施するための形態】
【0012】
開示された本願の技術は、ホスト装置でセキュリティ機能を実施することにより安全な周辺装置アクセスを提供する。周辺装置は、メモリ装置、プリンタ、キーボード等のホスト装置を介して操作される何らかの装置であることができる。ホスト装置上で周辺装置を操作するには、周辺装置用のソフトウェアをホスト装置にインストールしなければならない。このソフトウェアは、ダイナミックリンクライブラリ(DLL)やスタティックライブラリ(LIB)等のソフトウェア開発キット(SDK)のコードセットとしてホスト装置にインストールされる。ホスト装置では1つ以上のソフトウェアエンティティまたはアプリケーションを通じて周辺装置が操作される。周辺装置へのアクセスにあたっては多くの場合、アプリケーションの種類、アプリケーションの働き、アプリケーションの権限等に応じてホスト装置上のアプリケーションごとに異なるAPIが必要となる。ユーザがアプリケーションを通じてホスト装置にタスク要求を送信しそのタスク要求に周辺装置に対するアクセスが含まれる場合には、周辺装置のSDKが当該アプリケーションを認証し、周辺装置にアクセスする権限が当該アプリケーションにあることを確認する。この認証に成功すると、SDKは当該アプリケーションに専用のAPIだけを提示する。当該アプリケーションによるアクセスが許可されていないAPIは提示されない。当該アプリケーションは提示されたAPIを使ってタスク要求を送信し、実行できる。こうすることで周辺装置のセキュリティを向上させ、他のアプリケーションによる不正なAPIアクセスを防止する。
【0013】
図1は、周辺装置用SDKのコードセットがインストールされる前のホスト装置255の一例を示す。ホスト装置255はアプリケーション105と、メモリ260と、ホストCPU165とを有する。ホスト装置255は、携帯電話、PC、デジカルカメラ、移動体メディアプレーヤ、個人用携帯情報端末(PDA)、移動体計算装置、非移動体計算装置等の電子装置であることができる。アプリケーション105は、カレンダ、ドキュメントビューア、メディアプレーヤ等のホスト装置上で利用される何らかのソフトウェアエンティティである。アプリケーション105は、アプリケーションの起動に用いるソフトウェアエンティティであってもよい。メモリ260は、ホスト装置255で必要とされる何らかのメモリである。ホストCPU165は、ホスト装置255の操作に使われる何らかのプロセッサである。
【0014】
図1に描かれたホスト装置255等のホスト装置を通じて周辺装置を操作するためにフトウェア開発者によってSDKソフトウェアが作成されると、SDKソフトウェアは、周辺装置にアクセスするホスト装置上のソフトウェアエンティティまたはアプリケーションごとに構成できる。ホスト装置上のソフトウェアエンティティは多くの場合、種々のニーズや嗜好性を持つ顧客によって所有されたり、もしくは作成されたりすることができる。夫々のソフトウェアエンティティ/アプリケーションに基づくか、あるいは認証プリファレンスや顧客アプリケーションの機能等の顧客のニーズや嗜好性に基づいてSDKを構成することができる。図2は、種々のアプリケーションおよび/または顧客のニーズならびに嗜好性に基づき、SDKコードセットを構成する1プロセスのフローチャートである。ステップ190では、SDKソフトウェア開発者がアプリケーションおよび/または顧客の要求に基づいて、アプリケーションおよび/または顧客ごとにSDKソフトウェアを開発する。例えば、顧客アプリケーションを通じて周辺装置にアクセスするSDKコードセットには通常、アプリケーションと周辺装置との仲介となるAPIが必要である。アプリケーションのAPIにアクセスするためのSDKソフトウェアは、顧客の嗜好性に応じて詳しく構成できる。例えば、周辺装置のアクセスに先立ちアプリケーション認証を義務づけるようにSDKを構成する。SDKは、アプリケーションごとにアクセスすべきAPIが決まるように構成される。ステップ195では、ステップ190で実行したアプリケーション/顧客ごとに特定のSDKソフトウェアの必要なAPIに基づいて周辺装置を操作するSDKソフトウェアを構成する。例えば、アプリケーション/顧客ごとに必要なセキュリティ機能のためのSDKソフトウェア修正を含む。周辺装置を操作するSDKソフトウェアが構成されると、SDKはステップ190でアプリケーションおよび/または顧客ごとに構成されたソフトウェアのすべて(認証に必要なセキュリティソフトウェア等)や、ステップ195でカスタマイズされたソフトウェアを含むホスト装置上で周辺装置を操作するためのその他のソフトウェアも使用して正常に機能するようになる。
【0015】
図3は、図2のプロセスに従い構成された周辺装置用SDK330コードセットの一例を示すものである。周辺装置用SDK330のコードはセキュリティレイヤ125、アプリケーション用API1〜3、装置ドライバ140等のサブセットを含む。このSDKコードセットはダイナミックリンクライブラリ(DLL)かスタティックライブラリ(LIB)であることができる。セキュリティレイヤ125は、周辺装置へアクセスを試みる異なるアプリケーションを認証するためのソフトウェアを含む。セキュリティレイヤ125は、図2のステップ195で構成されるSDKソフトウェアの一部であることができる。例えば、アプリケーション1用API262に追加の認証機能が必要なように、セキュリティレイヤ125を構成することができる。セキュリティレイヤ125については後ほど詳述する。それぞれのアプリケーションは、周辺装置と通信するにあたってアプリケーション1〜3用APIを使用しなければならない。図2のステップ190で説明したように、これらのAPIを、アプリケーションに対する顧客の嗜好性に基づいて構成することができる。例えば、アプリケーション1用API262は、図1のホスト装置255にあるアプリケーション105用にカスタマイズされたAPIであることができる。装置ドライバ140は、ホスト装置上で周辺装置を正常に作動させるためのソフトウェアである。
【0016】
図4は、図3に見られるSDKをホスト装置にインストールする1プロセスを説明するフローチャートである。図4のステップ170ではホスト装置へセキュア周辺装置を接続する。ホスト装置へセキュア周辺装置が接続されると、セキュア周辺装置を操作するためのSDKがホスト装置に読み込まれ、インストールされる(ステップ175)。このSDKをセキュア周辺装置用メモリに格納することができる。SDKは、ホスト装置上のホストCPUをプログラム実行し不正アクセスを阻止するようにセキュア周辺装置を操作するためのソフトウェアを含む。SDKコードセットがホスト装置に正常に読み込まれ、インストールされると、ホスト装置をセキュア周辺装置とともに操作できる(ステップ180)。
【0017】
実施形態によっては、ある特定のセキュア周辺装置がホスト装置に初めて接続されるときにだけステップ175が実行されることに留意するべきである。セキュア周辺装置が最初に接続されるときにホスト装置にSDKがインストールされると、セキュア周辺装置がホスト装置に再接続されるたびにSDKをインストールする必要はない。別の実施形態では、ホスト装置へセキュア周辺装置が接続されるたびにSDKの読み込みとインストールを行う。
【0018】
一実施形態において、ホスト装置にオペレーティングシステムがインストールされる前にセキュア周辺装置を操作するためのSDKがホスト装置に読み込まれ、プリインストールされる。この場合には、オペレーティングシステムを通じてSDKを起動もしくは選択して使用することができる。したがって、図4のプロセスの一部としてステップ175を実行する必要はない。別の実施形態では、ホスト装置のオペレーティングシステムがインストールされた後でセキュア周辺装置を操作するためのSDKを読み込み、プリインストールする。この場合も、図4のプロセスの一部としてステップ175を実行する必要はない。
【0019】
図5は、図3のSDK330コードセットがインストールされた後のホスト装置255ならびにセキュア周辺装置145の一実施形態を示すものである。ホスト装置255は図1に見られる当初のコンポーネント(アプリケーション105、メモリ260、ホストCPU165)のほかに、図3に見られるSDK330のコンポーネント(セキュリティレイヤ125、アプリケーション1〜3用API、装置ドライバ140)を含む。ホスト装置255のユーザがアプリケーション105を通じてセキュア周辺装置145を含むタスクを要求すると、セキュリティレイヤ125はホストCPU165にアプリケーション105を認証させる。セキュリティレイヤ125によりアプリケーション105が首尾よく認証されると、セキュリティレイヤは、アプリケーション105専用のAPIサブグループを提示する。例えば、アプリケーション105がアプリケーション1なら、アプリケーション1用API262を提示する。アプリケーション105は、次にSDKコードセットの当該サブセットを使用し、装置ドライバ140を介してセキュア周辺装置145へタスク要求を送信することができる。アプリケーション105も、これらのAPIを使用して、ユーザ用のタスク要求を送信することができる。
周辺装置用SDKを通じて周辺装置に安全にアクセスするプロセスをより具体的に説明するため、これより周辺装置の一例としてセキュアメモリ装置を使用する。しかし、周辺装置はどんな周辺装置であってもよく、これ以降説明するメモリ装置の例に限定されないことに留意するべきである。
【0020】
図6は、セキュアメモリ装置用SDKがインストールされる前のホスト装置100のコンポーネントの一実施形態を示すものである。ホスト装置100のユーザは通常、アプリケーション105等のソフトウェアエンティティを通じてホスト装置100に格納されたコンテンツにアクセスする。ホスト装置100上のアプリケーションの例には、ホスト装置100に保存されるメディアプレーヤ、カレンダ、アドレス帳等が含まれる。あるアプリケーションは、ホスト装置100上の実行可能なコードと異なる位置に格納されたアプリケーション(メディアプレーヤ、カレンダ、アドレス帳等)の起動に使われるホスト装置上の実行可能なコードでもあることができる。例えば、あるアプリケーションは、ホスト装置100のメモリの異なった部分にあるホスト装置内またはホスト装置100へ接続される周辺装置に保存されたメディアプレーヤアプリケーションを起動するために使用することができる。アプリケーション105を使ってアクセスもしくは保存されるコンテンツは、例えばアプリケーション、メディア、スケジューリング情報、連絡情報等を含むことができる。
アプリケーション105はホスト装置100用オペレーティングシステム上のホスト記憶管理部110を使用し、ホスト装置100やリムーバブルメモリ装置等の周辺装置でコンテンツのアクセス、記憶を行う。ホスト記憶管理部110は、アクセス機能と記憶機能を制御するオペレーティングシステム上のソフトウェアコンポーネントであり、ホスト装置100内および周辺装置間のアクセスや記憶を含んでいる。詳細は以下に説明する。
【0021】
図6にはホスト記憶管理部110とホストファイルシステム130も示している。ホストファイルシステム130は、ホスト記憶管理部110によって管理される1コンポーネントである。ホスト記憶管理部110はホストCPU165を使用してホストファイルシステム130にアクセスする。ホストファイルシステム130はホスト装置100のメモリに格納され、ホスト装置100や周辺装置に記憶されたコンテンツを検索し、コンテンツを記憶するために使用される。ユーザがホスト装置100からコンテンツを要求すると、ホスト記憶管理部110はホストファイルシステム130を使ってそのコンテンツを検索する。ユーザがコンテンツの格納を要求すると、ホスト記憶管理部110はホストファイルシステム130を使ってそのコンテンツを適切な場所に格納する。
【0022】
また、ホスト装置100に格納されたコンテンツは保護のために暗号化できる。ホスト装置はホスト暗号エンジン185を含むことができ、これは乱数生成部と対称暗号法(AES、DES、3DES等)、暗号ハッシュ関数(SHA−1等)、非対象暗号法(PKI、鍵ペア生成等)もしくはその他のどのような暗号法をもサポートする暗号処理部とを有することができる。
【0023】
図7は、周辺装置用SDK330のコードセットがホスト装置100に正常に読み込まれ、インストールされた後で、セキュアメモリ装置145と連動するホスト装置100の一例を示すものである。セキュア周辺装置は、一実施形態において、リムーバブルストレージ装置である。コンテンツは、セキュアメモリ装置のセキュアパーティションに格納されるか、セキュアメモリ装置のパブリックパーティションに格納される。セキュアメモリ装置は、大容量ストレージ装置や不揮発性フラッシュメモリ装置等の何らかのメモリ装置であることができる。セキュアメモリ装置のセキュアパーティションに格納されるコンテンツは、不正アクセスから保護される。コンテンツが保護される場合には、セキュアメモリ装置のパブリックパーティションに格納されるコンテンツも不正アクセスから保護される。コンテンツが暗号化される場合には、コンテンツはセキュアメモリ装置の中で保護される。コンテンツが暗号化されず、パブリックパーティションに格納される場合には、セキュアメモリ装置の中で保護されない。ホスト装置は、コンテンツを暗号化、復号化するための権限等のコンテンツに係るしかるべき権限を持つ場合に、セキュアメモリ装置上でコンテンツにアクセスできたり、コンテンツを格納できたりする。
【0024】
図7では、物理インターフェイス142によってホスト装置100がセキュアメモリ装置145へ物理的に接続されている。アプリケーション105と、ホストCPU165と、ホスト装置暗号エンジン185と、ホスト記憶管理部110と、ホストファイルシステム130は、図6に示されるホスト装置100上のソフトウェアコンポーネントである。周辺装置用SDK330はホスト装置100にインストールされ、ホスト装置100によりセキュア周辺装置145を操作するために使われるコードセットである。周辺装置用SDK330は、セキュアメモリ装置145のコンテンツのアクセスや格納を処理するにあたって、セキュア周辺装置用API120と、周辺装置用SDKセキュリティレイヤ125と、ホストファイルシステム130と、登録表285と、SDK暗号ライブラリ168と、セキュアファイルシステム135とを使用する。セキュア周辺装置用API120と、周辺装置用SDKセキュリティレイヤ125と、登録表285と、SDK暗号ライブラリ168と、セキュアファイルシステム135と、装置ドライバ140は、図4のステップ175に記載されたように、セキュアメモリ装置145のためのSDKコードセットからホスト装置に読み込まれ、インストールされるソフトウェアコンポーネントである。オープンチャネル150とセキュアチャネル155は、ホスト装置100とセキュアメモリ装置145との間でコンテンツを転送するために使われるデータバスである。
【0025】
セキュアメモリ装置145は、セキュアメモリ装置145用にホスト装置100にインストールされたソフトウェアを使用してコンテンツのアクセスと格納を制御する。ソフトウェアには、図4のステップ175に記載されたライブラリのほかに、ホスト装置にプリインストールされるライブラリが含まれる。ホスト装置に読み込まれ、インストールされるSDKライブラリは、ダイナミックリンクライブラリ(DLL)かスタティックライブラリ(LIB)であることができ、ホスト装置上のオペレーティングシステムに統合することができる。SDKコードセットはセキュアメモリ装置145のセキュア操作のためにホスト記憶管理部110へ至るフックを提供する。例えば、ホストファイルシステム130をコールするコールチェーンに周辺装置用SDKコードのサブセットを挿入することができ、ホストCPU165によりコンテンツのアクセス方法や格納方法を制御することができる。図7の周辺装置用SDKセキュリティレイヤ125と、セキュア周辺装置用API120と、セキュアファイルシステム135と、登録表285と、SDK暗号ライブラリ168と、装置ドライバ140は、セキュア周辺装置用SDKコードセットを通じてホスト装置に提供されるコードのサブセットである。これらのサブセットは、ホスト装置100にインストールされた装置ドライバ140を使用して提供される。
【0026】
図7に示すように、ユーザは、ホスト装置上のアプリケーション105等のソフトウェアエンティティを通じてセキュアメモリ装置145に格納されたコンテンツにアクセスできる。セキュア周辺装置145に格納された保護されたコンテンツについては、後ほど詳述するように、コンテンツへのアクセスに先立ちアプリケーション105を認証する必要がある。
アプリケーション105はホスト装置用オペレーティングシステム上のホスト記憶管理部110を使用してセキュアメモリ装置145のコンテンツにアクセスし、コンテンツを格納する。ホスト記憶管理部110はアクセス機能と記憶機能とを制御する。これは、ホスト装置内でのアクセスや記憶と、セキュアメモリ装置145内でのアクセスや記憶を含む。
【0027】
図6に示されているように、ホスト記憶管理部110は通常、ホスト装置用オペレーティングシステム上のホストファイルシステム130を使用してホスト装置や周辺装置のアクセス機能と記憶機能を制御する。ホストファイルシステム130は、FAT12、FAT16、FAT32、NTFS等の通常のファイルシステムであることができる。しかし、セキュアメモリ装置145の場合、セキュアメモリ装置145の周辺装置用SDK330は、周辺装置用SDKセキュリティレイヤ125を使用してホスト装置上でのアクセス機能と記憶機能を制御するときに、セキュアメモリ装置145用のセキュアファイルシステム135を使用する。セキュアファイルシステム135へのアクセスをアプリケーション105を認証することで制御し、認証に成功した場合には、アプリケーション105専用のAPIに限りアクセスを許可する。これらのAPIがセキュアファイルシステム135の正しいインターフェイスとなる。セキュアファイルシステム135はセキュアメモリ装置145のためにホスト装置100にインストールされ、セキュアメモリ装置145に格納されるコンテンツのためのファイルシステムである。セキュアファイルシステム135はFAT12、FAT16、FAT32、NTFS等の通常のファイルシステムであることができる。
【0028】
周辺装置用SDKセキュリティレイヤ125のためのソフトウェアは、図2のステップ175で読み込まれ、インストールされるSDKの一部として読み込まれ、インストールされる。この周辺装置用SDKセキュリティレイヤ125は、ホストCPU165にアプリケーション105を認証させる。アプリケーション105が首尾よく認証されると、アプリケーション105は登録表285に登録される。周辺装置用SDKセキュリティレイヤ125はまた、アプリケーション105にアプリケーションハンドラを提供する。このアプリケーションハンドラは、アプリケーション105がアクセスできるAPIがどれなのかを指示する。周辺装置用SDKセキュリティレイヤ125によって実行される認証および登録プロセスの詳細は後述する。
【0029】
ユーザがアプリケーション105を通じてコンテンツへのアクセスを要求すると、周辺装置用SDKセキュリティレイヤ125は認証に成功した後で、セキュア周辺装置145のコンテンツにアクセスするにあたって必要なAPI、例えばセキュア周辺装置用API120を提供する。アプリケーション105はこのAPIを使用し、コンテンツのパーミッションにアクセスすることによりセキュア周辺装置145に格納されたコンテンツを受け取ることができる。コンテンツが保護される場合はコンテンツとともにヘッダが格納される。コンテンツを暗号化、復号化するためのコンテンツ暗号鍵(CEK)に関するドメイン情報や、格納されたコンテンツの種別を指示するコンテンツメタデータ等、このヘッダにはコンテンツに関する情報が入る。
【0030】
周辺装置用SDK330の中にあるセキュア周辺装置用API(アプリケーションプログラムインターフェイス)120は、コンテンツのアクセスや格納にあたってセキュア周辺装置145をアプリケーション105に連係させる。このセキュア周辺装置用API120はSDKの一部としてインストールされ、アプリケーション105が首尾よく認証される場合にはアプリケーション105によってコールされる。セキュア周辺装置用API120は、周辺装置用SDKセキュリティレイヤ125とセキュアファイルシステム135との橋渡しとなる。
【0031】
セキュアファイルシステム135を使ってコンテンツの位置が特定されると、ホスト装置上の装置ドライバ140を使用し、セキュアメモリ装置145のしかるべき位置でコンテンツにアクセスもしくは格納できる。これは、ホスト装置100をセキュアメモリ装置145に物理的に接続する物理インターフェイス142を通じて行われる。コンテンツは、セキュアチャネル155またはオープンチャネル150を使用して、アクセスされたり、格納されたりすることができる。セキュア周辺装置145とホスト装置との間でコンテンツを転送するときにセキュアチャネル155を使用するか、それともオープンチャネル150を使用するかは、周辺装置用SDK330によって決定される。
【0032】
ユーザがアプリケーション105を通じて保護の対象とならないコンテンツの格納を要求すると、周辺装置用SDK330はホストファイルシステム130を使用してコンテンツを格納する。セキュア周辺装置145の中で保護するべきコンテンツの格納をユーザが要求すると、周辺装置用SDK330はセキュアファイルシステム135を使用してコンテンツを格納する。
周辺装置用SDK330の中にあるセキュア周辺装置用API(アプリケーションプログラムインターフェイス)120は、保護対象コンテンツがアクセスされるかまたは格納される場合に、セキュア周辺装置145をアプリケーション105に連係させる。このセキュア周辺装置用API120はSDKの一部としてインストールされ、アプリケーション105が首尾よく認証される場合にはアプリケーション105によってコールされる。セキュア周辺装置用API120は、周辺装置用SDKセキュリティレイヤ125とセキュアファイルシステム135との橋渡しとなる。
【0033】
ホストファイルシステム130またはセキュアファイルシステム135のいずれかを使用してコンテンツの位置が特定され、ファイルされると、ホスト装置上の装置ドライバ140を使用して、適切な位置のセキュアメモリ装置145上でコンテンツをアクセスしたり、格納したりすることができる。これは、ホスト装置100をセキュアメモリ装置145に物理的に接続する物理インターフェイス142を通じて行われる。セキュアチャネル155またはオープンチャネル150を使用して、コンテンツをアクセスしたり、格納したりすることができる。周辺装置用SDKセキュリティレイヤ125が、セキュア周辺装置145とホスト装置との間でコンテンツを転送するときにセキュアチャネル155を使用するか、それともオープンチャネル150を使用するかを決定する。
セッション鍵とは、ホスト装置とセキュアメモリ装置との間でコンテンツが転送される前にコンテンツを暗号化するのに使用する暗号鍵である。セキュアチャネルを使ってコンテンツを転送する必要がなければ、コンテンツに割り振られるセッション鍵はなく、あるいはコンテンツに割り振られたセッション鍵で暗号化が不要であることを指示することができる。
【0034】
コンテンツにセッション鍵が割り振られ、セキュアチャネル155を使ったコンテンツ転送が指示される場合には、セキュアチャネル155による転送に先立ちセッション鍵を使ってコンテンツを暗号化する。暗号化されたコンテンツが転送されると、コンテンツは同じセッション鍵を使って復号化される。ホスト装置100ではSDK暗号ライブラリ168を使ってコンテンツの暗号化または復号化が行われる。SDK暗号ライブラリ168には、乱数生成部と対称暗号法(AES、DES、3DES等)、暗号ハッシュ関数(SHA−1等)、非対象暗号法(PKI、鍵ペア生成等)もしくはどのような他の暗号法にも対応する暗号機能が含まれる。セキュア周辺装置145は、図11で詳述するようにコンテンツ転送前後にセキュアメモリ装置145で暗号化を行うための独自の暗号エンジンを有する。オープンチャネル150を使用したコンテンツ転送をセッション鍵が指示する場合には、コンテンツは暗号化されずに転送される。
周辺装置用SDKがインストールされていないホスト装置は、パブリックパーティションに格納されたコンテンツにアクセスできる。ホスト装置がコンテンツにアクセスできてもコンテンツに保護がかかっているなら、暗号化されたコンテンツを正常に読み取ることはできない。ホスト装置はセキュアパーティションに格納されたコンテンツにアクセスできない。
【0035】
図8は、図7に示されているように、周辺装置がセキュアメモリ装置である場合に、ホスト装置100にインストールされる周辺装置用SDK330のソフトウェアの一例を示すものである。前述したように、周辺装置はメモリ装置の例に限定されない。周辺装置用SDK330はホスト装置100にインストールされるライブラリであり、周辺装置用API260、周辺装置用SDKセキュリティレイヤ125、装置ドライバ140、セキュアファイルシステム135、SDK暗号ライブラリ168、登録表285等の、ホスト装置100上でセキュアメモリ装置145を操作するためのソフトウェアを含む。しかし、周辺装置用SDK330はこのソフトウェアだけに限定されない。
【0036】
アプリケーション用API260は、図7のアプリケーション105等のアプリケーションによって使用されるAPIである。これらのAPIは認証用のAPIのほかに、図7のセキュア周辺装置用API120等のアプリケーションが首尾よく認証された後でセキュアメモリ装置145上のコンテンツにアクセスするためにアプリケーションをセキュアファイルシステム135に連係させるAPIを含む。アプリケーション用API260は特定のアプリケーションに専用のAPIを含むことができる。例えば、ある1つのアプリケーションによって使われるAPIが別のアプリケーションで使用できないことがあり得る。周辺装置用SDKセキュリティレイヤ125により首尾よく認証されたアプリケーションは、セキュア周辺装置用API120を通じてセキュアメモリ装置145にある保護対象コンテンツにアクセスできる。セキュア周辺装置用API120については後ほど図12に関連して詳述する。
【0037】
図7に見られる周辺装置用SDKセキュリティレイヤ125はホスト装置にインストールされ、ホスト記憶管理部110に至るフックを提供し、セキュアメモリ装置145におけるコンテンツのアクセスや格納をホストCPU165に制御させる。周辺装置用SDKセキュリティレイヤ125のコードがホスト装置100上でのホストファイル操作を「乗っ取る」ことで、セキュア周辺装置145上でのコンテンツアクセスに先立ちアプリケーションを認証できるようになる。
図7に示す装置ドライバ140のソフトウェアを、セキュアメモリ装置145がホスト装置100へ接続された後でホスト装置に読み込み、インストールでき(図4のステップ175)、または、ホスト装置にオペレーティングシステムをインストールする前か後でホスト装置100のオペレーティングシステム上にプリインストールできる。
セキュアファイルシステム135は、図7に示されたセキュアメモリ装置145でコンテンツにアクセスや格納するためのファイリングデータを含むファイルシステムである。 SDK暗号ライブラリ168は、セキュアチャネル155向けコンテンツを暗号化し、復号化するための暗号法を含むライブラリである。AES、DES、3DES、SHA−1、PKI、鍵ペア生成等の暗号法は公知の方式である。SDK暗号ライブラリ168は、セッション鍵等、コンテンツのパーミッションに基づきコンテンツを暗号化し、復号化する。
【0038】
登録表285は、周辺装置用SDKセキュリティレイヤ125がアプリケーションの認証状況や関係情報を管理、保守するために使用する表である。この表には認証アルゴリズム、アプリケーションID、登録時間、失効時間、登録状況等の情報が入る。登録表285の詳細については後述する。
セキュアメモリ装置の例を継続し、図7に示すセキュア周辺装置145の一実施形態を図9に示す。セキュア周辺装置またはメモリ装置145はファームウェアモジュール210と、CPU220と、周辺装置暗号エンジン160と、システムパーティション400とを含む。システムパーティション400にはパブリックパーティション240とセキュアパーティション250を含む。ファームウェアモジュール210はCPU220を使用し、システムパーティション400のパブリックパーティション240かセキュアパーティション250でコンテンツのアクセスや格納を行う。メモリ装置暗号エンジン160は、セキュアメモリ装置145の中でアクセスもしくは格納される保護対象コンテンツを暗号化し、復号化するために使用される。
【0039】
ファームウェアモジュール210はセキュアメモリ装置145のセキュアパーティション250とパブリックパーティション240でコンテンツのアクセスと格納を制御するハードウェアとソフトウェアを含む。ファームウェアモジュールはアクセス機能と格納機能を実行するようにCPU260をプログラムする。例えば、メモリのどの部分でコンテンツにアクセスもしくは格納するかを判断し、またはコンテンツが保護されているか否かを判断する。ファームウェアモジュール210の詳細については図10に関する説明の中で説明する。
パブリックパーティション240はユーザから見え、ホスト装置100により検出できるセキュアメモリ装置145のメモリパーティションである。セキュアメモリ装置145は1つ以上のパブリックパーティションを有する。パブリックパーティション240はユーザやホスト装置100に開放されるパブリックコンテンツを含むことができる。パブリックパーティション240は、コンテンツ暗号鍵(CEK)を使って暗号化される保護対象コンテンツも含むことができる。コンテンツに関連した情報を含むコンテンツヘッダに格納されたドメイン情報を使ってCEKを生成することができる。パブリックコンテンツを暗号化せずに格納することもできる。
【0040】
セキュアパーティション250はユーザから見えず、ホスト装置により検出されない、セキュアメモリ装置145の隠れメモリパーティションである。セキュアメモリ装置145は1つ以上のセキュアパーティションを有することができる。セキュアパーティション250は、ユーザやホスト装置100に開放されない保護対象コンテンツを含むことができる。保護対象コンテンツをCEKを使って暗号化することができる。セキュアパーティション250に格納されたコンテンツはコンテンツにアクセスするための適切なパーミッションを有する認証済みアプリケーションによりアクセスできる。CEKに関する情報やコンテンツに関連するパーミッションは、コンテンツ関連の情報が入るコンテンツヘッダに格納される。一実施形態では、システムパーティション400のパブリックパーティション240とセキュアパーティション250は、1つのコントローラと1つ以上のフラッシュメモリアレイを含むフラッシュメモリ装置に格納される。
【0041】
セキュアパーティション250はユーザやホスト装置によって検出されない隠れパーティションであるため、セキュアパーティション250は、ホスト装置100でセキュアメモリ装置145を操作するためのソフトウェアを、権限オブジェクトやアプリケーション資格証明等とともに含むことができる。
周辺装置暗号エンジン160は、セキュアメモリ装置145の中でCEKやセッション鍵を使ってコンテンツを暗号化し、復号化するために使用される。メモリ装置暗号エンジン160は、乱数生成部と対称暗号法(AES、DES、3DES等)、暗号ハッシュ関数(SHA−1等)、非対象暗号法(PKI、鍵ペア生成等)もしくはその他のどのような暗号法をもサポートし得る暗号処理部とを含む。
【0042】
図10は、ファームウェアモジュール210の一実施形態の詳細を示すものである。ファームウェアモジュール210は周辺装置インターフェイスモジュール144と、フラッシュメモリ管理部310と、保護対象コンテンツアクセス管理部320と、暗号エンジンライブラリ235と、DRM(デジタル著作権管理)モジュール315とを含む。周辺装置インターフェイスモジュール144は、ホスト装置の物理インターフェイス142を介してセキュアメモリ装置145をホスト装置100に連係させるためのハードウェアおよびソフトウェアを含む。周辺装置のインターフェイスモジュール144のハードウェアコンポーネントは、ユニバーサルシリアルバス(USB)、セキュアデジタル(SD)インターフェイス、コンパクトフラッシュ(CF)インターフェイス等のあらゆるインターフェイスのためのコンポーネントを含むことができる。フラッシュメモリ管理部310は、CPU220がパブリックパーティション240で保護対象外コンテンツのアクセスや格納を行ったり、DRMモジュール315を使用してパーミッションに基づいてコンテンツのアクセスや格納を行ったりするためのソフトウェアを含む。保護対象コンテンツアクセス管理部320は、CPU220がパーミッションを用いて保護対象コンテンツのアクセスや格納を行ったり、DRMモジュール315を使用してパーミッションに基づいてコンテンツのアクセスや格納を行ったりするためのソフトウェアを含む。保護対象コンテンツアクセス管理部320は、セッション鍵かCEKを用いてコンテンツを暗号化するにあたって必要な情報が入っている暗号エンジンライブラリ235を使用することもできる。フラッシュメモリ管理部310と保護対象コンテンツアクセス管理部320はいずれも、ホスト装置上の装置ドライバ140を通じてコンテンツのアクセスや格納を行う。
【0043】
保護の必要がない場合は、フラッシュメモリ管理部310がCPU220を使用してセキュアメモリ装置145にある保護対象外コンテンツのアクセスならびに格納を制御する。保護対象外コンテンツを保存する要求をホスト装置100から装置ドライバ140を通じて受信すると、フラッシュメモリ管理部310はホストファイルシステム130に従って該当する位置にコンテンツを保存する。保護対象外コンテンツにアクセスする要求をホスト装置ファイルシステム130から装置ドライバ140を通じて受信すると、フラッシュメモリ管理部310は、ホストファイルシステム130を用いて該当する位置からコンテンツにアクセスする。フラッシュメモリ管理部310はまた、アプリケーション105がセキュアメモリ装置145にある保護対象コンテンツにアクセスを試みる場合に、保護対象コンテンツアクセス管理部320へのアクセスを提供する。
【0044】
保護が必要な場合は、保護対象コンテンツアクセス管理部320がCPU220を使用してセキュアメモリ装置145にある保護対象コンテンツのアクセスならびに格納を制御する。保護対象コンテンツアクセス管理部320は、保護対象コンテンツに係るパーミッションをDRMモジュール315に格納するか、または保護対象コンテンツに係るパーミッションをDRMモジュール315から取得する。保護対象コンテンツアクセス管理部320は、保護対象コンテンツのアクセスまたは格納にあたって図7に見られるセキュアファイルシステム135を使用する。例えば、保護対象コンテンツを保存する要求がホスト装置から装置ドライバ140を通じて受信され、セキュアチャネル155を通じてコンテンツを送信する場合には、周辺装置用SDKセキュリティレイヤ125がSDK暗号ライブラリ168を使って保護対象コンテンツを暗号化する。この暗号化にはコンテンツに割り振られたセッション鍵を使用する。次いで、暗号化されたコンテンツはセキュアチャネル155を通じてセキュアメモリ装置145へ送信され、セキュアメモリ装置145でセッション鍵と暗号エンジンライブラリ235にある適切な暗号法によりコンテンツを復号化する。次いで、復号化されたコンテンツは、周辺装置暗号エンジン160によってコンテンツ用のCEKを使用して暗号化される。CEKを使って暗号化されたコンテンツは、セキュアファイルシステム135に従い適切な位置に保存される。
【0045】
オープンチャネルを通じて保護対象コンテンツを送信する場合でも同様のコンテンツ転送法が実施されるが、セキュアチャネル155向けのセッション鍵の暗号化はない。保護対象コンテンツにアクセスする要求がホスト装置100から装置ドライバ140を通じて受信されると、保護対象コンテンツアクセス管理部320がセキュアファイルシステム135を用いて該当する位置からコンテンツにアクセスし、オープンチャネル150を通じてホスト装置100上のホスト記憶管理部110にコンテンツを提供する。保護対象コンテンツアクセス管理部320によって適切なパーミッションを確認すると、保護対象コンテンツアクセス管理部320は、フラッシュメモリ管理部310を通じてコンテンツのアクセスや格納を行う。
保護対象コンテンツアクセス管理部320はDRMモジュール315を使用して、著作権許可等のコンテンツに係るパーミッションに基づいてコンテンツへのアクセスを提供する。DRMモジュール315はOMA、DRM、MS DRM等の何らかのDRM技術をサポートすることができる。
【0046】
暗号エンジンライブラリ235には、セキュアメモリ装置145の中でCEKかセッション鍵を使ってコンテンツを暗号化するための暗号法が入っている。セキュアメモリ装置145でコンテンツが暗号化されるかもしくは復号化される場合には、保護対象コンテンツアクセス管理部320が暗号エンジンライブラリ235にある適切な暗号法にアクセスする。AES、DES、3DES、SHA−1、PKI、鍵ペア生成等、暗号法は何らかの既知方式であることができる。
【0047】
図11は、セキュアメモリ装置145のシステムパーティション400の一例を示すものである。このシステムパーティション400はセキュアメモリ装置145にある全メモリパーティションを含む。つまり、システムパーティション400は、図9に示すパブリックパーティション240とセキュアパーティション250で作成される。セキュアメモリ装置145はいくつかのパブリックパーティションまたはセキュアパーティションを有する。既に述べたように、パブリックパーティションは検出可能で、ユーザやホスト装置にアクセス可能に開放される。パブリックパーティションに格納された保護対象外コンテンツには認証なしでアクセスできる。しかし、パブリックパーティションに格納された保護対象コンテンツは、認証に成功した後でなければアクセスできない。セキュアパーティションは、ユーザやホスト装置にとって検出不能の隠しパーティションである。セキュアパーティションにあるコンテンツを開こうとするアプリケーションは、事前に認証を受けなければならない。
【0048】
セキュアメモリ装置145に保護対象コンテンツを保存する場合、保護対象コンテンツアクセス管理部320がコンテンツのパーミッションに従いコンテンツを整理する。次いで、フラッシュメモリ管理部310によってコンテンツが格納される。パブリックパーティションとセキュアパーティションは同じCEKを有する保護対象コンテンツを含むドメインまたは論理グループを有する。それぞれのドメインまたは論理グループには、コンテンツを復号化し、コンテンツを暗号化するためのCEKが1つずつある。1ドメインまたは1グループのコンテンツを開くパーミッションを持つアプリケーションは、同一ドメインまたはグループに格納された別のコンテンツも開くことができる。
【0049】
図11のパブリックパーティションP0 410には、ドメイン1とドメイン2という2つの論理グループがある。ドメイン1に格納されたすべてのコンテンツの暗号化と復号化には1つのCEKが使われる。ドメイン2に格納されたすべてのコンテンツの暗号化と復号化には別のCEKが使われる。これらのグループへのアクセスを試みるソフトウェアエンティティには、コンテンツの読み取りに先立ち認証が必要である。パブリックパーティションP0は開放され隠されていないため、グループ内の保護対象コンテンツは見ることができ、アクセスされる可能性もあるが、適切なCEKを使用して正常に復号化されない限り読み取ることはできない。つまり、グループ内のコンテンツが権限のないユーザによって壊される可能性があるが、コンテンツを読み取ることはできない。
【0050】
パブリックパーティションP0 410のファイルA440はグループの中に含まれていないため、割り振られたCEKは有していない。したがって、ファイルA440はどのユーザでもアクセスし、読み取ることができる。
セキュアパーティションP1 420はファイルEとファイルFを含む。ファイルEとファイルFはセキュアパーティションの中で保護される必要のあるファイルであることができる。例えば、ファイルEおよびファイルFは、SDKによって、コンテンツライセンスや内部管理データといったセキュア情報を格納するのに使用される。しかし、セキュアパーティションP1 420の内容はこのようなファイルだけに限定されない。セキュアパーティションP1 420はどんなセキュアファイルでも格納することができる。
セキュアパーティションP2 430のドメイン3 490にはファイルGとファイルHが両方ある。ドメイン3には、コンテンツを暗号化し復号化するためのCEKが割り振られている。例えば、あるアプリケーションがドメイン3のファイルGにアクセスを試みるときに、アプリケーションは事前に認証を受けなければならない。認証を受けると、アプリケーションはドメイン3のCEKを使ってファイルGにアクセスできるほか、ドメイン3のファイルHにもアクセスできる。
セキュアパーティションP3 450は空のパーティションであり、保護対象コンテンツの格納に使うことができる。
【0051】
図12は、周辺装置用SDK330のアプリケーション用API260の一例を示すものである。アプリケーション用API260は、標準およびセキュアストレージAPI340と、認証API350と、コンフィグレーションAPI360と、DRM API370を含むほか、ユーザがホスト装置100上でセキュアメモリ装置145を操作するにあたって必要となるカスタムAPI380を含む。種々のAPIのそれぞれは、アプリケーションやアプリケーションランチャ等、ソフトウェアエンティティに専用のものであることができる。一実施形態において、各アプリケーションのAPIがドメイン等の論理グループとして格納される。例えば、APP1用API262は、他のアプリケーション用APIとは別のグループに格納される。一実施形態において、それぞれのグループに1アプリケーションのAPIが1種類ずつ入る。例えば、APP1用のストレージAPIを1つのグループとみなすことができる。
【0052】
APP1用API262は、APIグループのうちのアプリケーション1専用のAPIサブグループを示す。SDKは、アプリケーション1が首尾よく認証された場合には、APP1用API262にアクセスできるように構成されている(図2、ステップ190参照)。APP1用API262は、一実施形態において、SDKコードセットのうちの1つ以上のアプリケーションによってコールされるサブセットである。別の実施形態では、アプリケーション1だけがAPP1用API262をコールする。APP1用API262はセキュアストレージAPIと、コンフィグレーションAPIと、DRM APIと、カスタムAPIとを含む。ただし、APP1用API262はこれらのAPIだけに限定されない。
【0053】
標準およびセキュアストレージAPI340は、アプリケーションまたはアプリケーションランチャ105が、セキュアメモリ装置145でコンテンツを取得し、格納するにあたって、あるいはセキュアセッションを確立するにあたって、もしくはセキュアメモリ装置145でのコンテンツのアクセスや格納をともなうその他の操作を実行するにあたって、必要なAPIが含まれる。例えば、標準/セキュアストレージAPI340は、アプリケーション105がアクセス要求のあるコンテンツのパス位置をホストファイルシステム130かセキュアファイルシステム135へ送るためのAPIであることができる。アプリケーション105は、パブリックコンテンツにアクセスするときには標準およびセキュアAPI340グループの標準APIをコールすることができる。アプリケーション1が周辺装置用SDKセキュリティレイヤ125によって認証された後では、図7に見られるセキュア周辺装置用API120等のAPP1用API262グループのセキュアAPIをコールすることができる。
【0054】
認証API350はアプリケーション105を認証するためのAPIであって、認証API350にアクセスするための認証プロセスの要求なしに全てのアプリケーションに開放されている。認証API350はアプリケーション105によってコールされる。アプリケーション105によって認証API350がコールされると、アプリケーション105は、認証API350を使用して周辺装置用SDKセキュリティレイヤ125へ資格証明を送信することができる。周辺装置用SDKセキュリティレイヤ125は、アプリケーション105が認証API350を使って送信した資格証明が有効であるか否かをベリファイする。この資格証明は、チャレンジ/レスポンス認証アルゴリズムに対する応答、PKI証明書、PIN、鍵、パスワード等のソフトウェアエンティティの認証に用いる資格証明のいずれのタイプでもあることができる。チャレンジ/レスポンス認証アルゴリズムの場合は、認証API350を使用してアプリケーション105へチャレンジを送ることができる。次いで、同じ認証API350を使用してアプリケーション105から周辺装置用SDKセキュリティレイヤ125へのチャレンジに対する応答を送信することができる。
【0055】
コンフィグレーションAPI360は、アプリケーション105がセキュアメモリ装置145を構成するかまたはセキュアメモリ装置145の構成情報を取得するためのAPIである。アプリケーション105がそのことを行うための適切な権限を持っている場合に限り行うことができる。例えば、セキュアメモリ装置145で使用済みのメモリ空間と空いているメモリ空間に関する情報を入手するか、またはアプリケーション105が首尾よく認証された後で新たなセキュアパーティションを作成するときには、アプリケーション105によってコンフィグレーションAPI360をコールすることができる。
コンテンツに係るパーミッションやデジタル著作権にアクセスするには、アプリケーション105がDRM API370をコールし、権限が有効である場合にはコンテンツにアクセスできる。権限の検証は、セキュアメモリ装置145のファームウェアモジュール210にあるDRMモジュール315で行われる。APP1用API262サブグループに見られるように、DRM API370は、一実施形態において、特定のアプリケーション105に専用のDRM APIであることができる。
カスタムAPI380は、ユーザがホスト装置100上でセキュアメモリ装置145を操作するにあたって必要とする付加的APIであることができる。APP1用API262サブグループに見られるように、カスタムAPI380は特定のアプリケーション105に専用のカスタムAPIとなることができる。
【0056】
図13のフローチャートは、ホスト装置に周辺装置用SDKが正常にインストールされた後でホスト装置をセキュア周辺装置とともに操作する一例を説明するものである(図4のステップ180)。より具体的に、図13は、ユーザがホスト装置上のアプリケーションを通じて送信するセキュア周辺装置がらみのタスク要求がどのように実行されるかを説明しているプロセスである。例えば、タスク要求はセキュア周辺装置でコンテンツをアクセスするかあるいは格納する要求であることができ、ファイル(音楽、アプリケーション等)をアクセス、格納したり、セキュア周辺装置関連の情報(空きメモリ容量等)にアクセスしたり、セキュアメモリ装置の構成内容を変更したり、DRM情報(デジタル著作権オブジェクト等)にアクセスする。ユーザはホスト装置上のアプリケーションを通じてタスクを要求することができる。以降の例では、セキュア周辺装置としてセキュアメモリ装置を使用する。しかし、セキュア周辺装置の用途や構成はこの例に限定されない点に留意するべきである。
【0057】
図13のステップ505ではユーザがホスト装置100上でアプリケーション105にタスク要求を送る。このタスク要求はアプリケーション105から周辺装置用SDKセキュリティレイヤ125にて受信される(ステップ505)。
ステップ515では周辺装置用SDKセキュリティレイヤ125がアプリケーション105の登録プロセスを実行する。登録プロセスとはアプリケーション105を認証し、認証に成功した場合には内部登録表285(図7に示す)にアプリケーション105を登録するプロセスである。登録に成功すると周辺装置用SDKがアプリケーション105に標識を送る。この標識は、登録されたアプリケーション105の専用APIが提示されることを伝える。周辺装置用SDKセキュリティレイヤ125はまた、アプリケーション105にアプリケーションハンドラを送る。このアプリケーションハンドラは追加的なセキュリティ措置として役立てられる。アプリケーション105は提示されたAPIを使って周辺装置145と通信するたびに、APIを通じて周辺装置にアプリケーションハンドラを送信しなければならない。登録プロセスの詳細については図14で説明する。
【0058】
ステップ515の登録プロセスに成功すると、アプリケーション105は、登録プロセスのときに提示された1つ以上のAPIを通じて周辺装置用SDK330へタスク要求を送信する(ステップ520)。タスク要求は、登録プロセスのときにアプリケーション105に付与されたアプリケーションハンドラと併せて送信しなければならない。
ステップ525では、周辺装置用SDK330が提示されたアプリケーション105専用APIサブグループを使ってタスク要求を実行する。図18では、セキュアメモリ装置で保護対象コンテンツを格納する場合に実行される当該ステップの一例を説明する。図19では、セキュアメモリ装置に格納された保護対象コンテンツにアクセスする場合に実行される当該ステップの一例を説明する。
ステップ525でタスク要求が完了すると、周辺装置用SDKセキュリティレイヤ125はステップ530で内部登録表285からアプリケーション105の登録を解除する。このステップがどのように実行されるかは図20に関連して詳しく説明する。
【0059】
図14のフローチャートは、保護対象コンテンツが係るタスクで実行される登録プロセス(図13のステップ515)の一例を示すものである。ユーザがアプリケーション105にタスク要求を送った後では、ステップ700でアプリケーション105が認証方式オプションのリストから認証方式を選択する。この認証方式オプションのリストは、周辺装置用SDKセキュリティレイヤ125から認証APIを通じてアプリケーション105に提供される。かかるリストを提供するAPIは、例えば次のとおりに定義できる。
void ListAuthenMethod(char*AppID,
char*AuthList)
【0060】
このListAuthenMethod APIは、周辺装置用SDKセキュリティレイヤ125にアプリケーション105のアプリケーションID(char*AppID)を提供する。アプリケーションIDは、アプリケーション105に割り振られる一意な識別子である。周辺装置用SDKセキュリティレイヤ125は、周辺装置SDKセキュリティレイヤ125によってサポートされる認証方式のリスト(char*AuthList)を返す。アプリケーション105は、周辺装置用SDKセキュリティレイヤ125から提供されるリストで使用する認証方式を選択する。アプリケーションには使用するべき認証方式がプログラムされている。
【0061】
アプリケーション105はステップ705で選択した認証方式に該当する資格証明を入手し、選択した認証方式を実行する。例えば、選択した認証方式がPKIに基づくものなら、アプリケーション105はそれ自身の資格証明としてPKI証明書を取得し、当該認証方式を実行する。選択した認証方式がチャレンジ/レスポンス認証方式なら、アプリケーション105は認証API350とともにメモリ装置用SDK330に格納されたチャレンジ/レスポンスAPIをコールすることによって認証方式を実行する。アプリケーション105はチャレンジ/レスポンスAPIを使って周辺装置用SDKセキュリティレイヤ125からチャレンジを受信する。このチャレンジは、ホスト装置暗号エンジン185かメモリ装置暗号エンジン160によって生成される乱数である。アプリケーション105はそれ自身の資格証明としてチャレンジに対する応答を計算する。種々の認証方式の詳細については、図15A〜15Cに関連して説明する。
ステップ710ではアプリケーション105が登録APIをコールし、周辺装置用SDKセキュリティレイヤ125へ登録情報を送信する。アプリケーションを登録するためのAPIは、例えば次のとおりに定義できる。
uchar RegisterApplication(char*AppID,
char*AuthMethod, uchar*credential,
uchar credentialLen)
【0062】
このRegisterApplication APIは、アプリケーション105がそれ自身のアプリケーションID(char*AppID)と、選択した認証方式(char*AuthMethod)と、資格証明(uchar*credential)と、ステップ705で取得した資格証明の長さ(uchar credentialLen)を周辺装置用SDKセキュリティレイヤ125へ送信可能にするものであってもよい。認証方式によって異なる資格証明の長さの違いに対応するには、資格証明の長さを提供しなければならない。
周辺装置用SDKセキュリティレイヤ125はステップ715で資格証明が有効か否かをチェックする。資格証明が有効でなければ、周辺装置用SDKセキュリティレイヤ125がアプリケーション105へエラーを返す(ステップ720)。
【0063】
資格証明が有効なら、ステップ722で周辺装置用SDKセキュリティレイヤ125がアプリケーション105のためにアプリケーションハンドラを生成する。このアプリケーションハンドラは、例えばHASH等の所定の暗号アルゴリズムを用いて生成される一意な乱数である。アプリケーションハンドラは、所定の暗号アルゴリズムに特定の値を入力することによって生成される。これらの特定の値は、アプリケーションID、アプリケーション105が登録された時間、アプリケーション105を登録しておける期間、登録状況等の、アプリケーション105および/またはアプリケーション105の登録情報に関連する値である。周辺装置用SDK APIにはアプリケーションハンドラのための入力パラメータがある。一実施形態では、デフォルトのアプリケーションハンドラが生成され、全てのアプリケーションに開放されたAPIに使用される。しかし、既に述べたように、認証API350は全てのアプリケーションに開放され、認証のためにこれらのAPIにアクセスする際にアプリケーションハンドラは必要ない。
【0064】
アプリケーションハンドラが生成されたら、周辺装置用SDKセキュリティレイヤ125が内部登録表285にアプリケーション105を登録する(ステップ725)。内部登録表285は周辺装置用SDKセキュリティレイヤ125によって管理される。内部登録表285は、認証されたアプリケーションとアプリケーションランチャの情報を含む。アプリケーションハンドラ、認証済みアプリケーション105が内部登録表285に登録され続ける期間を示すタイムアウト期間(登録時間+アプリケーションを登録しておける期間)、アプリケーション105からアクセスできるAPI等、周辺装置用SDKセキュリティレイヤ125は、首尾よく認証されたアプリケーションとアプリケーションランチャの情報を内部登録表285に記録する。内部登録表285は、認証されたアプリケーションとアプリケーションランチャの追跡に役立てられる。このため、認証済みのアプリケーションならびにアプリケーションランチャは、認証表に登録されている間は、タスク要求を受け取るたびに認証を繰り返さずにすむ。
【0065】
周辺装置用SDKセキュリティレイヤ125は、ステップ730で内部登録表285にアプリケーション105が首尾よく登録されたか否かをチェックする。アプリケーション105が内部登録表285に首尾よく登録されないと、周辺装置用SDKセキュリティレイヤ125がアプリケーション105にエラーを返す(ステップ735)。
アプリケーション105が内部登録表285に首尾よく登録されると、周辺装置用SDKセキュリティレイヤ125は、ステップ722で生成したアプリケーションハンドラを、認証APIを通じてアプリケーション105へ返す(ステップ738)。周辺装置用SDKセキュリティレイヤ125はまた、staus_OK等の登録に成功したことを伝える標識をアプリケーション105に返す(ステップ740)。staus_OK標識は、タスクの実行にあたって必要となるアプリケーション105専用APIサブグループが提示され使用できることをアプリケーション105に知らせる。
【0066】
周辺装置用SDKセキュリティレイヤ125は、ステップ745で、図12に見られるサブグループ262等の周辺装置用SDK330のAPIサブグループをアプリケーション105に提示する。このAPIサブグループによりアプリケーション105はセキュア周辺装置145と通信できるようになる。しかし、このコード部分へのアクセスは、アプリケーション105が認証後で有効なアプリケーションハンドラを提供する場合に限り許可される。このAPIサブグループにより、アプリケーション105はアプリケーション105とセキュア周辺装置145との間に適切なリンクを確立し、タスク要求を実行することができる。
【0067】
図15A〜15Cは、周辺装置用SDKセキュリティレイヤ125によってサポートされる各種認証方式を実行するプロセスの例を示すものである(図14のステップ710および715)。図15Aのフローチャートは、パスワード方式の認証を実行するプロセスの一例である。アプリケーション105には認証に使用するパスワードがプログラムされている。図15Aのステップ535では、アプリケーション105がプログラムされたパスワードにアクセスする。アプリケーション105は認証APIを通じて周辺装置用SDKセキュリティレイヤ125へパスワードを送信する。周辺装置用SDKセキュリティレイヤ125はパスワードが有効か否かをチェックし(図14のステップ715)、図14のプロセスを継続する。
【0068】
図15Bのフローチャートは、チャレンジ/レスポンス方式の認証を実行する一例である。ステップ545では、アプリケーション105が周辺装置用SDKセキュリティレイヤ125から認証APIを通じてチャレンジを受け取る。例えば、このAPIはvoid GetChallenge(char*AppID,uchar*challenge, uchar*challengeLen)の形をとることができる。GetChallenge APIにより、アプリケーション105はそれ自身のアプリケーションID(char*AppID)を周辺装置用SDKセキュリティレイヤ125に提供する。周辺装置用SDKセキュリティレイヤ125はチャレンジ(uchar*challenge)とチャレンジの長さ(uchar*challengeLen)をアプリケーション105へ返す。
【0069】
ステップ550では、アプリケーション105が受け取ったチャレンジを暗号関数に入力することによって応答を計算する。アプリケーション105には使用するべき暗号関数がプログラムされている。ステップ555では、アプリケーション105が計算した応答を周辺装置用SDKセキュリティレイヤ125へ送信する。周辺装置用SDKセキュリティレイヤ125も同じ暗号関数に同じチャレンジを使って応答を計算し(ステップ560)、計算した応答をアプリケーション105から受信した応答と比較する(ステップ565)。この比較ステップでは、資格証明(アプリケーション105からの応答)が有効であるか否かを周辺装置用SDKセキュリティレイヤ125がチェックする(図14のステップ715)。この資格証明に基づいて図14の登録プロセスを継続できる。
【0070】
図15Cのフローチャートは、アプリケーション105のPKI認証を実行する一例である。ステップ570ではアプリケーション105が周辺装置用SDKセキュリティレイヤ125へ証明を送信する。この証明は、資格証明の一部としてアプリケーション105とともに格納されている。アプリケーション105は認証APIを通じてこの証明を提供するようにプログラムされている。
【0071】
ステップ575では周辺装置用SDKセキュリティレイヤ125が証明をベリファイする。ステップ580では証明が有効なら、周辺装置用SDKセキュリティレイヤ125はアプリケーションによって送信(ステップ570)された証明から公開鍵を引き出し、これを用いて無作為に生成された数を暗号化する。この乱数はSDK暗号ライブラリ168を使って生成し、暗号化できる。次いで、周辺装置用SDKセキュリティレイヤ125からアプリケーション105へ暗号化された乱数が送信される(ステップ585)。
【0072】
ステップ590では、アプリケーション105が周辺装置用SDKセキュリティレイヤ125から受信した暗号化乱数を復号化する。この復号化には、周辺装置用SDKセキュリティレイヤ125で使用された公開鍵に対応する秘密鍵を使用する。正規のアプリケーションは適切な秘密鍵を所持しているから、暗号化された乱数を復号化できる。ステップ595では、アプリケーション105が復号化した乱数をベリファイのために周辺装置用SDKセキュリティレイヤ125へ送信する(図14のステップ715)。ここで図14のプロセスを継続できる。
【0073】
図16のブロック図は、図14の登録プロセスの一例である。アプリケーション1 107はまず、図14のステップ700で周辺装置用SDKセキュリティレイヤ125から提供されるリストで選択した認証方式を実行し(図14のステップ705)、周辺装置用SDK330の中にある周辺装置用SDKセキュリティレイヤ125へ登録情報を送信する(ステップ710)。周辺装置用SDKセキュリティレイヤ125は資格証明が有効と判断する場合に(ステップ715)、アプリケーション1のためのアプリケーションハンドラを生成し(ステップ722)、内部登録表285にアプリケーション1 107を登録し(ステップ725)、APP1用APIサブグループ262を提示する(ステップ745)。
【0074】
図17は、いくつかの認証済みアプリケーションがセキュアメモリ装置145へのアクセスを要求する場合のソフトウェア層の一例を描いたものである。図2のステップ190で説明したように、アクセスできるAPIは各アプリケーションにつきSDKがどのように構成されたかによって異なる。例えば、アプリケーション1 107は、周辺装置用SDKセキュリティレイヤ125により首尾よく認証されて、内部登録表285に登録された後で、アプリケーション1用APIサブグループ262にアクセスする。例えば、アプリケーション1 107はそのAPIをコールし、セキュアメモリ装置145で保護対象コンテンツの格納やアクセスを安全に実行できるほか、セキュアメモリ装置145を構成することができる。APP1用API262は、アプリケーション1がセキュアファイルシステム135と装置ドライバ140を通じて保護対象コンテンツに対して要求されたタスクを実行するためのインターフェイスとなる。アプリケーション1 107の場合は、APP1用の全APIにアクセスできるようにSDKが構成されている。
【0075】
アプリケーション2とアプリケーション3は、周辺装置用SDKセキュリティレイヤ125により首尾よく認証され、内部登録表285に登録された別のアプリケーションの例である。アプリケーション2はセキュアストレージAPIやDRM API等といったAPP2用APIサブグループを使用し、セキュアファイルシステム135と装置ドライバ140を通じて保護対象コンテンツのアクセスや格納を実行できるほか、SDKのコンフィグレーションAPIを使ってセキュアメモリ装置145を構成することもできる。しかし、アプリケーション2は、SDKの中にあるカスタムAPIにはアクセスできない。図2のステップ190で説明したように、アプリケーション2がアクセスできるAPIはSDKの構成に依拠する。同様に、アプリケーション3はAPP3用APIサブグループを使用し、セキュアファイルシステム135と装置ドライバ140を通じて保護対象コンテンツのアクセスや格納を実行できる。しかし、SDKは、図2のステップ190でコンフィグレーションAPIと、DRM APIと、カスタムAPIとにアプリケーション3がアクセスするようには構成されていないため、アプリケーション3はこれらのAPIにアクセスできない。
【0076】
周辺装置としてセキュアメモリ装置を使用する例を継続し、図18のフローチャートは、周辺装置用SDK330がセキュアメモリ装置145で保護対象コンテンツを格納するタスクを実行する一例を説明するものである(図13のステップ525)。図13の登録プロセスが完了し、提示された1つ以上のAPIを使ってタスク要求が送信されたら、ステップ900で周辺装置用SDK330は、セキュアメモリ装置145で保護対象コンテンツを格納する場所を特定するようにセキュアファイルシステム135に指示する。セキュアファイルシステム135の所望の格納位置を提供するため、アプリケーション105は、図14のステップ745で提示されたAPIサブグループのAPIの1つをコールすることができる。
【0077】
ステップ905では、周辺装置用SDK330が、セキュアチャネル155を確立するためのセッション鍵等の保護対象コンテンツの格納位置に係るパーミッションにアクセスする。ステップ910では、周辺装置用SDK330がステップ905でアクセスしたパーミッションをもとに保護対象コンテンツの転送にセキュアチャネルを使用するべきか否かを判断する。
セキュアチャネルを使用するべきでないと周辺装置用SDK330が判断すると、ホスト装置100上のホスト記憶管理部110からオープンチャネル150を通じてセキュアメモリ装置145へ保護対象コンテンツが転送される(ステップ915)。アプリケーション105は、図14のステップ745で提示されたAPIサブグループのAPIの1つをコールすることによってこのコンテンツを転送する。保護対象コンテンツアクセス管理部320は格納位置のCEKにアクセスし、このCEKと暗号エンジンライブラリ235とを使ってコンテンツを暗号化するように周辺装置暗号エンジン160に指示する。次いで、保護対象コンテンツアクセス管理部320が暗号化された保護対象コンテンツを該当する格納位置に格納する(ステップ925)。
【0078】
周辺装置用SDK330は、ステップ910でセキュアチャネル155を使用するべきと判断した場合には、アプリケーション105から提示されたAPIサブグループの1
APIを通じてコンテンツを受信し、セッション鍵と該当する暗号法を使ってホスト装置100内で保護対象コンテンツを暗号化するようにホスト装置暗号エンジン185に指示する(ステップ930)。ステップ935では、ホスト装置100上のホスト記憶管理部110からセキュアチャネル155を通じてセキュアメモリ装置145へ暗号化されたコンテンツが転送される。次いで、周辺装置暗号エンジン160が暗号エンジンライブラリ235を使ってセキュアメモリ装置145にて転送された保護対象コンテンツを復号化する(ステップ940)。
保護対象コンテンツアクセス管理部320は、ステップ920で保護対象コンテンツが格納される格納位置のCEKにアクセスし、このCEKと暗号エンジンライブラリ235を使ってコンテンツを暗号化するように周辺装置暗号エンジン160に指示する。次いで、保護対象コンテンツアクセス管理部320が暗号化された保護対象コンテンツを該当する格納位置に格納する(ステップ925)。
【0079】
図19のフローチャートは、周辺装置用SDKセキュリティレイヤ125がセキュアメモリ装置145に格納された保護対象コンテンツにアクセスするタスクを実行する一例を説明するものである(図13のステップ525)。図13の登録プロセスが完了し、提示された1つ以上のAPIを使ってタスク要求が送信されたら、ステップ800で周辺装置用SDKセキュリティレイヤ125は、セキュアメモリ装置145の該当する位置で要求された保護対象コンテンツを見つけるようにセキュアファイルシステム135に指示する。セキュアファイルシステム135の所望の格納位置を提供するため、アプリケーション105は、図14のステップ745で提示されたAPIサブグループのAPIの1つをコールすることができる。
【0080】
保護対象コンテンツアクセス管理部320は、CEKやセッション鍵等の保護対象コンテンツの位置に係るパーミッションにアクセスする(ステップ805)。次いで、保護対象コンテンツアクセス管理部320はセキュアメモリ装置145の当該位置から保護対象コンテンツにアクセスし(ステップ810)、CEKと暗号エンジンライブラリ235を使ってコンテンツを復号化するように周辺装置暗号エンジン160に指示する(ステップ815)。
【0081】
次いで、ステップ820では、保護対象コンテンツアクセス管理部320がホスト装置100上のホスト記憶管理部110へのコンテンツ転送にあたってセキュアチャネルを使用するべきか否かを判断する。保護対象コンテンツアクセス管理部320は、ステップ805でアクセスしたセッション鍵がオープンチャネル150を使った保護対象コンテンツ転送を指示する場合に、オープンチャネル150を通じてホスト装置100上のホスト記憶管理部110へコンテンツを転送する(ステップ825)。
【0082】
ステップ820で、保護対象コンテンツアクセス管理部320は、ホスト装置100上のホスト記憶管理部110への保護対象コンテンツの転送にあたってセキュアチャネル155を使用するべきことが判断された場合には、セキュアメモリ装置145でセッション鍵を使って保護対象コンテンツを暗号化するように周辺装置暗号エンジン160に指示する(ステップ830)。次いで、保護対象コンテンツアクセス管理部320は、セキュアチャネル155を通じてホスト装置100上のホスト記憶管理部110へ暗号化された保護対象コンテンツを転送する(ステップ835)。転送された保護対象コンテンツは、SDK暗号ライブラリ168により同じセッション鍵を使って復号化される(ステップ840)。
保護対象コンテンツが首尾よく転送され(ステップ825、ステップ835)、必要に応じ復号化されたら(ステップ840)、アプリケーション105は要求した保護対象コンテンツを受け取る(ステップ850)。アプリケーション105は、図14のステップ745で提示されたAPIサブグループの1 APIを使って要求した保護対象コンテンツを受け取る。
【0083】
図20のフローチャートは、周辺装置用SDKセキュリティレイヤ125で内部登録表285からアプリケーション105の登録を解除する一例を説明するものである(図13のステップ530)。周辺装置用SDKセキュリティレイヤ125は、ステップ945で、タスクが完了しているか否かをチェックする。周辺装置用SDKセキュリティレイヤ125はタスクが完了している場合には、登録表285からアプリケーション105に関連する情報を消去する(ステップ970)。次いで、周辺装置用SDKセキュリティレイヤ125は、内部登録表285からアプリケーション105の登録を解除する(ステップ975)。アプリケーション105の登録を解除するステップは、しかるべきAPIをコールすることにより、例えばuchar UnRegisterApplication(char*AppID)をコールすることにより、実行できる。このAPIは、内部登録表285から該当するアプリケーションIDを削除することによってアプリケーション105の登録を解除する。これで要求されたタスクを実行するプロセスは終了する(ステップ980)。
【0084】
タスクがまだ完了していなければ、タスク要求が実行される一方で(ステップ525)、周辺装置用SDKセキュリティレイヤ125は、内部登録表285のタイムアウト期間にわたってアプリケーション105が登録されているか否かをチェックする(ステップ950)。このタイムアウト期間が過ぎている場合は、周辺装置用SDKセキュリティレイヤ125がアプリケーション105に関連する情報を登録表285から消去する(ステップ955)。次いで、周辺装置用SDKセキュリティレイヤ125がアプリケーション105の再認証を要求する(ステップ960)。アプリケーション105の再認証にあたっては図14に類似する認証プロセスを使用できる。周辺装置用SDKセキュリティレイヤ125は再認証の成否を判断する(ステップ965)。再認証に成功した場合には、タスクの実行を継続する(ステップ525)。再認証に成功しなければ、周辺装置用SDKセキュリティレイヤ125はしかるべきAPIをコールすることにより、例えばuchar UnRegisterApplication(char*AppID)をコールすることにより、内部登録表285からアプリケーション105の登録を解除する(ステップ975)。このAPIは内部登録表285から該当するアプリケーションIDを削除することによってアプリケーション105の登録を解除する。これでタスクを実行するプロセスは終了する(ステップ980)。
周辺装置用SDKセキュリティレイヤ125は、ステップ950で、内部登録表285のタイムアウト期間が過ぎていないと判断した場合には、ステップ525で引き続きタスク要求を実行する。
【0085】
前述した種々実施形態の詳細な説明は、網羅的であることあるいは本発明を開示されたとおりの形態に限定することを意図するものではない。前述した教示に鑑みれば数多くの修正ならびに変形が可能である。説明した実施形態は、本発明の原理と実際的な応用を十分に説明し、当業者が様々な実施形態で意図された用途に応じ様々な修正を加えながら本発明を十分に役立てるために選ばれたものである。したがって、前述した説明は、添付の特許請求の範囲に記載された本発明の範囲を制限することを意図するものではない。

【特許請求の範囲】
【請求項1】
セキュア装置へのアクセスを提供する方法であって、
周辺装置に係るコードセットをホスト装置にインストールするステップであって、前記コードセットが前記ホスト装置上で前記周辺装置を操作するためのコードセットを含むステップと、
前記ホスト装置上で第1のソフトウェアエンティティを前記コードセットを使用して認証するステップと、
前記第1のソフトウェアエンティティが首尾よく認証された場合には、前記第1のソフトウェアエンティティに対して前記コードセットの一部分を提示するステップであって、前記提示するステップが、前記第1のソフトウェアエンティティが前記周辺装置と通信するためのコードを提示することを含むステップと、
を含む方法。
【請求項2】
請求項1記載の方法において、
前記コードセットは、装置ドライバコード、アプリケーションプログラミングインターフェイスコード、および認証コードを含み、
前記コードセットの一部分は、前記アプリケーションプログラミングインターフェイスコードおよび前記認証コードのコードの一部分を含む方法。
【請求項3】
請求項1記載の方法において、
前記コードセットにて前記第1のソフトウェアエンティティからタスク要求を受信するステップと、
前記コードセットの一部分を使用して前記タスク要求を実行するステップと、
をさらに含む方法。
【請求項4】
請求項1記載の方法において、
前記認証するステップは、
前記第1のソフトウェアエンティティから資格証明を受信することと、
前記コードセットによって実行される、前記資格証明をベリファイすることと、
を含む方法。
【請求項5】
請求項4記載の方法において、
前記第1のソフトウェアエンティティに対して1つ以上の認証オプションを提供するステップであって、前記提供するステップが前記コードセットによって実行されるステップと、
前記1つ以上の認証オプションのいずれか1つを指示する応答を前記第1のソフトウェアエンティティから受信するステップと、をさらに含み、
前記ベリファイすることは、前記応答に基づいて前記資格証明をベリファイすることを含む方法。
【請求項6】
請求項1記載の方法において、
前記第1のソフトウェアエンティティが首尾よく認証されない場合には、前記第1のソフトウェアエンティティへエラーを返すステップをさらに含む方法。
【請求項7】
請求項1記載の方法において、
前記第1のソフトウェアエンティティが首尾よく認証される場合には、暗号関数にて前記第1のソフトウェアエンティティに係る識別子を使用してソフトウェアエンティティハンドラを生成するステップをさらに含む方法。
【請求項8】
請求項7記載の方法において、
前記第1のソフトウェアエンティティへ前記ソフトウェアエンティティハンドラを送信するステップをさらに含み、前記ソフトウェアエンティティハンドラは、第1のコードへのアクセスを提供する方法。
【請求項9】
請求項7記載の方法において、
前記第1のソフトウェアエンティティが首尾よく認証される場合には、前記コードセットを使用して前記第1のソフトウェアエンティティを登録するステップをさらに含み、前記登録するステップが、認証済みソフトウェアエンティティの表に前記ソフトウェアエンティティハンドラを登録することを含む方法。
【請求項10】
請求項9記載の方法において、
前記コードセットの一部分が提示されることを伝える標識を送信するステップをさらに含み、前記送信するステップが、前記第1のソフトウェアエンティティが首尾よく登録される場合には、前記第1のソフトウェアエンティティへ前記標識を送信することを含む方法。
【請求項11】
請求項10記載の方法において、
前記第1のソフトウェアエンティティが登録されている間は前記周辺装置に係るタスクを実行することを前記第1のソフトウェアエンティティに許可するステップをさらに含み、前記許可するステップが、前記ソフトウェアエンティティハンドラを前記コードセットの一部分とともに使用して前記タスクを実行することを前記第1のソフトウェアエンティティに許可することを含む方法。
【請求項12】
請求項9記載の方法において、
前記登録するステップは、前記第1のソフトウェアエンティティに係るパーミッションを登録することを含み、前記パーミッションは、前記第1のソフトウェアエンティティがアクセスできる前記コードセットの1つ以上の部分を指示する方法。
【請求項13】
請求項9記載の方法において、
前記表にて指示される所定の期間にわたって前記第1のソフトウェアエンティティが前記表に登録されている場合には、前記第1のソフトウェアエンティティを登録解除するステップをさらに含む方法。
【請求項14】
請求項9記載の方法において、
前記第1のソフトウェアエンティティからタスク要求を受信するステップと、
前記コードセットの一部分を使用して前記タスク要求を実行するステップと、
前記タスク要求が実行された後で、前記コードセットを使用して前記表から前記第1のソフトウェアエンティティを登録解除するステップと、
をさらに含む方法。
【請求項15】
請求項1記載の方法において、
前記周辺装置は、フラッシュメモリ装置である方法。
【請求項16】
請求項1記載の方法において、
前記周辺装置の1グループにてコンテンツを格納する要求を受信するステップであって、前記受信するステップが、前記第1のソフトウェアエンティティから前記コードセットにて前記要求を受信することを含むステップと、
前記第1のソフトウェアエンティティが首尾よく認証される場合には、前記グループに係る暗号鍵にアクセスするステップと、
前記暗号鍵を使用して前記コンテンツを暗号化するステップと、
前記コードセットの一部分を使用して前記グループにて前記コンテンツを格納するステップと、
をさらに含む方法。
【請求項17】
請求項1記載の方法において、
前記周辺装置の1グループにてコンテンツにアクセスする要求を受信するステップであって、前記受信するステップが、前記第1のソフトウェアエンティティから前記コードセットにて前記要求を受信することを含むステップと、
前記第1のソフトウェアエンティティが首尾よく認証される場合には、前記グループに係る暗号鍵にアクセスするステップと、
前記暗号鍵を使用して前記コンテンツを復号化するステップと、
前記コードセットの一部分を使用して前記コンテンツにアクセスするステップと、
をさらに含む方法。
【請求項18】
装置へのアクセスを提供する方法であって、
ホスト装置上の第1のソフトウェアエンティティのユーザから周辺装置に係る第1のタスク要求を受信するステップと、
前記第1のソフトウェアエンティティから、前記周辺装置のための前記ホスト装置にインストールされたコードセットへ、資格証明を送信するステップと、
前記資格証明が有効である場合には、前記第1のソフトウェアエンティティに係る前記コードセットの一部分にアクセスするステップであって、前記アクセスするステップが、前記第1のソフトウェアエンティティが前記第1のタスクを実行するためのコードにアクセスすることを含み、前記コードセットは、前記ホスト装置上の1つ以上のソフトウェアエンティティが前記周辺装置に係るタスクを実行するためのコードを含むステップと、
前記コードセットの一部分を使用して前記第1のタスクに係る情報を送信するステップであって、前記情報を送信するステップが、前記第1のソフトウェアエンティティによって実行されるステップと、
を含む方法。
【請求項19】
請求項18記載の方法において、
認証方式の選択肢から1認証方式を選択するステップをさらに含み、
前記資格証明を送信するステップは前記認証方式に依拠し、前記選択するステップは前記第1のソフトウェアエンティティによって実行される方法。
【請求項20】
請求項18記載の方法において、
第2の資格証明は送信せず、前記コードセットの部分を使用して第2のタスクに係る情報を送信し、前記送信が前記第1のソフトウェアエンティティによって実行されるステップをさらに含む方法。
【請求項21】
セキュア装置へのアクセスを提供する方法であって、
ホスト装置上の第1のソフトウェアエンティティへ、前記第1のソフトウェアエンティティからメモリ装置にアクセスする要求に応えて、1つ以上の認証オプションを送信するステップであって、前記1つ以上の認証オプションは、前記メモリ装置のための前記ホスト装置にインストールされたコードセットから導出され、前記コードセットは、前記ホスト装置上の1つ以上のソフトウェアエンティティに係るコードを含むステップと、
前記1つ以上の認証オプションに関連する資格証明を、前記第1のソフトウェアエンティティから受信するステップと、
前記資格証明が有効である場合には、前記第1のソフトウェアエンティティに係る第1のコードに対するアクセスを提供するステップであって、前記第1のコードは、前記メモリ装置へのアクセスを可能にし、かつ前記コードセットの一部分であるステップと、
を含む方法。
【請求項22】
請求項21記載の方法において、
前記資格証明が有効である場合には、前記第1のソフトウェアエンティティの識別子を使用してソフトウェアエンティティハンドラを計算するステップと、
前記第1のソフトウェアエンティティへ前記ソフトウェアエンティティハンドラを送信するステップであって、前記ソフトウェアエンティティハンドラは、前記第1のコードにアクセスするために前記第1のソフトウェアエンティティによって使用されるステップと、
をさらに含む方法。
【請求項23】
請求項22記載の方法において、
前記資格証明が有効である場合には、認証済みソフトウェアエンティティの表に前記第1のソフトウェアエンティティを登録するステップであって、前記登録するステップが、前記表に前記ソフトウェアエンティティハンドラを登録することを含むステップと、
前記第1のソフトウェアエンティティが前記表に登録されている間は、前記メモリ装置に係る1つ以上のタスクを実行することを前記第1のソフトウェアエンティティに許可するステップであって、前記許可するステップが、前記ソフトウェアエンティティハンドラを前記第1のコードとともに使用して前記1つ以上のタスクを実行することを前記第1のソフトウェアエンティティに許可するステップと、
をさらに含む方法。
【請求項24】
請求項23記載の方法において、
前記1つ以上のタスクが完了するときに前記表から前記第1のソフトウェアエンティティを登録解除するステップをさらに含む方法。
【請求項25】
請求項23記載の方法において、
前記表にて指示される所定の期間にわたり前記ソフトウェアエンティティが前記表に登録された後で、前記表から前記第1のソフトウェアエンティティを登録解除するステップをさらに含む方法。
【請求項26】
セキュア装置にアクセスするシステムであって、
周辺装置と、
前記周辺装置と通信するホスト装置であって、前記ホスト装置が前記周辺装置に対するアクセスを制御するように適合された1つ以上のプロセッサを含み、前記1つ以上のプロセッサが前記周辺装置のための前記ホスト装置にインストールされたコードセットを処理するように適合され、前記コードセットは前記周辺装置と前記ホスト装置上の1つ以上のソフトウェアエンティティとの通信を可能にし、前記1つ以上のプロセッサが前記ホスト装置上の第1のソフトウェアエンティティからの資格証明をベリファイするように適合され、かつ前記資格証明が有効である場合には、前記第1のソフトウェアエンティティに対して前記コードセットのコードのサブセットを提示するように適合され、前記コードのサブセットは前記第1のソフトウェアエンティティに関連するホスト装置と、
を備えるシステム。
【請求項27】
請求項26記載のシステムにおいて、
前記1つ以上のプロセッサは、前記第1のソフトウェアエンティティからタスク要求を受信し、
前記1つ以上のプロセッサは、前記1つ以上のプロセッサに前記コードセットがプログラムされる場合には、前記タスクを実行するシステム。
【請求項28】
請求項26記載のシステムにおいて、
前記1つ以上のプロセッサは、前記第1のソフトウェアエンティティに1つ以上の認証オプションを提供し、
前記1つ以上のプロセッサは、前記1つ以上の認証オプションのいずれか1つを指示する応答を前記第1のソフトウェアエンティティから受信し、
前記1つ以上のプロセッサは、前記応答に基づいて前記資格証明をベリファイするシステム。
【請求項29】
請求項26記載のシステムにおいて、
前記1つ以上のプロセッサは、前記資格証明が有効でない場合には、前記第1のソフトウェアエンティティへエラーを返すシステム。
【請求項30】
請求項26記載のシステムにおいて、
前記1つ以上のプロセッサは、前記資格証明が有効である場合には、暗号関数にて前記第1のソフトウェアエンティティに係る識別子を使用してソフトウェアエンティティハンドラを生成するシステム。
【請求項31】
請求項30記載のシステムにおいて、
前記1つ以上のプロセッサは、前記第1のソフトウェアエンティティへ前記ソフトウェアエンティティハンドラを送信するシステム。
【請求項32】
請求項30記載のシステムにおいて、
前記1つ以上のプロセッサは、前記資格証明が有効である場合には、認証済みソフトウェアエンティティの表に前記第1のソフトウェアエンティティを登録し、
前記1つ以上のプロセッサは、前記資格証明が有効である場合には、前記表に前記ソフトウェアエンティティハンドラを登録するシステム。
【請求項33】
請求項32記載のシステムにおいて、
前記1つ以上のプロセッサは、前記ソフトウェアエンティティが首尾よく登録される場合には、前記第1のソフトウェアエンティティへ標識を送信し、前記標識は前記コードのサブセットが提示されることを指示するシステム。
【請求項34】
請求項33記載のシステムにおいて、
前記1つ以上のプロセッサは、前記1つ以上のプロセッサに前記コードのサブセットがプログラムされる場合には、前記第1のソフトウェアエンティティが前記表に登録されている間は、前記ソフトウェアエンティティハンドラを使用して前記周辺装置に係るタスクを実行することを前記第1のソフトウェアエンティティに許可するシステム。
【請求項35】
請求項32記載のシステムにおいて、
前記1つ以上のプロセッサは、前記第1のソフトウェアエンティティに係るパーミッションを前記表に登録し、前記パーミッションは、前記コードセットのうちの前記第1のソフトウェアエンティティがアクセスできる1つ以上のサブセットを指示するシステム。
【請求項36】
請求項32記載のシステムにおいて、
前記1つ以上のプロセッサは、前記表にて指示される所定の期間にわたって前記第1のソフトウェアエンティティが前記表に登録されている場合には、前記第1のソフトウェアエンティティを登録解除するシステム。
【請求項37】
請求項32記載のシステムにおいて、
前記1つ以上のプロセッサは、前記第1のソフトウェアエンティティからタスク要求を受信し、
前記1つ以上のプロセッサは、前記1つ以上のプロセッサに前記コードのサブセットがプログラムされる場合には、前記タスク要求を実行し、
前記1つ以上のプロセッサは、前記タスク要求が実行された後で、前記表から前記第1のソフトウェアエンティティを登録解除するシステム。
【請求項38】
請求項26記載のシステムにおいて、
前記周辺装置は、フラッシュメモリ装置であるシステム。
【請求項39】
請求項26記載のシステムにおいて、
前記1つ以上のプロセッサは、前記周辺装置の1グループにてコンテンツを格納する要求を受信し、前記要求が前記第1のソフトウェアエンティティから受信され、
前記1つ以上のプロセッサは、前記資格証明が有効である場合には、前記グループに係る暗号鍵にアクセスし、
前記周辺装置は、前記暗号鍵を使用して前記コンテンツを暗号化し、かつ前記グループにて前記コンテンツを格納する1つ以上の周辺装置プロセッサを含むシステム。
【請求項40】
請求項26記載のシステムにおいて、
前記1つ以上のプロセッサは、前記周辺装置の1グループにてコンテンツにアクセスする要求を受信し、前記要求が前記第1のソフトウェアエンティティから受信され、
前記1つ以上のプロセッサは、前記資格証明が有効である場合には、前記グループに係る暗号鍵にアクセスし、
前記周辺装置は、前記暗号鍵を使用して前記コンテンツを復号化する1つ以上の周辺装置プロセッサを含み、
前記1つ以上のプロセッサは、前記1つ以上のプロセッサに前記コードのサブセットがプログラムされる場合には、前記コンテンツにアクセスするシステム。
【請求項41】
セキュア装置にアクセスするシステムであって、
暗号エンジンと、
前記暗号エンジンと通信するホスト装置上の1つ以上のプロセッサであり、前記暗号エンジンは、前記ホスト装置上の第1のソフトウェアエンティティからの資格証明をベリファイし、前記1つ以上のプロセッサは、前記ホスト装置と通信するメモリ装置へのアクセスを傍受し、前記第1のソフトウェアエンティティから前記資格証明を受信し、前記資格証明が有効である場合には、前記第1のソフトウェアエンティティに係るコードを提示し、かつ前記1つ以上のプロセッサに前記コードがプログラムされた場合には、前記メモリ装置にアクセスすることを前記第1のソフトウェアエンティティに許可する1つ以上のプロセッサと、
を備えたシステム。
【請求項42】
請求項41記載のシステムにおいて、
前記1つ以上のプロセッサは、1つ以上の認証オプションを前記第1のソフトウェアエンティティに提供し、
前記1つ以上のプロセッサは、前記1つ以上の認証オプションの選択を前記第1のソフトウェアエンティティから受信し、
前記暗号エンジンは、前記選択に基づいて前記資格証明をベリファイするシステム。
【請求項43】
請求項41記載のシステムにおいて、
前記1つ以上のプロセッサは、前記資格証明が有効である場合には、認証済みソフトウェアエンティティの表に前記第1のソフトウェアエンティティを登録し、
前記1つ以上のプロセッサは、前記第1のソフトウェアエンティティが前記表に登録されている間は、前記第1のソフトウェアエンティティと前記メモリ装置との通信を許可するシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15A】
image rotate

【図15B】
image rotate

【図15C】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate


【公表番号】特表2011−523481(P2011−523481A)
【公表日】平成23年8月11日(2011.8.11)
【国際特許分類】
【出願番号】特願2011−510489(P2011−510489)
【出願日】平成21年4月30日(2009.4.30)
【国際出願番号】PCT/US2009/002637
【国際公開番号】WO2009/142689
【国際公開日】平成21年11月26日(2009.11.26)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.コンパクトフラッシュ
【出願人】(506197901)サンディスク コーポレイション (175)
【Fターム(参考)】