ningaz17

На Пикабу
3008 рейтинг 70 подписчиков 12 подписок 13 постов 2 в горячем
Награды:
5 лет на Пикабу
16

End-to-End шифрование в месседжере WhatsApp

Здравствуйте, друзья! После предыдущего поста на меня подписалось аж 55 человек, за что Вам большое спасибо! Также хочу выразить благодарность людям, которые указывали на недочеты — это помогает делать материал лучше.


Некоторые читатели предыдущего поста задавали вопросы про End-to-End шифрование (оно же сквозное) и просили рассказать о нем подробнее. Чтобы не было разночтений, буду писать на примере сквозного шифрования в месседжере WhatsApp.


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


Для начала немножко теории. Почти все современные средства шифрования используют криптографию с открытым ключом (асимметричная криптография). Ключ представляет из себя пару чисел, которые называют открытым и закрытым ключами. Между этими ключами есть зависимость: один ключ шифрует — другой дешифрует. Существуют различные варианты использования этих ключей в зависимости от алгоритма.


Современная асимметричная криптография использует эллиптические кривые ввиду того, что при меньшей длине ключа она гарантирует большую стойкость взломам. А некоторые реализации “эллиптических” алгоритмов работают намного быстрее “классических”. Одним из таких алгоритмов является Curve25519, который используется в криптографическом протоколе Signal, используемом в WhatsApp.

End-to-End шифрование в месседжере WhatsApp Шифрование, Мессенджер, WhatsApp, Длиннопост

В приложении используются три основных типа ключей:

1. Ключ идентификации (Identity key pair) — генерируется при установке приложения. Как правило, меняется только принудительно или при переустановке приложения.

2. Ключ подписи (Signed key pair) — генерируется при помощи идентифицирующего ключа и периодически изменяется.

3. Набор одноразовых ключей (One-time pre keys) — набор ключей, которые используются для различных нужд, пополняются постоянно.


Из основных ключей генерируются сессионные ключи:

1. Корневой ключ (Root key) — используется для создания цепи ключей.

2. Цепь ключей (Keys Chain) — используется для создания Ключей сообщения.

3. Ключ сообщения (Message Key) — 80-байтовое значение для шифрования сообщений, из них 32 используется для AES-256, 32 для HMAC-SHA256 (подпись) и 16 для IV. Ключ для шифрования сообщений.


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


Создание защищенной сессии


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


Алгоритм создания защищенной сессии:

A — клиент, который инициирует первое соединение

B — клиент, которому нужно доставить сообщение

1. A запрашивает открытые ключи (идентифицирующий, подписывающий и одноразовый (один)) B с сервера.

2. Сервер возвращает эти ключи. Одноразовый ключ удаляется с сервера.

Если на сервере нет одноразовых ключей, а B не может пополнить их (оффлайн), то сервер не вернет публичный одноразовый ключ.

3. A сохраняет ключи B.

4. Из своих и ключей B A получает секретное выражение (secret), которое будет использовано для получения корневого ключа и цепи ключей.

5) A передает слепок своих ключей, чтобы B смог получить идентичное выражение (secret). B удаляет одноразовый ключ, который был использован A для создания секрета.


После этих шагов оба абонента имеют одинаковый secret и генерируют идентичные ключи сессии.


Шифрование сообщений


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


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


Вместо заключения


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


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


Спасибо Вам за то, что прочитали! :)



Ссылки:

WhatsApp Encryption Overview: https://www.whatsapp.com/security/WhatsApp-Security-Whitepap...

Эллиптическая криптография: теория: https://habrahabr.ru/post/188958/

Небольшая справка о Curve25519: https://habrahabr.ru/post/247873/

Показать полностью 1
2830

Как работают https и vpn

Сейчас все вокруг говорят про запрет VPN (от англ. Virtual Private Network -- виртуальная частная сеть), но при этом не всегда пытаются объяснить, что это такое и зачем нужно. А самое главное, почему их работу нельзя ограничить. Привожу список наиболее популярных задач, решаемых с помощью такой сети:

1. Создание приватного тоннеля домой/в офис. На основе VPN создаются тоннели для доступа к Вашим частным ресурсам, т.к. данный протокол позволяет производить End-to-End шифрование (об этом будет ниже).

2. Создание защищенного канала в незащищенной сети. Предположим, Вы сидите в кофейне и хотите проверить почту с помощью внутренней Wi-Fi сети заведения. А Вы уверены в том, что Ваши данные никуда не уйдут? VPN позволяет создавать шифрованный канал в незащищенной сети, что практически предотвращает утечку Ваших данных.

3. Обход блокировок. Данная задача является краеугольным камнем в вопросе "быть или не быть VPN в РФ" для чиновников.


Теперь важно понять, как же работает эта приватная сеть. Ниже представлена упрощенная схема работы с VPN:

Как работают https и vpn VPN, Https, Технологии, Интернет, Безопасность, Длиннопост

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

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


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


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


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

Чтобы предотвратить данную атаку, используется алгоритм обмена ключами Диффи-Хеллмана. Этот алгоритм позволяет клиенту и серверу договориться по поводу общего секретного ключа, без необходимости передачи этого ключа по каналу связи:

Как работают https и vpn VPN, Https, Технологии, Интернет, Безопасность, Длиннопост

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


Таким образом, абонент и сервер имеют общие ключи шифрования, которые известны только им -- это как раз и называется End-to-End шифрованием. При таком шифровании зашифрованная информация передается напрямую получателю. Помимо шифрования, абонент точно знает, что сервер подлинный. Сервер тоже может проверить, что абонент настоящий. Как правило, это делается в специализированных VPN (офисы, домашние сети и т.д.). Например, Вы предварительно вводите свои логин и пароль или предоставляете отпечаток/слепок (от англ. -- fingerprint) ключа, который был выдан при регистрации и т.д. Эти нюансы связаны с конкретными реализациями VPN.


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


Ссылке по теме:

Введение в криптографию: https://interface31.ru/tech_it/2016/09/vvedenie-v-kriptograf...

Как работает HTTPS: https://habrahabr.ru/post/188042/

Что такое VPN: https://blog.kaspersky.ru/vpn-explained/10635/

Показать полностью 1
4

Ох уж эти журналисты

Листая новости в популярном агрегаторе, наткнулся на новость об умных весах китайской компании на букву М. И все бы ничего, но все картинки, которые выводил агрегатор, принадлежат продукту другой популярной китайской компании. Мне стало интересно, на чьей стороне косяк -- агрегатора или копирайтеров.

Так выглядит представление новостей:

Ох уж эти журналисты Дилетант, Копирайтинг, Технологии

После изучения статей стало ясно, что авторы взяли первые попавшиеся изображения из Интернета. И вот тут возникает вопрос: как вообще можно так халатно относиться к работе?

Сами весы должны выглядеть вот так:

Ох уж эти журналисты Дилетант, Копирайтинг, Технологии

Но и это еще не все. Такое ощущение, что у статей либо один автор, либо кто-то скопировал новость у другого.

Копирайтеры, зачем Вы так делаете? Что сложного в лишней проверке того, что Вы пишете?


Ссылка на новости: https://news.yandex.ru/yandsearch?lr=2&cl4url=vevby.ru%2...


P.S.: Часто сталкиваюсь с дилетантством в различных областях, что очень огорчает. Недавно был на популярной конференции, где главными топиками были "Цифровая Экономика" и "Интернет Вещей", а основными спикерами -- представители экономических университетов. Столько словесного поноса и бреда давно не слушал. Но это совсем другая история.

Показать полностью 1
10

На волне постов про школу

За 11 лет учебы я сменил три школы. Нет, я не был хулиганом, которого выгоняли. Мы просто переезжали. Но во всех трех школах мне хватало "любимых" учителей.


В первом классе учительница всеми силами пыталась переучить меня с левши на правшу (ну да, это же так просто!). Но делала она это очень интересными методами. Два раза мои тетради по правописанию (если это так называлось) она рвала. Один раз ставила у доски перед классом и говорила, как плохо быть мной. Мне было очень обидно. Мама каждый раз с ней ругалась. К концу первого класса ее уволили, а мы переехали.


Потом была тетя-физрук. Не могу называть ее иначе. От нее постоянно пахло перегаром и она играла со всеми в "крючки". Крючки -- это когда ты находишь дырочку на одежде, суешь в нее палец и растягиваешь. Потом приходилось родителям объяснять, что это не мой фетиш. Для меня остается секретом, что эта женщина пыталась нам доказать.


Уже в третьей школе проблемы у меня возникали только с учителями физики и информатики (это при моем физ-мат профиле :) ). Что интересно, обе учительницы были очень похожи. Физичка называла меня "бешеный кролик" за быстрые ответы и занижала оценки, хотя по физике я всегда знал больше, чем требовала программа. Возможно, мое желание делать больше так бесило училку. Информатичка часто выражала открытую неприязнь. Говорила, что я ничего не добьюсь. А я терпел и занимался любимыми делами.


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


Стоит сказать, что сейчас я состоявшийся разработчик и имею стойкую неприязнь к тварям. Обидно, что многие дети подвергаются подобному терроризму в школах. Могу лишь посоветовать людям, оказавшимся в подобной ситуации, терпеть. Либо бороться законными средствами, но это трудно.


Спасибо за то, что прочитали. Извините за ошибки, чукча не писатель.

Показать полностью
11

Фрилансеров могут не выпустить за границу

Фрилансерам в России хотят ограничить выезд за границу. Хочешь отдыхать -- плати пошлину.


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


«Возможно, — подчеркивает Рязанский, — будет определено, что, если люди, получая доход, так и не легализуют свои взаимоотношения с государством, то да, экстренную медицинскую помощь они получат, но вот, к примеру, выехать за границу не смогут. Таким образом государство будет напоминать гражданам, что за ними накопились невыполненные социальные обязательства».


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


В условиях экономического кризиса россияне все чаще ищут возможность дополнительного заработка. Впрочем, как отмечает «РГ» со ссылкой на гендиректора ВНИИ труда Министерства труда и социальной защиты населения РФ Николая Волгина, у некоторых категорий граждан есть возможность оформить свои отношения с государством.


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


Ссылка на новость: https://www.gazeta.ru/social/2017/05/03/10655129.shtml

Показать полностью
Отличная работа, все прочитано!