В рубрике DOU Проекторвсе желающие могут презентовать свой продукт (как стартап, так и ламповый pet-проект). Если вам есть о чем рассказать — приглашаем поучаствовать. Если нет — возможно, серия вдохновит на создание собственного made in Ukraine продукта. Вопросы и заявки на участие присылайте на editors@dou.ua.
Здравствуйте! Меня зовут Максим Хомутин, и последние 4 года я работаю IT-стартапером. Раньше я работал акционером и директором портала I.UA. Вместе со мной тянут соху мои коллеги и братья по оружию — Денис Мисько, Виталий Хранивский и Ярослав Слободянюк. Все — ключевые члены команды создателей I.UA, да что там I.UA — мы даже Bigmir.netеще вместе делали. Наша компания называется Final Level, что символизирует сложность и эпичность решаемых задач. :)
Хотим представить уважаемой аудитории DOU нашу последнюю разработку — сервис безопасной передачи данных encrypt.one.
Идея
Все, как это часто бывает, началось с проблемы. В переговорах по одному из проектов нам часто приходилось обмениваться конфиденциальными документами и данными, а поскольку у нас был подписан очень злой NDA — нас этот процесс очень волновал. Мы стали искать на рынке решения, которые бы полностью исключали любые возможности доступа третьих лиц, и не смогли такие решения найти.
Передача паролей через мессенджеры, флешки или сервисы хранения файлов — Google Drive или Dropbox — небезопасна. Мессенджер или аккаунт одного из звеньев передачи информации могут взломать и приватные данные попадут к злоумышленникам. Кроме того, существующие сервисы передачи паролей вроде OneTimeSecret из-за отсутствия шифрования на стороне пользователя подвержены рискам взлома и не предоставляют возможности передавать файлы.
Ну а так как в наше время спокойно себя чувствовать не может даже президент США (русские хакеры не дремлют), мы решили озаботиться решением проблемы абсолютно невзламываемого сервиса передачи секретных данных. Так появился encrypt.one.
Основная задача сервиса — пересылка любой секретной текстовой информации (паролей от сервисов, данных кредитных карт) а также небольших файлов до 5 Мб, при этом бонусом encrypt.one предлагает уверенность, что пересылаемые данные не попадут к третьей стороне.
Реализация
Реализация проекта заняла около четырех недель, из них полторы недели ушло на backend development, остальное время потратили на разработку сайта, А/В тесты интерфейса и т.д.
Backend написан на Go, для шифрования на стороне браузера использовалась библиотека github.com/brix/crypto-js, для генерации паролей и ключей используется crypto API браузера. Хранение написано как интерфейс, соответственно можно использовать какие угодно системы хранения. На данный момент реализовано хранение в памяти и на диске.
Для сохранения файлов на стороне пользователя использовались blob URL по средствам URL.createObjectURL(), что позволило расшифровывать данные на стороне пользователя и сохранять файлы большого размера.
Само шифрование организовано по стандарту AES-256 (Advanced Encryption Standard), который Агентство Национальной Безопасности США относит к уровню «Совершенно Секретно». Для взлома AES-256 методом подбора современному компьютеру понадобится несколько миллиардов лет, этот стандарт используется в банковских системах и не был взломан ни разу за всю историю криптографии.
Для шифрования используется либо введенный пароль, либо случайно сгенерированный ключ который помещается в хеш-часть ссылки и не передается на сервер. Браузер получателя ссылки расшифровывает информацию непосредственно на компьютере пользователя при помощи введенного пароля или ключей из хеш-части ссылки. После первого просмотра информация удаляется с сервера.
Исходный код encrypt.one доступен на Github.
Сейчас над проектом работают: Денис Мисько — основной идеолог и разработчик проекта, Ярослав Слободянюк — дизайн, верстка, Виталий Хранивский — фронтенд разработка, ну и я занимаюсь скучными вопросами маркетинга и общего менеджмента.
Результаты
В итоге у нас получился компактный и лаконичный сервис, основная особенность которого состоит в том, что все данные шифруются ключом на стороне браузера и только после этого передаются на сервер. Как результат, на сервер передается зашифрованная информация, которую не смогут расшифровать ни сотрудники сервиса, ни русские хакеры, которые теоретически могут получить доступ к базе данных, так как у них нет ключа для расшифровки.
Поскольку проект стартовал совсем недавно, похвастаться миллионными аудиториями мы, к сожалению, пока не можем. В среднем, в сутки сервисом сейчас пользуется порядка 1000 человек. Увеличивать эту цифру с помощью маркетинга или PR планируем позже. Наш основной план на сегодня — получить обратную связь от пользователей и понять, в каком направлении стоит развивать encrypt.one в дальнейшем, ведь останавливаться на текущем функционале мы не хотим.
Что касается монетизации, видим один из путей развития в корпоративном сегменте, хотим довести продукт до «коробки», чтобы компании могли поднимать его на своем оборудовании и решать вопрос внутреннего обмена конфиденциальной информацией.
Будем очень благодарны отзывам и комментариям читателей, спасибо за внимание!