(57)【特許請求の範囲】
【請求項１】
コプロセッサで実行される方法であって、
要求ユニットによって、セキュリティ・オペレーションのための複数の要求を、ホスト・メモリ中の要求待ち行列から順番通りに取り出す取り出し動作を行い、
前記要求ユニットによって、取り出した前記複数の要求を、複数の実行ユニットにそれらの可用性に基づいて分配し、
それらの複数の実行ユニットによって、セキュリティ・オペレーションのための前記複数の要求を処理し、
セキュリティ・オペレーションのための前記複数の要求の結果を、前記ホスト・メモリ内の位置に出力する出力動作にして、それら結果を出力する順番が、前記要求待ち行列から取り出した際の順番とは異なってもよい出力動作を行うことを含む、コプロセッサで実行される方法。
【請求項２】
複数の要求が、複数の異なるセキュア・ソケット・レイヤ・セッションに関係し、複数の要求は相互に依存しなくてよい請求項１に記載の方法。
【請求項３】
複数の要求の１つを処理する時間が、複数の要求の他の１つを処理する時間と異なってもよい請求項１に記載の方法。
【請求項４】
複数の実行ユニットのそれぞれが、複数の要求内の異なるタイプのセキュリティ・オペレーションのどれでも処理することができる請求項１に記載の方法。
【請求項５】
前記複数の要求の少なくとも１つとして、暗号解読オペレーション，暗号化オペレーション，ハッシュ・オペレーション，モジュラ・オペレーションを含む一群の基本的セキュリティ・オペレーションから選択した１つの基本的セキュリティ・オペレーションが含まれ、そして、複数の基本的セキュリティ・オペレーションを表すマクロ・セキュリティ・オペレーションが含まれ得る、ことを特徴とする請求項１に記載の方法。
【請求項６】
前記複数の要求の前記取り出し動作が、前記要求待ち行列から複数の要求を第１の直接メモリ・アクセス（ＤＭＡ）読取りオペレーションを使用して取り出すことを含み、さらに、前記ホスト・メモリからそれらの複数の要求に関係する入力データ構造を第２のＤＭＡ読取りオペレーションを使用して取り出すことを含む請求項１に記載の方法。
【請求項７】
前記複数の要求の前記結果の出力動作が、ＤＭＡ書込みオペレーションを使用して複数の要求の結果を出力することを含む請求項６に記載の方法。
【請求項８】
前記複数の要求の結果の、前記ホスト・メモリ内の位置への前記出力動作が、前記複数の要求の結果を、前記複数の要求に格納されているポインタに基づいて前記ホスト・メモリ内の位置に出力することを含む請求項１に記載の方法。
【請求項９】
前記複数の要求の結果の、前記ホスト・メモリ内の位置への前記出力動作が、前記ホスト・メモリ内の位置へ、要求の完了を示す完了コード値をセットすることを含む請求項１に記載の方法。
【請求項１０】
ホスト・プロセッサで実行される方法であって、
ホスト・メモリ内の要求待ち行列に、セキュリティ・オペレーションのための複数の要求を、順番通りに格納し、
前記複数の要求に関係するデータを、前記ホスト・メモリ内の複数の入力データ構造に格納し、
複数の出力データ構造にして、コプロセッサによって前記複数の要求の結果が書き込まれるべき複数の出力データ構造を、前記ホスト・メモリに構成し、当該コプロセッサが、前記要求待ち行列からの複数の要求の取り出しの順番とは異なる順番で結果を書き込むことができ、
前記複数の要求のそれぞれについて、前記ホスト・プロセッサでの実行のためにスレッドを構成し、各スレッドにおいて、当該要求に対応する出力データ構造に格納された完了コード値にして当該要求がコプロセッサによって完了したことを示す完了コード値が、定期的に確認されることを特徴とする、ホスト・プロセッサで実行される方法。
【請求項１１】
前記要求待ち行列に複数の要求を格納している動作中に、前記要求待ち行列がロックされる請求項１０に記載の方法。
【請求項１２】
前記要求待ち行列に格納されている前記複数の要求を、コプロセッサのメモリ位置に書き込むことをさらに含む請求項１０に記載の方法。
【請求項１３】
各スレッドが異なるセキュリティ・ソケット・レイヤ・セッションに関連付けられる請求項１０に記載の方法。
【請求項１４】
各スレッドは、他のスレッドの要求とは無関係に自己の要求に関して完了コードの値を確認する請求項１０に記載の方法。
【請求項１５】
前記複数の要求の少なくとも１つとして、暗号解読オペレーション，暗号化オペレーション，ハッシュ・オペレーション，モジュラ・オペレーションを含む一群の基本的セキュリティ・オペレーションから選択した１つの基本的セキュリティ・オペレーションが含まれ、そして、複数の基本的セキュリティ・オペレーションを表すマクロ・セキュリティ・オペレーションが含まれ得る、ことを特徴とする請求項１０に記載の方法。
【請求項１６】
セキュリティ・オペレーションのための複数の要求を処理する複数の実行ユニットを備え、前記複数の実行ユニットは、前記複数の要求の結果を、それらの複数の要求に格納されているポインタに基づいて、遠隔メモリ内にあって、それらの複数の要求に対応する複数の出力データ構造に出力するものであり、かつ、当該結果を、要求待ち行列から複数の要求の取り出しの順番とは異なる順番で出力することができ、
前記複数の実行ユニットに結合されている要求ユニットを備え、前記要求ユニットは、前記複数の要求の一部を前記遠隔メモリ内の要求待ち行列から取り出し、そして、前記複数の要求の一部に関連する入力データ構造を前記遠隔メモリから取り出し、且つ、取り出したそれらの要求を、前記複数の実行ユニットによる処理のために、前記実行ユニットにそれらの可用性に基づいて分配する、ことを特徴とするプロセッサ。
【請求項１７】
複数の要求が、複数の異なるセキュア・ソケット・レイヤ・セッションに関係し、複数の要求が相互に依存しなくてよい請求項１６に記載のプロセッサ。
【請求項１８】
複数の要求の１つを処理する時間が、複数の要求の他の１つを処理する時間と異なってよい請求項１６に記載のプロセッサ。
【請求項１９】
前記複数の実行ユニットのそれぞれが、複数の要求のセキュリティ・オペレーションの何れのタイプでも処理することができる請求項１６に記載のプロセッサ。
【請求項２０】
前記複数の要求の少なくとも１つとして、暗号解読オペレーション，暗号化オペレーション，ハッシュ・オペレーション，モジュラ・オペレーションを含む一群の基本的セキュリティ・オペレーションから選択した１つの基本的セキュリティ・オペレーションが含まれ、そして、複数の基本的セキュリティ・オペレーションを表すマクロ・セキュリティ・オペレーションが含まれ得る、ことを特徴とする請求項１６に記載のプロセッサ。
【請求項２１】
前記要求ユニットが、第１の直接メモリ・アクセス（ＤＭＡ）読取りオペレーションを使用して前記要求待ち行列から前記複数の要求を取り出し、更に、第２のＤＭＡ読取りオペレーションを使用して、複数の関連する入力データ構造を取り出す、ことを特徴とする請求項１６に記載のプロセッサ。
【請求項２２】
前記複数の実行ユニットが、ＤＭＡ書込みオペレーションを使用して、前記複数の要求の結果を前記複数の出力データ構造に出力する、ことを特徴とする請求項２１に記載のプロセッサ。
【請求項２３】
システム・バスに結合されているホスト・プロセッサを備え、
前記システム・バスに結合されているホスト・メモリを備え、このホスト・メモリには、セキュリティ・オペレーションのための複数の要求を、それらの順番通りに含む要求待ち行列と、前記複数の要求に関連するデータを含むための複数の入力データ構造と、前記複数の要求の処理からの結果を含むための複数の出力データ構造とが格納されており、
さらに、前記システム・バスに結合されているコプロセッサを備えてなるシステムであって、前記コプロセッサが、
セキュリティ・オペレーションのための複数の要求を処理する複数の実行ユニットを備え、前記複数の実行ユニットは、前記複数の要求の結果を、それらの複数の要求に格納されているポインタに基づいて、それらの複数の要求に対応する複数の出力データ構造に出力するものであり、かつ、それらの結果を、前記要求待ち行列からの複数の要求の取り出しの順番とは異なる順番で出力することができ、
前記複数の実行ユニットに結合されている要求ユニットを備え、前記要求ユニットは、前記複数の要求の一部を前記要求待ち行列から取り出し、そして、複数の要求の一部に関連する入力データ構造を前記ホスト・メモリから取り出し、且つ、取り出したそれらの要求を、前記複数の実行ユニットによる処理のために、前記実行ユニットにそれらの可用性に基づいて分配することを特徴とするを含むシステム。
【請求項２４】
複数の要求が複数の異なるセキュア・ソケット・レイヤ・セッションに関係し、複数の要求が相互に依存しなくてよい請求項２３に記載のシステム。
【請求項２５】
複数の要求の１つを処理する時間が、複数の要求の他の１つを処理する時間と異なってよい請求項２３に記載のシステム。
【請求項２６】
複数の実行ユニットのそれぞれが、複数の要求内の異なるタイプのセキュリティ・オペレーションの何れのタイプでも処理することができる請求項２３に記載のシステム。
【請求項２７】
前記複数の要求の少なくとも１つとして、暗号解読オペレーション，暗号化オペレーション，ハッシュ・オペレーション，モジュラ・オペレーションを含む一群の基本的セキュリティ・オペレーションから選択した１つの基本的セキュリティ・オペレーションが含まれ、そして、複数の基本的セキュリティ・オペレーションを表すマクロ・セキュリティ・オペレーションが含まれ得る、ことを特徴とする請求項２３に記載のシステム。
【請求項２８】
前記要求ユニットが、第１の直接メモリ・アクセス（ＤＭＡ）読取りオペレーションを使用して前記複数の要求を前記要求待ち行列から取り出し、更に、第２のＤＭＡ読取りオペレーションを使用して複数の関連する入力データ構造を取り出す、ことを特徴とする請求項２３に記載のシステム。
【請求項２９】
前記複数の実行ユニットが、ＤＭＡ書込みオペレーションを使用して、前記複数の要求の結果を前記複数の出力データ構造に出力する、ことを特徴とする請求項２８に記載のシステム。
【請求項３０】
プログラムを記録したコンピュータ読み取り可能な記録媒体であって、コンピュータによって実行されたときに、コンピュータが、
コンピュータで実現される要求ユニットによって、セキュリティ・オペレーションのための複数の要求を、ホスト・メモリ中の要求待ち行列から順番通りに取り出す取り出し動作を行い、
前記要求ユニットによって、取り出した前記複数の要求を、コンピュータで実現される複数の実行ユニットにそれらの可用性に基づいて分配し、
それらの複数の実行ユニットによって、セキュリティ・オペレーションのための前記複数の要求を処理し、
セキュリティ・オペレーションのための前記複数の要求の結果を、前記ホスト・メモリ内の位置に出力する出力動作にして、それら結果を出力する順番が、前記要求待ち行列から取り出した際の順番とは異なってもよい出力動作を行う、プログラムを記録したコンピュータ読み取り可能な記録体。
【請求項３１】
前記複数の要求が、複数の異なるセキュア・ソケット・レイア・セッションに関係し、複数の要求が相互に依存しなくてよい請求項３０に記載の記録媒体。
【請求項３２】
複数の要求の１つを処理する時間が、複数の要求の他の１つを処理する時間と異なってもよい請求項３０に記載の記録媒体。
【請求項３３】
複数の実行ユニットのそれぞれが、複数の要求内の異なるタイプのセキュリティ・オペレーションのどれでも処理することができる請求項３０に記載の記録媒体。
【請求項３４】
前記複数の要求の少なくとも１つとして、暗号解読オペレーション，暗号化オペレーション，ハッシュ・オペレーション，モジュラ・オペレーションを含む一群の基本的セキュリティ・オペレーションから選択した１つの基本的セキュリティ・オペレーションが含まれ、そして、複数の基本的セキュリティ・オペレーションを表すマクロ・セキュリティ・オペレーションが含まれ得る、ことを特徴とする請求項３０に記載の記録媒体。
【請求項３５】
前記複数の要求の取り出し動作が、前記要求待ち行列から複数の要求を第１の直接メモリ・アクセス（ＤＭＡ）読取りオペレーションを使用して取り出し、
第２のＤＭＡ読取りオペレーションを使用して、複数の要求に関係する入力データ構造を前記ホスト・メモリから取り出すことを含む請求項３０に記載の記録媒体。
【請求項３６】
前記複数の要求の前記結果の出力動作が、ＤＭＡ書込みオペレーションを使用して複数の要求の結果を出力することを含む請求項３５に記載の記録媒体。
【請求項３７】
前記複数の要求の結果の、前記ホスト・メモリ内の位置への前記出力動作が、前記複数の要求の結果を、前記複数の要求に格納されているポインタに基づいて前記ホスト・メモリ内の位置に出力することを含む請求項３０に記載の記録読媒体。
【請求項３８】
前記複数の要求の結果の、前記ホスト・メモリ内の位置への出力動作が、前記ホスト・メモリ内の位置へ、要求の完了を示す完了コード値をセットすることを含む請求項３０に記載の記録媒体。
【請求項３９】
プログラムを記録したコンピュータ読み取り可能な記録媒体であって、コンピュータによって実行されたときに、コンピュータが、
ホスト・メモリ内の要求待ち行列に、セキュリティ・オペレーションのための複数の要求を、順番通りに格納し、
前記複数の要求に関係するデータを、前記ホスト・メモリ内の複数の入力データ構造に格納し、
複数の出力データ構造にして、コプロセッサによって前記複数の要求の結果が書き込まれるべき複数の出力データ構造を、前記ホスト・メモリに構成し、当該コプロセッサが、前記要求待ち行列からの複数の要求の取り出しの順番とは異なる順番で結果を書き込むことができ、
前記複数の要求のそれぞれについて、前記ホスト・プロセッサでの実行のためにスレッドを構成し、各スレッドにおいて、当該要求に対応する出力データ構造に格納された完了コード値にして当該要求がコプロセッサによって完了したことを示す完了コード値が、定期的に確認されることを特徴とする、プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項４０】
前記要求待ち行列が、前記複数の要求を格納している動作中に、ロックされる請求項３９に記載の記録媒体。
【請求項４１】
前記要求待ち行列に格納されている前記複数の要求を、コプロセッサのメモリ位置に書き込むことをさらに含む請求項３９に記載の記録媒体。
【請求項４２】
各スレッドが、異なるセキュリティ・ソケット・レイヤ・セッションに関連する請求項３９に記載の記録媒体。
【請求項４３】
各スレッドは、他のスレッドの要求とは無関係に自己の要求に関して完了コードの値を確認する請求項３９に記載の記録媒体。
【請求項４４】
前記複数の要求の少なくとも１つとして、暗号解読オペレーション，暗号化オペレーション，ハッシュ・オペレーション，モジュラ・オペレーションを含む一群の基本的セキュリティ・オペレーションから選択した１つの基本的セキュリティ・オペレーションが含まれ、そして、複数の基本的セキュリティ・オペレーションを表すマクロ・セキュリティ・オペレーションが含まれ得る、ことを特徴とする請求項３９に記載の記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は処理の分野に関する。より詳細には、本発明はセキュリティ・コプロセッサのためのインターフェースに関する。
【０００２】
【従来の技術】
通信ネットワークおよびそのネットワークを使用するユーザの数は増加し続けている。さらに、インターネットを介したＢ２ＢおよびＢ２Ｃに関するオンライン販売も普及し続けている。また、在宅勤務者数も増加し続けている。オンライン販売と在宅勤務のどちらも、異なる通信ネットワークを通して送信している間に保護される必要のある個人データおよび機密データを典型的に伴う通信ネットワークを使用した例である。
【０００３】
したがって、セキュリティ・プロトコル（例えば、トランスポート・レイヤ・セキュリティ（ＴＬＳ）、セキュア・ソケット・レイヤ（ＳＳＬ）３．０、インターネット・プロトコル・セキュリティ（ＩＰＳｅｃ）等）は、遠隔システム間でのセキュア・セッションを確立するために発展してきた。これらのセキュリティ・プロトコルは、遠隔システムがメッセージ交換および計算によってセキュア・セッションを確立する方法を提供し、それによって、異なる通信ネットワークを横断して送信される機密データを安全に、かつ改ざんされずに保つことができる。
【０００４】
図１は、セキュア・セッションを確立するための２相によるクライアント／サーバ交換を示す。第１の相１０５であるセキュリティ・ネゴシエーション相では、ネットワーク要素１０１（クライアント）とネットワーク要素１０３（サーバ）とは、２つのネットワーク要素１０１と１０３の間でセキュリティをネゴシエーションするためにメッセージを交換する。セキュリティのネゴシエーションには、２つのネットワーク要素１０１と１０３が使用すべきアルゴリズム（例えば、ハッシング・アルゴリズム、暗号化アルゴリズム、圧縮アルゴリズム等）を決定することが含まれる。第２の相１０７であるキー交換相では、ネットワーク要素１０１と１０３はキー情報を交換する。第２の相１０７は、選択した公開キーアルゴリズムおよび受け取ったメッセージの認証に基づいてメッセージを交換するネットワーク要素１０１と１０３とを含んでいる。これら２相の特定の基本的なタスクは様々なセキュリティ・プロトコルによって異なるが、セキュア・セッションを確立するための基本的なタスクは、メッセージの受信、メッセージの送信、キーの生成、シークレットの生成、データのハッシング、データの暗号化、データの暗号解読、および乱数の計算を含むことができる。
【０００５】
セキュア・セッションを確立するためのタスクの実行はプロセッサ集中である。ネットワーク要素に対してホスト・プロセッサとして動作する汎用プロセッサは、これらのタスクを実行する場合、それらのタスクのために資源が消費されるのでネットワーク要素のシステム・パフォーマンスは損なわれることになる。不満足なシステム・パフォーマンスの結果は、ネットワーク要素の機能によって（例えば、ルーティング、スイッチング、サービス、ネットワーク接続された格納装置の管理等）様々な方法でネットワークおよびユーザに影響を与える。
【０００６】
ホスト・プロセッサから一部のタスクの負荷を軽減するためにコプロセッサが開発された。ホスト・プロセッサのための特定の基本タスク（例えば、データのハッシュ）を実行するために、いくつかのコプロセッサが開発された。タスク特有のコプロセッサを追加しても、大量のセキュア・セッションを確立するタスクの負荷はホスト・プロセッサから軽減されない。一代替形態は、それぞれが異なるタスクを実行する複数のコプロセッサをネットワークに追加することである。このような代替形態は、物理的な制約（例えば、カードを結合するためのスロット数）によって制限を受けるものであり、ホスト・プロセッサと複数のコプロセッサの間での複数の通信による問題を生じる。
【０００７】
セキュア・セッションを確立するために要求される複数のタスクを実行するために他のコプロセッサが開発された。コプロセッサが暗号オペレーション（例えば、暗号化または暗号解読）、キー・マテリアル生成オペレーション、およびハッシュ・オペレーションを実行することができると仮定する。例えば、サーバが、ＳＳＬ３．０セッションを確立するための要求を受け取ったと仮定する。サーバは、クライアントから受け取ったプリ・マスター・シークレットを暗号解読するためにコプロセッサを呼び出す必要がある。マスター・シークレットおよびキー・マテリアルを生成するために、ホスト・プロセッサはコプロセッサを２０回（ハッシュ・オペレーションにつき１回ずつ）呼び出す必要がある。単一のセキュア・セッションの確立の始めに、ホスト・プロセッサは複数タスクのコプロセッサを２１回呼び出した。この例で説明したように、複数タスクを実行することができるコプロセッサは、ホスト・プロセッサとコプロセッサの間における複数の通信の資源消費の問題は解決しない。
【０００８】
【発明が解決しようとする課題】
これらのコプロセッサを追加したにもかかわらず、セキュア・セッションの確立に伴い依然として大量の資源が消費される。セキュア・セッションの確立は、ホスト・プロセッサと、１つの複数タスク・コプロセッサまたは複数の単一タスク・コプロセッサの間の複数の通信によって生じる待ち時間によって損なわれる危険性がある。ＣＰＵとコプロセッサ間の複数の通信は、システム資源（例えば、バス資源、メモリ資源、クロック周期等）を消費する。システムに対する影響には、１）提供できるセキュア・セッションの数、２）システムが維持できる並行したセキュア・セッションの数が含まれる。
【０００９】
【課題を解決するための手段】
セキュリティ・オペレーションを処理する方法および装置について説明する。一実施態様では、プロセッサには、セキュリティ・オペレーションに対するいくつかの要求を処理するいくつかの実行ユニットが含まれる。いくつかの実行ユニットは、いくつかの要求に格納されているポインタに基づいて、遠隔メモリ内のいくつかの要求に関するいくつかの出力データ構造に対して、いくつかの要求の結果を出力するためのものである。いくつかの実行ユニットは、要求待ち行列内の要求の順番とは異なる順番で結果を出力することができる。プロセッサは、いくつかの実行ユニットに結合されている要求ユニットも含む。要求ユニットは、遠隔メモリ内の要求待ち行列からいくつかの要求の一部を取り出し、また、遠隔メモリからいくつかの要求の一部に対する関連付けられた入力データ構造を取り出すためのものである。さらに、要求ユニットは、いくつかの実行ユニットによる処理の可用性に基づいて、取り出した要求をいくつかの実行ユニットに分配する。
【００１０】
一実施態様は、ホスト・プロセッサ上で実行される方法である。この方法は、ホスト・メモリ内の要求待ち行列にセキュリティ・オペレーションに対するいくつかの要求を格納することを含むが、このいくつかの要求は要求待ち行列内の順番通りである。この方法は、セキュリティ・オペレーションに対するいくつかの要求に関係するデータを、ホスト・メモリ内のいくつかの入力データ構造に格納することを含む。この方法は、さらにホスト・メモリ内のいくつかの出力データ構造を割り振ることを含み、コプロセッサはセキュリティ・オペレーションに対するいくつかの要求の結果をいくつかの出力データ構造に書き込むためのものである。コプロセッサは、要求待ち行列内の順番とは異なる順番で結果を書き込むことができる。さらに、いくつかの要求のそれぞれに対して、ホスト・プロセッサ上で実行するためのスレッドが割り当てられるが、このスレッドは関連付けられた要求に関して出力データ構造に格納されている完了コードの値を定期的に確認する。この完了コードは、その要求がコプロセッサによって完了したことを示している。
【００１１】
一実施態様では、方法は、要求ユニットによってホスト・メモリからセキュリティ・オペレーションに対するいくつかの要求を取り出すことを含むが、このいくつかの要求はホスト・メモリ内の順番通りである。方法は、要求ユニットによってセキュリティ・オペレーションに対するいくつかの要求をいくつかの実行ユニットに分配することも含む。この分配は、いくつかの実行ユニットの可用性に基づいている。さらに、この方法は、いくつかの実行ユニットによってセキュリティ・オペレーションに対するいくつかの要求を処理することも含む。この方法は、ホスト・メモリ内の位置にセキュリティ・オペレーションに対するいくつかの要求の結果を出力することを含むが、結果を出力する順番は、ホスト・メモリ内の要求の順番とは異なってもよい。
【００１２】
【発明の実施の形態】
本発明の実施形態は、これらの実施形態を説明する以下の記述と添付の図面を参照することによって最もよく理解することができるであろう。本明細書に含まれる図面に対する付番方式では、図面内の所与の要素に対する先頭の番号を図面番号に関連付けている。例えば、ホスト・プロセッサ２０２は図２にあるはずである。しかし、異なる図面でも同一の要素に対しては同一の要素番号が付番されている。
【００１３】
セキュリティ・オペレーションを処理する方法および装置を説明する。以下の説明では、本発明の完全な理解を実現するために数多くの特定の細部が記述されている。しかし、本発明はこれら特定の細部なくしても実施することができることを理解されよう。また、本発明を不明瞭にすることを避けるため、周知の回路、構造および技術は示さない。記述した本発明の実施形態はＳＳＬ３．０プロトコルを引用しているが、代替形態は、ＩＰＳｅｃ、ＴＬＳ等の他のセキュリティ・プロトコルに適用することができる。
【００１４】
本明細書では、「セキュリティ・オペレーション」という用語は、基本的なセキュリティ・オペレーションであっても、マクロ・セキュリティ・オペレーションであってもよい。基本的なセキュリティ・オペレーションは、暗号解読オペレーション、暗号化オペレーション、ハッシュ・オペレーション、または値（例えば、シークレット、キー・マテリアル等）を生成するための一群の算術オペレーションであってよい。マクロ・セキュリティ・オペレーションは一群の基本的オペレーションである。
【００１５】
概要
本発明の一形態は、ホスト・プロセッサとセキュリティ・コプロセッサの間でのタスクと結果の通信であり、コプロセッサは複数の実行ユニットを有する。本発明の別の形態はタスクのタイプである。具体的には、コプロセッサが複数の実行ユニットを有する場合に、ホスト・プロセッサがセキュリティ・コプロセッサに転送することのできるマクロ・セキュリティ・オペレーションである。これらの２つの形態は共に使用することができる。例えば、一実施形態では、複数の実行ユニットを有するセキュリティ・コプロセッサは要求を受け取って、連続したフロー機構によって結果を供給する。受け取った要求は相互から独立して扱われ、複数の実行ユニットの使用可能な１つに順番通りに分配されるが、これらの要求はマクロ・セキュリティ・オペレーションである場合があり、完了するのに異なる時間を要する場合があり、順不同に完了され／戻される場合がある。これら２つの形態を共に使用することができるが、これらは相互に依存してはいない。すなわち、マクロ・セキュリティ・オペレーションは、ホスト・プロセッサとセキュリティ・コプロセッサの間でタスクおよび結果を通信するための異なる（例えば、従来技術による）技術と共に使用することができ、また、この逆も可能である。
【００１６】
システムの説明
図２は、本発明の実施形態による、セキュリティ・オペレーションを処理するシステムを示すブロック図である。図２には、ホスト・プロセッサ２０２、ホスト・メモリ２０４、コプロセッサ２１２、および要求処理ユニット２３４が含まれる。ホスト・プロセッサ２０２、ホスト・メモリ２０４、およびコプロセッサ２１２はシステム・バス２１０に結合されている。さらに、ホスト・プロセッサ２０２、ホスト・メモリ２０４、および要求処理ユニット２３４は相互接続されている。一実施形態では、要求処理ユニット２３４は、ホスト・メモリ２０４および／またはプロセッサ２０２に常駐することができ、ホスト・プロセッサ２０２内で実行することができるプロセスまたはタスクでよい。例えば、要求処理ユニット２３４は、ホスト・プロセッサによって実行されるコプロセッサからのドライバでよいが、このドライバはＯｐｅｎＳＳＬとインターフェースをとる。しかし、本発明の実施形態はこのように限定されるものではなく、要求処理ユニット２３４は記述された処理を実行する様々なタイプのハードウェア（例えばデジタル論理）であってよい。
【００１７】
ホスト・メモリ２０４は要求待ち行列２０６、入力データ２０８Ａ〜２０８Ｉ、および出力データ２０９Ａ〜２０９Ｉを格納する。要求待ち行列２０６は、待ち行列の観点で示され、記述される。しかし、本発明の実施形態はこのように限定されるものではなく、要求待ち行列２０６はコプロセッサ２１２に送信されるべき要求を格納するための他のどのようなタイプのデータ構造であってもよいが、これについては以下でより詳細に説明する。一実施形態では、要求待ち行列２０６は巡回待ち行列（リング・バッファ）である。一実施形態では、要求待ち行列２０６への書込ポインタは要求処理ユニット２３４によって維持され、要求待ち行列２０６への読取ポインタはコプロセッサ２１２の要求ユニット２１４によって維持される。したがって、要求処理ユニット２３４は、要求待ち行列２０６に要求を格納するときにその書込ポインタを増分し、要求ユニット２１４は、要求待ち行列２０６から要求を抽出するとき、または取り出すときにその読取ポインタを減分する。
【００１８】
さらに、入力データ２０８Ａ〜２０８Ｉと出力データ２０９Ａ〜２０９Ｉは表に示すようなデータ構造であるが、このようなデータは、オブジェクト指向環境のデータ・オブジェクトなど他のタイプのデータ構造でも格納することができる。一実施形態では、入力データ２０８Ａ〜２０８Ｉはホスト・メモリ２０４に連続して格納される。したがって、コプロセッサ２１２内の要求ユニット２１４は、１つの直接メモリ・アクセス（ＤＭＡ）読取りオペレーションを使用して複数の要求全体から入力データを抽出することができるが、これについては以下でより詳細に説明する。
【００１９】
要求処理ユニット２３４によって要求待ち行列２０６に挿入された要求は、要求のサイズに制約があるため、オペレーション・コードなどの命令、操作されるべきデータ、および要求待ち行列２０６内の要求に入れられないデータ（要求に関係する）を格納するホスト・メモリ２０４内の他の位置へのポインタを含むことができる。特に、要求待ち行列２０６内の要求は、入力データ２０８Ａ〜２０８Ｉの１つを指すことができる。一実施形態では、これらの要求は３２バイトのサイズである。要求のタイプは、図３から図８に関して以下で説明するマクロ・セキュリティ・オペレーションを含めて、異なるセキュリティ・オペレーションを含むことができる。さらに、このようなセキュリティ・オペレーションは、限定はしないが、（１）乱数を生成するための要求、（２）素数を生成するための要求、（３）モジューラ演算を実行するための要求、（４）ハッシュ・オペレーションを実行するための要求、（５）暗号化／暗号解読のためのキーを生成するための要求、（６）ハッシュ・メッセージ認証コード（Ｈ−ＭＡＣ）オペレーションを実行するための要求、（７）ハンドシェーク・ハッシュ・オペレーションを実行するための要求、および（８）終了／検証オペレーションを実行するための要求を含むことができる。
【００２０】
図３は、本発明の実施形態による、コプロセッサ２１２による処理のための要求形式の一例を示す。具体的には、図３は、オペレーション・コード３０２、サイズ３０４、パラメータ３０６、データ長３０８、データ・ポインタ３１０、および結果ポインタ３１２を含む要求形式３００を示す。オペレーション・コード３０２は、ハッシング、モジューラ演算等のためのｏｐ−ｃｏｄｅなどのコプロセッサ２１２によって実行されるべき異なるセキュリティ・オペレーションを識別するｏｐ−ｃｏｄｅを含む。サイズ３０４は、オペレーションのタイプに応じて、そのオペレーションに関係する様々なデータに対してサイズを定義することができる。例えば、モジューラ演算オペレーションに関するサイズ３０４は絶対値のサイズを含むことができ、あるいは、ハッシュ・オペレーションに関するサイズ３０４はハッシュされるべきデータのサイズを含むことができる。
【００２１】
サイズ３０４と同様に、パラメータ３０６は、オペレーションのタイプによって、オペレーションに関係する異なるデータを定義することができる。例えば、暗号化／暗号解読用のキー生成のオペレーションの場合、パラメータ３０６はそのキーに対するプリ・マスターの長さを定義することができる。パラメータ３０６をさらに説明すると、Ｈ−ＭＡＣオペレーションに関するオペレーションについては、パラメータ３０６はシークレットの長さを定義することができる。一実施形態では、パラメータ３０６は、特定のオペレーションに関しては未定義の状態で残される。
【００２２】
データ長３０８は、（要求内で）データ・ポインタ３１０によって示され、要求内で定義されたセキュリティ・オペレーションのためにコプロセッサ２１２にコピーされる、関連付けられた入力データ２０８Ａ〜２０８Ｉ内のデータ構造の長さを定義する。関連付けられた入力データ２０８Ａ〜２０８Ｉに格納され、データ・ポインタ３１０によって指し示されるデータ構造は、実行されるべきセキュリティ・オペレーションのタイプに応じて様々なデータを含むことができる。一実施形態では、所与のオペレーションに関してはこの追加データ構造は必要とされず、したがってデータ・ポインタ３１０は使用されない。例えば、乱数を生成するオペレーションの場合、入力データ２０８Ａ〜２０８Ｉには入力データは１つも格納されていない。このようなデータ構造に格納されるべきデータのタイプの説明に役立てるために、キー生成オペレーションの場合、データ構造はクライアント乱数、サーバ乱数、ラベルおよびプリ・マスター番号を含めることができる。
【００２３】
結果ポインタ３１２は、コプロセッサ２１２がデータ構造に出力結果を書き込むことができる場合、ホスト・メモリ２０４内の位置（出力データ２０９Ａ〜２０９Ｉの１つ）を定義する。一実施形態では、この書込みオペレーションはＤＭＡ書込みオペレーションによって実行される。さらに、一実施形態では、このデータ構造の最後に完了コードが入れられる（以下でさらに説明する）。説明に役立てるためにキー生成オペレーションにもう一度戻ると、関連付けられた出力データ２０９Ａ〜２０９Ｉに格納されているデータ構造は、マスター・キー、キー・マテリアル、および完了コードを含むことができる。
【００２４】
図２に戻って、コプロセッサ２１２は、相互に結合されているＰｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）ユニット２３０、ｌｉｇｈｔｅｎｉｎｇ  ｄａｔａ  ｔｒａｎｓｐｏｒｔ（ＬＤＴ）ユニット２３２、キーユニット２４４、要求ユニット２１４、ドアベル・レジスタ２２０、実行ユニット２１６Ａ〜２１６Ｉ、実行ユニット２１７Ａ〜２１７Ｉ、乱数ジェネレータ・ユニット２１８、および要求バッファ２２２を含む。さらに、ＰＣＩユニット２３０とＬＤＴユニット２３２はシステム・バス２１０に結合されている。ＰＣＩユニット２３０とＬＤＴユニット２３２は、コプロセッサ２１２とホスト・メモリ２０４の様々な構成要素、ホスト・プロセッサ２０２、および要求処理ユニット２３４の間で通信を実現する。ＰＣＩユニットとＬＤＴユニットがシステム・バスに結合するために使用される一実施形態が説明されているが、代替形態は様々なバスを使用することができる。
【００２５】
いくつかの実行ユニット２１６および２１７と、いくつかの乱数ジェネレータ・ユニット２１８は、限定するためではなく例示の目的で示されており、コプロセッサ２１２内にはこれらのユニットより少ない数でも多い数でも含むことができる。実行ユニット２１７Ａ〜２１７Ｉのより詳細な図面およびオペレーションを、図８に関連して以下で説明する。乱数ジェネレータ・ユニット２１８は、キーの生成のために乱数を生成する。キーユニット２４４は、様々なセキュリティ・オペレーションを処理するために後で使用することのできる、実行ユニット２１７Ａ〜２１７Ｉに対するキーをコプロセッサ２１２内にローカルに格納することができ、コプロセッサ２１２の外部にあるメモリからそのようなキーを取り出すことは必要としない。要求ユニット２１４は、ドアベル・レジスタ２２０に挿入された値に基づいて要求待ち行列２０６内の要求を抽出し、その要求を処理するために実行ユニット２１７Ａ〜２１７Ｉに分配するが、これについては以下でより詳細に説明する。要求バッファ２２２は、実行ユニット２１６〜２１７が処理するために要求ユニット２１４が抽出した要求を格納することができる。
【００２６】
マクロ・セキュリティ・オペレーション
図４は、本発明の一実施形態によるセキュアなＳＳＬ３．０セッションの確立の一例を示す図面である。図４では、クライアント４０１とサーバ４０３は、セキュア・セッションを確立するためにハンドシェーク・メッセージを交換する。サーバ４０３はコプロセッサ２１２に対してセキュリティ・オペレーション４０７、４０９、４２３、および４２５のセットを送る。ホスト・プロセッサ２１０からコプロセッサ２１２に送信されるセキュリティ・オペレーションのセットのそれぞれは、基本的なセキュリティ・オペレーションであっても、マクロ・セキュリティ・オペレーションであってもよい。図４に示した実施形態では、セキュリティ・オペレーション４０９、４２３、および４２５のセットはマクロ・セキュリティ・オペレーションである。各マクロ・セキュリティ・オペレーションは、コプロセッサ２１２の実行ユニット２１６〜２１７の１つによって実行される。
【００２７】
クライアント４０１は、最初にクライアント・ハロー・メッセージ４０５をサーバ４０３に送る。クライアント４０３は、任意選択で追加メッセージを送ることができる。サーバ４０３のホスト・プロセッサ２０１は、コプロセッサ２１２が実行すべき乱数セキュリティ・オペレーション４０７を呼び出す。乱数ジェネレータ２１８は、乱数オペレーション４０７に応答して一つまたは複数の乱数を生成し、格納する。本発明の一実施形態では、乱数オペレーション４０７は、単一の乱数を生成する基本的なセキュリティ・オペレーションである。本発明の別の実施形態では、乱数セキュリティ・オペレーションは、乱数のベクトルを生成するマクロ・セキュリティ・オペレーションである。本発明の代替形態では、ホスト・プロセッサ２０１は、コプロセッサ２１２とは別個に配置されている乱数ジェネレータ２１８が実行すべき乱数オペレーション４０７を呼び出す。本発明の別の実施形態では、乱数はセッションを確立する前に生成される。一つまたは複数の乱数が生成された後で、サーバ４０３はセキュリティ・ネゴシエーション・オペレーション４０９をコプロセッサ２１２に送る。
【００２８】
セキュリティ・ネゴシエーション・オペレーション４０９を実行した後、コプロセッサ２１２は蓄積されたハンドシェーク・メッセージ（クライアント・ハロー４０５およびいかなる任意選択のメッセージ）の部分ハッシュを作成する。サーバ４０３は、一つまたは複数の乱数と、コプロセッサ２１２によるセキュリティ・ネゴシエーション・オペレーション４０９の実行によって得られるデータとを使用して、クライアント４０１に送信されるメッセージのセットを作成する。サーバ４０３は、サーバ・ハロー・メッセージ４１１、証明書４１３、およびサーバのハロー終了メッセージ４１５を送る。本発明の別の実施形態では、追加の任意選択メッセージがクライアント４０１に送信される。
【００２９】
ＳＳＬ３．０のセキュア・セッションを確立するキー交換相では、クライアント４０１はクライアント・キー交換メッセージ４１７、暗号スペック変更メッセージ４１９、およびクライアント終了メッセージ４２１を送る。サーバ４０３がこのメッセージ４１７、４１９および４２１のセットを受け取った後、サーバ４０３上のホスト・プロセッサ２０１は、コプロセッサ２１２が実行すべきキー交換オペレーション４２３および終了オペレーション４２５を呼び出す。キー交換セキュリティ・オペレーション４２３を実行した結果、コプロセッサ２１２は１）暗号解読したプリ・マスター・シークレットと、２）マスター・シークレットおよびキー・マテリアルと、３）蓄積されたハンドシェーク・メッセージの部分ハッシュ（ハッシュされたクライアント・ハロー４０５およびメッセージ４１７、４１９および４２１のセット）とを作成する。終了オペレーション４２５を実行した結果、コプロセッサ２１２は、１）暗号解読したクライアントの終了メッセージと、２）クライアントの終了メッセージ４２１に対する終了ハッシュと、３）サーバの終了メッセージ４２９に対する終了ハッシュと、４）メッセージ認証コード（ＭＡＣ）付きの暗号化されたサーバの終了メッセージとを生成する。キー交換オペレーション４２３および終了オペレーション４２５からのデータを使用して、サーバ４０３は、１）クライアントから受け取ったメッセージを検証し、２）暗号スペック変更メッセージ４２７およびサーバの終了メッセージ４２９をクライアント４０１に送る。
【００３０】
図５は、本発明の一実施形態による図４に示したマクロ・セキュリティ・オペレーションのための基本的セキュリティ・オペレーションのグループを示す表である。「マクロ・セキュリティ・オペレーション」と標示された欄では、ネゴシエーション・セキュリティ・オペレーション４０７、キー交換オペレーション４０９、および終了オペレーション４２５が識別される。この表は、これらのマクロ・セキュリティ・オペレーションのそれぞれを実行するときに、コプロセッサ２１２の実行ユニット２１６〜２１７の１つが実行する基本的セキュリティ・オペレーションのグループを示している。セキュリティ・ネゴシエーション・オペレーション４０７を実行するときに、実行ユニット２１６〜２１７の１つは２つのハッシュ・オペレーションを実行する。キー交換オペレーション４０９を実行するために、実行ユニット２１６〜２１７の１つは１）暗号解読オペレーション、２）一群のモジューラ演算オペレーション、および３）２２のハッシュ・オペレーション（ＴＬＳに従ってセキュア・セッションを確立する場合は７８のハッシュ・オペレーション）を実行する。セキュリティ・ネゴシエーション・オペレーション４０７を実行するために、実行ユニット２１６〜２１７の１つは、本発明の一実施形態に従ってＳＳＬ３．０のための２３の基本的なセキュリティ・オペレーションを実行することになる。終了オペレーション４０９を実行するために、実行ユニット２１６〜２１７の１つは、１）暗号解読オペレーション、２）暗号化オペレーション、および３）１２のハッシュ・オペレーションを実行する。終了オペレーション４０７を実行する実行ユニット２１６〜２１７の１つは、１４の基本的なセキュリティ・オペレーションを実行する。
【００３１】
基本的なセキュリティ・オペレーションをマクロ・セキュリティ・オペレーションに関連付けることは、様々な方法で実施することができる。記述した発明の様々な実施形態は、セキュリティ・プロトコル、データ依存性等を含めることのできる要因にそれぞれ基づくマクロ・セキュリティ・オペレーションに対して基本的なセキュリティ・オペレーションをグループ化することができる。
【００３２】
図６は、本発明の一実施形態によるセキュア・セッションの確立の一例を示す図面である。図６では、図４で示したセキュア・セッションの確立に対して、マクロ・セキュリティ・オペレーションの異なる一実施形態を示す。図６では、マクロ・セキュリティ・オペレーション４０７、４０９および４２３ではなく、サーバ・フル・ハンドシェーク・オペレーション６０１が呼び出される。サーバ・フル・ハンドシェーク・マクロ・セキュリティ・オペレーション６０１は、サーバ４０３がクライアント４０１からメッセージ４１７、４１９および４２１のセットを受け取った後で呼び出される。単一呼び出しによって、コプロセッサ２１２（乱数の呼び出しは含まない）は、セキュア・セッションを確立するためにホスト・プロセッサ２０１に必須のデータを供給する。
【００３３】
図７は、本発明の一実施形態によるサーバ・フル・ハンドシェーク・オペレーション７０１のための一群の基本的オペレーションを示す表である。サーバ・フル・ハンドシェーク・オペレーション６０１を実行する実行ユニット２１６〜２１７の１つは、１）暗号解読オペレーション、２）暗号化オペレーション、３）モジュラ計算オペレーション、および４）３５のハッシュ・オペレーションの基本的なセキュリティ・オペレーションを実行する。したがって、この実行ユニットは、サーバ・フル・ハンドシェーク・オペレーション６０１を完了するために、約３９の基本的セキュリティ・オペレーションを実行する。このサーバ・フル・ハンドシェーク・オペレーション６０１の例では、クライアントの終了メッセージ４２１は暗号解読されない。クライアントの終了メッセージ４２１は暗号解読されないのは、予想されるクライアントの終了メッセージがコプロセッサ２１２によって作成されるからである。サーバ４０３は、実際にクライアントの終了メッセージ４２１を受け取る前に既にそのクライアントの終了メッセージ４２１の内容を認識しているので、予想されるクライアントの終了メッセージを作成し、それを使用して、受け取ったクライアントの終了メッセージ４２１を暗号解読せずにそのクライアントの終了メッセージ４２１を認証することができる。
【００３４】
クライアント・フル・ハンドシェーク・オペレーションは、予想されるサーバの終了メッセージを作成することができる。コプロセッサ２１２を有するクライアントは、クライアント・フル・ハンドシェーク・オペレーションによって、サーバ４０１からサーバの終了メッセージ４２９を受け取る前にセキュア・セッションを確立するための、コプロセッサ２１２に対する単一呼出しを実行することができる。
【００３５】
したがって、図４から７は、マクロ・セキュリティ・オペレーションを形成するために、基本的セキュリティ・オペレーションをグループ化することのできる方法のいくつかの例を示す。このような基本的セキュリティ・オペレーションのどのような組み合わせでも、本発明の範囲に含まれることを理解されたい。マクロ・セキュリティ・オペレーションによって、ホスト・プロセッサ２０１と、クライアント４０１またはサーバ４０３のコプロセッサ２１２との間で、限られた数の通信によるセキュア・セッションを確立することができる。通信数を少なくすることによってシステム資源の消費が低減される。システム資源の消費が低減されると、システム・パフォーマンスが低下することが防止される。さらに、セキュア・セッションをより高速に確立することができ、かつ、より多くのセキュア・セッションを維持することができる。具体的には、マクロ・セキュリティ・オペレーションの処理に要する処理量は基本的セキュリティ・オペレーションよりも多いので、セキュリティ・コプロセッサの様々な実行ユニットに対してオペレーションを割り当てると、その割り当てに伴うオーバーヘッドがあるにも係わらず、より多くのスループットが可能になる。
【００３６】
図８は、本発明の一実施形態による実行ユニット２１６〜２１７の１つを示す図面である。図８では、マイクロコード・ブロック８０１がマイクロコントローラ・ブロック８０３に結合されている。マイクロコントローラ・ブロック８０３は実行待ち行列ブロック８０５に結合されている。実行待ち行列ブロック８０５は基本的セキュリティ・オペレーション・ブロックのセットに結合されている。この基本的セキュリティ・オペレーション・ブロックには、拡張暗号化規格（ＡＥＳ）ブロック８０７、トリプル・データ暗号化規格（３ＤＥＳ）ブロック８０９、モジューラ指数(modular exponentiation)ブロック８１１、ハッシュ・ブロック８１３、単純算術および論理ブロック８１５、および仮定のＲＣ４（登録商標）ブロック８１９が含まれる。本発明の代替形態は、この基本的セキュリティ・オペレーション・ブロックにさらに基本的セキュリティ・オペレーション・ブロックを追加することも、これより少なくすることもできる。バス８２１は基本的セキュリティ・オペレーション・ブロック８０７、８０９、８１１、８１３、８１９と、レジスタ・ファイル・ブロック８１７を結合する。
【００３７】
マイクロコード・ブロック８０１は、セキュリティ・オペレーションを１つまたは複数の基本的セキュリティ・オペレーションに翻訳し、その１つまたは複数の基本的セキュリティ・オペレーションをマイクロコントローラ・ブロック８０３に渡す。マイクロコントローラ・ブロック８０３は、レジスタ・ファイル８１７から、それぞれの基本的セキュリティ・オペレーションに対して該当するデータを取り出す。基本的セキュリティ・オペレーションは、マイクロコントローラ・ブロック８０３によって実行待ち行列８０５に入れられる。ある基本的セキュリティ・オペレーションに対応する基本的セキュリティ・オペレーション・ブロックが、その基本的セキュリティ・オペレーションを実行することができるとき、実行待ち行列８０５はその基本的セキュリティ・オペレーションを該当する基本的セキュリティ・オペレーション・ブロック８０７、８０９、８１１、８１３、８１５、または８１９にプッシュする。基本的セキュリティ・オペレーション・ブロック８０７、８０９、８１１、８１３、８１５、または８１９によるその基本的セキュリティ・オペレーションの実行が完了すると、その基本的セキュリティ・オペレーション・ブロックは、その結果をレジスタ・ファイル８１７またはバス８２１に渡す。ホスト・プロセッサ２０１からの要求のセキュリティ・オペレーション（マクロまたは基本的セキュリティ・オペレーション）の結果は、実行ユニット２１６〜２１７によってＤＭＡ転送を使用してメイン・メモリの該当位置まで転送される。
【００３８】
一実施形態は、各実行ユニットが固有のマイクロコード・ブロックを有するように示しているが、代替形態は１つまたは複数の実行ユニットに単一マイクロコード・ブロックを共有させる。さらに別の実施形態は、中央マイクロコード・ブロック（例えば、ＳＲＡＭ）を有するが、その内容は、次回の電源投入時に実行ユニットのそれぞれの中にあるローカル・マイクロコード・ブロックにロードされる。１つまたは複数のマイクロコード・ブロックの構成に関係なく、特定の実施形態では、実行されるべきセキュリティ・オペレーション（マクロおよび／または基本的セキュリティ・オペレーション）を選択する上での柔軟性を考慮して、マイクロコード・ブロックは再プログラム可能である。
【００３９】
ストレージ・ファームへのルータ、スイッチ、アクセス等として動作するネットワーク要素は、１つまたは複数のセキュア・セッションを確立することができる。このネットワーク要素は、マクロ・セキュリティ・オペレーションによって、大量のシステム資源を消費することなく複数のセキュア・セッションを確立することができる。さらに、このセキュア・セッションはマクロ・セキュリティ・オペレーションによってさらに高速に確立することができる。
【００４０】
例えば、コプロセッサ２１２は、セキュアなＳＳＬ３．０セッションを確立するための３つの要求を受け取ることができる。サーバ・フル・ハンドシェーク・オペレーション７０１が実施される場合、ホスト・プロセッサ２０１は、コプロセッサ２１２を呼び出すことによってセキュア・セッションを確立することができる。実行ユニット２１６〜２１７は、その３つのオペレーションを並行して実行することができる。マクロ・セキュリティ・オペレーションのより細分化されたセットを、図４および図５に示すマクロ・セキュリティ・オペレーションに類似したサーバ上で実施することができる。例えば、図４および図５に示したマクロ・セキュリティ・オペレーションは、セキュア・セッションに対する２つの要求を既に受信しているサーバ４０３上で実施することができる。その２つの要求されたセッションのそれぞれに対してクライアント・キー交換オペレーション４２３を実行するためにホスト・プロセッサ２０１がコプロセッサ２１２を呼び出した後、サーバ４０３はセキュア・セッションに対する第３の要求を受け取る。この第３のセキュア・セッションに対するセキュリティ・ネゴシエーション・オペレーション４０９を実行するために、ホスト・プロセッサ２０１はコプロセッサ２１２を呼び出す。コプロセッサ２１２の要求ユニット２１４は、実行ユニット２１６〜２１７の２つに対して２つのクライアント・キー交換オペレーション４２３を発行した後で、実行ユニット２１６〜２１７の１つに対してセキュリティ・ネゴシエーション・オペレーション４０９を発行するが、セキュリティ・ネゴシエーション・オペレーション４０９を実行する実行ユニット２１６〜２１７の１つは、実行ユニット２１６〜２１７の別の２つがそれらのオペレーションの実行を完了する前に（セキュリティ・ネゴシエーション・オペレーション４０９がキー交換オペレーション４２３よりも短時間しか要しないと仮定して）、オペレーション４０９の実行を完了することになる。したがって、ホスト・プロセッサ２０１からのオペレーションは、実行ユニット２１６〜２１７に対して順番通りに発行することができるが、実行ユニット２１６〜２１７はそれらを順不同で完了することができる。
【００４１】
セキュア・セッションを確立するための機能を実行するためにコプロセッサ２１２を利用することによって、システムおよびそのホスト・プロセッサ２０１の効率が高められる。コプロセッサ２１２１は、消費されるホスト・プロセッサ２０１の資源を低減することによって、セキュア・セッションの確立を可能にする。より多くのセキュア・セッションをさらに高速に確立することができる。さらに、セキュリティ機能のために既に費やされた資源をホスト・プロセッサ２０１が使用することができるので、システムの全体的なパフォーマンスも高められることになる。これらのホスト・プロセッサ２０１の資源は、システム監視、トラフィック監視等に適用することができる。
【００４２】
さらに、実行ユニット２１６〜２１７の並行した順不同の特性は、セキュリティ・オペレーションを実施するために柔軟性を実現する。変化する顧客ニーズに合わせるために、様々な細分化レベルのマクロ・セキュリティ・オペレーションを実施することができる。順不同の完了を可能にする実施形態を示したが、代替形態は、要求の順番通りの完了を要求するためのハードウェアを含む。
【００４３】
一実施形態では、要求処理ユニット２３４はホスト・プロセッサが実行するコプロセッサ・ドライバである。本発明の一実施形態では、コプロセッサ・ドライバはＯｐｅｎＳＳＬの修正版とインターフェースをとる。ＯｐｅｎＳＳＬの修正版は、基本的セキュリティ・オペレーションとは反対に、マクロ・セキュリティ・オペレーションをドライバに伝達するように変更される。
【００４４】
要求処理ユニット２３４によるセキュリティ・オペレーションの処理
マクロ・セキュリティ・オペレーションを使用することによって、所与のセキュア・セッションに関するホスト・プロセッサとセキュリティ・コプロセッサとの間の通信数を減少させると、システム・パフォーマンスを高めることができるが、コプロセッサのアーキテクチャに対してより伝わり易いタスクおよび結果の伝達方法は、ホスト・プロセッサとセキュリティ・コプロセッサとの間におけるパフォーマンスを高めることができる。具体的には、既に指摘したように、本発明の別の形態は、コプロセッサが複数の実行ユニットを有する場合に、ホスト・プロセッサとセキュリティ・コプロセッサとの間でのタスクと結果の伝達である。より具体的には、連続的フロー可能なタスクの引き渡しおよび結果返還の機構が使用される。連続的フロー可能なタスクの引き渡しおよび結果返還の機構によって、ホスト・プロセッサは連続してタスクを追加することができ（待ち行列が満杯でない限り）、セキュリティ・コプロセッサは連続して結果を返還することができる（ホスト・プロセッサがセキュリティ・コプロセッサに別の作業ブロックを転送できる前にコプロセッサが完了すべき作業ブロックを必要とする機構とは反対に）。図２、９および１０は、非割込み駆動型の連続的フロー機構の一実施形態を説明しているが、代替形態は様々なフロー機構を使用することができる。
【００４５】
セキュリティ・オペレーションの処理をさらに説明するために、図９は、本発明の実施形態による要求処理ユニット２３４（図２を参照のこと）による要求の処理の流れ図を示す。方法９００は、処理ブロック９０２で、セキュリティ・オペレーションに対するいくつかの要求の１つを受け取ることから始まる。一実施形態では、この要求は、前述したマクロ・オペレーションおよび／または基本的オペレーションを含む。一実施形態では、処理ブロック９０４で、要求処理ユニット２３４は、その要求に関連するデータ、例えばセキュリティ・オペレーションに対するオペランドなどを入力データ２０８Ａ〜２０８Ｉの１つに格納する。特に、このデータは、要求待ち行列２０６への入口点に課されるサイズの制約のために要求待ち行列２０６の外部に格納するように要求することができる。一実施形態では、関連するデータのすべてを要求待ち行列２０６内の要求内に格納することができるので、追加データの格納は要求されない。
【００４６】
さらに、処理ブロック９０６で、要求処理ユニット２３４は、出力データ２０９Ａ〜２０９Ｉのメモリ空間を要求待ち行列２０６に格納されるべきそれらの要求に割り当てる。一実施形態では、要求処理ユニット２３４は、関連する出力データ２０９Ａ〜２０９Ｉ内の完了コードの値を、その要求が完了していないことを示す値にセットする。例えば、そのような一実施形態では、値０はその要求が完了したことを示し、したがって、要求処理ユニット２３４はこの値を非０の番号にセットする。
【００４７】
さらに、処理ブロック９０８で、要求処理ユニット２３４は要求待ち行列をロックする。したがって、このようにロックすることによって、他のユニットまたは処理が、要求待ち行列２０６への書込要求から除外される。要求待ち行列２０６をロックするために様々な技術を使用することができるが、一実施形態では、要求処理ユニット２３４は、セマフォーを使用したソフトウェア・ロックによって要求待ち行列２０６をロックする。処理ブロック９１０で、要求処理ユニット２３４は、１つまたは複数の要求を要求待ち行列２０６に追加する。図３を参照しながら既に述べたように、要求は、コプロセッサ２１２内のユニットが実行するべきオペレーション・コード、入力データ２０８Ａ〜２０８Ｉの１つに格納されているオペレーションに関係する他のデータを指すポインタ、および所与の要求の完了後にコプロセッサ２１２によって出力結果が入れられるホスト・メモリ２０４内の位置、例えば出力データ２０９Ａ〜２０９Ｉへのポインタを含むことができる。処理ブロック９１２で、要求処理ユニット２３４は、１つまたは複数の要求を追加した後で、要求待ち行列２０６をアンロックする。
【００４８】
処理ブロック９１４で、要求処理ユニット２３４は、要求待ち行列２０６に追加された１つまたは複数の要求の数をドアベル・レジスタ２２０（コプロセッサ２１２に配置される）に書き込む。一実施形態では、この書込みオペレーションは直接メモリ・アクセス（ＤＭＡ）書込みオペレーションによって実行される。レジスタとして記述したが、ドアベル・レジスタ２２０に格納されるべきデータは、コプロセッサ２１２内の他のいかなるタイプのメモリをも含むことができる。
【００４９】
処理ブロック９１６で、要求処理ユニット２３４は、ホスト・プロセッサ２０２上の実行のためのスレッドを生成することもできる。一実施形態では、スレッドは、ＳＳＬ３．０セッションなどの所与のセキュリティ・セッションに対して作成される。一実施形態では、要求処理ユニット２３４は、要求待ち行列２０６に挿入される要求ごとに異なるスレッドを作成する。処理ブロック９１８で、これらのスレッドは、関係する出力データ２０９Ａ〜２０９Ｉに格納されている完了コードを監視することによって、それらの関連する要求が完了したかどうかを確認する。
【００５０】
一実施形態では、要求処理ユニット３２４は、関連する要求が要求待ち行列２０６に入れられるとスレッドをスリープさせ、そのスレッドを起こすためにタイマーをセットする。したがって、そのスレッドは、処理を開始する際に、その要求が完了したかどうかを判定するために、関係する出力データ２０９Ａ〜２０９Ｉ内の完了コードを確認する。一実施形態では、要求処理ユニット２３４は、実行されるべき特定の要求に基づいてこのタイマーの値をセットする。例えば、乱数を生成するための第１の要求が、キー生成オペレーションへの第２の要求よりも短期間で、コプロセッサ２１２によって典型的に処理される場合、要求処理ユニット２３４はそれに従ってそれらのタイマーの値をセットする。すなわち、第１の要求は、第２の要求よりも短期間のタイマーを有するということである。一実施形態では、要求処理ユニット２３４は、所定の期間だけそのスレッドを起きた状態で保ち、その要求がその期間中に完了しなかったと判断した場合、そのスレッドをスリープさせる。一実施形態では、要求処理ユニット２３４は、所与の要求に対してコプロセッサ２１２が完了コードをセットする直前にブロックする。完了コードを確認するために要求処理ユニット１３４がスレッドを使用する実施形態を説明したが、代替形態は、他の機構を使用することができる（例えば、要求処理ユニット１３４は完了コードのそれぞれを確認することができる）。
【００５１】
一実施形態では、コプロセッサ１１２が要求を完了すると、関連するスレッドはその要求、関連する入力データ２０８および／または出力データ２０９をホスト・メモリ２０４から削除することができる。一実施形態では、要求が要求ユニット２１４から抽出されると、要求および関連する入力データ２０８は要求待ち行列２０６から削除されるが、出力データ２０９の内容を持ってスレッドが終了すると、関連するスレッドによって関連する出力データ２０９が削除される。
【００５２】
コプロセッサ２１２によるセキュリティ・オペレーションの処理
図１０は、本発明の実施形態によるコプロセッサ２１２が要求する処理の流れ図である。方法１０００は、処理ブロック１００２で、要求ユニット２１４によってドアベル・レジスタ２２０をポーリングすることから始まる。このドアベル・レジスタ２２０のポーリングは、１つの処理ブロックで示される。しかし、本発明の実施形態は、このように限定されるものではなく、このドアベル・レジスタ２２０のポーリングを定期的に実行することができ、したがって要求ユニット２１４は、他の処理ブロックに示されている機能が実行されている間にこのポーリングを実行することができる。例えば、要求ユニット２１４によるこのポーリングは、実行ユニット２１６〜２１７の１つが要求を処理しているのと同時に実行することができる（後述する処理ブロック１０１２において）。一実施形態では、要求ユニット２１４はすべてのクロック周期でドアベル・レジスタ２２０をポーリングする。
【００５３】
さらに、処理決定ブロック１００４で、要求ユニット２１４は、要求待ち行列２０６が要求を含むかどうかを、ドアベル・レジスタ２２０に格納されている値に基づいて判定する。要求ユニット２１４は、要求待ち行列２０６のサイズと位置を決定するために、コプロセッサ２１２にローカルないくつかのメモリ位置にアクセスすることができる。第１のメモリ位置は要求待ち行列２０６の基底アドレスであり、第２のメモリ位置は要求待ち行列２０６の長さである。一実施形態では、これらのメモリ位置はコプロセッサ２１２内のレジスタである。一実施形態では、要求処理ユニット２３４は、初期化中にこれらのメモリ位置を適切な値にセットする。
【００５４】
一実施形態では、要求処理ユニット２３４によってドアベル・レジスタ２２０に格納された値は、要求待ち行列２０６に追加された要求の数である（要求待ち行列２０６の合計要求数でなく）。したがって、要求待ち行列２０６に要求が含まれないと判定した場合、処理ブロック１００２で要求ユニット２１４はドアベル・レジスタ２２０を再度ポーリングする。反対に、要求待ち行列２０６に要求が含まれると判定した場合、処理ブロック１００６で、要求ユニット２１４は、要求待ち行列２０６の合計要求数でカウンタを更新する。一実施形態では、このカウンタは、レジスタなどの、コプロセッサ２１２内のローカル・メモリである。このカウンタの更新の説明に役立てるために、このカウンタに格納されている値が２５であり、ドアベル・レジスタ２２０が値５を有する場合、要求ユニット２１４はこれら２つの値を加算して（合計３０とし）、その和をカウンタに格納する。さらに、処理ブロック１００８で、要求ユニット２１４は、ドアベル・レジスタ２２０に格納されている値を０にリセットする。
【００５５】
しかし、本発明の実施形態は、このように限定されるものではなく、要求待ち行列２０６内の要求数を追跡する際に別の技術を採用することができる。例えば、一実施形態では、要求待ち行列２０６内の合計要求数を格納するために１つのメモリ位置が使用されるが、これは要求処理ユニット２３４および要求ユニット２１４の両方によって、例えば複数ユニットが単一メモリ位置を更新することを可能にするセマフォーを使用して更新することができる。
【００５６】
処理ブロック１００６では、要求ユニット２１４は、いくつかの実行ユニット２１６〜２１７の１つが要求を処理できるかどうか、かつ／またはコプロセッサ２１２の要求バッファ２２２内の空間が要求待ち行列２０６から抽出した要求を格納できるかどうかを判定する。特に、一実施形態では、実行ユニット２１６〜２１７の１つによって処理されるべき要求待ち行列２０６から受け取った要求を格納するためにコプロセッサ２１２は要求バッファ２２２を含む。図８に示す前述の実施形態のように、いくつかの実行ユニット２１６〜２１７のそれぞれは、このようなユニットに対して、限定はしないが前述のような（異なる要求の説明に関連して）オペレーションを含めて、いくつかの異なるセキュリティ・オペレーションを実行することを可能にするマイクロコードを含むか、またはそのようなマイクロコードに対するアクセス権を有する。すなわち、実行ユニット２１６〜２１７の所与の１つは、ハッシュ・オペレーションなどの所与の機能に限定されるものではないが、別の実行ユニット２１６〜２１７の１つはセキュリティ・オペレーションのためのキーの生成に限定される。そうではなく、いくつかの実行ユニット２１６〜２１７のそれぞれは、いくつかの異なる基本的およびマクロ・セキュリティ・オペレーションを実行することができる。
【００５７】
処理決定ブロック１０１０で、コプロセッサ２１２には要求をローカルに格納するために使用可能なバッファ空間がないかどうか、かつ／またはそのような要求を処理するために使用可能な実行ユニット２１６〜２１７があるかどうかを判定する際、要求ユニット２１４はこの使用可能なバッファ空間または実行ユニット２１６〜２１７に関して確認を続ける。一実施形態では、要求ユニット２１４は、コプロセッサ２１２内の実行ユニット２１６〜２１７または他の制御回路から受け取った信号からそのような可用性を判定することができる。反対に、要求をローカルに格納するために使用可能なコプロセッサ２１２内のバッファ空間、および／または、そのような要求を処理するために使用可能な実行ユニット２１６〜２１７があると判定した場合、処理ブロック１０１２で、要求ユニット２１４は要求待ち行列２０６から１つまたは複数の要求を取り出す。一実施形態では、要求ユニット２１４は、ＤＭＡ読取りオペレーションを使用して要求待ち行列２０６から１つまたは複数のそのような要求を取り出す。
【００５８】
さらに、処理ブロック１０１４で、要求ユニット２１４は、それらの要求に関する関連する入力データ２０８Ａ〜２０８Ｉをホスト・メモリ２０４から取り出す。一実施形態では、入力データ２０８Ａ〜２０８Ｉはホスト・メモリ２０４に連続して格納される。このような一実施形態では、要求ユニット２１４は、そのようなデータが連続して格納されているということから、単一ＤＭＡ読取を使用してこの関連する入力データ２０８Ａ〜２０８Ｉを取り出す。したがって、複数の要求をコプロセッサ２１２１に転送するためには２つのＤＭＡオペレーションだけでよく、したがって、所与のセキュリティ・オペレーションに関する全体の処理速度は向上する。
【００５９】
処理ブロック１０１６で、コプロセッサ内のユニット（要求ユニット２１４、実行ユニット２１６〜２１７、および乱数ジェネレータ・ユニット２１８を含む）は要求を処理する。要求ユニット２１４は、これらの取り出された要求を実行ユニット２１６〜２１７および乱数ジェネレータ・ユニット２１８に分配または与える。一実施形態において、各実行ユニット２１６〜２１７は、受け取った様々なタイプのいかなるセキュリティ・オペレーションでも処理することができるので、要求ユニット２１４は、そのような要求の処理のために使用可能な実行ユニット２１６〜２１７の第１の実行ユニットに要求を送ることができる。
【００６０】
処理ブロック１０１６で、所与の要求に関して、実行ユニット２１６〜２１７の１つが要求の処理を完了すると、この実行ユニット２１６〜２１７は、要求の結果ポインタ２１２（図３に示す）が指すホスト・メモリ２０４内の位置（出力データ２０９Ａ〜２０９Ｉの１つ）にこの要求の結果を格納する。要求内のオペレーションの実際の結果に加え、実行ユニット２１６〜２１７は完了コード内に値、例えば要求が完了したことを示す非０値などを書き込む。一実施形態では、実行ユニット２１６〜２１７は、ＤＭＡ書込みオペレーションを使用して結果および完了コードを書き込む。したがって、一実施形態では、所与の要求（要求に対するＤＭＡ読取、入力データに対するＤＭＡ読取、および出力結果に対するＤＭＡ書込を含む）に対して合計３つのＤＭＡオペレーションが必要となる。さらに、所与のＤＭＡオペレーションについてはホスト・メモリ２０４から複数の要求を読み取ることができるので、ＤＭＡオペレーションの合計数は約２に近づき、これによって、システム・バス２１０を介した全体のバス転送は限定される。このシステム・バス２１０を介したバス転送は、セキュリティ・オペレーションを処理するための時間の点で犠牲が大きくなる場合がある。
【００６１】
さらに、説明したように、様々なセキュリティ・オペレーションをそれぞれが実行することができ、かつ他の実行ユニットによって処理中の他のセキュリティ・オペレーションと関係なくこれを行うことができるいくつかの実行ユニットをコプロセッサ２１２が含むので、これらの要求は、要求待ち行列２０６内に要求があった順番とは異なる順番で実行および／または完了することができる（また、結果をホスト・メモリ２０４に出力する）。例えば、第１の要求は、第１のＳＳＬオペレーションに対するキー生成オペレーションを含むことができるが、第２の要求は、第２のＳＳＬセッションに対するモジューラ演算オペレーションを含むことができ、したがって、第１の要求は第２の要求よりも前に要求待ち行列２０６に格納され、かつ、そこから抽出される。通常、第２の要求は第１の要求よりもより高速に実行ユニット２１６〜２１７によって処理される。したがって、たとえ第１の要求が、要求待ち行列２０６内の要求の順番に基づいて最初にコプロセッサ２１２に送信されたとしても、第２の要求の処理は第１の要求の処理よりも前に完了することができる。
【００６２】
したがって、一実施形態は、要求がハードウェアによって相互から独立して扱われるように記述されている。完了の特別な順番を要する従属関係が任意の要求の間にある場合、その順番はこの実施形態ではソフトウェアによって断行される。しかし、代替形態は、要求の順番通りの完了を断行するハードウェアを含む。
【００６３】
本明細書で記述するメモリは、本明細書で記述する方法の任意の１つまたはそのすべてを実施する命令のセット（すなわち、ソフトウェア）が格納されている機械可読媒体を含む。ソフトウェアは、本明細書に記述するこのメモリ内および／またはプロセッサ内に、全体的にまたは少なくとも部分的に常駐することができる。本明細書のためには、「機械可読媒体」という用語は、機械（すなわち、コンピュータ）によって可読の形式で情報を供給する（すなわち、格納かつ／または送る）いかなる機構をも含むものと解釈される。例えば、機械可読媒体には、読取専用メモリ（「ＲＯＭ」）、ランダム・アクセス・メモリ（「ＲＡＭ」）、磁気ディスク格納媒体、光格納媒体、フラッシュ・メモリ装置、または電子式、光学式、音響式または他の形式の伝搬信号（例えば、搬送波、赤外線信号、デジタル信号、等）等が含まれる。
【００６４】
以上、セキュリティ・オペレーションを処理する方法および装置について説明した。本発明は特定の例示的実施形態を参照して説明したが、本発明のより広範な趣旨および範囲を逸脱せずに、これらの実施形態に対する様々な変形形態および変更が可能であることが明白になろう。例えば、代替形態では、ホスト・プロセッサは割込みによってセキュリティ・コプロセッサと通信することができるが、この際、ホスト・メモリと通信するためにセキュリティ・コプロセッサがＤＭＡオペレーションを使用することを可能にする。あるいは、セキュリティ・コプロセッサは、ホスト・プロセッサとの通信のために割込みを使用することができるが、ホスト・プロセッサは、コプロセッサとの通信のためにＤＭＡオペレーションを使用する。したがって、本明細書および図面は、限定的ではなく例示的なものと考慮されるべきである。
【図面の簡単な説明】
【図１】セキュア・セッションを確立するための２相のクライアント／サーバ交換を説明する図面である。
【図２】本発明の実施形態による、セキュリティ・オペレーションを処理するシステムを示すブロック図である。
【図３】本発明の実施形態による、コプロセッサ２１２による処理の要求形式の一例を示す図である。
【図４】発明の一実施形態によるセキュアなＳＳＬ３．０セッションの確立の一例を示す図面である。
【図５】発明の一実施形態による、図４に示したマクロ・セキュリティ・オペレーションに対する基本的なセキュリティ・オペレーションのグループを示す表である。
【図６】発明の一実施形態によるセキュア・セッションの確立の一例を示す図面である。
【図７】発明の一実施形態による、サーバのフル・ハンドシェーク・オペレーション７０１に対する一群の基本的なオペレーションを示す表である。
【図８】発明の一実施形態による、実行ユニット２１６〜２１７の１つを示す図面である。
【図９】本発明の実施形態による、要求処理ユニット２３４による要求処理の流れ図である。
【図１０】本発明の実施形態による、コプロセッサ２１２による要求処理の流れ図である。
【符号の説明】
２０２  ホスト・プロセッサ
２０４  ホスト・メモリ
２０６  要求待ち行列
２１０  システム・バス
２１２  コプロセッサ
２１４  要求ユニット
２１６Ａ〜２１６Ｉ  実行ユニット
【図１】
0004298971.tif 000002
【図２】
0004298971.tif 000003
【図３】
0004298971.tif 000004
【図４】
0004298971.tif 000005
【図５】
0004298971.tif 000006
【図６】
0004298971.tif 000007
【図７】
0004298971.tif 000008
【図８】
0004298971.tif 000009
【図９】
0004298971.tif 000010
【図１０】
0004298971.tif 000011