Glossary

The technical and cryptographic terms used on this site, explained simply. For more detailed explanations, head to the blog.

Argon2id

Argon2id is the winning algorithm of the Password Hashing Competition, designed to resist brute-force attacks even with specialized hardware (GPU, ASIC). It's used here on two levels: to derive the key that protects the user's private key, and for server-side password hashing.

Cryptographic salt

A salt is a unique random value associated with each user, combined with their password before being processed by a derivation function like Argon2id. This prevents an attacker from using precomputed tables (rainbow tables) to recover passwords in bulk.

Curve25519

Curve25519 is an elliptic curve designed for fast, secure key exchange (Diffie-Hellman). Each account has a key pair generated on this curve: the public key can be shared freely, the private key never leaves the user's device.

End-to-end encryption (E2E)

End-to-End Encryption: files are encrypted in the browser before being sent, and only decrypted when viewed, also in the browser. At no point does the server handle the data in clear text.

JWT (JSON Web Token)

A JSON Web Token is a compact, cryptographically signed token that proves its holder's identity. After login, the server issues a JWT that the client sends back with every request; the server can verify its validity (via RSA signature) without storing any session state.

Libsodium

Libsodium is a modern, audited, widely used cryptography library that provides safe, simple implementations of encryption (XChaCha20-Poly1305), key derivation (Argon2id) and key exchange (Curve25519) algorithms. May·Secret uses its WebAssembly version directly in the browser.

Nonce

"Number used once" — a value generated randomly for each encryption operation, guaranteeing that encrypting the same file twice with the same key produces different results. Essential to the security of modern symmetric encryption algorithms.

Public key / private key

In asymmetric cryptography, each user has two mathematically linked keys. The public key is used to encrypt data or verify a signature, and can be distributed without risk. The private key is used to decrypt or sign, and must never be shared — at May·Secret, it never leaves the user's device, encrypted with their password.

RSA 256-bit (RS256)

RS256 combines the RSA algorithm with the SHA-256 hash function to sign JWT tokens. The server signs the token with a private RSA key; any service can verify its authenticity with the corresponding public key, without ever having access to the private key.

Stateless authentication

Unlike classic session-based authentication (where the server keeps track in memory of who's logged in), a stateless architecture stores nothing server-side. Each request carries its own signed token (JWT), which the server verifies on the fly — simplifying scaling and reducing the attack surface.

XChaCha20-Poly1305

XChaCha20-Poly1305 is an authenticated encryption (AEAD) algorithm combining the ChaCha20 stream cipher (extended-nonce variant) with the Poly1305 authentication code. It guarantees both confidentiality (no one can read the data) and integrity (any tampering with the encrypted file is detected).

Zero-knowledge architecture

A "zero-knowledge" architecture guarantees that the service provider has technically no way to read the user's data. All encryption happens client-side, before it's sent to the server: the server only ever handles unreadable content, even in the event of a breach or a court order.

May·Secret only uses storage strictly necessary for the service to work: a preference cookie to remember this notice and an authentication token in sessionStorage, deleted when the tab closes. No tracking or advertising cookies. Learn more