Уровень развития современных компьютерных и информационных технологий, а также масштабы внедрения электронных способов хранения и обработки информации во все сферы жизни человека требуют совершенствования процессов хранения, обработки, передачи и использования данных. При этом значительно возрастает актуальность вопросов информационной безопасности и защиты информации.
При решении проблем защиты электронной информации центральное место занимает шифрование, обеспечивающее конфиденциальность, целостность и доступность данных. Проблема выбора между необходимым уровнем защиты и эффективностью работы системы существовала всегда. К тому же, во многих прикладных областях имеются специфические требования к выбору методов обеспечения информационной безопасности и их реализации. Поэтому все большее значение приобретает задача выбора и оценки алгоритмов шифрования с учетом различных показателей качества и эффективности их работы.
Основные показатели качества алгоритмов шифрования
Важнейшими показателями качества алгоритмов шифрования являются показатели их криптостойкости, которые характеризуют способность криптографических алгоритмов противостоять различным видам криптоанализа [1]. Но в реальных приложениях дополнительно необходимо учитывать показатели эффективности криптоалгоритмов (см. рис. 1).
Рис. 1. Классификация показателей качества алгоритмов шифрования
Скорость инициализации блочных симметричных шифров зависит, в основном, от алгоритмической сложности операций, выполняемых при генерации подключей раундов (начальном развертывании ключа шифрования).
Производительность (скорость работы) алгоритма шифрования зависит от вычислительной сложности выполняемых операций, а также от конкретного способа реализации алгоритма.
Под требовательностью к ресурсам подразумевается количество оперативной памяти, дискового пространства, процессорного времени, которые необходимы для выполнения алгоритма. Данный показатель зависит как от типа криптографического алгоритма, так и от особенностей его реализации.
Как известно, для качественной реализации алгоритмов шифрования программист должен иметь достаточно знаний и опыта в данной области. Поэтому в практических приложениях рекомендуется использовать реализации алгоритмов, выполненные и проверенные опытными специалистами, либо применять качественные и протестированные криптографические библиотеки. При использовании готовых криптографических библиотек, и особенно при тестировании их характеристик, необходимо иметь представление о способах оптимизации программных реализаций криптографических алгоритмов.
Способы оптимизации программных реализаций криптографических алгоритмов
- Предварительные вычисления.
Данный способ предусматривает предварительное вычисление (на этапе программной реализации алгоритма) значений некоторых функций и сохранение их в виде подстановочных таблиц. Во время выполнения программы производится подстановка данных из имеющихся таблиц, что занимает гораздо меньше процессорного времени.
- Использование языка ассемблера.
Высокоуровневые языки программирования не позволяют эффективно выполнить некоторые операции, необходимые для реализации криптографических алгоритмов. Использование кодовых вставок на языке ассемблера позволяет наиболее оптимально реализовать требуемый алгоритм с учетом специфики конкретной процессорной архитектуры. Но применение данного способа снижает переносимость программы, усложняет ее модификацию и сопровождение. Данный подход широко используется в известных криптографических библиотеках, например в OpenSSL [2] и LibreSSL [3], что позволяет получить существенное увеличение производительности.
OpenSSL — криптографическая библиотека о открытым исходным кодом, содержащая реализацию протоколов SSL/TLS, алгоритмов симметричного и асимметричного шифрования, а также хеширования. Большая часть кода библиотеки написана на языке C, а для выполнения критичных к скорости выполнения участков кода применяется язык ассемблера. Это усложняет процесс компиляции библиотеки и ее переноса на новые платформы, но позволяет получить существенное увеличение производительности.
OpenSSL широко используется во многих проектах с открытым исходном кодом, но в последние годы ее популярность снижается из-за обнаруженных уязвимостей, основной из которых является так называемая уязвимость «Heartbleed».
Библиотека LibreSSL появилась как ответвление от проекта OpenSSL с целью устранения найденных в OpenSSL уязвимостей. Работу над библиотекой ведут разработчики проекта OpenBSD. Основные улучшения направлены на повышение качества исходного кода, устранение ошибок и увеличение надежности и защищенности. API (application programming interface — интерфейс прикладного программирования) библиотеки LibreSSL совместим с API OpenSSL. К преимуществам библиотеки относится то, что она поддерживает российские алгоритмы шифрования, в частности ГОСТ 28147–89. К тому же, на официальном сайте доступны для загрузки файлы скомпилированных динамических библиотек. Это облегчает подключение библиотеки в проектах для ОС Windows.
- Использование специализированных процессорных инструкций.
Современные процессоры поддерживают команды, позволяющие эффективно выполнять пакетную обработку множества элементов данных. К ним относятся наборы инструкций MMX, SSE, SSE2 и другие. Применение этих команд позволяет ускорить выполнение многих криптографических операций.
Набор инструкций Intel AES-NI [4], предложенный компанией Intel в 2008 году, специально предназначен для ускорения выполнения операций, применяемых в алгоритме AES. Использование данного набора инструкций значительно сокращает время шифрования и дешифрования по данному алгоритму.
- Распараллеливание вычислений.
Распараллеливание вычислений позволяет одновременно выполнять различные шаги одного алгоритма и тем самым уменьшить время его выполнения. Существует множество подходов к организации параллельных вычислений: многопоточное выполнение на одном физическом процессорном ядре, параллельное выполнение на нескольких процессорных ядрах, входящих в состав одного процессора, параллельное выполнение на множестве процессоров, которые могут находиться в физически разных компьютерах, объединенных в сеть.
Не все режимы работы блочных шифров допускают эффективное распараллеливание. Режимы ECB (electronic codebook — электронной кодовой книги, режим простой замены) и CTR (counter mode — режим счетчика), благодаря возможности обрабатывать блоки открытого текста независимо друг от друга, могут быть легко распараллелены. В режимах CBC (cipher block chaining — режим сцепления блоков шифротекста) и CFB (cipher feedback — режим обратной связи по шифротексту) хорошо распараллеливается только процедура дешифрования. Режим OFB (output feedback — режим обратной связи по выходу) не поддается распараллеливанию, но эффективность шифрования и дешифрования может быть повышена другими способами.
В таблице указан перечень поддерживаемых режимов шифрования симметричными блочными алгоритмами шифрования в различных криптографических библиотеках.
|
ECB |
CBC |
CFB |
OFB |
CTR |
Криптографическая библиотека |
DES |
+ |
+ |
+ |
+ |
LibreSSL |
|
IDEA |
+ |
+ |
+ |
+ |
LibreSSL |
|
BLOWFISH |
+ |
+ |
+ |
+ |
LibreSSL |
|
AES 128 |
+ |
+ |
+ |
+ |
+ |
LibreSSL |
AES 192 |
+ |
+ |
+ |
+ |
+ |
LibreSSL |
AES 256 |
+ |
+ |
+ |
+ |
+ |
LibreSSL |
ГОСТ 28147–89 |
+ |
+ |
+ |
LibreSSL |
||
ГОСТ 28147–89 |
+ |
+ |
+ |
+ |
+ |
Библиотека алгоритмов ГОСТ |
ГОСТ 34.12–2015 («Кузнечик») |
+ |
+ |
+ |
+ |
+ |
Библиотека алгоритмов ГОСТ |
- Использование средств аппаратного ускорения
Ускорение криптографических операций возможно за счет переноса их выполнения на специализированные аппаратные устройства. Для аппаратного ускорения могут применяться как специальные аппаратные модули, устанавливаемые в компьютер с целью поддержки криптографической обработки, так и более универсальные средства выполнения вычислений, такие как графические процессоры. Использование ресурсов графических процессоров для выполнения вычислений, не связанных с компьютерной графикой, облегчается благодаря технологиям NVIDIA CUDA [5] и OpenCL [6].
Заключение. Грамотное применение алгоритмов шифрования требует соблюдения баланса между необходимым уровнем защиты и эффективностью работы системы. При этом необходимо учитывать особенности реализации криптографических алгоритмов и возможности оптимизации, а также правильно оценивать эффективность их работы.
Литература:
- Гатченко Н. А., Исаев А. С., Яковлев А. Д.. Криптографическая защита информации. — СПб.: НИУ ИТМО, 2012. — 142 с.
- OpenSSL // OpenSSL Cryptography and SSL/TLS Toolkit. URL: https://www.openssl.org
- LibreSSL // LibreSSL. URL: https://www.libressl.org
- Intel Data Protection Technology with AES-NI and Secure Key // Intel. URL: http://www.intel.com/content/www/us/en/architecture-and-technology/advanced-encryption-standard--aes-/data-protection-aes-general-technology.html
- Параллельные вычисления CUDA // NVIDIA. URL: http://www.nvidia.ru/object/cuda-parallel-computing-ru.html
- OpenCL — The open standard for parallel programming of heterogeneous systems // Khronos. URL: https://www.khronos.org/opencl