Yahoo! JAPAN のパスワード不要の認証で問い合わせが 25% 減少し、ログイン時間が 2.6 倍に

Yahoo! トラベルのJapan はパスワードレスの ID システムを構築しました。

Yahoo! JAPAN は、検索、ニュース、e コマース、メールなどのサービスを提供する日本最大級のメディア企業です。5,000 万人以上のユーザーが Yahoo!JAPAN の毎月のサービスです。

長年にわたり、ユーザー アカウントに対する攻撃や問題が多く発生し、アカウントへのアクセス権を失いました。これらの問題のほとんどは、認証でのパスワードの使用に関連していました。

最近の認証技術の進歩により、Yahoo!JAPAN は、パスワード ベース認証からパスワードレス認証に移行することを決定しました。

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

Yahoo!JAPAN は e コマースやその他の金銭関連サービスを提供しているため、不正アクセスやアカウント喪失が発生した場合、ユーザーに深刻な損害を与えるリスクがあります。

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

次の図は、Yahoo!JAPAN。

    50 %

    6 つ以上のサイトで同じ ID とパスワードを使用している

    60 %

    複数のサイトで同じパスワードを使用する

    70 %

    パスワードを使用する

ユーザーはパスワードを忘れがちです。それがパスワード関連の問い合わせの大半を占めています。また、パスワードに加えてログイン ID も忘れたユーザーからの問い合わせもありました。ピーク時には、アカウント関連の問い合わせの 3 分の 1 以上を占めていました。

Yahoo!JAPAN は、セキュリティだけでなく、ユーザーに余分な負担をかけることなく、ユーザビリティを向上させることを目指していました。

セキュリティの観点から、ユーザー認証プロセスからパスワードを削除することで、リストベースの攻撃による被害が軽減されます。ユーザビリティの面では、パスワードの保存に依存しない認証方法を提供することで、ユーザーがパスワードを忘れてログインできない状況を回避できます。

Yahoo! JAPAN のパスワードレスの取り組み

Yahoo! JAPAN では、パスワードレス認証の推進に向けてさまざまな取り組みを行っています。その取り組みは、大きく次の 3 つのカテゴリに分類されます。

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

最初の 2 つのイニシアチブは既存のユーザーを対象としていますが、パスワードレスの登録は新規ユーザーを対象としています。

1. パスワードの代替認証手段を提供する

Yahoo! JAPAN では、パスワードの代わりに次のアカウントをご利用いただけます。

  1. SMS 認証
  2. FIDO と WebAuthn の使用

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

SMS 認証

SMS 認証は、登録ユーザーが SMS を介して 6 桁の認証コードを受信できるようにするシステムです。SMS を受け取ったユーザーは、アプリまたはウェブサイトに認証コードを入力できます。

Apple は以前から、iOS に SMS メッセージを読み取り、テキスト本文から認証コードを提案することを許可してきました。最近では、入力要素の autocomplete 属性に「ワンタイム コード」を指定することで、候補を使用できるようになります。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 フォームに関するおすすめの方法をご覧ください。

FIDO と WebAuthn

WebAuthn を使用する FIDO では、ハードウェア認証システムを使用して公開鍵暗号ペアを生成し、所有を証明します。認証者としてスマートフォンを使用する場合、生体認証(指紋認証センサーや顔認識など)と組み合わせて 1 段階の 2 要素認証を行うことができます。この場合、生体認証による署名と成功表示のみがサーバーに送信されるため、生体認証データが盗まれるリスクはありません。

次の図は、FIDO のサーバー クライアントの構成を示しています。クライアント認証システムは、生体認証システムでユーザーを認証し、公開鍵暗号を使用して結果に署名します。署名の作成に使用される秘密鍵は、TEE(高信頼実行環境)または同様の場所に安全に保存されます。FIDO を使用するサービス プロバイダは RP(リライング パーティ)と呼ばれます。

ユーザーが認証(通常は生体認証スキャンや PIN)を行うと、認証システムは秘密鍵を使用して署名済みの検証シグナルをブラウザに送信します。その後、ブラウザはそのシグナルを RP のウェブサイトと共有します。

その後、RP のウェブサイトは署名済みの検証シグナルを RP のサーバーに送信します。RP のサーバーは、署名と公開鍵を検証して、認証を完了します。

詳細については、FIDO Alliance の認証ガイドラインをご覧ください。

Yahoo! JAPAN は、Android(モバイルアプリとウェブ)、iOS(モバイルアプリとウェブ)、Windows(Edge、Chrome、Firefox)、macOS(Safari、Chrome)で FIDO をサポートしています。一般ユーザー向けサービスである FIDO は、ほぼすべてのデバイスで使用できるため、パスワードレス認証を促進するのに適しています。

オペレーティング システム FIDO のサポート
Android アプリ、ブラウザ(Chrome)
iOS アプリ(iOS14 以降)、ブラウザ(Safari 14 以降)
Windows ブラウザ(Edge、Chrome、Firefox)
Mac(Big Sur 以降) ブラウザ(Safari、Chrome)
Yahoo!JAPAN のプロンプトにより、FIDO で認証するように求められます。

Yahoo! JAPAN では、ユーザーが他の方法でまだ認証されていない場合は、WebAuthn を使用して FIDO に登録することをおすすめします。ユーザーが同じデバイスでログインする必要がある場合、生体認証センサーを使用してすばやく認証できます。

ユーザーは、Yahoo!JAPAN。

パスワード不要の認証を推進し、パスワードから移行するユーザーに配慮するために、Google では複数の認証方法を提供しています。つまり、ユーザーによって認証方法の設定が異なり、使用できる認証方法はブラウザごとに異なる可能性があります。Google では、ユーザーが毎回同じ認証方法でログインすると、ユーザー エクスペリエンスが向上すると考えています。

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

2. パスワードの無効化

Yahoo! JAPAN では、代替の認証方法を設定し、パスワードを使用できないように無効にするよう求められます。代替認証の設定に加えて、パスワード認証を無効にする(パスワードのみでログインすることができない)と、リストベースの攻撃からユーザーを保護できます。

Google では、ユーザーにパスワードを無効にするよう促す手順を実施しています。

  • ユーザーがパスワードを再設定したときに代替認証方法を推進すること。
  • 使いやすい認証方法(FIDO など)を設定し、頻繁な認証が必要な状況ではパスワードを無効にするようユーザーに促す。
  • e コマースの支払いなど、リスクの高いサービスを使用する前にパスワードを無効にするようユーザーに促す。

ユーザーがパスワードを忘れた場合、アカウント復元を実行できます。これまではパスワードの再設定が必要でした。現在、ユーザーは別の認証方法を設定することを選択でき、そのようにすることをおすすめします。

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

新規ユーザーは、パスワード不要の Yahoo!JAPAN のアカウントでご利用いただけます。ユーザーはまず、SMS 認証を使用して登録する必要があります。ユーザーがログインしたら、FIDO 認証を設定することをおすすめします。

FIDO はデバイスごとの設定であるため、デバイスが動作しなくなった場合、アカウントの復元が困難になる可能性があります。そのため、追加の認証を設定した後も、ユーザーは電話番号を登録したままにする必要があります。

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

パスワードは人間の記憶に基づいており、デバイスに依存しません。一方、Google のパスワードレス イニシアチブでこれまでに導入された認証方法は、デバイスに依存しています。これにはいくつかの課題があります。

複数のデバイスが使用されている場合、ユーザビリティに関して次のような問題が発生します。

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

FIDO 認証は特定のデバイスに関連付けられており、ユーザーがデバイスを持ち、アクティブ状態にある必要があります。

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

Yahoo! JAPAN はこれらの問題に対処するためにさまざまな措置を講じています。

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

または、ユーザーが WebOTP API を使用して、SMS 確認コードを Android スマートフォンから PC の Chrome に渡すこともできます。

Google では、パスワードレス認証の普及に伴い、これらの問題に対処することの重要性が増すと確信しています。

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

Yahoo! JAPAN は 2015 年から、このようなパスワードレスの取り組みに取り組んできました。 2015 年 5 月の FIDO サーバー認証の取得に始まり、その後、SMS 認証、パスワード無効化機能、各デバイスの FIDO サポートが導入されました。

現在、1 か月のアクティブ ユーザーが 3, 000 万人以上すでにパスワードを無効にし、パスワード以外の認証方法を使用しています。Yahoo! JAPAN での FIDO のサポートは Android 版 Chrome から始まり、現在 1, 000 万人以上のユーザーが FIDO 認証を設定しています。

Yahoo! トラベルがJAPAN の取り組みでは、ログイン ID やパスワードを忘れた問い合わせの割合が、最も高い時期と比較して 25% 減少しています。また、パスワードレス アカウントの増加により不正アクセスが減少したことも確認できました。

FIDO は設定が簡単なので、特にコンバージョン率が高くなっています。 実際、Yahoo!JAPAN では、FIDO の CVR が SMS 認証よりも高いことがわかりました。

    25 %

    認証情報を忘れた場合のリクエストの減少率

    74 %

    ユーザーが FIDO 認証に成功する

    65 %

    SMS での確認が完了しました

FIDO は SMS 認証よりも成功率が高く、認証の平均時間と中央値が短いです。パスワードについては、認証時間が短いグループもありますが、これはブラウザの autocomplete="current-password" が原因と考えられます。

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

パスワード不要のアカウントを提供することが最も難しいのは、認証方法の追加ではなく、認証システムの使用が普及することです。パスワードレス サービスの使い勝手がユーザー フレンドリーでない場合、移行は容易ではありません。

Google では、セキュリティを強化するにはまずユーザビリティを向上させる必要があると考えており、それには各サービスに独自のイノベーションが必要になります。

おわりに

パスワード認証は、セキュリティの点でリスクがあり、ユーザビリティの面でも課題をもたらします。WebOTP API や FIDO など、パスワード以外の認証をサポートするテクノロジーが広く利用できるようになったため、パスワードレス認証への取り組みを開始しましょう。

Yahoo!JAPAN、このアプローチはユーザビリティとセキュリティの両方に明確な影響を与えました。ただし、多くのユーザーがいまだにパスワードを使用しているため、Google は今後もさらに多くのユーザーにパスワード不要の認証方法への切り替えを奨励していきます。また、パスワード不要の認証方法のユーザー エクスペリエンスを最適化するために、プロダクトの改善も引き続き行っていきます。

写真提供: olieman.eth、Unsplash より