
- •Министерство образования и науки Российской Федерации
- •В.И. Аверченков, м.Ю. Рытов, с.А. Шпичак
- •Брянск Издательство бгту
- •Isbn 978-5-89838-596-5
- •Редактор издательства т.И. Королева
- •Темплан 2011г., п. 57
- •1. Введение в криптографию 10
- •2. Стойкость криптографических систем 34
- •3. Принципы построения симметричных криптографических алгоритмов 61
- •4. Принципы построения асимметричных криптографических алгоритмов 98
- •5. Криптографические хэш-функции и электронно-цифровая подпись 133
- •6. Организация сетей засекреченной связи 160
- •7.Криптоанализ и перспективные направления в криптографии 183
- •Предисловие
- •1. Введение в криптографию
- •1.1. Краткая история развития криптографических методов.
- •1.2. Основные понятия криптографии
- •1.2.1. Термины и определения
- •1.2.2. Классификация шифров
- •1.2.3. Характер криптографической деятельности
- •Контрольные вопросы
- •2. Стойкость криптографических систем
- •2.1. Модели шифров и открытых текстов
- •2.1.1. Алгебраические модели шифров.
- •2.1.2. Вероятностные модели шифров.
- •2.1.3. Математические модели открытых сообщений.
- •2.2. Криптографическая стойкость шифров
- •2.2.1. Теоретико-информационный подход к оценке криптостойкости шифров
- •2.2.2. Практическая стойкость шифров.
- •2.3. Имитостойкость и помехоустойчивость шифров
- •2.3.1. Имитостойкость шифров. Имитация и подмена сообщения
- •2.3.2. Способы обеспечения имитостойкости
- •2.3.3. Помехостойкость шифров
- •2.3.4. Практические вопросы повышения надежности.
- •Контрольные вопросы
- •3. Принципы построения симметричных криптографических алгоритмов
- •3.1. Виды симметричных шифров. Особенности программной и аппаратной реализации.
- •3.2. Принципы построения блочных шифров
- •3.2.1. Базовые шифрующие преобразования
- •3.2.2. Сеть Файстеля
- •3.3. Современные блочные криптоалгоритмы
- •3.3.1. Основные параметры блочных криптоалгоритмов.
- •3.3.2. Алгоритм des
- •3.3.3. Блочный шифр tea
- •Var key:tLong2x2;
- •Var y,z,sum:longint; a:byte;
- •Inc(sum,Delta);
- •3.3.4. Международный алгоритм idea
- •3.3.5. Алгоритм aes (Rijndael)
- •InverseSubBytes(s);
- •InverseShiftRows(s);
- •InverseSubBytes(s) End;
- •3.4. Принципы построения поточных шифров
- •3.4.1. Синхронизация поточных шифрсистем
- •3.4.2. Структура поточных шифрсистем
- •3.4.3.Регистры сдвига с обратной связью
- •3.4.4. Алгоритм Берленкемпа-Месси
- •3.4.5. Усложнение линейных рекуррентных последовательностей
- •3.5. Современные поточные криптоалгоритмы
- •3.5.1. Алгоритм Гиффорда
- •3.5.2. Алгоритм a5
- •3.6. Режимы использования шифров
- •Контрольные вопросы
- •4. Принципы построения асимметричных криптографических алгоритмов
- •4.1. Математические основы асимметричной криптографии
- •4.1.1. Свойства операций
- •4.1.2. Функция Эйлера. Поле. Теоремы Эйлера - Лагранжа и Ферма
- •4.1.3. Конечные поля
- •4.1.4. Основные алгоритмы
- •Алгоритм разложения чисел на простые множители.
- •4.1.5. Алгоритмы нахождения нод и мультипликативного обратного по модулю
- •4.1.6. Китайская теорема об остатках
- •4.1.7. Символы Лежандра и Якоби. Извлечение корней
- •4.2. Примеры современных асимметричных шифров
- •4.2.1. Криптосистема rsa
- •4.2.2. Взаимосвязь компонентов rsa
- •Слабые моменты реализации rsa
- •4.2.3. Криптосистема Эль-Гамаля
- •4.2.4. Криптосистема Рабина
- •4.2.5. Рюкзачные криптосистемы
- •4.2.6. Шифрсистема Мак-Элиса
- •Контрольные вопросы
- •5. Криптографические хэш-функции и электронно-цифровая подпись
- •5.1. Криптографические хэш-функции
- •5.1.1. Блочно-итерационные и шаговые функции
- •5.1.2. Ключевые функции хэширования
- •5.1.3 Бесключевые функции хэширования
- •5.1.4. Схемы использования ключевых и бесключевых функций
- •5.2. Электронно-цифровая подпись
- •5.2.1. Задачи и особенности электронно-цифровой подписи
- •5.2.2. Асимметричные алгоритмы цифровой подписи на основе rsa
- •5.2.3. Алгоритм цифровой подписи Фиата – Фейге – Шамира
- •5.2.4. Алгоритм цифровой подписи Эль-Гамаля
- •5.2.5. Алгоритм цифровой подписи Шнорра
- •5.2.6. Алгоритм цифровой подписи Ниберга-Руппеля
- •5.2.7. Алгоритм цифровой подписи dsa
- •5.2.8. Симметричные (одноразовые) цифровые подписи
- •Контрольные вопросы
- •6. Организация сетей засекреченной связи
- •6.1. Протоколы распределения ключей
- •6.1.1. Передача ключей с использованием симметричного шифрования
- •6.1.2. Передача ключей с использованием асимметричного шифрования
- •6.1.3. Открытое распределение ключей
- •6.1.4. Предварительное распределение ключей
- •6.1.5. Схемы разделения секрета
- •6.1.6. Способы установления ключей для конференц-связи
- •6.2. Особенности использования вычислительной техники в криптографии
- •6.2.1. Методы применения шифрования данных в локальных вычислительных сетях
- •6.2.2. Обеспечение секретности данных при долгосрочном хранении.
- •6.2.4. Обеспечение секретности ключей при долгосрочном хранении
- •6.2.5. Защита от атак с использованием побочных каналов
- •7.1.2. Атаки на хэш-функции и коды аутентичности
- •7.1.3. Атаки на асимметричные криптосистемы
- •7.2. Перспективные направления в криптографии
- •7.2.1. Эллиптические кривые
- •7.2.2. Эллиптические кривые над конечными полями
- •7.2.3. Алгоритм цифровой подписи ec-dsa
- •7.2.4. Квантовая криптография
- •Контрольные вопросы
- •Приложение
- •Заключение
- •Список использованной и рекомендуемой литературы
- •Учебное издание
- •Аверченков Владимир Иванович Рытов Михаил Юрьевич Шпичак Сергей Александрович
6.1.2. Передача ключей с использованием асимметричного шифрования
Рассмотрим варианты использования асимметричного шифрования для передачи секретных ключей симметричных криптосистем.
Протоколы без использования цифровой подписи.
Для передачи ключа k можно использовать следующий одношаговый протокол:
А→В: ЕkB(k,t,А),
где Е — алгоритм шифрования с открытым ключом, t — метка времени, вставляемая для предотвращения возможности повторного использования ключа.
Для осуществления взаимной аутентификации и подтверждения правильности получения ключа можно воспользоваться протоколом из [Nee78]:
A→В: ЕB(k1,А),
В→А: ЕА(k1,k2),
А→В: ЕB(k2).
Производя расшифрование полученных сообщений на втором и третьем шагах, стороны убеждаются в том, что они имеют дело именно с нужной стороной и что другая сторона правильно расшифровала полученное значение ключа.
Протоколы с использованием цифровой подписи.
При использовании цифровой подписи аутентифицированный протокол передачи ключей может содержать только одно сообщение и иметь, например, один из следующих трех видов:
А→В: EB(k,t,SA(B,k,t))
(шифрование подписанного ключа);
А→В: EB(k,t,),SA(B,k,t)
(зашифрование и подпись ключа);
А→В: t,EB(A,k),SA(B,t,EB(A,k))
(подпись зашифрованного ключа).
Сертификаты открытых ключей
Как правило, при использовании открытых ключей хранят не сами ключи, а их сертификаты. Сертификат представляет собой набор данных
CA=(A,kA,t,SkTA(A,kA,t)),
состоящий из идентификатора абонента А, его открытого ключа kА и, быть может, еще какой-либо дополнительной информации, например, времени t выдачи сертификата и срока его действия, заверенных цифровой подписью доверенного центра ТА или заслуживающего доверия лица. Сертификат предназначен для исключения возможности подмены открытого ключа при его хранении или пересылке.
Получив такой сертификат и проверив цифровую подпись, можно убедиться в том, что открытый ключ действительно принадлежит данному абоненту.
Международный стандарт CCITT X.509 определяет следующий протокол аутентификации с одновременным распределением ключей:
A→B:Ca,Da,Sa(Da),
В→А: CB,DB,SB(DB),
A→B:rB,B,SA(rB,B),
где СА и СB — сертификаты сторон, SA и SB — цифровые подписи сторон,
DA = (tА ,rA,B, data1, ЕB (k1)),
DВ = (tВ, rB, A,rA, data2,ЕА (k2))
- наборы передаваемых и подписываемых данных. В поля data заносится дополнительная информация для аутентификации источника. Третий шаг протокола требуется стороне В для подтверждения того, что она действительно взаимодействует со стороной А.
6.1.3. Открытое распределение ключей
Открытое распределение ключей позволяет двум абонентам выработать общий секретный ключ путем динамического взаимодействия на основе обмена открытыми сообщениями без какой-либо общей секретной информации, распределяемой заранее. Важным преимуществом открытого распределения является также то, что ни один из абонентов заранее не может определить значения ключа, так как ключ зависит от сообщений, передаваемых в процессе обмена.
Первый алгоритм
открытого распределения ключей был
предложен У. Диффи и М. Хеллманом. Для
его выполнения стороны должны договориться
о значениях большого простого числа р
и образующего
элемента α
мультипликативной группы
.
Для выработки общего ключа k
они должны
сгенерировать случайные числа х,
1≤
х ≤ р - 2,
и
у, 1 ≤ у
≤ р - 1,
соответственно. Затем они должны
обменяться сообщениями в соответствии
с протоколом:
А→В: α х mod p,
В→А: α y mod p.
Искомый общий ключ теперь вычисляется по формуле:
k = (α у)х = (α х)у mod p.
Недостатком этого протокола является возможность атаки типа "злоумышленник в середине", состоящей в следующем. Предположим, что злоумышленник имеет возможность осуществлять подмену передаваемых абонентами сообщений.
Рассмотрим два протокола, устраняющие этот недостаток. Первый протокол, называемый STS (station-to-station), предполагает, что пользователи применяют цифровую подпись, которой подписываются передаваемые по протоколу Диффи—Хеллмана сообщения:
А →В: α х mod p,
В→А: α y mod p, Ek(SB(α y, α x)),
A→B: Ek(SA(α x, α y)).
Здесь SA и SB — цифровые подписи пользователей А и В соответственно, k — искомый общий ключ. Они позволяют гарантировать достоверность получения сообщения именно от того пользователя, от которого это сообщение получено. Шифрование значений подписей пользователей введено для того, чтобы обеспечить взаимное подтверждение правильности вычисления значения ключа.
Еще один подход также предполагает наличие у абонентов открытых ключей, но вместо цифровой подписи предлагается использовать модифицированную процедуру выработки общего ключа. Рассмотрим протокол MTI (Мацумото-Такашима-Имаи).
Предположим, что пользователи А и В имеют секретные ключи а, 1 ≤ а ≤ р - 2, и b, 1≤ b ≤ р - 2 , соответственно, и публикуют свои открытые ключи zA = αa mod p и zB = αb mod p. Для выработки общего секретного ключа k они должны сгенерировать случайные числа х, 1≤ х ≤ р - 2, и у, 1≤ у ≤ р - 2, соответственно, а затем обменяться следующими сообщениями:
А→В: αх mod p,
В→А: αy mod p.
Искомый общий ключ вычисляется по формуле:
Теперь любая подмена сообщений приведет к тому, что все стороны получат различные значения ключа, что, в свою очередь, приведет к невозможности чтения всей передаваемой информации.