(registered 2026-05-11, last updated 2026-05-11) Scheme name: cttps Status: Provisional Applications/protocols that use this scheme: CTTPS (Crypto Transfer Protocol Secure). This protocol facilitates encrypted data transmission using an ephemeral X25519/AES-GCM handshake layer. Contact: Saso Ahmed (NotDreamPVP&gmail.com) Change controller: Saso Ahmed (NotDreamPVP&gmail.com) References: Technical Specification (Included below). Security considerations: CTTPS is designed with a "Secure-Only" architecture. It requires a mandatory cryptographic handshake before any application data is exchanged. It utilizes authenticated encryption (AEAD) to ensure data integrity and Perfect Forward Secrecy (PFS) to ensure that session keys are never reused or compromised long-term. Technical Specification: CTTPS Protocol **1. Overview** The Ciphered Text Transfer Protocol over SSL/Stream (CTTPS) is a high-performance secure transport protocol. It is designed to establish an encrypted tunnel over a standard TCP connection using an ephemeral Elliptic Curve Diffie-Hellman (ECDH) handshake and subsequent symmetric authenticated encryption. **2. Cryptographic Primitive: Key Exchange** To ensure Forward Secrecy, CTTPS utilizes the **X25519** curve (RFC 7748). * **Handshake Process:** * **Client Hello:** The client transmits a 32-byte X25519 ephemeral public key. * **Server Response:** The server responds with its own 32-byte X25519 ephemeral public key. * **Secret Derivation:** Both endpoints compute the shared 256-bit secret locally. This secret is never transmitted over the wire. **3. Data Encryption & Integrity (AES-GCM)** Once the handshake is complete, all further communication is encrypted using **AES-256-GCM**. This provides both confidentiality and built-in tamper detection. * **Nonce (Initialization Vector):** 12 bytes. Each packet must use a unique nonce to prevent replay attacks and ensure cryptographic security. * **Authentication Tag:** 16 bytes. This tag is calculated over the ciphertext and nonce to verify that the data has not been modified in transit. **4. Packet Structure** A standard CTTPS packet is composed of the following contiguous segments: 1. **Nonce:** 12 bytes 2. **Encrypted Payload:** Variable length 3. **Authentication Tag:** 16 bytes **5. URI Syntax** The `cttps` scheme follows the generic URI syntax defined in RFC 3986: `cttps://[:]/` **6. Reference Implementation Details** The reference implementation is written in Rust, leveraging the `ring` library for low-level cryptographic operations and `tokio` for asynchronous networking. The handshake is handled via `agreement::EphemeralPrivateKey`, and data protection is managed through the `ring::aead` (Authenticated Encryption with Associated Data) module.