377 похожих чатов

Я прост не очень верю, что тут есть кто-то, кто

способен на ответ.

Суть в чём? Есть 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-токеном, а в другой отбрасывает на как можно более ранней (и дешевой по вычислениям) стадии.

В общем штука сложная. Не то, чтоб я не мог это всё сделать, но там много нюансов всяких.

Где я мог бы задать подобные вопросы?

2 ответов

20 просмотров

Звучит вполне разумно как схема

Lain-dono- Автор вопроса

Процедура rekey. Поскольку тут UDP, то на короткий период времени может существовать два ключа. Плюс злоупотребление механизмом rekey можно считать атакой со стороны клиента. Или не стоит заморачиваться и отсыпать под sequence больше бит. Ну где-то 28-30 бит должно хватать на любое адекватное использование. (при использовании rekey можно даже 20 бит считать нормой).

Похожие вопросы

Обсуждают сегодня

Карта сайта