認証技術の種類と進化の歴史。ユーザーの情報を守るために必要な基本を知ろう

サービス運用に必要不可欠な認証技術には、どれほどの種類があり、そしてなぜこれほどまでに多様化したのでしょうか。認証技術の進化と、それに対する攻撃手段の流れを不正ログイン対策ツールを手がけるCapyのエンジニア2名に解説してもらいます。

認証技術の種類と進化の歴史。ユーザーの情報を守るために必要な基本を知ろう

私たちが何気なく使っている認証とは一体どういうものなのでしょうか。

認証はコンピュータやインターネットが普及する前から用いられている、利用者を識別し、その正当性を証明する技術です。この定義に当てはめていくと、家の鍵や合言葉など、身の回りでもおなじみのものも「認証」にあたります。

認証を支える技術のうち、よく知られているのが暗号です。原始的な暗号技術のひとつに、古代ローマで用いられたシーザー暗号(Caesar cipher)があります。これは当時の為政者、ユリウス・カエサルが使ったといわれており、元の文章からアルファベットを一定数シフトさせ、第三者に分からないようにする暗号です。

時が進むにつれてさまざまな暗号技術が開発され、コンピュータが普及し始めてからは 共通鍵方式や公開鍵方式が生まれています。現在ではブロックチェーンや匿名化など複雑な計算による暗号も用いられています。

暗号技術だけでなく、認証テストの手法や認証機も進化を遂げており、現在ではさまざまな認証技術が生まれています。しかし、なんらかのサービスにいざ認証を導入しようにも、そのためには慎重な判断が求められます。なぜなら、厳しい認証にしないとユーザを守ることができないし、厳しくし過ぎると面倒くさくなってユーザが離れてしまうという、ジレンマのような問題があるからです。この問題はシステムやサービスを作る上で大きな悩みの1つになっています。では、インターネットサービスにおいては、どのように認証方式を選び、実装すればいいのでしょうか?

本稿では、コンピュータやインターネットにおける認証技術・認証攻撃の歴史を振り返りつつ、近年の認証技術の進化やサービスに認証技術を導入する上で必要になる観点を解説していきます。

人の弱点を突くソーシャルエンジニアリング

先に述べたシーザー暗号からも分かるように、コンピュータやインターネットが発達するはるか昔から、詐欺や産業スパイによる情報窃取がありました。

心理的な隙やミスに付け込んだ攻撃はソーシャルエンジニアリングと呼ばれています。

システム面で弱点が見つからなかった場合、「人の弱点」に狙いを定めるというように、現在でも使われている詐欺の手法です。2011年にアメリカのあるセキュリティ会社が攻撃された際には、メールを装ってシステムのパスワードをリセットさせていたということが分かっています。

また、映画にもなった伝説のハッカー、ケビン・ミトニックは、ソーシャルエンジニアリングを得意としており、標的となる会社のゴミ箱をあさり重要な情報を手に入れていたと言われています。

このことから分かるように、リスクはなにもPCやスマホの中だけに存在するわけではありません。例えば、社員証とオフィスの入り口の鍵が一緒になっている会社も多いと思いますが、もし社員証を落として誰かに拾われた場合、拾った人はその会社に簡単に入ることができます。同様に、社員証の紐にハードウェアトークンをぶら下げているのもソーシャルエンジニアリングのリスクがあると考えられるのです。

パスワード認証の誕生と初期の認証攻撃

インターネットの普及が進み行き交う情報の量が増えると、ソーシャルエンジニアリング以外の詐欺・情報窃取の手法も増えてきます。情報を入手するためにシステムを攻撃する、という事件が増えていきたのです。

こうした攻撃に対抗するために生まれたのが、利用者をIDとパスワードによって認証するパスワード認証です。パスワード認証は、インターネット黎明期の1990年代から長く使われている認証技術のひとつです。

パスワード認証の一般化に比例し、情報にアクセスできる端末も増えました。しかし、その反面、パスワード認証の隙をついた攻撃も多く見られるようになりました。パスワード認証に対する攻撃手法はさまざまですが、以下に代表的な攻撃例を2例紹介しましょう。

総当たり攻撃

総当たり攻撃は、パスワードを全てのパターンで手当たり次第に試行する攻撃です。力任せに全ての可能性を試すことから、ブルートフォース攻撃(Brute-force attack)とも呼ばれています。

IDに何らかの値(対象となるメールアドレス)を入れて、パスワードに対して手当たり次第攻撃する方法が多く見られる一方、パスワードを固定して、IDとなるメールアドレスを手当たり次第入力して攻撃する手法もあります。

これは「123456」や「password」などの弱いパスワードを使っているユーザが不正ログインの被害に遭いやすく、攻撃者からすると総当たり攻撃よりも効率がよい手法なのです。この攻撃はリバースブルートフォース攻撃もしくはパスワードスプレー攻撃などと呼ばれています。

1

こうした総当たり攻撃は多くの場合自動化されています。往々にして攻撃用ツールが使用されており、しかも昔から多く開発されており、入手するのは非常に簡単なのが現状です。攻撃もたいていはHTTPリクエストを送ってレスポンスを比較するだけですので、簡単に作ることができるのです。

辞書攻撃

辞書を用いて総当たり攻撃を効率よく行うことを辞書攻撃と呼びます。「辞書」とは過去に誰かに使われていたパスワードや、狙われやすいパスワードをリスト化したファイルで、こうしたファイルはネットで公開されていたり、有料で売られていたりします。

一方でこの辞書ファイルは攻撃用ではなくユーザ保護にも使えます。ユーザが設定した自身のパスワードが辞書に載っていた場合、辞書攻撃によってアカウントが乗っ取られる可能性が高まりますが、同時にパスワード設定時にエラーを出すなどして、脆弱なパスワードにならないようにできるのです。Linuxコマンドでパスワードを設定するときに辞書チェックが行われ、警告が出るシーンを見たことがある方もいると思いますが、これは辞書ファイルをユーザ保護に活用している一例といっていいでしょう。

コラム:狙われやすいパスワード

それではどういうパスワードが狙われやすいのでしょうか。アメリカのセキュリティ企業「SplashData」が2017年に攻撃されたパスワードのランキングを作っています。

参考:100 Worst Passwords of 2017! The Full List

ランキングの1位は「123456」で「password」「12345678」という順位になっており、5位には「qwerty」といったキーボードの並びからきているものもありました。つまり、リスクの高いパスワードには「憶えやすい」「打ちやすい」という傾向が、2017年の段階でもあるのです。

攻撃に使用されたパスワードについては、筆者も個人的に調査していますが、日本でもおおよそこのランキングの通りだと感じています。たまにハリウッド映画の登場人物や、日本のゲームのキャラクター名で試行してくるケースも見かけます。

パスワード認証への攻撃対策

こうしたパスワード認証の隙を突く攻撃に対処するために、90年代末から00年台にかけてさまざまな認証技術が生まれました。

CAPTCHA

「CAPTCHA」とは、「Completely Automated Public Turing test to tell Computers and Humans Apart」の頭文字をつなげたもので、直訳するとコンピュータと人間とをはっきりと自動識別するテストのことを指します。

画像に描かれた内容など、その判別が人間には可能でコンピュータのプログラムには不可能なものを使って、人間の操作であることを認証する技術です。以下の画像のような認証画面をご覧になったことがあると思います。

2

Webページの入力フォームなどで、形をゆがませたり背景に模様を入れたりし、あえて判読しにくくしたアルファベットや数字などの画像を提示します。その文字列をユーザに手動入力させることで、相手が機械プログラムではなく人間であることを確認し、機械プログラムを利用した不正行為の防止に効果を上げました。

二要素認証

二要素認証とは種類の異なる2つの情報を組み合わせて安全性を高めた認証方式で、「マルチファクター認証」とも呼ばれています。要素は認証の3要素に分類されます。

1つめは、ユーザが知っていること(記憶)。パスワードや秘密の質問などが該当します。2つめは、ユーザが持っているもの(所持)。スマートフォンやハードウェアトークン、乱数表などが該当します。登録したスマートフォンに送られてくる、短時間のみ有効なパスワード(ワンタイムパスワード)も、持っている本人にしか届かないので所持情報に分類されます。3つめは、ユーザの身体的特性(生体情報)。指紋や静脈、虹彩などが該当します。以下に示す表で3要素を整理してみましょう。

要素 概要 具体例
記憶 本人のみが記憶しているデータに基づいて認証する パスワード、PIN
所持 本人のみが所持している物によって認証する ICカード、ハードウェアトークン
生体情報 本人の生体に基づくデータにより認証する 指紋認証、顔認証

二要素認証は、これらの中から異なる2つの要素を組み合わせる仕組みになります。

例えばGoogleアカウントはIDとパスワードでログインしますが、二要素認証の際の2つめの認証はアプリを使用します(2018年現在)。これは自身が覚えているID・パスワードを入力し(記憶)、認証されているアプリからのアクセスを確認する(所持)ので、ログイン時に2つの要素が求められます。

このように、二要素認証は3つの要素から2つ選択できていることが重要です。金銭情報やセンシティブな情報を扱うサービスでは、二要素認証を導入することでアカウントを保護することをお勧めします。

二要素認証と二段階認証

同じ種類の要素を2つ組み合わせても二要素認証にはなりません。例えば、パスワードと秘密の質問を使うユーザ認証は、2つの情報を使っていますが、どちらも記憶情報なので、この場合、二要素認証とは呼ばず、二段階認証と呼ばれます。所持情報または生体情報を追加することで、二要素認証となります。違いを要約すると以下の通りです。

  • 二段階認証は同じ1要素での認証が2回ある
  • 二要素認証は記憶・所持・生体情報のなかから異なる要素を使った認証を1回ずつ行う

二要素認証は、銀行などの金銭に関わる情報を扱うサービスや、ヘルスケア情報などのセンシティブな情報を扱うサービスで使用されています。

万が一パスワードが漏えいしたり、総当たり攻撃が成功した場合でも二要素認証を使用することによって、ユーザの情報は保護される可能性が高まります。しかしながら、幅広いユーザに使用されているサービスは二要素認証にすることによりユーザの離脱が懸念されることもあります。

二要素認証を全てのユーザに使用してもらうことが理想的ですが、難しい場合は希望するユーザのみ二要素認証を提供する、という場合もあるでしょう。

リスクベース認証

リスクベース認証とは、ユーザがサービスを利用する際の環境(IPアドレス・Webブラウザ等)の履歴に基づきユーザを分析し、リスクが高いと判断された場合には追加認証などを行うことで、なりすましを防ぐ認証技術です。

日頃使用しているSNSアカウントに、普段とは違うブラウザやデバイスでログインしようとした際、元のブラウザ・デバイスになんらかのアラートが来た、別途ログインコードによる認証が求められた、という経験をお持ちの方もいるでしょう。これがプロセス認証の一例です。

通常と同じ環境からのアクセスのようにリスクが低いと判断された場合には追加認証を行わず、リスクが高いと判断された場合には追加認証を行うことから、一定の利便性を保ちつつ、不正アクセスに対する防衛力を高めることができます。

詐欺・中間者攻撃

前章で述べたように、パスワード認証攻撃への対抗策は増えているものの、私たちを脅かす認証攻撃は他にも存在します。パスワード認証攻撃がユーザやサービスから情報を“奪い取る”アプローチであるのに対し、ユーザをだまし情報を“引き出す”アプローチの攻撃もあるのです。以下にその手法の代表例を紹介します。

フィッシング

オンラインバンキングが普及し始めた2000年ごろから、アカウントの認証情報を盗むフィッシングが見られるようになりました。金融機関などを装ったメールを送ってフィッシングサイトに誘導し、名前やクレジットカード番号などの個人情報を詐取する行為です。

代表的なものとして、フィッシングメールをクリックしたら、サービスにそっくりのログイン画面が表示されることがあります。

フィッシング対策に関するガイドラインや注意喚起などを行っているフィッシング対策協議会によると、2017年には9,812件のフィッシング行為の届け出があったと報告しています。

過去、フィッシングメールには、「貴様のアカウントの利用中止を避けるために、検証する必要があります」といったような、不自然な言い回しという特徴がありました。しかし最近では実際にサービス内で使用され、ユーザに発信されていたメールを使用して文面を作るなど、注意して見なければフィッシング行為だと気づかないようなメールも送られてきているようです。

また、無関係のサイトの脆弱性を突き、そのサイトのドメイン配下にフィッシングサイトが設置されてしまうことがあります。この場合は無関係なWebサイトの管理者も捜査対象になった事例もあるので、Webサイトの管理責任を持つ業務の場合、注意が必要です。

3

中間者攻撃

通信を盗聴し認証情報を取得する攻撃手法を中間者攻撃もしくはMan In The Middle攻撃と呼びます。この攻撃は、通信中に盗聴されると、情報が盗まれるだけではなく改ざんされる危険性がある、という点に注意が必要です。認証情報自体は盗まれていなくても、情報を改ざんすることで、ユーザに認証情報を入力するように誘導し結果的に認証情報を盗む、というケースもあります。

WebサイトではSSL通信によってこれを防いでいます。SSL通信はブラウザとWebサイト間の通信を暗号化し、第三者の盗聴を防いでいます。

また、サーバ証明書を検証することによって、アクセス先が攻撃者によって書き換えられていないことを確認することができます。Webサイトで認証情報を扱う場合はユーザに対しSSL通信を必須にすることが重要です。

パスワードリスト型攻撃

ここ数年、国内のサイトでアカウントの漏えいが相次いで発生しました。これらの多くはパスワードリスト型攻撃と呼ばれており、2013年ごろから見られるようになりました。これは先程説明した総当たり攻撃とは少し方法が異なります。

パスワードリスト型攻撃では、過去に漏えいしたアカウントを基に辞書を作ります。もしユーザが複数サイトで同じパスワードを使いまわしていた場合、この辞書によってログインが成功してしまうのです。総当たり攻撃の場合、何百回、何万回試行しないと成功しないような攻撃が数回で成功してしまうため、攻撃者にとって効率が良い手法といえるのです。

また、残念ながらパスワードを使い回している人は多く、トレンドマイクロ社の調査では日本人の80%以上がパスワードを複数のWebサービスで使いまわしていると報告しています。つまり、パスワードリスト型攻撃の場合、継続して被害が発生すると考えられるのです。

生体認証

パスワード認証の弱点を補完する技術として注目されているのが生体認証です。

生体認証とは、身体的または行動的特徴を用いて個人を認証する技術です。生体認証に用いられる身体的な特徴として、指紋、顔、静脈、虹彩(瞳孔周辺の渦巻き状の模様)などが、行動的特徴として、声紋(音声)、署名(手書きのサイン)などがあります。

生体認証はユーザの身体を認証の手がかりに用います。よって

  • 認証に必要な記号を忘れる(ID、パスワードを忘れる)
  • 認証手段を遺失する(情報が入っているICカードをなくす)

といった懸念がほぼ皆無であり、本人ならばきわめて高精度で認証され、なりすましによる不正アクセスもきわめて困難であるという特徴があります。

生体認証への攻撃

生体認証の利用頻度が増えているなかで、残念ながら生体認証に対する攻撃も増加しています。

例えば指紋認証では、シリコンで偽の指紋を作ってスマートフォンの認証を突破するという事例があります。中間者攻撃などによって、攻撃者が通信を盗聴し指紋情報を取得するというリスクも想定されます。

生体認証において注意すべきは攻撃だけではありません。生体認証で使う情報は非常にセンシティブな情報です。指紋など一生変えることができない情報であり、その分、万一の情報漏えいのリスクが非常に高いのです。よって生体認証情報の取り扱いは慎重に行う必要があるのです。

後述する FIDO を使用すると生体情報がインターネット上に流れることなく認証が可能になるため、こういった技術を活用し指紋認証を安全に使用する必要があります。

認証技術の進化

システマティックな攻撃を防ぐために生まれた認証技術は、さらに進化を遂げています。

CAPTCHAの進化

CAPTCHAとして主流だったのは、文字CAPTCHAです。一度は目にしたことのある人も多いと思います。

画面に表示した変形文字をユーザに読ませて入力させることで、相手が人間であることを識別する仕組みです。変形文字は人間には読み取れても、コンピュータには難しいとされていました。

しかし、人工知能(AI)などの技術の進歩によって文字の特徴を効率的に学習できるようになり、変形文字はコンピュータにも把握できるようになりつつあります。文字CAPTCHAを見破る技術に対抗するために、文字列は複雑さを増す傾向があります。そのため、人間でも判読が困難なほど極端な変形や長文化したものも多く、該当サービスのユーザ離れを引き起こす一因になることもあります。

その後、次世代のCAPTCHAとして登場したのがパズルCAPTCHAです。人には優しくコンピュータには難しいパズルの回答を確認することで、コンピュータからの不正アクセスを防ぐ仕組みです。操作性に優れており、主流だった文字CAPTCHAと比較して、ユーザの離脱率減少にも大きく寄与します。

リスクベース認証と二要素認証の組み合わせ

二要素認証は、2つの要素を組み合わせるため、従来の認証方式よりもセキュリティの強化に有効です。しかし二要素認証では少なくとも2回以上の認証があるため、煩わしさは否定できず、ユーザの利便性を下げる可能性があります。

一方、リスクベース認証はユーザを分析してリスクを判断するため、ユーザの一定の利便性を保ちます。一般的にリスクが高いと判断された場合は本人確認のために追加認証が実施されますが、この追加認証への回答が攻撃者に推測できるものでは、不正アクセスに対する防御力を高めることはできません。

セキュリティを強化し、ユーザの一定の利便性を保つ仕組みが、リスクベース認証 + 二要素認証となります。お互いの認証技術の利点を生かし、問題点を補う組み合わせとして利用されています。

認証技術の今後

今後の認証技術に関して、さまざまな議論がなされています。ここでは、次世代を担うであろう認証技術の中から、FIDOに注目して解説します。

ID・パスワードを必要としない認証技術、FIDO

FIDO (Fast IDentity Online) は、次世代の標準化されたオンライン認証技術のひとつとして注目されています。規格の策定は FIDO Alliance という業界団体により行われています。

従来のパスワード認証では、利用者のデバイス(またはブラウザ)からWebサーバに対してID・パスワードを送信します。Webサーバ側が認証サーバとなって、送信されたパスワードが正しいかどうかを検証し、送信されたアカウント情報が正しいかどうかを判定します。この場合、利用者のデバイスと認証サーバ上で認証情報がやりとりされています。

パスワード認証の根本的な問題点のひとつが、ユーザがパスワードを複数のサービスで使い回すことにより、パスワードリスト攻撃の被害を受けてしまうリスクが高まる点です。また、認証サーバが攻撃を受けた場合、認証情報の管理方法によっては、パスワードなどの情報が漏えいする可能性があります。

さらに、フィッシングなどの被害により、認証サーバ側に問題がなくてもパスワードなどの認証情報が奪われる可能性があるのです。

4

FIDOの認証ではスマートフォンに実装されている顔認証や指紋認証といった機能を利用し、「認証器」として使用します。

この認証器が利用者との認証情報を管理し、認証後は認証結果の情報のみを認証サーバに送付します。認証サーバでは識別したユーザ情報と検証結果を照合することで認証を完結させます。

FIDOではIDとパスワードの組み合わせを使用しないため、パスワードリスト攻撃の影響が軽減されるほか、ネットワーク上に認証情報自体が送受信されないので、中間者攻撃による盗聴リスクや、サーバが攻撃された場合の認証情報漏えいリスクも軽減されます。

5

FIDOにはU2FとUAFという2つの仕様があります。U2F(Universal 2nd Factor)では、認証器を用いた二要素認証を実現します。パスワードで1つ目の認証をし、ハードウェアトークンなどを用いて2つ目の認証を行います。 一方、UAF(Universal Authentication Framework)は、スマートフォンなどのUAFに準拠した認証器を用いて生体認証が行われ、パスワードを使用せずに認証を行うことができます。また、U2F と UAF を統合した「FIDO2」と呼ばれる仕様が2015年に提案され、Webサイトへの応用などが期待されています。

多くのブラウザに採用されるWebAuthn

FIDOの中でも現在注目されている技術がWebAuthn(Web Authentication) です。

WebAuthn は FIOD AllianceとW3C (World Wide Web Consortium))により策定されている仕様で、2018年4月に勧告候補になったことが発表されました。

W3Cの発表によると、勧告候補になった際、Google、Microsoft、Mozillaは、それぞれのブラウザでWebAuthnのサポートを明言し、Windows、Mac、Linux、Chrome OS、Androidの各プラットフォームで実装を勧めているとのことです。Dropboxでも二要素認証においてWebAuthnをサポートするとアナウンスしました。

WebAuthnは、先述のFIDO2に準拠しており、さまざまな生体認証などで応用が可能になります。Webサイトのログイン画面に導入すると、指紋・顔などの生体認証がパスワードの代替として使用することができるため注目を集めています。

Webサービスに認証機能を追加する2つの観点

最後に、Webサービスに認証機能を追加する場合の導入の観点をまとめてみます。

1. ユーザへの影響

Webサービスに認証機能を追加しセキュリティを向上させる理由は、ユーザが安心してサービスを利用できるようにするためです。しかしユーザにも解けない難解な認証や導入によるレスポンスの低下は、ユーザビリティを低下させます。

また、導入する認証技術が、ユーザをカバーできるのかも大事なポイントです。利用できる端末が限定されるなど、特定の環境でないと機能しない認証は、ユーザの利用環境の変更が必要になるケースもあり、ユーザの負担になります。セキュリティ向上によって、ユーザの離脱につながることは避けねばなりません。ご自身の運営されているサイトが持っているユーザの情報や、サイトに対して想定される脅威を一度洗い出し、認証方法を選定されることをお勧めします。

2. コスト

サービスの規模にもよると思いますが、セキュリティにかけられるコストにも限りがあります。導入するサービスの利用料以外にもサービスの実装にかかるコストやサーバーの追加など、インフラの増強が必要になるケースもあります。

また、二要素認証の導入検討時に「二要素認証を利用できるユーザの情報」がなく、情報を収集するところから検討しなければならないケースも存在します。例えば、二要素認証にSMSを利用した認証の導入をしたいが、ユーザの携帯電話番号の情報を保持しておらず、改めてユーザに携帯電話番号の共有を求めなければならない、といったケースも往々にしてあるでしょう。現状のサービスの構成や状況を把握した上で、コストを確認することも大事なポイントのひとつです。

総括

多くのサービスの認証においてパスワードが使われていますが、パスワードに関してはセキュリティ上の課題が多く指摘されています。

パスワードを複雑なものにすることで総当たり攻撃が防げると考えられていましたが、パスワードリスト攻撃などが増加するにつれて、パスワード認証を安全に使うことが難しくなってきました。 また、サービスの運用の面から考えても、パスワードリスト攻撃への対策は非常に難しいと言われています。私たちも認証に関わるサービスを作っている者として、より安全で簡単に楽しくサービスを使用していただけるよう取り組んでいきます。

松本悦宜(まつもと・よしのり)

6
Capy株式会社 研究開発部 ホワイトハット兼研究員。セキュリティベンダーにおいて、セキュリティコンサルタントとして企業の緊急対応マニュアルの策定支援やトレーニング講師などを行う。また、ラスベガスで毎年行われるセキュリティカンファレンス「Blackhat」の「Arsenal」という部門にて、作成したツールが採択されるなど、ハッカーコミュニティでも精力的に活動する。現在は、Capy株式会社にて情報セキュリティに関する研究開発や分析などに携わる。著書(共著)に『WordPressプロフェッショナル養成読本』(技術評論社)、『インターネット白書2015」(インプレスR&D)がある。

小林悟朗(こばやし・ごろう)

7
Capy株式会社 プロダクトマネジメント部 部長。株式会社一休 開発責任者、株式会社メタップス チーフエンジニアを経て、2018年3月よりCapy株式会社に参画。以降、プロダクトの戦略・設計から実際のシステムの開発・運用、マーケティング・ブランディングに携わる。
若手ハイキャリアのスカウト転職