エンベロープ暗号化は、データを暗号化する鍵(DEK)と、
そのDEKを暗号化する鍵(KEK)を分離する二段階の暗号化方式。
用語
- DEK(Data Encryption Key): データ本体を暗号化する鍵
- KEK(Key Encryption Key): DEKを暗号化する鍵(KMSで管理する鍵など)
基本フロー
保存時
- DEKを生成
- DEKでデータ本体を暗号化
- KEKでDEKを暗号化
- 保存
- 暗号化済みデータ本体
- 暗号化済みDEK
参照時
- 暗号化済みデータ本体と暗号化済みDEKを取得
- KEKでDEKを復号
- DEKでデータ本体を復号
鍵ローテーションで有利な点
データ本体を直接KEKで暗号化していると、KEK更新時に大量データの再暗号化が必要になる。
エンベロープ暗号化なら、主に暗号化済みDEKの扱いで更新を進められるため負荷を抑えやすい。
大規模運用では、既存データを一括で再処理せず、新規書き込みから新KEKへ切り替える
遅延ローテーション(段階移行)を採ることが多い。
hsb.horse