В качестве основного критерия классификации криптографических алгоритмов будем использовать тип выполняемого над исходным текстом преобразования. Классификация по этому критерию представлена на рис. 2.1.
Рис. 2.1. Общая классификация криптографических алгоритмов
Тайнопись предполагает, что отправитель и получатель производят над сообщением преобразования, известные только им двоим. Сторонним лицам неизвестны выполняемые алгоритмом изменения над открытым текстом, что и является гарантией нераскрываемости данных на этапе анализа.
В противовес тайнописи, криптоалгоритмы с ключом построены на том принципе, что алгоритм воздействия на передаваемые данные известен всем сторонним лицам, но он зависит от некоторого параметра, который держится в секрете – «ключа», который известен только двум лицам, участвующим в обмене информацией. Основу такого подхода к шифрованию заложил в конце XIX века голландец Огюст Керкхофф, который предложил, что стойкость шифра должна определяться только секретностью ключа, т.е. криптоаналитику могут быть известны все детали процесса (алгоритма) шифрования и дешифрования, но неизвестно, какой ключ использован для шифрования данного текста. В настоящее время криптография занимается исключительно алгоритмами с ключами. Это обусловлено тем, что защищенность системы не должна зависеть от секретности чего-либо, что невозможно быстро изменить в случае утечки секретной информации, а изменить ключ шифрования на практике гораздо проще, чем весь используемый в системе алгоритм.
Криптосистемы с ключом делятся на симметричные и асимметричные системы шифрования. Модель симметричной системы шифрования представлена на рис. 2.2.
Рис. 2.2. Обобщенная модель симметричной системы шифрования
Отличительной чертой симметричных алгоритмов шифрования является наличие одного ключа шифрования (k на рис.2.2), который должен быть известен только отправителю и получателю сообщения. Отправитель на ключе k шифрует сообщение, получатель дешифрует полученный шифротекст ключом k. Криптоаналитик может перехватить шифротекст Y, передаваемый по открытым каналам связи, но, так как он не знает ключа, задача вскрытия шифротекста является очень трудоемкой. Принципиальным моментом является необходимость наличия секретного канала связи между получателем и отправителем для передачи ключа шифрования без возможности его перехвата криптоаналитиком.
Асимметричная система шифрования работает по схеме, представленной на рис. 2.3.
Рис. 2.3. Обобщенная модель асимметричной системы шифрования
Отличительной особенностью асимметричных алгоритмов является наличие пары ключей шифрования: открытого kот, который передается второй стороне по незащищенному каналу связи и поэтому может быть известен криптоаналитику,а также закрытого kзак, который известен лишь одному человеку (получателю сообщения) и держится в секрете. Пара ключей обладает тем свойством, что сообщение, зашифрованное на одном из ключей, может быть расшифровано только на другом ключе. Фактически это означает, что секретным каналом передачи информации на схеме рис. 2.3 является направление «отправитель-получатель», поскольку сообщение, зашифрованное на открытом ключе отправителем, может дешифровать своим закрытым ключом только получатель.
В зависимости от размера блока шифруемой информации криптоалгоритмы делятся на блочные и поточные шифры. Единицей кодирования в потоковых шифрах является один бит. Результат кодирования не зависит от прошедшего ранее входного потока. Схема применяется в системах передачи потоков информации, то есть в тех случаях, когда передача информации начинается и заканчивается в произвольные моменты времени и может случайно прерываться. Для блочных шифров единицей кодирования является блок из нескольких байтов. Результат кодирования зависит от всех исходных байтов этого блока. Схема применяется при пакетной передаче информации и кодировании файлов.
Еще одним критерием классификации криптоалгоритмов является тип выполняемых преобразований над блоками открытого текста. По этому критерию криптоалгоритмы разделяют на подстановочные иперестановочные. В перестановочных шифрах блоки информации не изменяются сами по себе, но изменяется их порядок следования, что делает информацию недоступной стороннему наблюдателю. Подстановочные шифры изменяют сами блоки информации по определенным законам.
Деление криптоалгоритмов на моноалфавитные и многоалфавитные характерно для подстановочных шифров. Моноалфавитные криптоалгоритмы заменяют блок входного текста (символ входного алфавита) на один и тот же блок шифротекта (символ выходного алфавита). В многоалфавитных шифрах одному и тому же блоку входного текста могут соответствовать разные блоки шифротекста, что существенно затрудняет криптоанализ.
По степени секретности криптоалгоритмы делятся на абсолютно стойкие и практически стойкие. Абсолютно стойкие шифры невозможно вскрыть. На практике этого можно добиться, только если размер используемого ключа шифрования превышает размер кодируемого сообщения и при этом ключ используется однократно. Практически стойким называется шифр, для которого не существует более эффективного способа взлома, кроме как полным перебором всех возможных ключей шифрования.
Говоря об атаках на шифры, можно выделить следующие виды атак: атака на основе шифротекста, атака на основе известного открытого текста, атака на основе выборочного открытого текста.
При атаке на основе шифротекста криптоаналитику известен только закодированный текст и на его основе он должен узнать секретный ключ шифрования.
Атака на основе открытого текста предполагает, что криптоаналитику известны одна или несколько пар «открытый текст/шифротекст», зашифрованных на одном ключе, и на основе этой информации он проводит свой анализ.
Выполняя атаку на основе выборочного открытого текста, злоумышленник имеет возможность подать на вход шифрующего устройства произвольный открытый текст и получить соответствующий ему шифротект. Для того, чтобы называться практически стойким, криптоалгоритм должен успешно противостоять любому из перечисленных типов атак.