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

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

อธิบาย AES-256: วิธีทำงานของการเข้ารหัส เหตุผลที่คีย์ 256 บิตสำคัญ สิ่งที่ GCM mode เพิ่มเติม และสิ่งที่ควรตรวจสอบเมื่อแอปอ้างว่าใช้ AES-256


AES-256 คืออะไร

AES-256 คือการเข้ารหัสแบบบล็อกสมมาตร หรือ Advanced Encryption Standard ที่ใช้คีย์ 256 บิต คีย์เดียวกันใช้ทั้งเข้ารหัสและถอดรหัส อัลกอริทึมประมวลผลข้อมูลเป็นบล็อกละ 128 บิต ผ่าน 14 รอบ และ NIST กำหนดเป็นมาตรฐาน FIPS 197 ในปี 2001

ชื่อนี้รวมข้อเท็จจริงสามข้อไว้ด้วยกัน AES คือชื่ออัลกอริทึม ซึ่ง NIST เลือกจากข้อเสนอ Rijndael ในปี 2001 256 คือความยาวคีย์เป็นบิต ซึ่งกำหนดว่าผู้โจมตีแบบ brute force ต้องลองกี่คีย์ ส่วนโหมดอย่าง GCM หรือ CBC ซึ่งมักเขียนต่อท้ายเป็น AES-256-GCM กำหนดว่าบล็อกต่อกันอย่างไร และข้อความเข้ารหัสถูกตรวจการแก้ไขหรือไม่ คำว่า 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 บิต ซึ่งกำหนดจำนวนคีย์ที่เป็นไปได้ที่ผู้โจมตีต้องลองเพื่อทำลายการเข้ารหัสด้วยวิธี brute force

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

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

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

อายุการใช้งานของคีย์มีความสำคัญ คีย์ที่ถอดรหัสแล้วยังใช้งานได้อยู่นานเท่าใด Vaultaire ทิ้งสถานะห้องนิรภัยที่เปิดอยู่และคีย์หลักเมื่อล็อกหรือปิดแอป และต้องปลดล็อกใหม่ทุกครั้ง ไบต์ของคีย์สมมาตรต้องอยู่ในหน่วยความจำของแอประหว่างที่ห้องนิรภัยเปิดอยู่ และ 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 ย่อมาจากอะไร

ย่อมาจาก Advanced Encryption Standard ที่ใช้คีย์ 256 บิต AES คืออัลกอริทึมการเข้ารหัสที่ NIST กำหนดเป็นมาตรฐาน FIPS 197 ในปี 2001 หลังจากเลือกการออกแบบ Rijndael ตัวเลข 256 คือความยาวคีย์เป็นบิต ส่วนคำต่อท้ายอย่าง AES-256-GCM บอกโหมดการทำงาน ซึ่งเป็นคนละเรื่องกับอัลกอริทึมและขนาดคีย์

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 บิต ซึ่งอาจถูกโจมตีได้ การค้นหาแบบ Grover กับ AES-256 ยังต้องใช้ราว 2^128 ครั้ง ซึ่งทำไม่ได้จริง

ความแตกต่างระหว่าง 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 และยังไม่มีการโจมตีที่ใช้ได้จริง คอมพิวเตอร์ควอนตัมที่ใช้อัลกอริทึมของ Grover ก็ยังต้องทำงานราว 2^128 ครั้ง เมื่อประเมินแอปที่อ้างว่าใช้ AES-256 ให้มองไกลกว่าตัวอัลกอริทึม ตรวจโหมด (GCM) การสร้างคีย์ (PBKDF2/Argon2 ที่มีจำนวนรอบสูง) ที่เก็บคีย์ (ใช้ฮาร์ดแวร์รองรับ) และข้อมูลที่ถูกเข้ารหัสจริง (เนื้อหา + เมตาดาตา)

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

เอกสารอ้างอิง