Введение

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

Алгоритмы

Оригинальный AONT, пакетная трансформация, был описан Рональдом Л. Ривестом в его статье 1997 года "Все или ничего шифрование и пакетная трансформация". Трансформация, предложенная Ривестом, заключалась в предварительной обработке открытого текста путем применения операции XOR к каждому блоку открытого текста с индексом этого блока, зашифрованным случайно выбранным ключом, а затем добавлении одного дополнительного блока, вычисленного путем применения операции XOR к этому случайному ключу и хешам всех предварительно обработанных блоков. Результат этой предварительной обработки называется псевдосообщением и служит входными данными для алгоритма шифрования. Для отмены пакетной трансформации требуется вычислить хеш каждого блока псевдосообщения, кроме последнего, применить операцию XOR ко всем хешам с последним блоком для восстановления случайного ключа, а затем использовать этот случайный ключ для преобразования каждого предварительно обработанного блока обратно в его исходный блок открытого текста. Таким образом, невозможно восстановить исходный открытый текст без доступа к каждому блоку псевдосообщения. Хотя в статье Ривеста приведено подробное описание пакетной трансформации только для режима CBC, она может быть реализована с использованием любого режима шифрования. Следовательно, существуют различные варианты: пакетная трансформация ECB, пакетная трансформация CBC и т.д. В 1999 году Виктор Бойко предложил другой AONT, безопасность которого доказана в модели случайного оракула. Эта реализация является линейной трансформацией, что, возможно, указывает на некоторые уязвимости в исходном определении.

Приложения

AONT можно использовать для повышения стойкости шифрования без увеличения размера ключа. Это может быть полезно, например, для защиты конфиденциальных данных с соблюдением государственных правил экспорта криптографических средств. AONT помогают предотвратить ряд атак. Один из способов повышения стойкости шифрования с помощью AONT заключается в предотвращении атак, при которых раскрытие лишь части информации не позволяет получить никакой полезной информации, поскольку частичной информации недостаточно для восстановления исходного сообщения. Другое применение, предложенное в оригинальных работах, – снижение затрат на безопасность: например, файл может быть обработан с помощью AONT, а затем зашифрована лишь его небольшая часть (например, на смарт-карте). AONT гарантирует, что в результате будет защищен весь файл. Важно использовать более надежную версию преобразования (например, предложенную Бойко выше). AONT можно комбинировать с прямой коррекцией ошибок для получения вычислительно безопасной схемы разделения секрета. Другие области применения AONT можно найти в оптимальном асимметричном дополнении (OAEP).