Существуют ли реальные последствия атак оракула заполнения?

Aug 18 2020

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

Потому как:

  1. Если все, что мне нужно, это два шифртекста $c(n-1)$, $c(n)$ которые являются двумя последними блоками зашифрованных сообщений, и сервером, который сообщает мне, если заполнение расшифрованных $c(n)$правильно или что-то еще, разве это не означает, что сервер просто расшифровывает все, что вы ему отправляете (я имею в виду, просто отправьте все зашифрованное сообщение, как вы его получили, и прочитайте вывод). Я имею в виду, что это ошибка сервера, что он в первую очередь не берет ключ и не проверяет его правильность.
  2. Предположим, что все, что нам нужно сделать, это отправить эти два зашифрованных сообщения, чтобы узнать и расшифровать последний блок (блок заполнения). Это работает только потому, что открытый текст заполнения известен или, по крайней мере, не случайный или по какой-либо другой причине.

Но как насчет, скажем, c2 и c3, которые находятся в середине всего сообщения? Мы знаем c3 и c2, но мы не знаем и никогда не узнаем ни p3, ни p2 (открытый текст), ни промежуточное состояние IS3 ; то есть мы не можем выполнить XOR c2 с is3 для получения p3 , поэтому эта атака, я думаю, позволяет нам только расшифровать блок заполнения с единственной новой вещью, которую мы действительно знали, это промежуточное состояние блока заполнения.

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

Ответы

7 MaartenBodewes Aug 18 2020 at 23:14

Я имею в виду, что это ошибка сервера, что он в первую очередь не берет ключ и не проверяет его правильность :)

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

но как насчет, скажем, c2, c3, которые находятся в середине всего сообщения, мы знаем c3 и c2, но мы не знаем, и мы никогда не узнаем ни p3 (открытый текст, конечно), ни промежуточное состояние IS3

Нет, атака оракула с дополнением может полностью расшифровать сообщение. Это именно потому, что XOR влияет на следующий блок.

Обратите внимание, что атаки оракула с заполнением - это всего лишь одна из форм атаки оракула с открытым текстом . Например, вы также можете выполнять атаки оракула с открытым текстом на XML-enc, даже без использования самого заполнения.

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

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

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

5 Gilles'SO-stopbeingevil' Aug 19 2020 at 07:33

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

Нападение Лаков Тринадцать является реальным нападением на TLS. Это была серьезная атака для текущих на тот момент версий протокола TLS (в то время TLS 1.0 - TLS 1.1 и 1.2 существовали, но не получили широкого распространения). Так что нет, атаки оракула с заполнением абсолютно работают в реальном мире.

(те, которые говорят, правильное или неправильное заполнение, например sslv3).

Lucky Thirteen влияет на версии до TLS 1.2, которая является версией, используемой сегодня для большинства безопасных коммуникаций. Он влияет только на комплекты шифров, использующие CBC, которые устарели именно из-за этой атаки, но большинство конечных точек по-прежнему позволяют это, даже если они предпочтут шифровальные комплекты AEAD. Многие, но не все популярные реализации TLS содержат код, предотвращающий атаку Lucky Thirteen (за счет снижения производительности). Так что нет, атаки оракула с дополнением актуальны для протоколов, которые все еще широко используются.

Я пишу программу, которая шифрует данные на Python, и слышал об атаках оракула с дополнением, но я думаю, что они переоценены

Что ж, это правда, что вам не стоит беспокоиться о дополнении атак оракула. Но не стоит волноваться, потому что, поскольку они хорошо известны, мы знаем, как от них защититься: не используйте отступы. И ни один современный режим шифрования не использует заполнение. Просто используйте любой общий режим AEAD, например GCM, CCM или ChaCha20 + Poly1305. Или, что еще лучше, используйте высокоуровневую библиотеку, такую ​​как NaCl / libsodium ( PyNaCl в Python): если вы вводите буквы AES в свой код, вы делаете это неправильно .