]> Sergey Matveev's repositories - stargrave-blog.git/commit
Во второй версии udpobfs используется TLS 1.3
authorSergey Matveev <stargrave@stargrave.org>
Thu, 19 Oct 2023 15:59:28 +0000 (18:59 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Thu, 19 Oct 2023 15:59:28 +0000 (18:59 +0300)
commit54420404634a2a4b2c8f4fe4f2e4d3ac6961ec1d
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904
parent03c12048888d3588150afbfb5cfbd90ad948a3ea
Во второй версии udpobfs используется TLS 1.3

В udpobfs (552979396ad8de1f3bbeb409f1c2a65f7446806b,
77002b8c0c2ee7bf0840141f8d972f63672f4d92) прежде не было ничего что
касается handshake, что не шибко удобно конечно.

Отталкиваясь от того, что уж TLS то должен работать, то пускай сначала
устанавливается TLS 1.3 соединение, а уж из него экспортируется ключевой
материал. И аутентификация двусторонняя появляется сразу же сильная, на
основе X.509 ключевых пар.

Также осуществляется посылка пустых (payload) пакетов каждые десять
секунд, если легитимного трафика нет. Ну и heartbeat по TLS каналу.
И сколько угодно параллельно сессий может работать, в отличии от
предыдущего варианта.

Вместо полноценного шифра использую BLAKE3 XOF который XOR-ится с
данными. На маленьких пакетах это немного медленнее ChaCha20-Poly1305,
но те кто приближается к килобайтному размеру -- уже быстрее. Poly1305
соответственно заменён BLAKE3-MAC. Для выработки ключей -- BLAKE3-KDF.
Размер MAC-а увеличил с 5 до 6 байт, за счёт уменьшения передаваемого
номера на 1 байт -- этого всё равно достаточно, судя по всему.
Шифрование заголовка Blowfish-ем так и осталось.