
- •10.1. Основные понятия криптографии.
- •10.2. Алгоритмы шифрования.
- •10.2.1. Симметричные алгоритмы шифрования.
- •10.2.2. Асимметричные алгоритмы шифрования.
- •10.3. Криптоаналитические атаки.
- •10.4. Шифры.
- •10.4.1. Подстановочные шифры.
- •10.4.2. Перестановочные шифры.
- •10.4.3. Компьютерные алгоритмы шифрования
- •10.5. Электронная цифровая подпись.
10.2.1. Симметричные алгоритмы шифрования.
Симметричные алгоритмы шифрования - способ шифрования, в котором для шифрования и расшифровывания применяется один и тот же криптографический ключ. Ключ алгоритма должен сохраняться в секрете обеими сторонами. Алгоритм шифрования выбирается сторонами до начала обмена сообщениями. Шифрование и расшифрование в симметричных криптографических алгоритмах задаются формулами:
Е к (Р) = С
D k (E k (P)) = P
Схема процесса передачи сообщения приведена на рис. 12.2. Симметричное шифрование можно применять как при отправке сообщений между двумя пользователями, разделенными расстоянием, так и при отправке «посланий» пользователем самому себе, но во времени (шифрование файлов на жестких дисках и сменных носителях).
Симметричные алгоритмы шифрования бывают двух видов:
- потоковые алгоритмы (обрабатывают открытый текст побитно);
- блочные алгоритмы (открытый текст разбивается на блоки, состоящие из нескольких бит).
Потоковые алгоритмы получив порцию из произвольного количества бит - выполняют шифрование/дешифрование. Удобны в каналах последовательной связи. Реализуются программно и аппаратно.
Генератор гаммы выдаёт ключевой поток (гамму). Поток битов шифротекста получается с помощью применения операции XOR. Расшифрование производится операцией XOR между той же самой гаммой и зашифрованным текстом. Если последовательность битов гаммы не имеет периода и выбирается случайно, то взломать шифр невозможно. Ключи, сравнимые по длине с передаваемыми сообщениями, трудно использовать на практике. Поэтому обычно применяют ключ меньшей длины (128 бит). С помощью него генерируется псевдослучайная гаммирующая последовательность.
RC4 (Rivest Cipher 4) - потоковый шифр, широко применяющийся в различных системах защиты информации в компьютерных сетях (в протоколах SSL и TLS, алгоритме безопасности беспроводных сетей WEP, для шифрования паролей в Windows NT). Алгоритм RC4 строится как и любой потоковый шифр на основе параметризованного ключом генератора псевдослучайных битов с равномерным распределением. Длина ключа может составлять от 40 до 256 бит.
Основные преимущества шифра - высокая скорость работы и переменный размер ключа. RC4 довольно уязвим, если используются не случайные или связанные ключи, один ключевой поток используется дважды. Эти факторы, а также способ использования могут сделать криптосистему небезопасной (WEP).
Ядро алгоритма состоит из функции генерации ключевого потока. Эта функция генерирует последовательность битов (ki), которая затем объединяется с открытым текстом (mi) посредством суммирования по модулю два. Так получается шифрограмма (ci):
.
Расшифровка заключается в регенерации этого ключевого потока (ki) и сложении его и шифрограммы (ci) по модулю два. В силу свойств суммирования по модулю два на выходе мы получим исходный незашифрованный текст(mi):
Другая главная часть алгоритма — функция инициализации, которая использует ключ переменной длины для создания начального состояния генератора ключевого потока.
RC4 - фактически класс алгоритмов, определяемых размером его блока. Этот параметр n является размером слова для алгоритма. Обычно, n = 8, но в целях анализа можно уменьшить его. Однако для повышения безопасности необходимо увеличить эту величину. Внутреннее состояние RC4 представляется в виде массива слов размером 2n и двух счетчиков, каждый размером в одно слово. Массив известен как S-бокс, и далее будет обозначаться как S. Он всегда содержит перестановку 2n возможных значений слова. Два счетчика обозначены через i и j.
Алгоритм инициализации RC4 приведен ниже. Этот алгоритм также называется алгоритмом ключевого расписания (Key-Scheduling Algorithm or KSA). Этот алгоритм использует ключ, сохраненный в Key, и имеющий длину l байт. Инициализация начинается с заполнения массива S, далее этот массив перемешивается путем перестановок определяемых ключом. Так как только одно действие выполняется над S, то должно выполняться утверждение, что S всегда содержит все значения кодового слова.
В блочные алгоритмах - преобразования могут применяться только над информацией строго определенного объема. Размер блока равен 64, 128, 256 бит. Блочное шифрование получило более широкое распространение из-за развития вычислительной техники. Реализуются программно.
Блочный шифр представляет собой закон отображения множества входных блоков исходного текста на множество блоков зашифрованного текста. Закон сильно зависит от секретного ключа шифрования.
Количество бит в обрабатываемом блоке называется разрядностью блока, количество бит в ключе - размером ключа блока. Наиболее популярная разрядность блока - 64 и 128 бит. Размер ключа - это 128, 192 или 256 бит.