ΠΡΠΈΠΊ ΠΠΈΠ³Π³Π΅ΡΡ (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