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

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

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

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

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



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

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

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


  1. mwizard
    02.07.2015 15:44

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

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

    UPD. Ссылка на репозиторий есть на самом сайте, но скрыта под спойлер. Вопрос про корректность реализации все еще в силе.


    1. parol Автор
      02.07.2015 16:00

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

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

      По поводу реализации OTR- используется github.com/arlolra/otr целосноность ее можно проверить.


    1. Temych
      03.07.2015 15:26

      + вроде у криптокошки нет «Secure File Sharing»


  1. 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».


    1. extempl
      02.07.2015 16:00

      Кнопка коннект нужна если у вас есть ID собеседника.
      А вот собственный ID вместе со ссылкой не создаются, да. Через некоторое время внизу появляется пара ошибок, текст которых приведён выше.


    1. parol Автор
      02.07.2015 16:07

      Ошибка очень редко, но возникает, например на FF c MacOS. Если честно, еще не нашли как ее победить. Пока остается попробовать другой браузер.


      1. Rondo
        02.07.2015 16:22
        +1

        Windows 7, FF и Chrome, такая же ошибка
        у меня виснет запрос https://otr.to:9000/peerjs/id?ts=<тут длинный unix-timestamp c дробной частью после точки>
        (но может быть это проблема моего провайдера, уже замечал проблемы с нестандартными портами)


        1. parol Автор
          02.07.2015 16:48

          спасибо, будем разбираться.


  1. vsb
    02.07.2015 16:07
    +2

    А как я могу быть уверенным, что вы мне не подсунете другой JavaScript? Если с программой можно проверить хеш, подпись, то тут ничего не проверишь. Браузер мне не скажет, что сегодня скрипты не такие, как вчера. Это самая главная проблема всех браузерных криптоприложений, как мне кажется.


    1. parol Автор
      02.07.2015 16:16

      Тут не поспоришь, проверять JavaScript каждый раз затруднительно. Единственное что могу возразить, если начнет отдаваться другой код, рано или поздно кто-то из пользователей это заметит и сервис будет скомпрометирован.


      1. hellman
        02.07.2015 16:32
        +2

        Но вы можете выдать другой код только определенному юзеру, или только в очень короткий промежуток времени.


        1. Speakus
          03.07.2015 09:49
          +1

          Ну раз код открыт, то можно ведь поднять на своем сервере? Или какое еще решение вы предполагаете?


    1. hellman
      02.07.2015 16:30
      +1

      Отличная статья в тему — Javascript Cryptography Considered Harmful


      1. ValdikSS
        04.07.2015 19:16
        +2

        Я тоже не особый сторонник браузерных приложений в целом и криптографии в частности, но, на самом деле, сейчас уже все гораздо лучше. Раньше большинтво противников криптографии в браузере жаловались, как правило, не на скорость выполнения или возможность side-channel атак, а на возможность подменить страницу (даже если с HTTPS, скажем, кто-то выпустил второй сертификат), а раз можно подменить страницу, то и криптография бессильна. Есть, например, замечательный проект Subrosa, который представляет из себя шифрованный peer to peer мессенджер в браузере (есть, кстати, даже груповые аудио и видеозвонки, рекомендую!), который настоятельно предлагает пользователю запускать его локально, чтобы, в случае чего, никто не мог подменить страницу по сети. В инструкции упомянуты и специальные заголовки, которые запрещают браузеру загрузку любого стороннего контента, если вдруг где-то обнаружится XSS.

        сс: vsb


        1. vsb
          04.07.2015 21:30

          Ну HTTPS подразумевается по умолчанию. Выпуск второго сертификата в какой-то степени предотвращается заголовком public-key-pins. Но всё равно всё упирается в добросовестность сервера. Придут к автору сайта дяденьки, расскажут ему грустную историю про то, сколько он будет сидеть за содействие терроризму и предложат бесплатную помощь по модификации серверного ПО в плане отслеживания юзера с айпишником 1.2.3.4. Или придут к админу хецнера какого-нибудь.


          1. ValdikSS
            04.07.2015 21:32
            +1

            Именно поэтому авторы проекта и рекомендуют запускать все локально.


    1. istui
      02.07.2015 16:42
      +1

      Все зависит для чего это использовать. Если просто требуется передать логин/пароль по работе через публичный вайфай, так, чтобы кулхацкер не смог их увидеть — это одно, здесь сервис вполне состоятелен. Если же данные действительно содержат важную личную информацию — используйте другие способы передачи, в которых вы уверены — это же написано во всех учебниках…


      1. parol Автор
        02.07.2015 16:47

        примерно тоже самое написал, но рефрешнул перед тем как отправить


  1. parol Автор
    02.07.2015 16:46
    +1

    -


  1. alexriz
    02.07.2015 17:01
    +1

    Прошу прощения, возможно я что-то не понимаю. Но одному мне кажется странным, передача ссылки-ключа к зашифрованному каналу связи через открытый канал связи?


    1. parol Автор
      02.07.2015 17:09

      Если вы про чат, то там в ссылке содержится ID а не ключ. Если про сообщения или файлы, ничто не мешает скинуть ссылку через скайп а ключ смс например. К тому же сообщения самоуничтожающиеся, т.е. прочитать можно только один раз.


      1. Revertis
        02.07.2015 17:19

        Опишите чуток подробней как передается ключ от одного пользователю другому. Он летит через сервер? Или хранится на сервере и потом по айдишнику чата вынимается из базы? Если так, то это какой-то ужас…


        1. parol Автор
          02.07.2015 17:41
          +1

          Согласование ключей идет напрямую между собеседниками, ключи обновляются. Подробнее здесь


  1. Methos
    02.07.2015 17:15
    -2

    Для видео-общения через браузер недавно появился zentalk.ru


    1. ZoomLS
      02.07.2015 17:44
      -2

      Давно уже есть Firefox Hello.


  1. pravic
    02.07.2015 21:05

    Самоуничтожающееся зашифрованное сообщение

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

    И исходный код только клиентской части открыт, не так ли?


    1. Assada
      02.07.2015 22:15

      Так серверной части нет. p2p

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


      1. pravic
        02.07.2015 22:28

        `s.php` смущает: bit.ly/1KvGLaG


      1. parol Автор
        02.07.2015 23:32

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


    1. parol Автор
      02.07.2015 23:35

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


  1. zhovner
    02.07.2015 23:21
    +2

    А можно у себя захостить? Вы не обидетесь?


    1. zhovner
      02.07.2015 23:55
      +3

      Неудобно как-то, а можно еще портабл версию, чтобы из гита все сразу работало.


    1. parol Автор
      03.07.2015 02:30

      Можно


  1. varnav
    03.07.2015 09:02
    +2

    Можно подумать что при подключении по FTP эти самые «доступы» не передаются через открытый канал.


    1. deemytch
      03.07.2015 10:09
      +3

      Бывает SSL FTP подключение.


  1. Lexxtor
    07.07.2015 16:23
    +1

    Когда хочу прочитать самоуничтожающееся сообщение, нажимаю «get message», оно расшифровывается, нажимаю еще раз и оно исчезает. Баг. Не должно исчезать. Даблклик ведь и нечаянный бывает.