以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一符号を付し、その繰り返しの説明は省略する。図1〜図18は、本発明の実施の形態を説明するための図である。
本実施の形態では、端末とそれに接続または内蔵される記憶装置とを含むシステムの仕様として、記憶装置を用いてDRMの機能を実現するためのコマンドI/Fが定義されている。端末は、記憶装置にコマンドを発行して記憶装置で処理させることで、ライセンス情報処理機能を実現する。特に、記憶装置から端末へ転送するデータまたは情報として、DRMのシーケンスの状態(トランザクション状態)を管理するためのステータス情報を含ませている。また、複数のライセンス情報の転送を行うためのコマンドI/Fも定義している。端末は、記憶装置の有する前記第1〜第6のデータ処理部(後述する通常のデータ処理部とは異なる)に対応した処理機能(特に図11、図5、図8に示される)を用いることで、ライセンス情報管理機能を実現する。
図1は、本実施の形態におけるシステムの構成を表す図である。このシステムは、端末(情報処理端末装置)100と、その通信相手となる端末(情報処理端末装置)110とから構成される。以下便宜的に第1の端末100及び第2の端末110とも称する。本システムは、所定のDRMシステムに従うライセンス情報処理機能を備えるもので、そのための概念的なモジュールとして主にDRMエージェント(140)とDRMエンティティ(160)とを有する。各端末(100,110)で、これらモジュールが所定のハードウェア及びソフトウェアで実装される。この実装方式は限定されない。
ここで、第1の端末100と第2の端末110とは、概念的に同等な構成で同種類の装置であるものとする。すなわち第2の端末110は、第1の端末100と同様に、DRMエージェント及びDRMエンティティ等を有する構成である。第1の端末100と第2の端末110とは、ハードウェア実装構成が異なっていても構わない。このような端末(100,110)としては、サーバ装置、PC、HDD搭載型映像受像機、車載用情報通信端末、携帯電話、携帯動画再生装置等の各種装置が該当する。
端末100は、ネットワークI/F120、アプリケーション130、DRMエージェントモジュール(以下、DRMエージェントともいう)140、DRMエンティティモジュール(以下、DRMエンティティともいう)160、デコーダDRMエンティティモジュール(以下、デコーダDRMエンティティともいう)170、及びストレージ180を有して構成される。
ネットワークI/F120は、外部(例えばネットワーク)とのデータ入出力を行う。アプリケーション130は、ユーザまたは機器の操作に基づきネットワークI/F120とDRMエージェントモジュール140を操作する。DRMエージェントモジュール140は、通信制御モジュール142とエンティティ管理モジュール144を有し、DRMエンティティモジュール160の動作を制御する。DRMエンティティモジュール160は、MDU変換モジュール162とTRM(耐タンパ性)モジュール164を有し、ライセンス情報の管理を行う。TRMモジュール164内にライセンス情報が記憶される。デコーダDRMエンティティ170は、再生モジュール172を有し、またDRMエンティティモジュール160内のライセンス情報を用いてストレージ180内のコンテンツデータを操作する。ストレージ180は、例えば楽曲などのコンテンツデータなどを格納する。本実施の形態では、保護されるコンテンツデータが楽曲データであるものとし、再生モジュール172でこの楽曲データの再生を行うものとする。
各端末(100,110)には、記憶装置200が接続または内蔵される。本実施の形態では、端末100の記憶装置200は、TRMモジュール164とストレージ180に対応し、端末100に対し分離可能に接続される。
なお、端末(100,110)間で交換される情報が当該端末の入出力部(ネットワークI/F120を含む)で等価であるならば、当該端末間に1つ以上の他の端末等の装置が挿入されても構わない。すなわち当該端末間の仲介や中継などのための端末(中間端末)などが介在してもよい。ここで前記他の端末とは、データ形式を変換するパーサーや、通信網を切り替える基地局又はアクセスポイント、通信路を切り替えるルーター、通信を管理するサーバ等が該当する。前記情報が入出力部で等価であることの意味するところは、テキストデータ及びバイナリデータなどの情報の記述形式に関係なく情報が所定の方式に従って変換可能であり、その結果、情報の種類、情報のデータサイズ、情報本体が不足なく伝達されることである。従って前記中間端末がIPアドレス変換またはデータ暗号化、スクランブル等の操作を行う場合でも、当該端末間の情報が等価に受け渡し可能であるならば、前記中間端末などの存在は問題にならない。
ネットワークI/F120は、LAN、無線LAN、インターネットなどに限らず、USBやIEEE1394、BlueTooth、IDE等の、PCやその周辺機器とデバイスを接続するためのI/Fであってもよい。
アプリケーション130は、ライセンス情報の購入やライセンス情報を用いたコンテンツの利用、ライセンス情報の他の端末への移動などを行うモジュールである。アプリケーション130上で、ライセンス情報の処理に係わるサービスが実行される。アプリケーション130は、単独のソフトウェアとしてのみではなく、機能毎の複数のソフトウェアの組み合わせとして実現されていてもよい。またアプリケーション130は、他の端末(110)との通信を保護するために、当該他の端末(110)上のアプリケーション(130)との間で共通の情報(認証のための公開鍵やセッション鍵などの情報)を保持し、この共通の情報を用いて端末(100,110)間で交換される情報を暗号化してもよい。
DRMエージェントモジュール140は、アプリケーション130の一部として実現されていてもよいし、別のモジュールとして実現されてもよい。別のモジュールとして実現されている場合、サービス毎に用意されたDRMエージェントモジュール140をアプリケーション130が切り替えて利用できるようになるため、相互運用性が向上するという効果がある。
また通信制御モジュール142は、データ変換機能と、接続機能と、アプリケーション130からDRMエンティティモジュール160の操作を制御する機能とを有する。前記データ変換機能は、第2の端末110から送信されたデータをDRMエンティティモジュール160が解釈可能な形式に変換し、DRMエンティティモジュール160から受信したデータを第2の端末110が解釈可能な形式に変換する機能である。前記接続機能は、第2の端末110とDRMエンティティモジュール160との間の接続と、DRMエンティティモジュール160とデコーダDRMエンティティモジュール170との間の接続と、デコーダDRMエンティティモジュール170と第2の端末110との間の接続の機能である。
またエンティティ管理モジュール144は、保護されたコンテンツを、コンテンツ識別情報、楽曲名、再生時間、ビットレート等のコンテンツ関連情報と共にストレージ180に格納する機能や、前記コンテンツ識別情報を用いてストレージ180より前記コンテンツの読み出しを行う機能などを持つ。
デコーダDRMエンティティモジュール170は、保護されたコンテンツである楽曲データを再生するためのモジュールであり、再生モジュール172を用いてDRMエンティティモジュール160内のTRMモジュール164からライセンス情報を読み出し、その情報を用いてストレージ180内の保護されたコンテンツ(楽曲データ)を利用可能な状態とする機能を持つ。
ここで前記保護されたコンテンツを利用可能な状態にする操作とは、コンテンツが暗号化されている場合には、ライセンス情報に含まれる暗号鍵(秘密鍵)によりコンテンツを復号し、デコーダDRMエンティティ170が有するMPEG、MP3、JPEG、ZIP、またはドキュメント等の処理可能なコンテンツ形式に変換する操作に相当する。なおここでMPEGはMoving Picture Expert Groupの略であり、MP3はMPEG Audio Layer 3の略であり、JPEGはJoint Photographic Expert Groupの略であり、それぞれISO/IEC JTC1 SC29で規格化された標準符号化形式である。またZIPはファイル圧縮形式の1つである。
デコーダDRMエンティティ170は、耐タンパ性(Tamper Resistant)を向上させるためにソフトウェアよりも解析が困難なハードウェアで実装してもよく、端末100に接続された他の端末などの装置内に実装されていてもよい。ここで前記他の端末とは、スピーカーやヘッドフォン、アンプ、テレビジョン等が該当する。またデコーダDRMエンティティ170が他のDRMシステムのライセンス情報を転送する場合、デコーダDRMエンティティ170はDRM変換モジュールを有していてもよい。
DRMエンティティモジュール160(特にTRMモジュール164)は、端末内のフラッシュメモリやEEPROM、HDD等の不揮発記憶領域とソフトウェアの組み合わせにより実現されてもよいが、この組み合わせに相当する機能を持つ外部装置であってもよい。このような外部装置としては、X-Mobile Card(X-Mobile Cardは株式会社ルネサステクノロジの製品である),SDメモリカード(SDはSecure Digitalの略である),メモリスティック(メモリスティックは株式会社ソニーの登録商標である),セキュリティ機能付きUSBメモリ,セキュリティ機能付きHDD,ICカード等が該当する。
ただし、DRMエンティティモジュール160のうちMDU変換モジュール162は、機器(記憶装置200)毎の入出力形式(I/F)にあわせてDRMエージェントモジュール140(特に通信制御モジュール142)からの入力データをTRMモジュール164が解釈可能な形式に変換し、またTRMモジュール164からの出力データをDRMエージェントモジュール140(特に通信制御モジュール142)が解釈可能な形式に変換する機能を有する。MDU変換モジュール162は、DRMエンティティモジュール160が外部装置として構成される場合に、端末内に存在していてもよい。本実施の形態では、TRMモジュール164が端末100の外部装置である記憶装置200内に実装され、MDU変換モジュール162は、端末100内に存在する。MDU変換モジュール162を端末内に残す構成を採ることにより、記憶装置200間の入出力I/Fの違いによらずTRMモジュール164の交換が容易になるという効果を持つ。また、不揮発性記憶装置の代わりにSRAMやDRAM等の揮発性記憶装置と蓄電型電源装置の組み合わせを用いてもよい。この場合、TRMモジュール164内に記憶されるライセンス情報に対して電池の寿命による有効期限を持たせることが可能になる。また認証を通して蓄電型電源装置に追加給電することで、ライセンス情報の有効期限を更新する仕組みであってもよい。
従来のDRMシステムは、実装するシステム構成が限定されていたためにDRMエージェントに相当する機能とDRMエンティティに相当する機能とを切り分ける必要がない(すなわちそれら機能が一体化されている)、または、仕様として定義されている、のどちらかであった。しかし、DRMエージェントに相当する機能とDRMエンティティに相当する機能が論理的に定義されたDRMシステムでは、DRMエージェントとDRMエンティティを接続する仕組みの実現が課題として存在する。ここでDRMエンティティを操作するための仕組みを定義することで、DRMエージェントとDRMエンティティが一体である構成であっても、装置として分離可能な構成であっても、統一的に扱うことが可能となるため、システム構成の自由度が向上する効果がある。
本実施の形態では、DRMエンティティ(160)の持つ機能または性能をDRMエージェント(140)に通知する機能、DRMエンティティ(160)を用いて他の端末(110)を認証するための操作、DRMエンティティ(160)を用いて他の端末(110)との間でセッション鍵を交換するための操作、DRMエンティティ(160)を用いてライセンス情報を獲得または供与するための操作、DRMエンティティ(160)の状態を獲得する操作、DRMエンティティ(160)内のライセンス情報の状態を獲得する操作などを定義する。これにより、アプリケーション(130)またはDRMエージェント(140)からのDRMエンティティ(160)の操作を共通化することを目的とする。
またここで定義した操作は、対象となるDRMエンティティ(160)が記憶装置(200)にデータを書き込む際に、記憶装置(200)内部でのデータ単位に従い入出力を行うことで、必要なバッファサイズの縮小及びパフォーマンスが向上する。従って、DRMエンティティ(160)を操作する際に送受信するデータのサイズを調整することで必要なバッファサイズの縮小やパフォーマンスの向上を行うための仕組みについても言及している。また1つまたは複数のTRMモジュール(164)が複数のDRMエージェントモジュール(140)によりアクセスされた場合の入出力形式についても定義している。
図11は、図1に示すようなアプリケーション130、DRMエージェント140、及びDRMエンティティ160を有するシステム構成において、より詳細な実施の形態として、DRMエンティティ160のTRMモジュール164を、端末100と分離可能な記憶装置200の機能で実現した形態における、各モジュールや部位の働きを表している。記憶装置200として、図2に示す構成のX-Mobile Card(カードと略称する)240として置き換えた形態である。カード240は、ライセンス情報管理機能を含む処理機能を備えた記憶装置である。本形態では、TRMモジュール164だけでなくストレージ180もカード240の機能として実現される。
図2で、カード240は、MMCI/F(マルチメディアカードインタフェース)210、コントローラチップ220、フラッシュメモリチップ230、スマートカードチップ250を有する構成である。主制御するコントローラチップ220に、MMCI/F210、フラッシュメモリチップ230、スマートカードチップ250が接続されており、MMCI/F210により外部(すなわち端末100)と接続される。
MMCI/F210は、外部とコントローラチップ220とのコマンド及びデータの授受を仲介する。MMCは、MultiMedia Cardの略であり、Infineon Technology AGの登録商標である。コントローラチップ220は、外部からのコマンドを解釈し、フラッシュメモリチップ230及びスマートカードチップ250へのデータの読み書きを制御する。フラッシュメモリチップ230は、ライセンス情報などのデータを格納する。スマートカードチップ250は、個人などを認証する処理などを行うが、本実施の形態では、スマートカードチップ250の機能は未使用であり、コントローラチップ220とフラッシュメモリチップ230で処理される。
カード240内には、ホスト(すなわち端末100)からアクセス不可能で処理データが保護されるセキュリティ処理部及び領域と、ホストからアクセス可能で比較的高速なデータ処理部及び領域とを有する。例えば、フラッシュメモリチップ230内に、セキュリティ処理部に対応した耐タンパ性記憶領域とデータ処理部に対応した記憶領域とを有し、それぞれ、前記TRMモジュール164とストレージ180とに対応する。
コントローラチップ220は、ライセンス情報処理に係わる各データ処理部を含み、これら処理を制御及び実行し、また処理のためのバッファとなる記憶領域を有する。前記バッファの領域とフラッシュメモリチップ230内の領域との間でデータ入出力が可能である。
DRMエージェント140とDRMエンティティ160が分割可能な、すなわち別の装置として分離して接続可能な構成において、DRMエージェント140は、DRMエンティティ160が接続されるとDRMエンティティ160の構成を確認する操作を行ってもよい。この操作を行うことで、DRMエンティティ160の機能及び性能に差がある場合でも、その機能及び性能の差に応じた処理が可能になる。またDRMエンティティ160に機能及び性能の差がないことがわかっている場合や問題にならない場合には、当該機能及び性能の差がI/Fの形式などにより一意である場合には、DRMエンティティ160の構成を確認しなくてもよい。この機能は、図11のカード情報読み出し機能(1140)により実現される。
端末100でカード情報読み出し機能(1140)が実行されると、その命令はMDU変換モジュール162によりSEND_DATA CMD1144に変換される(処理1142)。なおCMDはコマンド(命令)の略である。SEND_DATA CMD1144は、カード240に対する命令であり、カード240に格納されているカード情報(装置情報)を出力させる。このように、CMDとして定義されている命令は、カード240固有の命令セットであり、カード240以外のTRMモジュール164(すなわち記憶装置200)を利用する場合に、命令の名称、データの形式、転送データサイズ等が異なっていてもよく、TRMモジュール164内との間で入出力されるデータが等価であり、TRMモジュール164が同等の処理機能を持てばよい。このとき、MDU変換モジュール162は、DRMエージェントモジュール140から送られてきたMDU形式の命令またはアプリケーション130から実行される命令を、対象となるTRMモジュール164の実装形式にあわせて変換する働きをする。この働きにより、MDU形式の命令に対してTRMモジュール164の実現方式によらずDRMエンティティモジュール160を他の実現方式と等価に扱うことを可能にする効果をもたらす。これは以下で記述する全てのCMDにおいて同様である。ここでMDUとはMessage Data Unitの略であり、DRMエージェントからDRMエンティティに渡されるデータを意味する。
カード240は、SEND_DATA CMD1144を受け取ると、カード240内に予め用意されたカード情報を返してもよい(処理1146)。カード情報には、発行者名、カードID、ユーザID、利用可能なコマンドの種類、利用可能な通信プロトコルの種類、利用可能な暗号アルゴリズムの種類、利用可能なライセンス情報の種類、プロファイルの識別情報やバージョン等が含まれていてもよい。またこれらの情報の記述形式はサービス毎に定められていてもよい。例えばプロファイルの識別情報とバージョンにより利用可能なコマンドの種類、通信プロトコルの種類、暗号アルゴリズムの種類、ライセンス情報の種類を識別できる場合、それらの情報を個別にカードへ記載しなくてもよく、また実装形式で取り得るプロファイルの識別情報とバージョンが1つしかないならば、カードID情報のみを送ってもよく、またユーザの識別が必要ないならばユーザIDを含まなくてもよい。またカードの状態を出力するステータス情報読み出し1180で出力される情報にカード情報が含まれていてもよい。
カード240から出力されたカード情報1148は、MDU変換モジュール162によりカード情報1152へと変換され(処理1150)、アプリケーション130により処理される(処理1154)。ここでアプリケーション130が行う処理1154としては、接続されたTRMモジュール164の機能確認などが該当する。アプリケーション130が他の端末(110)に接続して通信を行う際に、通信相手の装置(110)にTRMモジュール164の機能を通知することにより、通信先は、ライセンス情報の転送を行うのに十分な機能を持っているかどうかを判断できる。また通信先(110)は、利用可能なプロトコルの種類や暗号アルゴリズムが複数ある場合には、その中でライセンス情報の転送要件に合った方式を選択し、通信相手(100)に送信してもよい。
また、アプリケーション130は、任意の順序で、ライセンス情報検索1110、ログ情報読み出し1160、ステータス情報読み出し1180の処理を行ってもよい。アプリケーション130は、接続されたカード240の状態を正しく認識している必要があり、そのために任意の間隔でこれらの処理を行うことが望ましい。
ライセンス情報検索1110は、カード240に格納されたライセンス情報のうち、コンテンツを暗号化した鍵などの秘密情報を除く、ライセンス情報の識別情報、許諾情報、制限情報などを読み出す処理が該当する。この処理において、ライセンス情報番号1112は、カード240内に格納されたライセンス情報格納領域のアドレス等が該当する。ライセンス情報から秘密情報を除いた情報は、端末100内のストレージ領域か、カード240内のストレージ領域に格納されていることが望ましい。なぜなら、記憶装置200内における、セキュリティのためにアクセス制限がかけられた領域(TRMモジュール164の領域が相当する)は、端末100から直接操作できる記憶領域に比べてアクセス速度が遅かったり、端末100が管理しやすい形式で情報が保持されていなかったりする場合がある。そこで、前記ライセンス情報から秘密情報を除いた情報を、アクセスが容易なストレージ領域、例えばカード240内のストレージ180内に格納することで、当該情報へのアクセスが容易になり、また検索速度が向上する等の効果がある。
しかしこれらライセンス情報が改ざんもしくは破損した場合に、正しく目的のライセンス情報を発見できない問題があり、アプリケーション130は、ライセンス情報の改ざんや破損を発見する目的や、改ざんや破損を修復する目的で、任意の間隔でライセンス情報検索1110の処理を利用できれば、アクセス性の向上とデータの完全性の確保の両方を実現できるという効果がある。このためDRMエージェント140またはアプリケーション130は、コンテンツ中に含まれる識別情報と読み出したライセンス情報の識別情報とを元に、両者の関連付けを修復する事が可能である。そのために、コンテンツとライセンス情報が相関のある識別情報を有していることが望ましい。このような識別情報としては、コンテンツ識別番号(コンテンツID)などが該当する。
ライセンス情報番号1112をDRMエンティティモジュール160が受け取った際に、DRMエンティティモジュール160がファイルシステムを有しているならば、ライセンス情報番号1112は、MDU変換モジュール162によって、対応する階層化されたディレクトリ構造の階層を表す情報とディレクトリ内の要素位置に関する情報の組み合わせに変換され(処理1114)、SEARCH_LICENSE CMD1116でカード240へ送られてもよい。またDRMエンティティモジュール160が複数の固定長のライセンス情報格納領域を有しているならば、MDU変換モジュール162によりライセンス情報番号1112はライセンス情報格納領域のアドレスへと変換され、SEARCH_LICENSE CMD1116でカード240へ送られてもよい。このときのライセンス情報番号はカード情報読み出し1140又はステータス情報読み出し1180によって獲得された格納ライセンス数に基づく情報である。格納ライセンス数は、カード240内に割り当てられたライセンス情報記憶用の領域に対して、ライセンス1つあたりの容量から求められた値であり、カード発行時に定められる値である。この値は、格納できる最大の数である必要はなく、それ以下の任意の値をとってもよい。SEARCH_LICENSE CMD1116は、カード240内で処理され、カード240は指定された場所にライセンス情報がある場合には、そのライセンス情報を出力可能な状態にしてもよい(処理1118)。
MDU変換モジュール162は、カード240からの処理完了通知を受け取るとエラーの確認を行う(処理1120)。ここでカード240より出力されるエラーはカード240固有の記述形式であってもよい。エラーをチェックした結果、その内容をアプリケーション130またはDRMエージェント140に返す場合、アプリケーション130またはDRMエージェント140が認識可能なエラーコードに変換してもよい。ここで渡されるエラーコードは統一的な基準に従うものである必要はない。なぜならばアプリケーション130またはDRMエージェント140は、カード情報読み出し1140によりカード240のサポートする機能の種別を知ることが可能であり、この情報に基づいてカード240をサポートしているならばカード240のエラーコードを認識可能となる。すなわちMDU変換モジュール162は、接続されたTRMモジュール164の種類に応じてエラーコードを解釈可能であるため、エラーコードをアプリケーション130またはDRMエージェントモジュール140が認識可能な形式へと変換するための方式は実装に依存する方式であっても相互運用性に問題を生じさせることはない。この処理は、以下で述べるエラーチェック処理で共通である。エラーがない場合、MDU変換モジュール162は、ライセンス情報の抽出のためにSEND_SCSR CMDの生成を行う(処理1122)。生成されたSEND_SCSR CMD1124は、カード240に入力される。カード240は、SEND_SCSR CMD1124を受け取ると、出力可能な状態にあるライセンス情報(概要)を、ステータス情報に連結してMDU変換モジュール162に送ってもよい(処理1126)。MDU変換モジュール162は、カード240から出力された情報を、エラーチェックや形式変換などしてから(処理1130)、ライセンス情報1132としてアプリケーション130に返してもよい。アプリケーション130は、ライセンス情報1132をもとに、改ざん検知、ストレージ上のライセンス情報の再構築などの処理を行う(処理1134)。ここでTRMモジュール164が、1つの命令で双方向の入出力を可能とする命令体系を有している場合、処理1118の処理結果として、エラー情報とライセンス情報をSEARCH_LICENSE CMD1116の入力の結果として出力する仕組みであってもよい。
ログ情報読み出し1160は、カード240に格納された情報のうち処理中のトランザクションの状態に関する情報を読み出す処理が該当する。トランザクションの状態とは、トランザクションの識別情報、トランザクションの実行状態に関する情報、ライセンス情報の状態が該当する。ここでトランザクションとはライセンス情報の転送の単位であり、トランザクションの識別情報は、通信元が通信先より指定されたコンテンツの識別情報に対応する形で用意された配信されるライセンス情報ごとの識別情報である。またトランザクションの実行状態に関する情報は、トランザクションが実行中か終了したかを表す情報であり、ライセンス情報の状態は、ライセンス情報が正しく格納されているかどうかを確かめる情報である。この情報はトランザクション実行中に電源遮断等が生じた場合に、トランザクションの再接続を実行するかどうかを判断するためや、トランザクション終了後にライセンス情報の格納を確認する目的で利用してもよい。ただし、トランザクションの再接続用のプロトコルが実装されていない場合、この機能は実装されていなくてもよいが、DRMエージェントモジュール140がトランザクション再接続機能を有するDRMエージェントと接続される可能性があるならば実装されていることが望ましい。トランザクション再接続機能の有無はカード情報読み出し1140により確かめることができてもよい。
ログ情報読み出し1160の命令は、MDU変換モジュール162によりSEND_LOG CMD1164に変換され(処理1162)、カード240で処理される(処理1166)。この処理は、カード240に格納されたトランザクション情報の中から前記トランザクションの状態に関する情報を取り出し、出力する操作等が該当する。カード240中には、出力されるトランザクションの状態に関する情報以外に、通信中のデータを暗号化するための鍵情報や、過去のトランザクションの情報が含まれる。しかしデータ暗号化のための鍵情報の出力は、セッション内の情報の盗聴を許すことになるため出力してはならず、また過去のトランザクションに関する情報については出力しなくてもよいが、TRMモジュール164が過去のトランザクションの再接続機能を有するならば出力してもよい。カード240から出力されたログ情報1168は、MDU変換モジュール162によりエラーの有無の確認にあわせてログ情報1172に変換され(処理1170)、アプリケーション130により処理される(処理1174)。処理1174としては再送処理の必要を判断する処理や、トランザクションの完了を確認する処理等が該当する。
ステータス情報読み出し1180は、カード240に格納された情報のうち、DRMエンティティモジュール160の識別情報、ライセンス情報の最大格納数、エラー状態、プロトコルの状態、利用する鍵情報のセット、カード発行の状態などを読み出す処理が該当する。ここでDRMエンティティモジュール160の識別情報は、ライセンス情報保護システム(DRMシステム)の種類、バージョンを表す情報等が該当する。エラー状態は、カード240内で発生したエラーを表し、プロトコルの状態はカードに入力された命令によって遷移するカードの状態を意味する。DRMエンティティモジュール160は状態によって受付可能な命令が決まっていてもよく、それ以外の命令が入力された場合、処理を終了してもよい。
DRMエージェントとDRMエンティティが分離可能な場合、DRMエージェントとDRMエンティティが一対一だけではなく、一対多、多対一、多対多で接続される可能性がある。その中でDRMエージェントは接続されたDRMエンティティの状態を常に把握しておくことで、DRMエンティティの状態との同期性を向上させる効果がある。
従来のシステムでは、端末内のシステムと接続されたセキュリティ処理装置の状態が一致していない場合でも、DRMエージェントはDRMエンティティのセキュリティ処理の状態を把握する手段がないため、命令を発行し、仮に同期がとれていない場合にはDRMエンティティが返すエラーコードにより、命令発行の可否を確かめる他なかった。しかし多対一などの状態で複数のDRMエージェントが1つのDRMエンティティにアクセスする場合、DRMエンティティへ入力する命令をスケジューリングしたい場合がある。このとき、DRMエージェントがDRMエンティティの状態と常に同期の確認を可能とすることで、あるDRMエージェントでエラーが発生した場合の再スケジューリングを容易にする効果がある。なぜならば、ライセンス情報の保護のためのプロトコルではある一定の順序でコマンドを発行する必要があるが、それぞれのコマンドを発行するタイミングは通信先の処理時間の問題で、状態により異なり、その間ではDRMエンティティは処理を行っていないため、別の処理を行うことで処理効率の向上が期待できる。
DRMエンティティに接続された複数のDRMエージェントは、アプリケーションにより指定されたプロトコルの種類に従い、命令を発行することから、発行したい命令の順番を待ち時間がより小さくなるように調整することが可能である。利用する鍵情報のセットは、公開鍵暗号方式による認証を行う場合は、サービス毎に用意された公開鍵証明書と、対応する秘密鍵、公開鍵証明書を検証するための証明書発行者の公開鍵または公開鍵証明書、証明書発行者が発行した証明書失効リストなどが該当する。また共通鍵暗号方式により認証を行う場合は、交換したチャレンジデータから共有鍵を生成するための秘密情報、チャレンジデータを保護するための秘密鍵、DRMエンティティに割り当てられた固有の識別情報などが該当する。これらの情報がサービスや対象となる機器等に応じて異なる場合で、DRMエンティティが複数の鍵情報のセットを有する場合、現在どの鍵情報のセットが利用されているかをDRMエージェントが確認可能であってもよい。DRMエンティティは、SELECT_SERVICE CMD(図9のC25)により利用する鍵セットの種類を指定可能であるが、実際に利用される鍵セットがSELECT_SERVICE CMDと異なる場合、DRMエンティティは実際に利用されている鍵セットを調べ、その結果をステータス情報の鍵セットの種類に反映することで、エラーを返すことなく処理を行ってもよい。この処理を行うことで前記SELECT_SERVICE自体を省略してもよい。この処理の振る舞いについては、図5及び図3の説明において詳細を述べる。
前記カードの発行状態は、カード(240)が製造直後で秘密情報が書き込まれていない状態にあるか、秘密情報が書き込まれて利用可能な状態にあるかを判別する情報である。カードの発行状態において、秘密鍵が書き込まれユーザの手に渡る状態では、秘密情報を書き込むための命令自体を禁止したい場合などがある。そこでDRMエンティティの発行状態をステータス情報として出力することで、DRMエージェントは、利用する命令セットを選択可能となり、命令を入力しエラーコードの出力で命令の利用可否を確かめる必要がなくなるという効果がある。
ステータス情報読み出し1180の命令は、MDU変換モジュール162によってSEND_SCSR CMD1184に変換され(処理1182)、カード240に入力され、処理される(処理1186)。処理1186としては、カード240内のメモリ上に存在する情報からステータス情報を構成し、出力する処理が該当する。出力されたステータス情報1188は、MDU変換モジュール162により、エラーチェックにあわせてステータス情報1192に変換され(処理1190)、アプリケーション130で処理される(処理1194)。ここで処理1194は、プロトコル処理の停止や、プロトコル状態の同期化などの処理が該当する。カード240の各CMD処理において、カード240の各CMDが詳細なエラー情報をレスポンスとして返さない仕様である場合は、エラー情報の取得のためにMDU変換モジュール162がSEND_SCSR CMDを生成し、カード240に入力し、エラーコードを取得してもよい。これは、この後に説明する全てのCMD処理において当てはめてもよい。
ライセンス情報を管理するDRMエンティティ(160)のような分離可能なモジュールが存在する場合、そのモジュールは、認証、鍵交換、ライセンス情報の転送までの一連の処理機能を、TRMモジュール(164)に応じた命令セットに割り当てる構成となる。この中で、他の端末との通信とコンテンツの管理及びDRMエンティティの操作を行うDRMエージェントと、DRMエンティティとの間では、既に説明したライセンス情報検索1110、カード情報読み出し1140、ログ情報読み出し1160、ステータス情報読み出し1180の機能を用いることで、接続のために十分な情報を得ることが可能となる。またDRMエンティティモジュール160の本体であるTRMモジュール164と、DRMエージェントモジュール140とを接続するためにI/Fとサポートするライセンス情報保護方式に応じて情報を変換するMDU変換モジュール162を用意することで、DRMエンティティモジュール160の実装形式によらず、DRMエージェントモジュール140とDRMエンティティモジュール160の接続を容易にするという効果がある。またDRMエンティティの認証、鍵交換、及びライセンス情報の転送の三つの処理は、認証と鍵交換、ライセンス情報の転送に分けられてもよい。このように二つに分けることで、一度の認証で複数の鍵交換を行い、ライセンス情報の転送を繰り返し行うことが可能になる。通常、認証処理はプロトコル処理の計算時間で大きな割合を占めているため、複数のライセンス情報を一度に獲得または送信する場合に、処理時間短縮の効果がある。また認証処理を一対一で行うのではなく、一対多、多対一、多対多で行うことで、セキュリティ的に他のネットワークから独立したドメインを構築でき、ライセンス情報の転送処理の幅が広がるという効果がある。この効果としては、複数のライセンス情報転送先がドメイン内に存在している場合に、処理負荷が小さい装置からライセンス情報を獲得することでドメイン内のライセンス情報転送のパフォーマンスを向上させること等が含まれる。
DRMエンティティの認証、鍵交換、ライセンス情報の転送の処理からなる機能は、UDACv2の仕様に基づいて考えた場合、認証の処理はOPEN PDUとESTABLISH PDUの組み合わせ、鍵交換はGET_LICENSE PDU、ライセンス情報の転送はRES_GET_LICENSE PDUに対応する処理として表すことが可能である。ここでDRMエージェントモジュール140の主な働きは、共通の仕様に基づいたDRMエンティティモジュール160の管理と、共通の機能を持った他のDRMエージェントとの通信、共通の仕様に基づいて構成されたコンテンツ情報の管理を行うことであるが、アプリケーション130が複数の異なる仕様に基づくDRMエージェントモジュール140を操作する仕組みであってもよい。その際、再生アプリケーションと複数のDRMエージェントの動作を制御するモジュールは、認証、鍵交換、ライセンス情報の転送の単位で処理することにより、DRMシステムを共通に取り扱ってもよい。
図3,図4は、本システムにおいて、端末(100)が、接続された別の端末(110)からライセンス情報を取得する場合の処理の流れを表している。ここでは、より詳細な実施の形態として、図1に示すシステムに対応する実装構成として、DRMシステムとしてUDACv2を、TRMモジュール164及びストレージ180となる記憶装置200として前記カード240を用い、公開鍵暗号方式による証明書の認証を通してAES(Advanced Encryption Standard)のライセンス情報暗号化鍵を共有し、その鍵を用いてライセンス情報を獲得する操作を説明する。
UDACv2は、Universal Distribution with Access Control version 2の略である。UDACv2は、株式会社日立製作所、株式会社PFU、株式会社ルネサステクノロジ、コロンビアミュージックエンタテインメント株式会社、三洋電機株式会社、富士通株式会社が著作権を有するコンテンツ配信のための技術規格である。UDACv2技術規格書には、耐タンパ性を有しライセンス情報管理機能を有するDRMエンティティ間の通信プロトコルと、ネットワーク通信を制御しDRMエンティティ間の通信をサポートするDRMエージェント間の通信プロトコルと、DRMエンティティ及びDRMエージェントの要件についての仕様と、DRMエンティティで制御されるライセンス情報の記述形式についての仕様について記載されている。
図3で、アプリケーション130は、ライセンス情報を配信するサーバである端末110に接続すると、そのサービスで有効な鍵セットに関する情報を取得し、DRMエージェントモジュール140に対して、サーバに送る証明書と利用するDRMエンティティの機能の選択を行う(処理310)。DRMエージェントモジュール140は、アプリケーション130よりDRMエンティティ番号と鍵セット番号(データ312)を受け取ると、DRMエンティティモジュール160が複数ある場合には、データ312に基づき、利用するDRMエンティティを選択してもよい。DRMエージェントモジュール140は、選択されたDRMエンティティモジュール160内のMDU変換モジュール162に接続されているTRMモジュール164の種類に従ってデータ312の変換を行ってもよい(処理314)。これは、DRMエンティティモジュール160が、論理チャネルのような複数の処理を同時に実行可能な機能を有している場合、DRMエンティティ番号を論理チャネル番号に変換する処理などが該当する。またTRMモジュール164がサービスごとに異なる鍵やアルゴリズムのセットを持っているならば、データ312に含まれる鍵セット番号に基づき適した鍵セットを選択してもよい。処理314により変換されたデータ316は、MDU変換モジュール162によりSELECT_SERVICE CMD320に変換される(処理318)。SELECT_SERVICE CMD320は、論理チャネル番号と鍵セット番号を含むデータであり、カード240に入力されて処理される(処理322)。この処理322としては、論理チャネルに基づきカード240内のメモリ空間を切り替える処理や、鍵セットの指定に基づき鍵セットを選択し必要ならばメモリ上に読み出す操作が該当する。
図10は、カード240に入力されるデータの命令部分の形式を表したものである。command1010は、実行するデータ処理の種類を表し、CN1030(8bit)は、セキュリティ処理の種類を表す。CRC1050は、命令部分のエラーチェックを行うためのデータである。また、Cnt1020(12bit)及びReserved1040(12bit)は、特に利用しなくてもよく、すべて0となる値であってもよい。本実施の形態では、処理方法として、同一のcommand1010でそのパラメータであるCN1030の値の違いにより、異なる処理内容が指定される。
カード240で利用するセキュリティ処理は、シングルデータブロック入力命令とシングルデータブロック出力命令の派生形として扱われる。これらの命令が通常のカード内のデータアクセスと同じ処理であるかどうかは、この命令以前に処理切り替え命令が発行されているかどうかに依存する。処理の切り替え方法としては、連続する次の命令をセキュリティ処理命令として解釈させる方式や、もう一度処理切り替え命令が発行されるまで命令をセキュリティ処理命令に置き換える方式等が該当する。また、セキュリティ処理のための命令が他とは別の命令として用意されていてもよいし、物理的または電気的なスイッチによりこの機能が切り替えられてもよい。ここで電気的なスイッチとは、処理の種類を判別するための信号線を用意しておき、この信号線がHiかLoかで処理を切り替える処理等が該当する。CN1030によりセキュリティ処理を選択する場合、先頭の2bitが、対象とする論理チャネルの番号を表し、後続の6bitが、セキュリティ処理の種類を表す仕組みであってもよい。図9は、この規則に基づいて指定されるカード240のセキュリティ機能を表している。
図9に示す命令セットにおいて、Command名称(901)は、カード240が解釈可能な命令の名称を表し、Command&Argument(902)は、ベースとなるCommand1010の種類と、CN1030に設定する値を表している。ここで“ACMD17”と記載している命令は、シングルデータ出力命令から派生したセキュリティ処理命令に該当し、“ACMD24”と記載されている命令は、シングルデータ入力命令から派生したセキュリティ処理命令に該当する。また“Arg”で指定されている16進数は、CN1030の下位6bitに設定する値を意味している。この命令セットは、TRMモジュール164の種類により名称並びにデータサイズ、各機能の指定の仕方が異なっていてもよい。
前記図3の処理322の結果、MDU変換モジュール162は、出力されたエラーの状態をチェックする処理324を行い、DRMエージェントモジュール140に通知する。ここでDRMエージェント140は、エラーが発生している場合で、DRMエンティティが存在しない場合、選択した論理チャネルが利用できない場合、選択した鍵セットが存在しない場合等に、処理の終了の通知や、別の組み合わせで命令を再発行する操作等を行ってもよい。エラーがない場合、DRMエージェントモジュール140は、選択された鍵セットに含まれる証明書を読み出す(処理326)。この命令は、MDU変換モジュール162によりSEND_CERT CMD330に変換される(処理328)。SEND_CERT CMD330は、カード240により処理される(処理332)。処理332としては、前記処理322でセットされた鍵情報に含まれる証明書を読み出して出力する処理等が該当する。ただし、前記鍵セットに証明書が含まれていない場合はエラーを返してもよい。出力された証明書334は、MDU変換モジュール162の変換処理336によりDESTINATION_CERT MDU338に変換される。DESTINATION_CERT MDU338は、DRMエージェント140によりOPEN PDU342に変換されて出力される(処理340)。OPEN PDU342は、プロトコルバージョン、メッセージID、コンテンツID、証明書などの情報を含む。OPEN PDU342の送信後、DRMエージェント140は、ESTABLISH PDU350を待機する状態に遷移する。この状態がある一定の時間以上続いた場合、DRMエージェントモジュール140は、もう一度OPEN PDU342を送信してもよい。OPEN PDU342を再発行する際のタイミングは通信に利用するインタフェース毎に変化してもよい。
ESTABLISH PDU350を受信すると、DRMエージェントモジュール140は、ESTABLISH PDU350からSOURCE_KEY MDU354を作成し、DRMエンティティモジュール160に送信する(処理352)。SOURCE_KEY MDU354は、公開鍵証明書に含まれる公開鍵により、通信相手の端末(110)が作成した第一セッション鍵を暗号化したデータ(暗号化第一セッション鍵)と、トランザクションID等を含んでもよい。MDU変換モジュール162は、SOURCE_KEY MDU354から前記暗号化第一セッション鍵を抽出し、SET_SESSION_KEY CMD358に変換し(処理356)、カード240に送信して処理させる(処理360)。この処理360としては、前記公開鍵で暗号化された第一セッション鍵を、対応する秘密鍵で復号して第一セッション鍵を取り出してメモリにセットする操作などが該当する。
処理360が終了すると、MDU変換モジュール162は、レスポンスを処理する(処理362)。処理362としては、前記カード240の処理360が正常に終了したかどうかを判断する処理などが該当する。これを受けてDRMエージェントモジュール140は、ESTABLISH PDU350に含まれているトランザクションIDをTRANSACTION_ID MDU366に変換する(処理364)。TRANSACTION_ID MDU366は、MDU変換モジュール162によりSTART_TRANSACTION CMD370に変換され(処理368)、カード240で処理される(処理372)。この処理372としては、メモリに、入力されたトランザクションIDを格納する操作等が該当する。
この処理372が終了すると、MDU変換モジュール162は、レスポンスを処理する(処理374)。この処理としては、前記処理372が正常に終了したかどうかを判断する処理などが該当する。これを受けて、MDU変換モジュール162は、ESTABLISH_WRITE_SESSION CMD378を生成して(処理376)、カード240に送信して処理させる(処理380)。処理380としては、カード240が内部の乱数発生器を用いて第二セッション鍵を生成し、これを、第一セッション鍵を用いて暗号化し送信する処理などが該当する。またこのときに第一セッション鍵で暗号化して送るデータとしては、カード240内の証明書失効リストの発行日時や、カード240個別の公開鍵が含まれていてもよい。このとき同時にログ情報として、生成した第二セッション鍵とトランザクションIDを格納する操作と、ライセンス情報の転送状態を実行中に変更する処理を行ってもよい。
出力された第二セッション鍵を第一セッション鍵で暗号化したデータである、暗号化第2セッション鍵382は、MDU変換モジュール162でDESTINATION_KEY MDU386に変換される(処理384)。DESTINATION_KEY MDU386は、DRMエージェントモジュール140に渡され、DRMエージェントモジュール140は、DESTINATION_KEY MDU386からGET_LICENSE PDU390を生成して通信相手の端末110に送信する(処理388)。また処理388として、受け入れ可能で獲得したいライセンス情報に関する情報(要求するライセンス情報のリスト)を、ライセンス情報としてGET_LICENSE PDU390の一部としてもよい。
例えば相手の端末110からライセンス情報を獲得する場合として、再生のために一時的にライセンス情報を読み出したい場合と、相手の端末110に有するライセンス情報を端末100に移動もしくはコピーしたい場合がある。ここでライセンス情報リスト中にアクセスの種類に関する情報を含ませることで、相手の端末110は、端末100からの要求を認識することが可能になる。例えば、再生のための一時読み出しの場合、TRMモジュール164内で処理するパラメータが不要なため、TRMモジュール164で処理されるパラメータを含めないことで再生のための一時読み出しであると解釈可能であるようにしてもよい。移動とコピー処理を判別する手段としては、あらかじめ移動時のライセンス情報リストとコピー時のライセンス情報リストを端末100に通知しておき、これを選択することで移動とコピーの処理を切り替えてもよい。ただし、移動、コピー、再生ともに、その条件での利用の可否を判断するのは相手の端末110のユーザまたはアプリケーション(130)またはDRMエージェントモジュール(140)であり、指定された条件を受け入れることができなければ、ライセンス情報の転送を拒否してもよい。GET_LICENSE PDU390は、メッセージID、トランザクションID、暗号化第二セッション鍵、ライセンス情報リストなどの情報が含まれる。
GET_LICENSE PDU390の送信後、DRMエージェントモジュール140は、図4に示すRES_GET_LICENSE PDU410を待機する状態に遷移してもよい。この状態がある一定の時間以上続いた場合、DRMエージェント140は、図6及び図7に示すように、REOPEN PDU610を送信してもよい。REOPEN PDU610を発行する際のタイミングは通信に利用するインタフェースにあわせて変化してもよい。REOPEN PDU発行に関する操作は図6及び図7で示される。
図4で、DRMエージェント140は、RES_GET_LICENSE PDU410を受信すると、LICENSE MDU414に変換する(処理412)。MDU変換モジュール162は、LICENSE MDU414を受け取ると、SET_LICENSE CMD418に変換する(処理416)。RES_GET_LICENSE PDU410は、メッセージIDと暗号化ライセンス情報を含む。LICENSE MDU414は、暗号化ライセンス情報を含む。SET_LICENSE CMD418は、暗号化ライセンス情報を含む。
ここでカード240のような端末と分離可能な記憶装置200は、端末からの指定したアドレスに一ブロックのデータを転送するシングル転送方式と、指定したアドレスから複数のブロックを連続して書き込むマルチ転送方式とをサポートするものがある。ここでブロックとは一回の通信でのデータ単位である。カード240は、通常のストレージとして利用可能なデータ処理部と、セキュリティ処理を行うためのセキュリティ処理部があり、端末がこの二つの処理を別々に動作させる際に幾つかの問題が発生する場合がある。一つ目は、命令発行のタイミングに関するもので、セキュリティ処理のためのデータ転送中にデータ転送の割り込みが発生した場合で、データ転送の割り込みの優先度がセキュリティ処理よりも高く設定されている場合、セキュリティ処理のためのマルチデータ転送処理を一時中断し、データ転送終了後に、セキュリティ処理のためのマルチデータ転送を再開したい場合がある。このとき、データ転送停止命令をトリガーにして受け取ったデータのセキュリティ処理を開始する仕組みである場合、セキュリティ処理のためのデータを分割することはできなくなる。また、継続するセキュリティ処理のためのデータ転送を再開する場合でも、同じ命令セットでデータ転送が再開された場合、それが不正な処理なのか、継続操作なのかの判断が行えないという問題があった。そこでMDU変換モジュール162は、LICENSE MDU414のデータサイズがシングル転送処理で処理できないサイズである場合、それをSET_LICENSE CMD418とEXT_SET_LICENSE CMD426の二種類の命令を用いてカード240に転送してもよい。SET_LICENSE CMD418は、LICENSE MDU414に対応する処理のためのデータ転送命令であり、EXT_SET_LICENSE CMD426は、まだ残りのデータがある場合のデータ転送命令である。いずれもデータ転送が終了した場合にセキュリティ処理を開始する機能を持つ。セキュリティ処理のためのデータ転送が中断した場合、EXT_SET_LICENSE CMD426を発行することでカード240はそれが継続するデータであることを判断する。これらの命令はシングルデータ転送命令であってもよいし、マルチデータ転送命令であってもよい。以下ではシングルデータ転送命令であることを例に採り説明する。
SET_LICENSE CMD418は、カード240に送信されて処理される(処理420からの処理)。カード240は、SET_LICENSE CMD418を受け取ると、SET_LICENSE CMD418に含まれるデータ長を判断し、この後どれだけのデータが来るかを認識できる情報を獲得する。受け取ったデータは、モジュール内のキャッシュに格納しておいてもよいし、キャッシュが十分に大きくない場合には記憶装置の一部に退避させておいてもよい。未転送ブロックがあると判断される場合には(処理420−Yes)、MDU変換モジュール162へレスポンスを返し、MDU変換モジュール162は、エラーの状態を判断し(処理422)、残りの未転送ブロックがある場合には、連続するブロックをEXT_SET_LICENSE CMD426として発行する(処理424)。EXT_SET_LICENSE CMD426がカード240に入力されると、再び未転送ブロックがあるかどうかを判断し、未転送ブロックがある場合は、処理424からの処理を繰り返す。このとき、次のデータを待つ場合は、キャッシュが十分にある場合にはキャッシュに退避し、そうでない場合には記憶装置の一部に退避しておく。未転送ブロックがない場合(処理420−No)、カード240は、暗号化ライセンス情報を復号し、ライセンス情報と証明書失効リストを取り出し、それらの格納を行う。ただし、ライセンス情報が公開鍵で暗号化されている場合には、カード240の個別秘密鍵で復号した後に格納を行ってもよいし、出力時に復号して出力してもよい(処理428)。
図16(a)〜(f)は、このときのカード240内の動作の詳細を説明したものである。記憶領域である1610,1620,1630は、カード240上のバッファを表している。コントローラチップ220内にこのようなバッファを有する。バッファ1610及び1620及び1630は、シングル転送処理で一度に転送可能なデータサイズに対応した同じ大きさを持つ。
図16(a)で、カード240は、SET_LICENSE CMD418によりデータ入力を受け取ると、入出力のためのバッファであるバッファ1610に、データ(d1とする)を格納する(処理1660)。カード240は、受け取ったデータ(d1)のタグ情報(先頭部分の情報)から、全データサイズを計算し、フラッシュメモリチップ230のフラッシュメモリ上のカード240が管理しユーザによる操作が行えない領域(セキュリティ処理部)上に、退避用領域を確保する(処理1662)。この退避のために利用できるフラッシュメモリのサイズより入力データのサイズが大きい場合にはエラーを返してもよい。ここでは、全データサイズとして、バッファ二つ分を超え、かつ三つ分以下のサイズのデータ(d1,d2,d3の順でなるものとする)が送られてくる場合について説明する。
図16(b)で、退避用のデータ(d1)が格納できる場合、カード240は、バッファ1610上のデータ(d1)を前記フラッシュメモリ上の領域1640に退避する(処理1664)。図16(c)で、次に、EXT_SET_LICENSE CMD426によるデータ入力があった場合、カード240は、一時的に当該データ(d2)をバッファ1610に格納し(処理1666)、その後、まだ全データの転送が終了していないため、バッファ1610上のデータ(d2)をフラッシュメモリ上の領域1650に退避する(処理1668)。図16(d)で、さらにEXT_SET_LICENSE CMD426によるデータ入力があった場合、カード240は、一時的に当該データ(d3)をバッファ1610に格納し(処理1670)、その後、これで対象とする全データ(d1〜d3)の転送が完了したため、バッファ1610上のデータ(d3)を、全データサイズ及び順序に基づき、バッファ1630にコピー(移動)する(処理1672)。図16(e)で、次にフラッシュメモリ上の領域1640及び1650に格納してあるデータ(d1,d2)を、全データサイズ及び順序に基づき、それぞれバッファ1610及び1620にコピー(移動)する(処理1674)。
図16(f)で、これにより、データ(d1〜d3)は端末(110)から送られてきた順番でバッファ1610,1620,1630上に格納されることになり、カード240は、このデータ(d1〜d3)を用いて処理を開始してもよい(処理1676)。SET_LICENSE CMD及びEXT_SET_LICENSE CMDにより送られてくるデータは、データの並び順と相関のある形式で暗号化されているため、データが連続して配置されていると、データの並び替えを行う回数を減じることができるために処理効率が向上するという効果がある。特に送られてくるデータが、データ内の他の部分と相関を持つように暗号化されており、記憶装置200(カード240)が受け取ったデータを復号する場合は、図16(f)のように連続的なアドレスに配置することで処理効率が高まるという効果がある。またこの方式を用いることで、SET_LICENSE CMDとEXT_SET_LICENSE CMDとの間、またはEXT_SET_LICENSE CMDとEXT_SET_LICENSE CMDとの間に他の命令が入った場合でも、データが破壊されることなく処理を継続して行えるという利点がある。またこの方式は、データ退避用のバッファを、内部RAM等を新規に追加する場合よりも、フラッシュメモリ(230)やHDDの一部を割り当てて利用できるため、半導体装置の製造コストが低減できるという利点がある。またフラッシュメモリやHDDのような記憶装置は、一度に規定の大きさを単位として書き込みを行う特徴があるため、送られてきたデータを逐次書き込むよりも、データを一定量まとめて書き込む方が高速に処理可能になる。従って内部のRAMに余裕がある場合、暗号処理のためのバッファとして占有させるよりも、できるだけ多くデータ転送のためのバッファに割り当てる場合の方が、データ転送速度が向上するため、本実施の形態の上記方式の処理を用いることにより実装効率が高まるという利点がある。
この仕組みは、SET_LICENSE CMDの場合に限らず、他の処理において行ってもよい。データ入力の際の管理方式に関してはSET_LICENSE CMDの方式をとり、データ出力の際の管理方式に関しては後で述べるSEND_MOVE_LICENSE CMDの方式をとればよい。
また、カード240は、前記処理1674(退避用領域からバッファへのデータ移動)の際に、バッファとして用意されたメモリが退避したデータよりも小さい場合にはデータの一部を当該メモリに読み出す仕組みでもよい。また、この場合、処理1674を行わず、バッファ上に用意した領域をメモリ上のデータとみなして処理を行ってもよい。この場合、処理1676でメモリアクセスが発生すると、指定したアドレスを含むブロックがバッファのメモリ上に読み出され、次に別のアドレスへのアクセス要求が発生した場合に、それが異なるブロックのデータであるならばメモリの中身を対応するバッファに書き戻した後にアクセスが発生したブロックを読み出す仕組みであってもよい。
前記図4で、証明書失効リストについては、格納する前に署名の確認、発行日時の確認、発行者の確認を行った後に格納または更新を行ってもよい(処理428)。処理428が終了すると、MDU変換モジュール162は、カード240からの出力を確認し(処理432)、DRMエージェントモジュール140に通知する。DRMエージェントモジュール140は、処理432の結果を受け、トランザクションIDを元にコンテンツテーブルから対象となるライセンス情報の格納番号を検索する(処理434)。この際、アプリケーション130は、ライセンス情報の上書きを許可するかしないかの設定を行ってもよい(処理436)。ライセンス情報については通常一度書き込まれた後は消去する必要はないが、ライセンス情報を格納する領域が足りなくなったり、ライセンス情報の期限が切れて無効になったりした場合などに、上書きを指定することで既にその場所にライセンス情報があっても上書きが可能になる。ただし格納位置が一番若い空き番号の領域に格納されるなど、DRMエンティティ160側の判断で決定される場合には、格納位置の指定を行わなくてよい。この場合、ライセンス情報がどこに格納されたかの情報については、ステータス情報読み出し1180により獲得できてもよい。
図18(a),(b)は、ライセンス情報書き込みの際の処理手順について表している。図18(b)で、カード240は、命令であるWRITE_LICENSE CMDが入力されると(処理1840)、指定された格納領域のエリア情報(ライセンス情報)を読み出す(処理1842)。エリア情報には、ライセンス情報が既に書き込まれているかどうかの情報が書き込まれており、カード240は、この情報を元に、対象領域に既にライセンス情報が格納されているかどうかを確認する(処理1844)。未書き込みの状態であるならば(1844-No)、書き込み手続き1848を行ってもよい。ここで書き込み手続き1848とは、書き込みのための領域の消去処理やテーブルの更新準備等が該当する。また書き込み済みの場合であっても(1844-Yes)、WRITE_LICENSE CMD442で上書きが指定されているならば(処理1846−Yes)、書き込み手続き1848を行ってもよい。これに該当しない場合(1846−No)、カード240はエラーを返してもよい(処理1850)。書き込み手続き1848が成功した場合、ライセンス情報を書き込んで更新してもよい(処理1852)。このように、上書き指定をWRITE_LICENSE CMD442と一緒に行うことで、専用の命令を用意する必要がなくなるという効果がある。例えば専用の命令を用意する必要がある場合で、既にある領域に対して上書きが禁止されている場合、ライセンス情報転送処理の途中で領域が足りなくなった場合に、上書き禁止解除のための命令をライセンス情報転送の一連の処理に割り込ませて実行させる必要が生じる。このための処理はWRITE_LICENSE CMDのみで上書き禁止と解除が可能な場合と比べ実装コストの増加と処理速度の低下を引き起こす。
前記図4で、格納位置及びパラメータ(格納番号及び上書き指定のデータ438)は、MDU変換モジュール162によってWRITE_LICENSE CMD442に変換される(処理440)。WRITE_LICENSE CMD442は、カード240に送られて処理される(処理444)。処理444としては、格納位置として指定された領域をパラメータの指定に従って調べ、ライセンス情報を書き込むかどうかの判断をする処理等が該当する。また同時に、ログ情報として、ライセンス情報に含まれるトランザクションIDでログ情報中のトランザクションIDを更新する処理と、ライセンス情報転送の状態を完了にする処理(転送終了状態書き込み)を行ってもよい。MDU変換モジュール162は、処理444のエラーを確認し(処理446)、DRMエージェントモジュール140またはアプリケーション130に通知する。DRMエージェントモジュール140またはアプリケーション130は、続けて処理(ライセンス情報転送処理)を行うかどうかを判断する(処理448)。続けて処理を行わない場合は、DRMエージェントモジュール140は、CLOSE PDU452を生成し、相手の端末110に送信してもよい(処理450)。CLOSE PDU452には、メッセージID、トランザクションIDの情報が含まれる。
CLOSE PDU452の送信後、DRMエージェントモジュール140は、CONFIRM PDU460を待機する状態に遷移してもよい。一定時間応答がない場合、DRMエージェントモジュール140は、再度CLOSE PDU452を送信してもよい。CONFIRM PDU460を受信すると、DRMエージェントモジュール140は、DRMエンティティモジュール160を開放し、処理を終了してもよい(処理462)。
前記と同様に、ここで、端末110側で行っていたライセンス情報を獲得する処理を、端末100側が行ってもよい。図5及び図15は、その際の処理手順を表している。
図5で、DRMエージェントモジュール140は、OPEN PDU510を受信すると、利用する鍵セットとDRMエンティティの選択を行ってもよい(処理512)。ただし既にDRMエンティティモジュール160が選択済みであるか、一つしかないことがわかっている場合には、DRMエンティティモジュール160の選択を省略してもよい。またカード240が論理チャネルを持ち複数の処理を同時に行うことが可能な場合、利用する論理チャネルを選択してもよい。また利用可能な鍵セットが複数ある場合は、利用する鍵セットの番号を指定することにより鍵セットを選択してもよい。利用する鍵セットと論理チャネル番号(データ514)は、MDU変換モジュール162によりSELECT_SERVICE CMD518に変換され(処理516)、カード240へ送られて処理される(処理520)。処理520としては、指定された鍵セットの番号に基づき鍵セットを必要ならばメモリ上に読み出す処理や、指定された論理チャネル用のメモリ領域をセットする処理などが該当する。
処理520が終了すると、MDU変換モジュール162は、エラーがあるかどうかを確認し(処理522)、DRMエージェントモジュール140に通知する。DRMエージェントモジュール140は、OPEN PDU510に含まれる通信先の端末110から送られてきた証明書を取り出しDESTINATION CERT MDU526を生成する(処理524)。DESTINATION CERT MDU526は、MDU変換モジュール162でVERIFY_CERT CMD530に変換され(処理528)、カード240に送られて処理される(処理532)。処理532としては、指定された鍵セットに含まれる証明書発行者の公開鍵を用いて証明書を検証し、正しく検証できた場合に公開鍵を取り出す操作などが該当する。
処理532が終了すると、MDU変換モジュール162は、エラーの有無の確認を行い(処理534)、エラーがない場合には、SEND_SESSION_KEY CMD538を生成し(処理536)、カード240へ送信して処理させる(処理540)。処理540としては、カード240内の乱数発生器を用いて第一セッション鍵を生成し、検証された公開鍵を用いて第一セッション鍵を暗号化して送信する処理等が該当する。MDU変換モジュール162は、カード240から出力された暗号化第一セッション鍵542を受け取ると、あわせてエラーの確認を行い、エラーがない場合、暗号化第一セッション鍵542をSOURCE_KEY MDU546へ変換し(処理544)、DRMエージェントモジュール140に送る。DRMエージェント140は、SOURCE_KEY MDU546を受け取ると、OPEN PDU510で指定されたコンテンツIDに対応したトランザクションIDを生成し、これとSOURCE_KEY MDU546からESTABLISH PDU550を生成して、通信相手に送信する(処理548)。
図15で、ESTABLISH PDU550の送信後、DRMエージェントモジュール140は、GET_LICENSE PDU1410を待機する状態に遷移する。この状態がある一定の時間以上続いた場合、DRMエージェントモジュール140は、状態を保存したまま処理を一時停止してもよい。GET_LICENSE PDU1410は、メッセージID、トランザクションID、暗号化第二セッション鍵、ライセンス情報リストの情報が含まれる。
DRMエージェント140は、GET_LICENSE PDU1410を受け取ると、GET_LICENSE PDU1410中の第一セッション鍵で暗号化された第二セッション鍵と証明書失効リストの更新日時と通信先DRMエンティティの個別公開鍵と、ライセンス情報リストとを用いて、DESTINATION_KEY MDU1414を生成する(処理1412)。MDU変換モジュール162は、DESTINATION_KEY MDU1414を受け取ると、その中の第一セッション鍵で暗号化された第二セッション鍵と証明書失効リストの更新日時と通信先DRMエンティティの個別公開鍵とを用いて、ESTABLISH_MOVE_SESSION CMD1418を生成し(処理1416)、カード240に送信して処理させる(処理1420)。処理1420としては、第一セッション鍵で暗号化されたデータを復号して第二セッション鍵と証明書失効リストの更新日時と通信先DRMエンティティの個別公開鍵を取り出す操作などが該当する。証明書失効リストの更新日時が存在しているならば、対応する証明書失効リストを検索し、その日時と比較する。もしも自分の持っているリストのほうが新しければ、SEND_MOVE_LICENSE CMD1440を用いて送るために証明書失効リストの転送の準備を行う。通信先DRMエンティティの個別公開鍵が含まれている場合は、メモリ上にセットする。処理1420が終了すると、MDU変換モジュール162は、エラーの有無を調べ(処理1422)、エラーがない場合、READ_LICENSE CMD1432を生成する。この際、アプリケーション130は、GET_LICENSE PDU1410に含まれるライセンス情報リストを元にライセンス情報の転送方法を指定する(処理1426)。DRMエージェントモジュール140は、トランザクションIDを元にコンテンツテーブルから対象となるライセンス情報の格納番号を検索し(処理1428)、これとライセンス情報の指定をあわせたデータ(読み出し方法指定と格納番号)1430を生成する。READ_LICENSE CMD1432は、このデータ1430を元に生成される(処理1424)。ここで指定される読み出し方法は、GET_LICENSE PDU1410に含まれるライセンス情報リストの指定に従わず、予め決められた方法を採用してもよい。予め転送方法が定められている場合、ライセンス情報リストがGET_LICENSE PDU1410に含まれていなくてもよい。逆にサポートされていないライセンス情報リストが送られてきた場合、DRMエージェンモジュール140またはアプリケーション130は、ライセンス情報の転送処理を許可せず、処理を終了してもよいし、正しいアクセス条件が送られてくるまでエラーを返す仕組みであってもよい。
図5及び図15で行われるライセンス情報の転送処理において、転送方法は、移動処理、コピー(複製)処理、貸し出し処理、返却処理に分けられる。前記移動処理とは、ライセンス情報をそのまま相手に渡す操作であり、移動元からは移動した分だけのライセンス(権利)が減少し、移動先でその減少した分だけライセンス情報が増加する方式である。前記移動処理において移動可能な回数が定められていてもよい。前記コピー処理は、コピー元のライセンス(権利)を保持したまま、コピー元のライセンス(権利)の全部もしくは一部を複写した情報が転送される方式である。前記コピー処理においてコピー可能な回数が定められていてもよい。前記貸し出し処理は、前記コピー処理の一種であり、貸し出し元のライセンス(権利)を保持したまま、貸し出し元のライセンス(権利)の全部もしくは一部を複写した情報が貸し出し先に転送される方式であるが、貸し出し元は貸し出した情報を保持しておき、貸し出し中は同じライセンス情報を他に貸し出す際に制限が発生する方式である。例えば貸し出し上限数が3回に設定されたライセンス情報は、他のDRMエンティティに3回ライセンス情報を貸し出し可能であるが、3回貸し出してしまうと次の貸し出しは行えなくなる。ただし、貸し出したDRMエンティティによりライセンス情報が返却されると、返却された分だけ再びライセンス情報の貸し出しが可能になる。貸し出しを行った際に、貸し出し中は元のライセンス情報が使えない仕組みであってもよいし、貸し出した先でのみライセンス情報の利用が可能であってもよい。ただし、貸し出したライセンス情報を返却する際は、返却処理を用いる。転送方法のどれを利用するかについては、転送元がライセンス情報リストによらず選択してもよい。すなわち転送先のDRMエージェントは、転送処理の種類を明示的に選択できなくてもよい。またDRMエージェントは、通信相手を識別して利用できる転送方式に制限を設けてもよい。この制限は、通信手段や通信先のIPアドレスやMACアドレスを元にして、ローカルなIPアドレスでのネットワーク転送は可能だが、グローバルなIPアドレスに対してのコピーや移動処理を禁止したり、予め登録してあるMACアドレスのみに転送したり、逆に指定されたMACアドレスへの転送を禁止したりする操作等が該当する。カード240では、移動処理、コピー処理、貸し出し処理、返却処理に対して識別番号が割り振られており、カード240は図14のREAD_LICENSE1432を受け取ると、指定された識別番号に従い処理を行う。
図18(a)は、このときの処理手順を表している。READ_LICENSE CMD1432が入力されると(処理1810)、カード240は、メモリ上にライセンス情報を読み出す(処理1812)。次に命令のパラメータで指定されている処理に従い処理を行う。ここで処理1814、処理1818、処理1822、処理1826の処理順は異なっていてもよい。パラメータで移動処理が指定された場合(処理1814)、ライセンス情報で移動処理が許諾されているかを調べ、許諾されているならば制限を満たすように移動手続きの処理を行う(処理1816)。ここで満たされるべき制限とは、移動可能回数による制限、移動するライセンス情報の内容に関する制限などが該当する。移動可能回数に制限がある場合、移動するライセンス情報の移動可能回数を1回減じたのちに転送のためのデータ保存領域にライセンス情報を格納し、特定のパラメータの送出を制限する等の内容に関する制限がある場合、送出するライセンス情報はこの制限に従い設定される。
またコピー処理が指定された場合(処理1818)、ライセンス情報でコピー処理が許諾されているかを調べ、許諾されているならば制限を満たすように複製手続きの処理を行う(処理1820)。ここで満たされるべき制限とは、コピー可能回数による制限、コピーするライセンス情報の内容に関する制限などが該当する。コピー可能回数に制限がある場合、コピーするライセンス情報のコピー可能回数を1回減じたのちに転送のためのデータ保存領域にライセンス情報を複製し、特定のパラメータの送出を制限する等の内容に関する制限がある場合、送出するライセンス情報はこの制限に従い設定される。この処理には第2世代の複製を禁止するために、もとのライセンス情報に設定されたコピー可能回数に関わらずコピー可能回数を0にするか、許諾情報としてコピーを禁止するなどの処理が該当する。
また貸し出し処理が指定された場合(処理1822)、ライセンス情報で貸し出し処理が許諾されているかを調べ、許諾されているならば制限を満たすように貸し出し手続きの処理を行う(処理1824)。ここで満たされるべき制限とは、貸出し可能回数による制限、貸出しするライセンス情報の内容に関する制限などが該当する。貸出し可能回数に制限がある場合、貸出しするライセンス情報の貸出し可能回数を1回減じたのちに転送のためのデータ保存領域にライセンス情報を複製し、特定のパラメータの送出を制限する等の内容に関する制限がある場合、送出するライセンス情報はこの制限に従い設定される。この処理には第2世代の貸出したライセンス情報を元のライセンス情報と区別するために貸し出されたことを示す情報を付加したり、貸出元と貸出先でどの端末に対して貸し出し処理が発生したかの情報を記録しておく処理や、貸し出し後のライセンス情報の移動やコピーを禁止するために、これらの制限回数に関わらず制限回数を0にするか、許諾情報としてこれらの処理を禁止するなどの処理が該当する。
また返却処理が指定された場合(処理1826)、そのライセンス情報が貸し出されたものであるかどうかを調べ、貸し出されたものであるならば制限を満たすように返却手続きの処理を行う(処理1828)。ここで満たされるべき制限とは、返却先の端末やライセンス情報に関する制限などが該当する。返却処理は、特定の端末か、特定のライセンス情報を有する端末に対して行われる操作であるため、返却する際に通信相手の端末が返却先として適しているかどうかを予め判断しておいてもよい。また返却先が貸し出したライセンス情報であることを認識可能な情報を返却処理で移動するライセンス情報に含ませておくことで、返却先で判断する仕組みであってもよい。貸し出したライセンス情報であることを認識するための情報としては、貸出し元の装置の識別番号や、貸出し元のライセンス情報の識別番号などが該当する。これらの情報は正しく貸し出し処理が行われていない限り貸出先に転送されない情報であるため、この情報が含まれていることでライセンス情報転送元はそれが貸し出したライセンス情報であることを認識することができる。上記のどれにも該当しないならば、エラーを返してもよい(処理1830)。処理1816、処理1820、処理1824、処理1828が行われると、その処理結果に基づき、カード240は、ライセンス情報を更新し(処理1832)、ライセンス情報を出力、送信してもよい(処理1834)。以上の4つの処理は、ライセンス情報を記憶装置200から読み出し、転送のためのメモリ領域に格納する間に違いがあるだけなので、その他の処理は共通化することが可能である。従って複数の命令に分けることなく、1つの命令として処理することで、処理内容の共通化が図れるという効果がある。
図14で、カード240は、READ_LICENSE1432を受け取って処理する(処理1434)。処理1434としては、指定されたライセンス情報をメモリに読み出し、そのライセンス情報の範囲で指定された転送方法を用いた処理が可能かどうかを判断する操作等が該当する。処理1434が終了すると、MDU変換モジュール162は、処理結果を受け取り次の命令が発行可能かどうかを判断してもよい(処理1436)。命令が発行可能な場合、SEND_MOVE_LICENSE CMD1440を発行してもよい(処理1438)。カード240は、SEND_MOVE_LICENSE CMD1440を受け取るとデータ処理行う(処理1442)。処理1442としては、ライセンス情報を指定された転送方式にあわせて全部またはその一部を抽出し、必要ならばESTABLISH_MOVE_SESSION CMD1418で受け取った通信先DRMエンティティの個別公開鍵で暗号化し、それに処理1420の結果として送出すべき証明書失効リストが存在するならば暗号化されたライセンス情報に連結し、連結後のデータを処理1420で抽出した第二セッション鍵で暗号化して、送出する処理などが該当する。また同時にログ情報に送出したライセンス情報のトランザクションIDを格納し、ライセンス情報送出の状態を完了に遷移させてもよい。MDU変換モジュール162は、カード240より出力された暗号化ライセンス情報1444を受け取ると、エラーの確認を行い、エラーがない場合、暗号化ライセンス情報1444をLICENSE MDU1448に変換してもよい(処理1446)。またこのとき、送出された暗号化ライセンス情報の長さを調べ、送出されたデータがこれに満たない場合は、EXT_SEND_MOVE_LICENSE CMDを発行し継続するデータを読み出してもよい。この場合、処理1442でのログ情報への結果の反映は、全データがEXT_SEND_MOVE_LICENSEにより出力された後に行う。また処理1442で送出するデータが転送ブロックサイズよりも大きいことがわかった場合は、残りのデータをセキュリティ処理のためのバッファに格納しておくか、記憶装置上に一時的に格納しておいてもよい。この情報はデータ送出後に消去されてもよい。全データが送出された状態でEXT_SEND_MOVE_LICENSE CMDが発行された場合、カード240はエラーを返してもよい。
図17(a)〜(e)は、このときのカード240内の動作の詳細を説明したものである。図16と同様に、記憶領域である1710,1720,1730は、カード240上のバッファを表しており、このバッファはシングル転送処理で一度に転送可能なデータサイズに対応した同じ大きさを持つ。図17(a)で、カード240は、SEND_MOVE_LICENSE CMD1440の入力による処理が終了すると(処理1660)、入力されたデータの全体のサイズを調べ、フラッシュメモリチップ230のフラッシュメモリ上のカード240が管理しユーザによる操作が行えない領域上に退避用領域を確保する(処理1762)。退避のために利用できるフラッシュメモリのサイズより出力データのサイズが大きい場合はエラーを返してもよい。ここでは、バッファ二つ分を超え、かつ三つ分以下のサイズのデータ(d1〜d3)を送る場合について説明する。
図17(b)で、カード240は、今回の処理で一度には送れないバッファ1720,1730のデータ(d2,d3)を、それぞれ退避用領域1740,1750に退避し(処理1764)、図17(c)で、バッファ1710上のデータを出力する(処理1766)。図17(d)で、次にカード240は、EXT_SEND_MOVE_LICENSE CMDを受け取ると、退避用領域1740上のデータ(d2)をバッファ1710にコピー(移動)し(処理1772)、バッファ1710上のデータ(d2)を出力する(処理1770)。図17(e)で、さらにカード240は、EXT_SEND_MOVE_LICENSE CMDを受け取ると、退避用領域1750上のデータ(d3)をバッファ1710にコピー(移動)し(処理1776)、バッファ1710上のデータ(d3)を出力する(処理1774)。
この方式を用いることで、SEND_MOVE_LICENSE CMDとEXT_SEND_MOVE_LICENSE CMDとの間、またはEXT_SEND_MOVE_LICENSE CMDとEXT_SEND_MOVE_LICENSE CMDとの間に他の命令が入った場合でも、データが破壊されることなく処理が継続して行えるという利点がある。またこの方式はデータ退避用のバッファを、内部RAM等を新規に追加する場合よりも、フラッシュメモリ(230)やHDDの一部を割り当てて利用できるため、半導体装置の製造コストが低減できるという利点がある。
ここで、カード240が、EXT_SEND_MOVE_LICENSE CMDをサポートしない場合で、送るべきデータがライセンス情報に付加して送信する証明書失効リストが複数あるためにブロックサイズを超えてしまう場合がある。このとき証明書失効リストを1つ加えた状態でのデータサイズがブロックサイズ以下になることがわかっている場合、送出する証明書失効リストを選択して送る方式であってもよい。この場合、複数ある中で送るべき証明書失効リストは、現在利用されている鍵セットに対応した証明書失効リスト、より古くからカード240に格納されている鍵セットの証明書失効リストの順で優先付けして送ることが望ましい。この場合、現在利用されている鍵セットに対応した証明書失効リストを優先して送信することで、選択されているサービスを利用するライセンス情報の転送処理で必要となる証明書失効リストの転送が可能となるという効果がある。また古くからカード240に格納されている鍵セットを選ぶことにより、より広く使われている可能性の高い鍵セットから順に失効した鍵を登録していくことができるという効果がある。この結果、一度の転送では複数ある新しい証明書失効リストを転送できないが、何度も転送処理を繰り返している間に転送先のDRMエンティティモジュール160の証明書失効リストをより新しいものに更新できるという効果がある。
図14で、DRMエージェントモジュール140は、LICENSE MDU1448を受け取ると、RES_GET_LICENSE PDU1452に変換し、通信先に送信してもよい(処理1450)。RES_GET_LICENSE PDU1452の送信後、DRMエージェントモジュール140は、図15のCLOSE PDU1570を待機する状態に遷移する。この状態がある一定の時間以上続いた場合、DRMエージェントモジュール140は、状態を保存したまま処理を一時停止してもよい。図15で、DRMエージェントモジュール140は、CLOSE PDU1570を受信すると、DRMエンティティを開放し(処理1572)、CONFIRM PDU1576を生成し(処理1574)、送信してもよい。
図3及び図4のライセンス情報転送処理においてライセンス情報転送処理が失敗した場合、タイミングによっては送出元のライセンス情報が減少しているにも関わらず、送出先のライセンス情報が増加していない状態になる恐れがある。このとき、単に転送処理を最初からやり直すだけでは、減少したライセンス情報を復元させることはできない。UDACv2では、このような場合にライセンス情報を復元し、転送再開させるためのプロトコルを定義している。しかしUDACv2ではDRMエージェントとDRMエンティティの接続方法、並びにDRMエンティティが分離可能であり、また複数接続可能な記憶装置である場合の実装方式については定義されていない。本実施の形態では、MDU変換モジュール162を用いてTRMモジュール164への入出力形式に変換することにより、互換性及び接続性が向上するという効果がある。図6はこの際の処理手順を表している。
図6で、アプリケーション130は、接続が切断した場合、DRMエージェントモジュール140に対して再接続要求を行ってもよい(処理610)。ただしこの処理610は、接続が中断したことをDRMエージェントモジュール140が検知することにより行われる仕組みであってもよい。DRMエージェントモジュール140は、REOPEN PDU614を生成して送信する(処理612)。REOPEN PDU614は、メッセージID、トランザクションIDなどの情報が含まれる。
REOPEN PDU614の送信後、DRMエージェントモジュール140は、RECOVER PDU630を待機する状態に遷移する。この状態がある一定の時間以上続いた場合、DRMエージェント140は、再びREOPEN PDU614を送信してもよい。RECOVER PDU630は、メッセージID、トランザクションID、暗号化第三セッション鍵などの情報が含まれる。
DRMエージェントモジュール140は、RECOVER PDU630を受信すると、RECOVER PDU630に含まれるトランザクションID及び暗号化第三セッション鍵からRECOVER_KEY MDU634を生成する(処理632)。MDU変換モジュール162は、RECOVER_KEY MDU634に含まれるトランザクションIDと公開鍵で暗号化された第三セッション鍵の情報から、カード240への入力に適したRECOVER_SESSION CMD638を生成し(処理636)、カード240に送信して処理する(処理640)。処理640としては、入力された公開鍵で暗号化された第三セッション鍵を、対応する個別秘密鍵で復号する操作と、トランザクションIDをメモリに格納する操作等が該当する。処理640が終了すると、MDU変換モジュール162は、その結果を受けてエラーが発生しているかを確認し(処理642)、エラーがない場合は、SEARCH_LICENSE CMD646を生成し(644)、カード240に入力して処理させる(処理648)。処理648としては、RECOVER_SESSION CMD638で入力したトランザクションIDを用いて、これに一致するトランザクションIDを持つライセンス情報を検索する処理が該当する。処理648が終了すると、MDU変換モジュール162は、終了通知を受け取りエラーの状態を確認する(処理650)。エラーがない場合、MDU変換モジュール162は、SEND_HASHED_LOG CMD654を生成し(処理652)、カード240に入力して処理する(処理656)。処理656としては、ログ情報中に含まれるトランザクションIDと見つかったトランザクションIDとが同じかどうかを判断し、同じ場合には前のセッションで利用していた第2セッション鍵とトランザクションIDとライセンス情報転送の状態と第三セッション鍵のハッシュ値を計算し、これにトランザクションIDとライセンス情報の状態を連結した情報を送信する処理等が該当する。MDU変換モジュール162は、エラーの確認にあわせて、トランザクションIDとライセンス情報転送の状態とハッシュ値からなるデータ658からLOG MDU662を生成する(処理660)。DRMエージェント140は、LOG MDU662を受け取るとLOG PDU666に変換し、通信相手に転送する(処理664)。LOG PDU666は、メッセージID、トランザクションID、状態、ハッシュ値などの情報が含まれる。
LOG PDU666の送信後、DRMエージェントモジュール140は、ACK PDU670を待機する状態に遷移する。この状態がある一定の時間以上続いた場合、DRMエージェントモジュール140は、REOPEN PDU614を送信してもよい。DRMエージェント140は、ACK PDU670を受け取ると、ACK PDU670に含まれるトランザクションIDからTRANSACTION_ID MDU674を生成し、DRMエンティティ160に送ってもよい(処理672)。MDU変換モジュール162は、TRANSACTION_ID MDU674を受け取ると、ESTABLISH_WRITE_SESSION CMD378を生成してもよい(処理676)。これ以降の処理は、前記図3の処理374以降と同等の処理であってもよい。
図7は、図5のライセンス情報転送処理が失敗した場合のライセンス情報転送の再接続処理を表している。DRMエージェントモジュール140は、REOPEN PDU710を受信すると、REOPEN PDU710に含まれるトランザクションIDを用いてTRANSACTION_ID MDU714を生成する(処理712)。MDU変換モジュール162は、TRANSACTION_ID MDU714を受け取ると、RECOVER_MOVE_SESSION CMD718を生成し(処理716)、カード240に送信して処理させてもよい(処理720)。ここで処理720としては、ログ情報に含まれる、前の通信で利用していたトランザクションIDを取り出し、同じく前の通信で利用していた通信相手のDRMエンティティの個別公開鍵を取り出し、乱数発生器を用いて第三セッション鍵を生成し、生成した第三セッション鍵を通信相手のDRMエンティティの個別公開鍵で暗号化し、これとトランザクションIDを連結して出力する処理等が該当する。処理720が終了すると、MDU変換モジュール162は、データ(トランザクションIDと暗号化第三セッション鍵)722を受け取り、エラーがないことを確認して、RECOVER_KEY MDU726を生成する(処理724)。DRMエージェント140は、RECOVER_KEY MDU726を受け取ると、RECOVER PDU730を生成し、通信先に送信する(処理728)。RECOVER_KEY MDU726は、メッセージID、トランザクションID、暗号化第三セッション鍵などの情報が含まれる。
RECOVER PDU730の送信後、DRMエージェントモジュール140は、LOG PDU750を待機する状態に遷移する。この状態がある一定の時間以上続いた場合、DRMエージェントモジュール140は、状態を保存したまま処理を一時停止してもよい。
DRMエージェントモジュール140は、LOG PDU750を受信すると、LOG PDU750からLOG MDU754を生成する(処理752)。LOG MDU754は、第二セッション鍵とトランザクションIDとライセンス情報転送の状態と第三セッション鍵のハッシュ値と、トランザクションIDとライセンス情報の状態を連結した情報から構成される。LOG MDU754は、MDU変換モジュール162によってVERIFY_HASHED_LOG CMD758に変換され(処理736)、カード240に送信されて処理される(処理760)。処理760としては、RECOVER_MOVE_SESSION CMD718で受け取ったトランザクションIDとVERIFY_HASHED_LOG CMD758で受け取ったトランザクションIDとを比較し、一致した場合、このトランザクションIDと、前記処理720において乱数生成器で発生させた第三セッション鍵、ログ情報に格納された第二セッション鍵と送られてきたライセンス情報の状態のハッシュ値を計算し、それをVERIFY_HASHED_LOG CMD758で受け取ったハッシュ値と比較する。これが一致している場合、ライセンス情報の状態に従い、トランザクションIDに一致するライセンス情報の復活処理を行う。例えば転送先DRMエンティティでライセンス情報が未転送の状態で、転送元DRMエンティティのライセンス情報が転送済みの状態となっている場合、転送元DRMエンティティのライセンス情報を未転送の状態に戻してもよい。この結果は、ステータス情報の確認を行うことによって獲得してもよい。これによりライセンス情報が復活した場合、ステータス情報にそのライセンス情報の番号がセットされる。MDU変換モジュール162は、処理760のエラーを確認し(処理762)、処理が成功している場合、SEND_SCSR CMD766を生成し(処理764)、カード240に送って処理させてもよい(処理768)。処理768としては、復活したライセンス情報の番号を送信する処理などが該当する。MDU変換モジュール162は、エラーがないことを確認し、ライセンス情報番号をアプリケーション130またはDRMエージェントモジュール140が認識可能な形式に変換する(処理772)。DRMエージェントモジュール140は、ライセンス情報番号774を受け取ると、コンテンツテーブルから対象となるライセンス情報を検索して状態を更新し、ACK PDU778を生成して通信先に送信してもよい(処理776)。
ACK PDU778の送信後、DRMエージェントモジュール140は、GET_LICENSE PDU790を待機する状態に遷移する。この状態がある一定の時間以上続いた場合、DRMエージェントモジュール140は、状態を保存したまま処理を一時停止してもよい。DRMエージェントモジュール140は、GET_LICENSE PDU790を受け取ると、図14の処理1412以降の処理を行ってもよい。
ライセンス情報転送処理において、ライセンス情報を利用するために一時的にデコーダ(170)上に読み出したい場合がある。この際にデコーダに一度読み出した後にDRMエンティティに書き戻すことなく、読み出した後に破棄することを条件に読み出しを許可するプロトコルを用意していてもよい。
図8は、ライセンス情報を一時的に読み出して利用する際の処理手順である。この処理は、図5の処理548に継続して行うものとする。DRMエージェントモジュール140は、GET_LICENSE PDU810を受け取ると、GET_LICENSE PDU810中の第一セッション鍵で暗号化された第二セッション鍵と、ライセンス情報リストを用いてDESTINATION_KEY MDU814を生成する(処理812)。MDU変換モジュール162は、DESTINATION_KEY MDU814を受け取ると、その中の第一セッション鍵で暗号化された第二セッション鍵を用いてESTABLISH_PLAY_SESSION CMD818を生成し(処理816)、カード240に送信して処理する(処理820)。処理820としては、第一セッション鍵で暗号化されたデータを復号して第二セッション鍵を取り出す操作などが該当する。処理が終了すると、MDU変換モジュール162は、エラーの有無を調べ(処理822)、エラーがない場合、READ_LICENSE CMD832を生成する。この際、アプリケーション130は、GET_LICENSE PDU810に含まれるライセンス情報リストを元にライセンス情報の転送方法を指定する(処理826)。DRMエージェントモジュール140は、トランザクションIDを元にコンテンツテーブルから対象となるライセンス情報の格納番号を検索し、これとライセンス情報の指定をあわせたデータ830を生成する(処理828)。READ_LICENSE CMD832は、このデータ830を元に生成される。ここで指定される読み出し方法については、GET_LICENSE PDU810に含まれるライセンス情報リストの指定に従わず、予め決められた方法を採用してもよい。予め転送方法が定められている場合、ライセンス情報リストがGET_LICENSE PDU810に含まれていなくてもよい。逆にサポートされていないライセンス情報リストが送られてきた場合、DRMエージェンモジュール140またはアプリケーション130は、ライセンス情報の転送処理を許可せず、処理を終了してもよいし、正しいアクセス条件が送られてくるまでエラーを返す仕組みであってもよい。カード240は、READ_LICENSE CMD832を受け取ると、格納番号のライセンス情報を、指定された読み出し方法に従い読み出し可能かどうかを判断し、可能である場合に読み出してメモリにセットしてもよい。
ライセンス情報の読み出し方法としては、読み出し処理とエクスポート処理等が該当する。前記読み出し処理は、一時的にライセンス情報を読み出す処理であり、利用後にライセンス情報を読み出し先に残さない処理である。前記読み出し処理は、回数により実行回数が制限されていてもよい。前記エクスポート処理は、他のDRMモジュールへライセンス情報を転送するために読み出される処理である。エクスポート後、DRMエンティティにライセンス情報が残るかどうかは、ライセンス情報内のフラグをDRMエンティティが判断して行ってもよい。読み出し方法が読み出し処理であるかエクスポート処理であるかの判断については、ライセンス情報転送元のDRMエージェントまたはアプリケーションが行う。すなわち、エクスポート処理でのライセンス情報読み出し先は、ライセンス情報転送元に存在するDRM変換機能付きデコーダDRMエンティティであることが望ましい。また同様に、ライセンス情報を読み出す番号の指定も、ライセンス情報転送元のDRMエージェント又はアプリケーションが行うことが望ましい。前記エクスポート処理は、回数により実行回数が制限されていてもよい。以上の2つの処理も、ライセンス情報を記憶装置200から読み出して転送のためのメモリ領域に格納する間に違いがあるだけなので、その他の処理は共通化することが可能である。従って複数の命令に分けることなく、1つの命令として処理することで、処理内容の共通化が図れるという効果がある。
ライセンス情報が転送可能である場合で、ライセンス情報に回数制限が存在する場合、その回数を減じる。処理が終了すると、MDU変換モジュール162は、エラーの状態を確認する(処理836)。エラーがない場合、MDU変換モジュール162は、SEND_PLAY_LICENSE CMD840を生成し(処理866)、カード240に送って処理させる(処理842)。処理842としては、転送可能なライセンス情報を第二セッション鍵で暗号化して送出する処理等が該当する。処理842が終了すると、MDU変換モジュールは、エラーを確認し、エラーがない場合には、出力された暗号化ライセンス情報844をLICENSE MDU848に変換する(処理846)。DRMエージェント140は、LICENSE MDU848を受け取ると、データよりRES_GET_LICENSE PDU852を生成して通信相手に送信してもよい(処理850)。RES_GET_LICENSE PDU852は、メッセージID、暗号化ライセンス情報などの情報が含まれる。
RES_GET_LICENSE PDU852の送信後、DRMエージェントモジュール140は、CLOSE PDU870を待機する状態に遷移する。この状態がある一定の時間以上続いた場合、DRMエージェントモジュール140は、状態を保存したまま処理を一時停止してもよい。DRMエージェントモジュール140は、CLOSE PDU870を受信すると、DRMエンティティモジュール160を開放し(処理872)、CONFIRM PDU876を生成し送信してもよい(処理874)。CONFIRM PDU876は、メッセージID、トランザクションIDなどの情報が含まれる。
ライセンス情報転送処理において、複数のライセンス情報の転送処理をまとめて行いたい場合、DRMエージェントは、2回目以降のライセンス情報の転送処理において、認証処理を省略してもよい。ライセンス情報転送処理において、ライセンス情報はコンテンツIDにより指定され、対応するトランザクションIDにより管理される。従って、コンテンツIDとトランザクションIDの情報は、一対一で管理されていることが望ましい。また、新規のライセンス情報の転送処理の要求は、直前のトランザクションの終了処理と兼ねて行うことで、通信量の低減及び速度向上の効果が期待できる。従って、ライセンス情報転送処理において図15における処理1572から処理1574までの処理は、図14における処理1472から処理1474までの処理と置き換え、また図4における処理450から処理462までの処理は、図13における処理1350から処理1360の処理に置き換わる。またライセンス情報読み出し処理において図8の処理872から処理874までの処理は、図12における処理1272から処理1274の処理に置き換わる。
図14では、DRMエージェントモジュール140は、REPEAT PDU1470を受け取ると、前のトランザクションに対する処理1572の内容に加え、REPEAT PDU1470に含まれるコンテンツIDに対応する新規トランザクションIDの生成を行う(処理1472)。この処理1472が終わると、DRMエージェントモジュール140は、REPEAT PDU1470に含まれるメッセージIDとトランザクションID、処理1472で生成した新しいトランザクションIDを用いて、RES_REPEAT PDU1476を生成し、通信相手に送信してもよい(処理1474)。RES_REPEAT PDU1476は、メッセージID、トランザクションID、及び新トランザクションIDの情報が含まれる。この後、DRMエージェントモジュール140は、GET_LICENSE PDU1410を待機する状態に移行してもよい。
図13において、処理1312から処理1348の処理は、図4における処理412から処理448までと同等の処理である。処理448においてアプリケーション130が続けて転送を行うと判断した場合(処理1348)、アプリケーション130は、新規に獲得するコンテンツのIDをDRMエージェントモジュール140に指定し、DRMエージェントモジュール140は、新規にメッセージIDを生成し、生成したメッセージID、今まで利用していたトランザクションID、新規に指定されたコンテンツIDを用いて、REPEAT PDU1352を生成し、通信相手に送信してもよい(処理1350)。
REPEAT PDU1352の送信後、DRMエージェントモジュール140は、RES_REPEAT PDU1354を待機する状態に遷移する。この状態がある一定の時間以上続いた場合、DRMエージェントモジュール140は、状態を保存したまま処理を一時停止してもよい。DRMエージェント140は、RES_REPEAT PDU1354を受信すると、直前のトランザクションが完了したとみなし、送られてきた新トランザクションIDを用いて新規トランザクションを開始する。DRMエージェントモジュール140は、TRANSACTION_ID MDU1358を生成し、MDU変換モジュール162に送ってもよい(処理1356)。MDU変換モジュール162は、送られてきたTRANSACTION_ID MDU1358を元にSTART_TRANSACTION CMD1362を生成してもよい(処理1360)。この処理1360は、図3の処理368と同等の処理であってもよく、これ以降、図3の処理372以降の処理を行ってもよい。
図12では、DRMエージェントモジュール140は、REPEAT PDU1270を受け取ると、前のトランザクションに対する処理872の内容に加え、REPEAT PDU1270に含まれるコンテンツIDに対応する新トランザクションIDの生成を行う(処理1272)。この処理が終わると、DRMエージェントモジュール140は、REPEAT PDU1270に含まれるメッセージIDとトランザクションID、処理1272で生成した新トランザクションIDを用いてRES_REPEAT PDU1276を生成し、通信相手に送信してもよい(処理1274)。この後、DRMエージェントモジュール140は、GET_LICENSE PDU810を待機する状態に移行してもよい。
以上説明したように、本実施の形態によれば、端末(100,110)はライセンス情報の転送処理を行う記憶装置200がカード240のように分離接続可能である場合や、端末(100,110)と記憶装置200とが一対多、多対一、多対多で接続される場合であっても、記憶装置200の種別、機能、状態、格納されたライセンス情報の種別を獲得して効率的に処理することが可能となる。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
100,110…端末(情報処理端末装置)、120…ネットワークI/F、130…アプリケーション、140…DRMエージェントモジュール、142…通信制御モジュール、144…エンティティ管理モジュール、160…DRMエンティティモジュール、162…MDU変換モジュール、164…TRMモジュール、170…デコーダDRMエンティティモジュール、172…再生モジュール、180…ストレージ、200…記憶装置、210…MMCI/F、220…コントローラチップ、230…フラッシュメモリチップ、240…X-Mobile Card(カード)、250…スマートカードチップ。