AES指令集
進階加密標準指令集現已經整合到許多處理器中。應用程式執行進階加密標準(AES)時,使用該指令集提高加密和解密的速度(以及對側信道攻擊的抵抗能力)。
x86架構
進階加密標準指令集(或稱英特爾進階加密標準新指令,簡稱AES-NI)是一個x86指令集架構的擴充,用於Intel和AMD微處理器,由Intel在2008年3月提出。[1]該指令集的目的是改進應用程式使用進階加密標準(AES)執行加密和解密的速度。
指令
指令 | 描述[2] |
---|---|
AESENC
|
執行一輪AES加密流 |
AESENCLAST
|
執行最後一輪AES加密流 |
AESDEC
|
執行一輪AES解密流 |
AESDECLAST
|
執行最後一輪AES解密流 |
AESKEYGENASSIST
|
協助生成AES輪迴金鑰 |
AESIMC
|
協助AES逆列混合 |
PCLMULQDQ
|
無進位乘法(CLMUL)[3] |
Intel
Intel支援AES-NI的處理器[4]:
- Intel Westmere架構處理器,具體如下:
- Intel Westmere-EP (Xeon 56XX)(也稱Gulftown至強5600系列DP伺服器型號)處理器。
- Intel Clarkdale處理器(酷睿i3、奔騰和賽揚除外)。
- Intel Arrandale處理器(賽揚、奔騰、酷睿i3、酷睿i5-4XXM除外)。
- Intel Sandy Bridge處理器。
- Intel Ivy Bridge處理器
- 僅所有i5、i7、至強和i3-2115C[9]。
- Intel Haswell處理器。(i3-4000M[10]、奔騰和賽揚除外)
- Intel Skylake(和以後)處理器。
AMD
- AMD
- AMD Ryzen處理器。
- AMD Bulldozer處理器。[11]
- AMD Piledriver處理器。
- AMD Steamroller處理器。
- AMD Jaguar處理器。
- AMD Puma處理器。
其他架構中的硬體加速
在最新的SPARC處理器(T4、T5、M5及之後)和最新的ARM處理器中也有非特權的處理器指令提供AES支援。2011年推出的SPARC T4處理器有使用者級指令實現AES輪迴。[12]這些指令補充了更進階別的加密命令。2011年宣布的ARMv8-A處理器架構也有指令實現AES輪迴,這包括ARM Cortex-A53和A57,但不包括以前的v7處理器(如Cortex A5、7、8、9、11、15)。[13]2012年8月,IBM宣布[14]即將到來的Power7+架構有望提供AES支援。這些架構中的命令不能直接與AES-NI命令相容,但可實現類似的功能。
IBM z9或更晚的主機處理器支援AES作為單操作碼(KM、KMC)AES ECB/CBC指令,使用IBM的CryptoExpress硬體。[15]這些單指令的AES版本比Intel NI更容易使用,但不能被擴充實現為基於AES輪迴函式的其他演算法,例如Whirlpool雜湊演算法。
x86 CPU的支援
VIA x86 CPU、AMD Geode和Marvell Kirkwood(ARM,mv_cesa在Linux中)使用基於驅動程式的AES加速處理(另見Crypto API (Linux))。下列產品支援AES硬體加速,雖然不支援AES-NI指令集:
ARM架構
- Allwinner
- 使用「安全系統」的A10和A20。[21]
- Broadcom
- 使用「安全處理器」的BCM5801/BCM5805/BCM5820。[18]
- 高通
- Snapdragon 805(和以後)。
- 三星電子
- Exynos 3系列(和以後)。
其他架構
- Atmel xmega [22](並列執行的片上加速器,不是指令)
效能
在《AES-NI 效能分析》中,Patrick Schmid和Achim Roos 指出:「...少數已使用英特爾 AES-NI 進行最佳化的應用程式表現出了傲人成績」。 [23] 一次使用Crypto++函式庫執行的效能分析顯示,相比沒有加速的Pentium 4, AES/GCM的吞吐量從大約每位元組28.0周期顯著提升至每位元組3.5周期。 [24][25]
軟體支援
大多數現代編譯器能夠利用AES指令。
許多安全和加密軟體支援AES指令集,包括下列核心基礎設施:
- Cryptography API: Next Generation (CNG)(Windows)[26]
- Linux的Crypto API
- Java 7 HotSpot
- Network Security Services(NSS)3.13及更高版本 [27](被Firefox和Google Chrome使用)
- Solaris Cryptographic Framework[28]從Solaris 10起。
- FreeBSD的OpenCrypto API(aesni(4) 驅動程式)[29]
- OpenSSL 1.0.1及以上[30]
- FLAM®/FLUC®(頁面存檔備份,存於網際網路檔案館) 5.1.08(2015-08-24發布)及以上
- Bloombase Cryptographic Module [31]
參考
參考資料
- ^ Intel Software Network. Intel. [2008-04-05]. (原始內容存檔於2008-04-07).
- ^ Shay Gueron. Intel Advanced Encryption Standard (AES) Instruction Set White Paper. Intel. 2010 [2012-09-20]. (原始內容存檔於2012-10-29).
- ^ Carry-Less Multiplication. Intel. [2016-05-14]. (原始內容存檔於2016-04-25).
- ^ Intel® Product Specification Advanced Search. [2019-03-22]. (原始內容存檔於2019-09-18).
- ^ AnandTech - The Sandy Bridge Review: Intel Core i7-2600K, i5-2500K and Core i3-2100 Tested. [2016-05-14]. (原始內容存檔於2015-04-24).
- ^ Compare Intel® Products. [2016-05-14]. (原始內容存檔於2016-04-25).
- ^ AES-NI support in TrueCrypt (Sandy Bridge problem). [2016-05-14]. (原始內容存檔於2014-08-08).
- ^ Some products can support AES New Instructions with a Processor Configuration update, in particular, i7-2630QM/i7-2635QM, i7-2670QM/i7-2675QM, i5-2430M/i5-2435M, i5-2410M/i5-2415M. Please contact OEM for the BIOS that includes the latest Processor configuration update.. [2016-05-14]. (原始內容存檔於2011-08-13).
- ^ 存档副本. [2016-05-14]. (原始內容存檔於2016-03-22).
- ^ 存档副本. [2016-05-14]. (原始內容存檔於2017-09-04).
- ^ Following Instructions. AMD. November 22, 2010 [2011-01-04]. (原始內容存檔於2010-11-26).
- ^ Dan Anderson. SPARC T4 OpenSSL Engine. Oracle. 2011 [2012-09-20]. (原始內容存檔於2012-11-03).
- ^ Richard Grisenthwaite. ARMv8-A Technology Preview (PDF). ARM. 2011 [2012-09-20]. (原始內容 (PDF)存檔於2018-06-10).
- ^ Timothy Prickett Morgan. All the sauce on Big Blue's hot chip: More on Power7+. The Register. 2012 [2012-09-20]. (原始內容存檔於2012-08-24).
- ^ IBM System z10 cryptography. IBM. [2014-01-27]. (原始內容存檔於2014-02-01).
- ^ AMD Geode™ LX Processor Family Technical Specifications. AMD. [2016-05-14]. (原始內容存檔於2014-01-30).
- ^ VIA Padlock Security Engine. VIA. [2011-11-14]. (原始內容存檔於2011-05-15).
- ^ 18.0 18.1 Cryptographic Hardware Accelerators (頁面存檔備份,存於網際網路檔案館) on OpenWRT.org
- ^ VIA Eden-N Processors. VIA. [2011-11-14]. (原始內容存檔於2011-11-11).
- ^ VIA C7 Processors. VIA. [2011-11-14]. (原始內容存檔於2007-04-19).
- ^ Security System driver status. [2016-05-14]. (原始內容存檔於2016-05-14).
- ^ Using the XMEGA built-in AES accelerator (PDF). [2014-12-03]. (原始內容存檔 (PDF)於2015-09-23).
- ^ P. Schmid and A. Roos. AES-NI Performance Analyzed. Tom's Hardware. 2010 [2010-08-10].
- ^ T. Krovetz, W. Dai. How to get fast AES calls?. Crypto++ user group. 2010 [2010-08-11]. (原始內容存檔於2012-11-09).
- ^ Crypto++ 5.6.0 Pentium 4 Benchmarks. Crypto++ Website. 2009 [2010-08-10]. (原始內容存檔於2010-09-19).
- ^ Intel Advanced Encryption Standard Instructions (AES-NI). Intel. March 2, 2010 [2010-07-11]. (原始內容存檔於2010-07-07).
- ^ AES-NI enhancements to NSS on Sandy Bridge systems. 2012-05-02 [2012-11-25]. (原始內容存檔於2014-04-13).
- ^ System Administration Guide: Security Services, Chapter 13 Solaris Cryptographic Framework (Overview). Oracle. September 2010 [2012-11-27]. (原始內容存檔於2012-02-07).
- ^ FreeBSD 8.2 Release Notes. FreeBSD.org. 2011-02-24 [2011-12-18]. (原始內容存檔於2011-04-12).
- ^ OpenSSL: CVS Web Interface. [2020-12-07]. (原始內容存檔於2012-07-07).
- ^ Bloombase StoreSafe Intelligent Storage Firewall. [2023-11-14]. (原始內容存檔於2024-05-03).