JP2003209543A - セキュア・セッションを確立する方法および装置 - Google Patents

セキュア・セッションを確立する方法および装置

Info

Publication number
JP2003209543A
JP2003209543A JP2002215552A JP2002215552A JP2003209543A JP 2003209543 A JP2003209543 A JP 2003209543A JP 2002215552 A JP2002215552 A JP 2002215552A JP 2002215552 A JP2002215552 A JP 2002215552A JP 2003209543 A JP2003209543 A JP 2003209543A
Authority
JP
Japan
Prior art keywords
operations
processor
security
data
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2002215552A
Other languages
English (en)
Inventor
Richard E Kessler
リチャード・イー・ケスラー
David A Carlson
ディビッド・エイ・カールソン
Muhammad Raghib Hussain
ムハマッド・ラヒブ・フセイン
Robert A Sanzone
ロバート・エイ・サンゾン
Khaja E Ahmed
カジャ・イー・アメッド
Michael D Varga
マイケル・ディー・バーガ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cavium LLC
Original Assignee
Cavium Networks LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cavium Networks LLC filed Critical Cavium Networks LLC
Publication of JP2003209543A publication Critical patent/JP2003209543A/ja
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/164Implementing security features at a particular protocol layer at the network layer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Advance Control (AREA)
  • Computer And Data Communications (AREA)

Abstract

(57)【要約】 【課題】 セキュリティ・コプロセッサのためのインタ
ーフェースを提供すること。 【解決手段】 セキュリティ・オペレーションを処理す
る方法と装置である。プロセッサは、セキュリティ・オ
ペレーションに対するいくつかの要求を処理するいくつ
かの実行ユニットを含む。これらの実行ユニットは、い
くつかの要求の結果を、その要求に格納されているポイ
ンタに基づいて、遠隔メモリ内の要求に関連する出力デ
ータ構造に出力する。この実行ユニットは、要求待ち行
列内の要求の順番とは異なる順番で結果を出力すること
ができる。プロセッサは実行ユニットに結合されている
要求ユニットも含む。要求ユニットは、要求の一部を遠
隔メモリ内の要求待ち行列から取り出し、要求の一部に
対する関連する入力データ構造を遠隔メモリから取り出
す。さらに、要求ユニットは、取り出した要求を実行ユ
ニットによる処理の可用性に基づいていくつかの実行ユ
ニットに分配する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は処理の分野に関す
る。より詳細には、本発明はセキュリティ・コプロセッ
サのためのインターフェースに関する。
【0002】
【従来の技術】通信ネットワークおよびそのネットワー
クを使用するユーザの数は増加し続けている。さらに、
インターネットを介したB2BおよびB2Cに関するオ
ンライン販売も普及し続けている。また、在宅勤務者数
も増加し続けている。オンライン販売と在宅勤務のどち
らも、異なる通信ネットワークを通して送信している間
に保護される必要のある個人データおよび機密データを
典型的に伴う通信ネットワークを使用した例である。
【0003】したがって、セキュリティ・プロトコル
(例えば、トランスポート・レイヤ・セキュリティ(T
LS)、セキュア・ソケット・レイヤ(SSL)3.
0、インターネット・プロトコル・セキュリティ(IP
Sec)等)は、遠隔システム間でのセキュア・セッシ
ョンを確立するために発展してきた。これらのセキュリ
ティ・プロトコルは、遠隔システムがメッセージ交換お
よび計算によってセキュア・セッションを確立する方法
を提供し、それによって、異なる通信ネットワークを横
断して送信される機密データを安全に、かつ改ざんされ
ずに保つことができる。
【0004】図1は、セキュア・セッションを確立する
ための2相によるクライアント/サーバ交換を示す。第
1の相105であるセキュリティ・ネゴシエーション相
では、ネットワーク要素101(クライアント)とネッ
トワーク要素103(サーバ)とは、2つのネットワー
ク要素101と103の間でセキュリティをネゴシエー
ションするためにメッセージを交換する。セキュリティ
のネゴシエーションには、2つのネットワーク要素10
1と103が使用すべきアルゴリズム(例えば、ハッシ
ング・アルゴリズム、暗号化アルゴリズム、圧縮アルゴ
リズム等)を決定することが含まれる。第2の相107
であるキー交換相では、ネットワーク要素101と10
3はキー情報を交換する。第2の相107は、選択した
公開キーアルゴリズムおよび受け取ったメッセージの認
証に基づいてメッセージを交換するネットワーク要素1
01と103とを含んでいる。これら2相の特定の基本
的なタスクは様々なセキュリティ・プロトコルによって
異なるが、セキュア・セッションを確立するための基本
的なタスクは、メッセージの受信、メッセージの送信、
キーの生成、シークレットの生成、データのハッシン
グ、データの暗号化、データの暗号解読、および乱数の
計算を含むことができる。
【0005】セキュア・セッションを確立するためのタ
スクの実行はプロセッサ集中である。ネットワーク要素
に対してホスト・プロセッサとして動作する汎用プロセ
ッサは、これらのタスクを実行する場合、それらのタス
クのために資源が消費されるのでネットワーク要素のシ
ステム・パフォーマンスは損なわれることになる。不満
足なシステム・パフォーマンスの結果は、ネットワーク
要素の機能によって(例えば、ルーティング、スイッチ
ング、サービス、ネットワーク接続された格納装置の管
理等)様々な方法でネットワークおよびユーザに影響を
与える。
【0006】ホスト・プロセッサから一部のタスクの負
荷を軽減するためにコプロセッサが開発された。ホスト
・プロセッサのための特定の基本タスク(例えば、デー
タのハッシュ)を実行するために、いくつかのコプロセ
ッサが開発された。タスク特有のコプロセッサを追加し
ても、大量のセキュア・セッションを確立するタスクの
負荷はホスト・プロセッサから軽減されない。一代替形
態は、それぞれが異なるタスクを実行する複数のコプロ
セッサをネットワークに追加することである。このよう
な代替形態は、物理的な制約(例えば、カードを結合す
るためのスロット数)によって制限を受けるものであ
り、ホスト・プロセッサと複数のコプロセッサの間での
複数の通信による問題を生じる。
【0007】セキュア・セッションを確立するために要
求される複数のタスクを実行するために他のコプロセッ
サが開発された。コプロセッサが暗号オペレーション
(例えば、暗号化または暗号解読)、キー・マテリアル
生成オペレーション、およびハッシュ・オペレーション
を実行することができると仮定する。例えば、サーバ
が、SSL3.0セッションを確立するための要求を受
け取ったと仮定する。サーバは、クライアントから受け
取ったプリ・マスター・シークレットを暗号解読するた
めにコプロセッサを呼び出す必要がある。マスター・シ
ークレットおよびキー・マテリアルを生成するために、
ホスト・プロセッサはコプロセッサを20回(ハッシュ
・オペレーションにつき1回ずつ)呼び出す必要があ
る。単一のセキュア・セッションの確立の始めに、ホス
ト・プロセッサは複数タスクのコプロセッサを21回呼
び出した。この例で説明したように、複数タスクを実行
することができるコプロセッサは、ホスト・プロセッサ
とコプロセッサの間における複数の通信の資源消費の問
題は解決しない。
【0008】
【発明が解決しようとする課題】これらのコプロセッサ
を追加したにもかかわらず、セキュア・セッションの確
立に伴い依然として大量の資源が消費される。セキュア
・セッションの確立は、ホスト・プロセッサと、1つの
複数タスク・コプロセッサまたは複数の単一タスク・コ
プロセッサの間の複数の通信によって生じる待ち時間に
よって損なわれる危険性がある。CPUとコプロセッサ
間の複数の通信は、システム資源(例えば、バス資源、
メモリ資源、クロック周期等)を消費する。システムに
対する影響には、1)提供できるセキュア・セッション
の数、2)システムが維持できる並行したセキュア・セ
ッションの数が含まれる。
【0009】
【課題を解決するための手段】セキュリティ・オペレー
ションを処理する方法および装置について説明する。一
実施態様では、プロセッサには、セキュリティ・オペレ
ーションに対するいくつかの要求を処理するいくつかの
実行ユニットが含まれる。いくつかの実行ユニットは、
いくつかの要求に格納されているポインタに基づいて、
遠隔メモリ内のいくつかの要求に関するいくつかの出力
データ構造に対して、いくつかの要求の結果を出力する
ためのものである。いくつかの実行ユニットは、要求待
ち行列内の要求の順番とは異なる順番で結果を出力する
ことができる。プロセッサは、いくつかの実行ユニット
に結合されている要求ユニットも含む。要求ユニット
は、遠隔メモリ内の要求待ち行列からいくつかの要求の
一部を取り出し、また、遠隔メモリからいくつかの要求
の一部に対する関連付けられた入力データ構造を取り出
すためのものである。さらに、要求ユニットは、いくつ
かの実行ユニットによる処理の可用性に基づいて、取り
出した要求をいくつかの実行ユニットに分配する。
【0010】一実施態様は、ホスト・プロセッサ上で実
行される方法である。この方法は、ホスト・メモリ内の
要求待ち行列内のセキュリティ・オペレーションに対す
るいくつかの要求を格納することを含むが、このいくつ
かの要求は要求待ち行列内の順番通りである。この方法
は、セキュリティ・オペレーションに対するいくつかの
要求に関係するデータを、ホスト・メモリ内のいくつか
の入力データ構造に格納することを含む。この方法は、
さらにホスト・メモリ内のいくつかの出力データ構造を
割り振ることを含み、コプロセッサはセキュリティ・オ
ペレーションに対するいくつかの要求の結果をいくつか
の出力データ構造に書き込むためのものである。コプロ
セッサは、要求待ち行列内の順番とは異なる順番で結果
を書き込むことができる。さらに、いくつかの要求のそ
れぞれに対して、ホスト・プロセッサ上で実行するため
のスレッドが割り当てられるが、このスレッドは関連付
けられた要求に関して出力データ構造に格納されている
完了コードの値を定期的に確認する。この完了コード
は、その要求がコプロセッサによって完了したことを示
している。
【0011】一実施態様では、方法は、要求ユニットに
よってホスト・メモリからセキュリティ・オペレーショ
ンに対するいくつかの要求を取り出すことを含むが、こ
のいくつかの要求はホスト・メモリ内の順番通りであ
る。方法は、要求ユニットによってセキュリティ・オペ
レーションに対するいくつかの要求をいくつかの実行ユ
ニットに分配することも含む。この分配は、いくつかの
実行ユニットの可用性に基づいている。さらに、この方
法は、いくつかの実行ユニットによってセキュリティ・
オペレーションに対するいくつかの要求を処理すること
も含む。この方法は、ホスト・メモリ内の位置にセキュ
リティ・オペレーションに対するいくつかの要求の結果
を出力することを含むが、結果を出力する順番は、ホス
ト・メモリ内の要求の順番とは異なってもよい。
【0012】
【発明の実施の形態】本発明の実施形態は、これらの実
施形態を説明する以下の記述と添付の図面を参照するこ
とによって最もよく理解することができるであろう。本
明細書に含まれる図面に対する付番方式では、図面内の
所与の要素に対する先頭の番号を図面番号に関連付けて
いる。例えば、ホスト・プロセッサ202は図2にある
はずである。しかし、異なる図面でも同一の要素に対し
ては同一の要素番号が付番されている。
【0013】セキュリティ・オペレーションを処理する
方法および装置を説明する。以下の説明では、本発明の
完全な理解を実現するために数多くの特定の細部が記述
されている。しかし、本発明はこれら特定の細部なくし
ても実施することができることを理解されよう。また、
本発明を不明瞭にすることを避けるため、周知の回路、
構造および技術は示さない。記述した本発明の実施形態
はSSL3.0プロトコルを引用しているが、代替形態
は、IPSec、TLS等の他のセキュリティ・プロト
コルに適用することができる。
【0014】本明細書では、「セキュリティ・オペレー
ション」という用語は、基本的なセキュリティ・オペレ
ーションであっても、マクロ・セキュリティ・オペレー
ションであってもよい。基本的なセキュリティ・オペレ
ーションは、暗号解読オペレーション、暗号化オペレー
ション、ハッシュ・オペレーション、または値(例え
ば、シークレット、キー・マテリアル等)を生成するた
めの一群の算術オペレーションであってよい。マクロ・
セキュリティ・オペレーションは一群の基本的オペレー
ションである。
【0015】概要 本発明の一形態は、ホスト・プロセッサとセキュリティ
・コプロセッサの間でのタスクと結果の通信であり、コ
プロセッサは複数の実行ユニットを有する。本発明の別
の形態はタスクのタイプである。具体的には、コプロセ
ッサが複数の実行ユニットを有する場合に、ホスト・プ
ロセッサがセキュリティ・コプロセッサに転送すること
のできるマクロ・セキュリティ・オペレーションであ
る。これらの2つの形態は共に使用することができる。
例えば、一実施形態では、複数の実行ユニットを有する
セキュリティ・コプロセッサは要求を受け取って、連続
したフロー機構によって結果を供給する。受け取った要
求は相互から独立して扱われ、複数の実行ユニットの使
用可能な1つに順番通りに分配されるが、これらの要求
はマクロ・セキュリティ・オペレーションである場合が
あり、完了するのに異なる時間を要する場合があり、順
不同に完了され/戻される場合がある。これら2つの形
態を共に使用することができるが、これらは相互に依存
してはいない。すなわち、マクロ・セキュリティ・オペ
レーションは、ホスト・プロセッサとセキュリティ・コ
プロセッサの間でタスクおよび結果を通信するための異
なる(例えば、従来技術による)技術と共に使用するこ
とができ、また、この逆も可能である。
【0016】システムの説明 図2は、本発明の実施形態による、セキュリティ・オペ
レーションを処理するシステムを示すブロック図であ
る。図2には、ホスト・プロセッサ202、ホスト・メ
モリ204、コプロセッサ212、および要求処理ユニ
ット234が含まれる。ホスト・プロセッサ202、ホ
スト・メモリ204、およびコプロセッサ212はシス
テム・バス210に結合されている。さらに、ホスト・
プロセッサ202、ホスト・メモリ204、および要求
処理ユニット234は相互接続されている。一実施形態
では、要求処理ユニット234は、ホスト・メモリ20
4および/またはプロセッサ202に常駐することがで
き、ホスト・プロセッサ202内で実行することができ
るプロセスまたはタスクでよい。例えば、要求処理ユニ
ット234は、ホスト・プロセッサによって実行される
コプロセッサからのドライバでよいが、このドライバは
OpenSSLとインターフェースをとる。しかし、本
発明の実施形態はこのように限定されるものではなく、
要求処理ユニット234は記述された処理を実行する様
々なタイプのハードウェア(例えばデジタル論理)であ
ってよい。
【0017】ホスト・メモリ204は要求待ち行列20
6、入力データ208A〜208I、および出力データ
209A〜209Iを格納する。要求待ち行列206
は、待ち行列の観点で示され、記述される。しかし、本
発明の実施形態はこのように限定されるものではなく、
要求待ち行列206はコプロセッサ212に送信される
べき要求を格納するための他のどのようなタイプのデー
タ構造であってもよいが、これについては以下でより詳
細に説明する。一実施形態では、要求待ち行列206は
巡回待ち行列(リング・バッファ)である。一実施形態
では、要求待ち行列206への書込ポインタは要求処理
ユニット234によって維持され、要求待ち行列206
への読取ポインタはコプロセッサ212の要求ユニット
214によって維持される。したがって、要求処理ユニ
ット234は、要求待ち行列206に要求を格納すると
きにその書込ポインタを増分し、要求ユニット214
は、要求待ち行列206から要求を抽出するとき、また
は取り出すときにその読取ポインタを減分する。
【0018】さらに、入力データ208A〜208Iと
出力データ209A〜209Iは表に示すようなデータ
構造であるが、このようなデータは、オブジェクト指向
環境のデータ・オブジェクトなど他のタイプのデータ構
造でも格納することができる。一実施形態では、入力デ
ータ208A〜208Iはホスト・メモリ204に連続
して格納される。したがって、コプロセッサ212内の
要求ユニット214は、1つの直接メモリ・アクセス
(DMA)読取オペレーションを使用して複数の要求全
体から入力データを抽出することができるが、これにつ
いては以下でより詳細に説明する。
【0019】要求処理ユニット234によって要求待ち
行列206に挿入された要求は、要求のサイズに制約が
あるため、オペレーション・コードなどの命令、操作さ
れるべきデータ、および要求待ち行列206内の要求に
入れられないデータ(要求に関係する)を格納するホス
ト・メモリ204内の他の位置へのポインタを含むこと
ができる。特に、要求待ち行列206内の要求は、入力
データ208A〜208Iの1つを指すことができる。
一実施形態では、これらの要求は32バイトのサイズで
ある。要求のタイプは、図3から図8に関して以下で説
明するマクロ・セキュリティ・オペレーションを含め
て、異なるセキュリティ・オペレーションを含むことが
できる。さらに、このようなセキュリティ・オペレーシ
ョンは、限定はしないが、(1)乱数を生成するための
要求、(2)素数を生成するための要求、(3)モジュ
ーラ演算を実行するための要求、(4)ハッシュ・オペ
レーションを実行するための要求、(5)暗号化/暗号
解読のためのキーを生成するための要求、(6)ハッシ
ュ・メッセージ認証コード(H−MAC)オペレーショ
ンを実行するための要求、(7)ハンドシェーク・ハッ
シュ・オペレーションを実行するための要求、および
(8)終了/検証オペレーションを実行するための要求
を含むことができる。
【0020】図3は、本発明の実施形態による、コプロ
セッサ212による処理のための要求形式の一例を示
す。具体的には、図3は、オペレーション・コード30
2、サイズ304、パラメータ306、データ長30
8、データ・ポインタ310、および結果ポインタ31
2を含む要求形式300を示す。オペレーション・コー
ド302は、ハッシング、モジューラ演算等のためのo
p−codeなどのコプロセッサ212によって実行さ
れるべき異なるセキュリティ・オペレーションを識別す
るop−codeを含む。サイズ304は、オペレーシ
ョンのタイプに応じて、そのオペレーションに関係する
様々なデータに対してサイズを定義することができる。
例えば、モジューラ演算オペレーションに関するサイズ
304は絶対値のサイズを含むことができ、あるいは、
ハッシュ・オペレーションに関するサイズ304はハッ
シュされるべきデータのサイズを含むことができる。
【0021】サイズ304と同様に、パラメータ306
は、オペレーションのタイプによって、オペレーション
に関係する異なるデータを定義することができる。例え
ば、暗号化/暗号解読用のキー生成のオペレーションの
場合、パラメータ306はそのキーに対するプリ・マス
ターの長さを定義することができる。パラメータ306
をさらに説明すると、H−MACオペレーションに関す
るオペレーションについては、パラメータ306はシー
クレットの長さを定義することができる。一実施形態で
は、パラメータ306は、特定のオペレーションに関し
ては未定義の状態で残される。
【0022】データ長308は、(要求内で)データ・
ポインタ310によって示され、要求内で定義されたセ
キュリティ・オペレーションのためにコプロセッサ21
2にコピーされる、関連付けられた入力データ208A
〜208I内のデータ構造の長さを定義する。関連付け
られた入力データ208A〜208Iに格納され、デー
タ・ポインタ310によって指し示されるデータ構造
は、実行されるべきセキュリティ・オペレーションのタ
イプに応じて様々なデータを含むことができる。一実施
形態では、所与のオペレーションに関してはこの追加デ
ータ構造は必要とされず、したがってデータ・ポインタ
310は使用されない。例えば、乱数を生成するオペレ
ーションの場合、入力データ208A〜208Iには入
力データは1つも格納されていない。このようなデータ
構造に格納されるべきデータのタイプの説明に役立てる
ために、キー生成オペレーションの場合、データ構造は
クライアント乱数、サーバ乱数、ラベルおよびプリ・マ
スター番号を含めることができる。
【0023】結果ポインタ312は、コプロセッサ21
2がデータ構造に出力結果を書き込むことができる場
合、ホスト・メモリ204内の位置(出力データ209
A〜209Iの1つ)を定義する。一実施形態では、こ
の書込オペレーションはDMA書込オペレーションによ
って実行される。さらに、一実施形態では、このデータ
構造の最後に完了コードが入れられる(以下でさらに説
明する)。説明に役立てるためにキー生成オペレーショ
ンにもう一度戻ると、関連付けられた出力データ209
A〜209Iに格納されているデータ構造は、マスター
・キー、キー・マテリアル、および完了コードを含むこ
とができる。
【0024】図2に戻って、コプロセッサ212は、相
互に結合されているPeripheral Compo
nent Interconnect(PCI)ユニッ
ト230、lightening data tran
sport(LDT)ユニット232、キーユニット2
44、要求ユニット214、ドアベル・レジスタ22
0、実行ユニット216A〜216I、実行ユニット2
17A〜217I、乱数ジェネレータ・ユニット21
8、および要求バッファ222を含む。さらに、PCI
ユニット230とLDTユニット232はシステム・バ
ス210に結合されている。PCIユニット230とL
DTユニット232は、コプロセッサ212とホスト・
メモリ204の様々な構成要素、ホスト・プロセッサ2
02、および要求処理ユニット234の間で通信を実現
する。PCIユニットとLDTユニットがシステム・バ
スに結合するために使用される一実施形態が説明されて
いるが、代替形態は様々なバスを使用することができ
る。
【0025】いくつかの実行ユニット216および21
7と、いくつかの乱数ジェネレータ・ユニット218
は、限定するためではなく例示の目的で示されており、
コプロセッサ212内にはこれらのユニットより少ない
数でも多い数でも含むことができる。実行ユニット21
7A〜217Iのより詳細な図面およびオペレーション
を、図8に関連して以下で説明する。乱数ジェネレータ
・ユニット218は、キーの生成のために乱数を生成す
る。キーユニット244は、様々なセキュリティ・オペ
レーションを処理するために後で使用することのでき
る、実行ユニット217A〜217Iに対するキーをコ
プロセッサ212内にローカルに格納することができ、
コプロセッサ212の外部にあるメモリからそのような
キーを取り出すことは必要としない。要求ユニット21
4は、ドアベル・レジスタ220に挿入された値に基づ
いて要求待ち行列206内の要求を抽出し、その要求を
処理するために実行ユニット217A〜217Iに分配
するが、これについては以下でより詳細に説明する。要
求バッファ222は、実行ユニット216〜217が処
理するために要求ユニット214が抽出した要求を格納
することができる。
【0026】マクロ・セキュリティ・オペレーション図
4は、本発明の一実施形態によるセキュアなSSL3.
0セッションの確立の一例を示す図面である。図4で
は、クライアント401とサーバ403は、セキュア・
セッションを確立するためにハンドシェーク・メッセー
ジを交換する。サーバ403はコプロセッサ212に対
してセキュリティ・オペレーション407、409、4
23、および425のセットを送る。ホスト・プロセッ
サ210からコプロセッサ212に送信されるセキュリ
ティ・オペレーションのセットのそれぞれは、基本的な
セキュリティ・オペレーションであっても、マクロ・セ
キュリティ・オペレーションであってもよい。図4に示
した実施形態では、セキュリティ・オペレーション40
9、423、および425のセットはマクロ・セキュリ
ティ・オペレーションである。各マクロ・セキュリティ
・オペレーションは、コプロセッサ212の実行ユニッ
ト216〜217の1つによって実行される。
【0027】クライアント401は、最初にクライアン
ト・ハロー・メッセージ405をサーバ403に送る。
クライアント403は、任意選択で追加メッセージを送
ることができる。サーバ403のホスト・プロセッサ2
01は、コプロセッサ212が実行すべき乱数セキュリ
ティ・オペレーション407を呼び出す。乱数ジェネレ
ータ218は、乱数オペレーション407に応答して一
つまたは複数の乱数を生成し、格納する。本発明の一実
施形態では、乱数オペレーション407は、単一の乱数
を生成する基本的なセキュリティ・オペレーションであ
る。本発明の別の実施形態では、乱数セキュリティ・オ
ペレーションは、乱数のベクトルを生成するマクロ・セ
キュリティ・オペレーションである。本発明の代替形態
では、ホスト・プロセッサ201は、コプロセッサ21
2とは別個に配置されている乱数ジェネレータ218が
実行すべき乱数オペレーション407を呼び出す。本発
明の別の実施形態では、乱数はセッションを確立する前
に生成される。一つまたは複数の乱数が生成された後
で、サーバ403はセキュリティ・ネゴシエーション・
オペレーション409をコプロセッサ212に送る。
【0028】セキュリティ・ネゴシエーション・オペレ
ーション409を実行した後、コプロセッサ212は蓄
積されたハンドシェーク・メッセージ(クライアント・
ハロー405およびいかなる任意選択のメッセージ)の
部分ハッシュを作成する。サーバ403は、一つまたは
複数の乱数と、コプロセッサ212によるセキュリティ
・ネゴシエーション・オペレーション409の実行によ
って得られるデータとを使用して、クライアント401
に送信されるメッセージのセットを作成する。サーバ4
03は、サーバ・ハロー・メッセージ411、証明書4
13、およびサーバのハロー終了メッセージ415を送
る。本発明の別の実施形態では、追加の任意選択メッセ
ージがクライアント401に送信される。
【0029】SSL3.0のセキュア・セッションを確
立するキー交換相では、クライアント401はクライア
ント・キー交換メッセージ417、暗号スペック変更メ
ッセージ419、およびクライアント終了メッセージ4
21を送る。サーバ403がこのメッセージ417、4
19および421のセットを受け取った後、サーバ40
3上のホスト・プロセッサ201は、コプロセッサ21
2が実行すべきキー交換オペレーション423および終
了オペレーション425を呼び出す。キー交換セキュリ
ティ・オペレーション423を実行した結果、コプロセ
ッサ212は1)暗号を解読したプリ・マスター・シー
クレットと、2)マスター・シークレットおよびキー・
マテリアルと、3)蓄積されたハンドシェーク・メッセ
ージの部分ハッシュ(ハッシュされたクライアント・ハ
ロー405およびメッセージ417、419および42
1のセット)とを作成する。終了オペレーション425
を実行した結果、コプロセッサ212は、1)暗号を解
読したクライアントの終了メッセージと、2)クライア
ントの終了メッセージ421に対する終了ハッシュと、
3)サーバの終了メッセージ429に対する終了ハッシ
ュと、4)メッセージ認証コード(MAC)付きの暗号
化されたサーバの終了メッセージとを生成する。キー交
換オペレーション423および終了オペレーション42
5からのデータを使用して、サーバ403は、1)クラ
イアントから受け取ったメッセージを検証し、2)暗号
スペック変更メッセージ427およびサーバの終了メッ
セージ429をクライアント401に送る。
【0030】図5は、本発明の一実施形態による図4に
示したマクロ・セキュリティ・オペレーションのための
基本的セキュリティ・オペレーションのグループを示す
表である。「マクロ・セキュリティ・オペレーション」
と標示された欄では、ネゴシエーション・セキュリティ
・オペレーション407、キー交換オペレーション40
9、および終了オペレーション425が識別される。こ
の表は、これらのマクロ・セキュリティ・オペレーショ
ンのそれぞれを実行するときに、コプロセッサ212の
実行ユニット216〜217の1つが実行する基本的セ
キュリティ・オペレーションのグループを示している。
セキュリティ・ネゴシエーション・オペレーション40
7を実行するときに、実行ユニット216〜217の1
つは2つのハッシュ・オペレーションを実行する。キー
交換オペレーション409を実行するために、実行ユニ
ット216〜217の1つは1)暗号解読オペレーショ
ン、2)一群のモジューラ演算オペレーション、および
3)22のハッシュ・オペレーション(TLSに従って
セキュア・セッションを確立する場合は78のハッシュ
・オペレーション)を実行する。セキュリティ・ネゴシ
エーション・オペレーション407を実行するために、
実行ユニット216〜217の1つは、本発明の一実施
形態に従ってSSL3.0のための23の基本的なセキ
ュリティ・オペレーションを実行することになる。終了
オペレーション409を実行するために、実行ユニット
216〜217の1つは、1)暗号解読オペレーショ
ン、2)暗号化オペレーション、および3)12のハッ
シュ・オペレーションを実行する。終了オペレーション
407を実行する実行ユニット216〜217の1つ
は、14の基本的なセキュリティ・オペレーションを実
行する。
【0031】基本的なセキュリティ・オペレーションを
マクロ・セキュリティ・オペレーションに関連付けるこ
とは、様々な方法で実施することができる。記述した発
明の様々な実施形態は、セキュリティ・プロトコル、デ
ータ依存性等を含めることのできる要因にそれぞれ基づ
くマクロ・セキュリティ・オペレーションに対して基本
的なセキュリティ・オペレーションをグループ化するこ
とができる。
【0032】図6は、本発明の一実施形態によるセキュ
ア・セッションの確立の一例を示す図面である。図6で
は、図4で示したセキュア・セッションの確立に対し
て、マクロ・セキュリティ・オペレーションの異なる一
実施形態を示す。図6では、マクロ・セキュリティ・オ
ペレーション407、409および423ではなく、サ
ーバ・フル・ハンドシェーク・オペレーション601が
呼び出される。サーバ・フル・ハンドシェーク・マクロ
・セキュリティ・オペレーション601は、サーバ40
3がクライアント401からメッセージ417、419
および421のセットを受け取った後で呼び出される。
単一呼び出しによって、コプロセッサ212(乱数の呼
び出しは含まない)は、セキュア・セッションを確立す
るためにホスト・プロセッサ201に必須のデータを供
給する。
【0033】図7は、本発明の一実施形態によるサーバ
・フル・ハンドシェーク・オペレーション701のため
の一群の基本的オペレーションを示す表である。サーバ
・フル・ハンドシェーク・オペレーション601を実行
する実行ユニット216〜217の1つは、1)暗号解
読オペレーション、2)暗号化オペレーション、3)モ
ジュラ計算オペレーション、および4)35のハッシュ
・オペレーションの基本的なセキュリティ・オペレーシ
ョンを実行する。したがって、この実行ユニットは、サ
ーバ・フル・ハンドシェーク・オペレーション601を
完了するために、約39の基本的セキュリティ・オペレ
ーションを実行する。このサーバ・フル・ハンドシェー
ク・オペレーション601の例では、クライアントの終
了メッセージ421は暗号解読されない。クライアント
の終了メッセージ421は暗号解読されないのは、予想
されるクライアントの終了メッセージがコプロセッサ2
12によって作成されるからである。サーバ403は、
実際にクライアントの終了メッセージ421を受け取る
前に既にそのクライアントの終了メッセージ421の内
容を認識しているので、予想されるクライアントの終了
メッセージを作成し、それを使用して、受け取ったクラ
イアントの終了メッセージ421を暗号解読せずにその
クライアントの終了メッセージ421を認証することが
できる。
【0034】クライアント・フル・ハンドシェーク・オ
ペレーションは、予想されるサーバの終了メッセージを
作成することができる。コプロセッサ212を有するク
ライアントは、クライアント・フル・ハンドシェーク・
オペレーションによって、サーバ401からサーバの終
了メッセージ429を受け取る前にセキュア・セッショ
ンを確立するための、コプロセッサ212に対する単一
呼出しを実行することができる。
【0035】したがって、図4から7は、マクロ・セキ
ュリティ・オペレーションを形成するために、基本的セ
キュリティ・オペレーションをグループ化することので
きる方法のいくつかの例を示す。このような基本的セキ
ュリティ・オペレーションのどのような組み合わせで
も、本発明の範囲に含まれることを理解されたい。マク
ロ・セキュリティ・オペレーションによって、ホスト・
プロセッサ201と、クライアント401またはサーバ
403のコプロセッサ212との間で、限られた数の通
信によるセキュア・セッションを確立することができ
る。通信数を少なくすることによってシステム資源の消
費が低減される。システム資源の消費が低減されると、
システム・パフォーマンスが低下することが防止され
る。さらに、セキュア・セッションをより高速に確立す
ることができ、かつ、より多くのセキュア・セッション
を維持することができる。具体的には、マクロ・セキュ
リティ・オペレーションの処理に要する処理量は基本的
セキュリティ・オペレーションよりも多いので、セキュ
リティ・コプロセッサの様々な実行ユニットに対してオ
ペレーションを割り当てると、その割り当てに伴うオー
バーヘッドがあるにも係わらず、より多くのスループッ
トが可能になる。
【0036】図8は、本発明の一実施形態による実行ユ
ニット216〜217の1つを示す図面である。図8で
は、マイクロコード・ブロック801がマイクロコント
ローラ・ブロック803に結合されている。マイクロコ
ントローラ・ブロック803は実行待ち行列ブロック8
05に結合されている。実行待ち行列ブロック805は
基本的セキュリティ・オペレーション・ブロックのセッ
トに結合されている。この基本的セキュリティ・オペレ
ーション・ブロックには、拡張暗号化規格(AES)ブ
ロック807、トリプル・データ暗号化規格(3DE
S)ブロック809、モジューラ指数(modular exponen
tiation)ブロック811、ハッシュ・ブロック813、
単純算術および論理ブロック815、および仮定のRC
4(登録商標)ブロック819が含まれる。本発明の代
替形態は、この基本的セキュリティ・オペレーション・
ブロックにさらに基本的セキュリティ・オペレーション
・ブロックを追加することも、これより少なくすること
もできる。バス821は基本的セキュリティ・オペレー
ション・ブロック807、809、811、813、8
19と、レジスタ・ファイル・ブロック817を結合す
る。
【0037】マイクロコード・ブロック801は、セキ
ュリティ・オペレーションを1つまたは複数の基本的セ
キュリティ・オペレーションに翻訳し、その1つまたは
複数の基本的セキュリティ・オペレーションをマイクロ
コントローラ・ブロック803に渡す。マイクロコント
ローラ・ブロック803は、レジスタ・ファイル817
から、それぞれの基本的セキュリティ・オペレーション
に対して該当するデータを取り出す。基本的セキュリテ
ィ・オペレーションは、マイクロコントローラ・ブロッ
ク803によって実行待ち行列805に入れられる。あ
る基本的セキュリティ・オペレーションに対応する基本
的セキュリティ・オペレーション・ブロックが、その基
本的セキュリティ・オペレーションを実行することがで
きるとき、実行待ち行列805はその基本的セキュリテ
ィ・オペレーションを該当する基本的セキュリティ・オ
ペレーション・ブロック807、809、811、81
3、815、または819にプッシュする。基本的セキ
ュリティ・オペレーション・ブロック807、809、
811、813、815、または819によるその基本
的セキュリティ・オペレーションの実行が完了すると、
その基本的セキュリティ・オペレーション・ブロック
は、その結果をレジスタ・ファイル817またはバス8
21に渡す。ホスト・プロセッサ201からの要求のセ
キュリティ・オペレーション(マクロまたは基本的セキ
ュリティ・オペレーション)の結果は、実行ユニット2
16〜217によってDMA転送を使用してメイン・メ
モリの該当位置まで転送される。
【0038】一実施形態は、各実行ユニットが固有のマ
イクロコード・ブロックを有するように示しているが、
代替形態は1つまたは複数の実行ユニットに単一マイク
ロコード・ブロックを共有させる。さらに別の実施形態
は、中央マイクロコード・ブロック(例えば、SRA
M)を有するが、その内容は、次回の電源投入時に実行
ユニットのそれぞれの中にあるローカル・マイクロコー
ド・ブロックにロードされる。1つまたは複数のマイク
ロコード・ブロックの構成に関係なく、特定の実施形態
では、実行されるべきセキュリティ・オペレーション
(マクロおよび/または基本的セキュリティ・オペレー
ション)を選択する上での柔軟性を考慮して、マイクロ
コード・ブロックは再プログラム可能である。
【0039】ストレージ・ファームへのルータ、スイッ
チ、アクセス等として動作するネットワーク要素は、1
つまたは複数のセキュア・セッションを確立することが
できる。このネットワーク要素は、マクロ・セキュリテ
ィ・オペレーションによって、大量のシステム資源を消
費することなく複数のセキュア・セッションを確立する
ことができる。さらに、このセキュア・セッションはマ
クロ・セキュリティ・オペレーションによってさらに高
速に確立することができる。
【0040】例えば、コプロセッサ212は、セキュア
なSSL3.0セッションを確立するための3つの要求
を受け取ることができる。サーバ・フル・ハンドシェー
ク・オペレーション701が実施される場合、ホスト・
プロセッサ201は、コプロセッサ212を呼び出すこ
とによってセキュア・セッションを確立することができ
る。実行ユニット216〜217は、その3つのオペレ
ーションを並行して実行することができる。マクロ・セ
キュリティ・オペレーションのより細分化されたセット
を、図4および図5に示すマクロ・セキュリティ・オペ
レーションに類似したサーバ上で実施することができ
る。例えば、図4および図5に示したマクロ・セキュリ
ティ・オペレーションは、セキュア・セッションに対す
る2つの要求を既に受信しているサーバ403上で実施
することができる。その2つの要求されたセッションの
それぞれに対してクライアント・キー交換オペレーショ
ン423を実行するためにホスト・プロセッサ201が
コプロセッサ212を呼び出した後、サーバ403はセ
キュア・セッションに対する第3の要求を受け取る。こ
の第3のセキュア・セッションに対するセキュリティ・
ネゴシエーション・オペレーション409を実行するた
めに、ホスト・プロセッサ201はコプロセッサ212
を呼び出す。コプロセッサ212の要求ユニット214
は、実行ユニット216〜217の2つに対して2つの
クライアント・キー交換オペレーション423を発行し
た後で、実行ユニット216〜217の1つに対してセ
キュリティ・ネゴシエーション・オペレーション409
を発行するが、セキュリティ・ネゴシエーション・オペ
レーション409を実行する実行ユニット216〜21
7の1つは、実行ユニット216〜217の別の2つが
それらのオペレーションの実行を完了する前に(セキュ
リティ・ネゴシエーション・オペレーション409がキ
ー交換オペレーション423よりも短時間しか要しない
と仮定して)、オペレーション409の実行を完了する
ことになる。したがって、ホスト・プロセッサ201か
らのオペレーションは、実行ユニット216〜217に
対して順番通りに発行することができるが、実行ユニッ
ト216〜217はそれらを順不同で完了することがで
きる。
【0041】セキュア・セッションを確立するための機
能を実行するためにコプロセッサ212を利用すること
によって、システムおよびそのホスト・プロセッサ20
1の効率が高められる。コプロセッサ2121は、消費
されるホスト・プロセッサ201の資源を低減すること
によって、セキュア・セッションの確立を可能にする。
より多くのセキュア・セッションをさらに高速に確立す
ることができる。さらに、セキュリティ機能のために既
に費やされた資源をホスト・プロセッサ201が使用す
ることができるので、システムの全体的なパフォーマン
スも高められることになる。これらのホスト・プロセッ
サ201の資源は、システム監視、トラフィック監視等
に適用することができる。
【0042】さらに、実行ユニット216〜217の並
行した順不同の特性は、セキュリティ・オペレーション
を実施するために柔軟性を実現する。変化する顧客ニー
ズに合わせるために、様々な細分化レベルのマクロ・セ
キュリティ・オペレーションを実施することができる。
順不同の完了を可能にする実施形態を示したが、代替形
態は、要求の順番通りの完了を要求するためのハードウ
ェアを含む。
【0043】一実施形態では、要求処理ユニット234
はホスト・プロセッサが実行するコプロセッサ・ドライ
バである。本発明の一実施形態では、コプロセッサ・ド
ライバはOpenSSLの修正版とインターフェースを
とる。OpenSSLの修正版は、基本的セキュリティ
・オペレーションとは反対に、マクロ・セキュリティ・
オペレーションをドライバに伝達するように変更され
る。
【0044】要求処理ユニット234によるセキュリテ
ィ・オペレーションの処理マクロ・セキュリティ・オペ
レーションを使用することによって、所与のセキュア・
セッションに関するホスト・プロセッサとセキュリティ
・コプロセッサとの間の通信数を減少させると、システ
ム・パフォーマンスを高めることができるが、コプロセ
ッサのアーキテクチャに対してより伝わり易いタスクお
よび結果の伝達方法は、ホスト・プロセッサとセキュリ
ティ・コプロセッサとの間におけるパフォーマンスを高
めることができる。具体的には、既に指摘したように、
本発明の別の形態は、コプロセッサが複数の実行ユニッ
トを有する場合に、ホスト・プロセッサとセキュリティ
・コプロセッサとの間でのタスクと結果の伝達である。
より具体的には、連続的フロー可能なタスクの引き渡し
および結果返還の機構が使用される。連続的フロー可能
なタスクの引き渡しおよび結果返還の機構によって、ホ
スト・プロセッサは連続してタスクを追加することがで
き(待ち行列が満杯でない限り)、セキュリティ・コプ
ロセッサは連続して結果を返還することができる(ホス
ト・プロセッサがセキュリティ・コプロセッサに別の作
業ブロックを転送できる前にコプロセッサが完了すべき
作業ブロックを必要とする機構とは反対に)。図2、9
および10は、非割込み駆動型の連続的フロー機構の一
実施形態を説明しているが、代替形態は様々なフロー機
構を使用することができる。
【0045】セキュリティ・オペレーションの処理をさ
らに説明するために、図9は、本発明の実施形態による
要求処理ユニット234(図2を参照のこと)による要
求の処理の流れ図を示す。方法900は、処理ブロック
902で、セキュリティ・オペレーションに対するいく
つかの要求の1つを受け取ることから始まる。一実施形
態では、この要求は、前述したマクロ・オペレーション
および/または基本的オペレーションを含む。一実施形
態では、処理ブロック904で、要求処理ユニット23
4は、その要求に関連するデータ、例えばセキュリティ
・オペレーションに対するオペランドなどを入力データ
208A〜208Iの1つに格納する。特に、このデー
タは、要求待ち行列206への入口点に課されるサイズ
の制約のために要求待ち行列206の外部に格納するよ
うに要求することができる。一実施形態では、関連する
データのすべてを要求待ち行列206内の要求内に格納
することができるので、追加データの格納は要求されな
い。
【0046】さらに、処理ブロック906で、要求処理
ユニット234は、出力データ209A〜209Iのメ
モリ空間を要求待ち行列206に格納されるべきそれら
の要求に割り当てる。一実施形態では、要求処理ユニッ
ト234は、関連する出力データ209A〜209I内
の完了コードの値を、その要求が完了していないことを
示す値にセットする。例えば、そのような一実施形態で
は、値0はその要求が完了したことを示し、したがっ
て、要求処理ユニット234はこの値を非0の番号にセ
ットする。
【0047】さらに、処理ブロック908で、要求処理
ユニット234は要求待ち行列をロックする。したがっ
て、このようにロックすることによって、他のユニット
または処理が、要求待ち行列206への書込要求から除
外される。要求待ち行列206をロックするために様々
な技術を使用することができるが、一実施形態では、要
求処理ユニット234は、セマフォーを使用したソフト
ウェア・ロックによって要求待ち行列206をロックす
る。処理ブロック910で、要求処理ユニット234
は、1つまたは複数の要求を要求待ち行列206に追加
する。図3を参照しながら既に述べたように、要求は、
コプロセッサ212内のユニットが実行するべきオペレ
ーション・コード、入力データ208A〜208Iの1
つに格納されているオペレーションに関係する他のデー
タを指すポインタ、および所与の要求の完了後にコプロ
セッサ212によって出力結果が入れられるホスト・メ
モリ204内の位置、例えば出力データ209A〜20
9Iへのポインタを含むことができる。処理ブロック9
12で、要求処理ユニット234は、1つまたは複数の
要求を追加した後で、要求待ち行列206をアンロック
する。
【0048】処理ブロック914で、要求処理ユニット
234は、要求待ち行列206に追加された1つまたは
複数の要求の数をドアベル・レジスタ220(コプロセ
ッサ212に配置される)に書き込む。一実施形態で
は、この書込オペレーションは直接メモリ・アクセス
(DMA)書込オペレーションによって実行される。レ
ジスタとして記述したが、ドアベル・レジスタ220に
格納されるべきデータは、コプロセッサ212内の他の
いかなるタイプのメモリをも含むことができる。
【0049】処理ブロック916で、要求処理ユニット
234は、ホスト・プロセッサ202上の実行のための
スレッドを生成することもできる。一実施形態では、ス
レッドは、SSL3.0セッションなどの所与のセキュ
リティ・セッションに対して作成される。一実施形態で
は、要求処理ユニット234は、要求待ち行列206に
挿入される要求ごとに異なるスレッドを作成する。処理
ブロック918で、これらのスレッドは、関係する出力
データ209A〜209Iに格納されている完了コード
を監視することによって、それらの関連する要求が完了
したかどうかを確認する。
【0050】一実施形態では、要求処理ユニット324
は、関連する要求が要求待ち行列206に入れられると
スレッドをスリープさせ、そのスレッドを起こすために
タイマーをセットする。したがって、そのスレッドは、
処理を開始する際に、その要求が完了したかどうかを判
定するために、関係する出力データ209A〜209I
内の完了コードを確認する。一実施形態では、要求処理
ユニット234は、実行されるべき特定の要求に基づい
てこのタイマーの値をセットする。例えば、乱数を生成
するための第1の要求が、キー生成オペレーションへの
第2の要求よりも短期間で、コプロセッサ212によっ
て典型的に処理される場合、要求処理ユニット234は
それに従ってそれらのタイマーの値をセットする。すな
わち、第1の要求は、第2の要求よりも短期間のタイマ
ーを有するということである。一実施形態では、要求処
理ユニット234は、所定の期間だけそのスレッドを起
きた状態で保ち、その要求がその期間中に完了しなかっ
たと判断した場合、そのスレッドをスリープさせる。一
実施形態では、要求処理ユニット234は、所与の要求
に対してコプロセッサ212が完了コードをセットする
直前にブロックする。完了コードを確認するために要求
処理ユニット134がスレッドを使用する実施形態を説
明したが、代替形態は、他の機構を使用することができ
る(例えば、要求処理ユニット134は完了コードのそ
れぞれを確認することができる)。
【0051】一実施形態では、コプロセッサ112が要
求を完了すると、関連するスレッドはその要求、関連す
る入力データ208および/または出力データ209を
ホスト・メモリ204から削除することができる。一実
施形態では、要求が要求ユニット214から抽出される
と、要求および関連する入力データ208は要求待ち行
列206から削除されるが、出力データ209の内容を
持ってスレッドが終了すると、関連するスレッドによっ
て関連する出力データ209が削除される。
【0052】コプロセッサ212によるセキュリティ・
オペレーションの処理図10は、本発明の実施形態によ
るコプロセッサ212が要求する処理の流れ図である。
方法1000は、処理ブロック1002で、要求ユニッ
ト214によってドアベル・レジスタ220をポーリン
グすることから始まる。このドアベル・レジスタ220
のポーリングは、1つの処理ブロックで示される。しか
し、本発明の実施形態は、このように限定されるもので
はなく、このドアベル・レジスタ220のポーリングを
定期的に実行することができ、したがって要求ユニット
214は、他の処理ブロックに示されている機能が実行
されている間にこのポーリングを実行することができ
る。例えば、要求ユニット214によるこのポーリング
は、実行ユニット216〜217の1つが要求を処理し
ているのと同時に実行することができる(後述する処理
ブロック1012において)。一実施形態では、要求ユ
ニット214はすべてのクロック周期でドアベル・レジ
スタ220をポーリングする。
【0053】さらに、処理決定ブロック1004で、要
求ユニット214は、要求待ち行列206が要求を含む
かどうかを、ドアベル・レジスタ220に格納されてい
る値に基づいて判定する。要求ユニット214は、要求
待ち行列206のサイズと位置を決定するために、コプ
ロセッサ212にローカルないくつかのメモリ位置にア
クセスすることができる。第1のメモリ位置は要求待ち
行列206の基底アドレスであり、第2のメモリ位置は
要求待ち行列206の長さである。一実施形態では、こ
れらのメモリ位置はコプロセッサ212内のレジスタで
ある。一実施形態では、要求処理ユニット234は、初
期化中にこれらのメモリ位置を適切な値にセットする。
【0054】一実施形態では、要求処理ユニット234
によってドアベル・レジスタ220に格納された値は、
要求待ち行列206に追加された要求の数である(要求
待ち行列206の合計要求数でなく)。したがって、要
求待ち行列206に要求が含まれないと判定した場合、
処理ブロック1002で要求ユニット214はドアベル
・レジスタ220を再度ポーリングする。反対に、要求
待ち行列206に要求が含まれると判定した場合、処理
ブロック1006で、要求ユニット214は、要求待ち
行列206の合計要求数でカウンタを更新する。一実施
形態では、このカウンタは、レジスタなどの、コプロセ
ッサ212内のローカル・メモリである。このカウンタ
の更新の説明に役立てるために、このカウンタに格納さ
れている値が25であり、ドアベル・レジスタ220が
値5を有する場合、要求ユニット214はこれら2つの
値を加算して(合計30とし)、その和をカウンタに格
納する。さらに、処理ブロック1008で、要求ユニッ
ト214は、ドアベル・レジスタ220に格納されてい
る値を0にリセットする。
【0055】しかし、本発明の実施形態は、このように
限定されるものではなく、要求待ち行列206内の要求
数を追跡する際に別の技術を採用することができる。例
えば、一実施形態では、要求待ち行列206内の合計要
求数を格納するために1つのメモリ位置が使用される
が、これは要求処理ユニット234および要求ユニット
214の両方によって、例えば複数ユニットが単一メモ
リ位置を更新することを可能にするセマフォーを使用し
て更新することができる。
【0056】処理ブロック1006では、要求ユニット
214は、いくつかの実行ユニット216〜217の1
つが要求を処理できるかどうか、かつ/またはコプロセ
ッサ212の要求バッファ222内の空間が要求待ち行
列206から抽出した要求を格納できるかどうかを判定
する。特に、一実施形態では、実行ユニット216〜2
17の1つによって処理されるべき要求待ち行列206
から受け取った要求を格納するためにコプロセッサ21
2は要求バッファ222を含む。図8に示す前述の実施
形態のように、いくつかの実行ユニット216〜217
のそれぞれは、このようなユニットに対して、限定はし
ないが前述のような(異なる要求の説明に関連して)オ
ペレーションを含めて、いくつかの異なるセキュリティ
・オペレーションを実行することを可能にするマイクロ
コードを含むか、またはそのようなマイクロコードに対
するアクセス権を有する。すなわち、実行ユニット21
6〜217の所与の1つは、ハッシュ・オペレーション
などの所与の機能に限定されるものではないが、別の実
行ユニット216〜217の1つはセキュリティ・オペ
レーションのためのキーの生成に限定される。そうでは
なく、いくつかの実行ユニット216〜217のそれぞ
れは、いくつかの異なる基本的およびマクロ・セキュリ
ティ・オペレーションを実行することができる。
【0057】処理決定ブロック1010で、コプロセッ
サ212には要求をローカルに格納するために使用可能
なバッファ空間がないかどうか、かつ/またはそのよう
な要求を処理するために使用可能な実行ユニット216
〜217があるかどうかを判定する際、要求ユニット2
14はこの使用可能なバッファ空間または実行ユニット
216〜217に関して確認を続ける。一実施形態で
は、要求ユニット214は、コプロセッサ212内の実
行ユニット216〜217または他の制御回路から受け
取った信号からそのような可用性を判定することができ
る。反対に、要求をローカルに格納するために使用可能
なコプロセッサ212内のバッファ空間、および/また
は、そのような要求を処理するために使用可能な実行ユ
ニット216〜217があると判定した場合、処理ブロ
ック1012で、要求ユニット214は要求待ち行列2
06から1つまたは複数の要求を取り出す。一実施形態
では、要求ユニット214は、DMA読取オペレーショ
ンを使用して要求待ち行列206から1つまたは複数の
そのような要求を取り出す。
【0058】さらに、処理ブロック1014で、要求ユ
ニット214は、それらの要求に関する関連する入力デ
ータ208A〜208Iをホスト・メモリ204から取
り出す。一実施形態では、入力データ208A〜208
Iはホスト・メモリ204に連続して格納される。この
ような一実施形態では、要求ユニット214は、そのよ
うなデータが連続して格納されているということから、
単一DMA読取を使用してこの関連する入力データ20
8A〜208Iを取り出す。したがって、複数の要求を
コプロセッサ2121に転送するためには2つのDMA
オペレーションだけでよく、したがって、所与のセキュ
リティ・オペレーションに関する全体の処理速度は向上
する。
【0059】処理ブロック1016で、コプロセッサ内
のユニット(要求ユニット214、実行ユニット216
〜217、および乱数ジェネレータ・ユニット218を
含む)は要求を処理する。要求ユニット214は、これ
らの取り出された要求を実行ユニット216〜217お
よび乱数ジェネレータ・ユニット218に分配または与
える。一実施形態において、各実行ユニット216〜2
17は、受け取った様々なタイプのいかなるセキュリテ
ィ・オペレーションでも処理することができるので、要
求ユニット214は、そのような要求の処理のために使
用可能な実行ユニット216〜217の第1の実行ユニ
ットに要求を送ることができる。
【0060】処理ブロック1016で、所与の要求に関
して、実行ユニット216〜217の1つが要求の処理
を完了すると、この実行ユニット216〜217は、要
求の結果ポインタ212(図3に示す)が指すホスト・
メモリ204内の位置(出力データ209A〜209I
の1つ)にこの要求の結果を格納する。要求内のオペレ
ーションの実際の結果に加え、実行ユニット216〜2
17は完了コード内に値、例えば要求が完了したことを
示す非0値などを書き込む。一実施形態では、実行ユニ
ット216〜217は、DMA書込オペレーションを使
用して結果および完了コードを書き込む。したがって、
一実施形態では、所与の要求(要求に対するDMA読
取、入力データに対するDMA読取、および出力結果に
対するDMA書込を含む)に対して合計3つのDMAオ
ペレーションが必要となる。さらに、所与のDMAオペ
レーションについてはホスト・メモリ204から複数の
要求を読み取ることができるので、DMAオペレーショ
ンの合計数は約2に近づき、これによって、システム・
バス210を介した全体のバス転送は限定される。この
システム・バス210を介したバス転送は、セキュリテ
ィ・オペレーションを処理するための時間の点で犠牲が
大きくなる場合がある。
【0061】さらに、説明したように、様々なセキュリ
ティ・オペレーションをそれぞれが実行することがで
き、かつ他の実行ユニットによって処理中の他のセキュ
リティ・オペレーションと関係なくこれを行うことがで
きるいくつかの実行ユニットをコプロセッサ212が含
むので、これらの要求は、要求待ち行列206内に要求
があった順番とは異なる順番で実行および/または完了
することができる(また、結果をホスト・メモリ204
に出力する)。例えば、第1の要求は、第1のSSLオ
ペレーションに対するキー生成オペレーションを含むこ
とができるが、第2の要求は、第2のSSLセッション
に対するモジューラ演算オペレーションを含むことがで
き、したがって、第1の要求は第2の要求よりも前に要
求待ち行列206に格納され、かつ、そこから抽出され
る。通常、第2の要求は第1の要求よりもより高速に実
行ユニット216〜217によって処理される。したが
って、たとえ第1の要求が、要求待ち行列206内の要
求の順番に基づいて最初にコプロセッサ212に送信さ
れたとしても、第2の要求の処理は第1の要求の処理よ
りも前に完了することができる。
【0062】したがって、一実施形態は、要求がハード
ウェアによって相互から独立して扱われるように記述さ
れている。完了の特別な順番を要する従属関係が任意の
要求の間にある場合、その順番はこの実施形態ではソフ
トウェアによって断行される。しかし、代替形態は、要
求の順番通りの完了を断行するハードウェアを含む。
【0063】本明細書で記述するメモリは、本明細書で
記述する方法の任意の1つまたはそのすべてを実施する
命令のセット(すなわち、ソフトウェア)が格納されて
いる機械可読媒体を含む。ソフトウェアは、本明細書に
記述するこのメモリ内および/またはプロセッサ内に、
全体的にまたは少なくとも部分的に常駐することができ
る。本明細書のためには、「機械可読媒体」という用語
は、機械(すなわち、コンピュータ)によって可読の形
式で情報を供給する(すなわち、格納かつ/または送
る)いかなる機構をも含むものと解釈される。例えば、
機械可読媒体には、読取専用メモリ(「ROM」)、ラ
ンダム・アクセス・メモリ(「RAM」)、磁気ディス
ク格納媒体、光格納媒体、フラッシュ・メモリ装置、ま
たは電子式、光学式、音響式または他の形式の伝搬信号
(例えば、搬送波、赤外線信号、デジタル信号、等)等
が含まれる。
【0064】以上、セキュリティ・オペレーションを処
理する方法および装置について説明した。本発明は特定
の例示的実施形態を参照して説明したが、本発明のより
広範な趣旨および範囲を逸脱せずに、これらの実施形態
に対する様々な変形形態および変更が可能であることが
明白になろう。例えば、代替形態では、ホスト・プロセ
ッサは割込みによってセキュリティ・コプロセッサと通
信することができるが、この際、ホスト・メモリと通信
するためにセキュリティ・コプロセッサがDMAオペレ
ーションを使用することを可能にする。あるいは、セキ
ュリティ・コプロセッサは、ホスト・プロセッサとの通
信のために割込みを使用することができるが、ホスト・
プロセッサは、コプロセッサとの通信のためにDMAオ
ペレーションを使用する。したがって、本明細書および
図面は、限定的ではなく例示的なものと考慮されるべき
である。
【図面の簡単な説明】
【図1】セキュア・セッションを確立するための2相の
クライアント/サーバ交換を説明する図面である。
【図2】本発明の実施形態による、セキュリティ・オペ
レーションを処理するシステムを示すブロック図であ
る。
【図3】本発明の実施形態による、コプロセッサ212
による処理の要求形式の一例を示す図である。
【図4】発明の一実施形態によるセキュアなSSL3.
0セッションの確立の一例を示す図面である。
【図5】発明の一実施形態による、図4に示したマクロ
・セキュリティ・オペレーションに対する基本的なセキ
ュリティ・オペレーションのグループを示す表である。
【図6】発明の一実施形態によるセキュア・セッション
の確立の一例を示す図面である。
【図7】発明の一実施形態による、サーバのフル・ハン
ドシェーク・オペレーション701に対する一群の基本
的なオペレーションを示す表である。
【図8】発明の一実施形態による、実行ユニット216
〜217の1つを示す図面である。
【図9】本発明の実施形態による、要求処理ユニット2
34による要求処理の流れ図である。
【図10】本発明の実施形態による、コプロセッサ21
2による要求処理の流れ図である。
【符号の説明】
202 ホスト・プロセッサ 204 ホスト・メモリ 206 要求待ち行列 210 システム・バス 212 コプロセッサ 214 要求ユニット 216A〜216I 実行ユニット
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ディビッド・エイ・カールソン アメリカ合衆国・76052・テキサス州・ハ スレット・ベイツ アストン・13909 (72)発明者 ムハマッド・ラヒブ・フセイン アメリカ合衆国・94588・カリフォルニア 州・プレザントン・ローズ ロック サー クル・3753 (72)発明者 ロバート・エイ・サンゾン アメリカ合衆国・01749・マサチューセッ ツ州・ハドソン・セネカ ドライブ・11 (72)発明者 カジャ・イー・アメッド アメリカ合衆国・94566・カリフォルニア 州・プレザントン・パセオ サンタ クル ズ・7807 (72)発明者 マイケル・ディー・バーガ アメリカ合衆国・95035・カリフォルニア 州・ミルピタス・クシズ レーン・1494 Fターム(参考) 5B085 AE29 BA06 BG02 5J104 AA07 KA02 KA06 NA02 PA07

Claims (34)

    【特許請求の範囲】
  1. 【請求項1】 第1のプロセッサからオペレーションを
    呼び出し、 そのオペレーション呼出しに応答して、第2のプロセッ
    サで複数の基本的なセキュリティ・オペレーションを実
    行し、 複数の基本的なセキュリティ・オペレーションを実行し
    てデータのセットを生成し、 データのセットによってセキュア・セッションを確立す
    ることを含むコンピュータで実施される方法。
  2. 【請求項2】 データのセットが、 暗号解読されたデータのセットと、 暗号化されたデータのセットと、 ハッシュされたメッセージのセットとを含む請求項1に
    記載のコンピュータで実施される方法。
  3. 【請求項3】 乱数のセットをさらに含む請求項2に記
    載のコンピュータで実施される方法。
  4. 【請求項4】 第1のプロセッサが第2のセキュア・セ
    ッションを確立する第2のオペレーションを呼び出すこ
    とをさらに含む請求項1に記載のコンピュータで実施さ
    れる方法。
  5. 【請求項5】 セキュア・セッションがSSL3.0セ
    ッション、TLSセッション、IPSecセッションで
    ある請求項1に記載のコンピュータで実施される方法。
  6. 【請求項6】 マクロ・セキュリティ・オペレーション
    を呼び出し、 そのマクロ・セキュリティ・オペレーションに応答し
    て、 シークレットおよびキー・マテリアルを生成し、 クライアント・メッセージに対して第1の終了ハッシュ
    を作成し、 サーバ・メッセージに対して第2の終了ハッシュを作成
    し、 終了メッセージを作成することを含むオペレーションの
    セットを実行し、 セキュア・セッションを確立することを含むコンピュー
    タで実施される方法。
  7. 【請求項7】 オペレーションのセットが、 プリ・マスター・シークレットの暗号を解読し、 クライアントの終了メッセージの暗号を解読することを
    さらに含む請求項6に記載のコンピュータで実施される
    方法。
  8. 【請求項8】 オペレーションのセットが乱数のセット
    を生成しをさらに含む請求項6に記載のコンピュータで
    実施される方法。
  9. 【請求項9】 オペレーションのセットが、 予測される終了メッセージを作成することをさらに含む
    請求項6に記載のコンピュータで実施される方法。
  10. 【請求項10】 第2のセキュア・セッションを確立す
    る第2のマクロ・セキュリティ・オペレーションを呼び
    出すことをさらに含む請求項6に記載のコンピュータで
    実施される方法。
  11. 【請求項11】 セキュア・セッションを要求する第1
    のネットワーク要素と、 第1のネットワーク要素にネットワーク接続されている
    第2のネットワーク要素であって、第1のプロセッサか
    らマクロ・セキュリティ・オペレーションを呼び出し、
    マクロ・セキュリティ・オペレーション呼出しに応答し
    て第2のプロセッサで複数の基本的なセキュリティ・オ
    ペレーションを実行し、かつ、複数の基本的なセキュリ
    ティ・オペレーションの実行からデータのセットを生成
    する第2のネットワーク要素とを含むシステム。
  12. 【請求項12】 データのセットが、 暗号解読されたデータのセットと、 暗号化されたデータのセットと、 ハッシュされたデータのセットとを含む請求項11に記
    載のシステム。
  13. 【請求項13】 セキュア・セッションを要求する第1
    のネットワーク要素が、メッセージのセットを第2のネ
    ットワーク要素に送信し、第2のマクロ・セキュリティ
    ・オペレーションを実行し、かつ、第2のマクロ・セキ
    ュリティ・オペレーションの実行から第2のデータのセ
    ットを生成する第1のネットワーク要素を含む請求項1
    1に記載のシステム。
  14. 【請求項14】 第2のネットワーク要素にネットワー
    ク接続されている第3のネットワーク要素であって、第
    2のネットワーク要素によって第2のセキュア・セッシ
    ョンを要求する第3のネットワーク要素をさらに含む請
    求項11に記載のシステム。
  15. 【請求項15】 第2のネットワーク要素によって第2
    のセキュア・セッションを要求する第1のネットワーク
    要素と、 第1のネットワーク要素によって第2のセキュア・セッ
    ションを確立するために、第2のマクロ・セキュリティ
    ・オペレーションを実行する第2のネットワーク要素と
    をさらに含む請求項11に記載のシステム。
  16. 【請求項16】 セキュア・セッションを確立するため
    にマクロ・セキュリティ・オペレーションを呼び出す第
    1のプロセッサと、 第1のプロセッサに結合されている第2のプロセッサで
    あって、マクロ・セキュリティ・オペレーション呼出し
    に応答して複数の基本的なセキュリティ・オペレーショ
    ンを実行する第2のプロセッサと、 第1および第2のプロセッサに結合されているメモリで
    あって、第2のプロセッサによって生成されたデータの
    セットを記憶するメモリとを含む装置。
  17. 【請求項17】 第2のプロセッサが、 マクロ・セキュリティ・オペレーションをフェッチし、
    分配する要求ユニットと、 要求ユニットに結合されている複数の実行ユニットであ
    って、複数の実行ユニットの1つが複数の基本的なセキ
    ュリティ・オペレーションを実行するためのものである
    複数の実行ユニットとを含む請求項16に記載の装置。
  18. 【請求項18】 第1のマクロ・セキュリティ・オペレ
    ーションを呼び出した後で、第2のマクロ・セキュリテ
    ィ・オペレーションを呼び出す第1のプロセッサと、 複数の実行ユニットの第2の実行ユニットが複数の基本
    的なセキュリティ・オペレーションの実行を完了する前
    に、第2のマクロ・セキュリティ・オペレーションに対
    応する第2の複数の基本的なセキュリティ・オペレーシ
    ョンを実行する複数の実行ユニットの第2の実行ユニッ
    トとをさらに含む請求項17に記載の装置。
  19. 【請求項19】 複数の実行ユニットの1つが、 マクロ・セキュリティ・オペレーションを複数の基本的
    なセキュリティ・オペレーションに翻訳するマイクロコ
    ード・ユニットと、 マイクロコード・ユニットに結合され、複数の基本的な
    セキュリティ・オペレーションを待ち行列に入れる実行
    待ち行列ユニットと、 実行待ち行列ユニットに結合され、複数の基本的なセキ
    ュリティ・オペレーションを実行する複数の基本的なセ
    キュリティ・オペレーション・ユニットと、複数の基本
    的なセキュリティ・オペレーション・ユニットに結合さ
    れてデータを送信するバスとを含む請求項17に記載の
    装置。
  20. 【請求項20】 ソース・データのセットを記憶するメ
    モリをさらに含む請求項16に記載の装置。
  21. 【請求項21】 マクロ・セキュリティ・オペレーショ
    ンを呼び出す第1のプロセッサと、 第1のプロセッサに結合され、 マクロ・セキュリティ・オペレーションを取り出す要求
    ユニットと、 要求ユニットに結合され、マクロ・セキュリティ・オペ
    レーションに対応する複数の基本的なセキュリティ・オ
    ペレーションを実行する複数の実行ユニットとを含む第
    2のプロセッサと、 第1および第2のプロセッサに結合され、第2のプロセ
    ッサによって生成されたデータのセットを記憶するメモ
    リとを含む装置。
  22. 【請求項22】 ホスト・プロセッサからのソース・デ
    ータのセットを記憶するメモリをさらに含む請求項21
    に記載の装置。
  23. 【請求項23】 複数の実行ユニットのそれぞれが、 マクロ・セキュリティ・オペレーションを複数の基本的
    なセキュリティ・オペレーションに翻訳するマイクロコ
    ード・ユニットと、 マイクロコード・ユニットに結合され、複数の基本的な
    セキュリティ・オペレーションを待ち行列に入れる実行
    待ち行列ユニットと、 実行待ち行列ユニットに結合され、複数の基本的なセキ
    ュリティ・オペレーションを実行する複数の基本的なセ
    キュリティ・オペレーション・ユニットと、複数の基本
    的なセキュリティ・オペレーション・ユニットに結合さ
    れ、生成されたデータのセットを送信するバスとを含む
    請求項21に記載の装置。
  24. 【請求項24】 基本的なセキュリティ・オペレーショ
    ンを呼び出す第1のプロセッサと、 基本的なセキュリティ・オペレーションを実行する、複
    数の実行ユニットの第2の実行ユニットとをさらに含む
    請求項21に記載の装置。
  25. 【請求項25】 命令を提供する機械可読媒体であっ
    て、命令が1つまたは複数のプロセッサのセットによっ
    て実行されたときに、 プロセッサのセットの第1のプロセッサでマクロ・セキ
    ュリティ・オペレーションを実行し、 マクロ・セキュリティ・オペレーション呼出しに応答し
    て、プロセッサのセットの第2のプロセッサで複数の基
    本的なセキュリティ・オペレーションを実行し、 複数の基本的なセキュリティ・オペレーションの実行か
    らデータのセットを生成し、 データのセットによってセキュア・セッションを確立す
    ることを含むオペレーションを、命令が前記プロセッサ
    のセットに実行させる機械可読媒体。
  26. 【請求項26】 データのセットが、 暗号解読されたデータのセットと、 暗号化されたデータのセットと、 ハッシュされたメッセージのセットとを含む請求項25
    に記載の機械可読媒体。
  27. 【請求項27】 データのセットが、乱数のセットをさ
    らに含む請求項26に記載の機械可読媒体。
  28. 【請求項28】 第2のセキュア・セッションを確立す
    るために第2のオペレーションを呼び出す第1のプロセ
    ッサをさらに含む請求項25に記載の機械可読媒体。
  29. 【請求項29】 セキュア・セッションが、SSL3.
    0セッション、TLSセッション、IPSecセッショ
    ンである請求項25に記載の機械可読媒体。
  30. 【請求項30】 命令を提供する機械可読媒体であっ
    て、命令が1つまたは複数のプロセッサのセットによっ
    て実行されたときに、 プロセッサのセットの第1のプロセッサからマクロ・セ
    キュリティ・オペレーションを呼び出し、 マクロ・セキュリティ・オペレーションに応答して、 シークレットおよびキー・マテリアルを生成し、 クライアント・メッセージに対する第1の終了ハッシュ
    を作成し、 サーバ・メッセージに対する第2の終了ハッシュを作成
    し、かつ終了メッセージを作成するオペレーションのセ
    ットを、プロセッサのセットの第2のプロセッサで実行
    し、かつセキュア・セッションを確立することを含むオ
    ペレーションを、命令が前記プロセッサのセットに実行
    させる機械可読媒体。
  31. 【請求項31】 オペレーションのセットが、プリ・マ
    スター・シークレットおよびクライアントの終了メッセ
    ージを暗号を解読することをさらに含む請求項30に記
    載の機械可読媒体。
  32. 【請求項32】 オペレーションのセットが、乱数のセ
    ットを生成することをさらに含む請求項30に記載の機
    械可読媒体。
  33. 【請求項33】 オペレーションのセットが、予測され
    た終了メッセージを作成することをさらに含む請求項3
    0に記載の機械可読媒体。
  34. 【請求項34】 第2のセキュア・セッションを確立す
    るために第2のマクロ・セキュリティ・オペレーション
    を呼び出すことをさらに含む請求項30に記載の機械可
    読媒体。
JP2002215552A 2001-07-24 2002-07-24 セキュア・セッションを確立する方法および装置 Pending JP2003209543A (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US30764301P 2001-07-24 2001-07-24
US60/307643 2001-07-24
US10/025,509 US7240203B2 (en) 2001-07-24 2001-12-19 Method and apparatus for establishing secure sessions
US10/025509 2001-12-19

Publications (1)

Publication Number Publication Date
JP2003209543A true JP2003209543A (ja) 2003-07-25

Family

ID=26699849

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002215552A Pending JP2003209543A (ja) 2001-07-24 2002-07-24 セキュア・セッションを確立する方法および装置

Country Status (4)

Country Link
US (1) US7240203B2 (ja)
EP (1) EP1292082B1 (ja)
JP (1) JP2003209543A (ja)
TW (1) TWI243566B (ja)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7240203B2 (en) 2001-07-24 2007-07-03 Cavium Networks, Inc. Method and apparatus for establishing secure sessions
US7657933B2 (en) * 2003-04-12 2010-02-02 Cavium Networks, Inc. Apparatus and method for allocating resources within a security processing architecture using multiple groups
US7661130B2 (en) * 2003-04-12 2010-02-09 Cavium Networks, Inc. Apparatus and method for allocating resources within a security processing architecture using multiple queuing mechanisms
US7921300B2 (en) * 2003-10-10 2011-04-05 Via Technologies, Inc. Apparatus and method for secure hash algorithm
US8209537B2 (en) * 2004-03-30 2012-06-26 Hewlett-Packard Development Company, L.P. Secure information distribution between nodes (network devices)
US7751907B2 (en) * 2007-05-24 2010-07-06 Smiths Medical Asd, Inc. Expert system for insulin pump therapy
US20080306875A1 (en) * 2007-06-11 2008-12-11 Ebay Inc. Method and system for secure network connection
US8190881B2 (en) 2007-10-15 2012-05-29 Foundry Networks Llc Scalable distributed web-based authentication
JP2011034189A (ja) * 2009-07-30 2011-02-17 Renesas Electronics Corp ストリームプロセッサ及びそのタスク管理方法
US8649275B2 (en) * 2011-01-19 2014-02-11 Ixia Fast SSL testing using precalculated cryptographyc data
US9128769B2 (en) 2011-10-13 2015-09-08 Cavium, Inc. Processor with dedicated virtual functions and dynamic assignment of functional resources
US9129060B2 (en) 2011-10-13 2015-09-08 Cavium, Inc. QoS based dynamic execution engine selection
US8713311B1 (en) * 2012-11-07 2014-04-29 Google Inc. Encryption using alternate authentication key
US9251377B2 (en) 2012-12-28 2016-02-02 Intel Corporation Instructions processors, methods, and systems to process secure hash algorithms
US8924741B2 (en) 2012-12-29 2014-12-30 Intel Corporation Instruction and logic to provide SIMD secure hashing round slice functionality
US10038550B2 (en) 2013-08-08 2018-07-31 Intel Corporation Instruction and logic to provide a secure cipher hash round functionality
US10503510B2 (en) 2013-12-27 2019-12-10 Intel Corporation SM3 hash function message expansion processors, methods, systems, and instructions
US9912481B2 (en) 2014-03-27 2018-03-06 Intel Corporation Method and apparatus for efficiently executing hash operations
US9317719B2 (en) 2014-09-04 2016-04-19 Intel Corporation SM3 hash algorithm acceleration processors, methods, systems, and instructions
US9658854B2 (en) 2014-09-26 2017-05-23 Intel Corporation Instructions and logic to provide SIMD SM3 cryptographic hashing functionality
WO2017068434A1 (en) * 2015-10-21 2017-04-27 Schuster Bob A Authentication across multiple platforms
US10301495B2 (en) * 2016-06-01 2019-05-28 Canon Kabushiki Kaisha Ink jet recording method and ink jet recording apparatus
US10701176B1 (en) * 2016-09-23 2020-06-30 Amazon Technologies, Inc. Messaging using a hash ring with host groups
US11010361B1 (en) * 2017-03-30 2021-05-18 Amazon Technologies, Inc. Executing code associated with objects in a hierarchial data structure
US11070362B2 (en) * 2018-02-12 2021-07-20 Massachusetts Institute Of Technology Systems and methods for providing secure communications using a protocol engine
US10721172B2 (en) 2018-07-06 2020-07-21 Marvell Asia Pte, Ltd. Limiting backpressure with bad actors

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6088797A (en) * 1994-04-28 2000-07-11 Rosen; Sholom S. Tamper-proof electronic processing device
CN101303717B (zh) * 1995-02-13 2015-04-29 英特特拉斯特技术公司 用于安全交易管理和电子权利保护的系统和方法
KR100513138B1 (ko) * 1996-01-24 2005-09-07 선 마이크로시스템즈 인코퍼레이티드 네트워크 또는 로컬 메모리로부터 수신된 명령 세트를실행하는 프로세서 및 컴퓨터 시스템
US6233684B1 (en) * 1997-02-28 2001-05-15 Contenaguard Holdings, Inc. System for controlling the distribution and use of rendered digital works through watermaking
US6505290B1 (en) * 1997-09-05 2003-01-07 Motorola, Inc. Method and apparatus for interfacing a processor to a coprocessor
CA2634812C (en) * 1997-09-16 2010-03-30 Safenet, Inc. Cryptographic co-processor
US6173400B1 (en) * 1998-07-31 2001-01-09 Sun Microsystems, Inc. Methods and systems for establishing a shared secret using an authentication token
US6327652B1 (en) * 1998-10-26 2001-12-04 Microsoft Corporation Loading and identifying a digital rights management operating system
US6584567B1 (en) * 1999-06-30 2003-06-24 International Business Machines Corporation Dynamic connection to multiple origin servers in a transcoding proxy
US7600131B1 (en) 1999-07-08 2009-10-06 Broadcom Corporation Distributed processing in a cryptography acceleration chip
US6775772B1 (en) * 1999-10-12 2004-08-10 International Business Machines Corporation Piggy-backed key exchange protocol for providing secure low-overhead browser connections from a client to a server using a trusted third party
US6691143B2 (en) * 2000-05-11 2004-02-10 Cyberguard Corporation Accelerated montgomery multiplication using plural multipliers
US7305092B2 (en) * 2000-12-19 2007-12-04 Qualcomm Incorporated Method and system to accelerate cryptographic functions for secure e-commerce applications
US6789147B1 (en) * 2001-07-24 2004-09-07 Cavium Networks Interface for a security coprocessor
US7240203B2 (en) 2001-07-24 2007-07-03 Cavium Networks, Inc. Method and apparatus for establishing secure sessions

Also Published As

Publication number Publication date
EP1292082B1 (en) 2018-12-19
US7240203B2 (en) 2007-07-03
EP1292082A2 (en) 2003-03-12
TWI243566B (en) 2005-11-11
US20030020621A1 (en) 2003-01-30
EP1292082A3 (en) 2005-07-20

Similar Documents

Publication Publication Date Title
JP2003216591A (ja) セキュリティ・コプロセッサのためのインターフェース
JP2003209543A (ja) セキュア・セッションを確立する方法および装置
US6070198A (en) Encryption with a streams-based protocol stack
US20220138349A1 (en) Cryptographic architecture for cryptographic permutation
EP3514723B1 (en) Methods and apparatus for secure data processing and transmission
JP3789454B2 (ja) 暗号コプロセッサを有するストリームプロセッサ
US9325811B2 (en) Method and system for packet processing
US7475257B2 (en) System and method for selecting and using a signal processor in a multiprocessor system to operate as a security for encryption/decryption of data
JP2007193812A (ja) ホスト間通信のためのシステム及び方法
JP2007233381A (ja) 暗号処理に使用するグラフィック処理ユニット
JP6916454B2 (ja) ハードウェアアクアクセラレーテッド暗号法のためのキーのスレッド所有権
JP2003337736A (ja) 計算機、ハードディスク装置、複数の該計算機及び共有ハードディスク装置から構成されるディスク装置共有システム、及び該共有システムにおいて利用されるディスク装置の共有方法
CN113839770A (zh) 用于tls分组加密和解密的高吞吐量后量子aes-gcm引擎
KR100799305B1 (ko) 다중 암호엔진을 사용하는 고성능 암호화 장치
US20060013397A1 (en) Channel adapter managed trusted queue pairs
CN113810397B (zh) 协议数据的处理方法及装置
JP2003345664A (ja) 送信装置、データ処理システム及びデータ処理プログラム
KR101997996B1 (ko) Sdn 콘트롤러에서 키 관리 서버를 이용한 보안 통신 방법 및 이를 수행하는 장치
JPH10190649A (ja) 双方向データストリーム伝送装置
Xiao et al. Hardware/software adaptive cryptographic acceleration for big data processing
KR102398380B1 (ko) 키 교환 방법 및 시스템
Anderson et al. High-Performance Interface Architectures for Cryptographic Hardware
Deng et al. An object-oriented cryptosystem based on two-level reconfigurable computing architecture
Kingsy Grace et al. Joy of GPU Computing: A Performance Comparison of AES and RSA in GPU and CPU
KR20030043451A (ko) 대칭 및 비대칭키 암호 연산 처리 시스템 및 그 처리 방법