Русский
Русский
English
Статистика
Реклама

Aes

Математические бэкдоры в алгоритмах шифрования

07.12.2020 12:09:16 | Автор: admin

Мы привыкли полагаться на современные алгоритмы шифрования. Однако, действительно ли они так безопасно защищают наши данные? Давайте разберёмся с таким понятием как математический бэкдор, что он из себя представляет и как работает.


Введение

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

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

  1. Суд ФБР и Apple

  2. История взаимодействия Роскомнадзора и Telegram

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

А вообще, узнать больше про терроризм как феномен информационного общества можно тут.

Inspiration

Данная статья вдохновлена выступлением французских исследователей на конференции Black Hat в 2017 году. Для более детального изучения статья и книга.

Как работают алгоритмы шифрования?

Обобщённо можно сказать, что основой любого шифра является некоторая общая информация доступная только отправителю и получателю. В случае шифра Цезаря это было число, на которое производится сдвиг. Или, например, известна история когда во время Второй мировой войны морские пехотинцы США завербовали и обучили людей из племени индейцев навахо, свободно владеющих языком навахо. Это был привлекательный способ использования кодирования, мало людей не из племени знали этот язык, а также не было никаких опубликованных книг на языке навахо. В данном случае общей информацией было знание языка навахо.

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

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

  1. Симметричные

  2. Ассиметричные

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

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

В данной статье будет рассмотрен возможный механизм создания уязвимости в системах с симметричным шифрованием.

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

Современные алгоритмы симметричного шифрования

К симметричным алгоритмам шифрования можно отнести такие игрушечные алгоритмы шифрования, как:

Говоря же о серьёзных алгоритмах, симметричные алгоритмы шифрования можно разбить на две подгруппы: Потоковые, где каждый бит шифруется отдельно с помощью так называемого гаммирования, побитового сложения битов сообщения с битами, получаемыми от генератора псевдослучайных чисел. И блочные , которые оперируют группами бит фиксированной длины - блоками, характерный размер которых меняется в пределах 64256 бит.

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

Ещё немного занудства

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

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

Эта статья поможет вам детально разобраться с симметричными алгоритмами шифрования.

На данный момент времени, в основном используются блочные шифры. Например, широко известный AES, как раз симметричный блочный алгоритм шифрования. Ровно как и наш подозреваемый - симметричный блочный алгоритм шифрования, который незамысловато называется Backdoored Encryption Algorithm 1, BEA-1 сокращённо. Давайте разберёмся, где же там спрятан бэкдор.

Ещё немного про уязвимости

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

Цитата

Recent years have shown that more than ever governments and intelligence agencies try to control and bypass the cryptographic means used for the protection of data. Backdooring encryption algorithms is considered as the best way to enforce cryptographic control. Until now, only implementation backdoors (at the protocol, implementation or management level) are generally considered.

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

Цитата

In this paper we propose to address the most critical issue of backdoors: mathematical backdoors or by-design backdoors, which are put directly at the mathematical design of the encryption algorithm. While the algorithm may be totally public, proving that there is a backdoor, identifying it and exploiting it, may be an intractable problem.

К слову, примерно так и должен выглядеть идеальный бэкдор:
  • сложно обнаружить

  • можно использовать многократно

  • легко отрицать выглядит, как ошибка, и в случае обнаружения, разработчик может сослаться на то, что допустил эту ошибку случайно и злого умысла не имел

  • эксплуатируем только при знании секрета только тот, кто знает, как активируется бэкдор, может им воспользоваться

  • защищён от компрометации предыдущими использованиями даже если бэкдор был обнаружен, то невозможно установить, кем он до этого эксплуатировался, и какой информацией завладел злоумышленник

  • сложно повторить даже если бэкдор был кем-то найден, то его невозможно будет использовать в другом коде или в другом устройстве.

Согласно нынешним стандартам алгоритм должен быть устойчивым как к линейному так и к дифференциальному криптоанализу. BEA-1, по всем критериям текущих стандартов, как раз подходит под описание надёжного алгоритма, он устойчив как к линейному так и дифференциальному криптоанализу.

Цитата

Considering a particular family (among all the possible ones), we present BEA-1, a block cipher algorithm which is similar to the AES and which contains a mathematical backdoor enabling an operational and effective cryptanalysis. The BEA-1 algorithm (80-bit block size, 120-bit key, 11 rounds) is designed to resist to linear and differential cryptanalyses.

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

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

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

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

Интересно рассмотреть гипотетические примеры бэкдоров в современных алгоритмах:

Уязвимость псевдослучайного генератора DUAL_EC_DRBG

DUAL_EC_DRBG - был разработан вАНБи стандартизован в качествекриптографически стойкого генератора псевдослучайных чиселнациональным институтом стандартов и технологий СШАNISTв 2006 году. Однако уже в 2007 году независимыми исследователями было высказано предположение, что в этот алгоритм мог быть встроен бэкдор. Раз и два.

Согласно статье о бэкдоре в DUAL_EC_DRBG также говорил Сноуден.

A concrete example is the pseudorandom number generatorDual_EC_DBRG designed by NSA, whose backdoor was revealed by Edward Snowden in 2013 and also in some research works.

Ошибка в реализации протокола проверки сертификатов TLS Apple

Исследователями компании Яндекс была обнаружена уязвимость в реализации протоколаTLSв одном из программных продуктовApple. По их мнению, данная ошибка вполне может оказаться бэкдором, намеренно встроенным в алгоритм кем-то из разработчиков. Ниже участок кода с ошибкой

static DSStatus SSLVerifySignedServerKeyExchnge(....){     DSStatus err;     ....     if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)          goto fail;          goto fail;     if ((SSHashSHA1.final(&hashCtx, &hashOut)) != 0)          goto fail;     ....     fail:          ....          return err;}

Как можно видеть, после первого оператораifстоят две строчкиgoto fail, и вторая строчка выполняется всегда, независимо от результатаif. Таким образом процедура проверки сертификата проходит не полностью. Злоумышленник, знающий об этой уязвимости, может подделать сертификат и пройти проверку подлинности. Это позволит ему организовать атаку типа"Man-in-the-middle", тем самым вмешаться в защищённое соединение между клиентом и сервером. Исследователи, обнаружившие данную ошибку в реализации, не могут точно сказать, намеренно она была сделана или случайно. Вполне возможно, что это бэкдор, встроенный в алгоритм кем-то из разработчиков.

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

Ну так где же кроется уязвимость в BEA-1?

Для того чтобы разобраться в том, где кроется уязвимость, придётся погрузиться в дебри математики, на которых базируются современные блочные алгоритмы шифрования. Основа теории кодирования - поля Галуа. Очень качественно и детально про это написано вот тут. Облегчая математическую нагрузку, предлагаю для начала разобраться с тем, что такое Substitution-Permutation Networks, основа современных блочных алгоритмов шифрования.

SP сеть - это вычислительная сеть, которая состоит из S-блоков, P-блоков и операций побитового XOR с секретными ключами. Любая двоичная функция может быть сведена к S-блоку, некоторые функции к P-блоку. Например, к P-блоку сводится циклический сдвиг. Такие функции, как правило, легко реализуются в аппаратуре, обеспечивая при этом хорошую криптостойкость. С точки зрения реализации, S и P блоки представляют собой таблицы подстановки.

Substitution-Permutation NetworkSubstitution-Permutation Network

Шифр на основе SP-сети получает на вход блок и ключ и совершает несколько чередующихся раундов, состоящих из чередующихся стадий подстановки (англ. substitution stage) и стадий перестановки (англ. permutation stage). Стоит отметить, что S и P блоки одинаковы для всех раундов. В целях повышения безопасности на каждом раунде используются разные ключи (обозначены как K_i на изображении). Можно обратить внимание, на то что в последнем раунде нет P блока и используется два раунда

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

Так выглядит S-блок для алгоритма шифрования Rijndael, основы стандарта AESТак выглядит S-блок для алгоритма шифрования Rijndael, основы стандарта AES

P-блок перестановка всех бит: блок получает на вход вывод S-блоков, меняет местами все биты и подает результат S-блокам следующего раунда. Важным качеством P-блока является возможность распределить вывод одного S-блока между входами как можно большего количества S-блоков следующего раунда. То есть, P-блок - это линейное, или как его еще называют, аффинное преобразование.

Как было умно написано в Википедии

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

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

Расшифровка происходит с помощью обратного хода процесса, с использованием инвертированных S и P блоков (обратное преобразование) и раундовых ключей. Стоит отметить, что не зная секретный ключ расшифровать зашифрованное таким образом сообщение будет крайне трудно. Это займёт очень много времени.

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

  • Применения нелинейности в виде S-блоков

  • Линейного преобразования в виде P-блока

  • Побитового XOR с раундовым ключом

Последний раунд не содержит P-блока, но в нём используются два раундовых ключа.

Не знаю как вы, но я себя чувствую смотрящим на мастерскую игру напёрсточника. Давайте попробуем угадать, где же нас тут могли обмануть. Перестановка бит выглядит безобидно, суммирование с ключом тоже. Остаётся предположить, что S-блоки выглядят подозрительно.

Действительно, бекдор может скрываться в S-блоках, но всё не так просто. Попытаюсь объяснить максимально просто и не грузить вас сложной математикой полей Галуа. Но если вы чувствуете в себе силы разобраться с математикой сами, прошу сюда .

Чуть более подробно про BEA-1

Для наилучшего понимания того, как устроена уязвимость я приведу некоторую информацию касательно реализации шифра BEA-1, построенного на вычислительной SP сети.

Этот блочный шифр:

  • Оперирует с блоками данных в 80 бит

  • Мастер ключ имеет размер в 120 бит, на базе этого ключа происходит вычисление ключей для каждого раунда, по процедуре ExpandKey, описанной в статье

  • Состоит из 11 раундов, из которых 10 одинаковые, а последний требует два раундовых ключа. Таким образом, необходимо 12 раундовых 80-битных ключей

Цитата

The encryption consists in applying eleven times a simple keyed operation called /round function/to the data block. A different 80-bit round key is used for each iteration of the round function. Since the last round is slightly different and uses two round keys, the encryption requires twelve 80-bit round keys. These round keys are derived from the 120-bit master key using an algorithm called key schedule

Больше деталей!

Для вашего удобства привел реализацию алгоритмов из статьи

Алгоритм генерации раундов ключей на базе мастер ключаАлгоритм генерации раундов ключей на базе мастер ключаАлгоритм шифрованияАлгоритм шифрованияАлгоритм расшифровкиАлгоритм расшифровкиПроцедура генерации раундовых ключей на базе мастер ключаПроцедура генерации раундовых ключей на базе мастер ключаТак выглядит один раунд алгоритма шифрованияТак выглядит один раунд алгоритма шифрования

На Fig. 2. P-блоки обозначены как M

В случае с алгоритмом BEA-1, который удовлетворяет современным стандартам шифрования для взлома в лоб потребуется перебор по огромному числу вариантов. Стоит заметить, что такой перебор невозможен, потому что шифр оперирует с блоками размером 80 бит, то есть множество всех открытых текстов (и шифротекстов) имеет размер равный 2^80.

Цитата

Consequently, a differential cryptanalysis of the 10-round version of our cipher would require at least 2^117 chosen plaintext/ciphertext pairs and a linear cryptanalysis would require 2^100 known plaintext/ciphertext pairs.

Максимально подробное описание данного алгоритма можно найти в оригинальной статье, там приведены все данные.

Загадочные S-блоки и их секретные напарники

Математическая уязвимость в алгоритме BEA-1 кроется в так называемых Secret S-boxes, секретных S-блоках. Их можно условно назвать напарниками обычных S-блоков и они многократно упрощают процесс перебора, необходимого для взлома алгоритма.

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

Чтобы не быть голословным, для алгоритма BEA-1 для S0, S1, S2 количество входных данных для которых выходные данные секретного S-блока и обычного одинаковы есть 944 (из 1024, так как блоки работают с сегментами данных по 10 бит) для S3 это число 925 (также из 1024)

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

Для процесса перебора необходимо некоторе количество известных пар (открытий текст, зашифрованный текст). Для взлома BEA-1 необходимо 30.000 таких пар, то есть (2 300 Kb) данных, сам процесс взлома занимает порядка 10 секунд на intel Core i7, 4 cores, 2.50GHz.

Стандарты алгоритмов шифрования

В статье несколько раз упоминалось про стандарты, распространяющиеся на современные алгоритмы шифрования, предлагаю уделить этому моменту больше внимания. Стандарт шифрования подразумевает полное описание алгоритма шифрования с S и P блоками. В рамках стандарта размер ключа и количество раундов может варироваться. Как правило такой стандарт создаётся в процессе конкурса, где разные компании предлагают свои реализации алгоритма шифрования, которые должны быть устойчивы ко всем известным видам криптоанализа. В частности, устаревший ныне стандарт DES был разработан на базе алгоритма шифрования Люцифер компании IBM.

Сейчас в основном используется стандарт AES, например шифрование данных на устройствах компании Apple соответсвует этому стандарту. Упомянутый французскими исследователями. Backdoored Encryption Algorithm 1 был создан по образу и подобию алгоритма Rijndael, который как раз таки лёг в основу стандарта AES. Если вам интересно, то вот тут можно посмотреть S-блоки и реализацию стандарта AES, а тут можно посмотреть хардверную реализацию алгоритма Rijandel.

Предшественником стандарта AES был упомянутый ранее DES, также блочный шифр. Интересна история, когда в конце 1970 к разработке S-блоков приложило руку АНБ. Агенство Национальной Безопасности обвиняли в сознательном снижении криптостойкости данного алгоритма.

Однако в 1990 году Эли Бихам и Ади Шамир провели независимые исследования по дифференциальному криптоанализу основному методу взлома блочных алгоритмов симметричного шифрования. Эти исследования сняли часть подозрений в скрытой слабости S-перестановок. S-блоки алгоритма DES оказались намного более устойчивыми к атакам, чем если бы их выбрали случайно. Это означает, что такая техника анализа была известна АНБ ещё в 1970-х годах. Авторы статьи уделили этому моменту внимание. Они выразили опасение, что алгоритмы начала 1990 могли быть слабыми к дифференциальному криптоанализу.

Цитата

The best historic example is that of the differential cryptanalysis. Following Biham and Shamirs seminal work in 1991, NSA acknowledged that it was aware of that cryptanalysis years ago Most of experts estimate that it was nearly 20 years ahead. However a number of non public, commercial block ciphers in the early 90s might have been be weak with respect to differential cryptanalysis.

Про отечественные стандарты шифрования хорошо написано вот тут. В частности, на блочные шифры распространяется ГОСТ 34.12-2018. Если что, S-блоки там обозначены как \pi , это если вам вдруг захочется поискать бэкдоры в отечественных алгоритмах. Приведу ряд статей про странности S-блоков отечественных алгоритмов шифрования: раз, два и три.

Интересны размышления на тему создания математического бэкдора для уже существующего стандарта шифрования. В комментариях к статье @pelbylна похожую тему возник такой вопрос. Бесспорно, обладая сильной математической базой и хорошей смекалкой для уже существующего стандарта шифрования можно разработать "секретные S-блоки", которые бы могли незначительно ускорить процесс взлома зашифрованного сообщения. Однако на расшифровку сообщения, даже в таком случае, сообщения может потребоваться очень продолжительный промежуток времени. Разработка же "секретных S-блоков", которые могли бы значительно ускорить взлом алгоритма для существующих стандартов шифрования, до минут или хотя бы дней, является невероятно сложной вычислительной задачей. Хотя бы потому что эти стандарты разрабатывают самые умные люди планеты, которые могли сделать защиту от такой атаки. Но нельзя исключать возможность, что кому-то может повезти и он по счастливой случайности сможет вычислить идеальные секретные S-блоки для того же AES. Хочется добавить, что такое открытие может принести очень много денег.

Возвращаясь к новости про взлом айфона террориста, упомянутой в начале статьи, ФБР всё таки удалось его взломать, по разным оценкам они потратили на это около миллиона долларов (1.3M USD). Про сам процесс взлома известно немного.

Что известно

Взято отсюда

В деле фигурирует iPhone 5C под iOS9, в котором установлена система на кристалле A6. В нём тоже может быть включено уничтожение данных после 10 попыток. В телефоне нет аппаратного Secure Enclave. В этой модели многие функции безопасности обеспечиваются на уровне операционной системы. Поэтому для взлома может понадобиться всего лишь специальное обновление операционки. После этого единственным ограничением останется частота получения ключа шифрования раз в 80 миллисекунд. Впрочем, всё это является мнением экспертов.

Суть далеко не в шифровании или технической возможности взломать его. Включённое по умолчанию шифрование в iOSпоявилосьещё в восьмой версии осенью 2014 года. Уже тогда американские спецслужбы начали проявлять беспокойство и недовольство новыми мерами безопасности. ФБР очень не понравилось, что получать доступ к данным будет невозможно. А доступ нужен, чтобы преследовать преступников и предотвращать терроризм, утверждает спецслужба. Директор ФБР Джеймс Коуми предложил ввести прозрачную, понятную процедуру, которую он назвал front door. Также он высказался против бэкдоров. Эксперты по компьютерной безопасности назвали подобное подменой понятий. Позднее ФБРобратилосьс предложением законодательно обязать производителей оставлять лазейки.

Скрытое противостояние переродилось в конфликт после дела о массовом убийстве в Сан-Бернандино. В ходе расследования потребовалось получить доступ к данным на служебном iPhone 5C одного из фигурантов дела. Apple в суде обязали создать инструмент для подбора пользовательского пароля. 16 февраля Тим Кукопубликовалоткрытое письмо, в котором он назвал подобное бэкдором.

Однако летом 2020 китайские хакеры из объединения Pangu сообщили о взломе чипа Secure Enclave. Эти ребята занимаются Jailbreak-ом.

Более подробно про взаимодействие Apple и ФБР касательно предоставления бэкдора (на английском).

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

Так как теперь шифровать?

После изучения этой темы ко мне начала подкрадываться лёгкая паранойя: как быть, если нет никаких гарантий, что алгоритм, соответсвующий всем современным стандартам безопасности, не содержит в себе бэкдора. Одно дело, когда такая уязвимость была создана непреднамеренно, о ней никто не знает, её сложно обнаружить и вряд ли кто-то сможет сделать это. И другое, когда она была заботливо разработана и расположена в недрах S-блоков.

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

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

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

Подробнее..

Миф про мобильный CHACHA20

02.03.2021 14:06:25 | Автор: admin

При подготовке Методики расчета Индекса надежности HTTPS мы перерыли массу тематической литературы и не раз сталкивались с рекомендацией поддерживать на веб-сервере шифронаборы на основе алгоритма шифрования CHACHA20 в целях снижения нагрузки на мобильные клиенты, которые не умеют в аппаратный AES. В этом контексте обычно упоминались процессоры Mediatek и скопом старые бюджетные мобильные процессоры.

Действительно ли CHACHA20 со своим верным спутником POLY1305 позволяют не слишком греться мобильным клиентам и стоит ли его поддерживать на веб-сервере? Давайте это обсудим!

CHACHA20 был создан известным специалистом по криптографии Дэниэлом Бернштейном, которого мы любим, в частности, за Curve25519, а также за правозащитную деятельность, благодаря которой только олдфаги помнят, что означало _EXPORT_ в имени шифронабора. Алгоритм неплохо изучен, работает в AEAD-режиме, не имеет известных слабостей и уязвимостей, и является одним из двух алгоритмов шифрования, одобренных IETF для использования в TLS 1.3 (второй бессмертный AES).

Его теоретическая криптостойкость при использовании в TLS оценивается по-разному, в интервале между AES-128 и AES-256 в режиме GCM, что считается достаточным по сегодняшним меркам и на обозримую перспективу. При этом отмечается, что CHACHA20 быстрее AES, т.е. потребляет меньше процессорных ресурсов на обеспечение того же уровня криптостойкости. Эта формулировка не только отдает душком телемаркетинга (при всем уважении к ее автору), но и упускает важную деталь: на процессорах без аппаратной поддержки AES.

И тут мы наконец возвращаемся к бюджетным мобильным процессорам, которые перегреваются под AES, начинают троттлить и требовать жидкого азота (сарказм). Производители процессоров в курсе проблемы и решили ее добавлением соответствующего набора инструкций. В x86-совместимых процессорах это AES-NI, в других свои названия (и свой набор). И тут мы переходим к самому интересному: поддержке AES процессорами.

Intel представил поддержку AES-NI в 2010 году в процессорах архитектуры Westmere, причем далеко не во всех: Atom, Celeron, Pentium и Core i3 она еще долго не полагалась. В поддержке AES-NI без копания в спецификациях можно быть уверенным только начиная с архитектуры Goldmont (Apollo Lake и Denverton), а это уже 2016 год.

У AMD это архитектуры Bulldozer (2011) и Jaguar (2013 год), с ARM все сложнее: поддержка AES-инструкций предусмотрена в архитектуре ARMv8-A (2011 год, первое устройство 2013 год), но фактическое воплощение их в кремнии зависит от производителя процессора и я лично не стал бы так уверенно свистеть про старые бюджетные мобильные процессоры, скорее стоит говорить о не флагманских мобильных процессорах вообще, в т.ч. выпускаемых поныне.

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

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

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

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

Давайте вспомним, как вообще происходит согласование шифронабора при установлении HTTPS-соединения: клиент передает серверу список поддерживаемых им шифронаборов, в порядке от балды и изменить этот порядок можно только через групповые политики Windows и только для Internet Explorer браузеров, использующих SChannel (поправьте, если ошибаюсь). Сервер сравнивает полученный от клиента список со списком поддерживаемых им самим шифронаборов и сообщает клиенту, какой из них он выбрал для защиты соединения. Если на сервере задан приоритет шифронаборов, согласован будет первый совпавший в обоих списках с учетом заданного на сервере приоритета. Если не задан, то админу сервера надо оторвать руки мы погружаемся в область неизведанного теории вероятностей.

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

И тут в эту стройную картину мира влезает шифронабор на базе CHACHA20, который мы добавляем из соображений снижения нагрузки на слабых с аппаратной точки зрения клиентов, ничего не зная о том, являются ли они одновременно устаревшими или нет (т.е. флагманом этого года от третьеразрядной китайской компании или середнячком пятилетней давности от первостатейного бренда). Клиент сообщает, что поддерживает TLS 1.3 и полный комплект соответствующих шифронаборов, как на базе AES, так и на базе CHACHA20. Ваше решение, админ, какой шифронабор согласовываем клиенту? Вот и я о том же

Резюмирую вышесказанное по поводу алгоритма шифрования CHACHA20.

  1. Алгоритм вполне себе хорош и годится для использования в TLS.
  2. Шифронаборы на его основе поддерживаются только достаточно современным браузерами, так что совсем без AES пока никуда.
  3. Выигрыш в производительности от его использования можно получить не только лишь на старых бюджетных мобильных процессорах, но и на десктопах и серверах. На процессорах с аппаратной поддержкой AES, ситуация меняется на прямо противоположную.
  4. При установлении HTTPS-соединения не существует способа узнать, поддерживает ли процессор клиента AES на аппаратном уровне. Соответственно, нет способа узнать, какой шифронабор окажется быстрее в каждом конкретном случае.
Подробнее..

Лучший в своем классе история появления стандарта шифрования AES

05.08.2020 22:05:40 | Автор: admin


C мая 2020 года в России стартовали официальные продажи внешних винчестеров WD My Book, поддерживающих аппаратное шифрование AES с 256-битным ключом. В силу законодательных ограничений, ранее подобные устройства можно было приобрести лишь в зарубежных интернет-магазинах электроники либо на сером рынке, однако теперь обзавестись защищенным накопителем с фирменной 3-летней гарантией от Western Digital может любой желающий. В честь этого знаменательного события мы решили сделать небольшой экскурс в историю и разобраться, как появился Advanced Encryption Standard и чем же он так хорош по сравнению с конкурирующими решениями.

Долгое время официальным стандартом симметричного шифрования в США являлся DES (Data Encryption Standard стандарт шифрования данных), разработанный компанией IBM и внесенный в перечень Федеральных стандартов обработки информации в 1977 году (FIPS 46-3). В основу алгоритма легли наработки, полученные в ходе исследовательского проекта под кодовым названием Lucifer. Когда 15 мая 1973 года Национальное бюро стандартов США объявило о проведении конкурса, целью которого стало создание стандарта шифрования для госучреждений, американская корпорация включилась в криптографическую гонку с третьей версией Люцифера, использовавшей обновленную сеть Фейстеля. И наряду с другими конкурсантами потерпела фиаско: ни один из алгоритмов, представленных на первый конкурс, не соответствовал строгим требованиям, сформулированным экспертами НБС.



Разумеется, в IBM не могли просто так смириться с поражением: когда 27 августа 1974 года конкурс был перезапущен, американская корпорация вновь подала заявку, представив улучшенную версию Lucifer. На сей раз у жюри не оказалось ровным счетом ни одной претензии: проведя грамотную работу над ошибками, IBM успешно устранила все недочеты, так что придраться оказалось не к чему. Одержав убедительную победу, Люцифер сменил имя на DES и уже 17 марта 1975 года был издан в Федеральном реестре.

Однако в ходе открытых симпозиумов, организованных в 1976 году с целью обсуждения нового криптографического стандарта, DES подвергся жесткой критике со стороны экспертного сообщества. Причиной этого стали изменения, внесенные в алгоритм специалистами АНБ: в частности, была уменьшена длина ключа до 56 бит (изначально Lucifer поддерживал работу с 64- и 128-битными ключами), а также изменена логика работы блоков перестановки. По мнению криптографов, улучшения не имели смысла и единственное, к чему стремилось Агентство национальной безопасности, внедряя модификации, получить возможность беспрепятственно просматривать зашифрованные документы.

В связи с перечисленными обвинениями, при Сенате США была создана специальная комиссия, целью работы которой стала проверка обоснованности действий АНБ. В 1978 году по итогам расследования был опубликован доклад, в котором сообщалось следующее:

  • представители АНБ участвовали в доработке DES лишь косвенно, при этом их вклад касался только изменения работы блоков перестановки;
  • окончательная версия DES оказалась более устойчивой к взлому и криптографическому анализу, чем предыдущая, так что внесенные изменения были обоснованы;
  • длины ключа 56 бит более чем достаточно для подавляющего большинства приложений, ведь для взлома такого шифра потребуется суперкомпьютер стоимостью как минимум несколько десятков миллионов долларов, а поскольку у обычных злоумышленников и даже профессиональных хакеров подобных ресурсов нет, то и беспокоиться не о чем.

Выводы комиссии частично подтвердились в 1990 году, когда израильские криптографы Эли Бихам и Ади Шамир, работая над концепцией дифференциального криптоанализа, провели большое исследование блочных алгоритмов, в числе которых оказался и DES. Ученые пришли к выводу, что новая модель перестановок оказалась намного более устойчивой к атакам, чем изначальная, а значит, АНБ действительно помогло ликвидировать несколько дыр в алгоритме.


Ади Шамир

В то же время ограничение на длину ключа оказалось проблемой, и притом весьма серьезной, что в 1998 году убедительно доказала общественная организация Electronic Frontier Foundation (EFF) в рамках эксперимента DES Challenge II, проведенного под эгидой RSA Laboratory. Специально для взлома DES был построен суперкомпьютер, получивший кодовое название EFF DES Cracker, над созданием которого трудились Джон Гилмор, сооснователь EFF и руководитель проекта DES Challenge, и Пол Кочер, основатель компании Cryptography Research.


Процессор EFF DES Cracker

Разработанная ими система смогла успешно подобрать ключ к зашифрованному образцу методом простого перебора всего за 56 часов, то есть менее чем за трое суток. Для этого DES Cracker потребовалось проверить около четверти всех возможных комбинаций, а это значит, что даже при самом неблагоприятном стечении обстоятельств на взлом уйдет около 224 часов, то есть не более 10 суток. При этом стоимость суперкомпьютера, с учетом затраченных на его проектирование средств, составила всего 250 тысяч долларов. Нетрудно догадаться, что сегодня взломать подобный шифр еще проще и дешевле: мало того, что железо стало куда мощнее, так еще и благодаря развитию интернет-технологий хакеру вовсе не обязательно покупать или арендовать необходимое оборудование вполне достаточно создать ботнет из зараженных вирусом ПК.

Данный эксперимент наглядно продемонстрировал, насколько DES морально устарел. А поскольку на тот момент алгоритм использовался в составе практически 50% решений в области шифрования данных (по оценке все той же EFF), вопрос о поиске альтернативы встал как никогда остро.

Новые вызовы новый конкурс




Справедливости ради стоит сказать, что поиски замены для Data Encryption Standard начались практически одновременно с подготовкой EFF DES Cracker: Национальный институт стандартов и технологий (NIST) США еще в 1997 году объявил о запуске конкурса алгоритмов шифрования, призванного выявить новый золотой стандарт криптобезопасности. И если в былые времена аналогичное мероприятие проводилось исключительно для своих, то, памятуя о неудачном опыте 30-летней давности, в NIST решили сделать конкурс полностью открытым: в нем могли принять участие любая компания и любое частное лицо, независимо от места дислокации или гражданства.

Такой подход оправдал себя еще на этапе отбора претендентов: среди авторов, подавших заявку на участие в конкурсе Advanced Encryption Standard, оказались и всемирно известные криптологи (Росс Андерсон, Эли Бихам, Ларс Кнудсен), и небольшие IT-компании, специализирующиеся на кибербезопасности (Counterpane), и крупные корпорации (немецкая Deutsche Telekom), и образовательные учреждения (Лёвенский католический университет, Бельгия), а также стартапы и небольшие фирмы, о которых мало кто слышал за пределами их стран (например, Tecnologia Apropriada Internacional из Коста-Рики).

Интересно, что в этот раз в NIST утвердили всего два основных требования к алгоритмам-участникам:

  • блок данных должен иметь фиксированный размер 128 бит;
  • алгоритм должен поддерживать как минимум три размера ключей: 128, 192 и 256 бит.

Добиться такого результата было сравнительно просто, но, как говорится, дьявол кроется в деталях: вторичных требований оказалось куда больше, а соответствовать им было куда сложней. Между тем именно на их основе рецензенты NIST и проводили отбор конкурсантов. Вот каким критериям должны были соответствовать претенденты на победу:

  1. способность противостоять любым криптоаналитическим атакам, известным на момент проведения конкурса, включая атаки по сторонним каналам;
  2. отсутствие слабых и эквивалентных ключей шифрования (под эквивалентными подразумеваются такие ключи, которые, хотя и имеют значительные отличия друг от друга, приводят к получению идентичных шифров);
  3. скорость шифрования стабильна и примерно одинакова на всех актуальных платформах (от 8- до 64-битных);
  4. оптимизация под многопроцессорные системы, поддержка распараллеливания операций;
  5. минимальные требования к объему оперативной памяти;
  6. отсутствие ограничений для использования в стандартных сценариях (в качестве основы для построения хэш-функций, ГПСЧ и т. д.);
  7. структура алгоритма должна быть обоснованной и простой для понимания.

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

Прием заявок на конкурс Advanced Encryption Standard продлился полтора года. Всего в нем приняли участие 15 алгоритмов:

  1. CAST-256, разработанный канадской компанией Entrust Technologies на базе CAST-128, созданного Карлайлом Адамсом и Стаффордом Таваресом;
  2. Crypton, созданный криптологом Че Хун Лим из южнокорейской компании Future Systems, занятой в сфере кибербезопасности;
  3. DEAL, концепт которого изначально предложил датский математик Ларс Кнудсен, а впоследствии его идеи развил Ричард Аутербридж, который и подал заявку на участие в конкурсе;
  4. DFC, совместный проект Парижской высшей педагогической школы, Национального центра научных исследований Франции (CNRS) и телекоммуникационной корпорации France Telecom;
  5. E2, разработанный под эгидой крупнейшей телекоммуникационной компании Японии Nippon Telegraph and Telephone;
  6. FROG, детище коста-риканской компании Tecnologia Apropriada Internacional;
  7. HPC, придуманный американским криптологом и математиком Ричардом Шреппелем из Университета Аризоны;
  8. LOKI97, созданный австралийскими криптографами Лоуренсом Брауном и Дженнифер Себерри;
  9. Magenta, разработанный Майклом Якобсоном и Клаусом Хубером для немецкой телекоммуникационной компании Deutsche Telekom AG;
  10. MARS от компании IBM, в создании которого принимал участие Дон Копперсмит один из авторов Lucifer;
  11. RC6, написанный Роном Ривестом, Мэттом Робшау и Рэем Сиднеем специально для конкурса AES;
  12. Rijndael, созданный Винсентом Рэйменом и Джоан Даймон из Лёвенского католического университета;
  13. SAFER+, разработанный калифорнийской корпорацией Cylink совместно с Национальной академией наук Республики Армения;
  14. Serpent, созданный Россом Андерсоном, Эли Бихамом и Ларсом Кнудсеном;
  15. Twofish, разработанный исследовательской группой Брюса Шнайера на базе криптографического алгоритма Blowfish, предложенного Брюсом еще в 1993 году.

По итогам первого тура были определены 5 финалистов, среди которых оказались Serpent, Twofish, MARS, RC6 и Rijndael. Члены жюри нашли изъяны практически у каждого из перечисленных алгоритмов, кроме одного. Кто же оказался победителем? Немного продлим интригу и для начала рассмотрим основные достоинства и недостатки каждого из перечисленных решений.

MARS


В случае с богом войны эксперты отметили идентичность процедуры шифрования и дешифровки данных, однако этим его преимущества и ограничились. Алгоритм IBM вышел на удивление прожорливым, что делало его неподходящим для работы в условиях ограниченных ресурсов. Наблюдались проблемы и с распараллеливанием вычислений. Для эффективной работы MARS нуждался в аппаратной поддержке 32-битного умножения и вращения на переменное число бит, что опять же накладывало ограничения на перечень поддерживаемых платформ.

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

RC6


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

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

Twofish


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

Serpent


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

Rijndael


Rijndael оказался чрезвычайно близок к идеалу: алгоритм в полной мере удовлетворял требованиям NIST, при этом не уступая, а по совокупности характеристик заметно превосходя конкурентов. Слабых мест у Рейндала было лишь два: уязвимость к атакам по энергопотреблению на процедуру расширения ключа, что является весьма специфичным сценарием, и определенные проблемы с расширением ключа на лету (данный механизм работал без ограничений лишь у двух конкурсантов Serpent и Twofish). Кроме того, по оценкам экспертов, Рейндал имел несколько меньший запас криптостойкости, чем Serpent, Twofish и MARS, что, впрочем, с лихвой компенсировалось устойчивостью к подавляющему большинству разновидностей атак по сторонним каналам и широким спектром вариантов реализации.

Категория


Serpent


Twofish


MARS


RC6


Rijndael


Криптостойкость


+


+


+


+


+


Запас криптостойкости


++


++


++


+


+


Скорость шифрования при программной реализации


-




+


+


Скорость расширения ключа при программной реализации



-




+


Смарт-карты с большим объемом ресурсов


+


+


-



++


Смарт-карты с ограниченным объемом ресурсов



+


-



++


Аппаратная реализация (ПЛИС)


+


+


-



+


Аппаратная реализация (специализированная микросхема)


+



-


-


+


Защита от атак по времени выполнения и потребляемой мощности


+



-


-


+


Защита от атак по потребляемой мощности на процедуру расширения ключа






-


Защита от атак по потребляемой мощности на реализации в смарт-картах



+


-



+


Возможность расширения ключа на лету


+


+





Наличие вариантов реализации (без потерь в совместимости)


+


+




+


Возможность параллельных вычислений






+



По совокупности характеристик Рейндал на голову опережал конкурентов, так что результат финального голосования оказался вполне закономерен: алгоритм одержал уверенную победу, получив 86 голосов за и лишь 10 против. Serpent занял почетное второе место с 59 голосами, тогда как Twofish расположился на третьей позиции: за него вступился 31 член жюри. Вслед за ними следовал RC6, завоевав 23 голоса, а MARS закономерно оказался на последней строчке, получив лишь 13 голосов за и 83 против.

2 октября 2000 года Rijndael был объявлен победителем конкурса AES, по традиции сменив название на Advanced Encryption Standard, под которым он и известен в настоящее время. Процедура стандартизации продлилась около года: 26 ноября 2001 года AES был внесен в перечень Федеральных стандартов обработки информации, получив индекс FIPS 197. Новый алгоритм высоко оценили и в АНБ, а с июня 2003 года Агентство национальной безопасности США даже признало AES с 256-битным ключом шифрования достаточно надежным для обеспечения безопасности документов категории совершенно секретно.

Внешние накопители WD My Book с поддержкой аппаратного шифрования AES-256


Благодаря сочетанию высокой надежности и производительности, Advanced Encryption Standard быстро обрел мировое признание, став одним из самых популярных в мире алгоритмов симметричного шифрования и войдя в состав множества криптографических библиотек (OpenSSL, GnuTLS, Linux's Crypto API и др.). В настоящее время AES широко используется в приложениях корпоративного и пользовательского уровня, а его поддержка реализована во множестве разнообразных устройств. В частности, именно аппаратное шифрование AES-256 применяется во внешних накопителях Western Digital семейства My Book для обеспечения защиты сохраненных данных. Давайте познакомимся с этими девайсами поближе.



Линейка настольных жестких дисков WD My Book включает шесть моделей различной емкости: на 4, 6, 8, 10, 12 и 14 терабайт, что позволяет подобрать устройство, оптимально подходящее под ваши потребности. По умолчанию внешние HDD используют файловую систему exFAT, что обеспечивает совместимость с широким спектром операционных систем, включая Microsoft Windows 7, 8, 8.1 и 10, а также Apple macOS версии 10.13 (High Sierra) и выше. Пользователи ОС Linux имеют возможность смонтировать винчестер с помощью драйвера exfat-nofuse.

Подключение My Book к компьютеру осуществляется с помощью высокоскоростного интерфейса USB 3.0, обратно совместимого с USB 2.0. С одной стороны, это позволяет передавать файлы на максимально возможной скорости, ведь пропускная способность USB SuperSpeed составляет 5 Гбит/с (то есть 640 МБ/с), чего оказывается более чем достаточно. В то же время функция обратной совместимости обеспечивает поддержку практически любых устройств, выпущенных за последние 10 лет.



Хотя My Book и не требует установки дополнительного программного обеспечения благодаря технологии автоматического определения и конфигурирования периферических устройств Plug and Play, мы все же рекомендуем воспользоваться фирменным программным пакетом WD Discovery, который поставляется в комплекте с каждым устройством.



В состав набора вошли следующие приложения:

WD Drive Utilities


Программа позволяет получить актуальную информацию о текущем состоянии накопителя на основе данных S.M.A.R.T. и проверить жесткий диск на наличие битых секторов. Помимо этого, с помощью Drive Utilities можно оперативно уничтожить все сохраненные на вашем My Book данные: при этом файлы будут не просто стерты, но и полностью перезаписаны несколько раз, так что восстановить их по завершении процедуры уже не удастся.

WD Backup


Используя эту утилиту, можно настроить резервное копирование по заданному расписанию. Стоит сказать, что WD Backup поддерживает работу с Google Drive и Dropbox, при этом позволяя выбирать при создании бэкапа любые возможные сочетания источник-цель. Таким образом, вы можете настроить автоматический перенос данных с My Book в облако либо импортировать нужные файлы и папки из перечисленных сервисов как на внешний винчестер, так и на локальную машину. Помимо этого, предусмотрена возможность синхронизации с аккаунтом в социальной сети Facebook, что позволяет автоматически создавать резервные копии фотографий и видеозаписей из вашего профиля.

WD Security


Именно с помощью этой утилиты можно ограничить доступ к накопителю паролем и управлять шифрованием данных. Все, что для этого потребуется, указать пароль (его максимальная длина может достигать 25 символов), после чего вся информация на диске будет зашифрована, а доступ к сохраненным файлам сможет получить лишь тот, кто знает кодовую фразу. Для большего удобства WD Security позволяет создать список доверенных устройств, при подключении к которым My Book будет разблокироваться автоматически.

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

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

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

AES против осциллографа

14.12.2020 18:12:07 | Автор: admin

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

Введение

В 2007 году компания Nvidia представила первую версию CUDA программно-аппаратную архитектуру параллельных вычислений, позволяющую использовать графические ускорители для большего класса задач, нежели только рендеринг изображений. Переведя свои графические процессоры из разряда GPU в разряд GPGPU (General Purpose GPU), Nvidia сделала массивно-параллельные вычисления доступнее для широкого круга задач. В частности, видеопроцессоры оказались применимы к задачам шифрования, и разработчики криптографических библиотек воспользовались возможностью ускорить вычисления. К сожалению, как и любые электронные устройства, видеокарты излучают электромагнитные волны, и характер этого излучения зависит от конкретных действий графического процессора. Пристальное наблюдение за таким излучением позволило группе ученых из UCAS взломать шифр AES, узнав значение секретного ключа.

Краткое напоминание

Прежде чем перейти непосредственно к атаке, нелишним будет вспомнить основы CUDA и AES:

CUDA

CUDA (Compute Unified Device Architecture) это программно-аппаратная архитектура параллельных вычислений, предложенная компанией Nvidia для своих графических процессоров общего назначения. Давайте посмотрим на CUDA с двух различных ракурсов.

С точки зрения программиста

При написании программ, использующих CUDA, программист имеет дело со следующими сущностями:

  1. ядро (kernel) функция, исполняемая на GPGPU;

  2. сетка (grid) группа потоков, исполняющих код одного ядра;

  3. блок (block) составляющая сетки. Каждый блок --- это совокупность потоков и некоторого количества общей памяти;

  4. нить исполнения (поток, thread) составляющая блока.

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

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

С точки зрения CUDA

С точки зрения CUDA, GPGPU выглядит следующим образом (на этот раз движемся снизу вверх):

  1. Скалярный процессор (Scalar Processor, SP) ядро, исполняющее единомоментно один поток;

  2. Потоковый мультипроцессор (Streaming Multiprocessor, SM) совокупность нескольких SP, разделяемой памяти, нескольких 32-байтных регистров и общего блока формирования команд (Instruction Unit). Также SM обладает L1-кэшем, общим для всех SP. При назначении работ планировщиком каждому SM достается свой набор блоков сетки, исполняемых по очереди;

  3. GPU массив из SM, по которому распределяются блоки.

Ещё одна важная особенность работы GPGPU, не выраженная столь явно, связана с исполнением блоков. Каждый блок исполняется группами по 32 нити (warp). Внутри такой группы все потоки выполняют одну инструкцию над разными данными, то есть реализуют так называемую SIMT-архитектуру (Single Instruction Multiple Threads).

Более полное описание архитектуры GPGPU можно найти в Белой книге, на Вики и в официальной документации. Полезным может показаться и это обсуждение.

Для понимания атаки предоставленного описания должно быть достаточно.

AES

Advanced Encryption Standard (AES), также известный как Rijndael популярный симметричный алгоритм блочного шифрования. Он оперирует блоками данных длины 128 бит при длине ключа 128, 192 или 256 бит. Так как атака демонстрировалась на шифровании с длиной ключа 128 бит, пока уберем прочие размеры из рассмотрения и сфокусируемся на алгоритме для длины ключа 128 бит.

AES-128 представляет входной блок текста в виде матрицы S размером 4 на 4 байта, называемой состоянием (state), и 11 раз последовательно применяет к нему следующие операции:

  1. SubBytes замена каждого из байтов в матрице состояния на значения, указанные в таблице замен SBox. Это таблица размером 16 на 16, в ячейках которой записаны новые значения байтов. Замена производится по простому правилу: представляя байт b в виде \{x, y\} , где x и y шестнадцатеричные цифры, мы заменяем его на значение, лежащее на перечесении x -ой строки и y -ого столбца таблицы SBox. В частности, при построчном хранении таблицы в памяти (Row-Major Ordering) искомое значение будет смещено на b позиций от начала таблицы.

    Нам не обязательно понимать, как именно строится таблица замен, поскольку значения в ней постоянны и уже вычислены и явно указаны в стандарте. В целях сокращения общего времени шифрования часто используется уже готовая таблица SBox, которую мы будем называть SBoxLUT (Look Up Table).

  2. ShiftRows циклический сдвиг строк матрицы состояния. Первая строка не сдвигается, вторая сдвигается на одну позицию, третья на две и четвертая на три.

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

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

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

AddRoundKey(0)for (i = 1; i <= 10; i += 1) {    SubBytes()    ShiftRows()    MixColumns()    AddRoundKey(i)}SubBytes()ShiftRows()AddRoundKey(11)

В качестве финального замечания необходимо отметить, что все сложения и умножения производятся в конечном поле GF(2^8) . Простыми словами, сложение двух байтов эквивалентно применению к ним операции ИСКЛЮЧАЮЩЕЕ-ИЛИ, которую мы будем обозначать символом \oplus .

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

Говоря об AES, нельзя не упомянуть пьесу про AES, в частности акт третий, сцена вторая.

Описание атаки

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

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

  1. Локализовать точку над видеокартой, испускающей информативный сигнал;

  2. Подготовить текст для шифрования;

  3. Запустить процедуру шифрования, измерить поле в выбранной точке;

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

    1. Выбрать байт с номером l ;

    2. Перебрать возможные 256 значений k^{guess}_l :

      1. Рассчитать промежуточные значения r_l^1 и r_l^2 для каждого k^{guess}_l ;

      2. Разделить полученные в пункте 3 измерения на две группы в соответствии с r_l^1 и r_l^2 ;

      3. Рассчитать величину \Delta , соответствующую данному k^{guess}_l ;

    3. Определить искомое значение байта как k_l^{guess} , на котором достигается наибольшее значение \Delta ;

  5. Зная все байты последнего раундового ключа, восстановить изначальный секретный ключ.

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

Физические основы

В основе атаки лежит наблюдение за ближним полем электромагнитным излучением в области, удаленной от источника не более, чем на 1/2\pi длины волны. Авторы заметили, что существует явная связь между операциями, выполняемыми GPGPU, и видом электромагнитного поля, излучаемого видеокартой. Результатом одного измерения является набор точек, снятых с электронного осциллографа и характеризующих зависимость напряжения исследуемого поля от времени для последнего раунда шифрования. Каждое такое измерение имеет одинаковое число точек, синхронизированных по времени. В дальнейшем мы будем называть эти точки отсчетами.

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

Кэш-коллизии

В качестве операции, надежно генерирующей различимые сигналы, авторы рассматривают одновременную кэш-коллизию (Simultaneous Cache Collision, SCC). В процессе исполнения все потоки, принадлежащие одной warp-группе, могут обратиться к данным, находящимся в одной (происходит SCC) или различных (SCC не происходит) кэш-линиях. При этом генерируемый электромагнитный сигнал будет различаться.

Заметим, что длина кэш-линии GPGPU архитектуры Fermi, рассматриваемой в данной работе, составляет 128 байтов. Размер же таблицы SBoxLUT, используемой на этапе SubBytes, составляет 256 байтов, то есть для размещения таблицы в памяти требуется две кеш-линии, по одной на первую и вторую половину. Отсюда же видно, что наличие SCC говорит об обращении всеми потоками к SBoxLUT по индексам либо из диапазона D_1 = \{0~..~127\} , либо из D_2 = \{128~..~255\} .

Атака

Обработка данных утечки

Рассмотрим последний раунд шифрования текста. Он описывается следующим уравнением:

c_l = SBox(r_l) \oplus k_l, ~l \in \{0, 1, ..., 15\},

где c_{l} и k_{l} l -ый байт шифротекста и l -ый байт последнего раундового ключа, соответственно, а r_{l} некоторое промежуточное значение. Злоумышленник может предположить, что использовался ключ k^{guess} . В таком случае, зная c_{l} , можно найти величину промежуточного байта r_{l} :

r_l = InvSBox(c_l \oplus k^{guess}_l),~l \in \{0, 1, ..., 15\},


где InvSBox таблица обратной замены, известная из стандарта и обладающая свойством InvSBox( SBox(i) ) = i , а k^{guess}_l l -ый байт предполагаемого ключаk^{guess}. Мы предположили, что злоумышленник может шифровать любой текст. В частности, он может заготовить текст, состоящий всего из двух типов блоков. При шифровании такого текста значения l -го байта r_{l} , полученные каждым из потоков, будут принимать всего два различных значения: r_{l}^1 и r_{l}^2 . Будучи использованными в качестве индексов для обращения к таблице SBoxLUT, они либо приведут к кэш-коллизии, либо нет. Зная r_{l}^1 и r_{l}^2 , отличить эти случаи несложно: коллизия происходит только когда обе величины принадлежат одному диапазону: D_1 или D_2 .

Следующим шагом злоумышленника будет разделение полученных измерений ЭМ-поля на две группы G_1 и G_2 согласно вычисленным r_l^1 и r_l^2 : где коллизии были и где их не было. Формально это можно записать так:

G_1 = \{ \vec{T_i}~|~(r_l^1 \in D_1~\text{и}~r_l^2 \in D_1)~\text{или}~(r_l^1 \in D_2~\text{и}~r_l^2 \in D_2) \},G_2 = \{ \vec{T_i}~|~(r_l^1 \in D_1~\text{и}~r_l^2 \in D_2)~\text{или}~(r_l^1 \in D_2~\text{и}~r_l^2 \in D_1) \},

где под \vec{T_i} понимается набор точек, соответствующих одному раунду шифрования.

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

\vec{\Delta} = \left| \frac{1}{n_1}\sum_{\vec{T_i} \in G_1} \vec{T_i} - \frac{1}{n_2}\sum_{\vec{T_i} \in G_2} \vec{T_i} \right|,


показывающую, насколько сильно отличаются средние значения сигналов, помещенных в множества G_1 и G_2 . Под операцией суммирования здесь понимается сложение соответствующих отсчетов сигналов, а под переменными n_1 и n_2 мощности множеств G_1 и G_2 , соответственно. Здесь необходимо отметить, что, поскольку разбиение сигналов на группы зависит от k^{guess}_l , то и \vec{\Delta} является функцией от k^{guess}_l : \vec{\Delta} = \vec{\Delta}(k^{guess}_l) .

Восстановление ключа

Если предполагаемый ключ k^{guess} совпал с ключом, использованным для шифрования, то восстановленные значения r_l^1 и r_l^2 совпадут с действительно использованными при шифровании, и злоумышленник верно распределит сигналы по группам. Наоборот, при ошибочном выборе k_{guess} разделение на группы по вычисленным промежуточным значениям r_l^1 и r_l^2 приведет к равномерно перемешанным сигналам. При этом значения компонент \vec{\Delta}(k^{guess}_l) в первом случае будут заметно превосходить соответствующие компоненты во втором. Таким образом, для вычисления l -го байта секретного ключа злоумышленнику достаточно будет перебрать 256 возможных значений и выбрать то, при котором \vec{\Delta}(k^{guess}_l) принимает наибольшее значение. Делать это авторы предлагают следующим образом:

\DeclareMathOperator*{\argmax}{argmax} k_l^{correct} = \argmax_k \left( \max_{k\in\{0~..~255\}} \left( \max_{i} \Delta_i \right) \right),


где \Delta_i i -я координата вектора \vec{\Delta} . Формула легко интерпретируется: каждому из значений k соответствует вектор \vec{\Delta}(k) с наибольшей i -ой координатой. Запомнив абсолютное значение этой координаты, из полученных 256 значений нужно снова выбрать наибольшее. Соответствующее ему k принимается за искомый байт ключа k^{correct}_l . Повторив описанную процедуру для каждого l \in \{ 0~..~15 \} , злоумышленник сможет восстановить полное значение последнего раундового ключа в расписании. Алгоритм восстановления исходного секретного ключа, используемого при генерации расписания, из последнего раундового ключа для алгоритма AES-128 известен и уже обсуждался здесь или здесь.

В работе авторы показывают, что для успешного восстановления ключа таким методом достаточно собрать данные порядка 1000 шифрований, что требует порядка 100 миллисекунд. Дополнительное использование алгоритма перечисления ключей KEA позволяет сократить число измерений до 600.

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

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

На данный момент известно лишь об одной успешной атаке, проведенной данным способом. Эту атаку провели сами авторы оригинальной статьи. В качестве атакуемой видеокарты была выбрана Nvidia GeForce GT 620 с объемом видеопамяти 454MiB. Библиотека, реализующая шифрование PolarSSL. Для детектирования электромагнитных следов авторами использовался осциллограф Agilent KeySight DSO9104A с пробником магнитного поля Rohde&Schwarz RF B.

Данная атака позволяет узнать значение последнего раундового ключа. В случае шифрования AES-128 этого достаточно, чтобы восстановить исходное значение секретного ключа, однако версии AES-192 и AES-256 остаются устойчивыми к взлому данным образом. Например, знание последнего раундового ключа AES-256 лишь сужает область возможных значений исходного с 2256 до 2128, и дальнейший подбор остается вычислительно неосуществим.

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

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


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

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru