алгоритма понимается его способность противостоять как современным атакам, так и атакам в будущем. Скорость алгоритма характеризует его возможности по обработке данных и выражается временем, которое необходимо затратить на зашифровку и расшифровку сообщений. И наконец, под удобством применения понимается удобство реализации алгоритма программным или аппаратным способом. Каждый алгоритм хорош по-своему и ни один из них не идеален. В этой главе будут рассмотрены пять алгоритмов, с которыми чаще всего приходится иметь дело: стандарт шифрования данных 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 чаще основывается на том, что операции перестановки нелинейные, поэтому зашифрованный текст ничем не напоминает исходное сообщение. Поэтому методы языкового анализа зашифрованного текста, которые обсуждаются далее в этой главе, не приводят к положительному результату. Операции перестановки повышают безопасность, дополнительно шифруя уже частично зашифрованное сообщение.