Рейтинг:0

Подделка цифровых подписей на 60000 сообщений методом грубой силы

флаг us

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

Предположим, что имеется 1000 единиц программного обеспечения (от нескольких издателей), которые обновляются (в среднем) один раз в месяц в течение 5 лет.

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

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

Как это можно предотвратить?

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

Является ли какой-либо существующий хеш-алгоритм достаточно сильным?

kelalaka avatar
флаг in
Связанный [Многоцелевая атака на хэши] (https://crypto.stackexchange.com/q/75880/18298)
Рейтинг:4
флаг my

Является ли какой-либо существующий хеш-алгоритм достаточно сильным?

Да; на самом деле любой криптографически безопасный хеш-алгоритм (такой как SHA-2, SHA-3, Blake2) будет достаточно сильным.

Чтобы подчеркнуть это, позвольте мне указать, что MD5 достаточно силен. Теперь MD5 считается довольно слабым (и никто здесь не одобрит его использование); однако даже с его известными недостатками он все еще достаточно силен против этой конкретной атаки.

MD5 имеет 128-битный вывод (в отличие от криптографических хэш-функций, которые мы используем на практике, которые имеют гораздо большие выходные данные). Кроме того, известны способы генерации «коллизий», то есть пар входных данных, которые MD5-хешируют до одного и того же значения. Однако эти методы предполагают, что атака имеет контроль над обоими входными данными — в этом случае действительный издатель генерирует действительное изображение, а злоумышленник не может изменить то, что подписывает издатель, поэтому слабость коллизии MD5 не применяется. MD5 не имеет известных слабых мест по отношению к атакам «второго прообраза» или к атаке «многоцелевого второго прообраза» (что именно так и есть), и поэтому единственный подход, который есть у злоумышленника, — это хешировать различные входные данные, пока он не найдет совпадение.

Теперь предположим, что существуют 60 000 долларов США \приблизительно 2^{16}$ действительные подписи; если злоумышленник делает предположение, это имеет около $2^{-128+16} = 2^{-112}$ вероятность хеширования до одной из целей. Другими словами, чтобы получить шанс один к тысяче найти изображение, которое совпадает с одной из целей, ему нужно было бы хешировать около $2^{102}$ картинки.

По оценкам, глобальная индустрия майнинга биткойнов оценивает примерно $2^{68}$ хэшей в секунду (на самом деле чуть меньше); это означает, что если бы злоумышленник мог посвятить всю эту обработку [1] атаке на вашу систему, им пришлось бы заниматься этим около $2^{34}$ секунд (или около 500 лет), чтобы получить шанс 1 из тысячи.

Если вы замените MD5 реальным хэшем криптовалюты, эти 500 лет превратятся в временные рамки типа «тепловой смерти Вселенной».

[1]: Конечно, текущая инфраструктура майнинга биткойнов построена на SHA-256 — я проигнорирую эту деталь.

флаг us
Вы упускаете из виду проблему дня рождения? Я ожидал, что 1
poncho avatar
флаг my
@Brendan: как я упоминал выше, «в этом случае действительный издатель генерирует действительное изображение, и злоумышленник не может изменить то, что подписывает издатель, поэтому слабость коллизии MD5 не применяется». Если это не так (то есть злоумышленник может вставить свои переделки в то, что подписывает издатель), то MD5 может быть недостаточно. С другой стороны, если мы вернемся к SHA256 (гораздо более реалистичному), атака столкновений требует ожидаемых хэшей $2^{128}$ — это близко к количеству оценок, которые мы получили для многоцелевой атаки прообраза MD5 — применяется аналогичная оценка времени.
poncho avatar
флаг my
@Brendan: конечно, если злоумышленник может вставить свои собственные изменения в то, что подписывает издатель, почему бы ему просто не включить в это свое вредоносное ПО и не пытаться создать подделку?
флаг us
Ах, вы правы (я пропустил атаку дня рождения). 1
Рейтинг:1
флаг kr

SHA-256 устойчив к атакам прообразов. Единственный способ найти прообраз, производящий заданный хэш, — это перебор. Текущие вычислительные ресурсы, используемые для майнинга биткойнов в мире, составляют около $2^{90}$ хэшей в год. Таким образом, даже если весь мир попытается создать образ (в вашем случае найти конкретный отступ) с данным хэшем, это не удастся даже через пару миллионов лет.

poncho avatar
флаг my
На самом деле, «через пару миллионов лет» слишком оптимистично; при $2^{90}$ хэшей в год и 60 000 целей поиск займет ожидаемое время $1,5 \x 10^{45}$ лет.
флаг kr
@poncho: Правильно :-) Но я боюсь, что трудно представить, действительно ли это много времени. Можно сказать, что она длиннее, чем существует Вселенная. Но даже это трудно себе представить. Может быть, даже миллион лет трудно представить, а тысячу лучше :-) Поэтому я надеюсь, что использование такой формулировки сделает ответ более полезным.
poncho avatar
флаг my
Я понимаю, однако ваше утверждение звучало примерно так: «звезды находятся более чем в 10 метрах». Технически верно, я полагаю, но также комическое преуменьшение...

Ответить или комментировать

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