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 keypair generation and blind donation verification #602

Open
sanity opened this issue Apr 24, 2023 · 1 comment
Open

Anonymous keypair generation and blind donation verification #602

sanity opened this issue Apr 24, 2023 · 1 comment
Assignees
Labels
C-feature Category: New feature or request C-proposal Category: A proposal seeking feedback E-medium Experience needed to fix/implement: Medium / intermediate P-medium Medium priority

Comments

@sanity
Copy link
Collaborator

sanity commented Apr 24, 2023

Overview

The Key Generation (KeyGen) system is designed to enable users to generate public-private key pairs within their web browsers, without the key pairs ever leaving the browser or being shared with the web server. The system ensures that the user's identity and IP address remain unassociated with the generated keys. Additionally, the system allows users to make a donation to our non-profit organization and receive a signed public key as proof of their donation, while maintaining their anonymity.

Key Generation Process

The following steps outline the key generation process:

  1. Key Pair Generation: The user visits the KeyGen website at https://freenet.org/identity, where a public-private key pair is generated using JavaScript within the user's web browser. The website does not have access to the generated key pair.

  2. Mnemonic Encoding: The generated private key is presented to the user as a series of mnemonic words using BIP39 encoding. The user can print the page or write down the mnemonic words. The mnemonic words are not shared with the web server.

  3. RSA Blind Signature: The JavaScript code uses an RSA blind signature to encode the public key before sending it to the server.

  4. Donation and Signing: The user makes a donation to our non-profit organization through the same web page. The server uses an RSA blind signature to sign the blinded public key before sending it back to the browser.

  5. Unblinding and Display: The browser unblinds the signed public key, resulting in a public key that has been signed by the server as proof of the user's donation. The server cannot associate the transaction with the user's public key. The unblinded signature is displayed to the user using BIP39 mnemonic encoding, which they can print or write down.

Purpose

The KeyGen system aims to allow users to invest in the reputation of their public keys while maintaining their anonymity. By generating the key pairs within the browser and using RSA blind signatures, the system ensures that users can make donations and receive signed public keys without revealing their identities to the server.

@sanity sanity added C-feature Category: New feature or request C-proposal Category: A proposal seeking feedback E-medium Experience needed to fix/implement: Medium / intermediate P-medium Medium priority labels Apr 24, 2023
@sanity sanity self-assigned this Apr 24, 2023
@sanity
Copy link
Collaborator Author

sanity commented Apr 25, 2023

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-feature Category: New feature or request C-proposal Category: A proposal seeking feedback E-medium Experience needed to fix/implement: Medium / intermediate P-medium Medium priority
Projects
None yet
Development

When branches are created from issues, their pull requests are automatically linked.

1 participant