Что такое двойное шифрование
Асимметричное шифрование
Асимметричное шифрование — это метод шифрования данных, предполагающий использование двух ключей — открытого и закрытого. Открытый (публичный) ключ применяется для шифрования информации и может передаваться по незащищенным каналам. Закрытый (приватный) ключ применяется для расшифровки данных, зашифрованных открытым ключом. Открытый и закрытый ключи — это очень большие числа, связанные друг с другом определенной функцией, но так, что, зная одно, крайне сложно вычислить второе.
Асимметричное шифрование используется для защиты информации при ее передаче, также на его принципах построена работа электронных подписей.
Принцип действия асимметричного шифрования
Схема передачи данных между двумя субъектами (А и Б) с использованием открытого ключа выглядит следующим образом:
В такой схеме перехват любых данных, передаваемых по незащищенным каналам, не имеет смысла, поскольку восстановить исходную информацию возможно только при помощи закрытого ключа, известного лишь получателю и не требующего передачи.
Применение асимметричных алгоритмов
Асимметричное шифрование решает главную проблему симметричного метода, при котором для кодирования и восстановления данных используется один и тот же ключ. Если передавать этот ключ по незащищенным каналам, его могут перехватить и получить доступ к зашифрованным данным. С другой стороны, асимметричные алгоритмы гораздо медленнее симметричных, поэтому во многих криптосистемах применяются и те и другие.
Например, стандарты SSL и TLS используют асимметричный алгоритм на стадии установки соединения (рукопожатия): с его помощью кодируют и передают ключ от симметричного шифра, которым и пользуются в ходе дальнейшей передачи данных.
Также асимметричные алгоритмы применяются для создания электронных подписей для подтверждения авторства и (или) целостности данных. При этом подпись генерируется с помощью закрытого ключа, а проверяется с помощью открытого.
Асимметричные алгоритмы
Наиболее распространенные алгоритмы асимметричного шифрования:
Надежность асимметричного шифрования
Теоретически приватный ключ от асимметричного шифра можно вычислить, зная публичный ключ и механизм, лежащий в основе алгоритма шифрования (последнее — открытая информация). Надежными считаются шифры, для которых это нецелесообразно с практической точки зрения. Так, на взлом шифра, выполненного с помощью алгоритма RSA с ключом длиной 768 бит на компьютере с одноядерным процессором AMD Opteron с частотой 2,2 ГГц, бывшем в ходу в середине 2000-х, ушло бы 2000 лет.
При этом фактическая надежность шифрования зависит в основном от длины ключа и сложности решения задачи, лежащей в основе алгоритма шифрования, для существующих технологий. Поскольку производительность вычислительных машин постоянно растет, длину ключей необходимо время от времени увеличивать. Так, в 1977-м (год публикации алгоритма RSA) невозможной с практической точки зрения считалась расшифровка сообщения, закодированного с помощью ключа длиной 426 бит, а сейчас для шифрования этим методом используются ключи от 1024 до 4096 бит, причем первые уже переходят в категорию ненадежных.
Что касается эффективности поиска ключа, то она незначительно меняется с течением времени, но может скачкообразно увеличиться с появлением кардинально новых технологий (например, квантовых компьютеров). В этом случае может потребоваться поиск альтернативных подходов к шифрованию.
Публикации на схожие темы
Сквозное шифрование: что это и зачем оно нужно вам
Квантовые компьютеры и криптография для чайников
Квантовые компьютеры — для «чайников»
Эволюция шифровальщика JSWorm
Программы-вымогатели: пара хороших новостей
Дорога к «интернету вещей»: преимущества и риски смарт-езды
Сквозное шифрование: что это и зачем оно нужно вам
Объясняем на пальцах, что такое сквозное шифрование и зачем оно нужно обычным людям.
В последнее время всякие сервисы для связи — от WhatsApp до Zoom — часто говорят: вот, мы внедрили сквозное шифрование. Вот только далеко не все пользователи понимают, что это значит. Что такое шифрование, допустим, понятно, — значит, данные превращаются во что-то нечитаемое. А сквозное — это как? В чем его плюсы и минусы? Попробуем объяснить максимально просто, не углубляясь в термины и математику.
Что такое сквозное шифрование и какие еще бывают варианты
Сквозное шифрование — это когда сообщения шифруются на вашем устройстве и расшифровываются только на устройстве вашего собеседника (по-английски это называется end-to-end, что можно перевести на русский как «из конца в конец»). То есть весь путь от отправителя до получателя сообщение преодолевает в зашифрованном виде, поэтому его никто не может прочитать, кроме вашего собеседника.
Как еще бывает? Также возможна передача данных в открытом виде, то есть когда сообщение вообще не шифруется. Это самый небезопасный вариант. Например, данные не шифруются при передаче SMS — в теории их может перехватывать вообще кто угодно. К счастью, на практике для этого требуется специальное оборудование, что несколько ограничивает круг читателей ваших сообщений.
Еще бывает транспортное шифрование — это когда сообщения шифруются у отправителя, доставляются на сервер, расшифровываются там, вновь шифруются и доставляются уже получателю. Транспортное шифрование защищает информацию при передаче, однако позволяет видеть содержание сообщений промежуточному звену — серверу. Может быть, этот сервер ответственно относится к вашим тайнам, а может быть, и нет. Вам остается только доверять его владельцам.
В то же время во многих случаях может быть гораздо удобнее использовать транспортное шифрование вместо сквозного. Дело в том, что транспортное шифрование позволяет серверу предоставлять более разнообразные услуги, нежели просто передача зашифрованных данных от одного собеседника к другому. Например, хранить историю переписки, подключать к беседе дополнительных участников по альтернативным каналам (телефонный звонок в видеоконференцию), использовать автоматическую модерацию и так далее.
При этом транспортное шифрование решает важную задачу: исключает перехват данных по дороге от пользователя к серверу и от сервера к пользователю (а это самая опасная часть пути). Так что сервисы не всегда торопятся переходить на сквозное шифрование: для пользователей удобство и разнообразие сервисов может быть важнее повышенной безопасности данных.
От чего защищает сквозное шифрование
Из того, что зашифрованное сквозным шифрованием сообщение не может расшифровать никто, кроме получателя, вытекает еще один плюс: никто не может влезть в сообщение и изменить его. Современные шифры устроены таким образом, что, если кто-то изменит зашифрованные данные, при расшифровке они превратятся в мусор, — и сразу станет понятно, что тут что-то не так. А вот внести предсказуемые изменения в зашифрованное сообщение — то есть подменить один текст другим — не получится.
Это обеспечивает целостность переписки: если вы получили сообщение и его удается расшифровать, то вы можете быть точно уверены, что именно это сообщение вам и отправили и в пути оно никак не изменилось.
От чего сквозное шифрование не защищает
После того как кто-нибудь расписывает все преимущества сквозного шифрования — примерно так, как это сделали мы сейчас, — слушателям начинает казаться, что оно решает вообще все проблемы передачи информации. Однако это не так, и у сквозного шифрования есть свои ограничения.
Во-первых, пусть использование сквозного шифрования и позволяет скрыть от посторонних глаз содержание сообщения, сам факт отправки определенному собеседнику (или получения от него) сообщения все еще остается известным. Сервер не будет знать, что было в том сообщении, которое вы отправили своему собеседнику, но он точно будет в курсе того, что в такой-то день и в такое-то время вы обменивались сообщениями. В некоторых случаях сам факт общения с определенными адресатами может привлечь к вам нежелательное внимание.
Во-вторых, если кто-то получит доступ к устройству, с помощью которого вы общаетесь, то он сможет прочитать все сообщения. А также сможет писать и посылать сообщения от вашего имени. Поэтому устройства надо беречь, а также блокировать доступ к приложениям, использующим сквозное шифрование, хотя бы PIN-кодом, чтобы при потере или краже устройства ваша переписка не попала в чужие руки — вместе с возможностью притворяться вами.
По этой же причине устройства надо защищать антивирусами — зловред на смартфоне может точно так же прочитать вашу переписку, как и живой человек, заполучивший доступ к смартфону. И тут уже неважно, какое шифрование было использовано при передаче сообщений.
Наконец, в-третьих: даже если вы безукоризненно заботитесь о защите всех ваших устройств и точно знаете, что к сообщениям на них ни у кого нет доступа, вы вряд ли можете быть так же уверены в устройстве вашего собеседника. И сквозное шифрование тут тоже никак не поможет.
И все же, несмотря на ограничения, сквозное шифрование — наиболее безопасный способ передачи конфиденциальных данных, и именно поэтому на него переходит все больше различных сервисов. И это хорошо.
Как работает сквозное шифрование
Многие современные мессенджеры информируют о сквозном шифровании после того, как пользователь создает новый чат. Такой механизм был разработан для постоянной защиты конфиденциальности и целостности передачи информации.
Что такое сквозное шифрование и где оно используется – расскажу в сегодняшней статье.
Что такое сквозное шифрование
Сквозное шифрование (от англ. End-to-End Encryption, E2EE) – это когда звонки, сообщения, фотографии и все прочие данные внутри чата доступны только двум собеседникам, без возможного попадания в третьи руки. Пока сообщение проходит весь путь от одного пользователя до другого, оно находится в зашифрованном виде, поэтому его никто не может увидеть, кроме собеседника.
Сквозное шифрование в мессенджере WhatsApp
Если сквозное шифрование не используется, то сообщение может быть отправлено в открытом доступе. Это значит, что оно не шифруется и может быть легко перехвачено хакерами (совсем небезопасный способ передачи данных, который уже давно не используется популярными мессенджерами).
Также существует транспортное шифрование – в такой технологии сообщения шифруются у отправителя, отправляются на сервер, расшифровываются там, затем снова шифруются и только потом отправляются адресанту. Это хорошо защищает данные, однако информация попадает на сервер, а это значит, что владелец сервера может легко посмотреть, что вы отправили.
Принцип работы сквозного шифрования
Принцип работы сквозного шифрования в мессенджере WhatsApp
Когда мы говорим про сквозное шифрование, то речь идет о комбинации таких методов, как симметричное и асимметричное шифрование данных.
Симметричное шифрование подразумевает, что для шифрования и дешифрования используется один и тот же криптографический ключ. Дополнительно к нему применяются алгоритмы, необходимые для защиты, так как самого ключа, как правило, недостаточно. Данные перемешиваются таким образом, чтобы обеспечить максимальную безопасность. Однако ключ все-таки можно подобрать, поэтому специалисты безопасности изменяют такие значения, как длина ключа, сложность и число раундов преобразования.
Ассиметричное шифрование – это когда для защиты данных используется открытый и закрытый ключ. Первый используется для шифрования данных, а второй – для их расшифровки.
Без закрытого ключа сообщения, защищенные сквозным шифрованием, выглядят следующим образом:
При комбинации таких методов в мессенджерах ключи защищены каналом связи и известны только собеседникам чата. Защищенный канал позволит исключить атаку методом «человека посередине» – это когда злоумышленник тайно перехватывает трафик клиентов в то время, когда они думают, что общаются наедине.
Могут ли правоохранительные органы получить доступ к сообщениям?
Даже если ваш мессенджер использует сквозное шифрование, это совсем не значит, что сообщения навсегда останутся незаметными для третьих лиц. По большей части здесь все зависит от самого мессенджера и страны.
Так, например, в 2016 году ФБР попросило Apple открыть доступ к данным, которые хранились на устройстве одного из преступников. Тогда Тим Кук сказал, что не собирается ничего раскрывать ФБР, так как это развяжет руки правительству.
Если Apple не пошли на уступки правительству, то вот Facebook и WhatsApp не смогли устоять: в 2019 году их обязали передавать зашифрованные сообщения пользователей полиции Великобритании. Естественно, что просто так никто не будет передавать данные, для этого требуются весомые основания.
Однако не все так плохо: в 2019 году Минюст США сказал, что начинает масштабное расследование в отношении технологических гигантов и хочет открыть доступ к переписке всех пользователей, но у него ничего не вышло. Facebook отклонил эту просьбу и не стал отказываться от сквозного шифрования.
В Telegram также дела обстоят довольно хорошо: в 2018 году Павел Дуров, основатель Telegram, сказал, что доступ к данным пользователей может быть получен только в том случае, если на это будет судебное решение по делу о терроризме. В других случаях ни о каком распространении данных речи не идет.
Исходя из вышесказанного, мы можем сделать вывод, что сквозное шифрование не всегда защищает от правительственных сил, но имеет хорошую защиту от злоумышленников.
Все ли мессенджеры одинаково безопасны?
Использование сквозного шифрования не гарантирует, что каждый мессенджер будет одинаково безопасен. Большинство приложений сегодня – это авторизация через номер сотового телефона. Такой подход уже говорит о не совсем безопасной среде, даже если в ней используется сквозное шифрование. Дело в том, что спецслужбы многих стран имеют практически открытый доступ к данным сотовых операторов. А это значит, что они могут получить доступ к вашим СМС, о чем вы даже не узнаете.
От чего не защищает сквозное шифрование
На первый взгляд кажется, что сквозное шифрование защищает практически от всего, но, как мы уже выяснили, это совсем не так. Более того, у сквозного шифрования есть еще и ограничения.
Первое, на что стоит обратить внимание – это то, что хоть и данный метод позволяет скрыть сообщение от посторонних глаз, он не скрывает сам факт отправки сообщения. Если мы отправляем сообщение одному из контактов, об этом будет известно серверу. Он не будет знать, что именно мы отправили, но будет знать, в какое время и кому было послано сообщение.
Второе – это то, что доступ к сообщениям могут получить любые лица, которые завладеют вашим устройством. В таких случаях совсем не важно, какое шифрование было использовано, а важно то, как вы в целом защищаете свое устройство. Здесь поможет только блокировка доступа к мессенджерам с помощью PIN-кода.
Преимущества использования сквозного шифрования
Подведем итоги всего вышесказанного. Итак, сквозное шифрование:
В то же время стоит понимать, что сквозное шифрование не гарантирует полной конфиденциальности. Если вы общаетесь на темы, которые запрещены в вашей стране, то привлечете к себе внимание правоохранительных органов. В таких случаях мессенджеру ничего не останется, кроме как открыть доступ к вашим данным.
Двойное шифрование
Наивным способом повысить безопасность алгоритма является шифрование блока дважды с двумя различными ключами. Сначала блок шифруется первым ключом, а затем получившийся шифротекст шифруется вторым ключом. Дешифрирование является обратным процессом.
Если блочный алгоритм образует группу (см. раздел 11.3), то всегда существует K3, для которого
В этом вскрытии криптоаналитику известны P1, C1, P2 и C2, такие что
Для такого вскрытия нужен большой объем памяти: 2 n блоков. Для 56-битового ключа нужно хранить 2 56 64-битовых блоков, или 10 17 байтов. Такой объем памяти пока еще трудно себе представить, но этого хватает, чтобы убедить самых параноидальных криптографов в том, что двойным шифрованием пользоваться не стоит.
При 128-битовом ключе для хранения промежуточных результатов потребуется 10 39 байтов. Если предположить, что есть способ хранить бит информации, используя единственный атом алюминия, устройство памяти, нужное для выполнения такого вскрытия, будет представлять собой алюминиевый куб с ребром, длиной 1 км. Кроме того, вам понадобится куда-то его поставить! Вскрытие «встреча посередине» кажется невозможным для ключей такого размера.
Другим способом двойного шифрования, который иногда называют Davies-Price, является вариантом CBC [435].
Утверждается, что «у этого режима нет никаких особых достоинств», к тому же он, по видимому, так же чувствителен ко вскрытию «встреча посередине» как и другие режимы двойного шифрования.
Шифруйся грамотно! Почему мессенджеры не защитят тайну твоей переписки
Содержание статьи
Шифрование в мессенджерах
Написать эту статью меня подтолкнуло исследование Obstacles to the Adoption of Secure Communication Tools (PDF). Как выяснили его авторы, «подавляющее большинство участников опроса не понимают основную концепцию сквозного шифрования». Проще говоря, люди обычно выбирают мессенджер сердцем, а не мозгом.
Начнем с того, что E2EE имеет свои особенности в каждом мессенджере. В Signal оно почти образцовое. В WhatsApp формально такое же, как в Signal, за исключением одного очень важного момента: смена основного ключа абонента WhatsApp не блокирует отправку ему сообщений. Максимум можно включить бесполезное уведомление (которое отключено в дефолтных настройках). В Viber сквозное шифрование неактивно по умолчанию, да и появилось только в шестой версии. В Telegram E2EE также используется только в секретных чатах, причем реализованы они довольно странно.
Конфликт Роскомнадзора с Telegram вообще создал отличную рекламу последнему. Рядовые пользователи теперь считают творение Дурова настоящей занозой в спине спецслужб (или чуть пониже ее), которые ничего не могут сделать с пуленепробиваемым инновационным сервисом. Поклонники Telegram сравнивают его с Signal и утверждают о превосходстве первого.
Однако в криптографии не бывает чудес, и особенно — в прикладной. Многие математически красивые идеи оказываются безнадежно испорчены реализацией, когда удобство и подконтрольность ставят выше безопасности и приватности (а так происходит практически всегда).
Исходно в мессенджерах применялся протокол OTR (Off-the-Record). Он использует симметричное шифрование AES в режиме CTR, протокол обмена ключами DH и хеш-функцию SHA-1. Схема AES-CTR обеспечивает так называемое «спорное» (в хорошем смысле) шифрование и возможность отрицания авторства текста, если его перехватят. Всегда можно сослаться на то, что перехвативший трафик сам изменил шифротекст так, чтобы он соответствовал другому варианту расшифровки той же длины. Например, вместо «сходи за хлебом» получилось «отрави королеву» — технически это возможно, и такое свойство специально заложено в алгоритм.
Протокол OTR выполняет аутентификацию собеседников и шифрует переписку между ними. Он безопасен до тех пор, пока участники разговора регулярно проверяют отпечатки открытых ключей друг друга и противостоят атакам по другим векторам (включая социальный инжиниринг).
Главный недостаток OTR заключается в том, что после отправки нового ключа требуется дождаться подтверждения от собеседника. Если он офлайн, то связь будет временно невозможна. Одним из выходов стал алгоритм Double Ratchet (DR), разработанный пять лет назад Тревором Перрином и Мокси Марлинспайком в Open Whisper Systems. Сегодня DR используется в Signal, WhatsApp, Viber и многих других мессенджерах, поддерживающих сквозное шифрование по умолчанию или как отдельную опцию (секретные чаты).
Упрощенная схема алгоритма Double Ratchet (источник: signal.org). Алиса и Боб начинают сессию, обмениваясь публичными ключами
Сквозное шифрование
Схема E2EE использует комбинацию из криптографических систем с открытым и закрытым ключом. Она очевидна в общих чертах и довольно сложна на уровне деталей. В ней используется масса взаимосвязанных ключей, часть из которых обязательно попадает на сервер и, более того, обязательно загружается на него до начала переписки, чтобы ее можно было начать в произвольный момент. Давай рассмотрим ее подробнее.
Начало схемы ты наверняка знаешь, поскольку оно стандартно для всех систем асимметричного шифрования, — генерируется пара ключей. Это необходимо потому, что криптосистемы с одним ключом (вроде AES) использовать в переписке в чистом виде слишком трудно. С ними пришлось бы как-то организовывать защищенный канал для передачи ключа (например, встречаться лично), а потом делать это снова при каждой его смене.
Тут же все как в привычном PGP: есть два собеседника (Алиса и Боб), каждый из которых генерирует свою пару ключей. Затем они обмениваются публичными ключами, сохраняя в тайне парные им секретные. Публичные ключи передаются по открытому каналу (на то они и публичные, пусть перехватывают на здоровье) и служат для двух целей: они позволяют зашифровать сообщение и проверить его подпись. Соответственно, секретные ключи используются для расшифровки и формирования подписи.
Термин «сообщение» используется здесь в широком смысле. Сообщением может быть текст, медиафайл или служебные метаданные, которыми мессенджер обменивается с сервером. Часть этих данных содержит временные метки, состояние клиентского приложения и новые ключи.
Такая криптосистема кое-как работает в электронной почте, поскольку это сервис для доставки отдельных зашифрованных сообщений произвольной длины. Пользуясь им, собеседники не обязаны одновременно быть онлайн. Все сообщения накапливаются на сервере и скачиваются с него по требованию после того, как пользователь успешно пройдет авторизацию. Расшифровка происходит локально при помощи секретных ключей, которые никуда не передаются. Почта с PGP популярна, но работает далеко не идеально. Почему? См. статью «Алиса и Боб в стране PGP».
К сожалению, в чистом виде схема асимметричного шифрования также не годится для мессенджеров, поскольку эти сервисы ориентированы на интенсивную онлайновую переписку в виде цепочки коротких сообщений. Они должны отображаться в строго определенном порядке, а собеседник может в любое время оказаться офлайн и нарушить структуру диалога.
К тому же шифровать множество коротких сообщений одним ключом — плохая идея. Всего за день переписки их создаются сотни (если не тысячи). Во многих сообщениях количество шифротекста минимальное и предсказуемое (смайлик, стикер). Также у них есть стандартные заголовки, которые упрощают криптоанализ.
Особенность переписки в мессенджерах в том, что из-за типовых метаданных за короткое время атакующий может перехватить большой объем предсказуемого шифротекста. Его львиная доля будет соответствовать известному открытому тексту. Если она будет шифроваться одним ключом, то при успешной атаке окажутся скомпрометированными все ранее написанные сообщения и даже те, которые собеседники напишут в будущем.
Чтобы этого не происходило, в мессенджерах предусмотрены такие свойства, как прямая и обратная секретность. Они подразумевают невозможность прочитать отправленные ранее и написанные в будущем сообщения, имея на руках только текущий ключ шифрования. Для этого используется многослойное шифрование с переходом от асимметричной к симметричной криптографии и дополнительные ключи с разным временем жизни.
Диффи, Хеллман! Дайте три!
Из открытой документации известно, что в Telegram аутентифицированное распределение ключей обеспечивает классический протокол Диффи — Хеллмана (DH). Он создает мост между асимметричным (RSA) и симметричным (AES) шифрованием, давая возможность энному количеству собеседников вести зашифрованную переписку, передав только публичные ключи по открытому каналу. Для этого в нем генерируются сессионные ключи, представляющие собой общий секрет или общий эфемерный ключ. Он вычисляется на основе секретного ключа одного собеседника и публичного ключа другого. Эфемерные ключи аутентифицируются долговременными открытыми ключами.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее