รหัสบล็อกนี้เพียงแค่ XORs บล็อกข้อความ [...]
การที่คุณพูดถึง "การบล็อกข้อความ" ที่นี่แสดงว่าคุณกำลังทำงานจากหนึ่งในคำจำกัดความเริ่มต้นที่น่ากลัว (ผิด) ของ "บล็อกรหัส" ที่บอกว่าเป็นรหัสที่เข้ารหัสข้อความที่มีความยาวผันแปรได้ครั้งละหนึ่งบล็อก . คำอธิบายเบื้องต้นมากมายบอกว่า แต่นั่นไม่ใช่วิธีการใช้คำนี้โดยนักเข้ารหัสจริง ดังนั้นฉันจึงพบว่า "คำจำกัดความ" ที่เป็นมิตรกับผู้เริ่มต้นนั้นผิดและทำให้สับสน
รหัสบล็อกในการเข้ารหัสเชิงทฤษฎีเป็นอัลกอริทึมที่ตั้งใจให้เป็นการใช้งานในชีวิตจริงของ ตระกูลการเปลี่ยนแปลงแบบสุ่มเทียม- อัลกอริทึมคีย์ลับที่ใช้ฟังก์ชันที่เข้ารหัสบล็อกข้อมูลที่มีความยาวคงที่ในแบบที่ไม่สามารถแยกแยะได้ในทางปฏิบัติจากการเรียงสับเปลี่ยนที่สุ่มเลือกของโดเมน คำตอบนี้ในไซต์นี้มีเนื้อหาค่อนข้างยาวเกี่ยวกับเรื่องนี้
สิ่งที่คุณหมายถึงอย่างแม่นยำโดย "block cipher" ที่นี่เป็นสิ่งสำคัญเพราะถ้าคุณใช้ "cipher ที่เข้ารหัสข้อความที่มีความยาวผันแปรได้ครั้งละหนึ่งบล็อก" สิ่งที่ฉันวิจารณ์ ข้อเสนอของคุณที่นี่:
รหัสบล็อกนี้เพียง XORs บล็อกข้อความด้วยคีย์ที่แตกต่างกันซึ่งได้มาจากคีย์หลัก
... เป็นวิธีที่ดีในการสร้างรหัสความยาวผันแปรที่ปลอดภัยจากรหัสบล็อก (ในความหมายที่เหมาะสม) ที่ใช้กันอย่างแพร่หลาย โหมดการทำงานของ CTR ในความเป็นจริงทำงานตามบรรทัดเหล่านี้ âคุณสร้าง คีย์สตรีม (สิ่งที่คุณเรียกว่า "คีย์ต่าง ๆ ที่ได้มาจากมาสเตอร์คีย์") โดยใช้รหัสบล็อกกับตัวนับบล็อกข้อความ
อย่างไรก็ตาม มีช่องว่างขนาดใหญ่ในข้อเสนอของคุณ เนื่องจากคุณไม่ได้บอกว่าจะรับคีย์ย่อยจากมาสเตอร์คีย์ได้อย่างไร นอกจากจะถือว่าคีย์นั้น "ปลอดภัยด้วยการเข้ารหัส" หมายความว่าอย่างไรสำหรับสิ่งนี้ ปลอดภัยในแอปพลิเคชันนี้ และคุณบรรลุได้อย่างไร อันที่จริง นี่เป็นการต่อยอดที่ดีในการกล่าวถึงเครือข่ายการแทนที่/การเปลี่ยนรูป เพราะนั่นคือ "ซอสพิเศษ" ที่ AES ใช้เพื่อตอบสนองความต้องการนั้น ซึ่งคุณไม่สามารถบรรลุได้เลยหากสิ่งที่คุณมีคือปรมาจารย์ คีย์และ XOR
ดังนั้นเพื่อย้ำและสรุป:
- แม้จะมีสื่อสำหรับผู้เริ่มต้นมากมายที่บอกว่า "block cipher" เป็นอัลกอริทึมที่เข้ารหัสข้อความที่มีความยาวผันแปรได้ทีละบล็อก แต่นั่นไม่ใช่คำจำกัดความทางเทคนิคที่แท้จริงในการเข้ารหัส
- แนวคิดของคุณในการเข้ารหัสข้อความที่มีความยาวผันแปรได้โดยแยกเป็นบล็อกและ XORing แต่ละรายการแยกกันด้วยคีย์ที่สร้างด้วย "ตัวขยายคีย์" นั้นเป็นหัวใจหลัก ฟังดูดีและเป็นเรื่องธรรมดามาก
- อย่างไรก็ตาม คุณปัดเป่าว่าตัวขยายคีย์ของคุณทำงานอย่างไร และ นั่น เป็นที่ที่เทคนิคต่างๆ เช่น เครือข่ายการแทนที่/การเปลี่ยนแปลง (หรือทางเลือกอื่นๆ เช่น เครือข่าย Feistel) เข้ากันได้อย่างแม่นยำ เป็นหนึ่งในสิ่งที่ทำให้ AES เหมาะสมที่จะใช้เป็น "ตัวขยายคีย์" สำหรับแอปพลิเคชันนี้