Enigma ทำงานอย่างไร 

Enigma ทำงานอย่างไร





เพื่อเพิ่มอรรถรสในการชมภาพยนต์ เรื่อง Imitation Game



จึงอยากจะขออธิบายการทำงานของเครื่อง Enigma ก่อน





ENIGMA ทำงานอย่างไร







ก่อนพูดถึงการทำงานของ ENIGMA ขอพูดเรื่องการเข้ารหัสก่อน มนุษย์ทั่วๆ ไปล้วนมีความลับ (Secret) ที่บอกใครไม่ได้ ยิ่งการรบด้วยแล้ว ข้อมูลต่าง ๆ ต้องปกปิดไม่ให้ฝ่ายตรงข้ามรู้ แต่ถ้าเราไม่สามารถสื่อสารข้อมูลให้ฝ่ายเรารู้ได้ ย่อมไม่มีประโยชน์


เช่น







Hitler ต้องการสั่งให้เรือรบของฝ่ายเยอรมันโจมตีอังกฤษย่อมต้องไม่อยากให้อังกฤษรู้ข้อมูลการโจมตีแน่นอน เช่น เรือรบไหนโจมตีเป้าหมายไหนเวลากี่โมง ถ้าอังกฤษรู้ข้อมูลก็จะเตรียมการป้องกันซึ่งไม่ดีกับฝ่ายเยอรมันแน่

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





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

การเข้ารหัสที่ติ่งต๊องที่สุดเช่น ROT-3 (Rotate-3) เช่น



A B C D E F G H……
X Y Z A B C D E…….

การเข้ารหัสคือ ถ้า Input บรรทัดบน จะได้ข้อความบรรทัดล่าง ซึ่งก็คือ กระเถิบไป 3 ตัวอักษร
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
X Y Z A B C D E F G H I J K L M N O P Q R S T Y V W

เช่นอยากส่งคำว่า ILOVEYOU จะได้ข้อความ
FILSBVLR สำหรับส่ง
ที่ต้องทำก็แค่บอก(ตกลงกับคนรับข้อความไว้ก่อนว่าจะส่งรหัสแบบ ROT-3)

เนื่องจากข้อความติ่งต๊องของมันจึงแกะง่ายโคตรๆ มนุษย์จึงคิดอีกวิธีขึ้นมา คือ การใช้ตาราง MAP โดยจะมีการตกลงกันล่วงหน้าว่าจะใช้ตารางแบบไหนในการ MAP ไปและกลับ เช่น ตารางต่อไปนี้
A B C D E F G H
H B E A C G D F
(ขออนุญาตเขียนแบบสมมุติ แค่ 8 ตัวอักษร)
เช่น อยากส่งคำว่า FABCFAB จะได้ข้อความเป็น
GHBEGHB
ซึ่งวิธีแกะคือใช้วิธีทางภาษาศาสตร์ และสถิติ เช่นในภาษาอังกฤษเรารู้ว่าตัว E , A เป็นอักษรที่ใช้เยอะ ตัวไหนมีเยอะ ๆ ก็ลองเดาเป็น E , A ก่อนแล้วทำการเดาแบบเดียวกันกับตัวอื่น ๆ (จริง ๆ วิธีการลึกซึ้งกว่านี้ นี่เป็นแค่ตัวอย่าง)
มนุษย์ก็เลยมีความคิดว่า จะต่อต้านการแกะโดยใช้สถิติยังไง IDEA ก็คือ ตัวอักษร A ตัวเดียว จะถูกแปลงเป็นตัวอักษรอื่น ๆ อีก หลายตัวเพื่อป้องกันการแกะโดยใช้สถิติได้ และนี่คือสิ่งที่ ENIGMA ทำ ENIGMA รับ Input 3 อย่าง









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

แล้ว ENIGMA ทำงานอย่างไร


Idea ของ ENIGMA ต้องการให้ตัวอักษรที่ผ่าน ENIGMA ออกมามั่วที่สุดและยังสามารถถอดรหัสได้โดยใช้ ENIGMA อีกเครื่องหนึ่ง
Output = f (input_char , initsetting , n)
ให้ f เป็น enigma function
Input_char เป็น ตัวอักษรที่จะEncode
Initsetting เป็น การตั้งค่าเครื่องเริ่มต้น
N เป็น ลำดับของตัวอักษรที่เข้า
Output เป็น ตัวอักษรที่ encode แล้ว
นอกจากนี้ enigma ยังต้องมีสมบัติ
ถ้า output = f (input_char , initsetting , n) แล้ว input_char = f (output , initsetting , n)
กล่าวคือ เอาตัวอักษร ใส่เข้าไปในenigma ออกมาได้ตัวอักษรใหม่ เอาตัวอักษรใหม่ใส่เข้าไปใน enigma อีกเครื่องหนึ่งที่ตั้งเครื่องเหมือนกับเครื่องแรกและลำดับเดียวกันต้องได้ตัวอักษรตัวแรกออกมา

การใช้ ENIGMA


1. ผู้ส่งสาร มีข้อความที่จะส่งให้เป็น K1
2. ผู้ส่งสารตั้งเครื่อง enigma ตามวิธีการตั้งเครื่อง ซึ่งวิธีการตั้งเครื่อง จะเปลี่ยนทุกวัน ตามภาพ





3. ผู้ส่งสารได้ตัวอักษรที่ encode แล้ว (K2)
4. ผู้ส่งสาร ส่งตัวอักษรที่ encode แล้วเข้าระบบ (K2) ไม่ต้องกลัวว่าจะถูกดักฟังเพราะ ถึงดักได้ก็ไม่มีประโยชน์เพราะไม่เข้าใจ และต่อให้ถูกขโมยเครื่อง enigma ไปก็ไม่สามารถถอดรหัสได้อยู่ดีเพราะว่าไม่รู้วิธีการติดตั้งเครื่องซึ่งเปลี่ยนทุกวัน
5. ผู้รับสาร รับ ตัวอักษรที่ encode แล้ว (K2)
6. ผู้รับสารตั้งเครื่องตามวิธีการติดตั้งเครื่องให้ตรงกับผู้ส่งสาร
7. นำข้อความที่ได้ encode แล้วเข้า enigma จะได้ข้อความเดิมกลับออกมา (K1)
จะเห็นว่า วิธีการเช้ารหัสและถอดรหัส ไม่เป็นความลับฝ่ายตรงข้ามขโมย enigma ไปก็ไม่มีประโยชน์ ข้อความที่ส่งก็ไม่เป็นความลับเพราะได้รับไปก็งงอยู่ดี แต่สิ่งที่เป็นความลับคือวิธีการตั้งเครื่อง enigma
ฝ่ายเยอรมันใช้วิธีการติดตั้งเครื่องที่เปลี่ยนทุกวัน พิมพ์ลงหมึกที่ละลายน้ำได้ แจกจ่ายเดือนต่อเดือน ถ้าจวนตัวจะถูกจับได้ ฝ่ายเยอรมันก็แค่เอาน้ำสาดวิธีการตั้งเครื่องก็จะละลายหายไป ความสุดยอดอยู่ที่ว่า วิธีการตั้งเครื่อง (KEY) สามารถเปลี่ยนได้บ่อย ๆ เปลี่ยนได้ ง่าย ๆ เมื่อเทียบกับ Algorithm ซึ่งถ้าเปลี่ยนก็ต้องเปลี่ยนเครื่องไปเลย การใช้ enigma จึงเป็นวิธีที่เหมาะสมมากมายในการรบ (ยุคเกือบ 100 ปี) ที่แล้ว


แกะดูข้างในเครื่อง enigma จะประกอบด้วย







1. Key board ก็ตามชื่อก็คือ ปุ่มมี26 ปุ่ม A-Z ใช้เป็น input
2. Light board คือไฟ มีตัวอักษรกำกับ A-Z ใช้เป็น Output
3. Rotors มี 3 ตัว ในเครื่อง (ตามมาตรฐาน) เวลาจะใช้มี 5 ตัว(ทั้งหมด) และเลือก 3 ตัว มาใช้ (ของ Army และ Air force) ของ (Navy จะใช้8ตัวเลือก3) การตั้ง Rotors จะมี 2 อย่าง คือ ตั้งจุดเริ่มต้น (ตั้งตำแหน่งเริ่มต้นว่าเริ่มจากตัวอักษรอะไร) และตำแหน่ง Kicker




เมื่อ Rotors C หมุนถึงจุด Kicker จะไปเตะให้ Rotors B ขยับไปหนึ่งตำแหน่งและเมื่อ Rotors B ขยับถึง Kicker จะไปเตะให้ A ขยับ 1 ตำแหน่ง
ภายใน Rotors จะมีการเดินสายแบบมั่ว ๆ เอาไว้ในแต่ละ Rotors จะเดินสายไม่เหมือนกัน เมื่อกดปุ่ม 1 ครั้ง Rotors ขวาสุดจะหมุน 1 step



4. Reflector หรือตัวสะท้อน จะไม่หมุน (Version ต่อมา สามารถหมุนได้) สามารถเปลี่ยนได้เหมือนกัน Reflector จะทำให้มั่นใจว่า กด A แล้วผลลัพธ์จะเป็นอันอื่นที่ไม่ใช่ A แน่นอน
5. Plug board เป็นที่เสียบปลั๊ก มีสาย 10 เส้น เป็นการเลือกเสียบ 10 คู่ รูที่ไม่ได้เสียบจะต่างกันเองแบบปกติ





Enigma wiring diagram







แสดงการทำงานของ Enigma











ความเป็นไปได้ทั้งหมดของ key (วิธีการ set เครื่องของ ENIGMA)


1. มี 5 Rotors (ของกองทัพบกและกองทัพอากาศของ Germars)
C(5 , 3) * 3! = (5*4*3*2*1) / ( 3*2*1*2*1) * (3*2*1)
= 5*4*3 กรณี
= 60 กรณี
2. มี 2 Reflector มี 2 กรณี
3. มีวิธีการตั้งจุดเริ่มต้นของ Rotors 26 แบบในแต่ละตัว
ดังนั้นมี 26 * 26 * 26 กรณี = 17576 กรณี
4. มีวิธีการตั้ง Kicker 26 แบบ ต้องตั้ง 2 ตัว (ตัวกลางและขวา)
มี 26 * 26 กรณี = 676 กรณี
5. Plug board มีสาย 10 เส้น ดังนั้นมี
1/10! * C(26 , 2) * C(24 , 2) * C(22 , 2) * …… C(8 , 2) = 26!/(10!*6!*2^10)
รวมทั้งหมด = 60 * 2 * 17576 * 676 * 150,738,274,937,250
ซึ่งได้ค่าประมาณ 320 ล้านล้านล้าน กรณี

การแกะ code enigma และจุดกำเนิด computer


ในเมื่อมี Key เยอะแยะไปหมดที่เป็นไปได้ เราจึงไม่สามารถใช้สมองของมนุษย์คิดได้ ดังนั้น Alan Turing จึงมาเกี่ยวข้องโดยการใช้เครื่องจักร (machine) ที่คิดเร็วกว่าคนโคตร ๆ เพื่อมาแก้ปัญหานี้และด้วยเวทมนต์ทางคณิตศาสตร์อีกสักกระบุง ฝ่ายอังกฤษจึงสร้าง Algorithm เพื่อสร้าง bombe เครื่องสำหรับแกะรหัส enigma
ในคราวต่อไปถ้าผมว่างผมจะพยายามอธิบายวิธีการแกะรหัส enigma ให้ฟังแบบไม่ต้องใช้ ทฤษฎีคณิตศาสตร์เยอะ ๆ นะครับ

ปล


1. Computer ในปัจจุบันสร้างโดยใช้แนวคิดของ Turing Machine ที่ Alan Turing เป็นคนคิด
2. Turing Test เป็นชื่อของวิธีการตรวจสอบปัญญาประดิษฐ์
3. Turing Award เป็นรางวัลสูงสุดของนักวิทยาศาสตร์คอมพิวเตอร์ (อารมณ์ประมาณ Nobel
prize ของ computer)
สำหรับคำถามที่ว่าเครื่องจักรสามารถคิดได้หรือไม่นั้น ผมขอไม่ตอบแต่ขอถามว่า เรือดำน้ำสามารถว่ายน้ำได้หรือไม่ คำตอบคือไม่ เรือดำน้ำไม่ว่ายน้ำ แต่เคลื่อนที่ได้ในน้ำ เครื่องจักรก็ไม่คิด แต่สามารถทำในสิ่งที่เหมือนกับมนุษย์คิดได้


___________________________________
http://expert-programming-tutor.com/

รับสอนเขียนโปรแกรมคอมพิวเตอร์


เพราะการเขียนโปรแกรมไม่ได้มีแค่การทำweb และการ insert/update/delete/select DB






[ view entry ] ( 3145 views )   |  permalink  |  $star_image$star_image$star_image$star_image$star_image ( 3 / 2324 )

<Back | 1 | 2 | 3 | 4 | 5 | Next> Last>>