AmneziaWG: Ошибка Pre-Shared Key (PSK) в обфусцированном рукопожатии
- Рукопожатие не может завершиться, несмотря на корректность публичных и приватных ключей интерфейса.
- В отладочном журнале
wireguard-goфиксируется:Keypair negotiation failed: invalid PSK mac2 calculation. - Клиент отправляет запросы, но сервер фиксирует ошибки дешифрации симметричного конверта.
- Соединение мгновенно разрывается сразу после отправки первого пакета
Handshake Initiation.
1. Роль Pre-Shared Key в защите от квантовых атак и DPI
В AmneziaWG симметричный ключ PresharedKey подмешивается в криптографический протокол Noise IKpsk2. Если в конфиге указан невалидный PSK или длина ключа не равна строго 32 байтам (256 бит), процесс дешифрации сессионных ключей терпит сбой.
2. Проверка и генерация корректного PSK
# Генерация нового 256-битного PSK ключа через утилиту awg
awg genpsk > /tmp/preshared.key
cat /tmp/preshared.key
# Альтернативная генерация через OpenSSL
openssl rand -base64 323. Проверка синтаксиса в конфигурационных файлах
Убедитесь, что PSK прописан в секции [Peer] и совпадает до символа на обеих сторонах:
# Серверный конфиг awg0.conf
[Peer]
PublicKey = <Client_Public_Key>
PresharedKey = dGhpcyBpcyBhIHZhbGlkIDMyLWJ5dGUgcHNrIGtleSE=
AllowedIPs = 10.8.0.2/32
# Клиентский конфиг
[Peer]
PublicKey = <Server_Public_Key>
PresharedKey = dGhpcyBpcyBhIHZhbGlkIDMyLWJ5dGUgcHNrIGtleSE=
Endpoint = 203.0.113.10:51820
AllowedIPs = 0.0.0.0/04. Тестирование соединения без PSK (для локализации проблемы)
Закомментируйте строчку PresharedKey на клиенте и сервере, перезапустите интерфейсы и проверьте, поднимается ли базовый Handshake.
Частые вопросы (FAQ)
Является ли параметр PresharedKey обязательным в AmneziaWG?
Нет, PSK опционален. Однако его использование крайне рекомендуется в качестве дополнительного слоя постквантовой защиты и защиты от активного зондирования DPI.
Почему при ошибке PSK в логах нет явного сообщения 'Wrong Key'?
Протокол Noise намеренно спроектирован так, чтобы не выдавать наружу явных сообщений об ошибках аутентификации ради противодействия тайминг-атакам.
Могут ли пробелы или символы перевода строки испортить ключ PSK?
Да, невидимые символы CRLF (перевод строки Windows) или пробелы в конце строки Base64 делают ключ невалидным при парсинге.
Можно ли использовать один PSK для всех клиентов сервера?
Технически да, но с точки зрения безопасности каждому пиру следует генерировать свой собственный уникальный PresharedKey.