説明

グラフィック処理ユニットでの暗号化及び復号化

【課題】コンピューティングシステムにおける汎用システムプロセッサからデータの暗号化及び/又は復号化タスクを排除する。
【解決手段】グラフィック処理ユニットを含むことができる並行処理構造を有するシステムに暗号化及び/又は復号化処理をオフロードするためのシステム、方法、及びプロセッサ実行可能命令が開示される。ルックアップテーブルは、グラフィック処理ユニット上でだけ暗号化/復号化変換を実行する段階をサポートする。1つのバージョンでは、ルックアップテーブルは、ラインダール暗号化/復号化変換をサポートする。また、復号された暗号文を視覚化するためのシステム、方法、及びプロセッサ実行可能命令が開示される。

【発明の詳細な説明】
【技術分野】
【0001】
(著作権表示)
本特許文書の公開部分は、著作権保護の下にある内容を含む。著作権者は特許商標庁の特許ファイル又はレコード内に表されるように特許文書又は特許情報公開を正確にコピーすることについては異議がないが、それ以外は全ての著作権を留保する。
【0002】
(コンピュータプログラムリスティング付属文書)
本出願は、次のファイル:Encryption.txt、Decryption.txt、及びVisualization.txtを有するコンパクトディスク(複製の「Copy1」及び「Copy2」にファイルされている)上に引用により本明細書に組み込まれるコンピュータプログラムリスティング付属文書を含む。複製コンパクトディスクは各々18キロバイトを有し、2006年10月13日に作成されたものである。
【0003】
(関連出願の相互参照)
本出願は、引用により本明細書に組み込まれる、2006年7月6日に出願された米国特許暫定出願第60/819,144号の利益を主張する。
【0004】
(技術分野)
本発明は、暗号化及び復号化技術に関する。詳細には、本発明は、暗号化及び復号化処理をグラフィック処理ユニットに任せることに関する。本発明はまた、グラフィック処理ユニットからの復号化データの表示に関する。
【背景技術】
【0005】
暗号化は、データを隠して特別な知識なしには読み取ることができないコード(「暗号文」)を生成するプロセスである。復号化は、暗号文を解読してデータを復元するプロセスである。ブロック暗号法、ストリーム暗号法、及び公開鍵暗号法を含む、データを暗号化し復号化する多様な技術がある。国立標準技術研究所(NIST)は、データ暗号化の次世代標準暗号方式(AES)としてRijdael(ラインダール)暗号化と呼ばれるブロック暗号法を採用した。
【0006】
ラインダール暗号化は、ラインダールアルゴリズムと呼ばれるアルゴリズムにデータと暗号鍵を適用して暗号文を作成するプロセスである。ラインダール暗号化プロセスは、16データバイトを有するブロックでデータを暗号化する。データバイトは、状態と呼ばれる4列×4行のブロックにグループ分けされる。データバイトは、英数字、記号、コマンド、アカウントデータ、又は他のタイプの情報に対応することができる。暗号化の前に、初期暗号鍵が10個のラウンド鍵に拡大される。各ラウンド鍵は、4列×4行のラウンド鍵ブロックにグループ分けされた16バイト(データの各バイトに対して1つのラウンド鍵)を有する。
【0007】
ラインダールアルゴリズムは反復型であり、10個のラウンドからなる。各ラウンドは、AddRoundKey、SubBytes、ShiftRows、及びMixColumnsとして知られる4つの変換のシーケンスである。各変換の結果は、「状態」と呼ばれ、各ラウンドは、前のラウンドからの状態に対して作用する。各ラウンドは、その固有のランド鍵を利用する。
【0008】
AddRoundKey変換は、XOR演算によって状態の各バイトをラウンド鍵の対応するバイトと結合する。
【0009】
SubBytes変換は、状態の各バイトをラインダールSボックスとして知られるルックアップテーブルからのバイトに置き換える。
【0010】
ShiftRows変換は、状態の行に対して作用する。ShiftRowsは、出力状態の各列が入力状態の他の3列からの1バイトを有するように、各行のバイトを一定オフセットだけ繰り返しシフトする。ShiftRowsでは、第1行は変わらないままであり、第2行の各バイトが左に1列シフトされ、第3行の各バイトは、左に2列シフトされ、更に第4行の各バイトは、左に3列シフトされる。シフトが行われると、行の第1列のバイトは第4列にラップアラウンドする。
【0011】
MixColumns変換では、各列は多項式として扱われ、ラインダールの有限体において行列を乗算する。
【0012】
プロセッサ上でラインダール暗号化プログラムを実行すると、プロセッサ時間のかなりの量を消費する。汎用システムプロセッサ上で動作すると、プログラムは、ワードプロセッサ、スプレッドシート、及び電子メールクライアントなどの他のシステムプログラムの性能をかなり低下させる可能性がある。ラインダール復号を実行するプログラムは、同様にプロセッサ時間のかなりの量を消費し、他のシステムプログラムに影響を与える。
【発明の開示】
【発明が解決しようとする課題】
【0013】
現在、コンピューティングシステムにおける汎用システムプロセッサ(「システムプロセッサ」)からデータの暗号化及び/又は復号化タスクを排除する必要性がある。
【課題を解決するための手段】
【0014】
開示されるシステムは、システムプロセッサからデータの暗号化及び/又は復号タスクを排除する。本システムの第1の実施は、システムプロセッサと通信するグラフィック処理ユニット(「GPU」)を含む。システムプロセッサは、セットアッププログラムなどの第1プロセッサ実行可能命令を実行し、GPUに第2プロセッサ実行可能命令を伝達する。第1プロセッサ実行可能命令は、非暗号化テクスチャ、暗号化ラウンド鍵、少なくとも1つのルックアップテクスチャ、及び第2プロセッサ実行可能命令をGPUに伝達するための命令を含む。第2プロセッサ実行可能命令は、暗号化動作を実行するようGPUを構成するための画素シェーダー暗号化プログラムなどの暗号化プログラムを含む。プロセッサ実行可能命令の第1及び第2セットは、1つ又はそれ以上のコンピュータ可読記憶媒体内に記憶することができる。
【0015】
本システムの第2の実施は、システムプロセッサと通信するGPUを含む。システムプロセッサは、セットアッププログラムなどの第1プロセッサ実行可能命令を実行し、GPUに第2プロセッサ実行可能命令を伝達する。第1プロセッサ実行可能命令は、暗号化テクスチャ、暗号化ラウンド鍵、少なくとも1つのルックアップテクスチャ、及び第2プロセッサ実行可能命令をGPUに伝達するための命令を含む。第2プロセッサ実行可能命令は、ラインダール復号化変換を実行するようにGPUを構成するための画素シェーダー復号化プログラムなどの復号化プログラムを含む。復号のためのプロセッサ実行可能命令の第1及び第2セットは、1つ又はそれ以上のコンピュータ可読記憶媒体内に記憶することができる。
【0016】
1つのバージョンでは、復号のためのプロセッサ実行可能命令の第2セットはまた、システムプロセッサと通信することなく復号化データを表示するため、勾配テクスチャ、ASCIIテクスチャ、リニアライザテクスチャ、及び視覚化プログラムをGPUに伝達するための命令を含む。他のバージョンでは、プロセッサ実行可能命令の第2セットとは別個に、プロセッサ実行可能命令の1つ又はそれ以上のセットは、システムプロセッサにテクスチャ及び視覚化プログラムをGPUに伝達させる。
【0017】
暗号化動作を行う開示される方法は、GPUによって実行することができる。本方法は、非暗号化テクスチャ、ルックアップテクスチャ、10個の暗号化ラウンド鍵、及び暗号化プログラムをシステムプロセッサから受け取る段階を含む。1つのバージョンでは、暗号化プログラムは、ラインダール変換を行うための命令を有する。第1動作は、AddRoundKey、SubBytes、及びShiftRows変換を組み合わせる。第1動作は、状態ブロックでの各データバイトに対して、ルックアップテクスチャの修正されたSボックスルックアップテーブルからの置換バイトを取得する段階を含む。修正されたSボックスルックアップテーブルは、AddRoundKey及びSubBytes変換を実施する。第1動作は、置換バイトをShiftRows変換に対応するロケーションの状態ブロックに書き込む段階を含む。
【0018】
第2動作は、MixColumns変換を実施するために
ルックアップテクスチャのXORルックアップテーブル及び組み合わされた有限体乗算/XORルックアップテーブル(xXORテーブル)を参照する段階を含む。第2動作は、状態の各列に対して繰り返される。
【0019】
復号化動作を行う開示される方法は、GPUによって実行することができる。本方法は、暗号化テクスチャ、少なくとも1つのルックアップテクスチャ、暗号化ラウンド鍵、及び復号化プログラムをシステムプロセッサから受け取る段階を含む。1つのバージョンでは、復号化プログラムは、ラインダール変換を行うための命令を有する。本方法の第1動作は、AddRoundKey変換を実施するためにXORルックアップテーブルを有するルックアップテクスチャを参照する段階を含む。本方法の第2動作は、InverseMixColumns事前処理変換を実施するために、組み合わせXOR及び2つの有限体乗算演算によって得られた値を有するルックアップテーブルを備えたルックアップテクスチャを参照する段階を含む。本方法の第3動作は、InverseMixColumns変換を実施するために、組み合わされた有限体乗算/XORルックアップテーブル(xXORテーブル)を有するルックアップテクスチャを参照する段階を含む。本方法の第4動作は、xXORテーブルから得られた値をInverseShiftRows変換に対応する状態ブロック内のロケーションに書き込む段階を含む。本方法の第5動作は、InverseSubBytes変換を実施するために、1次元Sボックスルックアップテーブルを有するルックアップテクスチャを参照する段階を含む。
【0020】
1つのバージョンでは、復号化データはGPUレンダーターゲットに書き込まれ、視覚化ディスプレイプログラムは、ディスプレイ又は他の視覚的に知覚可能なデバイス上に可読フォーマットでデータを表示するために実行される。1つのバージョンでは、システムプロセッサが、視覚化プログラム、勾配テクスチャ、ASCIIテクスチャ、及びリニアライザテクスチャをGPUにアップロードする。システムプロセッサは、GPUで視覚化プログラムの実行を開始するために信号を供給する。
【0021】
視覚化プログラムの1つのバージョンによると、リニアライザテクスチャは、復号化データを出力のために利用可能にするよう拡大されタイルのように並べられる。ASCIIテクスチャの文字ブロックは、出力されたデータ値に基づいてインデックスされ、勾配テクスチャは、プログラムを文字ブロックの残りのASCIIテクセルに向ける。
【発明を実施するための最良の形態】
【0022】
本発明は、以下の図面及び説明を参照するとより理解することができる。図中の構成要素は、必ずしも縮尺通りではなく、本発明の原理を例証する際に強調されている。更に図中、同じ参照符号は種々の図全体を通じて対応する要素を示す。
【0023】
図1は、暗号化動作、復号化動作、及び/又はGPU視覚化動作を実行するように構成された暗号化/復号化システム100を示す。暗号化及び復号化動作は、データの暗号化又は復号化をそれぞれ促進するための変換を含む。GPU視覚化動作は、データを第2プロセッサに伝達することなくGPUによって暗号文から導かれたデータを表示する段階を含む。
【0024】
暗号化/復号化システム100は、システムメモリ104及びGPU106と通信するシステムプロセッサ102を含む。システムプロセッサ102は、PC内の中央処理ユニット又は命令を実行するように構成された他のプロセッサなどの汎用システムプロセッサとすることができる。システムメモリ104は、好ましくはランダムアクセスメモリ(例えば、SRAM又はDRAM)などのプロセッサメモリである。GPU106は、複数のテクスチャレジスタ156、定数レジスタ158、一時レジスタ160、及び並行処理構造を有する。
【0025】
暗号化/復号化システム100は、ROM、ハードドライブ、リムーバブルドライブ、又は他のコンピュータ可読記憶媒体などの記憶媒体108と通信することができる。暗号化/復号化システム100は、1つより多い記憶媒体108と通信することができる。例えば、実行可能プログラムは、ROM内に記憶することができ、データを暗号化するための情報は、フラッシュメモリデバイスなどの第1の可動メモリ内に記憶することができ、非暗号化データは、第2の可動メモリ内に記憶することができる。暗号化/復号化システム100はまた、コンピュータネットワークを含む他のシステムと通信するサーバー152に通信するように構成することができる。
【0026】
セットアッププログラム110は、暗号化、復号化、又はGPU復号視覚化のいずれかの組合せを行うように暗号化/復号化システム100を構成するためのセットアップ命令を有する。セットアッププログラム110は、システムメモリ104などの暗号化/復号化システム100内にあることができる。セットアッププログラム110はまた、暗号化/復号化システム100によって読み取られることになる記憶媒体108内、又はサーバー152と通信するデバイス内、或いは暗号化/復号化システム100によってアクセス可能な他のソースにあることができ、又はそうでなくてもよい。
【0027】
セットアップ命令200の1つのバージョンが図2に示されている。セットアップ命令200は、データを暗号化するか又は暗号文を復号化するかどうかを判断する段階を含む(動作202)。1つのバージョンでは、この判断は、暗号化を指示する第1信号、又は復号化を指示する第2信号を受け取ることに基づく。このような信号は、ユーザーインターフェース、暗号化/復号化システム100上で実行されるか又は該システムと通信するプログラム、セットアッププログラム110、又は他のソースから生じることができる。
【0028】
暗号化/復号化システム100がデータを暗号化する場合、非暗号化テクスチャ132が非暗号化データ112から作成され(動作204)、10個のラウンド鍵134が暗号鍵116から導出される(動作206)。非暗号化テクスチャ132、ラウンド鍵134、及び1つ又はそれ以上の暗号化プログラム130(a)は、GPU106にアップロードされる(動作208)。暗号化プログラム130(a)は、実施例としてRenderMan又はDirectXシェーダー言語で記述されたシェーダープログラムとすることができる。暗号化プログラムの1つのバージョン(Encryption.txt)は、本出願の付属文書に含まれる。
【0029】
図3は、暗号化に使用されるデータ300の実施例を示す。データ300は、実施例において一連の英数字(「HELLO_WORLD_12345_ABC123*_%_<_!_」)である非暗号化データ112と16バイトの暗号鍵116とを含む。GPU上での暗号化処理では、非暗号化データ112が、非暗号化テクスチャ132にパックされる。本実施例では、非暗号化テクスチャ132は、8個のテクセルを備え、1×1で第1の非暗号化テクセル308を含む4×2(列×行)テクスチャである。非暗号化テクスチャ132、従って各非暗号化テクセルは、赤チャンネル310、青チャンネル312、緑チャンネル314、及びアルファチャンネル316を有する。各英数字は、8ビットバイナリ値で表記される(理解しやすいように、図面では同等の16進数値が示されている)。例えば、第1の非暗号化テクセル308は、ASCII「H」(48hex)を有する赤チャンネル310、「E」(45)を有する青チャンネル312、「L」(4c)を有する緑チャンネル314、及び「L」(4c)を有するアルファチャンネル316を有する。
【0030】
非暗号化データ112は、暗号化/復号化システム100に伝達するか、或いは暗号化/復号化システム100が検索することができる。例えば、非暗号化データ112は、ユーザーインターフェースを介してユーザーによって暗号化/復号化システム100に伝達され、又は記憶媒体108から読み出され、或いはサーバー152もしくは他のデバイスから受け取ることができる。暗号鍵116はまた、種々の方法で暗号化/復号化システム100に伝達され、或いは暗号化/復号化システム100が検索することができる。
【0031】
暗号鍵116は、16個の8ビット(理解しやすいように、図面では同等の16進数値が示されている)バイトを含む。システムプロセッサ102は、暗号鍵116を10個の16バイト暗号化ラウンド鍵134に拡大するよう命令を実行することができる。
【0032】
暗号化プログラム130(a)の1つの実施は、ラインダール暗号化変換を実行するためにルックアップテーブルを利用する。ルックアップテーブルは、修正Sボックステーブル、XORテーブル、及びxXORテーブル(修正XTimeテーブル)を含むことができ、1つ又はそれ以上の暗号化ルックアップテクスチャ154にパックすることができる。図4は、65,536個のテクセルを有する256×256暗号化ルックアップテクスチャ400の実施例を示す。各テクセルは、赤チャンネル402、青チャンネル404、緑チャンネル406、及びアルファチャンネル408を有する。ルックアップテクスチャの1つのバージョンでは、修正Sボックステーブルは、アルファチャンネル408にパックされ、XORテーブルは青チャンネル406にパックされ、更にxXORテーブルは緑チャンネル404にパックされる。
【0033】
図5は、修正Sボックステーブル500の一部を示す。修正Sボックステーブル500は、00からffの範囲にわたる状態値に対応する行アドレス値502と、00からffの範囲にわたるラウンド鍵値に対応する列アドレス値504とを有する。修正Sボックステーブル500は、(b)ラインダールSボックスからの値に置き換えられたXOR演算の全ての結果として得られる値を有する各行及び列アドレス値ペアに対する(a)XOR演算テーブルである。例えば、状態値「02」506及びラウンド鍵値「03」508のXOR結果は、「01」である。ラインダールSボックスによると、「01」の置換値は、「ca」である。
【0034】
図6は、XORテーブル600の一部を示す。XORテーブル600は、00からffの範囲にわたる値に対応する行アドレス602と、00からffの範囲にわたる値に対応する列アドレス604とを有する。XORテーブル600は、各行及びアドレス値ペアに対する事前計算されたXOR演算テーブルを提供する。例えば、「02」606及び「03」608のXOR結果は「01」である。XORテーブル600は、以下に説明される暗号化用MixColumns変換アルゴリズムの値を得るために参照される。
【0035】
図7は、xXORテーブル700の一部を示す。xXORテーブル700は、修正XTime演算テーブルである。xXORテーブル700は、00からffの範囲にわたる「x」値に対応する行アドレス702と、00からffの範囲にわたる「y」値に対応する列アドレス704とを有する。要素は、式:xXOR(x,y)=X^(XTime(x^y))から得られ、ここでXTimeは、02による有限体乗算を意味し、^はXOR演算を意味する。言い換えると、xXORテーブルは、(a)各行及び列アドレスペアに対するXOR演算、(b)XOR演算結果に対しての02による有限体乗算、及び(c)行値と有限体乗算結果とのXOR演算から得られた値を有する要素が読み込まれる。例えば、x=01,708,及びy=03,706であれば、x^y=「02」;XTime(02)=「04」;及び01^04=「05」である。従って、xXORテーブル700の要素710は、「05」である。xXORテーブル700は、暗号化用のMixColumns変換アルゴリズムの値を得るために参照される。
【0036】
図2に関して上述され、更に図8に示されるように、暗号化用のセットアップ命令200の1つのバージョンの動作は、非暗号化テクスチャ132、ラウンド鍵134、少なくとも1つの暗号化プログラム130(a)、及びルックアップテクスチャ154をGPUにアップロードする段階800を含む。非暗号化テクスチャ132及びルックアップテクスチャ154は、GPUテクスチャレジスタ156にアップロードされ、ラウンド鍵134は、GPU定数レジスタ158にアップロードされる。
【0037】
GPU106は、システムプロセッサ102から受け取られた開始命令に応答して暗号化プログラム130(a)を実行する。図9は、暗号化プログラム130(a)の好ましいバージョンに従って行われる暗号化動作900を示す。16バイト状態ブロック136は、暗号化状態のための一時レジスタ160に保存される(動作902)。状態ブロック136は、非暗号化テクスチャ132からデータの16バイトの第1セットを受け取る(動作904)。状態ブロック136はまた、発生したときの暗号化変換の中間結果及び最終結果を保持する点に留意されたい。作成された状態ブロックの数は、GPUで実行中の暗号化プログラム130(a)の数に対応することができる。例えば、4つの並行プロセッサ上で実行中の4つの暗号化プログラム130(a)がある場合、4つの状態ブロックは、一時レジスタに保存されるのが好ましい。
【0038】
16バイトを有する第1ラウンド鍵は、第1ラウンドにおいてGPU定数レジスタからGPUによって参照される(動作906)。次のラウンド鍵は、次の各ラウンドについて参照される点に留意されたい。言い換えると、第1ラウンド鍵は、第1ラウンドに対して参照され、第2ラウンド鍵は、第2ラウンドに対して参照され、更に第3ラウンド鍵は、第3ラウンドに対して参照される、などである。
【0039】
暗号化変換は、2つの段階にグループ分けされる。第1段階908では、AddRoundKey/SubBytes、ShiftRows、及びMixColumns変換(912、914、及び916)が第2段階910に進む前に順次的に9回行われる。第1段階908が完了した後、10番目のラウンド鍵が参照される(動作924)。第2段階910は、AddRoundKey/SubBytes変換(動作912)、ShiftRows変換(動作914)、及び4つのテクセルのセットに対する最終暗号化変換であるAddRoundKey変換(動作924)を含む。最終AddRoundKey変換(動作924)の後、状態ブロック136は、ラインダール暗号文の16バイトを保持する。
【0040】
ここで暗号化変換について説明する。AddRoundKey/SubBytes変換(動作912)は、修正Sボックステーブル500への16個のルックアップを含む。各ルックアップは、16個の状態バイトとラウンド鍵バイトメンバーのペアの1つに対するものである。ラインダールAddRoundKeyステップと同様に、各ペアのメンバーは、ラウンド鍵と状態ブロックにおけるマッチングロケーションから発生する。例えば、列3、行2の状態バイトは、列3、行2でのラウンド鍵バイトとペアになっている。修正Sボックステーブル500における各ルックアップは、状態バイトに対応する行アドレス値502とラウンド鍵バイトに対応する列アドレス値504とを有する要素に対するものである。各検索されたバイトは、状態バイトの初期ロケーションに対してShiftRows変換(動作914)に対応するロケーションでの状態ブロックに書き込まれる。
【0041】
MixColumns変換(動作916)は、図10に示される例示的な状態1000を参照して最も良く説明される。例示的状態1000は、MixColumns変換の前に状態ブロックの値を保持する。例示的状態1000の行1002は、R1、R2、R3、及びR4で示され、列1004は、C1、C2、C3、及びC4で示されている。要素は、変数AからPで表わされる。MixColumns変換(動作916)を実行するための好ましいアルゴリズム(C1について表わされる)は、暗号化ルックアップテクスチャ400の幾つかのルックアップを利用する。アルゴリズムは、各列に対して行われる。
T=(A^E)^(I^M);列の全要素の中でXOR演算を行うためにXORテーブル600を3回参照する
U=A;列の第1行の初期値をセーブする
V=xXOR(A,E);Vを取得するためにxXORテーブル700を参照する
A=VT;1つのXOR演算に対してXORテーブル600を参照する
V=xXOR(E,I);Vを取得するためにxXORテーブル700を参照する
E=VT;1つのXOR演算に対してXORテーブル600を参照する
V=xXOR(I,M);Vを取得するためにxXORテーブル700を参照する
I=VT;1つのXOR演算に対してXORテーブル600を参照する
V=xXOR(M,U);Vを取得するためにxXORテーブル700を参照する
M=VT;1つのXOR演算に対してXORテーブル600を参照する
アルゴリズム1:暗号化のためのMixColumns変換
【0042】
第2段階910完了時、状態ブロック136からの暗号文のバイトは、4つのレンダーターゲットに書き込まれる(動作918)。状態ブロック136の第1列のバイトは、第1レンダーターゲット150(a)に書き込まれ、第2列のバイトは第2レンダーターゲット150(b)に書き込まれ、第3列のバイトは第3レンダーターゲット150(c)に書き込まれ、更に第4列のバイトは第4レンダーターゲット150(d)に書き込まれる。
【0043】
暗号化の状態が確定される(動作920)。暗号化が完了していない場合、非暗号化テクスチャ132における次の4つのテクセルからのデータバイトが状態ブロック136に書き込まれ(動作922)、第1ラウンド鍵がラウンド鍵定数レジスタから取得される(動作906)。暗号化変換段階が繰り返され、最終状態の暗号文が4つのレンダーターゲット150(a)−150(d)に書き込まれる。暗号化動作は、暗号化が完了するまで継続することができる。
【0044】
暗号化プログラムは、レンダーターゲット150(a)−150(d)からの暗号文を、記憶、記録、転送、又は他の目的のためシステムプロセッサ102にアップロードする別の動作(図示せず)を含むことができる。
【0045】
図1及び2を再度参照すると、セットアッププログラム110の1つのバージョンは、復号化動作を行うように暗号化/復号化システム100を構成するためのセットアップ命令を有する。暗号化テクスチャ138が暗号化データ114から作成され(動作210)、10個のラウンド鍵134が暗号鍵116から得られる(動作212)。暗号化テクスチャ138、10個のラウンド鍵134、及び1つ又はそれ以上の復号化プログラム130(b)は、GPUにアップロードされる(動作214)。復号化プログラム130(b)は、実施例としてRenderMan又はDirectXシェーダー言語のシェーダープログラムとすることができる。復号化プログラムの1つのバージョン(Decryption.txt)は、本出願の付属文書に含まれる。
【0046】
図11は、復号化の際に使用されるデータ1100の実施例を示す。データ1100は、この実施例では16個の8ビット値(01,f1,a2,63,5d,09,9b,63,bc,2a,fa,cb,e3,1d,07,c7)と、16バイト暗号鍵116とのセットである暗号化データ114とを含む。GPU上での復号化処理では、暗号化データ114が暗号化テクスチャ138にパックされる。本実施例では、暗号化テクスチャ138は、第1テクセル1102を含む4つのテクセルを備えた4×1テクスチャである。暗号化テクスチャ138(及び各暗号化されたテクセル)は、赤チャンネル1104、青チャンネル1106、緑チャンネル1108、及びアルファチャンネル1110を有する。例えば、第1の暗号化されたテクセル1102は、データ値「01」を有する赤チャンネル1104、データ値「f1」を有する青チャンネル1106、データ値「a2」を有する緑チャンネル1108、及びデータ値「63」を有するアルファチャンネル1110を有する。
【0047】
暗号化データ114は、暗号化/復号化システム100に伝達するか、或いは暗号化/復号化システム100が検索できることを理解されたい。例えば、暗号化データ114は、ユーザーインターフェースを介してユーザーによって暗号化/復号化システム100に伝達され、又は記憶媒体108から読み出され、或いはサーバー152もしくは他のデバイスから受け取ることができる。暗号鍵116はまた、種々の方法で暗号化/復号化システム100に伝達され、或いは暗号化/復号化システム100が検索することができる。
【0048】
暗号鍵116は、16個の8ビット(理解しやすいように、図面では同等の16進数値が示されている)バイトを含む。システムプロセッサ102は、暗号鍵116を10個の16バイト復号化ラウンド鍵134に拡大するように命令を実行することができる。
【0049】
好ましいバージョンでは、復号化プログラム130(b)は、ラインダール復号化変換を実行するために4つのルックアップテーブルを利用する。ルックアップテーブルは、XORテーブル、逆Sボックステーブル、xXORテーブル(第1の修正XTimeテーブル)、及びx−xXORテーブル(第2の修正XTimeテーブル)を含む。1つのバージョンでは、上述の暗号化ルックアップテクスチャ400はまた、復号化固有の青チャンネル406のXORテーブル600と緑チャンネル404のxXORテーブル700用に利用することができる。このバージョンでは、x−xXORテーブルは、暗号化ルックアップテクスチャ400の以前の未使用の赤チャンネル402にパックされる。
【0050】
図12は、x−xXORテーブルの一部を示す。x−xXORテーブル1200は、00からffの範囲にわたる行アドレス値「x」1202と、00からffの範囲にわたる列アドレス値「y」1204とを有する。要素が式:x−xXOR(x,y)=XTime(XTime(x^y))から得られ、ここでXTimeは、02による有限体乗算を意味し、^はXOR演算を意味する。言い換えると、x−xXORテーブルは、(a)各行及び列アドレスペアのXOR演算、(b)XOR演算結果((a)から)に対する02による第1有限体乗算、及び(c)第1有限体乗算結果((b)から)に対する02による第2有限体乗算から生じた値を有する要素が読み込まれる。例えば、行値x=「01」,1206及び列値y=「03」,1208であれば、x^y=「02」;XTime(02)=「04」;XTime(04)=「08」である。従って、x−xXORテーブル1200の要素1210は、「08」の値を有する。x−xXORテーブルは、以下に説明される復号化のためのInverseMixColumns変換アルゴリズムへの事前処理ステップの値を得るために参照される。
【0051】
図13に示される逆Sボックステーブル1300は、復号化ルックアップテクスチャ154のアルファチャンネルにパックすることができる。逆Sボックステーブル1300は、00からffの範囲にわたる値に対応するアドレス1302を有する1次元ルックアップテーブルである。逆Sボックステーブル1300は、ラインダールSボックスの逆ルックアップに対応する要素1304が読み込まれる。例えば、「a6」のSボックス置換は、「02」である。従って、逆Sボックステーブル1300では、値「02」、1308は、「a6」、1306に置換される。
【0052】
図2に関して上述されたように、復号化用のセットアップ命令200の1つのバージョンの動作は、暗号化テクスチャ138、ラウンド鍵134、及び少なくとも1つの復号化プログラム130(b)でGPU106をアップロードする段階を含む(動作214)。GPU106は、システムプロセッサ102から受け取られた命令に応答して復号化プログラム130(b)を開始する。
【0053】
図14は、復号化プログラム130(b)の好ましいバージョンに従って行われる復号化動作1400を示す。少なくとも1つの状態ブロック136は、復号状態用の一時レジスタ160に保存される(動作1402)。状態ブロック136は、暗号化テクスチャ138から暗号文の16バイトの最初のセットを受け取る(動作1404)。状態ブロック136はまた、発生したときの復号化変換の中間結果及び最終結果を保持することになる点に留意されたい。作成された状態ブロックの数は、GPU160で実行中の復号化プログラム(又は複数のプログラム)130(b)の数に対応するのが好ましい。
【0054】
16バイトを有する第1ラウンド鍵は、第1ラウンドに対してGPU定数レジスタ158から参照される(動作1406)。次のラウンド鍵は、次の各ラウンドに対して参照される点に留意されたい。言い換えると、第1ラウンド鍵は、第1ラウンドに対して参照され、第2ラウンド鍵は、第2ラウンドに対して参照され、第3ラウンド鍵は、第3ラウンドに対して参照される、などである。
【0055】
ここで復号化変換について説明する。AddRoundKey変換1408は、XORテーブル600への16個のルックアップを含む。各ルックアップは、16個の状態バイトとラウンド鍵バイトメンバーペアの1つに対するものである。ラインダールAddRoundKeyステップと同様に、各ペアのメンバーは、ラウンド鍵と状態ブロック136におけるマッチングロケーションから発生する。例えば、列3、行2の状態バイトは、列3、行2のラウンド鍵バイトとペアにされる。
【0056】
InverseMixColumns事前処理変換1410は、図10に示された例示的な状態1000を参照して最も良く説明することができる。例示的な状態1000は、InverseMixColumns事前処理変換1410の前に状態ブロックの値を保持する。InverseMixColumns事前処理変換1410を実行するための好ましいアルゴリズム(C2について表わされる)は、x−xXORテーブル1200とXORテーブル600への幾つかのルックアップを利用する。アルゴリズムは、各列に対して実行される。
u=x−xXOR(B^J)
v=x−xXOR(F^N)
B=B^u
F=F^v
J=J^u
N=N^v
アルゴリズム2:復号化用のInverseMixColumns事前処理変換
【0057】
InverseMixColumns変換のためのアルゴリズムは、上述の暗号化のMixColumns変換アルゴリズムと同じである。結果として得られるバイトは、InverseShiftRows変換1414に対応するロケーションで状態ブロック136に書き込まれる。詳細には、状態の第1行のバイトは変化しないままである。第2行のバイトは各々、右に1列シフトされ、第3行のバイトは各々右に2列シフトされ、第4行のバイトは各々右に3列シフトされる。
【0058】
InverseSubBytes変換1416は、逆Sボックステーブル1300を参照し、状態ブロック136の各バイトを対応する置換バイトと置き換える。
【0059】
復号化変換は、状態ブロック136に対して10回繰り返される。10回目の変換後、状態ブロック136は、非暗号化データの16バイトを含む。非暗号化データは、4つのレンダーターゲットに書き込まれる(動作1418)。状態の第1列のバイトは、第1レンダーターゲット150(a)に書き込まれ、状態の第2列のバイトは、第2レンダーターゲット150(b)に書き込まれ、状態の第3列のバイトは、第3レンダーターゲット150(c)に書き込まれ、状態の第4列のバイトは、第4レンダーターゲット150(d)に書き込まれる。
【0060】
復号の状態が確定される(動作1420)。復号が完了していない場合、暗号化テクスチャ138における次の4つのテクセルからのバイトが状態ブロック136に書き込まれ(動作1422)、第1ラウンド鍵がラウンド鍵定数レジスタ158から取得される(動作1406)。復号化変換段階が繰り返され、最終状態のデータは、4つのレンダーターゲット150(a)から150(d)に書き込まれる。復号化動作は、復号が完了するまで継続することができる。
【0061】
復号化プログラム130(b)は、レンダーターゲット150(a)−150(d)からのデータを、記憶、記録、転送、又は他の目的のためシステムプロセッサ102にアップロードするなどの別の動作を含むことができる。好ましいバージョンでは、データはシステムプロセッサ102にアップロードされず、代わりにGPU106によって視覚化される。視覚化は、生データを可読フォーマットでディスプレイデバイスに表示する技術である。
【0062】
図15は、データを視覚化するためにGPU106を準備する動作のバージョン1500を示す。システムプロセッサ102は、視覚化プログラム148、勾配テクスチャ140、ASCII又は他のタイプの文字テクスチャ142、及びリニアライザテクスチャ144をGPU106にアップロードする(動作1502)。システムプロセッサ102は、GPUの視覚化プログラム148の実行を開始する信号を供給する(動作1504)。視覚化プログラムの1つのバージョン(Visualization.txt)が、本出願の付属文書に含まれている。
【0063】
図16は、4×6勾配テクスチャの1つのバージョン140を示す。各チャンネルの値は、理解し易いように各画素において垂直にリストされている(r、g、b、α)。赤チャンネルの値は、列に沿って0から1に均一に増加し、緑チャンネルの値は、行の下方向に0から1に均一に増加する。青及びアルファチャンネルの値は、勾配テクスチャ全体を通じてゼロである。例えば、テクセル0×0 1602は、各チャンネルに対してゼロ値、又は(0,0,0,0)を有し、テクセル1×4は、赤チャンネル値=0.33及び緑チャンネル値=0.8、又は(0.33,0.8,0,0)を有する。4×6勾配テクスチャ140が示されているが(理解し易いように)、好ましいバージョンでは勾配テクスチャは8×20テクスチャである(図示せず)。好ましいバージョンでは、赤チャンネルの値は、0から1に列に沿って0.125の増分ずつ均一に増加し、緑チャンネルの値は、0.05の増分ずつ0から1に行の下方向に均一に増加する。
【0064】
図17は、1,016列及び20行を有するASCIIテクスチャ142の好ましいバージョンの一部を示している。各ASCII文字は、127文字スペースを提供する8列×20行を占める。ASCIIテクスチャ142の文字は、そのASCII値によってインデックスされる。例えば、文字「h」に対するASCII値は、104(dec)である。
【0065】
図18は、リニアライザテクスチャ(「L」)の1つのバージョン144を示す。リニアライザテクスチャ144は、赤(1,0,0,0)、緑(0,1,0,0)、青(0,0,1,0)、及び透明(0,0,0,1)のように4つのテクセルを有する。
【0066】
図19は、視覚化プログラム148の好ましいバージョンに従って行われる視覚化動作1900を示す。レンダーターゲット150(a)−150(d)からの復号化データが、図20に示されるデータテクスチャ(「DT1」から「DT4」)2002に書き込まれる(動作1902)。リニアライザは、係数4で拡大される(動作1904)。一時テクスチャ(「TT」)2100(図21)は、拡大されたリニアライザ及びデータテクスチャ2002に基づいて構成される(動作1906)。一時テクスチャ2100は、以下のシェーダー式に基づく。
TT=(ELr*DT1)+(ELg*DT2)+(ELb*DT3)+(ELα*DT4)
ここで、ELは拡大リニアライザであり、DTはデータテクスチャである。
式1:一時テクスチャ
【0067】
リニアライザはタイル状に並べられ(動作1908)、図22に示されるタイル状リニアライザ(「TL」)2200を生成する。
【0068】
データ値は、以下のドット積式を各テクセルの4つの値及びタイル状リニアライザ2200の各テクセルの4つの値に適用することによって、一時テクスチャ2100の各テクセルから抽出される(動作1910)。
OUTPUT DATA VALUE=Lr・TT.r+Lg・TT.g+Lb・TT.b+Lα・TT.α
ここで、Lはリニアライザであり、TTは一時テクスチャである。
式2:一時テクスチャテクセルとタイル状リニアライザテクセルのドット積
【0069】
例えば、データテクスチャ2002に基づいて、第1の5つの出力値は、
OUTPUT VALUE=104(「h」)
OUTPUT VALUE=101(「e」)
OUTPUT VALUE=108(「l」)
OUTPUT VALUE=108(「l」)
OUTPUT VALUE=110(「o」)
である。
【0070】
出力値は、ASCII文字のロケーションに対応するASCIIテクスチャ142の列へのインデックスを参照される(動作1912)。例えば、出力値「104」は、図17に示されるように832番目の列(8*104=832)にある文字「h」に対する第1テクセルにインデックスする。文字「h」に対する残りのテクセルは、勾配テクスチャ140の各赤及び緑テクセルからの値に基づいてASCIIテーブル142に更にインデックスすることによって得られる。インデックスの前に、勾配小数値は整数にスケール調整される。例えば、勾配テクスチャの好ましいバージョン(8×20)では、チャンネル値(0.25,0.2,0,0)を有するテクセルは、(2,4,0,0)にスケール調整される。オフセットとして「104」を使用して、勾配テクセル(2,4,0,0)は、ASCIIテクスチャ142からテクセル834×4の「h」領域にインデックスする。ASCII文字は、勾配テクスチャ140に基づく座標に従ってASCIIテクスチャのテクセルにアクセスすることによって、フレームバッファなどのディスプレイデバイスにレンダーされる。次の出力値(例えば、101,「e」)は、次のASCII文字をディスプレイデバイスにレンダーするために、ASCIIテクスチャ142の列に戻されるインデックスを参照される。従って、復号化データ値は、データ値をシステムプロセッサ102に伝達することなくGPU106によって視覚化される。
【0071】
記載されている特定の実施に関係なく、上述の全ては、限定ではなく実際には例示的なものである。例えば、実施の選択された態様、特徴、又は構成要素はメモリ内に記憶されるものとして示されているが、暗号化/復号化システムを達成するシステム及び方法の全て又は一部は、例えばハードディスク、フレキシブルディスク、及びCD−ROMなどの二次記憶デバイス、ネットワークから受信される信号、又は現在公知もしくは将来開発されるかROM又はRAMの他の形式である他の機械可読媒体上に記憶し、他の機械可読媒体に分散させ、或いは機械可読媒体から読み取ることができる。
【0072】
更に、暗号化/復号化システムの特定の構成要素について説明したが、本システムに適合する方法、システム、及び製造物品は、付加的な構成要素又は異なる構成要素を含むことができる。例えば、システムプロセッサは、マイクロプロセッサ、マイクロコントローラ、特定用途向け集積回路(ASIC)、ディスクリートロジック、或いは回路又はロジックの他のタイプの組み合わせとして実施することができる。同様に、メモリは、DRAM、SRAM、フラッシュ、又はいずれかの他のタイプのメモリとすることができる。パラメータ(例えば鍵)、データベース、テーブル、及び他のデータ構造は、別個に記憶及び管理することができ、又は単一のメモリもしくはデータベース内に組み込むことができ、或いは多くの様々な方法で論理的物理的に編成することができる。プログラムは、単一のプログラムの一部、別々のプログラム、或いは幾つかのメモリ及びプロセッサにわたって分散させることができる。
【0073】
本発明の種々の実施形態に関して説明してきたが、より多くの実施形態及び実施が本発明の範囲内で実施可能であることは当業者には明らかであろう。従って、本発明は、添付の請求項及びその均等物の観点以外で限定されるものではない。
【図面の簡単な説明】
【0074】
【図1】暗号化/復号化システムを示す図である。
【図2】図1の暗号化/復号化システムのセットアップ命令を示す図である。
【図3】非暗号化データ及び暗号鍵を含む暗号化データを示す図である。
【図4】ラインダール暗号化/復号化変換を実施するために使用するルックアップテーブルを有するチャンネルを備えた暗号化ルックアップテクスチャを表わす図である。
【図5】図4のルックアップテクスチャのチャンネルの修正ラインダールSボックスルックアップテーブルのサンプル領域を示す図である。
【図6】図4のルックアップテクスチャのチャンネルのXORルックアップテーブルのサンプル領域を示す図である。
【図7】図4のルックアップテクスチャのチャンネルのxXORルックアップテーブルのサンプル領域を示す図である。
【図8】システムプロセッサからの暗号化データ及びプログラムファイルをGPUにアップロードするためにシステムが行い得る動作を示す図である。
【図9】GPU上でデータを暗号化するためにシステムが行い得る動作を示す図である。
【図10】MixColumns変換の状態を示す図である。
【図11】暗号化データ及び暗号鍵を含む復号データの実施例を示す図である。
【図12】図4のルックアップテクスチャのチャンネルのx−xXORルックアップテーブルのサンプル領域を示す図である。
【図13】ルックアップテクスチャの逆Sボックスルックアップテーブルのサンプル領域を示す図である。
【図14】復号化プログラムが行う動作を示す図である。
【図15】復号化データをGPU上で視覚化するためのセットアップ命令を示す図である。
【図16】復号化データをGPU上で視覚化する際に使用される勾配テクスチャを示す図である。
【図17】復号化データをGPU上で視覚化する際に使用されるASCIIテクスチャを示す図である。
【図18】復号化データをGPU上で視覚化する際に使用されるリニアライザテクスチャを示す図である。
【図19】視覚化プログラムが行い得る動作を示す図である。
【図20】視覚化プログラムによって使用されるデータテクスチャに書き込まれた復号化データを示す図である。
【図21】復号化データをGPU上で視覚化する際に使用される一時テクスチャを示す図である。
【図22】復号化データをGPU上で視覚化する際に使用されるタイル状に並べられたリニアライザを示す図である。
【符号の説明】
【0075】
100 暗号化/復号化システム
102 システムプロセッサ
104 システムメモリ
106 グラフィック処理ユニット
108 記憶媒体
110 セットアッププログラム
112 非暗号化データ
114 暗号化データ
116 暗号鍵
130(a) 暗号化プログラム
130(b) 復号化プログラム
132 非暗号化テクスチャ
134 ラウンド鍵
136 状態ブロック
138 暗号化テクスチャ
140 勾配テクスチャ
142 ASCIIテクスチャ
144 リニアライザテクスチャ
148 視覚化プログラム
150(a)レンダーターゲット
150(b)レンダーターゲット
150(c)レンダーターゲット
150(d)レンダーターゲット
152 サーバー
154 ルックアップテクスチャ
156 テクスチャレジスタ
158 定数レジスタ
160 一時レジスタ

【特許請求の範囲】
【請求項1】
暗号化方法であって、
非暗号化テクスチャからの複数のデータバイトを有する状態ブロックをグラフィック処理ユニット(「GPU」)にロードする段階と、
GPU内の第1ルックアップテーブルを参照して、前記複数のデータバイト及び第1ラウンド鍵に基づいて複数の第1変換バイトを取得する段階と、
ShiftRows変換に従って前記複数の第1変換バイトを前記状態ブロックに書き込む段階と、
前記GPUにおける第2ルックアップテーブルと第3ルックアップテーブルの両方を参照して、前記状態ブロックの前記第1変換バイトに基づいて複数の第2変換バイトを取得する段階と、
を含む方法。
【請求項2】
前記第1ルックアップテーブルは、AddRoundKey及びSubBytes変換テーブルの組み合わせであることを特徴とする請求項1に記載の方法。
【請求項3】
前記第2ルックアップテーブルは、XORルックアップテーブルであり、前記第2ルックアップテーブルと前記第3ルックアップテーブルの両方を参照する段階が、MixColumns変換を実施することを特徴とする請求項1に記載の方法。
【請求項4】
前記状態ブロックがラインダール暗号文を含むまでGPUにおける暗号化変換を継続して実行する段階と、
前記ラインダール暗号文を少なくとも1つのレンダーターゲットに書き込む段階と、
を含む請求項1に記載の方法。
【請求項5】
システムプロセッサから前記GPUに前記第1、第2、及び第3ルックアップテーブルを有するルックアップテクスチャを伝達する段階を含む請求項1に記載の方法。
【請求項6】
前記データバイトを暗号化するため前記システムプロセッサと前記GPUとの間で通信を行い、前記ルックアップテクスチャ、前記非暗号化テクスチャ、前記第1ラウンド鍵を含む10個のラウンド鍵のセット、暗号化プログラム、及び暗号化を開始するコマンドを前記GPUにアップロードすることだけを行う段階を含む請求項5に記載の方法。
【請求項7】
非暗号化データから前記非暗号化テクスチャを生成する段階と、
前記第1ラウンド鍵を含む複数のラウンド鍵に暗号鍵を拡大する段階と、
前記複数のラウンド鍵を前記GPU内の定数レジスタに伝達する段階と、
暗号化プログラムを前記GPUに伝達する段階と、
を含む請求項1に記載の暗号化方法。
【請求項8】
前記第1、第2、及び第3ルックアップテーブルを参照するためのシェーダーコード命令を開始する段階を含む請求項1に記載の方法。
【請求項9】
前記暗号文をシステムプロセッサにアップロードする段階と、
前記暗号文をサーバーに送信する段階と、
を含む請求項4に記載の方法。
【請求項10】
非暗号化テクスチャから複数のデータバイトを有する状態レジスタをロードし、GPU内の第1ルックアップテーブルを参照して、前記複数のデータバイト及び第1ラウンド鍵に基づいて複数の第1変換バイトを取得し、ShiftRows変換に従って前記複数の第1変換バイトを前記状態レジスタに書き込み、更に前記GPUの第2ルックアップテーブルと第3ルックアップテーブルの両方を参照して、前記状態ブロック内の前記第1変換バイトに基づいて複数の第2変換バイトを取得するためのグラフィック処理ユニット(「GPU」)実行可能命令を有するコンピュータ可読記憶媒体。
【請求項11】
非暗号化データから前記非暗号化テクスチャを生成し、前記第1ラウンド鍵を含む複数のラウンド鍵に暗号鍵を拡大し、前記複数のラウンド鍵を前記GPUの定数レジスタに伝達し、前記第1ルックアップテーブル、前記第2ルックアップテーブル、及び前記第3ルックアップテーブルを有するルックアップテクスチャを前記GPUに伝達し、更に前記GPU実行可能命令を有する暗号化プログラムを前記GPUに伝達するためのプロセッサ実行可能命令を有することを特徴とする請求項10に記載のコンピュータ可読記憶媒体。
【請求項12】
グラフィック処理ユニット(「GPU」)と、
前記GPUと通信するシステムプロセッサと、
前記GPUと前記システムプロセッサとの間で通信して、前記システムプロセッサから前記GPUに、複数のデータバイト、第1ラウンド鍵を含む複数のラウンド鍵、ルックアップテクスチャ、暗号化プログラム、及び暗号化を開始するためのコマンドを有する非暗号化テクスチャをアップロードするためにだけ動作可能なセットアッププログラムと、
を備え、
前記暗号化プログラムは、前記GPU上でだけ暗号化動作を実行することによって前記データを暗号化するよう動作可能である、
ことを特徴とする暗号化システム。
【請求項13】
前記システムプロセッサと通信し、非暗号化データ及び暗号鍵を有するシステムメモリを備え、
前記セットアッププログラムが、前記暗号鍵に基づいて前記複数のラウンド鍵を生成し、前記非暗号化データに基づいて前記非暗号化テクスチャを生成するように動作可能である、
ことを特徴とする請求項12に記載の暗号化システム。
【請求項14】
AddRoundKeyとSubBytesの組み合わせ変換を実施するように構成された第1ルックアップテーブルと、
XOR演算を実施するように構成された第2ルックアップテーブルと、
第3ルックアップテーブルと、
を更に備え、
前記第2ルックアップテーブルと前記第3ルックアップテーブルは、MixColumns変換演算を共に実施するように構成されていることを特徴とする請求項12に記載の暗号化システム。
【請求項15】
前記ルックアップテクスチャは、前記第1、第2、及び第3ルックアップテーブルを含むことを特徴とする請求項14に記載の暗号化システム。
【請求項16】
前記暗号化プログラムは、前記非暗号化テクスチャから複数のデータバイトを有する状態ブロックをロードし、第1ルックアップテーブルを参照して、前記複数のデータバイト及び前記第1ラウンド鍵に基づいて複数の第1変換バイトを取得し、ShiftRows変換に従って前記複数の第1変換バイトを前記状態レジスタに書き込み、前記GPUにおける第2ルックアップテーブルと第3ルックアップテーブルの両方を参照して、前記状態ブロックの前記第1変換バイトに基づいて複数の第2変換バイトを取得し、更に前記GPUにおいて暗号化変換を継続的に実行して暗号文のブロックを取得するためにように動作可能である、
ことを特徴とする請求項12に記載の暗号化システム。
【請求項17】
前記暗号文のブロックを受け取るための複数のレンダーターゲットを備える、
ことを特徴とする請求項16に記載の暗号化システム。
【請求項18】
復号化システムであって、
グラフィック処理ユニット(「GPU」)と、
前記GPUと通信するシステムプロセッサと、
前記GPUと前記システムプロセッサとの間で通信して、前記システムプロセッサから前記GPUに、暗号文を有する暗号化テクスチャ、第1ラウンド鍵を含む複数のラウンド鍵、ルックアップテクスチャ、復号化プログラム、及び復号化を開始するためのコマンドをアップロードするよう動作可能なセットアッププログラムと、
を備え、
前記復号化プログラムは、前記GPU上でだけ復号化動作を実行することによって前記データを復号するよう動作可能である、
ことを特徴とするシステム。
【請求項19】
前記ルックアップテクスチャは、
AddRoundKey変換を実施するように構成された第1ルックアップテーブルと、
逆Sボックス置換変換を実施するための第2ルックアップテーブルと、
前記第1ルックアップテーブルと共にInverseMixColumns事前処理変換演算を実施するように構成された第3ルックアップテーブルと、
前記第1ルックアップテーブルと共にInverseMixColumns変換演算を実施するように構成された第4ルックアップテーブルと、
を含むことを特徴とする請求項18に記載の復号化システム。
【請求項20】
前記システムプロセッサと通信し、暗号化データ及び暗号鍵を有するシステムメモリを備え、
前記セットアッププログラムが、前記暗号鍵に基づいて前記複数のラウンド鍵を生成し、前記暗号化データに基づいて前記暗号化テクスチャを生成するように動作可能である、
ことを特徴とする請求項18に記載の復号化システム。

【図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

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate


【公開番号】特開2008−17489(P2008−17489A)
【公開日】平成20年1月24日(2008.1.24)
【国際特許分類】
【出願番号】特願2007−178193(P2007−178193)
【出願日】平成19年7月6日(2007.7.6)
【出願人】(504051087)アクセンチュア グローバル サーヴィシズ ゲゼルシャフト ミット ベシュレンクテル ハフツング (17)
【Fターム(参考)】