2022.02.07
まとめ
この記事を読んだ人へのオススメ
-
2022.02.07
-
2022.02.14
-
2020.06.01
-
2022.03.14
Twilioブログ
2022.02.07
SNSや会員制コミュニティサイト、インターネットバンキングなど、多くのネットワークサービスでは「アカウントとパスワード」の組み合わせを用いて本人認証をおこなうことが長らく一般的でした。
しかし近年ではアカウント情報の流出や不正アクセスによる被害が後を絶たず、パスワードの認証だけでは安全性に問題があると考えられています。
そこで多くの個人情報を扱うサイトやアプリケーションが導入を始めているのが、「二要素認証」と呼ばれる、よりセキュアな認証方式です。
この記事では「二要素認証とは何か」を解説し、メリットやデメリットについて紹介します。また二要素認証を導入するにあたっての注意点や強化するポイント、具体的な活用例なども見ていきます。
二要素認証はWEBサイトやアプリケーションで使われる、性質の異なる2つの要素の組み合わせを用いて本人確認をおこなう認証方式です。英語表記(Two Factor Authentication)を略した"2FA"という呼び方もあります。
IDとパスワード以外に、本人しか登録できない情報を登録することで、強固なセキュリティを実現します。
これまでのネットワークサービスでは、アカウントやメールアドレス、電話番号などの「IDとパスワード」を組み合わせた認証方法が活用されていました。
しかし近年ではフィッシングサイト・ハッキングなどによって認証情報が流出し、不正ログインをおこなわれる被害が多数報告されるようになってきています。
二要素認証の導入が広く進められるようになったのは、「IDとパスワードの組み合わせ」による認証方式がセキュリティを強固に保つうえで限界を迎えていると考えられたためです。
多くのネットワークサービスでは、パスワードを守る仕組み作りとして、以下のような対応を推奨してきました。
しかしこのような対策を講じても、複数サービスで同じパスワードを使いまわしたり、容易に推測できるパスワードを設定したりするユーザーが多く、めざましい効果は得られませんでした。
またユーザー側にも「認証が必要なアカウントが多くて管理しきれない」「定期的にパスワードを変えているうちにどれが本当のパスワードかわからなくなった」などの課題も生じてしまいました。
このような背景から、パスワード以外の情報を使った認証方式として「二要素認証」が活用されるようになったのです。
二要素認証は本人確認の過程で、2つの要素を入力させる認証方式です。身近な例としては、決済に使われるクレジットカードが挙げられるでしょう。
クレジットカードで支払いを行う場合、カードを提示したあと、暗証番号の入力を求められます。これはカードを「所有している」こと、そして暗証番号を「知っている」ことを2つの要素として活用し、認証をおこなっているというわけです。
他にもオンラインバンキングなどでは、IDとパスワードによる認証に加え、金融機関から送られてきた認証トークンを使ってワンタイムパスワードを入力する方法が使われています。
二要素認証で利用される認証の要素は大きく3つに分類され、「認証の三要素」と呼ばれています。認証のための三要素について詳しく解説します。
「ユーザーしか知ることのできない情報」を活用して認証を行う要素を、知識要素と呼びます。
従来活用されてきたIDとパスワードの組み合わせ、暗証番号なども知識要素の一種です。そのほかにも、ユーザーが知識として持っている情報はおおむね知識要素として使われます。
なお知識要素には「記憶できる量に限界がある」「メモの流出や不正取得によって漏洩のリスクが生まれる」といった弱点があります。認証に使用する際は、他要素の情報と組み合わせることが望ましいでしょう。
「ユーザーだけが所有しているもの」を活用して認証を行う要素を、所有要素と呼びます。
銀行のICチップ付きキャッシュカードや、スマートフォンなど、ユーザーしか持つことのできないものを認証要素として活用します。
近年で特に導入が進んでいるのが、スマートフォンを活用する認証です。
スマートフォンは1人1台所有することが前提となっているほど広く普及しているデバイスであり、手軽かつ便利なツールとして肌身離さず持ち運ばれています。認証に使うためのものをユーザーに新しく所持してもらう必要がないというメリットがあるのです。
「ユーザーの体の特徴」を活用して認証を行う要素を、生体要素と呼びます。
ユーザーの指紋や静脈、顔、虹彩など、人によって異なる特徴を使うため、最も安全な認証要素とされています。
かつては生体情報を読み取る機器が高価だったため、生体要素を利用して認証をおこなえる環境は限られていました。しかし近年ではスマートフォンをはじめとする多くのデバイスで導入されており、急速に普及が進んでいます。
近年ではパスワード認証の他にも、多くの認証方式が二要素認証に採用されています。ここでは「パスワード認証」「トークン認証」「生体認証」をピックアップして、それぞれのメリット・デメリットをご紹介します。
利用にあたって特定の端末や道具が必要ないため、手軽に導入することができます。ユーザー側にもポピュラーな認証として親しまれているため、抵抗感なくサービスを利用してもらえるでしょう。
文字列の組み合わせのみによる簡単な認証のため、パスワードの流出やそれによる不正アクセス・なりすましが起こるなど、数ある認証方式の中でもセキュリティリスクが高い傾向にあります。
専用のハードウェアやトークンの生成器を利用して、その文字列を入力することで本人認証をおこなう方式です。
一定時間でどんどん更新されていく専用の乱数(ワンタイムパスワード)をユーザーごとに発行できるため、漏洩や不正アクセスが起こりにくく、セキュリティリスクを抑えられる傾向にあります。
ユーザーごとにハードウェアやトークンの生成用アプリケーションを準備する必要があるため、導入から利用開始するまでに手間とコストがかかります。
またトークン生成器そのものが盗難の被害に遭ってしまうと不正アクセスにつながる可能性もあるため、注意が必要です。
ユーザー本人が持っている生体情報を使用するため、特別な道具が不要となります。また盗難による情報漏洩のリスクもありません。
利用する生体情報によっては、認証の登録や設定に時間を要する可能性があります。サービスの利用を開始できるまでにユーザーを待たせる形となるため、その点がネックとなるでしょう。
また近年では画像や映像などを使って生体情報を偽装したり、シリコンなどを使って他人の生体情報を模造したりと、セキュリティの穴をつく手口がどんどん巧妙化してきています。
不正アクセスのリスクを完全に防げるわけではない、ということは念頭に置いておきましょう。
二要素認証と類似した名称の認証方式として、「二段階認証」と呼ばれるものがあります。どのような違いがあるのか、それぞれの仕組みを見てみましょう。
二要素認証は「認証の三要素」のうち、2つの要素を用いて認証をおこなう認証の方式です。異なる種類の認証方式を組み合わせることで、より強固なセキュリティを担保できます。
一般的には「ID・パスワード(知識要素)」に加えて、「トークンデバイスによる認証(所有要素)」や「指紋認証(生体要素)」を組み合わせた形で採用されています。
二要素認証と同じように異なる要素を組み合わせるケースもありますが、たとえば「ID・パスワード」を入れた後で「秘密の質問」による認証をおこなうなど、知識要素による認証を2回実施するのでも二段階認証は成立します。
ユーザーには手間をかけてしまいますが、複数の段階に分けて認証をおこなうことで、セキュリティ強度を乗算的に高められます。
詳しくはこちらの「二段階認証とは?|メリット、導入方法、二要素認証との違い」をご参照ください。
二要素認証のメリットは、ひとえにより厳格な本人確認をおこなえる点にあります。
「認証の三要素」から異なる2つを組み合わせ、二段階に分けて利用することで、単独の認証方式を採用するよりずっとセキュリティ強度を高められます。
先述の通り、3つの認証要素にはそれぞれメリット・デメリットがあります。しかし複合要素として一緒に実装することで、個々の認証方式のデメリットを補えるのです。
サービス側がどれほどセキュリティ対策に力を入れていようとも、「パスワードを使いまわす」「トークンデバイスを紛失する」など、ユーザーの意識が低ければ不正アクセスのリスクは高まってしまいます。
二要素認証は2つの認証を組み合わせていますが、それぞれの認証のセキュリティレベルを落とさないことが何より重要です。
ここではセキュリティ強化をおこなう上で、主にユーザー側が意識すべきポイントを説明します。
IDとパスワードを活用した認証では、入力するときの手間を省くため・たくさんあるパスワードを覚えることが困難なために、簡単なパスワードを設定している方も多いのではないでしょうか。
簡単なパスワードは、第三者から推測されやすい、ということでもあります。そのようなパスワードを使い続けることで、認証を突破されてしまう危険があるでしょう。
パスワードを作る際は、第三者から推測されにくい文字列になるよう心がけましょう。
スマートフォンの普及により、近年では多様な認証方式が簡単に利用できるようになりました。しかし多くのサービスがスマートフォンを使った認証方式を採用したために、「情報が一か所に集約されやすい状況になっている」のも事実です。
1つのデバイスに認証情報が集中するということは、それだけ紛失・盗難による情報漏洩のリスクも高くなるということです。これでは、セキュリティレベルが高い状態とは言えません。
セキュリティリスクの分散のため、認証に使用するデバイスはパソコンとスマートフォンで分けておきましょう。
二要素認証は、ネットワークサービスのセキュリティ強化に有効な手段です。しかし導入にあたって、サービス側が注意しなくてはならないポイントがあります。
どのような点を意識する必要があるのか、見てみましょう。
トークンデバイスや乱数表などを配布して認証をおこなう場合、ユーザーによる紛失や盗難によって第三者が不正利用できるようになるリスクを考慮する必要があります。
カード型にして携帯するよう促す、スマートフォンのアプリをトークンの生成器として利用するなど、ユーザーが管理しやすい方法を検討してください。
また乱数表のような文字の情報は、ユーザーがメモをしたりカメラで撮影したりするなどすれば簡単に複製できてしまいます。メモの紛失や、撮影した画像をセキュリティレベルの低いストレージに保管する危険性について、注意喚起が必要です。
ユーザー本人と切り離せない要素を利用している生体認証は、非常に高いセキュリティレベルを実現できると目されています。しかし生体情報であっても、不正に利用される危険性がゼロではないことを考慮しなくてはなりません。
実際に、ユーザーの就寝中にスマートフォンの指紋認証を解除されたり、高解像度の写真に写りこんだ指紋を悪用されたりするリスクが指摘されています。高いセキュリティレベルを期待される認証方式も、完璧ではない可能性があるのです。
近年は多くのネットワークサービスで二要素認証の導入が進められており、標準的なセキュリティレベルは従来のサービスと比べて非常に高くなっています。
しかし2つの認証要素を組み合わせて強固な認証を実現できるのは、それぞれの認証でセキュリティレベルを高められるよう、工夫を行うことが前提となっているからです。
「二要素認証を導入したから大丈夫」と過大評価はせず、継続してセキュリティレベルを向上させるための取り組みをおこないましょう。
Twilio(トゥイリオ)は電話やSMS、ビデオ、チャットなど世の中にあるさまざまなコミュニケーションチャネルを、WEB・モバイルアプリケーションと繋ぐクラウドコミュニケーションAPIです。
ここからはTwilioを利用した認証機能を実装する2つの方法、「Twilio Verify」と「Twilio Authy」についてご紹介いたします。
Twilio Verifyは、認証コードを生成し、「SMSまたは音声通話、メールで認証コードの送信および認証をおこなう」機能を提供するAPIです。登録されたユーザーの電話番号が本当に有効なものなのか、音声通話とSMSを用いて確認できます。
最大の特長は「開発の簡単さ」です。たった10行ほどのコードを追加するだけで、既存のアプリケーションに二要素認証を組み込めます。また認証サーバーの構築や運用も必要ないため、技術者の開発負担を大きく減らすことが可能です。
なおユーザーの個人情報については、サービスを提供されている企業さまにて保持・運用いただくことになります。
Twilio Verifyを用いた二要素認証・二段階認証の実装方法はこちら
新規ユーザー登録時に電話番号の検証をおこなう場合など、一時的に利用する認証の仕組みを構築する場合にはTwilio Verifyがおすすめです。
Webアプリケーションによる登録スパムの削減や、登録済みアカウントの二重登録防止などに役立てられます。
Twilio Authyは、SMS・電話・アプリを使ったワンタッチ認証などの認証機能を簡単なコードで実装できる、セキュリティ強化に特化したAPIです。
多種多様な認証方法を選択して利用できるため、運用時の安定性や利便性を確保できます。またTwilio Verifyとは異なり、Twilio Authyではユーザーの情報もTwilioのプラットフォームで管理できるため、企業はより運用時のメリットを得られやすくなります。
Twilio Authyを用いた二要素認証・二段階認証の実装方法はこちら
オンデマンドで生成される、動的な7桁の認証コードです。SMSまたは音声通話によって、登録された電話番号に配信されます。
Authyアプリなどの認証アプリを利用することで、一定時間ごとに新しいものに変わっていくワンタイムパスワードを入手できます。スマートフォン・タブレット・デスクトップを含む複数のデバイスで使用可能です。
ユーザー側のモバイルアプリへ承認リクエストをプッシュ通知で送信し、リクエストの承認・拒否を選択できる認証です。ワンタッチで簡単に応答できる、無駄のないUXを提供しています。
ログインするたびに二要素認証をおこなう場合など、長期的・継続的に利用する認証の仕組みを構築する場合にはTwilio Authyがおすすめです。ログイントランザクションの管理や、プッシュ認証チャネルが提供できるため向いています。
既存の認証システムを活かし、認証コードを伝達する機能としてSMS送信(Twilio Programmable SMS)または音声通話(Twilio Programmable Voice)だけを導入することが可能です。
既存の認証システムがない場合は、「Twilio Verify」 または 「Twilio Authy」 とSMSや音声通話を合わせて導入することをおすすめします。
まとめ
この記事では、二要素認証の仕組みや具体的な実装方法、また二要素認証を扱ううえでの注意点について解説しました。
オンラインで便利なサービスが増えるのに伴って、個人情報の流出や不正ログインなど、ユーザーの重要な情報を脅かすセキュリティリスクも増加してきています。
二要素認証の特徴をしっかりと整理し、これからの時代に合った認証システムを作り上げていきましょう。
KDDIウェブコミュニケーションズは、日本初のTwilioパートナーとして常に「開発者目線」を大切にしており、ブログ記事がお役に立てれば幸いでございます。
Twitter:https://twitter.com/twilioforkwc
2022.05.18
2022.04.18
2022.07.01
2022.08.23
2022.10.11
2022.05.24
2022.09.20
2022.11.02
2022.10.11
2022.09.20
2022.08.23