Использование криптографических уязвимостей

Marat_1162

Стаж на ФС с 2014 г
ЖУРНАЛИСТ
Private Club
Старожил
Migalki Club
Меценат
Регистрация
25/3/16
Сообщения
4.625
Репутация
8.866
Реакции
22.633
RUB
0
Сделок через гаранта
4
Депозит
3 500 рублей
Криптография - это наука о защите секретов. В результате он разработан для того, чтобы неавторизованная сторона (например, хакер) не могла получить доступ к защищенным данным. В то время как ранние алгоритмы шифрования имели существенные недостатки и их легко взламывать, состояние шифрования стало намного лучше.
При этом криптография может быть взломана при определенных обстоятельствах.

1618245905475.jpeg


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

Использование криптографических уязвимостей

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

Ключевой менеджмент

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

Уязвимости потокового шифра

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

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

1618245960442.jpeg

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

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

Пользовательские алгоритмы / протоколы

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


Неправильное использование алгоритма

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

Боковые каналы

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

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

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

Вне рамок

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

Заключение: взлом криптографии

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


P.S. найдено на просторах интернета
 
Сверху Снизу