บล็อกโหมดการเข้ารหัสของการทำงาน

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

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

โหมด Electronic Code Book (ECB)

โหมดนี้เป็นวิธีที่ตรงไปตรงมาที่สุดในการประมวลผลชุดบล็อกข้อความตามลำดับ

การดำเนินการ

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

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

โหมด ECB คือ deterministicนั่นคือถ้าบล็อกข้อความธรรมดา P1, P2, …, Pm ถูกเข้ารหัสสองครั้งภายใต้คีย์เดียวกันบล็อกการเข้ารหัสเอาต์พุตจะเหมือนกัน

ในความเป็นจริงสำหรับคีย์ที่กำหนดในทางเทคนิคเราสามารถสร้าง codebook ของ ciphertexts สำหรับบล็อกข้อความธรรมดาทั้งหมดที่เป็นไปได้ จากนั้นการเข้ารหัสจะนำมาซึ่งการค้นหาเฉพาะข้อความธรรมดาที่จำเป็นและเลือกไซเฟอร์เท็กซ์ที่เกี่ยวข้อง ดังนั้นการดำเนินการจึงคล้ายคลึงกับการกำหนดคำรหัสใน Codebook และด้วยเหตุนี้จึงได้รับชื่ออย่างเป็นทางการ - โหมดการทำงานของ Electronic Codebook (ECB) มีภาพประกอบดังนี้ -

การวิเคราะห์โหมด ECB

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

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

โหมด Cipher Block Chaining (CBC)

โหมดการทำงานของ CBC ให้การพึ่งพาข้อความสำหรับการสร้าง ciphertext และทำให้ระบบไม่ถูกกำหนด

การดำเนินการ

การทำงานของโหมด CBC แสดงอยู่ในภาพประกอบต่อไปนี้ ขั้นตอนมีดังนี้ -

  • โหลด n-bit Initialization Vector (IV) ในรีจิสเตอร์ด้านบน

  • XOR บล็อกข้อความธรรมดา n-bit ที่มีค่าข้อมูลใน top register

  • เข้ารหัสผลลัพธ์ของการดำเนินการ XOR ด้วยการเข้ารหัสบล็อกที่มีคีย์ K

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

  • สำหรับการถอดรหัสข้อมูล IV จะถูก XORed โดยมีการถอดรหัสบล็อกไซเฟอร์เท็กซ์แรก บล็อกไซเฟอร์เท็กซ์แรกยังถูกป้อนเพื่อรีจิสเตอร์แทนที่ IV สำหรับการถอดรหัสบล็อกไซเฟอร์เท็กซ์ถัดไป

การวิเคราะห์โหมด CBC

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

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

เป็นมูลค่าการกล่าวขวัญว่าโหมด CBC เป็นพื้นฐานสำหรับกลไกการตรวจสอบแหล่งที่มาของข้อมูลที่รู้จักกันดี ดังนั้นจึงมีข้อได้เปรียบสำหรับแอปพลิเคชันที่ต้องการทั้งการเข้ารหัสแบบสมมาตรและการตรวจสอบแหล่งที่มาของข้อมูล

โหมด Cipher Feedback (CFB)

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

การดำเนินการ

การทำงานของโหมด CFB แสดงอยู่ในภาพประกอบต่อไปนี้ ตัวอย่างเช่นในระบบปัจจุบันบล็อกข้อความมีบิตขนาดโดยที่ 1 <s <n. โหมด CFB ต้องใช้เวกเตอร์เริ่มต้น (IV) เป็นบล็อกอินพุต n-bit แบบสุ่มเริ่มต้น IV ไม่จำเป็นต้องเป็นความลับ ขั้นตอนการดำเนินการคือ -

  • โหลด IV ในการลงทะเบียนด้านบน

  • เข้ารหัสค่าข้อมูลในรีจิสเตอร์ด้านบนด้วยการเข้ารหัสบล็อกที่อยู่ภายใต้คีย์ K

  • ใช้เฉพาะจำนวนบิตที่สำคัญที่สุด (บิตด้านซ้าย) ของเอาต์พุตของกระบวนการเข้ารหัสและ XOR กับบล็อกข้อความธรรมดาของบิตเพื่อสร้างบล็อกไซเฟอร์เท็กซ์

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

  • โดยพื้นฐานแล้วบล็อกไซเฟอร์เท็กซ์ก่อนหน้านี้จะถูกเข้ารหัสด้วยคีย์จากนั้นผลลัพธ์คือ XORed ไปยังบล็อกข้อความธรรมดาปัจจุบัน

  • ตามขั้นตอนที่คล้ายกันสำหรับการถอดรหัส IV ที่ตัดสินใจล่วงหน้าจะถูกโหลดในตอนแรกเมื่อเริ่มการถอดรหัส

การวิเคราะห์โหมด CFB

โหมด CFB แตกต่างจากโหมด ECB อย่างมากการเข้ารหัสที่สอดคล้องกับบล็อกข้อความธรรมดาที่กำหนดนั้นไม่เพียงขึ้นอยู่กับบล็อกข้อความธรรมดาและคีย์เท่านั้น แต่ยังรวมถึงบล็อกไซเฟอร์เท็กซ์ก่อนหน้าด้วย กล่าวอีกนัยหนึ่งบล็อกการเข้ารหัสจะขึ้นอยู่กับข้อความ

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

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

ด้วยการแปลงรหัสบล็อกเป็นรหัสสตรีมโหมด CFB จะให้คุณสมบัติที่เป็นประโยชน์บางประการของการเข้ารหัสสตรีมในขณะที่ยังคงรักษาคุณสมบัติที่เป็นประโยชน์ของการเข้ารหัสบล็อกไว้

ในทางกลับกันข้อผิดพลาดของการส่งจะแพร่กระจายเนื่องจากการเปลี่ยนบล็อก

โหมดการตอบรับเอาต์พุต (OFB)

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

คีย์สตรีมที่สร้างขึ้นคือ XOR-ed พร้อมกับบล็อกข้อความธรรมดา โหมด OFB ต้องการ IV เป็นบล็อกอินพุต n-bit แบบสุ่มเริ่มต้น IV ไม่จำเป็นต้องเป็นความลับ

การดำเนินการดังแสดงในภาพประกอบต่อไปนี้ -

โหมดตัวนับ (CTR)

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

การดำเนินการ

ทั้งการเข้ารหัสและการถอดรหัสในโหมด CTR แสดงอยู่ในภาพประกอบต่อไปนี้ ขั้นตอนในการดำเนินการคือ -

  • โหลดค่าตัวนับเริ่มต้นในรีจิสเตอร์ด้านบนจะเหมือนกันสำหรับทั้งผู้ส่งและผู้รับ มีบทบาทเช่นเดียวกับ IV ในโหมด CFB (และ CBC)

  • เข้ารหัสเนื้อหาของตัวนับด้วยคีย์และวางผลลัพธ์ในทะเบียนด้านล่าง

  • นำบล็อกข้อความธรรมดา P1 และ XOR แรกไปที่เนื้อหาของการลงทะเบียนด้านล่าง ผลลัพธ์ของสิ่งนี้คือ C1 ส่ง C1 ไปยังผู้รับและอัปเดตตัวนับ การปรับปรุงตัวนับจะแทนที่คำติชมของการเข้ารหัสในโหมด CFB

  • ดำเนินการต่อในลักษณะนี้จนกว่าบล็อกข้อความธรรมดาสุดท้ายจะถูกเข้ารหัส

  • การถอดรหัสเป็นกระบวนการย้อนกลับ บล็อกการเข้ารหัสเป็น XORed พร้อมเอาต์พุตของเนื้อหาที่เข้ารหัสของค่าตัวนับ หลังจากการถอดรหัสของตัวนับบล็อกการเข้ารหัสแต่ละตัวจะได้รับการอัปเดตในกรณีของการเข้ารหัส

การวิเคราะห์โหมดตัวนับ

ไม่มีการพึ่งพาข้อความดังนั้นบล็อกการเข้ารหัสจึงไม่ขึ้นอยู่กับบล็อกข้อความธรรมดาก่อนหน้านี้

เช่นเดียวกับโหมด CFB โหมด CTR ไม่เกี่ยวข้องกับกระบวนการถอดรหัสของรหัสบล็อก นี่เป็นเพราะโหมด CTR ใช้รหัสบล็อกเพื่อสร้างคีย์สตรีมซึ่งเข้ารหัสโดยใช้ฟังก์ชัน XOR กล่าวอีกนัยหนึ่งโหมด CTR ยังแปลงรหัสบล็อกเป็นรหัสสตรีม

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

อย่างไรก็ตามโหมด CTR มีข้อดีเกือบทั้งหมดของโหมด CFB นอกจากนี้ยังไม่เผยแพร่ข้อผิดพลาดของการส่งสัญญาณเลย