私は周りを読んでいて、AuthyがどこでもGoogle Authenticator実装を使用できることは本当に魅力的であることがわかりました。
Authyはこれをどのように行うのですか?これはセキュリティリスクではありませんか?
Google Authenticator以外のアプリを使用すること自体は、それらのアプリを信頼する限り、セキュリティリスクではありません。
2FAの目的は、何か(パスワード)を知っていることに加えて、物理的なオブジェクト(この場合は携帯電話)があることを証明することです。これにより、攻撃者があなたのパスワードを知っていると同時にあなたの電話を持っている可能性が低くなるため、攻撃者があなたのアカウントを侵害することがより困難になります。
Google認証システムで使用されるTOTPプロトコルは、基本的に次のように機能します(詳細については、 RFC#6238 を参照してください)。
これはオープンスタンダードであり、設計上、誰でもその半分(クライアントまたはサーバー)を実装できます。ただし、悪意のあるクライアントの実装により、シークレットが攻撃者に渡され、攻撃者が2FAの目的であなたになりすますことができるため、信頼できるクライアントアプリのみを使用する必要があります。
そうは言っても、特にAuthyについてはかなり強い見方があります。私が最後に調べたとき、それはデフォルトでクラウドにステップ(1)からの秘密を保存しました。これは便宜上のものであるため、スマートフォンを紛失または交換した場合でも、すべてのアカウントでTOTPを再設定する必要はありません。
しかし、それはまた、2FAの中心的な目的を打ち負かしていることも意味します。つまり、自分が何かを持っていることと、何かを知っていることの両方を証明しているわけではありません。代わりに、何か(パスワード)を知っていて、他の誰か(Authyのクラウドストレージ)で認証されていることを証明しています。これは、Authyを他のすべてのサイトの障害点にするため、弱いセキュリティモデルです。
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