2要素認証(2FA : 2 factor authentication)のためのワンタイムパスワード(OTA : one time password)アプリ間で、秘密鍵(テキスト文字列)を使ってアカウント情報を相互にコピーする手法のメモ
主なOTP認証アプリ
Android版
Windows版
Linux版
- コマンドラインでoathtoolを用いてOTPを計算
Google認証システムから秘密鍵をエクスポートする方法
Google認証システム(Google Authenticator)の「アカウントの移行」メニューを使って表示されるQRコードは、他のOTPアプリでは読み取れない独自仕様。
このQRコードから秘密鍵をエクスポートすれば、他の認証アプリでインポートすることができる。
アカウント一覧画面で右上のメニューをクリックすると、次のようなメニューが表示される
このQRコードは、いまのところGoogle認証アプリのみで読み込み可能で、他のアプリでは認識できない。
QRコードをGoogleレンズなどのQRコード解読アプリで読み取ると、コードの文字列が得られる
GoogleレンズでデコードしたGoogle認証アプリのエクスポート用QRコード
otpauth-migration://offline?data=Ci4KFNZQeQbrLliQiQ5jrD0moXB0VwHnEhB0ZXN0MUBnb29nbGUuY29tIAEoATACEAEYASAAKITm1LIG
GoogleレンズでデコードしたこのようなURIを、いったんテキストファイルに格納し、PCに転送する。
Google Authenticator migration decoder (GitHub)より otpauth-migration
のデコーダを入手。(画面上のReleasesメニューより、WindowsまたはLinuxの実行ファイルをダウンロードできる)
コマンドラインよりデコーダを実行すると、秘密鍵が得られる
Windowsのコンソールで実行
> .\otpauth.exe -link "otpauth-migration://offline?data=Ci4KFNZQeQbrLliQiQ5jrD0moXB0VwHnEhB0ZXN0MUBnb29nbGUuY29tIAEoATACEAEYASAAKITm1LIG"
otpauth://totp/test1@google.com?algorithm=SHA1&digits=6&period=30&secret=2ZIHSBXLFZMJBCIOMOWD2JVBOB2FOAPH
Google認証システムで秘密鍵をインポートする方法
Google認証システムで秘密鍵をインポートするには、「セットアップコードを入力」をクリック
「アカウント名」は適当な文字列を入力可。
andOTPから秘密鍵をエクスポートする方法
表示された秘密鍵はテキストコピー可能です。
andOTPから秘密鍵をQRコード方式でエクスポートする方法
アカウントの右側にあるメニューボタンより、QRコードを表示をクリックする。
QRコードをデコードすると、直接秘密鍵が格納されている素直な設定
otpauth://totp/test1%40google.com?secret=2ZIHSBXLFZMJBCIOMOWD2JVBOB2FOAPH&issuer=test1%40google.com
andOTPで秘密鍵をインポートする方法
Google認証システム以外のOTPアプリで作成した、エクスポート用QRコードなら、直接QRコードを読み取れば秘密鍵がインポートされる。
ここでの説明は、秘密鍵がテキスト形式で得られた場合の方法。(Google認証システムから移行する場合も、いったん秘密鍵をテキスト形式にするため、この方法を使う)
andOTPで秘密鍵をインポートする場合は、「詳細を入力」をクリック
「発行者」「ラベル」は任意の文字列を入力してかまわない
WinAuthから秘密鍵をエクスポートする方法
Windows版OTP認証アプリのWinAuthでは、エクスポートは秘密鍵とQRコード方式、インポートは秘密鍵のみ対応となっている。
アカウントの上で右クリックすると、コンテキストメニューが表示される。秘密鍵・QRコードの表示は「Show Secret Key」をクリックする
なお、ここで表示されるQRコードをデコードすると次のようなものとなっている
otpauth://totp/test01%40google.com?secret=2ZIHSBXLFZMJBCIOMOWD2JVBOB2FOAPH&digits=6
WinAuthで秘密鍵をインポートする方法
アカウント一覧画面の左下に「Add」というボタンがあるので、これをクリックすると、秘密鍵登録画面が表示される
なお、このソフトウエアではQRコードよりアカウントを登録する機能は持っていない。
LinuxのoathtoolでOTPを計算
oathtool --totp -d 6 --time-step-size=30s --base32 2ZIHSBXLFZMJBCIOMOWD2JVBOB2FOAPH
--totp : Time base, OTP
-d 6 : 6桁
-base32 XXXXX : 秘密鍵を指定
Gnome Authenticatorから秘密鍵をエクスポートする方法
Ubuntu 22.04以降なら、デフォルトのリポジトリに入っているので、apt install gnome-authenticator
でインストール可能。
秘密鍵のエクスポートは、アカウント一覧画面のメニューより
Backup -> jsonファイルに保存(a plain-text JSON file)でテキスト保存したファイルから抜き出せばよい
export.json
[ {"secret": "2ZIHSBXLFZMJBCIOMOWD2JVBOB2FOAPH", "label": "test01@google.com", "period": 30, "digits": 6, "type": "OTP", "algorithm": "SHA1", "thumbnail": "Default", "last_used": 0, "tags": ["Google Cloud Platform"]} ]