เออีเอส

เออีเอส ซึ่งเป็นตัวย่อของ Advanced Encryption Standard (AES) ที่มีชื่อดั้งเดิมว่า Rijndael (ˈrɛindaːl อ่านว่า เรนดาล)
เป็นมาตรฐานการเข้ารหัสลับข้อมูลอิเล็กทรอนิกที่ตั้งขึ้นโดยสถาบันมาตรฐานและเทคโนโลยีแห่งชาติสหรัฐ ( National Institute of Standards and Technology ) ในปี 2001
เออีเอสเป็นส่วนย่อยของกลุ่มบล็อกไซเฟอร์ (block cipher)
ที่เรียกว่าเรนดาล (Rijndael)
และพัฒนาโดยนักวิทยาการเข้ารหัสลับชาวเบลเยียมสองท่าน คือวินเซ็นต์ เรเม็น (Vincent Rijmen) และโจน แดเม็น (Joan Daemen) ผู้ส่งวิธีการเป็นข้อเสนอ
แก่ NIST เมื่อองค์กรกำลังเลือกไซเฟอร์ (cipher)
เพื่อใช้เป็นเออีเอส
เรนดาลเป็นกลุ่มไซเฟอร์ที่มีกุญแจและบล็อก (block) ขนาดต่าง ๆ 
เพื่อใช้เป็นมาตรฐานเออีเอส NIST ได้เลือกสมาชิก 3 หน่วยจากกลุ่มเรนดาล แต่ละอย่างมีขนาดบล็อก 128 บิตโดยมีกุญแจขนาดต่าง ๆ คือ 128, 192 และ nowrap |256 บิต
รัฐบาลกลางสหรัฐได้เลือกใช้มาตรฐานนี้ และปัจจุบันก็ใช้กันทั่วโลก
เป็นมาตรฐานแทน Data Encryption Standard (DES)
ซึ่งเผยแพร่ในปี 1977
AES ใช้ขั้นตอนวิธีแบบกุญแจสมมาตร (symmetric-key algorithm) คือ ใช้กุญแจตัวเดียวกันเพื่อทั้งเข้ารหัสและถอดรหัสข้อมูล
ในสหรัฐ NIST ได้ประกาศเออีเอสเป็นมาตรฐานประมวลข้อมูลรัฐบาลกลางสหรัฐ (FIPS 197) เมื่อปลายปี 2001
นี่ทำตามหลังกระบวนการวางมาตรฐาน 
ซึ่งมีแบบที่เข้าแข่งขันกัน 15 แบบ เมื่อประเมินแล้วไซเฟอร์เรนดาลจึงได้เลือกว่าเหมาะสมที่สุด
เออีเอสจึงกลายเป็นมาตรฐานรัฐบาลกลางสหรัฐเมื่อกลางปี 2002 หลังจากได้รับอนุมัติจากเลขาธิการกระทรวงพาณิชย์สหรัฐ
เออีเอสได้รวมเข้ามาตรฐานขององค์การระหว่างประเทศว่าด้วยการมาตรฐาน ( International Organization for Standardization ) และ International Electrotechnical Commission (IEC) คือ ISO/IEC 18033-3 standard
เออีเอสมีใช้ในคลัง/โปรแกรมเข้ารหัสสำเร็จหลายอย่าง เป็นไซเฟอร์ที่สาธารณชนเข้าถึงได้เดียวที่สำนักงานความมั่นคงแห่งชาติสหรัฐ ( National Security Agency ) อนุมัติให้ใช้เข้ารหัสข้อมูลราชการลับระดับ "top secret" โดยต้องใช้มอดูลเข้ารหัสที่องค์กรได้อนุมัติ 

**มาตรฐาน**
เออีเอสได้กำหนดในมาตรฐานต่าง ๆ ดังต่อไปนี้- FIPS PUB 197: Advanced Encryption Standard (AES)- ISO/IEC 18033-3: Block ciphers

**ไซเฟอร์**
เออีเอสใช้หลักที่เรียกว่า substitution-permutation network (เครือข่ายการแทนที่-การเรียงสับเปลี่ยน) ซึ่งมีประสิทธิภาพดีเมื่อทำให้เกิดผลทั้งในซอฟต์แวร์และฮาร์ดแวร์ ไม่เหมือนกับมาตรฐานก่อนคือ DES เออีเอสไม่ได้ใช้เครือข่ายฟายสเติล (Feistel network)
เออีเอสเป็นรูปแปรของเรนดาลแต่มีขนาดบล็อกตายตัวที่ 128 บิต และขนาดกุญแจที่ 128, 192 หรือ 256 บิต
เทียบกับเรนดาลที่กำหนดขนาดบล็อกและขนาดกุญแจที่เป็นพหุคูณ 32 บิตใด ๆ ก็ได้โดยน้อยสุดที่ 128 บิตและมากสุดที่ 256 บิต
เออีเอสคำนวณโดยใช้แถวลำดับขนาด 4 × 4 เก็บต่อกันในความจำเรียงอันดับตามสดมภ์ (column-major order) เป็นหน่วยที่เรียกว่า "สเตต" (state)
การคำนวณเออีเอสโดยมากจะทำในฟิลด์จำกัด (finite field)
ยกตัวอย่างเช่น ถ้ามีไบต์ 16 ไบต์ คือ  ก็สามารถแสดงเป็นแถวลำดับสองมิติ คือ 
:
ขนาดกุญแจที่ใช้ในไซเฟอร์เออีเอสจะระบุจำนวนรอบการแปลง (transformation round) ที่เปลี่ยนอินพุตซึ่งเรียกว่า ข้อความธรรมดา (plaintext) เป็นเอาต์พุตสุดท้ายซึ่งเรียกว่า ข้อความไซเฟอร์ (ciphertext)
จำนวนรอบที่ต้องคำนวณ คือ- 10 รอบสำหรับกุญแจขนาด 128 บิต- 12 รอบสำหรับกุญแจขนาด 192 บิต- 14 รอบสำหรับกุญแจขนาด 256 บิต
แต่ละรอบจะมีขั้นประมวลผลหลายขั้น รวมทั้งขั้นที่ต้องอาศัยกุญแจการเข้ารหัส
การถอดรหัสจะใช้รอบกลับกันเพื่อเปลี่ยนข้อความไซเฟอร์กลับไปเป็นข้อความธรรมดาดั้งเดิมด้วยกุญแจเดียวกัน

**ขั้นตอนวิธีคร่าว ๆ**
#  KeyExpansion (การขยายจำนวนกุญแจ) —กุญแจที่ใช้ในแต่ละรอบจะทำจากกุญแจสมมาตรด้วยขั้นตอนวิธี Rijndael key schedule เออีเอส (เรนดาล) ใช้ขั้นตอนวิธี key schedule เพื่อขยายกุญแจสั้นตัวหนึ่งเป็นกุญแจรอบที่ต่างกันจำนวนหนึ่ง นี่เป็นขั้นตอนที่เรียกว่า Rijndael key schedule รูปแปรของเออีเอสสามอย่างมีจำนวนรอบที่ต่างกัน รูปแปรแต่ละอย่างจะต้องมีกุญแจรอบขนาด 128 บิตสำหรับแต่ละรอบ บวกเพิ่มอีกหนึ่งตัว ขั้นตอนนี้ผลิตกุญแจรอบจำนวณตามที่จำเป็นโดยได้จากกุญแจสมมาตร  เออีเอสต้องใช้บล็อกกุญแจขนาด 128 บิตหนึ่งบล็อกต่างหาก (round key block - บล็อกกุญแจรอบ) สำหรับการคำนวณแต่ละรอบ บวกเพิ่มอีกหนึ่งตัว
# การบวกกุญแจรอบเบื้องต้น
##  AddRoundKey—ไบต์แต่ละไบต์ของสเตตจะรวมเข้ากับบล็อกหนึ่งของกุญแจรอบด้วย bitwise xor
# ทำดังนี้ 9, 11 หรือ 13 รอบ
##  SubBytes (แทนที่ไบต์)—ขั้นการแทนที่แบบไม่เชิงเส้น (non-linear)—ไบต์แต่ละไบต์จะแทนที่ด้วยไบต์อีกไบต์หนึ่งตามตารางค้นหา คือ Rijndael S-box Rijndael S-box เป็นเมทริกซ์จัตุรัสที่ใช้ในไซเฟอร์เรนดาล ซึ่งขั้นตอนวิธีเออีเอสเป็นอนุพันธ์ โดยใช้เป็นตารางค้นหา 
##  ShiftRows (เลื่อนแถว) —ขั้นการย้ายสดมภ์—แถวสุดท้าย 3 แถวของสเตตจะเลื่อนหมุนเป็นจำนวนหนึ่ง
##  MixColumns (ผสมสดมภ์) —เป็นปฏิบัติการผสมเชิงเส้น ซึ่งดำเนินการต่อสดมภ์ของสเตต เป็นการรวมไบต์ 4 ไบต์ของสดมภ์แต่ละสดมภ์
##  AddRoundKey
# รอบสุดท้าย (จึงรวมเป็น 10, 12 หรือ 14 รอบทั้งหมด)
##  SubBytes
##  ShiftRows
##  AddRoundKey

**ขั้น  SubBytes**
ไฟล์:AES-SubBytes.svg|right|320px|thumbnail|
ในขั้น  SubBytes ไบต์แต่ละไบต์ของสเตตจะแทนด้วยเลขในตารางค้นหาแบบ 8 บิต คือ S 
ดังนั้น bij = S(aij)
ในขั้น  SubBytes ไบต์แต่ละไบต์ คือ  ของสเตตจะแทนที่ด้วย  SubByte  โดยใช้ตารางค้นหา คือ substitution box (S-box)
แบบ 8 บิต
ปฏิบัติการนี้ทำให้ได้ความไม่เป็นเชิงเส้น (non-linearity) ในไซเฟอร์
S-box ที่ใช้ได้มาจากตัวผกผันการคูณของฟิลด์จำกัด (28) ซึ่งรู้ว่ามีคุณสมบัติไม่ใช่เชิงเส้น (non-linearity) ที่ดี 
เพื่อหลีกเลี่ยงการโจมตีอาศัยคุณสมบัติพีชคณิตที่ง่าย ๆ S-box สร้างโดยรวมฟังก์ชันผกผัน (inverse function) กับการแปลงสัมพรรคที่หาตัวผกผันได้ (invertible affine transformation)
S-box ยังเลือกไม่ให้มีจุดตรึง (ดังนั้นจึงเป็น derangement) 
คือ  และไม่ให้มีจุดตรึงตรงกันข้าม คือ 
เมื่อถอดรหัส ขั้น  InvSubBytes (ซึ่งเป็นฟังก์ชันผกผันของ  SubBytes) จะต้องหาค่าผกผันของการแปลงสัมพรรคก่อนแล้วจึงหาตัวผกผันการคูณ 

**ขั้น  ShiftRows**
ไฟล์:AES-ShiftRows.svg|right|320px|thumbnail|
ในขั้น  ShiftRows ไบต์จากแต่ละแถวของสเตตจะเลื่อนหมุนไปทางซ้าย
จำนวนที่เลื่อนจะต่างกันในแต่ละแถว
ขั้น  ShiftRows ปฏิบัติการต่อแถวของสเตต
คือเลื่อนหมุนไบต์แต่ละไบต์ของแถวไปช่วงระยะหนึ่ง 
โดยแถวแรกจะไม่เลื่อน
แถวสองเลื่อนหมุนไปทางซ้ายหนึ่งช่อง
โดยนัยเดียวกัน แถวสามและแถวสี่จะเลื่อนหมุนไป 2 และ 3 ช่องตามลำดับ
ด้วยวิธีนี้ สดมภ์แต่ละสดมภ์ของสเตตที่เป็นเอาต์พุตของขั้น  ShiftRows จะประกอบด้วยไบต์จากสดมภ์ทุกสดมภ์ของสเตตที่เป็นอินพุต
ขั้นนี้สำคัญเพราะเลี่ยงไม่ให้สดมภ์แต่ละสดมภ์เข้ารหัสลับอย่างเป็นอิสระจากกันและกัน ไม่งั้นแล้วเออีเอสก็จะเสื่อมเป็นบล็อกไซเฟอร์ name = BlockCipher 4 บล็อกที่เป็นอิสระจากกันและกัน

**ขั้น  MixColumns**
ไฟล์:AES-MixColumns.svg|right|320px|thumbnail|
ในขั้น  MixColumns สดมภ์แต่ละสดมภ์ของสเตตจะคูณด้วยพหุนามตายตัว คือ 
ในขั้น  MixColumns ไบต์สี่ไบต์จากสดมภ์แต่ละสดมภ์จะนำมารวมกันโดยใช้การแปลงเชิงเส้นที่หาตัวผกผันได้ (invertible linear transformation) 
ฟังก์ชัน  MixColumns รับไบต์สี่ไบต์เป็นอินพุต และออกไบต์สี่ไบต์เป็นเอาต์พุต โดยไบต์อินพุตแต่ละไบต์จะมีผลต่อไบต์เอาต์พุตทั้งหมด
เมื่อรวมกับขั้น  ShiftRows ขั้น  MixColumns นี้ให้คุณสมบัติความแพร่ (diffusion)
ต่อไซเฟอร์
ในปฏิบัติการนี้ สดมภ์แต่ละสดมภ์จะแปลงด้วยเมทริกซ์ เป็นการคูณเมทริกซ์มีค่าตายตัวกับสดมภ์โดยได้ผลเป็นค่าสดมภ์ใหม่ในสเตต
:
การ "คูณ" เมทริกซ์ประกอบด้วยการคูณและการบวกช่องในเมทริกซ์ การบวกใช้ปฏิบัติการ XOR ส่วนการคูณเป็นปฏิบัติการที่ซับซ้อน บทความนี้ไม่กล่าวถึงรายละเอียด

**ขั้น  AddRoundKey**
ไฟล์:AES-AddRoundKey.svg|right|320px|thumbnail|
ในขั้น  AddRoundKey ไบต์แต่ละไบต์ของสเตตจะรวมเข้ากับไบต์ของกุญแจรอบย่อย (round subkey) ด้วยปฏิบัติการ 
ในขั้น  AddRoundKey กุญแจย่อย (subkey) จะรวมเข้ากับสเตต
ในแต่ละรอบ กุญแจย่อยจะทำมาจากกุญแจหลักด้วยขั้นตอนวิธี Rijndael key schedule name = RijndaelKeySchedule 
กุญแจย่อยแต่ละตัวมีขนาดเท่ากับสเตต
ไบต์แต่ละไบต์ของสเตตจะรวมเข้ากับไบต์ของกุญแจย่อยที่ตรงกันด้วย bitwise XOR

**การเร่งความเร็ว**
ในระบบที่ใช้คำ (word) มีขนาด 32 บิตหรือยาวกว่า สามารถเร่งปฏิบัติการของไซเฟอร์นี้ด้วยการรวมขั้นตอน  SubBytes และ  ShiftRows กับ  MixColumns โดยแปลงให้เป็นการค้นหาในตารางตามลำดับ
ซึ่งใช้ตารางเก็บค่า 32 บิต มีรายการ 256 รายการ ทั้งหมด 4 ตาราง รวมใช้ที่ 4096 ไบต์
การคำนวณรอบหนึ่งจึงสามารถทำด้วยการค้นหาตาราง 16 ครั้ง และปฏิบัติการ XOR แบบ 32 บิต 12 ครั้ง ตามด้วยปฏิบัติการ XOR แบบ 32 บิต 4 ครั้งในขั้น  AddRoundKey
อีกอย่างหนึ่ง การค้นหาตารางสามารถทำกับตารางเก็บค่า 32 บิตมีรายการ 256 รายการตารางเดียว (รวมใช้ที่ 1024 ไบต์) ตามด้วยการหมุนเป็นวง (circular rotation)
อนึ่ง ถ้าใช้วิธีทำเป็นไบต์ ก็จะสามารถรวมขั้น  SubBytes,  ShiftRows และ  MixColumns เป็นปฏิบัติการเดียวต่อรอบ

**ความปลอดภัย**
จนถึงเดือนพฤษภาคม 2009 มีแต่การโจมตีแบบ side-channel attack
เท่านั้นที่สามารถเจาะเออีเอสซึ่งเข้ารหัสแบบสมบูรณ์อย่างได้ผล โดยทำได้กับการทำให้เกิดผลเฉพาะบางอย่างเท่านั้น
สำนักงานความมั่นคงแห่งชาติสหรัฐ (NSA) ได้ทบทวนไซเฟอร์ name = cipherที่เข้าแข่งขันทั้งหมดรวมทั้งเรนดาล และเบื้องต้นได้ระบุว่า ทั้งหมดปลอดภัยพอเข้ารหัสลับข้อมูลที่ไม่ใช่ราชการลับของรัฐบาลกลางสหรัฐ
ต่อมาในเดือนมิถุนายน 2003 รัฐบาลกลางสหรัฐได้ประกาศว่า จะใช้เออีเอสป้องกันราชการลับ โดยระบุว่า
เออีเอสตามมาตรฐานต้องคำนวณเข้ารหัส 10 รอบสำหรับกุญแจขนาด 128 บิต, 12 รอบสำหรับกุญแจ 192 บิต และ 14 รอบสำหรับกุญแจ 256 บิต
จนถึงปี 2006 วิธีการโจมตีทางทฤษฎีซึ่งจัดว่าดีที่สุดและตีพิมพ์เป็นผลงาน ใช้โจมตีเออีเอสที่มีกุญแจ 128 บิตและคำนวณเข้ารหัส 7 รอบ, กุญแจ 192 บิตที่คำนวณ 8 รอบ และกุญแจ 256 บิตที่คำนวณ 9 รอบ

**วิธีการโจมตีที่รู้**
สำหรับนักวิทยาการเข้ารหัสลับ การทอน (break) การเข้ารหัสลับก็คือปฏิบัติการโจมตีที่ทำได้เร็วกว่าการใช้กำลังล้วน ๆ ซึ่งเป็นการลองถอดรหัสด้วยกุญแจที่อาจจะใช่เป็นลำดับ
ดังนั้น การทอนจึงรวมวิธีที่จริง ๆ ยังทำไม่ได้ด้วยเทคโนโลยีปัจจุบัน
ซึ่งแม้จะปฏิบัติไม่ได้ แต่ก็ช่วยให้เข้าใจรูปแบบของความอ่อนแอ
การโจมตีด้วยกำลังล้วน ๆ ซึ่งได้ผลที่สุด ปรากฏต่อสาธารณชน ทำต่อขั้นตอนวิธีการเข้ารหัสลับแบบบล็อกไซเฟอร์ name = BlockCipherซึ่งได้ทำให้เกิดผลอย่างกว้างขวางที่สุด เป็นการโจมตีกุญแจ RC5 ขนาด 64 บิต โดย distributed.net
ในปี 2006
ขนาดของกุญแจเท่ากับเพิ่มเป็นสองเท่าต่อบิตทุกบิตที่เพิ่มในกุญแจ และถ้ากุญแจอาจมีค่าอะไรก็ได้ในโอกาสเท่า ๆ กัน การโจมตีด้วยกำลังล้วน ๆ เพื่อหากุญแจเท่ากับต้องเพิ่มเวลาเป็นสองเท่าโดยเฉลี่ย
ซึ่งเท่ากับต้องเพิ่มเวลาเป็นเลขชี้กำลังตามขนาดกุญแจ
แต่ขนาดกุญแจเพียงอย่างเดียวไม่ได้แน่นอนว่าปลอดภัยเพราะก็มีไซเฟอร์ name = cipherที่มีกุญแจใหญ่มากแต่พบว่าอ่อนแอ
เออีเอสใช้หลักพีชคณิตที่ค่อนข้างง่าย
ในปี 2002 นักวิทยาการเข้ารหัสชาวอังกฤษและออสเตรเลียได้แสดงการโจมตีโดยทฤษฎีซึ่งเรียกว่า XSL attack เพื่อแสดงจุดอ่อนของขั้นตอนวิธีเออีเอส โดยส่วนหนึ่งก็เพราะความซับซ้อนไม่มากของการคำนวณแบบไม่ใช่เชิงเส้นของมัน
แต่ต่อมานักวิชาการอื่น ๆ ก็ได้แสดงว่า การโจมตีที่กล่าวนี้ทำให้ได้ผลไม่ได้
ในช่วงการเลือกไซเฟอร์เพื่อเป็นมาตรฐานเออีเอส ผู้พัฒนาวิธีคู่แข่งได้เขียนถึงขั้นตอนวิธีเรนดาลไว้ว่า "...พวกผมเป็นห่วงเรื่องการใช้ (ไซเฟอร์นี้) ...
ในโปรแกรมประยุกต์ที่ความปลอดภัยสำคัญขีดสุด"
แต่ในปลายปี 2000 หลังจากได้ตั้งเออีเอสแล้ว ผู้พัฒนาขั้นตอนวิธีคู่แข่งคือ Twofish ได้เขียนว่า แม้เขาคิดว่า วันหนึ่งจะเกิดการโจมตีเชิงวิชาการ (คือโดยทฤษฎีที่นำไปใช้จริง ๆ ไม่ได้ด้วยเทคโนโลยีปัจจุบัน) ต่อเรนดาลที่ได้ผล แต่เขา "ไม่เชื่อว่า จะมีใครค้นพบการโจมตีที่ทำให้สามารถอ่านการสื่อสารที่เข้ารหัสโดยเรนดาลได้"
ในปี 2009 มีการค้นพบ related-key attack name = RelatedKeyAttack  (การโจมตีโดยมีกุญแจสัมพันธ์) แบบหนึ่งที่ถือเอาประโยชน์จากความเรียบง่ายของ AES key schedule name = RijndaelKeySchedule  โดยมีความซับซ้อนที่ 2119
ซึ่งเมื่อถึงปลายปีได้ทำให้เร็วขึ้นเหลือ 299.5
แต่ related-key attack ก็ไม่เป็นปัญหาในเกณฑ์วิธีการเข้ารหัสลับที่ออกแบบและทำให้เกิดผลอย่างเหมาะสม เพราะโปรแกรมย่อมไม่ยอมให้ใช้กุญแจที่สัมพันธ์กัน 
ในปี 2009 นักวิชาการได้ตีพิมพ์ (เป็นเอกสารที่ยังไม่ได้ทบทวนโดยผู้รู้เสมอกัน) การโจมตีเออีเอส-256 โดยใช้กุญแจที่สัมพันธ์กันเพียงแค่ 2 ตัว ใช้การคำนวณซับซ้อนระดับ 239 เพื่อเจาะกุญแจขนาด 256 บิตเมื่อคำนวณเข้ารหัสเพียงแค่ 9 รอบ หรือ 245 เมื่อคำนวณเข้ารหัส 10 รอบโดยใช้การโจมตีแบบ related subkey attack ที่กุญแจสัมพันธ์กันยิ่งกว่า หรือ 270 เมื่อเจาะการเข้ารหัสที่คำนวณ 11 รอบ
แต่จริง ๆ เออีเอส 256 บิตต้องเข้ารหัส 14 รอบ การโจมตีเยี่ยงนี้จึงไม่ได้ผลต่อเออีเอสที่ใช้จริง ๆ 
การนำไปใช้ได้จริง ๆ ของการโจมตีที่มีกุญแจสัมพันธ์กันยิ่งกว่าก็ถูกวิจารณ์
แม้โดยวินเซ็นต์ เรเม็นเอง
ในปลายปี 2009 มีการตีพิมพ์การโจมตีแบบ known-key distinguishing attack แรกต่อเออีเอส-128 ที่เข้ารหัส 8 รอบ
โดยมีความซับซ้อนเชิงเวลาที่ 248 และความซับซ้อนเชิงความจำที่ 232
แต่เพราะเออีเอส-128 ต้องเข้ารหัส 10 รอบ การโจมตีนี้จึงไม่มีผลต่อเออีเอสที่ใช้กันจริง ๆ
การโจมตีโดยกู้คืนกุญแจ (key-recovery attack) ต่อเออีเอสเต็ม ๆ ได้พิมพ์ในงานปี 2011
การโจมตีเป็นแบบ biclique attack และเร็วกว่าการโจมตีที่ใช้กำลังอย่างเดียวถึง 4 เท่า
โดยต้องใช้การดำเนินการ 2126.2 ครั้งเพื่อกู้คืนกุญแจ AES-128
สำหรับ AES-192 และ AES-256 ต้องใช้การดำเนินการ 2190.2 และ 2254.6 ครั้งตามลำดับ
ต่อมาผลจึงได้ทำเร็วขึ้นเป็น 2126.0 สำหรับ AES-128, 2189.9 สำหรับ AES-192 และ 2254.3 สำหรับ AES-256 เหล่านี้เป็นผลที่ได้ดีสุดสำหรับการโจมตีโดยกู้คืนกุญแจต่อเออีเอส
นี่เป็นประโยชน์เพียงเล็กน้อย เพราะกุญแจขนาด 126 บิต (แทนที่อาจใช้คือ 128 บิต) ยังต้องใช้เวลาเป็นพัน ๆ ล้านปีถ้าใช้ฮาร์ดแวร์ปัจจุบันหรือแบบที่ยังพอเล็งเห็นล่วงหน้าได้
อนึ่ง ผู้เขียนคำนวณว่า การโจมตีเร็วสุดโดยใช้เทคนิกของผู้เขียนต่อเออีเอสที่ใช้กุญแจ 128 บิตยังต้องเก็บข้อมูล 288 บิต
เท่ากับข้อมูล nowrap |38 ล้านล้านเทระไบต์ ซึ่งมากกว่าข้อมูลที่เก็บบนคอมพ์ทั้งหมดในโลกในปี 2016 
ดังนั้น นี่จึงไม่ทำลายความปลอดภัยของเออีเอส
ต่อมา ข้อมูลที่ต้องเก็บลดได้เหลือ 256 บิต
ซึ่งเท่ากับ 9,007 เทระไบต์
ตามข้อมูลรั่วของเอ็ดเวิร์ด สโนว์เดน สำนักงานความมั่นคงแห่งชาติสหรัฐ (NSA) กำลังวิจัยว่า การโจมตีการเข้ารหัสลับโดยใช้สถิติเทา (tau statistic) อาจช่วยเจาะเออีเอสได้หรือไม่
ดังนั้นในปัจจุบัน จึงยังไม่มีการโจมตีที่ปฏิบัติได้ซึ่งช่วยให้บุคคลที่ไม่มีกุญแจสามารถอ่านข้อมูลที่เข้ารหัสลับด้วยเออีเอสเมื่อทำให้เกิดผลอย่างถูกต้อง

**Side-channel attack**
side-channel attack name = SideChannelAttack เป็นการโจมตีไซเฟอร์แบบไม่ได้ทำต่อกล่องดำ ดังนั้น ไซเฟอร์ต่าง ๆ จึงไม่ได้ออกแบบต่อต้านการโจมตีเช่นนี้โดยตรง แต่ก็มีผลทางการปฏิบัติ
คือ มันโจมตีการทำให้เกิดผลของไซเฟอร์ที่ฮาร์ดแวร์หรือซอฟต์แวร์มีข้อมูลรั่วไหลอย่างไม่ได้ตั้งใจ
มีการโจมตีเช่นนี้หลายอย่างที่รู้สำหรับเออีเอส
ในกลางปี 2005 นักวิทยาการเข้ารหัสลับชาวเยอรมัน-อเมริกันประกาศการโจมตีอาศัยเวลาของแคช (cache-timing attack) ที่เขาใช้เจาะทำลายเซิร์ฟเวอร์ซึ่งทำตามสั่ง (custom server) และใช้การเข้ารหัสลับเออีอัสด้วยคลัง OpenSSL
โดยต้องใช้ข้อความธรรมดา 200 ล้านข้อความ
และเซิฟเวอร์ได้ตั้งให้รั่วข้อมูลเกี่ยวกับเวลาให้มากสุดเท่าที่จะเป็นไปได้ (คือ มันรายงานจำนวนไซเคิลที่ต้องใช้เพื่อเข้ารหัส)
นักวิชาการผู้นี้ชี้ว่า "การลดความแม่นยำของตราเวลาเซิร์ฟเวอร์ หรือการกำจัดมันจากคำตอบสนองของเซิฟเวอร์ ไม่สามารถระงับการโจมตีได้ เพราะระบบลูกข่ายเพียงต้องจับเวลาไปกลับ (round-trip timing) ที่กำหนดด้วยนาฬิกาตนเอง แล้วชดเชยข้อมูลรบกวนที่มีเพิ่มขึ้นโดยสร้างค่าเฉลี่ยของตัวอย่างเป็นจำนวนเพิ่มขึ้น"
ในปลายปี 2005 นักวิทยาการเข้ารหัสลับสามท่านตีพิมพ์เอกสารแสดงการโจมตีอาศัยเวลาของแคชต่อการทำเออีเอสให้เกิดผลที่พบใน OpenSSL และฟังกชันเข้ารหัสลับส่วนดิสก์ของลินุกซ์ คือ dm-crypt
การโจมตีหนึ่งสามารถได้กุญแจเออีเอสหลังจากเพียงแค่การเข้ารหัสลับเพียง 800 ครั้งโดยใช้เวลาเพียงแค่ 65 มิลลิวินาที
แต่ผู้โจมตีก็จำเป็นต้องดำเนินงานโปรแกรมในระบบหรือแพล็ตฟอร์มที่เข้ารหัสเออีเอสได้
ในปลายปี 2009 มีการตีพิมพ์การโจมตีต่อการทำให้เกิดผลบนฮาร์ดแวร์โดยใช้การวิเคราะห์ความผิดพร่องต่าง (differential fault analysis)
ซึ่งทำให้สามารถกู้คืนกุญแจด้วยความซับซ้อน 232
ในปลายปี 2010 นักวิชาการได้ตีพิมพ์เอกสารอธิบายวิธีการที่ทำได้เกือบในเวลาจริงเพื่อกู้คืนกุญแจลับจาก AES-128 โดยไม่จำเป็นต้องได้ข้อความธรรมดาหรือข้อความไซเฟอร์
เป็นการโจมตีที่ใช้ได้กับการทำเออีเอส-128 ให้เกิดผลที่ใช้ compression table เช่น OpenSSL
การโจมตีนี้ก็จำเป็นต้องดำเนินการโปรแกรมที่ไม่เป็นเอกสิทธิบนระบบที่เข้ารหัสลับเหมือนกัน ซึ่งอาจทำได้ด้วยมัลแวร์อันง่ายกว่าการเข้าถึงบัญชีผู้ดูแลระบบ (root account) มาก
ในต้นปี 2016 นักวิชาการได้แสดง side-channel attack name = SideChannelAttack ที่มีประสิทธิภาพมากต่อการทำเออีเอสให้เกิดผลซึ่งสามารถกู้คืนกุญแจ 128 บิตทั้งหมดอาศัยเพียงแค่ข้อความธรรมดา/ข้อความไซเฟอร์เพียงแค่ 6-7 บล็อก นี่ดีขึ้นอย่างมากเทียบกับงานก่อน ๆ ที่ต้องอาศัยการเข้ารหัสลับระหว่าง 100-1,000,000 ครั้ง 
แต่ก็ต้องสามารถดำเนินการโปรแกรมในระดับผู้ใช้เหมือนกันโดยดำเนินการขั้นตอนวิธีเก็บกุญแจเพียงไม่ถึงนาที
อย่างไรก็ดี ซีพียูปัจจุบันจำนวนมากมีชุดคำสั่งเออีเอสในฮาร์ดแวร์ (เช่น AES-NI) ซึ่งช่วยป้องกัน side-channel attack ที่อาศัยเวลาเช่นตามที่ว่า

**การตรวจรับรองของ NIST/CSEC**
สถาบันมาตรฐานและเทคโนโลยีแห่งชาติสหรัฐ ( National Institute of Standards and Technology ) ร่วมกับสถาบันความปลอดภัยการสื่อสาร ( Communications Security Establishment ) ของรัฐบาลกลางแคนาดาดำเนินการโปรแกรม Cryptographic Module Validation Program (CMVP) ซึ่งตรวจรับรองมอดูลการเข้ารหัสลับ (cryptographic modules) 
ข้อมูลราชการรัฐบาลกลางสหรัฐที่อ่อนไหวแต่ไม่จัดว่าลับต้องเข้ารหัสลับด้วยมอดูลการเข้ารหัสลับที่ได้การตรวจรับรองตาม  Federal Information Processing Standard  140-2 (มาตรฐานการประมวลข้อมูลของรัฐบาลกลางสหรัฐ) ซึ่ง NIST เป็นผู้กำหนด
คือ "ผลิตภัณฑ์การเข้ารหัสลับเพื่อป้องกันข้อมูลลับจะต้องรับรองโดยสำนักงานความมั่นคงแห่งชาติ (NSA) และผลิตภัณฑ์การเข้ารหัสลับที่หมายป้องกันข้อมูลที่อ่อนไหวจะต้องรับรองตาม FIPS 140-2 ของ NIST"
รัฐบาลแคนาดายังแนะนำให้กระทรวงต่าง ๆ ของแคนาดาใช้มอดูลเข้ารหัสลับที่ได้ตรวจรับรองตาม FIPS 140 สำหรับข้อมูลที่ไม่จัดว่าลับ (unclassified)
แม้ FIPS 197 จะเป็นเอกสารที่เจาะจงขั้นตอนวิธีเออีเอสโดยเฉพาะ ผู้ขายสินค้ามักจะขอให้ CMVP ตรวจรับรองขั้นตอนวิธีหลายอย่างพร้อมกัน ๆ (เช่น Triple DES หรือ SHA1) ภายใต้ระเบียบของ FIPS 140
ดังนั้น จึงไม่ค่อยมีมอดูลเข้ารหัสลับที่ตรวจรับรองโดยเฉพาะเพียงของ FIPS 197 และองค์กร NIST เองก็ไม่ได้ระบุมอดูลที่ผ่านการตรวจรับรองแบบ FIPS 197 ในรายการเฉพาะตนเองบนเว็บไซต์ขององค์กร
โดยทั่วไป มอดูลที่ผ่านการตรวจรับรองแบบ FIPS 197 จะระบุด้วยสัญกรณ์ "FIPS approved: AES" พร้อมกับหมายเลขรับรองภายในรายการมอดูลที่ผ่านการตรวจรับรองแบบ FIPS 140
ส่วนโปรแกรม Cryptographic Algorithm Validation Program (CAVP) ของ NIST เช่นกัน
อนุญาตให้องค์กรอื่น ๆ ตรวจความถูกต้องของการทำขั้นตอนวิธีเออีเอสให้เกิดผลโดยมีค่าใช้จ่ายน้อยกว่า date = December 2010
มอดูลที่ได้ตรวจรับรองสำเร็จก็จะปรากฏเป็นรายการในเว็บเพจของ NIST เช่นกัน
การทดสอบตามที่ว่าต้องทำก่อนจะตรวจรับรองตามระเบียบ FIPS 140-2 ที่จะว่าต่อไป
เพราะการรับรองของ CAVP ไม่ได้บ่งว่ามอดูลได้ทำขั้นตอนวิธีให้เกิดผลอย่างปลอดภัย
ดังนั้น มอดูลที่ยังไม่ผ่านการตรวจรับรองแบบ FIPS 140-2 หรือการอนุมัติโดยเฉพาะจาก NSA จึงไม่จัดว่าปลอดภัยเพื่อใช้ป้องกันข้อมูลราชการของรัฐบาลกลางสหรัฐ
การได้การรับรองตาม FIPS 140-2 ทำได้ยากทั้งโดยเทคนิกและโดยค่าใช้จ่าย
เพราะมีชุดการทดสอบมาตรฐานและมีการทบทวนรหัสคำสั่งที่ต้องผ่านภายในไม่กี่อาทิตย์
ค่าใช้จ่ายเพื่อทดสอบในแล็บที่อนุมัติอาจสูงมาก (เช่น มากกว่า nowrap |30,000 เหรียญสหรัฐ หรือประมาณ 9 แสนบาท)
ซึ่งยังไม่รวมเวลาที่ต้องใช้เขียนและตรวจสอบมอดูล ทำเอกสาร และเตรียมมอดูลเพื่อตรวจรับรอง
หลังจากได้การรับรองแล้ว ยังต้องกลับทำอีกถ้ามอดูลเปลี่ยน
ซึ่งอาจจะเป็นแค่การอัปเดตเอกสารง่าย ๆ เมื่อการเข้ารหัสลับไม่ได้เปลี่ยนไป หรืออาจจะต้องตรวจสอบใหม่ถ้าการเปลี่ยนแปลงมีผลต่อการเข้ารหัสลับ

**เวกเตอร์การทดสอบ**
เวกเตอร์การทดสอบเป็นชุดข้อความไซเฟอร์บวกกับข้อความธรรมดาและกุญแจเข้ารหัส
NIST เผยแพร่เวกเตอร์การทดสอบเป็นตัวชุดอิงที่เรียกว่า AES Known Answer Test (KAT) Vectors

**ความเร็ว**
การทำได้เร็วในเครื่องที่มีแรมน้อยเป็นเกณฑ์ในการเลือกไซเฟอร์เพื่อเป็นเออีเอส
ซึ่งทำงานได้ดีในฮาร์ดแวร์หลายอย่างมากมาย เริ่มตั้งแต่สมาร์ตการ์ดขนาด 8 บิตไปจนถึงคอมพิวเตอร์กำลังแรงสูง
ในเครื่องเพนเทียมโปร การเข้ารหัสลับเออีเอสต้องใช้รอบซีพียู 18 รอบ (ไซเคิล) ต่อไบต์
ซึ่งเสมอกับปริมาณงาน (throughput) ประมาณ nowrap |11 เมกะบิตต่อวินาทีสำหรับซีพียู nowrap |200 เมกะเฮิรตซ์
สำหรับซีพียู Pentium M 1.7 กิกะเฮิรตซ์ ปริมาณงานอยู่ที่ 60 เมกะบิตต่อวินาที
สำหรับซีพียูnowrap |อินเทล Core i3/i5/i7 และnowrap |เอเอ็มดี Ryzen รุ่นที่สนับสนุนชุดคำสั่งเออีเอส (AES-NI instruction set) ปริมาณงานอาจเป็นหลายจิกะบิตต่อวินาที (มีแม้ที่มากกว่า 10 จิกะบิตต่อวินาที)

**การทำให้เกิดผล**
มีการทำเออีเอสให้เกิดผลในรูปแบบต่าง ๆ มากมายรวมทั้งคลังโปรแกรม โปรแกรมประยุกต์ต่าง ๆ และในฮาร์ดแวร์เอง 
คลังโปรแกรม- C/ASM, - C++, - C#/.NET, - Go, - จาวา, - ไพทอน, - จาวาสคริปต์ - LabVIEW 
โปรแกรมประยุกต์- โปรแกรมอัดไฟล์ (เช่น 7z, PKZIP, RAR, WinZip)- โปรแกรมเข้ารหัสลับไฟล์ (เช่น Gpg4win, Ncrypt)- ระบบไฟล์เข้ารหัสลับ (เช่น NTFS)- โปรแกรมเข้ารหัสลับดิสก์หรือส่วนดิสก์ (เช่น BitLocker, VeraCrypt)- การสื่อสารอย่างปลอดภัยภายในเครือข่ายแลน (เช่น 802.11i, ITU-T G.hn)
ฮาร์ดแวร์- ซีพียูอินเทลและเอเอ็มดีที่สนับสนุนชุดคำสั่งเออีเอส (AES-NI)- เมนเฟรมไอบีเอ็ม zSeries- ซีพียู SPARC S3 ที่สนับสนุนชุดคำสั่งเออีเอส (AES-NI)
ชุดคำสั่งเครื่องเออีเอส

**เชิงอรรถ**

**อ้างอิง**
 title-link=ASIACRYPT - isbn=978-3-540-42580-9 - pages=87–122  alternate link (companion web site contains online lectures on AES)

**แหล่งข้อมูลอื่น**
 url = http://embeddedsw.net/Cipher_Reference_Home.html - doi = 10.6028/NIST.FIPS.197 -  AES algorithm archive information - (old, unmaintained)- url-status = dead -  Animation of Rijndael - AES deeply explained and animated using Flash (by Enrique Zabala / University ORT / Montevideo / Uruguay). This animation (in English, Spanish, and German) is also part of CrypTool 1 (menu Indiv. Procedures -> Visualization of Algorithms -> AES).
หมวดหมู่:เออีเอส