パスワードは危険だ。覚えにくく漏えいしやすい。AppleやGoogle、Microsoftはパスワードに代わる認証方法「パスキー」に移行しようとしている。パスキーは何が優れているのだろうか。パスワードや多要素認証とは何が違うだろうか。
IT業界はパスワードを廃止し、より優れた認証方式へと移行しようとしている。パスワードの安全性は十分ではないからだ。パスワードに代わる認証方法として、AppleやGoogle、Microsoftは「パスキー」を選択した。パスキーはなぜパスワードよりも「強い」のだろうか。
パスキーは従来のパスワードとはそもそも何が違うのだろうか。
パスワード管理ソリューションを提供する1Passwordは、数回に分けてパスキーと従来のソリューションの違いを解説した。前編ではパスキーとパスワードの違い、パスキーと多要素認証の違いを紹介しよう。
Webアプリケーションにサインインする場合を考えてみよう。パスワードを使う場合、アカウント作成時にまず短い文字列を決めておく。これがパスワードだ。サインイン時に文字列を入力して、これが元の文字列と一致すればアクセスが可能になる。
パスキーでは生体認証やローカルデバイスのパスワードを使用してWebアプリケーションのアカウントを保護する。「何らかの情報」がアカウントを保護して、サインイン時にその情報をWebアプリケーションに提供するという点ではパスワードもパスキーも変わらない。
パスワードとパスキーの違いは「何らかの情報」をどのように保護するかだ。
パスワードでは何らかの情報を共有秘密にしている。入力画面でアスタリスクなどを使って内容を隠していても、平文で入力してWebアプリケーションに送信しなければならない。オンラインアカウントを作成する際、Webアプリケーション側は何らかのアルゴリズムを使って、その平文をハッシュへと暗号化する。これをWebアプリケーション側が保持している。
サインイン時にWebサイトは入力されたパスワードに対して同じ暗号化を実行する。両方のハッシュが一致すれば、ログインできる。
パスキーの手順は異なる。サインインのためにパスワードは利用せず、「公開鍵暗号」を使用する。パスキーは公開鍵暗号でいう「公開鍵」と「秘密鍵」のペアだ。新規アカウントを作成すると、公開鍵がWebアプリケーションに保存される。つまり共有される。しかし、秘密鍵はユーザーのデバイスから外部に出力されない。
パスキーを使ったサインインの仕組みをもう少しみていこう。まず、ユーザーのデバイスがWebアプリケーションにリクエストを送信する。Webアプリケーションは対応する秘密鍵でのみ解決(または署名)できる質問をデバイスに返す。デバイスは内部に保存された秘密鍵を使って質問に答え、Webアプリケーションが回答を検証する。秘密鍵がないならWebアプリケーションにはアクセスできない。
パスワードとパスキーの根本的な違いは、真の秘密があるかどうかだ。パスワードの場合、オンラインアカウントにサインインするために必要な情報をWebサイトが全て共有している。それに対して、パスキーにはWebサイトが知らない固有の秘密がある。
パスキーがパスワードよりも安全な理由は主に2つある。
まずパスキーはパスワードと比較してかなり複雑な情報を持っているため、犯罪者が推測することはほぼできない。短くて推測が可能なパスワードとは違う。
Webアプリケーションが攻撃された場合にもパスキーは安全だ。あるサービスでデータが漏えいしたとしよう。パスワードは漏れてしまうだろう。パスキーの公開鍵も漏れてしまうだろうが、秘密鍵はユーザーのデバイスに入ったままだ。つまり情報が漏えいしても攻撃者は身動きが取れない。
フィッシング攻撃で取得したリ、ソーシャルエンジニアリングでだまし取ったりすることはできるだろうか。パスワードであれば、転送中に情報を盗んだり、共有したりするようにユーザーをだますことが可能だった。パスキーの場合、秘密鍵はデバイスから外に出ることはないので、転送中に盗むことはできない。ユーザーは秘密鍵をそもそも知らないのでだまされても問題はない。
パスワードの安全性を高める仕組みとして、多要素認証という技術がある。これらの技術とパスキーは何が違うのだろうか。
パスキーと多要素認証の違いは主に2つある。
まず、パスワードの有無だ。パスキーはパスワードレスであり、パスワードに取って代わるように設計されている。多要素認証は異なる。パスワードを置き換えるのではなく、パスワードで保護されたアカウントのセキュリティを強化するためのステップ(要素)を追加する。多くの多要素認証では、従来のパスワードを最初に使う。
もう一つの違いは、攻撃の受けやすさだ。パスキーのサインインは比較的自動的で、ユーザーが何かを入力する必要がない。パスキーには追加の手順やコードがないため、盗難やフィッシング、傍受の恐れがなく、本質的により安全だ。
パスキーと多要素認証には共通点もある。どちらもパスワードだけを使っていたアカウント保護の仕組みを改善した。
パスワードの課題は「再生可能性」だ。つまり、パスワードのデータを傍受したり、再利用したりすることが容易にできる。攻撃者がパスワードを一度盗んだ場合、何度でも関連するアカウントにアクセスできる。
多要素認証は再生可能性の課題を解決できる。多要素認証でワンタイムパスワードを使う場合を考えると、再生可能性がほぼないことが分かる。多くの場合、ワンタイムパスワードは一定時間後に無効になるからだ。ワンタイムパスワードが再利用される危険性は低く、アカウントやデータの保護に役立つ。パスキーも再生可能性の問題を解決した。これはパスワードの比較で紹介した通りだ。
生体情報やデバイスのパスコードを前提にしてパスキーを使う場合、パスキーを保持するデバイスをユーザーが所有しており、ロックを解除できることが証明される。これは多要素認証と同じメリットだ。
だが、公開鍵と秘密鍵で成り立っている点でパスキーは多要素認証よりも優れている。秘密鍵はユーザーのデバイスから外に出ることがないため、紛失や傍受、盗難はもちろん、忘れてしまうこともない。
パスワードやワンタイムパスワードをやり取りする必要はなく、素早く認証が完了する。多要素認証はパスワードを入力したり、追加の情報を提供したりする時間や手間が必要だ。
これまで多要素認証は安全だとされてきた。だが攻撃者はSIMスワップ攻撃やパーソン・イン・ザ・ミドル攻撃、中間者攻撃、ソーシャルエンジニアリング攻撃などを編み出してきた。もちろん、パスキーが利用する公開鍵暗号方式が絶対的に安全だとはいえない。だが、現時点では多要素認証よりも劣っているとは言えないだろう。
後編ではパスキーにまつわる「7つの誤解」を紹介する。
Copyright © ITmedia, Inc. All Rights Reserved.
製品カタログや技術資料、導入事例など、IT導入の課題解決に役立つ資料を簡単に入手できます。