New TEP-0012: One-Sided Passkey Authentication#9
Conversation
|
I assign the TEP Number: 12. |
TEP-0012: Asymmetric Key Client Authentication
|
hi @da2ce7 If I'm not wrong the two key points in your proposal are:
Questions
Links |
|
Hey @josecelano Thanks for the questions:
Yes, I have specified the same elliptical-curve as is used in bitcoin: secp256k1. --
The client sends the server URI it observes to the server, and includes this value in the "Client Authentication Token" that it generates.
I suppose after the successful authentication, the server can decide to issue a normal token as per usual. --
The client doesn't store or need the seed by default. The seed is the account "recovery phrase". This is by design:
--
This protocol uses ECDH, in a very simple format:
I would love for somebody who is better at crypto than me to review the protocol and confirm that it is indeed secure. --
You could turn a key-pair into bitcoin addresses, however we don't use them as bitcoin-addresses. --
I'm sure there is, however the common ones are far-more complex than what we use here, (such as getting a CA involved with the authentication). We just use implicit proof of key ownership when deriving a common key. --
This article uses bitauth, a different algorithm for authentication: the server receives cryptographic signed requests sent by the client. The protocol proposed here uses a mutual derivation of a client authentication token, that is used once. |
|
@josecelano based upon your questions I have updated the TEP to clarify: 018f551 |
|
Maybe instead of generating a private key for the client, we could instead add a A client would then be able to signup using a normal password and/or a public key. I do not like the idea of only allowing authentication with public keys, as it might be too confusing to set up for some users. Keeping the option for a traditional password would be a nice fallback for these users. |
Thank you for the clarification @da2ce7 . I have some more concrete questions above. I think I got the "purpose" wrong. I thought it was a way to authenticate with different access permissions. But I suppose other purposes could be more like what you said: the admin can permit some public keys to generate invitations. I have also found this proposal https://github.com/bitid/bitid/blob/master/BIP_draft.md. |
|
Hello @WarmBeer
I don't like the idea of users generating their own public keys interdependently of our client. At least initially:
For many users passwords could be easier, I think that providing this fallback is heading in the wrong direction:
|
|
@WarmBeer https://github.com/rust-bitcoin/rust-secp256k1 supports compiling to wasm :) |
|
The standard: Web Authentication: An API for accessing Public Key Credentials, is probability the closest standard in intention to what this one provides. https://www.w3.org/TR/webauthn/ |
cilli0n
left a comment
There was a problem hiding this comment.
seems like a lovely way of authentication. Kind regards
|
I think that this document is ready for review. :) |
TEP-0012: Asymmetric Key Client AuthenticationTEP-0012: One-Sided Passkey Authentication
1b7eec4 to
d291e33
Compare
- TEP-asymmetric_key_client_authentication.md -> TEP-0012.md - Some clarifications and expansions based upon Jose's questions.
* Spelling Mistakes and Mislabelling. * Merge Step 9 into step 12 in authentication scheme. Co-authored-by: cilli0n <[email protected]>
d291e33 to
90fb11d
Compare
|
ACK 90fb11d |
This document proposes the use of asymmetric cryptography for user accounts and their authentication.
View Here: https://github.com/da2ce7/torrust-teps/blob/tep-asymmetric_key_client_authentication/TEP-0012.md
Resolves #8