45 lines
2.5 KiB
Markdown
45 lines
2.5 KiB
Markdown
# smolmail
|
|
|
|
A minimalist, cypherpunk mail protocol. Fun, simple, decentralised, end-to-end encrypted.
|
|
|
|
Online correspondence reduced to an address, a key and a message.
|
|
|
|
Five operations, four primitives, zero extensibility mechanisms. One 32-byte master key as the only identity. No certificates, no CAs, no expiry: one round trip and the server's key pin are the entire trust model. A fresh key seals every message: untraceable, unforgeable, and safe by construction.
|
|
|
|
Anti-spam without censorship: quotas and tokens do the filtering, and servers never see a word. Clients talk directly to the recipient's server. Registration is bound to one server by proof-of-possession. Double-signed certificate chains move a username to a new key, and old keys keep receiving until every contact catches up.
|
|
|
|
## Send your first message
|
|
|
|
Get started with a @smol.place address. 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.
|
|
|
|
Not sure what any of this means? No problem! Just visit our [Webmail Client](http://webmail.smol.place) to register your address and start sending encrypted messages.
|
|
|
|
## Identity
|
|
|
|
The only secret is a 32-byte master. Back that up and nothing else: the Ed25519 signing key, the encryption key derived from it, and the key that issues accept tokens all come out of it. One thing to hold, move between servers, print on paper or scan from a screen.
|
|
|
|
Signatures prove authorship. A throwaway key per message means a stolen identity key cannot decrypt anything already sent.
|
|
|
|
## Addressing
|
|
|
|
```
|
|
alice@example.org short form, resolved via the server
|
|
smol://alice@example.org/mfrggzdfmztwq2lknnwg23tpo… self-certifying, carries its own key
|
|
```
|
|
|
|
The short form is typeable. The long form carries the key itself, so an address shared by QR code, contact file or link needs no trust in any server at all. Either way, changing servers never changes an identity.
|
|
|
|
Keys learned from a server are pinned on first use. Later changes need a rotation certificate signed by the previous key, or explicit confirmation.
|
|
|
|
## Cryptography
|
|
|
|
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.
|
|
|
|
## Specification
|
|
|
|
[SPEC.md](SPEC.md): wire format, operations, trust model and conformance.
|
|
[WS.md](WS.md): smolmail over WebSocket annex.
|