Мы привыкли полагаться на современные алгоритмы шифрования. Однако, действительно ли они так безопасно защищают наши данные? Давайте разберёмся с таким понятием как математический бэкдор, что он из себя представляет и как работает.
Введение
На протяжении последних десятилетий мировое сообщество уверенно двигалось в направлении развития гражданских свобод. Право на конфиденциальную частную жизнь, приватность переписки - эти словосочетания давно у нас всех на слуху.
С другой стороны, в новостях периодически всплывают новости о том, что то или иное агенство безопасности требует ту или иную компанию, разрабатывающую продукты для нас, предоставить им бэкдор к алгоритмам шифрования, которые защищают наши данные.
Зачастую, мотивацией таких запросов является борьба с терроризмом. Мол, хорошим людям скрывать нечего, так что давайте все дружно покажем нашу переписку товарищу в погонах.
А вообще, узнать больше про терроризм как феномен информационного общества можно тут.
Inspiration
Данная статья вдохновлена выступлением французских исследователей на конференции Black Hat в 2017 году. Для более детального изучения статья и книга.
Как работают алгоритмы шифрования?
Обобщённо можно сказать, что основой любого шифра является некоторая общая информация доступная только отправителю и получателю. В случае шифра Цезаря это было число, на которое производится сдвиг. Или, например, известна история когда во время Второй мировой войны морские пехотинцы США завербовали и обучили людей из племени индейцев навахо, свободно владеющих языком навахо. Это был привлекательный способ использования кодирования, мало людей не из племени знали этот язык, а также не было никаких опубликованных книг на языке навахо. В данном случае общей информацией было знание языка навахо.
С развитием полупроводниковой логики алгоритмы шифрования стали базироваться на взрослой и суровой математике.
Тут необходимо остановиться и сделать небольшой ликбез, разделить алгоритмы шифрования на две большие группы:
В симметричных алгоритмах для зашифровки и расшифровки сообщения используется один и тот же ключ. Такие алгоритмы используются для защищенного обмена сообщениями или для защиты данных на телефонах и компьютерах. Все наши банковские платежи, переводы и онлайн-оплата тоже шифруется симметричным методом. Единственный минус такого шифрования это сложность передачи секретного ключа в самом начале от одного участника к другому. Если ключ передать по открытому каналу связи, его могут подсмотреть и впоследствии прочитать всю переписку. Для организации закрытого канал связи необходим ключ шифрования, который тоже нужно как-то передать. Данная проблема решается использованием ассиметричного шифрования. Хороший разбор процесса инициации секретных ключей при начале общения в мессенджерах.
Асимметричные системы ещё часто называют криптосистемами с открытым ключом. В них используется два ключа: публичный ключ передаётся по открытому (то есть незащищённому) каналу связи и используется для зашифровки сообщения. А приватный ключ используется для расшифровки сообщения.
Также, ассиметричные системы используют для создания электронной подписи, где пользователь, обладающий приватным ключом может подписать сообщение, и любой другой пользователь, обладающий открытым (публичным) ключом может эту подпись проверить. По такому же принципу работает протокол 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 блоки представляют собой таблицы подстановки.
Шифр на основе SP-сети получает на вход блок и ключ и совершает несколько чередующихся раундов, состоящих из чередующихся стадий подстановки (англ. substitution stage) и стадий перестановки (англ. permutation stage). Стоит отметить, что S и P блоки одинаковы для всех раундов. В целях повышения безопасности на каждом раунде используются разные ключи (обозначены как на изображении). Можно обратить внимание, на то что в последнем раунде нет P блока и используется два раундовых ключа.
Для достижения безопасности достаточно одного S-блока, но такой блок будет требовать большого объёма памяти. Поэтому используются маленькие S-блоки, смешанные с P-блокам. S-блок замещает маленький блок входных бит на другой блок выходных бит. Эта замена должна быть взаимно однозначной, чтобы гарантировать обратимость. Назначение S-блока заключается в нелинейном преобразовании, что препятствует проведению линейного криптоанализа. Одним из свойств S-блока является лавинный эффект, то есть изменение одного бита на входе приводит к изменению всех бит на выходе. S-блок представляет из себя таблицу соответствия.
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-блоки там обозначены как , это если вам вдруг захочется поискать бэкдоры в отечественных алгоритмах. Приведу ряд статей про странности 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-блоков.
Основным посылом французских исследователей был вопрос, «можем ли мы доверять иностранным алгоритмам шифрования». Бесспорно, для государственных структур, оперирующих потенциально стратегической информацией, важно не допустить внешние силы к этой информации. Понять их мотивацию в разработке своих, гарантировано безопасных для самих себя, алгоритмов шифрования можно.
Тут можно долго рассуждать на тему того, что наши данные могут быть кем-то расшифрованы и к каким последствиям в современном информационном обществе это может привести. В конечном счёте, последствия зависят от намерений людей, использующих этот бэкдор. Стоит всё таки признать факт, что зачастую в криптографии самым уязвимым элементом является человек, будь это человек решивший заложить уязвимость в алгоритм, или человек, использовавший эту уязвимость для достижения своей личной выгоды.
Не могу оставить вас наедине с нарастающей паранойей и тревожностью, поэтому, даже допуская ситуацию, что все доступные алгоритмы шифрования скомпрометированы возможность наладить защищенный обмен информацией всё же существует, этому даже посвящена целая научная статья. Если же вы хотите проникнуться атмосферой поиска уязвимостей в существующих алгоритмах шифрования, то советую почитать эту вдохновляющую статью.
me21
А достаточно будет для защиты от бекдоров спецслужб шифровать текст два раза алгоритмами от противоборствующих государств, которые вряд ли договорятся? ГОСТ+AES? Или двойное шифрование не повышает криптостойкость?
rawoak Автор
На самом деле, шифрование двумя разными алгоритмами — это классная идея. Про это не так много написано, единственная зацепка — «Software Application GoldBug Messenger», защищеный почтовый клиент.
Так вот, там алгоритм шифрования состоит из трёх стадий с использованием разных методов: -Ассиметричное RSA шифрование
-Симметричное AES-256
-шифрование пакетов на уровне HTTPS (то есть SSL/TLS Tunnel).
Такой подход, вероятно, может защитить от бэкдоров.
Для двойного шифрования одним и тем же алгоритмом ситуация следующая. (Тут уже скорее про обычную криптостойкость, без использования бэкдоров, хотя, это может и усложнить процесс взлома алгоритма даже и использованием бэкдора)
Если речь идет про двойное шифрование с использованием одного и того же ключа, то для некоторых шифров это может скорее ухудшить их криптостойкость.
Если же используются два разных ключа, то это более безопасно, но не намного. Можно провести аналогию с замками из реального мира. Поставив на дверь два физических замка одного типа, вы гарантируете, что вор, который может вскрыть один замок за пять минут, теперь должен потратить десять минут. Но гораздо надёжнее купить замок, который был бы вдвое дороже, и который вор не мог бы взломать вообще.
В криптографии это работает примерно так же: в общем случае вы не можете гарантировать, что шифрование дважды делает его более чем в два раза более трудным для взлома шифрования. Так что если АНБ обычно может расшифровать ваше сообщение за N минут, с двойным шифрованием, им нужно 2 * N минут. Вероятно, вам будет гораздо лучше, если вместо этого вы удвоите длину ключа, что может привести к тому, что им потребуется 100 лет, чтобы взломать шифрование.
В некоторых случаях имеет смысл повторить шифрование, но нужно учитывать некоторые подводные камни математического характера. Например, Triple-DES в основном повторяется трижды с тремя разными ключами (за исключением того, что вы encrypt-decrypt-encrypt, а не просто шифруете три раза). Но это также показывает, насколько неинтуитивно это работает, потому что в то время как Triple-DES утрояет количество шифрований, он имеет только двойную эффективную длину ключа алгоритма DES.
ValCanada
Truecrypt/Veracrypt имеют эту фичу с незапамятных времен. НО плата за вероятно большую криптостойкость конструкции — меньшая скорость. А AES выбрали, насколько я помню, в том числе и из-за этого. Каждому свое.
Вот про это хотелось бы поподробнее. Тот же упомянутый VC/TC генерировал из пассфразы некоторую гигантскую последовательность, которая потом употреблялась в качестве ключа.
consalt
VC/TC генерит из пассфразы последовательность в 256бит. То есть будь у вас пароль в один символ или в 500 символов для VC/TC это все преобразуется в 256 бит.
BubaVV
Сторонники теории заговора будут утверждать, что это противоборство — ширма для непосвященных. Как пруф можно привести подмену грунта на взятый из киносьемочного павильона в возвращаемом модуле «Луны-16».
rawoak Автор
Да и само существование бэкдоров — достаточно скользкая тема, ведь почти все компетентные работы в данной области работы лишь осторожно допускают возможность его существоания в том или ином алгоритме, указывая на детали, которые могут об этом свидетельствовать