web-dev-qa-db-ja.com

AuthyはGoogle Authenticator QRをどのように使用できますか

私は周りを読んでいて、AuthyがどこでもGoogle Authenticator実装を使用できることは本当に魅力的であることがわかりました。

Authyはこれをどのように行うのですか?これはセキュリティリスクではありませんか?

1
eKKiM

Google Authenticator以外のアプリを使用すること自体は、それらのアプリを信頼する限り、セキュリティリスクではありません。

2FAの目的は、何か(パスワード)を知っていることに加えて、物理的なオブジェクト(この場合は携帯電話)があることを証明することです。これにより、攻撃者があなたのパスワードを知っていると同時にあなたの電話を持っている可能性が低くなるため、攻撃者があなたのアカウントを侵害することがより困難になります。

Google認証システムで使用されるTOTPプロトコルは、基本的に次のように機能します(詳細については、 RFC#6238 を参照してください)。

  1. 秘密が含まれているQRコードをスキャンします。サイトはこの秘密をあなたに提供し、それをサーバー側(暗号化されていることが望ましい [〜#〜] hsm [〜#〜] 、またはその他の「合理的に安全な」ストレージに保存します。 RFC#4226には ここでいくつかの興味深い議論 困難な問題があります)。
  2. 新しいワンタイムパスワード(OTP)が必要な場合は、シークレットと現在の時刻に基づいて暗号化操作( [〜#〜] hmac [〜#〜] )を実行します。
  3. その暗号化操作により、OTPに変換できる値が生成されます。そのOTPをWebサイトに提供すると、同じプロセスでOTPが生成されます。
  4. 指定したOTPがWebサイトが生成するOTP(または、クロックスキューを考慮して将来または過去にいくつかのタイムステップを生成するOTP)と一致する場合、それは受け入れられます。それ以外の場合は拒否されます。

これはオープンスタンダードであり、設計上、誰でもその半分(クライアントまたはサーバー)を実装できます。ただし、悪意のあるクライアントの実装により、シークレットが攻撃者に渡され、攻撃者が2FAの目的であなたになりすますことができるため、信頼できるクライアントアプリのみを使用する必要があります。


そうは言っても、特にAuthyについてはかなり強い見方があります。私が最後に調べたとき、それはデフォルトでクラウドにステップ(1)からの秘密を保存しました。これは便宜上のものであるため、スマートフォンを紛失または交換した場合でも、すべてのアカウントでTOTPを再設定する必要はありません。

しかし、それはまた、2FAの中心的な目的を打ち負かしていることも意味します。つまり、自分が何かを持っていることと、何かを知っていることの両方を証明しているわけではありません。代わりに、何か(パスワード)を知っていて、他の誰か(Authyのクラウドストレージ)で認証されていることを証明しています。これは、Authyを他のすべてのサイトの障害点にするため、弱いセキュリティモデルです。

1
Kevin

Google Authenticator形式は、TOTPまたはHOTPと呼ばれる標準形式です(時間ベースかHMACベースの実装かによって異なります)。 QRコードは、アプリケーションが開始シークレットを使用してカウンターをセットアップするために必要なすべてを含む、エンコードされたURIです。例えば: otpauth://totp/Example:[email protected]?secret=JBSWY3DPEHPK3PXP&issuer=Exampleは、QRコードに実際に含まれるもので、ユーザー名と使用される秘密鍵が含まれています。

https://github.com/google/google-authenticator/wiki/Key-Uri-Format

0
plttn