Text
                    Г.В. Басалова

Основы криптографии

Учебное пособие

4-е издание (электронное)

Интернет-Университет
Информационных Технологий
www.intuit.ru

Ай Пи Ар Медиа

Москва

2024


УДК 004 ББК 32.97 Басалова, Г.В. Основы криптографии : учебное пособие / Г.В. Басалова. — 4-е изд. (эл.) — Москва : Национальный Открытый Университет «ИНТУИТ» : Ай Пи Ар Медиа, 2024. — 282 с. — Текст : электронный. ISBN 978-5-4497-2420-5 В учебном пособии изложены основные подходы, методы и алгоритмы современной криптографии. Большое внимание уделено новым направлениям криптографии, связанным с обеспечением конфиденциальности взаимодействия пользователей компьютеров и компьютерных сетей. Рассмотрены основные широко используемые блочные и поточные шифры, криптографические хеш-функции, шифры с открытым ключом и методы цифровой (электронной) подписи. Уделено внимание отечественным государственным стандартам в области криптографической защиты информации. Теоретическая часть сопровождается большим количеством наглядных примеров, упрощающих восприятие учебного материала. Рекомендуется для студентов, начинающих изучение основ информационной безопасности, а также для всех интересующихся вопросами защиты информации. Учебное электронное издание Технический редактор Е.А. Семенова Обложка С.С. Сизиумова, Я.А. Кирсанов Подписано к использованию 06.10.2023. © ООО «ИНТУИТ.РУ», 2011–2016 © Басалова Г.В., 2011–2016 © Оформление электронного издания. ООО Компания «Ай Пи Ар Медиа», 2024
Основы криптографии Г.В. Басалова Содержание Введение 1. Основные понятия криптографии 2. Простейшие методы шифрования с закрытым ключом 3. Принципы построения блочных шифров с закрытым ключом 4. Алгоритмы шифрования DES и AES 5. Алгоритм криптографического преобразования данных ГОСТ 28147-89 6. Криптографические хеш-функции 7. Поточные шифры и генераторы псевдослучайных чисел. Часть 1 8. Поточные шифры и генераторы псевдослучайных чисел. Часть 2 9. Введение в криптографию с открытым ключом 10. Основные положения теории чисел, используемые в криптографии с открытым ключом 11. Криптографические алгоритмы с открытым ключом и их использование 12. Электронная цифровая подпись 13. Совершенно секретные системы 14. Шифрование, помехоустойчивое кодирование и сжатие информации Общий глоссарий Список литературы 3 4 6 33 64 78 97 108 118 133 156 173 189 213 233 250 269 281
Г.В. Басалова Основы криптографии Введение Вопросам защиты информации в настоящее время уделяется большое внимание, и это не случайно. Телекоммуникационные системы, активно развивающиеся в последнее время, являются артериями современных глобальных информационных систем. Информация, циркулирующая в таких системах, представляет существенную ценность и поэтому является уязвимой к различного рода злоупотреблениям. Поэтому именно в последние десятилетия стала столь актуальной проблема защиты информации. В настоящее время решением этой проблемы занимаются квалифицированные специалисты по комплексной защите информации. Среди разнообразных средств защиты информации криптографические методы занимают особое место. С одной стороны, это связано с тем, что криптографические способы защиты сообщений известны людям и успешно применяются ими уже не одно тысячелетие. С другой стороны, новые достижения криптографии позволяют решать не только классическую задачу защиты данных от несанкционированного доступа, но и множество других задач, недоступных для средств защиты информации других типов. Это и задача аутентификации пользователей информационных систем, и проблема формирования цифровой подписи к электронным документам, и возможности использования так называемых электронных денег. Долгое время развитие криптографической теории шло не слишком быстрыми темпами, однако в ХХ столетии, благодаря достигнутым в математике результатам, произошел резкий скачок в области криптографии. Последние десятилетия накопление практического опыта использования различных алгоритмов и протоколов происходит настолько быстро, что книга, посвященная криптографическим методам защиты информации, не сможет долгое время претендовать на полноту изложения. Целью написания данного учебного пособия является изложение основных разработанных на данный момент методов и полученных результатов в доступной форме. В курсе лекций рассмотрены как классические криптографические алгоритмы, известные людям не одно столетие, так и разработки современных криптографов. 4
Г.В. Басалова Основы криптографии Необходимо отметить, что материал, изучаемый в рамках курса "Основы криптографии" предполагает наличие у студентов знаний по некоторым разделам таких дисциплин, как "Математика", "Информатика", "Теория информации", "Математическая логика и теория алгоритмов". 5
Г.В. Басалова Основы криптографии Основные понятия криптографии В данной лекции определяются предмет и задачи криптографии, формулируются основополагающие определения курса и требования к криптографическим системам защиты информации, дается историческая справка об основных этапах развития криптографии как науки. Также рассматривается пример простейшего шифра, на основе которого поясняются сформулированные понятия и тезисы. Цель лекции: криптографии. познакомить студента с основными понятиями Предмет и задачи криптографии Проблемой защиты информации при ее передаче между абонентами люди занимаются на протяжении всей своей истории. Человечеством изобретено множество способов, позволяющих в той или иной мере скрыть смысл передаваемых сообщений от противника. На практике выработалось несколько групп методов защиты секретных посланий. Назовем некоторые из них, применяющиеся так же давно, как и криптографические. Первым способом является физическая защита материального носителя информации от противника. В качестве носителя данных может выступать бумага, компьютерный носитель (DVD-диск, флэш-карта, магнитный диск, жесткий диск компьютера и т.д.). Для реализации этого способа необходим надежный канал связи, недоступный для перехвата. В различное время для этого использовались почтовые голуби, специальные курьеры, радиопередачи на секретной частоте. Методы физической защиты информации используются и в современных автоматизированных системах обработки данных. Так, например, комплексные системы защиты информации невозможны без систем ограждения и физической изоляции, а также без охранных систем. Второй способ защиты информации, известный с давних времен – стеганографическая защита информации. Этот способ защиты основан на попытке скрыть от противника сам факт наличия интересующей его информации. При стеганографическом методе защиты от противника 6
Г.В. Басалова Основы криптографии прячут физический носитель данных или маскируют секретные сообщения среди открытой, несекретной информации. К таким способам относят, например, "запрятывание" микрофотографии с тайной информацией в несекретном месте: под маркой на почтовом конверте, под обложкой книги и т.д. К стеганографии относятся также такие известные приемы, как "запрятывание" секретного послания в корешках книг, в пуговицах, в каблуках, в пломбе зуба и т.д. Некоторые из методов были разработаны еще в древние времена. Так, например, греки нашли необычное решение: они брили наголо голову раба и выцарапывали на ней свое послание. Когда волосы на голове раба отрастали вновь, его посылали доставить сообщение. Получатель брил голову раба и прочитывал текст. К сожалению, на отправку сообщения и получение ответа таким способом уходило несколько недель. В более поздние времена в этом направлении наибольшее распространение получили химические (симпатические) чернила. Текст, написанный этими чернилами между строк несекретного сообщения, невидим. Он появлялся только в результате применения определенной технологии проявления. В условиях повсеместного использования информационных технологий возникают новые стеганографические приемы. Например, известен способ, при котором секретное сообщение прячется в файле графического изображения. При использовании этого способа младший значащий бит в описании каждого пикселя изображения заменяется битом сообщения. Разделив все исходное сообщение на биты и разместив эти биты по всему графическому файлу, мы пересылаем изображение с замаскированным сообщением получателю. Графическое изображение при этом меняется не слишком сильно, особенно если использовался режим с большим количеством цветов, например, с глубиной цвета 24 бита на пиксел. Это связано с тем, что человеческий глаз не может различать такое большое количество цветов. В результате в картинке размером всего 32 на 32 точки можно вместить тайное сообщение длиной 1024 бита или 128 байт. Третий способ защиты информации – наиболее надежный и распространенный в наши дни – криптографический . Этот метод защиты информации предполагает преобразование информации для сокрытия ее смысла от противника. Криптография в переводе с 7
Г.В. Басалова Основы криптографии греческого означает "тайнопись". В настоящее время криптография занимается поиском и исследованием математических методов преобразования информации. Наряду с криптографией развивается и совершенствуется криптоанализ – наука о преодолении криптографической защиты информации. Криптоаналитики исследуют возможности расшифровывания информации без знания ключей. Успешно проведенный криптоанализ позволяет получить ключ шифрования, или открытый текст, или то и другое вместе. Иногда криптографию и криптоанализ объединяют в одну науку – криптологию (kryptos - тайный, logos - наука), занимающуюся вопросами обратимого преобразования информации с целью защиты от несанкционированного доступа, оценкой надежности систем шифрования и анализом стойкости шифров. В настоящее время криптография прочно вошла в нашу жизнь. Перечислим лишь некоторые сферы применения криптографии в современном информатизированном обществе: шифрование данных при передаче по открытым каналам связи (например, при совершении покупки в Интернете сведения о сделке, такие как адрес, телефон, номер кредитной карты, обычно зашифровываются в целях безопасности); обслуживание банковских пластиковых карт; хранение и обработка паролей пользователей в сети; сдача бухгалтерских и иных отчетов через удаленные каналы связи; банковское обслуживание предприятий через локальную или глобальную сеть; безопасное от несанкционированного доступа хранение данных на жестком диске компьютера (в операционной системе Windows даже имеется специальный термин – шифрованная файловая система (EFS)). До начала ХХ века криптографические методы применялись лишь для шифрования данных с целью защиты от несанкционированного доступа. В двадцатом веке в связи с развитием техники передачи информации на дальние расстояния интерес к криптографии значительно возрос. Благодаря созданию новых криптографических 8
Г.В. Басалова Основы криптографии методов расширился и спектр задач криптографии. В настоящее время считается, что криптография предназначена решать следующие задачи: собственно шифрование данных с целью защиты от несанкционированного доступа; проверка подлинности сообщений: получатель сообщения может проверить его источник; проверка целостности передаваемых данных: получатель может проверить, не было ли сообщение изменено или подменено в процессе пересылки; обеспечение невозможности отказа, то есть невозможности как для получателя, так и для отправителя отказаться от факта передачи. Системы шифрования варьируются от самых элементарных до очень сложных. И если первые не требуют никаких математических познаний, то в последних используются понятия, знакомые лишь специалистам в некоторых областях математики и информатики. При использовании криптографических методов должны учитываться затраты на защиту информации и на реализацию методов нападения. На практике стремятся к достижению компромисса между стоимостью шифрования и требуемой степенью обеспечения безопасности. В рамках данного учебного пособия рассматриваются как простейшие, "докомпьютерные", шифры, известные человечеству на протяжении веков, так и современные системы шифрования, разработанные только в XXI веке. Основные определения Теперь, узнав назначение криптографии, познакомимся с основными терминами, которые будем использовать при изучении криптографических методов защиты информации. Шифр – совокупность заранее оговоренных способов преобразования исходного секретного сообщения с целью его защиты. Исходные сообщения обычно называют открытыми текстами. В иностранной литературе для открытого текста используют термин 9
Г.В. Басалова Основы криптографии plaintext. Символ - это любой знак, в том числе буква, цифра или знак препинания. Алфавит - конечное множество используемых для кодирования информации символов. Например, русский алфавит содержит 33 буквы от А до Я . Однако этих тридцати трех знаков обычно бывает недостаточно для записи сообщений, поэтому их дополняют символом пробела, точкой, запятой и другими знаками. Алфавит арабских цифр – это символы 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 . Этот алфавит содержит 10 знаков и с его помощью можно записать любое натуральное число. Любое сообщение может быть записано также с помощью двоичного алфавита , то есть с использованием только нулей и единиц. Сообщение, полученное после преобразования с использованием любого шифра, называется шифрованным сообщением (закрытым текстом, криптограммой). В иностранной литературе для закрытого текста используют термин ciphertext. Преобразование открытого текста в криптограмму называется зашифрованием. Обратное действие называется расшифрованием. В англоязычной литературе терминам "зашифрование/ расшифрование" соответствуют термины "enciphering/deciphering". Ключ – информация, необходимая для шифрования и расшифрования сообщений. С точки зрения русского языка термины "расшифрование" и "дешифрование" являются синонимами. Однако в работах по криптографии последних десятилетий часто эти слова различают. Будем считать, что термины "расшифрование" и "дешифрование" не являются синонимами. Примем, что расшифрованием занимается легальный получатель сообщения (тот, кто знает ключ), а человек, которому послание не предназначено, пытаясь понять его смысл, занимается дешифрованием . Система шифрования, или шифрсистема, – это любая система, которую можно использовать для обратимого изменения текста сообщения с 10
Г.В. Басалова Основы криптографии целью сделать его непонятным для всех, кроме тех, кому оно предназначено. Криптостойкостью называется характеристика шифра, определяющая его стойкость к дешифрованию без знания ключа (т.е. способность противостоять криптоанализу). Таким образом, с учетом всех сделанных определений можно дать более точное определение науке "криптография". Криптография изучает построение и использование систем шифрования, в том числе их стойкость, слабости и степень уязвимости относительно различных методов вскрытия. Все методы преобразования информации с целью защиты от несанкционированного доступа делятся на две большие группы: методы шифрования с закрытым ключом и методы шифрования с открытым ключом . Шифрование с закрытым ключом (шифрование с секретным ключом или симметричное шифрование) используется человеком уже довольно долгое время. Для шифрования и расшифрования данных в этих методах используется один и тот же ключ, который обе стороны стараются хранить в секрете от противника. Системы шифрования с закрытым ключом подробно рассматриваются в лекциях 2-9. Шифрование с открытым ключом (асимметричное шифрование) стало использоваться для криптографического закрытия информации лишь во второй половине ХХ века. В эту группу относятся методы шифрования, в которых для шифрования и расшифрования данных используются два разных ключа. При этом один из ключей (открытый ключ) может передаваться по открытому (незащищенному) каналу связи. Алгоритмам преобразования информации с открытым ключом посвящены лекции 10-14 учебного пособия. Электронной (цифровой) подписью называется обычно присоединяемый к сообщению блок данных, полученный с использованием криптографического преобразования. Электронная подпись позволяет при получении текста другим пользователем проверить авторство и подлинность сообщения. Криптографическая система защиты информации – система защиты информации, в которой используются криптографические методы для шифрования данных. 11
Г.В. Басалова Основы криптографии Требования к криптографическим системам защиты информации Для разрабатываемых в настоящее время криптографических систем защиты информации сформулированы следующие общепринятые требования: зашифрованное сообщение должно поддаваться чтению только при наличии ключа; знание алгоритма шифрования не должно влиять на надежность защиты; любой ключ из множества возможных должен обеспечивать надежную защиту информации; алгоритм шифрования должен допускать как программную, так и аппаратную реализацию. Не для всех алгоритмов шифрования перечисленные требования выполняются полностью. В частности, требование отсутствия слабых ключей (ключей, которые позволяют злоумышленнику легче вскрыть зашифрованное сообщение) не выполняется для некоторых "старых" блочных шифров. Однако все вновь разрабатываемые системы шифрования удовлетворяют перечисленным требованиям. Реализация криптографических методов В "докомпьютерную" эпоху шифрование данных выполнялось вручную. Специалист-шифровальщик обрабатывал исходное сообщение посимвольно и таким образом получал зашифрованный текст. Несмотря на то, что результат шифрования многократно проверялся, известны исторические факты ошибок шифровальщиков. После изобретения механических шифровальных машин процесс обработки данных при шифровании был автоматизирован и ускорен. Кроме того, применение шифровальной техники снизило вероятность ошибок в процессе шифрования и расшифрования. Дальнейшее развитие техники привело к появлению сначала электромеханических, а затем электронных криптографических устройств. Если все процедуры шифрования и расшифрования выполняются специальными электронными схемами 12
Г.В. Басалова Основы криптографии по определенным логическим правилам, то такой способ реализации криптографического метода называется аппаратным. Аппаратным способом могут быть реализованы все криптоалгоритмы, рассматриваемые в данном учебном пособии. На разработку аппаратного устройства необходимы существенные затраты, однако при массовом выпуске устройства эти затраты окупаются. Аппаратная реализация криптографического метода отличается высокой производительностью, простотой в эксплуатации, защищенностью. Во всем мире выпускаются ежегодно миллионы криптографических устройств. Повсеместное внедрение вычислительной техники, а особенно персональных компьютеров, привело к появлению программных реализаций алгоритмов шифрования. Интересно, что разработчики первых блочных шифров, используемых, например, в старом американском стандарте DES, и не предполагали, что придуманные ими алгоритмы будут реализовываться программно. Благодаря тому, что все методы криптографического преобразования могут быть представлены в виде конечной алгоритмической процедуры, они могут быть запрограммированы. Основным достоинством программных методов реализации защиты является их гибкость, т.е. возможность быстрого изменения алгоритмов шифрования или их настройки. Кроме того, программные реализации криптографических методов отличаются меньшей стоимостью. Основным же недостатком программной реализации является существенно меньшее быстродействие по сравнению с аппаратными средствами (в десятки раз в зависимости от алгоритма). В настоящее время выпускаются и комбинированные модули шифрования, так называемые программно-аппаратные средства. В этом случае компьютер дополняется своеобразным "криптографическим сопроцессором" – аппаратным вычислительным блоком, ориентированным на выполнение специфических криптографических операций. Меняя программное обеспечение для такого устройства, можно выбирать тот или иной метод шифрования. Такое программноаппаратное средство объединяет в себе достоинства программных и аппаратных методов. Сведения из истории криптографии 13
Г.В. Басалова Основы криптографии Исторически криптография развивалась как практическая дисциплина, изучающая и разрабатывающая способы шифрования письменных сообщений. В распоряжении историков имеются данные, что криптографические методы применялись в Древнем Египте, Индии, Месопотамии. Так, например, в записях египетских жрецов есть сведения о системах и способах составления шифрованных посланий. Древние греки оставили документальные подтверждения о различных применяемых ими шифровальных системах. Греками, а вернее спартанцами, во время многочисленных войн применялось одно из первых шифровальных устройств – Сцитала. Сцитала представляла собой цилиндрический жезл определенного диаметра. На Сциталу виток к витку наматывалась узкая полоска папируса (или кожаного ремня). На намотанной ленте вдоль оси жезла писали открытое сообщение. Затем ленту разматывали и переправляли адресату. После снятия папируса с жезла выходило как будто буквы сообщения написаны в беспорядке поперек ленты. Если папирус попадал в руки противника, то секретное сообщение прочитать было невозможно. Для получения исходного текста была необходима Сцитала точно такого же диаметра – на нее наматывалась полученная полоска папируса, строки сообщения совмещались, и в результате можно было прочитать секретное послание. Ключом в данном методе шифрования являлся диаметр Сциталы. Интересно, что изобретение дешифровального "устройства" приписывается Аристотелю. Предполагается, что именно он предложил использовать конусообразное "копье", на которое наматывалась перехваченная лента с зашифрованным сообщением. Лента с буквами передвигалась вдоль оси конуса до тех пор, пока не появлялся осмысленный текст. В Древней Греции использовались и другие шифры. Так, например, там был изобретен шифр, который в дальнейшем стал называться "квадратом Полибия". Согласно этому шифру буквы сообщения заменялись числами, представляющими собой координаты в квадрате 5x5, в который вписаны символы алфавита. Многочисленные исторические документы подтверждают, что в политике и в военном деле широко применялись различные шифры. В арабских странах шифрование сообщений довольно широко использовалось как в военных, так и в политических целях и даже в 14
Г.В. Басалова Основы криптографии переписке между торговыми партнерами. Кстати, слово "шифр" арабского происхождения, так же как и слово "цифра". В VIII – XV веках на свет появляются научные труды, содержащие сведения по криптографии: описания различных шифров и даже некоторых методов криптоанализа. Так, в многотомной энциклопедии "Шауба аль-Аша" упоминается о частотном криптоанализе (то есть анализе, основанном на частоте встречаемости букв открытого и зашифрованного сообщений). В этой же энциклопедии приводится таблица частотных характеристик букв арабского языка. В средние века криптографические методы использовались, прежде всего, в военном деле, шпионаже, дипломатии. Изучением шифров занимались священники, ученые и дипломаты. На практике применялись различные шифры. Первые труды по криптографии созданы в XIV – XVI веках Чикко Симоннети (сотрудником папской канцелярии), Габлиэлем де Лавиндой (секретарем папы Клементия XII), Леоном Баттистой Альберти (знаменитым итальянским архитектором и философом), аббатом Иоганнесом Тритемием, жившем в Германии. Все указанные деятели внесли большой вклад в развитие криптографии, так как не только рассматривали в своих трудах существующие шифры, но и предлагали различные усовершенствованные методы шифрования, а также некоторые простейшие методы криптоанализа. Так, например, в трудах Симоннети и де Лавинды предлагаются шифры пропорциональной замены, в которых наиболее часто встречаемым буквам ставится в соответствие несколько символов для выравнивания частоты встречаемости знаков в шифротексте. Леон Альберти, вероятно, первым предложил так называемые полиалфавитные шифры. Нововведение Альберти состояло в том, чтобы использовать несколько замен в соответствии с ключом. Предполагается, что он также изобрёл первую автоматическую шифровальную машину — шифровальный диск, который осуществлял частичную реализацию его изобретения. В XVII-XVIII веках во многих государствах Европы появились специальные шифровальные службы. В России датой появления криптографической службы специалисты называют 1549 год, когда был создан "посольский приказ", в котором имелось "цифирное" отделение. В эпоху Петра I криптографическая служба была реорганизована в "Посольскую канцелярию". 15
Г.В. Басалова Основы криптографии В различные времена криптографией занимались многие политики и ученые. Среди них Пифагор, Аристотель, Платон, Галилей, Д. Порта, Д. Кардано, Л. да Винчи, Ф. Виет, Д. Валлис, Б. Паскаль, И. Ньютон, Ф. Бекон, Х. Гольбах, Ф. Эпинус, Л. Эйлер, П.Ф. Шиллинг, Ч. Беббидж и другие. Огромное влияние на развитие криптографии оказывают достижения научно-технического прогресса. Так, например, в середине XIX века после изобретения телеграфа появилось несколько дипломатических и коммерческих шифров, ориентированных на применение телеграфа. Возрастание скорости передачи данных требовало увеличения скорости шифрования. В конце XIX века появились механические шифраторы Т. Джефферсона и Ч. Уитстона. С конца XIX века криптография стала серьезной отраслью научных знаний и стала изучаться как отдельная наука в военных академиях. В XX веке появились новые возможности по передаче информации на большие расстояния с большой скоростью. В связи с применением радиосвязи расширились возможности доступа к шифрованной информации в процессе ее передачи. Научно-технический прогресс преобразил криптографию, которая стала вначале электромеханической, а затем электронной. В XX веке возникает специализация в криптографической деятельности. Появляются специалисты по шифрованию, по перехвату зашифрованных сообщений, по дешифрованию шифров противника. В 20-х годах XX века для автоматизации процесса шифрования появились многочисленные механические устройства. В частности, широко использовались роторные шифровальные машины, в которых для выполнения операций замены символов применялись механические колеса – роторы. Шифровальные машины преобразовывали открытый текст в зашифрованный, состоящий из символов того же алфавита. После преобразования зашифрованная информация могла передаваться различными способами, например, по радиоканалу. Во всех развитых странах, в том числе и в СССР, создавались высокоскоростные шифрмашины, которые широко применялись во время второй мировой войны и позже. В середине ХХ века разработкой криптографических алгоритмов стали 16
Г.В. Басалова Основы криптографии заниматься профессиональные математики и специалисты в области информатики. Существенное влияние на развитие криптографии оказала работа американского инженера-математика К. Шеннона "Теория связи в секретных системах", в которой были сформулированы и математически доказаны условия "невскрываемости" шифров. С 50-х годов ХХ века в криптографии используется электронная вычислительная техника. Начинается создание так называемых блочных шифров, которые позволяют обрабатывать информацию целыми фрагментами или блоками. Первоначально для операций блочного шифрования разрабатывали аппаратные устройства с жесткой логикой, однако стремительное развитие возможностей вычислительной техники позволило создать программные аналоги блочных систем шифрования. Криптографические программные и аппаратные средства стали использоваться в гражданских целях, например, в коммерческих системах передачи информации. С развитием информационных технологий криптография не только приобрела новые сферы применения, но и претерпела значительные изменения. В древние времена в процессе обмена зашифрованными сообщениями участвовало только две стороны, поэтому ключом шифрования необходимо было обеспечить только эти две стороны. В современных информационных системах в процессе передачи информации задействовано множество абонентов, и все они заинтересованы в надежных и удобных каналах получения ключей шифрования. Проблема распределения ключей была решена в двадцатом веке благодаря изобретению нового принципа шифрования – асимметричного шифрования или шифрования с открытым ключом (70е годы ХХ в.). Основоположниками этого метода шифрования считаются У. Диффи и М. Хеллман. В асимметричных алгоритмах шифрования используются специальные математические функции – односторонние функции. Открытие асимметричных криптосистем позволило еще больше расширить сферы применения криптографии. Именно шифрование с открытым ключом лежит в основе процедур формирования цифровой подписи и проверки подлинности, а следовательно, и в основе принципов работы банковских пластиковых карт, "электронных" денег и других современных технологий. Новые сферы применения криптографии привлекают математиков к 17
Г.В. Басалова Основы криптографии решению криптографических проблем, а также к созданию новых направлений в математике, теории информации и других смежных науках. Криптографические атаки Информация в процессе хранения, передачи и преобразования подвергается воздействию различных атак. Атаки осуществляются противниками (оппонентами, перехватчиками, врагами и т.д.). Основными нарушениями безопасности являются раскрытие информационных ценностей (потеря конфиденциальности) , модификация без разрешения автора (потеря целостности) или неавторизованная потеря доступа к этим ценностям (потеря доступности) . Атаки могут быть пассивными и активными. Пассивной называется атака, при которой противник не имеет возможности изменять передаваемые сообщения. При пассивной атаке возможно лишь прослушивание передаваемых сообщений, их дешифрование и анализ трафика. При активной атаке противник имеет возможность модифицировать передаваемые сообщения и даже добавлять свои сообщения. Криптоанализ любого шифра невозможен без учета особенностей текстов сообщений, подлежащих шифрованию. Наиболее простыми характеристиками текстов, используемыми в криптоанализе, являются такие характеристики, как повторяемость букв, пар букв (биграмм) и вообще n-грамм, сочетаемость букв друг с другом, чередование гласных и согласных и некоторые другие. Такие характеристики изучаются на основе наблюдений текстов достаточно большой длины. Криптографические атаки можно классифицировать по количеству и типу информации, доступной для криптоанализа противником. По данной классификации выделяют следующие виды атак. Атака на основе шифротекста имеется в том случае, когда противник имеет для анализа шифротексты различных неизвестных открытых 18
Г.В. Басалова Основы криптографии текстов, зашифрованные на одном и том же ключе. Задача криптоаналитика состоит в получении открытого текста как можно большего числа сообщений или в получении ключа, использованного при шифровании. Полученный ключ будет затем использован для дешифрования других сообщений. Атака на основе известного открытого текста имеет место в том случае, если криптоаналитик получает в свое распоряжение какие-либо открытые тексты, соответствующие раннее переданным зашифрованным сообщениям. Сопоставляя пары "текст-шифротекст", противник пытается узнать секретный ключ, чтобы с его помощью дешифровать все последующие сообщения. Некоторым покажется, что противнику достаточно сложно заполучить в свое распоряжение некоторое количество пар "текст-шифротекст". На самом деле практически всегда возможно достать такие кусочки открытого текста и шифротекста. Криптоаналитик может иметь информацию о формате перехваченного зашифрованного файла: например, знать, что это файл с изображением JPEG, документ Word или Excel, файл базы данных или что-то еще. Все эти и многие другие форматы содержат определенные стандартные заголовки или фрагменты. Таким образом, специалист по криптоанализу сможет сформировать необходимые данные для проведения атаки на основе известного открытого текста. Возможен еще более "серьезный" для передающих сторон вариант – это атака на основе выбранного открытого текста . В этом случае криптоаналитик имеет возможность не только использовать предоставленные ему пары "текст-шифротекст", но и сам формировать нужные ему тексты и шифровать их с помощью того ключа, который он хочет узнать. Известно, что во время второй мировой войны американцы, подкупив охрану, выкрали шифровальную машину в японском посольстве на два дня и имели возможность формировать и подавать ей на вход различные тексты и получать соответствующие шифровки. (Они не могли взломать машину с целью непосредственного определения заложенного в нее секретного ключа, так как это было бы замечено и повлекло бы за собой смену всех ключей.) Долгое время разработчики криптосистем пытались сделать свои алгоритмы шифрования неуязвимыми по отношению только к атакам по шифротексту и обеспечивать организационно невозможность атак по 19
Г.В. Басалова Основы криптографии открытому или выбранному тексту. Для этого держали в тайне алгоритмы шифрования, устройства шифровальных машин, тщательно проверяли на надежность персонал, имеющий доступ к криптосистемам. Однако еще в XIX веке специалисты в области криптографии предположили, что секретность алгоритма шифрования не является гарантией от взлома. Более того, в дальнейшем было понято, что понастоящему надежная система шифрования должна оставаться защищённой, даже если противник полностью узнал алгоритм шифрования. Секретность ключа должна быть достаточна для хорошего шифра, чтобы сохранить стойкость к попыткам взлома. Этот фундаментальный принцип впервые был сформулирован в 1883 Керкхоффсом (A. Kerckhoffs) и обычно называется принципом Керкхоффса. Разработчики современных криптографических систем используют именно такой подход, предполагая возможность атак по выбранному тексту. В настоящее время создаваемые алгоритмы шифрования всесторонне изучаются большим числом специалистов, оцениваются по различным показателям, в том числе и по возможности противостоять атакам по выбранному тексту. Пример шифра Теперь, когда даны основные определения, рассмотрим одну из простейших систем шифрования, которая носит имя "шифр Юлия Цезаря". Предполагается, что знаменитый римский император и полководец, живший в 1 веке до нашей эры, использовал этот шифр в своей переписке. Шифр Цезаря применительно к русскому языку пример 1.1 состоит в следующем. Каждая буква сообщения заменяется на другую, которая в русском алфавите отстоит от исходной на три позиции дальше. Таким образом, буква A заменяется на Г , Б на Д и так далее вплоть до буквы Ь , которая заменялась на Я , затем Э на A , Ю на Б и, наконец, Я на В . АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ 20
Г.В. Басалова Основы криптографии Листинг 1.1. Исходный алфавит Так, например, слово ЗАМЕНА после шифрования методом Цезаря превратится в КГПЗРГ . Это не очень сложный метод, тем более что при шифровании сообщений из нескольких слов сразу становится понятным, сколько слов содержал исходный текст. Кроме того, можно получить некоторую информацию по анализу повторов букв в зашифрованном сообщении. Например, в зашифрованном КГПЗРГ одна из букв повторяется дважды. Тем не менее, Цезарь вошел в историю криптографии, а "шифр Юлия Цезаря", как его до сих пор называют, служит примером одной из первых систем шифрования. Для расшифрования сообщения КГПЗРГ необходимо знать только сам алгоритм шифрования. Любой человек, знающий способ шифрования, легко может расшифровать секретное сообщение. Таким образом, ключом в данном методе является сам алгоритм. Каким образом можно усовершенствовать шифр Цезаря? Можно было бы попытаться расширить алфавит с 33 до 36 символов и более за счет включения знаков препинания и пробелов. Это увеличение алфавита замаскировало бы длину каждого отдельного слова. В криптографии принято считать, что противник может знать использованный алгоритм шифрования, характер передаваемых сообщений и перехваченный шифротекст, но не знает секретный ключ. Как уже упоминалось выше, это называется принципом Керкхоффса. Иногда это правило кажется "перестраховкой", но такая "перестраховка" отнюдь не лишняя, если, например, передаются данные оборонного или государственного характера. Усовершенствуем шифр Цезаря с учетом правила Керкхоффса. Предположим, что буквы сдвигаются не на три знака вправо, а на n (0<n<33). В этом случае в системе шифрования появляется ключ – число n – параметр сдвига. Отправитель и получатель могут какимлибо образом договариваться (например, лично) и иногда менять значение ключа. Так как n может принимать разные значения, знание одного только алгоритма не позволит противнику расшифровать 21
Г.В. Басалова Основы криптографии секретное сообщение. Каким же образом может действовать в том случае злоумышленник, чтобы узнать содержание сообщения? Пусть, например, перехвачено секретное сообщение ЧСЮЭЮЪ. Противнику известно, что ключ (параметр сдвига n) может принимать значения от 1 до 32. Пытаясь найти значение секретного ключа, мы будем проводить атаку по шифротексту. Рассмотрим способ последовательного перебора всех возможных ключей (это так называемый метод "грубой силы"). Запишем на 32 строчках все варианты, которые получаются сдвигом каждой буквы на 1, 2, 3, ... , 32 позиции соответственно. Эту операцию можно проводить вручную, а можно составить несложную программу, которая запишет все варианты перебора параметра n в файл. Одна из этих 32 строк будет содержать исходное сообщение (таблица 1.1). Таблица 1.1. Перебор вариантов для поиска ключа при использовании метода Цезаря Перехваченная криптограмма ЧСЮЭЮЪ 1 2 3 ШТЯЮЯЫ ЩУАЯАЬ ЪФБАБЭ 17 ЗВОНОК 18 ИГПОПЛ 19 ЙДРПРМ 4 5 6 ЫХВБВЮ ЬЦГВГЯ ЭЧДГДА 20 КЕСРСН 21 ЛЁТСТО 22 МЖУТУП 7 8 9 10 11 ЮШЕДЕБ ЯЩЁЕЁВ АЪЖЁЖГ БЫЗЖЗД ВЬИЗИЕ 23 24 25 26 27 НЗФУФР ОИХФХС ПЙЦХЦТ РКЧЦЧУ СЛШЧШФ 12 13 14 15 ГЭЙИЙЁ ДЮКЙКЖ ЕЯЛКЛЗ ЁАМЛМИ 28 29 30 31 ТМЩШЩХ УНЪЩЪЦ ФОЫЪЫЧ ХПЬЫЬШ 22
Г.В. Басалова 16 ЖБНМНЙ Основы криптографии 32 ЦРЭЬЭЩ Мы видим, что единственное слово, имеющее смысл, – это ЗВОНОК. Это слово располагается на 17 месте. Следовательно, если шифрованный текст сдвинуть на 17 позиций вперед получится открытый текст. Это означает, что для получения шифрованного текста открытый текст нужно сдвинуть на (33-17)=16 позиций. Таким образом, получили, что при шифровании ключ n=16. Так как ни при каком другом сдвиге не получилось осмысленного сообщения, то, скорее всего, мы правильно дешифровали это сообщение. Такое допущение о единственности решения вполне обоснованно, когда исходное сообщение составлено на одном из естественных языков (в рассмотренном примере – русском) и содержит более пяти-шести знаков. Но если сообщение очень короткое, возможных решений может быть несколько. Единственное решение также очень трудно найти, если исходное сообщение, состоит, например, из цифр. Так, например, пусть исходный алфавит состоит из арабских цифр, то есть имеет вид 0 1 2 3 4 5 6 7 8 9. Один из абонентов желает переслать другому секретный код замка, состоящий из пяти цифр и равный 12345. Отправитель и получатель заранее договорились о том, что ключ шифрования n будет равен 3. Отправитель шифрует выбранным ключом исходное сообщение 12345, получает 45678 и переправляет полученное значение своему абоненту. Возможно, противник перехватит криптограмму и попытается вскрыть ее, используя, как и раньше, метод последовательного перебора. Так как исходный алфавит состоял из 10 символов, то значение ключа может лежать в диапазоне от 1 до 9. Выпишем, как и раньше все варианты, которые получаются сдвигом каждого знака перехваченного сообщения на 1, 2, 3, ... , 9 позиций соответственно (таблица 1.2). Таблица 1.2. Перебор вариантов для вскрытия зашифрованного кода замка Перехваченная криптограмма 45678 23
Г.В. Басалова 1 2 3 56789 67890 78901 4 5 89012 90123 6 01234 7 8 12345 23456 9 34567 Основы криптографии Видно, что все полученные варианты равнозначны и злоумышленник не может понять, какая именно комбинация истинна. Анализируя шифротекст, он не может найти значения секретного ключа. Конечно, один из приведенных в таблице вариантов подойдет к кодовому замку, но в столь простом методе шифрования нельзя рассчитывать на большую секретность. В первом примере сообщение — текст на русском языке, поэтому оно подчиняется многочисленным правилам, различные буквы и их сочетания имеют различные вероятности и, в частности, многие наборы букв вообще запрещены. (Это свойство называется избыточностью текста). Поэтому-то и удалось легко подобрать ключ и дешифровать сообщение, т.е. избыточность позволила "взломать" шифр. В противоположность этому, во втором примере все комбинации цифр допустимы. "Язык" кодового замка не содержит избыточности. Поэтому даже простой шифр, примененный к сообщениям этого языка, становится невскрываемым в случае атаки только по шифротексту. Если же мы имеем возможность проводить атаку и по открытому тексту, то есть имеем пары "открытое сообщение" – "зашифрованное сообщение", то раскрытие становится совершенно простым как в случае использования символов-букв, так и в случае символов-цифр. Приведенные простые примеры показывают, что вероятность успешного криптоанализа зависит от многих факторов: от системы шифрования, от длины перехваченного сообщения, от языка и алфавита исходного сообщения. В последующих лекциях постараемся подробнее рассмотреть все эти факторы. 24
Г.В. Басалова Основы криптографии Криптографический протокол В современной криптографии большое внимание уделяется не только созданию и исследованию шифров, но и разработке криптографических протоколов. Криптографический протокол – это такая процедура взаимодействия двух или более абонентов с использованием криптографических средств, в результате которой абоненты достигают своей цели, а их противники - не достигают. В основе протокола лежит набор правил, регламентирующих использование криптографических преобразований и алгоритмов в информационных процессах. Каждый криптографический протокол предназначен для решения определенной задачи. Любой протокол имеет следующие свойства: при выполнении протокола важен порядок действий; каждое действие должно выполняться в свою очередь и только по окончании предыдущего; протокол должен быть непротиворечивым; протокол должен быть полным, то есть для каждой возможной ситуации должно быть предусмотрено соответствующее действие. Свойства протокола напоминают известные нам из курса информатики свойства алгоритма. На самом деле протокол – это и есть алгоритм действия нескольких сторон в определенной ситуации. Участники протокола должны знать протокол и выполнять полностью все его этапы. Участниками криптографического протокола обычно являются абоненты некоторой системы связи. Участники протокола могут не доверять друг другу, поэтому криптографические протоколы должны защищать их участников не только от внешнего противника, но и от нечестных действий партнеров. Криптографические протоколы – сравнительно молодая отрасль криптографической науки. Первые протоколы появились во второй половине ХХ века. С тех пор эта область криптографии бурно развивалась, и на настоящий момент имеется уже несколько десятков различных типов криптографических протоколов. Все эти типы можно условно разделить на две группы: прикладные протоколы и примитивные. Прикладной протокол решает конкретную задачу, которая 25
Г.В. Басалова Основы криптографии возникает (или может возникнуть) на практике. Примитивные же протоколы используются как своеобразные "строительные блоки" при разработке прикладных протоколов. Мы в данном учебном пособии будем рассматривать только примитивные криптографические протоколы, которые при некоторой адаптации к реальным системам связи могут использоваться на практике. Рассмотрим назначение некоторых видов протоколов. 1. Протоколы конфиденциальной передачи сообщений. Задача конфиденциальной передачи сообщений состоит в следующем. Имеются два участника протокола, которые являются абонентами сети связи. Участники соединены некоторой линией связи, по которой можно пересылать сообщения в обе стороны. Линию связи может контролировать противник. У одного из абонентов имеется конфиденциальное сообщение m, и задача состоит в том, чтобы это сообщение конфиденциальным же образом передать второму абоненту. Протоколы этого типа, наверно, появились раньше других криптографических протоколов, так как задача конфиденциальной передачи сообщений – исторически первая задача, которая решалась криптографией. 2. Протоколы аутентификации и идентификации. Они предназначены для предотвращения доступа к некоторой информации лиц, не являющихся ее пользователями, а также предотвращения доступа пользователей к тем ресурсам, на которые у них нет полномочий. Типичная сфера применения – организация доступа пользователей к ресурсам некоторой большой информационной системы. 3. Протоколы распределения ключей необходимы для обеспечения секретными ключами участников обмена зашифрованными сообщениями. 4. Протоколы электронной цифровой подписи позволяют ставить под электронными документами подпись, аналогичную обыкновенной подписи на бумажных документах. В результате выполнения протокола электронной цифровой подписи к передаваемой информации добавляется уникальное числовое дополнение, позволяющее проверить ее авторство. 5. Протоколы обеспечения неотслеживаемости ("Электронные деньги"). Под электронными деньгами в криптографии понимают 26
Г.В. Басалова Основы криптографии электронные платежные средства, обеспечивающие неотслеживаемость, то есть невозможность проследить источник пересылки информации. Рассмотрим простейший протокол для обмена конфиденциальными сообщениями между двумя сторонами, которые будем называть абонент №1 и абонент №2. Пусть абонент №1 желает передать зашифрованное сообщение абоненту №2. В этом случае их последовательность действий должна быть следующей. 1. Абоненты выбирают систему шифрования (например, шифр Цезаря со сдвигом на n позиций). 2. Абоненты договариваются о ключе шифрования. 3. Абонент №1 шифрует исходное сообщение с помощью ключа выбранным методом и получает зашифрованное сообщение. 4. Зашифрованное сообщение пересылается абоненту №2. 5. Абонент №2 расшифровывает зашифрованное сообщение с помощью ключа и получает открытое сообщение. Этот протокол достаточно прост, однако он может действительно использоваться на практике. Криптографические протоколы могут быть простыми и сложными в зависимости от назначения. Со многими из них мы познакомимся в различных главах этого курса. Ранее мы ввели понятие криптографической атаки и рассмотрели типы атак на криптографический алгоритм. Во многих случаях атака может быть направлена не на алгоритм шифрования, а на протокол. Поэтому даже наличие абсолютно надежного алгоритма шифрования не гарантирует полной безопасности абонентам системы связи. Известны случаи, когда применяемые на практике криптографические протоколы содержали изъяны, допускающие мошенничество участвующих сторон или вскрытие со стороны активного взломщика. Конечно, криптографические протоколы не должны допускать таких возможностей нарушителям. Именно поэтому в настоящее время криптографические протоколы являются предметом тщательного анализа со стороны специалистов. Ключевые термины 27
Г.В. Басалова Основы криптографии Ciphertext – зашифрованное сообщение (закрытый текст, криптограмма). Deciphering – расшифрование. Enciphering – преобразование открытого текста в криптограмму (зашифрование). Рlaintext – исходное сообщение или открытый текст. Активная криптографическая атака – при такой атаке противник имеет возможность модифицировать передаваемые сообщения и даже добавлять свои сообщения. Алфавит - конечное множество используемых для кодирования информации символов. Ключ – информация, необходимая для шифрования и расшифрования сообщений. Криптоанализ – наука о преодолении криптографической защиты информации. Криптографическая система защиты информации – система защиты информации, в которой используются криптографические методы для шифрования данных. Криптографический протокол – алгоритм взаимодействия двух или более абонентов с использованием криптографических средств, в результате которой абоненты достигают своей цели, а их противники не достигают. Криптография изучает построение и использование систем шифрования, в том числе их стойкость, слабости и степень уязвимости относительно различных методов вскрытия. Криптостойкость – характеристика шифра, определяющая его стойкость к дешифрованию без знания ключа (т.е. способность противостоять криптоанализу). Пассивная криптографическая атака – атака, при которой противник не имеет возможности изменять передаваемые сообщения. При пассивной 28
Г.В. Басалова Основы криптографии атаке возможно лишь прослушивание передаваемых сообщений, их дешифрование и анализ трафика. Принцип Керкхоффса – правило разработки криптографических систем, согласно которому в засекреченном виде держится ключ шифрования, а остальные параметры системы шифрования могут быть открыты без снижения стойкости алгоритма. Другими словами, при оценке надёжности шифрования необходимо предполагать, что противник знает об используемой системе шифрования всё, кроме применяемых ключей. Впервые данный принцип сформулировал в XIX веке голландский криптограф Огюст Керкхоффс. Символ - это любой знак, в том числе буква, цифра или знак препинания. Система шифрования, или шифрсистема, – это любая система, которую можно использовать для обратимого изменения текста сообщения с целью сделать его непонятным для всех, кроме тех, кому оно предназначено. Шифр – совокупность заранее оговоренных способов преобразования исходного секретного сообщения с целью его защиты. Шифрование с закрытым ключом (симметричное шифрование) – методы обратимого преобразования данных, в которых используется один и тот же ключ, который обе стороны информационного обмена должны хранить в секрете от противника. Все известные из истории шифры, например, шифр Цезаря – это шифры с закрытым ключом. Шифрование с открытым ключом (асимметричное шифрование) – методы шифрования, в которых для шифрования и расшифрования данных используются два разных ключа. При этом один из ключей (открытый ключ) может передаваться по открытому (незащищенному) каналу связи. Шифрование с открытым ключом используется на практике лишь со второй половины ХХ века. Электронная (цифровая) подпись – присоединяемый к сообщению блок данных, полученный с использованием криптографического преобразования. Электронная подпись позволяет при получении текста другим пользователем проверить авторство и подлинность сообщения. 29
Г.В. Басалова Основы криптографии Краткие итоги Криптография в переводе с греческого означает "тайнопись". В настоящее время криптография занимается поиском и исследованием математических методов преобразования информации. Параллельно развивается и совершенствуется криптоанализ – наука о преодолении криптографической защиты информации. Криптография решает следующие задачи: шифрование данных с целью защиты от несанкционированного доступа; проверка подлинности сообщений; проверка целостности передаваемых данных; обеспечение невозможности отказа. Для современных криптографических систем защиты информации сформулированы следующие требования: зашифрованное сообщение должно поддаваться чтению только при наличии ключа; знание алгоритма шифрования не должно влиять на надежность защиты; любой ключ из множества возможных должен обеспечивать надежную защиту информации; алгоритм шифрования должен допускать как программную, так и аппаратную реализацию. Криптографические алгоритмы могут быть реализованы аппаратно или программно. На разработку аппаратного устройства необходимы существенные затраты, однако при массовом выпуске устройства эти затраты окупаются. Аппаратная реализация криптографического метода отличается высокой скоростью обработки данных, простотой в эксплуатации, защищенностью. Программные реализации криптографических алгоритмов отличаются существенно меньшим быстродействием. Выпускаются также и комбинированные модули шифрования, так называемые программно-аппаратные средства. Информация в процессе хранения, передачи и преобразования подвергается воздействию атак. Основными нарушениями информационной безопасности являются раскрытие информационных ценностей (потеря конфиденциальности), модификация без разрешения 30
Г.В. Басалова Основы криптографии автора (потеря целостности) или неавторизованная потеря доступа к этим ценностям (потеря доступности). Криптографические атаки могут быть пассивными и активными. В зависимости от количества и типа информации, доступной для криптоанализа, выделяют атаки на основе шифротекста, атаки на основе известного открытого текста, атаки на основе выбранного открытого текста. Голландский криптограф Огюст Керкхоффс сформулировал принцип, называемый в настоящее время принципом Керкхоффса – правило разработки криптографических систем, согласно которому в засекреченном виде держится ключ шифрования, а остальные параметры системы шифрования могут быть открыты без снижения стойкости алгоритма. Другими словами, при оценке надёжности шифрования необходимо предполагать, что противник знает об используемой системе шифрования всё, кроме применяемых ключей. Принцип Керкхоффса направлен на то, чтобы сделать безопасность алгоритмов и протоколов независимой от их секретности; открытость не должна влиять на безопасность. Большинство широко используемых систем шифрования, в соответствии с принципом Керкхоффса, используют известные, не составляющие секрета криптографические алгоритмы. В современной криптографии большое внимание уделяется разработке криптографических протоколов, то есть процедур или алгоритмов взаимодействия абонентов с использованием криптографических средств. В основе протокола лежит набор правил, регламентирующих использование криптографических преобразований. Некоторые виды протоколов: протоколы конфиденциальной передачи сообщений; протоколы аутентификации и идентификации; протоколы распределения ключей; протоколы электронной цифровой подписи; протоколы обеспечения неотслеживаемости. Набор для практики Вопросы для самопроверки 31
Г.В. Басалова Основы криптографии 1. Назовите проблемы, при решении которых могут использоваться криптографические методы. 2. В чем отличие криптографии от стеганографии? 3. Какие задачи решает современная криптография? 4. Сформулируйте требования к криптографическим системам защиты информации. 5. Дайте определения понятиям: алфавит, криптограмма, криптографическая система, криптографический протокол, символ, шифр, электронная (цифровая) подпись. 6. В чем заключается правило шифрования методом Цезаря? 7. Почему невозможно вскрыть криптограмму, содержащую код для кодового замка? 8. Почему проблема использования криптографических методов в информационных системах стала в настоящий момент особо актуальной? 9. Что такое криптографическая атака? 10. Какие типы криптографических атак существуют? 11. Что такое криптографический протокол? 12. Поясните назначение следующих криптографических протоколов: обмена конфиденциальными сообщениями; формирования электронной цифровой подписи; распределения ключей. Упражнения для самопроверки 1. Определите ключи шифра Цезаря, если известны следующие пары открытый текст – шифротекст (исходный алфавит: АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ): АПЕЛЬСИН - ТВЧЮОДЫА МАНДАРИН – ТЁУЙЁЦОУ 2. Расшифруйте следующие сообщения, зашифрованные шифром Цезаря, и определите ключ n, 0<n<33, если известно, что исходные сообщения составлены из алфавита АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ: ЮВПЛШУХ СФЫЮБШЯФУ 32
Г.В. Басалова Основы криптографии Простейшие методы шифрования с закрытым ключом В этой лекции рассматривается общая схема симметричного шифрования, а также дается классификация простейших методов симметричного шифрования. Описание каждого из указанных в классификации шифров сопровождается примером. Цель лекции: познакомить студента с простейшими методами симметричного шифрования и конкретными шифрами, известными человечеству уже не одно столетие. Общая схема симметричного шифрования Классическая, или одноключевая криптография опирается на использование симметричных алгоритмов шифрования, в которых шифрование и расшифрование отличаются только порядком выполнения и направлением некоторых шагов. Эти алгоритмы используют один и тот же секретный элемент (ключ), и второе действие (расшифрование) является простым обращением первого (шифрования). Поэтому обычно каждый из участников обмена может как зашифровать, так и расшифровать сообщение. Схематичная структура такой системы представлена на рис. 2.1. 33
Г.В. Басалова Основы криптографии Рис. 2.1. Общая структура секретной системы, использующей симметричное шифрование На передающей стороне имеются источник сообщений и источник ключей. Источник ключей выбирает конкретный ключ К среди всех возможных ключей данной системы. Этот ключ К передается некоторым способом принимающей стороне, причем предполагается, что его нельзя перехватить, например, ключ передается специальным курьером (поэтому симметричное шифрование называется также шифрованием с закрытым ключом). Источник сообщений формирует некоторое сообщение М, которое затем шифруется с использованием выбранного ключа. В результате процедуры шифрования получается зашифрованное сообщение Е (называемое также криптограммой). Далее криптограмма Е передается по каналу связи. Так как канал связи является открытым, незащищенным, например, радиоканал или компьютерная сеть, то передаваемое сообщение может быть перехвачено противником. На принимающей стороне криптограмму Е с помощью ключа расшифровывают и получают исходное сообщение М. Если М – сообщение, К – ключ, а Е – зашифрованное сообщение, то можно записать E=f(M,K) то есть зашифрованное сообщение Е является некоторой функцией от исходного сообщения М и ключа К. Используемый в криптографической системе метод или алгоритм шифрования и определяет функцию f в приведенной выше формуле. По причине большой избыточности естественных языков непосредственно в зашифрованное сообщение чрезвычайно трудно внести осмысленное изменение, поэтому классическая криптография обеспечивает также защиту от навязывания ложных данных. Если же естественной избыточности оказывается недостаточно для надежной защиты сообщения от модификации, избыточность может быть искусственно увеличена путем добавления к сообщению специальной контрольной комбинации, называемой имитовставкой. Известны разные методы шифрования с закрытым ключом рис. 2.2. На 34
Г.В. Басалова Основы криптографии практике часто используются алгоритмы перестановки, подстановки, а также комбинированные методы. Рис. 2.2. Методы шифрования с закрытым ключом В методах перестановки символы исходного текста меняются местами друг с другом по определенному правилу. В методах замены (или подстановки) символы открытого текста заменяются некоторыми эквивалентами шифрованного текста. С целью повышения надежности шифрования текст, зашифрованный с помощью одного метода, может быть еще раз зашифрован с помощью другого метода. В этом случае получается комбинированный или композиционный шифр. Применяемые на практике в настоящее время блочные или поточные симметричные шифры также относятся к комбинированным, так как в них используется несколько операций для зашифрования сообщения. Основное отличие современной криптографии от криптографии "докомпьютерной" заключается в том, что раньше криптографические алгоритмы оперировали символами естественных языков, например, буквами английского или русского алфавитов. Эти буквы 35
Г.В. Басалова Основы криптографии переставлялись или заменялись другими по определенному правилу. В современных криптографических алгоритмах используются операции над двоичными знаками, то есть над нулями и единицами. В настоящее время основными операциями при шифровании также являются перестановка или подстановка, причем для повышения надежности шифрования эти операции применяются вместе (комбинируются) и помногу раз циклически повторяются. Принципы построения современных блочных шифров сформулированы в "Принципы построения блочных шифров с закрытым ключом", "Алгоритмы шифрования DES и AES", "Алгоритм криптографического преобразования данных ГОСТ 28147-89", а в этой лекции рассматриваются шифры подстановки и перестановки, применяемые человеком с древнейших времен. Мы должны познакомиться с этими шифрами, так как процедуры подстановки и перестановки используются в качестве составных операций и в современных блочных шифрах. Методы замены Методы шифрования заменой (подстановкой) основаны на том, что символы исходного текста, обычно разделенные на блоки и записанные в одном алфавите, заменяются одним или несколькими символами другого алфавита в соответствии с принятым правилом преобразования. Одноалфавитная замена Одним из важных подклассов методов замены являются одноалфавитные (или моноалфавитные) подстановки, в которых устанавливается однозначное соответствие между каждым знаком ai исходного алфавита сообщений A и соответствующим знаком ei зашифрованного текста E. Одноалфавитная подстановка иногда называется также простой заменой, так как является самым простым шифром замены. Примером одноалфавитной замены является шифр Цезаря, рассмотренный ранее. В рассмотренном в "Основные понятия 36
Г.В. Басалова Основы криптографии криптографии" примере первая строка является исходным алфавитом, вторая (с циклическим сдвигом на k влево) – вектором замен. В общем случае при одноалфавитной подстановке происходит однозначная замена исходных символов их эквивалентами из вектора замен (или таблицы замен). При таком методе шифрования ключом является используемая таблица замен. Подстановка может быть задана с помощью таблицы, например, как показано на рис. 2.3. Рис. 2.3. Пример таблицы замен для двух шифров В таблице на рис. 2.3 на самом деле объединены сразу две таблицы. Одна (шифр 1) определяет замену русских букв исходного текста на другие русские буквы, а вторая (шифр 2) – замену букв на специальные символы. Исходным алфавитом для обоих шифров будут заглавные русские буквы (за исключением букв "Ё" и "Й"), пробел и точка. Зашифрованное сообщение с использованием любого шифра моноалфавитной подстановки получается следующим образом. Берется очередной знак из исходного сообщения. Определяется его позиция в столбце "Откр. текст" таблицы замен. В зашифрованное сообщение вставляется шифрованный символ из этой же строки таблицы замен. Попробуем зашифровать сообщение "ВЫШЛИТЕ ПОДКРЕПЛЕНИЕ" c использованием этих двух шифров (рис. 2.4). Для этого берем первую 37
Г.В. Басалова Основы криптографии букву исходного сообщения "В". В таблице на рис. 2.3 в столбце "Шифр 1" находим для буквы "В" заменяемый символ. Это будет буква "О". Записываем букву "О" под буквой "В". Затем рассматриваем второй символ исходного сообщения – букву "Ы". Находим эту букву в столбце "Откр. текст" и из столбца "Шифр 1" берем букву, стоящую на той же строке, что и буква "Ы". Таким образом получаем второй символ зашифрованного сообщения – букву "Н". Продолжая действовать аналогично, зашифровываем все исходное сообщение (рис. 2.4). Рис. 2.4. Пример шифрования методом прямой замены Полученный таким образом текст имеет сравнительно низкий уровень защиты, так как исходный и зашифрованный тексты имеют одинаковые статистические закономерности. При этом не имеет значения, какие символы использованы для замены – перемешанные символы исходного алфавита или таинственно выглядящие знаки. Зашифрованное сообщение может быть вскрыто путем так называемого частотного криптоанализа. Для этого могут быть использованы некоторые статистические данные языка, на котором написано сообщение. Известно, что в текстах на русском языке наиболее часто встречаются символы О, И. Немного реже встречаются буквы Е, А. Из согласных самые частые символы Т, Н, Р, С. В распоряжении криптоаналитиков имеются специальные таблицы частот встречаемости символов для текстов разных типов – научных, художественных и т.д. 38
Г.В. Басалова Основы криптографии Криптоаналитик внимательно изучает полученную криптограмму, подсчитывая при этом, какие символы сколько раз встретились. Вначале наиболее часто встречаемые знаки зашифрованного сообщения заменяются, например, буквами О. Далее производится попытка определить места для букв И, Е, А. Затем подставляются наиболее часто встречаемые согласные. На каждом этапе оценивается возможность "сочетания" тех или иных букв. Например, в русских словах трудно найти четыре подряд гласные буквы, слова в русском языке не начинаются с буквы Ы и т.д. На самом деле для каждого естественного языка (русского, английского и т.д.) существует множество закономерностей, которые помогают раскрыть специалисту зашифрованные противником сообщения. Возможность однозначного криптоанализа напрямую зависит от длины перехваченного сообщения. Посмотрим, с чем это связано. Пусть, например, в руки криптоаналитиков попало зашифрованное с помощью некоторого шифра одноалфавитной замены сообщение: ТНФЖ.ИПЩЪРЪ Это сообщение состоит из 11 символов. Пусть известно, что эти символы составляют целое сообщение, а не фрагмент более крупного текста. В этом случае наше зашифрованное сообщение состоит из одного или нескольких целых слов. В зашифрованном сообщении символ Ъ встречается 2 раза. Предположим, что в открытом тексте на месте зашифрованного знака Ъ стоит гласная О, А, И или Е. Подставим на место Ъ эти буквы и оценим возможность дальнейшего криптоанализа таблица 2.1 Таблица 2.1. Варианты первого этапа криптоанализа Зашифрованное сообщение ТНФ Ж .ИПЩ Ъ Р Ъ После замены Ъ на О О После замены Ъ на А О 39
Г.В. Басалова Основы криптографии А После замены Ъ на И И После замены Ъ на Е Е А И Е Все приведенные варианты замены могут встретиться на практике. Попробуем подобрать какие-нибудь варианты сообщений, учитывая, что в криптограмме остальные символы встречаются по одному разу (таблица 2.2). Таблица 2.2. Варианты второго этапа криптоанализа Зашифрованное сообщение Т Н Ф Ж . И П Щ Ъ Р Ъ Варианты подобранных дешифрованных сообщений Ж Д И С У М Р А К А Д Ж О Н А У Б И Л И В М С Ы Е Х П О П Б О Е Б Д И И Л Л И И Кроме представленных на таблица 2.2 сообщений можно подобрать еще большое количество подходящих фраз. Таким образом, если нам ничего не известно заранее о содержании перехваченного сообщения малой длины, дешифровать его однозначно не получится. Если же в руки криптоаналитиков попадает достаточно длинное сообщение, зашифрованное методом простой замены, его обычно удается успешно дешифровать. На помощь специалистам по вскрытию криптограмм приходят статистические закономерности языка. Чем длиннее зашифрованное сообщение, тем больше вероятность его однозначного дешифрования. В "Алгоритм криптографического преобразования данных ГОСТ 2814789" будут более подробно рассмотрены вопросы теоретической стойкости криптосистем, а также принципы построения идеальных криптосистем. 40
Г.В. Басалова Основы криптографии Интересно, что если попытаться замаскировать статистические характеристики открытого текста, то задача вскрытия шифра простой замены значительно усложнится. Например, с этой целью можно перед шифрованием "сжимать" открытый текст с использованием компьютерных программ-архиваторов. С усложнением правил замены увеличивается надежность шифрования. Можно заменять не отдельные символы, а, например, двухбуквенные сочетания – биграммы. Таблица замен для такого шифра может выглядеть, как на таблица 2.3. Таблица 2.3. Пример таблицы замен для двухбуквенных сочетаний Откр. текст Зашифр. текст Откр. текст Зашифр. текст аа кх бб пш аб ав ... ая ба пу жа ... ис цу бв ... яэ яю яя вь ... сы ек рт Оценим размер такой таблицы замен. Если исходный алфавит содержит N символов, то вектор замен для биграммного шифра должен содержать N2 пар "откр. текст – зашифр. текст". Таблицу замен для такого шифра можно также записать и в другом виде: заголовки столбцов соответствуют первой букве биграммы, а заголовки строк – второй, причем ячейки таблицы заполнены заменяющими символами. В такой таблице будет N строк и N столбцов (таблица 2.4). Таблица 2.4. Другой вариант задания таблицы замен для биграммного шифра 41
Г.В. Басалова Основы криптографии а б ... я а кх цу ... ... б пу пш ... ... в жа вь ... ... ... ... ... ... ... ю ... ... ... ек я ис ... ... рт Возможны варианты использования триграммного или вообще nграммного шифра. Такие шифры обладают более высокой криптостойкостью, но они сложнее для реализации и требуют гораздо большего количества ключевой информации (большой объем таблицы замен). В целом, все n-граммные шифры могут быть вскрыты с помощью частотного криптоанализа, только используется статистика встречаемости не отдельных символов, а сочетаний из n символов. Пропорциональные шифры К одноалфавитным методам подстановки относятся пропорциональные или монофонические шифры, в которых уравнивается частота появления зашифрованных знаков для защиты от раскрытия с помощью частотного анализа. Для знаков, встречающихся часто, используется относительно большое число возможных эквивалентов. Для менее используемых исходных знаков может оказаться достаточным одного или двух эквивалентов. При шифровании замена для символа открытого текста выбирается либо случайным, либо определенным образом (например, по порядку). При использовании пропорционального шифра в качестве замены символам обычно выбираются числа. Например, поставим в соответствие буквам русского языка трехзначные числа, как указано на таблица 2.5. Таблица 2.5. Таблица замен для пропорционального шифра Символ Варианты замены Символ Варианты замены А 760 128 350 201 С 800 767 105 42
Г.В. Басалова Основы криптографии Б В Г 101 210 106 351 Т У Ф 759 135 214 544 560 Д 129 Х 768 Е Ж 761 130 802 352 102 Ц Ч 545 215 З 753 Ш 103 И К 762 211 131 754 764 Щ Ъ 752 561 Л М 132 354 755 742 Ы Ь 136 562 Н 763 756 212 Э 750 О П Р 757 213 765 133 353 Ю 570 743 766 Я 216 104 134 532 Пробел 751 769 758 801 849 035… В этом случае сообщение БОЛЬШОЙ СЕКРЕТ может быть зашифровано следующим образом: 101757132562103213762751800761754134130759 В данном примере варианты замен для повторяющихся букв (например, "О") выбирались по порядку. Интересно, что шифры, в которых производится замена букв несколькими символами, пропорционально встречаемости в открытом тексте, описывали итальянские ученые еще в XIV-XV веках. Пропорциональные шифры более сложны для вскрытия, чем шифры простой одноалфавитной замены. Однако, если имеется хотя бы одна пара "открытый текст – шифротекст", вскрытие производится тривиально. Если же в наличии имеются только шифротексты, то вскрытие ключа, то есть нахождение таблицы замен, становится более 43
Г.В. Басалова Основы криптографии трудоемким, но тоже вполне осуществимым. Многоалфавитные подстановки В целях маскирования естественной частотной статистики исходного языка применяется многоалфавитная подстановка, которая также бывает нескольких видов. В многоалфавитных подстановках для замены символов исходного текста используется не один, а несколько алфавитов. Обычно алфавиты для замены образованы из символов исходного алфавита, записанных в другом порядке. Примером многоалфавитной подстановки может служить схема, основанная на использовании таблицы Вижинера. Этот метод, известный уже в XVI веке, был описан французом Блезом Вижинером в "Трактате о шифрах", вышедшем в 1585 году. В этом методе для шифрования используется таблица, представляющая собой квадратную матрицу с числом элементов NxN, где N — количество символов в алфавите (таблица 2.6). В первой строке матрицы записывают буквы в порядке очередности их в исходном алфавите, во второй — ту же последовательность букв, но с циклическим сдвигом влево на одну позицию, в третьей — со сдвигом на две позиции и т. д. Таблица 2.6. Подготовка таблицы шифрования АБВГДЕ........ ..........ЭЮЯ БВГДЕЖ........ ..........ЮЯА ВГДЕЖЗ........ ..........ЯАБ ГДЕЖЗИ......... ..........АБВ ДЕЖЭИК......... ..........БВГ ЕЖЗИКЛ......... ..........ВГД ........... .......... ЯАБВГД......... ..........ЬЭЮ Для шифрования текста выбирают ключ, представляющий собой 44
Г.В. Басалова Основы криптографии некоторое слово или набор символов исходного алфавита. Далее из полной матрицы выписывают подматрицу шифрования, включающую первую строку и строки матрицы, начальными буквами которых являются последовательно буквы ключа (например, если выбрать ключ "весна", то таблица шифрования будет такой, как на таблица 2.7). Таблица 2.7. Первый этап шифрования – составление подматрицы шифрования АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ ВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯАБ ЕЖЗИКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯАБВГД НОПРСТУФХЦЧШЩЪЫЬЭЮЯАБВГДЕЖЗИКЛМ СТУФХЦЧШЩЪЫЬЭЮЯАБВГДЕЖЗИКЛМНОПР В процессе шифрования (рис. 2.5) под каждой буквой шифруемого текста записывают буквы ключа, повторяющие ключ требуемое число раз, затем шифруемый текст по таблице шифрования (таблица 2.7) заменяют буквами, расположенными на пересечениях линий, соединяющих буквы текста первой строки таблицы и буквы ключа, находящейся под ней. Например, под первой буквой исходного текста "М" записана буква "В" ключа. В таблице кодирования находим столбец, начинающийся с "М" и строку, начинающуюся с "В". На их пересечении располагается буква "О". Она и будет первым символом зашифрованного сообщения (на рис. 2.5 эта буква выделена прямоугольной рамочкой). Следующая буква исходного сообщения – "Е", символ ключа – тоже "Е". Находим пересечение строки, начинающейся с "Е", и столбца, начинающегося с "Е". Это будет буква "Л" – второй символ зашифрованного сообщения. 45
Г.В. Басалова Основы криптографии Рис. 2.5. Механизм шифрования многоалфавитной заменой Рассмотрим на примере процесс расшифрования сообщения по методу Вижинера. Пусть имеется зашифрованное с помощью ключа ВЕСНА сообщение КЕКХТВОЭЦОТССВИЛ (пробелы при шифровании пропущены). Расшифровка текста выполняется в следующей последовательности (таблица 2.8): над буквами шифрованного текста сверху последовательно записывают буквы ключа, повторяя ключ требуемое число раз; в строке подматрицы таблицы Вижинера для каждой буквы ключа отыскивается буква, соответствующая знаку шифрованного текста. Находящаяся над ней буква первой строки и будет знаком расшифрованного текста; полученный текст группируется в слова по смыслу. Таблица 2.8. Механизм расшифрования КЛЮЧ ВЕСНАВЕСНАВЕСНАВ ЗАШИФРОВАННЫЙ ТЕКСТ КЕКХТВОЭЦОТССВИЛ РАСШИФРОВАННЫЙ ТЕКСТ ЗАЩИТАИНФОРМАЦИИ ИСХОДНЫЙ ТЕКСТ ЗАЩИТА ИНФОРМАЦИИ Раскрыть шифр Вижинера, тем же способом, что и шифр одноалфавитной замены, невозможно, так как одни и те же символы открытого текста могут быть заменены различными символами зашифрованного текста. С другой стороны, различные буквы открытого текста могут быть заменены одинаковыми знаками зашифрованного текста. 46
Г.В. Басалова Основы криптографии Особенность данного метода многоалфавитной подстановки заключается в том, что каждый из символов ключа используется для шифрования одного символа исходного сообщения. После использования всех символов ключа, они повторяются в том же порядке. Если используется ключ из десяти букв, то каждая десятая буква сообщения шифруется одним и тем же символом ключа. Этот параметр называется периодом шифра. Если ключ шифрования состоит из одного символа, то при шифровании будет использоваться одна строка таблицы Вижинера, следовательно, в этом случае мы получим моноалфавитную подстановку, а именно шифр Цезаря. С целью повышения надежности шифрования текста можно использовать подряд два или более зашифрования по методу Вижинера с разными ключами (составной шифр Вижинера). На практике кроме метода Вижинера использовались также различные модификации этого метода. Например, шифр Вижинера с перемешанным один раз алфавитом. В этом случае для расшифрования сообщения получателю необходимо кроме ключа знать порядок следования символов в таблице шифрования. Еще одним примером метода многоалфавитной подстановки является шифр с бегущим ключом или книжный шифр. В этом методе один текст используется в качестве ключа для шифрования другого текста. В эпоху "докомпьютерной" криптографии в качестве ключа для шифра с бегущим ключом выбирали какую-нибудь достаточно толстую книгу; от этого и произошло второе название этого шифра. Периодом в таком методе шифрования будет длина выбранного в качестве ключа произведения. Методы многоалфавитной подстановки, в том числе и метод Вижинера, значительно труднее поддаются "ручному" криптоанализу. Для вскрытия методов многоалфавитной замены разработаны специальные, достаточно сложные алгоритмы. С использованием компьютера вскрытие метода многоалфавитной подстановки возможно достаточно быстро благодаря высокой скорости проводимых операций и расчетов. В первой половине ХХ века для автоматизации процесса выполнения многоалфавитных подстановок стали широко применять роторные шифровальные машины. Главными элементами в таких устройствах являлись роторы – механические колеса, используемые для выполнения 47
Г.В. Басалова Основы криптографии подстановки. Роторная шифровальная машина содержала обычно клавиатуру и набор роторов. Каждый ротор содержал набор символов (по количеству в алфавите), размещенных в произвольном порядке, и выполнял простую одноалфавитную подстановку. После выполнения первой замены символы сообщения обрабатывались вторым ротором и так далее. Роторы могли смещаться, что и задавало ключ шифрования. Некоторые роторные машины выполняли также и перестановку символов в процессе шифрования. Самым известным устройством подобного класса являлась немецкая шифровальная роторная машина Энигма (лат. Enigma — загадка), использовавшаяся во время второй мировой войны. Выпускалось несколько моделей Энигмы с разным числом роторов. В шифрмашине Энигма с тремя роторами можно было использовать 16900 разных алфавитов, и все они представляли собой различные перестановки символов. Методы гаммирования Еще одним частным случаем многоалфавитной подстановки является гаммирование. В этом способе шифрование выполняется путем сложения символов исходного текста и ключа по модулю, равному числу букв в алфавите. Если в исходном алфавите, например, 33 символа, то сложение производится по модулю 33. Такой процесс сложения исходного текста и ключа называется в криптографии наложением гаммы. Пусть символам исходного алфавита соответствуют числа от 0 (А) до 32 (Я). Если обозначить число, соответствующее исходному символу, x, а символу ключа – k, то можно записать правило гаммирования следующим образом: z = x + k (mod N), где z – закодированный символ, N - количество символов в алфавите, а сложение по модулю N - операция, аналогичная обычному сложению, с тем отличием, что если обычное суммирование дает результат, больший или равный N, то значением суммы считается остаток от деления его на N. Например, пусть сложим по модулю 33 символы Г (3) и Ю (31): 48
Г.В. Басалова Основы криптографии 3 + 31 (mod 33) = 1, то есть в результате получаем символ Б, соответствующий числу 1. Наиболее часто на практике встречается двоичное гаммирование. При этом используется двоичный алфавит, а сложение производится по модулю два. Операция сложения по модулю 2 часто обозначается , то есть можно записать: Операция сложения по модулю два в алгебре логики называется также "исключающее ИЛИ" или по-английски XOR. Рассмотрим пример. Предположим, нам необходимо зашифровать десятичное число 14 методом гаммирования с использованием ключа 12. Для этого вначале необходимо преобразовать исходное число и ключ (гамму) в двоичную форму: 14(10)=1110(2), 12(10)=1100(2). Затем надо записать полученные двоичные числа друг под другом и каждую пару символов сложить по модулю два. При сложении двух двоичных знаков получается 0, если исходные двоичные цифры одинаковы, и 1, если цифры разные: Сложим по модулю два двоичные числа 1110 и 1100: Исходное число 1 1 1 0 Гамма 1 1 0 0 Результат 0 0 1 0 В результате сложения получили двоичное число 0010. Если перевести его в десятичную форму, получим 2. Таким образом, в результате применения к числу 14 операции гаммирования с ключом 12 получаем в результате число 2. 49
Г.В. Басалова Основы криптографии Каким же образом выполняется расшифрование? Зашифрованное число 2 представляется в двоичном виде и снова производится сложение по модулю 2 с ключом: Зашифрованное число 0 0 1 0 Гамма 1 1 0 0 Результат 1 1 1 0 Переведем полученное двоичное значение 1110 в десятичный вид и получим 14, то есть исходное число. Таким образом, при гаммировании по модулю 2 нужно использовать одну и ту же операцию как для зашифрования, так и для расшифрования. Это позволяет использовать один и тот же алгоритм, а соответственно и одну и ту же программу при программной реализации, как для шифрования, так и для расшифрования. Операция сложения по модулю два очень быстро выполняется на компьютере (в отличие от многих других арифметических операций), поэтому наложение гаммы даже на очень большой открытый текст выполняется практически мгновенно. Благодаря указанным достоинствам метод гаммирования широко применяется в современных технических системах сам по себе, а также как элемент комбинированных алгоритмов шифрования. Сформулируем, как производится гаммирование по модулю 2 в общем случае: символы исходного текста и гамма представляются в двоичном коде и располагаются один под другим, при этом ключ (гамма) записывается столько раз, сколько потребуется; каждая пара двоичных знаков складывается по модулю два; полученная последовательность двоичных знаков кодируется символами алфавита в соответствии с выбранным кодом. На рис. 2.6 показано, как применяется гаммирование к тексту с русскими символами. Символы кодируются в соответствии с принятой кодировкой, а затем производится сложение по модулю 2. 50
Г.В. Басалова Основы криптографии При использовании метода гаммирования ключом является последовательность, с которой производится сложение – гамма. Если гамма короче, чем сообщение, предназначенное для зашифрования, гамма повторяется требуемое число раз. Так в примере на рис. 2.6 длина исходного сообщения равна двенадцати байтам, а длина ключа – пяти байтам. Следовательно, для зашифрования гамма должна быть повторена 2 раза полностью и еще один раз частично. Рис. 2.6. Механизм гаммирования Чем длиннее ключ, тем надежнее шифрование методом гаммирования. Связь длины ключа с вероятностью вскрытия сообщения, а также некоторые принципы дешифрования сообщений, закрытых методом 51
Г.В. Басалова Основы криптографии гаммирования, обсуждаются в "Поточные шифры и генераторы псевдослучайных чисел. Часть 2" и "Шифрование, помехоустойчивое кодирование и сжатие информации". На практике длина ключа ограничена возможностями аппаратуры обмена данными и вычислительной техники, а именно выделяемыми объемами памяти под ключ, временем обработки сообщения, а также возможностями аппаратуры подготовки и записи последовательностей ключей. Кроме того, для использования ключа вначале необходимо каким-либо надежным способом доставить его обеим сторонам, обменивающимся сообщениями. Это приводит к возникновению проблемы распределения ключей, сложность решения которой возрастает с увеличением длины ключа и количества абонентов в сети передачи сообщений. Методы перестановки При использовании шифров перестановки входной поток исходного текста делится на блоки, в каждом из которых выполняется перестановка символов. Перестановки в классической "докомпьютерной" криптографии получались в результате записи исходного текста и чтения шифрованного текста по разным путям геометрической фигуры. Простейшим примером перестановки является перестановка с фиксированным периодом d. В этом методе сообщение делится на блоки по d символов и в каждом блоке производится одна и та же перестановка. Правило, по которому производится перестановка, является ключом и может быть задано некоторой перестановкой первых d натуральных чисел. В результате сами буквы сообщения не изменяются, но передаются в другом порядке. Например, для d=6 в качестве ключа перестановки можно взять 436215. Это означает, что в каждом блоке из 6 символов четвертый символ становится на первое место, третий – на второе, шестой – на третье и т.д. Пусть необходимо зашифровать такой текст: ЭТО_ТЕКСТ_ДЛЯ_ШИФРОВАНИЯ Количество символов в исходном сообщении равно 24, следовательно, 52
Г.В. Басалова Основы криптографии сообщение необходимо разбить на 4 блока. Результатом шифрования с помощью перестановки 436215 будет сообщение _ОЕТЭТ_ТЛСКДИШР_ЯФНАЯВОИ Теоретически, если блок состоит из d символов, то число возможных перестановок d!=1*2*...*(d-1)*d. В последнем примере d=6, следовательно, число перестановок равно 6!=1*2*3*4*5*6=720. Таким образом, если противник перехватил зашифрованное сообщение из рассмотренного примера, ему понадобится не более 720 попыток для раскрытия исходного сообщения (при условии, что размер блока известен противнику). Для повышения криптостойкости можно последовательно применить к шифруемому сообщению две или более перестановки с разными периодами. Другим примером методов перестановки является перестановка по таблице. В этом методе производится запись исходного текста по строкам некоторой таблицы и чтение его по столбцам этой же таблицы. Последовательность заполнения строк и чтения столбцов может быть любой и задается ключом. Рассмотрим пример. Пусть в таблице кодирования будет 4 столбца и 3 строки (размер блока равен 3*4=12 символов). Зашифруем такой текст: ЭТО ТЕКСТ ДЛЯ ШИФРОВАНИЯ Количество символов в исходном сообщении равно 24, следовательно, сообщение необходимо разбить на 2 блока. Запишем каждый блок в свою таблицу по строчкам (таблица 2.9). Таблица 2.9. Шифрование методом перестановки по таблице 1 блок Э Т О 53
Г.В. Басалова Основы криптографии Т Е К С Т Д Л 2 блок Я Ш И Ф Р О В А Н И Я Затем будем считывать из таблицы каждый блок последовательно по столбцам: ЭТТТЕ ОКД СЛЯФА РНШОИИВЯ Можно считывать столбцы не последовательно, а, например, так: третий, второй, первый, четвертый: ОКДТЕ ЭТТ СЛШОИ РНЯФАИВЯ В этом случае порядок считывания столбцов и будет ключом. В случае, если размер сообщения не кратен размеру блока, можно дополнить сообщение какими-либо символами, не влияющими на смысл, например, пробелами. Однако это делать не рекомендуется, так как это дает противнику в случае перехвата криптограммы информацию о размере используемой таблицы перестановок (длине блока). После определения длины блока противник может найти длину ключа (количество столбцов таблицы) среди делителей длины блока. Посмотрим, как зашифровать и расшифровать сообщение, имеющее длину, не кратной размеру таблицы перестановки. Зашифруем слово ПЕРЕМЕНКА Количество символов в исходном сообщении равно 9. Запишем сообщение в таблицу по строкам (таблица 2.10), а последние три ячейки оставим пустыми. Таблица 2.10. Шифрование неполного 54
Г.В. Басалова Основы криптографии блока методом перестановки по таблице П Е Р Е М Е Н К А Затем будем считывать из таблицы последовательно по столбцам: ПМАЕЕРНЕК Для расшифрования вначале определяют число полных столбцов, то есть количество символов в последней строке. Для этого делят размер сообщения (в нашем примере – 9) на количество столбцов или размер ключа (в примере – 4). Остаток от деления будет числом полных столбцов: 9 mod 4 = 1. Следовательно, в нашем примере был 1 полный столбец и три коротких. Теперь можно поставить буквы сообщения на свои места и расшифровать сообщение. Так как ключом при шифровании было число 1234 (столбцы считывались последовательно), то при расшифровании первые три символа (ПМА) записываются в первый столбец таблицы перестановки, следующие два (ЕЕ) – во второй столбец, следующие два (РН) – в третий, и последние два (ЕК) – в четвертый. После заполнения таблицы считываем строки и получаем исходное сообщение ПЕРЕМЕНКА. Существуют и другие способы перестановки, которые можно реализовать программным и аппаратным путем. Например, при передаче данных, записанных в двоичном виде, удобно использовать аппаратный блок, который перемешивает определенным образом с помощью соответствующего электрического монтажа биты исходного nразрядного сообщения. Так, если принять размер блока равным восьми битам, можно, к примеру, использовать такой блок перестановки, как на рис. 2.7. 55
Г.В. Басалова Основы криптографии Рис. 2.7. Аппаратный блок перестановки Для расшифрования на приемной стороне устанавливается другой блок, восстанавливающий порядок цепей. Аппаратно реализуемая перестановка широко используется на практике как составная часть некоторых современных шифров. При перестановке любого вида в зашифрованное сообщение будут входить те же символы, что и в открытый текст, но в другом порядке. Следовательно, статистические закономерности языка останутся без изменения. Это дает криптоаналитику возможность использовать различные методы для восстановления правильного порядка символов. Если у противника есть возможность пропускать через систему шифрования методом перестановки специально подобранные сообщения, то он сможет организовать атаку по выбранному тексту. Так, если длина блока в исходном тексте равна N символам, то для раскрытия ключа достаточно пропустить через шифровальную систему N-1 блоков исходного текста, в которых все символы, кроме одного, одинаковы. Другой вариант атаки по выбранному тексту возможен в случае, если длина блока N меньше количества символов в алфавите. В этом случае можно сформировать одно специальное сообщение из разных букв алфавита, расположив их, например, по порядку следования в алфавите. Пропустив подготовленное таким образом 56
Г.В. Басалова Основы криптографии сообщение через шифровальную систему, специалисту по криптоанализу останется только посмотреть, на каких позициях очутились символы алфавита после шифрования, и составить схему перестановки. Мы рассмотрели общую схему симметричного шифрования и классификацию простейших методов шифрования с закрытым ключом. В следующей лекции мы познакомимся с принципами построения современных блочных алгоритмов Ключевые термины Гаммирование – метод шифрования, основанный на "наложении" гамма-последовательности на открытый текст. Обычно это суммирование в каком-либо конечном поле (суммирование по модулю). Например, в поле GF(2) такое суммирование принимает вид обычного "исключающего ИЛИ". При расшифровке операция проводится повторно, в результате получается открытый текст. Пропорциональные или монофонические шифры – методы замены, в которых уравнивается частота появления зашифрованных знаков. Шифры замены (подстановки) основаны на том, что символы исходного текста, обычно разделенные на блоки и записанные в одном алфавите, заменяются одним или несколькими символами другого алфавита в соответствии с принятым правилом преобразования. Шифр многоалфавитной замены (или подстановки) – группа методов шифрования подстановкой, в которых для замены символов исходного текста используется не один, а несколько алфавитов по определенному правилу. Шифры перестановки основаны на том, что входной поток исходного текста делится на блоки, в каждом из которых выполняется перестановка символов. Ключом такого шифра является используемая при шифровании перестановочная матрица или вектор, указывающий правило перестановки. Шифр простой (или одноалфавитной) замены, простой подстановочный 57
Г.В. Басалова Основы криптографии шифр, моноалфавитный шифр— группа методов шифрования, которые сводятся к созданию по определённому алгоритму таблицы шифрования, в которой для каждой буквы открытого текста существует единственная сопоставленная ей буква шифртекста. Само шифрование заключается в замене букв согласно таблице. Для расшифровки достаточно иметь ту же таблицу, либо знать алгоритм, по которой она генерируется. Симметричное шифрование (шифрование с закрытым ключом) – методы обратимого преобразования данных, в которых используется один и тот же ключ, который обе стороны информационного обмена должны хранить в секрете от противника. Все известные из истории шифры, например, шифр Цезаря – это шифры с закрытым ключом. Краткие итоги Симметричные шифры – способ шифрования, в котором для шифрования и расшифровывания применяется один и тот же криптографический ключ. Ключ шифрования должен сохраняться в секрете обеими сторонами. Известны разные методы шифрования с закрытым ключом. На практике часто используются алгоритмы перестановки, подстановки, а также комбинированные методы. В методах перестановки символы исходного текста меняются местами друг с другом по определенному правилу. В методах замены (или подстановки) символы открытого текста заменяются некоторыми эквивалентами шифрованного текста. Шифр простой (или одноалфавитной) замены – группа методов шифрования, которые сводится к созданию по определённому алгоритму таблицы шифрования, в которой для каждой буквы открытого текста существует единственная сопоставленная ей буква шифртекста. Само шифрование заключается в замене букв согласно таблице. Для расшифровки достаточно иметь ту же таблицу, либо знать алгоритм, по которой она генерируется. Шифр многоалфавитной замены – группа методов шифрования 58
Г.В. Басалова Основы криптографии подстановкой, в которых для замены символов исходного текста используется не один, а несколько алфавитов по определенному правилу. Таким образом, при шифровании получаётся достаточно сложная последовательность, которую уже не так просто вскрыть, как один одноалфавитный шифр. Частным случаем многоалфавитной подстановки является гаммирование – метод шифрования, основанный на "наложении" гамма-последовательности на открытый текст. Обычно это суммирование в каком-либо конечном поле (суммирование по модулю длины алфавита). Самым важным эффектом, достигаемым при использовании многоалфавитного шифра, является маскировка частот появления тех или иных букв в тексте, на основании которой обычно очень легко вскрываются одноалфавитные шифры. Набор для практики Вопросы для самопроверки 1. Поясните общую схему симметричного шифрования. 2. Что общего имеют все методы шифрования с закрытым ключом? 3. Назовите основные группы методов шифрования с закрытым ключом. 4. Приведите примеры шифров перестановки. 5. Сформулируйте общие принципы для методов шифрования подстановкой. 6. В чем заключаются многоалфавитные подстановки? 7. Приведите пример шифра одноалфавитной замены. 8. Опишите алгоритм любого метода шифрования перестановкой. Приведите пример шифрования некоторого сообщения этим методом. Каков алгоритм расшифрования в этом методе? 9. К какой группе методов шифрования с закрытым ключом относится метод с использованием таблицы Вижинера? Каковы алгоритмы шифрования и расшифрования в этом методе? Приведите пример шифрования некоторого сообщения этим 59
Г.В. Басалова Основы криптографии методом. 10. Каким образом можно зашифровать и расшифровать сообщение методом табличной перестановки, если размер шифруемого сообщения не кратен размеру блока? 11. Что такое монофонические шифры? Упражнения для самопроверки 1. Имеется таблица замены для двух шифров простой замены: шифра №1 и шифра №2. Расшифруйте сообщения, зашифрованные с помощью шифра №1 И.РЮУ.ЪФОБГНО CЛХГ.ЪЛХО.ФОО.ЩВ 2. Имеется таблица замены для двух шифров простой замены: шифра №1 и шифра №2. 60
Г.В. Басалова Основы криптографии Расшифруйте сообщения, зашифрованные с помощью шифра №2: 3. Пусть исходный алфавит содержит следующие символы: АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ Зашифруйте с помощью шифра Вижинера и ключа ЯБЛОКО сообщения: КРИПТОСТОЙКОСТЬ ГАММИРОВАНИЕ 4. Пусть исходный алфавит состоит из следующих знаков (символ "_" (подчеркивание) будем использовать для пробела): АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ_ 5. 6. 7. 8. 9. Расшифруйте сообщения, зашифрованные с помощью шифра Вижинера и ключа ОРЕХ: ШВМБУЖНЯ ЯБХЪШЮМХ Первый байт фрагмента текста в шестнадцатеричном виде имеет вид А5. На него накладывается по модулю два 4-х битовая гамма 0111 (в двоичном виде). Что получится после шифрования? Первый байт фрагмента текста, зашифрованного методом гаммирования (по модулю 2), в шестнадцатеричном виде имеет вид 9А. До шифрования текст имел первый байт, равный 74 (в шестнадцатеричном виде). Какой ключ использовался при шифровании? Зашифруйте методом перестановки с фиксированным периодом d=6 с ключом 436215 сообщения: ЖЕЛТЫЙ_ОГОНЬ МЫ_НАСТУПАЕМ Расшифруйте сообщения, зашифрованные методом перестановки с фиксированным периодом d=8 с ключом 64275813: СЛПИЬНАЕ РОИАГДВН Определите ключи в системе шифрования, использующей перестановку с фиксированным периодом d=5 по парам 61
Г.В. Басалова Основы криптографии открытых и зашифрованных сообщений: МОЙ ПАРОЛЬ – ЙПМ ООЬАЛР СИГНАЛ БОЯ – НИСАГО ЛЯБ 10. Зашифруйте сообщения методом перестановки по таблице 5*5. Ключ указывает порядок считывания столбцов при шифровании. ШИРОКОПОЛОСНЫЙ УСИЛИТЕЛЬ (ключ: 41235) ПЕРЕДАЧА ИЗОБРАЖЕНИЯ (ключ: 24513) 11. Расшифруйте сообщения, зашифрованные методом перестановки по таблице 4*4 (символ подчеркивания заменяет пробел). Ключ указывает порядок считывания столбцов при шифровании. ЕАУПД_КЕАЗАРЧВ (ключ: 4123) А_НСЫИЛБСАЛЙГ (ключ: 3142) 12. Известно, что при использовании шифра пропорциональной замены каждой русской букве поставлено в соответствие одно или несколько трехзначных чисел по таблице замен: Таблица замен для пропорционального шифра Символ Варианты замены Символ Варианты замены А 760 128 350 201 С 800 767 105 Б 101 Т 759 135 214 В 210 106 У 544 Г 351 Ф 560 Д 129 Х 768 Е 761 130 802 352 Ц 545 Ж 102 Ч 215 З 753 Ш 103 И 762 211 131 Щ 752 К 754 764 Ъ 561 Л 132 354 Ы 136 М 755 742 Ь 562 Н 763 756 212 Э 750 О 757 213 765 133 353 Ю 570 П 743 766 Я 216 104 Р 134 532 Пробел 751 769 758 801 849 035… Расшифруйте указанные сообщения. 62
Г.В. Басалова Основы криптографии 353214764134136759136762849754128212350354035 351 761756130532128759353134758105757213101752352 63
Г.В. Басалова Основы криптографии Принципы построения блочных шифров с закрытым ключом В этой лекции рассматриваются принципы построения современных блочных алгоритмов: операции, используемые в блочных алгоритмах симметричного шифрования; структура блочного алгоритма; требования к блочному алгоритму шифрования. Дается понятие сети Фейстеля. Цель лекции: познакомить студента с принципами построения современных блочных алгоритмов симметричного шифрования. Понятие композиционного шифра Комбинация нескольких подряд примененных простых шифров, (например, перестановки или подстановки) дает в результате более сложное преобразование, называемое комбинированным (композиционным) шифром. Этот шифр обладает более сильными криптографическими возможностями, чем отдельная перестановка или подстановка. Вернемся к примеру из "Простейшие методы шифрования с закрытым ключом", в котором производится шифрование методом перестановки с фиксированным периодом. Пусть период перестановки d=6, а ключ К равен 436215. Это означает, что в каждом блоке из шести символов четвертый символ становится на первое место, третий – на второе, шестой – на третье и т.д. Зашифруем с помощью выбранного ключа слово СИГНАЛ: Будем предполагать, что противнику известен метод шифрования, но неизвестен ключ. Если противник перехватит сообщение НГЛИСА, ему понадобится, как указывалось в "Простейшие методы шифрования с закрытым ключом", не более 720 попыток (при использовании метода полного перебора). Для того чтобы изучить 720 вариантов на самом деле требуется не так уж много времени. Предположим, что на изучение каждого варианта у противника уходит 1 секунда. Тогда на все 720 64
Г.В. Басалова Основы криптографии попыток потребуется всего 12 минут. Таким образом, не более чем за 12 минут работы противник узнает наш ключ и сможет в дальнейшем расшифровывать все сообщения, закрытые тем же ключом. Если же анализ производится с использованием компьютера, для дешифрации НГЛИСА и поиска ключа потребуется гораздо меньше времени. Каким образом можно усложнить задачу криптоанализа нашего шифра? Можно увеличивать размер периода перестановки, то есть блока, в котором переставляются символы, например, до тысячи знаков. Однако, во-первых, перебор сотен и тысяч знаков на современных компьютерах производится за доли минуты, а во-вторых, при этом до тысячи символов возрастет и размер ключа. Такой ключ уже достаточно трудно запомнить и использовать. Попробуем пойти по другому пути и применим перед перестановкой в блоке из 6 символов простую замену по методу Цезаря, описанную в "Основные понятия криптографии". Обозначим ключ в методе Цезаря k1 (1<=k1<=31), а ключ при перестановке – k2. Тогда общий ключ K = (k1, k2). Таким образом, если К = (5, 436215), это значит, что вначале шифруемые символы заменяются по методу Цезаря с ключом 5, а затем в каждом блоке из шести символов производится перестановка с ключом 436215. Выполним в два этапа шифрование слова СИГНАЛ: Можно записать также и так: Количество возможных ключей в шифре Цезаря равно в нашем случае 31, поэтому общее число вариантов возможных ключей (пространство ключей) в примененном комбинированном шифре равно 31x720=22320. Таким образом, действительно, полученный комбинированный шифр значительно сильнее отдельно выполненных замены и перестановки. 65
Г.В. Басалова Основы криптографии Для затруднения криптоанализа статистическими методами можно использовать наш комбинированный шифр дважды с одним и тем же ключом: В результате двух подряд выполненных циклов шифрования слово СИГНАЛ превратилось в УХЛОЧЫ. При этом пространство ключей шифра не изменилось, однако за счет двухкратного шифрования статистические закономерности исходного текста замаскировались сильнее. В реальных шифрах также используется комбинация нескольких простейших операций над цепочками или блоками знаков. Для повышения криптостойкости эти операции выполняются циклически несколько раз, образуя раунды или шаги. На стойкость шифра влияют такие факторы, как размер блока, размер ключа, количество раундов шифрования. Современные шифры с закрытым ключом обрабатывают только двоичные данные, поэтому в них помимо обычных замены и перестановки применяются некоторые другие специфичные для двоичных чисел операции. Алгоритмы симметричного шифрования могут обрабатывать исходный текст блоками или потоком. В зависимости от этого различают блочные алгоритмы симметричного шифрования и поточные. Блок текста рассматривается как неотрицательное целое число либо как несколько независимых неотрицательных целых чисел. Длина блока всегда выбирается равной степени двойки, например, 64, 128, 256 бит. Операции, используемые в симметричного шифрования 66 блочных алгоритмах
Г.В. Басалова Основы криптографии Рассмотрим операции, используемые в большинстве алгоритмов симметричного шифрования. Будем при этом помнить, что рассматриваемые операции применяются к двоичным данным. Любая информация, например, изображения или текст, могут быть представлены в двоичном виде. Благодаря этому при шифровании не приходится задумываться о смысле передаваемых сообщений. Одна из часто используемых операций – операция побитового сложения по модулю 2, обозначаемая XOR или . Принципы выполнения этой операции подробно рассмотрены в "Простейшие методы шифрования с закрытым ключом". При сложении по модулю 2 операнды обрабатываются поразрядно. В разряде результата ставится единица, если в соответствующих разрядах операндов присутствует нечетное число единиц. Например, сложим по модулю 2 два 16разрядных числа: Эта операция имеет очень удобное свойство: вычитание по модулю два есть то же самое, что и сложение, поэтому один из операндов может быть получен путем прибавления к сумме другого операнда. Также в блочных алгоритмах шифрования широко используется операция сложения по модулю 232 или по модулю 216. Эта операция представляет собой обыкновенное сложение двоичных чисел без учета переноса в старший 32-й или 16-й разряд результата. Например, сложим по модулю 216 два 16-разрядных числа: Перенос из 15-го разряда, обозначенный в примере как единица в скобках, дальше не используется и поэтому отбрасывается. 67
Г.В. Басалова Основы криптографии Циклический сдвиг передвигает цепочку бит на некоторое число разрядов влево или вправо. Двоичное число при выполнении операции сдвига напоминает длинную гусеницу, выползающую с одной стороны туннеля и заползающую с другой. При циклическом сдвиге влево биты, выходящие слева за разрядную сетку дописываются справа на освободившиеся места. При циклическом сдвиге вправо все биты передвигаются цепочкой вправо, а те, которым не хватает места, переносятся в хвост цепочки. Например, выполним циклический сдвиг двоичного числа влево на 3 разряда. Для этого будем 3 раза переписывать двоичные цифры, каждый раз смещая их влево на 1 разряд и перенося знаки, выходящие из пятнадцатого разряда на место нулевого. Аналогично выполняется и циклический сдвиг вправо. Например, при сдвиге вправо на 3 разряда нулевой, первый и второй биты исходного числа выходят из разрядной сетки и запоминаются, все остальные биты перемещаются вправо на 3 позиции, затем запомненные цифры записываются на тринадцатое, четырнадцатое и пятнадцатое места. При выполнении табличной подстановки группа битов отображается в другую группу битов. При этой операции один блок двоичных данных 68
Г.В. Басалова Основы криптографии заменяется по определенному правилу или таблице другим блоком. Например, можно заменять каждую группу из трех двоичных цифр другой группой из трех цифр по следующей таблице: Вход Выход 000 011 001 101 010 000 011 111 100 010 101 110 110 001 111 100 Если каждое значение, записанное в столбцах "Вход" и "Выход" записать не в двоичном, а в десятичном виде, то ту же самую таблицу замен можно будет записать более кратко, например, так: 0->3, 1->5, 2->0, 3->7, 4->2, 5->6, 6->1, 7->4 Первая цифра в такой записи представляет значение на входе, а вторая – на выходе. Если значения входов упорядочены по возрастанию в обычном порядке, то можно вообще не писать первую цифру, а записать только соответствующие значения выходов: 3, 5, 0, 7, 2, 6, 1, 4. То есть в качестве замены для значения 3-битового блока выбирается элемент из таблицы замен с порядковым номером, равным значению заменяемого блока. Если необходимо заменять группы из четырех двоичных цифр, то таблица замен должна содержать уже 16 значений. В общем случае для n-битовых блоков таблица замен должна содержать 2 n элементов. Табличную подстановку в литературе иногда называют заменой с использованием S-блоков или S-box. (Буква S взята от английского 69
Г.В. Басалова Основы криптографии слова substitution – подстановка). С помощью операции перемещения биты сообщения переупорядочиваются. Перемещение называют также permutation или Pблоком. Структура блочного шифрования алгоритма симметричного Таким образом, в алгоритмах симметричного шифрования часто используются операции сложения по модулю 2, сложения по модулю 216 или 232, циклического сдвига, замены и перестановки. Эти операции циклически повторяются в алгоритме N раз, образуя так называемые раунды или шаги. Исходными данными для каждого раунда являются выход предыдущего раунда и ключ, который получен по определенному алгоритму из общего ключа шифрования K. Ключ раунда называется подключом К i. В результате блочный алгоритм шифрования может быть представлен следующим образом (рис. 3.1). Рис. 3.1. Структура блочного алгоритма симметричного шифрования Блочные алгоритмы шифрования применяются к двоичным данным. В общем случае процедура блочного шифрования преобразовывает nбитный блок открытого текста в k-битный блок зашифрованного текста. Число блоков длины n равно 2n. Для того чтобы преобразование было обратимым, каждый из таких блоков должен преобразовываться в свой уникальный блок зашифрованного текста. Длина блока всегда выбирается равной степени двойки, например, 64, 128, 256 бит. 70
Г.В. Басалова Основы криптографии Требования к блочному алгоритму шифрования К современным алгоритмам блочного шифрования предъявляют достаточно жесткие требования, связанные с областью применения, возможностью реализации на различных вычислительных платформах и другими факторами. Рассмотрим основные из требований. 1. Алгоритм должен обеспечивать высокий уровень стойкости, и эта стойкость не должна основываться на сохранении втайне самого алгоритма. 2. Незначительное изменение исходного сообщения должно приводить к существенному изменению зашифрованного сообщения даже при использовании одного и того же ключа. 3. Алгоритм должен успешно противостоять атакам по выбранному тексту, то есть таким, чтобы нельзя было узнать ключ, даже зная достаточно много пар (зашифрованное сообщение, незашифрованное сообщение), полученных при шифровании с использованием данного ключа. 4. Алгоритм шифрования должен иметь возможность быть реализованым на различных платформах, которые предъявляют различные требования. Для наиболее быстрых приложений используется специальная аппаратура. Несмотря на это, программные реализации применяются также достаточно часто. Поэтому алгоритм должен допускать эффективную программную реализацию на универсальных микропроцессорах. Алгоритм должен также работать на микроконтроллерах и других процессорах среднего размера. 5. Алгоритм должен использовать простые операции, которые эффективны на микропроцессорах, т.е. исключающее или, сложение, табличные подстановки, умножение по модулю. Не должно использоваться сдвигов переменной длины, побитных перестановок или условных переходов. 6. Алгоритм должен эффективно реализовываться на специализированной аппаратуре, предназначенной для выполнения операций шифрования и расшифрования, то есть реализация алгоритма в виде электронных устройств должна быть экономичной. 7. Алгоритм шифрования должен быть применим во многих 71
Г.В. Басалова Основы криптографии приложениях. Алгоритм должен быть эффективен при шифровании файлов данных или большого потока данных, при создании определенного количества случайных битов, а также должна быть возможность его использования для формирования односторонней хеш-функции 1). 8. Алгоритм должен быть простым для написания кода, чтобы минимизировать вероятность программных ошибок. Также это дает возможность анализа и уменьшает закрытость алгоритма. 9. Алгоритм должен допускать любую случайную строку битов нужной длины в качестве возможного ключа (это называется иметь плоское пространство ключей ). Не должно быть "слабых" ключей, облегчающих криптоанализ. 10. Алгоритм должен легко модифицироваться для различных уровней безопасности и удовлетворять как минимальным, так и максимальным требованиям. Некоторое уточнение необходимо сделать относительно пункта 1, требующего высокую криптостойкость алгоритма шифрования. Обычно под "высокой криптостойкостью" понимают, что шифр должен быть стоек по отношению к атаке по выбранному тексту. Это автоматически подразумевает его стойкость по отношению к атакам по шифротексту и по известному тексту. Однако известно, что при атаке по выбранному тексту шифр всегда может быть взломан путем перебора ключей. Поэтому требование стойкости шифра можно уточнить следующим образом: "Шифр стоек (при атаке по выбранному тексту), если для него не существует алгоритма взлома, существенно более быстрого, чем прямой перебор ключей". Интересно, что по состоянию на сегодняшний день ни для одного используемого шифра не доказано строго соответствие этому определению стойкости. Сеть Фейштеля На рис. 3.1 была представлена общая структура блочного алгоритма шифрования. Понятно, что само преобразование данных выполняется в раундах или шагах шифрования. Какие же действия надо выполнить в одном раунде, чтобы в результате выполнения всего алгоритма получить надежно зашифрованные данные? 72
Г.В. Басалова Основы криптографии Большой вклад в исследования принципов разработки блочных шифров внес американский ученый Х. Фейштель (Horst Feistel). Он, в частности, принимал участие в разработке системы шифрования "Люцифер" фирмы IBM. Фейштель предложил структуру, называемую в настоящее время сетью Фейштеля. Сети Фейштеля получили широкое распространение, так как, с одной стороны, они удовлетворяют всем требованиям к алгоритмам симметричного шифрования, а с другой стороны, достаточно просты и удобны в использовании. Раунд, организованный по сети Фейштеля имеет следующую структуру. Входной блок делится на несколько частей равной длины. Эти части блока называются ветвями. Так, например, если блок имеет длину 64 бита, используются две ветви по 32 бита каждая. Ветви обрабатываются по отдельности, после чего осуществляется циклический сдвиг всех ветвей влево. В случае двух ветвей каждый раунд имеет структуру, показанную на рис. 3.2 Рис. 3.2. i-й раунд сети Фейштеля Функция F называется образующей. Каждый раунд состоит из вычисления функции F для одной ветви и побитового выполнения 73
Г.В. Басалова Основы криптографии операции "сумма по модулю 2" результата F с другой ветвью. После этого ветви меняются местами. Число раундов может быть различным для разных алгоритмов. В некоторых алгоритмах рекомендуется от 8 до 32 раундов, в других – больше. В целом увеличение количества раундов увеличивает криптостойкость алгоритма. Возможно, эта особенность и повлияла на столь активное распространение сети Фейштеля, так как для большей криптостойкости достаточно просто увеличить количество раундов, не изменяя сам алгоритм. В последнее время количество раундов не фиксируется, а лишь указываются рекомендуемые пределы. В последнее время все чаще используются различные разновидности сети Фейштеля для 128-битного блока с четырьмя ветвями. Увеличение количества ветвей, а не размерности каждой ветви связано с тем, что наиболее популярными до сих пор остаются процессоры с 32разрядными словами, следовательно, оперировать 32-разрядными словами эффективнее, чем с 64-разрядными. В блочных алгоритмах, построенных на основе сети Фейштеля, основной операцией является вычисление образующей функции F. Эта функция использует подключ раунда и одну ветвь входного блока для вычисления результата. Именно тем, как определяется функция F, системы шифрования и отличаются друг от друга. В некоторых алгоритмах введены также начальные преобразования входного блока данных, придающие некоторую "случайность" входному тексту (это называется рандомизацией данных.) Рандомизация производится для того, чтобы уменьшить естественную избыточность входного сообщения. В следующих лекциях рассматриваются некоторые используемые на практике блочные алгоритмы симметричного шифрования. Их описание в данном курсе лекций нельзя считать абсолютно полным, например, по приведенным описаниям трудно составить программы шифрования/расшифрования. Это связано с ограничением на объем данного учебного пособия. Однако все основные этапы рассматриваемых алгоритмов в учебном пособии приведены, так же как и особенности реализации и применения. Ключевые термины 74
Г.В. Басалова Основы криптографии Комбинированный (композиционный) шифр – криптографическое преобразование данных, получаемое в результате комбинации нескольких подряд примененных простых шифров. Ключ – информация, необходимая для шифрования и расшифрования сообщений. Шифр – совокупность заранее оговоренных способов преобразования исходного секретного сообщения с целью его защиты. Шифрование с закрытым ключом (симметричное шифрование) – методы обратимого преобразования данных, в которых используется один и тот же ключ, который обе стороны информационного обмена должны хранить в секрете от противника. Все известные из истории шифры, например, шифр Цезаря – это шифры с закрытым ключом. Краткие итоги В симметричных блочных шифрах используется комбинация нескольких простейших операций над цепочками или блоками бит: сложения по модулю 2, сложения по модулю 216 или 232, циклического сдвига, замены и перестановки. Для повышения криптостойкости эти операции выполняются циклически несколько раз, образуя раунды или шаги. На стойкость шифра влияют такие факторы, как размер блока, размер ключа, количество раундов шифрования. Алгоритмы симметричного шифрования различаются способом, которым обрабатывается исходный текст. Возможно шифрование блоками или шифрование потоком. Блок текста рассматривается как неотрицательное целое число либо как несколько независимых неотрицательных целых чисел. Длина блока всегда выбирается равной степени двойки, например, 64, 128, 256 бит. Блочный алгоритм симметричного шифрования может иметь в своей основе сеть (схему) Фейштеля. В этом случае входной блок делится на несколько частей равной длины (ветви). Ветви обрабатываются по отдельности, после чего осуществляется циклический сдвиг всех ветвей влево. 75
Г.В. Басалова Основы криптографии Набор для практики Вопросы для самопроверки 1. Какой шифр называют комбинированным или композиционным шифром? 2. Какие факторы влияют на стойкость блочного алгоритма шифрования? 3. Какие простейшие операции применяются в блочных алгоритмах шифрования? 4. В чем отличие блочных алгоритмов шифрования от поточных? 5. Что понимается под "раундом" алгоритма шифрования? 6. Каковы требования к блочному алгоритму шифрования? 7. Почему блочный алгоритм шифрования должен иметь простую и понятную структуру? 8. Что понимается под требованием "высокой криптостойкости" алгоритма шифрования? 9. Что представляет собой сеть Фейштеля? Упражнения для самопроверки 1. Сложите по модулю 2: двоичные числа 10101100 и 11001010 ; десятичные числа 15 и 10 ; шестнадцатеричные числа 0В5 и 37. Примечание: десятичные и шестнадцатеричные числа необходимо сначала перевести в двоичный вид. 2. Сложите по модулю 28: двоичные числа 10101100 и 11001010 ; десятичные числа 155 и 100 ; шестнадцатеричные числа 0В5 и 37. Примечание: десятичные числа необходимо сначала перевести в двоичный вид. 3. Выполните операцию циклического сдвига: влево на 5 разрядов для двоичного числа 10101100 ; 76
Г.В. Басалова Основы криптографии вправо на 4 разряда для шестнадцатеричного числа 9E ; вправо на 2 разряда для шестнадцатеричного числа 55. Примечание: шестнадцатеричные числа необходимо сначала перевести в двоичный вид. 4. Пусть каждые три бита входного сообщения заменяются по следующей таблице замен: Вход Выход 000 011 001 101 010 000 011 111 100 010 101 110 110 001 111 100 Выполните разбиение исходного сообщения на блоки по три бита и произведите поблочную замену для следующих сообщений, представленных в цифровом виде: 1010 1100 1100(2) 2356(10) 0В57(16) Примечание: десятичные и шестнадцатеричные числа необходимо сначала перевести в двоичный вид. 1) Хэш-функция – это математическая или иная функция, которая для строки произвольной длины вычисляет некоторое целое значение или некоторую другую строку фиксированного размера. Хеш-функции более подробно рассматриваются в "Криптографические хеш-функции" 77
Г.В. Басалова Основы криптографии Алгоритмы шифрования DES и AES Одной из наиболее известных криптографических систем с закрытым ключом является DES – Data Encryption Standard. Эта система первой получила статус государственного стандарта в области шифрования данных. И хотя старый американский стандарт DES в настоящее время утратил свой официальный статус, этот алгоритм все же заслуживает внимания при изучении криптографии. Кроме того в этой лекции объясняется, что такое "двухкратный DES", атака "встреча посередине" и способы ее устранения. В этой же лекции кратко рассматривается новый стандарт США на блочный шифр – алгоритм Rijndael. Цель лекции: познакомить студента с основными сведениями об алгоритме шифрования DES. Основные сведения Одной из наиболее известных криптографических систем с закрытым ключом является DES – Data Encryption Standard. Эта система первой получила статус государственного стандарта в области шифрования данных. Она разработана специалистами фирмы IBM и вступила в действие в США 1977 году. Алгоритм DES широко использовался при хранении и передаче данных между различными вычислительными системами; в почтовых системах, в электронных системах чертежей и при электронном обмене коммерческой информацией. Стандарт DES реализовывался как программно, так и аппаратно. Предприятиями разных стран был налажен массовый выпуск цифровых устройств, использующих DES для шифрования данных. Все устройства проходили обязательную сертификацию на соответствие стандарту. Несмотря на то, что уже некоторое время эта система не имеет статуса государственного стандарта, она по-прежнему широко применяется и заслуживает внимания при изучении блочных шифров с закрытым ключом. Длина ключа в алгоритме DES составляет 56 бит. Именно с этим фактом связана основная полемика относительно способности DES противостоять различным атакам. Как известно, любой блочный шифр с закрытым ключом можно взломать, перебрав все возможные 78
Г.В. Басалова Основы криптографии комбинации ключей. При длине ключа 56 бит возможны 256 разных ключей. Если компьютер перебирает за одну секунду 1 000 000 ключей (что примерно равно 220), то на перебор всех 256 ключей потребуется 236 секунд или чуть более двух тысяч лет, что, конечно, является неприемлемым для злоумышленников. Однако возможны более дорогие и быстрые вычислительные системы, чем персональный компьютер. Например, если иметь возможность объединить для проведения параллельных вычислений миллион процессоров, то максимальное время подбора ключа сокращается примерно до 18 часов. Это время не слишком велико, и криптоаналитик, оснащенный подобной дорогой техникой, вполне может выполнить вскрытие данных, зашифрованных DESза приемлемое для себя время. Вместе с этим можно отметить, что систему DES вполне можно использовать в небольших и средних приложениях для шифрования данных, имеющих небольшую ценность. Для шифрования данных государственной важности или имеющих значительную коммерческую стоимость система DES в настоящее время, конечно, не должна использоваться. В 2001 году после специально объявленного конкурса в США был принят новый стандарт на блочный шифр, названный AES (Advanced Encryption Standard), в основу которого был положен шифр Rijndael, разработанный бельгийскими специалистами. Этот шифр рассматривается в конце лекции. Основные параметры DES: размер блока 64 бита, длина ключа 56 бит, количество раундов – 16. DES является классической сетью Фейштеля с двумя ветвями. Алгоритм преобразует за несколько раундов 64-битный входной блок данных в 64-битный выходной блок. Стандарт DES построен на комбинированном использовании перестановки, замены и гаммирования. Шифруемые данные должны быть представлены в двоичном виде. Шифрование Общая структура DES представлена на рис. 4.1. Процесс шифрования каждого 64-битового блока исходных данных можно разделить на три 79
Г.В. Басалова Основы криптографии этапа: 1. начальная подготовка блока данных; 2. 16 раундов "основного цикла"; 3. конечная обработка блока данных. На первом этапе выполняется начальная перестановка 64-битного исходного блока текста, во время которой биты определенным образом переупорядочиваются. На следующем (основном) этапе блок делится на две части (ветви) по 32 бита каждая. Правая ветвь преобразуется с использованием некоторой функции F и соответствующего частичного ключа, получаемого из основного ключа шифрования по специальному алгоритму преобразования ключей. Затем производится обмен данными между левой и правой ветвями блока. Это повторяется в цикле 16 раз. Наконец, на третьем этапе выполняется перестановка результата, полученного после шестнадцати шагов основного цикла. Эта перестановка обратна начальной перестановке. 80
Г.В. Басалова Основы криптографии Рис. 4.1. Общая схема DES Рассмотрим более подробно все преобразования по стандарту DES. этапы криптографического На первом этапе 64-разрядный блок исходных данных подвергается начальной перестановке. В литературе эта операция иногда называется "забеливание" – whitening. При начальной перестановке биты блока данных определенным образом переупорядочиваются. Эта операция придает некоторую "хаотичность" исходному сообщению, снижая возможность использования криптоанализа статистическими методами. Одновременно с начальной перестановкой блока данных выполняется начальная перестановка 56 бит ключа. Из рис. 4.1. видно, что в каждом 81
Г.В. Басалова Основы криптографии из раундов используется соответствующий 48-битный частичный ключ Ki. Ключи Ki получаются по определенному алгоритму, используя каждый из битов начального ключа по нескольку раз. В каждом раунде 56-битный ключ делится на две 28-битовые половинки. Затем половинки сдвигаются влево на один или два бита в зависимости от номера раунда. После сдвига определенным образом выбирается 48 из 56 битов. Так как при этом не только выбирается подмножество битов, но и изменяется их порядок, то эта операция называется "перестановка со сжатием". Ее результатом является набор из 48 битов. В среднем каждый бит исходного 56-битного ключа используется в 14 из 16 подключей, хотя не все биты используются одинаковое количество раз. Далее выполняется основной цикл преобразования, организованный по сети Фейштеля и состоящий из 16 одинаковых раундов. При этом в каждом раунде (рис. 4.2) получается промежуточное 64-битное значение, которое затем обрабатывается в следующем раунде. 82
Г.В. Басалова Основы криптографии Рис. 4.2. Структура одного раунда DES Левая и правая ветви каждого промежуточного значения обрабатываются как отдельные 32-битные значения, обозначенные L и R. Вначале правая часть блока Ri расширяется до 48 битов, используя таблицу, которая определяет перестановку плюс расширение на 16 битов. Эта операция приводит размер правой половины в соответствие с размером ключа для выполнения операции XOR. Кроме того, за счет выполнения этой операции быстрее возрастает зависимость всех битов результата от битов исходных данных и ключа (это называется "лавинным эффектом"). Чем сильнее проявляется лавинный эффект при использовании того или иного алгоритма шифрования, тем лучше. 83
Г.В. Басалова Основы криптографии После выполнения перестановки с расширением для полученного 48битного значения выполняется операция XOR с 48-битным подключом Ki. Затем полученное 48-битное значение подается на вход блока подстановки S (от англ. Substitution - подстановка), результатом которой является 32-битное значение. Подстановка выполняется в восьми блоках подстановки или восьми S-блоках (S-boxes). При выполнении этой операции 48 битов данных делятся на восемь 6-битовых подблоков, каждый из которых по своей таблице замен заменяется четырьмя битами. Подстановка с помощью S-блоков является одним из важнейших этапом DES. Таблицы замен для этой операции специально спроектированы специалистами так, чтобы обеспечивать максимальную безопасность. В результате выполнения этого этапа получаются восемь 4-битовых блоков, которые вновь объединяются в единое 32-битовое значение. Далее полученное 32-битовое значение обрабатывается с помощью перестановки Р (от англ. Permutation – перестановка), которая не зависит от используемого ключа. Целью перестановки является максимальное переупорядочивание битов такое, чтобы в следующем раунде шифрования каждый бит с большой вероятностью обрабатывался другим S-блоком. И, наконец, результат перестановки объединяется с помощью операции XOR с левой половиной первоначального 64-битового блока данных. Затем левая и правая половины меняются местами, и начинается следующий раунд. После шестнадцати раундов шифрования выполняется конечная перестановка результата. Эта перестановка инверсна (обратна) начальной перестановке. После выполнения всех указанных шагов блок данных считается полностью зашифрованным и можно переходить к шифрованию следующего блока исходного сообщения. Если Вы внимательно прочитали описание DES, то убедились, что разработчики приложили все силы для того, чтобы сделать процесс вскрытия зашифрованных сообщений как можно более трудным. Даже простое описание DES на бумаге выглядит достаточно сложным, что уж 84
Г.В. Басалова Основы криптографии говорить про его программную реализацию! Разработать правильно и оптимально функционирующую программу полностью в соответствии с DES, наверно, под силу только опытным программистам. Некоторые трудности возникают при программной реализации, например, начальной перестановки или перестановки с расширением. Эти сложности связаны с тем, что первоначально планировалось реализовывать DES только аппаратно. Все используемые в стандарте операции легко выполняются аппаратными блоками, и никаких трудностей с реализацией не возникает. Однако через некоторое время после публикации стандарта разработчики программного обеспечения решили не стоять в стороне и тоже взяться за создание систем шифрования. В дальнейшем DES реализовывался и аппаратно, и программно. Расшифрование Как известно, криптографическая система должна позволять не только зашифровать, но и расшифровать сообщения. Можно было бы ожидать, что процесс расшифрования по DES сильно запутан. Однако разработчики так подобрали различные компоненты стандарта, чтобы для зашифрования и расшифрования использовался один и тот же алгоритм. При расшифровании на вход алгоритма подается зашифрованный текст. Единственное отличие состоит в обратном порядке использования частичных ключей Ki. K16 используется на первом раунде, K1 — на последнем раунде. После последнего раунда процесса расшифрования две половины выхода меняются местами так, чтобы вход заключительной перестановки был составлен из R16 и L16. Выходом этой стадии является незашифрованный текст. Двухкратный DES и атака "встреча посередине" В настоящее время основным недостатком DES считается маленькая длина ключа. Простейшим способом усложнения процесса криптоанализа является использование двухкратного шифрования с помощью одного и того же алгоритма с разными ключами. Если М – 85
Г.В. Басалова Основы криптографии сообщение, К1, К2 – ключ, f – процесс шифрования по DES, а Е – зашифрованное сообщение, то можно записать E=f(f(M,K1),K2), то есть сначала блок шифруется одним ключом, затем получившийся шифротекст шифруется вторым ключом. Расшифрование проводится в обратном порядке ( f -1 – расшифрование по DES ): E=f-1(f-1(E,K2),K1) В этом случае длина ключа равна 56 * 2 = 112 бит, поэтому для обнаружения двойного ключа, которым зашифрован блок, потребуется в общем случае 2112 попыток. Исследовав эту проблему, американские ученые Меркл и Хеллман придумали способ проведения атаки по открытому тексту, который требует проведения не 2112 попыток, а 257. (Меркл и Хеллман предложили эту схему против DES, но можно сделать обобщение на все блочные алгоритмы.) Этот вариант атаки называется атака "встреча посередине". Он основан на следующем свойстве алгоритма. Мы имеем E=f(f(M,K1),K2) где М – сообщение, К1, К2 – ключ, f – процесс шифрования по DES, а Е – зашифрованное сообщение. Тогда X=f(M,K1)=f-1(E,K2). Атака состоит в следующем. Требуется, чтобы атакующий знал несколько пар "незашифрованный текст - соответствующий ему зашифрованный текст" (M, E). В этом случае вначале шифруется M для всех возможных 256 значений K1. Этот результат запоминается в памяти ЭВМ. Запомненные данные упорядочиваются по значению Х. Следующий шаг состоит в дешифровании E, с применением всех возможных 256 значений K2. Для каждого выполненного дешифрования ищется равное 86
Г.В. Басалова Основы криптографии ему значение в первой таблице. Если такое значение найдено, то считается, что эти ключи могут быть правильными, и они проверяются для следующей известной пары "незашифрованный текст, зашифрованный текст". Максимальное количество попыток шифрования, которое, возможно, придется предпринять, равно 2*2n, или 2n+1 (где n – длина ключа в каждом из этапов шифрования; для DES n равно 56 ). Название "встреча посередине" дано атаке по той причине, что с одной стороны выполняется шифрование, с другой – расшифрование, и полученные посередине результаты сравниваются. Для проведения атаки "встреча посередине" нужен большой объем памяти: 2n блоков (где n – длина ключа). Для DES, в котором используется 56-битовый ключ потребуется 256 64-разрядных блоков памяти. Это составляет 262 байт или 222 Тбайт. Такой объем памяти достаточно трудно пока еще себе представить, кроме того, для проведения операций поиска в таком огромном массиве потребуется соответствующее время. Несмотря на это, двойное шифрование DES практически никогда не использовалась. Трехкратный DES В целях противодействия атаке "встреча посередине" было предложено использовать тройное шифрование с двумя ключами (рис. 4.3). Рис. 4.3. Шифрование тройным DES с двумя ключами В этом случае выполняется последовательность зашифрованиерасшифрование-зашифрование ( EDE – от англ. Encrypt – Decrypt -Encrypt ). Этот процесс можно символически представить следующим образом: 87
Г.В. Басалова E=f(f-1(f(M,K Основы криптографии 1),K 2),K 1) Отправитель сначала шифрует сообщение первым ключом, затем расшифрует вторым и, наконец, окончательно шифрует первым. Получатель сначала расшифровывает первым ключом, затем шифрует вторым и снова расшифровывает первым. При этом длина ключа увеличивается вдвое и составляет 112 бит. В качестве более надежной альтернативы предлагается метод трехкратного шифрования, использующий три разных ключа – на каждом из этапов свой. Общая длина ключа в таком методе возрастает ( 112+56=168 ), но хранение нескольких сотен бит обычно не является проблемой. Тройной DES является достаточно популярной альтернативой DES и используется при управлении ключами в стандартах ANSI X9.17 и ISO 8732. Некоторые криптоаналитики предлагают для еще более надежного шифрования использовать пятикратный DES с тремя или пятью ключами. Алгоритм Rijndael Алгоритм Rijndael (читается "Рейндал") разработан бельгийскими специалистами Joan Daemen (Proton World International) и Vincent Rijmen (Katholieke Universiteit Leuven). Этот шифр победил в проведенном Национальным институтом стандартов и техники (NIST) США конкурсе на звание AES (Advanced Encryption Standard) и в 2001 году был принят в качестве нового американского стандарта. Алгоритм Rijndael достаточно сложен для описания, поэтому рассмотрим только основные аспекты построения и особенности использования шифра. Шифр Rijndael/AES (то есть рекомендуемый стандартом) характеризуется размером блока 128 бит, длиной ключа 128, 192 или 256 бит и количеством раундов 10, 12 или 14 в зависимости от длины ключа. В принципе, структуру Rijndael можно приспособить к любым размерам блока и ключа, кратным 32, а также изменить число раундов. В отличие от шифров, предлагаемых DES и ГОСТ 28147-89, в основе Rijndael не лежит сеть Фейштеля. Основу Rijndael составляют так 88
Г.В. Басалова Основы криптографии называемые линейно-подстановочные преобразования. Блок данных, обрабатываемый с использованием Rijndael, делится на массивы байтов, и каждая операция шифрования является байт-ориентированной. Каждый раунд состоит из трех различных обратимых преобразований, называемых слоями. Эти слои следующие. 1. Нелинейный слой. На этом слое выполняется замена байтов. Слой реализован с помощью S-блоков, имеющих оптимальную нелинейность, и предотвращает возможность использования дифференциального, линейного и других современных методов криптоанализа. 2. Линейный перемешивающий слой гарантирует высокую степень взаимопроникновения символов блока для маскировки статистических связей. На этом слое в прямоугольном массиве байтов выполняется сдвиг строк массива и перестановка столбцов. 3. Слой сложения по модулю 2 с подключом выполняет непосредственно шифрование. Шифр начинается и заканчивается сложением с ключом. Это позволяет закрыть вход первого раунда при атаке по известному тексту и сделать криптографически значимым результат последнего раунда. В алгоритме широко используются табличные вычисления, причем все необходимые таблицы задаются константно, т.е. не зависят ни от ключа, ни от данных. Необходимо отметить, что в отличие от шифров, построенных по сети Фейштеля, в Rijndael функции шифрования и расшифрования различны. Алгоритм Rijndael хорошо выполняется как в программной, так и в аппаратной реализации. Rijndael имеет небольшие требования к памяти, что делает его пригодным для систем с ограниченными ресурсами. Надежность шифрования алгоритмом Rijndael очень высоко оценивается специалистами. Режимы работы блочных алгоритмов Блочные шифры могут использоваться для выполнения различных 89
Г.В. Басалова Основы криптографии задач. Поэтому для любого симметричного блочного алгоритма шифрования определено несколько режимов его применения. Каждый из режимов имеет свои особенности и сферы применения. Пусть имеется некоторый блочный шифр, который выполняет преобразование f исходного блока данных Х с помощью ключа К в зашифрованный блок Y: Y=f(X,K) Рассмотрим некоторые преобразования f. возможные режимы выполнения Простейшим режимом является режим простой поблочной замены. Специалистами этот режим называется ECB - Electronic CodeВook, что переводится как "электронная кодовая книга". В этом режиме каждый блок исходных данных шифруется независимо от остальных блоков, с применением одного и того же ключа шифрования. Если сообщение длиннее, чем длина блока соответствующего алгоритма, то оно разбивается на блоки Х1, Х2,..., Xn соответствующей длины, причем последний блок дополняется в случае необходимости фиксированными значениями. Каждый блок шифруется блочным шифром: Y=f(Xi,K) для всех i от 1 до n В результате шифрования всех блоков исходных данных Xi получается зашифрованное сообщение Y=Y1, Y2,..., Yn. Расшифрование выполняется по правилу X=f-1(Yi,K) для всех i от 1 до n Из определения режима ECB следует, что расшифрование сообщения можно производить, выбирая блоки шифротекста в произвольном порядке. Такой режим удобен во многих реальных ситуациях, в частности для обработки файлов с произвольным доступом. Например, в режиме ECB можно работать с зашифрованной базой данных при условии, что каждая запись представляет собой отдельный блок данных и зашифрована отдельно от остальных. 90
Г.В. Басалова Основы криптографии Недостатком данного режима является то, что одинаковые блоки исходного текста преобразуются в одинаковый шифротекст. В большинстве реальных шифруемых наборах данных есть повторяющиеся элементы. Сообщения могут иметь высокую избыточность, повторяющиеся заголовки и окончания или содержать длинные серии нулей или пробелов. Таким образом, противник может получить в свое распоряжение данные для частотного криптоанализа. Более серьезной проблемой рассматриваемого режима является то, что противник может изменить или подменить шифрованные сообщения с целью обмана получателя. В целом, режим ECB рекомендуется использовать для передачи одиночных коротких сообщений (например, криптографического ключа). Для устранения недостатков ECB при передаче нескольких блоков данных может использоваться режим CBC (Chipher Block Chaining) – режим сцепления блоков шифра. Преобразование в режиме CBC выполняется следующим образом: каждый блок открытого текста складывается по модулю 2 с результатом шифрования предыдущего блока. Таким образом, результаты шифрования предыдущих блоков влияют на шифрование следующих блоков. Математически операция шифрования в режиме CBC описывается следующей формулой: То есть перед шифрованием очередного блока над открытым текстом и результатом шифрования предыдущего блока выполняется операция "сумма по модулю 2". Когда блок открытого текста зашифрован, он сохраняется в памяти шифрующего устройства, например, в регистре обратной связи. Перед шифрованием следующего блока данных, он подвергается операции "сумма по модулю 2" вместе с регистром обратной связи и только после этого шифруется. Полученный зашифрованный блок снова сохраняется в регистре обратной связи и используется при шифровании следующего блока входных данных и так далее до конца сообщения. Блок Y0 должен быть сформирован перед шифрованием первого блока исходных данных. Он называется вектором инициализации и используется для сложения по модулю 2 с первым 91
Г.В. Басалова Основы криптографии блоком входных данных. В результате использования обратной связи шифрование каждого блока зависит от всех предыдущих блоков. Зашифрованное сообщение можно расшифровать следующим образом: Блок шифротекста сначала сохраняется в регистре обратной связи, а затем расшифровывается как обычно. Далее расшифровывается следующий блок и подвергается операции "сумма по модулю 2" с регистром обратной связи. И так выполняется до конца сообщения. Даже если все блоки исходных данных Xi идентичны, шифротекст будет состоять из различных блоков Y. Этот режим предпочтителен при шифровании сообщений, размер которых превышает размер блока. Однако два одинаковых сообщения будут шифроваться одинаково. Для того чтобы этого избежать, необходимо использовать разные векторы инициализации при каждом шифровании. Векторы инициализации необходимы также для расшифрования данных, поэтому их нужно или пересылать адресату вместе с зашифрованным сообщением, или договориться о каком-либо совместном формировании псевдослучайных векторов инициализации. Расшифровать сообщение, зашифрованное в режиме CBC, можно только последовательно, начиная с первого блока. Ключевые термины AES ( Advanced Encryption Standard ) – Алгоритм шифрования, действующий в качестве государственного стандарта в области шифрования данных в США с 2001 года. В основу стандарта положен шифр Rijndael. Шифр Rijndael/AES (то есть рекомендуемый стандартом) характеризуется размером блока 128 бит, длиной ключа 128, 192 или 256 бит и количеством раундов 10, 12 или 14 в зависимости от длины ключа. Основу Rijndael составляют так называемые линейноподстановочные преобразования. В алгоритме широко используются табличные вычисления, причем все необходимые таблицы задаются 92
Г.В. Басалова Основы криптографии константно, т.е. не зависят ни от ключа, ни от данных. DES ( Data Encryption Standard ) – Алгоритм шифрования, действовавший в качестве государственного стандарта в области шифрования данных в США с 1977 по 2001 годы. Основные параметры DES: размер блока 64 бита, длина ключа 56 бит, количество раундов – 16. DES является классической сетью Фейштеля с двумя ветвями. Алгоритм преобразует за несколько раундов 64-битный входной блок данных в 64-битный выходной блок. Стандарт DES построен на комбинированном использовании перестановки, замены и гаммирования. Комбинированный (композиционный) шифр – криптографические преобразование данных, получаемое в результате комбинации нескольких подряд примененных простых шифров. Режим ECB (Electronic CodeВook) – Один из режимов использования блочного алгоритма шифрования. Режим ECB (переводится как "электронная кодовая книга") – это режим простой поблочной замены. В этом режиме каждый блок исходных данных шифруется независимо от остальных блоков, с применением одного и того же ключа шифрования. Если сообщение длиннее, чем длина блока соответствующего алгоритма, то оно разбивается на блоки соответствующей длины, причем последний блок дополняется в случае необходимости фиксированными значениями. Режим ECB рекомендуется использовать для передачи одиночных коротких сообщений (например, криптографического ключа). Режим CBC (Chipher Block Chaining) – режим сцепления блоков шифра. Один из режимов использования блочного алгоритма шифрования. Преобразование в режиме CBC выполняется следующим образом: каждый блок открытого текста складывается по модулю 2 с результатом шифрования предыдущего блока. Таким образом, результаты шифрования предыдущих блоков влияют на шифрование следующих блоков. Краткие итоги Алгоритм DES (Data Encryption Standard) вступил в действие в США в 1977 году. DES является блочным алгоритмом симметричного 93
Г.В. Басалова Основы криптографии шифрования. Основные параметры DES: размер блока 64 бита, длина ключа 56 бит, количество раундов – 16. DES является классической сетью Фейштеля с двумя ветвями. Алгоритм преобразует за несколько раундов 64-битный входной блок данных в 64-битный выходной блок. Стандарт DES построен на комбинированном использовании перестановки, замены и гаммирования. Шифруемые данные должны быть представлены в двоичном виде. Одним из вариантов использования алгоритма DES является так называемый тройной DES: отправитель сначала шифрует сообщение первым ключом, затем расшифрует вторым и, наконец, окончательно шифрует первым. Получатель сначала расшифровывает первым ключом, затем шифрует вторым и снова расшифровывает первым. При этом длина ключа увеличивается вдвое и составляет 112 бит. В качестве альтернативы предлагается метод трехкратного шифрования, использующий три разных ключа – на каждом из этапов свой. Общая длина ключа в таком методе возрастает до 56x3=168 бит. С 2001 года в США действует новый стандарт на блочный шифр ( AES ). В основу стандарта положен шифр Rijndael. Шифр Rijndael/AES (то есть рекомендуемый стандартом) характеризуется размером блока 128 бит, длиной ключа 128, 192 или 256 бит и количеством раундов 10, 12 или 14 в зависимости от длины ключа. Блочные шифры могут работать в различных режимах. Каждый из режимов имеет свои особенности и сферы применения. Режим ECB (Electronic CodeВook) – Один из режимов использования блочного алгоритма шифрования. Режим ECB (переводится как "электронная кодовая книга") – это режим простой поблочной замены. В этом режиме каждый блок исходных данных шифруется независимо от остальных блоков, с применением одного и того же ключа шифрования. Недостатком данного режима является то, что одинаковые блоки исходного текста преобразуются в одинаковый шифротекст. Режим ECB рекомендуется использовать для передачи одиночных коротких сообщений (например, криптографического ключа). Режим CBC (Chipher Block Chaining) – режим сцепления блоков шифра. Один из режимов использования блочного алгоритма шифрования. Преобразование в режиме CBC выполняется следующим образом: 94
Г.В. Басалова Основы криптографии каждый блок открытого текста складывается по модулю 2 с результатом шифрования предыдущего блока. Таким образом, результаты шифрования предыдущих блоков влияют на шифрование следующих блоков. Даже если все блоки исходных данных идентичны, шифротекст будет состоять из различных блоков. Этот режим предпочтителен при шифровании сообщений, размер которых превышает размер блока. Расшифровать сообщение, зашифрованное в режиме CBC, можно только последовательно, начиная с первого блока. Набор для практики Вопросы для самопроверки 1. Какой шифр называют комбинированным или композиционным шифром? 2. Какие факторы влияют на стойкость блочного алгоритма шифрования? 3. Что представляет собой сеть Фейштеля? 4. Перечислите основные параметры алгоритмов симметричного шифрования DES, AES. 5. Какие операции используются в блочных алгоритмах шифрования DES, AES? 6. В чем заключается атака "встреча посередине"? 7. Каков принцип использования тройного DES? 8. Каким образом используется блочный алгоритм шифрования в режиме простой замены ( ECB )? 9. Каковы недостатки режима ECB? 10. Каковы особенности использования алгоритма шифрования в режиме сцепления блоков шифра ( CBC )? 11. Каковы недостатки режима CBС? Упражнения для самопроверки 1. Сложите по модулю 2: двоичные числа 10101100 и 11001010 ; десятичные числа 15 и 10 ; 95
Г.В. Басалова Основы криптографии шестнадцатеричные числа 0В5 и 37. Примечание: десятичные и шестнадцатеричные числа необходимо сначала перевести в двоичный вид. 2. Сложите по модулю 28: двоичные числа 10101100 и 11001010 ; десятичные числа 155 и 100 ; шестнадцатеричные числа 0В5 и 37. Примечание: десятичные числа необходимо сначала перевести в двоичный вид. 3. Выполните операцию циклического сдвига: влево на 5 разрядов для двоичного числа 10101100 ; вправо на 4 разряда для шестнадцатеричного числа 9E ; вправо на 2 разряда для шестнадцатеричного числа 55. Примечание: шестнадцатеричные числа необходимо сначала перевести в двоичный вид. 96
Г.В. Басалова Основы криптографии Алгоритм криптографического преобразования данных ГОСТ 28147-89 Эта лекция посвящена отечественному стандарту на блочный алгоритм шифрования. В лекции подробно рассматривается структура ГОСТ 28147-89, а также режимы шифрования данных с использованием алгоритма криптографического преобразования данных ГОСТ 28147-89. Цель лекции: изучение блочного алгоритма шифрования по ГОСТ 28147-89. Основные сведения В России в качестве стандарта на блочные алгоритмы шифрования с закрытым ключом в 1989 году был принят ГОСТ 28147-89. Он рекомендуется к использованию для криптографической защиты данных. Шифр, предлагаемый ГОСТ 28147-89 построен по тем же принципам, что и американский DES, однако по сравнению с DES отечественный стандарт шифрования более удобен для программной реализации. В отличие от американского DES в отечественном стандарте применяется более длинный ключ – 256 бит. Кроме того, российский стандарт предлагает использовать 32 раунда шифрования, тогда как DES – только 16. Таким образом, основные параметры алгоритма криптографического преобразования данных ГОСТ 28147-89 следующие: размер блока составляет 64 бита, размер ключа – 256 бит, количество раундов – 32. Алгоритм представляет собой классическую сеть Фейштеля. Шифруемый блок данных разбивается на две одинаковые части, правую R и левую L. Правая часть складывается с подключом раунда и посредством некоторого алгоритма шифрует левую часть. Перед следующим раундом левая и правая части меняются местами. Такая структура позволяет использовать один и тот же алгоритм как для шифрования, так и для дешифрования блока. В алгоритме шифрования используются следующие операции: 97
Г.В. Басалова Основы криптографии 232; сложение слов по модулю циклический сдвиг слова влево на указанное число бит; побитовое сложение по модулю 2; замена по таблице. На различных шагах алгоритмов ГОСТа данные, которыми они оперируют, интерпретируются и используются различным образом. В некоторых случаях элементы данных обрабатываются как массивы независимых битов, в других случаях – как целое число без знака, в третьих – как имеющий структуру сложный элемент, состоящий из нескольких более простых элементов. Структура раунда ГОСТ 28147-89 Структура одного раунда ГОСТ 28147-89 приведена на рис. 5.1. Шифруемый блок данных разбивается на две части, которые затем обрабатываются как отдельные 32-битовые целые числа без знака. Сначала правая половина блока и подключ раунда складываются по модулю 232. Затем производится поблочная подстановка. 32-битовое значение, полученное на предыдущем шаге (обозначим его S), интерпретируется как массив из восьми 4-битовых блоков кода: S= (S0,S1,S2,S3,S4,S5,S6,S7). Далее значение каждого из восьми блоков заменяется на новое, которое выбирается по таблице замен следующим образом: значение блока Si заменяется на Si-тый по порядку элемент (нумерация с нуля) i-го узла замен (т.е. i-той строки таблицы замен, нумерация также с нуля). Другими словами, в качестве замены для значения блока выбирается элемент c номером строки, равным номеру заменяемого блока, и номером столбца, равным значению заменяемого блока как 4-битового целого неотрицательного числа. В каждой строке таблицы замен записаны числа от 0 до 15 в произвольном порядке без повторений. Значения элементов таблицы замен взяты от 0 до 15, так как в четырех битах, которые подвергаются подстановке, может быть записано целое число без знака в диапазоне от 0 до 15. Например, первая строка S-блока может содержать такие значения: 5, 8, 1, 13, 10, 3, 4, 2, 14, 15, 12, 7, 6, 0, 9, 11. В этом случае значение блока S0 (четыре младших 98
Г.В. Басалова Основы криптографии бита 32-разрядного числа S) заменится на число, стоящее на позиции, номер которой равен значению заменяемого блока. Если S0 = 0, то оно заменится на 5, если S0= 1, то оно заменится на 8 и т.д. Рис. 5.1. Структура одного раунда ГОСТ 28147-89 После выполнения подстановки все 4-битовые блоки снова объединяются в единое 32-битное слово, которое затем циклически сдвигается на 11 битов влево. Наконец, с помощью побитовой операции "сумма по модулю 2" результат объединяется с левой половиной, вследствие чего получается новая правая половина Ri. 99
Г.В. Басалова Основы криптографии Новая левая часть Li берется равной младшей части преобразуемого блока: Li= Ri-1. Полученное значение преобразуемого блока рассматривается как результат выполнения одного раунда алгоритма шифрования. Процедуры шифрования и расшифрования ГОСТ 28147-89 является блочным шифром, поэтому преобразование данных осуществляется блоками в так называемых базовых циклах. Базовые циклы заключаются в многократном выполнении для блока данных основного раунда, рассмотренного нами ранее, с использованием разных элементов ключа и отличаются друг от друга порядком использования ключевых элементов. В каждом раунде используется один из восьми возможных 32-разрядных подключей. Рассмотрим процесс создания подключей раундов. В ГОСТ эта процедура очень проста, особенно по сравнению с DES. 256-битный ключ K разбивается на восемь 32-битных подключей, обозначаемых K 0, K1, K2,K3, K4, K5, K6, K7. Алгоритм включает 32 раунда, поэтому каждый подключ при шифровании используется в четырех раундах в последовательности, представленной на таблица 5.1. Таблица 5.1. Последовательность использования подключей при шифровании Раунд 1 2 3 4 5 6 7 8 Подключ K0 K1 K2 K3 K4 K5 K6 K7 Раунд 9 10 11 12 13 14 15 16 Подключ K0 K1 K2 K3 K4 K5 K6 K7 Раунд 17 18 19 20 21 22 23 24 Подключ K0 K1 K2 K3 K4 K5 K6 K7 Раунд 25 26 27 28 29 30 31 32 Подключ K7 K6 K5 K4 K3 K2 K1 K0 100
Г.В. Басалова Основы криптографии Процесс расшифрования производится по тому же алгоритму, что и шифрование. Единственное отличие заключается в порядке использования подключей Ki. При расшифровании подключи должны быть использованы в обратном порядке, а именно, как указано на таблица 5.2. Таблица 5.2. Последовательность использования подключей при расшифровании Раунд 1 2 3 4 5 6 7 8 Подключ K7 K6 K5 K4 K3 K2 K1 K0 Раунд 9 10 11 12 13 14 15 16 Подключ K7 K6 K5 K4 K3 K2 K1 K0 Раунд 17 18 19 20 21 22 23 24 Подключ K7 K6 K5 K4 K3 K2 K1 K0 Раунд 25 26 27 28 29 30 31 32 Подключ K7 K6 K5 K4 K3 K2 K1 K0 Основные режимы шифрования ГОСТ 28147-89 предусматривает следующие режимы шифрования данных: простая замена, гаммирование, гаммирование с обратной связью и один дополнительный режим выработки имитовставки. В любом из этих режимов данные обрабатываются блоками по 64 бита, на которые разбивается шифруемый массив, именно поэтому ГОСТ 28147-89 относится к блочным шифрам. В режимах гаммирования есть возможность обработки неполного блока данных размером меньше 8 байт, что существенно при шифровании массивов данных с произвольным размером, который может быть не кратным 8 байтам. Режим простой замены. Этот режим использования блочного шифра аналогичен рассмотренному в лекции 4 режиму простой поблочной замены (ECB). В этом режиме каждый блок исходных данных шифруется независимо от остальных блоков, с применением одного и того же 101
Г.В. Басалова Основы криптографии ключа шифрования. Особенностью этого режима является то, что одинаковые блоки исходного текста преобразуются в одинаковый шифротекст. Поэтому ГОСТ 28147-89 рекомендует использовать режим простой замены только для шифрования ключей. Режимы гаммирования и гаммирования с обратной связью могут использоваться для шифрования данных произвольного размера. В режиме гаммирования биты исходного текста складываются по модулю 2 с гаммой, которая вырабатывается с помощью алгоритма шифрования по ГОСТ 28147-89. То есть алгоритм шифрования по ГОСТ 28147-89 в данном режиме используется в качестве генераторов 64разрядных блоков гаммы. При шифровании каждого нового блока данных гамма, использованная на предыдущем шаге, зашифровывается и используется уже как "новая" гамма. В качестве начального массива данных, шифруемых для получения самой первой гаммы, используется так называемая синхропосылка – 64-разрядный начальный блок данных, который должен быть одинаковым на шифрующей и расшифровывающей стороне. Благодаря тому, что наложение и снятие гаммы осуществляется при помощи одной и той же операции сложения по модулю 2, алгоритмы зашифрования и расшифрования в режиме гаммирования совпадают. Так как все элементы гаммы различны для реальных шифруемых массивов, то результат зашифрования даже двух одинаковых блоков в одном массиве данных будет различным. Кроме того, хотя элементы гаммы и вырабатываются одинаковыми порциями в 64 бита, использоваться может и часть такого блока с размером, равным размеру шифруемого блока. Именно это дает возможность шифрования неполных блоков данных. Режим гаммирования с обратной связью похож на режим гаммирования и отличается от него только способом выработки элементов гаммы. При гаммировании с обратной связью очередной 64-битный элемент гаммы вырабатывается как результат преобразования по базовому циклу алгоритма ГОСТ 28147-89 предыдущего блока зашифрованных данных. Для зашифрования первого блока массива данных элемент гаммы вырабатывается как результат преобразования по тому же циклу синхропосылки. Этим достигается зацепление блоков – каждый блок 102
Г.В. Басалова Основы криптографии шифротекста в этом режиме зависит от соответствующего и всех предыдущих блоков открытого текста. Поэтому данный режим иногда называется гаммированием с зацеплением блоков. На стойкость шифра факт зацепления блоков не оказывает никакого влияния. Для решения задачи обнаружения искажений в зашифрованном массиве данных в ГОСТе 28147-89 предусмотрен дополнительный режим криптографического преобразования – выработка имитовставки. Имитовставка – это контрольная комбинация, зависящая от открытых данных и секретной ключевой информации. Целью использования имитовставки является обнаружение всех случайных или преднамеренных изменений в массиве информации. В режиме выработки имитовставки входной текст обрабатывается блоками следующим образом: где f – базовый цикл по ГОСТ 28147-89; Xi – 64-разрядный блок исходного текста; K – ключ. В качестве имитовставки берется часть блока Yn, полученного на выходе, обычно 32 его младших бита. Таким образом, злоумышленник, не владея ключом шифрования, не может вычислить имитовставку для заданного открытого массива информации, а также подобрать открытые данные под заданную имитовставку. Отличия алгоритмов шифрования по ГОСТ 28147-89 и DES Несмотря на то, что алгоритм, изложенный в ГОСТ 28147-89, проектировался достаточно давно, в него заложен достаточный запас по надежности. Это связано, прежде всего, с большой длиной ключа шифрования. Как известно, придерживаются разработчики принципа, что 103 современных секретность криптосистем зашифрованных
Г.В. Басалова Основы криптографии сообщений должна определяться секретностью ключа. Это значит, что даже если сам алгоритм шифрования известен криптоаналитику, тот, тем не менее, не должен иметь возможности расшифровать сообщение, если не располагает соответствующим ключом. Все классические блочные шифры, в том числе DES и ГОСТ 28147-89, соответствуют этому принципу и спроектированы таким образом, чтобы не было пути вскрыть их более эффективным способом, чем полным перебором по всему ключевому пространству, т.е. по всем возможным значениям ключа. Ясно, что стойкость таких шифров определяется размером используемого в них ключа. В шифре, реализуемом в ГОСТ 28147-89, используется 256-битовый ключ, и объем ключевого пространства составляет 2256. Даже если, как и в "Алгоритмы шифрования DES и AES", предположить, что на взлом шифра брошены все силы вычислительного комплекса с возможностью перебора 1012 (это примерно равно 240) ключей в одну секунду, то на полный перебор всех 2256 ключей потребуется 2216 секунд (это время составляет более миллиарда лет). К уже отмеченным отличиям между алгоритмами DES и ГОСТ 28147 можно добавить также следующее. В основном раунде DES применяются нерегулярные перестановки исходного сообщения, в ГОСТ 28147 используется 11-битный циклический сдвиг влево. Последняя операция гораздо удобнее для программной реализации. Однако перестановка DES увеличивает лавинный эффект. В ГОСТ 28147 изменение одного входного бита влияет на один 4-битовый блок при замене в одном раунде, который затем влияет на два 4-битовых блока следующего раунда, три блока следующего и т.д. В ГОСТ 28147 требуется 8 раундов прежде, чем изменение одного входного бита повлияет на каждый бит результата; DES для этого нужно только 5 раундов. Также следует отметить, что в отличие от DES, у ГОСТ 28147-89 таблицу замен для выполнения операции подстановки можно произвольно изменять, то есть таблица замен является дополнительным 512-битовым ключом. Ключевые термины 104
Г.В. Басалова Основы криптографии ГОСТ 28147-89 – российский стандарт на блочный алгоритм симметричного шифрования. Краткие итоги В России принят ГОСТ 28147-89, рекомендуемый к использованию для криптографической защиты данных. ГОСТ 28147-89 является блочным шифром с закрытым ключом. Основные параметры алгоритма ГОСТ 28147-89 следующие: размер блока – 64 бита, размер ключа – 256 бит, количество раундов – 32. Алгоритм представляет собой классическую сеть Фейштеля. Рекомендованные режимы использования: простая замена, гаммирование, гаммирование с обратной связью и режим выработки имитовставки. Набор для практики Вопросы для самопроверки 1. Для каких целей может использоваться алгоритм криптографического преобразования данных по ГОСТ 28147-89? 2. Перечислите основные параметры алгоритма симметричного шифрования по ГОСТ 28147-89. 3. Какие операции используются в блочном алгоритме шифрования по ГОСТ 28147-89? 4. Каковы основные отличия алгоритма шифрования по ГОСТ 28147-89 от алгоритма DES? 5. Какая информация, помимо секретного ключа, при условии использования стандартных алгоритмов ГОСТ 28147-89 необходима для расшифровки сообщения? 6. В каких режимах может производиться шифрование данных с помощью алгоритма криптографического преобразования по ГОСТ 28147-89? 7. Что такое имитовставка? Для каких целей может быть использована имитовставка? 105
Г.В. Басалова Основы криптографии Упражнения для самопроверки 1. Пусть каждые три бита входного сообщения заменяются по следующей таблице замен: Вход Выход 000 011 001 101 010 000 011 111 100 010 101 110 110 001 111 100 Выполните разбиение исходного сообщения на блоки по три бита и произведите поблочную замену для следующих сообщений, представленных в цифровом виде: 1010 1100 1100(2); 2356(10); 0В57(16). Примечание: десятичные и шестнадцатеричные числа необходимо сначала перевести в двоичный вид. 2. Известно, что противник использует следующий блочный код: при шифровании каждые четыре бита входного сообщения заменяются другими четырьмя битами по определенной таблице замен. Удалось перехватить одну пару сообщений "исходный текст" - "зашифрованный текст". Определите таблицу замен, используемую противником. Все сообщения представлены в шестнадцатеричном формате. Исходное сообщение: 5A 43 63 19 1E D0 C7 4B F0 8A Зашифрованное сообщение: 92 37 A7 C0 CE 6B F1 35 8B D2 3. После вскрытия блочного шифра, описанного в задании 5, 106
Г.В. Басалова Основы криптографии коварный противник решил усложнить используемую схему шифрования следующим образом: при шифровании сообщение разбивается на блоки по восемь бит; первые четыре бита входного сообщения заменяются другими четырьмя битами по одной таблице замен, а вторые четыре бита – по другой таблице замен. Удалось перехватить две пары сообщений "исходный текст" "зашифрованный текст". Определите таблицы замен, используемые противником. Все сообщения представлены в шестнадцатеричном формате. Исходное сообщение 1: 5A 4D 6B 19 1E 3F 7C 47 F8 Зашифрованное сообщение 1: 98 35 AC C1 CE 79 12 34 8D Исходное сообщение 2: A3 D0 84 F1 96 C8 E5 77 2B Зашифрованное сообщение 2: 2B 66 D0 8A 0F FD E7 14 4C 107
Г.В. Басалова Основы криптографии Криптографические хеш-функции В этой лекции сформулировано понятие хеш-функции, а также приведен краткий обзор алгоритмов формирования хеш-функций. Кроме того, рассмотрена возможность использования блочных алгоритмов шифрования для формирования хеш-функции. Цель лекции: познакомиться с понятием "хеш-функция", а также с принципами работы таких функций. Понятие хеш-функции Хеш-функцией (hash function) называется математическая или иная функция, которая для строки произвольной длины вычисляет некоторое целое значение или некоторую другую строку фиксированной длины. Математически это можно записать так: h=H(M), где М – исходное сообщение, называемое иногда прообразом, а h – результат, называемый значением хеш-функции (а также хеш-кодом или дайджестом сообщения (от англ. message digest )). Смысл хеш-функции состоит в определении характерного признака прообраза – значения хеш-функции. Это значение обычно имеет определенный фиксированный размер, например, 64 или 128 бит. Хешкод может быть в дальнейшем проанализирован для решения какойлибо задачи. Так, например, хеширование может применяться для сравнения данных: если у двух массивов данных хеш-коды разные, массивы гарантированно различаются; если одинаковые — массивы, скорее всего, одинаковы. В общем случае однозначного соответствия между исходными данными и хеш-кодом нет из-за того, что количество значений хеш-функций всегда меньше, чем вариантов входных данных. Следовательно, существует множество входных сообщений, дающих одинаковые хеш-коды (такие ситуации называются коллизиями ). Вероятность возникновения коллизий играет немаловажную роль в оценке качества хеш-функций. Хеш-функции широко применяются в современной криптографии. 108
Г.В. Басалова Основы криптографии Простейшая хеш-функция может быть составлена с использованием операции "сумма по модулю 2" следующим образом: получаем входную строку, складываем все байты по модулю 2 и байт-результат возвращаем в качестве значения хеш-фукнции. Длина значения хеш-функции составит в этом случае 8 бит независимо от размера входного сообщения. Например, пусть исходное сообщение, переведенное в цифровой вид, было следующим (в шестнадцатеричном формате): 3E 54 A0 1F B4 Переведем сообщение в двоичный вид, запишем байты друг под другом и сложим биты в каждом столбике по модулю 2: 0011 1110 0101 0100 1010 0000 0001 1111 1011 0100 ---------0110 0101 Результат ( 0110 0101(2) или 65(16) ) и будет значением хешфункции. Однако такую хеш-функцию нельзя использовать для криптографических целей, например для формирования электронной подписи, так как достаточно легко изменить содержание подписанного сообщения, не меняя значения контрольной суммы. Поэтому рассмотренная хеш-функция не годится для криптографических применений. В криптографии хеш-функция считается хорошей, если трудно создать два прообраза с одинаковым значением хеш-функции, а также, если у выхода функции нет явной зависимости от входа. Сформулируем основные требования, криптографическим хеш-функциям: предъявляемые к хеш-функция должна быть применима к сообщению любого 109
Г.В. Басалова Основы криптографии размера; вычисление значения функции должно выполняться достаточно быстро; при известном значении хеш-функции должно быть трудно (практически невозможно) найти подходящий прообраз М ; при известном сообщении М должно быть трудно найти другое сообщение М’ с таким же значением хеш-функции, как у исходного сообщения; должно быть трудно найти какую-либо пару случайных различных сообщений с одинаковым значением хеш-функции. Создать хеш-функцию, которая удовлетворяет всем перечисленным требованиям – задача непростая. Необходимо также помнить, что на вход функции поступают данные произвольного размера, а хешрезультат не должен получаться одинаковым для данных разного размера. В настоящее время на практике в качестве хеш-функций применяются функции, обрабатывающие входное сообщение блок за блоком и вычисляющие хеш-значение hi для каждого блока Mi входного сообщения по зависимостям вида hi=H(Mi,hi-1), где hi-1 – результат, полученный при вычислении хеш-функции для предыдущего блока входных данных. В результате выход хеш-функции hn является функцией от всех n блоков входного сообщения. Использование блочных алгоритмов шифрования для формирования хеш-функции В качестве хеш-функции можно использовать блочный алгоритм симметричного шифрования. Если используемый блочный алгоритм криптографически стоек, то и хеш-функция на его основе будет надежной. 110
Г.В. Басалова Основы криптографии Простейшим способом использования блочного алгоритма для получения хеш-кода является шифрование сообщения в режиме CBC. В этом случае сообщение представляется в виде последовательности блоков, длина которых равна длине блока алгоритма шифрования. При необходимости последний блок дополняется справа нулями, чтобы получился блок нужной длины. Хеш-значением будет последний зашифрованный блок текста. При условии использования надежного блочного алгоритма шифрования полученное хеш-значение будет обладать следующими свойствами: практически невозможно без знания ключа шифрования вычисление хеш-значения для заданного открытого массива информации; практически невозможен без знания ключа шифрования подбор открытых данных под заданное значение хеш-функции. Сформированное таким образом хеш-значение обычно называют имитовставкой или аутентификатором и используется для проверки целостности сообщения. Таким образом, имитовставка – это контрольная комбинация, зависящая от открытых данных и секретной ключевой информации. Целью использования имитовставки является обнаружение всех случайных или преднамеренных изменений в массиве информации. Значение, полученное хеш-функцией при обработке входного сообщения, присоединяется к сообщению в тот момент, когда известно, что сообщение корректно. Получатель проверяет целостность сообщения путем вычисления имитовставки полученного сообщения и сравнения его с полученным хеш-кодом, который должен быть передан безопасным способом. Одним из таких безопасных способов может быть шифрование имитовставки закрытым ключом отправителя, т.е. создание подписи. Возможно также шифрование полученного хеш-кода алгоритмом симметричного шифрования, если отправитель и получатель имеют общий ключ симметричного шифрования. Указанный процесс получения и использования имитовставки описан в отечественном стандарте ГОСТ 28147-89. Стандарт предлагает использовать младшие 32 бита блока, полученного на выходе операции шифрования всего сообщения в режиме сцепления блоков шифра для контроля целостности передаваемого сообщения. Таким же образом для 111
Г.В. Басалова Основы криптографии формирования имитовставки можно использовать любой блочный алгоритм симметричного шифрования. Другим возможным способом применения блочного шифра для выработки хеш-кода является следующий. Исходное сообщение обрабатывается последовательно блоками. Последний блок при необходимости дополняется нулями, иногда в последний блок приписывают длину сообщения в виде двоичного числа. На каждом этапе шифруем хеш-значение, полученное на предыдущем этапе, взяв в качестве ключа текущий блок сообщения. Последнее полученное зашифрованное значение будет окончательным хеш-результатом. Таким образом, если обычную схему шифрования сообщения М с помощью блочного шифра f на ключе К мы записывали как E=f(M,K), то схему получения хеш-кода h по описанному выше алгоритму можно представить как hi=f(hi-1,M) В качестве начального хеш-кода h0 берут некоторую константу. Шифрование производится в режиме простой замены. При использовании указанного способа размер блока совпадает с длиной ключа и размером хеш-значения будет длина блока. Возможен также другой способ использования блочного шифра в режиме простой замены: элементы сообщения шифруются хешзначениями, полученными на предыдущем этапе: hi=f(M,hi-1) На самом деле возможны еще несколько схем использования блочного шифра для формирования хеш-функции. Пусть Мi – блок исходного сообщения, hi – значение хеш-функции на i-том этапе, f – блочный алгоритм шифрования, используемый в режиме простой замены, – операция сложения по модулю 2. Тогда возможны, например, следующие схемы формирования хеш-функции: 112
Г.В. Басалова Основы криптографии Во всех этих схемах длина формируемого хеш-значения равна длине блока при шифровании. Все эти, а также некоторые другие схемы использования блочного алгоритма шифрования для вычисления хешзначений могут применяться на практике. Основным недостатком хеш-функций, спроектированных на основе блочных алгоритмов, является относительно низкая скорость работы. Необходимую криптостойкость можно обеспечить и за меньшее количество операций над входными данными. Существуют более быстрые алгоритмы хеширования, спроектированных самостоятельно, с нуля, исходя из требований криптостойкости (наиболее распространенные из них – MD5, SHA-1, SHA-2 и ГОСТ Р 34.11-94). Обзор алгоритмов формирования хеш-функций В настоящее время предложены и практически используются различные специальные алгоритмы для вычисления хеш-функции. Наиболее известными алгоритмами являются MD5, SHA-1, SHA-2 и другие версии SHA, а также отечественный алгоритм, изложенный в ГОСТ Р 34.11-94. Алгоритм MD5 появился в начале 90-х годов ХХ века в результате усовершенствования алгоритма формирования хеш-функции MD4. Символы в названии "MD" означают Message Digest – краткое изложение сообщения. Автор алгоритмов MD4 и MD5 – Р. Ривест (R.Rivest). В результате использования MD5 для произвольного сообщения формируется 128-битное хеш-значение. Входные данные обрабатываются блоками по 512 бит. В алгоритме используются элементарные логические операции (инверсия, конъюнкция, сложение по модулю 2, циклические сдвиги и др.), а также обыкновенное арифметическое сложение. Комплексное повторение этих элементарных функций алгоритма обеспечивает то, что результат после обработки хорошо перемешан. Поэтому маловероятно, чтобы два 113
Г.В. Басалова Основы криптографии сообщения, выбранные случайно, имели одинаковый хеш-код. Алгоритм MD5 имеет следующее свойство: каждый бит полученного хешзначения является функцией от каждого бита входа. Считается, что MD5 является наиболее сильной хеш-функцией для 128-битного хешзначения. Алгоритм SHA (Secure Hash Algorithm – Безопасный хеш-алгоритм) был разработан национальным институтом стандартов и технологии (NIST) США и опубликован в качестве американского федерального информационного стандарта в 1993 году. SHA-1, как и MD5, основан на алгоритме MD4. SHA-1 формирует 160-битное хеш-значение на основе обработки исходного сообщения блоками по 512 бит. В алгоритме SHA1 также используются простые логические и арифметические операции. Наиболее важным отличием SHA-1 от MD5 является то, что хеш-код SHA-1 на 32 бита длиннее, чем хеш-код MD5. Если предположить, что оба алгоритма одинаковы по сложности для криптоанализа, то SHA-1 является более стойким алгоритмом. Используя атаку методом грубой силы (лобовую атаку), труднее создать произвольное сообщение, имеющее данный хеш-код, а также труднее создать два сообщения, имеющие одинаковый хеш-код. В 2001 году национальный институт стандартов и технологии США принял в качестве стандарта три хеш-функции с большей длиной хешкода, чем у SHA-1. Часто эти хеш-функции называют SHA-2 или SHA256, SHA-384 и SHA-512 (в названии указывается длина создаваемого алгоритмами хеш-кода). Эти алгоритмы отличаются не только длиной создаваемого хеш-кода, но и используемыми внутренними функциями и длиной обрабатываемого блока (у SHA-256 длина блока – 512, а у SHA384 и SHA-512 длина блока – 1024 бита). Постепенные усовершенствования алгоритма SHA ведут к увеличению его криптостойкости. Несмотря на отличия рассматриваемых алгоритмов друг от друга, все они являются дальнейшим развитием SHA-1 и MD4 и имеют похожую структуру. В России принят ГОСТ Р34.11-94, который является отечественным стандартом для хеш-функций. Его структура довольно сильно отличается от структуры алгоритмов SHA-1,2 или MD5, в основе которых лежит алгоритм MD4. Длина хеш-кода, создаваемого алгоритмом ГОСТ Р 34.11-94, равна 256 битам. Алгоритм 114
Г.В. Басалова Основы криптографии последовательно обрабатывает исходное сообщение блоками по 256 бит справа налево. Параметром алгоритма является стартовый вектор хеширования – произвольное фиксированное значение длиной также 256 бит. В алгоритме ГОСТ Р 34.11-94 используются операции перестановки, сдвига, арифметического сложения, сложения по модулю 2. В качестве вспомогательной функции в ГОСТ 34.11-94 используется алгоритм по ГОСТ 28147-89 в режиме простой замены. Ключевые термины Нash function – хеш-функция. ГОСТ Р34.11-94 – российский стандарт на функцию хеширования. Хеш-функция – математическая или иная функция, которая для строки произвольной длины вычисляет некоторое целое значение или некоторую другую строку фиксированной длины. Хеш-код – результат работы хеш-функции, некоторый характерный "признак" входного массива данных. Краткие итоги Хеш-функция – математическая или иная функция, которая для строки произвольной длины (прообраза) вычисляет некоторое целое значение или некоторую другую строку фиксированной длины. Смысл хешфункции состоит в определении характерного признака прообраза – значения хеш-функции. Это значение обычно имеет определенный фиксированный размер. Хеш-код может быть в дальнейшем проанализирован для решения какой-либо задачи. Хеш-функции широко применяются в современной криптографии. В криптографии хеш-функция считается хорошей, если трудно создать два прообраза с одинаковым значением хеш-функции, а также, если у выхода функции нет явной зависимости от входа. В качестве хеш-функции можно использовать блочный алгоритм симметричного шифрования в определенных режимах. Кроме того, в настоящее время предложены и практически используются различные 115
Г.В. Басалова Основы криптографии специальные алгоритмы для вычисления хеш-функции. Наиболее известными алгоритмами являются MD5, SHA-1, SHA-2 и другие версии SHA, а также отечественный алгоритм, изложенный в ГОСТ Р 34.11-94. Набор для практики Вопросы для самопроверки 1. Что в криптографии называется хеш-функцией? 2. Для каких целей используются хеш-функции? 3. Перечислите основные требования, предъявляемые к хешфункциям. 4. Назовите примеры криптографических хеш-функций. 5. Каков российский стандарт на алгоритм формирования криптографической хеш-функции? 6. Каким образом можно использовать блочный алгоритм шифрования для формирования хеш-функции? Упражнения для самопроверки Пусть хеш-функция y=h(x1x2…xn) определяется как результат выполнения побитовой операции "сумма по модулю 2" для всех байтов сообщения, представленного в двоичном виде. Длина хеш-кода равна 8 битам. Для каждого из шести сообщений, записанных в левом столбце, найдите соответствующий результат вычисления хеш-функции из правого столбца. Все сообщения и значения хеш-функции представлены в шестнадцатеричном формате. Сообщения 0A3 69 2C 82 0F B5 0DA 14 90 32 01 BF Значения хеш-функции 38 1B 0F9 8C 116
Г.В. Басалова 9E A6 23 10 ВE 57 Основы криптографии 0E6 5E 117
Г.В. Басалова Основы криптографии Поточные шифры и генераторы псевдослучайных чисел. Часть 1 Из этой лекции можно узнать, каким образом производится шифрование при передаче данных в режиме реального времени. Сформулированы принципы использования генераторов псевдослучайных ключей при потоковом шифровании. Рассматриваются некоторые простейшие генераторы псевдослучайных чисел: линейный конгруэнтный, генератор по методу Фибоначчи с запаздыванием, генератор псевдослучайных чисел на основе алгоритма BBS. Описание каждого из алгоритмов сопровождается примером, в котором поясняются особенности использования того или иного метода генерации псевдослучайных чисел. Цель лекции: познакомиться с понятием "поточный шифр", а также с принципами использования генераторов псевдослучайных ключей при потоковом шифровании Поточные шифры Блочный алгоритм предназначен для шифрования блоков определенной длины. Однако может возникнуть необходимость шифрования данных не блоками, а, например, по символам. Поточный шифр (stream cipher) выполняет преобразование входного сообщения по одному биту (или байту) за операцию. Поточный алгоритм шифрования устраняет необходимость разбивать сообщение на целое число блоков достаточно большой длины, следовательно, он может работать в реальном времени. Таким образом, если передается поток символов, каждый символ может шифроваться и передаваться сразу. Работа типичного поточного шифра представлена на рис. 7.1. 118
Г.В. Басалова Основы криптографии Рис. 7.1. Принцип работы поточного шифра Генератор ключей выдает поток битов k i, которые будут использоваться в качестве гаммы. Источник сообщений генерирует биты открытого текста хi, которые складываются по модулю 2 с гаммой, в результате чего получаются биты зашифрованного сообщения у i: Чтобы из шифротекста y1, y2,..., yn восстановить сообщение x1, x2,..., xn, необходимо сгенерировать точно такую же ключевую последовательность k1, yk,..., kn, что и при шифровании, и использовать для расшифрования формулу Обычно исходное сообщение и ключевая последовательность представляют собой независимые потоки бит. Таким образом, так как шифрующее (и расшифрующее) преобразование для всех поточных шифров одно и то же, они должны различаться только способом построения генераторов ключей. Получается, что безопасность системы полностью зависит от свойств генератора потока ключей. Если генератор потока ключей выдает последовательность, состоящую только из одних нулей (или из одних единиц), то зашифрованное сообщение будет в точности таким же, как и исходный поток битов (в случае единичных ключей зашифрованное сообщение будет инверсией исходного). Если в качестве гаммы используется один символ, представленный, например, восемью битами, то хотя зашифрованное 119
Г.В. Басалова Основы криптографии сообщение и будет внешне отличаться от исходного, безопасность системы будет очень низкой. В этом случае при многократном повторении кода ключа по всей длине текста существует опасность его раскрытия статистическим методом. Поясним это на простом примере цифрового текста, закрытого коротким цифровым кодом ключа методом гаммирования. Пример. Пусть известно, что исходное сообщение представляло собой двоично-десятичное число, то есть число, каждая тетрада (четыре бита) которого получена при переводе десятичной цифры 0...9 в двоичный вид. Перехвачено 24 бита зашифрованного сообщения Y, то есть шесть тетрад Y1, Y2, Y3, Y4, Y5, Y6, а именно значение 1100 1101 1110 1111 0000 0001. Известно, что ключ шифрования состоял из четырех бит, которые тоже представляют собой однозначное десятичное число, то есть одно и то же значение 0≤K≤9 использовалось для шифрования каждых четырех бит исходного сообщения. Таким образом, шифрование числа X1, X2, X3, X4, X5, X6 ключом К можно представить в виде системы уравнений: Исходя из условия, что Хi принимает десятичные значения от 0 до 9, для поиска неизвестного К определим все возможные значения X1’; и К, сумма которых по модулю 2 приводит к результату 1100: K = 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 Y1 = 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 --------------------X1’ = 1100 1101 1110 1111 1000 1001 10101 1011 0100 0101 Так как исходное значение состояло из цифр от 0 до 9, то можно исключить из рассмотрения значения ключа 0000, 0001, 0010, 0011, 0110, 0111, так при сложении с ними получаются значения большие 9 в десятичном эквиваленте. Такие значения не могли присутствовать в открытом тексте. Таким образом, первый этап анализа уже позволил сократить количество возможных ключей с десяти до четырех. 120
Г.В. Басалова Основы криптографии Для дальнейшего поиска неизвестного К определим все возможные значения X2’; и оставшихся вариантов ключа, сумма которых по модулю 2 приводит к результату Y 2 = 1101: K = 0100 0101 1000 1001 Y2 = 1101 1101 1101 1101 --------------------X2’ = 1001 1000 0101 0100 Видно, что этот этап не позволил отбросить ни одного из оставшихся вариантов ключа. Попытаемся это сделать, используя Y 3=1110: K = 0100 0101 1000 1001 Y3 = 1110 1110 1110 1110 --------------------X2’ = 1010 1011 0110 0111 После проведения этого этапа становится ясно, что ключом не могли быть значения 0100 и 0101. Остается два возможных значения ключа: 1000(2)=8(10) и 1001(2)=9(10). Дальнейший анализ по данной методике в данном случае, к сожалению, не позволит однозначно указать, какой же из двух полученных вариантов ключа использовался при шифровании. Однако можно считать успехом уже то, что пространство возможных ключей снизилось с десяти до двух. Остается попробовать каждый из двух найденных ключей для дешифровки сообщений и проанализировать смысл полученных вскрытых текстов. В реальных случаях, когда исходное сообщение составлено не только из одних цифр, но и из других символов, использование статистического анализа позволяет быстро и точно восстановить ключ и исходные сообщения при короткой длине ключа, закрывающего поток секретных данных. Принципы использования генераторов псевдослучайных чисел при потоковом шифровании 121
Г.В. Басалова Основы криптографии Современная информатика широко использует псевдослучайные числа в самых разных приложениях — от методов математической статистики и имитационного моделирования до криптографии. При этом от качества используемых генераторов псевдослучайных чисел (ГПСЧ) напрямую зависит качество получаемых результатов. ГПСЧ могут использоваться в качестве генераторов ключей в поточных шифрах. Целью использования генераторов псевдослучайных чисел является получение "бесконечного" ключевого слова, располагая относительно малой длиной самого ключа. Генератор псевдослучайных чисел создает последовательность битов, похожую на случайную. На самом деле, конечно же, такие последовательности вычисляются по определенным правилам и не являются случайными, поэтому они могут быть абсолютно точно воспроизведены как на передающей, так и на принимающей стороне. Последовательность ключевых символов, использующаяся при шифровании, должна быть не только достаточно длинной. Если генератор ключей при каждом включении создает одну и ту же последовательность битов, то взломать такую систему также будет возможно. Следовательно, выход генератора потока ключей должен быть функцией ключа. В этом случае расшифровать и прочитать сообщения можно будет только с использованием того же ключа, который использовался при шифровании. Для использования в криптографических целях генератор псевдослучайных чисел должен обладать следующими свойствами: 1. период последовательности должен быть очень большой; 2. порождаемая последовательность должна быть "почти" неотличима от действительно случайной; 3. вероятности порождения различных значений должны быть в точности равны; 4. для того, чтобы только законный получатель мог расшифровать сообщение, следует при получении потока ключевых битов ki использовать и учитывать некоторый секретный ключ, причем вычисление числа ki+1 по известным предыдущим элементам последовательности ki без знания ключа должно быть трудной задачей. 122
Г.В. Басалова Основы криптографии При наличии указанных свойств последовательности псевдослучайных чисел могут быть использованы в поточных шифрах. Линейный конгруэнтный генератор псевдослучайных чисел Генераторы псевдослучайных чисел могут работать по разным алгоритмам. Одним из простейших генераторов является так называемый линейный конгруэнтный генератор, который для вычисления очередного числа k i использует формулу ki=(a*ki-1+b)mod c, где а, b, с — некоторые константы, a ki-1 — предыдущее псевдослучайное число. Для получения k1 задается начальное значение k0. Возьмем в качестве примера a=5,b=3,c=11 и пусть k0= 1. В этом случае мы сможем по приведенной выше формуле получать значения от 0 до 10 (так как с = 11). Вычислим несколько элементов последовательности: k1 = (5 * 1 + 3) mod 11 = 8; k2 = (5 * 8 + 3) mod 11 = 10; k3 = (5 * 10 + 3) mod 11 = 9; k4 = (5 * 9 + 3) mod 11 = 4; k5 = (5 * 4 + 3) mod 11 = 1. Полученные значения (8, 10, 9, 4, 1) выглядят похожими на случайные числа. Однако следующее значение k 6 будет снова равно 8: k6 = (5 * 1 + 3) mod 11 = 8, а значения k7 и k8 будут равны 10 и 9 соответственно: k7 = (5 * 8 + 3) mod 11 = 10; k8= (5 * 10 + 3) mod 11 = 9. 123
Г.В. Басалова Основы криптографии Выходит, наш генератор псевдослучайных чисел повторяется, порождая периодически числа 8, 10, 9, 4, 1. К сожалению, это свойство характерно для всех линейных конгруэнтных генераторов. Изменяя значения основных параметров a, b и c, можно влиять на длину периода и на сами порождаемые значения ki. Так, например, увеличение числа с в общем случае ведет к увеличению периода. Если параметры a, b и c выбраны правильно, то генератор будет порождать случайные числа с максимальным периодом, равным c. При программной реализации значение с обычно устанавливается равным 2b-1 или 2b, где b — длина слова ЭВМ в битах. Достоинством линейных конгруэнтных генераторов псевдослучайных чисел является их простота и высокая скорость получения псевдослучайных значений. Линейные конгруэнтные генераторы находят применение при решении задач моделирования и математической статистики, однако в криптографических целях их нельзя рекомендовать к использованию, так как специалисты по криптоанализу научились восстанавливать всю последовательность ПСЧ по нескольким значениям. Например, предположим, что противник может определить значения k 0, k1, k2, k3. Тогда: k1=(a*k0+b) mod c k2=(a*k1+b) mod c k3=(a*k2+b) mod c Решив систему из этих трех уравнений, можно найти a, b и c. Для получения псевдослучайных чисел предлагалось использовать также квадратичные и кубические генераторы: ki=(a12*ki-1+a2*ki-1+b) mod c ki=(a13*ki-1+a22*ki-1+a3*ki-1+b) mod c Однако такие генераторы тоже оказались непригодными для целей криптографии по той же самой причине "предсказуемости". Метод Фибоначчи с запаздыванием 124
Г.В. Басалова Основы криптографии Известны и другие схемы получения псевдослучайных чисел. Метод Фибоначчи с запаздываниями (Lagged Fibonacci Generator) — один из методов генерации псевдослучайных чисел. Он позволяет получить более высокое "качество" псевдослучайных чисел. Наибольшую популярность фибоначчиевы датчики получили в связи с тем, что скорость выполнения арифметических операций с вещественными числами сравнялась со скоростью целочисленной арифметики, а фибоначчиевы датчики естественно реализуются в вещественной арифметике. Известны разные схемы использования метода Фибоначчи с запаздыванием. Один из широко распространённых фибоначчиевых датчиков основан на следующей рекуррентной формуле: где ki — вещественные числа из диапазона [0,1], a, b — целые положительные числа, параметры генератора. Для работы фибоначчиеву датчику требуется знать max{a,b} предыдущих сгенерированных случайных чисел. При программной реализации для хранения сгенерированных случайных чисел необходим некоторый объем памяти, зависящих от параметров a и b. Пример. Вычислим последовательность из первых десяти чисел, генерируемую методом Фибоначчи с запаздыванием начиная с k5 при следующих исходных данных: a = 4, b = 1, k 0=0.1; k1=0.7; k2=0.3; k3=0.9; k4=0.5: k5 = k1 - k4 = 0.7 - 0.5 = 0.2; k6 = k2 - k5= 0.3 - 0.2 = 0.1; k7 = k3 - k6 = 0.9 - 0.1 = 0.8; k8 = k4 - k7 + 1 =0.5 - 0.8 + 1 = 0.7; k9 = k5- k8 + 1 =0.2 - 0.7 + 1 = 0.5; k10 = k6 - k9 + 1 =0.1 - 0.5 + 1 = 0.6; 125
Г.В. Басалова Основы криптографии k11 = k7 - k10 = 0.8 - 0.6 = 0.2; k12 = k8 - k11 = 0.7 - 0.2 = 0.5; k13 = k9 - k12 + 1 =0.5 - 0.5 + 1 = 1; k14 = k10 - k13 + 1 =0.6 - 1 + 1 = 0.6. Видим, что генерируемая последовательность чисел внешне похожа на случайную. И действительно, исследования подтверждают, что получаемые случайные числа обладают хорошими статистическими свойствами. Для генераторов, построенных по методу Фибоначчи с запаздыванием, существуют рекомендуемые параметры a и b, так сказать, протестированные на качество. Например, исследователи предлагают следующие значения: (a,b) = (55, 24), (17, 5) или (97,33). Качество получаемых случайных чисел зависит от значения константы a: чем оно больше, тем выше размерность пространства, в котором сохраняется равномерность случайных векторов, образованных из полученных случайных чисел. В то же время с увеличением величины константы a увеличивается объём используемой алгоритмом памяти. В результате значения (a,b) = (17,5) рекомендуются для простых приложений. Значения (a,b) = (55,24) позволяют получать числа, удовлетворительные для большинства криптографических алгоритмов, требовательных к качеству случайных чисел. Значения (a,b) = (97,33) позволяют получать очень качественные случайные числа и используются в алгоритмах, работающих со случайными векторами высокой размерности. Генераторы ПСЧ, основанные на методе Фибоначчи с запаздыванием, использовались для целей криптографии. Кроме того, они применяются в математических и статистических расчетах, а также при моделировании случайных процессов. Генератор ПСЧ, построенный на основе метода Фибоначчи с запаздыванием, использовался в широко известной системе Matlab. Генератор псевдослучайных чисел на основе алгоритма BBS 126
Г.В. Басалова Основы криптографии Широкое распространение получил алгоритм генерации псевдослучайных чисел, называемый алгоритмом BBS (от фамилий авторов — L. Blum, M. Blum, M. Shub) или генератором с квадратичным остатком. Для целей криптографии этот метод предложен в 1986 году. Он заключается в следующем. Вначале выбираются два больших простых1) числа p и q. Числа p и q должны быть оба сравнимы с 3 по модулю 4, то есть при делении p и q на 4 должен получаться одинаковый остаток 3. Далее вычисляется число M = p* q, называемое целым числом Блюма. Затем выбирается другое случайное целое число х, взаимно простое (то есть не имеющее общих делителей, кроме единицы) с М. Вычисляем х0= х2mod M. х0 называется стартовым числом генератора. На каждом n-м шаге работы генератора вычисляется хn+1= хn2 mod M. Результатом n-го шага является один (обычно младший) бит числа хn+1. Иногда в качестве результата принимают бит чётности, то есть количество единиц в двоичном представлении элемента. Если количество единиц в записи числа четное – бит четности принимается равным 0, нечетное – бит четности принимается равным 1. Например, пусть p = 11, q = 19 (убеждаемся, что 11 mod 4 = 3, 19 mod 4 = 3). Тогда M = p* q = 11*19=209. Выберем х, взаимно простое с М: пусть х = 3. Вычислим стартовое число генератора х0: х0 = х2 mod M = 32 mod 209 = 9 mod 209 = 9. Вычислим первые десять чисел хi по алгоритму BBS. В качестве случайных бит будем брать младший бит в двоичной записи числа х i: х1=92 mod 209= 81 mod 209= 81 младший бит: 1 х2=812 mod 209= 6561 mod 209= 82 младший бит: 0 х3=822 mod 209= 6724 mod 209= 36 младший бит: 0 х4=362 mod 209= 1296 mod 209= 42 младший бит: 0 127
Г.В. Басалова х5 =422 Основы криптографии mod 209= 1764 mod 209= 92 х6=922 mod 209= 8464 mod 209= 104 младший бит: 0 младший бит: 0 х7=1042 mod 209= 10816 mod 209= 157 младший бит: 1 х8=1572 mod 209= 24649 mod 209= 196 младший бит: 0 х9=1962 mod 209= 38416 mod 209= 169 младший бит: 1 х10=1692 mod 209= 28561 mod 209= 137 младший бит: 1 Самым интересным для практических целей свойством этого метода является то, что для получения n-го числа последовательности не нужно вычислять все предыдущие n чисел хi. Оказывается хn можно сразу получить по формуле Например, вычислим х10 сразу из х0: В результате действительно получили такое же значение, как и при последовательном вычислении, – 137. Вычисления кажутся достаточно сложными, однако на самом деле их легко оформить в виде небольшой процедуры или программы и использовать при необходимости. Возможность "прямого" получения хn позволяет использовать алгоритм BBS при потоковой шифрации, например, для файлов с произвольным доступом или фрагментов файлов с записями базы данных. Безопасность алгоритма BBS основана на сложности разложения большого числа М на множители. Утверждается, что если М достаточно велико, его можно даже не держать в секрете; до тех пор, пока М не разложено на множители, никто не сможет предсказать выход 128
Г.В. Басалова Основы криптографии генератора ПСЧ. Это связано с тем, что задача разложения чисел вида n = pq (р и q — простые числа) на множители является вычислительно очень трудной, если мы знаем только n, а р и q — большие числа, состоящие из нескольких десятков или сотен бит (это так называемая задача факторизации). Кроме того, можно доказать, что злоумышленник, зная некоторую последовательность, сгенерированную генератором BBS, не сможет определить ни предыдущие до нее биты, ни следующие. Генератор BBS непредсказуем в левом направлении и в правом направлении. Это свойство очень полезно для целей криптографии и оно также связано с особенностями разложения числа М на множители. Самым существенным недостатком алгоритма является то, что он недостаточно быстр, что не позволяет использовать его во многих областях, например, при вычислениях в реальном времени, а также, к сожалению, и при потоковом шифровании. Зато этот алгоритм выдает действительно хорошую последовательность псевдослучайных чисел с большим периодом (при соответствующем выборе исходных параметров), что позволяет использовать его для криптографических целей при генерации ключей для шифрования. Ключевые термины Stream cipher – поточный шифр. Алгоритм BBS – один из методов генерации псевдослучайных чисел. Название алгоритма происходит от фамилий авторов - L. Blum, M. Blum, M. Shub. Алгоритм может использоваться в криптографии. Для вычислений очередного числа xn+1 по алгоритму BBS используется формула хn+1= хn2 mod M, где M = pq является произведением двух больших простых p и q. Генератор псевдослучайных чисел (ГПСЧ) – некоторый алгоритм или устройство, которые создают последовательность битов, внешне похожую на случайную. 129
Г.В. Басалова Основы криптографии Линейный конгруэнтный генератор псевдослучайных чисел – один из простейших ГПСЧ, который для вычисления очередного числа ki использует формулу ki=(a*ki-1+b)mod c, где а, b, с — некоторые константы, a k i-1 — предыдущее псевдослучайное число. Метод Фибоначчи с запаздываниями – один из методов генерации псевдослучайных чисел. Может использоваться в криптографии. Поточный шифр – шифр, который выполняет шифрование входного сообщения по одному биту (или байту) за операцию. Поточный алгоритм шифрования устраняет необходимость разбивать сообщение на целое число блоков. Поточные шифры используются для шифрования данных в реальном времени. Краткие итоги Поточный шифр – это шифр, который выполняет шифрование входного сообщения по одному биту (или байту) за операцию. Поточный алгоритм шифрования устраняет необходимость разбивать сообщение на целое число блоков. Таким образом, если передается поток символов, каждый символ может шифроваться и передаваться сразу. Поточные шифры используются для шифрования данных в режиме реального времени. В качестве генераторов ключей в поточных шифрах могут использоваться генераторы псевдослучайных чисел (ГПСЧ). Целью использования ГПСЧ является получение "бесконечного" ключевого слова, располагая относительно малой длиной самого ключа. Для использования в криптографических целях генератор псевдослучайных чисел должен обладать некоторыми свойствами, например, период последовательности, порождаемой генератором, должен быть очень большой. Простейшими генераторами псевдослучайных чисел являются: линейный конгруэнтный генератор, генератор по методу Фибоначчи с запаздываниями, генератор на основе алгоритма Блюм – Блюма – Шуба (BBS). 130
Г.В. Басалова Основы криптографии Набор для практики Вопросы для самопроверки 1. Чем поточный шифр отличается от блочного? 2. Каким образом организуется шифрование потока данных переменной длины? 3. Какие числа называют "псевдослучайными"? 4. Какими свойствами должен обладать генератор псевдослучайных чисел для использования в криптографических целях? 5. Какие генераторы псевдослучайных чисел Вы можете назвать? 6. Перечислите основные характеристики, достоинства и недостатки каждого из рассмотренных в данной лекции генераторов псевдослучайных чисел. Упражнения для самопроверки 1. Определите последовательность из первых десяти чисел и период линейного конгруэнтного генератора ПСЧ для различных параметров а, b и c (k0 принять равным 0): а =5, b =7 и c = 17; а = 6, b =3 и c = 23. 2. Вычислите последовательность из десяти чисел, генерируемую методом Фибоначчи с запаздыванием начиная с kа при следующих исходных данных: a = 3, b = 1, k0=0.6; k1=0.3; k2=0.5; a = 4, b = 2, k0=0.9; k1=0.3; k2=0.5; k3=0.9. 3. Значения k0, k1, k2, k3, полученные с помощью линейного конгруэнтного генератора, равны: k0 = 1, k1 = 12, k2 = 3, k3 = 6. Найдите параметры а, b и c генератора ПСЧ. 4. Вычислить х11 по методу генерации псевдослучайных чисел BBS, если p = 11, q = 19, х = 3. 131
Г.В. Басалова Основы криптографии 1) Целое положительное число большее единицы называется простым, если оно не делится ни на какое другое число, кроме самого себя и единицы. Подробнее о простых числах см. в "Основные положения теории чисел, используемые в криптографии с открытым ключом". 132
Г.В. Басалова Основы криптографии Поточные шифры и генераторы псевдослучайных чисел. Часть 2 Продолжаем знакомиться с генераторами псевдослучайных чисел, используемых для поточного шифрования информации. В частности, мы рассмотрим алгоритмы генерации псевдослучайных чисел на основе сдвиговых регистров с обратной связью и RC4. Кроме того, в этой лекции мы изучим, каким образом можно использовать режимы OFB и CTR блочных шифров для получения псевдослучайных чисел. Цель лекции: продолжить знакомство с генераторами псевдослучайных чисел, используемых для поточного шифрования информации, а также с некоторыми режимами блочных шифров для получения псевдослучайных чисел. Генераторы псевдослучайных чисел сдвиговых регистров с обратной связью на основе В теории кодирования и криптографии широко применяются так называемые сдвиговые регистры с обратной связью. Они использовались в аппаратуре шифрования еще до начала массового использования ЭВМ и современных высокоскоростных программных шифраторов. Сдвиговые регистры с обратной связью могут применяться для получения потока псевдослучайных бит. Сдвиговый регистр с обратной связью состоит из двух частей: собственно n-битного сдвигового регистра и устройства обратной связи (рис. 8.1). Рис. 8.1. Сдвиговый регистр с обратной связью 133
Г.В. Басалова Основы криптографии Извлекать биты из сдвигового регистра можно только по одному. Если необходимо извлечь следующий бит, все биты регистра сдвигаются вправо на 1 разряд. При этом на вход регистра слева поступает новый бит, который формируется устройством обратной связи и зависит от всех остальных битов сдвигового регистра. За счет этого биты регистра изменяются по определенному закону, который и определяет схему получения ПСЧ. Понятно, что через некоторое количество тактов работы регистра последовательность битов начнет повторяться. Длина получаемой последовательности до начала ее повторения называется периодом сдвигового регистра. Поточные шифры с использованием сдвиговых регистров достаточно долго использовались на практике. Это связано с тем, что они очень хорошо реализуются с помощью цифровой аппаратуры. Простейшим видом сдвигового регистра с обратной связью является линейный сдвиговый регистр с обратной связью (linear feedback shift register – LFSR). Обратная связь в этом устройстве реализуется просто как сумма по модулю 2 всех (или некоторых) битов регистра. Биты, которые участвуют в обратной связи, образуют отводную последовательность. Линейные сдвиговые регистры с обратной связью или их модификации часто применяется в криптографии. Для того, чтобы стало понятнее, как работает сдвиговый регистр с обратной связью, рассмотрим 4-битовый LFSR с отводом от первого и четвертого разрядов, представленный на рис. 8.2. Рис. 8.2. Пример 4-разрядного линейного сдвигового регистра Запишем в изображенный на рисунке регистр начальное значение 1011. Вычислять последовательность внутренних состояний регистра 134
Г.В. Басалова Основы криптографии удобно с помощью таблицы, представленной на таблица 8.1. В таблице отражены первые девять состояний регистра. На каждом шаге все содержимое регистра сдвигается вправо на один разряд. При этом можно получить в качестве результата один бит. На освободившееся слева место поступает бит, равный результату вычисления функции обратной связи . Выходную последовательность генератора псевдослучайных бит образует последний столбец таблицы (извлекаемый бит). Таблица 8.1. Последовательность работы линейного сдвигового регистра Внутреннее состояние Результат вычисления Номер функции обратной Извлекаемый регистра b4, b3, бит ( b1 ) состояния связи b 2, b 1 0 1 2 3 4 5 6 7 8 1 0 1 1 0 0 1 0 0 0 1 0 1 1 0 0 1 0 1 0 1 0 1 1 0 0 1 1 1 0 1 0 1 1 0 0 0 1 1 0 0 1 0 0 0 1 1 0 1 0 1 1 0 0 Линейный сдвиговый регистр размером n бит может находиться в одном из 2n-1 состояний (исключается состояние регистра из одних нулей - при появлении такого состояния далее будут порождаться лишь нули, и о псевдослучаности порождаемой последовательности говорить не приходится). Поэтому теоретически такой регистр может генерировать псевдослучайную последовательность с максимальным периодом 2n-1. Линейный сдвиговый регистр с обратной связью будет генерировать циклическую последовательность битов с максимальным периодом только при выборе в качестве отводной последовательности определенных бит. Разработана математическая теория, позволяющая 135
Г.В. Басалова выбрать подходящие последовательности. Основы криптографии номера разрядов для бит отводной Линейные сдвиговые регистры с обратной связью часто использовались и используются до сих пор при шифровании потоков данных. Для повышения криптостойкости в таких устройствах шифрования применяются комбинации нескольких сдвиговых регистров с обратной связью, а также вводятся дополнительные перемешивающие операции. Такие электронные схемы предлагались и выпускались еще до второй мировой войны. Аналогичные принципы заложены и в некоторые поточные шифры, созданные в конце XX века, например, в алгоритм А5, использовавшийся в Европе для шифрования сотовых цифровых каналов связи стандарта GSM. Несмотря на то, что некоторые криптоаналитики высказывают сомнения в надежности алгоритмов поточного шифрования с использованием линейных сдвиговых регистров с обратной связью, они положены в основу функционирования различных военных и гражданских устройств связи, используемых до настоящего времени. Основным недостатком генераторов псевдослучайных чисел на базе линейных сдвиговых регистров является сложность программной реализации. Сдвиги и битовые операции легко и быстро выполняются в электронной аппаратуре, поэтому в разных странах выпускаются микросхемы и устройства для поточного шифрования на базе алгоритмов с использованием сдвиговых регистров с обратной связью. Использование режимов OFB и CTR блочных шифров для получения псевдослучайных чисел Можно использовать любой блочный алгоритм, например AES или ГОСТ 28147-89, для поточного шифрования информации, используя режимы OFB и CTR блочных шифров. Название режима OFB (Output FeedBack) переводится как "обратная связь по выходу". Пусть минимальный блок данных, используемый для передачи, состоит из j бит; обычным значением является j=8 (то есть минимальной порцией передаваемых данных является 1 байт). В режиме OFB 136
Г.В. Басалова Основы криптографии блочный шифр f на основе секретного ключа К и некоторого инициализирующего значения Y0 формирует псевдослучайную последовательность j-битовых чисел z1,z2,...,zk, которая затем может использоваться в качестве гаммы для шифрования сообщения. Результат зашифрования является входом процедуры шифрования следующего блока исходного сообщения. На каждом этапе шифрования из зашифрованного блока Yi выбирается j младших битов. Таким образом, для получения псевдослучайной последовательности используется схема: Yi=f(Yi-1,K), zi=j младших бит Yi, 1<=i<=k Если размер блока шифра равен N бит, то параметр j может принимать значения от 1 до N. Значение Y0 называют также инициализирующим вектором. Последовательность чисел zi можно использовать в качестве гаммы для шифрования потока исходных данных, состоящего из символов х i: в результате чего получится поток зашифрованных символов y i. Так как значения yi не зависят от открытого текста xi, то каждый раз, используя одни и те же параметры К и Y0, мы получим одну и ту же последовательность гаммы zi. Поэтому рекомендуется менять значение ключа К для передачи каждого нового сообщения. Расшифрование сообщений для описанного режима может производиться только с начала последовательности, так как невозможно получить произвольный элемент последовательности zi, не вычислив все предыдущие. Основное достоинство режима OFB заключается в том, что последовательность z может быть сформирована заранее для того, 137
Г.В. Басалова Основы криптографии чтобы быстро шифровать или расшифровывать поточные сообщения в момент их поступления. Это может быть актуально для систем, обрабатывающих данные в реальном масштабе времени. Еще одно важное достоинство режима OFB состоит в том, что если при передаче данных произошла ошибка, то она не распространяется на следующие зашифрованные блоки, и тем самым сохраняется возможность расшифрования последующих блоков. Например, если в результате передачи по зашумленному каналу связи появился ошибочный бит в блоке yi, то это приведет к невозможности расшифрования только этого блока и получения одного блока исходных данных xi. Дальнейшая последовательность блоков будет расшифрована корректно. Название режима CTR происходит от слова "CounTeR" — "счетчик". Этот режим является модификацией режима OFB. Единственное отличие от OFB заключается в том, что в режиме CTR шифруется не предыдущий выход шифра, а счетчик, увеличиваемый на каждом шаге на 1. Первоначальное значение счетчика определяется некоторым инициализирующим значением Y0. Общая формула выглядит следующим образом: Yi=f(Yi-1+1,K), zi=j старших бит Yi Преимущество режима CTR состоит в том, что любой элемент последовательности z может быть вычислен непосредственно. Этот факт связан с тем, что на каждом шаге Yi увеличивается на единицу, и, следовательно, если нам известен номер шага i, то значение Yi можно вычислить непосредственно, зная Y 0 и i по формуле: Yi=f(Y0+i,K), Это дает возможность шифровать и дешифровать любые фрагменты сообщения независимо друг от друга. Алгоритм RC4 138
Г.В. Басалова Основы криптографии Алгоритм RC4 разработан Р.Ривестом специально как генератор потока ключевой информации с ключом переменной длины. Генераторы псевдослучайных чисел, построенные с помощью таких алгоритмов, как RC4, как правило, значительно быстрее генераторов, основанных на блочных шифрах. Алгоритм RC4 широко применяется в различных системах защиты информации, в компьютерных сетях (например, в протоколе SSL, для шифрования паролей в Windows NT, и др.). Алгоритм RC4 довольно прост и мы полностью рассмотрим принцип его действия. RC4 — фактически класс алгоритмов, определяемых размером его блока или слова – параметром n. Обычно n = 8, но можно использовать и другие значения. Для упрощения анализа алгоритма примем n=4. Внутреннее состояние RC4 состоит из массива размером 2n слов и двух счетчиков, каждый размером в одно слово. Два счетчика, оба при n=4 4-битовые, назовем i и j. Все вычисления проводятся по модулю 2 n. Массив используется как таблица замен, называемая S-бокс, и далее будет обозначаться как S. В каждый момент времени таблица S содержит все возможные n-битовые (в нашем случае 4-битовые) числа в перемешанном виде. Конкретная перестановка значений в таблице определяется ключом. Так как каждый элемент таблицы принимает значения в промежутке 0 до 15, то его можно трактовать двояко: либо как число, либо как номер другого элемента в таблице. Алгоритм RC4 состоит из двух этапов. На первом, подготовительном этапе производится инициализация таблицы замен S. На втором, основном этапе вычисляются псевдослучайные числа. Посмотрим, как инициализируется таблица S. Вначале она заполняется последовательно числами от 0 до 15. Ключ представляется в виде последовательности 4-битовых слов, которыми заполняется другой массив K, такого же размера, как S. Если ключ оказался короче, чем надо, он повторяется нужное число раз. Затем выполняются следующие действия ( алгоритм 1 ): 1. j = 0; i =0; 2. j = (j + Si + Ki) mod 16; 139
Г.В. Басалова Основы криптографии 3. поменять местами Si и Sj; 4. i = i +1; 5. если i <16, то перейти на п.2 В результате выполнения этого алгоритма производится начальное заполнение таблицы замен S, причем это начальное перемешивание значений производится в зависимости от секретного ключа. После того, как таблица S подготовлена, можно начинать генерацию случайных n-битовых слов. Для этого счетчикам i и j присваивается начальное значение 0. Затем для получения каждого нового значения z i выполняются следующие действия ( алгоритм 2 ): i = (i + 1) mod 16; j = (j + Si) mod 16; поменять местами Si и Sj; a = (Si + Sj) mod 16; zi = Sa. Полученное 4-битовое значение zi может использоваться в качестве ключа для шифрования очередного 4-битового блока входного потока данных. Например, пусть секретный ключ состоит из шести 4-битовых значений (приведем их в десятичном виде): 1, 2, 3, 4, 5, 6. Попробуем сгенерировать последовательность чисел по алгоритму RC4. Заполним таблицу S последовательно числами от 0 до 15. Номер элемента 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Значение 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Затем подготовим таблицу K, записав в нее ключ необходимое количество раз: Номер элемента 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Значение 12345612345 6 1 2 3 4 140
Г.В. Басалова Основы криптографии Затем перемешаем содержимое таблицы S. Для этого будем использовать алгоритм 1, описанный выше. Процесс выполнения представим в виде трассировочной таблицы (таблица 8.2), в которой укажем все производимые действия. При выполнении вычислений необходимо помнить, что все операции сложения выполняются по модулю 16. Таблица 8.2. Подготовительный этап (инициализация таблицы замен) алгоритма RC4 Номер Выполняемое действие (по mod Новое Новое пункта алг. 16) значение i значение j 1 j = 0; i =0 2 j = j + Si + K i = 0 + 0 + 1 = 1 3 Поменять местами Si и Sj, то есть S0 и S1 4 5 2 0 i = i +1 i < 16, поэтому перейти на п.2 j = j + Si + Ki = 1 + 0+ 2 = 3 3 Поменять местами Si и Sj, то есть S1 и S3 4 i = i +1 5 i < 16, поэтому перейти на п.2 j = (j + Si + Ki ) mod 16= (3 + 2 + 3) mod 16 = 8 Поменять местами Si и Sj , то есть S2 и S8 2 3 4 5 2 3 4 1 1 3 2 8 i = i +1 i < 16, поэтому перейти на п.2 j = (j + Si + Ki ) mod 16= (8 + 0 + 4) mod 16 = 12 Поменять местами Si и Sj , то есть S3 и S12 3 i = i +1 4 141 12
Г.В. Басалова 5 2 3 Основы криптографии i < 16, поэтому перейти на п.2 j = (j + Si + Ki ) mod 16= (12 + 4 + 5) mod 16 = 5 Поменять местами Si и Sj , то есть S4 и S5 4 5 i = i +1 i < 16, поэтому перейти на п.2 2 j = (j + Si + Ki ) mod 16= (5 + 4 + 6) mod 16 = 15 3 Поменять местами Si и Sj , то есть S5 и S15 4 5 2 3 4 5 2 3 4 5 2 3 4 5 5 5 15 i = i +1 6 i < 16, поэтому перейти на п.2 j = (j + Si + Ki ) mod 16= (15 + 6 + 1) mod 16 = 6 Поменять местами Si и Sj , то есть S6 и S6 6 i = i +1 i < 16, поэтому перейти на п.2 j = (j + Si + Ki ) mod 16= (6 + 7 + 2) mod 16 = 15 Поменять местами Si и Sj , то есть S7 и S15 15 7 i = i +1 8 i < 16, поэтому перейти на п.2 j = (j + Si + Ki ) mod 16= (15 + 2 + 3) mod 16 = 4 Поменять местами Si и Sj , то есть S8 и S4 i = i +1 i < 16, поэтому перейти на п.2 142 9 4
Г.В. Басалова 2 3 Основы криптографии j = (j + Si + Ki ) mod 16= (4 + 9 + 4) mod 16 = 1 Поменять местами Si и Sj , то есть S9 и S1 4 i = i +1 5 i < 16, поэтому перейти на п.2 2 3 10 j = (j + Si + Ki ) mod 16= (1 + 10 + 5) mod 16 = 0 Поменять местами Si и Sj , то есть S10 и S0 4 i = i +1 5 i < 16, поэтому перейти на п.2 2 3 4 5 2 3 4 5 2 3 4 5 2 1 0 11 j = (j + Si + Ki ) mod 16= (0 + 11 + 6) mod 16 = 1 Поменять местами Si и Sj , то есть S11 и S1 i = i +1 i < 16, поэтому перейти на п.2 j = (j + Si + Ki ) mod 16= (1 + 0 + 1) mod 16 = 2 1 12 2 Поменять местами Si и Sj , то есть S12 и S2 i = i +1 13 i < 16, поэтому перейти на п.2 j = (j + Si + Ki ) mod 16= (2 + 13 + 2) mod 16 = 1 Поменять местами Si и Sj , то есть S13 и S1 i = i +1 14 i < 16, поэтому перейти на п.2 j = (j + Si + Ki ) mod 16= (1 + 14 + 143 1 2
Г.В. Басалова Основы криптографии 2 3) mod 16 = 2 3 Поменять местами Si и Sj , то есть S14 и S2 4 5 i = i +1 i < 16 , поэтому перейти на п.2 2 3 4 5 2 15 j = (j + Si + Ki ) mod 16= (2 + 7 + 4) mod 16 = 13 Поменять местами Si и Sj , то есть S15 и S13 i = i +1 i < 16 – неверно, поэтому закончить 13 16 После выполнения алгоритма 1 получим инициализированную и подготовленную к основному этапу таблицу S: Номер элемента 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Значение 10 13 14 12 2 15 6 4 5 3 1 9 8 7 0 11 После того как таблица S подготовлена, можно начинать генерацию случайных 4-битовых слов. Вычислим первые 5 чисел псевдослучайной последовательности, используя алгоритм 2. Результаты вычисления последовательности значений также представим в виде таблицы (таблица 8.3) Таблица 8.3. Основной этап (вычисление элементов псевдослучайной последовательности) алгоритма RC4 Выполняемое действие (по Новое Новое Новое mod 16) знач. i знач. j знач. а 1. i = (i + 1) =0+1=1 1 2. j = (j + Si) mod 16=(0+13) 13 mod 16=13 Вычисление 3. Поменять местами S1 и 144
Г.В. Басалова Основы криптографии 4. a = (Si + Sj )mod 16= (7+13)mod 16=4 5. z1 = S4 =2 1. i = (i + 1) =1+1=2 4 2 2. j = (j + Si) mod 16=(13+14) mod 16=11 11 Вычисление 3. Поменять местами S2 и z2 S11 4. a = (Si + Sj )mod 16= (9+14)mod 16=7 7 5. z2 = S7=4 1. i = (i + 1) =2+1=3 3 2. j = (j + Si) mod 16=(11+12) mod 16=7 Вычисление 3. Поменять местами S3 и S7 z3 4. a = (Si + Sj )mod 16= (4+12)mod 16=0 5. z3 = S0=10 1. i = (i + 1) =3+1=4 4 2. j = (j + Si) mod 16=(7+2) mod 16=9 Вычисление 3. Поменять местами S4 и S9 z4 4. a = (Si+ Sj )mod 16= (3+2)mod 16=5 5. z4= S5=15 1. i = (i + 1) =4+1=5 5 2. j = (j + Si) mod 16=(9+15) mod 16=8 Вычисление 3. Поменять местами S5 и S8 z5 4. a = (Si+ Sj)mod 16= (5+15)mod 16=4 145 7 0 9 5 8 4
Г.В. Басалова Основы криптографии (5+15)mod 16=4 4 5. z5 = S4 =3 В результате первые пять значений получились следующие: 2, 4, 10, 15, 3. При необходимости получения большего количества случайных чисел можно продолжить вычисления дальше. При n=4 генерируемые числа будут иметь размер 4 бита, то есть иметь значения от 0 до 15. В рассмотренном примере размер n слова или блока алгоритма принимался равным четырем. Это значение можно брать и другим, например 8 или 16. В случае использования n=8 таблица замен S должна состоять из 28=256 значений, а элементами таблицы замен должны быть числа от 0 до 255. Размер счетчиков i и j должен также изменить до восьми бит (максимальное значение – 255 ). Кроме того, все вычисления в случае n=8 необходимо выполнять по модулю 256. Аналогичные изменения в алгоритме необходимо производить и при других значениях параметра n. Алгоритм RC4 тщательно изучался криптоаналитиками. В нем не обнаружено каких бы то ни было слабых мест. Помимо высокой устойчивости к криптоанализу, этот алгоритм очень быстр и может использоваться для генерации ключевой последовательности при потоковом шифровании. Генераторы настоящих криптографии случайных чисел в Генераторы ПСЧ находят широкое применение в криптографии, например, при потоковом шифровании. Однако иногда бывает необходимо генерировать совершенно непредсказуемые или попросту абсолютно случайные числа. Такие генераторы называются генераторами случайных чисел (random number generator) или сокращённо ГСЧ (RNG). Генератор настоящих случайных чисел в зависимости от некоторого инициализирующего значения выдает последовательность, которая не может быть впоследствии повторена. 146
Г.В. Басалова Основы криптографии системе передачи секретных данных требуется множество ключей для всех пользователей системы. В принципе ключи шифрования можно получать с помощью генератора псевдослучайных чисел, используя, например, алгоритм RC4 или блочный шифр в режиме OFB. Однако, если противник вдруг узнает ключ, использовавшийся для генерации псевдослучайных ключей, он сможет сгенерировать точно такие же ключи и вскрыть все передаваемые в системе сообщения. Следовательно, секретные ключи должны быть действительно случайными. Поэтому задача генерирования последовательностей настоящих случайных чисел представляет большой интерес для разработчиков криптосистем. Наилучшие характеристики будут иметь генераторы случайных чисел, основанные на естественных случайностях реального мира. Например, можно создать ГСЧ, основанные на следующих данных: количество импульсов счетчика Гейгера за единицу времени, например, за одну секунду; числа, оказывающиеся на верхней грани игрального кубика при произвольном броске; количество самолетов, пролетающих над определенным районом в единицу времени, например, месяц. Кроме того, параметры других различных физических явлений могут быть положены в основу ГСЧ. К сожалению, многие методики получения настоящих случайных чисел не могут быть реализованы на практике, так как используемый в криптографических целях генератор должен быть компактным, быстрым (генерировать числа за доли секунды), независящим от внешних факторов и условий окружающей среды. Тем не менее, разработчики интегральных схем конструируют и производят аппаратные ГСЧ, основанные на разных принципах. Например, разработан способ с использованием двух конденсаторов типа "металл - диэлектрик - полупроводник". Случайное значение является функцией разности зарядов этих конденсаторов. В другом устройстве обрабатывается и используется значение температурного шума полупроводникового диода. 147
Г.В. Басалова Основы криптографии шума полупроводникового диода. Предлагаются и программно-аппаратные методы для получения случайных чисел. Известны методы, основанные на шуме звуковой карты персонального компьютера, значении счётчика тактов процессора, скорости вращения жесткого диска компьютера, значении системного таймера, скорости нажатия отдельных клавиш клавиатуры или движения мыши. Полученные каким-либо образом случайные данные обрабатываются криптостойким генератором ПСЧ и только после такой обработки используются. Управление секретными ключами Рассмотрим еще раз общую структуру секретной системы, представленную в "Простейшие методы шифрования с закрытым ключом". Схема структуры такой системы изображена на рис. 8.3. Рис. 8.3. Общая структура секретной системы, использующей симметричное шифрование Отправитель, представляющий собой источник сообщений, и получатель (приемник зашифрованных сообщений) договариваются о выборе приемлемого шифра и ключа. Затем отправитель шифрует свое 148
Г.В. Басалова Основы криптографии связи. Получатель расшифровывает его, используя шифр и ключ. Противник, скорее всего, может перехватить зашифрованное сообщение, так как предполагается, что оно передается по открытому каналу связи. В этом случае криптоаналитик противника может попытаться вскрыть шифротекст. Будем предполагать, что отправитель и получатель сообщения используют достаточно надежный шифр, и что вероятность его вскрытия невысока. В этом случае безопасность шифрования полностью зависит от безопасности ключа. Раскрытие ключа приведет к раскрытию передаваемых данных. Таким образом, ключ должен храниться в секрете до тех пор, пока он используется для закрытия данных. Поэтому для первоначального распределения ключей необходим надежный канал связи. Таким образом, принципиальной является надежность канала передачи ключа участникам секретных переговоров. Самым надежным способом первоначального распределения ключей является обмен ключами при личной встрече абонентов сети передачи данных. Для доставки ключей можно также использовать специальных курьеров. Если в обмене секретными сообщениями планируется участие небольшого количества сторон, например, двух или трех, то оба указанных способа вполне допустимы. Если же количество взаимодействующих абонентов велико, то задача распределения ключей превращается в настоящую проблему. При использовании секретных ключей существуют и другие трудности. Например, ключи должны время от времени меняться. Это связано с тем, что чем дольше используется ключ, тем больше вероятность его компрометации (раскрытия). Чем дольше используется ключ, тем больше потери от его компрометации, так как тем большее количество сообщений сможет раскрыть злоумышленник при получении ключа. Даже если ключ не будет раскрыт, проводить криптоанализ противнику удобнее, имея в своем распоряжении достаточное количество сообщений, зашифрованных одним и тем же ключом. Оптимальным считается использовать для каждого сеанса обмена зашифрованными сообщениями свой уникальный ключ – так называемый сеансовый ключ. Но где взять такое количество ключей для большой телекоммуникационной сети и как их распределять? Таким образом, при большом числе взаимодействующих сторон 149
Г.В. Басалова Основы криптографии Таким образом, при большом числе взаимодействующих сторон требуется предварительная рассылка значительного количества ключей, а также последующее их хранение и при необходимости – смена. Предположим, в локальной сети имеется 100 пользователей. Пусть пользователи сети желают обмениваться секретными данными друг с другом по принципу "каждый с каждым". В этом случае для каждой пары пользователей необходим свой секретный ключ для шифрования сообщений. Из ста пользователей можно составить 100x99/2=4950 пар, следовательно, в системе передачи данных будут использоваться 4950 разных секретных ключей. Все эти ключи должны быть сгенерированы и распределены надежным образом. Кроме того, каждый из ста пользователей должен помнить 99 разных ключей, каждый для определенного абонента. Если же в обмене сообщениями участвует не сто, а тысяча человек, то задача управления ключами становится чрезвычайно сложной. В связи с указанными трудностями на практике применяются специальные автоматизированные системы управления ключами. Такие системы позволяют генерировать ключи, хранить их и архивировать, восстанавливать утерянные ключи, заменять или изымать из обращения старые и ненужные ключи. Важнейшей частью системы управления ключами является центр распределения ключей (Key Distribution Center – KDC), функциями которого являются генерация, распределение и передача ключей. Специалистами разработаны специальные процедуры (или протоколы), которые позволяют центру распределения ключей доставлять пользователям ключи для проведения отдельных сеансов связи ( сеансовые ключи ). К сожалению, все протоколы с использованием симметричного шифрования имеют те или иные недостатки. Рассмотрим один из возможных протоколов обмена ключами. Предположим, при вступлении в сообщество пользователей сети обмена данными центром распределения ключей всем новым абонентам выдается индивидуальный секретный ключ. Вот как может выглядеть процедура распределения секретных ключей для проведения сеанса связи между двумя абонентами сети с использованием центра распределения ключей (для краткости будем называть его просто Центром): 150
Г.В. Басалова Основы криптографии 1. Абонент А обращается в Центр и запрашивает сеансовый ключ для связи с абонентом Б. 2. В Центре создается случайный сеансовый ключ. Зашифровываются две копии этого сеансового ключа – одна с использованием секретного ключа абонента А, другая – с использованием секретного ключа абонента Б. Затем обе зашифрованные копии пересылаются из Центра абоненту А. 3. Абонент А расшифровывает свою копию сеансового ключа и пересылает вторую зашифрованную копию абоненту Б. 4. Абонент Б расшифровывает свою копию сеансового ключа. 5. Абоненты А и Б используют полученный сеансовый ключ для секретного обмена информацией. Указанный протокол достаточно прост и может быть автоматизирован с помощью, например, программы передачи данных. Однако приведенная процедура распределения сеансовых ключей имеет несколько явных недостатков. Первым недостатком данной системы является то, что Центр участвует во всех обменах. Сбои в работе Центра нарушат работу всей системы. Вторым недостатком является то, центр распределения ключей должен хранить в каком-либо виде секретные ключи всех абонентов сети. Если злоумышленник найдет доступ к секретным ключам пользователей системы ("взломает" систему, подкупит администратора и т.д.), то он сможет читать и изменять все передаваемые сообщения. И, наконец, остается проблема первоначального распределения секретных ключей при вступлении пользователя в сеть. Первоначальный секретный ключ должен быть доставлен по абсолютно надежному каналу связи, иначе весь протокол теряет всякий смысл. Хорошо, если первоначальный ключ может быть выдан лично новому пользователю, однако в некоторых случаях это невозможно, например, при территориальной распределенности сети передачи данных. Эти и другие недостатки алгоритмов симметричного шифрования обнаружились разработчиками телекоммуникационных сетей при первых попытках построения защищенных систем передачи данных в 70-х годах XX века. Решением проблемы распределения ключей (а также 151
Г.В. Басалова Основы криптографии некоторых других серьезных проблем) стало использование несимметричных алгоритмов шифрования, с которыми мы начнем знакомиться уже в следующей лекции. Ключевые термины CTR – режим работы блочного шифра, который позволяет генерировать ключи при поточном шифрования информации. LFSR (linear feedback shift register ) – линейный сдвиговый регистр с обратной связью. OFB – режим работы блочного шифра, который позволяет генерировать ключи при поточном шифрования информации. Алгоритм RC4 – алгоритм генерации псевдослучайных чисел. Может использоваться для генерации ключей при поточном шифровании. Линейный сдвиговый регистр с обратной связью (linear feedback shift register – LFSR) – вариант сдвигового регистра с обратной связью. Обратная связь в таком регистре реализуется просто как сумма по модулю 2 всех (или некоторых) битов регистра. Сдвиговый регистр с обратной связью состоит n-битного сдвигового регистра и устройства обратной связи. Когда нужно извлечь бит, все биты регистра сдвигаются вправо на одну позицию. Новый крайний слева бит определяется функцией обратной связи от остальных битов. Сдвиговые регистры с обратной связью могут применяться для получения потока псевдослучайных бит. Краткие итоги Для генерации ключевого потока при поточном шифровании могут использоваться сдвиговые регистры с обратной связью. Сдвиговый регистр с обратной связью состоит n-битного сдвигового регистра и устройства обратной связи. Когда нужно извлечь бит, все биты регистра сдвигаются вправо на одну позицию. Новый крайний слева бит определяется функцией обратной связи от остальных битов. Сдвиговые регистры с обратной связью могут применяться для получения потока 152
Г.В. Басалова Основы криптографии псевдослучайных бит. Можно использовать любой блочный алгоритм, например AES или ГОСТ 28147-89, для поточного шифрования информации, используя режимы OFB и CTR блочных шифров. Эти режимы позволяют на основе блочного алгоритма шифрования с использованием секретного ключа генерировать поток ключевой информации, который затем может использоваться в качестве гаммы при шифровании. Существуют также алгоритмы генерации псевдослучайных чисел, созданные специально для криптографии. Одним из наиболее известных алгоритмов такого рода является алгоритм RC4. Это алгоритм с ключом переменной длины. На основе ключа алгоритм вырабатывает псевдослучайные числа, используя операции сложения (по некоторому модулю), перестановки и замены элементов внутреннего массива. Генераторы псевдослучайных чисел, построенные с помощью таких алгоритмов, как RC4, как правило, значительно быстрее генераторов, основанных на блочных шифрах. Во всех системах, использующих симметричное шифрование, принципиально важной является надежность канала передачи ключа участникам секретных переговоров. Основными проблемами, возникающими в системах управления ключами, являются следующие: большое количество и территориальная распределенность взаимодействующих абонентов, необходимость смены ключей от сеанса к сеансу. Решением проблемы распределения ключей стало использование несимметричных алгоритмов шифрования. Набор для практики Вопросы для самопроверки 1. Перечислите основные характеристики, достоинства и недостатки каждого из рассмотренных в лекции генераторов псевдослучайных чисел. 2. Каким образом могут использоваться для получения псевдослучайных чисел сдвиговые регистры с обратной связью? Объясните их принцип работы. 153
Г.В. Басалова Основы криптографии 3. Каким образом блочный шифр в режиме OFB может быть использован для поточного шифрования данных? 4. Как организуется режим CTR блочного шифра? 5. В чем разница между генераторами случайных и псевдослучайных чисел? 6. Можно ли использовать генератор настоящих случайных чисел для получения гаммы при потоковом шифровании? Почему? 7. Для каких криптографических целей могут быть использованы генераторы настоящих случайных чисел? 8. Какие проблемы возникают при управлении секретными ключами в системах обмена шифрованными сообщениями? Упражнения для самопроверки 1. Определите первые 16 бит псевдослучайной последовательности, получаемой с помощью генератора ПСЧ на основе линейного сдвигового регистра, изображенного на рисунке, если начальное значение регистра следующее: b4=0, b3=0, b2=0, b1=1. b4=1, b3=1, b2=0, b1=1. 2. Определите период псевдослучайных последовательностей, получаемых с помощью генератора ПСЧ на основе сдвигового регистра с обратной связью из упражнения 1. 3. Продолжите вычисление псевдослучайной последовательности по алгоритму RC4, начатое в "Поточные шифры и генераторы псевдослучайных чисел. Часть 2" ( n=4, ключ – последовательность чисел 1, 2, 3, 4, 5, 6 ) и найдите z6, z7, z8, z9 и z10. 154
Г.В. Басалова Основы криптографии 4. Произведите вычисление псевдослучайной последовательности по алгоритму RC4 ( n=4 ) и найдите z1, z2, z3, z4 и z5. В качестве секретного ключа используйте последовательность: 4, 3, 2, 1. 155
Г.В. Басалова Основы криптографии Введение в криптографию с открытым ключом В этой лекции читатель познакомится с наиболее важным достижением криптографов ХХ века – асимметричной криптографией и узнает, какие математические функции называются односторонними и как они используются для шифрования, формирования секретных ключей и цифровой подписи на электронных документах. Цель лекции: первоначальное знакомство с принципами шифрования с открытым ключом. Предпосылки создания методов шифрования открытым ключом и основные определения с При использовании шифрования с закрытым ключом возникают две достаточно серьезные проблемы. Первая проблема заключается в изготовлении секретных ключей и доставке их участникам информационного обмена. При большом количестве и территориальной распределенности участников информационного обмена, использующих каналы связи общего назначения, например, обычную или электронную почту, часто бывает сложно гарантировать безопасность доставки такого ключа и его подлинность. В "Поточные шифры и генераторы псевдослучайных чисел. Часть 2" учебного пособия проблема распределения ключей для симметричного шифрования была подробно рассмотрена. Второй проблемой является обеспечение подлинности партнеров при электронном общении. Развитие деловой переписки и электронной коммерции требует наличия методов, при использовании которых невозможно было бы подменить кого-либо из участников обмена. Получатель корреспонденции должен иметь возможность удостовериться в подлинности документа, а создатель электронного послания должен быть в состоянии доказать свое авторство получателю или третьей стороне. Следовательно, электронные документы должны иметь аналог обычной подписи. Многие криптографы работали над решением этих проблем, в результате чего во второй половине семидесятых годов ХХ века были 156
Г.В. Басалова Основы криптографии разработаны принципиально новые подходы, позволяющие решить перечисленные выше (и некоторые другие) задачи. Основой послужило открытие так называемых асимметричных криптоалгоритмов, или методов, в которых процедуры прямого и обратного криптопреобразования выполняются на различных ключах и не имеют между собой очевидных и легко прослеживаемых связей, которые позволили бы по одному ключу определить другой. Асимметричные алгоритмы гораздо больше основаны на свойствах математических функций, чем алгоритмы симметричного шифрования, использующие в основном только операции перестановки и замены. Большой вклад в эти исследования внесли американские ученые У. Диффи (W. Diffie), Э. Хеллман (M. Hellman), Р. Меркль (R. Merkle). Они первыми предложили способы решения обеих задач, которые радикально отличаются от всех предыдущих подходов к шифрованию. Асимметричные алгоритмы шифрования называются также алгоритмами с открытым ключом. В отличие от алгоритмов симметричного шифрования (алгоритмов шифрования с закрытым ключом), в которых для шифрования и расшифрования используется один и тот же ключ, в ассиметричных алгоритмах один ключ используется для шифрования, а другой, отличный от первого, – для расшифрования. Алгоритмы называются асимметричными, так как ключи шифрования и расшифрования разные, следовательно, отсутствует симметрия основных криптографических процессов. Один из двух ключей является открытым (public key) и может быть объявлен всем, а второй – закрытым (private key) и должен держаться в секрете. Какой из ключей, открытый или закрытый, используется для шифрования, а какой для расшифрования, определяется назначением криптографической системы. В настоящее время асимметричные алгоритмы широко применяются на практике, например, для обеспечения информационной безопасности телекоммуникационных сетей, в том числе сетей, имеющих сложную топологию; для обеспечения информационной безопасности в глобальной сети Internet; в различных банковских и платежных системах (в том числе использующих интеллектуальные карты). Алгоритмы шифрования с открытым ключом можно использовать для решения, как минимум, трех задач: 157
Г.В. Басалова Основы криптографии 1. Для шифрования передаваемых и хранимых данных в целях их защиты от несанкционированного доступа. 2. Для формирования цифровой подписи под электронными документами. 3. Для распределения секретных ключей, используемых потом при шифровании документов симметричными методами. Односторонние функции Все алгоритмы шифрования с открытым ключом основаны на использовании так называемых односторонних функций. Односторонней функцией (one-way function) называется математическая функция, которую относительно легко вычислить, но трудно найти по значению функции соответствующее значение аргумента. То есть, зная х легко вычислить f(x), но по известному f(x) трудно найти подходящее значение x. Под словом "трудно вычислить" понимают, что для этого потребуется не один год расчетов с использованием ЭВМ. Односторонние функции применяются в криптографии также в качестве хеш-функций (см. "Криптографические хеш-функции"). Использовать односторонние функции для шифрования сообщений с целью их защиты не имеет смысла, так как обратно расшифровать зашифрованное сообщение уже не получится. Для целей шифрования используются специальные односторонние функции – односторонние функции с люком (или с секретом) – это особый вид односторонних функций, имеющих некоторый секрет (люк), позволяющий относительно быстро вычислить обратное значение функции. Для односторонней функции с люком f справедливы следующие утверждения: 1. зная х, легко вычислить f(x), 2. по известному значению f(x) трудно найти x, 3. зная дополнительно некоторую секретную информацию, можно легко вычислить x. Использование шифрования асимметричных 158 алгоритмов для
Г.В. Басалова Основы криптографии В 70-х годах ХХ века Диффи и Хеллман предложили принцип шифрования, основанный на использовании двух разных ключей, хотя и связанных между собой, но устроенных так, что вычислить по одному из них (открытому) другой (закрытый) практически невозможно. Этот принцип может быть использован для решения проблемы снабжения пользователей ключами шифрования/расшифрования, а точнее – для устранения этой проблемы. Согласно Диффи и Хеллману предварительно распределяемые закрытые ключи вообще не должны использоваться для шифрования данных (так как секрет, который известен более чем одному человеку, – уже не секрет). Закрытый ключ должен быть известен только одному лицу – его владельцу. Такой принцип использования асимметричных алгоритмов получил название открытого шифрования или шифрованием с открытым ключом. Согласно этому принципу, любой желающий может зашифровать сообщение открытым ключом. Расшифровать сообщение сможет только владелец закрытого ключа. Пусть, например, пользователи А и Б, имеющие возможность обмениваться электронными сообщениями, используют схему открытого шифрования. Предположим, пользователь А должен передать секретное сообщение пользователю Б так, чтобы никто другой не смог его прочитать. Для этого необходимо выполнить следующие действия: 1. Пользователь Б посылает пользователю А свой открытый ключ U по любому каналу связи, например, по электронной почте. 2. Пользователь А шифрует свое сообщение М полученным открытым ключом U и получает зашифрованное сообщение С. 3. Зашифрованное сообщение С пересылается пользователю Б. 4. Пользователь Б расшифровывает полученное сообщение С своим закрытым ключом R. Если операцию шифрования обозначить как F, а операцию расшифрования как F-1, то схему протокола обмена информацией между пользователями можно изобразить, как на рис. 9.1. 159
Г.В. Басалова Основы криптографии Рис. 9.1. Схема открытого шифрования Использование открытого шифрования снимает проблему распределения ключей. Раньше пользователи перед обменом зашифрованными данными должны были каким-либо образом по закрытому каналу связи согласовывать используемый секретный ключ. Для этого они могли встретиться лично или использовать курьера. Если один из пользователей считал нужный изменить ключ, он должен был передать новый ключ своему абоненту. Криптография с открытыми ключами все упрощает. Теперь абоненты не должны заботиться о возможности компрометации секретного ключа. Пользователи системы связи могут совершенно свободно обмениваться открытыми ключами и зашифрованными ими сообщениями. Если пользователь надежно хранит свой закрытый ключ, никто не сможет прочитать передаваемые сообщения. Для упрощения процедуры обмена в сети передачи сообщений обычно используется база данных (подробнее об этом см. в "Криптографические алгоритмы с открытым ключом и их использование"), в которой хранятся открытые ключи всех пользователей. При необходимости любой пользователь системы может запросить из базы открытый ключ другого человека и использовать полученный ключ для шифрования сообщений. Цифровая подпись на основе алгоритмов с открытым ключом 160
Г.В. Басалова Основы криптографии Как и все люди, абоненты сети передачи данных могут не доверять друг другу или вести себя нечестно. Они могут подделывать чужие сообщения, отрицать свое авторство или выдавать себя за другое лицо. Особенно актуальными становятся эти проблемы в связи с развитием электронной коммерции и возможностью оплаты услуг через Интернет. Поэтому во многих системах связи получатель корреспонденции должен иметь возможность удостовериться в подлинности документа, а создатель электронного послания должен быть в состоянии доказать свое авторство получателю или третьей стороне. Следовательно, электронные документы должны иметь аналог обычной физической подписи. При этом подпись должна обладать следующими свойствами: 1. подпись воспроизводится только одним лицом, а подлинность ее может быть удостоверена многими; 2. подпись неразрывно связывается с данным сообщением и не может быть перенесена на другой документ; 3. после того, как документ подписан, его невозможно изменить; 4. от поставленной подписи невозможно отказаться, то есть лицо, подписавшее документ, не сможет потом утверждать, что не ставило подпись. Асимметричные алгоритмы шифрования могут быть использованы для формирования цифровой (электронной) подписи (digital signature) – уникального числового дополнения к передаваемой информации, позволяющего проверить ее авторство. Электронная (цифровая) подпись (ЭЦП) представляет собой последовательность бит фиксированной длины, которая вычисляется определенным образом с помощью содержимого подписываемой информации и секретного ключа. При формировании цифровой подписи специальным образом шифруется или все сообщение целиком, или результат вычисления хешфункции от сообщения. Последний способ обычно оказывается предпочтительнее, так как подписываемое сообщение может иметь разный размер, иногда довольно большой, а хеш-код всегда имеет постоянную не очень большую длину. Рассмотрим подробнее оба варианта формирования ЭЦП. Самый простой способ основывается, так же как и при открытом 161
Г.В. Басалова Основы криптографии шифровании, на использовании пары связанных между собой ключей (открытого и закрытого). Однако роли закрытого и открытого ключей меняются – ключ подписывания становится секретным, а ключ проверки – открытым. Если при этом сохраняется свойство, что по открытому ключу нельзя практически найти закрытый ключ, то в качестве подписи может выступать само сообщение, зашифрованное секретным ключом. Таким образом подписать сообщение может только владелец закрытого ключа, но каждый, кто имеет его открытый ключ, может проверить подпись. Пусть, например, пользователь А хочет отправить пользователю Б подписанное сообщение. Процедура создания и проверки подписи состоит из следующих шагов: 1. Пользователь А посылает пользователю Б свой открытый ключ U по любому каналу связи, например, по электронной почте. 2. Пользователь А шифрует сообщение М своим закрытым ключом R и получает зашифрованное сообщение С. 3. Зашифрованное сообщение пересылается пользователю Б. 4. Пользователь Б расшифровывает полученное сообщение С, используя открытый ключ пользователя А. Если сообщение расшифровалось, значит, оно подписано пользователем А. Этот протокол можно изобразить в виде схемы, как на рис. 9.2. Рис. 9.2. подписи Первый вариант схемы создания и проверки цифровой 162
Г.В. Басалова Основы криптографии До тех пор, пока пользователь А надежно хранит свой закрытый ключ, его подписи достоверны. Кроме того, невозможно изменить сообщение, не имея доступа к закрытому ключу абонента А; тем самым обеспечивается аутентификация и целостность данных. Физическое представление пары ключей зависит от конкретной системы, поддерживающей использование ЭЦП. Чаще всего ключ записывается в файл, который, в дополнение к самому ключу, может содержать, например, информацию о пользователе - владельце ключа, о сроке действия ключа, а также некий набор данных, необходимых для работы конкретной системы (подробнее об этом см. "Электронная цифровая подпись"). Данные о владельце ключа позволяют реализовать другую важную функцию ЭЦП - установление авторства, поскольку при проверке подписи сразу же становится ясно, кто подписал то или иное сообщение. Обычно программные продукты, осуществляющие проверку ЭЦП, настраиваются так, чтобы результат исполнения появлялся на экране в удобном для восприятия виде с указанием поставившего подпись пользователя, например, так: "Подпись файла приказ.doc верна (Автор: Соколов А.И.)" На рис. 9.2представлена схема формирования так называемой цифровой подписи с восстановлением документа. Цифровые подписи с восстановлением документа как бы содержат в себе подписываемый документ: в процессе проверки подписи автоматически вычисляется и тело документа. Если при расшифровывании сообщение восстановилось правильно, значит, подпись была верной. Цифровая подпись с восстановлением документа может быть реализована, например, с помощью одного из самых популярных алгоритмов формирования ЭЦП – RSA. В случае использования цифровой подписи с восстановлением документа все сообщение целиком подписывается, то есть шифруется. В настоящее время на практике так обычно не делается. Алгоритмы шифрования с открытым ключом достаточно медленные, кроме того, для подтверждения целостности сообщения требуется много памяти. К тому же практически все применяемые алгоритмы вычисления ЭЦП используют для расчета сообщения заранее заданной стандартной длины. Например, в российском алгоритме формирования цифровой 163
Г.В. Басалова Основы криптографии подписи ГОСТ Р34.10-94 этот размер определен равным 32 байтам. Поэтому для экономии времени и вычислительных ресурсов, а также для удобства работы асимметричный алгоритм обычно используется вместе с какой-нибудь однонаправленной хеш-функцией. В этом случае вначале с помощью хеш-функции из сообщения произвольной длины вычисляется хеш-код нужного размера, а затем для вычисления ЭЦП производится шифрование полученного на предыдущем этапе хеш-кода от сообщения. ЭЦП, вычисленные по хеш-коду документа, называют присоединяемыми цифровыми подписями. Такие цифровые подписи представляют собой некоторый числовой код, который необходимо пристыковывать к подписываемому документу. Само сообщение при этом не шифруется и передается в открытом виде вместе с цифровой подписью отправителя. Если пользователь А хочет отправить пользователю Б сообщение М, дополненное присоединенной цифровой подписью, то процедура создания и проверки подписи должна состоять из следующих шагов: 1. Пользователь А посылает пользователю Б свой открытый ключ U по любому каналу связи, например, по электронной почте. 2. Пользователь А с помощью некоторой надежной хеш-функции Н вычисляет хеш-код своего сообщения h = H(M). 3. Затем пользователь А шифрует хеш-код сообщения h своим закрытым ключом R и получает цифровую подпись С. 4. Исходное сообщение М вместе с цифровой подписью С пересылаются пользователю Б. 5. Пользователь Б вычисляет хеш-код h полученного сообщения М, а затем проверяет цифровую подпись С, используя открытый ключ пользователя А. Этот протокол можно изобразить в виде схемы, как на рис. 9.3. 164
Г.В. Басалова Рис. 9.3. подписи Основы криптографии Второй вариант схемы создания и проверки цифровой Хеш-функция не являются частью алгоритма ЭЦП, поэтому в схеме может быть использована любая надёжная хеш-функция. Описанный процесс создания подписи не обеспечивает конфиденциальность. То есть сообщение, посланное таким способом, невозможно изменить, но можно прочитать. Даже если не использовать хеш-функцию, а шифровать все сообщение целиком, конфиденциальность не обеспечивается, так как любой может расшифровать сообщение, используя открытый ключ отправителя. Во многих ситуациях приведенной схемы создания и использования цифровой подписи оказывается вполне достаточно. Однако бывают случаи, когда пользователь Б может смошенничать. Предположим, что пересылаемым документом был чек от пользователя А, например, за оказанные услуги. Пользователь Б удостоверился, что цифровая подпись на нем верная и использовал его для получения денег. Никто не может помешать пользователю Б снять одну или несколько копий с подписанного документа (тем более, если документ электронный) и периодически с небольшим интервалом предъявлять их в банк для 165
Г.В. Басалова Основы криптографии получения денег. Для устранения возможности такого жульничества в цифровые подписи часто включают метки времени. Дата и время подписания документа добавляются к сообщению и подписываются вместе со всем документом. При оплате чека метка времени может быть зафиксирована банком и занесена в базу данных. При попытке повторного предъявления чека банк это обнаружит и примет соответствующие меры. Разновидностью цифровой подписи является неотрицаемая цифровая подпись. Как и обычная цифровая подпись, неотрицаемая цифровая подпись зависит от подписываемого документа и закрытого ключа автора. В отличие от обычной ЭЦП неотрицаемая подпись не может быть проверена без разрешения подписавшего. Таким образом, получатель корреспонденции не сможет показать подпись (или не сможет доказать правильность подписи) без согласия лица, подписавшего сообщение. Формирование секретных ключей с использованием асимметричных алгоритмов На практике алгоритмы с открытым ключом редко используются для непосредственного шифрования сообщений. Этому препятствует относительная невысокая скорость асимметричных алгоритмов при шифровании и расшифровании больших объемов данных. Данный фактор связан с тем, что основной операцией в системах с открытым ключом является возведение в степень по большому модулю 500-1000 битовых чисел, что при программной реализации производится намного медленнее, чем шифрование того же объема данных классическими симметричными способами. Однако при обработке коротких блоков данных, например, ключей определенной длины, алгоритмы шифрования с открытым ключом могут использоваться достаточно эффективно. Поэтому часто используют следующую комбинированную схему: асимметричный алгоритм применяется для согласования ключа сессии, а затем этот ключ выступает в роли секретного ключа для шифрования сообщений симметричным алгоритмом. 166
Г.В. Басалова Основы криптографии Простейший протокол формирования секретного ключа сессии может выглядеть следующим образом (если пользователи некоторой системы связи имеют доступ к базе данных открытых ключей абонентов системы, предоставляемой центром распределения ключей, то они могут получать из нее открытые ключи друг друга): 1. Пользователь А получает открытый ключ пользователя Б из центра распределения ключей или непосредственно от пользователя Б. 2. Пользователь А генерирует случайный сеансовый ключ и зашифровывает его полученным открытым ключом. 3. Зашифрованный сеансовый ключ пересылается пользователю Б. 4. Пользователь Б расшифровывает полученный пакет своим закрытым ключом. 5. Пользователи А и Б используют согласованный сеансовый ключ для обмена шифрованными сообщениями. Схему формирования парой пользователей А и В общего секретного ключа К для шифрования - расшифрования можно изобразить следующим образом (рис. 9.4). Рис. 9.4. Схема формирования общего секретного ключа Эта схема напоминает рис. 9.1, и это неудивительно, ведь в ней используется тот же самый режим шифрования открытым ключом. Отличие заключается в том, что шифруется. В схеме на рис. 9.4 производится шифрование небольшого по размеру сеансового ключа, 167
Г.В. Басалова Основы криптографии который в дальнейшем будет использован в качестве секретного ключа при шифровании симметричным алгоритмом. Шифрование небольшого по размеру блока данных выполняется достаточно быстро и не замедляет телекоммуникационные процессы даже в системе с многими тысячами пользователей. Существуют и более сложные протоколы распределения ключей, обеспечивающие взаимное подтверждение подлинности участников сеанса связи, подтверждение достоверности сеанса механизмом запроса-ответа или другие требования. Требования к алгоритмам шифрования с открытым ключом Рассмотрев основные способы применения алгоритмов шифрования с открытым ключом, изучим требования, которым должен, по мнению основоположников теории шифрования с открытым ключом Диффи и Хеллмана, удовлетворять алгоритм шифрования с открытым ключом. Эти требования следующие: 1. Вычислительно легко создавать пару (открытый ключ, закрытый ключ). 2. Вычислительно легко зашифровать сообщение открытым ключом. 3. Вычислительно легко расшифровать сообщение, используя закрытый ключ. 4. Вычислительно невозможно, зная открытый ключ, определить соответствующий закрытый ключ. 5. Вычислительно невозможно, зная только открытый ключ и зашифрованное сообщение, восстановить исходное сообщение. Из этих общих требований видно, что реализация конкретного алгоритма с открытым ключом зависит от соответствующей односторонней функции. Математиками и криптографами предложено большое количество алгоритмов шифрования с открытым ключом, основанных на различных односторонних функциях. Некоторые алгоритмы можно задействовать тремя, рассмотренными ранее в данной лекции 168
Г.В. Басалова Основы криптографии способами, в то время как другие могут использоваться только одним или двумя способами. Мы рассмотрим четыре алгоритма с открытым ключом, три из которых достаточно давно применяются на практике, а четвертый вид алгоритмов совсем недавно начал применяться в системах защиты информации. Эти алгоритмы используются обычно для различных целей, что отражено в следующей таблице. Название алгоритма Возможность использования Согласование Шифрование / Цифровая или расшифрование подпись формирование данных ключа RSA Да Да Да Алгоритм ДиффиХеллмана Нет Нет Да Да Да Да Да Да Да Алгоритм Эль-Гамаля Алгоритмы с использованием эллиптических кривых Перед изучением наиболее известных алгоритмов шифрования с открытым ключом, необходимо напомнить, что все асимметричные алгоритмы основаны на свойствах тех или иных математических функций. Доказательства правильности работы рассматриваемых алгоритмов могут быть достаточно сложными, поэтому мы ограничимся изучением основных принципов их работы. Многие криптографические алгоритмы базируются на результатах классической теории чисел. Основные факты и положения этой теории, необходимые для понимания алгоритмов и выполнения упражнений, сформулированы в "Основные положения теории чисел, используемые в криптографии с открытым ключом". Ключевые термины Алгоритм шифрования с открытым ключом (или асимметричные криптоалгоритмы ) – криптографический алгоритм, в котором для шифрования и расшифрования используются разные ключи. 169
Г.В. Басалова Основы криптографии Закрытый ключ – ключ, используемый в асимметричных криптографических алгоритмах, который должен храниться в секрете. Односторонняя функция – математическая функция, которую относительно легко вычислить, но трудно найти по значению функции соответствующее значение аргумента. То есть, зная х легко вычислить f(x), но по известному f(x) трудно найти подходящее значение x. Односторонняя функция с люком (или с секретом ) – это особый вид односторонних функций, имеющих некоторый секрет (люк), позволяющий относительно быстро вычислить обратное значение функции. Открытый ключ – ключ, используемый в асимметричных криптографических алгоритмах, который может не храниться в секрете. Присоединяемые цифровые подписи – подписи, вычисленные по хешкоду документа. Такие цифровые подписи представляют собой некоторый числовой код, который необходимо пристыковывать к подписываемому документу. Само сообщение при этом не шифруется и передается в открытом виде вместе с цифровой подписью отправителя. Цифровая (электронная) подпись (digital signature) – уникальное числовое дополнение к передаваемой информации, позволяющее проверить ее авторство. Электронная (цифровая) подпись (ЭЦП) представляет собой последовательность бит фиксированной длины, которая вычисляется определенным образом с помощью содержимого подписываемой информации и секретного ключа. Цифровые подписи с восстановлением документа – подписи, которые как бы содержат в себе подписываемый документ: в процессе проверки подписи автоматически вычисляется и тело документа. Если при расшифровывании сообщение восстановилось правильно, значит, подпись была верной. Краткие итоги Асимметричные алгоритмы шифрования (или алгоритмы с открытым ключом) – криптографические алгоритмы, в которых один ключ 170
Г.В. Басалова Основы криптографии используется для шифрования, а другой, отличный от первого, – для расшифрования. Алгоритмы называются асимметричными, так как ключи шифрования и расшифрования разные, следовательно, отсутствует симметрия основных криптографических процессов. Один из двух ключей является открытым (public key) и может быть объявлен всем, а второй – закрытым (private key) и должен держаться в секрете. Какой из ключей, открытый или закрытый, используется для шифрования, а какой для расшифрования, определяется назначением криптографической системы. Все алгоритмы шифрования с открытым ключом основаны на использовании односторонних функций. Односторонней функцией называется математическая функция, которую относительно легко вычислить, но трудно найти по значению функции соответствующее значение аргумента. Использовать односторонние функции для шифрования сообщений с целью их защиты не имеет смысла, так как обратно расшифровать зашифрованное сообщение уже не получится. Для целей шифрования используются односторонние функции с люком (или с секретом) – особый вид односторонних функций, имеющих некоторый секрет (люк), позволяющий относительно быстро вычислить обратное значение функции. Алгоритмы шифрования с открытым ключом можно использовать для решения следующих задач: 1. Для шифрования передаваемых и хранимых данных в целях их защиты от несанкционированного доступа. 2. Для формирования цифровой подписи под электронными документами. 3. Для распределения секретных ключей, используемых потом при шифровании документов симметричными методами. Цифровая (электронная) подпись – уникальное числовое дополнение к передаваемой информации, позволяющее проверить ее авторство. Электронная (цифровая) подпись (ЭЦП) представляет собой последовательность бит фиксированной длины, которая вычисляется определенным образом с помощью содержимого подписываемой информации и секретного ключа. Различают присоединяемые цифровые подписи и цифровые подписи с восстановлением документа. 171
Г.В. Басалова Основы криптографии Присоединяемые цифровые подписи – подписи, вычисленные по хешкоду документа. Такие цифровые подписи представляют собой некоторый числовой код, который необходимо пристыковывать к подписываемому документу. Само сообщение при этом не шифруется и передается в открытом виде вместе с цифровой подписью отправителя. Цифровые подписи с восстановлением документа – подписи, которые как бы содержат в себе подписываемый документ: в процессе проверки подписи автоматически вычисляется и тело документа. Если при расшифровывании сообщение восстановилось правильно, значит, подпись была верной. Набор для практики Вопросы для самопроверки 1. Чем асимметричные алгоритмы шифрования отличаются от симметричных? 2. Для решения каких задач могут на практике применяться алгоритмы шифрования с открытым ключом? 3. Какие математические функции называются односторонними? Для чего они могут применяться в криптографии? 4. Что такое цифровая подпись? 5. Каков алгоритм формирования цифровой подписи при использовании алгоритмов шифрования с открытым ключом? 6. Каким образом алгоритмы шифрования с открытым ключом могут использоваться для формирования общего секретного ключа у группы пользователей? 7. Какие требования предъявляются к асимметричным алгоритмам? 172
Г.В. Басалова Основы криптографии Основные положения теории чисел, используемые в криптографии с открытым ключом Алгоритмы шифрования с открытым ключом гораздо больше основаны на свойствах математических функций, чем алгоритмы симметричного шифрования, поэтому в этой лекции сформулированы основные математические понятия и факты, необходимые для дальнейшего изучения материала: простые и составные числа; основная теорема арифметики; взаимно простые числа и функция Эйлера; основы арифметики остатков и теории сравнений; малая теорема Ферма; наибольший общий делитель и обобщенный алгоритм Евклида; инверсия по модулю m. Цель лекции: напомнить читателю основные положения теории чисел, используемые в криптографии с открытым ключом Простые и составные числа Каждое натуральное число, большее единицы, делится по крайней мере на два числа: на 1 и на само себя. Если число не имеет делителей, кроме самого себя и единицы, то оно называется простым, а если у числа есть еще делители, то составным. Единица же не считается ни простым числом, ни составным. Например, числа 7, 29 — простые; числа 9, 15 — составные ( 9 делится на 3, 15 делится на 3 и на 5 ). Интересный факт: если два простых числа отличаются на 2, то их называют числами-"близнецами". Чисел-"близнецов" не очень много. Например, "близнецами" являются 5 и 7, 29 и 31, 149 и 151, а также 242 206 083*238 880±1 (наибольшая найденная на момент написания учебного пособия пара "близнецов"). Не о всяком числе можно сразу сказать, простое оно или составное. Если число меньше ста, то, скорее всего мы сразу сможем ответить на этот вопрос. Однако с большими числами дело сложнее. Возьмем, например, число 2009. Простое оно или составное? Попробуем найти возможные делители этого числа среди первых простых чисел. 2009 определенно не делится на 2 (так как оно нечетное), на 3 (так как сумма его цифр 2+9=11 не делится на 3 ), на 5. А вот, попробовав разделить 173
Г.В. Басалова Основы криптографии 2009 на 7, мы увидим, что в результате получается целый результат – 287. Таким образом, получен ответ: число 2009 – составное. В данном случае ответ получен достаточно быстро. Бывает, что проверка на простоту производиться гораздо дольше, а для работы с большими целыми числами требуются даже специальные компьютерные программы. Поиск больших простых чисел имеет важное значение для математики и не только. Например, в криптографии большие простые числа используются в алгоритмах шифрования с открытым ключом. Для обеспечения надежности шифрования там используются простые числа длиной до 1024 бит. Перемножить два числа сравнительно нетрудно, особенно если у нас есть калькулятор, а числа не слишком велики. Существует и обратная задача – задача факторизации – нахождение двух или более чисел, дающих при перемножении заданное число. Эта задача гораздо труднее, чем перемножение чисел, и любому, кто пытался ее решить, об этом известно. Например, если от нас требуется умножить 67 на 113, то результат, 7571, будет получен, наверно, меньше чем за минуту. Если же от нас требуется найти два числа, произведение которых равно 7571, то, скорее всего, это займет у нас гораздо больше времени. Поиск сомножителей числа n может вестись, например, перебором всех простых чисел до как в рассмотренном выше примере с числом 2009. Однако, если множители – большие простые числа, то на их поиск уйдет достаточно много времени. Таким образом, факторизация большого числа требует значительных затрат времени даже в том случае, когда известно, что оно является произведением двух больших простых чисел. Сложность задачи факторизации используется в некоторых криптографических алгоритмах, например, в системе шифрования RSA. Основная теорема арифметики Любое составное число можно составить из некоторого количества 174
Г.В. Басалова Основы криптографии простых с помощью умножения. Например, составное число 2009 можно получить так: 2009 = 7 * 7 * 41 В математике рассматривается так называемая основная теорема арифметики, которая утверждает, что любое натуральное число ( n>1 ) либо само является простым, либо может быть разложено на произведение простых делителей, причем единственным способом (если не обращать внимания на порядок следования сомножителей). Воспользовавшись обозначением степени, разложение числа 2009 на простые множители можно записать так: 2009 = 72 * 41 Разложение на множители называется каноническим, если все множители являются простыми и записаны в порядке возрастания. Например, запишем множители: каноническое разложение числа 150 на 150 = 2 * 3 * 52 Взаимно простые числа и функция Эйлера Два числа называются взаимно простыми, если они не имеют ни одного общего делителя кроме единицы. Например, числа 11 и 12 взаимно просты (у них нет общих делителей кроме единицы), числа 30 и 35 — нет (у них есть общий делитель 5 ). Исследованием закономерностей, связанных с целыми числами, долго занимался швейцарский математик Леонард Эйлер (Leonard Euler). Одним из вопросов, которым он интересовался, был следующий: сколько существует натуральных чисел, не превосходящих n и взаимно простых с n? Ответ на этот вопрос был получен Эйлером в 1763 году и этот ответ связан с каноническим разложением числа n на простые множители. Так, если 175
Г.В. Басалова Основы криптографии где p1, p2, ..., pn – разные простые множители, то число натуральных чисел, не превосходящих n и взаимно простых с n можно точно определить по формуле Число натуральных чисел, не превосходящих n и, взаимно простых с n, называется функцией Эйлера и обозначается Например, найдем количество натуральных чисел, не превосходящих 12 и взаимно простых с 12. Из ряда натуральных чисел 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 взаимно простыми (не имеющими общих делителей) с 12 будут только числа 1, 5, 7, 11. Их количество равно четырем. Таким образом Теперь попробуем подсчитать по формуле, предложенной Эйлером. Для этого вначале запишем каноническое разложение числа 12: 12 = 22 * 3. Теперь подсчитаем функцию Эйлера : Значения, вычисленные путем простого перебора взаимно простых чисел и по формуле Эйлера, совпали. Это неудивительно, так как формула для вычисления функции Эйлера может быть доказана строго 176
Г.В. Басалова Основы криптографии математически. Формулу Эйлера удобно использовать для больших n, если известно разложение числа n на простые множители. Для криптографии формула Эйлера важна тем, что она позволяет легко получить число для простых и некоторых других чисел. В криптографии используются два следующих следствия формулы Эйлера. Следствие 1. Если p – простое число, то Действительно, если p – простое число, то его каноническое разложение состоит только из него самого. Тогда Следствие 2. Пусть р и q — два различных простых ( ). Тогда Эта формула объясняется следующим образом. Пусть р * q = N, где р и q — два различных простых ( ). Тогда Рассмотрим несколько примеров использования следствий формулы Эйлера. Пример 1. Найдем 13 – простое число, значит, используя следствие 1 Мы можем проверить себя (и Эйлера), выписав все числа, меньшие 13: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 177
Г.В. Басалова Основы криптографии и подсчитав все взаимно простые с ним. Их действительно 12. Пример 2. Найдем 35 – составное число, значит, первое следствие нам не подходит. Однако 35 является произведением двух простых чисел: 35 = 5 * 7. Используя следствие 2, вычисляем : Проверяем, выписывая все числа, меньшие 35 и не имеющие с ним общих делителей: 1, 2, 3, 4, 6, 8, 9, 11, 12, 13, 16, 17, 18, 19, 22, 23, 24, 26, 27, 29, 31, 32, 33, 34. Их действительно оказалось 24. На последнем примере видно, что использовать формулу Эйлера гораздо удобнее, чем рассматривать все числа из довольно большого диапазона и проверять на взаимную простоту. Арифметика остатков и теория сравнений Немецкий математик Карл Фридрих Гаусс предложил запись для двух чисел a и b, если они имеют одинаковые остатки от деления на m (читается a сравнимо с b по модулю m ). Например, Сравнения обнаруживают полезные для математиков и криптографов свойства, во многом похожие на свойства равенств. Эти свойства позволяют существенно упрощать арифметические вычисления, если нас интересует только остаток от деления на некоторое число m. Так, например, свойства сравнений полезны при расчетах в алгоритмах шифрования с открытым ключом. 178
Г.В. Басалова Основы криптографии Простейшими свойствами сравнений являются следующие. Свойство 1. Если a-b делится на m, то Например, так как 15 -1 =14, а 14 кратно 7. Свойство 2. Если и то Например, так как и то а Свойство 3. Если то Например, так как то 179 также
Г.В. Басалова Основы криптографии Свойство 4. Если и c взаимно просто с m, то Например, известно, что а так как Свойство 5. Если то Например, если то Малая теорема Ферма В основе алгоритма шифрования по системе RSA лежит теорема, сформулированная в начале семнадцатого столетия без доказательства французским математиком Пьером Ферма (Pierre Fermat). Её часто называют "Малой теоремой Ферма", и её не следует путать с известной 180
Г.В. Басалова Основы криптографии "Великой теоремой Ферма" - её он также сформулировал без доказательства, а доказана она была только в 1993-94 годах. Леонард Эйлер в 1760 году опубликовал доказательство Малой теоремы Ферма и получил ее обобщение, известное под названием теоремы ФермаЭйлера. Именно эта теорема используется в алгоритме зашифрования/ расшифрования RSA. Малая теорема Ферма формулируется следующим образом. Если p простое число, а m - любое число, которое не делится на p, то то есть число mp-1 при делении на p дает остаток 1. Например, пусть р=11, m = 3. Проверим, будет ли 310 mod 11 равно одному: 310 mod 11=32( ((32)2)2mod 11)) = 9(42 mod 11 )= 144 mod 11=1 Обобщение, сформулированное и доказанное Эйлером, справедливо для любого модуля, но в системе RSA используется частный случай, когда модуль является произведением только двух различных простых чисел. Поэтому рассмотрим формулировку теоремы для этого случая. Теорема Ферма-Эйлера (для случая системы RSA). Если p и q - два различных простых числа, а m - любое число, которое не делится на p и q, то Например, пусть р=11, q = 5 (pq = 55), m = 3. Проверим, будет ли равно одному: 340 mod 55 = (35) 4mod 55 = 234 mod 55 = 279841 mod 55 = 1. 181
Г.В. Басалова Основы криптографии Наибольший общий делитель Пусть а и b — два целых положительных числа. Наибольший общий делитель чисел а и b есть наибольшее число с, которое делит и а, и b: с = НОД(a, b). Например, НОД(25,35) =5. Для нахождения наибольшего общего делителя можно использовать следующий алгоритм, известный как алгоритм Евклида. Алгоритм NOD (целые a, b, c); Начало 1. Пока a<>b выполнять: 1.1.Если a>b то a:=a-b, иначе b:= b-a; 2. c:=a; Конец. После выполнения алгоритма результат будет содержаться в переменной с. Поcмотрим, как НОД(18,9): с помощью алгоритма Евклида вычисляется a: 18 9 b: 9 9 c: 9 9 Здесь каждый столбец представляет собой очередную итерацию алгоритма. Процесс продолжается до тех пор, пока b не станет равным a. Тогда в переменную с записывается ответ, в данном случае 9. Это и будет значение НОД(18,9). Обобщенный алгоритм Евклида Для многих криптографических систем, рассмотренных в данной книге, актуален так называемый обобщенный алгоритм Евклида, с которым связана следующая теорема. 182
Г.В. Басалова Основы криптографии Теорема. Пусть а и b — два целых положительных числа. Тогда существуют целые (не обязательно положительные) числа х и у, такие, что ах + by = НОД(a,b). Обобщенный алгоритм Евклида служит для отыскания НОД(a, b) и х, у, удовлетворяющих записанному выше уравнению. Введем три строки U = (u1,u2,u3), V = (v1,v2,v3) и T = (t1,t2,t3). Алгоритм записывается следующим образом (во входных параметрах должно соблюдаться условие a>=b ). Алгоритм OAE (целые a, b); Начало 1. U = (a,1,0), V = (b,0,1). 2. Пока v1 <> 0 выполнять: 2.1. q= u1 div v1; 2.2. T=(u1 mod v1, u2 – qv2, u3 – qv3); 2.3. U=V, V=T. 3. U=(НОД(a,b),x,y)). Конец. После окончания алгоритма результат будет содержаться в строке U. Операция div в алгоритме — это операция целочисленного деления. Пример. Пусть а = 18, удовлетворяющие уравнению b = 9. Найдем числа х и у, 18х +9y = НОД(18,9). Выполним алгоритм по шагам: U V T u1 u2 u3 v1 v2 v3 t1 t2 t3 18 div 9 = 2 18 1 0 9 0 1 18 mod 9 = 0 1 - 2*0 = 1 0 - 2*1 = -2 9 0 1 0 1 -2 q 183
Г.В. Басалова Основы криптографии В результате получили U=(НОД(a,b),x,y))= (9,0,1). Выполним проверку: 18*0 +9*1 = 9 = НОД(18,9). Инверсия по модулю m Во многих задачах криптографии для заданных чисел с, m требуется находить такое число d < m, что cd mod m = 1 Такое d существует тогда и только тогда, когда числа с и m взаимно простые. Число d, удовлетворяющее равенству cd mod m = 1, называется инверсией с по модулю m и часто обозначается с-1 mod m. Данное обозначение для инверсии связано с тем, что равенство cd mod m = 1 можно переписать в виде cс-1 mod m = 1. Таким образом, умножение на с-1 соответствует делению на с при вычислениях по модулю m. Инверсию по модулю m также можно вычислять с помощью обобщенного алгоритма Евклида. Покажем, как это делается. Равенство, приведенное ниже означает, что для некоторого целого k имеет место равенство cd – km = 1. Учитывая, что с и d взаимно просты, можно преобразовать это равенство следующим образом: m(-k) + cd = НОД(m,c). Значит, мы можем вычислить с-1 mod m (или найти число d ) с помощью обобщенного алгоритма Евклида. При этом значение переменной k нас не интересует. Если число d получается отрицательным, то нужно прибавить к нему m, так как по определению число a mod m берется из множества {0,1,..., m - 1}. 184
Г.В. Басалова Основы криптографии 5-1 Рассмотрим пример. Пусть m=9, c=5. Найдем mod 9. Будем выполнять вычисления по обобщенному алгоритму Евклида, записывая все вычисления по шагам. q U V T u1 u2 u3 v1 v2 v3 t1 t2 t3 9 div 5 = 1 9 1 0 5 0 1 9 mod 5 = 4 1 - 1*0 = 1 0-1*1 = -1 5 div 4 =1 5 0 1 4 1 -1 5 mod 4=1 0-1*1=-1 1-1*(-1)=2 4 div 1 =4 4 1 -1 1 -1 2 4 mod 1=0 1-4*(-1)=5 -1-4*2=-9 1 -1 2 0 1 7 Таким образом, получили, что 5-1 mod 9 = 2. Проверим: 5*2 mod 9 =10 mod 9 = 1. Ключевые термины Алгоритм Евклида – математический алгоритм, который может использоваться для нахождения наибольшего общего делителя двух чисел. Взаимно простые числа – числа, не имеющие общих делителей (кроме единицы). Задача факторизации – нахождение двух или более натуральных чисел, дающих при перемножении заданное число. Инверсия по модулю – такое натуральное число, которое при умножении по модулю на данное число дает в результате единицу. Каноническое разложение на множители – такое разложение на множители, при котором все множители являются простыми и записаны в порядке возрастания. Малая теорема Ферма – известная теорема, сформулированная П. Ферма, лежащая в основе алгоритма шифрования по системе RSA Наибольший общий делитель чисел а и b – наибольшее число с, 185
Г.В. Басалова Основы криптографии которое делит и а и b: с = НОД(a, b). Основная теорема арифметики – теорема утверждающая, что любое натуральное число большее единицы либо само является простым, либо может быть разложено на произведение простых делителей, причем единственным способом (если не обращать внимания на порядок следования сомножителей). Простое число – натуральное число, которое не имеет делителей, кроме самого себя и единицы. Составное число – натуральное число, которое делится, помимо самого себя и единицы, еще хотя бы на одно число. Функция Эйлера позволяет подсчитать число натуральных чисел, не превосходящих n и, взаимно простых с n. Обозначается Краткие итоги Криптографические методы с открытым ключом, в большинстве своем, основаны на операциях с большими целыми числами. Каждое натуральное число, большее единицы, делится по крайней мере на два числа: на 1 и на само себя. Если число не имеет делителей, кроме самого себя и единицы, то оно называется простым, а если у числа есть еще делители, то составным. Единица же не считается ни простым числом, ни составным. Для больших чисел задача проверки на простоту может быть достаточно сложной. Также вычислительно сложной является задача факторизации – нахождение двух или более натуральных чисел, дающих при перемножении заданное число. Два числа называются взаимно простыми, если они не имеют ни одного общего делителя кроме единицы. Наибольший общий делитель чисел а и b – наибольшее число с, которое делит и а и b. Для нахождения наибольшего общего делителя можно использовать алгоритм Евклида. 186
Г.В. Басалова Основы криптографии Инверсия по модулю – такое натуральное число, которое при умножении по модулю на данное число дает в результате единицу. Инверсию по модулю m можно вычислять с помощью так называемого обобщенного алгоритма Евклида. Набор для практики Вопросы для самопроверки 1. Дайте определение простого и составного числа. Приведите по три примера простых и составных чисел. 2. Дать определение понятия "взаимно простые числа". Привести примеры взаимно простых чисел и чисел, не являющихся взаимно простыми. 3. Сформулируйте основную теорему арифметики. 4. В чем заключается задача факторизации? 5. Дайте определение наибольшего общего делителя. 6. Сформулируйте алгоритм Евклида для нахождения наибольшего общего делителя двух чисел. 7. Сформулируйте малую теорему Ферма. 8. Сформулируйте теорема Ферма-Эйлера (для случая системы RSA). 9. Сформулируйте обобщенный (расширенный) алгоритм Евклида. 10. Сформулировать принципы выполнения "операции взятия по модулю". Приведите примеры выполнения этой операции и поясните их. 11. Что такое инверсия по модулю n? Упражнения для самопроверки 1. Являются ли простыми числа 37, 59, 111, 231? 2. Являются ли взаимно простыми числа: 16 и 37 16, 37 и 38 5, 9, 27 и 54 2. 4, 7, 15, 59 187 67, 93, 101,
Г.В. Басалова Основы криптографии 3. Определите число натуральных чисел, не превосходящих 59 и, взаимно простых с 59. 4. Определите число натуральных чисел, не превосходящих 143 и, взаимно простых с 143. 5. Определите наибольший общий делитель чисел 187 и 153. 6. Вычислите 38 по модулю 10 38 * 57 по модулю 11. 7. С помощью обобщенного алгоритма Евклида найдите числа х и у, удовлетворяющие уравнению 33х + 16y = НОД(33,16). 8. Вычислите 7-1 mod 10 3-1 mod 11 188
Г.В. Басалова Основы криптографии Криптографические алгоритмы с открытым ключом и их использование В этой лекции изложены наиболее известные криптографические алгоритмы с открытым ключом: RSA, алгоритм Диффи-Хеллмана, алгоритм Эль-Гамаля. Описание каждого из алгоритмов сопровождается подробным примером. Также в этой лекции сформулированы принципы работы криптографических систем на эллиптических кривых. Цель лекции: изучить принципы работы некоторых криптографических алгоритмов с открытым ключом. Алгоритм RSA Основные сведения Алгоритм шифрования с открытым ключом RSA был предложен одним из первых в конце 70-х годов ХХ века. Его название составлено из первых букв фамилий авторов: Р.Райвеста (R.Rivest), А.Шамира (A.Shamir) и Л.Адлемана (L.Adleman). Алгоритм RSA является, наверно, наиболее популярным и широко применяемым асимметричным алгоритмом в криптографических системах. Алгоритм основан на использовании того факта, что задача разложения большого числа на простые сомножители является трудной. Криптографическая система RSA базируется на следующих двух фактах из теории чисел: 1. задача проверки числа на простоту является сравнительно легкой; 2. задача разложения чисел вида n = pq ( р и q — простые числа); на множители является очень трудной, если мы знаем только n, а р и q — большие числа (это так называемая задача факторизации, подробнее о ней см. "Основные положения теории чисел, используемые в криптографии с открытым ключом"). Алгоритм RSA представляет собой блочный алгоритм шифрования, где 189
Г.В. Басалова Основы криптографии зашифрованные и незашифрованные данные должны быть представлены в виде целых чисел между 0 и n -1 для некоторого n. Шифрование Итак, рассмотрим сам алгоритм. Пусть абонент А хочет передать зашифрованное сообщение абоненту Б. В этом случае абонент Б должен подготовить пару (открытый ключ; закрытый ключ) и отправить свой открытый ключ пользователю А. Первым этапом является генерация открытого и закрытого ключей. Для этого вначале выбираются два больших простых числа Р и Q. Затем вычисляется произведение N: N = PQ. После этого определяется вспомогательное число f: f = (Р - l)(Q - 1). Затем случайным образом выбирается число d < f и взаимно простое с f. Далее необходимо найти число е, такое, что еd mod f = 1. Числа d и N будут открытым ключом пользователя, а значение е – закрытым ключом. Таким образом, на этом этапе у пользователя должна быть информация, указанная в следующей таблице: Открытый ключ Закрытый ключ Пользователь системы N, d e Так как пользователь Б хочет получить зашифрованное сообщение от пользователя А, значит пользователь Б должен отправить свой 190
Г.В. Басалова Основы криптографии открытый ключ (d, N) пользователю А. Числа Р и Q больше не нужны, однако их нельзя никому сообщать; лучше всего их вообще забыть. На этом этап подготовки ключей закончен и можно использовать основной протокол RSA для шифрования данных. Второй этап – шифрование данных. Если абонент А хочет передать некоторые данные абоненту Б, он должен представить свое сообщение в цифровом виде и разбить его на блоки m1, m2, m3, ... , где mi < N. Зашифрованное сообщение будет состоять из блоков с i. Абонент А шифрует каждый блок своего сообщения по формуле ci = mid mod N используя открытые параметры пользователя Б, и пересылает зашифрованное сообщение С=(с1, с2, с3, ...) по открытой линии. Абонент В, получивший зашифрованное сообщение, расшифровывает все блоки полученного сообщения по формуле mi = ce mod N Все расшифрованные блоки будут точно такими же, как и исходящие от пользователя А. Злоумышленник, перехватывающий все сообщения и знающий всю открытую информацию, не сможет найти исходное сообщение при больших значениях Р и Q. Пример вычислений по алгоритму Пусть пользователь А хочет передать пользователю Б сообщение. В этом случае вначале пользователь Б должен подготовить открытый и закрытый ключи. Пусть им выбраны, например, следующие параметры: 191
Г.В. Басалова Основы криптографии Р = 3, Q = 11, N = 3x11 = 33. Тогда f = (Р - l)(Q - 1) = (3-1)(11-1) = 20. Затем пользователь Б выбирает любое число d, не имеющее общих делителей с f (это необходимо для того, чтобы зашифрованное сообщение можно было потом однозначно восстановить). Пусть d = 13. Это число будет одним из компонентов открытого ключа. Далее необходимо найти число е, которое можно будет использовать в качестве закрытого ключа для расшифрования сообщения. Значение е должно удовлетворять соотношению еd mod f = 1. Для малых значений f число е можно найти подбором. В общем случае для поиска е можно использовать обобщенный алгоритм Евклида, приведенный в "Основные положения теории чисел, используемые в криптографии с открытым ключом". В нашем случае подходит е=17. (Проверяем: 13*17 mod 20 = 221 mod 20 = 1.) Теперь пользователь Б должен запомнить свой закрытый ключ 17, отправить открытый ключ (13, 33) пользователю А и уничтожить числа Р = 3 и Q = 11. Пользователь А, получивший открытый ключ (13, 33), увидев, что N=33, разбивает исходное сообщение на три блока, причем значение каждого меньше N. Например, пусть имеется три блока m 1=8, m2=27, m3,=5. Затем пользователь А шифрует каждый блок: c1=813 mod 33 = 17 c2 = 2713 mod 33 = 15 c3 = 513 mod 33 = 26 Зашифрованное сообщение, состоящее из трех блоков (17, 15, 26), передается пользователю Б, который, используя свой закрытый ключ е = 17 и N=33, расшифровывает сообщение: 192
Г.В. Басалова m1 = 1717 mod Основы криптографии 33 = 8 m2 = 1517 mod 33 = 27 m3 = 2617 mod 33 = 5 Таким образом, абонент Б расшифровал сообщение от абонента А. Вопросы практического использования алгоритма RSA На протяжении многих лет алгоритм RSA активно используется как в виде самостоятельных криптографических продуктов, так и в качестве встроенных средств в популярных приложениях. Открытое шифрование на базе алгоритма RSA применяется в популярном пакете шифрования PGP, операционной системе Windows, различных Интернет-браузерах, банковских компьютерных системах. Кроме того, различные международные стандарты шифрования с открытым ключом и формирования цифровой подписи используют RSA в качестве основного алгоритма. Для обеспечения высокой надежности шифрования необходимо, чтобы выступающее в качестве модуля число N было очень большим – несколько сотен или тысяч бит. Только в этом случае будет практически невозможно по открытым параметрам определить закрытый ключ. Так, известно, что в конце 1995 года удалось практически реализовать раскрытие шифра RSA для 500-значного модуля. Для этого с помощью сети Интернет было задействовано более тысячи компьютеров. Сами авторы RSA рекомендовали использовать следующие размеры модуля N: 768 бит - для частных лиц; 1024 бит - для коммерческой информации; 2048 бит - для особо секретной информации. С момента получения их рекомендаций прошло какое-то время, поэтому современные пользователи должны делать поправки в сторону увеличения размера ключей. Однако, чем больше размер ключей, тем медленнее работает система. Поэтому увеличивать размер ключа без необходимости не имеет смысла. С размером ключей связан и другой аспект реализации RSA вычислительный. При использовании алгоритма вычисления 193
Г.В. Басалова Основы криптографии необходимы как при создании ключей, так и при шифровании/ расшифровании, при этом, чем больше размер ключей, тем труднее производить расчеты. Для работы с громадными числами приходится использовать аппарат длинной арифметики. Числа, состоящие из многих сотен бит, не умещаются в регистры большинства микропроцессоров и их приходится обрабатывать по частям. При этом как шифрование, так и расшифрование включают возведение большого целого числа в целую степень по модулю N. При прямых расчетах промежуточные значения были бы невообразимыми. Чтобы упростить процесс вычислений используют специальные алгоритмы для работы с большими числами, основанные на свойствах модульной арифметики, а также оптимизацию при возведении в степень. Алгоритм RSA реализуется как программным, так и аппаратным путем. Многие мировые фирмы выпускают специализированные микросхемы, производящие шифрование алгоритмом RSA. Программные реализации значительные медленнее, чем аппаратные. К достоинствам программного шифрования RSA относится возможность гибкой настройки параметров, возможность интеграции в различные программные пакеты. В целом, и программная, и аппаратная реализации RSA требуют для выполнения примерно в тысячи раз большего времени по сравнению с симметричными алгоритмами, например ГОСТ 28147-89. Алгоритм RSA может использоваться для формирования электронной цифровой подписи, а также и для обмена ключами. Возможность применения алгоритма RSA для получения электронной подписи связана с тем, что секретный и открытый ключи в этой системе равноправны. Каждый из ключей, d или e, могут использоваться как для шифрования, так и для расшифрования. Это свойство выполняется не во всех криптосистемах с открытым ключом. Использование алгоритма RSA для формирования ЭЦП рассматривается в "Электронная цифровая подпись". Алгоритм Диффи-Хеллмана Основные сведения 194
Г.В. Басалова Основы криптографии Первая публикация данного алгоритма появилась в 70-х годах ХХ века в статье Диффи и Хеллмана, в которой вводились основные понятия криптографии с открытым ключом. Алгоритм Диффи-Хеллмана не применяется для шифрования сообщений или формирования электронной подписи. Его назначение – в распределении ключей. Он позволяет двум или более пользователям обменяться без посредников ключом, который может быть использован затем для симметричного шифрования. Это была первая криптосистема, которая позволяла защищать информацию без использования секретных ключей, передаваемых по защищенным каналам. Схема открытого распределения ключей, предложенная Диффи и Хеллманом, произвела настоящую революцию в мире шифрования, так как снимала основную проблему классической криптографии – проблему распределения ключей. Алгоритм основан на трудности вычислений дискретных логарифмов. Попробуем разобраться, что это такое. В этом алгоритме, как и во многих других алгоритмах с открытым ключом, вычисления производятся по модулю некоторого большого простого числа Р. Вначале специальным образом подбирается некоторое натуральное число А, меньшее Р. Если мы хотим зашифровать значение X, то вычисляем Y = AX mod P. Причем, имея Х, вычислить Y легко. Обратная задача вычисления X из Y является достаточно сложной. Экспонента X как раз и называется дискретным логарифмом Y. Таким образом, зная о сложности вычисления дискретного логарифма, число Y можно открыто передавать по любому каналу связи, так как при большом модуле P исходное значение Х подобрать будет практически невозможно. На этом математическом факте основан алгоритм Диффи-Хеллмана для формирования ключа. Формирование общего ключа Пусть два пользователя, которых условно назовем пользователь 1 и пользователь 2, желают сформировать общий ключ для алгоритма 195
Г.В. Басалова Основы криптографии симметричного шифрования. Вначале они должны выбрать большое простое число Р и некоторое специальное число А, 1 < A < P-1, такое, что все числа из интервала [1, 2, ..., Р-1] могут быть представлены как различные степени А mod Р. Эти числа должны быть известны всем абонентам системы и могут выбираться открыто. Это будут так называемые общие параметры. Затем первый пользователь выбирает число Х1 (X1<P), которое желательно формировать с помощью датчика случайных чисел. Это будет закрытый ключ первого пользователя, и он должен держаться в секрете. На основе закрытого ключа пользователь 1 вычисляет число которое он посылает второму абоненту. Аналогично поступает и второй пользователь, генерируя Х 2 и вычисляя Это значение пользователь 2 отправляет первому пользователю. После этого у пользователей должна быть информация, указанная в следующей таблице: Общие параметры Открытый ключ Закрытый ключ Y1 Х1 Пользователь 1 Р, А Y2 Х2 Пользователь 2 Из чисел Y1 и Y2, а также своих закрытых ключей каждый из абонентов может сформировать общий секретный ключ Z для сеанса симметричного шифрования. Вот как это должен сделать первый пользователь: Никто другой кроме пользователя 1 этого сделать не может, так как число Х1 секретно. Второй пользователь может получить то же самое 196
Г.В. Басалова Основы криптографии число Z, используя свой закрытый ключ и открытый ключ своего абонента следующим образом: Если весь протокол формирования общего секретного ключа выполнен верно, значения Z у одного и второго абонента должны получиться одинаковыми. Причем, что самое важное, противник, не зная секретных чисел Х1 и Х2, не сможет вычислить число Z. Не зная Х1 и Х2, злоумышленник может попытаться вычислить Z, используя только передаваемые открыто Р, А, Y1 и Y2. Безопасность формирования общего ключа в алгоритме Диффи-Хеллмана вытекает из того факта, что, хотя относительно легко вычислить экспоненты по модулю простого числа, очень трудно вычислить дискретные логарифмы. Для больших простых чисел размером сотни и тысячи бит задача считается неразрешимой, так как требует колоссальных затрат вычислительных ресурсов. Пользователи 1 и 2 могут использовать значение Z в качестве секретного ключа для шифрования и расшифрования данных. Таким же образом любая пара абонентов может вычислить секретный ключ, известный только им. Пример вычислений по алгоритму Пусть два абонента, желающие обмениваться через Интернет зашифрованными сообщениями, решили сформировать секретный ключ для очередного сеанса связи. Пусть они имеют следующие общие параметры: Р = 11, А = 7. Каждый абонент выбирает секретное число Х и соответствующее ему открытое число Y. Пусть выбраны Х1 = 3, Х2= 9. Вычисляем 197 вычисляет
Г.В. Басалова Y1 = 73 mod Основы криптографии 11 = 2, Y2= 79 mod 11 = 8. Затем пользователи обмениваются открытыми ключами Y1 и Y2. После этого каждый из пользователей может вычислить общий секретный ключ: пользователь 1: Z = 83 mod 11 = 6. пользователь 2: Z = 29 mod 11 = 6. Теперь они имеют общий ключ 6, который не передавался по каналу связи. Вопросы практического Диффи-Хеллмана использования алгоритма Для того, чтобы алгоритм Диффи-Хеллмана работал правильно, то есть оба пользователя, участвующих в протоколе, получали одно и то же число Z, необходимо правильным образом выбрать число А, используемое в вычислениях. Число А должно обладать следующим свойством: все числа вида A mod P, A2 mod P, A3 mod P,... , AP-1 mod P должны быть различными и состоять из целых положительных значений в диапазоне от 1 до Р-1 с некоторыми перестановками. Только в этом случае для любого целого Y < Р и значения A можно найти единственную экспоненту Х, такую, что Y = AХmod P, где 0 <= X <= (P - 1) При произвольно заданном Р задача выбора параметра А может оказаться трудной задачей, связанной с разложением на простые множители числа Р-1. На практике можно использовать следующий подход, рекомендуемый специалистами. Простое число Р выбирается таким, чтобы выполнялось равенство Р = 2q + l, где q — также 198
Г.В. Басалова Основы криптографии простое число. Тогда в качестве А можно взять любое число, для которого справедливы неравенства 1<A<P-1 и Aq mod P ≠ 1 На подбор подходящих параметров А и Р необходимо некоторое время, однако это обычно не критично для системы связи и не замедляет ее работу. Эти параметры являются общими для целой группы пользователей. Они обычно выбираются один раз при создании сообщества пользователей, желающих использовать протокол ДиффиХеллмана, и не меняются в процессе работы. А вот значения закрытых ключей рекомендуется каждый раз менять и выбирать их с помощью генераторов псевдослучайных чисел. Следует заметить, что данный алгоритм, как и все алгоритмы асимметричного шифрования, уязвим для атак типа "man-in-the-middle" ("человек в середине"). Если противник имеет возможность не только перехватывать сообщения, но и заменять их другими, он может перехватить открытые ключи участников, создать свою пару открытого и закрытого ключа и послать каждому из участников свой открытый ключ. После этого каждый участник вычислит ключ, который будет общим с противником, а не с другим участником. Способы предотвращения такой атаки и некоторых других рассмотрены в конце этой лекции. Алгоритм Эль-Гамаля Основные сведения Асимметричный алгоритм, предложенный в 1985 году Эль-Гамалем (T. ElGamal), универсален. Он может быть использован для решения всех трех основных задач: для шифрования данных, для формирования цифровой подписи и для согласования общего ключа. Кроме того, возможны модификации алгоритма для схем проверки пароля, доказательства идентичности сообщения и другие варианты. Безопасность этого алгоритма, так же как и алгоритма ДиффиХеллмана, основана на трудности вычисления дискретных логарифмов. 199
Г.В. Басалова Основы криптографии Этот алгоритм фактически использует схему Диффи-Хеллмана, чтобы сформировать общий секретный ключ для абонентов, передающих друг другу сообщение, и затем сообщение шифруется путем умножения его на этот ключ. И в случае шифрования, и в случае формирования цифровой подписи каждому пользователю необходимо сгенерировать пару ключей. Для этого, так же как и в схеме Диффи-Хеллмана, выбираются некоторое большое простое число Р и число А, такие, что различные степени А представляют собой различные числа по модулю Р. Числа Р и А могут передаваться в открытом виде и быть общими для всех абонентов сети. Затем каждый абонент группы выбирает свое секретное число Хi, 1 < Хi < Р-1, и вычисляет соответствующее ему открытое число . Таким образом, каждый пользователь может сгенерировать закрытый ключ Х i и открытый ключ Yi. Информация о необходимых параметрах системы сведена в следующую таблицу. Общие параметры Открытый ключ Закрытый ключ Y1 Х1 Пользователь 1 … Р, А Пользователь i … Yi … Хi Шифрование Теперь рассмотрим, каким образом производится шифрование данных. Сообщение, предназначенное для шифрования, должно быть представлено в виде одного числа или набора чисел, каждое из которых меньше Р. Пусть пользователь 1 хочет передать пользователю 2 сообщение m. В этом случае последовательность действий следующая. 1. Первый пользователь выбирает случайное число k, взаимно простое с Р-1, и вычисляет числа 200
Г.В. Басалова Основы криптографии где Y2 – открытый ключ пользователя 2. Число k держится в секрете. 2. Пара чисел (r, е), являющаяся шифротекстом, передается второму пользователю. 3. Второй пользователь, получив (r,e), для расшифрования сообщения вычисляет где Х2 – закрытый ключ пользователя 2. В результате он получает исходное сообщение m. Если злоумышленник узнает или перехватит Р, А, Y2, r, e, то он не сможет по ним раскрыть m. Это связано с тем, что противник не знает параметр k, выбранный первым пользователем для шифрования сообщения m. Вычислить каким-либо образом число k практически невозможно, так как это задача дискретного логарифмирования. Следовательно, злоумышленник не может вычислить и значение m, так как m было умножено на неизвестное ему число. Противник также не может воспроизвести действия законного получателя сообщения (второго абонента), так как ему не известен закрытый ключ Х2 (вычисление Х2 на основании Y2 — также задача дискретного логарифмирования). По аналогичному алгоритму может производиться и согласование ключа, используемого для симметричного шифрования больших объемов данных. Более того, алгоритм Эль-Гамаля на практике целесообразно использовать именно для согласования общего ключа сессии, а не прямого шифрования больших сообщений. Это связано с тем, что в алгоритме используются операции возведения в степень и умножения по большому модулю. Так же как и в алгоритмах RSA и Диффи-Хеллмана, операции производятся над большими, состоящими из нескольких сотен или тысяч бит, числами. Поэтому шифрование больших сообщений производится крайне медленно. Пример шифрования 201
Г.В. Басалова Основы криптографии Пусть два абонента, обменивающиеся через Интернет зашифрованными сообщениями, имеют следующие общие параметры: Р = 11, А = 7. Кроме того, пользователи 1 и 2 имеют пары закрытых и открытых ключей, вычисляемые также, как в п. 5.3.3: Пользователь 1: закрытый ключ Х1= 3, открытый ключ Y1 = 73 mod 11 = 2, Пользователь 2: закрытый ключ Х2 = 9, открытый ключ Y2 = 79mod 11 = 8. Первый абонент желает передать второму сообщение. Для этого первый абонент запрашивает из центра распределения ключей открытый ключ второго абонента Y2 = 8. Теперь он может зашифровать свое сообщение, которое в числовом виде пусть имеет значение m=9. Первый абонент выбирает случайно число k, например k = 7. Число k должно быть взаимно простым с Р-1. Значение k = 7 не имеет общих делителей с Р-1=10, значит, оно нам подходит. Первый абонент шифрует свое сообщение по формулам: r = Ak mod P = 77 mod 11=6 e = m * Y2k mod P = 9 * 87 mod 11 = 7 Пара чисел (6, 7) будет представлять собой шифротекст и передается второму пользователю. Второй пользователь, получив (6,7) и используя свой закрытый ключ Х 2 = 9 для расшифрования сообщения, вычисляет В результате он действительно получает исходное сообщение m. Криптографические системы на эллиптических кривых В 1985 году американские ученые Н. Коблиц (Neal Koblitz) и В. Миллер (Victor Miller) предложили использовать для криптосистем с открытым 202
Г.В. Басалова Основы криптографии ключом теорию эллиптических кривых. Дальнейшие исследования подтвердили наличие подходящих свойств у этих математических функций и привели к созданию реальных криптографических систем, использующих математический аппарат эллиптических кривых. С 1998 года использование эллиптических кривых для решения криптографических задач, таких, как цифровая подпись, было закреплено в стандартах США ANSI X9.62 и FIPS 186-2, а в 2001 году аналогичный стандарт, ГОСТ Р34.10-2001, был принят и в России. Основное достоинство криптосистем на эллиптических кривых состоит в том, что по сравнению с другими асимметричными криптосистемами, рассмотренными нами ранее, они обеспечивают существенно более высокую криптостойкость при равных затратах на обработку и вычисления. Это объясняется тем, что вычисление обратных функций на эллиптических кривых значительно сложнее, чем, например, вычисление дискретных логарифмов (алгоритмы Диффи-Хеллмана и Эль-Гамаля) или решение задачи факторизации (алгоритм RSA). В результате тот уровень стойкости, который достигается, скажем, в RSA при использовании 1024-битовых модулей, в системах на эллиптических кривых реализуется при размере модуля 160 бит, что обеспечивает более простую как программную, так и аппаратную реализацию. Криптография эллиптических кривых использует достаточно сложный аппарат высшей алгебры, поэтому мы, в рамках данного учебного пособия, не сможем подробно рассмотреть используемые на практике алгоритмы и выполнить соответствующие примеры вычислений. Сформулируем основные принципы построения криптографических систем с использованием эллиптических кривых. В криптографии используются эллиптические кривые на плоскости, определяемые уравнениями вида Y2= X3+ аХ + b mod р, где р – некоторое большое простое число, а a и b – константы. График эллиптической кривой при разных значениях параметров а и b имеет вид, как на рис. 11.1. 203
Г.В. Басалова Основы криптографии Рис. 11.1. Варианты графиков эллиптических кривых Принцип использования эллиптических кривых следующий. Для группы пользователей выбирается общая эллиптическая кривая Е и некоторая точка G на ней. Закрытым ключом пользователя выступает некоторое целое число с, а открытым – точка D на кривой Е, полученная в результате специального преобразования композиции с использованием числа с. Параметры кривой и список открытых ключей абонентов, как и обычно, передаются всем пользователям сети. Открытые и закрытые ключи пользователей используются для выполнения операций шифрования и расшифрования в зависимости от назначения алгоритма. С помощью эллиптических кривых могут быть реализованы многие известные протоколы с открытым ключом. Любая криптосистема, основанная на дискретном логарифмировании, легко может быть перенесена на эллиптические кривые. Например, можно заменить математические операции вида у = gхmod р на операции математического аппарата эллиптических кривых (операции вычисления композиции точек) в алгоритмах формирования ключа Диффи-Хеллмана или вычисления цифровой подписи Эль-Гамаля. В результате получатся те же алгоритмы, но с другими математическими операциями. Несмотря на сложность математического аппарата эллиптических кривых, существуют эффективные вычислительные методы, позволяющие достаточно быстро реализовывать необходимые расчеты. 204
Г.В. Басалова Основы криптографии За счет использования модуля меньшей длины операции генерации ключей и шифрования выполняются быстрее, чем, скажем, в алгоритме RSA или классическом алгоритме Диффи-Хеллмана. Криптографические методы на эллиптических кривых считаются перспективными и, закрепленные в различных стандартах, находят применение в современных системах защиты информации. Возможные атаки при использовании алгоритмов асимметричного шифрования Атака "человек-в-середине" Попробуем проанализировать простейший протокол шифрования с открытым ключом, рассмотренный в "Введение в криптографию с открытым ключом", с точки зрения возможности проведения злоумышленником различных атак. Вспомним, что этот протокол предусматривал следующие действия пользователей. Если пользователь А желает передать секретное сообщение пользователю Б так, чтобы никто другой не смог его прочитать, он должен получить от пользователя Б открытый ключ UБ и зашифровать свое сообщение этим открытым ключом. Зашифрованное сообщение может пересылаться по любому каналу связи, например, по электронной почте. Получив сообщение от пользователя А, пользователь Б может расшифровать его своим закрытым ключом RБ. Такая процедура обмена зашифрованными сообщениями с использованием асимметричного алгоритма не позволит противнику, контролирующему открытый канал связи, по перехваченным открытым ключам и зашифрованным сообщениям восстановить исходные сообщения. Это обеспечивается свойствами односторонней функции, а именно, сложностью вычисления обратной функции. Однако такая схема уязвима для атак типа "man-in-the-middle" ( "человекв-середине" ). Эта атака заключается в следующем. Допустим, злоумышленник может не только перехватывать сообщения, но и заменять их другими, т.е. имеет возможность осуществлять активную атаку. Это вполне возможно в современных сетях передачи данных, например в Интернете, где информация от одного пользователя 205
Г.В. Басалова Основы криптографии передается другому через множество промежуточных узлов, не контролируемых этими пользователями. Злоумышленником может быть, например, системный администратор сети. Такой нарушитель может не только перехватывать сообщения пользователей, но изменять, удалять или заменять их своими. Он может выдавать себя за одного из участников сеанса связи. Вот как может производиться атака "man-in-themiddle": 1. Пользователь Б посылает пользователю А свой открытый ключ UБ. Противник перехватывает этот ключ, сохраняет его и заменяет его своим открытым ключом UП. 2. Пользователь А шифрует свое сообщение М полученным открытым ключом UП, предполагая, что использует открытый ключ абонента Б, и пересылает зашифрованное сообщение пользователю Б. 3. Злоумышленник перехватывает это сообщение, расшифровывает его своим закрытым ключом RП, читает или меняет, а затем зашифровывает открытым ключом пользователя Б и посылает пользователю Б. Аналогично взломщик перехватит и открытый ключ пользователя А, чтобы читать ответы пользователя Б. В результате нарушитель сможет читать (а, возможно, и изменять) всю корреспонденцию абонентов. Пользователи А и Б, скорее всего, ничего не заподозрят, так как у них нет способа проверить, действительно ли они общаются друг с другом. На практике разработано несколько способов предотвращения атаки "man-in-the-middle". Один из способов заключается в разделении каждого зашифрованного сообщения на две части, каждая из которых бесполезна без другой. Части сообщения пересылаются по очереди и не могут быть расшифрованы по отдельности. Вот как может выглядеть этот протокол для обмена сообщениями между двумя пользователями А и Б: 1. Пользователи А и Б обмениваются открытыми ключами. 2. Пользователь А шифрует свое сообщение открытым ключом пользователя Б и пересылает половину зашифрованного сообщения пользователю Б. 3. Пользователь Б шифрует свое сообщение открытым ключом 206
Г.В. Басалова Основы криптографии пользователя А и пересылает половину зашифрованного сообщения пользователю А. 4. Пользователь А пересылает вторую половину зашифрованного сообщения пользователю Б. 5. Пользователь Б соединяет обе полученные половины сообщения от пользователя А и расшифровывает его своим закрытым ключом. Затем посылает вторую половину своего зашифрованного сообщения пользователю А. 6. Пользователь А складывает полученные от пользователя Б половины сообщения и расшифровывает его своим закрытым ключом. Этот усовершенствованный протокол не позволит злоумышленнику читать или изменять корреспонденцию пользователей А и Б. Нарушитель, как и раньше, может подменить открытые ключи абонентов, а также перехватить передаваемые между ними данные. Однако, получив на шаге 2 протокола в свое распоряжение первую половину зашифрованного сообщения от А к Б, он не сможет расшифровать ее своим закрытым ключом и снова зашифровать открытым ключом абонента Б. Абоненты А и Б тоже не смогут прочитать сообщения до окончания протокола (шагов 5 и 6), но в этом нет ничего плохого, так как в результате они получат корректную корреспонденцию. Для осуществления протокола процесс разделения сообщения на две части может производиться разными способами, например, каждый нечетный байт помещается в первое сообщение, а каждый четный – во второе или как-то иначе. Атаки "человек-в-середине" можно избежать и другими способами, например, добавляя к передаваемым открытым ключам цифровые подписи специального удостоверяющего центра. Атака на основе выбранного открытого текста Алгоритмы с открытым ключом чувствительны к атакам по выбранному открытому тексту. Как известно, такая атака имеет место, если криптоаналитик имеет возможность не только использовать предоставленные ему пары "текст-шифротекст", но и сам формировать нужные ему тексты и шифровать их. 207
Г.В. Басалова Основы криптографии Факт возможности проведения атаки по выбранному открытому тексту объясняется следующим образом. Предположим, мы используем асимметричный алгоритм F для согласования общего секретного ключа. Пусть один из абонентов отправил другому 64-битовый сеансовый ключ K, зашифрованный открытым ключом y другого абонента C=F(K, y). Злоумышленник, перехватив зашифрованное сообщение С, не сможет его, конечно, дешифровать, так как не имеет закрытого ключа x. Однако нарушитель может поступить по-другому, а именно, попытаться подобрать подходящее значение К. Для этого нужно зашифровать все возможные 64-битовые комбинации открытых текстов открытым ключом y и сравнить результаты с С. Это возможно, так значения y и C передавались в открытом виде. Особенно актуальна угроза такой атаки, если число возможных исходных сообщений не очень велико, например, если длина исходного сообщения мала или если не все исходные тексты допустимы на практике. Для того, чтобы избежать возможности такой атаки, используют рандомизированные (или вероятностные) алгоритмы шифрования и формирования ЭЦП с открытым ключом. Такие алгоритмы шифруют одно и то же сообщение при наличии одинакового ключа каждый раз по-разному, так как используют некоторый случайный элемент. Примерами рандомизированных алгоритмов с открытым ключом могут служить алгоритмы Эль-Гамаля и алгоритмы формирования ЭЦП по ГОСТ Р34.10. Другим вариантом предотвращения атаки на основе выбранного открытого текста является добавление в шифруемое сообщение некоторой дополнительной "случайной" информации, например, метки даты времени. Ключевые термины Алгоритм RSA – алгоритм шифрования с открытым ключом. Название алгоритма составлено из первых букв фамилий авторов: Р.Райвеста (R.Rivest), А.Шамира (A.Shamir) и Л.Адлемана (L.Adleman). Алгоритм RSA основан на сложности задачи факторизации больших чисел. Данный алгоритм является, возможно, наиболее популярным и широко применяемым асимметричным алгоритмом в криптографических 208
Г.В. Басалова Основы криптографии системах. Алгоритм Диффи-Хеллмана – алгоритм шифрования с открытым ключом. Этот алгоритм основан на трудности вычислений дискретных логарифмов. Алгоритм Диффи-Хеллмана может использоваться для распределения ключей, которые могут быть использованы для симметричного шифрования. Алгоритм Эль-Гамаля – алгоритм шифрования с открытым ключом, основанный на трудности вычислений дискретных логарифмов. Алгоритм Эль-Гамаля может быть использован для шифрования данных, для формирования цифровой подписи и для согласования общего ключа. Этот алгоритм фактически использует схему ДиффиХеллмана, чтобы сформировать общий секретный ключ для абонентов, передающих друг другу сообщение, и затем сообщение шифруется путем умножения его на этот ключ. Атака "человек-в-середине" (англ. "man-in-the-middle") – термин в криптографии, обозначающий ситуацию, когда атакующий способен читать и видоизменять по своей воле сообщения, которыми обмениваются корреспонденты, причём ни один из последних не может догадаться о его присутствии в канале связи. Криптосистемы на эллиптических кривых – группа алгоритмов с открытым ключом, использующих в качестве математического аппарата свойства эллиптических кривых на плоскости. Краткие итоги Алгоритм RSA – алгоритм шифрования с открытым ключом. Алгоритм RSA основан на сложности задачи факторизации больших чисел. Математические основы алгоритма RSA следующие. Выбираются два больших простых числа Р и Q и вычисляется произведение N = PQ. После этого определяется вспомогательное число f = (Р - l)(Q 1). Затем случайным образом выбирается число d < f и взаимно простое с f. Далее необходимо найти число е, такое, что еd mod f = 1. Числа d и N будут открытым ключом пользователя, а значение е – закрытым ключом. Шифруемое сообщение должно быть представлено в 209
Г.В. Басалова Основы криптографии цифровом виде и разбито на блоки m1, m2, m3, ... , где mi < N. Зашифрованное сообщение будет состоять из блоков ci = mid mod N. Расшифровывание производится по формуле mi = ce mod N. Алгоритм RSA может использоваться для шифрования данных небольшого размера, формирования электронной цифровой подписи, а также и в протоколах обмена ключами для симметричных систем шифрования. Алгоритм Диффи-Хеллмана – алгоритм шифрования с открытым ключом. Этот алгоритм основан на трудности вычислений дискретных логарифмов. Алгоритм Диффи-Хеллмана может использоваться для распределения ключей. Принцип работы алгоритма следующий. Вначале выбираются большое простое число Р и число А, 1 < A < P-1, такое, что все числа из интервала [1, 2, ..., Р-l] могут быть представлены как различные степени А mod Р. Это – общие параметры. Затем два пользователя выбирают себе закрытые ключи Х1 и Х2 (Xi<P). На основе закрытых ключей пользователи вычисляют открытые ключи , которыми они обмениваются. Из чисел Y1 и Y2, а также своих закрытых ключей каждый из абонентов может сформировать общий секретный ключ Z для сеанса симметричного шифрования: . Алгоритм Эль-Гамаля может быть использован для шифрования данных, для формирования цифровой подписи и для согласования общего ключа. Этот алгоритм фактически использует схему ДиффиХеллмана, чтобы сформировать общий секретный ключ для абонентов, передающих друг другу сообщение, и затем сообщение шифруется путем умножения его на этот ключ. Общими открытыми параметрами в криптосистеме системе Эль-Гамаля являются числа Р (большое простое число) и А (А< P). Закрытыми ключами абонентов являются числа Хi, 1 < Х i < Р-1, открытыми ключами – значения . Пользователь, передающий сообщение, выбирает случайное число k, взаимно простое с Р-1, и вычисляет числа . Пара чисел (r, 210 е),
Г.В. Басалова Основы криптографии являющаяся шифротекстом, передается другому пользователю. Для расшифрования сообщения необходимо вычислить . В результате получается исходное сообщение m. Криптосистемы на эллиптических кривых – самая молодая группа алгоритмов с открытым ключом, использующих в качестве математического аппарата свойства эллиптических кривых на плоскости. Основное отличие таких систем состоит в том, что по сравнению с асимметричными криптосистемами, предложенными ранее, они обеспечивают существенно более высокую криптостойкость при равных затратах на обработку и вычисления. Это объясняется тем, что вычисление обратных функций на эллиптических кривых значительно сложнее, чем, например, вычисление дискретных логарифмов или решение задачи факторизации. В результате тот уровень стойкости, который достигается, скажем, в RSA при использовании 1024-битовых модулей, в системах на эллиптических кривых реализуется при размере модуля 160 бит, что обеспечивает более простую как программную, так и аппаратную реализацию. Несмотря на достаточную надежность алгоритмов шифрования с открытым ключом, существует возможность проведения атак в системах, использующих асимметричное шифрование. Это связано с тем, что атака может быть направлена не на сам алгоритм шифрования, а на протокол, использующий этот алгоритм. Для исключения возможностей проведения различных атак в системах шифрования с открытым ключом применяют специальные меры, например, заверяют открытые ключи пользователей цифровыми подписями удостоверяющего центра или добавляют к шифруемым сообщениям некоторую случайную информацию. Набор для практики Вопросы для самопроверки 1. Для каких целей может применяться алгоритм RSA? 2. Опишите процесс шифрования с использованием алгоритма RSA. 211
Г.В. Басалова Основы криптографии 3. Для каких целей может применяться алгоритм Диффи-Хеллмана? 4. Опишите последовательность действий при использовании алгоритма Диффи-Хеллмана. 5. Для каких целей может применяться алгоритм Эль-Гамаля?. 6. Опишите последовательность действий при использовании алгоритма Эль-Гамаля. 7. Какие атаки возможны при использовании алгоритмов шифрования с открытым ключом? Упражнения для самопроверки 1. Пусть пользователь А хочет передать пользователю Б сообщение m=10, зашифрованное с помощью алгоритма RSA. Пользователь Б имеет следующие параметры: P=7, Q=11, d=47. Опишите процесс передачи сообщения m пользователю Б. 2. Пользователю системы RSA с параметрами N = 33, d = 3 передано зашифрованное сообщение c = 13. Расшифруйте это сообщение, взломав систему RSA пользователя. 3. Вычислите закрытые ключи Y1, Y2 и общий ключ Z для системы Диффи-Хеллмана с параметрами А=3, Р=7, Х 1=3, Х2=6. 4. В системе связи, применяющей шифр Эль-Гамаля, пользователь 1 желает передать сообщение m пользователю 2. Найдите недостающие параметры при следующих заданных параметрах P = 19, A = 2, Х2 = 3, k = 5, m = 10. 212
Г.В. Басалова Основы криптографии Электронная цифровая подпись Из этой лекции читатель может узнать основные подходы к формированию цифровой подписи на основе различных алгоритмов с открытым ключом. Кроме того, в лекции рассматриваются отечественные и зарубежные стандарты на алгоритмы цифровой подписи, применяемые в настоящее время. Цель лекции: познакомиться с некоторыми алгоритмами формирования и проверки электронной цифровой подписи (ЭЦП, ЭП). Электронная подпись на основе алгоритма RSA Рассмотренная нами в "Криптографические алгоритмы с открытым ключом и их использование"схема использования алгоритма RSA при большом модуле N практически не позволяет злоумышленнику получить закрытый ключ и прочитать зашифрованное сообщение. Однако она дает возможность злоумышленнику подменить сообщение от абонента А к абоненту Б, так как абонент А шифрует свое сообщение открытым ключом, полученным от Б по открытому каналу связи. А раз открытый ключ передается по открытому каналу, любой может получить его и использовать для подмены сообщения. Избежать этого можно, используя более сложные протоколы, например, следующий. Пусть, как и раньше, пользователь А хочет передать пользователю В сообщение, состоящее из нескольких блоков mi. Перед началом сеанса связи абоненты генерируют открытые и закрытые ключи, обозначаемые, как указано в следующей таблице: Открытый ключ Закрытый ключ eA Пользователь А NA, dA Пользователь Б NБ, dБ eБ В результате каждый пользователь имеет свои собственные открытый (состоящий из двух частей) и закрытый ключи. Затем пользователи обмениваются открытыми ключами. Это подготовительный этап протокола. 213
Г.В. Басалова Основы криптографии Основная часть протокола состоит из следующих шагов. 1. Сначала пользователь А вычисляет числа , то есть шифрует сообщение своим закрытым ключом. В результате этих действий пользователь А подписывает сообщение. 2. Затем пользователь А вычисляет числа , то есть шифрует то, что получилось на шаге 1 открытым ключом пользователя Б. На этом этапе сообщение шифруется, чтобы никто посторонний не мог его прочитать. 3. Последовательность чисел g i передается к пользователю Б. 4. Пользователь Б получает gi и вначале вычисляет последовательно числа , используя свой закрытый ключ. При этом сообщение расшифровывается. 5. Затем Б определяет числа , используя открытый ключ пользователя А. За счет выполнения этого этапа производится проверка подписи пользователя А. В результате абонент Б получает исходное сообщение и убеждается в том, что его отправил именно абонент А. Данная схема позволяет защититься от нескольких видов возможных нарушений, а именно: пользователь А не может отказаться от своего сообщения, если он признает, что секретный ключ известен только ему; нарушитель без знания секретного ключа не может ни сформировать, ни сделать осмысленное изменение сообщения, передаваемого по линии связи. Данная схема позволяет избежать многих конфликтных ситуаций. Иногда нет необходимости зашифровывать передаваемое сообщение, но нужно его скрепить электронной подписью. В этом случае из приведенного выше протокола исключаются шаги 2 и 4, то есть текст шифруется закрытым ключом отправителя, и полученная последовательность присоединяется к документу. Получатель с помощью открытого ключа отправителя расшифровывает прикрепленную подпись, которая, по сути, является зашифрованным повторением основного сообщения. Если расшифрованная подпись 214
Г.В. Басалова Основы криптографии совпадает с основным текстом, значит, подпись верна. Существуют и другие варианты применения алгоритма RSA для формирования ЭЦП. Например, можно шифровать (то есть подписывать) открытым ключом не само сообщение, а хеш-код от него. Возможность применения алгоритма RSA для получения электронной подписи связана с тем, что секретный и открытый ключи в этой системе равноправны. Каждый из ключей, d или e, могут использоваться как для шифрования, так и для расшифрования. Это свойство выполняется не во всех криптосистемах с открытым ключом. Алгоритм RSA можно использовать также и для обмена ключами. Цифровая подпись на основе алгоритма Эль-Гамаля Принцип создания и проверки подписи Алгоритм Эль-Гамаля также можно использовать для формирования цифровой подписи. Группа пользователей выбирает общие параметры Р и А. Затем каждый абонент группы выбирает свое секретное число Хi, 1 < Хi< Р-1, и вычисляет соответствующее ему открытое число . Таким образом, каждый пользователь получает пару (закрытый ключ; открытый ключ) = (Хi, Yi). Открытые ключи пользователей могут храниться в общей базе системы распределения ключей и при необходимости предоставляться всем абонентам системы. Сообщение, предназначенное для подписи, должно быть представлено в виде числа, меньшего модуля Р. При большом размере сообщение разбивается на блоки необходимого размера. В некоторых случаях подписывается не само сообщение, а значение хеш-функции от него. В любом варианте цифровая подпись вычисляется в зависимости от некоторого числа m (m < P). Пусть пользователь 1 хочет подписать свое сообщение цифровой подписью и передать его пользователю 2. В этом случае алгоритм 215
Г.В. Басалова Основы криптографии действий следующий. 1. Первый пользователь выбирает случайное секретное число k, взаимно простое с Р-1, и вычисляет число 2. Затем с помощью расширенного алгоритма Евклида необходимо найти значение b в следующем уравнении: m = (X1 * a +k * b) mod (P-1) Пара чисел (a, b) будет цифровой подписью сообщения m. 3. Сообщение m вместе с подписью (a, b) отправляется пользователю 2. 4. Пользователь 2 получает сообщение m и с использованием открытого ключа первого абонента Y1 вычисляет два числа по следующим формулам: Если с1 = с2, то цифровая подпись первого пользователя верная. Для подписывания каждого нового сообщения должно каждый раз выбираться новое значение k. Подписи, созданные с использованием алгоритма Эль-Гамаля, называются рандомизированными, так как для одного и того же сообщения с использованием одного и того же закрытого ключа каждый раз будут создаваться разные подписи (a,b), поскольку каждый раз будет использоваться новое значение k. Подписи, созданные с применением алгоритма RSA, называются детерминированными, так как для одного и того же сообщения с использованием одного и того же закрытого ключа каждый раз будет создаваться одна и та же подпись. Пример вычисления и проверки цифровой подписи Пусть абоненты, обменивающиеся через Интернет зашифрованными сообщениями, имеют следующие общие параметры: Р = 11, А = 7. Один из пользователей этой системы связи хочет подписать свое сообщение m=5 цифровой подписью, сформированной по алгоритму 216
Г.В. Басалова Основы криптографии Эль-Гамаля. Вначале он должен выбрать себе закрытый ключ, например, Х1=3 и сформировать открытый ключ Y1 = 73 mod 11 = 2. Открытый ключ может быть передан всем заинтересованным абонентам или помещен в базу данных открытых ключей системы связи. Затем пользователь выбирает случайное секретное число k, взаимно простое с Р-1. Пусть k=9 ( 9 не имеет общих делителей с 10 ). Далее необходимо вычислить число После этого с помощью расширенного алгоритма Евклида находится значение b в уравнении: Решением последнего уравнения будет значение b=9. Таким образом, пара чисел (8, сообщения m=5. 9) будет цифровой подписью Если любой другой пользователь сети желает проверить цифровую подпись в сообщении, он должен получить из базы данных открытый ключ первого пользователя (он равен 2 ), вычислить два числа с1 и с2 и сравнить их. Так как с1 = с2, то цифровая подпись первого пользователя в сообщения m=5 верная. Стандарты на алгоритмы цифровой подписи Стандарт цифровой подписи DSS 217
Г.В. Басалова Основы криптографии Во многих странах сегодня существуют стандарты на электронную (цифровую) подпись. Стандарт цифровой подписи DSS (Digital Signature Standard – DSS) был принят в США в 1991 году и пересмотрен в 1994 году. В основе стандарта лежит алгоритм, называемый DSA (Digital Signature Algorithm) и являющийся вариацией подписи Эль-Гамаля. В алгоритме используется однонаправленная хеш-функция H(m). В качестве хэш-алгоритма стандарт DSS предусматривает использование алгоритма SHA-1. Рассмотрим сам алгоритм генерации ЭЦП. Вначале для группы абонентов выбираются три общих (несекретных) параметра р, q и a: параметр р должен быть простым числом длиной от 512 до 1024 бит. q – простое число длиной 160 бит; между p и q должно выполняться соотношение p = bq + 1 для некоторого целого b. Старшие биты в р и q должны быть равны единице (таким образом 2159 < q < 2160 ). число а, удовлетворяющее неравенству 1 < a < p-1 и являющееся корнем уравнения a q mod p = 1. Зная эти числа, каждый абонент системы случайно выбирает число х, удовлетворяющее неравенству 0 < х < q, и вычисляет y = ax mod p. Число х будет секретным ключом пользователя, а число у — открытым ключом. Вычислить у по известному х довольно просто. Однако, имея открытый ключ у, вычислительно невозможно определить х, который является дискретным логарифмом у по основанию a. Предполагается, что открытые ключи всех пользователей указываются в некотором несекретном, но "сертифицированном" справочнике, который должен быть у всех, кто собирается проверять подписи. На этом этап выбора параметров заканчивается, и абоненты готовы к тому, чтобы формировать и проверять подписи. Пусть имеется сообщение m, которое один из пользователей желает 218
Г.В. Басалова Основы криптографии подписать. Для генерации подписи пользователь должен выполнить следующие действия: 1. Вычислить значение хеш-функции h = H(m) для сообщения m. Значение хеш-функции должно лежать в пределах 0 < h < q. 2. Затем сгенерировать случайное число k, 0 < k < q. 3. Вычислить r = (ak mod p) mod q. 4. Определить s = [k-1}(H(m) + x * r)] mod q В результате пользователь получит для сообщения m подпись, состоящую из пары чисел (r,s). Сообщение вместе с подписью может быть послано любому другому абоненту системы. Проверить подпись можно следующим образом: 1. Вычислить значение хеш-функции h = H(m) для сообщения m. 2. Проверить выполнение неравенств 0 < r < q, 0 < s < q. 3. Вычислить w = s-1 mod q ; u1 = [H(m) * w] mod q u2 = r * w mod q v = [(аu1 * yu2) mod p] mod q 4. Проверить выполнение равенства v = r. Если v = r, то подпись считается подлинной, иначе подпись считается недействительной. В силу сложности вычисления дискретных логарифмов злоумышленник не может восстановить k из r или х из s, а следовательно, не может подделать подпись. По той же самой причине автор сообщения не сможет отказаться от своей подписи, так как никто кроме него не знает закрытого ключа х. Стандарт цифровой подписи ГОСТ Р34.10-94 В России принят стандарт ГОСТ Р34.10-94 "Информационная технология. Криптографическая защита информации. Процедуры 219
Г.В. Басалова Основы криптографии выработки и проверки электронной цифровой подписи на базе асимметричного криптографического алгоритма". В этом стандарте используется алгоритм, аналогичный алгоритму, реализованному в стандарте DSS. Рассмотрим вначале полностью алгоритм, описанный в ГОСТ Р34.10-94, а затем отметим его отличия от алгоритма DSA. Вначале, так же как и по стандарту DSS, для группы абонентов выбираются три общих (несекретных) параметра р, q и a: параметр р должен быть простым числом длиной от 512 до 1024 бит. Старший бит в р должен быть равен единице. q – простое число длиной 254-256 бит; так же как и в DSA, q должно быть делителем числа (р-1). Старший бит в q должен быть равен единице. число а, удовлетворяющее неравенству 1 < a < p-1 и являющееся корнем уравнения a q mod p = 1. Затем каждый пользователь может сформировать закрытый и открытый ключи. В качестве закрытого ключа выбирается произвольное число х, 0 < x < q. Открытым ключом является число y, получаемое по формуле y = аx mod p Для создания каждой новой подписи каждый раз выбирается новое случайное число k, 0 < k < q. Подпись сообщения m состоит из двух чисел (r, s), вычисляемых по следующим формулам: r = (аk mod p) mod q, s = (k * H(m) + x * r) mod q, где H(m) – результат вычисления хеш-функции для сообщения m. На этом формирование подписи закончено, и сообщение m вместе с ЭЦП (r,s) может быть отправлено получателю. Теперь отметим отличия алгоритма формирования ЭЦП по ГОСТ Р34.10-94 от алгоритма DSS. 220
Г.В. Басалова Основы криптографии 1. Перед вычислением подписи исходное сообщение обрабатывается разными функциями хеширования: в ГОСТ Р34.10-94 применяется отечественный стандарт на хеш-функцию ГОСТ Р34.11-94, в DSS используется SHA-1, которые имеют разную длину хеш-кода. Отсюда и разные требования на длину простого числа q: в ГОСТ Р34.10-94 длина q должна быть от 254 до 256 бит, а в DSS длина q должна быть от 159 до 160 бит. 2. По-разному вычисляется компонента s подписи. В ГОСТ Р34.10-94 компонента s вычисляется по формуле s = (k * H(m) + x * r) mod q, а в DSS компонента s вычисляется по формуле s = [k-1 (H(m) + x * r)] mod q. Последнее отличие приводит к соответствующим отличиям в формулах для проверки подписи. В результате процедура проверки подписи по ГОСТ Р34.10-94 заключается в следующем. Получив [m, (r, s)], получатель вычисляет w = H(m)-1mod q, u1 = w * s mod q, u2 = (q-r) * w mod q, v = [(аu1 * yu2) mod p] mod q. Затем проверяется равенство вычисленного значения v и полученного в составе ЭЦП параметра r. Подпись считается корректной, если v = r. В алгоритме создания ЭЦП по ГОСТ Р34.10-94, так же как и в алгоритме DSS, производятся достаточно сложные вычисления, требующие затрат вычислительных ресурсов. Для ускорения процесса генерации подписей по этим алгоритмам можно заранее вычислять некоторое количество значений параметра r, не зависящего от подписываемого сообщения. Затем эти значения можно использовать 221
Г.В. Басалова Основы криптографии по мере необходимости для подписи документов. Для алгоритма DSS заранее может вычисляться и значение k -1. Пример создания и проверки подписи по стандарту ГОСТ Р34.10-94 Пусть p = 23, q = 11, a =6 (проверяем: 611 mod 23 = 1 ) Создание подписи. Предположим, пользователь А выбрал в качестве закрытого ключа число х=8. После этого он вычисляет открытый ключ по формуле y = аx mod p. То есть y = 68 mod 23 = 18. Для создания подписи пользователь А выбирает случайное число k = 5. Пусть результат вычисления хеш-функции для сообщения H(m) = 9. Подпись сообщения состоит из двух чисел (r, s): r = (аkmod p) mod q = (65 mod 23) mod 11 = 2, s = (k* H(m) + x * r) mod q = (5 * 9 + 8 * 2) mod 11 = 6, Таким образом, подпись сообщения состоит из пары чисел (2, 6). Проверка подписи. Получив сообщение вместе с подписью (2, 6), получатель вычисляет w = H(m)-1mod q = H(m)-1mod q = 9-1mod 11 = 5, u1 = w * s mod q = 5 * 6 mod 11 = 8, u2 = (q-r) * w mod q = (11-2) * 5 mod 11 = 1, v = [(аu1 * yu2) mod p] mod q =[(68 * 181) mod 23] mod 11 = 2 Так как v = r, то подпись считается верной. 222
Г.В. Басалова Основы криптографии Подписи, созданные с использованием стандартов ГОСТ Р34.10 или DSS, так же, как и подписи, полученные по алгоритму Эль-Гамаля, являются рандомизированными, так как для одинаковых сообщений с использованием одного и того же закрытого ключа х каждый раз будут создаваться разные подписи (r,s) благодаря использованию разных случайных значений k. Новый отечественный стандарт ЭЦП В 2001 г. был принят новый отечественный стандарт на алгоритм формирования и проверки ЭЦП. Его полное название следующее: "ГОСТ Р34.10-2001. Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи". Данный алгоритм был разработан главным управлением безопасности связи Федерального агентства правительственной связи и информации при Президенте Российской Федерации при участии Всероссийского научно-исследовательского института стандартизации. Новый стандарт разрабатывался с целью обеспечения большей стойкости алгоритма генерации ЭЦП. В основе ГОСТ Р34.10-2001 лежат алгоритмы с использованием операций на эллиптических кривых. Стойкость ГОСТ Р34.10-2001 основывается на сложности взятия дискретного логарифма в группе точек эллиптической кривой, а также на стойкости хэш-функции по ГОСТ Р34.11-94. Размер формируемой цифровой подписи – 512 бит. В целом алгоритм вычислений по алгоритму ГОСТ Р34.10-2001 аналогичен применяемому в предыдущем стандарте ГОСТ Р34.10-94. Сначала генерируется случайное число k, с его помощью вычисляется компонента r подписи. Затем на основе компоненты r, числа k, значения секретного ключа и хэш-значения подписываемых данных формируется s-компонента ЭЦП. При проверке же подписи аналогичным образом проверяется соответствие определенным соотношениям r, s, открытого ключа и хэш-значения информации, подпись которой проверяется. Подпись считается неверной, если соотношения неверны. 223
Г.В. Басалова Основы криптографии Старый ГОСТ Р34.10-94 не отменен, и в настоящее время параллельно действуют два отечественных стандарта на ЭЦП. Однако необходимо отметить, что для прежнего ГОСТа принято ограничение: при реализации ЭЦП по стандарту ГОСТ Р34.10-94 разрешено использовать только 1024-битные значения параметра p. Использование математического аппарата группы точек эллиптической кривой в новом ГОСТ Р34.10-2001 позволяет существенно сократить порядок модуля p без потери криптостойкости. Так, в стандарте указано, что длина числа р может быть 256 или больше бит. Симметричная или асимметричная криптография? Однозначного ответа на вопрос о том, какие алгоритмы симметричные или асимметричные - предпочтительнее, конечно же, нет. Основным достоинством симметричной криптографии является высокая скорость обработки данных. Проблемы криптосистем с закрытым ключом обсуждались подробно в лекции 8. Попробуем теперь оценить особенности алгоритмов шифрования с открытым ключом. Главным достоинством асимметричной криптографии является отсутствие необходимости в предварительном доверенном обмене ключевыми элементами при организации секретного обмена сообщениями. К основным недостаткам асимметричных криптосистем, мешающим им вытеснить симметричные методы шифрования, относят следующие. 1. Алгоритмы с открытым ключом работают намного (в сотни раз) медленнее классических алгоритмов с закрытым ключом. Это их самый главный недостаток. Связан он с тем, что основной операцией в системах с открытым ключом является возведение в степень по большому модулю 500-1000 битовых чисел, что при программной реализации производится намного медленнее, чем шифрование того же объема данных классическими способами. 2. Алгоритмы с открытым ключом требуют обеспечения достоверности открытых ключей, что порой превращается в довольно сложную задачу. То же самое относится и к протоколам цифровой подписи. Для управления открытыми ключами 224
Г.В. Басалова Основы криптографии используют специальную инфраструктуру открытых ключей, обеспечивающую функции управления открытыми ключами. 3. Алгоритмы с открытым ключом чувствительны к атакам по выбранному открытому тексту. Таким образом, с практической точки зрения системы с открытым ключом и асимметричным шифрованием целесообразно использовать лишь для распределения секретных ключей и организации цифровых подписей, так как для решения этих задач не требуется шифрования больших блоков данных. Использование асимметричных алгоритмов позволяет создавать сеансовые ключи шифрования, которые удаляются после окончания сеанса связи. Это значительно снижает риск вскрытия зашифрованных сообщений, так как, если каждое передаваемое сообщение шифруется уникальным сеансовым ключом, задача взломщика существенно усложняется. Причем пользователям совсем необязательно выполнять протокол обмена ключом перед симметричным шифрованием. Вот возможный вариант протокола передачи зашифрованных данных одновременно с передачей ключа. 1. Пользователь А генерирует случайный сеансовый ключ К и зашифровывает им с помощью симметричного алгоритма Fсим свое сообщение M: Cт = Fсим (M, K) 2. Пользователь А получает из базы данных открытый ключ U пользователя Б и зашифровывает им сеансовый ключ К: Ck = Fасим (К, U) 3. Пользователь А посылает своему абоненту зашифрованное сообщение Cт и зашифрованный сеансовый ключ Ck. Для защиты от вскрытия "человек-в-середине" передаваемые данные могут быть дополнены цифровой подписью. 4. Пользователь Б расшифровывает полученный сеансовый ключ Ck с помощью своего закрытого ключа R: 225
Г.В. Басалова K = Fасим Основы криптографии -1(Ck, R) 5. Пользователь Б расшифровывает сеансового ключа К: сообщение с помощью M = Fсим -1 (Cт, K) Такая криптографическая система называется смешанной, так как в ней используется и асимметричное, и симметричное шифрование. Смешанные криптосистемы широко применяются на практике: в банковских и платежных сетях передачи данных, в мобильной связи, в системах электронной почты и др. Для лучшего обеспечения безопасности они могут быть дополнены цифровыми подписями пользователей и удостоверяющего центра, метками времени. Цифровая подпись в сочетании с открытым распределением ключей позволяют организовывать защищенный обмен электронными документами. Управление открытыми ключами Благодаря асимметричной криптографии проблема распределения секретных ключей, рассмотренная нами в "Поточные шифры и генераторы псевдослучайных чисел. Часть 2", была решена, вернее, ликвидирована, однако, появилась новая проблема – проблема подтверждения подлинности открытых ключей. Эта проблема заключается в том, что, получая открытый ключ некоторого абонента А, пользователь должен быть уверен, что ключ принадлежит именно абоненту А, а не кому-то другому. Дело в том, что в исходном виде система распределения ключей, предлагавшаяся Диффи и Хеллманом, давала возможность проведения различного рода атак, основанных на перехвате и подмене открытых ключей абонентов. Так, например, в "Криптографические алгоритмы с открытым ключом и их использование"нами была рассмотрена атака "человек-в-середине", позволявшая злоумышленнику осуществлять полный контроль над передаваемой в системе связи информацией. На практике возможны и другие более сложные варианты атак, связанные с подменой открытых ключей абонентов, отказом от закрытого ключа, дублированием сообщений и т.д. 226
Г.В. Басалова Основы криптографии Большую роль в решении проблемы сертификации открытых ключей сыграло создание цифровой подписи. В системах связи с большим количеством абонентов, применяющих асимметричные криптосистемы, стали использовать специальные организационные структуры, выполняющие функции управления ключами абонентов и занимающиеся сертификацией открытых ключей. Эти организационные структуры играют роль доверенной третьей стороны и заверяют открытые ключи абонентов своими цифровыми подписями. Таким образом, в распределенных системах связи, использующих криптосистемы с открытыми ключами, вводится понятие инфраструктуры открытых ключей (Public Key Infrastructure - PKI), включающей комплекс программно-аппаратных средств, а также организационно-технических и административных мероприятий, обеспечивающих абонентам системы связи необходимый сервис для управления их открытыми ключами. Основным элементом инфраструктуры открытых ключей является центр сертификации ( удостоверяющий центр ) (Certification authority, CA), который обеспечивает контроль за выполнением всех процедур, связанных с изготовлением, регистрацией, хранением и обновлением ключей, сертификатов открытых ключей и списков отозванных сертификатов. Сертификат представляет собой информацию, заверенную цифровой подписью центра, и включающую открытый ключ и другие данные об абоненте. Такими данными являются, например, идентификатор алгоритма электронной подписи, имя удостоверяющего центра, срок годности сертификата, имя пользователя, которому принадлежит сертификат. Международный стандарт ISO X.509 определяет структуру сертификатов открытых ключей и правила их использования для аутентификации в распределенных системах связи. Сертификат обладает следующими свойствами: каждый пользователь центра сертификации, имеющий доступ к открытому ключу центра, может извлечь открытый ключ, включенный в сертификат; ни одна сторона, помимо центра сертификации, не может изменить сертификат так, чтобы это не было обнаружено (сертификаты нельзя подделать). 227
Г.В. Басалова Основы криптографии Так как сертификаты не могут быть подделаны, их можно опубликовать, поместив в общедоступный справочник. Каждый пользователь системы связи может быть владельцем одного или нескольких сертификатов, сформированных удостоверяющим центром. Открытый ключ абонента может быть извлечен из сертификата любым пользователем, знающим открытый ключ администратора удостоверяющего центра. В качестве администратора центра сертификации выступает обычно не физическое лицо (человек), а высокопроизводительная автоматизированная система. В распределенных системах связи с большим числом абонентов может быть создано несколько центров сертификации. Центры сертификации объединяются в древовидную структуру, в корне которой находится главный удостоверяющий центр. Главный центр выдает сертификаты подчиненным ему центрам сертификации, тем самым заверяя открытые ключи этих центров. Открытый ключ пользователя формируется на основе закрытого ключа. Каждый пользователь должен хранить свой закрытый ключ таким образом, чтобы никто другой не смог узнать его значение. Если же у владельца ключа есть основания полагать, что ключ стал известен комулибо еще, то такой закрытый ключ считается скомпрометированным, и потерпевший, допустивший компрометацию своего ключа, должен оповестить всех остальных абонентов системы связи, что его открытый ключ следует считать недействительным. Сертификаты открытых ключей имеют период действия, однако любой сертификат может быть выведен из обращения (отозван) до истечения этого периода, если соответствующий сертификату секретный ключ пользователя скомпрометирован или скомпрометирован ключ удостоверяющего центра, использованный при формировании сертификата. Удостоверяющий центр должен информировать своих абонентов об отозванных сертификатах. Для этой цели он поддерживает список отозванных сертификатов или список отмены. При такой организации администратор удостоверяющего центра не имеет доступа к секретным ключам пользователей, а значит, и к защищаемой с их помощью информации. Администратор может лишь подменить в справочнике сертификатов открытые ключи одного из 228
Г.В. Басалова Основы криптографии абонентов или включить фиктивного абонента, от его имени войти в контакт и получить предназначенное ему сообщение. Для исключения таких конфликтов может применяться следующая схема подготовки и рассылки ключей. 1. Администратор удостоверяющего центра генерирует пару (закрытый ключ, открытый ключ) и сообщает свой открытый ключ всем своим абонентам. 2. Пользователь А выбирает закрытые ключи для выполнения операций шифрования и формирования ЭЦП, а также вычисляет соответствующие открытые ключи. 3. Открытые ключи шифрования и подписи зашифровываются открытым ключом администратора и предъявляются в удостоверяющий центр для регистрации. 4. Администратор удостоверяющего центра проверяет (расшифровывает своим закрытым ключом) открытые ключи пользователя А; изготавливает и подписывает сертификаты открытых ключей пользователя А и помещает их в справочники открытых ключей шифрования и открытых ключей подписей. Каждый из справочников предоставляется в распоряжение абонентов удостоверяющего центра. 5. Любой пользователь системы может извлечь из справочника сертификат необходимого абонента, проверить подпись администратора под сертификатом (расшифровать его открытым ключом администратора) и извлечь открытый ключ. Такая схема подготовки и распределения открытых ключей выглядит несколько тяжеловесной, однако она защищает абонентов системы связи от разнообразных конфликтных ситуаций. На практике рассмотренная схема дополняется метками времени в цифровых подписях, проверками дополнительных полей в сертификатах (например, срока действия) и другими проверками, повышающими безопасность функционирования всей системы в целом. Необходимо отметить, что в настоящее время в связи с широким использованием асимметричных криптоалгоритмов для банковских, платежных и других систем инфраструктура открытых ключей постоянно совершенствуется. 229
Г.В. Басалова Основы криптографии Ключевые термины DSS (Digital Signature Standard) – стандарт США на цифровую подпись. В основе стандарта лежит алгоритм, называемый DSA (Digital Signature Algorithm) и являющийся вариацией подписи Эль-Гамаля. ГОСТ Р34.10-2001 – новый российский стандарт на алгоритм формирования и проверки ЭЦП. Основан на сложности взятия дискретного логарифма в группе точек эллиптической кривой, а также на стойкости хэш-функции по ГОСТ Р34.11-94. Размер формируемой цифровой подписи – 512 бит. ГОСТ Р34.10-94 – российский стандарт на алгоритм формирования и проверки ЭЦП, действующий с 1995 года. В стандарте используется модификация схемы шифрования с открытым ключом Эль-Гамаля и алгоритм выработки хэш-функции по ГОСТ Р34.11-94. Инфраструктура открытых ключей – комплекс программно-аппаратных средств, организационно-технических и административных мероприятий, обеспечивающих абонентам системы связи необходимый сервис для управления их открытыми ключами. Сертификат открытого ключа – информация, заверенная цифровой подписью центра, и включающая открытый ключ и другие данные об абоненте (идентификатор алгоритма электронной подписи, имя удостоверяющего центра, срок годности сертификата, имя пользователя, которому принадлежит сертификат и др). Центр сертификации – организация или подразделение организации, которая выпускает сертификаты ключей электронной цифровой подписи и отвечает за управление ключами пользователей. Открытые ключи и другая информация о пользователях хранится удостоверяющими центрами в виде цифровых сертификатов. Краткие итоги Для формирования электронной цифровой подписи могут быть применены алгоритмы RSA, Эль-Гамаля и другие. Во многих странах сегодня существуют стандарты на электронную цифровую подпись. Так, 230
Г.В. Басалова Основы криптографии в Российской Федерации действуют стандарты на алгоритмы формирования и проверки ЭЦП ГОСТ Р34.10-94 и ГОСТ Р34.10-2001. В системах связи с большим количеством абонентов, применяющих асимметричные криптосистемы, стали использовать специальные организационные структуры, выполняющие функции управления ключами абонентов и занимающиеся сертификацией открытых ключей. Эти организационные структуры играют роль доверенной третьей стороны и заверяют открытые ключи абонентов своими цифровыми подписями. Основным элементом инфраструктуры открытых ключей является центр сертификации (удостоверяющий центр), который обеспечивает контроль за выполнением всех процедур, связанных с изготовлением, регистрацией, хранением и обновлением ключей, сертификатов открытых ключей и списков отозванных сертификатов. Сертификат открытого ключа представляет собой информацию, заверенную цифровой подписью центра, и включающую открытый ключ и другие данные об абоненте. В целом, системы с открытым ключом и асимметричным шифрованием целесообразно использовать лишь для распределения секретных ключей и организации цифровых подписей, так как для решения этих задач не требуется шифрования больших блоков данных. Шифрование больших массивов данных обычно выполняется симметричными алгоритмами, скорость работы которых значительно выше, чем скорость алгоритмов с открытым ключом. Такие криптографические системы называются смешанными, так как в них используется и асимметричное, и симметричное шифрование. Смешанные криптосистемы широко применяются на практике: в банковских и платежных сетях передачи данных, в мобильной связи, в системах электронной почты и др. Для лучшего обеспечения безопасности они могут быть дополнены цифровыми подписями пользователей и удостоверяющего центра, метками времени. Цифровая подпись в сочетании с открытым распределением ключей позволяют организовывать защищенный обмен электронными документами. Набор для практики 231
Г.В. Басалова Основы криптографии Вопросы для самопроверки 1. Какие асимметричные алгоритмы и как могут применяться для формирования и проверки электронной цифровой подписи? 2. Опишите процесс создания и проверки цифровой подписи с использованием различных асимметричных алгоритмов. 3. Какие стандарты действуют на алгоритмы формирования и проверки электронной цифровой подписи в России? 4. Какие цифровые подписи называются рандомизированными? 5. В чем заключается проблема сертификации открытых ключей? 6. Что включается в понятие инфраструктуры открытых ключей? 7. Каковы функции центра сертификации открытых ключей? 8. Что такое сертификат открытого ключа? 9. Какая схема распределения открытых ключей абонентов может использоваться в системе связи, имеющей в своем составе центр сертификации открытых ключей? Упражнения для самопроверки 1. Абоненты некоторой сети применяют цифровую подпись по стандарту ГОСТ Р34.10-94 с общими параметрами p = 47, q = 23, a = 37. Найдите открытый ключ абонента Петрова для Х = 8. 2. Абоненты некоторой сети применяют цифровую подпись по стандарту ГОСТ Р34.10-94 с общими параметрами p = 47, q = 23, a = 7. Найдите открытый ключ абонента Петрова и вычислите его цифровую подпись для Х = 8, k = 7, h = 10. 3. Абоненты некоторой сети применяют цифровую подпись по алгоритму Эль-Гамаля с общими параметрами Р = 17, А = 3. Найдите открытый ключ абонента Петрова для Х = 11. 4. Абоненты некоторой сети применяют цифровую подпись по алгоритму Эль-Гамаля с общими параметрами Р = 17, А = 3. Найдите открытый ключ абонента Петрова и вычислите его цифровую подпись для Х = 3, k = 7, m = 11. 232
Г.В. Басалова Основы криптографии Совершенно секретные системы Основные положения теории информации, используемые в криптографии, были сформулированы в середине ХХ века К. Шенноном. В частности он показал, что теоретически возможны так называемые совершенно секретные криптографические системы, которые не могут быть "взломаны". В этой лекции мы познакомимся с основными идеями теории Шеннона и узнаем, как рассчитываются энтропия и неопределенность сообщений, норма языка, избыточность сообщений и расстояние единственности шифра. Цель лекции: познакомиться с основными положениями теории информации, используемыми в криптографии и с принципами построения совершенно секретных систем. Основные положения теории информации, используемые в криптографии, были сформулированы в середине ХХ века. Большой вклад в эти исследования внес американский ученый К. Шеннон. Для исследования принципов передачи информации по коммуникационным каналам Шеннон предложил вероятностный подход к оценке количества передаваемой информации. Кроме того, он показал, что в принципе возможны так называемые совершенно секретные криптографические системы, которые не могут быть "взломаны". Рассмотрим основные идеи теории Шеннона. Основные подходы к измерению информации Вопросы получения, обработки, передачи и защиты информации тесно связаны с проблемой ее количественного измерения. Выделяют несколько различных подходов к решению подобной проблемы, одним из которых является так называемый статистический (или алфавитный ) подход. Его суть заключается в том, что количественная оценка объема передаваемой информации осуществляется на основе анализа статистических характеристик источника информации. В этом способе учитывается способ представления информации с помощью какоголибо языка. Очевидно, что информационная ценность некоторого сообщения связана с разнообразием вариантов генерируемых сообщений, или, 233
Г.В. Басалова Основы криптографии другими словами, с разнообразием состояний источника информации. Ввиду этого можно считать, что объем информации, передаваемый отдельным сообщением, пропорционален общему числу N различных сообщений (или числу состояний источника информации). На практике, однако, в качестве меры информационной емкости принимается не само число N, а логарифм по основанию 2 от него: Данная формула позволяет получить результат в битах. Подобная мера получила название формально-логической логарифмической меры информации, или меры информации по Хартли. Для однобуквенных сообщений N равно числу букв в алфавите информационного устройства. В частности, при числе букв равном двум количество информации I = log 22 = 1 биту Например, рассмотрим источник, который генерирует сообщения, состоящие из одиночных букв русского языка, в алфавите которого 33 буквы. Определим, сколько информации несет отдельное сообщение, состоящее из одной буквы: При таком подходе для определения количества информации в некотором сообщении надо количество символов в нем умножить на количество информации, содержащееся в одном символе, то есть на его информационный вес. Подсчитаем, какое количество информации несет сообщение, состоящее из четырех букв русского алфавита: Таким образом, при алфавитном подходе объем информации в сообщении оценивается не по смыслу сообщения, а по статистическим характеристикам (количеству символов). 234
Г.В. Басалова Основы криптографии Мера Хартли не всегда является верной характеристикой сообщения, так как подразумевает равную вероятность любого из возможных сообщений. Так как ценность информации заключается в устранении имеющейся неопределенности, сообщения, имеющие высокую вероятность, менее ценны. Их можно в какой-то степени предвидеть заранее. И наоборот, маловероятные сообщения представляют большую ценность. Поэтому иногда используют другой способ количественной оценки информации, учитывающий вероятности генерации конкретных сообщений, – меру информации по Шеннону. Этот метод измерения информации называют также содержательным подходом. Согласно этому методу состояние источника информации до получения сообщения потребителем характеризуется некоторой неопределенностью. При этом получение информации снимает эту неопределенность (полностью или частично): I = H нач - Н кон где H нач – неопределенность, характеризующая источник сообщений до получения сообщения, а Н кон – неопределенность после получения сообщения. Неопределенность состояния источника информации оценивается по формуле где p i – вероятность i-го состояния источника. Знак "минус" перед суммой введен потому, что величины вероятностей являются правильными дробями и имеют отрицательные логарифмы, а оценку неопределенности нужно получить со знаком "плюс". Рассмотрим пример. При вынимании шаров из урны, где находится один черный и один белый шар, неопределенность составляет 235
Г.В. Басалова Основы криптографии Неопределенность оказалась равной одному биту. Рассмотрим другой пример. В урне находятся семь черных шаров и один белый. На этот раз неопределенность составит Мера неопределенности уменьшилась почти вдвое по сравнению с первым примером. Неопределенность достигает максимального значения при равенстве вероятностей каждого из состояний друг другу и уменьшается с увеличением разброса этих вероятностей. Также следует заметить, что при равенстве вероятностей между собой , мера информации совпадает с мерой информации по Хартли. по Шеннону Во многих случаях алфавитный подход к измерению информации оказывается предпочтительнее. Именно мера информации по Хартли используется, если мы говорим, что некоторый файл содержит 1,5 мегабайта информации или что на одной странице некоторой книги умещается 17 килобайт информации. Основной единицей количества информации является бит. Однако для практического применения это слишком мелкая единица. Более удобной единицей является байт (byte), равный восьми битам. Прибавляя к слову "байт" децимальные приставки "кило", "мега" и так далее, можно получать более крупные единицы измерения. Нужно только помнить об условности таких обозначений, так как их связывает множитель, равный не 1000, а 1024 =2 10. Энтропия и неопределенность Таким образом, мы выяснили, что измерение количества информации в 236
Г.В. Басалова Основы криптографии сообщении можно проводить на основе учета изменения неопределенности. К. Шеннон ввел понятие энтропии как меры неопределенности. Энтропия H(m) определяет количество информации в сообщении m и является мерой его неопределенности. Пусть источник сообщений может создавать n разных сообщений m 1 , m 2 , ... m n с вероятностями p 1 , p 2 ,... , p n . В этом случае энтропия сообщения будет определяться формулой Так как в данной формуле используется двоичный логарифм, то энтропия измеряется в битах, что общепринято в криптографии, теории информации и в компьютерных науках. "Физический" смысл энтропии состоит в том, что энтропия — это количественная мера неопределенности. В качестве примера рассмотрим три источника сообщений, каждый из которых может генерировать только по два разных сообщения m1 и m2. Пусть известно, что для первого источника вероятность появления первого сообщения р(m1)=0, а вероятность второго сообщения р(m1)=1. Для второго источника вероятности сообщений равны, то есть р(m1)=0,5 и р(m2)=0,5. Для третьего источника вероятности сообщений следующие: р(m1)=0,9 и р(m1)=0,1. Определим энтропию каждого из источников сообщений. Для первого источника: H1 = -0 * log2 0 – 1 * log2 1 = 0 – 0 = 0 Энтропия или неопределенность первого источника равна нулю. И действительно, если заранее известно, что из двух сообщений всегда генерируется только одно, то никакой неопределенности нет. Определим энтропию второго источника: 237
Г.В. Басалова Основы криптографии Неопределенность оказалась равной одному биту. Найдем теперь энтропию третьего источника: Неопределенность у третьего источника меньше, чем у второго, так как из двух возможных сообщений, генерируемых третьим источником, одно более вероятно, чем другое. Понятие энтропии играет важную роль во многих задачах теории передачи и хранения информации. В частности, энтропия может использоваться для определения максимальной степени сжатия данных. Точнее, если источник сообщений порождает текст достаточно большой длины n с определенной предельной энтропией h на бит сообщения, то этот текст теоретически может быть сжат до величины n*h бит. Например, если h = 1/2, то текст может сжиматься вдвое и т.д. Значение n*h является пределом и на практике достигается редко. С точки зрения криптографии, энтропия определяет количество символов, которые необходимо раскрыть, чтобы узнать содержание сообщения. Так, если некоторый 8-битовый блок данных хранит одно из двух возможных сообщений (например, ответы "Да" или "Нет" ), то достаточно правильно узнать один бит, чтобы определить значение исходного сообщения. Сколько бы бит мы не отводили для шифрования слов "Да" и "Нет", энтропия или неопределенность всегда будет меньше или равна 1. Норма языка и избыточность сообщений Для каждого языка можно ввести величину, называемую нормой языка r и определяемую по формуле r = H(m)/N, где H(m) – это энтропия сообщения, а N – длина сообщения в символах используемого языка. Норму языка можно рассматривать как количество информации, приходящееся на один символ сообщения. Норма языка будет различной для разных языков, а также для сообщений с разной длиной и содержанием. Так, например, различные исследователи 238
Г.В. Басалова Основы криптографии оценивают норму английского языка в диапазоне от 1,0 до 1,5 бит на символ. Будем считать, что норма русского языка примерно равна 1,5 бит на символ. Абсолютной нормой языка R называют максимальное количество бит информации, которое может быть передано одним символом рассматриваемого языка, при условии, что все последовательности символов равновероятны. Абсолютная норма языка, алфавит которого состоит из L символов, может быть вычислена как R = log2 L Для русского языка, алфавит которого состоит из 33 букв, абсолютная норма языка Таким образом, видно, что абсолютная норма русского языка значительно больше, чем реальная. В этом нет ничего удивительного, так как все естественные языки обладают значительной избыточностью. Это связано с несколькими факторами. Во-первых, некоторые буквы алфавита встречаются в сообщениях чаще других. Некоторая статистика по символам русского алфавита приведена в "Простейшие методы шифрования с закрытым ключом", где рассматривается процесс криптоанализа сообщения на основе статистических данных языка. Второй причиной избыточности является то, что некоторые сочетания букв в словах недопустимы. Например, в русском языке нет слов, в которых стояли бы подряд буквы "ц" и "й" или "я" и "ь". Кроме того, естественные языки устроены таким образом, что иногда, зная фрагмент слова или фразы, мы может восстановить недостающую часть. Например, в приветствии Зд.авствуй, до.огой д.уг! мы легко сможет восстановить недостающие буквы "р". Избыточность языка D оценивают как D =R – r. 239
Г.В. Басалова Основы криптографии Избыточность русского языка получается равной 3,5 бит на символ. Это означает, что в среднем каждая буква русского языка содержит 3,5 бита неиспользуемой информации. Примерно такую же избыточность имеют и другие естественные языки, например, английский. Минимальной избыточностью сообщений D = 0 обладал бы язык, в котором все символы равновероятны и могут встречаться в сообщениях независимо друг от друга в любом порядке. Понятие совершенно секретной системы Криптографическая система называется совершенно секретной, если анализ зашифрованного текста не может дать никакой информации об открытом тексте, кроме, возможно, его длины. Если криптографическая система не является совершенно секретной, то знание шифротекста сообщения предоставляет некоторую информацию относительно соответствующего открытого текста. Для большинства простых систем шифрования, например, методов однократной замены или перестановки, по мере увеличения длины перехваченного зашифрованного сообщения можно делать некоторые выводы о ключе шифрования или об открытом тексте. Это связано с большой избыточностью естественных языков. Так, например, если перехвачено сообщение, зашифрованное методом перестановки, то противник может узнать, какие символы и в каком количестве встречались в исходном сообщении, а после этого может попробовать провести какой-либо более сложный анализ с целью определения правила перестановки. Если нам известно зашифрованное методом моноалфавитной замены сообщение ДКДК, мы, конечно, без дополнительной информации не сможем однозначно определить, что содержалось в исходном тексте. Однако, получив в свое распоряжение ДКДК, мы сможем сделать вывод, что 1. в исходном сообщении использовалось всего две буквы алфавита 2. первая и третья, а также вторая и четвертые буквы открытого текста были одинаковы. 240
Г.В. Басалова Основы криптографии Можно также предположить, что либо Д, либо К заменяют гласную букву. Может быть, исходное сообщение представляло собой слово МАМА, а может быть ПАПА, а может быть что-нибудь еще. Однозначно дешифровать его нельзя, однако некоторую информацию по шифротексту мы смогли определить. Таким образом, можно сделать вывод, что методы перестановки или замены не являются совершенно секретными криптографическими шифрами. На практике возможна следующая реализация совершенно секретной системы, называемая одноразовая лента (или одноразовый блокнот, или шифр Вернама по имени американского инженера, предложившего эту систему в первой половине ХХ века). Будем предполагать, что процессу шифрования подвергаются двоичные данные. На передающей и приемной сторонах подготавливаются две одинаковые ленты, например, магнитные. Они содержат ключ шифрования. На передающей стороне лента помещается в устройство шифрования, а на принимающей стороне – в идентичное устройство, используемое для расшифрования. Когда отправитель хочет передать сообщение, он складывает по модулю два один бит исходного сообщения и один бит с магнитной ленты. После этого лента перемещается в следующее положение и можно шифровать второй бит сообщения, используя второй бит ключа. Таким образом шифруется все сообщение. На принимающей стороне лента с ключом используется аналогично. Например, пусть исходное сообщение m содержит следующие двоичные цифры: m = 1100101110... Предположим, в качестве ключевой используется последовательность: k = 1001100111... Выполним шифрование по методу одноразовой ленты, сложив цифры в каждом столбике по модулю 2: исходный текст m = 1100101110... биты ключевой послед-ти k = 1001100111... ------------------зашифрованный текст с = 0101001001... 241
Г.В. Басалова Основы криптографии Этот процесс напоминает наложение гаммы на поток входных данных. Шифр с одноразовой лентой действительно является гаммированием, однако, в отличие от всех рассмотренных до этого криптосистем в нем предполагается бесконечная гамма. В одноразовой ленте все буквы встречаются с одинаковой частотой. Поэтому, сколько бы знаков гаммы нам ни было известно, мы не сможем предсказать, какой будет следующая буква. Из этого следует, что все последовательности знаков гаммы равновероятны. Это означает, что сообщение, зашифрованное с помощью шифра Вернама, может быть "дешифровано" в любой открытый текст подходящей длины, поскольку предполагаемая последовательность знаков гаммы не имеет никаких свойств, позволяющих отличить её от любой другой. В шифре Вернама, конечно, совсем необязательно использовать в качестве носителя ключевых данных именно ленту. Главное, чтобы у отправителя и получателя был секретный ключ размера не меньшего, чем длина исходного сообщения. Проблемы могут возникнуть при шифровании большого объема данных, так как запасы ключевых цифр должны быть заблаговременно доставлены получателю информации и храниться у него. Совершенно секретные системы могут быть реализованы на практике. Почему же они не используются во всех случаях? Это объясняется несколькими причинами. Во-первых, как и любые системы шифрования с закрытым ключом в них существует проблема распределения ключей. Во-вторых, в совершенной секретной системе ключ шифрования должен иметь по крайней мере такую же длину, как и открытый текст. Кроме того, для шифрования каждого сообщения должен применяться свой новый ключ. Все эти факторы делают реализацию совершенно секретной системы очень дорогой и не слишком удобной. Такие системы имеет смысл использовать лишь для самых важных линий связи, например, правительственных. Расстояние единственности Если криптографическая система не является совершенно секретной, то зашифрованное сообщение может дать криптоаналитику некоторую информацию об исходном сообщении. Специалист, может быть, и не 242
Г.В. Басалова Основы криптографии сможет сразу однозначно дешифровать шифротекст, однако он будет иметь возможность делать некоторые предположения о ключе или открытом тексте. После получения каждого следующего зашифрованного тем же ключом сообщения криптоаналитик будет расширять свои знания относительно ключа шифрования и в конце концов сможет дешифровать сообщения. Возникает вопрос, а какой должна быть длина зашифрованного сообщения, чтобы можно было однозначно дешифровать его. В примере, рассмотренном в "Простейшие методы шифрования с закрытым ключом"проводилась попытка дешифрования сообщения из 11 символов, закрытого методом простой замены. На основе анализа статистических закономерностей русского языка удалось подобрать несколько подходящих вариантов открытых текстов, однако для выбора из них одного "правильного" не хватило информации. По-видимому, существует некоторая длина перехваченного сообщения, после которой сообщение может быть дешифровано с вероятностью, близкой к единице. Шеннон ввел понятие расстояния единственности шифра (или расстояния уникальности ) U, которое показывает, сколько букв зашифрованного сообщения необходимо перехватить для однозначного восстановления ключа. Для вычисления расстояния единственности необходимо знать энтропию ключа Н(К). Для симметричных шифров энтропия ключа примерно равна логарифму числа ключей N K по основанию 2: Н(К) = log2 NK Например, для шифра простой замены, применяемого к русскому языку, число возможных ключей определяется количеством всех возможных таблиц замен и равно ключа будет равна поэтому энтропия Если нам известна энтропия ключа Н(К) для некоторого шифра, то расстояние единственности U для него вычисляется по формуле 243
Г.В. Басалова Основы криптографии U = H(K) / D, где D – избыточность шифруемого сообщения. Рассчитаем расстояние единственности для шифра простой замены, применяемого к сообщению на русском языке: То есть если длина перехваченного зашифрованного сообщения превышает 35 символов, то его, скорее всего, можно будет однозначно дешифровать. А при длине зашифрованного текста меньше 35 символов возможно неоднозначное вскрытие. Расстояние единственности показывает нам не то, какой размер должен иметь перехваченный шифротекст, чтобы его было легко дешифровать, а то, насколько большим он должен быть, чтобы было возможно в принципе его однозначное дешифрование. Для того чтобы затруднить противнику определение ключа и дешифрование наших секретных сообщений, необходимо увеличивать (а желательно доводить до бесконечности) расстояние единственности в применяемых шифрах. Проанализировав формулу для вычисления расстояния единственности, определим, что это можно сделать двумя способами. Если энтропия ключа равна бесконечности, то расстояние единственности шифра будет тоже равно бесконечности. Энтропия ключа тем больше, чем длиннее ключ. В случае использования системы одноразовой ленты ключ теоретически бесконечен и все его символы равновероятны, поэтому энтропия ключа такого шифра будет бесконечно большой. Следовательно, расстояние единственности шифра Вернама равно бесконечности. Как уже отмечалось выше, использовать шифр с бесконечно большим ключом практически нецелесообразно. Однако на практике можно менять иногда ключ шифрования, тем самым затрудняя жизнь противнику. Специалисты рекомендуют использовать системы, в которых ключ меняется задолго до достижения расстояния единственности шифра. Этого можно достичь, например, используя 244
Г.В. Басалова Основы криптографии сеансовые ключи шифрования, то есть применять для шифрования каждого сообщения новый ключ. Второй способ увеличения расстояния единственности состоит в уменьшении избыточности исходного текста. Если избыточность сообщения равна нулю, то ключ никогда не будет определен, а зашифрованное сообщение вскрыто, так как расстояние единственности будет равно бесконечности. К сожалению, на практике такая ситуация невозможна, так как любое осмысленное сообщение будет иметь некоторую отличную от нуля избыточность. Однако возможно уменьшение избыточности в сообщениях за счет сжатия данных. Дело в том, что при сжатии данных энтропия "сжатого" текста сохраняется, а длина уменьшается. Следовательно, энтропия на букву в сжатом тексте больше, чем в исходном, а избыточность – меньше. Значит, после сжимающего кодирования расстояние единственности шифра увеличивается. Ключевые термины Абсолютная норма языка – максимальное количество бит информации, которое может быть передано одним символом некоторого языка, при условии, что все последовательности символов в языке равновероятны. Избыточность языка – статистическая величина, обозначающая избыточность информации, содержащейся в тексте на определённом языке. Норма языка – величина, характеризующая количество информации, приходящееся на один символ сообщения. Одноразовая лента (или одноразовый блокнот, или шифр Вернама) – один из возможных вариантов реализации совершенно секретной системы. Может быть реализован как гаммирование с бесконечной гаммой. Расстояние единственности шифра (или расстояния уникальности) – величина, показывающая, сколько букв зашифрованного сообщения необходимо перехватить для однозначного восстановления ключа. 245
Г.В. Басалова Основы криптографии Совершенно секретная система – криптографическая система, для которой анализ зашифрованного текста не дает никакой информации об открытом тексте, кроме, возможно, его длины. Энтропия сообщения – характеристика, введенная Шенноном. Определяет количество информации, приходящейся на одно элементарное сообщение источника, вырабатывающего статистически независимые сообщения. Является мерой неопределённости или непредсказуемости информации. Краткие итоги Основные положения теории информации, используемые в криптографии, были сформулированы в середине ХХ века. Большой вклад в эти исследования внес американский ученый К. Шеннон. Для исследования принципов передачи информации по коммуникационным каналам Шеннон предложил вероятностный подход к оценке количества передаваемой информации. Кроме того, он показал, что в принципе возможны так называемые совершенно секретные криптографические системы, которые не могут быть "взломаны". Криптографическая система называется совершенно секретной, если анализ зашифрованного текста не может дать никакой информации об открытом тексте, кроме, возможно, его длины. Одним из возможных вариантов реализации совершенно секретной системы является шифр Вернама (или одноразовый блокнот, или одноразовая лента). Шифрование по этому методу выполняется как сложение по модулю два открытого текста с бесконечным ключом (называемым одноразовым блокнотом или шифроблокнотом). При этом ключ должен обладать тремя важными свойствами: быть истинно случайным; совпадать по размеру с заданным открытым текстом; применяться только один раз. Данный метод, к сожалению, не слишком удобен на практике. Вопервых, как и любые системы шифрования с закрытым ключом в них существует проблема распределения ключей. Во-вторых, в совершенной секретной системе ключ шифрования должен иметь по крайней мере такую же длину, как и открытый текст. Кроме того, для шифрования каждого сообщения должен применяться свой новый ключ. Все эти факторы делают реализацию совершенно секретной системы очень 246
Г.В. Басалова Основы криптографии дорогой и не слишком удобной. Такие системы имеет смысл использовать лишь для самых важных линий связи, например, правительственных. Если криптографическая система не является совершенно секретной, то знание шифротекста сообщения предоставляет некоторую информацию относительно соответствующего открытого текста. Большинство используемых на практике криптографических систем не является совершенно секретными. Для увеличения безопасности реальных криптографических систем специалисты рекомендуют: 1. использовать сеансовые ключи шифрования, то есть применять для шифрования каждого сообщения новый ключ; 2. уменьшать избыточность шифруемых массивов данных, например, выполнять сжатие сообщений перед криптографическим шифрованием. Набор для практики Вопросы для самопроверки 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Как определяется энтропия источника сообщений? Что характеризует энтропия источника сообщений? Что определяет норма языка? Как вычисляется абсолютная норма языка? Что характеризует избыточность языка? Почему в сообщениях, составленных на естественных языках, всегда имеется избыточность? Дайте определение совершенно секретной криптографической системы. Приведите примеры шифров, которые не являются совершенно секретными системами. Почему шифр одноразовой ленты (шифр Вернама) является совершенно секретной системой? Почему совершенно секретные системы не используются 247
Г.В. Басалова Основы криптографии повсеместно на практике для защиты информации? 11. Как определяется энтропия ключа шифра? 12. Каким образом вычисляется расстояние единственности для шифра? Упражнения для самопроверки 1. Источник генерирует 32 различных символа. Чему равно количество информации по Хартли, приходящееся на 1 символ? 2. Некоторое устройство передачи данных может генерировать 256 различных символа. Чему равно количество информации по Хартли, приходящееся на сообщение из 10 символов? 3. Известно, что для некоторого источника сообщений количество информации по Хартли, приходящееся на 1 символ, равно 6 битам. Чему равно количество символов в алфавите источника сообщений? 4. Два источника генерируют по два символа. Первый источник генерирует символы с равными вероятностями, второй – с различными. Для какого источника количество информации по Шеннону, приходящееся на один символ, будет больше? 5. Пусть источник сообщений может генерировать n разных сообщений m1, m2, ..., mn с вероятностями p1, p2,... , pn. Определите энтропию источника для заданных исходных данных: n = 4; p1 = 0,25, p2= 0,25, p3 = 0,375, p4 = 0,125 n = 6; p1 = 0,0025, p2= 0,0075, p3 = 0,09, p4 = 0,2, p5= 0,5, p6 = 0,2 n = 4; p1= 0,25, p2= 0,1, p3 = 0,15, p4 = 0,5 6. Зашифруйте сообщение m шифром Вернама с ключом k: m = 1001001110, k = 0100111011 m = 0101101110, k = 1010101011 m = 1111001101, k = 0110001011 7. 7. Рассчитайте энтропию ключа для шифра Цезаря со сдвигом на n позиций, применяемого для сообщений на русском языке ( 32 248
Г.В. Басалова Основы криптографии буквы ). 8. 8. Рассчитайте расстояние единственности для шифра Цезаря со сдвигом на n позиций, применяемого для сообщений на русском языке ( 32 буквы ). Избыточность сообщений на русском языке принять равной 3,5 бит на символ. 9. 9. Предполагая, что все варианты ключей равновероятны и возможны, рассчитайте расстояние единственности для шифров с заданной длиной двоичного ключа N, применяемых к сообщениям, избыточность которых составляет D: N=256 бит, D =3,5 ; N=512 бит, D =3 ; N=128 бит, D =4. 249
Г.В. Басалова Основы криптографии Шифрование, помехоустойчивое кодирование и сжатие информации В процессе передачи информации от источника к потребителю на информацию воздействуют различные неблагоприятные факторы. Криптографические методы защищают информацию только от одного вида разрушающих воздействий – от предумышленного разрушения или искажения информации. Однако на практике при передаче информации от абонента к абоненту возможны случайные помехи на линиях связи, ошибки и сбои аппаратуры, частичное разрушение носителей данных и т.д. Для решения проблем передачи информации в реальных системах связи необходимо комплексное использование различных методов и средств. В этой лекции сформулированы основные подходы к использования помехоустойчивых кодов и алгоритмов сжатия данных, необходимых на практике. Цель лекции: познакомиться с принципами совместного использования шифрования, помехоустойчивого кодирования и сжатия информации для комплексной защиты информации в процессе ее передачи и хранения. Проблемы передачи информации и их комплексное решение В процессе передачи информации от источника к потребителю на информацию воздействуют различные неблагоприятные факторы. Криптографические методы защищают информацию только от одного вида разрушающих воздействий – от предумышленного разрушения или искажения информации. Однако на практике при передаче информации от абонента к абоненту возможны случайные помехи на линиях связи, ошибки и сбои аппаратуры, частичное разрушение носителей данных и т.д. Таким образом, в реальных системах связи существует проблема защиты информации от случайных воздействий. В связи с появлением сетей передачи данных высокой пропускной способности и развитием мультимедиа-технологий возникает проблема шифрования больших объемов информации. Если раньше основным типом шифруемых и передаваемых сообщений было текстовое 250
Г.В. Басалова Основы криптографии сообщение, то в ХХI веке криптографическая защита все чаще применяется при передаче цифровых видео- и речевых сообщений, карт местности, для организации видеоконференций. Именно поэтому в последнее время возникает проблема шифрования огромных информационных массивов. Для интерактивных систем типа телеконференций, организации аудио- или видеосвязи, такое шифрование должно осуществляться в реальном режиме времени и по возможности быть незаметным для пользователей. Решение указанных проблем, в том числе и защита от несанкционированного доступа, может быть достигнуто при комплексном использовании достижений теории информации. В принципе в теории информации выделяют три вида преобразования информации: криптографическое шифрование, помехоустойчивое кодирование и сжатие (или компрессия). В некоторых научных работах ХХ века все три вида преобразования информации называли кодированием: криптографическое кодирование, помехоустойчивое кодирование и эффективное кодирование (сжатие данных). Общим для всех трех видов преобразования является то, что информация какимлибо образом меняет форму представления, но не смысл. Отличия разных видов кодирования связаны с целью проводимых преобразований. Так, целью криптографического преобразования является, как известно, защита от несанкционированного доступа, аутентификация и защита от преднамеренных изменений. Помехоустойчивое кодирование выполняется с целью защиты информации от случайных помех при передаче и хранении. Эффективное кодирование производится с целью минимизации объема передаваемых или хранимых данных. На практике эти три вида преобразования информации обычно используются совместно. Так, например, некоторые программные пакеты перед шифрованием архивируют обрабатываемые данные. С другой стороны, реальные системы передачи информации, будь то локальные и глобальные сети передачи данных, или компьютерные носители информации (CD или DVD-диски) всегда имеют в составе системы защиты информации средства контроля и коррекции случайных ошибок. 251
Г.В. Басалова Основы криптографии Таким образом, криптографическое шифрование, помехоустойчивое кодирование и сжатие отчасти дополняют друг друга и их комплексное использование помогает эффективно использовать каналы связи для надежной защиты передаваемой информации. Для того, чтобы более эффективно использовать на практике криптографические методы защиты информации, рассмотрим основные положения теорий помехоустойчивого и эффективного кодирования, используемые в системах защиты информации. Помехоустойчивое кодирование Как уже отмечалось, вопросы криптографического преобразования информации тесно связаны с вопросами помехоустойчивого кодирования сообщений. Это обусловлено, с одной стороны (теоретической), тем, что и при криптографическом шифровании, и при помехоустойчивом кодировании используются одни и те же законы теории информации. С другой стороны (практической) процессы накопления, хранения и передачи информации протекают в условиях воздействия помех, способных исказить хранимые и обрабатываемые данные. Это обуславливает актуальность разработки и использования методов, позволяющих обнаруживать и корректировать подобные ошибки. С математической точки зрения задача сводится к синтезу так называемых помехоустойчивых кодов. Аналогично понятию шифра в криптографии при обсуждении помехоустойчивого кодирования и вопросов сжатия сообщений вводят понятие кода. Вообще кодом называется совокупность знаков, а также система правил, позволяющая представлять информацию в виде набора таких знаков. Кодовым словом называют любой ряд допустимых знаков. Например, двоичное число 1100 можно считать двоичным 4разрядным кодовым словом. Общая идея помехоустойчивого кодирования состоит в том, что из всех возможных кодовых слов считаются допустимыми не все, а лишь некоторые из них. Например, в коде с контролем по четности считаются допустимыми лишь слова с четным числом единиц. Ошибка превращает допустимое слово в недопустимое и поэтому обнаруживается. 252
Г.В. Басалова Основы криптографии Помехоустойчивые коды делятся на блоковые, делящие информацию на фрагменты постоянной длины и обрабатывающие каждый из них в отдельности, и свёрточные, работающие с данными как с непрерывным потоком. Блоковые коды характеризуются так называемым минимальным кодовым расстоянием. Вообще, расстоянием по Хэммингу (по имени американского математика Р.У. Хэмминга) между двумя кодовыми словами называется число разрядов, в которых они различны. При этом в качестве минимального кодового расстояния выбирается наименьшее из всех расстояний по Хэммингу для любых пар различных кодовых слов, образующих код. Например, пусть мы используем только трехразрядные двоичные слова. Всего таких кодовых слов может быть восемь. Те кодовые слова, которые отличаются только на одну единицу, называются соседними. Например, кодовые слова 101 и 111 – соседние, так как отличаются только средним разрядом, а слова 101 и 110 – не соседние, так как у них отличаются два последних разряда. Изобразим все трехразрядные двоичные комбинации и соединим линией соседние кодовые слова. Тогда мы получим схему, как на рис. 14.1. Минимальное кодовое расстояние между словами обычного, не помехоустойчивого кода равно единице. 253
Г.В. Басалова Основы криптографии Рис. 14.1. Трехразрядные двоичные кодовые слова В случае использования всех трехразрядных двоичных слов для передачи сообщений все они будут считаться допустимыми. Применим контроль по условию четности. Тогда допустимыми будут только выделенные рамками слова с четным числом единиц (см. рис. 14.2). Рис. 14.2. Допустимые трехразрядные кодовые слова при контроле по четности Минимальное расстояние между допустимыми словами кода с контролем по четности равно двум (из рис. 14.2 видно, что никакие два кодовых слова в рамочках не соединены линиями, то есть не являются соседними). Именно по этой причине одиночная ошибка в кодовом слове превращает это слово в недопустимое. Платой за помехоустойчивость является необходимость увеличения длины слов по сравнению с обычным кодом. В данном примере только два разряда являются информационными. Это они образуют четыре разных слова. Третий разряд является контрольным и служит только для увеличения расстояния между допустимыми словами. В передаче информации контрольный разряд не участвует, так как является линейно зависимым от информационных. Код с контролем по четности, рассмотренный в качестве примера, позволяет обнаружить одиночные ошибки в блоках данных при передаче данных. Однако он не сможет 254
Г.В. Басалова Основы криптографии обнаружить двукратные ошибки потому, что двукратная ошибка переводит кодовое слово через промежуток между допустимыми словами и превращает его в другое допустимое слово. Таким образом, для того чтобы код приобрел способность к обнаружению и коррекции ошибок, необходимо отказаться от его безызбыточности. Для этого и разделяют всё множество возможных комбинаций двоичных символов на два подмножества: допустимых кодовых слов и недопустимых. Разбиение осуществляется таким образом, чтобы увеличить минимальное кодовое расстояние между допустимыми словами. В этом случае любая однократная ошибка превращает допустимое кодовое слово в недопустимое, что позволяет её обнаружить. Естественно, что введение дополнительных контрольных разрядов увеличивает затраты на хранение или передачу кодированной информации. При этом фактический объем полезной информации остается неизменным. В этом случае можно говорить об избыточности помехоустойчивого кода, которую формально можно определить как отношение числа контрольных разрядов к общему числу разрядов кодового слова. Мы уже отмечали, что контрольные разряды не передают информацию и в этом смысле бесполезны. Относительное число контрольных разрядов называется избыточностью Q помехоустойчивого кода где n – общее число двоичных разрядов в блоке, а k – число контрольных разрядов. Например, избыточность рассмотренного трехразрядного кода с контролем по четности составляет: Избыточность является важной характеристикой кода, причем чрезмерное увеличение избыточности нежелательно. Важной задачей теории информации является синтез кодов с минимальной 255
Г.В. Басалова Основы криптографии избыточностью, обеспечивающих корректирующую способность. заданную обнаруживающую и В качестве иллюстрирующего примера рассмотрим один из простейших кодов, позволяющих обнаруживать и исправлять однократные ошибки – код Хэмминга. Кодовое слово длиной n содержит k информационных и m контрольных разрядов. Коррекция искаженного i-го разряда заключается в сложении (по модулю 2) принятого кодового слова с вектором вида 0…010…0, содержащем единицу в i-ом разряде. Для n-разрядного кодового слова существует n таких векторов, соответствующих однократным ошибкам, и один нулевой вектор, соответствующий случаю приема слова без ошибок. Таким образом, m контрольных разрядов должны обеспечивать формирование n + 1 вектора ошибки, то есть должно выполняться неравенство . В результате получается (2m-1, 2m-1-m) код, называемый кодом Хэмминга. Простейший нетривиальный случай, соответствующий m=3, образует (7,4)-код, который можно синтезировать следующим образом. Сопоставим каждому вектору ошибки порядковый номер – синдром (таблица 14.1). При этом нулевому вектору ошибки соответствует нулевой синдром. Таблица 14.1. Векторы ошибок и соответствующие им синдромы a6 a5 a4 a3 a2 a1 a0 s2 s1 s0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 0 0 0 1 1 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 256
Г.В. Басалова Основы криптографии Рассматривая функции si как свертку по модулю 2 разрядов кодовых слов, получим: Функции si должны обращаться в единицу при наличии ошибки в одном из образующих их разрядов, и в ноль – при отсутствии ошибок. Обеспечение этого требования возможно лишь при условии, что часть разрядов формируется специальным образом. В частности, разряды a0, a1, a2 можно рассматривать как свертку по модулю 2 остальных разрядов, участвующих в соответствующих уравнениях: Найденные зависимости позволяют генерировать кодовые слова по заданным информационным, а также вычислять синдромы для принятых кодовых слов. Допустим, исходное информационное слово равно 1101, то есть a6=1, a5=1, a4=1, a3=1. Для преобразования его в допустимое кодовое слово помехоустойчивого (7,4) -кода Хэмминга рассчитаем контрольные разряды по найденным выше зависимостям. В частности, Таким образом, с учетом контрольных разрядов кодовое слово будет равно 1101001. Если в процессе передачи или хранения слово осталось неискаженным, то его синдром s0…s2 будет соответственно равен: 257
Г.В. Басалова Основы криптографии ,. Синдром, состоящий из одних нулей, указывает на отсутствие ошибки и соответствует нулевому вектору ошибки. Предположим, что в процессе передачи или хранения в результате воздействия внешних факторов оказался искаженным отдельный разряд кодового слова. Например, вместо слова 1101001 было принято слово 1001001. В этом случае синдром окажется отличным от нуля: s0…s2 будет соответственно равен: Синдром 101 соответствует вектору ошибки 0100000, при этом единица указывает на разряд, в котором эта ошибка произошла. Для ее коррекции достаточно сложить по модулю 2 принятое искаженное кодовое слово с вектором ошибки. Рассчитаем избыточность (7,4) -кода Хэмминга: Это очень большое значение. На практике часто применяются существенно более сложные коды, обеспечивающие лучшие характеристики помехоустойчивости при меньшей избыточности. Принципы сжатия данных Как было сказано выше, одной из важных задач предварительной подготовки данных к шифрованию является уменьшение их избыточности и выравнивание статистических закономерностей применяемого языка. Частичное устранение избыточности достигается путём сжатия данных. Сжатие информации представляет собой процесс преобразования исходного сообщения из одной кодовой системы в другую, в результате которого уменьшается размер сообщения. Алгоритмы, предназначенные для сжатия информации, можно разделить на две большие группы: реализующие сжатие без потерь (обратимое сжатие) и реализующие сжатие с потерями (необратимое сжатие). Обратимое сжатие подразумевает абсолютно точное восстановление 258
Г.В. Басалова Основы криптографии данных после декодирования и может применяться для сжатия любой информации. Оно всегда приводит к снижению объема выходного потока информации без изменения его информативности, то есть без потери информационной структуры. Более того, из выходного потока, при помощи восстанавливающего или декомпрессирующего алгоритма, можно получить входной, а процесс восстановления называется декомпрессией или распаковкой и только после процесса распаковки данные пригодны для обработки в соответствии с их внутренним форматом. Сжатие без потерь применяется для текстов, исполняемых файлов, высококачественного звука и графики. Необратимое сжатие имеет обычно гораздо более высокую степень сжатия, чем кодирование без потерь, но допускает некоторые отклонения декодированных данных от исходных. На практике существует широкий круг практических задач, в которых соблюдение требования точного восстановления исходной информации после декомпрессии не является обязательным. Это, в частности, относится к сжатию мультимедийной информации: звука, фотоили видеоизображений. Так, например, широко применяются форматы мультимедийной информации JPEG и MPEG, в которых используется необратимое сжатие. Необратимое сжатие обычно не используется совместно с криптографическим шифрованием, так как основным требованием к криптосистеме является идентичность расшифрованных данных исходным. Однако при использовании мультимедиа-технологий данные, представленные в цифровом виде, часто подвергаются необратимой компрессии перед подачей в криптографическую систему для шифрования. После передачи информации потребителю и расшифрования мультимедиа-файлы используются в сжатом виде (то есть не восстанавливаются). Рассмотрим подробнее некоторые из наиболее распространённых способов обратимого сжатия данных. Наиболее известный простой подход и алгоритм сжатия информации обратимым путем – это кодирование серий последовательностей (Run Length Encoding – RLE). Суть методов данного подхода состоит в замене цепочек или серий повторяющихся байтов на один кодирующий байтзаполнитель и счетчик числа их повторений. Проблема всех аналогичных методов заключается лишь в определении способа, при 259
Г.В. Басалова Основы криптографии помощи которого распаковывающий алгоритм мог бы отличить в результирующем потоке байтов кодированную серию от других, – не кодированных последовательностей байтов. Решение проблемы достигается обычно простановкой меток вначале кодированных цепочек. Такими метками могут быть характерные значения битов в первом байте кодированной серии, значения первого байта кодированной серии. Недостатком метода RLE является достаточно низкая степень сжатия или стоимость кодирования файлов с малым числом серий и, что еще хуже – с малым числом повторяющихся байтов в сериях. При равномерном кодировании информации на сообщение отводится одно и то же число бит, независимо от вероятности его появления. Вместе с тем логично предположить, что общая длина передаваемых сообщений уменьшится, если часто встречающиеся сообщения кодировать короткими кодовыми словами, а редко встречающиеся – более длинными. Возникающие при этом проблемы связаны с необходимостью использования кодов с переменной длиной кодового слова. Существует множество подходов к построению подобных кодов. Одними из широко используемых на практике являются словарные методы, к основным представителям которых относятся алгоритмы семейства Зива и Лемпела. Их основная идея заключается в том, что фрагменты входного потока ("фразы") заменяются указателем на то место, где они в тексте уже ранее появлялись. В литературе подобные алгоритмы обозначаются как алгоритмы LZ сжатия. Подобный метод быстро приспосабливается к структуре текста и может кодировать короткие функциональные слова, так как они очень часто в нем появляются. Новые слова и фразы могут также формироваться из частей ранее встреченных слов. Декодирование сжатого текста осуществляется напрямую, – происходит простая замена указателя готовой фразой из словаря, на которую тот указывает. На практике LZметод добивается хорошего сжатия, его важным свойством является очень быстрая работа декодера. Другим подходом к сжатию информации является код Хаффмана, кодер и декодер которого имеют достаточно простую аппаратную реализацию. Идея алгоритма состоит в следующем: зная вероятности вхождения 260
Г.В. Басалова Основы криптографии символов в сообщение, можно описать процедуру построения кодов переменной длины, состоящих из целого количества битов. Символам с большей вероятностью присваиваются более короткие коды, тогда как реже встречающимся символам – более длинные. За счет этого достигается сокращение средней длины кодового слова и большая эффективность сжатия. Коды Хаффмана имеют уникальный префикс (начало кодового слова), что и позволяет однозначно их декодировать, несмотря на их переменную длину. Процедура синтеза классического кода Хаффмана предполагает наличие априорной информации о статистических характеристиках источника сообщений. Иначе говоря, разработчику должны быть известны вероятности возникновения тех или иных символов, из которых образуются сообщения. Рассмотрим синтез кода Хаффмана на простом примере. Пусть источник информации способен генерировать четыре различных символа S1…S4 с вероятностями возникновения p(S1)=0,2, p(S2)=0,15, p(S3)=0,55, p(S4)=0,1. Отсортируем символы по убыванию вероятности появления и представим в виде таблицы (рис. 14.3, а). Процедура синтеза кода состоит из трех основных этапов. На первом происходит свертка строк таблицы: две строки, соответствующие символам с наименьшими вероятностями возникновения заменяются одной с суммарной вероятностью, после чего таблица вновь переупорядочивается. Свертка продолжается до тех пор, пока в таблице не останется лишь одна строка с суммарной вероятностью, равной единице (рис. 14.3, б). 261
Г.В. Басалова Основы криптографии Рис. 14.3. Первый этап кодирования Хаффмана На втором этапе осуществляется построение кодового дерева по свернутой таблице (рис. 14.4, а). Дерево строится, начиная с последнего столбца таблицы. Рис. 14.4. Второй этап кодирования Хаффмана Корень дерева образует единица, расположенная в последнем столбце. В рассматриваемом примере эта единица образуется из вероятностей 0,55 и 0,45, изображаемых в виде двух узлов дерева, связанных с корнем. Первый из них соответствует символу S3 и, таким образом, дальнейшее ветвление этого узла не происходит. Второй узел, маркированный вероятностью 0,45, соединяется с двумя узлами третьего уровня, с вероятностями 0,25 и 0,2. Вероятность 262
Г.В. Басалова Основы криптографии 0,2 соответствует символу S1, а вероятность 0,25, в свою очередь, образуется из вероятностей 0,15 появления символа S2 и 0,1 появления символа S4. Ребра, соединяющие отдельные узлы кодового дерева, нумеруются цифрами 0 и 1 (например, левые ребра – 0, а правые – 1 ). На третьем, заключительном этапе, строится таблица, в которой сопоставляются символы источника и соответствующие им кодовые слова кода Хаффмана. Эти кодовые слова образуются в результате считывания цифр, которыми помечены ребра, образующие путь от корня дерева к соответствующему символу. Для рассматриваемого примера код Хаффмана примет вид, показанный в таблице справа (рис. 14.4, б). Однако классический алгоритм Хаффмана имеет один существенный недостаток. Для восстановления содержимого сжатого сообщения декодер должен знать таблицу частот, которой пользовался кодер. Следовательно, длина сжатого сообщения увеличивается на длину таблицы частот, которая должна посылаться впереди данных, что может свести на нет все усилия по сжатию сообщения. Другой вариант статического кодирования Хаффмана заключается в просмотре входного потока и построении кодирования на основании собранной статистики. При этом требуется два прохода по файлу – один для просмотра и сбора статистической информации, второй – для кодирования. В статическом кодировании Хаффмана входным символам (цепочкам битов различной длины) ставятся в соответствие цепочки битов также переменной длины – их коды. Длина кода каждого символа берется пропорциональной двоичному логарифму его частоты, взятому с обратным знаком. А общий набор всех встретившихся различных символов составляет алфавит потока. Существует другой метод – адаптивного или динамического кодирования Хаффмана. Его общий принцип состоит в том, чтобы менять схему кодирования в зависимости от характера изменений входного потока. Такой подход имеет однопроходный алгоритм и не требует сохранения информации об использованном кодировании в явном виде. Адаптивное кодирование может дать большую степень сжатия, по сравнению со статическим, поскольку более полно учитываются изменения частот входного потока. При использовании 263
Г.В. Басалова Основы криптографии адаптивного кодирования Хаффмана усложнение алгоритма состоит в необходимости постоянной корректировки дерева и кодов символов основного алфавита в соответствии с изменяющейся статистикой входного потока. Методы Хаффмана дают достаточно высокую скорость и умеренно хорошее качество сжатия. Однако кодирование Хаффмана имеет минимальную избыточность при условии, что каждый символ кодируется в алфавите кода символа отдельной цепочкой из двух бит – {0, 1}. Основным же недостатком данного метода является зависимость степени сжатия от близости вероятностей символов к 2 в некоторой отрицательной степени, что связано с тем, что каждый символ кодируется целым числом бит. Совершенно иное решение предлагает арифметическое кодирование. Этот метод основан на идее преобразования входного потока в одно число с плавающей запятой. Арифметическое кодирование является методом, позволяющим упаковывать символы входного алфавита без потерь при условии, что известно распределение частот этих символов. Предполагаемая требуемая последовательность символов при сжатии методом арифметического кодирования рассматривается как некоторая двоичная дробь из интервала [0, 1). Результат сжатия представляется как последовательность двоичных цифр из записи этой дроби. Идея метода состоит в следующем: исходный текст рассматривается как запись этой дроби, где каждый входной символ является "цифрой" с весом, пропорциональным вероятности его появления. Этим объясняется интервал, соответствующий минимальной и максимальной вероятностям появления символа в потоке. Рассмотренные методы обеспечивают обратимое сжатие данных. На практике применяются как программные, так и аппаратные их реализации, позволяющие добиваться коэффициентов сжатия порядка 20-40% в зависимости от типа сжимаемой информации. Таким образом, криптографическое шифрование, помехоустойчивое кодирование и сжатие отчасти дополняют друг друга и их комплексное использование помогает эффективно использовать каналы связи для надежной защиты передаваемой информации. 264
Г.В. Басалова Основы криптографии Ключевые термины Избыточность – характеристика помехоустойчивого кода, показывающая, насколько увеличена длина кодового слова по сравнению с обычным непомехоустойчивым кодом. Для многих помехоустойчивых кодов избыточность можно определить как отношение числа контрольных разрядов к общему числу разрядов кодового слова. Код – совокупность знаков, а также система правил, позволяющая представлять информацию в виде набора таких знаков. Кодовое слово – любой ряд допустимых знаков в соответствии с используемой системой правил. Минимальное кодовое расстояние – наименьшее из всех расстояний по Хэммингу для любых пар различных кодовых слов, образующих код. Помехоустойчивый код – код, позволяющий обнаруживать корректировать ошибки при хранении и передаче сообщений. и Расстояние по Хэммингу – число разрядов кодовых слов, в которых они различны. Сжатие информации – процесс преобразования исходного сообщения из одной кодовой системы в другую, в результате которого уменьшается размер сообщения. Соседние кодовые слова – кодовые слова, отличающиеся значением только одного разряда. Краткие итоги В теории информации выделяют три вида преобразования информации: криптографическое шифрование, помехоустойчивое кодирование и сжатие (или эффективное кодирование). Общим для всех трех видов преобразования является то, что информация каким-либо образом меняет форму представления, но не смысл. Отличия разных видов кодирования связаны с целью проводимых преобразований. 265
Г.В. Басалова Основы криптографии Так, целью криптографического преобразования является, как известно, защита от несанкционированного доступа, аутентификация и защита от преднамеренных изменений. Помехоустойчивое кодирование выполняется с целью защиты информации от случайных помех при передаче и хранении. Для этого при записи и передаче в полезные данные добавляют специальным образом структурированную избыточную информацию, а при чтении (приёме) её используют для того, чтобы обнаружить или исправить ошибки. Естественно, что число ошибок, которое можно исправить, ограничено и зависит от конкретного применяемого кода. Эффективное кодирование (или сжатие информации) представляет собой процесс преобразования исходного сообщения из одной кодовой системы в другую, в результате которого уменьшается размер сообщения. Алгоритмы сжатия информации делятся на две группы: алгоритмы сжатия без потерь (обратимого сжатия) и алгоритмы сжатия с потерями (необратимого сжатия). За счет эффективного кодирования уменьшается избыточность сообщений, что позволяет производить более надежное криптографическое шифрование информации. Таким образом, криптографическое шифрование, помехоустойчивое кодирование и сжатие отчасти дополняют друг друга и их комплексное использование помогает эффективно использовать каналы связи для надежной защиты передаваемой информации. Набор для практики Вопросы для самопроверки 1. Какие виды преобразований информации используются для комплексной защиты информации? 2. Каковы основные принципы помехоустойчивого кодирования сообщений? 3. Каким образом используется синдром ошибки при кодировании сообщений кодом Хэмминга? 4. Приведите примеры кодов, обеспечивающих сжатие сообщений. 5. За счет чего достигается сжатие сообщений при кодировании 266
Г.В. Басалова Основы криптографии методом Хаффмана? 6. Как формируется кодовое слова Хаффмана? 7. Для каких типов данных целесообразно использовать алгоритмы сжатия с потерями? С чем это связано? Упражнения для самопроверки 1. Блоковый помехоустойчивый код имеет длину блока 8 бит. Его избыточность равна 25%. Чему равно число информационных разрядов в нем? 2. Пусть источник информации способен генерировать четыре различных символа S1…S4 с вероятностями возникновения p(S1)=0,1, p(S2)=0,3, p(S3)=0,5, p(S4)=0,1. По этим данным выполните синтез классического кода Хаффмана. Заключение В данном курсе были рассмотрены наиболее распространенные в настоящее время методы криптографической защиты информации. Но криптографическая наука, как и любая другая наука, не стоит на месте, а продолжает развиваться. Не прекращаются усилия специалистов по созданию новых методов криптографической защиты информации. Новая "отрасль" криптографии – асимметричная криптография стала всем уже привычной. Несмотря на то, что открыто уже более десятка алгоритмов шифрования с открытым ключом, продолжается поиск новых методов асимметричного шифрования. Так, например, алгоритмы на эллиптических кривых были предложены учеными только в самом конце ХХ века, а в настоящее время они уже активно используются на практике. Другая сравнительно молодая ветвь криптографии – исследование криптографических протоколов. Несмотря на то, что первые протоколы появились во второй половине ХХ века, на настоящий момент имеется уже несколько десятков различных типов криптографических протоколов. Криптографические протоколы являются одним из основных объектов исследования теоретической криптографии. 267
Г.В. Басалова Основы криптографии Ежегодно специалистами предлагаются новые криптографические протоколы, и задача криптоаналитиков заключается в том, чтобы верно оценить надежность каждого из протоколов. Одной из относительно новых разработок криптографии является квантовая криптография, основанная на определенных явлениях квантовой физики. Информацию в квантовых системах предлагается передавать по оптоволоконным каналам с помощью квантов света – фотонов, меняющих свое состояние при попытке их перехватить и измерить. Утверждается, что, используя квантовые явления, можно спроектировать и создать такую систему связи, которая всегда сможет обнаруживать подслушивание. Практическая реализация квантовой криптографии пока что находится на самом начальном уровне и встречает множество трудностей. Таким образом, криптографические методы не прекращают развиваться. Они широко используются и будут использоваться в составе средств комплексной защиты информации. 268
Г.В. Басалова Основы криптографии Общий глоссарий AES (Advanced Encryption Standard) – Алгоритм шифрования, действующий в качестве государственного стандарта в области шифрования данных в США с 2001 года. В основу стандарта положен шифр Rijndael. Шифр Rijndael/AES (то есть рекомендуемый стандартом) характеризуется размером блока 128 бит, длиной ключа 128, 192 или 256 бит и количеством раундов 10, 12 или 14 в зависимости от длины ключа. Основу Rijndael составляют так называемые линейноподстановочные преобразования. В алгоритме широко используются табличные вычисления, причем все необходимые таблицы задаются константно, т.е. не зависят ни от ключа, ни от данных. Ciphertext – зашифрованное сообщение (закрытый текст, криптограмма). CTR – режим работы блочного шифра, который позволяет генерировать ключи при поточном шифрования информации. Deciphering – расшифрование. DES (Data Encryption Standard) – Алгоритм шифрования, действовавший в качестве государственного стандарта в области шифрования данных в США с 1977 по 2001 годы. Основные параметры DES: размер блока 64 бита, длина ключа 56 бит, количество раундов – 16. DES является классической сетью Фейштеля с двумя ветвями. Алгоритм преобразует за несколько раундов 64-битный входной блок данных в 64-битный выходной блок. Стандарт DES построен на комбинированном использовании перестановки, замены и гаммирования. DSS (Digital Signature Standard) – стандарт США на цифровую подпись. В основе стандарта лежит алгоритм, называемый DSA (Digital Signature Algorithm) и являющийся вариацией подписи Эль-Гамаля. Enciphering – преобразование открытого текста в криптограмму (зашифрование). Нash function – хеш-функция. LFSR(linear feedback shift register ) – линейный сдвиговый регистр с обратной связью. 269
Г.В. Басалова Основы криптографии OFB – режим работы блочного шифра, который позволяет генерировать ключи при поточном шифрования информации. Рlaintext – исходное сообщение или открытый текст. Stream cipher – поточный шифр. Абсолютная норма языка – максимальное количество бит информации, которое может быть передано одним символом некоторого языка, при условии, что все последовательности символов в языке равновероятны. Активная криптографическая атака – при такой атаке противник имеет возможность модифицировать передаваемые сообщения и даже добавлять свои сообщения. Алгоритм BBS – один из методов генерации псевдослучайных чисел. Название алгоритма происходит от фамилий авторов - L. Blum, M. Blum, M. Shub. Алгоритм может использоваться в криптографии. Для вычислений очередного числа xn+1 по алгоритму BBS используется формула двух больших простых p и q. где является произведением Алгоритм RC4 – алгоритм, разработанный для генерации псевдослучайных чисел. Может использоваться для генерации ключей при поточном шифровании. Алгоритм RSA – алгоритм шифрования с открытым ключом. Название алгоритма составлено из первых букв фамилий авторов: Р.Ривеста (R.Rivest), А.Шамира (A.Shamir) и Л.Адлемана (L.Adleman). Алгоритм RSA основан на сложности задачи факторизации больших чисел. Данный алгоритм является, возможно, наиболее популярным и широко применяемым асимметричным алгоритмом в криптографических системах. Алгоритм Диффи-Хеллмана – алгоритм шифрования с открытым ключом. Этот алгоритм основан на трудности вычислений дискретных логарифмов. Алгоритм Диффи-Хеллмана может использоваться для распределения ключей, которые могут быть использованы для симметричного шифрования. 270
Г.В. Басалова Основы криптографии Алгоритм Евклида – математический алгоритм, который может использоваться для нахождения наибольшего общего делителя двух чисел. Алгоритм шифрования с открытым ключом (или асимметричный криптоалгоритм) – криптографический алгоритм, в котором для шифрования и расшифрования используются разные ключи. Алгоритм Эль-Гамаля – алгоритм шифрования с открытым ключом, основанный на трудности вычислений дискретных логарифмов. Алгоритм Эль-Гамаля может быть использован для шифрования данных, для формирования цифровой подписи и для согласования общего ключа. Этот алгоритм фактически использует схему ДиффиХеллмана, чтобы сформировать общий секретный ключ для абонентов, передающих друг другу сообщение, и затем сообщение шифруется путем умножения его на этот ключ. Алфавит - конечное множество используемых для кодирования информации символов. Атака "человек-в-середине" (англ. "man-in-the-middle") – термин в криптографии, обозначающий ситуацию, когда атакующий способен читать и видоизменять по своей воле сообщения, которыми обмениваются корреспонденты, причём ни один из последних не может догадаться о его присутствии в канале связи. Взаимно простые числа – числа, не имеющие общих делителей (кроме единицы). Гаммирование – метод шифрования, основанный на "наложении" гамма-последовательности на открытый текст. Обычно это суммирование в каком-либо конечном поле (суммирование по модулю). Генератор псевдослучайных чисел (ГПСЧ) – некоторый алгоритм или устройство, которые создают последовательность бит, внешне похожую на случайную. ГОСТ 28147-89 – российский стандарт на блочный алгоритм симметричного шифрования. 271
Г.В. Басалова Основы криптографии ГОСТ Р34.10-2001 – новый российский стандарт на алгоритм формирования и проверки ЭЦП. Основан на сложности взятия дискретного логарифма в группе точек эллиптической кривой, а также на стойкости хэш-функции по ГОСТ Р34.11-94. Размер формируемой цифровой подписи – 512 бит. ГОСТ Р34.10-94 – российский стандарт на алгоритм формирования и проверки ЭЦП, действующий с 1995 года. В стандарте используется модификация схемы шифрования с открытым ключом Эль-Гамаля и алгоритм выработки хэш-функции по ГОСТ Р34.11-94. ГОСТ Р 34.11-94 – российский стандарт на функцию хеширования. Задача факторизации – нахождение двух или более натуральных чисел, дающих при перемножении заданное число. Закрытый ключ – ключ, используемый в асимметричных криптографических алгоритмах, который должен храниться в секрете. Избыточность – в теории информации характеристика помехоустойчивого кода, показывающая, насколько увеличена длина кодового слова по сравнению с обычным непомехоустойчивым кодом. Для многих помехоустойчивых кодов избыточность можно определить как отношение числа контрольных разрядов к общему числу разрядов кодового слова. Избыточность языка – статистическая величина, обозначающая избыточность информации, содержащейся в тексте на определённом языке. Инверсия по модулю – такое натуральное число, которое при умножении по модулю на данное число дает в результате единицу. Инфраструктура открытых ключей – комплекс программно-аппаратных средств, организационно-технических и административных мероприятий, обеспечивающих абонентам системы связи необходимый сервис для управления их открытыми ключами. Каноническое разложение на множители – такое разложение на множители, при котором все множители являются простыми и 272
Г.В. Басалова Основы криптографии записаны в порядке возрастания. Ключ – информация, необходимая для шифрования и расшифрования сообщений. Код – в теории информации совокупность знаков, а также система правил, позволяющая представлять информацию в виде набора таких знаков. Кодовое слово – в теории информации любой ряд допустимых знаков в соответствии с используемой системой правил. Комбинированный (композиционный) шифр – криптографическое преобразование данных, получаемое в результате комбинации нескольких подряд примененных простых шифров. Криптоанализ – наука о преодолении криптографической защиты информации. Криптографическая система защиты информации – система защиты информации, в которой используются криптографические методы для шифрования данных. Криптографический протокол – алгоритм взаимодействия двух или более абонентов с использованием криптографических средств, в результате которой абоненты достигают своей цели, а их противники не достигают. Криптография – наука, изучающая построение и использование систем шифрования, в том числе их стойкость, слабости и степень уязвимости относительно различных методов вскрытия. Криптосистемы на эллиптических кривых – группа алгоритмов с открытым ключом, использующих в качестве математического аппарата свойства эллиптических кривых на плоскости. Криптостойкость – характеристика шифра, определяющая его стойкость к дешифрованию без знания ключа (т.е. способность противостоять криптоанализу). Линейный конгруэнтный генератор псевдослучайных чисел – один из 273
Г.В. Басалова Основы криптографии простейших ГПСЧ, который для вычисления очередного числа использует формулу некоторые константы, a , где — — предыдущее псевдослучайное число. Линейный сдвиговый регистр с обратной связью – вариант сдвигового регистра с обратной связью. Обратная связь в таком регистре реализуется просто как сумма по модулю 2 всех (или некоторых) битов регистра. Малая теорема Ферма – известная теорема, сформулированная П. Ферма, лежащая в основе алгоритма шифрования по системе RSA Метод Фибоначчи с запаздываниями – один из методов генерации псевдослучайных чисел. Может использоваться в криптографии. Минимальное кодовое расстояние – наименьшее из всех расстояний по Хэммингу для любых пар различных кодовых слов, образующих код. Наибольший общий делитель чисел которое делит и и = НОД(a, b). и – наибольшее число , Норма языка – величина, характеризующая количество информации, приходящееся на один символ сообщения. Одноразовая лента (или одноразовый блокнот, или шифр Вернама) – один из возможных вариантов реализации совершенно секретной системы. Может быть реализован как гаммирование с бесконечной гаммой. Односторонняя функция – математическая функция, которую относительно легко вычислить, но трудно найти по значению функции соответствующее значение аргумента. То есть, зная х легко вычислить , но по известному трудно найти подходящее значение . Односторонняя функция с люком (или с секретом) – это особый вид односторонних функций, имеющих некоторый секрет (люк), позволяющий относительно быстро вычислить обратное значение функции. 274
Г.В. Басалова Основы криптографии Основная теорема арифметики – теорема утверждающая, что любое натуральное число большее единицы либо само является простым, либо может быть разложено на произведение простых делителей, причем единственным способом (если не обращать внимания на порядок следования сомножителей). Открытый ключ – ключ, используемый в асимметричных криптографических алгоритмах, который может не храниться в секрете. Пассивная криптографическая атака – атака, при которой противник не имеет возможности изменять передаваемые сообщения. При пассивной атаке возможно лишь прослушивание передаваемых сообщений, их дешифрование и анализ трафика. Помехоустойчивый код – код, позволяющий обнаруживать корректировать ошибки при хранении и передаче сообщений. и Поточный шифр – шифр, который выполняет шифрование входного сообщения по одному биту (или байту) за операцию. Поточный алгоритм шифрования устраняет необходимость разбивать сообщение на целое число блоков. Поточные шифры используются для шифрования данных в реальном времени. Принцип Керкхоффса – правило разработки криптографических систем, согласно которому в засекреченном виде держится ключ шифрования, а остальные параметры системы шифрования могут быть открыты без снижения стойкости алгоритма. Другими словами, при оценке надёжности шифрования необходимо предполагать, что противник знает об используемой системе шифрования всё, кроме применяемых ключей. Впервые данный принцип сформулировал в XIX веке голландский криптограф Огюст Керкхоффс. Присоединяемые цифровые подписи – подписи, вычисленные по хешкоду документа. Такие цифровые подписи представляют собой некоторый числовой код, который необходимо пристыковывать к подписываемому документу. Само сообщение при этом не шифруется и передается в открытом виде вместе с цифровой подписью отправителя. Пропорциональные или монофонические шифры – методы замены, в которых уравнивается частота появления зашифрованных знаков. 275
Г.В. Басалова Основы криптографии Простое число – натуральное число, которое не имеет делителей, кроме самого себя и единицы. Расстояние единственности шифра (или расстояния уникальности) – величина, показывающая, сколько букв зашифрованного сообщения необходимо перехватить для однозначного восстановления ключа. Расстояние по Хэммингу – в теории информации число разрядов кодовых слов, в которых они различны. Режим ECB (Electronic CodeВook) – Один из режимов использования блочного алгоритма шифрования. Режим ECB (переводится как "электронная кодовая книга") – это режим простой поблочной замены. В этом режиме каждый блок исходных данных шифруется независимо от остальных блоков, с применением одного и того же ключа шифрования. Режим CBC (Chipher Block Chaining) – режим сцепления блоков шифра. Один из режимов использования блочного алгоритма шифрования. Преобразование в режиме CBC выполняется следующим образом: каждый блок открытого текста складывается по модулю 2 с результатом шифрования предыдущего блока. Таким образом, результаты шифрования предыдущих блоков влияют на шифрование следующих блоков. Сдвиговый регистр с обратной связью состоит n-битного сдвигового регистра и устройства обратной связи. Когда нужно извлечь бит, все биты регистра сдвигаются вправо на одну позицию. Новый крайний слева бит определяется функцией обратной связи от остальных битов. Сдвиговые регистры с обратной связью могут применяться для получения потока псевдослучайных бит. Сертификат открытого ключа – информация, заверенная цифровой подписью центра, и включающая открытый ключ и другие данные об абоненте (идентификатор алгоритма электронной подписи, имя удостоверяющего центра, срок годности сертификата, имя пользователя, которому принадлежит сертификат и др). Сжатие информации – процесс преобразования исходного сообщения из одной кодовой системы в другую, в результате которого уменьшается размер сообщения. 276
Г.В. Басалова Основы криптографии Символ - это любой знак, в том числе буква, цифра или знак препинания. Симметричное шифрование (шифрование с закрытым ключом) – методы обратимого преобразования данных, в которых используется один и тот же ключ, который обе стороны информационного обмена должны хранить в секрете от противника. Система шифрования, или шифрсистема, – это любая система, которую можно использовать для обратимого изменения текста сообщения с целью сделать его непонятным для всех, кроме тех, кому оно предназначено. Совершенно секретная система – криптографическая система, для которой анализ зашифрованного текста не дает никакой информации об открытом тексте, кроме, возможно, его длины. Соседние кодовые слова – кодовые слова, отличающиеся значением только одного разряда. Составное число – натуральное число, которое делится, помимо самого себя и единицы, еще хотя бы на одно число. Функция Эйлера позволяет подсчитать число натуральных чисел, не превосходящих n и, взаимно простых с n. Хеш-функция – математическая или иная функция, которая для строки произвольной длины вычисляет некоторое целое значение или некоторую другую строку фиксированной длины. Хеш-код – результат работы хеш-функции, некоторый характерный "признак" входного массива данных. Шифр – совокупность заранее оговоренных способов преобразования исходного секретного сообщения с целью его защиты. Шифр замены (подстановки) основан на том, что символы исходного текста, обычно разделенные на блоки и записанные в одном алфавите, заменяются одним или несколькими символами другого алфавита в соответствии с принятым правилом преобразования. 277
Г.В. Басалова Основы криптографии Шифр многоалфавитной замены (или подстановки) – группа методов шифрования подстановкой, в которых для замены символов исходного текста используется не один, а несколько алфавитов по определенному правилу. Шифр перестановки основаны на том, что входной поток исходного текста делится на блоки, в каждом из которых выполняется перестановка символов. Ключом такого шифра является используемая при шифровании перестановочная матрица или вектор, указывающий правило перестановки. Шифр простой (или одноалфавитной) замены, простой подстановочный шифр, моноалфавитный шифр — группа методов шифрования, которые сводится к созданию по определённому алгоритму таблицы шифрования, в которой для каждой буквы открытого текста существует единственная сопоставленная ей буква шифртекста. Само шифрование заключается в замене букв согласно таблице. Для расшифровки достаточно иметь ту же таблицу, либо знать алгоритм, по которой она генерируется. Шифрование с закрытым ключом (симметричное шифрование) – методы обратимого преобразования данных, в которых используется один и тот же ключ, который обе стороны информационного обмена должны хранить в секрете от противника. Шифрование с открытым ключом (асимметричное шифрование) – методы шифрования, в которых для шифрования и расшифрования данных используются два разных ключа. При этом один из ключей (открытый ключ) может передаваться по открытому (незащищенному) каналу связи. Шифрование с открытым ключом используется на практике лишь со второй половины ХХ века. Центр сертификации – организация или подразделение организации, которая выпускает сертификаты ключей электронной цифровой подписи и отвечает за управление ключами пользователей. Открытые ключи и другая информация о пользователях хранится удостоверяющими центрами в виде цифровых сертификатов. Цифровые подписи с восстановлением документа – подписи, которые как бы содержат в себе подписываемый документ: в процессе проверки 278
Г.В. Басалова Основы криптографии подписи автоматически вычисляется и тело документа. Если при расшифровывании сообщение восстановилось правильно, значит, подпись была верной. Электронная (цифровая) подпись – присоединяемый к сообщению блок данных, полученный с использованием криптографического преобразования. Электронная подпись позволяет при получении текста другим пользователем проверить авторство и подлинность сообщения. Энтропия сообщения – характеристика, введенная Шенноном. Определяет количество информации, приходящейся на одно элементарное сообщение источника, вырабатывающего статистически независимые сообщения. Является мерой неопределённости или непредсказуемости информации. Список сокращений OFB Усовершенствованный стандарт шифрования Алгоритм генерации Blum – Blum – Shub псевдослучайных чисел Центр сертификации Certification authority (удостоверяющий центр) Chipher Block Chaining Режим сцепления блоков шифра CounTeR Режим счетчика Data Encryption Standard Стандарт шифрования данных Digital Signature Standard Стандарт цифровой подписи (США) Electronic CodeВook Режим простой поблочной замены Key Distribution Center Центр распределения ключей Линейный сдвиговый регистр с Linear feedback shift register обратной связью Output FeedBack Режим обратной связи по выходу PKI Public Key Infrastructure RLE Run Length Encoding AES BBS CA CBC CTR DES DSS ECB KDC LFSR Advanced Encryption Standard Инфраструктура открытых ключей Кодирование серий последовательностей 279
Г.В. Басалова Основы криптографии RSA Rivest – Shamir – Adleman Алгоритм шифрования RSA Algorithm RNG Random number generator ГПСЧ ГСЧ НОД Генератор случайных чисел Генератор псевдослучайных чисел Генератор случайных чисел Наибольший общий делитель ЭВМ ЭЦП Электронная вычислительная машина Электронная цифровая подпись 280
Г.В. Басалова Основы криптографии Список литературы 1. ГОСТ 28147-89. Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования данных 2. ГОСТ Р34.10-94. Информационная технология. Криптографическая защита информации. Процедуры выработки и проверки электронной цифровой подписи на базе асимметричного криптографического алгоритма 3. ГОСТ Р34.11-94. Информационная технология. Криптографическая защита информации. Функция хэширования 4. ГОСТ Р34.10-2001. Процессы формирования и проверки электронной цифровой подписи 5. Басалова Г.В, Основы криптографии, Тула: Изд-во Тульского государственного университета, 2009 6. Басалова Г.В., Котов В.В, Архивное хранение информации в технических системах, Тула: Изд-во Тульского государственного университета, 2001 7. С. Бернет, С. Пэйн, Криптография. Официальное руководство RSA Security, М.: Бином, 2007 8. В.В.Ященко, Введение в криптографию, М.: МЦНМО: «ЧеРо», 2000 9. Зубов А.Ю, Криптографические методы защиты информации. Совершенные шифры, М. Гелиос АРВ, 2005. 10. Коблиц Н, Курс теории чисел и криптографии, М.: Научное изд-во ТВП, 2001 11. Лапонина О.Р, Основы сетевой безопасности: криптографические алгоритмы и протоколы взаимодействия, М.: Интернет –Ун-т Информ. Технологий, 2005 12. Левин М, Криптография без секретов: Руководство пользователя , М.: Новый издательский дом, 2005 13. Мао В, Современная криптография: теория и практика, М.: Изд-во Вильямс, 2005 14. Мельников В.В, Защита информации в компьютерных системах, М.: Финансы и статистика; Электронинформ, 1997 15. Молдовян Н.А., Молдовян А.А, Введение в криптосистемы с открытым ключом, Издательство: BHV-СПб, 2005 16. Молдовян Н.А., Молдовян А.А., Еремеев М.А, Криптография: от примитивов к синтезу алгоритмов, СПб, BHV-Петербург, 2004 17. В.О. Осипян, К.В. Осипян, Криптография в задачах и упражнениях, М.: Гелиос АРВ, 2004 18. Панасенко С, Алгоритмы шифрования. Специальный справочник, Издательство: BHV-СПб, 2008 19. Романец Ю.В., Тимофеев П.А., Шаньгин В.Ф, Защита информации в компьютерных системах и сетях. , М.: Радио и связь, 2001 20. Рябко Б.Я., Фионов А.Н, Криптографические методы защиты информации, М.: Горячая линия-Телеком, 2005 21. Рябко Б.Я., Фионов А.Н, Основы современной криптографии и стеганографии, М.: Горячая линия-Телеком, 2011 22. Соболева Т.А, Тайнопись в истории России (История криптографической службы России XVIII – начала ХХ в.), М., 1994 23. Н. Фергюсон, Б. Шнайер, Практическая криптография, М.: Диалектика, 2005 24. Фороузан Б.А, Криптография и безопасность сетей: учебное пособие, М: БИНОМ. 281
Г.В. Басалова Основы криптографии Лаборатория знаний, 2010 25. Шеннон К, Теория связи в секретных системах. Сборник «Работы по теории информации и кибернетике», М., ИЛ, 1963, с. 333-369 26. Шнайер Б, Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си, М.: ТРИУМФ, 2002 282