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

Feistel Cipher ในความปลอดภัยของข้อมูลคืออะไร?


รหัส Feistel เป็นแนวทางการเข้ารหัสที่ใช้ในการสร้างอัลกอริธึมและโครงสร้างแบบเข้ารหัสบล็อก เครือข่าย Feistel ใช้ลำดับของการเข้ารหัสแบบวนซ้ำบนบล็อกข้อมูล และมักได้รับการออกแบบสำหรับบล็อกไซเฟอร์ที่เข้ารหัสข้อมูลปริมาณมหาศาล

เครือข่าย Feistel ทำงานโดยแยกบล็อคข้อมูลออกเป็นสองส่วนเท่าๆ กัน และใช้การเข้ารหัสหลายรอบ แต่ละรอบจะใช้การเรียงสับเปลี่ยนและลำดับที่ได้มาจากฟังก์ชันหลักหรือคีย์ จำนวนรอบเปลี่ยนไปสำหรับแต่ละรหัสที่ใช้เครือข่าย Feistel

รหัส Feistel เป็นรหัสแบบหลายรอบที่แบ่งสถานะส่วนตัวปัจจุบันของรหัสออกเป็นสองส่วน และทำงานเฉพาะส่วนในแต่ละรอบของการเข้ารหัสหรือถอดรหัส

Feistel เสนอว่าสามารถประมาณ Conceptual block cipher โดยใช้แนวคิดของ product cipher ซึ่งเป็นการดำเนินการของ ciphers อย่างง่ายสองตัวขึ้นไปตามลำดับในวิธีการที่ผลลัพธ์สุดท้ายหรือผลิตภัณฑ์มีการเข้ารหัสที่ดีกว่าการเข้ารหัสส่วนประกอบใด ๆ .

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

Feistel เสนอการใช้รหัสที่สลับการแทนที่และการเรียงสับเปลี่ยน โดยวิธีการเหล่านี้มีการกำหนดดังนี้ -

การทดแทน - ส่วนประกอบข้อความธรรมดาหรือชุดของส่วนประกอบแต่ละชุดได้รับการคืนค่าโดยไม่ซ้ำกันโดยส่วนประกอบข้อความเข้ารหัสที่สอดคล้องกันหรือชุดของส่วนประกอบ

การเรียงสับเปลี่ยน - ลำดับขององค์ประกอบข้อความธรรมดาจะถูกบันทึกใหม่โดยการเปลี่ยนลำดับของคำสั่งนั้น กล่าวคือไม่มีการแทรกหรือนำองค์ประกอบออกหรือแทนที่ในลำดับ แทนที่จะเปลี่ยนลำดับที่องค์ประกอบปรากฏในลำดับจะเปลี่ยนไป

รหัส Feistel เรียกว่ากำหนดการสำคัญที่อำนวยความสะดวกในการป้อนข้อมูลในแต่ละรอบของตัวเลข มีสองตัวเลือกสำหรับกำหนดการที่สำคัญ

ประการแรกคือกุญแจสำหรับแต่ละรอบของรหัสลับ (หรือ "กุญแจกลม") นั้นอยู่ในรหัสลับที่ทั้งสองฝ่ายร่วมกัน (ส่งผลให้เป็นรหัสลับที่มีการแบ่งปันระดับสูง)

อีกทางเลือกหนึ่งคือคีย์ลับที่ใช้ร่วมกันถูกใช้เป็นอินพุตของฟังก์ชัน "การขยายคีย์" ซึ่งใช้การดำเนินการบางอย่างกับคีย์รอบก่อนหน้าหรือสถานะภายในปัจจุบันของอัลกอริธึมการสร้างคีย์เพื่อสร้างคีย์รอบถัดไป

ฟังก์ชัน K จะแปลงคีย์ลับเดิมให้เป็นคีย์กลมสำหรับการเข้ารหัสแต่ละรอบ ควรเลือกฟังก์ชันนี้เพื่อรองรับพื้นที่คีย์ของฟังก์ชันการเข้ารหัส

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