การวิเคราะห์ความถี่
วางข้อความใด ๆ เพื่อดูว่าตัวอักษรแต่ละตัวปรากฏบ่อยแค่ไหน เทียบเคียงกันกับความถี่ของภาษาอังกฤษที่เขียน อ่านการนับ bigram และ trigram ตรวจสอบดัชนีความบังเอิญ (Index of Coincidence) เพื่อแยกรหัสแบบอักษรเดี่ยว (monoalphabetic) ออกจากแบบหลายอักษร (polyalphabetic) และส่งออกตาราง ทุกอย่างทำงานในเบราว์เซอร์ของคุณ
ลองตัวอย่าง:
วางข้อความด้านบน แล้วความถี่ของตัวอักษร, bigram, trigram และดัชนีความบังเอิญของมันจะปรากฏที่นี่
วิธีใช้ การวิเคราะห์ความถี่
- 1
วางข้อความของคุณ
คัดลอกข้อความหรือข้อความเข้ารหัสที่คุณต้องการศึกษาแล้ววางลงในกล่อง ตัวอักษรจะถูกนับโดยไม่สนตัวพิมพ์ใหญ่เล็ก ส่วนช่องว่าง ตัวเลข และเครื่องหมายวรรคตอนจะถูกละเว้น
- 2
อ่านสรุป
ตรวจดูจำนวนอักขระและตัวอักษร จำนวนตัวอักษรที่แตกต่างกันที่ปรากฏ ตัวอักษรที่พบบ่อยที่สุด และดัชนีความบังเอิญ ซึ่งบอกใบ้ว่าใช้อักษรชุดเดียวหรือหลายชุด
- 3
ศึกษาแผนภูมิความถี่ของตัวอักษร
เปรียบเทียบแท่งกราฟของตัวอักษรแต่ละตัวกับเครื่องหมายภาษาอังกฤษ สลับไปที่ 'ตามความถี่' เพื่อจัดอันดับตัวอักษรและดูรูปร่างโดยรวม — ขรุขระสำหรับรหัสแทนที่ ราบเรียบสำหรับแบบหลายอักษร
- 4
สแกน bigram และ trigram
ดูคู่และชุดสามตัวที่พบบ่อยที่สุด ในรหัส trigram อันดับต้นมักเป็น THE ที่ถูกอำพราง ซึ่งมอบตัวอักษรสามตัวให้คุณในคราวเดียว
- 5
ส่งออกหรือแชร์
ดาวน์โหลดตารางความถี่เป็น CSV สำหรับบันทึกหรือสเปรดชีตของคุณ หรือคัดลอกลิงก์สำหรับแชร์ที่เปิดเครื่องมือขึ้นมาใหม่พร้อมข้อความเดิมของคุณ ทุกอย่างยังคงอยู่ในเบราว์เซอร์ของคุณ
อธิบายการวิเคราะห์ความถี่ของตัวอักษร
การวิเคราะห์ความถี่คืออะไร?
การวิเคราะห์ความถี่คือการศึกษาว่าตัวอักษรแต่ละตัว คู่ของตัวอักษร หรือชุดสามตัวอักษร ปรากฏบ่อยแค่ไหนในข้อความ เนื่องจากตัวอักษรของภาษาไม่ได้ถูกใช้เท่ากัน — E และ T พบได้ทุกที่ในภาษาอังกฤษ ขณะที่ Q และ Z พบได้ยาก — รูปแบบของความถี่จึงทำหน้าที่เหมือนลายนิ้วมือ การนับรูปแบบนั้นคือเทคนิคที่เก่าแก่และทรงพลังที่สุดในการวิเคราะห์รหัสลับแบบคลาสสิก ซึ่งบันทึกไว้เป็นครั้งแรกโดยนักปราชญ์ชาวอาหรับนาม al-Kindi ในศตวรรษที่เก้า
เครื่องมือนี้นับตัวอักษรในสิ่งที่คุณวางลงไป แสดงแต่ละตัวเป็นแท่งกราฟเทียบกับความถี่ที่คาดหวังของภาษาอังกฤษ แสดงรายการ bigram และ trigram ที่พบบ่อยที่สุด และรายงานดัชนีความบังเอิญ ตัวเลขเหล่านี้รวมกันบอกคุณได้ว่าข้อความเป็นงานเขียนทั่วไป รหัสแทนที่อย่างง่าย หรือบางอย่างที่ใช้อักษรหลายชุดพร้อมกัน — โดยที่คุณไม่ต้องนับตัวอักษรด้วยมือเลยสักตัว
การอ่านแผนภูมิความถี่ของตัวอักษร
แต่ละแถวคือหนึ่งตัวอักษรของชุดอักษร แท่งกราฟที่เติมเต็มแสดงว่าตัวอักษรนั้นปรากฏบ่อยแค่ไหนในข้อความของคุณเป็นเปอร์เซ็นต์ของตัวอักษรทั้งหมด และเครื่องหมายเส้นแนวตั้งบาง ๆ แสดงความถี่ของตัวอักษรเดียวกันในภาษาอังกฤษทั่วไป เมื่อแท่งกราฟเลยเครื่องหมายไปมาก แสดงว่าตัวอักษรนั้นปรากฏมากเกินสัดส่วน เมื่อแท่งกราฟสั้นกว่า แสดงว่าตัวอักษรนั้นพบได้ยากกว่าปกติ สลับลำดับการเรียงเพื่อจัดอันดับตัวอักษรจากพบบ่อยที่สุดไปน้อยที่สุด ซึ่งทำให้รูปร่างของการกระจายชัดเจนในพริบตา
ในภาษาอังกฤษปกติ แท่งกราฟที่สูงที่สุดคือ E, T, A, O, I และ N และแผนภูมิดูขรุขระไม่สม่ำเสมอ รหัสแบบอักษรเดี่ยวจะรักษารูปร่างขรุขระนั้นไว้แต่เลื่อนยอดไปยังตัวอักษรอื่น เพราะตัวอักษรแต่ละตัวเพียงถูกสลับเป็นอีกตัวหนึ่ง รหัสแบบหลายอักษรจะทำให้แผนภูมิราบเรียบจนทุกแท่งกราฟสูงพอ ๆ กัน เพราะตัวอักษรต้นฉบับตัวเดียวกันถูกเข้ารหัสต่างกันขึ้นอยู่กับตำแหน่ง การจดจำรูปร่างสองแบบนั้นคือทักษะที่มีประโยชน์ที่สุดเพียงหนึ่งเดียวในการถอดรหัสลับแบบคลาสสิก
ดัชนีความบังเอิญ
ดัชนีความบังเอิญ หรือ IoC วัดความน่าจะเป็นที่ตัวอักษรสองตัวที่สุ่มหยิบจากข้อความจะเป็นตัวเดียวกัน ภาษาอังกฤษทั่วไปอยู่ที่ประมาณ 0.067 เพราะความถี่ของมันไม่สม่ำเสมออย่างมาก ขณะที่ข้อความที่สุ่มอย่างสมบูรณ์เข้าใกล้ 0.038 ซึ่งตัวอักษรทุกตัวมีโอกาสเท่ากัน ตัวเลขเพียงตัวเดียวสะท้อนว่าการกระจายขรุขระหรือราบเรียบเพียงใด
สิ่งนี้ทำให้ IoC เป็นการทดสอบที่เร็วที่สุดในการแยกตระกูลของรหัสออกจากกัน รหัส Caesar, Atbash และการแทนที่ด้วยคำสำคัญเพียงแค่ติดป้ายตัวอักษรใหม่ ดังนั้นโปรไฟล์ภาษาอังกฤษที่ไม่สม่ำเสมอจึงคงอยู่และ IoC ยังคงสูงใกล้ 0.066 ส่วน Vigenère และรหัสแบบหลายอักษรอื่น ๆ ผสมอักษรหลายชุด ทำให้ความถี่ราบเรียบและดึง IoC ลงไปทาง 0.04 เครื่องมือจะแสดงค่าพร้อมคำใบ้สั้น ๆ ดังนั้นค่าที่อ่านได้สูงจะชี้คุณไปยังรหัสแทนที่ และค่าที่ต่ำจะชี้คุณไปยังรหัสแบบหลายอักษร
bigram, trigram และรูปแบบการอยู่ติดกัน
ตัวอักษรเดี่ยวเป็นเพียงจุดเริ่มต้น ภาษาอังกฤษยังมีคู่และชุดสามตัวอักษรที่นิยมใช้อย่างมาก: TH, HE, IN, ER และ AN คือ bigram ที่พบบ่อยที่สุด และ THE, AND, ING และ ENT ครองตำแหน่ง trigram เครื่องมือนี้แสดงรายการคู่และชุดสามตัวที่พบบ่อยที่สุดในข้อความของคุณ โดยนับเฉพาะภายในคำเท่านั้น เพื่อที่ช่องว่างจะไม่เชื่อมตัวอักษรสองตัวที่ไม่เกี่ยวข้องกันให้กลายเป็นคู่ที่ผิดพลาด
รูปแบบการอยู่ติดกันเหล่านี้มีค่าอย่างยิ่งเมื่อการนับตัวอักษรอย่างเดียวไม่เพียงพอ ในรหัสแทนที่ เวอร์ชันที่ถูกอำพรางของ THE มักปรากฏเป็น trigram ที่พบบ่อยที่สุด ทำให้คุณได้ตัวอักษรสามตัวในคราวเดียว bigram ที่ซ้ำกันสามารถเปิดเผยความยาวของกุญแจ Vigenère ผ่านวิธีของ Kasiski แม้แต่การไม่มีตัวอักษรซ้ำ หรือชุดของคู่ที่หายากอย่างน่าสงสัย ก็เป็นเบาะแสว่าคุณกำลังเผชิญกับรหัสชนิดใด
การถอดรหัสลับด้วยการวิเคราะห์ความถี่
ในการโจมตีรหัสแทนที่แบบอักษรเดี่ยว ให้เรียงแผนภูมิตามความถี่แล้วจัดเทียบกับภาษาอังกฤษ ตัวอักษรเข้ารหัสที่พบบ่อยที่สุดน่าจะเป็น E ตัวถัดไปน่าจะเป็น T และ trigram อันดับต้นน่าจะเป็น THE เขียนการคาดเดาเหล่านั้นด้วยดินสอ แล้วใช้รายการ bigram และ trigram ขยายผล — เมื่อคุณรู้ E และ T แล้ว คู่ TH และคำว่า THE จะเข้าที่อย่างรวดเร็ว และที่เหลือของข้อความก็คลี่คลายต่อจากนั้น
สำหรับรหัส Caesar ตรรกะเดียวกันยิ่งง่ายกว่า เพราะตัวอักษรทุกตัวเลื่อนด้วยจำนวนเท่ากัน: หาค่าการเลื่อนที่ทำให้ยอดของรหัสตรงกับ E ของภาษาอังกฤษ แล้วคุณก็ได้กุญแจ สำหรับรหัส Vigenère การวิเคราะห์ความถี่ยังคงใช้ได้ แต่ต้องหลังจากที่คุณแยกข้อความเป็นคอลัมน์ตามความยาวของกุญแจก่อน เพราะแต่ละคอลัมน์จึงเป็นรหัส Caesar แยกต่างหากที่คุณแก้ได้ด้วยตัวเอง การรู้ดัชนีความบังเอิญก่อนจะบอกคุณได้ว่าจำเป็นต้องใช้กลเม็ดคอลัมน์นี้หรือไม่
แบบอักษรเดี่ยวเทียบกับแบบหลายอักษรในพริบตา
หากคุณจะจำเพียงสิ่งเดียว ก็ขอให้เป็นสิ่งนี้ ดัชนีความบังเอิญที่สูงและแผนภูมิที่ขรุขระโดยมีแท่งกราฟสูงชัดเจน หมายถึงรหัสแบบอักษรเดี่ยว ซึ่งตัวอักษรแต่ละตัวแมปไปยังอีกตัวหนึ่งเพียงตัวเดียวพอดี — Caesar, Atbash, affine หรือการแทนที่ด้วยคำสำคัญ พวกนี้ยอมจำนนต่อการวิเคราะห์ความถี่โดยตรง เพราะสถิติของข้อความต้นฉบับสาดส่องทะลุออกมาตรง ๆ
ดัชนีความบังเอิญที่ต่ำและแผนภูมิที่ราบเรียบซึ่งทุกแท่งกราฟสูงพอ ๆ กัน หมายถึงรหัสแบบหลายอักษร ซึ่งตัวอักษรต้นฉบับตัวหนึ่งสามารถกลายเป็นตัวอักษรเข้ารหัสได้หลายตัว — Vigenère, Beaufort, Gronsfeld หรือ Porta พวกนี้ซ่อนความถี่ดิบของตัวอักษร ดังนั้นคุณต้องกู้ความยาวของกุญแจก่อน แล้วจึงวิเคราะห์แต่ละตำแหน่งแยกกัน แผนภูมิและ IoC จะบอกคุณว่าคุณอยู่ในโลกแบบใดในสองแบบนี้ก่อนที่คุณจะลงแรงใด ๆ
ข้อจำกัดและแนวปฏิบัติที่ดี
การวิเคราะห์ความถี่อิงสถิติ ดังนั้นมันต้องมีข้อความมากพอจึงจะน่าเชื่อถือ ข้อความสั้น ๆ เพียงราวสิบกว่าตัวอักษรอาจแสดงความถี่ที่ทำให้เข้าใจผิดอย่างมากเพียงเพราะความบังเอิญ ขณะที่ย่อหน้าเต็ม ๆ จะลงตัวใกล้รูปแบบที่คาดหวัง เมื่อตัวอย่างดูคลุมเครือ สาเหตุปกติคือมันสั้นเกินไป มากกว่าจะเป็นเพราะวิธีการล้มเหลว
พึงระลึกว่าค่าฐานภาษาอังกฤษที่แสดงไว้ที่นี่เป็นของร้อยแก้วทั่วไป ข้อความเฉพาะทาง — รายชื่อ ชิ้นส่วนของซอร์สโค้ด หรืองานเขียนในภาษาอื่น — มีโปรไฟล์ของตัวเองและจะไม่ตรงกัน เครื่องมือนี้ละเว้นช่องว่าง ตัวเลข และเครื่องหมายวรรคตอน และรวมตัวพิมพ์ใหญ่กับพิมพ์เล็กเข้าด้วยกัน ซึ่งเป็นสิ่งที่คุณต้องการพอดีสำหรับรหัสคลาสสิก แต่นั่นหมายความว่ามันวิเคราะห์เฉพาะตัวอักษรเท่านั้น ไม่ใช่โครงสร้างของการเข้ารหัสอย่าง Base64 หรือ Morse สำหรับสิ่งเหล่านั้น ให้ระบุการเข้ารหัสก่อนแล้วถอดมัน จากนั้นจึงรันการวิเคราะห์ความถี่กับตัวอักษรที่อยู่ข้างใต้
คำถามที่พบบ่อย
การวิเคราะห์ความถี่คืออะไร?
ฉันจะใช้การวิเคราะห์ความถี่ถอดรหัสได้อย่างไร?
ดัชนีความบังเอิญคืออะไร?
อะไรคือความแตกต่างระหว่างแบบอักษรเดี่ยวกับแบบหลายอักษร?
ทำไมเครื่องมือถึงแสดง bigram และ trigram?
แท่งกราฟและเครื่องหมายแนวตั้งหมายความว่าอย่างไร?
ฉันต้องใช้ข้อความมากแค่ไหนเพื่อให้ผลลัพธ์น่าเชื่อถือ?
มันใช้ได้กับภาษาอื่นนอกจากภาษาอังกฤษหรือไม่?
ฉันวิเคราะห์ Base64, Morse หรือไบนารีได้หรือไม่?
ข้อความของฉันถูกอัปโหลดไปยังเซิร์ฟเวอร์หรือไม่?
ฉันส่งออกตารางความถี่ได้หรือไม่?
เครื่องมือที่เกี่ยวข้อง
ทำงานต่อด้วยเครื่องมือที่มีประโยชน์เหล่านี้