今回はデータを暗号化する際の鍵の管理方法についてお話したいと思います。
PCI DSS(Payment Card Industry Data Security Standard)は、カード会員情報の保護を目的として、国際ペイメントブランド5社(アメリカンエキスプレス、Discover、JCB、マスターカード、VISA)が共同で策定したカード情報セキュリティの国際統一基準です。
PCI DSS準拠のシステムにおいて、最も価値のあるデータは何でしょうか。それは、言うまでもなく、クレジットカード情報です。その重要な情報であるクレジットカードは安全に保存しなければいけません。どのようにすれば情報を安全に保存することができるでしょうか。それは、
データを暗号化する
ことです。PCI DSSの要件3.5, 3.6ではカード会員データを保存する際の暗号化について記載されています。データを暗号化する際に、注意するポイントは3つあります。
- 安全な暗号化方式の使用
- 暗号化に使用する鍵の定期的な変更
- 暗号化に使用する鍵のアクセス制御
- 暗号化鍵へのアクセス記録の取得
安全な暗号化方式の使用

PCI DSS要件の3.6.1 「強力な暗号化鍵の生成データを暗号化する」では、強度の強い暗号化方式を選ぶことが求められています。AES256など強度の強い暗号化方式を選びます。現時点で利用可能なものは下記の通りです。
- AES(128 ビット以上)
- TDES/TDEA(3倍長キー)
- RSA(2048 ビット以上)
- ECC(224 ビット以上)
- DSA/D-H(2048/224ビット以上)
尚、安全な暗号方式は常に変わっていきますので、現在何が安全かは、PCI DSSに準拠するために、何を使用すれば良いかはPCI DSSの用語集に記載されており、最新バージョンのNIST Special Publication 800-57 Part 1を参照し、その時点で安全なものを使用してください。
暗号化に使用する鍵の定期的な変更

暗号化に使用する鍵を定期的に変更することで、万が一鍵が漏えいした場合にも被害を最小限にすることができます。どれくらいの頻度で鍵を更新するべきかは同様にPCI DSS用語集にあります。最新のNIST Special Publication 800-57(http://csrc.nist.gov/publications/)を元に判断します。暗号化の用途やデータ量によって期間は変わりますが一番短い物でも1年ですので、毎年変更していれば大丈夫です。
暗号化に使用する鍵のアクセス制御

暗号化鍵にアクセスできるアプリケーションや、人を必要最低限に限定することでリスクを低くすることができます。
暗号化鍵へのアクセス記録の取得

誰が暗号鍵にアクセスしたか常に記録を取っておき、定期的にログのレビューをし、不審なアクセスが無いか確認することで、万が一不正な利用があった際に直ぐに気づくことができます。
実際の構築方法
AWSで実際にどのように上記のような注意点を満たすことができるかは今後別の記事でご紹介したいと思います。