導入
こんにちは!
株式会社BTMでエンジニアをしている島谷です。
突然ですが、パスキー(Passkey)、流行っていますよね。
近年、パスワードに代わる認証方法として多くのサービスで導入されるようになりました。
NTTドコモ1やメルカリ2といったサービスでは既に導入されています。
今回、パスキーについて調査しましたので、その結果を共有していきます。
まず、従来のパスワード認証やFIDO認証の仕組みや、それぞれの課題を説明したうえで、パスキーについて説明します。
パスワード認証とは
IDとパスワードでアカウントにログインする一般的な方法ですが、パスワードが盗まれると、誰でもそれを使ってアカウントにログインできてしまいます。
この問題を解決すべく、パスワードレスの認証を提供するFIDO認証が登場しました。
FIDO認証とは
FIDOとは「Fast Identity Online」の略です。
FIDO(ファイド)アライアンスとWeb標準化団体のW3Cが共同で規格化した、公開鍵暗号化方式を用いた、パスワードなしでログインする方法です。3
公開鍵暗号化方式とは
一言でいうと、対になる2つの鍵を用意し、片方の鍵でデータを暗号化し、もう一方の鍵で復号化する方法です。
スマートフォンまたはFIDO認証をサポートしている他のデバイスを使用して、アカウントにログインする前、使用者が本人であることを証明します。
そのため、事前にサーバへ端末情報を登録する必要があります。
上図のフローで、FIDOクレデンシャルとして秘密鍵とサイトのメタデータをデバイスに保存し、生成した公開鍵を端末情報としてサーバに登録します。
登録が完了すると、アカウントのログインIDと生体情報を使ってアカウントへログインできるようになります。
そのため、パスワード認証と異なり、パスワードが漏洩するといったリスクを防ぐことができたり、
他にも、攻撃者が偽サイト(フィッシングサイト)にユーザを誘導してIDやパスワードを入力させて情報や金銭等を盗む「フィッシング詐欺」の対策としても有効になります。
また、アカウントのログインの際、パスワードを記憶しておく必要がなくなるため、高齢者や技術に不慣れなユーザにとって、大きな利便性を提供します。
サイトに送信されるデータは秘密鍵によって暗号化されたログインIDと生体認証であり、これらデータの盗聴を防ぐことができます。
しかし、課題もあります。
FIDOクレデンシャルはデバイスに保存するため、デバイスの紛失や機種変更などした場合、FIDO認証ができなくなってしまい、再度新しいデバイスでの登録が必要となります。
そこで登場したのがパスキーになります。
パスキーとは
上記のFIDO認証技術を拡張したものになり、クラウド経由でデバイス間同期できる、FIDOクレデンシャルのことを指します。4
Apple製品であればiCloudキーチェーンを使えば、複数のデバイス間で同期できます。
そのため、仮に機種変更をした場合でも、FIDOクレデンシャルが同期され、新しいデバイスでのFIDO認証が可能になります。
ただし、全てのデバイスで利用できるわけではないです。
パスキーが、比較的新しい技術となり、デバイス間同期ができないものもあります。
現在の対応状況については、以下をご確認ください。
https://passkeys.dev/device-support/
パスキーは、すでにGoogleやAppleといった大手企業によって導入されています。 これらの企業が率先してパスキーの導入を推進することで、業界全体の標準となる可能性があります。
AWS IAMの多要素認証(MFA)にパスキー対応
2024年6月、AWSマネジメントコンソール、IAMユーザでログインする際の多要素認証(MFA)にパスキーが利用可能となりました。5
ということなので、さっそくやってみました。
まず、パスキー利用できるようにするため、AWSマネジメントコンソールにログインします。
IAMユーザの設定、「セキュリティ認証情報」タブで「MFAデバイスの割り当て」を選択します。
以下の画面に遷移するので、デバイス名の入力、およびMFAのデバイスオプションとして、「パスキーまたはセキュリティキー」を選択します。
以下のポップアップが表示され、パスキーの作成方法を選択することができます。
今回は、MFAデバイスとしてスマートフォンを使用するので、「スマートフォン、タブレット、またはセキュリティ キーを使用する」を選択します。
以下のQRコードが表示されるので、手持ちのスマートフォンで読み取ります。
スマートフォンでの操作が完了すると、以下のようにMFAデバイスが登録されていることがわかります。
パスキーに対応しているとはいえ、現状、パスワードなしでログインできるようになっているわけではないです。
サインインを押すと、以下のポップアップが表示されます。 登録したMFAデバイスを使って認証するので、「スマートフォン、タブレット、またはセキュリティ キーを使用する」を選択します。
以下のQRコードが表示されるので、手持ちのスマートフォンで読み取ります。FaceIDや指紋認証、PINコードを使って、ログインすることができます。
ログインできました。
おわりに
パスキーについての理解がだいぶ深まりました。
セキュリティの強化、ユーザビリティの向上など、多くの利点を持つパスキーは、今後ますます普及していくことでしょう。
そうなれば、私たち開発者には、パスキーで認証できるようアプリケーションを実装することが求められます。
そうした要望に応えられるよう、新しい技術を常に先取りしておくことが大切になってきますね!
以上です、最後までご覧いただきありがとうございました。
株式会社BTMではエンジニアの採用をしております。
ご興味がある方はぜひコチラをご覧ください。
-
dアカウント 「パスキー認証」の提供開始について | お知らせ | NTTドコモ
https://www.docomo.ne.jp/info/notice/page/230308_00.html ↩ -
メルカリ、すべてのログインに 生体認証「パスキー」を導入 | 株式会社メルカリ
https://about.mercari.com/press/news/articles/20240129_passkeys/ ↩ -
FIDOとは - FIDO Alliance
https://fidoalliance.org/what-is-fido/?lang=ja ↩ -
FIDO Alliance Passkeys (Passkey Authentication)
https://fidoalliance.org/passkeys/ ↩ -
AWS Identity and Access Management が 2 番目の認証要素としてパスキーのサポートを開始
https://aws.amazon.com/jp/about-aws/whats-new/2024/06/aws-identity-access-management-passkey-authentication-factor/ ↩