Я хотел бы спросить, почему исправление перестановки не является одним из способов.
Является ли это одним из способов, зависит от того, как вы определяете проблему.
Если вам предоставлен доступ Oracle к односторонней перестановке, то есть вам разрешено предоставлять ряд запросов $х$ и Oracle предоставляет вам оценку $Ф(х)$, ну будем надеяться, что (при условии, что размер большой) он односторонний. Ведь если мы определим $F$ быть блочным шифрованием AES на основе секретного ключа (поэтому $n = 2^{128}$), что ж, эта парадигма Oracle — это в точности стандартная CPA-атака, и мы надеемся, что AES защищен от нее. И действительно, можно формально доказать, что вероятность успеха, которую вы указали для случайной перестановки, близка (фактическая верхняя граница вероятности немного выше, потому что злоумышленник может угадать ввод, который он не предоставил Оракулу, немного увеличивая свою вероятность успеха ).
С другой стороны, если вам дано описание $F$, это становится более проблематичным. Самый простой (и наиболее распространенный) способ создать сильную перестановку — взять серию слабых перестановок (раундов) и соединить их вместе; это подход, который использует Keccak (SHA-3). Это работает, но его легко инвертировать (просто вычислить инверсию слабых перестановок в обратном порядке).
С другой стороны, это не единственный способ определить перестановку; пример другого способа - определить перестановку $F(x) = x^e \bmod n$ для модуля RSA $n$ и общественный представитель $е$. Это перестановка $x \in [0 ... n-1]$, и если $п, е$ хорошо подобраны, их трудно инвертировать, даже учитывая значения $п, е$ (по крайней мере, мы на это надеемся; иначе RSA небезопасен)