Steam ガードというスマートフォンアプリを使ったValve独自TOTPな多要素認証があります.これは通常のTOTP(rfc6238)と違い独自実装で数字だけではなくアルファベットも利用しているのでOATH ToolkitやGoogle Authenticatorでは認証できません.
Steam ガードのTOTPはValve独自ですが一応いくつかの実装はあります.(未検証)
KeepassXC にも TOTP(KeePassXC 2.2.0以降)と Steam ガードの TOTP(KeePassXC 2.3.0以降)がサポートされています.今回これを試してみました.
a generator for time-based one-time passwords (TOTP)
Add support for Steam one-time passwords [#1206]
しかし,これらを試すにはSteam Guard Mobile Authenticatorを設定したスマートフォンの中からTOTPの秘密鍵を入手する必要があります.以前のAndroidではadb backup するだけで鍵の書かれたファイルが入手できていたらしいのですが現在は暗号化されていてこの手順では入手できないようです.
GitHubにAPKにpatchするscriptが公開されていたのでまずはこれを試してみました.
これがうまく行けば以前のようにadb backupが出来るようになるはずです.しかし,バージョンの問題か失敗しました.
別の方法としてAndroidのroot取得済み端末にSteam Guard Mobile Authenticatorを導入してこちらの端末を有効にして秘密鍵を取得しました.
$ adb shell #Android shellを起動してファイル名を確認 1|shell@MK16i:/ $ su root@MK16i:/ # ls -l /data/data/com.valvesoftware.android.steam.community/files/ -rw-rw---- u0_a59 u0_a59 448 2018-08-31 22:25 Steamguard-76561198085918260 root@MK16i:/ # exit root@MK16i:/ $ exit #AndroidからexitしてPCに戻る $ adb root #rootになる $ adb pull /data/data/com.valvesoftware.android.steam.community/files/Steamguard-76561198085918260 #ファイル取得 $ adb kill-server #adb server終了 $ file Steamguard-76561198085918260 Steamguard-76561198085918260: ASCII text, with very long lines, with no line terminators $ lv Steamguard-76561198085918260 $ jq .uri Steamguard-76561198085918260 | sed -e 's/^.*=\(.*\)&.*$/\1/' #鍵表示 OXYBZQLEOB7KKFAPERMN8EGNOLJWEDYZ $ shred -uz Steamguard-76561198085918260 #ファイル消去
取得した鍵をKeePassXCに登録してみます.
Steamの設定上で右クリック,「タイムベースワンタイムパスワード」→「TOTP の設定…」から「キー」に設定します.
登録した後Steamの設定上で右クリック,「タイムベースワンタイムパスワード」→「TOTP を表示」でトークンが表示できます.
Androidスマートフォンアプリと見比べてみると同じトークンが表示され,Steamにもloginできます :)
Steam Guard Mobile Authenticatorは同時に1端末しか登録できず,2台目を設定すると1台目の端末の鍵が無効にされます.なのでKeePassXCを利用する場合はroot端末と併用するか,root端末から消してKeePassXCのみで運用するしかなさそうです.
いいえ、ひとつのアカウントで一度に有効化できる認証機器はひとつだけです。
もう一つ問題が.KeePassXCにはcli版が同梱されているのですが,バージョン2.3.4時点ではTOTPのオプションが見当たりません.GUIのみの利用となりそうです.
$ keepassxc-cli -h Usage: keepassxc-cli [options] command KeePassXC command line interface. Available commands: add Add a new entry to a database. clip Copy an entry's password to the clipboard. diceware Generate a new random diceware passphrase. edit Edit an entry. estimate Estimate the entropy of a password. extract Extract and print the content of a database. generate Generate a new random password. locate Find entries quickly. ls List database entries. merge Merge two databases. rm Remove an entry from the database. show Show an entry's information. Options: -h, --help Displays this help. -v, --version Displays version information. Arguments: command Name of the command to execute. $ keepassxc-cli -v 2.3.4
$ dpkg-query -W keepassxc keepassxc 2.3.4+dfsg.1-1 $ lsb_release -d Description: Debian GNU/Linux unstable (sid) $ uname -m x86_64
One thought to “KeePassXC の Steam TOTP を試す”