Data Encryption Standard (DES) เป็นอัลกอริธึมบล็อกการเข้ารหัสที่ใช้ข้อความธรรมดาในบล็อกขนาด 64 บิต และแปลงเป็นข้อความเข้ารหัสโดยใช้คีย์ขนาด 48 บิต เป็นอัลกอริธึมคีย์สมมาตร โดยสามารถกำหนดได้ว่าสามารถใช้คีย์เดียวกันเพื่อเข้ารหัสและถอดรหัสข้อมูลได้
การออกแบบ DES ถูกคิดค้นโดย IBM ในปี 1994 มีการทดสอบบางอย่างเกี่ยวกับ DES ที่พิสูจน์แล้วว่าตรงตามองค์ประกอบที่จำเป็นบางอย่างตามที่อ้างสิทธิ์ มีการออกแบบบางอย่างที่ออกซึ่งมีดังนี้ -
กล่อง S S-Boxes เป็นขั้นตอนที่ยอมรับอินพุต 48 บิตจากการดำเนินการ XOR ที่มีคีย์บีบอัดและ RPT ที่ขยายออก และสร้างเอาต์พุต 32 บิตโดยใช้เทคนิคการแทนที่ การแทนที่จะดำเนินการโดยกล่องเปลี่ยนตัวแปดกล่อง (หรือที่เรียกว่ากล่อง S)
S-Box มีคุณสมบัติหลายประการดังนี้ −
-
รายการของแต่ละแถวเป็นการเรียงสับเปลี่ยนของค่าระหว่าง 0 ถึง 15
-
S-box ไม่เป็นเชิงเส้น กล่าวอีกนัยหนึ่ง ผลลัพธ์ไม่ใช่การเปลี่ยนแปลงรูปแบบของอินพุต
-
หากสามารถเปลี่ยนแต่ละบิตในอินพุตได้ สองบิตขึ้นไปจะถูกแปลงในเอาต์พุต
-
หากอินพุตสองตัวของ S-box ต่างกันในสองบิตกลางเท่านั้น (บิต 3 และ 4) เอาต์พุตควรต่างกันในบางส่วนสองบิต กล่าวอีกนัยหนึ่ง S(x) และ S(x ⊕ 001100) จะต้องแตกต่างกันในบางส่วนสองบิต โดยที่ x คืออินพุต และ S(x) คือเอาต์พุต
-
หากอินพุตสองตัวของ S-box ต่างกันในสองบิตแรก (บิต 1 และ 2) และเหมือนกันในสองบิตสุดท้าย (5 และ 6) เอาต์พุตทั้งสองควรต่างกัน กล่าวอีกนัยหนึ่ง จำเป็นต้องมีความสัมพันธ์ดังต่อไปนี้ S(x) ≠ S(x ⊕ 11bc00) ซึ่ง b และ c เป็นบิตตามอำเภอใจ
กล่อง D − D-box คือกล่องเรียงสับเปลี่ยนที่มีคุณสมบัติคล้ายกับรหัสการเคลื่อนย้ายแบบดั้งเดิม D-Box มีคุณสมบัติดังต่อไปนี้ −
-
อินพุต S-box แต่ละรายการจะปรากฏขึ้นจากเอาต์พุตของ S-box ที่ต่างกัน (ในรอบก่อนหน้า)
-
ไม่มีอินพุตไปยังกล่อง S ที่กำหนดปรากฏขึ้นจากเอาต์พุตจากกล่องที่คล้ายกัน (ในรอบก่อนหน้า)
-
เอาต์พุตสี่รายการจาก S-box แต่ละรายการจะไปที่ S-box ที่แตกต่างกัน 6 รายการ (ในรอบถัดไป)
-
ไม่มีเอาต์พุตบิตสองบิตจาก S-box ไปที่ S-box เดียวกัน (ในรอบถัดไป)
-
สำหรับแต่ละ S-box บิตเอาต์พุตทั้งสองจะไปที่สองบิตแรกหรือสองบิตสุดท้ายของ S-box ในรอบถัดไป อีกสองบิตเอาท์พุตแสดงบิตตรงกลางของกล่อง S ในรอบต่อมา
จำนวนรอบ − DES ใช้รหัส Feistel สิบหกรอบ มีการพิสูจน์แล้วว่าหลังจากแปดรอบ แต่ละ ciphertext เป็นฟังก์ชันของทุกบิตข้อความธรรมดาและทุกคีย์บิต ไซเฟอร์เท็กซ์เป็นฟังก์ชันสุ่มอย่างเข้มข้นของข้อความธรรมดาและข้อความไซเฟอร์ ดังนั้นดูเหมือนว่าแปดรอบน่าจะเพียงพอ