Ir al contenido

Glosario

TérminoDefinición
KEMKey Encapsulation Mechanism — establece un shared secret usando criptografía asimétrica. ML-KEM es el KEM resistente a quantum que se usa acá.
DEMData Encapsulation Mechanism — cifrado simétrico para el payload real. AES-256-GCM es el DEM que se usa acá.
AEADAuthenticated Encryption with Associated Data — provee confidencialidad e integridad. AES-GCM es un esquema AEAD.
AADAdditional Authenticated Data — input al cómputo del tag de AES-GCM que no se cifra pero sí se autentica. En el streaming de AegisQ, el AAD es el índice de chunk de 4 bytes big-endian.
M-LWEModule Learning With Errors — el problema hard de retículos subyacente a la resistencia cuántica de ML-KEM.
NTTNumber Theoretic Transform — FFT sobre campos finitos para multiplicación polinomial en O(n log n).
CBDCentered Binomial Distribution — se usa para muestrear términos de error pequeños en la generación de claves de ML-KEM.
Implicit RejectionML-KEM Decaps devuelve una clave pseudoaleatoria por contenido inválido de una capsule de tamaño correcto, no un error de validez. Los errores estructurales de tamaño son distintos.
Transit PackageEl array de bytes completo que se envía por la red: [Capsule | Nonce | Tag | Ciphertext].
ZeroizaciónSobrescritura segura de memoria sensible (claves, secretos) con ceros antes de la desasignación.
Auth TagTag de autenticación de 16 bytes de AES-GCM. Puede fallar por manipulación, clave incorrecta o capsule inválida; no demuestra la identidad del emisor.
Forward SecrecyComprometer un secreto de largo plazo no compromete claves de sesiones anteriores. EphemeralSession gestiona claves, pero por sí sola no garantiza esta propiedad del protocolo ni borrado seguro.
TérminoDefinición
HeaderPrimer chunk del Transit Package en modo stream: [capsule | base_nonce (12 B) | chunk_size (4 B BE u32)].
FrameSobre de un chunk en el Transit Package en modo stream: [length (4 B BE u32) | ciphertext | tag (16 B)].
base_nonceEl nonce aleatorio de 12 bytes almacenado en el header del stream. Los nonces de cada chunk se derivan de este.
chunk_sizeTamaño máximo de ciphertext por chunk producido (1..=16 MiB; default 64 KiB). Codificado en el header.
EOF MarkerFrame especial con length = 0 y un tag sobre plaintext vacío. Cierra el stream.
Chunk IndexPosición 0-based de un frame en el stream (uint32). Usado en la derivación del nonce y en el AAD.

Términos de Serialización de Claves (v1.3.0)

Sección titulada «Términos de Serialización de Claves (v1.3.0)»
TérminoDefinición
PEMSobre Privacy-Enhanced Mail: clave ASCII-armored con headers -----BEGIN ... ----- / -----END ... -----. AegisQ usa una forma adaptada (RFC 7468).
JSON KeyFormato de clave auto-descriptivo con campos algorithm, level y public_key. Útil cuando el nivel no se puede transmitir fuera de banda.
Base64 URL-safeVariante de Base64 que usa - y _ en lugar de + y /, y omite el padding =. Adecuado para headers HTTP, URLs y variables de entorno.
HKDFHMAC-based Key Derivation Function (RFC 5869). AegisQ usa HKDF-SHA3-256 para key wrapping. No endurece contraseñas; requiere una entrada secreta de alta entropía.
Key WrapCifrar una clave bajo otra clave. AegisQ usa AES-256-GCM con una clave derivada de bytes secretos de alta entropía mediante HKDF-SHA3-256; el argumento de API se llama password.
FingerprintIdentificador público truncado: primeros 8 bytes de SHA3-256(public_key) en hex. Lo usa KeyPair.__repr__; no autentica identidad y permite correlación entre logs.
MagicSecuencia de bytes interna que marca un blob de clave cifrada de AegisQ. Validada al cargar para detectar mismatch de formato.
DocumentoURL
FIPS 203 (ML-KEM)https://csrc.nist.gov/pubs/fips/203/final
NIST SP 800-38D (AES-GCM)https://csrc.nist.gov/pubs/sp/800/38/d/final
RFC 5869 (HKDF)https://www.rfc-editor.org/rfc/rfc5869
RFC 4648 (Base64)https://www.rfc-editor.org/rfc/rfc4648
RFC 7468 (PEM)https://www.rfc-editor.org/rfc/rfc7468
CRYSTALS-Kyber spec v3.02https://pq-crystals.org/kyber/
Crate aes-gcm de Rusthttps://docs.rs/aes-gcm
Crate zeroize de Rusthttps://docs.rs/zeroize
Crate subtle de Rusthttps://docs.rs/subtle
PyO3 User Guidehttps://pyo3.rs/latest/
Documentación de Maturinhttps://www.maturin.rs/
Documentación de Starlighthttps://starlight.astro.build/