なぜパスワードレスなのか?

ヤフーJAPANは、電子商取引をはじめとするお金に関するサービスを提供しているため、不正アクセスやアカウント紛失が発生した場合、利用者に大きな損害を与えるリスクがあります。

パスワードに関する攻撃で最も多かったのは、パスワードリスト攻撃とフィッシング詐欺だった。 パスワードリスト攻撃が一般的で効果的な理由の一つは、多くの人が複数のアプリケーションやウェブサイトで同じパスワードを使う習慣があることだ。

以下の数字は、Yahoo! JAPANが実施した調査結果である。

概要

ヤフー・ジャパンは、検索、ニュース、電子商取引、電子メールなどのサービスを提供する日本最大級のメディア企業である。 毎月5,000万人以上のユーザーがYahoo! 何年もの間、ユーザーアカウントへの攻撃や、アカウントへのアクセス不能につながる問題が数多く発生していた。 これらの問題のほとんどは、認証のためのパスワード使用に関するものだった。 近年の認証技術の進歩に伴い、ヤフーではパスワードによる認証からパスワードレス認証への移行を決定した。

ヤフーJAPANのパスワードレスの取り組み

ヤフーJAPANは、パスワードレス認証の普及のために様々な取り組みを行っているが、それは大きく3つに分けられる:

  1. パスワードに代わる認証手段を提供する。
  2. パスワードの無効化。
  3. パスワードなしのアカウント登録。

最初の2つのイニシアチブは既存ユーザー向けで、パスワードなしの登録は新規ユーザー向けである。

1.パスワードに代わる認証手段の提供

Yahoo! JAPANでは、パスワードの代わりに以下のものを提供しています。

  1. SMS認証
  2. WebAuthnによるFIDO

さらに、電子メール認証、パスワードとSMS OTP(ワンタイムパスワード)の組み合わせ、パスワードと電子メールOTPの組み合わせなどの認証方法も提供しています。

重要

ヤフー・ジャパンは、日本国内で営業している電話会社にサービスを限定し、VoIP SMSを禁止している。

SMS認証

SMS認証とは、登録されたユーザーがSMSを通じて6桁の認証コードを受け取ることができるシステムである。 SMSを受け取ったユーザーは、アプリやウェブサイトで認証コードを入力することができる。

アップルは長い間、iOSがSMSメッセージを読み、本文から認証コードを提案することを認めてきた。 最近では、input要素のautocomplete 属性に “one-time-code “を指定することで、サジェストを利用できるようになりました。 Android、Windows、Mac上のChromeは、WebOTP APIを使用して同じ体験を提供することができます。

例えば、こうだ:

<form>
<input type="text" id="code" autocomplete="one-time-code"/>
<button type="submit">sign in</button>
</form>
if ('OTPCredential' in window) {
const input = document.getElementById('code');
if (!input) return;
const ac = new AbortController();
const form = input.closest('form');
if (form) {
form.addEventListener('submit', e => {
ac.abort();
});
}
navigator.credentials.get({
otp: { transport:['sms'] },
signal: ac.signal
}).then(otp => {
input.value = otp.code;
}).catch(err => {
console.log(err);
});
}

どちらのアプローチも、SMS本文にドメインを含め、指定されたドメインに対してのみサジェストを提供することで、フィッシングを防ぐように設計されている。

WebOTP API とautocomplete="one-time-code" の詳細については、SMS OTP フォームのベストプラクティスをご覧ください。

WebAuthnによるFIDO

FIDO with WebAuthnは、ハードウェア認証機能を使って公開鍵暗号ペアを生成し、所有権を証明する。 スマートフォンを認証装置として使用する場合、指紋センサーや顔認証などの生体認証と組み合わせることで、ワンステップの二要素認証を行うことができる。 この場合、署名と生体認証の成功表示のみがサーバーに送信されるため、生体情報が盗まれる心配はない。

以下の図は、FIDOのサーバー・クライアント・コンフィギュレーションを示している。 クライアント認証機能は、バイオメトリクスでユーザを認証し、その結果に公開鍵暗号方式で署名する。 署名の作成に使用される秘密鍵は、TEE(信頼された実行環境)などに安全に保管される。 FIDOを使用するサービスプロバイダーはRP(依拠当事者)と呼ばれる。

ユーザーが認証(一般的にはバイオメトリクススキャンまたはPIN)を行うと、認証者は秘密鍵を使用して署名された検証信号をブラウザに送信する。 RPのウェブサイトは署名された検証信号をRPのサーバーに送信し、サーバーは公開鍵と照合して署名を検証し、認証を完了する。

詳細については、FIDOアライアンスの認証ガイドラインをお読みください。

Yahoo! JAPANは、Android(モバイルアプリ、ウェブ)、iOS(モバイルアプリ、ウェブ)、Windows(Edge、Chrome、Firefox)、macOS(Safari、Chrome)のFIDOに対応しています。 コンシューマー・サービスとして、FIDOはほとんどすべてのデバイスで使用できるため、パスワードレス認証を推進するための良い選択肢となる。

オペレーティングシステムFIDOのサポート
アンドロイドアプリ、ブラウザ(クローム)
iOSアプリ(iOS14以降)、ブラウザ(Safari14以降)
ウィンドウズブラウザ(Edge、Chrome、Firefox)
マック(ビッグ・サー以降)ブラウザ(サファリ、クローム)
FIDOで認証するためのYahoo!

ヤフーでは、まだ他の方法で認証を行っていない場合は、WebAuthnでFIDOに登録することを推奨している。 ユーザーが同じデバイスでログインする必要がある場合、バイオメトリック・センサーを使って素早く認証することができる。

ユーザーは、Yahoo! JAPANにログインするために使用するすべてのデバイスでFIDO認証を設定する必要があります。

パスワードレス認証を推進し、パスワードから移行するユーザーに配慮するため、私たちは複数の認証手段を提供しています。 つまり、ユーザーによって認証方法の設定が異なり、ブラウザによって使用できる認証方法が異なる可能性があります。 私たちは、ユーザーが毎回同じ認証方法でログインする方が、より良い体験になると考えています。

これらの要件を満たすためには、以前の認証方法を追跡し、その情報をクッキーなどの形で保存することでクライアントとリンクさせる必要がある。 そして、さまざまなブラウザやアプリケーションが認証にどのように使用されているかを分析することができる。 ユーザーは、ユーザーの設定、以前に使用された認証方法、および必要最小限の認証レベルに基づいて、適切な認証を行うよう求められる。

2.パスワードの無効化

ヤフーJAPANは、利用者に代替の認証方法を設定し、パスワードを使用できないようにするよう求めている。 代替認証の設定に加え、パスワード認証を無効にする(つまりパスワードのみでのサインインを不可能にする)ことは、リストベースの攻撃からユーザーを守るのに役立つ。

私たちは、ユーザーにパスワードの無効化を奨励するため、以下の措置を講じました。

  • ユーザがパスワードをリセットする際、代替認証方法を促進する。
  • ユーザーに使いやすい認証方法(FIDOなど)を設定するよう促し、頻繁に認証が必要な状況ではパスワードを無効にする。
  • 電子商取引の決済など、リスクの高いサービスを利用する前にパスワードを無効にするようユーザーに呼びかける。

ユーザーがパスワードを忘れた場合、アカウント回復を実行することができます。 これまではパスワードのリセットが必要だった。 現在、ユーザーは別の認証方法を選択することができ、我々はそうすることを奨励している。

3.パスワードレスアカウント登録

Yahoo!JAPANの新規アカウントは、パスワードなしで作成できます。 ユーザーはまずSMS認証で登録する必要がある。 ログインしたら、FIDO認証を設定するようユーザーに勧める。

FIDOはデバイスごとに設定されるため、デバイスが操作不能になった場合、アカウントを回復するのは難しい。 そのため、追加認証を設定した後でも、ユーザーには電話番号を登録し続けるよう求めています。

パスワードレス認証の主な課題

パスワードは人間の記憶に依存しており、デバイスに依存しない。 一方、パスワードレスの取り組みでこれまでに紹介した認証方法は、デバイスに依存している。 これにはいくつかの課題がある。

複数のデバイスを使用する場合、ユーザビリティに関するいくつかの問題がある:

  • SMS認証を使用してPCからログインする場合、ユーザーは携帯電話にSMSメッセージが着信していないか確認する必要があります。 これは、ユーザーの携帯電話が利用可能で、いつでも簡単にアクセスできる必要があるため、不便かもしれない。
  • FIDO、特にプラットフォーム認証では、複数のデバイスを持つユーザーは、未登録のデバイスでは認証できない。 登録は、使用するデバイスごとに行う必要がある。

FIDO認証は特定のデバイスと結びついており、そのデバイスをユーザーが所有し、アクティブな状態に保つ必要がある。

  • サービス契約を解除すると、登録した電話番号へのSMS送信ができなくなります。
  • FIDOは秘密鍵を特定のデバイスに保存する。 デバイスを紛失した場合、これらのキーは使用できなくなる。

ヤフーJAPANでは、こうした問題に対してさまざまな取り組みを行っている。

最も重要な解決策は、ユーザーに複数の認証方法を設定するよう促すことだ。 これは、デバイスを紛失した場合に、代替のアカウント・アクセスを提供する。 FIDO鍵はデバイスに依存するため、複数のデバイスにFIDO秘密鍵を登録するのも良い方法である。

また、WebOTP APIを使用して、Android携帯からPC上のChromeにSMS認証コードを渡すこともできる。

アップルは最近、パスキー機能を発表した。 アップルはiCloud Keychainを使って、同じApple IDでサインインしたデバイス間で秘密鍵(デバイスに保存)を共有するため、デバイスごとの登録が不要になる。 FIDOアライアンスはアカウント回復問題の重要性を認識し、ホワイトペーパーを発表した。

パスワードレス認証が普及するにつれて、これらの問題への対処がさらに重要になると考えている。

パスワードレス認証の推進

ヤフーJAPANは、2015年からこうしたパスワードレス化に取り組んできた。 2015年5月のFIDOサーバー認証取得に始まり、SMS認証、パスワード無効化機能、各デバイスのFIDO対応などを導入した。

現在、月間アクティブユーザー3000万人以上がすでにパスワードを無効にし、パスワード以外の認証方法を利用している。 ヤフーJAPANのFIDO対応は、Android版Chromeから始まり、現在では1,000万人以上のユーザーがFIDO認証を設定している。

ヤフーJAPANの取り組みの結果、ログインIDやパスワードを忘れたという問い合わせの割合が、最も多かった時期と比べて25%減少しており、パスワードレスアカウントの増加による不正アクセスの減少も確認できています。

FIDOは設定が非常に簡単なので、特にコンバージョン率が高い。 実際、Yahoo! JAPANの調べでは、FIDOはSMS認証よりもCVRが高い。

FIDOはSMS認証よりも成功率が高く、平均認証時間と中央値も速い。 パスワードに関しては、認証時間が短いグループもあり、これはブラウザの autocomplete="current-password".

パスワード、SMS、FIDOの認証時間の比較グラフ。
平均して、FIDOは認証に8秒かかり、パスワードは21秒、SMS認証は27秒かかる。

パスワードレス・アカウントを提供するための最大の難関は、認証方法を追加することではなく、認証機能を普及させることである。 パスワードレスサービスの利用経験がユーザーフレンドリーでなければ、移行は容易ではない。

セキュリティを向上させるためには、まず使い勝手を向上させる必要があり、そのためにはサービスごとに独自の工夫が必要だと考えています。

結論

パスワード認証はセキュリティの面でリスクが高く、使い勝手の面でも課題がある。 WebOTP APIやFIDOのような非パスワード認証をサポートする技術がより広く利用できるようになった今、パスワードレス認証に向けた取り組みを始める時だ。

ヤフーJAPANでは、このアプローチがユーザビリティとセキュリティの両面で確かな効果を上げている。 しかし、多くのユーザーはまだパスワードを使用しているため、私たちはより多くのユーザーがパスワードなしの認証方法に切り替えるよう、引き続き働きかけていきます。 また、パスワードレス認証方式のユーザー体験を最適化するために、製品の改良を続けていきます。

ヤフーJAPANのケーススタディPDFはこちらからご覧いただけます。

出典:https://web.dev/yahoo-japan-identity-case-study