Рано или поздно перед каждой информационной системой встает важный вопрос обеспечения защиты данных путем сокрытия информации от лиц, для которых она не предназначена. Выполнить данную задачу в рамках самой системы можно за счет внедрения системы аутентификации, благодаря чему доступ смогут получить исключительно авторизованные пользователи. Однако если злоумышленнику удастся получить физический доступ к данным, то аутентификация станет бесполезной. Будет нарушена конфиденциальность данных (доступны только тем, кому предназначены), они могут быть изменены, что также еще и нарушит их целостность. Для предотвращения подобного исхода применяется шифрование данных.
Простыми словами, шифрование данных заключается в представлении информации в виде, отличном от первоначального, по которому невозможно определить, как выглядит исходная информация, не зная специального ключа шифрования. Используя же этот ключ, данные можно спокойно расшифровать. Стоит также отметить, что шифрование данных используется не только для физической защиты данных — его можно также можно использовать, например, для предотвращения несанкционированного доступа в систему, усложнив процедуру аутентификации.
Шифрование является важной частью криптографии — науки о защите информации. В течение последних нескольких десятков лет эта наука переживает бурное развитие [1], вызванное, в первую очередь, повсеместным использованием электронно-вычислительных машин, а также желанием владельцев этой техники защитить свои личные данные (или данной организации) от посторонних глаз.
Для того чтобы решить столь серьезную проблему, были разработаны специальные алгоритмы шифрования. Структурно эти алгоритмы можно разделить на три группы: бесключевые, одноключевые и двухключевые (см. рисунок 1) [1]. Бесключевые алгоритмы не используют ключи в процессе шифрования, одноключевые используют один ключ, а двухключевые — два ключа. Двухключевые алгоритмы считаются наиболее надежными, однако они более сложны и трудоёмки в использовании.
Рис. 1. Структурное разделение алгоритмов шифрования
Как видно из рисунка 1, некоторые типы алгоритмов могут относиться сразу к нескольким группам. Так, например, хэш-функции (выполняющие контрольное суммирование данных) могут выполняться как с ключом (причем с одним), так и без него. Хэш-функции получили широкое распространение из-за своей относительной простоты и низкой потребности ресурсов и используется, например, тогда, когда необходимо подтвердить целостность данных.
Также к двум группам относятся и алгоритмы аутентификации, которые могут быть как одноключевыми, так и двухключевыми. Подобные алгоритмы заменяют стандартную схему парольной аутентификации, когда пользователь может попасть в систему при правильном вводе имени пользователя и пароля. Эти алгоритмы заметно понижают шансы злоумышленника попасть в систему. Например, возможна следующая реализация использования алгоритма аутентификации:
1) Каждый пользователь владеет уникальным ключом шифрования, который также знает и система;
2) При попытке входа в систему сервер генерирует случайное число, которое после генерации отправляет пользователю;
3) Используя свой уникальный ключ шифрования, пользователь шифрует полученное число и отправляет серверу уже зашифрованное число;
4) Сервер расшифровывает полученное число (или зашифровывает исходное), используя ключ шифрования пользователя, хранящейся в системе;
5) Если результаты совпадают, то пользователь получает доступ к системе, в противном же случае он получит отказ на получение доступа.
Генераторы случайных чисел, хоть и являются бесключевыми алгоритмами, тем не менее используют ключи шифрования, просто они создают их сами. Такие ключи являются абсолютно случайными, что заметно уменьшает возможность расшифровать данные.
Алгоритмы симметричного шифрования являются базовыми, так как в них шифрование и дешифрование производится по одному ключу (или один ключ можно легко получить из другого). Эти алгоритмы делятся на использующие блочное шифрование и использующие потоковое шифрование. При блочном шифровании весь массив данных делится на блоки определенной фиксированной длины (чаще всего используются блоки по 64 или 128 бит), которая равна длине ключа шифрования. Соответственно, каждый полученный блок шифруется отдельно ключом, причем этот ключ может меняться для разных блоков, например, в зависимости от результата шифрования предыдущего блока. В свою очередь, при потоковом шифровании шифруется отдельно каждый бит данных. Можно сказать, что потокового шифрования как такового не существует — оно всего лишь является частным случаем блочного шифрования, когда длина блока равна одному биту. Стоит отметить, что алгоритмы симметричного шифрования представляют собой наиболее обширную категорию алгоритмов шифрования.
Генераторы псевдослучайных чисел используются тогда, когда нет возможности разработать качественный генератор случайных чисел. Псевдослучайные числа создаются на основе некоторого алгоритма симметричного шифрования.
Алгоритмы асимметричного шифрования используют два ключа шифрования: открытый для зашифровывания информация и секретный для ее дешифрования, причем открытый ключ достаточно просто вычисляется из секретного, а вычислить секретный ключ из открытого практически невозможно (для этого потребуется длительное время и огромные ресурсы). Информацию, зашифрованную открытым ключом, можно расшифровать исключительно секретным ключом. Например, возможна следующая реализация алгоритма асимметричного шифрования при общении двух пользователей:
1) Один пользователь имеет открытый ключ шифрования, а другой — секретный;
2) Первый пользователь шифрует сообщение, используя открытый ключ, и передает его второму;
3) Второй пользователь дешифрует полученное сообщение, используя секретный ключ.
Последними на очереди являются алгоритмы электронной подписи, которые «используют секретный ключ для вычисления электронной цифровой подписи данных, а вычисляемый из него открытый — для ее проверки» [1].
Таким образом, существует огромное число хороших и качественных алгоритмов шифрования, однако даже их использование, к сожалению, никак не исключает возможности несанкционированного доступа к данных, однако они серьезно осложнят жизнь злоумышленнику и, возможно, даже вынудят его отказаться от этой затеи. Именно в этом, во многом, на сегодня и состоит задачу защиты информации.
Литература:
- Панасенко, С. П. Алгоритмы шифрования. Специальный справочник. / С.П Панасенко. — СПб.: БХВ-Петербург, 2009. — 576 с.: ил.