KMS

2種類の鍵

Key特徴永続化 in AWSexport
マスターキー(Customer Master key, CMK)データキー(鍵)を暗号化するAWS内で永続化されるユーザーExport不可。
データキー(Data Key, DK)データを暗号化するAWS内で永続化されないユーザーExport可。

Customer Master Keyを使う場合は、KMSのAPIを利用してencode/decodeする

2つ鍵が必要な理由

  • 暗号化の問題は鍵の管理方法
    • 鍵をexportされてしまうと漏洩の可能性がある。
    • なぜなら、鍵が暗号化されていないから
  • それを防ぐため、鍵をさらに別の鍵(鍵の鍵)で暗号化しておけば、元の鍵(暗号化した鍵)が漏洩してもデータは守られる。
    • ただし、鍵の鍵が漏洩する可能性があり、結局鍵を無限に暗号化しなければならない
  • そこで絶対に安全な方式で保管されているマスターキーを使って鍵を暗号化することにする

CMKとDKのフロー

大切なのは、API経由でCMKを使用して暗号化データキーを複合化し、その復号化された平文のデータキーを使用後に削除すること
そして、手元で管理するのは暗号化データキーのみにすること

  1. データの暗号化
    1. CMKのIDを使って、API経由で次の2つの鍵を作る
      1. 平文のデータキー
      2. 暗号化データキー
    2. データの暗号化
      1. 平文のデータキーでデータを暗号化
    3. 平文のデータキーの削除。
  2. 管理
    1. 管理するのは次の2つ
      1. 暗号化データキー
      2. 暗号化されたデータ
  3. データの復号化
    1. CMKのIDと暗号化データキーを使って、API経由で平文のデータキーを手に入れる
      1. これが、データキーの復号化
    2. データの復号化
      1. 平文のデータキーでデータの復号化
    3. 平文のデータキーの削除

エイリアス

  • カスタマーマスターキーにはUUIDが割り振られているが分かりづらいので、エイリアスを指定できる。

REFERENCES:

  • https://dev.classmethod.jp/articles/10minutes-kms/
  • https://docs.aws.amazon.com/ja_jp/kms/latest/developerguide/concepts.html#data-keys
  • https://dev.classmethod.jp/cloud/aws/cm-advent-calendar-2015-aws-relearning-key-management-service/