Latchwire
Русский

Открытый код · Совместим с WireGuard®

Сделайте свой VPN-ключ некопируемым.

Latchwire хранит закрытый ключ WireGuard внутри YubiKey. Ключ создаётся на карте и никогда её не покидает. Протокол и ваш сервер не меняются. Нет карты — нет туннеля.

Предварительная версия: командная строка для macOS и Linux

Как это работает

  1. Создайте ключ на YubiKey

    Запустите keygen с YubiKey на прошивке 5.7 или новее. Ключ создаётся на карте, в резервном слоте PIV (82–95), а остальные слоты не меняются. Карте с заводскими настройками сначала назначаются новые PIN и PUK.

  2. Добавьте открытый ключ на сервер

    Сервер видит обычный пир WireGuard, поэтому плагины и обновления не нужны. Latchwire рассчитан на стандартные серверы, такие как OPNsense, pfSense, Linux и MikroTik. Пока он проверен от начала до конца только с тестовым сервером в Linux-контейнере.

  3. Введите PIN и подключитесь

    PIN передаётся карте и не сохраняется. Обычно его вводят один раз; он запрашивается снова после сна или когда другая программа сбрасывает карту. Выньте карту, и туннель закроется. Цель — две секунды; в тесте с имитацией карты это заняло около одной.

Классический WireGuard и Latchwire

ВопросКлассический WireGuardLatchwire
Где закрытый ключ?В файле на компьютереВнутри YubiKey
Можно ли его скопировать?Да, не оставив следовНет. Ключ нельзя извлечь из карты
Ноутбук украден без карты?Нужно заменить ключ на каждом сервереНичто на диске не может завершить рукопожатие
Вредоносная программа на компьютере?Может украсть ключ и использовать его позжеМожет пользоваться туннелем, пока карта подключена, но не может унести ключ
Резервная копияКопия файлаВторая YubiKey, добавленная на сервер как второй пир
Сторона сервераСтандартный WireGuardТо же самое: стандартный WireGuard
ЗрелостьУстоявшийся, есть официальные клиентыПредварительная версия

Устройства

Сегодня в коде есть только первая карта из списка ниже. Метки показывают статус каждой.

YubiKey 5

v1

PIV с X25519, прошивка 5.7 или новее. Ключ создаётся на карте и никогда её не покидает. Пока тесты используют имитацию карт; проверки на настоящих картах ещё не завершены.

Карты OpenPGP

Скоро

Запланированы сразу после v1. Не реализованы.

PKCS#11 и HSM

Скоро

Запланированы сразу после v1, для устройств с X25519. Не реализованы.

TPM, Secure Enclave, FIDO2

В планах

Более слабый класс, не входит в v1. Ключ был бы зашифрован аппаратно, но открыт в памяти во время использования, поэтому заявление о том, что ключ нельзя скопировать, к ним никогда не относится.

Безопасность

Заявление касается кражи ключа, а не его использования. Вот что оно охватывает, а что нет.

Защищает от

  • Копирования ключа с диска или из резервных копий: закрытый ключ туда никогда не записывается
  • Кражи или снятия образа ноутбука без карты
  • Файлов конфигурации с закрытым ключом: Latchwire их отклоняет
  • Ключей, созданных не на карте: Latchwire их не принимает
  • Выхода трафика мимо туннеля при включённом kill switch, в пределах, описанных в модели угроз

Не защищает от

  • Вредоносного кода, работающего от вашего имени, пока карта подключена и PIN введён: он может использовать карту и туннель. Касание не требуется
  • Других программ, которым доступна карта после ввода PIN; на некоторых системах это включает других локальных пользователей
  • Взломанной учётной записи root или ядра
  • Кражи ноутбука вместе с картой и PIN
  • Чтения памяти процесса: там находятся сеансовые ключи и кэшированный секрет, они могут попасть в swap. Это не закрытый ключ, и без карты они не завершат рукопожатие
  • Поддельных токенов: Latchwire доверяет тому, что сообщает карта, и пока не проверяет аттестацию

Полезно знать

  • PIN никогда не сохраняется, но проходит через память во время ввода.
  • PIN по умолчанию никогда не пробуется.
  • Предварительно согласованный ключ, если он используется, хранится на диске и не защищён аппаратно.
  • Модель угроз указывает код, стоящий за каждой защитой. Если они расходятся, прав код, а в документе ошибка.

Статус проекта

Latchwire — предварительная версия. Вот что есть сегодня и что проверено.

  • Командная строка и сеть в Linux

    Проверено от начала до конца в привилегированном контейнере, с программным ключом и тестовым сервером.

    Проверено
  • Командная строка и сеть в macOS

    Реализовано. Ручные проверки ещё не завершены.

    Не проверено
  • Работа с настоящей YubiKey

    Автотесты используют имитацию карт. Проверки на настоящих картах ещё не завершены.

    Не проверено
  • Windows

    Не реализовано. Сборка для Windows пока не компилируется.

    Не готово
  • Настольное приложение

    В разработке. Сегодня есть только командная строка.

    Не готово
  • Подписанные релизы и пакеты

    Релизов нет. Сборка только из исходного кода.

    Пока нет
  • Независимый аудит безопасности

    Независимого аудита не было.

    Пока нет

Установка

Соберите из исходного кода. Пакетов и подписанных бинарных файлов пока нет, эта установка предназначена для тестирования.

Нужны Go 1.25 или новее и YubiKey 5 с прошивкой 5.7 или новее. В Linux для сборки также нужны компилятор C и libpcsclite-dev, а для работы — запущенный pcscd.

Сборка

git clone https://github.com/Kodviva/latchwire
cd latchwire
go build -o latchwire ./cmd/latchwire
sudo install -o root -m 0755 latchwire /usr/local/bin/latchwire

Запустите демон и агент, каждый в своём терминале

sudo latchwire daemon
latchwire agent

Создайте ключ и подключитесь

latchwire devices
latchwire keygen --serial <serial> --address <tunnel-ip>
sudo latchwire add office office.conf
latchwire up office

keygen выводит блок [Peer] для сервера. Файл туннеля — обычный файл WireGuard, где вместо PrivateKey указаны KeyRef и PublicKey.

Пакеты Homebrew, .deb, .rpm и Microsoft Store запланированы. Ни один из них пока не существует.

Дорожная карта

  1. ЯдроРеализовано

    Клиент командной строки для macOS и Linux

  2. Полные сетевые функцииРеализовано

    Полный туннель, DNS, kill switch, подключение по требованию и разрешённые пользователи. Проверено в Linux; macOS ещё предстоит проверить

  3. Проверки на настоящих устройствахОткрыто

    Настоящие YubiKey и сеть macOS, по открытому чек-листу

  4. WindowsВ работе

    Служба, сетевой слой и kill switch

  5. Настольное приложение и переводыВ работе

    Настольное приложение для macOS, Windows и Linux

  6. Подписанные релизыЗапланировано

    Homebrew, прямая загрузка, .deb, .rpm, Microsoft Store