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
190
僕が中学生の頃から存在するサービスをモダンな技術で再構築しているのだが…
kadotami
1
430
Other Decks in Technology
See All in Technology
Qiita埋め込み用スライド
naoki_0531
0
5.2k
20241214_WACATE2024冬_テスト設計技法をチョット俯瞰してみよう
kzsuzuki
3
660
pg_bigmをRustで実装する(第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
shinyakato_
0
110
株式会社ログラス − エンジニア向け会社説明資料 / Loglass Comapany Deck for Engineer
loglass2019
3
32k
React Routerで実現する型安全なSPAルーティング
sansantech
PRO
2
230
Amazon Kendra GenAI Index 登場でどう変わる? 評価から学ぶ最適なRAG構成
naoki_0531
0
130
10分で学ぶKubernetesコンテナセキュリティ/10min-k8s-container-sec
mochizuki875
3
380
クレカ・銀行連携機能における “状態”との向き合い方 / SmartBank Engineer LT Event
smartbank
2
100
能動的ドメイン名ライフサイクル管理のすゝめ / Practice on Active Domain Name Lifecycle Management
nttcom
0
170
AWS re:Invent 2024で発表された コードを書く開発者向け機能について
maruto
0
210
LINEスキマニにおけるフロントエンド開発
lycorptech_jp
PRO
0
340
多領域インシデントマネジメントへの挑戦:ハードウェアとソフトウェアの融合が生む課題/Challenge to multidisciplinary incident management: Issues created by the fusion of hardware and software
bitkey
PRO
2
110
Featured
See All Featured
For a Future-Friendly Web
brad_frost
175
9.4k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Writing Fast Ruby
sferik
628
61k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
111
49k
Bash Introduction
62gerente
609
210k
Thoughts on Productivity
jonyablonski
68
4.4k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.4k
Why Our Code Smells
bkeepers
PRO
335
57k
KATA
mclloyd
29
14k
Learning to Love Humans: Emotional Interface Design
aarron
274
40k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
The Cost Of JavaScript in 2023
addyosmani
46
7k
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 ご清聴ありがとうございました