Введение
В криптографии преимущество атакующего — это мера того, насколько успешно он может атаковать криптографический алгоритм, отличая его от идеализированной версии этого типа алгоритма. Следует отметить, что в данном контексте «атакующий» сам является алгоритмом, а не человеком. Криптографический алгоритм считается безопасным, если ни один атакующий не имеет существенного преимущества, при заданных ограничениях на вычислительные ресурсы атакующего (см. конкретную безопасность). «Существенный» обычно означает «в пределах O(2−p)», где p — параметр безопасности, связанный с алгоритмом. Например, p может быть количеством бит в ключе блочного шифра.
Описание концепции
Пусть F — оракул для изучаемой функции, а G — оракул для идеализированной функции того же типа. Противник A — вероятностный алгоритм, на вход которому подается F или G, и который выдает 1 или 0. Задача A — отличить F от G, делая запросы к полученному оракулу. Мы говорим:
Примеры
Пусть F будет случайным экземпляром блочного шифра DES. Этот шифр имеет 64-битные блоки и 56-битный ключ. Следовательно, ключ выбирает одну из 2<sup>56</sup> перестановок из 2<sup>64</sup> возможных 64-битных блоков. "Случайный экземпляр DES" означает, что наш оракул F вычисляет DES, используя некоторый ключ K (неизвестный противнику), где K выбран из 2<sup>56</sup> возможных ключей с равной вероятностью. Мы хотим сравнить экземпляр DES с идеализированным 64-битным блочным шифром, то есть с перестановкой, выбранной случайным образом из 2<sup>64</sup>! возможных перестановок 64-битных блоков. Обозначим эту случайно выбранную перестановку G. Следует отметить, что, согласно приближению Стирлинга, 2<sup>64</sup>! приблизительно равно , поэтому даже для указания выбранной перестановки требуется записать число, слишком большое для точного представления на любом реальном компьютере. Другими словами, G является примером "шифра", "длина ключа" которого составляет около 1021 бита, что также слишком велико для хранения на компьютере. (Однако мы можем реализовать G, используя объем памяти, пропорциональный количеству запросов, с помощью случайного оракула). Обратите внимание, что поскольку предоставленные нам оракулы шифруют любой выбранный нами открытый текст, мы моделируем атаку с выбранным открытым текстом (chosen plaintext attack) или CPA, и преимущество, которое мы вычисляем, можно назвать CPA-преимуществом данного противника. Если бы у нас также были доступны оракулы расшифровки, мы бы проводили атаку с выбранным шифротекстом (chosen ciphertext attack) или CCA и находили бы CCA-преимущество противника.
Пример 1: Угадай случайным образом
Назовите этого противника А0. Он просто подбрасывает монету и возвращает 1 или 0 с равной вероятностью, не делая никаких запросов к оракулу. Таким образом, Pr[A0(F)=1] и Pr[A0(G)=1] равны 0,5. Разница между этими вероятностями равна нулю, следовательно, Adv(A0) равна нулю. То же самое справедливо, если мы всегда возвращаем 0 или всегда возвращаем 1: вероятность одинакова для F и G, поэтому преимущество равно нулю. Этот противник не способен отличить F от G. Если мы – разработчики шифров, то наша цель (возможно, недостижимая) – сделать так, чтобы для любого противника вычислительно невозможно было добиться результата, значительно превосходящего этот. Мы добьемся успеха, если сможем создать шифр, для которого не существует отличителя, работающего быстрее, чем полный перебор.