Chromium用。
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 2018-06-27
- Chromium 65.0.3325.181
アドオン
方法
- インストール
- 登録
- コード生成
1. インストール
- ブラウザ起動
- authenticatorにアクセスする
インストールをクリックする- ブラウザ上部に
Authenticatorのボタンができる
2. 登録
- ブラウザ上部の
Authenticatorボタンをクリックする Edit(鉛筆アイコン)をクリックする

+(追加)をクリックする

手動入力をクリックする

アカウント名とシークレットに各サービスから取得した任意の値を入力する

- 算出方式を選択する(タイムベース(TOTP)で大体OKだろうが各サービスに合わせる)

OKボタンをクリックする
3. コード生成
- ブラウザ上部の
Authenticatorボタンをクリックする - 登録したアカウントのコードが表示されている

- クリックするとコピーされる

あとはコードを入力するサイトにペーストすればいい。30秒ごとにコードが変化するので予めサイトを用意しておくと良い。
問題
- 登録しづらい
- セキュリティ下がる
登録しづらい
登録時、Authenticatorのエディタを開いたままコピペできない。
アカウント名とシークレットを入力するとき、それぞれを他のテキストエディタ等からコピーしようとウィンドウを移動させると、Authenticatorのエディタ画面が閉じてしまう。
対策
- A
アカウント名とシークレットを予めまとめてクリップボードにコピーしておく - B
authenticatorのエディタ画面で一旦適当な値を入力して保存し、エクスポートし、値を変更してインポートする
Aのほうが楽だが、今回は authenticatorアドオンの機能確認もしたいのでBにする。
B. インポート案
- ブラウザ上部の
Authenticatorボタンをクリックする Edit(鉛筆アイコン)をクリックする

+(追加)をクリックする

手動入力をクリックする

- 適当な値を入力して保存する(アカウント名:
ACCOUNT, シークレット:SECRET)

設定をクリックする

エクスポート/インポートをクリックする

バックアップファイルのダウンロードをクリックする

authenticator.jsonファイルがダウンロードされる- テキストエディタでファイルを開き、
accountとsecretの値を任意に変更する - ブラウザ上部の
Authenticatorボタンをクリックする 設定、エクスポート/インポート、バックアップのインポートをクリックする

- ブラウザで
Authenticatorの新しいタブが開くのでバックアップのインポートをクリックする

- 編集した
authenticator.jsonを選択してOpenボタンをクリックする 成功しました。と表示される

以下、バックアップファイルの書式。
authenticator.json
{
"44c7be48226ebad5dca8216674cad62b": {
"account": "ACCOUNT",
"counter": 0,
"encrypted": false,
"hash": "44c7be48226ebad5dca8216674cad62b",
"index": 0,
"issuer": "",
"secret": "SECRET",
"type": "totp"
}
}
セキュリティ下がる
authenticatorを使えばすぐにコードを入力できて便利だが、セキュリティの強度は下がる。
バックアップファイル
たとえばバックアップファイルやデータを抜き取られる可能性がある。離席時に操作されたり、遠隔操作されたらアウト。
アカウント名
おそらくアカウント名にはサービスとアカウント名を入力するだろう。つまり、サービス、アカウント名、トークン(コード)が紐付いてしまう。
ブラウザ一元管理
ブラウザには標準でパスワード管理機能がある。authenticatorでトークンも保存してしまうと、サービス、アカウント名、パスワード、トークンが紐付いたデータが揃ってしまう。
要するに、ブラウザで一元管理してしまっているのが問題。ブラウザからデータを抜き取られたらアカウントが乗っ取られる。
本来の二要素認証はスマホなどPCとは別のデバイスに分散するからこそセキュリティを保てる。
アドオンの危険性
Stylishというアドオンが裏でユーザの閲覧URLを盗み取っていたというニュースがあった。アドオンならそんなこともできてしまうらしい。authenticatorは大丈夫なの? 今は大丈夫でもいつかこっそりアップデートで変更されたりしない? それをどうやって判断すればいいの?
設定、ソースコードで実装を確認できそう。でもインストールされたものと違うかもしれない。SHAで一致確認したり、通信を監視するなどしないと安全確認ができない。

DropBoxへ自動バックアップ
設定の項目にDropBoxへ自動バックアップとある。鍵であるトークンをオンラインストレージにアップロードしてしまうのは危険ではないのか?

利便性とセキュリティリスクはトレードオフ。どちらかを取ればどちらかを失う。理解して使うべき。
私は使いたくない。そもそもトークンは自分のみが持っているべき。わざわざ外部サービスにアップロードなどして漏洩したらどうするの。
代わりにUSBメモリを使ってバックアップファイルを別マシンに移したり、ファイアウォールを立ててLAN内通信で受け渡すのが安全。
二要素認証とは?
そもそも二要素認証とは? 本人確認する手段のひとつである。
多要素認証
アクセス権を得るのに必要な本人確認のための要素(証拠)を複数、ユーザーに要求する認証方式である。
従来はパスワードだけだった。多要素認証はパスワードに加え、トークンや生体認証を使う。
二要素認証(2FA)、二段階認証、ワンタイムパスワード(OTP)などともいう。
以前
GitHubで二要素認証しようと試みたことがある。
スマホ持ってないし、電話番号も渡したくなかった。そこでトークンから6桁のコードを算出するツールを用いた。
WindowsならWinAuth、Linuxなど他のOSならpyotpというツールを使った。これと同じことができるのが今回のauthenticator。