Securing Sensitive Data in Rails
2018 https://ankane.org/sensitive-data-rails
機密データをRailsで扱う際の注意点とテクニック
個人情報 (PII) の機密性が高いものから保護対策を行う
データベース
ストレージレベル
ディスク暗号化により物理的な盗難から保護する
ただしDBへの接続を奪取された場合は無力
アプリケーションレベル
データベースに送信する前に暗号化する
Symmetric Encryptionや公開鍵暗号など
データベース関数による暗号化は不完全、一時的にデータベースに機密データが見えるのでアプリケーションレベルの対応を推奨
キーローテーション
検索への対処
Blind indexで検索可能にすることもできる
ただしすべての行を同じキーでハッシュする必要がある
ハッシュは元に戻せないがレインボーテーブルによる攻撃は可能
匿名化
暗号化せずにデータを保護する
IPアドレスのマスキングなど