9月22日、Phoronixが「Linux Ready To Upstream Support For Google's PSP Encryption For TCP Connections」と題した記事を公開した。この記事では、Googleが開発したPSP(PSP Security Protocol)のTCP接続向け暗号化サポートがLinuxカーネル6.18に統合される見込みについて詳しく紹介されている。以下に、その内容を紹介する。
PSPとは何か
PSP(PSP Security Protocol)は、Googleが大規模データセンター向けに開発した新しい暗号化プロトコルである。AMDのPlatform Security Processor(同名のPSP)とは無関係であり、TCP接続における通信データを暗号化する仕組みを提供する。
PSPは以下の特徴を持つ。
- IPsec ESPに近い構造
PSPはIP上で動作する暗号化カプセル化レイヤーであり、IPsec ESPと同様に通信全体を保護する。ただし設計はよりシンプルである。 - TLSの代替としての利用
PSPはTLSと同じく通信の暗号化を担うが、ハードウェアオフロードを前提としており、大規模環境ではTLSより効率的に動作する。NICが暗号処理を肩代わりすることでCPU負荷を削減できる。 - キー交換を規定しない柔軟さ
PSP自体はキー交換方法を定めない。そのためTLSハンドシェイクを行った後、双方の機能に応じてPSPに切り替えることが可能だ。 - 複数モード対応
PSPはトンネリングモードを含む複数の動作モードを持ち、用途に応じて幅広く利用できる。
Googleはすでに自社データセンターでPSPを活用しており、2022年にはアーキテクチャ仕様を公開している。詳細は公式仕様書(PDF)にまとめられている。
TLS・IPsecとの比較
項目 | PSP | TLS | IPsec ESP |
---|---|---|---|
レイヤー位置 | IP上の暗号化カプセル化レイヤー | アプリケーション層(TCP上) | ネットワーク層 |
主な用途 | データセンター向け高速暗号化 | Web/アプリ通信の暗号化 | VPNやサイト間接続 |
キー交換 | プロトコル外部(例: TLS利用) | TLSハンドシェイクで規定 | IKE(Internet Key Exchange) |
複雑さ | シンプルで拡張性あり | 実装が豊富だがCPU負荷高い | 高機能だが設定が複雑 |
ハードウェアオフロード | 前提として設計 | 一部NICで対応 | 限定的 |
Linux 6.18への統合
PSPのLinuxカーネル統合は、13回に及ぶレビューを経て進められた。テストはPSP対応のCX7 NIC上で実施されている。今回のマージリクエストでは、Daniel Zahkaが以下の3つの要素を実装している。
- PSPコアコードの追加
デバイス情報を公開し、xfrmやトンネリングなど他の実装でも再利用可能な基盤を導入。 - TCP統合(TLSスタイル)
暗号状態をソケットにアタッチし、パケットを「復号済み」としてマークする仕組みを導入。TLSハンドシェイクを流用してPSPへ切り替える設計となっている。ソフトウェア実装は含まれておらず、効率面でTLSに劣るため対象外としている。 - mlx5ドライバ対応
初期段階ではNVIDIA-Mellanox MLX5ネットワークドライバのみがPSPを利用可能。
今後の展望
このコードはすでにnet-nextツリーにマージされており、Linux 6.18のマージウィンドウで本流に統合される予定だ。PSPはトンネリングモードやTLS代替としての運用など幅広い用途が見込まれ、特に大規模データセンターにおける効率的な暗号化通信の基盤として期待されている。
詳細はLinux Ready To Upstream Support For Google's PSP Encryption For TCP Connectionsを参照していただきたい。