top of page
Blog article

Blog article

パスキー(Passkeys)ってなんだろう?(前編)

昨今、IT関連のニュースなどで「パスキー」「Passkeys」などといった単語を見かけるようになりました。セキュリティ界隈では割と盛り上がっている話なのですが、なかなか一般の方にはよくわからない話なのではないかと思います。実は私自身も正直全貌を把握しているとは言いがたいのですが、自分の中でのまとめの意味も込めて、解説してみようかと思います。


■パスキーとは

パスキーとは、パスワードに代わる新しいWEB認証技術の総称です。実は「パスキー」という言葉自体の示す範囲が現時点では複数あってわかりづらいのですが、過去に「WebAuthn」と呼ばれていたものを「パスキー」と呼称するようになった、というのが、広い意味での「パスキー」となります。まずはその広い意味でのパスキー(=WebAuthn)について、こちらは実際に体験してもらった方が早いと思うので、体験デモサイトをご紹介しつつ、動作を説明しようと思います。


「WebAuthn.io」


こちらのサイトで、WebAuthnを使ったユーザー登録、ユーザーの認証が体験できます。気軽に試していってみましょう。


■「広い意味での」パスキーを試す(WebAuthn)

まずは登録です。ユーザー名を入力して、「Register」をクリックすると、登録ポップアップが表示されます。この辺りから、ブラウザやOS、更にはOSのログイン(ログオン)状態などによって動きが色々変わりますので、あくまで一例としてご覧ください。私はWindows10、Chrome(最新)で操作していて、Windowsへはマイクロソフトアカウントを使ってログオンしています。

私の場合は3つほど選択肢が出てきました。

  1. 外部セキュリティキーまたは内蔵センサー FIDO2のセキュリティキー、または(Windowsの場合)Windows Helloでの認証となります。

  2. スマートフォン名(別のChromeでログイン済みのデバイス・「3」で接続済みのAndroidデバイス) この動作検証は主に仕事用のGoogleアカウントでログインしており、通常使用しているスマートフォンのみ仕事用プロファイルの設定をしています。そのためと思われますが、デフォルトでスマートフォンの名前が表示されていました。こちらを選択すると、「3」の動作をQRコード読み取り無しで行う形になります。

  3. 別のデバイス 別のスマートフォンを外部セキュリティキーとして用いる方法です。画面上のQRコードをカメラで読み取ってスマートフォン側のロック画面認証で認証します。 使用するには、スマートフォン側でもこの機能に対応している必要があります。私の方で直接確認出来ているのはiPadOS16、Android10以降です。なお、OSが対応していても、カメラアプリによっては認証の中継を出来ない場合もありますので、うまく行かない場合はカメラアプリをいくつか試してみるのも良いと思います。


「1」がいわゆるFIDO2認証、「2」と「3」はFIDO2認証の中のHybrid認証(旧称caBLE)と呼ばれるものにあたります。Hybrid認証については余談で説明します。


ここではとりあえずFIDO2認証の中の一つ、Windows HelloのPINで登録してみます(事前にWindowsの設定→「アカウント」→「サインインオプション」からPINの設定が必要です)。これは以前「パスワードとPINの違い」の記事で説明した、PINの説明部分の実際の動きにあたります。

「外部セキュリティキーまたは内蔵センサー」をクリックします。

PIN入力画面が表示されるので、設定してあるPINを入力します。

登録が完了しました!


次に認証を試します。ユーザー名は登録時のものが設定されていると思いますので、そのまま「Authenticate」をクリックします。

PINを入力します。

認証に成功しました!


これらの登録・認証時のPINがサーバー側に送信されていないのは、「パスワードとPINの違い」で説明した通りです。実際には、TPM(セキュリティチップ)によって保護された認証情報を送信しており、ネットワーク上での攻撃への耐性はパスワード認証よりも遥かに高いものとなっています。

(「パスワードとPINの違い」より引用)


今回、例としてPINでの登録・認証を行ってみましたが、登録時に複数の選択肢があった通り、「パスキー」は様々な認証方法に対応しています。

  • OSが対応している各種認証(PIN認証・指紋認証・顔認証)

  • 外部セキュリティキー認証(セキュリティキー側のPIN認証・指紋認証)

  • スマートフォンによる認証(スマートフォン側のPIN認証・指紋認証・顔認証)

これらの認証は全て多要素認証の要件を満たしており、また、PINの例と同様、認証要素(PINそのもの、指紋の情報、など)がネットワーク上を流れる事もないため、十分に強力な認証の仕組みとして成り立っています。

(クリックで拡大します)


ここまで説明してきたこれらの仕組みは、実は今まで「WebAuthn」や「FIDO2」といった名前で実装されてきた技術と違いはありません。最初に「パスキー」という言葉には複数の意味がある、と説明しましたが、ここまでの説明はあくまで「広い意味での」パスキーの説明になります。次回、「パスキー」という言葉の「狭い意味」、OSベンダー(Apple、Google、Microsoft)が実装を進めるパスキーの肝となる部分の説明をしようかと思います。


■余談①:フィッシング耐性

元々、「パスキー」という用語がなかった頃からWebAuthn/FIDO2で実装されていた仕組みの一つに、フィッシング耐性と呼ばれるものがあります。「フィッシング詐欺」という言葉を聞いた事がある方は多いと思いますが、簡単に言うと「URLがよく似た偽物サイトに誘導して認証情報を入力させ、アカウントや情報、金銭などを奪う」という行為をフィッシングと言います。


WebAuthnは、そういったフィッシング行為に対する耐性があります。パスワードはユーザーが手で入力するため、URL(ドメイン)が異なる詐欺サイトでも不注意でパスワードを入力してしまって、認証要素(ここではパスワード)を悪意のある第三者に渡してしまう事があります。しかし、WebAuthnでは必ず機械的にドメイン名の確認をして、一致するサイトに対してのみ認証情報(結果)を渡す仕組みになっています。第三者に対して、認証要素はもちろんですが、認証情報も渡してしまう事はありません。

現在、フィッシングによる被害は減る様子を見せませんが、パスキーが普及する事によって、偽サイトによるアカウントの乗っ取りなどはかなり抑え込めるようになると思われます。


■余談②:Hybrid認証(旧称:caBLE)

Hybrid認証とは、上でも軽く説明しましたが、スマートフォンなどの別のデバイスを外部セキュリティキーとして使用する仕組みです。Google Chromeの場合、同じGoogleアカウントでログインしているAndroidデバイスでの認証と、QRコードを使ってのデバイス認証があります。旧称に「BLE」というワードが入っている通り、どちらの方法も最終的にはBLE(Bluetooth Low Energy)でデバイス同士を接続し、認証情報のやり取りを行います。同一アカウントのAndroidデバイス認証はChromeのバージョン94(2021/09/21)、QRコードを使ったHybrid認証はバージョン100(2022/03/29)でサポートされました。後者はAndroidデバイスだけでなく、iPhoneなどの他社製品でも最新アップデートを適用する事で利用可能です。

スマートフォンでの認証というとSMSによるワンタイムパスワード認証などが多く見られますが、SMS認証の場合、スマートフォンが遠隔地にあってもワンタイムパスワードが届くため、何らかの形でSMSを攻撃者が確認出来る状態になると認証を突破されてしまう、という弱点があります。それに対してこのHybrid認証は、認証を行おうとしているデバイスと実際に認証を行うスマートフォンがBLEで近距離通信を行うため、確実に認証要素の「所持」を満たす事が出来て、更にスマートフォン側のOSの認証機構によって「記憶」または「生体」の認証要素も確認する事から、確実な多要素認証が出来るようになっています。



後編へ続きます。

bottom of page