Skip to content
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

Anonymous identifier claiming process #12

Open
sanity opened this issue Dec 6, 2023 · 0 comments
Open

Anonymous identifier claiming process #12

sanity opened this issue Dec 6, 2023 · 0 comments

Comments

@sanity
Copy link
Contributor

sanity commented Dec 6, 2023

In the browser a user keypair is generated locally, the user public key part is "blinded" using the RSA blind signature algorithm, this symmetric key is retained in the browser so it can be "unblinded" later.

The user selects whether they want to purchase a bronze ($10), silver ($20), or gold ($50) identity and enters their cc info in the Stripe dialog, this information is passed to the server along with the blinded user public key.

The server has an elliptic curve master keypair that serves as the "parent" of all Freenet keys. Note that we can use an EC keypair here because this key won't directly be used in the blind signature algorithm.

This master key is used to create several "subkeys", one for each of bronze, silver, and gold. We create 3 RSA keypairs, and for each we use the master key to sign the JSON:

{
  "type" : "Freenet-identity",
  "version" : 1,
  "level" : "Bronze",
  "RSA-public-key" : "...base64 encoded RSA public key..."
}

This JSON plus the master key signature is a certificate that validates the respective RSA public key.

The server then signs the blinded user public key using the relevant subkey depending on whether the level is bronze, silver, etc - and this is sent back to the browser along with that subkey's certificate.

The browser then unblinds the signed user public key and it plus the subkey certificate is stored by the user somewhere safe (via QR code, etc).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant