【エンベロープあんごうか】

エンベロープ暗号化 とは?

最終更新:
💡 鍵を鍵で包む、暗号化の封筒

データを暗号化するための「データ暗号化鍵(DEK)」を、さらに別の「鍵暗号化鍵(KEK)」で暗号化する二重構造の暗号化方式。AWS KMSやGoogle Cloud KMSなどクラウドの鍵管理サービスで広く採用されている。

📌 このページのポイント
エンベロープ暗号化:データの鍵も守るデータをDEKで暗号化データ平文DEKで暗号化AESなど暗号データDEKで暗号化済みDEKをKEKで暗号化DEK平文KEKで暗号化鍵を保護暗号化DEKデータと一緒に保存同じDEKを新しいKEKで包み直すならデータ本体の再暗号化は不要自動ローテーション・DEK自体の交換とは別
データはDEK、そのDEKはKEKで暗号化します。封筒は暗号化したDEKの比喩で、データ全体を二重に暗号化する意味ではありません。KEKの管理にはKMSを使う構成もあります。
ひよこ ひよこ
エンベロープ暗号化って、普通の暗号化と何が違うの?
ペンギン先生 ペンギン先生
データ本体を暗号化するDEKと、そのDEKを保護するKEKに役割を分けるんだ。データ全体を二重に暗号化するという意味ではなく、「鍵も暗号化して保存する」仕組みだよ。
ひよこ ひよこ
なんでわざわざ二重にするの?
ペンギン先生 ペンギン先生
データ全体を鍵管理サービスに送らず、データ暗号化と鍵の保護を分担できるからだよ。エンベロープ方式なら、データごとに異なるDEKを生成して高速なAESで暗号化し、そのDEKだけをクラウドのKMSで保護すればいいんだ。
ひよこ ひよこ
AWSとかGCPのKMSってその方式なんだ!でも鍵が2種類あって管理が大変にならないの?
ペンギン先生 ペンギン先生
KMSを使う設計では、KEKを集中管理し、暗号化したDEKをデータと一緒に保存できるよ。Cloud KMSではKEKを外へ出さずにDEKを復号する。ただしアプリが使う平文DEKや、KMSで復号する権限の保護も必要で、鍵管理を任せれば安全が保証されるわけではないんだ。
ひよこ ひよこ
鍵のローテーションって、エンベロープだと楽になるって聞いたけど?
ペンギン先生 ペンギン先生
同じDEKを新しいKEKで再ラップするなら、データ本体を暗号化し直さずに済むよ。ただしKMSの自動ローテーションと再ラップは別の操作。DEK自体を交換するなら、データ本体の再暗号化が必要なんだ。
ひよこ ひよこ
DEKが漏れたらどうなるの?
ペンギン先生 ペンギン先生
漏れたDEKと対応する暗号文がそろえば、そのデータを復号されるおそれがあるよ。データごとに独立したDEKを使う設計なら、漏えいしたDEKが直接復号できる範囲を限定できるんだ。KEKの更新だけでは、漏れたDEKの問題は解消しないよ。ただし同じDEKを広く使い回したり、KMSの復号権限まで漏れたりすれば影響は広がる。鍵を分ける設計とアクセス制御の両方を確認しよう。
もっと詳しく知りたい人へ

KMSの自動ローテーションで既存のDEKも包み直される?

AWS KMSの鍵ローテーションでは、既存の暗号文やデータキーは自動で再暗号化されません。古い暗号文は対応する過去の鍵素材で復号します。古いKEKから切り離したい場合の再ラップや、漏えいしたDEKの交換は別の対応です。必要な作業は利用サービスと更新目的に応じて確認します。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「エンベロープ暗号化」って出てきたら「データの鍵をさらに別の鍵で暗号化する二重構造」と思えればだいたいOK!
📖 おまけ:英語の意味
「Envelope Encryption」 = エンベロープ(封筒)暗号化
💬 DEKをKEKで包む様子が「封筒に手紙を入れる」ことに似ていることから「エンベロープ(封筒)」と呼ばれるんだよ

参考資料

← 用語集にもどる