パスワードレス認証をより安全便利に - MIXI Mがパスキーに対応しました
開発本部 MIXI M事業部の ritou です。
MIXI M|ミクシィエム - 決済やアカウント認証、個人データを管理する統合プラットフォームサービス
MIXI Mは、認証から決済までワンストップで提供できる基盤システムおよびWALLETサービスです。
認証に関しては、MIXI Mとして提供しているサービスのID管理だけでなく、社内外のサービスにID連携機能を提供するIdentity Providerでもあります。決済に関しては最近、PCI 3DSの準拠認定についての記事が公開されていますので、こちらもぜひご覧ください。
MIXI MにおけるPCI 3DS準拠のための道のり | by k-asm | Sep, 2023 | MIXI DEVELOPERS
この投稿では、MIXI Mのパスキー対応について紹介します。
これまでのユーザー認証
MIXI Mでは、サービス開始当初からパスワード認証ではなくSMS/メールによるOTP(ワンタイムパスワード)認証を使用してきました。
セキュリティの観点から言えば、パスワード認証を用いないことでクレデンシャルスタッフィング攻撃(パスワードリスト攻撃)のリスクが排除されているのが最大の特徴です。ただし、多要素認証を突破するAiTM攻撃、SMS OTPにおけるSIMスワップ攻撃、さらにはメール OTPにおいてメールソフトやWebメールのセキュリティに依存するといった懸念点も存在します。
それ以外の観点で言うと、認証の機会が増えるほどにSMS/メールの送信費用も増加すること、何らかの理由でOTPが届かなかった場合にサービス利用が妨げられるリスクも無視できません。UXについて、SMS利用時にはWebOTPという仕組みを活用し、モバイル端末でのユーザー体験を向上させています。しかし、メールを利用する場合の人の手によるコピー&ペーストを必要とするユーザー体験は良いものではありません。
このような状況において安全性と利便性、さらには費用面のバランスを考慮した認証方法を探している中で、パスキーに注目しました。
パスキーへの期待
パスキーには次の様な特徴があります。
- フィッシング耐性
- ローカル認証の利用による利便性
- 既存の認証フローとの親和性
パスキーは、認証を要求する際にサービスが指定するドメインやoriginの値が、ユーザーが実際にアクセスしている値と一致するかどうかをブラウザが介入して確認します。このため、フィッシングサイトで正規のサービスのパスキーを利用して認証を突破することは不可能です。よって、これまでの懸念であったAiTM攻撃への対策が可能です。
パスキーではSMS/メールの送信のための費用を抑えられ、OTPが受信できないことにより認証が中断するリスクも排除されます。パスキーを導入している他サービスからも認証処理にかかる時間短縮や成功率向上のレポートが出されています。
既存の認証フローとの組み合わせ方について、パスキーではAutofillと言う仕組みがあります。
パスワード認証を利用しているサービスの場合、これまでと同様のUIのままシームレスにパスキーによる認証機能を提供できることが知られています。
これらの特徴を考慮して、パスキーに対応することで、
- より高い認証強度
- より良いUX
- 認証処理における費用の削減
を同時に実現できるのではないかと考えました。
パスキー対応の内容
具体的に、今回のパスキー対応で新規に作成、改修した機能を紹介します。
パスキー管理画面の新設
既にMIXI Mをご利用いただいているユーザーに向けてパスキー管理画面を用意し、パスキーの登録と無効化を可能にしました。
URL: https://account.mixi.com/security/authenticators
図1. パスキー未登録 | 図2. パスキー登録ダイアログ | 図3. パスキー登録完了 |
ログイン機能の改修
続いて、登録したパスキーでログインできるようにしました。パスキーの登録が済んだ状態で、ヘッダーのメニューからログアウトするとログイン画面を確認できます。MIXI Mアプリをご利用の場合、一度ログアウトした後のログイン画面から利用できます。
MIXI MではOTPをSMS/メールで送信するためにSMS番号やメールアドレスを入力するフォームを使用しています。その入力フォームにAutofillを適用することで既存のフォームのままパスキーによるログインに対応しました。モバイル端末では、入力フォームを選択するとブラウザダイアログで選択可能なパスキーが表示されます。
PCのブラウザでは、入力フォームの隣に利用可能なパスキー候補が表示され、選択してローカル認証を行うことでログインできます。
図4. SMS番号、メールアドレスを入力するログインフォーム | 図5. パスキーが登録済みの状態でフォームを選択すると利用可能なパスキーが表示される | 図6. PCのブラウザでは入力フォーム付近に利用可能なパスキーが表示される |
再認証機能の新設
あるサービスが複数の認証方式を提供するとき、攻撃者は当然、認証強度が弱い認証方式の突破を狙います。MIXI Mにおいてパスキーが登録されていても、フィッシング攻撃でSMS/メールのOTPが取得されると攻撃者にセッションを乗っ取られてしまい、さらには攻撃者自身のパスキーを登録される可能性もあります。パスキー自体の認証強度は高くても、認証強度の弱い既存の認証方式を無効化できない状況ではサービス全体の認証強度を上げることはできません。
MIXI Mでは重要なユーザーの操作を保護するため、認証強度を数値化した認証レベルの概念に基づいた再認証を導入しました。SMS/メール OTP認証とパスキーによる認証でそれぞれ認証レベルを定義し、ユーザー毎の認証レベルの最大値と現在のセッションの認証レベルを比較、必要に応じて再認証を要求します。
まずは、パスキーの管理画面からこの機能を導入しました。パスキーを登録済みでSMS/メール OTPでログインしたユーザーがパスキー管理画面にアクセスすると、登録済みのパスキーを用いた再認証が要求されます。
図7. 再認証画面 |
「認証する」ボタンを押すと、登録済みのパスキーでの認証が要求されます。そのパスキーが登録されている端末を使用している場合、ローカル認証が行われ、再認証が完了します。
パスキー対応により実現できたことと今後やりたいこと
今回のパスキー対応により、認証強度とUX、費用面でメリットのある認証方式を提供できる様になりました。MIXI Mでは最初からパスワードレス認証を採用していたという点で、FIDOアライアンスや他サービスが提供しているUI/UXガイドラインなどで触れられているパスワード認証からのマイグレーション方法がそのまま適用できるわけではありません。しかし、実際はそれほど違和感なくパスキーによる認証を組み込むことができたと感じています。
パスキーによる認証機能をより多くのユーザーにご利用いただくため、今後は
- 新規登録フローにおけるパスキー登録
- SMS/メール OTPによる認証直後にパスキー登録への誘導
- ログイン中のユーザーへの機能周知
についても検討していきます。
また、認証レベルの概念に基づいた再認証を実装したことで、特定機能を保護するための仕組みも用意できました。
今後は他の機能に対してもこの再認証による保護を適用していくこと、その際に課題となる
- 登録済みのパスキーが利用できない状態を避ける仕組み
- どうしてもパスキーが利用できない状態からのリカバリー
についても検討していきます。
まとめ
MIXI Mでのパスキー対応についての経緯と内容を紹介しました。既にパスワードレス認証を採用している点で、FIDOアライアンスや他のサービスが提供するパスキー対応や移行方法をそのまま適用するわけにはいかない部分もあります。この記事が、同じようなサービス開発者のパスキー対応の参考になれば幸いです。今後もID管理や決済に関わるサービスとして、単純な認証方式の選択肢以外のパスキー活用方法について模索していく予定です。
ぜひMIXI MやMIXI MとID連携しているサービスをご利用いただき、パスキーの使い勝手についてフィードバックをいただけたらと思います。
ではまた。
おまけ: 宣伝
2023/09/15 15:00-15:40 に DroidKaigi 2023 にてパスキーについて発表します。
本投稿の内容や他のサービスの対応を参考にして、パスキー対応の勘所を掴んでいただけるような内容を考えています。参加される方は会場でお会いしましょう。
Discussion