サイト内の現在位置

パスワードに代わる認証方式として注目される「パスキー」について

NECセキュリティブログ

2022年12月16日

NECサイバーセキュリティ戦略統括部 セキュリティ技術センター サイバーインテリジェンスグループの郡司です。今週のセキュリティブログでは、パスワードに代わる認証方式として注目される「パスキー」に関する話題をお届けします。

はじめに

ここ最近、ランサムウェア(データを暗号化して使用できないようにし、そのデータの復元に対して身代金を要求する不正プログラム)が非常に流行しています。警察庁が2022年9月15日に発表したレポート「令和4年上半期におけるサイバー空間をめぐる脅威の情勢等について」 PDF[1]によると、令和4年上半期に都道府県警察から警察庁に報告のあったランサムウェア被害の件数は114件で、令和2年下半期以降、右肩上がりで増加しているそうです。またランサムウェアの感染経路は「VPN機器からの侵入」が68%、「リモートデスクトップからの侵入」が15%、両者を合わせると8割以上が「テレワークなどで組織の外から組織内にアクセスするための仕組み」が狙われたものになります。
またレポートではランサムウェアの攻撃者がVPN機器やリモートデスクトップに侵入した手段として主に「機器等の脆弱性」「強度の弱い認証情報」の二つを挙げています。脆弱性を突いた侵入については機器等のベンダーから脆弱性の修正プログラムが公開されたらすぐに適用するといった、いわゆるパッチマネジメント(脆弱性管理とも呼ばれます)をすることでほとんどの場合防ぐことができますが、強度の弱い認証情報、つまりパスワードによる認証については様々な問題があり、その弱さを突かれて侵入されてしまうことがあります。今回の記事ではパスワードによる認証の問題点と、パスワードに代わる認証方式として最近注目されている「パスキー」についてご紹介したいと思います。

認証の3つのステップ

パスワードの話に入る前に、少しだけ「認証」についての話をしたいと思います。何らかのシステムやサービスを利用する際に行われる認証は、厳密にいうと「識別」「認証」「認可」の三つのステップに分けて考えることができます。まず「識別」はそのシステムやサービスを使おうとしている人が誰なのか、というのを確認するステップです。たとえばログイン名やメールアドレスなどを入力するのがそれに当たります。その次の「認証」は、識別された人が本当に本人なのかを確認するステップです。たとえばパスワードを入力するのがそれに当たります。最後の「認可」は、利用者が誰で、確かに本人だと確認できたので、その人がそのシステムやサービスでやってよいことを許可される、というステップです。まとめますと表1のようになります。

表 1 認証の3つのステップ

  目的 手段
識別 利用しようとしている人を特定する ユーザー名、メールアドレスなど
認証 利用しようとしている人が本人か確認する パスワードなど
認可 利用者に権限を与える 一般ユーザー、管理者権限など

話が若干余談になりますが、「識別」に使われる情報(ユーザー名、メールアドレスなど)は一般には公開情報であることが多いと思いますが、これ自体もなるべく公開しないようにしたほうがよい、という話もあります。たとえば管理者権限のユーザー名として「Administrator」や「root」という名前がよく使われますが、これ自体も別の名前に変更してしまうというものです。またサービス登録用のメールアドレスを本来のメールアドレスとは別にサービスごとに生成して登録し、本来のメールアドレスをなるべく公開しないようにするようなサービスもあります new window[2]
「認証」についても単一の方式ではなく複数の方式を組み合わせたほうが良いとされています。認証の方式は主に次の表2で示す3種類があり、このうちの2つを組み合わせて使われることが多いようです。

表 2 認証の3つの方式

認証の確認方式 手段
本人しか知らないこと パスワードなど
本人しか持っていないもの IDカード、ハードウェアトークン、スマートフォンなど
本人自身の生体情報 顔、指紋、静脈、虹彩、網膜など

パスワードの問題点

それでは、ようやくパスワードの話題に入ります。先ほども述べた通り、パスワードは「本人しか知らないはず」ということを前提としたユーザー認証の方式となります。しかし、この前提が成り立たないことがしばしば起こり、不正アクセスが起こる原因となっています。いくつか例を見てみましょう。
まずは単純なパスワードを利用している場合です。よく使用されるパスワードを公開しているサイト new window[3]などもあるとおり、攻撃者はまずこうしたよく使われるパスワードを試しに入力してみてログインできるかどうかを確認します。覚えるのが面倒で安直なパスワードを設定してしまうと、簡単に不正ログインされてしまうことがあります。暗証番号などに生年月日を使うと良くないのも同じ理由ですね。
次に、同じパスワードを複数のサービスで使いまわしている場合です。パスワードは記憶しておかないといけませんので、サービスごとに異なるパスワードを設定すると覚えきれないため、つい同じパスワードを使いまわしてしまうのはよくあることではないでしょうか。しかし、あるサービスでのユーザー名とパスワードがひとたび漏えいしてしまうと、そのサービスで不正アクセスされるだけでなく、パスワードを使いまわしている他のサービスにも不正アクセスを許してしまい、被害が拡大してしまいます。
最後に、パスワードを盗まれてしまう場合です。パスワードを盗む方法としては、「フィッシング」という手口 new window[4]などが有名です。本物そっくりの偽サイトを作って、偽のお知らせのメールなどでその偽サイトに誘導し、そこでユーザー名とパスワードを入力すると、その情報をもとに攻撃者が本物のサイトにログインしてしまうという手口です。
そうしたパスワードの欠点を補うツールとしてパスワードマネージャー(パスワード管理ツール、パスワード管理システムなどとも呼ばれます)があります。パスワードマネージャーは各サービスの認証情報(ログイン名とパスワードなど)を一元管理してくれるツールで、OSなどに標準で提供されるもの(たとえばAppleのiCloud キーチェーン new window[5]など)のほか、1password new window[6]などのサードパーティ製品もあります。パスワードマネージャーを使えばサービスごとに複雑なパスワードを自動的に設定してくれたり、サービス利用時に自動的に入力もしてくれますので、パスワードを推測されたり、パスワードを使いまわしたり、偽のサイトにパスワードを入力してしまったりといったことを防ぐことが出来ます。しかし、サービス側でパスワードが漏えいして盗まれた場合、そのサービスに不正アクセスされてしまうという問題は依然として残ることには注意が必要です。

パスワードの問題点を解消するパスキー

そんなパスワードの欠点を解消するものとして「パスキー」 new window[7]が最近注目されています。パスキーは「FIDOアライアンス」という認証技術の標準化を行うことを目的とした業界団体が策定した新しい認証方式です。正式な名称は「マルチデバイス対応FIDO認証資格情報」です。
パスキーの詳細に入る前に、話をまたパスワードに戻します。パスワードによる認証方式の簡単な仕組みを説明しますと、サービスの利用開始時にパスワードを決めておいて、サービス提供者側と利用者側で同じパスワードを覚えておきます(本筋ではないので今回は説明を省略しますが、厳密にはサービス提供者側は多くの場合パスワードそのものではなくハッシュ化して保存しています)。次にサービス利用者はサービスの利用時に利用者本人しか知らないパスワードをサービス提供者側に伝えます。そして、サービス提供者側は保存しているパスワードとそれを比較して検証し、合っていれば利用者を本人と認め、サービスの利用を許可します。なのでサービス提供者側、サービス利用者側のいずれかからパスワードが漏えいしてしまうと、他人が自分のアカウントになりすまして利用できてしまいます。暗号に例えますと、パスワードが共通鍵暗号の共通鍵の役割をしているということになります。
続いてパスキーによる認証方式の説明になります。パスキーはパスワードとは異なり、公開鍵と秘密鍵のペアからなります。言葉での説明ではなかなかイメージが湧かないと思いますので、FIDOアライアンスの資料 PDF[8]から図を引用します。

図 1 マルチデバイス対応FIDO認証資格情報(パスキー)の仕組み

この図の鍵Aが公開鍵、鍵Bおよび鍵Cが秘密鍵です。サービス利用者はサービスの利用開始時に公開鍵と秘密鍵のペアを生成し、サービス提供者側には公開鍵である鍵Aを登録しておきます。そしてその公開鍵と対になる秘密鍵はデバイスにそのまま保存するのではなく、デバイス自体の何らかの保護機能を適用して、そのデバイスでしか利用できないように保護します。なので同じ利用者が複数のデバイスを持っている場合(スマートフォンとパソコンなど)、秘密鍵はそれぞれ異なります(図では鍵B、鍵C)。サービス利用者がサービスを利用する際は、まずサービス提供者側が公開鍵を使って本人確認の問い合わせを行い、その問い合わせに対してサービス利用者は秘密鍵を使って応答を行います(こちらも本筋ではないので説明を省略しますが、このやり取りをチャレンジレスポンスと呼びます)。
サービス提供者側とサービス利用者側で異なる鍵を持つことになりますので、仮にサービス提供者側の公開鍵(鍵A)が漏えいしても、秘密鍵(鍵B、鍵C)がない限りサービスにはログインできませんし、秘密鍵はそのデバイスでしか使えないように保護されていますので、仮に外部から侵入して秘密鍵を盗み出したとしても、他のデバイスで利用することはできません。なおデバイスごと盗まれたり紛失したりした場合は、デバイス自体の保護機能(顔認証、指紋認証、PINコードによる本人確認、遠隔消去など)で秘密鍵を保護する必要があります。また一方のデバイスで生成したパスキーをもう一方のデバイスに同期する(別のデバイスに紐づいた秘密鍵を生成する)仕組みが別途必要になりますが、先ほど出てきたパスワードマネージャーの機能を拡張することでこれを実現しています(例に出したAppleのiCloud キーチェーンはすでにパスキーに対応済み、1Passwordも2023年の初頭には対応予定です)。

パスキーを使った実際のログイン

それでは実際にパスキーを使ったログインを試してみましょう。とはいえ残念ながらパスキーに対応したサービスは現状ではまだほとんどなく、対応していたとしても日本ではまだ利用できない、といった状況です。そのため、さまざまな認証方式のテストを行うことが出来るWebAuthnのサイト new window[9]を利用して、パスキーによるログインを実施してみたいと思います。
まずはパスキーに対応したOSのWebブラウザにてWebAuthnのサイト new windowhttps://webauthn.io/ にアクセスします。ここではiOS 16を搭載したiPhoneの標準WebブラウザであるSafariを使用しています。

図 2 WebAuthnのサイトにアクセス

次に、「Advanced Settings」をタップすると詳細な設定を行うことができます。ここでは「Discoverable Credential」を「Required」に設定することで、パスキーによる認証を試すことができるようになります。

図 3 Advanced SettingsにてDiscoverable CredentialをRequiredに設定

それではまずアカウントを作成してみましょう。example_usernameのところに適当な名前(ここでは「test」としました)を入力し、「Register」をタップすると、iCloud キーチェーンがパスキーを生成して保存してよいか聞いてきますので「続ける」をタップします。するとiPhoneの顔認証や指紋認証(設定していない場合はPINコード)ののち、パスキーの生成が行われます。

図 4 パスキーを生成してiCloudキーチェーンに保存

これでパスキーの公開鍵はWebAuthnのサイトに保存され(テストサイトなので一時的に保存されるだけで、ログインのテストが終わると消えます)、秘密鍵はiPhone(と、iCloudキーチェーン)に保存された状態になります。
それでは実際にパスキーを利用してログインしてみましょう。「Authentication」をタップしてみてください。パスキーを使用してサインインしますかと聞かれますので、「続ける」をタップします。するとiPhoneの顔認証や指紋認証(設定していない場合はPINコード)ののち、パスキーを利用したログインが行われます。

図 5 iCloudキーチェーンに保存されたパスキーを使用してサインイン

ログイン完了の画面が表示されて、無事パスキーによるログインを行うことが出来ました。

図 6 パスキーによるログイン成功

ということで、パスワードでもパスキーでもiCloudキーチェーンが生成や保存、利用などを管理してくれるため、ユーザー側から見るとどちらもほとんど違いを感じずにサービスへのログインを行うことができることが分かりました。

おわりに

今回の記事ではパスワードの問題点と、それを解消するパスキーについてご紹介しました。またパスキーを使ったログインのテストについても実施してみました。まだ日本では対応するサービスがほとんどないのが実情です。パスワードに代わる認証方式としてパスキーが普及するのかどうか注目していきたいと思います。パスキーを利用すればセキュリティの向上が期待できますので、今後利用できるサービスが増えてきた場合は積極的に利用してみてはいかがでしょうか。

参考文献

執筆者プロフィール

郡司 啓(ぐんじ さとし)
セキュリティ技術センター サイバーインテリジェンスグループ

おもに脅威情報を収集・分析し、それを必要とする人に届ける、といった事をしています。主な資格はCISSP、情報セキュリティスペシャリストなど。

執筆者の他の記事を読む

アクセスランキング