вторник, 7 июля 2015 г.

Самый простой способ начать зашифрованный чат

image

Идея для сервиса, как это часто бывает, родилась из неудовлетворенной потребности. Мне часто кто-то скидывает конфиденциальную информацию, например FTP доступы, через незащищенный канал. Если людям, с которыми общаешься часто, еще можно объяснить, что такое шифрование, и какой софт нужно для него ставить, то навязывать свою паранойю случайным собеседникам — дело неблагодарное.

Так появился на свет Otr.to — браузерный p2p чат с OTR шифрованием. Что бы начать общаться, достаточно зайти на главную страницу, скопировать сгенерированную ссылу и скинуть ее собеседнику. Чат начнется как только он ее откроет.

Проект с открытым кодом, все сделано на Javascript, так что желающие легко могут убедится что чат действительно p2p и на сервер сообщения не уходят.

По многочисленным просьбам трудящихся Otr.to стал обрастать дополнительными сервисами.

Самоуничтожающееся зашифрованное сообщение. Может понадобится когда нужно отправить что-либо человеку который в данный момент не в сети, либо просто лень начинать чат. Сообщение шифруется на стороне клиета Javascript-ом при помощи AES256 алгоритма. Получатель расшифровывает его уже в своем браузере. Можно скинуть ссылку и ключ разными каналами.



Аналогичным образом работает зашифрованная передача файлов. Файл шифруется в браузере перед загрузкой. Так что даже тот, кто имеет доступ к серверу, содержимое файла прочитать не сможет, т.к. ключи на сервер не уходят.

Хочу отметить что Otr.to — это не очередной убийца Skype — это даже не мессенджер, просто инструмент, позволяющий сделать общение безопаснее, не отказываясь от привычных средств коммуникации.
+30
18195
195
parol 24,0

Комментарии (36)

0
mwizard#
А какие преимущества по сравнению с Cryptocat?

Я не заметил в статье ссылки на репозиторий — почему вы считаете, что ваша реализация OTP корректна? И почему вы считаете, что сервер не сохраняет копии сообщений открытым текстом? :)

UPD. Ссылка на репозиторий есть на самом сайте, но скрыта под спойлер. Вопрос про корректность реализации все еще в силе.
0
parol#
Cryptocat требует устанавливать расширение, насколько мне известно. Значит и собеседнику нужно объснять что это и просить установить. В случае с Otr.to нужно просто скинуть ссылку.

При большом желании можно посмотреть какую информацию, в каком виде и куда отправляет браузер.

По поводу реализации OTR- используется github.com/arlolra/otr целосноность ее можно проверить.
0
Temych#
+ вроде у криптокошки нет «Secure File Sharing»
+1
NeverWalkAloner#
Идея классная, только что то у меня не получается создать чат.
Подскажите, пожалуйста, куда надо тыкнуть, чтобы сгенерировать ссылку. Вижу вот такую надпись:, при нажатии кнопки 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».
0
extempl#
Кнопка коннект нужна если у вас есть ID собеседника.
А вот собственный ID вместе со ссылкой не создаются, да. Через некоторое время внизу появляется пара ошибок, текст которых приведён выше.
0
parol#
Ошибка очень редко, но возникает, например на FF c MacOS. Если честно, еще не нашли как ее победить. Пока остается попробовать другой браузер.
+1
Rondo#
Windows 7, FF и Chrome, такая же ошибка
у меня виснет запрос https://otr.to:9000/peerjs/id?ts=<тут длинный unix-timestamp c дробной частью после точки>
(но может быть это проблема моего провайдера, уже замечал проблемы с нестандартными портами)
0
parol#
спасибо, будем разбираться.
+2
vsb#
А как я могу быть уверенным, что вы мне не подсунете другой JavaScript? Если с программой можно проверить хеш, подпись, то тут ничего не проверишь. Браузер мне не скажет, что сегодня скрипты не такие, как вчера. Это самая главная проблема всех браузерных криптоприложений, как мне кажется.
0
parol#
Тут не поспоришь, проверять JavaScript каждый раз затруднительно. Единственное что могу возразить, если начнет отдаваться другой код, рано или поздно кто-то из пользователей это заметит и сервис будет скомпрометирован.
+2
hellman#
Но вы можете выдать другой код только определенному юзеру, или только в очень короткий промежуток времени.
+1
Speakus#
Ну раз код открыт, то можно ведь поднять на своем сервере? Или какое еще решение вы предполагаете?
+1
hellman#
Отличная статья в тему — Javascript Cryptography Considered Harmful
+2
ValdikSS#
Я тоже не особый сторонник браузерных приложений в целом и криптографии в частности, но, на самом деле, сейчас уже все гораздо лучше. Раньше большинтво противников криптографии в браузере жаловались, как правило, не на скорость выполнения или возможность side-channel атак, а на возможность подменить страницу (даже если с HTTPS, скажем, кто-то выпустил второй сертификат), а раз можно подменить страницу, то и криптография бессильна. Есть, например, замечательный проект Subrosa, который представляет из себя шифрованный peer to peer мессенджер в браузере (есть, кстати, даже груповые аудио и видеозвонки, рекомендую!), который настоятельно предлагает пользователю запускать его локально, чтобы, в случае чего, никто не мог подменить страницу по сети. В инструкции упомянуты и специальные заголовки, которые запрещают браузеру загрузку любого стороннего контента, если вдруг где-то обнаружится XSS.

сс: vsb
0
vsb#
Ну HTTPS подразумевается по умолчанию. Выпуск второго сертификата в какой-то степени предотвращается заголовком public-key-pins. Но всё равно всё упирается в добросовестность сервера. Придут к автору сайта дяденьки, расскажут ему грустную историю про то, сколько он будет сидеть за содействие терроризму и предложат бесплатную помощь по модификации серверного ПО в плане отслеживания юзера с айпишником 1.2.3.4. Или придут к админу хецнера какого-нибудь.
+1
ValdikSS#
Именно поэтому авторы проекта и рекомендуют запускать все локально.
+1
istui#
Все зависит для чего это использовать. Если просто требуется передать логин/пароль по работе через публичный вайфай, так, чтобы кулхацкер не смог их увидеть — это одно, здесь сервис вполне состоятелен. Если же данные действительно содержат важную личную информацию — используйте другие способы передачи, в которых вы уверены — это же написано во всех учебниках…
0
parol#
примерно тоже самое написал, но рефрешнул перед тем как отправить
+1
parol#
-
+1
alexriz#
Прошу прощения, возможно я что-то не понимаю. Но одному мне кажется странным, передача ссылки-ключа к зашифрованному каналу связи через открытый канал связи?
0
parol#
Если вы про чат, то там в ссылке содержится ID а не ключ. Если про сообщения или файлы, ничто не мешает скинуть ссылку через скайп а ключ смс например. К тому же сообщения самоуничтожающиеся, т.е. прочитать можно только один раз.
0
Revertis#
Опишите чуток подробней как передается ключ от одного пользователю другому. Он летит через сервер? Или хранится на сервере и потом по айдишнику чата вынимается из базы? Если так, то это какой-то ужас…
+1
parol#
Согласование ключей идет напрямую между собеседниками, ключи обновляются. Подробнее здесь
–2
Methos#
Для видео-общения через браузер недавно появился zentalk.ru
–2
ZoomLS#
Давно уже есть Firefox Hello.
0
pravic#
Самоуничтожающееся зашифрованное сообщение

Какие гарантии самоуничтожения?

И исходный код только клиентской части открыт, не так ли?
0
Assada#
Так серверной части нет. p2p

Проект с открытым кодом, все сделано на Javascript, так что желающие легко могут убедится что чат действительно p2p и на сервер сообщения не уходят.
0
pravic#
`s.php` смущает: bit.ly/1KvGLaG
0
parol#
p2p только чат, самоуничтожающиеся сообщения и загуженные файлы хранятся на сервере, пока их не просмотрят или скачают.
0
parol#
гарантий нет, но даже если бы мы их хранили, прочитать бы не смогли т.к. ключ на сервер не уходит, все шифруется в браузере.
+2
zhovner#
А можно у себя захостить? Вы не обидетесь?
+3
zhovner#
Неудобно как-то, а можно еще портабл версию, чтобы из гита все сразу работало.
0
parol#
Можно
+2
varnav#
Можно подумать что при подключении по FTP эти самые «доступы» не передаются через открытый канал.
+3
deemytch#
Бывает SSL FTP подключение.
0
Lexxtor#
Когда хочу прочитать самоуничтожающееся сообщение, нажимаю «get message», оно расшифровывается, нажимаю еще раз и оно исчезает. Баг. Не должно исчезать. Даблклик ведь и нечаянный бывает.

0 коммент.:

Отправить комментарий