ชุดคำสั่งเครื่องเออีเอส

ชุดคำสั่งเครื่องเออีเอส () ปัจจุบันได้ประกอบเข้ากับซีพียูหลายอย่าง
เพื่อเร่งความเร็วให้แก่โปรแกรมประยุกต์ที่เข้ารหัสลับและถอดรหัสลับโดยใช้ Advanced Encryption Standard (AES) และเพื่อให้ทนการโจมตีแบบ side-channel attack
ปกติจะทำให้เกิดผลโดยเป็นชุดคำสั่งเครื่องซึ่งคำนวณ AES รอบหนึ่ง โดยรอบสุดท้ายมีวิธีพิเศษที่ต่างกันเล็กน้อย

ซีพียูสถาปัตยกรรม x86 
AES-NI (หรือ Advanced Encryption Standard New Instructions  ของอินเทล) เป็นการทำให้เกิดผลซึ่งชุดคำสั่งเครื่องเออีเอสเป็นอันแรก
AES-NI เป็นชุดคำสั่งเพิ่ม (extension) ของ x86 instruction set architecture สำหรับไมโครโพรเซสเซอร์ของอินเทลและของเอเอ็มดี เป็นชุดคำสั่งที่อินเทลเป็นผู้เสนอในเดือนมีนาคม 2008

ชุดคำสั่ง

อินเทล 
ซีพียูของอินเทลดังต่อไปนี้สนับสนุนชุดคำสั่งเครื่องเออีเอส
 ซีพียูที่ใช้สถาปัตยกรรมไมโคร Westmere โดยเฉพาะก็คือ
 ซีพียู Westmere-EP (Xeon 56xx) (หรือที่รู้จักว่า Gulftown Xeon 5600-series DP server model) 
 ซีพียู Clarkdale (ยกเว้น เพนเทียม, เซเลรอน, Core i3)
 ซีพียู Arrandale (ยกเว้น เพนเทียม, เซเลรอน, Core i3, Core i5-4XXM)
 ซีพียูที่ใช้สถาปัตยกรรมไมโคร Sandy Bridge รวมทั้ง 
 คอมพิวเตอร์แบบตั้งโต๊ะ - ทั้งหมดยกเว้นเพนเทียม, เซเลรอน, Core i3
 คอมพิวเตอร์แบบเคลื่อนที่ (mobile) : Core i7 และ Core i5 ทั้งหมด แต่มีผู้จำหน่ายผลิตภัณฑ์ซึ่งมีไบออสที่ระงับชุดคำสั่งไม่ให้ทำงาน จึงต้องอัปเดตไบออสเพื่อเปิดชุดคำสั่ง
 ซีพียู Ivy Bridge 
 i5, i7 และ Xeon ทั้งหมดแต่ i3-2115C เท่านั้น
 ซีพียู Haswell (ทั้งหมดยกเว้น i3-4000m, เพนเทียมและเซเลรอน)
 ซีพียู Broadwell (ทั้งหมดยกเว้นเพนเทียมและเซเลรอน)
 ซีพียู Silvermont/Airmont (ทั้งหมดยกเว้น Bay Trail-D และ Bay Trail-M)
 ซีพียู Goldmont
 ซีพียู Skylake 
 ซีพียู Kaby Lake 
 ซีพียู Coffee Lake

เอเอ็มดี 
มีซีพียูเอเอ็มดีหลายอย่างที่สนับสนุนชุดคำสั่งเครื่องเออีเอส
 ซีพียูที่ใช้สถาปัตยกรรมไมโคร Jaguar และที่ใหม่กว่านั้น
 ซีพียู Puma และที่ใหม่กว่านั้น
 ซีพียู "Heavy Equipment" (ที่ใช้ชื่อเป็นเครื่อง/อุปกรณ์ก่อสร้าง)
 ซีพียู Bulldozer
 ซีพียู Piledriver
 ซีพียู Steamroller
 ซีพียู Excavator และที่ใหม่กว่า
 ซีพียู Zen
 ซีพียู Zen+

การเร่งความเร็วในฮาร์ดแวร์ของสถาปัตยกรรมอื่น ๆ 
ซีพียู SPARC (T3, T4, T5, M5 และต่อจากนั้น) และซีพียู ARM ล่าสุด ๆ ล้วนสนับสนุนเออีเอ็สด้วยชุดคำสั่งที่ไม่ต้องมีเอกสิทธิ์ (unprivileged processor instructions) 
ซีพียู SPARC T4 ที่วางตลาดในปี 2011 มีชุดคำสั่งระดับผู้ใช้ (user-level instruction) ซึ่งช่วยคำนวณรอบ AES
โดยเป็นชุดคำสั่งนอกเหนือไปจากคำสั่งเข้ารหัส (encryption commands) ในระดับสูงกว่านั้น 

สถาปัตยกรรมซีพียู ARMv8-A ที่ประกาศในปี 2011 รวมทั้ง ARM Cortex-A53 และ A57 
(แต่ไม่รวมซีพียู v7 ก่อนหน้านั้น เช่น Cortex )
ก็มีชุดคำสั่งระดับผู้ใช้ซึ่งช่วยคำนวณรอบเออีเอส

ในเดือนสิงหาคม 2012 ไอบีเอ็มประกาศว่า
ซีพียู Power7+ ที่กำลังออกวางตลาดจะมีชุดคำสั่งสนับสนุนเออีเอส
แต่ก็ใช้แทนซึ่งกันและกันกับชุดคำสั่ง AES-NI ไม่ได้ แม้จะมีฟังก์ชันคล้าย ๆ กัน

ซีพียูเมนเฟรมคอมพิวเตอร์ไอบีเอ็ม z9 และต่อจากนั้นสนับสนุนเออีเอสด้วยอ็อปโค๊ด (opcode) เดี่ยว ๆ ผ่านฮาร์ดแวร์ CryptoExpress
จึงใช้ง่ายกว่าชุดคำสั่งของอินเทล แต่ก็ไม่อาจต่อเติมเพื่อทำให้เกิดผลซึ่งขั้นตอนวิธีที่พึ่ง AES round functions อื่น ๆ (เช่น ฟังก์ชันแฮช Whirlpool )

ซีพียู x86 อื่น ๆ 
ซีพียู VIA x86, AMD Geode และ Marvell Kirkwood (ARM, mv_cesa สำหรับลินุกซ์) สนับสนุนการเร่งคำนวณเออีเอสด้วยโปรแกรมขับแทน (driver-based)

ซีพียูต่อไปนี้แม้จะมีชุดคำสั่งเร่งการคำนวณเออีเอส แต่ก็ไม่สนับสนุน AES-NI
 ซีพียู AMD Geode LX
 VIA
 VIA PadLock
 ซีพียู VIA C3 Nehemiah C5P (Eden-N)
 ซีพียู VIA C7 Esther C5J

สถาปัตยกรรม ARM 

 สถาปัตยกรรม ARMv8
 ARM Cortex-A30/50/70 สนับสนุน ARM cryptographic extensions โดยเป็นทางเลือก
 Cryptographic hardware accelerators/engines
 Allwinner
 A10, A20, A30, A31, A80, A83T, H3 และ A64 โดยใช้ Security System
 Broadcom
 BCM5801/BCM5805/BCM5820 โดยใช้ Security Processor
 NXP Semiconductors
 i.MX6 และต่อจากนั้น
 ควอลคอมม์
 Snapdragon 805 และต่อจากนั้น
 Rockchip
 RK30xx series และต่อจากนั้น
 ซัมซุง
 Exynos 3 series และต่อจากนั้น

สถาปัตยกรรมอื่น ๆ 
 Atmel XMEGA (เป็นวงจรเร่งความเร็วบนชิปที่ทำงานอย่างขนาน ไม่ใช่ชุดคำสั่ง )
 SPARC T3 และต่อจากนั้นสนับสนุนขั้นตอนวิธีการเข้ารหัสหลายอย่างในฮาร์ดแวร์รวมทั้งเออีเอส
 ซีพียู Cavium Octeon MIPS ทั้งหมดสนับสนุนขั้นตอนวิธีการเข้ารหัสหลายอย่างในฮาร์ดแวร์รวมทั้งเออีเอสโดยใช้ชุดคำสั่งพิเศษ coprocessor 3

สมรรถนะ/ความเร็ว 
ในบทความ "สมรรถนะของ AES-NI วิเคราะห์" นักสื่อข่าวได้พบ "ผลที่น่าประทับใจจากโปรแกรมประยุกต์กำมือหนึ่งที่ได้ทำให้เหมาะสุดเพื่อใช้สมรรถภาพของ AES-NI จากอินเทล"
การวิเคราะห์สมรรถนะด้วยคลังโปรแกรมโอเพนซอร์ซ Crypto++ พบปริมาณงาน (throughput) ที่เพิ่มขึ้นเป็น 8 เท่า คือลดไซเคิลซีพียูในการคำนวณจาก 28 ไซเคิลต่อไบต์เหลือแค่ 3.5 ไซเคิลต่อไบต์ เมื่อใช้ AES/ โดยเทียบกับเพนเทียม 4

ซอฟต์แวร์ที่สนับสนุน 
คอมไพเลอร์ปัจจุบันโดยมากสามารถออกชุดคำสั่งเออีเอส
ซอฟต์แวร์ความปลอดภัยและการเข้ารหัสลับโดยมากสนับสนุนชุดคำสั่งนี้ รวมทั้งโครงสร้างพื้นฐานสำคัญ ๆ ดังต่อไปนี้
 Cryptography API: Next Generation (CNG) (ต้องใช้ไมโครซอฟท์ วินโดวส์)
 Crypto API (ลินุกซ์)
 จาวา 7 HotSpot
 Network Security Services (NSS) เวอร์ชัน 3.13 และต่อจากนั้น (ซึ่งมอซิลลา ไฟร์ฟอกซ์ และกูเกิล โครม ใช้)
 Solaris Cryptographic Framework สำหรับโซลาริส 10 และต่อจากนั้น
 OpenCrypto API (aesni (4) driver) สำหรับฟรีบีเอสดี
 OpenSSL 1.0.1 และต่อจากนั้น
 GnuTLS
 FLAM/FLUC 5.1.08 (ฉบับ 2015-08-24) และต่อจากนั้น
 VeraCrypt

เชิงอรรถ

อ้างอิง

แหล่งข้อมูลอื่น 
 Intel Advanced Encryption Standard Instructions (AES-NI)
 AES instruction set whitepaper (4.4 MB, PDF) from Intel
X86 architecture
X86 instructions	
Advanced Micro Devices technologies
เออีเอส