Шифрование

Шифрование представляет собой один из способов сокрытия информации, применяемый для хранения важной информации в ненадежных источниках или передачи ее по незащищенным каналам связи.

Шифрование как процесс своей историей уходит глубоко в века. Так, подстановочные шифры существуют уже около 2500 лет. Самым ранним примером является шифр Атбаш. Он возник примерно в 600 году до н.э. и заключался в использовании еврейского алфавита в обратном порядке. Юлий Цезарь использовал подстановочный шифр, который так и назывался — шифр Цезаря. Этот шифр заключался в замещении каждой буквы другой буквой, расположенной в алфавите на три буквы дальше от шифруемой. Таким образом, буква A преобразовывалась в D, B в E, а Z — в C. Несомненно, шифрование является важнейшим средством обеспечения безопасности, однако не следует забывать и том, что само по себе шифрование не является решением всех проблем. Механизмы шифрования могут и должны являться составной частью комплексной программы по обеспечению безопасности (ИБ). Согласно классическим канонам ИБ, с помощью шифрования обеспечиваются три состояния безопасности информации:

. Конфиденциальность. Шифрование используется для сокрытия информации от неавторизованных пользователей при передаче или при хранении. . Целостность. Шифрование используется для предотвращения изменения информации при передаче или хранении.
. Идентифицируемость. Шифрование используется для аутентификации источника информации и предотвращения отказа отправителя информации от того факта, что данные были отправлены именно им.
Известно, что любая система шифрования может быть взломана. Речь идет лишь о том, что для получения доступа к защищенной шифрованием информации может потребоваться неприемлемо большое количество времени и ресурсов. Что это значит, и как это выглядит в реальной жизни? Представьте себе такую ситуацию, что злоумышленнику каким-то образом удалось перехватить зашифрованную информацию. Дальнейшие действия взломщика могут быть сведены к двум (возможен и третий вариант взлома, который сводится к эксплуатации уязвимостей рабочей среды) вариантам взлома. Это: . Атака грубой силой, или Brute Force (подразумевает подбор всех возможных вариантов ключей).
. Или же взломщик попытается найти уязвимые места в алгоритме.
Учитывая тот факт, что применяемые в настоящее время алгоритмы шифрования уже проверены "огнем и временем", совершенно очевидно, что взломщик будет использовать Brute Force. Взлом конфиденциальной информации, зашифрованной стойким алгоритмом и достаточно длинным ключом (хотя бы 512 бит), потребует со стороны взломщика использования нескольких суперкомпьютеров или распределительной сети из одной-двух сотен машин, а это уйма времени и денег… Но если деньги есть, то почему бы и нет! Так, в 1997 г. организация Electronic Frontier Foundation (EFF) анонсировала компьютерную систему, которая сможет найти ключ DES за четыре дня. Создание такой системы обошлось компании в 250.000 долларов. С помощью современного оборудования можно определить ключ DES посредством атаки "грубой силы" за 35 минут…

Алгоритмы и стандарты

В зависимости от структуры используемых ключей все методы шифрования подразделяются на:
. симметричное шифрование: посторонним лицам может быть известен алгоритм шифрования, но неизвестна небольшая порция секретной информации — ключа, одинакового для отправителя и получателя сообщения;
. асимметричное шифрование: посторонним лицам может быть известен алгоритм шифрования и, возможно открытого ключа, но неизвестен алгоритм закрытого ключа, известного только получателю.
Известны и другие виды шифрования — например, такие, как тайнопись. Алгоритмы тайнописи по известным причинам не являются публичными: посторонним лицам неизвестен сам алгоритм шифрования; закон преобразования знают только отправитель и получатель сообщения. Одним из ярких примеров таких систем можно считать одноразовые блокноты. Именно одноразовые блокноты (One-time Pad — OTP) являются единственной теоретически невзламываемой системой шифрования. Одноразовый блокнот представляет собой список чисел в случайном порядке, используемый для кодирования сообщения (см. табл. 1). Как видно из названия системы, OTP может использоваться только один раз. Если числа в OTP являются действительно случайными, OTP имеет большую длину, чем сообщение, и используется только один раз, то шифрованый текст не предоставляет какого-либо механизма для восстановления исходного ключа (т.е. самого OTP) и, следовательно, сообщений.

Таблица 1

СообщениеSENDHELP
Буквы, замененные соответствующими числами195144851216
Одноразовый блокнот795212106
Добавление открытого текста в ОТР26141962061222
Шифрованый текстZNSFTFLV


Одноразовые блокноты широко используются в информационных средах с очень высоким уровнем безопасности (но только для коротких сообщений). Так, в Советском Союзе OTP использовался для связи разведчиков с Москвой.

Симметричное шифрование

Симметричное шифрование также называется шифрованием на секретном ключе, так как для шифрования и дешифрования данных используется один и тот же ключ. Ключ алгоритма должен сохраняться в секрете обеими сторонами и выбирается ими до начала обмена сообщениями. Говоря простым языком, в данном случае под ключом можно подразумевать пароль, который, разумеется, должен держаться в тайне.

Популярными алгоритмами симметричного шифрования являются:
. ГОСТ 28147-89
. DES и TripleDES (3DES)
. AES (Rijndael)
. Blowfish

Основными параметрами алгоритмов симметричного шифрования можно считать:
. стойкость
. длину ключа
. число раундов
. длину обрабатываемого блока
. сложность аппаратной/программной реализации
Итак, начнем.

Data Encryption Standard (DES). Алгоритм Data Encryption Standard (DES) был разработан компанией IBM в начале 1970-х гг. Национальный институт стандартов и технологий США (NIST) принял на вооружение алгоритм (публикация FIPS 46) для DES в 1977 году. Дальнейшей модификации алгоритм подвергался в 1983, 1988, 1993 и 1999 гг. До недавнего времени DES был "стандартом США", поскольку правительство этой страны рекомендовало применять его для реализации различных систем шифрования данных. Однако, несмотря на то, что изначально DES планировалось использовать не более 10-15 лет, попытки его замены начались только в 1997 г. DES использует ключ длиной 56 бит. По сегодняшним меркам такая длина ключа неприемлема. Используются 7 бит из байта, восьмой бит каждого байта используется для контроля четности. DES является блочным алгоритмом шифрования, обрабатывающим единовременно один 64-битный блок открытого текста. В алгоритме DES выполняются 16 циклов шифрования с различным подключом в каждом из циклов. Ключ подвергается действию своего собственного алгоритма для образования 16 подключей:

Рис. 1. Схема работы DES

Рассмотрим работу алгоритма поподробней. Входной блок данных, состоящий из 64 бит, преобразуется в выходной блок идентичной длины. Ключ шифрования должен быть известен как отправляющей так и принимающей сторонам. В алгоритме широко используются перестановки битов текста. Вводится функция f, которая работает с 32-разрядными словами исходного текста (R) и использует в качестве параметра 48-разрядный ключ (J). Схема работы функции f показана на рис. 1. Сначала 32 входных разряда расширяются до 48, при этом некоторые разряды повторяются. Для полученного 48- разрядного кода и ключа выполняется операция исключающее ИЛИ (XOR). Результирующий 48-разрядный код преобразуется в 32-разрядный с помощью S- матриц. Исходный 48-разрядный код делится на 8 групп по 6 разрядов. Первый и последний разряд в группе используется в качестве адреса строки, а средние 4 разряда — в качестве адреса столбца. В результате каждые 6 бит кода преобразуются в 4 бита, а весь 48-разрядный код — в 32-разрядный (для этого нужно 8 S-матриц). Существуют разработки, позволяющие выполнять шифрование в рамках стандарта DES аппаратным образом, что обеспечивает довольно высокое быстродействие.

Для того, чтобы все-таки разобраться во всех тонкостях алгоритма DES, будет вполне уместно привести описание т.н. сети Фейштеля, которая и стоит в основе DES. В 1973 году Хорст Фейштель (Horst Feistel) в журнале Scientific American опубликовал статью "Cryptography and Computer Privacy", в которой раскрыл некоторые важные аспекты шифрования, а также ввел конструкцию, названную впоследствии сетью Фейштеля. Эта схема была использована в проекте Lucifer фирмы IBM, над которым работали Фейштель и Дон Копперсмит (Don Coppersmith). Этот проект был скорее экспериментальным, но стал базисом для Data Encryption Standard (DES). Итеративная структура алгоритма позволяла упростить его реализацию в аппаратных средах. Архитектура сети Фейштеля описывается так:

. блок открытого текста делится на 2 равные части (

. в каждом раунде вычисляется (
— номер раунда)


где f — некоторая функция, а Ki - 1 — ключ i-го раунда. Результатом выполнения n раундов является
. Но обычно в n-ом раунде перестановка Ln и Rn не производится, что позволяет использовать ту же процедуру и для расшифровки, просто инвертировав порядок использования раундовой ключевой информации:



Небольшим изменением можно добиться и полной идентичности процедур шифрования и дешифрования. Одно из преимуществ такой модели —
обратимость алгоритма независимо от используемой функции f, которая может быть сколь угодно сложной.

Рис. 2. Схема шифрования и дешифрования соответственно

Уместно заметить, что следующие блочные шифры как раз таки используют классическую или модифицированную сеть Фейштеля в своей основе: Blowfish, Camellia, CAST, DES, FEAL, ГОСТ 28147-89, KASUMI, LOKI97, Lucifer, MacGuffin, MARS, MAGENTA, MISTY1, RC2, RC5, RC6, Skipjack, TEA, Triple DES, Twofish, XTEA.

TDES. Очевидная нестойкость DES стала причиной поисков некой альтернативы. В 1992 году исследования показали, что DES можно использовать трижды для обеспечения более мощного шифрования. Так появился тройной DES (TDES). Тройной DES используется либо с двумя, либо с тремя ключами. Используемый при этом ключ обеспечивает большую мощность тройного DES в сравнении с обычным DES.

Продолжение следует

Олег Бойцев, security-expert, boytsev_om@mail.ru


Компьютерная газета. Статья была опубликована в номере 24 за 2007 год в рубрике безопасность

©1997-2022 Компьютерная газета
oJnWE3?=нD}{DfHM=|]| ,Rh٣ <Ļi՛)^l`6=Rep9oyB~{<@- $ 3?:͜i*Ifgf$;9'yUw9Z.N#ҧcxS`np^i㺔o; :_].mC[tTbH)n̳\jzskV[CMͿ v}\I?lI_ }:7„CzhrE