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

**ชุดคำสั่งเครื่องเออีเอส** () ปัจจุบันได้ประกอบเข้ากับซีพียูหลายอย่าง
เพื่อเร่งความเร็วให้แก่โปรแกรมประยุกต์ที่เข้ารหัสลับและถอดรหัสลับโดยใช้ 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
* Bloombase

## เชิงอรรถ

## อ้างอิง

## แหล่งข้อมูลอื่น
* 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
หมวดหมู่:เออีเอส