added pubkey

This commit is contained in:
randogoth 2026-09-26 14:28:18 +03:00
parent 8869280854
commit 1e2798a21d

View file

@ -11,6 +11,14 @@ A server learns which mailbox a message is for, how big it is and when it arrive
- **Decentralized** — independent servers, no federation, no directories.
- **Portable** — identity is a keypair, not an account.
## Register with smol.place
Ready to get started? Pin our server's public key before you connect:
> `po3cxpzjrt73dypt2rplskbkywizr44afhqthaa5x47mfpe4kesq`
Your smol mail client checks it on every connection, so you always know you're talking to us and never an impostor.
## Identity
Identity is one Ed25519 keypair. The 32-byte public key *is* the identity; the 32-byte seed is the only secret to back up. Encryption keys are derived from the same keypair, so there is exactly one thing to hold, move between servers, print on paper or scan from a screen.
@ -32,14 +40,6 @@ Keys learned from a server are pinned on first use. Later changes need a rotatio
Ed25519 · X25519 · ChaCha20-Poly1305 · SHA-256. Four established primitives, no novel cryptography, nothing else anywhere in the protocol. Transport is TCP with a Noise handshake — no certificates, no CA, no expiry.
## What is not protected
Traffic analysis, delivery timing, mailbox size, and whether a user has an account on a given server. Run a server as a Tor onion service for metadata resistance; the transport needs no changes for it.
There is no forward secrecy on the recipient side: a seized recipient key decrypts ciphertext recorded while it was valid. Messages are signed, so they carry non-repudiation rather than deniability.
Version 1 excludes attachments, group messaging, federation, anonymous routing, multi-device synchronisation and key revocation.
## Reference server
[smolmaild.py](https://code.randogoth.com/randogoth/smolmail/src/branch/main/smolmaild.py) is a complete server in one file. It declares its own dependencies inline, so there is nothing to install: