IPsec

**IPsec**（Security Architecture for Internet Protocol又はInternet Protocol Security、アイピーセック）は、データストリームの各IPパケットを認証／暗号化することにより、ネットワーク層でIP通信を保護するためのプロトコル群である。 暗号技術を用いることで、IPパケット単位で改竄検知や秘匿機能を提供するプロトコルである。これによって、暗号化をサポートしていないトランスポート層やアプリケーションを用いても、通信路の途中で、通信内容を覗き見られたり改竄されることを防止できる。

IPsecは、IPv6では必須とされた時期があり、専用の拡張ヘッダが定義されている。一方、IPv4では、利用可能だが必須ではなく、IPヘッダオプションを利用する。

## バージョン
IPsecの規格はIETFの ipsec wg にて策定し、RFCとして公開している。IETF ではIPsecにバージョン番号を与えていないが、非公式に下記のバージョンが与えられており、2016年現在のバージョンはIPsec-v3である：
* IPsec-v1：RFC182x 形式のもの
* IPsec-v2：RFC240x 形式のもの
* IPsec-v3：RFC430x 形式のもの

## プロトコル概要

### 構成

IPsecは、2つの**ピア**の間に**SA** (Security Association)という単方向コネクションを確立することで、ピア間にセキュアな通信を確立する（詳細後述）。なお、SAは、単方向であるため、双方向通信を行う場合には、上りと下りの2つのSAを確立する必要がある。

ピアは、**ホスト**と**セキュリティ・ゲートウェイ**の二種類に分類できる。前者は、個人端末やサーバのようなIP通信の端点に相当する機器である。後者は、ルータのようなIP通信の中継を担う機器である。

IPsecは、原理的にはピアがどちらのタイプであるのかを問わない。したがって、ホストからホストまでの通信全体を直接1つのSAで保護することもできるし、2つの中継地点間毎に別々のSAを確立して通信を保護するリレー形態の運用も可能である。しかし後述するように、ピアがどちらのタイプであるかによって推奨される通信モードが存在する。

IPsecの各ピアは、**SPD**（security policy database）、**SAD**（security association database）という2つのデータベースを管理する。

SPDは、IPアドレス、プロトコル(TCP/UDP/ICMP等)、TCPポートといった情報に応じて、パケットを破棄（discard）するのか、IPsecを使わずに送信（bypass IPsec）するのか、IPsecを使って送信（apply IPsec）するのかを決める**セキュリティポリシー**のデータベースである。

一方、SADは、各ピアとSAを確立する際に用いるパラメータのデータベースである。

### プロトコルの流れ

ピアSがピアRに向けてIPsecで通信するには、以下の3ステップを踏む。
*SからRへのSAを確立する。
*SAを使ってパケットをSがRに暗号通信する。
*Rがデータを受信し、復号などの必要処理を行う。

第一ステップであるSAを確立する段階では、鍵共有プロトコルが実行される。このときに共有された鍵を用いて、第二ステップで通信を暗号化し、第三ステップで復号する。
以下では、この3つのステップの概略を述べる。

#### SAの確立

ピアSは、自身のSPDを参照することで、上位レイヤのプロトコルがRに送ることを要求したパケットを廃棄するのか、そのまま送るのか、それともIPsecで保護して送るのかを決定する。

IPsecで保護して送ることに決定した場合、ピアSは、SAの確立に必要なデータがすでにSADに存在するかどうかを確認する。データが揃っていれば、それらのデータをSADから読み込む。

一方、SAの確立に必要なデータがSADにすべて揃っていない場合は、SAに必要な情報を確立するプロトコルである**IKE**（Internet Key Exchange）をピアRとともに実行する。2016年現在、IKEの最新版はIKEv2である。

IKEは、上述のように、SAに必要な情報を確立するプロトコルであるが、その中でメインとなるのはその名称が示す通り、ピアRとの鍵共有である。

なお、SAに必要な情報を確立するプロトコルとして、IKEの代わりに (KINK)やIPSECKEY DNS recordsを使用することもできる。

#### 暗号通信
SAが確立された後、ピアSとRは、以下の2つのうちいずれかのプロトコル用いて、通信を行う（原理的には、両方のプロトコルを適用することも可能である）：
* **AH** (Authentication Header) ：IPパケットにメッセージ認証子(MAC)をつけるが暗号化は行わない。IPプロトコル番号 51。
* **ESP** (Encapsulated Security Payload) ：IPパケットに認証暗号を施す。IPプロトコル番号 50。

AHやESPの暗号処理に必要な共通鍵は、SAの確立の際に生成もしくは読み込んだものを用いる。

認証暗号は、平文の暗号化とメッセージ認証の両方を実行できる共通鍵暗号方式である。したがって、ESPを用いた場合、パケットの秘匿性と改竄検知の両方が担保される。一方、AHを用いた場合、改竄検知しか担保されない。

通信は、以下の2つのいずれかの動作モードに従って行う：
* **トランスポートモード**：パケットデータ部のみを暗号処理を施す。
***トンネルモード**：ヘッダを含めたパケット全体を丸ごと「データ」として暗号処理を施し新たなIPヘッダを付加。

トランスポートモードは、主に2つのホスト間の通信で使われ、トンネルモードは、主にセキュリティ・ゲートウェイとセキュリティ・ゲートウェイ、およびセキュリティ・ゲートウェイとホストの間の通信で使われる。

#### 受信時の処理

ピアRは、パケットを受け取り、SADの記載に従って、パケットを破棄するか否かを決める。そして、パケットがIPsecのものであれば、パケットを復号し（暗号化されている場合）、さらにメッセージ認証の検証を行った上で、上位レイヤーのプロトコルにパケットを渡す。パケットがIPsecではなく通常のIPのものである場合、復号などの処理を施さず、直接上位レイヤーのプロトコルにパケットを渡す。

## 利用する暗号方式

特に断りがない限り本節の記述は 2.3-2.4節で要求レベルがSHOULD以上のものに基づいた。

AHのMACとしてAES-GMACがSHOULD+、AES-XCBC-MAC の出力を96ビットに切り詰めたもの（AES-XCBC-MAC-96）がSHOULDである。NULL（＝MAC無し）もMAYである。

ESPの認証暗号としてAES-GCMがSHOULD+である。Encryption-then-Mac (EtM)型の認証暗号としては、暗号部分はNULL （＝暗号化しない）とAES-CBCがMUSTであり、MAC部分はHMAC-SHA1の出力を96ビットに切り詰めたもの(HMAC-SHA1-96)がMUST、鍵長128ビットのAES-GMACがSHOULD+、AES-XCBC-MAC の出力を96ビットに切り詰めたもの（AES-XCBC-MAC-96）がSHOULDである。

ただし以上の要求レベルは過去の経緯にも基づいており、安全性や効率の観点から見た場合はAHにはAES-GMAC、ESPにはAES-GCMを推奨している( 4.1節、4.3節)。

## 各プロトコルの詳細

### AH
**AH** (Authentication Header) は、認証および改竄防止機能を提供する。データそのものは暗号化されないので、盗聴防止には利用できない。 形式の AH には再送防止機能 (Anti Replay Counter) が無いが、 では 32 bit の、 では 64 bit のカウンタが付けられており、過去に送信されたパケットがコピー再送されても多重受信しない機能がオプションとして利用できる。





### ESP
**ESP** (Encapsulated Security Payload) は ペイロード部を暗号化する。正確には、IP ヘッダ、経路ヘッダ、ホップバイホップオプションヘッダを除いた部分が暗号化される。 形式の ESP には認証機能が無いが、 /  形式の ESP にはオプションとして「認証トレイラー」機能があり、AH を併用せずとも改竄防止機能を利用することが可能となっている (ただし保証されるのはデータ部分だけで、IP ヘッダ部分の改竄を検出することはできない)。また後者には AH 同様に再送防止機能も追加されている。

 /  形式の AH/ESP はそれ以降の RFC とヘッダ長が異なるため互換性がない。 /  形式の 64 bit カウンタは ESN (Extended Sequence Number) とも呼ばれるが、実際にパケットに付加されるのは下位 32 bit だけで、見た目は  形式のパケットと区別が付かない。ただし認証ベクタ (ICV) の算出には全 64 bit が使用されるため、 /  形式の IPsec と  /  形式の IPsec の間にも直接の互換性はない。 /  仕様の IPsec 実装で  /  形式と通信するためには、32 bit の互換カウンタ使用を明示指定する必要がある。





### IKE

**IKE** (Internet Key Exchange protocol) は SAを構築するのに必要な情報の交換を安全に行うプロトコル。IKEv1 () と IKEv2 () が定義されており、2016年現在の最新版は後者である。

また IKEv1/v2 以外にも Photuris (), KINK () などの鍵交換プロトコルが提案されている。

#### IKEv1
IKEv1は Internet Key Exchange protocol version 1 の意味であり、UDPポート番号500上で通信される鍵交換プロトコルである。開発時には ISAKMP/Oakley と呼ばれた過去があり、これはISAKMP(Internet Security Association and Key Management Protocol)プロトコルの上で Oakley 鍵交換手順を実装したものという意味である。すなわち、IKEv1 は ISAKMP と必ずしも同じものではない。

IKEv1 はフェーズ1、フェーズ2と呼ばれる二段階の手順で鍵交換を行う。まずフェーズ1で IKE プロトコル同士の認証と暗号交換を行い（これをISAKMP SA交換とも呼ぶ）、フェーズ2で IPsec の適用条件と鍵情報の交換を行う（IPsec SA 交換とも呼ぶ）。

フェーズ1には Main Mode,Aggressive Mode と呼ばれる2つの手順がある。前者は ISAKMP 仕様における Identity Protection Exchange 手順の呼び名であり、後者は ISAKMP 仕様における Aggressive Exchange 手順の呼び名である。（用語定義の錯綜と難解さも IKE の理解を難しくしている理由の一つである）。
フェーズ2の通信はフェーズ1において成立した共有鍵を用いて暗号化される。フェーズ2の手順は Quick Mode と呼ばれ、これは ISAKMP にはなく IKEv1 で新たに定義されたものである。IKEv1 の規格上では New Group Mode という手順も定義されているが、実際には殆ど使われていない。

Oakley 鍵交換手順は公開鍵暗号を用いた鍵交換手順のアルゴリズムとパラメータのセットをいくつか定めたもので、アルゴリズムは大きく分けて Diffie-Hellman鍵共有 (DH-MODP) と楕円曲線暗号 (EC2N) の2種がある。鍵長は DH-MODP で768,1024,1536,2048,3072,4096,6144,8192bit、EC2N で155,188,163,283,409,571bit が定義されている。

IKE の通信を行うノードを IKE ピアと呼び、IKE 要求を発行する側をイニシエータ、受信した側をレスポンダと呼ぶ。Oakley のパラメータや IPsec SA の詳細はイニシエータ側が使用可能な組み合わせを提示し（これをプロポーザルと呼ぶ）、レスポンダ側が最も適切と判断したものを選択して合意を取るという手順を踏む。何をもって「適切」とみなすかは実装と設定に依存し、これを「ポリシー」と呼ぶ場合もあるが、狭義の意味における IPsec Security Policy とは必ずしも同じニュアンスではないので混同しないよう注意が必要である。用語の混同を避けるため、 においてはこれら「鍵交換時の挙動を定めるパラメータの一覧」を Peer Authorization Database (PAD) と呼んでいる。

Aggressive Mode はフェーズ1におけるプロポーザル手順の一部を削減し、パラメータの一部を決め打ちとすることで Main Mode にくらべパケット交換回数を減らし（3往復6パケット → 1.5往復3パケット）通信効率を向上している。ただし Main Mode では最後に交換される ID パケットが暗号化されるのに対し、Agressive ModeではID情報が暗号化されないまま送信されるので、盗聴によるセキュリティホールを招きかねないというリスクもある。フェーズ1にどちらのモードを用いるかはイニシエータに依存し、やはりそのネットワークにおけるポリシー (PAD) によって決定される。

IKEv1 では鍵交換と同時に相手ピアの認証を行う。認証アルゴリズムもフェーズ1において提示-合意のプロセスを踏んで実行され、認証方式には事前鍵共有方式 (PSK:Pre Shared Key)、デジタル署名方式 (Digital Signatures)、公開鍵暗号方式 (Public Key Encryption) などがある。

フェーズ2で生成される IPsec SA の鍵情報は、原則としてフェーズ1で生成された共有鍵情報から生成される。しかし複数個の IPsec SA をまとめて生成するような使用法の場合、全ての IPsec SA 情報が1つの秘密情報に依存することは好ましくない場合がある。このような場合、IKEv1 では Perfect Forward Secrecy (PFS) と呼ばれるオプション機能の利用が（通信ピア双方に実装されていれば）可能である。PFS は個々のフェーズ2交換時に新たな Oakley 鍵交換を行い、個々に異なった共有鍵を生成して IPsec SA の秘密鍵生成時に適用するものである。PFSは一般に通信秘匿性を向上させるがピアの処理負荷も向上させるため、これを適用すべきか否かもポリシー（あるいはPAD）に応じて決定すべきとされている。

なお1回のフェーズ1交換に付随するフェーズ2の回数を1回かぎりに制限することにより、結果的に全てのフェーズ2生成鍵を異なったものにすることで PFS と同等の秘匿性を得る実装もあり、これを Master PFS と呼ぶこともある。この場合、上記の「狭義のPFS」は Session PFS と呼ばれて区別される。

#### IKEv1 の問題点
このように IKEv1 には数多くのモードとパラメータとオプションの組み合わせがあり、さらに多くの拡張仕様が存在する。その中には標準案として提案されたもののドラフトを通過できず、正式な RFC として記載されずに終わったものも少なくない。また IKEv1 仕様には難解で紛らわしい用語が錯綜しているため、実装系において独自の名前を与えている場合もある（例えば Microsoft Windows では IPsec におけるセレクタをフィルタと呼び、ポリシーをアクションと呼んでいる)。このため「IETF標準」であるはずの IKEv1 同士でも、異機種間接続のためにはプロトコルおよび製品実装の深遠な理解が必要になってしまい、「IPsec でネットワークを組む場合は同じメーカーの同じ機器を使用することが最も確実」という慣習を生むことになってしまった。

IETF は混沌としてしまった IKEv1 の整理を諦め、IKEv2 をもって標準化の仕切り直しを図っている。

#### IKEv2での改善点
IKEv2プロトコルは、2005年のRFC 4306の付録Aで記述された。以下のIKEv1の問題が対処された。

* **[[Request for Comments|RFC]]の削減**: IKEv1の仕様は少なくとも3つのRFCにわたってカバーされており、NATトラバーサルやその他の一般的に使用される拡張機能を考慮に入れるとさらに多くなる。IKEv2はこれらを1つのRFCに統合し、NATトラバーサル（NAT）およびファイアウォールトラバーサルのサポートを全般的に改善している。
* **標準的なモビリティサポート**: IKEv2には、[rfc:4555 Mobility and Multihoming Protocol] (MOBIKE) という標準拡張機能があり、自身とEncapsulating Security Payload (ESP) のモビリティとマルチホーミングをサポートするために使用される。この拡張機能を使用することで、IKEv2とIPsecはモバイルおよびマルチホームのユーザーによって使用できる。
* **[[NATトラバーサル]]**: IKEv2は、 IKEおよびESPをUDPポート4500でカプセル化することにより、これらのプロトコルはNATを実行するデバイスやファイアウォールを通過できる。
* **[[Stream Control Transmission Protocol|SCTP]]のサポート**: IKEv2は、インターネット電話プロトコルであるVoice over IP（VoIP）で使用されるSCTPプロトコルを許可する。
* **シンプルなメッセージ交換**:IKEv1では初期交換で8メッセージを交換していたが、 IKEv2は4メッセージになりシンプル化した。
* **暗号メカニズムの削減**: IKEv2は、IPsec ESPがIPsecパケットを保護するために使用するものと似た暗号メカニズムを採用し、パケットを保護する。これにより、実装が簡素化され、コモンクライテリアおよびFIPS 140-2（連邦情報処理標準（FIPS）、各暗号実装が個別に検証されることを要求する）の認証が容易になった。
* **共有状態管理**: IKEv2はシーケンス番号と確認応答を使用して信頼性を提供し、いくつかのエラー処理ロジックと共有状態管理を義務付けている。IKEv1では、このような信頼性対策が欠如していたため、両当事者が相手が行動を起こすのを待つデッドステートに陥ることがあった。また、回避策（Dead-Peer-Detectionなど）が開発されたが、標準化されておらず、互換性に問題が出ていた。
* **[[DoS攻撃]]への耐性**: IKEv2は、リクエスタが実際に存在するかどうかを判断するまで、多くの処理を実行しない。これにより、スプーフィングされた場所からの高価な暗号処理を大量に実行するIKEが抱えていたDoS問題のいくつかが解決された。

: **HostA**がセキュリティパラメータインデックス（SPI）`A`を持ち、**HostB**がSPI`B`を持つと仮定すると、シナリオは次のようになる。


```
HostA -------------------------------------------------- HostB
     |HDR(A,0),sai1,kei,Ni-------------------------->     |
     |     <----------------------------HDR(A,0),N(cookie)|
     |HDR(A,0),N(cookie),sai1,kei,Ni---------------->     |
     |     <--------------------------HDR(A,B),SAr1,ker,Nr|
```


: **HostB**（レスポンダ）が大量のハーフオープンIKE接続を経験している場合、`COOKIE`タイプの通知メッセージを含む暗号化されていない`IKE_SA_INIT`応答メッセージを**HostA**（イニシエータ）に送信し、**HostA**がそのクッキー値を通知ペイロードに含めて`IKE_SA_INIT`リクエストを**HostB**に送信することを期待する。これは、イニシエータが実際にレスポンダからのIKE応答を処理できることを保証するためである。

#### IKEv2プロトコルの拡張
IETFのipsecmeワーキンググループは、IKEv2プロトコルを近代化し、大量のトラフィックを扱う本番環境により良く適応させることを目的として、多くの拡張機能を標準化した。これらの拡張機能には以下が含まれる。

* **IKEセッション再開**: 障害発生後、IKE/IPsec「セッション」全体を再設定する必要なく、失敗したセッションを再開する機能（）。
* **IKEリダイレクト**: 受信IKEリクエストのリダイレクト。複数のIKEエンドポイント間での簡単な負荷分散を可能にする（）。
* **IPsecトラフィックの可視性**: 認証はされているが暗号化されていないESPパケットに特別なタグを付け、中間ボックス（侵入検知システムなど）がフローを分析しやすくすることを目的とする（）。
* **相互EAP認証**: 両方のIKEピアのEAPのみ（つまり証明書なし）の認証のサポート。現代的なパスワードベースの認証方法を使用できるようにすることを目的とする（）。
* **迅速なクラッシュ検出**: IKEピアが対向ピアのクラッシュを検出するまでの時間を最小化する（）。
* **高可用性拡張**: IPsecエンドポイントのクラスタとピア間のIKE/IPsecレベルのプロトコル同期を改善し、フェイルオーバーイベント後の接続切断の可能性を減らす（）。

#### 実装
多くのネットワーク機器ベンダーは、独自のIKEデーモン（およびIPsec実装）を作成するか、相互にスタックをライセンス供与している。IKEv2の実装は数多くあり、IPsecの認証や相互運用性試験を扱う企業の中には、IKEv2試験に対応するためのワークショップや更新された認証要件の策定を開始しているところもある。

以下のIKEv2のオープンソース実装が利用可能である。
* OpenIKEv2
* strongSwan
* Libreswan
* Openswan
* KAMEプロジェクトのRacoon
* OpenBSDプロジェクトのiked

## 脆弱性

2014年にによって公開された、リークされたNSAのプレゼンテーションは、IKEがISAKMPと同様に、IPsecトラフィックを復号するために未知の方法で悪用されていることを示している。 Logjam攻撃を発見した研究者らは、1024ビットのDiffie-Hellmanグループを破ることで、VPNサーバーの66%、トップ100万のHTTPSドメインの18%、SSHサーバーの26%が破られると述べており、これはリーク情報と一致すると主張している。 この主張は、2015年にEyal Ronenとアディ・シャミアの両名によって彼らの論文「Critical Review of Imperfect Forward Secrecy」で反論され、またLibreswanのPaul Woutersによって2015年の記事「66% of VPN's are not in fact broken」で反論された。

複数の設定のネゴシエーションを許可するIPsec VPN設定は、IKEv1とIKEv2の両方で、提供される設定間で中間者攻撃ベースのダウングレード攻撃を受ける可能性がある。 これは、クライアントシステムをより厳格な設定を持つ複数のサービスアクセスポイントに慎重に分離することで回避できる。

IKE標準の両方のバージョンは、低エントロピーのパスワードが使用された場合にオフラインの辞書攻撃に対して脆弱である。IKEv1については、これはメインモードとアグレッシブモードの両方で当てはまる。

## IPsec の特徴
### 暗号化する層
IPsecはネットワーク層でセキュリティを実現するプロトコルであるため、アプリケーションなどの上位層が暗号化をサポートしていない場合でも通信全体としてのセキュリティを担保することが出来る。なおセキュリティをネットワーク層で実現しているため、アプリケーション層でセキュリティを実現しているTLSのように暗号化がどのプロトコルで行われているかをユーザーが容易に知ることはできない(TLSではwebブラウザに鍵マークが表示されるなど一見してそれが分かる表示がされる場合がある)。
PCやスマートフォンなどのコンシューマ端末でもIPsecを利用することは可能であるが、現状は専門の技術者が管理するGateway間でVPNとして利用されることが多い。IPsecをVPNで利用する場合はIPアドレスを二重に付加するトンネルモードが利用できるが、IP以外のパケットも伝達するためL2TPなどのプロトコルと併用される場合もある。

### 柔軟さと設定の複雑さ
IPsecはAHの認証機能、ESPの暗号機能を組み合わせて使うことができ、AH/ESPそれぞれに様々なアルゴリズムを指定することができる。この柔軟さが IPsec の利点ではあるが、設定可能な組み合わせは膨大となり、通信する二点間で全ての設定が一致していなければ通信が成立しない。多台数間のIPsec情報を手動で設定することは非常に手間がかかる上に、手動設定の場合は同じ鍵情報を長期間使い続けることになるため、セキュリティ強度の観点からも好ましくない。IPsecが上述したVPNで利用されることが多いのはこのためである。
この手間を軽減するためネットワークで自動鍵交換を行うIKEv1,IKEv2,KINK,Photurisなどのプロトコルも提案されているが、各プロトコルには互換性が無い。最も普及しているIKEv1でも動作モード、認証パラメータ、認証方式、鍵交換アルゴリズム、暗号アルゴリズム及び認証アルゴリズムなど設定項目の組み合わせは多岐に渡り、IPsecを使いこなすには総じて高度な専門知識が要求される。

## IPsec が使えるシステム
* Windows - Windows 2000 / XP は IPv4, IPv6 で利用可能であるが、IPv6はESP暗号化に対応していない。Windows VistaはIPv4、IPv6で利用可能である。
* macOS - KAME由来のIPsecが利用可能。OS標準のGUIで利用出来るのはL2TP / IPsecのみである。
* BSD - FreeBSD、NetBSDではKAMEで作られた実装が取り込まれており、OpenBSDでは独自に実装を行っている。
* Linux - IPv4、IPv6で利用可能。IKEはKAME由来のipsec-toolsのracoonを利用する。他にFreeS/WANプロジェクトから派生したOpenswanとstrongSwanがある。

## 歴史

1993年12月、ソフトウェアIP暗号化プロトコル:en:swIPe (protocol)はコロンビア大学とAT&Tベル研究所でジョン・ヨアニディス他によって研究されていた。

クリントン政権がwhitehouse.govの電子メールをトラスディド・インフォメーション・システムズにホスティングした資金によって(1993年6月1日から1995年1月20日)、ウェイ・シューは1994年7月、IPセキュリティの研究に着手、IPプロトコルの機能を拡張し、BSDIプラットフォーム上にIPSecを開発、すぐにSunOS、HP-UX、その他UNIXシステムにも移植した。その成功にもとづいてウェイはDESとトリプルDESの計算速度改善にも取り組んだ。アセンブリ言語によるソフトウェア暗号化はIntel 80386アーキテクチャではT1の通信速度にさえ対応できなかった。ドイツからCryptoカードを輸出、ウェイはさらに今日プラグアンドプレイと呼ばれる、自動化されたデバイスドライバも開発し、ハードウェアのCryptoと統合した。T1を超えるスループットを実現した後、ウェイ・シューはついに実用に耐える商品を作成、著名なGauntletファイアーウォールの一部としてリリースした。1994年12月、米国の東海岸、西海岸にある遠隔拠点を結ぶ通信を暗号化するために初めて本番導入された。

一方、IPカプセル化セキュリティ・ペイロード (ESP) はDARPAの資金による研究プロジェクトの一部としてアメリカ海軍調査研究所で研究され、1993年12月、IETFのSIPP作業部会によってSIPPに対するセキュリティ拡張としてドラフトが公開された。このESPはもともとISOのネットワーク層セキュリティプロトコル（NLSP）ではなく、アメリカ国防総省のSP3Dプロトコルから派生したものだった。SP3Dプロトコルの仕様はNISTにより公開されたが、アメリカ国防総省のセキュアデータ・ネットワークシステム・プロジェクトにより設計されたものだった。セキュリティ認証ヘッダ（AH）の一部は、以前のSimple Network Management Protocol(SNMP)バージョン2の認証のためのIETF標準策定作業から派生したものである。

1995年、IETFのIPsec作業部会はオープンかつ自由に利用できるバージョンのプロトコル作成を開始、セキュアデータ・ネットワークシステム(SDNS)プロジェクトに関するアメリカ国家安全保障局の契約の下で開発された。SDNSプロジェクトが定義したセキュリティプロトコル・レイヤー3(SP3)はNISTによって公開され、ISOのネットワーク層セキュリティ・プロトコル(NLSP)の基礎にもなった。SP3の鍵管理は鍵管理プロトコル(KMP)によって提供され、これらに続くIPsec委員会の作業のベースラインを提供した。

IPsecは公式にはインターネット・エンジニアリング・タスクフォース(IETF)のRequest for Comments(RFC)の一連の文書として標準化され、さまざまなコンポーネントや拡張に対応している。その文書でプロトコルの名称は*IPsec*と表記すると定められている。

## 関連するRFC

### 標準化過程(Standards Track)
* : The ESP DES-CBC Transform
* : The Use of HMAC-MD5-96 within ESP and AH
* : The Use of HMAC-SHA-1-96 within ESP and AH
* : The ESP DES-CBC Cipher Algorithm With Explicit IV
* : The NULL Encryption Algorithm and Its Use With IPsec
* : The ESP CBC-Mode Cipher Algorithms
* : The Use of HMAC-RIPEMD-160-96 within ESP and AH
* : More Modular Exponential (MODP) Diffie-Hellman groups for Internet Key Exchange (IKE)
* : The AES-CBC Cipher Algorithm and Its Use with IPsec
* : Using Advanced Encryption Standard (AES) Counter Mode With IPsec Encapsulating Security Payload (ESP)
* : Negotiation of NAT-Traversal in the IKE
* : UDP Encapsulation of IPsec ESP Packets
* : The Use of Galois/Counter Mode (GCM) in IPsec Encapsulating Security Payload (ESP)
* : Security Architecture for the Internet Protocol
* : IP Authentication Header
* : IP Encapsulating Security Payload
* : Extended Sequence Number (ESN) Addendum to IPsec Domain of Interpretation (DOI) for Internet Security Association and Key Management Protocol (ISAKMP)
* : Cryptographic Algorithms for Use in the Internet Key Exchange Version 2 (IKEv2)
* : Cryptographic Suites for IPsec
* : Using Advanced Encryption Standard (AES) CCM Mode with IPsec Encapsulating Security Payload (ESP)
* : The Use of Galois Message Authentication Code (GMAC) in IPsec ESP and AH
* : IKEv2 Mobility and Multihoming Protocol (MOBIKE)
* : Online Certificate Status Protocol (OCSP) Extensions to IKEv2
* : Using HMAC-SHA-256, HMAC-SHA-384, and HMAC-SHA-512 with IPsec
* : The Internet IP Security PKI Profile of IKEv1/ISAKMP, IKEv2, and PKIX
* : Using Authenticated Encryption Algorithms with the Encrypted Payload of the Internet Key Exchange version 2 (IKEv2) Protocol
* : Better-Than-Nothing Security: An Unauthenticated Mode of IPsec
* : Modes of Operation for Camellia for Use with IPsec
* : Redirect Mechanism for the Internet Key Exchange Protocol Version 2 (IKEv2)
* : Internet Key Exchange Protocol Version 2 (IKEv2) Session Resumption
* : IKEv2 Extensions to Support Robust Header Compression over IPsec
* : IPsec Extensions to Support Robust Header Compression over IPsec
* : Internet Key Exchange Protocol Version 2 (IKEv2)
* : Cryptographic Algorithm Implementation Requirements and Usage Guidance for Encapsulating Security Payload (ESP) and Authentication Header (AH)
* : Internet Key Exchange Protocol Version 2 (IKEv2) Message Fragmentation
* : Signature Authentication in the Internet Key Exchange Version 2 (IKEv2)
* : ChaCha20, Poly1305, and Their Use in the Internet Key Exchange Protocol (IKE) and IPsec

### 実験的（Experimental）
* : Repeated Authentication in Internet Key Exchange (IKEv2) Protocol

### 情報（Informational）
* : PF_KEY Interface
* : The OAKLEY Key Determination Protocol
* : A Traffic-Based Method of Detecting Dead Internet Key Exchange (IKE) Peers
* : IPsec-Network Address Translation (NAT) Compatibility Requirements
* : Design of the IKEv2 Mobility and Multihoming (MOBIKE) Protocol
* : Requirements for an IPsec Certificate Management Profile
* : Problem and Applicability Statement for Better-Than-Nothing Security (BTNS)
* : Integration of Robust Header Compression over IPsec Security Associations
* : Using Advanced Encryption Standard Counter Mode (AES-CTR) with the Internet Key Exchange version 02 (IKEv2) Protocol
* : IPsec Cluster Problem Statement
* : IPsec and IKE Document Roadmap
* : Secure Password Framework for Internet Key Exchange Version 2 (IKEv2)

### Best Current Practice RFCs
* : Guidelines for Specifying the Use of IPsec Version 2

### 廃止（Obsolete）/歴史的（Historic）
* : Security Architecture for the Internet Protocol (obsoleted by )
* : IP Authentication Header (obsoleted by )
* : IP Encapsulating Security Payload (ESP) (obsoleted by )
* : IP Authentication using Keyed MD5 (historic)
* : Security Architecture for the Internet Protocol (IPsec overview) (obsoleted by )
* : IP Encapsulating Security Payload (ESP) (obsoleted by  and )
* : The Internet IP Security Domain of Interpretation for ISAKMP (obsoleted by )
* : The Internet Key Exchange (obsoleted by )
* : Cryptographic Algorithm Implementation Requirements for Encapsulating Security Payload (ESP) and Authentication Header (AH) (obsoleted by )
* : Internet Key Exchange (IKEv2) Protocol (obsoleted by )
* : IKEv2 Clarifications and Implementation Guidelines (obsoleted by )
* : Cryptographic Algorithm Implementation Requirements for Encapsulating Security Payload (ESP) and Authentication Header (AH) (obsoleted by )
* : Internet Key Exchange Protocol Version 2 (IKEv2) (obsoleted by )
* : Suite B Cryptographic Suites for IPsec
* : Suite B Profile for Internet Protocol Security (IPsec)

## 関連項目
* Virtual Private Network
* 情報セキュリティ
* NAT traversal
* 日和見暗号化

## 外部リンク
* IETF ipsec WG ("IP Security Protocol" Working Group)
*
* IETFの全てのアクティブなセキュリティWG
** IETF ipsecme WG ("IP Security Maintenance and Extensions" Working Group)
** IETF btns WG ("Better-Than-Nothing Security" Working Group)]

* Overview of IKE (from Cisco)

## 脚注