{"id":17674449,"url":"https://github.com/eddieoz/nostr-stealth","last_synced_at":"2025-06-13T00:07:46.519Z","repository":{"id":191252540,"uuid":"684260413","full_name":"eddieoz/nostr-stealth","owner":"eddieoz","description":"Built on top of the Nostr protocol, specifically designed to ensure sender and receiver metadata full anonymity. Leveraging the concept of channels (or mixers), Nostr-Stealth ensures that individual messages between users cannot be distinguished or differentiated, thus enhancing user privacy.","archived":false,"fork":false,"pushed_at":"2024-09-09T09:33:49.000Z","size":141,"stargazers_count":11,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-12T01:54:21.599Z","etag":null,"topics":["cryptography","e2ee","encryption","nostr","nostr-protocol","privacy","protocol"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eddieoz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-08-28T19:23:17.000Z","updated_at":"2025-02-12T02:26:07.000Z","dependencies_parsed_at":"2024-09-09T11:13:40.846Z","dependency_job_id":"42a974fb-ee49-43be-a995-3a7ab0e9f972","html_url":"https://github.com/eddieoz/nostr-stealth","commit_stats":null,"previous_names":["eddieoz/nostr-stealth"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/eddieoz/nostr-stealth","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eddieoz%2Fnostr-stealth","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eddieoz%2Fnostr-stealth/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eddieoz%2Fnostr-stealth/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eddieoz%2Fnostr-stealth/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eddieoz","download_url":"https://codeload.github.com/eddieoz/nostr-stealth/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eddieoz%2Fnostr-stealth/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259553130,"owners_count":22875610,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cryptography","e2ee","encryption","nostr","nostr-protocol","privacy","protocol"],"created_at":"2024-10-24T07:07:05.064Z","updated_at":"2025-06-13T00:07:46.424Z","avatar_url":"https://github.com/eddieoz.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Nostr-Stealth (proof-of-concept)\n\n## Introduction\n\nNostr-Stealth is a cutting-edge encryption method built on top of the Nostr protocol, specifically designed to ensure sender and receiver metadata full anonymity. Leveraging the concept of channels (or mixers), Nostr-Stealth ensures that individual messages between users cannot be distinguished or differentiated, thus enhancing user privacy.\n\n## Features\n\n1. **Metadata Encryption:** Sender and receiver metadata is securely encrypted to ensure complete anonymity.\n2. **Channel Mixer:** The destination for each message is always the channel. By design, this ensures the real receiver remains undiscoverable.\n3. **Ephemeral Keys:** Every message sent uses ephemeral keys, ensuring that tracking a message back to its sender becomes an impossible task.\n\n## Prerequisites\n\n- Node.js v18\n- Npm (comes with Node.js)\n\n## Installation\n\n1. Clone the repository:\n   ```bash\n   git clone https://github.com/eddieoz/nostr-stealth.git\n   ```\n\n2. Navigate to the project directory:\n   ```bash\n   cd nostr-stealth\n   ```\n\n3. Install dependencies:\n   ```bash\n   yarn install\n   ```\n\n## Usage\n1. **Preparation**:\n   - Copy `env-sample` to `.env`\n   - Add private and public keys for the sender, receiver and channel in `hex` format.\n     - The channel privkey is optional for this example\n   - Add a relay address\n\n2. **Set Up Channel**:\n   - The channel is a valid public key. Create a pair of valid keys and update .env (CHANPRIV is optional, because it can't decrypt messages)\n\n3. **Sending Messages**:\n   - $ node publish.js \"your-message\"\n   - Write your message and hit send. Your metadata will be encrypted and mixed with others in the channel.\n\n4. **Receiving Messages**:\n   - node receive.js\n   - The last message for you within the channel will be displayed.\n\n5. **Note**: For best security practices, it's recommended to regularly switch channels.\n\n## Sequence Diagram\n\n```mermaid\nsequenceDiagram\n    Actor A\n    Participant C as Channel\n    Actor B\n    note over A,B: share the Channel pub\n    note over A,B: share and register Apub, Bpub\n    note left of A: create ephemeral keys\n    note left of A: encrypt(Apriv, Bpub, message)\n    note left of A: create event kind 4\n    note left of A: encrypt (Apriv, Bpub, json(event))\n    note left of A: create event kind 1337\n    note left of A: getSignature(event1337, ephemeralPrivkey)\n    note left of A: relay.publish(event1337)\n    A-\u003e\u003eC:send event to channel\n    C--\u003e\u003eA:successful\n    B--\u003e\u003eC:monitor events kind 1337\n    C-\u003e\u003eB:new message\n    note right of B: Tests decryption of a message for [Apub,...]\n    note right of B: (success) decrypt kind 4 event \n    note right of B: manage kind 4 event\n```\n## Security Precautions\n\n- While NostrStealth enhances metadata security, always ensure you're on a secure and trusted network when communicating. Use VPN or Tor to obfuscate your IP address.\n- It is preferreable to not share channel IDs on public platforms. But more people using the same channel, it improves privacy.\n- Regularly rotate and use new channels for different communications to ensure optimal privacy.\n\n## Contribution\n\nIf you wish to contribute to Nostr-Stealth, kindly submit a pull request or open an issue on our GitHub repository. All contributions are welcome!\n\n## License\n\nNostr-Stealth is open-source software licensed under the [MIT License](https://opensource.org/licenses/MIT).\n\n## Disclaimer\n\nThis tool is still a proof-of-concept and may have unknown vulnerabilities. Use at your own risk, and always prioritize your safety and privacy.\n\n---\n\n**Nostr-Stealth** - Empowering Nostr Communication, Prioritizing Privacy.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feddieoz%2Fnostr-stealth","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feddieoz%2Fnostr-stealth","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feddieoz%2Fnostr-stealth/lists"}