🔑

パスキー時代の"認証要素"の考え方 ~パスキーとパスワードマネージャー~

2023/10/02に公開

ritouです。

サービス、ブラウザ、OSそれぞれのパスキー対応が日々進んでいます。
その中で、パスキーを利用してみて認証要素についてふと考えてしまう人がいるでしょう。

  • パスキー簡単!けどこれ指紋認証だけ?弱くなってない?
  • SMS OTPを2FAに設定し、パスワードマネージャーも使ってたから使い勝手はあまり変わらない。むしろSMS OTPがないぶんだけ弱くなった?

この辺りについて整理します。

認証要素というと、次の3つです。

  • SYK: Something You Know. パスワード、PIN
  • SYH: Something You Have. 認証アプリ、TOTP生成アプリ、バックアップコード、
  • SYA: Something You Are. 生体認証

前にこんな記事を書きました。

https://zenn.dev/ritou/articles/ea144bcf7e680e

この内容を説明すると、「うん、わかってる」って人は多いです。
でも、実際に使ってみると心許なく感じたりする、という感じですね。
この辺りのギャップを埋められたらと思います。

(最後まで見るのめんどくさい人向けの)まとめ

  • プラットフォームのパスワードマネージャーが管理/提供するパスキー: SYH + (SYK / SYA)
  • 1Password見たいな外部のパスワードマネージャーの場合は捉え方によってSYHのみに見えなくもないが↑と大体同じ
  • パスワードマネージャーを使ったパスワード認証の場合、ユーザー側だけ認証要素が変わる。SYKだけでも割と安全にできるが、要素だけ見てどうしても怖いと思ったらサービスで提供する2FAを使って要素を追加したらいい

パスキーの認証要素

モバイル端末、PC端末自体に保存される(AppleのiCloud KeychainやAndroidのGoogle Password Managerにより同期される物も含む)パスキーみたいな話と、1Passwordのように外部パスワードマネージャーが管理するパスキーの2種類について説明します。

プラットフォームのパスワードマネージャーが管理/提供するパスキー: SYH + (SYK / SYA)

これはいわゆるプラットフォーム認証器というのがベースで同期されるようになったという意味合いなので、それほど認識のズレは起こりにくいのかなと思います。最初の SYH の部分は、 パスキーを利用可能な端末を所持(物理的にアクセス)している という意味合いです。古のFIDO2ではクレデンシャルを生成した端末、となるところがパスキー同期云々の話が出てきたのでちょっとだけ定義が変わったと言えますが、その部分を考えすぎると「パスキーが利用可能である...ということはプラットフォームアカウントでログインしたということ。ということは...実質SYHではなくプラットフォームのアカウントの認証要素に従うわけで...」みたいな展開になってしまうので、ざっくりと「あるユーザーのパスキーが使える状況にある」というざっくりな捉え方でいいと思います。モヤモヤしてる部分は別途整理しましょう。

後ろの (SYK / SYA) は上で紹介した記事のセキュリティキーを使う場合とほぼ一緒です。

FIDO2: セキュリティキーにタッチ + PINを入れて UserVerification

SYH + SYK ですね。

MacOSとかでTouchIDもしくはパスワードで...と出てきて、パスワードを選んだ場合や、モバイル端末で画面ロックにPIN、パスコードと呼ばれているものを使っている場合はこちらにあたります。

FIDO2: セキュリティキー上の指紋認証による UserVerification / Plarform Authenticator

SYH + SYA です。

MacOSでTouchID、iOS/iPadOSのFaceIDを使う場合はこちらにあたります。

SYHだけでパスワードと組み合わせて使われていたり物理的なデバイスが認識しやすいセキュリティキーと違って、パスキーの場合はローカル認証だけで使っている感覚となり、認証強度が弱くなってしまったんじゃないか?というところですが、意識しないところでSYHの要素があることは意識しておきましょう。

1Passwordのようなパスワードマネージャーを使っている人のパスキー認証

新しいiOSのバージョンで自分が使いたいパスワードマネージャーを利用できるようになったことで、1Passwordでのパスキー対応を試された方もいるかもしれません。また、PCでブラウザ拡張として利用しているユーザーもいるでしょう。

特にPCのブラウザ拡張として1Passwordを利用すると、UserVerificationについて気になることが多いのではないでしょうか?

https://twitter.com/saziri/status/1708143834201518387

自分が調べた1Passwordの記事でもやはりこの挙動は気になりました。
Autofill対応やブラウザへのフォールバックなど、この時点よりいろいろ改善されていますが、UserVerificationの扱いについてはそのままです。

https://ritou.hatenablog.com/entry/2023/06/19/155439

後から直接1PasswordのTwitterアカウントに聞いてみたら教えてくれたんですが、1Passwordが利用可能な状態=1Password自体がパスワードなどでアンロックされた状態であるので、UserVerificationが済んでいる扱いなのだ ということらしいです。

iOSとかだとTouchIDも使えるし、ここでいうマスターパスワードによる認証は SYH + (SYK / SYA) の後者とみなせばプラットフォームのパスキー認証と大体一緒だろうと思っています。

が、たまに「いやいや認証するのってパスキーの候補が出てくる前じゃん。1Passwordのアンロックは前者のSYHの部分に含まれるのでは?つまり1PasswordのパスキーはSYHのみでは?」という意見をいただいたりもするので、この辺りはもう少し考えたいと思います。

パスワード認証

パスワードマネージャーを使わないユーザーのパスワード認証: SYKのみ

これは省略します。

パスワードマネージャーをちゃんと使っているユーザーのパスワード認証: SYH( + (SYK / SYA))

パスワードマネージャーをちゃんと使っていると、ユーザーが体感する認証要素は変わるでしょう。

特にApple製品のSafariでパスワードマネージャーを使ってきていると、パスワード認証のフォームの周りに出てきたパスワードの候補を利用するためにはローカル認証が必要となることが自然でしょう。これは SYH + (SYK/SYA) という、上記のパスキーと同じになります。

それに対し、例えばMacOSのChromeは以前はローカル認証なし、つまりChromeに対象のGoogleアカウントでログインしていたら利用したいパスワードの候補を選択するだけでフォームに入力される状況でした。今でも設定からローカル認証を外せますが、これだとパスキーの最初の要素と同じ SYH だけと言えます。

このように、パスワードマネージャーを利用することで ユーザー側の認証要素だけが 変わることになります。しかし、あくまでサービス側は攻撃者側から見たら SYKのみ なんですよね。これは変わりません。
これをいうと、「パスワードマネージャーを使っても SYKのみ なら意味ないじゃん」みたいなことを言われたりするわけです。そうなると単なる要素の話から一歩進んだ話になるわけですが、自分が満足できるように

  • SYKの強化 : パスワードマネージャーの機能を使って 推測困難でサービス側から漏洩でもしない限り知ることが難しいようなパスワードを利用する
  • SYHの追加 : サービス側で2FAを利用する

といった対策を取ってください、というところです。

後者でTOTP(SYH)を追加するとどうなるか、SYH + SYA + SYHとなります。SYHが重複しているのを見て、意味ない とかいう人もいますが、実際に所有する認証器の種類が異なる場合(PCでパスワードマネージャーを使っていて2FAは別のモバイルアプリみたいなの)は攻略のために必要な内容が異なるので安全性を強化できます。よって、必ずしも意味がないとは言い切れません。これも別途記事にしたいネタではあります。

まとめ

  • プラットフォームのパスワードマネージャーが管理/提供するパスキー: SYH + (SYK / SYA)
  • 1Password見たいな外部のパスワードマネージャーの場合は捉え方によってSYHのみに見えなくもないが↑と大体同じ
  • パスワードマネージャーを使ったパスワード認証の場合、ユーザー側だけ認証要素が変わる。SYKだけでも割と安全にできるが、要素だけ見てどうしても怖いと思ったらサービスで提供する2FAを使って要素を追加したらいい

次回はTOTP、パスキーなどなんらかのアカウントに紐付けられて同期するケースをどう考えるべきか見たいな記事を 書けたら書きます 書きました

https://zenn.dev/ritou/articles/ac61682ee8ee01

ではまた。

Discussion