Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

การเข้ารหัสและถอดรหัส AES ในความปลอดภัยข้อมูล

AES (Advanced Encryption Standard)

มาตรฐานการเข้ารหัสปัจจุบัน (FIPS 197, 2001) พัฒนาโดย Joan Daemen & Vincent Rijmen (Rijndael) แทนที่ DES

คุณสมบัติหลัก

คุณสมบัติค่า
Block Size128 บิต (16 ไบต์)
Key Size128, 192, 256 บิต
Rounds10, 12, 14 (ขึ้นกับขนาดกุญแจ)
StructureSubstitution-Permutation Network (SPN) ไม่ใช่ Feistel
OperationsSubBytes, ShiftRows, MixColumns, AddRoundKey (ทั้งหมดใน GF(2⁸))

โครงสร้างรอบ (Round Structure)

แต่ละรอบ (ยกเว้นรอบสุดท้าย) มี 4 ขั้นตอน:

  1. SubBytes: S-box 16×16 แทนที่ไบต์แต่ละตัว (Non-linear, Confusion)
  2. ShiftRows: เลื่อนแถวของ State Matrix (Permutation, Diffusion)
  3. MixColumns: คูณเมทริกซ์ใน GF(2⁸) ผสมคอลัมน์ (Diffusion)
  4. AddRoundKey: XOR กับ Round Key (Key-dependent)

รอบสุดท้าย: ไม่มี MixColumns

เริ่มต้น: AddRoundKey (Pre-round) → 9/11/13 รอบเต็ม → รอบสุดท้าย

Key Expansion

  • กุญแจ 128/192/256 บิต → ขยายเป็น 44/52/60 Words (32 บิต/Word)
  • ใช้ RotWord, SubWord, Rcon (Round Constants)
  • ทน Related-Key Attacks ดีกว่า DES/Blowfish

การถอดรหัส (Decryption)

  • ใช้ Inverse Operations: InvSubBytes, InvShiftRows, InvMixColumns, AddRoundKey
  • ลำดับ Round Keys ย้อนกลับ
  • สามารถทำ Equivalent Inverse Cipher ได้ (ลำดับขั้นตอนเหมือนเข้ารหัส แต่ Round Keys แปลงแล้ว)

โหมดการทำงานที่แนะนำ

  • AES-GCM (Galois/Counter Mode): AEAD (Authenticated Encryption with Associated Data) - เร็ว, ขนานได้, มาตรฐาน TLS 1.3
  • AES-CCM: AEAD สำหรับ Constraint Devices (IoT)
  • AES-CTR: Stream-like, ต้องการ MAC แยก (HMAC)
  • ห้ามใช้ ECB (ไม่ปลอดภัย), CBC (ต้องมี Padding, ช้า, Padding Oracle)

สถานะความปลอดภัย

  • ไม่มีการโจมตี Practical 对 AES (Related-key, Biclique ลดเล็กน้อย ไม่เป็นอันตราย)
  • Quantum: Grover's Algorithm ลดความแข็งแกร่งครึ่งหนึ่ง (AES-128 → 64 บิต, AES-256 → 128 บิต) → ใช้ AES-256 สำหรับ Post-Quantum
  • Side-channels: ต้องใช้ Constant-time / Masking / AES-NI