私の現在のセキュリティモデル(少なくともパスワードの場合)は、それらを暗号化して保存し、GPG(Yubikeyと組み合わせて)を使用して暗号化/復号化を実行することです。暗号化/復号化のプロセスを自動化するためにpass
( https://www.passwordstore.org/ )を使用しています。これらのファイルは0700に格納されており、iCloudドライブまたは適切なgitリポジトリのいずれかに同期する予定です(ある時点で)。現在、Ironkey(D20402A)にバックアップしています。 GPGの暗号化/復号化に4096ビットのサブキーを使用しています。
しかし、TOTPコードはまだiPhoneに保存しています(Google認証システムを使用しています)。 Authyのようなサードパーティのソリューションがあることは知っていますが、可能であれば携帯電話から移行したいと思います。
理想的には、スクリプトと自動化を容易にするために、コンピューターから取得(および適切にバックアップ)できる方法でTOTP秘密キーを保存したいと思います。これを動機づけている私の通常の認証資格情報に加えてTOTPコードを必要とするAWSのようないくつかのサービスがあります。
これらのTOTPシークレットを私のパスワード(両方とも暗号化されている場合)と一緒に保存するのは十分安全ですか、それとも悪い考えでしょうか?私の見方では、誰かが私の鍵をロック解除するために必要な基本的に4つのアイテムがあります。
https://github.com/tadfisher/pass-otp というツールがあります。これを使用できます。
これが許容できるセキュリティソリューションであるかどうか、私は悩みます。一方では、TOTPがもたらす「第2要素」の側面は、1つのデバイスにすべての秘密を保存することによって覆されます。
一方、私が提案したソリューションの周りで使用する予定のデバイスと方法は、このデータを保護するのに十分であると私は合理的に確信しています。マシン自体が危険にさらされている場合、これらすべてがウィンドウの外に飛び出すことを認識しています(ただし、どのような状況でも私は頭を悩ませています)。
Yubikeyのスマートカード機能を使用してpass
データベースにアクセスするために必要なPGP暗号化キーを保存するとのことですが、TOTP共有シークレットを他のパスワードデータと一緒に渡しておくことは問題ないと思います。 TOTPは2要素認証を保証するためのメカニズムであるため、Yubikeyを使用してそれらを復号化する必要がある限り、2要素を使用しています(yubikey =持っているもの、PIN =何か知っている)。
ただし、ここでは重要な注意点があります。最新のAndroid電話では、最新のLinuxワークステーションよりも多くのアプリケーションサンドボックスが発生しています。ワークステーションでコードを実行できる人(ユーザー)は、RAMから、またはPINを知った後にユビキーを挿入して直接復号化するまで待機することで、これらのTOTPシークレットを取得できる可能性があります。一方、ストレージとメモリお使いの携帯電話のTOTPアプリケーションに属していると、一般的に使用している他のアプリケーションから分離されるため、攻撃者がTOTPアプリに格納されているシークレットにアクセスする前にルートレベルの妥協が必要になります。
それが許容できるトレードオフである場合は、それらの共有TOTPシークレットを成功させることができます。そうでない場合は、スマートフォンに置いたままにします。