Набор ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ для ускорСния ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ/Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ AES-GCM

Набор ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ для ускорСния ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ/Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ AES-GCM

2 июня Π­Ρ€ΠΈΠΊ БиггСрс (ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ ΠΈΠ· Google) прСдставил Π½ΠΎΠ²Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ AES-XTS для Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ высокой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ процСссоров Intel/AMD с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½ΠΎΠ²Ρ‹Ρ… Π½Π°Π±ΠΎΡ€ΠΎΠ² ΠΊΠΎΠ΄Π° AES-NI + AVX, VAES + AVX2, VAES + AVX10/256 ΠΈ VAES + AVX10/512.

Код AES-NI GCM замСняСт собой ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ, написанный Intel, ΠΈ устраняСт ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ выявлСнныС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹:

«Π­Ρ‚ΠΎΡ‚ Π½Π°Π±ΠΎΡ€ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ добавляСт Π² VAES ΠΈ AVX512/AVX10 Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ AES-GCM (Ρ€Π΅ΠΆΠΈΠΌ Galois/Counter), Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ AES-GCM Π΄ΠΎ 162%. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ½ замСняСт старый ΠΊΠΎΠ΄ AES-NI GCM ΠΎΡ‚ Intel Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ. ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ быстрСС ΠΈ исправляСт ряд ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‰ΠΈΠΉ 250 ΠšΠ‘. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ см. Π’ исправлСниях.

ΠšΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ состояниСм ассСмблСрного ΠΊΠΎΠ΄Π° x86_64 AES-GCM являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π΄Π²Π° ассСмблСрных Ρ„Π°ΠΉΠ»Π°: ΠΎΠ΄ΠΈΠ½ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ AES-NI с AVX ΠΈΠ»ΠΈ Π±Π΅Π· Π½Π΅Π³ΠΎ, Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ VAES с AVX512/AVX10 с 256-Π±ΠΈΡ‚Π½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ 512-Π±ΠΈΡ‚Π½Ρ‹ΠΌΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ. Π’ Π½Ρ‘ΠΌ отсутствуСт ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½ΠΎΠ³ΠΎ VAES (Π±Π΅Π· AVX512/AVX10). Π­Ρ‚ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ отличаСтся ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ я сдСлал с AES-XTS, Π³Π΄Π΅ ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ» Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ AVX ΠΈ AVX512/AVX10, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΊΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ VAES (Π±Π΅Π· AVX512/AVX10), Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„Π°ΠΉΠ» Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ΄, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΎΡ‚ AVX. Однако, Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ это каТСтся ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, учитывая Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎ 16 SIMD-рСгистров ΠΈ 128-Π±ΠΈΡ‚Π½Ρ‹Ρ… Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ сущСствСнно ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΠΌΡΡ конструктивным Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌ Π² AES-GCM, Π½ΠΎ Π½Π΅ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ для AES-Π₯Π’Π‘. ΠŸΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Ρ‹, поставляСмыС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с VAES, Ρ‚Π°ΠΊΠΆΠ΅ каТутся Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ явлСниСм, поэтому Π½Π°ΠΌ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅ слСдуСт слишком ΡΡ‚Π°Ρ€Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ эту ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ».

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: linux.org.ru