Slide 1

Slide 1 text

【日経×ヌーラボ×Google】 エンジニアが直面するパスキー普及の課題:試行錯誤と技術的アプローチ Authenticator のエミュレーションによる パスキーのログインテスト 2024/09/26 日本経済新聞社 淵脇 誠

Slide 2

Slide 2 text

Agenda 2 1. 登壇者及び日経IDの紹介 2. パスキーのログインテストにおける課題 3. WebAuthn Emulator 4. 今後の展開

Slide 3

Slide 3 text

3 登壇者及び日経IDの紹介 01 1. 登壇者及び日経IDの紹介 2. パスキーのログインテストにおける課題 3. WebAuthn Emulator 4. 今後の展開

Slide 4

Slide 4 text

登壇者について紹介 4 淵脇 誠 (Makoto Fuchiwaki) 日本経済新聞社 日経IDチームのソフトウェアエンジニア 趣味:AtCoder 2000+, Codeforces 2100+, CTF Crypto, 音ゲー 日経ID チーム 日経ID認証認可基盤の新基盤 Melissa の開発チーム 総勢10名のスクラムチームでフルスタックな開発を推進中 🐝 Melissa (ギリシャ語でミツバチ)

Slide 5

Slide 5 text

日本経済新聞社における日経IDの位置付け 5 日本経済新聞社の事業ドメイン これらのドメインを横断的に支える基盤が「日経ID」 News &Insights Brand Communication Decision-making Experience 気づく、つながる 価値を伝え、社会と交わる 調べる、決める 高める、成長する 読者 顧客企業 意思決定者 一人ひとり 電子版をはじめとした報道機関 としての日経と読者をつなぐ 広告やイベントを通じて企業の価値 を伝える統合型ソリューション 企業の財務情報・非財務情報を網 羅し経営課題を解決 個人のキャリア形成と企業の人的 資本の構築に貢献 ビジネスパーソンのためのオーディエンス・プラットフォーム Point

Slide 6

Slide 6 text

日経ID におけるパスキー 6 ✔ 社会的に影響力のある会員が多く、インシデントは重大な問題になる ✔ 日経ID のユーザーは役職者が多く、ログインにも高いUXが求められる ✔ モバイルユーザーが多くパスキー導入の下地ができている 日経IDのユースケースによく合致しており導入の期待値が高い Point

Slide 7

Slide 7 text

7 パスキーのログインテストにおける課題 02 1. 登壇者及び日経IDの紹介 2. パスキーのログインテストにおける課題 3. WebAuthn Emulator 4. 今後の展開

Slide 8

Slide 8 text

パスキーの特徴 8 デバイスベースの セキュリティ Web セキュリティを ブラウザ・デバイス レベルで担保 パスワードレス 標準仕様 生体認証や所持認証に よる UX の高い認証 複雑なユースケースも 想定された汎用性の 高い規格

Slide 9

Slide 9 text

パスキーの問題点 9 デバイスベースの セキュリティ デバイスレベルでの 非人間によるログイン のブロック パスワードレス 標準仕様 エンドユーザー体験にフォーカスされた分、開発者体験が悪化 Point テストのための仮パス ワードが使えない 高度な暗号・乱数・ハッ シュや複雑なステート 開発時のテストアカウントによるログインが困難

Slide 10

Slide 10 text

代表的な解決策 10 ● Chrome Web Driver により Chrome Virtual Authenticator を使用する ● 手動でブラウザを用いて実機テストする 自動テストが可能だが、E2Eのみでブラウザ依存も大きい Point 確実だがテストのコストが大きい Point ● モック・スタブを利用する 単体テストも含めて自動化が可能だが、テストの品質確保が難しい Point

Slide 11

Slide 11 text

11 WebAuthn Emulator 03 1. 登壇者及び日経IDの紹介 2. パスキーのログインテストにおける課題 3. WebAuthn Emulator 4. 今後の展開

Slide 12

Slide 12 text

パスキーの開発者体験を向上させたい 12 テスト時の課題を有名なパスキー実装はどのようにクリアしているのか調査

Slide 13

Slide 13 text

テスト時にモックしたい領域 テストの関心領域 パスキーのアーキテクチャ 13 スマートフォン 生体認証 日経ID ヌーラボアカウント Authenticator モックのインターフェースは WebAuthn API の範囲 Point ブラウザ USBキー Google Account Relying Party CTAP WebAuthn

Slide 14

Slide 14 text

テストの関心領域 テスト時にモックしたい領域 著名パスキー実装の例1: SimpleWebAuthn 14 日経ID ヌーラボアカウント テストデータを固定しAPIに投げたときの入出力でテスト Point 固定のテストデータ Google Account Relying Party Jest

Slide 15

Slide 15 text

テストの関心領域 テスト時にモックしたい領域 著名パスキー実装の例2: WebAuthn4j 15 日経ID ヌーラボアカウント WebAuthnの仕様をシミュレーションするライブラリを自製 Point WebAuthn Simulator Google Account Relying Party JUnit

Slide 16

Slide 16 text

各戦略の Pros. and Cons. 16 ● 固定のテストデータによるテスト テストが手軽に書ける Pros. 時刻や乱数など環境の固定が必要でE2Eには向かず、テストの質も低い Cons. ● WebAuthn のシミュレータライブラリによるテスト E2Eにも単体テストにも利用可能で、高品質なテストが可能 Pros. 実装コストは重い Cons.

Slide 17

Slide 17 text

パスキーのテストの問題点 17 ❖ 会社のプロジェクトじゃなければよいのでは? ❖ 会社のプロジェクトではテストだけにそこまで工数はかけられない ❖ 社内から OSS として公開できるフローがあったような… 日経の OSS 公開フローを使って作ってみた Point

Slide 18

Slide 18 text

日経のOSS公開ガイドライン(抜粋) 18 OSS コミュニティで広く使われる汎用ソフトウェア 内部プロダクト 日経のサービスの提供 ビジネスロジックを含まない ビジネスロジックを含む 技術力・モチベーション向上を目的としてよい 会社の収益に貢献することが目的 日経の OSS として作ることにより工数を気にせず作りこむ! Point

Slide 19

Slide 19 text

テストの関心領域 テスト時にモックしたい領域 NID WebAuthn Emulator 19 日経ID ヌーラボアカウント WebAuthnの内部実装を含めて実装したエミュレータを作成 Point WebAuthn Emulator Google Account Relying Party WebAuthn Authenticator Emulator CTAP 週1の勉強会でWebAuthnとCTAPの仕様書を読み込み 標準仕様ベースで npm モジュールとして実装

Slide 20

Slide 20 text

実際のコード 20 https://github.com/Nikkei/nid-webauthn-emulator/ または「NID Webauthn Emulator」で検索🔎 「npm i nid-webauthn-emulator」で使用可能です

Slide 21

Slide 21 text

日経ID 認証認可システムでの使用例 21 テストフレームワーク Playwright CD/CI GitHub Packages, GitHub Actions テストコード TypeScript, pnpm, Biome テスト対象 日経ID 認証認可サーバ (通称NID) Playwright NID WebAuthn Emulator テストブラウザ Injection Code 日経ID 認証認可サーバ Test Code Web Driver

Slide 22

Slide 22 text

22 今後の展開 04 1. 登壇者及び日経IDの紹介 2. パスキーのログインテストにおける課題 3. WebAuthn Emulator 4. 今後の展開

Slide 23

Slide 23 text

今後の展開 23 パスキー早く公開したい! (鋭意開発中! このライブラリを用いたE2Eテストはすでにパス)

Slide 24

Slide 24 text

関連技術に関する個人的な興味 24 ✔ 格子暗号やペアリング暗号といった公開鍵暗号の次世代技術を習得したい 耐量子コンピュータなど現代の暗号理論の発展について行きたい Point ✔ パスキーを含む複雑な認証認可の設計を洗練させたい 関数型プログラミングにおける代数的データ型などを導入しモデルをシン プルにしたい Point

Slide 25

Slide 25 text

We're hiring !! 25 https://hack.nikkei.com/jobs/ 日経IDチームを始め、テクノロジーメディアを目指す日本 経済新聞社ではデジタルサービスにおける技術力向上を 重視しており、最新の技術に興味のあるエンジニアを随時 募集しております。

Slide 26

Slide 26 text

26 End