Download - AWS KMSと鍵の話
Amazon KMS(Key Management Service)
uji52
AWS勉強会5分間LT資料 vol2
uji52
自己紹介
• uji52
• 好きなAWSサービス• Lambda
• STS
• 好きなスペック• OpenID Connect
• 好きな署名アルゴリズム• RSA SHA-256
2
uji52
KMS
3
uji52
そもそも鍵とか暗号化ってなんだ
4
uji52
暗号化方式
• 公開鍵暗号• 公開鍵を相手に渡して利用
• 公開鍵暗号化してデータを渡す• 秘密鍵で署名してデータを渡す
• 共通鍵暗号• 同じ鍵で暗号化・復号化
5
uji52
公開鍵暗号の使いみち
• 暗号化してデータを送信• サーバ証明書• SSH
• 署名したのが自分だと証明• JWT Tokenの署名• SAML Responseの署名
6
uji52
本題に入る前に
7
KMSの話
uji52
よくググる内容
8
ここ最近はcertbotばっかり使ってるけど
uji52
よくやる内容
9
#RSAの秘密鍵を生成$ openssl genrsa 2048 > privkey
#公開鍵生成する場合$ openssl rsa -in privkey -pubout -out pubkey
# 認証局への署名リクエスト(Certification Signing Request)を生成# 自身が誰なのか説明するためにいろいろ入力$ openssl req -new -key privkey > server.csr
# 自身でリクエストの内容を見て署名する$ openssl x509 -days 3650 -req -signkey privkey < server.csr > server.crt
uji52
よくやる内容
1. 秘密鍵作って
2. 公開鍵の所有者明らかにして
3. その公開鍵に署名してもらって
4. その署名を公開する
10
uji52
ブラウザは証明書を見て相手が誰か判別して暗号化通
信
11
uji52
結局何が言いたいか
12
uji52
秘密鍵・共通鍵は
大事に保管しなきゃ
13
uji52
Amazon KMS
14
uji52
平文で重要情報保管
15
秘密鍵パスワード等
平文ダメ!ゼッタイ!
uji52
共通鍵で暗号化して保存
16
秘密鍵パスワード等
共通鍵
暗号化して保存
結局鍵を平文で保存とかダメ!ゼッタイ!!
平文
uji52
Amazon KMS
17
秘密鍵パスワード等
共通鍵
暗号化して保存
鍵
暗号化された共通鍵
復号化して鍵取り出し
uji52
Amazon KMS
18
データキーマスターキー
uji52
AWS KMSをCLIで叩く
• aws kms create-key• マスターキーを作る
• aws kms encrypt• マスターキーで暗号化する
• aws kms decrypt• マスターキーで復号化する
• aws kms generate-data-key• データキーを作る
19
使う場合には「結果はBase64エンコードされている」
ということを覚えておくと吉
uji52
まとめ
• マスターキーによる鍵管理• マスターキーを年単位でローテート可• マスターキーが盗まれることなんて…
• AWSに乗っかる• 安定のフルマネージド• Lambda・EC2から共通呼び出し• 鍵利用の情報の管理
20
uji52
おまけ(サーバ証明書の話)
21
uji52
よくやる内容
1. 秘密鍵作って
2. 公開鍵の所有者明らかにして
3. その公開鍵に署名してもらって
4. その署名を公開する
22
uji52
サーバ証明書取得フロー
23
秘密鍵
公開鍵
証明書署名要求
証明書
CA(認証局)
1.秘密鍵を作る
2.公開鍵と自分の情報に署名して証明書署名要求を作る
3.署名してって頼む
4.証明書もらえる
uji52
Private Key
24
modulus
publicExponent
privateExponent
prime1
prime2
exponent1
exponent2
coefficient
←公開鍵情報
$ openssl rsa -text < privkey
uji52
Public Key
25
Modulus
Exponent
$ openssl rsa -text -pubin < pubkey
uji52
Public Key
26
Data:
Version
Subject
Subject Public Key Info
Public Key Algorithm
Public-Key
Modulus
Exponent
Attributes
Signature Algorithm
$ openssl req -text -noout -in server.csr
←公開鍵情報
←自身の署名
uji52
Certificate
27
Certificate
Data
Version
Serial Number
Signature Algorithm
Issuer
Validity
Not Before
Not After
Subject
$ openssl x509 -in server.crt -text
Subject Public Key Info
Public Key Algorithm
Public-Key
Modulus
Exponent
Signature Algorithm
↑CAの署名
←CAの追記した情報署名