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
op4 — Mensajero cifrado basado en terminal con criptografía post-cuántica, protocolo Double Ratchet y anonimato de Tor. Incluye frase de paso de coacción, autenticación negable y endurecimiento a nivel de sistema operativo mediante seccomp-bpf y mlockall. | Kitploit
Herramientas/GitHubGitHub/opfour/op4
Autenticación y AutorizaciónHerramientas DefensivasHerramientas de Cifrado/DescifradoCriptografíaPrivacidadAutenticación
GitHubopfour/op4

op4

Mensajero cifrado basado en terminal con criptografía post-cuántica, protocolo Double Ratchet y anonimato de Tor. Incluye frase de paso de coacción, autenticación negable y endurecimiento a nivel de sistema operativo mediante seccomp-bpf y mlockall.

Ver Repositorio
63hace 2 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


op4 — Mensajero seguro para terminal

Op4 es una aplicación de mensajería cifrada basada en terminal, escrita en Rust. Proporciona mensajería privada cifrada de extremo a extremo con criptografía post-cuántica, enrutada íntegramente a través de la red Tor, de modo que ni el contenido de tus mensajes ni tu dirección IP quedan expuestos a nadie — ni siquiera a la persona con la que hablas.






Tabla de contenidos

  1. Qué hace op4
  2. Instalación
  3. Conectarse con otro usuario
  4. Modelo de seguridad
  5. Descripción general de la arquitectura
  6. Estructura del proyecto
  7. Estado actual

Qué hace op4

op4 permite que dos personas intercambien mensajes privados sin que ninguna de las dos revele su dirección IP ni su identidad real. Cada mensaje está:

  • Cifrado de extremo a extremo mediante un protocolo Double Ratchet — el mismo diseño fundamental que usa Signal.
  • Reforzado post-cuánticamente — la capa de intercambio de claves combina X25519 clásico con ML-KEM-768 (KEM basado en retículas estandarizado por el NIST), de modo que un futuro ordenador cuántico no pueda descifrar retroactivamente el tráfico registrado.
  • Anonimizado — todo el tráfico viaja a través de servicios ocultos de Tor (direcciones .onion). Tu dirección IP nunca queda expuesta a tu contacto ni a ningún observador de la red.
  • Almacenado localmente — no hay servidor. Tus mensajes y contactos viven en un archivo de bóveda cifrada en tu propia máquina, y en ningún otro lugar.

op4 se ejecuta íntegramente en la terminal. No tiene interfaz gráfica, ni componente de navegador, ni cuenta en la nube. El único proceso externo con el que se comunica es el demonio Tor que se ejecuta en tu propia máquina.


Instalación

Todas las opciones de descarga — AppImage, tarball de código fuente, clonar y compilar, e instalador automatizado — están documentadas en la Guía de descargas e instalación. La última versión está disponible en la página de Releases.

Debian / Ubuntu (automatizado)

En Debian y Ubuntu, install/setup.sh se encarga de todo con un solo comando: cadena de herramientas de Rust, dependencias de compilación, Tor, configuración del puerto de control, compilación del binario, usuario del sistema, directorio de datos y perfil de AppArmor.

root@kitploit:~
git clone https://github.com/Opfour/op4.git
cd op4
sudo bash install/setup.sh

Después de que el script termine, debes cerrar la sesión y volver a iniciarla antes de ejecutar op4. El instalador añade tu usuario al grupo debian-tor para que pueda leer el archivo de cookie de Tor. Linux no aplica los cambios de grupo a sesiones ya abiertas — se requiere un nuevo inicio de sesión.

Si omites este paso, op4 fallará al arrancar con: Permission denied reading /run/tor/control.authcookie

A continuación, verifica que el hash de código fuente mostrado por el script coincide con el hash de la versión publicada para tu versión antes de confiar en el binario.

Verificación del hash de la versión

Cuando op4 arranca, muestra un hash de código fuente que cubre todos los archivos fuente de Rust, Cargo.toml, Cargo.lock y build.rs. Compáralo con el valor siguiente para la versión que instalaste.

También puedes comprobarlo sin iniciar la aplicación completa:

root@kitploit:~
op4 --print-hash

Si el hash no coincide, no uses el binario — o fue compilado a partir de un commit diferente o ha sido manipulado.

Fedora / Arch / otras distribuciones (manual)

Instala primero las dependencias y luego ejecuta el script:

Cadena de herramientas de Rust (fijada en 1.89.0 mediante rust-toolchain.toml):

root@kitploit:~
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"

Tor y dependencias de compilación:

root@kitploit:~
# Fedora
sudo dnf install tor gcc pkg-config openssl-devel

# Arch
sudo pacman -S tor base-devel pkg-config openssl

Configurar el puerto de control de Tor — añade a /etc/tor/torrc:

root@kitploit:~
ControlPort 9051
CookieAuthentication 1
root@kitploit:~
sudo systemctl restart tor

Añade tu usuario al grupo de Tor:

root@kitploit:~
sudo usermod -aG tor $USER        # Fedora / Arch

Debes cerrar la sesión y volver a iniciarla después de este paso. Los cambios de pertenencia a grupos no se aplican a sesiones activas. Hasta que lo hagas, op4 fallará con Permission denied reading /run/tor/control.authcookie.

Para aplicar el cambio sin cerrar sesión por completo, ejecuta:

root@kitploit:~
newgrp tor

Compilar e instalar:

root@kitploit:~
git clone https://github.com/Opfour/op4.git
cd op4
cargo build --release
sudo bash install/setup.sh

Ejecutar

root@kitploit:~
op4
# o, sin instalación en el sistema:
./target/release/op4

En el primer arranque, op4 te guiará para establecer una frase de contraseña normal y una frase de contraseña de coacción; después generará tus claves de identidad. Tu bóveda se almacena en ~/.local/share/op4/vault.op4.

Plataformas compatibles

Kernel mínimo: 4.15 (se recomienda 5.4+). Arquitectura: x86-64 (aarch64 debería funcionar pero no está probada).


Conectarse con otro usuario

Cada persona necesita op4 instalado, Tor en ejecución y su bóveda desbloqueada. El intercambio es asimétrico: una persona envía su código de contacto primero, la otra lo añade y luego envía su primer mensaje, que llega como una solicitud pendiente que la primera persona acepta.

Paso 1 — Primer arranque

En el primer arranque, op4 solicita una frase de contraseña normal y una frase de contraseña de coacción, y luego genera tus claves de identidad. Esto solo ocurre una vez. Tu bóveda se almacena en ~/.local/share/op4/vault.op4.

root@kitploit:~
$ op4

Paso 2 — Obtén tu código de contacto

Tu código de contacto contiene tu paquete completo de claves públicas y tu dirección .onion. La otra persona necesita esto para llegar hasta ti.

  1. Ve a la pestaña Contactos (pulsa 2 o →)
  2. Pulsa e para exportar tu código de contacto
  3. Tu código aparece en pantalla — es una cadena Base58 larga que empieza con op4:
  4. Cópialo y envíalo a la otra persona fuera de banda (Signal, correo electrónico, en persona, etc.)

Tu código de contacto no es secreto. Es seguro compartirlo públicamente. Contiene solo tus claves públicas y tu dirección onion — ningún material privado.

Paso 3 — Añade a la otra persona como contacto

Una vez que tengas su código de contacto:

  1. En la pestaña Contactos, pulsa a para añadir un contacto
  2. Pega su código de contacto op4: y pulsa Enter
  3. Ponle un nombre y pulsa Enter

Paso 4 — Envía tu primer mensaje

  1. Selecciona el contacto de tu lista de contactos (usa ↑/↓ y luego Enter)
  2. Cambia a la pestaña Mensajes (pulsa 3 o →)
  3. Escribe tu mensaje y pulsa Enter

Este primer mensaje inicia el protocolo de enlace cifrado y se entrega a su dirección .onion a través de Tor. Lo verán como una solicitud de contacto pendiente.

Paso 5 — Acepta una solicitud entrante

Cuando alguien te envía un primer mensaje, aparece una insignia en la pestaña Contactos que indica cuántas solicitudes están esperando.

  1. Ve a la pestaña Contactos (pulsa 2)
  2. Pulsa p para revisar las solicitudes pendientes
  3. Verás la huella digital del remitente y su primer mensaje
  4. Escribe un nombre para este contacto y pulsa Enter para aceptar (pulsa Esc para rechazar y descartar)

Una vez aceptado, el Double Ratchet se inicializa y la conversación está disponible de inmediato en la pestaña Mensajes.

Paso 6 — Verifica la huella digital (recomendado)

Antes de confiar en un contacto, confirma que su huella digital coincide con la que esa persona ve en su propia pantalla. Esto evita un ataque de intermediario (man-in-the-middle) durante el intercambio inicial de contactos.

  1. En la pestaña Contactos, selecciona el contacto
  2. El panel de huella digital de la derecha muestra una cadena hexadecimal de 16 grupos, p. ej. A3F2:91BC:…
  3. Pide a la otra persona que lea su huella digital para tu entrada — debe coincidir exactamente
  4. La verificación puede hacerse mediante una llamada de voz, en persona o por cualquier otro canal en el que puedas confirmar su identidad

Referencia de navegación

Rotación de claves

Si crees que tus claves de identidad pueden estar comprometidas:

  1. Ve a la pestaña Ajustes (pulsa 4 o navega a la derecha)
  2. Pulsa r para rotar las claves
  3. op4 genera un nuevo par de claves, firma un certificado de revocación con tu clave anterior y lo difunde a todos tus contactos a través de Tor
  4. Tu código de contacto cambia — comparte el nuevo con tus contactos

Modelo de seguridad

Primitivas criptográficas (todas del ecosistema RustCrypto)

Double Ratchet

op4 utiliza un protocolo Double Ratchet (similar al Protocolo Signal) para el secreto directo (forward secrecy). Esto significa:

  • Cada mensaje se cifra con una clave única derivada de una cadena de ratchet.
  • Comprometer una clave de mensaje no expone ningún otro mensaje.
  • Si tu dispositivo es incautado, los mensajes pasados que ya han sido eliminados no pueden descifrarse ni siquiera si el atacante llega a conocer la frase de contraseña de tu bóveda.

Intercambio de claves híbrido post-cuántico

El paso de KEM combina X25519 y ML-KEM-768 de la siguiente manera:

root@kitploit:~
shared_secret = HKDF(X25519_ss || MLKEM_ss)

Un atacante debe romper ambos algoritmos para comprometer el intercambio de claves. Esto protege contra un adversario cuántico (ML-KEM-768) mientras sigue siendo seguro contra ataques clásicos si ML-KEM-768 tiene un fallo desconocido (respaldo de X25519).

Autenticación negable

Los mensajes se autentican con HMAC-SHA256 usando una clave derivada del estado compartido del ratchet. Dado que ambas partes poseen la misma clave HMAC, cualquiera de las dos podría haber producido un MAC dado. Esta es la misma propiedad de negación usada por OTR y Signal: los mensajes no pueden atribuirse criptográficamente a un remitente específico en un procedimiento judicial.

Bóveda y frase de contraseña de coacción

El archivo de bóveda en ~/.local/share/op4/vault.op4 almacena todos los contactos, conversaciones y claves de identidad. Está protegido con dos claves independientes derivadas de Argon2id:

  • Frase de contraseña normal — desbloquea tus contactos y mensajes reales.
  • Frase de contraseña de coacción — desbloquea una bandeja de entrada señuelo visualmente idéntica pero vacía. Úsala si te obligan a desbloquear la aplicación. Desde fuera, las dos frases de contraseña son indistinguibles.

Anonimato de red

op4 crea un servicio oculto de Tor v3 para tu bandeja de entrada. Tu dirección .onion se deriva de forma determinista de tu clave de identidad (mediante HKDF), por lo que es estable entre reinicios sin necesidad de almacenar una clave separada. Los mensajes salientes se envían a través del proxy SOCKS5 de Tor. Tu dirección IP real nunca aparece en ningún paquete de red relacionado con op4.

El tráfico de cobertura (mensajes ficticios distribuidos según Poisson enviados a uno mismo, intervalo medio de 30 segundos) impide que un observador de la red pueda saber si estás enviando mensajes activamente a alguien mediante la observación del volumen de tráfico.

Endurecimiento a nivel de sistema operativo

  • mlockall — impide que las claves de la bóveda y el texto plano se escriban en el espacio de intercambio (swap).
  • RLIMIT_CORE = 0 — desactiva los volcados de núcleo (core dumps) que podrían exponer memoria.
  • PR_SET_DUMPABLE = 0 — impide que otros procesos adjunten un depurador.
  • seccomp-bpf — instala una lista de permisos de llamadas al sistema. Cualquier llamada al sistema que no esté en la lista hace que el proceso sea terminado inmediatamente.
  • Perfil de AppArmor (apparmor/op4.profile) — restringe el acceso al sistema de archivos únicamente al directorio de la bóveda, los dispositivos de terminal y Tor.

Descripción general de la arquitectura

root@kitploit:~
┌─────────────────────────────────────────────────────────────┐
│                        proceso op4                          │
│                                                             │
│  ┌──────────┐   ┌──────────────────┐   ┌────────────────┐  │
│  │   TUI    │   │  Double Ratchet  │   │ Tor Transport  │  │
│  │ (ratatui)│──▶│  + Hybrid PQ     │──▶│  nym_client.rs │  │
│  │          │   │  Crypto          │   │                │  │
│  └──────────┘   └──────────────────┘   └───────┬────────┘  │
│                                                │           │
│  ┌──────────────────────────────┐              │           │
│  │  Bóveda cifrada              │    SOCKS5 / puerto de    │
│  │  ~/.local/share/op4/vault.op4│    control                │
│  └──────────────────────────────┘              │           │
└────────────────────────────────────────────────┼───────────┘
                                                 │
                                    ┌────────────▼────────────┐
                                    │     Demonio Tor         │
                                    │  127.0.0.1:9050 (SOCKS) │
                                    │  127.0.0.1:9051 (ctrl)  │
                                    └────────────┬────────────┘
                                                 │
                                         Red Tor
                                                 │
                                    ┌────────────▼────────────┐
                                    │  Dirección .onion del   │
                                    │  interlocutor           │
                                    │  (su servicio oculto)   │
                                    └─────────────────────────┘

Estructura del proyecto

root@kitploit:~
op4/
├── src/
│   ├── main.rs                  Punto de entrada, secuencia de arranque
│   ├── error.rs                 Tipos de error unificados
│   ├── crypto/
│   │   ├── keys.rs              Pares de claves KEM híbrido + firmas
│   │   ├── primitives.rs        AEAD, HKDF, HMAC, Argon2id
│   │   ├── ratchet.rs           Implementación de Double Ratchet
│   │   ├── hmac_auth.rs         Etiquetas de autenticación negable
│   │   └── handshake.rs         Acuerdo de claves inicial (estilo X3DH)
│   ├── network/
│   │   ├── nym_client.rs        Transporte de servicio oculto de Tor
│   │   └── message.rs           Formato de mensaje por cable + relleno
│   ├── storage/
│   │   └── vault.rs             Bóveda cifrada (Argon2id + AEAD)
│   ├── identity/
│   │   ├── profile.rs           Códigos de contacto, contactos almacenados
│   │   └── revocation.rs        Registros de revocación de claves
│   ├── hardening/
│   │   ├── memory.rs            mlockall, RLIMIT_CORE, dumpable
│   │   └── seccomp.rs           Filtro de llamadas al sistema seccomp-bpf
│   └── ui/
│       ├── app.rs               Bucle de eventos de la TUI y máquina de estados
│       ├── contacts.rs          Renderizado de la pestaña Contactos
│       ├── conversation.rs      Renderizado de la pestaña Mensajes
│       ├── settings.rs          Renderizado de la pestaña Ajustes
│       ├── duress.rs            Renderizado de la bandeja de coacción
│       ├── input.rs             Saneamiento de entrada (eliminación de CSI/OSC)
│       └── passphrase.rs        Solicitudes seguras de frase de contraseña
├── apparmor/
│   └── op4.profile              Perfil MAC de AppArmor
├── install/
│   └── setup.sh                 Script de instalación del sistema
├── build.rs                     Incorpora el hash del código fuente en tiempo de compilación
├── deny.toml                    Reglas de licencias y avisos de cargo-deny
├── rust-toolchain.toml          Fija Rust 1.89.0
└── docs/                        Esta documentación

Estado actual

Versión: 0.2.0-dev (pre-lanzamiento)

op4 está en desarrollo activo. Las siguientes capas están completas y probadas:

  • Bóveda (crear, desbloquear, guardar, modo coacción)
  • Todas las primitivas criptográficas (12/12 pruebas unitarias superadas)
  • Transporte de servicio oculto de Tor (conectar, enviar, recibir, tráfico de cobertura)
  • Interfaz de terminal (navegación, gestión de contactos, vista de conversación)
  • Endurecimiento del sistema operativo (memoria, seccomp, AppArmor)

Todas las capas están ahora conectadas de extremo a extremo:

  • Los pares de claves de identidad (X25519+ML-KEM-768, Ed25519+ML-DSA-65) se generan en el primer arranque y se almacenan cifrados en la bóveda.
  • La exportación del código de contacto produce un PublicKeyBundle real codificado en Base58 (tu conjunto completo de claves públicas + dirección onion).
  • Enviar un mensaje realiza un protocolo de enlace completo estilo X3DH en el primer mensaje a un contacto, y luego cifrado Double Ratchet en los mensajes subsiguientes, transmitidos a través de Tor.
  • Los mensajes entrantes se consultan desde el transporte Tor en el bucle de eventos de la TUI y se muestran en la vista de conversación (patrón de remitente sellado: la capa de enrutamiento nunca revela quién envió el mensaje).

Todas las limitaciones conocidas se han resuelto. La aplicación está ahora en estado de funcionalidad completa para 0.2.0-dev:

  • Autenticación negable HMAC está completamente conectada. Cada mensaje de datos saliente lleva una etiqueta HMAC-SHA256 calculada a partir de la clave de ratchet por mensaje sobre (conversation_id || message_counter || ciphertext). Los mensajes entrantes se verifican antes de ser aceptados; las etiquetas rellenas con ceros de pares más antiguos se toleran por compatibilidad con versiones anteriores.

  • El historial de mensajes persiste entre reinicios. El registro completo de la conversación se cifra con una clave derivada de HKDF por conversación y se almacena en el campo message_log_ct de la bóveda. Los mensajes se cargan desde la bóveda cuando se abre una conversación y se vuelven a escribir después de cada envío o recepción.

  • Las solicitudes de contacto entrantes de partes desconocidas se ponen en cola en lugar de descartarse. La pestaña Contactos muestra una insignia cuando hay solicitudes en espera. Pulsa [p] para revisarlas: verás la huella digital del remitente y su primer mensaje, escribe un nombre y pulsa Enter para aceptar (o Esc para rechazar). Al aceptar, el contacto se añade, el Double Ratchet se inicializa y el mensaje inicial se guarda en la bóveda.

  • La bóveda de coacción se conserva entre guardados. El formato de archivo de la bóveda (v2) almacena las longitudes exactas del texto cifrado en la cabecera, de modo que el descifrado AEAD opera sobre los bytes reales en lugar de secciones rellenas con ceros. La sección cifrada de coacción se almacena textualmente en cada llamada a save(), lo que mantiene la frase de contraseña de coacción válida indefinidamente.

  • Clave de arranque dedicada para Double Ratchet. Un par de claves X25519 separado (identity_ratchet_secret) se genera en el primer arranque y se incluye en el código de contacto como ratchet_pub. El ratchet de Alice se inicializa con el de Bob en lugar de con su clave de identidad KEM, separando los roles de las claves.

Descargar herramienta
VersiónHash de código fuente
0.3.080820cb41a63575d2c139dadd425d13d1e87e62a9d60200ae7b894ae2e9ad8ed
0.3.148115efb12747fa78b627ddbf7a56c46169f59e777d7d7508941bf89e4fe7521
0.2.0-dev35740577f6c4a4f19c5a08fe85b1f78a10347f2ba9dd7642d126552266bfa5a5
0.1.0e1a94761c7d3fa589ba892b47d5295aa417f95aee126809d51a7e7fb7e78982c
DistribuciónEstado
Ubuntu 22.04 / 24.04Compatible
Debian 12Compatible
Fedora 39+Compatible
Arch Linux (actual)Compatible
Tails OSCompatible (guía de instalación)
macOS / Windows / WSL1No compatible
TeclaAcción
1 / ← →Cambiar de pestaña (Contactos / Mensajes / Ajustes)
↑ ↓Mover la selección
EnterAbrir conversación / confirmar
EscCancelar / volver atrás
eExportar tu código de contacto (pestaña Contactos)
aAñadir un contacto (pestaña Contactos)
pRevisar solicitudes pendientes (pestaña Contactos)
dEliminar el contacto seleccionado (pestaña Contactos)
rRotar tus claves (pestaña Ajustes)
qSalir
PropósitoAlgoritmo
Derivación de la clave de la bóvedaArgon2id (m=64 MiB, t=3, p=1)
Cifrado de la bóvedaChaCha20-Poly1305 (clave de 256 bits, nonce de 96 bits)
Cifrado de mensajesChaCha20-Poly1305 (clave por mensaje derivada del ratchet)
Derivación de claves (ratchet)HKDF-SHA256
Autenticación negableHMAC-SHA256
Intercambio de claves clásicoX25519
Intercambio de claves post-cuánticoML-KEM-768 (FIPS 203)
Firmas clásicasEd25519
Firmas post-cuánticasML-DSA-65 (FIPS 204)
Anonimato del transporteServicios ocultos de Tor v3 (.onion)
ratchet_pub
  • Pestaña Ajustes totalmente funcional. La dirección SOCKS5 de Tor y el umbral de auto-eliminación pueden editarse en línea. La rotación de claves (genera un nuevo par de claves, difunde un certificado de revocación firmado a todos los contactos y actualiza el código de exportación) y la revocación por retirada de claves están ambas conectadas y operativas.

  • Revocación de claves conectada de extremo a extremo. Las estructuras RevocationCertificate se firman con el par de claves híbrido Ed25519+ML-DSA-65 y se envían a todos los contactos como mensajes WireMessageType::Revocation a través de Tor.