こんにちは!技術メディアの主筆ライターであり、ネットワークセキュリティの旅路を皆さんとともに歩むナビゲーターのセキュリティおじさんです。
突然ですが、皆さんは「VPN(仮想専用線)」と聞いてどんなイメージを持ちますか?
「拠点間を安全に繋ぐ魔法のトンネル」というイメージを持つ方も多いかもしれませんね。そのトンネルの中で、パケット(データの荷物)が泥棒に盗み見られたり、勝手に中身を書き換えられたりしないように守っているのが「暗号アルゴリズム」です。
IPsec VPNの構築画面を開くと、必ずと言っていいほど目にするのが、AES-CBC や AES-GCM というアルゴリズムの選択肢です。
「どっちも AES って書いてあるし、何が違うの?」「どっちを選べばいいの?」と迷ってしまった経験はありませんか?
今回は、インフラやネットワークの世界に一歩を踏み出したばかりの皆さんに向けて、小難しい数学やビット数の話を極力おさえ、「郵便配達」の例えを使いながら、この2つの違いを世界一わかりやすく紐解いていきます。一歩ずつ、一緒に理解していきましょう!
—
1. そもそもIPsecで必要な「2つの守り」とは?
暗号の話に入る前に、まずはIPsecがデータを守るために行っている「2つの大切なこと」を整理しておきましょう。
それは、「機密性の確保(暗号化)」と「完全性の確保(改ざん防止)」です。
これを身近な「郵便」で例えてみます。
- 機密性の確保(暗号化):
手紙の内容を誰にも見られないように、特殊なインクで書いたり、頑丈な封筒に入れたりすること。
- 完全性の確保(改ざん防止):
手紙が途中で悪意ある誰かに書き換えられていないことを証明すること。封筒の裏に「割印」を押したり、剥がすと跡が残る「特殊なセキュリティシール」を貼ったりすること。
ネットワークを流れるデータも全く同じです。
データを暗号化して中身を隠すだけでなく、「途中で1文字も書き換えられていない(改ざんされていない)」ことを証明するシールを貼る必要があります。
この「暗号化」と「改ざん防止(シール貼り)」をどうやって実現するかによって、AES-CBC と AES-GCM という2つの方式に分かれるのです。
—
2. AES-CBC:「暗号化」と「シール貼り」を別々に行う、職人の2ステップ
まずは、古くから多くの現場で活躍してきた AES-CBC(Cipher Block Chaining) から見ていきましょう。
AES-CBC を一言で表すと、「暗号化の作業と、改ざん防止のシール貼りを、別々の職人が順番に行うシステム」です。
【AES-CBC のイメージ】
[元のデータ]
│
▼ (ステップ1)
[AES-CBCで暗号化] ───> 暗号化されたデータが完成!
│
▼ (ステップ2)
[HMACなどでシール貼り] ─> 「これでよし!」という証明シールをペタッ
│
▼
[発送!]
CBCの仕組みを郵便で例えると?
1. バケツリレーのような暗号化:
AES-CBC の「C(Chaining)」は、チェーン(鎖)という意味です。データをいくつかの「箱(ブロック)」に分割し、前の箱を暗号化した結果を、次の箱の暗号化に混ぜ合わせていきます。前の箱の情報が後ろに引き継がれていくため、バケツリレーのように強固な暗号ができあがります。
2. あとからシールを貼る:
暗号化が終わったら、今度は「このデータは本物だよ」と証明するために、HMAC(エイチマック)と呼ばれる別の技術を使って、データの「ハッシュ値(指紋のようなもの)」を計算し、封印シールとして貼り付けます。
AES-CBCの特徴
- 丁寧だけど時間がかかる:
暗号化という作業が終わった後に、もう一度データを最初からスキャンして「シール貼り(ハッシュ計算)」を行うため、データを2回処理する手間がかかります。
- 並列処理が苦手:
バケツリレー方式なので、「前の箱の処理が終わらないと、次の箱の処理が進められない」という特性があります。そのため、最近のマルチコアCPUのパワーをフルに活かして「一気に並行して処理する」ということが苦手なのです。
—
3. AES-GCM:暗号化とシール貼りを同時にこなす「魔法のハイテク容器」
続いて、現代のゼロトラスト環境や高速ネットワークで大本命となっている AES-GCM(Galois/Counter Mode) を解説します。
AES-GCM は、「AEAD(Authenticated Encryption with Associated Data:認証付き暗号)」と呼ばれるグループに属しています。
難しい名前ですが、要するに「暗号化とシール貼りを、同時に1ステップでやってのける超スマートな仕組み」です。
【AES-GCM のイメージ】
[元のデータ]
│
▼ (1ステップで同時に処理!)
[AES-GCM(魔法のハイテク容器)] ──> 暗号化と同時に「改ざん防止タグ」が自動生成される!
│
▼
[発送!]
GCMの仕組みを郵便で例えると?
AES-GCM は、言うなれば「荷物を入れてフタを閉めると、瞬時に鍵がかかり、同時に『改ざん検知用の電子電子タグ』が自動でセットされるハイテクアタッシュケース」です。
1. カウンターを使って並列処理:
AES-GCM の「C(Counter)」は、数字を1, 2, 3…と数えるカウンターのことです。バケツリレーのように前のデータを待つ必要がなく、データの箱ごとに「1番の箱」「2番の箱」と番号を割り振って、すべての箱を同時に並行して暗号化できます。
2. 暗号化のついでにシールができる:
暗号化の処理を行う過程で、数学的な魔法(ガロア界という仕組み)を使って、改ざん防止用の「タグ」が自動的に計算されます。別々の職人が2回作業する必要はありません。1回の作業で、暗号化もシール貼りも同時に完了します。
AES-GCMの特徴
- 圧倒的に速い(低遅延):
作業が1回で済む上に、複数のCPUコアで並行して同時に処理できるため、データの処理スピードが劇的に向上します。
- 機器への負担が少ない:
ルーターやファイアウォールなどのネットワーク機器にかかる負荷(CPU使用率)を大幅に削減できます。
—
4. どっちを選ぶべき?一目でわかる比較表
ここで、2つの特性をスッキリ整理してみましょう。
| 比較項目 | AES-CBC (旧来のスタンダード) | AES-GCM (現代のベストプラクティス) |
| :— | :— | :— |
| 処理のステップ | 暗号化と改ざん防止(HMAC)を別々に行う | 暗号化と改ざん防止を同時に行う(AEAD) |
| スピード・性能 | 並列処理ができず、やや遅い | 並列処理が得意で、圧倒的に速い |
| 機器のCPU負荷 | 高い(CPUをたくさん使う) | 低い(スマートに処理できる) |
| 設定のシンプルさ | 暗号とハッシュ(改ざん防止)の2つを指定する | 暗号を指定するだけで、自動で認証も付いてくる |
| 推奨度 | レガシー機器との互換性が必要な場合のみ | 強く推奨(現代の標準) |
このように、現代の高速なインターネット回線や、暗号化のオーバーヘッドを減らしたいゼロトラストセキュリティの文脈においては、AES-GCM を選択するのが圧倒的な正解になります。
—
5. 実務で役立つ!IPsec VPN設定サンプル
概念が理解できたら、実際のネットワーク機器でどのように設定するのかを見てみましょう。ここでは、エンタープライズでよく使われる Cisco IOS(ルーター) と、近年シェアを大きく伸ばしている FortiGate(次世代ファイアウォール) の設定例をご紹介します。
① Cisco IOS での設定例
CiscoルーターでIPsecの暗号化方式(トランスフォームセット)を定義する際の設定比較です。
従来の AES-CBC を使う設定(非推奨になりつつあります)
AES-CBC を使う場合は、暗号化(esp-aes)と、改ざん防止用のハッシュアルゴリズム(esp-sha256-hmac)の2つをセットで指定する必要があります。
! --- 【レガシー】AES-CBCを使用する古い設定 ---
crypto ipsec transform-set TS-LEGACY esp-aes 256 esp-sha256-hmac
! esp-aes (CBCモード) で暗号化し、
! esp-sha256-hmac で改ざん防止シールを貼る(2ステップ処理)
推奨される AES-GCM を使う設定(強く推奨!)
AES-GCM を使う場合は、これ1つを指定するだけで、暗号化と改ざん防止(認証)が同時に行われます。そのため、設定コマンドの後ろに hmac を指定する必要がありません。
! --- 【推奨】AES-GCMを使用するモダンな設定 ---
crypto ipsec transform-set TS-MODERN esp-gcm 256
! esp-gcm を指定するだけで、暗号化と認証が1ステップで完結!
! 後ろに「esp-sha256-hmac」などのハッシュ指定が不要になります。
—
② FortiGate(CLI)での設定例
FortiGateでのフェーズ2(IPsecデータトンネル)の暗号化設定例です。
従来の AES-CBC を使う設定
# --- 【レガシー】AES-CBCを使用する設定 ---
config vpn ipsec phase2-interface
edit "To-Branch-CBC"
set phase1name "To-Branch-P1"
# 暗号化に「AES256(CBC)」、認証に「SHA256」を別々に指定します
set proposal aes256-sha256
next
end
推奨される AES-GCM を使う設定
# --- 【推奨】AES-GCMを使用する設定 ---
config vpn ipsec phase2-interface
edit "To-Branch-GCM"
set phase1name "To-Branch-P1"
# 「AES256-GCM」を指定するだけで、暗号と認証がワンパッケージになります
set proposal aes256gcm
next
end
※機器同士でVPNを張る際は、対向となる両方の機器で全く同じ暗号アルゴリズム(GCMなら両方GCM)を合わせる必要がある点に注意してくださいね!
—
まとめ:一歩先行くインフラエンジニアになるために
今回は、IPsec VPNの心臓部である暗号アルゴリズム、AES-CBC と AES-GCM の違いについて解説しました。
AES-CBCは、真面目だけど少し不器用な職人が「暗号化」と「ハッシュ計算」を別々に行う、実績はあるけれど少し時間がかかる方式。AES-GCMは、最新アタッシュケースのように「暗号化」と「改ざん検知」を同時に、しかも並列で超高速にこなす現代のスマートな方式。
ゼロトラストやクラウドシフトが進む現代のエンタープライズネットワークでは、通信トラフィックが爆発的に増加しています。VPNの暗号化処理による遅延を1ミリ秒でも減らし、快適な通信環境をユーザーに届けるためにも、新規でVPNを構築する際は、迷わず AES-GCM を選択していきましょう!
一歩ずつ技術の背景を理解していけば、コマンドラインの向こう側にあるパケットの動きが、まるで見えるように感じられてくるはずです。
皆さんのインフラエンジニアとしての第一歩を、これからも応援しています!また次回の解説記事でお会いしましょう!
コメント