[МУЗЫКА] Добрый день, уважаемые слушатели. На предыдущей лекции мы с вами поговорили о развитии криптографических методов защиты информации, немного об их истории, об эволюции, о различных способах атак на криптографические системы и остановились на классах защищенности и надежности современных средств криптографической защиты информации. И сегодня поговорим непосредственно о тех методах защиты информации, криптографических методах, которые применяются в сегодняшние дни, которые нас окружают, которые действительно используются в настоящих информационных системах. Наша сегодняшняя лекция будет состоять из следующих разделов: мы с вами сформулируем требования к современным криптографическим системам; поговорим о двух принципиальных подходах к построению блочных шифров, которые популярны на сегодняшний день; поговорим также об асимметричных системах шифрования; двух тесно связанных с ними криптографических сущностях — схемах электронной цифровой подписи и функциях хэширования; поговорим о том, что такое криптографические протоколы, которые требуются для того, чтобы поддерживать функционирование системы, использующей схемы криптографической защиты информации; и уделим некоторое внимание перспективам развития криптографии в современном мире и в обозримом будущем. О том, какие перспективные направления, какие ожидающиеся результаты стоит принимать во внимание при планировании криптографической защиты информации. Итак, первый вопрос, которому мы сегодня посвятим свое внимание, это требования к современным криптографическим системам. Прежде всего стоит сформулировать такое понятие, как блочный шифр. Блочный шифр — это шифр, обрабатывающий за каждое применение операции зашифрования группу символов открытого текста фиксированной длины. С некоторыми из таких шифров мы уже сталкивались. Например, это шифр Плейфера или шифр два квадрата. В обоих из них мы зашифровывали по паре символов открытого текста за одно применение операции зашифрования. В двоичном представлении блочный шифр отображает блок открытого текста некой фиксированной длины и ключ длины, которая может отличаться от длины блока в блок шифр-текста длиной, как правило, совпадающей с длиной блока открытого текста. Как далее по ходу лекции мы узнаем, это не всегда обязательно так, но в большинстве современных реализаций такое требование, такое условие выполняется. Альтернативой блочному шифру является шифр поточный. Это шифр, обрабатывающий за каждое применение операции зашифрования один символ открытого текста. В современном понимании, как правило, блочный шифр работает с двоичным представлением информации, а поточный — с символами открытого текста, то есть непосредственно с буквами. Поточные шифры, как правило, строятся в настоящее время на основе идеи Шеннона, то есть их основная идея заключается в том, чтобы, подобно шифру Виженера или шифру Вернама, накладывать некую гамму на открытый текст. А для того чтобы шифр при этом получился стойкий, гамма должна обладать некоторыми свойствами, сходными со свойствами действительно случайной двоичной последовательности. Поэтому основа поточных шифров — это в основном некий алгоритм выработки этой самой двоичной гаммы. У поточного шифра, как правило, есть то неудобство, такая уязвимость, которая заключается в том, что поскольку зашифрование происходит посимвольно, то, зная пару открытый текст и шифр-текст, противник может без особого труда определить верный ключ зашифрования и далее использовать его для навязывания ложного текста, ложного сообщения. Поэтому в современном мире особое распространение, особым вниманием пользуются именно блочные шифры, в которых можно реализовать операцию перестановки и, таким образом, разрушить связи, которые наличествуют между символами открытого текста, разрушить соседство символов в открытом тексте и добиться так называемого «лавинного эффекта», то есть перемешивания символов шифр-текста на основе небольшого преобразования открытого текста. Лавинный эффект заключается в том, что если мы вносим незначительные изменения в открытый текст, шифр-текст должен измениться значительно. Существуют математические оценки того, в какой мере он должен измениться, чтобы шифр оставался надежным и стойким к различным атакам, но пока остановимся просто на мысли, что именно блочные шифры заслуживают наиболее пристального внимания в нашей лекции. Какие требования существуют в современном мире к шифрам вообще, не только к блочным? Прежде всего информация должна обрабатываться в цифровом, как правило, в двоичном представлении. То есть шифр должен быть предназначен для работы с информацией, хранящейся в вычислительных устройствах, а не для ручного использования с помощью ручки и бумаги, например. Следующее требование: шифр должен быть стойким к дешифрованию при помощи вычислительной техники. История с шифровальными машинами, в частности с шифровальной машиной «Энигма» в годы Второй мировой войны, продемонстрировала, что современные криптоаналитики для атак на различные шифры используют сложные вычислительные устройства, которые могут проводить огромное количество операций ежесекундно и, таким образом, перебирать огромное количество возможных вариантов, которые являются секретными в шифре, и поэтому в связи с развитием вычислительной техники, с построением суперкомпьютеров, с появлением различных правительственных организаций в некоторых государствах, которые занимаются поиском уязвимости в различных шифрах, для современного шифра необходимым является требование устойчивости к различным атакам, осуществляемых при помощи вычислительной техники. Следующим требованием является требование отсутствия необходимости использовать длинный двоичный ключ. Это требование следует как раз из того неудобства, которое следует из схемы Шеннона. Для идеального шифра требуется длинный двоичный ключ, то есть не уступающий по длине сообщению, вообще говоря, бесконечный в том смысле, что этот ключ может использоваться для зашифрования сколь угодно длинного текста, при этом в нем нет циклов, повторов, он не имеет каких-то явно выраженных структур, он строится случайно и равновероятно или максимально приближается по своим статистическим характеристикам к таковой последовательности. Так вот, в действительно используемых на практике современных криптосистемах, в большинстве из них, в тех, которые используются в коммерческих задачах, тех, которые используются в обеспечении некой оперативной связи, для удобства управления ключами вводится требование отказа от этих длинных двоичных ключей. Должно быть возможно обходиться достаточно коротким, по сравнению с длиной шифруемого сообщения, ключом. Следующее требование, которое иногда упоминается, это возможность стандартизации алгоритмов. То есть желательно чтобы весь алгоритм был максимально описан, детализирован, раскрыт, его мог бы реализовать аппаратно либо программно, вообще говоря, любой желающий, и все абоненты, которые узнают о том, что их получатель сообщений или отправитель используют такой-то алгоритм, были бы способны адекватно принять или отправить ему электронные сообщения. Кроме того, стандартизация алгоритмов позволяет, только зная какой алгоритм использует другой абонент, проводить оценки надежности. Если мы говорим о том, что там реализован некий шифр и он реализован корректно, есть некое заключение, некая лицензия, которая подтверждает, что шифр реализован корректно, мы можем быть уверены в некоем уровне надежности, которая обеспечивает как раз этот стандарт. Еще одно требование — устойчивость к навязыванию сообщения. Как раз то требование, которое следует, в общем-то, из уязвимости поточных шифров. Желательно, чтобы злоумышленник мог бы потратить максимальное количество усилий и времени на то, чтобы определить вот этот самый короткий ключ, который используется в блочном алгоритме шифрования, прежде чем он смог бы использовать его вторично для подделки какого-то сообщения. То есть даже если он при помощи какой-то разведки, шпионской деятельности, получил открытый текст и перехватил по открытому каналу связи шифр-текст, имеет эту пару x и y, вспоминая те обозначения, которые мы ввели для криптографических систем в предыдущей лекции, он бы затратил максимальные усилия на то, чтобы, зная эту пару, получить значения ключа. Вот такое требование тоже устанавливается для современных криптографических систем. Как же строятся блочные шифры, которые удовлетворяют большинству или всем перечисленным выше требованиям? На настоящее время рассматриваются два действующих и один перспективный подходов к построению блочных шифров. Два распространенных действительно и вошедших в большинство стандартов различных государств подходов, разработаны в ходе так называемого проекта «Люцифер», реализованного в 1970-х годах компанией IBM. Эти подходы называются «Сеть Фейстеля» и «SP-сеть». Это некоторые принципиальные алгоритмы, о которых мы поговорим в следующих частях сегодняшней лекции, которые позволяют как раз таки достичь выполнения сформулированных нами несколько минут назад требований. Перспективным направлением является использование так называемой «функции губки», которая имеет переменную длину входного блока и переменную длину выходного блока, а также достаточно сложный алгоритм, позволяющий все перечисленные требования реализовывать. Функция губки является неким математическим обобщением ряда криптографических алгоритмов, как правило, асимметричных, о которых мы сегодня тоже поговорим, но в основном мы остановим свое внимание на шифрах, построенных на основе сети Фейстеля и на основе SP-сети. Кроме того, для построения блочных шифров добавляется третье преобразование, так называемое преобразование «развертки ключа». Из этого короткого ключа, как правило, требуется получить длинный ключ, который бы сопоставим был по своей длине с длиной блока, который зашифровывается, или длиннее его, или гораздо длиннее его, детали будут понятны из рассмотрения конкретных моделей, конкретных подходов к разработке блочных шифров, и о них мы поговорим в следующей части. [МУЗЫКА]