@usr Как бы сделал я:
- сообщения сервер отправляет не сразу, а со случайной задержкой, задержка варьируется от активности подсети клиента и обратно пропорциональна активности других клиентов в ней, а максимум пусть выбирает пользователь.

- сообщения добиваются рандомом и шифруются ключом сервера поверх всего остального, таким образом наблюдатель не сможет косвенно сопоставить содержимое пакетов "отправитель-сервер" и "сервер-получатель".

- при отправке сообщений в ту же подсеть их отправляется несколько, разным получателям и с некоторой случайной задержкой, порядок тоже случаен.

- это всё отключается клиентом по желанию в настройках. Если в переписке у всех клиентов это выключено, то как обычно. Если хоть один включил - работает.

Но всё равно это костыли и удорожание инфраструктуры в разы, Дуров не оценит. Плюс некоторые пограничные случаи это не покрывает.