【かぎかんり】

鍵管理 とは?

💡 暗号の安全性は「鍵の管理」で決まる
📌 このページのポイント
暗号鍵のライフサイクル管理 生成 安全な乱数 配布 安全に共有 利用 暗号化・復号 更新 ローテーション 廃棄 安全な削除 鍵管理システム(KMS) アクセス制御 監査ログ HSMによる保護 暗号化の強度は鍵の管理で決まる。鍵が漏洩すれば暗号は無意味に AWS KMS, Azure Key Vault, HashiCorp Vault などが代表的なサービス
鍵管理のイメージ
ひよこ ひよこ

なぜ鍵管理が重要なの?

ペンギン先生 ペンギン先生

どんなに強い暗号アルゴリズムも、鍵が漏洩したら意味がない。ソースコードAWSのシークレットキーをハードコードしてGitHubにpushしてしまう事故は毎日起きている。暗号の強度はアルゴリズムではなく鍵管理で決まるんだ。「暗号は簡単、鍵管理が難しい」はセキュリティの格言だよ

ひよこ ひよこ

AWS KMSって何?

ペンギン先生 ペンギン先生

AWSのKey Management Service。暗号鍵の生成・管理をAWSがやってくれるマネージドサービス。鍵はHSM(耐タンパー性を持つ専用ハードウェア)内で保護され、外部に取り出せない。S3の暗号化、RDSの暗号化、Secrets Managerとの連携など、AWSサービス全体で統合的に使えるのが便利だよ

ひよこ ひよこ

鍵のローテーションは必要?

ペンギン先生 ペンギン先生

必須だよ。定期的に鍵を新しくすることで、万一漏洩した場合の被害を限定できる。AWS KMSは年1回の自動ローテーション設定が可能。PCI DSSでは暗号鍵の定期ローテーションが義務。古い鍵で暗号化されたデータは新しい鍵で再暗号化するか、古い鍵を一定期間保持して復号に使うんだよ

ひよこ ひよこ

開発者が気をつけることは?

ペンギン先生 ペンギン先生

①絶対にソースコードに鍵を書かない(環境変数かSecrets Managerを使う)、②.envファイルを.gitignoreに必ず入れる、③git-secretsでコミット時に鍵の混入を検知、④Vaultなどのシークレット管理ツールを使う、⑤本番と開発で鍵を分離する。GitHub Secret Scanningが有効なリポジトリではpushした瞬間にAWSキーが自動失効するよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「鍵管理」って出てきたら「暗号鍵のライフサイクル全体を安全に管理する仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「Key Management」 = 鍵管理
💬 暗号のKey(鍵)をManagement(管理)する。暗号アルゴリズムより鍵管理の方が難しいと言われるよ
← 用語集にもどる