web-dev-qa-db-ja.com

暗号化されたTOTPキーと認証資格情報を単一のデバイス(エンドユーザー向け)に保存することは妥当ですか?

私の現在のセキュリティモデル(少なくともパスワードの場合)は、それらを暗号化して保存し、GPG(Yubikeyと組み合わせて)を使用して暗号化/復号化を実行することです。暗号化/復号化のプロセスを自動化するためにpasshttps://www.passwordstore.org/ )を使用しています。これらのファイルは0700に格納されており、iCloudドライブまたは適切なgitリポジトリのいずれかに同期する予定です(ある時点で)。現在、Ironkey(D20402A)にバックアップしています。 GPGの暗号化/復号化に4096ビットのサブキーを使用しています。

しかし、TOTPコードはまだiPhoneに保存しています(Google認証システムを使用しています)。 Authyのようなサードパーティのソリューションがあることは知っていますが、可能であれば携帯電話から移行したいと思います。

理想的には、スクリプトと自動化を容易にするために、コンピューターから取得(および適切にバックアップ)できる方法でTOTP秘密キーを保存したいと思います。これを動機づけている私の通常の認証資格情報に加えてTOTPコードを必要とするAWSのようないくつかのサービスがあります。

これらのTOTPシークレットを私のパスワード(両方とも暗号化されている場合)と一緒に保存するのは十分安全ですか、それとも悪い考えでしょうか?私の見方では、誰かが私の鍵をロック解除するために必要な基本的に4つのアイテムがあります。

  • 物理コンピューター(APFSを使用したフルディスク暗号化)またはIronkey
  • 物理ユビキー(またはバックアップ、またはマスターキーバックアップ)
  • ディスクまたはIronkey復号化パスワード
  • 私のユビキーPIN

https://github.com/tadfisher/pass-otp というツールがあります。これを使用できます。

これが許容できるセキュリティソリューションであるかどうか、私は悩みます。一方では、TOTPがもたらす「第2要素」の側面は、1つのデバイスにすべての秘密を保存することによって覆されます。

一方、私が提案したソリューションの周りで使用する予定のデバイスと方法は、このデータを保護するのに十分であると私は合理的に確信しています。マシン自体が危険にさらされている場合、これらすべてがウィンドウの外に飛び出すことを認識しています(ただし、どのような状況でも私は頭を悩ませています)。

3
Aea

Yubikeyのスマートカード機能を使用してpassデータベースにアクセスするために必要なPGP暗号化キーを保存するとのことですが、TOTP共有シークレットを他のパスワードデータと一緒に渡しておくことは問題ないと思います。 TOTPは2要素認証を保証するためのメカニズムであるため、Yubikeyを使用してそれらを復号化する必要がある限り、2要素を使用しています(yubikey =持っているもの、PIN =何か知っている)。

ただし、ここでは重要な注意点があります。最新のAndroid電話では、最新のLinuxワークステーションよりも多くのアプリケーションサンドボックスが発生しています。ワークステーションでコードを実行できる人(ユーザー)は、RAMから、またはPINを知った後にユビキーを挿入して直接復号化するまで待機することで、これらのTOTPシークレットを取得できる可能性があります。一方、ストレージとメモリお使いの携帯電話のTOTPアプリケーションに属していると、一般的に使用している他のアプリケーションから分離されるため、攻撃者がTOTPアプリに格納されているシークレットにアクセスする前にルートレベルの妥協が必要になります。

それが許容できるトレードオフである場合は、それらの共有TOTPシークレットを成功させることができます。そうでない場合は、スマートフォンに置いたままにします。

3
mricon