This document provides an overview of diabetes mellitus (DM), including the three main types (Type 1, Type 2, and gestational diabetes), signs and symptoms, complications, pathophysiology, oral manifestations, dental management considerations, emergency management, diagnosis, and treatment. DM is caused by either the pancreas not producing enough insulin or cells not responding properly to insulin, resulting in high blood sugar levels. The document compares and contrasts the characteristics of Type 1 and Type 2 DM.
Power Point Presentation on Artificial IntelligenceAnushka Ghosh
Its a Power Point Presentation on Artificial Intelligence.I hope you will find this helpful. Thank you.You can also find out my another PPT on Artificial Intelligence.The link is given below--https://www.slideshare.net/AnushkaGhosh5/ppt-presentation-on-artificial-intelligenceAnushka Ghosh
The document summarizes key aspects of the Safe Spaces Act, which aims to address gender-based sexual harassment. It defines harassment in public spaces, online, and work/educational settings. Acts considered harassment include catcalling, unwanted comments on appearance, stalking, and distributing intimate photos without consent. Those found guilty face penalties like imprisonment or fines. The law also requires employers and educational institutions to disseminate the law, prevent harassment, and address complaints through committees.
The FIDO Alliance invites you to learn how simplify strong authentication for web services. FIDO specifications can help all organizations, especially service providers who want to scale these features for consumer services over the web. Essentially, FIDO offers a simple, low-cost way to improve security and the online experience.From FIDO Alliance Seminar in Tokyo, Japan, November, 2015.
Modern Authentication -- FIDO2 Web Authentication (WebAuthn) を学ぶ --Jun Kurihara
最新の認証を学ぶための、FIDO2 WebAuthnの講義資料。サンプルコードを動作させるにはSecurity Key by Yubicoなどのハードウェアキーが必要です。スライドおよびサンプルのソースコードはGithubにあります。https://github.com/junkurihara/class-fido2_webauthn
2022/3/24に開催した「オンプレML基盤 on Kubernetes」の資料です。機械学習モデルの開発者が、よりモデルの開発にのみ集中できるようにすることを目指して開発している「LakeTahoe(レイクタホ)」について紹介します。https://ml-kubernetes.connpass.com/event/239859/
2021年の「グッドデザイン賞」ではヤフーから4案件が受賞しました。本セッションでは「PayPayモールの実店舗在庫連携」について、案件の立ち上げから、リリースを通して改善・工夫した事、グッドデザイン賞の受賞経緯など、デザイナー目線でお話しします。Yahoo! JAPAN Tech Conference 2022は2022年2月3日、4日に開催しました。https://techconference.yahoo.co.jp/2022/アーカイブ動画はこちらからご覧ください。https://youtu.be/MFnZd1j4SUk
ムード(気分)は人間の行動に大きく影響します。インターネットサービスにおいて、もし人々のムードを考慮し寄り添えたなら、より魅力的なサービスが提供できるのではないでしょうか。本セッションではヤフーが持つビッグデータを用いて「ムードを推定する」取り組みについてご紹介します。Yahoo! JAPAN Tech Conference 2022は2022年2月3日、4日に開催しました。https://techconference.yahoo.co.jp/2022/アーカイブ動画はこちらからご覧ください。https://youtu.be/WyZOmUN52-s
ヤフーでは、さまざまな形で機械学習を活用してきました。その経験をもとに、AIプラットフォームと連携し、MLOpsの導入・推進を進めています。本セッションでは、サイエンス部門におけるMLOpsを推進するためにこれまで行ってきた取り組みについて紹介します。Yahoo! JAPAN Tech Conference 2022は2022年2月3日、4日に開催しました。https://techconference.yahoo.co.jp/2022/アーカイブ動画はこちらからご覧ください。https://youtu.be/tf9C0sLOZ14
ヤフーは昨年「ワクチン接種キャンセル枠お知らせサービス」を公開しました。多くの関係者が存在するプロジェクトでありながら、リモートワーク環境下での協業、高いスピード感が必要となるプロジェクトでした。本セッションではこのプロジェクトの成功につながった「モブデザイン」という取り組みについて、その効果やうまく運用するためのポイントを紹介します。実際にモブデザインを行っている様子もご覧いただけるので、特に多職種チームでスピード感のある意思決定をしていくことに課題感をお持ちの方へのヒントになればと思います。Yahoo! JAPAN Tech Conference 2022は2022年2月3日、4日に開催しました。https://techconference.yahoo.co.jp/2022/アーカイブ動画はこちらからご覧ください。https://youtu.be/lmsY2uCP6lY
1.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.FIDO認証によるパスワードレスログイン実装入門HTML5 Conference 2018ヤフー株式会社2018/11/25合路 健人@kg0r0
2.アジェンダCopyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 21. 自己紹介2. パスワード認証の課題3. FIDOとは4. FIDOの技術仕様5. デモ6. Web Authenticationフロー7. まとめ
3.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.社内における認証をよりセキュアで使いやすくする取り組み興味のある方は是非一緒にどうですか??新卒入社2年目システム統括本部プラットフォーム開発本部アイデンティティー&アクセスマネジメント部自己紹介合路 健人
4.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 4パスワード認証の課題
5.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 5パスワード認証の課題(利便性)こんなことはありませんか 認証機会の増加 サービスごとに異なるパスワードを登録 複雑なパスワードの入力操作が不便
6.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 6パスワード認証の課題(安全性)Client Serverusername + passwordDBDB LeakPhishingPassword List AttackDictionary Attack
7.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 7FIDOとは
8.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 8FIDO(Fast IDentity Online)パスワードへの依存度を減らし、利便性と安全性を向上するPoor EasyWeakStrongUSABILITYSECURITYUSABILITYSECURITYhttps://www.slideshare.net/FIDOAlliance/fido-83445442https://www.slideshare.net/FIDOAlliance/introduction-to-fido-alliance-66730790
9.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 9FIDO認証モデルAuthenticatorUser verification FIDO Authenticationchallengegesture signatureprivatekeypublickey 公開鍵暗号方式による認証 オンラインサービスへの登録時に鍵ペアを生成して登録clientRP
10.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 10用語説明 RP(Relying Party)• ユーザーの登録、認証を⾏うウェブサイト、または、事業者 認証器(Authenticator)• キーペアの管理を行う• 外部認証器と内部認証器がある
11.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 11利便性 認証行為が容易 複数のパスワードを覚える負担を軽減
12.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 12認証行為が容易 生体認証の導入• 指紋・虹彩・顔・声紋など 認証器を指定・選択できるポリシー• 認証器の多様性• 認証器の選択
13.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 13複数のパスワードを覚える負担を軽減 パスワード(記憶)• 本人のみが記憶している情報 認証器(所持)• 本人のみが所持している物• 認証器が利用者本人を検証する機能を持つ
14.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 14安全性 クレデンシャル情報の通信経路 クレデンシャル情報の安全性 認証器の信頼性
15.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 15クレデンシャル情報の通信経路パスワード認証リモート認証(ユーザー名, パスワード)ローカル認証(指紋など)リモート認証(署名)FIDO認証モデルUser ClientUser Authenticator clientRelying partyRelying party
16.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 16クレデンシャル情報の安全性FIDO AuthenticationKpub1Kpub2RPごとに鍵ペアを生成して登録rpid1(origin)rpid2(origin)Relying party1Relying party2Client リスト型攻撃に対する耐性 フィッシングに対する耐性AuthenticatorKpriv1 Kpriv2User Presence
17.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 17クレデンシャル情報の安全性(リスト型攻撃対策)AuthenticatorFIDO Authentication Kpub1Kpriv1RPごとに異なる公開鍵を登録Kpriv2rpid1(origin)rpid2(origin)Relying party1Relying party2ClientKpub2User Presence
18.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 18クレデンシャル情報の安全性(フィッシング対策)FIDO AuthenticationKpriv1RPごとに異なる秘密鍵を保管Kpriv2ClientUser PresenceKpub1Relying party1Relying party2 Kpub2AuthenticatorRelying party3
19.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 19認証器の信頼性Attestation & MetadataAuthenticatorRegistrationAttestation privKey MetadataAuthentication KeysSigned Attestation ObjectRelying partyAttestation pubKeyAttestation Certificate
20.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 20FIDOの技術仕様
21.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 21FIDOの3つの技術仕様 FIDO UAF(Universal Authentication Framework) FIDO U2F(Universal 2nd Factor) FIDO2
22.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 22FIDO UAF パスワードレス型(所持+生体など) 主にスマートフォン端末での利用を想定 生体認証などの認証手段によりパスワードレスを実現https://www.slideshare.net/FIDOAlliance/fido-83445442
23.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 23FIDO U2F パスワード補完型(記憶+所持) 主にPC上でWebブラウザの利用を想定した二要素認証 着脱方式と無線方式に対応https://www.slideshare.net/FIDOAlliance/fido-83445442
24.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 24UAFとU2F ユースケースが異なる• UAF(FIDOクライアント=アプリ)• U2F(ブラウザから利用できるが二要素認証) ブラウザからパスワードレス認証を!!https://www.slideshare.net/FIDOAlliance/fido-83445442
25.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 25FIDO2FIDO認証対応プラットフォームの拡大Web Authentication APIブラウザからクレデンシャルにアクセスするAPICTAPクライアントと外部認証器間の通信をサポートするプロトコルhttps://www.slideshare.net/FIDOAlliance/fido-psd2-solving-the-strong-customer-authentication-challenge-in-europe
26.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 26Web Authentication APIブラウザからクレデンシャルにアクセスするAPI ブラウザの標準インターフェース Credential Management API の拡張 登録 : navigator.credentials.create() 認証 : navigator.credentials.get()
27.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 27CTAPクライアントと外部認証器間の通信をサポートするプロトコル 物理的に異なるクライアントと外部認証器が連携 USB・BLE・NFC などをサポートUSB, BLE, NFC,Authenticator client
28.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 28様々な認証器に対応https://www.slideshare.net/FIDOAlliance/fido-83445442
29.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 29デモ
30.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 30Web Authentication(登録)
31.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 31登録フロー(概略)Authenticator Client Relying partyユーザー名チャレンジなどAttestation response鍵ペアの生成Attestation responseチャレンジ・RPの情報・ユーザーの情報(署名・証明書・公開鍵など)(署名・証明書・公開鍵など)検証公開鍵の保存
32.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 32実装範囲Authenticator Client Relying partyWeb Authentication API 実装が必要な箇所ユーザー名チャレンジなどAttestation response 検証公開鍵の保存鍵ペアの生成Attestation responseチャレンジ・RPの情報・ユーザーの情報(署名・証明書・公開鍵など)(署名・証明書・公開鍵など)
33.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 33登録フロー(概略)Authenticator Client Relying partyユーザー名チャレンジなどAttestation response 検証公開鍵の保存鍵ペアの生成Attestation responseチャレンジ・RPの情報・ユーザーの情報(署名・証明書・公開鍵など)(署名・証明書・公開鍵など)
34.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 34ユーザー名の入力 フォームからユーザー名を取得 ユーザー名を送信してチャレンジなどの情報を要求
35.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 35ユーザー名の送信fetch('/webauthn/register', {method: 'POST',credentials: 'include',headers: {'Content-Type': 'application/json'},body: JSON.stringify({username: this.username.value,name: this.name.value})}) サンプル フォームからユーザー名を取得 ユーザー名を送信してチャレンジなどの情報を要求
36.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 36challengeの送信{// random numberchallenge: randomBase64URLBuffer(32),rp: {name: "FIDO Examples Corporation”},user: {id: id,name: username,displayName: displayName},pubKeyCredParams: [{type: "public-key",alg: -7 // "ES256" IANA COSE Algorithms registry}]} サンプル
37.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.Web Authentication API37登録フロー(概略)Authenticator Client Relying partyユーザー名チャレンジなどAttestation response 検証公開鍵の保存鍵ペアの生成Attestation responseチャレンジ・RPの情報・ユーザーの情報(署名・証明書・公開鍵など)(署名・証明書・公開鍵など)
38.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 38navigator.credentials.create()navigator.credentials.create({publicKey: {rp: {id: "example.com”,name: "Acme"},user: {id: new Uint8Array(16),name: "john.p.smith@example.com",displayName: "John P. Smith "},pubKeyCredParams: [{type: "public-key",alg: -7}],attestation: "direct",timeout: 60000,// must be a cryptographically random number sent from a serverchallenge: new Uint8Array([0x8C, 0x0A, 0x26, 0xFF, 0x22, 0x91, 0xC1, 0xE9, ... ]).buffer}})サンプル
39.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 39Parameter rp [Object] (必須)• Relying partyに関する情報 user [Object](必須)• Credentialが紐づくユーザー情報 challenge[ArrayBuffer] (必須)• サーバーで生成した乱数 pubKeyCredParams[Object] (必須)• Credentialのタイプとアルゴリズムの指定(typeはpublic-key固定) timeout [Int]• ユーザーの入力待機時間 attestation [String]• Authenticatorの出どころを検証するかどうか authenticatorSelection [Object]• 認証器への要求事項
40.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 40navigator.credentials.create()
41.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 41登録フロー(概略)Authenticator Client Relying partyユーザー名チャレンジなどAttestation response 検証公開鍵の保存鍵ペアの生成Attestation responseチャレンジ・RPの情報・ユーザーの情報(署名・証明書・公開鍵など)(署名・証明書・公開鍵など)
42.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 42AuthenticatorAttestationResponse{// credential identifier on the device"rawId": "imCIoe8U_N9M1rTGeCqJ96TAu5uqSPa7YUzd ... ","id": ” imCIoe8U_N9M1rTGeCqJ96TAu5uqSPa7YUzdh7qq ... ",// attestation data"response": {"clientDataJSON": ”eyJjaGFsbGVuZ2UiOiJJSFdtWjFPa1MydDZLaH ... ”,"attestationObject": ”o2NmbXRoZmlkby11MmZnYXR0U3RtdKJjc2 ... "},// extensions results struct"getClientExtensionResults": {},// type of credential"type": "public-key”}サンプル
43.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 43clientDataJSON{// random number"challenge": "IHWmZ1OkS2t6KhvX-koNxutkYuMVEunCjYNSXXgAxvU",// origin of the website"origin": "http://localhost:3000",// type of the call."type": "webauthn.create”}サンプル
44.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 44attestationObject CBOR(Concise Binary Object Representation)• JSONフォーマットをバイナリで表現• JSONよりもサイズが小さいconst cbor = require('cbor');. . .let attestationBuffer =base64url.toBuffer(webAuthnResponse.response.attestationObject);let ctapMakeCredResp = cbor.decodeAllSync(attestationBuffer)[0];公開鍵などを含むCBORでエンコードされたデータサンプル
45.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 45attestationObject{// attestation format"fmt": ”packed",// raw buffer struct containing user info"authData": "9569088f1ecee3232954035dbd10d7cae3 ... ",// attestation statement data"attStmt": {// signature"sig": "3046022100db3162cfa7b5dbd78c46864e5f9 ... ",// X.509 Certificate Chain"x5c": ["3082013c3081e4a003020102020a395187893878526 ... ”]}}サンプル公開鍵などを含むCBORでエンコードされたデータ
46.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 46authDatahttps://medium.com/@herrjemand/verifying-fido2-responses-4691288c8770ユーザーの情報を含むバイナリデータ
48.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 48authDataのパース結果{// hash of the rpIdrpIdHash: <Buffer 49 96 0d e5 88 0e 8c 68 74 34 17 0f 64 76 60 5b 8f ... >,// state of the authenticator during the authenticationflags: 65,flagsBuf: <Buffer 41>,// 4byte countercounter: 53,counterBuf: <Buffer 00 00 00 35>,// authenticator attestation identifier aaguid: <Buffer f8 a0 11 f3 8c 0a 4d 15 80 06 17 11 1f 9e dc 7d>,// credential IdentifiercredID: <Buffer de 13 93 92 33 87 5a 0e 89 1b de 60 dc 43 1f 89 8c ... >,credIDLenBuf: <Buffer 00 40>,credIDLen: 64,// COSE encoded public keyCOSEPublicKey: <Buffer a5 01 02 03 26 20 01 21 58 20 36 25 71 4a ... >} サンプル
49.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 49登録フロー(概略)Authenticator Client Relying partyユーザー名チャレンジなどAttestation response 検証公開鍵の保存鍵ペアの生成Attestation responseチャレンジ・RPの情報・ユーザーの情報(署名・証明書・公開鍵など)(署名・証明書・公開鍵など)
50.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 50Verify Attestation challenge、origin、typeの検証 flagsの検証 signatureの検証
51.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 51challengeの検証router.post('/response', (request, response) => {let webauthnResp = request.bodylet clientData =JSON.parse(base64url.decode(webauthnResp.response.clientDataJSON));if(clientData.challenge !== request.session.challenge) {response.json({'status': 'failed','message': 'Challenges don¥'t match!’})}. . .})サンプルclientDataJSON内のchallengeを検証
52.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 52originの検証router.post('/response', (request, response) => {let webauthnResp = request.bodylet clientData =JSON.parse(base64url.decode(webauthnResp.response.clientDataJSON));. . .if(clientData.origin !== config.origin) {response.json({'status': 'failed','message': 'Origins don¥'t match!’})}})サンプルclientDataJSON内のoriginを検証
53.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 53typeの検証. . .let webauthnResp = request.bodylet clientData =JSON.parse(base64url.decode(webauthnResp.response.clientDataJSON));if(clientData.type !== 'webauthn.create') {. . .}})サンプルclientDataJSON内のtypeがwebauthn.createであるか確認
54.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 54Verify Attestation challenge、origin、typeの検証 flagsの検証 signatureの検証
55.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 55flagsの検証AuthenticatorでのUP、UVの結果 UP : User Presence• ユーザーの存在確認(必須) UV : User Verification• ユーザーの認証(任意)https://slides.com/fidoalliance/jan-2018-fido-seminar-webauthn-tutorial#/
56.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 56flagsの検証let authrDataStruct = parseMakeCredAuthData(ctapMakeCredResp.authData);if(!(authrDataStruct.flags & 0x01))throw new Error('User was NOT presented durring authentication!');サンプルAuthenticatorでのUP、UVの結果 UP : User Presence• ユーザーの存在確認(必須) UV : User Verification• ユーザーの認証(任意)
57.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 57Verify Attestation challenge、origin、typeの検証 flagsの検証 signatureの検証
58.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 58signatureの検証 Attestation Certificateの取得 authDataのパラメーターとclientDataJSONのハッシュ値を連結 attStmtからsignatureを取得 signatureを検証
65.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 65publicKeyの保存 COSE(CBOR Object Signing and Encryption)• 暗号鍵を表現するためのJSONをCBORエンコードしたフォーマット• COSEから取得したxとyを連結し、先頭に0x04を加えるとPublicKeyになる// result of COSE parse{1: kty=2,3: alg=-7,-1: crv=1,-2: x,-3: y,} サンプル
66.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 66publicKeyの保存 COSE(CBOR Object Signing and Encryption)• 暗号鍵を表現するためのJSONをCBORエンコードしたフォーマット• COSEから取得したxとyを連結し、先頭に0x04を加えるとPublicKeyになるconst cbor = require('cbor');. . .let COSEECDHAtoPKCS = (COSEPublicKey) => {let coseStruct = cbor.decodeAllSync(COSEPublicKey)[0];let tag = Buffer.from([0x04]);let x = coseStruct.get(-2);let y = coseStruct.get(-3);return Buffer.concat([tag, x, y])}サンプル
67.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 67Web Authentication(認証)
68.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 68認証フロー(概略)Authenticator Client Relying partyユーザー名チャレンジやユーザーの情報などAssertion response検証署名の生成Assertion responseチャレンジ・RPの情報・ユーザーの情報(署名など)(署名など)
69.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 69実装範囲Authenticator Client Relying partyWeb Authentication API 実装が必要な箇所ユーザー名チャレンジやユーザーの情報などAssertion response検証署名の生成Assertion responseチャレンジ・RPの情報・ユーザーの情報(署名など)(署名など)
70.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 70認証フロー(概略)Authenticator Client Relying partyユーザー名チャレンジやユーザーの情報などAssertion response検証署名の生成Assertion responseチャレンジ・RPの情報・ユーザーの情報(署名など)(署名など)
71.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 71ユーザー名の入力
72.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 72ユーザー名の送信fetch('/webauthn/login', {method: 'POST',credentials: 'include',headers: {'Content-Type': 'application/json'},body: JSON.stringify({username: this.username.value})})サンプル
73.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 73challengeの送信let generateServerGetAssertion = (authenticators) => {let allowCredentials = [];for(let authr of authenticators) {allowCredentials.push({type: 'public-key',id: authr.credID,transports: ['usb', 'nfc', 'ble']})}return {// random numberchallenge: randomBase64URLBuffer(32),allowCredentials: allowCredentials}}サンプル
74.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.Web Authentication API74実装範囲Authenticator Client Relying partyユーザー名チャレンジやユーザーの情報などAssertion response検証署名の生成Assertion responseチャレンジ・RPの情報・ユーザーの情報(署名など)(署名など)
75.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 75navigator.credentials.get()navigator.credentials.get({publicKey: {timeout: 60000,challenge: new Uint8Array([0x79, 0x50, 0x68, 0x71, 0xDA, 0xEE, 0xEE, 0xB9, 0x94, 0xC3, 0xC2, ...]).buffer,allowCredentials: [{id: cred.rawId,transports: ["usb", "nfc", "ble"],type: "public-key"}]},})サンプル
76.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 76Parameter challenge [ArrayBuffer] (必須)• サーバーで生成した乱数 timeout [Int]• ユーザーの入力待機時間 allowCredentials [Array]• ユーザーに紐づくCredentialのidリスト rpId [String]• rpIdの指定(登録時と同じ値を指定) userVerification [String]• ユーザーに紐づくCredentialのリスト
77.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 77navigator.credentials.get()
78.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 78実装範囲Authenticator Client Relying partyユーザー名チャレンジやユーザーの情報などAssertion response検証署名の生成Assertion responseチャレンジ・RPの情報・ユーザーの情報(署名など)(署名など)
79.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 79AuthenticatorAssertionResponse{// credential identifier on the device"rawId": "imCIoe8U_N9M1rTGeCqJ96TAu5uqSPa7YUzd ... " ,"id": "imCIoe8U_N9M1rTGeCqJ96TAu5uqSPa7YUzdh7qq ... ",// assertion data"response": {"authenticatorData": "SZYN5YgOjGh0NBcPZHZgW4_krrmihjLHmVzzuoMdl2MBAAAALQ","signature": "MEUCIQCFOqnsAFZLQmcPt2qSjnCb403SisGEASSjT3fOPuD5JgIgF ...","userHandle": "","clientDataJSON": "eyJjaGFsbGVuZ2UiOiJDUXF5aUlrQ00yWEtvaHVSdlNqTEFoN ...”},// extensions results struct"getClientExtensionResults": {},// type of credential"type": "public-key”}サンプル
80.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 80authenticatorDatahttps://slides.com/fidoalliance/jan-2018-fido-seminar-webauthn-tutorial#/ユーザーの情報を含むバイナリデータ
82.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 82authenticatorDataのパース結果{// hash of the rpIdrpIdHash: <Buffer 49 96 0d e5 88 0e 8c 68 74 34 17 0f 64 76 60 5b 8f e4 ae b9a2 86 32 c7 99 5c f3 ba 83 1d 97 63>,// state of the authenticator during the authenticationflags: 1,flagsBuf: <Buffer 01>,// 4byte countercounter: 68,counterBuf: <Buffer 00 00 00 44>}サンプル
83.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 83認証フロー(概略)Authenticator Client Relying partyユーザー名チャレンジやユーザーの情報などAssertion response検証署名の生成Assertion responseチャレンジ・RPの情報・ユーザーの情報(署名など)(署名など)
84.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 84Verify Assertion challenge、origin、typeの検証 flagsの検証 signatureの検証 counterの検証と更新
85.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 85challengeの検証router.post('/response', (request, response) => {let webauthnResp = request.bodylet clientData =JSON.parse(base64url.decode(webauthnResp.response.clientDataJSON));if(clientData.challenge !== request.session.challenge) {response.json({'status': 'failed','message': 'Challenges don¥'t match!’})}. . .})サンプルclientDataJSONとセッションなどに保存していたchallengeを比較
86.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 86originの検証router.post('/response', (request, response) => {let webauthnResp = request.bodylet clientData =JSON.parse(base64url.decode(webauthnResp.response.clientDataJSON));. . .if(clientData.origin !== config.origin) {response.json({'status': 'failed','message': 'Origins don¥'t match!’})}})サンプルclientDataJSONとサーバーのコンフィグなどから取得したoriginを比較
87.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 87typeの検証. . .let webauthnResp = request.bodylet clientData =JSON.parse(base64url.decode(webauthnResp.response.clientDataJSON));if(clientData.type !== 'webauthn.get') {. . .}})サンプルclientDataJSONのtypeがwebauthn.getであるか確認
88.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 88Verify Assertion challenge、origin、typeの検証 flagsの検証 signatureの検証 counterの検証と更新
89.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 89flagsの検証let authrDataStruct = parseMakeCredAuthData(ctapMakeCredResp.authData);if(!(authrDataStruct.flags & 0x01))throw new Error('User was NOT presented durring authentication!');サンプルAuthenticatorでのUP、UVの結果を検証
90.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 90Verify Assertion challenge、origin、typeの検証 flagsの検証 signatureの検証 counterの検証と更新
91.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 91signatureの検証 Authenticatorの検索 PublicKeyの取得 authenticatorDataのパラメータとclientDataJSONのハッシュ値を連結 AuthenticatorAssertionResponseからsignatureを取得 signatureを検証
92.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 92Authenticatorの検索let findAuthr = (credID, authenticators) => {for(let authr of authenticators) {if(authr.credID === credID)return authr}throw new Error(`Unknown authenticator with credID ${credID}!`)}サンプルCredentialIdを元にAuthenticatorを検索する
93.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 93publicKeyの取得 登録時に保存したpublicKeyを取りだす PEM形式に変換する• 26バイトのメタデータ(固定)を付与する• Base64エンコード• 64文字ごとに改行コードをいれる• ヘッダとフッタを入れる
96.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 96Verify Assertion challenge、origin、typeの検証 flagsの検証 signatureの検証 counterの検証と更新
97.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 97counterの検証と更新let verifyAuthenticatorAssertionResponse = (webAuthnResponse, authenticators) =>{. . .if(response.verified) {if(response.counter <= authr.counter)throw new Error('Authr counter did not increase!');authr.counter = authrDataStruct.counter}}. . .} サンプルauthenticatorDataのcounterを検証
98.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 98Verify Assertion challenge、origin、typeの検証 flagsの検証 signatureの検証 counterの検証と更新
99.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 99認証成功!!
100.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 100まとめ
101.まとめCopyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 101 パスワード認証は利便性と安全性に問題 FIDO認証は公開鍵暗号を応用しパスワード認証の課題を解消 FIDO2プロジェクトにより認証対応プラットフォームの拡大
102.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 102RPのサンプル実装様々な言語で実装されている Node.js : https://github.com/fido-alliance/webauthn-demo Python : https://github.com/duo-labs/py_webauthn Ruby : https://github.com/cedarcode/webauthn-ruby Go : https://github.com/duo-labs/webauthn Java : https://github.com/Yubico/java-webauthn-serverこの他にもいっぱい!!https://github.com/apowers313/fido2-server-demo/
103.Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 103参考• FIDO認証の概要説明https://www.slideshare.net/FIDOAlliance/fido-83445442?ref=https://fidoalliance.org/presentations/• Webauthn-isighttp://slides.com/herrjemand/webauthn-isig• INTRODUCTION TO FIDO ALLIANCEhttps://www.slideshare.net/FIDOAlliance/introduction-to-fido-alliance-66730790• MDN web docs WebAuthentication APIhttps://developer.mozilla.org/en-US/docs/Web/API/Web_Authentication_API• Welcome to WebAuthn workshophttps://slides.com/fidoalliance/jan-2018-fido-seminar-webauthn-tutorial#/• Verifying WebAuthn/FIDO2 responseshttps://medium.com/@herrjemand/verifying-fido2-responses-4691288c8770• Verifying FIDO-U2F Attestationhttps://medium.com/@herrjemand/verifying-fido-u2f-attestations-in-fido2-f83fab80c355• WebAuthn from the relying-party viewhttps://speakerdeck.com/ynojima/webauthn-from-the-relying-party-view