(57)【要約】【課題】この発明は、データ保護機能を有する記憶素子に関し、２つの機能モジュール間のデータ転送時に、転送データの安全性を確保するための処理にかける時間および負担を軽減することを課題とする。【解決手段】機能モジュールからのデータの書込み操作と、データの読出し操作とを受ける記憶素子であって、前記データを格納する所定容量のメモリ領域を有し前記機能モジュールによって書込まれたデータを記憶する記憶部と、前記機能モジュールによって書込まれたデータのデータ量を前記機能モジュールから読出し可能なように格納したデータ量管理レジスタと、前記機能モジュールによって前記記憶部に記憶されたデータの読出しが行われた場合、当該読み出されたデータに対応するデータが格納された前記記憶部のメモリ領域について、前記機能モジュールによるデータの書込みが行われるまで、データの読出しを不能とするように制御するアクセス制御部とを備えたことを特徴とする。【選択図】図１
2008108212.tif 000002
【特許請求の範囲】
【請求項１】
機能モジュールからのデータの書込み操作と、データの読出し操作とを受ける記憶素子であって、
前記データを格納する所定容量のメモリ領域を有し前記機能モジュールによって書込まれたデータを記憶する記憶部と、
前記機能モジュールによって書込まれたデータのデータ量を前記機能モジュールから読出し可能なように格納したデータ量管理レジスタと、
前記機能モジュールによって前記記憶部に記憶されたデータの読出しが行われた場合、当該読み出されたデータに対応するデータが格納された前記記憶部のメモリ領域について、前記機能モジュールによるデータの書込みが行われるまで、データの読出しを不能とするように制御するアクセス制御部とを備えたことを特徴とするデータ保護機能を有する記憶素子。
【請求項２】
機能モジュールからのデータの書込み操作と、データの読出し操作とを受ける記憶素子であって、
前記データを格納する所定容量のメモリ領域を有し前記機能モジュールによって書込まれたデータを記憶し、前記データの書込みのみを許可するライトオンリーメモリ領域と、前記データの読出しのみを許可するリードオンリーメモリ領域とを有する記憶部と、
前記ライトオンリーメモリ領域に書込まれたデータを、前記リードオンリーメモリ領域に転送する転送処理部と、
一旦読み出されたデータを格納するリードオンリーメモリ領域についてライトオンリーメモリ領域からリードオンリーメモリ領域にデータが転送されるまで読み出しを不能とするアクセス制御部と、
前記機能モジュールによって書込まれたデータのデータ量として、前記転送処理部によって転送されたデータのデータ量を、前記機能モジュールから読出し可能なように格納する前記データ量管理レジスタと、を有することを特徴とする記憶素子。
【請求項３】
請求項１または２に記載の記憶素子であって、
前記機能モジュールからのアクセスを許可又は禁止するためのアクセス制御フラグをさらに備え、
前記アクセス制御フラグが第１状態のとき前記機能モジュールからの前記記憶部の書込み許可および機能モジュールによる記憶部の読出し禁止とし、第２状態のとき機能モジュールからの記憶部の書込み禁止および機能モジュールによる記憶部の読出し許可とし、
前記機能モジュールによってデータが書込まれた後に、アクセス制御フラグを第２状態に設定することにより前記機能モジュールから記憶部を書込み禁止とし、
前記アクセス制御フラグが第２状態のときに前記機能モジュールからの読出し要求があった場合、前記機能モジュールによる記憶部の読出しを許可し、前記読出しが行われた後にアクセス制御フラグを第１状態に設定することにより前記機能モジュールによる記憶部を読出し禁止とすることを特徴とする記憶素子。
【請求項４】
請求項１乃至３に記載のいずれかの記憶素子と、
前記記憶素子にデータを書き込む第１機能モジュールと、
前記記憶素子からデータを読み出す第２機能モジュールとを備え、
第１機能モジュールが、コンテンツデータを前記記憶素子の記憶部に書き込んだ後、前記記憶素子は書込まれたコンテンツデータの読み出しを可能となるように制御し、第２機能モジュールが記憶部に記憶されたコンテンツデータを読出すことを特徴とする情報処理装置。
【請求項５】
請求項４に記載の情報処理装置であって、
前記第１機能モジュールが、
前記記憶素子に書込んだデータのデータ量Ｄ１を管理する通信量管理部と、
前記記憶素子においてデータの不正アクセスが行われていることを検出する不正検出部とを備え、
前記第１機能モジュールの不正検出部は、前記記憶素子のデータ量管理レジスタを読み出すことで記憶素子に書込まれたデータ量Ｄ２を取得し、前記通信量管理部によって管理されているデータ量Ｄ１と、前記データ量Ｄ２とを比較することによって、データの不正アクセスが行われているか否かを判断することを特徴とする情報処理装置。
【請求項６】
請求項４又は５に記載の情報処理装置であって、
前記第２機能モジュールが、
前記記憶素子においてデータの不正アクセスが行われていることを検出する不正検出部を備え、
前記第２機能モジュールの不正検出部は、前記記憶素子から読み出したデータが、書込まれたデータに出現することのないパターンデータであることを検出した場合には、不正アクセスがあったと判断することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は，データ保護機能を有する記憶素子に関し，特に著作権保護を要するコンテンツの記録再生を行う情報処理装置で用いるデータ保護機能を有する記憶素子に関する。
【背景技術】
【０００２】
近年、情報機器において様々なコンテンツ保護がかかったコンテンツを扱うケースが増えている。
しかしコンテンツの保護の方法やエンコードの方法は規格により異なっているため、それぞれ異なる規格で作成されたコンテンツを扱うソフトモジュールは別々に開発し、これらのモジュール間でデータ交換を行うようなケースが増えている。
このようなコンテンツ保護がかかったコンテンツデータを扱うソフトモジュールは、不正攻撃により保護データが盗まれたり改竄されたりしないように、ソフトモジュールを耐タンパー化することが一般的である。ソフトウェアの耐タンパー化については命令コードの難読化、デバッガ検出、プログラムの改竄検出など様々な手法が考案されている。
【０００３】
図１６に、従来から行われている耐タンパー化モジュールの概念的な説明図を示す。
このような耐タンパー化モジュール（A,B）に対する直接的な攻撃はほとんど不可能であるので、このモジュールの中に存在するコンテンツデータについては、不正攻撃によるデータ盗難は困難である。
しかし、このようなソフトモジュールを複数用意して、モジュール間で相互にデータ交換を行うときは、ソケットや共有メモリ、ファイルマップ等のＯＳが一般に公開しているインタフェースを使って行われる。図１７に、このようなモジュール間で相互にデータ交換をする場合の概念的な説明図を示す。
【０００４】
両モジュールを接続する一般的なインタフェースの部分については攻撃を行いやすく、データ盗難が比較的容易である。
そこで、モジュール間で保護データを交換する場合、データ交換時に保護データが覗き見されたり改竄されないように暗号化やハッシュによる改竄検出を行うことが一般的である。
例えば特許文献１には、データを受け取る受信モジュールで暗号化を行い、バスを通した後に処理モジュールで復号処理するデータの保護装置が記載されている。
【０００５】
図１８に、コンテンツ提供プログラム部(モジュールＡ)からコンテンツ表示プログラム部(モジュールＢ)に保護データを転送する場合の概念的な説明図を示す。保護データはモジュールＡで暗号処理が行われた後、モジュールBに渡されるものとする。一般的なインタフェースを経由する途中のデータは耐タンパー化されたモジュールＡ、モジュールＢのみが知る形式の暗号化を行う。モジュールBはこの受信したデータを復号して利用する。図示していないが、暗号化に加えて、ハッシュ処理などを行い、改竄検出を行うこともある。このようなデータを不正な攻撃者に盗まれないための暗号・改竄検出処理を、以後データ保護処理と呼ぶ。このようなデータ保護処理をすることにより、不正攻撃モジュールは中間のデータを覗き見しても有用な情報が得られなくなる。
図１８のしくみを実施するためには、ソケットなどのさまざまな実装方法が用いられるが、ローカルマシン内でデータ渡しが行われるときは、図１９に示すように、モジュールの外部に位置するメモリやハードディスクHDDに、一旦データが書き込まれることになる。
【特許文献１】特開平11-88859号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、上記のような従来の方法では、受け渡しを行う保護データのサイズが大きくなると、暗号化および復号化処理やハッシュ処理にかかる処理量が大きくなり、長時間を要するという問題がある。
特にパソコンなどの情報機器でソフトにより構成されたモジュール間でデータ交換を行う場合などは、一方のモジュール内部で送信の前に暗号化を行い、他方のモジュール内部で受信の後に復号化を行う必要があり、これらの処理に共にＣＰＵを使用することになり、処理負荷の増加が無視し得ない量になる。
【０００７】
また、モジュールＡ，Ｂの個々の耐タンパー化ではなく、システム全体を耐タンパー化することで不正攻撃を防ぐ方法も考えられるが、システム全体を耐タンパー化することは、システム開発の困難性を増大させ、システム開発のコストの増大や、装置のコストアップをもたらす。
したがって、システム全体の耐タンパー化は行わずにコストの増大をできるだけ抑えた上で、データ保護処理の負荷もできるだけ軽減したセキュリティシステムの開発が望まれる。
【０００８】
この発明は、以上の事情を考慮してなされたものであり、モジュール間のデータ転送に用いる記憶素子に対する書込みと読出しに制限を加え、モジュール間で転送されたデータ量等を管理するしくみを備えることで、モジュール間でデータを転送する場合に、十分なセキュリティを確保した上で、データ保護のための処理負荷を抑制させることのできる記憶素子を提供することを課題とする。
【課題を解決するための手段】
【０００９】
本発明は、機能モジュールからのデータの書込み操作と、データの読出し操作とを受ける記憶素子であって、前記データを格納する所定容量のメモリ領域を有し前記機能モジュールによって書込まれたデータを記憶する記憶部と、前記機能モジュールによって書込まれたデータのデータ量を前記機能モジュールから読出し可能なように格納したデータ量管理レジスタと、前記機能モジュールによって前記記憶部に記憶されたデータの読出しが行われた場合、当該読み出されたデータに対応するデータが格納された前記記憶部のメモリ領域について、前記機能モジュールによるデータの書込みが行われるまで、データの読出しを不能とするように制御するアクセス制御部とを備えたことを特徴とする情報処理装置を提供するものである。
【００１０】
この発明は、第１機能モジュールからのデータの書込みと、第２機能モジュールからのデータの読出しを制御する制御部と、前記第１機能モジュールによって書込まれたデータを記憶する記憶部と、第１機能モジュールによって書込まれたデータのデータ量を前記第１機能モジュールから読出し可能なように格納したアクセス量管理レジスタと、第２機能モジュールによって、記憶部に記憶されたデータの読出しを行った後、第１機能モジュールによる次のデータの書込みが行われるまでデータの読出しを許可しないようにするアクセス制御部とを備えたことを特徴とするデータ保護機能を有する記憶素子を提供するものである。
【００１１】
この発明によれば、不正アクセスによるデータの漏洩の防止のために、暗号化および復号化処理のような複雑かつ時間のかかる処理をする必要がないので、十分なセキュリティを確保した上で、データ保護のための処理負荷を抑制させることができる。すなわち、２つのモジュール間のデータ転送時において、転送データの安全性を確保するための処理にかける時間および負担を軽減させることができる。
【００１２】
ここで、読み出されたデータとは、本発明に係わる記憶素子から出力されるデータを意味し、それに対応するデータとは、本発明に係わる記憶素子が備えるメモリ領域に保持されている状態のデータを意味し、その対応するデータが格納されたメモリ領域とは、例えば、当該データが保持された又は保持されていたメモリ領域上の所定の番地及びデータ長で特定される領域を意味する。さらに、データの読出しを不能とするとは、機能モジュールの読出し操作に対して、記憶素子に書込まれたデータと同じ内容のデータを当該記憶素子が出力しないことを意味し、例えば、読出し操作に対して不可応答を出力したり、あるいは、書込まれたデータと異なる内容のデータを出力する構成を含むものとする。
【００１３】
また、本発明の記憶素子において、記憶部は、データの書込みのみを許可するライトオンリーメモリ領域と、前記データの読出しのみを許可するリードオンリーメモリ領域とを有し、前記ライトオンリーメモリ領域に書込まれたデータを、前記リードオンリーメモリ領域に転送する転送処理部をさらに備えることを特徴とする。この場合、アクセス制御部は一旦読み出されたデータを格納するリードオンリーメモリ領域についてライトオンリーメモリ領域からリードオンリーメモリ領域にデータが転送されるまで読み出しを不能とし、前記データ量管理レジスタは、前記機能モジュールによって書込まれたデータのデータ量として、前記転送処理部によって転送されたデータのデータ量を、前記機能モジュールから読出し可能なように格納する。
これによれば、ライトオンリーメモリ領域と、リードオンリーメモリ領域とを設けてデータ転送をするので、暗号化等の複雑かつ時間のかかる処理をすることなく十分なセキュリティを確保することができ、データ保護のための負荷を抑制させるとともにデータ転送時の不正アクセスによるデータの漏洩と不正利用を防止できる。
【００１４】
また、本発明の記憶素子は、前記機能モジュールからのアクセスを許可又は禁止するためのアクセス制御フラグをさらに備え、前記アクセス制御フラグが第１状態のとき前記機能モジュールからの記憶部の書込み許可および前記機能モジュールによる記憶部の読出し禁止とし、第２状態のとき前記機能モジュールからの記憶部の書込み禁止および前記機能モジュールによる記憶部の読出し許可とし、前記機能モジュールによってデータが書込まれた後に、アクセス制御フラグを第２状態に設定することにより前記機能モジュールからの記憶部への書込みを禁止し、前記アクセス制御フラグが第２状態のときに前記機能モジュールからの読出し要求があった場合、前記機能モジュールによる記憶部の読出しを許可し、前記読出しが行われた後にアクセス制御フラグを第１状態に設定することにより前記機能モジュールによる記憶部の読出しを禁止することを特徴とする。
これによれば、一旦記憶部に書込まれたデータは、読み出されるまで不正に上書きされることを防止できる。
【００１５】
また、本発明は、前記記憶素子と、前記記憶素子にデータを書き込む第１機能モジュールと、前記記憶素子からデータを読み出す第２機能モジュールとを備え、第１機能モジュールが、コンテンツデータを前記記憶素子の記憶部に書き込んだ後、前記記憶素子は書込まれたコンテンツデータの読み出しを可能となるように制御し、第２機能モジュールが記憶部に記憶されたコンテンツデータを読出すことを特徴とする情報処理装置である。
これによれば、第１機能モジュールから第２機能モジュールへデータを転送する場合に、十分なセキュリティを確保した上で、転送データの安全性を確保するための処理にかける時間と負担を軽減させることができる。
【００１６】
また、本発明の情報処理装置は、前記第１機能モジュールが、前記記憶素子に書込んだデータのデータ量Ｄ１を管理する通信量管理部と、前記記憶素子においてデータの不正アクセスが行われていることを検出する不正検出部とを備え、前記第１機能モジュールの不正検出部は、前記記憶素子のデータ量管理レジスタを読み出すことで記憶素子に書込まれたデータ量Ｄ２を取得し、前記通信量管理部によって管理されているデータ量Ｄ１と、前記データ量Ｄ２とを比較することによって、データの不正アクセスが行われているか否かを判断することを特徴とする。
これによれば、不正アクセスの防止のために暗号化等の複雑かつ時間のかかる処理をすることなく不正アクセスを検出できるので、データ転送の高速化と処理負担の軽減を図ることができる。
【００１７】
また、本発明は、前記情報処理装置であって、前記第２機能モジュールが、前記記憶素子においてデータの不正アクセスが行われていることを検出する不正検出部を備え、前記第２機能モジュールの不正検出部は、前記記憶素子から読み出したデータが、書込まれたデータに出現することのないパターンデータであることを検出した場合には、不正アクセスがあったと判断することを特徴とする情報処理装置を提供する。
これによれば、不正アクセス防止のための複雑かつ時間のかかる処理をすることなく、比較的容易に不正アクセスを検出できる。
【発明の効果】
【００１８】
この発明によれば、不正アクセスによるデータの漏洩の防止のために、暗号化および復号化処理のような複雑かつ時間のかかる処理をする必要がないので、十分なセキュリティを確保した上で、データ保護のための処理負荷を抑制させることができる。すなわち、２つのモジュール間のデータ転送時において、転送データの安全性を確保するための処理にかける時間および負担を軽減させることができる。
【発明を実施するための最良の形態】
【００１９】
また、この発明によれば、第１機能モジュールから第２機能モジュールへデータを転送する場合、ライトオンリーメモリ領域と、リードオンリーメモリ領域と、一旦読み出されたデータを格納するリードオンリーメモリ領域についてライトオンリー領域からリードオンリー領域にデータが転送されるまで読み出しを許可しないアクセス制御部と、データ量管理レジスタを備えたこの発明の記憶素子を利用すれば、データ転送時の十分なセキュリティを確保することができ、データ転送時の不正アクセスによるデータの漏洩と不正利用を防止できる。
【００２０】
これによって、データ転送時の十分なセキュリティを確保でき、不正アクセスモジュールが介在してもデータの漏洩を防止でき、不正アクセスを防止し転送データの安全性を確保する処理にかける時間と負荷を軽減できる。また、この構成の場合、前記記憶素子の処理速度が前記機能モジュールからのデータ書き込み速度に対して遅くても、前記記憶素子はライトオンリーメモリ領域に書かれたデータを転送する速度にあわせてデータ量をカウントすればよく、記憶素子において高速処理が必要とならない。また、一旦リードオンリーメモリ領域に転送された部分については、前記機能モジュールによってリードされる前に、前記機能モジュールによってライトオンリーメモリ領域への書き込みを行うような制御も可能である。
【００２１】
また、この発明では、第１および第２機能モジュールからのアクセスを許可又は禁止するためのアクセス制御フラグをさらに備え、アクセス制御フラグが第１状態のときライトオンリーメモリ領域の書込み許可およびリードオンリーメモリ領域の読出し禁止とし、第２状態のときライトオンリーメモリ領域の書込み禁止およびリードオンリーメモリ領域の読出し許可とし、前記第１機能モジュールによってデータが書込まれた後に、アクセス制御フラグを第２状態に設定することによりライトオンリーメモリ領域を書込み禁止とすることを特徴とする。
ここで、第１状態とは、たとえば「０」であり、第２状態とは、たとえば「１」である。この構成によれば、前記機能モジュールが一旦書き込んだデータは前記機能モジュールによって読み出されるまで上書きされないことが保証できる。よって、たとえば不正アクセスによって偽データを上書きされるような攻撃に対処できる。
【００２２】
さらに、前記アクセス制御フラグが第２状態のときに第２機能モジュールからの読出し要求があった場合、前記リードオンリーメモリ領域の読出しを許可し、前記読出しが行われた後にアクセス制御フラグを第１状態に設定することによりリードオンリーメモリ領域を読出し禁止とすることを特徴とする。
【００２３】
また、前記アクセス制御フラグが第１状態のときに、第２機能モジュールからの読出し要求があった場合、読出し要求のあったデータを、書込まれたデータに出現することのないパターンデータに置き換え、このパターンデータが第２機能モジュールによって読み出されるようにすることを特徴とする。
ここで、前記パターンデータには、たとえば、オールゼロデータを用いることができる。
【００２４】
また、この発明は、前記したようないずれかの記憶素子と、前記記憶素子にデータを書き込む第１機能モジュールと、前記記憶素子からデータを読み出す第２機能モジュールとを備え、第１機能モジュールが持つコンテンツデータを、前記記憶素子のライトオンリーメモリ領域に書き込んだ後、書き込まれたコンテンツデータを記憶素子のリードオンリーメモリ領域に転送し、リードオンリーメモリ領域に転送されたコンテンツデータを、第２機能モジュールが読出すことを特徴とする情報処理装置を提供するものである。
【００２５】
さらに、この発明の情報処理装置は、前記第１機能モジュールが、前記記憶素子に書込んだデータのデータ量Ｄ１１を管理する通信量管理部と、前記記憶素子においてデータの不正アクセスが行われていることを検出する不正検出部とを備え、前記不正検出部は、前記記憶素子のデータ量管理レジスタに格納されたデータ量Ｄ１２を読み出し、前記通信量管理部によって管理されているデータ量Ｄ１１と、前記データ量Ｄ１２とを比較することによって、データの不正アクセスが行われているか否かを判断することを特徴とする装置である。
【００２６】
ここで、前記第１機能モジュールの不正検出部が、前記記憶素子のデータ量管理レジスタから読み出したデータ量Ｄ１２が、前記データ量Ｄ１１よりも大きい場合に、不正アクセスがあったと判断し、第１機能モジュールが、以後の記憶素子へのデータの書込みを実行しないようにしてもよい。
また、この発明の情報処理装置は、前記第２機能モジュールが、不正検出部を備え、前記不正検出部が、前記記憶素子から読み出したデータが、書き込まれたデータに出現することのないパターンデータであることを検出した場合には、不正アクセスがあったと判断することを特徴とする。
【００２７】
この発明の第１機能モジュールと第２機能モジュールとは、コンテンツに対して取得，加工，再生，復元，配信等などの処理を実行するプログラムに相当し、以下の実施例では、たとえば第１機能モジュールにはモジュールＡが対応し、第２機能モジュールにはモジュールＢが対応する。また、リードオンリーメモリ領域は、リードワンスメモリおよびリードワンス領域部に相当する。
【００２８】
以下、図に示す実施例に基づいて本発明を詳述する。なお、本発明はこれによって限定されるものではない。
＜この発明のデータ保護機構の概略説明＞
図１に、この発明のデータ保護機構の概略説明図を示す。
図１においてモジュールＡ（１）とモジュールＢ（２）は、コンテンツに対して録画，再生，表示等の処理を行うソフトモジュールであり、パソコン等のＯＳの管理のもと、インストールして使用される。
【００２９】
セキュアメモリ部３は、書き換え可能なメモリ（４，５，６）と、そのメモリに対するアクセスを管理するメモリ制御部７とからなる。
書き換え可能なメモリは、ライトオンリーメモリ４，リードワンスメモリ５，データ量管理レジスタ６とからなる。これらのメモリは、それぞれ別のメモリとして設けてもよいが、１つのメモリを３つの領域に分け、それぞれ、ライトオンリーのメモリ領域４，リードワンスのメモリ領域５，データ量管理レジスタの領域６として使用する形態でもよい。
【００３０】
ライトオンリーメモリ４とは、セキュアメモリ部３の外部のモジュールＡやＢから見て、書込みのみが可能なメモリであり、セキュアメモリ部３の外部のモジュールＡ等からはその内容を読み出せないメモリである。
リードワンスメモリ５とは、アクセスを管理するメモリ制御部によって、セキュアメモリ部３の外部のモジュールＡ等から見て、１度だけ読み出しが可能なように制御されるメモリであり、この領域には書込みのできないメモリである。
すなわち、１度読み出しが行われた後は読み出し禁止設定がされ、２度目以後の読出しは禁止される。この読み出しの禁止および許可の制御は、後述するアクセス制御フラグ３４１を用いて行われる。
【００３１】
データ量管理レジスタ６は、ライトオンリーメモリ４に記憶されたデータを、リードワンスメモリ５に転送したデータ量（たとえば、バイト数）を格納するメモリである。このレジスタ６への書込みは、メモリ制御部７のみができる。レジスタ６は、電源投入時などにリセットされ、ゼロに初期化される。リセットされるまでは、転送データ量を累積して格納するものとする。また、レジスタ６は、リードオンリーメモリであり、外部のモジュールからは読出しのみができるメモリである。なお、モジュールＡ等からセキュアメモリ部３にコンテンツの書込みを開始する時や、コンテンツの転送処理等がすべて完了した時を、レジスタ６をリセットする契機としてもよい。
【００３２】
この発明は、図１のような２つのモジュール（Ａ，Ｂ）間で、コンテンツデータを転送する場合の十分なセキュリティを確保した上で、コンテンツを不正取得しようとする不正攻撃を防止する際の処理負荷を従来よりも軽減しようとするものである。
この発明では、不正攻撃を防止するために、図１のような構成のセキュアメモリ部３を設け、セキュアメモリ部３を通して転送されたデータ量を検出する機構を設けることを特徴とする。
【００３３】
従来は、モジュールＡからモジュールＢへデータを転送する際に、モジュールＡ内でデータの暗号化処理をした後、一般的なＲＡＭなどのメモリに書き込み、モジュールＢがＲＡＭに書込まれた暗号化データを読み出した後、その後暗号化データの復号化処理をしていたが、この暗号化および復号化には、非常に時間がかかり、ＣＰＵ等の処理負担が大きかった。
この発明は、セキュアメモリ部３を設けて、このデータの暗号化および復号化の処理を省略することにより、モジュール間のデータ転送時にかかる処理負担を軽減する。
従来のデータ保護処理を行う場合の一般的な処理シーケンスは、データ読み出し→データ暗号化→メモリライト→メモリリード→データ復号化→データ処理となる。
一方、本発明においては、
データ読み出し→メモリライト→メモリリード→データ処理
となり、データ暗号化・復号化処理が省略されることで処理が軽減される。
【００３４】
具体的には、主として次のようなデータ転送処理を行う。
ここでは、モジュールＡが取得したコンテンツを、モジュールＢに転送するものとする。また、コンテンツは、所定データ量のブロックに分割され、ブロックごとに転送されるものとする。
まず、モジュールＡから第１ブロックのデータＤ１１を、暗号化せずにセキュアメモリ部３のライトオンリーメモリ４に書き込む。セキュアメモリのメモリ制御部７は、ライトオンリーメモリ４に書き込まれたデータＤ１１を、リードワンスメモリ５に転送する。
また、メモリ制御部７が、転送されたデータＤ１１のデータ量を、データ量管理レジスタ６に書き込む。その後、モジュールＢが、リードワンスメモリ５に転送されたデータＤ１１を直接読み出す。
このデータＤ１１は暗号化されていないので、モジュールＢに取り込まれた状態で、そのまま利用することができる。
【００３５】
モジュールＡがライトオンリーメモリ４にデータＤ１１を書き込んだ後は、このメモリ４への読出し要求は受け付けられないので、不正アクセス（攻撃）モジュールが読み出し要求をしたとしても、そのデータＤ１１をセキュアメモリ部３から読出すことはできない。すなわち、ライトオンリーメモリ４に記憶されたデータＤ１１に対する不正アクセスを防止できる。図２に、セキュアメモリに対する不正アクセスの一実施例の説明図を示す。
【００３６】
また、モジュールＡがメモリ４へ書き込んだデータＤ１１のデータ量は、ライトオンリーメモリ４からリードワンスメモリ５へ転送したデータ量と等しく、データＤ１１が最初に転送されたブロックの場合、データ量管理レジスタ６に格納された数値に等しい。
したがって、モジュールＡが、自己が書き込んだデータＤ１１のデータ量と、データ量管理レジスタ６に格納されている数値とを比較することで、正しく転送されたか否か、チェックできる。
【００３７】
一方、モジュールＢがリードワンスメモリ５のデータＤ１１を読み出した後は、メモリ５に対する次のリード要求は許可されない。たとえば、２度目のリード要求をしたとしても、書込まれたデータに出現することのないパターンデータしか読み出せないように制御することによって、事実上リード要求が正常にできないようにしてもよい。パターンデータとしては、たとえばオールゼロのデータやオール１のデータなどを用いてもよい。
正常に認証されたモジュールＢが、メモリ５からデータＤ１１を読み出した後に、不正アクセスモジュールが、リードワンスメモリ５に読出し命令を出し、メモリ５に転送されていたデータＤ１１を読み出そうとしてもオールゼロデータが読出され、データＤ１１そのものは読み出すことができない。
【００３８】
ただし、モジュールＡがデータＤ１１を書き込んだ後、モジュールＢがリードワンスメモリ５からデータＤ１１を読み出す前であれば、不正アクセスモジュールによってリードワンスメモリ５からデータＤ１１を読み出すことが可能である。
すなわち、コンテンツの一部である１ブロックのデータＤ１１は、不正に読み出される場合がある（図２参照）。
【００３９】
しかし、不正アクセスモジュールがデータＤ１１を読み出した後に、正規のモジュールＢが、モジュールＡから転送されてくるはずのデータＤ１１を読み出すため、リードワンスメモリ５に読み出し命令を出した場合、正常でないパターンデータ、たとえばオールゼロデータが読み出されることになる。すなわち、モジュールＢは、オールゼロデータを読み出したが、データＤ１１の読出しが正常にできなかったことになる。
【００４０】
そこで、モジュールＢが、オールゼロデータは通常のデータ読出時にはあり得ないデータであることを確認できるとすると、モジュールＢは、読み出したデータがオールゼロデータであることをチェックすることにより、不正読み出しが行われたことを検出することができる（図２参照）。
すなわち、モジュールＢによって不正読出しがあったことが検出されるので、その後の通信処理をしないように制御する。具体的には、たとえば、セキュアメモリ３にリセットをかけると共に、モジュールＡに不正が行われたことを通知すればよい。
【００４１】
これにより、第１のデータＤ１１は不正読出しが行われたとしても、次の第２のデータＤ１２以後のブロックデータについては、不正読出しが行われないようにすることができる。
複数のブロックデータからなるコンテンツの転送を行う場合に、不正アクセスモジュールが介在して１つのブロックのデータが不正に読み出されてしまったとしても、その後のブロックデータは不正に読み出されないようにすることができるので、コンテンツ全体が不正に流出し、不正利用されることを防止できる。
【００４２】
また、図３に示すような不正攻撃（アクセス）があった場合も、その不正を検出できる。
図３において、不正アクセスモジュールが、リードワンスメモリ５から、データＤ１１を読み出した後、そのデータＤ１１を再度ライトオンリーメモリ４に書き込んだとする。この再度書き込まれたデータＤ１１を、モジュールＢが読み出せば、あたかも、不正モジュールが介在せずに、モジュールＢによって正常に読み出しが行われたかのように見える。
【００４３】
しかし、この場合、データＤ１１が２度ライトオンリーメモリ４に書き込まれているので、データＤ１１についてライトオンリーメモリ４からリードワンスメモリ５へのデータＤ１１のデータ転送も、２度行われている。
データ量管理レジスタ６に格納されるデータ量は、累積値であるので、データＤ１１のデータ量が２回加算される。すなわち、データＤ１１を正常に１回だけ転送した場合のデータ累積値よりも、レジスタ６に格納される数値の方が大きくなってしまう。
【００４４】
そこで、モジュールＡが、最初のブロックであるデータＤ１１を書き込む前にデータ量管理レジスタ６の値を読み込んでおき、Ｄ１１を書き込んだ後、次のブロックのデータＤ１２を書き込む前に、再度レジスタ６の値を読み出し、このレジスタ６の値の差分であるセキュアメモリ部３を経由して転送されたデータ量Ｄ２と、モジュールＡ自身が書き込んだデータＤ１１の実際のデータ量Ｄ１とを比較し、両者が一致しなければ不正アクセスがあったと判断できる。上記のように、データＤ１１が２度書き込まれた場合は、データ量管理レジスタ６から読み出した値から得られるセキュアメモリ部３を経由して転送されたデータ量Ｄ２が、モジュールＡが実際に書込んだデータ量Ｄ１よりも大きくなっていることを検出した場合に、不正アクセスがあったと判断する。
このように不正アクセスがあったと判断した場合は、モジュールＡは、以後のデータの書込みを実行しないようにすればよい。
【００４５】
以上２つの不正アクセスの例を説明したが、モジュールＡからモジュールＢへのデータ転送時に、従来のような暗号化および復号化という複雑な処理をしなくても、不正アクセスを防止できる。
また、暗号化および復号化という複雑でＣＰＵの処理負担の大きい処理をする必要がなく、データの転送処理と、セキュアメモリ部３を経由して転送されたデータ量と実際にセキュアメモリ部３に書き込んだデータ量の比較という比較的短時間で可能な処理をするだけなので、モジュール間のデータの転送のスピードの高速化と、ＣＰＵの処理負担の軽減を図ることができる。セキュアメモリにおいても、データ量のカウントとカウント値のレジスタへの格納を行えばよく、大きなロジックは必要としない。
【００４６】
また、図１では、セキュアメモリ部３の内部に、ライトオンリーメモリ４と、リードワンスメモリ５という２つのメモリを持つ構成を示したが、これに限るものではない。
たとえば、１つのメモリＭに対して、一度データの書き込みをした後、そのメモリＭに対して、メモリ制御部によって外部モジュールからは一度しか読み出せないような制御を行い、ライトアクセスが実行されたときに、その書込まれたデータのデータ量をカウントするレジスタを設け、そのレジスタの内容をモジュールから読み出すことができるように制御するようにしてもよい。
すなわち、１つのメモリと１つのレジスタを備え、さらに、このメモリに対するリードワンスの制御とレジスタによるデータ量のカウントが可能な制御モジュールを有するデバイスを設けてもよい。
【００４７】
以上のように、この発明では、セキュアメモリ部３を設け、メモリ（４，５）に対するアクセスに制限を設けて、さらにセキュアメモリ部３を経由して転送されたデータ量をチェックするようにしているので、モジュール間のデータ転送を行うときに、暗号化やハッシュ処理のような複雑な処理を行わなくても、データののぞき見や改ざんを検出でき、検出後の不正アクセスを防止することができる。
不正アクセスを検出した後に、直ちにその後のデータ転送処理を中止するようにすれば、その後のブロックデータが不正に流出することを防止できる。
【００４８】
また、データ転送時において、処理時間および処理量の大きな暗号化等の処理が不要であるので、大量のデータ転送を行う場合も、ＣＰＵの負担を減らすことができる。
また、モジュール間で暗号鍵の交換を行う必要もなくなるので、モジュール間のデータ転送プロトコルも軽くなり、セッションの確立も含めデータ転送にかかる全体の処理時間を短縮できる。
【００４９】
＜この発明の情報処理装置の構成の説明＞
図４に、この発明のデータ転送機能とデータ保護機能を実現する情報処理装置の一実施例の構成ブロック図を示す。
図４において、情報処理装置は、主としてコンテンツ提供プログラム部（モジュールＡに相当）１００と、コンテンツ表示プログラム部（モジュールＢに相当）２００と、セキュアメモリ部３００とを備える。
コンテンツ提供プログラム部１００は、取得したコンテンツ全体を格納したコンテンツ格納部１１０，コンテンツ管理情報格納部１２０，コンテンツのブロックデータを転送する際の通信データ量を管理する通信量管理部１３０，モジュール間のデータ通信の制御を行う通信制御部１４０，不正アクセスの存在を検出する不正検出部１５０，セキュアメモリ部３００との間のデータ転送（データの書込みと読み出し）を行う通信処理部１６０とを備える。
【００５０】
コンテンツ表示プログラム部２００は、不正アクセスの存在を検出する不正検出部２１０，転送されたコンテンツを表示するコンテンツ表示部２２０，モジュール間の通信を制御する通信制御部２３０，セキュアメモリ３００に対してデータの読み出し処理をする通信処理部２５０，転送されてきた複数のブロックデータを組み合わせて、１つのコンテンツを生成（復元）するコンテンツ処理部２４０、不正アクセスがあったことをモジュールＡへ通知する不正通知部２６０とを備える。
【００５１】
セキュアメモリ部３００は、ライトオンリーのメモリ領域３２０と、リードワンスのメモリ領域３４０，データ量管理レジスタ３６１と、アクセス制御フラグ３４１を管理するアクセス制御部３３０とからなる記録ブロックと、リードライト（Ｒ／Ｗ）制御部３１０と、ライトオンリー領域３２０からリードワンス領域３４０へのデータ転送を行う転送処理部３５０と、データ量管理レジスタ３６１への書込みと読出しをするデータ量管理部３６０とからなる制御ブロックを備える。
【００５２】
記録ブロックは、１つのＲＡＭや不揮発性メモリ素子を用いることができるが、メモリ領域，レジスタ，フラグごとにそれぞれ異なるメモリ素子を用いてもよい。
制御ブロックは、ＣＰＵ，ＲＯＭ，ＲＡＭ，Ｉ／Ｏコントローラ，タイマーなどを有するＣＰＵと、各機能を実現するソフトウェアとから構成される。すなわち、セキュアメモリ部３００は、単なるメモリではなく、ＣＰＵ等を含む記録素子であり、データ保護機能を有する記憶素子である。
リードワンスのメモリ領域３４０は、転送処理部３５０によってデータが書き込まれた時に一回だけ外部モジュールからの読み出しが可能となるように制御する。
【００５３】
図５に、セキュアメモリ部３００の記録ブロックと、転送処理部３５０との関係の説明図を示す。
データ量管理レジスタ３６１は、セキュアメモリ部３を経由して転送されたデータ量の累積値を記憶するものである。転送処理部３５０は、ライトオンリー領域３２０から所定のライト単位のデータを読み出し、リードワンス領域３４０に書き込んだとき、そのライト単位のデータに相当するデータ量をデータ量管理レジスタ３６１に加算する。
アクセス制御フラグ３４１は、所定量のブロックデータがリードワンス領域３４０にデータ転送されるごとに、１がセットされ、そのブロックデータのデータ転送が完了したか否かを示すものである。
【００５４】
ライトオンリーのメモリ領域320とリードワンスのメモリ領域340は一対一に対応しており、ライトオンリーのメモリ領域320に対してソフトモジュールＡからのライトアクセスが発生した場合、セキュアメモリの転送処理部350は、メモリ320に書き込まれた内容を、対応するリードワンスのメモリ領域340にコピーする。
それと同時に転送したデータ量をインクリメントし、データ量管理レジスタ361を更新する。データ量管理レジスタ361はリセット時などに０に初期化される。リセット以後はライトオンリーのメモリ領域からリードワンスのメモリ領域に転送されたデータ量の累積値を保持する。
【００５５】
転送処理部350は、転送したメモリアドレスに対応するアクセス制御フラグ341に1を立てる。リードワンスのメモリ領域340は、アクセス制御フラグ341によってアクセスが管理されている。
アクセス制御部330は、一旦データがリードワンスメモリ領域340から読み出された後において、ライトオンリーメモリ領域320からリードワンスメモリ領域340にデータが転送されるまで読み出しを不能とする部分である。
【００５６】
図６に、アクセス制御フラグ341とリードワンス領域340の対応付けの説明図を示す。アクセス制御フラグ341はリードワンスメモリ領域340のアクセス単位毎に1bitの情報を保持する。例えばセキュアメモリ300が32bit単位でのアクセスのみ許可するならば、リードワンスメモリの３２bitごとに、1bitのアクセス制御フラグ341が割り当てられる。
フラグ３４１が「０」の場合、モジュールからのメモリ読出し要求を許可しない（リードイネーブルにしない）。また、フラグが「１」の場合、モジュールからのメモリ読出し要求を受け付けることを意味する。
【００５７】
＜リードワンス領域に対する読出処理＞
図７に、モジュールＢから、セキュアメモリ部のリードワンス領域340に対して、読み出し処理を行う場合の一実施例のフローチャートを示す。
ステップＳ１１において、モジュールＢからリードアクセスが発生した場合、転送処理部350は、アクセスされた領域に対応するアクセス制御フラグ341をチェックする。アクセス制御フラグ341が０であった場合、リードアクセスは禁止されるので、ステップＳ１２へ進み、セキュアメモリ300はリードリクエストに対してリードイネーブルをせず、応答を返さない。
【００５８】
一方、アクセス制御フラグが１の場合はステップＳ１３へ進み、モジュールからのリード要求に対し、リードワンス領域340に格納されたデータを読み出し、モジュールＢへ与える。
ステップＳ１４において、転送処理部350は、アクセス制御フラグ341を０にセットする。
図７に示したように、アクセス制御フラグ341が０のときはデータの読み出しを禁止し、１の場合はデータの読み出しを許可する。また、一度リードアクセスが発生したアドレスに対しては、アクセス制御フラグを０にセットし、リード不可とする。この方法により、外部のモジュールＢからは、一度読み出したデータを再度読み出すことはできないリードワンス機能を実現することができる。
【００５９】
＜ライトオンリー領域に対する書込処理＞
図８に、モジュールＡによってライトオンリー領域320に、データを書き込む場合の一実施例のフローチャートを示す。
ステップＳ２１において、モジュールＡからライトアクセスが発生した場合、転送処理部350はアクセスされた領域に対応するアクセス制御フラグ341をチェックする。ここでアクセス制御フラグ341が１の場合、ステップＳ２２へ進む。すなわちまだリードされていないデータが残っている場合は、ライトをイネーブルせずに処理を終了する。
【００６０】
一方アクセス制御フラグ341が０の場合は、ステップＳ２３へ進み、ライトをイネーブルし、ライトオンリー領域320にモジュールＡから与えられたデータを書き込む。
この例では、リードワンス領域340のデータがまだ読み出されていない場合はメモリ340の上書きを不可能にしているが、アクセス制御フラグ341の値にかかわらず、データのライトを許可するような実装も可能である。
【００６１】
ライトが行われた後は、書き込まれたデータをリードワンス領域340にコピーし（ステップＳ２４）、コピーしたデータ量に相当するだけ、データ量管理レジスタ361をインクリメントする（ステップＳ２５）。最後にステップＳ２６において、アクセス制御フラグ341に１をセットする。これは、データをリードできるようにするためである。
【００６２】
＜転送処理部の処理内容の説明＞
図９に、セキュアメモリ部の転送処理部の具体的処理内容の一実施例の説明図を示す。
図９（ａ）において、データ量管理レジスタ361の保持する現在の値は2048、アクセス制御フラグ341は全て０だったとする。このとき、セキュアメモリ部300のライトオンリー領域320に対して、モジュールＡから16バイトの書き込みが発生したとする。
転送処理部350は、この書き込みをトリガとし、図９（ｂ）に示すように、書き込みが行われたデータ16バイトを、リードオンリー領域340の対応する領域にコピーする。それと同時に、データ量管理レジスタ361の値を、転送を行ったバイト数分だけインクリメントする。このケースでは初期値の2048に16が加算され、2064となる。また、転送を行った領域に対応するアクセス制御フラグ341に、１をセットする。このことにより、モジュールＢ側からリードワンスメモリ340の更新された領域を、一度だけ読み出すことが可能となる。
【００６３】
＜コンテンツ提供プログラム部（モジュールＡ）の説明＞
図４に示したように、コンテンツ提供プログラム部（モジュールＡ）100は、コンテンツ格納部110、コンテンツ管理情報格納部120、通信量管理部130、通信制御部140、不正検出部150、通信処理部160を含む。
コンテンツ格納部110は、音楽データ、動画データ、その他ストリーミングデータを含むコンテンツを格納する。
コンテンツ管理情報格納部120は、コンテンツ格納部に格納されているコンテンツに係わる管理情報、例えば蓄積コンテンツのコピー制御に関する情報を格納する。コピー制御情報には、コンテンツのうち何バイト目から何バイト目までをどのようなモジュールに渡してよいか、あるいは渡してはならないかといった情報が含まれる。例えばコピーワンスのコンテンツであり、一度ＤＶＤ等のリムーバブルメディアに書き出したものは「ＤＶＤムーブ用モジュールにはコンテンツを渡してはならない」という情報が記述される。
通信量管理部130は、通信制御部140及び通信処理部160を介してセキュアメモリ部300に送信したブロックコンテンツのデータ量（通信量）を、通信制御部140から取得し管理する。
【００６４】
図１０に、データ転送に用いる管理情報の一実施例の説明図を示す。
モジュール（Ａ，Ｂ）間でコンテンツを転送するためには、まずセッションの確立が必要である。このセッションを開始する際、モジュールＡの不正検出部150は、セキュアメモリ部300に書き込まれた累積データ量を、データ量管理レジスタ361から取得し、転送開始時レジスタ値151として記憶しておく。
また、通信量管理部130はセッションにおいて行った通信の総通信量131を記憶する。実際にコンテンツ提供プログラム部（モジュールＡ）からブロックデータ500をセキュアメモリ部300に書き込む際には、通信制御部140は、通信処理部160を介して、ブロックデータ500をセキュアメモリ部300のライトオンリー領域320に書き込むと共に、通信量管理部130に書き込んだデータ量を与え、通信制御部140はそのデータ量を総通信量131に加算する。
また、通信制御部140は、コンテンツ管理情報格納部120に格納されている管理情報に基づいて、セキュアメモリ部300を介して、コンテンツ格納部110に格納されているコンテンツを、コンテンツ表示プログラム部200へ転送する。
【００６５】
＜コンテンツ提供プログラム部（モジュールＡ）の処理の一実施例＞
図１１に、コンテンツ提供プログラム部（モジュールＡ）の一実施例のフローチャートを示す。
まず、ステップＳ３１において、通信制御部140と、コンテンツ表示プログラム部（モジュールＢ）の通信制御部230により、データ転送を行うためのセッションの確立を行う。このセッションの確立には、例えばPKI等、一般的な秘密通信で用いられる方法を用いることができる。
セッションを確立後、ステップＳ３２において、コンテンツ提供プログラム（モジュールＡ）はコンテンツ表示プログラム（モジュールＢ）に、セキュアメモリ部300を介してデータ通信を行うという旨の情報と、セキュアメモリ部300の使用アドレスと、リードワンス領域340の使用領域情報を暗号化して送信する。
【００６６】
ステップＳ３３において、コンテンツ提供プログラム（モジュールＡ）は、セキュアメモリ部300から転送開始時のデータ量管理レジスタ361の初期値（Ｔ０）を取得し、ライトオンリー領域部320の使用を開始する。その後、ステップＳ３４からＳ３７において、コンテンツ全体のデータ転送を完了するまで、データ転送処理（ステップＳ３４）と、不正検出処理（ステップＳ３５）とを繰り返す。
【００６７】
以下に、データ転送処理中に、不正検出部150によって行われる不正検出処理（ステップＳ３５）の具体例を示す。
通信制御部140は、通信処理部160を介してセキュアメモリ部300へ書込んだコンテンツのデータ量（通信量）を、通信量管理部130に通知する。また、通信制御部140は、セキュアメモリ部300のR/W制御部310を介してデータ量管理レジスタ361から取得した、セキュアメモリ部300を経由して転送されたデータ量の累積値Ｔ１を不正検出部150に通知し、セキュアメモリ部300への不正アクセスの有無の判定を依頼する。
また、通信制御部140は、不正検出部150から不正アクセスの存在を通知された場合、又はコンテンツ表示プログラム（モジュールＢ）部200の通信制御部230から転送中止指示を受けた場合、当該コンテンツ表示プログラム部（モジュールＢ）へのコンテンツ送信処理を終了する。さらに、送信処理中のコンテンツのデータを破棄するよう通信処理部160に通知してもよい。
【００６８】
不正検出部150は、通信制御部140からの依頼に応じて、又は所定の定期的なタイミングの到来に応じて、セキュアメモリ部300を経由して転送されたデータ量の累積値Ｔ１を取得し、通信量管理部130から取得した総通信量ＴＡと前記転送量Ｔ１とを比較し、初期値Ｔ０を考慮して一致しない場合には不正アクセスが存在したものと判定する。
【００６９】
例えば、通信制御部140がセキュアメモリ部300に書き込みを行い、通信量管理部130に通知を行うたびに、不正検出部150においてデータ量管理レジスタ361の値Ｔ１を読み込み、総通信量131（ＴＡ）との比較を行う。
ここで、不正検出部150は、この総通信量131（ＴＡ）、転送開始時レジスタ初期値151（Ｔ０）、セキュアメモリのデータ量管理レジスタ361の値（Ｔ１）との間に所定の関係が成立するか否かチェックする。
すなわち、ステップＳ３５において、総通信量（ＴＡ）≧データ量管理レジスタ値（Ｔ１）−初期値（Ｔ０）を満たすか否か、チェックする。
【００７０】
このときセキュアメモリ300内で転送処理がまだ行われていないケースを考慮し、総通信量131（ＴＡ）＋転送開始時レジスタ初期値151（Ｔ０）−セキュアメモリ容量≦データ量管理レジスタ361（Ｔ１）≦総通信量131（ＴＡ）＋転送開始時レジスタ初期値151（Ｔ０）という関係を満足しているかをチェックするようにしてもよい。
また、実際にセキュアメモリ内で転送が完了したことを割り込み等で検出し、その検出
タイミングで、データ量管理レジスタ361の値を読み出し、総通信量131（ＴＡ）＋転送開始時レジスタ初期値151（Ｔ０）＝データ量管理レジスタ361（Ｔ１）となっているかを確認するようにしてもよい。
【００７１】
上記の条件式のいずれかを満足した場合、「コンテンツ提供プログラム部100以外によって、別のデータがセキュアメモリ300に書き込まれた」という不正は行われていないと判断できる。そこで、判定した結果が条件を満たせば不正アクセスは存在しないものと判定し、判定結果を通信制御部140へ通知する。
通信処理部160は、通信制御部140からの指示を受けて、次のコンテンツブロックをセキュアメモリ部300のライトオンリーメモリ320へ書込む。また、通信処理部160は、通信制御部140からの指示を受けて、セキュアメモリ部300のデータ量管理レジスタ361からセキュアメモリ部300を経由して転送されたデータ量の累積値（Ｔ１）を取得し、通信制御部140へ通知する。
【００７２】
このような不正検出を行いながら、通信完了までデータの書き込みと不正検出処理を繰り返すことで、正常なデータ転送を実現する。
なお、ステップＳ３５において、条件を満たさない場合は、不正アクセスが存在すると判断し、ステップＳ３６へ進み、転送異常処理を実行する。転送異常処理では、たとえば、その後のデータ転送要求を受け付けないようにしたり、不正アクセスが存在することを表示したりする。
【００７３】
＜コンテンツ表示プログラム部（モジュールＢ）の処理説明＞
図４に示したように、コンテンツ表示プログラム部（モジュールＢ）200は、不正検出部210、コンテンツ表示部220、通信制御部230、コンテンツ処理部240、通信処理部250を含む。
不正検出部210は、通信制御部230からの依頼に応じて、又は所定のタイミングの到来に応じて、通信制御部230から取得した読出データに基づいて、セキュアメモリ部300への不正アクセスの有無を判定し、判定結果を通信制御部230と不正通知部260へ通知する。
コンテンツ表示部220は、セキュアメモリ部300を介してコンテンツ提供プログラム部100（モジュールＡ）から転送されてきたコンテンツを、コンテンツ処理部240からの指示を受けて表示する。
【００７４】
通信制御部230は、セキュアメモリ部300を介してコンテンツ提供プログラム部100（モジュールＡ）から転送されてきたブロックデータを、通信処理部250から取得し、コンテンツ処理部240へ通知する。コンテンツ処理部240は、通信制御部230からの通知に応じて、転送されてきたブロックデータを加工してコンテンツを復元し、コンテンツ表示部220へコンテンツの表示を通知する。
また、通信制御部230は、通信処理部250を介して読み出したコンテンツのブロックデータを不正検出部210に通知し、セキュアメモリ部300への不正アクセスの有無の判定を依頼する。その後、通信制御部230は、不正検出部210から不正アクセスの存在を通知された場合、コンテンツ提供プログラム部（モジュールＡ）100の通信制御部140へ、コンテンツ送信処理の終了を通知する。また、不正通知部260は、モジュールＡへ不正があったことを通知する。
【００７５】
図１２に、コンテンツ表示プログラム部（モジュールＢ）200の一実施例のフローチャートを示す。
ステップＳ４１において、転送開始時には、コンテンツ提供プログラム（モジュールＡ）にコンテンツの転送要求を送信し、ステップＳ４２において、PKIなどを用いてセッションを確立する。
セッションの確立後、ステップＳ４３において、セキュアメモリ部300で使用する領域情報などの情報を暗号化して、モジュールＡから受信する。
ステップＳ４４において、モジュールＡによってセキュアメモリ部300のライトオンリー領域320に書込まれたブロックデータを、リードワンス領域340から読み出す。
ステップＳ４５において、データの読み出しごとに、不正検出処理を行う。不正検出処理で不正が検出されれば、不正アクセスがあったものと判断し、転送異常処理を実行する（ステップＳ４６）。
一方、不正が検出されなければ、コンテンツのすべてのブロックデータの転送が完了するまで、ステップＳ４４からＳ４７までの処理を繰り返す。不正が検出されない場合は、モジュールＢは、コンテンツのブロックデータを順次読み出しながら、その表示を行う。
【００７６】
ステップＳ４５における不正検出処理においては、例えば読み出したデータがすべてゼロである場合、リードワンス領域340から正常なデータが読めなかった、すなわちモジュールＢ以外のモジュールがリードワンス領域340からデータを読み出したと判断し、不正があったと判断する。あるいは、データの中の本来何らかの値を保持すべきフィールドがゼロになっている場合も、不正があったと判断する。
この他にも、明確に不正なアクセスが存在すると判断できる状況が検出されれば、不正アクセスがあったと判定する。例えば対象となるデータがMPEG-TSの場合、MPEG-TSデータにおいて正しいデータであれば188バイトごとにTSヘッダとして0x４７というバイトデータが現れるが、0x４７を格納すべき箇所にゼロが格納されていたり、映像データのペイロードがゼロであるなど、明確に不正なデータが存在する場合は、不正アクセスがあったと判定する。あるいは、モジュールＡからのセキュアメモリへのデータライトが必ず発生するだけの十分な時間が経過しても、リードワンス領域340がリードイネーブル状態にならないことを検出することによって、不正を検知してもよい。
【００７７】
＜セキュアメモリ部の他の実施例＞
図４では、セキュアメモリ部300の内部の２つのメモリ（４，５）間でデータの転送を行う構成を示したが、ここでは、モジュールＡが書込みを行うメモリとモジュールＢがリードを行うメモリとを、図１３に示すように、同一のメモリ620とする場合について説明する。また、この場合、データ量管理レジスタ６の代わりに、モジュールＡのライトアクセスのアクセス量を管理できるアクセス量管理レジスタ631を設け、モジュールＢがリードアクセスを一度行った後、次のブロックデータがライトされるまでリードを許可しないリードワンスの機能を持たせる。
図１３に、このようなセキュアメモリを用いた情報処理装置の一実施例の構成ブロック図を示す。
図１３において、セキュアメモリ部300は、R/W制御部610,メモリ620,アクセス制御部630から構成される。
アクセス制御部630は、アクセス量管理レジスタ631とアクセス制御フラグ632とを備える。また、モジュールＢは、コンテンツ配信プログラム部700であり、コンテンツを配信するコンテンツ配信部720を備え、その他のブロックは図４のモジュールＢと同じである。
【００７８】
モジュールＡからセキュアメモリ部300へライトアクセスを行うと、R/W制御部610は書き込まれたデータをメモリ620に書き込むと共に、ライトアクセスがあったことをアクセス制御部630に通知する。アクセス制御部630は、図４のデータ量管理レジスタの処理同様に、アクセス量管理レジスタ631に対して書き込まれたデータ数をインクリメントし、書き込まれたアドレスに対応するアクセス制御フラグ632に、1をセットする。
【００７９】
モジュールＢからセキュアメモリ部300へリードアクセスがあった場合、そのリードアクセスが、アクセス制御フラグ632に１が立っているアドレスに対するアクセスの場合は、そのリードを許可し、０の場合はリードを許可しないように制御する。これにより、リードワンスの機能を実現することができる。
図４の実施例の場合と同様に、不正アクセスモジュールがデータをリードした場合は、コンテンツ配信プログラム部700（モジュールＢ）で、不正検知が可能である。また、同じデータが再度セキュアメモリ300に書き込まれた場合は、モジュールＡがアクセス量管理レジスタ631の数値をチェックすることによって、不正検出が可能である。
【００８０】
データを受け取ったコンテンツ配信モジュール700（モジュールＢ）は、受け取ったコンテンツのネットワーク配信を行う。この場合、コンテンツ配信モジュール700（モジュールＢ）は、受け取ったデータに対し、DTCPなどのネットワークにおけるデータ保護プロトコルに対応した暗号化を行った後に、配信を行う。
【００８１】
また、モジュールＡに、認証管理部を設け、２つのモジュール間で正当なデータ転送が行われているか否かを、モジュールＢからの応答によって検出することもできる。
たとえば、データ転送中にモジュールＢが受信を行っていることを示す応答を、セキュアメモリ部300のライトオンリー領域320に書込むようにする。
図１４に、応答を確認することによりデータ転送の正当性を判断する一実施例の説明図を示す。図１４において、コンテンツ提供モジュール100（モジュールＡ）は上記実施例と同様に、ブロックデータをセキュアメモリのライトオンリー領域320に書き込み、リードワンス領域340を介して、コンテンツ配信モジュール700（モジュールＢ）にデータを転送する。
【００８２】
一方、コンテンツ配信モジュール700（モジュールＢ）は、受け取ったブロックデータのデータ量（応答）を、セキュアメモリ300の応答書き込み用領域（ライトオンリー領域320）に書き込む。この後、コンテンツ提供モジュール100（モジュールＡ）の認証管理部170が、セキュアメモリ300からコンテンツ配信モジュール700からの応答内容のチェックと、応答書き込み用領域のアクセス回数をチェックする。すなわち、モジュールＢから返された応答（データ量）が、コンテンツ提供モジュール100（モジュールＡ）側で転送を行った量に合致しているかどうか、及びアクセス回数が正当かどうかのチェックを行う。モジュールAがセキュアメモリ300に書き込んだデータ量と応答のデータ量が合致していて、アクセス回数に問題がなければ、正当なデータ転送が行われていると判断する。
【００８３】
＜セキュアメモリの正当性の検証＞
また、この発明においては、コンテンツ提供プログラム部100、コンテンツ表示プログラム部200が、確実に正当なセキュアメモリ300に対してアクセスを行う必要がある。
しかし、例えば、情報処理装置のOSやドライバレベルで不正を行い、コンテンツ提供プログラム部100（モジュールＡ）からのセキュアメモリ部300の使用リクエストに対して、だれでもアクセスできるような一般的なメモリ領域を返すようにモジュールソフトを改造し、そのメモリ領域に書き込まれたコンテンツのブロックデータを盗む方法が考えられる。この場合はセキュアメモリ部300を介さずに、不正アクセスが行われる。
このような不正を防ぐ一つの方法として、コンテンツ提供プログラム100（モジュールＡ）そのもののメモリ展開機能（プログラム展開監視部190）を、セキュアメモリ部300に備えることが考えられる。
図１５に、セキュアメモリの正当性検証処理の一実施例の説明図を示す。
【００８４】
図１５に示すように、コンテンツ提供プログラム100（モジュールＡ）の内部に、認証用の鍵（アクセス情報）を格納した認証管理部170を設ける。また、初期状態において、コンテンツ提供プログラム部100（モジュールＡ）そのものは、暗号化されたモジュールデータ（暗号化モジュールＡ）として、セキュアメモリ300の保持する暗号鍵で暗号化してハードディスクに格納しておく。
モジュールＡのプログラム実行時に、セキュアメモリ300の展開監視部190が、暗号化されたモジュールＡ（180）を復号化して、ハードディスク上に展開する。セキュアメモリ部300は、コンテンツ提供プログラム（モジュールＡ）の展開時に、モジュールＡの埋め込み鍵を乱数値で書き換え、書き換えた後の埋め込み鍵の値をセキュアメモリ300内部に記憶しておく。
【００８５】
展開後のコンテンツ提供プログラム部100（モジュールＡ）は、実際の転送処理を開始する際、セキュアメモリ部300に対して乱数値を与える。セキュアメモリ部300は、モジュールＡから与えられた乱数値と埋め込み鍵を用いて所定の演算（例えばXOR演算）を行い、その演算結果をモジュールＡに返す。そしてコンテンツ提供プログラム部100（モジュールＡ）の認証管理部170が、自ら所有する埋め込み鍵と上記乱数値とを用いて行った演算と、セキュアメモリ300から返された演算結果が一致するか否かチェックする。
【００８６】
一致した場合、コンテンツ提供プログラム部100（モジュールＡ）は正当なセキュアメモリにアクセスしていると判断することができる。また、初期状態において、コンテンツ提供プログラム部100（モジュールＡ）は暗号化されており改竄が困難である。さらに、埋め込み鍵はモジュールプログラムの実行毎に変化させることができるため、不正アクセスモジュールが、この検証処理と同等の動作を実現することは難しく、不正アクセスをより確実に防止できる。
【００８７】
上記各実施形態に関し、次の付記を示す。
（付記１）
機能モジュールからのデータの書込み操作とデータの読出し操作とを受ける記憶素子であって、
前記データを格納する所定容量のメモリ領域を有し前記機能モジュールによって書込まれたデータを記憶する記憶部と、
前記機能モジュールによって書込まれたデータのデータ量を前記機能モジュールから読出し可能なように格納したデータ量管理レジスタと、
前記機能モジュールによって前記記憶部に記憶されたデータの読出しが行われた場合、当該読み出されたデータに対応するデータが格納されていた前記記憶部のメモリ領域について、前記機能モジュールによるデータの書込みが行われるまで、データの読出しを不能とするように制御する制御部とを備えたことを特徴とするデータ保護機能を有する記憶素子。
（付記２）
機能モジュールからのデータの書込み操作と、データの読出し操作とを受ける記憶素子であって、前記データを格納する所定容量のメモリ領域を有し前記機能モジュールによって書込まれたデータを記憶し、前記データの書込みのみを許可するライトオンリーメモリ領域と、前記データの読出しのみを許可するリードオンリーメモリ領域とを有する記憶部と、前記ライトオンリーメモリ領域に書込まれたデータを、前記リードオンリーメモリ領域に転送する転送処理部と、一旦読み出されたデータを格納するリードオンリーメモリ領域についてライトオンリーメモリ領域からリードオンリーメモリ領域にデータが転送されるまで読み出しを不能とするアクセス制御部と、前記機能モジュールによって書込まれたデータのデータ量として、前記転送処理部によって転送されたデータのデータ量を、前記機能モジュールから読出し可能なように格納する前記データ量管理レジスタと、を有することを特徴とする記憶素子。
【００８８】
（付記３）
付記１または２に記載の記憶素子であって、前記機能モジュールからのアクセスを許可又は禁止するためのアクセス制御フラグをさらに備え、前記アクセス制御フラグが第１状態のとき前記機能モジュールからの前記記憶部の書込み許可および機能モジュールによる記憶部の読出し禁止とし、第２状態のとき機能モジュールからの記憶部の書込み禁止および機能モジュールによる記憶部の読出し許可とし、前記機能モジュールによってデータが書込まれた後に、アクセス制御フラグを第２状態に設定することにより前記機能モジュールから記憶部を書込み禁止とし、前記アクセス制御フラグが第２状態のときに前記機能モジュールからの読出し要求があった場合、前記機能モジュールによる記憶部の読出しを許可し、前記読出しが行われた後にアクセス制御フラグを第１状態に設定することにより前記機能モジュールによる記憶部を読出し禁止とすることを特徴とする記憶素子。
（付記４）
付記２の記憶素子であって、
前記機能モジュールからのアクセスを許可又は禁止するためのアクセス制御フラグをさらに備え、
アクセス制御フラグが第１状態のときライトオンリーメモリ領域の書込み許可およびリードオンリーメモリ領域の読出し禁止とし、第２状態のときライトオンリーメモリ領域の書込み禁止およびリードオンリーメモリ領域の読出し許可とし、
前記機能モジュールによってデータが書込まれた後に、アクセス制御フラグを第２状態に設定することによりライトオンリーメモリ領域を書込み禁止とすることを特徴とする記憶素子。
【００８９】
（付記５）
付記４の記憶素子であって、
前記アクセス制御フラグが第２状態のときに前記機能モジュールからの読出し要求があった場合、前記リードオンリーメモリ領域の読出しを許可し、前記読出しが行われた後にアクセス制御フラグを第１状態に設定することによりリードオンリーメモリ領域を読出し禁止とすることを特徴とする記憶素子。
（付記６）
付記４の記憶素子であって、
前記アクセス制御フラグが第１状態のときに、前記機能モジュールからの読出し要求があった場合、読出し要求のあったデータを、書込まれたデータに出現することのないパターンデータに置き換え、このパターンデータが前記機能モジュールによって読み出されるようにすることを特徴とする記憶素子。
（付記７）
前記パターンデータは、オールゼロデータであることを特徴とする付記６の記憶素子。（付記８）
前記アクセス制御フラグは、前記第１状態のとき０に設定され、前記第２状態のとき１に設定されることを特徴とする付記４，５，６または７の記憶素子。
【００９０】
（付記９）
前記付記１乃至８に記載のいずれかの記憶素子と、前記記憶素子にデータを書き込む第１機能モジュールと、前記記憶素子からデータを読み出す第２機能モジュールとを備え、第１機能モジュールが持つコンテンツデータを、前記記憶素子のライトオンリーメモリ領域に書き込んだ後、書き込まれたコンテンツデータを記憶素子のリードオンリーメモリ領域に転送し、リードオンリーメモリ領域に転送されたコンテンツデータを、第２機能モジュールが読出すことを特徴とする情報処理装置。
（付記１０）
前記第１機能モジュールが、前記記憶素子に書込んだデータのデータ量Ｄ１を管理する通信量管理部と、前記記憶素子においてデータの不正アクセスが行われていることを検出する不正検出部とを備え、前記第１機能モジュールの不正検出部は、前記記憶素子のデータ量管理レジスタを読み出すことで実際に転送されたデータ量Ｄ２を取得し、前記通信量管理部によって管理されているデータ量Ｄ１と、前記データ量Ｄ２とを比較することによって、データの不正アクセスが行われているか否かを判断することを特徴とする付記９の情報処理装置。
【００９１】
（付記１１）
前記第１機能モジュールの不正検出部が、前記記憶素子のデータ量管理レジスタから得たデータ量Ｄ２が、前記データ量Ｄ１よりも大きい場合に、不正アクセスがあったと判断し、第１機能モジュールが、以後の記憶素子へのデータの書込みを実行しないことを特徴とする付記１０の情報処理装置。
（付記１２）
前記第２機能モジュールが、不正検出部を備え、前記第２機能モジュールの不正検出部が、前記記憶素子から読み出したデータが、書込まれたデータに出現することのないパターンデータであることを検出した場合には、不正アクセスがあったと判断することを特徴とする付記９の情報処理装置。
（付記１３）
付記１２の情報処理装置であって、
前記第２機能モジュールは、前記第２機能モジュールの不正検出部が不正アクセスがあったと判断した場合に前記第１機能モジュールにその旨を通知する不正通知部を備え、
前記通知を受けた第１機能モジュールは、以後の記憶素子へのデータの書込みを実行しないことを特徴とする情報処理装置。
【図面の簡単な説明】
【００９２】
【図１】この発明のデータ保護機構の概略説明図である。
【図２】この発明のデータ保護機構において、不正アクセスがあった場合の説明図である。
【図３】この発明のデータ保護機構において、不正アクセスがあった場合の説明図である。
【図４】この発明のデータ転送機能等を実現する情報処理装置の一実施例の構成ブロック図である。
【図５】この発明のセキュアメモリ部の記録ブロック等の説明図である。
【図６】この発明のアクセス制御フラグと、リードワンス領域の対応付けの説明図である。
【図７】この発明のセキュアメモリ部のリードワンス領域に対して行う読出処理のフローチャートである。
【図８】この発明のセキュアメモリ部のライトオンリー領域に対して行う書込処理のフローチャートである。
【図９】この発明のセキュアメモリ部の転送処理部の一実施例の処理内容の説明図である。
【図１０】この発明のデータ転送時に用いられる管理情報の一実施例の説明図である。
【図１１】この発明のコンテンツ提供プログラム（モジュールＡ）の一実施例のフローチャートである。
【図１２】この発明のコンテンツ表示プログラム（モジュールＢ）の一実施例のフローチャートである。
【図１３】この発明の情報処理装置の一実施例の構成ブロック図である。
【図１４】この発明において、データ転送の正当性を判断する一実施例の説明図である。
【図１５】この発明のセキュアメモリ部の正当性の検証処理の一実施例の説明図である。
【図１６】従来の耐タンパー化モジュールの概念的な説明図である。
【図１７】従来において、２つのモジュール間で相互にデータ交換をする場合の概念的な説明図である。
【図１８】従来において、２つのモジュール間でデータを転送する場合の概念的な説明図である。
【図１９】従来において、ハードディスクを用いて、モジュール間のデータ転送をする場合の概念的な説明図である。
【符号の説明】
【００９３】
１  モジュールＡ
２  モジュールＢ
３  セキュアメモリ３
４  ライトオンリーメモリ
５  リードワンスメモリ
６  データ量管理レジスタ
７  メモリ制御部
１００  コンテンツ提供プログラム
１１０  コンテンツ格納部
１２０  コンテンツ管理情報格納部
１３０  通信量管理部
１４０  通信制御部
１５０  不正検出部
１６０  通信処理部
２１０  不正検出部
２２０  コンテンツ表示部
２３０  通信制御部
２４０  コンテンツ処理部
２５０  通信処理部
３００  セキュアメモリ部
３１０  Ｒ／Ｗ制御部
３２０  ライトオンリー領域部
３４０  リードワンス領域部
３４１  アクセス制御フラグ
３５０  転送処理部
３６０  データ量管理部
３６１  データ量管理レジスタ
【図１】
2008108212.tif 000003
【図２】
2008108212.tif 000004
【図３】
2008108212.tif 000005
【図４】
2008108212.tif 000006
【図５】
2008108212.tif 000007
【図６】
2008108212.tif 000008
【図７】
2008108212.tif 000009
【図８】
2008108212.tif 000010
【図９】
2008108212.tif 000011
【図１０】
2008108212.tif 000012
【図１１】
2008108212.tif 000013
【図１２】
2008108212.tif 000014
【図１３】
2008108212.tif 000015
【図１４】
2008108212.tif 000016
【図１５】
2008108212.tif 000017
【図１６】
2008108212.tif 000018
【図１７】
2008108212.tif 000019
【図１８】
2008108212.tif 000020
【図１９】
2008108212.tif 000021