docs(readme): объяснить срабатывания антивируса и зафиксировать отказ от подписи (#30)

Претензия про VirusTotal всплывала в обсуждениях и не была нигде объяснена.
Отмахнуться «это ложное срабатывание» нельзя: движок реагирует на реальное
поведение программы. Поэтому в README добавлен раздел, который объясняет
механизм и даёт способы проверить, не доверяя автору на слово.

Что написано:
- что увидит пользователь: SmartScreen на Windows, детекты у части движков на
  VirusTotal;
- почему: неподписанный файл проверяется эвристиками строже, а поведение —
  открыть локальный порт, объявить себя прокси и прописаться в настройки
  Telegram — совпадает с профилем прокси-троянов. Программа делает именно это,
  только по просьбе пользователя, и автоматически отличить одно от другого
  движок не может;
- что подписи не будет: сертификат это ежегодный платёж, проект бесплатный.
  Формулировка прямая, без «скоро подпишем»;
- три проверяемых пути: сверка sha256 с digest, который GitHub публикует на
  странице релиза (с командами под три ОС), открытый лог сборки в Actions с
  указанием конкретного run и коммита, сборка из исходников одной командой;
- если этого недостаточно — не запускать, и это названо нормальным решением, а
  не паранойей, со ссылкой на альтернативу.

Конкретные числа детектов не приводятся: они меняются от сборки к сборке и со
временем, обещать «4 из 59» значит закладывать в документацию то, что устареет.

Соответствующие пункты обновлены в ARCHITECTURE_V2.md (Current limitations) и
в статусе ISSUE_AUDIT.md — там это было записано как открытый вопрос,
требующий покупки сертификата, теперь как принятое решение.

Co-authored-by: by-sonic <171230345+by-sonic@users.noreply.github.com>
This commit is contained in:
Никита Sonic
2026-07-30 14:15:47 +03:00
committed by GitHub
parent f03e9106ee
commit 59b9cdd68c
3 changed files with 51 additions and 7 deletions
+6 -3
View File
@@ -23,9 +23,12 @@
> `v2.0.0-beta.2` она пересобрана универсальным `.dmg`.
> - #9 (Android) остаётся единственным открытым — backlog без сроков.
>
> Единственная претензия из публичного обсуждения, которую нельзя закрыть
> кодом: инсталлятор не подписан, из-за чего часть антивирусов на него
> реагирует. Требует покупки сертификата.
> Претензия из публичного обсуждения, которую нельзя закрыть кодом: инсталлятор
> не подписан, из-за чего часть антивирусов на него реагирует. Решение принято
> и зафиксировано: подписи не будет, сертификат — ежегодный платёж, а проект
> бесплатный. Вместо неё в README описан механизм срабатывания и три
> проверяемых пути — сверка `sha256` с публикуемым GitHub digest, открытый лог
> сборки в Actions и сборка из исходников одной командой.
>
> Дополнительно исправлено то, чего в issues не было: коллизия MTProto-init с
> байтом `0x05` (одно соединение из 256 уходило в SOCKS5-ветку и умирало),