Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
rust_citadel — Biblioteca de cifrado híbrido postcuántico que combina X25519 + ML-KEM-768 con AES-256-GCM | Kitploit
Herramientas/GitHubGitHub/mrcord77/rust_citadel
Autenticación y AutorizaciónHerramientas de Cifrado/DescifradoCriptografíaSeguridad en la NubeSeguridad de APIs
GitHubmrcord77/rust_citadel

rust_citadel

Biblioteca de cifrado híbrido postcuántico que combina X25519 + ML-KEM-768 con AES-256-GCM

Ver Repositorio
24hace 4 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Citadel

Servidor de cifrado híbrido post-cuántico y gestión de claves.

Citadel combina X25519 + ML-KEM-768 para encapsulación de claves y AES-256-GCM para cifrado de datos, siguiendo el enfoque híbrido del NIST para la transición post-cuántica. Las aplicaciones cifran y descifran datos a través de una API REST. Citadel gestiona las claves — generación, rotación, revocación, control de acceso y registro de auditoría.

Estado: Implementación funcional. Sin auditoría. Sin despliegues en producción. Consulte Seguridad a continuación.


Qué Hace

root@kitploit:~
Your Application              Citadel                         Database
       |                         |                               |
       |-- POST /encrypt ------->|                               |
       |                         |-- hybrid KEM (X25519+ML-KEM)  |
       |                         |-- derive AES-256 key (HKDF)   |
       |                         |-- encrypt with AES-256-GCM    |
       |<-- encrypted blob ------|                               |
       |                                                         |
       |-- store blob ------------------------------------------>|

Su aplicación nunca toca material clave en bruto. El blob cifrado es autocontenido — incluye la clave envuelta, identificadores de algoritmo y texto cifrado. Almacénelo en cualquier base de datos. Descífrelo enviándolo de vuelta a Citadel con el mismo AAD y contexto.

Arquitectura

root@kitploit:~
citadel-envelope    Hybrid encryption core (X25519 + ML-KEM-768 + AES-256-GCM)
citadel-keystore    Key lifecycle management, 4-level hierarchy, threat-adaptive policies
citadel-api         HTTP server, scoped API key auth, rate limiting, real-time dashboard

Inicio rápido

Docker (recomendado)

root@kitploit:~
# Clone
git clone https://github.com/mrcord77/rust_citadel.git
cd rust_citadel

# Set your admin API key
echo -n "your-secret-key" | sha256sum | cut -d' ' -f1
# Copy the hash

# Start
CITADEL_API_KEY_HASH=<paste-hash> docker compose up -d

# Verify
curl http://localhost:3000/health
# {"status":"ok","version":"0.2.0"}

Panel: http://localhost:3000

Desde el código fuente

Requiere Rust 1.75+.

root@kitploit:~
cargo build --release -p citadel-api
CITADEL_API_KEY="your-secret-key" CITADEL_SEED_DEMO=true ./target/release/citadel-api

Uso

Python

root@kitploit:~
import requests

api = "http://localhost:3000"
headers = {"Authorization": "Bearer your-secret-key"}

# Encrypt
r = requests.post(f"{api}/api/keys/{dek_id}/encrypt", headers=headers, json={
    "plaintext": "sensitive data",
    "aad": "record-001",        # binds ciphertext to this record
    "context": "patient-records" # domain separation
})
blob = r.json()

# Decrypt
r = requests.post(f"{api}/api/decrypt", headers=headers, json={
    "blob": blob,
    "aad": "record-001",
    "context": "patient-records"
})
plaintext = r.json()["plaintext"]

Consulte citadel_example.py para un ejemplo completo funcional con vinculación AAD, rotación de claves y comportamiento de aplicación consciente de amenazas.

curl

root@kitploit:~
# Status
curl http://localhost:3000/api/status -H "Authorization: Bearer $KEY"

# List keys
curl http://localhost:3000/api/keys -H "Authorization: Bearer $KEY"

# Encrypt
curl -X POST http://localhost:3000/api/keys/$DEK_ID/encrypt \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{"plaintext":"hello","aad":"test","context":"demo"}'

Endpoints de la API

Jerarquía de Claves

root@kitploit:~
Root Key
  └── Domain Key (per environment / business unit)
        └── KEK — Key Encrypting Key (wraps DEKs)
              └── DEK — Data Encrypting Key (encrypts application data)

Sigue NIST SP 800-57. Cada nivel contiene el radio de explosión de un compromiso — una DEK filtrada no expone otras DEK porque la KEK es independiente.

Ámbitos de Clave de API

ÁmbitoPermisos
readVer claves, estado, métricas, nivel de amenaza
encryptCifrar y descifrar datos

admin implica todos los demás ámbitos. Principio de mínimo privilegio: asigne a los paneles de monitoreo read, servicios de aplicación read + encrypt, herramientas de administración admin.

Sistema de Amenazas Adaptativo

Citadel monitorea eventos de seguridad y ajusta automáticamente las políticas de clave:

Eventos que elevan el nivel de amenaza: autenticación fallida, fallos de descifrado, patrones de acceso rápidos, escalada manual. La puntuación decae con el tiempo.

Criptografía

Construcción híbrida: ambos secretos compartidos se concatenan y se alimentan a través de HKDF. La seguridad se mantiene si cualquiera de X25519 o ML-KEM-768 permanece seguro.

Formato de Cable

root@kitploit:~
version[1] || suite_kem[1] || suite_aead[1] || flags[1] || kem_ct_len[2] ||
x25519_ephemeral_pk[32] || mlkem768_ct[1088] || nonce[12] || aead_ct[variable]

Autodescriptivo, versionado, sin negociación (evita ataques de degradación). Consulte SPEC.md para la especificación completa.

Propiedades de Seguridad

  • Comparación en tiempo constante — Verificación de clave API mediante el crate subtle previene ataques de temporización
  • Zeroización — Todos los secretos compartidos y claves AES envueltos en Zeroizing<T>, puestos a cero al soltarlos
  • Errores uniformes — Los fallos de descifrado devuelven mensajes de error idénticos (sin oráculo de descifrado)
  • Registro de auditoría encadenado por integridad — Cadena hash SHA-256 detecta manipulación del registro
  • Limitación de velocidad — Cubo de tokens por IP con escalada de amenazas en caso de violaciones

Seguridad

Citadel es software no auditado.

La implementación usa primitivas estandarizadas por NIST a través de crates de Rust establecidos (ml-kem, x25519-dalek, aes-gcm, hkdf). No implementa ningún algoritmo criptográfico. El valor está en la composición correcta, no en matemáticas novedosas.

Lo que se ha hecho:

  • Suite de pruebas exhaustiva incluyendo pruebas de respuesta conocida
  • Pruebas fuzz del analizador de formato de cable y la ruta completa de descifrado
  • Análisis de temporización de operaciones de cifrado/descifrado
  • Manejo uniforme de errores para prevenir oráculos de descifrado

Lo que NO se ha hecho:

  • Auditoría de seguridad independiente
  • Verificación formal
  • Validación FIPS
  • Despliegue en producción

No usar para datos sensibles sin revisión independiente. Consulte SECURITY.md para informar vulnerabilidades.

Cumplimiento

Mapeado contra 34 controles NIST SP 800-57: 26 satisfechos, 7 parciales, 1 brecha. Consulte COMPLIANCE_MATRIX.md para el mapeo completo.

Marcos relevantes: NIST SP 800-57 (gestión de claves), CNSA 2.0 (cronograma PQC), HIPAA (cifrado en reposo), SOC 2 (controles de acceso y auditoría).

Estructura del Proyecto

root@kitploit:~
rust_citadel/
├── citadel-envelope/        # Core hybrid encryption library
│   ├── src/
│   │   ├── envelope.rs      # Encrypt/decrypt operations
│   │   ├── kem.rs           # X25519 + ML-KEM-768 hybrid KEM
│   │   ├── kdf.rs           # HKDF-SHA256 key derivation
│   │   ├── wire.rs          # Wire format encode/decode
│   │   ├── aead.rs          # AES-256-GCM wrapper
│   │   ├── aad.rs           # Additional authenticated data
│   │   ├── error.rs         # Uniform error types
│   │   └── sdk.rs           # High-level API
│   ├── tests/               # KAT + roundtrip tests
│   └── fuzz/                # Fuzz targets
├── citadel-keystore/        # Key lifecycle management
│   └── src/
│       ├── keystore.rs      # Key CRUD + state machine
│       ├── policy.rs        # Crypto-period policies
│       ├── threat.rs        # Adaptive threat intelligence
│       ├── storage.rs       # File-based key storage
│       ├── audit.rs         # Integrity-chained audit log
│       └── types.rs         # Key types and states
├── citadel-api/             # HTTP server
│   └── src/
│       ├── main.rs          # API routes, auth, rate limiting
│       └── dashboard.html   # Real-time security dashboard
├── citadel_example.py       # Python integration example
├── Backup-Citadel.ps1       # Backup/restore tooling
├── docker-compose.yml       # Development deployment
├── docker-compose-production.yml  # Production with TLS
├── SPEC.md                  # Wire format specification
├── THREAT_MODEL.md          # Security goals and attacker model
├── COMPLIANCE_MATRIX.md     # NIST 800-57 control mapping
└── CITADEL_OVERVIEW.md      # Commercial overview

Documentación

Licencia

Este proyecto tiene doble licencia:

  • GNU Affero General Public License v3 (AGPL) — para uso de código abierto
  • Licencia Comercial — para uso propietario o comercial

Si está utilizando este software en un entorno comercial o no desea cumplir con los términos de AGPL, debe obtener una licencia comercial.

Consulte COMMERCIAL_LICENSE.md para términos comerciales.

El texto completo de AGPL se proporciona en AGPL-3.0.txt y COPYING.

Contacto: [email protected]

Autor

Andre Cordero — [email protected]

Descargar herramienta
EndpointMétodoÁmbitoDescripción
/healthGET—Comprobación de salud
/api/statusGETreadNivel de amenaza, conteos de claves
/api/metricsGETreadMétricas de seguridad
/api/keysGETreadListar todas las claves
/api/keysPOSTmanageGenerar nueva clave
/api/keys/:idGETreadObtener detalles de la clave
/api/keys/:id/activatePOSTmanageActivar una clave pendiente
/api/keys/:id/rotatePOSTmanageRotar clave (nueva versión)
/api/keys/:id/revokePOSTmanageRevocar clave permanentemente
/api/keys/:id/destroyPOSTmanageDestruir material de clave
/api/keys/:id/encryptPOSTencryptCifrar datos
/api/decryptPOSTencryptDescifrar datos
/api/threatGETreadDetalles de inteligencia de amenazas
/api/policiesGETreadPolíticas de clave activas
/api/auth/whoamiGETreadInformación de la clave API actual
/api/auth/keysGETadminListar claves API
/api/auth/keysPOSTadminCrear clave API
/api/auth/keys/:idDELETEadminRevocar clave API
manageCrear, rotar, revocar, destruir claves
adminTodo lo anterior + gestionar claves de API
NivelDesencadenanteRespuesta
LOWOperaciones normalesPeríodos criptográficos estándar
GUARDEDAnomalías menoresRotación ligeramente más ajustada
ELEVATEDPatrones sospechososHorarios de rotación comprimidos
HIGHIndicadores de amenaza activosRotación forzada, límites de uso reducidos
CRITICALBajo ataqueRestricciones máximas
ComponenteAlgoritmoEstándar
Encapsulación de clave (clásica)X25519 ECDHRFC 7748
Encapsulación de clave (post-cuántica)ML-KEM-768FIPS 203
Cifrado de datosAES-256-GCMNIST SP 800-38D
Derivación de claveHKDF-SHA256NIST SP 800-56C
DocumentoAudiencia
SPEC.mdEspecificación de formato de cable
THREAT_MODEL.mdObjetivos y supuestos de seguridad
COMPLIANCE_MATRIX.mdMapeo de cumplimiento NIST 800-57
CITADEL_OVERVIEW.mdPosicionamiento comercial
SECURITY.mdReporte de vulnerabilidades
API_FREEZE.mdGarantías de estabilidad de la API
DEPLOYMENT.mdGuía de despliegue en producción
QUICKSTART.mdPrimeros pasos