(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-20
(45)【発行日】2023-10-30
(54)【発明の名称】暗号システム
(51)【国際特許分類】
H04L 9/10 20060101AFI20231023BHJP
【FI】
H04L9/10 A
(21)【出願番号】P 2021516559
(86)(22)【出願日】2019-09-11
(86)【国際出願番号】 US2019050627
(87)【国際公開番号】W WO2020068426
(87)【国際公開日】2020-04-02
【審査請求日】2022-09-09
(32)【優先日】2018-09-27
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591025439
【氏名又は名称】ザイリンクス インコーポレイテッド
【氏名又は名称原語表記】XILINX INCORPORATED
(74)【代理人】
【識別番号】110002077
【氏名又は名称】園田・小林弁理士法人
(72)【発明者】
【氏名】スンカバリ, ラヴィ
(72)【発明者】
【氏名】ヴァルマ, アヌジャン
(72)【発明者】
【氏名】パン, チュアン チョン
(72)【発明者】
【氏名】マッカーシー, パトリック シー.
(72)【発明者】
【氏名】ホアン, ハン
【審査官】行田 悦資
(56)【参考文献】
【文献】特開2018-029267(JP,A)
【文献】特開2003-324423(JP,A)
【文献】特表2004-524768(JP,A)
【文献】特開2017-151794(JP,A)
【文献】米国特許出願公開第2017/0141912(US,A1)
【文献】米国特許出願公開第2018/0053017(US,A1)
【文献】米国特許出願公開第2002/0184487(US,A1)
【文献】米国特許出願公開第2017/0250802(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/10
(57)【特許請求の範囲】
【請求項1】
暗号化回路と、
復号回路と、
送信チャネルおよび前記送信チャネルに並列の受信チャネルを有する、暗号シェル回路と
を備える、回路構成であって、
前記送信チャネルが、前記暗号化回路に結合された暗号化インターフェース回路を含み、前記暗号化インターフェース回路が、プレーンテキスト入力パケット中のデータに基づいて第1の暗号パラメータを決定することと、前記第1の暗号パラメータおよび前記プレーンテキスト入力パケットを前記暗号化回路に入力することとを行うように構成され、
前記受信チャネルが、前記復号回路に結合された復号インターフェース回路を含み、前記復号インターフェース回路が、暗号文入力パケット中のデータに基づいて第2の暗号パラメータを決定することと、前記第2の暗号パラメータおよび前記暗号文入力パケットを前記復号回路に入力することとを行うように構成され、
前記暗号化回路が、前記第1の暗号パラメータに基づいて前記プレーンテキスト入力パケットを暗号化するように構成され、
前記復号回路が、前記第2の暗号パラメータに基づいて前記暗号文入力パケットを復号するように構成された、回路構成。
【請求項2】
前記暗号シェル回路がプログラマブル論理回路において実装されている、請求項1に記載の回路構成。
【請求項3】
前記暗号シェル回路がプロセッサを含み、前記プロセッサが、前記プロセッサに前記第1の暗号パラメータおよび前記第2の暗号パラメータを決定させる命令を実行するように構成された、請求項1に記載の回路構成。
【請求項4】
前記暗号シェル回路が、前記第1の暗号パラメータと前記第2の暗号パラメータとを指定する複数のセキュリティアソシエーションを用いて構成されたメモリ回路を含む、請求項1から3のいずれか一項に記載の回路構成。
【請求項5】
前記暗号シェル回路が、メディアアクセス制御セキュリティ、インターネットプロトコルセキュリティ、または、バルク暗号化およびバルク復号のうちの1つを実装する、請求項1から3のいずれか一項に記載の回路構成。
【請求項6】
前記暗号シェル回路が、前記第1の暗号パラメータと前記第2の暗号パラメータとを指定する複数のセキュリティアソシエーションを用いて構成されたメモリ回路を含む、請求項5に記載の回路構成。
【請求項7】
前記第1の暗号パラメータおよび前記第2の暗号パラメータが暗号選択コードおよび初期化ベクトルを含む、請求項1から3のいずれか一項に記載の回路構成。
【請求項8】
前記暗号シェル回路が、前記第1の暗号パラメータと前記第2の暗号パラメータとを指定する複数のセキュリティアソシエーションを用いて構成されたメモリ回路を含む、請求項7に記載の回路構成。
【請求項9】
前記送信チャネルが、前記第1の暗号パラメータを前記暗号化インターフェース回路から前記暗号化回路に搬送する信号線の第1のセットと、信号線の前記第1のセットから物理的に離れており、前記プレーンテキスト入力パケット中の前記データを前記暗号化回路に搬送する信号線の第2のセットとを含み、
前記受信チャネルが、前記第2の暗号パラメータを前記復号インターフェース回路から前記復号回路に搬送する信号線の第3のセットと、信号線の前記第3のセットから物理的に離れており、前記暗号文入力パケットのデータを前記復号回路に搬送する信号線の第4のセットとを含む、請求項1から3のいずれか一項に記載の回路構成。
【請求項10】
前記暗号シェル回路が、前記第1の暗号パラメータと前記第2の暗号パラメータとを指定する複数のセキュリティアソシエーションを用いて構成されたメモリ回路を含む、請求項9に記載の回路構成。
【請求項11】
前記第1の暗号パラメータおよび前記第2の暗号パラメータが暗号選択コードおよび初期化ベクトルを含む、請求項10に記載の回路構成。
【請求項12】
集積回路(IC)デバイスと、
前記ICデバイス上に配設された暗号化回路および復号回路の複数のペアと、
それぞれ暗号化回路および復号回路の前記複数のペアに結合された複数の暗号シェル回路であって、各暗号シェル回路が、送信チャネルおよび前記送信チャネルに並列の受信チャネルを有する、複数の暗号シェル回路と
を備える回路構成であって、
前記送信チャネルが、前記ペアのうちの1つの前記暗号化回路に結合された暗号化インターフェース回路を含み、前記暗号化インターフェース回路が、プレーンテキスト入力パケット中のデータに基づいて第1の暗号パラメータを決定することと、前記第1の暗号パラメータおよび前記プレーンテキスト入力パケットを前記暗号化回路に入力することとを行うように構成され、
前記受信チャネルが、前記ペアのうちの前記1つの前記復号回路に結合された復号インターフェース回路を含み、前記復号インターフェース回路が、暗号文入力パケット中のデータに基づいて第2の暗号パラメータを決定することと、前記第2の暗号パラメータおよび前記暗号文入力パケットを前記復号回路に入力することとを行うように構成され、
前記ペアのうちの前記1つの前記暗号化回路が、前記第1の暗号パラメータに基づいて前記プレーンテキスト入力パケットを暗号化するように構成され、
前記ペアのうちの前記1つの前記復号回路が、前記第2の暗号パラメータに基づいて前記暗号文入力パケットを復号するように構成された、回路構成。
【請求項13】
前記複数の暗号シェル回路が、メディアアクセス制御セキュリティ、インターネットプロトコルセキュリティ、またはバルク暗号法のうちの1つまたは複数を実装する、請求項12に記載の回路構成。
【請求項14】
前記複数の暗号シェル回路のうちの1つまたは複数がメディアアクセス制御セキュリティを実装し、前記複数の暗号シェル回路のうちの1つまたは複数がインターネットプロトコルセキュリティを実装する、請求項12に記載の回路構成。
【請求項15】
各暗号シェル回路が、前記第1の暗号パラメータと前記第2の暗号パラメータとを指定する複数のセキュリティアソシエーションを用いて構成されたメモリ回路を含み、前記第1の暗号パラメータおよび前記第2の暗号パラメータが暗号選択コードおよび初期化ベクトルを含む、請求項12から14のいずれか一項に記載の回路構成。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、プレーンテキストを暗号化し、暗号文(ciphertext)を復号するためのシステムに関する。
【背景技術】
【0002】
フィールドプログラマブルゲートアレイ(FPGA)は、たとえば、ネットワーキング、ストレージ、およびブロックチェーンのアプリケーションにおいて、暗号法(cryptography)機能を実装するための普及しているプラットフォームである。FPGAは、便利なソフトウェア制御と、機能を追加および/または改善することの容易さとを与える。
【0003】
FPGAは暗号法システムの実装のために有利であり得るが、FPGAには設計課題がある。暗号法機能の実装は、ルックアップテーブル(LUT)、フリップフロップ(FF)、ブロックランダムアクセスメモリ(BRAM)など、大量のFPGAリソースを消費し得る。たとえば、単一のメディアアクセス制御セキュリティ機能(MACsec)は、約100,000LUTと、約100,000FFと、約100BRAMとを消費し得る。大量のFPGAリソースは、ターゲットクロック速度に応じて、回路設計上の閉鎖タイミングにおける課題を回路設計者に与え得る。タイミング問題を緩和するために、広範なパイプライン化が採用され得るが、そのことは、実装された回路が、望ましい電力よりも多い電力を消費することにつながり得る。
【発明の概要】
【0004】
開示される回路構成(circuit arrangement)は暗号化回路と復号回路とを含む。暗号シェル(cryptographic shell)回路は、送信チャネル、および送信チャネルに並列の受信チャネルを有する。送信チャネルは、暗号化回路に結合された暗号化インターフェース回路を含む。暗号化インターフェース回路は、プレーンテキスト入力パケット中のデータに基づいて第1の暗号パラメータを決定することと、第1の暗号パラメータおよびプレーンテキスト入力パケットを暗号化回路に入力することとを行うように構成される。受信チャネルは、復号回路に結合された復号インターフェース回路を含む。復号インターフェース回路は、暗号文入力パケット中のデータに基づいて第2の暗号パラメータを決定することと、第2の暗号パラメータおよび暗号文入力パケットを復号回路に入力することとを行うように構成される。暗号化回路は、第1の暗号パラメータに基づいてプレーンテキスト入力パケットを暗号化するように構成され、復号回路は、第2の暗号パラメータに基づいて暗号文入力パケットを復号するように構成される。
【0005】
別の開示される回路構成は集積回路(IC)デバイスを含む。暗号化回路および復号回路の複数のペアがICデバイス上に配設される。複数の暗号シェル回路は、それぞれ暗号化回路および復号回路の複数のペアに結合される。各暗号シェル回路は、送信チャネル、および送信チャネルに並列の受信チャネルを有する。送信チャネルは、暗号化回路および復号回路のそれぞれのペアの暗号化回路に結合された暗号化インターフェース回路を含む。暗号化インターフェース回路は、プレーンテキスト入力パケット中のデータに基づいて第1の暗号パラメータを決定することと、第1の暗号パラメータおよびプレーンテキスト入力パケットを暗号化回路に入力することとを行うように構成される。受信チャネルは、暗号化回路および復号回路のそれぞれのペアの復号回路に結合された復号インターフェース回路を含む。復号インターフェース回路は、暗号文入力パケット中のデータに基づいて第2の暗号パラメータを決定することと、第2の暗号パラメータおよび暗号文入力パケットを復号回路に入力することとを行うように構成される。暗号化回路および復号回路のそれぞれのペアの暗号化回路は、第1の暗号パラメータに基づいてプレーンテキスト入力パケットを暗号化するように構成され、暗号化回路および復号回路のそれぞれのペアの復号回路は、第2の暗号パラメータに基づいて暗号文入力パケットを復号するように構成される。
【0006】
他の特徴は、以下の発明を実施するための形態および特許請求の範囲の検討から認識されるであろう。
【0007】
回路および方法の様々な態様および特徴は、以下の詳細な説明を検討し、図面を参照すると明らかになろう。
【図面の簡単な説明】
【0008】
【
図1】MACsecアプリケーションについての例示的な一実装形態による回路構成を示す図である。
【
図2】IPsecアプリケーションについての例示的な一実装形態による回路構成を示す図である。
【
図3】バルク暗号法(bulk cryptography)アプリケーションについての例示的な一実装形態による回路構成を示す図である。
【
図4】1つまたは複数の実装形態による、送信チャネル内で実行される例示的なプロセスのフローチャートである。
【
図5】1つまたは複数の実装形態による、受信チャネル内で実行される例示的なプロセスのフローチャートである。
【
図6】複数の再構成可能な暗号シェル回路と、関連付けられたハードワイヤード暗号回路とを有する回路構成を示す図である。
【
図7】開示される回路およびプロセスがその上に実装され得る、プログラマブル集積回路(IC)を示す図である。
【発明を実施するための形態】
【0009】
以下の説明では、本明細書で提示される具体例について説明するために、多数の具体的な詳細が記載されている。しかしながら、1つまたは複数の他の例および/またはこれらの例の変形形態が、以下で与えられるすべての具体的な詳細なしに実践され得ることが当業者に明らかであろう。他の事例では、本明細書における例の説明を不明瞭にしないように、よく知られている特徴については詳細に説明していない。説明しやすいように、同じ要素、または同じ要素の追加の事例を指すために、同じ参照番号が異なるダイヤグラム中で使用され得る。
【0010】
開示される回路および方法は、再構成可能な暗号シェルと組み合わせてハードワイヤード暗号回路を採用する。ハードワイヤード暗号回路は固定されており、再プログラム不可能であるが、構成可能な暗号シェルは再プログラム可能である。ハードワイヤード暗号回路の機能は固定されており、暗号シェルの機能は再プログラムされ得る。ハードワイヤード暗号回路は特定用途向け回路として実装され得、暗号シェルは、プログラマブル論理回路において、またはプログラムコードを実行するプロセッサとして実装され得る。ハードワイヤード暗号回路は、暗号化機能および復号機能の高速で効率的な実装を行い、再プログラム可能な/再構成可能な暗号シェルは、MACsec、インターネットプロトコル(IPsec)、およびバルク暗号法など、異なるアプリケーションのためのフレキシブルな実装を行う。
【0011】
ハードワイヤード暗号回路は、並列チャネルを与える、暗号化回路と復号回路とを含む。送信チャネル、および送信チャネルに並列の受信チャネルを有する暗号シェル回路は、異なるセキュリティアプリケーションを実装するために再構成可能である。送信チャネルは、暗号化回路に結合された暗号化インターフェース回路を含む。暗号化インターフェース回路は、プレーンテキスト入力パケット中のデータに基づいて暗号パラメータのセットを決定することと、暗号パラメータのそのセットおよびプレーンテキスト入力パケットを暗号化回路に入力することとを行うように構成される。受信チャネルは、復号回路に結合された復号インターフェース回路を含む。復号インターフェース回路は、暗号文入力パケット中のデータに基づいて暗号パラメータの別のセットを決定することと、暗号パラメータのその他のセットおよび暗号文入力パケットを復号回路に入力することとを行うように構成される。ハードワイヤード暗号回路中の暗号化回路は、送信チャネル上で与えられた暗号パラメータのセットに基づいてプレーンテキスト入力パケットを暗号化するように構成され、復号回路は、受信チャネル上で与えられた暗号パラメータのセットに基づいて暗号文入力パケットを復号するように構成される。
【0012】
図1は、MACsecアプリケーションについての例示的な一実装形態による回路構成100を示す。回路構成100は、入力インターフェースおよび出力インターフェースを暗号回路102に与える、MACsec暗号シェル回路104を含む。暗号回路は、暗号化回路106と、復号回路108と、鍵拡大回路110と、アルゴリズム検証回路133と、統計ブロック136とを含む。暗号化回路は、MACsecシェル回路104によって入力されたパラメータに基づいてプレーンテキストデータを暗号化する。同様に、復号回路は、MACsecシェル回路によって入力されたパラメータに基づいて暗号文データを復号する。暗号化回路は、プレーンテキストデータを暗号化する際に、認識された鍵拡大回路110を使用することができる。アルゴリズム検証回路は、正しい動作を検証するために暗号化回路および復号回路の試験を実行する。
【0013】
MACsecシェル回路104は、同時の暗号化アクティビティおよび復号アクティビティをサポートする、並列の送信チャネルと受信チャネルとを実装する。送信チャネルは、イングレス(ingress)先入れ先出し(FIFO)回路112と、ヘッダ処理/セキュリティアソシエーション(security association)(SA)ルックアップ回路114と、イグレス(egress)処理回路118と、イグレスFIFO回路120と、フロー制御回路122とを含む。
【0014】
イングレスFIFO回路112は、たとえば、イーサネットを介して送信された、MACプロトコルと一致するプレーンテキストデータを受信する。イングレスFIFO回路は、ヘッダ処理/SAルックアップ回路114による処理のためにパケット形態で入力データをバッファする。ヘッダ処理/SAルックアップ回路は、パケットのヘッダからパラメータを抽出し、それらのパラメータを使用して、メモリ回路116中の関連付けられたMACsec属性およびパラメータをルックアップし、メモリ回路116は、再構成可能なシェル中にMACパケットヘッダパラメータとSAとを連想的に記憶し、より大きいSA数に対するスケーラブルなサポートを可能にする。抽出されたMACパケットヘッダパラメータは、MACレベルソースアドレス、ポート番号などを含み、関連付けられた属性およびパラメータは、SAインデックスと、暗号選択パラメータと、暗号固有パラメータと、MACsec固有パラメータとを含む。暗号選択パラメータは、AES-GCM-128b、AES-GCM-256b、または別の暗号スイートを示すことができる。暗号固有パラメータは、ナンス(nonce)、初期化ベクトルなどを含むことができ、MACsec固有パラメータは、パケット数、セキュリティチャネル数などを含むことができる。
【0015】
ヘッダ処理/SAルックアップ回路は、信号線134上で暗号化回路106にプレーンテキストデータを入力し、信号線135上でシェルチャネルデータを入力する。シェルチャネルデータは、SAインデックスと、暗号選択パラメータと、暗号固有パラメータとを含む。暗号化回路は、暗号選択パラメータおよび暗号固有パラメータに従ってプレーンテキストデータを暗号化し、暗号文をイグレス処理回路118に出力する。暗号化回路は、入力プレーンテキストを暗号化する際に使用されるべき鍵を選択するために、SAインデックスを使用する。
【0016】
イグレス処理回路118は、暗号化されたパケットのための新しいフレーム検査シーケンスを計算し、アペンドし、暗号化ブロックをバイパスする任意のパケットをデータストリーム中に挿入し、また、MACsecに関係しないパケットに対して他の変換を実行し得る。
【0017】
イグレス処理回路118からの出力データはイグレスFIFO回路120に与えられ、イグレスFIFO回路120は、イーサネットチャネルを介して送信する前に、そのデータをバッファする。イグレスFIFO回路はフロー制御回路122にシグナリングし、フロー制御回路122は、イングレスFIFO回路112への暗号文パケットの入力を可能にするか、またはバックプレッシャーする。たとえば、イグレスFIFO回路が満杯である場合、フロー制御回路122は、イグレスFIFO回路120中でスペースが利用可能になるまで、イングレスFIFO回路112への入力をバックプレッシャーする。
【0018】
受信チャネルは、イングレスFIFO回路124と、ヘッダ処理/SAルックアップ回路126と、イグレス処理回路128と、イグレスFIFO回路130と、フロー制御回路132とを含む。
【0019】
イングレスFIFO回路124は、MACプロトコルと一致する暗号文データを受信する。イングレス暗号文データは、たとえば、イーサネットを介して送信され得る。イングレスFIFO回路124は、ヘッダ処理/SAルックアップ回路126による処理のためにパケット形態で入力データをバッファする。ヘッダ処理/SAルックアップ回路126は、パケットのヘッダからパラメータを抽出し、それらのパラメータを使用して、メモリ回路116中の関連付けられたMACsec属性およびパラメータをルックアップする。
【0020】
ヘッダ処理/SAルックアップ回路126は、信号線138上で復号回路108に暗号文データを入力し、信号線140上でシェルチャネルデータを入力する。シェルチャネルデータは、SAインデックスと、暗号選択パラメータと、暗号固有パラメータとを含む。復号回路は、暗号選択パラメータおよび暗号固有パラメータに従って暗号文データを復号し、プレーンテキストデータをイグレス処理回路128に出力する。
【0021】
イグレス処理回路128は、復号されたパケットのための新しいフレーム検査シーケンスを計算し、アペンドし、復号ブロックをバイパスする任意のパケットをデータストリーム中に挿入し、また、MACsecに関係しないパケットに対して他の変換を実行し得る。
【0022】
イグレス処理回路128からの出力データはイグレスFIFO回路130に与えられ、イグレスFIFO回路130は、イーサネットチャネルを介して送信する前に、そのデータをバッファする。イグレスFIFO回路130はフロー制御回路132にシグナリングし、フロー制御回路132は、イングレスFIFO回路124へのプレーンテキストパケットの入力を可能にするか、またはバックプレッシャーする。たとえば、イグレスFIFO回路130が満杯である場合、フロー制御回路132は、イグレスFIFO回路130中でスペースが利用可能になるまで、イングレスFIFO回路124への入力をバックプレッシャーする。
【0023】
暗号シェル回路104は構成インターフェースをさらに含み、構成インターフェースを通して、SA、ならびに関連付けられた属性およびパラメータが変更され得る。構成インターフェースは、プログラマブル論理デバイス中の内部構成アクセスポートによって、またはジョイントテストアクセスグループ(JTAG)走査インターフェースによって実装され得、それらの両方が一般に利用可能である。構成インターフェースはまた、暗号回路の蓄積された動作統計を読み取るために統計ブロック136に接続され得る。統計ブロック136は、暗号化回路106および復号回路108の動作に関係する統計情報を蓄積し、その情報をメモリ回路116に記憶する。統計情報は、異なるSA入力値の数およびセキュリティエンティティの数、およびMACsec規格によって定義された他のデータを含むことができる。
【0024】
図2は、IPsecアプリケーションについての例示的な一実装形態による回路構成200を示す。回路構成200は、暗号回路102への入力インターフェースと出力インターフェースとを与えるIPsec暗号シェル回路202を含む。暗号回路は、上記で説明した、
図1に示されたサブ回路を含む。
【0025】
IPsecシェル回路202は、同時の暗号化アクティビティおよび復号アクティビティをサポートする、並列の送信チャネルと受信チャネルとを実装する。送信チャネルは、イングレス先入れ先出し(FIFO)回路112と、送信チャネルイングレス処理回路204と、送信チャネルイグレス処理回路208と、イグレスFIFO回路120と、フロー制御回路122とを含む。
【0026】
イングレスFIFO回路112は、たとえば、イーサネットを介して送信される、直接メモリアクセスプロトコルまたはMACプロトコルと一致するプレーンテキストデータを受信する。イングレスFIFO回路は、送信チャネルイングレス処理回路204による処理のためにパケット形態で入力データをバッファする。送信チャネルイングレス処理回路は、パケットのヘッダからパラメータを抽出し、それらのパラメータを使用して、メモリ回路116中の関連付けられたIPsec属性およびパラメータをルックアップし、メモリ回路116は、再構成可能なシェル中にIPパケットヘッダパラメータとSAとを連想的に記憶し、より大きいSA数に対するスケーラブルなサポートを可能にする。抽出されたIPパケットヘッダパラメータは、IPレベルソースアドレス、宛先アドレスなどを含み、関連付けられた属性およびパラメータは、SAインデックスと、暗号選択パラメータと、暗号固有パラメータと、IPsec固有パラメータとを含む。暗号選択パラメータは、AES-GCM-128b、AES-GCM-256b、または別の暗号スイートを示すことができる。暗号固有パラメータは、ナンス、初期化ベクトルなどを含むことができ、IPsec固有パラメータは、シーケンス番号、セキュリティパラメータインデックス(SPI)などを含むことができる。
【0027】
送信チャネルイングレス処理回路204は、信号線134上で暗号化回路106にプレーンテキストデータを入力し、信号線135上でシェルチャネルデータを入力する。シェルチャネルデータは、SAインデックスと、暗号選択パラメータと、暗号固有パラメータとを含む。暗号化回路は、暗号選択パラメータおよび暗号固有パラメータに従ってプレーンテキストデータを暗号化し、暗号文を送信チャネルイグレス処理回路208に出力する。
【0028】
送信チャネルイグレス処理回路208はIPsec固有処理を実行し、IPsec固有処理は、パケットに新しいリンクヘッダを挿入すること、現在のリンクヘッダを交換すること、ソフトウェアによる検査のためのパケットをキャプチャするためにバッファを組み込むこと、またはソフトウェアからの暗号化されたデータストリームにパケットを挿入することを含むことができる。
【0029】
送信チャネルイグレス処理回路208からの出力データはイグレスFIFO回路120に与えられ、イグレスFIFO回路120は、イーサネットチャネルを介して送信する前に、そのデータをバッファする。イグレスFIFO回路はフロー制御回路122にシグナリングし、フロー制御回路122は、イングレスFIFO回路112への暗号文パケットの入力を可能にするか、またはバックプレッシャーする。たとえば、イグレスFIFO回路が満杯である場合、フロー制御回路122は、イグレスFIFO回路120中でスペースが利用可能になるまで、イングレスFIFO回路112への入力をバックプレッシャーする。
【0030】
受信チャネルは、イングレスFIFO回路124と、受信チャネルイングレス処理回路210と、受信チャネルイグレス処理回路212と、イグレスFIFO回路130と、フロー制御回路132とを含む。
【0031】
イングレスFIFO回路124は、MACプロトコルと一致する暗号文データを受信する。イングレス暗号文データは、たとえば、イーサネットを介して送信され得る。イングレスFIFO回路124は、受信チャネルイングレス処理回路210による処理のためにパケット形態で入力データをバッファする。受信チャネルイングレス処理回路210は、パケットのヘッダからパラメータを抽出し、それらのパラメータを使用して、メモリ回路116中の関連付けられたIPsec属性およびパラメータをルックアップする。
【0032】
受信チャネルイングレス処理回路210は、信号線138上で復号回路108に暗号文データを入力し、信号線140上でシェルチャネルデータを入力する。シェルチャネルデータは、SAインデックスと、暗号選択パラメータと、暗号固有パラメータとを含む。復号回路は、暗号選択パラメータおよび暗号固有パラメータに従って暗号文データを復号し、プレーンテキストデータを受信チャネルイグレス処理回路212に出力する。
【0033】
受信チャネルイグレス処理回路212は、上述のようにIPsec固有処理を実行する。
【0034】
受信チャネルイグレス処理回路212からの出力データはイグレスFIFO回路130に与えられ、イグレスFIFO回路130は、DMAまたはイーサネットチャネルを介して送信する前に、そのデータをバッファする。イグレスFIFO回路130はフロー制御回路132にシグナリングし、フロー制御回路132は、イングレスFIFO回路124へのプレーンテキストパケットの入力を可能にするか、またはバックプレッシャーする。たとえば、イグレスFIFO回路130が満杯である場合、フロー制御回路132は、イグレスFIFO回路130中でスペースが利用可能になるまで、イングレスFIFO回路124への入力をバックプレッシャーする。
【0035】
図3は、バルク暗号法アプリケーションについての例示的な一実装形態による回路構成300を示す。回路構成300は、暗号回路102への入力インターフェースと出力インターフェースとを与えるバルク暗号法シェル回路302を含む。暗号回路は、上記で説明した、
図1に示されたサブ回路を含む。
【0036】
バルク暗号法シェル回路302は、同時の暗号化アクティビティおよび復号アクティビティをサポートする、並列の送信チャネルと受信チャネルとを実装する。送信チャネルは、送信チャネルイングレス処理回路304と、送信チャネルイグレス処理回路306とを含む。送信チャネルイングレス処理回路304は、ユーザインターフェースからプレーンテキストデータを受信し、メモリ回路116中のバルク暗号法属性およびパラメータをルックアップし、メモリ回路116は、再構成可能なシェル中にSAを連想的に記憶し、より大きいSA数に対するスケーラブルなサポートを可能にする。
【0037】
バルク暗号法シェル302に入力を与え、バルク暗号法シェル302から出力を受信するユーザインターフェースは、バルク暗号法シェルの入力信号線および出力信号線に接続された任意の特定用途向け回路であり得る。たとえば、ユーザインターフェースは、プレーンテキストまたは暗号化されたデータを移動するためにプログラマブル論理中に実装された回路であり得る。代替的に、DMAコントローラがバルク暗号法シェルの入力部または出力部に接続され得る。
【0038】
バルク暗号法シェルは、特定用途向けインターフェースのために好適な最小のシェルであるので、メモリ116中のSAインデックスのルックアップは、入力プレーンテキストまたは他の特定用途向け基準に基づき得る。
【0039】
メモリ116から取り出された情報は、SAインデックスと、暗号選択パラメータと、暗号固有パラメータと、バルク暗号法固有パラメータとを含むことができる。暗号選択パラメータは、AES-GCM-128b、AES-GCM-256b、または別の暗号スイートを示すことができる。暗号固有パラメータは、ナンス、初期化ベクトルなどを含むことができる。
【0040】
送信チャネルイングレス処理回路304は、信号線134上で暗号化回路106にプレーンテキストデータを入力し、信号線135上でシェルチャネルデータを入力する。シェルチャネルデータは、SAインデックスと、暗号選択パラメータと、暗号固有パラメータとを含む。暗号化回路は、暗号選択パラメータおよび暗号固有パラメータに従ってプレーンテキストデータを暗号化し、暗号文を送信チャネルイグレス処理回路306に出力する。
【0041】
送信チャネルイグレス処理回路306は、新しいメタデータをパケットに挿入するか、現在のメタデータを交換するか、暗号化ブロックをバイパスする任意のパケットをデータストリーム中に挿入するか、またはバルク暗号法に関係しないパケットに対して他の変換を実行することができる。
【0042】
送信チャネルイグレス処理回路306からの出力データはユーザインターフェースに与えられる。イグレスユーザインターフェースは、アプリケーションに応じて、イングレスユーザインターフェースと同じであるか、またはイングレスユーザインターフェースとは異なり得る。
【0043】
受信チャネルは、受信チャネルイングレス処理回路308と、受信チャネルイグレス処理回路310とを含む。受信チャネルイングレス処理回路308は、ユーザインターフェースを介して暗号文データを受信し、メモリ回路116中の属性およびパラメータをルックアップする。
【0044】
受信チャネルイングレス処理回路308は、信号線138上で復号回路108に暗号文データを入力し、信号線140上でシェルチャネルデータを入力する。シェルチャネルデータは、SAインデックスと、暗号選択パラメータと、暗号固有パラメータとを含む。復号回路は、暗号選択パラメータおよび暗号固有パラメータに従って暗号文データを復号し、プレーンテキストデータを受信チャネルイグレス処理回路310に出力する。
【0045】
受信チャネルイグレス処理回路310は、イグレス処理回路306と同じ機能を実行することができる。
【0046】
受信チャネルイグレス処理回路310からの出力データはユーザインターフェースに与えられる。
【0047】
図4は、1つまたは複数の実装形態による、送信チャネル内で実行される例示的なプロセスのフローチャートである。ブロック402において、暗号シェル回路へのプレーンテキストデータの入力に応答して、暗号シェル回路は、いくつかのプロトコル中のパケットなど、入力データからパラメータを抽出する。抽出されたパラメータは、アプリケーションによって採用されたセキュリティ方式に依存し得る。たとえば、抽出されたパラメータは、MACsec、IPsec、またはバルク暗号法の実装形態用であり得る。
【0048】
ブロック404において、暗号シェル回路は、メモリ回路中の抽出されたパラメータに関連するシェルチャネルパラメータをルックアップする。シェルチャネルパラメータは、セキュリティアプリケーションに応じて、SAインデックスと、AES-GCM-128b、AES-GCM-256b、または別の暗号スイートを示す暗号選択パラメータと、ナンス、初期化ベクトル、パケット数、セキュリティチャネル数、シーケンス数、セキュリティパラメータインデックス(SPI)などを含む、暗号固有パラメータとを含むことができる。
【0049】
ハードワイヤード暗号回路は、上記のように、MACsec、IPsec、またはバルク暗号法など、様々なセキュリティアプリケーションにおいて採用され得る。暗号シェル回路は、プログラマブル論理において、またはソフトウェアを実行するプロセッサとして実装され得、所望のセキュリティアプリケーションに従って構成され得る。したがって、ハードワイヤード暗号回路は、シェルチャネルパラメータの入力とプレーンテキストの入力とのための信号線の別個のセットを有する。シェルチャネルパラメータは、信号線の1つのセット上で、ブロック406においてハードワイヤード暗号回路に入力され、プレーンテキストは、信号線の別のセット上で、ブロック408においてハードワイヤード暗号回路に入力される。
【0050】
ブロック410において、ハードワイヤード暗号回路は入力シェルチャネルパラメータに従ってプレーンテキストを暗号化する。暗号文は、ブロック412において、セキュリティアプリケーションに従って暗号シェル回路によって出力される。
【0051】
図5は、1つまたは複数の実装形態による、受信チャネル内で実行される例示的なプロセスのフローチャートである。ブロック502において、暗号シェル回路への暗号文を含んでいるデータの入力に応答して、暗号シェル回路は入力データからパラメータを抽出する。入力データはいくつかのプロトコルにおけるパケットフォーマットであり得る。抽出されたパラメータは、アプリケーションによって採用されたセキュリティ方式に依存し得る。たとえば、抽出されたパラメータは、MACsec、IPsec、またはバルク暗号法の実装形態用であり得る。
【0052】
ブロック504において、暗号シェル回路は、送信チャネルのプロセスに関して上記で説明したように、メモリ回路中の抽出されたパラメータに関連するシェルチャネルパラメータをルックアップする。
【0053】
ハードワイヤード暗号回路は、シェルチャネルパラメータの入力と暗号文の入力とのための信号線の別個のセットを有する。シェルチャネルパラメータは、信号線の1つのセット上で、ブロック506においてハードワイヤード暗号回路に入力され、暗号文は、信号線の別のセット上で、ブロック508においてハードワイヤード暗号回路に入力される。
【0054】
ブロック510において、ハードワイヤード暗号回路は入力シェルチャネルパラメータに従って暗号文を復号する。得られたプレーンテキストは、ブロック512において、セキュリティアプリケーションに従って暗号シェル回路によって出力される。
【0055】
図6は、複数の再構成可能な暗号シェル回路と、関連付けられたハードワイヤード暗号回路とを有する回路構成600を示す。再構成可能な暗号シェル回路は、ブロック604、606、…、608として示されており、再構成可能な暗号シェル回路の各々はハードワイヤード暗号回路102の専用インスタンスを有する。再構成可能な暗号シェル回路は、MACsecシェル回路104、IPsecシェル回路202、バルク暗号法シェル回路302、および/または任意の他の同等のセキュリティプロトコルのための暗号シェル回路のインスタンスであり得る。
【0056】
本回路構成は、複数の異なるセキュリティアプリケーションのための暗号化機能と復号機能とを与えることができる。したがって、単一のデバイスが、それぞれ、異なる暗号アプリケーションを必要とする複数のエンドポイントをサービスすることができる。たとえば、単一のデバイスが、MACsec機能、IPsec機能、および/またはバルク暗号法機能を与えることができる。暗号シェル回路604、606、…、608の再構成可能性により、処理ニーズが変化した際に、異なる暗号セキュリティアプリケーションにリソースをリダイレクトすることが可能になる。たとえば、MACsec暗号シェル回路を一度実装したプログラマブルリソースは、必要とされる場合、IPsec暗号シェル回路を実装するように再プログラムされ得る。また、同じ暗号シェル回路の複数のインスタンスが、特定のセキュリティアプリケーションのための帯域幅要件を満たすように構成され得る。
【0057】
暗号デバイス602は、たとえば集積回路(IC)パッケージであり得る。暗号シェル回路604、606、…、608の各々は、入出力回路610のうちの少なくとも1つのインスタンスに結合される。各入出力回路は、デバイス602の外部の宛先にデータを送り、デバイス602の外部のソースからデータを受信する高速シリアルトランシーバであり得る。いくつかの実装形態では、プレーンテキストまたは暗号文のソースまたは宛先は、暗号デバイス602と同じICチップまたはパッケージ上に実装された回路であり得、暗号シェル回路は、入出力回路610に結合される代わりに、デバイスのバスまたはプログラマブルルーティングリソースを介してオンチップ/パッケージのソース/宛先に結合され得る。
【0058】
図7は、開示される回路およびプロセスがその上に実装され得る、プログラマブル集積回路(IC)700を示す。プログラマブルICは、他のプログラマブルリソースとともにフィールドプログラマブルゲートアレイ論理(FPGA)を含む、システムオンチップ(SoC)と呼ばれることもある。FPGA論理は、アレイ中にいくつかの異なるタイプのプログラマブル論理ブロックを含み得る。たとえば、
図7は、マルチギガビットトランシーバ(MGT)701、構成可能論理ブロック(CLB)702、ランダムアクセスメモリブロック(BRAM)703、入出力ブロック(IOB)704、構成およびクロッキング論理(CONFIG/CLOCKS)705、デジタル信号処理ブロック(DSP)706、特殊化された入出力ブロック(I/O)707、たとえばクロックポート、およびデジタルクロックマネージャ、アナログデジタル変換器、システム監視論理など、他のプログラマブル論理708などを含む、多数の異なるプログラマブルタイルを含む、プログラマブルIC700を示す。FPGA論理を有するいくつかのプログラマブルICはまた、専用プロセッサブロック(PROC)710ならびに内部再構成ポートおよび外部再構成ポート(図示せず)を含む。
【0059】
いくつかのFPGA論理において、各プログラマブルタイルは、各隣接するタイル中の対応する相互接続要素へのおよび対応する相互接続要素からの標準化された接続を有するプログラマブル相互接続要素(INT)711を含む。したがって、一緒にされたプログラマブル相互接続要素は、図示されたFPGA論理のためのプログラマブル相互接続構造を実装する。プログラマブル相互接続要素INT711はまた、
図7の上部に含まれる例によって示されるように、同じタイル内のプログラマブル論理要素への接続と、同じタイル内のプログラマブル論理要素からの接続とを含む。
【0060】
たとえば、CLB702は、ユーザ論理を実装するようにプログラムされ得る構成可能論理要素CLE712に加えて、単一のプログラマブル相互接続要素INT711を含むことができる。BRAM703は、1つまたは複数のプログラマブル相互接続要素に加えて、BRAM論理要素(BRL)713を含むことができる。一般に、タイル中に含まれる相互接続要素の数はタイルの高さに依存する。図示されているBRAMタイルは5個のCLBと同じ高さを有するが、他の数(たとえば4個)も使用され得る。DSPタイル706は、適切な数のプログラマブル相互接続要素に加えて、DSP論理要素(DSPL)714を含むことができる。IOB704は、たとえば、プログラマブル相互接続要素INT711の1つのインスタンスに加えて、入出力論理要素(IOL)715の2つのインスタンスを含むことができる。当業者に明らかになるように、たとえばI/O論理要素715に接続される実際のI/Oボンドパッドは、様々な図示された論理ブロックの上に積層された金属を使用して製造され、一般に、入出力論理要素715の領域に閉じ込められない。
【0061】
(
図7において影付きで示されている)ダイの中心に近いカラム(columnar)領域は、構成、クロック、および他の制御論理のために使用される。このカラムから延びる水平領域709は、プログラマブルICの幅にわたってクロックと構成信号とを分配するために使用される。「カラム」領域および「水平」領域に対する言及は、図面を縦方向に見ることに関するものであることに留意されたい。
【0062】
図7に示されたアーキテクチャを利用するいくつかのプログラマブルICは、プログラマブルICの大きい部分を構成する通常のカラム構造を中断させる、追加の論理ブロックを含む。追加の論理ブロックはプログラマブルブロックおよび/または専用論理であり得る。たとえば、
図7に示されたプロセッサブロックPROC710は、CLBおよびBRAMのいくつかのカラムにわたっている。
【0063】
図7は、例示的なプログラマブルICアーキテクチャのみを示すものであることに留意されたい。カラム中の論理ブロックの数、カラムの相対幅、カラムの数および順序、カラム中に含まれる論理ブロックのタイプ、それらの論理ブロックの相対サイズ、
図7の上部に含まれる相互接続/論理の実装形態は例にすぎない。たとえば、実際のプログラマブルICでは、ユーザ論理の効率的な実装を容易にするために、一般に、CLBが現れる場所にはどこでも、CLBの2つ以上の隣接するカラムが含まれる。
【0064】
本明細書で説明したおよび/または図に示された動作およびアクティビティのうちの1つまたは複数を実行するために、様々なモジュールが実装され得る。これらの文脈において、「モジュール」、「エンジン」、または「ブロック」は、これらのまたは関係する動作/アクティビティ(たとえば暗号化および/または復号)のうちの1つまたは複数を実行する回路である。たとえば、1つまたは複数のモジュール/エンジンは、
図1~
図3および
図6に示されているように、これらの動作/アクティビティを実装するために構成および配置されたディスクリート論理回路またはプログラマブル論理回路である。プログラマブル回路は、命令(および/または構成データ)の1つのセット(または複数のセット)を実行するようにプログラムされた1つまたは複数のコンピュータ回路を含むことができる。命令(および/または構成データ)は、メモリ(回路)に記憶され、メモリ(回路)からアクセス可能なファームウェアまたはソフトウェアの形態であり得る。例として、第1のモジュールおよび第2のモジュールは、CPUハードウェアベース回路と、ファームウェアの形態の命令のセットとの組合せを含み、ここで、第1のモジュールは、命令の1つのセットをもつ第1のCPUハードウェア回路を含み、第2のモジュールは、命令の別のセットをもつ第2のCPUハードウェア回路を含む。
【0065】
開示される回路構成は暗号化回路と復号回路とを含む。暗号シェル回路は、送信チャネル、および送信チャネルに並列の受信チャネルとを有する。送信チャネルは、暗号化回路に結合された暗号化インターフェース回路を含む。暗号化インターフェース回路は、プレーンテキスト入力パケット中のデータに基づいて第1の暗号パラメータを決定することと、第1の暗号パラメータおよびプレーンテキスト入力パケットを暗号化回路に入力することとを行うように構成される。受信チャネルは、復号回路に結合された復号インターフェース回路を含む。復号インターフェース回路は、暗号文入力パケット中のデータに基づいて第2の暗号パラメータを決定することと、第2の暗号パラメータおよび暗号文入力パケットを復号回路に入力することとを行うように構成される。暗号化回路は、第1の暗号パラメータに基づいてプレーンテキスト入力パケットを暗号化するように構成され、復号回路は、第2の暗号パラメータに基づいて暗号文入力パケットを復号するように構成される。暗号シェル回路はプログラマブル論理回路において実装され得る。暗号シェル回路はプロセッサを含むことができ、プロセッサは、そのプロセッサに第1の暗号パラメータおよび第2の暗号パラメータを決定させる命令を実行するように構成される。暗号シェル回路は、第1の暗号パラメータと第2の暗号パラメータとを指定する複数のセキュリティアソシエーションを用いて構成されたメモリ回路を含むことができる。暗号シェル回路はメディアアクセス制御セキュリティを実装することができる。暗号シェル回路はインターネットプロトコルセキュリティを実装することができる。暗号シェル回路はバルク暗号化およびバルク復号を実装することができる。第1の暗号パラメータおよび第2の暗号パラメータは暗号選択コード(cipher selection code)および初期化ベクトルを含むことができる。送信チャネルは、第1の暗号パラメータを暗号化インターフェース回路から暗号化回路に搬送する信号線の第1のセットと、信号線の第1のセットから物理的に離れており、プレーンテキスト入力パケット中のデータを暗号化回路に搬送する信号線の第2のセットとを含むことができる。受信チャネルは、第2の暗号パラメータを復号インターフェース回路から復号回路に搬送する信号線の第3のセットと、信号線の第3のセットから物理的に離れており、暗号文入力パケットのデータを復号回路に搬送する信号線の第4のセットとを含むことができる。送信チャネル中の信号線の第1および第2のセットはプログラマブル論理回路において実装され得る。
【0066】
別の開示されている回路構成は集積回路(IC)デバイスを含む。暗号化回路および復号回路の複数のペアがICデバイス上に配設される。複数の暗号シェル回路は、それぞれ暗号化回路および復号回路の複数のペアに結合される。各暗号シェル回路は、送信チャネル、および送信チャネルに並列の受信チャネルを有する。送信チャネルは、暗号化回路および復号回路のそれぞれのペアの暗号化回路に結合された暗号化インターフェース回路を含む。暗号化インターフェース回路は、プレーンテキスト入力パケット中のデータに基づいて第1の暗号パラメータを決定することと、第1の暗号パラメータおよびプレーンテキスト入力パケットを暗号化回路に入力することとを行うように構成される。受信チャネルは、暗号化回路および復号回路のそれぞれのペアの復号回路に結合された復号インターフェース回路を含む。復号インターフェース回路は、暗号文入力パケット中のデータに基づいて第2の暗号パラメータを決定することと、第2の暗号パラメータおよび暗号文入力パケットを復号回路に入力することとを行うように構成される。暗号化回路および復号回路のそれぞれのペアの暗号化回路は、第1の暗号パラメータに基づいてプレーンテキスト入力パケットを暗号化するように構成され、暗号化回路および復号回路のそれぞれのペアの復号回路は、第2の暗号パラメータに基づいて暗号文入力パケットを復号するように構成される。複数の暗号シェル回路は、メディアアクセス制御セキュリティ、インターネットプロトコルセキュリティ、またはバルク暗号法のうちの1つを実装することができる。複数の暗号シェル回路のうちの1つまたは複数はメディアアクセス制御セキュリティを実装することができ、複数の暗号シェル回路のうちの1つまたは複数はインターネットプロトコルセキュリティを実装することができる。複数の暗号シェル回路のうちの1つまたは複数はメディアアクセス制御セキュリティを実装することができ、複数の暗号シェル回路のうちの1つまたは複数はインターネットプロトコルセキュリティを実装することができ、複数の暗号シェル回路のうちの1つまたは複数はバルク暗号法を実装することができる。複数の暗号シェル回路はプログラマブル論理回路において実装され得る。複数の暗号シェル回路は1つまたは複数のプロセッサを含むことができ、1つまたは複数のプロセッサは、それらの1つまたは複数のプロセッサに第1の暗号パラメータおよび第2の暗号パラメータを決定させる命令を実行するように構成される。複数の暗号シェル回路の各暗号シェル回路は、第1の暗号パラメータと第2の暗号パラメータとを指定する複数のセキュリティアソシエーションを用いて構成されたメモリ回路を含むことができる。第1の暗号パラメータおよび第2の暗号パラメータは暗号選択コードおよび初期化ベクトルを含むことができる。送信チャネルは、第1の暗号パラメータを暗号化インターフェース回路から暗号化回路に搬送する信号線の第1のセットと、信号線の第1のセットから物理的に離れており、プレーンテキスト入力パケットのデータを暗号化回路に搬送する信号線の第2のセットとを含むことができる。受信チャネルは、第2の暗号パラメータを復号インターフェース回路から復号回路に搬送する信号線の第3のセットと、信号線の第3のセットから物理的に離れており、暗号文入力パケットのデータを復号回路に搬送する信号線の第4のセットとを含むことができる。
【0067】
態様および特徴は、場合によっては、個々の図において説明され得るが、1つの図からの特徴は、その組合せが明示的に示されていないか、または組合せとして明示的に説明されなくても、別の図の特徴と組み合わせられ得ることが諒解されよう。
【0068】
回路および方法は、暗号化および/または復号のための様々なシステムに適用可能であると考えられる。他の態様および特徴は本明細書の検討から当業者に明らかになろう。回路および方法は、ソフトウェアを実行するように構成された1つまたは複数のプロセッサとして、特定用途向け集積回路(ASIC)として、またはプログラマブル論理デバイス上の論理として実装され得る。本明細書および図面は例のみとして考えられるものであり、本発明の真の範囲は以下の特許請求の範囲によって示される。