Открытый код · Совместим с WireGuard®
Сделайте свой VPN-ключ некопируемым.
Latchwire хранит закрытый ключ WireGuard внутри YubiKey. Ключ создаётся на карте и никогда её не покидает. Протокол и ваш сервер не меняются. Нет карты — нет туннеля.
Предварительная версия: командная строка для macOS и Linux
Как это работает
Создайте ключ на YubiKey
Запустите keygen с YubiKey на прошивке 5.7 или новее. Ключ создаётся на карте, в резервном слоте PIV (82–95), а остальные слоты не меняются. Карте с заводскими настройками сначала назначаются новые PIN и PUK.
Добавьте открытый ключ на сервер
Сервер видит обычный пир WireGuard, поэтому плагины и обновления не нужны. Latchwire рассчитан на стандартные серверы, такие как OPNsense, pfSense, Linux и MikroTik. Пока он проверен от начала до конца только с тестовым сервером в Linux-контейнере.
Введите PIN и подключитесь
PIN передаётся карте и не сохраняется. Обычно его вводят один раз; он запрашивается снова после сна или когда другая программа сбрасывает карту. Выньте карту, и туннель закроется. Цель — две секунды; в тесте с имитацией карты это заняло около одной.
Классический WireGuard и Latchwire
| Вопрос | Классический WireGuard | Latchwire |
|---|---|---|
| Где закрытый ключ? | В файле на компьютере | Внутри YubiKey |
| Можно ли его скопировать? | Да, не оставив следов | Нет. Ключ нельзя извлечь из карты |
| Ноутбук украден без карты? | Нужно заменить ключ на каждом сервере | Ничто на диске не может завершить рукопожатие |
| Вредоносная программа на компьютере? | Может украсть ключ и использовать его позже | Может пользоваться туннелем, пока карта подключена, но не может унести ключ |
| Резервная копия | Копия файла | Вторая YubiKey, добавленная на сервер как второй пир |
| Сторона сервера | Стандартный WireGuard | То же самое: стандартный WireGuard |
| Зрелость | Устоявшийся, есть официальные клиенты | Предварительная версия |
Устройства
Сегодня в коде есть только первая карта из списка ниже. Метки показывают статус каждой.
YubiKey 5
v1PIV с 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 запланированы. Ни один из них пока не существует.
Дорожная карта
ЯдроРеализовано
Клиент командной строки для macOS и Linux
Полные сетевые функцииРеализовано
Полный туннель, DNS, kill switch, подключение по требованию и разрешённые пользователи. Проверено в Linux; macOS ещё предстоит проверить
Проверки на настоящих устройствахОткрыто
Настоящие YubiKey и сеть macOS, по открытому чек-листу
WindowsВ работе
Служба, сетевой слой и kill switch
Настольное приложение и переводыВ работе
Настольное приложение для macOS, Windows и Linux
Подписанные релизыЗапланировано
Homebrew, прямая загрузка, .deb, .rpm, Microsoft Store