5 ms·
2FA does not usually mean U2F hardware such as Yubikey. Reddit does not support hardware keys. Most of the time, 2FA means using a token generator, such as Goo
by teilo 8y ago
2FA does not usually mean U2F hardware such as Yubikey. Reddit does not support hardware keys.
Most of the time, 2FA means using a token generator, such as Google Authenticator, Authy, or similar. They are just apps. This is much safer than SMS because one would need physical access to your unlocked phone to generate a token.
- jjnoakes 8y agoTOTP has a downside when compared to SMS as well. In cases where server security was breached and databases (or database backups or dumps) were accessed, if the TOTP seeds were part of the database (not sure how likely that is, but I'm guessing it's likely), then TOTP is doing nothing for security. TOTP protects against things like credential stuffing and weak passwords, and is safer than SMS (no hijacking/intercepting), but for database security breaches things aren't so cut and dry. I wonder if there should be a TOTP-like app which you still register with a site when you first log in or create your account, and which codes are sent to when new logins are needed, but which uses a more secure communication channel than SMS. This gives you the best of both worlds, no? One-time codes not generated from a single plain text seed, communicated to a known client over a secure channel, to prove the initial user is still in possession of the known client?
- tptacek 8y agoThe distinction you're drawing here isn't meaningful. Outside of securing an application's database, a TOTP key has no value anyways. If you have a persistent attacker who quietly owns your database, no 2FA is doing anything for you; the attacker can log in whenever they want anyways. Once the database is compromised, you invalidate all the TOTP secrets, and they become worthless.
- jjnoakes 8y agoIf you know of the database compromise, sure. If your database contents are exposed (or a dump or backup is exposed) unbeknownst to you, those TOTP secrets won't be invalidated, and attackers which get their hands on that have more than they'd have if some other second factor method was in use which didn't rely solely on a long-term shared secret. And since database exposures can go back a long way (like this one), and TOTP secrets aren't normally rotated over time, then this difference in second factor methods seems interesting.
- tptacek 8y agoIf you don't know of the database compromise, the technical term for the steady state you are operating in is "owned". 2FA isn't doing anything for you.
- jjnoakes 8y agoIf you don't know of the database compromise (which could have been a backup or old dump, and not necessarily a live system breach), you may be "owned", but unless the TOTP seeds (or equivalent 2FA master keys) are in that db dump, 2FA most certainly is still doing something for you...
- akerl_ 8y agoThis is bit tautological: yes, if part of your stack is specifically compromised at a point-in-time, other parts of your stack were not necessarily compromised. But since your user auth flow needs access to the unencrypted TOTP seeds, and user info generally lives in a database, for the majority share of infrastructures a compromise of the DB will compromise all TOTP seeds.
- jjnoakes 8y agoSince TOTP seeds are long-term shared-secrets which are all that is needed to complete 2FA, and rarely/never rotated unless someone knows they were compromised, even years-old database compromises (old backups, etc) means current TOTP 2FA is also probably compromised. Which is not true of some other 2FA mechanisms (which is my point - I never thought about it before, but TOTP has a specific failure mechanism that not all 2FA mechanisms have). I still prefer TOTP to auth codes over SMS, but I wish there was something better (TOTP with seed rotation, auth codes over more secure channels, etc).
- tptacek 8y agoThis is pretty silly. If a TOTP secret had value outside of a single application/database, this would be worth thinking about. But they do not; they are a binding between a device and a particular application. If either the app or the device are compromised, so is the relationship, as is (most likely) all the data you were trying to protect anyways.
- vel0city 8y agoA standard called SQRL is similar to many of the concepts of U2F and can be done with an app scanning a QR code. https://www.grc.com/sqrl/sqrl.htm https://www.grc.com/sqrl/sqrl.htm
- jjnoakes 8y agoLooks like SQRL is aiming higher than just 2FA, they try to be the entire login process. Thanks for the link, but not sure it's quite what I'm looking for.
- cimnine 8y agoYubiKey supports TOTP/HOTP (the protocol behind "Google Authenticator" and similar). Clients for the YubiKey are available for Linux, Windows, macOS, Android and iOS. You can connect the YubiKey via USB (regular or Type C) and (depending on the model) via NFC (interesting on Android and iPhones). All clients are open-source afaik. There's even a CLI tool which is useful for workflows with e.g. Alfred or similar. You can protect your TOTP/HOTP seeds on the YubiKey using a PIN (which I would recommend anyone to do). This is supported in all the Yubico Authenticator clients. But: When your YubiKey is stolen/lost, your TOTP/HOTP seeds are gone for good. Make sure you have recovery codes stored in a safe place, e.g. your password manager.
- scotu 8y agoyes, but you can use yubi authenticator app to keep the "app authenticator" codes on a yubikey instead of directly on the phone, and use the phone to see the codes. Not sure if it can work on ios but on android is pretty good