Информация об изменениях

Сообщение подделка пакетов от 10.01.2018 19:14

Изменено 10.01.2018 19:16 niXman

подделка пакетов
привет!

в некотором проекте я реализовал 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(). но как с этим бороться? написать свою, хоть и не самую быструю реализацию этой функции(с инлайном етц..)?

глобальный вопрос: как защититься?


спасибо.
подделка пакетов
привет!

в некотором проекте я реализовал 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.
сервер — линукс.