เครื่อง Enigma

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

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

A A A

มันคือเครื่องพิมพ์ดีดที่สายไฟข้างในถูกสลับไว้ กด A แล้วหลอดตัวอื่นติด

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

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

พิมพ์ข้อความ

ตั้งค่าเครื่อง

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

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

กองทัพมีโรเตอร์ 5 ตัว ใช้ครั้งละ 3 ตัว สลับลำดับได้ UKW-B เป็นมาตรฐานตั้งแต่ปี 1937 ส่วน UKW-A ใส่ไว้เพราะข้อความจากคู่มือปี 1930 ใช้ตัวนี้

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

คำถามที่พบบ่อย

ข้อความของฉันถูกอัปโหลดไหม

ไม่ เครื่องทำงานในแท็บนี้ขณะที่คุณพิมพ์ นโยบายความปลอดภัยของเว็บกำหนด connect-src ‘none’ เบราว์เซอร์จึงบล็อกการเรียกเครือข่ายจากหน้านี้ ต่อให้โค้ดอยากส่งข้อความออกไปก็ส่งไม่ได้

รู้ได้ยังไงว่าเครื่องนี้ถูกต้อง

เพราะมันถอดข้อความตัวอย่างจากคู่มือ Enigma ปี 1930 ได้ครบทั้ง 90 ตัวอักษร ตรงกับคำแปลที่ถูกเผยแพร่มาหลายสิบปี ข้อความนั้นยาวพอที่จังหวะ double step จะเกิดขึ้นหลายครั้ง ซึ่งเป็นจุดที่เครื่องจำลองส่วนใหญ่ทำผิด เครื่องที่ไม่มี double step จะถูกในไม่กี่ตัวแรกแล้วเพี้ยนไปเงียบ ๆ กดปุ่มโหลดข้อความแล้วดูได้เลย

double step คืออะไร

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

ทำไมตัวอักษรถึงออกมาเป็นตัวเดิมไม่ได้

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

ใครถอดได้ และเมื่อไหร่

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

ทำไมมีโรเตอร์แค่ 5 ตัว

เพราะกองทัพบกมีอยู่ 5 ตัว ส่วนกองทัพเรือเพิ่มมาอีกสามตัวคือหมายเลข VI ถึง VIII ซึ่งมีรอยบากสองรอยต่อตัวและหมุนไม่เหมือนกัน การรองรับแบบครึ่ง ๆ กลาง ๆ จะให้ผลลัพธ์ที่ดูเหมือนถูกแต่ไม่ถูก เราจึงไม่ใส่ไว้จนกว่าจะทำได้ครบจริง