Авторы Viber пошли по схожему с разработчиками WhatsApp пути и интегрировали в свой мессенджер полноценное end-to-end шифрование, которое подразумевает под собой хранение приватных ключей шифрования на устройствах пользователей. В отличие от WhatsApp, который использует в качестве протокола end-to-end шифрования реализацию алгоритма Double Ratchet от Open Whisper Systems (Signal), авторы Viber написали его реализацию с нуля. При этом шифрованию подвергаются пересылаемые между пользователями текстовые сообщения, звонки, а также пересылаемые файлы. Функция доступна пользователям начиная с Viber 6.0.



Starting with Viber 6.0, all of Viber's core features are secured with end-to-end encryption: calls, one-on-one messages, group messages, media sharing and secondary devices. This means that the encryption keys are stored only on the clients themselves and no one, not even Viber itself, has access to them. Viber's protocol uses the same concepts of the «double ratchet» protocol used in Open Whisper Systems Signal application, however, Viber's implementation was developed from scratch and does not share Signal's source code.

Для организации end-to-end шифрования каждый из клиентов использует пару ключей: открытый и закрытый. Эта пара ключей алгоритма шифрования 256-bit Curve-25519 (ID ключа) для клиента Viber генерируется при установке мессенджера на основное устройство. Публичная часть ключа отправляется на сервер Viber, а приватная хранится на устройстве клиента для расшифровки приходящих сообщений. Прочие устройства, которые работают с этим аккаунтом Viber, также получают копию закрытого ключа от основного устройства с использованием специального криптографического алгоритма.

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

To send a secure message, secure sessions must exist between the sending device and all the recipient's devices, as well as between the sending device and all the sender's other devices. So for example, if user A that has a mobile phone and a PC registered to Viber under the same account wishes to communicate with user B that has a mobile phone and a PC, secure sessions must be established between each pair of devices.

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

Более подробную информации о шифровании Viber см. www.viber.com/en/security-overview

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


  1. ChALkeRx
    05.05.2016 13:48
    +13

    > В отличие от WhatsApp, который использует в качестве протокола end-to-end шифрования реализацию алгоритма Double Ratchet от Open Whisper Systems (Signal), авторы Viber написали его реализацию с нуля.

    Первое правило криптографии — не придумывать свою криптографию. Это в том числе и реализации касается зачастую.


    1. Noiwex
      05.05.2016 15:14
      -4

      Зачастую очень популярные и открытые реализации содержат очень опасные дыры, которые не замечаются годами. Heartbleed, например. Не надо надеятся, что кто-то другой за вас сделает всю работу 100% надежно.


      1. MonkAlex
        05.05.2016 17:13
        +8

        Шанс, что ваш велосипед окажется с уже давно исправленными в популярных либах дырами — стремится к 100%. Всегда.


        1. Noiwex
          05.05.2016 18:06
          -6

          Не спорю, но и у Viber API разрабатывают не студенты на аутсорсе.


          1. hiddenman
            06.05.2016 00:21
            +4

            Viber одно из кривейших массовых приложений, которое регулярно при обычном обновлении удаляет ВСЕ данные переписок, а потом пишет в changelog в стиле — упс, пацаны, раньше мы все удаляли, простите, больше не будем. И при следующем обновлении снова похожие глюки. На Андроиде у него еще масса замечательных глюков — падает при попытке отправить картинку из него самого (если через функцию share на картинке, то не падает; похоже, из-за большого разрешения), не умеет ужимать видео при отправке и при этом размер видео ограничен 10MB, что на нышених лопатах составляет несколько секунд записи, исчезает из списка запущенных приложений или наоборот, как бы дублируется (затирает preview других приложений). И таких глюков ВАГОН. Достаточно попользоваться этим поделием день, чтобы отловить большинство из них.
            Так что я не был бы так уверен насчёт студентов на аутсорсе. Похоже, таки студенты и за еду.
            Почему и зачем оно еще существует, для меня загадка. Ни одна из функций не реализована нормально. Зато стикеры платные. И кто-то ведь платит.
            Оно мне напоминает Одноклассники в свои первые года 3-4 года существования — падающее на каждом чихе глюкало с платными смайликами. В то время как тот же WhatsApp больше похож на Vk — стабилен, понятен и можно сказать, что даже удобен.


            1. mihmig
              06.05.2016 10:08

              Увы, но популярность сего у негиков из-за:
              1. Нескучного интерфейса (телеграм вон принципиально «не русский» из коробки)
              2. Голосовых звонков

              Как только убеждения Паши позволят ему русифицировать телеграм (не, не народ не будет «подпихивать» какие-то russian-strings.xml)
              и добавить голос — тогда эти поделия (вибер и вацап) канут в лету.
              А пока — да, пипл выбирает вибер.


              1. hiddenman
                06.05.2016 10:13

                Ну Телеграм ладно, но ведь был и есть тот же WhatsApp, зачем Viber нужен? В WA тоже звонить можно (не знаю, позже или раньше у них это появилось). Вообще все эти клоны мессенджеров навевают скуку, ждем революции от операторов связи с https://en.wikipedia.org/wiki/Rich_Communication_Services Может что-то из этого все-таки получится.


                1. mihmig
                  06.05.2016 10:18

                  Втопку все эти стикер-мессенджеры кроме телеграма, и вот почему:
                  1. У нас в фирме уже больше года работают несколько ботов: уведомления СКУД, вход-выход в геозоны(мониторинг транспорта), техподдержка и т.п.
                  2. Телеграм работает даже там, где не то что 3г, даже Edge с трудом ловится, где браузер даже мобильную версию сайта отобразить не может.


                  1. hiddenman
                    06.05.2016 10:29

                    Телеграм хорош, спору нет. Лучший из этого зоопарка, я бы сказал. Но всё равно просто улучшенный клон. Нужен интегрированный в систему, типа RCS по ссылке выше.


                    1. mihmig
                      06.05.2016 10:50

                      Ну неее, пчёлы (опсосы) против мёда( продажи СМС — более миллиона рублей за мегабайт) не пойдут.
                      Они будут ещё очень долго сопротивляться тому факту что они — просто «трубы» — поставщики мобильного инета.


                      1. hiddenman
                        06.05.2016 10:54

                        Бизнес-идею всегда можно придумать, и им придется. Типа, общение бесплатно, а передача файлов/видео — за подписку. Ну это самое тупое. В общем, время покажет.


          1. MonkAlex
            06.05.2016 17:41

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


  1. Sergey_datex
    05.05.2016 15:41

    … и стал тормозить невыносимей. Касается и android приложения, и WIN приложения — вызов приложения из трея теперь занимает ~5 секунд…


    1. ProRunner
      05.05.2016 16:09
      +1

      Windows-приложение невероятно тормозное, да. Android-версия работает достаточно быстро (по крайней мере у меня)
      C удовольствием бы пользовался веб-версией, как в Whatsapp, но её, к сожалению, нет.


    1. mihmig
      06.05.2016 10:12

      У меня в определённый момент вообще перестал отображать историю переписки в терминальной сессии. Блджад, он даже текст через DirectX отображает… Видимо в какой-то момент один из гнусных хипстеров, отхлебнув смузи бросил мышкой на форму новый (нескучный) компонент.
      Снёc нафиг.


  1. ChALkeRx
    05.05.2016 16:06

    > Для организации end-to-end шифрования каждый из клиентов использует пару ключей: открытый и закрытый. Эта пара ключей алгоритма шифрования 256-bit Curve-25519 (ID ключа) для клиента Viber генерируется при установке мессенджера на основное устройство. Публичная часть ключа отправляется на сервер Viber, а приватная хранится на устройстве клиента для расшифровки приходящих сообщений. Прочие устройства, которые работают с этим аккаунтом Viber, также получают копию закрытого ключа от основного устройства с использованием специального криптографического алгоритма.

    Тут, кстати, два момента.
    Первый — открытый ключ идёт через сервер, так что сервер может его вполне подменить — защиты от MitM со стороны сервера тут, очевидно, нет.
    Второй — «специальный криптографический алгоритм» почти наверняка просто передёт приватный ключ (каким образом — не столь важно) по указке от сервера. Со всеми вытекающими.


    1. Sergey_datex
      05.05.2016 16:14

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

      Скорее, тут ошибка перевода? Отправителю сообщения закрытый ключ не нужен для зашифрования сообщения.


      1. ProRunner
        05.05.2016 16:49

        Закрытый ключ необходим для работы сквозного шифрования на всех устройствах (этот ключ используется для аутентификации, для сообщений у каждого из устройств свой ключ шифрования). По указанной в статье ссылке более подробно объясняется его работа.

        Viber's end-to-end encryption on secondary devices works as follows:

        • Encryption is done separately for each device. If some user A sends a message to user B that has two devices, then user A needs separate end-to-end sessions with the two devices and encrypts the data twice, each one using a different set of keys.
        • Authentication is done just once for the entire account. If user A trusts user B, the trust is automatically applied to all of user B's devices, not just one.

        The ID Key is generated only by the primary device, and is transmitted to the secondary devices during registration in a secure method, as follows:

        • The secondary device generates an ephemeral 256-bit Curve-25519 key-pair.
        • The device then generates a QR code containing the device's «Viber UDID» (a publicly accessible unique device ID generated by Viber) plus the public part of the ephemeral key pair.
        • The user uses his primary device to scan the QR code.
        • The primary device also generates a 256-bit Curve-25519 key-pair and performs DH calculation with the public key from the QR. The result is hashed using SHA256 to create a shared secret.
        • The primary then encrypts its own private ID key with this secret and sends it and the public part of the ephemeral key through the Viber servers to the target device, identified by its UDID as read from the QR code. The cyphertext is signed using HMAC-SHA256.
        • The secondary device receives the message, performs the same DH and hash to obtain the same secret, and uses it to decrypt the primary private ID Key.


      1. ITurchenko
        05.05.2016 17:13

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

        Ключом от какого устройства шифровать сообщение? От последнего? А если он со старого зайдет, не увидит важного сообщения и расстроится?


        1. ChALkeRx
          05.05.2016 19:38

          Да понятно, зачем это сделано. Но если это сделано каким-то из методов, кроме копирования ключа напрямую (причём не по сообщению от сервера, который говорит, куда копировать) — то толку от такого end-to-end шифрования не сильно больше, чем от client-server и server-client. Скорее — уже ставшее привычным «глядите, как у нас всё стало безопасно, используйте наш мессенджер».


        1. mihmig
          06.05.2016 10:09

          Так там же вроде ограничение — одно мобильное устройство и один десктоп, не?


  1. Scratch
    05.05.2016 17:22
    +1

    Пока вайбер пилил свой костыль на основе устаревшего протокола Сигнала, Сигнал ушел далеко вперед и давно использует signed prekeys. А вайбер только triple DH. Тут подробней


    1. podkovyrsty
      05.05.2016 18:55
      +2

      Там занимательная ремарка есть в конце статьи. Про твит Фредерика Якобса о том, что Viber, возможно, отключает шифрование на основании данных гео-локации. Будет ли это, и без того сомнительное, шифрование работать в России?


  1. Akr0n
    06.05.2016 07:21

    Что-то я не понял. Оно работает по умолчанию абсолютно для всех чатов? Вручную сгенерировать ключи и передать их физически с устройства на устройство нельзя?


  1. varnav
    06.05.2016 11:28

    Не вижу у себя никаких замочков, ни на PC, ни в андроидотелефоне. Версии самые новые.