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

サービス運用に必要不可欠な認証技術には、どれほどの種類があり、そしてなぜこれほどまでに多様化したのでしょうか。認証技術の進化と、それに対する攻撃手段の流れを不正ログイン対策ツールを手がける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サービスで使いまわしていると報告しています。つまり、パスワードリスト型攻撃の場合、継続して被害が発生すると考えられるのです。

生体認証

エンジニアHubに会員登録すると
続きをお読みいただけます(無料)。
登録のメリット
  • すべての過去記事を読める
  • 過去のウェビナー動画を
    視聴できる
  • 企業やエージェントから
    スカウトが届く