セキュリティ · 上級
暗号化:いつ、どこで、どう間違えないか
一行でいうと: 既知のライブラリを最新のデフォルトで使い、何も発明するな——ほぼすべての暗号化の失敗は使用の失敗だ。
三つの状態
転送中。内部サービス間を含め常に暗号化。内部ネットワークは安全なゾーンではない。
保存中。ディスク、バックアップ、オブジェクトストレージ。ほとんどのクラウドサービスでは設定であり、プロジェクトではない。
フィールドレベルで。特に機密のデータのために、データベースアクセスでさえ露出しないように。代償:それに対して容易に検索できない。
キー管理が主要なこと
キーはデータの隣ではなくキー管理サービスに保存される。明示的な権限、定期的なローテーション、アクセスのロギング。同じサーバーに座るキーを持つ暗号化は、サーバーに届いた攻撃者に対して少ししか追加しない。
よくある間違い
古い暗号化モード、ランダム値の再利用、時間を漏洩する方法でのシークレット文字列の比較、パスワードへの速いハッシュ。すべてはプリミティブの代わりに高レベルのインターフェースを使うことで回避される。
さらに深く
データタイプごとに文書化する:暗号化されているか、どのレイヤーで、誰が復号化できるか、どれくらい保持されるか。この文書はどの監査でもとにかく必要であり、通常は誰も考えていなかった二箇所も明らかにする。