【アプリ紹介】Google Authenticator 移行ツールを作った
2020/11/28
テーマ: リリース / 2020 / すべて
iPhone を機種変更した時 に Google Authenticator の移行ができなくて面倒だったので、secret をコピペすると otpauth URL を含む QR コードを生成するツール "TOTP tool" を作りました。
TOTP tool
使い方や特徴
- ラベル(サービス名)と secret は各自どこか安全な所に保管しておく前提。
- 新しいスマホの Google Authenticator に secret を読み込ませたい場合、以下のことを行う。
- ラベルと secret を改行区切りでいくつか並べたテキストを作って TOTP tool のテキストエリアにコピペする。
- TOTP tool に QR コードが出てくるので Google Authenticator などの TOTP アプリで読み込む。
- おまけで現在時刻における TOTP の表示もできる。
ラベルと secret を書いたテキストの例
Sample Secret 1
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Sample Secret 2
bbbbbbbbbbbbb
技術的な解説
- いろんなサービスで 2FA 設定するときに出てくる QR コードにはだいたい otpauth URL が入っています。
- otpauth URL の例:
otpauth://totp/label?secret=aaaaaaaaaaaa
- label の部分が Google Authenticator の各エントリに表示されるラベルです。値は人間が識別できればなんでも良いです。サービス名が含まれないとわけがわからなくなります。
- secret=??? の部分は秘密鍵です。
- 6 桁の OTP(one time password) は floor(unixtime / 30) を秘密鍵で HMAC-SHA1 した結果の一部 mod 10^6 になります(大まかな説明)。
- ということで、label と secret だけメモっておけば TOTP アプリが変わっても OTP ジェネレータを復元できます。
考察、作ってみた感想
- 入力された secret はどこにも送信しないようになっておりソースコードからそれを確認することができますが、secret が他人に漏れると危険なので、使う場合は念のためご自身で確認してから使った方が良いです。
- あるいはこのツールを使うときだけ通信手段をすべて OFF にするとかでもいいかもです。
- 入力された secret がどこにも送信されない html であることがブラウザなりなんなりのツールで保証できるといいんですが、今の所できないようですねぇ。
- ともかくこれで TOTP アプリの移行が楽になりました。めでたしめでたし。
2020/11/28
テーマ: リリース / 2020 / すべて