EnotApp: как из личной проблемы получился софт для защищенного хранения
За первое полугодие 2022 количество записей персональных данных, попавших в свободный доступ, превысило по размеру население России. Пароли, важные документы, базы клиентов стали общим достоянием. Рассказываю, какой продукт для безопасного хранения любой информации мы разрабатывали в 2022 году, и что получилось.
Немного предыстории или зачем изобретать велосипед
Меня зовут Альберт, я работаю в сфере инфобеза. Ежедневно по работе нужно обрабатывать много данных: пароли, списки сетевых ресурсов организаций, идеи, рассуждения, оценки ситуаций и прочее. Всё это нужно записывать и хранить. Самый удобный формат для меня - заметка. Записал, к примеру, идею новой функции, сохранил, а потом в нужный момент перечитал.
На фоне новостей о сливе конфиденциальной информации (утечки пользовательских данных у Ростелеком и Geekbrains и других), а также в связи с высокой вероятностью ухода с рынка зарубежных сервисов, у меня возник вопрос, где хранить свои заметки.
Перед тем, как начать поиск, набросал основные критерии идеального для меня приложения с точки зрения безопасности:
- Хранение только в облаке, а не локально.
- Шифрование данных должно осуществляться на стороне клиента.
- Кроссплатформенность, независимость от Play Market и AppStore.
- Возможность хранить в заметке не только текст, но и прикрепить аудио, видео, изображения и иные файлы.
Начал изучать варианты.
Увы, популярные решения для хранения данных мне не подошли.
И вот почему:
- Notion - не использует шифрование данных. Сразу отмел этот вариант.
- Evernote - тоже мимо. Он позволяет шифровать только часть заметки. Файлы, изображения, списки, чек-лист, таблицы зашифровать нельзя.
- В OneNote есть возможность шифрования, но документы придется сохранять локально и отправлять в свое облако.
- Хранить данные в криптографическом контейнере типа VeraCrypt тоже неудобно. Во-первых, придется устанавливать ПО на все используемые устройства. Во-вторых, каждый раз или носить с собой контейнер с информацией, или его откуда-то скачивать. В-третьих, нужно еще как-то синхронизировать данные. Очень сложно, короче.
Можно, конечно, взять любой хостинг и хранить информацию в архивах 7-Zip с длинным паролем. Но о комфортной работе на всех устройствах тогда можно забыть. Придется скачивать архив, вводить пароль, распаковывать и после работы с информацией совершать обратные действия. Опять очень сложно.
Так и не нашел для себя идеальный сервис, пришел к идее, что есть потребность создать собственное решение, которое полностью будет отвечать заявленным выше критериям. Так появился EnotApp.
Бот для шифрования
EnotApp (Encrypted NOTes APPlication - вот такая аббревиатура) - сервис зашифрованных заметок на основе Telegram-бота.
Если у вас уже есть Telegram, дополнительно ничего скачивать и устанавливать не нужно. Предполагаю, что у читателя этой статьи Telegram уже есть.
Контент перед отправкой на сервер шифруется на устройстве пользователя. Это значит, что никто, кроме вас, не сможет прочитать текст, увидеть названия папок, заметок и хэштегов.
Зашифровать можно не только текст, но и картинку, аудио, видео и другие файлы. Срочно нужно сохранить важный документ? Не вопрос. Прикрепляете его к заметке и он зашифровывается автоматически.
Чем отличается наш веб-телеграм-бот от других подобных сайтов? Тем, что для регистрации и авторизации нам не нужны личные данные пользователя. Используется только Telegram id.
Текущая версия EnotApp работает на серверах дата-центра в РФ. Это сделано по нескольким причинам. Во-первых, чтобы избежать блокировки сервиса (как уже сотни сервисов заблокировали по гео-признаку) политически и проблем с приемом оплат. А во-вторых, чтобы быстро расширить ресурсы, если количество пользователей резко увеличится.То есть убиваем двух зайцев сразу: обеспечиваем приложению стабильную работу и устойчивость от внешних недружественных воздействий. Ну и в-третьих, используемые дата-центры удовлетворяют требованиям к защите персональных данных.
Интерфейс приложения интуитивно понятен. Напоминает работу со стандартным проводником любой известной операционной системы. Хранилище приложения состоит из дисков, а на дисках располагаются папки и заметки.
Мы с командой вдохновлялись https://mega.io и https://privnote.com, так что общую логику удобства постарались заимствовать оттуда, она уже явно проверена десятками итераций.
EnotApp оптимизирован для работы с мобильных устройств. При первой загрузке вес составляет 500 кб, при повторной снижается до 100 кб.
Для чего полезен EnotApp
Пригодится всем, кто хочет перестать беспокоиться о безопасности данных. Начиная от паролей к соцсетям и заканчивая важными рабочими файлами.
Вот несколько вариантов применения:
- Если храните на устройствах сканы документов (актуально для менеджеров по работе с юридическими лицами).
- Если устали от бана сервисов по географии и хотите перейти на локальное ПО.
- Если хотите сохранить списки подарков в тайне.
- Если планируете сохранить компрометирующие переписки и контакты (не одобряю такое поведение, но статистика разводов красноречивая).
- Если хотите сохранить в тайне учет доходов-расходов.
- Если делаете бэкапы (небольшие по объему документы, фото, сканы).
Как хранятся данные
После регистрации пользователь создает диск и задает ему пароль. На основе введённого им пароля, генерируется криптографический ключ, который в дальнейшем будет использоваться для шифрования.
Шифрование заметок производится на стороне пользователя. Доступа у администрации ресурса к зашифрованному контенту нет. Каждая запись шифруется рандомным криптографическим ключом, который в свою очередь зашифрован ключом от диска.
При этом сами заметки состоят из нескольких зашифрованных файлов, размер которых не превышает 1 Мб. На всякий случай поясню подробнее.
Заметка состоит из частей (текст, картинки и т.п.). Каждая часть заметки хранится в виде одного или нескольких файлов (их еще называют chunks - кусочки, “чанки”). Размер такого чанка не превышает 1 Мб.
Чтобы прочитать заметку, надо сначала расшифровать криптографический ключ к ней, раскодировать полученным ключом каждый из файлов, а затем собрать их в единое целое. И только после этого откроется содержимое.
При первом запуске телеграм-бота будет показано предупреждение о том, что IP-адрес станет доступным владельцу Телеграм-бота. Почему это происходит? Каждый веб-телеграмм-бот - это сайт. Все сайты в интернете, хотят они этого или нет, работают с IP-адресами пользователей, а также знают информацию о браузере.
На самом устройстве контент заметок тоже зашифрован, расшифрованы имена папок и файлов. Для безопасности хранения информации на нем есть кнопка “Очистить кэш”. Нажав ее, вы стираете локальные данные.
При регистрации и авторизации личные данные (адреса электронной почты или номера телефонов) не используются. Хотя вы при регистрации уже отдали номер телефона Телеграму, но это уже неизбежный компромисс между безопасностью и удобством использования.
Что еще есть в EnotApp
- Заметки поддерживают ввод форматированного текста в разметке markdown. Если вам не нужно форматирование, его можно отключить.
- Фотографии сжимаются автоматически.
- Для быстрой навигации по диску можно добавить папку или заметку в раздел “Избранное”, кликнув на значок с сердцем.
- Для заметок можно задавать хэштеги. Если хэштег потерял актуальность, его можно переименовать. После этого он автоматически изменится у всех заметок.
- При сохранении заметки не нужно дожидаться, когда данные будут отправлены на сервер. Даже если пропал Интернет или вы случайно закрыли приложение, данные не удаляться, а будут отправлены на сервер при следующем запуске.
- Данные в приложении грузятся очень быстро, так как скачивание осуществляется в 4-6 потоков одновременно.
- Диск размером 25 Мб предоставляется бесплатно каждому пользователю. Для хранения текстовой информации этого вполне хватит. Если места мало, то емкость можно увеличить или создать новый диск.
- Виртуальных дисков может быть несколько. Для создания нового виртуального диска нужно в разделе “Хранилище” нажать на кнопку “Новый диск”.
- Веб-приложение EnotApp работает на всех устройствах, а также в веб-версии Telegram Z. Есть небольшие отличия его работы на различных устройствах. Так, на IPhone и IPad доступна опция “Поделиться”: можно зайти в заметку и поделиться текстовым контентом или фото с другими приложениями, например, Telegram или WhatsApp. А в версии на Android текущие разрешения для веб-телеграм ботов не позволяют выбрать несколько фотографий. Только одну.
- Опция скачать заметку как файл в виде архива доступна пока только в десктопной версии.
Первые результаты и как попробовать
Я предложил знакомым и коллегам протестировать - и получил много комплиментов. Варианты применения, которые я выше описал, составлены отчасти на основе этой обратной связи.
Продукт полностью функционален, и сейчас я показываю его в публичном поле первый раз. Еще даже лендинг пока в процессе разработки.
Мы сделали фримиум - 25 мб хранилища бесплатно для всех. Это больше, чем знаменитое “640 килобайт должно хватить каждому”, и для большинства пользователей этого достаточно.
Если же будете хранить экранку фильма “Аватар 2”, то мы скоро планируем прикрутить недорогие тарифы с дополнительным дисковым пространством.