Читайте также: |
|
Еще в работе Шеннона «Теория связи секретных систем» были сформулированы следующие основные принципы преобразования сообщений, которые могут обеспечить высокую стойкость блокового шифрования (рис. 9):
· подстановка (нелинейное преобразование, зависящее от ключа), ставит на место одних символов другие как функцию символов сообщения и ключа, создает сложную зависимость между сообщением и шифртекстом;
2) перестановка выполняет перепутывание, перемешивание символов, скрывает частоту появления устойчивых сочетаний символов;
3) итерирование (повторение двух предыдущих пунктов многократно) распространяет (рассредоточивает, рассеивает) влияние отдельных символов открытого текста и отдельных символов ключа на значительное число символов шифртекста.
Рис. 9. Принцип построения блоковых шифров |
Достаточно сложно задать общее нелинейное преобразование на блоках большой длины n. В то же время, если выбирать блоки короткими, то в криптограмме сохранится статистика сообщения. Статистику сообщения оппонент может использовать для эффективного криптоанализа, как это реализуется, например, при криптоанализе шифра простой замены. Для разрешения указанного противоречия обычно выбирается умеренная длина блоков. Сообщение разбивается на блоки одинаковой длины n. Затем к каждому блоку многократно применяются нелинейное преобразование и перестановка символов в пределах блока.
Простейшим способом задания нелинейного преобразования является табличный способ, когда сначала двоичный блок преобразуется в число, затем это число по таблице преобразуется в другое число, которое в свою очередь снова преобразуется в двоичный блок. Например, если шифруются блоки длиной n = 3, пусть им сопоставляются некоторые числа:
000 ® 0, 001 ® 1, 010 ® 2,..., 111 ® 7,
а таблица подстановок следующим образом задается ключом:
{0, 1, 2, 3, 4, 5, 6, 7}®{4, 2, 6, 7, 0, 5, 1, 3}.
Это означает, что, например, входной блок 011 будет преобразован в выходной блок 111. Сложность такого преобразования равна 2 n , т.е. равна числу возможных двоичных слов длиною n, где n – длина блока.
Нелинейные преобразования определяются секретным ключом. При выполнении каждой итерации обычно используется новый ключ. Для его получения производят специальные преобразования секретного ключа. Совокупность применяемых ключей (текущих ключевых элементов) называют расширенным ключом. Расширенный ключ вырабатывается из секретного ключа, например, при помощи циклических сдвигов символов исходного ключа. Определенные последовательности бит расширенного ключа применяют как текущие ключи.
Дата добавления: 2015-10-26; просмотров: 146 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Маскираторы аналоговых сообщений | | | Многократное шифрование блоков |