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

จากวิกิพีเดีย สารานุกรมเสรี
ไปยังการนำทาง ไปยังการค้นหา

ชุดคำสั่งเครื่องเออีเอส (อังกฤษ: 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
    • VIA PadLock[17][18]
      • ซีพียู VIA C3 Nehemiah C5P (Eden-N)[19]
      • ซีพียู VIA C7 Esther C5J[20]

สถาปัตยกรรม 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]

สถาปัตยกรรมอื่น ๆ[แก้]

  • 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][ต้องการแหล่งอ้างอิงดีกว่านี้]

ซอฟต์แวร์ที่สนับสนุน[แก้]

คอมไพเลอร์ปัจจุบันโดยมากสามารถออกชุดคำสั่งเออีเอส ซอฟต์แวร์ความปลอดภัยและการเข้ารหัสลับโดยมากสนับสนุนชุดคำสั่งนี้ รวมทั้งโครงสร้างพื้นฐานสำคัญ ๆ ดังต่อไปนี้

เชิงอรรถ[แก้]

  1. ในวิทยาการเข้ารหัสลับ side-channel attack หมายถึงการโจมตีใดก็ได้ที่ใช้ข้อมูลจากการทำให้เกิดผลบนเครื่องเข้ารหัสลับ แทนที่จะใช้กำลังล้วน ๆ (brute force) หรือหาจุดอ่อนทางทฤษฎีของขั้นตอนวิธีการเข้ารหัสลับ ยกตัวอย่าง เช่น ข้อมูลเกี่ยวกับช่วงเวลา การใช้พลังงาน การรั่วไหลของรังสีแม่เหล็กไฟฟ้า หรือแม้แต่เสียงก็อาจให้ข้อมูลเพิ่มเพื่อถือโอกาสใช้เจาะทำลายระบบ

อ้างอิง[แก้]

  1. "Intel Software Network". Intel. Archived from the original on 2008-04-07. สืบค้นเมื่อ 2008-04-05.
  2. Gueron, Shay (2010). "Intel Advanced Encryption Standard (AES) Instruction Set White Paper" (PDF). Intel. สืบค้นเมื่อ 2012-09-20.
  3. "Carry-Less Multiplication". Intel.
  4. "Intel® Product Specification Advanced Search". Intel® ARK (Product Specs).
  5. Shimpi, Anand Lal. "The Sandy Bridge Review: Intel Core i7-2600K, i5-2500K and Core i3-2100 Tested".
  6. "Intel® Product Specification Comparison".
  7. "AES-NI support in TrueCrypt (Sandy Bridge problem)". forum.notebookreview.com.
  8. "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).
  9. "Intel® Core™ i3-2115C Processor (3M Cache, 2.00 GHz) Product Specifications". Intel® ARK (Product Specs).
  10. "Intel® Core™ i3-4000M Processor (3M Cache, 2.40 GHz) Product Specifications". Intel® ARK (Product Specs).
  11. "Following Instructions". AMD. 2010-11-22. Archived from the original on 2010-11-26. สืบค้นเมื่อ 2011-01-04.
  12. Anderson, Dan (2011). "SPARC T4 OpenSSL Engine". Oracle. สืบค้นเมื่อ 2012-09-20.
  13. Grisenthwaite, Richard (2011). "ARMv8-A Technology Preview" (PDF). ARM. สืบค้นเมื่อ 2012-09-20.
  14. Morgan, Timothy Prickett (2012). "All the sauce on Big Blue's hot chip: More on Power7+". The Register. สืบค้นเมื่อ 2012-09-20.
  15. "IBM System z10 cryptography". IBM. สืบค้นเมื่อ 2014-01-27.
  16. "AMD Geode™ LX Processor Family Technical Specifications". AMD.
  17. "VIA Padlock Security Engine". VIA. สืบค้นเมื่อ 2011-11-14.
  18. 18.0 18.1 "Cryptographic Hardware Accelerators". OpenWRT.org.
  19. "VIA Eden-N Processors". VIA. Archived from the original on 2011-11-11. สืบค้นเมื่อ 2011-11-14.
  20. "VIA C7 Processors". VIA. สืบค้นเมื่อ 2011-11-14.
  21. "Security System/Crypto Engine driver status". sunxi.montjoie.ovh. Archived from the original on 2019-01-28.
  22. "Linux Cryptographic Acceleration on an i.MX6" (PDF). Linux Foundation. February 2017.
  23. "Cryptographic module in Snapdragon 805 is FIPS 140-2 certified". Qualcomm. 2014-11-07.
  24. "RK3128 - Rockchip Wiki". Rockchip wiki.
  25. "The Samsung Exynos 7420 Deep Dive - Inside A Modern 14nm SoC". AnandTech.
  26. "Using the XMEGA built-in AES accelerator" (PDF). Atmel. สืบค้นเมื่อ 2014-12-03.
  27. "Cavium Networks Launches Industry's Broadest Line of Single and Dual Core MIPS64®-based OCTEON™ Processors Targeting Intelligent Next Generation Networks". Cavium. สืบค้นเมื่อ 2016-09-17.
  28. Schmid, Patrick; Roos, Achim (2010). "AES-NI Performance Analyzed". Tom's Hardware. สืบค้นเมื่อ 2010-08-10.
  29. T. Krovetz, W. Dai (2010). "How to get fast AES calls?". Crypto++ user group. สืบค้นเมื่อ 2010-08-11.
  30. "Crypto++ 5.6.0 Pentium 4 Benchmarks". Crypto++ Website. 2009. Archived from the original on 2010-09-19. สืบค้นเมื่อ 2010-08-10.
  31. "Intel Advanced Encryption Standard Instructions (AES-NI)". Intel. 2010-03-02. Archived from the original on 2010-07-07. สืบค้นเมื่อ 2010-07-11.
  32. "AES-NI enhancements to NSS on Sandy Bridge systems". 2012-05-02. สืบค้นเมื่อ 2012-11-25.
  33. "System Administration Guide: Security Services, Chapter 13 Solaris Cryptographic Framework (Overview)". Oracle. September 2010. สืบค้นเมื่อ 2012-11-27.
  34. "FreeBSD 8.2 Release Notes". FreeBSD.org. 2011-02-24. สืบค้นเมื่อ 2011-12-18.
  35. OpenSSL: CVS Web Interface[ลิงก์เสีย]
  36. "www.flam.de :: Products". flam.de.
  37. "Hardware Acceleration". www.veracrypt.fr.

แหล่งข้อมูลอื่น[แก้]