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
500
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
52
Ruby de Railway Oriented Programming
wtnabe
0
99
Bindanのススメ
wtnabe
0
60
そのオブジェクト、何を保証してくれますか? - GuideRailのススメ -
wtnabe
0
74
Effective Jekyll
wtnabe
0
97
5 min Jekyll/Liquid Plugin cooking
wtnabe
0
60
Ruby de Wasm
wtnabe
0
90
Cloud Native Buildpacksって結局どうなの?
wtnabe
0
76
Decoupled System with Turbo Frame
wtnabe
1
170
Other Decks in Programming
See All in Programming
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
230
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
160
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.6k
net-httpのHTTP/2対応について
naruse
0
480
TAKTでAI駆動開発の品質を設計する
j5ik2o
6
1.3k
JavaDoc 再入門
nagise
1
340
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
1
240
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
160
Composerを使ったサプライチェーン攻撃の様子を眺めてみる #phpstudy
o0h
PRO
2
250
Javaの型とAI時代に型が大事な理由 / java types and type in AI era
kishida
2
130
過去最大のMCPアップデート! 2026-07-28 RC版の謎に迫る
licux
6
310
「エンジニアインターン、どうやって取った?」準備のリアルを語るLT会 Progate BAR
akiomatic
0
130
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
37
7.3k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.4k
How to Talk to Developers About Accessibility
jct
2
230
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
310
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.6k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
How to Ace a Technical Interview
jacobian
281
24k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
230
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
380
Building Applications with DynamoDB
mza
96
7.1k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
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)