อธิบาย 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 พร้อมพารามิเตอร์หน่วยความจำและเวลาที่เหมาะสม ห้องนิรภัยใช้ PBKDF2 ด้วย HMAC-SHA512 และทำซ้ำ 600,000 ครั้งเพื่อรับคีย์ vault ในเครื่องจากรูปแบบ 5x5 ที่เลือกและเกลือของอุปกรณ์ PBKDF2 ทำให้การเดาแต่ละครั้งมีราคาแพงขึ้น มันไม่เพิ่มเอนโทรปีของรูปแบบเป็น 256 บิต

การจัดเก็บกุญแจมีความสำคัญ คีย์อาศัยอยู่ที่ไหน? หากคีย์ถูกจัดเก็บในรูปแบบข้อความธรรมดาในแซนด์บ็อกซ์ของแอป มัลแวร์ที่มีสิทธิ์เข้าถึงไฟล์จะสามารถอ่านคีย์ได้ แอปเปิล Secure Enclave รองรับการทำงานของคีย์ที่ไม่สามารถส่งออกได้เฉพาะ ไม่ใช่คีย์ AES ที่มาจากแอปโดยพลการ การออกแบบคีย์สมมาตรอาจพึ่งพาแทน Keychain และการปกป้องข้อมูล ดังนั้นเอกสารควรตั้งชื่อ API และคลาสการป้องกันให้ถูกต้อง แทนที่จะระบุเพียง "ฮาร์ดแวร์สนับสนุน"

สิ่งที่ถูกเข้ารหัสสำคัญ บางแอปเข้ารหัสเนื้อหาไฟล์ แต่ปล่อยชื่อไฟล์ ภาพย่อ และเมตาดาต้าไว้โดยไม่เข้ารหัส ผู้ตรวจสอบทางนิติวิทยาศาสตร์อาจไม่เห็นรูปภาพของคุณ แต่สามารถเห็น "vacation-beach-2025.jpg" ในรายการไฟล์ได้ การเข้ารหัสที่ครอบคลุมครอบคลุมเมตาดาต้าแยกต่างหาก

วงจรชีวิตที่สำคัญมีความสำคัญ วัสดุคีย์ที่ถอดรหัสแล้วจะยังคงใช้งานได้นานเท่าใด ห้องนิรภัยจะยกเลิกตู้นิรภัยที่ใช้งานอยู่และสถานะมาสเตอร์คีย์เมื่อล็อกหรือปิด และต้องปลดล็อคใหม่ ไบต์ของคีย์สมมาตรจำเป็นต้องมีอยู่ในหน่วยความจำของแอปในขณะที่ห้องนิรภัยเปิดอยู่ และ Swift และ iOS อย่าให้แอปพิสูจน์ว่าสำเนาชั่วคราวทุกฉบับถูกเขียนทับ

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 ทำให้โทรศัพท์ช้าลงหรือไม่?

ใช้งานปกติไม่ชัด. โปรเซสเซอร์สมัยใหม่ของ Apple มอบการเร่งความเร็วด้วยฮาร์ดแวร์สำหรับ AES ผ่านไลบรารีการเข้ารหัสระบบ นั่นไม่ได้หมายความว่าการดำเนินการ AES ของแอปจะทำงานภายใน Secure Enclave. เวลายังคงขึ้นอยู่กับขนาดไฟล์ อุปกรณ์ พื้นที่จัดเก็บ และการนำไปใช้งาน ดังนั้นการเรียกร้องด้านความปลอดภัยควรขึ้นอยู่กับการวัดมากกว่าตัวเลขมิลลิวินาทีสากล

ฉันจะรู้ได้อย่างไรว่าแอปใช้ AES-256 จริงๆ?

ตรวจสอบเอกสารความปลอดภัยของแอป ไม่ใช่แค่หน้าการตลาด มองหาอัลกอริธึมและโหมดเฉพาะ ลำดับชั้นคีย์ พารามิเตอร์ที่มา ที่แน่นอน Keychain หรือ Secure Enclave การใช้งาน การจัดการแบบ nonce เส้นทางการกู้คืน และการเข้ารหัสข้อมูลเมตาด้วยหรือไม่ โค้ดโอเพ่นซอร์สและการตรวจสอบอิสระทำให้การอ้างสิทธิ์เหล่านั้นตรวจสอบได้ง่ายขึ้น

บทสรุป

AES-256 คือมาตรฐานทองสำหรับการเข้ารหัสแบบสมมาตร ได้รับการกำหนดมาตรฐานโดย NIST ใช้โดยรัฐบาลและสถาบันการเงิน และต้านทานการโจมตีที่รู้จักทั้งหมดรวมถึงคอมพิวเตอร์ควอนตัม เมื่อประเมินแอปที่อ้างว่าใช้ AES-256 มองให้ไกลกว่าการเข้ารหัส: ตรวจสอบโหมด (GCM) การได้มาของคีย์ (PBKDF2/Argon2 ที่มีการวนซ้ำสูง) การจัดเก็บคีย์ (ฮาร์ดแวร์) และข้อมูลที่เข้ารหัสจริงๆ (เนื้อหา + เมตาดาต้า)

ห้องนิรภัย การใช้งาน AES-256-GCM สำหรับเนื้อหาไฟล์ ส่วนหัว ข้อมูลเมตา ดัชนี และภาพขนาดย่อ PBKDF2 ด้วย HMAC-SHA512 ได้รับคีย์ vault ภายในเครื่องจากรูปแบบและทั้งอุปกรณ์ Keychain เกลือ; คีย์นั้นจะคลายคีย์หลักแบบสุ่มที่ใช้สำหรับการเข้ารหัสไฟล์ การดำเนินการแบบสมมาตรดำเนินการในกระบวนการแอปผ่าน CryptoKitในขณะที่ iOS Keychain และการป้องกันข้อมูลปกป้องสถานะการกู้คืนเมื่ออุปกรณ์ถูกล็อค ลำดับชั้นทั้งหมดได้รับการบันทึกไว้ใน รูปแบบการรักษาความปลอดภัย.