It won't be long before that hardware device that is supposedly being held by a person becomes a soft device, which will then be impersonated.
There's a number of problems with the idea:
- The device (eg. Phone or Tablet) gets owned and gives up its value as a provider of confirmation
- Users end up nominating a password service like 1Password as the device
- Someone manages to convince the authentication systems that their faux device emitting the signal, is the device in question
For the second point, when I was integrating a (FOSS) passkey system into a product, it drove me up the wall having to have my phone right next to me every time I was working. I ciouldn't leave it in the next room on charge, for example.
As a user I drew no comfort from the system, and viewed it as a burden, and was concerned about replacing the device in the event of a loss/theft or destruction - which is usually the pathway malicious individuals take to insert their device as the one to be used instead of the original.
At a certain point, the user behavior IDS constraints become more important than building a deeper moat. 2FA cellphone based anything is $23 away from some adversaries control... ultimately more security theater in my opinion YMMV =3
Any device could get exploited. The requirement that it happen to both that device and my computer, simultaneously, significantly raises the difficulty bar.
> Users end up nominating a password service like 1Password as the device
I don't see the issue. Isn't that the user's choice to make? If you want better security then don't make that particular choice.
> Someone manages to convince the authentication systems that their faux device emitting the signal, is the device in question
By that logic why have passwords or keys or anything at all? Someone might exploit the server and get in regardless so why bother?
I've got at least a few objections to modern auth schemes but these aren't them.
Yes.
> The requirement that it happen to both that device and my computer, simultaneously, significantly raises the difficulty bar.
Well, only one of the two devices needs to be exploited. There's twice the attack surface for you.
> I don't see the issue. Isn't that the user's choice to make? If you want better security then don't make that particular choice.
Sure, and allowing people to use "password" as their password is bad, but the design of this system encourages using a "cloud" device, because of the issues already pointed out.
> By that logic why have passwords or keys or anything at all? Someone might exploit the server and get in regardless so why bother?
The system has added nothing that makes passwords or keys more secure.
> I've got at least a few objections to modern auth schemes but these aren't them.
/me shrugs
I'm almost at the point of caring.
I think we must be thinking of very different things here. Maybe I misunderstand the scheme you're objecting to. Would you mind elaborating?
Perhaps what you had in mind are the PoP tokens from RFC 7800? (Sure would be nice not to play guessing games though.) Given that those are intended to replace OAuth bearer tokens they are quite a decent upgrade from a security perspective. Used with a purely software based password manager it is no longer enough to simply exfiltrate a token from the browser. Used with TPM backed keys it is approximately equivalent to the chip in a bank card.
Because I get to talk to people that actually understand technical discussions.
> How could I possibly demonstrate lack of understanding when you actively avoid clarifying what you're even talking about in the first place?
You came into the thread with no understanding, then some time later decided to play word games.
All of the rest of your contributions from now are going straight to /dev/null where they belong.
As I already stated I'm no longer certain what scheme we're actually taking about. Is there some reason you don't feel like elaborating?
For my part I thought we were taking about a proof of possession scheme in addition to regular auth. The "regular auth" scheme was unspecified so could be password, software based TOTP, hardware token, whatever.
Widespread proof of possession already exists in the form of chips in bank cards. It seems to be quite resilient to attack in practice.
Even if I use software on my phone for proof of possession you still have to compromise the computer I'm actually logging in with, no? So the attack surface is either the same (primary device) or increased (primary plus secondary, simultaneously) depending on various practical details regarding implementation and usage.
If the "regular auth" scheme involves a half decent hardware token then good luck compromising that remotely. I won't be betting in your favor.
You don't need anything special to do that. Just select a hardware token that refuses to sign anything until it receives physical input from you.
Heck, just true the public key as the authentication header.
Or use authentication certificates.
If ssh is such a big problem, use something else
Traditionally both facets of the 3rd party trust model have had CVE over the years. SSL protocol misconfiguration is also very common, and connections can be downgraded by adversaries into a vulnerable version of the protocol.
It could be argued ssh is a weaker Trust on first use model, but in most cases the keys will rarely change for the short service life of the server instance... and the server may be setup from a local physical terminal, and keys communicated out-of-band to remote users.
At some point one has to admit if someone really wants in they will physically pull the drive in the data center. However, people using web vulnerability scanners on your systems are less of a nuisance.
Best regards =3
That is but an optional aspect of the configuration (albeit by far the most common).
Couldn't you use your "traditional" SSH keys to generate an ephemeral self-signed client certificate which shares the same keypair as your SSH key? That would at least solve the CA issue for the client-to-server authentication.
One should not completely trust TOFU over remote sessions, but it is the most practical solution. This is the inconvenient secret of cloud technology, and why the hosting company web panels often include abstracted firewall/vpn settings or proprietary key management (or the same authoritative problem manifests.)
Good luck, =3
It's not a problem. You can use SSH today (and since years already now) with Yubikey and the likes. I'm using Git over SSH with Yubikeys and it works.
Use Git over SSH, use a Yubikey (or whatever suits you), set the login shell to git-shell.
Reuse of an existing key for any reason after enrollment is not a good idea. A reluctance to just enroll another key may mean trouble with key rotation and revocation, and thus problematic security procedures. Key rotation should be fast, painless, and regular.
1. Does it ever expire?
2. What would you do exactly if you were to lose the hardware key? Same thing as if you lost your id_ed25519 file?
> Key rotation should be fast, painless, and regular.
I agree. Right now I keep changing the expiry date of my GPG keys (once in a good while).
2. If you lose a key, whatever its nature, you unenroll it where you have it enrolled. You better have some one-time codes set up, or another alternative method, like a password login to your VM via console.
Combined with port-knocking and fail2ban, the setup has proven rather reliable over the years. The Go language can make surprisingly resilient servers if you have the memory available.
The ssh key handling in gitea requires manual setup, and thus does not necessarily even have to use the same administrative user login key sets.
Best regards =3