Россия, Санкт-Петербург, Северо-Западный заочный технический университет, 2007 |
Алгоритмы симметричного шифрования
Основные понятия
Рассмотрим общую схему симметричной, или традиционной, криптографии.
Процесс шифрования состоит в использовании определенного алго-ритма, на вход которому подаются исходное незашифрованное сообщение, называемое также plaintext, и ключ. Выходом алгоритма является зашифрованное сообщение, называемое также ciphertext. Ключ является значени-ем, не зависящим от шифруемого сообщения. Изменение ключа должно приводить к изменению зашифрованного сообщения.
Зашифрованное сообщение передается получателю. Получатель преобразует зашифрованное сообщение в исходное незашифрованное сообщение с помощью алгоритма расшифрования и того же самого ключа, который использовался при шифровании.
Незашифрованное сообщение будем обозначать P или M, от слов plaintext и message. Зашифрованное сообщение будем обозначать С, от слова chiphertext.
Безопасность, обеспечиваемая традиционной криптографией, зависит от нескольких факторов.
Во-первых, криптографический алгоритм должен быть достаточно сильным, чтобы передаваемое зашифрованное сообщение невозможно было расшифровать без ключа, используя только различные статистические закономерности зашифрованного сообщения или какие-либо другие способы его анализа.
Во-вторых, безопасность передаваемого сообщения должна зависеть от секретности ключа, но не от секретности алгоритма. Алгоритм должен быть проанализирован специалистами, чтобы исключить наличие слабых мест, при которых плохо скрыта взаимосвязь между незашифрованным и зашифрованным сообщениями. К тому же при выполнении этого условия производители могут создавать дешевые аппаратные чипы и свободно рас-пространяемые программы, реализующие данный алгоритм шифрования.
В-третьих, алгоритм должен быть таким, чтобы нельзя было узнать ключ, даже зная достаточно много пар (зашифрованное сообщение, неза-шифрованное сообщение), полученных при шифровании с использованием данного ключа.
Клод Шеннон ввел понятия диффузии и конфузии для описания стойкости алгоритма шифрования.
Диффузия – это рассеяние статистических особенностей и закономерностей незашифрованного текста в широком диапазоне статистических особенностей и закономерностей зашифрованного текста. Это достигается тем, что каждый бит или группа битов незашифрованного сообщения влияет на значения многих битов зашифрованного сообщения или, что то же самое, любой бит зашифрованного сообщения зависит от многих битов незашифрованного сообщения.
Конфузия – это уничтожение статистической взаимосвязи между зашифрованным текстом и ключом.
Если P – это исходное сообщение и K – криптографический ключ, то зашифрованный передаваемый текст можно записать в виде
C = EK[P], где EK – алгоритм шифрования.
Получатель, используя тот же ключ, расшифровывает сообщение
P = DK[C], где DK – алгоритм расшифрования
Противник, не имея доступа к K и P, должен попытаться узнать P, K или и то, и другое.
Алгоритмы симметричного шифрования различаются способом, кото-рым обрабатывается исходное сообщение. Возможно шифрование блоками или шифрование потоком.
Блок сообщения рассматривается как неотрицательное целое число, либо как несколько независимых неотрицательных целых чисел. Длина блока всегда выбирается равной степени двойки. В большинстве блочных алгоритмов симметричного шифрования используются следующие опера-ции:
- Табличная подстановка, при которой одна группа битов пре-образуется в другую группу битов. Это так называемые S-box. Если преобразуется i бит в j бит, то говорят, что размерностьS-box ixj.
- Перемешивание, часто обозначаемое Р (Permutation), при ко-тором биты сообщения переупорядочиваются.
- Операция сложения по модулю 2, обозначаемая XOR или .
- Операция сложения по модулю 232 или по модулю 216.
- Циклический сдвиг на некоторое число битов.
Эти операции циклически повторяются в алгоритме, образуя так назы-ваемые раунды. Входом каждого раунда является выход предыдущего ра-унда и ключ, который получен по определенному алгоритму из ключа шифрования K. Ключ раунда называется подключом. Каждый алгоритм шифрования может быть представлен следующим образом: