
- •1. Общие положения
- •1.2. Когда и зачем нужно защищать информацию?
- •1.3. Язык сообщения
- •1.4. Тайнопись
- •1.5. Коды и их назначение
- •1.6. Криптография и криптоанализ
- •1.7. Основной объект криптографии
- •1.8. Что такое ключ
- •1.9. Атака на шифр. Стойкость шифра
- •1.10. Сложность вскрытия шифра
- •1.11. Принцип Кирхгофа
- •2. Древняя история криптографии
- •3. Современная криптография
- •3.1. Классификация криптографических систем
- •3.2. Основные классы симметричных криптосистем
- •3.3. Шифр замены
- •3.4. Шифр перестановки
- •3.5. Шифр Энигмы
- •4. Блочные шифры
- •4.1. Общие сведения о блочных шифрах
- •4.2. Сеть Фейштеля
- •4.3. Шифр взбивания. Стандарт des
- •4.3.1. Описание алгоритма
- •4.3.2. Анализ эффективности алгоритма
- •4.4. Отечественный стандарт шифрования данных
- •4.4.1. Режим простой замены
- •4.4.2. Режим гаммирования
- •4.4.3. Режим гаммирования с обратной связью
- •4.5. Режимы применения блочных шифров
- •5. Новый криптостандарт блочного шифрования сша
- •5.1. Общие сведения о конкурсе aes
- •5.1.1. Финалист aes – шифр mars
- •5.1.2. Финалист aes – шифр rc6
- •5.1.3. Финалист aes – шифр Serpent
- •5.1.4. Финалист aes – шифр TwoFish
- •5.2. Победитель aes – шифр Rijndael
- •6. Поточные шифры
- •6.1. Регистры сдвига с обратной связью
- •6.2. Шифр a5
- •6.3. Шифр rc4
- •6.4. Шифр seal
- •7. Асимметричные криптосистемы
- •7.1. Общие сведения об асимметричных криптоалгоритмах
- •7.2. Односторонние функции и функции-ловушки
- •7.3. Алгоритм rsa
- •Длина ключа
- •Применение rsa
- •7.4. Криптосистема Эль-Гамаля
- •7.5. Алгоритм Диффи-Хелмана
- •7.6. Механизм распространения открытых ключей
- •7.6.1. Обмен ключами по алгоритму Диффи-Хеллмана
- •8. Сравнительная характеристика шифров
- •9. Электронные цифровые подписи
- •9.1. Постановка задачи
- •9.2. Алгоритмы электронной цифровой подписи
- •9.2.1. Цифровые подписи, основанные на асимметричных криптосистемах
- •9.2.2. Стандарт цифровой подписи dss
- •9.2.3. Стандарт цифровой подписи гост р 34.10-94
- •9.3. Цифровые подписи, основанные на симметричных криптосистемах
- •9.4. Функции хэширования
- •9.4.1. Функция хэширования sha
- •9.4.2. Функция хэширования гост р 34.11-94
- •9.4.3. Функция хэширования md5
- •Библиографический список
- •Оглавление
3.5. Шифр Энигмы
Предшественницей современных криптографических машин была роторная машина, изобретенная в 1917 году Эдвардом Хеберном. Впоследствии она получила называние Энигма. Независимая промышленная версия была создана чуть позже берлинским инженером Артуром Кирхом. Промышленные образцы этой машины изготовляла фирма Siemens.
Энигма вначале представляла собой четыре вращающихся на одной оси барабана, что обеспечивало более миллиона вариантов шифра простой замены, которые определялись текущим положением барабанов. На каждой стороне барабана по окружности располагались 25 электрических контактов (сколько букв в алфавите). Контакты с обеих сторон барабана соединялись попарно случайным образом 25 проводами, формировавшими замену символов. Колеса складывались вместе и их контакты, касаясь друг друга, обеспечивали прохождение электрических импульсов сквозь весь пакет колес. Перед началом работы барабаны поворачивались так, чтобы устанавливалось заданное кодовое слово – ключ. При нажатии клавиши и кодировании очередного символа правый барабан поворачивался на один шаг. После того, как барабан делал полный оборот, на один шаг поворачивался следующий барабан (как в счетчике электроэнергии). Таким образом получался ключ заведомо гораздо более длинный, чем текст сообщения.
Например, в первом правом барабане провод от контакта, соответствующего букве U, присоединен к контакту буквы F на другой его стороне (рис. 3.1). Если же барабан поворачивался на одни шаг, то этот же провод соответствовал замене следующей за U буквы V на следующую за F букву G. Т.к. барабаны соприкасались контактами, то электрический импульс от нажатой клавиши с буквой исходного текста прежде чем достигал выхода претерпевал 4 замены: по одной на каждом барабане.
Рис. 3.1. Роторная машина Энигмы.
Дальнейшее усовершенствование этой машины сделало движение барабанов хаотичным, а их число увеличилось сначала до 5, а потом до 6. Все устройство могло поместиться в портфеле и было так просто, что обслуживалось обычными связистами.
При моделировании машины Энигмы инженера Кирха на ЭВМ можно достичь хорошей устойчивости при сравнительной простоте программы.
В чем же была слабость шифра?
1. Пять барабанов могли обеспечить около 100 миллионов ключей, что позволяло их перебрать на ЭВМ за день. Если использовать не 25 латинских символов, а 256 кодов ASCII и увеличить число барабанов, то сложность раскалывания шифра существенно возрастет.
2. Набор барабанов был ограничен и менялся редко, что вызывало охоту англичан за их экземплярами на подводных лодках. ЭВМ может для каждой шифровки использовать индивидуальные барабаны, генерируемые по ключу, что резко усложняет вскрытие шифра.
3. Можно сделать движение барабанов хаотичным, по случайной последовательности, вырабатываемой по ключу.
Подсчитаем число ключей такого шифра, реализованного программно. Пусть длина периода программного генератора случайных чисел равна 224. Восемь барабанов, генерируемые с помощью этого генератора, дадут вместе 2192 вариантов ключа. Если учесть еще варианты псевдослучайной последовательности, управляющей движением барабанов, то получится цифра в 2216 вариантов ключа.
Таким образом довольно просто получить устойчивый шифр при использовании программного генератора случайных чисел с периодом малой для криптографии длины.