パーポーフルート公式ブログ
【リリース】【アプリ紹介】TOTP Tool

2020/11/28
テーマ: リリース / 2020 / すべて


iPhone を機種変更した時 に Google Authenticator の移行ができなくて面倒だったので、otpauth URL をコピペすると その URL に対応する QR コードを生成するツール "TOTP tool" を作りました。

TOTP tool

使い方や特徴

  • otpauth URL は各自どこか安全な所に保管しておく前提。
  • 新しいスマホの Google Authenticator に otpauth URL を読み込ませたい場合、以下のことを行う。
  • otpauth URL を改行区切りでいくつか並べたテキストを作って TOTP tool のテキストエリアにコピペする。
  • TOTP tool に QR コードが出てくるので Google Authenticator などの TOTP アプリで読み込む。
  • おまけで現在時刻における TOTP の表示もできる。

otpauth URL を書いたテキストの例

otpauth://totp/SampleSecret1?secret=aaaaaaaaaaaaaaaaaaaaaaaaaaaaa
otpauth://totp/SampleSecret2?secret=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 になります(大まかな説明)。
  • ということで、otpauth URL だけメモっておけば TOTP アプリが変わっても OTP ジェネレータを復元できます。

考察、作ってみた感想

  • 入力された otpauth URL はどこにも送信しないようになっておりソースコードからそれを確認することができますが、secret が他人に漏れると危険なので、使う場合は念のためご自身で確認してから使った方が良いです。
  • あるいはこのツールを使うときだけ通信手段をすべて OFF にするとかでもいいかもです。
  • 入力された secret がどこにも送信されない html であることがブラウザなりなんなりのツールで保証できるといいんですが、今の所できないようですねぇ。
  • ともかくこれで TOTP アプリの移行が楽になりました。めでたしめでたし。

2020/11/28
テーマ: リリース / 2020 / すべて