|
|
|
|
|
Многие криптографические алгоритмы весьма сложны, и при их реализации легко допустить ошибку. Хотя можно допустить ошибку и при реализации сравнительно простых алгоритмов. В феврале 2001 года в почтовой рассылке cryptography-digest происходило обсуждение ошибки при реализации алгоритма шифрования Alleged RC4 на языке ADA. История алгоритма шифрования RC4 Потоковый шифр RC4 был разработан Роном Ривестом в 1987 году. Этот шифр позволяет использовать ключи размером от 8 до 2048 бит (с шагом 8). В RC4 для зашифрования и расшифрования применяются одни и те же действия: генерируется гамма, которая накладывается на шифруемое сообщение путем сложения по модулю 2 (операция XOR). RC4 применяется в таких продуктах, как Microsoft Office, Lotus Notes, Adobe Acrobat и др. Алгоритм RC4 является собственностью компании RSA Data Security, Inc. Его описание никогда не было опубликовано и предоставлялось партнерам только после подписания соглашения о неразглашении. Однако в сентябре 1994 года в списке рассылки Cipherpunks (Шифропанки) кто-то анонимно опубликовал алгоритм шифрования, который на всех известных тестовых значениях совпадал с RC4. С тех пор сам алгоритм перестал быть секретом, но название RC4 остается торговой маркой. То есть, чтобы получить право заявлять, что в коммерческом программном продукте используется RC4, необходимо приобрести лицензию на этот алгоритм у RSA Data Security. А без лицензии можно утверждать лишь то, что "используется алгоритм, похожий на RC4 и совпадающий с ним на всем известном множестве тестов". Именно поэтому на языке ADA был реализован Alleged (предполагаемый) RC4.
|
|
|
|
|
|
|
|
|
Криптографические алгоритмы сами по себе проходят многократную экспертную проверку, прежде чем начинают массово применяться на практике. Бывают, конечно, редкие исключения, но они скорее только подтверждают правило. Одна из криптографических хэш-функций, разработанных Роном Ривестом (Ronald Rivest), называется MD4. Аббревиатура MD расшифровывается как Message Digest (дайджест сообщения). В течение примерно 2-х лет после опубликования спецификации MD4 было представлено как минимум 3 серьезных независимых работы, посвященных криптоанализу хэшфункции MD4. В одной из этих работ описывался взлом последних двух из трех раундов алгоритма обработки данных, а в остальных работах — взлом первых двух раундов. И хотя алгоритм в целом устойчив ко всем этим методам взлома, MD4 не рекомендуется использовать в реальных приложениях. Не лишен недостатков и потоковый алгоритм шифрования, используемый в архивах формата ZIP. Этот алгоритм был разработан Роджером Шлафлай (Roger Schlafly). Внутреннее состояние шифра определяется тремя 32-битовыми регистрами, инициализируемыми следующими значениями: keyO = 0x12345678; keyl = 0x23456789; key2 = 0x34567890;
|
|
|
|
|
|
|
|
|
Иногда программист приходит к идее разработать свой собственный криптографический алгоритм или получает аналогичные инструкции от начальства. Разумеется, ничего плохого в такой попытке нет, но практика показывает, что очень редко кто достигает на этом пути положительных результатов. Дело в том, что для создания действительно хорошего алгоритма мало потребности и желания. Еще требуются глубокие знания, позволяющие проверить стойкость разработанного алгоритма ко всем известным методам криптоанатаза.
|
|
|
|
|
|
|
|
|
Программист должен не только уметь закодировать криптографический алгоритм, но и понимать основные свойства криптографических примитивов, с которыми ему придется работать. Применение криптографии вслепую, необдуманно, порождает большую вероятность того, что полученная система окажется уязвимой. Программист должен понимать, что при кодировании защиты необходимо рассчитывать не на обычного пользователя, которому лицензионным соглашением можно запретить выполнять определенные операции, а на умного и расчетливого профессионала, имеющего самые серьезные намерения по обходу или взлому защиты. И лучше всего исходить из предположения, что злоумышленнику доступны все существующие на настоящий момент знания и технологии, включая даже те, которые не доступны разработчику. Кроме того, никогда нельзя забывать, что взлом криптографической части защиты может остаться незамеченным. Злоумышленник, однажды научившись расшифровывать перехваченные сообщения, может заниматься этим очень долго, практически не опасаясь быть пойманным. Обнаружить пассивное воздействие, например чтение пакетов, передающихся по сети, практически невозможно. И, разумеется, при проектировании защиты нужно иметь в виду, что стойкость всей системы определяется стойкостью самого слабого ее звена. Теперь рассмотрим основные свойства базовых криптографических примитивов.
|
|
|
|
|
|
|
|
|
Первые работы, связанные с криптографией и криптоанализом, появились очень давно. Так, например, известно, что Аристотелю, жившему в 384—322 гг. до н. э., принадлежит способ взлома шифра, использовавшегося греками в V—IV вв. до н. э. Очень важный труд, имеющий отношение к криптоанализу, был написан в IX веке одним из крупнейших ученых арабского мира, носившим имя Абу Юсуф Якуб ибн-Исхак ибн-Ас-Сабах ибн-Умран ибн-Исмалил Аль Кинди, более известный на западе как Алькиндус. В его работе впервые описывалось применение частотного анализа для взлома шифров простой замены. До первой мировой войны информация о новейших достижениях в криптологии периодически появлялась в открытой печати. В 1918 году увидела свет монография Вильяма Фридмана (William F. Friedman) "Индекс совпадения и его применение в криптографии" ("Index of Coincidence and Its Applications in Cryptography"). Это была одна из самых значительных работ XX века в области криптоанализа.
|
|
|
|
|
|
|
|
|
Каких-нибудь 15 лет назад криптография в России (тогда еще Союзе Советских Социалистических Республик) была чем-то вроде технологии производства оружия — существование криптографии не являлось тайной, и почти в любом кинофильме про разведчиков (или шпионов, если фильм был иностранного производства) фигурировал человек, зашифровывающий или расшифровывающий секретные сообщения. Но все, что было связано с реатьной криптографией, находилось в области действия военных или спецслужб, т. е. под контролем государства. Следовательно, в книжных магазинах нельзя было найти популярных изданий по криптографии, а в открытых библиотеках не было соответствующих научных работ — криптография была закрытой. Правда, 2 июня 1989 года Постановлением Государственного комитета СССР по стандартам № 1409 был утвержден и введен в действие (с 1 июля 1990 года) ГОСТ 28147-89 "Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования".
|
|
|
|
|
|
|
|
|
Несмотря на многовековую историю криптографии и криптоанализа, до сих пор не существует математического аппарата, позволяющего доказать, что ключ шифрования определенного алгоритма невозможно найти более эффективно, чем полным перебором ключевого пространства. Скорее всего, такой математический аппарат не будет разработан и в обозримом будущем. Однако прежде чем использовать любой криптографический алгоритм, необходимо получить подтверждение его надежности. Алгоритмы шифрования с открытым ключом, как правило, позволяют свести задачу взлома шифра к хорошо известной математической проблеме, такой как разложение большого числа на простые сомножители или вычисление дискретного логарифма в конечном поле. Пока математическая проблема не имеет эффективного решения, алгоритм будет оставаться стойким. Как только эффективное решение будет найдено, стойкость всех криптографических алгоритмов и протоколов, использующих данную математическую проблему, резко снизится. Так что разработчикам и пользователям криптосистем, основанных на математической проблеме, остается лишь надеяться, что эффективное решение не существует или никогда не будет найдено. К их счастью, значительных предпосылок к близкому прорыву в этих областях математики пока нет.
|
|
|
|
|
|
|
|
|
При поиске ключа, необходимого для расшифровки перехваченного сообщения, в распоряжении криптоаналитика всегда находится метод полного перебора ключевого пространства. Поэтому объем ключевого пространства, используемого в криптосистеме, должен быть настолько велик, чтобы в ближайшем (или отдаленном, в зависимости от ценности зашифрованной информации) будущем полный перебор не успел бы завершиться. Хороший алгоритм шифрования должно быть невозможно вскрыть более эффективным методом, чем полный перебор ключевого пространства. При оценке стойкости того или иного алгоритма шифрования рассматривают несколько наиболее распространенных моделей криптоаналитических атак.
|
|
|
|
|
|
|
|
|
Основная задача криптографии — обеспечение секретности — реализуется при помощи алгоритмов шифрования. Эти алгоритмы, по определению, являются обратимыми, т. к. в противном случае восстановить зашифрованные данные будет не всегда возможно. Любой алгоритм шифрования, называемый также шифром, представляет собой две связанных математических функции, используемых для прямого и обратного преобразования информации (зашифрования и расшифрования). В некоторых алгоритмах зашифрование и расшифрование могут выполняться одной и той же функцией. Раньше защита, обеспечиваемая шифром, часто основывалась на секретности самого алгоритма шифрования. Криптографические алгоритмы, требующие сохранения в тайне последовательности преобразования данных, называются ограниченными и в настоящее время практически не находят применения — использование такого алгоритма большим количеством участников информационного обмена затрудняет обеспечение его секретности. А если один из членов рабочей группы, защищавшей внутреннюю информацию ограниченным алгоритмом, решает покинуть группу, то всем оставшимся участникам придется, во избежание возможной утечки информации, переходить на использование другого алгоритма. Еще одна проблема, связанная с применением ограниченных алгоритмов, заключается в том, что каждая группа пользователей должна применять свой уникальный, никому больше не известный алгоритм. Следовательно, алгоритм должен быть разработан внутри этой группы. А для разработки хорошего алгоритма шифрования необходимы весьма глубокие познания в криптографии, которые есть далеко не у каждого человека.
|
|
|
|
|
|
|
|
|
При любом информационном обмене существует отправитель сообщения (sender) и его получатель (recipient). Частным случаем этой схемы является ситуация, когда отправитель и получатель — одно и то же лицо, а сообщение передается не в пространстве, а во времени. Именно так может быть описан процесс хранения информации на внешнем носителе или в памяти компьютера. Зачастую отправитель желает, чтобы на всем пути следования содержимое сообщения сохранялось в тайне, т. е. чтобы злоумышленник (intruder), перехвативший сообщение, не смог понять его смысл. Также в некоторых случаях у злоумышленника есть возможность воздействовать на содержимое сообшений (изменять, удалять, создавать новые сообщения). Подразумевается, что в распоряжении злоумышленника находятся все существующие на настоящий момент технические средства, которые могут помочь в решении его задач.
|
|
|
|
|
|
|