Шифрование

advertisement
Шифрование
Все, что необходимо для обеспечения безопасности - это качественное
шифрование. Если информация защищена шифрованием, никто не в силах ее прочесть
или изменить. Если мы используем шифрование, то знаем, с кем имеем дело, поэтому
шифрование можно интерпретировать и как аутентификацию.
Шифрование,
является важнейшим средством обеспечения безопасности.
Механизмы шифрования помогают защитить конфиденциальность и целостность
информации. Механизмы шифрования помогают идентифицировать источник
информации. Тем не менее, само по себе шифрование не является решением всех
проблем. Механизмы шифрования могут и должны являться составной частью
полнофункциональной программы по обеспечению безопасности. Действительно,
механизмы шифрования, являются широко используемыми механизмами безопасности
лишь потому, что они помогают обеспечивать конфиденциальность, целостность и
возможность идентификации.
Шифрование является только задерживающим действием. Известно, что любая
система шифрования может быть взломана. Речь идет о том, что для получения доступа к
защищенной шифрованием информации может потребоваться очень много времени и
большое количество ресурсов. Принимая во внимание этот факт, злоумышленник может
попытаться найти и использовать другие слабые места во всей системе в целом.
Основные концепции шифрования
Шифрование представляет собой сокрытие информации от неавторизованных лиц с
предоставлением в это же время авторизованным пользователям доступа к ней.
Пользователи называются авторизованными, если у них есть соответствующий ключ для
дешифрования информации. Это очень простой принцип. Вся сложность заключается в
том, как реализуется весь этот процесс.
Целью любой системы шифрования является максимальное усложнение получения
доступа к информации неавторизованными лицами, даже если у них есть зашифрованный
текст и известен алгоритм, использованный для шифрования. Пока неавторизованный
пользователь не обладает ключом, секретность и целостность информации не нарушается.
С помощью шифрования обеспечиваются три состояния безопасности информации.



Конфиденциальность. Шифрование используется для сокрытия информации от
неавторизованных пользователей при передаче или при хранении.
Целостность. Шифрование используется для предотвращения изменения
информации при передаче или хранении.
Идентифицируемость. Шифрование используется для аутентификации источника
информации и предотвращения отказа отправителя информации от того факта, что
данные были отправлены именно им.
Термины, связанные с шифрованием
Компоненты, участвующие в шифровании и дешифровании. На рис. 1 показан общий
принцип, согласно которому осуществляется шифрование.
Рис. 1. Общий принцип шифрования










Обычный текст. Информация в исходном виде. Также называется открытым
текстом.
Шифрованный текст. Информация, подвергнутая действию алгоритма
шифрования.
Алгоритм. Метод, используемый для преобразования открытого текста в
шифрованный текст.
Ключ. Входные данные, посредством которых с помощью алгоритма происходит
преобразование открытого текста в шифрованный или обратно.
Шифрование. Процесс преобразования открытого текста в шифр.
Дешифрование. Процесс преобразования шифра в открытый текст.
Криптография. Наука о сокрытии информации с помощью шифрования.
Криптограф. Лицо, занимающееся криптографией.
Криптоанализ. Искусство анализа криптографических алгоритмов на предмет
наличия уязвимостей.
Криптоаналитик. Лицо, использующее криптоанализ для определения и
использования уязвимостей в криптографических алгоритмах.
Атаки на систему шифрования
Системы шифрования могут подвергнуться атакам тремя следующими способами:



Через слабые места в алгоритме.
Посредством атаки "грубой силы" по отношению к ключу.
Через уязвимости в окружающей системе.
При проведении атаки на алгоритм криптоаналитик ищет уязвимости в методе
преобразования открытого текста в шифр, чтобы раскрыть открытый текст без
использования ключа. Алгоритмы, имеющие такие уязвимости, нельзя назвать достаточно
мощными. Причина в том, что известная уязвимость может использоваться для быстрого
восстановления исходного текста. Злоумышленнику в этом случае не придется
использовать какие-либо дополнительные ресурсы.
Атаки "грубой силы" являются попытками подбора любого возможного ключа для
преобразования шифра в открытый текст. В среднем аналитик с использованием этого
метода должен проверить действие 50 процентов всех ключей, прежде чем добьется
успеха. Таким образом, мощность алгоритма определяется только числом ключей,
которые необходимо перепробовать аналитику. Следовательно, чем длиннее ключ, тем
больше общее число ключей, и тем больше ключей должен перепробовать
злоумышленник до того, как найдет корректный ключ. Атаки с использованием грубой
силы теоретически всегда должны заканчиваться успешно при наличии необходимого
количества времени и ресурсов. Следовательно, алгоритмы нужно оценивать по периоду
времени, в течение которого информация остается защищенной при проведении атаки с
использованием "грубой силы". Алгоритм расценивается как безопасный, если затраты на
получение ключа с помощью атаки "грубой силы" превышают стоимость самой
защищаемой информации.
Последний тип атак, реализуемый с использованием уязвимостей в компьютерной
системе, как правило, не обсуждается в контексте шифрования. Тем не менее, на практике
проще атаковать саму компьютерную систему, чем алгоритм шифрования. Продумайте, к
примеру, следующую ситуацию: алгоритм является мощным и имеет длинный ключ, и для
его раскрытия с помощью атаки "грубой силы" потребуются оборудование стоимостью в
миллионы долларов и масса времени. Однако организация, использующая этот алгоритм,
передает ключи в удаленные местоположения через обычную электронную почту. Если
известно, когда именно передается ключ, то легче будет перехватить сообщение и
выяснить этот ключ.
Еще более ярким примером уязвимости является пакет шифрования, используемый
многими пользователями. Этот пакет использует мощные алгоритмы шифрования для
зашифровки электронной почты и файлов. Атаки на такую систему нельзя легко
осуществить с помощью алгоритмов или атак "грубой силы". Тем не менее, ключ
пользователя находится в файле на его компьютере. Файл защищен паролем. Принимая во
внимание тот факт, что большинство пользователей не используют в своих паролях
комбинации случайных символов, гораздо проще угадать пароль пользователя или
получить его с помощью атак "грубой силы", чем получить таким же способом ключ
пользователя.
Из этого необходимо сделать вывод о том, что система ничуть не меньше влияет на
общую безопасность шифров, чем алгоритм шифрования и ключ.
Шифрование с секретным ключом
Существует два основных типа шифрования: с секретным ключом и с открытым
ключом. При шифровании с секретным ключом требуется, чтобы все стороны, имеющие
право на прочтение информации, имели один и тот же ключ. Это позволяет свести общую
проблему безопасности информации к проблеме обеспечения защиты ключа. Шифрование
с открытым ключом является наиболее широко используемым методом шифрования. Он
обеспечивает конфиденциальность информации и гарантию того, что информация
остается неизменной в процессе передачи.
В чем суть шифрования на секретном ключе?
Шифрование на секретном ключе также называется симметричным шифрованием,
так как для шифрования и дешифрования данных используется один и тот же ключ. На
рис. 2 показан базовый принцип шифрования с секретным ключом. Как видно из рисунка,
отправитель и получатель информации должны иметь одинаковый ключ.
Рис. 2 Шифрование с секретным ключом
Шифрование с секретным ключом обеспечивает конфиденциальность информации
в зашифрованном состоянии. Расшифровать сообщение могут только те лица, которым
известен ключ. Любое изменение в сообщении, внесенное во время передачи, будет
обнаружено, так как после этого не удастся правильно расшифровать сообщение.
Шифрование с секретным ключом не обеспечивает аутентификацию, поскольку любой
пользователь может создавать, шифровать и отправлять действительное сообщение.
В общем, шифрование с секретным ключом быстро и легко реализуется с помощью
аппаратных или программных средств.
Подстановочные шифры
Подстановочные шифры существуют уже около 2500 лет. Самым ранним
примером является шифр Атбаш. Он возник примерно в 600 году до н.э. и заключался в
использовании еврейского алфавита в обратном порядке.
Юлий Цезарь использовал подстановочный шифр, который так и назывался - шифр
Цезаря. Этот шифр заключался в замещении каждой буквы другой буквой,
расположенной в алфавите на три буквы дальше от шифруемой. Таким образом, буква A
преобразовывалась в D, B преобразовывалась в E, а Z преобразовывалась в C.
Из этого примера видно, что подстановочный шифр обрабатывает за один раз одну
букву открытого текста. Сообщение может быть прочитано обоими абонентами при
использовании одной и той же схемы подстановки. Ключом в шифре подстановки
является либо число букв сдвига, либо полностью переупорядоченный алфавит.
Подстановочные шифры имеют один большой недостаток - неизменная частота
букв в исходном алфавите. В английском языке, например, буква "E" является наиболее
часто используемой. Если заменить ее другой буквой, то чаще всего будет использоваться
новая буква (при рассмотрении большого числа сообщений). При помощи такого анализа
подстановочный шифр может быть взломан. Дальнейшая разработка анализа частоты
вхождений букв позволяет получить наиболее часто встречающиеся комбинации из двух и
трех букв. С помощью такого анализа можно взломать любой подстановочный шифр, если
атакующий получит достаточное количество шифрованного текста.
Одноразовые блокноты
Одноразовые блокноты (One-time Pad, OTP) являются единственной теоретически
невзламываемой системой шифрования. Одноразовый блокнот представляет собой список
чисел в случайном порядке, используемый для кодирования сообщения. Как видно из
названия системы, OTP может использоваться только один раз. Если числа в OTP
являются действительно случайными, OTP имеет большую длину, чем сообщение, и
используется только один раз, то шифрованный текст не предоставляет какого-либо
механизма для восстановления исходного ключа (т. е. самого OTP) и, следовательно,
сообщений.
Одноразовые блокноты используются в информационных средах с очень высоким
уровнем безопасности (но только для коротких сообщений). Например, в Советском
Союзе OTP использовался для связи разведчиков с Москвой. Двумя основными
недостатками OTP являются генерация действительно случайных блокнотов и проблема
распространения блокнотов. Очевидно, что если блокнот выявляется, то раскрывается и та
информация, которую он защищает. Если блокноты не являются действительно
случайными, могут быть выявлены схемы, которые можно использовать для проведения
анализа частоты встречаемых символов.
Таблица 12.1. Функционирование одноразового блокнота
Сообщение
Буквы, замененные соответствующими числами
Одноразовый блокнот
Добавление открытого текста в ОТР
Шифрованный текст
S
19
7
26
Z
E
5
9
14
N
N
14
5
19
S
D
4
2
6
F
H
8
12
20
T
EL
5 12
1 0
6 12
FL
P
16
6
22
V
Еще одним важным моментом, связанным с OTP, является то, что одноразовые
блокноты могут использоваться только один раз. Если OTP используется несколько раз,
то его можно проанализировать и взломать. Это происходило с некоторыми советскими
OTP в период холодной войны. Тогда для считывания зашифрованной информации в
Национальном Агентстве безопасности был создан проект "Верона".
Внимание!
Некоторые современные системы шифрования также используют что-то вроде
OTP. Этот тип систем шифрования обеспечивает достаточно высокий уровень защиты,
однако он точно также является легко взламываемой системой. Как правило, OTP
непригодны для использования в средах с большим объемом трафика.
Data Encryption Standard (DES)
Алгоритм Data Encryption Standard (DES) был разработан компанией IBM в начале
1970-х гг. Национальный институт стандартов и технологий США (NIST) принял на
вооружение алгоритм (публикация FIPS 46) для DES в 1977 г. после изучения,
модификации и утверждения алгоритма в NSA. Алгоритм подвергался дальнейшей
модификации в 1983, 1988, 1993 и 1999 гг.
DES использует ключ длиной 56 бит. Используются 7 бит из байта, восьмой бит
каждого байта используется для контроля четности. DES является блочным алгоритмом
шифрования, обрабатывающим единовременно один 64-битный блок открытого текста
(см. рис. 3). В алгоритме DES выполняются 16 циклов шифрования с различным
подключом в каждом из циклов. Ключ подвергается действию своего собственного
алгоритма для образования 16 подключей (см. рис. 4).
Рис. 3. Блок-схема алгоритма DES
Рис. 4. Алгоритм генерации подключа DES
На блок-схеме алгоритма DES изображены несколько блоков, в которых
происходит перестановка. Рассматриваемый стандарт шифрования предусматривает
специальное переупорядочивание битов для каждой перестановки. То же самое относится
к алгоритму генерации подключа. Для перестановочной выборки 1 и 2 предусмотрено
определенное переупорядочивание битов. На рис.3 также изображена функция вызова f. В
этой функции находятся S-блоки. S-блоки представляют собой блоки табличного поиска
(также определенные в стандарте), изменяющие 6-битные выходные данные на 4-битные.
Алгоритм DES может функционировать в четырех режимах.


Электронный шифрблокнот. Это базовый алгоритм блочного шифрования, в
котором текст и ключ объединяются и образуют шифрованный текст. В этом
режиме идентичный вход образует идентичный выход.
Цепочка блоков. В данном режиме каждый блок шифруется как в электронном
шифрблокноте, но с добавлением третьего компонента, полученного из


предыдущего выхода. В данном случае, идентичный вход (открытый текст) не
образует идентичный вывод.
Обратная связь по шифрованному тексту. В данном режиме в качестве входных
данных в DES используется ранее сгенерированный шифрованный текст. После
этого выходные данные комбинируются с открытым текстом и образуют новый
шифртекст.
Обратная связь по выходу. Этот режим аналогичен обратной связи по
шифрованному тексту, однако здесь используются выходные данные DES, и не
происходит построение цепочки из шифртекста.
Тройной DES
В 1992 году исследования показали, что DES можно использовать трижды для
обеспечения более мощного шифрования. Так родилась концепция тройного алгоритма
DES (TDES). На рис.5 показана схема работы алгоритма TDES. Обратите внимание, что
вторая операция в действительности представляет собой дешифрование. Используемый
при этом ключ обеспечивает большую мощность тройного DES в сравнении с обычным
DES.
Рис. 5. Блок-схема алгоритма шифрования TDES
Тройной DES используется либо с двумя, либо с тремя ключами. При
использовании двух ключей ключ K3 идентичен K1. TDES является относительно
быстрым алгоритмом, так как его можно реализовать аппаратно. Его функционирование
занимает в три раза больше времени, чем у DES, так как имеют место три операции
шифрования DES. В большинстве приложений рекомендуется использовать TDES вместо
простого DES.
Шифрование паролей
Стандартная схема шифрования паролей UNIX является разновидностью DES.
Хотя функция шифрования пароля представляет собой в действительности
одностороннюю функцию (нельзя получить открытый текст из шифрованного текста),
здесь будет приведено обсуждение этой функции, чтобы показать, каким образом
алгоритм DES может использоваться в приложениях такого типа.
У каждого пользователя есть свой пароль. Алгоритм использует первые восемь
символов пароля. Если пароль длиннее восьми символов, он усекается. Если пароль
короче восьми символов, он дополняется. Пароль преобразуется в 56-битное число с
помощью первых 7 бит каждого символа. После этого система выбирает 12.битное число
на базе системного времени. Этот элемент называется "крупинкой соли" или
расширением. Расширение и пароль используются в качестве входных данных в функции
шифрования паролей (см. рис.6).
Рис. 6. Функция шифрования пароля UNIX
Расширение используется для изменения одной из таблиц перестановки в
алгоритме DES (перестановка E) любым из 4096 различных способов, в зависимости от
числа единиц в двенадцати битах. Начальный открытый текст содержит 56 нулевых битов,
а ключом являются 56 бит, полученных из пароля. Алгоритм выполняется 25 раз, причем
входные данные каждого этапа являются выходом предыдущего этапа.
Конечные выходные данные преобразуются в 11 символов, а расширение
преобразуется в 2 символа и помещается перед конечными данными выхода.
Главной уязвимостью этой системы является то, что она основана на выборе
пароля. Так как большинство пользователей компьютеров используют пароли, состоящие
из символов нижнего регистра, мы имеем общее число возможных комбинаций, равное
268. Это значительно меньше, чем 255 возможных ключей DES, поэтому взлом такого
шифра посредством "грубой силы" займет гораздо меньше времени и вычислительных
ресурсов для раскрытия паролей в системе Unix.
Расширенный стандарт шифрования Rijndael
Взамен DES NIST анонсировал в 1997 г. появление алгоритма-конкурента
стандарту DES с названием AES. В конце 2000 г. NIST объявили о том, что два
криптографа из Бельгии (Joan Daemen и Vincent Rijmen) выиграли конкурс, представив
алгоритм Rijndael. Этот алгоритм был выбран с учетом его мощности, применимости в
высокоскоростных сетях, а также возможности аппаратной реализации.
Rijndael представляет собой блочный шифр, использующий ключи и блоки длиной
128, 192 или 256 бит. На сегодняшний день такая длина ключей обеспечивает
практическую неосуществимость атак с применением грубой силы. Алгоритм состоит из
10-14 циклов, в зависимости от размеров блока открытого текста и размера ключа. На
рис.7 показано, какие вычисления производятся в каждом цикле.
Так как этот стандарт был одобрен, Rijndael начал появляться во многих системах.
Данный алгоритм можно считать достойной альтернативой алгоритму TDES.
Другие алгоритмы шифрования с секретным ключом
В различных системах безопасности используются и другие алгоритмы
шифрования с секретным ключом. Из них можно выделить следующие.


IDEA (International Data Encryption Algorithm). Разработан в Швейцарии. В IDEA
используется 128-битный ключ; кроме этого, IDEA также используется в Pretty
Good Privacy (PGP).
RC5. Разработан Роном Ривестом в институте MIT. Этот алгоритм позволяет
использовать ключи с переменной длиной.

Skipjack. Разработан правительством США для использования с Clipper Chip. В нем
используется 80-битный ключ, что в ближайшем будущем, скорее всего, станет
уже неприемлемым.
Рис. 7. Схема работы цикла алгоритма Rijndael




Blowfish. Позволяет использовать переменные ключи длиной до 448 бит; алгоритм
оптимизирован для работы на 32-битных процессорах.
Twofish. Использует 128-битные блоки, а также ключи длиной 128, 192 или 256
бит.
CAST-128. Использует 128-битный ключ. Применяется в новых версиях PGP.
Алгоритм ГОСТ (ГОСТ 28147-89). Российский стандарт шифрования,
разработанный в ответ на DES. В нем используется ключ длиной 256 бит.
Любой из этих алгоритмов может использоваться в средствах обеспечения
безопасности информации. Все эти алгоритмы, как правило, являются достаточно
мощными для использования в общих целях.
Download