МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE ТЕМА 2. МЕТОДЫ КРИПТОГРАФИИ Цели и задачи изучения темы: ознакомить с определениями; основными используемыми сформировать представление о принципах криптографической защиты информации; понятиями и и методах познакомить с видами атак на шифр; ознакомить с современными практическими криптографических методов защиты; приложениями Оглавление: 2.1. Защита. 2.2. Современные практические приложения криптографических методов. 2.1. Защита Как уже отмечалось, защита информации необходима для уменьшения вероятности утечки (разглашения), модификации (умышленного искажения) или утраты (уничтожения) информации, представляющей определенную ценность для ее владельца. Проблема эта далеко не нова, она волнует людей уже несколько тысячелетий. В настоящее время проблемами защиты информации занимается наука криптология (kryрtos - тайный, logos - наука). В свою очередь, криптология подразделяется на два направления - криптографию и криптоанализ. Цели и задачи этих двух направлений криптологии прямо противоположны. Криптография наука о защите информации от несанкционированного прочтения ее посторонними лицами. Криптография занимается разработкой и исследованием методов шифрования информации. Под шифрованием понимается такое преобразование информации, которое делает исходные данные нечитаемыми и трудно раскрываемыми МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE без знания специальной секретной информации - ключа. В результате шифрования открытый текст превращается в шифрограмму и становится нечитаемым без использования дешифрирующего преобразования. Шифрограмма может называться и по-другому: зашифрованный текст, криптограмма, шифровка или шифртекст. Шифрограмма позволяет скрыть смысл передаваемого сообщения от посторонних. Сфера интересов криптоанализа противоположная - разработка и исследование методов дешифрования (раскрытия) шифрограммы даже без знания секретного ключа. Под ключом к шифру понимается секретная информация, определяющая, какое именно преобразование из множества возможных шифрующих преобразований выполняется в данном случае над открытым текстом. Шифрование - преобразование информации, в результате которого исходный текст, который носит также название открытого текста, заменяется закрытым (шифрованным) текстом, то есть шифрограммой. Дешифрование - обратный шифрованию процесс. На основе ключа зашифрованный текст (шифрограмма, шифровка) преобразуется в исходный открытый текст. Процесс получения криптоаналитиками открытого сообщения из шифрованного сообщения без заранее известного ключа называется вскрытием или взломом шифра. За столетия своего развития человечество изобрело массу разнообразных шифров. И, конечно же, существует несколько их классификаций. По характеру использования ключа известные алгоритмы шифрования можно разделить на два типа: симметричные (с одним и тем же ключом как для шифрования сообщений , так и для их дешифрования, по-другому - алгоритмы шифрования с секретным ключом) и несимметричные (с двумя ключами или с открытым ключом). Несимметричные алгоритмы шифрования и дешифрования часто называют асимметричными. В первом случае в шифраторе отправителя и дешифраторе получателя используется один и тот же ключ. Шифратор образует шифрограмму, которая является функцией открытого текста. Конкретный вид функции преобразования (шифрования) определяется секретным ключом. Дешифратор получателя сообщения выполняет обратное МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE преобразование по отношению к преобразованию, сделанному в шифраторе. Секретный ключ хранится в тайне и передается отправителем сообщения получателю по каналу, исключающему перехват ключа криптоаналитиком противника или коммерческого конкурента. Во втором случае (при использовании асимметричного алгоритма) получатель вначале по открытому каналу передает отправителю открытый ключ (Ключ 1), с помощью которого отправитель шифрует информацию. При получении информации получатель дешифрирует ее с помощью второго секретного ключа (Ключ 2). Перехват открытого ключа (Ключ 1) криптоаналитиком противника не позволяет дешифровать закрытое сообщение, так как оно рассекречивается лишь вторым секретным ключом (Ключ 2). При этом секретный Ключ 2 практически невозможно вычислить с помощью открытого Ключа 1. Криптостойкостью называется характеристика шифра, определяющая его устойчивость к дешифрованию без знания ключа (т.е. устойчивость к криптоанализу противником). Имеется несколько показателей криптостойкости, среди которых: количество всех возможных ключей и среднее время, необходимое для выполнения криптоанализа. Требования к криптографическим системам. Процесс криптографического закрытия данных может осуществляться как программно, так и аппаратно. Аппаратная реализация требует больших затрат, нежели программная, однако она имеет и преимущества: высокая производительность, простота, защищенность и т.д. Программная реализация более практична, дает гибкость в использовании. Для современных криптографических систем защиты информации сформулируем следующие требования: зашифрованное сообщение должно поддаваться чтению только при наличии ключа; число операций, необходимых для определения использованного ключа шифрования по фрагменту шифрованного сообщения и соответствующего ему открытого текста, должно быть не меньше общего числа возможных ключей; число операций, необходимых для расшифровывания информации путем перебора всевозможных ключей должно иметь строгую нижнюю оценку и выходить за пределы МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE возможностей современных компьютеров (с учетом возможности использования сетевых вычислений); знание алгоритма шифрования не должно влиять на надежность защиты; незначительное изменение ключа должно приводить к существенному изменению вида зашифрованного сообщения даже при шифровании одного и того же исходного текста; структурные элементы алгоритма шифрования должны быть неизменными; дополнительные биты, вводимые в сообщение в процессе шифрования, должен быть полностью и надежно скрыты в шифрованном тексте; длина шифрованного текста должна быть равной длине исходного текста; не должно быть простых и легко устанавливаемых зависимостей между ключами, последовательно используемыми в процессе шифрования; любой ключ из множества возможных должен обеспечивать надежную защиту информации; алгоритм должен допускать как программную, так и аппаратную реализацию, при этом изменение длины ключа не должно вести к качественному ухудшению алгоритма шифрования; алгоритм должен допускать как программную, так и аппаратную реализацию, при этом изменение длины ключа не должно вести к качественному ухудшению алгоритма шифрования. По мере образования информационного общества, крупным государствам становятся доступны технологические средства тотального надзора за миллионами людей. Поэтому криптография становится одним из основных инструментов обеспечивающих конфиденциальность, доверие, авторизацию, электронные платежи, корпоративную безопасность и бесчисленное множество других важных вещей. Одним из самых первых шифровальных приспособлений была скитала (по другим источникам - сцитала), которая применялась в V веке до н.э. во время войны Спарты против Афин. Скитала - это цилиндр, на который (виток к витку) наматывалась (без пробелов и нахлестов) узкая лента или кожаный ремень. Затем на этой ленте вдоль оси цилиндра (столбцами) записывался необходимый для передачи текст. Лента сматывалась с цилиндра и отправлялась получателю. Получив такое МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE сообщение, получатель наматывал ленту на цилиндр такого же диаметра, как и диаметр скиталы отправителя. В результате можно было прочитать зашифрованное сообщение. Аристотелю принадлежит идея обратного преобразования (дешифрования) такого шифра. Он предложил изготовить длинный конус и, начиная с основания, обертывать его лентой с шифрованным сообщением, постепенно сдвигая ее к вершине. На каком-то участке конуса начнут просматриваться участки текста. Так можно определить секретный размер цилиндра, то есть ключ к шифру. Известно, что шифровалась переписка Юлия Цезаря (100 - 44 гг. до н. э.) с Цицероном (106 - 43 г.г. до н. э.). Шифр Цезаря реализуется заменой каждой буквы в сообщении другой буквой этого же алфавита, отстоящей от нее в алфавите на фиксированное число букв. В своих шифровках Цезарь заменял букву исходного открытого текста буквой, отстоящей от исходной буквы впереди на три позиции. В криптографической терминологии исходное послание именуют открытым текстом (plaintext или cleartext). Изменение исходного текста так, чтобы скрыть от прочих его содержание, называют шифрованием (encryption). Зашифрованное сообщение называют шифротекстом (ciphertext). Криптография покрывает все практические аспекты секретного обмена сообщениями, включая аутенфикацию, цифровые подписи, электронные деньги и многое другое. Криптология - это раздел математики, изучающий математические основы криптографических методов. Метод шифрования/дешифрования называют шифром (cipher). Некоторые алгоритмы шифрования основаны на том, что сам метод шифрования (алгоритм) является секретным. Ныне такие методы представляют лишь исторический интерес и не имеют практического значения. Итак, симметричные алгоритмы используют один и тот же ключ для шифрования и для дешифрования. В то время как асимметричные алгоритмы используют разные ключи, а ключ для дешифрования не может быть вычислен по ключу шифрования. Асимметричные шифры (также именуемые алгоритмами с открытым ключом, или - в более общем плане - криптографией с МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE открытым ключом) допускают, чтобы открытый ключ был доступн всем (скажем, опубликован в газете). Это позволяет любому зашифровать сообщение. Однако расшифровать это сообщение сможет только санкционированный пользователь (владелец ключа для дешифрования). Ключ для шифрования называют открытым ключом, а ключ для дешифрования - закрытым ключом или секретным. Существует также наука стеганогpафия. Стеганографический метод - это еще один способ сокрытия информации от посторонних, но, в отличие от криптографии, в данном случае скрывается сам факт передачи сообщения, но само сообщение передается в открытом виде (замаскировано или тем или иным способом «спрятано») Иногда бывает пpоще скpыть сам факт наличия секpетной инфоpмации, чем надеяться на стойкость кpиптоалгоpитма. Используемые стеганографические методы зависят от технических возможностей и фантазии автора. Пpимеpом стеганогpафических методов защиты могут служить "случайные" точки на изобpажении, "шум" в звуковой инфоpмации и т.д. в котоpые вкpапляется важная и секpетная инфоpмация. Можно комбиниpовать стеганогpафические и криптографические методы защиты. Важной задачей при использовании криптографических алгоритмов закрытия конфиденциальной информации от посторонних является генерация ключей. Для генерации ключей шифрования применяются криптографические генераторы случайных чисел. Обычные генераторы псевдослучайных чисел, имеющиеся во многих языках программирования и программных средах, не подходят для нужд криптографии (они создавались с целью получения статистически случайного распределения, поэтому криптоаналитики могут предсказать поведение таких генераторов псевдослучайных чисел). В идеале, случайные числа должны основываться на настоящем физическом источнике случайной информации, которую невозможно предсказать. Примерами таких источников являются шумящие полупроводниковые приборы, младшие биты оцифрованного звука, интервалы между нажатиями клавиш. Когда нет настоящего физического источника шума, приходится пользоваться псевдослучайными числами. Такая ситуация нежелательна, но часто возникает на практике. Всегда желательно получить некий «шум окружения», зависящий, например, от величины МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE задержек в устройствах, цифр статистики использования ресурсов, сетевой статистики, интервалы между нажатиями клавиш и т.д. Криптографические генераторы псевдослучайных чисел обычно используют большой пул (seed-значение), содержащий случайную информацию. Биты генерируется путем выборки из пула с возможным прогоном через криптографическую хэш-функцию, чтобы спрятать содержимое пула от внешнего наблюдателя. Когда требуется новая порция бит, пул перемешивается путем шифровки со случайным ключом (его можно взять из неиспользованной пока части пула) так, чтобы каждый бит пула зависел от каждого другого бита. Новый шум окружения должен добавляться к пулу перед перемешиваниям, дабы сделать предсказание новых значений пула еще более сложным. Несмотря на то, что при аккуратном проектировании криптографически надежный генератор случайных чисел реализовать не так уж и трудно, этот вопрос часто упускают из вида. Таким образом, следует подчеркнуть важность криптографического генератора случайных чисел: если он сделан плохо, он может легко стать самым уязвимым элементом системы. Хорошие криптографические системы создаются таким образом, чтобы сделать их вскрытие как можно более трудным делом. Можно построить системы, которые на практике невозможно вскрыть (хотя доказать этот факт обычно нельзя). При этом не требуется очень больших усилий для реализации. Единственное, что требуется - это аккуратность и базовые знания. Нет прощения разработчику, если он оставил возможность для вскрытия системы. Все механизмы, которые могут использоваться для взлома системы надо задокументировать и довести до сведения конечных пользователей. Теоретически, любой шифровальный алгоритм (криптоалгоритм) с использованием ключа может быть вскрыт методом перебора всех значений ключа. Если ключ подбирается методом грубой силы (brute force), требуемая мощность компьютера растет экспоненциально с увеличением длины ключа. Ключ длиной в 32 бита требует 2^32 (около 10^9) шагов перебора. Такая задача под силу даже домашнему компьютеру. Однако, длина ключа это еще не все. Многие шифры можно вскрыть и не перебирая всех возможных комбинаций ключа. Вообще говоря, очень трудно предложить шифр, который нельзя было бы вскрыть другим МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE более эффективным способом. Разработка собственных шифров может стать приятным занятием, но для реальных приложений использовать самодельные шифры не рекомендуется, если только вы не являетесь экспертом в данном вопросе. Не следует пользоваться неопробованными или секретными алгоритмами. Часто разработчик такого алгоритма не уверен в его надежности, или же надежность зависит от секретности самого алгоритма. Вообще говоря, ни один алгоритм, секретность которого зависит от секретности самого алгоритма, не явяется надежным. В частности, имея шифрующую программу, квалифицированный программист может ее дизассемблировать и восстановить заложенный алгоритм шифрования методом обратной инженерии. Опыт показывает, что большинство секретных алгоритмов, ставших впоследствии достоянием общественности, оказались до смешного ненадежными. Степень надежности криптографической системы определяется ее слабейшим звеном. Нельзя упускать из виду ни одного аспекта разработки системы: от выбора алгоритма до политики использования и распространения ключей. Криптоанализ - это попытка прочтения зашифрованного сообщения без знания ключа к шифру (атака на шифр). Имеется много криптоаналитических подходов. Некоторые (из наиболее важных) приведены ниже. Атака на шифр со знанием лишь шифрованного текста (ciphertextonly attack). Это ситуация, когда атакующий ничего не знает о содержании сообщения, и ему приходтся работать лишь с самим шифрованным текстом. На практике часто можно сделать правдоподобные предположения о структуре текста, поскольку многие сообщения имеют стандартные заголовки. Даже обычные письма и документы начинаются с легко предсказумой информации. Также часто можно предположить, что некоторый блок информации содержит заданное слово. Атака на шифр со знанием содержимого шифровки (known-plaintext attack). Атакующий знает или может угадать содержимое всего или части зашифрованного текста. Задача заключается в расшифровке остального сообщения. Это можно сделать либо путем вычисления ключа шифрования, либо минуя это. Атака на шифр с заданным текстом (chosen-plaintext attack). Атакующий имеет возможность получить шифрованный документ для МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE любого нужного ему текста, но он не знает ключа к шифру. Задачей является нахождение ключа. Некоторые методы шифрования и, в частности, алгорим RSA, весьма уязвимы для атак этого типа. При использовании таких алгоритмов надо тщательно следить за тем, чтобы атакующий не мог зашифровать заданный им текст. Атака на шифр с подставкой (Man-in-the-middle attack). Атака направлена на обмен шифрованными сообщениями и, в особенности, на протокол обмена ключами. Идея заключается в том, что когда две стороны обмениваются ключами для секретной коммуникации (например, используя шифр Диффи-Хелмана, Diffie-Hellman), противник внедряется в линию обмена сообщениями. Далее, противник выдает каждой стороне свои ключи. В результате, каждая из сторон будет иметь разные ключи, каждый из которых будет известен противнику. Теперь противник будет расшифровывать каждое сообщение своим ключом, а затем его зашифровывать перед отправкой адресату с помощью другого своего ключа. Стороны будут иметь иллюзию секретности переписки, в то время как противник сможет читать все сообщения. Один из способов предотвращения такого типа атак заключается в том, что стороны при обмене ключами вычисляют криптографическую хэш-функцию значения протокола обмена (или, по меньшей мере, значения ключей), подписывают ее алгоритмом цифровой подписи и посылают подпись другой стороне. Получатель проверит подпись и то, что значение хэш-функции совпадает с вычисленным значением. Такой метод используется, в частности, в системе Фотурис (Photuris). Атака с помощью таймера (timing attack). Этот тип атак на шифр основан на последовательном измерении времен, затрачиваемых на выполнение операции возведения в стенень по модулю целого числа. 2.2. Современные практические приложения криптографических методов Практическое значение криптографических методов выходит далеко за рамки только обеспечения только секретности конфиденциальных данных. Отметим некоторые криптографических методов: важные практические защита от навязывания ложных сообщений; идентификация законных пользователлей; приложения МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE контроль целостности информации; аутентификация информации; электронная цифровая подпись; электронная жеребьевка; защита документов и ценных бумаг от подделки. Само по себе шифрование данных не является надежным средством для защиты от навязывания ложных сообщений, хотя во многих случаях законный получатель на основе анализа семантики принятого сообщения может достаточно легко определить, что криптограмма была изменена (или подменена) в процессе передачи по линии связи. Однако, искажения, например, цифровых данных выявить по семантике сообщения достаточно сложно. Одним из способов защиты от навязывания ложных сообщений является имитозащита. Имитозащита – это защита от навязывания ложных сообщений путем формирования в зависимости от секретного ключа специальной дополнительной информации, называемой иммитовставкой (передаваемой вместе с криптограммой). Для расчета имитовставки используется алгоритм, задающий зависимость значения имитовставки от каждого бита передаваемого сообщения. Причем, чем больше длина имитовставки, тем меньше вероятность того, что искажение шифртекста не будет замечено законным пользователем. Нарушитель может модифицировать шифртекст, но без знания ключа он не в состоянии вычислить новое значение имитовставки, соответствующее измененному сообщению. Если используется алгоритм расчета имитовставки с хорошими криптографическими свойствами, то вероятность того, что это не будет замечено законным получателем, составляет 2**(-L), где L - длина имитовставки в битах. Идентификация законных пользователей основана на том, что законному пользователю известна некоторая секретная информация, которая неизвестна посторонним. Пользователь формирует некоторые случайные данные и держит их в секрете (использует их как пароль). Этот пароль не должен храниться в явном виде ни в памяти компьютера, ни в памяти какого-либо другого устройства, выполняющего функции защиты информации. Данное требование направлено на то, чтобы внутренний нарушитель не смог считать пароль другого пользователя и присвоить себе его полномочия. Для того, чтобы система защиты могла идентифицировать санкционированных пользователей, в памяти компьютера хранятся образы паролей, рассчитанные как функции от паролей по специальному криптографическому алгоритму, МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE реализующему так назыаемую одностороннюю функцию y = F(x). Важнейшее требование, предъявляемое к односторонней функции, состоит в том, чтобы сложность вычисления значения функции по ее аргументу (по входу) была низкой, а сложность нахождения аргумента по значению функции была бы высокой. Идентификация пользователей на рабочих станциях может быть выполнена так: 1. Со стороны системы защиты появляется запрос на ввод пользователем индивидуальных данных. 2. Ввод пользователем своего личного идентификатора (имени NAME). 3. Ввод пользователем своего личного пароля (PASS). 4. Вычисление системой защиты значения односторонней функции y, соответствующей значению аргумента x = РASS. 5. Сравнение системой защиты рассчитанного значения F(PASS) со значением S образа пароля, соответствующего пользователю с идентификатором NAME. 6. В том случае, если F(PASS) = S, то система защиты предоставляет пользователю права доступа , соответствующие пользователю с идентификатором NAME. Для того, чтобы выдать себя за санкционированного пользователя, нарушитель должен ввести правильный пароль. Зная значение образа проля S, вычислительно невозможно вычислить истинный пароль PASS. Контроль целостности информации – это обнаружение любых несанкционированных изменений информации, например, данных или программ, хранимых в компьютере. Имитозащита является важным частным случаем контроля целостности информации, передаваемой в виде шифртекста. Контроль целостности информации основан на выработке по некоторому криптографическому алгоритму кода обнаружения модификации (КОМ). Основным требованием к алгоритму вычисления КОМ является задание зависимости значения КОМ от каждого бита двоичного представления всех символов исходного сообщения. Расмотрим вариант электронной жеребьевки. Пусть имеютя два удаленных друг от друга абонента А и Б, которые хотят сыграть по телефону в шахматы. При этом они хотят справедливо разыграть цвет МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ INTERNATIONAL BANKING INSTITUTE фигур, то есть обеспечить равновероятный выбор цвета шахматных фигур каждой из сторон. Криптография дает возможность это осуществить по схеме ,в которой используется односторонняя функция y = F(x) и оговаривается, что абонент, угадавший результат опыта с двумя павновероятными событиями, получает право первого хода. Последовательность действий абонентов А и Б: 1. Абонент А выбирает случайное число X a , двоичное представление которого имеет, например, 80 разрядов, вычисляет значение Y a = F( X a ) и сообщает значение Y a абоненту Б. Теперь абонент Б должен угадать: число X a является четным или нечетным. 2. Поскольку используемая функция является однонаправленной (односторонней), то абонент Б не может по значению числа Ya определить число X a . Поэтому, он вынужден именно угадывать четность/нечетность числа X a . Положим, что абонент Б сделал выбор «число X a - четное» и сообщил свое решение абоненту А. 3. Абонент А сообщает абоненту Б число X a . 4. Абонент Б вычисляет значение Y = F( X a ), если Y = Y a , то он убеждается в том, что абонент А действительно предоставил для проверки исходное число X a .