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

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