ความแตกต่างระหว่าง Block Cipher และ Stream Cipher
เนื้อหา
Block Cipher และ Stream Cipher เป็นวิธีที่ใช้ในการแปลงที่ราบเป็นตัวเลขโดยตรงและเป็นของตระกูลของรหัสคีย์สมมาตร
ความแตกต่างที่สำคัญระหว่างการเข้ารหัสบล็อกและการเข้ารหัสกระแสคือการเข้ารหัสบล็อกเข้ารหัสและถอดรหัสบล็อกของแต่ละครั้ง ในขณะที่การเข้ารหัสสตรีมเข้ารหัสและถอดรหัสโดยการหนึ่งไบต์ของเวลา
- แผนภูมิเปรียบเทียบ
- คำนิยาม
- ความแตกต่างที่สำคัญ
- ข้อสรุป
แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | บล็อกเลขศูนย์ | สตรีมตัวเลข |
---|---|---|
ขั้นพื้นฐาน | แปลงที่ราบโดยการบล็อกในเวลา | แปลงโดยการหนึ่งไบต์ของที่ราบในเวลา |
ความซับซ้อน | การออกแบบที่เรียบง่าย | คอมเพล็กซ์ค่อนข้าง |
ไม่ใช้บิต | 64 บิตหรือมากกว่า | 8 บิต |
ความสับสนและการกระจาย | ใช้ทั้งความสับสนและการกระจาย | ต้องอาศัยความสับสนเท่านั้น |
โหมดอัลกอริทึมที่ใช้ | ECB (หนังสือรหัสอิเล็กทรอนิกส์) CBC (Cipher Block Chaining) | CFB (ข้อเสนอแนะการเข้ารหัส) OFB (ข้อเสนอแนะการส่งออก) |
reversibility | การเข้ารหัสลับการย้อนกลับเป็นเรื่องยาก | มันใช้ XOR สำหรับการเข้ารหัสซึ่งสามารถย้อนกลับไปที่ธรรมดาได้อย่างง่ายดาย |
การดำเนินงาน | Feistel Cipher | Vernam Cipher |
ความหมายของ Block Cipher
Block Cipher ใช้เวลาและทำลายมันให้มีขนาดคงที่ของบล็อกและแปลงบล็อกหนึ่งบล็อกในทันที ตัวอย่างเช่น, เรามีการเข้ารหัส“ STREET_BY_STREET” แบบธรรมดา การใช้ bock cipher“ STREET” จะต้องถูกเข้ารหัสในตอนแรกตามด้วย“ _BY_” และสุดท้ายคือ“ STREET” ในที่สุด
ในทางปฏิบัติจริงการสื่อสารจะเกิดขึ้นในบิตเท่านั้น ดังนั้น STREET จริง ๆ แล้วหมายถึงไบนารีเทียบเท่าของอักขระ ASCII ของ STREET จากนั้นอัลกอริทึมใด ๆ จะเข้ารหัสสิ่งเหล่านี้ บิตผลลัพธ์จะถูกแปลงกลับเป็นค่า ASCII ที่เท่ากัน
ปัญหาที่เห็นได้ชัดเกี่ยวกับการใช้บล็อกยันต์คือ การทำซ้ำ ซึ่งรหัสเดียวกันถูกสร้างขึ้น ดังนั้นมันจะให้คำแนะนำแก่ cryptanalyst ซึ่งทำให้ง่ายต่อการหาสตริงธรรมดาที่เกิดขึ้น เป็นผลให้มันสามารถเปิดเผยทั้งหมด
เพื่อเอาชนะจากปัญหานี้ โหมดการผูกมัด ถูกนำมาใช้. ในเทคนิคนี้บล็อกก่อนหน้าของรหัสจะถูกผสมกับบล็อกปัจจุบันเพื่อให้รหัสที่คลุมเครือสิ่งนี้จะหลีกเลี่ยงรูปแบบที่เกิดขึ้นซ้ำของบล็อกที่มีเนื้อหาเดียวกัน
ความหมายของการเข้ารหัสกระแส
โดยทั่วไปสตรีมเข้ารหัสจะเข้ารหัสหนึ่งไบต์ของช่วงเวลานั้นแทนที่จะใช้บล็อก มาดูกัน ตัวอย่าง, สมมติว่าต้นฉบับ (ธรรมดา) คือ“ ท้องฟ้าสีฟ้า” ในรูปแบบ ASCII (เช่นรูปแบบ) เมื่อคุณแปลง ASCII เหล่านี้เป็นค่าไบนารีที่เทียบเท่ากันมันจะให้ผลลัพธ์ในรูปแบบ 0 และ 1 ปล่อยให้มันแปลใน 010111001
สำหรับการเข้ารหัสและถอดรหัส เครื่องกำเนิดไฟฟ้าปลอมเทียม ถูกใช้ในการโหลดคีย์และธรรมดา ตัวสร้างบิตจำลองเทียมสร้างกระแสข้อมูลจำนวน 8 บิตที่รู้จักกันในชื่อสุ่ม keystream. ปล่อยให้อินพุตคีย์คือ 100101011 ตอนนี้คีย์และธรรมดาคือ XORed ตรรกะ XOR นั้นง่ายต่อการเข้าใจ
XOR สร้างเอาต์พุต 1 เมื่ออินพุตหนึ่งเป็น 0 และอีกอันคือ 1 เอาต์พุตคือ 0 ถ้าทั้งอินพุตเป็น 0 หรือทั้งสองอินพุตเป็น 1
ความสับสน เป็นวิธีการที่รับประกันได้ว่าเลขศูนย์ให้เบาะแสเกี่ยวกับต้นกำเนิดดั้งเดิม
การแพร่ เป็นกลยุทธ์ที่ใช้ในการปรับปรุงความซ้ำซ้อนของที่ราบโดยการกระจายข้ามแถวและคอลัมน์
- เทคนิค Block cipher เกี่ยวข้องกับการเข้ารหัสครั้งละหนึ่งบล็อกนั่นคือแบบแยกเดี่ยว ในทำนองเดียวกันถอดรหัสโดยการหนึ่งบล็อกหลังจากที่อื่น ในทางกลับกันเทคนิคการเข้ารหัสแบบสตรีมเกี่ยวข้องกับการเข้ารหัสและถอดรหัสหนึ่งไบต์ในเวลาเดียวกัน
- Block cipher ใช้ทั้งความสับสนและการกระจายในขณะที่กระแสตัวเลขอาศัยเฉพาะในความสับสน
- ขนาดปกติของบล็อกอาจเป็น 64 หรือ 128 บิตในรหัสบล็อก เทียบกับ 1 ไบต์ (8 บิต) ในแต่ละครั้งจะถูกแปลงเป็นเลขศูนย์
- บล็อคตัวเลขใช้ ECB (หนังสือรหัสอิเล็กทรอนิกส์) และ CBC (Cipher Block Chaining) โหมดอัลกอริทึม ในทางตรงกันข้ามการเข้ารหัสตัวเลขใช้ CFB (ข้อเสนอแนะการเข้ารหัส) และ OFB (ข้อเสนอแนะการส่งออก) โหมดอัลกอริทึม
- Stream cipher ใช้ฟังก์ชั่น XOR ในการแปลงไฟล์ธรรมดาเป็นตัวเลขซึ่งเป็นเหตุผลว่าทำไมการกลับบิต XORed เป็นเรื่องง่าย ในขณะที่ Block ตัวเลขไม่ใช้ XOR ในการทำเช่นนั้น
- Block cipher ใช้คีย์เดียวกันเพื่อเข้ารหัสแต่ละบล็อคในขณะที่ stream cipher ใช้คีย์ที่แตกต่างกันสำหรับแต่ละไบต์
สรุป:
Block Cipher และ Stream Cipher นั้นมีความแตกต่างกันในเรื่องของการเข้ารหัสและถอดรหัส แนวคิดที่อยู่เบื้องหลังการเข้ารหัสบล็อกคือการแบ่งที่ราบออกเป็นบล็อกเพิ่มเติมเข้ารหัสบล็อกเหล่านั้น ในขณะที่กระแสการเข้ารหัสแปลงบิตธรรมดาโดยบิตคล้ายกับกระแส