JP4298971B2 - セキュリティ・コプロセッサのためのインターフェース - Google Patents

セキュリティ・コプロセッサのためのインターフェース Download PDF

Info

Publication number
JP4298971B2
JP4298971B2 JP2002215500A JP2002215500A JP4298971B2 JP 4298971 B2 JP4298971 B2 JP 4298971B2 JP 2002215500 A JP2002215500 A JP 2002215500A JP 2002215500 A JP2002215500 A JP 2002215500A JP 4298971 B2 JP4298971 B2 JP 4298971B2
Authority
JP
Japan
Prior art keywords
requests
request
security
execution units
coprocessor
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.)
Expired - Fee Related
Application number
JP2002215500A
Other languages
English (en)
Other versions
JP2003216591A (ja
Inventor
リチャード・イー・ケスラー
ディビッド・エイ・カールソン
ムハマッド・ラヒブ・フセイン
ロバート・エイ・サンゾン
カジャ・イー・アメッド
マイケル・ディー・バーガ
Original Assignee
カビウム・ネットワークス・インコーポレーテッド,ア・デラウェア・コーポレーション
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 カビウム・ネットワークス・インコーポレーテッド,ア・デラウェア・コーポレーション filed Critical カビウム・ネットワークス・インコーポレーテッド,ア・デラウェア・コーポレーション
Publication of JP2003216591A publication Critical patent/JP2003216591A/ja
Application granted granted Critical
Publication of JP4298971B2 publication Critical patent/JP4298971B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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/166Implementing security features at a particular protocol layer at the transport 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/602Providing cryptographic facilities or services

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)
  • Advance Control (AREA)
  • Storage Device Security (AREA)
  • Multi Processors (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は処理の分野に関する。より詳細には、本発明はセキュリティ・コプロセッサのためのインターフェースに関する。
【0002】
【従来の技術】
通信ネットワークおよびそのネットワークを使用するユーザの数は増加し続けている。さらに、インターネットを介したB2BおよびB2Cに関するオンライン販売も普及し続けている。また、在宅勤務者数も増加し続けている。オンライン販売と在宅勤務のどちらも、異なる通信ネットワークを通して送信している間に保護される必要のある個人データおよび機密データを典型的に伴う通信ネットワークを使用した例である。
【0003】
したがって、セキュリティ・プロトコル(例えば、トランスポート・レイヤ・セキュリティ(TLS)、セキュア・ソケット・レイヤ(SSL)3.0、インターネット・プロトコル・セキュリティ(IPSec)等)は、遠隔システム間でのセキュア・セッションを確立するために発展してきた。これらのセキュリティ・プロトコルは、遠隔システムがメッセージ交換および計算によってセキュア・セッションを確立する方法を提供し、それによって、異なる通信ネットワークを横断して送信される機密データを安全に、かつ改ざんされずに保つことができる。
【0004】
図1は、セキュア・セッションを確立するための2相によるクライアント/サーバ交換を示す。第1の相105であるセキュリティ・ネゴシエーション相では、ネットワーク要素101(クライアント)とネットワーク要素103(サーバ)とは、2つのネットワーク要素101と103の間でセキュリティをネゴシエーションするためにメッセージを交換する。セキュリティのネゴシエーションには、2つのネットワーク要素101と103が使用すべきアルゴリズム(例えば、ハッシング・アルゴリズム、暗号化アルゴリズム、圧縮アルゴリズム等)を決定することが含まれる。第2の相107であるキー交換相では、ネットワーク要素101と103はキー情報を交換する。第2の相107は、選択した公開キーアルゴリズムおよび受け取ったメッセージの認証に基づいてメッセージを交換するネットワーク要素101と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は、ホスト・メモリ204および/またはプロセッサ202に常駐することができ、ホスト・プロセッサ202内で実行することができるプロセスまたはタスクでよい。例えば、要求処理ユニット234は、ホスト・プロセッサによって実行されるコプロセッサからのドライバでよいが、このドライバはOpenSSLとインターフェースをとる。しかし、本発明の実施形態はこのように限定されるものではなく、要求処理ユニット234は記述された処理を実行する様々なタイプのハードウェア(例えばデジタル論理)であってよい。
【0017】
ホスト・メモリ204は要求待ち行列206、入力データ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は、オペレーション・コード302、サイズ304、パラメータ306、データ長308、データ・ポインタ310、および結果ポインタ312を含む要求形式300を示す。オペレーション・コード302は、ハッシング、モジューラ演算等のためのop−codeなどのコプロセッサ212によって実行されるべき異なるセキュリティ・オペレーションを識別するop−codeを含む。サイズ304は、オペレーションのタイプに応じて、そのオペレーションに関係する様々なデータに対してサイズを定義することができる。例えば、モジューラ演算オペレーションに関するサイズ304は絶対値のサイズを含むことができ、あるいは、ハッシュ・オペレーションに関するサイズ304はハッシュされるべきデータのサイズを含むことができる。
【0021】
サイズ304と同様に、パラメータ306は、オペレーションのタイプによって、オペレーションに関係する異なるデータを定義することができる。例えば、暗号化/暗号解読用のキー生成のオペレーションの場合、パラメータ306はそのキーに対するプリ・マスターの長さを定義することができる。パラメータ306をさらに説明すると、H−MACオペレーションに関するオペレーションについては、パラメータ306はシークレットの長さを定義することができる。一実施形態では、パラメータ306は、特定のオペレーションに関しては未定義の状態で残される。
【0022】
データ長308は、(要求内で)データ・ポインタ310によって示され、要求内で定義されたセキュリティ・オペレーションのためにコプロセッサ212にコピーされる、関連付けられた入力データ208A〜208I内のデータ構造の長さを定義する。関連付けられた入力データ208A〜208Iに格納され、データ・ポインタ310によって指し示されるデータ構造は、実行されるべきセキュリティ・オペレーションのタイプに応じて様々なデータを含むことができる。一実施形態では、所与のオペレーションに関してはこの追加データ構造は必要とされず、したがってデータ・ポインタ310は使用されない。例えば、乱数を生成するオペレーションの場合、入力データ208A〜208Iには入力データは1つも格納されていない。このようなデータ構造に格納されるべきデータのタイプの説明に役立てるために、キー生成オペレーションの場合、データ構造はクライアント乱数、サーバ乱数、ラベルおよびプリ・マスター番号を含めることができる。
【0023】
結果ポインタ312は、コプロセッサ212がデータ構造に出力結果を書き込むことができる場合、ホスト・メモリ204内の位置(出力データ209A〜209Iの1つ)を定義する。一実施形態では、この書込みオペレーションはDMA書込みオペレーションによって実行される。さらに、一実施形態では、このデータ構造の最後に完了コードが入れられる(以下でさらに説明する)。説明に役立てるためにキー生成オペレーションにもう一度戻ると、関連付けられた出力データ209A〜209Iに格納されているデータ構造は、マスター・キー、キー・マテリアル、および完了コードを含むことができる。
【0024】
図2に戻って、コプロセッサ212は、相互に結合されているPeripheral Component Interconnect(PCI)ユニット230、lightening data transport(LDT)ユニット232、キーユニット244、要求ユニット214、ドアベル・レジスタ220、実行ユニット216A〜216I、実行ユニット217A〜217I、乱数ジェネレータ・ユニット218、および要求バッファ222を含む。さらに、PCIユニット230とLDTユニット232はシステム・バス210に結合されている。PCIユニット230とLDTユニット232は、コプロセッサ212とホスト・メモリ204の様々な構成要素、ホスト・プロセッサ202、および要求処理ユニット234の間で通信を実現する。PCIユニットとLDTユニットがシステム・バスに結合するために使用される一実施形態が説明されているが、代替形態は様々なバスを使用することができる。
【0025】
いくつかの実行ユニット216および217と、いくつかの乱数ジェネレータ・ユニット218は、限定するためではなく例示の目的で示されており、コプロセッサ212内にはこれらのユニットより少ない数でも多い数でも含むことができる。実行ユニット217A〜217Iのより詳細な図面およびオペレーションを、図8に関連して以下で説明する。乱数ジェネレータ・ユニット218は、キーの生成のために乱数を生成する。キーユニット244は、様々なセキュリティ・オペレーションを処理するために後で使用することのできる、実行ユニット217A〜217Iに対するキーをコプロセッサ212内にローカルに格納することができ、コプロセッサ212の外部にあるメモリからそのようなキーを取り出すことは必要としない。要求ユニット214は、ドアベル・レジスタ220に挿入された値に基づいて要求待ち行列206内の要求を抽出し、その要求を処理するために実行ユニット217A〜217Iに分配するが、これについては以下でより詳細に説明する。要求バッファ222は、実行ユニット216〜217が処理するために要求ユニット214が抽出した要求を格納することができる。
【0026】
マクロ・セキュリティ・オペレーション
図4は、本発明の一実施形態によるセキュアなSSL3.0セッションの確立の一例を示す図面である。図4では、クライアント401とサーバ403は、セキュア・セッションを確立するためにハンドシェーク・メッセージを交換する。サーバ403はコプロセッサ212に対してセキュリティ・オペレーション407、409、423、および425のセットを送る。ホスト・プロセッサ210からコプロセッサ212に送信されるセキュリティ・オペレーションのセットのそれぞれは、基本的なセキュリティ・オペレーションであっても、マクロ・セキュリティ・オペレーションであってもよい。図4に示した実施形態では、セキュリティ・オペレーション409、423、および425のセットはマクロ・セキュリティ・オペレーションである。各マクロ・セキュリティ・オペレーションは、コプロセッサ212の実行ユニット216〜217の1つによって実行される。
【0027】
クライアント401は、最初にクライアント・ハロー・メッセージ405をサーバ403に送る。クライアント403は、任意選択で追加メッセージを送ることができる。サーバ403のホスト・プロセッサ201は、コプロセッサ212が実行すべき乱数セキュリティ・オペレーション407を呼び出す。乱数ジェネレータ218は、乱数オペレーション407に応答して一つまたは複数の乱数を生成し、格納する。本発明の一実施形態では、乱数オペレーション407は、単一の乱数を生成する基本的なセキュリティ・オペレーションである。本発明の別の実施形態では、乱数セキュリティ・オペレーションは、乱数のベクトルを生成するマクロ・セキュリティ・オペレーションである。本発明の代替形態では、ホスト・プロセッサ201は、コプロセッサ212とは別個に配置されている乱数ジェネレータ218が実行すべき乱数オペレーション407を呼び出す。本発明の別の実施形態では、乱数はセッションを確立する前に生成される。一つまたは複数の乱数が生成された後で、サーバ403はセキュリティ・ネゴシエーション・オペレーション409をコプロセッサ212に送る。
【0028】
セキュリティ・ネゴシエーション・オペレーション409を実行した後、コプロセッサ212は蓄積されたハンドシェーク・メッセージ(クライアント・ハロー405およびいかなる任意選択のメッセージ)の部分ハッシュを作成する。サーバ403は、一つまたは複数の乱数と、コプロセッサ212によるセキュリティ・ネゴシエーション・オペレーション409の実行によって得られるデータとを使用して、クライアント401に送信されるメッセージのセットを作成する。サーバ403は、サーバ・ハロー・メッセージ411、証明書413、およびサーバのハロー終了メッセージ415を送る。本発明の別の実施形態では、追加の任意選択メッセージがクライアント401に送信される。
【0029】
SSL3.0のセキュア・セッションを確立するキー交換相では、クライアント401はクライアント・キー交換メッセージ417、暗号スペック変更メッセージ419、およびクライアント終了メッセージ421を送る。サーバ403がこのメッセージ417、419および421のセットを受け取った後、サーバ403上のホスト・プロセッサ201は、コプロセッサ212が実行すべきキー交換オペレーション423および終了オペレーション425を呼び出す。キー交換セキュリティ・オペレーション423を実行した結果、コプロセッサ212は1)暗号解読したプリ・マスター・シークレットと、2)マスター・シークレットおよびキー・マテリアルと、3)蓄積されたハンドシェーク・メッセージの部分ハッシュ(ハッシュされたクライアント・ハロー405およびメッセージ417、419および421のセット)とを作成する。終了オペレーション425を実行した結果、コプロセッサ212は、1)暗号解読したクライアントの終了メッセージと、2)クライアントの終了メッセージ421に対する終了ハッシュと、3)サーバの終了メッセージ429に対する終了ハッシュと、4)メッセージ認証コード(MAC)付きの暗号化されたサーバの終了メッセージとを生成する。キー交換オペレーション423および終了オペレーション425からのデータを使用して、サーバ403は、1)クライアントから受け取ったメッセージを検証し、2)暗号スペック変更メッセージ427およびサーバの終了メッセージ429をクライアント401に送る。
【0030】
図5は、本発明の一実施形態による図4に示したマクロ・セキュリティ・オペレーションのための基本的セキュリティ・オペレーションのグループを示す表である。「マクロ・セキュリティ・オペレーション」と標示された欄では、ネゴシエーション・セキュリティ・オペレーション407、キー交換オペレーション409、および終了オペレーション425が識別される。この表は、これらのマクロ・セキュリティ・オペレーションのそれぞれを実行するときに、コプロセッサ212の実行ユニット216〜217の1つが実行する基本的セキュリティ・オペレーションのグループを示している。セキュリティ・ネゴシエーション・オペレーション407を実行するときに、実行ユニット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は、サーバ403がクライアント401からメッセージ417、419および421のセットを受け取った後で呼び出される。単一呼び出しによって、コプロセッサ212(乱数の呼び出しは含まない)は、セキュア・セッションを確立するためにホスト・プロセッサ201に必須のデータを供給する。
【0033】
図7は、本発明の一実施形態によるサーバ・フル・ハンドシェーク・オペレーション701のための一群の基本的オペレーションを示す表である。サーバ・フル・ハンドシェーク・オペレーション601を実行する実行ユニット216〜217の1つは、1)暗号解読オペレーション、2)暗号化オペレーション、3)モジュラ計算オペレーション、および4)35のハッシュ・オペレーションの基本的なセキュリティ・オペレーションを実行する。したがって、この実行ユニットは、サーバ・フル・ハンドシェーク・オペレーション601を完了するために、約39の基本的セキュリティ・オペレーションを実行する。このサーバ・フル・ハンドシェーク・オペレーション601の例では、クライアントの終了メッセージ421は暗号解読されない。クライアントの終了メッセージ421は暗号解読されないのは、予想されるクライアントの終了メッセージがコプロセッサ212によって作成されるからである。サーバ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は実行待ち行列ブロック805に結合されている。実行待ち行列ブロック805は基本的セキュリティ・オペレーション・ブロックのセットに結合されている。この基本的セキュリティ・オペレーション・ブロックには、拡張暗号化規格(AES)ブロック807、トリプル・データ暗号化規格(3DES)ブロック809、モジューラ指数(modular exponentiation)ブロック811、ハッシュ・ブロック813、単純算術および論理ブロック815、および仮定のRC4(登録商標)ブロック819が含まれる。本発明の代替形態は、この基本的セキュリティ・オペレーション・ブロックにさらに基本的セキュリティ・オペレーション・ブロックを追加することも、これより少なくすることもできる。バス821は基本的セキュリティ・オペレーション・ブロック807、809、811、813、819と、レジスタ・ファイル・ブロック817を結合する。
【0037】
マイクロコード・ブロック801は、セキュリティ・オペレーションを1つまたは複数の基本的セキュリティ・オペレーションに翻訳し、その1つまたは複数の基本的セキュリティ・オペレーションをマイクロコントローラ・ブロック803に渡す。マイクロコントローラ・ブロック803は、レジスタ・ファイル817から、それぞれの基本的セキュリティ・オペレーションに対して該当するデータを取り出す。基本的セキュリティ・オペレーションは、マイクロコントローラ・ブロック803によって実行待ち行列805に入れられる。ある基本的セキュリティ・オペレーションに対応する基本的セキュリティ・オペレーション・ブロックが、その基本的セキュリティ・オペレーションを実行することができるとき、実行待ち行列805はその基本的セキュリティ・オペレーションを該当する基本的セキュリティ・オペレーション・ブロック807、809、811、813、815、または819にプッシュする。基本的セキュリティ・オペレーション・ブロック807、809、811、813、815、または819によるその基本的セキュリティ・オペレーションの実行が完了すると、その基本的セキュリティ・オペレーション・ブロックは、その結果をレジスタ・ファイル817またはバス821に渡す。ホスト・プロセッサ201からの要求のセキュリティ・オペレーション(マクロまたは基本的セキュリティ・オペレーション)の結果は、実行ユニット216〜217によってDMA転送を使用してメイン・メモリの該当位置まで転送される。
【0038】
一実施形態は、各実行ユニットが固有のマイクロコード・ブロックを有するように示しているが、代替形態は1つまたは複数の実行ユニットに単一マイクロコード・ブロックを共有させる。さらに別の実施形態は、中央マイクロコード・ブロック(例えば、SRAM)を有するが、その内容は、次回の電源投入時に実行ユニットのそれぞれの中にあるローカル・マイクロコード・ブロックにロードされる。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〜217の1つは、実行ユニット216〜217の別の2つがそれらのオペレーションの実行を完了する前に(セキュリティ・ネゴシエーション・オペレーション409がキー交換オペレーション423よりも短時間しか要しないと仮定して)、オペレーション409の実行を完了することになる。したがって、ホスト・プロセッサ201からのオペレーションは、実行ユニット216〜217に対して順番通りに発行することができるが、実行ユニット216〜217はそれらを順不同で完了することができる。
【0041】
セキュア・セッションを確立するための機能を実行するためにコプロセッサ212を利用することによって、システムおよびそのホスト・プロセッサ201の効率が高められる。コプロセッサ2121は、消費されるホスト・プロセッサ201の資源を低減することによって、セキュア・セッションの確立を可能にする。より多くのセキュア・セッションをさらに高速に確立することができる。さらに、セキュリティ機能のために既に費やされた資源をホスト・プロセッサ201が使用することができるので、システムの全体的なパフォーマンスも高められることになる。これらのホスト・プロセッサ201の資源は、システム監視、トラフィック監視等に適用することができる。
【0042】
さらに、実行ユニット216〜217の並行した順不同の特性は、セキュリティ・オペレーションを実施するために柔軟性を実現する。変化する顧客ニーズに合わせるために、様々な細分化レベルのマクロ・セキュリティ・オペレーションを実施することができる。順不同の完了を可能にする実施形態を示したが、代替形態は、要求の順番通りの完了を要求するためのハードウェアを含む。
【0043】
一実施形態では、要求処理ユニット234はホスト・プロセッサが実行するコプロセッサ・ドライバである。本発明の一実施形態では、コプロセッサ・ドライバはOpenSSLの修正版とインターフェースをとる。OpenSSLの修正版は、基本的セキュリティ・オペレーションとは反対に、マクロ・セキュリティ・オペレーションをドライバに伝達するように変更される。
【0044】
要求処理ユニット234によるセキュリティ・オペレーションの処理
マクロ・セキュリティ・オペレーションを使用することによって、所与のセキュア・セッションに関するホスト・プロセッサとセキュリティ・コプロセッサとの間の通信数を減少させると、システム・パフォーマンスを高めることができるが、コプロセッサのアーキテクチャに対してより伝わり易いタスクおよび結果の伝達方法は、ホスト・プロセッサとセキュリティ・コプロセッサとの間におけるパフォーマンスを高めることができる。具体的には、既に指摘したように、本発明の別の形態は、コプロセッサが複数の実行ユニットを有する場合に、ホスト・プロセッサとセキュリティ・コプロセッサとの間でのタスクと結果の伝達である。より具体的には、連続的フロー可能なタスクの引き渡しおよび結果返還の機構が使用される。連続的フロー可能なタスクの引き渡しおよび結果返還の機構によって、ホスト・プロセッサは連続してタスクを追加することができ(待ち行列が満杯でない限り)、セキュリティ・コプロセッサは連続して結果を返還することができる(ホスト・プロセッサがセキュリティ・コプロセッサに別の作業ブロックを転送できる前にコプロセッサが完了すべき作業ブロックを必要とする機構とは反対に)。図2、9および10は、非割込み駆動型の連続的フロー機構の一実施形態を説明しているが、代替形態は様々なフロー機構を使用することができる。
【0045】
セキュリティ・オペレーションの処理をさらに説明するために、図9は、本発明の実施形態による要求処理ユニット234(図2を参照のこと)による要求の処理の流れ図を示す。方法900は、処理ブロック902で、セキュリティ・オペレーションに対するいくつかの要求の1つを受け取ることから始まる。一実施形態では、この要求は、前述したマクロ・オペレーションおよび/または基本的オペレーションを含む。一実施形態では、処理ブロック904で、要求処理ユニット234は、その要求に関連するデータ、例えばセキュリティ・オペレーションに対するオペランドなどを入力データ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〜209Iへのポインタを含むことができる。処理ブロック912で、要求処理ユニット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〜217の1つによって処理されるべき要求待ち行列206から受け取った要求を格納するためにコプロセッサ212は要求バッファ222を含む。図8に示す前述の実施形態のように、いくつかの実行ユニット216〜217のそれぞれは、このようなユニットに対して、限定はしないが前述のような(異なる要求の説明に関連して)オペレーションを含めて、いくつかの異なるセキュリティ・オペレーションを実行することを可能にするマイクロコードを含むか、またはそのようなマイクロコードに対するアクセス権を有する。すなわち、実行ユニット216〜217の所与の1つは、ハッシュ・オペレーションなどの所与の機能に限定されるものではないが、別の実行ユニット216〜217の1つはセキュリティ・オペレーションのためのキーの生成に限定される。そうではなく、いくつかの実行ユニット216〜217のそれぞれは、いくつかの異なる基本的およびマクロ・セキュリティ・オペレーションを実行することができる。
【0057】
処理決定ブロック1010で、コプロセッサ212には要求をローカルに格納するために使用可能なバッファ空間がないかどうか、かつ/またはそのような要求を処理するために使用可能な実行ユニット216〜217があるかどうかを判定する際、要求ユニット214はこの使用可能なバッファ空間または実行ユニット216〜217に関して確認を続ける。一実施形態では、要求ユニット214は、コプロセッサ212内の実行ユニット216〜217または他の制御回路から受け取った信号からそのような可用性を判定することができる。反対に、要求をローカルに格納するために使用可能なコプロセッサ212内のバッファ空間、および/または、そのような要求を処理するために使用可能な実行ユニット216〜217があると判定した場合、処理ブロック1012で、要求ユニット214は要求待ち行列206から1つまたは複数の要求を取り出す。一実施形態では、要求ユニット214は、DMA読取りオペレーションを使用して要求待ち行列206から1つまたは複数のそのような要求を取り出す。
【0058】
さらに、処理ブロック1014で、要求ユニット214は、それらの要求に関する関連する入力データ208A〜208Iをホスト・メモリ204から取り出す。一実施形態では、入力データ208A〜208Iはホスト・メモリ204に連続して格納される。このような一実施形態では、要求ユニット214は、そのようなデータが連続して格納されているということから、単一DMA読取を使用してこの関連する入力データ208A〜208Iを取り出す。したがって、複数の要求をコプロセッサ2121に転送するためには2つのDMAオペレーションだけでよく、したがって、所与のセキュリティ・オペレーションに関する全体の処理速度は向上する。
【0059】
処理ブロック1016で、コプロセッサ内のユニット(要求ユニット214、実行ユニット216〜217、および乱数ジェネレータ・ユニット218を含む)は要求を処理する。要求ユニット214は、これらの取り出された要求を実行ユニット216〜217および乱数ジェネレータ・ユニット218に分配または与える。一実施形態において、各実行ユニット216〜217は、受け取った様々なタイプのいかなるセキュリティ・オペレーションでも処理することができるので、要求ユニット214は、そのような要求の処理のために使用可能な実行ユニット216〜217の第1の実行ユニットに要求を送ることができる。
【0060】
処理ブロック1016で、所与の要求に関して、実行ユニット216〜217の1つが要求の処理を完了すると、この実行ユニット216〜217は、要求の結果ポインタ212(図3に示す)が指すホスト・メモリ204内の位置(出力データ209A〜209Iの1つ)にこの要求の結果を格納する。要求内のオペレーションの実際の結果に加え、実行ユニット216〜217は完了コード内に値、例えば要求が完了したことを示す非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】本発明の実施形態による、要求処理ユニット234による要求処理の流れ図である。
【図10】本発明の実施形態による、コプロセッサ212による要求処理の流れ図である。
【符号の説明】
202 ホスト・プロセッサ
204 ホスト・メモリ
206 要求待ち行列
210 システム・バス
212 コプロセッサ
214 要求ユニット
216A〜216I 実行ユニット

Claims (44)

  1. コプロセッサで実行される方法であって、
    要求ユニットによって、セキュリティ・オペレーションのための複数の要求を、ホスト・メモリ中の要求待ち行列から順番通りに取り出す取り出し動作を行い、
    前記要求ユニットによって、取り出した前記複数の要求を、複数の実行ユニットにそれらの可用性に基づいて分配し、
    それらの複数の実行ユニットによって、セキュリティ・オペレーションのための前記複数の要求を処理し、
    セキュリティ・オペレーションのための前記複数の要求の結果を、前記ホスト・メモリ内の位置に出力する出力動作にして、それら結果を出力する順番が、前記要求待ち行列から取り出した際の順番とは異なってもよい出力動作を行うことを含む、コプロセッサで実行される方法。
  2. 複数の要求が、複数の異なるセキュア・ソケット・レイヤ・セッションに関係し、複数の要求は相互に依存しなくてよい請求項1に記載の方法。
  3. 複数の要求の1つを処理する時間が、複数の要求の他の1つを処理する時間と異なってもよい請求項1に記載の方法。
  4. 複数の実行ユニットのそれぞれが、複数の要求内の異なるタイプのセキュリティ・オペレーションのどれでも処理することができる請求項1に記載の方法。
  5. 前記複数の要求の少なくとも1つとして、暗号解読オペレーション,暗号化オペレーション,ハッシュ・オペレーション,モジュラ・オペレーションを含む一群の基本的セキュリティ・オペレーションから選択した1つの基本的セキュリティ・オペレーションが含まれ、そして、複数の基本的セキュリティ・オペレーションを表すマクロ・セキュリティ・オペレーションが含まれ得る、ことを特徴とする請求項1に記載の方法。
  6. 前記複数の要求の前記取り出し動作が、前記要求待ち行列から複数の要求を第1の直接メモリ・アクセス(DMA)読取りオペレーションを使用して取り出すことを含み、さらに、前記ホスト・メモリからそれらの複数の要求に関係する入力データ構造を第2のDMA読取りオペレーションを使用して取り出すことを含む請求項1に記載の方法。
  7. 前記複数の要求の前記結果の出力動作が、DMA書込みオペレーションを使用して複数の要求の結果を出力することを含む請求項6に記載の方法。
  8. 前記複数の要求の結果の、前記ホスト・メモリ内の位置への前記出力動作が、前記複数の要求の結果を、前記複数の要求に格納されているポインタに基づいて前記ホスト・メモリ内の位置に出力することを含む請求項1に記載の方法。
  9. 前記複数の要求の結果の、前記ホスト・メモリ内の位置への前記出力動作が、前記ホスト・メモリ内の位置へ、要求の完了を示す完了コード値をセットすることを含む請求項1に記載の方法。
  10. ホスト・プロセッサで実行される方法であって、
    ホスト・メモリ内の要求待ち行列に、セキュリティ・オペレーションのための複数の要求を、順番通りに格納し、
    前記複数の要求に関係するデータを、前記ホスト・メモリ内の複数の入力データ構造に格納し、
    複数の出力データ構造にして、コプロセッサによって前記複数の要求の結果が書き込まれるべき複数の出力データ構造を、前記ホスト・メモリに構成し、当該コプロセッサが、前記要求待ち行列からの複数の要求の取り出しの順番とは異なる順番で結果を書き込むことができ、
    前記複数の要求のそれぞれについて、前記ホスト・プロセッサでの実行のためにスレッドを構成し、各スレッドにおいて、当該要求に対応する出力データ構造に格納された完了コード値にして当該要求がコプロセッサによって完了したことを示す完了コード値が、定期的に確認されることを特徴とする、ホスト・プロセッサで実行される方法。
  11. 前記要求待ち行列に複数の要求を格納している動作中に、前記要求待ち行列がロックされる請求項10に記載の方法。
  12. 前記要求待ち行列に格納されている前記複数の要求を、コプロセッサのメモリ位置に書き込むことをさらに含む請求項10に記載の方法。
  13. 各スレッドが異なるセキュリティ・ソケット・レイヤ・セッションに関連付けられる請求項10に記載の方法。
  14. 各スレッド、他のスレッドの要求とは無関係に自己の要求に関して完了コードの値を確認する請求項10に記載の方法。
  15. 前記複数の要求の少なくとも1つとして、暗号解読オペレーション,暗号化オペレーション,ハッシュ・オペレーション,モジュラ・オペレーションを含む一群の基本的セキュリティ・オペレーションから選択した1つの基本的セキュリティ・オペレーションが含まれ、そして、複数の基本的セキュリティ・オペレーションを表すマクロ・セキュリティ・オペレーションが含まれ得る、ことを特徴とする請求項10に記載の方法。
  16. セキュリティ・オペレーションのための複数の要求を処理する複数の実行ユニットを備え、前記複数の実行ユニットは、前記複数の要求の結果を、それらの複数の要求に格納されているポインタに基づいて、遠隔メモリ内にあって、それらの複数の要求に対応する複数の出力データ構造に出力するものであり、かつ、当該結果を、要求待ち行列から複数の要求の取り出しの順番とは異なる順番で出力することができ、
    前記複数の実行ユニットに結合されている要求ユニットを備え、前記要求ユニットは、前記複数の要求の一部を前記遠隔メモリ内の要求待ち行列から取り出し、そして、前記複数の要求の一部に関連する入力データ構造を前記遠隔メモリから取り出し、且つ、取り出したそれらの要求を、前記複数の実行ユニットによる処理のために、前記実行ユニットにそれらの可用性に基づいて分配する、ことを特徴とするプロセッサ。
  17. 複数の要求が、複数の異なるセキュア・ソケット・レイヤ・セッションに関係し、複数の要求が相互に依存しなくてよい請求項16に記載のプロセッサ。
  18. 複数の要求の1つを処理する時間が、複数の要求の他の1つを処理する時間と異なってよい請求項16に記載のプロセッサ。
  19. 前記複数の実行ユニットのそれぞれが、複数の要求のセキュリティ・オペレーションの何れのタイプでも処理することができる請求項16に記載のプロセッサ。
  20. 前記複数の要求の少なくとも1つとして、暗号解読オペレーション,暗号化オペレーション,ハッシュ・オペレーション,モジュラ・オペレーションを含む一群の基本的セキュリティ・オペレーションから選択した1つの基本的セキュリティ・オペレーションが含まれ、そして、複数の基本的セキュリティ・オペレーションを表すマクロ・セキュリティ・オペレーションが含まれ得る、ことを特徴とする請求項16に記載のプロセッサ。
  21. 前記要求ユニットが、第1の直接メモリ・アクセス(DMA)読取りオペレーションを使用して前記要求待ち行列から前記複数の要求を取り出し、更に、第2のDMA読取りオペレーションを使用して、複数の関連する入力データ構造を取り出す、ことを特徴とする請求項16に記載のプロセッサ。
  22. 前記複数の実行ユニットが、DMA書込みオペレーションを使用して、前記複数の要求の結果を前記複数の出力データ構造に出力する、ことを特徴とする請求項21に記載のプロセッサ。
  23. システム・バスに結合されているホスト・プロセッサを備え、
    前記システム・バスに結合されているホスト・メモリを備え、このホスト・メモリには、セキュリティ・オペレーションのための複数の要求を、それらの順番通りに含む要求待ち行列と、前記複数の要求に関連するデータを含むための複数の入力データ構造と、前記複数の要求の処理からの結果を含むための複数の出力データ構造とが格納されており、
    さらに、前記システム・バスに結合されているコプロセッサを備えてなるシステムであって、前記コプロセッサが、
    セキュリティ・オペレーションのための複数の要求を処理する複数の実行ユニットを備え、前記複数の実行ユニットは、前記複数の要求の結果を、それらの複数の要求に格納されているポインタに基づいて、それらの複数の要求に対応する複数の出力データ構造に出力するものであり、かつ、それらの結果を、前記要求待ち行列からの複数の要求の取り出しの順番とは異なる順番で出力することができ、
    前記複数の実行ユニットに結合されている要求ユニットを備え、前記要求ユニットは、前記複数の要求の一部を前記要求待ち行列から取り出し、そして、複数の要求の一部に関連する入力データ構造を前記ホスト・メモリから取り出し、且つ、取り出したそれらの要求を、前記複数の実行ユニットによる処理のために、前記実行ユニットにそれらの可用性に基づいて分配することを特徴とするを含むシステム。
  24. 複数の要求が複数の異なるセキュア・ソケット・レイヤ・セッションに関係し、複数の要求が相互に依存しなくてよい請求項23に記載のシステム。
  25. 複数の要求の1つを処理する時間が、複数の要求の他の1つを処理する時間と異なってよい請求項23に記載のシステム。
  26. 複数の実行ユニットのそれぞれが、複数の要求内の異なるタイプのセキュリティ・オペレーションの何れのタイプでも処理することができる請求項23に記載のシステム。
  27. 前記複数の要求の少なくとも1つとして、暗号解読オペレーション,暗号化オペレーション,ハッシュ・オペレーション,モジュラ・オペレーションを含む一群の基本的セキュリティ・オペレーションから選択した1つの基本的セキュリティ・オペレーションが含まれ、そして、複数の基本的セキュリティ・オペレーションを表すマクロ・セキュリティ・オペレーションが含まれ得る、ことを特徴とする請求項23に記載のシステム。
  28. 前記要求ユニットが、第1の直接メモリ・アクセス(DMA)読取りオペレーションを使用して前記複数の要求を前記要求待ち行列から取り出し、更に、第2のDMA読取りオペレーションを使用して複数の関連する入力データ構造を取り出す、ことを特徴とする請求項23に記載のシステム。
  29. 前記複数の実行ユニットが、DMA書込みオペレーションを使用して、前記複数の要求の結果を前記複数の出力データ構造に出力する、ことを特徴とする請求項28に記載のシステム。
  30. プログラムを記録したコンピュータ読み取り可能な記録媒体であって、コンピュータによって実行されたときに、コンピュータが、
    コンピュータで実現される要求ユニットによって、セキュリティ・オペレーションのための複数の要求を、ホスト・メモリ中の要求待ち行列から順番通りに取り出す取り出し動作を行い、
    前記要求ユニットによって、取り出した前記複数の要求を、コンピュータで実現される複数の実行ユニットにそれらの可用性に基づいて分配し、
    それらの複数の実行ユニットによって、セキュリティ・オペレーションのための前記複数の要求を処理し、
    セキュリティ・オペレーションのための前記複数の要求の結果を、前記ホスト・メモリ内の位置に出力する出力動作にして、それら結果を出力する順番が、前記要求待ち行列から取り出した際の順番とは異なってもよい出力動作を行う、プログラムを記録したコンピュータ読み取り可能な記録体。
  31. 前記複数の要求が、複数の異なるセキュア・ソケット・レイア・セッションに関係し、複数の要求が相互に依存しなくてよい請求項30に記載の記録媒体。
  32. 複数の要求の1つを処理する時間が、複数の要求の他の1つを処理する時間と異なってもよい請求項30に記載の記録媒体。
  33. 複数の実行ユニットのそれぞれが、複数の要求内の異なるタイプのセキュリティ・オペレーションのどれでも処理することができる請求項30に記載の記録媒体。
  34. 前記複数の要求の少なくとも1つとして、暗号解読オペレーション,暗号化オペレーション,ハッシュ・オペレーション,モジュラ・オペレーションを含む一群の基本的セキュリティ・オペレーションから選択した1つの基本的セキュリティ・オペレーションが含まれ、そして、複数の基本的セキュリティ・オペレーションを表すマクロ・セキュリティ・オペレーションが含まれ得る、ことを特徴とする請求項30に記載の記録媒体。
  35. 前記複数の要求の取り出し動作が、前記要求待ち行列から複数の要求を第1の直接メモリ・アクセス(DMA)読取りオペレーションを使用して取り出し、
    第2のDMA読取りオペレーションを使用して、複数の要求に関係する入力データ構造を前記ホスト・メモリから取り出すことを含む請求項30に記載の記録媒体。
  36. 前記複数の要求の前記結果の出力動作が、DMA書込みオペレーションを使用して複数の要求の結果を出力することを含む請求項35に記載の記録媒体。
  37. 前記複数の要求の結果の、前記ホスト・メモリ内の位置への前記出力動作が、前記複数の要求の結果を、前記複数の要求に格納されているポインタに基づいて前記ホスト・メモリ内の位置に出力することを含む請求項30に記載の記録読媒体。
  38. 前記複数の要求の結果の、前記ホスト・メモリ内の位置への出力動作が、前記ホスト・メモリ内の位置へ、要求の完了を示す完了コード値をセットすることを含む請求項30に記載の記録媒体。
  39. プログラムを記録したコンピュータ読み取り可能な記録媒体であって、コンピュータによって実行されたときに、コンピュータが、
    ホスト・メモリ内の要求待ち行列に、セキュリティ・オペレーションのための複数の要求を、順番通りに格納し、
    前記複数の要求に関係するデータを、前記ホスト・メモリ内の複数の入力データ構造に格納し、
    複数の出力データ構造にして、コプロセッサによって前記複数の要求の結果が書き込まれるべき複数の出力データ構造を、前記ホスト・メモリに構成し、当該コプロセッサが、前記要求待ち行列からの複数の要求の取り出しの順番とは異なる順番で結果を書き込むことができ、
    前記複数の要求のそれぞれについて、前記ホスト・プロセッサでの実行のためにスレッドを構成し、各スレッドにおいて、当該要求に対応する出力データ構造に格納された完了コード値にして当該要求がコプロセッサによって完了したことを示す完了コード値が、定期的に確認されることを特徴とする、プログラムを記録したコンピュータ読み取り可能な記録媒体。
  40. 前記要求待ち行列が、前記複数の要求を格納している動作中に、ロックされる請求項39に記載の記録媒体。
  41. 前記要求待ち行列に格納されている前記複数の要求を、コプロセッサのメモリ位置に書き込むことをさらに含む請求項39に記載の記録媒体。
  42. 各スレッドが、異なるセキュリティ・ソケット・レイヤ・セッションに関連する請求項39に記載の記録媒体。
  43. 各スレッド、他のスレッドの要求とは無関係に自己の要求に関して完了コードの値を確認する請求項39に記載の記録媒体。
  44. 前記複数の要求の少なくとも1つとして、暗号解読オペレーション,暗号化オペレーション,ハッシュ・オペレーション,モジュラ・オペレーションを含む一群の基本的セキュリティ・オペレーションから選択した1つの基本的セキュリティ・オペレーションが含まれ、そして、複数の基本的セキュリティ・オペレーションを表すマクロ・セキュリティ・オペレーションが含まれ得る、ことを特徴とする請求項39に記載の記録媒体。
JP2002215500A 2001-07-24 2002-07-24 セキュリティ・コプロセッサのためのインターフェース Expired - Fee Related JP4298971B2 (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/025512 2001-12-19
US10/025,512 US6789147B1 (en) 2001-07-24 2001-12-19 Interface for a security coprocessor

Publications (2)

Publication Number Publication Date
JP2003216591A JP2003216591A (ja) 2003-07-31
JP4298971B2 true JP4298971B2 (ja) 2009-07-22

Family

ID=26699851

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002215500A Expired - Fee Related JP4298971B2 (ja) 2001-07-24 2002-07-24 セキュリティ・コプロセッサのためのインターフェース

Country Status (4)

Country Link
US (1) US6789147B1 (ja)
EP (1) EP1282025B8 (ja)
JP (1) JP4298971B2 (ja)
TW (1) TW576963B (ja)

Families Citing this family (141)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7480939B1 (en) * 2000-04-28 2009-01-20 3Com Corporation Enhancement to authentication protocol that uses a key lease
US7240203B2 (en) * 2001-07-24 2007-07-03 Cavium Networks, Inc. Method and apparatus for establishing secure sessions
US7085850B2 (en) * 2001-08-22 2006-08-01 International Business Machines Corporation Stateless message processing scheme for network processors interactions
US6658091B1 (en) 2002-02-01 2003-12-02 @Security Broadband Corp. LIfestyle multimedia security system
US7305567B1 (en) 2002-03-01 2007-12-04 Cavium Networks, In. Decoupled architecture for data ciphering operations
US7003610B2 (en) * 2002-09-20 2006-02-21 Lsi Logic Corporation System and method for handling shared resource writes arriving via non-maskable interrupts (NMI) in single thread non-mission critical systems with limited memory space
US7337314B2 (en) * 2003-04-12 2008-02-26 Cavium Networks, Inc. Apparatus and method for allocating resources within a security processor
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
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
US7519833B2 (en) 2003-04-18 2009-04-14 Via Technologies, Inc. Microprocessor apparatus and method for enabling configurable data block size in a cryptographic engine
US7844053B2 (en) * 2003-04-18 2010-11-30 Ip-First, Llc Microprocessor apparatus and method for performing block cipher cryptographic functions
US7529368B2 (en) 2003-04-18 2009-05-05 Via Technologies, Inc. Apparatus and method for performing transparent output feedback mode cryptographic functions
US8060755B2 (en) * 2003-04-18 2011-11-15 Via Technologies, Inc Apparatus and method for providing user-generated key schedule in a microprocessor cryptographic engine
US7542566B2 (en) 2003-04-18 2009-06-02 Ip-First, Llc Apparatus and method for performing transparent cipher block chaining mode cryptographic functions
US7321910B2 (en) 2003-04-18 2008-01-22 Ip-First, Llc Microprocessor apparatus and method for performing block cipher cryptographic functions
US7529367B2 (en) 2003-04-18 2009-05-05 Via Technologies, Inc. Apparatus and method for performing transparent cipher feedback mode cryptographic functions
US7532722B2 (en) * 2003-04-18 2009-05-12 Ip-First, Llc Apparatus and method for performing transparent block cipher cryptographic functions
US7502943B2 (en) 2003-04-18 2009-03-10 Via Technologies, Inc. Microprocessor apparatus and method for providing configurable cryptographic block cipher round results
US7539876B2 (en) 2003-04-18 2009-05-26 Via Technologies, Inc. Apparatus and method for generating a cryptographic key schedule in a microprocessor
US7925891B2 (en) * 2003-04-18 2011-04-12 Via Technologies, Inc. Apparatus and method for employing cryptographic functions to generate a message digest
US7900055B2 (en) 2003-04-18 2011-03-01 Via Technologies, Inc. Microprocessor apparatus and method for employing configurable block cipher cryptographic algorithms
US7536560B2 (en) 2003-04-18 2009-05-19 Via Technologies, Inc. Microprocessor apparatus and method for providing configurable cryptographic key size
US7392400B2 (en) * 2003-04-18 2008-06-24 Via Technologies, Inc. Microprocessor apparatus and method for optimizing block cipher cryptographic functions
US7644197B1 (en) * 2003-10-15 2010-01-05 Sun Microsystems, Inc. Queue management by multiple processors
US8176545B1 (en) * 2003-12-19 2012-05-08 Nvidia Corporation Integrated policy checking system and method
US11677577B2 (en) 2004-03-16 2023-06-13 Icontrol Networks, Inc. Premises system management using status signal
US9609003B1 (en) 2007-06-12 2017-03-28 Icontrol Networks, Inc. Generating risk profile using data of home monitoring and security system
US11811845B2 (en) 2004-03-16 2023-11-07 Icontrol Networks, Inc. Communication protocols over internet protocol (IP) networks
US8996665B2 (en) 2005-03-16 2015-03-31 Icontrol Networks, Inc. Takeover processes in security network integrated with premise security system
US10127802B2 (en) 2010-09-28 2018-11-13 Icontrol Networks, Inc. Integrated security system with parallel processing architecture
US11368429B2 (en) 2004-03-16 2022-06-21 Icontrol Networks, Inc. Premises management configuration and control
US7711796B2 (en) 2006-06-12 2010-05-04 Icontrol Networks, Inc. Gateway registry methods and systems
US10313303B2 (en) 2007-06-12 2019-06-04 Icontrol Networks, Inc. Forming a security network including integrated security system components and network devices
US11582065B2 (en) 2007-06-12 2023-02-14 Icontrol Networks, Inc. Systems and methods for device communication
US10142392B2 (en) 2007-01-24 2018-11-27 Icontrol Networks, Inc. Methods and systems for improved system performance
US11244545B2 (en) 2004-03-16 2022-02-08 Icontrol Networks, Inc. Cross-client sensor user interface in an integrated security network
US11489812B2 (en) 2004-03-16 2022-11-01 Icontrol Networks, Inc. Forming a security network including integrated security system components and network devices
US11113950B2 (en) 2005-03-16 2021-09-07 Icontrol Networks, Inc. Gateway integrated with premises security system
US9531593B2 (en) 2007-06-12 2016-12-27 Icontrol Networks, Inc. Takeover processes in security network integrated with premise security system
US10382452B1 (en) 2007-06-12 2019-08-13 Icontrol Networks, Inc. Communication protocols in integrated systems
US9729342B2 (en) 2010-12-20 2017-08-08 Icontrol Networks, Inc. Defining and implementing sensor triggered response rules
US8612591B2 (en) 2005-03-16 2013-12-17 Icontrol Networks, Inc. Security system with networked touchscreen
US11159484B2 (en) 2004-03-16 2021-10-26 Icontrol Networks, Inc. Forming a security network including integrated security system components and network devices
US20160065414A1 (en) 2013-06-27 2016-03-03 Ken Sundermeyer Control system user interface
US11916870B2 (en) 2004-03-16 2024-02-27 Icontrol Networks, Inc. Gateway registry methods and systems
US9141276B2 (en) 2005-03-16 2015-09-22 Icontrol Networks, Inc. Integrated interface for mobile device
US10156959B2 (en) 2005-03-16 2018-12-18 Icontrol Networks, Inc. Cross-client sensor user interface in an integrated security network
US8963713B2 (en) 2005-03-16 2015-02-24 Icontrol Networks, Inc. Integrated security network with security alarm signaling system
US10444964B2 (en) 2007-06-12 2019-10-15 Icontrol Networks, Inc. Control system user interface
US9191228B2 (en) 2005-03-16 2015-11-17 Icontrol Networks, Inc. Cross-client sensor user interface in an integrated security network
US10339791B2 (en) 2007-06-12 2019-07-02 Icontrol Networks, Inc. Security network integrated with premise security system
US8635350B2 (en) 2006-06-12 2014-01-21 Icontrol Networks, Inc. IP device discovery systems and methods
US8473619B2 (en) 2005-03-16 2013-06-25 Icontrol Networks, Inc. Security network integrated with premise security system
US20170118037A1 (en) 2008-08-11 2017-04-27 Icontrol Networks, Inc. Integrated cloud system for premises automation
US20090077623A1 (en) 2005-03-16 2009-03-19 Marc Baum Security Network Integrating Security System and Network Devices
US10522026B2 (en) 2008-08-11 2019-12-31 Icontrol Networks, Inc. Automation system user interface with three-dimensional display
EP1738540B1 (en) 2004-03-16 2017-10-04 Icontrol Networks, Inc. Premises management system
US9172553B2 (en) 2005-03-16 2015-10-27 Icontrol Networks, Inc. Security system with networked touchscreen and gateway
US11277465B2 (en) 2004-03-16 2022-03-15 Icontrol Networks, Inc. Generating risk profile using data of home monitoring and security system
US10237237B2 (en) 2007-06-12 2019-03-19 Icontrol Networks, Inc. Communication protocols in integrated systems
US11201755B2 (en) 2004-03-16 2021-12-14 Icontrol Networks, Inc. Premises system management using status signal
US10200504B2 (en) 2007-06-12 2019-02-05 Icontrol Networks, Inc. Communication protocols over internet protocol (IP) networks
US11343380B2 (en) 2004-03-16 2022-05-24 Icontrol Networks, Inc. Premises system automation
US10721087B2 (en) 2005-03-16 2020-07-21 Icontrol Networks, Inc. Method for networked touchscreen with integrated interfaces
US10375253B2 (en) 2008-08-25 2019-08-06 Icontrol Networks, Inc. Security system with networked touchscreen and gateway
US11316958B2 (en) 2008-08-11 2022-04-26 Icontrol Networks, Inc. Virtual device systems and methods
US8988221B2 (en) 2005-03-16 2015-03-24 Icontrol Networks, Inc. Integrated security system with parallel processing architecture
EP1647894A3 (en) * 2004-10-12 2007-11-21 NEC Electronics Corporation Information processing apparatus with parallel DMA processes
US20170180198A1 (en) 2008-08-11 2017-06-22 Marc Baum Forming a security network including integrated security system components
US20120324566A1 (en) 2005-03-16 2012-12-20 Marc Baum Takeover Processes In Security Network Integrated With Premise Security System
US20110128378A1 (en) 2005-03-16 2011-06-02 Reza Raji Modular Electronic Display Platform
US8713132B2 (en) 2005-03-16 2014-04-29 Icontrol Networks, Inc. Device for data routing in networks
US9306809B2 (en) 2007-06-12 2016-04-05 Icontrol Networks, Inc. Security system with networked touchscreen
US9450776B2 (en) 2005-03-16 2016-09-20 Icontrol Networks, Inc. Forming a security network including integrated security system components
US8819178B2 (en) 2005-03-16 2014-08-26 Icontrol Networks, Inc. Controlling data routing in integrated security systems
US11615697B2 (en) 2005-03-16 2023-03-28 Icontrol Networks, Inc. Premise management systems and methods
US10999254B2 (en) 2005-03-16 2021-05-04 Icontrol Networks, Inc. System for data routing in networks
US9059863B2 (en) 2005-03-16 2015-06-16 Icontrol Networks, Inc. Method for data routing in networks
US11496568B2 (en) 2005-03-16 2022-11-08 Icontrol Networks, Inc. Security system with networked touchscreen
US11700142B2 (en) 2005-03-16 2023-07-11 Icontrol Networks, Inc. Security network integrating security system and network devices
US8825871B2 (en) 2005-03-16 2014-09-02 Icontrol Networks, Inc. Controlling data routing among networks
US20070005815A1 (en) * 2005-05-23 2007-01-04 Boyd William T System and method for processing block mode I/O operations using a linear block address translation protection table
JP2007079789A (ja) * 2005-09-13 2007-03-29 Nec Corp 計算機システム及びイベント処理方法
US7490223B2 (en) * 2005-10-31 2009-02-10 Sun Microsystems, Inc. Dynamic resource allocation among master processors that require service from a coprocessor
US10079839B1 (en) 2007-06-12 2018-09-18 Icontrol Networks, Inc. Activation of gateway device
US7746350B1 (en) 2006-06-15 2010-06-29 Nvidia Corporation Cryptographic computations on general purpose graphics processing units
CN101179622B (zh) * 2006-11-07 2010-06-16 中兴通讯股份有限公司 通讯系统中一种多命令的处理设备及其处理方法
US11706279B2 (en) 2007-01-24 2023-07-18 Icontrol Networks, Inc. Methods and systems for data communication
US7633385B2 (en) 2007-02-28 2009-12-15 Ucontrol, Inc. Method and system for communicating with and controlling an alarm system from a remote server
US8451986B2 (en) 2007-04-23 2013-05-28 Icontrol Networks, Inc. Method and system for automatically providing alternate network access for telecommunications
US11212192B2 (en) 2007-06-12 2021-12-28 Icontrol Networks, Inc. Communication protocols in integrated systems
US10423309B2 (en) 2007-06-12 2019-09-24 Icontrol Networks, Inc. Device integration framework
US11237714B2 (en) 2007-06-12 2022-02-01 Control Networks, Inc. Control system user interface
US11423756B2 (en) 2007-06-12 2022-08-23 Icontrol Networks, Inc. Communication protocols in integrated systems
US11218878B2 (en) 2007-06-12 2022-01-04 Icontrol Networks, Inc. Communication protocols in integrated systems
US10523689B2 (en) 2007-06-12 2019-12-31 Icontrol Networks, Inc. Communication protocols over internet protocol (IP) networks
US11089122B2 (en) 2007-06-12 2021-08-10 Icontrol Networks, Inc. Controlling data routing among networks
US11601810B2 (en) 2007-06-12 2023-03-07 Icontrol Networks, Inc. Communication protocols in integrated systems
US10666523B2 (en) 2007-06-12 2020-05-26 Icontrol Networks, Inc. Communication protocols in integrated systems
US10616075B2 (en) 2007-06-12 2020-04-07 Icontrol Networks, Inc. Communication protocols in integrated systems
US10389736B2 (en) 2007-06-12 2019-08-20 Icontrol Networks, Inc. Communication protocols in integrated systems
US10051078B2 (en) 2007-06-12 2018-08-14 Icontrol Networks, Inc. WiFi-to-serial encapsulation in systems
US10498830B2 (en) 2007-06-12 2019-12-03 Icontrol Networks, Inc. Wi-Fi-to-serial encapsulation in systems
US11316753B2 (en) 2007-06-12 2022-04-26 Icontrol Networks, Inc. Communication protocols in integrated systems
US11646907B2 (en) 2007-06-12 2023-05-09 Icontrol Networks, Inc. Communication protocols in integrated systems
US11831462B2 (en) 2007-08-24 2023-11-28 Icontrol Networks, Inc. Controlling data routing in premises management systems
US8190881B2 (en) 2007-10-15 2012-05-29 Foundry Networks Llc Scalable distributed web-based authentication
US7853735B2 (en) * 2007-12-13 2010-12-14 Emulex Design & Manufacturing Corporation Efficient processing of groups of host access requests that may include zero length requests
US11916928B2 (en) 2008-01-24 2024-02-27 Icontrol Networks, Inc. Communication protocols over internet protocol (IP) networks
US20090193230A1 (en) * 2008-01-30 2009-07-30 Ralf Findeisen Computer system including a main processor and a bound security coprocessor
US20170185278A1 (en) 2008-08-11 2017-06-29 Icontrol Networks, Inc. Automation system user interface
US11258625B2 (en) 2008-08-11 2022-02-22 Icontrol Networks, Inc. Mobile premises automation platform
US11729255B2 (en) 2008-08-11 2023-08-15 Icontrol Networks, Inc. Integrated cloud system with lightweight gateway for premises automation
US11758026B2 (en) 2008-08-11 2023-09-12 Icontrol Networks, Inc. Virtual device systems and methods
US10530839B2 (en) 2008-08-11 2020-01-07 Icontrol Networks, Inc. Integrated cloud system with lightweight gateway for premises automation
US11792036B2 (en) 2008-08-11 2023-10-17 Icontrol Networks, Inc. Mobile premises automation platform
US9628440B2 (en) 2008-11-12 2017-04-18 Icontrol Networks, Inc. Takeover processes in security network integrated with premise security system
US8352710B2 (en) 2009-01-19 2013-01-08 International Business Machines Corporation Off-loading of processing from a processor blade to storage blades
US8638211B2 (en) 2009-04-30 2014-01-28 Icontrol Networks, Inc. Configurable controller and interface for home SMA, phone and multimedia
WO2011038409A1 (en) * 2009-09-28 2011-03-31 Icontrol Networks, Inc. Integrated security system with parallel processing architecture
CN101777012B (zh) * 2009-12-31 2013-05-08 深圳市蓝韵网络有限公司 一种三维图像服务器多任务管理调度方法
US9144143B2 (en) 2010-04-30 2015-09-22 Icontrol Networks, Inc. Power and data solution for remote low-power devices
WO2011143273A1 (en) 2010-05-10 2011-11-17 Icontrol Networks, Inc Control system user interface
US8836467B1 (en) 2010-09-28 2014-09-16 Icontrol Networks, Inc. Method, system and apparatus for automated reporting of account and sensor zone information to a central station
US11750414B2 (en) 2010-12-16 2023-09-05 Icontrol Networks, Inc. Bidirectional security sensor communication for a premises security system
US9147337B2 (en) 2010-12-17 2015-09-29 Icontrol Networks, Inc. Method and system for logging security event data
EP2544115A1 (fr) * 2011-07-06 2013-01-09 Gemalto SA Procédé d'exécution d'un traitement dans un dispositif sécurisé
US20130080672A1 (en) * 2011-09-27 2013-03-28 Kaminario Technologies Ltd. System, method and computer program product for access control
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
KR101448866B1 (ko) 2013-01-11 2014-10-13 주식회사 시큐아이 웹 보안 프로토콜에 따른 암호화 데이터를 복호화하는 보안 장치 및 그것의 동작 방법
US9928975B1 (en) 2013-03-14 2018-03-27 Icontrol Networks, Inc. Three-way switch
US9287727B1 (en) 2013-03-15 2016-03-15 Icontrol Networks, Inc. Temporal voltage adaptive lithium battery charger
US9867143B1 (en) 2013-03-15 2018-01-09 Icontrol Networks, Inc. Adaptive Power Modulation
JP6050528B2 (ja) * 2013-03-15 2016-12-21 インテル コーポレイション セキュリティ・コプロセッサ・ブート性能
WO2015021469A2 (en) 2013-08-09 2015-02-12 Icontrol Networks Canada Ulc System, method and apparatus for remote monitoring
US11146637B2 (en) 2014-03-03 2021-10-12 Icontrol Networks, Inc. Media content management
US11405463B2 (en) 2014-03-03 2022-08-02 Icontrol Networks, Inc. Media content management
US10031758B2 (en) * 2014-03-31 2018-07-24 Netronome Systems, Inc. Chained-instruction dispatcher
US10469265B2 (en) * 2016-03-31 2019-11-05 Intel Corporation Technologies for secure inter-enclave communications
US10721172B2 (en) 2018-07-06 2020-07-21 Marvell Asia Pte, Ltd. Limiting backpressure with bad actors

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5581763A (en) * 1988-06-14 1996-12-03 Progressive Technology Inc. Secure architecture and apparatus using an independent computer cartridge
US5805711A (en) * 1993-12-21 1998-09-08 Francotyp-Postalia Ag & Co. Method of improving the security of postage meter machines
US6373846B1 (en) 1996-03-07 2002-04-16 Lsi Logic Corporation Single chip networking device with enhanced memory access co-processor
US5930832A (en) * 1996-06-07 1999-07-27 International Business Machines Corporation Apparatus to guarantee TLB inclusion for store operations
US5953502A (en) 1997-02-13 1999-09-14 Helbig, Sr.; Walter A Method and apparatus for enhancing computer system security
US6295645B1 (en) 1997-12-22 2001-09-25 Texas Instruments Incorporated Method and apparatus for providing downloadable functionality to an embedded coprocessor
US6378072B1 (en) 1998-02-03 2002-04-23 Compaq Computer Corporation Cryptographic system
US7996670B1 (en) * 1999-07-08 2011-08-09 Broadcom Corporation Classification engine in a cryptography acceleration chip

Also Published As

Publication number Publication date
JP2003216591A (ja) 2003-07-31
EP1282025A3 (en) 2005-07-20
EP1282025B1 (en) 2018-07-04
TW576963B (en) 2004-02-21
EP1282025B8 (en) 2018-11-28
US6789147B1 (en) 2004-09-07
EP1282025A2 (en) 2003-02-05

Similar Documents

Publication Publication Date Title
JP4298971B2 (ja) セキュリティ・コプロセッサのためのインターフェース
US7240203B2 (en) Method and apparatus for establishing secure sessions
EP3514723B1 (en) Methods and apparatus for secure data processing and transmission
US20240126930A1 (en) Secure Collaboration Between Processors And Processing Accelerators In Enclaves
US20220138349A1 (en) Cryptographic architecture for cryptographic permutation
US6070198A (en) Encryption with a streams-based protocol stack
US9575906B2 (en) Method and system for process working set isolation
US6101255A (en) Programmable cryptographic processing system and method
JP3789454B2 (ja) 暗号コプロセッサを有するストリームプロセッサ
JP2007233381A (ja) 暗号処理に使用するグラフィック処理ユニット
JP2003512649A (ja) 暗号アクセラレータ
JP5169866B2 (ja) 中継サーバを有するネットワークシステム、その中継サーバ、プログラム
US20230342121A1 (en) Streaming data to multi-tile processing system
US20060013397A1 (en) Channel adapter managed trusted queue pairs
Hughes et al. Transparent multi-core cryptographic support on Niagara CMT Processors
Keromytis et al. Cryptography as an operating system service: A case study
CN116305245A (zh) 一种基于可信执行环境的智能合约执行方法及相关装置
JP2000083021A (ja) 分散認証のための装置および方法、分散認証システム、記録媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050712

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080507

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080807

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20080812

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080908

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090210

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090317

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090416

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4298971

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120424

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120424

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130424

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130424

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140424

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees