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

เซอร์เกย์ ปานาเซนโก,
หัวหน้าฝ่ายพัฒนา ซอฟต์แวร์บริษัท "อังกาด"
[ป้องกันอีเมล]

แนวคิดพื้นฐาน

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

ค = เอก1(ม)

ม" = Dk2(C),

โดยที่ M (ข้อความ) - เปิดข้อมูล(ในวรรณกรรมด้านความปลอดภัยของข้อมูลมักเรียกว่า "ข้อความต้นฉบับ");
C (ข้อความเข้ารหัส) - ข้อความไซเฟอร์ (หรือรหัสลับ) ที่ได้รับจากการเข้ารหัส
E (การเข้ารหัส) - ฟังก์ชั่นการเข้ารหัสที่ทำการแปลงการเข้ารหัสในข้อความต้นฉบับ
k1 (คีย์) - พารามิเตอร์ของฟังก์ชัน E เรียกว่าคีย์เข้ารหัส
M" - ข้อมูลที่ได้รับจากการถอดรหัส
D (ถอดรหัส) - ฟังก์ชั่นถอดรหัสที่ทำการแปลงการเข้ารหัสแบบผกผันบนไซเฟอร์เท็กซ์
k2 เป็นกุญแจที่ใช้ในการถอดรหัสข้อมูล

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

เพื่อให้ผลลัพธ์การถอดรหัสตรงกับข้อความต้นฉบับ (เช่น สำหรับ M" = M) ต้องเป็นไปตามเงื่อนไขสองประการพร้อมกัน ประการแรก ฟังก์ชันถอดรหัส D จะต้องตรงกับฟังก์ชันการเข้ารหัส E ประการที่สอง คีย์ถอดรหัส k2 จะต้องตรงกับการเข้ารหัส คีย์ k1

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

อัลกอริธึมการเข้ารหัสสามารถแบ่งออกเป็นสองประเภท: สมมาตรและ การเข้ารหัสแบบไม่สมมาตร- สำหรับแบบแรก อัตราส่วนของคีย์เข้ารหัสและคีย์ถอดรหัสถูกกำหนดเป็น k1 = k2 = k (นั่นคือ ฟังก์ชัน E และ D ใช้คีย์เข้ารหัสเดียวกัน) ในการเข้ารหัสแบบอสมมาตร คีย์การเข้ารหัส k1 จะถูกคำนวณจากคีย์ k2 ในลักษณะที่ การแปลงผกผันเป็นไปไม่ได้ เช่น การใช้สูตร k1 = ak2 mod p (a และ p เป็นพารามิเตอร์ของอัลกอริทึมที่ใช้)

การเข้ารหัสแบบสมมาตร

อัลกอริธึมการเข้ารหัสแบบสมมาตรมีมาตั้งแต่สมัยโบราณ: เป็นวิธีการซ่อนข้อมูลที่จักรพรรดิโรมัน Gaius Julius Caesar ใช้ในศตวรรษที่ 1 ก่อนคริสต์ศักราช e. และอัลกอริธึมที่เขาคิดค้นขึ้นนั้นเรียกว่า “ระบบเข้ารหัสของซีซาร์”

ปัจจุบัน อัลกอริธึมการเข้ารหัสแบบสมมาตรที่รู้จักกันดีที่สุดคือ DES (มาตรฐานการเข้ารหัสข้อมูล) ซึ่งพัฒนาขึ้นในปี 1977 จนกระทั่งเมื่อไม่นานมานี้ อัลกอริธึมดังกล่าวเป็น “มาตรฐานของสหรัฐอเมริกา” เนื่องจากรัฐบาลของประเทศนี้แนะนำให้ใช้เพื่อนำไปปฏิบัติ ระบบต่างๆการเข้ารหัสข้อมูล แม้ว่าเดิมที DES มีแผนจะใช้เป็นเวลาไม่เกิน 10-15 ปี แต่ความพยายามที่จะเปลี่ยนมันเริ่มต้นในปี 1997 เท่านั้น

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

ปัจจุบันมีการใช้อัลกอริธึมการเข้ารหัสที่แข็งแกร่งสมัยใหม่สองตัวมากขึ้น: มาตรฐานในประเทศ GOST 28147-89 และมาตรฐานการเข้ารหัสลับใหม่ของสหรัฐอเมริกา - AES (มาตรฐานการเข้ารหัสขั้นสูง)

มาตรฐาน GOST 28147-89

อัลกอริทึมที่กำหนดโดย GOST 28147-89 (รูปที่ 1) มีความยาวคีย์เข้ารหัส 256 บิต มันเข้ารหัสข้อมูลในบล็อกขนาด 64 บิต (อัลกอริธึมดังกล่าวเรียกว่าอัลกอริธึมบล็อก) ซึ่งจากนั้นจะแบ่งออกเป็นสองบล็อกย่อย 32 บิต (N1 และ N2) Subblock N1 ได้รับการประมวลผลด้วยวิธีใดวิธีหนึ่ง หลังจากนั้นค่าของมันจะถูกเพิ่มเข้าไปในค่าของ subblock N2 (การเพิ่มจะดำเนินการแบบโมดูโล 2 เช่น การดำเนินการเชิงตรรกะ XOR - "เอกสิทธิ์หรือ") จากนั้นบล็อกย่อยจะถูกสลับ การเปลี่ยนแปลงครั้งนี้วิ่ง จำนวนที่แน่นอนครั้ง (“รอบ”): 16 หรือ 32 ขึ้นอยู่กับโหมดการทำงานของอัลกอริทึม ในแต่ละรอบ จะดำเนินการสองครั้ง

อย่างแรกคือการคีย์ เนื้อหาของบล็อกย่อย N1 จะถูกเพิ่มแบบโมดูโล 2 ด้วยส่วน 32 บิตของคีย์ Kx กุญแจเต็มการเข้ารหัสจะแสดงเป็นการต่อคีย์ย่อยแบบ 32 บิต: K0, K1, K2, K3, K4, K5, K6, K7 ในระหว่างกระบวนการเข้ารหัส จะมีการใช้คีย์ย่อยเหล่านี้อย่างใดอย่างหนึ่ง ขึ้นอยู่กับหมายเลขรอบและโหมดการทำงานของอัลกอริทึม

การดำเนินการครั้งที่สอง - การเปลี่ยนโต๊ะ- หลังจากการคีย์ บล็อกย่อย N1 จะถูกแบ่งออกเป็น 8 ส่วน ละ 4 บิต ค่าของแต่ละส่วนจะถูกแทนที่ตามตารางการแทนที่สำหรับส่วนนี้ของบล็อกย่อย บล็อกย่อยจะถูกหมุนบิตไปทางซ้าย 11 บิต

การทดแทนตาราง(กล่องทดแทน - S-box) มักใช้ในอัลกอริธึมการเข้ารหัสสมัยใหม่ ดังนั้นจึงควรอธิบายว่าการดำเนินการดังกล่าวมีการจัดการอย่างไร

ค่าเอาต์พุตของบล็อกจะถูกบันทึกไว้ในตาราง บล็อกข้อมูลของมิติข้อมูลหนึ่ง (ในกรณีของเราคือ 4 บิต) มีการแสดงตัวเลขของตัวเองซึ่งกำหนดจำนวนของค่าเอาต์พุต ตัวอย่างเช่น ถ้า S-box มีลักษณะเป็น 4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1 และบล็อก 4 บิต “0100” มาถึงอินพุต (ค่า 4) จากนั้นตามตารางค่าเอาต์พุตจะเป็น 15 เช่น "1111" (0 a 4, 1 a 11, 2 a 2 ... ) อัลกอริทึมที่กำหนดโดย GOST 28147-89 มีโหมดการทำงานสี่โหมด: การแทนที่อย่างง่าย การเล่นเกม การเล่นเกมด้วยข้อเสนอแนะ

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

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

K0, K1, K2, K3, K4, K5, K6, K7, K0, K1, ฯลฯ - ในรอบที่ 1 ถึง 24;

K7, K6, K5, K4, K3, K2, K1, K0 - ในรอบที่ 25 ถึง 32 โหมดนี้ดำเนินการในลักษณะเดียวกันทุกประการ แต่มีลำดับการใช้คีย์ย่อยที่แตกต่างกันเล็กน้อย:

K0, K1, K2, K3, K4, K5, K6, K7 - ในรอบ 1 ถึง 8;

K7, K6, K5, K4, K3, K2, K1, K0, K7, K6, ฯลฯ - ในรอบที่ 9 ถึง 32

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

ใน โหมดแกมมาทุกบล็อก ข้อความธรรมดาเพิ่มโมดูโล 2 ในระดับบิตด้วยบล็อกแกมม่าการเข้ารหัส 64 บิต รหัสแกมมาเป็นลำดับพิเศษที่ได้รับจากการดำเนินการบางอย่างด้วยรีจิสเตอร์ N1 และ N2 (ดูรูปที่ 1)

1. การกรอกเริ่มต้นถูกเขียนเพื่อลงทะเบียน N1 และ N2 - ค่า 64 บิตที่เรียกว่าข้อความการซิงโครไนซ์

2. เนื้อหาของรีจิสเตอร์ N1 และ N2 ได้รับการเข้ารหัส (in ในกรณีนี้- ซิงค์ข้อความ) ในโหมดการแทนที่อย่างง่าย

3. เนื้อหาของรีจิสเตอร์ N1 จะถูกเพิ่มแบบโมดูโล (232 - 1) โดยมีค่าคงที่ C1 = 224 + 216 + 28 + 24 และผลลัพธ์ของการบวกจะถูกเขียนเพื่อลงทะเบียน N1

4. เนื้อหาของรีจิสเตอร์ N2 จะถูกเพิ่มแบบโมดูโล 232 โดยมีค่าคงที่ C2 = 224 + 216 + 28 + 1 และผลลัพธ์ของการบวกจะถูกเขียนเพื่อลงทะเบียน N2

5. เนื้อหาของรีจิสเตอร์ N1 และ N2 จะถูกส่งออกเป็นบล็อกแกมมา 64 บิตของการเข้ารหัส (ในกรณีนี้ N1 และ N2 จะสร้างบล็อกแกมมาแรก)

หากจำเป็นต้องใช้บล็อกแกมม่าถัดไป (เช่น การเข้ารหัสหรือการถอดรหัสจำเป็นต้องดำเนินการต่อ) ก็จะกลับไปที่ขั้นตอนที่ 2

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

การเข้ารหัสและถอดรหัสในโหมดแกมมา

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

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

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

ข้าว. 2. การพัฒนาแกมมาการเข้ารหัสในโหมดแกมมาพร้อมข้อเสนอแนะ

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

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

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

อัลกอริธึม GOST 28147-89 ถือเป็นอัลกอริธึมที่แข็งแกร่งมาก - ปัจจุบันไม่มีการเสนอให้เปิดเผยอีกต่อไป วิธีการที่มีประสิทธิภาพกว่าวิธี "กำลังดุร้าย" ที่กล่าวมาข้างต้น ความทนทานสูงมีสาเหตุหลักมาจาก ยาวคีย์ - 256 บิต เมื่อใช้ข้อความการซิงโครไนซ์ลับ ความยาวคีย์ที่มีประสิทธิภาพจะเพิ่มขึ้นเป็น 320 บิต และการเข้ารหัสตารางการแทนที่จะเพิ่มขึ้น บิตพิเศษ- นอกจากนี้ ความแข็งแกร่งของการเข้ารหัสยังขึ้นอยู่กับจำนวนรอบการเปลี่ยนแปลง ซึ่งตาม GOST 28147-89 ควรเป็น 32 (ผลเต็มรูปแบบของการกระจายข้อมูลอินพุตจะเกิดขึ้นหลังจาก 8 รอบ)

มาตรฐานเออีเอส

ต่างจากอัลกอริทึม GOST 28147-89 ซึ่ง เป็นเวลานานยังคงเป็นความลับ มาตรฐานอเมริกัน การเข้ารหัส AESซึ่งมีจุดประสงค์เพื่อแทนที่ DES ได้รับการคัดเลือกผ่านการแข่งขันแบบเปิด ซึ่งองค์กรและบุคคลที่สนใจทุกคนสามารถศึกษาและแสดงความคิดเห็นเกี่ยวกับอัลกอริทึมของผู้สมัครได้

การแข่งขันเพื่อแทนที่ DES ได้รับการประกาศในปี 1997 โดยสถาบันมาตรฐานและเทคโนโลยีแห่งชาติของสหรัฐอเมริกา (NIST - สถาบันมาตรฐานและเทคโนโลยีแห่งชาติ) มีการส่งอัลกอริธึมของผู้สมัคร 15 รายการเข้าร่วมการแข่งขัน ซึ่งพัฒนาโดยทั้งองค์กรที่มีชื่อเสียงในด้านการเข้ารหัส (RSA Security, Counterpane ฯลฯ) และบุคคลทั่วไป ผลการแข่งขันได้รับการประกาศในเดือนตุลาคม พ.ศ. 2543 ผู้ชนะคืออัลกอริธึม Rijndael ซึ่งพัฒนาโดยนักเข้ารหัสสองคนจากเบลเยียม Vincent Rijmen และ Joan Daemen

อัลกอริธึม Rijndael นั้นไม่เหมือนกับอัลกอริธึมการเข้ารหัสแบบสมมาตรที่รู้จักกันดีที่สุด ซึ่งมีโครงสร้างที่เรียกว่า "เครือข่าย Feistel" และคล้ายกับ GOST 28147-89 ของรัสเซีย ลักษณะเฉพาะของเครือข่าย Feistel คือค่าอินพุตจะถูกแบ่งออกเป็นบล็อกย่อยตั้งแต่สองบล็อกขึ้นไป ซึ่งส่วนหนึ่งจะถูกประมวลผลในแต่ละรอบ กฎหมายบางอย่างหลังจากนั้นจะถูกวางทับบนบล็อกย่อยที่ยังไม่ได้ประมวลผล (ดูรูปที่ 1)

ต่างจากมาตรฐานการเข้ารหัสในประเทศ อัลกอริธึม Rijndael แสดงถึงบล็อกข้อมูลในรูปแบบของอาร์เรย์ไบต์สองมิติขนาด 4X4, 4X6 หรือ 4X8 (อนุญาตให้ใช้หลายไบต์ได้) ขนาดคงที่บล็อกข้อมูลที่เข้ารหัส) การดำเนินการทั้งหมดจะดำเนินการกับแต่ละไบต์ของอาร์เรย์และในการดำเนินการทั้งหมด คอลัมน์อิสระและเส้น

อัลกอริธึม Rijndael ทำการแปลงสี่ครั้ง: BS (ByteSub) - การแทนที่ตารางของแต่ละไบต์ของอาเรย์ (รูปที่ 3) SR (ShiftRow) - เลื่อนแถวอาร์เรย์ (รูปที่ 4) ด้วยการดำเนินการนี้ บรรทัดแรกยังคงไม่เปลี่ยนแปลง และส่วนที่เหลือจะถูกเลื่อนแบบวนทีละไบต์ไปทางซ้ายตามจำนวนไบต์คงที่ ขึ้นอยู่กับขนาดของอาร์เรย์ ตัวอย่างเช่น สำหรับอาร์เรย์ 4X4 บรรทัด 2, 3 และ 4 จะถูกเลื่อนไป 1, 2 และ 3 ไบต์ตามลำดับ ถัดไปมา MC (MixColumn) - การดำเนินการกับคอลัมน์อาร์เรย์อิสระ (รูปที่ 5) เมื่อแต่ละคอลัมน์คูณด้วยเมทริกซ์คงที่ c(x) ตามกฎบางอย่าง และสุดท้าย AK (AddRoundKey) - การเพิ่มรหัส แต่ละบิตของอาเรย์จะถูกเพิ่มแบบโมดูโล 2 พร้อมด้วยบิตที่สอดคล้องกันของคีย์กลม ซึ่งในทางกลับกัน จะถูกคำนวณด้วยวิธีใดวิธีหนึ่งจากคีย์เข้ารหัส (รูปที่ 6)


ข้าว. 3. ปฏิบัติการ BS

ข้าว. 4. ปฏิบัติการ SR.

ข้าว. 5. ปฏิบัติการ MC.

จำนวนรอบการเข้ารหัส (R) ในอัลกอริธึม Rijndael นั้นแปรผันได้ (10, 12 หรือ 14 รอบ) และขึ้นอยู่กับขนาดบล็อกและคีย์การเข้ารหัส (คีย์ยังมีขนาดคงที่หลายขนาดด้วย)

การถอดรหัสจะดำเนินการโดยใช้การดำเนินการย้อนกลับต่อไปนี้ ตารางจะกลับด้านและตารางจะถูกแทนที่ด้วยตารางผกผัน (สัมพันธ์กับตารางที่ใช้สำหรับการเข้ารหัส) การดำเนินการผกผันกับ SR คือการหมุนแถวไปทางขวาแทนที่จะหมุนไปทางซ้าย การดำเนินการผกผันสำหรับ MC เป็นการคูณโดยใช้กฎเดียวกันด้วยเมทริกซ์อื่น d(x) ที่ตรงตามเงื่อนไข: c(x) * d(x) = 1 การเพิ่มคีย์ AK ถือเป็นค่าผกผันของตัวมันเอง เนื่องจากจะใช้เฉพาะ XOR เท่านั้น การดำเนินการ. การดำเนินการย้อนกลับเหล่านี้จะถูกนำไปใช้ในระหว่างการถอดรหัสในลำดับย้อนกลับกับที่ใช้ในระหว่างการเข้ารหัส

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

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

การเข้ารหัสแบบอสมมาตร

อัลกอริธึมการเข้ารหัสแบบอสมมาตรตามที่ระบุไว้แล้วใช้สองคีย์: k1 - คีย์เข้ารหัสหรือสาธารณะและ k2 - คีย์ถอดรหัสหรือความลับ พับลิกคีย์คำนวณจากข้อมูลลับ: k1 = f(k2)

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

ตัวอย่างของฟังก์ชันทางเดียวคือการคูณตัวเลขขนาดใหญ่สองตัว: N = P*Q การคูณนี้เองก็คือ ใช้งานง่าย- อย่างไรก็ตาม ฟังก์ชันผกผัน (การสลายตัวของ N ออกเป็นสองปัจจัยใหญ่) ที่เรียกว่าการแยกตัวประกอบตามการประมาณเวลาสมัยใหม่ เป็นปัญหาทางคณิตศาสตร์ที่ค่อนข้างซับซ้อน ตัวอย่างเช่น การแยกตัวประกอบ N ที่มีขนาด 664 บิตที่ P ? Q จะต้องมีการดำเนินการประมาณ 1,023 ครั้ง และในการคำนวณ x แบบผกผันสำหรับเลขชี้กำลังโมดูลาร์ y = ax mod p โดยที่ทราบ a, p และ y (ด้วยขนาด a และ p เท่ากัน) คุณต้องดำเนินการประมาณ 1,026 ครั้ง ตัวอย่างสุดท้ายที่ให้ไว้เรียกว่าปัญหาลอการิทึมแบบแยกส่วน (DLP) และฟังก์ชันประเภทนี้มักใช้ในอัลกอริธึมการเข้ารหัสแบบอสมมาตร เช่นเดียวกับในอัลกอริธึมที่ใช้ในการสร้างลายเซ็นดิจิทัลอิเล็กทรอนิกส์

ฟังก์ชันที่สำคัญอีกประเภทหนึ่งที่ใช้ในการเข้ารหัสแบบอสมมาตรคือฟังก์ชันแบ็คดอร์แบบทางเดียว คำจำกัดความระบุว่าฟังก์ชันเป็นแบบทิศทางเดียวกับประตูหลังหากเป็นแบบทิศทางเดียวและสามารถคำนวณได้อย่างมีประสิทธิภาพ ฟังก์ชันผกผัน x = f-1(y) เช่น หากรู้จัก "ข้อความลับ" (หมายเลขลับที่แน่นอนในการใช้งานกับอัลกอริธึมการเข้ารหัสแบบอสมมาตร - ค่าของรหัสลับ)

ฟังก์ชันแบ็คดอร์แบบทางเดียวถูกนำมาใช้ในอัลกอริธึมการเข้ารหัสแบบอสมมาตร RSA ที่ใช้กันอย่างแพร่หลาย

อัลกอริทึมอาร์เอสเอ

พัฒนาขึ้นในปี 1978 โดยนักเขียนสามคน (Rivest, Shamir, Adleman) ชื่อนี้มาจากอักษรตัวแรกของนามสกุลของผู้พัฒนา ความน่าเชื่อถือของอัลกอริธึมขึ้นอยู่กับความยากในการแยกตัวประกอบตัวเลขจำนวนมากและการคำนวณลอการิทึมแบบไม่ต่อเนื่อง พารามิเตอร์หลัก อัลกอริทึมอาร์เอสเอ- โมดูลของระบบ N ตามการคำนวณทั้งหมดในระบบและ N = P*Q (P และ Q เป็นความลับแบบสุ่มอย่างง่าย ตัวเลขใหญ่มักจะมีขนาดเท่ากัน)

รหัสลับ k2 ถูกเลือกแบบสุ่มและต้องตรงตามเงื่อนไขต่อไปนี้:

1

โดยที่ GCD เป็นตัวหารร่วมมาก เช่น k1 จะต้องเป็นจำนวนไพรม์ร่วมของฟังก์ชันออยเลอร์ F(N) ส่วนค่าหลังจะเท่ากับจำนวนของจำนวนเต็มบวกในช่วงตั้งแต่ 1 ถึง N โคไพรม์ถึง N และคำนวณเป็น F(N) = (P - 1)*(Q - 1).

พับลิกคีย์ k1 คำนวณจากความสัมพันธ์ (k2*k1) = 1 ม็อด F(N)และเพื่อจุดประสงค์นี้จึงใช้อัลกอริทึมแบบยุคลิดทั่วไป (อัลกอริทึมสำหรับการคำนวณตัวหารร่วมมาก) การเข้ารหัสบล็อกข้อมูล M โดยใช้อัลกอริทึม RSA ดำเนินการดังนี้: ค=ม [ยกกำลัง k1]ม็อด เอ็น- โปรดทราบว่าเนื่องจากในระบบเข้ารหัสจริงที่ใช้ RSA ตัวเลข k1 มีขนาดใหญ่มาก (ปัจจุบันขนาดสามารถเข้าถึงได้สูงสุด 2,048 บิต) การคำนวณโดยตรงของ M [ยกกำลัง k1]ไม่สมจริง เพื่อให้ได้มา จะใช้การผสมผสานระหว่างการยกกำลังสองซ้ำของ M และการคูณผลลัพธ์

การผกผันของฟังก์ชันนี้สำหรับขนาดใหญ่ไม่สามารถทำได้ กล่าวอีกนัยหนึ่ง เป็นไปไม่ได้เลยที่จะหา M เมื่อทราบค่า C, N และ k1 อย่างไรก็ตามการมีคีย์ลับ k2 โดยใช้การแปลงแบบง่าย ๆ สามารถคำนวณ M = Ck2 mod N ได้ เห็นได้ชัดว่านอกเหนือจากคีย์ลับเองแล้วยังจำเป็นต้องตรวจสอบให้แน่ใจว่าพารามิเตอร์ P และ Q เป็นความลับ หากผู้โจมตีได้รับค่าของพวกเขา เขาจะสามารถคำนวณคีย์ลับ k2 ได้

การเข้ารหัสใดดีกว่า?

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

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

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

แหล่งข้อมูลเพิ่มเติม

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

  1. Brassard J. "วิทยาการเข้ารหัสลับสมัยใหม่"
  2. Petrov A. A. "ความปลอดภัยของคอมพิวเตอร์: วิธีการเข้ารหัสลับ"
  3. Romanets Yu. V. , Timofeev P. A. , Shangin V. F. "การปกป้องข้อมูลในยุคใหม่ ระบบคอมพิวเตอร์".
  4. Sokolov A.V., Shangin V.F. "การปกป้องข้อมูลในเครือข่ายและระบบขององค์กรแบบกระจาย"

คำอธิบายที่สมบูรณ์ของอัลกอริธึมการเข้ารหัสสามารถพบได้ในเอกสารต่อไปนี้:

  1. GOST 28147-89 ระบบประมวลผลข้อมูล การป้องกันการเข้ารหัส
  2. อัลกอริธึมการแปลงการเข้ารหัส - ม.: มาตรฐานแห่งสหภาพโซเวียต, 2532
  3. อัลกอริทึม AES: http://www.nist.gov/ae

อัลกอริทึม RSA: http://www.rsasecurity.com/rsalabs/pkcs/pkcs-1

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

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

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

ประเภทการเข้ารหัส

การเข้ารหัสแบบสมมาตร

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

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

ในระบบสมัยใหม่ คีย์มักจะเป็นสตริงข้อมูลที่ได้มาจากรหัสผ่านที่รัดกุม หรือจากแหล่งที่มาแบบสุ่มโดยสมบูรณ์ มันถูกป้อนเข้าไปในซอฟต์แวร์เข้ารหัสแบบสมมาตร ซึ่งใช้เพื่อเก็บข้อมูลอินพุตเป็นความลับ การแย่งชิงข้อมูลสามารถทำได้โดยใช้อัลกอริธึมการเข้ารหัสแบบสมมาตร เช่น Data Encryption Standard (DES), Advanced Encryption Standard (AES) หรือ International Data Encryption Algorithm (IDEA)

ข้อจำกัด

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

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

การเข้ารหัสแบบอสมมาตร

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

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

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

Diffie-Hellman และ RSA เป็นตัวอย่างของอัลกอริทึมที่ใช้การเข้ารหัสคีย์สาธารณะ

ข้อจำกัด

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

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

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

ดังนั้น เมื่อ Sasha ได้รับข้อความนี้ เขาจึงถูกชักนำให้เชื่อว่าข้อความนี้มาจากนาตาชา และยังคงไม่รู้ว่ามีการเล่นผิดกติกา

การแฮช

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

  • ข้อมูลเดียวกันจะสร้างแฮชเดียวกันเสมอ
  • ไม่สามารถสร้างข้อมูลดิบจากแฮชเพียงอย่างเดียวได้
  • เป็นไปไม่ได้ที่จะลองใช้อินพุตที่แตกต่างกันเพื่อสร้างแฮชเดียวกัน

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

Message Digest 5 (MD5) และ Secure Hashing Algorithm (SHA) เป็นอัลกอริธึมการแฮชที่ใช้กันอย่างแพร่หลายสองตัว

ข้อจำกัด

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

การรวมกันของวิธีการเข้ารหัส

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

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

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

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

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

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

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

บทนี้ให้รากฐานที่จำเป็นสำหรับการศึกษาการเข้ารหัสแบบบล็อกและสตรีมสมัยใหม่ ซึ่งจะกล่าวถึงในสามบทถัดไป บทนี้ส่วนใหญ่เน้นไปที่การอภิปรายแนวคิดทั่วไปของการเข้ารหัสบล็อกสมัยใหม่ และมีเพียงส่วนเล็กๆ เท่านั้นที่เน้นหลักการของการเข้ารหัสสตรีมสมัยใหม่

7.1. ยันต์บล็อกสมัยใหม่

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


ข้าว. 7.1.

หากข้อความมีขนาดเล็กกว่า n บิต จะต้องเพิ่มช่องว่างภายในเพื่อสร้างบล็อก n บิตนั้น หากข้อความมีมากกว่า n บิต จะต้องแบ่งออกเป็นบล็อก n บิต และต้องเพิ่มช่องว่างภายในที่เหมาะสมในบล็อกสุดท้ายหากจำเป็น ค่าทั่วไปสำหรับ n มักจะเป็น 64, 128, 256 หรือ 512 บิต

ตัวอย่างที่ 7.1

ต้องเพิ่มบิตพิเศษจำนวนเท่าใดในข้อความ 100 อักขระ หากการเข้ารหัสเป็น ASCII 8 บิต และรหัสบล็อกยอมรับบล็อก 64 บิต

สารละลาย

เข้ารหัส 100 อักขระโดยใช้ ASCII 8 บิต ข้อความนี้มี 800 บิต ข้อความต้นฉบับต้องหารด้วย 64 ลงตัว ถ้า | เอ็ม | และ |แพด |

- ความยาวของข้อความและความยาวของช่องว่างภายในแล้ว - เอ็ม | -

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

การทดแทนหรือการขนย้าย

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

หากการเข้ารหัสถูกออกแบบให้เป็น รหัสทดแทนค่าบิต 1 หรือ 0 ในข้อความต้นฉบับสามารถแทนที่ด้วย 0 หรือ 1 ได้ ซึ่งหมายความว่าข้อความต้นฉบับและข้อความไซเฟอร์เท็กซ์สามารถมีได้ หมายเลขที่แตกต่างกันหน่วย บล็อกข้อความธรรมดาขนาด 64 บิตที่มีศูนย์ 12 ตัวและ 52 ตัวสามารถแสดงในไซเฟอร์เท็กซ์ด้วยศูนย์ 34 ตัวและ 30 ตัว หากการเข้ารหัสถูกออกแบบให้เป็น รหัสการเรียงสับเปลี่ยน (การขนย้าย)บิตจะเปลี่ยนลำดับ (ย้าย) เท่านั้น โดยคงจำนวนอักขระเท่าเดิมในต้นฉบับและไซเฟอร์เท็กซ์ ไม่ว่าในกรณีใด จำนวนข้อความธรรมดาหรือไซเฟอร์เท็กซ์ n บิตที่เป็นไปได้คือ 2n เนื่องจากแต่ละบิต n ที่ใช้ในบล็อกสามารถมีค่าหนึ่งในสองค่า - 0 หรือ 1.2 64 บล็อกจาก 64 บิตเพื่อค้นหาค่าหนึ่ง ซึ่งทำให้ ความรู้สึก. หากอีฟสามารถลองความเร็ว 1 พันล้านบล็อกต่อวินาที งานนี้ต้องใช้เวลาหลายร้อยปีจึงจะสำเร็จ

ข. ในกรณีที่สอง (การขนย้าย) อีฟรู้ว่ามี 10 อันในข้อความต้นฉบับเนื่องจากการขนย้ายไม่ได้เปลี่ยนจำนวน (หรือศูนย์) ในไซเฟอร์เท็กซ์ อีฟสามารถโจมตีด้วยการค้นหาอย่างละเอียดโดยใช้เฉพาะบล็อก 64 บิตที่มี 10 บล็อกพอดี มีเพียงเท่านั้น (64!) / [(10!) (54!)] = 151 473 214 816 ของ 2 64 คำ 64 บิต ซึ่งมี 10 หน่วยพอดี อีฟสามารถทดสอบทั้งหมดได้ในเวลาไม่ถึง 3 นาที หากเธอสามารถทำการทดสอบได้ 1 พันล้านครั้งต่อวินาที

ทนต่อการโจมตีการค้นหาที่ละเอียดถี่ถ้วน บล็อกรหัสสมัยใหม่ต้องได้รับการออกแบบให้เป็นรหัสทดแทน

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

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

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

Steganography

Steganography มีอายุมากกว่าการเข้ารหัสและการเข้ารหัส ศิลปะนี้ปรากฏมานานแล้ว มีความหมายตามตัวอักษรว่า " จดหมายที่ซ่อนอยู่"หรือ"การเขียนลับ" แม้ว่าการอำพรางข้อมูลจะไม่ตรงกับคำจำกัดความของรหัสหรือตัวเลข แต่ก็มีจุดมุ่งหมายเพื่อซ่อนข้อมูลจากสายตาที่สอดรู้สอดเห็น

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

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

ROT1 และรหัสซีซาร์

ชื่อของรหัสนี้คือ ROTate 1 จดหมายส่งต่อและเป็นที่รู้จักของเด็กนักเรียนหลายคน มันเป็นรหัสทดแทนอย่างง่าย สาระสำคัญคือแต่ละตัวอักษรจะถูกเข้ารหัสโดยการเลื่อนตัวอักษร 1 ตัวไปข้างหน้า A -> B, B -> B, ..., I -> A. ตัวอย่างเช่น ลองเข้ารหัสวลี “ Nastya ของเราร้องไห้เสียงดัง” และรับ “obshb Obtua dspnlp rmbsheu”

การเข้ารหัส ROT1 สามารถสรุปได้ หมายเลขใดก็ได้ offsets จากนั้นเรียกว่า ROTN โดยที่ N คือตัวเลขที่ควรชดเชยการเข้ารหัสตัวอักษร ในรูปแบบนี้ รหัสนี้เป็นที่รู้จักมาตั้งแต่สมัยโบราณ และเรียกว่า "รหัสซีซาร์"

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

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

รหัสการเรียงสับเปลี่ยนอย่างง่ายประเภทนี้มีความร้ายแรงมากกว่าและมีการใช้อย่างแข็งขันเมื่อไม่นานมานี้ ในช่วงสงครามกลางเมืองอเมริกาและสงครามโลกครั้งที่ 1 มีการใช้ข้อความนี้ในการส่งข้อความ อัลกอริธึมประกอบด้วยการจัดเรียงตัวอักษรใหม่ - เขียนข้อความในลำดับย้อนกลับหรือจัดเรียงตัวอักษรใหม่เป็นคู่ ตัวอย่างเช่น ลองเข้ารหัสวลี “Morse code is also a cipher” -> “Akubza ezrom - ezhot rfish”

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

รหัสมอร์ส

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

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

การทดแทนอักษรเดี่ยว

รหัส ROTN และมอร์สที่อธิบายไว้ข้างต้นเป็นตัวแทนของแบบอักษรทดแทนแบบตัวอักษรเดียว คำนำหน้า "mono" หมายความว่าในระหว่างการเข้ารหัส ตัวอักษรแต่ละตัวในข้อความต้นฉบับจะถูกแทนที่ด้วยตัวอักษรหรือรหัสอื่นจากตัวอักษรเข้ารหัสตัวเดียว

การถอดรหัสรหัสทดแทนแบบง่ายนั้นไม่ใช่เรื่องยากและนี่คือข้อเสียเปรียบหลัก สามารถแก้ไขได้โดยเพียงแค่ค้นหาหรือ ตัวอย่างเช่นเป็นที่รู้กันว่าตัวอักษรที่ใช้มากที่สุดในภาษารัสเซียคือ "o", "a", "i" ดังนั้น เราสามารถสรุปได้ว่าตัวอักษรที่ปรากฏบ่อยที่สุดในไซเฟอร์เท็กซ์หมายถึง "o", "a" หรือ "i" จากการพิจารณาเหล่านี้ ข้อความสามารถถอดรหัสได้แม้ว่าจะไม่ต้องค้นหาด้วยคอมพิวเตอร์ก็ตาม

เป็นที่รู้กันว่า Mary I ราชินีแห่งสก็อตตั้งแต่ปี 1561 ถึง 1567 มีการใช้รหัสแทนที่ตัวอักษรเดี่ยวที่ซับซ้อนมากซึ่งมีการผสมหลายชุด แต่ศัตรูของเธอก็สามารถถอดรหัสข้อความได้ และข้อมูลก็เพียงพอที่จะตัดสินประหารราชินี

รหัส Gronsfeld หรือการทดแทนหลายตัวอักษร

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

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

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

ดี เอฟ วี เอ็กซ์
เจ ถาม 5 ชม ดี
ดี 2 อี วี 9 ซี
เอฟ 8 ฉัน เอ็น เค วี
คุณ บี เอฟ 6 โอ
วี 4 เอ็กซ์ 3
เอ็กซ์ ถาม 7 0

อัลกอริทึมสำหรับการเขียนสี่เหลี่ยมจัตุรัส ADFGX มีดังนี้:

  1. เราสุ่มตัวอักษร n ตัวเพื่อแสดงคอลัมน์และแถว
  2. เราสร้างเมทริกซ์ N x N
  3. เราป้อนตัวอักษร ตัวเลข เครื่องหมาย ลงในเมทริกซ์ โดยสุ่มกระจัดกระจายไปทั่วเซลล์

มาสร้างสี่เหลี่ยมที่คล้ายกันสำหรับภาษารัสเซียกันดีกว่า ตัวอย่างเช่น เรามาสร้างสี่เหลี่ยมจัตุรัส ABCD:

บี ใน ดี
ของเธอ เอ็น BB ฉัน/ป
บี ชม วี/เอฟ เอช/ซี ซี ดี
ใน ช/ชช บี เอ็กซ์ ฉัน
เกี่ยวกับ ยู
ดี และ คุณ

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

1 2 3 4 5 6 7 8 9 10 11 12 13 14
วลี ถึง เกี่ยวกับ ถึง เอ็น และ เอฟ
รหัส บีวี ยาม กิกะไบต์ จีดี อา บีวี ฐานข้อมูล เกี่ยวกับ ดีจี นรก เวอร์จิเนีย นรก BB ฮ่า

ดังนั้นข้อความที่เข้ารหัสสุดท้ายจะมีลักษณะดังนี้: “bvgvgbgdagbvdbabdgvdvaadbbga” แน่นอนว่าชาวเยอรมันใช้วิธีเดียวกันนี้ผ่านยันต์อีกหลายตัว และผลลัพธ์ที่ได้คือข้อความเข้ารหัสที่ป้องกันการแฮ็กได้มาก

รหัสวิเจแนร์

รหัสนี้เป็นลำดับความสำคัญที่ทนทานต่อการแตกร้าวได้ดีกว่ารหัสตัวอักษรเดี่ยว แม้ว่าจะเป็นรหัสแทนที่ข้อความธรรมดาก็ตาม อย่างไรก็ตาม ด้วยอัลกอริธึมที่แข็งแกร่ง จึงถือว่าเป็นไปไม่ได้ที่จะแฮ็กเป็นเวลานาน การกล่าวถึงครั้งแรกย้อนกลับไปในศตวรรษที่ 16 Vigenère (นักการทูตชาวฝรั่งเศส) ถูกมองว่าเป็นผู้ประดิษฐ์อย่างผิดพลาด เพื่อจะเข้าใจอะไรได้ดีขึ้น เรากำลังพูดถึงพิจารณาตารางVigenère (Vigenère square, tabula recta) สำหรับภาษารัสเซีย

มาเริ่มเข้ารหัสวลี "Kasperovich หัวเราะ" แต่เพื่อให้การเข้ารหัสประสบความสำเร็จ คุณต้องมีคำหลัก - ปล่อยให้เป็น "รหัสผ่าน" ตอนนี้เรามาเริ่มการเข้ารหัสกันดีกว่า ในการดำเนินการนี้ เราจดคีย์หลายครั้งเพื่อให้จำนวนตัวอักษรตรงกับจำนวนตัวอักษรในวลีที่เข้ารหัส โดยการทำซ้ำคีย์หรือตัดออก:

ตอนนี้ เมื่อใช้ระนาบพิกัด เรามองหาเซลล์ที่เป็นจุดตัดของคู่ตัวอักษร และเราได้: K + P = b, A + A = B, C + P = B เป็นต้น

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
รหัส: คอมเมอร์สันต์ บี ใน ยู กับ เอ็น ยู สช และ อี เอ็กซ์ และ

เราเข้าใจแล้วว่า "แคสเปอร์โรวิชหัวเราะ" = "abvyusnyugshch eykhzhgal"

การทำลายรหัสVigenèreนั้นยากมาก เนื่องจากการวิเคราะห์ความถี่จำเป็นต้องทราบความยาว คำหลัก- ดังนั้นการแฮ็กจึงเกี่ยวข้องกับการสุ่มเพิ่มความยาวของคีย์เวิร์ดและพยายามถอดรหัสข้อความลับ

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

รหัส

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

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

ในศตวรรษที่ 20 หลายรัฐใช้รหัสเพื่อส่งข้อมูลลับ ซึ่งเปลี่ยนแปลงสมุดรหัสเมื่อเวลาผ่านไป ช่วงระยะเวลาหนึ่ง- และพวกเขาก็ตามล่าหาหนังสือของเพื่อนบ้านและฝ่ายตรงข้ามอย่างแข็งขัน

"ปริศนา"

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

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

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

การเข้ารหัสคีย์สาธารณะ

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

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

ลองดูตัวอย่างง่ายๆ ให้กุญแจสาธารณะเป็น 905 ตัวหารคือตัวเลข 1, 5, 181 และ 905 จากนั้นรหัสลับจะเป็นเช่นตัวเลข 5*181 คุณจะบอกว่ามันง่ายเกินไป? จะเกิดอะไรขึ้นหากหมายเลขสาธารณะเป็นตัวเลข 60 หลัก? การคำนวณตัวหารจำนวนมากเป็นเรื่องยากทางคณิตศาสตร์

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

ความทนทานของตัวอักษร

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

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

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

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

แผนการทำงาน

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

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

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

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

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


DES ที่ยอดเยี่ยม

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

DES ได้รับการพิสูจน์แล้วว่ามีจุดเด่นของทรัพย์สินนี้ทั้งหมด

แม้ว่าบล็อกข้อความธรรมดาทั้งสองจะแตกต่างกันเพียงบิตขวาสุด แต่บล็อกข้อความไซเฟอร์จะแตกต่างกัน 29 บิต ซึ่งหมายความว่าการเปลี่ยนแปลงประมาณ 1.5% ของข้อความธรรมดาทำให้เกิดการเปลี่ยนแปลงประมาณ 45% ของข้อความธรรมดา

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

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

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