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

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


Введение

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

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

  1. Суд ФБР и Apple

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

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

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

Inspiration

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

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

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

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

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

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

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

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

Асимметричные системы ещё часто называют криптосистемами с открытым ключом. В них используется два ключа: публичный ключ передаётся по открытому (то есть незащищённому) каналу связи и используется для зашифровки сообщения. А приватный ключ используется для расшифровки сообщения.

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

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

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

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

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

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

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

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

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

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

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

На данный момент времени, в основном используются блочные шифры. Например, широко известный 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 - это уязвимость математического характера, а ошибка в реализации протокола проверки сертификатов TLS - уязвимость в реализации («implementation backdoos»).

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

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

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

A concrete example is the pseudorandom number generator Dual_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 Network
Substitution-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 Shamir’s 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 под iOS 9, в котором установлена система на кристалле A6. В нём тоже может быть включено уничтожение данных после 10 попыток. В телефоне нет аппаратного Secure Enclave. В этой модели многие функции безопасности обеспечиваются на уровне операционной системы. Поэтому для взлома может понадобиться всего лишь специальное обновление операционки. После этого единственным ограничением останется частота получения ключа шифрования — раз в 80 миллисекунд. Впрочем, всё это является мнением экспертов.

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

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

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

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

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

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

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

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

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

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

Средняя зарплата в IT

120 000 ₽/мес.
Средняя зарплата по всем IT-специализациям на основании 3 754 анкет, за 1-ое пол. 2021 года Узнать свою зарплату
Реклама
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее

Комментарии 49

    +7

    А достаточно будет для защиты от бекдоров спецслужб шифровать текст два раза алгоритмами от противоборствующих государств, которые вряд ли договорятся? ГОСТ+AES? Или двойное шифрование не повышает криптостойкость?

      +2

      На самом деле, шифрование двумя разными алгоритмами — это классная идея. Про это не так много написано, единственная зацепка — «Software Application GoldBug Messenger», защищеный почтовый клиент.
      Так вот, там алгоритм шифрования состоит из трёх стадий с использованием разных методов: -Ассиметричное RSA шифрование
      -Симметричное AES-256
      -шифрование пакетов на уровне HTTPS (то есть SSL/TLS Tunnel).
      Такой подход, вероятно, может защитить от бэкдоров.


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


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


      В криптографии это работает примерно так же: в общем случае вы не можете гарантировать, что шифрование дважды делает его более чем в два раза более трудным для взлома шифрования. Так что если АНБ обычно может расшифровать ваше сообщение за N минут, с двойным шифрованием, им нужно 2 * N минут. Вероятно, вам будет гораздо лучше, если вместо этого вы удвоите длину ключа, что может привести к тому, что им потребуется 100 лет, чтобы взломать шифрование.


      В некоторых случаях имеет смысл повторить шифрование, но нужно учитывать некоторые подводные камни математического характера. Например, Triple-DES в основном повторяется трижды с тремя разными ключами (за исключением того, что вы encrypt-decrypt-encrypt, а не просто шифруете три раза). Но это также показывает, насколько неинтуитивно это работает, потому что в то время как Triple-DES утрояет количество шифрований, он имеет только двойную эффективную длину ключа алгоритма DES.

        0
        Truecrypt/Veracrypt имеют эту фичу с незапамятных времен. НО плата за вероятно большую криптостойкость конструкции — меньшая скорость. А AES выбрали, насколько я помню, в том числе и из-за этого. Каждому свое.

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


        Вот про это хотелось бы поподробнее. Тот же упомянутый VC/TC генерировал из пассфразы некоторую гигантскую последовательность, которая потом употреблялась в качестве ключа.
          0
          VC/TC генерит из пассфразы последовательность в 256бит. То есть будь у вас пароль в один символ или в 500 символов для VC/TC это все преобразуется в 256 бит.
        –1
        Сторонники теории заговора будут утверждать, что это противоборство — ширма для непосвященных. Как пруф можно привести подмену грунта на взятый из киносьемочного павильона в возвращаемом модуле «Луны-16».
          0

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

        0
        Правильно ли, что сами по себе SP-сети не имеет бэкдор, имеет бэкдор конкретная реализация S-блока (подстановочная таблица). BEA-1 как раз такая реализация.

        Вопросы:
        1) Интересно а как влияет увеличение размера размера разрядности S блока (а точнее подстановочной таблицы), например с 8 бит как в примере Rijndael до скажем 16 бит (или больше — пока хватит памяти). Снизится ли вероятность выпадения такого неудачного набора, который все еще подвержен дифференциальному криптоанализу?
        2) Что если дополнительно к пункту 1 заполнять таблицу доказуемо случайными числами как это делается при выборе коэффициентов в хэш функции SHA256 (квадратные или кубические корни из подряд идущих простых чисел).

          0

          Да, абсолютно верно, сами по себе SP-сети уязвимостей не имеют, это просто математическая модель, описывающая алгоритм. Бэкдор может скрываться в конкретной реализации S-блоков.


          По поводу вопросов:


          1) Сложно сказать, как повлияет увеличение размера S-блоков на изменении вероятности именно НАХОЖДЕНИЯ секретных S-блоков. Это очень запутанная математика конечных полей, в которой чёрт ногу сломит. Вероятнее всего, бэкдор будет найти сложнее, но насколько сложнее, линейно, квадратично, итд — лично мне пока что непонятно.
          Вообще, на эту тему не так много работ, всё еще ведутся различные исследования. Алгоритм BEA-1, по заявлению авторов — один из первых в своем роде, планируется дальнейшая работа по созданию более совершенных бэкдоров. Поэтому, опять же сложно оценить, как повлияет увеличение размера S-блоков на сложность разработки уязвимости. Возможно, для S-блоков большего размера уязвимости будет создавать проще, так как больше «пространства для манёвра»


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

          0
          Это означает, что такая техника анализа была известна АНБ ещё в 1970-х годах.

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


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


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

          Что значит вычислить секретные S-блоки? Как я понял, S-блок является неизменной частью алгоритма AES, поменяете его — получите другой алгоритм. Как в этих условиях можно что-то "вычислить"? И главное, как на этом заработать, если остальные тоже могут это самое вычислить?


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

          Если в остальных свойствах еще более-менее очевидно, чем они хороши для бекдора, то вот это мне непонятно. Почему это хорошо для бекдора?

            0

            Отвечу поэтапно:


            1) АНБ в 1970 косвенно приняло участие в разработке S-блоков для алгоритма шифрования DES. На тот момент, методика дифференциального криптоанализа не была известна в широких научных кругах.
            В 1990 году независимые исследователи обнаружили, что S-блоки, разработанные в 1970 оказались на удивление устойчивыми к дифференциальному криптоанализу. Вероятность того, что такая устойчивость обоснована какой-либо случайностью — мала. Наиболее закономерный вариант, что S-блоки были каким-либо образом усовершенствованы.


            2) Еще раз повторю про секретные S-блоки.
            Во время честного шифрования и дешифрования в алгоритме используются самые обычные публичные S-блоки. Секретные же S-блоки есть только у того, что обладает уязвимостью, они позволяют расшифровать данные, не обладая ключом


            Говоря о реализации, секретные S-блоки незначительно отличаются от обычных S-блоков, в небольшом количестве параметров. Однако такое незначительное отличие параметров подобрано специальным образом. Если кратко, то почти для всех входных данных выходные данные секретного S-блока и обычного одинаковы, однако для некоторого заранее известного набора входных данных выходные данные секретного S-блока и обычного отличаются. Именно это знание позволяет значительно упростить процесс перебора, необходимого для взлома алгоритма.
            Чтобы не быть голословным, для алгоритма BEA-1 для S0, S1, S2 количество входных данных для которых выходные данные секретного S-блока и обычного одинаковы есть 944 (из 1024, так как блоки работают с сегментами данных по 10 бит) для S3 это число 925 (также из 1024)
            Сам процесс взлома заключается в том, что при расшифровке зашифрованного сообщения вместо блоков обратных публичным S-блокам используются блоки обратные секретным S-блокам, и параллельно с этим происходит подбор раундовых ключей.

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


            3) Про «вычислить». Имелось ввиду, найти как раз таки те самые секретные S-блоки, которые и представляют из себя уязвимость, что может быть невероятно сложно и для чего определенно необходимо везение. По поводу заработать, уязвимость можно продать за очень большие деньги, тем же хакерам или спецслужбам, вопрос в том, насколько жато морально.


            4) Для бэкдора это хорошо, потому что при обладании такими свойствами доказать его наличие в алгоритме шифрования невозможно

              0

              1) Но это все же не значит, что именно обладали этой техникой. Пример: вы, ничего не зная о простых числах, взяли первые 3-4 нечетных числа. Через некоторое время открывают простые числа и оказывается, что числа (1), 3, 5 и 7 — простые. Можно ли на основе этого утверждать, что вы сознательно выбирали простые числа, когда о них еще никто не знал?


              2) Т.е., если я правильно понял, в процессе подбора ключей мы пропускаем шифротекст через S-блок, варьируя ключ, и ищем что-то знакомое на выходе. А секретный S-блок устроен так, что, грубо говоря, любое четное число на входе превращается в 3x+1 на выходе и зная это и все четные числа на входе, мы, видя на выходе 3x+1, можем понять, что подобрали кусочек ключа, так?


              3) Ну вот. Т.е. все-таки найти, а то вы написали так, словно бери любые числа, что-там считай и вот тебе секретный S-блок, а процедура подобна генеративно-состязательной нейросети, которая генерирует лицо — должно быть два глаза, два уха и по одному рту и носу и дальше только улучшай, чтобы больше на лицо было похоже, а чье — неважно. А на самом деле нужно найти зеркальный портрет.


              4) Если его уже нашли, то что тут еще доказывать? Нашли==доказали, а как иначе еще понимать слово "нашли"? Честное слово Васи, что у Коли тут бэкдор?

            0

            Прошу прощения, перепутал один момент связанный с ассиметричным шифрованием


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


            Наоборот, публичным ключом сообщение шифруют, а приватным расшифровывают


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


            за ремарку спасибо polearnik

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

              Не понятно, как это работает. Ведь, при расшифровке нужен ключ. Или берётся какой-то пустой ключ?

              А можно подробнее, какой принцип построения секретных S-блоков?
                0

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

                  0
                  То есть, типа, за один или несколько прогонов с секретными S-блоками и произвольным ключом можно установить какие биты правильные в произвольно ключе?
                    0

                    Почти, за несколько прогонов с известными парами (текст, шифротекст) и с использованием секретных S-блоков можно установить множество ключей, а затем их перебрать. (несколько — 30.000 в случае BEA-1)

                +1
                Про «секретные» и «публичные» S-блоки написано слишком мало, чтобы можно было понять.
                А ведь это должно быть очень интересно.
                  0

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

                    0
                    Ну уже немного русских :)
                      0

                      Ого, прикольно, не знал что он в вышке работает теперь

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


                  Эмм… вообще-то не бэкдор, а доступ — это совершенно разные вещи. У вас тут смешано все (и синее, и круглое, и соленое) в одну кучу.

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

                    Согласен, доступ к алгоритму шифрования может быть разным: это может быть как просьба предоставить ключи шифрования, используемые пользователями, так и предоставление информации об уязвимости, которая позволяет расшифровывать данные без знания ключей шифрования (такое требование может быть необходимо, например, для систем типа point-to-point)

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

                    И каким образом проверка выдающая фэйл поможет злоумышленнику в этом?
                      +1

                      Если вы приглядитесь, то в целом из функции проверки в этом случае возвращается результат функции SSLHashSHA1.update, который в случае срабатывания "неправильного" перехода будет равен 0, что наверняка означает успех.

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

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

                      На мой взгляд доп.шифрование может улучшить защщенность, в крайнем случае ее не изменить. Но ухудшить не может. Ведь это не случай A xor X xor X
                        +3

                        Как раз примерно такой случай. Я встречал в одной игре что-то похожее. Ключ активации преобразуется в 8 байт, потом сначала ксорится побайтово с секретным значением, потом преобразуется — первые биты образуют первый байт, вторые второй и т.д, потом ксорится еще раз. Вроде выглядит запутанно, но получается, что матрица битов переворачивается относительно диагонали, и биты на главной диагонали не шифируются вообще. Это уменьшило количество возможных вариантов в 256 раз, и это помогло мне среди возможных вариантов расшифровки проверочного файла найти осмысленный текст.

                          0

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


                          т.е. условно md5(md5(plaintext)) может быть менее секьюрно чем md5(plaintext)

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

                            А так многочисленные хэширования используются, чтобы замедлить брутфорс украденных хэшей. Скажем, если у нас в базе лежит не пароль, а md5(пароль) — это одно. А вот если у нас в базе лежит результат md5(md5(md5(… и так 2000 раз… md5(пароль)...))) -это уже в 2000 раз замедлит перебор паролей, если базу украдут.
                              0

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


                              Их, конечно, будет не много. Но не исчезающе мало.
                              Возьмем с потолка 5%. То есть при хешировании всех 2^128 хешей, 5% из них совпадут.
                              Тогда при хешировании 2000 раз останется лишь (опять же с потолка) 2^128 * (0.95)^2000 и результат будет <1. То есть вообще возможна ситуация что при применении хеша 2000 раз результат будет всегда одинаковый.


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

                                0
                                Возьмем с потолка 5%. То есть при хешировании всех 2^128 хешей, 5% из них совпадут.

                                Если 5% хэшей совпадают, то это очень некачественная функция. Даже в MD5 такого количества коллизий нет.

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

                                Вы только что обозвали дураками разработчиков PBKDF2 — они там как раз тем и занимаются, что используют много раундов хэширования для генерации ключей шифрования.
                                  +2
                                  Если 5% хэшей совпадают, то это очень некачественная функция. Даже в MD5 такого количества коллизий нет.

                                  Есть ссылки на какие-то исследования по этому? Мне кажется там даже больше.
                                  На минуточку, мое утверждение значит что "для любого хеша есть 5% шанс что один из оставшихся 340282366920938463463374607431768211455 хешей совпадет". Кажется что там даже больше из-за парадокса дней рождения.


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

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


                                  Это НЕ так для PBKDF2. Потому что они на каждом раунде примешивают пароль. То есть даже если на каком-то раунде будет коллизия, она перестанет быть коллизией на следующем.


                                  Именно из-за таких нюансов и существует совет "не изобретать самому ничего в криптографии" (вроде md5(md5(md5(...))) а пользоваться проверенными решениями (вроде PBKDF2)

                                    +1
                                    Есть ссылки на какие-то исследования по этому? Мне кажется там даже больше.

                                    Исследования есть на поиск коллизий — но ЕМНИП, там размер хэшируемого сообщения как минимум в 2 раза больше размера хэша MD5.
                                    Мой скептицизм строится на знании устройства MD5: там по факту перемешивание бит исходного сообщения, т.е. для сообщений размером, равным размеру хэша, коллизий вообще не должно быть. Но я вполне допускаю, что чего-то не учитываю и они таки есть — в любом случае, их количество далеко от 5%.

                                    Если бы 5% хэшей совпадали, достаточно было бы высчитать пару миллионов хэшей и сравнить их между собой. В среднем процент совпадений был бы все тем же — 5%, верно? И чем больше выборка, тем точнее будет процент. Так вот, я пробовал гонять такой тест (и на бОльших выборках) — ни единой коллизии не обнаружено.

                                    Это НЕ так для PBKDF2. Потому что они на каждом раунде примешивают пароль. То есть даже если на каком-то раунде будет коллизия, она перестанет быть коллизией на следующем.

                                    Здрасьте. А куда она денется?
                                      +1
                                      Если бы 5% хэшей совпадали, достаточно было бы высчитать пару миллионов хэшей и сравнить их между собой

                                      Разумеется нет. Если есть 5% шанс найти коллизию из 340282366920938463463374607431768211455 то это не значит что есть 5% шанс найти коллизию из миллиона.


                                      Однако, из-за парадокса дней рождений, если высчитать 2^(128/2) хешей то вероятность найти одну коллизию уже заметно отлична от 0.
                                      2^64 это, впрочем, пока еще дофига, и это мало что даст.


                                      Здрасьте. А куда она денется?

                                      Что такое коллизия?
                                      Это когда два разных пароля дают одинаковый хеш.


                                      Если на этапе N получлась коллизия, то на этапе N+1 она пропадет, потому что пароли-то разные, а они примешиваются на каждом этапе. В отличии от md5(md5(...))

                                        0
                                        Однако, из-за парадокса дней рождений, если высчитать 2^(128/2) хешей то вероятность найти одну коллизию уже заметно отлична от 0.
                                        2^64 это, впрочем, пока еще дофига.

                                        Так 2^64 или 2000 итераций нужно, чтобы наткнуться на коллизию? Вы уж определитесь. :)

                                        Что такое коллизия?
                                        Это когда два разных пароля дают одинаковый хеш.

                                        Один пароль у нас «хэш1+хвост», второй — «хэш2+хвост». В результате получаются одинаковые хэши3 — т.е. коллизия.
                                        Почему вы думаете, что «хэш3+хвост» аннулирует предыдущую коллизию? Хвост-то у нас константный.
                                          +2
                                          Так 2^64 или 2000 итераций нужно, чтобы наткнуться на коллизию? Вы уж определитесь. :)

                                          Это совсем разные итерации. Прочитайте переписку еще раз.


                                          • при вычислении 2^64 отдельных md5 есть заметный шанс наткнуться на одну коллизию
                                          • Самодельная функции md5^2000 скорее всего более слабая чем прсто md5 даже учитывая в 2000 раз большее время вычисления. Все предпосылки для этого есть. Это не доказано, но в криптографии нужно доказывать то что что-то работает, а не то что не работает.

                                          Почему вы думаете, что «хэш3+хвост» аннулирует предыдущую коллизию? Хвост-то у нас константный.

                                          потому что hash(collision+pass1) != hash(collision+pass2) потому что pass1 != pass2


                                          "хвост" это пароль. Пароли разные. Нет "хвоста", есть хвост1 и хвост2.

                            0
                            Связанная с криптографией математика на самом деле очень тонкая материя, здесь полагатся на «здравый смысл» и «интуитивно правильный подход» это прямой путь к епическому фейлу. Лично я этого не понимал, и поход у меня был такой же как у вас, до тех пор пока не прослушал специальный курс по криптографии. Сейчас я врядли возьмусь реализовывать какой-то криптоалгоритм, слишком уж много подводных камней и мест где «не так» может пойти буквально ВСЕ!
                              0
                              Есть такая теорема — “two weak make one strong”.
                              Её доказательство и выводы можно найти в статье
                              Security Amplification for the Composition of Block Ciphers:
                              Simpler Proofs and New Results
                              +1
                              Интересно рассмотреть гипотетические примеры бэкдоров в современных алгоритмах:
                              DUAL_EC_DRBG
                              gotofail в TLS от Apple


                              Мне кажется у вас намешано из разных областей.
                              Математические бэкдоры должны быть полностью независимы от реализации.
                              А в примере есть и то и другое.
                              В TLS от Apple как раз ошибка / бэкдор в реализации.
                              А вот в DUAL_EC_DRBG бэкдор в самом алгоритме и как его не реализуй следуя стандарту всё равно получится генератор случайных чисел с бэкдором.
                                0

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

                                0
                                Берём dvd-диск, записываем на него белый шум и получаем ключ шифрования. Вряд ли в реальной ситуации может не хватить длины этого ключа. Алгоритм шифрования каждый может выбрать исходя из собственной испорченности. «Для дома, для семьи», этого точно хватит. ;-)
                                  0
                                  Верно. Это так называемый случай, когда длина шифруемого сообщения и длина ключа совпадают. Такое вообще взломать не возможно, так как ключ не повторяется и никак нельзя выявить закономерностей. То есть расшифровывая мы получаем различные осмысленные сообщения и не можем понять, какое правильное. :)

                                  К сожалению, в реальном мире невозможно пользоваться (удобно пользоваться) длиной ключа=длине сообщения.
                                    0
                                    dvd деградирует, надо чтото подолговечнее. И без использования облачных хранилищ.
                                    А алгоритм шифрования взять XOR, самый надежный метод, теоретически невзламываемый(если у вас ключ длиннее данных и не переиспользован).
                                    +1
                                    Или, например, известна история когда во время Второй мировой войны морские пехотинцы США завербовали и обучили людей из племени индейцев навахо, свободно владеющих языком навахо. Это был привлекательный способ использования кодирования, мало людей не из племени знали этот язык, а также не было никаких опубликованных книг на языке навахо. В данном случае общей информацией было знание языка навахо.

                                    Не совсем так. Японцы нашли носителей языка навахо и даже уговорили их сотрудничать. Вот только в расшифровке это им не очень помогло: на выходе получался бессвязный набор слов.
                                    Кроме языка навахо «общей информацией» еще был способ кодирования информации: текст шифрограммы составлялся на английском, далее каждая буква шифрограммы кодировалась словом на навахо. Принцип был простой: слово в переводе на английский должно было начинаться на нужную букву (слова «би-ла-сана» (apple, «яблоко»), «уол-ла-чи» (ant, «муравей») и «це-нилл» (axe, «топор») обозначали букву «а» — из википедии).
                                    Ну и чтобы шифрограммы не разрастались, некоторые часто употребимые слова шифровались отдельно, описательными конструкциями.

                                    Японцы этого не знали и переводили с навахо сразу на японский — получая бессмысленное бесполезное сообщение.
                                      +1

                                      ого, спасибо за интересную ремарку!

                                      0

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

                                        0
                                        *сарказм* Ваш комментарий вполне можно использовать в качестве рандомных данных
                                        –1
                                        думаю биткоин детище спецслужб чтобы контролиовать криптомалюту, если нельзя запретить, то надо сделать своё под видом метежного и раскрутить его как самое популярное, и там какраз закладка в шифровании
                                        они хотели чтобы на этой основе все прешли на блок чеин. но он непошёл в массы, как ему пророчили. если-бы пошёл, они бы имели доступ не только к новому печатному станку но и инвормации которая хранится с помощью технологиии блокченина.
                                        таже история только в российской миниатюре была разыгранна и якобы мятежным телеграммом, теперь на него все подсели и даже на западе он становится популярным. А слушать их легко и приятно на лубянке. Лица уровня Паши ещё задолго до подхода к популярным проектам (по количеству денег или популярности политической или социальной значимости) находятся на коротком поводке. Наивно полагать что просто так бежать на туманные альбионы комуто дадут…

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

                                        Самое читаемое