このドキュメントでは、Cloudflare の Application Services を使い、Federal Information Processing Standard (FIPS) 140 レベル 3 に準拠するためのリファレンスアーキテクチャを説明します。FIPS 140 は、コンピューターおよび通信システムで機密情報を保護する暗号モジュールのセキュリティ要件を定めた米国政府の規格です。
FIPS 140 は 4 つのセキュリティレベルを定義しています。非軍事用途ではレベル 3 が最も厳格です。暗号鍵と重要なセキュリティパラメーターへの不正アクセスを防ぐため、物理的な耐タンパー性を求めます。頑丈な筐体、開封痕跡のあるシール、本人確認ベースの認証などが含まれます。
FIPS 140 への準拠、とくにレベル 3 は、機密データを扱う組織にとって重要です。次のような規制産業では特に求められます。
- 政府: 機密性の高い政府情報を処理する連邦機関および請負業者。
- ヘルスケア: HIPAA の下で保護対象保健情報(PHI)を扱う組織。
- 金融サービス: 金融取引と顧客データを扱う機関。
- 防衛: 厳格なセキュリティ対策が必要な防衛プロジェクトに携わる請負業者。
FIPS 140 準拠は、データセキュリティへの強い取り組みを示し、顧客とパートナーとの信頼を築き、規制要件への適合を確保します。このリファレンスアーキテクチャは、Cloudflare の堅牢なセキュリティ機能を活用して、これらの厳格な基準を満たすための包括的なガイドです。
組織は FIPS 140-3 規格を使い、選定するハードウェアが特定のセキュリティ要件を満たすことを確認します。FIPS 認証規格は、段階的に厳しくなる 4 つの定性的セキュリティレベルを定義しています。
量産グレードの機器と、外部で検証済みのアルゴリズムが必要です。
物理的なタンパーエビデンス(開封痕跡)と、ロールベース認証の要件が加わります。
物理的な耐タンパー性と、本人確認ベースの認証の要件が加わります。重要なセキュリティパラメーターが出入りするインターフェースのあいだに、物理的または論理的な分離も必要です。秘密鍵は暗号化された形でのみ出入りできます。レベル 3 では、モジュールが範囲外の電圧または温度を検出して対応する(環境障害保護、EFP)か、環境障害試験(EFT)を受けることも求めます。
物理セキュリティ要件がさらに厳しくなり、タンパーアクティブであること、つまり各種の環境攻撃を検出したらデバイスの内容を消去できることが求められます。EFP とフォールトインジェクションへの対策、および多要素認証も必要です。
- Cloudflare Keyless SSL: Cloudflare の SSL/TLS 保護を使いながら、秘密鍵を自社インフラに安全に保管できるサービスです。秘密鍵は自社の管理下に置き、敷地外へ出さないまま、Cloudflare の DDoS 保護とパフォーマンス最適化を利用できます。
- Cloudflare Tunnel: Cloudflare のグローバルネットワークと、CloudHSM をホストするプライベートインフラのあいだに、安全な暗号化接続を提供し、転送中のデータを保護します。
- Hardware Security Module: 暗号鍵を安全に管理する、FIPS 140 レベル 3 準拠の HSM です。Cloudflare は AWS CloudHSM、Azure Key Vault、Google Cloud KMS など、いくつかの HSM に対応しています。
次のアーキテクチャ図は、Cloudflare Application Services とその必須コンポーネントで FIPS 140 レベル 3 準拠を実現するための、主な構成要素とデータの流れを示します。
flowchart TB
User((User/Client)) --> |1.SNI = keyless.example.com| CF[Cloudflare Edge Network]
subgraph CF [Cloudflare Edge]
KeylessSSL[Keyless SSL Service]
end
subgraph Private[Private Infrastructure]
Tunnel[Cloudflare Tunnel]
HSM[Hardware Security Module]
KeylessModule[Keyless Module]
end
Tunnel -->|2.Establish tunnel| KeylessSSL
KeylessSSL -->|3.Keyless operation required| Tunnel
Tunnel -->|4.Forward to HSM| KeylessModule
KeylessModule -->|5.Key Operations via PKCS11| HSM
classDef cloudflare fill:#F6821F,stroke:#fff,stroke-width:2px,color:#fff
classDef aws fill:#232F3E,stroke:#fff,stroke-width:2px,color:#fff
classDef default fill:#fff,stroke:#000,stroke-width:2px, color:#000
class CF,KeylessSSL,Tunnel,KeylessModule cloudflare
class HSM aws
class User default
- ユーザー/クライアント: Cloudflare で保護されたドメインへ HTTPS リクエストを開始します。リクエストの Server Name Indication (SNI) 拡張に、たとえば
keyless.example.comのようなドメイン名を指定します。そのドメインは keyless として宣言された証明書に対応します。つまり Cloudflare には公開鍵だけがインポートされ、以降の鍵操作向けに keyless リスナーも宣言されます。 - Cloudflare のセキュアトンネル確立: Cloudflare Tunnel コンポーネントを使い、Cloudflare のグローバルネットワークとの安全で信頼性の高い接続を確立します。境界から出るのは送信トラフィックだけであり、ファイアウォールでトラフィックを絞れます。この安全な接続は、鍵操作用のセキュアオーバーレイとして使います。
- 鍵操作: Cloudflare SSL が keyless 操作が必要だと検出すると、プライベートインフラにインストールされた keyless モジュールへ、すべての鍵操作を送ります。トラフィックはすべて、先に確立したセキュアトンネルを通ります。
- Keyless モジュール: keyless モジュール は、暗号操作用に鍵操作を Hardware Security Module (HSM) へ転送します。keyless モジュールは、Cloudflare と HSM のあいだのプロキシとして動くソフトウェアコンポーネントで、秘密鍵が HSM から出ないようにします。
- PKCS11 による鍵操作: HSM は、HSM 内に安全に保管された秘密鍵を使って暗号操作を行います。HSM は、暗号鍵を安全に管理し暗号操作を行う耐タンパーデバイスであり、機密データに対して最高水準のセキュリティを確保します。
- Cloudflare Keyless SSL
- Cloudflare Tunnel
- セキュアな Tunnel を使った Keyless SSL
- 対応している HSM:
- 設定: 鍵サーバーをハードウェアセキュリティモジュールと連携するように設定します。
- AWS CloudHSM: Keyless SSL を AWS CloudHSM と組み合わせて使う方法を説明します。
- Azure Dedicated HSM: Keyless SSL を Azure Dedicated HSM で使う方法を確認します。
- Azure Managed HSM: Microsoft Azure の Managed HSM を使い、Keyless SSL デーモン付きの VM をデプロイします。次の手順で keyless サーバーをデプロイします。
- Entrust nShield Connect: Entrust nShield Connect で Keyless SSL を使う方法を説明します。
- Fortanix Data Security Manager: Fortanix Data Security Manager で Keyless SSL を設定します。
- Google Cloud HSM: Keyless SSL を Google Cloud HSM で使う方法を説明します。
- IBM Cloud HSM: Keyless SSL を IBM Cloud HSM と組み合わせて使う方法を説明します。
- SoftHSMv2: Keyless SSL を SoftHSMv2 と組み合わせて使う方法を説明します。