-
Notifications
You must be signed in to change notification settings - Fork 2
New TEP-0012
: One-Sided Passkey Authentication
#9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
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. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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 <jakob.f.kaiser@gmail.com>
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