Π—Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния инструкций ΠΎΡ‚ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° CPU ARM ΠΈ Intel

Π­Ρ€ΠΈΠΊ БиггСрс (Eric Biggers), ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΡˆΠΈΡ„Ρ€Π° Adiantum ΠΈ мэйнтСйнСр подсистСмы ядра Linux fscrypt, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ» Π½Π°Π±ΠΎΡ€ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ для блокирования ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΡ… ΠΈΠ·-Π·Π° особСнности процСссоров Intel, Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ постоянноС врСмя выполнСния инструкций для Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Π’ процСссорах Intel ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° проявляСтся начиная с сСмСйства Ice Lake. Аналогичная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ ΠΈ Π² процСссорах ARM.

НаличиС зависимости Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния инструкций ΠΎΡ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Π² этих инструкциях Π΄Π°Π½Π½Ρ‹Ρ… расцСниваСтся Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ ΠΊΠ°ΠΊ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² процСссорах, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π² систСмС криптографичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. МногиС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ криптографичСских Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² рассчитаны Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° врСмя Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ инструкций ΠΈ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ этого повСдСния ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ созданию Π°Ρ‚Π°ΠΊ ΠΏΠΎ сторонним ΠΊΠ°Π½Π°Π»Π°ΠΌ, Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° основС Π°Π½Π°Π»ΠΈΠ·Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

ΠŸΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния ΠΎΡ‚ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Ρ‚Π°ΠΊ ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ… ядра ΠΈΠ· пространства ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. По заявлСнию Π­Ρ€ΠΈΠΊΠ° БиггСрса, постоянноС врСмя выполнСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π΅ обСспСчиваСтся Π΄Π°ΠΆΠ΅ для инструкций, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ слоТСния ΠΈ XOR, Π° Ρ‚Π°ΠΊΠΆΠ΅ для спСциализированных инструкций AES-NI (информация Π½Π΅ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½Π° тСстами, ΠΏΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΈ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² ΠΈ подсчётС Π±ΠΈΡ‚ΠΎΠ² Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° Π½Π° ΠΎΠ΄ΠΈΠ½ Ρ†ΠΈΠΊΠ»).

Для ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ рассматриваСмого повСдСния ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Intel ΠΈ ARM ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ»ΠΈ Π½ΠΎΠ²Ρ‹Π΅ Ρ„Π»Π°Π³ΠΈ: PSTATE-Π±ΠΈΡ‚ DIT (Data Independent Timing) для CPU ARM ΠΈ MSR-Π±ΠΈΡ‚ DOITM (Data Operand Independent Timing Mode) для CPU Intel, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠ΅ староС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ с постоянным Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ выполнСния. Компании Intel ΠΈ ARM Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости для особо Π²Π°ΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π½ΠΎ Π½Π° Π΄Π΅Π»Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ вычислСния ΠΌΠΎΠ³ΡƒΡ‚ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Ρ‚ΡŒΡΡ Π² Π»ΡŽΠ±Ρ‹Ρ… частях ядра ΠΈ пространства ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, поэтому рассматриваСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ постоянной Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΈ Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² DOITM ΠΈ DIT для всСго ядра.

Для процСссоров ARM Π² Π²Π΅Ρ‚ΠΊΡƒ ядра Linux 6.2 ΡƒΠΆΠ΅ приняты ΠΏΠ°Ρ‚Ρ‡ΠΈ, ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ для ядра, Π½ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ°Ρ‚Ρ‡ΠΈ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ нСдостаточныС, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ΄ ядра ΠΈ Π½Π΅ ΠΌΠ΅Π½ΡΡŽΡ‚ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ для пространства ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Для процСссоров Intel Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΏΠΎΠΊΠ° находится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° стадии рСцСнзирования. Π˜Π·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ влияния ΠΏΠ°Ρ‚Ρ‡Π° Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ, Π½ΠΎ ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΠ· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Intel Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π΅ΠΆΠΈΠΌΠ° DOITM сниТаСт ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ·-Π·Π° ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ спСцифичная для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽΡ‰Π°Ρ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°) ΠΈ Π² Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… модСлях процСссоров сниТСниС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡΠΈΠ»ΠΈΡ‚ΡŒΡΡ.

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