Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
インターネット越しの マイクロサービスな WebAPIの真正性設計 @wtnabe Kanazawa.rb meetup #48 2016-08-20 (Sat) at IT Plaza MUSASHI
Slide 2
Slide 2 text
お品書き 真正性 今回の⽬的 メッセージ認証 今回の設計
Slide 3
Slide 3 text
真正性
Slide 4
Slide 4 text
authenticity なりすましではないこと
Slide 5
Slide 5 text
インターネット越しの通信 相⼿が誰か分からない 内容が改竄されていないか分からない
Slide 6
Slide 6 text
対策技術 ユーザー認証 メッセージ認証
Slide 7
Slide 7 text
ユーザー認証 独⾃実装 既存の認証機構を利⽤ SSL証明書を利⽤する ID / password⽅式 公開鍵⽅式
Slide 8
Slide 8 text
メッセージ認証 MD5やSHA256などのダイジェスト関数 デジタル署名 MAC ( Message Authentication Code )
Slide 9
Slide 9 text
ユーザー認証が重い 実装は重い パスワード管理は重い 鍵ペア管理は重い
Slide 10
Slide 10 text
逆に⽳になったり 独⾃実装がヘボい 管理がヘボい
Slide 11
Slide 11 text
今回の⽬的
Slide 12
Slide 12 text
マイクロサービスな WebAPIアクセス
Slide 13
Slide 13 text
「ユーザー」は1⼈2⼈しかいないはず (やりとりの必要なサービスは当初せ いぜい1つか2つ程度だろう) ⼤げさなユーザー認証機構は必要か? ⼤げさなユーザー認証機構は必要か?
Slide 14
Slide 14 text
もう⼀度 制約 制約 インターネット越し AWS VPCのようなゾーンはない あくまでアプリで VPN組むとかナシで
Slide 15
Slide 15 text
メッセージ認証
Slide 16
Slide 16 text
おおまかに MD5やSHA256などのダイジェスト関数 デジタル署名 MAC ( Message Authentication Code )
Slide 17
Slide 17 text
おおまかに 内容の⼀致しか分からない 鍵ペア管理が重い 共通の秘密鍵しかないので管理しやすい
Slide 18
Slide 18 text
MACいいんじゃない?
Slide 19
Slide 19 text
MAC 1. 共通の秘密鍵を持つ 2. 送信側 メッセージから鍵を⽤いてMACを⽣成 メッセージ本⽂とMACを送信 3. 受信側 メッセージ本⽂と秘密鍵からMACを⽣成 受信したMACを検証
Slide 20
Slide 20 text
メリット 鍵が漏れていなければメッセージは改竄 されていないと⾔える 鍵そのものは送らないので暗号化不要
Slide 21
Slide 21 text
HMAC HMAC: Keyed-Hashing for Message Authentication (RFC 2104) MACを⽣成するアルゴリズムにハッシュ 関数を利⽤する ハッシュ関数は反復利⽤される 鍵もそのまま利⽤するわけではない
Slide 22
Slide 22 text
詳しくはおぐぐりください
Slide 23
Slide 23 text
利⽤例 AWS REST リクエストの署名と認証 - Amazon Simple Storage Service 基本的な認証のプロセス - Amazon Simple Queue Service SSH Protocol 2 integrity
Slide 24
Slide 24 text
今回の設計
Slide 25
Slide 25 text
マイクロサービスなWebAPI
Slide 26
Slide 26 text
割り切り 秘密鍵を知っていることを以って相⼿を 信⽤することでユーザー認証不要に ⼆つのサービスの環境変数に同じ秘密 鍵をセットするだけでOK 公開してよい情報なら暗号化も不要
Slide 27
Slide 27 text
実装も楽 枯れた⼿法 (1997年 RFC 2104) 実装も普通にアリモノでOK OpenSSL::HMAC (Ruby) hash_hmac() (PHP)
Slide 28
Slide 28 text
事例もある SSH, AWSはデカイ
Slide 29
Slide 29 text
インターネット越しでも HMACでお⼿軽 マイクロサービス
Slide 30
Slide 30 text
参考 HMAC: Keyed-Hashing for Message Authentication (RFC 2104 / IPA)