รหัสง่ายๆ: คำอธิบายของรหัสยอดนิยมและรหัสลับ

สารบัญ:

รหัสง่ายๆ: คำอธิบายของรหัสยอดนิยมและรหัสลับ
รหัสง่ายๆ: คำอธิบายของรหัสยอดนิยมและรหัสลับ
Anonim

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

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

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

สเตกาโนกราฟ

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

Steganography หรือการเข้ารหัส
Steganography หรือการเข้ารหัส

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

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

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

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

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

ดิสก์ซิริลลิกสำหรับรหัสของซีซาร์
ดิสก์ซิริลลิกสำหรับรหัสของซีซาร์

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

เปลี่ยนรหัสหรือเปลี่ยนรหัส

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

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

รหัสมอร์ส

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

ซิริลลิกและละตินในรหัสมอร์ส
ซิริลลิกและละตินในรหัสมอร์ส

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

เปลี่ยนโมโนอัลฟาเบติก

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

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

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

รหัส Gronsfeld หรือการแทนที่ polyalphabetic

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

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

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

A D F G V X
A J Q A 5 H D
D 2 E R V 9 Z
F 8 Y ฉัน N K V
G U B F 6 O
V 4 G X S 3 T
X W L Q 7 C 0

อัลกอริทึมการยกกำลัง ADFGX มีดังต่อไปนี้:

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

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

A B B G D
A E/E N b/b A ฉัน/Y
B W V/F G/R З D
B ช/ช B L X ฉัน
G R M O ยู
D F T T S U

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

1 2 3 4 5 6 7 8 9 10 11 12 13 14
วลี K O M A K T N S Y Ш & F R
รหัส bw gv gb ที่ไหน ag bw db ab dg นรก วา นรก bb ฮา

ดังนั้น ข้อความที่เข้ารหัสสุดท้ายจะมีลักษณะดังนี้: "bvgvgbgdagbvdbabdgvdvaadbbga" แน่นอนว่าชาวเยอรมันทำแนวเดียวกันผ่านเลขศูนย์อีกหลายตัว และในที่สุดมันก็เสถียรมากเพื่อถอดรหัสข้อความที่เข้ารหัส

รหัส Vigenère

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

โต๊ะ Vigenère พร้อมอักษรรัสเซีย
โต๊ะ Vigenère พร้อมอักษรรัสเซีย

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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
วลี: K A С E R O B & W С M E E T С ฉัน
กุญแจ A R O L b A R O L b A R O L

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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
รหัส: b B B ยู С N ยู G Sch F E Y X F G A L

เราเข้าใจแล้วว่า "Kasperovich หัวเราะ"="bvusnyugschzh eykhzhgal".

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

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

รหัส

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

ตารางรหัส ASCII
ตารางรหัส ASCII

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

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

ปริศนา

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

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

เครื่องเข้ารหัส Nazi Enigma
เครื่องเข้ารหัส Nazi Enigma

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

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

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

อัลกอริธึมการเข้ารหัสคีย์สาธารณะ
อัลกอริธึมการเข้ารหัสคีย์สาธารณะ

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

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

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

ความคงทนของฟอนต์

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

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

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