みなさん、こんにちは。9月4日(金)にビジネスセミナーをウェビナー形式にて開催いたしましたので、今回はそちらのレポートをお届けしたいと思います。
今回は「徹底解説!!Twilioで始める二要素認証 〜Programmable SMS/Verify/Authyの利用シーンとメリットをご紹介〜」をテーマに、弊社Twilio事業部エバンジェリストの高橋が、二要素認証の基本知識からTwilioで実現する二要素認証とその実装方法について解説いたしました。
目次
- 二要素認証とは?
- SMSを使った二要素認証の実装
- Twilio Verifyを使った二要素認証の実装
- Twilio Authyを使った二要素認証の実装
- まとめ
二要素認証とは?
まずは、最近よく耳にする「二要素認証」のおさらいからです。
そもそも認証技術は、大きく以下の3つに分類されます。
- SYK(その人しか知らない情報)認証
- SYH(その人しか持っていないモノ)認証
- SYA(その人がその人であるということ)認証
この3つの技術をさらに詳しくご説明していきます。
1つ目のSYKは、Something You Know(その人しか知らない情報)と言う英語の頭文字からきています。わかりやすい例としては、パスワードや、母親の旧姓、初めて行った海外の国など自分しかわからない情報のことを言います。
2つ目のSYHは、Something You Have(その人しか持っていないモノ)の頭文字からきており、例として鍵や、携帯電話、タブレットといった「モノ」が主となります。
3つ目のSYAは、Something You Are(その人がその人であること)の頭文字からきています。少しわかりづらいですが、その人しか持っていない特徴のことを指し、指紋や声紋、顔などの生体認証がこのSYAの技術に入ります。
以上の3つの内、2つの組み合わせ使って認証する技術を二要素認証(2 Factor Authentication)、2つ以上の組み合わせを使って認証することを多要素認証(Multi Factor Authentication)といいます。
二要素認証の利用目的として多いのが、サービスへのログインを安全に行ったり、オンライン送金など重要な行為の認証、アカウント作成時の重複登録防止、そしてパスワードを忘れた時に安全に復帰できるために使うなどです。
実際に二要素認証を実装するには、さまざまな検討事項があります。具体的には、そもそもどの認証技術を使うのか、SYH認証デバイスを紛失してしまった場合のリカバリープランやブルートフォースアタック(総当たり攻撃)の対策などです。
ではここからはTwilioで提供している機能をもとに、どのようなことができるかさらに詳しく見ていきましょう。
SMSを使った二要素認証
まず1つ目は、Twilioが提供するProgrammable SMSを利用して実施する方法です。SMSは変更されにくい電話番号を利用し、スマホだけでなく従来の携帯電話にも送信可能です。またSMSには、配信ステータスが確認できるメリットがあります。
しかしTwilioが提供する通常のSMSは、国内直収ではなく、国際SMSと呼ばれる海外経由での配信となります。そのため、海外番号からの通知を拒否しているユーザーは受け取ることができませんし、到達率も国内直収サービスに比べて劣ります。到達率を重視したい方には、別途「高品質SMS」と呼ばれる国内キャリア直収サービスもご用意しておりますので、ぜひご検討いただければと思います。
※「高品質SMS」ご利用には別途合意書の締結と審査が必要となります。
具体的に、TwilioのSMSを利用する場合は、Messaging APIを使うケースと、より詳細な設定ができるMessaging Serviceを使うケースの2種類があります。
|
Messaging API |
Messaging Service |
使用する電話番号 |
アメリカ番号 |
1通(セグメント)あたりの文字数制限 |
半角180文字、全角70文字 |
秒間送信数(1番号あたり) |
10通/秒 |
番号プールによる大量送信 |
× |
○ |
Alpha Sender IDの利用 |
× |
○ |
リアルタイム配信ステータスの確認 |
× |
○ |
配信の有効期限の設定 |
× |
○ |
上記の表の通り、Messaging ServiceはMessaging APIに比べて、より詳細な設定が可能です。例えばMessaging Serviceでは、番号プールと呼ばれる電話番号をプールしておける機能があり、短時間での大量送信をサポートします。また、送信元番号を英数字に変更できるAlpha Sender IDと呼ばれる機能や、リアルタイムな配信ステータスの確認、配信の有効期限を設定したりすることができます。

Twilio Verifyを使った二要素認証の実装
2つ目の方法は、Twilio Verifyを利用する方法です。Twilio Verifyは、主に電話番号の確認を目的としたマネージドされた認証サービスです。認証にはSMSだけでなく、音声通話やメールも利用可能で、各チャネルにおけるお客様での実装は不要となります。
先程説明したTwilioのSMSを使う二要素認証システムの場合、コード生成や突合ロジックをお客様側で実装する必要がありましたが、Twilio Verifyでは、この部分を全てTwilioの機能として提供しております。SMSを使う場合は、アメリカ番号の月額利用料(約152円)をお支払いいただく必要がありましたが、Twilio Verifyを使う場合は不要です。
また、ブルートフォースアタックへの対応や、配信ルートも国内キャリア直収ルートが使われるため、先ほどご紹介した「高品質SMS」と同等の到達率を実現します。「高品質SMS」を利用する場合に必要だった合意書の締結や内容の審査も不要となるため、アカウント作成後すぐに利用開始することができます。
Twilio Verifyを利用する場合の検討事項
- 通知されるメッセージ内容が固定となり、文面を変更することができない(ただし国指定により、その国の言語に併せた文面が採用されます)
- 発信元番号を指定できない(認証のたびに変わります)
- デバイスの紛失や番号変更の場合の実装が必要

Twilio Authyを使った二要素認証の実装
3つ目の方法は、Twilio Authyを利用する方法です。Twilio AuthyはTwilio Verifyにはない、いくつかの機能が付加されており、より二要素認証に特化したマネージドサービスになります。SMSや音声、メール以外にもスマートフォンやデスクトップアプリを使ったタイムベースのOTP(ワンタイムパスコード)認証ができます。
Twilio Authyには2つの特長があります。1つ目はTOTP(タイムベースのワンタイムパスワード)とPush認証ができるアプリを提供しているという点です。Twilio AuthyのアプリはiOS、AndroidやmacOS、Windows、Linux用のアプリが用意されています。また、TOTP機能はRFC6238に準拠しており、Google Authenticatorとも互換性があります。
2つ目の特長は、ユーザー管理機能が備わっている点になります。利用者の電話番号とメールアドレスをTwilio Authy側で保持しているため、エンドユーザ自身がアプリ経由で電話番号やメールアドレスの変更が可能になります。もちろん、Twilio Authy 用の管理コンソールを使って、ユーザの管理を行うこともできます。
Twilio Authyは、よくGoogle Authenticatorと比較されることがありますが、複数デバイスの登録ができる点が大きな違いとなります。これにより、例えば端末をなくした場合でも、別端末でリカバリーをすることが可能になります。なお、複数端末の登録を設定で禁止することも可能です。

Twilio Authyを利用する場合の検討事項
- Twilio Authyは利用するにあたって、ユーザのアプリインストールが必要(アプリは必須ではないが、アプリを利用しないとTOTPやPush認証が使えず、ユーザによるリカバリーもできない)。
上記の検討事項は、コンシューマ向けサービスでは障壁になる可能性がありますが、一方でアプリのインストールを強制することができる社内でのセキュリティ対策などには向いています。とくにTOTPは、オフラインでも利用ができるので、たとえば飛行機など電波の届かない場所での認証が必要になる場合などに効果を発揮します。
また、Twilio Authyは社内では特別専任チームが開発を行っており、より高いセキュリティレベルが保たれています。そのため、ログイン認証というセキュリティ監査基準の厳しい部分を、社外にアウトソースすることでリスクを移転できるというメリットもあります。
こちらのブログではご紹介しきれなかったSMS、Twilio Verify、Twilio Authyの詳細なご説明やデモはオンデマンド動画でご確認いただけます。ご視聴を希望される方は、下記フォームにて必要情報をご記入いただいた後に視聴することができますので、ご興味のある方はぜひご覧ください。
動画視聴申込フォーム