На криптопреобразование в программе 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%, здесь еще ограничение создает криптопреобразование, но загрузка на логическое процессорное ядро снижается.