
Aplicación de escritorio para registrar una cuenta de Signal y vincular Signal Desktop sin necesidad de un teléfono inteligente, utilizando los protocolos criptográficos de Signal para el aprovisionamiento seguro del dispositivo.
Una aplicación de escritorio para registrar una cuenta en Signal y vincularla con Signal Desktop, todo sin necesidad de un smartphone.

Ten en cuenta que Signal aún requiere un número de teléfono para usarse. Esta utilidad evita la necesidad de un smartphone, pero seguirá necesitando una forma de recibir mensajes SMS durante la fase de instalación
¡Obtén la última versión!
Hay múltiples razones por las que esta herramienta podría interesarte:
La seguridad de tus conversaciones de Signal es tan baja como la seguridad de los dispositivos en los que está instalado:
Si tu dispositivo se pierde o es robado cuando no está bloqueado con tu código de acceso, por supuesto alguien podría leer los mensajes en él. Del mismo modo, se sabe que las agencias de aplicación de la ley utilizan herramientas forenses para acceder a dispositivos incautados, lo que permite leer cualquier cosa en el dispositivo, incluidos tus mensajes.
Algunas personas no tienen un smartphone, y deberían poder usar Signal :-)
Signal no tiene intención de admitir este caso de uso en su propio software. El código de registro independiente sí existe en Signal Desktop, pero está limitado a las compilaciones de desarrollo y staging únicamente, y los mantenedores han confirmado en su rastreador que no está destinado a usuarios finales (#1118, #551, #575, #6431). Por eso existe esta herramienta separada.
Descarga el archivo para tu sistema desde la página de versiones:
.dmg y arrastra Signal Setup a Applications.AppImage: Hazlo ejecutable (chmod +x Signal_Setup-*.AppImage) y ejecútalo. También se publica un binario signal-setup-linux-* simple si lo prefieres.Los lanzamientos no están firmados con un certificado de desarrollador de pago ($99 USD por año para macOS, incluso más para Winwows), y como resultado el sistema te advierte después de la instalación:
macOS muestra "no se puede abrir porque proviene de un desarrollador no identificado". Haz clic derecho en la aplicación y elige Abrir, luego confirma. Solo necesitas hacer esto una vez. Si informa que la aplicación está "dañada", limpia la marca de cuarentena de descarga: xattr -dr com.apple.quarantine "/Applications/Signal Setup.app".
Windows SmartScreen muestra "Windows protegió tu PC". Haz clic en Más información, luego en Ejecutar de todas formas.
cargo build --release
./target/release/signal-setup
El proyecto es un workspace de Cargo con dos crates: signal-setup-core (la lógica de registro y vinculación de dispositivos de Signal) y signal-setup (la GUI de escritorio que depende de él). Compilando el workspace se produce el binario signal-setup anterior.
Solo en Linux, algunas bibliotecas del sistema son útiles para GPU/pantalla:
# 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
Puedes ejecutar la herramienta contra el entorno de staging de Signal en lugar de producción, lo cual es útil para desarrollo y pruebas sin arriesgar tu cuenta real:
./target/release/signal-setup --staging
Para completar el paso de vinculación de dispositivos, necesitarás una instancia de Signal Desktop también conectada al servidor de staging. Compilar Signal Desktop desde el código fuente hace esto por defecto:
git clone https://github.com/signalapp/Signal-Desktop.git
cd Signal-Desktop
pnpm install
pnpm start
También está disponible una bandera --demo para pruebas completamente sin conexión con datos falsos (sin necesidad de servidor).
Hay otras herramientas capaces de hacer esto, como la excelente signal-cli de AsamK, pero desafortunadamente no proporcionan una interfaz gráfica de usuario. Una versión anterior de esta herramienta la usaba internamente, pero requería que los usuarios tuvieran una JVM instalada para ejecutarla.
En su lugar — y porque pensé que sería más fácil — aproveché la ocasión para sumergirme en la criptografía de Signal.
Aquí hay una descripción de alto nivel de cómo funcionan las cosas (esta aplicación se registra como el dispositivo principal de Signal, y luego vincula Signal Desktop como un dispositivo secundario).
Aquí está el flujo:
%%{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/>.