見出し画像

No310 パスキーはパスワードを置き換えるのか?

パスキーというものが昨年後半あたりから一部で盛り上がりを見せています。

パスキーは、FIDOという団体がパスワードに代わる本人認証方式として利用を呼びかけている方式です。

今回は、このパスキーとFIDO2という認証方式について解説をします。

パスワードの問題

インターネット上で提供されるサービスでは「ホントに本人なのか?」を確認する必要があります。その多くはIDとパスワードが正しければ本人であるとみなすことになっています。

ですが、現状のID/パスワード方式には様々な課題があり、サービスの提供元も利用者も頭を抱えているのが実態です。

まずパスワードには漏洩するリスクがあります。
サービス提供元がいくらお金をかけたとしても、世の中「絶対安全」はありませんから、漏洩のリスクはゼロにはなりません。

また、利用者側もパスワードを使い回したり、ついつい簡単なパスワードを使ってしまうなど、自ら漏洩リスクを高めてしまう点も困った点です。
サービス毎にパスワードを変えたり、忘れない工夫には労力がかかります。

さらに情報の窃取を狙う犯罪者側の情報共有が進み、多数のIDとパスワードのセットがアングラ市場に出回ってしまっている点も犯罪者によるパスワード突破を容易にしています。

こういった課題は本人確認の手段としてパスワードに頼っていることが最大の原因です。

もし、パスワードなど使わずに済むのであれば、サービスの提供側もサービス利用者側も幸せなのは間違いありません。

パスキーとは?

このようなパスワードの課題は今に始まったことではありません。

ですが、インターネットを利用したネットワークサービスが増えるにつれ、その課題はますます深刻なものとなっています。

今までも、スマホなどを使った多要素認証、同じパスワードは一度しか使えないワンタイムパスワードといった手段は登場していますが、主流のID/パスワード方式を置き換えるには至っていません。

そんな中でパスワードを使わずに本人確認ができる方式の提案と普及を目指す団体があります。

FIDOアライアンスという団体が提唱している、パスキーを使ったFIDO2認証方式がそれです。
FIDOは Fast IDentity Online(オンラインでの高速な本人確認)の略で、2014年には初版であるFIDO認証方式が、2018年にはFIDO2認証方式が定められました。

FIDO2ではパスキーと呼ばれるデータ(後述しますが実態は秘密鍵です)を端末に保管しておき、認証が必要な時にはパスキーを使った計算結果(これも後述しますが実態は電子署名です)を返すことでパスワードを使わずに本人確認ができる方式です。

FIDO2の最大の特徴は、サービス提供側にはパスキーの一部情報(実態は公開鍵)だけが保管されている点です。
サービス提供側にはパスキーそのものが存在しないので絶対に漏洩しない、というわけです。

同様に利用者がフィッシングメール詐欺にひっかかったとしても、パスキーはパスワードのように手入力しないので、パスキーを盗めません。

このFIDO2認証方式は、まだ発展途上ですが、大手のサービス事業者が多数参加していますので、今後の認証方式の最有力候補といえます。

パスキー(FIDO2認証)の概要

上でも少し書きましたが、パスキー(FIDO2認証)は電子署名の仕組みを使って実現しています。

電子署名というのはかなり複雑な仕組みです。
ここでその詳細を書き出すと、それだけでメルマガ数回分になりますので詳細には立ち入りませんが、ポイントはパスキーそのものを渡さずに本人確認ができる点にあります。

具体的には、チャレンジ&レスポンスという方式を使います。

ここで、あれ?チャレンジって聞いたような...と思った方、すごい記憶力です。
このメルマガの287号(2022年12月配信)でチャレンジ&レスポンスについて解説をしています。

 No287 キーレスエントリーの謎
 https://note.com/egao_it/n/n77b2f9c8cf3c

この287号ではクルマのキーに入っている秘密情報(今回のパスキーにあたります)を盗まれない方式として紹介しました。

FIDO2もキーレスエントリもベースとなる考え方はほぼ同じです。

キーレスエントリでの方式

キーレスエントリとFIDO2では、技術的な詳細はかなり違いますが、ベースの考え方はそっくりです。
なので、まずシンプルなキーレスエントリでのチャレンジ&レスポンス方式を解説します。
その後でFIDO2での差異を解説します。

キーレスエントリでは、装置としてクルマ(自動車そのもの)とキー(自動車のキー)が登場します。この両者は無線通信が行えますが、同時に盗聴や傍受も簡単にできることが前提です。
そのため、パスワードを送らずにクルマとキーの組み合わせが正しいことを検証できないといけません。

この前提はFIDO2でも全く同じです。

以下、前述のNo287からの引用です。

チャレンジ&レスポンスでは、クルマ側からチャレンジと呼ぶランダム値(毎回異なる)を渡し、(クルマの)キーは「チャレンジの値+鍵情報の値」を計算して(この値をレスポンスと呼ぶ)返します。
クルマ側はその値を受け取って逆算、つまり「レスポンス-鍵情報」を計算します。
こうすれば、レスポンス-鍵情報=チャレンジになるはずです。
例として、鍵情報が333(実際には数百桁の数値です)、チャレンジが1010(これも同様)の場合の流れを図示します。
 1) (人が)キーのドアロック解除ボタンを押す
 2)(キーが)「ドアロック解除して」とクルマに依頼する
 3)(クルマが)「チャレンジは1010だ」と返す
 4)(キーが)1010+333=1343を計算する
 5)(キーが)「レスポンスは1343だ」と返す。
 6)(クルマが)1343-333=1010を計算し、レスポンスが正しいと判断し、ロックを解除する
なんだか子供だましのようですが、ここでのポイントは鍵情報である333が通信上に一切出てこない点です。
「なんだよそれ。チャレンジとレスポンスを両方とも盗聴すりゃ結局333の鍵情報はバレバレやんか」と思った方、鋭いです。
ここでは、話をわかりやすくするために「足し算」としましたが、実際のチャレンジ&レスポンス方式ではハッシュ関数というかなり複雑な(しかも逆算が非常にしづらい)計算を使います。

No287 キーレスエントリーの謎より引用
https://note.com/egao_it/n/n77b2f9c8cf3c

いかがでしょうか。

キーレスエントリでは、このような手順を取ることで通信内容に鍵情報を含ませないことに成功しました。

では、FIDO2の場合はどうなのでしょうか?

FIDO2での認証方式

キーレスエントリとFIDO2認証では前提に大きな違いがあります。

クルマの中のコンピュータへの侵入はほぼ不可能なのに対して、インターネットで提供されているサービス用のコンピュータには侵入する方法がある、という点です。

クルマはそれ自体が操作する機能を持っています。外部から操作する必要はありません。むしろそんなことできたら危なくて仕方ありません。
ですから、クルマの中に鍵情報を置いたままにしてあっても、外部から侵入して盗まれるリスクはゼロと言えます。

一方で、インターネット上のサーバには管理者用のログイン機能が必ず存在します。システムのメンテナンス、サービスの状況確認、提供サービスのアップデートなど、ログインしないとできない作業がたくさんあるからです。
ということは、犯罪者もログインしようとできます(成功するとは限りませんが)。そんな環境にパスキー(鍵情報)を置いておくのは極めてリスキーです。

この前提を踏まえ、FIDO2はサーバ内にパスキーそのものを置かずに済ませるため、キーレスエントリにひとひねりの工夫をこらしています。

ですが、フツーに考えてサーバ内にパスキーなしで本人確認なんてできそうにありませんよね。
どうやって実現しているのでしょうか?

この答えは電子署名です。
この電子署名はかなり面倒な仕組みで、これまた説明にはメルマガ数回分が必要になりますので詳細には立ち入りません。

ここではサービス提供元にパスキーのカケラ(一部)をサーバ上に置き、それを使って送られてきたデータのチェックができる技術、とお考えください。

パスキー自体は秘密鍵とも呼ばれるもので、これは文字通り秘密にしておき、門外不出とするデータのことです。
そして、上述の通りサービス提供元にはパスキーのカケラを置きます。
これを公開鍵と呼びます。
このカケラを使うと、チャレンジ&レスポンスで返された値がホンモノのパスキー(秘密鍵)で計算したものかどうかのチェックが行えるのです。

秘密鍵(パスキー)は「秘伝のタレのレシピ」で本人だけが持っているもの、公開鍵は「タレの味がレシピ通りかの確認手順」で、サーバに入っているもの、と言えば多少はイメージが湧くでしょうか?

公開鍵ではタレの作り方まではわからないが、レシピ通りの味なのは検証できる、というわけです。

「秘伝のタレのレシピ」を盗みたいと思ってサーバを攻撃したところで、サーバにレシピ(秘密鍵)はありませんから絶対に漏れませんよね。

従来のパスワードの課題の多くがこの方式で解消できます。

サービス提供側にとってはパスワード漏洩の可能性がゼロになりますし、利用者はパスワードを覚える面倒から開放されるというWin-Winな仕組みなのです。

デメリットも...

もちろん、情報セキュリティ対策に100点はありません。

完全に見えるFIDO2認証ですが、デメリットもあります。

最大の問題はスマホやパソコンなどに入っているパスキーを失った時のことです。
特に機器の盗難や故障でパスキーが使えなくなった場合は大変です。

パスワードであれば、本人が覚えていさえすれば本人確認は可能です。
ですが、パスキーが入っている認証端末が使えなくなると本人確認できなくなります。

FIDO側でもこの対策の必要性は認識済でしょうが、具体的な対策はまだ決まっていないようです。

また、2023年現在、FIDO2が使えるサービスがまだまだ少ないことも課題と言えます。
もっとも、2022年の後半になってChromeやiOSでのFIDO2サポートが始まったところですからこの点はこれからに期待といったところです。

FIDO2認証が一般化するにはまだ時間が要りそうです。

まとめ

パスワードの多くの課題を解消する仕組みとして、パスキーを使った認証方式であるFIDO2認証が注目されています。

特に2022年の後半には、Chromeブラウザ(バージョン108以降)やiOS(バージョン16以降)で採用されえることで、その流れが加速しつつあります。

FIDO2認証をサポートするサービスでは、最初にパスキーを作っておけば以降はパスワードなしでログインできます。パスキーは端末内に保管されて、サービス提要元にも渡しませんので、漏洩の心配はほとんどありません。

サービス提供元にはパスキーの一部だけが公開鍵として保管されます。
この公開鍵ではパスキーで作ったデータの検証しかできず、データは作れません。
ですので、サービス提供元を攻撃してもパスキーは入手できません。

パスキーの所有者にフィッシングメールを送ってパスキーを盗もうとしても、FIDO2認証の手順にはパスキーを渡す仕組みがありませんから、やはりパスキーは入手できません。

現状ではパスキーを保管している機器を失くしたり壊れたりすると復元に手間がかかる点、FIDO2が使えるサービスがまだ少ない点などは課題と言えます。

とはいえ、パスワードの運用がどんどん難しくなってきている(というか既に破綻している?)現状を考えますと、パスキーを使ったFIDO2認証には期待をしたいところです。

念のために書いておきます。
パスキーを使う時には本人確認を生体認証(指紋や顔認証)で行いますが、これはパスキーではありません。生体認証を使うのはスマホ側で本人確認をするための手段に過ぎません。パスキーは上述の通り秘密鍵と呼ばれる特殊なデータのことであり、そこに生体情報は含まれていません。

今回はパスキーとFIDO2認証について解説しました。

次回もお楽しみに。

(本稿は 2023年6月に作成しました)

このNoteは筆者が主宰するメルマガ「がんばりすぎないセキュリティ」からの転載です。
誰もが気になるセキュリティに関連するトピックを毎週月曜日の早朝に配信しています。
無料ですので、是非ご登録ください。
https://www.mag2.com/m/0001678731.html

この記事が気に入ったらサポートをしてみませんか?