ชุดคำสั่งเครื่องเออีเอส
ชุดคำสั่งเครื่องเออีเอส (อังกฤษ: Advanced Encryption Standard instruction set, AES instruction set, AES-NI) ปัจจุบันได้ประกอบเข้ากับซีพียูหลายอย่าง เพื่อเร่งความเร็วให้แก่โปรแกรมประยุกต์ที่เข้ารหัสลับและถอดรหัสลับโดยใช้ Advanced Encryption Standard (AES) และเพื่อให้ทนการโจมตีแบบ side-channel attack[A] ปกติจะทำให้เกิดผลโดยเป็นชุดคำสั่งเครื่องซึ่งคำนวณ AES รอบหนึ่ง โดยรอบสุดท้ายมีวิธีพิเศษที่ต่างกันเล็กน้อย
ซีพียูสถาปัตยกรรม x86
[แก้]AES-NI (หรือ Advanced Encryption Standard New Instructions [AES-NI] ของอินเทล) เป็นการทำให้เกิดผลซึ่งชุดคำสั่งเครื่องเออีเอสเป็นอันแรก AES-NI เป็นชุดคำสั่งเพิ่ม (extension) ของ x86 instruction set architecture สำหรับไมโครโพรเซสเซอร์ของอินเทลและของเอเอ็มดี เป็นชุดคำสั่งที่อินเทลเป็นผู้เสนอในเดือนมีนาคม 2008[1]
ชุดคำสั่ง
[แก้]คำสั่ง | รายละเอียด[2] |
---|---|
AESENC
|
เข้ารหัสลับ AES 1 รอบ |
AESENCLAST
|
เข้ารหัสลับ AES รอบสุดท้าย |
AESDEC
|
ถอดรหัสลับ AES 1 รอบ |
AESDECLAST
|
ถอดรหัสลับ AES รอบสุดท้าย |
AESKEYGENASSIST
|
ช่วยสร้าง AES round key |
AESIMC
|
ช่วยทำ AES Inverse Mix Columns |
PCLMULQDQ
|
การคูณโดยไม่ทด - Carryless multiply (CLMUL)[3] |
อินเทล
[แก้]ซีพียูของอินเทลดังต่อไปนี้สนับสนุนชุดคำสั่งเครื่องเออีเอส[4]
- ซีพียูที่ใช้สถาปัตยกรรมไมโคร Westmere โดยเฉพาะก็คือ
- ซีพียูที่ใช้สถาปัตยกรรมไมโคร Sandy Bridge รวมทั้ง
- ซีพียู Ivy Bridge
- i5, i7 และ Xeon ทั้งหมดแต่ i3-2115C เท่านั้น[9]
- ซีพียู Haswell (ทั้งหมดยกเว้น i3-4000m,[10] เพนเทียมและเซเลรอน)
- ซีพียู Broadwell (ทั้งหมดยกเว้นเพนเทียมและเซเลรอน)
- ซีพียู Silvermont/Airmont (ทั้งหมดยกเว้น Bay Trail-D และ Bay Trail-M)
- ซีพียู Goldmont
- ซีพียู Skylake
- ซีพียู Kaby Lake
- ซีพียู Coffee Lake
เอเอ็มดี
[แก้]มีซีพียูเอเอ็มดีหลายอย่างที่สนับสนุนชุดคำสั่งเครื่องเออีเอส
- ซีพียูที่ใช้สถาปัตยกรรมไมโคร Jaguar และที่ใหม่กว่านั้น
- ซีพียู Puma และที่ใหม่กว่านั้น
- ซีพียู "Heavy Equipment" (ที่ใช้ชื่อเป็นเครื่อง/อุปกรณ์ก่อสร้าง)
- ซีพียู Bulldozer[11]
- ซีพียู Piledriver
- ซีพียู Steamroller
- ซีพียู Excavator และที่ใหม่กว่า
- ซีพียู Zen
- ซีพียู Zen+
การเร่งความเร็วในฮาร์ดแวร์ของสถาปัตยกรรมอื่น ๆ
[แก้]ซีพียู SPARC (T3, T4, T5, M5 และต่อจากนั้น) และซีพียู ARM ล่าสุด ๆ ล้วนสนับสนุนเออีเอ็สด้วยชุดคำสั่งที่ไม่ต้องมีเอกสิทธิ์ (unprivileged processor instructions) ซีพียู SPARC T4 ที่วางตลาดในปี 2011 มีชุดคำสั่งระดับผู้ใช้ (user-level instruction) ซึ่งช่วยคำนวณรอบ AES[12] โดยเป็นชุดคำสั่งนอกเหนือไปจากคำสั่งเข้ารหัส (encryption commands) ในระดับสูงกว่านั้น
สถาปัตยกรรมซีพียู ARMv8-A ที่ประกาศในปี 2011 รวมทั้ง ARM Cortex-A53 และ A57 (แต่ไม่รวมซีพียู v7 ก่อนหน้านั้น เช่น Cortex A5, 7, 8, 9, 11, 15[ต้องการอ้างอิง]) ก็มีชุดคำสั่งระดับผู้ใช้ซึ่งช่วยคำนวณรอบเออีเอส[13]
ในเดือนสิงหาคม 2012 ไอบีเอ็มประกาศว่า[14] ซีพียู Power7+ ที่กำลังออกวางตลาดจะมีชุดคำสั่งสนับสนุนเออีเอส แต่ก็ใช้แทนซึ่งกันและกันกับชุดคำสั่ง AES-NI ไม่ได้ แม้จะมีฟังก์ชันคล้าย ๆ กัน
ซีพียูเมนเฟรมคอมพิวเตอร์ไอบีเอ็ม z9 และต่อจากนั้นสนับสนุนเออีเอสด้วยอ็อปโค๊ด (opcode) เดี่ยว ๆ ผ่านฮาร์ดแวร์ CryptoExpress[15] จึงใช้ง่ายกว่าชุดคำสั่งของอินเทล แต่ก็ไม่อาจต่อเติมเพื่อทำให้เกิดผลซึ่งขั้นตอนวิธีที่พึ่ง AES round functions อื่น ๆ (เช่น ฟังก์ชันแฮช Whirlpool )
ซีพียู x86 อื่น ๆ
[แก้]ซีพียู VIA x86, AMD Geode และ Marvell Kirkwood (ARM, mv_cesa สำหรับลินุกซ์) สนับสนุนการเร่งคำนวณเออีเอสด้วยโปรแกรมขับแทน (driver-based)
ซีพียูต่อไปนี้แม้จะมีชุดคำสั่งเร่งการคำนวณเออีเอส แต่ก็ไม่สนับสนุน AES-NI
- ซีพียู AMD Geode LX[16]
- VIA
สถาปัตยกรรม 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[21]
- Broadcom
- BCM5801/BCM5805/BCM5820 โดยใช้ Security Processor[18]
- NXP Semiconductors
- i.MX6 และต่อจากนั้น[22]
- ควอลคอมม์
- Snapdragon 805 และต่อจากนั้น[23]
- Rockchip
- RK30xx series และต่อจากนั้น[24]
- ซัมซุง
- Exynos 3 series และต่อจากนั้น[25]
- Allwinner
สถาปัตยกรรมอื่น ๆ
[แก้]- Atmel XMEGA[26] (เป็นวงจรเร่งความเร็วบนชิปที่ทำงานอย่างขนาน ไม่ใช่ชุดคำสั่ง )
- SPARC T3 และต่อจากนั้นสนับสนุนขั้นตอนวิธีการเข้ารหัสหลายอย่างในฮาร์ดแวร์รวมทั้งเออีเอส
- ซีพียู Cavium Octeon MIPS[27] ทั้งหมดสนับสนุนขั้นตอนวิธีการเข้ารหัสหลายอย่างในฮาร์ดแวร์รวมทั้งเออีเอสโดยใช้ชุดคำสั่งพิเศษ coprocessor 3
สมรรถนะ/ความเร็ว
[แก้]ในบทความ "สมรรถนะของ AES-NI วิเคราะห์" นักสื่อข่าวได้พบ "ผลที่น่าประทับใจจากโปรแกรมประยุกต์กำมือหนึ่งที่ได้ทำให้เหมาะสุดเพื่อใช้สมรรถภาพของ AES-NI จากอินเทล"[28] การวิเคราะห์สมรรถนะด้วยคลังโปรแกรมโอเพนซอร์ซ Crypto++ พบปริมาณงาน (throughput) ที่เพิ่มขึ้นเป็น 8 เท่า คือลดไซเคิลซีพียูในการคำนวณจาก 28 ไซเคิลต่อไบต์เหลือแค่ 3.5 ไซเคิลต่อไบต์ เมื่อใช้ AES/GCM โดยเทียบกับเพนเทียม 4[29][30][ต้องการแหล่งอ้างอิงดีกว่านี้]
ซอฟต์แวร์ที่สนับสนุน
[แก้]คอมไพเลอร์ปัจจุบันโดยมากสามารถออกชุดคำสั่งเออีเอส ซอฟต์แวร์ความปลอดภัยและการเข้ารหัสลับโดยมากสนับสนุนชุดคำสั่งนี้ รวมทั้งโครงสร้างพื้นฐานสำคัญ ๆ ดังต่อไปนี้
- Cryptography API: Next Generation (CNG) (ต้องใช้ไมโครซอฟท์ วินโดวส์)[31]
- Crypto API (ลินุกซ์)
- จาวา 7 HotSpot
- Network Security Services (NSS) เวอร์ชัน 3.13 และต่อจากนั้น[32] (ซึ่งมอซิลลา ไฟร์ฟอกซ์ และกูเกิล โครม ใช้)
- Solaris Cryptographic Framework[33] สำหรับโซลาริส 10 และต่อจากนั้น
- OpenCrypto API (aesni (4) driver) สำหรับฟรีบีเอสดี[34]
- OpenSSL 1.0.1 และต่อจากนั้น[35]
- GnuTLS
- FLAM/FLUC 5.1.08 (ฉบับ 2015-08-24) และต่อจากนั้น[36]
- VeraCrypt[37]
- Bloombase[38]
เชิงอรรถ
[แก้]- ↑ ในวิทยาการเข้ารหัสลับ side-channel attack หมายถึงการโจมตีใดก็ได้ที่ใช้ข้อมูลจากการทำให้เกิดผลบนเครื่องเข้ารหัสลับ แทนที่จะใช้กำลังล้วน ๆ (brute force) หรือหาจุดอ่อนทางทฤษฎีของขั้นตอนวิธีการเข้ารหัสลับ ยกตัวอย่าง เช่น ข้อมูลเกี่ยวกับช่วงเวลา การใช้พลังงาน การรั่วไหลของรังสีแม่เหล็กไฟฟ้า หรือแม้แต่เสียงก็อาจให้ข้อมูลเพิ่มเพื่อถือโอกาสใช้เจาะทำลายระบบ
อ้างอิง
[แก้]- ↑ "Intel Software Network". Intel. คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ 2008-04-07. สืบค้นเมื่อ 2008-04-05.
- ↑ Gueron, Shay (2010). "Intel Advanced Encryption Standard (AES) Instruction Set White Paper" (PDF). Intel. สืบค้นเมื่อ 2012-09-20.
- ↑ "Carry-Less Multiplication". Intel.
- ↑ "Intel® Product Specification Advanced Search". Intel® ARK (Product Specs).
- ↑ Shimpi, Anand Lal. "The Sandy Bridge Review: Intel Core i7-2600K, i5-2500K and Core i3-2100 Tested".
- ↑ "Intel® Product Specification Comparison".
- ↑ "AES-NI support in TrueCrypt (Sandy Bridge problem)". forum.notebookreview.com.
- ↑ "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". Intel® ARK (Product Specs).
- ↑ "Intel® Core™ i3-2115C Processor (3M Cache, 2.00 GHz) Product Specifications". Intel® ARK (Product Specs).
- ↑ "Intel® Core™ i3-4000M Processor (3M Cache, 2.40 GHz) Product Specifications". Intel® ARK (Product Specs).
- ↑ "Following Instructions". AMD. 2010-11-22. คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ 2010-11-26. สืบค้นเมื่อ 2011-01-04.
- ↑ Anderson, Dan (2011). "SPARC T4 OpenSSL Engine". Oracle. สืบค้นเมื่อ 2012-09-20.
- ↑ Grisenthwaite, Richard (2011). "ARMv8-A Technology Preview" (PDF). ARM. คลังข้อมูลเก่าเก็บจากแหล่งเดิม (PDF)เมื่อ 2018-06-10. สืบค้นเมื่อ 2012-09-20.
- ↑ Morgan, Timothy Prickett (2012). "All the sauce on Big Blue's hot chip: More on Power7+". The Register. สืบค้นเมื่อ 2012-09-20.
- ↑ "IBM System z10 cryptography". IBM. สืบค้นเมื่อ 2014-01-27.
- ↑ "AMD Geode™ LX Processor Family Technical Specifications". AMD.
- ↑ "VIA Padlock Security Engine". VIA. คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ 2011-05-15. สืบค้นเมื่อ 2011-11-14.
- ↑ 18.0 18.1 "Cryptographic Hardware Accelerators". OpenWRT.org.
- ↑ "VIA Eden-N Processors". VIA. คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ 2011-11-11. สืบค้นเมื่อ 2011-11-14.
- ↑ "VIA C7 Processors". VIA. คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ 2007-04-19. สืบค้นเมื่อ 2011-11-14.
- ↑ "Security System/Crypto Engine driver status". sunxi.montjoie.ovh. คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ 2019-01-28.
- ↑ "Linux Cryptographic Acceleration on an i.MX6" (PDF). Linux Foundation. February 2017.
- ↑ "Cryptographic module in Snapdragon 805 is FIPS 140-2 certified". Qualcomm. 2014-11-07.
- ↑ "RK3128 - Rockchip Wiki". Rockchip wiki.
- ↑ "The Samsung Exynos 7420 Deep Dive - Inside A Modern 14nm SoC". AnandTech.
- ↑ "Using the XMEGA built-in AES accelerator" (PDF). Atmel. สืบค้นเมื่อ 2014-12-03.
- ↑ "Cavium Networks Launches Industry's Broadest Line of Single and Dual Core MIPS64®-based OCTEON™ Processors Targeting Intelligent Next Generation Networks". Cavium. คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ 2017-12-07. สืบค้นเมื่อ 2016-09-17.
- ↑ Schmid, Patrick; Roos, Achim (2010). "AES-NI Performance Analyzed". Tom's Hardware. สืบค้นเมื่อ 2010-08-10.
{{cite web}}
: CS1 maint: multiple names: authors list (ลิงก์) - ↑ T. Krovetz, W. Dai (2010). "How to get fast AES calls?". Crypto++ user group. สืบค้นเมื่อ 2010-08-11.
- ↑ "Crypto++ 5.6.0 Pentium 4 Benchmarks". Crypto++ Website. 2009. คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ 2010-09-19. สืบค้นเมื่อ 2010-08-10.
- ↑ "Intel Advanced Encryption Standard Instructions (AES-NI)". Intel. 2010-03-02. คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ 2010-07-07. สืบค้นเมื่อ 2010-07-11.
- ↑ "AES-NI enhancements to NSS on Sandy Bridge systems". 2012-05-02. สืบค้นเมื่อ 2012-11-25.
- ↑ "System Administration Guide: Security Services, Chapter 13 Solaris Cryptographic Framework (Overview)". Oracle. September 2010. สืบค้นเมื่อ 2012-11-27.
- ↑ "FreeBSD 8.2 Release Notes". FreeBSD.org. 2011-02-24. สืบค้นเมื่อ 2011-12-18.
- ↑ OpenSSL: CVS Web Interface [ลิงก์เสีย]
- ↑ "www.flam.de :: Products". flam.de.
- ↑ "Hardware Acceleration". www.veracrypt.fr.
- ↑ "Bloombase StoreSafe Intelligent Storage Firewall".
แหล่งข้อมูลอื่น
[แก้]- Intel Advanced Encryption Standard Instructions (AES-NI)
- AES instruction set whitepaper (4.4 MB, PDF) from Intel