ハードウェアセキュリティモジュール - AWS CloudHSM による暗号鍵の専有管理
AWS CloudHSM を使った暗号鍵の専有管理を解説。KMS との使い分け、FIPS 140-2 Level 3 準拠、TLS オフロード、Oracle TDE 統合など高度なユースケースを紹介します。
暗号鍵管理の要件と CloudHSM の位置づけ
暗号鍵の管理は情報セキュリティの根幹です。AWS KMS (Key Management Service) はほとんどのユースケースで十分な暗号鍵管理を提供しますが、一部の規制要件やセキュリティポリシーでは、暗号鍵を専有のハードウェアで管理し、AWS を含む第三者がアクセスできない状態を求められます。AWS CloudHSM は FIPS 140-2 Level 3 認証済みの専有 HSM (Hardware Security Module) をクラウド上で提供するサービスです。HSM はユーザーの VPC 内にデプロイされ、暗号鍵の生成・保存・使用がすべて HSM 内部で完結します。AWS は HSM のハードウェア管理 (プロビジョニング、パッチ適用、バックアップ) を担当しますが、HSM 内部の暗号鍵にはアクセスできません。鍵の管理権限はユーザーが完全に保持します。KMS もバックエンドで HSM を使用していますが、マルチテナントの共有 HSM であり、鍵の管理は AWS と共同で行う形です。コンプライアンス要件で「鍵の専有管理」が求められる場合に CloudHSM が必要になります。
この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。
クラスター構成と標準 API
CloudHSM はクラスター単位で管理します。クラスターは 1 つ以上の HSM で構成され、高可用性のために 2 つ以上の AZ に HSM を配置することが推奨されます。クラスター内の HSM 間で暗号鍵が自動的に同期されるため、1 台の HSM が障害を起こしても鍵へのアクセスが継続します。CloudHSM は業界標準の暗号 API をサポートします。PKCS#11 は C/C++ アプリケーションや OpenSSL との統合に使用します。JCE (Java Cryptography Extension) は Java アプリケーションとの統合に使用します。CNG/KSP (Cryptography API: Next Generation / Key Storage Provider) は Windows アプリケーションとの統合に使用します。これらの標準 API に対応しているため、既存のアプリケーションコードの変更は最小限で済みます。HSM クライアントソフトウェアを EC2 インスタンスにインストールし、VPC 内のプライベートネットワーク経由で HSM と通信します。
KMS との使い分け
CloudHSM と KMS の選択は、セキュリティ要件とコストのバランスで判断します。KMS を選ぶべきケースは、AWS サービス (S3、EBS、RDS、Lambda など) の暗号化、一般的なアプリケーションの暗号化、コストを抑えたい場合です。KMS は API 呼び出し 1 万件あたり 0.03 USD と低コストで、AWS サービスとのネイティブ統合が豊富です。CloudHSM を選ぶべきケースは、FIPS 140-2 Level 3 の認証が必要な場合 (KMS は Level 2)、暗号鍵の専有管理が規制で求められる場合、TLS/SSL オフロードで秘密鍵を HSM 内に保持したい場合、PKCS#11 や JCE などの標準暗号 API が必要な場合、Oracle TDE や Microsoft SQL Server の暗号化鍵を HSM で管理したい場合です。KMS のカスタムキーストア機能を使えば、CloudHSM クラスターを KMS のバックエンドとして使用でき、KMS の使いやすさと CloudHSM のセキュリティを両立できます。
TLS オフロードとデータベース暗号化
CloudHSM の代表的なユースケースが TLS/SSL オフロードです。Web サーバー (Nginx、Apache) の TLS 秘密鍵を CloudHSM 内に保持し、TLS ハンドシェイク時の秘密鍵操作を HSM 内で実行します。秘密鍵がサーバーのメモリやディスクに展開されないため、サーバーが侵害されても秘密鍵が漏洩するリスクを排除できます。OpenSSL エンジンとして CloudHSM を設定することで、Nginx や Apache の設定変更のみで TLS オフロードを実現できます。データベース暗号化では、Oracle TDE (Transparent Data Encryption) の暗号化マスターキーを CloudHSM で管理できます。Oracle Database の設定で PKCS#11 ライブラリとして CloudHSM クライアントを指定するだけで、データベースの暗号化鍵が HSM で保護されます。Microsoft SQL Server の EKM (Extensible Key Management) との統合も同様にサポートされています。料金は 1 HSM あたり 1.60 USD/時で、2 台構成の場合は月額約 2,336 USD です。
さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。
まとめ - CloudHSM の活用指針
AWS CloudHSM は、暗号鍵の専有管理が求められるエンタープライズ向けのサービスです。FIPS 140-2 Level 3 認証、標準暗号 API (PKCS#11、JCE、CNG)、TLS オフロード、データベース暗号化統合が主な強みです。ほとんどのユースケースでは KMS で十分ですが、規制要件で鍵の専有管理が求められる場合や、TLS 秘密鍵を HSM 内に保持したい場合に CloudHSM を検討してください。月額約 2,336 USD〜のコストが発生するため、要件を慎重に評価した上で導入を判断することを推奨します。
AWS の優位点
- FIPS 140-2 Level 3 認証済みの専有 HSM (Hardware Security Module) をクラウド上で利用でき、暗号鍵を自分だけが管理
- KMS がマルチテナントの共有 HSM を使用するのに対し、CloudHSM はシングルテナントの専有 HSM で鍵の完全な制御権を保持
- PKCS#11、JCE (Java)、CNG/KSP (Windows) の標準 API に対応し、既存のアプリケーションコードの変更が最小限
- TLS/SSL オフロードで Web サーバーの秘密鍵を HSM 内に保持し、鍵がサーバーのメモリに展開されるリスクを排除
- Oracle TDE (Transparent Data Encryption) や Microsoft SQL Server の暗号化と統合し、データベースの暗号鍵を HSM で管理
- クラスター構成 (2 AZ 以上) で高可用性を確保し、HSM 間で鍵が自動同期される
- 1 HSM あたり 1.60 USD/時 (約 1,168 USD/月) で、最低 2 台のクラスター構成が推奨されるため月額約 2,336 USD〜