Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
op4 — Messenger crittografato da terminale con crittografia post-quantistica, protocollo Double Ratchet e anonimato Tor. Include passphrase di emergenza, autenticazione negabile e hardening a livello di sistema operativo tramite seccomp-bpf e mlockall. | Kitploit
Strumenti/GitHubGitHub/opfour/op4
Autenticazione e AutorizzazioneStrumenti DifensiviStrumenti di Crittografia/DecrittografiaCrittografiaPrivacyAutenticazione
GitHubopfour/op4

op4

Messenger crittografato da terminale con crittografia post-quantistica, protocollo Double Ratchet e anonimato Tor. Include passphrase di emergenza, autenticazione negabile e hardening a livello di sistema operativo tramite seccomp-bpf e mlockall.

Vedi Repository
61 mese faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi


op4 — Messenger di terminale sicuro

Op4 è un'applicazione di messaggistica cifrata basata su terminale scritta in Rust. Fornisce messaggi privati cifrati end-to-end con crittografia post-quantistica, instradati interamente attraverso la rete Tor, così che né il contenuto dei tuoi messaggi né il tuo indirizzo IP siano esposti a nessuno — nemmeno alla persona con cui stai parlando.






Indice

  1. Cosa fa op4
  2. Installazione
  3. Connessione a un altro utente
  4. Modello di sicurezza
  5. Panoramica dell'architettura
  6. Struttura del progetto
  7. Stato attuale

Cosa fa op4

op4 permette a due persone di scambiarsi messaggi privati senza che nessuna delle due parti riveli il proprio indirizzo IP o la propria identità reale. Ogni messaggio è:

  • Cifrato end-to-end utilizzando un protocollo Double Ratchet — lo stesso design fondamentale usato da Signal.
  • Rafforzato post-quantisticamente — il livello di scambio di chiavi combina la classica X25519 con ML-KEM-768 (KEM a reticolo standardizzato NIST), così un futuro computer quantistico non può decrittare retroattivamente il traffico registrato.
  • Anonimizzato — tutto il traffico viaggia attraverso servizi nascosti Tor (indirizzi .onion). Il tuo indirizzo IP non viene mai esposto al tuo contatto né a nessun osservatore di rete.
  • Archiviato localmente — non c'è alcun server. I tuoi messaggi e i tuoi contatti risiedono in un file vault cifrato sulla tua macchina, e da nessun'altra parte.

op4 funziona interamente nel terminale. Non ha GUI, nessun componente browser e nessun account cloud. L'unico processo esterno che contatta è il demone Tor in esecuzione sulla tua macchina.


Installazione

Tutte le opzioni di download — AppImage, tarball dei sorgenti, clone & build e installatore automatico — sono documentate nella guida Download & Install. L'ultima release è disponibile nella pagina delle Release.

Debian / Ubuntu (automatizzato)

Su Debian e Ubuntu, install/setup.sh gestisce tutto con un unico comando: toolchain Rust, dipendenze di build, Tor, configurazione della porta di controllo, compilazione del binario, utente di sistema, directory dati e profilo AppArmor.

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

Dopo che lo script termina, devi disconnetterti e riconnetterti prima di eseguire op4. L'installatore aggiunge il tuo utente al gruppo debian-tor così che possa leggere il file cookie di Tor. Linux non applica le modifiche ai gruppi alle sessioni già aperte — è richiesto un nuovo login.

Se salti questo passaggio, op4 fallirà all'avvio con: Permission denied reading /run/tor/control.authcookie

Poi verifica che l'hash dei sorgenti stampato dallo script corrisponda all'hash della release pubblicata per la tua versione prima di fidarti del binario.

Verifica dell'hash della release

Quando op4 si avvia stampa un hash dei sorgenti che copre tutti i file sorgente Rust, Cargo.toml, Cargo.lock e build.rs. Confrontalo con il valore sotto per la versione che hai installato.

Puoi verificarlo anche senza avviare l'app completa:

root@kitploit:~
op4 --print-hash

Se l'hash non corrisponde, non usare il binario — è stato compilato da un commit diverso o è stato manomesso.

Fedora / Arch / altre distribuzioni (manuale)

Installa prima le dipendenze, poi esegui lo script:

Toolchain Rust (fissata alla 1.89.0 tramite rust-toolchain.toml):

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

Tor e dipendenze di build:

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

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

Configura la porta di controllo di Tor — aggiungi a /etc/tor/torrc:

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

Aggiungi il tuo utente al gruppo Tor:

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

Devi disconnetterti e riconnetterti dopo questo passaggio. Le modifiche all'appartenenza ai gruppi non vengono applicate alle sessioni attive. Finché non lo fai, op4 fallirà con Permission denied reading /run/tor/control.authcookie.

Per applicare la modifica senza un logout completo, esegui:

root@kitploit:~
newgrp tor

Compila e installa:

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

Esecuzione

root@kitploit:~
op4
# oppure, senza installazione di sistema:
./target/release/op4

Al primo avvio op4 ti guiderà nella creazione di una passphrase normale e di una passphrase di emergenza, poi genererà le tue chiavi di identità. Il tuo vault è archiviato in ~/.local/share/op4/vault.op4.

Piattaforme supportate

Kernel minimo: 4.15 (5.4+ consigliato). Architettura: x86-64 (aarch64 dovrebbe funzionare ma non è testata).


Connessione a un altro utente

Due persone devono ciascuna avere op4 installato, Tor in esecuzione e il proprio vault sbloccato. Lo scambio è asimmetrico: una persona invia per prima il proprio codice contatto, l'altra lo aggiunge, poi invia il suo primo messaggio, che arriva come richiesta in sospeso che la prima persona accetta.

Passo 1 — Primo avvio

Al primo avvio op4 richiede una passphrase normale e una passphrase di emergenza, poi genera le tue chiavi di identità. Questo accade una sola volta. Il tuo vault è archiviato in ~/.local/share/op4/vault.op4.

root@kitploit:~
$ op4

Passo 2 — Ottieni il tuo codice contatto

Il tuo codice contatto contiene il tuo bundle completo di chiavi pubbliche e il tuo indirizzo .onion. L'altra persona ne ha bisogno per raggiungerti.

  1. Vai alla scheda Contatti (premi 2 o →)
  2. Premi e per esportare il tuo codice contatto
  3. Il tuo codice appare sullo schermo — è una lunga stringa Base58 che inizia con op4:
  4. Copialo e invialo all'altra persona fuori banda (Signal, email, di persona, ecc.)

Il tuo codice contatto non è segreto. È sicuro condividerlo pubblicamente. Contiene solo le tue chiavi pubbliche e il tuo indirizzo onion — nessun materiale privato.

Passo 3 — Aggiungi l'altra persona come contatto

Una volta che hai il suo codice contatto:

  1. Nella scheda Contatti, premi a per aggiungere un contatto
  2. Incolla il suo codice contatto op4: e premi Invio
  3. Assegnagli un nome e premi Invio

Passo 4 — Invia il tuo primo messaggio

  1. Seleziona il contatto dalla tua lista contatti (usa ↑/↓, poi Invio)
  2. Passa alla scheda Messaggi (premi 3 o →)
  3. Digita il tuo messaggio e premi Invio

Questo primo messaggio avvia l'handshake cifrato e viene consegnato al loro indirizzo .onion tramite Tor. Lo vedranno come una richiesta contatto in sospeso.

Passo 5 — Accetta una richiesta in arrivo

Quando qualcuno ti invia un primo messaggio, appare un badge sulla scheda Contatti che mostra quante richieste sono in attesa.

  1. Vai alla scheda Contatti (premi 2)
  2. Premi p per esaminare le richieste in sospeso
  3. Vedrai l'impronta del mittente e il suo primo messaggio
  4. Digita un nome per questo contatto e premi Invio per accettare (premi Esc per rifiutare ed eliminare)

Una volta accettata, la Double Ratchet viene inizializzata e la conversazione è immediatamente disponibile nella scheda Messaggi.

Passo 6 — Verifica l'impronta (consigliato)

Prima di fidarti di un contatto, conferma che la sua impronta corrisponda a quella che mostra sul proprio schermo. Questo previene un attacco man-in-the-middle durante lo scambio iniziale di contatti.

  1. Nella scheda Contatti, seleziona il contatto
  2. Il pannello dell'impronta a destra mostra una stringa esadecimale di 16 gruppi, es. A3F2:91BC:…
  3. Chiedi all'altra persona di leggere la propria impronta per la tua voce — deve corrispondere esattamente
  4. La verifica può essere fatta con una chiamata vocale, di persona o con qualsiasi altro canale in cui puoi confermare la sua identità

Riferimento di navigazione

Rotazione delle chiavi

Se ritieni che le tue chiavi di identità possano essere compromesse:

  1. Vai alla scheda Impostazioni (premi 4 o naviga a destra)
  2. Premi r per ruotare le chiavi
  3. op4 genera una nuova coppia di chiavi, firma un certificato di revoca con la tua vecchia chiave e lo trasmette a tutti i tuoi contatti tramite Tor
  4. Il tuo codice contatto cambia — condividi quello nuovo con i tuoi contatti

Modello di sicurezza

Primitive crittografiche (tutte dall'ecosistema RustCrypto)

Double Ratchet

op4 utilizza un protocollo Double Ratchet (simile al Signal Protocol) per la segretezza in avanti. Questo significa:

  • Ogni messaggio è cifrato con una chiave unica derivata da una catena ratchet.
  • Compromettere la chiave di un messaggio non espone nessun altro messaggio.
  • Se il tuo dispositivo viene sequestrato, i messaggi passati già eliminati non possono essere decrittati anche se l'aggressore viene a conoscenza della tua passphrase del vault.

Scambio di chiavi ibrido post-quantistico

Il passaggio KEM combina X25519 e ML-KEM-768 come segue:

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

Un aggressore deve violare entrambi gli algoritmi per compromettere lo scambio di chiavi. Questo protegge da un avversario quantistico (ML-KEM-768) rimanendo sicuro contro attacchi classici se ML-KEM-768 ha un difetto sconosciuto (fallback X25519).

Autenticazione negabile

I messaggi sono autenticati con HMAC-SHA256 usando una chiave derivata dallo stato ratchet condiviso. Poiché entrambe le parti detengono la stessa chiave HMAC, ciascuna delle due parti avrebbe potuto produrre qualsiasi MAC dato. Questa è la stessa proprietà di negabilità usata da OTR e Signal: i messaggi non possono essere attribuiti crittograficamente a un mittente specifico in un procedimento giudiziario.

Vault e passphrase di emergenza

Il file vault in ~/.local/share/op4/vault.op4 archivia tutti i contatti, le conversazioni e le chiavi di identità. È protetto con due chiavi indipendenti derivate da Argon2id:

  • Passphrase normale — sblocca i tuoi contatti e messaggi reali.
  • Passphrase di emergenza — sblocca una casella di posta esca vuota ma visivamente identica. Usala se sei costretto a sbloccare l'app. Dall'esterno le due passphrase sono indistinguibili.

Anonimato di rete

op4 crea un servizio nascosto Tor v3 per la tua casella di posta. Il tuo indirizzo .onion è derivato deterministicamente dalla tua chiave di identità (tramite HKDF), quindi è stabile tra i riavvii senza dover archiviare una chiave separata. I messaggi in uscita sono inviati attraverso il proxy SOCKS5 di Tor. Il tuo vero indirizzo IP non appare mai in nessun pacchetto di rete relativo a op4.

Il traffico di copertura (messaggi fittizi a distribuzione di Poisson inviati a se stessi, intervallo medio di 30 secondi) impedisce a un osservatore di rete di capire se stai scambiando messaggi attivamente con qualcuno osservando il volume del traffico.

Indurimento a livello di sistema operativo

  • mlockall — impedisce che le chiavi del vault e il testo in chiaro vengano scritti nello swap.
  • RLIMIT_CORE = 0 — disabilita i core dump che potrebbero esporre la memoria.
  • PR_SET_DUMPABLE = 0 — impedisce ad altri processi di agganciare un debugger.
  • seccomp-bpf — installa una whitelist di syscall. Qualsiasi syscall non presente nell'elenco causa l'uccisione immediata del processo.
  • Profilo AppArmor (apparmor/op4.profile) — limita l'accesso al filesystem alla sola directory del vault, ai dispositivi terminale e a Tor.

Panoramica dell'architettura

root@kitploit:~
┌─────────────────────────────────────────────────────────────┐
│                        op4 process                          │
│                                                             │
│  ┌──────────┐   ┌──────────────────┐   ┌────────────────┐  │
│  │   TUI    │   │  Double Ratchet  │   │  Tor Transport │  │
│  │ (ratatui)│──▶│  + Hybrid PQ     │──▶│  nym_client.rs │  │
│  │          │   │  Crypto          │   │                │  │
│  └──────────┘   └──────────────────┘   └───────┬────────┘  │
│                                                │           │
│  ┌──────────────────────────────┐              │           │
│  │  Encrypted Vault             │    SOCKS5 / control port │
│  │  ~/.local/share/op4/vault.op4│              │           │
│  └──────────────────────────────┘              │           │
└────────────────────────────────────────────────┼───────────┘
                                                 │
                                    ┌────────────▼────────────┐
                                    │      Tor daemon         │
                                    │  127.0.0.1:9050 (SOCKS) │
                                    │  127.0.0.1:9051 (ctrl)  │
                                    └────────────┬────────────┘
                                                 │
                                         Tor network
                                                 │
                                    ┌────────────▼────────────┐
                                    │  Peer's .onion address  │
                                    │  (their hidden service) │
                                    └─────────────────────────┘

Struttura del progetto

root@kitploit:~
op4/
├── src/
│   ├── main.rs                  Entry point, startup sequence
│   ├── error.rs                 Unified error types
│   ├── crypto/
│   │   ├── keys.rs              Hybrid KEM + signature keypairs
│   │   ├── primitives.rs        AEAD, HKDF, HMAC, Argon2id
│   │   ├── ratchet.rs           Double Ratchet implementation
│   │   ├── hmac_auth.rs         Deniable authentication tags
│   │   └── handshake.rs         Initial key agreement (X3DH-style)
│   ├── network/
│   │   ├── nym_client.rs        Tor hidden-service transport
│   │   └── message.rs           Wire message format + padding
│   ├── storage/
│   │   └── vault.rs             Encrypted vault (Argon2id + AEAD)
│   ├── identity/
│   │   ├── profile.rs           Contact codes, stored contacts
│   │   └── revocation.rs        Key revocation records
│   ├── hardening/
│   │   ├── memory.rs            mlockall, RLIMIT_CORE, dumpable
│   │   └── seccomp.rs           seccomp-bpf syscall filter
│   └── ui/
│       ├── app.rs               TUI event loop and state machine
│       ├── contacts.rs          Contacts tab rendering
│       ├── conversation.rs      Messages tab rendering
│       ├── settings.rs          Settings tab rendering
│       ├── duress.rs            Duress inbox rendering
│       ├── input.rs             Input sanitization (CSI/OSC strip)
│       └── passphrase.rs        Secure passphrase prompts
├── apparmor/
│   └── op4.profile              AppArmor MAC profile
├── install/
│   └── setup.sh                 System installation script
├── build.rs                     Embeds source hash at compile time
├── deny.toml                    cargo-deny licence + advisory rules
├── rust-toolchain.toml          Pins Rust 1.89.0
└── docs/                        This documentation

Stato attuale

Versione: 0.2.0-dev (pre-release)

op4 è in sviluppo attivo. I seguenti livelli sono completi e testati:

  • Vault (creazione, sblocco, salvataggio, modalità emergenza)
  • Tutte le primitive crittografiche (12/12 unit test superati)
  • Trasporto via servizio nascosto Tor (connessione, invio, ricezione, traffico di copertura)
  • Interfaccia utente del terminale (navigazione, gestione contatti, vista conversazione)
  • Indurimento del sistema operativo (memoria, seccomp, AppArmor)

Tutti i livelli sono ora collegati end-to-end:

  • Le coppie di chiavi di identità (X25519+ML-KEM-768, Ed25519+ML-DSA-65) vengono generate al primo avvio e archiviate cifrate nel vault.
  • L'esportazione del codice contatto produce un vero PublicKeyBundle codificato in Base58 (il tuo set completo di chiavi pubbliche + indirizzo onion).
  • L'invio di un messaggio esegue un handshake completo in stile X3DH sul primo messaggio verso un contatto, poi la cifratura Double Ratchet sui messaggi successivi, trasmessi tramite Tor.
  • I messaggi in entrata vengono interrogati dal trasporto Tor nel ciclo di eventi della TUI e mostrati nella vista conversazione (pattern sealed-sender: il livello di instradamento non rivela mai chi ha inviato il messaggio).

Tutte le limitazioni note sono state risolte. L'applicazione è ora in stato feature-complete per 0.2.0-dev:

  • L'autenticazione negabile HMAC è completamente collegata. Ogni messaggio di dati in uscita trasporta un tag HMAC-SHA256 calcolato dalla chiave ratchet per messaggio su (conversation_id || message_counter || ciphertext). I messaggi in entrata vengono verificati prima di essere accettati; i tag riempiti con zeri da peer più vecchi sono tollerati per compatibilità all'indietro.

  • La cronologia dei messaggi persiste tra i riavvii. Il registro completo della conversazione è cifrato con una chiave derivata da HKDF per conversazione e archiviato nel campo message_log_ct del vault. I messaggi vengono caricati dal vault quando si apre una conversazione e riscritti dopo ogni invio o ricezione.

  • Le richieste di contatto in entrata da parti sconosciute vengono accodate anziché scartate. La scheda Contatti mostra un badge quando ci sono richieste in attesa. Premi [p] per esaminarle: vedi l'impronta del mittente e il suo primo messaggio, digita un nome e premi Invio per accettare (o Esc per rifiutare). All' accettazione il contatto viene aggiunto, la Double Ratchet viene inizializzata e il messaggio iniziale viene salvato nel vault.

  • Il vault di emergenza viene preservato tra i salvataggi. Il formato del file vault (v2) archivia le lunghezze esatte del ciphertext nell'intestazione, così la decrittazione AEAD opera sui byte reali anziché su sezioni riempite con zeri. La sezione di emergenza cifrata viene archiviata integralmente a ogni chiamata save(), mantenendo la passphrase di emergenza valida a tempo indeterminato.

  • Chiave bootstrap Double Ratchet dedicata. Una coppia di chiavi X25519 separata (identity_ratchet_secret) viene generata al primo avvio e inclusa nel codice contatto come ratchet_pub. Il ratchet di Alice viene inizializzato con il di Bob anziché con la sua chiave di identità KEM, separando i ruoli delle chiavi.

Scarica lo strumento
VersioneHash dei sorgenti
0.3.080820cb41a63575d2c139dadd425d13d1e87e62a9d60200ae7b894ae2e9ad8ed
0.3.148115efb12747fa78b627ddbf7a56c46169f59e777d7d7508941bf89e4fe7521
0.2.0-dev35740577f6c4a4f19c5a08fe85b1f78a10347f2ba9dd7642d126552266bfa5a5
0.1.0e1a94761c7d3fa589ba892b47d5295aa417f95aee126809d51a7e7fb7e78982c
DistribuzioneStato
Ubuntu 22.04 / 24.04Supportata
Debian 12Supportata
Fedora 39+Supportata
Arch Linux (attuale)Supportata
Tails OSSupportata (guida di configurazione)
macOS / Windows / WSL1Non supportata
TastoAzione
1 / ← →Cambia scheda (Contatti / Messaggi / Impostazioni)
↑ ↓Sposta la selezione
InvioApri conversazione / conferma
EscAnnulla / torna indietro
eEsporta il tuo codice contatto (scheda Contatti)
aAggiungi un contatto (scheda Contatti)
pEsamina le richieste in sospeso (scheda Contatti)
dElimina il contatto selezionato (scheda Contatti)
rRuota le tue chiavi (scheda Impostazioni)
qEsci
ScopoAlgoritmo
Derivazione chiave vaultArgon2id (m=64 MiB, t=3, p=1)
Cifratura vaultChaCha20-Poly1305 (chiave a 256 bit, nonce a 96 bit)
Cifratura messaggiChaCha20-Poly1305 (chiave per messaggio derivata dal ratchet)
Derivazione chiave (ratchet)HKDF-SHA256
Autenticazione negabileHMAC-SHA256
Scambio di chiavi classicoX25519
Scambio di chiavi post-quantisticoML-KEM-768 (FIPS 203)
Firme classicheEd25519
Firme post-quantisticheML-DSA-65 (FIPS 204)
Anonimato di trasportoServizi nascosti Tor v3 (.onion)
ratchet_pub
  • La scheda Impostazioni è completamente funzionale. L'indirizzo SOCKS5 di Tor e la soglia di eliminazione automatica possono essere modificati inline. La rotazione delle chiavi (genera una nuova coppia di chiavi, trasmette un certificato di revoca firmato a tutti i contatti, aggiorna il codice di esportazione) e la revoca per pensionamento delle chiavi sono entrambe collegate e operative.

  • La revoca delle chiavi è collegata end-to-end. Le struct RevocationCertificate vengono firmate con la coppia di chiavi ibrida Ed25519+ML-DSA-65 e inviate a tutti i contatti come messaggi WireMessageType::Revocation tramite Tor.