パスワードを不要とする安心・安全なID認証方式

インターネットを介したオンラインサービスが、仕事でもプライベートでも必要不可欠なツールとなって久しいですが、ほとんどのオンラインサービスにおけるID認証(自己証明)に使われている方法は、皆さんお馴染みの「パスワード」です。
情報システムにおけるセキュリティの脅威には、情報漏えい、不正アクセス、決済・金融サービスの不正利用、アカウント乗っ取りなど様々なものがあり、その原因も様々ですが、なかでもID・パスワード認証が原因(真因)となった事件・事故が非常に多く存在しています。
FIDO認証は、パスワードを使わずにオンラインサービスのID認証を安全で簡単に行うことができる新しい認証規格です。非営利団体FIDOアライアンスがグローバルで標準化と普及を進めています。ここではそのFIDO認証の概略について解説していきます。

そもそもパスワードの何が問題なのか?

パスワードによるID認証では、IDと対になるパスワードを入力・送信し、IDとパスワードを受け取ったサーバーでは、IDとパスワードのセットがあらかじめ登録されたものと一致するかどうかを判断して、認証の可否を判断します。

これは、IDの正規の所有者であるという証拠(秘密の情報)をサーバーとユーザー(の頭の中)で共有し、これを提示することによってIDの正規所有者であることを証明しています。逆に、正規のユーザーではなくても、正規のIDとパスワードのセットを提示されれば、サーバー側は正規のユーザーであると判断します。これがパスワード認証の仕組みです。
IDとパスワードのセットを第三者に知られなければ、(たぶん)安全ということになりますが、攻撃者はさまざまな方法でIDとパスワードのセットを手に入れます。

  • システムの脆弱性を利用してサーバに登録されているID・パスワードを盗み出す。
  • ユーザーの利用する端末にマルウェアを仕掛け、ID・パスワードを盗み出す。
  • ユーザーを偽物のWEBサイトへ誘導し、ID・パスワードを入力させ盗み出す。(フィッシング)
  • ユーザーのパスワード入力やメモ書きを盗み見る。(ソーシャル・エンジニアリング)
  • 悪意ある内部者がシステム側のID・パスワードの情報を盗み出す。

自社システムのセキュリティを十分に対策していたとしても、ユーザーが他のサービスと同じID・パスワードを利用しており、そのサービスからID・パスワードのセットが流出した場合は、それらの情報をもとに攻撃者は認証の突破を図ります。(アカウントリスト攻撃)
あるいは、ユーザーが第三者から推測可能な簡単なパスワードを使用していた場合は(P@ssw0rdや1loveUなど)、パスワードを知られなくとも推測により突破される可能性があります。(パスワード推測攻撃)
これらの攻撃に対して、システム側で対策できる部分もありますが、ユーザーが「他のサービスと同じID・パスワードを使用しない」「推測の難しい文字列をパスワードに使う」などの対策を行わない場合は、安全性は担保されません。
「ユーザーとサーバーの間だけで守られるべき秘密の情報を(現実的には)守ることが非常に難しい」
これがパスワード認証におけるセキュリティ上の根本的な問題点です。

FIDO認証の仕組み

パスワード認証の問題点を振り返りましたが、FIDO認証とはどのような仕組みでしょうか?ユーザーの利用方法から見て、
「パスワードを使わない」
「生体認証やセキュリティキーを使う」
といった特徴を思い浮かべる方もいるかと思いますが、
「サーバーとユーザーで秘密の情報を共有しない」この仕組みが、FIDO認証の持つ大きな特徴です。秘密情報を共有せずにどうやってIDの正規所有者であることを証明するのでしょうか?
FIDO認証では、サーバーからの認証要求(チャレンジ)(図3 ②)に対して、正規ユーザーである証の「署名」を返す(図3 ⑥)ことで認証を行います。

この「署名」が本物であるかどうかを確認するために「秘密鍵」と「公開鍵」の鍵ペアを利用しています。
それぞれの鍵の役割は以下の通りです。

鍵の種類 役割・用途 保管場所
秘密鍵 FIDO登録情報の署名生成に利用 ユーザーデバイス内
公開鍵 ペアとなる秘密鍵の署名を検証する サーバー内

 

この秘密鍵と公開鍵は一対一のペアになっており、公開鍵で復号できるのはペアになっている秘密鍵で暗号化したもののみです。サーバーに送信された署名を、保管している公開鍵で検証(復号)できるということは、署名がペアとして登録されている秘密鍵でなされたことを証明します。

「秘密鍵」を使用して署名を行うためには、登録時に指定した方法(生体認証など)で正規のユーザーであることを確認します。これによりFIDO登録を行った本人しか、署名を行うことはできず、署名の本人性を確認します。(図3 ③④)
また、「秘密鍵」と「公開鍵」のセットは、FIDO登録時にユーザーデバイス内で生成され、「公開鍵」のみをサーバーへ送信し、「秘密鍵」はユーザーデバイス内で厳重に保管され、デバイス外にエクスポートすることもできません。
「公開鍵」は、署名を検証するためにサーバーに保管されていますが、名前の通り「公開」可能なもので、「秘密」情報ではありません。
これが、「サーバーとユーザーで秘密の情報を共有しない」というFIDO認証の仕組みです。

FIDO認証に対する不正アクセスは可能なのか?

FIDO認証の仕組みを理解したところで、パスワード認証における不正アクセスの脅威が、FIDO認証で対策されているかどうか考えていきましょう。第三者が不正アクセスのために、サーバーに対して認証要求を行った場合のセキュリティについて検討してみます。

  1. 署名を行うためには、ユーザーデバイス内に保管された「秘密鍵」が必要であるため、登録時に使用したユーザーデバイスを所持していなければ署名を作成できない。
  2. ユーザーデバイスを「盗み出し」、所有していたとしても、「秘密鍵」を使うためには、登録時に行った認証(指紋認証や顔認証)などを行わなければならず、本人以外は利用できない。

第三者が本人になりすまして不正アクセスを行うには、ユーザーデバイスの所有と生体認証の二つの要素の認証(二要素認証<多要素認証>)を突破する必要があり、非常に強固な認証セキュリティが確保されています。
次に、第三者が不正アクセスに必要な「署名」を行うための「秘密鍵」を盗み出すことが可能かを検討します。

  1. サーバーシステムの脆弱性を利用して認証情報を盗み出そうとした場合、そもそもサーバーには「署名」と「公開鍵」しか保管されておらず、署名用の「秘密鍵」を盗み出すことは不可能。
  2. 仮に「公開鍵」が流出した場合も、公開鍵は署名を検証することはできるが、署名を行うことはできない。また「公開鍵」から「秘密鍵」を生成することはできない。
  3. ユーザーデバイスにマルウェアを感染させることなどで、ユーザーデバイスに格納された「秘密鍵」を容易に盗み出すことができないように、FIDOアライアンスでは認証器のセキュリティについて規定している。サービス提供者側で信頼性の低い認証器を許可しないという制御が可能。
  4. 仮に第三者がDNS改ざんなどの手段により、ユーザーを偽サイト(フィッシングサイト)に誘導することに成功し、ユーザーに対して認証要求に行うことが可能となった場合も、フィッシングサイトに送信される情報は「署名」であり、「秘密鍵」を盗み出すことはできない。

「署名」作成に必要な「秘密鍵」は、FIDO登録時にユーザーデバイス内で生成され、その後、デバイス外部へ持ち出す機会は一切なく厳重に保管されるため、これを盗み出すにはデバイスを物理的に盗み出すしかありません (その場合も、先に検討した通り、秘密鍵を使用するためにはデバイスの認証を突破する必要があり、セキュリティは保たれます)。
最後に、パスワードの問題で検討した、「ソーシャル・エンジニアリング(パスワードのメモ、入力を盗み見る)」に類する方法については、生体認証を用いる場合は「生体認証情報を偽造し」かつ「ユーザーデバイスを盗み出す」ことが必要となり、難易度は非常に高くなります。また、システム側の内部者による盗難は、サーバーシステムの脆弱性利用と同様、そもそも署名用の「秘密鍵」がサーバーに保管されていないため不可能です(ただし、FIDO認証情報以外の個人情報については盗難される可能性があるため厳重な対策は必要です)。以上の通り、FIDO認証は第三者が不正にアクセスする脅威に対して高い耐性を有しています。

FIDOの普及状況とFIDOアライアンス

FIDO認証の技術仕様は、非営利団体であるFIDOアライアンスが標準仕様として取りまとめを行い、公開しています。FIDOアライアンスにはITサービス事業者、ソフトウェア・ハードウェアメーカー、金融機関・決済事業者、通信事業者など、オンラインサービスに関連する様々な業種の250社以上の企業がメンバーとして参画し、仕様策定や技術標準化団体などとの調整、普及に向けた活動を行っています。

FIDOアライアンスのメンバーについて【外部サイト】
https://fidoalliance.org/members/
MicrosoftやGoogleは、FIDOプロトコルを改良しWeb上に実装可能としたFIDO2仕様をWindowsやAndroidに実装し、2019年に認定を取得しました。また、2020年にはAppleがFIDOアライアンスに加盟しFIDO2認証への対応を開始し、世界中のユーザーデバイスでFIDO認証が利用可能な環境が整ってきています。日本国内においても、メガバンクのネットバンキングや、大手移動体通信事業者、大手ネットサービス事業者のユーザー認証にすでに採用されています。FIDO認証の技術仕様についてはFIDOアライアンスのWEBサイトで公開されており、標準仕様をもとに世界中の誰もがFIDO認証の実装を行うことを許可しています(知的財産権の利用ポリシーについてはFIDOアライアンスのWEBサイトを参照ください)。グローバルで標準化を進める仕様であるため、安心して末永く利用することが可能です。

FIDO認証 まとめ

FIDO認証はFIDOアライアンスが標準化を進める安心・安全なID認証技術です。特徴・メリットは以下の通りです。

  1. 公開鍵暗号方式を採用し、ユーザー(デバイス)とサーバーで「秘密の情報」を共有しない。
  2. FIDO登録を行ったユーザーデバイスと、デバイスでのユーザー認証の二つがそろわないと認証できないため、セキュリティが強固である。
  3. 認証に必要な「秘密鍵」や「生体認証情報」はユーザーデバイス内に保管されるため、ユーザーのプライバシーに配慮している。
  4. パスワード認証への攻撃手段である、フィッシングやアカウントリスト攻撃に対して耐性がある。
  5. グローバルで標準化がすすめられ、さまざまなユーザデバイスで利用可能な認証方法である。

FIDO認証はオープンに公開された仕様であるため、誰でも実装して利用することが可能です。
本記事では、FIDOの基本的な仕組みについてまとめてみました。
次回はFIDOで利用するプロトコルについて詳しく説明します。

 

本記事はDDSの公式ホームページ「FIDO認証とは?」を元に加筆・修正したものです。