Процессор и криптография

Процессор и криптография

Функциональное расширение AES-NI (Ad­vanc­ed En­cryp­tion Stand­ard New In­struc­tions) пре­до­став­ля­ет в рас­по­ря­же­ние при­клад­но­го про­грам­мис­та на­бор ин­струк­ций, яв­ля­ю­щих­ся стро­и­тель­ны­ми бло­ка­ми для ре­а­ли­за­ции крип­то­гра­фи­че­ских ал­го­рит­мов. Тех­но­ло­гия клас­си­фи­ци­ру­ет­ся как тре­бу­ю­щая яв­ной под­держ­ки: для ус­ко­ре­ния шиф­ро­ва­ния и де­шиф­ро­ва­ния про­грам­мное обес­пе­че­ние долж­но де­тек­ти­ро­вать это фун­к­ци­о­наль­ное рас­ши­ре­ние. Объеди­не­ние ап­па­рат­но ре­а­ли­зо­ван­ных при­ми­ти­вов в не­об­хо­ди­мые ите­ра­ци­он­ные ал­го­рит­мы про­ис­хо­дит про­грам­мно.

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

Бит 25 регистра ECX после выполнения функции 1 инструкции CPUID, индицирует поддержку инструкций семейства AES-NI

 

AES-NI, базируясь на программной модели SSE, добавляет 6 новых инструкций, операнды которых располагаются в XMM-регистрах и/или 128-битных областях памяти.

Номенклатура инструкций AES-NI

 

Примечание. Инструкция PCLMULQDQ не входит в данную функциональную группу, упомянута в силу особенностей организации документа Intel.

Несмотря на разрядность операндов, составляющую 128 бит, в целях нивелирования потерь производительности, свя­зан­ных с применением 128-битных инструкций в 256-битном контексте, специально предусмотрены 256-битные форматы инструкций, обнуляющие старшие 128 бит при сохранении 128-битного операнда в 256-битном регистре. Для использования таких инструкций, ОС должна обеспечить сохранение и восстановление 256-битного состояния блока AVX. В свою очередь, для 128-битного контекста, предусмотрены инструкции, не изменяющие старшие 128 бит 256-битных регистров AVX.

Как любое расширение системы команд x86, AES-NI является открытой спецификацией. Разработчик может ре­а­ли­зо­вать собственные криптографические алгоритмы на языке ассемблера.

Оценка приращения производительности криптографических операций при использовании библиотеки Intel IPP

 

Ускорить процесс создания готовых программных продуктов можно применяя библиотеку Intel IPP Crypto Library.

Поддержка AES-NI компиляторами Microsoft, Intel, GCC

 

Инструкции AES-NI поддерживаются современными версиями компиляторов для ОС Microsoft Windows и Linux.

Послесловие

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