diff --git a/doc/dm_devgroup_plan.txt b/doc/dm_devgroup_plan.txt index e8ce5d5c7..642a01b1a 100644 --- a/doc/dm_devgroup_plan.txt +++ b/doc/dm_devgroup_plan.txt @@ -2,7 +2,8 @@ ====================================== Дата: 03.11.2026. Ветка реализации: feature/dm-devgroups. -Статус: согласованная схема; выполнение этапов отмечается ниже. +Статус: реализация начата; до изменения протокола требуется решить вопрос +доступа после выхода из подгруппы (раздел 9). Выполнение этапов отмечается ниже. 1. Два режима беседы ------------------- @@ -203,3 +204,27 @@ Qt/Android/headless получают итоговый conv_id от ядра и [ ] Обновить нормативную документацию; выполнить целевые DM/devgroup тесты, Qt/Android проверки и полный ./check.sh. Известные исходные отказы из doc/tasks.md отделять от новых регрессий. Итог фиксировать с логами. + +9. Обнаруженный вопрос: выход из подгруппы +---------------------------------------- +chat_devgroup_leave → cd_commit удаляет devgroup_local, включая приватный +X25519 ключ подгруппы (src/chat/chat_devgroup.c). Стороны GROUPS закреплены, +а упаковка F_private адресована этому ключу. Поэтому после выхода без +дополнительного хранения секретов нельзя расшифровать ни ещё не скачанные +вложения, ни ранее адресованные, но ещё не полученные сообщения. +Неявное переключение старой беседы на DEVICE неверно: это другие ключи и ID. + +Нужен выбор поведения: +А. Сохранять прежний X25519 ключ локально для отложенной доставки по исходному + snapshot; ключ подписи подгруппы для этого сохранять не требуется. +Б. Выход завершает получение старой GROUPS-беседы; оставляем читаемыми только + уже сохранённую историю и доступные вложения. Для этого локально сохраняем + необходимые ключи конкретных бесед/вложений до удаления группового секрета. + +Это также выбор доступа, а не только удобства: существующий выход не меняет +ключи на остальных устройствах. Сохранённый групповой X25519 секрет технически +подходит и для будущих шифротекстов этой группы; строгий криптографический +отзыв требует отдельного протокола ротации ключей, которого сейчас нет. +Пока решение не принято, протокол/рабочая доставка не изменяются. По правилу +AGENTS.md об остановке при обнаруженной несогласованности завершается только +проверка подготовленного модуля идентичностей и снимков адресатов. diff --git a/doc/tasks.md b/doc/tasks.md index 660886a65..8ac885c5b 100644 --- a/doc/tasks.md +++ b/doc/tasks.md @@ -10,6 +10,8 @@ Снимок адресатов, per-device ACK и mailbox fallback; отдельная пара ключей вложения и две упаковки, P2P/RTT-выбор источника, настройки автозагрузки и политика M: открытие либо загрузка всеми получателями/TTL. Согласованный план и этапы: [dm_devgroup_plan.txt](dm_devgroup_plan.txt). + До изменения протокола уточнить доступ после выхода из подгруппы: сейчас выход удаляет её X25519 секрет, + необходимый для отложенных сообщений и вложений. Варианты и последствия — раздел 9 плана. [+] **Связывание личных устройств: явное меню и два PIN** — 03.11.2026. Qt/Android: «Это моё устройство» только для чужого устройства без подгруппы с живым BGP; пояснение и явная кнопка «Связать».