อธิบาย AES-256: ความหมายต่อข้อมูลของคุณ

อธิบาย 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 รอบ

แต่ละรอบใช้สี่การดำเนินการ:

  1. SubBytes: แต่ละไบต์ถูกแทนที่โดยใช้ตารางการแทนที่คงที่ (S-box) ซึ่งนำความไม่เป็นเส้นตรงมาใช้
  2. ShiftRows: ไบต์ในแต่ละแถวถูกเลื่อนด้วยออฟเซ็ตที่แตกต่างกัน กระจายข้อมูลข้ามตำแหน่ง
  3. MixColumns: คอลัมน์ถูกผสมผ่านการคูณเมทริกซ์ในเขตจำกัด กระจายการเปลี่ยนแปลงข้ามไบต์
  4. 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" สามสิ่งควรเป็นจริง:

  1. เนื้อหาไฟล์ถูกเข้ารหัสด้วย AES-256 ข้อมูลรูปภาพดิบ (พิกเซล เมตาดาต้า ภาพย่อ) ถูกแปลงเป็นข้อความเข้ารหัสโดยใช้คีย์ 256 บิต

  2. แต่ละไฟล์ใช้เวกเตอร์เริ่มต้นที่ไม่ซ้ำกัน (IV) หากรูปภาพที่เหมือนกันสองภาพถูกเข้ารหัสด้วยคีย์เดียวกัน ข้อความเข้ารหัสควรแตกต่างกัน ต้องใช้ IV ที่ไม่ซ้ำกันต่อไฟล์ ไม่เช่นนั้นการวิเคราะห์เชิงสถิติสามารถเปิดเผยรูปแบบได้

  3. โหมดให้การยืนยันตัวตน (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 สำหรับการจัดการคีย์ การเข้ารหัสไม่ใช่ภาษาการตลาด มันคือ คณิตศาสตร์