パスキーは、パスワードを使わずに、安全に本人認証を行う仕組みで、ユーザー、サイト運営者の双方に大きなメリットがあるということを前編でご紹介した。最も大きな効果があるのは、フィッシング詐欺を根絶することができることだ。
認証の国際標準化を推進する業界団体「FIDOアライアンス」(ファイド、
https://fidoalliance.org/)が、2018年にパスワードレス認証の規格「FIDO2」を制定した。この規格に準拠をして、アップル、グーグル、マイクロソフトなどが自社プラットフォームに実装した認証の仕組みが「パスキー」(Passkey)だ。FIDO2が規格名、パスキーはそれに準拠した機能名ということになる。
また、FIDO2は次の2つの規格から成り立っている。
1)WebAuthn(ウェブオースン)
FIDO2によるパスワードレス認証をウェブ上で実現するための規格
2)CTPA(Client to Authenticator Protocol)
デバイスとFIDO認証サーバーの間の通信プロトコル規格。
CTPAの通信プロトコル規格については、パスキーの仕組みとして用意をされるため、関係者はまずFIDO2の規格を理解し、ウェブに実装するエンジニアはWebAuthnまでを理解をしておく必要がある。
このパスキーの原理そのものは、エンジニアでなくてもじゅうぶん理解できるため、エンジニア以外のスタッフも理解をしておくことが望ましい。特に重要なのが、ユーザーに対して「簡単で安全である認証規格」であることを周知することだ。パスキーを導入しても、既存のパスワード認証をすぐに廃止するわけにはいかない。既存ユーザーが混乱をしてしまうからだ。そこで、新規ユーザーについてはパスキー認証のみ、既存ユーザーについてはパスワード認証を認めながらパスキーへの移行を促すというやり方をしなければならない。この併用期間は、セキュリティ的にも難しい時期となるため、早く完全移行することが重要だ。そのためには、ユーザーにパスキーの利便性、安全性を知ってもらう必要がある。
ちなみに、Yahoo!の場合は、2017年4月から新規ユーザーに対して、パスキー(類似のパスワードレス認証)を提供し、2018年から既存ユーザーに対してもパスワードレス認証への移行を促し、現在ではアクティブアカウントのほぼすべてがパスワードレスになっているという。この例から、完全移行には5年ほどかかると見ておいた方がいいかもしれない。
この移行期間は短かいほどよく、それにはマーケティング部門やユーザーサポート部門のスタッフが、パスキーに対して正しく理解をし、ユーザーに正しく伝えられるかが鍵になる。
パスキーが利用している技術は「公開鍵暗号」だ。公開鍵暗号の詳細な原理については、専門書を参考にしていただきたいが、重要なのは閉める専用鍵(公開鍵)と開ける専用鍵(秘密鍵)の2つがあり、公開鍵と秘密鍵は数学的な関連性があり、ペアになっているということだ。
この関連は、素数の掛け算のような方向性のある演算が利用される。例えば、素数の(7、17)を秘密鍵にした場合、公開鍵を7×17=119と求めることは難しくない。しかし、公開鍵119を素因数分解して、秘密鍵(7、17)を求めるのには演算時間がかかる。利用する素数の桁数を十分に大きくすれば、公開鍵から秘密鍵を求めるには最速のコンピューターを使っても数千年、数万年かかることになり、実用的な暗号となる。
秘密鍵は、デバイスの中で生成をして、外には出さずに秘匿をしていく。同時に公開鍵を計算し、これは自由に配布をする。
この準備をしておくと、誰でも暗号化した文書をその人に安全に送れるようになる。
1)文書を送りたい人は、公開されている公開鍵を使って文書を暗号化する(箱に入れて閉める)。
2)この暗号文を当人に送る。盗聴をされても、暗号化されているので、内容は読まれない。
3)受け取った人は、自分が持っている秘密鍵で復号化をする(箱を開ける)。
これで、他人に読まれることなく、文章を送れるようになる。
一方で、閉める鍵と開ける鍵の役割を変えると、電子署名に応用することができる。秘密鍵を持っている人が、人に電子書類を渡す時に、それが間違いなく自分が作成した書類であることを証明したい。公開鍵の仕組みを使って、電子署名を施すことができる。
1)電子署名を送りたい人は、書類のハッシュ値を求める。ハッシュ値とは、文章の要約を一定のアルゴリズムによって数値化したものだ。同じ書類、同じハッシュアルゴリズムを使えば、同じハッシュ値になる。
2)このハッシュ値を秘密鍵で暗号化をし、書類と一緒に送る。
3)受け取った人は、公開されている公開鍵で、ハッシュ値を復号化する。
4)書類のハッシュ値は自分でも計算できるため、これを復号化したハッシュ値と比較をする。
5)2つのハッシュ値が一致をすれば、間違いなく、その秘密鍵の持ち主から送られてきたものだということがわかる。
この電子署名の仕組みを巧みに使って、ログインしようとしているのが本人であることを確認するのがパスキーだ。
パスキーでは、まず事前登録をしておく必要がある。これは今までのアカウント作成に相当するものだ。アカウント登録をすると、デバイス側では秘密鍵が生成され、そこから計算した公開鍵がサイトに送られ保存される。
実際のログイン手順は次のようになる。
1)ユーザーがログインの要求をする。
2)サイト側は「チャレンジコード」と呼ばれるランダムな文字列をユーザーに送信をする。中身はまったく意味がない。
3)チャレンジコードを受け取ったユーザーのデバイスでは、顔認証、指紋認証などを行う。
4)生体認証が通ると、秘密鍵を使ってチャレンジコードを暗号化する。これが電子署名に相当する。
5)サイト側は、電子署名を受け取り、公開鍵で復号化をし、サイト側が送ったチャレンジコードと比較をする。
6)一致をすれば、ログイン要求をしているのは、秘密鍵の持ち主であるということがわかり、本人認証が完了する。
秘密鍵を持っているのは、登録をした当人だけであるので、電子署名があれば間違いなく当人であるということが確認できる。この電子署名の仕組みをうまく利用したのがFIDO2規格であり、この規格に準拠したパスキーという仕組みということになる。
このパスキーがうまいのは、デバイス側で電子署名を生成する時に、生体認証をかませることだ。つまり、生体認証と電子署名による二要素認証になっている。それでいて、ユーザーから見ると、ログインボタンを押し、指を指紋認証センサーに乗せる/顔をカメラに向けるだけでログインができるという簡単さなのだ。
このパスキーでなりすましログインをするのは簡単ではない。まず、対象者のデバイスを盗み、ロック解除をしなければならない。それができても、生体認証のデータを自分のものに更新する必要があり、それにはスマホに設定されたパスコードやパスワードが必要になる。スマホをリセットした場合は、パスキーも消えることになるため、なりすましログインはできない。
また、このパスキーは、AppleID、Googleアカウント、Microsoftアカウントなど、プラットフォームのアカウントごとに管理をされるため、同じアカウントを使っているデバイスであれば、スマートフォンで作成したパスキーを、複数のデバイスで使うことができる。
技術的にはパスワードに相当するものは、チャレンジコードによる電子署名が果たしていることになるが、一般向けには「生体認証を利用するログイン方式」であることをアピールした方がいいかもしれない。その方が、理解しやすく、安心感を持ってもらえるからだ。
ユーザー、サイト双方にメリットしかないパスキーは、今後普及をし標準になっていくことは確実であり、逆にパスキーに対応していないサイトのサービスは不安を持たれるようになる。実際の導入には、サイトの改修時期などとのタイミングも考えなければならないが、検討と研究は今すぐやっておいて損はない。サイト運営を委託している場合は、パスキー対応の導入計画などについて問い合わせをし、確認をしておくことをお勧めする。パスワードの時代が終わり、パスキーの時代になることは確実だ。(執筆:牧野 武文氏)
図1:公開鍵暗号の仕組み。送信者は誰でも入手ができる公開鍵で暗号化をし、受信者は自分しか持っていない秘密鍵で復号化をする。
図2:電子署名の仕組み。送信者は、書類のハッシュ値(要約値)を、自分しか持っていない秘密鍵で暗号化をし、書類とともに送信する。受信者は、ハッシュ値を公開鍵で復号化をし、書類のハッシュ値と比較をする。一致をすれば、送信したのは秘密鍵を持っている人だということがわかり、電子署名としての役割を果たすことになる。
図3:パスキーは電子署名と生体認証を組み合わせる。生体認証が通ると、電子署名が送られる仕組み。電子署名と生体認証の二要素認証になっているため、安全度は非常に高い。それでいて、ユーザー側はボタンを押すだけでログインができる。