Библиографическое описание:

Симонова О. Н. Особенности оценки качества и оптимизации алгоритмов симметричного шифрования // Молодой ученый. — 2016. — №9. — С. 79-81.



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

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

Основные показатели качества алгоритмов шифрования

Важнейшими показателями качества алгоритмов шифрования являются показатели их криптостойкости, которые характеризуют способность криптографических алгоритмов противостоять различным видам криптоанализа [1]. Но в реальных приложениях дополнительно необходимо учитывать показатели эффективности криптоалгоритмов (см. рис. 1).

Рис. 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.

  1. Использование специализированных процессорных инструкций.

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

Набор инструкций Intel AES-NI [4], предложенный компанией Intel в 2008 году, специально предназначен для ускорения выполнения операций, применяемых в алгоритме AES. Использование данного набора инструкций значительно сокращает время шифрования и дешифрования по данному алгоритму.

  1. Распараллеливание вычислений.

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

Не все режимы работы блочных шифров допускают эффективное распараллеливание. Режимы 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 («Кузнечик»)

+

+

+

+

+

Библиотека алгоритмов ГОСТ

  1. Использование средств аппаратного ускорения

Ускорение криптографических операций возможно за счет переноса их выполнения на специализированные аппаратные устройства. Для аппаратного ускорения могут применяться как специальные аппаратные модули, устанавливаемые в компьютер с целью поддержки криптографической обработки, так и более универсальные средства выполнения вычислений, такие как графические процессоры. Использование ресурсов графических процессоров для выполнения вычислений, не связанных с компьютерной графикой, облегчается благодаря технологиям NVIDIA CUDA [5] и OpenCL [6].

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

Литература:

  1. Гатченко Н. А., Исаев А. С., Яковлев А. Д.. Криптографическая защита информации. — СПб.: НИУ ИТМО, 2012. — 142 с.
  2. OpenSSL // OpenSSL Cryptography and SSL/TLS Toolkit. URL: https://www.openssl.org
  3. LibreSSL // LibreSSL. URL: https://www.libressl.org
  4. 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
  5. Параллельные вычисления CUDA // NVIDIA. URL: http://www.nvidia.ru/object/cuda-parallel-computing-ru.html
  6. OpenCL — The open standard for parallel programming of heterogeneous systems // Khronos. URL: https://www.khronos.org/opencl

Обсуждение

Социальные комментарии Cackle