การเข้ารหัสลับ > ประเภทของการเข้ารหัสลับ > การเข้ารหัสลับ AES
การเข้ารหัสลับ AES คืออะไร
AES ในวิทยาการเข้ารหัสลับหมายถึง Advanced Encryption Standard ซึ่งเป็นอัลกอริทึมการเข้ารหัสลับที่รวดเร็ว มีประสิทธิภาพ และปลอดภัย ซึ่งได้รับการรับรองโดยสถาบันมาตรฐานและเทคโนโลยีแห่งชาติของสหรัฐอเมริกา (NIST) เป็นรหัสคีย์สมมาตรที่ใช้คีย์เดียวกันในการเข้ารหัสและถอดรหัสข้อมูล วิธีนี้ค่อนข้างรวดเร็ว จึงเหมาะอย่างยิ่งสำหรับการเข้ารหัสข้อมูลจำนวนมากที่จัดเก็บอยู่
เนื่องจากความแข็งแกร่งและความน่าเชื่อถือ AES จึงเป็นหนึ่งในประเภทการเข้ารหัสลับที่ได้รับความนิยมและใช้กันทั่วไปมากที่สุดในระบบความปลอดภัยเครือข่ายไร้สาย การเข้ารหัสข้อมูลและการเข้ารหัสลับดิสก์ ระบบชำระเงินออนไลน์ พื้นที่จัดเก็บคลาวด์ การจัดการรหัสผ่าน และแม้กระทั่งแอปพลิเคชั่นของรัฐบาลและทหาร รัฐบาลสหรัฐฯ ใช้การเข้ารหัสลับ AES เพื่อรักษาความปลอดภัยของข้อมูลลับ ซึ่งส่งผลให้การเข้ารหัสนี้ได้รับความนิยมอย่างแพร่หลาย

อัลกอริทึม AES ปลอดภัยหรือไม่
ใช่ ในปี 2000 หลังจากกระบวนการคัดเลือกที่เปิดกว้างและถี่ถ้วน(หน้าต่างใหม่)อย่างยิ่ง NIST ได้ประกาศว่า AES (ซึ่งก่อนหน้านั้นรู้จักกันในชื่ออัลกอริทึม Rijndael ที่สร้างขึ้นโดย Vincent Rijmen และ Joan Daemen) จะเข้ามาแทนที่ DES ในฐานะ“อัลกอริทึมการเข้ารหัสลับที่ไม่ได้เป็นความลับและเปิดเผยต่อสาธารณะ ซึ่งสามารถปกป้องข้อมูลที่ละเอียดอ่อนของรัฐบาลไปจนถึงศตวรรษหน้า” ที่ได้รับการแนะนำ(หน้าต่างใหม่)
ข้อมูลจาก NIST ระบุว่า ความยาวคีย์ทั้งหมดของอัลกอริทึม AES ถือว่า “เพียงพอ” ในการปกป้องข้อมูลลับจนถึงระดับ “ลับ” (Secret) สำหรับข้อมูลระดับ “ลับที่สุด” (Top Secret) จำเป็นต้องใช้ AES-192 หรือ AES-256

การโจมตีแบบบรูตฟอร์ซ
รูปแบบการโจมตีพื้นฐานที่สุดที่เป็นไปได้ต่อรหัสการเข้ารหัสลับใดๆ คือ การโจมตีแบบสุ่มรหัสผ่าน (brute-force attack) ซึ่งเกี่ยวข้องกับการทดลองใช้คีย์ที่เป็นไปได้ทุกรูปแบบจนกว่าจะพบคีย์ที่ถูกต้อง
Frontier(หน้าต่างใหม่) เป็นซูเปอร์คอมพิวเตอร์ที่ทรงพลังที่สุดในโลกเท่าที่มีการเปิดเผยต่อสาธารณะ หากทุ่มเทกำลังการประมวลผลทั้งหมดเพื่อสุ่มรหัสผ่าน AES-128 ก็ยังต้องใช้เวลาประมาณ 10-12 ล้านล้านปีเพื่อลองสุ่มรหัสผ่านที่เป็นไปได้ทั้งหมดสำหรับ AES-128 ซึ่งเป็นเวลาที่ยาวนานกว่าอายุของจักรวาลอย่างมาก ดังนั้น แม้จะมีขนาดบิตที่ต่ำกว่า แต่ AES ก็มีความสามารถสูงในการต้านทานการโจมตีแบบสุ่มรหัสผ่านจากคอมพิวเตอร์ทั่วไป
AES-256 ยากต่อการสุ่มรหัสผ่านมากกว่า AES-128 ถึง 340 พันล้านล้านล้านล้าน (2¹²⁸) เท่า
แม้ว่าในทางทฤษฎีแล้ว อัลกอริทึมของ Grover(หน้าต่างใหม่) จะลดความปลอดภัยของคีย์สมมาตรลงครึ่งหนึ่งเมื่อเผชิญกับภัยคุกคามทางควอนตัม แต่คีย์เหล่านี้ก็ยังสามารถต้านทานควอนตัมได้ดีในระดับหนึ่ง โดยเฉพาะเมื่อใช้คีย์ขนาด 256 บิต
การโจมตีคีย์
ในช่วงหลายปีที่ผ่านมา นักเขียนรหัสลับได้เผยแพร่วิธีการโจมตีคีย์ AES ในทางทฤษฎีจำนวนหนึ่ง แต่ทั้งหมดนี้ไม่สามารถนำมาใช้จริงได้ในทางปฏิบัติ หรือมีผลเฉพาะกับการใช้งาน AES ที่ลดจำนวนรอบลงเท่านั้น (ดูด้านล่าง)
ความพยายามที่ประสบความสำเร็จมากที่สุดคือการโจมตีแบบ Biclique(หน้าต่างใหม่) ในทางทฤษฎีซึ่งเผยแพร่ในปี 2011 ซึ่งสามารถลดเวลาที่ต้องใช้ในการโจมตีแบบบรูตฟอร์ซกับ AES ลงได้สี่เท่า อย่างไรก็ตาม ยังคงต้องใช้เวลาหลายพันล้านปีในการโจมตีแบบบรูตฟอร์ซกับ AES บนฮาร์ดแวร์คอมพิวเตอร์ในปัจจุบันหรือในอนาคตอันใกล้
ไม่มีการโจมตีคีย์ใดๆ ที่เป็นที่รู้จักที่สามารถนำมาใช้งานได้จริงกับ AES-128 หรือสูงกว่าที่ได้รับการติดตั้งใช้งานอย่างถูกต้อง
การโจมตีช่องทางข้างเคียง
การโจมตีช่องทางข้างเคียงพยายามลดจำนวนชุดค่าผสมที่จำเป็นเพื่อให้การโจมตีแบบบรูตฟอร์ซประสบความสำเร็จ โดยการค้นหาเบาะแสจากคอมพิวเตอร์ที่ทำการคำนวณการเข้ารหัสลับ สามารถรวบรวมเบาะแสได้จากการตรวจสอบ:
- เวลา - ระยะเวลาที่คอมพิวเตอร์ใช้ในการทำงาน
- การรั่วไหลของคลื่นแม่เหล็กไฟฟ้า
- สัญญาณเสียง
- สัญญาณภาพ (ตรวจจับได้โดยใช้กล้องความละเอียดสูง)
โดยเฉพาะการโจมตีด้วยเวลาแคชได้รับการพิสูจน์แล้วว่าค่อนข้างมีประสิทธิภาพในการถอดรหัส AES ได้สำเร็จ ในตัวอย่างที่โดดเด่นที่สุด นักวิจัยในปี 2016 สามารถกู้คืน(หน้าต่างใหม่)คีย์ AES-128 ได้โดยใช้ “เพียงประมาณ 6 - 7 บล็อกของข้อความธรรมดาหรือข้อความเข้ารหัส (ในทางทฤษฎีแล้ว แม้แต่บล็อกเดียวก็เพียงพอแล้ว)”
อย่างไรก็ตาม มีหลายสิ่งที่สามารถทำได้เพื่อบรรเทาภัยคุกคามจากการโจมตีช่องทางข้างเคียง:
- AES ที่ใช้งานอย่างถูกต้องสามารถป้องกันไม่ให้ข้อมูลรั่วไหลได้
- ฮาร์ดแวร์ที่ผสานรวมชุดคำสั่ง AES จะช่วยลดความเสี่ยงจากการโจมตีช่องทางข้างเคียงของ AES ลงได้อีก
- เทคนิคการสุ่มสามารถนำมาใช้เพื่อตัดความสัมพันธ์ระหว่างข้อมูลที่ได้รับการป้องกันโดย AES และข้อมูลที่รั่วไหลซึ่งอาจถูกรวบรวมโดยใช้การโจมตีช่องทางข้างเคียง
ในหลายกรณี การโจมตีช่องทางข้างเคียงกำหนดให้ผู้โจมตีต้องอยู่ใกล้ชิดหรือเข้าถึงอุปกรณ์ทางกายภาพในขณะที่ถอดรหัสข้อมูล แม้ว่าการโจมตีจากระยะไกลจะทำได้หากมีซอฟต์แวร์ประสงค์ร้ายติดตั้งอยู่บนอุปกรณ์ โดยเฉพาะอย่างยิ่งในกรณีของการโจมตีด้วยเวลา
การทำงานของ AES
AES คือรหัสบล็อกที่เข้ารหัสและถอดรหัสข้อมูลในบล็อกขนาด 128 บิตโดยใช้คีย์แบบ 128 บิต, 192 บิต หรือ 256 บิต ตามที่ระบุไว้ก่อนหน้านี้ มีการใช้คีย์เดียวกันในการเข้ารหัสและถอดรหัสข้อมูล AES ที่ใช้คีย์ขนาด 128 บิต มักถูกเรียกว่า AES-128 และในทำนองเดียวกันสำหรับ AES-192 และ AES-256

ข้อมูลจะถูกเข้ารหัสผ่านกระบวนการหลายรอบ โดยในแต่ละรอบจะประกอบด้วยชุดการทำงานทางคณิตศาสตร์
กระบวนการนี้เริ่มต้นด้วยการใช้อัลกอริทึมจัดตารางคีย์ (key schedule algorithm) ของ Rijndael เพื่อสร้างชุดคีย์รอบใหม่จากคีย์ลับเริ่มต้น ขั้นตอนนี้เรียกว่าการขยายคีย์ (key expansion)
จากนั้น ในแต่ละรอบจะประกอบด้วยขั้นตอนใดขั้นตอนหนึ่ง หรือหลายขั้นตอน (หรือการผสมผสาน) ดังต่อไปนี้:
1. Add Round Key: จะมีการดำเนินการ XOR(หน้าต่างใหม่) เพื่อรวมข้อมูลที่ต้องการเข้ารหัส (ข้อความเข้ารหัส) เข้ากับคีย์ของแต่ละรอบ

2. Sub Bytes: ตารางการแทนที่ถูกนำมาใช้เพื่อผสมข้อมูลให้ซับซ้อนยิ่งขึ้น โดยหลักการแล้ว ให้ลองนึกถึงรหัสลับแบบแทนที่อย่างง่ายที่เคยใช้ในวัยเด็ก ซึ่งจะแทนที่ตัวอักษรแต่ละตัวในข้อความด้วยตัวอักษรถัดไปตามจำนวนที่กำหนดในตัวอักษรภาษาอังกฤษ

3. Shift Rows: ข้อมูลแต่ละบล็อกขนาด 128 บิตประกอบด้วยบล็อกขนาด 16 บิตแบบ 4x4 การดำเนินการนี้จะเลื่อนแต่ละไบต์ในแถวของบล็อกไปทางซ้ายตามระยะออฟเซตที่กำหนด

4. Mix Columns: จะมีการแปลงเชิงเส้นแบบผันกลับได้เพิ่มเติมในแต่ละคอลัมน์ในบล็อก

ชุดการแปลงนี้ประกอบกันเป็นหนึ่งรอบ ซึ่งจะทำซ้ำกับข้อมูลตามจำนวนรอบที่กำหนด โดยขึ้นอยู่กับขนาดของคีย์:
- AES-128 — 10 รอบ
- AES-192 — 12 รอบ
- AES 256 — 14 รอบ
ในการถอดรหัสข้อมูล เพียงแค่ดำเนินการตามขั้นตอนทั้งหมดที่ใช้ในการเข้ารหัสในทิศทางย้อนกลับ การดำเนินการนี้ต้องใช้คีย์ลับดั้งเดิมเพื่อย้อนกระบวนการโดยใช้คีย์ย้อนกลับของแต่ละรอบ
เหตุใด AES-256 จึงเป็นที่นิยมมากกว่า AES-192 หรือ AES-128?
ด้วยเทคโนโลยีในปัจจุบันและอนาคตอันใกล้ การสุ่มรหัสผ่าน AES-128 จะต้องใช้เวลานานกว่าอายุของจักรวาล Bruce Schneier นักวิทยาการเข้ารหัสลับระดับตำนานถึงกับเคยโต้แย้ง(หน้าต่างใหม่)ว่า AES-128 อาจมีความแข็งแกร่งกว่า AES-256 เนื่องจากมีการจัดตารางคีย์ที่แข็งแกร่งกว่า ซึ่งเป็นอัลกอริทึมที่คำนวณคีย์ทั้งหมดในแต่ละรอบจากคีย์ลับเริ่มต้น
อย่างไรก็ตาม AES-256 ได้กลายเป็นมาตรฐานทองคำโดยพฤตินัยสำหรับการเข้ารหัสลับแบบคีย์สมมาตร มักถูกมองว่าเป็นตัวเลือกที่แข็งแกร่งกว่า (แม้ว่าจะมีข้อโต้แย้งอยู่บ้าง) เนื่องจากขนาดคีย์ที่ใหญ่กว่าช่วยเพิ่มขอบเขตความปลอดภัย เพื่อให้ข้อมูลที่เข้ารหัสยังคงปลอดภัย แม้ว่าจะมีการค้นพบวิธีลดทอนประสิทธิภาพของอัลกอริทึมลงอย่างมากก็ตาม ข้อโต้แย้งนี้ยิ่งมีน้ำหนักมากขึ้นเมื่อความจำเป็นในการต้านทานยุคหลังควอนตัมเริ่มมีความเร่งด่วนมากขึ้น
AES-CBC กับ AES-GCM
จนกระทั่งเมื่อไม่นานมานี้ มักจะใช้ AES ในโหมด Cipher Block Chaining (CBC) โดยที่ข้อความธรรมดาแต่ละบล็อกจะผ่านการ XOR กับบล็อกข้อความเข้ารหัสก่อนหน้าก่อนที่จะนำไปเข้ารหัส เมื่อใช้ในโหมด CBC จะต้องใช้อัลกอริทึมการแฮช HMAC(หน้าต่างใหม่) เช่น HMAC-SHA256 เพื่อตรวจสอบความถูกต้องของข้อมูล
อย่างไรก็ตาม เริ่มมีการใช้ AES ในโหมด Galois/Counter (GCM) แพร่หลายมากขึ้น ซึ่งใช้การเข้ารหัสลับแบบโหมดตัวนับ(หน้าต่างใหม่) ข้อดีหลักคือมีการใช้ ฟิลด์กาลัวส์(หน้าต่างใหม่) เพื่อตรวจสอบข้อมูลโดยไม่จำเป็นต้องใช้อัลกอริทึมภายนอก จึงมีประสิทธิภาพมากกว่าการใช้อัลกอริทึมการยืนยันตัวตนแยกต่างหาก ซึ่งอาจมีภาระการประมวลผลสูง
แม้ว่า AES-CBC ที่มีการยืนยันตัวตนแบบ HMAC มักจะถือว่าปลอดภัย แต่ CBC ก็อาจเสี่ยงต่อการโจมตีแบบแพดดิง(หน้าต่างใหม่) เช่น POODLE(หน้าต่างใหม่) ได้ แต่ GCM ไม่มีความเสี่ยงดังกล่าว
AES ที่เร่งด้วยฮาร์ดแวร์
CPU สมัยใหม่ส่วนใหญ่จะมี Advanced Encryption Standard New Instructions (AES-NI(หน้าต่างใหม่)) ซึ่งเป็นชุดคำสั่งฮาร์ดแวร์ที่ดำเนินการตามกระบวนการ AES บนโปรเซสเซอร์โดยตรง วิธีนี้ช่วยให้ AES ทำงานได้รวดเร็วขึ้นมาก และยังช่วยป้องกันการโจมตีแบบ Side-channel ที่อิงตามเวลา เนื่องจากกระบวนการต่างๆ จะเกิดขึ้นภายในหน่วยประมวลผลที่ปลอดภัยของโปรเซสเซอร์ จึงมีความแตกต่างของเวลาที่ผู้โจมตีจะสามารถสังเกตและนำไปใช้ประโยชน์ได้น้อยลง
Proton และ AES
มีการใช้งาน AES อย่างกว้างขวางเพื่อรักษาความปลอดภัยให้กับผลิตภัณฑ์ Proton:
กิจกรรมและผู้ติดต่อได้รับการรักษาความปลอดภัยโดยใช้ AES-256 ร่วมกับ ECC สำหรับการแลกเปลี่ยนคีย์ เพื่อรับรองความเป็นส่วนตัวผ่านการเข้ารหัสลับจากต้นทางถึงปลายทาง
Proton VPN มุ่งเน้นไปที่โปรโตคอล WireGuard® VPN ที่รวดเร็วและมีประสิทธิภาพเป็นหลัก (ซึ่งใช้ ChaCha20) แต่การเชื่อมต่อแบบ OpenVPN จะใช้ AES-256
Proton Pass จัดเก็บรหัสผ่าน บันทึก ข้อมูลระบุตัวตน และรายการอื่นๆ ไว้ในห้องนิรภัยที่ปลอดภัยโดยใช้ AES-256
Proton Drive เข้ารหัสไฟล์ที่อัปโหลดทั้งหมดแบบจากต้นทางถึงปลายทางด้วย AES-256 โดยใช้ ECC สำหรับการแลกเปลี่ยนคีย์ Proton Docs และ Proton Sheets ก็ใช้ AES-256 ร่วมกับการแลกเปลี่ยนคีย์แบบ ECC เช่นกัน แม้ว่าการใช้งานการเข้ารหัสลับจะแตกต่างจากรูปแบบการเข้ารหัสไฟล์ทั่วไปของ Proton Drive ก็ตาม
Proton Mail จัดเก็บอีเมลและไฟล์แนบโดยใช้ AES-256 ผ่านมาตรฐาน OpenPGP แม้แต่คีย์ส่วนตัวสำหรับปลดล็อกอีเมลก็ได้รับการเข้ารหัสด้วย AES-256 ก่อนที่จะถูกนำไปจัดเก็บไว้บนเซิร์ฟเวอร์
Proton Meet ใช้ Messaging Layer Security (MLS) เพื่อเข้ารหัสเสียง วิดีโอ และข้อความแชท เพื่อรับรอง การเก็บรักษาความลับในอนาคต (PFS) และความปลอดภัยหลังเกิดการบุกรุก (PCS) สำหรับการสื่อสารทั้งหมด ข้อมูลการประชุมทั้งหมดได้รับการเข้ารหัสลับจากต้นทางถึงปลายทางโดยใช้ AES-256-GCM
การบรรเทาการโจมตีการเข้ารหัสลับ AES
ระบบรักษาความปลอดภัยจะแข็งแกร่งเท่ากับลิงก์ที่อ่อนแอที่สุดเท่านั้น ซึ่งโดยปกติแล้วคือรหัสผ่าน ซึ่งหมายความว่า กลอุบายวิศวกรรมสังคม การโจมตีแบบฟิชชิ่ง และโปรแกรมบันทึกการกดแป้นพิมพ์(หน้าต่างใหม่) ถือเป็นภัยคุกคามต่อข้อมูลที่เข้ารหัสด้วย AES เช่นกัน ดังนั้น แม้ว่าจะมีการใช้งาน AES ก็ควรปฏิบัติตามข้อควรระวังต่อไปนี้:
- ใช้งานโปรแกรมจัดการรหัสผ่านที่เข้ารหัส
- ใช้คีย์ความปลอดภัยฮาร์ดแวร์ (เช่น YubiKey) เพื่อการปกป้องอีกขั้น
- หากเป็นส่วนหนึ่งขององค์กร ควรจัดการอบรมด้านความปลอดภัยแก่พนักงานอย่างสม่ำเสมอเพื่อป้องกันการโจมตีแบบฟิชชิ่ง
ควบคุมดูแลข้อมูล
Proton ได้รับการสร้างขึ้นเพื่อปกป้องข้อมูลมาตั้งแต่แรกเริ่ม ด้วยการเข้ารหัสลับจากต้นทางถึงปลายทาง แอปโอเพนซอร์ส และการตรวจสอบที่เป็นอิสระ ข้อมูลจะยังคงเป็นสิทธิ์แต่เพียงผู้เดียว
คำถามที่พบบ่อยเกี่ยวกับการเข้ารหัสลับ AES
- แบบไหนดีกว่ากัน: AES กับ DES?
- แบบไหนดีกว่ากันระหว่าง AES กับ RSA?
- ระบบรักษาความปลอดภัยของ AES มีความแข็งแกร่งเพียงใด?


