способен на ответ.
Суть в чём? Есть Noise Protocol Framework. Я пытаюсь построить на его основе протокол, который работает поверх UDP. А там соответственно никаких гарантий доставки нет. Плюс ещё и требования к защите от разных атак по типу DDoS.
За основу я беру https://github.com/networkprotocol/netcode и хочу скрестить его с рукопожатием из Noise.
В netcode нет всех этих ваших эфимерных ключиков да и вообще ассиметричных штучек, Noise изначально не особо рассчитан на среду UDP.
Изначальный протокол примерно такой:
Client <- auth_token <- AuthServer
Client -> [request] -> Server
Client <- [response or close] <- Server
Client -> [proof handsake] -> Server
Client <-> [payload or close] <-> Server
Клиент считает, что соединение открылось, когда может получить payload-пакет.
Заметка: чистый Noise (например реализация snow) мне не подходят. Я хочу без лишних аллокаций/проверок. Плюс нестандартный набор крипты. ChaCha8Poly1305 для AEAD и Blake3 в качестве хеша. Это гораздо быстрее и меня устраивает, если оно чуточку менее безопасно.
Но вот общие паттерны рукопожатия из Noise выглядят привлекательно. Хотя местами не очень понятно, какие штуки требуются мне. Нужен ли мне PSK например. И так далее.
Плюс есть ещё один момент. Могут существовать серваки, для подключения к которым мне не требуется дёргать Auth-сервер. И эта штука должна работать без изменения протокола, но быть опцией с точки зрения сервера. Т.е. сервер может иметь два режима. В одном он принимает клиентов без связи с Auth-токеном, а в другой отбрасывает на как можно более ранней (и дешевой по вычислениям) стадии.
В общем штука сложная. Не то, чтоб я не мог это всё сделать, но там много нюансов всяких.
Где я мог бы задать подобные вопросы?
Звучит вполне разумно как схема
Процедура rekey. Поскольку тут UDP, то на короткий период времени может существовать два ключа. Плюс злоупотребление механизмом rekey можно считать атакой со стороны клиента. Или не стоит заморачиваться и отсыпать под sequence больше бит. Ну где-то 28-30 бит должно хватать на любое адекватное использование. (при использовании rekey можно даже 20 бит считать нормой).
Обсуждают сегодня