Ciphers แบบดั้งเดิม
ในบทที่สองเราได้กล่าวถึงพื้นฐานของการเข้ารหัสสมัยใหม่ เราจัดเตรียมการเข้ารหัสด้วยชุดเครื่องมือซึ่งเทคนิคการเข้ารหัสต่างๆถือเป็นเครื่องมือพื้นฐาน หนึ่งในเครื่องมือเหล่านี้คือ Symmetric Key Encryption ซึ่งคีย์ที่ใช้ในการเข้ารหัสและถอดรหัสเหมือนกัน
ในบทนี้เราจะพูดถึงเทคนิคนี้เพิ่มเติมและแอปพลิเคชันเพื่อพัฒนาระบบเข้ารหัสต่างๆ
ระบบการเข้ารหัสก่อนหน้านี้
ก่อนที่จะดำเนินการต่อไปคุณจำเป็นต้องทราบข้อเท็จจริงบางประการเกี่ยวกับระบบนิเวศทางประวัติศาสตร์ -
ระบบทั้งหมดนี้คือ based on symmetric key encryption โครงการ
บริการรักษาความปลอดภัยเดียวที่ระบบเหล่านี้มีให้คือการรักษาความลับของข้อมูล
ซึ่งแตกต่างจากระบบสมัยใหม่ซึ่งเป็นดิจิทัลและถือว่าข้อมูลเป็นเลขฐานสองระบบก่อนหน้านี้ทำงานบนตัวอักษรเป็นองค์ประกอบพื้นฐาน
ระบบเข้ารหัสก่อนหน้านี้เรียกอีกอย่างว่า Ciphers โดยทั่วไปการเข้ารหัสเป็นเพียงชุดของขั้นตอน (อัลกอริทึม) สำหรับดำเนินการทั้งการเข้ารหัสและการถอดรหัสที่เกี่ยวข้อง
ซีซาร์ไซเฟอร์
มันคือการเข้ารหัสแบบโมโน - อักษรโดยตัวอักษรแต่ละตัวของข้อความธรรมดาจะถูกแทนที่ด้วยตัวอักษรอื่นเพื่อสร้างไซเฟอร์เท็กซ์ เป็นรูปแบบที่ง่ายที่สุดของรูปแบบการเข้ารหัสการแทนที่
ระบบเข้ารหัสนี้โดยทั่วไปเรียกว่า Shift Cipher. แนวคิดคือการแทนที่ตัวอักษรแต่ละตัวด้วยตัวอักษรอื่นซึ่ง 'เลื่อน' ด้วยตัวเลขคงที่ระหว่าง 0 ถึง 25
สำหรับรูปแบบประเภทนี้ทั้งผู้ส่งและผู้รับยอมรับ 'หมายเลขกะลับ' สำหรับการเลื่อนตัวอักษร ตัวเลขนี้ซึ่งอยู่ระหว่าง 0 ถึง 25 กลายเป็นกุญแจสำคัญในการเข้ารหัส
ชื่อ 'Caesar Cipher' บางครั้งใช้เพื่ออธิบาย Shift Cipher เมื่อใช้ 'shift of three'
กระบวนการของ Shift Cipher
ในการเข้ารหัสตัวอักษรข้อความธรรมดาผู้ส่งจะวางตำแหน่งไม้บรรทัดเลื่อนไว้ข้างใต้ตัวอักษรข้อความธรรมดาชุดแรกและเลื่อนไปทางซ้ายตามจำนวนตำแหน่งของการกะความลับ
จากนั้นตัวอักษรข้อความธรรมดาจะถูกเข้ารหัสเป็นตัวอักษรไซเฟอร์เท็กซ์บนไม้บรรทัดเลื่อนด้านล่าง ผลลัพธ์ของกระบวนการนี้แสดงอยู่ในภาพประกอบต่อไปนี้สำหรับการเปลี่ยนตำแหน่งที่ตกลงกันสามตำแหน่ง ในกรณีนี้ 'บทช่วยสอน' ข้อความธรรมดาจะถูกเข้ารหัสเป็นรหัสลับ 'WXWRULDO' นี่คือตัวอักษรไซเฟอร์เท็กซ์สำหรับ Shift จาก 3 -
ในการรับรหัสลับผู้รับที่รู้การกะความลับด้วยให้วางไม้บรรทัดเลื่อนของเขาไว้ใต้ตัวอักษรไซเฟอร์เท็กซ์แล้วเลื่อนไปทางขวาตามหมายเลขกะที่ตกลงกัน 3 ในกรณีนี้
จากนั้นเขาจะแทนที่ตัวอักษรไซเฟอร์เท็กซ์ด้วยตัวอักษรธรรมดาบนไม้บรรทัดเลื่อนด้านล่าง ดังนั้นการเข้ารหัส 'WXWRULDO' จึงถูกถอดรหัสเป็น 'บทช่วยสอน' ในการถอดรหัสข้อความที่เข้ารหัสด้วย Shift จาก 3 ให้สร้างตัวอักษรข้อความธรรมดาโดยใช้ shift '-3' ดังที่แสดงด้านล่าง -
ค่าความปลอดภัย
Caesar Cipher คือ not a securecryptosystem เนื่องจากมีเพียง 26 คีย์ที่เป็นไปได้ที่จะลองใช้ ผู้โจมตีสามารถทำการค้นหาคีย์ที่ละเอียดถี่ถ้วนด้วยทรัพยากรคอมพิวเตอร์ที่มีอยู่ จำกัด
รหัสการแทนที่อย่างง่าย
มันเป็นการปรับปรุง Caesar Cipher แทนที่จะเปลี่ยนตัวอักษรด้วยตัวเลขบางตัวโครงร่างนี้ใช้การเรียงลำดับของตัวอักษรในตัวอักษร
ตัวอย่างเช่น AB … ..YZ และ ZY …… BA เป็นสองการเรียงสับเปลี่ยนที่ชัดเจนของตัวอักษรทั้งหมดในตัวอักษร การเรียงสับเปลี่ยนไม่ใช่อะไรนอกจากชุดตัวอักษรที่สับสน
ด้วยตัวอักษร 26 ตัวการเรียงลำดับที่เป็นไปได้คือ 26! (ปัจจัย of 26) ซึ่งเท่ากับ 4x10 26 ผู้ส่งและผู้รับอาจเลือกการเปลี่ยนแปลงใด ๆ ที่เป็นไปได้เหล่านี้เป็นตัวอักษรไซเฟอร์เท็กซ์ การเปลี่ยนแปลงนี้เป็นกุญแจลับของโครงร่าง
ขั้นตอนการเปลี่ยนรหัสอย่างง่าย
เขียนตัวอักษร A, B, C, ... , Z ตามลำดับธรรมชาติ
ผู้ส่งและผู้รับจะตัดสินใจเลือกการเรียงลำดับตัวอักษรของตัวอักษรที่สุ่มเลือก
ภายใต้ตัวอักษรลำดับธรรมชาติให้เขียนการเรียงสับเปลี่ยนที่เลือกของตัวอักษรของตัวอักษร สำหรับการเข้ารหัสผู้ส่งจะแทนที่ตัวอักษรธรรมดาแต่ละตัวโดยแทนที่ตัวอักษรการเรียงสับเปลี่ยนที่อยู่ด้านล่างในตารางโดยตรง กระบวนการนี้แสดงในภาพประกอบต่อไปนี้ ในตัวอย่างนี้การเรียงสับเปลี่ยนที่เลือกคือ K, D, G, ... , O. ข้อความธรรมดา 'point' ถูกเข้ารหัสเป็น 'MJBXZ'
นี่คือตัวอักษร Ciphertext ที่สับสนซึ่งลำดับของตัวอักษรไซเฟอร์เท็กซ์เป็นกุญแจสำคัญ
ในการรับไซเฟอร์เท็กซ์ผู้รับซึ่งทราบการเรียงสับเปลี่ยนที่เลือกแบบสุ่มจะแทนที่ตัวอักษรไซเฟอร์เท็กซ์แต่ละตัวในแถวล่างด้วยตัวอักษรข้อความธรรมดาที่สอดคล้องกันในแถวบนสุด รหัสลับ 'MJBXZ' ถูกถอดรหัสเป็น 'point'
ค่าความปลอดภัย
Simple Substitution Cipher เป็นการปรับปรุงที่ดีกว่า Caesar Cipher จำนวนคีย์ที่เป็นไปได้มีขนาดใหญ่ (26!) และแม้แต่ระบบคอมพิวเตอร์สมัยใหม่ก็ยังไม่มีประสิทธิภาพเพียงพอที่จะเปิดการโจมตีด้วยกำลังดุร้ายเพื่อทำลายระบบได้อย่างสะดวกสบาย อย่างไรก็ตาม Simple Substitution Cipher มีการออกแบบที่เรียบง่ายและมีแนวโน้มที่จะออกแบบข้อบกพร่องกล่าวว่าการเลือกการเปลี่ยนแปลงที่ชัดเจนระบบเข้ารหัสนี้สามารถแตกหักได้ง่าย
Monoalphabetic และ Polyalphabetic Cipher
Monoalphabetic cipher คือการเข้ารหัสแทนซึ่งสำหรับคีย์ที่กำหนดตัวอักษรการเข้ารหัสสำหรับตัวอักษรธรรมดาแต่ละตัวจะได้รับการแก้ไขตลอดกระบวนการเข้ารหัส ตัวอย่างเช่นหาก 'A' ถูกเข้ารหัสเป็น 'D' สำหรับจำนวนเหตุการณ์ใด ๆ ในข้อความธรรมดานั้น 'A' จะถูกเข้ารหัสเป็น 'D' เสมอ
รหัสการแทนที่ทั้งหมดที่เราได้พูดถึงก่อนหน้านี้ในบทนี้คือ monoalphabetic การเข้ารหัสเหล่านี้มีความอ่อนไหวต่อการเข้ารหัสลับอย่างมาก
Polyalphabetic Cipher คือการเข้ารหัสแทนซึ่งตัวอักษรการเข้ารหัสสำหรับตัวอักษรธรรมดาอาจแตกต่างกันไปตามสถานที่ต่างๆในระหว่างกระบวนการเข้ารหัส สองตัวอย่างถัดไปplayfair and Vigenere Cipher are polyalphabetic ciphers.
Playfair Cipher
ในรูปแบบนี้คู่ของตัวอักษรจะถูกเข้ารหัสแทนที่จะเป็นตัวอักษรเดี่ยวเช่นเดียวกับในกรณีของการเข้ารหัสการแทนที่อย่างง่าย
ในการเข้ารหัสของ playfair เริ่มแรกจะมีการสร้างตารางสำคัญ ตารางคีย์คือตาราง 5 × 5 ของตัวอักษรที่ทำหน้าที่เป็นคีย์สำหรับเข้ารหัสข้อความธรรมดา ตัวอักษร 25 ตัวแต่ละตัวจะต้องไม่ซ้ำกันและตัวอักษรหนึ่งตัว (โดยปกติคือ J) จะถูกละไว้จากตารางเนื่องจากเราต้องการเพียง 25 ตัวอักษรแทนที่จะเป็น 26 หากข้อความธรรมดามี J ก็จะถูกแทนที่ด้วย I
ผู้ส่งและผู้รับจะฆ่าตัวตายในคีย์หนึ่ง ๆ โดยพูดว่า "บทช่วยสอน" ในตารางสำคัญอักขระตัวแรก (จากซ้ายไปขวา) ในตารางคือวลีโดยไม่รวมตัวอักษรที่ซ้ำกัน ส่วนที่เหลือของตารางจะเต็มไปด้วยตัวอักษรที่เหลือตามลำดับตามธรรมชาติ ตารางสำคัญทำงานออกมาเป็น -
กระบวนการของ Playfair Cipher
ขั้นแรกข้อความธรรมดาจะถูกแบ่งออกเป็นคู่ของตัวอักษรสองตัว (digraphs) หากมีตัวอักษรจำนวนคี่ Z จะถูกเพิ่มเข้าไปในตัวอักษรตัวสุดท้าย สมมติว่าเราต้องการเข้ารหัสข้อความ "ซ่อนเงิน" มันจะเขียนเป็น -
HI DE MO NE YZ
กฎของการเข้ารหัสคือ -
หากตัวอักษรทั้งสองอยู่ในคอลัมน์เดียวกันให้นำตัวอักษรด้านล่างแต่ละตัว (กลับไปด้านบนสุดหากอยู่ด้านล่างสุด)
ที | ยู | โอ | ร | ผม | 'H' และ 'I' อยู่ในคอลัมน์เดียวกันดังนั้นจึงต้องใช้ตัวอักษรด้านล่างแทน HI → QC |
ก | ล | ส | ข | ค | |
ง | จ | ฉ | ช | ซ | |
เค | ม | น | ป | ถาม | |
V | ว | X | ย | Z |
หากตัวอักษรทั้งสองอยู่ในแถวเดียวกันให้นำตัวอักษรไปทางขวาของแต่ละตัวอักษร (กลับไปทางซ้ายถ้าอยู่ทางขวาสุด)
ที | ยู | โอ | ร | ผม | 'D' และ 'E' อยู่ในแถวเดียวกันดังนั้นจึงนำตัวอักษรทางขวาของพวกเขามาแทนที่ DE → EF |
ก | ล | ส | ข | ค | |
ง | จ | ฉ | ช | ซ | |
เค | ม | น | ป | ถาม | |
V | ว | X | ย | Z |
ถ้ากฎสองข้อก่อนหน้านี้ไม่เป็นจริงให้สร้างรูปสี่เหลี่ยมผืนผ้าที่มีตัวอักษรทั้งสองตัวแล้วนำตัวอักษรไปวางบนมุมตรงข้ามแนวนอนของสี่เหลี่ยม
การใช้กฎเหล่านี้ผลลัพธ์ของการเข้ารหัส 'ซ่อนเงิน' ด้วยคีย์ของ 'บทเรียน' จะเป็น -
QC EF NU MF ZV
การถอดรหัสรหัส Playfair ทำได้ง่ายเพียงทำกระบวนการเดียวกันในแบบย้อนกลับ ผู้รับมีคีย์เดียวกันและสามารถสร้างตารางคีย์เดียวกันจากนั้นถอดรหัสข้อความใด ๆ ที่สร้างขึ้นโดยใช้คีย์นั้น
ค่าความปลอดภัย
นอกจากนี้ยังเป็นรหัสทดแทนและยากที่จะทำลายเมื่อเทียบกับการเข้ารหัสแบบง่าย เช่นเดียวกับในกรณีของการเปลี่ยนรหัสการเข้ารหัสการเข้ารหัสก็เป็นไปได้ในการเข้ารหัสของ Playfair เช่นกันอย่างไรก็ตามจะเทียบกับตัวอักษรที่เป็นไปได้ 625 คู่ (ตัวอักษร 25x25 ตัว) แทนที่จะเป็นตัวอักษรที่เป็นไปได้ 26 ตัว
การเข้ารหัส Playfair ส่วนใหญ่ใช้เพื่อปกป้องความลับที่สำคัญ แต่ไม่สำคัญเนื่องจากใช้งานได้รวดเร็วและไม่ต้องใช้อุปกรณ์พิเศษใด ๆ
รหัส Vigenere
รูปแบบของการเข้ารหัสนี้ใช้สตริงข้อความ (พูดคำ) เป็นคีย์ซึ่งจะใช้สำหรับการเปลี่ยนแปลงจำนวนมากบนข้อความธรรมดา
ตัวอย่างเช่นสมมติว่าคีย์คือ 'จุด' ตัวอักษรแต่ละตัวของคีย์จะถูกแปลงเป็นค่าตัวเลขตามลำดับ: ในกรณีนี้
p → 16, o → 15, i → 9, n → 14 และ t → 20
ดังนั้นกุญแจสำคัญคือ 16 15 9 14 20
กระบวนการของ Vigenere Cipher
ผู้ส่งและผู้รับจะตัดสินใจเลือกคีย์ พูดว่า "จุด" คือกุญแจสำคัญ การแสดงตัวเลขของคีย์นี้คือ '16 15 9 14 20 '
ผู้ส่งต้องการเข้ารหัสข้อความโดยพูดว่า "โจมตีจากตะวันออกเฉียงใต้" เขาจะจัดเรียงข้อความธรรมดาและคีย์ตัวเลขดังนี้ -
ตอนนี้เขาเลื่อนตัวอักษรธรรมดาแต่ละตัวตามตัวเลขที่เขียนไว้ด้านล่างเพื่อสร้าง ciphertext ดังที่แสดงด้านล่าง -
ที่นี่อักขระข้อความธรรมดาแต่ละตัวจะถูกเลื่อนไปตามจำนวนที่แตกต่างกันและจำนวนนั้นจะถูกกำหนดโดยคีย์ คีย์จะต้องน้อยกว่าหรือเท่ากับขนาดของข้อความ
สำหรับการถอดรหัสเครื่องรับจะใช้คีย์เดียวกันและเลื่อนการเข้ารหัสที่ได้รับในลำดับย้อนกลับเพื่อรับข้อความธรรมดา
ค่าความปลอดภัย
Vigenere Cipher ได้รับการออกแบบโดยการปรับแต่งการเข้ารหัสซีซาร์มาตรฐานเพื่อลดประสิทธิภาพของการเข้ารหัสลับบนไซเฟอร์เท็กซ์และทำให้ระบบเข้ารหัสมีความแข็งแกร่งมากขึ้น เป็นอย่างมากmore secure than a regular Caesar Cipher.
ในประวัติศาสตร์มักใช้เพื่อปกป้องข้อมูลทางการเมืองและการทหารที่ละเอียดอ่อน มันถูกเรียกว่าunbreakable cipher เนื่องจากความยากลำบากในการเข้ารหัสลับ
ตัวแปรของ Vigenere Cipher
การเข้ารหัส Vigenere มีสองกรณีพิเศษ -
ความยาวของคีย์เวิร์ดเหมือนกับข้อความร้องเรียน กรณีนี้เรียกว่าVernam Cipher. มีความปลอดภัยมากกว่ารหัส Vigenere ทั่วไป
Vigenere cipher กลายเป็นระบบเข้ารหัสที่มีความลับสมบูรณ์แบบซึ่งเรียกว่า One-time pad.
แพดครั้งเดียว
สถานการณ์คือ -
- ความยาวของคีย์เวิร์ดจะเหมือนกับความยาวของข้อความธรรมดา
- คีย์เวิร์ดคือสตริงตัวอักษรที่สร้างขึ้นแบบสุ่ม
- คำหลักถูกใช้เพียงครั้งเดียว
ค่าความปลอดภัย
ให้เราเปรียบเทียบ Shift cipher กับ one-time pad
Shift Cipher - ง่ายต่อการทำลาย
ในกรณีของ Shift cipher ข้อความทั้งหมดอาจมีการเปลี่ยนแปลงระหว่าง 1 ถึง 25 นี่เป็นขนาดที่เล็กมากและง่ายต่อการดุร้าย อย่างไรก็ตามเมื่ออักขระแต่ละตัวมีการเลื่อนระหว่าง 1 ถึง 26 ของตัวเองคีย์ที่เป็นไปได้จะเพิ่มขึ้นแบบทวีคูณสำหรับข้อความ
Pad ครั้งเดียว - เป็นไปไม่ได้ที่จะทำลาย
สมมติว่าเราเข้ารหัสชื่อ "จุด" ด้วยแผ่นครั้งเดียว เป็นข้อความ 5 ตัวอักษร ในการทำลายไซเฟอร์เท็กซ์ด้วยแรงเดรัจฉานคุณต้องลองใช้ความเป็นไปได้ทั้งหมดของคีย์และทำการคำนวณสำหรับ (26 x 26 x 26 x 26 x 26) = 26 5 = 11881376 ครั้ง สำหรับข้อความที่มีตัวอักษร 5 ตัว ดังนั้นสำหรับข้อความที่ยาวขึ้นการคำนวณจะเพิ่มขึ้นแบบทวีคูณพร้อมกับตัวอักษรเพิ่มเติมทุกตัว สิ่งนี้ทำให้ไม่สามารถคำนวณได้ที่จะทำลายไซเฟอร์เท็กซ์ด้วยกำลังเดรัจฉาน
การเปลี่ยนรหัส
เป็นรหัสอีกประเภทหนึ่งที่มีการจัดเรียงลำดับของตัวอักษรในข้อความธรรมดาเพื่อสร้างการเข้ารหัส ตัวอักษรธรรมดาจริงจะไม่ถูกแทนที่
ตัวอย่างคือการเข้ารหัสแบบ 'การเปลี่ยนตำแหน่งคอลัมน์อย่างง่าย' ซึ่งข้อความธรรมดาจะถูกเขียนในแนวนอนด้วยความกว้างของตัวอักษรที่กำหนด จากนั้น ciphertext จะถูกอ่านในแนวตั้งดังที่แสดง
ตัวอย่างเช่นข้อความธรรมดาคือ“ รูปปั้นทองคำอยู่ในถ้ำที่สิบเอ็ด” และรหัสลับแบบสุ่มที่เลือกคือ“ ห้า” เราจัดเรียงข้อความนี้ในแนวนอนในตารางโดยมีจำนวนคอลัมน์เท่ากับค่าคีย์ ข้อความที่ได้แสดงไว้ด้านล่าง
การเข้ารหัสได้มาจากการอ่านคอลัมน์ในแนวตั้งจากคอลัมน์แรกถึงคอลัมน์สุดท้าย ciphertext คือ 'gnuneaoseenvltiltedasehetivc'
ในการถอดรหัสผู้รับจะเตรียมตารางที่คล้ายกัน จำนวนคอลัมน์เท่ากับหมายเลขคีย์ จำนวนแถวหาได้จากการหารจำนวนตัวอักษรไซเฟอร์เท็กซ์ทั้งหมดด้วยค่าคีย์และการปัดเศษของผลหารเป็นค่าจำนวนเต็มถัดไป
จากนั้นผู้รับจะเขียนไซเฟอร์เท็กซ์ที่ได้รับในแนวตั้งลงและจากคอลัมน์ซ้ายไปขวา ในการรับข้อความเขาอ่านในแนวนอนจากซ้ายไปขวาและจากแถวบนลงล่าง