-
Notifications
You must be signed in to change notification settings - Fork 720
nip-41 Identity management #1032
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
Conversation
|
Motivation
Key differences with prNip-41
|
|
I like this, especially the introduction of hierarchical keys and user passwords for a better happy path, although it's a little outside my wheelhouse to actually evaluate. I do think it's unlikely that the majority of clients will implement this, maybe a special purpose crawler could be created which would watch for these events specifically, then DM users to notify them of a key rotation. |
This comment was marked as spam.
This comment was marked as spam.
Yes, hierarchical keys introduce a well-tested way to have a robust identity system, and from a UX perspective it also makes sense because users only need to keep one pair of keys, the master key pair. |
This is a compelling reason to use the master key and subkey design. Otherwise, if this is a viable attack surface (I haven't done enough research to know if it is), it clearly means that all of our identities will be compromised at some point. Thanks for sharing |
this is not a viable attack on bip340 signatures at all. bip340 mixes in the private key and message along with whatever generated randomness is used (using sha256 of concatenated values), plus nearly all JS crypto libraries don't use math.random (biased) and instead use don't trust, verify |
This comment was marked as spam.
This comment was marked as spam.
|
Is this like @pablof7z's NIP-41 proposal for preparing the next key to migrate beforehand and then migrating to it when you lose the previous? But instead of preparing beforehand you need a master key to coordinate? |
Yes, exactly, But if the user's master keypair is compromised then the proofs described in the nip are necessary to coordinate a master keypair rotation. |
|
Sounds confusing. Sorry, I'll try to read it again soon. |
In a nutshell, what I propose is to use a defined identity as a source of truth, this would be the master keypair and could be stored cold, thus the master identity that backs up another identity (subkey). The master identity never changes and the subkey can eventually change if it is leaked or stolen. Thanks, would be great to have some good design on top of that. |
|
Aren't you just reinventing bip-0085? The root key is used to derive child keys? |
|
I just want to offer a more straightforward way of migrating identities: #1056 |
Well, you could consider that we are applying it to nostr in a way that makes sense and can be used to improve security and UX. Actually in the proposal we use BIP32 for deterministic derivation, BIP85 uses BIP32, so I understand that it can be confusing, but afaik the main difference between the derivation used in BIP85 and BIP32 is that in BIP85 we have |
I like it, the flow is similar to what is presented here, but eliminating the proofs necessary to take a key rotation event as valid. Do you think these proofs could be added to your proposal? |
I think so. The goal of the other proposal is to offer a way to move current keys to new key schemes so that we can introduce the idea of key derivation to most users today. I strongly believe that most of these identity management proposals are held back by their need to make it work with current keys. #1056 starts something everyone can implement that can get us out of this hole we put ourselves into. |
|
Yes, I agree, the keys that old users have could be considered compromised since they were used on insecure clients at the beginning, and copied and pasted to as many current clients.
But on second thought I think it can be improved because first it would be convenient to successfully migrate to a new and fresh key(for this makes sense #1056), then create the checkpoint event and this would be the way that would give more security when creating a |
This proposal is a best-effort research to improve existing key management proposals.
To do this, I've studied the previous proposals on the subject (prsNip41, prNip-37, prNip-109) and how other protocols such as gpg achieve their robustness.
All the ideas, processes and concepts in this research can be seen as an extension of prNip-41 by Pablo, as they are heavily based on it, and are designed with simplicity and backward compatibility in mind.
Consider this a work in progress and a starting point for designing a better system for managing identities in nostr.
Viewable here: Nip-41