อัลกอริธึมการเข้ารหัสข้อมูล IDEA อัลกอริธึมการเข้ารหัส IDEA

ส่งผลงานดีๆ ของคุณในฐานความรู้ได้ง่ายๆ ใช้แบบฟอร์มด้านล่าง

การทำงานที่ดีไปที่ไซต์">

นักศึกษา นักศึกษาระดับบัณฑิตศึกษา นักวิทยาศาสตร์รุ่นเยาว์ ที่ใช้ฐานความรู้ในการศึกษาและการทำงาน จะรู้สึกขอบคุณเป็นอย่างยิ่ง

โพสต์เมื่อ http://www.allbest.ru/

การแนะนำ

1. ส่วนการวิเคราะห์

1.1 อัลกอริทึม IDEA

1.2.1 อัลกอริทึม DES

1.2.2 อัลกอริธึม RC6

1.2.3 อัลกอริทึม GOST 28147-89

1.2.4 ข้อดีของ IDEA ที่เหนือกว่าระบบอะนาล็อก

1.4.1 สมุดรหัสอิเล็กทรอนิกส์ - สมุดรหัสอิเล็กทรอนิกส์

1.4.2 Cipher Feed Back - การโหลดไซเฟอร์เท็กซ์แบบย้อนกลับ

1.4.3 Output Feed Back - การโหลดข้อมูลเอาต์พุตแบบย้อนกลับ

1.4.4 ตัวนับ - การเข้ารหัสด้วยตัวนับ

1.4.5 ข้อดีของ Cipher Block Chaining มากกว่าอะนาล็อก

2. ส่วนการออกแบบ

2.3 การใช้งานซอฟต์แวร์

3. การทดลอง

บทสรุป

บรรณานุกรม

การแนะนำ

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

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

ตัวอย่างคลาสสิกของอัลกอริธึมดังกล่าวคืออัลกอริธึมการเข้ารหัสแบบสมมาตรที่แสดงด้านล่าง: - การทดแทนอย่างง่าย;

- การเรียงสับเปลี่ยนเดี่ยวด้วยคีย์

- การเรียงสับเปลี่ยนสองครั้ง

- การเรียงสับเปลี่ยน "Magic Square";

- การจัดเรียงใหม่ที่เรียบง่าย

การสูญเสียรูปแบบทางสถิติทั้งหมดของข้อความต้นฉบับโดยสิ้นเชิงถือเป็นข้อกำหนดที่สำคัญสำหรับการเข้ารหัสแบบสมมาตร ในการทำเช่นนี้ ตัวเลขจะต้องมี "เอฟเฟกต์หิมะถล่ม" เช่น จะต้องเกิดขึ้น การเปลี่ยนแปลงที่แข็งแกร่งบล็อกการเข้ารหัสที่มีการเปลี่ยนแปลง 1 บิตในข้อมูลอินพุต (ตามหลักการแล้วค่าของ 1/2 บิตของบล็อกการเข้ารหัสควรเปลี่ยนแปลง)

ปัจจุบันรหัสสมมาตรคือ:

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

· รหัสสตรีม ซึ่งมีการเข้ารหัสในแต่ละบิตหรือไบต์ของข้อความต้นฉบับ (ธรรมดา) โดยใช้แกมมา คุณสามารถสร้างรหัสสตรีมได้อย่างง่ายดายโดยใช้รหัสบล็อก (เช่น GOST 28147-89 ในโหมดแกมมา) ซึ่งเปิดใช้งานในโหมดพิเศษ

มีอัลกอริธึมมากมาย ยันต์สมมาตรพารามิเตอร์ที่สำคัญได้แก่:

·ความทนทาน;

· ความยาวคีย์;

· จำนวนรอบ;

ความยาวของบล็อกที่ประมวลผล

· ความซับซ้อนของการนำฮาร์ดแวร์/ซอฟต์แวร์ไปใช้

· ความซับซ้อนของการแปลง

1. ส่วนการวิเคราะห์

1.1 อัลกอริทึม IDEA

IDEA (อัลกอริธึมการเข้ารหัสข้อมูลระหว่างประเทศ, อัลกอริธึมสากลการเข้ารหัสข้อมูล) เป็นอัลกอริธึมการเข้ารหัสข้อมูลบล็อกแบบสมมาตรที่ได้รับการจดสิทธิบัตรโดย Ascom บริษัท สัญชาติสวิส นี่คืออัลกอริธึมการเข้ารหัสบล็อกแบบสมมาตรที่ถูกเสนอให้แทนที่มาตรฐาน DES เวอร์ชันเริ่มต้น อัลกอริทึมของ IDEAปรากฏในปี 1990 นักพัฒนาอัลกอริทึม Xuejia Lai และ James Massey จาก Swiss Institute ETH Zurich ตั้งชื่อให้ว่า PES (Proposed Encryption Standard)

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

IDEA ใช้การดำเนินการทางคณิตศาสตร์ต่อไปนี้:

- โมดูโลการเพิ่มระดับบิต 2 (การดำเนินการพิเศษหรือ);

- การบวกจำนวนเต็มโมดูโล 2 16 ที่ไม่ได้ลงนาม ;

- การคูณจำนวนเต็มที่ไม่ได้ลงนามแบบโมดูโล (2 16 +1) โดยมีบล็อกของศูนย์ 16 ตัวที่ถือเป็น 2 16 ;

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

โครงสร้างของอัลกอริทึม IDEA แสดงไว้ด้านล่าง (รูปที่ 1)

ข้าว. 1. อัลกอริธึมการเข้ารหัส IDEA

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

·โหมดการต่อบล็อก (CBC - Cipher Block Chaining)

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

· โหมดป้อนกลับเอาต์พุต (OFB - ป้อนกลับเอาต์พุต)

ในเรื่องนี้ งานหลักสูตรกำลังพิจารณาอยู่ การใช้งานซอฟต์แวร์อัลกอริธึมการเข้ารหัส IDEA (โหมด Cipher Feed Back)

1.2 การเปรียบเทียบแอนะล็อกของอัลกอริทึม IDEA

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

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

อัลกอริทึมใช้การผสมผสานระหว่างการแปลงแบบไม่เชิงเส้น (S-boxes) และการแปลงเชิงเส้น (การเรียงสับเปลี่ยน E, IP, IP-1)

เนื่องจาก DES ทำงานในบล็อก 64 บิตและใช้คีย์ 56 บิต ความยาวของคีย์นี้จึงสอดคล้องกับ 256 ชุดค่าผสม ซึ่งจนกระทั่งเมื่อเร็วๆ นี้ให้ระดับความปลอดภัยที่เพียงพอ (8 บิตแม้แต่บิตของคีย์ 64 บิตเต็มไม่ได้ใช้ บิตพาริตี มีขนาดเล็กที่สุด บิตที่สำคัญคีย์ไบต์) บล็อกข้อมูลอินพุตซึ่งประกอบด้วย 64 บิต จะถูกแปลงเป็นบล็อกเอาต์พุตที่มีความยาวเท่ากัน

เนื่องจากการใช้คีย์เข้ารหัส 56 บิต อัลกอริธึม DES จึงสามารถถอดรหัสได้โดยใช้กำลังดุร้ายในระบบคอมพิวเตอร์สมัยใหม่ใดๆ ในกรอบเวลาที่สมจริงมาก - หลายวัน

ดีเอส ระบบเข้ารหัสแบบสมมาตรซึ่งเดิมเรียกว่ารหัส Feistel แบบ 16 รอบ เดิมมีไว้สำหรับการใช้งานฮาร์ดแวร์ เมื่อใช้ DES เพื่อส่งข้อมูล เพื่อเข้ารหัสและถอดรหัสข้อความ หรือเพื่อสร้างและตรวจสอบรหัสตรวจสอบข้อความ (MAC) ผู้ส่งและผู้รับจะต้องทราบรหัสลับ

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

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

1.2.2 อัลกอริธึม RC6

อัลกอริทึม RC6 เป็นอัลกอริธึมการเข้ารหัสแบบบล็อกสมมาตรที่ได้มาจากอัลกอริธึม RC5

รหัส RC6 ที่เข้าร่วมการแข่งขัน AES รองรับความยาวบล็อก 128 บิตและความยาวคีย์ 128-, 192- และ 256- บิต แต่ตัวอัลกอริทึมสามารถกำหนดค่าให้รองรับช่วงความยาวบล็อกและคีย์ที่กว้างขึ้นได้ (ตั้งแต่ 0 ถึง 2040 บิต)

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

ข้าว. 3. อัลกอริธึมการเข้ารหัส RC6

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

o B = B + K 0 ม็อด 2 32

o D = D + K 1 ม็อด 2 32 ,

โดยที่ A, B, C, D เป็นค่าปัจจุบันของบล็อกย่อย 32 บิตที่ประมวลผลและ K 0 ...K 43 เป็นส่วนของคีย์ขยาย

การฟอกสีทางออกบางส่วนจะดำเนินการในลักษณะเดียวกัน:

o A = A + K 42 ม็อด 2 32

o C = C + K 43 ม็อด 2 32 .

ในแต่ละรอบของอัลกอริทึม จะมีการดำเนินการต่อไปนี้:

หรือ 1 = ฉ(B)<<< 5,

หรือ 2 = ฉ(D)<<< 5,

o A = ((A E เสื้อ 1)<<< t 2) + K 2i mod 2 32 ,

o C = ((C E เสื้อ 2)<<< t 1) + K 2i+1 mod 2 32 ,

โดยที่ t 1 และ t 2 เป็นตัวแปรชั่วคราว จำนวนบิตการหมุนต่อจำนวนบิตตัวแปรจะถูกกำหนดโดยค่าของบิตที่มีนัยสำคัญน้อยที่สุด 5 บิตของพารามิเตอร์ (t 1 หรือ t 2) ฟังก์ชัน f() จะดำเนินการดังต่อไปนี้ การแปลงกำลังสอง:

ฉ(x) = x * (2x + 1) ม็อด 2 32 .

เมื่อสิ้นสุดแต่ละรอบ บล็อกย่อยจะถูกเลื่อน

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

· โครงสร้างที่เรียบง่ายของอัลกอริธึมช่วยอำนวยความสะดวกในการวิเคราะห์

· อัลกอริธึมผู้เข้ารอบสุดท้ายของ AES ที่เร็วที่สุดบนแพลตฟอร์ม 32 บิต

· การเข้ารหัสและการถอดรหัสในอัลกอริธึม RC6 เกือบจะเหมือนกัน ข้อเสียของอัลกอริทึม:

· ความเร็วการเข้ารหัสซอฟต์แวร์ขึ้นอยู่กับว่าแพลตฟอร์มรองรับการคูณแบบ 32 บิตและการหมุนบิตแปรผันหรือไม่

· RC6 ยากต่อการนำไปใช้ในฮาร์ดแวร์และในสภาวะที่มีทรัพยากรจำกัด

· การป้องกันการโจมตีในแง่ของเวลาดำเนินการและการใช้พลังงานค่อนข้างยาก

· ไม่รองรับการขยายคีย์แบบทันทีอย่างสมบูรณ์

· การคำนวณแบบขนานเมื่อเข้ารหัสด้วยอัลกอริธึม RC6 สามารถทำได้โดยมีข้อจำกัด

1.2.3 อัลกอริทึม GOST 28147-89

GOST 28147-89 เป็นมาตรฐานการเข้ารหัสแบบสมมาตรของโซเวียตและรัสเซียที่เปิดตัวในปี 1990 และเป็นมาตรฐาน CIS เช่นกัน ชื่อเต็ม - “GOST 28147-89 ระบบประมวลผลข้อมูล การป้องกันการเข้ารหัส อัลกอริธึมการแปลงการเข้ารหัส”

โครงสร้างของอัลกอริทึมแสดงไว้ด้านล่าง (รูปที่ 4)

ข้าว. 4. อัลกอริธึมการเข้ารหัส GOST 28147-89

อัลกอริธึมการเข้ารหัสบล็อก เมื่อใช้วิธีการเข้ารหัสแกมม่า จะสามารถทำหน้าที่ของอัลกอริธึมการเข้ารหัสสตรีมได้ GOST 28147-89 - รหัสบล็อกพร้อมคีย์ 256 บิตและรอบการแปลง 32 รอบ ทำงานบนบล็อก 64 บิต พื้นฐานของอัลกอริธึมการเข้ารหัสคือเครือข่าย Feistel มีโหมดการทำงานสี่โหมดตาม GOST 28147-89: การแทนที่อย่างง่าย การเล่นเกม การเล่นเกมพร้อมข้อเสนอแนะ และโหมดการสร้างการแทรกการจำลอง

ข้อดีของอัลกอริธึม: ความไร้ประโยชน์ของการโจมตีด้วยกำลัง, ประสิทธิภาพของการใช้งานและดังนั้นประสิทธิภาพสูงในคอมพิวเตอร์สมัยใหม่, การมีอยู่ของการป้องกันการเก็บรวบรวมข้อมูลที่เป็นเท็จ (การสร้างการแทรกเลียนแบบ) และวงจรการเข้ารหัสเดียวกันในทั้งหมด อัลกอริธึม GOST สี่อัน ซึ่งเป็นคีย์ที่ใหญ่กว่าเมื่อเทียบกับอัลกอริธึม DESX

ข้อเสียของอัลกอริทึม: ปัญหาหลักของ GOST เกี่ยวข้องกับความไม่สมบูรณ์ของมาตรฐานในแง่ของการสร้างคีย์และตารางการแทนที่ เชื่อกันว่า GOST มีคีย์ "อ่อนแอ" และตารางทดแทน แต่มาตรฐานไม่ได้อธิบายเกณฑ์ในการเลือกและกำจัดคีย์ "อ่อนแอ" นอกจากนี้ มาตรฐานไม่ได้ระบุอัลกอริทึมสำหรับการสร้างตารางการทดแทน (S-boxes) ในอีกด้านหนึ่ง นี่อาจเป็นข้อมูลลับเพิ่มเติม (นอกเหนือจากคีย์) และในทางกลับกัน ทำให้เกิดปัญหาหลายประการ: เป็นไปไม่ได้ที่จะกำหนดความแข็งแกร่งของการเข้ารหัสของอัลกอริทึมโดยไม่ทราบตารางการทดแทนล่วงหน้า ; การใช้งานอัลกอริธึมจากผู้ผลิตหลายรายอาจใช้ตารางทดแทนที่แตกต่างกันและอาจเข้ากันไม่ได้ ความเป็นไปได้ของการจัดหาตารางทดแทนที่อ่อนแอโดยเจตนาโดยหน่วยงานออกใบอนุญาตของสหพันธรัฐรัสเซีย

1.2.4 ข้อดี ความคิด นำหน้าอะนาล็อก

ในการใช้งานซอฟต์แวร์บน Intel486SX เร็วเป็นสองเท่าของ DES IDEA ซึ่งเพิ่มขึ้นอย่างมากในความเร็ว ความยาวคีย์ของ IDEA คือ 128 บิต เทียบกับ 56 บิตสำหรับ DES ซึ่งเป็นการปรับปรุงที่ดีเมื่อเทียบกับคีย์แบบ brute-force ความน่าจะเป็นของการใช้คีย์ที่อ่อนแอนั้นมีน้อยมากและเป็น 1/2 64 IDEA เร็วกว่าอัลกอริทึม GOST 28147-89 (ในการใช้งานซอฟต์แวร์บน Intel486SX) การใช้ IDEA ในโหมดการเข้ารหัสแบบขนานบนโปรเซสเซอร์ Pentium III และ Pentium MMX ช่วยให้ได้รับความเร็วสูง เมื่อเปรียบเทียบกับผู้เข้ารอบสุดท้ายของ AES แล้ว IDEA 4 ทิศทางจะช้ากว่า RC6 และ Rijndael บน Pentium II เพียงเล็กน้อยเท่านั้น แต่เร็วกว่า Twofish และ MARS บน Pentium III 4-way IDEA นั้นเร็วกว่า RC6 และ Rijndael ด้วยซ้ำ ข้อดีอีกประการหนึ่งคือได้รับการศึกษาอย่างดีและทนทานต่อเครื่องมือวิเคราะห์การเข้ารหัสที่มีชื่อเสียง

1.3 โหมด Cipher Block Chaining - การต่อบล็อกโดยใช้ไซเฟอร์เท็กซ์

ในโหมดการเข้ารหัส CBC บล็อกข้อความทั้งหมดจะ "ต่อกัน" โดยใช้ไซเฟอร์เท็กซ์

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

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

ดังนั้น สำหรับ i = 1...n ทั้งหมด บล็อกไซเฟอร์เท็กซ์ C(i) จึงถูกกำหนดไว้ดังนี้:

C(i) = IDEA(M(i) x หรือ C(i-1))

การถอดรหัสจะดำเนินการดังนี้:

M(i) = C(i-1) x หรือ IDEA-1(C(i))

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

1.4 การเปรียบเทียบอะนาล็อกของโหมดการเข้ารหัส CBC

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

1.4.1 หนังสือรหัสอิเล็กทรอนิกส์ - หนังสือรหัสอิเล็กทรอนิกส์

โหมดนี้เป็นอะนาล็อกอิเล็กทรอนิกส์ของโหมดที่ตัวแทนใช้เพื่อส่งข้อความที่เข้ารหัสกลับไปในตอนแรก ศตวรรษที่ XX เจ้าหน้าที่ได้รับสมุดบันทึก ซึ่งแต่ละหน้ามีลำดับที่ไม่ซ้ำกัน ซึ่งเป็นรหัสที่ใช้เข้ารหัสข้อความ หลังการใช้งานหน้าดังกล่าวถูกฉีกออกจากสมุดบันทึกและถูกทำลาย หากจำเป็น ข้อความจะถูกเสริมเพื่อไม่ให้มีโค้ดที่ไม่ได้ใช้เหลืออยู่ในหน้าที่ฉีกออก ฝ่ายที่ได้รับมีสำเนาของกระดาษจดบันทึก ดังนั้น หากมีการใช้เพจพร้อมกัน โหมดการเข้ารหัสนี้จึงมีทั้งการเข้ารหัสและถอดรหัสข้อความ ใน ECB การใช้สมุดโค้ดหนึ่งหน้าเมื่อเข้ารหัสสอดคล้องกับการใช้การแปลงข้อมูลอินพุตโดยใช้ฟังก์ชัน CIPH k และเมื่อถอดรหัส - CIPH -1 k เพื่อให้ทั้งสองฝ่ายซิงโครไนซ์ ก็เพียงพอที่จะตกลงกับค่าของคีย์ลับ K

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

C เจ = CIPH K (P เจ) ,

โดยที่ j=1…n

การถอดรหัส ECB:

P เจ = CIPH K (C เจ)

โดยที่ j=1…n

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

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

1.4.2 การเข้ารหัสฟีดกลับ

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

ในโหมดนี้ ขนาดบล็อกอาจแตกต่างกันไปจาก 64 ไฟล์ต้นฉบับ M จะถูกอ่านในบล็อก t-bit ที่ต่อเนื่องกัน (t<= 64): M = M(1)M(2)...M(n) (остаток дописывается нулями или пробелами).

รีจิสเตอร์กะ 64 บิต (บล็อกอินพุต) มี IV ที่ถูกจัดชิดขอบก่อน สำหรับแต่ละเซสชันการเข้ารหัส จะมีการใช้เวกเตอร์การเริ่มต้นใหม่

สำหรับ i = 1...n ทั้งหมด บล็อกไซเฟอร์เท็กซ์ C(i) ถูกกำหนดไว้ดังนี้:

C(i) = M(i) xหรือ P(i-1)

โดยที่ P(i-1) เป็นบิตที่มีนัยสำคัญที่สุดของการดำเนินการ IDEA(C(i-1)) และ C(0) = IV

รีจิสเตอร์ shift ได้รับการอัพเดตโดยการลบบิต t ที่สูงที่สุดออกและเพิ่ม C(i) ทางด้านขวา

การกู้คืนข้อมูลที่เข้ารหัสก็ทำได้ง่ายเช่นกัน: P(i-1) และ C(i) ได้รับการคำนวณในลักษณะเดียวกัน และ M(i) = C(i) xor P(i-1)

1.4.3 ผลตอบรับขาออก

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

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

ดังนั้น ในอัลกอริธึม OFB จำเป็นต้องหลีกเลี่ยงการไม่เพียงแต่การทำซ้ำของเวกเตอร์การเริ่มต้นเท่านั้น แต่ยังรวมถึงบล็อก j-th ใดๆ ของข้อมูลอินพุตฟังก์ชันสำหรับข้อความหนึ่งจะไม่ถูกใช้เป็นเวกเตอร์การเริ่มต้นสำหรับข้อความอื่น ด้านล่างนี้เป็นสมการสำหรับการเข้ารหัส OFB: การเข้ารหัส OFB:

ฉัน เจ = O เจ -1 , เจ = 1.2, … n

C j = P j + O j , j = 1.2, … n-1

C n = P n + MSB เสื้อ (O n)

การถอดรหัส OFB:

ฉัน เจ = โอ เจ - 1 , เจ = 2, … n

O j = CIPH K (ฉัน j), j = 1.2, … n

P j = C j + O j , j = 1.2, … n-1

P n = C n + MSB เสื้อ (O n) ,

โดยที่ "+" คือการดำเนินการ xor

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

1.4.4 เคาน์เตอร์ - การเข้ารหัสด้วยตัวนับ

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

ในความเป็นจริง ข้อกำหนดของความเป็นเอกลักษณ์ของข้อมูลอินพุตของฟังก์ชันที่ค่า K ที่แน่นอนจะตอบสนองได้ในกรณีของการใช้ PRC (ตัวสร้างโค้ดสุ่มเทียม) แต่จากนั้นจำเป็นต้องใช้เวกเตอร์การเริ่มต้นเริ่มต้นสำหรับ PRC ในชิ้นส่วนนั้น ของผู้ส่งและผู้รับข้อความ

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

การถอดรหัส CTR:

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

1.4.5 ข้อดีของ Cipher Block Chaining มากกว่าระบบอะนาล็อก

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

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

2. ส่วนการออกแบบ

2.1 การสร้างแบบจำลองเชิงหน้าที่

ขึ้นอยู่กับข้อกำหนดของซอฟต์แวร์ มีการกำหนดฟังก์ชันต่อไปนี้:

·การลงทะเบียนผู้ใช้กับฟิลด์:

· การเข้ารหัสข้อความต้นฉบับ

·การถอดรหัสข้อความที่เข้ารหัส

· แสดงให้ผู้ใช้เห็นถึงขั้นตอนสุดท้ายของการเข้ารหัสและการถอดรหัสเมื่อการอนุญาตสำเร็จ

2.2 การออกแบบอัลกอริทึม

อัลกอริธึมการเข้ารหัส IDEA ทั่วไปแสดงอยู่ด้านล่าง (รูปที่ 5)

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

บล็อกข้อมูล 64 บิตถูกอ่านจากไฟล์และแบ่งออกเป็นบล็อกย่อย 16 บิตสี่บล็อก บล็อกย่อยทั้งสี่นี้จะกลายเป็นอินพุตของลูปแรกของอัลกอริทึม ในรูปบล็อกย่อยเหล่านี้ถูกกำหนดให้เป็น D 1, D 2, D 3, D 4 แต่ละรอบใช้คีย์ย่อยของตัวเองตามตารางคีย์ย่อย (รูปที่ 6) การดำเนินการที่อธิบายไว้ก่อนหน้านี้และนำเสนอในแผนภาพอัลกอริทึมจะดำเนินการกับบล็อกย่อย 16 บิตและบล็อกย่อยข้อความธรรมดา

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

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

ผู้ใช้จะเห็นข้อความที่เข้ารหัสหลังจากการอนุญาตสำเร็จ

วิธีการคำนวณที่ใช้ในการถอดรหัสข้อความโดยพื้นฐานแล้วจะเหมือนกับวิธีที่ใช้ในการเข้ารหัส ข้อแตกต่างเพียงอย่างเดียวคือมีการใช้คีย์ย่อยที่แตกต่างกันในการถอดรหัส ในระหว่างกระบวนการถอดรหัส ต้องใช้คีย์ย่อยในลำดับย้อนกลับ คีย์ย่อยที่หนึ่งและสี่ของการถอดรหัสรอบที่ i ได้มาจากคีย์ย่อยที่หนึ่งและที่สี่ของการเข้ารหัสรอบ (10-i) โดยการผกผันแบบทวีคูณ สำหรับรอบที่ 1 และ 9 คีย์ย่อยของการถอดรหัสที่สองและสามจะได้รับจากคีย์ย่อยที่สองและสามของการเข้ารหัสรอบที่ 9 และ 1 โดยการผกผันเพิ่มเติม สำหรับรอบที่ 2 ถึง 8 คีย์ย่อยของการถอดรหัสที่สองและสามจะได้รับจากคีย์ย่อยที่สามและที่สองของรอบที่ 8 ถึง 2 ของการเข้ารหัสแบบผกผันเพิ่มเติม คีย์ย่อยสองคีย์สุดท้ายของการถอดรหัสรอบที่ i เท่ากับคีย์ย่อยสองคีย์สุดท้ายของการเข้ารหัสรอบ (9-i) -th

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

ข้าว. 5. โครงสร้างอัลกอริทึม IDEA

ข้าว. 6. เชื่อมต่อ IDEA อัลกอริธึมการเข้ารหัสและถอดรหัส

2.3 การใช้งานซอฟต์แวร์

งานของหลักสูตรถูกนำไปใช้ในสภาพแวดล้อมการเขียนโปรแกรม Microsoft Visual Studio 2012 ภาษาการเขียนโปรแกรมที่ใช้ในการเขียนงานคือ C#

รายการขั้นตอนหลัก - ตัวจัดการซึ่งมีฟังก์ชันการทำงานของโปรแกรมที่กำลังพัฒนา:

· ฟังก์ชัน public static int idea_hash_cbc (char *s, int len, int k, int iv) สำหรับการคำนวณแฮช CBC ในฟังก์ชันนี้ เราได้รับค่าปัจจุบันสำหรับ XOR (iv) สร้างตัวชี้ไปยังอาร์เรย์ของข้อมูลที่แฮช แบ่งขนาดของอาร์เรย์ด้วย 8 (เราตรวจสอบผลคูณของ 8) เข้ารหัสโดยใช้สูตร: C(i ) = IDEA(C(i- 1) ^ S(i), KEY) และส่งคืนแฮชผลลัพธ์

· สตริงคงที่ส่วนตัว ShiftByteLeft(string s) เลื่อนไปทางซ้าย 25 บิต

· สตริงคงที่ส่วนตัว ShiftbyteRight(string s) เลื่อน 25 บิตวนไปทางขวา

· ผลรวมสตริงคงที่ส่วนตัว (สตริง a1, สตริง a2) รวมโมดูโล 2^16

· สตริงคงที่ส่วนตัว หลาย (สตริง a1, สตริง a2) การคูณโมดูโล 2^16+1 สตริงคงที่ส่วนตัว XOR (สตริง a1, สตริง a2) เอกสิทธิ์เฉพาะบุคคล หรือ

· ฟังก์ชั่นการตั้งค่าบิต T setBit (T v, int nBitNumber) แบบอินไลน์ บิตนับจาก 0 ลำดับเลขเริ่มจากซ้ายไปขวา

· ฟังก์ชัน inline bool getBit (T v, int nBitNumber) สำหรับรับค่าบิต (จริง/เท็จ)

แผนที่ *>keys_archive; การเก็บถาวรตารางของคีย์ "กลม" เพื่อไม่ให้สร้างคีย์ใหม่ทุกครั้ง (ฟังก์ชันประกอบด้วย: การเรียงสับเปลี่ยนคีย์เริ่มต้น การเรียงสับเปลี่ยนคีย์ขั้นสุดท้าย การเปลี่ยนแปลง ตารางการแทนที่) โมฆะส่วนตัว idea_Encryption (สตริง st1, สตริง st2) อัลกอริทึม IDEA อินพุต - 2 บรรทัด: 1) ชุดบิตของบล็อกการอ่าน (ความยาว 64) 2) ชุดบิตของคีย์ของเรา (ความยาว 128) เอาต์พุต - บล็อกการเข้ารหัส (64 อักขระ) สตริงสาธารณะ idea_Decryption (สตริง st1, สตริง st2) ฟังก์ชันถอดรหัสโดยใช้อัลกอริทึม IDEA

· ฟังก์ชัน bool CheckLogin(int hash) อ่านการเข้าสู่ระบบ หากแฮชของอาร์กิวเมนต์เท่ากับการเข้าสู่ระบบที่อ่าน ก็จะปิดไฟล์และให้ผลลัพธ์ที่เป็นบวก ถ้าไม่เช่นนั้นจะแสดงข้อความ “เข้าสู่ระบบไม่ถูกต้อง”

· ฟังก์ชัน bool CheckPass(int login_hash, int pass_hash) อ่านข้อมูลเข้าสู่ระบบและรหัสผ่าน หากข้อมูลเข้าสู่ระบบเท่ากับรหัสผ่านที่ร้องขอ แต่รหัสผ่านไม่ตรงกัน ไฟล์จะปิดไฟล์และแสดงข้อความ “รหัสผ่านไม่ถูกต้อง” หากการเข้าสู่ระบบและรหัสผ่านตรงกัน ฟังก์ชันจะส่งคืน "true"

โปรแกรมประกอบด้วยสามรูปแบบ: แบบฟอร์มลงทะเบียน (รูปที่ 7.) แบบฟอร์มการอนุญาต (รูปที่ 8.) และแบบฟอร์มพร้อมเอาต์พุตของข้อความที่เข้ารหัสและถอดรหัส (รูปที่ 9.) แบบฟอร์มเหล่านี้แสดงไว้ด้านล่าง

การรับรองความถูกต้องการเข้ารหัสบล็อกซอฟต์แวร์

รูปที่ 8. แบบฟอร์มลงทะเบียน

รูปที่ 9. แบบฟอร์มการออกข้อมูล

3. การทดลอง

ทดสอบ 1. ทดสอบการเข้าสู่ระบบของผู้ใช้

ป้อนข้อมูล:

· คลิกที่ปุ่มเข้าสู่ระบบโดยไม่ต้องเข้าสู่ระบบ

ผลลัพธ์:

· ข้อความผิดพลาด. กรุณาป้อนข้อมูลเข้าสู่ระบบของคุณ

ทดสอบ 2. ทดสอบการตรวจสอบรหัสผ่านผู้ใช้ที่ป้อน

ป้อนข้อมูล:

· คลิกปุ่มเข้าสู่ระบบโดยไม่ต้องกรอกรหัสผ่าน

ผลลัพธ์:

· ข้อความผิดพลาด. กรุณาใส่รหัสผ่านของคุณ

สรุป: ฟังก์ชั่นการตรวจสอบทำงานอย่างถูกต้อง

ทดสอบ 3. ทดสอบฟังก์ชันการเข้ารหัสด้วยความยาวข้อความไม่เกิน 50 อักขระ

ป้อนข้อมูล:

· ชื่อเต็ม: ข้อความบางส่วน

ทดสอบ 4. ทดสอบฟังก์ชันการเข้ารหัสเมื่อข้อความมีความยาวมากกว่า 50 ตัวอักษร

ป้อนข้อมูล:

· ชื่อเต็ม: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua

สรุป: ฟังก์ชั่นการเข้ารหัสทำงานได้อย่างถูกต้อง

การทดสอบ 4: การเพิ่มอักขระที่จุดเริ่มต้นของแฮชที่เข้ารหัส

การทดสอบ 5: การเพิ่มอักขระตรงกลางแฮชที่เข้ารหัส

สรุป: ส่วนหนึ่งของข้อความจะไม่ถูกถอดรหัส

บทสรุป

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

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

ในส่วนของการทดลอง ซอฟต์แวร์ได้รับการทดสอบ 5 ครั้ง ไม่พบข้อผิดพลาดในการใช้อัลกอริทึมหรือการทำงานของซอฟต์แวร์

บรรณานุกรม

1. วิกิพีเดีย. อัลกอริทึม IDEA [ทรัพยากรอิเล็กทรอนิกส์] - โหมดการเข้าถึง: - http://ru.wikipedia.org/wiki/IDEA

2. MSDN [ทรัพยากรอิเล็กทรอนิกส์] - โหมดการเข้าถึง: - http://msdn.microsoft.com/ru-ru/

3. วิกิพีเดีย. โหมดการต่อข้อมูลของบล็อกไซเฟอร์เท็กซ์ [ทรัพยากรอิเล็กทรอนิกส์] - โหมดการเข้าถึง: - https://ru.wikipedia.org/wiki/Mode_concatenation_of_ciphertext_blocks

4. [ทรัพยากรอิเล็กทรอนิกส์] - Oleg Zenzin - โหมดการเข้ารหัสส่วนการสะสมข้อผิดพลาดในโหมดการเข้ารหัสต่างๆ - โหมดการเข้าถึง: - http://citforum.ru/security/cryptography/rejim_shifrov/

5. [ทรัพยากรอิเล็กทรอนิกส์] - การตรวจสอบเปรียบเทียบอัลกอริธึม PGP - โหมดการเข้าถึง: - https://www.pgpru.com/biblioteka/statji/sravniteljnyjjobzoralgoritmovpgp

โพสต์บน Allbest.ru

เอกสารที่คล้ายกัน

    การใช้อัลกอริทึม DES และโหมดการเข้ารหัสสำหรับความยาวข้อความและความยาวของคีย์ การเข้ารหัสข้อความที่มีความยาวและคีย์ต่างๆ วัดเวลาและความเร็วของการเข้ารหัส การใช้อัลกอริทึม RSA บันทึกไฟล์ที่เข้ารหัสลงในดิสก์

    งานหลักสูตรเพิ่มเมื่อ 26/01/2010

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

    งานหลักสูตรเพิ่มเมื่อ 27/03/2555

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

    งานห้องปฏิบัติการ เพิ่มเมื่อ 18/03/2556

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

    งานหลักสูตร เพิ่มเมื่อ 17/02/2554

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

    งานหลักสูตร เพิ่มเมื่อ 29/10/2017

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

    ทดสอบเพิ่มเมื่อ 26/09/2555

    การพัฒนาโปรแกรมที่ใช้ขั้นตอนการเข้ารหัสและถอดรหัสข้อความตามมาตรฐาน DES (Data Encryption Standard) โครงสร้างของอัลกอริธึมการเข้ารหัสแบบแผนการพัฒนาองค์ประกอบสำคัญ การใช้ซอฟต์แวร์เข้ารหัส

    งานหลักสูตรเพิ่มเมื่อ 15/06/2556

    การพัฒนาอัลกอริธึมการเข้ารหัสสำหรับโปรแกรมเข้ารหัสแบบแมนนวลโดยใช้ตารางVigenère การพัฒนาโปรแกรมที่ทำการเข้ารหัสและถอดรหัส คุณสมบัติของการใช้ข้อความธรรมดาเป็นคีย์ อัลกอริทึมสำหรับการแก้ปัญหา "ผกผัน"

    งานหลักสูตร เพิ่มเมื่อ 11/13/2552

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

    งานหลักสูตรเพิ่มเมื่อ 03/11/2013

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

การแนะนำ

ส่วนการวิเคราะห์

1 อัลกอริทึม IDEA

2 การเปรียบเทียบแอนะล็อกของอัลกอริทึม IDEA

2.1 อัลกอริทึม DES

2.2 อัลกอริธึม RC6

2.3 อัลกอริทึม GOST 28147-89

2.4 ข้อดีของ IDEA เหนือระบบอะนาล็อก

3 โหมด Cipher Block Chaining - การต่อบล็อกโดยใช้ไซเฟอร์เท็กซ์

4 การเปรียบเทียบอะนาล็อกของโหมดการเข้ารหัส CBC

4.1 สมุดรหัสอิเล็กทรอนิกส์ - สมุดรหัสอิเล็กทรอนิกส์

4.2 Cipher Feed Back - การโหลดไซเฟอร์เท็กซ์แบบย้อนกลับ

4.3 Output Feed Back - การโหลดข้อมูลเอาต์พุตแบบย้อนกลับ

4.4 ตัวนับ - การเข้ารหัสด้วยตัวนับ

4.5 ข้อดีของ Cipher Block Chaining มากกว่าอะนาล็อก

ส่วนการออกแบบ

1 การสร้างแบบจำลองเชิงฟังก์ชัน

2 การออกแบบอัลกอริทึม

3 การใช้งานซอฟต์แวร์

ส่วนทดลอง

บทสรุป

บรรณานุกรม

การแนะนำ

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

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

ตัวอย่างคลาสสิกของอัลกอริธึมดังกล่าวคืออัลกอริธึมการเข้ารหัสแบบสมมาตรที่แสดงด้านล่าง: - การทดแทนอย่างง่าย;

การเรียงสับเปลี่ยนเดี่ยวด้วยคีย์

การเรียงสับเปลี่ยนสองครั้ง

การเรียงสับเปลี่ยน "Magic Square";

การจัดเรียงใหม่ที่เรียบง่าย

การสูญเสียรูปแบบทางสถิติทั้งหมดของข้อความต้นฉบับโดยสิ้นเชิงถือเป็นข้อกำหนดที่สำคัญสำหรับการเข้ารหัสแบบสมมาตร ในการทำเช่นนี้ ตัวเลขจะต้องมี "เอฟเฟกต์หิมะถล่ม" เช่น ควรมีการเปลี่ยนแปลงอย่างมากในบล็อกการเข้ารหัสโดยมีการเปลี่ยนแปลงข้อมูลอินพุต 1 บิต (ตามหลักการแล้วค่าของ 1/2 บิตของบล็อกการเข้ารหัสควรเปลี่ยนแปลง)

ปัจจุบันรหัสสมมาตรคือ:

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

· รหัสสตรีมซึ่งมีการเข้ารหัสในแต่ละบิตหรือไบต์ของข้อความต้นฉบับ (ธรรมดา) โดยใช้แกมมา คุณสามารถสร้างรหัสสตรีมได้อย่างง่ายดายโดยใช้รหัสบล็อก (เช่น GOST 28147-89 ในโหมดแกมมา) ซึ่งเปิดใช้งานในโหมดพิเศษ

มีอัลกอริธึมการเข้ารหัสแบบสมมาตรจำนวนมาก พารามิเตอร์ที่สำคัญ ได้แก่:

· ความทนทาน;

· ความยาวคีย์;

· จำนวนรอบ;

· ความยาวของบล็อกที่ประมวลผล

· ความซับซ้อนของการนำฮาร์ดแวร์/ซอฟต์แวร์ไปใช้

· ความซับซ้อนของการแปลง

1.ส่วนการวิเคราะห์

1อัลกอริทึมของ IDEA

IDEA (อังกฤษ: อัลกอริธึมการเข้ารหัสข้อมูลระหว่างประเทศ อัลกอริธึมการเข้ารหัสข้อมูลระหว่างประเทศ) เป็นอัลกอริธึมการเข้ารหัสข้อมูลแบบบล็อกสมมาตรที่ได้รับการจดสิทธิบัตรโดย Ascom บริษัทสัญชาติสวิส นี่คืออัลกอริธึมการเข้ารหัสบล็อกแบบสมมาตรที่ถูกเสนอให้แทนที่มาตรฐาน DES อัลกอริธึม IDEA เวอร์ชันเริ่มต้นปรากฏในปี 1990 นักพัฒนาอัลกอริทึม Xuejia Lai และ James Massey จาก Swiss Institute ETH Zurich ตั้งชื่อให้ว่า PES (Proposed Encryption Standard)

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

IDEA ใช้สิ่งต่อไปนี้ การดำเนินการทางคณิตศาสตร์:

 การบวกแบบโมดูโลระดับบิต 2 (การดำเนินการ "เฉพาะหรือ");

 การบวกจำนวนเต็มโมดูโล 2 ที่ไม่ได้ลงนาม 16;

 การคูณจำนวนเต็มแบบโมดูโลที่ไม่ได้ลงนาม (2 16+1) โดยมีบล็อกศูนย์ 16 ตัวที่ถือเป็น 2 16;

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

โครงสร้างของอัลกอริทึม IDEA แสดงไว้ด้านล่าง (รูปที่ 1)

ข้าว. 1. อัลกอริธึมการเข้ารหัส IDEA

· โหมดสมุดรหัสอิเล็กทรอนิกส์ (ECB - Electronic Code Book)

· โหมดการต่อบล็อก (CBC - Cipher Block Chaining)

· โหมด cipherfeedback (CFB - Cipher Feed Back)

· โหมดป้อนกลับเอาต์พุต (OFB - ฟีดเอาต์พุตกลับ)

งานในหลักสูตรนี้จะตรวจสอบการใช้งานซอฟต์แวร์ของอัลกอริธึมการเข้ารหัส IDEA (โหมด Cipher Feed Back)

1.2การเปรียบเทียบแอนะล็อกของอัลกอริทึม IDEA

1.2.1อัลกอริทึม DES

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

อัลกอริทึมใช้การผสมผสานระหว่างการแปลงแบบไม่เชิงเส้น (S-boxes) และการแปลงเชิงเส้น (การเรียงสับเปลี่ยน E, IP, IP-1)

เนื่องจาก DES ทำงานในบล็อก 64 บิตและใช้คีย์ 56 บิต ความยาวของคีย์นี้จึงสอดคล้องกับ 256 ชุดค่าผสม ซึ่งจนกระทั่งเมื่อเร็วๆ นี้ให้ระดับความปลอดภัยที่เพียงพอ (8 บิตแม้แต่บิตของคีย์ 64 บิตเต็มไม่ได้ใช้ บิตพาริตี เป็นไบต์คีย์บิตที่มีนัยสำคัญน้อยที่สุด) บล็อกข้อมูลอินพุตซึ่งประกอบด้วย 64 บิต จะถูกแปลงเป็นบล็อกเอาต์พุตที่มีความยาวเท่ากัน

เนื่องจากการใช้คีย์เข้ารหัส 56 บิต อัลกอริธึม DES จึงสามารถถอดรหัสได้โดยใช้กำลังดุร้ายในสมัยใหม่ใดๆ ระบบคอมพิวเตอร์ในกรอบเวลาที่สมจริงมาก - หลายวัน ระบบเข้ารหัสแบบสมมาตรซึ่งถูกกำหนดให้เป็นรหัส Feistel 16 รอบ เดิมมีไว้สำหรับการใช้งานฮาร์ดแวร์ เมื่อใช้ DES เพื่อส่งข้อมูล เพื่อเข้ารหัสและถอดรหัสข้อความ หรือเพื่อสร้างและตรวจสอบรหัสตรวจสอบข้อความ (MAC) ผู้ส่งและผู้รับจะต้องทราบรหัสลับ

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

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

1.2.2อัลกอริทึม RC6

รหัส RC6 ที่เข้าร่วมการแข่งขัน AES รองรับบล็อก 128 บิตและคีย์ 128-, 192- และ 256- บิต แต่สามารถกำหนดค่าอัลกอริทึมให้รองรับเพิ่มเติมได้ หลากหลายความยาวของทั้งบล็อกและคีย์ (ตั้งแต่ 0 ถึง 2040 บิต)

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

ข้าว. 3. อัลกอริธึมการเข้ารหัส RC6

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

โอ ข = ข + เค 0รุ่น 2 32

โอ ด=ดี+เค 1รุ่น 2 32,

โดยที่ A, B, C, D คือค่าปัจจุบันของบล็อกย่อย 32 บิตที่กำลังประมวลผล และ K 0...เค 43- ส่วนของคีย์ขยาย

การฟอกสีทางออกบางส่วนจะดำเนินการในลักษณะเดียวกัน:

โอ ก = เอ + เค 42รุ่น 2 32

โอ ค=ซี+เค 43รุ่น 2 32.

ในแต่ละรอบของอัลกอริทึม จะมีการดำเนินการต่อไปนี้:

โอ ที 1= ฉ(บี)<<< 5,

โอ ที 2= ฉ(ง)<<< 5,

โอ A = ((A Å ต 1) <<< t2) + เค 2i รุ่น 2 32,

โอ C = ((C Å ต 2) <<< t1) + เค 2i+1 รุ่น 2 32,

ที่ไหน 1และที 2- ตัวแปรชั่วคราว จำนวนบิตการหมุนต่อจำนวนบิตตัวแปรถูกกำหนดโดยค่าของบิตที่มีนัยสำคัญน้อยที่สุด 5 บิตของพารามิเตอร์ (t 1หรือต 2) ฟังก์ชัน f() จะทำการแปลงกำลังสองต่อไปนี้:

(x) = x * (2x + 1) ม็อด 2 32.

เมื่อสิ้นสุดแต่ละรอบ บล็อกย่อยจะถูกเลื่อน

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

· โครงสร้างที่เรียบง่ายของอัลกอริทึมช่วยให้วิเคราะห์ได้ง่ายขึ้น

· อัลกอริธึมผู้เข้ารอบสุดท้ายของ AES ที่เร็วที่สุดบนแพลตฟอร์ม 32 บิต

· การเข้ารหัสและการถอดรหัสในอัลกอริธึม RC6 เกือบจะเหมือนกัน ข้อเสียของอัลกอริทึม:

· ความเร็วของการเข้ารหัสในซอฟต์แวร์ขึ้นอยู่กับว่าแพลตฟอร์มรองรับการคูณแบบ 32 บิตและการหมุนบิตแบบแปรผันหรือไม่

· RC6 นั้นยากต่อการนำไปใช้ในฮาร์ดแวร์และในสภาวะที่มีทรัพยากรจำกัด

· การป้องกันการโจมตีในแง่ของเวลาดำเนินการและการใช้พลังงานค่อนข้างยาก

· ไม่รองรับการขยายคีย์แบบทันทีอย่างสมบูรณ์

· การคำนวณแบบขนานเมื่อเข้ารหัสด้วยอัลกอริธึม RC6 สามารถทำได้โดยมีข้อจำกัด

1.2.3อัลกอริทึม GOST 28147-89

GOST 28147-89 เป็นมาตรฐานการเข้ารหัสแบบสมมาตรของโซเวียตและรัสเซียที่เปิดตัวในปี 1990 และเป็นมาตรฐาน CIS เช่นกัน ชื่อเต็ม - “GOST 28147-89 ระบบประมวลผลข้อมูล การป้องกันการเข้ารหัส อัลกอริธึมการแปลงการเข้ารหัส”

ข้าว. 4. อัลกอริธึมการเข้ารหัส GOST 28147-89

อัลกอริธึมการเข้ารหัสบล็อก เมื่อใช้วิธีการเข้ารหัสแกมม่า จะสามารถทำหน้าที่ของอัลกอริธึมการเข้ารหัสสตรีมได้ GOST 28147-89 เป็นรหัสบล็อกที่มีคีย์ 256 บิตและรอบการแปลง 32 รอบซึ่งทำงานบนบล็อก 64 บิต พื้นฐานของอัลกอริธึมการเข้ารหัสคือเครือข่าย Feistel มีโหมดการทำงานสี่โหมดตาม GOST 28147-89: การแทนที่อย่างง่าย การเล่นเกม การเล่นเกมพร้อมข้อเสนอแนะ และโหมดการสร้างการแทรกการจำลอง

ข้อดีของอัลกอริธึม: ความไร้ประโยชน์ของการโจมตีด้วยกำลัง, ประสิทธิภาพของการใช้งานและดังนั้นประสิทธิภาพสูงในคอมพิวเตอร์สมัยใหม่, การมีอยู่ของการป้องกันการเก็บรวบรวมข้อมูลที่เป็นเท็จ (การสร้างการแทรกเลียนแบบ) และวงจรการเข้ารหัสเดียวกันในทั้งหมด อัลกอริธึม GOST สี่อัน ซึ่งเป็นคีย์ที่ใหญ่กว่าเมื่อเทียบกับอัลกอริธึม DESX

ข้อเสียของอัลกอริทึม: ปัญหาหลักของ GOST เกี่ยวข้องกับความไม่สมบูรณ์ของมาตรฐานในแง่ของการสร้างคีย์และตารางการแทนที่ เชื่อกันว่า GOST มีคีย์ "อ่อนแอ" และตารางทดแทน แต่มาตรฐานไม่ได้อธิบายเกณฑ์ในการเลือกและกำจัดคีย์ "อ่อนแอ" นอกจากนี้ มาตรฐานไม่ได้ระบุอัลกอริทึมสำหรับการสร้างตารางการทดแทน (S-boxes) ในอีกด้านหนึ่ง นี่อาจเป็นข้อมูลลับเพิ่มเติม (นอกเหนือจากคีย์) และในทางกลับกัน ทำให้เกิดปัญหาหลายประการ: เป็นไปไม่ได้ที่จะกำหนดความแข็งแกร่งของการเข้ารหัสของอัลกอริทึมโดยไม่ทราบตารางการทดแทนล่วงหน้า ; การใช้งานอัลกอริธึมจากผู้ผลิตหลายรายอาจใช้ตารางทดแทนที่แตกต่างกันและอาจเข้ากันไม่ได้ ความเป็นไปได้ของการจัดหาตารางทดแทนที่อ่อนแอโดยเจตนาโดยหน่วยงานออกใบอนุญาตของสหพันธรัฐรัสเซีย

1.2.4ข้อดีของ IDEA เหนือระบบอะนาล็อก

ในการใช้งานซอฟต์แวร์บน Intel486SX เมื่อเทียบกับ DES IDEA เร็วกว่าสองเท่าซึ่งเพิ่มความเร็วได้อย่างมาก ความยาวคีย์ของ IDEA คือ 128 บิต เทียบกับ 56 บิตของ DES ซึ่งปรับปรุงได้ดีเมื่อเทียบกับการใช้กำลังดุร้าย ความน่าจะเป็นของการใช้คีย์ที่อ่อนแอนั้นมีน้อยมากและเป็น 1/264 IDEA เร็วกว่าอัลกอริทึม GOST 28147-89 (ในการใช้งานซอฟต์แวร์บน Intel486SX - การใช้ IDEA ในโหมดการเข้ารหัสแบบขนานบนโปรเซสเซอร์ Pentium III และ Pentium MMX ช่วยให้คุณบรรลุความเร็วสูง เมื่อเปรียบเทียบกับผู้เข้ารอบสุดท้ายของ AES แล้ว IDEA 4 ทิศทางจะช้ากว่า RC6 เพียงเล็กน้อยเท่านั้น และไรน์เดล บน Pentium II แต่เร็วกว่าทูฟิช และดาวอังคาร - บน Pentium III IDEA 4 ทิศทางยังเร็วกว่า RC6 อีกด้วย และไรน์เดล - ข้อดีอีกประการหนึ่งคือได้รับการศึกษาอย่างดีและทนทานต่อเครื่องมือวิเคราะห์การเข้ารหัสที่มีชื่อเสียง

1.3โหมด Cipher Block Chaining - บล็อกเชนโดยใช้ไซเฟอร์เท็กซ์

ในโหมดการเข้ารหัส CBC บล็อกข้อความทั้งหมดจะ "ต่อกัน" โดยใช้ไซเฟอร์เท็กซ์

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

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

ดังนั้น สำหรับ i = 1...n ทั้งหมด บล็อกไซเฟอร์เท็กซ์ C(i) จึงถูกกำหนดไว้ดังนี้:

C(i) = IDEA(M(i) x หรือ C(i-1))

การถอดรหัสจะดำเนินการดังนี้:

M(i) = C(i-1) x หรือ IDEA-1(C(i))

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

1.4การเปรียบเทียบอะนาล็อกของโหมดการเข้ารหัส CBC

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

1.4.1 สมุดรหัสอิเล็กทรอนิกส์ - สมุดรหัสอิเล็กทรอนิกส์

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

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

กับ เจ = ซีไอพีเอช เค (ป เจ ) ,

การถอดรหัส ECB:

เจ = ซีไอพีเอช เค (ค เจ ),

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

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

1.4.2 Cipher Feed Back - การโหลดไซเฟอร์เท็กซ์แบบย้อนกลับ

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

ในโหมดนี้ ขนาดบล็อกอาจแตกต่างกันไปจาก 64 ไฟล์ต้นฉบับ M จะถูกอ่านในบล็อก t-bit ที่ต่อเนื่องกัน (t<= 64): M = M(1)M(2)...M(n) (остаток дописывается нулями или пробелами).

รีจิสเตอร์บิตชิฟต์ (บล็อกอินพุต) อันดับแรกจะมีเวกเตอร์การเริ่มต้นที่ถูกต้องเหมาะสม IV สำหรับแต่ละเซสชันการเข้ารหัส จะมีการใช้เวกเตอร์การเริ่มต้นใหม่

สำหรับ i = 1...n ทั้งหมด บล็อกไซเฟอร์เท็กซ์ C(i) ถูกกำหนดไว้ดังนี้:

(i) = M(i) x หรือ P(i-1)

โดยที่ P(i-1) เป็นบิตที่มีนัยสำคัญที่สุดของการดำเนินการ IDEA(C(i-1)) และ C(0) = IV

รีจิสเตอร์ shift ได้รับการอัพเดตโดยการลบบิต t ที่สูงที่สุดออกและเพิ่ม C(i) ทางด้านขวา

การกู้คืนข้อมูลที่เข้ารหัสก็ทำได้ง่ายเช่นกัน: P(i-1) และ C(i) ได้รับการคำนวณในลักษณะเดียวกัน และ M(i) = C(i) xor P(i-1)

1.4.3 Output Feed Back - การโหลดข้อมูลเอาต์พุตแบบย้อนกลับ

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

ดังนั้น ในอัลกอริธึม OFB จำเป็นต้องหลีกเลี่ยงการไม่เพียงแต่การทำซ้ำของเวกเตอร์การเริ่มต้นเท่านั้น แต่ยังรวมถึงบล็อก j-th ใดๆ ของข้อมูลอินพุตฟังก์ชันสำหรับข้อความหนึ่งจะไม่ถูกใช้เป็นเวกเตอร์การเริ่มต้นสำหรับข้อความอื่น ด้านล่างนี้เป็นสมการสำหรับการเข้ารหัส OFB: การเข้ารหัส OFB:

ฉัน 1= IV

ฉัน เจ = โอ เจ-1 , เจ = 1.2, … น

โอ เจ = ซีไอพีเอช เค (ฉัน เจ ), เจ = 1,2, … น

เจ = ป เจ + โอ เจ , เจ = 1.2, … n-1 n = ป n +เอ็มเอสบี ที (อ n )

การถอดรหัส OFB:

ฉัน 1= IV เจ = โอ เจ -1, เจ = 2, … น เจ = ซีไอพีเอช เค (ฉัน เจ ), เจ = 1,2, … น เจ = ค เจ + โอ เจ , เจ = 1.2, … n-1 n = ค n +เอ็มเอสบี ที (อ n ) ,

โดยที่ "+" คือการดำเนินการ xor

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

1.4.4 ตัวนับ - การเข้ารหัสด้วยตัวนับ

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

ในความเป็นจริง ข้อกำหนดของความเป็นเอกลักษณ์ของข้อมูลอินพุตของฟังก์ชันที่ค่า K ที่แน่นอนจะตอบสนองได้ในกรณีของการใช้ PRC (ตัวสร้างโค้ดสุ่มเทียม) แต่จากนั้นจำเป็นต้องใช้เวกเตอร์การเริ่มต้นเริ่มต้นสำหรับ PRC ในชิ้นส่วนนั้น ของผู้ส่งและผู้รับข้อความ

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

ถอดรหัส:

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

1.4.5 ข้อดีของ Cipher Block Chaining มากกว่าอะนาล็อก

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

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

2. ส่วนการออกแบบ

1 การสร้างแบบจำลองเชิงฟังก์ชัน

ขึ้นอยู่กับข้อกำหนดของซอฟต์แวร์ มีการกำหนดฟังก์ชันต่อไปนี้:

· การลงทะเบียนผู้ใช้กับฟิลด์:

โอ เข้าสู่ระบบ,

โอ รหัสผ่าน,

โอ ชื่อเต็ม,

โอ วันเกิด,

· การอนุญาตผู้ใช้พร้อมฟิลด์:

โอ เข้าสู่ระบบ,

โอ รหัสผ่าน;

· การเข้ารหัสข้อความต้นฉบับ

· การถอดรหัสไซเฟอร์เท็กซ์

· แสดงขั้นตอนสุดท้ายของการเข้ารหัสและถอดรหัสแก่ผู้ใช้เมื่อการอนุญาตสำเร็จ

2 การออกแบบอัลกอริทึม

อัลกอริธึมการเข้ารหัส IDEA ทั่วไปแสดงอยู่ด้านล่าง (รูปที่ 5)

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

บล็อกข้อมูล 64 บิตถูกอ่านจากไฟล์และแบ่งออกเป็นบล็อกย่อย 16 บิตสี่บล็อก บล็อกย่อยทั้งสี่นี้จะกลายเป็นอินพุตของลูปแรกของอัลกอริทึม ในรูปบล็อกย่อยเหล่านี้ถูกกำหนดให้เป็น D 1, ดี 2, ดี 3, ดี 4แต่ละรอบจะใช้คีย์ย่อยของตัวเองตามตารางคีย์ย่อย (รูปที่ 6) การดำเนินการที่อธิบายไว้ก่อนหน้านี้และนำเสนอในแผนภาพอัลกอริทึมจะดำเนินการกับบล็อกย่อย 16 บิตและบล็อกย่อยข้อความธรรมดา

นี่เป็นบทเรียนที่ยากมาก เพราะระบบเข้ารหัสเหล่านี้ปกป้องความลับของรัฐ คุณช่วยบอกฉันได้ไหมว่ามันซับซ้อนกว่านี้ที่ไหน? แต่นี่ได้โปรด! ที่จริงแล้ว ไม่ต้องกลัว คราวนี้เราจะไม่เจาะลึกเข้าไปในคณิตศาสตร์มากนักและพิจารณาโหมดการเข้ารหัส คุณได้เรียนรู้หลักการของมันแล้ว (หรือไม่) เรามาดูรหัสต่างประเทศอันดับต้น ๆ กันดีกว่าและดูวิธีการใช้ในทางปฏิบัติ

อัลกอริธึมการเข้ารหัส 3DES

ดังนั้น อันดับแรกในชุดรหัสลับต่างประเทศ ลองพิจารณา 3DES หรือ DES (มาตรฐานการเข้ารหัสข้อมูล) ที่ใกล้เคียงที่สุด ซึ่งแม้ว่าจะไม่ได้ใช้เช่นนี้อีกต่อไปแล้ว แต่ก็เป็นบรรพบุรุษของ 3DES

DES ได้รับการพัฒนาโดยทีมนักคณิตศาสตร์ที่ IBM Research Laboratory ซึ่งรวมถึง Feistel ที่คุ้นเคยอยู่แล้วด้วย รหัสเวอร์ชันแรกมีชื่อว่า "ลูซิเฟอร์" แต่ได้รับการแก้ไขในภายหลังและในที่สุดก็นำมาใช้เป็นอัลกอริทึมการเข้ารหัสข้อมูลอย่างเป็นทางการ (DEA) มันยังคงเป็นมาตรฐานโลกมานานกว่ายี่สิบปีก่อนที่จะถูกแทนที่ด้วย Triple DES

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

  1. ข้อความเช่นเดียวกับการเข้ารหัสอื่น ๆ จะถูกแบ่งออกเป็นบล็อกขนาด 64 บิต
  2. จากคีย์ 56 บิต จะมีการสร้างคีย์แบบกลม 48 บิต 16 คีย์
  3. แต่ละบล็อกผ่านการเรียงสับเปลี่ยน กล่าวคือ บิตทั้งหมดของบล็อกอินพุตจะถูกสับตามตารางที่กำหนด
  4. บล็อกถูกแบ่งออกเป็นครึ่งและเข้าสู่เครือข่าย Feistel ที่คุ้นเคยซึ่งมีการเลื่อน 16 รอบ
  5. เราเชื่อมต่อครึ่งหนึ่ง
  6. และอีกหนึ่งการเปลี่ยนแปลง

การเรียงสับเปลี่ยนเริ่มต้นและสิ้นสุดไม่มีความหมายสำหรับการเข้ารหัสใน DES การเรียงสับเปลี่ยนทั้งสองแบบไม่มีคีย์ และมีการกำหนดตารางไว้ล่วงหน้าแล้ว เหตุผลที่รวมไว้ใน DES นั้นไม่ชัดเจน และผู้ออกแบบ DES ไม่ได้พูดอะไรเกี่ยวกับเรื่องนี้ สันนิษฐานได้ว่าอัลกอริทึมได้รับการวางแผนที่จะนำไปใช้ในฮาร์ดแวร์ (บนชิป) และการเรียงสับเปลี่ยนที่ซับซ้อนทั้งสองนี้น่าจะทำให้ยากต่อการจำลองกลไกการเข้ารหัสในซอฟต์แวร์

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

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

แต่ถ้าเราเอาคอมพิวเตอร์ที่มีแกนประมวลผลหนึ่งล้านคอร์ที่จะประมวลผลคีย์แบบขนาน เราจะสามารถตรวจสอบคีย์ทั้งชุดได้ในเวลาประมาณ 20 ชั่วโมง เมื่อ DES เปิดตัว คอมพิวเตอร์ดังกล่าวมีราคาหลายล้านเหรียญสหรัฐ แต่ก็ลดลงอย่างรวดเร็ว คอมพิวเตอร์พิเศษถูกสร้างขึ้นในปี 1998 และพบกุญแจภายใน 112 ชั่วโมง

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

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

อย่างไรก็ตาม ในทางปฏิบัติการโจมตีนั้นเป็นไปได้ ทำให้ Double DES ไม่สามารถใช้งานได้

สิ่งต่างๆ แตกต่างอย่างสิ้นเชิงกับ Triple DES การใช้สามคีย์และการประยุกต์ใช้อัลกอริธึมตามลำดับที่ระบุในแผนภาพช่วยยืดอายุของ DES ไปอีกหลายปี

อัลกอริธึมการเข้ารหัส DES

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

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

คณะกรรมการข่าวกรองของวุฒิสภาสหรัฐฯ ได้ศึกษาปัญหานี้อย่างละเอียดถี่ถ้วน และแน่นอนว่าไม่พบสิ่งใดเลย ข้อกล่าวหาต่อ NSA ถูกยกฟ้อง และผลการศึกษาก็ยังคงถูกจัดประเภทไว้ กล่าวอีกนัยหนึ่งก็คือ ข่าวลือและการเก็งกำไรแพร่สะพัดในอเมริกามาเป็นเวลานานแล้วว่า DES ควรเชื่อถือได้หรือไม่ แต่อย่างที่ฉันเชื่อ สถานการณ์ที่นี่อธิบายได้ด้วยคำพูดที่ว่า “คนฉลาดจะไม่บอก คนโง่จะไม่เข้าใจ” ท้ายที่สุด NSA ยอมรับว่าไม่สามารถไว้วางใจ IBM ในภารกิจที่สำคัญเช่นนี้ได้ และได้ทำการปรับเปลี่ยนหลายประการ เช่น การระบุ S-box

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

อัลกอริธึมการเข้ารหัส AES

ผู้ชนะการแข่งขัน AES ซึ่งประกาศเมื่อปลายปี 1997 อัลกอริธึม Rijndael ได้รับการพัฒนาโดยนักเข้ารหัสชาวเบลเยียมสองคน Joan Daemen และ Vincent Rijmen

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

AES ทำงานบนบล็อกข้อมูล 128 บิตและคีย์ 128, 192 และ 256 บิต ตามแนวคิดแล้ว มันแตกต่างจาก DES เนื่องจากไม่ได้ขึ้นอยู่กับเครือข่าย Feistel แต่เป็นเครือข่ายการทดแทนการเรียงสับเปลี่ยน (เครือข่าย SP) ซึ่งเราจะพิจารณาในรายละเอียดเพิ่มเติมในขณะนี้

ใน AES ไบต์ข้อความธรรมดาจะไม่ถูกแบ่งออกเป็นสองส่วน เช่นเดียวกับในเครือข่าย Feistel แต่เขียนในรูปแบบของเมทริกซ์ (อาร์เรย์สองมิติ) ของไบต์ที่จัดเรียงในลักษณะนี้:

AES ดำเนินงานโดยดำเนินการดังต่อไปนี้:
1. ExpandKey - การคำนวณปุ่มกลมสำหรับทุกรอบ
2. SubBytes - การแทนที่บิตตามตารางการแทนที่ (S-box)
3. ShiftRows - เลื่อนแถวในฟอร์มแบบวนตามจำนวนต่างๆ 4. MixColumns - การผสมข้อมูลภายในแต่ละคอลัมน์ของแบบฟอร์ม
5. AddRoundKey - เพิ่มคีย์กลมให้กับแบบฟอร์ม

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

อัลกอริธึมการเข้ารหัส IDEA

IDEA (อัลกอริธึมการเข้ารหัสข้อมูลระหว่างประเทศ) เป็นอัลกอริธึมการเข้ารหัสแบบบล็อกสมมาตรที่ได้รับการเสนอให้แทนที่มาตรฐาน DES อัลกอริธึม IDEA เวอร์ชันเริ่มต้นปรากฏในปี 1990 อัลกอริทึมนี้ได้รับการจดสิทธิบัตรในสหรัฐอเมริกาและในประเทศยุโรปส่วนใหญ่ Ascom Tech เป็นเจ้าของสิทธิบัตร แต่อัลกอริธึมสามารถใช้งานได้ฟรีสำหรับวัตถุประสงค์ที่ไม่ใช่เชิงพาณิชย์

ขนาดบล็อกในรหัสนี้คือ 64 บิตความยาวคีย์คือ 128 ควรบอกทันทีว่าอัลกอริทึม IDEA นั้นอายุน้อยที่สุดในรายการและคณิตศาสตร์นั้นซับซ้อนมาก ช่วงเวลาแห่งพจนานุกรมการเข้ารหัส

ใน IDEA คุณสมบัติเหล่านี้ได้มาจากการใช้การดำเนินการทางคณิตศาสตร์อิสระ ต่างจาก DES ซึ่งมีการดำเนินการหลักคือ XOR (การเพิ่มแบบโมดูโล 2) IDEA ให้:

แฮคเกอร์;
นอกจากนี้โมดูโล2¹6;
โมดูโลการคูณ (2¹6; + 1)

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

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

ไอเดียที่ไม่ซ้ำใคร

“ผมคิดว่านี่เป็นอัลกอริธึมบล็อกที่ดีที่สุดและแข็งแกร่งที่สุดที่เผยแพร่จนถึงปัจจุบัน” Bruce Schneier จากอัลกอริทึม IDEA กล่าว

แท้จริงแล้ว IDEA มีความแข็งแกร่งสูงเนื่องจากมีการดำเนินการทางคณิตศาสตร์มากมาย นอกจากนี้ ข้อดีของอัลกอริธึมนี้ยังรวมถึงความเร็วในการเข้ารหัสสูง - สูงเกือบสองเท่าของอัลกอริธึม DES (ขึ้นอยู่กับแพลตฟอร์มที่ทำการเข้ารหัส) อย่างไรก็ตาม ความเร็วในการถอดรหัสจะลดลงเนื่องจากการดำเนินการคำนวณที่หนักหน่วง ซึ่งเป็นค่าผกผันของโมดูโลการคูณ (216 + 1)

แน่นอนว่านักเข้ารหัสที่ชาญฉลาดพยายามทำการโจมตีทุกรูปแบบกับรหัสที่ซับซ้อนนี้ ประสบความสำเร็จโดย Paul Hawker ซึ่งทำการโจมตีโดยสมมติว่า cryptanalyst ไม่สามารถเข้าถึงคีย์ที่ต้องการได้โดยตรง (เช่น คีย์ถูกฝังอยู่ในตัวเข้ารหัสฮาร์ดแวร์หรือสมาร์ทการ์ดบางประเภท) แต่สามารถเปลี่ยนส่วนต่าง ๆ ของ กุญแจสำคัญในทางใดทางหนึ่ง

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

ปลาของบรูซ ชไนเออร์

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

เราจะดูผลงานสร้างสรรค์ที่มีชื่อเสียงที่สุดของเขาโดยย่อ - อัลกอริธึมการเข้ารหัสปักเป้า, ทูฟิช และทรีฟิช

อัลกอริธึมการเข้ารหัสปักเป้า

ปลาปักเป้าเกิดก่อน ดังที่ Schneier กล่าวไว้เอง อัลกอริธึมนี้ได้รับการออกแบบมาเพื่อใช้กับไมโครโปรเซสเซอร์ขนาดใหญ่ ดังนั้นจึงมีขนาดกะทัดรัด (หน่วยความจำเพียง 5 KB) และเรียบง่าย (ใช้การดำเนินการทางคณิตศาสตร์อย่างง่าย - การบวก XOR และการสุ่มตัวอย่างจากตาราง) อัลกอริธึมยังช่วยให้คุณปรับแต่งความยาวของคีย์ได้ (สูงสุด 448 บิต)

บนโปรเซสเซอร์ 32 บิต Blowfish ทำการเข้ารหัสได้เร็วกว่า DES มาก แต่บนสมาร์ทบอร์ด เนื่องจากความเรียบง่าย จึงใช้งานไม่ได้เป็นพิเศษ ปักเป้ามีพื้นฐานมาจากเครือข่าย Feistel 16 รอบ ซึ่งคุณควรเข้าใจดีอยู่แล้ว

อัลกอริทึมถูกนำไปใช้ในผลิตภัณฑ์ซอฟต์แวร์บางตัว (FolderBolt, Nautilus, PGPfone) แต่ตอนนี้กำลังสูญเสียความเกี่ยวข้อง

อัลกอริธึมการเข้ารหัส Twofish

หลังจากปลาตัวแรก มีอีกสองตัวปรากฏขึ้น - อัลกอริธึม Twofish ใหม่ได้รับการพัฒนาโดย Schneier และบริษัทเพื่อเข้าร่วมในการแข่งขัน AES ผลงานของชไนเออร์เข้ารอบห้าอันดับแรก แต่ก็ไม่ได้เป็นผู้ชนะ แม้ว่าจะมีข้อได้เปรียบที่เป็นไปได้ทั้งหมดก็ตาม นี้:

รหัสบล็อกสมมาตร 128 บิต;
ความยาวคีย์: 128, 192 และ 256 บิต;
ซอฟต์แวร์ที่มีประสิทธิภาพ (โดยหลักแล้วใช้โปรเซสเซอร์ 32 บิต) และการใช้งานฮาร์ดแวร์
ความยืดหยุ่น (ความสามารถในการใช้คีย์ที่ยาวกว่า การบังคับใช้สำหรับการเข้ารหัสสตรีม ฟังก์ชันแฮช และอื่นๆ) ความเรียบง่ายของอัลกอริธึมทำให้ง่ายต่อการวิเคราะห์

อย่างไรก็ตาม เมื่อเปรียบเทียบกับ Rijndael ซึ่งเข้ามาแทนที่ AES แล้ว Twofish วิเคราะห์ได้ยากกว่าและมีความเร็วการเข้ารหัสที่ช้ากว่า อัลกอริธึมนี้ได้รับการพัฒนาโดยใช้ Blowfish โดยมีการเพิ่มเติมบางส่วนและยังเป็นเครือข่าย Feistel อีกด้วย

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

อัลกอริธึมการเข้ารหัส Threefish

“เป็นครั้งที่สามที่ชายชราโยนแหลงทะเล…” และสิบปีต่อมารหัส Threefish ก็ถูกสร้างขึ้น ครั้งนี้ Schneier ตัดสินใจที่จะเอาชนะ AES และคำนึงถึงข้อบกพร่องทั้งหมดจากประสบการณ์ครั้งก่อน ผู้เข้ารหัสไม่ได้ใช้เครือข่าย Feistel เป็นพื้นฐาน แต่ใช้การเข้ารหัสตามเครือข่ายการเรียงสับเปลี่ยนทดแทน (เครือข่าย SP) เช่นเดียวกับใน AES เครือข่ายดังกล่าวมีพื้นฐานอยู่บนการรวมกันของการดำเนินการของเอกสิทธิ์เฉพาะ OR การบวก และการเปลี่ยนแปลงแบบวน ในรูปแบบที่เรียบง่าย ทุกอย่างจะเป็นดังนี้:

เนื่องจากการดำเนินการที่เรียบง่าย Threefish จึงเร็วกว่า AES อย่างมาก นอกจากนี้ ตามที่ผู้เขียนระบุ อัลกอริธึมมีระดับความปลอดภัยที่สูงกว่า AES มีการโจมตี 25 จาก 72 รอบของ Threefish ในขณะที่ AES มีการโจมตี 6 จาก 10 ดังนั้น Bruce Schneier จึงได้รับชัยชนะแม้ว่าจะช้าก็ตาม

การเข้ารหัสทำหน้าที่เป็นพื้นฐานสำหรับการสร้างฟังก์ชันแฮช Skein ซึ่งเข้าร่วมในการแข่งขันเพื่อชิงตำแหน่ง SHA-3 Threefish นั้นมีการใช้กันอย่างแพร่หลายและนำไปใช้ในไลบรารีสำหรับภาษาการเขียนโปรแกรมหลายภาษา

ข้อสรุป

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

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

ลิงค์:

นี่เป็นบทเรียนแรกในซีรีส์ “Dive into Crypto” บทเรียนทั้งหมดในซีรีส์ตามลำดับเวลา:

  • พื้นฐาน, รหัสทางประวัติศาสตร์, วิธีการทำงานของรหัสกะ, การทดแทน, Richard Sorge, รหัส Vernam และเครื่องเข้ารหัสทำงานอย่างไร (และได้รับการวิเคราะห์) (คุณอยู่ที่นี่ไหม)
  • . ส่วนที่ 2คืออะไร การกระจายคีย์ดำเนินการอย่างไร และจะเลือกคีย์ที่รัดกุมได้อย่างไร
  • เครือข่าย Feistel คืออะไรรหัสบล็อกในประเทศที่ใช้ในโปรโตคอลสมัยใหม่คืออะไร - GOST 28147-89, "Grassnechik"
  • ยันต์ต่างประเทศสมัยใหม่. ตอนที่ 4มันคืออะไร มันทำงานอย่างไร และอะไรคือความแตกต่างระหว่าง 3DES, AES, Blowfish, IDEA, Threefish จาก Bruce Schneider
  • ลายเซนต์อิเล็กทรอนิกส์- ประเภทของลายเซ็นอิเล็กทรอนิกส์ วิธีการทำงาน และวิธีการใช้งาน
  • การเข้ารหัสควอนตัม- คืออะไร ใช้ที่ไหน และช่วยในการแจกจ่ายรหัสลับ สร้างตัวเลขสุ่ม และลายเซ็นอิเล็กทรอนิกส์อย่างไร

ปรับปรุงล่าสุดภายในวันที่ 12 กรกฎาคม 2016

เวอร์ชันดั้งเดิมของอัลกอริทึม IDEA ปรากฏในปี 1990 ผู้พัฒนาอัลกอริทึม Xuejia Lai และ James Massey จาก Swiss Institute ETH Zurich ตั้งชื่อให้ PES (Proposed Encryption Standard) เนื่องจากอัลกอริทึมนี้ถูกเสนอให้แทนที่มาตรฐาน DES เป็นที่น่าสังเกตว่า ETH Zurich และศาสตราจารย์ James Massey เป็นที่รู้จักในเรื่องอัลกอริธึมที่พวกเขาพัฒนาขึ้นในตระกูล SAFER/SAFER+/SAFER++

หนึ่งปีต่อมา อัลกอริธึมได้รับการแก้ไขเพื่อเพิ่มความต้านทานต่อการเข้ารหัสต่อการวิเคราะห์ดิฟเฟอเรนเชียล เวอร์ชันใหม่เรียกว่า IPES (ปรับปรุง PES - PES ที่ปรับปรุงแล้ว) และอีกหนึ่งปีต่อมาอัลกอริทึมได้เปลี่ยนชื่อเป็น IDEA (อัลกอริทึมการเข้ารหัสข้อมูลระหว่างประเทศ - อัลกอริทึมการเข้ารหัสข้อมูลระหว่างประเทศ)

ลักษณะสำคัญและโครงสร้าง

อัลกอริทึม IDEA เข้ารหัสข้อมูลในบล็อกขนาด 64 บิต และคีย์การเข้ารหัสของอัลกอริทึมมีขนาด 128 บิต บล็อกของข้อมูลที่เข้ารหัสแบ่งออกเป็นบล็อกย่อย 16 บิตสี่บล็อก A, B, C และ D (รูปที่ 1) ซึ่งจะทำการแปลงแปดรอบ:

A = A [x] Kr1 B = B + Kr2 C = C + Kr3 D = D [x] Kr4 T1 = A [+] C T2 = B [+] D T1 = T1 [x] Kr5 T2 = T1 + T2 T2 = T2 [x] Kr6 T1 = T1 + T2 A = A [+] T2 B = B [+] T1 C = C [+] T2 D = D [+] T1,

โดยที่ Krn - คีย์ย่อย n ของรอบ r, "+" - การดำเนินการเพิ่มเติมของตัวถูกดำเนินการ 16 บิตแบบโมดูโล 2 (กำลัง 16), [+] - การดำเนินการเชิงตรรกะระดับบิต "พิเศษหรือ" (XOR), [x] - การคูณ 16 -bit ตัวถูกดำเนินการแบบโมดูโล (2 (กำลัง 16) + 1) และค่า 2 (ถึงกำลัง 16) ถือเป็นค่าของบล็อกย่อยที่ประกอบด้วยศูนย์เท่านั้น

หลังจากทำตามขั้นตอนที่อธิบายไว้ข้างต้นแล้ว บล็อกย่อยด้านในทั้งสอง (B และ C) จะถูกสลับ - ในทุกรอบ ยกเว้นบล็อกสุดท้าย หลังจากเสร็จสิ้นแปดรอบแล้ว จะมีการดำเนินการแปลงเพิ่มเติม (บางครั้งเรียกว่ารอบที่เก้าของอัลกอริทึม):

A" = A [x] K91 B" = B + K92 C" = C + K93 D" = D [x] K94

ไซเฟอร์เท็กซ์เป็นผลมาจากการต่อค่าผลลัพธ์ A", B", C" และ D"

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

K"r1 = (K(10-r)1)-1 K"r2 = -K(10-r)3 K"r3 = -K(10-r)2 K"r4 = (K(10-r) 4)-1 K"r5 = K(9-r)5 K"r6 = K(9-r)6,

ยกเว้นรอบที่ 1 และ 9 ซึ่งมีการสลับคีย์ย่อย K"r2 และ K"r3 ที่นี่ K"rn คือคีย์ย่อย n ของการถอดรหัสรอบ r, -x และ x-1 เป็นค่าผกผันของ x ที่สัมพันธ์กับการดำเนินการข้างต้นของการบวกโมดูโล 2 (กำลัง 16) และการคูณโมดูโล (2 (ถึง กำลัง 16) + 1) ตามลำดับ ในกรณีนี้ 0 (กำลัง -1) = 0

ขั้นตอนการขยายคีย์

วัตถุประสงค์ของขั้นตอนการขยายคีย์คือการสร้างคีย์ย่อย 16 บิตจำนวน 52 คีย์ที่ใช้ในรอบการเข้ารหัสและการแปลงเพิ่มเติม (เช่น ข้อมูลคีย์ทั้งหมด 832 บิต) ขั้นตอนนี้ง่ายมาก และดำเนินการดังนี้:

  1. คีย์เข้ารหัส 128 บิตแบ่งออกเป็นคีย์ย่อย 16 บิตจำนวน 8 รายการ พวกเขากลายเป็นคีย์ย่อยแปดคีย์แรกของอัลกอริทึม (K11, K12, K13, K14, K15, K16, K21, K22)
  2. คีย์เข้ารหัสจะหมุนไปทางซ้าย 25 บิต
  3. ผลลัพธ์จะถูกแบ่งออกเป็นคีย์ย่อยแปดคีย์ถัดไป
  4. คีย์การเข้ารหัสจะเลื่อนไปทางซ้ายแบบวนซ้ำ 25 บิต และไปเรื่อยๆ จนกว่าจะสร้างคีย์ย่อยตามจำนวนที่ต้องการ

ความแรงของการเข้ารหัสอัลกอริธึม

ในปีหน้าหลังจากการปรากฏของอัลกอริธึม PES ผู้เขียนได้ตีพิมพ์ผลงานที่มีการพิสูจน์จุดอ่อนของอัลกอริธึมที่เกี่ยวข้องกับการเข้ารหัสเชิงอนุพันธ์ (ดูตัวอย่างในบทความ "BYTE/Russia" หมายเลข 11"2004) ): เพื่อกำหนดคีย์การเข้ารหัส ก็เพียงพอที่จะดำเนินการเข้ารหัส 2 (ถึงกำลัง 64) ในขณะที่การแจงนับค่าของคีย์ 128 บิตอย่างละเอียดจะต้องดำเนินการ 2 (ถึงกำลัง 128)

อัลกอริธึม IDEA เกิดขึ้นจากการปรับเปลี่ยนอัลกอริธึม PES เล็กน้อย (รูปที่ 2) หากคุณเปรียบเทียบโครงร่างอัลกอริทึม IDEA และ PES คุณจะไม่เห็นความแตกต่างมากนัก:

  • การดำเนินการคูณของบล็อกย่อย B ด้วยคีย์ย่อยที่สองของรอบจะถูกแทนที่ด้วยการดำเนินการเพิ่มเติม
  • การดำเนินการเพิ่มเติมของบล็อกย่อย D ด้วยคีย์ย่อยที่สี่ของรอบจะถูกแทนที่ด้วยการดำเนินการคูณ
  • อีกวิธีหนึ่งคือการเลื่อนบล็อกย่อยเมื่อสิ้นสุดรอบ

Bruce Schneier หนึ่งในนักวิทยาการเข้ารหัสลับที่มีชื่อเสียงที่สุดในโลกได้กล่าวไว้ในหนังสือ Applied Cryptography ว่า "...มันน่าทึ่งมากที่การเปลี่ยนแปลงเล็กๆ น้อยๆ สามารถสร้างความแตกต่างที่ยิ่งใหญ่ได้ขนาดนี้" อัลกอริธึม IDEA แทบไม่มีภูมิคุ้มกันต่อการเข้ารหัสเชิงอนุพันธ์ และในหนังสือเล่มเดียวกัน (ตีพิมพ์ในปี 1996) Bruce Schneier กล่าวถึงสิ่งนี้: "ฉันคิดว่านี่เป็นอัลกอริธึมบล็อกที่ดีที่สุดและน่าเชื่อถือที่สุดที่เผยแพร่จนถึงปัจจุบัน"

อย่างไรก็ตาม ในปี 1996 เดียวกัน Paul Kocher นักวิเคราะห์การเข้ารหัสชื่อดังได้คิดค้นการโจมตีที่ค่อนข้างยากซึ่งช่วยให้สามารถเข้ารหัสข้อความธรรมดาที่เลือกแบบสุ่มบนคีย์ที่เกี่ยวข้องโดยการวัดเวลาดำเนินการที่มีความแม่นยำสูงซ้ำ ๆ 2 ครั้ง (กำลัง 20) ความสัมพันธ์บางอย่างกับคีย์ที่ต้องการ และการวิเคราะห์ผลลัพธ์ในภายหลังเพื่อคำนวณคีย์เข้ารหัสที่ต้องการ การโจมตีนี้ (เช่นเดียวกับการโจมตีคีย์ที่เชื่อมโยงอื่นๆ) ถือว่า cryptanalyst ไม่สามารถเข้าถึงคีย์ที่ต้องการได้โดยตรง (เช่น คีย์ถูกฝังอยู่ในตัวเข้ารหัสฮาร์ดแวร์หรือสมาร์ทการ์ดบางประเภท) แต่สามารถเปลี่ยนส่วนต่างๆ ของคีย์ได้ ในทางใดทางหนึ่ง

และก่อนหน้านี้ในปี 1993 นักวิทยาการเข้ารหัสลับหลายคนจากเบลเยียมได้ค้นพบคีย์ที่อ่อนแอหลายคลาสในอัลกอริทึม IDEA (รวม 2 (ถึงยกกำลัง 23) + 2 (ถึงยกกำลัง 35) + 2 (ถึงยกกำลัง 51) ที่มีระดับต่างกัน จุดอ่อน) บางส่วนสามารถคำนวณได้โดยการโจมตีแบบเข้ารหัสด้วยข้อความธรรมดาที่เลือก อย่างไรก็ตาม ผู้เขียนการโจมตีครั้งนี้เสนอ "ยาแก้พิษ" - คีย์อ่อนจะถูกกำจัดโดยการใช้การดำเนินการ XOR กับค่าคงที่เลขฐานสิบหกพิเศษ 0DAE ในแต่ละคีย์ย่อยก่อนใช้งาน

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

***

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

อัลกอริธึมแบบสมมาตรการเข้ารหัสที่พัฒนาโดย Xuejia Lai และ James Massey จากสถาบันเทคโนโลยีแห่งสหพันธรัฐสวิส ฉบับดั้งเดิมตีพิมพ์ในปี 1990 อัลกอริธึมเวอร์ชันปรับปรุงใหม่ ปรับปรุงด้วยการป้องกันการโจมตีด้วยการเข้ารหัสลับที่แตกต่างกัน เปิดตัวในปี 1991 และอธิบายรายละเอียดในปี 1992

IDEA เป็นหนึ่งในอัลกอริธึมการเข้ารหัสแบบสมมาตรหลายตัวที่เดิมตั้งใจจะแทนที่ DES

หลักการออกแบบ

IDEA เป็นอัลกอริธึมบล็อกที่ใช้ 128 บิต คีย์เข้ารหัสข้อมูลในบล็อกขนาด 64 บิต

เป้าหมายของการพัฒนา IDEA คือการสร้างอัลกอริธึมการเข้ารหัสที่ค่อนข้างแข็งแกร่งพร้อมการใช้งานที่ค่อนข้างง่าย

ความแรงของการเข้ารหัส

คุณลักษณะต่อไปนี้ของ IDEA แสดงถึงความแข็งแกร่งของการเข้ารหัส:

  1. ความยาวบล็อก: ความยาวบล็อกต้องเพียงพอที่จะซ่อนลักษณะทางสถิติทั้งหมดของข้อความต้นฉบับ ในทางกลับกัน ความซับซ้อนของการใช้ฟังก์ชันการเข้ารหัสจะเพิ่มขึ้นแบบทวีคูณตามขนาดบล็อก การใช้บล็อกขนาด 64 บิตในยุค 90 หมายความว่ามีพลังงานเหลือเฟือ นอกจากนี้ การใช้โหมดการเข้ารหัส CBC บ่งชี้ว่าอัลกอริทึมด้านนี้มีความเข้มแข็งยิ่งขึ้น
  2. ความยาวคีย์: ความยาวของคีย์ต้องใหญ่พอที่จะป้องกันไม่ให้คีย์ถูกบังคับแบบเดรัจฉาน ด้วยความยาวคีย์ 128 บิต IDEA จึงถือว่าค่อนข้างปลอดภัย
  3. ความสับสน: ไซเฟอร์เท็กซ์ต้องขึ้นอยู่กับคีย์ในลักษณะที่ซับซ้อนและซับซ้อน
  4. การแพร่กระจาย: ข้อความธรรมดาทุกบิตต้องส่งผลต่อไซเฟอร์เท็กซ์ทุกบิต การกระจายบิตข้อความธรรมดาหนึ่งบิตไปบนบิตที่เข้ารหัสจำนวนมากจะซ่อนโครงสร้างทางสถิติของข้อความธรรมดา การพิจารณาว่าลักษณะทางสถิติของไซเฟอร์เท็กซ์ขึ้นอยู่กับลักษณะทางสถิติของข้อความธรรมดานั้นเป็นเรื่องยากอย่างไร IDEA จากมุมมองนี้เป็นอย่างมาก อัลกอริธึมที่มีประสิทธิภาพ.

ใน IDEA สองจุดสุดท้ายจะสำเร็จโดยใช้การดำเนินการสามครั้ง สิ่งนี้แตกต่างจาก DES ซึ่งทุกสิ่งถูกสร้างขึ้นจากการใช้การดำเนินการ แฮคเกอร์และกล่อง S แบบไม่เชิงเส้นขนาดเล็ก

การดำเนินการแต่ละครั้งจะดำเนินการกับอินพุต 16 บิตสองตัว และสร้างเอาต์พุต 16 บิตหนึ่งตัว การดำเนินการเหล่านี้คือ:

การดำเนินการทั้งสามนี้เข้ากันไม่ได้ในแง่ที่ว่า:

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

การเข้ารหัส

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

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


ข้าว. 3.1.
ลำดับการเปลี่ยนแปลงของรอบเดียว

พิจารณาลำดับการเปลี่ยนแปลงของรอบแยกกัน

องค์ประกอบหลักอย่างหนึ่งของอัลกอริทึมที่ให้การแพร่กระจายคือโครงสร้างที่เรียกว่า MA (การคูณ/การบวก):


ข้าว. 3.2.

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

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


ข้าว. 3.3.

ในที่สุด บล็อกย่อยเอาต์พุตสี่บล็อกของการแปลงครั้งแรกจะรวมกับบล็อกย่อยเอาต์พุตสองบล็อกของโครงสร้าง MA ที่ใช้ แฮคเกอร์เพื่อสร้างบล็อกย่อยเอาต์พุตสี่บล็อกของการวนซ้ำที่กำหนด โปรดทราบว่าเอาต์พุตสองตัวที่สร้างขึ้นบางส่วนโดยอินพุตที่สองและสาม (X 2 และ X 3 ) จะถูกสลับเพื่อสร้างเอาต์พุตที่สองและสาม (W 12 และ W 13 ) สิ่งนี้จะเพิ่มการสับบิตและทำให้อัลกอริทึมทนทานต่อมากขึ้น การเข้ารหัสเชิงอนุพันธ์.

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