ความจำเป็นในการเข้ารหัสการติดต่อเกิดขึ้นในโลกยุคโบราณ และการเข้ารหัสแบบแทนที่อย่างง่ายก็ปรากฏขึ้น ข้อความที่เข้ารหัสกำหนดชะตากรรมของการต่อสู้หลายครั้งและมีอิทธิพลต่อประวัติศาสตร์ เมื่อเวลาผ่านไป ผู้คนได้คิดค้นวิธีการเข้ารหัสขั้นสูงขึ้นเรื่อยๆ
รหัสและรหัสเป็นแนวคิดที่แตกต่างกัน วิธีแรกหมายถึงการแทนที่แต่ละคำในข้อความด้วยคำรหัส ประการที่สองคือการเข้ารหัสแต่ละสัญลักษณ์ของข้อมูลโดยใช้อัลกอริธึมเฉพาะ
หลังจากที่คณิตศาสตร์เริ่มเข้ารหัสข้อมูลและทฤษฎีการเข้ารหัสได้รับการพัฒนา นักวิทยาศาสตร์ได้ค้นพบคุณสมบัติที่มีประโยชน์มากมายของวิทยาศาสตร์ประยุกต์นี้ ตัวอย่างเช่น อัลกอริธึมการถอดรหัสได้ช่วยคลี่คลายภาษาที่ตายแล้ว เช่น อียิปต์โบราณหรือละติน
สเตกาโนกราฟ
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 มีดังต่อไปนี้:
- สุ่มเลือก n ตัวอักษรสำหรับคอลัมน์และแถว
- สร้างเมทริกซ์ N x N
- ป้อนตัวอักษร ตัวเลข อักขระที่สุ่มกระจัดกระจายไปทั่วเซลล์ลงในเมทริกซ์
มาสร้างสี่เหลี่ยมที่คล้ายกันสำหรับภาษารัสเซียกัน ตัวอย่างเช่น มาสร้างสี่เหลี่ยม 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) สำหรับภาษารัสเซีย
มาเริ่มเขียนโค้ดคำว่า "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 - รหัสสากลของอักขระง่าย ๆ
ข้อดีหลักของโค้ดคือถอดรหัสยากมาก การวิเคราะห์ความถี่แทบไม่ทำงานเมื่อถูกแฮ็ก จุดอ่อนของรหัสคือตัวหนังสือเอง ประการแรก การเตรียมการของพวกเขาเป็นกระบวนการที่ซับซ้อนและมีราคาแพง ประการที่สอง สำหรับศัตรู พวกเขากลายเป็นวัตถุที่ต้องการ และการสกัดกั้นแม้แต่ส่วนหนึ่งของหนังสือบังคับให้คุณเปลี่ยนรหัสทั้งหมดอย่างสมบูรณ์
ในศตวรรษที่ 20 หลายรัฐใช้รหัสในการถ่ายโอนข้อมูลลับ เปลี่ยนสมุดรหัสหลังจากช่วงระยะเวลาหนึ่ง และพวกเขายังตามล่าหาหนังสือของเพื่อนบ้านและฝ่ายตรงข้ามอย่างแข็งขัน
ปริศนา
ทุกคนรู้ดีว่าอีนิกมาเป็นเครื่องเข้ารหัสหลักของพวกนาซีในช่วงสงครามโลกครั้งที่สอง โครงสร้างของอินิกมาประกอบด้วยวงจรไฟฟ้าและเครื่องกลรวมกัน การเข้ารหัสจะเป็นอย่างไรนั้นขึ้นอยู่กับการกำหนดค่าเริ่มต้นของอินิกมา ในเวลาเดียวกัน Enigma จะเปลี่ยนการกำหนดค่าโดยอัตโนมัติระหว่างการทำงาน โดยเข้ารหัสข้อความเดียวได้หลายวิธีตลอดความยาว
ตรงกันข้ามกับการเข้ารหัสที่ง่ายที่สุด "อินิกมา" ให้ชุดค่าผสมที่เป็นไปได้หลายล้านล้านชุด ซึ่งทำให้การถอดรหัสข้อมูลที่เข้ารหัสแทบเป็นไปไม่ได้เลย ในทางกลับกัน พวกนาซีก็เตรียมชุดค่าผสมบางอย่างไว้สำหรับแต่ละวัน ซึ่งพวกเขาใช้ในวันใดวันหนึ่งในการส่งข้อความ ดังนั้นแม้ว่าอินิกมาจะตกไปอยู่ในมือของศัตรู แต่ก็ไม่ได้ทำอะไรเลยเพื่อถอดรหัสข้อความโดยไม่เข้าสู่การกำหนดค่าที่ถูกต้องทุกวัน
แฮ็ค "ปริศนา" ถูกทดลองอย่างแข็งขันตลอดการรณรงค์ทางทหารทั้งหมดของฮิตเลอร์ ในอังกฤษในปี 1936 หนึ่งในอุปกรณ์คอมพิวเตอร์เครื่องแรก (Turing machine) ถูกสร้างขึ้นสำหรับสิ่งนี้ ซึ่งต่อมาได้กลายเป็นต้นแบบของคอมพิวเตอร์ในอนาคต งานของเขาคือการจำลองการทำงานของ Enigmas หลายสิบตัวพร้อมๆ กัน และเรียกใช้ข้อความของนาซีที่สกัดกั้นผ่านพวกมัน แต่แม้กระทั่งเครื่องทัวริงก็สามารถถอดรหัสข้อความได้เป็นครั้งคราว
การเข้ารหัสคีย์สาธารณะ
อัลกอริธึมการเข้ารหัสที่ได้รับความนิยมมากที่สุดซึ่งใช้ได้ทุกที่ในเทคโนโลยีและระบบคอมพิวเตอร์ ตามกฎแล้วสาระสำคัญของมันอยู่ต่อหน้ากุญแจสองดอกซึ่งหนึ่งในนั้นถูกส่งต่อสู่สาธารณะและส่วนที่สองเป็นความลับ (ส่วนตัว) คีย์สาธารณะใช้เพื่อเข้ารหัสข้อความและคีย์ส่วนตัวใช้เพื่อถอดรหัส
กุญแจสาธารณะมักเป็นตัวเลขที่มีขนาดใหญ่มากซึ่งมีตัวหารเพียงสองตัวเท่านั้น ไม่นับหนึ่งและตัวนับเอง ตัวหารทั้งสองนี้รวมกันเป็นรหัสลับ
มาดูตัวอย่างง่ายๆกัน ให้กุญแจสาธารณะเป็น 905 ตัวหารของมันคือตัวเลข 1, 5, 181 และ 905 จากนั้นรหัสลับจะเป็นเช่นหมายเลข 5181 คุณกำลังพูดว่าง่ายเกินไป? จะเป็นอย่างไรหากอยู่ในบทบาทเบอร์สาธารณะจะเป็นตัวเลข 60 หลัก? คำนวณตัวหารจำนวนมากยากทางคณิตศาสตร์
สำหรับตัวอย่างที่ชัดเจนกว่านี้ ลองจินตนาการว่าคุณกำลังถอนเงินจากตู้เอทีเอ็ม เมื่ออ่านบัตร ข้อมูลส่วนบุคคลจะถูกเข้ารหัสด้วยกุญแจสาธารณะ และทางฝั่งธนาคาร ข้อมูลจะถูกถอดรหัสด้วยรหัสลับ และคีย์สาธารณะนี้สามารถเปลี่ยนแปลงได้สำหรับการดำเนินการแต่ละครั้ง และไม่มีวิธีใดที่จะหาตัวหารสำคัญได้อย่างรวดเร็วเมื่อสกัดกั้น
ความคงทนของฟอนต์
ความแรงของการเข้ารหัสของอัลกอริธึมการเข้ารหัสคือความสามารถในการต้านทานการแฮ็ก พารามิเตอร์นี้มีความสำคัญที่สุดสำหรับการเข้ารหัสใดๆ เห็นได้ชัดว่ารหัสทดแทนอย่างง่ายซึ่งสามารถถอดรหัสได้ด้วยอุปกรณ์อิเล็กทรอนิกส์ใด ๆ เป็นสิ่งที่ไม่เสถียรที่สุด
วันนี้ไม่มีมาตรฐานใดที่จะประเมินความแข็งแกร่งของตัวเลขได้ นี่เป็นกระบวนการที่ลำบากและยาวนาน อย่างไรก็ตาม มีค่าคอมมิชชั่นจำนวนหนึ่งที่สร้างมาตรฐานในด้านนี้ ตัวอย่างเช่น ข้อกำหนดขั้นต่ำสำหรับ Advanced Encryption Standard หรืออัลกอริธึมการเข้ารหัส AES ที่พัฒนาโดย NIST USA
สำหรับการอ้างอิง: รหัส Vernam ได้รับการยอมรับว่าเป็นรหัสที่ทนทานต่อการแตกหักมากที่สุด ในขณะเดียวกัน ข้อดีของมันคือ ตามอัลกอริทึม มันเป็นรหัสที่ง่ายที่สุด