Безопасность CCA всегда кажется чрезвычайной для людей, которые только узнают об этом. Предпосылка кажется смешной, зачем нам давать злоумышленнику столько власти? Зачем нам позволять злоумышленнику расшифровывать почти все, что он хочет, и узнавать весь результат расшифровки?
В реальном мире, когда бы мы когда-либо просто выступали в качестве оракула дешифрования для злоумышленника?
Мне нравится мотивировать безопасность CCA двумя разными способами:
(1) Если я запишу секретное сообщение в конверт, и вы никогда не прикоснетесь к этому конверту, вы не сможете сказать, что в моем конверте.
Что, если бы я также согласился открыть любой Другие конверт в мире — поможет ли это вам выяснить, что находится внутри этого специального конверта?
Конечно нет.
Почему расшифровка того, что находится внутри зашифрованного текста № 1, может рассказать вам о том, что находится внутри зашифрованного текста № 2?
Я бы не хотел покупать коробку конвертов с таким свойством и не хотел бы использовать схему шифрования с этим свойством.
(2)
Вероятно, у вас были подобные сомнения по поводу безопасности CPA: когда в реальном мире мы позволяем злоумышленнику полностью выбрать какие вещи мы шифруем?
Это правильный вопрос, но предположим, что у нас есть определение безопасности, которое не позволяет злоумышленнику влиять на выбор открытого текста. вообще.
Тогда каждый раз, когда мы шифруем в реальном мире, мы должны быть абсолютно уверены, что открытый текст нулевое влияние от любого злоумышленника — только так мы можем быть уверены, что это гипотетическое определение безопасности применимо к нашей ситуации.
Поскольку это нереалистично, наше определение безопасности должно позволять злоумышленнику иметь по крайней мере некоторый влияние на зашифрованные открытые тексты.
Но это просто не приносит пользы определение чтобы позволить злоумышленнику иметь какое-то странное частичное влияние на выбор открытых текстов.
Уровень влияния в реальном мире сильно зависит от конкретного приложения, и нам не нужен миллион различных определений безопасности для миллиона различных сценариев приложений.
Проще всего сделать то, что делает определение безопасности CPA: мы могли бы также стремиться защитить от злоумышленников, которые полностью выбрать какие открытые тексты зашифрованы!
Несмотря на то, что такой полный состязательный контроль над открытыми текстами не отражает не замужем реалистичный сценарий, он достаточно общий, чтобы хорошо применяться ко всем сценариям, в которых злоумышленник некоторый влияние на выбор открытых текстов.
Аналогичная ситуация и с расшифровкой.
Можете ли вы представить себе веб-сервер, который принимает зашифрованные тексты из внешнего мира, расшифровывает эти зашифрованные тексты, а затем делает что-то на основе результата расшифровки (то есть, если результат расшифровки таков, то делайте это, иначе делайте то)?
Если это звучит естественно, то ваше определение безопасности должно дать злоумышленнику возможность изучить что-нибудь о результате расшифровки, о состязательно созданных шифротекстах. (Определение CPA не отражает эту ситуацию.)
Итак, какой объем информации должен получить злоумышленник?
В реальном мире ответ на этот вопрос сильно зависит от конкретного приложения.
Если нам нужно определение безопасности общего назначения, применимое ко многим реалистичным сценариям, то это определение безопасности должно просто давать злоумышленнику как можно больше возможностей.
В этом случае он должен просто позволить злоумышленнику свободно расшифровать все, что он хочет, и узнать весь результат расшифровки (за исключением способов, которые явно упрощают игру в области безопасности).
Безопасность CCA не предназначена для отражения единственного сценария реального мира, когда мы предоставляем злоумышленнику полный оракул дешифрования.
Скорее, он должен быть достаточно общим, чтобы Любые сценарий, в котором злоумышленник узнает что-нибудь о результате расшифровки сгенерированных противником шифротекстов.