เครื่อง Enigma
- 57 เครื่องมือ
- ไม่มีลายน้ำ
- ไม่จำกัดจำนวนไฟล์
เครื่องเข้ารหัสที่กองทัพเยอรมันใช้ตลอดสงครามโลกครั้งที่สอง ทำงานเหมือนของจริงทุกอย่าง โรเตอร์สามวงหมุนอยู่หลังแผงเสียบสาย มีรีเฟลกเตอร์ส่งสัญญาณย้อนกลับผ่านโรเตอร์อีกรอบ และได้ตารางตัวอักษรใหม่ทุกครั้งที่กดปุ่ม ตั้งค่าแล้วพิมพ์ได้เลย ค่าตั้งชุดเดียวกันใช้ทั้งเข้ารหัสและถอดรหัส เพราะเครื่องทำอย่างอื่นไม่ได้ และไม่มีตัวอักษรไหนออกมาเป็นตัวเดิม ซึ่งคือช่องโหว่ที่ทำให้ Bletchley Park อ่านมันได้
อันนี้ไม่ปกป้องอะไรทั้งสิ้น Enigma ถูกถอดได้ตั้งแต่ปี 1932 โดยมาเรียน เรเยฟสกี และถูกอ่านเป็นล่ำเป็นสันตั้งแต่ปี 1940 ทุกวันนี้โน้ตบุ๊กเครื่องเดียวถอดได้ในไม่กี่วินาที มันอยู่ที่นี่เพื่อให้เข้าใจ ไม่ใช่เพื่อเอาไปใช้
มันคือเครื่องพิมพ์ดีดที่สายไฟข้างในถูกสลับไว้ กด A แล้วหลอดตัวอื่นติด
ทุกครั้งที่กดปุ่ม วงล้อจะหมุนหนึ่งก้าว การสลับสายจึงเปลี่ยนไปสำหรับตัวถัดไป กด A ห้าครั้งติดกันจะได้ตัวอักษรห้าตัวที่ไม่ซ้ำกันเลย นี่คือหัวใจทั้งหมด และเป็นเหตุผลที่การนับความถี่ตัวอักษรใช้ถอดมันไม่ได้
ค่าตั้งหกอย่างข้างล่างคือ "ก่อนเริ่มพิมพ์ สายไฟถูกจัดไว้ยังไง" เท่านั้นเอง ทั้งสองฝ่ายตั้งเครื่องเหมือนกันทุกเช้าตามใบรหัสประจำวัน สิ่งที่ฝ่ายหนึ่งพิมพ์ อีกฝ่ายจึงได้กลับคืนมา
พิมพ์ข้อความ
เอาผลลัพธ์ใส่กลับเข้าไปด้วยค่าตั้งเดิม แล้วข้อความเดิมจะออกมา นี่ไม่ใช่ฟีเจอร์ของหน้านี้ แต่เป็นเพราะเครื่องถูกเดินสายไว้แบบนั้น ซึ่งเป็นเหตุผลที่ค่าตั้งประจำวันชุดเดียวใช้ได้ทั้งฝ่ายส่งและฝ่ายรับ
ตั้งค่าเครื่อง
ตอนนี้เครื่องตั้งไว้ที่โรเตอร์ I II III และทุกค่าอยู่ที่ A ซึ่งเป็นเครื่องที่ใช้งานได้เลย เปลี่ยนตรงนี้เฉพาะตอนที่ต้องตั้งตามใบรหัสประจำวัน หรือกดปุ่มโหลดข้อความปี 1930 ด้านบนแล้วดูมันเติมค่าให้เอง
- โรเตอร์สามวง
- หยิบวงล้อสามวงจากกล่องที่มีห้าวง แล้วเสียบเข้าแกนเรียงจากซ้ายไปขวา จะเลือกวงไหนและเรียงลำดับยังไง เป็นส่วนหนึ่งของรหัสประจำวัน
- รีเฟลกเตอร์
- ฝาปิดที่ปลายสุด ทำหน้าที่ส่งกระแสย้อนกลับผ่านวงล้อด้วยเส้นทางอื่น มันคือเหตุผลที่ตัวอักษรออกมาเป็นตัวเดิมไม่ได้
- ค่า Ring
- วงล้อแต่ละวงมีแหวนตัวอักษรสวมอยู่รอบ ค่านี้คือหมุนแหวนนั้นไปเท่าไรเทียบกับสายไฟข้างใน ตั้งก่อนใส่วงล้อเข้าเครื่อง
- ตำแหน่งเริ่มต้น
- พอใส่วงล้อครบแล้ว หมุนแต่ละวงด้วยมือจนตัวอักษรที่ต้องการโผล่ในช่องหน้าต่าง นั่นคือจุดที่ข้อความเริ่ม
- แผงเสียบสาย
- สายไฟที่เสียบไว้หน้าเครื่อง แต่ละเส้นสลับตัวอักษรสองตัว ทั้งขาเข้าและขาออก ปกติแจกมาสิบเส้น
กองทัพมีโรเตอร์ 5 ตัว ใช้ครั้งละ 3 ตัว สลับลำดับได้ UKW-B เป็นมาตรฐานตั้งแต่ปี 1937 ส่วน UKW-A ใส่ไว้เพราะข้อความจากคู่มือปี 1930 ใช้ตัวนี้
ค่า Ring คือการหมุนสายไฟข้างในวงล้อ ส่วนตำแหน่งเริ่มต้นคือตัวอักษรที่โผล่ในช่องหน้าต่างตอนพนักงานเริ่มพิมพ์ ทั้งคู่เป็นสามตัวอักษร ตัวละโรเตอร์ เรียงจากซ้ายไปขวา ใส่ได้สูงสุด 10 เส้น แต่ละเส้นสลับตัวอักษรสองตัวทั้งไปและกลับ ถ้าไม่ใส่ก็คือเครื่องที่ไม่มีแผงสาย
ทำไมโปรแกรมจำลองตัวอื่นให้ผลไม่ตรงกัน
เครื่องจำลอง Enigma สองตัว ถ้าตั้งค่าเหมือนกันและพิมพ์ข้อความเดียวกัน ผลต้องตรงกันทุกตัวอักษร เวลาไม่ตรงกันมักไม่ใช่บั๊กลึกลับ แต่เป็นการเข้าใจความหมายของค่าที่ตั้ง ไม่ตรงกันสี่แบบ และแต่ละแบบมีร่องรอยให้ดูจากผลลัพธ์ได้เลย
| อาการ | สาเหตุ | วิธีตรวจ |
|---|---|---|
| ผิดตั้งแต่ตัวแรก ผิดหมดทุกตัว | ลำดับโรเตอร์อ่านกลับด้าน บางโปรแกรมเรียงขวาไปซ้ายตามทางที่กระแสไฟวิ่ง หน้านี้เรียงซ้ายไปขวาตามที่ล้อเสียบอยู่บนแกนจริง และตามที่พิมพ์ในใบรหัสประจำวัน | สลับลำดับโรเตอร์ทั้งสามกลับด้านแล้วลองใหม่ |
| ผิดตั้งแต่ตัวแรก แต่สลับโรเตอร์แล้วก็ยังผิด | สลับ ring setting กับตำแหน่งเริ่มต้นกัน ทั้งคู่เป็นตัวอักษรสามตัวเหมือนกัน หน้าตาเหมือนใช้แทนกันได้ แต่ใช้แทนกันไม่ได้ ring หมุนสายไฟข้างในล้อ ส่วนตำแหน่งเริ่มต้นหมุนทั้งล้อ | ตั้ง ring เป็น AAA ทั้งสองเครื่อง ถ้าตรงกันแล้วก็คือสาเหตุนี้ |
| ถูกอยู่ไม่กี่ตัวแรก แล้วเพี้ยนยาวไปเลย | อีกโปรแกรมไม่มี double step อันนี้เป็นข้อผิดพลาดที่พบบ่อยที่สุดในโปรแกรม Enigma และมองไม่เห็นเลยถ้าข้อความสั้น จึงหลุดออกมาเยอะมาก | ลองเข้ารหัสยาวสักสามสิบตัวขึ้นไป เครื่องที่ไม่มี double step อยู่ได้ไม่ถึงขนาดนั้น |
| ถูกหมด ยกเว้นบางตัวออกมาเป็นตัวเดิม | โปรแกรมนั้นไม่ใช่ Enigma จริง เครื่องจริงเปลี่ยนตัวอักษรเป็นตัวมันเองไม่ได้ ไม่ว่ากรณีใด | เข้ารหัส AAAAAAAAAA ถ้ามี A โผล่ออกมา
เลิกเชื่อโปรแกรมนั้นได้เลย |
เวลาต้องการคนตัดสินแทนที่จะเถียงกัน ให้ใช้ตัวอย่างจากคู่มือ Enigma ปี 1930 ข้อความถอดแล้วของมันถูกตีพิมพ์มาหลายสิบปี ยาวเก้าสิบตัวอักษร ใช้รีเฟลกเตอร์ UKW-A และตั้งค่าไว้ให้เกิด double step มากกว่าหนึ่งครั้ง หน้านี้มีปุ่มโหลดขึ้นมาและถอดได้ถูกต้อง เครื่องจำลองที่ถอดไม่ได้คือเครื่องที่ผิด และจุดที่ผลเริ่มไม่ตรงจะบอกว่าเข้าข่ายแถวไหนในตาราง
ถอดรหัสข้อความที่มีคนส่งมาให้
คนส่วนใหญ่มาที่นี่พร้อมกับตัวอักษรก้อนหนึ่งกับค่าตั้งเครื่องชุดหนึ่ง จากเกมปริศนา ห้องหนีภัย การบ้าน หรือพิพิธภัณฑ์ เครื่องนี้สมมาตร จึงไม่มีปุ่มถอดรหัส และไม่มีโหมดแยก วิธีใช้คือตั้งเครื่องให้เหมือนคนส่งเป๊ะ ๆ แล้วพิมพ์ข้อความที่เข้ารหัสแล้วลงไป
- ตั้งโรเตอร์ จากซ้ายไปขวา ใบรหัสที่เขียนว่า
II I IIIแปลว่าล้อซ้ายคือ II ล้อกลางคือ I ล้อขวาคือ III ถ้าแหล่งที่คุณได้มาเรียงตามทางเดินของกระแสไฟ ให้กลับด้าน - ตั้งรีเฟลกเตอร์ ใช้ UKW-B ถ้าไม่ได้ระบุเป็นอย่างอื่น เป็นตัวมาตรฐานตั้งแต่ปี 1937 และข้อความที่ตีพิมพ์เกือบทั้งหมดใช้ตัวนี้
- ตั้ง ring setting สามตัวอักษร ในใบรหัสมักเขียนเป็นตัวเลข 1 คือ A, 2 คือ B ไล่ไปจนถึง 26 คือ Z
- ตั้งตำแหน่งเริ่มต้น สามตัวอักษร คือตัวที่โผล่ในช่องหน้าต่างก่อนกดปุ่มแรก ส่วนนี้เปลี่ยนทุกข้อความ ไม่ใช่เปลี่ยนวันละครั้งเหมือนอย่างอื่น
- เสียบปลั๊กบอร์ด บรรทัดอย่าง
AV BS CG DL FU HZ IN KM OW RXคือสายสิบเส้น ใส่เรียงยังไงก็ได้ เพราะสายหนึ่งเส้นทำงานทั้งสองทาง - พิมพ์ข้อความที่เข้ารหัสแล้ว เว้นวรรคกับเครื่องหมายวรรคตอนถูกตัดทิ้ง เพราะเครื่องมีปุ่มแค่ยี่สิบหกปุ่ม ไม่มีอย่างอื่นเลย
ถ้าผลออกมาเป็นขยะ แปลว่าค่าตั้งผิด ไม่ใช่ข้อความผิด ให้ไล่ย้อนขึ้นไปตามลิสต์ ปลั๊กบอร์ดเป็นจุดที่พิมพ์ผิดง่ายที่สุด และ ring setting เป็นจุดที่สับสนกับตำแหน่งเริ่มต้นง่ายที่สุด
พลทหารเยอรมันเขียน X แทนจุดจบประโยค และสะกดตัวเลขออกมาเป็นคำ
ข้อความที่ถอดถูกจึงมักอ่านได้ว่า KEINEBESONDEREEREIGNISSEX
ไม่ได้มีวรรคตอนอะไร การแยกคำเองเป็นหน้าที่ของคุณ และนั่นเป็นสัญญาณที่ดี ไม่ใช่สัญญาณว่าผิด
จำนวนค่าตั้งที่เป็นไปได้ และเหตุผลที่มากขนาดนั้นก็ยังไม่พอ
Enigma เป็นบทเรียนที่ดีเรื่องความต่างระหว่าง จำนวนกุญแจที่เยอะ กับ ความปลอดภัย ตัวเลขของเครื่องรุ่นกองทัพนั้นมหาศาลจริง ๆ
| สิ่งที่เลือกได้ | จำนวนแบบ |
|---|---|
| เลือกโรเตอร์สามจากห้า โดยนับลำดับ | 60 |
| Ring setting | 17,576 |
| ตำแหน่งเริ่มต้น | 17,576 |
| ปลั๊กบอร์ด สายสิบเส้น | 150,738,274,937,250 |
| รวม | ประมาณ 1.6 × 1020 |
นั่นคือมากกว่าร้อยล้านล้านล้าน ถ้าลองวินาทีละแบบจะใช้เวลานานกว่าอายุของเอกภพ และกองบัญชาการเยอรมันก็คิดจากตัวเลขนี้ตรง ๆ
แต่มันก็ถูกถอดจนได้ และไม่มีเหตุผลข้อไหนเลยที่เกี่ยวกับขนาดของกุญแจ
- ไม่มีตัวอักษรไหนเข้ารหัสออกมาเป็นตัวมันเอง ถ้าเดาได้ว่าในข้อความมีวลีอะไรอยู่ ก็เลื่อนวลีนั้นไปตามข้อความ แล้วตัดทุกตำแหน่งที่ต้องมีตัวอักษรกลายเป็นตัวมันเองทิ้ง ตำแหน่งส่วนใหญ่ตายทันที ที่เหลือน้อยพอจะไล่ทดสอบได้
- สิ่งที่ต้องเดานั้นเดาง่ายมาก รายงานอากาศส่งทุกเช้า
ข้อความจบด้วย
HEILHITLERฐานที่เงียบ ๆ ส่งKEINEBESONDERENEREIGNISSEไม่มีอะไรรายงาน ซ้ำกันทุกวัน รหัสที่ถอดไม่ได้ในทางทฤษฎีกลายเป็นถอดได้ในทางปฏิบัติ เมื่อคุณรู้อยู่แล้วว่ามันเขียนว่าอะไร - ปลั๊กบอร์ดแทบไม่ได้ช่วยอะไรเลยในการป้องกัน มันเป็นที่มาของเกือบทั้งหมดของเลข 1020 นั้น แต่วิธีของทัวริงถูกจัดวางไว้ ให้การเดาปลั๊กบอร์ดผิดขัดแย้งกับตัวเองและตัดทิ้งได้โดยไม่ต้องทดสอบส่วนที่เหลือ พจน์ที่ใหญ่ที่สุดในผลคูณจึงลอกออกได้แทบฟรี
- ขั้นตอนการใช้งานรั่วมากกว่าตัวเครื่อง ก่อนปี 1940 พลทหารส่งกุญแจประจำข้อความซ้ำสองรอบตอนต้นของทุกข้อความ ซึ่งเป็นสิ่งที่ทำให้ Marian Rejewski สร้างผังสายไฟขึ้นมาใหม่ได้ในปี 1932 โดยไม่ต้องมีเครื่องที่ยึดมาได้เลยสักเครื่อง
ขนาดของกุญแจบอกแค่ว่าการไล่เดาทุกแบบจะใช้เวลานานแค่ไหน และการไล่เดาทุกแบบ คือสิ่งที่ผู้โจมตีทำเมื่อไม่มีวิธีที่ดีกว่า ในกรณีนี้มีวิธีที่ดีกว่าอยู่ตลอดสงคราม
คำถามที่พบบ่อย
ข้อความของฉันถูกอัปโหลดไหม
ไม่ เครื่องทำงานในแท็บนี้ขณะที่คุณพิมพ์ นโยบายความปลอดภัยของเว็บกำหนด connect-src ‘none’ เบราว์เซอร์จึงบล็อกการเรียกเครือข่ายจากหน้านี้ ต่อให้โค้ดอยากส่งข้อความออกไปก็ส่งไม่ได้
รู้ได้ยังไงว่าเครื่องนี้ถูกต้อง
เพราะมันถอดข้อความตัวอย่างจากคู่มือ Enigma ปี 1930 ได้ครบทั้ง 90 ตัวอักษร ตรงกับคำแปลที่ถูกเผยแพร่มาหลายสิบปี ข้อความนั้นยาวพอที่จังหวะ double step จะเกิดขึ้นหลายครั้ง ซึ่งเป็นจุดที่เครื่องจำลองส่วนใหญ่ทำผิด เครื่องที่ไม่มี double step จะถูกในไม่กี่ตัวแรกแล้วเพี้ยนไปเงียบ ๆ กดปุ่มโหลดข้อความแล้วดูได้เลย
double step คืออะไร
โรเตอร์ตัวกลางถูกหมุนด้วยก้ามปูที่ไปเกี่ยวรอยบากของโรเตอร์ที่อยู่ทางขวา และก้ามปูอันเดียวกันนั้นก็พาดอยู่บนรอยบากของโรเตอร์ตัวกลางเองด้วย เมื่อโรเตอร์กลางมาหยุดตรงรอยบากของตัวเอง การกดปุ่มครั้งถัดไปจะทำให้ทั้งตัวกลางและตัวซ้ายขยับพร้อมกัน แปลว่าวงกลางหมุนสองครั้งภายในการกดสองครั้ง มันเป็นผลจากกลไกเชิงกล ไม่ใช่การออกแบบ และเป็นรายละเอียดที่แยกเครื่องจำลองจริงออกจากภาพวาดของเครื่อง
ทำไมตัวอักษรถึงออกมาเป็นตัวเดิมไม่ได้
เพราะรีเฟลกเตอร์ส่งสัญญาณย้อนกลับผ่านโรเตอร์ด้วยเส้นทางอื่น และเส้นทางที่ย้อนกลับมาที่จุดเดิมต้องมีสายไฟที่เชื่อมขั้วเข้าหาตัวเอง ซึ่งไม่มีรีเฟลกเตอร์ตัวไหนมี ฟังดูเป็นเรื่องเล็ก แต่มันคือจุดอ่อนใหญ่ที่สุด เพราะการรู้ว่าคำหนึ่งอยู่ตรงตำแหน่งนั้นไม่ได้ ทำให้ Bletchley Park ตัดค่าตั้งที่เป็นไปไม่ได้ทิ้งจำนวนมหาศาลก่อนจะลองสักอันเดียว และคำที่พวกเขาใช้เดาก็คือของธรรมดาอย่างรายงานอากาศที่ส่งทุกเช้า
ใครถอดได้ และเมื่อไหร่
มาเรียน เรเยฟสกี จากสำนักรหัสลับโปแลนด์ คำนวณย้อนหาการเดินสายได้สำเร็จตั้งแต่ปี 1932 ก่อนสงครามหลายปี และโปแลนด์มอบงานทั้งหมดให้อังกฤษกับฝรั่งเศสไม่กี่สัปดาห์ก่อนถูกบุก ที่ Bletchley Park อลัน ทัวริง และกอร์ดอน เวลช์แมน ต่อยอดจากงานนั้นเพื่อโจมตีค่าตั้งประจำวันในระดับอุตสาหกรรม เครื่องจักรที่พวกเขาสร้างขึ้นเพื่อทำงานนี้คือบรรพบุรุษโดยตรงของคอมพิวเตอร์ที่คุณกำลังใช้อ่านข้อความนี้
ทำไมมีโรเตอร์แค่ 5 ตัว
เพราะกองทัพบกมีอยู่ 5 ตัว ส่วนกองทัพเรือเพิ่มมาอีกสามตัวคือหมายเลข VI ถึง VIII ซึ่งมีรอยบากสองรอยต่อตัวและหมุนไม่เหมือนกัน การรองรับแบบครึ่ง ๆ กลาง ๆ จะให้ผลลัพธ์ที่ดูเหมือนถูกแต่ไม่ถูก เราจึงไม่ใส่ไว้จนกว่าจะทำได้ครบจริง