Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
TakashiTsukamoto4
PPTX, PDF
1,680 views
認証サービスへのWebAuthnの導入
WebAuthnの基本的な仕様と利用方法、PHPのWebAuthnライブラリの紹介。WebAuthn導入後に考慮すべき脆弱性対策についての紹介。
Software
◦
Read more
1
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 66
2
/ 66
3
/ 66
4
/ 66
5
/ 66
6
/ 66
7
/ 66
8
/ 66
9
/ 66
10
/ 66
11
/ 66
12
/ 66
13
/ 66
14
/ 66
15
/ 66
16
/ 66
17
/ 66
18
/ 66
19
/ 66
20
/ 66
21
/ 66
22
/ 66
23
/ 66
24
/ 66
25
/ 66
26
/ 66
27
/ 66
28
/ 66
29
/ 66
30
/ 66
31
/ 66
32
/ 66
33
/ 66
34
/ 66
35
/ 66
36
/ 66
37
/ 66
38
/ 66
39
/ 66
40
/ 66
41
/ 66
42
/ 66
43
/ 66
44
/ 66
45
/ 66
46
/ 66
47
/ 66
48
/ 66
49
/ 66
50
/ 66
51
/ 66
52
/ 66
53
/ 66
54
/ 66
55
/ 66
56
/ 66
57
/ 66
58
/ 66
59
/ 66
60
/ 66
61
/ 66
62
/ 66
63
/ 66
64
/ 66
65
/ 66
66
/ 66
More Related Content
PDF
なぜOpenID Connectが必要となったのか、その歴史的背景
by
Tatsuo Kudo
PDF
FIDOのキホン
by
Yahoo!デベロッパーネットワーク
PDF
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
by
Nov Matake
PDF
FIDO認証によるパスワードレスログイン実装入門
by
Yahoo!デベロッパーネットワーク
PDF
今なら間に合う分散型IDとEntra Verified ID
by
Naohiro Fujie
PPTX
Keycloakのステップアップ認証について
by
Hitachi, Ltd. OSS Solution Center.
PDF
Apigee の FAPI & CIBA 対応を実現する「Authlete (オースリート)」
by
Tatsuo Kudo
PDF
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
by
Masaru Kurahayashi
なぜOpenID Connectが必要となったのか、その歴史的背景
by
Tatsuo Kudo
FIDOのキホン
by
Yahoo!デベロッパーネットワーク
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
by
Nov Matake
FIDO認証によるパスワードレスログイン実装入門
by
Yahoo!デベロッパーネットワーク
今なら間に合う分散型IDとEntra Verified ID
by
Naohiro Fujie
Keycloakのステップアップ認証について
by
Hitachi, Ltd. OSS Solution Center.
Apigee の FAPI & CIBA 対応を実現する「Authlete (オースリート)」
by
Tatsuo Kudo
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
by
Masaru Kurahayashi
What's hot
PDF
他社製品と比較した際のAuth0のいいところ
by
Satoshi Takayanagi
PDF
認証の課題とID連携の実装 〜ハンズオン〜
by
Masaru Kurahayashi
PPTX
KeycloakでAPI認可に入門する
by
Hitachi, Ltd. OSS Solution Center.
PDF
パスワード氾濫時代のID管理とは? ~最新のOpenIDが目指すユーザー認証の効率的な強化~
by
Tatsuo Kudo
PDF
OpenID Connect Client Initiated Backchannel Authentication Flow (CIBA)のご紹介 ~ ...
by
OpenID Foundation Japan
PDF
安全なID連携のハウツー
by
Masaru Kurahayashi
PDF
次世代 KYC に関する検討状況 - OpenID BizDay #15
by
OpenID Foundation Japan
PDF
Form認証で学ぶSpring Security入門
by
Ryosuke Uchitate
PDF
Fido認証概要説明
by
FIDO Alliance
PPTX
Idcon25 FIDO2 の概要と YubiKey の実装
by
Haniyama Wataru
PPTX
KeycloakでFAPIに対応した高セキュリティなAPIを公開する
by
Hitachi, Ltd. OSS Solution Center.
PDF
What are Passkeys.pdf
by
Keiko Itakura
PDF
アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -
by
Naoki Nagazumi
PDF
シングルサインオンの歴史とSAMLへの道のり
by
Shinichi Tomita
PDF
MicrosoftのDID/VC実装概要
by
Naohiro Fujie
PDF
OpenID Connect のビジネスチャンス
by
OpenID Foundation Japan
PDF
いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authlete
by
Tatsuo Kudo
PPTX
NGINXをBFF (Backend for Frontend)として利用した話
by
Hitachi, Ltd. OSS Solution Center.
PDF
知っているようで知らないPAMのお話
by
Serverworks Co.,Ltd.
PPTX
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
by
Hitachi, Ltd. OSS Solution Center.
他社製品と比較した際のAuth0のいいところ
by
Satoshi Takayanagi
認証の課題とID連携の実装 〜ハンズオン〜
by
Masaru Kurahayashi
KeycloakでAPI認可に入門する
by
Hitachi, Ltd. OSS Solution Center.
パスワード氾濫時代のID管理とは? ~最新のOpenIDが目指すユーザー認証の効率的な強化~
by
Tatsuo Kudo
OpenID Connect Client Initiated Backchannel Authentication Flow (CIBA)のご紹介 ~ ...
by
OpenID Foundation Japan
安全なID連携のハウツー
by
Masaru Kurahayashi
次世代 KYC に関する検討状況 - OpenID BizDay #15
by
OpenID Foundation Japan
Form認証で学ぶSpring Security入門
by
Ryosuke Uchitate
Fido認証概要説明
by
FIDO Alliance
Idcon25 FIDO2 の概要と YubiKey の実装
by
Haniyama Wataru
KeycloakでFAPIに対応した高セキュリティなAPIを公開する
by
Hitachi, Ltd. OSS Solution Center.
What are Passkeys.pdf
by
Keiko Itakura
アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -
by
Naoki Nagazumi
シングルサインオンの歴史とSAMLへの道のり
by
Shinichi Tomita
MicrosoftのDID/VC実装概要
by
Naohiro Fujie
OpenID Connect のビジネスチャンス
by
OpenID Foundation Japan
いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authlete
by
Tatsuo Kudo
NGINXをBFF (Backend for Frontend)として利用した話
by
Hitachi, Ltd. OSS Solution Center.
知っているようで知らないPAMのお話
by
Serverworks Co.,Ltd.
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
by
Hitachi, Ltd. OSS Solution Center.
Similar to 認証サービスへのWebAuthnの導入
PPTX
20150723 最近の興味動向 fido編
by
Tatsuya (達也) Katsuhara (勝原)
PDF
API提供におけるOAuthの役割 #apijp
by
Tatsuo Kudo
PPTX
YJTC18 D-1 安心安全な次世代認証を目指して 〜社会に溶け込む認証技術〜
by
Yahoo!デベロッパーネットワーク
PDF
Nii open forum_053019_dr.gomi
by
FIDO Alliance
PDF
OpenID Connect, December 2011
by
Tatsuo Kudo
PDF
OAuth Security Workshop 2017 #osw17
by
Tatsuo Kudo
PDF
なんとなくOAuth怖いって思ってるやつちょっと来い
by
Ryo Ito
PDF
FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...
by
Tatsuo Kudo
PDF
FAPI Security について聞いてきた話(2017/08/18 社内勉強会)
by
Yoko TAMADA
PDF
金融向けoへの認証の導入
by
FIDO Alliance
PDF
React(TypeScript) + Go + Auth0 で実現する管理画面
by
KentaEndoh
PDF
これからのネイティブアプリにおけるOpenID Connectの活用
by
Masaru Kurahayashi
PDF
数々の実績:迅速なFIDO認証の展開をサポート
by
FIDO Alliance
PDF
Modern Authentication -- FIDO2 Web Authentication (WebAuthn) を学ぶ --
by
Jun Kurihara
PDF
認証技術、デジタルアイデンティティ技術の最新動向
by
Tatsuo Kudo
PDF
LINEログインの最新アップデートとアプリ連携ウォークスルー
by
Naohiro Fujie
PDF
Authentication and Authorization of The Latest Keycloak
by
Hitachi, Ltd. OSS Solution Center.
PDF
OAuth2.0によるWeb APIの保護
by
Naohiro Fujie
PDF
FAPI and Beyond: From an specification author's point of view #fapisum - Japa...
by
FinTechLabs.io
PDF
#idcon 15th ritou 2factor auth
by
Ryo Ito
20150723 最近の興味動向 fido編
by
Tatsuya (達也) Katsuhara (勝原)
API提供におけるOAuthの役割 #apijp
by
Tatsuo Kudo
YJTC18 D-1 安心安全な次世代認証を目指して 〜社会に溶け込む認証技術〜
by
Yahoo!デベロッパーネットワーク
Nii open forum_053019_dr.gomi
by
FIDO Alliance
OpenID Connect, December 2011
by
Tatsuo Kudo
OAuth Security Workshop 2017 #osw17
by
Tatsuo Kudo
なんとなくOAuth怖いって思ってるやつちょっと来い
by
Ryo Ito
FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...
by
Tatsuo Kudo
FAPI Security について聞いてきた話(2017/08/18 社内勉強会)
by
Yoko TAMADA
金融向けoへの認証の導入
by
FIDO Alliance
React(TypeScript) + Go + Auth0 で実現する管理画面
by
KentaEndoh
これからのネイティブアプリにおけるOpenID Connectの活用
by
Masaru Kurahayashi
数々の実績:迅速なFIDO認証の展開をサポート
by
FIDO Alliance
Modern Authentication -- FIDO2 Web Authentication (WebAuthn) を学ぶ --
by
Jun Kurihara
認証技術、デジタルアイデンティティ技術の最新動向
by
Tatsuo Kudo
LINEログインの最新アップデートとアプリ連携ウォークスルー
by
Naohiro Fujie
Authentication and Authorization of The Latest Keycloak
by
Hitachi, Ltd. OSS Solution Center.
OAuth2.0によるWeb APIの保護
by
Naohiro Fujie
FAPI and Beyond: From an specification author's point of view #fapisum - Japa...
by
FinTechLabs.io
#idcon 15th ritou 2factor auth
by
Ryo Ito
認証サービスへのWebAuthnの導入
1.
1 認証サービスへのWebAuthnの導入 GMOインターネット株式会社 次世代システム研究室
2.
アジェンダ • WebAuthnを導入する背景 • WebAuthnの概要 •
WebAuthnの仕様 • 実装 • WebAuthnでの脆弱性対策 • パスワードレス認証の実現に向けて • まとめ 2
3.
アジェンダ • WebAuthnを導入する背景 • WebAuthnの概要 •
WebAuthnの仕様 • 実装 • WebAuthnでの脆弱性対策 • パスワードレス認証の実現に向けて • まとめ 3
4.
• リスト型攻撃 https://www.ipa.go.jp/files/000041743.png 4
5.
https://www.fastretailing.com/jp/group/news/1905132000.html 5
6.
• フィッシング https://www.ipa.go.jp/files/000015220.gif 6
7.
https://www.antiphishing.jp/report/images/report_monthly202008_1.png 7
8.
アジェンダ • WebAuthnを導入する背景 • WebAuthnの概要 •
WebAuthnの仕様 • 実装 • WebAuthnでの脆弱性対策 • パスワードレス認証の実現に向けて • まとめ 8
9.
• WebAuthnとは Webブラウザで生体認証を実現できる技術 9
10.
• IdPでの導入事例 https://about.yahoo.co.jp/pr/release/2021/02/08a/ 10
11.
https://s.yimg.jp/images/tecblog/2020-H2/ac_webauthn/01_yahoo.png 11
12.
セキュリティ向上 • パスワードを送信しないことによる盗聴対策 • リスト型攻撃やフィッシングへの対策としても機能する https://www.fujitsu.com/jp/solutions/business-technology/security/secure/event/fujitsu-forum/2019/S2-26.pdf 12
13.
13 • 単体の仕組みで2要素認証を実現 • 認証器に保存された認証情報と生体認証の組み合わせ(所有要素と生体要素) •
認証の3要素 • 知識要素 • パスワード、暗証番号等 • 所有要素 • SMS認証、IDカード等 • 生体要素 • 指紋認証、顔認証等
14.
ユーザービリティ向上 • WebAuthnを用いたパスワードレス生体認証のユーザビリティ調査 Yahoo!
JAPAN研究所 https://s.yimg.jp/images/tecblog/2020-H2/ac_webauthn/02_bonneau.png 14 ユーザビリティ
15.
• ざっくりまとめ 15 利点/認証手順 生体認証
パスワード認証 SMS認証 ユーザーの記憶が不要 ○ × ○ ユーザーの動作の少なさ ○ △ × 認証に失敗する頻度 △ △ △ 紛失時の復旧 △ ○ △ 導入しやすさ △(ISP視点) ○(IdP視点) ○ △ セキュリティ ○ × ○
16.
• パスワード認証との比較 https://s.yimg.jp/images/tecblog/2020-H2/ac_webauthn/03_authenticationtime.png https://s.yimg.jp/images/tecblog/2020-H2/ac_webauthn/04_authenticationtime_table.png 16
17.
アジェンダ • WebAuthnを導入する背景 • WebAuthnの概要 •
WebAuthnの仕様 • 実装 • WebAuthnでの脆弱性対策 • パスワードレス認証の実現に向けて • まとめ 17
18.
FIDO2 • FIDO2とは Webブラウザから認証器を扱う仕様(WebAuthn)と認証器との連携プロトコル(CTAP)の総称 https://medium.com/webauthnworks/introduction-to-webauthn-api-5fd1fb46c285 18
19.
• FIDO(Fast IDentity
Online) 生体認証等を利用した新しいオンライン認証技術の標準化団体 • FIDO UAF FIDOに対応するデバイスを利用してパスワードを使わないで認証を行う仕組み • CTAP USB、NFC、BLEを使った認証器との通信プロトコル • CTAP1 FIDOに対応するデバイスで2段階認証するための仕様 • CTAP2 より広い利用シーンに適応できる仕様が追加されたバージョン CTAP1への下位互換性あり 19
20.
• WebAuthnとは W3Cで標準化されている、認証情報を扱うためのJavaScriptのAPI https://medium.com/webauthnworks/introduction-to-webauthn-api-5fd1fb46c285 20
21.
用語 • Public Key
Credential Source 認証器が認証アサーション(本人主張)を生成するために使用する認証情報のソース、秘密鍵を含む • Server-Side Public Key Credential Source サーバー側で認証アサーションを検証するために使用する認証情報のソース、公開鍵を含む • Credential ID Public Key Credential Sourceを識別するID、サーバーとWebブラウザはこのID経由でやり取りする • Relying Party、RP ID ISPやIdPを指すもの、RP IDはホストのドメイン • User Handle ユーザー識別子 • challenge 署名用の文字列、認証器の秘密鍵で暗号化してサーバー側に送られた公開鍵で復号化して突合して認証を通す 21
22.
• 登録フロー https://www.gmo-jisedai.com/wp-content/uploads/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88-2018-10-10-16.22.50.png 1. ユーザー(エージェント)がチャレンジを取得 2.
秘密鍵生成 3. チャレンジを暗号化してサーバーに送信 4. 暗号化されたチャレンジを公開鍵で復号化してチャレンジの値を確認 22
23.
• 認証フロー https://www.gmo-jisedai.com/wp-content/uploads/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88-2018-10-10-16.25.02.png 1. ユーザー(エージェント)がチャレンジと秘密鍵のIDを取得 2.
秘密鍵取得 3. チャレンジを暗号化してサーバーに送信 4. 暗号化されたチャレンジを公開鍵で復号化してチャレンジの値を確認 23
24.
WebAuthn • WebAuthnの全体像 24 Public Key Credential Source type id privateKey rpId userHandle Server-Side Public
Key Credential Source WebAuthn API rpId、userHandle、challenge rpId、userHandle、challenge、publicKey userHandle credentialId publicKey … Credential
25.
• Public Key
Credential Source 25 type: public-key id: AanNf7FX0UTi6GuTdpXBs44AgdC- lHlxUbN4cF2qM2tou7VbVPh0rXhalu8 privateKey: … rpId: stg.gmo.jp userHandle: John Doe Public Key Credential Source id:… id:… id: AanNf7… challenge: plain id: AanNf7… challenge: plain challenge: encrypted challenge: encrypted
26.
• ドメインがスコープされる仕組み アクセスしたドメインとRP IDが異なる場合は参照しない(サブドメインは可能) 26 Public
Key Credential Source stg.gmo.jp type: public-key id: AanNf7FX0UTi6GuTdpXBs44AgdC- lHlxUbN4cF2qM2tou7VbVPh0rXhalu8 privateKey: … rpId: stg.gmo.jp userHandle: John Doe sub.stg.gmo.jp stg.example.com
27.
アジェンダ • WebAuthnを導入する背景 • WebAuthnの概要 •
WebAuthnの仕様 • 実装 • WebAuthnでの脆弱性対策 • パスワードレス認証の実現に向けて • まとめ 27
28.
• 導入対象の認証サービスのシステム概要 • 認証サービスはIdPで、様々なサービスでスマートフォンとPCから利用される •
WebAuthn導入後(スマートフォンのみ)のイメージ 28
29.
• 認証以外のユーザーシナリオ • 認証器の紛失・盗難 •
複数認証器を登録できる • 紛失・盗難時は所持している認証器でログインして認証器設定削除 • 単一ユーザーでの複数認証器の利用 • 複数認証器を登録できる 29
30.
• 用意するもの ローカル環境でも開発可能 ドメイン名はローカル環境のhostsへの記載で問題なし SSL証明書は自己証明書で問題なし WebAuthn対応ブラウザ Yubikey(あると便利) 30
31.
• WebAuthn API •
Public Key Credential Sourceの生成 navigator.credentials.create({'publicKey': options }) • Public Key Credential Sourceの取得 navigator.credentials.get({'publicKey': options }) 31
32.
• navigator.credentials.create • optionsの仕様 32 rp: {
name: RP Server, id: stg.gmo.jp } pubKeyCredParams: { type: public-key, alg: -7 } // ES256 challenge: HGHnlG83gWAVKKOEbPvtONAYjtu80nlqrL4CvPOkpXs attestation: none user: { name: john.doe, id: am9obi5kb2U=, displayName: John Doe } authenticatorSelection: { requireResidentKey: false, userVerification: preferred } excludeCredentials: [] timeout: 60000
33.
• navigator.credentials.createの呼び出し 33 const options
= JSON.parse(‘{"rp":{"name":"RP Server”,id:…}'); navigator.credentials.create({ 'publicKey': options }) .then(function(data) { const publicKeyCredential = { id: data.id, type: data.type, rawId: data.rawId, response: { clientDataJSON: data.response.clientDataJSON, attestationObject: data.response.attestationObject } }; // サーバーへの送信処理 }) .catch(function(error){ // エラー処理 });
34.
• 出力の値 34 id: Ypnys30jfV.. type:
public-key rawId: Ypnys30jfV.. response: { clientDataJSON: eyJjaGFsbG.., attestationObject: o2NmbXRkbm.. }
35.
• 登録済み端末の判別 35 excludeCredentials: [{ type: public-key, id:
Ypnys30jfV..., transports: [internal, usb] }]
36.
• navigator.credentials.get • optionsの仕様 36 challenge:
THRb7S2ZhDdchfBydOGixw1AL2ikXxB2vG0m91eAKdU rpId: stg.gmo.jp userVerification: preferred allowCredentials: [{ type: public-key, id: Ypnys30jf.., transports: [internal, usb] }] timeout: 60000
37.
• navigator.credentials.getの呼び出し 37 const publicKey
= JSON.parse(‘{“challenge”:”THRb7S2Zh..”,”rpId”:..}’); navigator.credentials.get({ 'publicKey': options }) .then(function(data){ const publicKeyCredential = { id: data.id, type: data.type, rawId: data.rawId, response: { authenticatorData: data.response.authenticatorData, clientDataJSON: data.response.clientDataJSON, signature: data.response.signature } }; // サーバーへの送信処理 }) .catch(function(error){ // エラー処理 });
38.
• 出力の値 38 id: Ypnys30jfV.. type:
public-key rawId: Ypnys30jfV.., response: { authenticatorData: dRgAXdaM8.., clientDataJSON: eyJ0eXBlI.., signature: MEQCIGSph.. }
39.
• 生体認証の設定 • createのoptions •
getのoptions 39 authenticatorSelection: { userVerification: required, authenticatorAttachment: platform } allowCredentials: [{ transports: [internal] }]
40.
• FIDO2の補足説明 • FIDO2
≠ スマートフォンでの生体認証の仕様 • パスワードとセキュリティキーを組み合わせた2要素認証(知識認証と所有認証) userVerification = preferredで所有認証が利用可能 https://ftsafe.co.jp/wp/wp-content/themes/ftsafePCSP2016/img/add_03.jpg 40
41.
• JavaScript実装の補足説明 • 型変換とエンコードが必要 41 publicKey.challenge
= Uint8Array.from(window.atob(base64url2base64(publicKey.challenge)), function(c){return c.charCodeAt(0);}); publicKey.user.id = Uint8Array.from(window.atob(publicKey.user.id), function(c){return c.charCodeAt(0);}); clientDataJSON: arrayToBase64String(new Uint8Array(credential.response.clientDataJSON)), attestationObject: arrayToBase64String(new Uint8Array(data.response.attestationObject)), authenticatorData: arrayToBase64String(new Uint8Array(credential.response.authenticatorData)), signature: arrayToBase64String(new Uint8Array(credential.response.signature)) function arrayToBase64String(a) { return btoa(String.fromCharCode(...a)); } function base64url2base64(input) { input = input.replace(/=/g, "").replace(/-/g, '+').replace(/_/g, '/'); const pad = input.length % 4; if (pad) { input += new Array(5-pad).join('='); } return input; }
42.
• PHPライブラリの紹介 • https://github.com/web-auth/webauthn-lib •
認証フローに必要な実装あり • 開発ドキュメントあり • 一通りのAttestation Statement Formatsに対応 42
43.
• 登録時(navigator.credentials.createのレスポンス)の処理 • navigator.credentials.createからのレスポンスの内容の検証 •
Server-Side Public Key Credential Sourceの保存 43 id: Ypnys30jfV.. type: public-key rawId: Ypnys30jfV.. response: { clientDataJSON: eyJjaGFsbG.., attestationObject: o2NmbXRkbm.. } $credential_response = '{"id":"Ypnys30jfV..","type":..}'; $creation_options = loadSessionForPublicKeyCredentialCreation(); // challengeの値含む $credential_source = loadAndCheckAttestationResponse($credential_response, $creation_options); registerPublicKeyCredential($public_key_credential_source); credential_response
44.
• navigator.credentials.createのレスポンスの仕様と検証内容 44 response: {
clientDataJSON: eyJjaGFsbG.., attestationObject: o2NmbXRkbm.. } clientDataJSON: { type: webauthn.create, challenge: VBaL8urJ1R.., origin: https://stg.gmo.jp }, attestationObject: fmt: none attStmt: { } authData: rpIdHash: 7518005dd6.. flags: { UP: true, UV: false, AT: true, ED: false } signCount: 1 attestedCredentialData: aaguid: 00000000-0000-0000-0000-000000000000 credentialId: HZblViw33.. credentialPublicKey: pQECAyYgA.. 変換 // UP = User Presence // UV = User Verification 検証 保存
45.
45 https://www.w3.org/TR/webauthn/images/fido-attestation-structures.svg
46.
• リポジトリの設計 • 認証で利用するデータをカラムとして定義する 46 USER_CREDENTAIL_SOURCE USER_HANDLE
VARCHAR CREDENTIAL_ID VARCHAR CREDENTIAL_PUBLIC_KEY VARCHAR …
47.
• 認証時(navigator.credentials.getのレスポンス)の処理 • navigator.credentials.getからのレスポンスの内容の検証 47 id:
Ypnys30jfV.. type: public-key rawId: Ypnys30jfV.. response: { authenticatorData: dRgAXdaM8.., clientDataJSON: eyJ0eXBlI.., signature: MEQCIGSph.. } $credential_response = '{"id":"Ypnys30jfV..","type":..}'; $request_options = loadSessionForPublicKeyCredentialRequest(); // challengeの値含む $credential_source = loadAndCheckAssertionResponse($credential_response, $request_options, $user_entity); doLogin($public_key_credential_source); credential_response
48.
• navigator.credentials.getのレスポンスの仕様と検証内容 48 response: {
authenticatorData: dRgA.., clientDataJSON: eyJ0.., signature: MEQC.. } authenticatorData: rpIdHash: 7518005dd6.. flags: { UP: true, UV: false, AT: true, ED: false } signCount: 1 attestedCredentialData: aaguid: 00000000-0000-0000-0000-000000000000 credentialId: HZblViw33.. credentialPublicKey: pQECAyYgA.. clientDataJSON: { type: webauthn.get, challenge: qlo1KgQeoi.., origin: https://stg.gmo.jp }, signature: MEQC.. 変換 // AttestationObjectのAuthDataと同じ型 検証 // AttestationObjectのclientDataJSONと同じ型 // 送信されたデータが改変されていないことを検証
49.
• セキュリティ上の注意点 • challengeの生成 •
RP Serverでランダムな値を生成すること • 認証器が近くにあること • USBやBLEを使う 他にも注意点あり 詳細はW3Cの仕様のセクション13と14を参照 49
50.
アジェンダ • WebAuthnを導入する背景 • WebAuthnの概要 •
WebAuthnの仕様 • 実装 • WebAuthnでの脆弱性対策 • パスワードレス認証の実現に向けて • まとめ 50
51.
• 計算量的安全性による暗号化の潜在的な脆弱性 分解に使った計算資源は1700コア・年、PCクラスターなど300台程度で約3年 公開鍵暗号で広く利用されているRSA暗号は計算力で解読可能 https://xtech.nikkei.com/it/article/NEWS/20100108/343056/ 51
52.
• 認証器の脆弱性 • FIDO2対応のセキュリティキーの脆弱性 •
https://gigazine.net/news/20210108-google-titan-side-channel-attack/ 52
53.
• 悪意のある認証器 予めフィッシングサイト用のPublic Key
Credential Sourceを登録 53 Public Key Credential Source stg.gmo.jp rpId: stg.gmo.jp … sub.stg.gmo.jp stg.example.com rpId: stg.example.com … ※実際に可能かは未検証
54.
Attestationを利用した脆弱性対策 • Attestationとは • RP
Serverで使う公開鍵が正当な認証器から生成されたことを保証する仕組み https://storage.googleapis.com/prd-hatena-engineering-asset/20190528114902.png 54
55.
• attestation=noneの仕様 navigator.credentials.createで取得されるattestationObject 55 attestationObject: fmt: none attStmt:
{ } authData: attestedCredentialData: aaguid: 00000000-0000-0000-0000-000000000000 credentialId: HZblViw33.. credentialPublicKey: pQECAyYgA..
56.
• attestation=directの仕様 navigator.credentials.createで取得されるattestationObject 公開鍵の署名検証のデータが取得できる 56 attestationObject: fmt: packed attStmt:
{ alg: -7, sig: 304602210.., x5c:.. } authData: attestedCredentialData: aaguid: 2fc0579f-8113-47ea-b116-bb5a8db9202a credentialId: HZblViw33.. credentialPublicKey: pQECAyYgA..
57.
• Attestation Statement
Formatsの仕様 • 認証器の種類によっていくつかのフォーマットが存在 • Packed Attestation Statement Format • TPM Attestation Statement Format • Android Key Attestation Statement Format • Android SafetyNet Attestation Statement Format • FIDO U2F Attestation Statement Format • None Attestation Statement Format • Apple Anonymous Attestation Statement Format 57
58.
• FIDO Metadata
Service • 認証器に関する脆弱性情報を提供するサービス • 認証器の認証ステータスや脆弱性情報(toc.jwt)が取得できる https://mds2.fidoalliance.org/tokens/ 58
59.
• toc.jwtの内容 59 { "url": "https://mds2.fidoalliance.org/metadata/2fc0579f-8113-47ea-b116-bb5a8db9202a", "timeOfLastStatusChange":
"2020-05-12", "aaguid": "2fc0579f-8113-47ea-b116-bb5a8db9202a", "hash": "KPTWOX2ipTh03mE_GmtXLd-GZ691Riu8fAQCL2QPE9Q", "statusReports": [ { "status": "FIDO_CERTIFIED_L1", "certificateNumber": "FIDO20020190826002", "certificate": "", "certificationDescriptor": "YubiKey 5 NFC Series", "url": "", "certificationRequirementsVersion": "1.3", "certificationPolicyVersion": "1.1.1", "effectiveDate": "2020-05-12" } ] },
60.
アジェンダ • WebAuthnを導入する背景 • WebAuthnの概要 •
WebAuthnの仕様 • 実装 • WebAuthnでの脆弱性対策 • パスワードレス認証の実現に向けて • まとめ 60
61.
• 認証器の紛失や盗難 • 認証器の紛失や盗難によりログインが出来なくなる可能性 •
他の認証器でログインする • 事前に他の認証器の登録が必要 • 手元にない認証器の登録は削除する • ユーザーサポート経由で本人確認の上アカウントを復帰 • 事前に本人確認用の情報の登録が必要 • 手続き中はアカウント停止 61
62.
• ブラウザキャッシュの削除 • ブラウザキャッシュの削除でログインが出来なくなる可能性 •
SMS認証やOTP等と連携して別のログイン手段を提供する • 生体認証が利用出来ない端末での利用 • 古いスマートフォンやPC等でログインする可能性 • SMS認証やOTP等と連携して別のログイン手段を提供する • 2要素認証を実現するにはパスワード認証相当のものが必要 62
63.
• パスワードレスを実現するには • ユーザー視点でのパスワードレスの実現 •
複数認証器への対応 • SMS認証やOTP等と連携した別のログイン手段の提供 • パスワード認証のオプション化 • サービス提供者視点でのパスワードレスの実現 • 生体認証対応の認証器の更なる普及が必要 63
64.
アジェンダ • WebAuthnの概要 • WebAuthnの仕様 •
実装 • WebAuthnでの脆弱性対策 • パスワードレス認証の実現に向けて • まとめ 64
65.
まとめ • FIDO2 https://fidoalliance.org/fido2-graphic-v2-2/?lang=ja • WebAuthn
API • navigator.credentials.create({'publicKey': options }) • navigator.credentials.get({'publicKey': options }) 65
66.
• WebAuthnを導入することによるメリット • 認証のセキュリティとユーザビリティの向上 •
認証をユーザー責任の世界からセキュリティコントロールの世界へ • IdPでWebAuthnを導入して付加価値向上 • WebAuthn導入の注意点 • 様々な利用シーンに対応するためにSMS認証やOTP等との連携 • WebAuthnとしてのセキュリティ対策 • WebAuthnの脆弱性も視野に入れた開発運用 66
Download