Algorithms in use
XMTP supports the replacement and expansion of supported algorithms in a backward-compatible manner.
Supported algorithms are selected based on fairly pragmatic criteria. For example, the algorithm must be:
- Tried and true and in widespread use
 - Well-supported in desirable XMTP client app languages, such as JavaScript
 - Available in standard browser APIs, rather than via third-party dependencies
 
XMTP also aims to reuse existing algorithms, looking to well-known and standard algorithms with trustworthy implementations.
As such, XMTP's cryptographic primitives are built around the standard Web Crypto API and the @noble libraries, using components of Signal's X3DH protocol for secure offline communication.
Specifically, XMTP's participant authentication and message encryption algorithm choices include:
- EC Public/Private Keys (secp256k1)
 - ECDSA signatures and signing of public keys (ECDSA and EIP-191)
 - Shared secret derivation (ECDH/X3DH)
 - Authenticated symmetric encryption (AEAD: AES-256-GCM)
 - Symmetric key derivation (HKDF-SHA-256)
 - X3DH-style key bundles (X3DH Key Agreement Protocol)