(57)【要約】【課題】メモリ単体に対するデータ不正取得、改ざんを防止する。【解決手段】本発明の一態様に係るメモリセキュリティ装置１は、データ書き込み時に、書き込み先アドレスを暗号化して暗号化書き込み先アドレスを作成し、データ読み出し時に、読み出し先アドレスを暗号化して暗号化読み出し先アドレスを作成するアドレス暗号手段４と、書き込み先アドレスに対する書き込みデータを暗号化して暗号化書き込みデータを作成するデータ暗号化手段５と、暗号化書き込み先アドレスにしたがって、暗号化書き込みデータをメモリ９に書き込む書き込み手段６と、暗号化読み出し先アドレスにしたがって、メモリ９から、暗号化読み出しデータを読み出す読み出し手段７と、暗号化読み出しデータを復号化して読み出し先アドレスに対する読み出しデータを作成するデータ復号化手段８とを具備する。【選択図】      図１
2008299611.tif 000002
【特許請求の範囲】
【請求項１】
データ書き込み時に、書き込み先アドレスを暗号化して暗号化書き込み先アドレスを作成し、データ読み出し時に、読み出し先アドレスを暗号化して暗号化読み出し先アドレスを作成するアドレス暗号手段と、
書き込み先アドレスに対する書き込みデータを暗号化して暗号化書き込みデータを作成するデータ暗号化手段と、
前記暗号化書き込み先アドレスにしたがって、前記暗号化書き込みデータをメモリに書き込む書き込み手段と、
前記暗号化読み出し先アドレスにしたがって、前記メモリから、暗号化読み出しデータを読み出す読み出し手段と、
前記暗号化読み出しデータを復号化して前記読み出し先アドレスに対する読み出しデータを作成するデータ復号化手段と
を具備するメモリセキュリティ装置。
【請求項２】
請求項１記載のメモリセキュリティ装置において、
乱数発生手段と、
前記乱数発生手段によって発生された乱数を記憶する乱数記憶手段と
をさらに具備し、
前記アドレス暗号化手段は、データ書き込み時に、前記乱数記憶手段に記憶されている前記乱数に基づいて前記暗号化書き込み先アドレスを作成し、データ読み出し時に、前記乱数記憶手段に記憶されている前記乱数に基づいて前記暗号化読み出し先アドレスを作成し、
前記データ暗号化手段は、前記乱数記憶手段に記憶されている前記乱数に基づいて前記暗号化読み出しデータを作成し、
前記前記データ復号化手段は、前記乱数記憶手段に記憶されている前記乱数に基づいて前記読み出しデータを作成する
ことを特徴とするメモリセキュリティ装置。
【請求項３】
請求項２記載のメモリセキュリティ装置において、
前記アドレス暗号化手段は、データ書き込み時に、前記乱数記憶手段に記憶されている前記乱数と前記書き込み先アドレスとに対して排他的論理和の演算を実行して前記暗号化書き込み先アドレスを作成し、データ読み出し時に、前記乱数記憶手段に記憶されている前記乱数と前記読み出し先アドレスとに対して排他的論理和の演算を実行して前記暗号化読み出し先アドレスを作成し、
前記データ暗号化手段は、前記乱数記憶手段に記憶されている前記乱数と前記書き込みデータとに対して排他的論理和の演算を実行して、前記暗号化書き込みデータを作成し、
前記データ復号化手段は、前記乱数記憶手段に記憶されている前記乱数と前記暗号化読み出しデータとに対して排他的論理和の演算を実行して、前記読み出しデータを作成する
ことを特徴とするメモリセキュリティ装置。
【請求項４】
請求項２又は請求項３記載のメモリセキュリティ装置において、
前記乱数発生手段によって発生される乱数は、アドレス用乱数とデータ用乱数とを含み、
前記アドレス暗号化手段は、データ書き込み時に、前記アドレス用乱数に基づいて前記暗号化書き込み先アドレスを作成し、データ読み出し時に、前記アドレス用乱数に基づいて前記暗号化読み出し先アドレスを作成し、
前記データ暗号化手段は、前記データ用乱数に基づいて前記暗号化読み出しデータを作成し、
前記データ復号化手段は、前記データ用乱数に基づいて前記読み出しデータを作成する
ことを特徴とするメモリセキュリティ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリに記憶されたデータを保護するためのメモリセキュリティ装置に関する。
【背景技術】
【０００２】
特許文献１の秘密情報管理装置１００は、秘密情報を使用しない期間である秘密情報保管時には、乱数発生部１０２１が乱数を生成し、暗号化部１０２２が乱数を暗号化鍵として秘密情報を暗号化（すなわち、隠蔽）し、暗号化された秘密情報をメモリ１０１に記憶させ、送信部１０５が暗号化鍵を外部に送信して他の情報管理装置に保管させる。また、特許文献１の秘密情報管理装置１００は、秘密情報使用時には、受信部１０６が暗号化鍵を他の情報管理装置から受信し、暗号復号部１０４１が受信された暗号化鍵を暗号復号鍵として用い、メモリ１０１に記憶された暗号化された秘密情報を暗号復号（すなわち、回復）する。
【０００３】
特許文献２では、外部メモリ４に記憶させるデータに対して当該記憶させる記憶位置に応じた暗号化処理が行われる。これにより、例えば、外部メモリ４から暗号化データが他の記憶媒体にコピーされてもこの暗号化データが外部メモリ４のどの記憶位置に記憶されていたかを認識していなければ復号化することができない。
【０００４】
特許文献３のシステムは、記録媒体のシリアルナンバーおよびユーザ独自のデータを暗号化して記録媒体に記録し、使用時にはそれを読み出して復号化して、不正使用か否かを判断し、不正使用の場合には動作停止要求を可能にすることにより、不正使用を防止する。
【０００５】
一般的には、例えば、ある機器（例えばホスト）にチップ（例えばスレイブデバイス）が接続されており、さらにこのチップのメモリが外部チップである場合、通常の利用においては、チップ自体が機器からのアクセスを制限するような機能を持つことにより、メモリに記憶されているコード又はデータの不正取得や改ざんを防ぐ。
【特許文献１】特開２００６−１２９３４０号公報
【特許文献２】特開２００６−０２３９５７号公報
【特許文献３】特開２００５−３０１３３９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、省電力機能などにより外部のメモリに電源が入ったままで、チップの電源が落とされた場合や、リバースエンジニアを行う者が意図的にチップの電源を落とし、メモリにのみ給電を行うような状況を作った場合、このメモリの内容を読み出すことが可能となる場合がある。
【０００７】
本発明は、以上のような実情に鑑みてなされたもので、メモリ単体に対してなされるデータ不正取得、改ざんを防止するメモリセキュリティ装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題は、データ書き込み時に、書き込み先アドレスを暗号化して暗号化書き込み先アドレスを作成し、データ読み出し時に、読み出し先アドレスを暗号化して暗号化読み出し先アドレスを作成するアドレス暗号手段と、書き込み先アドレスに対する書き込みデータを暗号化して暗号化書き込みデータを作成するデータ暗号化手段と、暗号化書き込み先アドレスにしたがって、暗号化書き込みデータをメモリに書き込む書き込み手段と、暗号化読み出し先アドレスにしたがって、メモリから、暗号化読み出しデータを読み出す読み出し手段と、暗号化読み出しデータを復号化して読み出し先アドレスに対する読み出しデータを作成するデータ復号化手段とを具備するメモリセキュリティ装置、により解決される。
【発明の効果】
【０００９】
本発明により、メモリ単体に対してなされるデータ不正取得、改ざんを防止することができる。
【発明を実施するための最良の形態】
【００１０】
以下、図面を参照しながら本発明の実施の形態について説明する。なお、以下の各図において同様の機能を実現する部分については同一の符号を付して説明を省略する。
【００１１】
（第１の実施の形態）
本実施の形態においては、メモリに記憶されるデータの内容を変換し、さらに変換されたデータの記憶位置をシャッフルする機能を持つメモリセキュリティ装置について説明する。
【００１２】
図１は、本実施の形態に係るメモリセキュリティ装置の一例を示すブロック図である。
【００１３】
本実施の形態に係るメモリセキュリティ装置１は、乱数発生部２、乱数記憶部（レジスタ）３、アドレス暗号化部４、データ暗号化部５、書き込み部６、読み出し部７、データ復号化部８を具備する。
【００１４】
本実施の形態において、メモリ９とデバイス(例えば、メモリコントローラ、メモリインタフェースなど）１０とは別のチップであるとする。メモリセキュリティ装置１は、デバイス１０に備えられるとする。
【００１５】
メモリ９とデバイス１０との間は、バスＲＱ、バスＤＱ、シリアルコネクション１１により、接続されている。バスＲＱは、デバイス１０とメモリ９との間のリクエストの転送に用いられる。バスＤＱは、デバイス１０とメモリ９との間のデータの転送に用いられる。シリアルコネクション１１は、デバイス１０とメモリ９との間のテスト用データ、初期化用データ、デバッグ用データの転送に用いられる。
【００１６】
ホスト機器１２は、デバイス１０を用いて、メモリ９へのデータの書き込み及びメモリ９からのデータの読み出しを行う。
【００１７】
本実施の形態において、メモリセキュリティ装置１の乱数発生部２は、アドレス用乱数とデータ用乱数とを含む乱数を発生し、乱数を乱数記憶部３に記憶する。メモリセキュリティ装置１では、乱数発生部２によって発生され乱数記憶部３に記憶された乱数をメモリセキュリティ装置１の外部から読み出し不可能な構造が、採用されている。
【００１８】
アドレス暗号化部４は、メモリ９にデータ書き込みを行う場合に、書き込み先アドレスに対して、乱数記憶部３に記憶されているアドレス用乱数でＸＯＲをかけ、暗号化書き込み先アドレスを作成する。
【００１９】
また、アドレス暗号化部４は、メモリ９からのデータ読み出しを行う場合に、読み出し先アドレスに対して、乱数記憶部３に記憶されているアドレス用乱数でＸＯＲをかけ、暗号化読み出し先アドレスを作成する。
【００２０】
データ暗号化部５は、メモリ９にデータ書き込みを行う場合に、書き込みデータに対して、乱数記憶部３に記憶されているデータ用乱数でＸＯＲをかけ、暗号化書き込みデータを作成する。
【００２１】
書き込み部６は、メモリ９に対し、アドレス暗号化部４によって作成された暗号化書き込み先アドレスの示す領域に、データ暗号化部５によって作成された暗号化書き込みデータを書き込む。
【００２２】
読み出し部７は、メモリ９に対し、アドレス暗号化部４によって作成された暗号化読み出し先アドレスの示す領域から、暗号化読み出しデータを読み出す。
【００２３】
データ復号化部８は、読み出し部７によって読み出された暗号化読み出しデータに対して、乱数記憶部３に記憶されているデータ用乱数でＸＯＲをかけ、読み出しデータに対応する読み出しデータを作成する。
【００２４】
本実施の形態に係るメモリセキュリティ装置１においては、内蔵されている乱数発生部２により、起動するたびに、乱数が発生され、乱数が変更される。乱数はアドレス用乱数とデータ用乱数とを含んでおり、乱数記憶部３に記憶される。
【００２５】
以後、デバイス１０にリセットが入力されるまで、乱数記憶装置３に記憶されているアドレス用乱数とデータ用乱数とが用いられる。
【００２６】
アドレス用乱数はアドレスに対するシャッフルに使用され、データ用乱数はデータスクランブルに使用される。
【００２７】
乱数発生部２は、起動のたびに乱数（seed）を変更するため、リセット前と後とで同じ値にはならない。アドレス用乱数及びデータ用乱数は、外部からリードすることはできない。乱数発生部２ではない他の機器から、乱数記憶部３に、値を設定することもできない。
【００２８】
以下に、本実施の形態に係るメモリセキュリティ装置１によるデータ保護の概念について説明する。
【００２９】
図２に示すように、メモリ９に対して通常のアクセス制限を行う場合、デバイス１３は、ホスト機器１２からメモリ９へのアクセス制限を行い、保護したいコンテンツ（例えばファームウェア、各種プログラム、データなど）１４の記憶されているメモリ９に対して直接的なアクセスができないようにしている。一般的に、アクセス制限については、デバイス１３の内部からオン、オフすることができる。
【００３０】
しかしながら、メモリ９にアクセス制限などが働いている状態であっても、メモリ９自体が持つシリアルＩＯ機能などを用いることにより、メモリ９への直接の書き込みは可能である。
【００３１】
このような性質を利用して、例えば図３に示すように、バッファオーバーフロー、バッファオーバーラン等を利用して、不正書き込み機器１５を用いてアクセス制限を解除するコードを含むクラックコード１６を直接メモリ９に書き込み、デバイス１３の内部のアクセス制限を解除する（デバイス１３がクラックコード１６を実行する）という攻撃方法が可能となる。クラックコード１６がデバイス１３によって実行されると、ホスト機器１２は、アクセス制限されていたコンテンツ１４をアクセス可能となる。
【００３２】
このような攻撃に対する防御として、本実施の形態では、書き込みデータをシャッフルし、さらにメモリ９における書き込みデータの記憶位置もシャッフルし、シリアルＩＯ機能によりメモリ９に書き込まれたクラックコード１６がデバイス１０により実行されることを防止する仕組みを採用する。
【００３３】
図４は、本実施の形態に係るメモリセキュリティ装置１によりデータが保護される状態の一例を示すブロック図である。
【００３４】
この図４において、デバイス１０は、アドレス及びデータをシャッフルした状態でメモリ９への書き込みを行う。さらに、デバイス１０は、アドレス及びデータがシャッフルされた状態のメモリ９からデータを読み出し、正常な状態に変換する。
【００３５】
例えば、バッファオーバーフロー、バッファオーバーラン等を利用して、不正書き込み機器１５によってクラックコード１６がメモリ９に書き込まれたとする。
【００３６】
このような場合において、デバイス１０によってクラックコード１６が読み出されたとしても、この読み出されたクラックコード１６に対してデータ復号化部８が乱数を用いたＸＯＲ演算を実行するため、クラックコード１６として機能しなくなる。
【００３７】
したがって、保護すべきコンテンツ１４がクラックコード１６により不正に取得されることを防止できる。
【００３８】
また、メモリ９では、アドレス及びデータの暗号化によりコンテンツ１４の記憶位置と内容とがシャッフルされた状態となるため、メモリ９の記憶内容を読み出すことができたとしても、コンテンツ１４を保護することができる。
【００３９】
図５は、本実施の形態に係るメモリセキュリティ装置１によるアドレスに対するシャッフル処理の一例を示す図である。この図５では、書き込み先アドレスに対するシャッフル処理を示しているが、読み出し先アドレスに対するシャッフル処理についても同様である。
【００４０】
書き込みデータに対する書き込み先アドレスが発行されると、乱数発生部２は乱数を発生し、乱数記憶部３は乱数を記憶する。
【００４１】
本実施の形態では、発生した乱数３６bitのうちの特定の２１bitをアドレス用乱数とし、書き込み先アドレスのＸＯＲに使用する。書き込み先アドレスのうちｒｏｗ、ｂａｎｋ、ｃｏｌｕｍｎ等の領域を含む上位領域に対してアドレス用乱数によりＸＯＲをかけ、暗号化書き込み先アドレスを作成する。
【００４２】
メモリ９への書き込みは、書き込み先アドレスに代えて、暗号化書き込み先アドレスにしたがって実行される。
【００４３】
図６は、本実施の形態に係るメモリセキュリティ装置１による書き込みデータに対するシャッフル処理の一例を示す図である。
【００４４】
乱数発生部２は３２bitの乱数を発生し、この乱数がデータ用乱数として書き込みデータのＸＯＲに使用される。書き込みデータにＸＯＲをかける単位は３２ｂｉｔとする。すなわち、書き込みデータの３２ｂｉｔごとに、同じデータ用乱数を使用して、ＸＯＲ演算が行われる。
【００４５】
この図６では、書き込みデータに対するシャッフル処理を示しているが、読み出しデータを復号化する処理についても同様である。例えば、メモリセキュリティ装置１は、外部メモリチップから５１２bit単位で暗号化読み出しデータを取り出し、３２bitごとに暗号化読み出しデータをデータ用乱数でＸＯＲ演算し、スクランブルを解除した５１２bitの読み出しデータを求める。このように、暗号化読み出しデータ（３２bit×１６個）に対して、３２bit単位の同じデータ用乱数でＸＯＲをかける。
【００４６】
メモリセキュリティ装置１は、書き込み、読み出しのそれぞれの場合に、アドレス及びデータの双方にＸＯＲをかけるため、システム側で同じ値を得ることができる。
【００４７】
以上説明したように、本実施の形態においては、コンテンツ１４に含まれている命令列などがメモリ９に格納される位置は、メモリセキュリティ装置１の起動ごとに異なる位置となり、メモリ９の特定の位置がアタックされることを防止できる。さらに、メモリ９にクラックコード１６が書き込まれたとしても、デバイス１では、読み出されたデータに対してデータ復号化が行われるため、クラックコード１６がデバイス１０に実行されてアクセス制限が解除されることを防止することができる。
【００４８】
すなわち、本実施の形態においては、シリアルＩＯ機能を用いてメモリ９に書き込みがなされた場合であっても、その書き込み内容と書き込み位置とを意味のないものとすることができ、メモリ９の改変行為が困難となる。
【００４９】
なお、本実施の形態においては、乱数を発生させ、乱数を用いてＸＯＲ演算を行う暗号化手法及び復号化手法を採用しているが、他の暗号化手法及び復号化手法を用いてもよい。例えば、各種の可逆変換を用いることができる。また、書き込みデータの暗号化及び暗号化読み出しデータの復号化については不可逆変換を用いることもできる。データの暗号化とアドレスの暗号化とで異なる手法を用いてもよい。
【００５０】
（第２の実施の形態）
本実施の形態においては、上記第１の実施の形態に係るメモリセキュリティ装置１をマルチプロセッサに適用した場合について説明する。
【００５１】
図７は、本実施の形態に係るメモリセキュリティ装置１を備えたマルチプロセッサの一例を示すブロック図である。
【００５２】
マルチプロセッサ１７は、圧縮された映像データのデコード（伸張）に関しては固定的なフォーマットが多いためハードウェアで処理し、映像データのエンコードに関しては様々なデバイスに対応するフォーマットへの変換を可能とするためにプログラマブルなプロセッサエレメント（例えば、DSP：Digital Signal Processor）によりソフトウェアで柔軟に処理する。
【００５３】
マルチプロセッサ１７は、ハードウェアデコード部１８、ハードウェアデコード部１９、複数のプロセッサエレメント（SPE：Synergistic Processor Element）２０ａ〜２０ｄ、例えばPCI Expressなどの高速の汎用バスインタフェース（PCIe I/F）２１、メモリコントローラ２２、制御プロセッサ（SCP：System Control Processor）２３、データ転送部（DMAC：Direct Memory Access Controller）２４、を内部バス（Interconnect Network）２５で接続した構成を持つ。
【００５４】
汎用バスインタフェース２１は、外部装置２６とバス２７経由でデータのやり取りを行う。
【００５５】
メモリコントローラ（メモリインタフェース）２２は、ハードウェアデコード部１８，１９及び複数のプロセッサエレメント２０ａ〜２０ｄに利用されるメモリ２８と接続されている。
【００５６】
このメモリコントローラ２２は、上記第１の実施の形態のデバイス１０に相当し、メモリセキュリティ装置１を具備する。
【００５７】
メモリ２８は、マルチプロセッサ１７に受け付けられた圧縮映像データ２９ａ、圧縮映像データ２９ａがデコードされて得られた映像データ２９ｂ、映像データ２９ｂが編集・圧縮されて得られた圧縮映像データ２９ｃ、編集ソフトウェア２９ｄ、エンコードソフトウェア２９ｅを記憶する。このメモリ２８は、上記第１の実施の形態のメモリ９に相当する。
【００５８】
制御プロセッサ２３は、ハードウェアデコード部１８，１９、複数のプロセッサエレメント２０ａ〜２０ｄ、データ転送部２４などを制御するプロセッサである。
【００５９】
データ転送部２４は、汎用バスインタフェース２１とメモリコントローラ２２との間で、データ転送を行う。
【００６０】
ハードウェアデコード部１８は、ハードウェアにより構成されており、第１の形式により圧縮されたデータ（例えばmpeg2/mpeg1）のデコードを行う。
【００６１】
ハードウェアデコード部１９は、ハードウェアにより構成されており、第２の形式により圧縮されたデータ（例えばH.264/VC1）のデコードを行う。
【００６２】
複数のプロセッサエレメント２０ａ〜２０ｄは、制御プロセッサ２３による制御にしたがって、並列動作可能である。複数のプロセッサエレメント２０ａ〜２０ｄのうちの少なくとも一つは、制御プロセッサ２３にしたがってメモリ２８の編集ソフトウェア２９ｄを実行し、編集データを作成する。
【００６３】
また、複数のプロセッサエレメント２０ａ〜２０ｄのうちの少なくとも一つは、制御プロセッサ２３にしたがってメモリ２８のエンコードソフトウェア２９ｅを実行し、デコードされた映像データ２９ｂ又は編集データなどのような各種のデータをエンコードする。
【００６４】
なお、本実施の形態においては、４つのプロセッサエレメント２０ａ〜２０ｄがマルチプロセッサ１７に備えられている場合を例として説明しているが、マルチプロセッサ１７に備えられているプロセッサエレメントの数は２以上であれば自由に変更可能である。
【００６５】
すなわち、マルチプロセッサ１７において、デコードはハードウェアであるハードウェアデコード部１８又はハードウェアデコード部１９により実行され、エンコードはプロセッサエレメント２０ａ〜２０ｄのうちの少なくとも一つ上で動作するエンコードソフトウェア２９ｅにより実現される。
【００６６】
映像データの解像度やフォーマットの数は、例えば地上デジタル放送、ＢＳハイビジョン放送、ＨＤ−ＤＶＤ、Ｂｌｕｅ Ｒａｙ、などの規格で固定的に決まるため、本実施の形態においては、圧縮映像データ２９ａのデコードをハードウェアであるハードウェアデコード部１８又はハードウェアデコード部１９で固定的に処理する。一般的に、ある処理をハードウェアで構成した場合、チップ面積は小さくなる。
【００６７】
圧縮された映像データを再生する装置は、例えば携帯電話、ポータブルビデオプレイヤー、ＤＶＤレコーダ、ゲーム機、コンピュータシステムなどのように、多岐にわたる。このように、多岐にわたる圧縮映像データの再生装置については、解像度やフォーマットが統一的に定められておらず、各製品の製作会社が解像度及びフォーマットを自由に決定している場合が多い。したがって、本実施の形態に係るマルチプロセッサ１７において、映像データのエンコードは、圧縮映像データの再生装置に応じた形式で柔軟に行うために、エンコードソフトウェア２９ｅによりプロセッサエレメント２０ａ〜２０ｄで行う。
【００６８】
エンコードソフトウェア２９ｅはアップデートが可能であるため、マルチプロセッサ１７が出荷された後に、圧縮映像データの再生装置やエンコードの規格が変わったとしても対応可能である。
【００６９】
上記のような構成を持つマルチプロセッサ１７の処理を、第１段階から第４段階に分けて説明する。
【００７０】
第１段階では、制御プロセッサ２３は、データ転送部２４を制御する。データ転送部２４は、外部装置２６からバス２７経由で、汎用バスインタフェース２１によって受信された圧縮映像データ（圧縮されている映像ストリーム）２９ａを、内部バス２５経由で、メモリコントローラ２２に転送する。メモリコントローラ２２は、メモリセキュリティ装置１により、圧縮映像データ１３ａの内容とその記憶位置とをシャッフルした状態で、メモリ２８に記憶する。
【００７１】
第２段階では、制御プロセッサ７は、ハードウェアデコード部１８又はハードウェアデコード部１９を制御する。ハードウェアデコード部１８又はハードウェアデコード部１９は、メモリコントローラ２２及び内部バス２５を介して、メモリ２８に記憶されている圧縮映像データ２９ａを取得する。ここで、メモリコントローラ２２は、メモリ２８から圧縮映像データ２９ａを読み出す場合に、メモリセキュリティ装置１により、読み出し先アドレスを変換するとともに、読み出し対象であり暗号化されている圧縮映像データ２９ａを復号化する。
【００７２】
ハードウェアデコード部１８又はハードウェアデコード部１９は、圧縮映像データ２９ａをデコードし、デコードされた映像データ２９ｂを内部バス２５及びメモリコントローラ２２を介してメモリ２８に記憶する。ここで、メモリコントローラ２２は、メモリセキュリティ装置１により、デコードされた映像データ２９ｂの内容とその記憶位置とをシャッフルした状態で、メモリ２８に記憶する。
【００７３】
第３段階では、制御プロセッサ２３は、複数のプロセッサエレメント２０ａ〜２０ｄのうち、少なくとも一つのプロセッサエレメント（ここでは、プロセッサエレメント２０ａ〜２０ｄとする）を制御する。この少なくとも一つのプロセッサエレメント２０ａ〜２０ｄは、メモリコントローラ２２及び内部バス２５を介して、メモリ２８に記憶されている編集ソフトウェア２９ｄ及びメモリ２８に記憶されているエンコードソフトウェア２９ｅをアクセスするとともに、メモリ２８に記憶されているデコードされた映像データ２９ｂを取得する。ここで、メモリコントローラ２２は、メモリ２８から編集ソフトウェア２９ｄ、エンコードソフトウェア２９ｅ、デコードされた映像データ２９ｂを読み出す場合に、メモリセキュリティ装置１により、読み出し先アドレスを変換するとともに、読み出し対象であり暗号化されている編集ソフトウェア２９ｄ、エンコードソフトウェア２９ｅ、デコードされた映像データ２９ｂを復号化する。
【００７４】
そして、プロセッサエレメント２０ａ〜２０ｄは、編集ソフトウェア２９ｄに基づく動作によりデコードされた映像データ２９ｂを編集し、編集データをエンコードソフトウェア２９ｅに基づく動作によりエンコードし、このエンコードにより得られた圧縮映像データ２９ｃを内部バス２５及びメモリコントローラ２２を介してメモリ２８に記憶する。ここで、メモリコントローラ２２は、メモリセキュリティ装置１により、圧縮映像データ２９ｃの内容とその記憶位置とをシャッフルした状態で、メモリ２８に記憶する。なお、編集ソフトウェア２９ｄを実行するプロセッサエレメントと、エンコードソフトウェア２９ｅを実行するプロセッサエレメントとは、重複していてもよく、別であってもよい。
【００７５】
第４段階では、制御プロセッサ２３は、データ転送部２４を制御する。データ転送部２４は、メモリ２８に記憶されている圧縮映像データ２９ｃを、メモリコントローラ２２、内部バス２５経由で汎用バスインタフェース２１に転送する。汎用バスインタフェース２１は、圧縮映像データ２９ｃを、バス２７経由で、外部装置２６に送信する。ここで、メモリコントローラ２２は、メモリ２８から圧縮映像データ２９ｃを読み出す場合に、メモリセキュリティ装置１により、読み出し先アドレスを変換するとともに、読み出し対象であり暗号化されている圧縮映像データ２９ｃを復号化する。
【００７６】
図８は、本実施の形態に係るマルチプロセッサ１７の適用例を示すブロック図である。この図８においては、マルチプロセッサ１７をコンピュータシステム３０に備えた場合を例示している。
【００７７】
本実施の形態において、コンピュータシステム３０は、ＣＰＵ３１、メモリ３２、ＧＰＵ３３、メモリ／プロセッサ制御接続部３４、Ｉ／Ｏ制御接続部３５、マルチプロセッサ１７、メモリ２８を具備する。
【００７８】
コンピュータシステム３０は、ＵＳＢ３６ａ、オーディオ機器３６ｂ、ネットワーク３６ｃ、ＨＤＤ又はＤＶＤ３６ｄ、チューナ３６ｅから、データを取得し、また、ＵＳＢ３６ａ、オーディオ機器３６ｂ、ネットワーク３６ｃ、ＨＤＤ又はＤＶＤ３６ｄにデータを与える。
【００７９】
メモリ／プロセッサ制御接続部３４とメモリ３２とは、例えば８GByte/secのバンド幅（転送速度）を持つバス３７ａにより接続される。
【００８０】
メモリ／プロセッサ制御接続部３４とＧＰＵ３３とは、例えば４GByte/secのバンド幅を持つバス３７ｂにより接続される。
【００８１】
メモリ／プロセッサ制御接続部３４とＣＰＵ３１とは、例えば８GByte/secのバンド幅を持つバス３７ｃにより接続される。
【００８２】
メモリ／プロセッサ制御接続部３４とＩ／Ｏ制御接続部３５とは、例えば１GByte/secのバンド幅を持つバス３７ｄにより接続される。
【００８３】
Ｉ／Ｏ制御接続部３５とマルチプロセッサ１７とは、例えば１GByte/secのバンド幅を持つバス２７により接続される。
【００８４】
Ｉ／Ｏ制御接続部３５とＵＳＢ３６ａとの間、及びＩ／Ｏ制御接続部３５とオーディオ機器３６ｂとの間では、例えば１００MByte/secのバンド幅でデータ転送が行われる。
【００８５】
Ｉ／Ｏ制御接続部３５とネットワーク３６ｃとの間、Ｉ／Ｏ制御接続部３５とＨＤＤ又はＤＶＤ３６ｄとの間、Ｉ／Ｏ制御接続部３５とチューナ３６ｅとの間では、例えば２５０MByte/secのバンド幅でデータ転送が行われる。
【００８６】
Ｉ／Ｏ制御接続部３５は、各種装置３６ａ〜３６ｅと、コンピュータシステム３０の他の構成要素とを接続するチップである。
【００８７】
メモリ／プロセッサ制御接続部３４は、メモリ３２とＣＰＵ３１とＧＰＵ３３とＩ／Ｏ制御接続部３５との間の接続を行う。
【００８８】
メモリ／プロセッサ制御接続部３４は、上記第１の実施の形態に係るメモリセキュリティ装置１を具備しており、メモリ３２へのデータの書き込み及びデータの読み出しにおいて、メモリセキュリティ装置１を用いる。
【００８９】
以下に、コンピュータシステム３０の動作を説明する。
【００９０】
Ｉ／Ｏ制御接続部３５は、ＵＳＢ３６ａ、オーディオ機器３６ｂ、ネットワーク３６ｃ、ＨＤＤ又はＤＶＤ３６ｄ、チューナ３６ｅのいずれかから圧縮映像データ２９ａを受信し、バス２７経由でマルチプロセッサ１７に圧縮映像データ２９ａを転送する。
【００９１】
マルチプロセッサ１７は、圧縮映像データ２９ａを受け取り、内部のハードウェアでデコードし、さらに編集ソフトウェア２９ｄで必要な編集処理を実行し、編集データをエンコードソフトウェア２９ｅでエンコードし、コンピュータシステム３０で取り扱う形式の圧縮映像データ２９ｃを作成し、圧縮映像データ２９ｃをバス２７経由でＩ／Ｏ制御接続部３５に転送する。マルチプロセッサ１７がメモリ２８を用いる場合には、このマルチプロセッサ１７に備えられているメモリセキュリティ装置１が用いられる。
【００９２】
Ｉ／Ｏ制御接続部３５は、圧縮映像データ２９ｃを、バス３７ｄ経由で、メモリ／プロセッサ制御接続部３４に転送する。
【００９３】
メモリ／プロセッサ制御接続部３４は、圧縮映像データ２９ｃを、バス３７ｃ，３７ａ，３７ｂのいずれか経由で、ＣＰＵ３１、メモリ３２、ＧＰＵ３３のいずれかに転送する。
【００９４】
ＣＰＵ３１は、圧縮映像データ２９ｃを受信した場合、デコード機能３１ａを用いて圧縮映像データ２９ｃをデコードする。そして、ＣＰＵ３１は、デコードされた映像データ３８を、バス３７ｃ、メモリ／プロセッサ制御接続部３４、バス３７ａ経由で、メモリ３２に記憶する。メモリ／プロセッサ制御接続部３４がメモリ３２にデコードされた映像データ３８を書き込む場合には、メモリ／プロセッサ制御接続部３４のメモリセキュリティ装置１が用いられる。
【００９５】
ＧＰＵ３３は、圧縮映像データ２９ｃを受信した場合、デコード機能３３ａを用いて圧縮映像データ２９ｃをデコードする。そして、ＧＰＵ３３は、デコードされた映像データ３８を出力するための処理を行う。
【００９６】
なお、ＧＰＵ３３は、バス３７ｂ、メモリ／プロセッサ制御接続部３４、バス３７ａ経由で、デコードされた映像データ３８をメモリ３２に記憶するとしてもよい。この場合、メモリ／プロセッサ制御接続部３４は、メモリセキュリティ装置１を用いて、デコードされた映像データ３８をメモリ３２に記憶する。また、ＧＰＵ３３は、ＣＰＵ３１によってデコードされた映像データ３８を出力するとしてもよい。
【００９７】
メモリ３８は、圧縮映像データ２９ｃ、あるいは、この圧縮映像データ２９ｃをデコードした映像データ３８、その他ＣＰＵ３１、ＧＰＵ３３などで用いられるソフトウェアなどを記憶する。メモリ３８に記憶されている内容は、メモリ／プロセッサ制御接続部３４のメモリセキュリティ装置１により、内容及び記憶位置がシャッフルされている。
【００９８】
逆に、Ｉ／Ｏ制御接続部３５は、ＣＰＵ３１、メモリ３２、ＧＰＵ３３のいずれかから、
バス３７ｃ、３７ａ、３７ｂのいずれか、メモリ／プロセッサ制御接続部３４、バス３７ｄを経由して、圧縮映像データを受信する。そして、Ｉ／Ｏ制御接続部３５は、この受信した圧縮映像データをバス２７経由でマルチプロセッサ１７に転送する。
【００９９】
マルチプロセッサ１７は、圧縮映像データを受け取り、内部でデコードし、さらに必要な編集処理を実行し、編集データを再度圧縮し、圧縮映像データをバス２７経由でＩ／Ｏ制御接続部３５に転送する。マルチプロセッサ１７がメモリ２８を用いる場合には、このマルチプロセッサ１７に備えられているメモリセキュリティ装置１が用いられる。
【０１００】
Ｉ／Ｏ制御接続部３５は、この圧縮映像データを、ＵＳＢ３６ａ、オーディオ機器３６ｂ、ネットワーク３６ｃ、ＨＤＤ／ＤＶＤ３６ｄのいずれかに出力する。
【０１０１】
なお、ＣＰＵ３１、メモリ３２、ＧＰＵ３３のいずれかからマルチプロセッサ１７へのデータ転送と、マルチプロセッサ１７からＣＰＵ３１、メモリ３２、ＧＰＵ３３のいずれかへのデータ転送とのうち、いずれか一方は、転送されるデータが圧縮されていないとしてもよい。
【０１０２】
上述したように、このコンピュータシステム３０では、ＣＰＵ３１とメモリ／プロセッサ制御接続部３４との間、メモリ３２とメモリ／プロセッサ制御接続部３４との間、ＧＰＵ３３とメモリ／プロセッサ制御接続部３４との間におけるデータ転送のバンド幅は８GByte/sec又は４GByte/secである。
【０１０３】
これに対して、メモリ／プロセッサ制御接続部３４とＩ／Ｏ制御接続部３５との間、Ｉ／Ｏ制御接続部３５とマルチプロセッサ１７との間におけるデータ転送のバンド幅は１GByte/secである。
【０１０４】
すなわち、ＣＰＵ３１とメモリ／プロセッサ制御接続部３４との間、メモリ３２とメモリ／プロセッサ制御接続部３４との間、ＧＰＵ３３とメモリ／プロセッサ制御接続部３４との間におけるデータ転送のバンド幅は、メモリ／プロセッサ制御接続部３４とＩ／Ｏ制御接続部３５との間、Ｉ／Ｏ制御接続部３５とマルチプロセッサ１７との間などのデータ転送のバンド幅より広くなっている。
【０１０５】
例えば、Ｉ／Ｏ制御接続部３５、バス３７ｄ、メモリ／プロセッサ制御接続部３４、バス３７ａ、メモリ３２という経路で映像データを転送する場合、メモリ／プロセッサ制御接続部３４とＩ／Ｏ制御接続部３５との間のバス３７ｄは、１GByte/secのバンド幅を有するが、この映像データの転送中に他のデータについてもメモリ／プロセッサ制御接続部３４とＩ／Ｏ制御接続部３５との間でデータ転送可能とする必要があるため、バス３７ｄでは、映像データの転送に１GByte/secのバンド幅の全てを用いることはできない。映像データの転送においてバンド幅が制限されると、映像データのリアルタイム性の確保が困難となる場合がある。
【０１０６】
しかしながら、本実施の形態においては、メモリ／プロセッサ制御接続部３４とＩ／Ｏ制御接続部３５との間で、圧縮映像データ２９ｃが転送されるため、バス３７ｄのバンド幅を効率的に使用することができ、コンピュータシステム３０内のバスのバンド幅に余裕をもたせた状態でデータを転送でき、データサイズの大きい映像データであってもリアルタイム性を確保することができる。
【０１０７】
すなわち、本実施の形態においては、圧縮映像データがコンピュータシステム３０内のバス３７ｄ上を転送されるため、バス３７ｄにおいてデータ転送が重複してもリアルタイム性を確保した状態でデータ転送可能である。
【０１０８】
上記効果を具体的に説明する。例えば、従来のＮＴＳＣのデータ転送に必要なバンド幅は、３２０（幅）×２４０（高さ）×３（色）×６０（フレーム／秒）＝約１５MByte/secであった。しかしながら、ハイビジョン放送の映像データを扱うとなると、１９２０（幅）×１０８０（高さ）×３（色）×６０（フレーム／秒）＝約１８０MByte/secのバンド幅が必要になる。ハイビジョン放送の映像データを、バスにおける一方の方向への転送と他方の方向への転送とでデータ転送可能とするためには、約３６０MByte/secのバンド幅が必要になる。実際には、制御用の情報なども転送する必要があるため、さらに広いバンド幅が必要になる。
【０１０９】
例えば、１スロット（×１）でバンド幅が１３３MByte/secとなる第１の規格にそったバス、あるいは１スロット（×１）でバンド幅が２５０MByte/secとなる第２の規格にそったバスでは、上記のようなサイズのハイビジョン放送の映像データをそのまま転送するにはバンド幅が足りない。
【０１１０】
例えば、上記第２の規格において４スロット（×４）としたバスは、バンド幅が１GByte/secとなるが、テータ転送効率は通常で６０％〜７５％であり、他のデータの転送と重複する場合もあり、１GByte/secのバンド幅の全てを使用して映像データを転送することはできない。
【０１１１】
しかしながら、本実施の形態に係るマルチプロセッサ１７を備えたコンピュータシステム３０においては、上述したように、映像データがコンピュータシステム３０に対応した形式で圧縮されて転送されるため、ハイビジョン放送の映像データなどのような大容量データであってもリアルタイム性を確保しつつ映像データの出力を実行することができる。
【０１１２】
なお、本実施の形態に係るマルチプロセッサ１７では、複数のプロセッサエレメント２０ａ〜２０ｄのうちの少なくとも一つが、圧縮映像データ２９ａに対して、デコード、編集、エンコードを行い、圧縮映像データ２９ｃを生成するとしているが、例えば、mpeg2で圧縮されているデータをH.264で圧縮されているデータに変換するなどのように、ある形式の圧縮映像データを他の形式の圧縮映像データに変換する（トランスコーデック）処理を実行し、編集処理は実行しないとしてもよい。
【０１１３】
本実施の形態において、編集処理としては、例えば、画像処理技術及び音声処理技術を用いてスポーツのハイライトシーン、ニュース番組の特定のコーナーを抽出する処理などがある。この場合、編集処理では、例えば、映像データにおいて繰り返されている回数が所定数を超えるデータ、音量の大きくなる部分のデータ、ある特徴を持つデータ、顔認識による特定の人物の映像データなどを、音の変わり目又は切れ目、映像データのテロップなどに基づいて抽出する。
【０１１４】
また、編集処理は、画素数や解像度の変更など、映像データを出力デバイスに応じたデータに変換する処理であってもよい。
【０１１５】
さらに、編集処理は、映像データから特徴点を抽出し、この映像データに含まれているユーザのジェスチャーに基づいて入力制御を行うなどのような、ユーザインタフェースを実現するための処理としてもよい。
【０１１６】
本実施の形態においては、例えば、地上デジタル放送の圧縮映像データのデコード、ＢＳハイビジョン放送の圧縮映像データのデコード、ＤＶＤ又はハードディスクなどのような記録媒体に記憶されている圧縮映像データのデコードなどのような、固定的な処理（変更される可能性、頻度がある程度より低い処理）が、ハードウェアにより実行される。
【０１１７】
これとは逆に、本実施の形態においては、例えば、エンコード自体は一定の処理内容にしたがって行われるが出力先に応じて処理内容の一部が変わる処理などのように、主な処理内容は固定的であっても一部が用途によって変わる処理は、プロセッサエレメント２０ａ〜２０ｄのいずれかによりソフトウェアを用いて実行する。より具体的には、例えば、H.264へのエンコードを実行して例えばＨＤＤ／ＨＤ又はＤＶＤに保存する処理、mpeg2へのエンコードを実行して例えばＤＶＤに保存する処理、容量を少なくするためにmpeg2へのビットレート変換を実行する処理、mpeg4へのエンコードを実行して例えば携帯型ゲーム機又は携帯型音楽プレーヤに保存する処理などは、ソフトウェアに基づくプロセッサエレメントの動作により実現される。
【０１１８】
同様に、顔認識処理、特徴点の抽出、音認識、テロップ（文字）認識などの編集処理も、いずれかのプロセッサエレメントによりソフトウェアを用いて実行する。
【０１１９】
本実施の形態に係るマルチプロセッサ１７は、ビデオ出力機能を持たず、チップセット機能を利用する。このマルチプロセッサ１７は、コンピュータグラフィックスを処理するためのテクスチャユニットやラスタライザを搭載しないため、ＧＰＵよりもチップ面積を小さくすることができる。マルチプロセッサ１７を用いることにより、トランスコーデックにＧＰＵを使用する必要がなくなり、ＧＰＵはＧＰＵ本来の処理を行うことができ、チップの費用対効果を高めることができる。
【０１２０】
本実施の形態においては、外部メモリチップ２８を制御するメモリコントローラ２２、外部メモリチップ３２を制御するメモリ／プロセッサ制御接続部３４内に暗号化を行うデバイスが内蔵され、アドレスとデータが暗号化される。メモリコントローラ２２、メモリ／プロセッサ制御接続部３４は、チップ内から要求されるアドレスとデータとをシャッフルし、シャッフルのかかったアドレスと、シャッフルのかかったデータを、外部メモリチップ２８，３２との間でやり取りする。これにより、外部メモリチップ２８，３２に対してデータ不正取得や改ざんが試みられた場合であっても、データ不正取得や改ざんにより得られたデータは意味のない情報になっており、データの内容を守ることができる。
【０１２１】
（第３の実施の形態）
本実施の形態においては、上記第２の実施の形態に係るマルチプロセッサ１７の変形例について説明する。
【０１２２】
図９は、本実施の形態に係るメモリセキュリティ装置を備えたマルチプロセッサの一例を示すブロック図である。
【０１２３】
マルチプロセッサ３９は、上記図７のマルチプロセッサ１７とほぼ同様であるが、ハードウェアエンコード部４０をさらに具備する点で異なる。
【０１２４】
マルチプロセッサ３９において、汎用バスインタフェース２１が圧縮映像データ２９ａを受け付けてから、デコードされた映像データ２９ｂをメモリ２８が記憶するまでの動作は、上記第２の実施の形態に係るマルチプロセッサ１７と同様である。
【０１２５】
マルチプロセッサ３９において、制御プロセッサ２３は、複数のプロセッサエレメント２０ａ〜２０ｄのうちの少なくとも一つを制御する。複数のプロセッサエレメント２０ａ〜２０ｄのうちの少なくとも一つは、メモリ２８に記憶されている編集ソフトウェア２９ｄをアクセスするとともに、メモリ２８に記憶されているデコードされた映像データ２９ｂを取得し、編集ソフトウェア２９ｄに基づく動作によりデコードされた映像データ２９ｂを編集し、編集データをハードウェアエンコード部４０に転送する。
【０１２６】
次に、制御プロセッサ２３は、ハードウェアエンコード部４０を制御する。ハードウェアエンコード部４０は、編集データをエンコードし、このエンコードにより得られた圧縮映像データ２９ｃをメモリ２８に記憶する。
【０１２７】
そして、制御プロセッサ２３は、データ転送部２４を制御する。データ転送部２４は、メモリ２８に記憶されている圧縮映像データ２９ｃを汎用バスインタフェース２１から外部に送信する。
【０１２８】
以上説明した本実施の形態に係るマルチプロセッサ３９においては、エンコードもハードウェアにより実行する。本実施の形態に係るマルチプロセッサ３９を用いることで、上記第２の実施の形態と同様の効果を得ることができる。マルチプロセッサ３９は、デコードと同様にエンコードについても固定的な処理である場合に適しており、処理速度を向上させることができる。
【０１２９】
なお、上記各実施の形態においては、マルチプロセッサ１７，３９及びコンピュータシステム３０が扱うデータが映像データの場合を例に説明しているが、他のデータであっても同様に適用可能である。
【０１３０】
また、マルチプロセッサ１７，３９は、例えばパーソナルコンピュータなどのようなコンピュータシステム３０に適用されるのみではなく、例えばＤＶＤレコーダなどのような機器に備えられるとしてもよい。
【０１３１】
上記各実施の形態に係るマルチプロセッサ１７，３９は、編集データを、一旦メモリに記憶し、このメモリに記憶された編集データをアクセスしてエンコードを行うとしてもよい。
【０１３２】
上記各実施の形態に係るマルチプロセッサ１７，３９において、制御プロセッサ２３、データ転送部２４、メモリセキュリティ装置１の動作についても、プロセッサエレメントで実現されるとしてもよい。
【図面の簡単な説明】
【０１３３】
【図１】本発明の第１の実施の形態に係るメモリセキュリティ装置の一例を示すブロック図。
【図２】ホストからメモリへのアクセスをデバイスにより制限する状態の一例を示すブロック図。
【図３】クラックコードを用いてアクセス制限を解除する状態の一例を示すブロック図。
【図４】第１の実施の形態に係るメモリセキュリティ装置によりデータが保護される状態の一例を示すブロック図。
【図５】第１の実施の形態に係るメモリセキュリティ装置によるアドレスに対するシャッフル処理の一例を示す図。
【図６】第１の実施の形態に係るメモリセキュリティ装置による書き込みデータに対するシャッフル処理の一例を示す図。
【図７】本発明の第２の実施の形態に係るメモリセキュリティ装置を備えたマルチプロセッサの一例を示すブロック図。
【図８】第２の実施の形態に係るマルチプロセッサの適用例を示すブロック図。
【図９】本発明の第３の実施の形態に係るメモリセキュリティ装置を備えたマルチプロセッサの一例を示すブロック図。
【符号の説明】
【０１３４】
１…メモリセキュリティ装置、２…乱数発生部、３…乱数記憶部、４…アドレス暗号化部、５…データ暗号化部、６…書き込み部、７…読み出し部、８…データ復号化部、９，３２…メモリ、１０，１３…デバイス、１１…シリアルコネクション、１２…ホスト機器、１７，３９…マルチプロセッサ、１８，１９…ハードウェアデコード部、２０ａ〜２０ｄ…プロセッサエレメント、２１…汎用バスインタフェース、２２…メモリコントローラ、２３…制御プロセッサ、２４…データ転送部、２５…内部バス、２６…外部装置、２７，３７ａ〜３７ｄ…バス、２８…メモリ、２９ａ…圧縮映像データ、２９ｂ，３８…デコードされた映像データ、２９ｃ…圧縮映像データ、２９ｄ…編集ソフトウェア、２９ｅ…エンコードソフトウェア、３０…コンピュータシステム、３１…ＣＰＵ、３１ａ，３３ａ…デコード機能、３３…ＧＰＵ、３４…メモリ／プロセッサ制御接続部、３５…Ｉ／Ｏ制御接続部、４０…ハードウェアエンコード部
【図１】
2008299611.tif 000003
【図２】
2008299611.tif 000004
【図３】
2008299611.tif 000005
【図４】
2008299611.tif 000006
【図５】
2008299611.tif 000007
【図６】
2008299611.tif 000008
【図７】
2008299611.tif 000009
【図８】
2008299611.tif 000010
【図９】
2008299611.tif 000011