Да, ты прав.
В моем вопросе действительно отсутствует формальное определение IND-CPA. Здесь я неофициально использую термин «IND-CPA» для обозначения того свойства, что схема шифрования может привести к псевдослучайным шифротекстам в $\mathcal{C}_1$
Это, конечно, более сильное предположение, чем IND-CPA, но указывать на это скучно.
Действительно, это предположение можно записать как
$\mathsf{Enc}_k$ является семейством PRF.
Возможно, более просто думать об этом с точки зрения PRF, поэтому я быстро покажу, что если $F_k, G_k$ являются (отдельно) PRF, тогда $(F_k, G_k)$ не обязательно, напр. совместное использование ключей PRF может нарушить безопасность.
Это из-за зависимости между левой и правой компонентами, как вы уже догадались.
Позволять $F_k$ быть PRF, и пусть $G_k = F_k^{\circ 2}$, т.е. $G_k(x) = F_k(F_k(x))$.
Это просто увидеть $G_k$ является (отдельно) PRF --- любой различитель для него подразумевает различитель для $F_k$, так как вы можете эффективно эмулировать доступ к запросам $G_k$ предоставлен запрос на доступ к $F_k$.
В настоящее время, $(F_k, F_k^{\circ 2})$ не является ПРФ.
Это потому, что, учитывая оракул $\mathcal{O}(\cdot)$ это либо реальное, либо случайное, вы можете.
- $(y_1, y_2)\gets\mathcal{O}(x)$,
- $(z_1, z_2) \получает\mathcal{O}(y_1)$,
- угадай РЕАЛЬНО, если $y_2 = z_1$, и RANDOM в противном случае.
ЕСЛИ $\mathcal{O}(x) = (F_k(x), F_k^{\circ 2}(x))$ это ваш PRF, тогда $y_2 = F_k^{\circ 2}(x)$, и $z_1 = F_k(y_1)= F_k(F_k(x)) = F_k^{\circ 2}(x)$ столкнуться.
В случайной игре вероятность столкновения любых двух значений довольно мала, так что это сразу подразумевает довольно хороший различитель.
Однако есть более насущные проблемы.
Один из способов построить $\mathsf{Enc}_k(m)$ XORing $м$ с ПРФ, например $\mathsf{Enc}_k(m) = (r, F_k(r)\oplus m)$.
Это просто рандомизированный режим счетчика (где сообщения представляют собой единый блок).
В этом случае совместная конструкция $(m_1,m_2)\mapsto (r, F_k(r)\oplus m_1, F_k(m_2))$.
Опять же, запросив $(м_1, м_2)$, а затем запрос $(м_3, г)$, можно получить эффективный различитель.
Это, так сказать, естественная конструкция (где $\mathsf{Enc}$ режим случайного счетчика) также небезопасен в ваших настройках.