logo search
Информационная безопасность / Информационная безопасность2006

Шифры перестановки

Шифр замены в чистом его виде никогда не применяется, а употребляется вместе с перестановками, например, бит внутри байта.

Если после замены символы сообщения превращались во что угодно, но сохраняли в шифровке свое исходное местоположение, то после перестановки символы уже и располагаются в текстегде угодно. Это надежно защищает шифровку от атак криптоаналитиков, так как перестановку можно рассматривать как умножения вектора сообщенияна матрицуPперестановки бит с элементами 0, 1 и размером в длину сообщения в битах.

- Если перестановка делается после гаммирования , то приимееми в канал попадает уже ключ,шифрованныйперестановкой. Атака на ключ становится неэффективной. Например, если передача идет побайтно, то достаточно лишь переставить биты внутри байта, чтобы с вероятностью 0,97 исказить его и сделать перехват ключа в паузах передачи невозможным.

Перестановка группами бит (например, как байты) программно удобнее, чем побитовая перестановка, но не перемешивает биты полностью. Побитовая перестановка надежнее, но сложнее во времени пропорционально квадрату числа переставляемых элементов, например, перестановка бит в 64 раза дороже перестановки байт.

Придумано много вычислительных способов перестановок.

Например, широко применяется перестановка программно по номерам Nот 0 доL–1 рекуррентным выражением

При выполнении следующих 4 условий

  1. KиMберутся из интервала [1,L–1]

  2. Mвзаимно просто сL

  3. K–1 делится на любой простой делительL

  4. K–1 делится на 4, еслиLделится на 4

В этом случае для хорошего запутывания приходится делать перестановку несколько раз меняя случайно KиM.

Быструю и качественную перестановку можно получить перестановкой пар по случайному ключу. Например, для блока из Nбит заведем массивarrпеременных целого типа (0, 1) и загрузим в него блок исходного двоичного текста. Программа перестановки на языкеQBasicбудет иметь вид:

RANDOMIZE 1379 FOR i = 1 TO N SWAP arr(i), arr(N*RND) 'обменять переменные arr(i) arr(j)

NEXT i

Эта перестановка практически не оставляет ни одного символа на своем месте. Заметим, что эта же программа применима и для перестановки букв, закодированных байтами ASCII.

Можно производить перестановку по аналогии с тасованием колоды карт: тасовать биты или байты блока текста. Обозначим присоединение (конкатенацию) знаком «+». Пусть блок текста разбит на фрагменты Y=A+B+Cи разбиение на фрагменты из бит или байт производится случайным образом. Тогда результат перестановки, например, будетY'=C+B+A. Однако, чтобы текст основательно перепутать нужно очень многократно повторить тасование.

Вскрытие случайной перестановки без знания ключа неоднозначно и, следовательно, не позволяет сколько-нибудь уверенно расшифровать сообщение.

Шифрование заменой в сочетании с перестановкой ликвидировало надежду на взлом разными хитроумными методами отгадывания текста. Взломщикам остался лишь метод прямого подбора ключа. Однако по сохранившейся статистике использованных в тексте символов можно сделать прогнозы об общем содержании текста, хотя и мало уверенные.