Slide 1

Slide 1 text

Meet passkeys 2022 年 6 月 29 日 Recap of WWDC22

Slide 2

Slide 2 text

Who am I ● Name ● 佐藤タケシ ( さとうたけし ) ● Company ● Merpay, Inc.(2019/01 ~) ● Role ● Software Engineer (iOS) ● Account ● Twitter: @hatakenokakashi ● Facebook: 佐藤剛士 ● GitHub: SatoTakeshiX

Slide 3

Slide 3 text

passkeyとは?

Slide 4

Slide 4 text

passkeyとは? ● 次世代の認証方式 ● パスワードよりも安全に使い勝手がよい ● クロスプラットフォームで利用可能 ● iOS 15 、 Monterey から開発者プレビュー始まる ● iOS 16 、 Venture から一般公開 ● Face ID, Touch ID を使って認可する ● WebAuthn の仕組みを利用 ○ 公開鍵暗号方式を利用 ● Apple プラットフォームでは iCloud Keychain に保存

Slide 5

Slide 5 text

パスワードの問題点 ● 利便性とセキュリティがトレードオフ ● 正しく使うのが難しい ● フィッシング被害がどうしても出る

Slide 6

Slide 6 text

利便性とセキュリティがトレードオフ ● 便利にするとセキュリティが下がる ○ PC にパスワード書いた付箋貼る ○ 同じパスワードを使い回す ● セキュリティを上げると使い勝手が下がる ○ パスワードマネージャーを使う ○ パスワードを自動生成 ○ 多要素認証する ■ SMS/ メールにワンタイムコード送る

Slide 7

Slide 7 text

パスワードでログイン ● パスワードはハッシュ化、ソルト化されてサーバーに保存される ● フィッシング犯はサーバーを狙う https://developer.apple.com/wwdc22/10092

Slide 8

Slide 8 text

passkeyでログイン ● passkey が公開鍵と秘密鍵を生成 https://developer.apple.com/wwdc22/10092

Slide 9

Slide 9 text

passkeyでログイン ● 秘密鍵をクライアント側、公開鍵をサーバーに置く https://developer.apple.com/wwdc22/10092

Slide 10

Slide 10 text

passkeyでログイン https://developer.apple.com/wwdc22/10092

Slide 11

Slide 11 text

passkeyの利点 ● サーバー側には公開鍵のみが保存される ● 公開鍵は公開されているものなのでフィッシング犯に盗まれても問題ない ○ サーバー側に盗むべきものがなくなる ● ユーザーも覚えるものがなくなる ● 1 step でログインできて UX が向上する

Slide 12

Slide 12 text

パスワードでのログインフロー https://developer.apple.com/wwdc22/10092 user name 入力 パスワード 入力 SMS コード 入力 サインイン 完了

Slide 13

Slide 13 text

passkeyでのログインフロー https://developer.apple.com/wwdc22/10092 user name 入力 Face ID 認証 サインイン

Slide 14

Slide 14 text

passkeyの実装準備 ● Universal Link と同じく apple-app-site-association に JSON を置く

Slide 15

Slide 15 text

passkeyの実装 ● TextFiled の textContentType を .username に設定

Slide 16

Slide 16 text

passkeyのiOSコード: ログイン

Slide 17

Slide 17 text

passkeyのiOSコード: ログイン

Slide 18

Slide 18 text

passkeyのiOSコード: ログイン後

Slide 19

Slide 19 text

passkeyのiOSコード: passkeyが複数ある場合

Slide 20

Slide 20 text

passkeyのiOSコード: passkeyがない人のフロー

Slide 21

Slide 21 text

passkeyのiOSコード: passkeyがない人のフロー passkeyがない場合QRコードのモーダル が表示される

Slide 22

Slide 22 text

passkeyのiOSコード: passkeyがない人のフロー passkeyがない場合すぐにエラーのデリ ゲートメソッドが呼ばれる

Slide 23

Slide 23 text

passkeyのiOSコード: passkeyがない人のフロー passkeyがない場合すぐにエラーのデリ ゲートメソッドが呼ばれる

Slide 24

Slide 24 text

passkeyのiOSコード: passkeyがない人のフロー ユーザーがpasskeyのシートを閉じたか 利用可能なクレデンシャルがない パスワードのテキストフィールドを表示す る

Slide 25

Slide 25 text

passkeyのiOSコード: passkeyがない人のフロー

Slide 26

Slide 26 text

友達のPCから自分のpasskeyを使ってログイン ● FIDO CTAP (Client to Authentiator Protocol) という仕組みで安全に passkey を共有できる

Slide 27

Slide 27 text

友達のPCから自分のpasskeyを使ってログイン

Slide 28

Slide 28 text

友達のPCから自分のpasskeyを使ってログイン

Slide 29

Slide 29 text

友達のPCから自分のpasskeyを使ってログイン

Slide 30

Slide 30 text

認証方法の一覧

Slide 31

Slide 31 text

まとめ

Slide 32

Slide 32 text

まとめ ● passkey は次世代に認証方式 ● WebAuthn の仕組みを使って利便性とセキュリティどちらも向上させる ● apple-app-site-association に JSON を置く ● ASAuthorizationController を使って実装 ● FIDO CTAP で他の PC から自分の passkey でログインも可能 ● パスワード・ SMS 認証よりもセキュリティ強度高い

Slide 33

Slide 33 text

参考資料 ● Meet passkeys ● About the security of passkeys ● Supporting passkeys ● パスワード不要の認証「 WebAuthn 」とは?|「 FIDO 」の構成技術を解説 ● WebAuthn の仕組み ● FIDO, WebAuthn の仕様の関係まとめ ● パスワードを過去のものにする Apple の「 Passkeys 」とは?