Криптографические системы и шифры можно разделить на две большие группы в зависимости от принципа использования ключей для шифрования и расшифрования.
Если для шифрования и расшифрования используется один и тот же ключ $K$, либо если получение ключа расшифрования $K_2$ из ключа шифрования $K_1$ является тривиальной операцией, то такая криптосистема называется симметричной. В зависимости от объёма данных, обрабатываемых за одну операцию шифрования, симметричные шифры делятся на блочные, в которых за одну операцию шифрования происходит преобразование одного блока данных (32 бита, 64, 128 или больше), и потоковые, в которых работают с каждым символом открытого текста по отдельности (например, с 1 битом или 1 байтом). Примеры блочных шифров рассмотрены в главе 5, а потоковых – в главе 7.
Использование блочного шифра подразумевает разделение открытого текста на блоки одинаковой длины, к каждому из которых применяется функция шифрования. Кроме того, результат шифрования следующего блока может зависеть от предыдущего
. Данная возможность регулируется режимом работы блочного шифра. Примеры нескольких таких режимов рассмотрены в разделе 5.8.
Если ключ расшифрования получить из ключа шифрования вычислительно сложно, то такие криптосистемы называют криптосистемами с открытым ключом или асимметричными криптосистемами. Некоторые из них рассмотрены в главе 9. Все используемые на сегодняшний день асимметричные криптосистемы работают с открытым текстом, составляющим несколько сотен или тысяч бит, поэтому классификация таких систем по объёму обрабатываемых за одну операцию данных не производится.
Алгоритм, который выполняет отображение аргумента произвольной длины в значение фиксированной длины, называется хеш-функцией. Если для такой хеш-функции выполняются определённые свойства, например, устойчивость к поиску коллизий, то это уже криптографическая хеш-функция. Такие функции рассмотрены в главе 8.
Для проверки аутентичности сообщения с использованием общего секретного ключа отправителем и получателем используется код аутентификации сообщения (другое название в русскоязычной литературе - имитовставка, англ. message authentication code, MAC), рассмотренный в разделе 8.5. Его аналогом в криптосистемах с открытым ключом является электронная подпись, алгоритмы генерации и проверки которой рассмотрены в главе 9 вместе с алгоритмами асимметричного шифрования.
Шифры по способу преобразования открытого текста в шифртекст разделяются на шифры замены и шифры перестановки.
В шифрах замены символы одного алфавита заменяются символами другого путём обратимого преобразования. В последовательности открытого текста символы входного алфавита заменяются на символы выходного алфавита. Такие шифры применяются как в симметричных, так и в асимметричных криптосистемах. Если при преобразовании используются однозначные функции, то такие шифры называются однозначными шифрами замены. Если используются многозначные функции, то шифры называются многозначными шифрами замены (омофонами).
В омофоне символам входного алфавита ставятся в соответствие непересекающиеся подмножества символов выходного алфавита. Количество символов в каждом подмножестве замены пропорционально частоте встречаемости символа открытого текста. Таким образом, омофон создаёт равномерное распределение символов шифртекста, и прямой частотный криптоанализ невозможен. При шифровании омофонами символ входного алфавита заменяется на случайно выбранный символ из подмножества замены.
Шифры называются моноалфавитными, когда для шифрования используется одно отображение входного алфавита в выходной алфавит. Если алфавиты на входе и выходе одинаковы, и их размеры (число символов) равны $D$, тогда $D!$ – количество всевозможных моноалфавитных шифров замены такого типа.
Полиалфавитный шифр задаётся множеством различных вариантов отображения входного алфавита на выходной алфавит. Шифры замены могут быть как потоковыми, так и блочными. Однозначный полиалфавитный потоковый шифр замены называется шифром гаммирования. Символом алфавита может быть, например, 256-битовое слово, а размер алфавита – $2^{256}$ соответственно.
Шифры перестановки реализуются следующим образом. Берут открытый текст, например буквенный, и разделяют на блоки определённой длины m: $x_1, x_2, \dots, x_m$, где $x_i$ - i-й символ, $i = 1, \dots , m$. Затем осуществляется перестановка позиций блока (вместе с символами). Перестановки могут быть однократные и многократные. Частный случай перестановки – сдвиг. Приведём пример:
Ключ такого шифра указывает изменение порядка номеров позиций блока при шифровании и расшифровании.
Существуют так называемые маршрутные перестановки. Используется какая-либо геометрическая фигура, например прямоугольник. Запись открытого текста ведётся по одному маршруту, например по строкам, а считывание для шифрования осуществляется по другому маршруту, например по столбцам. Ключ шифра определяет эти маршруты. В случае, когда рассматривается перестановка блока текста фиксированной длины, перестановку можно рассматривать как замену.
В полиалфавитных шифрах при шифровании открытый текст разбивается на блоки (последовательности) длины $n$, где $n$ – период. Этот параметр выбирает криптограф и держит его в секрете.
Поясним процедуру шифрования полиалфавитным шифром. Запишем шифруемое сообщение в матрицу по столбцам определённой длины. Пусть открытый текст таков: «Игры различаются по содержанию, характерным особенностям, а также по тому, какое место они занимают в жизни детей». Зададим $n=4$ и запишем этот текст в матрицу размера $(4 \times 24)$:
и | р | и | т | о | е | н | а | т | ы | о | н | я | а | п | м | к | е | о | а | а | ж | и | е |
г | а | ч | с | с | р | и | р | е | м | б | о | м | к | о | у | о | с | н | н | ю | и | д | й |
р | з | а | я | о | ж | ю | а | р | о | е | с | а | ж | т | к | е | т | и | и | т | з | е | |
ы | л | ю | п | д | а | х | к | н | с | н | т | т | е | о | а | м | о | з | м | в | н | т |
Выбираем $4$ различных моноалфавитных шифра.
Первую строку
и | р | и | т | о | е | н | а | т | ы | о | н | я | а | п | м | к | е | о | а | а | ж | и | е |
шифруем, используя первый шифр. Вторую строку
г | а | ч | с | с | р | и | р | е | м | б | о | м | к | о | у | о | с | н | н | ю | и | д | й |
шифруем, используя второй шифр, и т. д.
Выполняя расшифрование, легальный пользователь знает период. Он записывает принятую шифрограмму по строкам в матрицу с длиной строки, равной периоду, к каждому столбцу применяет соответствующий ключ и расшифровывает сообщение, зная соответствующие шифры.
Шифры перестановки можно рассматривать как частный случай шифров замены, если отождествить один блок перестановки с одним символом большого алфавита.
Почти все современные шифры являются композиционными [130]. В них применяются несколько различных методов шифрования к одному и тому же открытому тексту. Другое их название – составные шифры. Впервые понятие «составные шифры» было введено в работе Клода Шеннона (англ. Claude Elwood Shannon, [97]).
В современных криптосистемах шифры замены и перестановок используются многократно, образуя составные (композиционные) шифры.
Приведём примеры названий некоторых современных криптографических примитивов, из которых строят системы защиты информации.