ความแตกต่างระหว่าง Block Cipher และ Stream Cipher

ผู้เขียน: Laura McKinney
วันที่สร้าง: 1 เมษายน 2021
วันที่อัปเดต: 13 พฤษภาคม 2024
Anonim
Block cipher vs Stream cipher
วิดีโอ: Block cipher vs Stream cipher

เนื้อหา


Block Cipher และ Stream Cipher เป็นวิธีที่ใช้ในการแปลงที่ราบเป็นตัวเลขโดยตรงและเป็นของตระกูลของรหัสคีย์สมมาตร

ความแตกต่างที่สำคัญระหว่างการเข้ารหัสบล็อกและการเข้ารหัสกระแสคือการเข้ารหัสบล็อกเข้ารหัสและถอดรหัสบล็อกของแต่ละครั้ง ในขณะที่การเข้ารหัสสตรีมเข้ารหัสและถอดรหัสโดยการหนึ่งไบต์ของเวลา

  1. แผนภูมิเปรียบเทียบ
  2. คำนิยาม
  3. ความแตกต่างที่สำคัญ
  4. ข้อสรุป

แผนภูมิเปรียบเทียบ

พื้นฐานสำหรับการเปรียบเทียบบล็อกเลขศูนย์สตรีมตัวเลข
ขั้นพื้นฐาน

แปลงที่ราบโดยการบล็อกในเวลา
แปลงโดยการหนึ่งไบต์ของที่ราบในเวลา
ความซับซ้อน
การออกแบบที่เรียบง่าย

คอมเพล็กซ์ค่อนข้าง
ไม่ใช้บิต
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

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

  1. เทคนิค Block cipher เกี่ยวข้องกับการเข้ารหัสครั้งละหนึ่งบล็อกนั่นคือแบบแยกเดี่ยว ในทำนองเดียวกันถอดรหัสโดยการหนึ่งบล็อกหลังจากที่อื่น ในทางกลับกันเทคนิคการเข้ารหัสแบบสตรีมเกี่ยวข้องกับการเข้ารหัสและถอดรหัสหนึ่งไบต์ในเวลาเดียวกัน
  2. Block cipher ใช้ทั้งความสับสนและการกระจายในขณะที่กระแสตัวเลขอาศัยเฉพาะในความสับสน
  3. ขนาดปกติของบล็อกอาจเป็น 64 หรือ 128 บิตในรหัสบล็อก เทียบกับ 1 ไบต์ (8 บิต) ในแต่ละครั้งจะถูกแปลงเป็นเลขศูนย์
  4. บล็อคตัวเลขใช้ ECB (หนังสือรหัสอิเล็กทรอนิกส์) และ CBC (Cipher Block Chaining) โหมดอัลกอริทึม ในทางตรงกันข้ามการเข้ารหัสตัวเลขใช้ CFB (ข้อเสนอแนะการเข้ารหัส) และ OFB (ข้อเสนอแนะการส่งออก) โหมดอัลกอริทึม
  5. Stream cipher ใช้ฟังก์ชั่น XOR ในการแปลงไฟล์ธรรมดาเป็นตัวเลขซึ่งเป็นเหตุผลว่าทำไมการกลับบิต XORed เป็นเรื่องง่าย ในขณะที่ Block ตัวเลขไม่ใช้ XOR ในการทำเช่นนั้น
  6. Block cipher ใช้คีย์เดียวกันเพื่อเข้ารหัสแต่ละบล็อคในขณะที่ stream cipher ใช้คีย์ที่แตกต่างกันสำหรับแต่ละไบต์

สรุป:

Block Cipher และ Stream Cipher นั้นมีความแตกต่างกันในเรื่องของการเข้ารหัสและถอดรหัส แนวคิดที่อยู่เบื้องหลังการเข้ารหัสบล็อกคือการแบ่งที่ราบออกเป็นบล็อกเพิ่มเติมเข้ารหัสบล็อกเหล่านั้น ในขณะที่กระแสการเข้ารหัสแปลงบิตธรรมดาโดยบิตคล้ายกับกระแส