อ่าน 4 นาที
รหัสลับเฟสเทล
ใน วิทยาการเข้ารหัส ลับ รหัส Feistel (หรือที่รู้จักกันในชื่อ รหัสบล็อก Luby–Rackoff ) คือ โครงสร้างสมมาตร ที่ใช้ในการสร้าง รหัสบล็อก ตั้งชื่อตาม นักฟิสิกส์ และนักเข้ารหัสลับชาว...
รหัสลับเฟสเทล

ในวิทยาการเข้ารหัสลับรหัส Feistel (หรือที่รู้จักกันในชื่อรหัสบล็อก Luby–Rackoff ) คือโครงสร้างสมมาตรที่ใช้ในการสร้างรหัสบล็อกตั้งชื่อตามนักฟิสิกส์และนักเข้ารหัสลับชาวเยอรมันHorst Feistelผู้ทำการวิจัยบุกเบิกขณะทำงานให้กับIBMและโดยทั่วไปรู้จักกันในชื่อเครือข่าย Feistel รหัสบล็อกจำนวนมากใช้รูปแบบนี้ รวมถึงมาตรฐานการเข้ารหัสข้อมูลของสหรัฐอเมริกา (US Data Encryption Standard ) GOSTของโซเวียต/รัสเซีย (หรือที่รู้จักกันในชื่อ Magma) และรหัส BlowfishและTwofish ที่ใช้ กันในปัจจุบันในรหัส Feistel การเข้ารหัสและการถอดรหัสเป็นกระบวนการที่คล้ายคลึงกันมาก และทั้งสองประกอบด้วยการเรียกใช้ฟังก์ชันที่เรียกว่า " ฟังก์ชันรอบ " ซ้ำๆ เป็นจำนวนครั้งคงที่
ประวัติศาสตร์
รหัสลับแบบบล็อกสมมาตรสมัยใหม่จำนวนมากใช้โครงสร้างเครือข่าย Feistel เป็นพื้นฐาน เครือข่าย Feistel ถูกนำมาใช้ในเชิงพาณิชย์ครั้งแรกใน รหัส Lucifer ของ IBM ซึ่งออกแบบโดยHorst FeistelและDon Coppersmithในปี 1973 เครือข่าย Feistel ได้รับการยอมรับมากขึ้นเมื่อรัฐบาลกลางสหรัฐฯ นำDES (รหัสลับที่ใช้ Lucifer เป็นพื้นฐาน โดยมีการปรับเปลี่ยนโดยNSA ) มาใช้ในปี 1976 เช่นเดียวกับส่วนประกอบอื่นๆ ของ DES ลักษณะการทำงานแบบวนซ้ำของโครงสร้าง Feistel ทำให้การนำระบบเข้ารหัสไปใช้ในฮาร์ดแวร์ทำได้ง่ายขึ้น (โดยเฉพาะอย่างยิ่งบนฮาร์ดแวร์ที่มีอยู่ในขณะที่ออกแบบ DES)
ออกแบบ
เครือข่าย Feistel ใช้ฟังก์ชันรอบซึ่งเป็นฟังก์ชันที่รับอินพุตสองตัว ได้แก่ บล็อกข้อมูลและคีย์ย่อย และส่งคืนเอาต์พุตหนึ่งตัวที่มีขนาดเท่ากับบล็อกข้อมูล[ 1 ]ในแต่ละรอบ ฟังก์ชันรอบจะถูกเรียกใช้กับข้อมูลครึ่งหนึ่งที่จะเข้ารหัส และเอาต์พุตของฟังก์ชันรอบจะถูก XOR กับข้อมูลอีกครึ่งหนึ่ง กระบวนการนี้จะทำซ้ำตามจำนวนครั้งที่กำหนด และเอาต์พุตสุดท้ายคือข้อมูลที่เข้ารหัส ข้อได้เปรียบที่สำคัญของเครือข่าย Feistel เมื่อเทียบกับการออกแบบการเข้ารหัสแบบอื่น เช่น เครือข่ายการแทนที่และการเรียงสับเปลี่ยน (เครือข่าย SP) คือ การดำเนินการทั้งหมดรับประกันว่าสามารถย้อนกลับได้ (นั่นคือ ข้อมูลที่เข้ารหัสสามารถถอดรหัสได้) แม้ว่าฟังก์ชันรอบเองจะไม่สามารถย้อนกลับได้ก็ตาม ฟังก์ชันรอบสามารถทำให้ซับซ้อนได้ตามต้องการ เนื่องจากไม่จำเป็นต้องออกแบบให้สามารถย้อนกลับได้[ 2 ] : 465 [ 3 ] : 347 ยิ่งไปกว่านั้นการเข้ารหัสและการถอดรหัสมีความคล้ายคลึงกันมาก แม้กระทั่งเหมือนกันในบางกรณี โดยต้องการเพียงแค่การกลับลำดับคีย์ เท่านั้น ดังนั้น ขนาดของโค้ดหรือวงจรที่จำเป็นในการใช้งานการเข้ารหัสแบบนี้จึงลดลงเกือบครึ่งหนึ่ง ต่างจากเครือข่าย SP เครือข่าย Feistel ยังไม่ขึ้นอยู่กับกล่องทดแทนที่อาจทำให้เกิดช่องทางด้านข้างของเวลาในการใช้งานซอฟต์แวร์
งานเชิงทฤษฎี
โครงสร้างและคุณสมบัติของรหัส Feistel ได้รับการวิเคราะห์อย่างละเอียดโดยนักเข้ารหัสลับ
Michael LubyและCharles Rackoffได้วิเคราะห์การสร้างรหัส Feistel และพิสูจน์ว่าหากฟังก์ชันรอบเป็นฟังก์ชันสุ่มเทียมที่มีความปลอดภัยทางการเข้ารหัสลับโดย ใช้ K iเป็นเมล็ดพันธุ์แล้ว 3 รอบก็เพียงพอที่จะทำให้รหัสบล็อกเป็นการเรียงสับเปลี่ยนแบบสุ่มเทียมในขณะที่ 4 รอบก็เพียงพอที่จะทำให้เป็นการเรียงสับเปลี่ยนแบบสุ่มเทียมที่ "แข็งแกร่ง" (ซึ่งหมายความว่ายังคงเป็นแบบสุ่มเทียมแม้กระทั่งกับศัตรูที่เข้าถึงออราเคิลของการเรียงสับเปลี่ยนผกผัน) [ 4 ]เนื่องจากผลลัพธ์ที่สำคัญมากของ Luby และ Rackoff นี้ รหัส Feistel จึงบางครั้งเรียกว่ารหัสบล็อก Luby–Rackoff
งานทางทฤษฎีเพิ่มเติมได้ขยายโครงสร้างออกไปบ้างและให้ขอบเขตที่แม่นยำยิ่งขึ้นสำหรับความปลอดภัย[ 5 ] [ 6 ]
รายละเอียดการก่อสร้าง
ให้เป็นฟังก์ชันรอบ และให้เป็นคีย์ย่อยสำหรับแต่ละรอบตามลำดับ
ขั้นตอนการทำงานพื้นฐานมีดังนี้:
แบ่งบล็อกข้อความธรรมดาออกเป็นสองส่วนเท่าๆ กัน: ( , )
สำหรับแต่ละรอบให้คำนวณ
โดยที่XORหมายถึงผลลัพธ์ของการเข้ารหัส ดังนั้นข้อความที่เข้ารหัสแล้วคือ
การถอดรหัสข้อความที่เข้ารหัสจะทำได้โดยการคำนวณหาค่า
จากนั้นก็เป็นข้อความธรรมดาอีกครั้ง
แผนภาพนี้แสดงทั้งการเข้ารหัสและการถอดรหัส โปรดสังเกตการสลับลำดับของคีย์ย่อยสำหรับการถอดรหัส นี่คือความแตกต่างเพียงอย่างเดียวระหว่างการเข้ารหัสและการถอดรหัส
รหัส Feistel ที่ไม่สมดุล
รหัส Feistel ที่ไม่สมดุลใช้โครงสร้างที่ดัดแปลงซึ่งและไม่ได้มีความยาวเท่ากัน[ 7 ]รหัสSkipjackเป็นตัวอย่างของรหัสดังกล่าวตัวส่งสัญญาณลายเซ็นดิจิทัล ของ Texas Instrumentsใช้รหัส Feistel ที่ไม่สมดุลที่เป็นกรรมสิทธิ์เพื่อทำการตรวจสอบความถูกต้องแบบท้าทาย-ตอบสนอง[ 8 ]
การสับเปลี่ยนของ Thorpเป็นกรณีสุดขั้วของการเข้ารหัส Feistel ที่ไม่สมดุลซึ่งด้านหนึ่งเป็นบิตเดียว การเข้ารหัสนี้มีความปลอดภัยที่พิสูจน์ได้ดีกว่าการเข้ารหัส Feistel ที่สมดุล แต่ต้องใช้รอบมากกว่า[ 9 ]
มีเครือข่าย Feistel ประเภท 1, ประเภท 2 และประเภท 3 ซึ่งฟังก์ชัน Feistel มีขนาดหนึ่งในสี่ของบล็อก แต่ทำงานเป็นจำนวนครั้งที่แตกต่างกันภายในรอบเดียว[ 10 ]
การใช้งานอื่นๆ
โครงสร้าง Feistel ยังถูกนำไปใช้ในอัลกอริธึมการเข้ารหัสลับอื่นๆ นอกเหนือจากการเข้ารหัสแบบบล็อก ตัวอย่างเช่น โครงการ การเข้ารหัสแบบไม่สมมาตรที่เหมาะสมที่สุด (OAEP) ใช้เครือข่าย Feistel แบบง่ายๆ เพื่อสุ่มค่าข้อความที่เข้ารหัสในโครงการ การเข้ารหัสแบบไม่สมมาตร บางประเภท
สามารถใช้อัลกอริธึม Feistel แบบทั่วไปเพื่อสร้างการเรียงสับเปลี่ยนที่แข็งแกร่งบนโดเมนขนาดเล็กที่มีขนาดไม่เป็นกำลังสอง (ดูการเข้ารหัสแบบรักษารูปแบบ ) [ 9 ]
เครือข่าย Feistel ในฐานะองค์ประกอบการออกแบบ
ไม่ว่ารหัสทั้งหมดจะเป็นรหัส Feistel หรือไม่ก็ตาม เครือข่ายที่คล้าย Feistel สามารถนำมาใช้เป็นส่วนประกอบในการออกแบบรหัสได้ ตัวอย่างเช่นMISTY1เป็นรหัส Feistel ที่ใช้เครือข่าย Feistel สามรอบในฟังก์ชันรอบของมันSkipjackเป็นรหัส Feistel ที่ดัดแปลงโดยใช้เครือข่าย Feistel ในการเรียงสับเปลี่ยน G ของมัน และThreefish (ส่วนหนึ่งของSkein ) เป็นรหัสบล็อกที่ไม่ใช่ Feistel ซึ่งใช้ฟังก์ชัน MIX ที่คล้าย Feistel
รายชื่อรหัสลับของ Feistel
เฟสเทล หรือ เฟสเทลแบบดัดแปลง:
Feistel ทั่วไป:
ดูเพิ่มเติม
- การเข้ารหัสลับ
- การเข้ารหัสแบบสตรีม
- เครือข่ายการแทนที่-การเรียงสับเปลี่ยน
- แผนการยกกำลังสำหรับการแปลงเวฟเล็ตแบบไม่ต่อเนื่องมีโครงสร้างที่คล้ายคลึงกันมาก
- การเข้ารหัสแบบรักษารูปแบบ
- โครงการไล-แมสซีย์
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ รหัสลับเฟสเทล
ใน วิทยาการเข้ารหัส ลับ รหัส Feistel (หรือที่รู้จักกันในชื่อ รหัสบล็อก Luby–Rackoff ) คือ โครงสร้างสมมาตร ที่ใช้ในการสร้าง รหัสบล็อก ตั้งชื่อตาม นักฟิสิกส์ และนักเข้ารหัสลับชาว...
ประวัติศาสตร์
รหัสลับแบบบล็อกสมมาตรสมัยใหม่จำนวนมากใช้โครงสร้างเครือข่าย Feistel เป็นพื้นฐาน เครือข่าย Feistel ถูกนำมาใช้ในเชิงพาณิชย์ครั้งแรกใน รหัส Lucifer ของ IBM ซึ่งออกแบบโดย Horst Feistel และ Don Coppersmith ในปี 1973 เครือข่าย Feistel...
ออกแบบ
เครือข่าย Feistel ใช้ ฟังก์ชันรอบ ซึ่งเป็นฟังก์ชันที่รับอินพุตสองตัว ได้แก่ บล็อกข้อมูลและคีย์ย่อย และส่งคืนเอาต์พุตหนึ่งตัวที่มีขนาดเท่ากับบล็อกข้อมูล [ 1 ] ในแต่ละรอบ ฟังก์ชันรอบจะถูกเรียกใช้กับข้อมูลครึ่งหนึ่งที่จะเข้ารหัส และเอาต์พุตของฟังก์ชันรอบจะถูก...
งานเชิงทฤษฎี
โครงสร้างและคุณสมบัติของรหัส Feistel ได้รับการวิเคราะห์อย่างละเอียดโดย นักเข้ารหัส ลับ