มาดูกันเถิดว่าการเข้ารหัสเพื่อปกปิดข้อความที่แท้ทรูเป็นยังไง

fResult
4 min readJul 1, 2018

--

ความหมายและความสำคัญของการเข้ารหัสลับ

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

เมื่อจะกล่าวถึงการเข้ารหัสลับ ก็คงต้องกล่าวถึงที่มาสักนิดหนึ่ง

การเข้ารหัสเนี่ย มีที่มาที่บันทึกไว้อย่างเก่าแก่ที่สุดก็ตั้งแต่สมัยกษัตริย์ จูเลียต ซีซ่าร์ แห่งอาณาจักรโรมัน โดยในสมัยนั้นจะเป็นการเข้ารหัสแบบง่ายๆ ไม่ซับซ้อน
เช่น การเข้ารหัสคำว่า How are you ? จะใช้การเข้ารหัสง่ายๆ คือ การเลื่อนลำดับตัวอักษรเพิ่มไป 2 ตำแหน่ง ดังนี้

ภาพแสดงตัวอักษรเรียงลำดับตาม A-Z

ตัวอักษรสองลำดับ ถัดไปของ H คือ J
ตัวอักษรสองลำดับ ถัดไปของ O คือ Q
ตัวอักษรสองลำดับ ถัดไปของ Wคือ Y
ตัวอักษรสองลำดับ ถัดไปของ A คือ C
ตัวอักษรสองลำดับ ถัดไปของ R คือ T
ตัวอักษรสองลำดับ ถัดไปของ E คือ G
ตัวอักษรสองลำดับ ถัดไปของ Y คือ A
ตัวอักษรสองลำดับ ถัดไปของ O คือ Q
ตัวอักษรสองลำดับ ถัดไปของ U คือ W

ดังนั้น ข้อความ How are you ที่ถูกเข้ารหัสก็คือ JQY CTG AQW

ซึ่งหากเราไม่รู้วิธีการถอดรหัสก็คงอ่านกันไม่รู้เรื่องเนอะ แต่ผู้ที่รู้วิธีการถอดรหัส (คนที่มี่สิทธิ์เข้าใจข้อความ) ก็จะนำข้อความใหม่ไปนับถอยหลังลงทีละ 2 ตัว ในแต่ละตัวอักษร ก็จะได้ข้อความกลับมาอ่านแล้วเข้าใจว่า How are you นั่นเอง

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

ถัดจากยุคทองของโรมันแล้วก็ยังมีการนำวิทยาการเข้ารหัสมาใช้ในสงครามอื่นๆ อีกมากมาย แต่ยุคที่มีการยกระดับวิทยาการการเข้ารหัสก้าวกระโดดที่สุดคือนับตั้งแต่ปลายสมัยสงครามโลกครั้งที่ 1 เป็นต้นมา ที่การเข้ารหัสได้มีการใช้วิธีคำนวณทางคณิตศาสตร์อันแสนซับซ้อนเข้ามาใช้…

ปลายสมัยสงครามโลกครั้งที่ 1 เครื่อง Enigma ได้ถูกคิดค้นขึ้นโดย Arthur Scherbius (อาร์เธอร์ แชร์บิอุส) ซึ่ง Enigma นี้มีความสามารถในการเข้ารหัส คือ เมื่อพิมพ์ข้อความใดๆ เข้าไป ข้อความนั้นจะถูกแปลงเป็นคำอื่นๆ และถูกส่งออกไปยังเครื่อง Enigma ปลายทาง
(ซึ่งขณะที่ข้อความถูกส่งออกไปตามสื่อ เช่น สายโทรศัพท์ ข้อความก็สามารถถูกดักจับได้นะ แต่ผู้ดักจับข้อความจะไม่สามารถตีความข้อความที่ถูกเข้ารหัสได้ง่ายๆ เลย)

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

มาจนถึงสมัยสงครามโลกครั้งที่ 2 นาซีเยอรมันซึ่งนำโดย Adolf Hitler ได้มีการนำ Enigma มาใช้ส่งรหัสแผนการรบข้ามจังหวัด ข้ามประเทศ ข้ามทวีป จนฝ่ายสัมพันธมิตรเพลี่ยงพล้ำ พ่ายศึกไปอย่างมากมาย เรียกได้ว่าแทบจะประกาศยอมแพ้สงครามอยู่แล้วเชียว

จนกระทั่ง วินสตัน เชอร์ชิล (นายกฯ ของอังกฤษในสมัยนั้น) ได้เรียกรวมทีมหัวกะทิ ที่นำทีมโดย อลัน ทูริง ผู้เป็นนักคณิตศาสตร์สุดปราดเปรื่อง เข้ามาช่วยในแผนปฏิบัติการถอดรหัสลับ Enigma ให้จงได้ในเวลาอันจำกัด (ไม่งั้นอังกฤษแพ้สงคราม และต้องเสียทรัพย์เพื่อเป็นสินสงครามเป็นอันมหาศาลเป็นแน่แท้)

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

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

เมื่อได้ทราบประวัติความเป็นมากันไปแล้ว เรามาดูถึงวิธีการเข้ารหัสลับกันบ้าง

ว่าด้วยเรื่องของขั้นตอนในการเข้ารหัส

จากเนื้อหาในหนังสือของรายวิชา 99312 คณิตศาสตร์สำหรับเทคโนโลยีสารสนเทศและการสื่อสาร ของ มสธ กล่าวถึงเนื้อหาเกี่ยวกับการเข้ารหัสลับไว้ดังนี้

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

ซึ่งเนื้อหาในบทความนี้จะขอกล่าวถึงวิธีการเข้ารหัสแบบเชิงเส้นเท่านั้นนะครับ ส่วนใครสนใจ RSA ให้ไปหาอ่านเอาเอง อิอิ

การเข้ารหัสแบบเชิงเส้น

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

ซึ่งวิธีการเข้ารหัสแบบเชิงเส้นประยุกต์มาจากทฤษฎีที่มีนิยามต่อไปนี้

มอดูโลผกผัน เมื่อ n เป็นจำนวนเต็มใดๆ ที่ n > 1, จำนวนจริง a จะมีค่าเท่ากับตัวผกผันของ a modulo n มีตัวผกผันก็ต่อเมื่อ gcd(a, n) = 1 (อ่านว่า ค่าหารร่วมมากของ a และ n เท่ากับ 1)

ซึ่งผมจะไม่ขอลงลึกในเรื่องของวิธีทำมอดูโลผกผัน แต่จะเน้นแต่วิธีการเข้ารหัสเท่านั้นครับ (จริงๆ แล้วผมก็ยังไม่เข้าใจเรื่องมอดูโลผกผันนะ ฮ่าๆ)

โดยมีการประยุกต์ใช้จากวิธีการเชิงเส้น ดังเช่น

สมมติว่า n มีค่าเท่ากับ 27 (จำนวนของตัวอักษรในภาษาอังกฤษบวกหนึ่ง) ซึ่งสามารถกำหนด x เป็นตัวเลขได้ตั้งแต่ 0 ถึง 26 โดยให้แทนตำแหน่งของตัวอักษรของตัวอักษรภาษาอังกฤษ (ตำแหน่งที่ 0 คือตำแหน่งว่างหรือ space) จะได้ตามตารางนี้ว่า

ภาพแสดงตำแหน่งของตัวอักษรตามตัวเลข

และกำหนดให้ค่า y เป็นตัวเลขที่แสดงลำดับของตัวอักษรใหม่ที่เกิดจากสมการ
y = (ax + b) mod n

ตัวอย่าง 1
กำหนดให้ n = 27, a = 4 และ b = 2 จงเข้ารหัสข้อความ STOU จากสมการ
y = (ax + b) mod n

วิธีการเข้ารหัสแบบเชิงเส้น
ข้อความ STOU เมื่อแยกตัวอักษรแล้วจะพบว่าอักษร S, T, O, U มีค่าตัวเลขแสดงลำดับดังต่อไปนี้ คือ 19, 20, 15 และ 21 ดังแสดงในตารางข้างล่าง

ภาพแสดงตำแหน่งของตัวอักษรตามตัวเลข

เมื่อแทนในสมการ y = (ax + b) mod n จะได้ว่า
พิจารณาอักษร S = ((4 * 19) + 2) mod 27 = 78 mod 27 = 24
พิจารณาอักษร T= ((4 * 20) + 2) mod 27 = 82 mod 27 = 1
พิจารณาอักษร O= ((4 * 15) + 2) mod 27 = 62 mod 27 = 8
พิจารณาอักษร U= ((4 * 21) + 2) mod 27 = 84 mod 27 = 5

mod หรือ modulo คือการหารเอาเศษ โดยไม่สนใจผลหาร
(เช่น 8 mod 3 = 2 หรือ 4 mod 3 = 1 เป็นต้น)
(8 ÷ 3 ได้ 6 เศษ 2 ดังนั้น คำตอบของ 8 mod 3 คือ 2)
(4 ÷ 3 ได้ 1 เศษ 1 ดังนั้น คำตอบของ 4 mod 3 คือ 1)

เมื่อนำผลลัพธ์จากการคำนวณโดยแทนค่าลงในสมการมาหาตัวอักษรประจำลำดับ จะได้ช้อความที่เข้ารหัสเป็นดังนี้
24 = X
1 = A
8 = H
5 = E

ดังนั้น… เมื่อเข้ารหัสข้อความ STOU จะได้ข้อความใหม่เป็น XAHE ครับ

แต่เมื่อมีการเข้ารหัสแล้ว ผู้รับข้อความ XAHE จะอ่านและเข้าใจความหมายที่ผู้ส่งข้อความ STOU ต้องการจะสื่อได้อย่างไร วิธีการที่จะช่วยให้อ่านข้อความได้ก็คือการถอดรหัสนั่นเอง

การถอดรหัสลับ

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

เมื่อ a, b เป็นจำนวนเต็มใดๆ และสามารถใช้บทนิยามของมอดูโลผกผัน (นิยามที่กล่าวถึงในตอนต้น) เพื่อสร้างสมการถอดรหัสข้อความที่ถูกเข้ารหัสให้กลับเป็นข้อความเดิมได้ด้วยสมการ x = c(y - b) mod n เมื่อ ac ≡ 1 mod(n)
(อ่านว่า a คูณ c สมภาคกับ 1 mod(n)) แสดงได้โดยตัวอย่างต่อไปนี้…

ตัวอย่าง 2

กำหนดให้ n = 27, a = 4, b = 2 และ c = 7 (ตัวเลขแทนค่า n, a และ b คือค่าเดียวกับค่าในการเข้ารหัส) จงถอดรหัส XAHE จากสมการ x = c(y - b) mod n

วิธีการถอดรหัสลับ

ข้อความ XAHE เมื่อแยกตัวอักษรแล้วจะพบว่าอักษร X, A, H, E มีค่าตัวเลขแสดงลำดับดังต่อไปนี้ คือ 24, 1, 8 และ 5 ดังแสดงในตารางข้างล่าง

ภาพแสดงตำแหน่งของตัวอักษรตามตัวเลข

พิจารณาอักษร X= 7(24 - 2) mod 27 = 154 mod 27 = 19
พิจารณาอักษร A= 7(1 - 2) mod 27 = -7 mod 27 = 20
พิจารณาอักษร H= 7(8 - 2) mod 27 = 42 mod 27 = 15
พิจารณาอักษร E= 7(5 - 2) mod 27 = 21 mod 27 = 21

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

19 = S
20 = T
15 = O
21 = U

ดังนั้น… เมื่อถอดรหัสข้อความ XAHE จากสมการ x = c(y - b) mod n จะได้ข้อความเดิมเป็น STOU ตรงตามที่ผู้เข้ารหัสหรือผู้ส่งสารต้องการสื่อครับ

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

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

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

สำหรับครั้งนี้ ผมขอลาไปก่อน ยังมีภารกิจต้องอ่านหนังสือสอบคณิตฯ 99312 ของ มสธ. อีกยาวไกล
(เด็ก ปวส. บริหารฯ ต่อ ป.ตรี สายวิทย์ ถือว่าหักดิบเกิ๊นนน)
(ทีแรกตั้งใจว่าจะเขียนเรื่องนี้แค่ทบทวนและทำความเข้าใจเรื่องการเข้ารหัส/ถอดรหัสเท่านั้นเองนะ เขียนไปเขียนมาก็ยาวซะงั้น)

L ORYH BRX

ให้ถอยหลังกลับไป 3 ตำแหน่งครับ

อ้างอิงเนื้อหาจาก

  1. หนังสือเรียนวิชา 99312 คณิตศาสตร์สำหรับเทคโนโลยีสารสนเทศและการสื่อสาร มหาวิทยาลัยสุโขทัยธรรมาธิราช เล่ม 1
  2. “ทีมถอดรหัสอีนิกมา” ชะตากรรมและการอุทิศตนที่ถูกปิดลับ ในสงครามโลกครั้งที่สอง
  3. ถอดประวัติ..ถอดรหัส “อลัน ทูริง” [The Imitation Game]
  4. Enigma ทำงานอย่างไร

--

--

fResult
fResult

Written by fResult

ชื่อเล่นว่ากร เขามี background มาจากอาชีพเด็กวิ่งเอกสารในอาคารของธนาคาร โดยเรียนไปด้วยจนจบจากมหาลัยเปิดแห่งหนึ่ง และปัจจุบันทำงานเป็น Web Developer ครับทั่นน