Posobie_KZI_uchebnoe_posobie


0163195
Министерство образования и науки Российской Федерации
Брянский государственный технический университет

В.И. Аверченков, М.Ю. Рытов,
С.А. Шпичак
Криптографические методы защиты информации
Утверждено редакционно-издательским советом в качестве
учебного пособия
Брянск
Издательство БГТУ
2011

УДК 621.391
Аверченков, В.И. Криптографические методы защиты информации [Текст]+[Электронный ресурс]: учебное пособие/ В.И. Аверченков, М.Ю. Рытов, С.А. Шпичак. – Брянск: БГТУ, 2011. – 216 с. – (Серия «Организация и технология защиты информации»).
ISBN 978-5-89838-596-5
Рассматриваются общие вопросы теории криптографии, принципы построения криптоалгоритмов и сетей засекреченной связи, а также основы криптоанализа и перспективные направления развития криптографии.
Учебное пособие предназначено для студентов очной и заочной форм обучения специальностей 090103 – «Организация и технология защиты информации» и 090105 «Комплексное обеспечение информационной безопасности автоматизированных систем», а также может быть полезно специалистам, интересующимся вопросами криптографического обеспечения защиты информации.
Ил. – 41. Табл. – 17. Библиогр. - 22
Рецензенты: кафедра «Программное обеспечение вычислительной техники и систем информационной безопасности» Орловского государственного университета; доктор технических наук профессор Лозбинев Ф.Ю.
Редактор издательства Т.И. Королева
Компьютерный набор С.А. Шпичак, Л.Б. Автомонова
Темплан 2011г., п. 57

Подписано в печать 25.10.11 Формат 60х84 1/16 Бумага офсетная. Офсетная печать.
Усл. печ. л.12,61 Уч.-изд. л. 12,61 Тираж 60 экз. Заказ

Издательство Брянского государственного технического университета
241035, Брянск, бульвар им. 50-летия Октября, 7, БГТУ, тел. 58-82-49
Лаборатория оперативной полиграфии БГТУ, ул. Институтская, 16.
ISBN 978-5-89838-596-5 Брянский государственный
технический университет, 2011
ОГЛАВЛЕНИЕ
ПРЕДИСЛОВИЕ………………………………………………………….7 TOC \o "1-3" \h \z \u
1. ВВЕДЕНИЕ В КРИПТОГРАФИЮ.81.1. Краткая история развития криптографических методов. PAGEREF _Toc256438617 \h 31.2. Основные понятия криптографии PAGEREF _Toc256438618 \h 31.2.1. Термины и определения PAGEREF _Toc256438619 \h 31.2.2. Классификация шифров PAGEREF _Toc256438620 \h 31.2.3. Характер криптографической деятельности PAGEREF _Toc256438621 \h 3Контрольные вопросы PAGEREF _Toc256438622 \h 32. СТОЙКОСТЬ КРИПТОГРАФИЧЕСКИХ СИСТЕМ PAGEREF _Toc256438623 \h 32.1. Модели шифров и открытых текстов PAGEREF _Toc256438624 \h 32.1.1. Алгебраические модели шифров. PAGEREF _Toc256438625 \h 32.1.2. Вероятностные модели шифров. PAGEREF _Toc256438626 \h 32.1.3. Математические модели открытых сообщений. PAGEREF _Toc256438627 \h 32.2. Криптографическая стойкость шифров. PAGEREF _Toc256438628 \h 32.2.1. Теоретико-информационный подход к оценке криптостойкости шифров PAGEREF _Toc256438629 \h 32.2.2. Практическая стойкость шифров. PAGEREF _Toc256438630 \h 32.3. Имитостойкость и помехоустойчивость шифров. PAGEREF _Toc256438631 \h 32.3.1. Имитостойкость шифров. Имитация и подмена сообщения. PAGEREF _Toc256438632 \h 32.3.2. Способы обеспечения имитостойкости. PAGEREF _Toc256438633 \h 32.3.3. Помехостойкость шифров. PAGEREF _Toc256438634 \h 32.3.4. Практические вопросы повышения надежности. PAGEREF _Toc256438635 \h 3Контрольные вопросы PAGEREF _Toc256438636 \h 33. ПРИНЦИПЫ ПОСТРОЕНИЯ СИММЕТРИЧНЫХ КРИПТОГРАФИЧЕСКИХ АЛГОРИТМОВ. PAGEREF _Toc256438637 \h 33.1. Виды симметричных шифров. Особенности программной и аппаратной реализации. PAGEREF _Toc256438638 \h 33.2. Принципы построения блочных шифров. PAGEREF _Toc256438639 \h 33.2.1. Базовые шифрующие преобразования PAGEREF _Toc256438640 \h 33.2.2. Сеть Файстеля. PAGEREF _Toc256438641 \h 33.3. Современные блочные криптоалгоритмы. PAGEREF _Toc256438642 \h 33.3.1. Основные параметры блочных криптоалгоритмов. PAGEREF _Toc256438643 \h 33.3.2. Алгоритм DES. PAGEREF _Toc256438644 \h 33.3.3. Блочный шифр TEA PAGEREF _Toc256438645 \h 33.3.4. Международный алгоритм IDEA. PAGEREF _Toc256438646 \h 33.3.5. Алгоритм AES (Rijndael). PAGEREF _Toc256438647 \h 33.4. Принципы построения поточных шифров PAGEREF _Toc256438648 \h 33.4.1. Синхронизация поточных шифрсистем. PAGEREF _Toc256438649 \h 33.4.2. Структура поточных шифрсистем. PAGEREF _Toc256438650 \h 33.4.3.Регистры сдвига с обратной связью. PAGEREF _Toc256438651 \h 33.4.4. Алгоритм Берленкемпа-Месси. PAGEREF _Toc256438652 \h 33.4.5. Усложнение линейных рекуррентных последовательностей. PAGEREF _Toc256438653 \h 33.5. Современные поточные криптоалгоритмы. PAGEREF _Toc256438654 \h 33.5.1. Алгоритм Гиффорда. PAGEREF _Toc256438655 \h 33.5.2. Алгоритм A5. PAGEREF _Toc256438656 \h 33.6. Режимы использования шифров. PAGEREF _Toc256438657 \h 3Контрольные вопросы PAGEREF _Toc256438658 \h 34. ПРИНЦИПЫ ПОСТРОЕНИЯ АСИММЕТРИЧНЫХ КРИПТОГРАФИЧЕСКИХ АЛГОРИТМОВ PAGEREF _Toc256438659 \h 34.1. Математические основы асимметричной криптографии. PAGEREF _Toc256438660 \h 34.1.1. Свойства операций. PAGEREF _Toc256438661 \h 34.1.2. Функция Эйлера. Поле. Теоремы Эйлера - Лагранжа и Ферма. PAGEREF _Toc256438662 \h 34.1.3. Конечные поля. PAGEREF _Toc256438663 \h 34.1.4. Основные алгоритмы. PAGEREF _Toc256438664 \h 34.1.5. Алгоритмы нахождения НОД и мультипликативного обратного по модулю. PAGEREF _Toc256438665 \h 34.1.6. Китайская теорема об остатках. PAGEREF _Toc256438666 \h 34.1.7. Символы Лежандра и Якоби. Извлечение корней. PAGEREF _Toc256438667 \h 34.2. Примеры современных асимметричных шифров. PAGEREF _Toc256438668 \h 34.2.1. Криптосистема RSA. PAGEREF _Toc256438669 \h 34.2.2. Взаимосвязь компонентов RSA. PAGEREF _Toc256438670 \h 34.2.3. Криптосистема Эль-Гамаля. PAGEREF _Toc256438671 \h 34.2.4. Криптосистема Рабина. PAGEREF _Toc256438672 \h 34.2.5. Рюкзачные криптосистемы. PAGEREF _Toc256438673 \h 34.2.6. Шифрсистема Мак-Элиса. PAGEREF _Toc256438674 \h 3Контрольные вопросы PAGEREF _Toc256438675 \h 35. КРИПТОГРАФИЧЕСКИЕ ХЭШ-ФУНКЦИИ И ЭЛЕКТРОННО-ЦИФРОВАЯ ПОДПИСЬ PAGEREF _Toc256438676 \h 35.1. Криптографические хэш-функции. PAGEREF _Toc256438677 \h 35.1.1. Блочно-итерационные и шаговые функции. PAGEREF _Toc256438678 \h 35.1.2. Ключевые функции хэширования PAGEREF _Toc256438679 \h 35.1.3 Бесключевые функции хэширования PAGEREF _Toc256438680 \h 35.1.4. Схемы использования ключевых и бесключевых функций. PAGEREF _Toc256438681 \h 35.2. Электронно-цифровая подпись PAGEREF _Toc256438682 \h 35.2.1. Задачи и особенности электронно-цифровой подписи. PAGEREF _Toc256438683 \h 35.2.2. Ассиметричные алгоритмы цифровой подписи на основе RSA. PAGEREF _Toc256438684 \h 35.2.3. Алгоритм цифровой подписи Фиата – Фейге – Шамира. PAGEREF _Toc256438685 \h 35.2.4. Алгоритм цифровой подписи Эль-Гамаля. PAGEREF _Toc256438686 \h 35.2.5. Алгоритм цифровой подписи Шнорра. PAGEREF _Toc256438687 \h 35.2.6. Алгоритм цифровой подписи Ниберга-Руппеля. PAGEREF _Toc256438688 \h 35.2.7. Алгоритм цифровой подписи DSA. PAGEREF _Toc256438689 \h 35.2.8. Симметричные (одноразовые) цифровые подписи PAGEREF _Toc256438690 \h 3Контрольные вопросы PAGEREF _Toc256438691 \h 36. ОРГАНИЗАЦИЯ СЕТЕЙ ЗАСЕКРЕЧЕННОЙ СВЯЗИ PAGEREF _Toc256438692 \h 36.1. Протоколы распределения ключей. PAGEREF _Toc256438693 \h 36.1.1. Передача ключей с использованием симметричного шифрования PAGEREF _Toc256438694 \h 36.1.2. Передача ключей с использованием асимметричного шифрования PAGEREF _Toc256438695 \h 36.1.3. Открытое распределение ключей PAGEREF _Toc256438696 \h 36.1.4. Предварительное распределение ключей PAGEREF _Toc256438697 \h 36.1.5. Схемы разделения секрета PAGEREF _Toc256438698 \h 36.1.6. Способы установления ключей для конференц-связи PAGEREF _Toc256438699 \h 36.2. Особенности использования вычислительной техники в криптографии. PAGEREF _Toc256438700 \h 36.2.1. Методы применения шифрования данных в локальных вычислительных сетях. PAGEREF _Toc256438701 \h 36.2.2. Обеспечение секретности данных при долгосрочном хранении. PAGEREF _Toc256438702 \h 36.2.3. Задачи обеспечения секретности и целостности данных и ключей при краткосрочном хранении. PAGEREF _Toc256438703 \h 36.2.4. Обеспечение секретности ключей при долгосрочном хранении. PAGEREF _Toc256438705 \h 36.2.5. Защита от атак с использованием побочных каналов. PAGEREF _Toc256438706 \h 3Контрольные вопросы PAGEREF _Toc256438707 \h 37.КРИПТОАНАЛИЗ И ПЕРЕСПЕКТИВНЫЕ НАПРАВЛЕНИЯ В КРИПТОГРАФИИ PAGEREF _Toc256438708 \h 37.1. Основные методы криптоанализа PAGEREF _Toc256438709 \h 37.1.1. Атаки на симметричные криптоалгоритмы PAGEREF _Toc256438710 \h 37.1.2. Атаки на хэш-функции и коды аутентичности. PAGEREF _Toc256438711 \h 37.1.3. Атаки на асимметричные криптосистемы PAGEREF _Toc256438712 \h 37.2. Перспективные направления в криптографии PAGEREF _Toc256438713 \h 37.2.1. Эллиптические кривые. PAGEREF _Toc256438714 \h 37.2.2. Эллиптические кривые над конечными полями. PAGEREF _Toc256438715 \h 37.2.3. Алгоритм цифровой подписи EC-DSA. PAGEREF _Toc256438716 \h 37.2.4. Квантовая криптография PAGEREF _Toc256438717 \h 3Контрольные вопросы PAGEREF _Toc256438718 \h 3Приложение. PAGEREF _Toc256438719 \h 3ЗАКЛЮЧЕНИЕ. PAGEREF _Toc256438719 \h 3СПИСОК ИСПОЛЬЗОВАННОЙ И РЕКОМЕДУЕМОЙ ЛИТЕРАТУРЫ PAGEREF _Toc256438720 \h 3
Предисловие
В настоящее время возрастает актуальность защиты информации во всех сферах человеческой деятельности: на государственной службе, в бизнесе, в науке и даже в личной жизни. Исходя из анализа свойств информации, становится очевидным, что при обеспечении информационной безопасности объекта прежде всего следует надежно защищать носители информации от непреднамеренной и несанкционированной деятельности людей, связанной с информацией, хранимой на объекте защиты в условиях бесконтрольного доступа. Среди мер по защите информации важное значение придается криптографической защите информации, основанной на использовании математических приемов и методов.
В данном учебном пособии рассматриваются исторические аспекты развития криптографии, общие вопросы теории криптографии, стойкости криптографических систем, принципы построения криптоалгоритмов, криптографических хэш - функций и организации сетей засекреченной связи. Большое внимание уделено рассмотрению основ криптоанализа и перспективных направлений в развитии криптографии.
Учебное пособие предназначено для студентов специальностей 090103 – “Организация и технология защиты информации” и 090105 – “Комплексное обеспечение информационной безопасности автоматизированных систем”, изучающих дисциплины «Математические основы защиты информации» и «Криптографическая защита информации», слушателей курсов повышения квалификации по проблемам защиты информации, а также может быть полезно специалистам, занимающимся решением задач обеспечения информационной безопасности.
1. ВВЕДЕНИЕ В КРИПТОГРАФИЮ1.1. Краткая история развития криптографических методов
1.2. Основные понятия криптографии
1.2.1. Термины и определения
1.2.2. Классификация шифров
1.2.3. Характер криптографической деятельности
1.1. Краткая история развития криптографических методов.Исторически сложились и дошли до наших дней три подхода к защите информации.
1. Физическая защита носителя информации. Данный подход предполагает использование комплекса различных средств защиты, а также нестандартной передачи и хранения информации (голуби, курьеры, сейф, проводная и кабельная связь, «радиовыстрел», СИЧ - передача и другие). Одновременно при данном подходе разрабатывались и методы уничтожения информации при угрозе ее захвата, а также методы обнаружения тайной перлюстрации. Идеалом данного метода является создание защищенного канала передачи информации, к которому противник физически не в состоянии получить доступа.
2. Стеганография. Данный подход предполагает применение комплекса средств, при помощи которых скрывается сам факт передачи информации (симпатические чернила, «микроточка» и т.д.). Идеал данного подхода – создание скрытого канала связи. Здесь заслуживает внимания предложение греческого полководца Энея (Спарта, V – IV вв. до н. э.). Наряду с известным «диском Энея», который представлял собой шифр замены букв на расстояние между узелками на послании - нити, он предложил и такой способ. На «невинном» тексте, который обычно писался на деревянных дощечках, покрытых воском, мелкими, малозаметными точками отмечались буквы, несущие секретное сообщение. Эту идею уже в XVI веке повторил английский государственный деятель Ф.Бэкон. Вместо точек он предложил известный «двухшрифтовый шифр», где использовались два малоразличимых шрифта. Заслуга Бэкона заключается также и в том, что он первый предложил кодировать буквы латинского алфавита двоичным кодом. Эта идея широко используется и в наши дни. Дальнейшее развитие идей Энея привело к появлению так называемых книжных шифров. Они уже многократно описаны и дошли до наших дней. Немцы в начале XX века использовали в агентурной переписке эти шифры, в которых вместо невидимых точек, проколов в тексте прикрытия значимые буквы выделялись невидимой точкой, поставленной с использованием симпатических чернил. Недостаток книжных шифров - необходимость постоянно иметь с собой заранее оговоренную книгу. Поэтому появились его разновидности: стихотворный шифр, шифр по слову - лозунгу и т. д. Здесь стеганография объединяется с криптографией. Ключом шифра является книга, стихотворение, слово лозунг и т.д. Сам "шифрованный текст" имеет обычный вид.
3. Криптография. Этот подход предполагает использование шифров. Идеал – использование открытого канала связи. При этом противник, зная о факте передачи и имея физический доступ к информации, не может понять ее смысла, если не владеет секретным ключом.
В настоящее время широко используется термин «криптология». Данная наука включает в себя защиту (криптография) и нападение (криптоанализ, дешифрование). Наряду с шифрами (с XIV - XV веков) широко использовались коды (номенклаторы). В кодах единицами текста, подлежащими замене, являлись не отдельные буквы, а слова, фразы и целые предложения.
В настоящее время все эти подходы нередко используются в комплексе, особенно при защите наиболее важных секретов.
Перейдем к краткому изложению исторической эволюции шифров.
В древнем мире появились два основных вида шифров:
- шифры замены;
- шифры перестановки.
Класическим примером шифра замены является шифр Цезаря (около I века до нашей эры). Этот шифр задается подстановкой следующего вида (применительно к латинскому алфавиту):

Верхний алфавит - это алфавит открытого текста. Нижний алфавит, представляющий собой циклический сдвиг верхнего алфавита влево на 3 шага, есть алфавит шифрованного текста. Буква А открытого текста заменялась на букву D в шифрованном, буква В - на букву Е и т.д. Все буквы открытого текста заменялись по этой подстановке. В связи с этим этот шифр в последующем стал называться шифром простой (одноалфавитной) замены. В наши дни под шифром Цезаря понимаются все шифры, в которых нижняя строка является циклическим сдвигом верхней на произвольное число шагов. Однако поскольку этот сдвиг не меняется в процессе шифрования, то шифр остается шифром простой (одноалфавитной) замены.
Последующее развитие шифра Цезаря шло в разных направлениях. Прежде всего алфавит шифрованного текста стал не сдвигом алфавита открытого текста, а произвольным набором букв алфавита (перемешивание "алфавита").
Шифр усложнился, в нем появилось

ключей. Однако он оставался шифром простой замены. Появилось и практическое неудобство. Перемешанный алфавит нижней строки невозможно запомнить, поэтому и отправитель сообщения, и его получетель должны были иметь постоянно при себе ключ (алфавит нижней строки). Здесь есть риск: тайная перлюстрация ключа, или просто его потеря.
Возникла идея построения "псевдослучайного" алфавита шифрованного текста. В качестве ключа выбирался легко запоминающийся пароль. Haпример, слово «THE TABLE". Это слово без повторов букв выписывалось в нижней строке:
THEABL......
Затем к нему добавлялись пропущенные буквы алфавита:
THEABLCDF......Z.
Но это опять - таки был шифр простой замены. Приведем еще несколько известных разновидностей шифров простой замены.
Атбаш – шифр некоторых фрагментов библейских текстов. Правило зашифрования: i-я буква алфавита заменялась буквой с номером n – i + 1, где n – число букв алфавита. Один из простейших шифров простой замены.
Табличка и диск Энея – (Спарта, V – IV вв. до н. э.). Приспособления с нанесенным алфавитом (ключевой элемент), на которые наматывалась нить с узелками напротив соответствующих букв. Шифр величины – расстояния между узелками.
Квадрат Полибия – (Древняя Греция). Таблица с буквами алфавита, заменяемыми номерами строки и столбца (i, j). Один из простейших шифров простой замены.
Арабы во времена средневековья нашли эффективный метод дешифрования шифров простой замены. Они использовали частотные характеристики открытых текстов (букв, биграмм), которые отражались в шифрованном. Первое упоминание в 1412 г в разделе 14-томной энциклопедии «Шауба аль-Аща», автор Шехаб аль-Кашканди. Они также предложили метод опробования вероятных слов и словосочетаний в открытом тексте.
Дальнейшее развитие шифров замены пошло по пути появления многоалфавитности шифрованного текста, а также введения так называемого биграммного шифрования. Впервые эту идею (биграммности) предложил в 1563 году итальянец Порта. Открытый текст разбивался на пары букв (при необходимости к нему добавлялась произвольная буква алфавита). Шифром являлась таблица размером Z x Z (26 х 26 = 676 клеток). В каждую клетку помещался один из 676 заранее придуманных экзотических знаков (геометрические фигуры, образы и т.д.). Первая буква пары определяла строку таблицы, вторая ее столбец. На их пересечении и находился шифрованный знак. Ввиду громоздкости и сложности практического применения этот шифр не нашел распространения. Весомый вклад в биграммное шифрование внес англичанин Уитстон. Он использовал в 1854 году в своем шифре PlayFair (честная игра) простой квадрат размером 5x5=25 (редуцированный латинский алфавит, в котором буква J отождествлялась с буквой I). В таблице в произвольном (ключевом) порядке располагались 25 букв алфавита. Биграмма, лежащая в одной строке, заменялась биграммой из букв, находящихся циклически справа от букв открытого текста. Биграмма, лежащая в одном столбце, также шифровалась по правилу циклического сдвига столбца сверху вниз. Биграммы, расположенные в разных строках и столбцах, заменялись на буквы, стоящие в противоположных углах прямоугольника, построенного на исходной биграмме. Это было существенным усилением шифров побуквенной замены. Тем не менее этот шифр является шифром простой замены, но на уровне биграмм.
Другое развитие идеи замены заключалось в появлении так называемых многоалфавитных шифров, в которых алфавит шифрованного текста менялся в процессе шифрования. И первым здесь был итальянец Альберти (1466 г). Конструкция его шифра была достаточно простой. Два диска насаживались на одну ось. Внешний диск - неподвижный, на нем нанесен естественный алфавит (алфавит открытого текста). Внутренний диск - подвижный, на нем нанесен алфавит в заранее оговоренном порядке (алфавит шифрованного текста). Перед началом шифрования внутренний диск ставился в заранее оговоренное угловое положение, что определяло исходную замену. Затем, после зашифрования заранее оговоренного количества букв, внутренний диск смещался на некоторое оговоренное расстояние (например, на единицу по часовой стрелке). Таким образом, алфавит шифрованного текста менялся (по отношению к неподвижному алфавиту внешнего диска).
Следующий шаг в развитие идеи многоалфавитности шифров сделал в 1518 году аббат Тритемий (Германия). Он предложил использовать шифр, вошедший в историю как «таблица Тритемия». Строится квадрат размером Z x Z (26 х 26). Первая строка квадрата есть естественный алфавит. Вторая строка - сдвиг первой (по циклу) на одну букву влево. Последующие строки также являются циклическими сдвигами предыдущей строки. При шифровании первой буквы открытого текста используется первая строка, при шифровании второй - вторая и т.д. При зашифровании Z+1 - ой (27 - буквы) буквы производится возврат к первой строке. Таким образом, алгоритм шифрования является периодическим с периодом Z. Заметим также, что алгоритмы шифрования и расшифрования различны.
Английский адмирал Бофор предложил модифицикацию шифра Тритемия, в которой алгоритмы зашифрования и расшифрования совпадают. Первая строка таблицы представляет собой обратный (инверсный) порядок расположения букв алфавита. Строки сдвигаются не влево, а вправо. При использовании такой таблицы расшифрование сводится к повторному шифрованию полученного шифрованнного текста. Так появились так называемые "обратимые шифры". Они значительно проще в практической реализации. Одним из недостатков шифра Тритемия является жестко фиксированный порядок использования строк. Итальянцы Порта и Беллазо предложили использовать "случайный" порядок использования строк. Для легкого запоминания этого порядка вводится ключ - лозунг (слово). Строки таблицы используются в соответствии с этим словом (при его периодическом продолжении на всю длину шифруемого текста). Этот алфавит шифрования обобщил и широко опубликовал французский дипломат Виженер. В настоящее время шифр известен именно под его именем.
Француз де Виари выдвинул идею формализации процесса шифрования по шифру Виженера. По сути дела он предложил математическое представление процесса шифрования. В современном изложении эта идея сводится к следующему.
Буквы алфавита и лозунга (ключа) заменяются на их номера в естественном алфавите. Периодическая последовательность букв лозунга в последующем получила название «гаммы шифра». Некоторые исследователи связывают это название с именем французского дипломата Гамбетты, который одним из первых использовал такую формализацию.
Итак, пусть шифруется открытый текст:
p = p1p2… pп , pi. A = {0,1,2,…,25}
(применительно к латинскому алфавиту).
Гамма шифра имеет вид:
k = k1k2… km , ki. A
Тогда шифрование по шифру Виженера имеет следующее представление. При использовании таблицы Тритемия:
C = E(p) = (p + ki) mod 26
где p - i-я буква шифрованного текста. При расшифровании имеем:
p = D(C) = (C – ki) mod 26.
Таким образом, при зашифровании и расшифровании используются разные операции (сложение и вычитание).
При использовании таблицы Бофора получим:
C = E(p) = (k – p) mod 26
p = D(C) = (k – C) mod 26.
Таким образом, при шифровании и при расшифровании используется лишь одна и та же операция (вычитание). Слабость указанных шифров заключается в короткой периодичности гаммы шифра.
Офицер прусской армии Казисский (XIX век), а затем и известный криптограф США Фридман продемонстрировали эффективные способы дешифрования шифров короткопериодического гаммирования. Поэтому в дальнейшем возникла проблема создания гаммы большого периода, образуемой из короткого ключа - лозунга. Эта идея и реализуется в современных шифраторах. Значительный вклад в развитие многоалфавитных шифров внес в начале XIX века американец Джефферсон (будущий президент США). Шифратор Джефферсона представлял собой 25 – 36 дисков одинакового размера с перемешанными алфавитами на боковой поверхности. Множество ключей – расстановка букв на дисках, расстановка дисков на оси, выбор набора дисков из запаса.
Предложенный способ (прибор) дискового шифрования получил широкое распространения в XX веке (дисковые шифраторы, «Энигма», «Хагелин»).
Еще одно направление развития шифров замены - появление шифров так называемой многозначной замены (не путать с шифрами многоалфавитной замены). В этих шифрах алфавит шифрованного текста был значительно больше алфавита открытого текста. В нем использовались геометрические фигуры, числа и т.д. Одна и та же буква получала несколько шифрообозначений, которые не совпадали с обозначениями других букв. При шифровании эти обозначения выбирались произвольно из соответствующих множеств. При этом «сглаживались» частотные характеристики открытого текста. В дальнейшем развитии многозначные шифры породили шифры пропорциональной замены, в которых количество обозначений для буквы открытого текста было пропорционально частоте появления этой буквы. В шифртексте в этом случае все шифробозначения появлялись примерно с одинаковой частотой. Эти шифры, возникшие в средние века, дошли до XX века.
Примеры шифров многозначной замены:
Омофоны – (Италия, XIV век) - Гласным буквам соответствует несколько различных шифрвеличин. Автор Чикко Симонетти.
Шифры пропорциональной замены - (Италия, XV век) – Каждой букве ставится в соответствие несколько шифрвеличин, в зависимости от частоты, с которой эта буква встречается в тексте. Автор Габриэль де Лавинда. (Аналог - Миланский ключ – 1469 г).
Шифр Ардженти – (XVII век) Внедрено смешение алфавита сдвигом от ключевого слова, введены "пустышки" для изменения частотных характеристик текста, многозначная замена, буквенный код.
Наряду с развитием шифров побуквенного шифрования (поточных шифров) появились так называемые блочные шифры. Предвестниками их стали биграммные шифры (Порта, Плейфер). Затем блоки (группы одновременно шифруемых букв) заметно увеличились. Примером таких шифров являются шифры перестановки. Эти шифры по сути дела являются шифрами поточной замены, но в значительно более мощном алфавите (весь блок букв естественного алфавита рассматривается как буква более мощного алфавита). Шифр перестановки в этом случае становится шифром простой замены в расширенном алфавите.
Шифры перестановки также получили заметное развитие и дошли до наших дней. Классический пример такого шифра - шифр Сцитала (изобретение спартанцев примерно IV век до нашей эры): ремешок навивался на цилиндр (деревянный или металлический). Итальянец Кардано уже в середине XVI столетия предложил новый шифр перестановки - известную «решетку Кардано». В основе лежало решение кубического уравнения вида x3 + px + q = 0, предложенного другим итальянским математиком Тарталья:

квадратная или прямоугольная решетка, своими вырезами однократно покрывающая всю площадь квадрата после четырех поворотов.
Далее появились шифры перестановки по лозунгу. Здесь буквы шифра переставлялись по ключу - лозунгу, по которому составлялся так называемый номерной ряд. Пусть, например лозунг есть слово "THE TABLE". В нем 8 букв. Пронумеруем буквы лозунга в соответствии с их алфавитным порядком. Получим номерной ряд: 75381264. Открытый текст разбивается на блоки из 8 букв. Первая буква блока встает на 5 - место, вторая - на 6 - е, третья на 3 - е, четвертая - на 8 - е и т.д. При необходимости открытый текст добавляется произвольным набором букв до числа, кратного 8. К XX веку эти шифры усложнились. Появились так называемые маршрутные перестановки, шифры вертикальной перестановки и т.д.. Они детально описаны в изданиях на тему о криптографии.
На развитие криптографии оказывает большое влияние научно - технический прогресс. Изобретение книгопечатания породило шифры, основанные на ключе - книге (книжный шифр, книжная гамма, книжный код и т.д.). Появление телеграфа, радио, телефона дало мощный стимул к разработке новых шифров. Особое влияние на развитие криптографии оказали ЭВМ, распространившимися в середине XX века. Заметим кстати, что первая в мире современная ЭВМ ("Колосс", Великобритания) была разработана в процессе проведения английской операции "Ультра" - дешифрование основного шифратора фашистской Германии ("Энигма"). Появились следующие новые виды шифраторов:
Телефонные шифраторы (скремблеры) – обработка аналогового сигнала (инверсия, смещение, деление диапазона, шумовые маскировки, временные перестановки) комбинация криптографичнеских и стеганографических методов. После появления цифровой телефонии – классические криптографические (дискретные) методы.
Электронные шифраторы, программные реализации. Аппаратные реализации на основе микросхем СБИС. Программные реализации – несколько позже. Самая известная и заметная программная реализация – PGP Фила Циммермана.
Развитие математики привело к становлению криптографии как точной математической науки. Здесь следует упомянуть в первую очередь имена У.Фридмана и К.Шеннона (США). Клод Шеннон в 1944 году в своем труде «Теория секретных систем связи» формализовал задачи синтеза и анализа шифров. Там же были введены понятия принципов рассеивания и перемешивания (конфузия, диффузия), теоретической и практической стойкости, совершенного шифра. Введено рассмотрение языка как вероятностный процесс. Предложена концепция избыточной информации естественного языка. (The, of, and, to, a, in, that, it, is, i – более 25% слов любого английского текста в любой криптограмме.) Определена теоретическая мера стойкости – энтропийная характеристика (неопределенность шифра по открытому сообщению). Энтропия показывает, насколько "близка" средняя криптограмма и N букв к единственному "решению". Также введено понятие расстояния единственности – минимального размера криптограммы, необходимого для однозначного расшифрования (для совершенного шифра - бесконечность). Разделены понятия теоретической и практической стойкости. Задолго до Шеннона советский академик А. А. Марков предложил марковские модели - зависимость появления букв в тексте от предыдущих букв. А в 60-е годы А. Н. Колмогоров – различие удельной энтропии на букву для текстов разного смыслового содержания.
В середине XX века наметилась тенденция опережающего развития методов защиты (шифрования и расшифрования) по отношению к методам средствам нападения (дешифрования). В связи с этим стали активно разрабатываться новые подходы к получению информации, способствующей облегчению дешифрования (помимо обычного перехвата сообщений).
В XX веке криптографическая деятельность вышла из под контроля государства. Появились частные фирмы - производители шифртехники на продажу и их специфические пользователи (корпорации, банки и т.д.). Наряду с лояльными пользователями криптографическими методами начали пользоваться и криминальные структуры. Государство не может отказаться от контроля за их деятельностью. Появилась проблема вида: "государственная и негосударственная" криптография. Был разработан ряд криптографических стандартов. Первым шагом явилась публикация DES – стандарта на симметричный блочный комбинированный криптоалгоритм. В XXI веке выходит стандарта AES. Также публикуются стандарты цифровой подписи DSS и распределения ключей X.509. Ряд таких стандартов, как: EES – стандарт с депонированием ключей, микросхема Clipper, плата Fortezza – явились попыткой правительства США (администрация Клинтона) взять под контроль ключевую систему в криптосистемах связи. В нашей стране также вышли стандарты ГОСТ на блочный алгоритм шифрования, криптографическую хэш-функцию и схему электронно-цифровой подписи.
В XIX веке криптографические методы начали широко применяться в новых областях исследования информационных источников. Например, методы криптографии помогли исследователям так называемых "умерших языков". Утраченные письменность и устный язык восстанавливаются, в частности, и методами криптоанализа.
Шифры широко используются в литературных произведениях, кинофильмах (особенно детективного содержания). Вспомним хотя бы Э.По, К.Дойля и др. Они вносят интригу в повествование, заинтересовывают читателя (зрителя). С точки зрения профессионального криптоанализа эти "криптографические вставки" являются дилетантскими, но несут положительную нагрузку - заинтересовывают потребителя информацией в новом для них средстве защиты информации.
В XX веке сформировались основные требования к шифрам. Эти требования прежде всего включают в себя следующую триаду.
1 .Криптографическая стойкость. Это способность шифра противостоять попыткам его дешифрования. Оно обычно является основным.
2. Имитостойкость. Это способность шифра противостоять попыткам "дезинформации под шифром" (имитостойкости). Цель имитации — внедрение противником дезинформации под шифром. В истории есть немало примеров такой тактики нападения.
3. Помехоустойчивость. Это способность шифра противостоять действию помех в канале связи. Эти помехи могут носить и искусственный характер с целью срыва шифрованной связи. Есть примеры шифров, которые не получили широкого распространения только потому, что они при наличии даже ограниченных помех (искажений) не позволяли применять их в сетях засекреченной связи.
Примером могут служить многоалфавитные поточные шифры. При пропуске хотя бы одной буквы в шифрованном тексте весь последующий текст на приеме не расшифровывается. Разумеется, это только основные требования. Существуют и другие (затраты времени на шифрование - расшифровывание, т.е. быстродействие, особые требования к каналам связи, затраты на засекречивание и т.д.).
В 1976-78 г.г. революционные идеи У. Диффи и М. Хеллмана привели к появлению ассиметричной криптографии. В настоящее время криптосистемы делятся на симметричные (классические) и ассимметричные (с открытым ключом). Проиллюстрируем принципиальную разницу между первыми и вторыми. На рис. 1. приведена схема передачи шифрованной информации при помощи симметричного шифра.
Источник сообщений – владелец информации, осуществляющий преобразование информации (шифрование) и передачу получателю шифрованных сообщений с целью защиты информации от противника, который может наблюдать передаваемые по каналу связи сообщения. Исходная информация называется открытым текстом (x), шифрованная информация – шифртекстом (y). Стороны, обменивающиеся информацией, по усмотрению выбирают шифр и ключи (k). Секретные ключи предварительно рассылаются по защищенному каналу связи. Симметричные системы используют один секретный ключ для зашифрования и расшифрования.
Законный получатель информации осуществляет расшифрование полученных сообщений.
Противник – субъект, не имеющий права ознакомления с содержанием передаваемой информации. Противник пытается завладеть защищаемой информацией, для чего предпринимает действия, называемые атаками. Пассивные атаки связаны с анализом трафика, перехватом и дешифрованием сообщений.

Рис. 1. Схема симметричного шифрования
Каждое шифрующее преобразование однозначно определяется ключом и описывается криптографическим алгоритмом. Идея асимметричного шифрования состоит в том, что при расшифровании используется алгоритм, который может отличаться от алгоритма, применяемого для зашифрования. Соответственно могут отличаться и ключи, которые используются для зашифрования и расшифрования. Схема передачи информации при асимметричном шифровании приведена на рис.2. Ассиметричные системы используют два разных ключа: открытый ключ (kз) для зашифрования и личный (секретный) ключ (kр) для расшифрования.

Рис.2. Схема асимметричного шифрования
В связи с развитием современной и сложной техники защиты информации появилась потребность в подготовке соответствующих специалистов, разрабатывающих и реализующих эту технику на практике. В целях обучения таких специалистов для органов государственной службы в нашей стране создан ИКСИ Академии ФСБ РФ. Одновременно "азы" защиты информации преподают уже многие вузы страны (МГУ, МИРЭА, РГГУ, МИФИ и др.). Однако следует отметить, что доступ к наиболее важным криптографическим секретам государство охраняет режимом строгой секретности (как, впрочем, и в ведущих странах Запада). Слушатели ИКСИ получают возможность ознакомления с некоторыми из этих секретов.
Параллельно с развитием криптографической деятельности развивались и соответствующие государственные структуры. В нашей стране государственные криптографические службы прошли довольно сложный путь эволюции. Многочисленные реорганизации повредили их нормальному развитию. В последнее время основным органом нашей страны являлось Федеральное Агентство правительственной связи и информации (ФАПСИ) при Президенте РФ, ныне расформированное и в основном переданное в структуру ФСБ РФ. В США стабильно развивается Агентство Национальной Безопасности (АНБ США); в Великобритании - штаб - квартира Правительственной связи и т.д.
1.2. Основные понятия криптографии
1.2.1. Термины и определенияКриптография - область науки, техники и практической деятельности, связанная с разработкой, применением и анализом криптографических систем защиты информации (рис.3). Основными функциями криптографических систем являются обеспечение конфиденциальности и аутентификации различных аспектов информационного взаимодействия. Источником угроз при решении криптографических задач считаются преднамеренные действия противника или недобросовестного участника информационного взаимодействия, а не случайные искажения информации вследствие помех, отказов и т.п.
Криптография
Синтез
(
разработка
)
криптосистем
Анализ
криптосистем
Применение
криптосистем

Рис.3. Структура криптографии
Конфиденциальность- защищенность информации от ознакомления с ее содержанием со стороны лиц, не имеющих права доступа к ней.
Аутентификация- установление (то есть проверка и подтверждение) подлинности различных аспектов информационного взаимодействия: сеанса связи, сторон (идентификация), содержания (имитозащита) и источника (установление авторства) передаваемых сообщений, времени взаимодействия и т.д. Является важной составной частью проблемы обеспечения достоверности получаемой информации. Особенно остро эта проблема стоит в случае не доверяющих друг другу сторон, когда источником угроз может служить не только третья сторона (противник), но и сторона, с которой осуществляется информационное взаимодействие.
Система криптографическая (криптосистема)- система обеспечения безопасности защищенной сети, использующая криптографические средства. В качестве подсистем может включать системы шифрования, идентификации, имитозащиты, цифровой подписи и др., а также ключевую систему, обеспечивающую работу остальных систем. В основе выбора и построения криптосистемы лежит условие обеспечения криптографической стойкости. В зависимости от ключевой системы различают симметричные и асимметричные криптосистемы.
Принятая на сегодняшний день в РФ классификация криптосистем приведена на рис.4.

Рис.4. Структура криптосистем
Стойкость криптографическая - свойство криптографической системы, характеризующее ее способность противостоять атакам противника, как правило, с целью получить ключ, открытое сообщение или навязать ложное сообщение.
Симметричные криптосистемы- криптосистемы с симметричными (секретными) ключами. Симметричность означает здесь, что ключи, задающие пару взаимно обратных криптографических преобразований, могут быть получены один из другого с небольшой трудоемкостью. Стойкость симметричной криптосистемы определяется трудоемкостью, с которой противник может вычислить любой из секретных ключей, и оценивается при общепринятом допущении, что противнику известны все элементы криптосистемы, за исключением секретного ключа.
Асимметричные криптосистемы- криптосистемы с асимметричными (секретными и открытыми) ключами. Асимметричность означает здесь, что из двух ключей, задающих пару взаимно обратных криптографических преобразований, один является секретным, а другой открытым. Открытые ключи известны всем участникам защищенной сети и противнику, но каждый участник сети хранит в тайне собственный секретный ключ. Стойкость асимметричной криптосистемы определяется трудоемкостью, с которой противник может вычислить секретный ключ, исходя из знания открытого ключа и другой дополнительной информации о криптосистеме.
Система шифрования (шифрсистема)- криптографическая система обеспечения конфиденциальности, предназначенная для защиты информации от ознакомления с ее содержанием лиц, не имеющих права доступа к ней, путем шифрования информации. Математическая модель шифрсистемы включает способ кодирования исходной и выходной информации, шифр и ключевую систему. См рис. 5.

Рис.5. Структура шифрсистемы
Шифр- семейство обратимых преобразований множества открытых сообщений в множество шифрованных сообщений и обратно, каждое из которых определяется некоторым параметром, называемым ключом. Математическая модель шифра включает две функции: шифрования и расшифрования, и модель множества открытых сообщений. В зависимости от способа представления открытых сообщений различают блочные, поточные и другие шифры. Основными требованиями, определяющими качество шифра, являются: криптографическая стойкость, имитостойкость, помехоустойчивость и др.
Имитостойкость- способность противостоять активным атакам со стороны противника, целью которых является навязывание ложного или подмена передаваемого сообщения или хранимых данных.
Помехоустойчивость- способность сохранять устойчивую работу при наличии помех в канале связи.
Функция шифрования- осуществляет преобразование множества открытых сообщений в множество шифрованных сообщений, зависящее от ключа.
Функция расшифрования- осуществляет преобразование множества открытых сообщений в множество шифрованных сообщений, зависящее от ключа, является обратным к преобразованию, осуществляемому функцией шифрования.
Алгоритм шифрования- алгоритм, реализующий функцию шифрования.
Алгоритм расшифрования- алгоритм, реализующий функцию расшифрования.
Система цифровой подписи- криптографическая система, выполняющая функцию аутентификации источника сообщения или документа и предназначенная для защиты от отказа субъектов от некоторых из ранее совершенных ими действий. Например, отправитель может отказаться от факта передачи сообщения, утверждая, что его создал сам получатель, а получатель легко может модифицировать, подменить или создать новое сообщение, а затем утверждать, что оно получено от отправителя. Математическая модель системы цифровой подписи включает схему цифровой подписи и ключевую систему. См. рис.6.
Схема цифровой подписи - состоит из двух алгоритмов, один - для формирования, а второй - для проверки подписи. Надежность схемы цифровой подписи определяется сложностью следующих трех задач для лица, не являющегося владельцем секретного ключа: подделки подписи, то есть вычисления значения подписи под заданным документом; создания подписанного сообщения, то есть нахождения хотя бы одного сообщения с правильным значением подписи; подмены сообщения, то есть подбора двух различных сообщений с одинаковыми значениями подписи.

Рис.6. Структура криптосистемы цифровой подписи
Алгоритм формирования цифровой подписи- алгоритм, в качестве исходных данных которого используются сообщение, ключ подписи и параметры схемы цифровой подписи, а в результате формируется цифровая подпись.
Алгоритм проверки цифровой подписи - алгоритм, в качестве исходных данных которого используются подписанное сообщение, ключ проверки и параметры схемы цифровой подписи, а результатом является заключение о правильности или ошибочности цифровой подписи.
Цифровая подпись - (сообщения или электронного документа)- представляет собой конечную цифровую последовательность, зависящую от самого сообщения или документа и от секретного ключа, известного только подписывающему субъекту, предназначенная для установления авторства. Предполагается, что цифровая подпись должна быть легко проверяемой без получения доступа к секретному ключу. При возникновении спорной ситуации, связанной с отказом подписывающего от факта подписи некоторого сообщения либо с попыткой подделки подписи, третья сторона должна иметь возможность разрешить спор. Цифровая подпись позволяет решить следующие три задачи: осуществить аутентификацию источника данных, установить целостность сообщения или электронного документа, обеспечить невозможность отказа от факта подписи конкретного сообщения.
Система ключевая - определяет порядок использования криптографической системы и включает системы установки и управления ключами. Структура-классификация ключевых систем приведена на рис.7.
Система ключевая симметричной криптосистемы- основана на использовании симметричных (секретных) ключей. Основными проблемами таких систем являются построение системы установки ключей и обеспечение их сохранности для сетей с большим числом абонентов.
Система ключевая асимметричной криптосистемы - основана на использовании асимметричных ключей, состоящих из пары - открытого и секретного (закрытого) ключей. Основными проблемами таких систем являются построение системы управления ключами, как правило, представляющей собой инфраструктуру управления сертификатами открытых ключей, включающую центры регистрации и сертификации. Функции обоих центров могут объединяться в одном удостоверяющем центре.

Рис.7. Структура ключевой системы
Система установки ключей- определяет алгоритмы и процедуры генерации, распределения, передачи и проверки ключей.
Система управления ключами - определяет порядок использования, смены, хранения и архивирования, резервного копирования и восстановления, замены или изъятия из обращения скомпрометированных, а также уничтожения старых ключей. Целью управления ключами является нейтрализация таких угроз, как: компрометация конфиденциальности секретных ключей, компрометация аутентичности секретных или открытых ключей, несанкционированное использование секретных или открытых ключей, например использование ключа, срок действия которого истек.
Жизненный цикл ключей- последовательность стадий, которые проходят ключи от момента генерации до уничтожения. Включает такие стадии, как: генерация ключей, регистрация пользователей и ключей, инициализация ключей, период действия, хранение ключа, замена ключа, архивирование, уничтожение ключей, восстановление ключей, отмена ключей.
Протокол - распределенный алгоритм, в котором участвуют две или более стороны, обменивающиеся между собой сообщениями.
Протокол распределения ключей- протокол, в результате выполнения которого взаимодействующие стороны (участники, группы участников) получают необходимые для функционирования криптографической системы ключи. Различают следующие типы протоколов распределения ключей: протоколы передачи (уже сгенерированных) ключей; протоколы (совместной) выработки общего ключа (открытое распределение ключей); схемы предварительного распределения ключей. В зависимости от порядка взаимодействия сторон выделяют двусторонние протоколы, в которых стороны осуществляют передачу ключей при непосредственном взаимодействии, или, иначе, протоколы типа "точка-точка", и протоколы с централизованным распределением ключей, предусматривающие наличие третьей стороны, играющей роль доверенного центра.
Открытое распределение ключей (согласование ключа, выработка общего значения ключа) - протокол, позволяющий двум абонентам выработать общий секретный ключ путем обмена сообщениями по открытому каналу связи без передачи какой-либо общей секретной информации, распределяемой заранее. Важным преимуществом открытого распределения является то, что ни один из абонентов заранее не может определить значение ключа, так как ключ зависит от сообщений, передаваемых в процессе обмена.
Схема предварительного распределения ключей состоит из двух алгоритмов: распределения исходной ключевой информации и формирования ключа. С помощью первого алгоритма осуществляется генерация исходной ключевой информации. Эта информация включает открытую часть, которая будет передана всем сторонам или помещена на общедоступном сервере, а также секретные части каждой стороны. Второй алгоритм предназначен для вычисления действующего значения ключа для взаимодействия между абонентами по имеющейся у них секретной и общей открытой части исходной ключевой информации. Применяется для уменьшения объема хранимой и распределяемой секретной ключевой информации. Схема предварительного распределения ключей должна быть устойчивой, то есть учитывать возможность раскрытия части ключей при компрометации, обмане или сговоре абонентов, и гибкой- допускать возможность быстрого восстановления путем исключения скомпрометированных и подключения новых абонентов.
1.2.2. Классификация шифровПринятая в настоящее время классификация шифров приведена на рис.8. При этом условимся единицы открытого текста называть шифрвеличинами, а единицы шифрованного текста – шифробозначениями.
По характеру преобразований шифры делятся на два класса шифры замены и шифры перестановки, есть также композиционные шифры – последовательное применение двух предыдущих.
Шифры замены бывают симметричные (ключи зашифрования и расшифрования совпадают) и асимметричные (ключи различаются).
В зависимости от того, является ли правило зашифрования однозначной или многозначной функцией, шифры замены делят на шифры однозначной и многозначной замены.
В зависимости от размера шифрвеличин шифры замены делятся на поточные (n = 1) и блочные (n > 1).
При использовании для замены одинаковых шифробозначений для одинаковых шифрвеличин – одноалфавитный шифр замены, в противном случае – многоалфавитный. В отдельный подкласс многоалфавитных шифров выделяют шифры гаммирования, которые отличаются тем, что основной криптоалгоритм используется для выработки ключевой последовательности – гаммы, а достаточно простая функция шифрования используется для наложения ключевой последовательности на шифрвеличины.

Рис.8. Классификация шифров
Основой шифров перестановки служат маршрутные перестановки, которые делятся на столбцовые/строчные (вертикальные) перестановки, а также решетки, лабиринты и пр. В настоящее время шифры перестановки в чистом виде практически не не используются, но сами перестановки являются составляющей частью блочных криптоалгоритмов.
Композиционные шифры представляют собой сочетание в применении шифров замены и перестановки, а также блочных и поточных шифров. Четкой границы класса композиционных шифров не существует. Композиционным может стать любой блочный и поточный алгоритм, в зависимости от режима шифрования. Кроме того в настоящее время активно используются композиции симметричных и асимметричных шифров, такие как: RSA-OAEP, RSA-FDH, RSA-PSS, где симметричная составляющая используется для усиления слабых в реализации мест асимметричных алгоритмов.
1.2.3. Характер криптографической деятельностиНарушения защиты (также называются атаками) делятся на две основные группы – пассивные и активные атаки. Классификация атак приведена на рис.9, а их схемы на – на рис. 10.
Перехват
(
нарушение
секретности
)
Активные атаки
Раскрытие
содержимого
сообщений
Анализ потока
данных
Модификация
(
нарушение
целостности)
Прерывание
(
нарушение
доступности
)
Пассивные атаки
Фальсификация
(
нарушение
аутентичности)

Рис.9. Классификация атак.
Прерывание. Нарушение доступности. Ресурс становится недоступным либо непригодным к использованию.
Перехват. Нарушение конфиденциальности. К ресурсу открывается несанкционированный доступ.
Модификация. Нарушение целостности. Не только несанкционированный доступ + модификация ресурса.
Фальсификация. Нарушение аутентичности. Внесение в систему подложного ресурса.

Рис.10. Схемы пассивных и активных атак
Соответственно предотвращаемым атакам делятся и сервисные службы защиты информации:
Конфиденциальность – защита данных от пассивных атак.
Аутентификация – надежная идентификация подлинного источника информации.
Целостность – защита от модификации.
Невозможность отречения – недопущение отказа от факта отправки сообщения, электронно-цифровая подпись.
Управление доступом – возможность контроля доступа к ресурсам.
Доступность – предупреждение отказов и восстановление доступности.
Контрольные вопросыДайте понятие шифра простой замены.
Какие шифры стали развитием шифров короткопериодичной замены?
Какие шифры стали развитием шифров биграммной замены?
Назовите основные виды криптографических систем.
Из каких компонентов состоит ключевая система?
Чем различаются понятия многозначной и многоалфавитной замены?
В чем различие между симметричным и асимметричным шифрованием?
В чем различие между пассивной и активной атаками?
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. Практические вопросы повышения надежности.
2.1. Модели шифров и открытых текстовМатематические модели шифра и открытого текста требуются в криптографии для получения и доказательства точных математических результатов. Модели делятся на два класса – алгебраические (детерминированные) и вероятностные (стохастические).
2.1.1. Алгебраические модели шифров.Алгебраическая модель, предложенная К. Шенноном.
Пусть X, K, Y – конечные множества открытых текстов, ключей и шифртекстов соответственно, |X| > 1, |K| > 1, |Y| > 1, Ek : X Y и Dk: Ek(X) X – правила зашифрования и расшифрования, отвечающие ключу k K, E = {Ek : k K}, и D = {Dk : k K}. Через Ek(X) мы обозначили множество E = {Ek(x) : x X}. Если ключ k K, представляется в виде пары k = (kз, kр), где kз – ключ зашифрования, а kр – ключ расшифрования (причем kз kр), то Ek понимается как Ekз, а Dk – как Dkр.
Определение: Алгебраической моделью шифра назовем совокупность
A = (X, K, Y, E, D)
введенных множеств, для которых выполняются условия
при любых x X и k K выполняется равенство Dk(Ek(x)) = x;
справедливо равенство .
Условие 1) отвечает требованию однозначности расшифрования. Условие 2) означает, что любой элемент y Y может быть представлен в виде Ek(x) для подходящих элементов x X и k K. В общем случае Ek могут быть многозначными отображениями, но здесь мы ограничиваемся изучением лишь однозначных шифров, получивших наибольшее распространение.
Шифр называется эндоморфным, если Y = X. Для эндоморфного шифра правило зашифрования Ek осуществляет биективное отображение множества X на себя. В этом случае удобно рассматривать правила зашифрования как подстановки множества X, и опускать индекс в записи Ek, предполагая, что правила зашифрования пронумерованы ключами. По сути, вся информация об эндоморфном шифре содержится во множествах X и K.
Определение: Подстановочной моделью эндоморфного шифра назовем упрощенную совокупность П = (X, E)
Примеры.
1. Шифр простой замены в алфавите А:
Пусть , где S(A) – симметрическая группа подстановок множества А и L натуральное число. k K, x = (x1, .. xl), y = (y1, .. yl): Ek(x) = (k(x1), .. , k(xl)),
Dk(y) = (k-1(y1), .. , k-1(yl)), где k-1 – подстановка, обратная к k.
Подстановочной моделью данного эндоморфного шифра является совокупность (X, E), для которой e(x1, .. xl) = k(x1), .. , k(xl). Здесь x = x1, .., xl X, e E, а k – ключ, поставленный в соответствие подстановке e.
2. Шифр перестановки.
Пусть X = Y = AL, K SL, где SL - симметрическая группа подстановок множества
{1, 2, .. , L}. k K, x = (x1, .. xL), y = (y1, .., yL):
где k-1 – подстановка, обратная к k.
3. Шифр RSA.
Пусть n = pq (q и p - простые), X = Y = Zn – кольцо вычетов по модулю n.
K = {(n, p, q, a, b): a, b Zn, n = pq, ab 1(mod (n))}, где - функция Эйлера.
k = (kз, kр), где kз = (n, b) и kр = (n, p, q, a) – ключи. Правила зашифрования и расшифрования для x X и y Y определяются формулами
Уточним алгебраическую модель шифра, выбрав за основу модель, в которой открытыми и шифрованными текстами служат шифрвеличины и шифробозначения, с которыми оперирует шифр. Назовем выбранную модель опорным шифром. Будем шифровать фрагменты открытого текста одним из априорно заданных правил зашифрования, составляющих опорный шифр. Назовем эти отображения простыми заменами. Простые замены будем выбирать при помощи вспомогательной последовательности, которую назовем ключевым потоком. Ключевой поток может определяться случайным образом или вычисляться детерминированно в зависимости от выбранного ключа шифра. Большинство шифров использует детерминированный ключевой поток.
Определение: Опорным шифром назовем совокупность
= (U, K, V, E, D),
состоящую из: U и V - множеств шифрвеличин и шифробозначений с которыми оперирует шифр; K – множества ключей (номеров простых замен); E и D – множеств простых замен Ek : U V, k K, и обратных к ним отображений Dk : Ek(U) U.
Если шифр использует s простых замен, то примем в качестве множества ключей опорного шифра множество целых чисел K = {0, 1, …, s – 1}. Опорный шифр определяет способ зашифрования фрагментов открытого текста – шифрвеличин. Для работы с последовательностью шифрвеличин требуется степень опорного шифра.
Определение: l-й степенью опорного шифра назовем совокупность множеств
l = (U l, K l, V l, E (l), D(l)),
где U l, K l, V l - декартовы степени; множество E (l) состоит из отображений , таких что для и
;
множество D (l) состоит из отображений , таких что для и
.
Теперь рассмотрим построение ключевого потока, то есть последовательности k1…kl, kj K, , номеров простых замен, используемых для зашифрования открытого текста .
Имеется два принципиально разных способа построения такой последовательности.
В первом случае она строится случайно. Устройство, вырабатывающее случайный ключевой поток называется случайным генератором ключевого потока. Формально его можно представить отображением : N K*, (С* - множество слов конечной длины в алфавите С), ставящим в соответствие натуральному числу l последовательность из l испытаний некоторой случайной величины, принимающей значение из K с некоторыми ненулевыми вероятностями. Простейший случайный генератор – игровая рулетка.
Во втором случае шифр имеет некоторое, априорно заданное, конечное множество ключей K. Каждому ключу ĸ K и натуральному числу l N ставится в соответствие однозначно определенный ключевой поток k1…kl, ki K, . Этот поток вырабатывается детерминированным генератором ключевого потока.
Определение: пусть
: K N K*
- произвольное отображение, такое, что для любых ĸ K, l N, и некоторых ki K, , (ĸ, l) = k1 … kl, причем {(ĸ, l), ĸ K} = K. Назовем последовательность k1 … kl ключевым потоком, отвечающим ключу ĸ и числу l, а само отображение - детерминированным генератором ключевого потока.
Если шифр использует случайный генератор, ключами шифра считают сами ключевые потоки. В таком случае, допуская вероятность зашифрования последовательности шифрвеличин любой конечной длины, мы получаем шифр с бесконечным множеством ключей. Если же шифр использует детерминированный генератор ключевого потока, множеством ключей является конечное множество K. Характер генератора ключевого потока делит все множество шифров на два класса.
Определение: Совокупность
Н = (l, l N; ),
- степеней опорного шифра, в которых для зашифрования последовательностей шифрвеличин u1,…,ul по правилу ключевой поток строится с помощью случайного генератора , назовем алгебраической моделью шифра с неограниченным ключом (или просто шифром с неограниченным ключом).
Определение: Совокупность
О = (l, l N; ),
- степеней опорного шифра, в которых для зашифрования последовательностей шифрвеличин u1,…,ul по правилу ключевой поток строится с помощью детерминированного генератора , назовем алгебраической моделью шифра с ограниченным ключом (или просто шифром с ограниченным ключом).
Криптографические свойства шифра с ограниченным ключом пределяются в первую очередь, свойствами его генератора ключевого потока. Например, если (ĸ, l) = k’ … k’, для любого ĸ K и подходящего k’ K, то получаем «слабый» шифр простой замены. Если (ĸ, l) = k1 … kp k1 … kp… представляет собой периодическую последовательность (в которой |{k1 … kp}| 2), то получаем более стойкий шифр периодической замены. Например шифр Виженера.
2.1.2. Вероятностные модели шифров.Введем теперь вероятностную модель шифра. Определим априорные распределения вероятностей P(X), P(K) на множествах X и K соответственно. Тем самым для любого x X определена вероятность pX(x)P(X) и для любого k K – вероятность pK(k) P(K), причем выполняются равенства
и .
В тех случаях, когда требуется знание распределений P(X) и P(K), мы будем пользоваться вероятностной моделью В, состоящей из пяти множеств, связанных условиями 1) и 2) предыдущего определения алгебраической модели шифра, и двух вероятностных распределений:
В=(X, K, Y, E, D, P(X), P(K)).
Распределение P(Y) индуцируется распределениями P(X) и P(K) согласно формуле полной вероятности:

В большинстве случаев множества X и Y представляют собой объединения декартовых степеней A и B соответственно, так что для некоторых натуральных L и L1

Множества A и B называют соответственно алфавитом открытого текста и алфавитом шифрованного текста. Другими словами, открытые и шифрованные тексты записываются привычным образом в виде последовательности букв.
Принята также формулировка вероятностной модели шифра в которой вместо включения в совокупность распределений случайных величин множества X, K Y, рассматриваются как случайные величины , полагая при этом случайные величины независимыми.
Определение: вероятностной моделью шифра назовем совокупность
,
введенных случайных величин, множество правил зашифрования и расшифрования. При этом выполняются требования, предъявляемые к алгебраической модели шифра. Для вероятностной модели шифра используется также обозначение .
Пусть - вероятностная модель опорного шифра. Введя априорные распределения вероятностей P(Ul) и P(Kl) на декартовых степенях множеств U и K, рассмотрим вероятностную модель l-го опорного шифра, рассматривая вместо Ul – множества всех l-грамм, множество U(l), состоящее из тех l-грамм, для которых выполняется условие , то есть всех незапрещенных l-грамм. Также вместо Vl будем рассматривать V(l), полагая, что выполняется равенство .
Введем вероятностную модель шифра с неограниченным ключом.
Определение: Пусть для l N

- совокупность, состоящая из случайных величин , множеств правил зашифрования и расшифрования , для которой выполняются условия

при любых . Тогда вероятностной моделью шифра с неограниченным ключом назовем семейство
,
где - случайный генератор ключевого потока.
Аналогично вводится вероятностная модель шифра с ограниченным ключом, только вместо множества Kl всех ключевых потоков длины l, рассмотрим множество K(l) возможных ключевых потоков длины l.
Определение: Пусть для l N

- совокупность, состоящая из случайных величин , множеств правил зашифрования и расшифрования , где распределение P(K(l)) определяется формулой и при любых

. Тогда вероятностной моделью шифра с ограниченным ключом назовем семейство
,
где - детерминированный генератор ключевого потока.
2.1.3. Математические модели открытых сообщений.Применяются для математических исследований свойств шифров и для автоматизации криптоанализа. Учет частот m-грамм приводит к следующей модели открытого текста.
Открытое сообщение – последовательность знаков (слов) некоторого алфавита.
Различают естественные алфавиты (языки), и специальные алфавиты (цифровые, буквенно-цифровые).
Естественные алфавиты могут быть нормальными и смешанными (систематически перемешанные на основе правила и случайные). Смешанные используются в качестве нижней строки подстановки.
Примеры специальных алфавитов:
Код Бодо – 32-х значный 5-битовый алфавит для телетайпов и телексов. 26 английских букв, пробел, скобки, вопрос и плюс.
Двухбуквенный алфавит Ф. Бэкона – двоичный код из букв A и B.
Код ASCII – 256 символьный 8-битовый алфавит. Может быть в различных формах записи (десятичная, двоичная и пр.).
Частотные характеристики.
Наиболее важная характеристика – избыточность открытого текста (подробно рассматривается в разделе надежности шифров).
Более простые:
повторяемость букв, пар букв (биграмм), m-грамм;
сочетаемость букв друг с другом (гласные-согласные и пр).
Такие характеристики устанавливаются на основе эмпирического анализа текстов достаточно большой длины.
Эксперимент по оценке вероятности появления в тексте фиксированных m-грамм (для небольших m).
Подсчет чисел вхождений каждой из nm возможных биграмм в достаточно длинных открытых текстах T = t1t2…tl, составленных из букв алфавита {a1, a2,…,an}. При этом просматриваются подряд идущие m-граммы текста:
t1t2…tm, t2t3…tm+1, … , t1- m+1tl-m+2…tl.
Если - число появлений m-граммы в тексте T, а L – общее число подсчитанных m-грамм, то при достаточно больших L:

При анализе сочетаемости букв друг с другом используют понятие условной вероятности (зависимость появления буквы в тексте от предыдущих букв).
Для условных вероятностей выполняются неравенства:

А. А. Марковым отмечена устойчивая закономерность чередования гласных и согласных. Зависимость появления букв текста вслед за несколькими предыдущими ощутима на глубину в 30 знаков, после чего практически отсутствует.
Вероятностная модель m-го приближения.
Пусть P(m)(A) – массив, состоящий из приближений для вероятностей p(b1b2…bm) появления m-грамм b1b2…bm в открытом тексте, m N, A = {a1,…,an}- алфавит открытого текста, bi A, . Тогда источник "открытого текста" генерирует последовательность c1,c2,…,ck,ck+1,… знаков алфавита A, в которой m-грамма c1c2…ck появляется с вероятностью
p(c1c2…cm)P(m)(A).
Вероятностная модель первого приближения.
Последовательность знаков c1,c2,… в которой каждый знак ci, i = 1,2,…, появляется с вероятностью p(ci)P(1)(A), независимо от других знаков.
В такой модели открытый текст имеет вероятность
.
Вероятностная модель второго приближения.
Первый знак c1 имеет вероятность p(ci) P(1)(A), а каждый следующий знак ci , зависит от предыдущего и появляется с вероятностью

где p(ci-1сi) P(2)(A), p(ci-1) P(1)(A), i = 2,3,… Другими словами модель открытого текста второго приближения представляет собой простую однородную цепь Маркова. В такой модели открытый текст c1c2…cl имеет вероятность

С общих позиций открытый текст рассматривается как стационарный эргодический случайный процесс с дискретным временем и конечным числом состояний.
Критерии распознавания открытого текста.
Строятся на основе моделей открытого текста двумя методами:
на основе различения статистических гипотез;
на основе ограничений по запретным или ожидаемым сочетаниям букв (ЪЪ и прочие).
Первый подход:
Открытый текст – реализация независимых испытаний случайной величины, значениями которой являются буквы алфавита A = {a1,…,an}, появляющиеся в соответствии с распределением вероятностей P(A) = (p(a1),…, p(an)). Требуется определить, является ли случайная последовательность c1c2…cl букв алфавита A открытым текстом или нет.
Пусть H0 – гипотеза, состоящая в том, что данная последовательность – открытый текст, H1 – альтернативная гипотеза. В простейшем случае последовательность c1c2…cl можно рассматривать при гипотезе H1 как случайную и равновероятную либо реализация независимых испытаний некоторой случайной величины, значениями которой являются буквы алфавита A = {a1,…,an}, появляющиеся в соответствии с распределением вероятностей Q(A) = (q(a1),…, q(an)).
Наиболее мощный критерий различения двух простых гипотез – лемма Неймана-Пирсона. Также может использоваться и теорема Фробениуса.
Возможны ошибки двух родов:
ошибка первого рода (открытый текст принят за случайный набор знаков) ее вероятность;
ошибка второго рода (случайный набор знаков принимается за открытый текст) ее вероятность .
Второй подход:
Критерий запретных m-грамм. Устроен просто. Отбирается некоторое число s редких m-грамм, которые объявляются запретными. Теперь последовательно просматривая все m-граммы анализируемой последовательности c1c2…cl , мы объявляем ее случайной как только в ней встретится одна из запретных k-грамм. Весьма эффективны несмотря на простоту.
Распознавание открытого текста производится также на основе особенностей нетекстовых сообщений (файловые метки и пр.).
2.2. Криптографическая стойкость шифровПопытки противника по добыванию зашифрованной информации называют криптоатаками. В симметричных криптосистемах обычно рассматривают следующие криптоатаки:
Атака на основе шифртекста: криптоаналитик располагает шифртекстами отвечающими неизвестным открытым текстам различных сообщений. Требуется определить хотя бы одно из сообщений (или соответствующий ключ ki), исходя из необходимого числа m криптограмм, или убедиться в своей неспособности сделать это. В качестве частных случаев возможно совпадение ключей k1 = … = km или совпадение открытых текстов x1 = … = xm.
Атака на основе известного открытого текста: криптоаналитик располагает парами открытых и отвечающих им шифрованных текстов. Требуется определить ключ ki для хотя бы одной из пар. В частном случае, когда k1 = … = km, требуется определить ключ k или, убедившись в своей неспособности сделать это, определить открытый текст xm+1 еще оджной криптограммы ym+1 = Ek(xm+1), зашифрованный на том же ключе.
Атака на основе выбранного открытого текста: эта атака отличается от предыдущей лишь тем, что криптоаналитик имеет возможность выбора открытых текстов . Цель атаки та же, что и предыдущей. Подобная атака возможна в случае, когда криптоаналитик имеет доступ к шифратору передающей стороны, или в системах опознавания "свой-чужой".
Атака на основе выбранного шифртекста: эта атака отличается от второй атаки тем, что криптоаналитик имеет возможность выбора шифртекстов . Цель атаки та же, что и во втором случае. Подобная атака возможна, когда криптоаналитик имеет доступ к шифратору принимающей стороны.
Атаки на основе выбранных текстов считаются наиболее опасными. Иногда к указанным атакам добавляют и другие.
Правило Керкгоффса – компрометация системы не должна причинять неудобств ее пользователям (надежность определяется только секретностью ключа).
В криптографии различают два подхода к стойкости – теоретическую стойкость и практическую (или вычислительную) стойкость.
2.2.1. Теоретико-информационный подход к оценке криптостойкости шифровЭнтропия и избыточность языка
Свойства текстов изучаются методами теории информации, разработанной К. Шенноном. Ключевое понятие – энтропия, определяемая функцией от вероятностного определения и характеризующая количество неопределенности или информации в случайном эксперименте. Неопределенность и информация измеряются одной и той же мерой. Применительно к независимым испытаниям случайной величины с распределением вероятностей

энтропия H() определяется формулой

Единицей количества информации считается 1 бит. При pi = 1/n при всех , то
.
Мерой среднего количества информации, приходящейся на одну букву открытого текста языка (рассматриваемого как источник случайных текстов), служит величина H, называемая энтропией языка . вычисляется последовательными приближениями позначных моделей текста: H1, H2, … Hr.
Для каждого языка значение H стремится к определенному пределу (после r = 30 предел уже устанавливается):
.
при этом формула

определяет избыточность языка R. Разговорные языки имеют весьма большую избыточность. Избыточность текста в 75% означает, что при оптимальном кодировании текста (например использование кодов Хаффмена, Фано или других) его можно сжать до четверти без потери информации.
Энтропию можно определить и по другому. Для n-буквенного алфавита число текстов длины L, удовлетворяющих статистическим ограничениям, равно (при достаточно больших L) не как это было бы, если бы мы имели право брать любые наборы из L букв, а всего лишь

По сути это приближенное число осмысленных текстов длины L для данного языка . Исходя из этого можно определить энтропию языка формулой

Расстояние единственности.
При дешифровании криптограмм может возникнуть ситуация, в которой несколько найденных ключей дают осмысленный текст. Так, криптограмму WNAJW, полученную при помощи шифра Цезаря, порождают два открытых текста RIVER и ARENA, отвечающих величинам сдвига (ключам) 5 и 11 соответственно. Из этих ключей один является истинным, а другой ложным. Найдем оценку для числа ложных ключей. Для этого рассмотрим связь между энтропиями вероятностных распределений P(X), P(K), P(Y), заданных на компонентах X, K, Y произвольного шифра в см. лекция 2.
Назовем условную энтропию H(K / Y) неопределенностью шифра в по ключу. Она измеряет среднее количество информации о ключе, которое дает шифртекст. Аналогично вводится неопределенность шифра по открытому тексту H(X / Y). Эти величины являются мерой теоретической стойкости шифра.
Минимально возможным значением неопределенности H(X/Y) является 0.
,
это возможно только в тех случаях, когда или для всех x, y, то есть если при некоторых x, y. Это означает, что по данному y можно получить существенную информацию об x, что свидетельствует о слабости шифра. Идеальной является ситуация когда H(X / Y) = H(X). Именно в этом случае шифр можно было бы назвать совершенным.
Связь между энтропиями компонент шифра дает формула неопределенности шифра по ключу:

полученная К. Шенноном. Эта формула позволяет получить оценку среднего числа ложных ключей.
Введем обозначение K(y) = {k K : x X, Ek(x) = y} – множество ключей, для каждого из которых y является результатом зашифрования некоторого осмысленного текста длины L. Если мы располагаем криптограммой y, то число ложных ключей равно |K(y)| - 1, так как лишь один из допустимых ключей является истинным. Определим среднее число ложных ключей кL (относительно всех возможных шифртекстов длины L) формулой
.
Теорема. Для любого рассматриваемого шифра в с равновероятными ключами при достаточно больших значениях L в алфавите из n букв имеет место неравенство
.
где R - избыточность данного языка.
Назовем расстоянием единственности для шифра в натуральное число L0, для которого ожидаемое число ложных ключей кL равно нулю. По сути, расстояние единственности есть средняя длина шифртекста, необходимая для однозначного восстановления истинного ключа (без каких-либо временных ограничений на время его нахождения).
Непосредственно из предыдущего неравенства следует, что

откуда при кL = 0 получаем и, следовательно,

Минимально возможное значение в этом неравенстве и принимается за L0. Таким образом.

Например для шифра простой замены с параметрами n = 26, |K| = 26!, R = 0,5 (примерно соответствует английскому языку) получим оценку

Это значит что для шифра простой замены, для английского языка в среднем по криптограмме длиной около 40 символов можно однозначно определить открытый текст.
Для совершенных шифров типа одноразовых блокнотов расстояние единственности L0.
Теоретическая стойкость шифров
При анализе теоретической стойкости шифров отвлекаются от объема реальных затрат на дешифрование. Основным критерием является возможность получения на основе шифртекста вероятностной информации об открытом тексте или используемом ключе. Для теоретически стойких (совершенных) шифров сама задача дешифрования становится бессмысленной. Никакой метод криптоанализа, включая полный перебор ключей, не позволяет не только определить ключ или открытый текст, но даже получить о них какую либо информацию (за исключением длины открытого текста).
Априорная вероятность открытого текста – безусловная вероятность.
Апостериорная вероятность открытого текста – вероятность (по шифртексту) при условии использования соответствующего шифра.
Стойкость по отношению к атаке на основе единственного шифртекста. К. Шеннон назвал шифр совершенным, если шифртекст не дает никакой вероятностной информации об открытом тексте на языке вероятностной модели , определение совершенного шифра выражается следующим образом:
Определение. Назовем шифр в совершенным, если для любых x X, y Y выполняется равенство
p(x / y) = pX(x).
Утверждение. Если шифр в – совершенный, то
|X| ≤ |Y| ≤ |K|.
Теорема (К. Шеннон). Пусть в – шифр, для которого |X| = |Y| = |K|. Тогда шифр в – совершенный тогда и только тогда, когда выполняются два условия:
Для любых x X, y Y существует единственный ключ k K, для которого
Ek(x) = y;
Распределение вероятностей P(K) – равномерное, то есть для любого ключа
По сути, теорема описывает шифры табличного гаммирования со случайными равновероятными ключами.
2.2.2. Практическая стойкость шифров.Раздел практической стойкости рассматривает атаки на шифры, не являющиеся совершенными.
Центровым понятием в практической стойкости по Шеннону является рабочая характеристика шифра, представляющая собой средний объем работы W(N), необходимый для определения ключа по криптограмме, состоящей из N букв, причем N>L0 (объем перехвата перевалил за расстояние единственности), измеренный в удобных элементарных операциях.
Ценность большинства данных со временем снижается, поэтому важно, чтобы рабочая характеристика шифра превышала по стоимости защищаемую информацию.
Сложность взлома алгоритмов классифицируется по категориям:
Полное вскрытие. Криптоаналитик находит ключ k, такой, что Dk(x)=y.
Глобальная дедукция. Криптоаналитик находит альтернативный алгоритм A, эквивалентный Dk(x) без знания k.
Случайная (или частичная) дедукция. Криптоаналитик находит (крадет) открытый текст для перехваченного шифрованного сообщения.
Информационная дедукция. Криптоаналитик добывает некоторую информацию о ключе или открытом тексте. Такой информацией могут быть несколько битов ключа, сведения о форме открытого текста и пр.
Алгоритм безусловно стоек, если восстановление невозможно при любом объеме шифртекста, полученного криптотаналитиком. На поверку безусловно стойки только одноразовые блокноты. Все остальные криптосистемы теоретически можно вскрыть методом грубой силы (прямой подбор ключа, лобовая атака).
Вычислительная стойкость по отношению к лобовой атаке зависит от длины ключа. Некоторые оценки стойкости см. в приложении.
Вопросами вычислительной стойкости по отношению к другим методам криптоанализа (вероятностный, линейный, дифференциальный и пр.) занимается теория сложности вычислений. Подробное ее рассмотрение выходит за рамки данного пособия.
Таблица 1. Оценки времени лобового вскрытия для симметричных шифров
Стоимость Длина ключа, бит.
40 56 64 80 112 128
$100000 2 с 35 ч 1 год 70000 лет 1014 лет 1019 лет
$1 млн 0.2 с 3.5 ч 37 дн 7000 лет 1013 лет 1018 лет
$10 млн 0.02 с 21 мин 4 дн 700 лет 1012 лет 1017 лет
$100 млн 2 мс 2 мин 9 ч 70 лет 1011 лет 1016 лет
$1 млрд 0.2 мс 13 с 31 мин 7 лет 1010 лет 1015 лет
$10 млрд 0.02 мс 1 с 5.4 мин 245 дн 109 лет 1014 лет
$100 млрд 2 мкс 0.1 с 32 с 24 дн 108 лет 1013 лет
$1 трлн 0.2 мкс 0.01 с 3 с 2.4 дн 107 лет 1012 лет
$10 трлн 0.02 мкс 1 мс 0.3 с 6 час 106 лет 1011 лет
Таблица 2. Оценки среднего времени лобового вскрытия в "Китайской лотерее"
Страна Население Число телевизоров радиоприемников Время взлома
56 бит 64 бита
Китай 1190431000 257000000 280 с 20 ч
США 260714000 739000000 97 с 6.9 ч
Ирак 19890000 4730000 4.2 ч 44 дн
Израиль 5051000 3640000 5.5 ч 58 дн
Вайоминг 470000 1330000 15 ч 160 дн
Невада 6100 17300 48 дн 34 г
Термодинамические ограничения. Идеальный компьютер затрачивает на каждую установку и сброс бита 4.4·10-16 эрг энергии. Энергия излучаемая солнцем за год равна 1.21·1041 эрг. Этого достаточно, чтобы совершить 2.7·1056 премен бита, чего хватает для пробега 187-разрядным счетчиком всех значений.
Лобовое вскрытие 256 битового ключа невозможно пока компьютеры построены из обычной материи и работают в обычном пространстве.
Таблица 3. Длины симметричных и открытых ключей, равных по устойчивости к лобовому вскрытию
Длина симметричного ключа (бит) Длина открытого ключа (бит)
56 384
64 512
80 768
112 1792
128 2304
Таблица 4. Расстояние единственности по симметричному ключу
Длина ключа (бит) Расстояние единственности (символов)
40 5,9
56 8,2
64 9,4
80 11,8
128 18,8
256 37,6
2.3. Имитостойкость и помехоустойчивость шифров2.3.1. Имитостойкость шифров. Имитация и подмена сообщенияПомимо пассивных действий со стороны противника возможны активные действия, состоящие в попытках подмены или имитации сообщения.
Если передается шифрованное сообщение y Y (полученное из открытого текста x X на ключе k K), то противник может заменить его на y', отличный от y. При этом он будет рассчитывать на то, что на действующем ключе k новая криптограмма при расшифровании будет воспринята как некий осмысленный открытый текст x', отличный от x, чем больше вероятность этого события, тем успешнее будет попытка имитации.
Имитостойкость шифра определим как его способность противостоять попыткам противника по имитации или подмене. Естественной мерой имитостойкости шифра служит вероятность соответствующего события:
Dk(y') X - для попытки имитации сообщения;
(Dk(y') X) (y' y) – для попытки подмены сообщения.
В соответствии с этим введем следующие обозначения:

которые назовем соответственно вероятностью имитации и вероятностью подмены. Полагая, что противник выберет ту попытку, которая с большей вероятностью приводит к успеху, вводят также вероятность навязывания формулой
Для шифров с равновероятными ключами можно получить общие оценки введенных вероятностей.
Утверждение 1. Для шифра B с равновероятными ключами имеет место достижимая оценка Для эндоморфного шифра с равновероятной гаммой pим = 1.
Это неравенство поясняет широко используемый для имитозащиты способ введения избыточности в передаваемое сообщение, например, дополнительных "добавок" к передаваемому сообщению типа аутентификаторов или имитовставок.
Утверждение 2. Для шифра B с равновероятными ключами имеет место достижимая оценка
.
Определим совершенную имитостойкость (теоретически лучшую защиту от имитации или подмены), достижимую при данной величине |Y| множества допустимых криптограмм и при произвольном распределении P(K) на множестве ключей. Для этого вводится понятие граница Симмонса.
Обозначим через I(Y, K) взаимную информацию между Y и K, то есть величину, определяемую формулой I(Y, K) = H(Y) - H(Y / K).
Утверждение 3. Имеет место достижимая оценка

Равенство, определяемое как совершенная имитостойкость, достигается при одновременном выполнении двух условий:
Вероятность p(y) того, что y окажется допустимой криптограммой не зависит от y.
Для каждой криптограммы y Y вероятность p(y / k) одинакова при всех k, для которых Dk(y) X.
Следует отметить, что даже при совершенной имитостойкости вероятность навязывания мала лишь при большой величине I(Y, K), то есть в том случае, когда криптограмма дает значительную информацию о ключе. Информация, которую дает Y относительно K есть мера того, в какой степени ключ используется для обеспечения имитостойкости.
2.3.2. Способы обеспечения имитостойкостиОсновной причиной отсутствия какой-либо имитостойкости шифра гаммирования является то, что множество возможных открытых текстов длины l совпадает с множеством всех слов длины l в алфавите шифрвеличин. Для обеспечения имитозащиты эндоморфных шифров в открытый текст намеренно вводится избыточная информация. Это делается для выделения множества открытых текстов так, чтобы, соответствующая структура легко распознавалась, но не могла быть воспроизведена оппонентом без знания некоторого секрета, которым обычно является ключ зашифрования.
Например, к каждому сообщению перед зашифрованием можно добавить "контрольную сумму", вычисляемую с помощью известной функции F . Отправитель сообщения вычисляет значение F от открытого текста х, присоединяет это значение к х, и шифрует полученную комбинацию. Получатель расшифровывает поступивший массив, рассматривая результат как сообщение с присоединенной контрольной суммой. После чего он применяет к полученному сообщению функцию F, чтобы, воспроизвести контрольную сумму. Если она равна контрольной сумме, поступившей с сообщением, сообщение признается подлинным (или аутентичным). Маловероятно, чтобы случайная последовательность знаков могла быть признана аутентичной.
Более надежный способ используется в военном протоколе аутентификации, принятом в США. Отправитель и получатель сообщения имеют опечатанный пакет со случайной последовательностью символов, вырабатываемой компетентным органом. Каждый из участников связи отвечает за защиту своего опечатанного пакета и имеет инструкцию не вскрывать его, пока не потребуется аутентификация сообщения. Кроме того, отправитель и получатель имеют общий секретный ключ. При аутентификации сообщения отправитель вскрывает пакет, дополняет сообщение символами этой секретной последовательности, а затем шифрует полученное сообщение, используя секретный ключ. Для шифрования обычно используется симметричный шифр. Получатель, после расшифрования сообщения (с помощью своей копии ключа) вскрывает пакет и производит аутентификацию. Сообщение интерпретируется как аутентичное только тогда, когда при расшифровании будут получены символы секретной последовательности. Если используется стойкое шифрование, то оппоненту (который не знает ключа) при осуществлении активной атаки не остается ничего другого, как случайным образом выбирать шифртекст в надежде, что он будет принят получателем как аутентичный. Если секретная последовательность состоит, например, из r битов, то вероятность того, что при расшифровании случайно выбранный оппонентом "шифрованный текст" даст сообщение, заканчивающееся неизвестной ему, но правильной последовательностью, будет составлять величину 2-r.
Коды аутентификации
Другой метод нашел распространение при аутентификации электронной передачи фондов в Федеральной резервной системе США. Подобные передачи должны быть аутентифицированы с использованием процедуры, которая фактически реализована в криптографическом алгоритме, определенном в стандарте шифрования данных США (ранее DES, теперь — AES). Аутентификатор генерируется в режиме, называемом шифрованием со сцеплением блоков. В этом режиме сообщение разбивается на 64 битные блоки - М = M1M2...Мn, которые последовательно шифруются следующим образом. Блоки шифртекста С1,С2,... вырабатываются по рекуррентной формуле
Сi = Еk (Ci-1 М,),
при этом вектор С0 полагается равным начальному вектору IV (Initial Vector). Начальный вектор меняется ежедневно и хранится в секрете. Схематично этот режим изображается следующим образом:

Рис.11. Режим выработки имитовставки
Процедура повторяется до тех пор, пока не будут обработаны все блоки текста. Последний блок шифртекста — Сn является функцией секретного ключа, начального вектора и каждого бита текста, независимо от его длины. Этот блок называют кодом аутентичности сообщения (КАС), и добавляют к сообщению в качестве аутентификатора. Само расширенное аутентификатором сообщение передается обычно открытым, хотя может быть и зашифрованным, если требуется секретность. Любой владелец секретного ключа и начального вектора может проверить правильность такого аутентификатора. Нужно лишь повторить ту же процедуру шифрования. Оппонент, однако, не может ни осуществить генерацию аутентификатора, который бы воспринимался получателем как подлинный, для добавления его к ложному сообщению, ни отделить аутентификатор от истинного сообщения для использования его с измененным или ложным сообщением. В обоих случаях вероятность того, что ложное сообщение будет интерпретироваться как подлинное, равна вероятности "угадывания" аутентифкатора, то есть 2-64. Подчеркнем, что предложенный способ делает аутентификатор сложной функцией информации, которую он аутентифицирует. В таком случае подмножество допустимых сообщений состоит из тех пар текст-КАС, которые могут успешно пройти проверку на соответствие аутентификатора тексту с использованием ключа.
Оба способа имитозащиты передаваемых сообщений, связанные с введением избыточности, моделируются так называемыми кодами аутентификации (или А-кодами). В том случае, когда расширенное аутентификатором сообщение шифруется, говорят об А-кодах с секретностью. Если расширенное сообщение передается в открытом виде, говорят об А-кодах без секретности.
Вопросы использования криптографических хэш-функций для обеспечения имитостойкости рассматриваются подробнее в соответствующем разделе пособия.
2.3.3. Помехостойкость шифровПомимо целенаправленных искажений передаваемой шифрованной информации возможны также искажения, происходящие за счет наличия помех в канале связи. Такие помехи могут привести к искажениям и даже потере некоторых знаков используемого алфавита. Если искаженный знак не является знаком используемого алфавита, то на приеме факт искажения легко установить. В противном случае факт искажения может быть установлен лишь при расшифровании, когда искажение в шифртексте ведет к потере части или даже всего открытого текста. Так же проявляется и потеря знаков шифртекста.
Прежде всего интересен вопрос о свойствах самого шифра, позволяющих не распространять искажений при расшифровании. Ограничимся только рассмотрением эндоморфных (X=Y) шифров и искажений двух типов:
Замена знаков знаками того же алфавита.
Потеря знаков или появление дополнительных знаков того же алфавита.
Шифры, не распространяющие искажений типа "замена знаков".
Будем рассматривать шифры, описываемые алгебраической моделью
A = (X, K, Y, E, D),
в которой причем для любых x X и k K длина y = Ek(x) совпадает с длиной x.
Мерой значительности последствий искажений типа "замена знаков" является метрика на множестве сообщений X = Y. Простейшей является метрика Хэмминга , определяемая формулой

Так как для эндоморфного шифра каждое правило зашифрования Ek представляет собой биекцию Ek : X X, то будем пользоваться подстановочной моделью шифра - П = (X, E), в которой множество E ={ek : k K} рассматривается как множество подстановок e : X X, e E.
Шифр П = (X, E) не распространяет искажений типа замены знаков и являются помехостойкими если для любых x, y A и любого e E выполняется неравенство
(e-1x, e-1y) (x, y).
Подстановки e E, удовлетворяющие предыдущему равенству, называются изометриями на X.
Теорема А. А. Маркова. Биекция eE является изометрией на X тогда и только тогда, когда для подходящих преобразований множества X:

где (j1,…,j) – перестановка чисел 1, 2, …, ; Ri S(A) – некоторые фиксированные подстановки множества A, ai A,
Согласно теореме Маркова, в классе эндоморфных шифров, не изменяющих длины сообщений, не распространяют искажения типа замены знаков, например шифры перестановки, поточные шифры однозначной замены, а также их композиции типа шифр замены – шифр перестановки.
Шифры, не распространяющие искажений типа "пропуск-вставка знаков".
Приведем теорему, рассматривающую подстановочную модель шифра.
Теорема. Если П = (X, E) – шифр не распространяющий искажений типа пропуск-вставка, то для любого e E, либо e = L, либо у = L · f (при подходящем S(A)), где L отображение множества X в себя, определенное для любого a = (a1,…,a) X формулой

( - некоторая подстановка множества A), а f – отображение множества X в себя, меняющее порядок следования букв любого слова на противоположный:

Всякий шифр, не распространяющий искажений типа "пропуск-вставка знака" есть либо шифр простой замены либо произведение шифра простой замены и частного вида шифра перестановки, заключающейся в инверсной записи текста (справа налево).
Следовательно, все сложные шифры распространяют искажения типа "пропуск-вставка" и в данном случае борьба с такими искажениями криптографическими методами невозможна и, следовательно, необходимо применять иные способы повышения помехоустойчивости (например, введением избыточности – контрольные суммы и пр.).
2.3.4. Практические вопросы повышения надежности.Совместно с алгоритмом шифрования данных целесообразно использовать алгоритм сжатия по следующим причинам:
Криптоанализ опирается на избыточность шифртекста, а сжатие файла перед шифрованием эту избыточность снижает;
Шифрование занимает много времени, а потому сжатие файла до шифрования ускоряет весь процесс.
Важно запомнить, что сжатие должно выполняться именно до шифрования. (Сжимаемость шифртекста можно использовать как неплохой тест алгоритма шифрования. Если шифртекст можно сжать, значит алгоритм не сишком надежен.)
Вырабатывать имитовставку можно до сжатия файла и сжимать вместе с ним с целью повышения стойкости шифра. (Имитовставка повышает избыточность текста.) Или же выполнять после шифрования, с целью ускорения процесса аутентификации сообщения.
Помехоустойчивое кодирование, повышающее избыточность текста, наоборот целесообразно применять после шифрования данных.
Последовательность применения имитовставки и кодирования приведена на рис.12.

Рис. 12. Практическое применение имитовставки в сочетании со сжимающим и помехоустойчивым кодированием
Контрольные вопросыНазовите основные составляющие алгебраической модели шифра.
Для чего применяются вероятностные модели шифров?
Для чего применяются модели открытых текстов?
Назовите критерии на открытый текст.
В чем различие между теоретической и практической криптостойкостью шифров?
В чем различие между имитацией и подменой сообщения?
Назовите основные способы обеспечения имитостойкости.
Какие бывают виды искажений при передаче сообщения?
3. ПРИНЦИПЫ ПОСТРОЕНИЯ СИММЕТРИЧНЫХ КРИПТОГРАФИЧЕСКИХ АЛГОРИТМОВ3.1. Виды симметричных шифров. Особенности программной и аппаратной реализации.
3.2. Принципы построения блочных шифров.
3.2.1. Базовые шифрующие преобразования
3.2.2. Сеть Файстеля.
3.3. Современные блочные криптоалгоритмы.
3.3.1. Основные параметры блочных криптоалгоритмов.
3.3.2. Алгоритм DES.
3.3.3. Блочный шифр TEA
3.3.4. Международный алгоритм IDEA.
3.3.5. Алгоритм AES (Rijndael).
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. Режимы использования шифров.
3.1. Виды симметричных шифров. Особенности программной и аппаратной реализации.Работа симметричных шифров включает в себя два преобразования:
C = Ek(m) и m = Dk(C),
где m – открытый текст, E – шифрующая функция, D – расшифровывающая функция, k – секретный ключ, C – шифртекст.
Функции зашифрования/расшифрования являются общеизвестными и стойкость всей системы зависит только от секретности ключа k. Этот принцип называют также принципом Керкгоффса.
Современные симметричные алгоритмы шифрования делятся на блочные и поточные.
Сравнительная характеристика основных особенностей блочных и поточных шифров приведена в таблице.
Таблица 5. Особенности блочных и поточных шифров
Блочные шифры Поточные шифры
Работают во всех режимах шифрования Поддерживают не все режимы шифрования
Тяжелы для математического анализа Простое проектирование и математический анализ
Легко реализуются как аппаратно, так и программно Практически непригодны к программной реализации для битового потока. Бессмысленно использовать программный шифратор для шифрования каждого бита по отдельности.
Имеют не очень высокое быстродействие Имеют высокое быстродействие
Стойкость шифра зависит от длины ключа, количества раундов шифрования, размера блока и рассеивающих и перемешивающих характеристик алгоритма Стойкость шифра зависит от статистических характеристик и периода переполнения генератора ключевой последовательности
Блочные шифры оперируют с данными путем фиксированного преобразования крупных блоков открытого текста, а поточные шифры оперируют с данными путем динамического преобразования отдельных цифр отрытого текста.
При применении различных режимов шифрования блочные шифры могут быть также реализованиы как поточные и наоборот.
Основой блочного шифра является алгоритм преобразования, основой поточного шифра – генератор ключевой последовательности. В таблице приведен сравнительный перечень особенностей блочных и поточных шифров.
3.2. Принципы построения блочных шифров3.2.1. Базовые шифрующие преобразованияАлфавитом, на котором действует блочный шифр, является множество двоичных векторов-блоков открытого текста одинаковой длины (64, 128 и т.д.). Так как с увеличением мощности алфавита энтропия на один знак также увеличивается, криптографическая стойкость алгоритма возрастает. Блочные шифры реализуются путем многократного применения к блокам открытого текста некоторых базовых преобразований.
Требования к базовым преобразованиям :
возможность простой реализации (как аппаратной, так и программной);
способность давать при небольшом числе итераций аналитически сложные преобразования;
соответствие критериям рассеивания и перемешивания;
соотвествие критерию лавинного эффекта.
Принцип лавинного эффекта - применение шифрующего преобразования к наборам аргументов, отличающихся в незначительном числе позиций, должно приводить к существенному изменению результата.
Принцип перемешивания (diffusion)- криптографические преобразования должны обеспечивать максимальное усложнение статистической и аналитической взаимосвязи между открытым текстом и шифртектсом.
Принцип рассеивания (confusion) – криптографические преобразования должны обеспечивать максимальное усложнение статистической и аналитической взаимосвязи между шифртекстом и ключом.
Перемешивающие преобразования – сложные в криптографическом отношении локальные преобразования над отдельными частями шифрующих блоков.
Рассеивающие преобразования – простые преобразования, переставляющие между собой части блоков текста.
Применяемые математические преобразования (операции):
Перестановки – смена местами битовых значений разрядов подблоков на основе фиксированных подстановок.
Битовые сдвиги – (X >>Y) сдвиг вправо и (X<<Y) сдвиг влево битовых значений разрядов подблока X (соответствует умножению на 2 и целочисленному делению на 2 ) на величину, определяемую значением подблока Y.
Циклические битовые сдвиги – (X>>>Y) циклический сдвиг вправо и (X<<<Y) циклический сдвиг влево битовых значений разрядов подблока X (ключа, шифртекста) на величину, определяемую значением подблока Y.
S-подстановки – подстановки значений на основе матриц подстановки, где элементы битового блока используются в качестве параметров (координат элементов) матрицы подстановки. S-подстановки могут быть сужающими, расширяющими и однозначными в зависимости от размерного соотношения (в битах) входных и выходных подблоков данных.
Побитовая инверсия – (~X) инверсия всех битовых регистров блока X.
Побитовое сложение по модулю 2 – (XY) операция XOR над всеми битовыми регистрами подблоков X и Y.
Сложение по модулю 2n (n – длина блока в битах) – (XY) двоичное сложение подблоков с отбрасыванием значений старших регистров переноса.
Умножение по модулю 2n+ 1 – (XY) двоичное умножение с отбрасыванием значений старших регистров переноса, причем нулевое значение подблока принимается равным 0 = 2n.
Сложные операции (нелинейние подстановки , логарифмирование и экспоненцирование в конечном поле и пр.).
3.2.2. Сеть ФайстеляСеть Файстеля служит структурной основой построения большинства современных блочных криптоалгоритмов и является по сути методом смешивания текущей части шифруемого блока с результатом некоторой функции, вычисленной от другой независимой части того же блока. Эта методика получила широкое распространение, поскольку обеспечивает выполнение требования о многократном использовании ключа и материала исходного блока информации.
Действие, состоящее из однократного вычисления образующей функции и последующего наложения ее результата на другую ветвь с обменом их местами, называется циклом или раундом (англ. round) сети Файстеля. Оптимальное число раундов N – от 8 до 32. Важно то, что увеличение количества раундов значительно увеличивает криптостойкость любого блочного шифра к криптоанализу.
Классическая схема одного раунда сети Файстеля имеет следующую структуру:
Li-1
Ri-1
f
ki
+
Li
Ri

Зашифрование:

Расшифрование:

Рис.13. Сеть Файстеля
Независимые потоки информации, порожденные из исходного блока, называются ветвями сети. В классической схеме их две. Функция f называется образующей.
Данная схема является обратимой. Сеть Файстеля обладает тем свойством, что даже если в качестве образующей функции f будет использовано необратимое преобразование, то и в этом случае вся цепочка будет восстановима. Это происходит вследствие того, что для обратного преобразования сети Файстеля не нужно вычислять функцию f-1.
Благодаря применению финального преобразования (перестановка левой и правой частей блока) сеть Файстеля симметрична. Использование операции XOR, обратимой своим же повтором, и инверсия последнего обмена ветвей делают возможным раскодирование блока той же сетью Файстеля, но с инверсным порядком применения подключей ki. Заметим, что для обратимости сети Файстеля не имеет значение, является ли число раундов четным или нечетным числом. В большинстве реализаций схемы, в которых оба вышеперечисленные условия (операция XOR и уничтожение последнего обмена) сохранены, прямое и обратное преобразования производятся одной и той же процедурой.
В настоящее время чаще применяют модификацию сети Фейстеля для большего числа ветвей. Это в первую очередь связано с тем, что при больших размерах кодируемых блоков (128 и более бит) становится неудобно работать с математическими функциями по модулю 64 и выше. Как известно, основные единицы информации, обрабатываемые процессорами на сегодняшний день – это байт и двойное машинное слово 32 бита. Поэтому все чаще и чаще в блочных криптоалгоритмах встречается сеть Фейштеля с 4-мя ветвями. Самый простой принцип ее модификации изображен на рисунке а). Для более быстрого перемешивания информации между ветвями (а это основная проблема сети Фейштеля с большим количеством ветвей) применяются две модифицированные схемы, называемые "type-2" и "type-3". Они изображены на рис.14.
Рис.14. Сеть Файстеля на четыре ветви
3.3. Современные блочные криптоалгоритмы3.3.1. Основные параметры блочных криптоалгоритмов.Основными параметрами, характеризующими современные блочные криптографические алгоритмы, являются размер блока шифртекста (определяющий энтропию алфавита сообщения), размер ключевого пространства (определяющий энтропию криптосистемы), количество раундов, структурная схема криптоалгоритма, применяемые криптографические преобразования (математические операции). Характеристики некоторых наиболее известных современных блочных криптоалгоритмов сведены в таблицу .
Таблица 6. Основные параметры распространенных блочных криптоалгоритмов.
№ Назва-
ние Размер блока, бит Размер ключа, бит Кол-во раундов Основа алгоритма Применяемые операции
1 DES 64 56 16 Сеть Файстеля (2 ветви) XOR,
S-подстановки,
перестановки
2 3DES 64 112,168 48 Алгоритм DES -'-
3 IDEA 64 128 8 Мультипликативно-аддитивная структура
(4 ветви) XOR, сложение по модулю 216, умножение по модулю 216+1
4 Blowfish 64 32..448 16 Модифицированная сеть Файстеля (2 ветви) XOR, сложение по модулю 232 ,
S-подстановки
5 RC5 32, 64, 128 8..2040 1.255 Оригинальная структура (2 ветви) XOR, сложение/вычитание,
циклический сдвиг
6 CAST 64,128 40..256 3..32 Сеть Файстеля с переменной F (2 ветви) XOR, сложение/вычитание,
циклический сдвиг,
S-подстановки
7 RC2 64 8..1024 18 Оригинальная структура (4 ветви) XOR, сложение,
циклический сдвиг, побитовое "И", побитовое дополнение
8 ГОСТ 28147-89 64 256 32 Сеть Файстеля (2 ветви) XOR, сложение,
циклический сдвиг, S-подстановки
9 TEA 64 128 32 Несимметричная сеть Файстеля (2 ветви) XOR, сложение,
битовый сдвиг
10 MARS 128 128,192,256 16+16 Сеть Файстеля (4 ветви) XOR, сложение,
циклический сдвиг,
S-подстановки
11 RC6 128 128,192,256 20 Сеть Файстеля (4 ветви) XOR, сложение,
циклический сдвиг, преобразование T
Окончание табл. 6
№ Назва-
ние Размер блока, бит Размер ключа, бит Кол-во раундов Основа алгоритма Применяемые операции
12 Serpent 128 128,192,256 32 Сеть Файстеля (4 ветви) XOR, битовый сдвиг,
циклический сдвиг,
S-подстановки
13 Twofish 128 128,192,256 ? Алгоритм Blowfish, сеть Файстеля (4 ветви), преобразование Адамара XOR, сложение,
циклический сдвиг,
S-подстановки
14 Rijndael (AES) 128 128,192,256 10..14 Табличные преобразования подблоков XOR, S-подстановки, сдвиг строк, перемешивание в столбцах
15 Base King 192 ? ? Алгоритм 3-WAY ?
16 SAFER 64 64,128 ? Итеративные раунды, псевдопреобразования Адамара Логарифмирование и экспоненцирование в конечном поле, XOR, сложение
17 3-WAY 96 96 ? Оригинальная процедура Линейная подстановка на основе сдвигов и XOR, перестановки, нелинейная подстановка 3-бит блоков
Ниже рассмотрим подробнее некоторые современные блочные криптоалгоритмы
3.3.2. Алгоритм DESDES представляет собой 64-битовый блочный алгоритм с 56-битовым ключом. Как и ГОСТ он построен на классической сети Файстеля и выполняется в течение 16 раундов (см рис.15), кроме того, он имеет начальную и завершающую перестановки.
При подстановке через S-блок на вход подается 48-битовый блок, разбитый на восемь 6-битовых подблока, соответствующие каждый своей S-матрице. Первый и последний биты подблока объединяются в 2-битовое число, определяющее строку S-матрицы, а средние 4 бита объединяются в 4-битовое число, определяющее столбец. На выход подается 4-битовое значение соответствующего элемента S-матрицы.

Рис.15. Раунд шифрования DES
Алгоритм DES являлся коммерческим стандартом шифрования США до 2000 года, когда ему на смену пришел AES. В настоящее время алгоритм применяется в варианте 3DES – каждый блок шифруется трижды на разных ключах. Фактическая длина ключа составила 168 бит.
3.3.3. Блочный шифр TEAОдин из самых простых в реализации, но признанно стойких криптоалгоритмов – TEA (Tiny Encryption Algorithm).
Параметры алгоритма:
Размер блока – 64 бита.
Длина ключа – 128 бит.
В алгоритме использована сеть Фейстеля с двумя ветвями в 32 бита каждая.
Образующая функция F обратима.
Сеть Файстеля несимметрична из-за использования в качестве операции наложения не исключающего "ИЛИ", а арифметического сложения.
Ниже приведен код криптоалгоритма на языке программирования PASCAL.
type TLong2=array[0.. 1] of longint;
TLong2x2=array[0.. 1] of TLong2;
const Delta=$9E3779B9;
var key:TLong2x2;
procedure EnCryptRouting(var data);
var y,z,sum:longint; a:byte;
begin
y:=TLong2(data)[0];z:=TLong2(data)[1];sum:=0;
for a:=0 to 31 do
begin
inc(sum,Delta);
inc(y,((z shl 4)+key[0,0]) xor (z+sum) xor
((z shr 5)+key[0,1]));
inc(z,((y shl 4)+key[1,0]) xor (y+sum) xor
((y shr 5)+key[1,1]));
end;
TLong2(data)[0]:=y;TLong2(data)[1]:=z
end;

Рис.16. Алгоритм TEA
Отличительной чертой криптоалгоритма TEA является его размер. Простота операций, отсутствие табличных подстановок и оптимизация под 32-разрядную архитектуру процессоров позволяет реализовать его на языке ASSEMBLER в предельно малом объеме кода. Недостатком алгоритма является некоторая медлительность, вызванная необходимостью повторять цикл Фейштеля 32 раза (это необходимо для тщательного "перемешивания данных" из-за отсутствия табличных подстановок).
Схема работы алгоритма приведена на рис. 16.
3.3.4. Международный алгоритм IDEAДанный алгоритм получает на входе 64-битовый блок открытого текста (в процессе шифрования он разбивается на четыре 16-битовых подблока) и 128-битовый ключ, из которого генерируется пятьдесят два 16-битовых подключа шифрования Z1..Z52 по шесть подключей на каждый из восьми раундов и четыре подключа для выходного преобразования. На выходе генерируется 64-битовый блок шифрованного текста. Алгоритм расшифрования IDEA полностью повторяет структуру алгоритма шифрования: в качестве входных данных использует 64-битовый блок шифрованного текста и тот же 128-битовый ключ, из которого генерируются пятьдесят два 16-битовых подключей расшифрования U1..U52. В результате работы алгоритм расшифрования должен генерировать 64-битовый блок открытого текста.
Алгоритм шифрования представляет собой сложную комбинацию смешанного использования трех различных операций. Каждая из операций предполагает два 16-битовых входных значения, в результате обработки которых получается одно 16-битовое выходное значение. Вот эти операции:
Побитовое исключающее "ИЛИ" (XOR, сумма по модулю 2), обозначаемое символом .
Сложение целых чисел по модулю 216 (по модулю 65536) с входными и выходными значениями, рассматриваемыми как 16-битовые целые числа без знака. Эта операция обозначается символом .
Умножение целых чисел по модулю 216 + 1 (по модулю 65537) с входными и выходными значениями, рассматриваемыми как 2-битовые целые числа без знака, за исключением блока, состоящего из одних нулей, который интерпретируется как 216. Эта операция обозначается символом .
Упрощенно операция реализуется следующим отображением:

Обратите внимание, что (ab mod 216) соответствует 16 наименее значимым битам ab, а (ab div 216) является простым сдвигом ab вправо на 16 битов. Особенность данной операции в том, что она образует группу (т. е. каждый элемент обратим, включая 0 216). Эти операции являются несогласованными: 1) Никакие две из этих трех операций не подчиняются дистрибутивному закону. 2) Никакие две из этих трех операций не подчиняются ассоциативному закону.
Вычисление подключей IDEA.
В алгоритме IDEA используется 128-битовый ключ Z, который должен быть как у отправителя, так и у получателя сообщения. Из этого до начала шифрования или расшифрования генерируются пятьдесят два 16-битовых подключа. При этом применяется следующая схема. Первые восемь подключей, обозначенные Z1..Z8, образуются непосредственно из ключа: Z1 равен первым 16 битам ключа, Z2 - следующим 16 и т.д.
Затем к ключу шифрования применяется циклический сдвиг влево на 25 битов и создается восемь следующих подключей. Эта процедура повторяется до тех пор, пока не будут получены все 52 подключа. В таблице показано соответствие битов всех подключей битам исходного ключа.
Подключи расшифрования U1..U52 получаются из ключей шифрования по схеме, приведенной в таблице. Где
Zi-1 – мультипликативное обращение Zi по модулю 216+1 (простое число) то есть
Zi Zi-1 = 0000000000000001.
-Zi – аддитивное обращение Zi по модулю 216 то есть
Zi (-Zi) = 0000000000000000.
1. Первых четыре подключa для i-го раунда дешифрования получаются из первых четырех подключей (10 - i)-гo раунда шифрования, если 9-м раундом считать выходное преобразование. Первый и четвертый подключи дешифрования равны мультипликативным обращениям по модулю 216 +1 первого и четвертого подключей шифрования соответственно. Для раундов со 2-го по 8-й второй и третий подключи дешифрования равны аддитивным обращениям по модулю 216 третьего и второго подключей шифрования соответственно. Для раундов 1 и 9 второй и третий подключи дешифрования равны аддитивным обращениям по модулю 216 второго и третьего подключей шифрования соответственно.
2. Для первых восьми раундов два последних подключа i-го раунда дешифрования равны двум последним подключам (9 – i)-го раунда шифрования.
Зашифрование и расшифрование в IDEA
Процесс шифрования предполагает два раунда и выходное преобразование. Один раунд состоит из преобразования входных блоков и субшифрования (см рис. 17). Основой субшифрования является основной строительный блок алгоритма – мультипликативно-аддитивная (МА) структура.

Рис.17. Раунд шифрования IDEA
Раунд начинается с преобразования, которое с помощью операции сложения и умножения связывает четыре входных подблока с четырьмя подключами. Это преобразование представлено серым прямоугольником вверху рисунка. Четыре выходных блока этого преобразования связываются операцией XOR с целью получения двух 2-битовых блоков, которые затем подаются на вход структуры МА, представленной на рисунке нижним серым прямоугольником. Кроме того, структура МА получает на входе два подключа, а в результате обработки всех полученных данных на выходе этой структуры генерируется два 2-битовых значения.
Наконец, четыре блока, полученных на выходе первого преобразования связываются с помощью операции XOR с двумя блоками, полученными на выходе структуры МА, и в результате имеется четыре выходных блока (W11..W14) данного раунда (см. рис.18).

Рис.18. Выходное преобразование IDEA
Выходное преобразование имеет структуру, подобную структуре той части предыдущего раунда шифрования, которая представлена на рисунке верхним серым прямоугольником. Единственное отличие в том, что второй и третий входные подблоки перед обработкой меняются местами. Фактически это означает отмену операции обмена, выполненной в конце второго раунда. Наличие этих лишних, по сути, перестановок обеспечивает возможность использования одной и той же структуры как для шифрования, так и для расшифрования. Кроме того, в отличие от предыдущих раундов на данной стадии используется не шесть подключей, а только четыре.
Подробно рассмотрим работу алгоритма. Выходы первого раунда расшифрования обозначим как (V11..V14). Промежуточные выходы первого раунда зашифрования и расшифрования обозначим соответственно как (I11..I14) и (J11..J14).
При шифровании на выходе функции выходного преобразования имеем
Y1 = W81Z49, Y2 = W83Z50, Y1 = W82Z51, Y4 = W84Z52.
При расшифровании на выходе первой подстадии первого раунда получаем
J11 = Y1U1, J12 = Y2U2, J13 = Y3U3, J14 = Y4U4.
Заменив соответствующие значения эквивалентными получим
J11 = Y1Z49-1 = W81 Z49Z49-1= W81,
J12 = Y2-Z50 = W83Z50-Z50 = W83,
J13 = Y3-Z51 = W82Z51-Z51 = W82,
J14 = Y4Z52-1 = W84 Z52Z52-1= W84.
Таким образом, выходные значения первой подстадии первого раунда расшифрования совпадают с входными данными последней стадии шифрования за исключением того, что второй и третий блок оказываются переставленными. Следующие соотношения:
W81 = I81MAR(I81I83, I82I84),
W82 = I83MAR(I81I83, I82I84),
W83 = I82MAL(I81I83, I82I84),
W84 = I84MAL(I81I83, I82I84),
Где MAR(X, Y) обозначает правое выходное значение структуры МА для входных значений X и Y, а MAL(X, Y) соответственно левое выходное значение. Тогда
V11 = J11MAR(J11J13, J12J14) =
= W81MAR(W81W82, W83W84) =
= I81MAR(I81I83, I82I84) MAR [I81MAR(I81I83, I82I84) I83MAR(I81I83, I82I84),
I82MAL(I81I83, I82I84) I84MAL(I81I83, I82I84)] =
= I81MAR(I81I83, I82I84) MAR(I81I83, I82I84) =
= I81.
Точно так же получаем V11 = I81, V12 = I83, V13 = I82, V14 = I84. Таким образом, выходные данные второй подстадии процесса расшифрования совпадают с входными значениями предпоследней стадии процесса шифрования за исключением перестановки второго и третьего блоков. Далее можно показать, что соотношение сохраняется для всех последующих подстадий вплоть до V81 = I11, V82 = I13, V83 = I12, V84 = I14. Наконец, входное преобразование процесса расшифрования эквивалентно преобразованию первой подстадии шифрования за исключением перестановки 2-3 блоков и результаты зашифрования/расшифрования совпадут.
3.3.5. Алгоритм AES (Rijndael)Алгоритм – победитель конкурса AES, объявленный в 2000 году, был разработан двумя бельгийскими криптографами Дименом (Daemen) и Рийменом (Rijmen). Эта криптосистема не является обобщением шифра Фейстеля. В основе алгоритма – повторяющиеся раунды, каждый из которых состоит из замен, перестановок и прибавления ключа. Кроме того, AES использует сильную математическую структуру: большинство его операций основано на арифметике поля . Однако в отличие от DES зашифрование и расшифрование в этом алгоритме – процедуры разные. Элементы поля хранятся в памяти компьютера в виде 8-битовых векторов (байтов). Например последовательность ‘1000 0011b’ соответствует многочлену X 7 + X + 1 над полем F2 или шестнадцатиричному числу ‘83h’.
Арифметические операции в поле соответствуют операциям над двоичными многочленами из F2[X] по модулю неприводимого многочлена
m(X) = X 8 + X 4 + X 3 + X + 1.
В алгоритме AES 32-битовые слова отождествляются с многочленами степени 3 из [X]. Отождествление делается в формате «перевертыш», то есть старший бит соответствует младшему коэффициенту многочлена. Так, например, слово
a0||a1||a2||a3
соответствует многочлену
a3X 3 + a2X 2 + a1X + a0.
Арифметика в алгоритме совпадает с арифметическими действиями в кольце многочленов [X] по модулю многочлена M(X) = X 4 + 1. Заметим, что многочлен M(X) = (X + 1)4 приводим, и, следовательно, арифметические действия в алгоритме отличны от операций поля, в частности, бывают пары ненулевых элементов, произведение которых равно 0.
AES – настраиваемый блочный алгоритм, который может работать с блоками из 128, 192 или 256 битов. Для каждой комбинации размера блока и размера ключа определено свое количество раундов. Здесь рассматривается самый простой вариант алгоритма, при котором блоки, как и ключ, состоят из 128 битов. В этом случае в алгоритме выполняется 10 раундов.
Алгоритм оперирует с внутренней байтовой матрицей размера 4 на 4, называемой матрицей состояний:
,
которую обычно записывают как вектор 32-битовых слов. Каждое слово в векторе представляет собой столбец матрицы. Подключи также хранятся в виде матрицы 4 на 4:
.
Операции алгоритма AES
Раундовая функция алгоритма действует с использованием четырех операций.
SubBytes. В алгоритме есть два типа S-блоков. Один применяется при зашифровании, а другой – при расшифровании. S-блоки имеют прозрачную математическую структуру. Они поочередно обрабатывают строки матрицы состояний s = [s7, ..., s0], воспринимая их как элементы поля . Их работа состоит из двух шагов.
Вычисляется мультипликативный обратный к элементу и записывается как новый байт x = [x7, ..., x0]. По соглашению, элемент [0, ..., 0], не имеющий обратного, остается неизменным.
Битовый вектор x при помощи линейного преобразования над полем F2 переводится в вектор y:
,
служащий выходом S-блока. Действия S-блока на стадии расшифрования состоят в обратном линейном преобразовании и вычислении мультипликативного обратного. Эти преобразования байтов можно осуществить, используя табличный поиск или микросхему, реализующую вычисление обратных элементов в и линейные преобразования.
ShiftRows. Операция осуществляет циклический сдвиг матрицы состояний. Каждая из ее строк сдвигается на свое число позиций. В рассматриваемой версии шифра это преобразование имеет вид:

Обратная операция – тоже циклический сдвиг, но в противоположном направлении. Данная операция является рассеивающим преобразованием на протяжении нескольких раундов.
MixColumns. Операция в сочетании с предыдущей является рассеивающим преобразованием и обеспечивает зависимось каждого выходного байта от каждого входного.
Каждый столбец матрицы представляется в виде многочлена степени 3 с коэффициентами из :
a(X) = a0 + a1X + a2X2 + a3X3.
Новый столбец получается умножением многочлена a(X) на фиксированный многочлен
с(x) = ‘02h’ + ‘01h’· X + ‘01h’· X2 + ‘03h’· X3.
по модулю многочлена M(X) = X 4 + 1. Так как умножение на многочлен линейная операция, ее можно представить в виде действия матрицы:
.
Матрица коэффициентов невырождена над , поэтому операция обратима, а обратимое к ней действие реализуется матрицей, обратной к выписанной.
AddRoundKey. Сложение с подключом осуществляется побайтово по модулю 2 для каждого байта матрицы состояний с соответствующим элементом матрицы подключа. обратная операция, очевидно, совпадает с исходной.
Структура раундов.
Шифрование в алгоритме AES запишется в псевдокоде следующим образом:
AddRoundKey(S,K[0]);
For i:= 1 to 9 do Begin SubBytes(S); ShiftRows(S); MixColumns(S); AddRoundKey(S,K[i]) End;
SubBytes(S);
ShiftRows(S);
AddRoundKey(S,K[10])
Блок открытого текста, предназначенный для шифрования, записывается в виде матрицы состояний S. Полученный в результате алгоритма шифротекст представляется той же матрицей. В последнем раунде операция MixColumns не осуществляется.
Процедура расшифрования в псевдокоде:
AddRoundKey(S,K[10]);
InverseSubBytes(S);
InverseShiftRows(S);
For i:= 1 to 9 do Begin AddRoundKey(S,K[i]); InverseMixColumns(S); InverseShiftRows(S);
InverseSubBytes(S) End;
AddRoundKey(S,K[0])
Развертывание ключа.
Основной ключ алгоритма состоит из 128 битов, а нам нужно произвести 10 подключей K1, ..., K10, каждый из которых включает в себя четыре 32-битовых слова. Здесь используется константа раунда RCi, вычисляющаяся по правилу
RCi = Xi (mod X 8 + X 4 + X 3 + X + 1).
Обозначим i-ый подключ через (W4i, W4i+1, W4i+2, W4i+3,). Основной ключ алгоритма делится на четыре 32-битовых слова (k0, k1, k2, k3), после чего подключи получаются в результате выполнения прведенного ниже алгоритма. В нем через RotBytes обозначена процедура циклического сдвига слова влево на 1 байт, а через SubBytes – применение S-блока из этапа шифрования к каждому байту слова.
W[0]:=K[0]; W[1]:=K[1]; W[2]:=K[2]; W[3]:=K[3];
For i:=1 to 10 do Begin T:=RotBytes(W[4*i-1]); T:=SubBytes(T); T:=TRC[i];
W[4*i]:=W[4*i-4] T;
W[4*i+1]:=W[4*i-3] W[4*i];
W[4*i+2]:=W[4*i-2] W[4*i+1];
W[4*i+3]:=W[4*i-1] W[4*i+2]; End
3.4. Принципы построения поточных шифровПоточные системы шифрования, в отличие от блочных не обладают таким недостатком, как возможность применения криптоанализа «со словарем», так как осуществляют позначное шифрование в алфавитах небольшой мощности. Кроме того, практика показывает, что пока лишь поточные шифры обеспечивают максимальные скорости шифрования, что важно при магистральном шифровании больших потоков информации.
3.4.1. Синхронизация поточных шифрсистемМногоалфавитные поточные шифры не распространяют ошибок при искажении отдельных знаков шифртекста, но оказываются неустойчивыми к пропускам/вставке знаков шифртекста, поскольку это приводит к неправильному расшифрованию всего текста, следующего за пропущенным/вставленным знаком. Поэтому с учетом наличия помех приходится решать проблему синхронизации процедур зашифрования и расшифрования.
По способу решения этой проблемы поточные шифрсистемы делят на синхронные и системы с самосинхронизацией.
В синхронных поточных шифрсистемах синхронизация достигается при помощи вставки в передаваемое сообщение специальных маркеров. В результате искажение не распространяется за пределы периода вставки маркеров.
Другое решение состоит в реинициализации состояний, как шифратора отправителя, так и шифратора получателя при некотором согласованном условии.
Примеры синхронных систем – регистры сдвига с обратной связью, дисковые шифраторы или шифрмашина Хагелина C-36.
Системы с самосинхронизацией чаще всего используются в режиме шифрования с обратной связью по шифртектсту (CFB), в котором текущее состояние системы зависит от некоторого числа N предыдущих знаков шифртекста. В этом случае потерянный в канале знак влияет на N последовательных состояний. После приема N правильных последовательных знаков из канала связи состояние приемного шифратора становится идентичным состоянию передающего шифратора.
3.4.2. Структура поточных шифрсистемПоточная система шифрования состоит из двух основных блоков:
Управляющий блок (генератор ключевой последовательности - гаммы).
Шифрующий блок (реализует преобразование, накладывающее гамму на шифртекст).
Обычно управляющая гамма представляет собой псевдослучайную последовательность (ПСП), удовлетворяющую некоторой рекуррентной зависимости. В общем случае рекуррентная последовательность (на заданном множестве А) определяется формулой
x(i + m) = f(x(i), …, x(i + m - 1)), i 0,
в которой f : Am A – некоторая функция от m переменных.
Для получения рекуррентных последовательностей используются различные датчики псевдослучайных чисел, например линейные и степенные конгруэнтные генераторы.
В настоящее время большинство генераторов ПСП реализовано на основе регистров сдвига с линейными функциями обратной связи РСЛОС. Применяются также регистры сдвига с нелинейными функциями обратной связи.
Требования, предъявляемые к блокам поточной шифрсистемы, нарушение которых приводит к появлению аналитических или статистических слабостей алгоритма шифрования.
Требования к управляющему блоку:
период управляющей гаммы должен превышать максимально возможную длину открытых сообщений, подлежащих шифрованию;
статистические свойства управляющей гаммы должны приближаться к свойствам случайной равновероятной последовательности;
в управляющей гамме должны отсутствовать простые аналитические зависимости между близко расположенными знаками;
криптографический алгоритм получения знаков управляющей гаммы должен обеспечивать высокую сложность определения секретного ключа.
Требование к шифрующему блоку:
применение алгоритма шифрования должно носить универсальный характер и не зависеть от вида шифруемой информации.
Иногда выдвигается дополнительное требование:
способ построения шифрующего блока должен обеспечивать криптографическую стойкость шифра при перекрытиях управляющей гаммы, в частности при повторном использовании ключей.
Выполнение данных требований является необходимым, но не достаточным условием криптографической стойкости поточного шифра.
3.4.3.Регистры сдвига с обратной связьюРегистр сдвига с обратной связью состоит из двух частей: регистра сдвига и функции обратной связи.

Рис 19. Регистр сдвига с обратной связью
В общем случае регистр сдвига представляет собой последовательность некоторых элементов кольца или поля. Наиболее часто применяются битовые регистры сдвига. Длина такого регистра выражается числом битов. При каждом извлечении бита все биты регистра сдвигаются вправо на одну позицию. Новый старший бит рассчитывается как функция всех остальных битов регистра. Выходом обычно является младший значащий бит. Периодом регистра сдвига называют длину выходной последовательности до начала ее повторения.
Простейший тип регистров сдвига – регистр сдвига с линейной обратной связью (РСЛОС или ЛРС). Обратная связь – простая операция XOR над некоторыми битами регистра. Перечень этих битов определяется характеристическим многочленом и называется последовательностью отводов. Иногда такую схему называют конфигурацией Фибоначчи.

Рис.20. РСЛОС конфигурации Фибоначчи
При программной реализации РСЛОС пользуются модифицированной схемой: для генерации нового значащего бита вместо использования битов последовательности отводов над каждым ее битом выполняется операция XOR с выходом генератора, заменяя старый бит последовательности отводов. Такую модификацию иногда называют конфигурацией Галуа.

Рис.21. РСЛОС конфигурации Галуа
n-битовый РСЛОС может находиться в одном из 2n – 1 внутренних состояний. Это значит, что теоретически такой регистр может генерировать псевдослучайную последовательность с периодом 2n – 1 битов (заполнение нулями совершенно бесполезно). Прохождение всех 2n – 1 внутренних состояний возможно только при определенных последовательностях отводов. Такие регистры называют РСЛОС с максимальным периодом. Для обеспечения максимального периода РСЛОС необходимо, чтобы его характеристический многочлен был примитивным по модулю 2. Степень многочлена является длиной регистра сдвига. Примитивный многочлен степени n – это такой неприводимый многочлен, который является делителем , но не является делителем xd + 1 для всех d, являющихся делителями 2n – 1. (При обсуждении многочленов термин простое число заменяется термином неприводимый многочлен). Характеристический многочлен приведенных на рисунках РСЛОС:
x32 + x7 + x5 + x3 + x2 + x + 1
примитивен по модулю 2. Период такого регистра будет максимальным, циклически проходя все 232 – 1 значений до их повторения. Наиболее часто используются прореженные многочлены, т.е. у которых есть только некоторые коэффициенты. наиболее популярны трехчлены.
Важным параметром генератора на базе РСЛОС является линейная сложность. Она определяется как длина n самого короткого РСЛОС, который может имитировать выход генератора. Линейная сложность важна, поскольку при помощи простого алгоритма Берленкемпа-Мэсси можно воссоздать такой РСЛОС, проверив всего 2n битов гаммы. С определением нужного РСЛОС поточный шифр фактически взламывается.
Помимо РСЛОС применяются и регистры сдвига с нелинейной обратной связью, обратной связью по переносу и пр.
Ряд генераторов разработан на основе теоретико-числового подхода (генераторы Блюма-Микали, RSA, BBS, сжимающие, аддитивные генераторы и пр.).
Математическое обеспечение синтеза поточных криптографических алгоритмов разработано более полно и подробно по сравнению с блочными криптоалгоритмами. Тем не менее для создания поточных шифров зачастую используют блочные криптоалгоритмы в режимах OFB или CFB.
3.4.4. Алгоритм Берленкемпа-МессиПусть P – некоторое поле, e – единица поля P. Обозначим через начальный отрезок произвольной последовательности u элементов поля P. Будем говорить, что многочлен

вырабатывает отрезок , если
,
то есть данный отрезок последовательности является отрезком некоторой линейной рекуррентной последовательности с характеристическим многочленом G(x). Алгоритм Берленкемпа-Месси строит многочлен G(x) наименьшей степени, вырабатывающий отрезок .
Определим функцию умножения последовательности на многочлен. Для произвольного многочлена и последовательности v положим H(x) · v = w, где

Многочлен G(x) вырабатывает l m знаков последовательности u, если выполняется равенство

то есть если первые l – m знаков последовательности v равны нулю, а следующий за ними отличен от нуля.
Для многочлена G(x) P[x] степени m и последовательности u введем параметры lu(G) и ku(G) = lu(G) – m N {0, +}, где lu(G) – число знаков последовательности u, вырабатываемых многочленом G(x). Ясно, что ku(G) – максимальное число первых подряд идущих нулей в последовательности G(x) · u (либо ).
Будем индуктивно строить последовательность многочленов G0(x), G1(x), … неубывающих степеней 0 = m0 < m1 m2 … .
Начальные условия: G0(x) = e, m0 = 0.
Этап 1. Если

то полагаем

Если G1(x)·u = 0, то есть если ku(G1) = , то G1(x) – искомый минимальный многочлен ЛРП u. В противном случае строим G2(x).
Этап t + 1. пусть многочлены G0(x), …, Gt(x) уже построены, и степень многочлена Gj(x) равна mj, причем 0 = m0 < m1 m2 … mt. Пусть выполняются соотношения
Определим число s = s(t) так, чтобы выполнялись условия mt = mt - 1 = … = ms + 1 > ms (такое s найдется, так как m1 > m0). Положим

Если Gt+1(x)·u = 0, то нужный многочлен построен. В противном случае строим Gt+2(x).
Теорема: Если u – линейная рекуррентная последовательность над полем P с минимальным многочленом степени m, то F(x) = G(x) для некоторого подходящего значения 2m – 1 – k0.
3.4.5. Усложнение линейных рекуррентных последовательностейНесмотря на достаточно большой период и хорошие статистические качества, линейные рекуррентные последовательности имеют простое строение (ярко выраженная аналитическая связь между предыдущими и последующим элементами последовательности). Поэтому в криптографических приложениях используют различные способы усложнения аналитического строения линейных рекуррент.
Основной подход, применяемый при проектировании генератора гаммы на базе РСЛОС, прост. Сначала берется один или несколько РСЛОС, обычно с различными длинами и различными характеристическими многочленами. (Если длины взаимно просты, а все многочлены обратной связи примитивны, то у сконструированного генератора будет максимальный период). Ключ является начальным состоянием регистров. Выходной бит представляет собой функцию, желательно нелинейную, некоторых битов РСЛОС.
Если выходной бит является функцией единственного РСЛОС, то генератор называется фильтрующим генератором.

Рис.22. Фильтрующий генератор
Если выходной бит является функцией нескольких РСЛОС, то генератор называется комбинирующим генератором.

Рис.23. Комбинирующий генератор
Еще один тип генераторов представляет собой композицию РСЛОС. В данной схеме выход одного из регистров подается на вход другого регистра.

Рис.24. Генератор на основе композиции регистров сдвига
Кроме перечисленных схем усложнения применяются и другие схемы (с динамическим изменением закона рекурсии, с элементами памяти и пр.).
3.5. Современные поточные криптоалгоритмыКраткие сведения о некоторых наиболее известных поточных криптоалгоритмах, считающихся относительно стойкими, сведены в табл.7.
Таблица 7. Стойкие поточные криптоалгоритмы
№пп Алгоритм Описание
1 Каскад Голлмана Усиленная версия генератора «старт-стоп». Последовательное соединение РСЛОС
2 А5 Комбинация трех РСЛОС с изменяемым управлением тактированием
3 Nanoteq На основе одного РСЛОС
4 Rambutan Предположительно на основе РСЛОС
5 Pike На основе трех аддитивных генераторов
6 Mush Взаимно сжимающий генератор
7 RC4 S-блочная замена в режиме OFB. Эффективен для программной реализации
8 SEAL На основе таблиц SHA. Эффективен для программной реализации. Наиболее быстрый алгоритм
9 WAKE S-блочная замена в режиме CFB. Эффективен для программной реализации
10 Генератор Блюма-Микали На основе трудности решения задачи дискретного логарифмирования
11 Генератор RSA На основе трудности решения задачи факторизации
12 Генератор BBS На основе трудности решения задачи факторизации
3.5.1. Алгоритм ГиффордаАлгоритм построен на основе единственного 8-байтового регистра сдвига и работает в режиме OFB. Ключевая гамма генерируется побайтово. Схема работы алгоритма приведена на рис. 25.

Рис.25. Алгоритм Гиффорда
Характеристический многочлен регистра не примитивен и потому может быть вскрыт.
3.5.2. Алгоритм A5Алгоритм построен на основе трех РСЛОС длины 19, 22 и 23 с последовательностью «стоп/вперед», управляющей движением регистров. В каждом такте сдвигаются по меньшей мере два регистра. Схема приведена на рис. 26.

Рис.26. Алгоритм А5
Алгоритм используется в системах связи стандарта GSM для шифрования трафика между абонентом и базовой станцией.
3.6. Режимы использования шифровДля решения разнообразных криптографических задач блочные шифры используют в нескольких режимах работы. Рассмотрим этот вопрос на примере шифра DES.
Алгоритм DES может использоваться в следующих четырех режимах:
—режим электронной кодовой книги (ЕСВ — Electronic Code Book);
—режим сцепления блоков (СВС — Cipher Block Chaining);
— режим обратной связи по шифртексту (CFB — Cipher Feed Back);
—режим обратной связи по выходу (OFB — Output Feed Back).
Режим электронной кодовой книги (ЕСВ) отвечает обычному использованию DES как блочного шифра, осуществляющего некоторую простую замену блоков открытого текста. В режиме сцепления блоков (СВС) каждый блок Ci, i>1, шифртекста перед очередным зашифрованием складывается по модулю 2 со следующим блоком открытого текста Мi . При этом вектор С0 полагается равным начальному вектору IV (Initial Vector). Начальный вектор меняется ежедневно и хранится в секрете. Блоки С,,С2,... вырабатываются по рекуррентной формуле
Сi = DESk (Ci-1 Mi).


Рис.27. Режим CBC
В режимах CFB и OFB алгоритм DES функционирует по аналогии с "шифром Вернама", в режиме OFB — как синхронный шифр, в режиме CFB — как шифр с самосинхронизацией.
В режиме CFB вырабатывается блочная "гамма" Z0,Z1,..., причем Z0 полагается равным начальному вектору IV, а при i ≥ 1 блоки гаммы удовлетворяют соотношению Zi = DESk(Ci-1). Блоки открытого текста шифруются по правилу Ci = Mi Zi, i ≥ 1.


Рис.28. Режим CFB
В режиме OFB вырабатывается блочная "гамма" Z0,Z1, ..., причем Z0 полагается равным начальному вектору IV, а при i ≥ 1 блоки гаммы удовлетворяют соотношению Zi = DESk (Zi-1). Блоки открытого текста шифруются по правилу Ci=Mi Zi, i ≥ 1.


Рис.29. Режим OFB
Кроме перечисленных режимов, DES имеет также "режим т-битовой обратной связи", 1 ≤ т ≤ 64 . Этот режим оперирует с m-битовыми блоками. Входной блок (64-битовый регистр сдвига) вначале содержит вектор инициализации IV, "выровненный по правому краю".

Рис.30. Режим m-битовой обратной связи
Блоки открытого текста шифруются по правилу Сi = Mi Pi, где Pi — вектор, состоящий из т старших битов блока DESk (Сi-1). Обновление заполнения регистра сдвига осуществляется путем отбрасывания старших т битов и дописывания справа вектора Pi.
Указанные режимы имеют свои достоинства и недостатки. Основное достоинство режима ЕСВ — простота реализации. Недостаток — в возможности проведения криптоанализа "со словарем ". Дело в том, что вследствие большой избыточности в открытом тексте вполне возможны повторения 64-битовых блоков. Это приводит к тому, что одинаковые блоки открытого текста будут представлены идентичными блоками шифртекста, что дает криптоаналитику возможность при наличии достаточно большого числа пар открытого и шифрованного текста восстанавливать с большой вероятностью блоки открытого текста по шифртексту.
В режимах ЕСВ и OFB искажение при передаче одного 64-битового блока шифртекста С, приводит к искажению после расшифрования соответствующего блока Mi открытого текста, но не влияет на следующие блоки. Это свойство используется для шифрования информации, предназначенной для передачи по каналам связи с большим числом искажений. Вместе с тем при использовании режима OFB остается открытым вопрос о периоде получаемой выходной гаммы, который в некоторых предположениях может составлять величину порядка 232.
В режимах СВС и CFB искажение при передаче одного блока шифртекста Сi приводит к искажению на приеме не более двух блоков открытого текста — Мi, Mj+1 . В то же время изменение блока Mi приводит к тому, что Ci и все последующие блоки шифртекста будут искажены. Это свойство оказывается полезным для целей аутентификации. Такие режимы применяются для выработки кода аутентификации сообщения. Так, в режиме СВС берется вектор инициализации, состоящий из одних нулей. Затем с помощью ключа k вырабатываются блоки Ci,...,Cn шифртекста. Кодом аутентификации сообщения (КАС) служит блок Сп.
Если требуется обеспечить лишь целостность сообщения, отправитель передает блоки М1,...,Мп вместе с Сп. Тогда противнику, желающему изменить сообщение, нужно соответствующим образом изменить и блок Сп. Возможность этого маловероятна, если только противник не располагает секретным ключом k.
Если же нужно обеспечить шифрование и аутентификацию, то отправитель сначала использует ключ k1 для выработки КАС, затем шифрует последовательность блоков М1,...,Мп, Мп+1 = КАС на втором ключе k2, и получает последовательность блоков С1,...,Сn,Сn+1. Получатель должен сначала расшифровать С1,...,Сп,Сп+1 на ключе k2, а затем проверить (с помощью k ), что Мп+1 — это КАС для М0, ... , Мn.
Можно поступить и иначе: сначала использовать k для зашифрования М1,..., Мn, получая С1,..., Сn, а затем k2 — для получения КАС. Получатель же будет использовать k2 для проверки КАС, а затем k — для расшифрования C1, .. ,Cn.
Во всех перечисленных режимах вместо алгоритма DES может быть использован любой алгоритм блочного шифрования, в частности российский стандарт ГОСТ 28147-89.
В российском стандарте также предусмотрено несколько режимов использования: режим простой замены, режим шифрования с обратной связью и режим гаммирования с обратной связью, которые являются аналогами соответственно режимов ЕСВ, СВС и CFB. Для того чтобы избавиться от указанной выше проблемы неопределенности длины периода гаммы в режиме OFB, в российском стандарте введен режим гаммирования, при котором блочный шифр используется в качестве узла усложнения некоторой последовательности гарантированного периода. Для выработки этой последовательности обычно применяются линейные регистры сдвига или счетчики по некоторому модулю.

Рис.31. Режим гаммирования
Уравнение шифрования имеет вид
Ci = Mi. F(γi), i = 1,2,...,
где F — преобразование, осуществляемое блочным шифром, γi - блоки, сформированные узлом выработки исходной гаммы из начального вектора γ1, который передается в начале сообщения в открытом или зашифрованном виде.
Ошибка при передаче, состоящая в искажении символа, приводит при расшифровании к искажению только одного блока, поэтому сохраняются все преимущества шифра гаммирования.
Контрольные вопросыВ чем различие между поточными и блочными шифрами?
Какие шифры удобнее в программной, а какие в аппаратной реализации?
Какие требования предъявляются к шифрующим преобразованиям блочных шифров?
В чем суть рассеивающих и перемешивающих преобразований при блочном шифровании?
Назовите основные параметры блочных шифров.
Какие виды поточных шифров могут быть эффективно реализованы программно?
Какие требования предъявляются к генераторам псевдослучайной последовательности?
Какие требования предъявляются к функции шифрования поточного шифра?
Какие режимы шифрования не распространяют искажений?
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.
4.2.3. Криптосистема Эль-Гамаля.
4.2.4. Криптосистема Рабина.
4.2.5. Рюкзачные криптосистемы.
4.2.6. Шифрсистема Мак-Элиса.
4.1. Математические основы асимметричной криптографииПреимущество систем с открытым ключом состоит в том, что ключ не требуется сохранять в тайне. Необходимо лишь обеспечить его аутентичность, что сделать, как правило, легче, чем обеспечить рассылку секретных ключей.
Системы шифрования с открытым ключом осуществляют блочное шифрование, поэтому открытый текст перед шифрованием разбивается на блоки.
Ассиметричные системы шифрования обеспечивают значительно меньшие скорости шифрования, нежели симметричные, в силу чего они обычно используются не для шифрования сообщений, а для шифрования пересылаемых сеансовых секретных ключей, которые затем используются в симметричных системах шифрования.
Для понимания принципов построения асимметричных криптосистем необходимо повторить некоторые понятия алгебры и алгоритмы теории чисел.
4.1.1. Свойства операций Рассмотрим основные свойства арифметических операций, определенных на некотором множестве А.
*, - обозначение операций.
Замкнутость:
Ассоциативность:
Наличие нейтрального элемента A:
Существование обратного элемента A:
Коммутативность:
Дистрибутивность операции относительно операции *:
Группы, кольца.
Определение. Группа – множество G с операцией, которая: замкнута, обладает нейтральным элементом, ассоциативна. Группу с коммутативной операцией называют коммутативной или абелевой.
Практически все группы в криптографии – абелевы. Обозначение группы: (G, знак операции).
Мультипликативная группа (G, · ):
Групповая операция – умножение · ;
Нейтральный элемент – единица 1 ;
Обратный элемент – a-1;
Многократное применение операции – возведение в степень
a5 = a · a · a · a · a.
Аддитивная группа (G, + ):
Групповая операция – сложение + ;
Нейтральный элемент – ноль 0 ;
Обратный элемент – – a;
Многократное применение операции – умножение
5 · a = a + a + a + a + a.
Образующая g – такой элемент группы, что любой другой элемент может быть получен путем многократного применения к нему групповой операции. Запись .
В мультипликативной группе:
В аддитивной группе:
Определение. Кольцо – множество R с двумя операциями: сложением и умножением, в котором обе операции замкнуты, ассоциативны, обладают нейтральным элементом, связаны законом дистрибутивности, а сложение коммутативно и для каждого элемента есть обратный по сложению. Обозначение кольца (R, ·, +).
В коммутативном кольце операция умножения дополнительно обладает свойством коммутативности.
Основное кольцо, важное для криптологии – коммутативное кольцо остатков от деления на натуральное число n, большее 1, которое также называют кольцом вычетов по модулю n и обозначают Zn или Z/nZ.
4.1.2. Функция Эйлера. Поле. Теоремы Эйлера - Лагранжа и ФермаОдна из центральных задач арифметики остатков - решение сравнения:
a · x b (mod n)
- Если НОД (a, n) = 1, то существует ровно одно решение, и оно находится с помощью a-1: так как
a · a-1 1 (mod n),
то, домножив обе части сравнения на a-1, получим
x b · a-1 (mod n).
- Если НОД (a, n) = g 1 и g | b, то сравнение имеет g решений. Чтобы их найти нужно разделить исходное сравнение на g:
a’ · x’ b’ (mod n’),
где a’ = a / g, b’ = b / g, n’ = n / g. Если x’ – решение полученного сравнения, то решение исходного сравнения - любое число вида
x = x’ + i · n’,
где i = 0, 1, ..., g – 1.
- В других случаях решений нет.
Пример:
7 · x 3 (mod 143) – одно решение,
11 · x 3 (mod 143) – решений нет,
11 · x 22 (mod 143) – 11 решений.
Ситуация с единственным решением наиболее интересна для криптологии, поэтому важно знать количество элементов кольца, взаимно простых с его модулем. Оно дается функцией Эйлера и равно (n). Значение (n) можно легко найти по разложению числа n на простые множители. Если
,
где pi – различные простые числа, то

Функция Эйлера для любого n > 2 имеет четное значение.
- наибольшее подмножество элементов, образующих группу по умножению # = (n). (количество элементов мультипликативной группы кольца вычетов по модулю n равно (n)).
Особый интерес представляют частные случаи:
Если p простое, то (p) = p – 1.
Если p и q – простые и p q, то (p · q) = (p – 1)(q – 1).
Если p - простое число, то любой элемент в Zp (или Z/pZ) обладает мультипликативным обратным. Кольца с такими свойствами называются полями.
Определение. Полем называется множество (F, ·, +) с двумя операциями, обладающее свойствами:
- (F, +) – абелева группа с нейтральным элементом 0,
- (F \ {0}, ·) – абелева группа с нейтральным элементом 1,
- (F, ·, +) удовлетворяет закону дистрибутивности (умножение дистрибутивно относительно сложения).
Поле – коммутативное кольцо, в котором каждый ненулевой элемент обратим. Каждый ненулевой элемент кольца Zp взаимно прост с p, так как p простое и, следовательно, обратим. Значит Zp – конечное поле, которое обычно называют полем вычетов по модулю p и обозначают Fp = {0, 1, ..., p – 1}. Мультипликативная группа = {1, ..., p – 1} поля вычетов содержит все ненулевые элементы Fp.
Теорема Лагранжа. .
Обобщение Эйлера для малой теоремы Ферма. , при НОД(x, n) = 1.
Малая теорема Ферма. .
4.1.3. Конечные поляЦелые числа по простому модулю – не единственный пример конечных полей. Более общий тип полей используется при рассмотрении таких криптосистем как AES, поточных шифров на основе РСЛОС и криптосистем, на основе эллиптических кривых.
Рассмотрим множество многочленов от переменной x с коэффициентами из Fp. Это множество обозначается через Fp[x] и образует кольцо относительно естественных операций суммы и умножения многочленов. Особый интерес представляет случай p = 2.
Пример. В кольце F2[x] выполнены равенства:

Зафиксируем многочлен f(x) и будем рассматривать остальные элементы кольца Fp[x] по модулю f(x). Как и натуральные числа по модулю n, возможные остатки от деления на многочлен f(x), будут образовывать кольцо. Оно обозначается через Fp[x]/f(x)Fp[x] (по аналогии с Z/nZ).
Пример. f(x) = x4 + 1 и p = 2. Тогда

так как

По аналогии с целыми числами по модулю n, где рассматривалось сравнение
a · x b (mod n)
можно поставить аналогичный вопрос и для многочленов. Пусть a, b и f – многочлены из Fp[x]. Существование решения уравнения
a · b (mod f)
также зависит от НОД (a, f) и также возможны три ситуации. Наиболее интересна ситуация, когда НОД (a, f) = 1.
Многочлен называется неприводимым, если у него нет делителей, отличных от него самого и констант. Неприводимость многочленов - то же самое, что и простота целых чисел. Кольцо Fp[x]/f(x)Fp[x] является конечным полем тогда и только тогда, когда многочлен f(x) неприводим.
Рассмотрим два неприводимых многочлена над полем F2
и .
Возникают два конечных поля
F1 = Fp[x]/f1(x)Fp[x] и F2 = Fp[x]/f2(x)Fp[x],
каждое состоит из 27 двоичных многочленов (каждый имеет ровно 7 коэффициентов равных 1 или 0), степень которых не превосходит 6. Сложение в обоих полях выглядит одинаково, поскольку при вычислении суммы складываются коэффициенты многочленов по модулю 2. А вот умножаются элементы этих полей по разному:

Действительно ли различны поля F1 и F2 или это только кажущееся различие?
Изоморфны ли поля F1 и F2?
Изоморфизм: отображение : F1 F2, удовлетворяющее двум требованиям:

Для построения изоморфизма между F1 и F2 достаточно показать как выражается корень f2(x) в виде многочлена от корня f1(x).
Изоморфизм существует между любыми двумя конечными полями с одинаковым числом элементов. Все конечные поля совпадают либо с целыми числами по простому модулю, либо с многочленами по модулю неприводимого многочлена.
Теорема. Существует единственное (с точностью до изоморфизма) конечное поле с числом элементов равным степени простого числа.
Конечное поле из q = pd элементов обозначается символом Fq или GF(q) (поле Галуа из q элементов).
Любое конечное поле K содержит в себе экземпляр поля целых чисел по некоторому простому модулю p, который называется простым подполем поля K. Число элементов простого подполя называется характеристикой поля и обозначается через char K. В частности char Fp = p. На конечном поле характеристики p можно определить отображение Фробениуса:
Ф: Fq Fq, Ф() = (p)
которое является автоморфизмом (изоморфизмом поля с самим собой). Множество элементов из Fq, остающихся неподвижными при действии Ф, совпадает с его простым подполем:
{ Fq| p = } = Fp.
Это утверждение – обобщение малой теоремы Ферма на случай любых конечных полей.
Ненулевые элементы конечного поля составляют конечную абелеву циклическую группу . Образующая этой группы называется примитивным элементом конечного поля. Примитивный элемент есть в любом конечном поле, их может быть и несколько. Всегда можно найти такой элемент g Fq, что любой ненулевой элемент Fq будет представляться в виде
= gx
при некотором целом показателе x.
Пример. В поле из восьми многочленов
.
В нем существует 7 ненулевых элементов, а именно
1, , + 1, 2, 2 + 1, 2 + , 2 + + 1,
где - корень многочлена x3 + x + 1 (искусственно введенный элемент, удовлетворяющий соотношению 3 + + 1 = 0, в котором все действия выполняются по модулю 2).
Тогда:
1 = ,
2 = 2,
3 = + 1,
4 = 2 + ,
5 = 2 + 1,
6 = 2 + + 1,
7 = 1
и - примитивный элемент поля . Целые числа по модулю p также имеют примитивный элемент, так как Fp – конечное поле.
4.1.4. Основные алгоритмыНахождение НОД не составляет проблем, если известно разложение чисел на простые множители или многочленов на неприводимые многочлены, но разложение на простые множители или неприводимые многочлены (факторизация) – очень трудоемкая операция.
Алгоритм разложения чисел на простые множители.
Алгоритм А (Разложение на простые множители путем деления). По данному положительному целому числу N этот алгоритм находит простые множители p1 ≤ р2 ≤ … ≤ pt числа N. В этом методе используется вспомогательная последовательность пробных делителей
d = d0 < d1 < d2 < d3 < …,
которая включает в себя все простые числа < (и, если это удобно, может содержать числа, не являющиеся простыми). Последовательность чисел di должна также содержать по крайней мере одно значение, такое, что dk > .
А1. [Начальная установка.] Присвоить t ← 0, k ← 0, n ← N. (В ходе выполнения алгоритма переменные t, k, n подчинены следующим условиям: "n = N/p1...pt и n не имеет простых множителей, меньших dk".)
А2. [n = 1?] Если n = 1, алгоритм заканчивается.
A3. [Разделить.] Присвоить q ←, r ← n mod dk. (Здесь q и r - соответственно частное и остаток от деления числа n на dk.)
А4. [Остаток равен нулю?] Если r ≠ 0, то перейти к шагу А6.
А5. [Множитель найден.] Увеличить t на 1 и присвоить pt ← dk, n ← q. Возвратиться к шагу А2.
А6. [Частное мало?] Если q > dk, увеличить k на 1 и возвратиться к шагу A3.
А7. [n — простое число.] Увеличить t на 1, присвоить pt ← n и завершить выполнение алгоритма.

Рис.32. Алгоритм разложения числа на простые множители
Пример.
Разложение на простые множители числа N = 25852. Сразу же находим, что N = 2 · 12926; следовательно, р1 = 2. Далее, 12926 = 2 · 6463, так что р2 = 1. Но теперь число n = 6463 не делится на числа 2, 3, 5, ..., 19; находим, что n = 23 · 281; значит, р3 — 23. В итоге имеем 281 = 12 · 23 + 5 и 12 ≤ 23, т. е. р4 = 281.
Алгоритм Евклида
Разделить целое число a на число b с остатком – это значит найти такие числа q и r c 0 r < |b|, при которых выполняется равенство
a = q · b + r.
Разделить многочлен f на многочлен g с остатком – это значит найти такие многочлены q и r c 0 deg r < deg g, при которых выполняется равенство
f = q · g + r.
Для вычисления НОД(r0 = a, r1 = b) производится деление с остатком по следующей схеме:
a = r0 = q1r1 + r2,
b = r1 = q2r2 + r3,
.....
rm-2 = qm-1bm-1 + rm,
rm-1 = qmrm.
Работа алгоритма Евклида основана на том, что отображение сохраняет наибольший общий делитель.
Отображение работает до a = НОД, b = 0.
Пример.
НОД(21, 12) = НОД (21 (mod 12), 12) =
= НОД(12, 9) = НОД (12 (mod 9), 9) =
= НОД(9, 3) = НОД (9 (mod 3), 3) =
= НОД(3, 0) = 3
Работа бинарного алгоритма нахождения НОД основана на следующем ряде отображений, также сохраняющих НОД:

Отображения работают до (a – b) /2 = 0. НОД = b.
Пример.
НОД(21, 12) = НОД (21, 12 / 2) =
= НОД(21, 6) = НОД (21, 6 / 2) =
= НОД(21, 3) = НОД ((21 – 3) / 2, 3) =
= НОД(9, 3) = НОД ((9 – 3) / 2, 3) =
= НОД(3, 3) = НОД ((3 – 3) / 2, 3) =
= НОД(0, 3) = 3
Во всех вышеперечисленных рассуждениях принимается a b.
Расширенный алгоритм Евклида
Позволяет найти не только НОД(a, b), но и мультипликативный обратный к b по модулю a. Преобразуем формулы для алгоритма Евклида, выразив все остатки ri через a и b:
r2 = r0 – q1r1 = a – q1b,
r3 = r1 – q2r2 = b – q2(a – q1) = – q2a + (1 + q1 q2)b,
.....
ri-2 = si-2a + ti-2b,
ri-1 = si-1a + ti-1b,
ri = ri-2 – qi-1ri-1 = a(si-2 – qi-1si-1) + b(ti-2 – qi-1ti-1)
.....
rm = sma + tmb.
Расширенный алгоритм Евклида по данным целым числам a и b выдает rm, sm и tm, так что
rm = НОД(a, b) = sma + tmb.
При НОД(a, b) = 1; 1 tmb (mod a); b – 1 tm (mod a).
Пример.
r2 = 5 = 19 – 2 · 7,
r3 = 2 = 7 – 5 = 7 – (19 – 2 ·7) = – 19 + 3 · 7,
r4 = 1 = 5 – 2 · 2 = (19 – 2 ·7) – 2 · (– 19 + 3 · 7) = 3 · 19 – 8 · 7.
Отсюда 1 – 8 · 7 (mod 19),
так что 7–1 – 8 11 (mod 19).
4.1.5. Алгоритмы нахождения НОД и мультипликативного обратного по модулюАлгоритм Евклида
Алгоритм А. (Алгоритм Евклида в современной редакции). По данным неотрицательным целым числам u и v этот алгоритм находит их наибольший общий делитель.
A1. [v = 0?] Если v = 0, то выполнение алгоритма заканчивается, а в качестве результата возвращается число u.
A2. [Взять u mod v.] Присвоить r u mod v, u v, v r и вернуться к шагу A1. (В результате выполняемых на этом шаге операций значение v уменьшается, значение НОД(u, v) остается неизменным.)
Бинарный алгоритм НОД.
Алгоритм B. (Бинарный алгоритм нахождения наибольшего общего делителя). По данным неотрицательным целым числам u и v этот алгоритм находит их наибольший общий делитель. (Использует знаковое представление чисел).
B1. [Найти степень 2.] Присвоить k 0, затем повторно присваивать k k + 1, u u / 2, v v / 2 нуль или более раз до тех пор, пока одно или оба числа u и v станут нечетными.
B2. [Начальная установка.] (Исходные значения чисел u и v уже разделены на 2k, и по крайней мере одно из текущих значений нечетно.) Если нечетно u, то присвоить t v и перейти к шагу B4. В противном случае присвоить t u.
B3. [Уменьшить t наполовину.] (Здесь t четно и не нуль.) Присвоить t t / 2.
B4. [t четно?] Если t четно, то вернуться к шагу B3.
В5. [Установить max(u, v) заново.] Если t > 0, то присвоить u t, в противном случае присвоить v t. (Большее из чисел u и v заменяется на |t| за исключением, возможно, первого выполнения этого шага.)
B6. [Вычесть.] Присвоить t u – v. Если t 0, то вернуться к шагу B3. В противном случае алгоритм останавливает выполнение, а на выходе будет u · 2k.

Рис.33. Бинарный алгоритм НОД
Расширенный алгоритм Евклида.
Алгоритм X. (Обобщенный алгоритм Евклида). Для заданных целых чисел u и v этот алгоритм определяет вектор (u1, u2, u3), такой, что uu1 + vu2 = u3 = НОД(u, v). В процессе вычисления используются вспомогательные векторы (v1, v2, v3), (t1, t2, t3); действия производятся таким образом, что в течение всего процесса вычисления выполняются соотношения
ut1 + vt2 = t3uu1 + vu2 = u3uv1 + vv2 = v3.
X1. [Начальная установка.] Присвоить (u1, u2, u3) (1, 0, u), (v1, v2, v3) (0, 1, v).
X2. [v3 = 0?] Если v3 = 0, то выполнение алгоритма заканчивается.
X3. [Разделить и вычесть.] Присвоить , затем присвоить
(t1, t2, t3) (u1, u2, u3) – (v1, v2, v3) · q,
(u1, u2, u3) (v1, v2, v3),
(v1, v2, v3) (t1, t2, t3).
Возвратиться к шагу X2.
Расширенный бинарный алгоритм НОД.
Алгоритм Y. Модификация алгоритма X с использованием принципов алгоритма B. Для заданных целых чисел u и v этот алгоритм определяет вектор (u1, u2, u3), такой, что uu1 + vu2 = u3 = НОД(u, v). В процессе вычисления используются вспомогательные векторы (v1, v2, v3), (t1, t2, t3); в течение всего процесса вычисления так же, как и в X выполняются соотношения
ut1 + vt2 = t3uu1 + vu2 = u3uv1 + vv2 = v3.
(Использует знаковое представление чисел).
Y1. [Найти степень 2.] То же, что в шаге B1.
Y2. [Начальная установка.] Присвоить (u1, u2, u3) (1, 0, u), (v1, v2, v3) (v, 1 – u, v). Если число u нечетно, присвоить (t1, t2, t3) (0, –1, –v) и прейти к шагу Y4. В противном случае присвоить (t1, t2, t3) (1, 0, u).
Y3. [Выполнить половинное деление t3.] Если t1 и t2 четны, присвоить (t1, t2, t3) (t1, t2, t3)/2; иначе присвоить (t1, t2, t3) (t1 + v, t2 – u, t3)/2. (В последнем случае t1 + v и t2 – u будут оба четными.)
Y4. [t3 четно?] Если t3 четно, вернуться к шагу Y3.
Y5. [Переустановить max(u3 v3).] Если t3 положительно, присвоить (u1, u2, u3) (t1, t2, t3); иначе присвоить (v1, v2, v3) (v – t1, – u – t2, – t3).
Y6. [Вычесть.] Присвоить (t1, t2, t3) (u1, u2, u3) – (v1, v2, v3). Затем, если t1 0, присвоить (t1, t2) (t1 + v –, t2 – u). Если t3 0, вернуться к шагу Y3. В противном случае закончить выполнение алгоритма с результатом, равным (u1, u2, u3 · 2k).
4.1.6. Китайская теорема об остаткахДля двух cравнений.
Система cравнений

при НОД(m, n) = 1 имеет единственное решение по модулю m · n, которое определяется по формулам:

Пример.

T = 7-1(mod 5) = 2-1 (mod 5) = 3 (mod 5),
u = (3 – 4) · 3 (mod 5) = 4 · 3 (mod 5) = 2 (mod 5),
x (mod 35) = 4 + 2 · 7 = 18.
Общий случай КТО.
Пусть m1, ..., mr и a1, ..., ar – целые числа, причем все mi попарно взаимно просты.
Нужно найти такой x по модулю M = m1·m2·...·mr, что
x = ai (mod mi) для всех i.
Решение единственно и равно:

где .
Пример.

M1 = 143, y1 = 5,
M2 = 91, y2 = 4,
M3 = 77, y3 = 12.

4.1.7. Символы Лежандра и Якоби. Извлечение корнейПусть p – простое число, большее 2. Рассмотрим отображение
,
сопоставляющее каждому элементу поля его квадрат. На множестве ненулевых элементов поля Fp это отображение в точности «два-в-один», то есть если из ненулевого элемента x Fp можно извлечь квадратный корень, то таких корней у него ровно 2 и, кроме того, ровно половина элементов из являются полными квадратами. Полные квадраты в называются квадратичными вычетами по модулю p. Множество всех квадратичных вычетов по модулю p является подгруппой порядка (p – 1)/2 в мультипликативной группе . Элементы мультипликативной группы из которых нельзя извлечь квадратный корень, называются квадратичными невычетами.
Для выявления полных квадратов по модулю p вводится символ Лежандра
Он равен 0, если a делится на p, +1, если a – квадратичный вычет по модулю p, и – 1, если a – квадратичный невычет.
Символ Лежандра легко вычисляется по формуле

Но использование этой формулы сопряжено с вычислениями больших степеней и на практике предпочитают пользоваться законом квадратичной взаимности

Иначе говоря

При вычислении символа Лежандра большую помощь оказывают следующие дополнительные формулы:

Пример. С использованием разложения на множители вычислим символ Лежандра.

Извлечение квадратного корня из квадратичного вычета a по модулю p при помощи алгоритма Шенкса.
Выбрать наугад такое n, что
Пусть e, q – целые числа с нечетным q, удовлетворяющие соотношению p – 1 = 2eq.
Положим y = nq (mod p), r = e, x = a(q – 1)/2 (mod p).
Положим b = ax2 (mod p), x = ax (mod p).
Пока b 1 (mod p) делать:
найти наименьшее число m, такое, что
положить
положить
Вывести x.
Если p = 3 (mod 4), то для извлечения квадратного корня из a можно использовать формулу

формула дает правильный ответ потому, что
.
Символ Лежандра определен только в случае простого знаменателя. Если же знаменатель составной, то вводится символ Якоби, обобщающий символ Лежандра.
Пусть n – нечетное число, большее 2 и
.
Символ Якоби определяется через символы Лежандра простых делителей числа n следующим образом

Символ Якоби можно вычислять так же, как и символ Лежандра, опираясь на тождество, выведенное из закона квадратичной взаимности:

где a = 2ea1 и a1 нечетно. Полезно помнить еще несколько формул, справедливых при нечетном n:

Это дает быстрый алгоритм вычисления символа Якоби и, соответственно, символа Лежандра, как его частный случай, без разложения на множители. Единственное, что нужно сделать – выделить максимальную степень двойки.
Пример.

Символ Лежандра сообщает нам, является ли a полным квадратом по модулю простого числа p. Символ Якоби ничего не утверждает о возможности извлечения квадратного корня из a по модулю составного числа n. Если a в действительности квадрат по модулю n, то символ Якоби будет равен +1. Однако из равенства нельзя сделать вывод о том, что a – полный квадрат. Не смотря на благоприятное равенство, квадратный корень из a может не извлекаться.
Извлечение корня из числа по модулю составного n = p · q в предположении, что разложение n на простые множители известно и a – полный квадрат по модулю n, то есть

Сначала извлекается корень из a по модулю p и обозначается через sp (таких корней два, как будет показано позже). Затем извлекается квадратный корень из a по модулю q и обозначается sq (таких корней также два). Наконец, для вычисления искомого корня применяем китайскую теорему об остатках к системе

Пример. Вычислим корень из a = 217 по модулю n = 221 = 13 · 17.
Квадратные корни из a по модулям 13 и 17 соответственно равны s13 = 3 и s17 = 8. Опираясь на китайскую теорему об остатках, получаем s = 42. Проверим правильность данного решения: s2 = 422 ≡ 217 (mod 221).
Существуют еще три квадратных корня из a = 217 по модулю n = 221, поскольку n имеет два простых делителя. Для их отыскания применим КТО к трем системам с коэффициентами:
s13 = 10, s17 = 8;
s13 = 3, s17 = 9;
s13 = 10, s17 = 9
и получить полный ответ: 42, 94, 127, 179.
4.2. Примеры современных асимметричных шифров4.2.1. Криптосистема RSAСистема построена на следующих функциях:
Односторонняя функция - умножение двух больших простых чисел:
N = p · q.
Обратная задача – задача факторизации, является сложной.
Односторонняя функция с секретом - потенцирование (возведение в степень) по модулю составного N = p · q с фиксированной степенью E:
C = mE mod N.
Обратная задача – задача извлечения корня степени E по модулю N:

является сложной, если неизвестно разложение N на множители (секрет) и является простой при известном разложении N.
В дальнейшем секретные элементы криптосистем обозначаются строчными (p, q, m и пр.) открытые прописными (N, C, E и пр.) латинскими буквами.
Предположим абонент A считает нужным разрешить всем желающим отправлять ему секретные сообщения, расшифровать которые способен только он. Для этого выбирается два больших простых числа p и q, которые держатся в секрете, и публикуется их произведение
N = p · q,
которое называют модулем алгоритма. Кроме того, выбирается шифрующая экспонента E, удовлетворяющая условию
НОД (E, (p – 1), (q – 1)) = 1.
Как правило E берут равным 3, 17 или 65537. Пара, доступная всем желающим, - это (N, E). Для выбора секретного ключа применяют расширенный алгоритм Евклида к паре чисел E и
(p – 1)(q – 1), получая при этом расшифровывающую экспоненту d. Найденная экспонента удовлетворяет соотношению
E · d = 1 (mod (p – 1)(q – 1)) = 1.
Секретным ключом является тройка (d, p, q). Фактически, можно было бы выбросить простые делители p и q из ключа и помнить лишь о d и всем числе N. Но, как будет рассмотрено позднее, это снизит скорость алгоритма.
Допустим теперь пользователь B намерен зашифровать сообщение, адресованное A. Он сверяется с открытым ключом и представляет сообщение в виде числа m, строго меньшего модуля N алгоритма. Шифртекст C получается из m по следующему правилу:
C = mE (mod N).
A, получив шифрограмму, расшифровывает ее, возводя число C в степень d:
m = Cd (mod N).
Равенство имеет место в связи с тем, что порядок группы
#(Z/NZ)* = φ(N) = (p – 1)(q – 1).
Потому по теореме Лагранжа (Эйлера-Ферма),
x(p - 1)(q - 1) = 1 (mod N)
для любого числа x (Z/NZ)*. Поскольку E и d взаимно обратны по модулю (p – 1)(q – 1), при некотором целом числе s получается равенство
Ed – s(p – 1)(q – 1) = 1.
Следовательно,
Cd = (mE)d = mEd = m1 + s(p – 1)(q – 1) = m · m s(p – 1)(q – 1) = m (mod N).
Пример. Пусть p = 7 и q = 11. Тогда N = 77, а (p – 1)(q – 1) = 6 · 10 = 60. В качестве открытой шифрующей экспоненты возьмем число E = 37, поскольку НОД(37, 60) = 1. Применяя расширенный алгоритм Евклида, найдем d = 13, так как
37 · 13 = 481 = 1 (mod 60).
Для зашифрования сообщения численное представление которого имеет вид m = 2:
C = mE (mod N) = 237 (mod 77) = 51.
Расшифрование происходит аналогично:
m = Cd (mod N) = 5113 (mod 77) = 2.
4.2.2. Взаимосвязь компонентов RSAЗадача RSA: Даны числа C и E, последнее из которых удовлетворяет соотношению:
НОД(E, (p – 1)(q – 1)) = 1.
Требуется найти такое число m, что
mE = C (mod N).
Лемма. Задача RSA не сложнее проблемы факторизации.
Доказательство. Применяя алгоритм факторизации, разложим число N на простые множители, вычислим значение функции Эйлера Ф = (N) и найдем
D = 1/E (mod Ф).
Теперь, зная число D, легко восстановить m, поскольку
CD = mED = m1 (mod Ф) = m (mod N).
Отсюда следует, что при известных p и q легко находятся d и m.
Самые большие числа, которые к настоящему времени удается разложить на множители за разумное время, имеют 500 двоичных знаков. В связи с этим, для обеспечения стойкости систем среднего срока действия, рекомендуют брать модули шифрования порядка 1024 бит. Для систем большого срока действия следует выбирать модули, состоящие из 2048 бит.
Секретная экспонента и проблема факторизации:
Лемма. Если известна секретная экспонента d алгоритма RSA, соответствующая открытому ключу (N, E), то число N можно эффективно разложить на множители.
Доказательство. При некотором целом s имеет место равенство
Ed – s(p – 1)(q – 1) = 1.
Возьмем произвольное целое число X 0. Тогда
XEd – 1= 1(mod N).
Вычисляем квадратный корень Y1 по модулю N:

что можно сделать, поскольку Ed – 1 известно и четно. Приходим к тождеству

которое можно использовать для определения делителей числа N с помощью вычисления НОД(Y1 – 1, N). Однако это будет работать только если Y1 1 (mod N).
Предположим, что нам не повезло и Y1 = 1 (mod N). Если Y1 = –1 (mod N), вернемся к началу и выберем другое число X. Если Y1 = 1 (mod N), то можно взять еще один квадратный корень

Опять получаем

откуда НОД(Y2 – 1, N) – делитель числа N. К сожалению, здесь тоже может оказаться, что Y2 = 1 (mod N). Тогда придется повторить все снова.
Алгоритм необходимо повторять до тех пор, пока мы не разложим N на множители и не придем к числу (ED – 1)/2t, которое уже не будет делиться на 2. В последнем случае придется вернуться к началу алгоритма, выбрать новое случайное значение X и все повторить.
Отсюда следует, что при известном d легко найти p и q.
Алгоритм, приведенный в доказательстве, - типичный пример алгоритма Лас-Вегаса, вероятностного по своей природе, которая проявляется в процессе работы. Но если уж ответ отыщется, то он будет обязательно верным.
Пример. Входные данные задачи RSA:
N = 1441499, E = 17 и d = 507905.
Напомним, что мы предполагаем известной расшифровывающую экспоненту d, которая обычно хранится в секрете. Опираясь на предыдущий алгоритм, найдем числа N. Положим
T1 = (Ed – 1)/2 = 4317192,
X = 2.
Для вычисления Y1, сделаем преобразования :

Поскольку Y1 оказался равным 1, нам нужно взять
T2 = T1/2 = (Ed – 1)/4 = 2158596 и .
Теперь

Снова нужно повторять предыдущие шаги, что приведет нас к
T3 = (Ed – 1)/8 = 1079298
и

Отсюда

и мы можем найти простой делитель числа N, вычислив
НОД(Y3 – 1, N) = 1423.
Значение функции Эйлера (N) и проблема факторизации:
Лемма. Значение Ф = (N) позволяет эффективно разложить число N на множители.
Доказательство. Имеем
Ф = (p – 1)(q – 1) = N – (p + q) + 1.
Следовательно, положив S = N + 1 – Ф, мы получим
S = p + q.
Нам нужно определить числа p или q, опираясь на их сумму S и произведение N. Рассмотрим многочлен
f(X) = (X – p)(X – q) = X2 – SX + N.
Теперь можно найти как p, так и q, решая квадратное уравнение f(X) = 0 стандартным образом:

Отсюда следует, что при известном (N) легко найти p и q.
Пример. Открытый модуль N = 18923 криптосистемы RSA. Известно Ф = (N) = 18648. Вычисляем
S = p + q = N + 1 – Ф = 276.
Соответствующий многочлен имеет вид:
f(X) = X2 – SX + N = X2 – 276X + 18923,
а его корни – p = 149, q = 127.
Слабые моменты реализации RSA
Разделенный модуль: Поскольку арифметика остатков – дорогое удовольствие с точки зрения компьютера, весьма заманчиво разработать систему шифрования, в которой пользователи разделяют общий модуль N, но применяют различные открытые и закрытые экспоненты (Ei, di).
Одна из причин, побуждающая это делать, - ускорить алгоритмы зашифрования и расшифрования в аппаратных средствах, специально настроенных на определенный модуль N. Однако это неудачная идея, поскольку пасует перед двумя типами нападающих: внутреннего, то есть законного пользователя системы, и внешнего.
Предположим, что нападающим является один из законных клиентов криптосистемы, скажем пользователь номер 1. Он может найти значение секретной экспоненты пользователя 2 – d2. Сначала он вычисляет p и q по известному ему d1. Затем злоумышленник находит
(N) = (p – 1)(q – 1) и, наконец, при помощи расширенного алгоритма Евклида раскрывает значение d2 по формуле

Предположим, что теперь атакующий не принадлежит к пользователям криптосистемы, использующей общий модуль. Допустим, происходит рассылка одинакового (допустим циркулярного) сообщения m двум клиентам криптосистемы, открытые ключи которых
(N, E1) и (N, E2).
Противник, нападающий извне, видит зашифрованные сообщения С1 и C2, где

Он может вычислить

и восстановить сообщение m по следующей схеме:

Пример. N = N1 = N2 = 18923, E1 = 11 и E2 = 5.
Предположим, что перехвачены шифртексты
C1 = 1514 и C2 = 8189,
соответствующие одному открытому тексту m. Тогда противник вычисляет T1 = 1 и T2 = 2, после чего раскрывает исходную информацию:

Вывод. При использовании общего модуля N любой законный пользователь системы может восстановить секретную экспоненту d другого пользователя, а внешний противник сможет читать циркулярные сообщения m.
Малые шифрующие экспоненты:
Иногда в криптосистемах RSA с целью экономии затрат на шифрование используются небольшие шифрующие экспоненты E. Это тоже создает дополнительные проблемы, связанные с криптостойкостью. Предположим, что есть три пользователя с различными модулями шифрования
N1, N2 и N3
и одинаковой шифрующей экспонентой E = 3. Пусть некто посылает им одно сообщение m, зашифрованное тремя разными открытыми ключами. Нападающий видит три криптограммы:
C1 = m3 (mod N1),
C2 = m3 (mod N2),
C3 = m3 (mod N3)
и с помощью китайской теоремы об остатках находит решение системы
{X = Ci (mod Ni)| i = 1, 2, 3}
в виде
X = m3 (mod N1N2N3).
Но поскольку m3 < N1N2N3, целые числа X и m3 должны совпадать. Поэтому, вычисляя обычный кубический корень из X, нападающий раскрывает сообщение m.
Пример.
N1 = 323, N2 = 299, N3 = 341
и перехваченные сообщения
C1 = 50, C2 = 299, C3 = 1,
Чтобы восстановить исходное сообщение m, находим решение системы
X = 300763 (mod N1N2N3),
после чего извлекаем обычный кубический корень
m = X1/3 = 67.
Вывод. При использовании малой шифрующей экспоненты E противник может восстановить циркулярное сообщение m для E пользователей.
Обе вышеуказанные атаки позволяют раскрыть текст, не прибегая к разложению на множители. Наиболее важный вывод из них – необходимость дополнять оригинальные сообщения случайными цифрами перед их зашифрованием.
При практической реализации RSA необходимо решить следующие задачи:
1. Генерация больших простых чисел p и q с проверкой выполнения соответствующих требований к ним.
2. Выбор экспонент e и d с соблюдением соответствующих требований.
3. Реализация операции вычисления xy(mod n).
Генерация большого простого числа:
Сгенерировать случайное n-битовое число p.
Установить старший и младший бит равными 1. (Старший бит гарантирует требуемую длину простого числа, а младший – обеспечивает его нечетность).
Убедиться, что p не делится на малые простые числа: 3, 5, 7, 11 и т.д. Во многих практических реализациях проверяется делимость p на все простые числа, меньшие 256. Наиболее надежна проверка делимости на все простые числа, меньшие 2000. Эти проверки можно выполнить на основе массива этих простых чисел.
Выполнить тест простоты Рабина-Миллера для некоторого случайного числа a. Если p проходит тест, сгенерировать другое случайное число a и повторить тест. Для ускорения проверки можно выбирать относительно небольшие значения a. Выполнить тест минимум пять раз. Если p не проходит один из тестов, то перейти к шагу 1).
Другой путь – не генерировать случайное число p в каждом тесте, а последовательно перебирать все нечетные числа, начиная со случайно выбранного числа, пока не найдется простое число.
Тест Рабина-Миллера:
Выбрать для тестирования число p. Вычислить b – число делений p – 1 на 2 (то есть 2b – это наибольшая степень числа 2, на которую делится p – 1). Затем вычислить m, такое, что p = 1 + 2b · m.
Выбрать случайное число a, меньшее p.
Установить j = 0 и z = am mod p.
Если z = 1 или если z = p – 1, то p проходит тест и может быть простым числом.
Если j > 0 и z = 1, то p не относится к простым числам.
Установить j = j + 1. Если j < b и z (p – 1), установить z = z2 mod p и вернуться к шагу 4). Если z = p – 1, то p проходит тестирование и может быть простым числом.
Если j = b и z (p – 1), то p не относится к простым числам.
Выбор экспонент e и d:
Так как единственное требование к e – отсутствие общих множителей с числом φ(n) = (p - 1) · (q - 1), то логично выбирать небольшое e легко разложимое на простые множители и осуществлять проверку делением φ(n) на множители e. Либо выбирать простое e. Неплохо также выбирать e с минимальным количеством единиц в двоичном представлении, что ускорит операцию возведения в степень, реализованную следующим алгоритмом.
Так как очевидно, что d = e-1(mod p), то d находим при помощи расширенного алгоритма Евклида.
Алгоритм вычисления xy(mod n).
Представим y в двоичной системе счисления y = y02r + … + yr-12 + yr, где yi, цифры в двоичном представлении равные 0 или 1, y0 = 1.
Положим x0 = x и затем для i = 1,…, r вычислим
.
xr есть искомый вычет xy(mod n).
4.2.3. Криптосистема Эль-ГамаляОдносторонняя функция - возведение в степень с фиксированным модулем P и основанием G.
H = Gx (mod P)
Обратная задача – задача дискретного логарифмирования
x = ind G,P H
является сложной.
Здесь опишем шифрование по Эль-Гамалю, использующее конечные поля. Существует и аналогичная система на эллиптических кривых.
В отличие от RSA, в алоритме Эль-Гамаля существуют некоторые открытые параметры, которые могут быть использованы большим числом пользователей. Они называются параметрами домена и выглядят следующим образом:
- P – «большое простое число», то есть число, насчитывающее около 1024 бит, такое, что P – 1 делится на другое, «среднее простое число» Q, лежащее неподалеку от 2160.
- G – элемент мультипликативной группы поля , порядок которой, как мы знаем делится на Q, причем
G(P – 1)/Q (mod P) ≠ 1.
Все параметры домена, то есть P, Q и G, выбираются таким образом, чтобы элемент G(P – 1)/Q был образующей абелевой группы A порядка Q. Информация об этой группе открыта и используется большим числом пользователей.
После выбора параметров домена определяют открытый и закрытый ключи. Закрытым ключом может априори быть любое натуральное число x, а открытый ключ получается по следующей формуле:
H = Gx (mod P).
Обратите внимание на то, что каждый из пользователей RSA должен генерировать два больших простых числа для определения ключевой пары, что является довольно громоздкой задачей, а в системе Эль-Гамаля для построения ключевой пары достаточно найти какое-нибудь случайное число и сделать сравнительно несложные вычисления в арифметике остатков.
Сообщение в этой ситеме представляется ненулевым элементом поля . Для его шифрования поступают следующим образом:
- генерируют случайный эфемерный ключ k,
- вычисляют C1 = Gk,
- находят C2 = m · Hk,
- выдают получившийся шифртекст в виде пары С = (С1, С2).
Заметим, что при каждом шифровании применяется свой кратковременный ключ k. Поэтому, шифруя одно сообщение дважды, мы получаем разные шифртексты.
Чтобы расшифровать пару данных С = (С1, С2), производят следующие преобразования:

Пример. Q = 101, P = 809 и G = 3.
Легко проверить, что Q действительно делит число P – 1, а порядок элемента G в группе делится на Q. Порядок элемента G равен 808, поскольку
3808 = 1 (mod P),
и ни при каких меньших степенях такого равенства не получается.
В качестве пары открытого и закрытого ключа выберем
x = 68 и H = Gx = 368 = 65 (mod P).
Допустим, нам нужно зашифровать сообщение, численное представление которого равно
m = 100. Поступаем следующим образом.
- Генерируем случайный эфемерный ключ k = 89.
- Находим С1 = Gk = 389 = 345 (mod P).
- Получаем С2 = m · Hk = 100 · 6589 = 517 (mod P).
- Отправляем шифртекст C = (345, 517).
Адресат сможет восстановить текст, делая также вычисления:

Последнее равенство получается чуть более сложно, чем в вещественных числах: сначала число 345 возводится в степень 68 по модулю 809, вычисляется мультипликативный обратный к результату по этому же модулю, а затем найденный обратный умножается на 517.
4.2.4. Криптосистема РабинаСистема базируется на трудности задачи факторизации больших целых чисел, а точнее на трудности извлечения квадратного корня по модулю составного числа N = p · q.
Эти задачи эквивалентны:
- зная простые делители числа N, можно легко извлекать корни по модулю N,
- умея извлекать корни по модулю N, можно легко разложить N на составные множители.
Такую систему можно считать в некотором отношении более криптостойкой, чем RSA. Процесс шифрования в системе Рабина происходит намного быстрее, чем практически в любой другой криптосистеме с открытым ключом. Однако, несмотря на эти преимущества, система Рабина используется все же реже, чем RSA.
Выбираются два простых числа p и q, удовлетворяющие условию
p = q = 3 (mod 4).
Такой специальный вид чисел сильно ускоряет процедуру извлечения корней по модулю p и q. Закрытым ключом системы является пара
(p, q).
Для определения соответствующего открытого ключа берут произведение N = p · q и генерируют случайное целое число B {0, …, N – 1}. Открытый ключ это пара
(N, B).
Для шифрования сообщения m в алгоритме Рабина вычисляют
C = m(m + B) (mod N).
Таким образом, шифрование состоит из операции сложения и умножения по модулю N, что обеспечивает более высокую скорость шифрования, чем в RSA, даже если в последней выбирают небольшую шифрующую экспоненту.
Расшифрование в этом алгоритме гораздо более сложное. По существу нужно вычислить

На первый взгляд, здесь не требуется никакой секретной информации, но, очевидно, для извлечения корней по модулю N очень и очень полезно знать разложение N на простые множители. Поскольку N – произведение двух простых чисел, существует четыре возможных квадратных корня из числа по модулю N. Поэтому при расшифровании получается четыре возможных варианта открытого текста. Чтобы выбор был более определенным, стоит к открытому тексту добавлять некую избыточную информацию.
Объясним, почему при расшифровании мы действительно получаем m. Напомним, что шифртекст имеет вид
C = m(m + B) (mod N).
поэтому

Конечно предполагаем, что мы выбрали правильный корень из четырех.
Пример. Открытый и закрытый ключи имеют вид:
- p = 127, q = 131,
- N = 16637 и B = 12345.
Для шифрования сообщения m = 4410 вычисляем
C = m(m + B) (mod N) = 4633.
При обратной операции сначала находим
T = B2/4 + C (mod N) = 1500,
а затем извлекаем квадратные корни из T по модулю p и q:

После этого, применяя китайскую теорему об остатках к паре
22 (mod p) и 37 (mod q),
находим квадратный корень из T по модулю N:

Четыре варианта расшифрования
4410, 5851, 15078, или 16519
получаются из формулы
.
4.2.5. Рюкзачные криптосистемыЗадача об укладке рюкзака. Задано множество {vi} из k натуральных чисел и целое число S.
Требуется найти такое k-разрядное число n = (nk – 1nk – 2…n1n0)2 (где ni {0, 1} суть значения разрядов в двоичной записи чиcла n), что , если такое n существует.
В зависимости от набора {vi} и числа S, такого решения может не быть вообще, решений может быть несколько или решение будет единственным. Такая задача является сложной.
Частный случай – задача об укладке быстровозрастающего рюкзака. Это случай, когда величины vi, будучи упорядочены в порядке возрастания, обладают тем свойством, что каждое число больше суммы всех предыдущих.
Такая задача имеет эффективный алгоритм решения:
Положим W = S и j = k.
Начиная с nj – 1 и последовательно уменьшая j, полагаем все nj = 0 до тех пор, пока не придем к первому такому значению j (обозначим его через i0), что . Положим
Заменим W на , положим j = i0 и, если W > 0, то переходим к шагу 2.
Если W = 0, то цель достигнута. Если W > 0 и все оставшиеся vi больше W, то ясно, что решения n = (nk – 1nk – 2…n1n0)2 задачи не существует. Если решение есть, то оно единственное.
Пример. Набор {2, 3, 7, 15, 31} является быстрорастущим набором, а S = 24. Тогда проходя пятерку значений справа налево, мы видим, что n4 = 0 (31 > 24), n3 = 1 (15 < 24 и в этот момент заменяем 24 на 24 – 15 = 9), n2 = 1 (7 < 9 и в этот момент заменяем 9 на 9 – 7 = 2), n1 = 0 (3 > 2), n0 = 1 (2 = 2). Таким образом, получаем n = (01101)2 = 13.
Криптосистема Меркля-Хеллмана
Предположим, что элементы открытого текста имеют в качестве своих числовых эквивалентов k-разрядные двоичные числа n.
Каждый пользователь выбирает быстрорастущий набор {v0, …, vk – 1}, целое число и целое число a, такое что a < 0 < m и НОД(a, m) = 1.
После этого вычисляются b = a -1 (mod m) и k-элементный набор {Wi} = {W0, …, Wk –1}, пределяемый равенствами Wi = avi (mod m). Пользователь держит числа {vi}, m, a и b в секрете, а набор {Wi} делает общеизвестным. Таким образом, ключом зашифрования является набор
{W0, …, Wk –1},
а ключом расшифрования – пара
(b, m),
которая вместе с ключом зашифрования позволяет определить набор {v0, …, vk – 1}.
Желающий передать сообщение n = (n0 … nk – 1)2 пользователю с ключом шифрования {Wi} вычисляет

и передает это число.
Чтобы прочесть это сообщение, пользователь сначала находит s = bC:
,
поскольку bWi ≡ bavi ≡ vi (mod m). Теперь можно воспользоваться приведенным выше алгоритмом для быстровозрастающего рюкзака и найти единственное решение
(n0 … nk – 1)2 = n задачи о подмножестве {vi} с суммой равной s.
Пример. Элементы открытого текста – двоичные представления букв 26-буквенного алфавита от «A» = 0 = (00000)2 до «Z» = 25 = (11001)2 .
Cекретный быстровозрастающий набор {v0, …, vk – 1} = {2, 3, 7, 15, 31}.
Выберем m = 61, a = 17, тогда b = 18 и открытый ключ шифрования
{W0, …, Wk –1} = {34, 51, 58, 11, 39}.
Чтобы послать сообщение «WHY» корреспондент должен вычислить:
«W» = (10110)2 51 + 58 + 39 = 148,
«H» = (00111)2 34 + 51 + 58 = 143,
«Y» = (11000)2 11 + 39 = 50.
N = n1, n2, n3 = 148, 143, 50.
Чтобы прочитать сообщение N, сначала умножают эти числа на 18 и приводят результаты по модулю 61, получают S = s1, s2, s3 = 41, 12, 46 далее, пользуясь алгоритмом для быстрорастущего рюкзака для всех si, восстанавливают сообщение
(10110)2, (00111)2, (11000)2
4.2.6. Шифрсистема Мак-ЭлисаИдея, лежащая в основе данной системы, состоит в выборе корректирующего кода, исправляющего определенное число ошибок, для которого существует эффективный алгоритм декодирования. С помощью секретного ключа этот код «маскируется» под общий линейный код, для которого задача декодирования не имеет эффективного решения.
В системе Мак-Элиса параметрами системы, общими для всех абонентов, являются числа k, n, t. Для получения открытого и соответствующего секретного ключа каждому из абонентов системы следует осуществить следующие действия:
1) Выбрать порождающую матрицу G = Gkn двоичного (n,k)-линейного кода, исправляющего t ошибок, для которого известен эффективный алгоритм декодирования.
2) Случайно выбрать двоичную невырожденную матрицу S = Skk.
3) Случайно выбрать подстановочную матрицу P = Pnn.
4) Вычислить произведение матриц G1 = S · G · P.
Открытым ключом является пара (G1, t), секретным – тройка (S, G, P).
Для того чтобы зашифровать сообщение M, предназначенное для абонента A, абоненту B следует выполнить следующие действия:
Представить M в виде двоичного вектора длины k.
Выбрать случайный бинарный вектор ошибок Z длиной n, содержащий не более t единиц.
Вычислить бинарный вектор C = M · GA + Z и направить его абоненту A.
Получив сообщение C, абонент A вычисляет вектор C1 = C · P-1, с помощью которого, используя алгоритм декодирования кода с порождающей матрицей G, получает далее векторы M1 и M = M1 · S-1.
В качестве кода, исправляющего ошибки в системе Мак-Элиса, можно использовать код Гоппы. Известно, что для любого неприводимого полинома g(x) степени t над полем GF(2m) существует бинарный код Гоппы длины n = 2m и размерности k ≥ n – mt, исправляющий до t ошибок включительно, для которого имеется эффективный алгоритм декодирования. В настоящее время не известны эффективные алгоритмы дешифрования системы Мак-Элиса, использующей код Гоппы, при правильном выборе параметров системы.
Рекомендуемые параметры этой системы - n = 1024, t = 38, k > 644 – приводят к тому, что открытый ключ имеет размер около 219 бит, а длина сообщения увеличивается при шифровании примерно в 1,6 раза, в связи с чем данная система не получила широкого распространения.
Контрольные вопросыПочему операции для криптографических преобразований должны обладать свойством замкнутости?
Приведите случаи, при которых функция Эйлера легко вычислима.
В чем различие между кольцом вычетов по модулю натурального числа и простым конечным полем?
Для чего используется расширенный (обобщенный) алгоритм Евклида?
Для решения какого вида систем сравнений используется китайская теорема об остатках?
В чем различие между символами Лежандра и Якоби?
Назовите два способа извлечения квадратных корней в простом конечном поле?
Может ли в криптосистеме RSA шифрующая экспонента быть четной?
Какие требования к модулю P предъявляются в криптосистеме Эль-Гамаля?
Сколько вариантов расшифрования сообщения в криптосистеме Рабина?
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. Симметричные (одноразовые) цифровые подписи
5.1. Криптографические хэш-функцииХэш-функции — это функции, предназначенные для "сжатия" произвольного сообщения или набора данных, записанного, как правило, в двоичном алфавите, в некоторую битовую комбинацию фиксированной длины, называемую сверткой.
В криптографии хэш-функции применяются для задач:
— построения систем контроля целостности данных при их передаче или хранении,
— аутентификации источника данных.
При решении первой задачи для каждого набора данных вычисляется значение хэш-функции (называемое кодом аутентификации сообщения или имитовставкой), которое передается или хранится вместе с самими данными. При получении данных пользователь вычисляет значение свертки и сравнивает его с имеющимся контрольным значением. Несовпадение говорит о том, что данные были изменены. Для выработки имитовставки обычно применяют хэш-функции, значение которых зависит от секретного ключа пользователя. Этот ключ должен быть известен передающей и проверяющей сторонам. Такие хэш-функции называют ключевыми.
Имитовставки, формируемые с помощью ключевых хэш-функций, не должны позволять противнику создавать поддельные (сфабрикованные) сообщения (fabrication) при атаках типа имитация (impersonation) и модифицировать передаваемые сообщения (modification) при атаках типа подмена (substitution).
При решении второй задачи - аутентификации источника данных, обмен данными происходит между не доверяющими друг другу сторонами. В такой ситуации применяют схемы цифровой подписи, позволяющие осуществлять аутентификацию источника данных. Как правило, при этом сообщение, прежде чем быть подписано личной подписью, основанной на секретном ключе пользователя, "сжимается" с помощью хэш-функции, выполняющей функцию кода обнаружения ошибок. В данном случае хэш-функция не зависит от секретного ключа и может быть фиксирована и известна всем. Основными требованиями к ней являются гарантии невозможности подмены подписанного документа, а также подбора двух различных сообщений с одинаковым значением хэш-функции (в этом случае говорят, что такая пара сообщений образует коллизию).
5.1.1. Блочно-итерационные и шаговые функцииПусть X - множество сообщений (последовательности символов некоторого алфавита, как правило, двоичного). Пусть Y — множество двоичных векторов фиксированной длины.
Хэш-функцией называется всякая функция h: X Y, легко вычислимая и такая, что для любого сообщения М значение h(M) = Н (свертка) имеет фиксированную битовую длину.
Обычно число возможных сообщений значительно превосходит число возможных значений сверток, в силу чего для каждого значения свертки имеется большое множество прообразов, то есть сообщений с заданным значением хэш-функции. При случайном и равновероятном выборе сообщений условие равномерности распределения значений хэш-функции эквивалентно наличию одинакового числа прообразов для каждого значения свертки.
Как правило, хэш-функции строят на основе так называемых одношаговых сжимающих функций у = f(xl, х2) двух переменных, где х, и у - двоичные векторы длины т и п соответственно, причем п — длина свертки. Для получения значения h(M) сообщение М сначала разбивается на блоки длины т (при этом если длина сообщения не кратна т, то последний блок неким специальным образом дополняется до полного), а затем к полученным блокам M1, М2,.., MN применяют следующую последовательную процедуру вычисления свертки:
H0 = v,
Hi = f(Мi, Hi-1), i = 1,...,N,
h(M) = HN.
Здесь v — некоторый фиксированный начальный вектор. Если функция f зависит от ключа, то этот вектор можно положить равным нулевому вектору. Если же функция f не зависит от ключа, то для исключения возможности перебора коротких сообщений (при попытках обращения хэш-функции) этот вектор можно составить из фрагментов, указывающих дату, время, номер сообщения и т. п. Такие хэш-функции называют блочно-итерационными. При таком подходе свойства хэш-функции h полностью определяются свойствами одношаговой сжимающей функции.
Особо выделяют два важных типа криптографических хэш-функций - ключевые и бесключевые. Первые применяются в системах с симметричными ключами. Ключевые хэш-функции называют кодами аутентификации сообщений (КАС) (message authentication code (MAC)). Они дают возможность без дополнительных средств гарантировать как правильность источника данных, так и целостность данных в системах с доверяющими друг другу пользователями.
Бесключевые хэш-функции называются кодами обнаружения ошибок (modification detection code (MDC) или manipulation detection code, message integrity code (MIC)). Они дают возможность с помощью дополнительных средств (например, шифрования, использования защищенного канала или цифровой подписи) гарантировать целостность данных. Эти хэш-функции могут применяться в системах как с доверяющими, так и не доверяющими друг другу пользователями.
5.1.2. Ключевые функции хэшированияВ криптографических приложениях к ключевым функциям хэширования предъявляются следующие основные требования:
— невозможность фабрикации;
— невозможность модификации.
Первое требование означает высокую сложность подбора сообщения с правильным значением свертки. Второе — высокую сложность подбора для заданного сообщения с известным значением свертки другого сообщения с правильным значением свертки.
Иногда эти свойства объединяют в одно более сильное свойство - свойство вычислительной устойчивости. Это требование означает высокую сложность подбора для заданного множества сообщений {x1,..,xt} (быть может, пустого) с известными значениями сверток еще одного сообщения х, х хi, i = 1,...,t, с правильным значением свертки (возможен случай h(x) = h(x,), i {1,...,t}).
Слова "высокая сложность" означают такую вычислительную сложность задачи, при которой ее решение с использованием вычислительной техники за реальное время невозможно.
Ключевые функции применяются в ситуациях, когда стороны доверяют друг другу и могут иметь общий секретный ключ. Обычно в этих условиях не требуется, чтобы система обеспечивала защиту в случае отказа получателя от факта получения сообщения или его подмены. Поэтому от ключевых хэш-функций не требуется устойчивости к коллизиям.
Обычные атаки на ключевые хэш-функции заключаются в имитации, то есть в передаче сфабрикованных сообщений в пустом канале, а также в подмене передаваемых сообщений с целью навязывания приемной стороне ложных сообщений.
В качестве примера рассмотрим широко распространенную хэш-функцию, построенную на основе одношаговой сжимающей функции вида
fk(x, H) = Ek(x H),
где Еk - алгоритм блочного шифрования.
Для вычисления значения h(M) сообщение М представляется в виде последовательности n-битовых блоков M1, M2,..,MN. Если при этом длина сообщения не кратна длине 1 блока, то последний блок неким специальным образом дополняется до полного блока. Алгоритм вычисления свертки имеет следующий вид:
H0 = 0,
Нi =Ek(Мi Hi-1), i = 1,...,N,
h(M) = HN.
Данный алгоритм фактически совпадает с режимом шифрования со сцеплением блоков CBC с той лишь разницей, что в качестве результата берется не весь шифртекст Н1,Н2,..,НN, а только его последний блок. Такой режим в ГОСТе 28147-89 называется режимом выработки имитовставки.
Еще одной основой для построения ключевых хэш-функций могут служить бесключевые хэш-функции. При этом для вычисления значения свертки ключ приписывается к исходному сообщению.
Если ключ просто дописывать в начало или в конец исходного сообщения, то это может приводить к потенциальным слабостям, позволяющим в некоторых случаях осуществлять модификацию сообщений. В связи с этим более предпочтительными являются способы введения ключа, при которых ключ вставляется в сообщение не один, а, по крайней мере, два раза:
H = h(k, y, M, k) или H = h(k, y1,h(k, у2, M)),
где у, у1 и у2 - дополнения ключа k до размера, кратного длине блока п. Для определенных бесключевых хэш-функций h такой подход позволяет строить эффективно вычислимые и устойчивые к атакам ключевые хэш-функции. Недостатком такого метода является слишком большая длина п свертки. Дело в том, что для целей проверки целостности обычно выбирают длину свертки п в пределах 32 - 64, а для аутентификации необходимо условие п > 128.
Существуют также ключевые хэш-функции, не использующие какую-либо основу типа блочного шифрования или вычисления бесключевой хэш-функции, а разработанные независимо с учетом эффективной реализации на современных ЭВМ. Например, ключевая хэш-функция, используемая в алгоритме МАА {Message Authenticator Algorithm), утвержденном стандартом ISO 8731-2.
5.1.3 Бесключевые функции хэшированияОбычно требуется, чтобы бесключевые хэш-функции обладали следующими свойствами:
1) однонаправленность, (по Y = h(X) трудно определить X)
2) устойчивость к коллизиям, (по X трудно найти X’, такое, что h(X) = h(X’).
3) устойчивость к нахождению второго прообраза, (трудно найти пару X, X’ такие, что h(X) = h(X’))
Например, хэш-функция CRC-32, представляющая собой контрольную сумму, является линейным отображением и поэтому не соответствует ни одному из этих трех свойств.
Использование в качестве бесключевой хэш-функции функции, построенной на основе алгоритма блочного шифрования в режиме выработки имитовставки, также нецелесообразно, так как обратимость блочного шифрования позволяет подбирать входное сообщение для любого значения свертки при фиксированном и общеизвестном ключе.
Для построения примера хэш-функции, удовлетворяющей свойству 1), рассмотрим функцию, заданную формулой gk(x) = Еk(х) х, где Еk — алгоритм блочного шифрования. Такая функция является однонаправленной по обоим аргументам. Поэтому на ее основе можно построить хэш-функцию, определив одношаговую сжимающую функцию одной из следующих формул:
f(x, H) = EH(x) x или f(х, Н) = Ех(Н) Н.
Первая из этих функций лежит в основе российского стандарта хэш-функции, а вторая - в основе американского стандарта SHA.
Обе приведенные выше шаговые функции хеширования принадлежат семейству:

Не все функции данного семейства стойки к коллизиям. Стойкие к известным методам криптоанализа конструкции шаговых функций хеширования сведены в таблицу.
Таблица 8. Шаговые функции хеширования f(X, Y), использующие блочное шифрование Ek. (длина блока равна длине ключа или ключ дополнен до длины блока)
EY(X) X
EY(X Y) X Y
EY(X) X Y
EY(X Y) X EX(Y) Y
EX(X Y) X Y
EX(Y) X Y
EX(X Y) Y EX Y(X) X
EX Y(Y) Y
EX Y(X) Y
EX Y(Y) X
Трудоемкость подбора прообраза для однонаправленной функции или трудоемкость поиска второго- прообраза оцениваются величиной О(2n). В то же время трудоемкость поиска коллизии оценивается величиной О(2n/2), так как в данной ситуации применима атака, основанная на парадоксе "дней рождений".
Значением любой из хэш-функций, построенных из приведенных одношаговых сжимающих функций, является вектор длины n, равной размеру блока. В случае если эта величина оказывается недостаточной, ее можно увеличить, заменив одношаговую функцию f на функцию f’ с удвоенной размерностью значений. Это можно сделать, например, путем двукратного применения функции f с последующим перемешиванием полублоков согласно формуле:
f’(x, Hl, H2) = π(f(x, Hl), f(x, H2)),
в которой π переставляет произвольные полублоки а, b, с, d по правилу π((a,b),(c,d)) = (a,d,c,b) . Такой подход реализован в конструкции одношаговой функции MDC-2.
Другие примеры бесключевых хэш-функций дают известные алгоритмы MD-4, MD-5 и SHA. Они оперируют с блоками длины n, совпадающей с длиной результирующего значения свертки, причем п = 128 для алгоритма MD-4 и п = 160 для MD-5 и SHA. Указанные алгоритмы спроектированы специально с учетом эффективной реализации на 32-разрядных ЭВМ.
При их использовании исходное сообщение М разбивается на блоки длиной т = 512 бит. Последний блок формируется путем дописывания к концу сообщения комбинации 10...0 до получения блока размера 448 бит, к которому затем добавляется комбинация из 64 бит, представляющая битовую длину сообщения. Затем вычисляется значение свертки с использованием одношаговой сжимающей функции, заданной формулой f(x, H)=Ex(H) H, где х - блок сообщения длины т = 512 бит, Н - блок из п бит, а Ех - некоторое преобразование множества блоков. Значение начального вектора определяется в описании преобразования Ех. В стандарте хэш-функции ГОСТ Р 34.11-94 приняты значения п = т = 512. Одношаговая сжимающая функция f(x,H), используемая для вычисления последовательности значений Hi = f(xi, Hi-1), построена на базе четырех параллельно работающих схем блочного шифрования (ГОСТ 28147-89), каждая из которых имеет 256-битовый ключ и оперирует с блоками размера 64 бита. Каждый из ключей вычисляется в соответствии с некоторой линейной функцией от блока исходного сообщения xi и значения Hi-1. Значение Hi, является линейной функцией от результата шифрования, блока исходного сообщения xi, и значения Hi-1. После вычисления значения HN для последовательности блоков M1,M2,..,MN применяют еще два шага вычисления согласно формуле
H = h(M) = f(Z MN, f(L, HN)),
где Z — сумма по модулю два всех блоков сообщения, a L — длина сообщения.
5.1.4. Схемы использования ключевых и бесключевых функцийСхемы использования ключевых хэш-функций (кодов аутентичности сообщений) приведены на рис. 34.
М
M
||
C
C
K
(
M
)
C
Сравнение
Источник
Адресат
K
K
М
||
C
K
1
E
K
2
D
K
2
M
C
K
1
(
M
)
C
Сравнение
K
1
E
K
2
[
M
||
C
K
1
(
M
)]
М
||
C
K
1
D
K
2
M
C
Сравнение
K
1
C
K
1
(
E
K
2
[
M
])
E
K
2
E
K
2
[
M
]
(
а
)
Аутентификация сообщений
(
б
)
Аутентификация сообщений и конфиденциальность
(
код аутентичности
связывается с открытым текстом)
(
в
)
Аутентификация сообщений и конфиденциальность
(
код аутентичности
связывается с шифрованным текстом
)

Рис.34. Схемы применения ключевых хэш-функций
Схема а) применяется в случае необходимости обеспечить целостность открытых сообщений. Схемы б) и в) в случаях передачи шифрованных сообщений.
Случаи использования кодов аутентичности сообщений:
Циркулярная рассылка сообщения нескольким адресатам. Аутентичность проверяет корневой узел на основе известного ему секретного ключа.
Аутентификация сообщений проводится принимающей стороной на выборочной основе из-за загруженности.
Аутентификация компьютерных программ (в частности антивирусная).
Важность обеспечения аутентичности управляющих системных запросов.
Разделение функций аутентификации и конфиденциальности.
Защита целостности сообщения после его получения, при хранении в открытом виде.
Схемы использования бесключевых хэш-функций приведены на рис.35.
В схемах а) и б) хэш-функция используется совместно с симметричной системой шифрования.
В схемах в) и г) хэш-функция используется совместно с асимметричной системой шифрования.
В схемах д) и е) хэш-функция используется совместно с симметричной системой шифрования как код аутентичности сообщения с секретным элементом S.
В схемах а), г), е) обеспечивается и аутентичность и конфиденциальность, а в схемах б), в), д) – только аутентичность.

Рис.35 (а-в). Схемы применения бесключевых хэш-функций

Рис.35(г-е). Схемы применения бесключевых хэш-функций
В таблице 9 даны сведения по основным современным алгоритмам хэширования.
Таблица 9. Современные алгоритмы хеширования

пп Название Длина свертки
(бит) Тип Основа алгоритма
1 Snefru 128, 256 бесключевая Сжимающая функция на основе блочного 512-разрядного шифрования. 2-3 прохода в 64 раунда
2 MD4 128 бесключевая Оригинальная блочно-итерационная 512-разрядная функция (3 раунда)
3 MD5 128 бесключевая Оригинальная блочно-итерационная 512-разрядная функция (4 раунда)
4 SHA 160, 256, 512 бесключевая Оригинальная блочно-итерационная 512-разрядная функция (4 раунда)
Окончание табл. 9

пп Название Длина свертки
(бит) Тип Основа алгоритма
5 RIPEMD 128, 160 .. бесключевая Разновидность MD4
6 HAVAL Переменная бесключевая Разновидность MD5
7 MDC-2 Две длины блока (DES) бесключевая Две ветви блочного криптоалгоритма
8 MDC-4 Две длины блока (DES) бесключевая Две ветви блочного криптоалгоритма
9 ГОСТ 256 (четыре длины блока ГОСТ) бесключевая Четыре ветви блочного криптоалгоритма ГОСТ
10 Схема Девиса-Майера 128 (две длины блока IDEA) бесключевая Две ветви блочного криптоалгоритма IDEA
11 CBC-MAC Длина блока ключевая Блочный криптоалгоритм
12 MAA 32 ключевая Блочный криптоалгоритм
13 НМАС Переменная ключевая Бесключевая хэш-функция MD5, SHA или RIPEMD
5.2. Электронно-цифровая подпись
5.2.1. Задачи и особенности электронно-цифровой подписиЦифровая подпись для сообщения является числом, зависящим от самого сообщения и от некоторого секретного, известного только подписывающему субъекту, ключа. При этом предполагается, что она должна быть легко проверяемой и что осуществить проверку подписи должен иметь возможность каждый без получения доступа к секретному ключу. При возникновении спорной ситуации, связанной с отказом подписывающего от факта подписи им некоторого сообщения либо с попыткой подделки подписи, третья сторона должна иметь возможность разрешить спор.
Цифровая подпись позволяет решить следующие три задачи:
— осуществить аутентификацию источника сообщения,
— установить целостность сообщения,
— обеспечить невозможность отказа от факта подписи конкретного сообщения.
Использование термина "подпись" в данном контексте оправдано тем, что цифровая подпись имеет много общего с обычной собственноручной подписью на бумажном документе. Собственноручная подпись также решает три перечисленные задачи, однако между обычной и цифровой подписями имеются существенные различия.
Таблица 10. Особенности собственноручной и цифровой подписи.
Собственноручная подпись Цифровая подпись
Не зависит от подписываемого текста, всегда одинакова Зависит от подписываемого текста, практически всегда разная
Неразрывно связана с подписывающим лицом, однозначно определяется его психофизическими свойствами, не может быть утеряна Определяется секретным ключом, принадлежащим подписывающему лицу, может быть утеряна владельцем
Неотделима от носителя (бумаги), поэтому отдельно подписывается каждый экземпляр документа Легко отделима от документа, поэтому верна для всех его копий
Не требует для реализации дополнительных механизмов Требует дополнительных механизмов, реализующих алгоритмы ее вычисления и проверки
Не требует создания поддерживающей инфраструктуры Требует создания доверенной инфрастуктуры сертификатов открытых ключей
Для реализации схемы цифровой подписи необходимы два алгоритма:
— алгоритм вычисления цифровой подписи и
— алгоритм ее проверки.
Главные требования к этим алгоритмам заключаются в исключении возможности получения подписи без использования секретного ключа и гарантировании возможности проверки подписи без знания какой-либо секретной информации.
Надежность схемы цифровой подписи определяется сложностью следующих трех задач:
— подделки подписи, то есть нахождения значения подписи под заданным документом лицом, не являющимся владельцем секретного ключа;
— создания подписанного сообщения, то есть нахождения хотя бы одного сообщения с правильным значением подписи;
— подмены сообщения, то есть подбора двух различных сообщений с одинаковыми значениями подписи.
Принципиальной сложностью, возникающей при использовании цифровой подписи на практике, является проблема создания инфраструктуры открытых ключей.
Сложилась практика заключения договоров между участниками информационного взаимодействия с применением цифровых подписей. В таком договоре должно быть четко указано:
— кто должен нести ответственность в случае, если подписанные сделки не состоятся;
— кто должен нести ответственность в случае, если система окажется ненадежной и будет взломана, то есть будет выявлен факт подделки секретного ключа;
— какова ответственность уполномоченного по сертификатам в случае, если открытый ключ будет сфальсифицирован;
— какова ответственность владельца секретного ключа в случае его утраты;
— кто несет ответственность за плохую реализацию системы в случае повреждения или разглашения секретного ключа;
— каков порядок разрешения споров и т. п.
Имеется несколько принципиально различных подходов к созданию схем цифровой подписи. Их можно разделить на три группы:
1) схемы на основе систем шифрования с открытыми ключами;
2) схемы со специально разработанными алгоритмами вычисления и проверки подписи;
3) схемы на основе симметричных систем шифрования.
Таблица 11. Современные алгоритмы цифровой подписи.
№пп Название Схема Примечание
1 DSA Эль-Гамаля, Шнорра Стандарт DSS
2 ECDSA Эль-Гамаля, Шнорра, вычисления в группе точек эллиптической кривой над конечным полем Международный стандарт
3 RSA RSA Стандарт ISO 979
4 ГОСТ 94 Эль-Гамаля, Шнорра ГОСТ Р 34.10 – 94
5 ГОСТ 2001 Эль-Гамаля, Шнорра, вычисления в группе точек эллиптической кривой над конечным полем ГОСТ Р 34.10 – 2001
6 ESIGN Оригинальная схема, комбинация принципов RSA и DSA NTT Japan
7 СТБ Эль-Гамаля, Шнорра Стандарт СТБ 1176.2-99
(республика Беларусь)
5.2.2. Асимметричные алгоритмы цифровой подписи на основе RSAСуществуют две основные схемы асимметричной цифровой подписи:
- схема с восстановлением сообщения (при проверке подписи восстанавливается исходный текст);
- схема с дополнением (подпись передается вместе с исходным текстом).
Формально схема цифровой подписи состоит из двух преобразований:
- секретное преобразование подписи s,
- открытое преобразование проверки V.
Схема с восстановлением сообщения
Абонент А, посылая сообщение M, вычисляет S = s(M) и передает результат S, где S – цифровая подпись на сообщении M. Секретность сообщения в данный момент не рассматривается, важна лишь его аутентичность. Если существенна и конфиденциальность сообщения, то его можно зашифровать (до или после подписания) используя, например, открытый ключ адресата.
Получатель подписи S применяет открытое преобразование проверки V к S и получает на выходе процедуры сообщение M и некоторый бит v, который отвечает за результат проверки подписи M,v = V(S). Если результат проверки положителен, то адресат получает уверенность в следующем:
- в целостности сообщения, то есть в том, что оно не было изменено при передаче;
- в его аутентичности, то есть в том, что оно было послано именно отправителем;
- в отсутствии отказа от авторства (ренегатства): отправитель не сможет утверждать, что не посылал сообщения.
Последнее свойство важно для электронной коммерции. Допустим, невозможно отрицать факт подписания чека и пр.
Схема с восстановлением сообщения на основе RSA
Алгоритм шифрования RSA можно непосредственно использовать в качестве алгоритма подписи с восстановлением сообщения.
- Отправитель применяет расшифровывающее преобразование RSA, чтобы поставить подпись, беря сообщение и возводя его в закрытую степень d:
S = M d (mod N).
- Получатель использует зашифровывающее преобразование RSA на основе открытой экспоненты E и восстанавливает оригинальное сообщение:
M = SE (mod N).
При этом встает вопрос о проверке правильности восстановленного сообщения. Если исходно сообщение было написано на естественном языке, то можно проверить, что восстановленное сообщение написано на том же языке. Это не очень удачное решение, так как RSA работает с числовым эквивалентом сообщения. Лучшим выходом служит добавление к сообщению некоторой избыточной информации.
Предположим, сообщение D состоит из t битов, а модуль N алгоритма RSA насчитывает k битов, причем t < k – 32. Тогда мы прибавляем к D (k – t)/8 байтов слева и получаем строку байтов вида
M = 00||01||FF||FF...||FF||00||D,
после чего подпись вычисляется посредством формулы M d (mod N). При проверке подписи правильность восстановления сообщения M подтверждается корректностью дополнения.
Схема подписи с восстановлением сообщения хороша для небольших сообщений (например, при обмене ключами по Диффи-Хеллману). Если сообщение большое, его приходится разбивать на блоки и подписывать каждый блок отдельно, что порождает целый ряд дополнительных неудобств. В таком случае применяют схему подписи с дополнением.
Схема с дополнением
Абонент А, посылая сообщение M, сначала вычисляет H(M), где H – криптографическая однонаправленная хэш-функция. Функция H является общедоступной.
Подписывающее преобразование s применяется к H(M):
S = s(H(M))
и результат S передается адресату вместе с сообщением M.
Получатель подписи (M, S) применяет функцию H к сообщению M и открытое преобразование проверки V к S и получает на выходе процедуры значение
v = (H(M), V(S)),
где, результирующий бит проверки подписи v получается при сравнении значения H’(M)’, полученного из дополнения-подписи S и значения H(M), полученного при применении функции H к тексту сообщения M.
Схема с дополнением на основе RSA
Предположим, дано длинное сообщение M для визирования. Сначала вычисляется H(M) и потом применяется преобразование подписи RSA к хэш-свертке H(M), то есть подпись получается так:
S = (H(M))d (mod N).
Наконец, подпись и само сообщение передаются вместе в виде пары (M, S).
Проверка пары (M, S) состоит из трех этапов:
- «Зашифрование» S с помощью открытой экспоненты RSA для получения H’:
H’(M) = SE (mod N).
- Вычисление H(M) по M.
- Проверка равенства H’(M) = H(M). Если оно верно, то подпись законна. В противном случае – незаконна.
5.2.3. Алгоритм цифровой подписи Фиата – Фейге – ШамираАлгоритм основан на сложности задач факторизации больших целых чисел и извлечения квадратного корня в кольце вычетов. В данном алгоритме реализуется цифровая подпись с дополнением.
Пусть H – некоторая хэш-функция, преобразующая исходное сообщение в битовую строку длины m. Выбирают два простых числа p и q и вычисляют N = p · q. В качестве секретного ключа каждый абонент должен сгенерировать m различных случайных чисел a1,a2,...,am ZN. Открытым ключом объявляется набор чисел B1,B2,...,Bm ZN, где

Алгоритм вычисления цифровой подписи для сообщения M состоит в выполнении следующих действий:
Выбрать случайное число r, 1 < r < N – 1.
Вычислить u = r2 mod N.
Вычислить H(M, u) = S = (S1,S2,...,Sm).
Вычислить
Подписью для M положить пару (S, T).
Алгоритм проверки подписи состоит в выполнении следующих действий:
По открытому ключу B1,B2,...,Bm mod N и значению T вычислить

Вычислить H(M, W) = S’.
Проверить равенство S = S’.
Достоинствами описанной схемы являются возможность выработки цифровых подписей для нескольких различных сообщений с использованием одного секретного ключа, а также сравнительная простота алгоритмов вычисления и проверки подписи. Попытка компрометации данной схемы сталкивается с необходимостью решения сложной задачи нахождения квадратных корней по модулю N. Недостатком схемы является большая длина ключа, которая определяется числом m. если двоичная запись числа N содержит l знаков, то длина закрытого ключа составляет ml бит, а открытого ключа – (m + 1)l бит. При этом необходимо учитывать, что для обеспечения достаточной стойкости данной схемы цифровой подписи числа m и l должны иметь в своей двоичной записи несколько сотен бит.
Пример. Если p = 5, q = 7, N = 35, то возможными квадратичными вычетами являются:
1: x2 1 (mod 35) имеет решения: x = 1, 6, 29, 34.
4: x2 1 (mod 35) имеет решения: x = 2, 12, 23, 33.
9: x2 1 (mod 35) имеет решения: x = 3, 17, 18, 32.
11: x2 1 (mod 35) имеет решения: x = 9, 16, 19, 26.
14: x2 1 (mod 35) имеет решения: x = 7, 28.
15: x2 1 (mod 35) имеет решения: x = 15, 20.
16: x2 1 (mod 35) имеет решения: x = 4, 11, 24, 31.
21: x2 1 (mod 35) имеет решения: x = 14, 21.
25: x2 1 (mod 35) имеет решения: x = 5, 30.
29: x2 1 (mod 35) имеет решения: x = 8, 13, 22, 27.
30: x2 1 (mod 35) имеет решения: x = 10, 25.
Обратными значениями (mod 35) и их квадратными корнями являются
Bi (Bi)-1 = ai2 ai
1 1 1
4 9 3
9 4 2
11 16 4
16 11 9
29 29 8
Обратите внимание, что у чисел 14, 15, 21, 25 и 30 нет обратных значений по модулю 35, так как они не взаимно простые с 35. Это верно, так как должно быть
(p – 1)(q – 1)/4 = (5 – 1)(7 – 1)/4 = 6
квадратичных вычетов по модулю 35, взаимно простых с 35. Поэтому НОД(x, 35)должен быть равен 1.
Для хэш-функции H со сверткой длины m = 4 выберем открытый ключ
{ Bi } = {4, 11, 16, 29};
и соответственно закрытый ключ
{ ai } = {3, 4, 9, 8}.
Выбираем r = 16, вычисляем u = r2 = 162 mod 35 = 11.
Допустим значение хэш-свертки сообщения M и u составило:
S = H(M, u) = (1, 1, 0, 1).
Вычисляем
T = 16 · (31 · 41· 90· 81) (mod 35) = 31
При проверке подписи вычисляют
W = 312 · ( 41· 111· 160· 291) (mod 35) = 11 = u.
Но так как проверяющий не знает u, то он для проверки вычисляет хэш-свертку
S’ = H(M, W) = (1, 1, 0, 1) = S.
5.2.4. Алгоритм цифровой подписи Эль-ГамаляСхема цифровой подписи Эль-Гамаля основана на сложности вычисления дискретных логарифмов в конечном поле.
Так же как и для шифрования Эль-Гамаля выбираются параметры системы:
P – большое простое число (порядка 1024-2048 бит).
Q – простой делитель числа P – 1 (порядка 160 бит).
G – порождающий элемент мультипликативной группы
Секретным ключом является:
x – целое случайное число в диапазоне 2 ≤ x ≤ P – 2.
Открытый ключ Y вычисляется по формуле:
Y = Gx (mod P).
Подпись для сообщения M вычисляется при помощи следующего алгоритма:
Выбрать случайный эфемерный сеансовый ключ k, 2 ≤ k ≤ P – 2, взаимно простой с P – 1, НОД(k, P – 1) = 1.
Вычислить R = Gk (mod P).
Вычислить S = (M - xR)k -1 (mod P – 1).
Подписью сообщения M служит пара (R, S).
Если сообщениe M большое, то при вычислении S используют его хэш-значение H(M).
Алгоритм проверки подписи заключается в проверке сравнения:
.
Основным достоинством данной схемы является возможность выработки цифровых подписей для большого числа сообщений с использованием одного секретного ключа.
Пример. Выберем P = 11 и G = 2, а закрытый ключ x = 8.
Вычислим:
Y = Gx mod P = 28 mod 11 = 3.
Открытым ключом являются Y = 3, G = 2, и P = 11. Чтобы подписать M = 5, сначала выберем случайное k = 9. Убеждаемся, что НОД(9, 10) = 1. Вычисляем:
R = Gk mod P = 29 mod 11 = 6.
Далее с помощью расширенного алгоритма Евклида находим k – 1 = 9 mod (11 – 1) и S:
S = (M - xR)k -1 (mod P – 1) = (5 – 8 · 6) 9 mod (11 – 1) = 3.
Подпись составит пару (6, 3).
Для проверки подписи убедимся, что:

36·63 mod 11 = 25 mod 11.
Схема Эль-Гамаля послужила образцом для построения большого семейства во многом сходных по своим свойствам схем подписи. В их основе лежит проверка сравнения вида:

в котором тройка (A, B, C) совпадает с одной из перестановок чисел M, S, R.
Например, исходная схема Эль-Гамаля получается при
A = M, B = – R и C = S.
Еще одно достоинство данного семейства является возможность уменьшения длины подписи путем замены пары чисел (R, S) на пару чисел (R mod Q, S mod Q). При этом проверочное равенство по модулю P следует заменить на модифицированное равенство по модулю Q:
.
На основе семейства данных схем построены стандарты цифровой подписи DSS и ГОСТ Р34.10-94.
Кроме того, данное семейство может быть модифицировано для работы с группой точек эллиптической кривой.
5.2.5. Алгоритм цифровой подписи ШнорраПринадлежит семейству цифровых подписей на дискретных логарифмах и интересна с точки зрения практического применения в смарт-картах для реализации процедуры аутентификации. Алгоритм также может быть обобщен на эллиптические кривые.
Параметры системы совпадают с параметрами P, Q, G системы Эль-Гамаля.
Закрытый ключ x – целое число из и
нтервала 1 < x < Q – 1. Открытый ключ определяется формулой Y = Gx (mod P). Чтобы подписать сообщение в алгоритме Шнорра поступают следующим образом:
- Выбирают эфемерный ключ k из промежутка 1 < k < Q – 1.
- Вычисляют соответствующий открытый ключ R = Gk mod P.
- Находят E = H(M||R). Значение функции зависит как от сообщения, так и от эфемерного ключа.
- Вычисляют S = k + x · E (mod Q).
Полученная таким образом пара (E, S) является искомой подписью.
Для проверки подписи вычисляют:
R’ = GSY-E (mod P) и H(M||R’).
Подпись корректна, если верно равенство E = H(M||R’).
(Возможен вариант, в котором закрытый ключ вычисляется по формуле Y = G-x (mod P) и тогда проверочное уравнение принимает форму R’ ≡ GSYE (mod P).)
Пример. Параметры домена Q = 101, P = 607 и G = 601.
Чтобы зафиксировать ключевую пару, положим x = 3 и
Y = Gx (mod P) = 6013 (mod 607) = 391.
Затем генерируем эфемерный ключ k = 65 и вычисляем.
R = Gk (mod P) = 60165 (mod 607) = 223.
Теперь находим хэш-значение E = H(M||R). Допустим, что при этом получилось E = 93. Тогда вторая компонента подписи выглядит как
S = k + x · E (mod Q) = 65 + 3 · 93 (mod 101) = 41.
При проверке подписи (E, S) теоретически можно вычислить
R’ YE (mod P) = 223 · 39193 (mod 607) = 172.
GS (mod P) = 60141(mod 607) = 172.
Но так как R’ не передается напрямую, а только в виде свертки E = H(M||R), придется вычислять:
R’ = GSY-E (mod P) = 60141 · (39193)-1 (mod 607) = 172 · (537)-1 (mod 607) = 223.
Соответственно совпадут и хэш-значения H(M||R) = H(M||R’) = 93.
5.2.6. Алгоритм цифровой подписи Ниберга-РуппеляДанный алгоритм также базируется на сложности дискретного логарифмирования и является примером схемы с восстановлением сообщения.
Все схемы подписи с восстановлением сообщения используют не однонаправленную хэш-функцию H, а открытую функцию избыточности F, которая является легко обратимой. В качестве простого примера можно взять F(M) = (M||M)2.
Параметры системы совпадают с параметрами P, Q, G системы Эль-Гамаля.
Закрытый ключ x – целое число из интервала 1 < x < Q – 1. Открытый ключ определяется формулой Y = Gx (mod P).
Алгоритм подписи Ниберга-Руппеля состоит в следующем:
Берут случайное число k из промежутка 1 < k < Q – 1 и вычисляют R = Gk mod P.
Находят Е = F(M) · R (mod P).
Определяют S = x · E + k (mod Q).
Подпись представляет собой пару (E, S). Исходя из этой пары нам нужно:
- убедиться в том, что подпись принадлежит пользователю с открытым ключом Y;
- восстановить сообщение M.
В процедуре проверки подписи Ниберга-Руппеля по паре (E, S) и открытому ключу отправителя Y вычисляют:
U1 = GSY-E (mod P) = R.
U2 = E(U1)-1 (mod P).
После этого убеждаются, что U2 является значением функции избыточности U2 = F(M). Если это равенство ложно, то подпись отклоняют. В противном случае восстанавливают сообщение по правилу M = f -1(U2) и принимают подпись.
Пример. Параметры домена Q = 101, P = 607 и G = 601.
Чтобы зафиксировать ключевую пару, положим x = 3 и
Y = Gx (mod P) = 6013 (mod 607) = 391.
Чтобы подписать сообщение M = 12 (в нашем примере M должно лежать на отрезке [0, 15]), выбираем эфемерный закрытый ключ k = 45 и вычисляем
R = Gk (mod P) = 60145 (mod 607) = 143.
Допустим, F(M) = M + 24 · M. Тогда F(M) = 204 и
E = F(M) · R (mod P) = 204 · 143 (mod 607) = 36,
S = x · E + k (mod Q) = 3 · 36 + 45 (mod 101) = 52.
Подписью является пара (E, S) = (36, 52).
Проверка подписи и восстановление сообщения. Вычисляется
U1 = GSY-E (mod P) = 60152 · (39136)-1 (mod 607) = 195 · 284 (mod 607) = 143 = R.
Далее находим
U2 = E(U1)-1 (mod P) = 36 · (143)-1 (mod 607) = 36 · 208 (mod 607) = 204.
Теперь необходимо убедиться, что найденное число U2 представимо в виде M + 24 · M для некоторого целого числа M [0, 15]. U2 действительно так представимо, поэтому подпись корректна. Сообщение M = 12 восстанавливается из уравнения
M + 24 · M = 204.
5.2.7. Алгоритм цифровой подписи DSAРассмотрим данный алгоритм более подробно, так как на его основе построен стандарт цифровой подписи DSS. DSA – алгоритм подписи с дополнением, в котором собственно подпись состоит из двух 160-битовых целых чисел R и S. Число R является функцией 160-разрядного случайного числа k, которое называют эфемерным ключом, изменяемым с каждым новым сообщением. Число S – функция от сообщения, секретного ключа x, принадлежащего подписывающему лицу, числа R и эфемерного ключа k. Аналогично алгоритму Эль-Гамаля здесь есть несколько параметров домена. Для из задания сначала фиксируется 160-битовое простое число Q, а затем выбирается такое большое простое число P, лежащее между 2512 и 22048, что P – 1 делится на Q. Наконец генерируется случайное число H < P и вычисляется

Если G = 1, то переходят к другому случайному H до тех пор, пока не получат G 1.
Этим обеспечивается выполнение следующего условия: G – порождающий элемент группы порядка Q, то есть
GQ = 1 (mod P).
После выбора параметров домена (P, Q, G) каждый пользователь генерирует свой собственный закрытый подписывающий ключ x, удовлетворяющий неравенству 0 < x < Q. Соответствующим открытым ключом служит число Y, вычисляемое по правилу
Y = Gx (mod P).
Процедура выбора пользовательской ключевой пары существенно проще, чем в RSA, поскольку она требует всего лишь одного возведения в степень в числовом поле.
Подписание сообщения осуществляется по следующему алгоритму:
- вычисляют значение хэш-функции H = H(M),
- выбирают случайный эфемерный ключ k, 0 < k < Q,
- определяют R = (Gk (mod P)) (mod Q),
- находят
Подписью сообщения M служит пара (R, S), имеющая в общей сложности 320 двоичных знаков.
Для проверки подписи (R, S) на сообщении M делают так:
- вычисляют значение хэш-функции H = H(M),
- определяют A = H/S (mod Q) и B = R/S (mod Q),
- находят
V = (GAYB (mod P))(mod Q),
где Y – открытый ключ автора сообщения.
- Подпись считается корректной только тогда, когда V = R.
Пример. Параметры домена Q = 13, P = 4Q + 1 = 53 и G = 16.
Предположим, что ключевая пара имеет вид x = 3 и Y = Gx (mod P) = 163 (mod 53) = 15. Если мы хотим подписать сообщение с хэш-значением H = 5, то сначала нужно выбрать эфемерный ключ k = 2 и найти
R = (Gk (mod P)) (mod Q) = (162 (mod 53))(mod 13) = 44 mod 13 = 5,
S = (H + xR)/k (mod Q) = (5 + 3 · 5) · 2-1 (mod 13) = (5 + 3 · 5) · 7 (mod 13) = 10.
Для проверки подписи получатель определяет
A = H/S (mod Q) = 5 · 10-1 (mod 13) = 5 · 4 = 7,
B = R/S (mod Q) = 5 · 10-1 (mod 13) = 7,
V = (GAYB (mod P))(mod Q) = (167 · 157 (mod 53)) (mod 13) = (49 · 42 (mod 53))(mod 13) = 5.
Ввиду равенства V = R = 5 делаем вывод о корректности подписи.
5.2.8. Симметричные (одноразовые) цифровые подписиРассмотренные системы цифровой подписи имеют один потенциальный недостаток. Он состоит в возможности построения новых эффективных алгоритмов для решения этих математических задач. Поэтому в реальных схемах длину ключа выбирают с определенным превышением необходимой величины для обеспечения достаточного запаса стойкости. Это, в свою очередь, значительно усложняет алгоритмы вычисления и проверки подписи. Поэтому представляется весьма привлекательной задача построения схем цифровой подписи на основе симметричных систем шифрования, свободных от подобных недостатков.
Например, схема цифровой подписи Диффи-Лампорта на основе симметричных систем шифрования.
Пусть требуется подписать сообщение М = т1т2...тп, mi {0,1}, i = 1,...,п. Согласно схеме Диффи-Лампорта подписывающий сначала выбирает 2n случайных секретных ключей K = [(k10, k11),…,(kn0,kn1)] для используемой им симметричной шифристемы, затем п пар случайных чисел S = [(S10, S11),…,(Sn0, Sn1)], где Sij {0,1}, i = 1,..., n, j = 0,1, и вычисляет значения .
Наборы S и R =[(k10, k11),…,(kn0,kn1)] являются открытыми и помещаются в общедоступном месте так, чтобы каждый мог прочитать их, но записать их туда мог бы только автор подписи.
Подпись для сообщения М имеет вид . Чтобы убедиться в ее правильности, следует проверить равенства
Недостатком этой схемы является слишком большой размер подписи, который может превышать размер самого подписываемого сообщения. Имеется несколько способов избавиться от этого недостатка:
Во-первых, можно хранить не 2n значений секретных ключей, а лишь один секретный ключ k. Для этого можно воспользоваться, например, одной из следующих схем формирования последовательности K:
kij = Ek(i, j), j = 0, 1, i = 1,…, n;

Во-вторых, можно аналогичным образом свернуть набор открытых значений S. В-третьих, можно подписывать не само сообщение, а его свертку, если воспользоваться какой-либо хэш-функцией. Можно использовать и другие подходы, позволяющие сократить как длину подписи, так и размеры открытого и секретного ключей.
Вместе с тем подобные модификации не устраняют главного недостатка рассматриваемых подписей, состоящего в том, что после проверки подписи либо весь секретный ключ, либо его часть становятся известными проверяющему. Поэтому данная схема цифровой подписи является по существу одноразовой.
Контрольные вопросыВ чем различие между шаговой и блочно-итерационной функциями?
Перечислите основные требования к бесключевым хэш-функциям.
Перечислите основные требования к ключевым хэш-функциям.
В чем отличие между собственноручной и электронной подписями?
Какие бывают схемы реализации подписей на основе RSA?
В чем суть модификации Шнорра для схемы подписи Эль-Гамаля?
Почему симметричные электронные подписи называют «одноразовыми»?
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.3. Задачи обеспечения секретности и целостности данных и ключей при краткосрочном хранении.
6.2.4. Обеспечение секретности ключей при долгосрочном хранении.
6.2.5. Защита от атак с использованием побочных каналов.
6.1. Протоколы распределения ключейРазличают следующие типы протоколов распределения ключей:
— протоколы передачи (уже сгенерированных) ключей;
— протоколы (совместной) выработки общего ключа (открытое распределение ключей);
— схемы предварительного распределения ключей.
Различают также протоколы распределения ключей между отдельными участниками и между группами участников информационного взаимодействия.
6.1.1. Передача ключей с использованием симметричного шифрованияИмеются протоколы, в которых стороны осуществляют передачу ключей при непосредственном взаимодействии, то есть двусторонние протоколы или, иначе, протоколы типа "точка-точка", и протоколы с централизованным распределением ключей, в которых предусмотрена третья сторона, играющая роль доверенного центра.
Двусторонние протоколы.
Различают протоколы, в которых стороны заранее располагают какой-либо известной им обоим секретной информацией, и протоколы, не требующие этого условия.
Пусть стороны А и В заранее обладают общей секретной информацией. Допустим, что это — секретный ключ kАВ.
Тогда для передачи ключа k стороны могут использовать одностороннюю передачу:
А→В: EkAB(k,t,B),
где Е — алгоритм шифрования, t — метка времени, В — идентификатор абонента В (для краткости вместо id(B) будем использовать лишь один символ В).
Если не передавать метки времени, то злоумышленник может осуществить повторную передачу того же сообщения. Если же не указывать идентификатора адресата, то злоумышленник может вернуть отправителю перехваченное сообщение, что в некоторых ситуациях может быть опасным, поскольку абонент А не сможет установить, что это сообщение получено не от абонента В.
В приведенном протоколе вместо шифрования можно было использовать ключевую хэш-функцию, зависящую от общего ключа:
А→В: k hkAB(t,B).
Если дополнительно требуется аутентификация сеанса, то можно использовать следующий протокол типа "запрос-ответ":
В→А:rB,
А→В:ЕkАВ(k,rB,В),
где rB — случайное число, сгенерированное абонентом В и переданное абоненту А в начале сеанса. При использовании хэш-функции подобный протокол может выглядеть так:
B→A: rB,
A→B: k hkAB(rB,B).
Если требуется двусторонняя аутентификация, то можно модифицировать последний протокол, предоставив возможность стороне А путем генерации своего случайного числа rА и введения его в сообщение на шаге 2 протокола убедиться в том, что он имеет дело именно с абонентом В.
Исходный протокол можно модифицировать так, чтобы искомый ключ k генерировался не одной стороной, а являлся результатом двустороннего обмена.
Пусть абонентами А и В помимо случайных чисел rА и rB генерируют также случайные числа kA и kB соответственно. Тогда в результате выполнения протокола
В→А:rв,
A→B:EkAB(kA,rA,rB,B),
B→A:EkAB(kB,rB,rA,A),
каждая из сторон может вычислить общий ключ с помощью некоторой функции f по правилу k = f(kA,kB). В этом протоколе ни одна из сторон не может знать заранее значения ключа.
Приведем теперь "бесключевой" протокол А. Шамира, позволяющий передать ключ без использования какой-либо общей секретной информации.
Пусть имеется некоторое коммутирующее шифрующее преобразование Е. Это означает, что при всех сообщениях х и ключах k1 и k2 выполняется равенство

Тогда пользователи А и В могут реализовать следующий трехшаговый протокол для передачи секретного ключа k от А к В:
А→В: ЕkА(k),
В→А: ЕkB(ЕkА(k)),
А→В: DkА(ЕkB(ЕkA(k))).
В этом протоколе можно использовать не каждое коммутирующее преобразование Е. Например, легко заметить, что для преобразования Ек (к) = k Г протокол оказывается заведомо нестойким. Поэтому в протоколе Шамира рекомендуется использовать преобразование вида ЕkA(k) = ka mod p, в котором константа а определяется ключом kа.
Трехсторонние протоколы.
Рассмотрим протоколы распределения ключей между парами участников с использованием третьей стороны Т, называемой центром. В этом качестве обычно выступает некоторый выделенный узел сети, или сервер, которому доверяют все участники. Центр Т хранит ключи всех абонентов сети. Поэтому схема ключевых взаимоотношений графически представляет собой звезду.
Один из первых протоколов такого типа заключается в выполнении следующих шагов:
А→Т: А,В,rA,
T→A: EkAT(rA,B,k,EkBT(k,A)),
A→B: EkBT(k,A),
B→A: Ek(rB),
A→B: Ek(rB - 1).
В результате выполнения трех первых шагов протокола пользователи А и В получают сгенерированный центром Т общий ключ к для организации взаимодействия. Четвертый и пятый шаги предназначены для аутентификации пользователя А и подтверждения правильности получения ключа обеими сторонами.
Слабость этого протокола заключается в возможности повторной передачи абоненту В сообщения, переданного на шаге 3. При этом абонент В не имеет возможности установить, что полученный ключ k уже был использован. Поэтому в случае компрометации этого ключа злоумышленник может аутентифицироваться и передавать сообщения от имени A.
Недостаток этого протокола устранен в протоколе Kerberos. Рассмотрим сначала базовый протокол, применяемый в протоколе аутентификации и распределения ключей Kerberos. Он состоит из следующих шагов:
А→Т: А,В,rА,
Т→А: ЕкBT (k, rA ,L,B), билет,
A→В: билет, аутентификатор,
В→А: Ek(t,kB).
Здесь "билетом" названа величина EkBT(k,A,L), "ayтентификатором" — величина Ek(A,t,kA), t — метка времени; L — период времени действия билета, rА — случайное число, сгенерированное абонентом А и вставленное в передаваемое сообщение для взаимной аутентификации, а kА и kB — случайные числа, сгенерированные абонентами А и В соответственно, и используемые либо в качестве ключа шифрования информации другой стороне, либо для выработки общего ключа kАВ = f(kA,kB) с помощью некоторой функции f.
В полном протоколе Kerberos описанный выше базовый протокол используется два раза. Дело в том, что в нем предусмотрено два сервера. Первый - "сервер аутентификации", обозначаемый AS, выдает так называемые "билеты для получения билетов" (tgt), содержащие ключи, предназначенные для длительного использования. Второй сервер, TGS, — "сервер выдачи билетов", выдает обычные билеты для доступа к сетевым ресурсам и обращения к другим пользователям.

Рис.36. Протокол Kerberos
Сообщения, передаваемые согласно этому протоколу, выглядят следующим образом:
A→AS: A,TGS,rA, ,
AS→A: EkA,AS(kA,TGS,rA,L1,TGS), tgt,
A→TGS: tgt, аутентификатор1, B, rA’,
TGS→ A: EkA,TGS(k,rA’,L2,B), билет,
A→В: билет, аутентификатор2,
B→A: Ek(t2,kB),
где
tgt = ЕkАS,TGS(kА,TGS, А, L1),
аутентификатор1 = EkA,TGS(A,t1),
билет = ЕkB,TGS(К, A,L2),
аутентификатор2 = Ek (A, t2, kA ) .
Благодаря введению второго сервера нагрузка на первый сервер уменьшается во много раз. Первый сервер должен быть наиболее защищенным, поскольку он хранит главные ключи всех пользователей. Серверов второго типа может быть несколько, и они могут соответствовать определенной подсети или определенному типу ресурса.
Приведем еще один протокол распределения ключей с использованием сервера, предпочтительный для случая, когда сервер находится в более удобном расположении для второго абонента. Протокол состоит в выполнении следующих действий:
A→B: r,A,B,EkAT(rA,r,A,B),
В →Т: r, А,В,EkAT (rA,r, А,В),ЕkBT(rB,r, А,В),
T→B: EkAT(rA,k),EkBT(rB,k),
В→А: ЕкАТ(rА,к).
Пользователь А генерирует два случайных числа: первое (rА) используется, как и раньше, для взаимной аутентификации, а второе (r) — для аутентификации сеанса связи (вместо него может быть использована метка времени).
Этот протокол можно дополнить еще одним шагом для обеспечения взаимной аутентификации сторон и подтверждения правильности полученного ключа:
4’. B→A: ЕkAT (rА,k),Еk(r,rв),
5. А→В: Еk(r).
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.
Искомый общий ключ вычисляется по формуле:

Теперь любая подмена сообщений приведет к тому, что все стороны получат различные значения ключа, что, в свою очередь, приведет к невозможности чтения всей передаваемой информации.
6.1.4. Предварительное распределение ключейБольшинство криптографических систем требуют проведения предварительного распределения секретных ключей. Для предварительного распределения стороны могут обменяться ключами при личной встрече, либо поручить доставку ключей специально назначенному доверенному курьеру, либо использовать для передачи некоторый выделенный защищенный канал. В зависимости от назначения криптографической системы иногда оказывается удобным распределять не сами ключи, а некоторые вспомогательные ключевые материалы, на основании которых каждый участник или группа участников могут самостоятельно вычислить необходимый ключ, используя для этого некоторую установленную заранее процедуру.
Схемы предварительного распределения ключей в сети связи
Если число абонентов сети засекреченной связи невелико, то и число распределяемых ключей также невелико. Для больших же сетей распределение ключей становится очень серьезной проблемой. Она заключается в том, что для сети, в которой работают п абонентов, необходимо выработать заранее и хранить в дальнейшем п(п-1)/2 ключей. Кроме того, каждому абоненту сети необходимо передать ключи для связи с остальными n - 1 абонентами, которые абонент должен постоянно хранить. Например, для сети со 100 абонентами нужно сгенерировать и хранить почти 5000 ключей, причем каждый абонент при этом должен хранить у себя 99 ключей.
Для уменьшения объема хранимой ключевой информации применяются различные схемы предварительного распределения ключей в сети связи. Их суть заключается в том, что в действительности вначале происходит распределение не самих ключей, а некоторых вспомогательных ключевых материалов, занимающих меньшие объемы. На основании этих материалов каждый абонент сети может самостоятельно вычислить по некоторому алгоритму необходимый для связи ключ. Такой подход позволяет уменьшить объемы как хранимой, так и распределяемой секретной информации.
В качестве примера рассмотрим схему Блома распределения ключей между п абонентами, для которой процедура вычисления ключа заключается в вычислении значения некоторого симметрического многочлена над конечным полем.
Выберем поле F, имеющее конечное, но достаточно большое число элементов, и зафиксируем п различных элементов r1, ..., rnF, отличных от нуля. Каждый элемент ri
припишем i-му абоненту сети, i =. Эти элементы не являются секретными и могут храниться на общедоступном сервере сети. Выберем теперь многочлен над полем F степени 2т, 1 ≤ т < п, вида

где аij = aji, i ≠ j, i,j = . Его коэффициенты являются секретными и должны храниться только в центре распределения ключей. Каждый абонент А получает в качестве ключевых
материалов набор , состоящий из коэффициентов многочлена

Для связи между абонентами А и В теперь можно использовать общий ключ kAB:
kAB = kВА = f(rA,rB) = gB(rA) = gA (rB),
вычисляемый по формуле:

в матричном виде:

где матрица составлена из коэффициентов многочлена f(x, y) и является симметричной.
При использовании данной схемы каждый абонент должен хранить т+1 секретных значений вместо п - 1, общее же число секретных коэффициентов многочлена f равно т(т+1)/2.
Для заданного числа т схема Блома дает минимальное по объему количество хранимых у абонента ключевых материалов.
Схема предварительного распределения ключей KDP (key distribution patterns) основана на схеме пересечений множеств.
Пусть имеется п, п > 2, абонентов (пользователей) и множество секретных ключей К, |К| = q. Будем считать, что все ключи перенумерованы числами 1,2,..., q. Выберем некоторое семейство {S1,...,Sn} подмножеств множества {1,2,..., q}. Предварительно абоненту i по защищенному каналу передается множество секретных ключей с номерами из подмножества Si, . Таким образом, семейство {S1,...,Sn} представляет собой таблицу с номерами ключей каждого пользователя. Хотя данная таблица является несекретной, она должна быть защищена от модификаций и подделок.
Если абонент i хочет связаться с абонентом j, то он использует для выработки общего ключа множество ключей, номера которых содержатся в пересечении Si Sj. Если каждый ключ представлен некоторой битовой строкой, то для формирования общего связного ключа можно взять, например, их сумму, или значение некоторой хэш-функции от строки, составленной из ключей, номера которых входят в пересечение множеств Si Sj.
Схемой распределения ключей типа KDP, или KDP(n,q)-схемой, назовем всякое семейство {S1,...,Sn} подмножеств множества К, удовлетворяющее следующему условию:
если при некоторых i,j, r {1 ≤ i < j ≤ n} выполнено включение Si Sj Sr, то либо i = r, либо j= r.
Это условие означает, что общий ключ двух абонентов не должен быть известным никакому другому абоненту.
Семейство подмножеств называется семейством Шпернера, если ни одно из них не содержится в другом.
Семейство {S1,...,Sn} подмножеств множества К, |К| = q, образует KDP(n,q)-cxeмy в том и только в том случае, если множество { Si Sj | 1 ≤ i < j ≤ n } образует семейство Шпернера.
Если подмножества {S1,...,Sm} множества К, |К| = q, образуют семейство Шпернера, то

Равенство достигается только в случае, если множество {S1,...,Sm} совпадает с множеством всех w-элементных подмножеств множества К, где w = q/2 при четном q и w = (q+1)/2 или (q- l)/2 при нечетном q.
Для любой KDP(n,q)-cxeмы каждый абонент должен иметь не менее log2п ключей. Если п 4, то q 2 log2n.
6.1.5. Схемы разделения секретаСхема разделения секрета представляет собой схему предварительного распределения ключей между уполномоченными группами пользователей, в которой ключ заранее определен и одинаков для каждой уполномоченной группы. При этом каждый пользователь получает свою долю или "часть секрета". Схема включает два протокола: протокол формирования долей (разделения секрета) и распределения их между пользователями и протокол восстановления секрета группой пользователей. Схема должна позволять восстанавливать ключ только тем группам пользователей, которые имеют на это полномочия, и никакая другая группа не должна иметь возможности для восстановления ключа или получения о нем какой-либо информации.
Основное назначение схемы разделения секрета — защита ключа от потери. Обычно для защиты от потери делают несколько копий ключа. С возрастанием числа копий ключа возрастает вероятность его компрометации. Если число копий мало, то велик риск потери ключа. Поэтому лучше "разделить" ключ между несколькими лицами так, чтобы допускалась возможность восстановления ключа при различных обстоятельствах несколькими уполномоченными группами с заранее оговоренным составом участников. Тем самым исключается риск безвозвратной потери ключа.
Еще одно положительное качество схем разделения секрета заключается в разделении ответственности за принятие решения, которое автоматически вводится при определении состава уполномоченных групп. Такая коллективная ответственность нужна для многих приложений, включая принятие важных решений, касающихся применения систем оружия, подписания корпоративных чеков или допуска к банковскому хранилищу.
В простейшем случае, когда имеется только одна группа, состоящая из t пользователей, уполномоченная формировать ключ, схему разделения секрета можно построить следующим образом. Предположим, к примеру, что ключ представляет собой двоичный вектор s длины т. Выберем случайным образом t векторов s1, ...,st так, чтобы их сумма совпадала с вектором s, и распределим их между пользователями. Теперь, собравшись вместе, они могут легко восстановить значение ключа s, в то время как никакая группа, состоящая из меньшего числа пользователей, не сможет этого сделать. Действительно, в данном случае отсутствие хотя бы одной доли приводит к полной неопределенности относительно значения секрета, поскольку для каждого значения искомого секрета найдется возможный вариант значения отсутствующей доли.
Заметим, что если бы мы в предыдущем примере просто разбили вектор на t частей, то такая схема не могла быть схемой разделения секрета, так как знание любой доли давало бы частичную информацию о секрете s.
Другой пример схемы разделения секрета дает пороговая схема Шамира. Пусть 1 < t ≤ п. Схема разделения секрета между п пользователями называется (n,t)-пороговой, если любая группа из t пользователей может восстановить секрет, в то время как никакая группа из меньшего числа пользователей не может получить никакой информации о секрете.
Для построения (n,t)-пороговой схемы А. Шамир предложил использовать многочлен степени t – 1 над конечным полем с достаточно большим числом элементов. Многочлен степени t - 1 можно однозначно восстановить по его значениям в t различных точках, но при этом меньшее число точек использовать для интерполяции нельзя.
Выберем поле F и зафиксируем п различных несекретных элементов r1,...,rnF, отличных от нуля. Каждый элемент ri, приписан i-му абоненту сети, . Выберем также t случайных элементов а0,...,аi-1 поля F и составим из них многочлен f(х) над полем F степени t - 1, 1< t ≤ n ,

Положим s = f(0) = а0. Вычислим теперь значения
s1 = f(r1),…, sn = f(rn)
и распределим в качестве долей между участниками наборы

Для восстановления секрета S можно воспользоваться интерполяционной формулой Лагранжа. Путь имеются t пар (хi, уi), где yi = f(xi). Тогда формула Лагранжа имеет вид

Так как s = f(0), то из формулы Лагранжа получаем равенства

причем коэффициенты с, не зависят от коэффициентов многочлена f(x) и могут быть вычислены заранее.
С помощью полученной формулы любая группа из t пользователей может легко восстановить секрет. В то же время можно показать, что никакая группа из меньшего числа пользователей не может получить никакой информации о секрете (докажите это самостоятельно).
Схема Шамира удобна тем, что она позволяет легко увеличивать число пользователей. Для этого не нужно ничего менять, кроме множества {r1,..., rп}, к которому следует добавить новые элементы rn+1,..., rn+ w. Компрометация одной доли делает из (n,t)-пороговой схемы (п -1, t -1)-пороговую схему.
6.1.6. Способы установления ключей для конференц-связиЕще один тип распределения ключей между группами пользователей дают протоколы распределения ключей для проведения конференц-связи. Несмотря на внешнюю схожесть с протоколами разделения секрета, они имеют несколько принципиальных отличий. Если протоколы разделения секрета осуществляют предварительное распределение одного и того же ключевого значения (секрета) по секретным каналам между привилегированными группами пользователей, то протоколы конференц-связи осуществляют динамическое распределение ключей по открытым каналам связи между привилегированными группами пользователей. При этом ключи должны быть различными для каждой группы.
Тривиальный пример распределения ключей для проведения конференц-связи дает использование централизованного распределения ключей с помощью одного из трехсторонних протоколов передачи ключей, используемых для симметричных шифрсистем. Для реализации такого подхода нужно выделить одного из пользователей группы и возложить на него функции центра генерации и распределения ключей. Естественно, что при этом возрастают требования к доверенности и безопасности выделенного пользователя, что вносит серьезную асимметрию между участниками конференц-связи.
Другой подход основан на использовании идеи открытого распределения ключей.
Приведем примеры протоколов, в которых все участники группы имеют одинаковые полномочия и выполняют симметричные функции.
Простейший пример такого протокола для группы из трех участников можно получить, слегка модифицировав протокол открытого распределения ключей Диффи — Хеллмана. Участники протокола заранее договариваются о значениях большого простого числа р и образующего элемента α мультипликативной группы Z*p = {1,2,..., р - 1} . Для выработки общего ключа k пользователи А, В и С должны сгенерировать соответственно случайные числа х, у и z, 1 ≤ x,y,z ≤ p - 2 . Затем они должны обменяться сообщениями согласно следующему протоколу:
А→В: X = αx mod p,
В→С: Y = αу mod p,
С→А: Z = αz mod p,
А→В: Z'=Zx mod p,
В→С: X'=Xy mod p,
С→А: Y'=Yz mod p.
Искомый общий ключ k = αxyz mod p теперь вычисляется пользователями А, В и С по формулам:
k = (Y')x mod p,
k = (Z')y mod p,
k = (X')z mod p
соответственно.
Протокол формирования общего ключа для конференц-связи группы из t пользователей U0,...,Ut-1. Как и в предыдущем протоколе, каждый пользователь Ui; должен сгенерировать секретное случайное число ri, 1 ≤ rt ≤ р - 2 , и вычислить открытую экспоненту . Положим

Тогда общий ключ k имеет вид

Протокол состоит из следующих шагов:
1. каждый пользователь U, рассылает zi остальным t - 1 пользователям;
2. каждый пользователь U, вычисляет значение
и рассылает его остальным t - 1 пользователям;
3. каждый пользователь Ui, вычисляет значение общего ключа k по формуле
k =
Протокол требует передачи 2t(t - 1) сообщений, причем каждый пользователь должен отправлять сообщения всем остальным. Можно модифицировать протокол для случая обмена сообщениями по схеме двунаправленного кольца.
Рассмотренный протокол не решает задачи аутентификации, поскольку в нем не заложено процедур для взаимной аутентификации сторон.
6.2. Особенности использования вычислительной техники в криптографии6.2.1. Методы применения шифрования данных в локальных вычислительных сетяхВ настоящее время применяется два основных метода шифрования при передаче информации – абонентское шифрование и канальное шифрование.

Рис.37. Схемы абонентского и канального шифрования
При абонентском шифровании для передачи данных используется открытый канал. Это позволяет параллельно обрабатывать на компьютере и конфиденциальные данные, и открытую информацию. При использовании данного метода обычно используют программные реализации шифраторов.
При канальном шифровании шифруется весь передаваемый по сети трафик, как конфиденциальные данные, так и открытая информация. При таком подходе рационально применение аппаратного шифрования.
Схемы методов приведены на рис. 37
Хранение данных в компьютере.
Хранимая в компьютере конфиденциальная информация делится на две основные группы секретов – ключи и данные.
Для обеих групп возможны два вида хранения:
Долгосрочное хранение – внешние носители.
Краткосрочное хранение – оперативная память.
6.2.2. Обеспечение секретности данных при долгосрочном хранении.В последнее время для характеристики способа шифрования хранимой на диске информации все чаще применяют два термина: «прозрачное шифрование» и «непрозрачное шифрование». На деле же речь идет о двух подходах к шифрованию – защита всего логического диска или же защита каждого файла в отдельности.
Каждый из подходов имеет свои достоинства и недостатки.
Сравнительная характеристика этих двух подходов приведена в табл. 12.
Таблица 12. Подходы к защите данных при долговременном хранении
Защита диска Защита файла
Достоинства Доступ ко всему содержимому диска по одному ключу
Невозможность аналитической оценки содержимого
«Прозрачность» шифрования Гибкость работы с файлами
Возможность использовать любой режим и алгоритм шифрования
Экономия вычислительной мощности
Недостатки Рационально использовать только режим шифрования «Электронно-цифровой книги»
Большие затраты вычислительной мощности
Негибкость работы Шифрование каждого файла на своем ключе
Возможность аналитической оценки содержимого дисков
«Непрозрачность» шифрования
6.2.3. Задачи обеспечения секретности и целостности данных и ключей при краткосрочном храненииПри разработке программного обеспечения по защите данных с использованием криптографических алгоритмов необходимо уделять особое внимание решению следующих задач:Уничтожение состояния – одно из основных правил. Как только какая-то информация станет ненужной, она подлежит уничтожению. Уничтожать данные необходимо до потери контроля над их носителем. Что касается краткосрочного хранения – это в первую очередь очистка соответствующих областей оперативной памяти.
Уничтожение файла подкачки. Большинство систем виртуальной памяти не предпринимают серьезных попыток по шифрованию данных при переносе их в файл подкачки, а сам файл может стать достоянием противника.
Очистка кэша - в нем могут храниться копии секретных данных. В принципе опасность утечки данных из кэша невелика, так как к нему имеет доступ только код операционной системы. Степень безопасности определяется степенью доверия к операционной системе.
Предупреждение удерживания данных в памяти – простое перезаписывание данных не всегда удаляет их из памяти. Оперативная память может не полностью стираться при выключении питания. Доступ к ранее «удаленным» данным может быть осуществлен в недокументированных тестовых режимах. Частичным решением проблемы является метод boojum. При этом методе данные в оперативной памяти хранятся не в явном виде. Для хранения данных m используется случайная величина R той же длины и в два разных участка памяти заносятся R и R m. Для вызова данных производится вычисление m = R (R m). Значение R меняется, например каждые 100 секунд.
Предупреждение доступа других программ – наиболее сложно решаемая проблема. Windows дает возможность подключения отладчика к любому процессу. UNIX-системы позволяют создавать дампы памяти, а супервизоры вообще могут получить прямой доступ к любому участку памяти.
Обеспечение целостности данных – в основном проблема аппаратного обеспечения. В компьютере с 1 Гб памяти появление случайной ошибки данных в памяти следует ожидать каждые 32 часа.
6.2.4. Обеспечение секретности ключей при долгосрочном храненииОсновные способы хранения ключевой информации:
Хранение на логическом диске ПК. Наиболее неудачное решение. При работе одного пользователя с несколькими компьютерами количество хранимых экземпляров ключа возрастает. Соответственно растет и риск доступа к ним сторонних пользователей.
Хранение в памяти человека. Недостатками данного метода является проблема запоминания стойких по длине и статистическим свойствам ключевых слов. Возникает дилемма: простой ключ легко запомнить, но он нестоек и наоборот – сложный ключ стоек, но труден к запоминанию. Существует два подхода к решению этой дилеммы. Первый подход – использование в качестве пароля легко запоминающейся идентификационной фразы наподобие: «Розовые занавески порхают над океанами». Ограничение данного подхода – при помощи идентификационных фраз трудно хранить в человеческой памяти более 128 бит энтропии. Второй подход – использование программно реализуемого метода «подсаливания и растягивания» (salt&stretch), который позволяет как можно больше безопасности из короткого ключа или идентификационной фразы. Рассмотрим его подробнее.
Первый этап – добавление «соли». Соль – случайное число s, хранящееся вместе с данными, зашифрованными с помощью пароля. По возможности необходимо использовать 256-битовое значение s.
Второй этап – растягивание пароля p. Достаточно долгий процесс вычисления с использованием любой криптографически сильной функции хэширования h:
x0 := 0,
xi := h(xi-1 p s) для i = 1, … , r,
K:=xr.
Полученное значение K применяется для фактического шифрования данных. Параметр r – количество итераций данного алгоритма, которое должно быть максимально возможным.
Использование портативных хранилищ. Использование флеш-карт, дискет, даже клочков бумаги для внешнего хранения ключей. Недостаток заключается в необходимости надежного хранения носителя.
Использование идентификаторов безопасности. Более удачное и более дорогостоящее решение. Использование мини компьютера, носимого с собой (смарт-карта, USB ключ, таблетка e-token и пр.). При этом сам идентификатор при потере обеспечивает достаточную защиту от злоумышленников. В частности доступ к хранимым на нем ключам в свою очередь может быть защищен паролем. Подобные устройства защищены также и от физического взлома. (Стопроцентной защиты конечно не существует, но весь вопрос во времени и стоимости взлома). Одна из проблем – халатное поведение пользователей, оставляющих свой идентификатор подключенным к компьютеру при покидании рабочего места. Другой недостаток – пароль защиты вводится не непосредственно в само устройство, а через компьютер, что не гарантирует защиты от программных закладок.
Безопасный пользовательский интерфейс. Развитие предыдущей идеи. В качестве идентификатора используются носимые ПК типа Palm, КПК, IPhone и пр. Метод становится еще более затратным.
Использование биометрических параметров. Сканирование подписей, отпечатков пальцев, сетчатки глаза и пр. Надежность (и стоимость) методов все более возрастает с увеличением сложности биометрических сканеров.
Системы однократной регистрации. Предоставление пользователю одного простого мастер - ключа, используемого для расшифровки остальных ключей, применяемых в различных приложениях. Достигается определенная прозрачность, но стойкость данной системы определяется стойкостью мастер-ключа. Метод очень напоминает хранение всех яиц в одной корзине.
Разделение секрета. Применяется для совместного разделенного хранения ключа несколькими лицами. Метод подробно рассмотрен в предыдущей главе.
6.2.5. Защита от атак с использованием побочных каналовСуществует целый класс атак, называемых атаками с использованием побочных каналов. Основные два вида таких атак:
Атаки измерения энергии и радиоизлучения (особенно успешны при взломе смарт-карт).
Атаки измерения времени (тайминг-атаки, дающие представления об ориентировочном размере секретного ключа).
Защита от атак первого вида криптографическими средствами не обеспечивается. Необходимо предусматривать экранирование физически при помощи конструктивных доработок.
Для борьбы с тайминг-атаками применяются два метода:
Добавление в конец каждого вычисления случайной задержки.
Стандартизация времени выполнения операции.
Следует учитывать особенности современных компиляторов по оптимизации программного кода. При компиляции программы в некоторых средах программирования компилятор удаляет все «лишние по его мнению» инструкции.
Контрольные вопросыКакие бывают виды криптографических протоколов?
Для чего предназначен «билет» в протоколе Kerberos?
Для чего применяется протокол X.509?
Для чего нужна схема предварительного распределения ключей?
Для чего нужна схема разделения секрета?
В чем отличие между канальным и абонентским шифрованием?
Перечислите атаки с использованием побочных каналов.
7.КРИПТОАНАЛИЗ И ПЕРСПЕКТИВНЫЕ НАПРАВЛЕНИЯ В КРИПТОГРАФИИ7.1. Основные методы криптоанализа.
7.1.1. Атаки на симметричные криптоалгоритмы.
7.1.2. Атаки на хэш-функции и коды аутентичности.
7.1.3. Атаки на асимметричные криптосистемы.
7.2. Перспективные направления в криптографии.
7.2.1. Эллиптические кривые.
7.2.2. Эллиптические кривые над конечными полями.
7.2.3. Алгоритм цифровой подписи EC-DSA.
7.2.4. Квантовая криптография.
7.1. Основные методы криптоанализа7.1.1. Атаки на симметричные криптоалгоритмыСуществует множество типов атак на симметричные алгоритмы шифрования и хэш-функции, каждый из которых обладает своей степенью сложности:
Атака с использованием только шифрованного текста (ciphertext-only attack). Самая сложная атака, при которой злоумышленник обладает минимальным объемом информации. Цель атаки – нахождение ключа и/или открытого текста.
Атака с известным открытым текстом (known plaintext attack). Злоумышленник знает один или произвольное количество открытых текстов и соответствующих им шифртекстов. Цель атаки – нахождение ключа и/или открытых текстов, зашифрованных на том же ключе.
Атаки с избранным открытым текстом (chosen plaintext attack): автономная (offline) и оперативная (online). Злоумышленник имеет возможность сам выбирать один или произвольное количество открытых текстов и вычислять соответствующий ему шифртекст. Набор открытых текстов подготавливается заранее (автономно) или генерируется в процессе атаки (оперативно). Цель атаки – нахождение ключа.
Атака с избранным шифрованным текстом (chosen ciphertext attack). Злоумышленник имеет возможность выбирать как открытый текст (получая соответствующий ему шифрованный текст), так и шифрованный текст (с получением соответствующего ему открытого текста). Цель атаки – нахождение ключа.
Различающие атаки (distinguishing attack). Любые нетривиальные методы, позволяющие обнаружить различие между идеальным и реальным шифром. Цель атаки – дискредитация криптосистемы.
Атаки на основе коллизий. Атака на основе парадокса задачи о днях рождения (birthday attack) на хэш-функции. Двусторонняя атака или «встреча посередине» (meet-in-the-middle attack) на код аутентификации. Цель – подмена-имитация сообщений.
Отдельно различают атаки с использованием активного аппаратного воздействия на криптосистему при помощи различных излучений, вызывающих помехи и ошибки. Данные атаки возникли в связи с массовым использованием интеллектуальных электронных карточек (smart cards).
Метод прямого перебора (brute force).
Данный метод используется при атаках типа 1 и 2. В случае атаки типа 2 на основе полного шифртекста или его фрагмента и соответствующего ему открытого текста осуществляют последовательное расшифрование на всем множестве возможных ключей до совпадения открытого текста. При этом длина известного фрагмента открытого текста должна превышать расстояние единственности. В случае атаки типа 1 при неизвестном открытом тексте вычислительная сложность метода увеличивается, так как необходимо введение дополнительного критерия на «осмысленность» открытого текста.
Метод прямого перебора возможен только при известном алгоритме шифрования и алгоритм, лежащий в его основе, является экспоненциальным.
Стойкость криптосистемы по отношению к методу прямого перебора полностью определяется мощностью ключевого пространства |K| или энтропией ключа (при переборе со словарем). Минимальные требования к энтропии ключа современных симметричных криптосистем – 128 бит. В настоящее время рекомендуется использовать 256-битовые ключи.
Таблица 13. Мощностные характеристики пространства ключей.
Криптосистема |K| Среднее время перебора для INTEL ASCI RED
DES 7,21·1016 9,4 ч
IDEA 3,4·1038 1,3·1021 лет
ГОСТ 28147-89 1,16·1077 1,7·1058 лет
Методы криптоанализа с использованием теории статистических решений.
Цель статистического криптоанализа – получение открытого текста или некоторой вероятностной информации о нем. Два основных метода статистического криптоанализа:
Метод максимального правдоподобия (метод частотного анализа) базируется на логарифмической функции правдоподобия, которая строится на таблице частотных характеристик предполагаемого открытого текста и шифртекста.
Байесовский метод основан на предположении о случайном ключе с известным распределением вероятностей, функции потерь, функционала риска и Байесовской оценки, минимизирующей функционал риска.
Анализ поточных криптосистем.
При проведении криптоанализа поточных алгоритмов решаются следующее задачи:
Распознавание ЛРП:
Если s0,s1,… - линейная рекуррентная последовательность с минимальным многочленом m(λ) степени n, то ганкелев определитель

равен 0 для всех k n + 1 и всех t 0. С другой стороны, если s0,s1,… - последовательность независимых случайных величин 0 < p(st = 0) < 1, то

при T → ∞ для любого фиксированного натурального k.
Оценка параметров ЛРП.
Производится на основе алгоритма Берленкемпа-Мэсси, который позволяет по 2k-отрезку s0,…,s2k-1 линейной рекуррентной последовательности определить минимальный многочлен m(λ) если степень последнего не превышает k.
Определение начального состояния ЛРП.
Производится на основе опробования различных начальных векторов S0 и сравнения результатов генерации s0,s1,… с известными фрагментами перехваченной искаженной последовательности (шифртекста). Задача упрощается при малом количестве ненулевых коэффициентов характеристического многочлена, что свойственно часто употребляемым прореженным многочленам.
4. Корреляционный анализ (применяется для комбинированных генераторов различных типов).
Анализ блочных криптосистем.
На сегодняшний день двумя самыми известными методами анализа блочных криптосистем являются дифференциальный (разностный) и линейный криптоанализ. Первый реализует атаку типа 3, второй атаку типа 2.
Дифференциальный криптоанализ.
Первые открытые упоминания в литературе с 1990 года в работах Мерфи, Бихема и Шамира. Методика анализа строится индивидуально для каждого алгоритма и основана на знании пар сообщений m и m’ для которых известны соответствующие шифртексты Ek(m) и Ek(m’) и XOR-разности между ними с рассмотрением разности между промежуточными частями блоков сообщений.
Для двухветвевой сети Файстеля Δmi = mi m’i. При этом для каждого раунда в отдельности справедливо следующее:
Δmi+1 = mi+1 m’i+1 = Δmi-1 [f(mi,Ki) f(m’i,Ki)]
Предполагается, что для многих пар входных данных функции f, имеющих одну и ту же XOR-разность, при использовании одного и того же подключа одинаковой оказывается и XOR-разность для соответствующих выходных пар. Формально говорят, что X влечет Y с вероятностью р, если для относительной доли р входных пар с XOR-разностью Х для соответствующих выходных пар XOR-разность оказывается равной Y. Предположим теперь, что имеется ряд значений X, которые с высокой вероятностью влекут определенные разности выходных значений. Тогда если нам с большой вероятностью известны значения Δmi-1 и Δmi то мы с большой вероятностью можем определить и Δmi-1. А если удастся найти достаточно много таких значений разности, становится возможным определить подключ, используемый функцией f.
Общая стратегия дифференциального криптоанализа основывается на представленной выше методике для каждого раунда шифрования в отдельности. Процедура начинается с рассмотрения двух сообщений открытого текста m и m' с заданной разностью и имеет своей целью получение вероятностных оценок разностей промежуточных результатов последовательно раунд за раундом с тем, чтобы определить вероятностную оценку для разности соответствующих шифрованных текстов. На самом деле получаются вероятностные оценки для двух 32-битовых половинок сообщения (m17 || m16). После этого выполняется шифрование m и m’, чтобы определить реальные разности при неизвестном ключе, а затем , сравнить результат с вычисленными вероятностными оценками. Если результаты совпадают, т.е.
Ек(m) Ек(m’) = (Δm17||m16),
то можно ожидать, что вероятностные оценки для всех раундов соответствуют реальности. Это позволяет сделать определенные заключения о некоторых битах ключа. Чтобы определить все биты ключа, процедуру приходится повторять много раз.
Линейный криптоанализ.
Более новым направлением в криптоанализе является линейный криптоанализ. Метод линейного криптоанализа заключается в построении линейной аппроксимации преобразования, выполняемого в ходе шифрования DES. Данный метод позволяет найти ключ DES при наличии 247 известных фрагментов открытого текста, тогда как для дифференциального криптоанализа требуется 247 фрагментов избранного открытого текста.
Пусть для шифра с n-битовыми блоками открытого и шифрованного текста и m-битовым ключом блок открытого текста будет обозначен Р[1],...,Р[n], блок шифрованного текста - С[1],..., С[n], а ключ - К[1],..., K[n]. Тогда определим
A[i,j,…,k] = A[i] A[j] ...A[k].
Целью линейного криптоанализа является нахождение подходящего линейного уравнения вида
Р[α1, α2„..., αa] С[β1, β2,..., βb] = К[γ1, γ2,..., γc],
выполняющегося с вероятностью р 0,5 (где х = 0 или 1, 1 ≤ а, b ≤ n, 1 ≤ с ≤ т, а α, β и γ представляют фиксированные битовые позиции в блоках). Чем больше значение р отклоняется от 0,5, тем более подходящим считается уравнение. После этого вычисляются значения левой части данного уравнения для большого числа пар соответствующих фрагментов открытого и шифрованного текста. Если результат оказывается равным 0 более чем в половине случаев, полагают, что K[γ1, γ2,..., γc] = 0. Если же в большинстве случаев получается 1, полагают, что K[γ1, γ2,..., γc] = 1. Достаточное количество полученных таким образом равенств образуют систему, решением которой определяется ключ. Ввиду линейности получаемых уравнений, проблему можно решать для каждого раунда шифрования в отдельности, а полученные результаты затем объединить.
7.1.2. Атаки на хэш-функции и коды аутентичностиАтака «дней рождения».
Этот тип атаки основан на том факте, что одинаковые значения, называемые также коллизиями (collisions), появляются намного быстрее, чем можно было ожидать. В системе финансовых транзакций, в которой для обеспечения безопасности, применяется новый 64-битовый ключ аутентификации. (Для простоты предполагается, что шифрование не используется.) Существует 264 возможных значения ключа (это больше, чем 18·1018, т.е. 18 миллиардов миллиардов). Отследив около 232 транзакций, злоумышленник может предположить, что две из них используют один и тот же ключ. Предположим, что сообщение-заголовок, передаваемый в ходе каждой транзакции, всегда одинаково. Если две транзакции используют один и тот же ключ аутентификации, тогда значения MAC первых сообщений этих транзакций будут совпадать, что легко отследит злоумышленник. Зная, что обе транзакции используют один и тот же ключ аутентификации, он сможет вставлять сообщения из более старой транзакции в более новую транзакцию во время выполнения последней. Поскольку ложные сообщения успешно пройдут аутентификацию, они будут приняты, что является очевидным взломом системы финансовых транзакций.
В общем случае, если элемент может принимать N различных значений, ожидать первой коллизии можно после случайного выбора приблизительно элементов. В большинстве случаев мы будем говорят об n-битовых значениях. Поскольку n-битовый элемент может иметь 2n возможных значения, необходимо извлечь = 2n/2 элементов множества, чтобы надеяться на возникновение коллизии. Назовем это оценкой 2n/2 или оценкой парадокса задачи о днях рождения (birthday bound).
Двусторонняя атака.
Является разновидностью атак, в основе которых лежит парадокс задачи о днях рождения, носит также название атаки "встреча на середине" (meet-in-the-middle attacks). (В совокупности оба типа атак называются атаками на основе коллизий (collision attacks).) Этот тип атак более распространен и более результативен.
В системе финансовых транзакций, в которой для каждой транзакции используется новый 64-битовый ключ, используя двустороннюю атаку, злоумышленник может еще более продвинуться во взломе системы. Для этого он случайным образом выбирает 232 различных 64-битовых ключа. По каждому из них он подсчитывает значение MAC для сообщения-заголовка. Полученное значение MAC вместе с соответствующим ключом помещается в таблицу. Затем злоумышленник прослушивает каждую транзакцию и проверяет, не окажется ли значение MAC первого сообщения этой транзакции в его таблице. Если такая транзакция находится, значит, с высокой долей вероятности ее ключом аутентификации является тот самый ключ, который был сгенерирован злоумышленником и помещен в таблицу вместе с соответствующим значением MAC. Теперь, когда злоумышленник обладает ключом аутентификации транзакции, он может вставлять в нее собственные сообщения с любым нужным ему текстом. (Предыдущий тип атаки позволял злоумышленнику вставлять только сообщения, взятые из более старой транзакции.)
После 232 транзакций злоумышленник может ожидать появление транзакции, использующей ключ из его таблицы. Таким образом, злоумышленнику придется проделать 232 предварительных подсчета и прослушать 232 транзакции. Это намного меньше, чем перебирать все 264 возможных ключа.
Различие между атакой, в основе которой лежит парадокс задачи о днях рождения, и двусторонней атакой состоит в следующем. В первом случае мы ждем, когда одно и то же значение появится дважды в одном множестве элементов. В двусторонней атаке у нас есть два множества элементов и мы ждем, когда эти множества пересекутся. И в том и в другом случае ожидать первого результата можно примерно через одинаковое количество элементов.
Двусторонняя атака является более гибкой, чем атака, в основе которой лежит парадокс задачи о днях рождения. Предположим, что элементы обоих множеств могут принимать JV возможных значений. Пусть в первом множестве содержится Р элементов, а во втором - Q элементов. Из них можно образовать PQ различных пар, в которых один элемент будет принадлежать первому множеству, а другой — второму множеству. Для каждой пары вероятность того, что значения ее элементов совпадут, равна 1/N. Мы можем ожидать возникновения коллизии, когда значение PQ/N приближается к единице. В этом случае наиболее эффективным выбором будет Р Q N. Отметим, что двусторонняя атака обладает определенной гибкостью в отношении выбора Р и Q. Иногда элементы одного множества легче получить, чем элементы второго, поэтому размер множеств может быть и неодинаков. Единственным требованием является соблюдение условия PQ N. Мы можем выбрать Р N1/3, a Q N2/3. В приведенном выше примере злоумышленник может составить таблицу из 240 значений MAC и ожидать первого совпадения уже после 224 прослушанных транзакций.
7.1.3. Атаки на асимметричные криптосистемыАтаки на криптосистемы, основанные на сложности задачи факторизации.
Очевидное направление криптоанализа систем шифрования и цифровой подписи, основанных на сложности решения задачи факторизации – разработка переспективных методов факторизации целых чисел.
Наиболее известные методы факторизации целых чисел.
Методы факторизации с экспоненциальной сложностью:
Метод пробных делений.
Алгоритм Ферма.
(p - 1) – метод Полларда.
δ-метод Полларда.
Метод Шермана-Лемана.
Алгоритм Ленстры.
Алгоритм Полларда-Штрассена.
(p + 1) – метод Уильямса.
Метод Шэнкса.
Практическая значимость данных алгоритмов, как правило невелика. Наибольшие успехи в решении задачи факторизации достигнуты с помощью субэкспоненциальных методов:
Метод Диксона.
Алгоритм Бриллхарта-Моррисона.
Метод квадратичного решета QS (quadratic sieve) предложен К. Померансом в 1981 году эффективен для чисел n < 10110.
Методы Шнорра-Ленстры и Ленстры-Померанса (активно на практике не использовались).
Обобщенный метод решета числового поля GNFS (General number field sieve) на сегодняшний день лучший по показателям из официально опубликованных методов факторизации предложен в 1990 году.
Алгоритм Ленстры для факторизации с помощью эллиптических кривых (аналогичен (p - 1) – методу Полларда, но применяются вычисления в группе точек эллиптической кривой).
Таблица 14. Рекорды факторизации на примере системы RSA
Число Дата Сложность, MIPS-лет Алгоритм
RSA-100 Апрель 1991 7 QS
RSA-110 Апрель 1992 75 QS
RSA-120 Июнь
1993 830 QS
RSA-129 Апрель 1994 5000 QS
Окончание табл. 14
RSA-130 Апрель 1996 500 GNFS
RSA-140 Февраль 1999 2000 GNFS
RSA-155 Август 1999 8000 GNFS
Последнее достижение – факторизация числа RSA-155, потребовавшая:
- использования 160 рабочих станций SGI и Sun (175-400 МГц);
- 8 процессоров SGI Origin 2000 (250 МГц);
- 120 персональных компьютеров Pentium II (300-450 МГц);
- 4 кластеров Digital\Compaq (500 МГц);
- 9 недель для настройки параметров GNFS;
- 5.2 месяца для сбора вспомогательных пар чисел;
- 3.2 Гб оперативной памяти, 224 часа вычислений на Cray C916 для обработки матрицы размером 6699191×6711336 c 417132631 ненулевыми элементами.
Возможные атаки на систему RSA.
Факторизация модуля n = p · q.
Решение сравнения для конкретного y - нахождение корня степени e из y по модулю p. (задача не менее сложная, чем задача факторизации).
Метод повторного шифрования – сводится к поиску ключа d’ для дешифрования на основе того, что существует такое натуральное число m, что . Производится последовательное повторное зашифрование сообщения y: до тех пор, пока не получим опять значения y: , решением будет: x = ym-1.(Метод эффективен при неправильном подборе параметров RSA.)
Метод факторизации модуля системы на основе дискредитированного ключа d. (Нельзя использовать одинаковый модуль для многопользовательских систем, при потере хотя бы одного ключа – вскрывается вся система.) Кроме того, знание хотя бы одного секретного ключа многопользовательской системы с единым модулем позволяет найти любой другой секретный ключ даже без факторизации n.
Определение секретного ключа d простым перебором (при малом d.)
Определение секретного ключа d с использованием непрерывных дробей, по теореме Винера (при .)
Бесключевое чтение циркулярных сообщений на общей открытой экспоненте e и трех взаимно простых модулях n1, n2, n3 посредством решения системы из трех сравнений.
Атаки на криптосистемы, основанные на сложности задачи дискретного логарифмирования.
Очевидное направление криптоанализа систем шифрования и цифровой подписи, основанных на сложности решения задачи дискретного логарифмирования – разработка переспективных методов дискретного логарифмирования.
Наиболее известные методы дискретного логарифмирования:
Алгоритм согласования.
Алгоритм Полига-Хеллмана.
δ-метод Полларда для дискретного логарифмирования.
Дискретное логарифмирование в простых полях (алгоритмы Адлемана, COS.)
Дискретное логарифмирование в полях Галуа (алгоритмы index-calculus, Эль-Гамаля, Копперсмита).
Алгоритмы решета числового поля для дискретного логарифмирования.
Рекорды дискретного логарифмирования: логарифмирование по простому модулю (алгоритм COS с гауссовыми целыми). Сложность 60 MIPS-лет для нахождения соотношений и около трех недель – решение системы линейных уравнений.
Криптоанализ рюкзачных систем.
Доказано, что существует алгоритм полиномиальной сложности получения открытого текста по шифртексту на основе так называемой «косозубой функции». Алгоритм известен под названием LLL (Ленстры-Ленстры-Ловаша).
7.2. Перспективные направления в криптографии7.2.1. Эллиптические кривыеПроективная плоскость P2(K) над полем K определяется как множество троек (X, Y, Z) не равных одновременно нулю элементов X, Y, Z K, на котором введено отношение эквивалентности:
(X, Y, Z) ~ (X, Y, Z) для любых K*.
Так, например, две точки (4, 1, 1) и (5, 3, 3) эквивалентны в P2(F7).
Класс эквивалентности троек называется проективной точкой.
Эллиптической кривой E называется множество точек проективной плоскости, удовлетворяющих однородному уравнению Вейерштрасса
E: F(X, Y, Z) = –X3 + Y2Z + a1XYZ – a2X2Z + a3YZ2 – a4XZ2 – a6Z3 = 0,
c ai K.
Это уравнение называют также длинной формой Вейерштрасса. Кривая должна быть неособой в том смысле, что частные производные не должны обращаться в нуль одновременно ни в одной ее точке.
Множество K-рациональных точек кривой E (то есть точек, удовлетворяющих уравнению кривой) обозначается через E(K).
Кривая имеет только одну точку, чья координата Z = 0, а именно (0, 1, 0). Ее принято называть бесконечно удаленной точкой (или точкой на бесконечности) и обозначать символом O.Для удобства часто пользуются аффинной версией уравнения Вейерштрасса:
E: Y2 + a1XY + a3Y = X3 + a2X2 + a4X + a6, c ai K.
K-рациональные точки в аффинном случае – это решения уравнения в K2 и бесконечно удаленная точка O.
Переход от аффинных к проективным координатам:
- точка на бесконечности всегда переходит в бесконечно удаленную точку, как при переходе от аффинных координат к проективным, так и наоборот;
- проективная точка (X, Y, Z) кривой, отличная от бесконечно удаленной (Z 0), переходит в аффинную точку с координатами (X/Z, Y/Z);
- чтобы найти проективные координаты аффинной точки (X, Y), не лежащей на бесконечности, достаточно выбрать произвольное значение Z K* и вычислить (X·Z, Y·Z, Z).
Иногда удобнее пользоваться модифицированной формой проективной плоскости, когда проективные координаты (X, Y, Z) представляют аффинную точку (X/Z2, Y/Z3).
Для эллиптической кривой вводятся следующие константы:

Дискриминант кривой E определяется по формуле

Если char K 2, 3, то дискриминант можно вычислить и так:

Деление на 1728 = 2633 имеет смысл только в тех полях, чья характеристика отлична от 2 и от 3. Кривая E неособа тогда и только тогда, когда . Далее рассматриваются только неособые кривые.
Для неособых кривых вводится j-инвариант

он тесно связан с понятием изоморфизма эллиптических кривых.
Говорят, что кривая E с координатами X и Y изоморфна над полем K кривой E’ с координатами X’, Y’ (обе заданы уравнением Вейерштрасса), если найдутся такие константы r, s, t K и u K*, что при замене переменных
X = u2X’ + r, Y = u3Y’ + su2X’ + t
кривая E перейдет в кривую E’. Отметим, что изоморфизм кривых определен относительно поля K. Изоморфизм эллиптических кривых является отношением эквивалентности.
Лемма. Изоморфные над полем K кривые имеют один и тот же j-инвариант. С другой стороны, любые кривые с совпадающими j-инвариантами изоморфны над алгебраическим замыканием поля K. То есть j-инвариант разделяет классы эквивалентности отношения изоморфизма над алгебраическим замыканием поля K.
Групповой закон.
Рассмотрим для char K 2, 3 замену переменных

переводящую кривую заданную длинной формой Вейерштрасса в изоморфную ей кривую, определяемую короткой формой Вейерштрасса E: Y2 = X3 + aX + b при некоторых a, b K. На таких представителях классов изоморфных эллиптических кривых можно наглядно ввести групповой закон методом хорд и касательных.
Сложение точек определяется с помощью хорд. Пусть P и Q – две точки кривой. Соединим их прямой линией. Она обязательно пересечет кривую в какой-то третьей точке R, поскольку мы пересекаем кубическую кривую прямой. Точка R будет определена над тем же полем, что сама кривая и исходные точки P и Q. Отразим затем точку R относительно горизонтальной оси координат и получим точку, определяемую над основным полем. Последняя точка и будет суммой P + Q.

Рис.38. Групповой закон. Сложение точек
Касательные служат для удвоения точек (используя хорду нельзя сложить точку с собой). Пусть P – произвольная точка эллиптической кривой. Проведем касательную к кривой в точке P. Она пересечет кривую в какой-то третьей точке R (кубическая кривая пересекается по трем точкам с учетом кратности пересечения). Отразив R относительно горизонтальной оси, мы получим точку [2]P = P + P. Вертикальная касательная в точке P «пересекает» кривую в бесконечно удаленной точке. В этой ситуации P + P = O и говорят, что P – точка порядка 2.

Рис.39. Групповой закон. Удвоение точек
Метод хорд и касательных наделяет эллиптическую кривую структурой абелевой группы с бесконечно удаленной точкой в качестве нейтрального (единичного) элемента, то есть нуля. Определение операций можно легко перенести на случай общей эллиптической кривой, заданной длинной формой Вейерштрасса (в частности характеристика поля может быть любой). Необходимо только заменить отражение относительно оси абсцисс на симметрию относительно прямой
Y = a1X + a3
Алгебраические формулы, реализующие сложение точек по методу хорд и касательных.
Лемма. Пусть E – эллиптическая кривая, определяемая уравнением
E: Y2 + a1XY + a3Y = X3 + a2X2 + a4X + a6,
на которой выбраны точки P1(x1, y1) и P2(x2, y2). Точка –P1 имеет координаты
–P1(x1 – y1 – a1x1 – a3).
Введем коэффициенты

при x1 x2 и

если x1 = x2, но P2 –P1. Если P3(x3, y3) = P1 + P2 O, то x3 и y3 вычисляются по формулам:

Фиксируем натуральное число m и обозначим через [m] отображение кривой на себя, сопоставляющее каждой точке P ее кратное [m]P, то есть

Это отображение – основа криптографических систем, опирающихся на эллиптическую кривую, поскольку его можно легко вычислить, но крайне сложно обратить, то есть по данным координатам P(x, y) и [m]P(x’, y’) найти m очень трудно. (Конечно сложность обращения предполагает специальный выбор эллиптической кривой и соблюдения других условий).
7.2.2. Эллиптические кривые над конечными полямиКоличество Fq-рациональных точек над эллиптической кривой конечно. Обозначим его #E(Fq). Ожидаемое число точек кривой близко к q + 1 и можно положить
#E(Fq) + q + 1 – t,
где «дефект» t называется следом отображения Фробениуса в q.
Теорема Хассе. След отображения Фробениуса удовлетворяет неравенству

Есть два частных случая криптографически непригодных эллиптических кривых:
- Кривая E(Fq) называется аномальной, если ее след Фробениуса равен 1, тот есть
#E(Fq) = q. Эта кривая особенно неудобна, когда q – простое число.
- Кривая E(Fq) называется суперсингулярной, если характеристика p поля Fp делит след отображения Фробениуса t. Таких кривых также следует избегать в криптографии.
Выбирая кривую для шифрования, нужно стремиться к тому, чтобы число ее точек делилось на достаточно большое простое число. В связи с этим необходимо научиться вычислять порядок группы. Порядок произвольной группы E(Fq) над любым полем вычисляется за полиномиальное время.
Информация о порядке группы также существенна для оценки стойкости протокола, основанного на соответствующей кривой.
Одним из достоинств эллиптических кривых является то, что они доставляют большое число возможных групп. Можно менять как основное поле, так и коэффициенты уравнения кривой. Отыскать эллиптическую кривую с хорошими криптографическими свойствами для создания безопасного протокола достаточно легко.
Как правило реализация криптографичеких систем, основанных на эллиптической кривой, базируется на поле , чья характеристика равна 2, или на поле Fp с большим простым числом p.
Проективные координаты
Одна из проблем, возникающих при использовании формул группового закона как при большой, так и при четной характеристике поля, связана с необходимостью деления. Деление в конечном поле считается дорогой операцией, так как включает в себя некий вариант расширенного алгоритма Евклида, который хотя и имеет приблизительно ту же сложность, что и умножение, однако обычно не может быть реализован достаточно эффективно.
Во избежание операции деления применяют проективные координаты. При этом уравнение кривой записывается через три координаты (X, Y, Z) вместо двух (X, Y). Однако вместо стандартного варианта уравнения кривой используется уравнение вида
E: Y2 + a1XYZ + a3YZ4 = X3 + a2X2Z2 + a4XZ4 + a6Z6.
Точка на бесконечности здесь также имеет координаты (0, 1, 0), но переход от аффинных координат к проективным осуществляется по правилу
.
выбор таких координат обусловлен стремлением сделать арифметические операции более эффективными.
Сжатие точек
Во многих криптографических протоколах возникает необходимость хранить в памяти или передавать по сети отдельные точки эллиптической кривой. В аффинных координатах это можно сделать при помощи двух элементов поля: координат x и y. Однако экономнее применять так называемую технику сжатия точек.
Метод сжатия точек работает благодаря тому, что уравнение кривой в аффинных координатах при фиксированном значении x превращается в квадратно уравнение относительно координаты y. Значит, вместо двух координат для идентификации точки кривой можно хранить в памяти компьютера только координату x и еще некий двоичный параметр b, сообщающий о том, какое именно значение координаты y нужно брать.
Кривые над полем характеристики p > 3.
Пусть основное поле K = Fq с q = pn, где p > 3 – простое число и .
Уравнение кривой над таким полем можно представить в виде короткой формы Вейерштрасса
E: Y2 = X3 + aX + b.
Ее дискриминант равен Δ = – 16(4a3 + 27b2), а j-инвариант – j(E) = – 1728(4a)3/ Δ.
Формулы группового закона: – P1 = (x1, y1) и, если P3(x3, y3) = P1 + P2 O, то координаты x3, y3 вычисляются так:

где при x1 x2

а при x1 = x2, y1 0

В проективных координатах формулы сложения точек эллиптической кривой, заданной уравнением
E: Y2 = X3 + aXZ2 + bZ6,
над полем характеристики p > 3 выглядят как

где тройка координат вычисляется последовательно по правилу:

здесь нет ни одной операции деления, кроме деления на 2, которое легко заменяется умножением на заранее вычисленное число 2–1(mod p).
Удвоение точек упрощается с помощью формул

Сжатие точек эллиптической кривой над полем характеристики p > 3.
Если p > 2, то квадратные корни β из элемента α Fp представляются натуральными числами разной четности из промежутка 1, …, p – 1, поскольку
– β = p – β (mod p).
Таким образом в качестве параметра b можно выбрать четность y координаты соответствующей точки. Полная информация о координатах точки по паре (x, b) осуществляется следующим образом. Сначала вычисляется

а затем переменной y присваивают значение β, если четность β совпадает с четностью b, и p – β, когда четности разные. Если же оказывается, что β = 0, то, не обращая внимания на параметр b, можно положить y = 0.
Не путать параметр четности b с коэффициентом кривой b.
Эллиптические группы
Эллиптическая группа по модулю p определяется следующим образом. Выбираются два неотрицательных числа a и b, которые меньше p и удовлетворяют условию
4a3 + 27b2 (mod p) 0 (кривая не аномальная и не суперсингулярная).
Тогда Ep(a, b) обозначает эллиптическую группу по модулю p, элементами которой (x, y) являются пары неотрицательных целых чисел, которые меньше p и удовлетворяют условию
y2 ≡ x3 + ax + b (mod p)
вместе с точкой в бесконечности O.
Пример.
p = 23. Рассмотрим эллиптическую кривую y2 = x3 + x + 1. В этом случае a = b = 1 и мы имеем 4 13 + 27 12 (mod 23) = 8 0, что удовлетворяет условиям эллиптической группы по модулю 23.
Для эллиптической группы рассматриваются только целые значения от (0, 0) до (p, p) в квадранте неотрицательных чисел, удовлетворяющих уравнению по модулю p.
В общем случае список таких точек (см. табл.) составляется по следующим правилам.
1. Для каждого такого значения x, что , вычисляется x3 + ax + b (mod p).
2. Для каждого из полученных на предыдущем шаге значений выясняется, имеет ли это значение квадратный корень по модулю p (вычисляется символ Лежандра). Если нет, то в Ep(a, b) нет точек с этим значением x. Если же корень существует, имеется два значения y, соответствующих операции извлечения квадратного корня (исключением является случай, когда единственным таким значением оказывается y = 0). Эти значения (x, y) и будут точками Ep(a, b).
Таблица 15. Точки на эллиптической кривой E23(1, 1)
(0, 1) (1, 7) (3, 10) (4, 0) (5, 4) (6, 4) (7, 11)
(0, 22) (1, 16) (3, 13) O (5, 19) (6, 19) (7, 12)
(9, 7) (11, 3) (12, 4) (13, 7) (17, 3) (18, 3) (19, 5)
(9, 16) (11, 20) (12, 19) (13, 16) (17, 20) (18, 20) (19, 18)
Пример. Сложение и удвоение точек данной группы. P = (3, 10), Q = (9, 7).
Сложение:

Удвоение:

Умножение определяется как повторное применение операции сложения
[4]P = P + P + P + P.
Кривые над полем характеристики 2
Пусть основное поле K = Fq с q = 2n при . В этом случае j-инвариант кривой вычисляется по формуле Условие j(E) = 0, то есть a1 = 0, в характеристике 2 равносильно суперсингулярности кривой E, а такие кривые в криптографии не используются поэтому полагаем что j(E) 0.
В этих предположениях представитель любого класса изоморфизма эллиптических кривых над Fq записывается уравнением
E: Y2 + XY = X3 + a2X2 + a6,
где и Здесь γ – фиксированный элемент поля Fq, удовлетворяющий соотношению: .
Формулы группового закона: – P1 = (x1, y1 – x1) если P3(x3, y3) = P1 + P2 O, то

где при x1 x2

а при x1 = x2 0

В проективных координатах формулы сложения точек эллиптической кривой, заданной уравнением
E: Y2 + XYZ = X3 + a2X2Z4 + a6Z6,
над полем характеристики p = 2 выглядят как

где тройка координат вычисляется последовательно по правилу:

Координаты удвоенной точки определяются по правилу:

Сжатие точек эллиптической кривой над полем характеристики 2.
Дана точка P(x, y) на эллиптической кривой. Если y = 0, то можно положить b = 0. В противном случае вычисляют z = y / x и присваивают переменной b самый младший двоичный разряд числа z. Для восстановления y по данной паре (x, b) в случае x 0 вычисляют

и обозначают через β одно из решений уравнения z2 + z = α.
Если наименьший двоичный разряд числа β совпадает с b, то y = xβ. В противном случае y = x(β – 1).
7.2.3. Алгоритм цифровой подписи EC-DSAАлгоритм DSA можно обобщить на произвольную конечную абелеву группу A , в которой сложно решается задача дискретного логарифмирования, порождающий элемент G имеет простой порядок Q > 2160 и существует открытая функция F: A Z/QZ. В последнее время широкое распространение получили криптосистемы на эллиптических кривых. Аналог алгоритма DSA, обобщенный для работы с эллиптическими группами точек, носит название EC-DSA.
Различия в средах оперирования DSA и EC-DSA сведены в табл. 16.
Таблица 16. Параметры DSA и EC-DSA.
Параметр DSA EC-DSA
А
G
Y Gx [x]P
F (mod Q) x-координата по модулю Q
В обобщенной версии DSA каждый пользователь тоже генерирует секретный подписывающий ключ x и вычисляет открытый по формуле: Y = [x]P. Подпись получается в результате выполнения следующего алгоритма:
- Вычисляется хэш-значение H = H(M).
- Выбирается эфемерный ключ k, 0 < k < Q.
- Определяется R = F([k]P) и S = (H + xR)/k (mod Q).
Подписью сообщения M служит пара (R, S).
Для проверки подписи (R, S) на сообщении M осуществляют следующую процедуру:
- Вычисляют хэш-значение H = H(M).
- Определяют A = H/S (mod Q) и B = R/S (mod Q).
- Находят V = F([A]P + [B]Y), где Y – открытый ключ подписавшего сообщение.
- Подпись считается корректной, если V = R.
Пример. Возьмем за основу эллиптическую кривую над полем F199 вида:
E: Y 2 = X 3 + X + 3.
Число ее элементов равно Q = 197, то есть является простым. Поэтому соответствующая группа – циклическая, а координаты ее образующей P – (1, 76). Выберем x = 29 в качестве закрытого ключа. Тогда соответствующий открытый ключ будет равен
Y = [x]P = [29](1, 76) = (113, 191).
Предположим, что владелец закрытого ключа намерен подписать сообщение с хэш-значением H(M) = 68. Тогда ему нужно сгенерировать эфемерный ключ, который выберем k = 153, и вычислить
R = x-коорд.([k]P) = x-коорд.([153](1, 76)) = x-коорд.((185, 35)) = 185.
Далее он находит
S = (H(M) + x · R)/k (mod Q) = (68 + 29 · 185)/153 (mod 197) = 78.
Подпись, которую он посылает вместе с сообщением, - это пара (R, S) = (185, 78).
Чтобы проверить подпись, мы вычисляем
A = H(M)/S (mod Q) = 68/78 (mod 197) = 112,
B = R/S (mod Q) = 185/78 (mod 197) = 15.
После этого определяем
Z = [A]P + [B]Y = [112](1, 76) + [15](113, 191) = (111, 60) + (122, 140) = (185, 35).
Подпись оказалась верной, поскольку
R = 185 = x-коорд.(Z).
7.2.4. Квантовая криптографияИдея квантовой криптографии основывается главным образом на физике фотонов. Как показано на рисунке 40, фотон во время своего движения производит колебания. Все четыре фотона летят в одном направлении, но в каждом случае угол колебаний различен. Угол колебаний называется поляризацией фотона, и лампочкой накаливания создаются фотоны всех поляризаций, что означает, что у части фотонов колебания будут происходить вверх-вниз, у части фотонов — влево-вправо, а у остальных колебания будут происходить при любых углах между этими направлениями. Для простоты предположим, что фотоны обладают только четырьмя возможными поляризациями, которые мы обозначим .
Если на пути фотонов установить фильтр, называющийся поляризационным, то выходящий пучок света будет состоять из фотонов, которые колеблются в одном определенном направлении; другими словами, все фотоны будут иметь одну и ту же поляризацию. Любой фотон, поляризованный в том же направлении, что и поляризация поляризационного фильтра, заведомо пройдет через него без изменений, а фотоны, поляризованные в направлении, перпендикулярном фильтру, будут задержаны. Диагонально поляризованные фотоны, попадающие на поляризационный фильтр с вертикальной поляризацией, половина из них будет задержана, а половина пройдет через фильтр, причем те, которые пройдут, приобретут вертикальную поляризацию. На верхнем рисунке показаны восемь фотонов, попадающих на поляризационный фильтр с вертикальной поляризацией, а на нижнем рисунке показано, что через фильтр благополучно прошли только четыре из восьми фотонов. Прошли все вертикально поляризованные фотоны и половина диагонально поляризованных фотонов, а все горизонтально поляризованные фотоны задержаны.

Рис.40. Прохождение поляризованных квантов через вертикальную решетку.
Именно такая способность задерживать определенные фотоны и объясняет, каким образом действуют поляроидные солнцезащитные очки.
Идея использования поляризованных фотонов для организации криптографически защищенного канала связи принадлежит американским ученым Беннету и Брассарду. Они задались вопросом, что произойдет, если зашифрованное сообщение будет представлено, а затем передано с помощью поляризованных фотонов. Сущность метода состоит в том, что противник не сможет безошибочно прочесть зашифрованное сообщение, а раз не сможет прочесть зашифрованное сообщение, то не сможет и дешифровать его.
Рассмотрим схему организации такого канала.
Допустим, нам необходимо отправить зашифрованное сообщение, которое состоит из последовательности 1 и 0. Вместо этих 1 и 0 посылаются фотоны с определенными поляризациями. У нас есть две возможных схемы, с помощью которых можно связать поляризации фотонов с 1 или 0.
В первой схеме, называемой ортогональной или +-схемой, для представления 1 мы посылаем , а для представления 0 - . Во второй схеме, называемой диагональной или × -схемой, для представления 1 мы посылаем ,а для представления 0 - .
При отправке сообщения, представленного в двоичном виде, будем постоянно переключаться с одной схемы на другую непредсказуемым образом. Так что двоичное сообщение 1101101001 может быть передано следующим образом:
Сообщение 1 1 0 1 1 0 1 0 0 1
Схема + × + × × × + + × ×
Передача
Мы передаем первую 1 с использованием +-схемы, а вторую 1 - с использованием × -схемы. Так что в обоих случаях передается 1, но всякий раз она представляется различным образом поляризованными фотонами.
Если противник захочет перехватить это сообщение, то ему потребуется определить поляризацию каждого фотона. Чтобы измерить поляризацию каждого фотона, противник должен решить, каким образом сориентировать свой поляризационный фильтр по мере прихода каждого фотона. Он не может знать наверняка, какой схемой воспользовалась мы для каждого из фотонов, поэтому наугад выбирает ориентацию поляризационного фильтра, которая окажется неверной в половине случаев. А следовательно, она не сможет точно определить содержимое передаваемого сообщения.
Для реализации симметричной схемы шифрования достаточно использовать в качестве секретного ключа последовательность поляризации (вторая строка таблицы - +×+×××++××). Но здесь мы столкнемся с проблемой распределения ключей. А при использовании короткопериодичной гаммы поляризации проявятся еще и все слабости, присущие шифрам гаммирования.
На основе этого получен вывод, что для квантовой криптографии требуется три подготовительных этапа. Хотя эти этапы не включают в себя отправку зашифрованного сообщения, с их помощью осуществляется безопасный обмен ключом, с помощью которого позднее можно будет зашифровать сообщение.
Этап 1. Абонент А начинает передавать абоненту В случайную последовательность из 1 и 0 (биты), используя для этого случайным образом выбираемые ортогональные (горизонтальная и вертикальная поляризации) и диагональные поляризационные схемы. На рисунке показана такая последовательность фотонов, движущихся к В. Таблица 17. Возможные ошибки приема поляризованных квантов
Схема
А Бит
А Фотон
А Решетка
В Ошибка Фотон
В Бит
В Ошибка
Ортогональная 1 + Нет 1 Нет
× Да 1 Нет
0 Да
0 + Нет 0 Нет
× Да 1 Да
0 Нет
Диагональная 1 + Нет 1 Нет
0 Да
× Да 1 Нет
0 + Нет 1 Да
0 Нет
× Да 0 Нет
Этап 2. В должен измерить поляризацию этих фотонов. Поскольку он не имеет представления, какой поляризационной схемой А пользовался для каждого из фотонов, то в произвольном порядке выбирает +-решетку и ×-решетку. Иногда В выбирает правильный детектор, иногда — нет. Если В воспользуется не той решеткой, то он вполне может неправильно распознать фотон А. В таблице 17 указаны все возможные случаи.
К примеру, в верхней строке для посылки 1 абонент А использует ортогональную схему и поэтому передает ; далее В, используя правильную решетку, определяет и выписывает 1 в качестве первого бита последовательности. В следующей строке действия А те же самые, но В теперь использует неверную решетку, и поэтому он может определить или , что означает, что либо он верно выпишет 1, либо неверно - 0.
Этап 3. К этому моменту А уже отправил последовательность 1 и 0, а В уже определил их; какие-то правильно, какие-то — нет. После этого А звонит В по обычной незащищенной линии и сообщает ему, какую поляризационную схему он использовал для каждого фотона, но не как он поляризовала каждый из фотонов. Так, он может сказать, что первый фотон был послан с использованием ортогональной схемы, но не скажет, какой это был фотон: или , В сообщает А, в каких случаях он угадал с правильной поляризационной схемой. В этих случаях он, несомненно, измерил правильную поляризацию и верно выписал 1 или 0. В конечном итоге А и В игнорируют все те фотоны, для которых В пользовался неверной схемой, и используют только те из них, для которых он угадал с правильной схемой. В действительности они создали новую, более короткую последовательность битов, состоящих только из правильных измерений Боба. Весь этот этап изображен в виде таблицы в нижней части рисунка.
Благодаря этим трем этапам, абонентам А и В удалось образовать общую согласованную последовательность цифр, 11001001, которая показана на рисунке. Ключевым для этой последовательности является то, что она случайна, поскольку получена из исходной последовательности А, которая сама была случайной. Более того, события, когда В использует правильный детектор, сами являются случайными. Поэтому данная согласованная последовательность может использоваться в качестве случайного ключа. И вот теперь-то можно начать процесс зашифрования.

Рис.41. Квантовый канал обмена ключами.
Эта согласованная случайная последовательность может использоваться в качестве ключа для шифра одноразового шифрблокнота.
Во время передачи абонентом А поляризованных фотонов противник пытается измерить их, но он не знает, использовать ли +-решетку или ×-решетку. В половине случаев выбор решетки будет неверным. Это приведет к исчезновению фотонов из канала, что однозначно при выполнении этапов 2 и 3 приводит к несовпадению данных и указывает на присутствие противника в канале.
Подведем итог. Квантовая криптография является системой, которая обеспечивает секретность связи, не позволяя противнику безошибочно прочесть сообщение между абонентами. Более того, если противник попробует осуществить перехват, то абоненты смогут обнаружить его присутствие. Тем самым квантовая криптография дает абонентам возможность обменяться информацией и согласовать одноразовый шифрблокнот совершенно конфиденциальным образом, после чего они смогут использовать его в качестве ключа для зашифрования сообщения. Этот способ состоит из пяти основных этапов:
1) А посылает В последовательность фотонов, а В измеряет их.
2) А сообщает В, в каких случаях он измерил их правильно. (Хотя А и сообщает В, когда он выполнил правильное измерение, он не сообщает ему, каков должен быть правильный результат, так что, даже если противник и просматривает канал, это не представляет ровным счетом никакой опасности.)
3) Чтобы создать пару идентичных одноразовых шифрблокнотов, А и В отбрасывают те измерения, которые В выполнил неверно, и используют те из них, которые он выполнил правильно.
4) А и В проверяют неприкосновенность своих одноразовых шифрблокнотов путем сличения нескольких цифр.
5) Если процедура проверки показала удовлетворительные результаты, они могут использовать одноразовый шифрблокнот для зашифрования сообщения; если же проверка выявила ошибки, то им становится известно, что противник осуществил перехват фотонов, и им следует начать все заново.
Контрольные вопросыПеречислите типы атак на симметричные криптоалгоритмы.
В чам разница между дифференциальным и линейным криптоанализом?
В чем суть атаки на основе парадокса о днях рождения?
Назовите отличия атаки факторизацией от атаки дискретным логарифмированием?
В чем заключается преимущество использования асимметричных криптосистем на основе эллиптических кривых?
В чем основная идея квантовой криптографии?
ПриложениеНачальная и завершающая перестановки DES
Начальная перестановка (IP) 58 50 42 34 26 18 10 2
60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6
64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1
59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5
63 55 47 39 31 23 15 7
Перестановка, обратная начальной (IP-1)
40 8 48 16 56 24 64 32
39 7 47 15 55 23 63 31
38 6 46 14 54 22 62 30
37 5 45 13 53 21 61 29
36 4 44 12 52 20 60 28
35 3 43 11 51 19 59 27
34 2 42 10 50 18 58 26
33 1 41 9 49 17 57 25
Расширяющая перестановка DES:
Перестановка с расширением (E)
32 1 2 3 4 5
4 5 6 7 8 9
8 9 10 11 12 13
12 13 14 15 16 17
16 17 18 19 20 21
20 21 22 23 24 25
24 25 26 27 28 29
28 29 30 31 32 1
Сжимающая перестановка DES:
Вторая перестановка с выбором (PC-2)
14 17 11 24 1 5 3 28
15 6 21 10 23 19 12 4
26 8 16 7 27 20 13 2
41 52 31 37 47 55 30 40
51 45 33 48 44 49 39 56
34 54 46 42 50 36 29 32
Подстановка в S-блоке DES:
S-матрицы
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
S1 1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
2 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10
S2 1 3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5
2 0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15
3 13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8
S3 1 13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1
2 13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7
3 1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15
S4 1 13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9
2 10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4
3 3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9
S5 1 14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6
2 4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14
3 11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11
S6 1 10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8
2 4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14
3 11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1
S7 1 13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6
2 1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2
3 6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7
S8 1 1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2
2 7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8
3 2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11
Перестановка в P-блоке DES:
Перестановка (P)
16 7 20 21 29 12 28 17
1 15 23 26 5 18 31 10
2 8 24 14 32 27 3 9
19 13 30 6 22 11 4 25
Преобразования ключа DES.
Начальная перестановка 64-битового ключа (каждый восьмой бит – бит четности):
Первая перестановка с выбором (PC-1)
57 49 41 33 25 17 9
1 58 50 42 34 26 18
10 2 59 51 43 35 27
19 11 3 60 52 44 36
63 55 47 39 31 23 15
7 62 54 46 38 30 22
14 6 61 53 45 37 29
21 13 5 28 20 12 4
Циклические сдвиги влево:
Таблица сдвигов влево (вверху - раунд, внизу - число сдвигов)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1
Зашифрование и расшифрование в IDEA.
Шифрование
Стадия Обозначение Эквивалент
Раунд 1 Z1 Z2 Z3 Z4 Z5 Z6 Z[1..96]
Раунд 2 Z7 Z8 Z9 Z10 Z11 Z12 Z[97..128,26..89]
Раунд 3 Z1 Z2 Z3 Z4 Z5 Z6 Z[90..128,1..25,51..82]
Раунд 4 Z7 Z8 Z9 Z10 Z11 Z12 Z[83..128,1..50]
Раунд 5 Z1 Z2 Z3 Z4 Z5 Z6 Z[76..128,1..43]
Раунд 6 Z7 Z8 Z9 Z10 Z11 Z12 Z[44..75,101..128,1..36]
Раунд 7 Z1 Z2 Z3 Z4 Z5 Z6 Z[37..100,126..128,1..29]
Раунд 8 Z7 Z8 Z9 Z10 Z11 Z12 Z[30..125]
Преобразование Z49 Z50 Z51 Z52 Z[23..86]
Расшифрование
Стадия Обозначение Эквивалент
Раунд 1 U1 U2 U3 U4 U5 U6 Z49-1 –Z50 –Z51 Z52-1 Z47 Z48
Раунд 2 U7 U8 U9 U10 U11 U12 Z43-1 –Z45 –Z44 Z46-1 Z41 Z42
Раунд 3 U13 U14 U15 U16 U17 U18 Z37-1 –Z39 –Z38 Z40-1 Z35 Z36
Раунд 4 U19 U20 U21 U22 U23 U24 Z31-1 –Z33 –Z32 Z34-1 Z29 Z30
Раунд 5 U25 U26 U27 U28 U29 U30 Z25-1 –Z27 –Z26 Z28-1 Z23 Z24
Раунд 6 U31 U32 U33 U34 U35 U36 Z19-1 –Z21 –Z20 Z22-1 Z17 Z18
Раунд 7 U37 U38 U39 U40 U41 U42 Z13-1 –Z15 –Z14 Z16-1 Z11 Z12
Раунд 8 U43 U44 U45 U46 U47 U48 Z7-1 –Z9 –Z8 Z10-1 Z5 Z6
Преобразование U49 U50 U51 U52 Z1-1 –Z2 –Z3 Z4-1
Заключение
Учебное пособие «Криптографические методы защиты информации» содержит материалы, которые следует использовать при изучении дисциплин криптографической направленности.
Изучение криптографии является одним из важнейших аспектов в специальной подготовке специалистов по защите информации. Успешное освоение данного курса позволяет изучить современные методы криптографической защиты информации. Такие знания необходимы специалисту при разработке систем защиты информации на различных уровнях обеспечения информационной безопасности личности, организации и в целом Российской Федерации. Построение систем защиты информации в современных условиях становится все более актуальным ввиду того, что уровень развития средств несанкционированного добывания информации очень высок, доступность программных средств шпионского толка превращает задачу нелегального добывания информации из уникальной и рискованной операции в достаточно простую задачу. Это значительно увеличивает риск получения больших объемов информации злоумышленниками на безопасном расстоянии от её источников путем её перехвата при обработке и хранении. Практика показывает, что эффективная защита информации с учетом этих тенденций возможна при активном использовании криптографических методов и средств защиты информации.
Содержание предлагаемого учебного пособия не претендует на обобщение всего многообразия вопросов криптографической защиты информации, но авторы надеются, что их работа будет с благодарностью оценена всеми, кому приходится сталкиваться с решением задач информационной безопасности в рамках профессиональной деятельности.
СПИСОК ИСПОЛЬЗОВАННОЙ И РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ
Алферов, А. П. Основы криптографии. учебное пособие/ А. П. Алферов, А. Ю. Зубов, А. С. Кузьмин, А. В. Черемушкин. – М.: Гелиос-АРВ, 2001. – 480 с.
Бабенко, Л. К. Современные алгоритмы блочного шифрования и методы их анализа. учебное пособие/ Л. К. Бабенко Е. А. Ищукова– М.: Гелиос-АРВ, 2006. – 376 с.
Болотов, А.А Элементарное введение в эллиптическую криптографию: Алгебраические и алгоритмические основы А.А Болотов., С.Б. Гашков, Фролов А.Б., Часовских А.А. – М.: КомКнига, 2006. – 328 с.
Болотов, А.А. Элементарное введение в эллиптическую криптографию: Протоколы криптографии на эллиптических кривых/А.А. Болотов [и др.]. – М.: КомКнига, 2006. – 280 с.
Василенко, О. Н. Теоретико-числовые алгоритмы в криптографии/ О. Н. Василенко.– М.: МЦНМО, 2003. – 328 с.
Глухов, М. М. Алгебра/М. М. Глухов, В. П. Елизаров, А. А. Нечаев.– М.:Гелиос-АРВ, 2003.-336 с.; ил.
Глухов, М. М. Алгебра/М. М. Глухов, В. П. Елизаров, А. А. Нечаев. – М.:Гелиос-АРВ, 2003.-416 с.
Запечников, С. В. Криптографические протоколы и их применение в финансовой и коммерческой деятельности: учебное пособие/ С. В. Запечников. - М.: Горячая линия-Телеком, 2007. – 320 с.
Кнут, Д. Искусство программирования./Д. Кнут – М.: Вильямс – 2001
Коблиц, Н. Курс теории чисел и криптографии:[ пер. с англ]/ Н. Коблиц. М.: ТВП, 2001. – 254 с.
Мао, В. Современная криптография. Теория и практика/ В. Мао. М.: Вильямс, 2005. – 768 с.
Маховенко, Е. Б. Теоретико-числовые методы в криптографии: учебное пособие/ Е. Б. Маховенко.– М.: Гелиос-АРВ, 2006. – 320 с.
Рябко, Б. Я. Криптографические методы защиты информации: учебное пособие/ Б. Я. Рябко.– М.: Горячая линия-Телеком, 2005. – 229 с.
Сингх, С. Книга шифров: тайная история шифров и их расшифровки / Саймон Сингх; пер. с англ. А. Галыгина. – М.: АСТ: Астрель, 2007. – 447 с.
Смарт, Н. Криптография/ Н. Смарт. – М.: Техносфера, 2005. – 528 с.
Столлингс, В. Криптография и защита сетей. Принципы и практика.- 2-е изд./ В. Столлингс– М.: Вильямс, 2001. – 672 с.
Тилборг ван Х. К. А. Основы криптологии. Профессиональное руководство и интерактивный: учебник. – М.: Мир, 2006. – 471 с.
Фергюсон, Н., Шнайер Б. Практическая криптография/ Н. Фергюсон. - М.: Диалектика, 2005. – 424 с.
Фомичев, В. М. Дискретная математика и криптология/ В. М. Фомичев.– М.: ДИАЛОГ-МИФИ, 2003. – 400 с.
Харин, Ю.С. Математические и компьютерные основы криптологии/ Ю.С. Харин [и др.] – Минск.: Новое знание, 2003. – 382 с.
Черемушкин, А.В. Лекции по арифметическим алгоритмам в криптографии А.В. Черемушкин.– М.:МЦНМО, 2002. – 104 с.
Шнайер, Б. Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си./ Б. Шнайер – М.: ТРИУМФ, 2003. – 816 с.
Учебное издание

Аверченков Владимир Иванович
Рытов Михаил Юрьевич
Шпичак Сергей Александрович
Криптографические методы защиты информации

Приложенные файлы

  • docx 15855629
    Размер файла: 1 MB Загрузок: 0

Добавить комментарий