Марат Давлетханов
На
сегодняшний день существует огромное множество различных алгоритмов шифрования.
Надежность некоторых из них подтверждена исследованиями экспертов в области
криптографии, другие не могут этим похвастать. А еще есть целая группа алгоритмов,
принятых в качестве стандартов в тех или иных странах. Естественно, это говорит
об их высоком качестве: надежности, скорости обработки данных, универсальности
и т. п. Еще одним преимуществом этой группы является то, что по мере
устаревания алгоритма в качестве национального стандарта принимается новая,
более современная разработка. Так было, например, с американским стандартом
шифрования. Первоначально им был алгоритм DES, а в конце прошлого века ему на
смену пришла более современная разработка AES.
В нашей стране в качестве стандарта используется
технология, описанная в ГОСТе 28147-89 «Системы обработки информации. Защита
криптографическая. Алгоритм криптографического преобразования». Как видно из
названия, этот ГОСТ был принят в 1989 году и с тех пор не изменялся. Но мало
кто знает, что этот алгоритм шифрования разработали в КГБ еще в конце 70-х
годов. Но стоит ли доверять такому старому алгоритму? Не подведет ли он? И не
лучше ли обратить свое внимание на более современные разработки? Что ж, давайте
попробуем разобраться в этом вопросе.
Во-первых, нужно учитывать, что алгоритм, описанный в
ГОСТе 28147-89, создавался с достаточно большим «запасом прочности». По этому
параметру он на порядок превосходил американский DES, который сначала заменили
на тройной DES (то есть одну и ту же информацию «прогоняли» три раза), а потом
на AES. Таким образом, и на сегодняшний день криптостойкость российского
стандарта вполне удовлетворяет всем современным требованиям. Вторая причина
большого распространения ГОСТа 28147-89 - наше законодательство. Так, например,
государственные организации и многие коммерческие структуры обязаны
использовать для защиты данных сертифицированные средства защиты. Однако
получение сертификата возможно только в том случае, если «в указанных
криптосредствах реализованы криптографические алгоритмы, объявленные
государственными или отраслевыми стандартами Российской Федерации». Таким
образом, у многих компаний просто-напросто нет выбора. Однако, как мы уже
говорили, ГОСТ 28147-89 удовлетворяет всем современным требованиям, а поэтому
вряд ли кто-то будет расстраиваться из-за необходимости его использования.
Алгоритм,
описанный в ГОСТе 28147-89, является типичным представителем класса
симметричных. В его основе лежит так называемая сеть Фейстеля. Принцип ее
работы заключается в следующем. Первоначальный блок данных (в ГОСТе 28147-89
это 64 бита) разбивается на несколько подблоков. Часть этих подблоков
преобразовывается по определенным законам, а потом накладывается на
необработанные подблоки. Затем они меняются местами и снова обрабатываются. И
все эти действия повторяются определенное число раз.
На основе сети Фейстеля построен целый ряд различных
алгоритмов. Вот только, несмотря на внешнее сходство, их криптостойкость и
скорость работы очень сильно различаются. Все зависит от действий, которые
выполняются над подблоками. Именно поэтому они и называются «основным
криптографическим преобразованием». В ГОСТе 28147-89 используются относительно
простые для реализации, быстрые для исполнения и устойчивые к взлому операции.
Таким образом, этот алгоритм отличается в лучшую сторону от большинства своих «собратьев».
Алгоритм, описанный в ГОСТе 28147-89, может работать в
трех различных режимах. Первый из них - простая замена. В этом случае блоки
шифруются независимо друг от друга и от положения в массиве исходной
информации. То есть две одинаковые последовательности размером в 64 бита и
после обработки останутся одинаковыми. Нужно ли говорить, что это недопустимо
для качественного и надежного алгоритма шифрования. Кроме того, в режиме
простой замены очень желательно, чтобы объем исходного массива данных был
кратен 64 битам. В противном случае наблюдается снижение криптоустойчивости
алгоритма к некоторым видам атак.
На первый взгляд кажется, что режим простой замены
абсолютно непригоден для практического использования. Однако на самом деле это
не совсем так. Дело в том, что есть информация, которая практически всегда
кратна 64 битам и не имеет в себе повторяющихся блоков этого размера. Речь
идет, конечно же, о ключах шифрования. И действительно, задача их кодирования
достаточно часто встает перед пользователями. И именно для ее решения подходит
режим простой замены. Тем более что работает он быстрее других способов шифрования.
Вторым
режимом работы алгоритма, описанного в ГОСТе 28147-89, является гаммирование.
Этим словом обозначают «наложение (снятие) на открытые (зашифрованные) данные
криптографической гаммы, то есть последовательности элементов данных,
вырабатываемых с помощью некоторого криптографического алгоритма, для получения
зашифрованных (открытых) данных». В рассматриваемом алгоритме для этой цели
используется операция побитового сложения по модулю 2, поскольку она является
обратной самой себе и к тому же наиболее просто реализуется аппаратно.
Таким образом, использование гаммирования решает обе
проблемы простой замены. Во-первых, применение различных гамм для шифрования
одинаковых последовательностей приводит к тому, что в закодированном тексте они
отличаются друг от друга. Ну и, во-вторых, никто не может помешать «обрезать»
гамму до нужного размера для шифрования блоков, отличных от стандартных. Таким
образом, режим гаммирования избавлен от всех недостатков простой замены и может
использоваться для надежного шифрования любой информации.
Третий и последний режим работы алгоритма,
описанный в ГОСТе 28147-89, - это гаммирование с обратной связью. В принципе,
он очень похож на предыдущий. Единственное отличие заключается в том, что
очередной элемент гаммы вырабатывается с помощью определенных преобразований
предыдущей последовательности информации. То есть фактически получается, что
результат кодирования блока данных зависит от ключа шифрования и предыдущего
уже зашифрованного блока. Таким образом, мы имеем связь всего закодированного
текста. И если кто-то поменяет в нем какой-либо бит, то при расшифровке
искаженным окажется не один, а два блока данных. В принципе, сильного влияния
на криптостойкость обратная связь не оказывает. Однако она может послужить дополнительной
защитой от некоторых типов атак.
В ГОСТе 28147-89 описана еще одна очень полезная
функция алгоритма шифрования. Речь идет о возможности создания имитовставки.
Что это? Имитовставка - контрольная комбинация, зависящая от открытых данных и
секретной ключевой информации. Она нужна для того, чтобы обнаружить все
случайные или преднамеренные изменения в зашифрованных данных. На первый взгляд
кажется, что имитовставка не нужна. Однако на самом деле это не так. Конечно,
обнаружить внесенные в текст изменения несложно. Тем более что полноценно
заменить одни слова другими без знания ключа нельзя. Но если злоумышленник
внесет изменения в файл, полученный путем шифрования бинарной, звуковой,
графической или видеоинформации, то при декодировании искажения перейдут и на
исходные данные. И заметить их зачастую просто-напросто нереально. Именно тогда
имитовставка и оказывается незаменимой. Да и в случае с текстом ее
использование позволяет точно узнать, вносились изменения в зашифрованный файл
или нет.
Итак, как мы видим, алгоритм, принятый в качестве
государственного стандарта РФ и описанный в ГОСТе 28147-89, сохраняет свою
актуальность и сегодня. Он обеспечивает надежную защиту любых данных и не может
быть взломан с помощью известных типов криптографических атак. Хотя, конечно,
очень многое зависит от конкретной реализации. Часто бывает так, что на базе
надежного алгоритма из-за ошибок при разработке создаются системы шифрования,
не удовлетворяющие современным требованиям. А поэтому лучше всегда отдавать
предпочтение хорошо зарекомендовавшим себя сертифицированным продуктам.