подделка пакетов
От: niXman Ниоткуда https://github.com/niXman
Дата: 10.01.18 19:14
Оценка:
привет!

в некотором проекте я реализовал 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 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Отредактировано 10.01.2018 19:16 niXman . Предыдущая версия . Еще …
Отредактировано 10.01.2018 19:16 niXman . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.