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'

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

จากนั้นผู้รับจะเขียนไซเฟอร์เท็กซ์ที่ได้รับในแนวตั้งลงและจากคอลัมน์ซ้ายไปขวา ในการรับข้อความเขาอ่านในแนวนอนจากซ้ายไปขวาและจากแถวบนลงล่าง