thumbnail

【パスワードレス認証】iOS16で発表されたpasskeyとは?

2022/09/15

先日、iOS16がリリースされました。

ロック画面の自由度が増したり、集中モードが実装されたりなど色々な機能が追加されましたが、セキュリティに関しても大きなアップデートが入りました。

中でもpasskeyやロックダウンモードは注目の機能ですが、今回は前々からパスワードレス認証として話題にはなっていたpasskeyに関してその仕組みをざっくりと紹介したいと思います。

passkeyとは?

まずはApple公式の説明を見てみます。

パスキーは、公開鍵暗号化を用いる WebAuthentication ("WebAuthn") 標準に則って開発されています。アカウントの登録中に、オペレーティングシステムは一意の暗号化鍵のペアを作成し、該当する App や Web サイトのアカウントと紐付けます。これらの鍵は、アカウントごとにデバイスによって安全かつ一意に生成されます。

鍵ペアの片方が公開鍵で、これはサーバ上に保管されます。この公開鍵はシークレット (秘密) ではありません。もう片方が秘密鍵で、実際にサインインする際にはこれが必要です。秘密鍵が何かサーバ側が知ることはありません。Touch ID または Face ID に対応した Apple 製デバイスでは、Touch ID や Face ID でパスキーの利用を承認でき、それを受けて、App や Web サイトに対してユーザの本人確認が行われます。共有のシークレットが転送されることもなく、サーバが秘密鍵を保護する必要もありません。そうしたわけで、パスキーは非常に強力かつ使いやすい、フィッシング詐欺対策に秀でた資格情報になるのです。また、プラットフォームベンダーが FIDO Alliance の枠組の中で連携し、パスキーの実装をクラスプラットフォーム対応にし、できるだけ多くのデバイスで使えるよう努めています。

引用:Apple公式

要点をまとめると以下のような感じでしょうか

  • 公開鍵、秘密鍵のキーペアを端末に保存されている生体情報から生成する
  • サービス提供側は公開鍵をアカウントと紐付けて保存
  • 本人確認は公開鍵認証方式を利用して行う

passkeyを利用したsign upsign inをそれぞれ図にすると以下のようになります(図が間違っていたらごめんなさい)。

sign up

passkey-sign-up

  1. 端末側で生体情報をもとに秘密鍵と公開鍵を生成
  2. ユーザーIDと公開鍵をサービス提供側へ渡す
  3. サービス側はユーザーIDと公開鍵を紐付けて保存する
  4. 端末側はアカウントサービス(ドメイン?アプリID?)と紐付けて秘密鍵を内部に保存する

sign in

passkey-sign-in

  1. 端末側からユーザーIDと秘密鍵で暗号化した電子署名をサービス側へ渡す
  2. サービス側はユーザーIDから公開鍵を探し出し、電子署名の照合を行う

メリット・デメリット

仕組みはだいたい理解できましたが、二段階認証などと比べたときのメリットは何があるでしょうか? メリットを考える上で重要なpasskeyの特徴は以下の2点だと思われます。

  • キーペアは生体情報をもとに生成する
  • キーペアはサービスアカウントごとに一意

二段階認証を設定する一番の目的は本人の端末からログインが行われているのかを確認することです。

passkeyでは生体情報をもとにした鍵認証を行うので、二段階認証を行わずとも本人の端末から送られていることが保証されます。

これにより二段階認証の手間を省くことができるのは大きなメリットの一つといえます。

また、二段階認証はあくまで本人確認に主眼をおいた手法であり、フィッシングの対策には一定の効果しかありません(本人がフィッシングサイトと気づかなければ、パスワードも二段階認証パスワードも一緒に送信してしまうため)。

passkeyでは内部でアカウントごとに一意のキーペアを管理しているため、フィッシングサイトに使用するキーペアは本来のサイトとは異なり、認証が通ることはありません。

フィッシングの被害は昔から変わらず多いので、これが対策できるとなるとpasskeyの恩恵はかなりのものになると思います(アカウント乗っ取りなどもなくなるかも?)。

以上のように、認証の手間もかからずセキュリティレベルも高いので、優れた認証方法ではありますが、以下のデメリットも存在します。

技術的にまだ出たてなので、普及に時間がかかる こないだのiOS16でリリースされたばかりなので、対応できていないサービスがほとんどです。 今後少しづつ普及していくとは思いますが、まだまだ対応には時間がかかると思われます。

他端末からの認証がやりにくい 仕組み上、他の端末から気軽にログインすることは難しいです。 一応、(AirDropなどを使用して)passkeyを共有することはできるので、一つの端末からしかログイン出来ないわけではないです。

passkeyはAppleだけ?

Appleの公式でも述べられているように今回のpasskeyの実装はFIDO Allianceの仕様に則ったものになります。

FIDO Allianceは生体認証などを利用した新しいオンライン認証技術の標準化を目指して2012年7月に発足した非営利の標準化団体、業界団体です。

Apple、Google、MicrosoftはこのFIDO Allianceに則ったパスワードレス認証のサポート拡大をすでに公表しています。

今回はAppleが先駆けて対応しましたが、Google、Microsoftも今後はpasskeyのようなパスワードレス認証を順次対応していく可能性は高いので、期待して待ちましょう😎

author picture

Mitsuru Takahashi

京都市内にてフリーランスエンジニアとして活動しています。

detail

Profile

author picture

Mitsuru Takahashi

京都市内にてフリーランスエンジニアとして活動しています。

detail

© 2022 mitsuru takahashi