Идея для сервиса, как это часто бывает, родилась из неудовлетворенной потребности. Мне часто кто-то скидывает конфиденциальную информацию, например FTP доступы, через незащищенный канал. Если людям, с которыми общаешься часто, еще можно объяснить, что такое шифрование, и какой софт нужно для него ставить, то навязывать свою паранойю случайным собеседникам — дело неблагодарное.
Так появился на свет Otr.to — браузерный p2p чат с OTR шифрованием. Что бы начать общаться, достаточно зайти на главную страницу, скопировать сгенерированную ссылу и скинуть ее собеседнику. Чат начнется как только он ее откроет.
Проект с открытым кодом, все сделано на Javascript, так что желающие легко могут убедится что чат действительно p2p и на сервер сообщения не уходят.
По многочисленным просьбам трудящихся Otr.to стал обрастать дополнительными сервисами.
Самоуничтожающееся зашифрованное сообщение. Может понадобится когда нужно отправить что-либо человеку который в данный момент не в сети, либо просто лень начинать чат. Сообщение шифруется на стороне клиета Javascript-ом при помощи AES256 алгоритма. Получатель расшифровывает его уже в своем браузере. Можно скинуть ссылку и ключ разными каналами.
Аналогичным образом работает зашифрованная передача файлов. Файл шифруется в браузере перед загрузкой. Так что даже тот, кто имеет доступ к серверу, содержимое файла прочитать не сможет, т.к. ключи на сервер не уходят.
Хочу отметить что Otr.to — это не очередной убийца Skype — это даже не мессенджер, просто инструмент, позволяющий сделать общение безопаснее, не отказываясь от привычных средств коммуникации.
Комментарии (36)
NeverWalkAloner
02.07.2015 15:47+1Идея классная, только что то у меня не получается создать чат.
Подскажите, пожалуйста, куда надо тыкнуть, чтобы сгенерировать ссылку. Вижу вот такую надпись:, при нажатии кнопки connect появляется ошибка «Error: Could not get an ID from the server. If you passed in a `path` to your self-hosted PeerServer, you'll also need to pass in that same path when creating a new Peer… Type:server-error».extempl
02.07.2015 16:00Кнопка коннект нужна если у вас есть ID собеседника.
А вот собственный ID вместе со ссылкой не создаются, да. Через некоторое время внизу появляется пара ошибок, текст которых приведён выше.
parol Автор
02.07.2015 16:07Ошибка очень редко, но возникает, например на FF c MacOS. Если честно, еще не нашли как ее победить. Пока остается попробовать другой браузер.
Rondo
02.07.2015 16:22+1Windows 7, FF и Chrome, такая же ошибка
у меня виснет запрос https://otr.to:9000/peerjs/id?ts=<тут длинный unix-timestamp c дробной частью после точки>
(но может быть это проблема моего провайдера, уже замечал проблемы с нестандартными портами)
vsb
02.07.2015 16:07+2А как я могу быть уверенным, что вы мне не подсунете другой JavaScript? Если с программой можно проверить хеш, подпись, то тут ничего не проверишь. Браузер мне не скажет, что сегодня скрипты не такие, как вчера. Это самая главная проблема всех браузерных криптоприложений, как мне кажется.
parol Автор
02.07.2015 16:16Тут не поспоришь, проверять JavaScript каждый раз затруднительно. Единственное что могу возразить, если начнет отдаваться другой код, рано или поздно кто-то из пользователей это заметит и сервис будет скомпрометирован.
hellman
02.07.2015 16:30+1Отличная статья в тему — Javascript Cryptography Considered Harmful
ValdikSS
04.07.2015 19:16+2Я тоже не особый сторонник браузерных приложений в целом и криптографии в частности, но, на самом деле, сейчас уже все гораздо лучше. Раньше большинтво противников криптографии в браузере жаловались, как правило, не на скорость выполнения или возможность side-channel атак, а на возможность подменить страницу (даже если с HTTPS, скажем, кто-то выпустил второй сертификат), а раз можно подменить страницу, то и криптография бессильна. Есть, например, замечательный проект Subrosa, который представляет из себя шифрованный peer to peer мессенджер в браузере (есть, кстати, даже груповые аудио и видеозвонки, рекомендую!), который настоятельно предлагает пользователю запускать его локально, чтобы, в случае чего, никто не мог подменить страницу по сети. В инструкции упомянуты и специальные заголовки, которые запрещают браузеру загрузку любого стороннего контента, если вдруг где-то обнаружится XSS.
сс: vsbvsb
04.07.2015 21:30Ну HTTPS подразумевается по умолчанию. Выпуск второго сертификата в какой-то степени предотвращается заголовком public-key-pins. Но всё равно всё упирается в добросовестность сервера. Придут к автору сайта дяденьки, расскажут ему грустную историю про то, сколько он будет сидеть за содействие терроризму и предложат бесплатную помощь по модификации серверного ПО в плане отслеживания юзера с айпишником 1.2.3.4. Или придут к админу хецнера какого-нибудь.
istui
02.07.2015 16:42+1Все зависит для чего это использовать. Если просто требуется передать логин/пароль по работе через публичный вайфай, так, чтобы кулхацкер не смог их увидеть — это одно, здесь сервис вполне состоятелен. Если же данные действительно содержат важную личную информацию — используйте другие способы передачи, в которых вы уверены — это же написано во всех учебниках…
alexriz
02.07.2015 17:01+1Прошу прощения, возможно я что-то не понимаю. Но одному мне кажется странным, передача ссылки-ключа к зашифрованному каналу связи через открытый канал связи?
parol Автор
02.07.2015 17:09Если вы про чат, то там в ссылке содержится ID а не ключ. Если про сообщения или файлы, ничто не мешает скинуть ссылку через скайп а ключ смс например. К тому же сообщения самоуничтожающиеся, т.е. прочитать можно только один раз.
Revertis
02.07.2015 17:19Опишите чуток подробней как передается ключ от одного пользователю другому. Он летит через сервер? Или хранится на сервере и потом по айдишнику чата вынимается из базы? Если так, то это какой-то ужас…
pravic
02.07.2015 21:05Самоуничтожающееся зашифрованное сообщение
Какие гарантии самоуничтожения?
И исходный код только клиентской части открыт, не так ли?Assada
02.07.2015 22:15Так серверной части нет. p2p
Проект с открытым кодом, все сделано на Javascript, так что желающие легко могут убедится что чат действительно p2p и на сервер сообщения не уходят.
parol Автор
02.07.2015 23:32p2p только чат, самоуничтожающиеся сообщения и загуженные файлы хранятся на сервере, пока их не просмотрят или скачают.
parol Автор
02.07.2015 23:35гарантий нет, но даже если бы мы их хранили, прочитать бы не смогли т.к. ключ на сервер не уходит, все шифруется в браузере.
Lexxtor
07.07.2015 16:23+1Когда хочу прочитать самоуничтожающееся сообщение, нажимаю «get message», оно расшифровывается, нажимаю еще раз и оно исчезает. Баг. Не должно исчезать. Даблклик ведь и нечаянный бывает.
mwizard
А какие преимущества по сравнению с Cryptocat?
Я не заметил в статье ссылки на репозиторий — почему вы считаете, что ваша реализация OTP корректна? И почему вы считаете, что сервер не сохраняет копии сообщений открытым текстом? :)
UPD. Ссылка на репозиторий есть на самом сайте, но скрыта под спойлер. Вопрос про корректность реализации все еще в силе.
parol Автор
Cryptocat требует устанавливать расширение, насколько мне известно. Значит и собеседнику нужно объснять что это и просить установить. В случае с Otr.to нужно просто скинуть ссылку.
При большом желании можно посмотреть какую информацию, в каком виде и куда отправляет браузер.
По поводу реализации OTR- используется github.com/arlolra/otr целосноность ее можно проверить.
Temych
+ вроде у криптокошки нет «Secure File Sharing»