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
webauthn概論
Search
yuta kadotamai
October 11, 2018
Technology
0
120
webauthn概論
yuta kadotamai
October 11, 2018
Tweet
Share
More Decks by yuta kadotamai
See All by yuta kadotamai
Rust、何もわからないので頑張らないWeb開発 …とこれから頑張るために
kadotami
2
1k
エンジニアによる非エンジニアのためのエンジニアリングのあれこれ
kadotami
0
180
僕が中学生の頃から存在するサービスをモダンな技術で再構築しているのだが…
kadotami
1
430
Other Decks in Technology
See All in Technology
SREが投資するAIOps ~ペアーズにおけるLLM for Developerへの取り組み~
takumiogawa
1
420
Platform Engineering for Software Developers and Architects
syntasso
1
520
Why App Signing Matters for Your Android Apps - Android Bangkok Conference 2024
akexorcist
0
130
BLADE: An Attempt to Automate Penetration Testing Using Autonomous AI Agents
bbrbbq
0
320
リンクアンドモチベーション ソフトウェアエンジニア向け紹介資料 / Introduction to Link and Motivation for Software Engineers
lmi
4
300k
インフラとバックエンドとフロントエンドをくまなく調べて遅いアプリを早くした件
tubone24
1
430
プロダクト活用度で見えた真実 ホリゾンタルSaaSでの顧客解像度の高め方
tadaken3
0
170
Application Development WG Intro at AppDeveloperCon
salaboy
0
190
Adopting Jetpack Compose in Your Existing Project - GDG DevFest Bangkok 2024
akexorcist
0
110
日経電子版のStoreKit2フルリニューアル
shimastripe
1
130
AWS Lambda のトラブルシュートをしていて思うこと
kazzpapa3
2
180
強いチームと開発生産性
onk
PRO
35
11k
Featured
See All Featured
BBQ
matthewcrist
85
9.3k
Facilitating Awesome Meetings
lara
50
6.1k
Faster Mobile Websites
deanohume
305
30k
Designing for humans not robots
tammielis
250
25k
Raft: Consensus for Rubyists
vanstee
136
6.6k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
Bash Introduction
62gerente
608
210k
YesSQL, Process and Tooling at Scale
rocio
169
14k
Adopting Sorbet at Scale
ufuk
73
9.1k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
How STYLIGHT went responsive
nonsquared
95
5.2k
Measuring & Analyzing Core Web Vitals
bluesmoon
4
130
Transcript
次世代システム研究室 第二研究開発グループ 門田見 侑大 検証! 次世代Web認証 ~ WebAuthn概論 ~
2 本発表を三行で WebAuthnを用いたサービス開発にフォーカス 現行のサービスにおける認証方式とWebAuthnの比較 実装における懸念、苦労、今後の展望について語ります
3 アジェンダ ・WebAuthnとは? ・WebAuthnのフロー ・登録フロー ・認証フロー ・デモ ・懸念と考察 ・まとめ
4 WebAuthn とは?
5 一言で表すと 「パスワードなしで ユーザー認証するためのAPI」
6 パスワードって何がいけない?
7 パスワード認証の課題 ・記憶・入力が面倒 ・入力時点でキーロガーなどのリスク ・リスト型攻撃、フィッシングサイトによる被害 ・サイトAでパスワードが漏れる → 使い回しユーザーはサイトBでも情報漏れる → 自サービスのセキュリティだけでカバー不可
8 二段階認証やreCAPCHAの普及 ・リスト型攻撃による被害減 ・ユーザーの導入障壁も低い ・しかし、以下のデメリットも、、、 ・フローが増える ・入力が面倒 ・分かりづらい ・ユーザーを守るものが離脱の原因に、、、
9 Touch IDやFace IDの課題 ・Touch IDは利用するのにパスワードが必要 →入力の手間が省けるだけ ・Face IDも裏側ではサービスのパスワードを入力 →パスワードが漏れたらサービスログイン可能
・これらが解決しているのは「記憶・入力が面倒」のみ
10 残る問題 ・攻撃の対象となる ・秘匿情報が通信に乗る ・使い回しで他サービスも被害を受ける → ユーザーのリテラシーによって難易度が変動 → 自社セキュリティだけでは解決できない
11 そもそも秘匿情報を 入力・送信・登録しているのが問題
12 パスワード使わなければいいのでは?
13 そこでWebAuthn
14 WebAuthn ・Web Authentication API の略 Credential Management APIの拡張 ・ブラウザにおいてFIDO認証を行うAPI
→ ブラウザの仕組みなのでJSで呼び出す ・ローカルのFIDO認証デバイスによって認証をする ・今年4月にW3Cの勧告候補に!続々とブラウザが対応!
15 FIDO認証とは? ・「速い・簡単・セキュア」を謳った認証規格 ・公開鍵認証を用いた認証方式 ・鍵の作成、保存、利用をデバイス(認証器)に委任 ・サービス(ドメイン)ごとにキーペアを作成 ・認証器は本人性、ユーザーの存在を担保する → 本人性の担保に生体認証など様々な方式が利用可能
16 FIDOデバイス
17 FIDO認証は何がいいの? ・そもそもパスワード使わない ・秘匿情報が通信にすら乗らない ・攻撃に強い仕組みである ・他のサービスのセキュリティに左右されない ・reCapchaのような面倒くささも分かりづらさもない
18 WebAuthnとは?(まとめ) ・パスワードレスを実現する要素技術 ・公開鍵認証(FIDO認証)がサイトログインに使える! ・指紋認証・顔認証でサイトにログインできる時代が来た! ・「速い・簡単・セキュア」でユーザー体験向上! ・いいことづくめの予感!!!!!
19 でも、導入障壁高そう…
20 アジェンダ ・WebAuthnとは? ・WebAuthnのフロー ・登録フロー ・認証フロー ・デモ ・懸念と考察 ・まとめ
21 登場人物 認証器 ブラウザ サーバー
22 ユーザー登録
23 ⑥バイナリ化した鍵などを送信 WebAuthnの登録フロー ①チャレンジを要求 ② チャレンジの返却 ④ ユーザー検証/鍵生成 ⑤公開鍵やIDなどを返却 ③
鍵の生成リクエスト ⑦データ検証 / 登録 オフラインでの認証 オンラインでの検証
24 ユーザー認証
25 WebAuthnの認証フロー ③ 署名のリクエスト ④ ユーザー検証/署名の生成 ⑤署名などを返却 ⑥バイナリ化した署名などを送信 ⑦データ検証 /
認証 オフラインでの認証 オンラインでの認証 ①チャレンジと鍵のIDを要求 ② チャレンジと鍵のIDを返却
26 WebAuthnの特徴 ・認証がオンライン・オフラインに分離 ・実装者は認証方法には非関与 ・登録時には鍵の署名チェックはされない ・最低限DBに保存すべき値は4つ ・ユーザーID or メールアドレス ・公開鍵
・公開鍵のID ・デバイスの署名回数合計
27 WebAuthnの特徴 ・ドメイン(RPID)ごとに鍵が生成 RPIDはデフォルトだとフルのドメイン ex. https://www.gmo.jpで生成される鍵のRPIDはwww.gmo.jp ドメインの接尾辞を指定することも可能 ex. https://www.gmo.jpの接尾辞はgmo.jp ・これによって1つの鍵を使い回せるメリットあり
28 DEMO1 〜 通常のログインフロー 〜
29 用意した環境とストーリー ・あるサイトで登録してログインできることを確認 webauthn.kdtm.com webauthn.kdtm.comの鍵
30 用意した環境とストーリー ・異なるサイトでログインできないことを確認 webauthn.kdtm.com webauthn-second.kdtm.com webauthn.kdtm.comの鍵
31 DEMO2 〜 ドメイン接尾時の鍵を利用 〜
32 用意した環境とストーリー ・ドメイン接尾辞で登録してログインできることを確認 webauthn.kdtm.com kdtm.comの鍵
33 用意した環境とストーリー ・接尾辞が同じならログインできることを確認 webauthn.kdtm.com webauthn-second.kdtm.com kdtm.comの鍵
34 実装してみての雑感 ・最低限の機能は仕様を読んでしまえば書く量は少なめ ・エラーの原因がわかりにくい、ブラウザによって異なる ・基本的にバイナリ、暗号のやり取りなので 直感的に分かりづらい ・デバッグがしんどい 最後まで実装してようやく間違いに気付く
35 アジェンダ ・WebAuthnとは? ・WebAuthnのフロー ・登録フロー ・認証フロー ・デモ ・懸念と考察 ・まとめ
36 既存の課題は解決?
37 現在の認証の課題は解決するか ・記憶・入力が面倒 何も記憶しないし、 デバイス次第で何も入力しなくても良い ・リスト型攻撃 結局バイナリのやり取りなので、理論上可能 → 当てるのは天文学的確率 ・フィッシングサイト そもそもパスワード入力しないので被害無
RPIDベースなので公開鍵すら取られない
38 で、普及するの?
39 普及するか? ・認証器を単体を買う人は少ないはず ・スマホが認証器になる → 普及の速度はとても速くなるはず → ガラケー?知らない子ですね ・FIDOデバイス組み込み式のPCが増えれば普及する → 他のマシンで鍵の使い回しができない → マシンの数だけ登録作業 → 1つのアカウントに複数鍵を持てる設計が必須
40 普及するか? ・ブラウザの対応状況 Google Chrome バージョン67以上 TouchIDは69以上 FireFox バージョン60以上 Edge
insider preview実装済み 10月のupdateで利用可能 Safari 開発中 Internet Explorer 未対応
41 Android Chrome Betaでも デバイスの指紋認証で利用できる
42 DEMO3
43 目まぐるしい速度で 進化してます!!!
44 開発のときテストしたい
45 開発時のテストどうする? ・結合的な自動テストはできない ・サーバーの動作を担保するためのテストなら ・認証機が生成するバイナリをハードコーディング ・わざと鍵のデータを書き換えたシナリオを作成 のようにすれば可能 しかし、ここで新たな問題が、、、
46 攻撃される可能性…
47 攻撃シナリオ ユーザー 攻撃者の認証器 攻撃者のローカル環境 攻撃対象のサイト のフロントエンド (example.com) 攻撃対象のサイトの バックエンド
攻撃者
48 攻撃シナリオ 1.ローカルの環境でexample.comの鍵を作成 example.comの鍵
49 攻撃シナリオ 2.鍵の作成時に返却されるデータを保存しておく example.comの鍵 データ保存
50 攻撃シナリオ 3.XSSを仕込む example.comの鍵 データ保存 必要な要件 ・登録に利用するIDの取得 ・検証に利用するデータの取得 ・保存したデータの埋め込み ・id
・raw_id ・attestationObject ・登録APIにアクセス
51 攻撃シナリオ 4.ユーザーがXSSのページを踏む example.comの鍵 データ保存 XSS発動!!
52 攻撃シナリオ 5.ユーザーのアカウントに攻撃者の公開鍵が紐づく example.comの鍵 データ保存
53 攻撃シナリオ 6.攻撃者の鍵でログインできる(乗っ取り) example.comの鍵 データ保存
54 攻撃の手法がないというわけではない ・そもそもXSSはやばいが、、、 ・メール認証とかは挟むべき ・結果から言えばほぼ使えないシナリオですが、 WebAuthn使えば完全無敵というわけではない ・DBを書き換えられたら終わり
55 銀の弾丸ではない
56 その他懸念事項は? ・デバイス紛失時の対策 ・メールでの本人確認は可能だが、、、 ・メールサービスに同じデバイス使っていたら…? ・粗悪品への対策 ・同じ秘密鍵を生成するデバイス ・バグで秘密鍵が読み出せるデバイス ・認証器の正当性を証明するフローもあるが… ・オフラインでの攻撃
・古典的だが、盗難によるアカウント乗っ取りが効果的? ・顔認証や指紋認証は破れてしまう
57 その他懸念事項は? ・暗号化アルゴリズムに脆弱性が見つかったら? → デバイスによるので登録時の制限はできても、利用の制限は厳しい ・サービスで導入するにはまだ考慮すべき問題が多いが… → FIDOアライアンスに所属する企業では 社内向けなどで検証が進んでいるらしい
58 アジェンダ ・WebAuthnとは? ・WebAuthnのフロー ・サーバー実装 ~ 数字との戦い ~ ・オープンIDサービス導入に向けた課題 ・まとめ
59 まとめ ・WebAuthnは ・パスワードレスを実現するための要素技術 ・公開鍵認証(FIDO認証)をブラウザで使うためのAPI ・「速い・簡単・セキュア」 ・サイトのログインで生体認証などが使える未来キタ ・ブラウザやハードが続々対応推進中 ・様々な企業が実証実験中で普及しそう
60 まとめ ・導入するとなるとまだまだ懸念はある ・しばらくは、パスワードとの並行運用になりそう ・ユーザーにとってはパスワード入力なしで 利用できるだけで十分なメリットとなりうる ・要注目の次世代認証技術です
61 ご清聴ありがとうございました