На криптопреобразование в программе ProjectFK тратится 7% загрузки процессора.

Второе пришествие ГОСТ 28147-89

Около десяти лет тому назад симметричная криптография, основанная на ГОСТ 28147-89, перестала удовлетворять потребностям аппаратных платформ по скоростным параметрам. Скорости криптопреобразований, обеспечиваемые алгоритмами реализованными на регистрах общего назначения процессоров, не успевали за скоростями обмена информацией в сетях и на дисковых накопителях.

С другой стороны (американской), появился AES-256, который показывал гораздо лучшие скоростные параметры при той же степени криптостойкости.

 

В этой ситуации 8 центр ФСБ начал работы над новым блочным шифром, который получил в последствии название «Кузнечик» от начальных букв фамилий авторов.

Изначально это была бесперспективная затея, поскольку повторялась логика шифра AES, но если тот был ускорен аппаратно в процессорах Интел и АМД, то у Кузнечика такого аппаратного ускорения на этих процессорах конечно быть не могло.

Так что Кузнечик, это классический пример выброшенных на ветер бюджетных денег и не малых…

 

Но был и другой вариант ускорения криптографических операций, он к сожалению не получил официальной поддержки в силу специфических причин. Этот вариант предполагал разработку алгоритмов реализации ГОСТ 28147-89 для многопоточности и доработку самого стандарта под требования многопоточности.

Многопоточность базируется на трех новых методах реализации ГОСТ 28147-89 в процессорах архитектуры х86-64.

Первый это конвейерная работа процессора в режиме шифрования.

Второй это реализации блока замен на SSE/AVX командах процессора.

Третий это использование специализированных регистров XMM/YMM/ZMM, имеющих разрядность 16/32/64 байта.

 

Эти новые методы в сумме позволили поднять быстродействие шифрования по ГОСТ 28147-89 как минимум на порядок и обеспечивать скоростные параметры шифрования ничуть не хуже американского AES-256, который использует специальный криптоускоритель в процессорах Интел/АМД.

 

Но, как говорится, бог шельму метит, а время расставляет все по своим законным местам.

В настоящее время шифр «Кузнечик» воспринимается как экзотика и не имеет практического применения из-за низкой скорости преобразований и сомнительной репутации, вместо него производители стали использовать многопоточное шифрование по ГОСТ 28147-89. Но об этом они стараются не говорить, поскольку знают, что нарушают авторские права.

Методы ускорения шифрования запатентованы.

 

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

Поэтому и сложился устойчивый миф о превосходстве AES-256 над ГОСТ 28147-89 по скоростным параметрам чуть ли не в десяток раз...

Настало время провести честное тестирование.

Честные тесты

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

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

В демонстрационной версии программы FastSecurityBoxs (собственная поделка, скоро будет доступна публично) создание дампов дисков с шифрованием проводилось на четырех ядерном процессоре Skylake с частотой 2,6гГерца, гипертрейдинг активирован (всего 8 логических ядер). Криптопроцедура работает на одном логическом ядре (из 8 имеющихся), соответственно загрузка ЦП создаваемая им не превышает 12-15 процентов, что соответствует реальной работе фоновой задачи. Для копирования использовалось два SSD диска, скорость чтения/записи на них в режиме файловой системы составляет примерно 450-500Мбайт/сек. на очищенном устройстве, после выполнения TRIM.

Вот чистое копирование без криптографии:

Чтение секторов диска (ProjectFK.exe) занимают 5%, запись в файл (System) занимает 2% процессорного времени на скорости 449мбайт/сек. Запомним эти цифры, когда включим криптографию к ним будут добавляться затраты на криптопреобразования, соответственно можно будет оценить затраты на само криптопреобразование процессорной нагрузки.

 

Теперь создавая дамп включим криптографию, сначала шифрование в 8потоков по ГОСТ 28147-89:

Скриншот создания резервной копии дисков с использованием криптопреобразования строго по ГОСТ в 8 потоков.

Скорость реально создаваемого криптографического дампа 190мбайт/сек. Скорость ограничена криптопреобразованием, поскольку загрузка ЦП создаваемая программой ProjectFk.ехе составляет 12%, в нашем случае это предел по загрузке логического ядра процессора. SSD диски могут работать гораздо быстрее, но их тормозит ограничение на использование в криптопроцедуре только «половинки» одного физического ядра процессора.

На криптопреобразование в программе ProjectFK тратится 7% загрузки процессора.

 

Теперь шифрование в 16потоков по ГОСТ 28147-89:

Скриншот создания резервной копии дисков с использованием криптопреобразования строго по ГОСТ в 16 потоков. Этот режим работает эффективно только на процессорах Интел поколения Skylake и выше, но об этом будет сказано позже.

Скорость выросла до 334мБайт/сек. Загрузка ЦП 10,5%, здесь еще ограничение создает криптопреобразование, но загрузка на логическое процессорное ядро снижается.