Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
lightweight authenticity of microservices
Search
wtnabe
August 20, 2016
Programming
510
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
lightweight authenticity of microservices
これくらいならユーザー認証なしでやってもいいかも? みたいな割り切りの話。
wtnabe
August 20, 2016
More Decks by wtnabe
See All by wtnabe
Rubyでもモノリポしたい - 調査、おわわり編 -
wtnabe
0
61
Ruby de Railway Oriented Programming
wtnabe
0
110
Bindanのススメ
wtnabe
0
65
そのオブジェクト、何を保証してくれますか? - GuideRailのススメ -
wtnabe
0
78
Effective Jekyll
wtnabe
0
98
5 min Jekyll/Liquid Plugin cooking
wtnabe
0
67
Ruby de Wasm
wtnabe
0
94
Cloud Native Buildpacksって結局どうなの?
wtnabe
0
82
Decoupled System with Turbo Frame
wtnabe
1
180
Other Decks in Programming
See All in Programming
FDEが実現するAI駆動経営の現在地
gonta
2
240
地域 SRE コミュニティ最前線 - ホンマでっかSRE勉強会
tk3fftk
0
290
【やさしく解説 設計編・中級 #4】ルールの寿命と、システムの年輪
panda728
PRO
2
180
メールのエイリアス機能を履き違えない
isshinfunada
0
180
継続モナドとリアクティブプログラミング
yukikurage
3
670
Android CLI
fornewid
0
200
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
450
AIエージェントで 変わるAndroid開発環境
takahirom
2
760
そこに3びきプロダクトがいるじゃろう——生成AI時代における“価値が届かない理由”の構造
kosuket
0
370
「寝てても仕事が進む」Claude Codeで組む第二の脳
tomoyafujita2016
0
240
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
370
Claude Team Plan導入・ガイド
tk3fftk
0
250
Featured
See All Featured
The Cost Of JavaScript in 2023
addyosmani
55
10k
Darren the Foodie - Storyboard
khoart
PRO
3
3.5k
Become a Pro
speakerdeck
PRO
31
6k
Designing for Performance
lara
611
70k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
280
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
440
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
310
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
230
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
200
Java REST API Framework Comparison - PWX 2021
mraible
34
9.6k
ラッコキーワード サービス紹介資料
rakko
1
4.1M
Transcript
インターネット越しの マイクロサービスな WebAPIの真正性設計 @wtnabe Kanazawa.rb meetup #48 2016-08-20 (Sat) at
IT Plaza MUSASHI
お品書き 真正性 今回の⽬的 メッセージ認証 今回の設計
真正性
authenticity なりすましではないこと
インターネット越しの通信 相⼿が誰か分からない 内容が改竄されていないか分からない
対策技術 ユーザー認証 メッセージ認証
ユーザー認証 独⾃実装 既存の認証機構を利⽤ SSL証明書を利⽤する ID / password⽅式 公開鍵⽅式
メッセージ認証 MD5やSHA256などのダイジェスト関数 デジタル署名 MAC ( Message Authentication Code )
ユーザー認証が重い 実装は重い パスワード管理は重い 鍵ペア管理は重い
逆に⽳になったり 独⾃実装がヘボい 管理がヘボい
今回の⽬的
マイクロサービスな WebAPIアクセス
「ユーザー」は1⼈2⼈しかいないはず (やりとりの必要なサービスは当初せ いぜい1つか2つ程度だろう) ⼤げさなユーザー認証機構は必要か? ⼤げさなユーザー認証機構は必要か?
もう⼀度 制約 制約 インターネット越し AWS VPCのようなゾーンはない あくまでアプリで VPN組むとかナシで
メッセージ認証
おおまかに MD5やSHA256などのダイジェスト関数 デジタル署名 MAC ( Message Authentication Code )
おおまかに 内容の⼀致しか分からない 鍵ペア管理が重い 共通の秘密鍵しかないので管理しやすい
MACいいんじゃない?
MAC 1. 共通の秘密鍵を持つ 2. 送信側 メッセージから鍵を⽤いてMACを⽣成 メッセージ本⽂とMACを送信 3. 受信側 メッセージ本⽂と秘密鍵からMACを⽣成
受信したMACを検証
メリット 鍵が漏れていなければメッセージは改竄 されていないと⾔える 鍵そのものは送らないので暗号化不要
HMAC HMAC: Keyed-Hashing for Message Authentication (RFC 2104) MACを⽣成するアルゴリズムにハッシュ 関数を利⽤する
ハッシュ関数は反復利⽤される 鍵もそのまま利⽤するわけではない
詳しくはおぐぐりください
利⽤例 AWS REST リクエストの署名と認証 - Amazon Simple Storage Service 基本的な認証のプロセス
- Amazon Simple Queue Service SSH Protocol 2 integrity
今回の設計
マイクロサービスなWebAPI
割り切り 秘密鍵を知っていることを以って相⼿を 信⽤することでユーザー認証不要に ⼆つのサービスの環境変数に同じ秘密 鍵をセットするだけでOK 公開してよい情報なら暗号化も不要
実装も楽 枯れた⼿法 (1997年 RFC 2104) 実装も普通にアリモノでOK OpenSSL::HMAC (Ruby) hash_hmac() (PHP)
事例もある SSH, AWSはデカイ
インターネット越しでも HMACでお⼿軽 マイクロサービス
参考 HMAC: Keyed-Hashing for Message Authentication (RFC 2104 / IPA)