Módulos crypto y hash — Criptografía y Hashing
Archivos: stdlib/std/crypto.fa, stdlib/std/hash.fa
¿Por qué existen?
Exponen al usuario de Forja las operaciones criptográficas y de hashing implementadas en Rust en src/crypto.rs, src/crypto_pq.rs y src/hash.rs. Permiten cifrar datos, generar hashes, y usar criptografía post-cuántica desde código Forja.
Módulo crypto — Cifrado y Criptografía
| Función | Descripción |
|---|---|
cifrar_aes_gcm(clave, iv, datos, aad) | Cifra datos con AES-256-GCM (autenticado) |
descifrar_aes_gcm(clave, iv, cifrado, aad, tag) | Descifra datos cifrados con AES-256-GCM |
cifrar_chacha20(clave, nonce, datos, aad) | Cifra datos con ChaCha20-Poly1305 |
descifrar_chacha20(clave, nonce, cifrado, aad, tag) | Descifra datos cifrados con ChaCha20-Poly1305 |
generar_bytes_aleatorios(n) | Genera n bytes criptográficamente aleatorios |
generar_clave_aleatoria() | Genera una clave AES-256 aleatoria (32 bytes) |
generar_iv_aleatorio() | Genera un IV aleatorio (12 bytes para GCM) |
derivar_clave(contraseña, salt, iteraciones) | Deriva una clave usando PBKDF2-SHA256 |
generar_salt(longitud) | Genera un salt aleatorio para derivación |
comparar_constante(a, b) | Comparación en tiempo constante (previene timing attacks) |
generar_claves_pq() | Genera par de claves post-cuánticas (Kyber/ML-KEM) |
encapsular_pk(clave_publica) | Encapsula un secreto compartido con cripto post-cuántica |
desencapsular_pk(clave_secreta, ciphertext) | Recupera el secreto compartido |
Módulo hash — Funciones Hash
| Función | Descripción |
|---|---|
hash_sha256(datos) | Calcula hash SHA-256 (32 bytes) |
hash_sha384(datos) | Calcula hash SHA-384 (48 bytes) |
hash_sha512(datos) | Calcula hash SHA-512 (64 bytes) |
hash_sha3_256(datos) | Calcula hash SHA-3-256 (Keccak) |
hash_blake3(datos) | Calcula hash BLAKE3 (rápido, moderno) |
hmac_sha256(clave, datos) | Calcula HMAC con SHA-256 |
hash_archivo_sha256(ruta) | Calcula SHA-256 de un archivo completo |
hash_archivo_blake3(ruta) | Calcula BLAKE3 de un archivo completo |
Casos de uso
- Cifrado de datos: Proteger información sensible en reposo o en tránsito
- Autenticación: HMAC para verificar integridad de mensajes
- Verificación de integridad: Checksums SHA-256 de archivos descargados
- Derivación de claves: Convertir contraseñas en claves criptográficas
- Post-cuántico: Preparación para la era de computación cuántica con ML-KEM
🔐 Seguridad: Forja implementa criptografía manualmente en Rust puro. Esto permite auditar el código y elimina dependencias externas. Siempre usá
comparar_constante para comparar secrets.