
Настольное приложение для регистрации аккаунта Signal и привязки Signal Desktop без необходимости использования смартфона, использующее криптографические протоколы Signal для безопасной настройки устройства.
Настольное приложение для регистрации аккаунта в Signal и его привязки к Signal Desktop — всё это без необходимости в смартфоне.

Эта утилита избавляет от необходимости в смартфоне, но по-прежнему требует способа получать SMS-сообщения на этапе настройки. Signal недавно представил аккаунты без номера, но для них всё ещё требуются Android и сервисы Google Play. Велика вероятность, что в будущем они предложат альтернативные способы оплаты.
Скачайте последний релиз!
Есть несколько причин, по которым этот инструмент может вас заинтересовать:
Безопасность ваших переписок в Signal настолько же низка, насколько низка безопасность устройств, на которых он установлен:
Если ваше устройство потеряно или украдено, когда оно не заблокировано вашим кодом-паролем, то, конечно, кто-то может прочитать сообщения на нём. Аналогично, правоохранительные органы, как известно, используют криминалистические инструменты для взлома изъятых устройств, что позволяет прочитать всё на устройстве, включая ваши сообщения.
— Безопасность групп в Signal, Freedom of the Press Foundation
У некоторых людей нет смартфона, и они должны иметь возможность пользоваться Signal :-)
Инструмент регистрируется как основное устройство аккаунта и привязывает Signal Desktop как дополнительное. Signal позволяет иметь до пяти привязанных устройств на аккаунт, и этот инструмент поможет привязать их все. Это полезно в ситуациях, когда вы хотите поделиться аккаунтом Signal с коллегой, например.
На данный момент Signal Desktop требует номер телефона и смартфон для настройки аккаунта. Это может измениться в будущем, но до тех пор вы можете использовать этот инструмент.
«Я полагаю, ваш вопрос касается в некотором роде регистрации по номеру телефона, которая существует в Signal сегодня. Мы рассматриваем возможность, надеемся, позже в этом году добавить способ регистрации без номеров телефона. [...]»
— Эрен Крет, технический директор Signal, 20 июля 2026 г.
Скачайте файл для вашей системы со страницы релизов:
.dmg и перетащите Signal Setup в папку Applications.AppImage: Сделайте его исполняемым (chmod +x Signal_Setup-*.AppImage) и запустите. Также публикуется обычный бинарный файл signal-setup-linux-*, если вы предпочитаете его.Релизы не подписаны платным сертификатом разработчика (99 долларов США в год для macOS, и даже больше для Windows), и в результате система предупреждает вас после установки:
macOS показывает «невозможно открыть, так как он от неизвестного
разработчика». Щёлкните правой кнопкой мыши по приложению и выберите Открыть, затем подтвердите. Вам нужно
сделать это только один раз. Если сообщается, что приложение «повреждено», снимите флаг карантина загрузки: xattr -dr com.apple.quarantine "/Applications/Signal Setup.app".
Windows SmartScreen показывает «Windows защитила ваш компьютер». Нажмите Подробнее, затем Выполнить в любом случае.
cargo build --release
./target/release/signal-setup
Проект представляет собой рабочее пространство Cargo с двумя крейтами: signal-setup-core (логика регистрации в Signal и привязки устройства) и signal-setup (настольный графический интерфейс, который зависит от него). Сборка рабочего пространства создаёт бинарный файл signal-setup, упомянутый выше.
Только в Linux для работы GPU/дисплея полезны несколько системных библиотек:
# 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
Каждый аккаунт можно экспортировать с его экрана "Manage" в виде ключевого файла:
signal-account-<number>.json. Он содержит всё необходимое для работы в качестве основного
устройства аккаунта, зашифрованное парольной фразой по вашему выбору.
Храните его как резервную копию — вы сможете импортировать его на другую машину!
Ключевые файлы также содержат мастер-ключ, который полезен для повторной регистрации номера без ожидания истечения блокировки.
Вы можете запустить инструмент против промежуточной среды Signal вместо production, что полезно для разработки и тестирования без риска для вашего реального аккаунта:
./target/release/signal-setup --staging
Чтобы завершить этап связывания устройства, вам понадобится экземпляр Signal Desktop, также подключённый к staging-серверу. Сборка Signal Desktop из исходного кода делает это по умолчанию:
git clone https://github.com/signalapp/Signal-Desktop.git
cd Signal-Desktop
pnpm install
pnpm start
Установите SIGNAL_SETUP_DEBUG=1, чтобы выводить в терминал каждый ответ API верификации Signal
(статус и тело) — это первое, на что стоит смотреть, когда
регистрация не проходит.
Также доступен флаг --demo для полностью офлайн-тестирования с поддельными данными (сервер
не нужен). В демо-режиме код верификации 000000 имитирует
аккаунт, подходящий для переноса устройства, а 111111 — номер, заблокированный для регистрации.
Есть другие инструменты, способные делать это, например замечательный signal-cli от AsamK, но, к сожалению, они не предоставляют графический пользовательский интерфейс. Предыдущая версия этого инструмента использовала его под капотом, но требовала от пользователей установленной JVM для запуска.
Вместо этого — и поскольку я подумал, что так будет проще — я воспользовался случаем, чтобы глубоко погрузиться в криптографию Signal.
Вот высокоуровневое описание того, как всё работает (это приложение регистрируется как первичное устройство Signal, а затем связывает Signal Desktop как вторичное устройство).
Вот поток:
%%{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