
Applicazione desktop per registrare un account Signal e collegare Signal Desktop senza bisogno di uno smartphone, utilizzando i protocolli crittografici di Signal per il provisioning sicuro del dispositivo.
Un'applicazione desktop per registrare un account con Signal e collegarlo a Signal Desktop, tutto senza bisogno di uno smartphone.

Nota che Signal richiede comunque un numero di telefono. Questa utility evita la necessità di uno smartphone, ma richiederà comunque un modo per ricevere SMS durante la fase di configurazione
Ottieni l'ultima versione!
Ci sono molteplici ragioni per cui questo strumento potrebbe interessarti:
La sicurezza delle tue conversazioni su Signal è bassa quanto quella dei dispositivi su cui è installato:
Se il tuo dispositivo viene smarrito o rubato quando non è bloccato con il tuo codice di accesso, naturalmente qualcuno potrebbe leggere i messaggi. Allo stesso modo, è noto che le forze dell'ordine utilizzano strumenti forensi per accedere ai dispositivi sequestrati, rendendo possibile leggere qualsiasi cosa sul dispositivo, inclusi i tuoi messaggi.
— Gruppo di sicurezza di Signal, Freedom of the Press Foundation
Alcune persone non hanno uno smartphone, e dovrebbero essere in grado di usare Signal :-)
Signal non ha intenzione di supportare questo caso d'uso nel proprio software. Il codice di registrazione standalone esiste in Signal Desktop, ma è limitato alle build di sviluppo e staging, e i maintainer hanno confermato sul loro tracker che non è destinato agli utenti finali (#1118, #551, #575, #6431). Ecco perché esiste questo strumento separato.
Scarica il file per il tuo sistema dalla pagina delle release:
.dmg e trascina Signal Setup nelle Applicazioni.AppImage: Rendi eseguibile (chmod +x Signal_Setup-*.AppImage) ed eseguilo. Viene pubblicato anche un binario signal-setup-linux-* semplice se preferisci.Le release non sono firmate con un certificato da sviluppatore a pagamento (99 USD all'anno per macOS, ancora di più per Windows), e di conseguenza il sistema avvisa dopo l'installazione:
macOS mostra "impossibile aprire perché proviene da uno sviluppatore non identificato."
Fai clic destro sull'app e scegli Apri, poi conferma. Devi farlo solo una volta.
Se segnala che l'app è "danneggiata", cancella il flag di quarantena del download:
xattr -dr com.apple.quarantine "/Applications/Signal Setup.app".
Windows SmartScreen mostra "Windows ha protetto il tuo PC." Fai clic su Altre informazioni, poi Esegui comunque.
cargo build --release
./target/release/signal-setup
Il progetto è un workspace Cargo con due crate: signal-setup-core (la
logica di registrazione e collegamento dispositivo di Signal) e signal-setup (l'interfaccia
GUI desktop che dipende da essa). Compilare il workspace produce il binario
signal-setup sopra.
Solo su Linux, alcune librerie di sistema sono utili per GPU/display:
# Ubuntu / Debian
sudo apt install libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev \
libxkbcommon-dev libssl-dev protobuf-compiler
# Fedora
sudo dnf install libxcb-devel libxkbcommon-devel openssl-devel protobuf-compiler
# Arch
sudo pacman -S libxcb libxkbcommon openssl protobuf
Puoi eseguire lo strumento contro l'ambiente di staging di Signal invece della produzione, utile per sviluppo e test senza rischiare il tuo account reale:
./target/release/signal-setup --staging
Per completare il passo di collegamento del dispositivo, avrai bisogno di un'istanza di Signal Desktop anch'essa connessa al server di staging. Compilare Signal Desktop dal sorgente fa questo di default:
git clone https://github.com/signalapp/Signal-Desktop.git
cd Signal-Desktop
pnpm install
pnpm start
Un flag --demo è anche disponibile per test completamente offline con dati fittizi (nessun
server richiesto).
Ci sono altri strumenti in grado di farlo, come l'ottimo signal-cli di AsamK, ma sfortunatamente non forniscono un'interfaccia grafica. Una versione precedente di questo strumento lo utilizzava internamente, ma richiedeva agli utenti di avere una JVM installata per eseguire le cose.
Invece — e perché pensavo fosse più semplice — ho colto l'occasione per immergermi a fondo nella crittografia di Signal.
Ecco una panoramica ad alto livello di come funziona (questa applicazione si registra come dispositivo primario di Signal, e poi collega Signal Desktop come dispositivo secondario).
Ecco il flusso:
%%{init: {'theme':'default', 'themeVariables': {'background':'#ffffff'}}}%%
sequenceDiagram
actor User
participant App as App
participant Server as Signal Server
participant Desktop as Signal Desktop
participant Store as Disk + Keyring
Note over App: Step 0: Welcome (if saved accounts)
rect rgb(235,245,255)
Note over User,Server: Phase 1: Request verification code
User->>App: Step 1: enter phone (+1234567890)
App->>Server: POST /v1/verification/session
Server-->>App: session.id (+ captcha_required?)
alt Captcha required
Note over App: Step 2 shown
User->>App: solve captcha, paste it
App->>Server: POST .../session/{id}/code (sms)
else No captcha
App->>Server: POST .../session/{id}/code (sms)
end
Server-->>User: SMS verification code
end
rect rgb(235,255,235)
Note over User,Server: Phase 2: Verify & register account
User->>App: Step 3: enter 6-digit code
App->>Server: PUT .../session/{id}/code {code}
Note over App: Generate keys: ACI/PNI identity,<br/>signed pre-keys, Kyber PQ keys,<br/>master/profile keys, password
App->>Server: POST /v1/registration (account attrs + keys)
alt 409 Device transfer available
Server-->>App: 409 / DeviceTransferAvailable
Note over App: warn, retry skipping device transfer
else Success
Server-->>App: registered
App->>Store: save metadata (disk) + secrets (keyring)
end
end
rect rgb(255,245,235)
Note over User,Desktop: Phase 3: Link Signal Desktop
User->>App: Step 4: launch Desktop, "Link to existing device"
Desktop-->>User: shows QR code
User->>App: paste QR image / link
App->>Server: GET /v1/devices/provisioning/code
Server-->>App: verification_code
Note over App: Build ProvisionMessage (identity keys,<br/>profile/master key, code) →<br/>ECDH + HKDF + AES-256-CBC + HMAC
App->>Server: PUT /v1/provisioning/{ephemeral_id} (envelope)
Server-->>Desktop: deliver envelope / register as device 2
loop Poll up to 60s
App->>Server: GET /v2/keys/{aci}/2
Server-->>App: device 2 pre-keys (when ready)
end
Note over App: send_linked_device_sync():<br/>X3DH + Double Ratchet session,<br/>encrypt empty contacts SyncMessage
App->>Server: PUT /v1/messages/{aci} (encrypted sync)
Server-->>Desktop: SyncMessage / leaves "Syncing…"
end
App-->>User: Step 5 : 🎉 Setup complete
Signal Without Smartphone
Copyright (C) 2026 Alexis Métaireau
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.