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の追記した情報署名

AWS KMSと鍵の話