# Nostr Web of Trust > Nostr identity provider, NIP-07 signer, Lightning wallet, and Web of Trust browser extension. Manage keys, sign events, encrypt messages, send zaps, filter spam with trust scores, and send hybrid post-quantum encrypted direct messages. Nostr Web of Trust (WoT) is a browser extension and open-source ecosystem for Nostr. It provides a complete identity provider (NIP-07 signer), an encrypted key vault, a built-in Lightning wallet for zaps, a Web of Trust engine that scores trust based on social distance in the follow graph, and hybrid post-quantum encryption for direct messages. ## Products ### Browser Extension - **NIP-07 Signer**: Sign events and encrypt messages (NIP-04 & NIP-44) across any Nostr client - **Encrypted Vault**: AES-256-GCM encrypted key storage with auto-lock and secure backup - **Multi-Account**: HD derivation, watch-only, NIP-46 remote signer — switch identities instantly - **Lightning Wallet**: Built-in wallet for zaps with NWC, LNbits, or one-click quick setup - **Trust Scoring**: Configurable trust badges, custom scoring formulas, and spam filtering - **Privacy Modes**: Local-only, oracle, or hybrid computation modes - **Post-Quantum Keys**: ML-KEM-1024 and ML-DSA-87 derived from the existing BIP-39 seed, with attestation publishing and hybrid post-quantum DMs - **Supported Browsers**: Chrome, Brave, Edge, Opera, Firefox ### Post-Quantum Nostr Hybrid post-quantum encryption for Nostr direct messages, developed jointly by Nostr WoT and QuantaKrypto (https://quantakrypto.com), an applied post-quantum cryptography practice. It is a proposal, but an implemented and running one. - **Threat addressed**: "harvest now, decrypt later". NIP-44 derives its conversation key from secp256k1 ECDH, so encrypted events archived today become readable once secp256k1 falls. This is the only half of the quantum problem that can be fixed in advance — messages sent with post-quantum protection stay confidential permanently. - **Algorithms**: ML-KEM-1024 (FIPS 203) for encapsulation and ML-DSA-87 (FIPS 204) for proof of possession — NIST Category 5, the CNSA 2.0 parameter sets. - **Key derivation**: both key pairs are derived from the same BIP-39 seed as the secp256k1 key, as *siblings* rather than children, via domain-separated HKDF-SHA256 (`nip-pqc/v1//`). Breaking secp256k1 does not reveal the seed and therefore does not reveal the post-quantum keys. One mnemonic still restores everything. Derived keys require a 256-bit (24-word) seed. - **Hybrid, never bare**: the ML-KEM shared secret is combined with the classic NIP-44 conversation key through HKDF, so the result is never weaker than today's encryption even if a lattice scheme is later broken. - **Key discovery**: public keys are advertised in a `kind:10203` replaceable attestation event, counter-signed by the ML-DSA key so that advertising an unusable key is detectable. This kind is not a ratified NIP. - **Transport**: the payload rides inside unchanged NIP-44 and NIP-59 gift wrap, so relays need no changes and clients that have not implemented it are unaffected. - **Cost**: ~3 KB constant overhead per DM (about 2.4x a typical chat message), almost all of it the 1,568-byte ML-KEM ciphertext. The attestation is ~12 KB, published once per identity. - **Limits**: this protects confidentiality only. Events are still signed with secp256k1, so it does not prevent a quantum adversary from forging events. - **Reference library**: `@nostr-wot/pq` — https://github.com/nostr-wot/nostr-wot-sdk/tree/main/packages/pq - **Discussion**: https://github.com/nostr-protocol/nips/issues/1971 ### News Ecosystem news at https://nostr-wot.com/news, covering NIP changes, client releases, security disclosures, and adoption across the Nostr ecosystem. Entries are assembled by the Nostr WoT Newsroom from cited primary sources and published automatically, without individual human review — treat claims accordingly and prefer the linked primary source for anything load-bearing. There are two post types: a weekly digest (a round-up of the week's items) and a single story (one notable event). Every entry links its primary sources. ### WoT Oracle Self-hostable Rust backend for social graph queries with <1ms cached latency and 10,000+ queries/second. ### JavaScript SDK TypeScript SDK (`nostr-wot-sdk`) for the Oracle API with React hooks, full type safety, and error handling. ## Trust Score Formula ``` score = base x distance_weight x (1 + path_bonus) ``` Distance weights: 1 hop = 100%, 2 hops = 60%, 3 hops = 30%, 4+ hops = 10% ## API Reference ### Browser Extension API ```javascript // Trust scoring await window.nostr.wot.getDistance(targetPubkey) await window.nostr.wot.getTrustScore(targetPubkey) await window.nostr.wot.isInWoT(targetPubkey) // NIP-07 signing await window.nostr.getPublicKey() await window.nostr.signEvent(event) await window.nostr.nip04.encrypt(pubkey, plaintext) await window.nostr.nip04.decrypt(pubkey, ciphertext) await window.nostr.nip44.encrypt(pubkey, plaintext) await window.nostr.nip44.decrypt(pubkey, ciphertext) // Post-quantum encryption (opt-in, additive — existing 2-arg callers are untouched). // recipientKemKey is the recipient's base64 ML-KEM-1024 key from their kind:10203 attestation. await window.nostr.nip44.encrypt(pubkey, plaintext, { scheme: "pq", recipientKemKey }) // decrypt takes no flag: the payload is self-describing, so the signer routes it await window.nostr.nip44.decrypt(pubkey, ciphertext) ``` ### Post-Quantum Library ```javascript import { derivePqKeys, buildAttestationTags, PQC_KIND, createPqDirectMessage, openPqDirectMessage } from "@nostr-wot/pq"; // Derive ML-KEM-1024 + ML-DSA-87 keys from a NIP-06 seed (not from the private key) const { kem, dsa } = derivePqKeys(seed, 0); // Send a gift-wrapped post-quantum DM (an ordinary kind:1059 to any relay) const wrap = createPqDirectMessage({ content: "hello", senderSecretKey: mySecretKey, recipientPubkey: theirPubkey, recipientKemKey: attestation.kem, }); ``` ### JavaScript SDK ```javascript import { WoTClient } from "nostr-wot-sdk"; const client = new WoTClient({ baseUrl: "https://wot-oracle.mappingbitcoin.com", timeout: 5000, retries: 3, }); ``` ### Oracle REST API ``` GET /distance?from={pubkey}&to={pubkey} POST /distance/batch GET /stats ``` Public instance: `https://wot-oracle.mappingbitcoin.com` ## Documentation - [Getting Started](https://nostr-wot.com/docs/getting-started): Installation and quick start guide - [Extension API Reference](https://nostr-wot.com/docs/extension): Complete browser extension API docs - [SDK Reference](https://nostr-wot.com/docs/sdk): TypeScript SDK with React hooks - [Oracle API Reference](https://nostr-wot.com/docs/oracle): Rust backend REST API docs ## Pages - [Home](https://nostr-wot.com): Project overview and introduction - [Features](https://nostr-wot.com/features): Full feature breakdown — signer, wallet, trust scoring, privacy - [Download](https://nostr-wot.com/download): Browser extension downloads for all browsers - [Oracle](https://nostr-wot.com/oracle): WoT Oracle server details and self-hosting guide - [Post-Quantum Nostr](https://nostr-wot.com/pqc): Hybrid post-quantum encryption — check whether an npub publishes post-quantum keys, and how they are derived - [Post-Quantum Chat Demo](https://nostr-wot.com/pqc/chat): Live demo of a post-quantum encrypted Nostr DM, with an event explorer - [Playground](https://nostr-wot.com/playground): Interactive graph visualization and API testing - [Blog](https://nostr-wot.com/blog): News and updates - [News](https://nostr-wot.com/news): Automated ecosystem news — NIP changes, client releases, security disclosures, adoption - [Guides](https://nostr-wot.com/guides): Step-by-step tutorials - [About](https://nostr-wot.com/about): Project background - [Contact](https://nostr-wot.com/contact): Get in touch ## Projects - [Browser Extension](https://github.com/nostr-wot/nostr-wot-extension): Chrome, Brave, Edge, Opera, Firefox support - [JavaScript SDK](https://github.com/nostr-wot/nostr-wot-sdk): npm package `nostr-wot-sdk` - [WoT Oracle](https://github.com/nostr-wot/nostr-wot-oracle): Self-hostable Rust backend - [@nostr-wot/pq](https://github.com/nostr-wot/nostr-wot-sdk/tree/main/packages/pq): Post-quantum identity keys, attestation and hybrid message envelope for Nostr ## Optional - [Privacy Policy](https://nostr-wot.com/privacy) - [Terms of Service](https://nostr-wot.com/terms) - [Media Kit](https://nostr-wot.com/media-kit)