-
Notifications
You must be signed in to change notification settings - Fork 0
Project Overview
Group Protocol Stack is a layered, end-to-end encrypted group-messaging protocol family built on top of MLS (RFC 9420).
Existing group-messaging solutions either bolt encryption on top of transport-level primitives or rely on a trusted server for key distribution. Group Protocol Stack inverts this: the cryptographic group-membership layer (MLS) is the foundation, and all transport framing, replay protection, and stream multiplexing sit above it — so even the delivery server is treated as untrusted.
┌── application ────────────────────────────────────────────────┐
│ GTP · GAP · GSP (text / audio / signalling semantics) │
├───────────────────────────────────────────────────────────────┤
│ GBP (base: frames, AEAD, replay, FSM) │
├───────────────────────────────────────────────────────────────┤
│ MLS (RFC 9420) (group key agreement and exporter) │
└───────────────────────────────────────────────────────────────┘
The design is intentionally analogous to the Internet protocol suite — GBP plays the role of IP, while GTP/GAP/GSP play the role of TCP, UDP, and SCTP.
| Protocol | Full name | Responsibility |
|---|---|---|
| GBP | Group Base Protocol | Framing, AEAD encryption, replay window, FSM, control plane |
| GTP | Group Text Protocol | Text messages, delivery history, read watermarks |
| GAP | Group Audio Protocol | Opus audio streams, jitter buffer, SFrame E2EE |
| GSP | Group Signaling Protocol | Signalling, roles, capability negotiation |
- End-to-end encrypted — payloads are AEAD-encrypted with keys derived by MLS; the Delivery Service sees only ciphertext.
- Replay-protected — every stream maintains a per-member replay window; duplicate or replayed frames are rejected.
- Epoch-safe — membership changes drive MLS epoch transitions; GBP enforces commit ordering via a coordinator-based control plane.
- Stream-multiplexed — four stream classes (control / audio / text / signal) share one QUIC connection with independent congestion domains.
The reference implementation is a Rust workspace. The same protocol is published from one source tree to every major
package manager, with pre-built native binaries for win-x64, win-arm64, linux-x64, linux-arm64, osx-x64,
osx-arm64.
| Language | Package |
|---|---|
| Rust | gbp-stack |
| .NET | GBPStack |
| Python | gbp-stack |
| Node.js | @voluntas-progressus/gbp-stack |
Protocol specifications live in docs/ — English in
docs/en/, Russian in docs/ru/.
The protocols are at Internet-Draft stage (Standards Track intent).