Deep Insider の Tutor コーナー
>>  Deep Insider は本サイトからスピンオフした姉妹サイトです。よろしく! 
Azure逆引きリファレンス[PR]

Azure Central Azure逆引きリファレンス[PR]

iPhone/Androidの2段階認証アプリ「Authy」で複数デバイス対応(Microsoftアカウント編)[PR]

2016年11月17日

パスワード漏えい問題が頻発する現在ではログインの2段階認証は必須だ。人気アプリ「Authy」を使って、各種スマホ&PCブラウザーなど複数デバイスで2段階認証用のトークンを取得する方法を紹介する。

デジタルアドバンテージ 一色 政彦
  • このエントリーをはてなブックマークに追加

 今やほとんどの人がAzureだけでなくLINEやGoogleなど多数のサービスを日常的に使用し、それらのサービスへのログインではパスワードを使用しているだろう。しかし、使用するサイトが無数にあるため、各サイトで別々のパスワードを登録するのは現実的には非常に困難である。結果的に、ほとんどの人が同じパスワードをいくつかのサイトで使い回してしまっているのではないだろうか。このような場合、どこか1つのサイトが悪意のある第三者によって侵入され、パスワードが盗まれてしまうと、他のサービスにも危険が及んでしまう。例えば、Facebookなど個人情報が詰まったサイトの内容を閲覧されて外部に公開されたり、Twitterアカウントなどが乗っ取られたままログインできなくなったりする可能性があるのだ。

 このようなログインに関するセキュリティ問題を回避するために考え出されたのが、2段階認証だ(厳密には「Two-factor authentication2要素認証」という名称で、2要素以上もあり得るので「Multi-factor authentication多要素認証」と呼ばれることもある)。これは、1段階目のパスワード認証の他に、2段階目の別の認証(例えば、カードに記載された乱数表や、別デバイス上で生成されるワンタイムパスワードなど)を組み合わせて、2段階の検証Two-step verification)を必須にした認証のことである(2段階認証については「Google 2 段階認証プロセス」が参考になる)。その2段階目の認証方法として最もよく採用されているのが「別デバイスで生成されたワンタイムパスワードによる認証」で、前述のAzure/Googleなどでもこれが採用されている。

 ワンタイムパスワード(=サービスによっては「認証用コード」や「セキュリティコード」とも呼ばれる)を取得する方法には一般的に、

  • SMSによる通知
  • 電話による通知
  • 2段階認証アプリ

などがあり、最近では2段階認証アプリ(=サービスによっては「本人確認アプリ」とも呼ばれる)の利用が推奨されているケースが多い。ちなみに細かな話になるが、ワンタイムパスワード(OTP:One Time Password)の生成アルゴリズムには標準仕様(回数ベースのHOTPと時間ベースのTOTP)が存在し、これのおかげで各種サービスのワンタイムパスワード生成を1つの2段階認証アプリで管理できるようになっている(一般的にはTOTPが採用されている)。

 その2段階認証アプリとして、iPhone/Android/Windows Phone向けには主に以下のようなものがある。

  1. Authy
  2. IIJ SmartKey
  3. Google Authenticator
  4. Microsoft Authenticator
  5. Salesforce Authenticator

 1~2は2段階認証のために作られたアプリで、3~5は自社のサービスへのログイン用に作られた(と考えられる)アプリではあるが他社のサービスも登録可能になっている。この中で一番多くの人に使われているのは3のGoogle Authenticatorであると想像されるが、これの使い方については「Azureアカウントを取得したら最初にやっておくべき初期設定」で説明した(4の使い方も説明している)。

 「ではGoogle Authenticatorで全て事足りるのか」というと、そうではないケースもある。

 例えば、「(1)何らかの都合でiPhone/Androidデバイスを2台以上使うケース(もしくはスマートフォンを買い換えたケース)」では、1台目のデバイスに2段階認証用のサービスアカウントをセットアップしておき、後から追加で2台目のデバイス向けにもセットアップしたとすると、それ以前のセットアップ(つまり1台目のデバイスで生成されるワンタイムパスワード)は無効になってしまう。つまりGoogle Authenticatorでは、基本的にデバイスを新規追加して2台で同時に使うことはできないということだ*1。この問題は、新しいiPhone/Android端末に買い換えた場合にも発生し、新しい端末にインストールしたGoogle Authenticatorに対して全てのサービスアカウントの再登録が必要になってしまう。これはかなり面倒くさい。

  • *1 ちなみに、QRコードをスキャンすることで、2段階認証アプリにサービスアカウントをセットアップする方法が一般的だが、そのQRコードを複数台の全てのデバイスでスキャンすれば、その全デバイスで同じワンタイムパスワードを生成できるようになる。こうすることでも、2段階認証アプリの複数デバイス対応は可能である。ただし、デバイスの買い換えや追加が発生すると、全デバイスでスキャンし直す手間が発生するので、あまり現実的な手段とはいえないだろう。

 また、筆者自身の仕事でよくあるのだが、「(2)会議中など手元にスマートフォンがない状況で、PCでサイトを閲覧中に再ログインが要求されてしまうケース」では、2段階認証のワンタイムパスワードがすぐに得られずに今すぐ必要な目的のページが開けなくて困ってしまうことがある。

 こういった「(1)複数台のスマートフォン所有」や「(2)スマートフォンの非携帯時」の問題を回避するには、1や2の専門アプリの複数デバイス対応機能が役立つ。そこで本稿は、比較的人気が高いAuthyを使って、複数デバイスで2段階認証用のワンタイムパスワードを取得できるようにする方法を説明する(日本ではIIJ SmartKeyも人気のようであるが、iPadで使えなかったので本稿での紹介は断念した)。

Authyの使い方と複数デバイス対応

 それでは「習うより慣れろ」で、実際に使ってみよう。

Authyのインストール

 まずは無料アプリのAuthyをiPhone/Android/iPadなどのスマートフォンにインストールする(残念ながらWindows Phone向けにはアプリが提供されていない)。

 3つ目に「Chrome拡張機能」*2とあるが、Authyはスマートフォン/タブレットだけでなく、WebブラウザーのChromeを使うことでWindows PCやMacなどでも使用できるのが特長だ*3。このようにAuthyは、クロスプラットフォーム&マルチデバイス対応を実現している。

  • *2 現時点で、AuthyのChrome拡張機能は、内部でAuthyのChromeアプリを使う仕様となっている。ただし、「Chromeアプリ」という仕組み自体が2018年には廃止される予定なので、注意が必要だ。今後、Chrome向けのAuthyが、これにどのように対応していくのかは不明である(現時点で筆者は調べ切れていない)。
  • *3 ただし、1段階目のパスワードと、2段階目のワンタイムパスワードを同じChromeで管理することは、それらが別々のデバイスに分かれている場合に比べてセキュリティリスクがより高まることは理解しておいた方がよいだろう。

 各種デバイスへのアプリ/拡張機能のインストール方法はいずれも難しくないので説明を割愛する。

Authyアプリの初期設定と起動

 インストールが完了したら、アプリを起動してみよう。図1の手順で電話番号とメールアドレスを入力して、それらが本当に正しいかが確認されたら、アプリが起動する(この例はiPhoneだが、Androidでも同様の手順である)。

[+Code](電話番号の国コード)をタップ

[+Code](電話番号の国コード)をタップ

「Japan (+81)」をタップして選択

「Japan (+81)」をタップして選択

[Authy cellphone number]欄をタップして電話番号を入力

[Authy cellphone number]欄をタップして電話番号を入力(このとき、電話番号の最初の「0」は入力しなくてよい)

[Email Address]欄に任意のメールアドレスを入力

[Email Address]欄に任意のメールアドレスを入力

[Phone call]ボタンもしくは[SMS]ボタンをタップ

[Phone call]ボタンもしくは[SMS]ボタンをタップ

この例では[Phone call]を選んだ。登録コード(registration code。この例では「29」)が表示されるので、記憶もしくはメモする。30秒以内に電話が掛かってくるので電話に出る

この例では[Phone call]を選んだ。登録コード(registration code。この例では「29」)が表示されるので、記憶もしくはメモする。30秒以内に電話が掛かってくるので電話に出る

電話は英語だが「登録コードを入力してください」という内容なので、先ほどの登録コード(この例では「29」)をキーパッドを使って入力すると、iPhoneの場合は「通知送信の許可」のポップアップが表示されるので[許可]ボタンをタップする

電話は英語だが「登録コードを入力してください」という内容なので、先ほどの登録コード(この例では「29」)をキーパッドを使って入力すると、iPhoneの場合は「通知送信の許可」のポップアップが表示されるので[許可]ボタンをタップする

図1 Authyアプリの初期設定と起動

以上の手順でアプリが起動する

図1 Authyアプリの初期設定と起動

Authyアプリへの各種サービスアカウントの登録

 次に、2段階認証が必要なサービスのアカウントを登録する。本稿では「Azureを利用する」という想定でMicrosoftアカウントを登録する。Microsoftアカウントに対する2段階認証の設定方法や一般的な認証アプリの使い方は、「Azureアカウントを取得したら最初にやっておくべき初期設定」の「二段階認証」「Google Authenticatorなどの認証アプリを使う場合」の節で説明しているので併せて参照してほしい。

 サービスアカウントの登録方法は、Google Authenticatorなど一般的な2段階認証アプリとほとんど変わらない(図2)。ただし初回登録時には、図2のようにアカウントデータを暗号化してバックアップするためのパスワードが要求されるので注意してほしい。

[+]ボタンをタップして最初のアカウントの登録を開始する

[+]ボタンをタップして最初のアカウントの登録を開始する

任意のバックアップ用パスワードを入力して[Enable Backups]ボタンをタップ。これによりバックアップ機能が有効になる。なお、有効化される前にパスワードを確認されるので同じものを再入力する必要がある

任意のバックアップ用パスワードを入力して[Enable Backups]ボタンをタップ。これによりバックアップ機能が有効になる。なお、有効化される前にパスワードを確認されるので同じものを再入力する必要がある

[Scan QR Code]ボタンをタップする(もちろんその前に、対象サービスのアカウントにおける2段階認証用のQRコードを表示しておかなければならない)

[Scan QR Code]ボタンをタップする(もちろんその前に、対象サービスのアカウントにおける2段階認証用のQRコードを表示しておかなければならない)

カメラが起動するのでQRコードをスキャン

カメラが起動するのでQRコードをスキャン

図2 Authyアプリへの各種サービスアカウントの登録

スキャンしたサービスとアカウントが間違いなければ[Done]ボタンをタップする(この後、TwitterやFacebookにシェアするためのポップアップが出るが、[×]ボタンで閉じてよい)。これで完了だ

画面の下部でサービスアカウントを選択したり、[+]ボタンでさらに追加したりできる。サービスアカウントを選択すると、ワンタイムパスワード(token)が表示され、30秒ごとなど一定間隔で更新される。右下の[Copy]マークをタップすると、ワンタイムパスワードをコピーできる(他のアプリの入力欄にペーストできる)

画面の下部でサービスアカウントを選択したり、[+]ボタンでさらに追加したりできる。サービスアカウントを選択すると、ワンタイムパスワード(token)が表示され、30秒ごとなど一定間隔で更新される。右下の[Copy]マークをタップすると、ワンタイムパスワードをコピーできる(他のアプリの入力欄にペーストできる)

図2 Authyアプリへの各種サービスアカウントの登録

 特に難しいところはないだろう。

別のデバイスでのAuthyの初期設定

 2台目以降のAndroid/iPhoneデバイスでAuthyアプリをインストールして使い始める場合も、先ほどの説明と同様に初期設定したうえで起動できるが、既存デバイスを使って初期設定を簡略化することもできる。例えば図3はiPadにインストールしたAuthyアプリで先ほどと同じ電話番号を入力した後の画面だ。このように[Phone call]/[SMS]ボタンに加えて[Use existing device]ボタンが新たに表示されるようになるので、これをタップすればよい。

図3 別のデバイスでのAuthyの初期設定を、既存デバイスを使って簡略化する方法

 すると、既存デバイス側(本稿の例ではiPhone)のAuthyアプリで、新規デバイス(本稿の例ではiPad)の追加を許可(Accept)するか拒否(Deny)するかを問う表示になるので、図4の手順で許可すればよい。

[Accept]ボタンをタップ

[Accept]ボタンをタップ

図4 既存デバイス側で、別の新規デバイスの追加を許可する

許可の再確認が行われるので「yes」を入力して[OK]ボタンをタップ。これにより実際に追加される

図4 既存デバイス側で、別の新規デバイスの追加を許可する

 デバイスが追加されると、新デバイス側(本稿の例だとiPad)では図5の流れでAuthyアプリを起動できる。あとは既存デバイスと同じように使える。

既存デバイスで設定したバックアップ用パスワードを入力して[Unlock Accounts]ボタンをタップ

既存デバイスで設定したバックアップ用パスワードを入力して[Unlock Accounts]ボタンをタップ

図5 新デバイスでもAuthyが起動した

新デバイスでアカウントがロック解除されて、Authyアプリが起動する

図5 新デバイスでもAuthyが起動した

ChromeでのAuthyアプリの利用方法

 最後に、Chrome拡張機能として提供されているAuthyを使う方法を簡単に紹介する。といっても、起動手順や使い方などAndroid/iPhone向けアプリとほとんど違いはない(図6)。Chromeの場合、[Master password]の設定が必要な点だけが異なる。

Chrome拡張機能のAuthyがインストールされると、Chromeのブックマークバー上に[Authy]アイコンが表示されるのでクリックする。ChromeアプリとしてのAuthyがインストールされていない場合は[Download]ボタンが表示されるので、ここでインストールする

Chrome拡張機能のAuthyがインストールされると、Chromeのブックマークバー上に[Authy]アイコンが表示されるのでクリックする。ChromeアプリとしてのAuthyがインストールされていない場合は[Download]ボタンが表示されるので、ここでインストールする

初回起動時には、前掲の図3とほぼ同じ画面が表示されるので、[Use existing device]ボタンをクリックして初期設定を済ませて、Authyを起動する

初回起動時には、前掲の図3とほぼ同じ画面が表示されるので、[Use existing device]ボタンをクリックして初期設定を済ませて、Authyを起動する

起動すると、左上の[Settings](歯車)ボタンに[!]マークが表示されているのでこれをクリック

起動すると、左上の[Settings](歯車)ボタンに[!]マークが表示されているのでこれをクリック

[Settings]ダイアログが表示されたら、[Master password]欄にChrome拡張専用のマスターパスワードを入力して[Set]をクリック。確認を求められるので[Confirm password]欄に再入力して[Save]をクリックすれば完了だ。右上の[×]ボタンを押してダイアログを閉じよう

[Settings]ダイアログが表示されたら、[Master password]欄にChrome拡張専用のマスターパスワードを入力して[Set]をクリック。確認を求められるので[Confirm password]欄に再入力して[Save]をクリックすれば完了だ。右上の[×]ボタンを押してダイアログを閉じよう

Authyアプリ上に表示されるサービスアカウントをクリックすると、バックアップ用パスワードの入力が求められるので、図2で設定したものを入力して[Decrypt Account]ボタンをクリックする。これにより、暗号化されているバックアップデータが解読されてChromeのAuthyアプリ上にリストアされる

Authyアプリ上に表示されるサービスアカウントをクリックすると、バックアップ用パスワードの入力が求められるので、図2で設定したものを入力して[Decrypt Account]ボタンをクリックする。これにより、暗号化されているバックアップデータが解読されてChromeのAuthyアプリ上にリストアされる

図6 ChromeでのAuthyアプリの利用方法

以上の作業でChromeが使えるところならどこでもAuthyが使えるようになった

図6 ChromeでのAuthyアプリの利用方法

 個人利用であれば、Authyは本稿の内容だけで十分使いこなせるだろう。1点だけ分かりにくいと感じたのが、登録済みのサービスアカウントの削除方法だが、これは[Settings]ダイアログの中の[External Accounts](スマートフォン上では[Accounts])の[Delete](ゴミ箱)ボタン(=スマートフォンでは項目行を右から左へスワイプすると表示される)を使えば行える。

 Authyの業務利用も想定されているらしく、日本では「Twilio AUTHY | Twilio for KDDI Web Communications」というサイトでサービス提供が「準備中」となっている。

 また、「ワンタイムパスワードの生成」機能(AuthyではSoftTokenと呼ばれている)の他にも、OneTouch有償のOneCodeなどの機能も提供されている(各機能の説明は上記の日本語サイトを参照してほしい)。

 プログラマー向けには、TOTP(時間ベースのワンタイムパスワード) API(OneCode&SoftToken用)やOneTouch APIなどが提供されているので、気になる方は公式ドキュメントAPIリファレンス(Twilio内のAuthyページ)(いずれも英語)を参照するとよい。

※以下では、本稿の前後を合わせて5回分(第5回~第9回)のみ表示しています。
 連載の全タイトルを参照するには、[この記事の連載 INDEX]を参照してください。

Azure逆引きリファレンス[PR]
5. 設計時に使えるAzure/AWSサービス・アイコン集とダウンロード方法[PR]

クラウド上のシステムやサービスを設計する際には、視覚的に分かりやすいアイコンを使おう。アイコンセットのダウンロード方法を示し、各アイコンを用いてAzure/AWSサービスの対応一覧表をまとめる。

Azure逆引きリファレンス[PR]
6. Azureアカウントを取得したら最初にやっておくべき初期設定[PR]

Azureを使い始めたら、特に重要なセキュリティ設定を初めに済ませよう! Azureアカウント保護(二段階認証)/アクセス制御(IAM)/セキュリティセンターの設定方法を説明。さらに各種アラートの作成方法や、入門者にお勧めのコンテンツも紹介する。

Azure逆引きリファレンス[PR]
7. 【現在、表示中】≫ iPhone/Androidの2段階認証アプリ「Authy」で複数デバイス対応(Microsoftアカウント編)[PR]

パスワード漏えい問題が頻発する現在ではログインの2段階認証は必須だ。人気アプリ「Authy」を使って、各種スマホ&PCブラウザーなど複数デバイスで2段階認証用のトークンを取得する方法を紹介する。

Azure逆引きリファレンス[PR]
8. Azure VMでLinuxインスタンスを起動したら最初にやっておくべき初期設定[PR]

Azure仮想マシンでLinuxインスタンスを立ち上げたら、SSH接続のための設定や、スワップファイルの有効化、タイムゾーンの設定、Azure CLIのインストールは必ず行いたい。その設定方法を紹介する。

Azure逆引きリファレンス[PR]
9. 分かりにくいAzure BLOBの料金を事前にある程度推測する方法[PR]

新規作成時にVMサイズや価格レベルを選択できるサービスに比べて、従量課金型のBLOBストレージは実際に使ってみるまでいくらになるのか料金が分からない。実際の料金と照らし合わせながら、使い始める前にその推測値を計算する方法を紹介する。

サイトからのお知らせ

Twitterでつぶやこう!