説明

データ処理システム

【課題】セキュリティ強度を高めるとともに、メインプロセッサ装置であるCPUの処理負荷を低減する構成を実現する。
【解決手段】CPU101は、暗号化されている暗号化画像データを受信し、受信した暗号化画像データを復号することなくGPU105に送信し、GPU105では、受信した暗号化画像データを内部メモリであるデバイスメモリ109に格納し、デバイスメモリ109内の暗号化画像データに対して復号処理、デコード処理を行う。これにより、暗号化されていないデータがダンプされることがなく、また、CPU101では暗号化画像データの復号処理を行わないので、CPU101の処理負荷を低減することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号化されたデータを復号するプロセッサ装置に関する。
以下では、暗号化されたデータの例として、暗号化された画像データを説明する。
【背景技術】
【0002】
例えば、PC(Personal Computer)上でMPEG(Moving Picture Experts Group)2やH.264などの圧縮符号化された画像データを再生する場合、CPU(Central Processing Unit)や専用コーデックを使ってこれらをデコードし、表示データをGPU(Graphics Processing Unit)に渡して表示する。
一方でビデオや監視映像等、画像の電子化に伴い、これらのコンテンツを不正な閲覧から守るため、これらの画像データに暗号化を施す場合がある。
【0003】
暗号化されたデータを復号し、デコード・表示する際、CPUとGPUを主に使用してこれらを実現する。
中でも、CPUで暗号の復号と画像データのデコードを行い、GPUにデータを転送する際に暗号化し、GPUで暗号を復号して表示するものがある(例えば、特許文献1、特許文献2)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2008−90889号公報
【特許文献2】特開2008−299611号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1及び特許文献2によれば、画像データはCPUで暗号化され、GPU上で復号される。
そのため、暗号前の画像データはCPUからアクセスできるメモリやハードディスク上に展開される。
そのため、これらメモリやハードディスクから暗号化されていない画像データがダンプされる可能性がある。
また、CPUで暗号の復号と暗号前の画像データのデコードを行なうため、CPU負荷が増大する。
【0006】
この発明は、上記のような課題を解決することを主な目的の一つとしており、セキュリティ強度を高めるとともに、メインプロセッサ装置であるCPUの処理負荷を低減する構成を実現することを主な目的とする。
【課題を解決するための手段】
【0007】
本発明に係るデータ処理システムは、
暗号化されている暗号化データを受信し、受信した暗号化データを復号することなく送信するメインプロセッサ装置と、
内部メモリを有し、
前記メインプロセッサ装置から送信された前記暗号化データを受信し、受信した暗号化データを前記内部メモリに格納し、前記内部メモリ内の前記暗号化データに対して復号処理を行うサブプロセッサ装置とを有することを特徴とする。
【発明の効果】
【0008】
本発明では、暗号化データの復号処理はサブプロセッサ装置の内部メモリで行われるため、暗号化されていないデータがダンプされることがなく、また、メインプロセッサ装置では暗号化データの復号処理を行わないので、メインプロセッサ装置の処理負荷を低減することができる。
【図面の簡単な説明】
【0009】
【図1】実施の形態1に係るデータ処理システムの構成例を示す図。
【図2】実施の形態1に係るCPUとGPU間の動作例を示す図。
【図3】実施の形態1に係るGPU内で実行されるカーネルと処理されるデータとの関係を示す図。
【図4】実施の形態2に係るGPU内で実行されるカーネルと処理されるデータとの関係を示す図。
【発明を実施するための形態】
【0010】
実施の形態1.
本実施の形態では、画像データの暗号の復号処理、デコード処理、表示処理をGPU上で実行することで、CPUの処理負荷を低減し、高速に動作するデータ処理システムを説明する。
【0011】
図1は、本実施の形態に係るデータ処理システム100の構成例を示すブロック図である。
【0012】
図1において、CPU101はメモリ102やHDD(Hard Disk Drive)103、通信ポート104、GPU105とバス107で接続されている。
これらはバス107を通じて直接接続されていてもよいし、ブリッジを経由して接続されていてもよい。
なお、CPU101はメインプロセッサ装置の例であり、GPU105はサブプロセッサ装置の例である。
【0013】
GPU105は少なくとも制御部108、デバイスメモリ109(内部メモリの例)及びデータ処理部110を搭載する。
制御部108は、CPU101からデータ送信のコールを受け、CPU101から送信された暗号化された画像データ(符号化されたデータが暗号化されている暗号化データの例、以下、暗号化画像データという)をデバイスメモリ109に展開する。
また、制御部108は、データ取得のコールを受けると、デバイスメモリ109上のデータをCPUに送信する。
また、制御部108は、CPU101からのプログラム実行(カーネル実行と呼ぶ)のコールを受けると、データ処理部110を使ってデバイスメモリ109上のデータを処理する。
さらに、カーネル実行によって、演算結果をモニタ106に出力する。
【0014】
CPU101は、通信ポート104やHDD103から再生対象となる暗号化画像データを受信し、GPU105に転送する。
なお、CPU101は、受信した暗号化画像データを復号することなく、そのままGPU105に転送する。
また、CPU101は、転送する際、GPU105に搭載されているデバイスメモリ109のサイズを上限として、暗号化画像データを分割して送付してもよい。
暗号化データの転送の後、CPU101はGPU105に対してカーネル実行をコールし、GPU105は、カーネル実行として、復号処理(暗号化に対する復号処理)、画像のデコード処理(符号化に対する復号処理)、デコード処理後の画像データの表示を行なう。
CPU101は、GPU105によるカーネル実行が終了したら、次の暗号化画像データをGPU105に転送する。
カーネル実行は復号、デコード、表示を1つのカーネルで実行してもよいし、復号、デコード、表示を別々のカーネルで実行してもよい。
【0015】
GPU105で実行するプログラムはCUDA(Compute Unified Device Architecture)やOpenCL(Open Computing Language)等のプログラミング言語で記述する。
暗号の復号処理や画像のデコード処理は前記プログラミング言語を使って記述する。
演算データをモニタに出力する場合は、例えば、前記プログラム内でOpenGL(Open Graphics Library)API(Application Programming Interface)を使用する。
【0016】
図2はGPU105上で復号、デコード、表示を行う際のCPU101とGPU105との間の動作例を示す。
【0017】
まず、CPU101は復号表示する暗号化画像データを取得する(S201)。
このとき、GPU105のデバイスメモリ109のサイズに応じて暗号化画像データを分割してもよい。
そして、CPU101は暗号化画像データをGPU105に送信する(S202)。
GPU105内の制御部203は暗号化画像データを受信すると、受信した暗号化画像データをデバイスメモリ109に展開(格納)する(S203)。
CPU101は、暗号化画像データの送信が完了したら、GPU105にカーネル実行させるコマンドを送信する(S204)。
GPU105では、制御部108がカーネル実行コマンドを受信し、データ処理部110がデバイスメモリ109に格納している暗号化画像データにアクセスしながら、暗号化画像データの復号処理を行なう(S205)。
データ処理部110によるカーネルの実行(暗号化画像データの復号処理)が終了したら、制御部108は、完了通知をCPU101に送信する(S206)。
以降、実行命令の送受信、カーネル実行、完了通知の送受信を繰り返して復号された画像データのデコード処理、表示データの生成処理を行なう(S207〜S212)。
CPU101は表示データ生成の完了通知を受け取ったら、次にGPU105に処理させる暗号化画像データについてS201〜S212を繰り返す。
【0018】
図2では、GPU105上で暗号化画像データの復号、復号された画像データのデコード・表示データの生成を3回のカーネル実行で行なっているが、これらを1回または2回のカーネル実行で行なってもよい。
【0019】
図3は、GPU105内で実行されるカーネルと処理されるデータとの関係を示す。
復号カーネル302では、データ処理部110は、デバイスメモリ109に展開された暗号化画像データ301を一定サイズに分割し、それぞれの分割データに対して復号スレッド303〜305を使って並列に復号処理を行なう。
復号結果は復号された画像データ306としてデバイスメモリ109に格納する。
また、データ処理部110は、復号した画像データ306をデコードカーネル307によってデコードする。
デコードカーネル307では、データ処理部110は、復号カーネル302と同様に、画像データを分割して、デコードスレッド308〜310を使って並列処理を行い、デコードされた画像データ311を生成する。
デコードされた画像データ311はデバイスメモリ109に格納される。
表示カーネル312も同様にして、デコードされた画像データ311を一定サイズに分割し、それぞれの分割データに対して表示スレッド313〜315により並列処理を行って、表示データ316を生成する。
【0020】
図3では、GPU105上で暗号化画像データの復号、復号された画像データのデコード、表示データの生成を3回のカーネル実行で行なっているが、これらを1回または2回のカーネル実行で行なってもよい。
【0021】
本実施の形態では、暗号化された画像データの復号、デコード、表示をGPU105で行なわせることで、CPU101の負荷を下げることができる。
また、GPU105は大量のスレッドを生成して処理を行なわせることで、CPU101より大量のデータを高速に処理することができる。
さらに、暗号化された画像データはGPU105内で復号、デコードされるため、暗号を復号した状態でCPU101のメモリに展開されることはない。
よって、メモリダンプ等によって復号されたデータを取得されることは無く、安全性を高めることができる。
【0022】
以上、本実施の形態では、
少なくともCPUとGPUを具備し、
前記CPUは所定の仕様で符号化され、かつ暗号化された画像データを前記GPUに送信し、
前記GPUは、受信した前記暗号化・符号化画像データを前記GPUの内部メモリに展開し、前記GPU内のプロセッサを使って暗号の復号を行なって符号化画像データを生成し、前記符号化画像データのデコードを行ない画像データを生成し、前記画像データに対して表示データ生成処理を行い、表示画像データを生成するデータ処理システム(画像復号再生装置)を説明した。
【0023】
また、本実施の形態では、
前記GPUは、受信した前記暗号化・符号化画像データを一定のサイズに分割し、
前記分割された暗号化・符号化画像データを複数のスレッドで並列に復号処理して符号化画像データを生成し、前記符号化画像データをGPUの内部メモリに出力し、前記符号化画像データを一定のサイズに分割し、前記分割された符号化画像データを複数のスレッドで並列にデコード処理して画像データを生成し、前記画像データをGPUの内部メモリに出力し、前記画像データを一定のサイズに分割し、前記分割された画像データを複数のスレッドで並列に表示データ生成処理して表示画像データを生成することを説明した。
【0024】
実施の形態2.
実施の形態1では、CPUは暗号化画像データの送信、GPUによるカーネル実行及びGPUからの完了通知の受信の後に次の暗号化画像データの送信を行う。
しかしながら、映像データが大量にあり、リアルタイムの復号及びデコードを要求される場合、データ転送がボトルネックとなる可能性がある。
本実施の形態では、データ転送とカーネル実行を並列化することでデータ転送のボトルネックを軽減する方法を示す。
本実施の形態に係るデータ処理システム100の構成は図1と同じである。
また、本実施の形態は、実施の形態1を前提にしており、以降では、実施の形態1との差異を説明する。
【0025】
図4は実施の形態2におけるCPUとGPUの動作例を示す。
【0026】
CPU101は、暗号化画像データを取得し(S401)、GPU105に送信する(S402)。
GPU105において、制御部108は受信した暗号化画像データをデバイスメモリ109に展開(格納)する(S403)。
CPU101が実行命令を送信する(S404)と、GPU105のデータ処理部110はS403で展開した暗号化画像データの復号処理、復号された画像データのデコード処理、表示データの生成処理を行う(S405)。
CPU101は、データ処理部110が演算を行なっている間に、新たな暗号化画像データを取得し(S406)、取得した暗号化画像データをGPU105に送信する(S407)。
GPU105において、制御部108は、データ処理部110に所定の演算をさせながら、新たに受信した暗号化画像データをデバイスメモリ109に展開(格納)する(S408)。
このとき、S403で展開した領域とは異なる領域に新たに受信した暗号化画像データを展開する。
【0027】
データ処理部110がS405の演算を完了したら、制御部108はCPU101に完了通知を送信する(S409)。
CPU101は完了通知を受けると、GPU105に実行命令を送信する(S410)。
その後、データ処理部110はS408で展開した暗号化画像データの復号処理、復号された画像データのデコード処理、表示データの生成処理を行う(S411)。
CPU101は、データ処理部110が演算を行なっている間に、新たな暗号化画像データを取得し(S412)、取得した暗号化画像データをGPU105に送信する(S413)。
GPU105において、制御部108は、データ処理部110に所定の演算をさせながら、新たに受信した暗号化画像データをデバイスメモリ109に展開する(S414)。
このとき、S408で展開した領域とは異なる領域に新たに受信した暗号化画像データを展開する。
以下、これらを繰り返すことで演算を行なう。
【0028】
このように、本実施の形態では、実施の形態1で得られる効果に加え、データ転送とGPU上の演算を並列に実行できるため、メモリ転送のオーバーヘッドを隠蔽できる。
【0029】
以上、本実施の形態では、
実施の形態1で示した構成において、
前記CPUは前記暗号化・符号化画像データを前記GPUに送信した後、前記GPUに処理を実行する命令を送信した後、前記GPUでの処理が終了する前に、前記暗号化・符号化画像データとは異なる暗号化・符号化画像データを送付し、
前記GPUは、前記事項している処理を続行しながら、前記異なる暗号化・符号化画像データを受信し、内部のメモリに展開することを説明した。
【0030】
なお、以上の説明では、暗号化データの例として暗号化画像データを用い、また、サブプロセッサ装置の例としてGPUを用いて説明を行ったが、暗号化データは画像データに限らず、暗号化された文書データであってもよいし、暗号化された音声データであってもよい。
このため、サブプロセッサ装置は、GPU以外のプロセッサ装置であってもよい。
【符号の説明】
【0031】
100 データ処理システム、101 CPU、102 メモリ、103 HDD、104 通信ポート、105 GPU、106 モニタ、107 バス、108 制御部、109 デバイスメモリ、110 データ処理部。

【特許請求の範囲】
【請求項1】
暗号化されている暗号化データを受信し、受信した暗号化データを復号することなく送信するメインプロセッサ装置と、
内部メモリを有し、
前記メインプロセッサ装置から送信された前記暗号化データを受信し、受信した暗号化データを前記内部メモリに格納し、前記内部メモリ内の前記暗号化データに対して復号処理を行うサブプロセッサ装置とを有することを特徴とするデータ処理システム。
【請求項2】
前記メインプロセッサ装置は、
符号化されたデータが暗号化されている暗号化データを前記サブプロセッサ装置に送信し、
前記サブプロセッサ装置は、
受信した暗号化データを前記内部メモリに格納し、前記内部メモリ内の前記暗号化データに対して暗号化に対する復号処理及び符号化に対する復号処理を行うことを特徴とする請求項1に記載のデータ処理システム。
【請求項3】
前記サブプロセッサ装置は、
受信した暗号化データを所定のデータサイズに分割して前記内部メモリに格納し、前記内部メモリ内の複数の分割された暗号化データの復号処理を並列して行うことを特徴とする請求項1又は2に記載のデータ処理システム。
【請求項4】
前記メインプロセッサ装置は、
前記サブプロセッサ装置が前記内部メモリ内の前記暗号化データに対して復号処理を行っている際に、前記サブプロセッサ装置が復号処理を行っている暗号化データの次に前記サブプロセッサ装置に復号処理を行わせる暗号化データを前記サブプロセッサ装置に送信し、
前記サブプロセッサ装置は、
前記内部メモリ内の前記暗号化データに対して復号処理を行っている際に前記前記メインプロセッサ装置から送信された前記暗号化データを受信し、前記内部メモリのうち、復号処理中の暗号化データが格納されている領域と異なる領域に受信した暗号化データを格納することを特徴とする請求項1〜3のいずれかに記載のデータ処理システム。
【請求項5】
前記メインプロセッサ装置は、
画像データの暗号化データを送信し、
前記サブプロセッサ装置は、
所定の表示装置に接続されており、
前記メインプロセッサ装置から送信された前記画像データの暗号化データを受信し、受信した前記画像データの暗号化データを前記内部メモリに格納し、前記内部メモリ内の前記画像データの前記暗号化データに対して復号処理を行い、復号処理を経て得られた画像データを前記表示装置に出力することを特徴とする請求項1〜4のいずれかに記載のデータ処理システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate