Алгоритмы симметричного шифрования
Сеть Фейштеля
Блочный алгоритм преобразовывает n-битный блок незашифрованного сообщения в n-битный блок зашифрованного сообщения. Число блоков длины n равно 2n. Для того чтобы преобразование было обратимым, каждый из таких блоков должен преобразовываться в свой уникальный блок зашифрованного сообщения. Если длина блока будет маленькой, то такая перестановка плохо скрывает статистические особенности и закономерности незашифрованного сообщения. Если блок имеет длину 64 бита, то он уже хорошо скрывает статистические особенности и закономерности исходного сообщения. В любом случае преобразование сообщения не может быть произвольным в силу того, что ключом при этом будет являться само преобразование, что исключает эффективную как программную, так и аппаратную реализации.
Наиболее широкое распространение получили сети Фейштеля, так как, с одной стороны, на их основе можно разработать алгоритм, удовлетворя-ющий всем требованиям к алгоритмам симметричного шифрования, а с другой стороны, реализация такого алгоритма достаточно проста и ком-пактна.
Сеть Фейштеля имеет следующую структуру. Входной блок делится на несколько равной длины подблоков, называемых ветвями. В случае, если блок имеет длину 64 бита, используются две ветви по 32 бита каждая. Каж-дая ветвь обрабатывается независимо от другой, после чего осуществляется циклический сдвиг всех ветвей влево. Такое преобразование выполняется циклически. В случае двух ветвей каждый раунд имеет структуру, показанную на рисунке:
Функция F называется образующей. Каждый раунд состоит из вычис-ления функции F для одной ветви и побитового выполнения операции XOR результата F с другой ветвью. После этого ветви меняются местами. Считается, что оптимальное число раундов должно быть от 8 до 32. Важно то, что увеличение количества раундов значительно увеличивает криптостой-кость алгоритма. Возможно эта особенность и повлияла на столь активное распространение сети Фейштеля, так как для большей криптостойкости достаточно просто увеличить количество раундов, не изменяя сам алго-ритм. В последнее время количество раундов не фиксируется, а лишь указываются допустимые пределы.
Сеть Фейштеля является обратимой даже в том случае, если функция F не является таковой, так как для расшифрования не требуется вычислять F-1. Для расшифрования используется тот же алгоритм, но на вход подается зашифрованное сообщение, и ключи используются в обратном порядке.
В настоящее время все чаще используются различные разновидности сети Фейштеля для 128-битного блока с четырьмя ветвями. Увеличение количества ветвей, а не размерности каждой ветви связано с тем, что наиболее популярными до сих пор остаются процессоры с 32-разрядными словами, следовательно, оперировать 32-разрядными словами эффективнее, чем с 64-разрядными.
Основной характеристикой алгоритма, построенного на основе сети Фейштеля, является функция F. Различные варианты касаются также начального и конечного преобразований. Подобные преобразования, назы-ваемые забеливанием (whitening),осуществляются для того, чтобы выпол-нить начальную рандомизацию входного текста.
Криптоанализ
Процесс, при котором предпринимается попытка узнать P, K или и то, и другое, называется криптоанализом. Одной из возможных атак на алго-ритм шифрования является "лобовая атака", называемая также "атакой грубой силы" - "brute force атака". Данная атака состоит в простом переборе всех возможных ключей. Если множество ключей достаточно большое, то подобрать ключ нереально. При длине ключа n бит количество возмож-ных ключей равно2n. Таким образом, чем длиннее ключ, тем более стойким считается алгоритм для лобовой атаки.
Существуют различные типы атак, основанные на том, что противнику известно определенное количество пар незашифрованное сообщение – за-шифрованное сообщение. При анализе зашифрованного сообщения про-тивник часто применяет статистические методы анализа текста. При этом он может иметь общее представление о типе сообщения, например, англий-ский или русский текст, выполняемый файл конкретной ОС, исходный текст на некотором языке программирования и т.д. Во многих случаях криптоаналитик имеет достаточно много информации об исходном тексте. Криптоаналитик может иметь возможность перехвата одного или несколь-ких незашифрованных сообщений вместе с их зашифрованным видом. Или криптоаналитик может знать основной формат или основные характери-стики сообщения. Говорят, что криптографическая схема абсолютно безопасна, если зашифрованное сообщение не содержит никакой информации об исходном сообщении. Говорят, что криптографическая схема вычислительно безопасна, если:
- Цена расшифровки сообщения больше цены самого сообще-ния.
- Время, необходимое для расшифровки сообщения, больше срока жизни сообщения.