説明

半導体システム

【課題】システムメモリ(主メモリ部)に書き込むデータを保護することができ、データの不正な複製等を防止することが可能な半導体システムを提供することである。
【解決手段】半導体システム10Aは、保護された情報を入力し、保護の解除処理を行うことが可能な機密情報処理部15Aと、乱数を発生する乱数発生部16-1と、発生した乱数あるいは乱数を発生するためのシードを保存するバッファ部16-2又は16-2aと、前記乱数と保護すべき情報との排他的論理和の計算により、前記保護すべき情報の前記乱数による暗号化及び復元を行う排他的論理和部17と、前記排他的論理和部で暗号化された保護すべき情報を記憶する主メモリ部12と、前記主メモリに記憶した情報を前記排他的論理和回路に戻して復元させ、該復元した情報を再生部13又は14に供給するように制御する制御部11とを備えている。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、保護される通信やマルチメディアの処理(再生、メディアへの記録)を含む、機密性の高い情報を扱う半導体システムに関するものである。
【背景技術】
【0002】
通信や音声および映像等のマルチメディア技術においては、通信対象データあるいはマルチメディアコンテンツの保護を目的として、暗号技術あるいはその応用であるVPN(Virtual Private Networkの略)やDRM(Digital Right Managementの略)技術が使用される。これらの技術で重要な要素として、保護すべき情報である秘匿情報の漏洩を起こさないシステム上での取り扱いがある。秘匿情報とは、暗号の鍵や処理で使用するパラメータ、あるいは保護を解除するためのアルゴリズムそのもの、さらに保護を解除したあとのデータやコンテンツが該当する。
【0003】
保護(暗号化)されたコンテンツデータが通信やメディアから読み込まれる従来の半導体システムで、上記の保護処理を行うことを考える。このシステムは、システムを管理するためのメインCPUと、データおよびプログラムを保存するためのシステムメモリと、保護を解除されたビデオ(VIDEO)およびオーディオ(AUDIO)のコンテンツを、アナログ出力するための再生処理を行うビデオモジュールとオーディオモジュールと、コンテンツの保護解除に関わる秘匿情報を、メインCPUで動作する可能性のある悪意あるプログラムから保護することが可能な機密情報処理モジュールと、を備える。ここで、モジュールとは、システムの特性に合わせてさまざまな機能に特化した各機能のブロックを指す。
【0004】
機密情報処理モジュール内で行われる保護解除処理は、メインCPUとは分離することで保護が達成されている。しかし、機密情報処理モジュールでの保護解除処理終了後、他の各モジュールへのデータ転送などの際に、保護を解除したコンテンツ(以下平文コンテンツと呼ぶ)をシステムメモリに一時保存することが必要な場合がある。システムメモリに置かれたデータは、メインCPUで実行される不正な悪意あるプログラム等からの利用の恐れがあったり、JTAG ICE等のデバッガ用ツールを通してデータの漏洩が生じる可能性がある。従って、システムメモリに置かれる平文コンテンツを保護し、不正な複製等を禁止できるシステムを構築するという課題が生じる。
【0005】
ところで、例えば特許文献1には、機密保護のためデータの暗号化処理と、データ転送とを効率よく行うことができるDMAコントローラが開示されている。
しかしながら、特許文献1に基づいてシステムメモリに置かれた平文コンテンツを保護した場合、転送先或いは転送元のアドレス及び前ブロックの暗号データに基づいて乱数を再生成しているため、転送範囲に対して、頭の部分から順繰りに処理しないと復号できないという問題がある。また、各対象データのフォーマットに対応して、暗号及び復号範囲を一部除外するなどの対応が難しいという問題がある。
【特許文献1】特開2007−102468号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
そこで、本発明は上記の問題に鑑み、システムメモリに書き込むデータを保護することができ、データの不正な複製等を防止することが可能な半導体システムを提供することを目的とするものである。
【課題を解決するための手段】
【0007】
本発明の一態様によれば、保護された情報を入力し、その保護の解除及び情報の保持を行うことが可能な機密情報処理部と、乱数を発生する乱数発生部と、発生した乱数あるいは乱数を発生するためのシードを保存するバッファ部と、前記乱数と前記機密情報処理部に保持した保護すべき情報との排他的論理和の演算により、前記保護すべき情報の前記乱数による暗号化及びその解除によって前記情報の保護及び復元を行う排他的論理和部と、前記排他的論理和部で暗号化によって保護された情報を記憶する主メモリ部と、少なくとも前記主メモリ部へのアクセスが可能で前記バッファ部へのアクセスが禁止される制御部であって、前記主メモリ部に記憶した保護された情報を前記排他的論理和部に戻すことによって、前記バッファ部で保存している乱数との排他的論理和の演算により復元される情報を再生部に供給するように制御する制御部とを具備した半導体システムが提供される。
【発明の効果】
【0008】
本発明によれば、システムメモリに書き込むデータを保護することができ、データの不正な複製等を防止することが可能な半導体システムを実現することができる。
【発明を実施するための最良の形態】
【0009】
発明の実施の形態について図面を参照して説明する。
まず、図10を参照して従来技術について説明する。
図10に示すような半導体システム10では、システムを管理するためのメインCPU11と、データおよびプログラムを保存するためのシステムメモリ12と、保護を解除されたビデオ(VIDEO)およびオーディオ(AUDIO)コンテンツを、アナログ出力するための再生処理を行うビデオモジュール13及びオーディオモジュール14と、コンテンツの保護解除に関わる秘匿情報を、メインCPU11で動作する可能性のある悪意あるプログラムから保護することが可能な機密情報処理モジュール15と、を備える。なお、機密情報処理モジュール15は、本来、平文化した状態のデータがシステムメモリやメインCPU等を介して一般ユーザーに見られる状態になるのを防ぐために他のデータとは別に区分して保持しておくために設けられているものである。
【0010】
機密情報処理モジュール15内で行われる保護解除処理は、メインCPU11とは分離することによって保護が達成されている。しかし、機密情報処理モジュール15での保護解除処理終了後、ビデオ及びオーディオモジュール13,14等の他の各モジュールへのデータ転送などの際に、保護を解除し平文コンテンツをシステムメモリ12に一時保存することが必要な場合がある。このような場合に、システムメモリ12に置かれたデータは、メインCPU11で実行される不正な悪意あるプログラム等から利用される虞があったり、JTAG ICE等のデバッガ用ツールを通してデータの漏洩が生じる可能性がある。これは、保護されたデータは、機密情報処理モジュール15での保護解除処理終了後は、既存のプログラムされたデータフローが、システムメモリ12を経由して再生用モジュールにデータを転送するフローとなっているためである。従って、このようなデータフローにおいて、システムメモリ12に置かれる平文コンテンツを保護(暗号化)し、不正な複製等を禁止(防止)しなければならない課題が生じる。
【0011】
次に、図10に示す半導体システムにおいて、保護(暗号化)されたコンテンツデータが通信やメディアから半導体システムに読み込まれた後の処理について考察する。システムメモリ12に読み込まれたデータは、機密情報用CPU15-1によって保護を解除された平文コンテンツとなり、機密情報用内部メモリ15-2にバッファ(一時記憶)される。次にこの平文コンテンツをシステムメモリ12に書き込む際に、メインCPU11からのアクセスに対する保護を行う課題があることは前述した。ここでは、具体的なアプリケーションとして、メディア再生を例にその処理の流れと問題点を述べる。まず、コンテンツデータのフローは以下のようになる。
【0012】
(1) 図10では省略されているDVDやネットワークといった外部媒体から、DRM技術で保護された状態のコンテンツデータが、システムメモリ12に取り込まれる。
(2) 保護状態を解除するために、コンテンツデータを機密情報処理モジュール15の機密情報用内部メモリ15-2に転送する。続いて機密情報用CPU15-1で実行されるプログラムによってコンテンツデータの保護(暗号化)が実際に解除される。この結果得られた平文コンテンツは、機密情報用内部メモリ15-2に保存される。
(3) 保存された平文コンテンツは、メインCPU11の指示によって、システムメモリ12を経由して例えばコーデック等のビデオ,オーディオの再生用モジュール13,14を経て再生される。
【0013】
ここで基本的なフローは終了である。ただし、
(4) 再生に関連する機能として、平文コンテンツに何らかの加工を行う場合で、保護解除された映像や音声データに一定の処理を行ったり、それらを利用して品質向上を図るためのデータ(補間フレームや音質向上用データ)の作成
といった処理が加わることもある。
【0014】
図10に示されるような半導体システムにおいて、保護を解除された平文コンテンツは、複製可能な映像および音声であり、JTAG ICE等のツールや悪意のあるプログラムを通じてのこのデータへのアクセスを許せば、有価なデータの不法な複製が市中に出回る原因となる。
しかし、従来技術では、システムメモリ12の有効な保護手段が無い。したがって、上記(3)の処理に際し平文コンテンツを保護するためには、システムメモリ12を介することなく、データを機密情報処理モジュール15から直接再生用モジュール13,14に送るためのデータバッファ及びローカルバスというようなデータパスを準備する必要があった。
【0015】
或いは、機密情報処理モジュール15内で保護を解除された平文コンテンツをその保護に用いられていたものとは別のアルゴリズムによって再度暗号化した後にシステムメモリ12へ出力する必要があった。
前者においては、機密情報処理モジュール15の基本機能には変更が無いのに、アプリケーションに依存して再生用モジュール13,14等の他のモジュールとの接続に変更が生じ、機密情報処理モジュール15のファームウェアの変更も発生することから、半導体システムのスケーラビリティ(規模)やデザインの再利用性が乏しくなるといった問題があった。
【0016】
また、後者においては、システムメモリ12に取り込まれた暗号化したデータを再生処理する際に、平文コンテンツの再生処理を担うモジュールが更に暗号の復号処理を行う必要が生じる。このことはシステムの回路規模増大、システムの消費電力増大を意味する。更に、保護を解かれた平文コンテンツの再暗号・復号処理の存在がシステムの処理性能低下の要因となる。
【0017】
また、上記(4)のような処理を導入するに当たり、システムメモリ12上で一切の処理が行えない場合には、機密情報処理モジュール15に、保護を解除する基本機能だけでなく、複数フレームの平文コンテンツの管理や表示といった応用機能までの全てを導入する必要がある。このとき、機密情報処理モジュール15とメインCPU11間の制御および通信手順がアプリケーションに大きく依存することになり、メインCPU11で動作するアプリケーションやドライバおよび機密情報処理モジュール15で動作するファームウェアの再利用性が大きく低下することになる。もしくは、画像処理側にローカルメモリを導入し、メインCPU11とは分離した画像専用のCPUでローカルメモリ上のデータを上記(4)に従って処理することになり、これはコストを増大させる結果となる。
【0018】
また、他の従来技術に、メインCPU11自体にメモリを内蔵させ、このCPUの2つの動作モードである通常モードとセキュアモードのうち、セキュアモードでのみ内蔵メモリのアクセスを許可することで、メモリ上のデータの保護を行うシステムもあるが、CPUの高度なアーキテクチャを利用することでコスト増となりメモリ容量にも制約がある上、専用のソフトウェアサービスを利用する必要もある。
【0019】
本発明は、以上述べた問題点を解決するために、システムメモリに書き込むデータの保護手段を提供することを目的とするものである。システムメモリ上のデータの保護手段が存在すれば、システムメモリを平文コンテンツの一時保存領域として汎用のメモリを利用できるほか、半導体システムの用途に合わせて最適なメモリサイズを選択できるため、コスト面でも有利である。また、機密情報処理モジュールには、メインCPUからのシステムメモリ上の保護解除動作、非保護の平文コンテンツの処理、システムメモリとのデータ通信に関わる動作など単機能的な各要素の処理を導入すればよく、保守性が向上する。このことから、アプリケーションの多様性に関わらず、統一的な仕組みで平文コンテンツの保護が出来ることになり、秘匿データの保護機構全体のスケーラビリティを向上することが出来る。
【0020】
[第1の実施形態]
図1は本発明の第1の実施形態の半導体システムのブロック図を示している。
図1に示す半導体システム10Aは、メインCPU11、システムメモリ12、ビデオモジュール13、オーディオモジュール14、機密情報処理モジュール15A、乱数発生装置16-1、乱数バッファ16-2、XOR回路17を備えている。
機密情報処理部である機密情報処理モジュール15Aは、機密情報用CPU15-1と機密情報用内部メモリ15-2とDMAコントローラ(以下、DMACと略記)15-3とを備え、外部より保護された情報をシステムメモリ12を経由して入力し、保護の解除及びデータの保持を行うことが可能である。
【0021】
DMAC15-3は、後述するように半導体システム10Aを構成するシステムメモリ12と各モジュール13及び14との間のデータ転送、および機密情報処理モジュール15Aの機密情報用内部メモリ15-2とシステムメモリ12との間のデータ転送を行うために設けられており、通常モードと乱数モードを有する。
乱数発生部である乱数発生装置16-1は、乱数を発生する。この乱数は、規則性を有しない真性乱数である。
バッファ部である乱数バッファ16-2は、乱数発生装置16-1で発生した乱数を保存する。
【0022】
排他的論理和部であるXOR回路17は、乱数バッファ16-2からの乱数と保護するべきデータとの排他的論理和(XOR)の計算により、保護するべきデータの乱数による暗号化(スクランブル化)及び復元(スクランブル解除)を行う。
主メモリ部としてのシステムメモリ12は、メインCPU11が直接アクセスすることのできる記憶装置であって、外部からシステムメモリ12に取り込まれた保護されたデータは一旦機密情報処理モジュール15Aで保護が解除され、その後にデータを再生する場合にはシステムメモリ12を経由して再生部側のモジュール13,14にデータが流れていくフローとなっている。システムメモリ12にデータを書き戻す際には、本実施形態では、システムメモリ12にデータを転送する前にXOR回路17で乱数とXOR演算を行って暗号化(保護)し、その保護状態でデータがシステムメモリ12に送られて書き込まれる。
【0023】
制御部としてのメインCPU11は、システムメモリ12に対するデータの書き込み及び読み出しの制御、各機能モジュール15A,13及び14などへのデータの転送やフローの制御、DMAC15-3に対する通常モードと乱数モードの指示などの制御を行うことが可能である。DMAC15-3の乱数モードが起動されたときは、例えば、システムメモリ12に記憶した保護されたデータを再びXOR回路17に戻すことによって、乱数バッファ16-2に記憶してある暗号化時の乱数とのXOR演算に基づく復元(保護解除)されたデータを、再生部であるビデオモジュール13及びオーディオモジュール14に供給するように制御する。なお、乱数バッファ16-2の乱数バッファ領域は、メインCPU11からのアクセスが禁止されており、メインCPU11からは暗号化(スクランブル化)や復元(スクランブル解除)の元になる乱数を読み込むことはできない。
【0024】
再生部であるビデオモジュール13及びオーディオモジュール14は、バス19を介して保護解除されたデータを入力し、画像及び音声のアナログデータとして再生してディスプレイデバイスにて画像及び音声として出力する。
図1に示す半導体システム10Aにおいて、システムメモリ12に置かれる保護(暗号化)されたビデオデータが、機密情報用CPU15-1と機密情報用内部メモリ15-2から構成される機密情報処理モジュール15AとXOR回路17で行われる処理を経て保護が解除された後、ビデオモジュール13においてさらに再生のための再生処理がなされる。
【0025】
DMAC15-3は、半導体システム10Aを構成するシステムメモリ12と各モジュール13及び14との間のデータ転送、および機密情報処理モジュール15Aの機密情報用内部メモリ15-2とシステムメモリ12との間のデータ転送を行うために装備されている。このDMAC15-3は、メモリデータ転送を行う通常モードと、転送対象データに加えて乱数バッファ16-2からも乱数値を読み込み、それらデータの排他的論理和(XOR)をとった結果を出力する乱数モードとの、2つの動作モードを有する。
【0026】
図2はこの半導体システム10Aにおけるデータのフローを示している。
再生されるべきコンテンツデータは外部から保護がかけられた状態でシステムメモリ12に読み込まれた後(ステップS1)、DMAC15-3の通常モードが起動され (ステップS2)、この通常モードにて機密情報用内部メモリ15-2に取り込まれる(ステップS3)。次に機密情報用CPU15-1は、機密情報用内部メモリ15-2に置かれた保護された命令やデータを用いて上記の保護がかけられたコンテンツデータを復号処理し、保護が解除された平文コンテンツを得る(ステップS4)。この処理結果つまり平文コンテンツを結果1とする。
【0027】
その後、この結果1をDMAC15-3の乱数モードで暗号化してシステムメモリ12に出力する(ステップS5〜S9)。このシステムメモリ12への出力は、乱数発生装置16-1から出力される乱数と上記の結果1の排他的論理和をXOR回路17で計算した結果であり、これを結果2と呼ぶことにする。
【0028】
上記のステップS5〜S9の動作を説明する。ステップS4の保護解除処理後に、乱数は、DMAC15-3の乱数モードが起動される(ステップS5)。乱数は、DMAC15-3を乱数モードでかつシステムメモリ12にデータを転送する方向で起動するとき、転送対象の保護されるべき平文コンテンツのデータサイズに合わせて生成され(ステップS6)、この乱数はアドレス情報とともに乱数バッファ16-2内に保存される(ステップS7)。そして、この乱数は平文化された結果1とXOR回路17でXOR計算され、結果2として出力され(ステップS8)、システムメモリ12へ転送されて保存される(ステップS9)。
【0029】
システムメモリ12に保存される結果2は、乱数によってスクランブル化されており、メインCPU11はこのスクランブル化されたデータを直接利用することが出来ない。すなわち、システムメモリ12における平文コンテンツの保護(スクランブル化)が達成されていることになる。
【0030】
結果2をビデオモジュール13やオーディオモジュール14で利用するためには、結果2をシステムメモリ12から移動させる必要があるため、再びDMAC15-3の乱数モードが起動され(ステップS10)、この乱数モードを利用して結果2から結果1を得る。
【0031】
つまり、結果2をXOR回路17に入力し、結果1から結果2を得る際に使用した乱数バッファ16-2内の乱数値と再び排他的論理和をとる(ステップS11)。この結果、スクランブル化されていた結果2を、再び、機密情報用内部メモリ15-2に出力されていた平文コンテンツとして、すなわち結果1に復元した上でビデオモジュール13に転送する(ステップS12)。最後に、ビデオモジュール13においてビデオ再生に関わる所定の再生処理が行われた後(ステップS13)、ビデオモジュール13に接続されている図示しないディスプレイデバイスに出力されて再生される(ステップS14)。
【0032】
この乱数バッファ16-2の管理方法を図3および図4を用いて詳細に述べる。乱数バッファ16-2は、図3に示すように、各種の平文コンテンツと関連をもつ機能モジュールごとの領域を準備して管理される。図3では、機能1向け領域、機能2向け領域、……機能N向け領域のN個のバッファ領域を用意している。各バッファ領域のサイズは、機能モジュールの要求に合わせて事前に決定することができ、各機能モジュールに対応する一回のデータの保護および解除処理の最大サイズとなる。
【0033】
これまで述べてきたように、各機能モジュールでデータが処理されるまでには、[1]機密情報用内部メモリ15-2からシステムメモリ12へ、[2]システムメモリ12から機能モジュールへ、という2回の乱数モードでのDMA転送が行われる。[1]および[2]はDMA起動時に区別して実行することができる。機能Nに関するデータの[1]の転送設定の際のDMAC15-3への設定項目として、システムメモリ12上の転送元先頭アドレスaddrN、転送サイズおよび機能番号Nを指定する。この時、処理に必要なサイズの乱数が乱数バッファ16-2上の所定のアドレスに準備される。なお、先頭アドレスはスタートアドレスとも呼ばれる。
【0034】
排他的論理和を計算するために生成された乱数が格納されている乱数バッファ16-2上のアドレスは、機能ごとに決定される。説明のため図3では、機能Nに対応する乱数バッファ16-2の先頭アドレスをrng_addrNで示している。rng_addrN はあらかじめ決定されている。乱数バッファ16-2とシステムメモリ12には、同じ機能1〜Nに対応する領域があってそれぞれにアドレスが付けられている。従って、乱数バッファ16-2とシステムメモリ12とで機能毎に先頭のアドレスだけを決めてやればそれに続くアドレスは当然互いに対応することになる。すなわち、機能1については、システムメモリ12の先頭アドレスはaddr1、乱数バッファ16-2の先頭アドレスはrng_addr1であり、機能2については、システムメモリ12の先頭アドレスはaddr2、乱数バッファ16-2の先頭アドレスはrng_addr2である。機能3以降も同様である。機能Nに関しては、システムメモリ12上の先頭アドレスは addrNであり、乱数バッファ16-2の先頭アドレスはrng_addrNである。
【0035】
図3において、addr_transを各機能においてシステムメモリ12上の実際に用いるアドレスとすると、例えば機能1について乱数バッファ上の先頭アドレスはrng_addr1、システムメモリ上の先頭アドレスはaddr1であるから、システムメモリ上の実際のアドレスに対応した乱数バッファ上の実際のアドレスは、(addr_trans - addr1) + rng_addr1となる。
【0036】
図4は乱数バッファ16-2の管理テーブルであり、乱数バッファの各機能向け領域(機能1,機能2,…機能N)に対応する、システムメモリ12上の各機能毎の先頭アドレスを示している。
DMAC15-3が参照する前記管理テーブルは、乱数バッファ領域もしくはハードウェアレジスタとして準備され、上記[1]のデータ転送時に、addrNとNとが関連付けられて保存される。[2]の転送を行う時には、機能番号Nとシステムメモリ12上のスクランブル化されたデータの転送開始アドレスaddr_transを指定する。addr_transは、[1]の処理対象データのスタートアドレスaddrNと一致していてもよくそうでなくとも良い。addrNとaddr_transにオフセットがある場合、(addr_trans - addrN) + rng_addrNを計算することで、対応するシステムメモリ12上のアドレスのデータを処理する乱数を求めることが出来る。ここに示す転送アドレスと関連付けた乱数バッファ16-2のアドレスの関係の管理は、ここではDMAC15-3の機能として実装される。この結果、スクランブル化されたデータのうち、指定する任意の領域の保護を解除して機能モジュールに転送することが可能になっている。また、[2]の転送先は、平文コンテンツを利用するモジュールに限定することで、セキュリティが向上する。
【0037】
この[2]の転送を終えた後は、乱数バッファ16-2の乱数は必要が無くなり、同じ機能モジュールで利用する他のデータを、[1]から繰り返した操作で再び取り扱うことが出来る。ここでは、乱数の管理を機能番号ごとに行ったが、システムの要求に合わせて機能あたりのバッファ数を複数にしたり、単純にバッファ番号として管理することも可能である。さらに、本実施形態の応用では、図4に示した管理テーブルでさらにrng_addrNも管理することで、機能ごとに任意のサイズを持つ乱数バッファ16-2のアドレスを設定する方法も実現することが出来る。
【0038】
第1の実施形態によれば、秘密に保持される乱数との排他的論理和の計算によって半導体システム内の機密データを保護することが出来る。これは、機能モジュール間のデータ転送用バッファ等となりうるシステムメモリの内容をメインCPUのアクセスから保護する手段として特に重要である。この際、現代暗号技術等のアルゴリズムを処理する複雑な計算や、暗号アルゴリズムに基づくブロックサイズ(処理単位)の考慮を行わず、データの保護処理を簡素化することが出来る。
【0039】
また、排他的論理和の計算をDMA転送と同時に行うことで、バスアクセスを減少させ、排他的論理和計算のサイズや乱数バッファと処理済みデータとの関連づけを一括して取り扱うことが出来る。
さらに、乱数バッファによる乱数の発生が、DMACに設定される転送対象のアドレスやサイズ、あるいは転送先機能種別と連動し、自動的に行われ、必要なサイズの乱数を自動的に発生させることができ、手順の簡素化を実現できる。
【0040】
[第2の実施形態]
図5は本発明の第2の実施形態の半導体システムのブロック図を示している。第1の実施形態と同一機能を有する部分には同一符号を付して説明する。
図5に示す半導体システム10Bは、メインCPU11と、システムメモリ12と、ビデオモジュール13と、オーディオモジュール14と、機密情報用CPU15-1と機密情報用内部メモリ15-2とDMAコントローラ(DMAC)15-3とを備えた機密情報処理モジュール15Aと、乱数発生装置16-1と、乱数バッファ16-2と、XOR回路17とを具備している。見掛け上の構成は、図1の第1の実施形態と同様である。
【0041】
第2の実施形態の半導体システム10Bが、第1の実施形態の半導体システム10Aと異なる点は、機密情報用内部メモリ15-2からシステムメモリ12へデータを転送する際に、システムメモリ12に書き戻すデータを全てスクランブル化するのではなくその一部のデータのみを平文としてシステムメモリ12上に書き込み、その一部のデータをメインCPU11で判読(解析)可能とするものである。
【0042】
このような非スクランブル化の応用例として、例えば、スクランブル化された平文コンテンツの内容の一部に、アプリケーションが解析を行うためのヘッダ等が含まれている場合を想定する。秘密情報ではないこのヘッダ等のみ、スクランブル化を除外して、メインCPU11で判読できるように処理を行うための仕組みである。
1つの方法は、機密情報用CPU15-1などから乱数発生装置16-1に何らかの情報を与えてスクランブル化を除外する部分に対して乱数の代わりに0を生成させて乱数バッファ16-2に保存することにより、非スクランブル化を実現する。或いは、乱数発生装置16-1からは乱数を発生させて乱数バッファ16-2に格納した後に、機密情報用CPU15-1などからスクランブル化を除外する部分に対して0を上書きする制御をすることにより、非スクランブル化を実現する。
【0043】
この第2の実施形態の動作を説明する。
第1の実施形態では機密情報用内部メモリ15-2に置かれる保護された命令での復号処理された処理結果(平文化コンテンツ)を結果1と呼んだ。この第2の実施形態における半導体システム10Bでは、この平文化処理した結果1を、DMAC15-3の乱数モードでスクランブル化した結果2としてシステムメモリ12に出力する前に、図6に示すような排他的論理和を取る対象のうち、乱数バッファ16-2の処理対象固有な領域(例えば機能1向け領域)に合致させるための任意のパターンを、0に書き換える機能を持つ。乱数バッファ16-2の値が0であるとき、排他的論理和の演算結果は演算を行わない場合と同一であるため、0に書き換えた領域のスクランブル化を除外することが出来る。ここで、0に置き換える乱数バッファ16-2内の領域は、処理対象のコンテンツのデータ構造に基づいて決定される。例えば、固定長 D byteのデータから構成されるコンテンツであれば、各データのヘッダーサイズ H byteと乱数バッファ先頭アドレス rng_addrN を基にi番目の(i≧0)パケットに関して0に置き換える領域はアドレス rng_addrN+ D×i を先頭とするH byteである。
【0044】
この0に置き換える領域の指定方法については、DMAC15-3にパターン(例えば、上記各データサイズDとヘッダのサイズH)を設定して乱数バッファ16-2への乱数発生後にDMAC15-3に乱数バッファ16-2の値を上書きするか、或いは、ライト専用とした乱数バッファ16-2にあらかじめ生成された乱数を、機密情報用CPU15-1によって0に上書きする方法で実現される。或いは、乱数発生装置16-1にパターンの情報を入力し、乱数ではなく0を発生させる方法も実現できる。
【0045】
以上のように毎回乱数バッファ16-2を0に書き換えるアドレスとサイズを指定することは煩雑であるため、機密処理モジュール15Aが処理対象のコンテンツのデータ構造に基づいてスクランブル化から除外する領域とサイズを規定して番号付けしておくことで、指定内容を簡素化することもできる。この時は、データフォーマットに応じた前述の番号のみを指定すればよい。
【0046】
これらの処理の結果、システムメモリ12上のスクランブル化されたデータは、アプリケーションとしてメインCPU11が解析に必要なヘッダ等は平文で、残りは乱数による暗号化(スクランブル化)で保護されたデータとなる。
第2の実施形態によれば、システムメモリ12に書き戻される機密処理済みの保護されたデータの一部を、平文でメインCPUが利用し、データ属性の解析や利用を可能にする効果を生む。例えば、乱数の一部を0で上書きすることで、一括して排他的論理和の計算処理を行うデータのうち、一部のデータのみを平文としてシステムメモリ12上で取り出し、内容を解析することが出来る。
【0047】
[第3の実施形態]
図7は本発明の第3の実施形態の半導体システムのブロック図を示している。第1の実施形態と同一機能を有する部分には同一符号を付して説明する。
図7に示す半導体システム10Cの構成は、メインCPU11と、システムメモリ12と、ビデオモジュール13と、オーディオモジュール14と、機密情報用CPU15-1と機密情報用内部メモリ15-2とDMAコントローラ(DMAC)15-3とを備えた機密情報処理モジュール15Aと、乱数発生装置16-1aと、バッファ部としてのシードバッファ16-2aと、XOR回路17とを具備している。
【0048】
これまでに述べた実施形態では、複数のストリームデータの並行処理などの際には、平文コンテンツのサイズの増大とともに必要な乱数バッファの領域が増大することが予想される。第1及び第2の実施形態では、乱数は真性乱数の場合であり、乱数バッファに全ての乱数を保存しているが、それに応じて多くのバッファ容量が必要となる問題がある。
【0049】
第3の実施形態の半導体システム10Cが、第1の実施形態の半導体システム10Aと異なる点は、発生した乱数そのものを乱数バッファ16-2に保存するのではなく、乱数のシードを保存することによって、必要な乱数バッファのサイズを抑制するものである。
【0050】
そこで、この第3の実施形態で使用する乱数発生装置16-1aは、乱数の初期値としてシードをとるタイプのものとする。この乱数発生装置16-1aは、与えられたシードを種とした乱数発生のラウンド(一巡)をすすめる。言い換えると、同一のシードから乱数発生のラウンドを行うと、発生する全ての乱数を再現することが出来る。つまり、同一のシードを与えると、同一の乱数を再現することができる。
【0051】
本実施形態では、機密情報処理モジュール15Aからの出力を行う際、機密情報用CPU15-1は乱数のシードを乱数発生装置16-1a以外からの読み込みが禁止されたシードバッファ16-2aに格納する。なお、シードバッファ16-2aのバッファ領域は、メインCPU11からのアクセスが禁止されており、メインCPU11からは暗号化(スクランブル化)や復元(スクランブル解除)の元になるシード値を読み込むことはできない。
【0052】
ここで、シードバッファ16-2aにおけるシード値は、データが最終的に使われる機能モジュールの機能番号Nごとに図8に示すようなシードバッファ16-2aに保管されるテーブルで管理される。機能1〜Nの各機能ごとにシードバッファ16-2aのアドレスseed_addr1〜seed_addrNが対応している。即ち、機能番号とシード番号(シードアドレス)が対応している。シードバッファ16-2aを用いる乱数発生装置16-1aでは、同じシードならば生成される乱数値も同じになる。どの機能番号(=シードアドレス)のシードを使ってそのシードの何番目の乱数値なのかが確定できれば、スクランブルを掛けたり外したりする際の乱数値も確定できる。そのようなシードアドレス及びその何番目かを示す値を、機密情報用CPU15-1や外部の制御部などから与えてやることができる。
【0053】
DMAC15-3の乱数モードによるデータ転送を行う際、前述の機能番号が同時に指定されることで、機能別に用意したシードを利用した1ラウンド以上の乱数生成が転送データサイズに対応して行われ、次々と保護すべきデータとの排他的論理和の計算を行う。計算結果は、スクランブル化もしくは復号化の結果として出力される。この乱数発生装置16-1aは、同一シードの再入力により同じ乱数値を再び発生することが出来ることから、DMAC15-3の乱数モードを行う度に乱数の発生を行うことによって乱数値そのものを保存する必要が無くなり、バッファ容量を削減することが出来る。ここで、スクランブル化をするシステムメモリ12のアドレスとシードバッファ16-2aの機能番号の対応を図4に示したようなテーブルで管理することは、第1の実施形態と同様である。このテーブルには、システムメモリ12上のスクランブル化の先頭アドレスがエントリされるが、先頭からオフセットをもつアドレスからDMA転送を開始する場合には、オフセット分のラウンド数の乱数発生プロセスを行い、処理対象外となる乱数の取得をスキップしたあと、必要な乱数を得た上で排他的論理和の計算を行う。
【0054】
さらに、第3の実施形態では、第2の実施形態のように乱数バッファがないので、図6のようにバッファデータを0に設定できない。従って、スクランブル化を除外したい場合には、乱数そのものを0にしなくてはならない。そのためには、スクランブルを解除したいところの一部の乱数だけを保存または再発生し、スクランブル解除の要求があればその保存しておいた乱数を用いてデータの一部だけを復号する。
【0055】
第2の実施形態に述べたスクランブル対象の制御を導入するために、DMA起動時に指定する平文コンテンツのフォーマットに合わせて乱数発生装置16-1aの出力を0にする制御を行う。ただし、フォーマットが既知であれば、スクランブル化除外の必要な例えばヘッダ部分に利用する乱数値のみを、機密情報用内部メモリ15-2やシードバッファ16-2a、あるいは機密情報用CPU15-1のみが読み出し可能である乱数バッファ等に保存しておき、機密情報処理モジュール15AがメインCPU11からの要求に基づき、スクランブル化されたシステムメモリ12の情報の一部を復元するサービスを行う方法をとることもできる。
【0056】
第3の実施形態によれば、複数のストリームデータの並行処理などの際に、平文コンテンツのサイズの増大とともに必要な乱数バッファの領域が増大することがなく、乱数バッファを少ない容量のシードバッファで置き換えることができる。
【0057】
[第4の実施形態]
図9は本発明の第4の実施形態の半導体システムのブロック図を示している。第1の実施形態と同一機能を有する部分には同一符号を付して説明する。
図9に示す半導体システム10Dは、メインCPU11と、システムメモリ12と、ビデオモジュール13と、オーディオモジュール14と、機密情報用CPU15-1と機密情報用内部メモリ15-2とDMAコントローラ(DMAC)15-3とを備えた機密情報処理モジュール15Aと、乱数発生装置16-1と、乱数バッファ16-2と、XOR回路17と、乱数管理CPU18とを具備している。
【0058】
図9に示す第4の実施形態は、乱数発生装置16-1の乱数発生の制御及び乱数バッファ16-2の管理を行うための専用の乱数管理CPU18を設けた例を示している。乱数管理CPU18のプログラム及びデータは乱数バッファ16-2に存在し、乱数管理CPU18のみがアクセス可能である。
【0059】
機密情報処理モジュール15Aを利用した平文コンテンツの取得後、メインCPU11もしくは機密情報用CPU15-1は、システムメモリ12のスクランブル化に関する乱数管理CPU18への初期化を行う。この初期化により乱数管理CPU18は、乱数あるいはシード値管理に必要な領域を乱数バッファ16-2上に確保する。また、この要求には必要に応じ同時にスクランブル化から除外する位置とサイズ情報またはこれらを含むフォーマット情報が指定される。これらの管理情報は、乱数発生識別情報として乱数管理CPU18に管理される。この乱数発生識別情報は、メインCPU11もしくは機密情報用CPU15-1からの初期化要求に対する応答として、直接もしくは機密情報用CPU15-1を経てメインCPU11に返される。
【0060】
通常動作時、スクランブル化の要求側は、この識別情報とともに乱数での平文コンテンツのシステムメモリ12への格納のためのスクランブル化を起動する。起動後、乱数管理CPU18は識別情報を用いて乱数バッファ16-2に乱数を発生する。なお、乱数発生は、乱数管理CPU18が乱数発生装置16-1を用いて行うが、乱数管理CPU18がソフトウェアのアルゴリズムでの乱数生成を行っても良い。この時、本実施形態に乱数発生装置16-1は不要となる。
【0061】
ここで、スクランブルから除外する領域の要求を持つ識別情報の指定があった場合には、排他的論理和を計算する前に乱数管理CPU18により乱数バッファ16-2の一部の内容を0とする。シードを使うタイプの場合も、同様に除外領域に対応するラウンドで発生した乱数を0で上書きする。発生した乱数と平文コンテンツの排他的論理和は、乱数管理CPU18によって設定に従ったDMAC15-3の付加機能もしくは乱数管理CPU18によって計算される。
【0062】
また、スクランブル化されたシステムメモリ12からのデータ転送及び復元についても、識別情報による乱数情報の決定と計算が同様に行われる。ただし、フォーマットに依存する乱数値の0での上書きを再度行うことはない。
さらに、乱数発生機能を乱数管理CPU18によるソフトウェア乱数発生で実現し、ある領域の乱数値を0として発生させる機能をソフトウェアアルゴリズムとして実装すれば、フォーマットの指定に関する乱数発生装置16-1もしくはDMAC15-3の回路の実装を単純化できるようになる。
【0063】
第4の実施形態によれば、乱数管理用のCPUを導入することで、保存された乱数と処理データの高度な関連付けや処理が可能になる。すなわち、平文コンテンツを利用するモジュールと、データをスクランブル化するための乱数の関係を動的なものも含めて自由に導入することで、メインCPU側と連携して複雑な処理を行ったり、乱数バッファ領域の節約を可能にする制御を行うことが出来る。また、乱数発生もソフトウェア的に前述の乱数管理用のCPUで行うことで、乱数発生装置を省略することもできる。
【0064】
以上述べた本発明では、システムメモリ上の平文コンテンツの保護を行うために、システムメモリに書き込むデータの保護を行う半導体システムを提供する。同半導体システムは乱数発生装置を実装しており、同乱数発生装置専用の乱数バッファ領域に同乱数発生装置から出力する乱数もしくは乱数を発生するためのシード値を保存する。この乱数バッファ領域は、半導体システムを構成するメインCPUからのアクセスが禁止される。本発明では、システムメモリ上に配置される秘匿情報保護には、同乱数バッファ領域に保存された乱数もしくは同乱数バッファ領域に保存されたシードを用いて発生する乱数を利用する。機密情報処理モジュールによって保護を解かれた平文コンテンツはシステムメモリへ出力される前に乱数との排他的論理和をとってスクランブルされる。メインCPUからは、スクランブルの元となる乱数もしくはシード値を読み込むことが出来ないため、システムメモリ上の平文コンテンツの保護が可能になる。システムメモリ上の保護(スクランブル化)されたデータの使用の際は、平文コンテンツの保護時に排他的論理和をとった乱数と、再び排他的論理和を計算することで元のデータに復元し、データ再生など必要な処理を行う。平文の使用を許可されたモジュールへのデータ転送時のみ乱数の利用を許可することで、上記の仕組みにより保護されたデータの安全性がさらに高まる。ここで、上に述べた排他的論理和の演算は、DMAコントローラ(図1におけるDMAC)や乱数管理用のCPU(図9における乱数管理CPU)によるデータの転送の付加機能として実装される。
【0065】
平文コンテンツの保護に乱数を用いている利点として、暗号アルゴリズムを使用した場合よりも処理速度が速いことや、保護または保護解除のサイズに対して暗号のブロックサイズを考慮する必要が無いという利点がある。また、乱数を使用した場合は、一部の乱数が漏洩しても直ちにシステムメモリ全体の機密情報が危機に瀕することはなく、1つの鍵情報によって秘匿対象データ全ての保護を行う暗号アルゴリズムを使用する場合よりも、暗号学的な弱点を突いた攻撃に対して耐性を持つ。なお、通常の暗号アルゴリズムにおける暗号は、決まった規則に従ってデータを変換することによってスクランブルすることを指しているが、暗号化、復号には鍵を用いている。その鍵は、乱数を元にして作成されている。従って、秘匿性は鍵の秘匿性と管理に依存する。これに対して、本願発明における乱数による暗号は、乱数そのものを暗号化に用いている(特に、真性乱数を用いて保護すべきデータと排他的論理和を計算する)点で、暗号アルゴリズムと比べて簡単な演算により高い秘匿性が得られる利点がある。
【図面の簡単な説明】
【0066】
【図1】本発明の第1の実施形態の半導体システムを示すブロック図。
【図2】図1の動作を説明するフローチャート。
【図3】図1の乱数バッファのアドレスを説明する図。
【図4】乱数バッファ管理テーブルを示す図。
【図5】本発明の第2の実施形態の半導体システムを示すブロック図。
【図6】図5の書き替え後の乱数バッファの状態を示す図。
【図7】本発明の第3の実施形態の半導体システムを示すブロック図。
【図8】図7のシードバッファ管理テーブルを示す図。
【図9】本発明の第4の実施形態の半導体システムを示すブロック図。
【図10】従来技術の半導体システムの構成を示すブロック図。
【符号の説明】
【0067】
10A,10B,10C,10D…半導体システム
11…メインCPU(制御部)
12…システムメモリ(主メモリ部)
13…ビデオモジュール(再生部)
14…オーディオモジュール(再生部)
15A…機密情報処理モジュール(機密情報処理部)
15-3…DMAC(DMAコントローラ)
16-1,16-1a…乱数発生装置(乱数発生部)
16-2…乱数バッファ(バッファ部)
16-2a…シードバッファ(バッファ部)
17…XOR回路(排他的論理和部)
18…乱数管理CPU(乱数管理用制御部)

【特許請求の範囲】
【請求項1】
保護された情報を入力し、その保護の解除及び情報の保持を行うことが可能な機密情報処理部と、
乱数を発生する乱数発生部と、
発生した乱数あるいは乱数を発生するためのシードを保存するバッファ部と、
前記乱数と前記機密情報処理部に保持した保護すべき情報との排他的論理和の演算により、前記保護すべき情報の前記乱数による暗号化及びその解除によって前記情報の保護及び復元を行う排他的論理和部と、
前記排他的論理和部で暗号化によって保護された情報を記憶する主メモリ部と、
少なくとも前記主メモリ部へのアクセスが可能で前記バッファ部へのアクセスが禁止される制御部であって、前記主メモリ部に記憶した保護された情報を前記排他的論理和部に戻すことによって、前記バッファ部で保存している乱数との排他的論理和の演算により復元される情報を再生部に供給するように制御する制御部と、
を具備したことを特徴とする半導体システム。
【請求項2】
前記バッファ部、前記排他的論理和部、及び前記主メモリ部のデータ転送を行うDMAコントローラをさらに具備し、
前記乱数と前記保護すべき情報との排他的論理和の演算が、前記乱数、前記保護すべき情報、及び演算結果のDMA転送と一括して実行される請求項1に記載の半導体システム。
【請求項3】
前記バッファ部による乱数の発生が、前記DMAコントローラに設定される転送先のアドレスやサイズ、あるいは転送先の機能種別に対応して、自動的に行われることを特徴とする請求項2に記載の半導体システム。
【請求項4】
前記乱数を管理するための乱数管理用制御部を有し、
該乱数管理用制御部は、前記乱数の発生、前記バッファ部の必要領域の確保および乱数保存領域の管理、あるいは排他的論理和の計算を行うことを特徴とする請求項1乃至3のいずれか1つに記載の半導体システム。
【請求項5】
前記機密情報処理部もしくは外部の制御部が、前記バッファ部に保存される乱数の上書きを許可することによって、前記保護すべき情報の一部をスクランブル対象から除外することを特徴とする請求項1乃至4のいずれか1つに記載の半導体システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2010−113615(P2010−113615A)
【公開日】平成22年5月20日(2010.5.20)
【国際特許分類】
【出願番号】特願2008−287076(P2008−287076)
【出願日】平成20年11月7日(2008.11.7)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】