PRP - это Псевдослучайная перестановка и мы хотим, чтобы они были неотличимы от случайных перестановок. AES и все блочные шифры должны быть PRP. Перестановка означает, что есть инверсия, и они предназначены для того, чтобы иметь ее и действительно иметь эффективную.
Нам нужен режим работы для блочных шифров, и мы покинули CBC из-за множества атак, которые произошли, несмотря на то, что он защищен Ind-CPA.В настоящее время все шифры TLS 1.3 внутренне используют безопасный режим CTR Ind-CPA (наборы шифров TLS 1.3 — это нечто большее, все они представляют собой режимы шифрования с проверкой подлинности и данными с проверкой подлинности).
Даст ли нам что-нибудь такое расслабление?
Это дает нам много возможностей. Нам не нужно ограничиваться PRP в режиме CTR - он уже был разработан для Псевдослучайные функции (ПРФ); Режим CTR не нуждается в обратной функции. С PRF мы можем использовать широкий спектр функций, которым не нужны обратные функции (есть $2^n!$ PRP и $(2^n)^{2^n}$ PRF для n-битных блочных шифров. Даже мы можем взять хеш-функцию и преобразовать ее в шифрование CTR, как в Сальса. Мы также можем разработать ключевой график практически без затрат.
Использование PRP в режиме CTR может привести к распознаватель длинных сообщений и мы можем устранить это, используя PRF. Если мы используем PRP в режиме CTR, нам нужно ограничить количество блоков шифрования из-за леммы о переключении PRP-PRF.
Режим CTR также не требует заполнения, поэтому они невосприимчивы к атакам оракула заполнения.
ChaCha20 и Salsa20 являются хорошо известными примерами, которые имеют нулевую стоимость расписания ключей, дизайн ARX с дружественным процессором. Они имеют встроенный режим CTR и очень быстры в программном обеспечении.