От знания основ шифрования — к надежному хранению секретов

Шифрование — это захватывающая наука, существующая сегодня на стыке математики, детектива и компьютерных технологий. Цель шифрования — сохранить в неприкосновенности секретную информацию, но в самом процессе шифрования ничего сверхсекретного нет. Более того, чем больше открыт для исследования алгоритм шифрования, тем выше его надежность. При правильном шифровании единственное, что требуется для безопасного хранения секрета, — это ключ. В данной статье рассказывается об основах шифрования и важных различиях между алгоритмами с симметричным ключом и открытым и частным ключом. В завершение дается краткая характеристика распространенных современных протоколов шифрования и описано их применение в различных компонентах Windows.

Два типа шифрования

Незашифрованные данные называются «открытым текстом». В процессе шифрования открытый текст обрабатывается специальным алгоритмом с использованием ключа шифрования. После шифрования информация полностью сохраняется, но она скрыта в шифротексте. Первоначальный текст можно восстановить из шифротекста, обработав его алгоритмом дешифрации с соответствующим ключом.

Наиболее известен метод шифрования с симметричным ключом. В этом случае один и тот же ключ используется для преобразования открытого текста в шифрованный и для восстановления оригинала из шифротекста. Шифрование с симметричным ключом — быстрый и эффективный способ сохранить в тайне большие массивы информации, но он неудобен для обмена информацией с другими лицами. Шифрование с симметричным ключом также известно как шифрование с общим секретом (shared secret), так как для обмена конфиденциальной информацией между двумя участниками необходимо, чтобы каждый из них знал ключ. Следовательно, требуется передавать ключ между участниками, скрывая его от посторонних лиц. Но даже если существует безопасный способ передачи ключа, могут возникнуть другие проблемы, например утечка информации о ключе или увольнение сотрудника, владеющего ключом. Эти проблемы можно решить, если использовать алгоритм с открытым и частным ключом.

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

Для создания цифровой подписи отправитель вычисляет хеш (математическое представление) сообщения. Хеш всегда имеет одинаковую длину (обычно несколько байтов), а длина сообщения может быть любой, даже несколько байтов. Хеши полезны, так как при любом изменении в сообщении даже единственного бита, как правило, получается другой хеш. Учитывая огромное число сообщений, в конечном итоге, возможно, и появятся два сообщения с одинаковым хешем. Такое событие называется хеш-конфликтом, но оно непредсказуемо. После хеширования сообщения отправитель шифрует хеш с использованием частного ключа. Зашифрованный хеш представляет собой цифровую подпись и пересылается вместе с сообщением. Получатель может убедиться в аутентичности и целостности сообщения, проверив подпись. Получатель расшифровывает подпись с использованием открытого ключа отправителя и получает хеш, вычисленный отправителем. Затем получатель вычисляет свой хеш полученного сообщения. Если два хеша совпадают, можно с уверенностью утверждать, что сообщение действительно поступило от отправителя и не было изменено при пересылке, т. е. подпись, успешно расшифрованная открытым ключом, была зашифрована частным ключом отправителя.

Но как получатель узнает открытый ключ отправителя, особенно если они никогда не встречались? Для решения этой проблемы предназначена инфраструктура открытых ключей (public key infrastructure — PKI). Как правило, сертификаты и источники сертификатов (Certification Authorities — CA) используются в PKI, чтобы упростить получение и проверку открытых ключей различных лиц, не вступающих в прямой контакт, и в гораздо меньшей степени как безопасное средство связи между этими лицами. PKI и сертификаты будут рассмотрены в следующей статье.

Шифрование не гарантирует полной безопасности

Любой шифр может быть взломан, если уделить этой задаче достаточно вычислительных ресурсов и времени. Процесс сводится просто к попыткам восстановить шифротекст, перебирая все возможные ключи шифрования. Именно поэтому так важна длина ключа. Чем длиннее ключ, тем больше времени и/или вычислительных ресурсов требуется для поиска верного ключа. Мощность компьютеров непрерывно растет, и алгоритмы шифрования нуждаются в постоянном обновлении, чтобы взламывание ключей было невозможным или по крайней мере нецелесообразным. Алгоритм DES был признан слишком слабым несколько лет назад, когда организация EFF (Electronic Frontier Foundation) предложила желающим взломать его. Это был смертельный удар для DES, и в скором времени появился новый алгоритм, AES (Advanced Encryption Standard).

Защита шифром может оказаться ненадежной, если в программе некорректно реализованы алгоритмы шифрования или хеширования. Например, в 1980-х годах было обнаружено несколько уязвимых мест в протоколе PPTP (для построения VPN) Windows NT из-за неправильной реализации алгоритма RC4. Впоследствии эти ошибки были исправлены. Позднее организация Wi-Fi Alliance отказалась от стандарта Wired Equivalent Privacy (WEP), в основном из-за невозможности регулярно менять ключи шифрования. Падение WEP привело к внедрению стандартов Wi-Fi Protected Access (WPA) и 802.11i.

Шифрование в Windows

В операционных системах Windows широко используется шифрование как с симметричным, так и с открытым и частным ключом. Например, хеши паролей учетных записей пользователей Windows шифруются с симметричным ключом. Таким образом, если взломщики украдут копию SAM или Active Directory (AD), то им будет трудно расшифровать пароли пользователей. Можно повысить безопасность систем Windows, выбирая места хранения симметричного ключа с помощью утилиты Syskey. Но при работе с Syskey следует соблюдать осторожность, чтобы не лишиться доступа к системе, потеряв сохраненный вне ее ключ. Windows располагает собственной инфраструктурой PKI, которая основана на Certificate Services и интегрирована с AD и Group Policy. В работе Windows PKI задействованы и многие другие компоненты Windows. Автоматизирован ряд трудоемких задач, связанных с управлением PKI, таких как регистрация сертификатов и обновление и публикация списка отмены сертификатов (certificate revocation list — CRL).

Шифрование широко применяется в двух компонентах Windows — IPsec и Encrypting File System (EFS). В IPsec шифрование как симметричным, так и открытым и частным ключом используется для защиты информации, пересылаемой через сеть. Сертификаты применяются для начальной аутентификации двух устанавливающих соединение компьютеров, а затем собственно пакеты шифруются с помощью DES или Triple DES (3DES).

В EFS оба типа шифрования используются для защиты файлов на жестком диске на тот случай, если компьютер или жесткий диск будут украдены. Часто шифрование с открытым и частным ключом более предпочтительно, так как не нужно обмениваться секретным ключом, но алгоритм с симметричным ключом по-прежнему очень важен, поскольку процесс с открытым и частным ключом довольно медленный. Поэтому, чтобы использовать преимущества обоих способов, информация часто шифруется симметричным ключом, который потом зашифровывается открытым ключом получателя. Пример такого подхода — шифрованная файловая система EFS. Для каждого зашифрованного файла EFS генерирует симметричный ключ шифрования файла (file encryption key — FEK) и шифрует файлы блоками с применением DES, 3DES или AES. Затем EFS шифрует FEK открытым ключом пользовательского сертификата EFS и сохраняет FEK вместе с файлом на жестком диске. Когда впоследствии пользователь обращается к файлу, EFS расшифровывает FEK частным ключом пользователя. Для защиты частных ключей пользовательских сертификатов в реестре Windows предусмотрено специальное хранилище, где зашифрованы частные ключи и другая секретная информация. Ключи можно хранить и в файловой системе. Ключи защищены мастер-ключом, который в свою очередь защищен хешем пароля пользователя. Таким образом, пароль пользователя — краеугольный камень, на котором основана защита всех остальных элементов. Именно поэтому важно применять надежные пароли.

Главный ключ — знание

Администратору полезно знать основные принципы шифрования, хеширования, сертификатов и цифровых подписей, чтобы уметь использовать функции шифрования операционных систем Windows и других приложений. Это знание — ключ к надежному хранению секретов.


Рэнди Франклин Смит - Редактор Windows IT Pro и ведущий инструктор и разработчик курсов для программы по безопасности Windows NT/2000 института MIS Training. Его компания, Monterey Technology Group, занимается консалтингом в области информационной безопасности. Связаться с ним можно по адресу: rsmith@monterey techgroup.com