Demo/Design for webauth using for ssh certs using the ssh agent.
The motivation is on having SSO for CLI utilities without the need of generating identity/authentication tokens that can be reused by misbehaving servers. The other goal is to reduce the number of cli operations needed by clients.
Right now it is a work in progress and no implications of its security are given.
The V1 of the procol is as Follows:
Objectives:
- Avoid use of password
- Use of an already contained ephemeral credential
- Must happen all within the HTTP layer (to handle LB terminated TLS connections)
- Prevention of Replay attacks
- When using certificates no need to for external dependencies for checking auth (use the sshCA as trust anchor)
- Prevention of revealing of secrets from either the server or the client.
- Must be able to run error free for well behaved clients and servers (no probabilitic fails)
OpenQuestions (v1):
- Currently we send back the full list of sha256 fingerprints of the trusted certs. This has the advantage of just being computed once, but has the disavantage that we are giving the complete fingerprint to an attacker.
- We send nonce1 on the first leg of the transmission, the goal is to be able to bind the two transactions. Is this even necesary?
Many server services are found behind TLS terminating load balancers.
Yes the handshake is very inspired by that prococol. However one of the issues we wanted to avoid is the requirement of establishing long term keys between the client and each of the servers.