# Модель безопасности ## Защищаемые данные - SSH, WireGuard, device и agent identities; - topology, внутренние адреса, метрики и состояния Links; - команды, терминальные сессии и аудит; - права пользователей и AI-агентов. ## Границы доверия Windows client, Hub и каждый Node считаются отдельными субъектами. Компрометация одного Node не должна выдавать ключи других узлов или право создавать новые Links. Hub хранит только публичные WireGuard-ключи Node. Приватный ключ Node генерируется локально, не включается в enrollment token и не записывается на Hub. ## SSH monitoring MVP Windows-клиент использует отдельный Ed25519-ключ только для forced-command. Этот ключ не используется для интерактивного терминала или AI-агента. Первый host key требует явного подтверждения fingerprint; последующие подключения проверяют сохранённый `known_hosts`. Приватный ключ клиента защищается Windows DPAPI и доступом текущего пользователя. Профили серверов не содержат паролей. ## Регистрация Node 1. На Hub создаётся случайный enrollment token со сроком жизни не более 10 минут. 2. Node локально генерирует WireGuard-ключ. 3. Node предъявляет token и публичный ключ по защищённому каналу. 4. Hub атомарно помечает token использованным, регистрирует адрес и возвращает подтверждение, которое связывает token, публичный ключ и все параметры конфигурации. 5. Повторное использование, просроченный token и смена публичного ключа отклоняются. До появления mTLS enrollment выполняется через отдельную ограниченную SSH-команду. Token не должен содержать приватный WireGuard-ключ. ## Авторизация Links - мониторинг read-only отделён от управления; - Link всегда содержит source, destination, CIDR, протокол и порт; - пустой список портов не означает разрешение всех портов; - automation identity не наследует интерактивные права владельца; - команды имеют TTL, nonce/idempotency key и версию политики; - Hub проверяет имена и параметры повторно, независимо от проверки desktop client. ## Аудит Записываются регистрация и удаление узла, изменение прав, создание, включение, истечение и отключение Link, а также ошибки применения. Секреты, приватные ключи и полный ввод терминала не журналируются. Для первого MVP используется append-only JSONL с ограниченными правами и ротацией. После появления control service аудит переносится в SQLite с возможностью внешнего экспорта. ## Kill switch Отключение Link должно: 1. немедленно удалить разрешающее правило на Hub; 2. записать желаемое состояние `Disabled` до отправки дополнительных команд; 3. запретить автоматическое восстановление после reboot/reconnect; 4. получить подтверждение применённой версии политики; 5. показывать `Partial`, если подтверждение одного из узлов отсутствует; 6. сохранить обязательную операцию для временно недоступного Node. ## Не входит в первый MVP - выполнение произвольных root-команд; - хранение пользовательских приватных SSH-ключей на Hub; - автоматическое объединение всех серверов в flat network; - публичный входящий API на Node; - собственная криптография вместо SSH, TLS и WireGuard; - автоматический failover между несколькими Hub.