Коллектив авторов - Защита от хакеров корпоративных сетей
Асимметричные криптосистемы – относительно новое направление в криптографии, возможно, более известное под синонимом криптография с открытым ключом. В асимметричных криптосистемах используются два различных ключа: открытый ключ – для зашифровки сообщения и секретный (личный) – для расшифровки. Уитфилд Диффи (Whitfield Diffie) и Мартин Хеллман (Martin Hellman) первыми заявили о криптографии с открытым ключом в 1976 году, опубликовав метод обмена ключами в системе с секретными ключами. Опубликованный ими алгоритм, впоследствии названный алгоритмом Диффи-Хеллмана (DH-алгоритмом), будет рассмотрен в этой главе. Хотя большинство считает В. Диффи и М. Хеллмана авторами криптографии с открытым ключом, тем не менее некоторые отдают приоритет английской разведке BSS (British Secret Service), поскольку якобы за несколько лет до публикации В. Диффи и М. Хеллмана BSS уже знал об аналогичном методе. Правда, предполагается, что BSS после изобретения алгоритма нигде его не использовал. Подробнее об этом читатель сможет узнать по адресу: www.wired.com/wired/archive/7.04/crypto_pr.html.
Некоторое время спустя криптография с открытым ключом стала популярной благодаря Филу Зиммерману (Phil Zimmerman), который в августе 1991 года выпустил версию 1.0 программы «Pretty Good Privacy» (PGP) для DOS. В 1993 году, после выпуска версии 2.3 программы PGP, была добавлена поддержка других платформ, в том числе UNIX и Amiga. С течением времени программа PGP была усовершенствована и распространялась многочисленными фирмами, включая ViaCrypt и PGP, Inc., которые в настоящее время вошли в состав Network Associates. Доступны как коммерческие, так и свободно распространяемые (для некоммерческого использования) версии программы PGP. Жители Соединенных Штатов и Канады могут получить свободно распространяемую версию программы с сайта http://web.mit.edu/network/pgp.html. Коммерческая версия может быть куплена на сайте Network Associates www.pgp.com.
Стандарты алгоритмов шифрования
Почему так много алгоритмов шифрования? Почему не стандартизируют один из них? Учитывая большое количество алгоритмов шифрования, следует признать, что на этот вопрос нельзя дать простой ответ. Максимум, что возможно, – это достичь компромисса между безопасностью, скоростью и удобством применения. В данном случае под безопасностью алгоритма понимается его способность противостоять как современным атакам, так и атакам в будущем. Скорость алгоритма характеризует его возможности по обработке данных и выражается временем, которое необходимо затратить на зашифровку и расшифровку сообщений. И наконец, под удобством применения понимается удобство реализации алгоритма программным или аппаратным способом. Каждый алгоритм хорош по-своему и ни один из них не идеален. В этой главе будут рассмотрены пять алгоритмов, с которыми чаще всего приходится иметь дело: стандарт шифрования данных DES (Data Encryption Standard), улучшенный стандарт шифрования AES [Rijndael], международный алгоритм шифрования данных IDEA (International Data Encryption Algorithm), алгоритм Диффи-Хеллмана и алгоритм RSA. Но знайте, что есть и другие алгоритмы, которые ничем не уступают названным.
Симметричные алгоритмы
В этой секции будет рассмотрено несколько наиболее типичных представителей класса симметричных алгоритмов: DES, его преемник AES и Европейский стандарт IDEA. Имейте в виду, что криптостойкость симметричных алгоритмов определяется прежде всего размером используемых в алгоритме ключей и числом циклов алгоритма. Все симметричные алгоритмы теоретически уязвимы к атакам «грубой силы», в основе которых лежит перебор всех возможных ключей. Но часто подобные атаки технически неосуществимы. Детально они будут обсуждены далее в главе.
Алгоритм DES
Стандарт шифрования данных (алгоритм) DES – один из старых и наиболее известных алгоритмов шифрования, который был изобретен корпорацией IBM и был американским правительственным стандартом с 1976 до 2001 года. В значительной степени DES основан на алгоритме Люцифер (Lucifer) Хорста Фейстеля (Horst Feistel), который не получил широкого распространения. Существенно то, что в алгоритме DES используется единственный 64-битовый ключ: 56 бит значащие и 8 бит – проверочные биты для контроля на четность. Алгоритм обрабатывает блоки данных порциями по 64 бита. Ключ разбивается на 16 отдельных 48-битовых подключей по одному на каждый раунд, который называется циклом Фейстеля (Feistel cycles). На рисунке 6.1 показана схема работы алгоритма DES.
Рис. 6.1. Схема алгоритма шифрования DES
В каждом раунде выполняются подстановка, во время которой биты данных заменяются битами ключа, и перестановка, во время которой замененные данные переставляются (перемешиваются). Операции перестановки, которые иногда называют перемешиванием, выполняются в S-блоках, а операции перестановки, иногда называемые операциями рассеивания, – в P-блоках. Два названных класса операций реализованы в «F-модуле» диаграммы. Безопасность DES чаще основывается на том, что операции перестановки нелинейные, поэтому зашифрованный текст ничем не напоминает исходное сообщение. Поэтому методы языкового анализа зашифрованного текста, которые обсуждаются далее в этой главе, не приводят к положительному результату. Операции перестановки повышают безопасность, дополнительно шифруя уже частично зашифрованное сообщение.
...Служба компьютерной безопасности предупреждает!
Как добиться еще большей безопасности от симметричных алгоритмов типа DES? Теоретически возможны два пути. Увеличить, во-первых, длину ключа, а во-вторых, число раундов алгоритма шифрования. Оба решения требуют повышения производительности алгоритма и ведут к замедлению зашифровки и расшифровки сообщений из-за увеличения числа математических операций. Примерами модификации алгоритма DES служат алгоритмы 3-DES (известный также под названием тройной DES) и DESX. В алгоритме 3-DES применяется 168-битовый ключ, который состоит из отдельных ключей по 56 бит в каждом. Хотя иногда первый и третий ключи совпадают. При этом достигаемая безопасность такова, как если бы использовался один 112-битовый ключ. В алгоритме DESX используется дополнительный 64-битовый ключ. Появление модификаций 3-DES и DESX вызвано необходимостью повышения криптостойкости алгоритма DES-атакам методом «грубой силы».
Каждые пять лет, начиная с 1976 и до 2001 года, Национальный институт стандартов и технологий (NIST – National Institute of Standards and Technology) подтверждал статус DES как стандарта шифрования для американских государственных учреждений. С 1990 года стареющий алгоритм начал подавать признаки надвигающейся кончины, несмотря на то что новые методы, которые, по мнению экспертов, были способны взломать DES, на практике пока еще не могли это сделать, как, например, предложенный в начале девяностых метод дифференциального криптоанализа.
На продолжительности жизни DES сказалась сравнительно малая длина ключа – существенный конструктивный недостаток алгоритма. Чем меньше длина используемых в алгоритме ключей, тем сильнее он подвержен атакам «грубой силы». Уитфилд Диффи (Whitfield Diffie) и Мартин Хеллман (Martin Hellman) были первыми, кто обратили внимание на недостаточную длину ключей DES, и уже в 1979 году предсказали алгоритму забвение через 10 лет. Несмотря на это, никто до 1997 года не смог публично взломать алгоритм DES атакой «грубой силы».
Первая известная успешная атака «грубой силы» на алгоритм DES заняла 4 месяца работы большой вычислительной сети. В 1998 году специалисты EFF (Electronic Frontier Foundation – Фонд электронной защиты) взломали DES менее чем за три дня, используя специально разработанный для этой цели компьютер под кодовым именем «Deep Crack» («Искусный взломщик»). Расходы на его разработку и производство составили чуть меньше $250 000. Рекорд взлома алгоритма DES за 22 ч принадлежит Distributed.net, которая использовала для этой цели компьютерную сеть из нескольких тысяч машин, работающих параллельно, в том числе и компьютер «Deep Crack». Осталось только добавить, что Брюс Шнейер (Bruce Schneier) теоретически обосновал возможность создания за 10 млн долл. компьютера, способного взломать DES приблизительно за 6 мин. Теперь становится понятна озабоченность NIST по поводу достойной замены DES новым алгоритмом.
Алгоритм AES (Rijndael)
В 1997 году, когда низвержение DES стало очевидным, NIST объявил о конкурсе на поиск преемника DES – улучшенного стандарта шифрования (Advanced Encryption Standard – AES). Многие криптографы с мировым именем представили на рассмотрение свои алгоритмы. Среди требований к алгоритму AES были следующие:
• подобно DES, он должен быть симметричным блочным алгоритмом с секретным ключом;
• его криптостойкость и скорость зашифрования и расширования данных должны быть выше, чем у алгоритма 3-DES;
• время жизни нового стандарта должно быть, по крайней мере, 20–30 лет;
• он должен поддерживать ключи длиной 128, 192 и 256 бит;
• он должен удовлетворять условиям свободного распространения, не должен быть запатентован, и на него нельзя предъявить права собственности.