อธิบาย AES-256: ความหมายต่อข้อมูลของคุณ
อธิบาย AES-256: วิธีทำงานของการเข้ารหัส เหตุผลที่คีย์ 256 บิตสำคัญ สิ่งที่ GCM mode เพิ่มเติม และสิ่งที่ควรตรวจสอบเมื่อแอปอ้างว่าใช้ AES-256
AES-256 คือ Advanced Encryption Standard ที่มีคีย์ 256 บิต ซึ่ง NIST ได้กำหนดมาตรฐานเป็น FIPS 197 ในปี 2001 เป็นอัลกอริทึมการเข้ารหัสแบบสมมาตรที่ใช้โดยรัฐบาลสหรัฐฯ สำหรับข้อมูลลับ โดยธนาคารสำหรับธุรกรรมทางการเงิน และโดยแอปพลิเคชันที่เน้นความปลอดภัยสำหรับการปกป้องข้อมูลที่อยู่นิ่งและระหว่างการส่ง AES-256 มี 2^256 คีย์ที่เป็นไปได้ -- ตัวเลขที่มากกว่าจำนวนอะตอมโดยประมาณในจักรวาลที่สังเกตได้ ไม่มีการโจมตีที่รู้จักที่ลดพื้นที่คีย์นี้ให้สามารถค้นหาได้ในทางคำนวณ
คู่มือนี้อธิบายสิ่งที่ AES-256 ทำจริงๆ เหตุผลที่ขนาดคีย์สำคัญ ความหมายของโหมดต่างๆ (ECB, CBC, GCM) และสิ่งที่ควรมองหาเมื่อแอปอ้างว่าใช้ AES-256
AES ทำงานอย่างไร
AES คือการเข้ารหัสแบบบล็อกสมมาตร "สมมาตร" หมายความว่าคีย์เดียวกันเข้ารหัสและถอดรหัส "การเข้ารหัสแบบบล็อก" หมายความว่าประมวลผลข้อมูลในบล็อกขนาดคงที่ 128 บิต (16 ไบต์)
อัลกอริทึมรับข้อมูลของคุณ (ข้อความธรรมดา) รวมกับคีย์ และสร้างผลลัพธ์ที่ถูกรบกวน (ข้อความเข้ารหัส) ผ่านชุดการแปลงทางคณิตศาสตร์ การแปลงเหล่านี้ -- การแทนที่ การเลื่อน การผสม และการเพิ่มคีย์ -- ทำซ้ำตามจำนวนรอบที่กำหนด AES-256 ใช้ 14 รอบ
แต่ละรอบใช้สี่การดำเนินการ:
- SubBytes: แต่ละไบต์ถูกแทนที่โดยใช้ตารางการแทนที่คงที่ (S-box) ซึ่งนำความไม่เป็นเส้นตรงมาใช้
- ShiftRows: ไบต์ในแต่ละแถวถูกเลื่อนด้วยออฟเซ็ตที่แตกต่างกัน กระจายข้อมูลข้ามตำแหน่ง
- MixColumns: คอลัมน์ถูกผสมผ่านการคูณเมทริกซ์ในเขตจำกัด กระจายการเปลี่ยนแปลงข้ามไบต์
- AddRoundKey: คีย์รอบ (ได้มาจากคีย์หลัก) ถูก XOR กับข้อมูล
หลังจาก 14 รอบ ข้อความธรรมดาถูกรบกวนอย่างละเอียด การย้อนกลับการดำเนินการเหล่านี้ด้วยคีย์ที่ถูกต้องจะกู้คืนข้อมูลต้นฉบับ ไม่มีคีย์ ข้อความเข้ารหัสก็แยกแยะไม่ออกจากสัญญาณรบกวนแบบสุ่ม
เหตุผลที่ 256 บิตสำคัญ
"256" ใน AES-256 หมายถึงความยาวคีย์: 256 บิต ซึ่งกำหนดจำนวนคีย์ที่เป็นไปได้ที่ผู้โจมตีต้องลองเพื่อทำลายการเข้ารหัสด้วยวิธีเดรัจฉาน
| ขนาดคีย์ | คีย์ที่เป็นไปได้ | เวลาในการเจาะด้วยเดรัจฉาน (1 ล้านล้านครั้ง/วินาที) |
|---|---|---|
| 56 บิต (DES) | 7.2 x 10^16 | ~20 ชั่วโมง |
| 128 บิต (AES-128) | 3.4 x 10^38 | 10^13 ปี (10 ล้านล้านปี) |
| 256 บิต (AES-256) | 1.16 x 10^77 | 10^51 ปี |
เพื่อบริบท: จักรวาลมีอายุประมาณ 1.38 x 10^10 ปี การเจาะ AES-256 ด้วยวิธีเดรัจฉานจะใช้เวลาประมาณ 10^41 เท่าของอายุจักรวาล แม้ที่หนึ่งล้านล้านครั้งต่อวินาที
AES-128 ก็ไม่สามารถเจาะได้ในทางคำนวณแล้ว AES-256 ให้ขอบเขตเพิ่มเติมต่อความก้าวหน้าในอนาคตในการคำนวณ รวมถึงคอมพิวเตอร์ควอนตัม อัลกอริทึม Grover (การโจมตีด้วยคอมพิวเตอร์ควอนตัม) ลดความยาวคีย์ที่มีประสิทธิภาพลงครึ่งหนึ่ง -- ลด AES-256 เป็นเทียบเท่า AES-128 ซึ่งยังคงไม่สามารถทำได้ AES-128 จะลดเป็นความปลอดภัย 64 บิตที่มีประสิทธิภาพ ซึ่งอาจเสี่ยง นี่คือเหตุผลที่แอปพลิเคชันที่ต้องการความปลอดภัยสูงชอบ AES-256
โหมด AES: เหตุผลที่สำคัญ
AES โดยตัวเองเข้ารหัสเพียงบล็อก 128 บิตต่อครั้ง สำหรับข้อมูลจริง (รูปภาพ เอกสาร วิดีโอ) คุณต้องการ "โหมดการดำเนินการ" ที่จัดการข้อมูลที่ใหญ่กว่า 16 ไบต์ โหมดกำหนดวิธีที่บล็อกถูกเชื่อมต่อกันและมีผลกระทบด้านความปลอดภัยที่สำคัญ
ECB (Electronic Codebook) -- ไม่ควรใช้
แต่ละบล็อกถูกเข้ารหัสอิสระด้วยคีย์เดียวกัน บล็อกข้อความธรรมดาที่เหมือนกันสร้างบล็อกข้อความเข้ารหัสที่เหมือนกัน ซึ่งเปิดเผยรูปแบบในข้อมูล การสาธิตคลาสสิก: การเข้ารหัสภาพบิตแมปด้วย ECB จะรักษาโครงสร้างของภาพไว้ในข้อความเข้ารหัส ทำให้เนื้อหาสามารถจดจำได้ ECB รวมอยู่ในมาตรฐาน แต่ไม่ควรใช้กับข้อมูลที่มีโครงสร้างหรือรูปแบบซ้ำๆ
CBC (Cipher Block Chaining) -- รุ่นเก่า
แต่ละบล็อกถูก XOR กับบล็อกข้อความเข้ารหัสก่อนหน้าก่อนการเข้ารหัส สิ่งนี้ขจัดการรั่วไหลของรูปแบบของ ECB CBC เป็นโหมดมาตรฐานมาหลายทศวรรษ แต่ถูกแทนที่ด้วย GCM สำหรับแอปพลิเคชันส่วนใหญ่ CBC ต้องการเวกเตอร์เริ่มต้นแบบสุ่ม (IV) และไม่ให้การยืนยันตัวตนในตัว
GCM (Galois/Counter Mode) -- มาตรฐานปัจจุบัน
GCM รวมการเข้ารหัสแบบเคาน์เตอร์กับการยืนยันตัวตนด้วย Galois field ให้การเข้ารหัสแบบยืนยันตัวตน: เข้ารหัสข้อมูลและสร้างแท็กการยืนยันตัวตนที่ตรวจจับการดัดแปลงใดๆ ต่อข้อความเข้ารหัส หากบิตเดียวถูกเปลี่ยนแปลง การถอดรหัสจะล้มเหลวแทนที่จะสร้างข้อมูลที่เสียหาย
NIST กำหนดมาตรฐาน GCM ใน SP 800-38D (2007) เป็นโหมดที่แนะนำสำหรับการใช้งานใหม่
AES-256-GCM คือ AES ที่มีคีย์ 256 บิตในโหมด Galois/Counter Mode นี่คือสิ่งที่แอปพลิเคชันที่ต้องการความปลอดภัยสูงควรใช้ และสิ่งที่ Vaultaire ใช้สำหรับการเข้ารหัสเนื้อหารูปภาพและไฟล์
| โหมด | การรั่วไหลของรูปแบบ | การยืนยันตัวตน | คำแนะนำปัจจุบัน |
|---|---|---|---|
| ECB | ใช่ (รุนแรง) | ไม่ | ไม่ควรใช้ |
| CBC | ไม่ | ไม่ (ต้องการ MAC แยก) | รุ่นเก่า; ยอมรับได้กับ HMAC |
| GCM | ไม่ | ใช่ (ในตัว) | แนะนำสำหรับการใช้งานใหม่ |
AES-256 หมายความว่าอะไรสำหรับการจัดเก็บรูปภาพ
เมื่อแอปตู้นิรภัยรูปภาพอ้างว่า "AES-256 encryption" สามสิ่งควรเป็นจริง:
เนื้อหาไฟล์ถูกเข้ารหัสด้วย AES-256 ข้อมูลรูปภาพดิบ (พิกเซล เมตาดาต้า ภาพย่อ) ถูกแปลงเป็นข้อความเข้ารหัสโดยใช้คีย์ 256 บิต
แต่ละไฟล์ใช้เวกเตอร์เริ่มต้นที่ไม่ซ้ำกัน (IV) หากรูปภาพที่เหมือนกันสองภาพถูกเข้ารหัสด้วยคีย์เดียวกัน ข้อความเข้ารหัสควรแตกต่างกัน ต้องใช้ IV ที่ไม่ซ้ำกันต่อไฟล์ ไม่เช่นนั้นการวิเคราะห์เชิงสถิติสามารถเปิดเผยรูปแบบได้
โหมดให้การยืนยันตัวตน (GCM หรือเทียบเท่า) ไม่มีการยืนยันตัวตน ผู้โจมตีสามารถปรับเปลี่ยนข้อความเข้ารหัสโดยไม่ถูกตรวจจับ ผลลัพธ์ที่ถอดรหัสจะเป็นข้อมูลที่เสียหายแทนที่จะเป็นข้อผิดพลาด
"AES-256" บนหน้าการตลาดไม่ได้บอกคุณ
AES-256 จำเป็น แต่ไม่เพียงพอ ปัจจัยสำคัญหลายอย่างกำหนดว่าการเข้ารหัสปกป้องข้อมูลของคุณจริงหรือไม่:
การได้มาของคีย์สำคัญ คีย์ 256 บิตถูกสร้างขึ้นอย่างไร หากได้มาจาก PIN 4 หลักโดยใช้ KDF ที่อ่อนแอ ความปลอดภัยที่มีประสิทธิภาพคือ 4 หลัก (10,000 ชุดค่าผสม) ไม่ใช่ 256 บิต การใช้งานที่แข็งแกร่งใช้ PBKDF2 ที่มีการวนซ้ำสูงหรือ Argon2 ที่มีพารามิเตอร์หน่วยความจำ/เวลาที่เหมาะสม Vaultaire ใช้ PBKDF2 กับ HMAC-SHA512 โดยได้คีย์จากรูปแบบบนตาราง 5x5 ที่มีอินพุตที่เป็นไปได้หลายพันล้านรูปแบบ
การจัดเก็บคีย์สำคัญ คีย์อยู่ที่ไหน หากคีย์ถูกเก็บไว้ในข้อความธรรมดาใน sandbox ของแอป มัลแวร์ใดๆ ที่มีการเข้าถึงไฟล์สามารถอ่านได้ การจัดเก็บคีย์ที่ถูกต้องใช้กลไกที่ได้รับการสนับสนุนจากฮาร์ดแวร์เช่น Apple Secure Enclave ที่คีย์อยู่ในโคโปรเซสเซอร์เฉพาะที่มีหน่วยความจำเข้ารหัสของตัวเอง
สิ่งที่ถูกเข้ารหัสสำคัญ บางแอปเข้ารหัสเนื้อหาไฟล์ แต่ปล่อยชื่อไฟล์ ภาพย่อ และเมตาดาต้าไว้โดยไม่เข้ารหัส ผู้ตรวจสอบทางนิติวิทยาศาสตร์อาจไม่เห็นรูปภาพของคุณ แต่สามารถเห็น "vacation-beach-2025.jpg" ในรายการไฟล์ได้ การเข้ารหัสที่ครอบคลุมครอบคลุมเมตาดาต้าแยกต่างหาก
วงจรชีวิตของคีย์สำคัญ คีย์ถูกลบออกจากหน่วยความจำเมื่อแอปปิดหรือไม่ หากคีย์ยังคงอยู่ในหน่วยความจำ การดัมพ์หน่วยความจำสามารถดึงออกมาได้ Vaultaire ลบคีย์ออกจากหน่วยความจำทุกครั้งที่ปิดแอป และต้องป้อนรูปแบบใหม่ทุกครั้งที่เปิด
AES-256 ในทางปฏิบัติ: ใครใช้บ้าง
| หน่วยงาน | กรณีการใช้งาน | โหมด |
|---|---|---|
| รัฐบาลสหรัฐฯ (NSA) | ข้อมูลลับ | GCM (หรือ CTR พร้อมการยืนยันตัวตนแยก) |
| Apple (iCloud ADP) | การเข้ารหัสแบบ end-to-end ของ iCloud | GCM |
| Signal | การเข้ารหัสข้อความ | CBC (กับ HMAC สำหรับการยืนยันตัวตน) |
| ธนาคาร | การเข้ารหัสธุรกรรมทางการเงิน | GCM |
| 1Password | ตู้นิรภัยรหัสผ่าน | GCM |
| Vaultaire | ตู้นิรภัยรูปภาพและไฟล์ | GCM |
| VeraCrypt | การเข้ารหัสดิสก์ | XTS (ปรับแต่งสำหรับบล็อกดิสก์) |
ความเข้าใจผิดทั่วไป
"Military-grade encryption" ไม่มีความหมายเฉพาะ หน้าการตลาดใช้วลีนี้เพราะดูน่าประทับใจ AES-256 ถูกใช้โดยกองทัพ เช่นเดียวกับ AES-128 วลีนี้ไม่ได้บอกคุณเกี่ยวกับโหมด การได้มาของคีย์ การจัดเก็บคีย์ หรือข้อมูลที่เข้ารหัสจริงๆ
"256-bit encryption" อาจไม่ได้หมายความว่า AES-256 การเข้ารหัสอื่นๆ ก็ใช้คีย์ 256 บิต (ChaCha20, Twofish, Serpent) ตรวจสอบว่าระบุอัลกอริทึมใด AES-256-GCM คือมาตรฐานปัจจุบัน
AES-256 ไม่ปกป้องจากรหัสผ่านที่อ่อนแอ หากรหัสผ่านของคุณคือ "1234" และการได้มาของคีย์อ่อนแอ การเข้ารหัสมีประสิทธิภาพเป็นความปลอดภัย 4 หลักโดยไม่คำนึงถึงความแข็งแกร่งของการเข้ารหัส ห่วงโซ่แตกที่จุดที่อ่อนแอที่สุด
AES-256 ไม่ปกป้องข้อมูลที่กำลังใช้งาน เมื่อคุณดูรูปภาพ ต้องถอดรหัสในหน่วยความจำ ณ ขณะนั้นมันมีอยู่ในข้อความธรรมดาใน RAM การใช้งานที่ถูกต้องลดหน้าต่างนี้และลบข้อมูลที่ถอดรหัสแล้วโดยเร็ว
คำถามที่พบบ่อย
AES-256 สามารถถูกถอดรหัสได้หรือไม่?
ไม่มีการโจมตีที่รู้จักที่ถอดรหัส AES-256 โดยการลดพื้นที่คีย์เต็ม การโจมตีที่รู้จักดีที่สุด (การโจมตี biclique โดย Bogdanov, Khovratovich และ Rechberger, 2011) ลด AES-256 จาก 2^256 การดำเนินการเป็น 2^254.4 -- การปรับปรุงทางทฤษฎีที่ไม่มีความหมายในทางคำนวณในทางปฏิบัติ AES-256 ยังคงไม่ถูกทำลาย
AES-256 ต้านทานควอนตัมได้หรือไม่?
ค่อนข้างได้ อัลกอริทึมควอนตัม Grover ลดความยาวคีย์ที่มีประสิทธิภาพลงครึ่งหนึ่ง: AES-256 กลายเป็นเทียบเท่ากับความปลอดภัย 128 บิตต่อการโจมตีควอนตัม AES-128 จะลดเป็นความปลอดภัย 64 บิตที่มีประสิทธิภาพ ซึ่งอาจเสี่ยง NIST แนะนำ AES-256 สำหรับความปลอดภัยระยะยาวต่อความก้าวหน้าของคอมพิวเตอร์ควอนตัม
ความแตกต่างระหว่าง AES-128 และ AES-256 คืออะไร?
AES-128 ใช้คีย์ 128 บิต (10 รอบ) AES-256 ใช้คีย์ 256 บิต (14 รอบ) ทั้งคู่ถือว่าปลอดภัยต่อการโจมตีในปัจจุบัน AES-256 ให้ขอบเขตที่กว้างกว่าต่อความก้าวหน้าในอนาคต โดยเฉพาะคอมพิวเตอร์ควอนตัม AES-256 ช้ากว่า AES-128 ประมาณ 40% เนื่องจากรอบเพิ่มเติม แต่การเร่งด้วยฮาร์ดแวร์ทำให้ไม่สำคัญบนอุปกรณ์สมัยใหม่
AES-256 ทำให้โทรศัพท์ช้าลงหรือไม่?
ไม่รู้สึกได้ iPhones รุ่นใหม่มีการเร่งด้วยฮาร์ดแวร์ AES เฉพาะใน Secure Enclave และโปรเซสเซอร์ การเข้ารหัสหรือถอดรหัสรูปภาพใช้เวลาเป็นมิลลิวินาที AES ได้รับการออกแบบมาโดยเฉพาะสำหรับประสิทธิภาพการใช้งานฮาร์ดแวร์
ฉันจะรู้ได้อย่างไรว่าแอปใช้ AES-256 จริงๆ?
ตรวจสอบเอกสารความปลอดภัยของแอป ไม่ใช่แค่หน้าการตลาด มองหา: อัลกอริทึมและโหมดเฉพาะ (AES-256-GCM ไม่ใช่แค่ "AES" หรือ "256 บิต") วิธีการได้มาของคีย์ (PBKDF2, Argon2) กลไกการจัดเก็บคีย์ (Secure Enclave, ฮาร์ดแวร์) และว่าเมตาดาต้าถูกเข้ารหัสด้วยหรือไม่ แอปโอเพนซอร์สอนุญาตให้ตรวจสอบอิสระ
บทสรุป
AES-256 คือมาตรฐานทองสำหรับการเข้ารหัสแบบสมมาตร ได้รับการกำหนดมาตรฐานโดย NIST ใช้โดยรัฐบาลและสถาบันการเงิน และต้านทานการโจมตีที่รู้จักทั้งหมดรวมถึงคอมพิวเตอร์ควอนตัม เมื่อประเมินแอปที่อ้างว่าใช้ AES-256 มองให้ไกลกว่าการเข้ารหัส: ตรวจสอบโหมด (GCM) การได้มาของคีย์ (PBKDF2/Argon2 ที่มีการวนซ้ำสูง) การจัดเก็บคีย์ (ฮาร์ดแวร์) และข้อมูลที่เข้ารหัสจริงๆ (เนื้อหา + เมตาดาต้า)
Vaultaire ใช้ AES-256-GCM สำหรับการเข้ารหัสไฟล์ PBKDF2 กับ HMAC-SHA512 สำหรับการได้มาของคีย์ ChaCha20 สำหรับการเข้ารหัสเมตาดาต้า และ Apple Secure Enclave สำหรับการจัดการคีย์ การเข้ารหัสไม่ใช่ภาษาการตลาด มันคือ คณิตศาสตร์