Google Authenticator セットアップキー 何桁?

著者:関 勝寿
公開日:2016年3月26日 - 最終更新日:2020年12月6日
キーワード: security

Google アカウントの2段階認証プロセスでは、Google 認証システムをモバイル端末にインストールして、QRコード(バーコード)を読み込ませることで、30秒ごとに変化する6桁の確認コードを生成することができる。通常のパスワード認証に加え、確認コードによる認証をすることで、セキュリティを高めている。Amazon, Microsoft, Facebook, Dropbox, GitHub 等多くのサービスで同じシステムが採用されている。この仕組みについて記す。

概要

Google 認証システムで採用されているRFC 6238の時間ベースのワンタイムパスワード (TOTP)は、サーバーとクライアントで共有する秘密鍵と現在時刻から、確認コードを計算するアルゴリズムである。

Google Authenticator セットアップキー 何桁?

Google のサーバーがランダムに生成した80ビットの秘密鍵(シークレットキー)QR コードあるいは16文字のBase32文字列(A-Z, 2-7)としてウェブブラウザに表示し、クライアント(モバイル端末にインストールしたGoogle 認証システムのアプリ)で読み取ることで、サーバーとクライアントに同じ秘密鍵が保存される。現在時刻は30秒ごとに値が変わるカウンターに変換されてから確認コードの6桁の数字が計算されてアプリに表示されるため、30秒間は同じ確認コードが表示される仕組みとなっている。なお、確認コードの計算アルゴリズムについては最後に記す。

秘密鍵と確認コード

ある時刻においてカウンターがサーバーとクライアントで等しければ、サーバーとクライアントで秘密鍵を共有しているため同じ確認コードが計算されるはずであるから、サーバーとクライアントで確認コードの計算結果が一致するかどうかで認証ができるとするのが TOTP アルゴリズムである。ここで、サーバーとクライアントではそれぞれNTPのような仕組みによってある程度正確に現在時刻を得ることができるという前提であり、RFC 6238では通信のタイムラグと時刻のずれを調整するための仕組みを実装することが推奨されている。

秘密鍵をモバイルアプリで読み込ませた端末を持っていなければ認証が成功しないことから、持っているものでアカウントを保護する仕組みであると説明される。端末を持っていなければ、漏洩した確認コードを知り得たとしても、30秒後にはその確認コードは無効となって認証が成功しなくなるためである。しかし、たとえば中間者攻撃によって素早く漏洩した確認コードが使われれば認証に成功してしまう。30秒間は何度でも同じ確認コードを使えるという意味ではワンタイムではない。サーバー側で最後に認証に成功した時のカウンターを記憶しておき、一致した時にはそのカウンターでは2回目は認証に成功させないようにすれば、真の意味でワンタイムになると考えられるが、RFC 6238ではそのような仕組みは提案されていないようである。

秘密鍵が漏洩すれば任意の時刻における確認コードを生成できるため、秘密鍵は適切なアクセス権限を設定して保存する必要があり、できれば耐タンパー性のあるデバイスに保存することが望ましいとされている。

TOTP に対応するサービス

Google 認証システムを使ってTOTPの確認コードを生成できるサービスには、例えば次のようなサービスがある。このように多くのサービスで同じモバイルアプリを使用できることが、このシステムの利便性であろう。

  • Google
  • Amazon
  • Microsoft
  • Twitter
  • Instagram
  • Facebook
  • Dropbox
  • Evernote
  • GitHub
  • WordPress
  • Slack
  • Discord
  • Yahoo! Japan - 秘密鍵の読み込み方法に注意

TOTP を計算するモバイルアプリ

TOTPをサポートするモバイルアプリには、例えば次のようなものがある。

  • Gooogle 認証システム (Android, iPhone, BlackBerry) - ソースコード
  • Microsoft Authenticator (Android, iPhone)
  • IIJ Smartkey (Android, iPhone)
  • Duo Mobile (Android, iPhone)
  • Token2 (Android, iPhone, Windows Phone)

複数端末への秘密鍵の登録

サーバーがQRコードを生成した時に、複数の端末でアプリから同じQRコードを読み込ませれば、同じ秘密鍵が登録されるため、どの端末からも同じ確認コードを生成できる。端末の紛失や故障、ソフトウェアの不具合によってモバイルアプリが起動できなくなった時のことを考えると、可能であれば2つ以上の端末に同じ秘密鍵を登録するのが望ましい。SMSや音声通話による2段階認証を設定する手段も有効である(端末を紛失しても電話番号の契約が継続していれば新しい端末で復活可能なため)。

Google 認証システムのアプリでは、アプリに登録されている秘密鍵をQRコードによってエクスポートできる。Microsoft Authenticator では、秘密鍵を一括してクラウドにバックアップすることができる。

IIJ SmartKey は、2016年の時点でアプリに登録されている秘密鍵をQRコードでエクスポートできるほぼ唯一のアプリとして重宝して使っていたが、2020年現在、著者が所有している iPad の中の1つで IIJ SmartKey が起動しなくなったため、これからは Google と Microsoft のアプリを使うこととした。

確認コードの計算アルゴリズム

RFC 6238 のTOTPアルゴリズムは、サーバーとクライアントで共有する秘密鍵と、現在時刻から計算されるカウンターから、一意にトークン TOTP すなわち確認コードを計算するアルゴリズムであり、RFC 4226 のHOTP(HMAC ベースのワンタイムパスワード)に基づいている。具体的には次のように計算する。

  • K秘密鍵TC現在時刻(UNIX時間)、X時間ステップ(秒)、T0カウント開始時刻(UNIX時間)、Nトークンの長さとする。また、ハッシュアルゴリズムを決める。デフォルトでは X=30, T0=0, N=6, ハッシュアルゴリズムは SHA-1 であり、Google 認証システムではこのデフォルトを使って計算をする。なお、HOTPでは秘密鍵は128ビット以上が必要で160ビットを推奨としているが、Google 認証システムでは80ビットである。
  • T = floor((TC - T0) / X) により、時刻T0からの経過時間に応じたカウンター T を64ビットの符号なし整数型で得る。ここで、floor は床関数であり、Tを整数型としておけば通常は自動的にfloor関数が適用される。
  • H = HMAC-SHA-1(K, T) により20バイトのハッシュ H を計算する。すなわち、HMAC-SHA-1 アルゴリズム (RFC 2104) によって秘密鍵KとメッセージTからハッシュHを計算する。
  • 下記の Truncate 関数を使い、TOTP = Truncate(H) として10進数N桁のトークン TOTP を計算する。

ここで Truncate 関数は RFC 4226 に定められている20バイト文字列から10進数N桁のトークンを得る次のような関数である。

  • 20バイト、すなわち160ビット文字列 String = String[0]…String[19] から31ビット文字列を得るDT関数 DT(String) を次のように定義する。String[19] の下位4ビットを符号なし整数に変換して Offset を得る(0 <= OffSet <= 15)。次に、P = String[OffSet]…String[OffSet+3] とする。Pは32ビットとなり、最上位ビットを除いた31ビットを DT(String) とする。
  • DT(String) を符号なし整数に変換した数字を Snum として、D = Snum mod 10^N を計算する。DはN桁以内の正の整数となる。DがN桁よりも少ない時には先頭に0を埋めて10進数N桁のトークンとしたものが、Truncate(String) である。

Coincheck(コインチェック)でのログインは Google Authenticator(Google認証システム)を利用し、セキュリティ強化を行っています。

本記事では Coincheck の二段階認証についてハマりやすいポイントを中心に解説します。

えっ!まだ使ってないの??:【稼げるブラウザBrave】仮想通貨BATの貯め方と換金方法

PCブラウザで二段階認証する時もスマホ認証アプリが必要になります。

予めダウンロードしておきましょう。

  • iPhone:Google Authenticator
  • Android:Google 認証システム

PC の Webブラウザから 2 段階認証の設定は以下の順番で行います。

  1. Coincheck画面での操作[f:id:team-creative-lab:20210509130202j:plain:alt="Coincheck二段階認証"]
    1. 取引アカウントでログイン
    2. 右側の[設定(歯車マーク)]→[2段階認証] をクリック
    3. 「設定する」をクリック → 認証メールが送られてきます
    4. 送られてきた認証メールのURLをクリック
  2. スマホでの操作[f:id:team-creative-lab:20210509130709j:plain:alt="Coincheck二段階認証"]
    1. Google Authenticator で QR コードを読み込みます
  3. Coincheck画面での操作
    1. セットアップキー(シークレットキー)を安全な場所に保管(私は iPhone メモ帳に保管しています)
    2. 生年月日入力
    3. Google Authenticator で生成された 6 桁の数字を入力
    4. 「設定する」をクリック

上記で二段階認証の設定が完了します。

二段階認証を設定後は、スマホアプリ、Webブラウザでログインsルウト期に Google Authenticator で表示されるワンタイムパスワード入力が必要となります。

このことにより、メアド+パスワード が第三者に流出したとしても、あなたのスマホに表示される二段階認証パスワードが無ければログインできなくなります。

えっ!まだ使ってないの??:【稼げるブラウザBrave】仮想通貨BATの貯め方と換金方法

iPhoneスマホ:Coincheck二段階認証の設定方法

iPhone での二段階認証は以下の流れで行います。

  1. Google Authenticator インストール
  2. Coincheck アプリでの二段階認証設定
  3. セットアプキーの保存
  4. Coincheck アプリと Google Authenticator 連携
  5. パスコードの確認

Google Authenticator インストール

<center<

Google Authenticator セットアップキー 何桁?

App Store から Google Authenticator をダウンロードします。

Coincheck アプリでの二段階認証設定

Google Authenticator セットアップキー 何桁?

Coincheck アプリで [ アカウント ] → [ 設定 ] → [ 二段階認証設定 ] と進みます。

セットアプキーの保存

Google Authenticator セットアップキー 何桁?

二段階認証設定で「QRコードを表示」をクリックし、表示された QR コードを長押ししてコピーし、安全な場所に保管しておきます。(私は iPhone メモ帳に保管しています)

Coincheck アプリと Google Authenticator 連携

Google Authenticator セットアップキー 何桁?

続いて「認証アプリ起動」をクリックします。

Google Authenticator が起動するので「トークンの追加」を行います。

トークンの追加がされると、Coincheck 用のパスコード(6桁の数字)が表示されるようになります。

パスコードの確認

Coincheck アプリを起動します。

Google Authenticator で表示されるパスコードでログインできることを確認します。

Androidスマホ:Coincheck二段階認証の設定方法

Android スマホでの Coincheck 二段階認証の設定の流れは iPhone と同じです。

Google Play ストアからダウンロードできるアプリは「Google 認証システム」という名称であり、iPhone の「Google Authenticator」と名称が異なることに注意が必要です。

  1. Google Play ストアから「Google 認証システム」アプリをインストール
  2. Coincheck アプリを開き [ アカウント ] → [ セキュリティ ] → [ 二段階認証設定 ] をタップ
  3. QR コードを長押ししセットアップキー(セキュリティキー)を安全に保管
  4. 「二段階認証アプリ起動」ボタンをクリック
  5. 最後に二段階認証を使ってログインできるかどうか確認します

https://faq.coincheck.com/s/article/20205?language=ja

えっ!まだ使ってないの??:【稼げるブラウザBrave】仮想通貨BATの貯め方と換金方法

機種変更時のCoincheck二段階認証を再設定する方法

機種変更した場合でも二段階認証の設定を引き継ぐことができます。

ただし引き継ぎには「セキュリティキー」が必要になります。

二段階認証の設定引き継ぎの手順を記載します。初期セットアップ時のセキュリティキーを準備しましょう。

参考:セットアップキーを使った2段階認証の設定方法|Coincheck

機種変更時の二段階認証再設定手順

  1. Google Authenticator アプリを起動します
  2. 「 + 」をクリック
  3. 「セットアップキーを入力」をクリック
  4. アカウントは任意の識別子(例:Coincheckアプリ)、キーにはセットアップキー(セキュリティキー)を入力
    Google Authenticator セットアップキー 何桁?
  5. 「追加」をクリック


www.youtube.com


www.youtube.com

えっ!まだ使ってないの??:【稼げるブラウザBrave】仮想通貨BATの貯め方と換金方法

Coincheck二段階認証が出来ない場合の対処方法

二段階認証でログインできない場合の症状と対策で多い 3 つの事例を紹介します。

  1. 最新のパスコードを入手する
    Google Authenticator で取得するパスコードの有効期限は 30 病です。そのため、パスコードの有効時間が過ぎた場合はログインできない状況になります。パスコードが切り替わってから表示される新しいパスコードで再度実施してみましょう。
  2. スマホの時刻を確認する
    Google Authenticator パスコードの有効時間は 30 秒です。スマホの時刻がずれていると認証されません。海外旅行等で日付変更線を超えた場合は注意が必要です。
  3. 上記でも出来ない場合は、一度2段階認証を解除して再設定してみましょう。

Coincheck二段階認証を解除するやり方

Google Authenticator セットアップキー 何桁?

ログイン時の二段階認証画面で「認証アプリが使えない方」をクリックします。

その後に表示される案内に従って解除の手続きを行います。

電話番号、メールアドレスが変更となっている場合は、Coincheckサポートへのメールでの問い合わせ&解除手続きが必要となります。

以下のヘルプページを参考にお問い合わせください。

ヘルプページ:2段階認証によるログインができません

えっ!まだ使ってないの??:【稼げるブラウザBrave】仮想通貨BATの貯め方と換金方法

Coincheckのセットアプキー(シークレットキー)を忘れた場合の確認方法

セットアップキー(シークレットキー)を紛失してしまった場合は一度2段階認証を解除する必要があります。

上述の通り、ログイン時の二段階認証画面で「認証アプリが使えない方」をクリックし解除の手続きを行います。

解除後、再び設定を行います。

メールアドレスと電話番号が登録内容から変更になっている場合は、サポートへのメール問い合わせが必要になります。

以下のヘルプページからお問い合わせください。

ヘルプページ:2段階認証によるログインができません

えっ!まだ使ってないの??:【稼げるブラウザBrave】仮想通貨BATの貯め方と換金方法

Google Authenticatorのセットアップ方法は?

設定方法について.
対応OSのストアより「Google Authenticator」で検索し、アプリに端末をダウンロードします。.
アプリを起動します。 ... .
対象WEBサイトとの連携方法として「QRコードをスキャン」か「セットアップキーを入力」の2通りの方法を選択することができます。.

コインチェック セットアップキー 何桁?

スマートフォン端末での操作 最後に、設定が完了したら表示されている6のパスコードをブラウザ(Webサイト)でのログイン時に入力し、Coincheckアカウントに2段階認証の設定をお願いします。

Google Authenticatorの復元コードは?

Google Authenticatorなどのアプリを使用して二段階認証コードを生成した後に、そのアプリがインストールされたスマートフォンを使えなくなった場合、二段階認証の設定した際の回復用キーを使って、別のスマートフォンで認証コードを取得できます。 この回復用キーは、メモしたり、USBドライブに保存できます。

セットアップキーとは何か?

セットアップキーは、2段階認証を設定する際にのみ表示されます。 控えたセットアップキーによって、機種変更や端末の初期・故障の時など、急なトラブルの際に別の端末でパスコードを生成できます。 取得したキーは、大切に保管しておきましょう。