привет!
в некотором проекте я реализовал RMI, транспортная часть которого использует
libsodium.
для обмена ключами используется функции из раздела
Diffie-Hellman из libsodium.
для шифрования/дешифрования используются функции AEAD
crypto_secretbox_easy() и
crypto_secretbox_open_easy() отсюда.
все работает как надо, за исключением того момента, что иногда в теле пакетов приходит мусор, типа того, что я привел
в своей соседней темеАвтор: niXman
Дата: 10.01.18
.
и тут меня смущает то, что функция
crypto_secretbox_open_easy() успешно расшифровывает этот "плохой" пакет, значит, этот пакет был "испорчен" до применения к нему
crypto_secretbox_easy(), которая, собственно и шифрует этот пакет и добавляет к нему тэг аутентификации(на противоположной стороне).
такие пакеты я ловил всего два раза. это очень редко, потому что этот код работает уже около полугода.
еще странность в том, что у пира приславшего этот пакет невозможно получить IP адрес, что похоже на
SYN-flood атаку.
по поводу "подделки" пакетов перед шифрованием, я думаю, это можно сделать путем подмены msvcrt`шной функции
memcpy(). но как с этим бороться? написать свою, хоть и не самую быструю реализацию этой функции(с инлайном етц..)?
глобальный вопрос: как защититься?
спасибо.
зы
клиенты — на венде, компилятор — MinGW-W64.
сервер — линукс.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)