chore: rename project quicnprotochat -> quicproquo (binaries: qpq)
Rename the entire workspace:
- Crate packages: quicnprotochat-{core,proto,server,client,gui,p2p,mobile} -> quicproquo-*
- Binary names: quicnprotochat -> qpq, quicnprotochat-server -> qpq-server,
quicnprotochat-gui -> qpq-gui
- Default files: *-state.bin -> qpq-state.bin, *-server.toml -> qpq-server.toml,
*.db -> qpq.db
- Environment variable prefix: QUICNPROTOCHAT_* -> QPQ_*
- App identifier: chat.quicnproto.gui -> chat.quicproquo.gui
- Proto package: quicnprotochat.bench -> quicproquo.bench
- All documentation, Docker, CI, and script references updated
HKDF domain-separation strings and P2P ALPN remain unchanged for
backward compatibility with existing encrypted state and wire protocol.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,18 +1,18 @@
|
||||
# Glossary
|
||||
|
||||
Alphabetical glossary of terms used throughout the quicnprotochat documentation.
|
||||
Alphabetical glossary of terms used throughout the quicproquo documentation.
|
||||
Each entry includes a brief definition and, where applicable, a reference to the
|
||||
relevant specification or documentation page.
|
||||
|
||||
---
|
||||
|
||||
**AEAD** -- Authenticated Encryption with Associated Data. A symmetric encryption
|
||||
scheme that provides both confidentiality and integrity. quicnprotochat uses
|
||||
scheme that provides both confidentiality and integrity. quicproquo uses
|
||||
AES-128-GCM (in the MLS ciphersuite). See [Cryptography Overview](../cryptography/overview.md).
|
||||
|
||||
**ALPN** -- Application-Layer Protocol Negotiation. A TLS extension that allows
|
||||
the client and server to agree on an application protocol during the TLS
|
||||
handshake. quicnprotochat uses the ALPN token `b"capnp"` to identify Cap'n Proto
|
||||
handshake. quicproquo uses the ALPN token `b"capnp"` to identify Cap'n Proto
|
||||
RPC connections. See [QUIC + TLS 1.3](../protocol-layers/quic-tls.md).
|
||||
|
||||
**AS** -- Authentication Service. The server component that stores and
|
||||
@@ -21,7 +21,7 @@ generation; peers fetch them to add new members to a group.
|
||||
See [Architecture Overview](../architecture/overview.md).
|
||||
|
||||
**Cap'n Proto** -- A zero-copy serialisation format with a built-in RPC system.
|
||||
quicnprotochat uses Cap'n Proto for all wire messages and service RPCs. Schemas
|
||||
quicproquo uses Cap'n Proto for all wire messages and service RPCs. Schemas
|
||||
live in `schemas/*.capnp` and are compiled to Rust at build time.
|
||||
See [Cap'n Proto Serialisation and RPC](../protocol-layers/capn-proto.md).
|
||||
|
||||
@@ -32,13 +32,13 @@ forward secrecy and post-compromise security.
|
||||
See [MLS (RFC 9420)](../protocol-layers/mls.md).
|
||||
|
||||
**Credential** -- An MLS identity binding that associates a member's signing key
|
||||
with their identity. quicnprotochat uses `BasicCredential`, which contains the
|
||||
with their identity. quicproquo uses `BasicCredential`, which contains the
|
||||
raw Ed25519 public key bytes. See
|
||||
[Ed25519 Identity Keys](../cryptography/identity-keys.md).
|
||||
|
||||
**DER** -- Distinguished Encoding Rules. A binary encoding format for ASN.1
|
||||
structures, used for X.509 certificates and TLS certificate chains. The
|
||||
self-signed TLS certificate generated by quicnprotochat is DER-encoded.
|
||||
self-signed TLS certificate generated by quicproquo is DER-encoded.
|
||||
|
||||
**DS** -- Delivery Service. The server component that provides store-and-forward
|
||||
relay for opaque MLS payloads. The DS never inspects ciphertext -- it routes
|
||||
@@ -47,7 +47,7 @@ See [Architecture Overview](../architecture/overview.md).
|
||||
|
||||
**Ed25519** -- Edwards-curve Digital Signature Algorithm on Curve25519. Used for
|
||||
MLS identity credentials and signing (KeyPackages, Commits, group operations).
|
||||
quicnprotochat uses the `ed25519-dalek` crate.
|
||||
quicproquo uses the `ed25519-dalek` crate.
|
||||
See [Ed25519 Identity Keys](../cryptography/identity-keys.md).
|
||||
|
||||
**Epoch** -- The version number of an MLS group's key state. Each Commit
|
||||
@@ -61,11 +61,11 @@ the epoch ratchet: key material from earlier epochs is deleted when the epoch
|
||||
advances. See [Forward Secrecy](../cryptography/forward-secrecy.md).
|
||||
|
||||
**HKDF** -- HMAC-based Key Derivation Function. Used in MLS to derive symmetric
|
||||
keys from shared secrets. quicnprotochat uses HKDF-SHA256.
|
||||
keys from shared secrets. quicproquo uses HKDF-SHA256.
|
||||
|
||||
**HPKE** -- Hybrid Public Key Encryption. The public-key encryption scheme used
|
||||
in MLS for key exchange (encrypting to a KeyPackage's init key). Defined in
|
||||
RFC 9180. In quicnprotochat, HPKE uses DHKEM(X25519, HKDF-SHA256).
|
||||
RFC 9180. In quicproquo, HPKE uses DHKEM(X25519, HKDF-SHA256).
|
||||
See [Hybrid KEM](../protocol-layers/hybrid-kem.md).
|
||||
|
||||
**KEM** -- Key Encapsulation Mechanism. A cryptographic primitive that generates
|
||||
@@ -80,7 +80,7 @@ is consumed on fetch. See
|
||||
|
||||
**ML-KEM-768** -- Module-Lattice-based Key Encapsulation Mechanism, security
|
||||
level 3 (NIST FIPS 203). A post-quantum KEM based on the hardness of the
|
||||
module learning-with-errors (MLWE) problem. quicnprotochat plans to use ML-KEM-768
|
||||
module learning-with-errors (MLWE) problem. quicproquo plans to use ML-KEM-768
|
||||
in a hybrid construction with X25519 at milestone M7.
|
||||
See [Post-Quantum Readiness](../cryptography/post-quantum-readiness.md).
|
||||
|
||||
@@ -104,7 +104,7 @@ See [Future Research](../roadmap/future-research.md).
|
||||
**QUIC** -- A UDP-based, multiplexed, encrypted transport protocol defined in
|
||||
RFC 9000. QUIC integrates TLS 1.3 for authentication and confidentiality and
|
||||
provides 0-RTT connection establishment, stream multiplexing, and built-in
|
||||
congestion control. quicnprotochat uses the `quinn` crate.
|
||||
congestion control. quicproquo uses the `quinn` crate.
|
||||
See [QUIC + TLS 1.3](../protocol-layers/quic-tls.md).
|
||||
|
||||
**Ratchet Tree** -- The binary tree data structure used in MLS for efficient
|
||||
@@ -113,7 +113,7 @@ hold derived key material. Updates propagate along the path from a leaf to the
|
||||
root, giving O(log N) cost for key updates in a group of N members.
|
||||
|
||||
**TLS 1.3** -- Transport Layer Security version 1.3, defined in RFC 8446. The
|
||||
standard for authenticated, encrypted transport. quicnprotochat uses TLS 1.3
|
||||
standard for authenticated, encrypted transport. quicproquo uses TLS 1.3
|
||||
exclusively (via `rustls` with `TLS13` cipher suites only) as part of the QUIC
|
||||
transport. See [QUIC + TLS 1.3](../protocol-layers/quic-tls.md).
|
||||
|
||||
@@ -125,11 +125,11 @@ KeyPackage. See [MLS (RFC 9420)](../protocol-layers/mls.md).
|
||||
**X25519** -- Elliptic curve Diffie-Hellman key exchange on Curve25519 (using
|
||||
the Montgomery form). Used as the classical component of DHKEM in MLS HPKE
|
||||
and in the hybrid KEM (X25519 + ML-KEM-768).
|
||||
quicnprotochat uses the `x25519-dalek` crate.
|
||||
quicproquo uses the `x25519-dalek` crate.
|
||||
See [Cryptography Overview](../cryptography/overview.md).
|
||||
|
||||
**Zeroize** -- The practice of securely clearing sensitive data (private keys,
|
||||
shared secrets) from memory when it is no longer needed. quicnprotochat uses the
|
||||
shared secrets) from memory when it is no longer needed. quicproquo uses the
|
||||
`zeroize` crate with the `ZeroizeOnDrop` derive macro to ensure that key material
|
||||
is overwritten on drop.
|
||||
See [Key Lifecycle and Zeroization](../cryptography/key-lifecycle.md).
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# References and Further Reading
|
||||
|
||||
This page collects the standards, crate documentation, and research papers
|
||||
referenced throughout the quicnprotochat documentation. Entries are organised by
|
||||
referenced throughout the quicproquo documentation. Entries are organised by
|
||||
category.
|
||||
|
||||
---
|
||||
@@ -10,21 +10,21 @@ category.
|
||||
|
||||
| Reference | Description |
|
||||
|-----------|-------------|
|
||||
| [RFC 9420 -- The Messaging Layer Security (MLS) Protocol](https://datatracker.ietf.org/doc/rfc9420/) | The group key agreement protocol used by quicnprotochat. Defines KeyPackages, Welcome messages, Commits, the ratchet tree, epoch advancement, and the security properties (forward secrecy, post-compromise security). See [MLS (RFC 9420)](../protocol-layers/mls.md). |
|
||||
| [RFC 9000 -- QUIC: A UDP-Based Multiplexed and Secure Transport](https://datatracker.ietf.org/doc/rfc9000/) | The transport protocol underlying quicnprotochat's primary connection layer. Provides multiplexed streams, 0-RTT connection establishment, and built-in congestion control. See [QUIC + TLS 1.3](../protocol-layers/quic-tls.md). |
|
||||
| [RFC 9001 -- Using TLS to Secure QUIC](https://datatracker.ietf.org/doc/rfc9001/) | Defines how TLS 1.3 is integrated into QUIC for authentication and key exchange. quicnprotochat uses this via the `quinn` + `rustls` stack. |
|
||||
| [RFC 8446 -- The Transport Layer Security (TLS) Protocol Version 1.3](https://datatracker.ietf.org/doc/rfc8446/) | The TLS version used exclusively by quicnprotochat (no TLS 1.2 fallback). Provides the handshake, key schedule, and record layer for QUIC transport security. |
|
||||
| [RFC 9180 -- Hybrid Public Key Encryption (HPKE)](https://datatracker.ietf.org/doc/rfc9180/) | The public-key encryption scheme used internally by MLS for encrypting to KeyPackage init keys. quicnprotochat's MLS ciphersuite uses DHKEM(X25519, HKDF-SHA256) with AES-128-GCM. |
|
||||
| [NIST FIPS 203 -- Module-Lattice-Based Key-Encapsulation Mechanism Standard (ML-KEM)](https://csrc.nist.gov/pubs/fips/203/final) | The post-quantum KEM standard. quicnprotochat plans to use ML-KEM-768 in a hybrid construction with X25519 at milestone M7. See [Post-Quantum Readiness](../cryptography/post-quantum-readiness.md). |
|
||||
| [Cap'n Proto specification](https://capnproto.org/) | The zero-copy serialisation format and RPC system used for all quicnprotochat wire messages and service interfaces. See [Cap'n Proto Serialisation and RPC](../protocol-layers/capn-proto.md). |
|
||||
| [draft-ietf-tls-hybrid-design -- Hybrid Key Exchange in TLS 1.3](https://datatracker.ietf.org/doc/draft-ietf-tls-hybrid-design/) | The combiner approach used by quicnprotochat's hybrid KEM construction (X25519 shared secret concatenated with ML-KEM-768 shared secret, fed through HKDF). See [Hybrid KEM](../protocol-layers/hybrid-kem.md). |
|
||||
| [RFC 9420 -- The Messaging Layer Security (MLS) Protocol](https://datatracker.ietf.org/doc/rfc9420/) | The group key agreement protocol used by quicproquo. Defines KeyPackages, Welcome messages, Commits, the ratchet tree, epoch advancement, and the security properties (forward secrecy, post-compromise security). See [MLS (RFC 9420)](../protocol-layers/mls.md). |
|
||||
| [RFC 9000 -- QUIC: A UDP-Based Multiplexed and Secure Transport](https://datatracker.ietf.org/doc/rfc9000/) | The transport protocol underlying quicproquo's primary connection layer. Provides multiplexed streams, 0-RTT connection establishment, and built-in congestion control. See [QUIC + TLS 1.3](../protocol-layers/quic-tls.md). |
|
||||
| [RFC 9001 -- Using TLS to Secure QUIC](https://datatracker.ietf.org/doc/rfc9001/) | Defines how TLS 1.3 is integrated into QUIC for authentication and key exchange. quicproquo uses this via the `quinn` + `rustls` stack. |
|
||||
| [RFC 8446 -- The Transport Layer Security (TLS) Protocol Version 1.3](https://datatracker.ietf.org/doc/rfc8446/) | The TLS version used exclusively by quicproquo (no TLS 1.2 fallback). Provides the handshake, key schedule, and record layer for QUIC transport security. |
|
||||
| [RFC 9180 -- Hybrid Public Key Encryption (HPKE)](https://datatracker.ietf.org/doc/rfc9180/) | The public-key encryption scheme used internally by MLS for encrypting to KeyPackage init keys. quicproquo's MLS ciphersuite uses DHKEM(X25519, HKDF-SHA256) with AES-128-GCM. |
|
||||
| [NIST FIPS 203 -- Module-Lattice-Based Key-Encapsulation Mechanism Standard (ML-KEM)](https://csrc.nist.gov/pubs/fips/203/final) | The post-quantum KEM standard. quicproquo plans to use ML-KEM-768 in a hybrid construction with X25519 at milestone M7. See [Post-Quantum Readiness](../cryptography/post-quantum-readiness.md). |
|
||||
| [Cap'n Proto specification](https://capnproto.org/) | The zero-copy serialisation format and RPC system used for all quicproquo wire messages and service interfaces. See [Cap'n Proto Serialisation and RPC](../protocol-layers/capn-proto.md). |
|
||||
| [draft-ietf-tls-hybrid-design -- Hybrid Key Exchange in TLS 1.3](https://datatracker.ietf.org/doc/draft-ietf-tls-hybrid-design/) | The combiner approach used by quicproquo's hybrid KEM construction (X25519 shared secret concatenated with ML-KEM-768 shared secret, fed through HKDF). See [Hybrid KEM](../protocol-layers/hybrid-kem.md). |
|
||||
| [RFC 9497 -- OPAQUE](https://datatracker.ietf.org/doc/rfc9497/) | Asymmetric password-authenticated key exchange. Considered for future authentication (see [Future Research](../roadmap/future-research.md)). |
|
||||
|
||||
---
|
||||
|
||||
## Rust Crate Documentation
|
||||
|
||||
| Crate | docs.rs | Role in quicnprotochat |
|
||||
| Crate | docs.rs | Role in quicproquo |
|
||||
|-------|---------|----------------------|
|
||||
| `openmls` | [docs.rs/openmls](https://docs.rs/openmls/) | MLS protocol implementation: group creation, member addition, Welcome processing, application message encryption/decryption. See [MLS (RFC 9420)](../protocol-layers/mls.md). |
|
||||
| `openmls_rust_crypto` | [docs.rs/openmls_rust_crypto](https://docs.rs/openmls_rust_crypto/) | Pure-Rust cryptographic backend for openmls. Provides the `OpenMlsRustCrypto` provider used by `GroupMember`. |
|
||||
@@ -57,7 +57,7 @@ Katriel Cohn-Gordon, Cas Cremers, Luke Garratt, Jon Millican, and Kevin Milner.
|
||||
This paper analyses the security properties of group messaging protocols and
|
||||
motivates the design of MLS. It defines the security goals (forward secrecy,
|
||||
post-compromise security, asynchronous operation) that MLS formalises into a
|
||||
protocol. Essential background for understanding why quicnprotochat uses MLS
|
||||
protocol. Essential background for understanding why quicproquo uses MLS
|
||||
rather than extending the Signal protocol to groups.
|
||||
|
||||
### Signal Protocol
|
||||
@@ -67,7 +67,7 @@ Trevor Perrin and Moxie Marlinspike.
|
||||
[signal.org/docs/specifications/doubleratchet](https://signal.org/docs/specifications/doubleratchet/)
|
||||
|
||||
Defines the double ratchet used in Signal's 1:1 messaging. Relevant as a
|
||||
potential optimisation for quicnprotochat's 1:1 channels (see
|
||||
potential optimisation for quicproquo's 1:1 channels (see
|
||||
[Future Research: Double-Ratchet DM Layer](../roadmap/future-research.md#double-ratchet-dm-layer))
|
||||
and as background for understanding how MLS generalises ratcheting to groups.
|
||||
|
||||
@@ -86,7 +86,7 @@ Roberto Avanzi et al.
|
||||
[NIST PQC Round 3 submission](https://pq-crystals.org/kyber/)
|
||||
|
||||
The predecessor to ML-KEM (NIST FIPS 203). CRYSTALS-Kyber was selected by NIST
|
||||
and standardised as ML-KEM. quicnprotochat uses the `ml-kem` crate which
|
||||
and standardised as ML-KEM. quicproquo uses the `ml-kem` crate which
|
||||
implements the final FIPS 203 standard.
|
||||
|
||||
### Metadata Resistance
|
||||
@@ -96,7 +96,7 @@ Signal Blog.
|
||||
[signal.org/blog/sealed-sender](https://signal.org/blog/sealed-sender/)
|
||||
|
||||
Describes Signal's approach to hiding sender identity from the server. Relevant
|
||||
to quicnprotochat's future research on metadata resistance (see
|
||||
to quicproquo's future research on metadata resistance (see
|
||||
[Future Research](../roadmap/future-research.md)).
|
||||
|
||||
---
|
||||
@@ -104,7 +104,7 @@ to quicnprotochat's future research on metadata resistance (see
|
||||
## Cross-references
|
||||
|
||||
- [Glossary](glossary.md) -- definitions of terms used in these references
|
||||
- [Protocol Layers Overview](../protocol-layers/overview.md) -- how the protocols layer in quicnprotochat
|
||||
- [Protocol Layers Overview](../protocol-layers/overview.md) -- how the protocols layer in quicproquo
|
||||
- [Cryptography Overview](../cryptography/overview.md) -- cryptographic properties and threat model
|
||||
- [Future Research](../roadmap/future-research.md) -- technologies under consideration
|
||||
- [Milestones](../roadmap/milestones.md) -- current project status
|
||||
|
||||
Reference in New Issue
Block a user