ความปลอดภัยของรหัสบล็อกมีรากฐานมาจากการใช้การดำเนินการสับสนและแพร่กระจายซ้ำๆ แนวคิดนี้ได้รับการทำให้เป็นทางการครั้งแรกโดย Claude Shannon ในงานสำคัญของเขาเกี่ยวกับทฤษฎีการสื่อสารของระบบความลับ ซึ่งเขาได้ระบุถึงความจำเป็นของทั้งความสับสนและแพร่กระจายในระบบการเข้ารหัสเพื่อขัดขวางการโจมตีทางสถิติและโครงสร้าง การทำความเข้าใจว่าเหตุใดจึงต้องดำเนินการหลายรอบและการดำเนินการเหล่านี้มีความสัมพันธ์กันอย่างไรนั้นถือเป็นสิ่งสำคัญในการประเมินการออกแบบและความปลอดภัยของรหัสบล็อกสมัยใหม่ เช่น มาตรฐานการเข้ารหัสข้อมูล (DES) และมาตรฐานการเข้ารหัสขั้นสูง (AES)
ความสับสนและการแพร่กระจาย: คำจำกัดความและบทบาท
ความสับสนพยายามทำให้ความสัมพันธ์ระหว่างข้อความเข้ารหัสและคีย์มีความซับซ้อนมากที่สุด โดยทำได้โดยการปกปิดโครงสร้างทางสถิติของข้อความธรรมดา โดยมักจะใช้การแทนที่แบบไม่เชิงเส้น (เช่น S-box ใน DES และ AES) ยิ่งการแมปนี้ไม่เชิงเส้นและซับซ้อนมากเท่าไร ผู้โจมตีก็จะยิ่งหาข้อมูลเกี่ยวกับคีย์ได้ยากขึ้นเท่านั้น แม้จะได้รับอนุญาตให้เข้าถึงคู่ข้อความธรรมดาและข้อความเข้ารหัสหลายคู่ก็ตาม
ในทางกลับกัน การแพร่กระจายมีจุดมุ่งหมายเพื่อกระจายอิทธิพลของบิตข้อความธรรมดาแต่ละบิตไปยังบิตข้อความเข้ารหัสจำนวนมาก ดังนั้นการเปลี่ยนแปลงในบิตอินพุตเพียงบิตเดียวจะส่งผลให้เกิดการเปลี่ยนแปลงในบิตเอาต์พุตจำนวนมาก คุณสมบัตินี้ช่วยให้มั่นใจว่าคุณสมบัติทางสถิติของข้อความธรรมดาจะกระจายไปในข้อความเข้ารหัส ทำให้ผู้โจมตีไม่สามารถใช้ประโยชน์จากรูปแบบต่างๆ ผ่านการวิเคราะห์ความถี่หรือเทคนิคที่คล้ายคลึงกันได้ โดยทั่วไปการแพร่กระจายจะทำได้ผ่านการดำเนินการผสมเชิงเส้น เช่น การสับเปลี่ยน XOR ตามบิต หรือการคูณเมทริกซ์ (เช่นเดียวกับการดำเนินการ MixColumns ของ AES)
โครงสร้างของรหัสบล็อกแบบวนซ้ำ
รหัสบล็อกส่วนใหญ่มีโครงสร้างเป็นรหัสแบบวนซ้ำ ซึ่งหมายความว่ารหัสเหล่านี้จะใช้ฟังก์ชันการปัดเศษแบบง่ายๆ หลายครั้งเพื่อให้ได้ระดับความปลอดภัยสูง โดยทั่วไปแล้ว ฟังก์ชันการปัดเศษจะรวมเอาทั้งความสับสน (เช่น ผ่านแอปพลิเคชัน S-box) และการแพร่กระจาย (เช่น ผ่านขั้นตอนการสับเปลี่ยนหรือการผสม) เหตุผลเบื้องหลังการใช้หลายรอบก็คือ การใช้ความสับสนและการแพร่กระจายเพียงครั้งเดียวไม่เพียงพอที่จะบดบังความสัมพันธ์เชิงโครงสร้างทั้งหมดระหว่างข้อความธรรมดา ข้อความเข้ารหัส และคีย์ แต่ละรอบจะเพิ่มความซับซ้อนของความสัมพันธ์เหล่านี้ขึ้นทีละน้อย และหลังจากผ่านไปหลายรอบแล้ว รหัสจึงจะบรรลุระดับความปลอดภัยที่ต้องการต่อการโจมตีด้วยการเข้ารหัสที่ทราบ
ตัวอย่างเช่น หากพิจารณาการเข้ารหัส AES รอบการเข้ารหัสแต่ละรอบจะประกอบด้วยขั้นตอนสำคัญต่อไปนี้:
1. ซับไบต์ (ความสับสน): ไบต์แต่ละไบต์ในเมทริกซ์สถานะจะถูกแทนที่ด้วยไบต์อื่นตาม S-box ที่ไม่เชิงเส้นคงที่ ทำให้เกิดความไม่เชิงเส้น
2. ShiftRows (การแพร่กระจาย): แถวของเมทริกซ์สถานะจะถูกเลื่อนแบบเป็นรอบ โดยย้ายไบต์ไปยังคอลัมน์อื่น และอำนวยความสะดวกในการผสมผสานค่าต่างๆ
3. MixColumns (การแพร่กระจาย): คอลัมน์ของสถานะจะถูกผสมโดยใช้การคูณเมทริกซ์ในฟิลด์จำกัด ทำให้อิทธิพลของไบต์อินพุตแต่ละตัวแพร่กระจายมากขึ้น
4. AddRoundKey (ความสับสน): เมทริกซ์สถานะจะรวมกับคีย์ย่อยที่ได้มาจากคีย์หลัก ซึ่งจะทำให้มีการอ้างอิงคีย์ในทุก ๆ รอบ
ประสิทธิภาพของการเข้ารหัสนั้นไม่เพียงแต่ขึ้นอยู่กับความแข็งแกร่งของการดำเนินการแต่ละรายการเท่านั้น แต่ยังขึ้นอยู่กับจำนวนครั้งที่ดำเนินการเหล่านี้ด้วย นักวิเคราะห์การเข้ารหัสได้แสดงให้เห็นว่าการลดจำนวนรอบในการเข้ารหัส เช่น AES หรือ DES สามารถทำให้การเข้ารหัสนั้นเสี่ยงต่อการโจมตี เช่น การวิเคราะห์เชิงอนุพันธ์และเชิงเส้น ตัวอย่างเช่น ในขณะที่ AES-128 เวอร์ชันเต็มใช้ 10 รอบ เวอร์ชันที่มีเพียง 6 รอบก็เสี่ยงต่อเทคนิคการวิเคราะห์เชิงรหัสบางประเภทได้
ความจำเป็นของหลายรอบ
เพื่อชี้แจงเพิ่มเติม ให้พิจารณาว่าจะเกิดอะไรขึ้นหากใช้ความสับสนและการแพร่กระจายเพียงรอบเดียว แม้ว่าจะมีการใช้ S-box ที่แข็งแกร่งและเลเยอร์การผสม แต่ความสัมพันธ์และรูปแบบทางสถิติอาจยังคงอยู่ ผู้โจมตีสามารถใช้ประโยชน์จากรูปแบบที่เหลือเหล่านี้โดยใช้การโจมตีแบบเลือกข้อความธรรมดาหรือแบบรู้ข้อความธรรมดา การดำเนินการหลายรอบทำให้แน่ใจได้ว่าอิทธิพลของคีย์และบิตข้อความธรรมดาแต่ละบิตจะกระจายไปทั่วข้อความเข้ารหัสทั้งหมด ทำให้ไม่สามารถโจมตีในลักษณะดังกล่าวได้
แนวคิดของ "เอฟเฟกต์หิมะถล่ม" ถือเป็นหัวใจสำคัญที่นี่ การเข้ารหัสที่แข็งแกร่งช่วยให้มั่นใจได้ว่าการเปลี่ยนแปลงเล็กน้อยในข้อความธรรมดา (เช่น การพลิกบิตเดียว) จะส่งผลให้บิตของข้อความเข้ารหัสประมาณครึ่งหนึ่งเปลี่ยนแปลงไป และคุณสมบัตินี้จะเกิดขึ้นได้ก็ต่อเมื่อเกิดความสับสนและแพร่กระจายหลายรอบเท่านั้น โครงสร้างแบบวนซ้ำของการเข้ารหัสแบบบล็อกสมัยใหม่ได้รับการออกแบบมาโดยเฉพาะเพื่อขยายเอฟเฟกต์นี้ ทำให้การเข้ารหัสมีความทนทานต่อการโจมตีที่อาศัยการติดตามความสัมพันธ์ระหว่างอินพุตและเอาต์พุต
ตัวอย่าง: DES และ AES
รหัส DES ในอดีตแสดงให้เห็นหลักการนี้ได้เป็นอย่างดี DES ใช้ 16 รอบในโครงสร้างเครือข่าย Feistel โดยแต่ละรอบประกอบด้วยการขยาย การแทนที่ S-box (ความสับสน) และการสับเปลี่ยน (การแพร่กระจาย) การวิเคราะห์รหัสอย่างละเอียดแสดงให้เห็นว่าการใช้น้อยกว่า 16 รอบจะทำให้เกิดจุดอ่อน การวิเคราะห์รหัสเชิงอนุพันธ์มีประสิทธิภาพกับเวอร์ชันที่มีรอบน้อยกว่า นักออกแบบเลือกใช้ 16 รอบเพื่อให้มีระยะขอบที่ปลอดภัยต่อความก้าวหน้าในการวิเคราะห์รหัส ซึ่งเน้นย้ำถึงความสำคัญของการทำซ้ำหลายครั้ง
AES ซึ่งได้รับการออกแบบมาหลายทศวรรษต่อมา จะใช้ 10, 12 หรือ 14 รอบ ขึ้นอยู่กับขนาดคีย์ (128, 192 หรือ 256 บิต ตามลำดับ) แต่ละรอบจะรวมเอฟเฟกต์รวมของความสับสนและการแพร่กระจายผ่านขั้นตอน SubBytes, ShiftRows และ MixColumns จำนวนรอบได้รับการเลือกอย่างระมัดระวังโดยอิงจากผลการวิเคราะห์การเข้ารหัสเพื่อสร้างสมดุลระหว่างความปลอดภัยและประสิทธิภาพ
โหมดการทำงานและความสัมพันธ์
ในขณะที่ความปลอดภัยภายในของรหัสบล็อกนั้นถูกกำหนดโดยความสับสนและการแพร่กระจายซ้ำๆ กัน โหมดการทำงาน (เช่น ECB, CBC, CFB, OFB, CTR) จะกำหนดว่ารหัสบล็อกจะถูกนำไปใช้กับข้อมูลที่มีขนาดใหญ่กว่าบล็อกเดียวอย่างไร คุณสมบัติด้านความปลอดภัยของรหัสบล็อกในโหมดที่กำหนดนั้นขึ้นอยู่กับความต้านทานการโจมตีของรหัสบล็อกเป็นหลัก ซึ่งในทางกลับกันจะเป็นฟังก์ชันของความสับสนและการแพร่กระจายที่เกิดขึ้นอย่างทั่วถึงในหลายรอบ หากรหัสบล็อกพื้นฐานนั้นอ่อนแอ (เช่น มีรอบน้อยเกินไป) โหมดการทำงานใดๆ ก็ไม่สามารถชดเชยข้อบกพร่องนี้ได้
การโจมตีและรอบการเข้ารหัส
การโจมตีด้วยการเข้ารหัสหลายครั้งใช้ประโยชน์จากความสับสนและการแพร่กระจายที่ไม่เพียงพอในรหัสบล็อก ตัวอย่างเช่น การวิเคราะห์การเข้ารหัสเชิงอนุพันธ์จะศึกษาว่าความแตกต่างของข้อความธรรมดาส่งผลต่อความแตกต่างของข้อความเข้ารหัสที่เกิดขึ้นอย่างไร หากรหัสเข้ารหัสไม่สามารถกระจายความแตกต่างของอินพุตได้เพียงพอ ผู้โจมตีสามารถทำนายได้ว่าความแตกต่างเหล่านั้นแพร่กระจายอย่างไร และใช้ความรู้ดังกล่าวเพื่อกู้คืนคีย์ ในทำนองเดียวกัน การวิเคราะห์การเข้ารหัสเชิงเส้นจะค้นหาการประมาณเชิงเส้นระหว่างบิตข้อความธรรมดา ข้อความเข้ารหัส และคีย์ ประสิทธิภาพของการโจมตีเหล่านี้จะลดลงเมื่อจำนวนรอบเพิ่มขึ้น โดยต้องให้แต่ละรอบใช้การสร้างความสับสนและการแพร่กระจายอย่างมีประสิทธิภาพ
เพื่อยกตัวอย่าง DES ที่มี 8 รอบ (ครึ่งหนึ่งของจำนวนมาตรฐาน) จะอ่อนไหวต่อการวิเคราะห์เชิงอนุพันธ์ แต่ด้วย 16 รอบ ความน่าจะเป็นในการเผยแพร่เส้นทางเชิงอนุพันธ์ที่มีประโยชน์ในทุกรอบจะกลายเป็นเรื่องเล็กน้อย สิ่งนี้แสดงให้เห็นว่าโครงสร้างแบบวนซ้ำ และโดยเฉพาะอย่างยิ่งจำนวนรอบ มีความสำคัญพื้นฐานต่อการบรรลุความปลอดภัยในทางปฏิบัติ
การแลกเปลี่ยนการออกแบบ
นักออกแบบการเข้ารหัสจะต้องพิจารณาจำนวนรอบให้สมดุลกับข้อกำหนดด้านประสิทธิภาพ โดยทั่วไป จำนวนรอบที่มากขึ้นหมายถึงความปลอดภัยที่มากขึ้น แต่ต้นทุนการคำนวณที่มากขึ้นก็เช่นกัน โดยทั่วไป จำนวนรอบจะถูกเลือกเพื่อให้มีระยะขอบด้านความปลอดภัยสูงกว่าการโจมตีที่เป็นที่รู้จักมากที่สุดในเวลาออกแบบ โดยคาดว่าความก้าวหน้าในอนาคตในการวิเคราะห์การเข้ารหัสอาจทำให้ระยะขอบนี้ลดลง แนวทางที่อนุรักษ์นิยมนี้ช่วยให้มั่นใจได้ว่าการเข้ารหัสจะยังคงปลอดภัยตลอดอายุการใช้งานที่คาดไว้
การอ้างเหตุผลทางคณิตศาสตร์
จากมุมมองทางทฤษฎี การออกแบบรหัสบล็อกแบบวนซ้ำสามารถมองได้ผ่านมุมมองของแบบจำลอง "รหัสผลคูณแบบวนซ้ำ" ภายใต้สมมติฐานบางประการ ได้มีการแสดงให้เห็นว่าการสร้างรหัสที่อ่อนแอหลายรหัส (ซึ่งแต่ละรหัสใช้ความสับสนและ/หรือการแพร่กระจายที่อ่อนแอ) สามารถสร้างรหัสโดยรวมที่แข็งแกร่งได้ โดยต้องให้ส่วนประกอบต่างๆ เป็นอิสระเพียงพอและจำนวนรอบต้องมาก ซึ่งสิ่งนี้แสดงให้เห็นถึงแนวทางการวนซ้ำในการสร้างความสับสนและการแพร่กระจายในการออกแบบรหัสในทางปฏิบัติ
ตัวอย่างการปฏิบัติ
ตัวอย่างที่เป็นประโยชน์คือโครงสร้างเครือข่ายการแทนที่-การเรียงสับเปลี่ยน (SPN) ซึ่งใช้โดย AES ใน SPN ข้อความธรรมดาจะถูกสลับชั้นของการแทนที่ (ความสับสน) และการเรียงสับเปลี่ยน (การแพร่กระจาย) หลังจากผ่านไปหลายรอบ บิตเอาต์พุตแต่ละบิตจะขึ้นอยู่กับบิตอินพุตแต่ละบิตในลักษณะที่ไม่เป็นเชิงเส้นอย่างมาก คุณสมบัตินี้ไม่ได้เกิดขึ้นจากรอบเดียว แต่เป็นผลสะสมจากหลายรอบที่ทำให้มั่นใจได้ว่าบิตทุกบิตของข้อความเข้ารหัสเป็นฟังก์ชันที่ซับซ้อนของบิตทุกบิตของข้อความธรรมดาและคีย์ ซึ่งเป็นคุณสมบัติที่เรียกว่าการแพร่กระจายอย่างสมบูรณ์
เครือข่าย Feistel ซึ่งใช้ใน DES ประสบความสำเร็จในการรักษาความปลอดภัยที่คล้ายคลึงกันด้วยการใช้ฟังก์ชันรอบซ้ำๆ ที่รวมการแทนที่และการสับเปลี่ยน โดยเอาต์พุตของแต่ละรอบจะป้อนไปยังรอบถัดไป ความปลอดภัยของโครงสร้างดังกล่าวจะเพิ่มขึ้นแบบเลขชี้กำลังตามจำนวนรอบ โดยถือว่าฟังก์ชันรอบนั้นไม่สามารถย้อนกลับหรือเป็นเชิงเส้นได้อย่างง่ายดาย
บทสรุป: การพึ่งพาความปลอดภัยในการวนซ้ำ
ความแข็งแกร่งของการเข้ารหัสแบบบล็อกนั้นเชื่อมโยงอย่างซับซ้อนกับการใช้การดำเนินการสับสนและการแพร่กระจายซ้ำๆ การเข้ารหัสสมัยใหม่ได้รับการออกแบบด้วยจำนวนรอบที่เพียงพอเพื่อให้แน่ใจว่าความสัมพันธ์ทางสถิติที่เหลือจากข้อความธรรมดาหรือคีย์จะถูกกำจัด และแต่ละบิตของข้อความเข้ารหัสจะได้รับอิทธิพลจากทุกบิตของข้อความธรรมดาและคีย์ กระบวนการแบบวนซ้ำนี้ไม่ใช่เพียงแค่รายละเอียดการใช้งานเท่านั้น แต่ยังเป็นหลักการพื้นฐานของการรักษาความปลอดภัยการเข้ารหัส จำนวนรอบจะถูกเลือกโดยพิจารณาจากการวิเคราะห์การเข้ารหัสอย่างละเอียดเพื่อให้มีขอบเขตความปลอดภัย และจะได้รับการประเมินใหม่เป็นระยะๆ เมื่อมีการโจมตีใหม่ๆ เกิดขึ้น ในทางปฏิบัติและในเชิงทฤษฎี ความปลอดภัยของการเข้ารหัสแบบบล็อกนั้นขึ้นอยู่กับการรวมการดำเนินการสับสนและการแพร่กระจายหลายครั้ง
คำถามและคำตอบล่าสุดอื่น ๆ เกี่ยวกับ การประยุกต์ใช้บล็อกไซเฟอร์:
- ตามที่แชนนอนกล่าว รหัสบล็อกควรมีอะไรบ้าง?
- การแพร่กระจายหมายถึงการที่บิตข้อมูลเข้ารหัสชิ้นเดียวได้รับอิทธิพลจากบิตข้อมูลธรรมดาจำนวนมากใช่หรือไม่?
- โหมด ECB แบ่งข้อความธรรมดาอินพุตขนาดใหญ่ออกเป็นบล็อกถัดไปหรือไม่
- เราสามารถใช้ block cipher เพื่อสร้างฟังก์ชันแฮชหรือ MAC ได้หรือไม่?
- โหมด OFB สามารถใช้เป็นตัวสร้างคีย์สตรีมได้หรือไม่
- การเข้ารหัสสามารถกำหนดได้หรือไม่?
- โหมดการทำงานมีอะไรบ้าง?
- โหมด ECB ทำอะไรกับรหัสบล็อกแบบง่าย
- PSRNG สามารถสร้างโดยบล็อคไซเฟอร์ได้หรือไม่?
- MAC สามารถสร้างด้วยบล็อคไซเฟอร์ได้หรือไม่
ดูคำถามและคำตอบเพิ่มเติมในแอปพลิเคชันของบล็อกยันต์

