(57)【要約】【課題】システムメモリ(主メモリ部)に書き込むデータを保護することができ、データの不正な複製等を防止することが可能な半導体システムを提供することである。【解決手段】半導体システム１０Ａは、保護された情報を入力し、保護の解除処理を行うことが可能な機密情報処理部１５Ａと、乱数を発生する乱数発生部１６-1と、発生した乱数あるいは乱数を発生するためのシードを保存するバッファ部１６-2又は１６-2aと、前記乱数と保護すべき情報との排他的論理和の計算により、前記保護すべき情報の前記乱数による暗号化及び復元を行う排他的論理和部１７と、前記排他的論理和部で暗号化された保護すべき情報を記憶する主メモリ部１２と、前記主メモリに記憶した情報を前記排他的論理和回路に戻して復元させ、該復元した情報を再生部１３又は１４に供給するように制御する制御部１１とを備えている。【選択図】図１
2010113615.tif 000002
【特許請求の範囲】
【請求項１】
保護された情報を入力し、その保護の解除及び情報の保持を行うことが可能な機密情報処理部と、
乱数を発生する乱数発生部と、
発生した乱数あるいは乱数を発生するためのシードを保存するバッファ部と、
前記乱数と前記機密情報処理部に保持した保護すべき情報との排他的論理和の演算により、前記保護すべき情報の前記乱数による暗号化及びその解除によって前記情報の保護及び復元を行う排他的論理和部と、
前記排他的論理和部で暗号化によって保護された情報を記憶する主メモリ部と、
少なくとも前記主メモリ部へのアクセスが可能で前記バッファ部へのアクセスが禁止される制御部であって、前記主メモリ部に記憶した保護された情報を前記排他的論理和部に戻すことによって、前記バッファ部で保存している乱数との排他的論理和の演算により復元される情報を再生部に供給するように制御する制御部と、
を具備したことを特徴とする半導体システム。
【請求項２】
前記バッファ部、前記排他的論理和部、及び前記主メモリ部のデータ転送を行うＤＭＡコントローラをさらに具備し、  
前記乱数と前記保護すべき情報との排他的論理和の演算が、前記乱数、前記保護すべき情報、及び演算結果のＤＭＡ転送と一括して実行される請求項１に記載の半導体システム。
【請求項３】
前記バッファ部による乱数の発生が、前記ＤＭＡコントローラに設定される転送先のアドレスやサイズ、あるいは転送先の機能種別に対応して、自動的に行われることを特徴とする請求項２に記載の半導体システム。
【請求項４】
前記乱数を管理するための乱数管理用制御部を有し、
該乱数管理用制御部は、前記乱数の発生、前記バッファ部の必要領域の確保および乱数保存領域の管理、あるいは排他的論理和の計算を行うことを特徴とする請求項１乃至３のいずれか１つに記載の半導体システム。
【請求項５】
前記機密情報処理部もしくは外部の制御部が、前記バッファ部に保存される乱数の上書きを許可することによって、前記保護すべき情報の一部をスクランブル対象から除外することを特徴とする請求項１乃至４のいずれか１つに記載の半導体システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、保護される通信やマルチメディアの処理(再生、メディアへの記録)を含む、機密性の高い情報を扱う半導体システムに関するものである。
【背景技術】
【０００２】
通信や音声および映像等のマルチメディア技術においては、通信対象データあるいはマルチメディアコンテンツの保護を目的として、暗号技術あるいはその応用であるVPN(Virtual Private Networkの略)やDRM(Digital Right Managementの略)技術が使用される。これらの技術で重要な要素として、保護すべき情報である秘匿情報の漏洩を起こさないシステム上での取り扱いがある。秘匿情報とは、暗号の鍵や処理で使用するパラメータ、あるいは保護を解除するためのアルゴリズムそのもの、さらに保護を解除したあとのデータやコンテンツが該当する。
【０００３】
保護(暗号化)されたコンテンツデータが通信やメディアから読み込まれる従来の半導体システムで、上記の保護処理を行うことを考える。このシステムは、システムを管理するためのメインＣＰＵと、データおよびプログラムを保存するためのシステムメモリと、保護を解除されたビデオ(VIDEO)およびオーディオ(AUDIO)のコンテンツを、アナログ出力するための再生処理を行うビデオモジュールとオーディオモジュールと、コンテンツの保護解除に関わる秘匿情報を、メインＣＰＵで動作する可能性のある悪意あるプログラムから保護することが可能な機密情報処理モジュールと、を備える。ここで、モジュールとは、システムの特性に合わせてさまざまな機能に特化した各機能のブロックを指す。
【０００４】
機密情報処理モジュール内で行われる保護解除処理は、メインＣＰＵとは分離することで保護が達成されている。しかし、機密情報処理モジュールでの保護解除処理終了後、他の各モジュールへのデータ転送などの際に、保護を解除したコンテンツ(以下平文コンテンツと呼ぶ)をシステムメモリに一時保存することが必要な場合がある。システムメモリに置かれたデータは、メインＣＰＵで実行される不正な悪意あるプログラム等からの利用の恐れがあったり、JTAG ICE等のデバッガ用ツールを通してデータの漏洩が生じる可能性がある。従って、システムメモリに置かれる平文コンテンツを保護し、不正な複製等を禁止できるシステムを構築するという課題が生じる。
【０００５】
ところで、例えば特許文献１には、機密保護のためデータの暗号化処理と、データ転送とを効率よく行うことができるＤＭＡコントローラが開示されている。  
しかしながら、特許文献１に基づいてシステムメモリに置かれた平文コンテンツを保護した場合、転送先或いは転送元のアドレス及び前ブロックの暗号データに基づいて乱数を再生成しているため、転送範囲に対して、頭の部分から順繰りに処理しないと復号できないという問題がある。また、各対象データのフォーマットに対応して、暗号及び復号範囲を一部除外するなどの対応が難しいという問題がある。
【特許文献１】特開２００７−１０２４６８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
そこで、本発明は上記の問題に鑑み、システムメモリに書き込むデータを保護することができ、データの不正な複製等を防止することが可能な半導体システムを提供することを目的とするものである。
【課題を解決するための手段】
【０００７】
本発明の一態様によれば、保護された情報を入力し、その保護の解除及び情報の保持を行うことが可能な機密情報処理部と、乱数を発生する乱数発生部と、発生した乱数あるいは乱数を発生するためのシードを保存するバッファ部と、前記乱数と前記機密情報処理部に保持した保護すべき情報との排他的論理和の演算により、前記保護すべき情報の前記乱数による暗号化及びその解除によって前記情報の保護及び復元を行う排他的論理和部と、前記排他的論理和部で暗号化によって保護された情報を記憶する主メモリ部と、少なくとも前記主メモリ部へのアクセスが可能で前記バッファ部へのアクセスが禁止される制御部であって、前記主メモリ部に記憶した保護された情報を前記排他的論理和部に戻すことによって、前記バッファ部で保存している乱数との排他的論理和の演算により復元される情報を再生部に供給するように制御する制御部とを具備した半導体システムが提供される。
【発明の効果】
【０００８】
本発明によれば、システムメモリに書き込むデータを保護することができ、データの不正な複製等を防止することが可能な半導体システムを実現することができる。
【発明を実施するための最良の形態】
【０００９】
発明の実施の形態について図面を参照して説明する。    
まず、図１０を参照して従来技術について説明する。  
図１０に示すような半導体システム１０では、システムを管理するためのメインＣＰＵ１１と、データおよびプログラムを保存するためのシステムメモリ１２と、保護を解除されたビデオ(VIDEO)およびオーディオ(AUDIO)コンテンツを、アナログ出力するための再生処理を行うビデオモジュール１３及びオーディオモジュール１４と、コンテンツの保護解除に関わる秘匿情報を、メインＣＰＵ１１で動作する可能性のある悪意あるプログラムから保護することが可能な機密情報処理モジュール１５と、を備える。なお、機密情報処理モジュール１５は、本来、平文化した状態のデータがシステムメモリやメインＣＰＵ等を介して一般ユーザーに見られる状態になるのを防ぐために他のデータとは別に区分して保持しておくために設けられているものである。
【００１０】
機密情報処理モジュール１５内で行われる保護解除処理は、メインＣＰＵ１１とは分離することによって保護が達成されている。しかし、機密情報処理モジュール１５での保護解除処理終了後、ビデオ及びオーディオモジュール１３，１４等の他の各モジュールへのデータ転送などの際に、保護を解除し平文コンテンツをシステムメモリ１２に一時保存することが必要な場合がある。このような場合に、システムメモリ１２に置かれたデータは、メインＣＰＵ１１で実行される不正な悪意あるプログラム等から利用される虞があったり、JTAG ICE等のデバッガ用ツールを通してデータの漏洩が生じる可能性がある。これは、保護されたデータは、機密情報処理モジュール１５での保護解除処理終了後は、既存のプログラムされたデータフローが、システムメモリ１２を経由して再生用モジュールにデータを転送するフローとなっているためである。従って、このようなデータフローにおいて、システムメモリ１２に置かれる平文コンテンツを保護(暗号化)し、不正な複製等を禁止(防止)しなければならない課題が生じる。
【００１１】
次に、図１０に示す半導体システムにおいて、保護(暗号化)されたコンテンツデータが通信やメディアから半導体システムに読み込まれた後の処理について考察する。システムメモリ１２に読み込まれたデータは、機密情報用ＣＰＵ１５-1によって保護を解除された平文コンテンツとなり、機密情報用内部メモリ１５-2にバッファ(一時記憶)される。次にこの平文コンテンツをシステムメモリ１２に書き込む際に、メインＣＰＵ１１からのアクセスに対する保護を行う課題があることは前述した。ここでは、具体的なアプリケーションとして、メディア再生を例にその処理の流れと問題点を述べる。まず、コンテンツデータのフローは以下のようになる。
【００１２】
(1)  図１０では省略されているDVDやネットワークといった外部媒体から、DRM技術で保護された状態のコンテンツデータが、システムメモリ１２に取り込まれる。  
(2)  保護状態を解除するために、コンテンツデータを機密情報処理モジュール１５の機密情報用内部メモリ１５-2に転送する。続いて機密情報用ＣＰＵ１５-1で実行されるプログラムによってコンテンツデータの保護(暗号化)が実際に解除される。この結果得られた平文コンテンツは、機密情報用内部メモリ１５-2に保存される。  
(3)  保存された平文コンテンツは、メインＣＰＵ１１の指示によって、システムメモリ１２を経由して例えばコーデック等のビデオ，オーディオの再生用モジュール１３，１４を経て再生される。
【００１３】
ここで基本的なフローは終了である。ただし、
(4)  再生に関連する機能として、平文コンテンツに何らかの加工を行う場合で、保護解除された映像や音声データに一定の処理を行ったり、それらを利用して品質向上を図るためのデータ(補間フレームや音質向上用データ）の作成
といった処理が加わることもある。
【００１４】
図１０に示されるような半導体システムにおいて、保護を解除された平文コンテンツは、複製可能な映像および音声であり、JTAG ICE等のツールや悪意のあるプログラムを通じてのこのデータへのアクセスを許せば、有価なデータの不法な複製が市中に出回る原因となる。  
しかし、従来技術では、システムメモリ１２の有効な保護手段が無い。したがって、上記(3)の処理に際し平文コンテンツを保護するためには、システムメモリ１２を介することなく、データを機密情報処理モジュール１５から直接再生用モジュール１３，１４に送るためのデータバッファ及びローカルバスというようなデータパスを準備する必要があった。
【００１５】
或いは、機密情報処理モジュール１５内で保護を解除された平文コンテンツをその保護に用いられていたものとは別のアルゴリズムによって再度暗号化した後にシステムメモリ１２へ出力する必要があった。  
前者においては、機密情報処理モジュール１５の基本機能には変更が無いのに、アプリケーションに依存して再生用モジュール１３，１４等の他のモジュールとの接続に変更が生じ、機密情報処理モジュール１５のファームウェアの変更も発生することから、半導体システムのスケーラビリティ(規模)やデザインの再利用性が乏しくなるといった問題があった。
【００１６】
また、後者においては、システムメモリ１２に取り込まれた暗号化したデータを再生処理する際に、平文コンテンツの再生処理を担うモジュールが更に暗号の復号処理を行う必要が生じる。このことはシステムの回路規模増大、システムの消費電力増大を意味する。更に、保護を解かれた平文コンテンツの再暗号・復号処理の存在がシステムの処理性能低下の要因となる。
【００１７】
また、上記(4)のような処理を導入するに当たり、システムメモリ１２上で一切の処理が行えない場合には、機密情報処理モジュール１５に、保護を解除する基本機能だけでなく、複数フレームの平文コンテンツの管理や表示といった応用機能までの全てを導入する必要がある。このとき、機密情報処理モジュール１５とメインＣＰＵ１１間の制御および通信手順がアプリケーションに大きく依存することになり、メインＣＰＵ１１で動作するアプリケーションやドライバおよび機密情報処理モジュール１５で動作するファームウェアの再利用性が大きく低下することになる。もしくは、画像処理側にローカルメモリを導入し、メインＣＰＵ１１とは分離した画像専用のＣＰＵでローカルメモリ上のデータを上記(4)に従って処理することになり、これはコストを増大させる結果となる。
【００１８】
また、他の従来技術に、メインＣＰＵ１１自体にメモリを内蔵させ、このＣＰＵの２つの動作モードである通常モードとセキュアモードのうち、セキュアモードでのみ内蔵メモリのアクセスを許可することで、メモリ上のデータの保護を行うシステムもあるが、ＣＰＵの高度なアーキテクチャを利用することでコスト増となりメモリ容量にも制約がある上、専用のソフトウェアサービスを利用する必要もある。
【００１９】
本発明は、以上述べた問題点を解決するために、システムメモリに書き込むデータの保護手段を提供することを目的とするものである。システムメモリ上のデータの保護手段が存在すれば、システムメモリを平文コンテンツの一時保存領域として汎用のメモリを利用できるほか、半導体システムの用途に合わせて最適なメモリサイズを選択できるため、コスト面でも有利である。また、機密情報処理モジュールには、メインＣＰＵからのシステムメモリ上の保護解除動作、非保護の平文コンテンツの処理、システムメモリとのデータ通信に関わる動作など単機能的な各要素の処理を導入すればよく、保守性が向上する。このことから、アプリケーションの多様性に関わらず、統一的な仕組みで平文コンテンツの保護が出来ることになり、秘匿データの保護機構全体のスケーラビリティを向上することが出来る。
【００２０】
［第１の実施形態］
図１は本発明の第１の実施形態の半導体システムのブロック図を示している。  
図１に示す半導体システム１０Ａは、メインＣＰＵ１１、システムメモリ１２、ビデオモジュール１３、オーディオモジュール１４、機密情報処理モジュール１５Ａ、乱数発生装置１６-1、乱数バッファ１６-2、ＸＯＲ回路１７を備えている。  
機密情報処理部である機密情報処理モジュール１５Ａは、機密情報用ＣＰＵ１５-1と機密情報用内部メモリ１５-2とＤＭＡコントローラ(以下、ＤＭＡＣと略記)１５-3とを備え、外部より保護された情報をシステムメモリ１２を経由して入力し、保護の解除及びデータの保持を行うことが可能である。
【００２１】
ＤＭＡＣ１５-3は、後述するように半導体システム１０Ａを構成するシステムメモリ１２と各モジュール１３及び１４との間のデータ転送、および機密情報処理モジュール１５Ａの機密情報用内部メモリ１５-2とシステムメモリ１２との間のデータ転送を行うために設けられており、通常モードと乱数モードを有する。  
乱数発生部である乱数発生装置１６-1は、乱数を発生する。この乱数は、規則性を有しない真性乱数である。  
バッファ部である乱数バッファ１６-2は、乱数発生装置１６-1で発生した乱数を保存する。
【００２２】
排他的論理和部であるＸＯＲ回路１７は、乱数バッファ１６-2からの乱数と保護するべきデータとの排他的論理和(ＸＯＲ)の計算により、保護するべきデータの乱数による暗号化(スクランブル化)及び復元(スクランブル解除)を行う。  
主メモリ部としてのシステムメモリ１２は、メインＣＰＵ１１が直接アクセスすることのできる記憶装置であって、外部からシステムメモリ１２に取り込まれた保護されたデータは一旦機密情報処理モジュール１５Ａで保護が解除され、その後にデータを再生する場合にはシステムメモリ１２を経由して再生部側のモジュール１３，１４にデータが流れていくフローとなっている。システムメモリ１２にデータを書き戻す際には、本実施形態では、システムメモリ１２にデータを転送する前にＸＯＲ回路１７で乱数とＸＯＲ演算を行って暗号化(保護)し、その保護状態でデータがシステムメモリ１２に送られて書き込まれる。
【００２３】
制御部としてのメインＣＰＵ１１は、システムメモリ１２に対するデータの書き込み及び読み出しの制御、各機能モジュール１５Ａ，１３及び１４などへのデータの転送やフローの制御、ＤＭＡＣ１５-3に対する通常モードと乱数モードの指示などの制御を行うことが可能である。ＤＭＡＣ１５-3の乱数モードが起動されたときは、例えば、システムメモリ１２に記憶した保護されたデータを再びＸＯＲ回路１７に戻すことによって、乱数バッファ１６-2に記憶してある暗号化時の乱数とのＸＯＲ演算に基づく復元(保護解除)されたデータを、再生部であるビデオモジュール１３及びオーディオモジュール１４に供給するように制御する。なお、乱数バッファ１６-2の乱数バッファ領域は、メインＣＰＵ１１からのアクセスが禁止されており、メインＣＰＵ１１からは暗号化(スクランブル化)や復元(スクランブル解除)の元になる乱数を読み込むことはできない。
【００２４】
再生部であるビデオモジュール１３及びオーディオモジュール１４は、バス１９を介して保護解除されたデータを入力し、画像及び音声のアナログデータとして再生してディスプレイデバイスにて画像及び音声として出力する。  
図１に示す半導体システム１０Ａにおいて、システムメモリ１２に置かれる保護(暗号化)されたビデオデータが、機密情報用ＣＰＵ１５-1と機密情報用内部メモリ１５-2から構成される機密情報処理モジュール１５ＡとＸＯＲ回路１７で行われる処理を経て保護が解除された後、ビデオモジュール１３においてさらに再生のための再生処理がなされる。
【００２５】
ＤＭＡＣ１５-3は、半導体システム１０Ａを構成するシステムメモリ１２と各モジュール１３及び１４との間のデータ転送、および機密情報処理モジュール１５Ａの機密情報用内部メモリ１５-2とシステムメモリ１２との間のデータ転送を行うために装備されている。このＤＭＡＣ１５-3は、メモリデータ転送を行う通常モードと、転送対象データに加えて乱数バッファ１６-2からも乱数値を読み込み、それらデータの排他的論理和(ＸＯＲ)をとった結果を出力する乱数モードとの、２つの動作モードを有する。
【００２６】
図２はこの半導体システム１０Ａにおけるデータのフローを示している。  
再生されるべきコンテンツデータは外部から保護がかけられた状態でシステムメモリ１２に読み込まれた後(ステップＳ1)、ＤＭＡＣ１５-3の通常モードが起動され (ステップＳ2)、この通常モードにて機密情報用内部メモリ１５-2に取り込まれる(ステップＳ3)。次に機密情報用ＣＰＵ１５-1は、機密情報用内部メモリ１５-2に置かれた保護された命令やデータを用いて上記の保護がかけられたコンテンツデータを復号処理し、保護が解除された平文コンテンツを得る(ステップＳ4)。この処理結果つまり平文コンテンツを結果１とする。
【００２７】
その後、この結果１をＤＭＡＣ１５-3の乱数モードで暗号化してシステムメモリ１２に出力する(ステップＳ5〜Ｓ9)。このシステムメモリ１２への出力は、乱数発生装置１６-1から出力される乱数と上記の結果１の排他的論理和をＸＯＲ回路１７で計算した結果であり、これを結果２と呼ぶことにする。
【００２８】
上記のステップＳ5〜Ｓ9の動作を説明する。ステップＳ4の保護解除処理後に、乱数は、ＤＭＡＣ１５-3の乱数モードが起動される(ステップＳ5)。乱数は、ＤＭＡＣ１５-3を乱数モードでかつシステムメモリ１２にデータを転送する方向で起動するとき、転送対象の保護されるべき平文コンテンツのデータサイズに合わせて生成され(ステップＳ6)、この乱数はアドレス情報とともに乱数バッファ１６-2内に保存される(ステップＳ7)。そして、この乱数は平文化された結果１とＸＯＲ回路１７でＸＯＲ計算され、結果２として出力され(ステップＳ8)、システムメモリ１２へ転送されて保存される(ステップＳ9)。
【００２９】
システムメモリ１２に保存される結果２は、乱数によってスクランブル化されており、メインＣＰＵ１１はこのスクランブル化されたデータを直接利用することが出来ない。すなわち、システムメモリ１２における平文コンテンツの保護(スクランブル化)が達成されていることになる。
【００３０】
結果２をビデオモジュール１３やオーディオモジュール１４で利用するためには、結果２をシステムメモリ１２から移動させる必要があるため、再びＤＭＡＣ１５-3の乱数モードが起動され(ステップＳ10)、この乱数モードを利用して結果２から結果１を得る。
【００３１】
つまり、結果２をＸＯＲ回路１７に入力し、結果１から結果２を得る際に使用した乱数バッファ１６-2内の乱数値と再び排他的論理和をとる(ステップＳ11)。この結果、スクランブル化されていた結果２を、再び、機密情報用内部メモリ１５-2に出力されていた平文コンテンツとして、すなわち結果１に復元した上でビデオモジュール１３に転送する(ステップＳ12)。最後に、ビデオモジュール１３においてビデオ再生に関わる所定の再生処理が行われた後(ステップＳ13)、ビデオモジュール１３に接続されている図示しないディスプレイデバイスに出力されて再生される(ステップＳ14)。
【００３２】
この乱数バッファ１６-2の管理方法を図３および図４を用いて詳細に述べる。乱数バッファ１６-2は、図３に示すように、各種の平文コンテンツと関連をもつ機能モジュールごとの領域を準備して管理される。図３では、機能１向け領域、機能２向け領域、……機能Ｎ向け領域のＮ個のバッファ領域を用意している。各バッファ領域のサイズは、機能モジュールの要求に合わせて事前に決定することができ、各機能モジュールに対応する一回のデータの保護および解除処理の最大サイズとなる。
【００３３】
これまで述べてきたように、各機能モジュールでデータが処理されるまでには、[1]機密情報用内部メモリ１５-2からシステムメモリ１２へ、[2]システムメモリ１２から機能モジュールへ、という２回の乱数モードでのＤＭＡ転送が行われる。[1]および[2]はＤＭＡ起動時に区別して実行することができる。機能Ｎに関するデータの[1]の転送設定の際のＤＭＡＣ１５-3への設定項目として、システムメモリ１２上の転送元先頭アドレスaddrN、転送サイズおよび機能番号Ｎを指定する。この時、処理に必要なサイズの乱数が乱数バッファ１６-2上の所定のアドレスに準備される。なお、先頭アドレスはスタートアドレスとも呼ばれる。
【００３４】
排他的論理和を計算するために生成された乱数が格納されている乱数バッファ１６-2上のアドレスは、機能ごとに決定される。説明のため図３では、機能Ｎに対応する乱数バッファ１６-2の先頭アドレスをrng_addrNで示している。rng_addrN はあらかじめ決定されている。乱数バッファ１６-2とシステムメモリ１２には、同じ機能１〜Ｎに対応する領域があってそれぞれにアドレスが付けられている。従って、乱数バッファ１６-2とシステムメモリ１２とで機能毎に先頭のアドレスだけを決めてやればそれに続くアドレスは当然互いに対応することになる。すなわち、機能１については、システムメモリ１２の先頭アドレスはaddr1、乱数バッファ１６-2の先頭アドレスはrng_addr1であり、機能２については、システムメモリ１２の先頭アドレスはaddr2、乱数バッファ１６-2の先頭アドレスはrng_addr2である。機能３以降も同様である。機能Nに関しては、システムメモリ１２上の先頭アドレスは addrNであり、乱数バッファ１６-2の先頭アドレスはrng_addrNである。
【００３５】
図３において、addr_transを各機能においてシステムメモリ１２上の実際に用いるアドレスとすると、例えば機能１について乱数バッファ上の先頭アドレスはrng_addr1、システムメモリ上の先頭アドレスはaddr1であるから、システムメモリ上の実際のアドレスに対応した乱数バッファ上の実際のアドレスは、(addr_trans - addr1) + rng_addr1となる。
【００３６】
図４は乱数バッファ１６-2の管理テーブルであり、乱数バッファの各機能向け領域(機能1，機能2，…機能N)に対応する、システムメモリ１２上の各機能毎の先頭アドレスを示している。  
ＤＭＡＣ１５-3が参照する前記管理テーブルは、乱数バッファ領域もしくはハードウェアレジスタとして準備され、上記[1]のデータ転送時に、addrNとNとが関連付けられて保存される。[2]の転送を行う時には、機能番号Ｎとシステムメモリ１２上のスクランブル化されたデータの転送開始アドレスaddr_transを指定する。addr_transは、[1]の処理対象データのスタートアドレスaddrNと一致していてもよくそうでなくとも良い。addrNとaddr_transにオフセットがある場合、(addr_trans - addrN) + rng_addrNを計算することで、対応するシステムメモリ１２上のアドレスのデータを処理する乱数を求めることが出来る。ここに示す転送アドレスと関連付けた乱数バッファ１６-2のアドレスの関係の管理は、ここではＤＭＡＣ１５-3の機能として実装される。この結果、スクランブル化されたデータのうち、指定する任意の領域の保護を解除して機能モジュールに転送することが可能になっている。また、[2]の転送先は、平文コンテンツを利用するモジュールに限定することで、セキュリティが向上する。
【００３７】
この[2]の転送を終えた後は、乱数バッファ１６-2の乱数は必要が無くなり、同じ機能モジュールで利用する他のデータを、[1]から繰り返した操作で再び取り扱うことが出来る。ここでは、乱数の管理を機能番号ごとに行ったが、システムの要求に合わせて機能あたりのバッファ数を複数にしたり、単純にバッファ番号として管理することも可能である。さらに、本実施形態の応用では、図４に示した管理テーブルでさらにrng_addrNも管理することで、機能ごとに任意のサイズを持つ乱数バッファ１６-2のアドレスを設定する方法も実現することが出来る。
【００３８】
第１の実施形態によれば、秘密に保持される乱数との排他的論理和の計算によって半導体システム内の機密データを保護することが出来る。これは、機能モジュール間のデータ転送用バッファ等となりうるシステムメモリの内容をメインＣＰＵのアクセスから保護する手段として特に重要である。この際、現代暗号技術等のアルゴリズムを処理する複雑な計算や、暗号アルゴリズムに基づくブロックサイズ(処理単位)の考慮を行わず、データの保護処理を簡素化することが出来る。
【００３９】
また、排他的論理和の計算をＤＭＡ転送と同時に行うことで、バスアクセスを減少させ、排他的論理和計算のサイズや乱数バッファと処理済みデータとの関連づけを一括して取り扱うことが出来る。  
さらに、乱数バッファによる乱数の発生が、ＤＭＡＣに設定される転送対象のアドレスやサイズ、あるいは転送先機能種別と連動し、自動的に行われ、必要なサイズの乱数を自動的に発生させることができ、手順の簡素化を実現できる。
【００４０】
［第２の実施形態］
図５は本発明の第２の実施形態の半導体システムのブロック図を示している。第１の実施形態と同一機能を有する部分には同一符号を付して説明する。  
図５に示す半導体システム１０Ｂは、メインＣＰＵ１１と、システムメモリ１２と、ビデオモジュール１３と、オーディオモジュール１４と、機密情報用ＣＰＵ１５-1と機密情報用内部メモリ１５-2とＤＭＡコントローラ(ＤＭＡＣ)１５-3とを備えた機密情報処理モジュール１５Ａと、乱数発生装置１６-1と、乱数バッファ１６-2と、ＸＯＲ回路１７とを具備している。見掛け上の構成は、図１の第１の実施形態と同様である。
【００４１】
第２の実施形態の半導体システム１０Ｂが、第１の実施形態の半導体システム１０Ａと異なる点は、機密情報用内部メモリ１５-2からシステムメモリ１２へデータを転送する際に、システムメモリ１２に書き戻すデータを全てスクランブル化するのではなくその一部のデータのみを平文としてシステムメモリ１２上に書き込み、その一部のデータをメインＣＰＵ１１で判読(解析)可能とするものである。
【００４２】
このような非スクランブル化の応用例として、例えば、スクランブル化された平文コンテンツの内容の一部に、アプリケーションが解析を行うためのヘッダ等が含まれている場合を想定する。秘密情報ではないこのヘッダ等のみ、スクランブル化を除外して、メインＣＰＵ１１で判読できるように処理を行うための仕組みである。  
１つの方法は、機密情報用ＣＰＵ１５-1などから乱数発生装置１６-1に何らかの情報を与えてスクランブル化を除外する部分に対して乱数の代わりに０を生成させて乱数バッファ１６-2に保存することにより、非スクランブル化を実現する。或いは、乱数発生装置１６-1からは乱数を発生させて乱数バッファ１６-2に格納した後に、機密情報用ＣＰＵ１５-1などからスクランブル化を除外する部分に対して０を上書きする制御をすることにより、非スクランブル化を実現する。
【００４３】
この第２の実施形態の動作を説明する。  
第１の実施形態では機密情報用内部メモリ１５-2に置かれる保護された命令での復号処理された処理結果(平文化コンテンツ)を結果１と呼んだ。この第２の実施形態における半導体システム１０Ｂでは、この平文化処理した結果１を、ＤＭＡＣ１５-3の乱数モードでスクランブル化した結果２としてシステムメモリ１２に出力する前に、図６に示すような排他的論理和を取る対象のうち、乱数バッファ１６-2の処理対象固有な領域(例えば機能１向け領域)に合致させるための任意のパターンを、０に書き換える機能を持つ。乱数バッファ１６-2の値が０であるとき、排他的論理和の演算結果は演算を行わない場合と同一であるため、０に書き換えた領域のスクランブル化を除外することが出来る。ここで、０に置き換える乱数バッファ１６-2内の領域は、処理対象のコンテンツのデータ構造に基づいて決定される。例えば、固定長 D byteのデータから構成されるコンテンツであれば、各データのヘッダーサイズ H byteと乱数バッファ先頭アドレス rng_addrN を基にi番目の(i≧0)パケットに関して０に置き換える領域はアドレス rng_addrN＋ D×i を先頭とするH byteである。
【００４４】
この０に置き換える領域の指定方法については、ＤＭＡＣ１５-3にパターン（例えば、上記各データサイズDとヘッダのサイズH）を設定して乱数バッファ１６-2への乱数発生後にＤＭＡＣ１５-3に乱数バッファ１６-2の値を上書きするか、或いは、ライト専用とした乱数バッファ１６-2にあらかじめ生成された乱数を、機密情報用ＣＰＵ１５-1によって０に上書きする方法で実現される。或いは、乱数発生装置１６-1にパターンの情報を入力し、乱数ではなく0を発生させる方法も実現できる。
【００４５】
以上のように毎回乱数バッファ１６-2を０に書き換えるアドレスとサイズを指定することは煩雑であるため、機密処理モジュール１５Ａが処理対象のコンテンツのデータ構造に基づいてスクランブル化から除外する領域とサイズを規定して番号付けしておくことで、指定内容を簡素化することもできる。この時は、データフォーマットに応じた前述の番号のみを指定すればよい。
【００４６】
これらの処理の結果、システムメモリ１２上のスクランブル化されたデータは、アプリケーションとしてメインＣＰＵ１１が解析に必要なヘッダ等は平文で、残りは乱数による暗号化(スクランブル化)で保護されたデータとなる。  
第２の実施形態によれば、システムメモリ１２に書き戻される機密処理済みの保護されたデータの一部を、平文でメインＣＰＵが利用し、データ属性の解析や利用を可能にする効果を生む。例えば、乱数の一部を０で上書きすることで、一括して排他的論理和の計算処理を行うデータのうち、一部のデータのみを平文としてシステムメモリ１２上で取り出し、内容を解析することが出来る。
【００４７】
［第３の実施形態］
図７は本発明の第３の実施形態の半導体システムのブロック図を示している。第１の実施形態と同一機能を有する部分には同一符号を付して説明する。  
図７に示す半導体システム１０Ｃの構成は、メインＣＰＵ１１と、システムメモリ１２と、ビデオモジュール１３と、オーディオモジュール１４と、機密情報用ＣＰＵ１５-1と機密情報用内部メモリ１５-2とＤＭＡコントローラ(ＤＭＡＣ)１５-3とを備えた機密情報処理モジュール１５Ａと、乱数発生装置１６-1aと、バッファ部としてのシードバッファ１６-2aと、ＸＯＲ回路１７とを具備している。
【００４８】
これまでに述べた実施形態では、複数のストリームデータの並行処理などの際には、平文コンテンツのサイズの増大とともに必要な乱数バッファの領域が増大することが予想される。第１及び第２の実施形態では、乱数は真性乱数の場合であり、乱数バッファに全ての乱数を保存しているが、それに応じて多くのバッファ容量が必要となる問題がある。
【００４９】
第３の実施形態の半導体システム１０Ｃが、第１の実施形態の半導体システム１０Ａと異なる点は、発生した乱数そのものを乱数バッファ１６-2に保存するのではなく、乱数のシードを保存することによって、必要な乱数バッファのサイズを抑制するものである。
【００５０】
そこで、この第３の実施形態で使用する乱数発生装置１６-1aは、乱数の初期値としてシードをとるタイプのものとする。この乱数発生装置１６-1aは、与えられたシードを種とした乱数発生のラウンド(一巡)をすすめる。言い換えると、同一のシードから乱数発生のラウンドを行うと、発生する全ての乱数を再現することが出来る。つまり、同一のシードを与えると、同一の乱数を再現することができる。
【００５１】
本実施形態では、機密情報処理モジュール１５Ａからの出力を行う際、機密情報用ＣＰＵ１５-1は乱数のシードを乱数発生装置１６-1a以外からの読み込みが禁止されたシードバッファ１６-2aに格納する。なお、シードバッファ１６-2aのバッファ領域は、メインＣＰＵ１１からのアクセスが禁止されており、メインＣＰＵ１１からは暗号化(スクランブル化)や復元(スクランブル解除)の元になるシード値を読み込むことはできない。
【００５２】
ここで、シードバッファ１６-2aにおけるシード値は、データが最終的に使われる機能モジュールの機能番号Ｎごとに図８に示すようなシードバッファ１６-2aに保管されるテーブルで管理される。機能1〜Nの各機能ごとにシードバッファ１６-2aのアドレスseed_addr1〜seed_addrNが対応している。即ち、機能番号とシード番号(シードアドレス)が対応している。シードバッファ１６-2aを用いる乱数発生装置１６-1aでは、同じシードならば生成される乱数値も同じになる。どの機能番号(＝シードアドレス)のシードを使ってそのシードの何番目の乱数値なのかが確定できれば、スクランブルを掛けたり外したりする際の乱数値も確定できる。そのようなシードアドレス及びその何番目かを示す値を、機密情報用ＣＰＵ１５-1や外部の制御部などから与えてやることができる。
【００５３】
ＤＭＡＣ１５-3の乱数モードによるデータ転送を行う際、前述の機能番号が同時に指定されることで、機能別に用意したシードを利用した1ラウンド以上の乱数生成が転送データサイズに対応して行われ、次々と保護すべきデータとの排他的論理和の計算を行う。計算結果は、スクランブル化もしくは復号化の結果として出力される。この乱数発生装置１６-1aは、同一シードの再入力により同じ乱数値を再び発生することが出来ることから、ＤＭＡＣ１５-3の乱数モードを行う度に乱数の発生を行うことによって乱数値そのものを保存する必要が無くなり、バッファ容量を削減することが出来る。ここで、スクランブル化をするシステムメモリ１２のアドレスとシードバッファ１６-2aの機能番号の対応を図４に示したようなテーブルで管理することは、第１の実施形態と同様である。このテーブルには、システムメモリ１２上のスクランブル化の先頭アドレスがエントリされるが、先頭からオフセットをもつアドレスからＤＭＡ転送を開始する場合には、オフセット分のラウンド数の乱数発生プロセスを行い、処理対象外となる乱数の取得をスキップしたあと、必要な乱数を得た上で排他的論理和の計算を行う。
【００５４】
さらに、第３の実施形態では、第２の実施形態のように乱数バッファがないので、図６のようにバッファデータを０に設定できない。従って、スクランブル化を除外したい場合には、乱数そのものを０にしなくてはならない。そのためには、スクランブルを解除したいところの一部の乱数だけを保存または再発生し、スクランブル解除の要求があればその保存しておいた乱数を用いてデータの一部だけを復号する。
【００５５】
第２の実施形態に述べたスクランブル対象の制御を導入するために、ＤＭＡ起動時に指定する平文コンテンツのフォーマットに合わせて乱数発生装置１６-1aの出力を０にする制御を行う。ただし、フォーマットが既知であれば、スクランブル化除外の必要な例えばヘッダ部分に利用する乱数値のみを、機密情報用内部メモリ１５-2やシードバッファ１６-2a、あるいは機密情報用ＣＰＵ１５-1のみが読み出し可能である乱数バッファ等に保存しておき、機密情報処理モジュール１５ＡがメインＣＰＵ１１からの要求に基づき、スクランブル化されたシステムメモリ１２の情報の一部を復元するサービスを行う方法をとることもできる。
【００５６】
第３の実施形態によれば、複数のストリームデータの並行処理などの際に、平文コンテンツのサイズの増大とともに必要な乱数バッファの領域が増大することがなく、乱数バッファを少ない容量のシードバッファで置き換えることができる。
【００５７】
［第４の実施形態］
図９は本発明の第４の実施形態の半導体システムのブロック図を示している。第１の実施形態と同一機能を有する部分には同一符号を付して説明する。  
図９に示す半導体システム１０Ｄは、メインＣＰＵ１１と、システムメモリ１２と、ビデオモジュール１３と、オーディオモジュール１４と、機密情報用ＣＰＵ１５-1と機密情報用内部メモリ１５-2とＤＭＡコントローラ(ＤＭＡＣ)１５-3とを備えた機密情報処理モジュール１５Ａと、乱数発生装置１６-1と、乱数バッファ１６-2と、ＸＯＲ回路１７と、乱数管理ＣＰＵ１８とを具備している。
【００５８】
図９に示す第４の実施形態は、乱数発生装置１６-1の乱数発生の制御及び乱数バッファ１６-2の管理を行うための専用の乱数管理ＣＰＵ１８を設けた例を示している。乱数管理ＣＰＵ１８のプログラム及びデータは乱数バッファ１６-2に存在し、乱数管理ＣＰＵ１８のみがアクセス可能である。
【００５９】
機密情報処理モジュール１５Ａを利用した平文コンテンツの取得後、メインＣＰＵ１１もしくは機密情報用ＣＰＵ１５-1は、システムメモリ１２のスクランブル化に関する乱数管理ＣＰＵ１８への初期化を行う。この初期化により乱数管理ＣＰＵ１８は、乱数あるいはシード値管理に必要な領域を乱数バッファ１６-2上に確保する。また、この要求には必要に応じ同時にスクランブル化から除外する位置とサイズ情報またはこれらを含むフォーマット情報が指定される。これらの管理情報は、乱数発生識別情報として乱数管理ＣＰＵ１８に管理される。この乱数発生識別情報は、メインＣＰＵ１１もしくは機密情報用ＣＰＵ１５-1からの初期化要求に対する応答として、直接もしくは機密情報用ＣＰＵ１５-1を経てメインＣＰＵ１１に返される。
【００６０】
通常動作時、スクランブル化の要求側は、この識別情報とともに乱数での平文コンテンツのシステムメモリ１２への格納のためのスクランブル化を起動する。起動後、乱数管理ＣＰＵ１８は識別情報を用いて乱数バッファ１６-2に乱数を発生する。なお、乱数発生は、乱数管理ＣＰＵ１８が乱数発生装置１６-1を用いて行うが、乱数管理ＣＰＵ１８がソフトウェアのアルゴリズムでの乱数生成を行っても良い。この時、本実施形態に乱数発生装置１６-1は不要となる。
【００６１】
ここで、スクランブルから除外する領域の要求を持つ識別情報の指定があった場合には、排他的論理和を計算する前に乱数管理ＣＰＵ１８により乱数バッファ１６-2の一部の内容を０とする。シードを使うタイプの場合も、同様に除外領域に対応するラウンドで発生した乱数を０で上書きする。発生した乱数と平文コンテンツの排他的論理和は、乱数管理ＣＰＵ１８によって設定に従ったＤＭＡＣ１５-3の付加機能もしくは乱数管理ＣＰＵ１８によって計算される。
【００６２】
また、スクランブル化されたシステムメモリ１２からのデータ転送及び復元についても、識別情報による乱数情報の決定と計算が同様に行われる。ただし、フォーマットに依存する乱数値の０での上書きを再度行うことはない。  
さらに、乱数発生機能を乱数管理ＣＰＵ１８によるソフトウェア乱数発生で実現し、ある領域の乱数値を０として発生させる機能をソフトウェアアルゴリズムとして実装すれば、フォーマットの指定に関する乱数発生装置１６-1もしくはＤＭＡＣ１５-3の回路の実装を単純化できるようになる。
【００６３】
第４の実施形態によれば、乱数管理用のＣＰＵを導入することで、保存された乱数と処理データの高度な関連付けや処理が可能になる。すなわち、平文コンテンツを利用するモジュールと、データをスクランブル化するための乱数の関係を動的なものも含めて自由に導入することで、メインＣＰＵ側と連携して複雑な処理を行ったり、乱数バッファ領域の節約を可能にする制御を行うことが出来る。また、乱数発生もソフトウェア的に前述の乱数管理用のＣＰＵで行うことで、乱数発生装置を省略することもできる。
【００６４】
以上述べた本発明では、システムメモリ上の平文コンテンツの保護を行うために、システムメモリに書き込むデータの保護を行う半導体システムを提供する。同半導体システムは乱数発生装置を実装しており、同乱数発生装置専用の乱数バッファ領域に同乱数発生装置から出力する乱数もしくは乱数を発生するためのシード値を保存する。この乱数バッファ領域は、半導体システムを構成するメインＣＰＵからのアクセスが禁止される。本発明では、システムメモリ上に配置される秘匿情報保護には、同乱数バッファ領域に保存された乱数もしくは同乱数バッファ領域に保存されたシードを用いて発生する乱数を利用する。機密情報処理モジュールによって保護を解かれた平文コンテンツはシステムメモリへ出力される前に乱数との排他的論理和をとってスクランブルされる。メインＣＰＵからは、スクランブルの元となる乱数もしくはシード値を読み込むことが出来ないため、システムメモリ上の平文コンテンツの保護が可能になる。システムメモリ上の保護(スクランブル化)されたデータの使用の際は、平文コンテンツの保護時に排他的論理和をとった乱数と、再び排他的論理和を計算することで元のデータに復元し、データ再生など必要な処理を行う。平文の使用を許可されたモジュールへのデータ転送時のみ乱数の利用を許可することで、上記の仕組みにより保護されたデータの安全性がさらに高まる。ここで、上に述べた排他的論理和の演算は、ＤＭＡコントローラ（図１におけるＤＭＡＣ）や乱数管理用のＣＰＵ(図９における乱数管理ＣＰＵ)によるデータの転送の付加機能として実装される。
【００６５】
平文コンテンツの保護に乱数を用いている利点として、暗号アルゴリズムを使用した場合よりも処理速度が速いことや、保護または保護解除のサイズに対して暗号のブロックサイズを考慮する必要が無いという利点がある。また、乱数を使用した場合は、一部の乱数が漏洩しても直ちにシステムメモリ全体の機密情報が危機に瀕することはなく、1つの鍵情報によって秘匿対象データ全ての保護を行う暗号アルゴリズムを使用する場合よりも、暗号学的な弱点を突いた攻撃に対して耐性を持つ。なお、通常の暗号アルゴリズムにおける暗号は、決まった規則に従ってデータを変換することによってスクランブルすることを指しているが、暗号化、復号には鍵を用いている。その鍵は、乱数を元にして作成されている。従って、秘匿性は鍵の秘匿性と管理に依存する。これに対して、本願発明における乱数による暗号は、乱数そのものを暗号化に用いている(特に、真性乱数を用いて保護すべきデータと排他的論理和を計算する)点で、暗号アルゴリズムと比べて簡単な演算により高い秘匿性が得られる利点がある。
【図面の簡単な説明】
【００６６】
【図１】本発明の第１の実施形態の半導体システムを示すブロック図。
【図２】図１の動作を説明するフローチャート。
【図３】図１の乱数バッファのアドレスを説明する図。
【図４】乱数バッファ管理テーブルを示す図。
【図５】本発明の第２の実施形態の半導体システムを示すブロック図。
【図６】図５の書き替え後の乱数バッファの状態を示す図。
【図７】本発明の第３の実施形態の半導体システムを示すブロック図。
【図８】図７のシードバッファ管理テーブルを示す図。
【図９】本発明の第４の実施形態の半導体システムを示すブロック図。
【図１０】従来技術の半導体システムの構成を示すブロック図。
【符号の説明】
【００６７】
１０Ａ，１０Ｂ，１０Ｃ，１０Ｄ…半導体システム  
１１…メインＣＰＵ(制御部)
１２…システムメモリ(主メモリ部)
１３…ビデオモジュール(再生部)
１４…オーディオモジュール(再生部)
１５Ａ…機密情報処理モジュール(機密情報処理部)
１５-3…ＤＭＡＣ(ＤＭＡコントローラ)
１６-1，１６-1a…乱数発生装置(乱数発生部)
１６-2…乱数バッファ(バッファ部)
１６-2a…シードバッファ(バッファ部)
１７…ＸＯＲ回路(排他的論理和部)
１８…乱数管理ＣＰＵ(乱数管理用制御部)
【図１】
2010113615.tif 000003
【図２】
2010113615.tif 000004
【図３】
2010113615.tif 000005
【図４】
2010113615.tif 000006
【図５】
2010113615.tif 000007
【図６】
2010113615.tif 000008
【図７】
2010113615.tif 000009
【図８】
2010113615.tif 000010
【図９】
2010113615.tif 000011
【図１０】
2010113615.tif 000012