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
そのQRコード、安全ですか? / Cross Device Flow
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
ritou
August 22, 2024
Technology
4
650
そのQRコード、安全ですか? / Cross Device Flow
ritou
August 22, 2024
Tweet
Share
More Decks by ritou
See All by ritou
[PR] はじめてのデジタルアイデンティティという本を書きました
ritou
1
970
“パスワードレス認証への道" ユーザー認証の変遷とパスキーの関係
ritou
2
6.3k
パスキー導入の課題と ベストプラクティス、今後の展望
ritou
12
7.3k
Password-less Journey - パスキーへの移行を見据えたユーザーの準備 + α
ritou
1
160
Password-less Journey - パスキーへの移行を見据えたユーザーの準備 @ AXIES 2024
ritou
4
1.8k
OIDF-J EIWG 振り返り
ritou
2
96
MIXI Mと社内外のサービスを支える認証基盤を作るためにやってきたこと #MTDC2024
ritou
3
790
Passkeys and Identity Federation @ OpenID Summit Tokyo 2024
ritou
2
1k
Webアプリ開発者向け パスキー対応の始め方
ritou
4
6.9k
Other Decks in Technology
See All in Technology
チームメンバー迷わないIaC設計
hayama17
5
3.4k
「使いにくい」も「運用疲れ」も卒業する UIデザイナーとエンジニアが創る持続可能な内製開発
nrinetcom
PRO
1
770
メタデータ同期に潜んでいた問題 〜 Cache Stampede 時の Cycle Wait を⾒つけた話
lycorptech_jp
PRO
0
130
OCI技術資料 : 外部接続 VPN接続 詳細
ocise
1
10k
primeNumber DATA MANAGEMENT CAMP #2:
masatoshi0205
1
660
Lookerの最新バージョンv26.2がやばい話
waiwai2111
1
150
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
3k
ブラックボックス観測に基づくAI支援のプロトコルのリバースエンジニアリングと再現~AIを用いたリバースエンジニアリング~ @ SECCON 14 電脳会議 / Reverse Engineering and Reproduction of an AI-Assisted Protocol Based on Black-Box Observation @ SECCON 14 DENNO-KAIGI
chibiegg
0
120
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1.1k
問い合わせ自動化の技術的挑戦
recruitengineers
PRO
2
110
AIエンジニア Devin と歩む、自律型運用プロセスの構築
a2ito
0
540
Snowflake Night #2 LT
taromatsui_cccmkhd
0
310
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
77
5.3k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.1k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
78
From π to Pie charts
rasagy
0
140
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
270
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Reality Check: Gamification 10 Years Later
codingconduct
0
2k
How to make the Groovebox
asonas
2
2k
What does AI have to do with Human Rights?
axbom
PRO
1
2k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.3k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
170
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
120
Transcript
ͦͷQRίʔυɺ҆શͰ͔͢ʁ ΫϩεσόΠεͷೝূೝՄϑϩʔʹજΉڴҖͱରࡦ 2024/8/22 @ritou (Ryo Ito)
എܠ 2
ೝূཁૉͷมԽ: ࣝใ͔Βॴ࣋ใ+α • ύεϫʔυೝূ͔ΒύεΩʔೝূ • ϚΠφϯόʔΧʔυͱ҉ূ൪߸ͰϚΠφϙʔλϧ(ΞϓϦ)ʹϩάΠϯ 3
ΫϩεσόΠεͳϑϩʔͷඞཁੑ • ར༻ڥͷଟ༷ԽɺෳࡶԽ • PCɺϞόΠϧɺεϚʔτσόΠε… • ϞόΠϧΛத৺ͱͨ͠αʔϏεઃܭ 4
QRίʔυͷར༻ • ॊೈͳσʔλදݱͱऔΓѻ͍͢͞ • ҟͳΔσόΠεɺࢴͳͲͷഔମ͔ΒσόΠεͷଓ • ࣗಈೝࣝਓؒʹΑΔհͳͲଟ༷ͳϢʔεέʔεʹద༻Մೳ 5
QRίʔυͷऑ • ಡΈࠐΉ·Ͱͦͷ༰͕Θ͔Βͣɺ”ਖ਼نͷͷ”Ͱ͋Δஅ͕ࠔ • ॖURLͱͷΈ߹ΘͤͳͲ͋ΓಘΔͷͰ࠷ऴతʹ౸ୡ͢ΔURL Λૣ͍ஈ֊Ͱݕ͢Δͷࠔ • QRίʔυͷʮఏࣔʯʮಡΈࠐΈʯΛਓ͕ؒߦ͏ϑϩʔͰʮఆ͠ ͍ͯͳ͍ୈ̏ऀͱͷೖΕସ͑ʯ͕༰қʹى͜Γ͏Δ <-
ࠓճͷ • ※QRίʔυ ”͚ͩ” ͕ةͳ͍Θ͚Ͱͳ͍ <- λΠτϧϛεϦʔυ 6
ࣄྫ: QRίʔυΛ༻͍ͨϑΟογϯά߈ܸ • QRίʔυʹΞΫηε͢ΔͱϑΟογϯάαΠτʹ༠ಋ • ΫϨσϯγϟϧɺݸਓใɺΫϨΧޱ࠲ͳͲͷܾࡁใ • MitM ʹΑΓଟཁૉೝূΛಥഁͯ͠ϩάΠϯηογϣϯΛୣ͏ 7
ࣄྫ: QRίʔυܾࡁͰଞਓͷεΫγϣΛఏࣔ • ΩϟογϡϨεܾࡁͰ“ଞਓͷεΫγϣ”Λళһʹఏ͔ࣔʮඇৗʹ ͩʯͱઐՈڻ͍ͨٗ൜ͷखޱͱରࡦ https://news.yahoo.co.jp/ articles/e627f4e43a3c48eafe013ae8a212bc522e3a6d58 8
ใηΩϡϦςΟ10େڴҖ 2024 [ݸਓ] ΫϩεσόΠεϑϩʔʹ͓͚ΔڴҖͱରࡦेʹೝࣝ͞Ε͍ͯΔʁ 9
͜͏͍͏ͷ҆શͱݴ͑·͔͢ʁ 10
ࠓճͷ༰ • ΫϩεσόΠεͷೝূೝՄϑϩʔʹ͓͚ΔڴҖͱରࡦ • IETF OAuth WGͰਐΊΒΕ͍ͯΔυΩϡϝϯτΛհͭͭ͠ • ࢲ͕͖ͨͪ͢͜ͱͱʁ •
༷ࡦఆऀɺαʔϏε։ൃऀɺϢʔβʔ 11
Cross-Device Flows: Security Best Current Practice (Draft 08) 12
Cross-Device Flows: Security Best Current Practice (Draft 08) • https://datatracker.ietf.org/doc/html/draft-ietf-oauth-cross-device-
security • ΫϩεσόΠεϑϩʔʹؔ͢ΔڴҖɺରࡦ(؇ࡦ)ɺϓϩτίϧબ ͷΨΠμϯεɺܗࣜੳͷ֓ཁ 13
ొ͢Δϓϩτίϧ • IETF OAuth 2.0 Device Authorization Grant [RFC8628] •
ೖྗػೳʹ੍ݶ͕͋ΔσόΠεϦιʔεΞΫηεΛڐՄ • OpenID Foundation Client Initiated Back-Channel Authentication (CIBA) • Ϣʔβʔͷ௨Λϕʔεͱͨ͠ΫϩεσόΠεͳID࿈ܞ • FIDO2 / WebAuthn (hybrid transports) • ΫϩεσόΠεͳύεΩʔೝূ 14
ΫϩεσόΠεϑϩʔͷొਓ ফඅσόΠε ೝՄσόΠε Ϣʔβʔ 15
ΫϩεσόΠεϑϩʔύλʔϯ • ΫϩεσόΠεೝՄ(ೝূ) • ফඅσόΠε͔ΒೝՄσόΠεϢʔβʔ͕ೝՄϦΫΤετΛసૹ: OAuth 2.0 AuthZ Grant •
ফඅσόΠε͔ΒೝՄσόΠεೝՄϦΫΤετ͕όοΫνϟϯωϧͰసૹ: CIBA • ೝՄσόΠε͔ΒফඅσόΠεϢʔβʔ͕ೝՄϨεϙϯεΛసૹ: OAuth 1.0 (callback = oob) • σόΠεؒͷηογϣϯసૹ • ೝՄσόΠε͔ΒফඅσόΠεϢʔβʔ͕ηογϣϯΛసૹ: OID4VCI 16
ΫϩεσόΠεϑϩʔͷѱ༻ • ୈ̏ऀͷಉҙΛಘ֤ͯछτʔΫϯΛऔಘ͢Δ͜ͱ: Cross-Device Consent Phishing(CDCP) • ߈ܸऀೝূ͞Ε͍ͯͳ͍νϟϯωϧΛར༻ͯ͠ɺϢʔβʔίϯςΩετΛ ඃऀͷͷʹมߋ͢Δ •
ୈ̏ऀͷϩάΠϯηογϣϯΛऔಘ͢Δ͜ͱ: Cross-Device Session Phishing(CDSP) • ߈ܸऀೝূ͞Ε͍ͯͳ͍νϟϯωϧΛར༻ͯࣗ͠ͷσόΠεʹඃऀ ͷηογϣϯΛసૹͤ͞Δ 17
Ϣʔβʔ͕ೝՄϦΫΤετΛసૹ 18
όοΫνϟϯωϧͰೝՄϦΫΤετΛసૹ 19
Ϣʔβʔ͕ೝՄϨεϙϯεΛసૹ 20
σόΠεؒͷηογϣϯసૹ 21
߈ܸͷಛ • ιʔγϟϧΤϯδχΞϦϯάΛۦͯ͠ɺ࠷ऴతʹ߈ܸऀͷσόΠε ্ͰͷඃऀͷίϯςΩετͰͷೝূॲཧɺ߈ܸऀͷσόΠεͷ ηογϣϯసૹΛ࣮ݱ͢Δ • ॲཧͷ్தͰѻΘΕΔೝՄϦΫΤετɺϨεϙϯεͳͲਖ਼نͷͷ Ͱ͋Γɺվ᜵ͳͲΛ͢Δඞཁͳ͍ 22
ରࡦ • ࣮༻తͳ؇ࡦʹΑΔଟޚͱ͍͏ߟ͑ํ 1. ߈ܸΛ։࢝͞Εͳ͍ 2. ։࢝͞Εͨ߈ܸΛ્ࢭͰ͖Δ 3. ߈ܸ͕ޭͨ͠߹ʹɺӨڹΛܰݮͨ͠ΓϦΧόϦʔͰ͖Δ 23
؇ࡦ(1) • ۙੑͷཱ֬ • QRίʔυɺϢʔβʔίʔυͷ੍ݶ(༗ޮظݶɺ༻ճɺϢχʔΫੑ ͳͲ) • ίϯςϯπϑΟϧλϦϯά • ݕग़ͱϦΧόϦʔ
• ৴པͰ͖ΔσόΠεɺωοτϫʔΫ 24
؇ࡦ(2) • ϦιʔεΞΫηεʹඞཁͳτʔΫϯͷ੍ݶ(είʔϓ༗ޮظݶ) • Ϩʔτ੍ݶ • Sender-Constrained ͳτʔΫϯ • UXɺϢʔβʔڭҭ
• ೝূ͔ͯ͠Β։࢝ • ϦΫΤετ։࢝ͷݕূɺOOBσʔλΛ༻͍ͨϦΫΤετόΠϯσΟϯά 25
؇ࡦͷಛੑΛߟྀ͠ɺΈ߹ΘͤΔ 26
୭͕ԿΛ͖͔͢ 27
ࢲ͕͖ͨͪ͢͜ͱ • ༷ࡦఆऀ • ܗࣜੳΛར༻ͨ͠ڴҖੳͱରࡦݕ౼ɺϕετϓϥΫςΟεͷఏࣔ • αʔϏεͷ։ൃऀ • ্هΛࢀর͠ͳ͕Β࣮ɺϢʔβʔʹਖ਼͍͠ར༻ํ๏Λఏࣔ •
Ϣʔβʔ • αʔϏε͕ఏࣔ͢Δར༻ํ๏Λकͬͯར༻ 28
·ͱΊ 29
·ͱΊ • QRίʔυΛͬͨΫϩεσόΠεͷೝূೝՄϑϩʔʹ • ೝূ͞Ε͍ͯͳ͍νϟϯωϧΛར༻ͯ͠ୈ̏ऀͷϩάΠϯηογϣϯɺ ΞΫηεڐՄΛૂ͏ڴҖ͕ଘࡏ͢Δ • ιʔγϟϧΤϯδχΞϦϯάΛۦͯ͠ਖ਼نͷϦΫΤετɺϨεϙϯ εͷϢʔβʔίϯςΩετΛมߋ͢Δ •
؇ࡦΛΈ߹ΘͤΔଟޚͱ͍͏ߟ͑ • ༷ࡦఆऀɺ։ൃऀɺϢʔβʔͦΕͧΕͰ͖͢͜ͱΛ͠·͠ΐ͏ 30