暗号化について
暗号化についてまとめてみたよ
🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙
10分でわかる!Key Management Serviceの仕組み #cmdevio | Developers.IO
AWS Black Belt Online Seminar AWS Key Management Service (KMS)
🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙🌙
classmethod大好き🥰
暗号化キー
暗号化には暗号化キーが必要
同じ暗号アルゴリズムでも処理につかうキーが違うと処理の結果が違くなる🙄
暗号化キーが第三者に取られちゃうと暗号した機密情報が復元されて大変なことになるからちゃんと管理しなきゃいけない👶
暗号化の方法
1.共通鍵暗号方式
暗号化と復号化で同じ鍵を使う方法!✊
メリットは処理速度が高速なこと!デメリットは鍵の数がめっちゃ増える👀
2.公開鍵暗号方式
暗号化と復号化で別の鍵を使う方法🔒
暗号化する鍵は公開されてるから誰でも公開できるけど、復号化する鍵は秘密だからできないよ〜!って感じ
デメリットは処理が低速😥
ハイブリッド方式
これら二つの方式が組み合わさったのがハイブリッド方式!
データ自体の暗号、復号化には共通暗号方式が使われて、鍵そのものには公開鍵暗号方式が使われるおことがおおい🧐
3.ハッシュ化
元のデータをハッシュ化する!
AWSの暗号化サービス
AWS KMS
暗号化キーを管理できるよ!ってサービス
自分で管理するのは大変だから😢
複数のAZで管理、イレブンナインの可用性😈
他のAWSサービスがたくさんインテグレーションされてる
(S3,EBS,Redshift,RDS,Snowballとか)
SDKを使うことでクライアントのアプリケーションでもつかえる🧐
カスタマーマスターキー(CMK)とカスタマーデータキー(CDK)を管理する🤟
この二つの鍵をつかって暗号化、復号化する方法はEnvelope Encryptionっていう😃
最大4KBまで暗号化できる🙄
データキー
これはデータを暗号化するための鍵🌻
マスターキー
これーはデータキーを暗号するための鍵🔦
使う流れ
1.まず、マスターキーを作成する💄
APIのCreateKeyで作れるらしい。
作成すると、マスターキーはAWSに保存されて、ユーザーにはマスターキーのキーIDが返される。(ユーザーにマスターキー自体は返されないのがポイント!)
2.データキーを作成する
データキーはAWSのGenerateDataKeyで作れるって😺
さっき返されたマスターキーのIDを指定するよ。
したっけAWSがマスターキーを使って暗号化してくれたデータキーと暗号化されてないデータキーが返される👍
3.データを暗号化する
さっき返された暗号化されてないデータキーを使ってデータを暗号化する!
暗号化できたら暗号化されてないデータキーはすぐ捨ててね☝️
暗号化されたデータキーは大事に守る👀
4.データを復号化する
AWSに暗号化されたデータキーとマスターキーのIDを渡すと暗号化されてないデータキーが返されるから、それを使ってデータを復号化する🙌復号化できたら暗号化されていないデータキーはすぐポイ!🐙
鍵の管理
マスターキーは有効化したり無効化したりするのが自由🧘♀️
マスターキーは1年ごとにローテーションできるか決めれる!
ローテーションしたら新しいマスターキーが使われるようになるけど、古いマスターキーをつかって暗号化したデータキーは古いやつじゃないと復号化できない👀
鍵を管理や使用するIAMユーザー、ロールの定義
あとはキーポリシーも決められるよ🌙
デフォルトはDeny
マスターキーの持ち込みもできる(BYOK)
BYOK
- インポートする鍵は256ビットの対象鍵だけ🔰
- インポートされた鍵は独自のアプリ、AWSのサービスで使用できる
- エクスポートはできないよ🚫
- 手動でローテーションするしかない
- リージョン障害が起きたら自動復旧されない(AWSで作成したやつならOK⭕️)
- 有効期限がすぎたらすぐ削除される😰(AWSで作成したやつなら7-30日猶予あり
- 複数リージョンにインポートできるけど、別リージョンのKMSで暗号化したやつを復号化することはできないよ🙅♀️
EBSの暗号化
- データキーでEBSのボリュームが暗号化される
- EBSのボリュームがマウントされた時にEC2インスタンスが暗号化されたデータキーを受け取ってKMSに送る
- KMSが復号化したデータキーをインスタンスが稼働しているホストに送ってデータを復号化する。
CloudHSM
これはAWSが専用のサーバを用意してくれる🧚♀️
対象鍵暗号、非対称鍵暗号に対応してるよ👀