(57)【要約】【課題】  付加的なハードウエアコストを生ずることない実効的な暗号処理解決策を提供する。【解決手段】  グラフィック処理ユニットは、付加的なハードウエアコストを生ずることなく高速で実効のある暗号処理解決策が与えられるべく暗号処理を実行するようにプログラムされる。グラフィック処理ユニットは、多数の並列処理を取り扱うようにコンフィギュレーションされているアーキテクチャーを有するので、暗号処理を効率的に実施することができる。グラフィック処理ユニットにて実施される暗号処理は、浮動小数点演算及び整数演算の両方を行うことができるようにグラフィック処理ユニットをコンフィギュレーションすることにより、更に改善される。【選択図】図２
2007233381.tif 000002
【特許請求の範囲】
【請求項１】
メモリに記憶された暗号アプリケーションプログラムを実行する処理ユニットと、
グラフィックデータを処理するグラフィック処理ユニットと、
を備え、
前記暗号アプリケーションプログラムは、前記グラフィック処理ユニットにて実行されるべきワイド乗算ファンクションを呼び出すための命令を含む、
計算装置。
【請求項２】
前記暗号アプリケーションプログラムは、前記ワイド乗算ファンクションをコールする暗号ファンクションに対するコールを含む、請求項１に記載の計算装置。
【請求項３】
前記グラフィック処理ユニットは、メモリに記憶された装置ドライバに従って制御され、前記グラフィック処理ユニットにおいて前記ワイド乗算ファンクションを実行するための前記命令は、前記装置ドライバにて指定される、請求項２に記載の計算装置。
【請求項４】
前記グラフィック処理ユニットは、浮動小数点演算及び整数演算のためにコンフィギュレーションされている、請求項１に記載の計算装置。
【請求項５】
セキュリティートランザクションを処理するための方法において、
セキュリティートランザクション要求を受け取るステップと、
前記セキュリティートランザクション要求をグラフィック処理ユニットへルーティングするステップと、
前記グラフィック処理ユニットにて前記セキュリティートランザクション要求を処理するステップと、
を含む方法。
【請求項６】
前記セキュリティートランザクションは、認証トランザクションであり、前記セキュリティートランザクション要求を処理するステップは、暗号化キーを受け取る段階と、前記グラフィック処理ユニットを使用して前記暗号化キーを解読する段階と、前記暗号化キーが首尾よく解読されたというメッセージを送信する段階とを含む、請求項５に記載の方法。
【請求項７】
前記セキュリティートランザクションは、認証トランザクションであり、前記セキュリティートランザクション要求を処理するステップは、暗号化されたトランザクションデータを受け取る段階と、前記グラフィック処理ユニットを使用して前記暗号化されたトランザクションデータを解読する段階と、トランザクション応答メッセージを生成して暗号化し、前記暗号化されたトランザクション応答メッセージを送信する段階とを含む、請求項５に記載の方法。
【請求項８】
前記解読するステップは、前記グラフィック処理ユニットを使用してワイド乗算オペレーションを実行する段階を含む、請求項７に記載の方法。
【請求項９】
前記セキュリティートランザクションは、暗号化トランザクションであり、前記セキュリティートランザクション要求を処理するステップは、データを複数のデータブロックへと区分する段階と、前記グラフィック処理ユニットを使用して前記データブロックの各々を暗号化する段階と、前記暗号化されたデータブロックを暗号化されたデータセットへと併合する段階と、前記暗号化されたデータセットを送信する段階とを含む、請求項５に記載の方法。
【請求項１０】
前記セキュリティートランザクションは、解読トランザクションであり、前記セキュリティートランザクション要求を処理するステップは、暗号化されたデータセットを受け取る段階と、前記暗号化されたデータセットを複数のデータブロックへと区分する段階と、前記グラフィック処理ユニットを使用して前記暗号化されたデータブロックの各々を解読する段階と、前記解読されたブロックを解読されたデータセットへと組み合わせる段階と、受取り及び解読の成功の確認を送信する段階とを含む、請求項５に記載の方法。
【発明の詳細な説明】
【発明の分野】
【０００１】
[0001]本発明の分野は、一般的に、コンピュータシステムに関するものであり、特に、暗号処理のためのグラフィック処理ユニットに関するものである。
【関連技術の説明】
【０００２】
[0002]インターネットの普及と電子商取引の発展につれて、トランザクション及びデータ交換に対するセキュリティーを高速で安価な仕方で与えるための解決策の必要性が増大してきている。
【０００３】
[0003]毎日数百万というオンライン購入トランザクションを管理するオンラインショッピングサービスは、このような解決策を必要としている。典型的なオンライン購入トランザクションにおいては、セキュアソケットレーヤ（ＳＳＬ）が購入者とオンラインショッピングサービスとの間でトランザクション情報を交換するためのプロトコルとして使用される。このＳＳＬプロトコルは、非常に良好なセキュリティーを与えるものであるが、そのキー交換及び認証コンポーネントは、費用のかかる計算オペレーションを必要としている。この技術分野にて知られているこの種のオペレーションの一例としては、２０４８ビットまでのキー長さを使用するＲＳＡ公開鍵システムがある。その結果として、そのＳＳＬプロトコルを管理するために、セキュアトランザクションを行うサーバに相当な計算の負担がかけられてしまっていた。
【０００４】
[0004]また、インターネットのようにセキュリティー保証されていないネットワークを介して大量（例えば、テラバイト）のデータを交換する財務機構は、高速で安価なセキュリティーの保証されたデータトランスポート方法を必要としている。何故ならば、ＤＥＳ、３ＤＥＳ及びＡＥＳの如きバルク暗号化及び解読のための標準の方法は、計算のための費用が非常にかかるからである。
【０００５】
[0005]１つの従来の暗号化/解読インプリメンテーションは、ＲＳＡベースのキー交換及び認証を行うために必要とされる多数の乗算を含む暗号化/解読オペレーションのすべてのアスペクトを行うのに汎用マイクロプロセッサを使用する。このようなインプリメンテーションは、特殊なハードウエアを付加せずに通常のマイクロプロセッサを使用して行われうるという利点を有しているが、このような解決策は、そのマイクロプロセッサの乗算スループットが低いために性能が悪くなってしまうという欠点がある。
【０００６】
[0006]別の１つの従来のインプリメンテーションは、記述された乗算アルゴリズムを行うための特殊なロジックを与えるのに専用暗号化/解読ハードウエアカードを使用する。このハードウエアカードは、典型的には、その乗算アルゴリズムの各コンポーネントを汎用マイクロプロセッサよりも素早く行うための付加的な乗算ロジックを含む。しかしながら、このような解決策は、その種のハードウエアカードが非常に高価であるという欠点を有している。
【発明の概要】
【０００７】
[0007]本発明の実施形態によれば、暗号処理のためにグラフィック処理ユニットが使用される。グラフィック処理ユニットは、暗号処理を効果的に支援することができる。何故ならば、それは、通常のマイクロプロセッサよりもはるかに多くの多数のパラレル処理を取り扱うようにコンフィギュレーションされるアーキテクチャーを有しているからである。その上、ほとんどの計算装置にグラフィック処理ユニットが備えられるようになり、その結果として、付加的なハードウエアコストを生ずることなしに実効的な暗号処理解決策が提供される。
【０００８】
[0008]本発明の別の態様によれば、浮動小数点演算及び整数演算の両方を行うことのできるグラフィック処理ユニットが暗号処理のために使用される。一般的に、整数演算を行うことのできるグラフィック処理ユニットは、浮動小数点演算しか行うことのできないグラフィック処理ユニットに比べて、暗号処理に普通であるワイド乗算オペレーションをより効率的に行うことができる。また、整数演算を行うことのできるグラフィック処理ユニットは、浮動小数点演算しかできないグラフィック処理ユニットにはできないビットマニピュレーション（例えば、シフト、ローテーション）の如きバルク暗号化及び解読中に実行される特定のオペレーションを行うことができる。その結果として、暗号処理は、浮動小数点演算及び整数演算の両方を行うことのできるグラフィック処理ユニットを使用することにより更に改善されうる。
【０００９】
[0009]本発明は、また、オンライントランザクションを認証しグラフィック処理ユニットを使用してコンピュータネットワークを介して大量のデータを安全に交換するための方法を提供する。
【００１０】
[0010]オンライントランザクションを認証する方法は、本発明の１つの実施形態によれば、クライアントコンピュータからセキュアトランザクション要求を受け取り、それに応答して認証及び公開キーを送信するステップと、前記クライアントコンピュータから暗号化キーを受け取り、グラフィック処理ユニットを使用して前記暗号化キーを解読するステップと、前記暗号化キーが首尾よく解読されたというメッセージを前記クライアントコンピュータへ送信するステップとを含む。オンライントランザクションを認証する方法は、更に、前記クライアントコンピュータから暗号化トランザクションデータを受け取るステップと、前記グラフィック処理ユニットを使用して前記暗号化トランザクションデータを解読するステップと、トランザクション応答メッセージを暗号化し、該暗号化トランザクション応答メッセージを前記クライアントコンピュータへ送信するステップとを含むことができる。
【００１１】
[0011]コンピュータネットワークを介して大量のデータを安全に交換する方法は、本発明の１つの実施形態によれば、前記データを複数のデータブロックへと区分するステップと、前記グラフィック処理ユニットを使用して前記データブロックの各々を暗号化するステップと、前記暗号化データブロックを暗号化データセットへと併合するステップと、前記コンピュータネットワークを介して前記暗号化データセットを送信するステップとを含む。コンピュータネットワークを介して大量のデータを安全に交換する方法は、さらに、前記コンピュータネットワークを介して前記暗号化データセットを受け取るステップと、前記暗号化データセットを複数のデータブロックへと区分するステップと、前記グラフィック処理ユニットを使用して前記暗号化データブロックの各々を解読するステップと、前記解読ブロックを解読データセットへと組み合わせるステップと、前記コンピュータネットワークを介して受取り及び解読成功の確認を送信するステップとを含むことができる。
【００１２】
[0012]前述したような本発明の特徴について詳細に理解されうるように、前述のように簡単に要約的に述べた本発明について、添付図面に幾つかを例示している実施形態を参照してより特定的に以下説明する。しかしながら、添付図面は、本発明の典型的な実施形態のみを例示しているのであって、従って、本発明の範囲をこれに限定するようなものでなく、本発明は、他の等しく有効な実施形態をも含み得るものであることに注意されたい。
【詳細な説明】
【００１３】
[0019]図１は、本発明の１つの実施形態による計算装置１００を例示している。この計算装置１００は、グラフィックアダプタ１０２、グラフィック及びメモリコントローラハブ１０４（ある場合には「ノースブリッジ」と称される）、主メモリ１０６、中央処理装置（ＣＰＵ）１０８、入出力コントローラハブ１１０（ある場合には「サウスブリッジ」と称される）、ネットワークインターフェイス装置１１２、一連のハードドライブ１１４及び一連のＵＳＢ装置１１６を含む。グラフィックアダプタ１０２は、グラフィック処理ユニット（ＧＰＵ）１１７及びＧＰＵメモリ１１８を含む。ＧＰＵ１１７は、リンク１１９を介してＧＰＵメモリ１１８に結合される。グラフィック及びメモリコントローラハブ１０４は、リンク１２０、１２６、１２４及び１２２を通してそれぞれＣＰＵ１０８、主メモリ１０６、グラフィックアダプタ１０２及び入出力コントローラハブ１１０に結合される。入出力コントローラハブ１１０は、リンク１２８、１３０及び１３２を通してそれぞれネットワークインターフェイス装置１１２、一連のハードドライブ１１４及び一連のＵＳＢ装置１１６に結合される。
【００１４】
[0020]ここに例示する本発明の実施形態によれば、リンク１２０、１２２、１２４、１２６、１２８及び１３０は、高速シリアルバスリンク、例えば、ＰＣＩエクスプレス（ＰＣle）リンクである。本発明の別の実施形態では、他の型のリンクを使用できる。
【００１５】
[0021]ＧＰＵ１１７は、グラフィックデータを処理するようにコンフィギュレーションされ、高度のパラレルアーキテクチャーを有する。一実施形態では、ＧＰＵ１１７には１６の単一命令、多重データ（ＳＩＭＤ）処理装置があり、各ＳＩＭＤは、３２のスレッドを並列に処理することができる。また、ＧＰＵ１１７は、浮動小数点演算及び整数演算の両方を行うことができ、浮動小数点演算しかできない通常のＧＰＵに比べてより効率的に種々な型の暗号オペレーションを行う。
【００１６】
[0022]整数演算を行う能力を有しているので、ＧＰＵ１１７は、普通の暗号オペレーションである長い整数乗算の効率を改善する。長い整数乗算は、（ｉ）シングル幅−ダブル幅乗算プリミティブ、及び（ｉｉ）桁上げを伝搬させる効率的な方法を必要としており、ＧＰＵ１１７は、通常のＧＰＵよりもより効率的にこれらのオペレーションの両方を行うことができる。第１に、ＧＰＵ１１７は、通常のＧＰＵによって必要とされる整数−浮動小数点変換に関連したオーバーヘッドなしにシングル幅−ダブル幅乗算プリミティブを行う。第２に、ＧＰＵ１１７は、通常のＧＰＵにおいては利用できないアドウイズキャリーアウト(add-with-carryout)及びアドウイズキャリーイン(add-with-carryin)整数命令を使用することにより容易に桁上げ伝搬を取り扱う。
【００１７】
[0023]ＧＰＵ１１７は、また、通常のＧＰＵによって行うことのできないバルク暗号化及び解読に使用される特定のオペレーションを行うことができる。これらのオペレーションは、整数演算を行うことのできる処理ユニットを必要とし、シフト、ローテーション等の如きビットマニピュレーションステップを含む。
【００１８】
[0024]本発明の種々な実施形態によれば、ＧＰＵ１１７は、暗号処理を実施するようにプログラムされている。図２は、ＧＰＵ１１７が暗号処理を行えるようにする種々なソフトウエア層を例示している概念図である。それらソフトウエア層は、アプリケーションプログラム２０１、特殊ファンクションライブラリ２０２、マスライブラリ２０４及びＧＰＵ装置ドライバ２０６を含む。アプリケーションプログラム２０１は、暗号処理を必要とする暗号アプリケーションを開始させる。特殊ファンクションライブラリ２０２は、アプリケーションプログラム２０１によってコールされる暗号ファンクションを含む。マスライブラリ２０４は、暗号ファンクションによってコールされるマスファンクションを含む。ＧＰＵ装置ドライバ２０６は、マスライブラリ２０４におけるマスファンクションがＧＰＵ１１７によって実行できるようにするソフトウエアを含む。
【００１９】
[0025]例えば、暗号アプリケーションは、ここではワイド乗算と称されるワイド数の乗算を必要とする暗号化又は解読オペレーションを含む。このような場合において、暗号化又は解読特殊ファンクションは、特殊ファンクションライブラリ２０２からコールされ、そして、この暗号化又は解読特殊ファンクションは、マスライブラリ２０４からワイド乗算ファンクションをコールする。それから、そのワイド乗算ファンクションは、ＧＰＵ装置ドライバ２０６を通してＧＰＵ１１７によって実行される。ＧＰＵ装置ドライバ２０６は、ワイド乗算ファンクションを次のようにして実施するようにＧＰＵ１１７を制御する。ＧＰＵ１１７は、被乗数及び乗数を複数のより小さな被乗数及び乗数に分割し、より小さな乗算オペレーション（部分積生成オペレーション）を一連のスレッデッド乗算/累積オペレーションへと組織し、それらより小さな乗算/累積オペレーションを行い、各スレッドの結果の最終加算/シフトを実行し、それから、算術的に正しいワイド乗算結果を戻す。
【００２０】
[0026]Ｎビットで表される数は、その数に対する演算オペレーションを行う計算装置に関連して、もし、その計算装置ハードウエアがＭ＜Ｎの場合においてＭビット演算ロジックを支援するようにコンフィギュレーションされているならば、ワイド数であると考えられる。例えば、１２８ビット数は、３２ビットワイド演算ロジックユニットを有する計算装置においてワイド数であると考えられる。
【００２１】
[0027]暗号処理のためのＧＰＵ１１７の１つの使用例を図３に例示している。図３は、セキュアウエブサーバ３００が図１の計算装置１００のようにコンフィギュレーションされているセキュアウエブトランザクション環境を例示している。このような環境においては、オンライン顧客は、自分の計算装置３０４を使用してオンライン購入をするためインターネット３０８を通してセキュアウエブサーバ３００と通信する。
【００２２】
[0028]図４は、セキュアソケットレーヤ（ＳＳＬ）として知られるプロトコルに従って図３に例示された環境においてセキュアウエブトランザクションを処理するための方法ステップ４００のフローチャートを例示している。この方法は、セキュアウエブサーバ３００がクライアント計算装置３０４からセキュアトランザクション要求を受け取ることで開始される（ステップ４０２）。ステップ４０４において、セキュアウエブサーバ３００は、そのセキュアトランザクション要求に応答して、その認証及び公開キーを送信する。セキュアウエブサーバ３００がその認証及び公開キーを送信するとき、そのセキュアウエブサーバ３００は、クライアント計算装置３０４からセッションキーを受けとるのを待つ。セッションキーは、セキュアウエブサーバ３００によって与えられる公開キーを使用して暗号化される共有キーで構成される。このセッションキーがステップ４０６にて受け取られるとき、セキュアウエブサーバ３００は、クライアント計算装置３００へ送信された公開キーに関連付けられたプライベートキーを使用してそのセッションキーを解読する（ステップ４０８）。次に、セキュアウエブサーバ３００は、セッションキーが首尾よく解読されたというメッセージをクライアント計算装置３０４へ送信して、セキュアトランザクションがクライアント計算装置３０４から受け取られるのを待つ（ステップ４１０）。セキュアウエブサーバ３００がステップ４１２においてクライアント計算装置３０４からセキュアトランザクションを受け取るとき、セキュアウエブサーバ３００は、セッションキーを使用してステップ４１４にてそのセキュアトランザクションを解読する。それから、セキュアウエブサーバ３００は、トランザクション応答メッセージ（例えば、販売確認メッセージ）を生成し、セッションキーを使用してそのトランザクション応答を暗号化する。この方法は、セキュアサーバがステップ４１６にて暗号化されたトランザクション応答をクライアント計算装置３０４へ送信することで終わる。
【００２３】
[0029]暗号処理のためのＧＰＵ１１７の別の使用例を図５に例示している。図５は、計算装置５０４、５０８が図１の計算装置１００のようにコンフィギュレーションされているようなバルク暗号化/解読環境を例示している。このような環境においては、第１の計算装置５０４は、インターネット５１２を通してデータの大きなブロックを第２の計算装置５０８と交換する。セキュリティーを持たせるために、データの大きなブロックは、送信の前に第１の計算装置５０４によって暗号化され、受け取った後に第２の計算装置５０８によって解読される。
【００２４】
[0030]図６は、第１の計算装置５０４によってバルク暗号化を行い、第２の計算装置５０８によってバルク解読を行うための方法ステップ６００のフローチャートを例示している。この方法は、第１の計算装置５０４がバルク暗号化データセットをステップ６０２にて個々に暗号化される一連の暗号化ブロックへと区分することで開始される。ステップ６０４において、第１の計算装置５０４は、各暗号化ブロックを暗号化し、それから、ステップ６０６にて一連の暗号化された暗号化ブロックを統合された暗号化データセットへと併合させる。ステップ６０８において、第１の計算装置５０４は、その暗号化データセットを第２の計算装置５０８へ送信し、続いて、その第２の計算装置５０８は、ステップ６１０にてその暗号化データセットを解読ブロックへと区分する。ステップ６１２において、第２の計算装置５０８は、各解読ブロックを解読し、ステップ６１４にて、第２の計算装置５０８は、それら解読されたブロックを統合された解読データセットへと併合する。この方法は、ステップ６１６にて、暗号化されたデータが受け取られ首尾よく解読されたことを確認するメッセージを第１の計算装置５０４へ送ることで終わる。
【００２５】
[0031]本発明の幾つかの実施形態について説明したが、本発明は、本発明の基本的な範囲から逸脱せずに、他の種々な実施形態が考えられるものである。本発明の範囲は、特許請求の範囲の記載によって定められる。
【図面の簡単な説明】
【００２６】
【図１】本発明の１つの実施形態による計算装置を例示する。
【図２】グラフィック処理ユニットが暗号処理のために使用できるようにする種々なソフトウエア層を例示する概念図である。
【図３】典型的なセキュアウエブトランザクション環境を例示している。
【図４】セキュアウエブトランザクションを処理するための方法ステップのフローチャートを例示している。
【図５】典型的なバルク暗号化/解読環境を例示している。
【図６】バルク暗号化/解読を行うための方法ステップのフローチャートを例示している。
【符号の説明】
【００２７】
１００・・・計算装置、１０２・・・グラフィックアダプタ、１０４・・・グラフィック及びメモリコントローラ、１０６・・・主メモリ、１０８・・・中央処理装置、１１０・・・入出力コントローラハブ、１１２・・・ネットワークインターフェイス装置、１１４・・・ハードドライブ、１１６・・・ＵＳＢ装置、１１７・・・グラフィック処理ユニット、１１８・・・ＧＰＵメモリ、１１９、１２０、１２２、１２４、１２８、１３０、１３２・・・リンク、２０１・・・アプリケーションプログラム、２０２・・・特殊ファンクションライブラリ、２０４・・・マスライブラリ、２０６・・・ＧＰＵ装置ドライバ、３００・・・セキュアウエブサーバ、３０４・・・クライアント計算装置、３０８・・・インターネット、５０４・・・第１の計算装置、５０８・・・第２の計算装置、５１２・・・インターネット
【図１】
2007233381.tif 000003
【図２】
2007233381.tif 000004
【図３】
2007233381.tif 000005
【図４】
2007233381.tif 000006
【図５】
2007233381.tif 000007
【図６】
2007233381.tif 000008
【外国語明細書】
2007233381000001.pdf