パスワードレスってどんな技術？

#パスワードレスが注目されている背景
認証情報を詐取し、正規の ID / パスワードを使って不正アクセスを行う事件が多く報告されています。2017 年に出されたVerizon 社のレポートでもすでに攻撃の 81 % は漏洩したパスワードを利用したものだと報告されており、ここ数年は国内でも消費者向けサイトを狙った攻撃が話題になりました。それを受けてポイント交換や個人情報の登録・参照などでは 多素認証を組み込むことが多くなってきています。

参考：2017 Data Breach Investigations Report
https://www.ictsecuritymagazine.com/wp-content/uploads/2017-Data-Breach-Investigations-Report.pdf

確かに 多要素認証は不正アクセスのリスクを大幅に低減できる有益なソリューションです。しかし一方で都度ワンタイムパスワードなどの入力を要求されることによる利便性の低下も指摘されています。
当記事では 多要素認証に代わる認証方式としてのパスワードレス認証につき解説します。下図では従来のパスワード認証、パスワード ＋ 多要素認証、パスワードレス認証を、セキュリティと利便性の観点でマッピングしていますが、パスワードレス認証は高いセキュリティと利便性を両立できる技術と位置付けています。
![図1b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2261868/4d8e3d24-d510-0c24-402b-0824cfa0a7a3.png)

#Azure AD で実装できるパスワードレス認証
Azure AD は、業界標準の FIDO2 、無償のモバイルアプリケーションである Microsoft Authenticator 、 Windows 10 以降に組み込まれた Windows Hello によるパスワードレス認証に標準で対応しています。特に Microsoft Authenticator は Azure AD フリーエディションでも利用できるので、とりあえず動きを見てみたいという場合は無償で試すことが可能です。
これらはいずれもユーザが持っているもの(デバイス、スマートフォン、キー）とユーザ自身あるいは記憶情報（生体情報、PIN）の組み合わせで利用できるので、長く複雑なパスワードや更に追加でのワンタイムパスワードなどの入力に比べるとはるかに利便性が高いと言えます。
PINは一般にパスワードと比較して単純な文字列なのでセキュリティレベルが下がるのでは？と懸念されるかもしれませんが、そのようなことはありません。パスワードは漏洩した場合どこからでもアクセスでき、更に漏洩に気づきにくいという欠点がありますが、PINはデバイスに紐づいているためデバイスがないとアクセスはできません。PINの安全性については以下リンク先を参照ください。

参考：PIN がパスワードよりも優れた理由 (Windows) - Windows security | Microsoft Docs
https://docs.microsoft.com/ja-jp/windows/security/identity-protection/hello-for-business/hello-why-pin-is-better-than-password
![図2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2261868/b67efdda-4590-2d1e-844f-600f666eff43.png)
パスワードレス認証の堅牢性はどのように評価されているのでしょうか？アメリカ国立標準技術研究所（ NIST ）による「電子的認証に関するガイドライン」 （ NIST SP 800-63-3 ）では認証方式を以下のように定義しています。パスワードレス認証はいずれも多要素暗号と位置付けられおり、高い認証強度が認められていることがわかります。
![図3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2261868/950bd79e-9c73-e2a5-2381-c9085524737e.png)
○：暗号プロトコル/ハードウェアとして認められている
×：暗号プロトコル/ハードウェアとして認められていない

参考：Azure Active Directory による NIST 認証システムの保証レベル | Microsoft Docs
https://docs.microsoft.com/ja-jp/azure/active-directory/standards/nist-about-authenticator-assurance-levels
#Microsoft Authenticator によるパスワードレス認証の流れ
では実際に Microsoft Authenticator を利用した認証の流れを見ていきましょう。
Microsoft Authenticator は、パスワードレス認証だけでなく時間ベースのワンタイムパスワードによる 多要素認証にも活用できるモバイルアプリケーションです。 Android、iOS に対応し以下サイトから無料でダウンロードできます。また Google やFacebook などマイクロソフト以外のサービスでの 多要素認証にも活用できます。

Microsoft Authenticator ダウンロードサイト： 
https://play.google.com/store/apps/details?id=com.azure.authenticator
https://apps.apple.com/us/app/microsoft-authenticator/id983156458

パスワードレス認証では、従来の認証方式とは異なり生体情報 / PIN　はユーザーが所持するデバイスに保管されます。ユーザがデバイス上で生体認証あるいは　PIN　で秘密鍵のロックを解除し、認証サーバーが発行する nonce (1 回だけ使用できるランダムな任意の数)　に署名することで公開鍵/秘密鍵の検証が行われ認証処理が実行されます。

1. Azure AD のログイン画面に自分のユーザー名を入力
2. Azure AD でユーザーがパスワードレス認証に対応していることが検出されフロー開始
3. Azure AD から Microsoft Authenticator に通知送信
4. ユーザデバイス上の Microsoft Authenticator でプッシュ通知受信
5. Microsoft Authenticator から Azure AD が呼び出され、プレゼンス証明のチャレンジと nonce 受信
6. ユーザーの生体認証または PIN を入力して秘密キーのロックを解除し、チャレンジ完了
7. nonce は秘密キーで署名され、Azure AD に返送
8. Azure AD で公開キーと秘密キーの検証が実行され、認証トークン発行
![図4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2261868/bb318c81-3ee8-22ca-dac0-dd908f46e337.png)

#パスワードレス認証のメリット
高いセキュリティと利便性を両立するパスワードレス認証のメリットをまとめました。

- セキュリティリスクの軽減
   
    パスワードレス認証では、生体情報 / PIN がユーザデバイス上に保持されているため、攻撃者から見ると非常に攻撃しにくい仕組みになっています。従来の認証で行っていたユーザが入力したパスワードをサーバに送信し突合することをなくすことでパスワード詐取のリスクを軽減できます。

- 優れたユーザエクスペリエンス

    パスワードを入力する事無く、touchID や FaceID のような生体情報の提示や PIN コードの入力だけでシステム利用が可能となるため、利便性が向上します。

- パスワードに関するコスト低減

    複雑なパスワードの記憶/入力や定期的な変更にかかるユーザ負担、またパスワード忘失時のヘルプデスクによるリセット対応などの運用コストを低減できます。

#まとめ
Azure AD、Microsoft アカウントだけでも、すでに全世界で２億ユーザ以上がパスワードレス認証を利用しています。セキュリティのためにユーザ操作性を犠牲にする時代はもう終わりました。まずは検証用テナントで試してみませんか？

次回の記事では「設定してみよう、Azure ADでのパスワードレス認証」を掲載する予定です。

投稿内容は私個人の意見であり、所属企業・部門とは関係ありません。