Как мы внедрили скрытие аккаунтов в Telegram или #ДуровДобавьДвойноеДно
Если анимация не воспроизводится, смотрите её здесь.
Здравствуйте, Павел Дуров! Мы надеемся, что Вы нашли время ознакомиться с данным открытым письмом. Мы разработали решение для Telegram-клиента, которое позволяет скрывать аккаунты и открывать их только через уникальный код-пароль (см. анимированное превью). Нет никаких следов присутствия скрытых аккаунтов. Невозможно узнать, есть ли в мессенджере скрытые аккаунты и какое их количество. Решение именуется как «Двойное дно».
Все нюансы были тщательно нами продуманы, а сам Telegram-клиент с точки зрения интерфейса и пользовательского опыта никак не изменился. Практически никаких доработок со стороны команды Telegram не требуется. «Двойное дно» сделано полностью «под ключ», Вам нужно лишь принять наш «Pull Request» в Вашем репозитории. Перед тем как отправить «Pull Request», мы возьмем несколько дней на сбор обратной связи от пользователей, чтобы исправить мелкие недочеты. Для ознакомления Вы можете установить нашу сборку через TestFlight, а если под рукой нет iOS-устройства, то посмотреть видео. Исходный код сборки доступен на GitHub.
«Двойное дно» выручит в ситуациях, когда пользователь будет вынужден разблокировать и показать содержимое Telegram. А будет вынужден, потому что его пытают, его шантажируют, на него давят. Так совпало, что это письмо пишется в тот момент, когда в Беларуси происходит беспредел. Силовики подходят к прохожим, просят показать Telegram, если там находят оппозиционные каналы, то людей увозят в отдел. Сообщения о том, что силовики в Беларуси требуют «показать» телефон, периодически мелькают в СМИ. Данная ситуация в Беларуси дает четкий сигнал о том, что в «Двойном дне» есть крайняя необходимость.
Ноль байт выданных личных данных, секретные чаты, борьба с цензурой — и всё это несмотря на давление разных стран. Вы создали действительно качественный и уникальный продукт. Основной упор в Telegram делается на защиту хранения и передачи данных, но очень мало делается для защиты от прямого (физического) доступа к устройству и пользователю. Это касается не только Вашего мессенджера, в принципе, ни в одном мессенджере нет защиты от подобной «атаки». Мы предлагаем Вам первым открыть новую страницу защиты приватности пользователя, добавив принцип «Двойного дна» в Telegram-клиент.
Еще раз хотим подчеркнуть, что при разработке «Двойного дна» мы придерживались принципа не менять пользовательский интерфейс и опыт (UX/UI). Помимо этого, был принцип проработать все детали таким образом, чтобы команде Telegram не пришлось ничего дорабатывать. Считаем, что соответствуем принципам на 99%.
Мы готовы тесно взаимодействовать по улучшению и доработке «Двойного дна». Предоставить всю необходимую информацию. По всем вопросам мы доступны здесь.
Ниже Вы можете ознакомиться с детальным описанием механизма работы «Двойного дна» в Telegram-клиенте.
С большим уважением, Бекхан Гендаргеноевский / Команда Postuf.
Подробное описание «Двойного дна» в Telegram-клиенте
Предисловие
Помогите нам распространить хештег #ДуровДобавьДвойноеДно в социальных сетях, чтобы Павел Дуров обратил внимание на открытое письмо. Сейчас он активно ведет свой Твиттер-аккаунт, поэтому, по возможности, оставьте ему комментарий.
Функционал «Двойного дна» интуитивно понятен, он максимально упрощен для пользователя, но если вы хотите знать все детали, то текст ниже для вас.
Самая актуальная информация по обновлениям на нашем канале. О недочетах пишите в чат.
Двойное дно
Скрывает аккаунты, нигде их не отображает. Скрытые аккаунты не видят друг друга, основные аккаунты видят только основных. О существовании скрытого аккаунта знает только сам владелец устройства.
Как попасть в скрытые аккаунты
Скрытые аккаунты не отображаются в общем списке аккаунтов, доступ к ним только через ввод код-пароля в режиме блокировки Telegram-клиента. Количество скрытых аккаунтов «Двойным дном» не ограничено.
Активация
Если анимация не воспроизводится, смотрите её здесь.
Кнопка «Двойное дно» находится в «Настройках», в разделе «Конфиденциальность». Скрыть аккаунт можно только в первую минуту после авторизации аккаунта в Telegram-клиенте. По истечению времени кнопка пропадает из «Настроек». Чтобы снова увидеть кнопку, нужно заново авторизоваться. Временно́е ограничение позволяет скрыть факт активации «Двойного дна». Если бы кнопка не пропадала, то по ней можно было бы понять, активировано ли «Двойное дно». Это дает возможность показывать злоумышленнику любой аккаунт без намека на то, что имеются другие скрытые аккаунты.
Основной аккаунт
Если анимация не воспроизводится, смотрите её здесь.
Для возможности скрыть текущий аккаунт необходимо иметь, как минимум, один основной аккаунт, который вы не будете скрывать. Если критерий уже соблюден, то «Двойное дно» не будет просить вас добавлять аккаунт.
В теории, можно иметь один и тот же аккаунт в качестве основного и скрытого. Это может быть полезно, если Вы хотите иметь в скрытом аккаунте секретные чаты, которые не будут отображаться в основном. Показ секретных чатов только в одной сессии — стандартное поведение Telegram. Мы не стали давать возможность указывать в качестве основного аккаунта тот аккаунт, который вы в данный момент уже пытаетесь скрыть (защита от дурака), но вам ничего не мешает добавить тот же аккаунт заново через стандартный способ в настройках. Для безопасности, помешать Вам это сделать мы не можем, так как система может «спалить» факт присутствия скрытого аккаунта, если Telegram-клиент будет выдавать предупреждение.
Основной код-пароль
Если анимация не воспроизводится, смотрите её здесь.
Вам нужно указать код-пароль для всех аккаунтов, которые не будут скрыты в приложении (основные аккаунты). Его вы будете указывать при входе, если захотите получить доступ к основным аккаунтам.
Устанавливается минимальное время автоблокировки приложения (одна минута). Если код-пароль уже был ранее установлен вами в настройках Telegram-клиента, то «Двойное» дно не будет вас просить его установить. Основной код-пароль можно в любой момент поменять в настройках (Стандартный функционал Telegram).
Основной код-пароль можно отключить в настройках (Стандартный функционал Telegram). В таком случае, для безопасности «Двойное дно» не воспрепятствует этому, никаких предупреждений не будет. Основные аккаунты будут доступны без ввода код-пароля. Скрытые аккаунты никуда не пропадут, но будут недоступны для использования. От них не будут приходить уведомления в конкретно взятом Telegram-клиенте, а звонки будут отключены на всех устройствах, где авторизованы скрытые аккаунты (Технически невозможно со звонками провернуть как с уведомлениями без помощи команды Telegram).
Скрытый код пароль
Если анимация не воспроизводится, смотрите её здесь.
Здесь мы устанавливаем код-пароль для аккаунта, который хотим скрыть. Формат пароля зависит от того, какой он был задан при установке основного код-пароля. Например, если вы указали в основном четырехзначный код-пароль, то в скрытом будет тот же формат.
Скрытый код-пароль нельзя изменить после завершения скрытия аккаунта. Единственный способ — заново добавить аккаунт в Telegram-клиент и активировать «Двойное дно».
Интересный момент, если в будущем в настройках вы поменяете формат код-пароля для основных аккаунтов, то вы не сможете попасть в скрытые аккаунты. При этом доступ к ним вы не потеряете, но и попасть в них вы не сможете до тех пор, пока не вернете «правильный» формат. Таким образом, вы можете иметь несколько скрытых аккаунтов с разными форматами код-пароля. Это усложняет поиск скрытых аккаунтов, так как они могут присутствовать в нескольких «измерениях».
«Двойное дно» не позволит вам установить для скрытого аккаунта такой же код-пароль как у основных, но в будущем вы все равно сможете это сделать в настройках (Стандартный функционал Telegram). В таком случае по данному код-паролю будут доступны основные аккаунты, а скрытый станет неактивным. Доступ к нему будет невозможен до тех пор, пока вы не поменяете код-пароль для основных аккаунтов на любой другой.
Если вы укажете код-пароль, который уже используется для другого скрытого аккаунта, то для безопасности «Двойное дно» этому не воспрепятствует. По данному код-паролю будет доступен крайний (последний) скрытый аккаунт, а предыдущий скрытый аккаунт будет недоступен до тех пор, пока крайний (последний) не будет разлогинен в приложении.
Уведомления и звонки
Если анимация не воспроизводится, смотрите её здесь.
Так как уведомления и звонки могут выдать присутствие скрытого аккаунта, «Двойное дно» дает возможность отключить их для скрываемого аккаунта. Но есть нюанс, Telegram применяет данные настройки на все устройства, где авторизован аккаунт (Стандартный функционал Telegram). Это касается только мобильных устройств.
Счетчик уведомлений на иконке не будет учитывать скрытые аккаунты, так как при сворачивании Telegram-клиента в системе происходит переключение на последний основной аккаунт.
- Настройки —> Уведомления и звуки —> Уведомления о сообщениях —> Показывать уведомления —> Выкл.
- Настройки —> Уведомления и звуки —> Уведомления от чатов —> Показывать уведомления —> Выкл.
- Настройки —> Уведомления и звуки —> Уведомления от каналов —> Показывать уведомления —> Выкл.
- Настройки —> Конфиденциальность —> Звонки —> Кто может мне звонить —> Никто
Мы понимаем, что без уведомлений пользоваться скрытыми аккаунтами некомфортно. Компромиссным вариантом было бы получать уведомления от скрытых аккаунтов только в «безымянном» виде, и только когда все сообщения Telegram приходят в таком же виде. Telegram в «безымянном» виде присылает уведомления, когда клиент заблокирован код-паролем. Получается следующее: Когда Telegram-клиент заблокирован, получаем уведомления от всех типов аккаунтов в «безымянном» виде, а когда разблокирован, то только от основных аккаунтов. Безусловно, такой алгоритм является зацепкой к обнаружению скрытого аккаунта, но это лучше, чем в открытую показывать уведомления в условиях, когда пользователю они необходимы. К сожалению, реализовать такой алгоритм без поддержки Telegram команды — невозможно.
Замочек
Если анимация не воспроизводится, смотрите её здесь.
Telegram-клиент не дает возможности установить мгновенную автоблокировку после выхода из приложения. Минимальное время, которое можно установить в настройках — одна минута. Мы не стали добавлять мгновенную автоблокировку, чтобы сохранить Telegram-клиент в первозданном виде.
Здесь имеются два важных момента:
- Первый, если вы свернете Telegram-клиент, будучи в скрытом аккаунте, то при входе обратно в приложение до автоблокировки вас перекинет на основной аккаунт. Если основных аккаунтов несколько, то на последний использованный.
- Второй, если вы вошли в приложение, а автоблокировка еще не сработала, то вы можете сами заблокировать приложение, нажав на замочек над чатом (см. анимацию). Я сам лично узнал об этой функции только после начала разработки «Двойного дна», в том числе поэтому мы посчитали нужным уделить этому дополнительный экран с анимацией.
Финал
Если анимация не воспроизводится, смотрите её здесь.
Это финальное окно, которое означает, что настройки успешно применены.
Если вы начнете идти «назад», то настройки будут сбрасываться к предыдущему состоянию. Например, если вы указали основной код-пароль, но потом снова вернулись в состояние, где нужно добавить основной аккаунт, то основной код-пароль сбросится.
Если вы на полпути закроете Telegram-клиент, то «Двойное дно» откатит все изменения, но основной аккаунт (если вы его добавили) останется авторизованным.
Разлогирование (logout) аккаунта
При разлогине из основного аккаунта происходит перенаправление на другой основной аккаунт, а если это был единственный основной, то Telegram-клиент попросит авторизоваться (стандартное поведение Telegram).
При разлогине из скрытого аккаунта происходит перенаправление пользователя на экран блокировки для ввода код-пароля.
В последний момент мы обратили внимание, что если пользователь покажет злоумышленнику скрытый аккаунт, а тот потребует произвести разлогин этого аккаунта, то увидит иное поведение Telegram-клиента, соответственно, может тем самым понять, что был показан скрытый аккаунт. Из этого сделает вывод, что возможны еще скрытые аккаунты в Telegram-клиенте. Мы сделаем обновление, в котором поведение скрытого не будет отличаться от основного при разлогине.
Когда в Telegram-клиенте отсутствует хотя бы один основной аккаунт, доступ к скрытому аккаунту приостанавливается, а его уведомления и звонки отключаются. Уведомления отключаются на конкретном устройстве, а звонки — для всех устройств, где авторизован скрытый аккаунт.
Прочие особенности
- «Двойное дно» позволяет добавлять аккаунт в Telegram-клиент, который уже присутствует в качестве скрытого. Это позволяет не выдавать присутствие активного «Двойного дна».
- Siri и Виджет не видят скрытые аккаунты, а Apple Watch может видеть скрытый аккаунт, но только если данный аккаунт открыт в Telegram-клиенте.
- Контакт, созданный в скрытом аккаунте, не добавляется в телефонную книгу устройства.
Ограничения
В нашем клиенте не доходят звонки, если сам клиент не запущен, но придет уведомление, что пропущен звонок (Технические особенности).