ПРАКТИЧЕСКАЯ КРИПТОГРАФИЯ АЛГОРИТМЫ И ИХ ПРОГРАММИРОВАНИЕ

         

ActiveState Perl


или иной другой аналогичный интерпретатор.

Рис. 1. Borland C++ Builder

Рис. 2. HexWorkshop

Еще одним необходимым в работе инструментом для читателя станет шестнадцатеричный редактор. Можно использовать какой-либо специализированный вроде



а для исполнения скриптов на


, а для исполнения скриптов на языке Perl необходим


Date:


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

Собственно говоря, все приведенные примеры и недостатки и есть ответ на вопрос, почему почти никто не пользуется методом однократного гаммирования - все зависит от того, как именно это делается и какими ресурсами обладает пользователь шифросистемы.



Для кого и о чем эта книга


Книга предзначается в первую очередь для тех, кто интересуется не только теоретическими аспектами криптологии - как криптографии, так и криптоанализа, - но и практическими реализациями используемых в них алгоритмов и методов.

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

Кроме стандартных и популярных средств одноключевого шифрования, в книге рассматриваются нестандартные алгоритмы, которые могут использоваться на практике, а также оригинальные и необычные подходы к шифрованию и криптоанализу, что может значительно расширить кругозор даже опытного специалиста. Тем, кто интересуется созданием собственных шифросистем, будет также интересна и полезна информация, связанная с современными требованиями к сертификации и лицензированию средств шифрования.

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



HexWorkshop




или, что еще лучше - HIEW, но для работы вполне сойдет и встроенный, например, в файловый менеджер Far редактор шестнадцатеричных кодов. Он особенно пригодится для изучения выхода тех шифров, которые реализованы в этой книге.

Собственно говоря, это практически все основные инструменты, которые понадобятся при получении практических навыков и работе с исходными текстами, опубликованными в данной книге.



Использование однократного гаммирования


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

Логично было бы предположить, что для организации канала конфиденциальной связи в открытых сетях следовало бы воспользоваться именно схемой шифрования однократного гаммирования. Ее преимущества вроде бы очевидны. Есть, правда, один весомый недостаток, который сразу бросается в глаза, - это необходимость иметь огромные объемы данных, которые можно было бы использовать в качестве гаммы. Для этих целей обычно пользуются датчиками настоящих случайных чисел (в западной литературе аналогичный термин носит название True Random Number Generator или TRNG). Это уже аппаратные устройства, которые по запросу выдают набор случайных чисел, генерируя их с помощью очень большого количества физических параметров окружающей среды. Статистические характеристики таких наборов весьма близки к характеристикам "белого шума", что означает равновероятное появление каждого следующего числа в наборе. А это, в свою очередь, означает для нас действительно равновероятную гамму .

К сожалению, для того чтобы организовать конфиденциальный канал передачи данных, потребуется записать довольно большое количество этих данных и обменяться ими по секретному каналу . Уже одно это условие делает однократное гаммирование во многих случаях неприемлемым. В самом деле, зачем передавать что-то по открытому незащищенному каналу, когда есть возможность передать все это по секретному защищенному? И хотя на простой вопрос, является ли метод использования однократной случайной равновероятной гаммы стойким к взлому, существует положительный ответ, его использование может оказаться попросту невозможным.

Да и к тому же метод однократного гаммирования криптостоек только в определенных, можно даже сказать, тепличных условиях. Что же касается общего случая, то все не так просто.

Показать слабости шифра однократного гаммирования можно, говоря наукообразно, с помощью примера или, что называется, "на пальцах". Представим следующую ситуацию.

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

Чтобы дальнейшие рассуждения были как можно более понятны, рассмотрим следующее свойство шифротекста. Предположим, что мы знаем часть гаммы, которая была использована для зашифрования текста "Приветствую, мой ненаглядный сосед!" в формате ASCII, кодировка WIN-1251 (см. листинг 7.1).

П р и в е т с т в у ю , _ м о й CF F0 E8 E2 E5 F2 F1 F2 E2 F3 FE 2C 20 EC EE E9 _ н е н а г л я д н ы й _ с о с 20 ED E5 ED E0 E3 EB FF E4 ED FB E9 20 F1 EE F1 е д ! E5 E4 21



К вопросу о терминологии


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

Тем не менее вся эта информация до последнего времени была конфиденциальной и строжайше охранялась. Само слово "криптография" не вызывало никаких ассоциаций у подавляющего большинства математиков и специалистов по связи. Если необходимо было "закрыть" канал связи, то использовалась специальная аппаратура, которая представлялась для конечных пользователей "черным ящиком", в который надо было лишь воткнуть проводки, нажать на определенные кнопки и повернуть ручки.

С начала 90-х годов ситуация резко изменилась. Выпущено уже несколько сотен различных изданий по теме информационной безопасности, в том числе и по криптографии. Множество книг переведены с иностранных языков, каждый месяц появляются книги русских авторов по прикладной и теоретической криптографии.

К сожалению, количество выпускаемых книг не всегда сопровождается качеством. И особое внимание необходимо уделять именно тому, как вольно обращаются с терминами новоиспеченные "криптоматематики". Некоторые авторы "книг по криптографии" не имеют никакого отношения даже к математике, не говоря уж о кодах и шифрах. Потому и выходят казусы с "шифрацией", "криптованием" и "дешифрированием" данных.

Конечно, никто не застрахован от возможных нелепостей и казусов, связанных с написанием, редактированием, версткой, макетированием и печатью больших объемов текста. Поэтому авторы просят осведомленных читателей отнестись с пониманием к возможным техническим "ляпам".

А для того чтобы избежать технических накладок, авторы предлагают считать верными следующие трактовки зарубежных и отечественных терминов:


криптографическая атака (cryptoanalitic attack) - попытка криптоаналитика вызвать отклонения от нормального проведения процесса конфиденциального обмена информацией. Соответственно взлом или вскрытие, дешифрование шифра или шифросистемы - это успешное применение криптографической атаки; криптоанализ (cryptanalysis) и криптоаналитик (cryptanalytic) - соответственно набор методик и алгоритмов дешифрования криптографически защищенных сообщений, анализа шифросистем и человек, все это осуществляющий; дешифрование (deciphering) и расшифрование (decryption) - соответственно методы извлечения информации без знания криптографического ключа и со знанием оного. Термин "дешифрование" обычно применяют по отношению к процессу криптоанализа шифротекста (криптоанализ сам по себе, вообще говоря, может заключаться и в анализе шифросистемы, а не только зашифрованного ею открытого сообщения); криптографический ключ (cryptographic key, cryptokey, иногда просто key) - в случае классических криптосистем секретная компонента шифра. Должен быть известен только законным пользователям процесса обмена информации; зашифрование (encryption) - процесс зашифрования информации, то есть применения криптографического преобразования данных, эту информацию содержащих; аутентичность данных и систем (authenticity of information) - для данных аутентичность можно определить как факт подтверждения подлинности информации, содержащейся в этих данных, а для систем - способность обеспечивать процедуру соответствующей проверки - аутентификации данных; аутентификация (authentication) - процедура проверки подлинности данных, то есть того, что эти данные были созданы легитимными (законными) участниками процесса обмена информации; гамма-последовательность или просто гамма (gamma sequence, gamma) - обычно этот термин употребляется в отношении последовательности псевдослучайных элементов, которые генерируются по определенному закону и алгоритму. Однако в случае, когда это не так, употребляется модификация термина - например, "равновероятная гамма" или "случайная гамма" - для обозначения последовательностей, элементы которых распределены по равномерному вероятностному закону, то есть значения имеют сплошной спектр; гаммирование (gamma xoring) - процесс "наложения" гамма-последовательности на открытые данные. Обычно это суммирование в каком-либо конечном поле (например, в поле GF(2) (см. [4, 6 и 9]) такое суммирование принимает вид обычного "исключающего ИЛИ" суммирования); имитозащита - это защита данных в системах их передачи и хранения от навязывания ложной информации. Имитозащита достигается обычно за счет включения в пакет передаваемых данных имитовставки; имитовставка - блок информации, вычисленный по определенному закону и зависящий от некоторого криптографического ключа и данных; блочные (блоковые) и поточные (потоковые) шифры - авторы сознательно используют термин "блочный" шифр, а не "блоковый", как наиболее популярный и устоявшийся. Понятия "поточного" и "потокового" шифров идентичны и одинаково популярны, однако в силу симметрии авторы предпочитают использовать термин "поточный шифр", но "потоковая обработка информации"; криптографическая стойкость, криптостойкость (cryptographic strength) - устойчивость шифросистемы по отношению ко всем известным видам криптоанализа; принцип Керкхоффа (Kerchkoff) - принцип изобретения и распространения криптографических алгоритмов, в соответствии с которым в секрете держится только определенный набор параметров шифра (и в обязательном порядке криптографический ключ), а все остальное может быть открытым без снижения криптостойкости алгоритма. Этот принцип был впервые сформулирован в работе голландского криптографа Керкхоффа "Военная криптография" вместе с дюжиной других, не менее известных (например, о том, что шифр должен быть удобным в эксплуатации, а также о том, что шифр должен быть легко запоминаемым); развертывание или разворачивание ключа (key shedule) - процедура вычисления последовательности подключей шифра из основного ключа шифрования; раунд или цикл шифрования (round) - один комплексный шаг алгоритма, в процессе которого преобразовываются данные; подключ шифрования (round key, subkey) - криптографический ключ, вычисляемый и используемый только на этапе шифрования из основного ключа шифрования. Обычно применяется в качестве входа функций усложнения на различных раундах шифрования; шифр и шифросистема (cipher, cypher, ciphercode) - обычно выход криптосистемы и сама симметричная криптосистема соответственно. В зависимости от контекста шифр может обозначает "шифровку", то есть зашифрованное с его помощью сообщение, либо саму криптографическую систему преобразования информации.


Рабочий инструментарий, который может пригодиться читателю


Исследуя вопросы реализации криптографических методов защиты информации, мы неизбежно сталкиваемся с вопросами, касающимися таких факторов, как среда программирования, язык программирования, схемы реализации и верификации программного обеспечения, тестовые испытания.

Все исходные тексты, представленные в данной книге, написаны на языках Си и Perl. Для языка Си использовалась среда разработки программного обеспечения



Архитектура сети Файстеля


На изображенной схеме буквами Li и Ri обозначены левая и правая половинки исходных данных на i-м шаге последовательного преобразования. Каждый такой целый шаг называют раундом шифрования. Функция гаммирования обозначена через Fi, поскольку на каждом раунде может быть использована своя собственная функция. Ключ также имеет индекс i, но уже в силу того, что исходный ключ k может быть преобразован некоторым образом (говорят, развернут) в последовательность итерационных ключей либо подключей, то есть ключей, которые используются непосредственно функцией гаммирования.

Как видно из схемы, сначала с помощью функции гаммирования вырабатывают гамма-последовательность, которая зависит от итерационного ключа ki и правой половины данных. После этого левая половинка просто суммируется с полученной гаммой по модулю, например, 2. Затем левая и правая половинки меняются местами. На этом один цикл шифрования заканчивается. Поскольку за один раз обрабатывается только одна половина данных, желательно, чтобы число раундов было кратно двум. В таком случае есть уверенность, что каждая из половинок будет обработана одинаковое число раз. На схеме рис. 4.2 отображена сеть Файстеля с четным числом раундов.



Сеть Файстеля с несколькими раундами


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

Архитектура разбалансированной сети Файстеля выглядит весьма похоже на архитектуру обычной сети и определяется таким же способом. Единственное, но весьма существенное отличие состоит в том, что, поскольку используется разбиение не на равные половинки блока, а на участки различной длины, функция гаммирования, обозначенная буквой "F", может зависеть не от всех битов исходного блока данных или иметь разные зависимости в разных раундах.

Собственно говоря, разбалансированную сеть Файстеля можно рассматривать как обобщение понятия сети Файстеля. Стойкость криптосистемы, построенной на основе сети Файстеля, зависит целиком от результата исполнения нелинейной функции гаммирования в нескольких итерациях. Поэтому для обеспечения достаточной надежности данные должны быть преобразованы с достаточно большим числом раундов, что позволяет достичь требуемых свойств рассеивания и полноты и соответственно стойкости шифра к дифференциальному и линейному криптоанализу (см. раздел "Современные методы криптоанализа").



Архитектура разбалансированной сети Файстеля


В большинстве шифров с архитектурой сети Файстеля используемая функция F в течение каждого раунда зависит только от одного из подключей, вырабатываемых из основного ключа шифра. Это свойство на самом деле не является основополагающим или положительно влияющим на стойкость шифра - в шифре Khufru, например, параметры функции F изменяются после зашифрования каждого следующего символа. Сеть с такого рода зависимостью функции гаммирования называют гетерогенной и гомогенной в противном случае. Применение гетерогенных сетей может значительно улучшить характеристики шифра, поскольку неравномерное изменение внутренних свойств сети в пределах допустимых границ делает изучение свойств шифра достаточно затруднительным занятием. Меняя размеры половинок и их влияние на выход шифра, можно добиться впечатляющих статистических результатов, поскольку существует очевидная зависимость не только между сложностью функции гаммирования, но и структурой используемой сети Файстеля.

Целью построения блочных шифров является не только создание стойкого алгоритма защиты информации, но и такого, чтобы его реализация была достаточно дешевой, а время работы как можно более меньшим. Именно поэтому, легко реализуемые шифры на базе гомогенных сбалансированных сетей Файстеля применяются гораздо чаще и считаются своего рода "панацеей". Однако это вовсе не означает, что они являются более криптостойкими и надежными.

Естественным путем увеличения сложности анализа сетей Файстеля является следующий метод (кстати, использованный и в алгоритме в соответствии с ГОСТ 28147-89 - отечественным стандартом криптографического преобразования данных). Для того чтобы распространить влияние функции F в одном раунде на выход и функцию следующего раунда, к выходному значению F прибавляют по некоторому модулю значение итерационного подключа для текущего раунда и затем полученное значение подают на вход функции F следующего раунда шифрования. Такой способ организации сети ставит выходы последующих раундов шифров в прямую зависимость от предыдущих, что способствует организации лавинного эффекта и полноты.

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

uint16_t F_Gamma(uint16_t data_half, uin8_t key) { // используем какие-либо сложные преобразования // но желательно такие, чтобы их выполнение было как можно более быстрым return (data_half ^ ((uint16_t) key * 0xABCD1234); } uint32_t Feistel_Network(uint32_t data, uint8_t key, int rounds) { uint16_t left, right, swap; left = data & 0xFFFF; // делим данные (размер 32 бита) right = (data >> 16) & 0xFFFF; // на половинки по 16 битов for (int i = 0; i < rounds; i++) { swap = left ^ F_Gamma(right, key); // готовим левую половинку left = right; // и меняем местами левую и правую right = swap; // половинки } return (left | ((uint32_t) right << 16)); }



Рога и Копыта


Таким образом, для выбранного специалистами фирмы "Рога и Копыта" способа шифрования (то есть однократного шифрования равновероятной гаммой) существуют вполне приемлемые условия, при которых может быть использован по крайней мере один способ подделки сообщений. А это уже весьма ощутимый результат, который может оказаться "последней ошибкой".

Аналогичным и еще более простым с точки зрения криптоанализа примером является шифрование методом однократного гаммирования электронных почтовых сообщений.

Сообщения электронной почты в сети Интернет передаются (как и многие другие данные простых сетевых протоколов прикладного уровня) в текстовом виде, приемлемом для анализа невооруженным взглядом. В листинге 7.13 представлен пример почтового сообщения в том виде, в котором оно путешествует в сети от компьютера к компьютеру. А листинг 7.14 содержит то же самое сообщение, но так, как его видит рядовой пользователь.

From POPmail Tue Nov 17 18:45:15 1998 (with Netcom Interactive pop3d (v1.21.1 1998/05/07) Wed Nov 18 02:39:15 1998) X-From_: seg@crow.sec.gov Tue Nov 17 20:36:28 1998 Received: from crow.sec.gov (crow.sec.gov [204.192.28.11]) by multi33.netcomi.com (8.8.5/8.7.4) with ESMTP id UAA32707 for <fc@all.net>; Tue, 17 Nov 1998 20:36:28 -0600 Received: (from seg@localhost) by crow.sec.gov id VAA01882 for fc@all.net; Tue, 17 Nov 1998 21:37:15 -0500 From: Joe Segreti <seg@crow.sec.gov> Message-Id: <199811180237.VAA01882@crow.sec.gov> Subject: Ответ на пpедложение To: fc@all.net Date: Tue, 17 Nov 1998 21:37:14 -0500 (EST) X-Mailer: ELM [version 2.4 PL25 PGP7] MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit Добpого вpемени суток! Уважаемые коллеги, пpедлагаем вам следующую фоpму сотpудничества. …

Листинг 7.13

Date: Tue, 17 Nov 1998 21:37:14 -0500 (EST) From: Joe Segreti <seg@crow.sec.gov> To: fc@all.net Subject: Ответ на пpедложение Добpого вpемени суток! Уважаемые коллеги, пpедлагаем вам следующую фоpму сотpудничества. …



Сеть Файстеля


В начале 1970-х годов, сознавая необходимость защиты уже электронной информации при передаче данных в сетях ЭВМ (особенно бизнес-транзакций, при осуществлении денежных переводов и передаче конфиденциальных финансовых данных), компания International Business Machines (она же известная во всем мире как IBM) приступила к выполнению собственной программы научных исследований, посвященных защите информации в электронных сетях, в том числе и криптографии. Так развитие одной передовой технологии повлекло за собой настоящую революцию в другой.

Поскольку в ряде университетов Соединенных Штатов (таких, как Станфордский университет и Массачусетский технологический институт) всегда существовал интерес к данной области исследования, IBM постаралась привлечь университетских специалистов к разработке методов защиты электронной информации. Это было отчасти вызвано и тем, что многие из специалистов этих университов активно сотрудничали с военными кругами и соответственно специалистами военной разведки - основными потребителями криптографических методов сокрытия и защиты информации. Поэтому университетские криптографы обладали несколько большими объемами информации о защите информации, нежели другие профессиональные математики и аналитики. Ведь военные специалисты в то время были единственными источниками достойной научной информации, посвященной криптографии, хорошо знавшими криптографию не только с теоретической, но и практической стороны.

Команду разработчиков фирмы IBM, приступившую к исследованию систем шифрования с симметричной схемой использования ключей, возглавил доктор Хорст Файстель, в то время уже ставший довольно известным криптографом.

Файстель до того момента уже успел тесно поработать с Клодом Шенноном в компании Bell Laboratories. Идеи Шеннона вдохновляли многих исследователей на оригинальные изобретения. Свидетельством тому является довольно большое количество патентов, зарегистрированных и принятых в середине 60-х годов Национальным патентным бюро США (United States Patent and Trademark Office). Файстель активно сотрудничал с Шенноном и не мог не заразиться его идеями. На его счету как минимум два патента и несколько революционных статей в области криптографии и криптоанализа.

Воплотить большую часть из своих идей в жизнь он смог с помощью возможностей, предоставленных ему компанией IBM, не жалевшей денег и специалистов на разработку новых методов защиты электронной информации. Передовая технология требовала инвестиций и отнюдь не гарантировала быстрой отдачи, требовалось время на разработку действительно эффективных средств защиты электронного документооборота - эффективной и стойкой к взлому шифросистемы и методов ее использования. Представители руководства IBM понимали это и в достаточной степени предоставили свободу разработчикам, поставив перед ними в общем-то нелегкую и нетривиальную задачу.

Надо признать, что результат оправдал ожидания. Им стала проведенная в исследовательской лаборатории IBM Watson Research Lab разработка новой оригинальной архитектуры построения симметричных шифров на базе необратимых преобразований. Архитектура нового способа шифрования впоследствии была названа в классической литературе архитектурой Файстеля (на данный момент в русской и зарубежной криптографии существует более устоявшийся термин: сеть Файстеля или Feistel's network). Позднее, в соответствии с разработанными Хорстом принципами, был сконструирован шифр Люцифер (Lucifer) - первый серьезный блочный шифр, описание которого появилось в открытой литературе и вызвало новую волну интереса специалистов к криптографии в целом.

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

Идея использования операции "исключающее ИЛИ" возникла из классических примеров систем шифрования, а именно из идеи использовать самый простой с технической точки зрения способ шифрования - гаммирование. Стойкость такого способа, как известно, зависит от свойств вырабатываемой гаммы. Следовательно, процесс выработки гаммы - двоичной последовательности, которую затем суммируют с открытым текстом, - является самым узким местом во всем способе.

Файстель разрешил проблему следующим образом. Изначально выбирается размер блока данных, который будет зашифрован за одну итерацию алгоритма шифрования. Обычно размер блока фиксирован и не изменяется во время работы алгоритма над открытым текстом. Выбрав достаточно большого размера блок данных, его делят, например, пополам и затем работают с каждой из половинок. Если размер левой половинки равен размеру правой, такую архитектуру называют классической или сбалансированной сетью Файстеля. Если же деление блока данных происходит не на равные части, то такой алгоритм называют разбалансированной сетью Файстеля.

Предложенная им схема шифрования легко может быть продемонстрирована с помощью схемы шифрования (рис. 4.1).



Список литературы


Столлингс В. , "Криптография и защита сетей" , М: Вильямс, 2001. Медведовский И.Д., Семьянов П.В., Платонов В.В., "Атака через Интернет ", СПб: 1999. В.Г.Проскурин, С.В.Крутов, И.В.Мацкевич: "Защита в операционных системах", М: Радио и связь: 2000. Аграновский А.В., Хади Р.А., Ерусалимский Я. М., "Открытые системы и криптография" , Телекоммуникации, 2000. Agranovsky A.V., Hady R.A. , "Crypto miracles with random oracle" , The Proceedings of IEEE SIBCOM'2001, The Tomsk Chapter of the Institute of Electrical and Electronics Engineers, 2001. А.В.Аграновский, А.В.Балакин, Р.А.Хади, "Классические шифры и методы их криптоанализа", М: Машиностроение, Информационные технологии, №10, 2001. А.А.Молдовян, Н.А.Молдовян, Советов Б.Я., "Криптография": СПб.: Издательство "Лань", 2000. С.Расторгуев, "Программные методы защиты информации в компьютерах и сетях", М:Издательство Агентства "Яхтсмен", 1993. А. Ростовцев, "Алгебраические основы криптографии", СПб: Мир и Семья, 2000. Чмора А.Л. , "Современная прикладная криптография" , М.: Гелиос АРВ, 2001. Устинов Г.Н. , "Основы информационной безопасности" , М: Синтег, 2000. Анин Б. , "Защита компьютерной информации" , СПб: БХВ, 2000. Романец Ю.В., Тимофеев П.А. , "Защита информации в компьютерных системах и сетях" , М: Радио и связь, 2001. Menezes A., van Oorschot P., Vanstone S. , "Handbook of Applied Cryptography" , CRC press, 1996. Schneier B. , "Applied Cryptography" , John Wiley & Sons Inc, 1996. Милославская Н.Г., Толстой А.И. , "Интрасети: доступ в Интернет , защита" , М.: ЮНИТИ-ДАНА, 2000. Gutmann P.: "Network Security", University of Auckland, 1996. Саломаа А.: "Криптография с открытым ключом", Москва: "Мир", 1995. - 318с. Олифер В., Олифер Н.: "Компьютерные сети", Спб: Издательство "Питер", 1999. - 672с.



Стpуктуpа глав, или Как читать эту книгу


Книга, которую вы держите в своих руках, насыщена довольно разнообразным материалом. К сожалению, нет простых путей в изучении сложных вещей. По этой причине главы и разделы этой книги, возможно, придется читать в разном порядке - в зависимости от подготовки и уровня знаний читателя. Сейчас, в самом ее начале, неплохо сделать маленькую остановку и в краткой форме познакомиться с содержанием каждой главы и некоторых разделов, с тем чтобы определиться, что читать в первую очередь, а что оставить "на потом".

Как наверняка уже успел заметить внимательный читатель, всего в книге семь глав. Основные материалы в ней разделены между всеми главами поровну. Три главы носят вводный характер, остальные три носят прикладной характер. Первая глава является вводной.

Весь материал довольно четко сначала был разделен на два уровня, а затем слит воедино для удобства чтения. Так, в основном в книге более детальные описания криптосистем расположены после общих утверждений и небольших введений в соответствующие области криптографии и криптоанализа. Материал разного уровня обычно достаточно автономен и заключен в различные разделы глав. Однако общая концепция ее состоит в использовании общего и единого логического пути чтения всей книги последовательно. Хотя, конечно, как именно будет читать книгу ее непосредственный владелец - это его личное дело. Но чтобы оценить уровень своей подготовки и, не испытывая трудностей, преодолеть все без исключения страницы данной книги, читатель может ознакомиться с разделом "Для кого и о чем эта книга".

В этой книге авторы уделяют особое внимание вопросам терминологии вообще и русской терминологии в криптографии особенно. Сложившейся специализированной открытой отрасли русской терминологии в этой области уже более сорока лет, хотя в последнее время она претерпевает многочисленные изменения и дополнения. Учитывая это, авторы, чтобы избежать возможных недоразумений и недомолвок, пользуются своей привычной терминологией, стараясь использовать не популярные общепринятые толкования, а их стандартизированные эквиваленты. По этой причине всем без исключения мы советуем прочесть раздел "К вопросу о терминологии", поскольку он довольно важен и для начинающего, и для уже подготовленного специалиста. Многие вопросы, освещенные в данной книге, используют только ту терминологию, которая описана в указанном разделе.

Те читатели, кто хотят получить также и практический опыт параллельно с чтением книги, возможно предпочтут сначала хотя бы пробежать взглядом раздел "Рабочий инструментарий, который может пригодиться читателю". Кроме этого, людям, тяготеющим более к практическому программированию, чем к теоретическим выкладкам, следует обязательно обратить внимание на раздел "Отступление для программистов" второй главы "Теория секретных систем", в котором содержится соответствующая вводная информация и исходные тексты. Они будут активно использоваться в исходных текстах и частях книги "для пишущей братии" во всех остальных главах.

Конечно, в книге, связанной, пожалуй, с самой интригующей научной областью исследований, немало внимания уделяется увлекательным фактам из истории, особенно если они носят полумистический характер. Так, в третьей и пятой главах, целиком посвященных такой животрепещущей теме, как криптоанализ, читатель сможет прочесть даже о шифрах, которые использовались советской разведкой в прошлом, только что ушедшем от нас веке. Приведенные в третьей главе рассказы об известных головоломках могут увлечь не хуже хорошего детектива. Одной из таких головомок, заданных человечеству, являются шифры известного писателя и мистика Эдгара По, бывшего блистательным криптографом и криптоаналитиком. В конце второй главы дается решение двум его шифрам, проделанное именно с помощью компьютера, то есть, по сути, с помощью компьютерного криптоанализа.

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

Несмотря на найденное решение довольно сложной проблемы выстраивания около полусотни разделов глав и расположения материала книги в логически стройные последовательности, книгу можно использовать и как справочное пособие при разработке и оценке одноключевых криптосистем. Это верно, поскольку третья глава "Как устроены современные шифры", кроме общей информации о классических системах шифрования наших дней, носит также и справочный характер, представляя более углубленный материал о популярных современных симметричных шифрах, а следующая за ней глава "Дешифрование современных шифров" описывает собственно методы их криптоанализа.

Кроме описания довольно популярных блочных и поточных криптосистем, в книгу было решено включить и довольно нестандартные решения и алгоритмы в области обеспечения конфиденциальности информации. Результатом этого решения стало появление дополнительной главы "Криптографическое сжатие", приведшее также к необходимости краткого изложения теории и методов сжатия.

Вторая глава предоставляет информацию о современной криптографии, начиная с эпохи Клода Шеннона и заканчивая принятым совсем недавно новым стандартом шифрования США. Параллельно с историческими аспектами и рассмотрением различных архитектур построения шифров рассматриваются современные методы криптоанализа, а также их возможные компьютерные реализации. Детально обсуждаются такие параметры симметричных шифров, как размер ключа и управляемые криптографические примитивы.

Каждое ружье, висящее на стене, должно когда-либо выстрелить. Этой непререкаемой истине последовали и авторы книги. Потому в седьмой главе "Прикладные задачи шифрования" все "ружья" оказались при деле. Именно в ней раскрываются решения прикладных задач: конфиденциальной связи, защищенных контейнеров данных, защиты исходных текстов и данных с помощью криптографических методов, о которых рассказано ранее. Кроме этого, в главе представлен пример исследования программного обеспечения на предмет надежности использования криптографических средств шифрования. Авторы провели небольшое исследование метода шифрования криптодиска популярной программы PGPDisk.

Каждая глава имеет самостоятельную нумерацию примеров исходных текстов - листингов программ и рисунков, а также независимый список литературы для углубленного изучения.

Таким образом, логическую цепочку связи глав можно представить приблизительно так:

I глава | \ | II глава | / III глава | \ | V глава | | IV глава | | | VI глава --^ | VII глава

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