 |
<script language="JavaScript" src="http://www.vcharkarn.com/javafeed/article/1075" type="text/javascript"></script> |
|
ระบบรหัสลับแบบสับเปลี่ยน
ระบบรหัสลับที่เก่าแก่อันหนึ่ง มาดูกันเลยว่ามันทำงานอย่างไร พร้อมตัวอย่างการดัดแปลงต่างๆ
post ครั้งแรก: Fri 5 January 2007, 11:27 am ปรับปรุงล่าสุด: Fri 5 January 2007, 11:27 am
|
หน้าที่ 1 - Substitution Cipher
ผมไม่อยากตั้งชื่อเป็นวิทยาการรหัสลับตอน 1, 2, 3, ฯลฯ แล้วล่ะ เพราะดูแล้วไม่รู้เลยว่าแต่ละตอนเขียนเรื่องอะไรบ้าง ต้องขออภัยด้วยครับ คืออย่างว่า มือใหม่หัดขับครับผม ผมถือว่า สองตอนแรกเป็นอารัมภบท(introduction)ก็แล้วกัน เพราะเป็นสิ่งพื้นฐานที่ผู้อ่านควรรู้ เพื่อที่ผมจะได้สื่อสารกับท่านผู้อ่านได้ง่ายขึ้นในบทความต่อๆไป
ว่าแต่ว่าระบบรหัสลับแบบสับเปลี่ยนนั้นคืออะไรกันหนอ จะบอกดีไหมน้า เอ ต้องบอกสินะ ไม่งั้นเดี๋ยวคนอ่านรุมตีหัว อยากรู้ใช้ม้า อยากรู้ก็ต้องอ่านต่อไป ฮ่าๆๆ (หัวเราะแบบตัวโกงหนังไทย หัดตั้งนานแน่ะกว่าจะได้ ปกติหัวเราะแบบพระเอก) ฉบับนี้ผมจะพูดถึงระบบรหัสลับที่เก่าแก่อันหนึ่งที่เรียกว่า ระบบรหัสลับแบบสับเปลี่ยน (Substitution Cipher) และในตอนท้ายผมมีของแถมให้ คือจะเฉลยคำถามจากบทความในฉบับแรก ให้ท่านผู้อ่านที่สนใจได้อ่านกันด้วยครับ
ว่าแล้วก็มาดูกันเลยว่ามันทำงานอย่างไร หลักการก็คือว่าเราต้องสับเปลี่ยนแต่ละตัวอักษรใน plaintext ของเราด้วยตัวอักษรอื่น แต่ก่อนอื่นเราต้องมาเลือกก่อนว่าเราจะแทนแต่ละตัวอักษรด้วยอะไร อย่างเช่น A แทนด้วย T, B แทนด้วย P ฯลฯ ดังตารางต่อไปนี้
 มาดูตัวอย่างกันครับ สมมุติว่า plaintext ของผมคือ
You are so beautiful to me.
(เธอสวยเหลือเกินสำหรับฉัน)
แทนตัวอักษรแต่ละตัวข้างบนนี้ด้วยตัวอักษรในตาราง เราก็จะได้ ciphertext ดังนี้
LAG TEM KA PMTGDXHGI DA VM.
ส่วนจะเอาช่องว่างและ punctuation marks ต่างๆออกหรือไม่ก็แล้วแต่ศรัทธาครับ ถ้าเอาออกก็จะทำให้เดาข้อความได้ยากขึ้น
|
.....ของเล่น.....
เครื่องแสดงการทำงานของระบบรหัสลับแบบสับเปลี่ยน
ใช้ Java Plug-in 1.3 (สำหรับคนใช้วินโดว์)
ใช้ Java Plug-in 1.1.2 (สำหรับคนใช้ OS ตัวอื่นๆ หรือวินโดว์ก็ใช้ได้ครับ)
สำหรับคนที่มี Java Plug-in อยู่แล้วใช้เวลาโหลดไม่กี่วินาทีหรอกครับ
สำหรับคนที่ไม่มี plug-in ต้องดาวโหลดและอินสตอล plug-in ก่อน ลิงค์ข้างบนจะพาไปเอง
ทั้ง encryption key และ decryption key ของระบบนี้ก็คือตารางข้างบนทั้งตารางนั่นแหละครับ ท่านผู้อ่านอาจจะสังเกตุเห็นว่า เอ๊ มันดูคล้ายๆกับระบบรหัสลับของซีซาร์ ที่พูดถึงในฉบับแรกเลยนี่นา ใช่แล้วครับ caesar shift cipher ก็เป็นระบบรหัสลับแบบสับเปลี่ยนประเภทหนึ่ง แต่ทำให้ง่ายขึ้น คือแทนที่ key จะเป็นตารางทั้งตาราง ก็กลับกลายเป็นตัวเลขตัวเดียว จำง่าย
ระบบรหัสลับแบบสับเปลี่ยนนี้มีหลายหลากแบบมากครับ เพราะคนที่เอาไปใช้เอาไปดัดแปลงกัน อาจจะเพื่อให้ key ดูง่ายจำง่ายขึ้น อย่างเช่นในกรณีของ caesar shift cipher หรืออาจจะเพื่อตบตาคนดูว่าเป็นภาษาอื่น หรือ ไม่ใช่ภาษาอะไรเลย อย่างเช่น ผมอาจจะใช้ตารางต่อไปนี้เป็น key

แล้วข้อความ plaintext ข้างบนก็จะกลายเป็น "ciphertext" อันนี้
|
เห็นไหมล่ะครับ ดูเผินๆก็ไม่รู้ว่าเป็นข้อความ
ระบบรหัสลับแบบสับเปลี่ยนนี้มีมานานแล้วครับ หลักฐานที่เก่าที่สุดอันหนึ่ง ที่อธิบายรายละเอียดเกี่ยวกับระบบรหัสลับแบบนี้ก็คือ ตำรากามสูตร () อย่าเพิ่งหาว่าผมทะลึ่งเลยครับ ลองอ่านต่อไปดูก่อน ตำรานี้เขียนขึ้นในช่วงคริสตศตวรรษที่สี่ แต่ว่าเขียนโดยอิงต้นฉบับซึ่งแต่งขึ้นโดยพราหมณ์ ตั้งแต่สมัยสี่ร้อยปีก่อนคริสตกาล ตำรากามสูตรนั้นชี้แนะว่า สตรีพึงรู้ศิลปะ 64 ประการ อย่างเช่น การทำอาหาร การแต่งกาย การนวด การเล่นหมากรุก การเย็บเล่มหนังสือ และการทำงานช่างไม้ (ผู้หญิงสมัยก่อนนี่เก่งเนาะ วันหลังต้องให้ไปช่วยซ่อมหัวกระไดบ้านเสียแล้ว อ้ายมากซ่อมไม่ได้เรื่องเล้ย ซ่อมทีไรมะนาวหล่นลงใต้ถุนทุกที) ทีนี้ประการที่ 45 กล่าวไว้ว่า สตรีพึงรู้ ซึ่งหมายถึงศิลปะในการเขียนข้อความลับ (ดังนั้นสตรีทั้งหลาย พึงติดตามอ่านบทความของข้าพเจ้าต่อๆไป อย่าได้ขาด โฮะๆๆ คราวนี้หัวเราะแบบตัวโกงญี่ปุ่น) เทคนิคอันหนึ่งที่ตามตำรากามสูตรแนะนำไว้ก็คือการสุ่มจับคู่ตัวอักษร แล้วสับเปลี่ยนตัวอักษรแต่ละตัวใน plaintext ด้วยตัวอักษรที่เป็นคู่กัน ถ้าเราใช้วิธีนี้กับตัวอักษรของภาษาอังกฤษ เราก็อาจจะจับคู่ได้ดังนี้
(A,V), (D,X), (H,B), (I, G), (K,J), (M,C),(O,Q),(R,L),(S,N),(U,E),(W,F),(Y,P),(Z,T)
แล้วข้อความ plaintext ข้างบนก็กลายมาเป็น
PQE VLU NQ HUVEZGWER ZQ CU.
ท่านผู้อ่านคงเห็นได้ชัดนะครับว่าการจับคู่ตัวอักษรแบบนี้ ก็เหมือนกับเป็นการสร้างตารางสับเปลี่ยนแบบหนึ่งเหมือนกัน
ทีนี้เราลองมาดูว่าระบบรหัสลับแบบนี้ปลอดภัยแค่ไหน ก่อนอื่นเราต้องดูก่อนว่าถ้าเราใช้วิธีเดา decryption key เนี่ย มันจะเป็นไปได้มากน้อยแค่ไหน มาลองดูตารางอันแรกกันครับ ลองจินตนาการดูว่า ถ้าผมไม่มีแถวที่สองให้ ท่านผู้อ่านจะมีโอกาสเดาถูกกี่เปอร์เซนต์ ลองคิดดูอย่างนี้ครับ key ที่เป็นไปได้ทั้งหมดมี 26! อันหรือประมาณ
400,000,000,000,000,000,000,000,000 อัน แต่ key ที่ถูกต้องมีเพียงอันเดียว ดังนั้นเปอร์เซนต์ในการเดาถูกก็คือ ประมาณ 0.000000000000000000000000248 % น้อยมากครับ จนแทบเป็นไปไม่ได้เลย ทีนี้มาลองดู caesar shift cipher นะครับ
key ที่เป็นไปได้ทั้งหมดมี 26 ตัว ดังนั้นเปอร์เซนต์ในการเดาถูกก็คือประมาณ 4% ดีขึ้น แต่ก็ยังน้อยอยู่ดี
ในเมื่อเดาไม่ได้ ก็ลองเอา decryption key ที่เป็นไปได้ทั้งหมดมาลองดู ง่ายๆซื่อๆดี ในกรณีของ caesar shift cipher เราก็ลองเอา key ทั้ง 26 ตัว มาลอง decrypt ข้อมูลดู key ตัวไหนให้ข้อความที่มีความหมายอ่านออก ก็ key ตัวนั้นแหละครับที่เป็น key ที่ถูกต้อง สมมุติว่าท่านผู้อ่านใช้ Java applet ของผมในฉบับแรกในการลอง key ทั้ง 26 อัน และใช้เวลาประมาณ 1 วินาที ต่อ key 1 อัน ท่านก็จะสามารถโจมตีระบบภายในเวลาไม่เกิน 26 วินาที อะฮ่า ไม่เลวใช่ไหมครับ การโจมตีระบบแบบนี้เรียกว่า การหาอย่างละเอียด (exhaustive search หรือ brute-force search)ครับ
อ๊ะๆ อย่าเพิ่งนอนใจนะครับว่าจะสามารถใช้ exhaustive search ได้กับระบบรหัสลับแบบสับเปลี่ยนอย่างในตารางข้างบน ถ้าสมมุติว่าเราลอง key 1 อัน ในเวลา 1 วินาที แล้วเราต้องตรวจสอบ key ทั้งหมด 400,000,000,000,000,000,000,000,000 อัน เราจะใช้เวลาประมาณพันล้านเท่าของอายุของจักรวาลเลยเชียวแหละ ถึงแม้เราจะใช้คอมพิวเตอร์ที่เร็วที่สุดในปัจจุบันก็เถอะ เราก็ยังต้องรอให้เครื่องคำนวณไปเป็นเวลาหลายล้านปีทีเดียว
ดังนั้นระบบรหัสลับแบบสับเปลี่ยนที่ใช้ตารางอย่างข้างบนก็ปลอดภัยมากเลยทีเดียวใช่ไหมล่ะเนี่ย เหอๆๆ (คราวนี้หัวเราะแบบตัวโกงจีน) เจ้าเข้าใจผิดเสียแล้ว ข้าไม่ต้องใช้วิชา exhaustive search เพื่อเอาชนะระบบเจ้าหรอก ข้าไปเรียนวิชาดีจากสำนักสก็อตไบรท์มา เพื่อโจมตีระบบเจ้า เตรียมตัวไว้ให้ดี เดี๋ยวฉบับหน้า ข้าจะมาโจมตีระบบของเจ้า ให้ราบคาบเป็นหน้าเขียงโดนขูด เหอๆๆๆ
ของแถม: ตามสัญญาครับ ผมจะเฉลยคำถามลับสมองในบทความ
ฉบับแรก
ของผมให้ฟัง(อ่าน) ใครอยากรู้
คลิกที่นี่ ดูได้เลยครับ
*หมายเหตุ
งานเขียนชิ้นนี้ ได้รับการคุ้มครองสิทธิตามพระราชบัญญัติคุ้มครองสิทธิทางปัญญา โดยลิขสิทธิเป็นของผู้เขียน ที่ให้เกียรตินำเผยแพร่ผ่าน วิชาการ.คอม เรามีความยินดีและอนุญาตให้ทำซ้ำหรือเผยแพร่ต่อเพื่อประโยชน์ทางการศึกษาเท่านั้น กรุณาให้เกียรติผู้เขียน โดยอ้างชื่อผู้เขียนและ วิชาการ.คอม (www.vcharkarn.com) ทุกครั้งที่ทำการเผยแพร่ต่อ ห้ามนำส่วนหนึ่งส่วนใดไปเผยแพร่ต่อในสื่อที่เอื้อประโยชน์ทางธุรกิจก่อนได้รับอนุญาต ขอขอบคุณที่ร่วมกันช่วยสร้างให้สังคมไทยเป็นสังคมแห่งปัญญา
จำนวน 9 ความเห็น, หน้า่ | -1-
ความเห็นเพิ่มเติมที่ 1 5 ม.ค. 2550 (23:57) อ่านแล้วน่าสนใจจริงๆเลยอ่าค่ะ ^^
หุหุ การเป็นสตรีที่ดีนี่ยากจัง สงสัยต้องติดตามอ่านต่อ
เอาว้า อย่างน้อยเราก็พอทำกับข้าวเป็น 555++
Winning W&N (IP:203.113.61.72)
ความเห็นเพิ่มเติมที่ 2 6 ม.ค. 2550 (11:26) ขอบคุณครับ
ความเห็นเพิ่มเติมที่ 3 6 ม.ค. 2550 (19:33) อยากได้รายละเอียดมากก่านี้อะ หาได้ที่ไหนค่ะ
ความเห็นเพิ่มเติมที่ 4 7 ม.ค. 2550 (00:35) PLEASE LEND ME SOME MONEY I AM BROKE
ความเห็นเพิ่มเติมที่ 7 16 ม.ค. 2550 (14:33) ขอบคุณมากครับ ได้ความรู้เพิ่มดีครับ
defdetective (IP:61.7.231.50)
ความเห็นเพิ่มเติมที่ 8 16 ม.ค. 2550 (21:02) java plug in ข้างบนมันโหลดซ้อนjavaเก่าของผมไปหมดเลยคับ มีปัญหามาก จะยกเลิกการติดตั้งยังไงคับ removeก้อไม่ได้
ความเห็นเพิ่มเติมที่ 9 24 ม.ค. 2551 (19:31) ยอดมากกกกกก