(57)【要約】  周辺装置のためのコードセットがホスト装置にインストールされる。コードセットは、ホスト装置から周辺装置へのアクセスを制御するために使用される。コードセットはまた、ホスト装置上のソフトウェアエンティティが周辺装置にアクセスするために使用する１つ以上のコードサブセットを含む。ホスト装置上のソフトウェアエンティティは、ホスト装置にインストールされたコードセットにより首尾よく認証されなければならない。ソフトウェアエンティティが首尾よく認証されると、ソフトウェアエンティティに専用の１つ以上のコードサブセットにアクセスできるようになる。ソフトウェアエンティティは１つ以上のコードサブセットを使って周辺装置にアクセスできる。
2011523481.tif 000002
【特許請求の範囲】
【請求項１】
セキュア装置へのアクセスを提供する方法であって、
周辺装置に係るコードセットをホスト装置にインストールするステップであって、前記コードセットが前記ホスト装置上で前記周辺装置を操作するためのコードセットを含むステップと、
前記ホスト装置上で第１のソフトウェアエンティティを前記コードセットを使用して認証するステップと、
前記第１のソフトウェアエンティティが首尾よく認証された場合には、前記第１のソフトウェアエンティティに対して前記コードセットの一部分を提示するステップであって、前記提示するステップが、前記第１のソフトウェアエンティティが前記周辺装置と通信するためのコードを提示することを含むステップと、
を含む方法。
【請求項２】
請求項１記載の方法において、
前記コードセットは、装置ドライバコード、アプリケーションプログラミングインターフェイスコード、および認証コードを含み、
前記コードセットの一部分は、前記アプリケーションプログラミングインターフェイスコードおよび前記認証コードのコードの一部分を含む方法。
【請求項３】
請求項１記載の方法において、
前記コードセットにて前記第１のソフトウェアエンティティからタスク要求を受信するステップと、
前記コードセットの一部分を使用して前記タスク要求を実行するステップと、
をさらに含む方法。
【請求項４】
請求項１記載の方法において、
前記認証するステップは、
前記第１のソフトウェアエンティティから資格証明を受信することと、
前記コードセットによって実行される、前記資格証明をベリファイすることと、
を含む方法。
【請求項５】
請求項４記載の方法において、
前記第１のソフトウェアエンティティに対して１つ以上の認証オプションを提供するステップであって、前記提供するステップが前記コードセットによって実行されるステップと、
前記１つ以上の認証オプションのいずれか１つを指示する応答を前記第１のソフトウェアエンティティから受信するステップと、をさらに含み、
前記ベリファイすることは、前記応答に基づいて前記資格証明をベリファイすることを含む方法。
【請求項６】
請求項１記載の方法において、
前記第１のソフトウェアエンティティが首尾よく認証されない場合には、前記第１のソフトウェアエンティティへエラーを返すステップをさらに含む方法。
【請求項７】
請求項１記載の方法において、
前記第１のソフトウェアエンティティが首尾よく認証される場合には、暗号関数にて前記第１のソフトウェアエンティティに係る識別子を使用してソフトウェアエンティティハンドラを生成するステップをさらに含む方法。
【請求項８】
請求項７記載の方法において、
前記第１のソフトウェアエンティティへ前記ソフトウェアエンティティハンドラを送信するステップをさらに含み、前記ソフトウェアエンティティハンドラは、第１のコードへのアクセスを提供する方法。
【請求項９】
請求項７記載の方法において、
前記第１のソフトウェアエンティティが首尾よく認証される場合には、前記コードセットを使用して前記第１のソフトウェアエンティティを登録するステップをさらに含み、前記登録するステップが、認証済みソフトウェアエンティティの表に前記ソフトウェアエンティティハンドラを登録することを含む方法。
【請求項１０】
請求項９記載の方法において、
前記コードセットの一部分が提示されることを伝える標識を送信するステップをさらに含み、前記送信するステップが、前記第１のソフトウェアエンティティが首尾よく登録される場合には、前記第１のソフトウェアエンティティへ前記標識を送信することを含む方法。
【請求項１１】
請求項１０記載の方法において、
前記第１のソフトウェアエンティティが登録されている間は前記周辺装置に係るタスクを実行することを前記第１のソフトウェアエンティティに許可するステップをさらに含み、前記許可するステップが、前記ソフトウェアエンティティハンドラを前記コードセットの一部分とともに使用して前記タスクを実行することを前記第１のソフトウェアエンティティに許可することを含む方法。
【請求項１２】
請求項９記載の方法において、
前記登録するステップは、前記第１のソフトウェアエンティティに係るパーミッションを登録することを含み、前記パーミッションは、前記第１のソフトウェアエンティティがアクセスできる前記コードセットの１つ以上の部分を指示する方法。
【請求項１３】
請求項９記載の方法において、
前記表にて指示される所定の期間にわたって前記第１のソフトウェアエンティティが前記表に登録されている場合には、前記第１のソフトウェアエンティティを登録解除するステップをさらに含む方法。
【請求項１４】
請求項９記載の方法において、
前記第１のソフトウェアエンティティからタスク要求を受信するステップと、
前記コードセットの一部分を使用して前記タスク要求を実行するステップと、
前記タスク要求が実行された後で、前記コードセットを使用して前記表から前記第１のソフトウェアエンティティを登録解除するステップと、
をさらに含む方法。
【請求項１５】
請求項１記載の方法において、
前記周辺装置は、フラッシュメモリ装置である方法。
【請求項１６】
請求項１記載の方法において、
前記周辺装置の１グループにてコンテンツを格納する要求を受信するステップであって、前記受信するステップが、前記第１のソフトウェアエンティティから前記コードセットにて前記要求を受信することを含むステップと、
前記第１のソフトウェアエンティティが首尾よく認証される場合には、前記グループに係る暗号鍵にアクセスするステップと、
前記暗号鍵を使用して前記コンテンツを暗号化するステップと、
前記コードセットの一部分を使用して前記グループにて前記コンテンツを格納するステップと、
をさらに含む方法。
【請求項１７】
請求項１記載の方法において、
前記周辺装置の１グループにてコンテンツにアクセスする要求を受信するステップであって、前記受信するステップが、前記第１のソフトウェアエンティティから前記コードセットにて前記要求を受信することを含むステップと、
前記第１のソフトウェアエンティティが首尾よく認証される場合には、前記グループに係る暗号鍵にアクセスするステップと、
前記暗号鍵を使用して前記コンテンツを復号化するステップと、
前記コードセットの一部分を使用して前記コンテンツにアクセスするステップと、
をさらに含む方法。
【請求項１８】
装置へのアクセスを提供する方法であって、
ホスト装置上の第１のソフトウェアエンティティのユーザから周辺装置に係る第１のタスク要求を受信するステップと、
前記第１のソフトウェアエンティティから、前記周辺装置のための前記ホスト装置にインストールされたコードセットへ、資格証明を送信するステップと、
前記資格証明が有効である場合には、前記第１のソフトウェアエンティティに係る前記コードセットの一部分にアクセスするステップであって、前記アクセスするステップが、前記第１のソフトウェアエンティティが前記第１のタスクを実行するためのコードにアクセスすることを含み、前記コードセットは、前記ホスト装置上の１つ以上のソフトウェアエンティティが前記周辺装置に係るタスクを実行するためのコードを含むステップと、
前記コードセットの一部分を使用して前記第１のタスクに係る情報を送信するステップであって、前記情報を送信するステップが、前記第１のソフトウェアエンティティによって実行されるステップと、
を含む方法。
【請求項１９】
請求項１８記載の方法において、
認証方式の選択肢から１認証方式を選択するステップをさらに含み、
前記資格証明を送信するステップは前記認証方式に依拠し、前記選択するステップは前記第１のソフトウェアエンティティによって実行される方法。
【請求項２０】
請求項１８記載の方法において、
第２の資格証明は送信せず、前記コードセットの部分を使用して第２のタスクに係る情報を送信し、前記送信が前記第１のソフトウェアエンティティによって実行されるステップをさらに含む方法。
【請求項２１】
セキュア装置へのアクセスを提供する方法であって、
ホスト装置上の第１のソフトウェアエンティティへ、前記第１のソフトウェアエンティティからメモリ装置にアクセスする要求に応えて、１つ以上の認証オプションを送信するステップであって、前記１つ以上の認証オプションは、前記メモリ装置のための前記ホスト装置にインストールされたコードセットから導出され、前記コードセットは、前記ホスト装置上の１つ以上のソフトウェアエンティティに係るコードを含むステップと、
前記１つ以上の認証オプションに関連する資格証明を、前記第１のソフトウェアエンティティから受信するステップと、
前記資格証明が有効である場合には、前記第１のソフトウェアエンティティに係る第１のコードに対するアクセスを提供するステップであって、前記第１のコードは、前記メモリ装置へのアクセスを可能にし、かつ前記コードセットの一部分であるステップと、
を含む方法。
【請求項２２】
請求項２１記載の方法において、
前記資格証明が有効である場合には、前記第１のソフトウェアエンティティの識別子を使用してソフトウェアエンティティハンドラを計算するステップと、
前記第１のソフトウェアエンティティへ前記ソフトウェアエンティティハンドラを送信するステップであって、前記ソフトウェアエンティティハンドラは、前記第１のコードにアクセスするために前記第１のソフトウェアエンティティによって使用されるステップと、
をさらに含む方法。
【請求項２３】
請求項２２記載の方法において、
前記資格証明が有効である場合には、認証済みソフトウェアエンティティの表に前記第１のソフトウェアエンティティを登録するステップであって、前記登録するステップが、前記表に前記ソフトウェアエンティティハンドラを登録することを含むステップと、
前記第１のソフトウェアエンティティが前記表に登録されている間は、前記メモリ装置に係る１つ以上のタスクを実行することを前記第１のソフトウェアエンティティに許可するステップであって、前記許可するステップが、前記ソフトウェアエンティティハンドラを前記第１のコードとともに使用して前記１つ以上のタスクを実行することを前記第１のソフトウェアエンティティに許可するステップと、
をさらに含む方法。
【請求項２４】
請求項２３記載の方法において、
前記１つ以上のタスクが完了するときに前記表から前記第１のソフトウェアエンティティを登録解除するステップをさらに含む方法。
【請求項２５】
請求項２３記載の方法において、
前記表にて指示される所定の期間にわたり前記ソフトウェアエンティティが前記表に登録された後で、前記表から前記第１のソフトウェアエンティティを登録解除するステップをさらに含む方法。
【請求項２６】
セキュア装置にアクセスするシステムであって、
周辺装置と、
前記周辺装置と通信するホスト装置であって、前記ホスト装置が前記周辺装置に対するアクセスを制御するように適合された１つ以上のプロセッサを含み、前記１つ以上のプロセッサが前記周辺装置のための前記ホスト装置にインストールされたコードセットを処理するように適合され、前記コードセットは前記周辺装置と前記ホスト装置上の１つ以上のソフトウェアエンティティとの通信を可能にし、前記１つ以上のプロセッサが前記ホスト装置上の第１のソフトウェアエンティティからの資格証明をベリファイするように適合され、かつ前記資格証明が有効である場合には、前記第１のソフトウェアエンティティに対して前記コードセットのコードのサブセットを提示するように適合され、前記コードのサブセットは前記第１のソフトウェアエンティティに関連するホスト装置と、
を備えるシステム。
【請求項２７】
請求項２６記載のシステムにおいて、
前記１つ以上のプロセッサは、前記第１のソフトウェアエンティティからタスク要求を受信し、
前記１つ以上のプロセッサは、前記１つ以上のプロセッサに前記コードセットがプログラムされる場合には、前記タスクを実行するシステム。
【請求項２８】
請求項２６記載のシステムにおいて、
前記１つ以上のプロセッサは、前記第１のソフトウェアエンティティに１つ以上の認証オプションを提供し、
前記１つ以上のプロセッサは、前記１つ以上の認証オプションのいずれか１つを指示する応答を前記第１のソフトウェアエンティティから受信し、
前記１つ以上のプロセッサは、前記応答に基づいて前記資格証明をベリファイするシステム。
【請求項２９】
請求項２６記載のシステムにおいて、
前記１つ以上のプロセッサは、前記資格証明が有効でない場合には、前記第１のソフトウェアエンティティへエラーを返すシステム。
【請求項３０】
請求項２６記載のシステムにおいて、
前記１つ以上のプロセッサは、前記資格証明が有効である場合には、暗号関数にて前記第１のソフトウェアエンティティに係る識別子を使用してソフトウェアエンティティハンドラを生成するシステム。
【請求項３１】
請求項３０記載のシステムにおいて、
前記１つ以上のプロセッサは、前記第１のソフトウェアエンティティへ前記ソフトウェアエンティティハンドラを送信するシステム。
【請求項３２】
請求項３０記載のシステムにおいて、
前記１つ以上のプロセッサは、前記資格証明が有効である場合には、認証済みソフトウェアエンティティの表に前記第１のソフトウェアエンティティを登録し、
前記１つ以上のプロセッサは、前記資格証明が有効である場合には、前記表に前記ソフトウェアエンティティハンドラを登録するシステム。
【請求項３３】
請求項３２記載のシステムにおいて、
前記１つ以上のプロセッサは、前記ソフトウェアエンティティが首尾よく登録される場合には、前記第１のソフトウェアエンティティへ標識を送信し、前記標識は前記コードのサブセットが提示されることを指示するシステム。
【請求項３４】
請求項３３記載のシステムにおいて、
前記１つ以上のプロセッサは、前記１つ以上のプロセッサに前記コードのサブセットがプログラムされる場合には、前記第１のソフトウェアエンティティが前記表に登録されている間は、前記ソフトウェアエンティティハンドラを使用して前記周辺装置に係るタスクを実行することを前記第１のソフトウェアエンティティに許可するシステム。
【請求項３５】
請求項３２記載のシステムにおいて、
前記１つ以上のプロセッサは、前記第１のソフトウェアエンティティに係るパーミッションを前記表に登録し、前記パーミッションは、前記コードセットのうちの前記第１のソフトウェアエンティティがアクセスできる１つ以上のサブセットを指示するシステム。
【請求項３６】
請求項３２記載のシステムにおいて、
前記１つ以上のプロセッサは、前記表にて指示される所定の期間にわたって前記第１のソフトウェアエンティティが前記表に登録されている場合には、前記第１のソフトウェアエンティティを登録解除するシステム。
【請求項３７】
請求項３２記載のシステムにおいて、
前記１つ以上のプロセッサは、前記第１のソフトウェアエンティティからタスク要求を受信し、
前記１つ以上のプロセッサは、前記１つ以上のプロセッサに前記コードのサブセットがプログラムされる場合には、前記タスク要求を実行し、
前記１つ以上のプロセッサは、前記タスク要求が実行された後で、前記表から前記第１のソフトウェアエンティティを登録解除するシステム。
【請求項３８】
請求項２６記載のシステムにおいて、
前記周辺装置は、フラッシュメモリ装置であるシステム。
【請求項３９】
請求項２６記載のシステムにおいて、
前記１つ以上のプロセッサは、前記周辺装置の１グループにてコンテンツを格納する要求を受信し、前記要求が前記第１のソフトウェアエンティティから受信され、
前記１つ以上のプロセッサは、前記資格証明が有効である場合には、前記グループに係る暗号鍵にアクセスし、
前記周辺装置は、前記暗号鍵を使用して前記コンテンツを暗号化し、かつ前記グループにて前記コンテンツを格納する１つ以上の周辺装置プロセッサを含むシステム。
【請求項４０】
請求項２６記載のシステムにおいて、
前記１つ以上のプロセッサは、前記周辺装置の１グループにてコンテンツにアクセスする要求を受信し、前記要求が前記第１のソフトウェアエンティティから受信され、
前記１つ以上のプロセッサは、前記資格証明が有効である場合には、前記グループに係る暗号鍵にアクセスし、
前記周辺装置は、前記暗号鍵を使用して前記コンテンツを復号化する１つ以上の周辺装置プロセッサを含み、
前記１つ以上のプロセッサは、前記１つ以上のプロセッサに前記コードのサブセットがプログラムされる場合には、前記コンテンツにアクセスするシステム。
【請求項４１】
セキュア装置にアクセスするシステムであって、
暗号エンジンと、
前記暗号エンジンと通信するホスト装置上の１つ以上のプロセッサであり、前記暗号エンジンは、前記ホスト装置上の第１のソフトウェアエンティティからの資格証明をベリファイし、前記１つ以上のプロセッサは、前記ホスト装置と通信するメモリ装置へのアクセスを傍受し、前記第１のソフトウェアエンティティから前記資格証明を受信し、前記資格証明が有効である場合には、前記第１のソフトウェアエンティティに係るコードを提示し、かつ前記１つ以上のプロセッサに前記コードがプログラムされた場合には、前記メモリ装置にアクセスすることを前記第１のソフトウェアエンティティに許可する１つ以上のプロセッサと、
を備えたシステム。
【請求項４２】
請求項４１記載のシステムにおいて、
前記１つ以上のプロセッサは、１つ以上の認証オプションを前記第１のソフトウェアエンティティに提供し、
前記１つ以上のプロセッサは、前記１つ以上の認証オプションの選択を前記第１のソフトウェアエンティティから受信し、
前記暗号エンジンは、前記選択に基づいて前記資格証明をベリファイするシステム。
【請求項４３】
請求項４１記載のシステムにおいて、
前記１つ以上のプロセッサは、前記資格証明が有効である場合には、認証済みソフトウェアエンティティの表に前記第１のソフトウェアエンティティを登録し、
前記１つ以上のプロセッサは、前記第１のソフトウェアエンティティが前記表に登録されている間は、前記第１のソフトウェアエンティティと前記メモリ装置との通信を許可するシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セキュア周辺装置の技術に関する。
【背景技術】
【０００２】
技術の進歩にともない、セキュア周辺装置に対する不正アクセスの防止が大きな問題となっている。メモリ装置はセキュア周辺装置の一例である。セキュアコンテンツを収容するメモリ装置を不正アクセスから保護しなければならない。
半導体メモリが普及し、様々な電子装置で使用されている。例えば、携帯電話機、デジタルカメラ、モバイルメディアプレーヤ、個人用携帯情報端末（ＰＤＡ）、モバイル計算装置、非モバイル計算装置等には不揮発性半導体メモリが使われている。
著作権物の保護を中心に、不揮発性半導体メモリ装置に格納されたコンテンツの保護が重要な機能となっている。例えば、ユーザは、音楽等著作権で保護されたコンテンツを電子装置を通じて購入できる。コンテンツの所有者は通常、コンテンツの利用を購入者に限定し、コンテンツの購入に使ったアプリケーション等の電子装置上の正規のアプリケーションでコンテンツを再生することを要求することができる。
【０００３】
セキュアコンテンツの不正使用を防ぐために情報を安全に格納するのに暗号化等の様々な保護手法を用いることができる。暗号化されたコンテンツへのアクセスを試みる装置上のアプリケーションは、暗号鍵を使ってコンテンツを復号化しなければコンテンツを読み取ることができない。暗号化されたコンテンツへのアクセスを許可されたアプリケーションは、コンテンツを復号化するための暗号鍵を所持する。無許可のアプリケーションは暗号化されたコンテンツにアクセスできても、適切な暗号鍵がなければコンテンツを読み取ることはできない。しかし、暗号鍵を入手すれば無許可のアプリケーションでも保護されたコンテンツを読み取ることができてしまう。そこで、電子装置上の無許可アプリケーションがセキュア周辺装置上の保護コンテンツにアクセスするのを防ぐ簡素で安全で改良された方法が求められている。
【発明の概要】
【０００４】
ここで開示する技術は、セキュア周辺装置に対する不正アクセスを防ぐための、アプリケーション、アプリケーションランチャ、その他のソフトウェアエンティティを認証することに関係する。ソフトウェアエンティティは、ホスト装置上のコードセットと認証方式により認証される。このコードセットは周辺装置に関連するものであり、周辺装置に対するアクセスを制御するためにホスト装置にインストールされる。コードセットはまた、ホスト装置上のソフトウェアエンティティが周辺装置に係るタスクを実行するにあたって使用するコードを含む。ソフトウェアエンティティが首尾よく認証されると、ソフトウェアエンティティが周辺装置に係るタスクを実行するためのコードが使用可能となる。
【０００５】
一実施形態のプロセスは、セキュア周辺装置に係るコードセットをホスト装置にインストールすることを含む。このコードセットは、装置ドライバ用コード等のホスト装置上で周辺装置を操作するためのコードを含む。コードセットは、ホスト装置上で第１のソフトウェアエンティティを認証するために使用される。このプロセスはさらに、第１のソフトウェアエンティティが首尾よく認証される場合には、第１のソフトウェアエンティティに対してコードセットの一部分を提示することを含む。この提示することが、第１のソフトウェアエンティティが周辺装置と通信するためのコードを提示することをも含む。
【０００６】
認証プロセスの一実施形態は、セキュア周辺装置に係る第１のタスク要求をホスト装置上の第１のソフトウェアエンティティのユーザから受信することを含む。周辺装置のためのホスト装置にインストールされたコードセットには、第１のソフトウェアエンティティから資格証明が送信される。このプロセスはさらに、資格証明が有効である場合には、コードセットの一部分にアクセスすることを含む。このアクセスすることは、第１のソフトウェアエンティティに係るコードにアクセスすることをも含み、これにより第１のソフトウェアエンティティは第１のタスクを実行できる。コードセットは、ホスト装置上の１つ以上のソフトウェアエンティティが周辺装置に係るタスクを実行するためのコードを含む。第１のソフトウェアエンティティは、コードセットの一部分を使用して第１のタスクに係る情報を送信する。
【０００７】
認証プロセスの一実施形態は、第１のソフトウェアエンティティが周辺装置へのアクセスを要求するときに、ホスト装置上の第１のソフトウェアエンティティへ１つ以上の認証オプションを送信することを含む。１つ以上の認証オプションは、周辺装置のためのホスト装置にインストールされたコードセットから第１のソフトウェアエンティティへ送信される。コードセットは、ホスト装置上の１つ以上のソフトウェアエンティティに係るコードを含む。コードセットは第１のソフトウェアエンティティから資格証明を受信する。資格証明は、１つ以上の認証オプションのいずれか１つに関連する。このプロセスはさらに、資格証明が有効である場合には、第１のソフトウェアエンティティに係る第１のコードに対してアクセスを提供することを含む。第１のコードはコードセットの一部分であり、周辺装置にアクセスする。
【０００８】
一実施形態は、セキュア周辺装置と、周辺装置と通信するホスト装置とを含む。ホスト装置は、周辺装置へのアクセスを制御する１つ以上のプロセッサを含む。１つ以上のプロセッサはまた、周辺装置のためのホスト装置にインストールされたコードセットへのアクセスを制御することでコードセットを管理する。このコードセットは、周辺装置と、ホスト装置上の１つ以上のソフトウェアエンティティとの通信を可能にする。１つ以上のプロセッサは、ホスト装置上の第１のソフトウェアエンティティからの資格証明をベリファイし、資格証明が有効ならば、第１のソフトウェアエンティティに対してコードセットのコードのサブセットを提示する。このコードのサブセットは第１のソフトウェアエンティティに関連する。
【０００９】
一実施形態は、暗号エンジンと、暗号エンジンと通信するホスト装置上の１つ以上のプロセッサとを含む。この暗号エンジンは、ホスト装置上の第１のソフトウェアエンティティからの資格証明をベリファイする。１つ以上のプロセッサはセキュア周辺装置に対するアクセスを傍受する。１つ以上のプロセッサはまた、第１のソフトウェアエンティティから資格証明を受信し、資格証明が有効ならば、第１のソフトウェアエンティティに係るコードを提示する。１つ以上のプロセッサがこのコードを実行すると、第１のソフトウェアエンティティは周辺装置にアクセスできる。
【００１０】
一実施形態は、プロセッサ読み込み可能コードを有する１つ以上のプロセッサ読み込み可能媒体を含み、このプロセッサ読み込み可能コードが１つ以上のプロセッサに方法を実行させる。この方法は、周辺装置へのアクセスを第１のソフトウェアエンティティが要求するときに、ホスト装置上の第１のソフトウェアエンティティへ１つ以上の認証オプションを送信することを含む。この送信することは、周辺装置のためのホスト装置にインストールされたコードセットから第１のソフトウェアエンティティへ１つ以上の認証オプションを送信することをも含み、コードセットは、ホスト装置上の１つ以上のソフトウェアエンティティに係るコードを含む。コードセットは、第１のソフトウェアから資格証明を受信する。資格証明は、１つ以上の認証オプションのいずれか１つに関連する。方法はさらに、資格証明が有効である場合には、第１のソフトウェアエンティティに係る第１のコードに対するアクセスを提供することを含む。第１のコードはコードセットの一部分であり、周辺装置へのアクセスを可能にする。
【図面の簡単な説明】
【００１１】
【図１】セキュア周辺装置のＳＤＫがインストールされる前のホスト装置のブロック図である。
【図２】セキュア周辺装置のＳＤＫを構成する１プロセスを説明するフローチャートである。
【図３】セキュア周辺装置用ＳＤＫの一例を示す。
【図４】ホスト装置にセキュア周辺装置をロードする１プロセスを説明するフローチャートである。
【図５】セキュア周辺装置のＳＤＫがインストールされた後のホスト装置の一実施形態を示すブロック図である。
【図６】セキュアメモリ装置のコードがインストールされる前のホスト装置のコンポーネントの一実施形態を示すブロック図である。
【図７】ホスト装置およびセキュアメモリ装置のコンポーネントの一実施形態を示すブロック図である。
【図８】メモリ装置ＳＤＫの一実施形態のブロック図である。
【図９】セキュアメモリ装置の一実施形態を示すブロック図である。
【図１０】セキュアメモリ装置用ファームウェアモジュールの一実施形態を示すブロック図である。
【図１１】セキュアメモリ装置内のパーティションの一例を示す。
【図１２】メモリ装置用ＳＤＫに含まれるアプリケーションＡＰＩの一例である。
【図１３】セキュア周辺装置にアクセスする１プロセスを説明するフローチャートである。
【図１４】ホスト装置上でソフトウェアエンティティを登録するプロセスの一例を説明するフローチャートである。
【図１５Ａ】ＳＤＫで実行できる認証方式のフローチャートである。
【図１５Ｂ】ＳＤＫで実行できる認証方式のフローチャートである。
【図１５Ｃ】ＳＤＫで実行できる認証方式のフローチャートである。
【図１６】登録プロセスの一例を示す。
【図１７】ホスト装置上で首尾よく登録されたソフトウェアエンティティの一例を示す。
【図１８】メモリ装置に保護対象コンテンツを格納するプロセスの一実施形態を説明するフローチャートである。
【図１９】メモリ装置で保護対象コンテンツにアクセスするプロセスの一実施形態を説明するフローチャートである。
【図２０】ソフトウェアエンティティの登録を解除するプロセスの一実施形態を説明するフローチャートである。
【発明を実施するための形態】
【００１２】
開示された本願の技術は、ホスト装置でセキュリティ機能を実施することにより安全な周辺装置アクセスを提供する。周辺装置は、メモリ装置、プリンタ、キーボード等のホスト装置を介して操作される何らかの装置であることができる。ホスト装置上で周辺装置を操作するには、周辺装置用のソフトウェアをホスト装置にインストールしなければならない。このソフトウェアは、ダイナミックリンクライブラリ（ＤＬＬ）やスタティックライブラリ（ＬＩＢ）等のソフトウェア開発キット（ＳＤＫ）のコードセットとしてホスト装置にインストールされる。ホスト装置では１つ以上のソフトウェアエンティティまたはアプリケーションを通じて周辺装置が操作される。周辺装置へのアクセスにあたっては多くの場合、アプリケーションの種類、アプリケーションの働き、アプリケーションの権限等に応じてホスト装置上のアプリケーションごとに異なるＡＰＩが必要となる。ユーザがアプリケーションを通じてホスト装置にタスク要求を送信しそのタスク要求に周辺装置に対するアクセスが含まれる場合には、周辺装置のＳＤＫが当該アプリケーションを認証し、周辺装置にアクセスする権限が当該アプリケーションにあることを確認する。この認証に成功すると、ＳＤＫは当該アプリケーションに専用のＡＰＩだけを提示する。当該アプリケーションによるアクセスが許可されていないＡＰＩは提示されない。当該アプリケーションは提示されたＡＰＩを使ってタスク要求を送信し、実行できる。こうすることで周辺装置のセキュリティを向上させ、他のアプリケーションによる不正なＡＰＩアクセスを防止する。
【００１３】
図１は、周辺装置用ＳＤＫのコードセットがインストールされる前のホスト装置２５５の一例を示す。ホスト装置２５５はアプリケーション１０５と、メモリ２６０と、ホストＣＰＵ１６５とを有する。ホスト装置２５５は、携帯電話、ＰＣ、デジカルカメラ、移動体メディアプレーヤ、個人用携帯情報端末（ＰＤＡ）、移動体計算装置、非移動体計算装置等の電子装置であることができる。アプリケーション１０５は、カレンダ、ドキュメントビューア、メディアプレーヤ等のホスト装置上で利用される何らかのソフトウェアエンティティである。アプリケーション１０５は、アプリケーションの起動に用いるソフトウェアエンティティであってもよい。メモリ２６０は、ホスト装置２５５で必要とされる何らかのメモリである。ホストＣＰＵ１６５は、ホスト装置２５５の操作に使われる何らかのプロセッサである。
【００１４】
図１に描かれたホスト装置２５５等のホスト装置を通じて周辺装置を操作するためにフトウェア開発者によってＳＤＫソフトウェアが作成されると、ＳＤＫソフトウェアは、周辺装置にアクセスするホスト装置上のソフトウェアエンティティまたはアプリケーションごとに構成できる。ホスト装置上のソフトウェアエンティティは多くの場合、種々のニーズや嗜好性を持つ顧客によって所有されたり、もしくは作成されたりすることができる。夫々のソフトウェアエンティティ／アプリケーションに基づくか、あるいは認証プリファレンスや顧客アプリケーションの機能等の顧客のニーズや嗜好性に基づいてＳＤＫを構成することができる。図２は、種々のアプリケーションおよび／または顧客のニーズならびに嗜好性に基づき、ＳＤＫコードセットを構成する１プロセスのフローチャートである。ステップ１９０では、ＳＤＫソフトウェア開発者がアプリケーションおよび／または顧客の要求に基づいて、アプリケーションおよび／または顧客ごとにＳＤＫソフトウェアを開発する。例えば、顧客アプリケーションを通じて周辺装置にアクセスするＳＤＫコードセットには通常、アプリケーションと周辺装置との仲介となるＡＰＩが必要である。アプリケーションのＡＰＩにアクセスするためのＳＤＫソフトウェアは、顧客の嗜好性に応じて詳しく構成できる。例えば、周辺装置のアクセスに先立ちアプリケーション認証を義務づけるようにＳＤＫを構成する。ＳＤＫは、アプリケーションごとにアクセスすべきＡＰＩが決まるように構成される。ステップ１９５では、ステップ１９０で実行したアプリケーション／顧客ごとに特定のＳＤＫソフトウェアの必要なＡＰＩに基づいて周辺装置を操作するＳＤＫソフトウェアを構成する。例えば、アプリケーション／顧客ごとに必要なセキュリティ機能のためのＳＤＫソフトウェア修正を含む。周辺装置を操作するＳＤＫソフトウェアが構成されると、ＳＤＫはステップ１９０でアプリケーションおよび／または顧客ごとに構成されたソフトウェアのすべて（認証に必要なセキュリティソフトウェア等）や、ステップ１９５でカスタマイズされたソフトウェアを含むホスト装置上で周辺装置を操作するためのその他のソフトウェアも使用して正常に機能するようになる。
【００１５】
図３は、図２のプロセスに従い構成された周辺装置用ＳＤＫ３３０コードセットの一例を示すものである。周辺装置用ＳＤＫ３３０のコードはセキュリティレイヤ１２５、アプリケーション用ＡＰＩ１〜３、装置ドライバ１４０等のサブセットを含む。このＳＤＫコードセットはダイナミックリンクライブラリ（ＤＬＬ）かスタティックライブラリ（ＬＩＢ）であることができる。セキュリティレイヤ１２５は、周辺装置へアクセスを試みる異なるアプリケーションを認証するためのソフトウェアを含む。セキュリティレイヤ１２５は、図２のステップ１９５で構成されるＳＤＫソフトウェアの一部であることができる。例えば、アプリケーション１用ＡＰＩ２６２に追加の認証機能が必要なように、セキュリティレイヤ１２５を構成することができる。セキュリティレイヤ１２５については後ほど詳述する。それぞれのアプリケーションは、周辺装置と通信するにあたってアプリケーション１〜３用ＡＰＩを使用しなければならない。図２のステップ１９０で説明したように、これらのＡＰＩを、アプリケーションに対する顧客の嗜好性に基づいて構成することができる。例えば、アプリケーション１用ＡＰＩ２６２は、図１のホスト装置２５５にあるアプリケーション１０５用にカスタマイズされたＡＰＩであることができる。装置ドライバ１４０は、ホスト装置上で周辺装置を正常に作動させるためのソフトウェアである。
【００１６】
図４は、図３に見られるＳＤＫをホスト装置にインストールする１プロセスを説明するフローチャートである。図４のステップ１７０ではホスト装置へセキュア周辺装置を接続する。ホスト装置へセキュア周辺装置が接続されると、セキュア周辺装置を操作するためのＳＤＫがホスト装置に読み込まれ、インストールされる（ステップ１７５）。このＳＤＫをセキュア周辺装置用メモリに格納することができる。ＳＤＫは、ホスト装置上のホストＣＰＵをプログラム実行し不正アクセスを阻止するようにセキュア周辺装置を操作するためのソフトウェアを含む。ＳＤＫコードセットがホスト装置に正常に読み込まれ、インストールされると、ホスト装置をセキュア周辺装置とともに操作できる（ステップ１８０）。
【００１７】
実施形態によっては、ある特定のセキュア周辺装置がホスト装置に初めて接続されるときにだけステップ１７５が実行されることに留意するべきである。セキュア周辺装置が最初に接続されるときにホスト装置にＳＤＫがインストールされると、セキュア周辺装置がホスト装置に再接続されるたびにＳＤＫをインストールする必要はない。別の実施形態では、ホスト装置へセキュア周辺装置が接続されるたびにＳＤＫの読み込みとインストールを行う。
【００１８】
一実施形態において、ホスト装置にオペレーティングシステムがインストールされる前にセキュア周辺装置を操作するためのＳＤＫがホスト装置に読み込まれ、プリインストールされる。この場合には、オペレーティングシステムを通じてＳＤＫを起動もしくは選択して使用することができる。したがって、図４のプロセスの一部としてステップ１７５を実行する必要はない。別の実施形態では、ホスト装置のオペレーティングシステムがインストールされた後でセキュア周辺装置を操作するためのＳＤＫを読み込み、プリインストールする。この場合も、図４のプロセスの一部としてステップ１７５を実行する必要はない。
【００１９】
図５は、図３のＳＤＫ３３０コードセットがインストールされた後のホスト装置２５５ならびにセキュア周辺装置１４５の一実施形態を示すものである。ホスト装置２５５は図１に見られる当初のコンポーネント（アプリケーション１０５、メモリ２６０、ホストＣＰＵ１６５）のほかに、図３に見られるＳＤＫ３３０のコンポーネント（セキュリティレイヤ１２５、アプリケーション１〜３用ＡＰＩ、装置ドライバ１４０）を含む。ホスト装置２５５のユーザがアプリケーション１０５を通じてセキュア周辺装置１４５を含むタスクを要求すると、セキュリティレイヤ１２５はホストＣＰＵ１６５にアプリケーション１０５を認証させる。セキュリティレイヤ１２５によりアプリケーション１０５が首尾よく認証されると、セキュリティレイヤは、アプリケーション１０５専用のＡＰＩサブグループを提示する。例えば、アプリケーション１０５がアプリケーション１なら、アプリケーション１用ＡＰＩ２６２を提示する。アプリケーション１０５は、次にＳＤＫコードセットの当該サブセットを使用し、装置ドライバ１４０を介してセキュア周辺装置１４５へタスク要求を送信することができる。アプリケーション１０５も、これらのＡＰＩを使用して、ユーザ用のタスク要求を送信することができる。
周辺装置用ＳＤＫを通じて周辺装置に安全にアクセスするプロセスをより具体的に説明するため、これより周辺装置の一例としてセキュアメモリ装置を使用する。しかし、周辺装置はどんな周辺装置であってもよく、これ以降説明するメモリ装置の例に限定されないことに留意するべきである。
【００２０】
図６は、セキュアメモリ装置用ＳＤＫがインストールされる前のホスト装置１００のコンポーネントの一実施形態を示すものである。ホスト装置１００のユーザは通常、アプリケーション１０５等のソフトウェアエンティティを通じてホスト装置１００に格納されたコンテンツにアクセスする。ホスト装置１００上のアプリケーションの例には、ホスト装置１００に保存されるメディアプレーヤ、カレンダ、アドレス帳等が含まれる。あるアプリケーションは、ホスト装置１００上の実行可能なコードと異なる位置に格納されたアプリケーション（メディアプレーヤ、カレンダ、アドレス帳等）の起動に使われるホスト装置上の実行可能なコードでもあることができる。例えば、あるアプリケーションは、ホスト装置１００のメモリの異なった部分にあるホスト装置内またはホスト装置１００へ接続される周辺装置に保存されたメディアプレーヤアプリケーションを起動するために使用することができる。アプリケーション１０５を使ってアクセスもしくは保存されるコンテンツは、例えばアプリケーション、メディア、スケジューリング情報、連絡情報等を含むことができる。
アプリケーション１０５はホスト装置１００用オペレーティングシステム上のホスト記憶管理部１１０を使用し、ホスト装置１００やリムーバブルメモリ装置等の周辺装置でコンテンツのアクセス、記憶を行う。ホスト記憶管理部１１０は、アクセス機能と記憶機能を制御するオペレーティングシステム上のソフトウェアコンポーネントであり、ホスト装置１００内および周辺装置間のアクセスや記憶を含んでいる。詳細は以下に説明する。
【００２１】
図６にはホスト記憶管理部１１０とホストファイルシステム１３０も示している。ホストファイルシステム１３０は、ホスト記憶管理部１１０によって管理される１コンポーネントである。ホスト記憶管理部１１０はホストＣＰＵ１６５を使用してホストファイルシステム１３０にアクセスする。ホストファイルシステム１３０はホスト装置１００のメモリに格納され、ホスト装置１００や周辺装置に記憶されたコンテンツを検索し、コンテンツを記憶するために使用される。ユーザがホスト装置１００からコンテンツを要求すると、ホスト記憶管理部１１０はホストファイルシステム１３０を使ってそのコンテンツを検索する。ユーザがコンテンツの格納を要求すると、ホスト記憶管理部１１０はホストファイルシステム１３０を使ってそのコンテンツを適切な場所に格納する。
【００２２】
また、ホスト装置１００に格納されたコンテンツは保護のために暗号化できる。ホスト装置はホスト暗号エンジン１８５を含むことができ、これは乱数生成部と対称暗号法（ＡＥＳ、ＤＥＳ、３ＤＥＳ等）、暗号ハッシュ関数（ＳＨＡ−１等）、非対象暗号法（ＰＫＩ、鍵ペア生成等）もしくはその他のどのような暗号法をもサポートする暗号処理部とを有することができる。
【００２３】
図７は、周辺装置用ＳＤＫ３３０のコードセットがホスト装置１００に正常に読み込まれ、インストールされた後で、セキュアメモリ装置１４５と連動するホスト装置１００の一例を示すものである。セキュア周辺装置は、一実施形態において、リムーバブルストレージ装置である。コンテンツは、セキュアメモリ装置のセキュアパーティションに格納されるか、セキュアメモリ装置のパブリックパーティションに格納される。セキュアメモリ装置は、大容量ストレージ装置や不揮発性フラッシュメモリ装置等の何らかのメモリ装置であることができる。セキュアメモリ装置のセキュアパーティションに格納されるコンテンツは、不正アクセスから保護される。コンテンツが保護される場合には、セキュアメモリ装置のパブリックパーティションに格納されるコンテンツも不正アクセスから保護される。コンテンツが暗号化される場合には、コンテンツはセキュアメモリ装置の中で保護される。コンテンツが暗号化されず、パブリックパーティションに格納される場合には、セキュアメモリ装置の中で保護されない。ホスト装置は、コンテンツを暗号化、復号化するための権限等のコンテンツに係るしかるべき権限を持つ場合に、セキュアメモリ装置上でコンテンツにアクセスできたり、コンテンツを格納できたりする。
【００２４】
図７では、物理インターフェイス１４２によってホスト装置１００がセキュアメモリ装置１４５へ物理的に接続されている。アプリケーション１０５と、ホストＣＰＵ１６５と、ホスト装置暗号エンジン１８５と、ホスト記憶管理部１１０と、ホストファイルシステム１３０は、図６に示されるホスト装置１００上のソフトウェアコンポーネントである。周辺装置用ＳＤＫ３３０はホスト装置１００にインストールされ、ホスト装置１００によりセキュア周辺装置１４５を操作するために使われるコードセットである。周辺装置用ＳＤＫ３３０は、セキュアメモリ装置１４５のコンテンツのアクセスや格納を処理するにあたって、セキュア周辺装置用ＡＰＩ１２０と、周辺装置用ＳＤＫセキュリティレイヤ１２５と、ホストファイルシステム１３０と、登録表２８５と、ＳＤＫ暗号ライブラリ１６８と、セキュアファイルシステム１３５とを使用する。セキュア周辺装置用ＡＰＩ１２０と、周辺装置用ＳＤＫセキュリティレイヤ１２５と、登録表２８５と、ＳＤＫ暗号ライブラリ１６８と、セキュアファイルシステム１３５と、装置ドライバ１４０は、図４のステップ１７５に記載されたように、セキュアメモリ装置１４５のためのＳＤＫコードセットからホスト装置に読み込まれ、インストールされるソフトウェアコンポーネントである。オープンチャネル１５０とセキュアチャネル１５５は、ホスト装置１００とセキュアメモリ装置１４５との間でコンテンツを転送するために使われるデータバスである。
【００２５】
セキュアメモリ装置１４５は、セキュアメモリ装置１４５用にホスト装置１００にインストールされたソフトウェアを使用してコンテンツのアクセスと格納を制御する。ソフトウェアには、図４のステップ１７５に記載されたライブラリのほかに、ホスト装置にプリインストールされるライブラリが含まれる。ホスト装置に読み込まれ、インストールされるＳＤＫライブラリは、ダイナミックリンクライブラリ（ＤＬＬ）かスタティックライブラリ（ＬＩＢ）であることができ、ホスト装置上のオペレーティングシステムに統合することができる。ＳＤＫコードセットはセキュアメモリ装置１４５のセキュア操作のためにホスト記憶管理部１１０へ至るフックを提供する。例えば、ホストファイルシステム１３０をコールするコールチェーンに周辺装置用ＳＤＫコードのサブセットを挿入することができ、ホストＣＰＵ１６５によりコンテンツのアクセス方法や格納方法を制御することができる。図７の周辺装置用ＳＤＫセキュリティレイヤ１２５と、セキュア周辺装置用ＡＰＩ１２０と、セキュアファイルシステム１３５と、登録表２８５と、ＳＤＫ暗号ライブラリ１６８と、装置ドライバ１４０は、セキュア周辺装置用ＳＤＫコードセットを通じてホスト装置に提供されるコードのサブセットである。これらのサブセットは、ホスト装置１００にインストールされた装置ドライバ１４０を使用して提供される。
【００２６】
図７に示すように、ユーザは、ホスト装置上のアプリケーション１０５等のソフトウェアエンティティを通じてセキュアメモリ装置１４５に格納されたコンテンツにアクセスできる。セキュア周辺装置１４５に格納された保護されたコンテンツについては、後ほど詳述するように、コンテンツへのアクセスに先立ちアプリケーション１０５を認証する必要がある。
アプリケーション１０５はホスト装置用オペレーティングシステム上のホスト記憶管理部１１０を使用してセキュアメモリ装置１４５のコンテンツにアクセスし、コンテンツを格納する。ホスト記憶管理部１１０はアクセス機能と記憶機能とを制御する。これは、ホスト装置内でのアクセスや記憶と、セキュアメモリ装置１４５内でのアクセスや記憶を含む。
【００２７】
図６に示されているように、ホスト記憶管理部１１０は通常、ホスト装置用オペレーティングシステム上のホストファイルシステム１３０を使用してホスト装置や周辺装置のアクセス機能と記憶機能を制御する。ホストファイルシステム１３０は、ＦＡＴ１２、ＦＡＴ１６、ＦＡＴ３２、ＮＴＦＳ等の通常のファイルシステムであることができる。しかし、セキュアメモリ装置１４５の場合、セキュアメモリ装置１４５の周辺装置用ＳＤＫ３３０は、周辺装置用ＳＤＫセキュリティレイヤ１２５を使用してホスト装置上でのアクセス機能と記憶機能を制御するときに、セキュアメモリ装置１４５用のセキュアファイルシステム１３５を使用する。セキュアファイルシステム１３５へのアクセスをアプリケーション１０５を認証することで制御し、認証に成功した場合には、アプリケーション１０５専用のＡＰＩに限りアクセスを許可する。これらのＡＰＩがセキュアファイルシステム１３５の正しいインターフェイスとなる。セキュアファイルシステム１３５はセキュアメモリ装置１４５のためにホスト装置１００にインストールされ、セキュアメモリ装置１４５に格納されるコンテンツのためのファイルシステムである。セキュアファイルシステム１３５はＦＡＴ１２、ＦＡＴ１６、ＦＡＴ３２、ＮＴＦＳ等の通常のファイルシステムであることができる。
【００２８】
周辺装置用ＳＤＫセキュリティレイヤ１２５のためのソフトウェアは、図２のステップ１７５で読み込まれ、インストールされるＳＤＫの一部として読み込まれ、インストールされる。この周辺装置用ＳＤＫセキュリティレイヤ１２５は、ホストＣＰＵ１６５にアプリケーション１０５を認証させる。アプリケーション１０５が首尾よく認証されると、アプリケーション１０５は登録表２８５に登録される。周辺装置用ＳＤＫセキュリティレイヤ１２５はまた、アプリケーション１０５にアプリケーションハンドラを提供する。このアプリケーションハンドラは、アプリケーション１０５がアクセスできるＡＰＩがどれなのかを指示する。周辺装置用ＳＤＫセキュリティレイヤ１２５によって実行される認証および登録プロセスの詳細は後述する。
【００２９】
ユーザがアプリケーション１０５を通じてコンテンツへのアクセスを要求すると、周辺装置用ＳＤＫセキュリティレイヤ１２５は認証に成功した後で、セキュア周辺装置１４５のコンテンツにアクセスするにあたって必要なＡＰＩ、例えばセキュア周辺装置用ＡＰＩ１２０を提供する。アプリケーション１０５はこのＡＰＩを使用し、コンテンツのパーミッションにアクセスすることによりセキュア周辺装置１４５に格納されたコンテンツを受け取ることができる。コンテンツが保護される場合はコンテンツとともにヘッダが格納される。コンテンツを暗号化、復号化するためのコンテンツ暗号鍵（ＣＥＫ）に関するドメイン情報や、格納されたコンテンツの種別を指示するコンテンツメタデータ等、このヘッダにはコンテンツに関する情報が入る。
【００３０】
周辺装置用ＳＤＫ３３０の中にあるセキュア周辺装置用ＡＰＩ（アプリケーションプログラムインターフェイス）１２０は、コンテンツのアクセスや格納にあたってセキュア周辺装置１４５をアプリケーション１０５に連係させる。このセキュア周辺装置用ＡＰＩ１２０はＳＤＫの一部としてインストールされ、アプリケーション１０５が首尾よく認証される場合にはアプリケーション１０５によってコールされる。セキュア周辺装置用ＡＰＩ１２０は、周辺装置用ＳＤＫセキュリティレイヤ１２５とセキュアファイルシステム１３５との橋渡しとなる。
【００３１】
セキュアファイルシステム１３５を使ってコンテンツの位置が特定されると、ホスト装置上の装置ドライバ１４０を使用し、セキュアメモリ装置１４５のしかるべき位置でコンテンツにアクセスもしくは格納できる。これは、ホスト装置１００をセキュアメモリ装置１４５に物理的に接続する物理インターフェイス１４２を通じて行われる。コンテンツは、セキュアチャネル１５５またはオープンチャネル１５０を使用して、アクセスされたり、格納されたりすることができる。セキュア周辺装置１４５とホスト装置との間でコンテンツを転送するときにセキュアチャネル１５５を使用するか、それともオープンチャネル１５０を使用するかは、周辺装置用ＳＤＫ３３０によって決定される。
【００３２】
ユーザがアプリケーション１０５を通じて保護の対象とならないコンテンツの格納を要求すると、周辺装置用ＳＤＫ３３０はホストファイルシステム１３０を使用してコンテンツを格納する。セキュア周辺装置１４５の中で保護するべきコンテンツの格納をユーザが要求すると、周辺装置用ＳＤＫ３３０はセキュアファイルシステム１３５を使用してコンテンツを格納する。
周辺装置用ＳＤＫ３３０の中にあるセキュア周辺装置用ＡＰＩ（アプリケーションプログラムインターフェイス）１２０は、保護対象コンテンツがアクセスされるかまたは格納される場合に、セキュア周辺装置１４５をアプリケーション１０５に連係させる。このセキュア周辺装置用ＡＰＩ１２０はＳＤＫの一部としてインストールされ、アプリケーション１０５が首尾よく認証される場合にはアプリケーション１０５によってコールされる。セキュア周辺装置用ＡＰＩ１２０は、周辺装置用ＳＤＫセキュリティレイヤ１２５とセキュアファイルシステム１３５との橋渡しとなる。
【００３３】
ホストファイルシステム１３０またはセキュアファイルシステム１３５のいずれかを使用してコンテンツの位置が特定され、ファイルされると、ホスト装置上の装置ドライバ１４０を使用して、適切な位置のセキュアメモリ装置１４５上でコンテンツをアクセスしたり、格納したりすることができる。これは、ホスト装置１００をセキュアメモリ装置１４５に物理的に接続する物理インターフェイス１４２を通じて行われる。セキュアチャネル１５５またはオープンチャネル１５０を使用して、コンテンツをアクセスしたり、格納したりすることができる。周辺装置用ＳＤＫセキュリティレイヤ１２５が、セキュア周辺装置１４５とホスト装置との間でコンテンツを転送するときにセキュアチャネル１５５を使用するか、それともオープンチャネル１５０を使用するかを決定する。
セッション鍵とは、ホスト装置とセキュアメモリ装置との間でコンテンツが転送される前にコンテンツを暗号化するのに使用する暗号鍵である。セキュアチャネルを使ってコンテンツを転送する必要がなければ、コンテンツに割り振られるセッション鍵はなく、あるいはコンテンツに割り振られたセッション鍵で暗号化が不要であることを指示することができる。
【００３４】
コンテンツにセッション鍵が割り振られ、セキュアチャネル１５５を使ったコンテンツ転送が指示される場合には、セキュアチャネル１５５による転送に先立ちセッション鍵を使ってコンテンツを暗号化する。暗号化されたコンテンツが転送されると、コンテンツは同じセッション鍵を使って復号化される。ホスト装置１００ではＳＤＫ暗号ライブラリ１６８を使ってコンテンツの暗号化または復号化が行われる。ＳＤＫ暗号ライブラリ１６８には、乱数生成部と対称暗号法（ＡＥＳ、ＤＥＳ、３ＤＥＳ等）、暗号ハッシュ関数（ＳＨＡ−１等）、非対象暗号法（ＰＫＩ、鍵ペア生成等）もしくはどのような他の暗号法にも対応する暗号機能が含まれる。セキュア周辺装置１４５は、図１１で詳述するようにコンテンツ転送前後にセキュアメモリ装置１４５で暗号化を行うための独自の暗号エンジンを有する。オープンチャネル１５０を使用したコンテンツ転送をセッション鍵が指示する場合には、コンテンツは暗号化されずに転送される。
周辺装置用ＳＤＫがインストールされていないホスト装置は、パブリックパーティションに格納されたコンテンツにアクセスできる。ホスト装置がコンテンツにアクセスできてもコンテンツに保護がかかっているなら、暗号化されたコンテンツを正常に読み取ることはできない。ホスト装置はセキュアパーティションに格納されたコンテンツにアクセスできない。
【００３５】
図８は、図７に示されているように、周辺装置がセキュアメモリ装置である場合に、ホスト装置１００にインストールされる周辺装置用ＳＤＫ３３０のソフトウェアの一例を示すものである。前述したように、周辺装置はメモリ装置の例に限定されない。周辺装置用ＳＤＫ３３０はホスト装置１００にインストールされるライブラリであり、周辺装置用ＡＰＩ２６０、周辺装置用ＳＤＫセキュリティレイヤ１２５、装置ドライバ１４０、セキュアファイルシステム１３５、ＳＤＫ暗号ライブラリ１６８、登録表２８５等の、ホスト装置１００上でセキュアメモリ装置１４５を操作するためのソフトウェアを含む。しかし、周辺装置用ＳＤＫ３３０はこのソフトウェアだけに限定されない。
【００３６】
アプリケーション用ＡＰＩ２６０は、図７のアプリケーション１０５等のアプリケーションによって使用されるＡＰＩである。これらのＡＰＩは認証用のＡＰＩのほかに、図７のセキュア周辺装置用ＡＰＩ１２０等のアプリケーションが首尾よく認証された後でセキュアメモリ装置１４５上のコンテンツにアクセスするためにアプリケーションをセキュアファイルシステム１３５に連係させるＡＰＩを含む。アプリケーション用ＡＰＩ２６０は特定のアプリケーションに専用のＡＰＩを含むことができる。例えば、ある１つのアプリケーションによって使われるＡＰＩが別のアプリケーションで使用できないことがあり得る。周辺装置用ＳＤＫセキュリティレイヤ１２５により首尾よく認証されたアプリケーションは、セキュア周辺装置用ＡＰＩ１２０を通じてセキュアメモリ装置１４５にある保護対象コンテンツにアクセスできる。セキュア周辺装置用ＡＰＩ１２０については後ほど図１２に関連して詳述する。
【００３７】
図７に見られる周辺装置用ＳＤＫセキュリティレイヤ１２５はホスト装置にインストールされ、ホスト記憶管理部１１０に至るフックを提供し、セキュアメモリ装置１４５におけるコンテンツのアクセスや格納をホストＣＰＵ１６５に制御させる。周辺装置用ＳＤＫセキュリティレイヤ１２５のコードがホスト装置１００上でのホストファイル操作を「乗っ取る」ことで、セキュア周辺装置１４５上でのコンテンツアクセスに先立ちアプリケーションを認証できるようになる。
図７に示す装置ドライバ１４０のソフトウェアを、セキュアメモリ装置１４５がホスト装置１００へ接続された後でホスト装置に読み込み、インストールでき（図４のステップ１７５）、または、ホスト装置にオペレーティングシステムをインストールする前か後でホスト装置１００のオペレーティングシステム上にプリインストールできる。
セキュアファイルシステム１３５は、図７に示されたセキュアメモリ装置１４５でコンテンツにアクセスや格納するためのファイリングデータを含むファイルシステムである。  ＳＤＫ暗号ライブラリ１６８は、セキュアチャネル１５５向けコンテンツを暗号化し、復号化するための暗号法を含むライブラリである。ＡＥＳ、ＤＥＳ、３ＤＥＳ、ＳＨＡ−１、ＰＫＩ、鍵ペア生成等の暗号法は公知の方式である。ＳＤＫ暗号ライブラリ１６８は、セッション鍵等、コンテンツのパーミッションに基づきコンテンツを暗号化し、復号化する。
【００３８】
登録表２８５は、周辺装置用ＳＤＫセキュリティレイヤ１２５がアプリケーションの認証状況や関係情報を管理、保守するために使用する表である。この表には認証アルゴリズム、アプリケーションＩＤ、登録時間、失効時間、登録状況等の情報が入る。登録表２８５の詳細については後述する。
セキュアメモリ装置の例を継続し、図７に示すセキュア周辺装置１４５の一実施形態を図９に示す。セキュア周辺装置またはメモリ装置１４５はファームウェアモジュール２１０と、ＣＰＵ２２０と、周辺装置暗号エンジン１６０と、システムパーティション４００とを含む。システムパーティション４００にはパブリックパーティション２４０とセキュアパーティション２５０を含む。ファームウェアモジュール２１０はＣＰＵ２２０を使用し、システムパーティション４００のパブリックパーティション２４０かセキュアパーティション２５０でコンテンツのアクセスや格納を行う。メモリ装置暗号エンジン１６０は、セキュアメモリ装置１４５の中でアクセスもしくは格納される保護対象コンテンツを暗号化し、復号化するために使用される。
【００３９】
ファームウェアモジュール２１０はセキュアメモリ装置１４５のセキュアパーティション２５０とパブリックパーティション２４０でコンテンツのアクセスと格納を制御するハードウェアとソフトウェアを含む。ファームウェアモジュールはアクセス機能と格納機能を実行するようにＣＰＵ２６０をプログラムする。例えば、メモリのどの部分でコンテンツにアクセスもしくは格納するかを判断し、またはコンテンツが保護されているか否かを判断する。ファームウェアモジュール２１０の詳細については図１０に関する説明の中で説明する。
パブリックパーティション２４０はユーザから見え、ホスト装置１００により検出できるセキュアメモリ装置１４５のメモリパーティションである。セキュアメモリ装置１４５は１つ以上のパブリックパーティションを有する。パブリックパーティション２４０はユーザやホスト装置１００に開放されるパブリックコンテンツを含むことができる。パブリックパーティション２４０は、コンテンツ暗号鍵（ＣＥＫ）を使って暗号化される保護対象コンテンツも含むことができる。コンテンツに関連した情報を含むコンテンツヘッダに格納されたドメイン情報を使ってＣＥＫを生成することができる。パブリックコンテンツを暗号化せずに格納することもできる。
【００４０】
セキュアパーティション２５０はユーザから見えず、ホスト装置により検出されない、セキュアメモリ装置１４５の隠れメモリパーティションである。セキュアメモリ装置１４５は１つ以上のセキュアパーティションを有することができる。セキュアパーティション２５０は、ユーザやホスト装置１００に開放されない保護対象コンテンツを含むことができる。保護対象コンテンツをＣＥＫを使って暗号化することができる。セキュアパーティション２５０に格納されたコンテンツはコンテンツにアクセスするための適切なパーミッションを有する認証済みアプリケーションによりアクセスできる。ＣＥＫに関する情報やコンテンツに関連するパーミッションは、コンテンツ関連の情報が入るコンテンツヘッダに格納される。一実施形態では、システムパーティション４００のパブリックパーティション２４０とセキュアパーティション２５０は、１つのコントローラと１つ以上のフラッシュメモリアレイを含むフラッシュメモリ装置に格納される。
【００４１】
セキュアパーティション２５０はユーザやホスト装置によって検出されない隠れパーティションであるため、セキュアパーティション２５０は、ホスト装置１００でセキュアメモリ装置１４５を操作するためのソフトウェアを、権限オブジェクトやアプリケーション資格証明等とともに含むことができる。
周辺装置暗号エンジン１６０は、セキュアメモリ装置１４５の中でＣＥＫやセッション鍵を使ってコンテンツを暗号化し、復号化するために使用される。メモリ装置暗号エンジン１６０は、乱数生成部と対称暗号法（ＡＥＳ、ＤＥＳ、３ＤＥＳ等）、暗号ハッシュ関数（ＳＨＡ−１等）、非対象暗号法（ＰＫＩ、鍵ペア生成等）もしくはその他のどのような暗号法をもサポートし得る暗号処理部とを含む。
【００４２】
図１０は、ファームウェアモジュール２１０の一実施形態の詳細を示すものである。ファームウェアモジュール２１０は周辺装置インターフェイスモジュール１４４と、フラッシュメモリ管理部３１０と、保護対象コンテンツアクセス管理部３２０と、暗号エンジンライブラリ２３５と、ＤＲＭ（デジタル著作権管理）モジュール３１５とを含む。周辺装置インターフェイスモジュール１４４は、ホスト装置の物理インターフェイス１４２を介してセキュアメモリ装置１４５をホスト装置１００に連係させるためのハードウェアおよびソフトウェアを含む。周辺装置のインターフェイスモジュール１４４のハードウェアコンポーネントは、ユニバーサルシリアルバス（ＵＳＢ）、セキュアデジタル（ＳＤ）インターフェイス、コンパクトフラッシュ（ＣＦ）インターフェイス等のあらゆるインターフェイスのためのコンポーネントを含むことができる。フラッシュメモリ管理部３１０は、ＣＰＵ２２０がパブリックパーティション２４０で保護対象外コンテンツのアクセスや格納を行ったり、ＤＲＭモジュール３１５を使用してパーミッションに基づいてコンテンツのアクセスや格納を行ったりするためのソフトウェアを含む。保護対象コンテンツアクセス管理部３２０は、ＣＰＵ２２０がパーミッションを用いて保護対象コンテンツのアクセスや格納を行ったり、ＤＲＭモジュール３１５を使用してパーミッションに基づいてコンテンツのアクセスや格納を行ったりするためのソフトウェアを含む。保護対象コンテンツアクセス管理部３２０は、セッション鍵かＣＥＫを用いてコンテンツを暗号化するにあたって必要な情報が入っている暗号エンジンライブラリ２３５を使用することもできる。フラッシュメモリ管理部３１０と保護対象コンテンツアクセス管理部３２０はいずれも、ホスト装置上の装置ドライバ１４０を通じてコンテンツのアクセスや格納を行う。
【００４３】
保護の必要がない場合は、フラッシュメモリ管理部３１０がＣＰＵ２２０を使用してセキュアメモリ装置１４５にある保護対象外コンテンツのアクセスならびに格納を制御する。保護対象外コンテンツを保存する要求をホスト装置１００から装置ドライバ１４０を通じて受信すると、フラッシュメモリ管理部３１０はホストファイルシステム１３０に従って該当する位置にコンテンツを保存する。保護対象外コンテンツにアクセスする要求をホスト装置ファイルシステム１３０から装置ドライバ１４０を通じて受信すると、フラッシュメモリ管理部３１０は、ホストファイルシステム１３０を用いて該当する位置からコンテンツにアクセスする。フラッシュメモリ管理部３１０はまた、アプリケーション１０５がセキュアメモリ装置１４５にある保護対象コンテンツにアクセスを試みる場合に、保護対象コンテンツアクセス管理部３２０へのアクセスを提供する。
【００４４】
保護が必要な場合は、保護対象コンテンツアクセス管理部３２０がＣＰＵ２２０を使用してセキュアメモリ装置１４５にある保護対象コンテンツのアクセスならびに格納を制御する。保護対象コンテンツアクセス管理部３２０は、保護対象コンテンツに係るパーミッションをＤＲＭモジュール３１５に格納するか、または保護対象コンテンツに係るパーミッションをＤＲＭモジュール３１５から取得する。保護対象コンテンツアクセス管理部３２０は、保護対象コンテンツのアクセスまたは格納にあたって図７に見られるセキュアファイルシステム１３５を使用する。例えば、保護対象コンテンツを保存する要求がホスト装置から装置ドライバ１４０を通じて受信され、セキュアチャネル１５５を通じてコンテンツを送信する場合には、周辺装置用ＳＤＫセキュリティレイヤ１２５がＳＤＫ暗号ライブラリ１６８を使って保護対象コンテンツを暗号化する。この暗号化にはコンテンツに割り振られたセッション鍵を使用する。次いで、暗号化されたコンテンツはセキュアチャネル１５５を通じてセキュアメモリ装置１４５へ送信され、セキュアメモリ装置１４５でセッション鍵と暗号エンジンライブラリ２３５にある適切な暗号法によりコンテンツを復号化する。次いで、復号化されたコンテンツは、周辺装置暗号エンジン１６０によってコンテンツ用のＣＥＫを使用して暗号化される。ＣＥＫを使って暗号化されたコンテンツは、セキュアファイルシステム１３５に従い適切な位置に保存される。
【００４５】
オープンチャネルを通じて保護対象コンテンツを送信する場合でも同様のコンテンツ転送法が実施されるが、セキュアチャネル１５５向けのセッション鍵の暗号化はない。保護対象コンテンツにアクセスする要求がホスト装置１００から装置ドライバ１４０を通じて受信されると、保護対象コンテンツアクセス管理部３２０がセキュアファイルシステム１３５を用いて該当する位置からコンテンツにアクセスし、オープンチャネル１５０を通じてホスト装置１００上のホスト記憶管理部１１０にコンテンツを提供する。保護対象コンテンツアクセス管理部３２０によって適切なパーミッションを確認すると、保護対象コンテンツアクセス管理部３２０は、フラッシュメモリ管理部３１０を通じてコンテンツのアクセスや格納を行う。
保護対象コンテンツアクセス管理部３２０はＤＲＭモジュール３１５を使用して、著作権許可等のコンテンツに係るパーミッションに基づいてコンテンツへのアクセスを提供する。ＤＲＭモジュール３１５はＯＭＡ、ＤＲＭ、ＭＳ  ＤＲＭ等の何らかのＤＲＭ技術をサポートすることができる。
【００４６】
暗号エンジンライブラリ２３５には、セキュアメモリ装置１４５の中でＣＥＫかセッション鍵を使ってコンテンツを暗号化するための暗号法が入っている。セキュアメモリ装置１４５でコンテンツが暗号化されるかもしくは復号化される場合には、保護対象コンテンツアクセス管理部３２０が暗号エンジンライブラリ２３５にある適切な暗号法にアクセスする。ＡＥＳ、ＤＥＳ、３ＤＥＳ、ＳＨＡ−１、ＰＫＩ、鍵ペア生成等、暗号法は何らかの既知方式であることができる。
【００４７】
図１１は、セキュアメモリ装置１４５のシステムパーティション４００の一例を示すものである。このシステムパーティション４００はセキュアメモリ装置１４５にある全メモリパーティションを含む。つまり、システムパーティション４００は、図９に示すパブリックパーティション２４０とセキュアパーティション２５０で作成される。セキュアメモリ装置１４５はいくつかのパブリックパーティションまたはセキュアパーティションを有する。既に述べたように、パブリックパーティションは検出可能で、ユーザやホスト装置にアクセス可能に開放される。パブリックパーティションに格納された保護対象外コンテンツには認証なしでアクセスできる。しかし、パブリックパーティションに格納された保護対象コンテンツは、認証に成功した後でなければアクセスできない。セキュアパーティションは、ユーザやホスト装置にとって検出不能の隠しパーティションである。セキュアパーティションにあるコンテンツを開こうとするアプリケーションは、事前に認証を受けなければならない。
【００４８】
セキュアメモリ装置１４５に保護対象コンテンツを保存する場合、保護対象コンテンツアクセス管理部３２０がコンテンツのパーミッションに従いコンテンツを整理する。次いで、フラッシュメモリ管理部３１０によってコンテンツが格納される。パブリックパーティションとセキュアパーティションは同じＣＥＫを有する保護対象コンテンツを含むドメインまたは論理グループを有する。それぞれのドメインまたは論理グループには、コンテンツを復号化し、コンテンツを暗号化するためのＣＥＫが１つずつある。１ドメインまたは１グループのコンテンツを開くパーミッションを持つアプリケーションは、同一ドメインまたはグループに格納された別のコンテンツも開くことができる。
【００４９】
図１１のパブリックパーティションＰ０  ４１０には、ドメイン１とドメイン２という２つの論理グループがある。ドメイン１に格納されたすべてのコンテンツの暗号化と復号化には１つのＣＥＫが使われる。ドメイン２に格納されたすべてのコンテンツの暗号化と復号化には別のＣＥＫが使われる。これらのグループへのアクセスを試みるソフトウェアエンティティには、コンテンツの読み取りに先立ち認証が必要である。パブリックパーティションＰ０は開放され隠されていないため、グループ内の保護対象コンテンツは見ることができ、アクセスされる可能性もあるが、適切なＣＥＫを使用して正常に復号化されない限り読み取ることはできない。つまり、グループ内のコンテンツが権限のないユーザによって壊される可能性があるが、コンテンツを読み取ることはできない。
【００５０】
パブリックパーティションＰ０  ４１０のファイルＡ４４０はグループの中に含まれていないため、割り振られたＣＥＫは有していない。したがって、ファイルＡ４４０はどのユーザでもアクセスし、読み取ることができる。
セキュアパーティションＰ１  ４２０はファイルＥとファイルＦを含む。ファイルＥとファイルＦはセキュアパーティションの中で保護される必要のあるファイルであることができる。例えば、ファイルＥおよびファイルＦは、ＳＤＫによって、コンテンツライセンスや内部管理データといったセキュア情報を格納するのに使用される。しかし、セキュアパーティションＰ１  ４２０の内容はこのようなファイルだけに限定されない。セキュアパーティションＰ１  ４２０はどんなセキュアファイルでも格納することができる。
セキュアパーティションＰ２  ４３０のドメイン３  ４９０にはファイルＧとファイルＨが両方ある。ドメイン３には、コンテンツを暗号化し復号化するためのＣＥＫが割り振られている。例えば、あるアプリケーションがドメイン３のファイルＧにアクセスを試みるときに、アプリケーションは事前に認証を受けなければならない。認証を受けると、アプリケーションはドメイン３のＣＥＫを使ってファイルＧにアクセスできるほか、ドメイン３のファイルＨにもアクセスできる。
セキュアパーティションＰ３  ４５０は空のパーティションであり、保護対象コンテンツの格納に使うことができる。
【００５１】
図１２は、周辺装置用ＳＤＫ３３０のアプリケーション用ＡＰＩ２６０の一例を示すものである。アプリケーション用ＡＰＩ２６０は、標準およびセキュアストレージＡＰＩ３４０と、認証ＡＰＩ３５０と、コンフィグレーションＡＰＩ３６０と、ＤＲＭ  ＡＰＩ３７０を含むほか、ユーザがホスト装置１００上でセキュアメモリ装置１４５を操作するにあたって必要となるカスタムＡＰＩ３８０を含む。種々のＡＰＩのそれぞれは、アプリケーションやアプリケーションランチャ等、ソフトウェアエンティティに専用のものであることができる。一実施形態において、各アプリケーションのＡＰＩがドメイン等の論理グループとして格納される。例えば、ＡＰＰ１用ＡＰＩ２６２は、他のアプリケーション用ＡＰＩとは別のグループに格納される。一実施形態において、それぞれのグループに１アプリケーションのＡＰＩが１種類ずつ入る。例えば、ＡＰＰ１用のストレージＡＰＩを１つのグループとみなすことができる。
【００５２】
ＡＰＰ１用ＡＰＩ２６２は、ＡＰＩグループのうちのアプリケーション１専用のＡＰＩサブグループを示す。ＳＤＫは、アプリケーション１が首尾よく認証された場合には、ＡＰＰ１用ＡＰＩ２６２にアクセスできるように構成されている（図２、ステップ１９０参照）。ＡＰＰ１用ＡＰＩ２６２は、一実施形態において、ＳＤＫコードセットのうちの１つ以上のアプリケーションによってコールされるサブセットである。別の実施形態では、アプリケーション１だけがＡＰＰ１用ＡＰＩ２６２をコールする。ＡＰＰ１用ＡＰＩ２６２はセキュアストレージＡＰＩと、コンフィグレーションＡＰＩと、ＤＲＭ  ＡＰＩと、カスタムＡＰＩとを含む。ただし、ＡＰＰ１用ＡＰＩ２６２はこれらのＡＰＩだけに限定されない。
【００５３】
標準およびセキュアストレージＡＰＩ３４０は、アプリケーションまたはアプリケーションランチャ１０５が、セキュアメモリ装置１４５でコンテンツを取得し、格納するにあたって、あるいはセキュアセッションを確立するにあたって、もしくはセキュアメモリ装置１４５でのコンテンツのアクセスや格納をともなうその他の操作を実行するにあたって、必要なＡＰＩが含まれる。例えば、標準／セキュアストレージＡＰＩ３４０は、アプリケーション１０５がアクセス要求のあるコンテンツのパス位置をホストファイルシステム１３０かセキュアファイルシステム１３５へ送るためのＡＰＩであることができる。アプリケーション１０５は、パブリックコンテンツにアクセスするときには標準およびセキュアＡＰＩ３４０グループの標準ＡＰＩをコールすることができる。アプリケーション１が周辺装置用ＳＤＫセキュリティレイヤ１２５によって認証された後では、図７に見られるセキュア周辺装置用ＡＰＩ１２０等のＡＰＰ１用ＡＰＩ２６２グループのセキュアＡＰＩをコールすることができる。
【００５４】
認証ＡＰＩ３５０はアプリケーション１０５を認証するためのＡＰＩであって、認証ＡＰＩ３５０にアクセスするための認証プロセスの要求なしに全てのアプリケーションに開放されている。認証ＡＰＩ３５０はアプリケーション１０５によってコールされる。アプリケーション１０５によって認証ＡＰＩ３５０がコールされると、アプリケーション１０５は、認証ＡＰＩ３５０を使用して周辺装置用ＳＤＫセキュリティレイヤ１２５へ資格証明を送信することができる。周辺装置用ＳＤＫセキュリティレイヤ１２５は、アプリケーション１０５が認証ＡＰＩ３５０を使って送信した資格証明が有効であるか否かをベリファイする。この資格証明は、チャレンジ／レスポンス認証アルゴリズムに対する応答、ＰＫＩ証明書、ＰＩＮ、鍵、パスワード等のソフトウェアエンティティの認証に用いる資格証明のいずれのタイプでもあることができる。チャレンジ／レスポンス認証アルゴリズムの場合は、認証ＡＰＩ３５０を使用してアプリケーション１０５へチャレンジを送ることができる。次いで、同じ認証ＡＰＩ３５０を使用してアプリケーション１０５から周辺装置用ＳＤＫセキュリティレイヤ１２５へのチャレンジに対する応答を送信することができる。
【００５５】
コンフィグレーションＡＰＩ３６０は、アプリケーション１０５がセキュアメモリ装置１４５を構成するかまたはセキュアメモリ装置１４５の構成情報を取得するためのＡＰＩである。アプリケーション１０５がそのことを行うための適切な権限を持っている場合に限り行うことができる。例えば、セキュアメモリ装置１４５で使用済みのメモリ空間と空いているメモリ空間に関する情報を入手するか、またはアプリケーション１０５が首尾よく認証された後で新たなセキュアパーティションを作成するときには、アプリケーション１０５によってコンフィグレーションＡＰＩ３６０をコールすることができる。
コンテンツに係るパーミッションやデジタル著作権にアクセスするには、アプリケーション１０５がＤＲＭ  ＡＰＩ３７０をコールし、権限が有効である場合にはコンテンツにアクセスできる。権限の検証は、セキュアメモリ装置１４５のファームウェアモジュール２１０にあるＤＲＭモジュール３１５で行われる。ＡＰＰ１用ＡＰＩ２６２サブグループに見られるように、ＤＲＭ  ＡＰＩ３７０は、一実施形態において、特定のアプリケーション１０５に専用のＤＲＭ  ＡＰＩであることができる。
カスタムＡＰＩ３８０は、ユーザがホスト装置１００上でセキュアメモリ装置１４５を操作するにあたって必要とする付加的ＡＰＩであることができる。ＡＰＰ１用ＡＰＩ２６２サブグループに見られるように、カスタムＡＰＩ３８０は特定のアプリケーション１０５に専用のカスタムＡＰＩとなることができる。
【００５６】
図１３のフローチャートは、ホスト装置に周辺装置用ＳＤＫが正常にインストールされた後でホスト装置をセキュア周辺装置とともに操作する一例を説明するものである（図４のステップ１８０）。より具体的に、図１３は、ユーザがホスト装置上のアプリケーションを通じて送信するセキュア周辺装置がらみのタスク要求がどのように実行されるかを説明しているプロセスである。例えば、タスク要求はセキュア周辺装置でコンテンツをアクセスするかあるいは格納する要求であることができ、ファイル（音楽、アプリケーション等）をアクセス、格納したり、セキュア周辺装置関連の情報（空きメモリ容量等）にアクセスしたり、セキュアメモリ装置の構成内容を変更したり、ＤＲＭ情報（デジタル著作権オブジェクト等）にアクセスする。ユーザはホスト装置上のアプリケーションを通じてタスクを要求することができる。以降の例では、セキュア周辺装置としてセキュアメモリ装置を使用する。しかし、セキュア周辺装置の用途や構成はこの例に限定されない点に留意するべきである。
【００５７】
図１３のステップ５０５ではユーザがホスト装置１００上でアプリケーション１０５にタスク要求を送る。このタスク要求はアプリケーション１０５から周辺装置用ＳＤＫセキュリティレイヤ１２５にて受信される（ステップ５０５）。
ステップ５１５では周辺装置用ＳＤＫセキュリティレイヤ１２５がアプリケーション１０５の登録プロセスを実行する。登録プロセスとはアプリケーション１０５を認証し、認証に成功した場合には内部登録表２８５（図７に示す）にアプリケーション１０５を登録するプロセスである。登録に成功すると周辺装置用ＳＤＫがアプリケーション１０５に標識を送る。この標識は、登録されたアプリケーション１０５の専用ＡＰＩが提示されることを伝える。周辺装置用ＳＤＫセキュリティレイヤ１２５はまた、アプリケーション１０５にアプリケーションハンドラを送る。このアプリケーションハンドラは追加的なセキュリティ措置として役立てられる。アプリケーション１０５は提示されたＡＰＩを使って周辺装置１４５と通信するたびに、ＡＰＩを通じて周辺装置にアプリケーションハンドラを送信しなければならない。登録プロセスの詳細については図１４で説明する。
【００５８】
ステップ５１５の登録プロセスに成功すると、アプリケーション１０５は、登録プロセスのときに提示された１つ以上のＡＰＩを通じて周辺装置用ＳＤＫ３３０へタスク要求を送信する（ステップ５２０）。タスク要求は、登録プロセスのときにアプリケーション１０５に付与されたアプリケーションハンドラと併せて送信しなければならない。
ステップ５２５では、周辺装置用ＳＤＫ３３０が提示されたアプリケーション１０５専用ＡＰＩサブグループを使ってタスク要求を実行する。図１８では、セキュアメモリ装置で保護対象コンテンツを格納する場合に実行される当該ステップの一例を説明する。図１９では、セキュアメモリ装置に格納された保護対象コンテンツにアクセスする場合に実行される当該ステップの一例を説明する。
ステップ５２５でタスク要求が完了すると、周辺装置用ＳＤＫセキュリティレイヤ１２５はステップ５３０で内部登録表２８５からアプリケーション１０５の登録を解除する。このステップがどのように実行されるかは図２０に関連して詳しく説明する。
【００５９】
図１４のフローチャートは、保護対象コンテンツが係るタスクで実行される登録プロセス（図１３のステップ５１５）の一例を示すものである。ユーザがアプリケーション１０５にタスク要求を送った後では、ステップ７００でアプリケーション１０５が認証方式オプションのリストから認証方式を選択する。この認証方式オプションのリストは、周辺装置用ＳＤＫセキュリティレイヤ１２５から認証ＡＰＩを通じてアプリケーション１０５に提供される。かかるリストを提供するＡＰＩは、例えば次のとおりに定義できる。
ｖｏｉｄ  ＬｉｓｔＡｕｔｈｅｎＭｅｔｈｏｄ（ｃｈａｒ＊ＡｐｐＩＤ，
ｃｈａｒ＊ＡｕｔｈＬｉｓｔ）
【００６０】
このＬｉｓｔＡｕｔｈｅｎＭｅｔｈｏｄ  ＡＰＩは、周辺装置用ＳＤＫセキュリティレイヤ１２５にアプリケーション１０５のアプリケーションＩＤ（ｃｈａｒ＊ＡｐｐＩＤ）を提供する。アプリケーションＩＤは、アプリケーション１０５に割り振られる一意な識別子である。周辺装置用ＳＤＫセキュリティレイヤ１２５は、周辺装置ＳＤＫセキュリティレイヤ１２５によってサポートされる認証方式のリスト（ｃｈａｒ＊ＡｕｔｈＬｉｓｔ）を返す。アプリケーション１０５は、周辺装置用ＳＤＫセキュリティレイヤ１２５から提供されるリストで使用する認証方式を選択する。アプリケーションには使用するべき認証方式がプログラムされている。
【００６１】
アプリケーション１０５はステップ７０５で選択した認証方式に該当する資格証明を入手し、選択した認証方式を実行する。例えば、選択した認証方式がＰＫＩに基づくものなら、アプリケーション１０５はそれ自身の資格証明としてＰＫＩ証明書を取得し、当該認証方式を実行する。選択した認証方式がチャレンジ／レスポンス認証方式なら、アプリケーション１０５は認証ＡＰＩ３５０とともにメモリ装置用ＳＤＫ３３０に格納されたチャレンジ／レスポンスＡＰＩをコールすることによって認証方式を実行する。アプリケーション１０５はチャレンジ／レスポンスＡＰＩを使って周辺装置用ＳＤＫセキュリティレイヤ１２５からチャレンジを受信する。このチャレンジは、ホスト装置暗号エンジン１８５かメモリ装置暗号エンジン１６０によって生成される乱数である。アプリケーション１０５はそれ自身の資格証明としてチャレンジに対する応答を計算する。種々の認証方式の詳細については、図１５Ａ〜１５Ｃに関連して説明する。
ステップ７１０ではアプリケーション１０５が登録ＡＰＩをコールし、周辺装置用ＳＤＫセキュリティレイヤ１２５へ登録情報を送信する。アプリケーションを登録するためのＡＰＩは、例えば次のとおりに定義できる。
ｕｃｈａｒ  ＲｅｇｉｓｔｅｒＡｐｐｌｉｃａｔｉｏｎ（ｃｈａｒ＊ＡｐｐＩＤ，
ｃｈａｒ＊ＡｕｔｈＭｅｔｈｏｄ，  ｕｃｈａｒ＊ｃｒｅｄｅｎｔｉａｌ，
ｕｃｈａｒ  ｃｒｅｄｅｎｔｉａｌＬｅｎ）
【００６２】
このＲｅｇｉｓｔｅｒＡｐｐｌｉｃａｔｉｏｎ  ＡＰＩは、アプリケーション１０５がそれ自身のアプリケーションＩＤ（ｃｈａｒ＊ＡｐｐＩＤ）と、選択した認証方式（ｃｈａｒ＊ＡｕｔｈＭｅｔｈｏｄ）と、資格証明（ｕｃｈａｒ＊ｃｒｅｄｅｎｔｉａｌ）と、ステップ７０５で取得した資格証明の長さ（ｕｃｈａｒ  ｃｒｅｄｅｎｔｉａｌＬｅｎ）を周辺装置用ＳＤＫセキュリティレイヤ１２５へ送信可能にするものであってもよい。認証方式によって異なる資格証明の長さの違いに対応するには、資格証明の長さを提供しなければならない。
周辺装置用ＳＤＫセキュリティレイヤ１２５はステップ７１５で資格証明が有効か否かをチェックする。資格証明が有効でなければ、周辺装置用ＳＤＫセキュリティレイヤ１２５がアプリケーション１０５へエラーを返す（ステップ７２０）。
【００６３】
資格証明が有効なら、ステップ７２２で周辺装置用ＳＤＫセキュリティレイヤ１２５がアプリケーション１０５のためにアプリケーションハンドラを生成する。このアプリケーションハンドラは、例えばＨＡＳＨ等の所定の暗号アルゴリズムを用いて生成される一意な乱数である。アプリケーションハンドラは、所定の暗号アルゴリズムに特定の値を入力することによって生成される。これらの特定の値は、アプリケーションＩＤ、アプリケーション１０５が登録された時間、アプリケーション１０５を登録しておける期間、登録状況等の、アプリケーション１０５および／またはアプリケーション１０５の登録情報に関連する値である。周辺装置用ＳＤＫ  ＡＰＩにはアプリケーションハンドラのための入力パラメータがある。一実施形態では、デフォルトのアプリケーションハンドラが生成され、全てのアプリケーションに開放されたＡＰＩに使用される。しかし、既に述べたように、認証ＡＰＩ３５０は全てのアプリケーションに開放され、認証のためにこれらのＡＰＩにアクセスする際にアプリケーションハンドラは必要ない。
【００６４】
アプリケーションハンドラが生成されたら、周辺装置用ＳＤＫセキュリティレイヤ１２５が内部登録表２８５にアプリケーション１０５を登録する（ステップ７２５）。内部登録表２８５は周辺装置用ＳＤＫセキュリティレイヤ１２５によって管理される。内部登録表２８５は、認証されたアプリケーションとアプリケーションランチャの情報を含む。アプリケーションハンドラ、認証済みアプリケーション１０５が内部登録表２８５に登録され続ける期間を示すタイムアウト期間（登録時間＋アプリケーションを登録しておける期間）、アプリケーション１０５からアクセスできるＡＰＩ等、周辺装置用ＳＤＫセキュリティレイヤ１２５は、首尾よく認証されたアプリケーションとアプリケーションランチャの情報を内部登録表２８５に記録する。内部登録表２８５は、認証されたアプリケーションとアプリケーションランチャの追跡に役立てられる。このため、認証済みのアプリケーションならびにアプリケーションランチャは、認証表に登録されている間は、タスク要求を受け取るたびに認証を繰り返さずにすむ。
【００６５】
周辺装置用ＳＤＫセキュリティレイヤ１２５は、ステップ７３０で内部登録表２８５にアプリケーション１０５が首尾よく登録されたか否かをチェックする。アプリケーション１０５が内部登録表２８５に首尾よく登録されないと、周辺装置用ＳＤＫセキュリティレイヤ１２５がアプリケーション１０５にエラーを返す（ステップ７３５）。
アプリケーション１０５が内部登録表２８５に首尾よく登録されると、周辺装置用ＳＤＫセキュリティレイヤ１２５は、ステップ７２２で生成したアプリケーションハンドラを、認証ＡＰＩを通じてアプリケーション１０５へ返す（ステップ７３８）。周辺装置用ＳＤＫセキュリティレイヤ１２５はまた、ｓｔａｕｓ＿ＯＫ等の登録に成功したことを伝える標識をアプリケーション１０５に返す（ステップ７４０）。ｓｔａｕｓ＿ＯＫ標識は、タスクの実行にあたって必要となるアプリケーション１０５専用ＡＰＩサブグループが提示され使用できることをアプリケーション１０５に知らせる。
【００６６】
周辺装置用ＳＤＫセキュリティレイヤ１２５は、ステップ７４５で、図１２に見られるサブグループ２６２等の周辺装置用ＳＤＫ３３０のＡＰＩサブグループをアプリケーション１０５に提示する。このＡＰＩサブグループによりアプリケーション１０５はセキュア周辺装置１４５と通信できるようになる。しかし、このコード部分へのアクセスは、アプリケーション１０５が認証後で有効なアプリケーションハンドラを提供する場合に限り許可される。このＡＰＩサブグループにより、アプリケーション１０５はアプリケーション１０５とセキュア周辺装置１４５との間に適切なリンクを確立し、タスク要求を実行することができる。
【００６７】
図１５Ａ〜１５Ｃは、周辺装置用ＳＤＫセキュリティレイヤ１２５によってサポートされる各種認証方式を実行するプロセスの例を示すものである（図１４のステップ７１０および７１５）。図１５Ａのフローチャートは、パスワード方式の認証を実行するプロセスの一例である。アプリケーション１０５には認証に使用するパスワードがプログラムされている。図１５Ａのステップ５３５では、アプリケーション１０５がプログラムされたパスワードにアクセスする。アプリケーション１０５は認証ＡＰＩを通じて周辺装置用ＳＤＫセキュリティレイヤ１２５へパスワードを送信する。周辺装置用ＳＤＫセキュリティレイヤ１２５はパスワードが有効か否かをチェックし（図１４のステップ７１５）、図１４のプロセスを継続する。
【００６８】
図１５Ｂのフローチャートは、チャレンジ／レスポンス方式の認証を実行する一例である。ステップ５４５では、アプリケーション１０５が周辺装置用ＳＤＫセキュリティレイヤ１２５から認証ＡＰＩを通じてチャレンジを受け取る。例えば、このＡＰＩはｖｏｉｄ  ＧｅｔＣｈａｌｌｅｎｇｅ（ｃｈａｒ＊ＡｐｐＩＤ，ｕｃｈａｒ＊ｃｈａｌｌｅｎｇｅ，  ｕｃｈａｒ＊ｃｈａｌｌｅｎｇｅＬｅｎ）の形をとることができる。ＧｅｔＣｈａｌｌｅｎｇｅ  ＡＰＩにより、アプリケーション１０５はそれ自身のアプリケーションＩＤ（ｃｈａｒ＊ＡｐｐＩＤ）を周辺装置用ＳＤＫセキュリティレイヤ１２５に提供する。周辺装置用ＳＤＫセキュリティレイヤ１２５はチャレンジ（ｕｃｈａｒ＊ｃｈａｌｌｅｎｇｅ）とチャレンジの長さ（ｕｃｈａｒ＊ｃｈａｌｌｅｎｇｅＬｅｎ）をアプリケーション１０５へ返す。
【００６９】
ステップ５５０では、アプリケーション１０５が受け取ったチャレンジを暗号関数に入力することによって応答を計算する。アプリケーション１０５には使用するべき暗号関数がプログラムされている。ステップ５５５では、アプリケーション１０５が計算した応答を周辺装置用ＳＤＫセキュリティレイヤ１２５へ送信する。周辺装置用ＳＤＫセキュリティレイヤ１２５も同じ暗号関数に同じチャレンジを使って応答を計算し（ステップ５６０）、計算した応答をアプリケーション１０５から受信した応答と比較する（ステップ５６５）。この比較ステップでは、資格証明（アプリケーション１０５からの応答）が有効であるか否かを周辺装置用ＳＤＫセキュリティレイヤ１２５がチェックする（図１４のステップ７１５）。この資格証明に基づいて図１４の登録プロセスを継続できる。
【００７０】
図１５Ｃのフローチャートは、アプリケーション１０５のＰＫＩ認証を実行する一例である。ステップ５７０ではアプリケーション１０５が周辺装置用ＳＤＫセキュリティレイヤ１２５へ証明を送信する。この証明は、資格証明の一部としてアプリケーション１０５とともに格納されている。アプリケーション１０５は認証ＡＰＩを通じてこの証明を提供するようにプログラムされている。
【００７１】
ステップ５７５では周辺装置用ＳＤＫセキュリティレイヤ１２５が証明をベリファイする。ステップ５８０では証明が有効なら、周辺装置用ＳＤＫセキュリティレイヤ１２５はアプリケーションによって送信（ステップ５７０）された証明から公開鍵を引き出し、これを用いて無作為に生成された数を暗号化する。この乱数はＳＤＫ暗号ライブラリ１６８を使って生成し、暗号化できる。次いで、周辺装置用ＳＤＫセキュリティレイヤ１２５からアプリケーション１０５へ暗号化された乱数が送信される（ステップ５８５）。
【００７２】
ステップ５９０では、アプリケーション１０５が周辺装置用ＳＤＫセキュリティレイヤ１２５から受信した暗号化乱数を復号化する。この復号化には、周辺装置用ＳＤＫセキュリティレイヤ１２５で使用された公開鍵に対応する秘密鍵を使用する。正規のアプリケーションは適切な秘密鍵を所持しているから、暗号化された乱数を復号化できる。ステップ５９５では、アプリケーション１０５が復号化した乱数をベリファイのために周辺装置用ＳＤＫセキュリティレイヤ１２５へ送信する（図１４のステップ７１５）。ここで図１４のプロセスを継続できる。
【００７３】
図１６のブロック図は、図１４の登録プロセスの一例である。アプリケーション１  １０７はまず、図１４のステップ７００で周辺装置用ＳＤＫセキュリティレイヤ１２５から提供されるリストで選択した認証方式を実行し（図１４のステップ７０５）、周辺装置用ＳＤＫ３３０の中にある周辺装置用ＳＤＫセキュリティレイヤ１２５へ登録情報を送信する（ステップ７１０）。周辺装置用ＳＤＫセキュリティレイヤ１２５は資格証明が有効と判断する場合に（ステップ７１５）、アプリケーション１のためのアプリケーションハンドラを生成し（ステップ７２２）、内部登録表２８５にアプリケーション１  １０７を登録し（ステップ７２５）、ＡＰＰ１用ＡＰＩサブグループ２６２を提示する（ステップ７４５）。
【００７４】
図１７は、いくつかの認証済みアプリケーションがセキュアメモリ装置１４５へのアクセスを要求する場合のソフトウェア層の一例を描いたものである。図２のステップ１９０で説明したように、アクセスできるＡＰＩは各アプリケーションにつきＳＤＫがどのように構成されたかによって異なる。例えば、アプリケーション１  １０７は、周辺装置用ＳＤＫセキュリティレイヤ１２５により首尾よく認証されて、内部登録表２８５に登録された後で、アプリケーション１用ＡＰＩサブグループ２６２にアクセスする。例えば、アプリケーション１  １０７はそのＡＰＩをコールし、セキュアメモリ装置１４５で保護対象コンテンツの格納やアクセスを安全に実行できるほか、セキュアメモリ装置１４５を構成することができる。ＡＰＰ１用ＡＰＩ２６２は、アプリケーション１がセキュアファイルシステム１３５と装置ドライバ１４０を通じて保護対象コンテンツに対して要求されたタスクを実行するためのインターフェイスとなる。アプリケーション１  １０７の場合は、ＡＰＰ１用の全ＡＰＩにアクセスできるようにＳＤＫが構成されている。
【００７５】
アプリケーション２とアプリケーション３は、周辺装置用ＳＤＫセキュリティレイヤ１２５により首尾よく認証され、内部登録表２８５に登録された別のアプリケーションの例である。アプリケーション２はセキュアストレージＡＰＩやＤＲＭ  ＡＰＩ等といったＡＰＰ２用ＡＰＩサブグループを使用し、セキュアファイルシステム１３５と装置ドライバ１４０を通じて保護対象コンテンツのアクセスや格納を実行できるほか、ＳＤＫのコンフィグレーションＡＰＩを使ってセキュアメモリ装置１４５を構成することもできる。しかし、アプリケーション２は、ＳＤＫの中にあるカスタムＡＰＩにはアクセスできない。図２のステップ１９０で説明したように、アプリケーション２がアクセスできるＡＰＩはＳＤＫの構成に依拠する。同様に、アプリケーション３はＡＰＰ３用ＡＰＩサブグループを使用し、セキュアファイルシステム１３５と装置ドライバ１４０を通じて保護対象コンテンツのアクセスや格納を実行できる。しかし、ＳＤＫは、図２のステップ１９０でコンフィグレーションＡＰＩと、ＤＲＭ  ＡＰＩと、カスタムＡＰＩとにアプリケーション３がアクセスするようには構成されていないため、アプリケーション３はこれらのＡＰＩにアクセスできない。
【００７６】
周辺装置としてセキュアメモリ装置を使用する例を継続し、図１８のフローチャートは、周辺装置用ＳＤＫ３３０がセキュアメモリ装置１４５で保護対象コンテンツを格納するタスクを実行する一例を説明するものである（図１３のステップ５２５）。図１３の登録プロセスが完了し、提示された１つ以上のＡＰＩを使ってタスク要求が送信されたら、ステップ９００で周辺装置用ＳＤＫ３３０は、セキュアメモリ装置１４５で保護対象コンテンツを格納する場所を特定するようにセキュアファイルシステム１３５に指示する。セキュアファイルシステム１３５の所望の格納位置を提供するため、アプリケーション１０５は、図１４のステップ７４５で提示されたＡＰＩサブグループのＡＰＩの１つをコールすることができる。
【００７７】
ステップ９０５では、周辺装置用ＳＤＫ３３０が、セキュアチャネル１５５を確立するためのセッション鍵等の保護対象コンテンツの格納位置に係るパーミッションにアクセスする。ステップ９１０では、周辺装置用ＳＤＫ３３０がステップ９０５でアクセスしたパーミッションをもとに保護対象コンテンツの転送にセキュアチャネルを使用するべきか否かを判断する。
セキュアチャネルを使用するべきでないと周辺装置用ＳＤＫ３３０が判断すると、ホスト装置１００上のホスト記憶管理部１１０からオープンチャネル１５０を通じてセキュアメモリ装置１４５へ保護対象コンテンツが転送される（ステップ９１５）。アプリケーション１０５は、図１４のステップ７４５で提示されたＡＰＩサブグループのＡＰＩの１つをコールすることによってこのコンテンツを転送する。保護対象コンテンツアクセス管理部３２０は格納位置のＣＥＫにアクセスし、このＣＥＫと暗号エンジンライブラリ２３５とを使ってコンテンツを暗号化するように周辺装置暗号エンジン１６０に指示する。次いで、保護対象コンテンツアクセス管理部３２０が暗号化された保護対象コンテンツを該当する格納位置に格納する（ステップ９２５）。
【００７８】
周辺装置用ＳＤＫ３３０は、ステップ９１０でセキュアチャネル１５５を使用するべきと判断した場合には、アプリケーション１０５から提示されたＡＰＩサブグループの１
ＡＰＩを通じてコンテンツを受信し、セッション鍵と該当する暗号法を使ってホスト装置１００内で保護対象コンテンツを暗号化するようにホスト装置暗号エンジン１８５に指示する（ステップ９３０）。ステップ９３５では、ホスト装置１００上のホスト記憶管理部１１０からセキュアチャネル１５５を通じてセキュアメモリ装置１４５へ暗号化されたコンテンツが転送される。次いで、周辺装置暗号エンジン１６０が暗号エンジンライブラリ２３５を使ってセキュアメモリ装置１４５にて転送された保護対象コンテンツを復号化する（ステップ９４０）。
保護対象コンテンツアクセス管理部３２０は、ステップ９２０で保護対象コンテンツが格納される格納位置のＣＥＫにアクセスし、このＣＥＫと暗号エンジンライブラリ２３５を使ってコンテンツを暗号化するように周辺装置暗号エンジン１６０に指示する。次いで、保護対象コンテンツアクセス管理部３２０が暗号化された保護対象コンテンツを該当する格納位置に格納する（ステップ９２５）。
【００７９】
図１９のフローチャートは、周辺装置用ＳＤＫセキュリティレイヤ１２５がセキュアメモリ装置１４５に格納された保護対象コンテンツにアクセスするタスクを実行する一例を説明するものである（図１３のステップ５２５）。図１３の登録プロセスが完了し、提示された１つ以上のＡＰＩを使ってタスク要求が送信されたら、ステップ８００で周辺装置用ＳＤＫセキュリティレイヤ１２５は、セキュアメモリ装置１４５の該当する位置で要求された保護対象コンテンツを見つけるようにセキュアファイルシステム１３５に指示する。セキュアファイルシステム１３５の所望の格納位置を提供するため、アプリケーション１０５は、図１４のステップ７４５で提示されたＡＰＩサブグループのＡＰＩの１つをコールすることができる。
【００８０】
保護対象コンテンツアクセス管理部３２０は、ＣＥＫやセッション鍵等の保護対象コンテンツの位置に係るパーミッションにアクセスする（ステップ８０５）。次いで、保護対象コンテンツアクセス管理部３２０はセキュアメモリ装置１４５の当該位置から保護対象コンテンツにアクセスし（ステップ８１０）、ＣＥＫと暗号エンジンライブラリ２３５を使ってコンテンツを復号化するように周辺装置暗号エンジン１６０に指示する（ステップ８１５）。
【００８１】
次いで、ステップ８２０では、保護対象コンテンツアクセス管理部３２０がホスト装置１００上のホスト記憶管理部１１０へのコンテンツ転送にあたってセキュアチャネルを使用するべきか否かを判断する。保護対象コンテンツアクセス管理部３２０は、ステップ８０５でアクセスしたセッション鍵がオープンチャネル１５０を使った保護対象コンテンツ転送を指示する場合に、オープンチャネル１５０を通じてホスト装置１００上のホスト記憶管理部１１０へコンテンツを転送する（ステップ８２５）。
【００８２】
ステップ８２０で、保護対象コンテンツアクセス管理部３２０は、ホスト装置１００上のホスト記憶管理部１１０への保護対象コンテンツの転送にあたってセキュアチャネル１５５を使用するべきことが判断された場合には、セキュアメモリ装置１４５でセッション鍵を使って保護対象コンテンツを暗号化するように周辺装置暗号エンジン１６０に指示する（ステップ８３０）。次いで、保護対象コンテンツアクセス管理部３２０は、セキュアチャネル１５５を通じてホスト装置１００上のホスト記憶管理部１１０へ暗号化された保護対象コンテンツを転送する（ステップ８３５）。転送された保護対象コンテンツは、ＳＤＫ暗号ライブラリ１６８により同じセッション鍵を使って復号化される（ステップ８４０）。
保護対象コンテンツが首尾よく転送され（ステップ８２５、ステップ８３５）、必要に応じ復号化されたら（ステップ８４０）、アプリケーション１０５は要求した保護対象コンテンツを受け取る（ステップ８５０）。アプリケーション１０５は、図１４のステップ７４５で提示されたＡＰＩサブグループの１  ＡＰＩを使って要求した保護対象コンテンツを受け取る。
【００８３】
図２０のフローチャートは、周辺装置用ＳＤＫセキュリティレイヤ１２５で内部登録表２８５からアプリケーション１０５の登録を解除する一例を説明するものである（図１３のステップ５３０）。周辺装置用ＳＤＫセキュリティレイヤ１２５は、ステップ９４５で、タスクが完了しているか否かをチェックする。周辺装置用ＳＤＫセキュリティレイヤ１２５はタスクが完了している場合には、登録表２８５からアプリケーション１０５に関連する情報を消去する（ステップ９７０）。次いで、周辺装置用ＳＤＫセキュリティレイヤ１２５は、内部登録表２８５からアプリケーション１０５の登録を解除する（ステップ９７５）。アプリケーション１０５の登録を解除するステップは、しかるべきＡＰＩをコールすることにより、例えばｕｃｈａｒ  ＵｎＲｅｇｉｓｔｅｒＡｐｐｌｉｃａｔｉｏｎ（ｃｈａｒ＊ＡｐｐＩＤ）をコールすることにより、実行できる。このＡＰＩは、内部登録表２８５から該当するアプリケーションＩＤを削除することによってアプリケーション１０５の登録を解除する。これで要求されたタスクを実行するプロセスは終了する（ステップ９８０）。
【００８４】
タスクがまだ完了していなければ、タスク要求が実行される一方で（ステップ５２５）、周辺装置用ＳＤＫセキュリティレイヤ１２５は、内部登録表２８５のタイムアウト期間にわたってアプリケーション１０５が登録されているか否かをチェックする（ステップ９５０）。このタイムアウト期間が過ぎている場合は、周辺装置用ＳＤＫセキュリティレイヤ１２５がアプリケーション１０５に関連する情報を登録表２８５から消去する（ステップ９５５）。次いで、周辺装置用ＳＤＫセキュリティレイヤ１２５がアプリケーション１０５の再認証を要求する（ステップ９６０）。アプリケーション１０５の再認証にあたっては図１４に類似する認証プロセスを使用できる。周辺装置用ＳＤＫセキュリティレイヤ１２５は再認証の成否を判断する（ステップ９６５）。再認証に成功した場合には、タスクの実行を継続する（ステップ５２５）。再認証に成功しなければ、周辺装置用ＳＤＫセキュリティレイヤ１２５はしかるべきＡＰＩをコールすることにより、例えばｕｃｈａｒ  ＵｎＲｅｇｉｓｔｅｒＡｐｐｌｉｃａｔｉｏｎ（ｃｈａｒ＊ＡｐｐＩＤ）をコールすることにより、内部登録表２８５からアプリケーション１０５の登録を解除する（ステップ９７５）。このＡＰＩは内部登録表２８５から該当するアプリケーションＩＤを削除することによってアプリケーション１０５の登録を解除する。これでタスクを実行するプロセスは終了する（ステップ９８０）。
周辺装置用ＳＤＫセキュリティレイヤ１２５は、ステップ９５０で、内部登録表２８５のタイムアウト期間が過ぎていないと判断した場合には、ステップ５２５で引き続きタスク要求を実行する。
【００８５】
前述した種々実施形態の詳細な説明は、網羅的であることあるいは本発明を開示されたとおりの形態に限定することを意図するものではない。前述した教示に鑑みれば数多くの修正ならびに変形が可能である。説明した実施形態は、本発明の原理と実際的な応用を十分に説明し、当業者が様々な実施形態で意図された用途に応じ様々な修正を加えながら本発明を十分に役立てるために選ばれたものである。したがって、前述した説明は、添付の特許請求の範囲に記載された本発明の範囲を制限することを意図するものではない。
【図１】
2011523481.tif 000003
【図２】
2011523481.tif 000004
【図３】
2011523481.tif 000005
【図４】
2011523481.tif 000006
【図５】
2011523481.tif 000007
【図６】
2011523481.tif 000008
【図７】
2011523481.tif 000009
【図８】
2011523481.tif 000010
【図９】
2011523481.tif 000011
【図１０】
2011523481.tif 000012
【図１１】
2011523481.tif 000013
【図１２】
2011523481.tif 000014
【図１３】
2011523481.tif 000015
【図１４】
2011523481.tif 000016
【図１５Ａ】
2011523481.tif 000017
【図１５Ｂ】
2011523481.tif 000018
【図１５Ｃ】
2011523481.tif 000019
【図１６】
2011523481.tif 000020
【図１７】
2011523481.tif 000021
【図１８】
2011523481.tif 000022
【図１９】
2011523481.tif 000023
【図２０】
2011523481.tif 000024
【手続補正書】
【提出日】平成23年3月15日(2011.3.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
周辺装置へのアクセスを提供する方法であって、
ホスト装置にて、
前記ホスト装置上で第１のソフトウェアエンティティを認証するか否かを判断するステップと、
前記第１のソフトウェアエンティティを認証すると判断したことに応答して、
前記ホスト装置上で前記周辺装置と通信するように使用される複数のコードセットのうちの、前記第１のソフトウェアエンティティにカスタマイズされている１コードセットにアクセスするステップと、
前記周辺装置と通信することを前記第１のソフトウェアエンティティに許可するために前記１コードセットの少なくとも一部を使用するステップと、
を実行するステップを含む方法。
【請求項２】
請求項１記載の方法において、
前記１コードセットは、前記周辺装置と通信する前記第１のソフトウェアエンティティに専用であり、
前記１コードセットは、装置ドライバコード、アプリケーションプログラミングインターフェイスコード、および認証コードを含み、
前記１コードセットの少なくとも一部は、前記アプリケーションプログラミングインターフェイスコードおよび前記認証コードのコードの一部分を含む方法。
【請求項３】
請求項１記載の方法において、
前記第１のソフトウェアエンティティを認証するか否かを判断するステップは、
前記第１のソフトウェアエンティティから資格証明を受信することと、
前記１コードセットによって実行される、前記資格証明をベリファイすることと、
を含む方法。
【請求項４】
請求項３記載の方法において、
前記第１のソフトウェアエンティティに対して１つ以上の認証オプションを提供するステップであって、前記提供するステップが前記１コードセットによって実行されるステップと、
前記１つ以上の認証オプションのいずれか１つを指示する応答を前記第１のソフトウェアエンティティから受信するステップと、をさらに含み、
前記ベリファイすることは、前記応答に基づいて前記資格証明をベリファイすることを含む方法。
【請求項５】
請求項１記載の方法において、
前記第１のソフトウェアエンティティを認証すると判断された場合には、暗号関数にて前記第１のソフトウェアエンティティに係る識別子を使用してソフトウェアエンティティハンドラを生成するステップをさらに含み、前記ソフトウェアエンティティハンドラが前記１コードセットへのアクセスを提供する方法。
【請求項６】
請求項５記載の方法において、
前記第１のソフトウェアエンティティを認証すると判断された場合には、前記１コードセットを使用して前記第１のソフトウェアエンティティを登録するステップをさらに含み、前記登録するステップが、認証済みソフトウェアエンティティの表に前記ソフトウェアエンティティハンドラを登録することを含む方法。
【請求項７】
請求項６記載の方法において、
前記登録するステップは、前記第１のソフトウェアエンティティに係るパーミッションを登録することを含み、前記パーミッションは、前記第１のソフトウェアエンティティがアクセスできる前記１コードセットの１つ以上の部分を指示する方法。
【請求項８】
請求項６記載の方法において、
前記表にて指示される所定の期間にわたって前記第１のソフトウェアエンティティが前記表に登録されている場合には、前記第１のソフトウェアエンティティを登録解除するステップをさらに含む方法。
【請求項９】
請求項６記載の方法において、
前記第１のソフトウェアエンティティからタスク要求を受信するステップと、
前記１コードセットの少なくとも一部を使用して前記タスク要求を実行するステップと、
前記タスク要求が実行された後で、前記１コードセットを使用して前記表から前記第１のソフトウェアエンティティを登録解除するステップと、
をさらに含む方法。
【請求項１０】
請求項１記載の方法において、
前記周辺装置は、フラッシュメモリ装置である方法。
【請求項１１】
請求項１記載の方法において、
前記周辺装置の１グループにてコンテンツを格納する要求を前記第１のソフトウェアエンティティから受信するステップと、
前記第１のソフトウェアエンティティを認証するか否かを判断するために、認証済みソフトウェアエンティティの表にアクセスするステップと、
前記第１のソフトウェアエンティティを認証すると判断された場合には、前記グループに係る暗号鍵にアクセスするステップと、
前記暗号鍵を使用して前記コンテンツを暗号化するステップと、
前記１コードセットの少なくとも一部を使用して前記グループにて前記コンテンツを格納するステップと、
をさらに含む方法。
【請求項１２】
請求項１記載の方法において、
前記周辺装置の１グループにてコンテンツにアクセスする要求を前記第１のソフトウェアエンティティから受信するステップと、
前記第１のソフトウェアエンティティを認証するか否かを判断するために、認証済みソフトウェアエンティティの表にアクセスするステップと、
前記第１のソフトウェアエンティティを認証すると判断された場合には、前記グループに係る暗号鍵にアクセスするステップと、
前記暗号鍵を使用して前記コンテンツを復号化するステップと、
前記１コードセットの少なくとも一部を使用して前記コンテンツにアクセスするステップと、
をさらに含む方法。
【請求項１３】
周辺装置と通信するホスト装置であって、
第１のソフトウェアエンティティと、
前記ホスト装置上で前記周辺装置と通信するように使用される、前記第１のソフトウェアエンティティにカスタマイズされている１コードセットと、
前記周辺装置に対するアクセスを制御するように適合された１つ以上のプロセッサであって、前記１つ以上のプロセッサが前記１コードセットを処理するように適合され、前記１つ以上のプロセッサが前記ホスト装置上の前記第１のソフトウェアエンティティからの資格証明をベリファイするように適合され、前記１つ以上のプロセッサが、前記資格証明が有効である場合には、前記第１のソフトウェアエンティティに対して前記１コードセットの少なくとも一部を提示するように適合され、前記１コードセットの少なくとも一部は前記第１のソフトウェアエンティティに前記周辺装置と通信することを許可するように使用される、１つ以上のプロセッサと、
を備えるホスト装置。
【請求項１４】
請求項１３記載のホスト装置において、
前記１つ以上のプロセッサは、前記第１のソフトウェアエンティティに１つ以上の認証オプションを提供し、
前記１つ以上のプロセッサは、前記１つ以上の認証オプションのいずれか１つを指示する応答を前記第１のソフトウェアエンティティから受信し、
前記１つ以上のプロセッサは、前記応答に基づいて前記資格証明をベリファイするホスト装置。
【請求項１５】
請求項１３記載のホスト装置において、
前記１つ以上のプロセッサは、前記資格証明が有効である場合には、暗号関数にて前記第１のソフトウェアエンティティに係る識別子を使用してソフトウェアエンティティハンドラを生成し、前記ソフトウェアエンティティハンドラが前記１コードセットへのアクセスを提供するホスト装置。
【請求項１６】
請求項１５記載のホスト装置において、
前記１つ以上のプロセッサは、前記資格証明が有効である場合には、認証済みソフトウェアエンティティの表に前記第１のソフトウェアエンティティを登録し、
前記１つ以上のプロセッサは、前記資格証明が有効である場合には、前記表に前記ソフトウェアエンティティハンドラを登録するホスト装置。
【請求項１７】
請求項１６記載のホスト装置において、
前記１つ以上のプロセッサは、前記１つ以上のプロセッサに前記１コードセットの少なくとも一部がプログラムされる場合には、前記第１のソフトウェアエンティティが前記表に登録されている間は、前記ソフトウェアエンティティハンドラを使用して前記周辺装置に係るタスクを実行することを前記第１のソフトウェアエンティティに許可するホスト装置。
【請求項１８】
請求項１６記載のホスト装置において、
前記１つ以上のプロセッサは、前記第１のソフトウェアエンティティに係るパーミッションを前記表に登録し、前記パーミッションは、前記第１のソフトウェアエンティティがアクセスできる前記１コードセットを指示するホスト装置。
【請求項１９】
請求項１６記載のホスト装置において、
前記１つ以上のプロセッサは、前記表にて指示される所定の期間にわたって前記第１のソフトウェアエンティティが前記表に登録されている場合には、前記第１のソフトウェアエンティティを登録解除するホスト装置。
【請求項２０】
請求項１６記載のホスト装置において、
前記１つ以上のプロセッサは、前記第１のソフトウェアエンティティからタスク要求を受信し、
前記１つ以上のプロセッサは、前記１つ以上のプロセッサに前記１コードセットの少なくとも一部がプログラムされる場合には、前記タスク要求を実行し、
前記１つ以上のプロセッサは、前記タスク要求が実行された後で、前記表から前記第１のソフトウェアエンティティを登録解除するホスト装置。
【請求項２１】
請求１３記載のホスト装置において、
前記周辺装置は、フラッシュメモリ装置であるホスト装置。
【請求項２２】
請求１３記載のホスト装置において、
前記１つ以上のプロセッサは、前記周辺装置の１グループにてコンテンツを格納する要求を受信し、前記要求が前記第１のソフトウェアエンティティから受信され、
前記１つ以上のプロセッサは、前記資格証明が有効である場合には、前記グループに係る暗号鍵にアクセスし、
前記周辺装置は、前記暗号鍵を使用して前記コンテンツを暗号化し、かつ前記グループにて前記コンテンツを格納する１つ以上の周辺装置プロセッサを含むホスト装置。
【請求項２３】
請求１３記載のホスト装置において、
前記１つ以上のプロセッサは、前記周辺装置の１グループにてコンテンツにアクセスする要求を受信し、前記要求が前記第１のソフトウェアエンティティから受信され、
前記１つ以上のプロセッサは、前記資格証明が有効である場合には、前記グループに係る暗号鍵にアクセスし、
前記周辺装置は、前記暗号鍵を使用して前記コンテンツを復号化する１つ以上の周辺装置プロセッサを含み、
前記１つ以上のプロセッサは、前記１つ以上のプロセッサに前記１コードセットの少なくとも一部がプログラムされる場合には、前記コンテンツにアクセスするホスト装置。
【国際調査報告】
2011523481.tif 000025
2011523481.tif 000026
2011523481.tif 000027