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)
Sergey_datex
05.05.2016 15:41… и стал тормозить невыносимей. Касается и android приложения, и WIN приложения — вызов приложения из трея теперь занимает ~5 секунд…
mihmig
06.05.2016 10:12У меня в определённый момент вообще перестал отображать историю переписки в терминальной сессии. Блджад, он даже текст через DirectX отображает… Видимо в какой-то момент один из гнусных хипстеров, отхлебнув смузи бросил мышкой на форму новый (нескучный) компонент.
Снёc нафиг.
ChALkeRx
05.05.2016 16:06> Для организации end-to-end шифрования каждый из клиентов использует пару ключей: открытый и закрытый. Эта пара ключей алгоритма шифрования 256-bit Curve-25519 (ID ключа) для клиента Viber генерируется при установке мессенджера на основное устройство. Публичная часть ключа отправляется на сервер Viber, а приватная хранится на устройстве клиента для расшифровки приходящих сообщений. Прочие устройства, которые работают с этим аккаунтом Viber, также получают копию закрытого ключа от основного устройства с использованием специального криптографического алгоритма.
Тут, кстати, два момента.
Первый — открытый ключ идёт через сервер, так что сервер может его вполне подменить — защиты от MitM со стороны сервера тут, очевидно, нет.
Второй — «специальный криптографический алгоритм» почти наверняка просто передёт приватный ключ (каким образом — не столь важно) по указке от сервера. Со всеми вытекающими.Sergey_datex
05.05.2016 16:14Если это так, то толку нет от этого шифрования. По логике, закрытый ключ должен быть только на нашем устройстве, открытый опубликован, и любой собеседник с его помощью должен шифровать сообщение к нашему устройству.
Скорее, тут ошибка перевода? Отправителю сообщения закрытый ключ не нужен для зашифрования сообщения.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.
ITurchenko
05.05.2016 17:13Возникает проблема, когда у пользователя несколько мобильных устройств.
Ключом от какого устройства шифровать сообщение? От последнего? А если он со старого зайдет, не увидит важного сообщения и расстроится?ChALkeRx
05.05.2016 19:38Да понятно, зачем это сделано. Но если это сделано каким-то из методов, кроме копирования ключа напрямую (причём не по сообщению от сервера, который говорит, куда копировать) — то толку от такого end-to-end шифрования не сильно больше, чем от client-server и server-client. Скорее — уже ставшее привычным «глядите, как у нас всё стало безопасно, используйте наш мессенджер».
Scratch
05.05.2016 17:22+1Пока вайбер пилил свой костыль на основе устаревшего протокола Сигнала, Сигнал ушел далеко вперед и давно использует signed prekeys. А вайбер только triple DH. Тут подробней
podkovyrsty
05.05.2016 18:55+2Там занимательная ремарка есть в конце статьи. Про твит Фредерика Якобса о том, что Viber, возможно, отключает шифрование на основании данных гео-локации. Будет ли это, и без того сомнительное, шифрование работать в России?
Akr0n
06.05.2016 07:21Что-то я не понял. Оно работает по умолчанию абсолютно для всех чатов? Вручную сгенерировать ключи и передать их физически с устройства на устройство нельзя?
varnav
06.05.2016 11:28Не вижу у себя никаких замочков, ни на PC, ни в андроидотелефоне. Версии самые новые.
ChALkeRx
> В отличие от WhatsApp, который использует в качестве протокола end-to-end шифрования реализацию алгоритма Double Ratchet от Open Whisper Systems (Signal), авторы Viber написали его реализацию с нуля.
Первое правило криптографии — не придумывать свою криптографию. Это в том числе и реализации касается зачастую.
Noiwex
Зачастую очень популярные и открытые реализации содержат очень опасные дыры, которые не замечаются годами. Heartbleed, например. Не надо надеятся, что кто-то другой за вас сделает всю работу 100% надежно.
MonkAlex
Шанс, что ваш велосипед окажется с уже давно исправленными в популярных либах дырами — стремится к 100%. Всегда.
Noiwex
Не спорю, но и у Viber API разрабатывают не студенты на аутсорсе.
hiddenman
Viber одно из кривейших массовых приложений, которое регулярно при обычном обновлении удаляет ВСЕ данные переписок, а потом пишет в changelog в стиле — упс, пацаны, раньше мы все удаляли, простите, больше не будем. И при следующем обновлении снова похожие глюки. На Андроиде у него еще масса замечательных глюков — падает при попытке отправить картинку из него самого (если через функцию share на картинке, то не падает; похоже, из-за большого разрешения), не умеет ужимать видео при отправке и при этом размер видео ограничен 10MB, что на нышених лопатах составляет несколько секунд записи, исчезает из списка запущенных приложений или наоборот, как бы дублируется (затирает preview других приложений). И таких глюков ВАГОН. Достаточно попользоваться этим поделием день, чтобы отловить большинство из них.
Так что я не был бы так уверен насчёт студентов на аутсорсе. Похоже, таки студенты и за еду.
Почему и зачем оно еще существует, для меня загадка. Ни одна из функций не реализована нормально. Зато стикеры платные. И кто-то ведь платит.
Оно мне напоминает Одноклассники в свои первые года 3-4 года существования — падающее на каждом чихе глюкало с платными смайликами. В то время как тот же WhatsApp больше похож на Vk — стабилен, понятен и можно сказать, что даже удобен.
mihmig
Увы, но популярность сего у негиков из-за:
1. Нескучного интерфейса (телеграм вон принципиально «не русский» из коробки)
2. Голосовых звонков
Как только убеждения Паши позволят ему русифицировать телеграм (не, не народ не будет «подпихивать» какие-то russian-strings.xml)
и добавить голос — тогда эти поделия (вибер и вацап) канут в лету.
А пока — да, пипл выбирает вибер.
hiddenman
Ну Телеграм ладно, но ведь был и есть тот же WhatsApp, зачем Viber нужен? В WA тоже звонить можно (не знаю, позже или раньше у них это появилось). Вообще все эти клоны мессенджеров навевают скуку, ждем революции от операторов связи с https://en.wikipedia.org/wiki/Rich_Communication_Services Может что-то из этого все-таки получится.
mihmig
Втопку все эти стикер-мессенджеры кроме телеграма, и вот почему:
1. У нас в фирме уже больше года работают несколько ботов: уведомления СКУД, вход-выход в геозоны(мониторинг транспорта), техподдержка и т.п.
2. Телеграм работает даже там, где не то что 3г, даже Edge с трудом ловится, где браузер даже мобильную версию сайта отобразить не может.
hiddenman
Телеграм хорош, спору нет. Лучший из этого зоопарка, я бы сказал. Но всё равно просто улучшенный клон. Нужен интегрированный в систему, типа RCS по ссылке выше.
mihmig
Ну неее, пчёлы (опсосы) против мёда( продажи СМС — более миллиона рублей за мегабайт) не пойдут.
Они будут ещё очень долго сопротивляться тому факту что они — просто «трубы» — поставщики мобильного инета.
hiddenman
Бизнес-идею всегда можно придумать, и им придется. Типа, общение бесплатно, а передача файлов/видео — за подписку. Ну это самое тупое. В общем, время покажет.
MonkAlex
Я дипломированный специалист по безопасности, у меня лет 5 опыта программирования, я не напишу даже простейшей реализации шифрования, за которую я бы готов был поручиться. Вы просто недооцениваете сложность задачи.