Аппаратное шифрование в процессорах

Материал из Энциклопедия IFCG
Перейти к:навигация, поиск

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

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

Использование шифрования

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

  • при подключении к большинству видов беспроводных сетей передачи данных (Wi-Fi, Bluetooth и пр.);
  • в мобильной связи;
  • мобильные ОС (iOS, Android) шифруют данные на устройствах для защиты от несанкционированного доступа;
  • безопасное хранение паролей требует определенных криптографических функций (т.е. большинство устройств с возможностью задания пароля использует шифрование);
  • банковские карты, банкоматы, терминалы оплаты всегда защищены криптографически;
  • криптовалюты основаны на принципах шифрования.


Все больше организаций и людей осознают важность применения шифрования для защиты данных. Так, совместными усилиями многих компаний, в частности, Google, доля зашифрованного HTTP-трафика выросла с 30% в начале 2014 года до 70% на начало 2018[1].

В то же время, любое шифрование — математически сложное преобразование данных и требует дополнительных вычислительных ресурсов от аппаратуры. В зависимости от сценария работы с данными внедрение шифрования может снизить общую пропускную способность (объем обрабатываемых данных в единицу времени) в несколько раз[2].


Алгоритмы шифрования

Существует большое количество криптографических алгоритмов[3]. Поддерживать их все было бы технически трудно осуществимо.

Некоторые алгоритмы, однако, используются значительно чаще, чем другие. Это связано с тем, что многие алгоритмы признаны устаревшими или недостаточно безопасными, другие оказываются излишне сложными вычислительно. Есть также и другие причины.

Среди блочных симметричных алгоритмов прежде всего следует выделить AES (Advanced Encryption Standard). Данный алгоритм был отобран в качестве национального стандарта США по результатам конкурса[4]. AES является основным симметричным алгоритмом шифрования во многих протоколах и технологиях (TLS, Wi-Fi, Bluetooth (с версии 4.0), GPG, IPsec, Bitlocker (шифрование файловой системы Windows), LUKS (шифрование файловой системы Linux), Miscrosoft Office, многие программы-архиваторы (WinZip, 7-zip) и пр.).

Также крайне широко используются алгоритмы криптографического хеширования. В связи с тем, что алгоритм MD5 был признан небезопасным, в настоящее время наиболее распространенными являются алгоритмы серии SHA, прежде всего, SHA-1 и SHA-2, также являющимися стандартами FIPS США. Им на смену со временем придет алгоритм SHA-3, ставший в 2012 году победителем соответствующего конкурса.

Среди алгоритмов с открытым ключом стоит отметить RSA, DSA и Diffe-Hellman.

В процессорах наиболее распространенной архитектуры x86-64 (производителей Intel и AMD) последних поколений реализованы специальные инструкции для ускорения вычислений по алгоритмам AES и SHA-1, SHA-2 (256 бит).


Инструкции Intel

AES

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

Набор новых инструкции носит название AES-NI (AES New Instructions) и состоит из четырёх инструкций для шифрования AES:

  • AESENC — выполнить один раунд шифрования AES,
  • AESENCLAST — выполнить последний раунд шифрования AES и расшифровки,
  • AESDEC — выполнить один раунд расшифрования AES,
  • AESDECLAST — выполнить последний раунд расшифрования AES,


и ещё двух инструкции для работы с ключом AES:

  • AESIMC — Inverse Mix Columns,
  • AESKEYGENASSIST — поспособствовать в генерации раундового ключа AES.


Как и раньше, инструкции относятся к SIMD, то есть к типу "одна инструкция много данных" (Single Instruction Multiple Data). Поддерживаются все три ключа режима AES (с длинами ключей 128, 192 и 256 битов с 10, 12 и 14 проходами подстановки и перестановки).

Использование этих инструкций обеспечивает ускорение операций шифрования в несколько раз[5].

SHA

В 2013 году Intel представила спецификацию нового набора инструкций для алгоритмов SHA-1 и SHA-256:

  • SHA-1: SHA1RNDS4, SHA1NEXTE, SHA1MSG1, SHA1MSG2
  • SHA-256: SHA256RNDS2, SHA256MSG1, SHA256MSG2


Данные инструкции должны вызываться на различных этапах вычисления подписи (хеша) сообщения для ускорения наиболее вычислительно сложных операций.

Первые процессоры с поддержкой данных инструкций были представлены в 2016 году (микроархитектура Goldmont).

Поддержка процессорами

Набор инструкций AES-NI поддерживается процессорами Intel на основе архитектур[6]:

  • Westmere:
    • Westmere-EP (Xeon 56xx)
  • Clarkdale (кроме Core i3, Pentium и Celeron)
  • Arrandale (кроме Celeron, Pentium, Core i3, Core i5-4XXM)
  • Sandy Bridge:
    • все настольные, кроме Pentium, Celeron, Core i3
    • мобильные: только Core i7 и Core i5
  • Ivy Bridge (только i5, i7, Xeon and i3-2115C)
  • Haswell (все, кроме i3-4000m, Pentium and Celeron)
  • Broadwell (все, кроме Pentium и Celeron)
  • Silvermont/Airmont (все, кроме Bay Trail-D и Bay Trail-M)
  • Goldmont
  • Skylake
  • Kaby Lake
  • Coffee Lake


AMD:

  • Bulldozer
  • Piledriver
  • Steamroller
  • Excavator
  • Jaguar
  • Puma
  • Zen


Инструкции SHA поддерживаются процессорами Intel, начиная с архитектуры Goldmont (2016 год), процессорами AMD — с архитектуры Zen (2017 год).

Другие процессоры

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

Так, поддержка алгоритма AES реализована в процессорах:

  • на основе архитектуры Qualcomm ARMv8 и выше[7];
  • SPARC T4 и выше[8];
  • VIA (C3, C7)[9].


Архитектура ARM также имеет набор инструкций для алгоритмов SHA:

  • SHA1C — SHA1 hash update accelerator, choose
  • SHA1H — SHA1 fixed rotate
  • SHA1M — SHA1 hash update accelerator, majority
  • SHA1P — SHA1 hash update accelerator, parity
  • SHA1SU0 — SHA1 schedule update accelerator, first part
  • SHA1SU1 — SHA1 schedule update accelerator, second part
  • SHA256H — SHA256 hash update accelerator
  • SHA256H2 — SHA256 hash update accelerator, upper part
  • SHA256SU0 — SHA256 schedule update accelerator, first part
  • SHA256SU1 — SHA256 schedule update accelerator, second part


Примечания

Ссылки