แปลงภาพถ่าย แปลงและปรับขนาดรูปภาพฟรีจาก DVDVideoSoft เพิ่มไฟล์ที่จะแปลง

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

ในการใช้อัลกอริธึม DES เพื่อแก้ไขปัญหาการเข้ารหัสที่หลากหลาย จึงได้มีการพัฒนาโหมดการทำงานสี่โหมด:

·อิเล็กทรอนิกส์ หนังสือรหัส ECB (สมุดรหัสอิเล็กทรอนิกส์);

·การต่อบล็อกการเข้ารหัส CBC (Cipher Block Chaining)

· ข้อเสนอแนะโดยไซเฟอร์เท็กซ์ CFB (Cipher Feed Back);

· ข้อเสนอแนะเกี่ยวกับเอาท์พุต OFB (เอาท์พุตฟีดแบ็ค)

โหมด "หนังสือรหัสอิเล็กทรอนิกส์"

ไฟล์ยาวถูกแบ่งออกเป็นส่วน 64 บิต (บล็อก) ขนาด 8 ไบต์ แต่ละบล็อกเหล่านี้ได้รับการเข้ารหัสอย่างอิสระโดยใช้คีย์เข้ารหัสเดียวกัน (รูปที่ 3.6)

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

รูปที่ 3.6 – โครงการ อัลกอริทึม DESในโหมดสมุดรหัสอิเล็กทรอนิกส์

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

โหมด "Chaining Cipher Blocks"

ในโหมดนี้ ไฟล์ต้นฉบับ M แบ่งออกเป็นบล็อก 64 บิต: M = M 1 M 2 ...M n บล็อกแรก M 1 จะถูกเพิ่มแบบโมดูโล 2 ด้วยเวกเตอร์ IV เริ่มต้น 64 บิต ซึ่งเปลี่ยนแปลงทุกวันและถูกเก็บเป็นความลับ (รูปที่ 3.7) จำนวนเงินที่ได้รับจะถูกเข้ารหัสโดยใช้คีย์ DES ที่ทั้งผู้ส่งและผู้รับข้อมูลรู้จัก ผลลัพธ์การเข้ารหัส 64 บิต C 1 จะถูกเพิ่มแบบโมดูโล 2 พร้อมกับบล็อกข้อความที่สอง ผลลัพธ์จะถูกเข้ารหัส และได้รับรหัส 64 บิตที่สอง C 2 เป็นต้น ทำซ้ำขั้นตอนนี้จนกว่าบล็อกข้อความทั้งหมดจะได้รับการประมวลผล

ดังนั้น สำหรับ i = 1…n ทั้งหมด (n คือจำนวนบล็อก) ผลลัพธ์การเข้ารหัส C i จึงถูกกำหนดดังนี้: C i =

DES (М i  C i –1) โดยที่ С 0 = IV คือค่าเริ่มต้นของการเข้ารหัส เท่ากับเวกเตอร์เริ่มต้น (เวกเตอร์การเริ่มต้น)

แน่นอนว่าบล็อกไซเฟอร์เท็กซ์ 64 บิตสุดท้ายเป็นฟังก์ชันของคีย์ลับ เวกเตอร์เมล็ด และแต่ละบิต

รูปที่ 3.7 – แผนผังของอัลกอริทึม DES ในโหมดการต่อบล็อกการเข้ารหัส

ข้อความธรรมดาโดยไม่คำนึงถึงความยาว บล็อกไซเฟอร์เท็กซ์นี้เรียกว่ารหัสตรวจสอบข้อความ (MAC)


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

ศักดิ์ศรี โหมดนี้คือไม่ให้เกิดข้อผิดพลาดสะสมระหว่างการส่งข้อมูล

Block M i เป็นฟังก์ชันของ C i –1 และ C i เท่านั้น ดังนั้นข้อผิดพลาดในการส่งจะส่งผลให้ข้อความต้นฉบับหายไปเพียงสองบล็อกเท่านั้น

โหมด "ตอบรับไซเบอร์"

ในโหมดนี้ขนาดบล็อกอาจแตกต่างจาก 64 บิต (รูปที่ 3.8) ไฟล์ที่จะเข้ารหัส (ถอดรหัส) จะถูกอ่านในบล็อกต่อเนื่องกันที่มีความยาว k บิต (k=1...64)

บล็อกอินพุต (รีจิสเตอร์กะ 64 บิต) มีเวกเตอร์การเริ่มต้นจัดชิดขวาก่อน

สมมติว่าผลจากการหารออกเป็นบล็อก เราได้รับบล็อกที่มีความยาว k บิตจำนวน n บล็อก (ส่วนที่เหลือจะต่อท้ายด้วยศูนย์หรือช่องว่าง) จากนั้นสำหรับบล็อกไซเฟอร์เท็กซ์ i=1…n ใดๆ

С i = M ฉัน  P ฉัน –1 ,

โดยที่ P i–1 หมายถึง k บิตที่สำคัญที่สุดของบล็อกที่เข้ารหัสก่อนหน้า

รีจิสเตอร์ shift ได้รับการอัพเดตโดยการลบ k บิตสูงสุดออกแล้วเขียน C i ลงในรีจิสเตอร์ การกู้คืนข้อมูลที่เข้ารหัสนั้นค่อนข้างง่าย: P i –1 และ C i คำนวณในลักษณะเดียวกันและ

М ฉัน = С ฉัน  Р ฉัน –1 .


รูปที่ 3.8 – แผนผังของอัลกอริทึม DES ในโหมดป้อนกลับไซเฟอร์เท็กซ์

โหมดตอบรับเอาท์พุต

โหมดนี้ยังใช้ ขนาดตัวแปรบล็อกและ กะการลงทะเบียนเริ่มต้นในลักษณะเดียวกับในโหมด CFB คือ - บล็อกอินพุตขั้นแรกประกอบด้วยเวกเตอร์การเริ่มต้น IV ซึ่งจัดชิดขวา (รูปที่ 3.9) ในกรณีนี้ สำหรับแต่ละเซสชันการเข้ารหัสข้อมูล จำเป็นต้องใช้สถานะเริ่มต้นใหม่ของการลงทะเบียน ซึ่งจะต้องส่งผ่านช่องทางในรูปแบบข้อความที่ชัดเจน

ม = ม 1 ม 2 ... ม

สำหรับทั้งหมด i = 1… n

C ผม = M ผม  P ผม ,

โดยที่ Р i คือ k บิตสูงสุดของการดำเนินการ DES (С i –1)

ความแตกต่างจากโหมดป้อนกลับไซเฟอร์เท็กซ์คือวิธีการอัพเดตชิฟต์รีจิสเตอร์

ทำได้โดยการละทิ้ง k บิตสูงสุดแล้วเติม P i ไปทางขวา

รูปที่ 3.9 – แผนผังของอัลกอริทึม DES ในโหมดป้อนกลับเอาต์พุต

3.3. ขอบเขตการใช้งานอัลกอริทึม DES

แต่ละโหมดที่พิจารณา (ECB, CBC, CFB, OFB) มีข้อดีและข้อเสียของตัวเองซึ่งกำหนดขอบเขตของการใช้งาน

โหมด ECB เหมาะอย่างยิ่งสำหรับการเข้ารหัสคีย์: โดยทั่วไปโหมด CFB มีไว้สำหรับการเข้ารหัสอักขระแต่ละตัว และโหมด OFB มักใช้สำหรับการเข้ารหัสใน ระบบดาวเทียมการสื่อสาร

โหมด CBC และ CFB เหมาะสำหรับการตรวจสอบข้อมูล โหมดเหล่านี้ช่วยให้คุณใช้อัลกอริทึม DES เพื่อ:

· การเข้ารหัสแบบโต้ตอบเมื่อแลกเปลี่ยนข้อมูลระหว่างเทอร์มินัลและคอมพิวเตอร์โฮสต์

· การเข้ารหัสคีย์การเข้ารหัสในการปฏิบัติงานของการแจกจ่ายคีย์อัตโนมัติ

· การเข้ารหัสไฟล์ รายการไปรษณีย์ข้อมูลดาวเทียมและปัญหาในทางปฏิบัติอื่น ๆ

เริ่มแรก มาตรฐาน DESมีไว้สำหรับการเข้ารหัสและถอดรหัสข้อมูลคอมพิวเตอร์ อย่างไรก็ตาม แอปพลิเคชันได้รับการปรับใช้ทั่วไปในการรับรองความถูกต้อง

ในระบบ การประมวลผลอัตโนมัติข้อมูล บุคคลไม่สามารถตรวจสอบข้อมูลเพื่อพิจารณาว่ามีการเปลี่ยนแปลงใดๆ หรือไม่ ด้วยข้อมูลจำนวนมหาศาลที่ส่งผ่าน ระบบที่ทันสมัยการประมวลผล การดูจะใช้เวลานานเกินไป นอกจากนี้ ความซ้ำซ้อนของข้อมูลอาจไม่เพียงพอที่จะตรวจพบข้อผิดพลาด แม้ในกรณีที่สามารถตรวจสอบโดยมนุษย์ได้ ข้อมูลก็อาจมีการเปลี่ยนแปลงในลักษณะที่ทำให้มนุษย์ตรวจพบการเปลี่ยนแปลงได้ยากมาก ตัวอย่างเช่น “do” สามารถแทนที่ด้วย “do not”, “$1900” ด้วย “$9100” ปราศจาก ข้อมูลเพิ่มเติมบุคคลที่ดูข้อมูลดังกล่าวอาจเข้าใจผิดว่าข้อมูลที่เปลี่ยนแปลงไปเป็นข้อมูลจริงได้อย่างง่ายดาย อันตรายดังกล่าวอาจเกิดขึ้นได้แม้ว่าจะมีการใช้การเข้ารหัสข้อมูลก็ตาม ดังนั้นจึงแนะนำให้มี เครื่องมืออัตโนมัติตรวจจับการเปลี่ยนแปลงข้อมูลที่ตั้งใจและไม่ตั้งใจ

รหัสการตรวจจับข้อผิดพลาดทั่วไปไม่เหมาะสมเพราะหากทราบอัลกอริทึมในการสร้างรหัส ฝ่ายตรงข้ามสามารถสร้างรหัสที่ถูกต้องหลังจากทำการเปลี่ยนแปลงข้อมูล อย่างไรก็ตาม การใช้อัลกอริธึม DES สามารถสร้างการเข้ารหัสได้ เช็คซัมซึ่งสามารถป้องกันการเปลี่ยนแปลงข้อมูลทั้งโดยไม่ได้ตั้งใจและโดยเจตนาแต่ไม่ได้รับอนุญาต

กระบวนการนี้อธิบายมาตรฐานสำหรับการรับรองความถูกต้องของข้อมูลคอมพิวเตอร์ (FIPS 113) สาระสำคัญของมาตรฐานคือข้อมูลจะถูกเข้ารหัสในโหมดป้อนกลับไซเฟอร์เท็กซ์ (โหมด CFB) หรือในโหมดต่อข้อมูลบล็อกการเข้ารหัส (โหมด CBC) ส่งผลให้บล็อกการเข้ารหัสสุดท้ายที่เป็นฟังก์ชันของบิตข้อความธรรมดาทั้งหมด ข้อความซึ่งมีข้อความธรรมดาสามารถส่งได้โดยใช้บล็อกการเข้ารหัสสุดท้ายที่คำนวณได้ ซึ่งทำหน้าที่เป็นผลรวมตรวจสอบการเข้ารหัส

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

ข้อความหมู่

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

บ่อยครั้งที่รหัสผ่านที่เข้ารหัสถูกสร้างขึ้นโดยใช้อัลกอริทึม DES โดยมีคีย์เท่ากับรหัสผ่านและข้อความธรรมดาเท่ากับรหัสประจำตัวผู้ใช้

เมื่อใช้อัลกอริทึม DES คุณสามารถเข้ารหัสไฟล์คอมพิวเตอร์เพื่อจัดเก็บข้อมูลได้

หนึ่งใน การใช้งานที่สำคัญที่สุดอัลกอริทึม ดีเอสเป็น การป้องกันข้อความ ระบบอิเล็กทรอนิกส์การชำระเงิน (ESP) สำหรับการทำธุรกรรมกับลูกค้าจำนวนมากและระหว่างธนาคาร.

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

ปุ่มสมมาตร .

ข้อเสนอการปรับเปลี่ยนโครงการของไอบีเอ็มที่เรียกว่าลูซิเฟอร์ถูกนำมาใช้เป็น DES DES ได้รับการเผยแพร่ในรูปแบบร่างใน ทะเบียนของรัฐบาลกลางในเดือนมีนาคม พ.ศ. 2518 เป็น มาตรฐานการประมวลผลข้อมูลของรัฐบาลกลาง (FIPS – มาตรฐานการประมวลผลข้อมูลของรัฐบาลกลาง).

เมื่อตีพิมพ์ ภาพร่างดังกล่าวถูกวิพากษ์วิจารณ์อย่างรุนแรงด้วยเหตุผลสองประการ ประการแรก มีการวิพากษ์วิจารณ์เกี่ยวกับความยาวของคีย์ที่น้อยอย่างน่าสงสัย (เพียง 56 บิต) ซึ่งอาจทำให้การเข้ารหัสเสี่ยงต่อการโจมตีแบบเดรัจฉาน เหตุผลที่สอง: นักวิจารณ์กังวลเกี่ยวกับการออกแบบโครงสร้างภายในของ DES ที่ซ่อนอยู่

พวกเขาสงสัยว่าบางส่วนของโครงสร้าง (S-boxes) อาจมีประตูหลังที่ซ่อนอยู่ซึ่งจะทำให้สามารถถอดรหัสข้อความได้โดยไม่ต้องใช้กุญแจ นักออกแบบของ IBM รายงานในเวลาต่อมาว่า โครงสร้างภายในได้รับการแก้ไขเพื่อป้องกันการเข้ารหัส

ในที่สุด DES ก็ได้รับการเผยแพร่เป็น FIPS 46 ใน Federal Register ในเดือนมกราคม พ.ศ. 2520 อย่างไรก็ตาม FIPS ได้ประกาศให้ DES เป็นมาตรฐานสำหรับการใช้งานใน แอปพลิเคชันที่ไม่เป็นทางการ- DES ถูกใช้อย่างแพร่หลายที่สุด รหัสบล็อกกับ ปุ่มสมมาตรโดยเริ่มจากการตีพิมพ์ NIST เสนอในภายหลัง มาตรฐานใหม่(FIPS 46-3) ซึ่งแนะนำให้ใช้ Triple DES (Triple-repeated DES cipher) สำหรับแอปพลิเคชันในอนาคต ดังที่เราจะได้เห็นต่อไปในบทเรียนที่ 9-10 ถือว่าใหม่กว่า มาตรฐานเออีเอสจะมาแทนที่ DES

บทบัญญัติทั่วไป

ดังแสดงในรูป 8.1. DES - รหัสบล็อก


ข้าว. 8.1.

ด้านข้าง การเข้ารหัส DESยอมรับข้อความธรรมดา 64 บิตและสร้างข้อความเข้ารหัส 64 บิต ในด้านของการถอดรหัส DES ใช้ไซเฟอร์เท็กซ์ 64 บิตและสร้างข้อความธรรมดา 64 บิต ทั้งสองฝ่ายใช้คีย์ 56 บิตเดียวกันสำหรับการเข้ารหัสและถอดรหัส

8.2. โครงสร้างดีเอส

มาดูการเข้ารหัสก่อนแล้วจึงถอดรหัส กระบวนการเข้ารหัสประกอบด้วยการเรียงสับเปลี่ยนสองวิธี (P-blocks) - เรียกว่าการเรียงสับเปลี่ยนเริ่มต้นและสิ้นสุด - และรอบ Feistel สิบหกรอบ แต่ละรอบใช้คีย์ 48 บิตที่สร้างขึ้นที่แตกต่างกัน อัลกอริธึมการสร้างจะมีการหารือในภายหลังในการบรรยายนี้ รูปที่ 8.2 แสดงองค์ประกอบของการเข้ารหัส DES ในด้านการเข้ารหัส

การเริ่มต้นและสิ้นสุดการเรียงสับเปลี่ยน

รูปที่ 8.3 แสดงการเรียงสับเปลี่ยนเริ่มต้นและครั้งสุดท้าย (P-blocks) การเรียงสับเปลี่ยนแต่ละครั้งใช้อินพุต 64 บิตและจัดเรียงองค์ประกอบใหม่ตามกฎที่กำหนด เราได้แสดงพอร์ตอินพุตและพอร์ตเอาต์พุตที่เกี่ยวข้องจำนวนเล็กน้อยเท่านั้น การเรียงสับเปลี่ยนเหล่านี้เป็นการเรียงสับเปลี่ยนโดยตรงโดยไม่มีคีย์ ซึ่งเป็นการผกผันซึ่งกันและกัน ตัวอย่างเช่น ในการเรียงสับเปลี่ยนเริ่มต้น บิตที่ 58 ของอินพุตจะไปที่บิตแรกของเอาต์พุต ในทำนองเดียวกัน ในการเรียงสับเปลี่ยนขั้นสุดท้าย บิตอินพุตแรกจะไปที่บิตเอาต์พุตที่ 58 กล่าวอีกนัยหนึ่ง ถ้าไม่มีการปัดเศษระหว่างการเรียงสับเปลี่ยนทั้งสองนี้ บิตที่ 58 ที่จ่ายให้กับอินพุตของอุปกรณ์การเรียงสับเปลี่ยนเริ่มต้นจะถูกส่งไปยังเอาต์พุตที่ 58 โดยการเรียงสับเปลี่ยนครั้งสุดท้าย


ข้าว. 8.2.


ข้าว. 8.3.

กฎการเรียงสับเปลี่ยนสำหรับ P-box นี้แสดงในตารางที่ 8.1 ตารางสามารถแสดงเป็นอาร์เรย์ 64 องค์ประกอบได้ โปรดทราบว่าเราได้หารือเกี่ยวกับการทำงานกับตาราง ค่าของแต่ละองค์ประกอบจะกำหนดหมายเลขของพอร์ตอินพุต และหมายเลขซีเรียล (ดัชนี) ขององค์ประกอบจะกำหนดหมายเลขของพอร์ตเอาต์พุต

ตารางที่ 8.1. ตารางการเรียงสับเปลี่ยนเริ่มต้นและขั้นสุดท้าย
การเรียงสับเปลี่ยนเบื้องต้น การเรียงสับเปลี่ยนแบบจำกัด
58 50 42 34 26 18 10 02 40 08 48 16 56 24 64 32
60 52 44 36 28 20 12 04 39 07 47 15 55 23 63 31
62 54 46 38 30 22 14 06 38 06 46 14 54 22 62 30
64 56 48 40 32 24 16 08 37 05 45 13 53 21 61 29
57 49 41 33 25 17 09 01 36 04 44 12 52 20 60 28
59 51 43 35 27 19 11 03 35 03 43 11 51 19 59 27
61 53 45 37 29 21 13 05 34 02 42 10 50 18 58 26
63 55 47 39 31 23 15 07 33 01 41 09 49 17 57 25

การเรียงสับเปลี่ยนทั้งสองนี้ไม่มีความหมายสำหรับการเข้ารหัส

อัลกอริทึม ดีเอส

ข้อดีหลักของอัลกอริทึม DES:

· ใช้เพียงคีย์เดียวที่มีความยาว 56 บิต

· เมื่อเข้ารหัสข้อความโดยใช้แพ็คเกจเดียว คุณสามารถใช้แพ็คเกจอื่นเพื่อถอดรหัสได้

· ความเรียบง่ายสัมพัทธ์ของอัลกอริธึมทำให้มั่นใจได้ ความเร็วสูงการประมวลผลข้อมูล

· อัลกอริธึมมีความเสถียรสูงเพียงพอ

DES เข้ารหัสบล็อกข้อมูล 64 บิตโดยใช้คีย์ 56 บิต การถอดรหัสใน DES เป็นการดำเนินการแบบย้อนกลับของการเข้ารหัสและดำเนินการโดยการทำซ้ำการเข้ารหัสในลำดับย้อนกลับ (แม้จะชัดเจน แต่ก็ไม่ได้ทำเสมอไป ต่อมาเราจะดูที่การเข้ารหัสซึ่งดำเนินการเข้ารหัสและถอดรหัสโดยใช้อัลกอริธึมที่แตกต่างกัน) .

กระบวนการเข้ารหัสประกอบด้วยการเรียงสับเปลี่ยนเริ่มต้นของบิตของบล็อก 64 บิต, รอบการเข้ารหัส 16 รอบ และสุดท้ายคือการเรียงสับเปลี่ยนบิตแบบย้อนกลับ (รูปที่ 1)

ควรสังเกตทันทีว่าตารางทั้งหมดที่ระบุในบทความนี้เป็นมาตรฐาน ดังนั้นจึงควรรวมไว้ในการนำอัลกอริทึมของคุณไปใช้โดยไม่มีการเปลี่ยนแปลง นักพัฒนาเลือกการเรียงสับเปลี่ยนและรหัสทั้งหมดในตารางเพื่อทำให้กระบวนการถอดรหัสยากที่สุดเท่าที่จะเป็นไปได้โดยการเลือกคีย์ โครงสร้างของอัลกอริทึม DES แสดงในรูปที่ 2

รูปที่ 2. โครงสร้างของอัลกอริธึมการเข้ารหัส DES

ปล่อยให้บล็อก T ขนาด 8 ไบต์ถัดไปถูกอ่านจากไฟล์ ซึ่งจะถูกแปลงโดยใช้เมทริกซ์การเรียงสับเปลี่ยนเริ่มต้น IP (ตารางที่ 1) ดังนี้ บิต 58 ของบล็อก T กลายเป็นบิต 1 บิต 50 กลายเป็นบิต 2 เป็นต้น ซึ่งจะ ผลลัพธ์ที่ได้คือ : T(0) = IP(T)

ลำดับบิตที่ได้ผลลัพธ์ T(0) แบ่งออกเป็นสองลำดับ ชุดละ 32 บิต: L(0) - บิตลำดับซ้ายหรือสูง R(0) - บิตขวาหรือบิตลำดับต่ำ

ตารางที่ 1: เมทริกซ์การเรียงสับเปลี่ยนเริ่มต้นของ IP

58 50 42 34 26 18 10 02

60 52 44 36 28 20 12 04

62 54 46 38 30 22 14 06

64 56 48 40 32 24 16 08

57 49 41 33 25 17 09 01

59 51 43 35 27 19 11 03

61 53 45 37 29 21 13 05

63 55 47 39 31 23 15 07

จากนั้นทำการเข้ารหัส ประกอบด้วยการวนซ้ำ 16 ครั้ง ผลลัพธ์ การวนซ้ำครั้งที่ 1อธิบายได้ด้วยสูตรต่อไปนี้:

R(i) = L(i-1) x หรือ f(R(i-1), K(i)) ,

โดยที่ xor เป็นเอกสิทธิ์หรือการดำเนินการ

ฟังก์ชัน f เรียกว่าฟังก์ชันการเข้ารหัส อาร์กิวเมนต์ของมันคือลำดับ 32 บิต R(i-1) ซึ่งได้มาจากการวนซ้ำครั้งที่ (i-1) และคีย์ 48 บิต K(i) ซึ่งเป็นผลมาจากการแปลงคีย์ K 64 บิต ในรายละเอียด ฟังก์ชันการเข้ารหัสและอัลกอริธึมในการรับคีย์ K(i) มีอธิบายไว้ด้านล่าง

ในการวนซ้ำครั้งที่ 16 จะได้รับลำดับ R(16) และ L(16) (โดยไม่มีการเรียงสับเปลี่ยน) ซึ่งจะถูกต่อเข้าด้วยกันเป็นลำดับ 64 บิต R(16)L(16)

จากนั้นตำแหน่งของบิตของลำดับนี้จะถูกจัดเรียงใหม่ตามเมทริกซ์ IP -1 (ตารางที่ 2)

ตารางที่ 2: เมทริกซ์การเรียงสับเปลี่ยนผกผัน IP -1

40 08 48 16 56 24 64 32

39 07 47 15 55 23 63 31

38 06 46 14 54 22 62 30

37 05 45 13 53 21 61 29

36 04 44 12 52 20 60 28

35 03 43 11 51 19 59 27

34 02 42 10 50 18 58 26

33 01 41 09 49 17 57 25

เมทริกซ์ IP -1 และ IP มีความสัมพันธ์กันดังนี้ ค่าขององค์ประกอบที่ 1 ของเมทริกซ์ IP -1 คือ 40 และค่าขององค์ประกอบที่ 40 ของเมทริกซ์ IP คือ 1 ค่าขององค์ประกอบที่ 2 องค์ประกอบของเมทริกซ์ IP -1 คือ 8 และค่าขององค์ประกอบเมทริกซ์ IP ที่ 8 เท่ากับ 2 เป็นต้น

กระบวนการถอดรหัสข้อมูลจะตรงกันข้ามกับกระบวนการเข้ารหัส การกระทำทั้งหมดจะต้องดำเนินการใน ลำดับย้อนกลับ- ซึ่งหมายความว่าข้อมูลที่ถอดรหัสจะถูกจัดเรียงใหม่ตามเมทริกซ์ IP-1 ก่อน จากนั้นจะดำเนินการแบบเดียวกันในลำดับบิต R(16)L(16) เช่นเดียวกับในกระบวนการเข้ารหัส แต่ในลำดับย้อนกลับ

กระบวนการถอดรหัสแบบวนซ้ำสามารถอธิบายได้ด้วยสูตรต่อไปนี้:

R(i-1) = L(i), i = 1, 2, ..., 16;

L(i-1) = R(i) xหรือ f(L(i), K(i)), i = 1, 2, ..., 16 .

ในการวนซ้ำครั้งที่ 16 จะได้ลำดับ L(0) และ R(0) ซึ่งต่อกันเป็นลำดับ 64 บิต L(0)R(0)

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

ตอนนี้ให้พิจารณาฟังก์ชันการเข้ารหัส f(R(i-1),K(i)) มันถูกแสดงไว้ในแผนผังในรูป 3.


รูปที่ 3 การคำนวณฟังก์ชัน f(R(i-1), K(i))

ในการคำนวณค่าของฟังก์ชัน f จะใช้ฟังก์ชันเมทริกซ์ต่อไปนี้:

E - ส่วนขยายของลำดับ 32 บิตเป็น 48 บิต

S1, S2, ..., S8 - การแปลงบล็อก 6 บิตเป็นบล็อก 4 บิต

P - การเรียงสับเปลี่ยนบิตในลำดับ 32 บิต

ฟังก์ชันการขยาย E ถูกกำหนดไว้ในตารางที่ 3 จากตารางนี้ 3 บิตแรกของ E(R(i-1)) คือบิต 32, 1 และ 2 และบิตสุดท้ายคือ 31, 32 และ 1

ตารางที่ 3: ฟังก์ชันส่วนขยาย E

32 01 02 03 04 05

04 05 06 07 08 09

08 09 10 11 12 13

12 13 14 15 16 17

16 17 18 19 20 21

20 21 22 23 24 25

24 25 26 27 28 29

28 29 30 31 32 01

ผลลัพธ์ของฟังก์ชัน E(R(i-1)) คือลำดับ 48 บิตที่เพิ่มแบบโมดูโล 2 (การดำเนินการ xor) ด้วยคีย์ 48 บิต K(i) ลำดับผลลัพธ์ 48 บิตจะถูกแบ่งออกเป็นบล็อก 6 บิตจำนวน 8 บล็อก B(1)B(2)B(3)B(4)B(5)B(6)B(7)B(8) นั่นคือ:

E(R(i-1)) xหรือ K(i) = B(1)B(2)...B(8) .

ฟังก์ชัน S1, S2, ..., S8 ถูกกำหนดไว้ในตารางที่ 4

ตารางที่ 4

ไปที่ตารางที่ 4 จำเป็นต้องมีการชี้แจงเพิ่มเติม กำหนดให้อินพุตของฟังก์ชันเมทริกซ์ Sj เป็นบล็อก 6 บิต B(j) = b1b2b3b4b5b6 จากนั้นตัวเลขสองบิต b1b6 จะระบุหมายเลขแถวของเมทริกซ์ และ b2b3b4b5 คือหมายเลขคอลัมน์ ผลลัพธ์ของ Sj(B(j)) จะเป็นองค์ประกอบ 4 บิตตั้งอยู่ที่จุดตัด เส้นที่ระบุและคอลัมน์

ตัวอย่างเช่น B(1)=011011 ดังนั้น S1(B(1)) จะอยู่ที่จุดตัดของแถวที่ 1 และคอลัมน์ที่ 13 ในคอลัมน์ที่ 13 ของแถวที่ 1 ค่าคือ 5 ซึ่งหมายความว่า S1(011011)=0101

เมื่อนำการดำเนินการเลือกไปใช้กับแต่ละบล็อก 6 บิต B(1), B(2), ..., B(8) เราจะได้ลำดับ 32 บิต S1(B(1))S2(B(2) ))S3( บี(3))...S8(B(8)).

สุดท้ายนี้ เพื่อให้ได้ผลลัพธ์ของฟังก์ชันการเข้ารหัส บิตของลำดับนี้จะต้องถูกจัดเรียงใหม่ เพื่อจุดประสงค์นี้ จะใช้ฟังก์ชันการเรียงสับเปลี่ยน P (ตารางที่ 5) ในลำดับอินพุต บิตจะถูกจัดเรียงใหม่เพื่อให้บิต 16 กลายเป็นบิต 1 บิต 7 กลายเป็นบิต 2 และอื่นๆ

ตารางที่ 5: ฟังก์ชันการเรียงสับเปลี่ยน P

ดังนั้น,

f(R(i-1), K(i)) = P(S1(B(1)),...S8(B(8)))

เพื่อให้คำอธิบายของอัลกอริธึมการเข้ารหัสข้อมูลสมบูรณ์ ยังคงต้องนำเสนออัลกอริธึมเพื่อรับคีย์ 48 บิต K(i), i=1...16 ในการวนซ้ำแต่ละครั้ง จะใช้ค่าคีย์ใหม่ K(i) ซึ่งคำนวณจากคีย์เริ่มต้น K K เป็นบล็อก 64 บิตซึ่งมีบิตพาริตีแปดบิตอยู่ที่ตำแหน่ง 8,16,24,32,40,48 56. 64.

หากต้องการลบบิตควบคุมและจัดเรียงส่วนที่เหลือใหม่ จะใช้ฟังก์ชัน G ของการเตรียมคีย์เริ่มต้น (ตารางที่ 6)

ตารางที่ 6

Matrix G ของการเตรียมคีย์เริ่มต้น

57 49 41 33 25 17 09

01 58 50 42 34 26 18

10 02 59 51 43 35 27

19 11 03 60 52 44 36

63 55 47 39 31 23 15

07 62 54 46 38 30 22

14 06 61 53 45 37 29

21 13 05 28 20 12 04

ผลลัพธ์ของการแปลง G(K) แบ่งออกเป็นบล็อก 28 บิตสองบล็อก C(0) และ D(0) และ C(0) จะประกอบด้วยบิต 57, 49, ..., 44, 36 ของคีย์ K และ D(0 ) จะประกอบด้วยบิต 63, 55, ..., 12, 4 ของคีย์ K หลังจากกำหนด C(0) และ D(0) แล้ว C(i) และ D(i) i= 1...16 ถูกกำหนดแบบวนซ้ำ เมื่อต้องการทำเช่นนี้ ให้ใช้การเปลี่ยนแปลงแบบวนไปทางซ้ายหนึ่งหรือสองบิต ขึ้นอยู่กับหมายเลขการวนซ้ำ ดังแสดงในตารางที่ 7

ตารางที่ 7

ตาราง Shift สำหรับการคำนวณคีย์

หมายเลขการวนซ้ำ กะ (บิต)
01 1
02 1
03 2
04 2
05 2
06 2
07 2
08 2
09 1
10 2
11 2
12 2
13 2
14 2
15 2
16 1

ค่าผลลัพธ์จะถูก "ผสม" อีกครั้งตามเมทริกซ์ H (ตารางที่ 8)

ตารางที่ 8: เมทริกซ์การเติมคีย์ให้สมบูรณ์ H

14 17 11 24 01 05

03 28 15 06 21 10

23 19 12 04 26 08

16 07 27 20 13 02

41 52 31 37 47 55

30 40 51 45 33 48

44 49 39 56 34 53

46 42 50 36 29 32

คีย์ K(i) จะประกอบด้วยบิต 14, 17, ..., 29, 32 ของลำดับ C(i)D(i) ดังนั้น:

K(i) = H(ค(i)D(i))

แผนภาพบล็อกของอัลกอริธึมการคำนวณคีย์จะแสดงในรูปที่ 4

รูปที่ 4. บล็อกไดอะแกรมของอัลกอริทึมสำหรับการคำนวณคีย์ K(i)

การกู้คืน ข้อความต้นฉบับดำเนินการตามอัลกอริทึมนี้ แต่ก่อนอื่นคุณต้องใช้คีย์

K(15) จากนั้น K(14) และอื่นๆ ตอนนี้คุณควรเข้าใจแล้วว่าทำไมผู้เขียนจึงยืนกรานแนะนำให้ใช้เมทริกซ์ที่กำหนด หากคุณโกง คุณอาจจบลงด้วยรหัสที่เป็นความลับ แต่คุณจะไม่สามารถถอดรหัสมันเองได้!

โหมดการทำงานของอัลกอริทึม DES

เพื่อให้เป็นไปตามข้อกำหนดทั้งหมดสำหรับระบบเข้ารหัสเชิงพาณิชย์อย่างเต็มที่ จึงได้มีการนำโหมดการทำงานหลายโหมดของอัลกอริทึม DES มาใช้ โหมดที่ใช้กันอย่างแพร่หลายที่สุดคือ:

· สมุดโค้ดอิเล็กทรอนิกส์ (สมุดโค้ดอิเล็กทรอนิกส์) - ECB;

·ลูกโซ่ของบล็อกดิจิทัล (Cipher Block Chaining) - CBC;

· ข้อเสนอแนะแบบดิจิทัล (Cipher Feedback) - CFB;

· ข้อเสนอแนะภายนอก (Output Feedback) - OFB

ในโหมดนี้ ไฟล์ต้นฉบับ M จะถูกแบ่งออกเป็นบล็อก 64 บิต (บล็อกละ 8 ไบต์): M = M(1)M(2)...M(n) แต่ละบล็อกเหล่านี้ได้รับการเข้ารหัสอย่างอิสระโดยใช้คีย์เข้ารหัสเดียวกัน (รูปที่ 5) ข้อได้เปรียบหลักของอัลกอริธึมนี้คือความง่ายในการใช้งาน ข้อเสียคือค่อนข้างอ่อนแอเมื่อเทียบกับนักวิเคราะห์การเข้ารหัสที่มีทักษะ



มีคำถามหรือไม่?

แจ้งการพิมพ์ผิด

ข้อความที่จะส่งถึงบรรณาธิการของเรา: